diff --git a/.swp b/.swp new file mode 100644 index 00000000..53152cf5 Binary files /dev/null and b/.swp differ diff --git a/dist/assets/oldWorker-C8TM2KB2.js.map b/dist/assets/oldWorker-C8TM2KB2.js.map deleted file mode 100644 index b35652b3..00000000 --- a/dist/assets/oldWorker-C8TM2KB2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"oldWorker-C8TM2KB2.js","sources":["../rust/spark-worker-rs/pkg/spark_worker_rs.js","../node_modules/fflate/esm/browser.js","../node_modules/three/build/three.core.js","../src/defines.ts","../src/dyno/base.ts","../src/utils.ts","../src/antisplat.ts","../src/ksplat.ts","../src/ply.ts","../src/spz.ts","../src/SplatLoader.ts","../src/pcsogs.ts","../src/oldWorker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_worker_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_worker_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_worker_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","/**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '180';\n\n/**\n * Represents mouse buttons and interaction types in context of controls.\n *\n * @type {ConstantsMouse}\n * @constant\n */\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\n\n/**\n * Represents touch interaction types in context of controls.\n *\n * @type {ConstantsTouch}\n * @constant\n */\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\n\n/**\n * Disables face culling.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceNone = 0;\n\n/**\n * Culls back faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceBack = 1;\n\n/**\n * Culls front faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceFront = 2;\n\n/**\n * Culls both front and back faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceFrontBack = 3;\n\n/**\n * Gives unfiltered shadow maps - fastest, but lowest quality.\n *\n * @type {number}\n * @constant\n */\nconst BasicShadowMap = 0;\n\n/**\n * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm.\n *\n * @type {number}\n * @constant\n */\nconst PCFShadowMap = 1;\n\n/**\n * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm with\n * better soft shadows especially when using low-resolution shadow maps.\n *\n * @type {number}\n * @constant\n */\nconst PCFSoftShadowMap = 2;\n\n/**\n * Filters shadow maps using the Variance Shadow Map (VSM) algorithm.\n * When using VSMShadowMap all shadow receivers will also cast shadows.\n *\n * @type {number}\n * @constant\n */\nconst VSMShadowMap = 3;\n\n/**\n * Only front faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst FrontSide = 0;\n\n/**\n * Only back faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst BackSide = 1;\n\n/**\n * Both front and back faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst DoubleSide = 2;\n\n/**\n * No blending is performed which effectively disables\n * alpha transparency.\n *\n * @type {number}\n * @constant\n */\nconst NoBlending = 0;\n\n/**\n * The default blending.\n *\n * @type {number}\n * @constant\n */\nconst NormalBlending = 1;\n\n/**\n * Represents additive blending.\n *\n * @type {number}\n * @constant\n */\nconst AdditiveBlending = 2;\n\n/**\n * Represents subtractive blending.\n *\n * @type {number}\n * @constant\n */\nconst SubtractiveBlending = 3;\n\n/**\n * Represents multiply blending.\n *\n * @type {number}\n * @constant\n */\nconst MultiplyBlending = 4;\n\n/**\n * Represents custom blending.\n *\n * @type {number}\n * @constant\n */\nconst CustomBlending = 5;\n\n/**\n * A `source + destination` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst AddEquation = 100;\n\n/**\n * A `source - destination` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst SubtractEquation = 101;\n\n/**\n * A `destination - source` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst ReverseSubtractEquation = 102;\n\n/**\n * A blend equation that uses the minimum of source and destination.\n *\n * @type {number}\n * @constant\n */\nconst MinEquation = 103;\n\n/**\n * A blend equation that uses the maximum of source and destination.\n *\n * @type {number}\n * @constant\n */\nconst MaxEquation = 104;\n\n/**\n * Multiplies all colors by `0`.\n *\n * @type {number}\n * @constant\n */\nconst ZeroFactor = 200;\n\n/**\n * Multiplies all colors by `1`.\n *\n * @type {number}\n * @constant\n */\nconst OneFactor = 201;\n\n/**\n * Multiplies all colors by the source colors.\n *\n * @type {number}\n * @constant\n */\nconst SrcColorFactor = 202;\n\n/**\n * Multiplies all colors by `1` minus each source color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusSrcColorFactor = 203;\n\n/**\n * Multiplies all colors by the source alpha value.\n *\n * @type {number}\n * @constant\n */\nconst SrcAlphaFactor = 204;\n\n/**\n * Multiplies all colors by 1 minus the source alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusSrcAlphaFactor = 205;\n\n/**\n * Multiplies all colors by the destination alpha value.\n *\n * @type {number}\n * @constant\n */\nconst DstAlphaFactor = 206;\n\n/**\n * Multiplies all colors by `1` minus the destination alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusDstAlphaFactor = 207;\n\n/**\n * Multiplies all colors by the destination color.\n *\n * @type {number}\n * @constant\n */\nconst DstColorFactor = 208;\n\n/**\n * Multiplies all colors by `1` minus each destination color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusDstColorFactor = 209;\n\n/**\n * Multiplies the RGB colors by the smaller of either the source alpha\n * value or the value of `1` minus the destination alpha value. The alpha\n * value is multiplied by `1`.\n *\n * @type {number}\n * @constant\n */\nconst SrcAlphaSaturateFactor = 210;\n\n/**\n * Multiplies all colors by a constant color.\n *\n * @type {number}\n * @constant\n */\nconst ConstantColorFactor = 211;\n\n/**\n * Multiplies all colors by `1` minus a constant color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusConstantColorFactor = 212;\n\n/**\n * Multiplies all colors by a constant alpha value.\n *\n * @type {number}\n * @constant\n */\nconst ConstantAlphaFactor = 213;\n\n/**\n * Multiplies all colors by 1 minus a constant alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusConstantAlphaFactor = 214;\n\n/**\n * Never pass.\n *\n * @type {number}\n * @constant\n */\nconst NeverDepth = 0;\n\n/**\n * Always pass.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysDepth = 1;\n\n/**\n * Pass if the incoming value is less than the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst LessDepth = 2;\n\n/**\n * Pass if the incoming value is less than or equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualDepth = 3;\n\n/**\n * Pass if the incoming value equals the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst EqualDepth = 4;\n\n/**\n * Pass if the incoming value is greater than or equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualDepth = 5;\n\n/**\n * Pass if the incoming value is greater than the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterDepth = 6;\n\n/**\n * Pass if the incoming value is not equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualDepth = 7;\n\n/**\n * Multiplies the environment map color with the surface color.\n *\n * @type {number}\n * @constant\n */\nconst MultiplyOperation = 0;\n\n/**\n * Uses reflectivity to blend between the two colors.\n *\n * @type {number}\n * @constant\n */\nconst MixOperation = 1;\n\n/**\n * Adds the two colors.\n *\n * @type {number}\n * @constant\n */\nconst AddOperation = 2;\n\n/**\n * No tone mapping is applied.\n *\n * @type {number}\n * @constant\n */\nconst NoToneMapping = 0;\n\n/**\n * Linear tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst LinearToneMapping = 1;\n\n/**\n * Reinhard tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst ReinhardToneMapping = 2;\n\n/**\n * Cineon tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst CineonToneMapping = 3;\n\n/**\n * ACES Filmic tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst ACESFilmicToneMapping = 4;\n\n/**\n * Custom tone mapping.\n *\n * Expects a custom implementation by modifying shader code of the material's fragment shader.\n *\n * @type {number}\n * @constant\n */\nconst CustomToneMapping = 5;\n\n/**\n * AgX tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst AgXToneMapping = 6;\n\n/**\n * Neutral tone mapping.\n *\n * Implementation based on the Khronos 3D Commerce Group standard tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst NeutralToneMapping = 7;\n\n/**\n * The skinned mesh shares the same world space as the skeleton.\n *\n * @type {string}\n * @constant\n */\nconst AttachedBindMode = 'attached';\n\n/**\n * The skinned mesh does not share the same world space as the skeleton.\n * This is useful when a skeleton is shared across multiple skinned meshes.\n *\n * @type {string}\n * @constant\n */\nconst DetachedBindMode = 'detached';\n\n/**\n * Maps textures using the geometry's UV coordinates.\n *\n * @type {number}\n * @constant\n */\nconst UVMapping = 300;\n\n/**\n * Reflection mapping for cube textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeReflectionMapping = 301;\n\n/**\n * Refraction mapping for cube textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeRefractionMapping = 302;\n\n/**\n * Reflection mapping for equirectangular textures.\n *\n * @type {number}\n * @constant\n */\nconst EquirectangularReflectionMapping = 303;\n\n/**\n * Refraction mapping for equirectangular textures.\n *\n * @type {number}\n * @constant\n */\nconst EquirectangularRefractionMapping = 304;\n\n/**\n * Reflection mapping for PMREM textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeUVReflectionMapping = 306;\n\n/**\n * The texture will simply repeat to infinity.\n *\n * @type {number}\n * @constant\n */\nconst RepeatWrapping = 1000;\n\n/**\n * The last pixel of the texture stretches to the edge of the mesh.\n *\n * @type {number}\n * @constant\n */\nconst ClampToEdgeWrapping = 1001;\n\n/**\n * The texture will repeats to infinity, mirroring on each repeat.\n *\n * @type {number}\n * @constant\n */\nconst MirroredRepeatWrapping = 1002;\n\n/**\n * Returns the value of the texture element that is nearest (in Manhattan distance)\n * to the specified texture coordinates.\n *\n * @type {number}\n * @constant\n */\nconst NearestFilter = 1003;\n\n/**\n * Chooses the mipmap that most closely matches the size of the pixel being textured\n * and uses the `NearestFilter` criterion (the texel nearest to the center of the pixel)\n * to produce a texture value.\n *\n * @type {number}\n * @constant\n */\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004; // legacy\n\n/**\n * Chooses the two mipmaps that most closely match the size of the pixel being textured and\n * uses the `NearestFilter` criterion to produce a texture value from each mipmap.\n * The final texture value is a weighted average of those two values.\n *\n * @type {number}\n * @constant\n */\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005; // legacy\n\n/**\n * Returns the weighted average of the four texture elements that are closest to the specified\n * texture coordinates, and can include items wrapped or repeated from other parts of a texture,\n * depending on the values of `wrapS` and `wrapT`, and on the exact mapping.\n *\n * @type {number}\n * @constant\n */\nconst LinearFilter = 1006;\n\n/**\n * Chooses the mipmap that most closely matches the size of the pixel being textured and uses\n * the `LinearFilter` criterion (a weighted average of the four texels that are closest to the\n * center of the pixel) to produce a texture value.\n *\n * @type {number}\n * @constant\n */\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007; // legacy\n\n/**\n * Chooses the two mipmaps that most closely match the size of the pixel being textured and uses\n * the `LinearFilter` criterion to produce a texture value from each mipmap. The final texture value\n * is a weighted average of those two values.\n *\n * @type {number}\n * @constant\n */\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008; // legacy\n\n/**\n * An unsigned byte data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedByteType = 1009;\n\n/**\n * A byte data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst ByteType = 1010;\n\n/**\n * A short data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst ShortType = 1011;\n\n/**\n * An unsigned short data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShortType = 1012;\n\n/**\n * An int data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst IntType = 1013;\n\n/**\n * An unsigned int data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedIntType = 1014;\n\n/**\n * A float data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst FloatType = 1015;\n\n/**\n * A half float data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst HalfFloatType = 1016;\n\n/**\n * An unsigned short 4_4_4_4 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShort4444Type = 1017;\n\n/**\n * An unsigned short 5_5_5_1 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShort5551Type = 1018;\n\n/**\n * An unsigned int 24_8 data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt248Type = 1020;\n\n/**\n * An unsigned int 5_9_9_9 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt5999Type = 35902;\n\n/**\n * An unsigned int 10_11_11 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt101111Type = 35899;\n\n/**\n * Discards the red, green and blue components and reads just the alpha component.\n *\n * @type {number}\n * @constant\n */\nconst AlphaFormat = 1021;\n\n/**\n * Discards the alpha component and reads the red, green and blue component.\n *\n * @type {number}\n * @constant\n */\nconst RGBFormat = 1022;\n\n/**\n * Reads the red, green, blue and alpha components.\n *\n * @type {number}\n * @constant\n */\nconst RGBAFormat = 1023;\n\n/**\n * Reads each element as a single depth value, converts it to floating point, and clamps to the range `[0,1]`.\n *\n * @type {number}\n * @constant\n */\nconst DepthFormat = 1026;\n\n/**\n * Reads each element is a pair of depth and stencil values. The depth component of the pair is interpreted as\n * in `DepthFormat`. The stencil component is interpreted based on the depth + stencil internal format.\n *\n * @type {number}\n * @constant\n */\nconst DepthStencilFormat = 1027;\n\n/**\n * Discards the green, blue and alpha components and reads just the red component.\n *\n * @type {number}\n * @constant\n */\nconst RedFormat = 1028;\n\n/**\n * Discards the green, blue and alpha components and reads just the red component. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RedIntegerFormat = 1029;\n\n/**\n * Discards the alpha, and blue components and reads the red, and green components.\n *\n * @type {number}\n * @constant\n */\nconst RGFormat = 1030;\n\n/**\n * Discards the alpha, and blue components and reads the red, and green components. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGIntegerFormat = 1031;\n\n/**\n * Discards the alpha component and reads the red, green and blue component. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGBIntegerFormat = 1032;\n\n/**\n * Reads the red, green, blue and alpha components. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGBAIntegerFormat = 1033;\n\n/**\n * A DXT1-compressed image in an RGB image format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_S3TC_DXT1_Format = 33776;\n\n/**\n * A DXT1-compressed image in an RGB image format with a simple on/off alpha value.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT1_Format = 33777;\n\n/**\n * A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT3_Format = 33778;\n\n/**\n * A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3\n * compression in how the alpha compression is done.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT5_Format = 33779;\n\n/**\n * PVRTC RGB compression in 4-bit mode. One block for each 4×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGB_PVRTC_4BPPV1_Format = 35840;\n\n/**\n * PVRTC RGB compression in 2-bit mode. One block for each 8×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGB_PVRTC_2BPPV1_Format = 35841;\n\n/**\n * PVRTC RGBA compression in 4-bit mode. One block for each 4×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\n\n/**\n * PVRTC RGBA compression in 2-bit mode. One block for each 8×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\n\n/**\n * ETC1 RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_ETC1_Format = 36196;\n\n/**\n * ETC2 RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_ETC2_Format = 37492;\n\n/**\n * ETC2 RGBA format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ETC2_EAC_Format = 37496;\n\n/**\n * ASTC RGBA 4x4 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_4x4_Format = 37808;\n\n/**\n * ASTC RGBA 5x4 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_5x4_Format = 37809;\n\n/**\n * ASTC RGBA 5x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_5x5_Format = 37810;\n\n/**\n * ASTC RGBA 6x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_6x5_Format = 37811;\n\n/**\n * ASTC RGBA 6x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_6x6_Format = 37812;\n\n/**\n * ASTC RGBA 8x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x5_Format = 37813;\n\n/**\n * ASTC RGBA 8x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x6_Format = 37814;\n\n/**\n * ASTC RGBA 8x8 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x8_Format = 37815;\n\n/**\n * ASTC RGBA 10x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x5_Format = 37816;\n\n/**\n * ASTC RGBA 10x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x6_Format = 37817;\n\n/**\n * ASTC RGBA 10x8 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x8_Format = 37818;\n\n/**\n * ASTC RGBA 10x10 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x10_Format = 37819;\n\n/**\n * ASTC RGBA 12x10 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_12x10_Format = 37820;\n\n/**\n * ASTC RGBA 12x12 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_12x12_Format = 37821;\n\n/**\n * BPTC RGBA format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_BPTC_Format = 36492;\n\n/**\n * BPTC Signed RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_BPTC_SIGNED_Format = 36494;\n\n/**\n * BPTC Unsigned RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_BPTC_UNSIGNED_Format = 36495;\n\n/**\n * RGTC1 Red format.\n *\n * @type {number}\n * @constant\n */\nconst RED_RGTC1_Format = 36283;\n\n/**\n * RGTC1 Signed Red format.\n *\n * @type {number}\n * @constant\n */\nconst SIGNED_RED_RGTC1_Format = 36284;\n\n/**\n * RGTC2 Red Green format.\n *\n * @type {number}\n * @constant\n */\nconst RED_GREEN_RGTC2_Format = 36285;\n\n/**\n * RGTC2 Signed Red Green format.\n *\n * @type {number}\n * @constant\n */\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\n\n/**\n * Animations are played once.\n *\n * @type {number}\n * @constant\n */\nconst LoopOnce = 2200;\n\n/**\n * Animations are played with a chosen number of repetitions, each time jumping from\n * the end of the clip directly to its beginning.\n *\n * @type {number}\n * @constant\n */\nconst LoopRepeat = 2201;\n\n/**\n * Animations are played with a chosen number of repetitions, alternately playing forward\n * and backward.\n *\n * @type {number}\n * @constant\n */\nconst LoopPingPong = 2202;\n\n/**\n * Discrete interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateDiscrete = 2300;\n\n/**\n * Linear interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateLinear = 2301;\n\n/**\n * Smooth interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateSmooth = 2302;\n\n/**\n * Zero curvature ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst ZeroCurvatureEnding = 2400;\n\n/**\n * Zero slope ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst ZeroSlopeEnding = 2401;\n\n/**\n * Wrap around ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst WrapAroundEnding = 2402;\n\n/**\n * Default animation blend mode.\n *\n * @type {number}\n * @constant\n */\nconst NormalAnimationBlendMode = 2500;\n\n/**\n * Additive animation blend mode. Can be used to layer motions on top of\n * each other to build complex performances from smaller re-usable assets.\n *\n * @type {number}\n * @constant\n */\nconst AdditiveAnimationBlendMode = 2501;\n\n/**\n * For every three vertices draw a single triangle.\n *\n * @type {number}\n * @constant\n */\nconst TrianglesDrawMode = 0;\n\n/**\n * For each vertex draw a triangle from the last three vertices.\n *\n * @type {number}\n * @constant\n */\nconst TriangleStripDrawMode = 1;\n\n/**\n * For each vertex draw a triangle from the first vertex and the last two vertices.\n *\n * @type {number}\n * @constant\n */\nconst TriangleFanDrawMode = 2;\n\n/**\n * Basic depth packing.\n *\n * @type {number}\n * @constant\n */\nconst BasicDepthPacking = 3200;\n\n/**\n * A depth value is packed into 32 bit RGBA.\n *\n * @type {number}\n * @constant\n */\nconst RGBADepthPacking = 3201;\n\n/**\n * A depth value is packed into 24 bit RGB.\n *\n * @type {number}\n * @constant\n */\nconst RGBDepthPacking = 3202;\n\n/**\n * A depth value is packed into 16 bit RG.\n *\n * @type {number}\n * @constant\n */\nconst RGDepthPacking = 3203;\n\n/**\n * Normal information is relative to the underlying surface.\n *\n * @type {number}\n * @constant\n */\nconst TangentSpaceNormalMap = 0;\n\n/**\n * Normal information is relative to the object orientation.\n *\n * @type {number}\n * @constant\n */\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\n\n/**\n * No color space.\n *\n * @type {string}\n * @constant\n */\nconst NoColorSpace = '';\n\n/**\n * sRGB color space.\n *\n * @type {string}\n * @constant\n */\nconst SRGBColorSpace = 'srgb';\n\n/**\n * sRGB-linear color space.\n *\n * @type {string}\n * @constant\n */\nconst LinearSRGBColorSpace = 'srgb-linear';\n\n/**\n * Linear transfer function.\n *\n * @type {string}\n * @constant\n */\nconst LinearTransfer = 'linear';\n\n/**\n * sRGB transfer function.\n *\n * @type {string}\n * @constant\n */\nconst SRGBTransfer = 'srgb';\n\n/**\n * Sets the stencil buffer value to `0`.\n *\n * @type {number}\n * @constant\n */\nconst ZeroStencilOp = 0;\n\n/**\n * Keeps the current value.\n *\n * @type {number}\n * @constant\n */\nconst KeepStencilOp = 7680;\n\n/**\n * Sets the stencil buffer value to the specified reference value.\n *\n * @type {number}\n * @constant\n */\nconst ReplaceStencilOp = 7681;\n\n/**\n * Increments the current stencil buffer value. Clamps to the maximum representable unsigned value.\n *\n * @type {number}\n * @constant\n */\nconst IncrementStencilOp = 7682;\n\n/**\n * Decrements the current stencil buffer value. Clamps to `0`.\n *\n * @type {number}\n * @constant\n */\nconst DecrementStencilOp = 7683;\n\n/**\n * Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing\n * the maximum representable unsigned value.\n *\n * @type {number}\n * @constant\n */\nconst IncrementWrapStencilOp = 34055;\n\n/**\n * Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable\n * unsigned value when decrementing a stencil buffer value of `0`.\n *\n * @type {number}\n * @constant\n */\nconst DecrementWrapStencilOp = 34056;\n\n/**\n * Inverts the current stencil buffer value bitwise.\n *\n * @type {number}\n * @constant\n */\nconst InvertStencilOp = 5386;\n\n/**\n * Will never return true.\n *\n * @type {number}\n * @constant\n */\nconst NeverStencilFunc = 512;\n\n/**\n * Will return true if the stencil reference value is less than the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst LessStencilFunc = 513;\n\n/**\n * Will return true if the stencil reference value is equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst EqualStencilFunc = 514;\n\n/**\n * Will return true if the stencil reference value is less than or equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualStencilFunc = 515;\n\n/**\n * Will return true if the stencil reference value is greater than the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterStencilFunc = 516;\n\n/**\n * Will return true if the stencil reference value is not equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualStencilFunc = 517;\n\n/**\n * Will return true if the stencil reference value is greater than or equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualStencilFunc = 518;\n\n/**\n * Will always return true.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysStencilFunc = 519;\n\n/**\n * Never pass.\n *\n * @type {number}\n * @constant\n */\nconst NeverCompare = 512;\n\n/**\n * Pass if the incoming value is less than the texture value.\n *\n * @type {number}\n * @constant\n */\nconst LessCompare = 513;\n\n/**\n * Pass if the incoming value equals the texture value.\n *\n * @type {number}\n * @constant\n */\nconst EqualCompare = 514;\n\n/**\n * Pass if the incoming value is less than or equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualCompare = 515;\n\n/**\n * Pass if the incoming value is greater than the texture value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterCompare = 516;\n\n/**\n * Pass if the incoming value is not equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualCompare = 517;\n\n/**\n * Pass if the incoming value is greater than or equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualCompare = 518;\n\n/**\n * Always pass.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysCompare = 519;\n\n/**\n * The contents are intended to be specified once by the application, and used many\n * times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StaticDrawUsage = 35044;\n\n/**\n * The contents are intended to be respecified repeatedly by the application, and\n * used many times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst DynamicDrawUsage = 35048;\n\n/**\n * The contents are intended to be specified once by the application, and used at most\n * a few times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StreamDrawUsage = 35040;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and queried\n * many times by the application.\n *\n * @type {number}\n * @constant\n */\nconst StaticReadUsage = 35045;\n\n/**\n * The contents are intended to be respecified repeatedly by reading data from the 3D API, and queried\n * many times by the application.\n *\n * @type {number}\n * @constant\n */\nconst DynamicReadUsage = 35049;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and queried at most\n * a few times by the application\n *\n * @type {number}\n * @constant\n */\nconst StreamReadUsage = 35041;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and used many times as\n * the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StaticCopyUsage = 35046;\n\n/**\n * The contents are intended to be respecified repeatedly by reading data from the 3D API, and used many times\n * as the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst DynamicCopyUsage = 35050;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and used at most a few times\n * as the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StreamCopyUsage = 35042;\n\n/**\n * GLSL 1 shader code.\n *\n * @type {string}\n * @constant\n */\nconst GLSL1 = '100';\n\n/**\n * GLSL 3 shader code.\n *\n * @type {string}\n * @constant\n */\nconst GLSL3 = '300 es';\n\n/**\n * WebGL coordinate system.\n *\n * @type {number}\n * @constant\n */\nconst WebGLCoordinateSystem = 2000;\n\n/**\n * WebGPU coordinate system.\n *\n * @type {number}\n * @constant\n */\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * Represents the different timestamp query types.\n *\n * @type {ConstantsTimestampQuery}\n * @constant\n */\nconst TimestampQuery = {\n\tCOMPUTE: 'compute',\n\tRENDER: 'render'\n};\n\n/**\n * Represents mouse buttons and interaction types in context of controls.\n *\n * @type {ConstantsInterpolationSamplingType}\n * @constant\n */\nconst InterpolationSamplingType = {\n\tPERSPECTIVE: 'perspective',\n\tLINEAR: 'linear',\n\tFLAT: 'flat'\n};\n\n/**\n * Represents the different interpolation sampling modes.\n *\n * @type {ConstantsInterpolationSamplingMode}\n * @constant\n */\nconst InterpolationSamplingMode = {\n\tNORMAL: 'normal',\n\tCENTROID: 'centroid',\n\tSAMPLE: 'sample',\n\tFIRST: 'first',\n\tEITHER: 'either'\n};\n\n/**\n * This type represents mouse buttons and interaction types in context of controls.\n *\n * @typedef {Object} ConstantsMouse\n * @property {number} MIDDLE - The left mouse button.\n * @property {number} LEFT - The middle mouse button.\n * @property {number} RIGHT - The right mouse button.\n * @property {number} ROTATE - A rotate interaction.\n * @property {number} DOLLY - A dolly interaction.\n * @property {number} PAN - A pan interaction.\n **/\n\n/**\n * This type represents touch interaction types in context of controls.\n *\n * @typedef {Object} ConstantsTouch\n * @property {number} ROTATE - A rotate interaction.\n * @property {number} PAN - A pan interaction.\n * @property {number} DOLLY_PAN - The dolly-pan interaction.\n * @property {number} DOLLY_ROTATE - A dolly-rotate interaction.\n **/\n\n/**\n * This type represents the different timestamp query types.\n *\n * @typedef {Object} ConstantsTimestampQuery\n * @property {string} COMPUTE - A `compute` timestamp query.\n * @property {string} RENDER - A `render` timestamp query.\n **/\n\n/**\n * Represents the different interpolation sampling types.\n *\n * @typedef {Object} ConstantsInterpolationSamplingType\n * @property {string} PERSPECTIVE - Perspective-correct interpolation.\n * @property {string} LINEAR - Linear interpolation.\n * @property {string} FLAT - Flat interpolation.\n */\n\n/**\n * Represents the different interpolation sampling modes.\n *\n * @typedef {Object} ConstantsInterpolationSamplingMode\n * @property {string} NORMAL - Normal sampling mode.\n * @property {string} CENTROID - Centroid sampling mode.\n * @property {string} SAMPLE - Sample-specific sampling mode.\n * @property {string} FIRST - Flat interpolation using the first vertex.\n * @property {string} EITHER - Flat interpolation using either vertex.\n */\n\n/**\n * This modules allows to dispatch event objects on custom JavaScript objects.\n *\n * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}\n *\n * Code Example:\n * ```js\n * class Car extends EventDispatcher {\n * \tstart() {\n *\t\tthis.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );\n *\t}\n *};\n *\n * // Using events with the custom object\n * const car = new Car();\n * car.addEventListener( 'start', function ( event ) {\n * \talert( event.message );\n * } );\n *\n * car.start();\n * ```\n */\nclass EventDispatcher {\n\n\t/**\n\t * Adds the given event listener to the given event type.\n\t *\n\t * @param {string} type - The type of event to listen to.\n\t * @param {Function} listener - The function that gets called when the event is fired.\n\t */\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === -1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns `true` if the given event listener has been added to the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to check.\n\t * @return {boolean} Whether the given event listener has been added to the given event type.\n\t */\n\thasEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return false;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== -1;\n\n\t}\n\n\t/**\n\t * Removes the given event listener from the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to remove.\n\t */\n\tremoveEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event object.\n\t *\n\t * @param {Object} event - The event that gets fired.\n\t */\n\tdispatchEvent( event ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n/**\n * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n * (universally unique identifier).\n *\n * @return {string} The UUID.\n */\nfunction generateUUID() {\n\n\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\n/**\n * Clamps the given value between min and max.\n *\n * @param {number} value - The value to clamp.\n * @param {number} min - The min value.\n * @param {number} max - The max value.\n * @return {number} The clamped value.\n */\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n/**\n * Computes the Euclidean modulo of the given parameters that\n * is `( ( n % m ) + m ) % m`.\n *\n * @param {number} n - The first parameter.\n * @param {number} m - The second parameter.\n * @return {number} The Euclidean modulo.\n */\nfunction euclideanModulo( n, m ) {\n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n/**\n * Performs a linear mapping from range `` to range ``\n * for the given value.\n *\n * @param {number} x - The value to be mapped.\n * @param {number} a1 - Minimum value for range A.\n * @param {number} a2 - Maximum value for range A.\n * @param {number} b1 - Minimum value for range B.\n * @param {number} b2 - Maximum value for range B.\n * @return {number} The mapped value.\n */\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n/**\n * Returns the percentage in the closed interval `[0, 1]` of the given value\n * between the start and end point.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} value - A value between start and end.\n * @return {number} The interpolation factor.\n */\nfunction inverseLerp( x, y, value ) {\n\n\t// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n/**\n * Returns a value linearly interpolated from two known points based on the given interval -\n * `t = 0` will return `x` and `t = 1` will return `y`.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {number} The interpolated value.\n */\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n/**\n * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta\n * time to maintain frame rate independent movement. For details, see\n * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.\n *\n * @param {number} x - The current point.\n * @param {number} y - The target point.\n * @param {number} lambda - A higher lambda value will make the movement more sudden,\n * and a lower value will make the movement more gradual.\n * @param {number} dt - Delta time in seconds.\n * @return {number} The interpolated value.\n */\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n/**\n * Returns a value that alternates between `0` and the given `length` parameter.\n *\n * @param {number} x - The value to pingpong.\n * @param {number} [length=1] - The positive value the function will pingpong to.\n * @return {number} The alternated value.\n */\nfunction pingpong( x, length = 1 ) {\n\n\t// https://www.desmos.com/calculator/vcsjnyz7x4\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n/**\n * Returns a value in the range `[0,1]` that represents the percentage that `x` has\n * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to\n * the `min` and `max`.\n *\n * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\n/**\n * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}\n * that has zero 1st and 2nd order derivatives at x=0 and x=1.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n/**\n * Returns a random integer from `` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random integer.\n */\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n/**\n * Returns a random float from `` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random float.\n */\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n/**\n * Returns a random integer from `<-range/2, range/2>` interval.\n *\n * @param {number} range - Defines the value range.\n * @return {number} A random float.\n */\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n/**\n * Returns a deterministic pseudo-random float in the interval `[0, 1]`.\n *\n * @param {number} [s] - The integer seed.\n * @return {number} A random float.\n */\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} degrees - A value in degrees.\n * @return {number} The converted value in radians.\n */\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\n/**\n * Converts radians to degrees.\n *\n * @param {number} radians - A value in radians.\n * @return {number} The converted value in degrees.\n */\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\n/**\n * Returns `true` if the given number is a power of two.\n *\n * @param {number} value - The value to check.\n * @return {boolean} Whether the given number is a power of two or not.\n */\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\n/**\n * Returns the smallest power of two that is greater than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The smallest power of two that is greater than or equal to the given number.\n */\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Returns the largest power of two that is less than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The largest power of two that is less than or equal to the given number.\n */\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}\n * defined by the given angles and order.\n *\n * Rotations are applied to the axes in the order specified by order:\n * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.\n *\n * @param {Quaternion} q - The quaternion to set.\n * @param {number} a - The rotation applied to the first axis, in radians.\n * @param {number} b - The rotation applied to the second axis, in radians.\n * @param {number} c - The rotation applied to the third axis, in radians.\n * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.\n */\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\n/**\n * Denormalizes the given value according to the given typed array.\n *\n * @param {number} value - The value to denormalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The denormalize (float) value in the range `[0,1]`.\n */\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, -1 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, -1 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, -1 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n/**\n * Normalizes the given value according to the given typed array.\n *\n * @param {number} value - The float value in the range `[0,1]` to normalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The normalize value.\n */\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n/**\n * @class\n * @classdesc A collection of math utility functions.\n * @hideconstructor\n */\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\t/**\n\t * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n\t * (universally unique identifier).\n\t *\n\t * @static\n\t * @method\n\t * @return {string} The UUID.\n\t */\n\tgenerateUUID: generateUUID,\n\t/**\n\t * Clamps the given value between min and max.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to clamp.\n\t * @param {number} min - The min value.\n\t * @param {number} max - The max value.\n\t * @return {number} The clamped value.\n\t */\n\tclamp: clamp,\n\t/**\n\t * Computes the Euclidean modulo of the given parameters that\n\t * is `( ( n % m ) + m ) % m`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} n - The first parameter.\n\t * @param {number} m - The second parameter.\n\t * @return {number} The Euclidean modulo.\n\t */\n\teuclideanModulo: euclideanModulo,\n\t/**\n\t * Performs a linear mapping from range `` to range ``\n\t * for the given value.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to be mapped.\n\t * @param {number} a1 - Minimum value for range A.\n\t * @param {number} a2 - Maximum value for range A.\n\t * @param {number} b1 - Minimum value for range B.\n\t * @param {number} b2 - Maximum value for range B.\n\t * @return {number} The mapped value.\n\t */\n\tmapLinear: mapLinear,\n\t/**\n\t * Returns the percentage in the closed interval `[0, 1]` of the given value\n\t * between the start and end point.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The start point\n\t * @param {number} y - The end point.\n\t * @param {number} value - A value between start and end.\n\t * @return {number} The interpolation factor.\n\t */\n\tinverseLerp: inverseLerp,\n\t/**\n\t * Returns a value linearly interpolated from two known points based on the given interval -\n\t * `t = 0` will return `x` and `t = 1` will return `y`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The start point\n\t * @param {number} y - The end point.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {number} The interpolated value.\n\t */\n\tlerp: lerp,\n\t/**\n\t * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta\n\t * time to maintain frame rate independent movement. For details, see\n\t * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The current point.\n\t * @param {number} y - The target point.\n\t * @param {number} lambda - A higher lambda value will make the movement more sudden,\n\t * and a lower value will make the movement more gradual.\n\t * @param {number} dt - Delta time in seconds.\n\t * @return {number} The interpolated value.\n\t */\n\tdamp: damp,\n\t/**\n\t * Returns a value that alternates between `0` and the given `length` parameter.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to pingpong.\n\t * @param {number} [length=1] - The positive value the function will pingpong to.\n\t * @return {number} The alternated value.\n\t */\n\tpingpong: pingpong,\n\t/**\n\t * Returns a value in the range `[0,1]` that represents the percentage that `x` has\n\t * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to\n\t * the `min` and `max`.\n\t *\n\t * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to evaluate based on its position between min and max.\n\t * @param {number} min - The min value. Any x value below min will be `0`.\n\t * @param {number} max - The max value. Any x value above max will be `1`.\n\t * @return {number} The alternated value.\n\t */\n\tsmoothstep: smoothstep,\n\t/**\n\t * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}\n\t * that has zero 1st and 2nd order derivatives at x=0 and x=1.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to evaluate based on its position between min and max.\n\t * @param {number} min - The min value. Any x value below min will be `0`.\n\t * @param {number} max - The max value. Any x value above max will be `1`.\n\t * @return {number} The alternated value.\n\t */\n\tsmootherstep: smootherstep,\n\t/**\n\t * Returns a random integer from `` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} low - The lower value boundary.\n\t * @param {number} high - The upper value boundary\n\t * @return {number} A random integer.\n\t */\n\trandInt: randInt,\n\t/**\n\t * Returns a random float from `` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} low - The lower value boundary.\n\t * @param {number} high - The upper value boundary\n\t * @return {number} A random float.\n\t */\n\trandFloat: randFloat,\n\t/**\n\t * Returns a random integer from `<-range/2, range/2>` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} range - Defines the value range.\n\t * @return {number} A random float.\n\t */\n\trandFloatSpread: randFloatSpread,\n\t/**\n\t * Returns a deterministic pseudo-random float in the interval `[0, 1]`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} [s] - The integer seed.\n\t * @return {number} A random float.\n\t */\n\tseededRandom: seededRandom,\n\t/**\n\t * Converts degrees to radians.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} degrees - A value in degrees.\n\t * @return {number} The converted value in radians.\n\t */\n\tdegToRad: degToRad,\n\t/**\n\t * Converts radians to degrees.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} radians - A value in radians.\n\t * @return {number} The converted value in degrees.\n\t */\n\tradToDeg: radToDeg,\n\t/**\n\t * Returns `true` if the given number is a power of two.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to check.\n\t * @return {boolean} Whether the given number is a power of two or not.\n\t */\n\tisPowerOfTwo: isPowerOfTwo,\n\t/**\n\t * Returns the smallest power of two that is greater than or equal to the given number.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to find a POT for.\n\t * @return {number} The smallest power of two that is greater than or equal to the given number.\n\t */\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\t/**\n\t * Returns the largest power of two that is less than or equal to the given number.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to find a POT for.\n\t * @return {number} The largest power of two that is less than or equal to the given number.\n\t */\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\t/**\n\t * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}\n\t * defined by the given angles and order.\n\t *\n\t * Rotations are applied to the axes in the order specified by order:\n\t * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.\n\t *\n\t * @static\n\t * @method\n\t * @param {Quaternion} q - The quaternion to set.\n\t * @param {number} a - The rotation applied to the first axis, in radians.\n\t * @param {number} b - The rotation applied to the second axis, in radians.\n\t * @param {number} c - The rotation applied to the third axis, in radians.\n\t * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.\n\t */\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\t/**\n\t * Normalizes the given value according to the given typed array.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The float value in the range `[0,1]` to normalize.\n\t * @param {TypedArray} array - The typed array that defines the data type of the value.\n\t * @return {number} The normalize value.\n\t */\n\tnormalize: normalize,\n\t/**\n\t * Denormalizes the given value according to the given typed array.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to denormalize.\n\t * @param {TypedArray} array - The typed array that defines the data type of the value.\n\t * @return {number} The denormalize (float) value in the range `[0,1]`.\n\t */\n\tdenormalize: denormalize\n};\n\n/**\n * Class representing a 2D vector. A 2D vector is an ordered pair of numbers\n * (labeled x and y), which can be used to represent a number of things, such as:\n *\n * - A point in 2D space (i.e. a position on a plane).\n * - A direction and length across a plane. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0)` to `(x, y)`\n * and the direction is also measured from `(0, 0)` towards `(x, y)`.\n * - Any arbitrary ordered pair of numbers.\n *\n * There are other things a 2D vector can be used to represent, such as\n * momentum vectors, complex numbers and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector2( 0, 1 );\n *\n * //no arguments; will be initialised to (0, 0)\n * const b = new THREE.Vector2( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector2 {\n\n\t/**\n\t * Constructs a new 2D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t */\n\tconstructor( x = 0, y = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector2.prototype.isVector2 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#x}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#y}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @param {number} value - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to copy.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector2} v - The vector to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector2} v - The vector to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 as the 3rd component) by\n\t * the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to apply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the given vector's x or y\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is less than the given vector's x or y\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the max vector's x or y\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x or y value is less than the min vector's x or y value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector2} min - The minimum x and y values.\n\t * @param {Vector2} max - The maximum x and y values in the desired range.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x or y values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x and y = -y.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the cross product with.\n\t * @return {number} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0) to (x, y). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0) to (x, y).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Computes the angle in radians of this vector with respect to the positive x-axis.\n\t *\n\t * @return {number} The angle in radians.\n\t */\n\tangle() {\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector2} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector2} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector2} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector2} v1 - The first vector.\n\t * @param {Vector2} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector2} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]` and y\n\t * value to be `array[ offset + 1 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this vector around the given center by the given angle.\n\t *\n\t * @param {Vector2} center - The point around which to rotate.\n\t * @param {number} angle - The angle to rotate, in radians.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\n/**\n * Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n *\n * Note that three.js expects Quaternions to be normalized.\n * ```js\n * const quaternion = new THREE.Quaternion();\n * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );\n *\n * const vector = new THREE.Vector3( 1, 0, 0 );\n * vector.applyQuaternion( quaternion );\n * ```\n */\nclass Quaternion {\n\n\t/**\n\t * Constructs a new quaternion.\n\t *\n\t * @param {number} [x=0] - The x value of this quaternion.\n\t * @param {number} [y=0] - The y value of this quaternion.\n\t * @param {number} [z=0] - The z value of this quaternion.\n\t * @param {number} [w=1] - The w value of this quaternion.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\t/**\n\t * Interpolates between two quaternions via SLERP. This implementation assumes the\n\t * quaternion data are managed in flat arrays.\n\t *\n\t * @param {Array} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array} src1 - The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @param {number} t - The interpolation factor in the range `[0,1]`.\n\t * @see {@link Quaternion#slerp}\n\t */\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : -1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\t/**\n\t * Multiplies two quaternions. This implementation assumes the quaternion data are managed\n\t * in flat arrays.\n\t *\n\t * @param {Array} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array} src1 - The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @return {Array} The destination array.\n\t * @see {@link Quaternion#multiplyQuaternions}.\n\t */\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\t/**\n\t * The x value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The y value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The z value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The w value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 1\n\t */\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the quaternion components.\n\t *\n\t * @param {number} x - The x value of this quaternion.\n\t * @param {number} y - The y value of this quaternion.\n\t * @param {number} z - The z value of this quaternion.\n\t * @param {number} w - The w value of this quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new quaternion with copied values from this instance.\n\t *\n\t * @return {Quaternion} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given quaternion to this instance.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to copy.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the rotation specified by the given\n\t * Euler angles.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given axis and angle.\n\t *\n\t * @param {Vector3} axis - The normalized axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the rotation required to rotate the direction vector\n\t * `vFrom` to the direction vector `vTo`.\n\t *\n\t * @param {Vector3} vFrom - The first (normalized) direction vector.\n\t * @param {Vector3} vTo - The second (normalized) direction vector.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < 1e-8 ) { // the epsilon value has been discussed in #31286\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Returns the angle between this quaternion and the given one in radians.\n\t *\n\t * @param {Quaternion} q - The quaternion to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), -1, 1 ) ) );\n\n\t}\n\n\t/**\n\t * Rotates this quaternion by a given angular step to the given quaternion.\n\t * The method ensures that the final quaternion will not overshoot `q`.\n\t *\n\t * @param {Quaternion} q - The target quaternion.\n\t * @param {number} step - The angular step in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the identity quaternion; that is, to the\n\t * quaternion that represents \"no rotation\".\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\t/**\n\t * Inverts this quaternion via {@link Quaternion#conjugate}. The\n\t * quaternion is assumed to have unit length.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tinvert() {\n\n\t\treturn this.conjugate();\n\n\t}\n\n\t/**\n\t * Returns the rotational conjugate of this quaternion. The conjugate of a\n\t * quaternion represents the same rotation in the opposite direction about\n\t * the rotational axis.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tconjugate() {\n\n\t\tthis._x *= -1;\n\t\tthis._y *= -1;\n\t\tthis._z *= -1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of this quaternion and the given one.\n\t *\n\t * @param {Quaternion} v - The quaternion to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\t/**\n\t * Computes the squared Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector. This can be useful if you are comparing the\n\t * lengths of two quaternions, as this is a slightly more efficient calculation than\n\t * {@link Quaternion#length}.\n\t *\n\t * @return {number} The squared Euclidean length.\n\t */\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector.\n\t *\n\t * @return {number} The Euclidean length.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\t/**\n\t * Normalizes this quaternion - that is, calculated the quaternion that performs\n\t * the same rotation as this one, but has a length equal to `1`.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\t/**\n\t * Multiplies the given quaternions and stores the result in this instance.\n\t *\n\t * @param {Quaternion} a - The first quaternion.\n\t * @param {Quaternion} b - The second quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between quaternions.\n\t *\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between the given quaternions\n\t * and stores the result in this quaternion.\n\t *\n\t * @param {Quaternion} qa - The source quaternion.\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\t/**\n\t * Sets this quaternion to a uniformly random, normalized quaternion.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trandom() {\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if this quaternion is equal with the given one.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to test for equality.\n\t * @return {boolean} Whether this quaternion is equal with the given one.\n\t */\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\t/**\n\t * Sets this quaternion's components from the given array.\n\t *\n\t * @param {Array} array - An array holding the quaternion component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this quaternion to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the quaternion components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The quaternion components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this quaternion from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the\n\t * numerical elements of this quaternion in an array of format `[x, y, z, w]`.\n\t *\n\t * @return {Array} The serialized quaternion.\n\t */\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\n/**\n * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers\n * (labeled x, y and z), which can be used to represent a number of things, such as:\n *\n * - A point in 3D space.\n * - A direction and length in 3D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0)` to `(x, y, z)`\n * and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`.\n * - Any arbitrary ordered triplet of numbers.\n *\n * There are other things a 3D vector can be used to represent, such as\n * momentum vectors and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y, z)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector3( 0, 1, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0)\n * const b = new THREE.Vector3( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector3 {\n\n\t/**\n\t * Constructs a new 3D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector3.prototype.isVector3 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @param {number} value - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to copy.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector3} v - The vector to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Euler rotation to this vector.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\t/**\n\t * Applies a rotation specified by an axis and an angle to this vector.\n\t *\n\t * @param {Vector3} axis - A normalized vector representing the rotation axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector by the given normal matrix and normalizes\n\t * the result.\n\t *\n\t * @param {Matrix3} m - The normal matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and\n\t * divides by perspective.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Quaternion to this vector.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector from world space into the camera's normalized\n\t * device coordinate (NDC) space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\t/**\n\t * Unprojects this vector from the camera's normalized device coordinate (NDC)\n\t * space into world space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\t/**\n\t * Transforms the direction of this vector by a matrix (the upper left 3 x 3\n\t * subset of the given 4x4 matrix and then normalizes the result.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector3} v - The vector to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the given vector's x, y or z\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is less than the given vector's x, y or z\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the max vector's x, y or z\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y or z value is less than the min vector's x, y or z value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector3} min - The minimum x, y and z values.\n\t * @param {Vector3} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y or z values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y and z = -z.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector3} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector3} v1 - The first vector.\n\t * @param {Vector3} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the cross product with.\n\t * @return {Vector3} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vectors and stores the result\n\t * in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector onto the given one.\n\t *\n\t * @param {Vector3} v - The vector to project to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\t/**\n\t * Projects this vector onto a plane by subtracting this\n\t * vector projected onto the plane's normal from this vector.\n\t *\n\t * @param {Vector3} planeNormal - The plane normal.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\t/**\n\t * Reflects this vector off a plane orthogonal to the given normal vector.\n\t *\n\t * @param {Vector3} normal - The (normalized) normal vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\treflect( normal ) {\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector3} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector3} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {Spherical} s - The spherical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The phi angle in radians.\n\t * @param {number} theta - The theta angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {Cylindrical} c - The cylindrical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle in radians.\n\t * @param {number} y - The y value.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the scale elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given Euler angles.\n\t *\n\t * @param {Euler} e - The Euler angles to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the RGB components of the\n\t * given color.\n\t *\n\t * @param {Color} c - The color to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector3} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`\n\t * and z value to be `array[ offset + 2 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this vector to a uniformly random point on a unit sphere.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\n/**\n * Represents a 3x3 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix();\n * m.set( 11, 12, 13,\n * 21, 22, 23,\n * 31, 32, 33 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31,\n * 12, 22, 32,\n * 13, 23, 33 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix3 {\n\n\t/**\n\t * Constructs a new 3x3 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 3x3 identity matrix.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix3} m - The matrix to copy.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 3x3 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix3} a - The first matrix.\n\t * @param {Matrix3} b - The second matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the normal matrix which is the inverse transpose of the upper\n\t * left 3x3 portion of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\t/**\n\t * Transposes this matrix into the supplied array, and returns itself unchanged.\n\t *\n\t * @param {Array} r - An array to store the transposed matrix elements.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the UV transform matrix from offset, repeat, rotation, and center.\n\t *\n\t * @param {number} tx - Offset x.\n\t * @param {number} ty - Offset y.\n\t * @param {number} sx - Repeat x.\n\t * @param {number} sy - Repeat y.\n\t * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise.\n\t * @param {number} cx - Center x of rotation.\n\t * @param {number} cy - Center y of rotation\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this matrix with the given scalar values.\n\t *\n\t * @param {number} sx - The amount to scale in the X axis.\n\t * @param {number} sy - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this matrix by the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates this matrix by the given scalar values.\n\t *\n\t * @param {number} tx - The amount to translate in the X axis.\n\t * @param {number} ty - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\t/**\n\t * Sets this matrix as a 2D translation transform.\n\t *\n\t * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D rotational transformation.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D scale transform.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix3} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\nconst LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(\n\t0.4123908, 0.3575843, 0.1804808,\n\t0.2126390, 0.7151687, 0.0721923,\n\t0.0193308, 0.1191948, 0.9505322\n);\n\nconst XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set(\n\t3.2409699, -1.5373832, -0.4986108,\n\t-0.9692436, 1.8759675, 0.0415551,\n\t0.0556301, -0.203977, 1.0569715\n);\n\nfunction createColorManagement() {\n\n\tconst ColorManagement = {\n\n\t\tenabled: true,\n\n\t\tworkingColorSpace: LinearSRGBColorSpace,\n\n\t\t/**\n\t\t * Implementations of supported color spaces.\n\t\t *\n\t\t * Required:\n\t\t *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n\t\t *\t- whitePoint: reference white [ x y ]\n\t\t *\t- transfer: transfer function (pre-defined)\n\t\t *\t- toXYZ: Matrix3 RGB to XYZ transform\n\t\t *\t- fromXYZ: Matrix3 XYZ to RGB transform\n\t\t *\t- luminanceCoefficients: RGB luminance coefficients\n\t\t *\n\t\t * Optional:\n\t\t * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: 'extended' | 'standard' }\n\t\t * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n\t\t *\n\t\t * Reference:\n\t\t * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n\t\t */\n\t\tspaces: {},\n\n\t\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\t\treturn color;\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = SRGBToLinear( color.r );\n\t\t\t\tcolor.g = SRGBToLinear( color.g );\n\t\t\t\tcolor.b = SRGBToLinear( color.b );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) {\n\n\t\t\t\tcolor.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ );\n\t\t\t\tcolor.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = LinearToSRGB( color.r );\n\t\t\t\tcolor.g = LinearToSRGB( color.g );\n\t\t\t\tcolor.b = LinearToSRGB( color.b );\n\n\t\t\t}\n\n\t\t\treturn color;\n\n\t\t},\n\n\t\tworkingToColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t\t},\n\n\t\tcolorSpaceToWorking: function ( color, sourceColorSpace ) {\n\n\t\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t\t},\n\n\t\tgetPrimaries: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].primaries;\n\n\t\t},\n\n\t\tgetTransfer: function ( colorSpace ) {\n\n\t\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\t\treturn this.spaces[ colorSpace ].transfer;\n\n\t\t},\n\n\t\tgetToneMappingMode: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.toneMappingMode || 'standard';\n\n\t\t},\n\n\t\tgetLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );\n\n\t\t},\n\n\t\tdefine: function ( colorSpaces ) {\n\n\t\t\tObject.assign( this.spaces, colorSpaces );\n\n\t\t},\n\n\t\t// Internal APIs\n\n\t\t_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {\n\n\t\t\treturn targetMatrix\n\t\t\t\t.copy( this.spaces[ sourceColorSpace ].toXYZ )\n\t\t\t\t.multiply( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t},\n\n\t\t_getDrawingBufferColorSpace: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace;\n\n\t\t},\n\n\t\t_getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace;\n\n\t\t},\n\n\t\t// Deprecated\n\n\t\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\twarnOnce( 'THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177\n\n\t\t\treturn ColorManagement.workingToColorSpace( color, targetColorSpace );\n\n\t\t},\n\n\t\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\t\twarnOnce( 'THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177\n\n\t\t\treturn ColorManagement.colorSpaceToWorking( color, sourceColorSpace );\n\n\t\t},\n\n\t};\n\n\t/******************************************************************************\n\t * sRGB definitions\n\t */\n\n\tconst REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ];\n\tconst REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ];\n\tconst D65 = [ 0.3127, 0.3290 ];\n\n\tColorManagement.define( {\n\n\t\t[ LinearSRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: LinearTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\tworkingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t\t[ SRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: SRGBTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t} );\n\n\treturn ColorManagement;\n\n}\n\nconst ColorManagement = /*@__PURE__*/ createColorManagement();\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\n/**\n * A class containing utility functions for images.\n *\n * @hideconstructor\n */\nclass ImageUtils {\n\n\t/**\n\t * Returns a data URI containing a representation of the given image.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object.\n\t * @param {string} [type='image/png'] - Indicates the image format.\n\t * @return {string} The data URI.\n\t */\n\tstatic getDataURL( image, type = 'image/png' ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\treturn canvas.toDataURL( type );\n\n\t}\n\n\t/**\n\t * Converts the given sRGB image data to linear color space.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object.\n\t * @return {HTMLCanvasElement|Object} The converted image.\n\t */\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\n/**\n * Represents the data source of a texture.\n *\n * The main purpose of this class is to decouple the data definition from the texture\n * definition so the same data can be used with multiple texture instances.\n */\nclass Source {\n\n\t/**\n\t * Constructs a new video texture.\n\t *\n\t * @param {any} [data=null] - The data definition of a texture.\n\t */\n\tconstructor( data = null ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSource = true;\n\n\t\t/**\n\t\t * The ID of the source.\n\t\t *\n\t\t * @name Source#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\t/**\n\t\t * The UUID of the source.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The data definition of a texture.\n\t\t *\n\t\t * @type {any}\n\t\t */\n\t\tthis.data = data;\n\n\t\t/**\n\t\t * This property is only relevant when {@link Source#needsUpdate} is set to `true` and\n\t\t * provides more control on how texture data should be processed. When `dataReady` is set\n\t\t * to `false`, the engine performs the memory allocation (if necessary) but does not transfer\n\t\t * the data into the GPU memory.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.dataReady = true;\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Source#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * Returns the dimensions of the source into the given target vector.\n\t *\n\t * @param {(Vector2|Vector3)} target - The target object the result is written into.\n\t * @return {(Vector2|Vector3)} The dimensions of the source.\n\t */\n\tgetSize( target ) {\n\n\t\tconst data = this.data;\n\n\t\tif ( ( typeof HTMLVideoElement !== 'undefined' ) && ( data instanceof HTMLVideoElement ) ) {\n\n\t\t\ttarget.set( data.videoWidth, data.videoHeight, 0 );\n\n\t\t} else if ( data instanceof VideoFrame ) {\n\n\t\t\ttarget.set( data.displayHeight, data.displayWidth, 0 );\n\n\t\t} else if ( data !== null ) {\n\n\t\t\ttarget.set( data.width, data.height, data.depth || 0 );\n\n\t\t} else {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * When the property is set to `true`, the engine allocates the memory\n\t * for the texture (if necessary) and triggers the actual texture upload\n\t * to the GPU next time the source is used.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Serializes the source into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized source.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nconst _tempVec3 = /*@__PURE__*/ new Vector3();\n\n/**\n * Base class for all textures.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments EventDispatcher\n */\nclass Texture extends EventDispatcher {\n\n\t/**\n\t * Constructs a new texture.\n\t *\n\t * @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isTexture = true;\n\n\t\t/**\n\t\t * The ID of the texture.\n\t\t *\n\t\t * @name Texture#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The data definition of a texture. A reference to the data source can be\n\t\t * shared across textures. This is often useful in context of spritesheets\n\t\t * where multiple textures render the same data but with different texture\n\t\t * transformations.\n\t\t *\n\t\t * @type {Source}\n\t\t */\n\t\tthis.source = new Source( image );\n\n\t\t/**\n\t\t * An array holding user-defined mipmaps.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.mipmaps = [];\n\n\t\t/**\n\t\t * How the texture is applied to the object. The value `UVMapping`\n\t\t * is the default, where texture or uv coordinates are used to apply the map.\n\t\t *\n\t\t * @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)}\n\t\t * @default UVMapping\n\t\t*/\n\t\tthis.mapping = mapping;\n\n\t\t/**\n\t\t * Lets you select the uv attribute to map the texture to. `0` for `uv`,\n\t\t * `1` for `uv1`, `2` for `uv2` and `3` for `uv3`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.channel = 0;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *U* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapS = wrapS;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *V* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapT = wrapT;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearFilter\n\t\t */\n\t\tthis.magFilter = magFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearMipmapLinearFilter\n\t\t */\n\t\tthis.minFilter = minFilter;\n\n\t\t/**\n\t\t * The number of samples taken along the axis through the pixel that has the\n\t\t * highest density of texels. By default, this value is `1`. A higher value\n\t\t * gives a less blurry result than a basic mipmap, at the cost of more\n\t\t * texture samples being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.anisotropy = anisotropy;\n\n\t\t/**\n\t\t * The format of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default RGBAFormat\n\t\t */\n\t\tthis.format = format;\n\n\t\t/**\n\t\t * The default internal format is derived from {@link Texture#format} and {@link Texture#type} and\n\t\t * defines how the texture data is going to be stored on the GPU.\n\t\t *\n\t\t * This property allows to overwrite the default format.\n\t\t *\n\t\t * @type {?string}\n\t\t * @default null\n\t\t */\n\t\tthis.internalFormat = null;\n\n\t\t/**\n\t\t * The data type of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default UnsignedByteType\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * How much a single repetition of the texture is offset from the beginning,\n\t\t * in each direction U and V. Typical range is `0.0` to `1.0`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.offset = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How many times the texture is repeated across the surface, in each\n\t\t * direction U and V. If repeat is set greater than `1` in either direction,\n\t\t * the corresponding wrap parameter should also be set to `RepeatWrapping`\n\t\t * or `MirroredRepeatWrapping` to achieve the desired tiling effect.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.repeat = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds\n\t\t * to the center of the texture. Default is `(0, 0)`, the lower left.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.center = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How much the texture is rotated around the center point, in radians.\n\t\t * Positive values are counter-clockwise.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.rotation = 0;\n\n\t\t/**\n\t\t * Whether to update the texture's uv-transformation {@link Texture#matrix}\n\t\t * from the properties {@link Texture#offset}, {@link Texture#repeat},\n\t\t * {@link Texture#rotation}, and {@link Texture#center}.\n\t\t *\n\t\t * Set this to `false` if you are specifying the uv-transform matrix directly.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = true;\n\n\t\t/**\n\t\t * The uv-transformation matrix of the texture.\n\t\t *\n\t\t * @type {Matrix3}\n\t\t */\n\t\tthis.matrix = new Matrix3();\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Set this to `false` if you are creating mipmaps manually.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.generateMipmaps = true;\n\n\t\t/**\n\t\t * If set to `true`, the alpha channel, if present, is multiplied into the\n\t\t * color channels when the texture is uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure premultiply alpha on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultiplyAlpha = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure the flip on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.flipY = true;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t * The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes),\n\t\t * `4` (word-alignment), and `8` (rows start on double-word boundaries).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 4\n\t\t */\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t/**\n\t\t * Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`.\n\t\t *\n\t\t * @type {string}\n\t\t * @default NoColorSpace\n\t\t */\n\t\tthis.colorSpace = colorSpace;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the texture. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This can be used to only update a subregion or specific rows of the texture (for example, just the\n\t\t * first 3 rows). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\t/**\n\t\t * A callback function, called when the texture is updated (e.g., when\n\t\t * {@link Texture#needsUpdate} has been set to true and then the texture is used).\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.onUpdate = null;\n\n\t\t/**\n\t\t * An optional back reference to the textures render target.\n\t\t *\n\t\t * @type {?(RenderTarget|WebGLRenderTarget)}\n\t\t * @default null\n\t\t */\n\t\tthis.renderTarget = null;\n\n\t\t/**\n\t\t * Indicates whether a texture belongs to a render target or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isRenderTargetTexture = false;\n\n\t\t/**\n\t\t * Indicates if a texture should be handled like a texture array.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isArrayTexture = image && image.depth && image.depth > 1 ? true : false;\n\n\t\t/**\n\t\t * Indicates whether this texture should be processed by `PMREMGenerator` or not\n\t\t * (only relevant for render target textures).\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.pmremVersion = 0;\n\n\t}\n\n\t/**\n\t * The width of the texture in pixels.\n\t */\n\tget width() {\n\n\t\treturn this.source.getSize( _tempVec3 ).x;\n\n\t}\n\n\t/**\n\t * The height of the texture in pixels.\n\t */\n\tget height() {\n\n\t\treturn this.source.getSize( _tempVec3 ).y;\n\n\t}\n\n\t/**\n\t * The depth of the texture in pixels.\n\t */\n\tget depth() {\n\n\t\treturn this.source.getSize( _tempVec3 ).z;\n\n\t}\n\n\t/**\n\t * The image object holding the texture data.\n\t *\n\t * @type {?Object}\n\t */\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\t/**\n\t * Updates the texture transformation matrix from the from the properties {@link Texture#offset},\n\t * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data texture to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Returns a new texture with copied values from this instance.\n\t *\n\t * @return {Texture} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given texture to this instance.\n\t *\n\t * @param {Texture} source - The texture to copy.\n\t * @return {Texture} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.renderTarget = source.renderTarget;\n\t\tthis.isRenderTargetTexture = source.isRenderTargetTexture;\n\t\tthis.isArrayTexture = source.isArrayTexture;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this texture's properties based on `values`.\n\t * @param {Object} values - A container with texture parameters.\n\t */\n\tsetValues( values ) {\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Texture.setValues(): parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Texture.setValues(): property '${ key }' does not exist.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ( currentValue && newValue ) && ( currentValue.isVector2 && newValue.isVector2 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( ( currentValue && newValue ) && ( currentValue.isVector3 && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( ( currentValue && newValue ) && ( currentValue.isMatrix3 && newValue.isMatrix3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the texture into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized texture.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Texture#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the texture has been disposed of.\n\t\t *\n\t\t * @event Texture#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Transforms the given uv vector with the textures uv transformation matrix.\n\t *\n\t * @param {Vector2} uv - The uv vector.\n\t * @return {Vector2} The transformed uv vector.\n\t */\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the texture\n\t * must be updated in the next render. This triggers a texture upload\n\t * to the GPU and ensures correct texture parameter configuration.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the PMREM\n\t * must be regenerated.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * The default image for all textures.\n *\n * @static\n * @type {?Image}\n * @default null\n */\nTexture.DEFAULT_IMAGE = null;\n\n/**\n * The default mapping for all textures.\n *\n * @static\n * @type {number}\n * @default UVMapping\n */\nTexture.DEFAULT_MAPPING = UVMapping;\n\n/**\n * The default anisotropy value for all textures.\n *\n * @static\n * @type {number}\n * @default 1\n */\nTexture.DEFAULT_ANISOTROPY = 1;\n\n/**\n * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers\n * (labeled x, y, z and w), which can be used to represent a number of things, such as:\n *\n * - A point in 4D space.\n * - A direction and length in 4D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)`\n * and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.\n * - Any arbitrary ordered quadruplet of numbers.\n *\n * There are other things a 4D vector can be used to represent, however these\n * are the most common uses in *three.js*.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector4( 0, 1, 0, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0, 1)\n * const b = new THREE.Vector4( );\n *\n * const d = a.dot( b );\n * ```\n */\nclass Vector4 {\n\n\t/**\n\t * Constructs a new 4D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t * @param {number} [w=1] - The w value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector4.prototype.isVector4 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t\t/**\n\t\t * The w value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.w = w;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#z}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#w}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @param {number} w - The value of the w component.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's w component to the given value\n\t *\n\t * @param {number} w - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @param {number} value - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector to copy.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector4} v - The vector to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector4} v - The vector to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector4} v - The vector to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the quaternion's axis and w to the angle.\n\t *\n\t * @param {Quaternion} q - The Quaternion to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the axis of rotation and w to the angle.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is less than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector4} min - The minimum x, y and z values.\n\t * @param {Vector4} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\t\tthis.w = clamp( this.w, min.w, max.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y, z or w values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\t\tthis.w = clamp( this.w, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector4} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector4} v1 - The first vector.\n\t * @param {Vector4} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector4} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`,\n\t * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/**\n * A render target is a buffer where the video card draws pixels for a scene\n * that is being rendered in the background. It is used in different effects,\n * such as applying postprocessing to a rendered image before displaying it\n * on the screen.\n *\n * @augments EventDispatcher\n */\nclass RenderTarget extends EventDispatcher {\n\n\t/**\n\t * Render target options.\n\t *\n\t * @typedef {Object} RenderTarget~Options\n\t * @property {boolean} [generateMipmaps=false] - Whether to generate mipmaps or not.\n\t * @property {number} [magFilter=LinearFilter] - The mag filter.\n\t * @property {number} [minFilter=LinearFilter] - The min filter.\n\t * @property {number} [format=RGBAFormat] - The texture format.\n\t * @property {number} [type=UnsignedByteType] - The texture type.\n\t * @property {?string} [internalFormat=null] - The texture's internal format.\n\t * @property {number} [wrapS=ClampToEdgeWrapping] - The texture's uv wrapping mode.\n\t * @property {number} [wrapT=ClampToEdgeWrapping] - The texture's uv wrapping mode.\n\t * @property {number} [anisotropy=1] - The texture's anisotropy value.\n\t * @property {string} [colorSpace=NoColorSpace] - The texture's color space.\n\t * @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not.\n\t * @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not.\n\t * @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not.\n\t * @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not.\n\t * @property {?Texture} [depthTexture=null] - Reference to a depth texture.\n\t * @property {number} [samples=0] - The MSAA samples count.\n\t * @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.\n\t * @property {number} [depth=1] - The texture depth.\n\t * @property {boolean} [multiview=false] - Whether this target is used for multiview rendering.\n\t */\n\n\t/**\n\t * Constructs a new render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1,\n\t\t\tdepth: 1,\n\t\t\tmultiview: false\n\t\t}, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRenderTarget = true;\n\n\t\t/**\n\t\t * The width of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.width = width;\n\n\t\t/**\n\t\t * The height of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.height = height;\n\n\t\t/**\n\t\t * The depth of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.depth = options.depth;\n\n\t\t/**\n\t\t * A rectangular area inside the render target's viewport. Fragments that are\n\t\t * outside the area will be discarded.\n\t\t *\n\t\t * @type {Vector4}\n\t\t * @default (0,0,width,height)\n\t\t */\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\n\t\t/**\n\t\t * Indicates whether the scissor test should be enabled when rendering into\n\t\t * this render target or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.scissorTest = false;\n\n\t\t/**\n\t\t * A rectangular area representing the render target's viewport.\n\t\t *\n\t\t * @type {Vector4}\n\t\t * @default (0,0,width,height)\n\t\t */\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: options.depth };\n\n\t\tconst texture = new Texture( image );\n\n\t\t/**\n\t\t * An array of textures. Each color attachment is represented as a separate texture.\n\t\t * Has at least a single entry for the default color attachment.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t}\n\n\t\tthis._setTextureOptions( options );\n\n\t\t/**\n\t\t * Whether to allocate a depth buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthBuffer = options.depthBuffer;\n\n\t\t/**\n\t\t * Whether to allocate a stencil buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\t/**\n\t\t * Whether to resolve the depth buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\n\t\t/**\n\t\t * Whether to resolve the stencil buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis._depthTexture = null;\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\t/**\n\t\t * The number of MSAA samples.\n\t\t *\n\t\t * A value of `0` disables MSAA.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.samples = options.samples;\n\n\t\t/**\n\t\t * Whether to this target is used in multiview rendering.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.multiview = options.multiview;\n\n\t}\n\n\t_setTextureOptions( options = {} ) {\n\n\t\tconst values = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\tflipY: false,\n\t\t\tinternalFormat: null\n\t\t};\n\n\t\tif ( options.mapping !== undefined ) values.mapping = options.mapping;\n\t\tif ( options.wrapS !== undefined ) values.wrapS = options.wrapS;\n\t\tif ( options.wrapT !== undefined ) values.wrapT = options.wrapT;\n\t\tif ( options.wrapR !== undefined ) values.wrapR = options.wrapR;\n\t\tif ( options.magFilter !== undefined ) values.magFilter = options.magFilter;\n\t\tif ( options.minFilter !== undefined ) values.minFilter = options.minFilter;\n\t\tif ( options.format !== undefined ) values.format = options.format;\n\t\tif ( options.type !== undefined ) values.type = options.type;\n\t\tif ( options.anisotropy !== undefined ) values.anisotropy = options.anisotropy;\n\t\tif ( options.colorSpace !== undefined ) values.colorSpace = options.colorSpace;\n\t\tif ( options.flipY !== undefined ) values.flipY = options.flipY;\n\t\tif ( options.generateMipmaps !== undefined ) values.generateMipmaps = options.generateMipmaps;\n\t\tif ( options.internalFormat !== undefined ) values.internalFormat = options.internalFormat;\n\n\t\tfor ( let i = 0; i < this.textures.length; i ++ ) {\n\n\t\t\tconst texture = this.textures[ i ];\n\t\t\ttexture.setValues( values );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * The texture representing the default color attachment.\n\t *\n\t * @type {Texture}\n\t */\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tset depthTexture( current ) {\n\n\t\tif ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;\n\t\tif ( current !== null ) current.renderTarget = this;\n\n\t\tthis._depthTexture = current;\n\n\t}\n\n\t/**\n\t * Instead of saving the depth in a renderbuffer, a texture\n\t * can be used instead which is useful for further processing\n\t * e.g. in context of post-processing.\n\t *\n\t * @type {?DepthTexture}\n\t * @default null\n\t */\n\tget depthTexture() {\n\n\t\treturn this._depthTexture;\n\n\t}\n\n\t/**\n\t * Sets the size of this render target.\n\t *\n\t * @param {number} width - The width.\n\t * @param {number} height - The height.\n\t * @param {number} [depth=1] - The depth.\n\t */\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\t\t\t\tthis.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\t/**\n\t * Returns a new render target with copied values from this instance.\n\t *\n\t * @return {RenderTarget} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the settings of the given render target. This is a structural copy so\n\t * no resources are shared between render targets after the copy. That includes\n\t * all MRT textures and the depth texture.\n\t *\n\t * @param {RenderTarget} source - The render target to copy.\n\t * @return {RenderTarget} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t\t// ensure image object is not shared, see #20328\n\n\t\t\tconst image = Object.assign( {}, source.textures[ i ].image );\n\t\t\tthis.textures[ i ].source = new Source( image );\n\n\t\t}\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires RenderTarget#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\n/**\n * A render target used in context of {@link WebGLRenderer}.\n *\n * @augments RenderTarget\n */\nclass WebGLRenderTarget extends RenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\n/**\n * Creates an array of textures directly from raw buffer data.\n *\n * @augments Texture\n */\nclass DataArrayTexture extends Texture {\n\n\t/**\n\t * Constructs a new data array texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDataArrayTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image = { data, width, height, depth };\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t\t/**\n\t\t * A set of all layers which need to be updated in the texture.\n\t\t *\n\t\t * @type {Set}\n\t\t */\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\t/**\n\t * Describes that a specific layer of the texture needs to be updated.\n\t * Normally when {@link Texture#needsUpdate} is set to `true`, the\n\t * entire data texture array is sent to the GPU. Marking specific\n\t * layers will only transmit subsets of all mipmaps associated with a\n\t * specific depth in the array which is often much more performant.\n\t *\n\t * @param {number} layerIndex - The layer index that should be updated.\n\t */\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\t/**\n\t * Resets the layer updates registry.\n\t */\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\n/**\n * An array render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new array render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {DataArrayTexture}\n\t\t */\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Creates a three-dimensional texture from raw data, with parameters to\n * divide it into width, height, and depth.\n *\n * @augments Texture\n */\nclass Data3DTexture extends Texture {\n\n\t/**\n\t * Constructs a new data array texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in Data3DTexture directly.\n\t\t//\n\t\t//\tconst texture = new THREE.Data3DTexture( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isData3DTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image = { data, width, height, depth };\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\n/**\n * A 3D render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {Data3DTexture}\n\t\t */\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 3D space.\n */\nclass Box3 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox3 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector3} min - The lower boundary of the box.\n\t * @param {Vector3} max - The upper boundary of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} array - An array holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector3} center - The center of the box.\n\t * @param {Vector3} size - The x, y and z dimensions of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the world-axis-aligned bounding box for the given 3D object\n\t * (including its children), accounting for the object's, and children's,\n\t * world transforms. The function may result in a larger box than strictly necessary.\n\t *\n\t * @param {Object3D} object - The 3D object to compute the bounding box for.\n\t * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest\n\t * world-axis-aligned bounding box at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box3} box - The box to copy.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector3} point - The point that should be included by the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions. The depth of this box will be\n\t * expanded by the z component of the vector in both directions.\n\t *\n\t * @param {Vector3} vector - The vector that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given 3D object and\n\t * its children, accounting for the object's, and children's, world\n\t * transforms. The function may result in a larger box than strictly\n\t * necessary (unless the precise parameter is set to true).\n\t *\n\t * @param {Object3D} object - The 3D object that should expand the bounding box.\n\t * @param {boolean} precise - If set to `true`, the method expands the bounding box\n\t * as little as necessary at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y &&\n\t\t\tpoint.z >= this.min.z && point.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width, height and depth.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A point as a proportion of this box's width, height and depth.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y &&\n\t\t\tbox.max.z >= this.min.z && box.min.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with this bounding box.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with this bounding box.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given plane intersects with this bounding box.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether the given plane intersects with this bounding box.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given triangle intersects with this bounding box.\n\t *\n\t * @param {Triangle} triangle - The triangle to test.\n\t * @return {boolean} Whether the given triangle intersects with this bounding box.\n\t */\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector3} point - The point to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Returns a bounding sphere that encloses this bounding box.\n\t *\n\t * @param {Sphere} target - The target sphere that is used to store the method's result.\n\t * @return {Sphere} The bounding sphere that encloses this bounding box.\n\t */\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box3} box - The bounding box to intersect with.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box3} box - The bounding box that will be unioned with this instance.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this bounding box by the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 3D space.\n\t *\n\t * @param {Vector3} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box3} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding box.\n\t *\n\t * @return {Object} Serialized structure with fields representing the object state.\n\t */\n\ttoJSON() {\n\n\t\treturn {\n\t\t\tmin: this.min.toArray(),\n\t\t\tmax: this.max.toArray()\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding box.\n\t *\n\t * @param {Object} json - The serialized json to set the box from.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.min.fromArray( json.min );\n\t\tthis.max.fromArray( json.max );\n\t\treturn this;\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical 3D sphere defined by a center and radius. This class is mainly\n * used as a Bounding Sphere for 3D objects.\n */\nclass Sphere {\n\n\t/**\n\t * Constructs a new sphere.\n\t *\n\t * @param {Vector3} [center=(0,0,0)] - The center of the sphere\n\t * @param {number} [radius=-1] - The radius of the sphere.\n\t */\n\tconstructor( center = new Vector3(), radius = -1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphere = true;\n\n\t\t/**\n\t\t * The center of the sphere\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.center = center;\n\n\t\t/**\n\t\t * The radius of the sphere.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.radius = radius;\n\n\t}\n\n\t/**\n\t * Sets the sphere's components by copying the given values.\n\t *\n\t * @param {Vector3} center - The center.\n\t * @param {number} radius - The radius.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the minimum bounding sphere for list of points.\n\t * If the optional center point is given, it is used as the sphere's\n\t * center. Otherwise, the center of the axis-aligned bounding box\n\t * encompassing the points is calculated.\n\t *\n\t * @param {Array} points - A list of points in 3D space.\n\t * @param {Vector3} [optionalCenter] - The center of the sphere.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given sphere to this instance.\n\t *\n\t * @param {Sphere} sphere - The sphere to copy.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the sphere is empty (the radius set to a negative number).\n\t *\n\t * Spheres with a radius of `0` contain only their center point and are not\n\t * considered to be empty.\n\t *\n\t * @return {boolean} Whether this sphere is empty or not.\n\t */\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\t/**\n\t * Makes this sphere empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = -1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere contains the given point inclusive of\n\t * the surface of the sphere.\n\t *\n\t * @param {Vector3} point - The point to check.\n\t * @return {boolean} Whether this sphere contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\t/**\n\t * Returns the closest distance from the boundary of the sphere to the\n\t * given point. If the sphere contains the point, the distance will\n\t * be negative.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The distance to the point.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test.\n\t * @return {boolean} Whether this sphere intersects with the given one or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to test.\n\t * @return {boolean} Whether this sphere intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether this sphere intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\t/**\n\t * Clamps a point within the sphere. If the point is outside the sphere, it\n\t * will clamp it to the closest point on the edge of the sphere. Points\n\t * already inside the sphere will not be affected.\n\t *\n\t * @param {Vector3} point - The plane to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a bounding box that encloses this sphere.\n\t *\n\t * @param {Box3} target - The target box that is used to store the method's result.\n\t * @return {Box3} The bounding box that encloses this sphere.\n\t */\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Transforms this sphere with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the sphere's center by the given offset.\n\t *\n\t * @param {Vector3} offset - The offset.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this sphere to include the given point.\n\t *\n\t * @param {Vector3} point - The point to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this sphere to enclose both the original sphere and the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere is equal with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test for equality.\n\t * @return {boolean} Whether this bounding sphere is equal with the given one.\n\t */\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\t/**\n\t * Returns a new sphere with copied values from this instance.\n\t *\n\t * @return {Sphere} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding sphere.\n\t *\n\t * @return {Object} Serialized structure with fields representing the object state.\n\t */\n\ttoJSON() {\n\n\t\treturn {\n\t\t\tradius: this.radius,\n\t\t\tcenter: this.center.toArray()\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding sphere.\n\t *\n\t * @param {Object} json - The serialized json to set the sphere from.\n\t * @return {Box3} A reference to this bounding sphere.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.radius = json.radius;\n\t\tthis.center.fromArray( json.center );\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A ray that emits from an origin in a certain direction. The class is used by\n * {@link Raycaster} to assist with raycasting. Raycasting is used for\n * mouse picking (working out what objects in the 3D space the mouse is over)\n * amongst other things.\n */\nclass Ray {\n\n\t/**\n\t * Constructs a new ray.\n\t *\n\t * @param {Vector3} [origin=(0,0,0)] - The origin of the ray.\n\t * @param {Vector3} [direction=(0,0,-1)] - The (normalized) direction of the ray.\n\t */\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, -1 ) ) {\n\n\t\t/**\n\t\t * The origin of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.origin = origin;\n\n\t\t/**\n\t\t * The (normalized) direction of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.direction = direction;\n\n\t}\n\n\t/**\n\t * Sets the ray's components by copying the given values.\n\t *\n\t * @param {Vector3} origin - The origin.\n\t * @param {Vector3} direction - The direction.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given ray to this instance.\n\t *\n\t * @param {Ray} ray - The ray to copy.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector that is located at a given distance along this ray.\n\t *\n\t * @param {number} t - The distance along the ray to retrieve a position for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A position on the ray.\n\t */\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\t/**\n\t * Adjusts the direction of the ray to point at the given vector in world space.\n\t *\n\t * @param {Vector3} v - The target position.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Shift the origin of this ray along its direction by the given distance.\n\t *\n\t * @param {number} t - The distance along the ray to interpolate.\n\t * @return {Ray} A reference to this ray.\n\t */\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the point along this ray that is closest to the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to get the closet location on the ray for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on this ray.\n\t */\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\t/**\n\t * Returns the distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the squared distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\t/**\n\t * Returns the squared distance between this ray and the given line segment.\n\t *\n\t * @param {Vector3} v0 - The start point of the line segment.\n\t * @param {Vector3} v1 - The end point of the line segment.\n\t * @param {Vector3} [optionalPointOnRay] - When provided, it receives the point on this ray that is closest to the segment.\n\t * @param {Vector3} [optionalPointOnSegment] - When provided, it receives the point on the line segment that is closest to this ray.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given sphere, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @return {boolean} Whether this ray intersects with the given sphere or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tif ( sphere.radius < 0 ) return false; // handle empty spheres, see #31187\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Computes the distance from the ray's origin to the given plane. Returns `null` if the ray\n\t * does not intersect with the plane.\n\t *\n\t * @param {Plane} plane - The plane to compute the distance to.\n\t * @return {?number} Whether this ray intersects with the given sphere or not.\n\t */\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given plane, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @return {boolean} Whether this ray intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given bounding box, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this ray intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given triangle, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Vector3} a - The first vertex of the triangle.\n\t * @param {Vector3} b - The second vertex of the triangle.\n\t * @param {Vector3} c - The third vertex of the triangle.\n\t * @param {boolean} backfaceCulling - Whether to use backface culling or not.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = -1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\t/**\n\t * Transforms this ray with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The transformation matrix.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray is equal with the given one.\n\t *\n\t * @param {Ray} ray - The ray to test for equality.\n\t * @return {boolean} Whether this ray is equal with the given one.\n\t */\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\t/**\n\t * Returns a new ray with copied values from this instance.\n\t *\n\t * @return {Ray} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 4x4 matrix.\n *\n * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.\n * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices}\n *\n * This allows a 3D vector representing a point in 3D space to undergo\n * transformations such as translation, rotation, shear, scale, reflection,\n * orthogonal or perspective projection and so on, by being multiplied by the\n * matrix. This is known as `applying` the matrix to the vector.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix4();\n * m.set( 11, 12, 13, 14,\n * 21, 22, 23, 24,\n * 31, 32, 33, 34,\n * 41, 42, 43, 44 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31, 41,\n * 12, 22, 32, 42,\n * 13, 23, 33, 43,\n * 14, 24, 34, 44 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix4 {\n\n\t/**\n\t * Constructs a new 4x4 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 4x4 identity matrix.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix4} m - The matrix to copy.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the translation component of the given matrix\n\t * into this matrix's translation component.\n\t *\n\t * @param {Matrix4} m - The matrix to copy the translation component.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given basis vectors to this matrix.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the rotation component of the given matrix\n\t * into this matrix's rotation component.\n\t *\n\t * Note: This method does not support reflection matrices.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractRotation( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component (the upper left 3x3 matrix) of this matrix to\n\t * the rotation specified by the given Euler angles. The rest of\n\t * the matrix is set to the identity. Depending on the {@link Euler#order},\n\t * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix}\n\t * for a complete list.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component of this matrix to the rotation specified by\n\t * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion}\n\t * The rest of the matrix is set to the identity.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\t/**\n\t * Sets the rotation component of the transformation matrix, looking from `eye` towards\n\t * `target`, and oriented by the up-direction.\n\t *\n\t * @param {Vector3} eye - The eye vector.\n\t * @param {Vector3} target - The target vector.\n\t * @param {Vector3} up - The up vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 4x4 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix4} a - The first matrix.\n\t * @param {Matrix4} b - The second matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the position component for this matrix from the given vector,\n\t * without affecting the rest of the matrix.\n\t *\n\t * @param {number|Vector3} x - The x component of the vector or alternatively the vector object.\n\t * @param {number} y - The y component of the vector.\n\t * @param {number} z - The z component of the vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the columns of this matrix by the given vector.\n\t *\n\t * @param {Vector3} v - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the maximum scale value of the three axes.\n\t *\n\t * @return {number} The maximum scale.\n\t */\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\t/**\n\t * Sets this matrix as a translation transform from the given vector.\n\t *\n\t * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @param {number} z - The amount to translate in the z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the X axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Y axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Z axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the given axis by\n\t * the given angle.\n\t *\n\t * This is a somewhat controversial but mathematically sound alternative to\n\t * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}.\n\t *\n\t * @param {Vector3} axis - The normalized rotation axis.\n\t * @param {number} angle - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a scale transformation.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @param {number} z - The amount to scale in the Z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a shear transformation.\n\t *\n\t * @param {number} xy - The amount to shear X by Y.\n\t * @param {number} xz - The amount to shear X by Z.\n\t * @param {number} yx - The amount to shear Y by X.\n\t * @param {number} yz - The amount to shear Y by Z.\n\t * @param {number} zx - The amount to shear Z by X.\n\t * @param {number} zy - The amount to shear Z by Y.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the transformation composed of the given position,\n\t * rotation (Quaternion) and scale.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Decomposes this matrix into its position, rotation and scale components\n\t * and provides the result in the given objects.\n\t *\n\t * Note: Not all matrices are decomposable in this way. For example, if an\n\t * object has a non-uniformly scaled parent, then the object's world matrix\n\t * may not be decomposable, and this method may not be appropriate.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a perspective projection matrix. This is used internally by\n\t * {@link PerspectiveCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tc = near / ( far - near );\n\t\t\td = ( far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\t\td = ( -2 * far * near ) / ( far - near );\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tc = - far / ( far - near );\n\t\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = -1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a orthographic projection matrix. This is used internally by\n\t * {@link OrthographicCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = 2 / ( right - left );\n\t\tconst y = 2 / ( top - bottom );\n\n\t\tconst a = - ( right + left ) / ( right - left );\n\t\tconst b = - ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tc = 1 / ( far - near );\n\t\t\td = far / ( far - near );\n\n\t\t} else {\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tc = -2 / ( far - near );\n\t\t\t\td = - ( far + near ) / ( far - near );\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tc = -1 / ( far - near );\n\t\t\t\td = - near / ( far - near );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\tte[ 0 ] = x;\t\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = a;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = y;\t\tte[ 9 ] = 0; \t\tte[ 13 ] = b;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = c;\t\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix4} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\n/**\n * A class representing Euler angles.\n *\n * Euler angles describe a rotational transformation by rotating an object on\n * its various axes in specified amounts per axis, and a specified axis\n * order.\n *\n * Iterating through an instance will yield its components (x, y, z,\n * order) in the corresponding order.\n *\n * ```js\n * const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );\n * const b = new THREE.Vector3( 1, 0, 1 );\n * b.applyEuler(a);\n * ```\n */\nclass Euler {\n\n\t/**\n\t * Constructs a new euler instance.\n\t *\n\t * @param {number} [x=0] - The angle of the x axis in radians.\n\t * @param {number} [y=0] - The angle of the y axis in radians.\n\t * @param {number} [z=0] - The angle of the z axis in radians.\n\t * @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\t/**\n\t * The angle of the x axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the y axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the z axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * A string representing the order that the rotations are applied.\n\t *\n\t * @type {string}\n\t * @default 'XYZ'\n\t */\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the Euler components.\n\t *\n\t * @param {number} x - The angle of the x axis in radians.\n\t * @param {number} y - The angle of the y axis in radians.\n\t * @param {number} z - The angle of the z axis in radians.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new Euler instance with copied values from this instance.\n\t *\n\t * @return {Euler} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\t/**\n\t * Copies the values of the given Euler instance to this instance.\n\t *\n\t * @param {Euler} euler - The Euler instance to copy.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a pure rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a normalized quaternion.\n\t *\n\t * @param {Quaternion} q - A normalized Quaternion.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from the given vector.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\t/**\n\t * Resets the euler angle with a new order by creating a quaternion from this\n\t * euler angle and then setting this euler angle with the quaternion and the\n\t * new order.\n\t *\n\t * Warning: This discards revolution information.\n\t *\n\t * @param {string} [newOrder] - A string representing the new order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\treorder( newOrder ) {\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\t/**\n\t * Returns `true` if this Euler instance is equal with the given one.\n\t *\n\t * @param {Euler} euler - The Euler instance to test for equality.\n\t * @return {boolean} Whether this Euler instance is equal with the given one.\n\t */\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\t/**\n\t * Sets this Euler instance's components to values from the given array. The first three\n\t * entries of the array are assign to the x,y and z components. An optional fourth entry\n\t * defines the Euler order.\n\t *\n\t * @param {Array} array - An array holding the Euler component values.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this Euler instance to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the Euler components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The Euler components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\n/**\n * The default Euler angle order.\n *\n * @static\n * @type {string}\n * @default 'XYZ'\n */\nEuler.DEFAULT_ORDER = 'XYZ';\n\n/**\n * A layers object assigns an 3D object to 1 or more of 32\n * layers numbered `0` to `31` - internally the layers are stored as a\n * bit mask], and by default all 3D objects are a member of layer `0`.\n *\n * This can be used to control visibility - an object must share a layer with\n * a camera to be visible when that camera's view is\n * rendered.\n *\n * All classes that inherit from {@link Object3D} have an `layers` property which\n * is an instance of this class.\n */\nclass Layers {\n\n\t/**\n\t * Constructs a new layers instance, with membership\n\t * initially set to layer `0`.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * A bit mask storing which of the 32 layers this layers object is currently\n\t\t * a member of.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\t/**\n\t * Sets membership to the given layer, and remove membership all other layers.\n\t *\n\t * @param {number} layer - The layer to set.\n\t */\n\tset( layer ) {\n\n\t\tthis.mask = ( 1 << layer | 0 ) >>> 0;\n\n\t}\n\n\t/**\n\t * Adds membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to enable.\n\t */\n\tenable( layer ) {\n\n\t\tthis.mask |= 1 << layer | 0;\n\n\t}\n\n\t/**\n\t * Adds membership to all layers.\n\t */\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\t/**\n\t * Toggles the membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to toggle.\n\t */\n\ttoggle( layer ) {\n\n\t\tthis.mask ^= 1 << layer | 0;\n\n\t}\n\n\t/**\n\t * Removes membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to enable.\n\t */\n\tdisable( layer ) {\n\n\t\tthis.mask &= ~ ( 1 << layer | 0 );\n\n\t}\n\n\t/**\n\t * Removes the membership from all layers.\n\t */\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\t/**\n\t * Returns `true` if this and the given layers object have at least one\n\t * layer in common.\n\t *\n\t * @param {Layers} layers - The layers to test.\n\t * @return {boolean } Whether this and the given layers object have at least one layer in common or not.\n\t */\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given layer is enabled.\n\t *\n\t * @param {number} layer - The layer to test.\n\t * @return {boolean } Whether the given layer is enabled or not.\n\t */\n\tisEnabled( layer ) {\n\n\t\treturn ( this.mask & ( 1 << layer | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\n/**\n * Fires when the object has been added to its parent object.\n *\n * @event Object3D#added\n * @type {Object}\n */\nconst _addedEvent = { type: 'added' };\n\n/**\n * Fires when the object has been removed from its parent object.\n *\n * @event Object3D#removed\n * @type {Object}\n */\nconst _removedEvent = { type: 'removed' };\n\n/**\n * Fires when a new child object has been added.\n *\n * @event Object3D#childadded\n * @type {Object}\n */\nconst _childaddedEvent = { type: 'childadded', child: null };\n\n/**\n * Fires when a child object has been removed.\n *\n * @event Object3D#childremoved\n * @type {Object}\n */\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\n/**\n * This is the base class for most objects in three.js and provides a set of\n * properties and methods for manipulating objects in 3D space.\n *\n * @augments EventDispatcher\n */\nclass Object3D extends EventDispatcher {\n\n\t/**\n\t * Constructs a new 3D object.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isObject3D = true;\n\n\t\t/**\n\t\t * The ID of the 3D object.\n\t\t *\n\t\t * @name Object3D#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\t/**\n\t\t * The UUID of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Object3D';\n\n\t\t/**\n\t\t * A reference to the parent object.\n\t\t *\n\t\t * @type {?Object3D}\n\t\t * @default null\n\t\t */\n\t\tthis.parent = null;\n\n\t\t/**\n\t\t * An array holding the child 3D objects of this instance.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.children = [];\n\n\t\t/**\n\t\t * Defines the `up` direction of the 3D object which influences\n\t\t * the orientation via methods like {@link Object3D#lookAt}.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * Represents the object's local position.\n\t\t\t *\n\t\t\t * @name Object3D#position\n\t\t\t * @type {Vector3}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Euler angles, in radians.\n\t\t\t *\n\t\t\t * @name Object3D#rotation\n\t\t\t * @type {Euler}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Quaternions.\n\t\t\t *\n\t\t\t * @name Object3D#quaternion\n\t\t\t * @type {Quaternion}\n\t\t\t */\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local scale.\n\t\t\t *\n\t\t\t * @name Object3D#scale\n\t\t\t * @type {Vector3}\n\t\t\t * @default (1,1,1)\n\t\t\t */\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's model-view matrix.\n\t\t\t *\n\t\t\t * @name Object3D#modelViewMatrix\n\t\t\t * @type {Matrix4}\n\t\t\t */\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's normal matrix.\n\t\t\t *\n\t\t\t * @name Object3D#normalMatrix\n\t\t\t * @type {Matrix3}\n\t\t\t */\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in local space.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in world space.\n\t\t * If the 3D object has no parent, then it's identical to the local transformation matrix\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the local matrix from position,\n\t\t * rotation and scale every frame.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the world matrix from the current local\n\t\t * matrix and the object's transformation hierarchy.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\n\t\t/**\n\t\t * When set to `true`, it calculates the world matrix in that frame and resets this property\n\t\t * to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t/**\n\t\t * The layer membership of the 3D object. The 3D object is only visible if it has\n\t\t * at least one layer in common with the camera in use. This property can also be\n\t\t * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.\n\t\t *\n\t\t * @type {Layers}\n\t\t */\n\t\tthis.layers = new Layers();\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered into shadow maps.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.castShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is affected by shadows in the scene.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.receiveShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is honored by view frustum culling.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.frustumCulled = true;\n\n\t\t/**\n\t\t * This value allows the default rendering order of scene graph objects to be\n\t\t * overridden although opaque and transparent objects remain sorted independently.\n\t\t * When this property is set for an instance of {@link Group},all descendants\n\t\t * objects will be sorted and rendered together. Sorting is from lowest to highest\n\t\t * render order.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.renderOrder = 0;\n\n\t\t/**\n\t\t * An array holding the animation clips of the 3D object.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.animations = [];\n\n\t\t/**\n\t\t * Custom depth material to be used when rendering to the depth map. Can only be used\n\t\t * in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight},\n\t\t * if you are modifying vertex positions in the vertex shader you must specify a custom depth\n\t\t * material for proper shadows.\n\t\t *\n\t\t * Only relevant in context of {@link WebGLRenderer}.\n\t\t *\n\t\t * @type {(Material|undefined)}\n\t\t * @default undefined\n\t\t */\n\t\tthis.customDepthMaterial = undefined;\n\n\t\t/**\n\t\t * Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}.\n\t\t *\n\t\t * Only relevant in context of {@link WebGLRenderer}.\n\t\t *\n\t\t * @type {(Material|undefined)}\n\t\t * @default undefined\n\t\t */\n\t\tthis.customDistanceMaterial = undefined;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the 3D object. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * Applies the given transformation matrix to the object and updates the object's position,\n\t * rotation and scale.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\t/**\n\t * Applies a rotation represented by given the quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as an axis/angle couple to the 3D object.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t */\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as Euler angles to the 3D object.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t */\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as rotation matrix to the 3D object.\n\t *\n\t * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be\n\t * a pure rotation matrix (i.e, unscaled).\n\t */\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as a Quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The Quaternion\n\t */\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in world space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its X axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Y axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Z axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along the given axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its X-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Y-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Z-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's local space to world space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's word space to local space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\t/**\n\t * Rotates the object to face a point in world space.\n\t *\n\t * This method does not support objects having non-uniformly-scaled parent(s).\n\t *\n\t * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space\n\t * @param {number} [y] - The y coordinate in world space.\n\t * @param {number} [z] - The z coordinate in world space.\n\t */\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child to this 3D object. An arbitrary number of\n\t * objects may be added. Any current parent on an object passed in here will be\n\t * removed, since an object can have at most one parent.\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to add.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the given 3D object as child from this 3D object.\n\t * An arbitrary number of objects may be removed.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @param {Object3D} object - The 3D object to remove.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== -1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes this 3D object from its current parent.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes all child objects.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child of this 3D object, while maintaining the object's world\n\t * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to attach.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching ID.\n\t *\n\t * @param {number} id - The id.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching name.\n\t *\n\t * @param {string} name - The name.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns all 3D objects with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @param {Array} result - The method stores the result in this array.\n\t * @return {Array} The found 3D objects.\n\t */\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the position of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's position in world space.\n\t */\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Returns a Quaternion representing the position of the 3D object in world space.\n\t *\n\t * @param {Quaternion} target - The target Quaternion the result is stored to.\n\t * @return {Quaternion} The 3D object's rotation in world space.\n\t */\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the scale of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's scale in world space.\n\t */\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\t/**\n\t * Abstract method to get intersections between a casted ray and this\n\t * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}\n\t * implement this method in order to use raycasting.\n\t *\n\t * @abstract\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - An array holding the result of the method.\n\t */\n\traycast( /* raycaster, intersects */ ) {}\n\n\t/**\n\t * Executes the callback on this 3D object and all descendants.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.\n\t * Descendants of invisible 3D objects are not traversed.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in local space by computing it from the current\n\t * position, rotation and scale values.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in world space of this 3D objects and its descendants.\n\t *\n\t * To ensure correct results, this method also recomputes the 3D object's transformation matrix in\n\t * local space. The computation of the local and world matrix can be controlled with the\n\t * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both\n\t * `true` by default. Set these flags to `false` if you need more control over the update matrix process.\n\t *\n\t * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even\n\t * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.\n\t */\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the\n\t * update of ancestor and descendant nodes.\n\t *\n\t * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.\n\t * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.\n\t */\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// make sure descendants are updated\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the 3D object into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized 3D object.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.geometryInfo = this._geometryInfo.map( info => ( {\n\t\t\t\t...info,\n\t\t\t\tboundingBox: info.boundingBox ? info.boundingBox.toJSON() : undefined,\n\t\t\t\tboundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : undefined\n\t\t\t} ) );\n\t\t\tobject.instanceInfo = this._instanceInfo.map( info => ( { ...info } ) );\n\n\t\t\tobject.availableInstanceIds = this._availableInstanceIds.slice();\n\t\t\tobject.availableGeometryIds = this._availableGeometryIds.slice();\n\n\t\t\tobject.nextIndexStart = this._nextIndexStart;\n\t\t\tobject.nextVertexStart = this._nextVertexStart;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tobject.indirectTexture = this._indirectTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\t\tobject.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = this.boundingSphere.toJSON();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = this.boundingBox.toJSON();\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new 3D object with copied values from this instance.\n\t *\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.\n\t * @return {Object3D} A clone of this instance.\n\t */\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\t/**\n\t * Copies the values of the given 3D object to this instance.\n\t *\n\t * @param {Object3D} source - The 3D object to copy.\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * The default up direction for objects, also used as the default\n * position for {@link DirectionalLight} and {@link HemisphereLight}.\n *\n * @static\n * @type {Vector3}\n * @default (0,1,0)\n */\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\n\n/**\n * The default setting for {@link Object3D#matrixAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\n\n/**\n * The default setting for {@link Object3D#matrixWorldAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nconst _v40 = /*@__PURE__*/ new Vector4();\nconst _v41 = /*@__PURE__*/ new Vector4();\nconst _v42 = /*@__PURE__*/ new Vector4();\n\n/**\n * A geometric triangle as defined by three vectors representing its three corners.\n */\nclass Triangle {\n\n\t/**\n\t * Constructs a new triangle.\n\t *\n\t * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle.\n\t * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle.\n\t * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle.\n\t */\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\t/**\n\t\t * The first corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.a = a;\n\n\t\t/**\n\t\t * The second corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.b = b;\n\n\t\t/**\n\t\t * The third corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.c = c;\n\n\t}\n\n\t/**\n\t * Computes the normal vector of a triangle.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} p1 - The first corner of the triangle.\n\t * @param {Vector3} p2 - The second corner of the triangle.\n\t * @param {Vector3} p3 - The third corner of the triangle.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given attribute and indices.\n\t *\n\t * @param {BufferAttribute} attr - The attribute to interpolate.\n\t * @param {number} i1 - Index of first vertex.\n\t * @param {number} i2 - Index of second vertex.\n\t * @param {number} i3 - Index of third vertex.\n\t * @param {Vector3} barycoord - The barycoordinate value to use to interpolate.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The interpolated attribute value.\n\t */\n\tstatic getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {\n\n\t\t_v40.setScalar( 0 );\n\t\t_v41.setScalar( 0 );\n\t\t_v42.setScalar( 0 );\n\n\t\t_v40.fromBufferAttribute( attr, i1 );\n\t\t_v41.fromBufferAttribute( attr, i2 );\n\t\t_v42.fromBufferAttribute( attr, i3 );\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( _v40, barycoord.x );\n\t\ttarget.addScaledVector( _v41, barycoord.y );\n\t\ttarget.addScaledVector( _v42, barycoord.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given values.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given array values.\n\t *\n\t * @param {Array} points - An array with 3D points.\n\t * @param {number} i0 - The array index representing the first corner of the triangle.\n\t * @param {number} i1 - The array index representing the second corner of the triangle.\n\t * @param {number} i2 - The array index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given attribute values.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute with 3D points data.\n\t * @param {number} i0 - The attribute index representing the first corner of the triangle.\n\t * @param {number} i1 - The attribute index representing the second corner of the triangle.\n\t * @param {number} i2 - The attribute index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new triangle with copied values from this instance.\n\t *\n\t * @return {Triangle} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given triangle to this instance.\n\t *\n\t * @param {Triangle} triangle - The triangle to copy.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the area of the triangle.\n\t *\n\t * @return {number} The triangle's area.\n\t */\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\t/**\n\t * Computes the midpoint of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's midpoint.\n\t */\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\t/**\n\t * Computes the normal of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes a plane the triangle lies within.\n\t *\n\t * @param {Plane} target - The target vector that is used to store the method's result.\n\t * @return {Plane} The plane the triangle lies within.\n\t */\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this triangle intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\t/**\n\t * Returns the closest point on the triangle to the given point.\n\t *\n\t * @param {Vector3} p - The point to compute the closest point for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the triangle.\n\t */\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle is equal with the given one.\n\t *\n\t * @param {Triangle} triangle - The triangle to test for equality.\n\t * @return {boolean} Whether this triangle is equal with the given one.\n\t */\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\n/**\n * A Color instance is represented by RGB components in the linear working\n * color space, which defaults to `LinearSRGBColorSpace`. Inputs\n * conventionally using `SRGBColorSpace` (such as hexadecimals and CSS\n * strings) are converted to the working color space automatically.\n *\n * ```js\n * // converted automatically from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setHex( 0x112233 );\n * ```\n * Source color spaces may be specified explicitly, to ensure correct conversions.\n * ```js\n * // assumed already LinearSRGBColorSpace; no conversion\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );\n *\n * // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );\n * ```\n * If THREE.ColorManagement is disabled, no conversions occur. For details,\n * see Color management. Iterating through a Color instance will yield\n * its components (r, g, b) in the corresponding order. A Color can be initialised\n * in any of the following ways:\n * ```js\n * //empty constructor - will default white\n * const color1 = new THREE.Color();\n *\n * //Hexadecimal color (recommended)\n * const color2 = new THREE.Color( 0xff0000 );\n *\n * //RGB string\n * const color3 = new THREE.Color(\"rgb(255, 0, 0)\");\n * const color4 = new THREE.Color(\"rgb(100%, 0%, 0%)\");\n *\n * //X11 color name - all 140 color names are supported.\n * //Note the lack of CamelCase in the name\n * const color5 = new THREE.Color( 'skyblue' );\n * //HSL string\n * const color6 = new THREE.Color(\"hsl(0, 100%, 50%)\");\n *\n * //Separate RGB values between 0 and 1\n * const color7 = new THREE.Color( 1, 0, 0 );\n * ```\n */\nclass Color {\n\n\t/**\n\t * Constructs a new color.\n\t *\n\t * Note that standard method of specifying color in three.js is with a hexadecimal triplet,\n\t * and that method is used throughout the rest of the documentation.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t */\n\tconstructor( r, g, b ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isColor = true;\n\n\t\t/**\n\t\t * The red component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.r = 1;\n\n\t\t/**\n\t\t * The green component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.g = 1;\n\n\t\t/**\n\t\t * The blue component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\t/**\n\t * Sets the colors's components from the given values.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t * @return {Color} A reference to this color.\n\t */\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the colors's components to the given scalar value.\n\t *\n\t * @param {number} scalar - The scalar value.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a hexadecimal value.\n\t *\n\t * @param {number} hex - The hexadecimal value.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} r - Red channel value between `0.0` and `1.0`.\n\t * @param {number} g - Green channel value between `0.0` and `1.0`.\n\t * @param {number} b - Blue channel value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,\n\t * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or\n\t * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -\n\t * all 140 color names are supported).\n\t *\n\t * @param {string} style - Color as a CSS-style string.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a color name. Faster than {@link Color#setStyle} if\n\t * you don't need the other CSS-style formats.\n\t *\n\t * For convenience, the list of names is exposed in `Color.NAMES` as a hash.\n\t * ```js\n\t * Color.NAMES.aliceblue // returns 0xF0F8FF\n\t * ```\n\t *\n\t * @param {string} style - The color name.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new color with copied values from this instance.\n\t *\n\t * @return {Color} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\t/**\n\t * Copies the values of the given color to this instance.\n\t *\n\t * @param {Color} color - The color to copy.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {number} The hexadecimal value.\n\t */\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The hexadecimal value as a string.\n\t */\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( -6 );\n\n\t}\n\n\t/**\n\t * Converts the colors RGB values into the HSL format and stores them into the\n\t * given target object.\n\t *\n\t * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {{h:number,s:number,l:number}} The HSL representation of this color.\n\t */\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the RGB values of this color and stores them into the given target object.\n\t *\n\t * @param {Color} target - The target color that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} The RGB representation of this color.\n\t */\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The CSS representation of this color.\n\t */\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\t/**\n\t * Adds the given HSL values to this color's values.\n\t * Internally, this converts the color's RGB values to HSL, adds HSL\n\t * and then converts the color back to RGB.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @return {Color} A reference to this color.\n\t */\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given color to the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to add.\n\t * @return {Color} A reference to this color.\n\t */\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given colors and stores the result in this instance.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @return {Color} A reference to this color.\n\t */\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Color} A reference to this color.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the RGB values of the given color from the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to subtract.\n\t * @return {Color} A reference to this color.\n\t */\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the RGB values of the given color with the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's RGB values toward the RGB values of the\n\t * given color. The alpha argument can be thought of as the ratio between\n\t * the two colors, where `0.0` is this color and `1.0` is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given colors and stores the result in this instance.\n\t * The alpha argument can be thought of as the ratio between the two colors, where `0.0`\n\t * is the first and `1.0` is the second color.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's HSL values toward the HSL values of the\n\t * given color. It differs from {@link Color#lerp} by not interpolating straight\n\t * from one color to the other, but instead going through all the hues in between\n\t * those two colors. The alpha argument can be thought of as the ratio between\n\t * the two colors, where 0.0 is this color and 1.0 is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the color's RGB components from the given 3D vector.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this color with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix.\n\t * @return {Color} A reference to this color.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this color is equal with the given one.\n\t *\n\t * @param {Color} c - The color to test for equality.\n\t * @return {boolean} Whether this bounding color is equal with the given one.\n\t */\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\t/**\n\t * Sets this color's RGB components from the given array.\n\t *\n\t * @param {Array} array - An array holding the RGB values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the RGB components of this color to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the color components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The color components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this color from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding color data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the color\n\t * as a hexadecimal value.\n\t *\n\t * @return {number} The hexadecimal value.\n\t */\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\n/**\n * A dictionary with X11 color names.\n *\n * Note that multiple words such as Dark Orange become the string 'darkorange'.\n *\n * @static\n * @type {Object}\n */\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\n/**\n * Abstract base class for materials.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Material extends EventDispatcher {\n\n\t/**\n\t * Constructs a new material.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMaterial = true;\n\n\t\t/**\n\t\t * The ID of the material.\n\t\t *\n\t\t * @name Material#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Material';\n\n\t\t/**\n\t\t * Defines the blending type of the material.\n\t\t *\n\t\t * It must be set to `CustomBlending` if custom blending properties like\n\t\t * {@link Material#blendSrc}, {@link Material#blendDst} or {@link Material#blendEquation}\n\t\t * should have any effect.\n\t\t *\n\t\t * @type {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending)}\n\t\t * @default NormalBlending\n\t\t */\n\t\tthis.blending = NormalBlending;\n\n\t\t/**\n\t\t * Defines which side of faces will be rendered - front, back or both.\n\t\t *\n\t\t * @type {(FrontSide|BackSide|DoubleSide)}\n\t\t * @default FrontSide\n\t\t */\n\t\tthis.side = FrontSide;\n\n\t\t/**\n\t\t * If set to `true`, vertex colors should be used.\n\t\t *\n\t\t * The engine supports RGB and RGBA vertex colors depending on whether a three (RGB) or\n\t\t * four (RGBA) component color buffer attribute is used.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.vertexColors = false;\n\n\t\t/**\n\t\t * Defines how transparent the material is.\n\t\t * A value of `0.0` indicates fully transparent, `1.0` is fully opaque.\n\t\t *\n\t\t * If the {@link Material#transparent} is not set to `true`,\n\t\t * the material will remain fully opaque and this value will only affect its color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.opacity = 1;\n\n\t\t/**\n\t\t * Defines whether this material is transparent. This has an effect on\n\t\t * rendering as transparent objects need special treatment and are rendered\n\t\t * after non-transparent objects.\n\t\t *\n\t\t * When set to true, the extent to which the material is transparent is\n\t\t * controlled by {@link Material#opacity}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.transparent = false;\n\n\t\t/**\n\t\t * Enables alpha hashed transparency, an alternative to {@link Material#transparent} or\n\t\t * {@link Material#alphaTest}. The material will not be rendered if opacity is lower than\n\t\t * a random threshold. Randomization introduces some grain or noise, but approximates alpha\n\t\t * blending without the associated problems of sorting. Using TAA can reduce the resulting noise.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaHash = false;\n\n\t\t/**\n\t\t * Defines the blending source factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default SrcAlphaFactor\n\t\t */\n\t\tthis.blendSrc = SrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending destination factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default OneMinusSrcAlphaFactor\n\t\t */\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending equation.\n\t\t *\n\t\t * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default AddEquation\n\t\t */\n\t\tthis.blendEquation = AddEquation;\n\n\t\t/**\n\t\t * Defines the blending source alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendSrcAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending destination alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendDstAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending equation of the alpha channel.\n\t\t *\n\t\t * @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendEquationAlpha = null;\n\n\t\t/**\n\t\t * Represents the RGB values of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantColor` or `OneMinusConstantColor`.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\n\t\t/**\n\t\t * Represents the alpha value of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantAlpha` or `OneMinusConstantAlpha`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.blendAlpha = 0;\n\n\t\t/**\n\t\t * Defines the depth function.\n\t\t *\n\t\t * @type {(NeverDepth|AlwaysDepth|LessDepth|LessEqualDepth|EqualDepth|GreaterEqualDepth|GreaterDepth|NotEqualDepth)}\n\t\t * @default LessEqualDepth\n\t\t */\n\t\tthis.depthFunc = LessEqualDepth;\n\n\t\t/**\n\t\t * Whether to have depth test enabled when rendering this material.\n\t\t * When the depth test is disabled, the depth write will also be implicitly disabled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthTest = true;\n\n\t\t/**\n\t\t * Whether rendering this material has any effect on the depth buffer.\n\t\t *\n\t\t * When drawing 2D overlays it can be useful to disable the depth writing in\n\t\t * order to layer several things together without creating z-index artifacts.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthWrite = true;\n\n\t\t/**\n\t\t * The bit mask to use when writing to the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilWriteMask = 0xff;\n\n\t\t/**\n\t\t * The stencil comparison function to use.\n\t\t *\n\t\t * @type {NeverStencilFunc|LessStencilFunc|EqualStencilFunc|LessEqualStencilFunc|GreaterStencilFunc|NotEqualStencilFunc|GreaterEqualStencilFunc|AlwaysStencilFunc}\n\t\t * @default AlwaysStencilFunc\n\t\t */\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\n\t\t/**\n\t\t * The value to use when performing stencil comparisons or stencil operations.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.stencilRef = 0;\n\n\t\t/**\n\t\t * The bit mask to use when comparing against the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilFuncMask = 0xff;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns `false`.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` but the depth test fails.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` and the depth test passes.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZPass = KeepStencilOp;\n\n\t\t/**\n\t\t * Whether stencil operations are performed against the stencil buffer. In\n\t\t * order to perform writes or comparisons against the stencil buffer this\n\t\t * value must be `true`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.stencilWrite = false;\n\n\t\t/**\n\t\t * User-defined clipping planes specified as THREE.Plane objects in world\n\t\t * space. These planes apply to the objects this material is attached to.\n\t\t * Points in space whose signed distance to the plane is negative are clipped\n\t\t * (not rendered). This requires {@link WebGLRenderer#localClippingEnabled} to\n\t\t * be `true`.\n\t\t *\n\t\t * @type {?Array}\n\t\t * @default null\n\t\t */\n\t\tthis.clippingPlanes = null;\n\n\t\t/**\n\t\t * Changes the behavior of clipping planes so that only their intersection is\n\t\t * clipped, rather than their union.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipIntersection = false;\n\n\t\t/**\n\t\t * Defines whether to clip shadows according to the clipping planes specified\n\t\t * on this material.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipShadows = false;\n\n\t\t/**\n\t\t * Defines which side of faces cast shadows. If `null`, the side casting shadows\n\t\t * is determined as follows:\n\t\t *\n\t\t * - When {@link Material#side} is set to `FrontSide`, the back side cast shadows.\n\t\t * - When {@link Material#side} is set to `BackSide`, the front side cast shadows.\n\t\t * - When {@link Material#side} is set to `DoubleSide`, both sides cast shadows.\n\t\t *\n\t\t * @type {?(FrontSide|BackSide|DoubleSide)}\n\t\t * @default null\n\t\t */\n\t\tthis.shadowSide = null;\n\n\t\t/**\n\t\t * Whether to render the material's color.\n\t\t *\n\t\t * This can be used in conjunction with {@link Object3D#renderOder} to create invisible\n\t\t * objects that occlude other objects.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.colorWrite = true;\n\n\t\t/**\n\t\t * Override the renderer's default precision for this material.\n\t\t *\n\t\t * @type {?('highp'|'mediump'|'lowp')}\n\t\t * @default null\n\t\t */\n\t\tthis.precision = null;\n\n\t\t/**\n\t\t * Whether to use polygon offset or not. When enabled, each fragment's depth value will\n\t\t * be offset after it is interpolated from the depth values of the appropriate vertices.\n\t\t * The offset is added before the depth test is performed and before the value is written\n\t\t * into the depth buffer.\n\t\t *\n\t\t * Can be useful for rendering hidden-line images, for applying decals to surfaces, and for\n\t\t * rendering solids with highlighted edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.polygonOffset = false;\n\n\t\t/**\n\t\t * Specifies a scale factor that is used to create a variable depth offset for each polygon.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetFactor = 0;\n\n\t\t/**\n\t\t * Is multiplied by an implementation-specific value to create a constant depth offset.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\t/**\n\t\t * Whether to apply dithering to the color to remove the appearance of banding.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.dithering = false;\n\n\t\t/**\n\t\t * Whether alpha to coverage should be enabled or not. Can only be used with MSAA-enabled contexts\n\t\t * (meaning when the renderer was created with *antialias* parameter set to `true`). Enabling this\n\t\t * will smooth aliasing on clip plane edges and alphaTest-clipped edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaToCoverage = false;\n\n\t\t/**\n\t\t * Whether to premultiply the alpha (transparency) value.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultipliedAlpha = false;\n\n\t\t/**\n\t\t * Whether double-sided, transparent objects should be rendered with a single pass or not.\n\t\t *\n\t\t * The engine renders double-sided, transparent objects with two draw calls (back faces first,\n\t\t * then front faces) to mitigate transparency artifacts. There are scenarios however where this\n\t\t * approach produces no quality gains but still doubles draw calls e.g. when rendering flat\n\t\t * vegetation like grass sprites. In these cases, set the `forceSinglePass` flag to `true` to\n\t\t * disable the two pass rendering to avoid performance issues.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.forceSinglePass = false;\n\n\t\t/**\n\t\t * Whether it's possible to override the material with {@link Scene#overrideMaterial} or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.allowOverride = true;\n\n\t\t/**\n\t\t * Defines whether 3D objects using this material are visible.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * Defines whether this material is tone mapped according to the renderer's tone mapping setting.\n\t\t *\n\t\t * It is ignored when rendering to a render target or using post processing or when using\n\t\t * `WebGPURenderer`. In all these cases, all materials are honored by tone mapping.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.toneMapped = true;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the Material. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Material#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\t/**\n\t * Sets the alpha value to be used when running an alpha test. The material\n\t * will not be rendered if the opacity is lower than this value.\n\t *\n\t * @type {number}\n\t * @readonly\n\t * @default 0\n\t */\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\t/**\n\t * An optional callback that is executed immediately before the material is used to render a 3D object.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {Scene} scene - The scene.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\t/**\n\t * An optional callback that is executed immediately before the shader\n\t * program is compiled. This function is called with the shader source code\n\t * as a parameter. Useful for the modification of built-in materials.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}. The\n\t * recommended approach when customizing materials is to use `WebGPURenderer` with the new\n\t * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}.\n\t *\n\t * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.\n\t * @param {WebGLRenderer} renderer - A reference to the renderer.\n\t */\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\t/**\n\t * In case {@link Material#onBeforeCompile} is used, this callback can be used to identify\n\t * values of settings used in `onBeforeCompile()`, so three.js can reuse a cached\n\t * shader or recompile the shader for this material as needed.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @return {string} The custom program cache key.\n\t */\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\t/**\n\t * This method can be used to set default values from parameter objects.\n\t * It is a generic implementation so it can be used with different types\n\t * of materials.\n\t *\n\t * @param {Object} [values] - The material values to set.\n\t */\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the material into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized material.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.sheenColorMap && this.sheenColorMap.isTexture ) {\n\n\t\t\tdata.sheenColorMap = this.sheenColorMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture ) {\n\n\t\t\tdata.sheenRoughnessMap = this.sheenRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Returns a new material with copied values from this instance.\n\t *\n\t * @return {Material} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given material to this instance.\n\t *\n\t * @param {Material} source - The material to copy.\n\t * @return {Material} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Material#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the material has been disposed of.\n\t\t *\n\t\t * @event Material#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the material\n\t * needs to be recompiled.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\n/**\n * A material for drawing geometries in a simple shaded (flat or wireframe) way.\n *\n * This material is not affected by lights.\n *\n * @augments Material\n */\nclass MeshBasicMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh basic material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Specular map used by the material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < -27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < -14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= -8388609; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n/**\n * Returns a half precision floating point value (FP16) from the given single\n * precision floating point value (FP32).\n *\n * @param {number} val - A single precision floating point value.\n * @return {number} The FP16 value.\n */\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, -65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n/**\n * Returns a single precision floating point value (FP32) from the given half\n * precision floating point value (FP16).\n *\n * @param {number} val - A half precision floating point value.\n * @return {number} The FP32 value.\n */\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\n/**\n * A class containing utility functions for data.\n *\n * @hideconstructor\n */\nclass DataUtils {\n\n\t/**\n\t * Returns a half precision floating point value (FP16) from the given single\n\t * precision floating point value (FP32).\n\t *\n\t * @param {number} val - A single precision floating point value.\n\t * @return {number} The FP16 value.\n\t */\n\tstatic toHalfFloat( val ) {\n\n\t\treturn toHalfFloat( val );\n\n\t}\n\n\t/**\n\t * Returns a single precision floating point value (FP32) from the given half\n\t * precision floating point value (FP16).\n\t *\n\t * @param {number} val - A half precision floating point value.\n\t * @return {number} The FP32 value.\n\t */\n\tstatic fromHalfFloat( val ) {\n\n\t\treturn fromHalfFloat( val );\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nlet _id$2 = 0;\n\n/**\n * This class stores data for an attribute (such as vertex positions, face\n * indices, normals, colors, UVs, and any custom attributes ) associated with\n * a geometry, which allows for more efficient passing of data to the GPU.\n *\n * When working with vector-like data, the `fromBufferAttribute( attribute, index )`\n * helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}.\n */\nclass BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {TypedArray} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBufferAttribute = true;\n\n\t\t/**\n\t\t * The ID of the buffer attribute.\n\t\t *\n\t\t * @name BufferAttribute#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The array holding the attribute data. It should have `itemSize * numVertices`\n\t\t * elements, where `numVertices` is the number of vertices in the associated geometry.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.array = array;\n\n\t\t/**\n\t\t * The number of values of the array that should be associated with a particular vertex.\n\t\t * For instance, if this attribute is storing a 3-component vector (such as a position,\n\t\t * normal, or color), then the value should be `3`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * Represents the number of items this buffer attribute stores. It is internally computed\n\t\t * by dividing the `array` length by the `itemSize`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\n\t\t/**\n\t\t * Applies to integer data only. Indicates how the underlying data in the buffer maps to\n\t\t * the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,\n\t\t * and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to\n\t\t * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted\n\t\t * to floats unmodified, i.e. `65535` becomes `65535.0f`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t\t/**\n\t\t * Defines the intended usage pattern of the data store for optimization purposes.\n\t\t *\n\t\t * Note: After the initial use of a buffer, its usage cannot be changed. Instead,\n\t\t * instantiate a new one and set the desired usage before the next render.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * This can be used to only update some components of stored vectors (for example, just the\n\t\t * component related to color). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * Configures the bound GPU type for use in shaders.\n\t\t *\n\t\t * Note: this only has an effect for integer arrays and is not configurable for float arrays.\n\t\t * For lower precision float types, use `Float16BufferAttribute`.\n\t\t *\n\t\t * @type {(FloatType|IntType)}\n\t\t * @default FloatType\n\t\t */\n\t\tthis.gpuType = FloatType;\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * A callback function that is executed after the renderer has transferred the attribute\n\t * array data to the GPU.\n\t */\n\tonUploadCallback() {}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the usage of this buffer attribute.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {BufferAttribute} A reference to this buffer attribute.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data array to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Copies the values of the given buffer attribute to this instance.\n\t *\n\t * @param {BufferAttribute} source - The buffer attribute to copy.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies a vector from the given buffer attribute to this one. The start\n\t * and destination position in the attribute buffers are represented by the\n\t * given indices.\n\t *\n\t * @param {number} index1 - The destination index into this buffer attribute.\n\t * @param {BufferAttribute} attribute - The buffer attribute to copy from.\n\t * @param {number} index2 - The source index into the given buffer attribute.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given array data into this buffer attribute.\n\t *\n\t * @param {(TypedArray|Array)} array - The array to copy.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 matrix to the given attribute. Works with\n\t * item size `2` and `3`.\n\t *\n\t * @param {Matrix3} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 normal matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix3} m - The normal matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3` and with direction vectors.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given array data in the buffer attribute.\n\t *\n\t * @param {(TypedArray|Array)} value - The array data to set.\n\t * @param {number} [offset=0] - The offset in this buffer attribute's array.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @return {number} The returned value.\n\t */\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\t/**\n\t * Sets the given value to the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @param {number} value - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The x component.\n\t */\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\t/**\n\t * Sets the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The y component.\n\t */\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\t/**\n\t * Sets the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} y - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The z component.\n\t */\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\t/**\n\t * Sets the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} z - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The w component.\n\t */\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\t/**\n\t * Sets the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} w - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x and y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y, z and w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @param {number} w - The value for the w component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given callback function that is executed after the Renderer has transferred\n\t * the attribute array data to the GPU. Can be used to perform clean-up operations after\n\t * the upload when attribute data are not needed anymore on the CPU side.\n\t *\n\t * @param {Function} callback - The `onUpload()` callback.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new buffer attribute with copied values from this instance.\n\t *\n\t * @return {BufferAttribute} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\t/**\n\t * Serializes the buffer attribute into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized buffer attribute.\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int8` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int8BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int8Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt8` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint8Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt8Clamped` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint8ClampedArray)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int16` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt16` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Float16` buffer attribute with\n * a plain `Array` instance.\n *\n * This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`\n * browser support is still problematic.\n *\n * @augments BufferAttribute\n */\nclass Float16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Float32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Float32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Float32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\n/**\n * A representation of mesh, line, or point geometry. Includes vertex\n * positions, face indices, normals, colors, UVs, and custom attributes\n * within buffers, reducing the cost of passing all this data to the GPU.\n *\n * ```js\n * const geometry = new THREE.BufferGeometry();\n * // create a simple square shape. We duplicate the top left and bottom right\n * // vertices because each vertex needs to appear once per triangle.\n * const vertices = new Float32Array( [\n * \t-1.0, -1.0, 1.0, // v0\n * \t 1.0, -1.0, 1.0, // v1\n * \t 1.0, 1.0, 1.0, // v2\n *\n * \t 1.0, 1.0, 1.0, // v3\n * \t-1.0, 1.0, 1.0, // v4\n * \t-1.0, -1.0, 1.0 // v5\n * ] );\n * // itemSize = 3 because there are 3 values (components) per vertex\n * geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n * const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * ```\n *\n * @augments EventDispatcher\n */\nclass BufferGeometry extends EventDispatcher {\n\n\t/**\n\t * Constructs a new geometry.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBufferGeometry = true;\n\n\t\t/**\n\t\t * The ID of the geometry.\n\t\t *\n\t\t * @name BufferGeometry#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\t/**\n\t\t * The UUID of the geometry.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the geometry.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\t/**\n\t\t * Allows for vertices to be re-used across multiple triangles; this is\n\t\t * called using \"indexed triangles\". Each triangle is associated with the\n\t\t * indices of three vertices. This attribute therefore stores the index of\n\t\t * each vertex for each triangular face. If this attribute is not set, the\n\t\t * renderer assumes that each three contiguous positions represent a single triangle.\n\t\t *\n\t\t * @type {?BufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.index = null;\n\n\t\t/**\n\t\t * A (storage) buffer attribute which was generated with a compute shader and\n\t\t * now defines indirect draw calls.\n\t\t *\n\t\t * Can only be used with {@link WebGPURenderer} and a WebGPU backend.\n\t\t *\n\t\t * @type {?BufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.indirect = null;\n\n\t\t/**\n\t\t * This dictionary has as id the name of the attribute to be set and as value\n\t\t * the buffer attribute to set it to. Rather than accessing this property directly,\n\t\t * use `setAttribute()` and `getAttribute()` to access attributes of this geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.attributes = {};\n\n\t\t/**\n\t\t * This dictionary holds the morph targets of the geometry.\n\t\t *\n\t\t * Note: Once the geometry has been rendered, the morph attribute data cannot\n\t\t * be changed. You will have to call `dispose()?, and create a new geometry instance.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.morphAttributes = {};\n\n\t\t/**\n\t\t * Used to control the morph target behavior; when set to `true`, the morph\n\t\t * target data is treated as relative offsets, rather than as absolute\n\t\t * positions/normals.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.morphTargetsRelative = false;\n\n\t\t/**\n\t\t * Split the geometry into groups, each of which will be rendered in a\n\t\t * separate draw call. This allows an array of materials to be used with the geometry.\n\t\t *\n\t\t * Use `addGroup()` and `clearGroups()` to edit groups, rather than modifying this array directly.\n\t\t *\n\t\t * Every vertex and index must belong to exactly one group — groups must not share vertices or\n\t\t * indices, and must not leave vertices or indices unused.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.groups = [];\n\n\t\t/**\n\t\t * Bounding box for the geometry which can be calculated with `computeBoundingBox()`.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\t/**\n\t\t * Determines the part of the geometry to render. This should not be set directly,\n\t\t * instead use `setDrawRange()`.\n\t\t *\n\t\t * @type {{start:number,count:number}}\n\t\t */\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the geometry.\n\t\t * It should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t}\n\n\t/**\n\t * Returns the index of this geometry.\n\t *\n\t * @return {?BufferAttribute} The index. Returns `null` if no index is defined.\n\t */\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\t/**\n\t * Sets the given index to this geometry.\n\t *\n\t * @param {Array|BufferAttribute} index - The index to set.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given indirect attribute to this geometry.\n\t *\n\t * @param {BufferAttribute} indirect - The attribute holding indirect draw calls.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetIndirect( indirect ) {\n\n\t\tthis.indirect = indirect;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the indirect attribute of this geometry.\n\t *\n\t * @return {?BufferAttribute} The indirect attribute. Returns `null` if no indirect attribute is defined.\n\t */\n\tgetIndirect() {\n\n\t\treturn this.indirect;\n\n\t}\n\n\t/**\n\t * Returns the buffer attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @return {BufferAttribute|InterleavedBufferAttribute|undefined} The buffer attribute.\n\t * Returns `undefined` if not attribute has been found.\n\t */\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\t/**\n\t * Sets the given attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @param {BufferAttribute|InterleavedBufferAttribute} attribute - The attribute to set.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deletes the attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name to delete.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this geometry has an attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @return {boolean} Whether this geometry has an attribute for the given name or not.\n\t */\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\t/**\n\t * Adds a group to this geometry.\n\t *\n\t * @param {number} start - The first element in this draw call. That is the first\n\t * vertex for non-indexed geometry, otherwise the first triangle index.\n\t * @param {number} count - Specifies how many vertices (or indices) are part of this group.\n\t * @param {number} [materialIndex=0] - The material array index to use.\n\t */\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Clears all groups.\n\t */\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\t/**\n\t * Sets the draw range for this geometry.\n\t *\n\t * @param {number} start - The first vertex for non-indexed geometry, otherwise the first triangle index.\n\t * @param {number} count - For non-indexed BufferGeometry, `count` is the number of vertices to render.\n\t * For indexed BufferGeometry, `count` is the number of indices to render.\n\t */\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 transformation matrix to the geometry.\n\t *\n\t * @param {Matrix4} matrix - The matrix to apply.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the rotation represented by the Quaternion to the geometry.\n\t *\n\t * @param {Quaternion} q - The Quaternion to apply.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the X axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the Y axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the Z axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the geometry. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#position} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} x - The x offset.\n\t * @param {number} y - The y offset.\n\t * @param {number} z - The z offset.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales the geometry. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#scale} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} x - The x scale.\n\t * @param {number} y - The y scale.\n\t * @param {number} z - The z scale.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry to face a point in 3D space. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#lookAt} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {Vector3} vector - The target point.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Center the geometry based on its bounding box.\n\t *\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Defines a geometry by creating a `position` attribute based on the given array of points. The array\n\t * can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is\n\t * set to `0`.\n\t *\n\t * If the method is used with an existing `position` attribute, the vertex data are overwritten with the\n\t * data from the array. The length of the array must match the vertex count.\n\t *\n\t * @param {Array|Array} points - The points.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute === undefined ) {\n\n\t\t\tconst position = [];\n\n\t\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\t} else {\n\n\t\t\tconst l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size\n\n\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tpositionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tif ( points.length > positionAttribute.count ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );\n\n\t\t\t}\n\n\t\t\tpositionAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the geometry, and updates the `boundingBox` member.\n\t * The bounding box is not computed by the engine; it must be computed by your app.\n\t * You may need to recompute the bounding box if the geometry vertices are modified.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the geometry, and updates the `boundingSphere` member.\n\t * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.\n\t * You may need to recompute the bounding sphere if the geometry vertices are modified.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Calculates and adds a tangent attribute to this geometry.\n\t *\n\t * The computation is only supported for indexed geometries and if position, normal, and uv attributes\n\t * are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by\n\t * {@link BufferGeometryUtils#computeMikkTSpaceTangents} instead.\n\t */\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? -1 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes vertex normals for the given vertex data. For indexed geometries, the method sets\n\t * each vertex normal to be the average of the face normals of the faces that share that vertex.\n\t * For non-indexed geometries, vertices are not shared, and the method sets each vertex normal\n\t * to be the same as the face normal.\n\t */\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Ensures every normal vector in a geometry will have a magnitude of `1`. This will\n\t * correct lighting on the geometry surfaces.\n\t */\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Return a new non-index version of this indexed geometry. If the geometry\n\t * is already non-indexed, the method is a NOOP.\n\t *\n\t * @return {BufferGeometry} The non-indexed version of this indexed geometry.\n\t */\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\t/**\n\t * Serializes the geometry into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized geometry.\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = boundingSphere.toJSON();\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Returns a new geometry with copied values from this instance.\n\t *\n\t * @return {BufferGeometry} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given geometry to this instance.\n\t *\n\t * @param {BufferGeometry} source - The geometry to copy.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires BufferGeometry#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\n/**\n * Class representing triangular polygon mesh based objects.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments Object3D\n */\nclass Mesh extends Object3D {\n\n\t/**\n\t * Constructs a new mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\t/**\n\t\t * The mesh geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The mesh material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default MeshBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\t/**\n\t\t * The number of instances of this mesh.\n\t\t * Can only be used with {@link WebGPURenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.count = 1;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the local-space position of the vertex at the given index, taking into\n\t * account the current animation state of both morph targets and skinning.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * @return {Vector3} The vertex position in local space.\n\t */\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tconst barycoord = new Vector3();\n\t\tTriangle.getBarycoord( _intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord );\n\n\t\tif ( uv ) {\n\n\t\t\tintersection.uv = Triangle.getInterpolatedAttribute( uv, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\tintersection.uv1 = Triangle.getInterpolatedAttribute( uv1, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\tintersection.normal = Triangle.getInterpolatedAttribute( normal, a, b, c, barycoord, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( -1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\t\tintersection.barycoord = barycoord;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * A geometry class for a rectangular cuboid with a given width, height, and depth.\n * On creation, the cuboid is centred on the origin, with each edge parallel to one\n * of the axes.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const cube = new THREE.Mesh( geometry, material );\n * scene.add( cube );\n * ```\n *\n * @augments BufferGeometry\n */\nclass BoxGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new box geometry.\n\t *\n\t * @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis.\n\t * @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis.\n\t * @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis.\n\t * @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides.\n\t * @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides.\n\t * @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, -1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, -1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', -1, -1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : -1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {BoxGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n// Uniform Utilities\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * A material rendered with custom shaders. A shader is a small program written in GLSL.\n * that runs on the GPU. You may want to use a custom shader if you need to implement an\n * effect not included with any of the built-in materials.\n *\n * There are the following notes to bear in mind when using a `ShaderMaterial`:\n *\n * - `ShaderMaterial` can only be used with {@link WebGLRenderer}.\n * - Built in attributes and uniforms are passed to the shaders along with your code. If\n * you don't want that, use {@link RawShaderMaterial} instead.\n * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`\n * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has\n * to be placed right above the loop. The loop formatting has to correspond to a defined standard.\n * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.\n * - The loop variable has to be *i*.\n * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly\n * value of *i* for the given iteration and can be used in preprocessor\n * statements.\n *\n * ```js\n * const material = new THREE.ShaderMaterial( {\n * \tuniforms: {\n * \t\ttime: { value: 1.0 },\n * \t\tresolution: { value: new THREE.Vector2() }\n * \t},\n * \tvertexShader: document.getElementById( 'vertexShader' ).textContent,\n * \tfragmentShader: document.getElementById( 'fragmentShader' ).textContent\n * } );\n * ```\n *\n * @augments Material\n */\nclass ShaderMaterial extends Material {\n\n\t/**\n\t * Constructs a new shader material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\t/**\n\t\t * Defines custom constants using `#define` directives within the GLSL code\n\t\t * for both the vertex shader and the fragment shader; each key/value pair\n\t\t * yields another directive.\n\t\t * ```js\n\t\t * defines: {\n\t\t * \tFOO: 15,\n\t\t * \tBAR: true\n\t\t * }\n\t\t * ```\n\t\t * Yields the lines:\n\t\t * ```\n\t\t * #define FOO 15\n\t\t * #define BAR true\n\t\t * ```\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.defines = {};\n\n\t\t/**\n\t\t * An object of the form:\n\t\t * ```js\n\t\t * {\n\t\t * \t\"uniform1\": { value: 1.0 },\n\t\t * \t\"uniform2\": { value: 2 }\n\t\t * }\n\t\t * ```\n\t\t * specifying the uniforms to be passed to the shader code; keys are uniform\n\t\t * names, values are definitions of the form\n\t\t * ```\n\t\t * {\n\t\t * \tvalue: 1.0\n\t\t * }\n\t\t * ```\n\t\t * where `value` is the value of the uniform. Names must match the name of\n\t\t * the uniform, as defined in the GLSL code. Note that uniforms are refreshed\n\t\t * on every frame, so updating the value of the uniform will immediately\n\t\t * update the value available to the GLSL code.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.uniforms = {};\n\n\t\t/**\n\t\t * An array holding uniforms groups for configuring UBOs.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.uniformsGroups = [];\n\n\t\t/**\n\t\t * Vertex shader GLSL code. This is the actual code for the shader.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.vertexShader = default_vertex;\n\n\t\t/**\n\t\t * Fragment shader GLSL code. This is the actual code for the shader.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.fragmentShader = default_fragment;\n\n\t\t/**\n\t\t * Controls line thickness or lines.\n\t\t *\n\t\t * WebGL and WebGPU ignore this setting and always render line primitives with a\n\t\t * width of one pixel.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.linewidth = 1;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Define whether the material color is affected by global fog settings; `true`\n\t\t * to pass fog uniforms to the shader.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.fog = false;\n\n\t\t/**\n\t\t * Defines whether this material uses lighting; `true` to pass uniform data\n\t\t * related to lighting to this shader.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.lights = false;\n\n\t\t/**\n\t\t * Defines whether this material supports clipping; `true` to let the renderer\n\t\t * pass the clippingPlanes uniform.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipping = false;\n\n\t\t/**\n\t\t * Overwritten and set to `true` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.forceSinglePass = true;\n\n\t\t/**\n\t\t * This object allows to enable certain WebGL 2 extensions.\n\t\t *\n\t\t * - clipCullDistance: set to `true` to use vertex shader clipping\n\t\t * - multiDraw: set to `true` to use vertex shader multi_draw / enable gl_DrawID\n\t\t *\n\t\t * @type {{clipCullDistance:false,multiDraw:false}}\n\t\t */\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t/**\n\t\t * When the rendered geometry doesn't include these attributes but the\n\t\t * material does, these default values will be passed to the shaders. This\n\t\t * avoids errors when buffer data is missing.\n\t\t *\n\t\t * - color: [ 1, 1, 1 ]\n\t\t * - uv: [ 0, 0 ]\n\t\t * - uv1: [ 0, 0 ]\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\t/**\n\t\t * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}\n\t\t * to bind a generic vertex index to an attribute variable.\n\t\t *\n\t\t * @type {string|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.index0AttributeName = undefined;\n\n\t\t/**\n\t\t * Can be used to force a uniform update while changing uniforms in\n\t\t * {@link Object3D#onBeforeRender}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\t/**\n\t\t * Defines the GLSL version of custom shader code.\n\t\t *\n\t\t * @type {?(GLSL1|GLSL3)}\n\t\t * @default null\n\t\t */\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Abstract base class for cameras. This class should always be inherited\n * when you build a new camera.\n *\n * @abstract\n * @augments Object3D\n */\nclass Camera extends Object3D {\n\n\t/**\n\t * Constructs a new camera.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\t/**\n\t\t * The inverse of the camera's world matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\t/**\n\t\t * The camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The inverse of the camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The coordinate system in which the camera is used.\n\t\t *\n\t\t * @type {(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t */\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t\tthis._reversedDepth = false;\n\n\t}\n\n\t/**\n\t * The flag that indicates whether the camera uses a reversed depth buffer.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t */\n\tget reversedDepth() {\n\n\t\treturn this._reversedDepth;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * This method is overwritten since cameras have a different forward vector compared to other\n\t * 3D objects. A camera looks down its local, negative z-axis by default.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n/**\n * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.\n *\n * This projection mode is designed to mimic the way the human eye sees. It\n * is the most common projection mode used for rendering a 3D scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass PerspectiveCamera extends Camera {\n\n\t/**\n\t * Constructs a new perspective camera.\n\t *\n\t * @param {number} [fov=50] - The vertical field of view.\n\t * @param {number} [aspect=1] - The aspect ratio.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\t/**\n\t\t * The vertical field of view, from bottom to top of view,\n\t\t * in degrees.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 50\n\t\t */\n\t\tthis.fov = fov;\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link PerspectiveCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link OrthographicCamera}, `0` is not a\n\t\t * valid value for a perspective camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link PerspectiveCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\t/**\n\t\t * Object distance used for stereoscopy and depth-of-field effects. This\n\t\t * parameter does not influence the projection matrix unless a\n\t\t * {@link StereoCamera} is being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.focus = 10;\n\n\t\t/**\n\t\t * The aspect ratio, usually the canvas width / canvas height.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = aspect;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * Film size used for the larger axis. Default is `35` (millimeters). This\n\t\t * parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset}\n\t\t * is set to a nonzero value.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 35\n\t\t */\n\t\tthis.filmGauge = 35;\n\n\t\t/**\n\t\t * Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.filmOffset = 0;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Returns the focal length from the current {@link PerspectiveCamera#fov} and\n\t * {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The computed focal length.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\t/**\n\t * Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}.\n\t *\n\t * @return {number} The effective FOV.\n\t */\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\t/**\n\t * Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector.\n\t * @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( -1, -1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} target - The target vector that is used to store result where x is width and y is height.\n\t * @returns {Vector2} The view size.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *```\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *```\n\t * then for each monitor you would call it like this:\n\t *```js\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * // --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * // --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * // --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * // --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * // --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * // --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t * ```\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = -0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem, this.reversedDepth );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = -90; // negative fov is not an error\nconst aspect = 1;\n\n/**\n * A special type of camera that is positioned in 3D space to render its surroundings into a\n * cube render target. The render target can then be used as an environment map for rendering\n * realtime reflections in your scene.\n *\n * ```js\n * // Create cube render target\n * const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 256, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );\n *\n * // Create cube camera\n * const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );\n * scene.add( cubeCamera );\n *\n * // Create car\n * const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );\n * const car = new THREE.Mesh( carGeometry, chromeMaterial );\n * scene.add( car );\n *\n * // Update the render target cube\n * car.visible = false;\n * cubeCamera.position.copy( car.position );\n * cubeCamera.update( renderer, scene );\n *\n * // Render the scene\n * car.visible = true;\n * renderer.render( scene, camera );\n * ```\n *\n * @augments Object3D\n */\nclass CubeCamera extends Object3D {\n\n\t/**\n\t * Constructs a new cube camera.\n\t *\n\t * @param {number} near - The camera's near plane.\n\t * @param {number} far - The camera's far plane.\n\t * @param {WebGLCubeRenderTarget} renderTarget - The cube render target.\n\t */\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\t/**\n\t\t * A reference to the cube render target.\n\t\t *\n\t\t * @type {WebGLCubeRenderTarget}\n\t\t */\n\t\tthis.renderTarget = renderTarget;\n\n\t\t/**\n\t\t * The current active coordinate system.\n\t\t *\n\t\t * @type {?(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t * @default null\n\t\t */\n\t\tthis.coordinateSystem = null;\n\n\t\t/**\n\t\t * The current active mipmap level\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\t/**\n\t * Must be called when the coordinate system of the cube camera is changed.\n\t */\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, -1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, -1, 0 );\n\t\t\tcameraPX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, -1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, -1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, -1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, -1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Calling this method will render the given scene with the given renderer\n\t * into the cube render target of the camera.\n\t *\n\t * @param {(Renderer|WebGLRenderer)} renderer - The renderer.\n\t * @param {Scene} scene - The scene to render.\n\t */\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\n/**\n * Creates a cube texture made up of six images.\n *\n * ```js\n * const loader = new THREE.CubeTextureLoader();\n * loader.setPath( 'textures/cube/pisa/' );\n *\n * const textureCube = loader.load( [\n * \t'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'\n * ] );\n *\n * const material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } );\n * ```\n *\n * @augments Texture\n */\nclass CubeTexture extends Texture {\n\n\t/**\n\t * Constructs a new cube texture.\n\t *\n\t * @param {Array} [images=[]] - An array holding a image for each side of a cube.\n\t * @param {number} [mapping=CubeReflectionMapping] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space value.\n\t */\n\tconstructor( images = [], mapping = CubeReflectionMapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubeTexture = true;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t}\n\n\t/**\n\t * Alias for {@link CubeTexture#image}.\n\t *\n\t * @type {Array}\n\t */\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\n/**\n * A cube render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new cube render target.\n\t *\n\t * @param {number} [size=1] - The size of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {DataArrayTexture}\n\t\t */\n\t\tthis.texture = new CubeTexture( images );\n\t\tthis._setTextureOptions( options );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n\t/**\n\t * Converts the given equirectangular texture to a cube map.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {Texture} texture - The equirectangular texture.\n\t * @return {WebGLCubeRenderTarget} A reference to this cube render target.\n\t */\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Clears this cube render target.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.\n\t * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.\n\t * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.\n\t */\n\tclear( renderer, color = true, depth = true, stencil = true ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\n/**\n * This is almost identical to an {@link Object3D}. Its purpose is to\n * make working with groups of objects syntactically clearer.\n *\n * ```js\n * // Create a group and add the two cubes.\n * // These cubes can now be rotated / scaled etc as a group.\n * const group = new THREE.Group();\n *\n * group.add( meshA );\n * group.add( meshB );\n *\n * scene.add( group );\n * ```\n *\n * @augments Object3D\n */\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\n/**\n * Class for representing a XR controller with its\n * different coordinate systems.\n *\n * @private\n */\nclass WebXRController {\n\n\t/**\n\t * Constructs a new XR controller.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * A group representing the target ray space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._targetRay = null;\n\n\t\t/**\n\t\t * A group representing the grip space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._grip = null;\n\n\t\t/**\n\t\t * A group representing the hand space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._hand = null;\n\n\t}\n\n\t/**\n\t * Returns a group representing the hand space of the XR controller.\n\t *\n\t * @return {Group} A group representing the hand space of the XR controller.\n\t */\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\t/**\n\t * Returns a group representing the target ray space of the XR controller.\n\t *\n\t * @return {Group} A group representing the target ray space of the XR controller.\n\t */\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\t/**\n\t * Returns a group representing the grip space of the XR controller.\n\t *\n\t * @return {Group} A group representing the grip space of the XR controller.\n\t */\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\t/**\n\t * Dispatches the given event to the groups representing\n\t * the different coordinate spaces of the XR controller.\n\t *\n\t * @param {Object} event - The event to dispatch.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Connects the controller with the given XR input source.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Disconnects the controller from the given XR input source.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Updates the controller with the given input source, XR frame and reference space.\n\t * This updates the transformations of the groups that represent the different\n\t * coordinate systems of the controller.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @param {XRFrame} frame - The XR frame.\n\t * @param {XRReferenceSpace} referenceSpace - The reference space.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a group representing the hand joint for the given input joint.\n\t *\n\t * @private\n\t * @param {Group} hand - The group representing the hand space.\n\t * @param {XRJointSpace} inputjoint - The hand joint data.\n\t * @return {Group} A group representing the hand joint for the given input joint.\n\t */\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\n/**\n * This class can be used to define an exponential squared fog,\n * which gives a clear view near the camera and a faster than exponentially\n * densening fog farther from the camera.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 );\n * ```\n */\nclass FogExp2 {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [density=0.00025] - Defines how fast the fog will grow dense.\n\t */\n\tconstructor( color, density = 0.00025 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFogExp2 = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * Defines how fast the fog will grow dense.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.00025\n\t\t */\n\t\tthis.density = density;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {FogExp2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\n/**\n * This class can be used to define a linear fog that grows linearly denser\n * with the distance.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.Fog( 0xcccccc, 10, 15 );\n * ```\n */\nclass Fog {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [near=1] - The minimum distance to start applying fog.\n\t * @param {number} [far=1000] - The maximum distance at which fog stops being calculated and applied.\n\t */\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFog = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The minimum distance to start applying fog. Objects that are less than\n\t\t * `near` units from the active camera won't be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The maximum distance at which fog stops being calculated and applied.\n\t\t * Objects that are more than `far` units away from the active camera won't\n\t\t * be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1000\n\t\t */\n\t\tthis.far = far;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {Fog} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\n/**\n * Scenes allow you to set up what is to be rendered and where by three.js.\n * This is where you place 3D objects like meshes, lines or lights.\n *\n * @augments Object3D\n */\nclass Scene extends Object3D {\n\n\t/**\n\t * Constructs a new scene.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\t/**\n\t\t * Defines the background of the scene. Valid inputs are:\n\t\t *\n\t\t * - A color for defining a uniform colored background.\n\t\t * - A texture for defining a (flat) textured background.\n\t\t * - Cube textures or equirectangular textures for defining a skybox.\n\t\t *\n\t\t * @type {?(Color|Texture)}\n\t\t * @default null\n\t\t */\n\t\tthis.background = null;\n\n\t\t/**\n\t\t * Sets the environment map for all physical materials in the scene. However,\n\t\t * it's not possible to overwrite an existing texture assigned to the `envMap`\n\t\t * material property.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.environment = null;\n\n\t\t/**\n\t\t * A fog instance defining the type of fog that affects everything\n\t\t * rendered in the scene.\n\t\t *\n\t\t * @type {?(Fog|FogExp2)}\n\t\t * @default null\n\t\t */\n\t\tthis.fog = null;\n\n\t\t/**\n\t\t * Sets the blurriness of the background. Only influences environment maps\n\t\t * assigned to {@link Scene#background}. Valid input is a float between `0`\n\t\t * and `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.backgroundBlurriness = 0;\n\n\t\t/**\n\t\t * Attenuates the color of the background. Only applies to background textures.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.backgroundIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the background in radians. Only influences environment maps\n\t\t * assigned to {@link Scene#background}.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.backgroundRotation = new Euler();\n\n\t\t/**\n\t\t * Attenuates the color of the environment. Only influences environment maps\n\t\t * assigned to {@link Scene#environment}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.environmentIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians. Only influences physical materials\n\t\t * in the scene when {@link Scene#environment} is used.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.environmentRotation = new Euler();\n\n\t\t/**\n\t\t * Forces everything in the scene to be rendered with the defined material. It is possible\n\t\t * to exclude materials from override by setting {@link Material#allowOverride} to `false`.\n\t\t *\n\t\t * @type {?Material}\n\t\t * @default null\n\t\t */\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * \"Interleaved\" means that multiple attributes, possibly of different types,\n * (e.g., position, normal, uv, color) are packed into a single array buffer.\n *\n * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}\n */\nclass InterleavedBuffer {\n\n\t/**\n\t * Constructs a new interleaved buffer.\n\t *\n\t * @param {TypedArray} array - A typed array with a shared buffer storing attribute data.\n\t * @param {number} stride - The number of typed-array elements per vertex.\n\t */\n\tconstructor( array, stride ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInterleavedBuffer = true;\n\n\t\t/**\n\t\t * A typed array with a shared buffer storing attribute data.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.array = array;\n\n\t\t/**\n\t\t * The number of typed-array elements per vertex.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.stride = stride;\n\n\t\t/**\n\t\t * The total number of elements in the array\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\t/**\n\t\t * Defines the intended usage pattern of the data store for optimization purposes.\n\t\t *\n\t\t * Note: After the initial use of a buffer, its usage cannot be changed. Instead,\n\t\t * instantiate a new one and set the desired usage before the next render.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * This can be used to only update some components of stored vectors (for example, just the\n\t\t * component related to color). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t\t/**\n\t\t * The UUID of the interleaved buffer.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\t/**\n\t * A callback function that is executed after the renderer has transferred the attribute array\n\t * data to the GPU.\n\t */\n\tonUploadCallback() {}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the usage of this interleaved buffer.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {InterleavedBuffer} A reference to this interleaved buffer.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data array to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Copies the values of the given interleaved buffer to this instance.\n\t *\n\t * @param {InterleavedBuffer} source - The interleaved buffer to copy.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies a vector from the given interleaved buffer to this one. The start\n\t * and destination position in the attribute buffers are represented by the\n\t * given indices.\n\t *\n\t * @param {number} index1 - The destination index into this interleaved buffer.\n\t * @param {InterleavedBuffer} interleavedBuffer - The interleaved buffer to copy from.\n\t * @param {number} index2 - The source index into the given interleaved buffer.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tcopyAt( index1, interleavedBuffer, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= interleavedBuffer.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = interleavedBuffer.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given array data in the interleaved buffer.\n\t *\n\t * @param {(TypedArray|Array)} value - The array data to set.\n\t * @param {number} [offset=0] - The offset in this interleaved buffer's array.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new interleaved buffer with copied values from this instance.\n\t *\n\t * @param {Object} [data] - An object with shared array buffers that allows to retain shared structures.\n\t * @return {InterleavedBuffer} A clone of this instance.\n\t */\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\t/**\n\t * Sets the given callback function that is executed after the Renderer has transferred\n\t * the array data to the GPU. Can be used to perform clean-up operations after\n\t * the upload when data are not needed anymore on the CPU side.\n\t *\n\t * @param {Function} callback - The `onUpload()` callback.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the interleaved buffer into JSON.\n\t *\n\t * @param {Object} [data] - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized interleaved buffer.\n\t */\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\n/**\n * An alternative version of a buffer attribute with interleaved data. Interleaved\n * attributes share a common interleaved data storage ({@link InterleavedBuffer}) and refer with\n * different offsets into the buffer.\n */\nclass InterleavedBufferAttribute {\n\n\t/**\n\t * Constructs a new interleaved buffer attribute.\n\t *\n\t * @param {InterleavedBuffer} interleavedBuffer - The buffer holding the interleaved data.\n\t * @param {number} itemSize - The item size.\n\t * @param {number} offset - The attribute offset into the buffer.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The buffer holding the interleaved data.\n\t\t *\n\t\t * @type {InterleavedBuffer}\n\t\t */\n\t\tthis.data = interleavedBuffer;\n\n\t\t/**\n\t\t * The item size, see {@link BufferAttribute#itemSize}.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * The attribute offset into the buffer.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.offset = offset;\n\n\t\t/**\n\t\t * Whether the data are normalized or not, see {@link BufferAttribute#normalized}\n\t\t *\n\t\t * @type {InterleavedBuffer}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t}\n\n\t/**\n\t * The item count of this buffer attribute.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\t/**\n\t * The array holding the interleaved buffer attribute data.\n\t *\n\t * @type {TypedArray}\n\t */\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 normal matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix3} m - The normal matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3` and with direction vectors.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @return {number} The returned value.\n\t */\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\t/**\n\t * Sets the given value to the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @param {number} value - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} y - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} z - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} w - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The x component.\n\t */\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\t/**\n\t * Returns the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The y component.\n\t */\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\t/**\n\t * Returns the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The z component.\n\t */\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\t/**\n\t * Returns the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The w component.\n\t */\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\t/**\n\t * Sets the x and y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y, z and w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @param {number} w - The value for the w component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new buffer attribute with copied values from this instance.\n\t *\n\t * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.\n\t *\n\t * @param {Object} [data] - An object with interleaved buffers that allows to retain the interleaved property.\n\t * @return {BufferAttribute|InterleavedBufferAttribute} A clone of this instance.\n\t */\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the buffer attribute into JSON.\n\t *\n\t * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.\n\t *\n\t * @param {Object} [data] - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized buffer attribute.\n\t */\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * A material for rendering instances of {@link Sprite}.\n *\n * ```js\n * const map = new THREE.TextureLoader().load( 'textures/sprite.png' );\n * const material = new THREE.SpriteMaterial( { map: map, color: 0xffffff } );\n *\n * const sprite = new THREE.Sprite( material );\n * sprite.scale.set(200, 200, 1)\n * scene.add( sprite );\n * ```\n *\n * @augments Material\n */\nclass SpriteMaterial extends Material {\n\n\t/**\n\t * Constructs a new sprite material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The rotation of the sprite in radians.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.rotation = 0;\n\n\t\t/**\n\t\t * Specifies whether size of the sprite is attenuated by the camera depth (perspective camera only).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sizeAttenuation = true;\n\n\t\t/**\n\t\t * Overwritten since sprite materials are transparent\n\t\t * by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.transparent = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\n/**\n * A sprite is a plane that always faces towards the camera, generally with a\n * partially transparent texture applied.\n *\n * Sprites do not cast shadows, setting {@link Object3D#castShadow} to `true` will\n * have no effect.\n *\n * ```js\n * const map = new THREE.TextureLoader().load( 'sprite.png' );\n * const material = new THREE.SpriteMaterial( { map: map } );\n *\n * const sprite = new THREE.Sprite( material );\n * scene.add( sprite );\n * ```\n *\n * @augments Object3D\n */\nclass Sprite extends Object3D {\n\n\t/**\n\t * Constructs a new sprite.\n\t *\n\t * @param {(SpriteMaterial|SpriteNodeMaterial)} [material] - The sprite material.\n\t */\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t-0.5, -0.5, 0, 0, 0,\n\t\t\t\t0.5, -0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t-0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\t/**\n\t\t * The sprite geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = _geometry;\n\n\t\t/**\n\t\t * The sprite material.\n\t\t *\n\t\t * @type {(SpriteMaterial|SpriteNodeMaterial)}\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * The sprite's anchor point, and the point around which the sprite rotates.\n\t\t * A value of `(0.5, 0.5)` corresponds to the midpoint of the sprite. A value\n\t\t * of `(0, 0)` corresponds to the lower left corner of the sprite.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t\t/**\n\t\t * The number of instances of this sprite.\n\t\t * Can only be used with {@link WebGPURenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.count = 1;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this sprite.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( -0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( -0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A component for providing a basic Level of Detail (LOD) mechanism.\n *\n * Every LOD level is associated with an object, and rendering can be switched\n * between them at the distances specified. Typically you would create, say,\n * three meshes, one for far away (low detail), one for mid range (medium\n * detail) and one for close up (high detail).\n *\n * ```js\n * const lod = new THREE.LOD();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n *\n * //Create spheres with 3 levels of detail and create new LOD levels for them\n * for( let i = 0; i < 3; i++ ) {\n *\n * \tconst geometry = new THREE.IcosahedronGeometry( 10, 3 - i );\n * \tconst mesh = new THREE.Mesh( geometry, material );\n * \tlod.addLevel( mesh, i * 75 );\n *\n * }\n *\n * scene.add( lod );\n * ```\n *\n * @augments Object3D\n */\nclass LOD extends Object3D {\n\n\t/**\n\t * Constructs a new LOD.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLOD = true;\n\n\t\t/**\n\t\t * The current LOD index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * This array holds the LOD levels.\n\t\t\t *\n\t\t\t * @name LOD#levels\n\t\t\t * @type {Array<{object:Object3D,distance:number,hysteresis:number}>}\n\t\t\t */\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Whether the LOD object is updated automatically by the renderer per frame\n\t\t * or not. If set to `false`, you have to call {@link LOD#update} in the\n\t\t * render loop by yourself.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a mesh that will display at a certain distance and greater. Typically\n\t * the further away the distance, the lower the detail on the mesh.\n\t *\n\t * @param {Object3D} object - The 3D object to display at this level.\n\t * @param {number} [distance=0] - The distance at which to display this level of detail.\n\t * @param {number} [hysteresis=0] - Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.\n\t * @return {LOD} A reference to this instance.\n\t */\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes an existing level, based on the distance from the camera.\n\t * Returns `true` when the level has been removed. Otherwise `false`.\n\t *\n\t * @param {number} distance - Distance of the level to remove.\n\t * @return {boolean} Whether the level has been removed or not.\n\t */\n\tremoveLevel( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0; i < levels.length; i ++ ) {\n\n\t\t\tif ( levels[ i ].distance === distance ) {\n\n\t\t\t\tconst removedElements = levels.splice( i, 1 );\n\t\t\t\tthis.remove( removedElements[ 0 ].object );\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns the currently active LOD level index.\n\t *\n\t * @return {number} The current active LOD level index.\n\t */\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\t/**\n\t * Returns a reference to the first 3D object that is greater than\n\t * the given distance.\n\t *\n\t * @param {number} distance - The LOD distance.\n\t * @return {?Object3D} The found 3D object. `null` if no 3D object has been found.\n\t */\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this LOD.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the LOD by computing which LOD level should be visible according\n\t * to the current distance of the given camera.\n\t *\n\t * @param {Camera} camera - The camera the scene is rendered with.\n\t */\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\n/**\n * A mesh that has a {@link Skeleton} that can then be used to animate the\n * vertices of the geometry with skinning/skeleton animation.\n *\n * Next to a valid skeleton, the skinned mesh requires skin indices and weights\n * as buffer attributes in its geometry. These attribute define which bones affect a single\n * vertex to a certain extend.\n *\n * Typically skinned meshes are not created manually but loaders like {@link GLTFLoader}\n * or {@link FBXLoader } import respective models.\n *\n * @augments Mesh\n */\nclass SkinnedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new skinned mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\t/**\n\t\t * `AttachedBindMode` means the skinned mesh shares the same world space as the skeleton.\n\t\t * This is not true when using `DetachedBindMode` which is useful when sharing a skeleton\n\t\t * across multiple skinned meshes.\n\t\t *\n\t\t * @type {(AttachedBindMode|DetachedBindMode)}\n\t\t * @default AttachedBindMode\n\t\t */\n\t\tthis.bindMode = AttachedBindMode;\n\n\t\t/**\n\t\t * The base matrix that is used for the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The base matrix that is used for resetting the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The bounding box of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * If the skinned mesh is animated, the bounding box should be recomputed per frame in order to reflect\n\t * the current animation state.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the skinned mesh, and updates {@link SkinnedMesh#boundingSphere}.\n\t * The bounding sphere is automatically computed by the engine once when it is needed, e.g., for ray casting\n\t * and view frustum culling. If the skinned mesh is animated, the bounding sphere should be recomputed\n\t * per frame in order to reflect the current animation state.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$5.copy( this.boundingSphere );\n\t\t_sphere$5.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$5 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Binds the given skeleton to the skinned mesh.\n\t *\n\t * @param {Skeleton} skeleton - The skeleton to bind.\n\t * @param {Matrix4} [bindMatrix] - The bind matrix. If no bind matrix is provided,\n\t * the skinned mesh's world matrix will be used instead.\n\t */\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\t/**\n\t * This method sets the skinned mesh in the rest pose).\n\t */\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\t/**\n\t * Normalizes the skin weights which are defined as a buffer attribute\n\t * in the skinned mesh's geometry.\n\t */\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the bone transform associated with the given index to the given\n\t * vertex position. Returns the updated vector.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * the skinned mesh's world matrix will be used instead.\n\t * @return {Vector3} The updated vertex position.\n\t */\n\tapplyBoneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\n/**\n * A bone which is part of a {@link Skeleton}. The skeleton in turn is used by\n * the {@link SkinnedMesh}.\n *\n * ```js\n * const root = new THREE.Bone();\n * const child = new THREE.Bone();\n *\n * root.add( child );\n * child.position.y = 5;\n * ```\n *\n * @augments Object3D\n */\nclass Bone extends Object3D {\n\n\t/**\n\t * Constructs a new bone.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\n/**\n * Creates a texture directly from raw buffer data.\n *\n * The interpretation of the data depends on type and format: If the type is\n * `UnsignedByteType`, a `Uint8Array` will be useful for addressing the\n * texel data. If the format is `RGBAFormat`, data needs four values for\n * one texel; Red, Green, Blue and Alpha (typically the opacity).\n *\n * @augments Texture\n */\nclass DataTexture extends Texture {\n\n\t/**\n\t * Constructs a new data texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=NearestFilter] - The mag filter value.\n\t * @param {number} [minFilter=NearestFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDataTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number}}\n\t\t */\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * Class for representing the armatures in `three.js`. The skeleton\n * is defined by a hierarchy of bones.\n *\n * ```js\n * const bones = [];\n *\n * const shoulder = new THREE.Bone();\n * const elbow = new THREE.Bone();\n * const hand = new THREE.Bone();\n *\n * shoulder.add( elbow );\n * elbow.add( hand );\n *\n * bones.push( shoulder , elbow, hand);\n *\n * shoulder.position.y = -5;\n * elbow.position.y = 0;\n * hand.position.y = 5;\n *\n * const armSkeleton = new THREE.Skeleton( bones );\n * ```\n */\nclass Skeleton {\n\n\t/**\n\t * Constructs a new skeleton.\n\t *\n\t * @param {Array} [bones] - An array of bones.\n\t * @param {Array} [boneInverses] - An array of bone inverse matrices.\n\t * If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}.\n\t */\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * An array of bones defining the skeleton.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.bones = bones.slice( 0 );\n\n\t\t/**\n\t\t * An array of bone inverse matrices.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.boneInverses = boneInverses;\n\n\t\t/**\n\t\t * An array buffer holding the bone data.\n\t\t * Input data for {@link Skeleton#boneTexture}.\n\t\t *\n\t\t * @type {?Float32Array}\n\t\t * @default null\n\t\t */\n\t\tthis.boneMatrices = null;\n\n\t\t/**\n\t\t * A texture holding the bone data for use\n\t\t * in the vertex shader.\n\t\t *\n\t\t * @type {?DataTexture}\n\t\t * @default null\n\t\t */\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\t/**\n\t * Initializes the skeleton. This method gets automatically called by the constructor\n\t * but depending on how the skeleton is created it might be necessary to call this method\n\t * manually.\n\t */\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses}\n\t * and fills it with new matrices.\n\t */\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new skeleton with copied values from this instance.\n\t *\n\t * @return {Skeleton} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\t/**\n\t * Computes a data texture for passing bone data to the vertex shader.\n\t *\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the skeleton's bone array and returns the first with a\n\t * matching name.\n\t *\n\t * @param {string} name - The name of the bone.\n\t * @return {Bone|undefined} The found bone. `undefined` if no bone has been found.\n\t */\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setups the skeleton by the given JSON and bones.\n\t *\n\t * @param {Object} json - The skeleton as serialized JSON.\n\t * @param {Object} bones - An array of bones.\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the skeleton into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized skeleton.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * An instanced version of a buffer attribute.\n *\n * @augments BufferAttribute\n */\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new instanced buffer attribute.\n\t *\n\t * @param {TypedArray} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t * @param {number} [meshPerAttribute=1] - How often a value of this buffer attribute should be repeated.\n\t */\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\t/**\n\t\t * Defines how often a value of this buffer attribute should be repeated. A\n\t\t * value of one means that each value of the instanced attribute is used for\n\t\t * a single instance. A value of two means that each value is used for two\n\t\t * consecutive instances (and so on).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\n\n/**\n * A special version of a mesh with instanced rendering support. Use\n * this class if you have to render a large number of objects with the same\n * geometry and material(s) but with different world transformations. The usage\n * of 'InstancedMesh' will help you to reduce the number of draw calls and thus\n * improve the overall rendering performance in your application.\n *\n * @augments Mesh\n */\nclass InstancedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new instanced mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t * @param {number} count - The number of instances.\n\t */\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedMesh = true;\n\n\t\t/**\n\t\t * Represents the local transformation of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMatrixAt}.\n\t\t *\n\t\t * @type {InstancedBufferAttribute}\n\t\t */\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\t\t/**\n\t\t * Represents the color of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setColorAt}.\n\t\t *\n\t\t * @type {?InstancedBufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.instanceColor = null;\n\n\t\t/**\n\t\t * Represents the morph target weights of all instances. You have to set its\n\t\t * {@link Texture#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMorphAt}.\n\t\t *\n\t\t * @type {?DataTexture}\n\t\t * @default null\n\t\t */\n\t\tthis.morphTexture = null;\n\n\t\t/**\n\t\t * The number of instances.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * The bounding box of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere}\n\t * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.\n\t * You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$4.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$4 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the color of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t */\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Gets the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t */\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Gets the morph target weights of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object - The target object that is used to store the method's result.\n\t */\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceColor} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The instance color.\n\t */\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The local transformation.\n\t */\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#morphTexture} to `true` after updating all the influences.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights\n\t * of a single instance.\n\t */\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\n/**\n * A two dimensional surface that extends infinitely in 3D space, represented\n * in [Hessian normal form]{@link http://mathworld.wolfram.com/HessianNormalForm.html}\n * by a unit length normal vector and a constant.\n */\nclass Plane {\n\n\t/**\n\t * Constructs a new plane.\n\t *\n\t * @param {Vector3} [normal=(1,0,0)] - A unit length vector defining the normal of the plane.\n\t * @param {number} [constant=0] - The signed distance from the origin to the plane.\n\t */\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPlane = true;\n\n\t\t/**\n\t\t * A unit length vector defining the normal of the plane.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.normal = normal;\n\n\t\t/**\n\t\t * The signed distance from the origin to the plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.constant = constant;\n\n\t}\n\n\t/**\n\t * Sets the plane components by copying the given values.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {number} constant - The constant.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane components by defining `x`, `y`, `z` as the\n\t * plane normal and `w` as the constant.\n\t *\n\t * @param {number} x - The value for the normal's x component.\n\t * @param {number} y - The value for the normal's y component.\n\t * @param {number} z - The value for the normal's z component.\n\t * @param {number} w - The constant value.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from the given normal and coplanar point (that is a point\n\t * that lies onto the plane).\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Vector3} point - A coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from three coplanar points. The winding order is\n\t * assumed to be counter-clockwise, and determines the direction of\n\t * the plane normal.\n\t *\n\t * @param {Vector3} a - The first coplanar point.\n\t * @param {Vector3} b - The second coplanar point.\n\t * @param {Vector3} c - The third coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given plane to this instance.\n\t *\n\t * @param {Plane} plane - The plane to copy.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Normalizes the plane normal and adjusts the constant accordingly.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Negates both the plane normal and the constant.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnegate() {\n\n\t\tthis.constant *= -1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given point to this plane.\n\t *\n\t * @param {Vector3} point - The point to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given sphere to this plane.\n\t *\n\t * @param {Sphere} sphere - The sphere to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\t/**\n\t * Projects a the given point onto the plane.\n\t *\n\t * @param {Vector3} point - The point to project.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The projected point on the plane.\n\t */\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the intersection point of the passed line and the plane. Returns\n\t * `null` if the line does not intersect. Returns the line's starting point if\n\t * the line is coplanar with the plane.\n\t *\n\t * @param {Line3} line - The line to compute the intersection for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given line segment intersects with (passes through) the plane.\n\t *\n\t * @param {Line3} line - The line to test.\n\t * @return {boolean} Whether the given line segment intersects with the plane or not.\n\t */\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with the plane.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with the plane or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with the plane.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with the plane or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns a coplanar vector to the plane, by calculating the\n\t * projection of the normal at the origin onto the plane.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The coplanar point.\n\t */\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\t/**\n\t * Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform.\n\t *\n\t * The optional normal matrix can be pre-computed like so:\n\t * ```js\n\t * const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\t * ```\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @param {Matrix4} [optionalNormalMatrix] - A pre-computed normal matrix.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the plane by the distance defined by the given offset vector.\n\t * Note that this only affects the plane constant and will not affect the normal vector.\n\t *\n\t * @param {Vector3} offset - The offset vector.\n\t * @return {Plane} A reference to this plane.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this plane is equal with the given one.\n\t *\n\t * @param {Plane} plane - The plane to test for equality.\n\t * @return {boolean} Whether this plane is equal with the given one.\n\t */\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\t/**\n\t * Returns a new plane with copied values from this instance.\n\t *\n\t * @return {Plane} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\nconst _defaultSpriteCenter = /*@__PURE__*/ new Vector2( 0.5, 0.5 );\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\n/**\n * Frustums are used to determine what is inside the camera's field of view.\n * They help speed up the rendering process - objects which lie outside a camera's\n * frustum can safely be excluded from rendering.\n *\n * This class is mainly intended for use internally by a renderer.\n */\nclass Frustum {\n\n\t/**\n\t * Constructs a new frustum.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t */\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\t/**\n\t\t * This array holds the planes that enclose the frustum.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\t/**\n\t * Sets the frustum planes by copying the given planes.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given frustum to this instance.\n\t *\n\t * @param {Frustum} frustum - The frustum to copy.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the frustum planes from the given projection matrix.\n\t *\n\t * @param {Matrix4} m - The projection matrix.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tplanes[ 4 ].setComponents( me2, me6, me10, me14 ).normalize(); // far\n\t\t\tplanes[ 5 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // near\n\n\t\t} else {\n\n\t\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // far\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); // near\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize(); // near\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the 3D object's bounding sphere is intersecting this frustum.\n\t *\n\t * Note that the 3D object must have a geometry so that the bounding sphere can be calculated.\n\t *\n\t * @param {Object3D} object - The 3D object to test.\n\t * @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given sprite is intersecting this frustum.\n\t *\n\t * @param {Sprite} sprite - The sprite to test.\n\t * @return {boolean} Whether the sprite is intersecting this frustum or not.\n\t */\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$3.center.set( 0, 0, 0 );\n\n\t\tconst offset = _defaultSpriteCenter.distanceTo( sprite.center );\n\n\t\t_sphere$3.radius = 0.7071067811865476 + offset;\n\t\t_sphere$3.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere is intersecting this frustum.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box is intersecting this frustum.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box is intersecting this frustum or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$6 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within the frustum.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the point lies within this frustum or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns a new frustum with copied values from this instance.\n\t *\n\t * @return {Frustum} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum$1 = /*@__PURE__*/ new Frustum();\n\n/**\n * FrustumArray is used to determine if an object is visible in at least one camera\n * from an array of cameras. This is particularly useful for multi-view renderers.\n*/\nclass FrustumArray {\n\n\t/**\n\t * Constructs a new frustum array.\n\t *\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The coordinate system to use.\n\t\t *\n\t\t * @type {WebGLCoordinateSystem|WebGPUCoordinateSystem}\n\t\t * @default WebGLCoordinateSystem\n\t\t */\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\t/**\n\t * Returns `true` if the 3D object's bounding sphere is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Object3D} object - The 3D object to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the 3D object is visible in any camera.\n\t */\n\tintersectsObject( object, cameraArray ) {\n\n\t\tif ( ! cameraArray.isArrayCamera || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsObject( object ) ) {\n\n\t\t\t\treturn true; // Object is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given sprite is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Sprite} sprite - The sprite to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the sprite is visible in any camera.\n\t */\n\tintersectsSprite( sprite, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsSprite( sprite ) ) {\n\n\t\t\t\treturn true; // Sprite is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the sphere is visible in any camera.\n\t */\n\tintersectsSphere( sphere, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsSphere( sphere ) ) {\n\n\t\t\t\treturn true; // Sphere is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the box is visible in any camera.\n\t */\n\tintersectsBox( box, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsBox( box ) ) {\n\n\t\t\t\treturn true; // Box is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within any frustum\n\t * from the camera array.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the point is visible in any camera.\n\t */\n\tcontainsPoint( point, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.containsPoint( point ) ) {\n\n\t\t\t\treturn true; // Point is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns a new frustum array with copied values from this instance.\n\t *\n\t * @return {FrustumArray} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new FrustumArray();\n\n\t}\n\n}\n\nfunction ascIdSort( a, b ) {\n\n\treturn a - b;\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( start, count, z, index ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: -1,\n\t\t\t\tcount: -1,\n\t\t\t\tz: -1,\n\t\t\t\tindex: -1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = start;\n\t\titem.count = count;\n\t\titem.z = z;\n\t\titem.index = index;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _frustumArray = /*@__PURE__*/ new FrustumArray();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _forward$1 = /*@__PURE__*/ new Vector3();\nconst _temp = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\n// safely copies array contents to a potentially smaller array\nfunction copyArrayContents( src, target ) {\n\n\tif ( src.constructor !== target.constructor ) {\n\n\t\t// if arrays are of a different type (eg due to index size increasing) then data must be per-element copied\n\t\tconst len = Math.min( src.length, target.length );\n\t\tfor ( let i = 0; i < len; i ++ ) {\n\n\t\t\ttarget[ i ] = src[ i ];\n\n\t\t}\n\n\t} else {\n\n\t\t// if the arrays use the same data layout we can use a fast block copy\n\t\tconst len = Math.min( src.length, target.length );\n\t\ttarget.set( new src.constructor( src.buffer, 0, len ) );\n\n\t}\n\n}\n\n/**\n * A special version of a mesh with multi draw batch rendering support. Use\n * this class if you have to render a large number of objects with the same\n * material but with different geometries or world transformations. The usage of\n * `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall\n * rendering performance in your application.\n *\n * ```js\n * const box = new THREE.BoxGeometry( 1, 1, 1 );\n * const sphere = new THREE.SphereGeometry( 1, 12, 12 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n *\n * // initialize and add geometries into the batched mesh\n * const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );\n * const boxGeometryId = batchedMesh.addGeometry( box );\n * const sphereGeometryId = batchedMesh.addGeometry( sphere );\n *\n * // create instances of those geometries\n * const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId );\n * const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId );\n *\n * const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId );\n * const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId );\n *\n * // position the geometries\n * batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 );\n * batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 );\n *\n * batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 );\n * batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 );\n *\n * scene.add( batchedMesh );\n * ```\n *\n * @augments Mesh\n */\nclass BatchedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new batched mesh.\n\t *\n\t * @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered.\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries.\n\t * @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBatchedMesh = true;\n\n\t\t/**\n\t\t * When set ot `true`, the individual objects of a batch are frustum culled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.perObjectFrustumCulled = true;\n\n\t\t/**\n\t\t * When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts.\n\t\t * If the material is marked as \"transparent\" objects are rendered back to front and if not then they are\n\t\t * rendered front to back.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * The bounding box of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\t/**\n\t\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered\n\t\t * sort with.\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.customSort = null;\n\n\t\t// stores visible, active, and geometry id per instance and reserved buffer ranges for geometries\n\t\tthis._instanceInfo = [];\n\t\tthis._geometryInfo = [];\n\n\t\t// instance, geometry ids that have been set as inactive, and are available to be overwritten\n\t\tthis._availableInstanceIds = [];\n\t\tthis._availableGeometryIds = [];\n\n\t\t// used to track where the next point is that geometry should be inserted\n\t\tthis._nextIndexStart = 0;\n\t\tthis._nextVertexStart = 0;\n\t\tthis._geometryCount = 0;\n\n\t\t// flags\n\t\tthis._visibilityChanged = true;\n\t\tthis._geometryInitialized = false;\n\n\t\t// cached user options\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\t// buffers for multi draw\n\t\tthis._multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\t\tthis._indirectTexture = null;\n\t\tthis._colorsTexture = null;\n\n\t\tthis._initMatricesTexture();\n\t\tthis._initIndirectTexture();\n\n\t}\n\n\t/**\n\t * The maximum number of individual instances that can be stored in the batch.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget maxInstanceCount() {\n\n\t\treturn this._maxInstanceCount;\n\n\t}\n\n\t/**\n\t * The instance count.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget instanceCount() {\n\n\t\treturn this._instanceInfo.length - this._availableInstanceIds.length;\n\n\t}\n\n\t/**\n\t * The number of unused vertices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedVertexCount() {\n\n\t\treturn this._maxVertexCount - this._nextVertexStart;\n\n\t}\n\n\t/**\n\t * The number of unused indices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedIndexCount() {\n\n\t\treturn this._maxIndexCount - this._nextIndexStart;\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initIndirectTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\tconst indirectArray = new Uint32Array( size * size );\n\t\tconst indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );\n\n\t\tthis._indirectTexture = indirectTexture;\n\n\t}\n\n\t_initColorsTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\t// 4 floats per RGBA pixel initialized to white\n\t\tconst colorsArray = new Float32Array( size * size * 4 ).fill( 1 );\n\t\tconst colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );\n\t\tcolorsTexture.colorSpace = ColorManagement.workingColorSpace;\n\n\t\tthis._colorsTexture = colorsTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\t// Reserve last u16 index for primitive restart.\n\t\t\t\tconst indexArray = maxVertexCount > 65535\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `THREE.BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the instance defined by the given ID.\n\t *\n\t * @param {number} instanceId - The instance to validate.\n\t */\n\tvalidateInstanceId( instanceId ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the geometry defined by the given ID.\n\t *\n\t * @param {number} geometryId - The geometry to validate.\n\t */\n\tvalidateGeometryId( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered sort with.\n\t *\n\t * @param {Function} func - The custom sort function.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the bounding box, updating {@link BatchedMesh#boundingBox}.\n\t * Bounding boxes aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}.\n\t * Bounding spheres aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds a new instance to the batch using the geometry of the given ID and returns\n\t * a new id referring to the new instance to be used by other functions.\n\t *\n\t * @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}.\n\t * @return {number} The instance ID.\n\t */\n\taddInstance( geometryId ) {\n\n\t\tconst atCapacity = this._instanceInfo.length >= this.maxInstanceCount;\n\n\t\t// ensure we're not over geometry\n\t\tif ( atCapacity && this._availableInstanceIds.length === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\tconst instanceInfo = {\n\t\t\tvisible: true,\n\t\t\tactive: true,\n\t\t\tgeometryIndex: geometryId,\n\t\t};\n\n\t\tlet drawId = null;\n\n\t\t// Prioritize using previously freed instance ids\n\t\tif ( this._availableInstanceIds.length > 0 ) {\n\n\t\t\tthis._availableInstanceIds.sort( ascIdSort );\n\n\t\t\tdrawId = this._availableInstanceIds.shift();\n\t\t\tthis._instanceInfo[ drawId ] = instanceInfo;\n\n\t\t} else {\n\n\t\t\tdrawId = this._instanceInfo.length;\n\t\t\tthis._instanceInfo.push( instanceInfo );\n\n\t\t}\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\t_matrix$1.identity().toArray( matricesTexture.image.data, drawId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tif ( colorsTexture ) {\n\n\t\t\t_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );\n\t\t\tcolorsTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn drawId;\n\n\t}\n\n\t/**\n\t * Adds the given geometry to the batch and returns the associated\n\t * geometry id referring to it to be used in other functions.\n\t *\n\t * @param {BufferGeometry} geometry - The geometry to add.\n\t * @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of\n\t * vertex buffer space to reserve for the added geometry. This is necessary if it is planned\n\t * to set a new geometry at this index at a later time that is larger than the original geometry.\n\t * Defaults to the length of the given geometry vertex buffer.\n\t * @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index\n\t * buffer space to reserve for the added geometry. This is necessary if it is planned to set a\n\t * new geometry at this index at a later time that is larger than the original geometry. Defaults to\n\t * the length of the given geometry index buffer.\n\t * @return {number} The geometry ID.\n\t */\n\taddGeometry( geometry, reservedVertexCount = -1, reservedIndexCount = -1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst geometryInfo = {\n\t\t\t// geometry information\n\t\t\tvertexStart: -1,\n\t\t\tvertexCount: -1,\n\t\t\treservedVertexCount: -1,\n\n\t\t\tindexStart: -1,\n\t\t\tindexCount: -1,\n\t\t\treservedIndexCount: -1,\n\n\t\t\t// draw range information\n\t\t\tstart: -1,\n\t\t\tcount: -1,\n\n\t\t\t// state\n\t\t\tboundingBox: null,\n\t\t\tboundingSphere: null,\n\t\t\tactive: true,\n\t\t};\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tgeometryInfo.vertexStart = this._nextVertexStart;\n\t\tgeometryInfo.reservedVertexCount = reservedVertexCount === -1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount;\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tgeometryInfo.indexStart = this._nextIndexStart;\n\t\t\tgeometryInfo.reservedIndexCount = reservedIndexCount === -1 ? index.count : reservedIndexCount;\n\n\t\t}\n\n\t\tif (\n\t\t\tgeometryInfo.indexStart !== -1 &&\n\t\t\tgeometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount ||\n\t\t\tgeometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\t// update id\n\t\tlet geometryId;\n\t\tif ( this._availableGeometryIds.length > 0 ) {\n\n\t\t\tthis._availableGeometryIds.sort( ascIdSort );\n\n\t\t\tgeometryId = this._availableGeometryIds.shift();\n\t\t\tgeometryInfoList[ geometryId ] = geometryInfo;\n\n\n\t\t} else {\n\n\t\t\tgeometryId = this._geometryCount;\n\t\t\tthis._geometryCount ++;\n\t\t\tgeometryInfoList.push( geometryInfo );\n\n\t\t}\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\t// increment the next geometry position\n\t\tthis._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount;\n\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Replaces the geometry at the given ID with the provided geometry. Throws an error if there\n\t * is not enough space reserved for geometry. Calling this will change all instances that are\n\t * rendering that geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry that should be replaced with the given geometry.\n\t * @param {BufferGeometry} geometry - The new geometry.\n\t * @return {number} The geometry ID.\n\t */\n\tsetGeometryAt( geometryId, geometry ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > geometryInfo.reservedIndexCount ||\n\t\t\tgeometry.attributes.position.count > geometryInfo.reservedVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry buffer data over\n\t\tconst vertexStart = geometryInfo.vertexStart;\n\t\tconst reservedVertexCount = geometryInfo.reservedVertexCount;\n\t\tgeometryInfo.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = geometryInfo.indexStart;\n\t\t\tconst reservedIndexCount = geometryInfo.reservedIndexCount;\n\t\t\tgeometryInfo.indexCount = geometry.getIndex().count;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount );\n\n\t\t}\n\n\t\t// update the draw range\n\t\tgeometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\t\tgeometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount;\n\n\t\t// store the bounding boxes\n\t\tgeometryInfo.boundingBox = null;\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tgeometryInfo.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tgeometryInfo.boundingSphere = null;\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tgeometryInfo.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Deletes the geometry defined by the given ID from this batch. Any instances referencing\n\t * this geometry will also be removed as a side effect.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteGeometry( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// delete any instances associated with this geometry\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active && instanceInfo[ i ].geometryIndex === geometryId ) {\n\n\t\t\t\tthis.deleteInstance( i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometryInfoList[ geometryId ].active = false;\n\t\tthis._availableGeometryIds.push( geometryId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deletes an existing instance from the batch using the given ID.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteInstance( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tthis._instanceInfo[ instanceId ].active = false;\n\t\tthis._availableInstanceIds.push( instanceId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Repacks the sub geometries in [name] to remove any unused space remaining from\n\t * previously deleted geometry, freeing up space to add new geometry.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\toptimize() {\n\n\t\t// track the next indices to copy data to\n\t\tlet nextVertexStart = 0;\n\t\tlet nextIndexStart = 0;\n\n\t\t// Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest\n\t\t// in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order.\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst indices = geometryInfoList\n\t\t\t.map( ( e, i ) => i )\n\t\t\t.sort( ( a, b ) => {\n\n\t\t\t\treturn geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart;\n\n\t\t\t} );\n\n\t\tconst geometry = this.geometry;\n\t\tfor ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) {\n\n\t\t\t// if a geometry range is inactive then don't copy anything\n\t\t\tconst index = indices[ i ];\n\t\t\tconst geometryInfo = geometryInfoList[ index ];\n\t\t\tif ( geometryInfo.active === false ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// if a geometry contains an index buffer then shift it, as well\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\tif ( geometryInfo.indexStart !== nextIndexStart ) {\n\n\t\t\t\t\tconst { indexStart, vertexStart, reservedIndexCount } = geometryInfo;\n\t\t\t\t\tconst index = geometry.index;\n\t\t\t\t\tconst array = index.array;\n\n\t\t\t\t\t// shift the index pointers based on how the vertex data will shift\n\t\t\t\t\t// adjusting the index must happen first so the original vertex start value is available\n\t\t\t\t\tconst elementDelta = nextVertexStart - vertexStart;\n\t\t\t\t\tfor ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) {\n\n\t\t\t\t\t\tarray[ j ] = array[ j ] + elementDelta;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount );\n\t\t\t\t\tindex.addUpdateRange( nextIndexStart, reservedIndexCount );\n\n\t\t\t\t\tgeometryInfo.indexStart = nextIndexStart;\n\n\t\t\t\t}\n\n\t\t\t\tnextIndexStart += geometryInfo.reservedIndexCount;\n\n\t\t\t}\n\n\t\t\t// if a geometry needs to be moved then copy attribute data to overwrite unused space\n\t\t\tif ( geometryInfo.vertexStart !== nextVertexStart ) {\n\n\t\t\t\tconst { vertexStart, reservedVertexCount } = geometryInfo;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tfor ( const key in attributes ) {\n\n\t\t\t\t\tconst attribute = attributes[ key ];\n\t\t\t\t\tconst { array, itemSize } = attribute;\n\t\t\t\t\tarray.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize );\n\t\t\t\t\tattribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tgeometryInfo.vertexStart = nextVertexStart;\n\n\t\t\t}\n\n\t\t\tnextVertexStart += geometryInfo.reservedVertexCount;\n\t\t\tgeometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\n\t\t\t// step the next geometry points to the shifted position\n\t\t\tthis._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0;\n\t\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the bounding box for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding box for.\n\t * @param {Box3} target - The target object that is used to store the method's result.\n\t * @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingBoxAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingBox === null ) {\n\n\t\t\tconst box = new Box3();\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tgeometryInfo.boundingBox = box;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingBox );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the bounding sphere for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding sphere for.\n\t * @param {Sphere} target - The target object that is used to store the method's result.\n\t * @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingSphereAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingSphere === null ) {\n\n\t\t\tconst sphere = new Sphere();\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tgeometryInfo.boundingSphere = sphere;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingSphere );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance.\n\t * Negatively scaled matrices are not supported.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the matrix of.\n\t * @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tmatrix.toArray( matricesArray, instanceId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the matrix of.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t * @return {Matrix4} The instance's local transformation matrix.\n\t */\n\tgetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn matrix.fromArray( this._matricesTexture.image.data, instanceId * 16 );\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the color of.\n\t * @param {Color} color - The color to set the instance to.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._colorsTexture === null ) {\n\n\t\t\tthis._initColorsTexture();\n\n\t\t}\n\n\t\tcolor.toArray( this._colorsTexture.image.data, instanceId * 4 );\n\t\tthis._colorsTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the color of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the color of.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t * @return {Color} The instance's color.\n\t */\n\tgetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn color.fromArray( this._colorsTexture.image.data, instanceId * 4 );\n\n\t}\n\n\t/**\n\t * Sets the visibility of the instance.\n\t *\n\t * @param {number} instanceId - The id of the instance to set the visibility of.\n\t * @param {boolean} visible - Whether the instance is visible or not.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetVisibleAt( instanceId, visible ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._instanceInfo[ instanceId ].visible === visible ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis._instanceInfo[ instanceId ].visible = visible;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the visibility state of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the visibility state of.\n\t * @return {boolean} Whether the instance is visible or not.\n\t */\n\tgetVisibleAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].visible;\n\n\t}\n\n\t/**\n\t * Sets the geometry ID of the instance at the given index.\n\t *\n\t * @param {number} instanceId - The ID of the instance to set the geometry ID of.\n\t * @param {number} geometryId - The geometry ID to be use by the instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetGeometryIdAt( instanceId, geometryId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tthis._instanceInfo[ instanceId ].geometryIndex = geometryId;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the geometry ID of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the geometry ID of.\n\t * @return {number} The instance's geometry ID.\n\t */\n\tgetGeometryIdAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].geometryIndex;\n\n\t}\n\n\t/**\n\t * Get the range representing the subset of triangles related to the attached geometry,\n\t * indicating the starting offset and count, or `null` if invalid.\n\t *\n\t * @param {number} geometryId - The id of the geometry to get the range of.\n\t * @param {Object} [target] - The target object that is used to store the method's result.\n\t * @return {{\n\t * \tvertexStart:number,vertexCount:number,reservedVertexCount:number,\n\t * \tindexStart:number,indexCount:number,reservedIndexCount:number,\n\t * \tstart:number,count:number\n\t * }} The result object with range data.\n\t */\n\tgetGeometryRangeAt( geometryId, target = {} ) {\n\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\ttarget.vertexStart = geometryInfo.vertexStart;\n\t\ttarget.vertexCount = geometryInfo.vertexCount;\n\t\ttarget.reservedVertexCount = geometryInfo.reservedVertexCount;\n\n\t\ttarget.indexStart = geometryInfo.indexStart;\n\t\ttarget.indexCount = geometryInfo.indexCount;\n\t\ttarget.reservedIndexCount = geometryInfo.reservedIndexCount;\n\n\t\ttarget.start = geometryInfo.start;\n\t\ttarget.count = geometryInfo.count;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Resizes the necessary buffers to support the provided number of instances.\n\t * If the provided arguments shrink the number of instances but there are not enough\n\t * unused Ids at the end of the list then an error is thrown.\n\t *\n\t * @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch.\n\t*/\n\tsetInstanceCount( maxInstanceCount ) {\n\n\t\t// shrink the available instances as much as possible\n\t\tconst availableInstanceIds = this._availableInstanceIds;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tavailableInstanceIds.sort( ascIdSort );\n\t\twhile ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {\n\n\t\t\tinstanceInfo.pop();\n\t\t\tavailableInstanceIds.pop();\n\n\t\t}\n\n\t\t// throw an error if it can't be shrunk to the desired size\n\t\tif ( maxInstanceCount < instanceInfo.length ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` );\n\n\t\t}\n\n\t\t// copy the multi draw counts\n\t\tconst multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tconst multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tcopyArrayContents( this._multiDrawCounts, multiDrawCounts );\n\t\tcopyArrayContents( this._multiDrawStarts, multiDrawStarts );\n\n\t\tthis._multiDrawCounts = multiDrawCounts;\n\t\tthis._multiDrawStarts = multiDrawStarts;\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\n\t\t// update texture data for instance sampling\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst colorsTexture = this._colorsTexture;\n\n\t\tindirectTexture.dispose();\n\t\tthis._initIndirectTexture();\n\t\tcopyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data );\n\n\t\tmatricesTexture.dispose();\n\t\tthis._initMatricesTexture();\n\t\tcopyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data );\n\n\t\tif ( colorsTexture ) {\n\n\t\t\tcolorsTexture.dispose();\n\t\t\tthis._initColorsTexture();\n\t\t\tcopyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes.\n\t * If the provided arguments shrink the geometry buffers but there is not enough unused space at the\n\t * end of the geometry attributes then an error is thrown.\n\t *\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to.\n\t * @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to.\n\t*/\n\tsetGeometrySize( maxVertexCount, maxIndexCount ) {\n\n\t\t// Check if we can shrink to the requested vertex attribute size\n\t\tconst validRanges = [ ...this._geometryInfo ].filter( info => info.active );\n\t\tconst requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) );\n\t\tif ( requiredVertexLength > maxVertexCount ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t}\n\n\t\t// Check if we can shrink to the requested index attribute size\n\t\tif ( this.geometry.index ) {\n\n\t\t\tconst requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) );\n\t\t\tif ( requiredIndexLength > maxIndexCount ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\t// dispose of the previous geometry\n\t\tconst oldGeometry = this.geometry;\n\t\toldGeometry.dispose();\n\n\t\t// recreate the geometry needed based on the previous variant\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tif ( this._geometryInitialized ) {\n\n\t\t\tthis._geometryInitialized = false;\n\t\t\tthis.geometry = new BufferGeometry();\n\t\t\tthis._initializeGeometry( oldGeometry );\n\n\t\t}\n\n\t\t// copy data from the previous geometry\n\t\tconst geometry = this.geometry;\n\t\tif ( oldGeometry.index ) {\n\n\t\t\tcopyArrayContents( oldGeometry.index.array, geometry.index.array );\n\n\t\t}\n\n\t\tfor ( const key in oldGeometry.attributes ) {\n\n\t\t\tcopyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array );\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t_mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count );\n\n\t\t\t// get the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._geometryInfo = source._geometryInfo.map( info => ( {\n\t\t\t...info,\n\n\t\t\tboundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null,\n\t\t\tboundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null,\n\t\t} ) );\n\t\tthis._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) );\n\n\t\tthis._availableInstanceIds = source._availableInstanceIds.slice();\n\t\tthis._availableGeometryIds = source._availableGeometryIds.slice();\n\n\t\tthis._nextIndexStart = source._nextIndexStart;\n\t\tthis._nextVertexStart = source._nextVertexStart;\n\t\tthis._geometryCount = source._geometryCount;\n\n\t\tthis._maxInstanceCount = source._maxInstanceCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._indirectTexture = source._indirectTexture.clone();\n\t\tthis._indirectTexture.image.data = this._indirectTexture.image.data.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture = source._colorsTexture.clone();\n\t\t\tthis._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\n\t\tthis._indirectTexture.dispose();\n\t\tthis._indirectTexture = null;\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture.dispose();\n\t\t\tthis._colorsTexture = null;\n\n\t\t}\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst indirectArray = indirectTexture.image.data;\n\n\t\tconst frustum = camera.isArrayCamera ? _frustumArray : _frustum;\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled && ! camera.isArrayCamera ) {\n\n\t\t\t_matrix$1\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_matrix$1,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t}\n\n\t\tlet multiDrawCount = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_matrix$1.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix$1 );\n\t\t\t_forward$1.set( 0, 0, -1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix$1 );\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! frustum.intersectsSphere( _sphere$2, camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tconst z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward$1 );\n\t\t\t\t\t\t_renderList.push( geometryInfo.start, geometryInfo.count, z, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ multiDrawCount ] = item.count;\n\t\t\t\tindirectArray[ multiDrawCount ] = item.index;\n\t\t\t\tmultiDrawCount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! frustum.intersectsSphere( _sphere$2, camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tmultiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ multiDrawCount ] = geometryInfo.count;\n\t\t\t\t\t\tindirectArray[ multiDrawCount ] = i;\n\t\t\t\t\t\tmultiDrawCount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tindirectTexture.needsUpdate = true;\n\t\tthis._multiDrawCount = multiDrawCount;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\n/**\n * A material for rendering line primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );\n * ```\n *\n * @augments Material\n */\nclass LineBasicMaterial extends Material {\n\n\t/**\n\t * Constructs a new line basic material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * Sets the color of the lines using data from a texture. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * Controls line thickness or lines.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}. WebGL and WebGPU\n\t\t * ignore this setting and always render line primitives with a\n\t\t * width of one pixel.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.linewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of line ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('butt'|'round'|'square')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.linecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of line joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.linejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\n/**\n * A continuous line. The line are rendered by connecting consecutive\n * vertices with straight lines.\n *\n * ```js\n * const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );\n *\n * const points = [];\n * points.push( new THREE.Vector3( - 10, 0, 0 ) );\n * points.push( new THREE.Vector3( 0, 10, 0 ) );\n * points.push( new THREE.Vector3( 10, 0, 0 ) );\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments Object3D\n */\nclass Line extends Object3D {\n\n\t/**\n\t * Constructs a new line.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\t/**\n\t\t * The line geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default LineBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes an array of distance values which are necessary for rendering dashed lines.\n\t * For each vertex in the geometry, the method calculates the cumulative length from the\n\t * current point to the very beginning of the line.\n\t *\n\t * @return {Line} A reference to this line.\n\t */\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: i,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tbarycoord: null,\n\t\tobject: object\n\n\t};\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\n/**\n * A series of lines drawn between pairs of vertices.\n *\n * @augments Line\n */\nclass LineSegments extends Line {\n\n\t/**\n\t * Constructs a new line segments.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A continuous line. This is nearly the same as {@link Line} the only difference\n * is that the last vertex is connected with the first vertex in order to close\n * the line to form a loop.\n *\n * @augments Line\n */\nclass LineLoop extends Line {\n\n\t/**\n\t * Constructs a new line loop.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\n/**\n * A material for rendering point primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const vertices = [];\n *\n * for ( let i = 0; i < 10000; i ++ ) {\n * \tconst x = THREE.MathUtils.randFloatSpread( 2000 );\n * \tconst y = THREE.MathUtils.randFloatSpread( 2000 );\n * \tconst z = THREE.MathUtils.randFloatSpread( 2000 );\n *\n * \tvertices.push( x, y, z );\n * }\n *\n * const geometry = new THREE.BufferGeometry();\n * geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );\n * const material = new THREE.PointsMaterial( { color: 0x888888 } );\n * const points = new THREE.Points( geometry, material );\n * scene.add( points );\n * ```\n *\n * @augments Material\n */\nclass PointsMaterial extends Material {\n\n\t/**\n\t * Constructs a new points material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Defines the size of the points in pixels.\n\t\t *\n\t\t * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.size = 1;\n\n\t\t/**\n\t\t * Specifies whether size of individual points is attenuated by the camera depth (perspective camera only).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sizeAttenuation = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\n/**\n * A class for displaying points or point clouds.\n *\n * @augments Object3D\n */\nclass Points extends Object3D {\n\n\t/**\n\t * Constructs a new point cloud.\n\t *\n\t * @param {BufferGeometry} [geometry] - The points geometry.\n\t * @param {Material|Array} [material] - The points material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\t/**\n\t\t * The points geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default PointsMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this point cloud.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tfaceIndex: null,\n\t\t\tbarycoord: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * A texture for use with a video.\n *\n * ```js\n * // assuming you have created a HTML video element with id=\"video\"\n * const video = document.getElementById( 'video' );\n * const texture = new THREE.VideoTexture( video );\n * ```\n *\n * Note: When using video textures with {@link WebGPURenderer}, {@link Texture#colorSpace} must be\n * set to THREE.SRGBColorSpace.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments Texture\n */\nclass VideoTexture extends Texture {\n\n\t/**\n\t * Constructs a new video texture.\n\t *\n\t * @param {HTMLVideoElement} video - The video element to use as a data source for the texture.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( video, mapping, wrapS, wrapT, magFilter = LinearFilter, minFilter = LinearFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isVideoTexture = true;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * The video frame request callback identifier, which is a positive integer.\n\t\t *\n\t\t * Value of 0 represents no scheduled rVFC.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t */\n\t\tthis._requestVideoFrameCallbackId = 0;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tscope._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tthis._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\t/**\n\t * This method is called automatically by the renderer and sets {@link Texture#needsUpdate}\n\t * to `true` every time a new frame is available.\n\t *\n\t * Only relevant if `requestVideoFrameCallback` is not supported in the browser.\n\t */\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this._requestVideoFrameCallbackId !== 0 ) {\n\n\t\t\tthis.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );\n\n\t\t}\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n/**\n * This class can be used as an alternative way to define video data. Instead of using\n * an instance of `HTMLVideoElement` like with `VideoTexture`, `VideoFrameTexture` expects each frame is\n * defined manually via {@link VideoFrameTexture#setFrame}. A typical use case for this module is when\n * video frames are decoded with the WebCodecs API.\n *\n * ```js\n * const texture = new THREE.VideoFrameTexture();\n * texture.setFrame( frame );\n * ```\n *\n * @augments VideoTexture\n */\nclass VideoFrameTexture extends VideoTexture {\n\n\t/**\n\t * Constructs a new video frame texture.\n\t *\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isVideoFrameTexture = true;\n\n\t}\n\n\t/**\n\t * This method overwritten with an empty implementation since\n\t * this type of texture is updated via `setFrame()`.\n\t */\n\tupdate() {}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this ); // restoring Texture.clone()\n\n\t}\n\n\t/**\n\t * Sets the current frame of the video. This will automatically update the texture\n\t * so the data can be used for rendering.\n\t *\n\t * @param {VideoFrame} frame - The video frame.\n\t */\n\tsetFrame( frame ) {\n\n\t\tthis.image = frame;\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * This class can only be used in combination with `copyFramebufferToTexture()` methods\n * of renderers. It extracts the contents of the current bound framebuffer and provides it\n * as a texture for further usage.\n *\n * ```js\n * const pixelRatio = window.devicePixelRatio;\n * const textureSize = 128 * pixelRatio;\n *\n * const frameTexture = new FramebufferTexture( textureSize, textureSize );\n *\n * // calculate start position for copying part of the frame data\n * const vector = new Vector2();\n * vector.x = ( window.innerWidth * pixelRatio / 2 ) - ( textureSize / 2 );\n * vector.y = ( window.innerHeight * pixelRatio / 2 ) - ( textureSize / 2 );\n *\n * renderer.render( scene, camera );\n *\n * // copy part of the rendered frame into the framebuffer texture\n * renderer.copyFramebufferToTexture( frameTexture, vector );\n * ```\n *\n * @augments Texture\n */\nclass FramebufferTexture extends Texture {\n\n\t/**\n\t * Constructs a new framebuffer texture.\n\t *\n\t * @param {number} [width] - The width of the texture.\n\t * @param {number} [height] - The height of the texture.\n\t */\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFramebufferTexture = true;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default to disable filtering.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default to disable filtering.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Creates a texture based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments Texture\n */\nclass CompressedTexture extends Texture {\n\n\t/**\n\t * Constructs a new compressed texture.\n\t *\n\t * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip)\n\t * the data and dimensions.\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedTexture = true;\n\n\t\t/**\n\t\t * The image property of a compressed texture just defines its dimensions.\n\t\t *\n\t\t * @type {{width:number,height:number}}\n\t\t */\n\t\tthis.image = { width: width, height: height };\n\n\t\t/**\n\t\t * This array holds for all mipmaps (including the bases mip) the data and dimensions.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.mipmaps = mipmaps;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default since it is not possible to\n\t\t * flip compressed textures.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default since it is not\n\t\t * possible to generate mipmaps for compressed data. Mipmaps\n\t\t * must be embedded in the compressed texture file.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\n/**\n * Creates a texture 2D array based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments CompressedTexture\n */\nclass CompressedArrayTexture extends CompressedTexture {\n\n\t/**\n\t * Constructs a new compressed array texture.\n\t *\n\t * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip)\n\t * the data and dimensions.\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} depth - The depth of the texture.\n\t * @param {number} [format=RGBAFormat] - The min filter value.\n\t * @param {number} [type=UnsignedByteType] - The min filter value.\n\t */\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedArrayTexture = true;\n\n\t\t/**\n\t\t * The image property of a compressed texture just defines its dimensions.\n\t\t *\n\t\t * @name CompressedArrayTexture#image\n\t\t * @type {{width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image.depth = depth;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * A set of all layers which need to be updated in the texture.\n\t\t *\n\t\t * @type {Set}\n\t\t */\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\t/**\n\t * Describes that a specific layer of the texture needs to be updated.\n\t * Normally when {@link Texture#needsUpdate} is set to `true`, the\n\t * entire compressed texture array is sent to the GPU. Marking specific\n\t * layers will only transmit subsets of all mipmaps associated with a\n\t * specific depth in the array which is often much more performant.\n\t *\n\t * @param {number} layerIndex - The layer index that should be updated.\n\t */\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\t/**\n\t * Resets the layer updates registry.\n\t */\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\n/**\n * Creates a cube texture based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments CompressedTexture\n */\nclass CompressedCubeTexture extends CompressedTexture {\n\n\t/**\n\t * Constructs a new compressed texture.\n\t *\n\t * @param {Array} images - An array of compressed textures.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t */\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedCubeTexture = true;\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\n/**\n * Creates a texture from a canvas element.\n *\n * This is almost the same as the base texture class, except that it sets {@link Texture#needsUpdate}\n * to `true` immediately since a canvas can directly be used for rendering.\n *\n * @augments Texture\n */\nclass CanvasTexture extends Texture {\n\n\t/**\n\t * Constructs a new texture.\n\t *\n\t * @param {HTMLCanvasElement} [canvas] - The HTML canvas element.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * This class can be used to automatically save the depth information of a\n * rendering into a texture.\n *\n * @augments Texture\n */\nclass DepthTexture extends Texture {\n\n\t/**\n\t * Constructs a new depth texture.\n\t *\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} [type=UnsignedIntType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {number} [format=DepthFormat] - The texture format.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat, depth = 1 ) {\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tconst image = { width: width, height: height, depth: depth };\n\n\t\tsuper( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDepthTexture = true;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * Code corresponding to the depth compare function.\n\t\t *\n\t\t * @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)}\n\t\t * @default null\n\t\t */\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.source = new Source( Object.assign( {}, source.image ) ); // see #30540\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents a texture created externally with the same renderer context.\n *\n * This may be a texture from a protected media stream, device camera feed,\n * or other data feeds like a depth sensor.\n *\n * Note that this class is only supported in {@link WebGLRenderer}, and in\n * the {@link WebGPURenderer} WebGPU backend.\n *\n * @augments Texture\n */\nclass ExternalTexture extends Texture {\n\n\t/**\n\t * Creates a new raw texture.\n\t *\n\t * @param {?(WebGLTexture|GPUTexture)} [sourceTexture=null] - The external texture.\n\t */\n\tconstructor( sourceTexture = null ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The external source texture.\n\t\t *\n\t\t * @type {?(WebGLTexture|GPUTexture)}\n\t\t * @default null\n\t\t */\n\t\tthis.sourceTexture = sourceTexture;\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isExternalTexture = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sourceTexture = source.sourceTexture;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a capsule.\n *\n * ```js\n * const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const capsule = new THREE.Mesh( geometry, material );\n * scene.add( capsule );\n * ```\n *\n * @augments BufferGeometry\n */\nclass CapsuleGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new capsule geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the capsule.\n\t * @param {number} [height=1] - Height of the middle section.\n\t * @param {number} [capSegments=4] - Number of curve segments used to build each cap.\n\t * @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule. Must be an integer >= 3.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the middle section. Must be an integer >= 1.\n\t */\n\tconstructor( radius = 1, height = 1, capSegments = 4, radialSegments = 8, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t};\n\n\t\theight = Math.max( 0, height );\n\t\tcapSegments = Math.max( 1, Math.floor( capSegments ) );\n\t\tradialSegments = Math.max( 3, Math.floor( radialSegments ) );\n\t\theightSegments = Math.max( 1, Math.floor( heightSegments ) );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst halfHeight = height / 2;\n\t\tconst capArcLength = ( Math.PI / 2 ) * radius;\n\t\tconst cylinderPartLength = height;\n\t\tconst totalArcLength = 2 * capArcLength + cylinderPartLength;\n\n\t\tconst numVerticalSegments = capSegments * 2 + heightSegments;\n\t\tconst verticesPerRow = radialSegments + 1;\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\t// generate vertices, normals, and uvs\n\n\t\tfor ( let iy = 0; iy <= numVerticalSegments; iy ++ ) {\n\n\t\t\tlet currentArcLength = 0;\n\t\t\tlet profileY = 0;\n\t\t\tlet profileRadius = 0;\n\t\t\tlet normalYComponent = 0;\n\n\t\t\tif ( iy <= capSegments ) {\n\n\t\t\t\t// bottom cap\n\t\t\t\tconst segmentProgress = iy / capSegments;\n\t\t\t\tconst angle = ( segmentProgress * Math.PI ) / 2;\n\t\t\t\tprofileY = - halfHeight - radius * Math.cos( angle );\n\t\t\t\tprofileRadius = radius * Math.sin( angle );\n\t\t\t\tnormalYComponent = - radius * Math.cos( angle );\n\t\t\t\tcurrentArcLength = segmentProgress * capArcLength;\n\n\t\t\t} else if ( iy <= capSegments + heightSegments ) {\n\n\t\t\t\t// middle section\n\t\t\t\tconst segmentProgress = ( iy - capSegments ) / heightSegments;\n\t\t\t\tprofileY = - halfHeight + segmentProgress * height;\n\t\t\t\tprofileRadius = radius;\n\t\t\t\tnormalYComponent = 0;\n\t\t\t\tcurrentArcLength = capArcLength + segmentProgress * cylinderPartLength;\n\n\t\t\t} else {\n\n\t\t\t\t// top cap\n\t\t\t\tconst segmentProgress =\n\t\t\t\t\t( iy - capSegments - heightSegments ) / capSegments;\n\t\t\t\tconst angle = ( segmentProgress * Math.PI ) / 2;\n\t\t\t\tprofileY = halfHeight + radius * Math.sin( angle );\n\t\t\t\tprofileRadius = radius * Math.cos( angle );\n\t\t\t\tnormalYComponent = radius * Math.sin( angle );\n\t\t\t\tcurrentArcLength =\n\t\t\t\t\tcapArcLength + cylinderPartLength + segmentProgress * capArcLength;\n\n\t\t\t}\n\n\t\t\tconst v = Math.max( 0, Math.min( 1, currentArcLength / totalArcLength ) );\n\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / radialSegments;\n\n\t\t\t} else if ( iy === numVerticalSegments ) {\n\n\t\t\t\tuOffset = -0.5 / radialSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= radialSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / radialSegments;\n\t\t\t\tconst theta = u * Math.PI * 2;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - profileRadius * cosTheta;\n\t\t\t\tvertex.y = profileY;\n\t\t\t\tvertex.z = profileRadius * sinTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set(\n\t\t\t\t\t- profileRadius * cosTheta,\n\t\t\t\t\tnormalYComponent,\n\t\t\t\t\tprofileRadius * sinTheta\n\t\t\t\t);\n\t\t\t\tnormal.normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, v );\n\n\t\t\t}\n\n\t\t\tif ( iy > 0 ) {\n\n\t\t\t\tconst prevIndexRow = ( iy - 1 ) * verticesPerRow;\n\t\t\t\tfor ( let ix = 0; ix < radialSegments; ix ++ ) {\n\n\t\t\t\t\tconst i1 = prevIndexRow + ix;\n\t\t\t\t\tconst i2 = prevIndexRow + ix + 1;\n\t\t\t\t\tconst i3 = iy * verticesPerRow + ix;\n\t\t\t\t\tconst i4 = iy * verticesPerRow + ix + 1;\n\n\t\t\t\t\tindices.push( i1, i2, i3 );\n\t\t\t\t\tindices.push( i2, i4, i3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CapsuleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.height, data.capSegments, data.radialSegments, data.heightSegments );\n\n\t}\n\n}\n\n/**\n * A simple shape of Euclidean geometry. It is constructed from a\n * number of triangular segments that are oriented around a central point and\n * extend as far out as a given radius. It is built counter-clockwise from a\n * start angle and a given central angle. It can also be used to create\n * regular polygons, where the number of segments determines the number of\n * sides.\n *\n * ```js\n * const geometry = new THREE.CircleGeometry( 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const circle = new THREE.Mesh( geometry, material );\n * scene.add( circle )\n * ```\n *\n * @augments BufferGeometry\n */\nclass CircleGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new circle geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the circle.\n\t * @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.\n\t * @param {number} [thetaStart=0] - Start angle for first segment in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,\n\t * of the circular sector in radians. The default value results in a complete circle.\n\t */\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CircleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cylinder.\n *\n * ```js\n * const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cylinder = new THREE.Mesh( geometry, material );\n * scene.add( cylinder );\n * ```\n *\n * @augments BufferGeometry\n */\nclass CylinderGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new cylinder geometry.\n\t *\n\t * @param {number} [radiusTop=1] - Radius of the cylinder at the top.\n\t * @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.\n\t * @param {number} [height=1] - Height of the cylinder.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.\n\t * @param {number} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cylinder.\n\t */\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tif ( radiusTop > 0 || y !== 0 ) {\n\n\t\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( radiusBottom > 0 || y !== heightSegments - 1 ) {\n\n\t\t\t\t\t\tindices.push( b, c, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : -1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CylinderGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cone.\n *\n * ```js\n * const geometry = new THREE.ConeGeometry( 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cone = new THREE.Mesh(geometry, material );\n * scene.add( cone );\n * ```\n *\n * @augments CylinderGeometry\n */\nclass ConeGeometry extends CylinderGeometry {\n\n\t/**\n\t * Constructs a new cone geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the cone base.\n\t * @param {number} [height=1] - Height of the cone.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.\n\t * @param {number} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cone.\n\t */\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {ConeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A polyhedron is a solid in three dimensions with flat faces. This class\n * will take an array of vertices, project them onto a sphere, and then\n * divide them up to the desired level of detail.\n *\n * @augments BufferGeometry\n */\nclass PolyhedronGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new polyhedron geometry.\n\t *\n\t * @param {Array} [vertices] - A flat array of vertices describing the base shape.\n\t * @param {Array} [indices] - A flat array of indices describing the base shape.\n\t * @param {number} [radius=1] - The radius of the shape.\n\t * @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.\n\t */\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PolyhedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a dodecahedron.\n *\n * ```js\n * const geometry = new THREE.DodecahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const dodecahedron = new THREE.Mesh( geometry, material );\n * scene.add( dodecahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new dodecahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the dodecahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t-1, -1, -1,\t-1, -1, 1,\n\t\t\t-1, 1, -1, -1, 1, 1,\n\t\t\t1, -1, -1, 1, -1, 1,\n\t\t\t1, 1, -1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {DodecahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\n/**\n * Can be used as a helper object to view the edges of a geometry.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry();\n * const edges = new THREE.EdgesGeometry( geometry );\n * const line = new THREE.LineSegments( edges );\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass EdgesGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new edges geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t * @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)\n\t * between the face normals of the adjoining faces exceeds this value.\n\t */\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * An abstract base class for creating an analytic curve object that contains methods\n * for interpolation.\n *\n * @abstract\n */\nclass Curve {\n\n\t/**\n\t * Constructs a new curve.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Curve';\n\n\t\t/**\n\t\t * This value determines the amount of divisions when calculating the\n\t\t * cumulative segment lengths of a curve via {@link Curve#getLengths}. To ensure\n\t\t * precision when using methods like {@link Curve#getSpacedPoints}, it is\n\t\t * recommended to increase the value of this property if the curve is very large.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 200\n\t\t */\n\t\tthis.arcLengthDivisions = 200;\n\n\t\t/**\n\t\t * Must be set to `true` if the curve parameters have changed.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\t/**\n\t\t * An internal cache that holds precomputed curve length values.\n\t\t *\n\t\t * @private\n\t\t * @type {?Array}\n\t\t * @default null\n\t\t */\n\t\tthis.cacheArcLengths = null;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor.\n\t *\n\t * @abstract\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor. Unlike {@link Curve#getPoint}, this method honors the length\n\t * of the curve which equidistant samples.\n\t *\n\t * @param {number} u - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPoint} and returns an array of points representing\n\t * the curve shape.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPointAt} and returns an array of points representing\n\t * the curve shape. Unlike {@link Curve#getPoints}, this method returns equi-spaced points across the entire\n\t * curve.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t/**\n\t * Returns the total arc length of the curve.\n\t *\n\t * @return {number} The length of the curve.\n\t */\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t/**\n\t * Returns an array of cumulative segment lengths of the curve.\n\t *\n\t * @param {number} [divisions=this.arcLengthDivisions] - The number of divisions.\n\t * @return {Array} An array holding the cumulative segment lengths.\n\t */\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\t/**\n\t * Update the cumulative segment distance cache. The method must be called\n\t * every time curve parameters are changed. If an updated curve is part of a\n\t * composed curve like {@link CurvePath}, this method must be called on the\n\t * composed curve, too.\n\t */\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t/**\n\t * Given an interpolation factor in the range `[0,1]`, this method returns an updated\n\t * interpolation factor in the same range that can be ued to sample equidistant points\n\t * from a curve.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {?number} distance - An optional distance on the curve.\n\t * @return {number} The updated interpolation factor.\n\t */\n\tgetUtoTmapping( u, distance = null ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns a unit vector tangent for the given interpolation factor.\n\t * If the derived curve does not implement its tangent derivation,\n\t * two points a small delta apart will be used to find its gradient\n\t * which seems to give a reasonable approximation.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t */\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\t/**\n\t * Same as {@link Curve#getTangent} but with equidistant samples.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t * @see {@link Curve#getPointAt}\n\t */\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * Generates the Frenet Frames. Requires a curve definition in 3D space. Used\n\t * in geometries like {@link TubeGeometry} or {@link ExtrudeGeometry}.\n\t *\n\t * @param {number} segments - The number of segments.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @return {{tangents: Array, normals: Array, binormals: Array}} The Frenet Frames.\n\t */\n\tcomputeFrenetFrames( segments, closed = false ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), -1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), -1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a new curve with copied values from this instance.\n\t *\n\t * @return {Curve} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given curve to this instance.\n\t *\n\t * @param {Curve} source - The curve to copy.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the curve into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized curve.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Deserializes the curve from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized curve.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an ellipse.\n *\n * ```js\n * const curve = new THREE.EllipseCurve(\n * \t0, 0,\n * \t10, 10,\n * \t0, 2 * Math.PI,\n * \tfalse,\n * \t0\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const ellipse = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass EllipseCurve extends Curve {\n\n\t/**\n\t * Constructs a new ellipse curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t */\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\t/**\n\t\t * The X center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aX = aX;\n\n\t\t/**\n\t\t * The Y center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aY = aY;\n\n\t\t/**\n\t\t * The radius of the ellipse in the x direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.xRadius = xRadius;\n\n\t\t/**\n\t\t * The radius of the ellipse in the y direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.yRadius = yRadius;\n\n\t\t/**\n\t\t * The start angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aStartAngle = aStartAngle;\n\n\t\t/**\n\t\t * The end angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI*2\n\t\t */\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\t/**\n\t\t * Whether the ellipse is drawn clockwise or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.aClockwise = aClockwise;\n\n\t\t/**\n\t\t * The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an arc.\n *\n * @augments EllipseCurve\n */\nclass ArcCurve extends EllipseCurve {\n\n\t/**\n\t * Constructs a new arc curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [aRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t */\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nfunction CubicPoly() {\n\n\t/**\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t* cusps and self-intersections in non-uniform catmull rom curves.\n\t* http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t*\n\t* curve.type accepts centripetal(default), chordal and catmullrom\n\t* curve.tension is used for catmullrom which defaults to 0.5\n\t*/\n\n\t/*\n\tBased on an optimized c++ solution in\n\t- http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t- http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\n/**\n * A curve representing a Catmull-Rom spline.\n *\n * ```js\n * //Create a closed wavey loop\n * const curve = new THREE.CatmullRomCurve3( [\n * \tnew THREE.Vector3( -10, 0, 10 ),\n * \tnew THREE.Vector3( -5, 5, 5 ),\n * \tnew THREE.Vector3( 0, 0, 0 ),\n * \tnew THREE.Vector3( 5, -5, 5 ),\n * \tnew THREE.Vector3( 10, 0, 10 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CatmullRomCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Catmull-Rom curve.\n\t *\n\t * @param {Array} [points] - An array of 3D points defining the curve.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @param {('centripetal'|'chordal'|'catmullrom')} [curveType='centripetal'] - The curve type.\n\t * @param {number} [tension=0.5] - Tension of the curve.\n\t */\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\t/**\n\t\t * An array of 3D points defining the curve.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.points = points;\n\n\t\t/**\n\t\t * Whether the curve is closed or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.closed = closed;\n\n\t\t/**\n\t\t * The curve type.\n\t\t *\n\t\t * @type {('centripetal'|'chordal'|'catmullrom')}\n\t\t * @default 'centripetal'\n\t\t */\n\t\tthis.curveType = curveType;\n\n\t\t/**\n\t\t * Tension of the curve.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.5\n\t\t */\n\t\tthis.tension = tension;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n/**\n * Computes a point on a Catmull-Rom spline.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Catmull-Rom spline.\n */\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( -3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\n/**\n * Computes a point on a Quadratic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @return {number} The calculated point on a Quadratic Bezier curve.\n */\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\n/**\n * Computes a point on a Cubic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Cubic Bezier curve.\n */\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\n/**\n * A curve representing a 2D Cubic Bezier curve.\n *\n * ```js\n * const curve = new THREE.CubicBezierCurve(\n * \tnew THREE.Vector2( - 0, 0 ),\n * \tnew THREE.Vector2( - 5, 15 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CubicBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The first control point.\n\t * @param {Vector2} [v2] - The second control point.\n\t * @param {Vector2} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Cubic Bezier curve.\n *\n * @augments Curve\n */\nclass CubicBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The first control point.\n\t * @param {Vector3} [v2] - The second control point.\n\t * @param {Vector3} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D line segment.\n *\n * @augments Curve\n */\nclass LineCurve extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector2} [v1] - The start point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D line segment.\n *\n * @augments Curve\n */\nclass LineCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector3} [v1] - The start point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D Quadratic Bezier curve.\n *\n * ```js\n * const curve = new THREE.QuadraticBezierCurve(\n * \tnew THREE.Vector2( - 10, 0 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * )\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The control point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Quadratic Bezier curve.\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The control point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D spline curve.\n *\n * ```js\n * // Create a sine-like wave\n * const curve = new THREE.SplineCurve( [\n * \tnew THREE.Vector2( -10, 0 ),\n * \tnew THREE.Vector2( -5, 5 ),\n * \tnew THREE.Vector2( 0, 0 ),\n * \tnew THREE.Vector2( 5, -5 ),\n * \tnew THREE.Vector2( 10, 0 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const splineObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass SplineCurve extends Curve {\n\n\t/**\n\t * Constructs a new 2D spline curve.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the curve.\n\t */\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\t/**\n\t\t * An array of 2D points defining the curve.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.points = points;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * A base class extending {@link Curve}. `CurvePath` is simply an\n * array of connected curves, but retains the API of a curve.\n *\n * @augments Curve\n */\nclass CurvePath extends Curve {\n\n\t/**\n\t * Constructs a new curve path.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\t/**\n\t\t * An array of curves defining the\n\t\t * path.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.curves = [];\n\n\t\t/**\n\t\t * Whether the path should automatically be closed\n\t\t * by a line curve.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoClose = false;\n\n\t}\n\n\t/**\n\t * Adds a curve to this curve path.\n\t *\n\t * @param {Curve} curve - The curve to add.\n\t */\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\t/**\n\t * Adds a line curve to close the path.\n\t *\n\t * @return {CurvePath} A reference to this curve path.\n\t */\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definitions)\n\t * for the given interpolation factor.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( t, optionalTarget ) {\n\n\t\t// To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 } The curve lengths.\n\t */\n\tgetCurveLengths() {\n\n\t\t// Compute lengths and cache them\n\t\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t}\n\n\tgetSpacedPoints( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tgetPoints( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = curve.isEllipseCurve ? divisions * 2\n\t\t\t\t: ( curve.isLineCurve || curve.isLineCurve3 ) ? 1\n\t\t\t\t\t: curve.isSplineCurve ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A 2D path representation. The class provides methods for creating paths\n * and contours of 2D shapes similar to the 2D Canvas API.\n *\n * ```js\n * const path = new THREE.Path();\n *\n * path.lineTo( 0, 0.8 );\n * path.quadraticCurveTo( 0, 1, 0.2, 1 );\n * path.lineTo( 1, 1 );\n *\n * const points = path.getPoints();\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments CurvePath\n */\nclass Path extends CurvePath {\n\n\t/**\n\t * Constructs a new path.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the path.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\t/**\n\t\t * The current offset of the path. Any new curve added will start here.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Creates a path from the given list of points. The points are added\n\t * to the path as instances of {@link LineCurve}.\n\t *\n\t * @param {Array} points - An array of 2D points.\n\t * @return {Path} A reference to this path.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Moves {@link Path#currentPoint} to the given point.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {Path} A reference to this path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array} pts - An array of points in 2D space.\n\t * @return {Path} A reference to this path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} [aY=0] - The y coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} [aRadius=1] - The radius of the arc.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the arc.\n\t * @param {number} [aY=0] - The y coordinate of the center of the arc.\n\t * @param {number} [aRadius=1] - The radius of the arc.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} [aY=0] - The y coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the absolute center of the ellipse.\n\t * @param {number} [aY=0] - The y coordinate of the absolute center of the ellipse.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Defines an arbitrary 2d shape plane using paths with optional holes. It\n * can be used with {@link ExtrudeGeometry}, {@link ShapeGeometry}, to get\n * points, or to get triangulated faces.\n *\n * ```js\n * const heartShape = new THREE.Shape();\n *\n * heartShape.moveTo( 25, 25 );\n * heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );\n * heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );\n * heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );\n * heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );\n * heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );\n * heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );\n *\n * const extrudeSettings = {\n * \tdepth: 8,\n * \tbevelEnabled: true,\n * \tbevelSegments: 2,\n * \tsteps: 2,\n * \tbevelSize: 1,\n * \tbevelThickness: 1\n * };\n *\n * const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );\n * const mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() );\n * ```\n *\n * @augments Path\n */\nclass Shape extends Path {\n\n\t/**\n\t * Constructs a new shape.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the shape.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\t/**\n\t\t * The UUID of the shape.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\t/**\n\t\t * Defines the holes in the shape. Hole definitions must use the\n\t\t * opposite winding order (CW/CCW) than the outer shape.\n\t\t *\n\t\t * @type {Array}\n\t\t * @readonly\n\t\t */\n\t\tthis.holes = [];\n\n\t}\n\n\t/**\n\t * Returns an array representing each contour of the holes\n\t * as a list of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {Array>} The holes as a series of 2D points.\n\t */\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\t/**\n\t * Returns an object that holds contour data for the shape and its holes as\n\t * arrays of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {{shape:Array,holes:Array>}} An object with contour data.\n\t */\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* eslint-disable */\n// copy of mapbox/earcut version 3.0.1\n// https://github.com/mapbox/earcut/tree/v3.0.1\n\nfunction earcut(data, holeIndices, dim = 2) {\n\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let minX, minY, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = Infinity;\n minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i];\n const y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n let last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n } else {\n for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n const prev = ear.prev;\n const next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i, ear.i, next.i); // cut off the triangle\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n let p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n let p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles) {\n let p = start;\n do {\n const a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i, p.i, b.i);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n const list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareXYSlope);\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareXYSlope(a, b) {\n let result = a.x - b.x;\n // when the left-most point of 2 holes meet at a vertex, sort the holes counterclockwise so that when we find\n // the bridge to the outer shell is always the point that they meet at.\n if (result === 0) {\n result = a.y - b.y;\n if (result === 0) {\n const aSlope = (a.next.y - a.y) / (a.next.x - a.x);\n const bSlope = (b.next.y - b.y) / (b.next.x - b.x);\n result = aSlope - bSlope;\n }\n }\n return result;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n const bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n const bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n // unless they intersect at a vertex, then choose the vertex\n if (equals(hole, p)) return p;\n do {\n if (equals(hole, p.next)) return p.next;\n else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let numMerges;\n let inSize = 1;\n\n do {\n let p = list;\n let e;\n list = null;\n let tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n let q = p;\n let pSize = 0;\n for (let i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n let qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a point lies within a convex triangle but false if its equal to the first point of the triangle\nfunction pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {\n return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // doesn't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = createNode(a.i, a.x, a.y),\n b2 = createNode(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = createNode(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction createNode(i, x, y) {\n return {\n i, // vertex index in coordinates array\n x, y, // vertex coordinates\n prev: null, // previous and next vertex nodes in a polygon ring\n next: null,\n z: 0, // z-order curve value\n prevZ: null, // previous and next nodes in z-order\n nextZ: null,\n steiner: false // indicates whether this is a steiner point\n };\n}\n\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\nclass Earcut {\n\n\t/**\n\t * Triangulates the given shape definition by returning an array of triangles.\n\t *\n\t * @param {Array} data - An array with 2D points.\n\t * @param {Array} holeIndices - An array with indices defining holes.\n\t * @param {number} [dim=2] - The number of coordinates per vertex in the input array.\n\t * @return {Array} An array representing the triangulated faces. Each face is defined by three consecutive numbers\n\t * representing vertex indices.\n\t */\n\tstatic triangulate( data, holeIndices, dim = 2 ) {\n\n\t\treturn earcut( data, holeIndices, dim );\n\n\t}\n\n}\n\n/**\n * A class containing utility functions for shapes.\n *\n * @hideconstructor\n */\nclass ShapeUtils {\n\n\t/**\n\t * Calculate area of a ( 2D ) contour polygon.\n\t *\n\t * @param {Array} contour - An array of 2D points.\n\t * @return {number} The area.\n\t */\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given contour uses a clockwise winding order.\n\t *\n\t * @param {Array} pts - An array of 2D points defining a polygon.\n\t * @return {boolean} Whether the given contour uses a clockwise winding order or not.\n\t */\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\t/**\n\t * Triangulates the given shape definition.\n\t *\n\t * @param {Array} contour - An array of 2D points defining the contour.\n\t * @param {Array>} holes - An array that holds arrays of 2D points defining the holes.\n\t * @return {Array>} An array that holds for each face definition an array with three indices.\n\t */\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * ```js\n * const length = 12, width = 8;\n *\n * const shape = new THREE.Shape();\n * shape.moveTo( 0,0 );\n * shape.lineTo( 0, width );\n * shape.lineTo( length, width );\n * shape.lineTo( length, 0 );\n * shape.lineTo( 0, 0 );\n *\n * const geometry = new THREE.ExtrudeGeometry( shape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ExtrudeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new extrude geometry.\n\t *\n\t * @param {Shape|Array} [shapes] - A shape or an array of shapes.\n\t * @param {ExtrudeGeometry~Options} [options] - The extrude settings.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( -0.5, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.\n\t\t\t * @param {Array} points\n\t\t\t*/\n\t\t\tfunction mergeOverlappingPoints( points ) {\n\n\t\t\t\tconst THRESHOLD = 1e-10;\n\t\t\t\tconst THRESHOLD_SQ = THRESHOLD * THRESHOLD;\n\t\t\t\tlet prevPos = points[ 0 ];\n\t\t\t\tfor ( let i = 1; i <= points.length; i ++ ) {\n\n\t\t\t\t\tconst currentIndex = i % points.length;\n\t\t\t\t\tconst currentPos = points[ currentIndex ];\n\t\t\t\t\tconst dx = currentPos.x - prevPos.x;\n\t\t\t\t\tconst dy = currentPos.y - prevPos.y;\n\t\t\t\t\tconst distSq = dx * dx + dy * dy;\n\n\t\t\t\t\tconst scalingFactorSqrt = Math.max(\n\t\t\t\t\t\tMath.abs( currentPos.x ),\n\t\t\t\t\t\tMath.abs( currentPos.y ),\n\t\t\t\t\t\tMath.abs( prevPos.x ),\n\t\t\t\t\t\tMath.abs( prevPos.y )\n\t\t\t\t\t);\n\t\t\t\t\tconst thresholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;\n\t\t\t\t\tif ( distSq <= thresholdSqScaled ) {\n\n\t\t\t\t\t\tpoints.splice( currentIndex, 1 );\n\t\t\t\t\t\ti --;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tprevPos = currentPos;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmergeOverlappingPoints( vertices );\n\t\t\tholes.forEach( mergeOverlappingPoints );\n\n\t\t\tconst numHoles = holes.length;\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0; h < numHoles; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = numHoles; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\t\t\tlet faces;\n\n\t\t\tif ( bevelSegments === 0 ) {\n\n\t\t\t\tfaces = ShapeUtils.triangulateShape( contour, holes );\n\n\t\t\t} else {\n\n\t\t\t\tconst contractedContourVertices = [];\n\t\t\t\tconst expandedHoleVertices = [];\n\n\t\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t\t// contract shape\n\n\t\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\t\t\t\t\t\tif ( t === 0 ) contractedContourVertices.push( vert );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// expand holes\n\n\t\t\t\t\tfor ( let h = 0, hl = numHoles; h < hl; h ++ ) {\n\n\t\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\t\t\t\t\t\tconst oneHoleVertices = [];\n\t\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\t\t\t\t\t\t\tif ( t === 0 ) oneHoleVertices.push( vert );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( t === 0 ) expandedHoleVertices.push( oneHoleVertices );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfaces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );\n\n\t\t\t}\n\n\t\t\tconst flen = faces.length;\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array} shapes - An array of shapes.\n\t * @return {ExtrudeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * A geometry class for representing an icosahedron.\n *\n * ```js\n * const geometry = new THREE.IcosahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const icosahedron = new THREE.Mesh( geometry, material );\n * scene.add( icosahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new icosahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the icosahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t-1, t, 0, \t1, t, 0, \t-1, - t, 0, \t1, - t, 0,\n\t\t\t0, -1, t, \t0, 1, t,\t0, -1, - t, \t0, 1, - t,\n\t\t\tt, 0, -1, \tt, 0, 1, \t- t, 0, -1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {IcosahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.\n *\n * ```js\n * const points = [];\n * for ( let i = 0; i < 10; i ++ ) {\n * \tpoints.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );\n * }\n * const geometry = new THREE.LatheGeometry( points );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const lathe = new THREE.Mesh( geometry, material );\n * scene.add( lathe );\n * ```\n *\n * @augments BufferGeometry\n */\nclass LatheGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new lathe geometry.\n\t *\n\t * @param {Array} [points] - An array of points in 2D space. The x-coordinate of each point\n\t * must be greater than zero.\n\t * @param {number} [segments=12] - The number of circumference segments to generate.\n\t * @param {number} [phiStart=0] - The starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a\n\t * closed lathe, less than 2PI is a portion.\n\t */\n\tconstructor( points = [ new Vector2( 0, -0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {LatheGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an octahedron.\n *\n * ```js\n * const geometry = new THREE.OctahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const octahedron = new THREE.Mesh( geometry, material );\n * scene.add( octahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new octahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the octahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t-1, 0, 0,\t0, 1, 0,\n\t\t\t0, -1, 0, \t0, 0, 1,\t0, 0, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {OctahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a plane.\n *\n * ```js\n * const geometry = new THREE.PlaneGeometry( 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const plane = new THREE.Mesh( geometry, material );\n * scene.add( plane );\n * ```\n *\n * @augments BufferGeometry\n */\nclass PlaneGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new plane geometry.\n\t *\n\t * @param {number} [width=1] - The width along the X axis.\n\t * @param {number} [height=1] - The height along the Y axis\n\t * @param {number} [widthSegments=1] - The number of segments along the X axis.\n\t * @param {number} [heightSegments=1] - The number of segments along the Y axis.\n\t */\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PlaneGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\n/**\n * A class for generating a two-dimensional ring geometry.\n *\n * ```js\n * const geometry = new THREE.RingGeometry( 1, 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass RingGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new ring geometry.\n\t *\n\t * @param {number} [innerRadius=0.5] - The inner radius of the ring.\n\t * @param {number} [outerRadius=1] - The outer radius of the ring.\n\t * @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`.\n\t * @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`.\n\t * @param {number} [thetaStart=0] - Starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {RingGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * Creates an one-sided polygonal geometry from one or more path shapes.\n *\n * ```js\n * const arcShape = new THREE.Shape()\n *\t.moveTo( 5, 1 )\n *\t.absarc( 1, 1, 4, 0, Math.PI * 2, false );\n *\n * const geometry = new THREE.ShapeGeometry( arcShape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ShapeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new shape geometry.\n\t *\n\t * @param {Shape|Array} [shapes] - A shape or an array of shapes.\n\t * @param {number} [curveSegments=12] - Number of segments per shape.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array} shapes - An array of shapes.\n\t * @return {ShapeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * A class for generating a sphere geometry.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry( 15, 32, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const sphere = new THREE.Mesh( geometry, material );\n * scene.add( sphere );\n * ```\n *\n * @augments BufferGeometry\n */\nclass SphereGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new sphere geometry.\n\t *\n\t * @param {number} [radius=1] - The sphere radius.\n\t * @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`.\n\t * @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`.\n\t * @param {number} [phiStart=0] - The horizontal starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size.\n\t * @param {number} [thetaStart=0] - The vertical starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI] - The vertical sweep angle size.\n\t */\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = -0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {SphereGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an tetrahedron.\n *\n * ```js\n * const geometry = new THREE.TetrahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const tetrahedron = new THREE.Mesh( geometry, material );\n * scene.add( tetrahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new tetrahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the tetrahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t-1, -1, 1, \t-1, 1, -1, \t1, -1, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TetrahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an torus.\n *\n * ```js\n * const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torus = new THREE.Mesh( geometry, material );\n * scene.add( torus );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube.\n\t * @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`.\n\t * @param {number} [radialSegments=12] - The number of radial segments.\n\t * @param {number} [tubularSegments=48] - The number of tubular segments.\n\t * @param {number} [arc=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\n/**\n * Creates a torus knot, the particular shape of which is defined by a pair\n * of coprime integers, p and q. If p and q are not coprime, the result will\n * be a torus link.\n *\n * ```js\n * const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torusKnot = new THREE.Mesh( geometry, material );\n * scene.add( torusKnot );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusKnotGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus knot geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus knot.\n\t * @param {number} [tube=0.4] - Radius of the tube.\n\t * @param {number} [tubularSegments=64] - The number of tubular segments.\n\t * @param {number} [radialSegments=8] - The number of radial segments.\n\t * @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry.\n\t * @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus.\n\t */\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusKnotGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\n/**\n * Creates a tube that extrudes along a 3D curve.\n *\n * ```js\n * class CustomSinCurve extends THREE.Curve {\n *\n * \tgetPoint( t, optionalTarget = new THREE.Vector3() ) {\n *\n * \t\tconst tx = t * 3 - 1.5;\n * \t\tconst ty = Math.sin( 2 * Math.PI * t );\n * \t\tconst tz = 0;\n *\n * \t\treturn optionalTarget.set( tx, ty, tz );\n * \t}\n *\n * }\n *\n * const path = new CustomSinCurve( 10 );\n * const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TubeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new tube geometry.\n\t *\n\t * @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube.\n\t * @param {number} [tubularSegments=64] - The number of segments that make up the tube.\n\t * @param {number} [radius=1] -The radius of the tube.\n\t * @param {number} [radialSegments=8] - The number of segments that make up the cross-section.\n\t * @param {boolean} [closed=false] - Whether the tube is closed or not.\n\t */\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( -1, -1, 0 ), new Vector3( -1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TubeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\n/**\n * Can be used as a helper object to visualize a geometry as a wireframe.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry();\n *\n * const wireframe = new THREE.WireframeGeometry( geometry );\n *\n * const line = new THREE.LineSegments( wireframe );\n * line.material.depthWrite = false;\n * line.material.opacity = 0.25;\n * line.material.transparent = true;\n *\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass WireframeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new wireframe geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t */\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * This material can receive shadows, but otherwise is completely transparent.\n *\n * ```js\n * const geometry = new THREE.PlaneGeometry( 2000, 2000 );\n * geometry.rotateX( - Math.PI / 2 );\n *\n * const material = new THREE.ShadowMaterial();\n * material.opacity = 0.2;\n *\n * const plane = new THREE.Mesh( geometry, material );\n * plane.position.y = -200;\n * plane.receiveShadow = true;\n * scene.add( plane );\n * ```\n *\n * @augments Material\n */\nclass ShadowMaterial extends Material {\n\n\t/**\n\t * Constructs a new shadow material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.color = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Overwritten since shadow materials are transparent\n\t\t * by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.transparent = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This class works just like {@link ShaderMaterial}, except that definitions\n * of built-in uniforms and attributes are not automatically prepended to the\n * GLSL shader code.\n *\n * `RawShaderMaterial` can only be used with {@link WebGLRenderer}.\n *\n * @augments ShaderMaterial\n */\nclass RawShaderMaterial extends ShaderMaterial {\n\n\t/**\n\t * Constructs a new raw shader material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\n/**\n * A standard physically based material, using Metallic-Roughness workflow.\n *\n * Physically based rendering (PBR) has recently become the standard in many\n * 3D applications, such as [Unity]{@link https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/},\n * [Unreal]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/} and\n * [3D Studio Max]{@link http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017}.\n *\n * This approach differs from older approaches in that instead of using\n * approximations for the way in which light interacts with a surface, a\n * physically correct model is used. The idea is that, instead of tweaking\n * materials to look good under specific lighting, a material can be created\n * that will react 'correctly' under all lighting scenarios.\n *\n * In practice this gives a more accurate and realistic looking result than\n * the {@link MeshLambertMaterial} or {@link MeshPhongMaterial}, at the cost of\n * being somewhat more computationally expensive. `MeshStandardMaterial` uses per-fragment\n * shading.\n *\n * Note that for best results you should always specify an environment map when using this material.\n *\n * For a non-technical introduction to the concept of PBR and how to set up a\n * PBR material, check out these articles by the people at [marmoset]{@link https://www.marmoset.co}:\n *\n * - [Basic Theory of Physically Based Rendering]{@link https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/}\n * - [Physically Based Rendering and You Can Too]{@link https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/}\n *\n * Technical details of the approach used in three.js (and most other PBR systems) can be found is this\n * [paper from Disney]{@link https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf}\n * (pdf), by Brent Burley.\n *\n * @augments Material\n */\nclass MeshStandardMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh standard material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * How rough the material appears. `0.0` means a smooth mirror reflection, `1.0`\n\t\t * means fully diffuse. If `roughnessMap` is also provided,\n\t\t * both values are multiplied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.roughness = 1.0;\n\n\t\t/**\n\t\t * How much the material is like a metal. Non-metallic materials such as wood\n\t\t * or stone use `0.0`, metallic use `1.0`, with nothing (usually) in between.\n\t\t * A value between `0.0` and `1.0` could be used for a rusty metal look.\n\t\t * If `metalnessMap` is also provided, both values are multiplied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.metalness = 0.0;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The green channel of this texture is used to alter the roughness of the\n\t\t * material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.roughnessMap = null;\n\n\t\t/**\n\t\t * The blue channel of this texture is used to alter the metalness of the\n\t\t * material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.metalnessMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map. To ensure a physically correct rendering, environment maps\n\t\t * are internally pre-processed with {@link PMREMGenerator}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * Scales the effect of the environment map by multiplying its color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.envMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * An extension of the {@link MeshStandardMaterial}, providing more advanced\n * physically-based rendering properties:\n *\n * - Anisotropy: Ability to represent the anisotropic property of materials\n * as observable with brushed metals.\n * - Clearcoat: Some materials — like car paints, carbon fiber, and wet surfaces — require\n * a clear, reflective layer on top of another layer that may be irregular or rough.\n * Clearcoat approximates this effect, without the need for a separate transparent surface.\n * - Iridescence: Allows to render the effect where hue varies depending on the viewing\n * angle and illumination angle. This can be seen on soap bubbles, oil films, or on the\n * wings of many insects.\n * - Physically-based transparency: One limitation of {@link Material#opacity} is that highly\n * transparent materials are less reflective. Physically-based transmission provides a more\n * realistic option for thin, transparent surfaces like glass.\n * - Advanced reflectivity: More flexible reflectivity for non-metallic materials.\n * - Sheen: Can be used for representing cloth and fabric materials.\n *\n * As a result of these complex shading features, `MeshPhysicalMaterial` has a\n * higher performance cost, per pixel, than other three.js materials. Most\n * effects are disabled by default, and add cost as they are enabled. For\n * best results, always specify an environment map when using this material.\n *\n * @augments MeshStandardMaterial\n */\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\t/**\n\t * Constructs a new mesh physical material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\t/**\n\t\t * The rotation of the anisotropy in tangent, bitangent space, measured in radians\n\t\t * counter-clockwise from the tangent. When `anisotropyMap` is present, this\n\t\t * property provides additional rotation to the vectors in the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.anisotropyRotation = 0;\n\n\t\t/**\n\t\t * Red and green channels represent the anisotropy direction in `[-1, 1]` tangent,\n\t\t * bitangent space, to be rotated by `anisotropyRotation`. The blue channel\n\t\t * contains strength as `[0, 1]` to be multiplied by `anisotropy`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.anisotropyMap = null;\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `clearcoat`,\n\t\t * for per-pixel control over a coating's intensity.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatMap = null;\n\n\t\t/**\n\t\t * Roughness of the clear coat layer, from `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.clearcoatRoughness = 0.0;\n\n\t\t/**\n\t\t * The green channel of this texture is multiplied against\n\t\t * `clearcoatRoughness`, for per-pixel control over a coating's roughness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatRoughnessMap = null;\n\n\t\t/**\n\t\t * How much `clearcoatNormalMap` affects the clear coat layer, from\n\t\t * `(0,0)` to `(1,1)`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * Can be used to enable independent normals for the clear coat layer.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatNormalMap = null;\n\n\t\t/**\n\t\t * Index-of-refraction for non-metallic materials, from `1.0` to `2.333`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1.5\n\t\t */\n\t\tthis.ior = 1.5;\n\n\t\t/**\n\t\t * Degree of reflectivity, from `0.0` to `1.0`. Default is `0.5`, which\n\t\t * corresponds to an index-of-refraction of `1.5`.\n\t\t *\n\t\t * This models the reflectivity of non-metallic materials. It has no effect\n\t\t * when `metalness` is `1.0`\n\t\t *\n\t\t * @name MeshPhysicalMaterial#reflectivity\n\t\t * @type {number}\n\t\t * @default 0.5\n\t\t */\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `iridescence`, for per-pixel\n\t\t * control over iridescence.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.iridescenceMap = null;\n\n\t\t/**\n\t\t * Strength of the iridescence RGB color shift effect, represented by an index-of-refraction.\n\t\t * Between `1.0` to `2.333`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1.3\n\t\t */\n\t\tthis.iridescenceIOR = 1.3;\n\n\t\t/**\n\t\t *Array of exactly 2 elements, specifying minimum and maximum thickness of the iridescence layer.\n\t\t Thickness of iridescence layer has an equivalent effect of the one `thickness` has on `ior`.\n\t\t *\n\t\t * @type {Array}\n\t\t * @default [100,400]\n\t\t */\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t/**\n\t\t * A texture that defines the thickness of the iridescence layer, stored in the green channel.\n\t\t * Minimum and maximum values of thickness are defined by `iridescenceThicknessRange` array:\n\t\t * - `0.0` in the green channel will result in thickness equal to first element of the array.\n\t\t * - `1.0` in the green channel will result in thickness equal to second element of the array.\n\t\t * - Values in-between will linearly interpolate between the elements of the array.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\t/**\n\t\t * The sheen tint.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.sheenColor = new Color( 0x000000 );\n\n\t\t/**\n\t\t * The RGB channels of this texture are multiplied against `sheenColor`, for per-pixel control\n\t\t * over sheen tint.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.sheenColorMap = null;\n\n\t\t/**\n\t\t * Roughness of the sheen layer, from `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.sheenRoughness = 1.0;\n\n\t\t/**\n\t\t * The alpha channel of this texture is multiplied against `sheenRoughness`, for per-pixel control\n\t\t * over sheen roughness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.sheenRoughnessMap = null;\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `transmission`, for per-pixel control over\n\t\t * optical transparency.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.transmissionMap = null;\n\n\t\t/**\n\t\t * The thickness of the volume beneath the surface. The value is given in the\n\t\t * coordinate space of the mesh. If the value is `0` the material is\n\t\t * thin-walled. Otherwise the material is a volume boundary.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.thickness = 0;\n\n\t\t/**\n\t\t * A texture that defines the thickness, stored in the green channel. This will\n\t\t * be multiplied by `thickness`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.thicknessMap = null;\n\n\t\t/**\n\t\t * Density of the medium given as the average distance that light travels in\n\t\t * the medium before interacting with a particle. The value is given in world\n\t\t * space units, and must be greater than zero.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.attenuationDistance = Infinity;\n\n\t\t/**\n\t\t * The color that white light turns into due to absorption when reaching the\n\t\t * attenuation distance.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\t/**\n\t\t * A float that scales the amount of specular reflection for non-metals only.\n\t\t * When set to zero, the model is effectively Lambertian. From `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.specularIntensity = 1.0;\n\n\t\t/**\n\t\t * The alpha channel of this texture is multiplied against `specularIntensity`,\n\t\t * for per-pixel control over specular intensity.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularIntensityMap = null;\n\n\t\t/**\n\t\t * Tints the specular reflection at normal incidence for non-metals only.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\n\t\t/**\n\t\t * The RGB channels of this texture are multiplied against `specularColor`,\n\t\t * for per-pixel control over specular color.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\t/**\n\t * The anisotropy strength.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\t/**\n\t * Represents the intensity of the clear coat layer, from `0.0` to `1.0`. Use\n\t * clear coat related properties to enable multilayer materials that have a\n\t * thin translucent layer over the base layer.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\t/**\n\t * The intensity of the iridescence layer, simulating RGB color shift based on the angle between\n\t * the surface and the viewer, from `0.0` to `1.0`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\t/**\n\t * Defines the strength of the angular separation of colors (chromatic aberration) transmitting\n\t * through a relatively clear volume. Any value zero or larger is valid, the typical range of\n\t * realistic values is `[0, 1]`. This property can be only be used with transmissive objects.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\n\n\t}\n\n\t/**\n\t * The intensity of the sheen layer, from `0.0` to `1.0`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\t/**\n\t * Degree of transmission (or optical transparency), from `0.0` to `1.0`.\n\t *\n\t * Thin, transparent or semitransparent, plastic or glass materials remain\n\t * largely reflective even if they are fully transmissive. The transmission\n\t * property can be used to model these materials.\n\t *\n\t * When transmission is non-zero, `opacity` should be set to `1`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for shiny surfaces with specular highlights.\n *\n * The material uses a non-physically based [Blinn-Phong]{@link https://en.wikipedia.org/wiki/Blinn-Phong_shading_model}\n * model for calculating reflectance. Unlike the Lambertian model used in the\n * {@link MeshLambertMaterial} this can simulate shiny surfaces with specular\n * highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.\n *\n * Performance will generally be greater when using this material over the\n * {@link MeshStandardMaterial} or {@link MeshPhysicalMaterial}, at the cost of\n * some graphical accuracy.\n *\n * @augments Material\n */\nclass MeshPhongMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh phong material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * Specular color of the material. The default color is set to `0x111111` (very dark grey)\n\t\t *\n\t\t * This defines how shiny the material is and the color of its shine.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.specular = new Color( 0x111111 );\n\n\t\t/**\n\t\t * How shiny the specular highlight is; a higher value gives a sharper highlight.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 30\n\t\t */\n\t\tthis.shininess = 30;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The specular map value affects both how much the specular surface\n\t\t * highlight contributes and how much of the environment map affects the\n\t\t * surface.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material implementing toon shading.\n *\n * @augments Material\n */\nclass MeshToonMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh toon material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * Gradient map for toon shading. It's required to set\n\t\t * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter}\n\t\t * when using this type of texture.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.gradientMap = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material that maps the normal vectors to RGB colors.\n *\n * @augments Material\n */\nclass MeshNormalMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh normal material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for non-shiny surfaces, without specular highlights.\n *\n * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance}\n * model for calculating reflectance. This can simulate some surfaces (such\n * as untreated wood or stone) well, but cannot simulate shiny surfaces with\n * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment\n * shading.\n *\n * Due to the simplicity of the reflectance and illumination models,\n * performance will be greater when using this material over the\n * {@link MeshPhongMaterial}, {@link MeshStandardMaterial} or\n * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.\n *\n * @augments Material\n */\nclass MeshLambertMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh lambert material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Specular map used by the material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for drawing geometry by depth. Depth is based off of the camera\n * near and far plane. White is nearest, black is farthest.\n *\n * @augments Material\n */\nclass MeshDepthMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh depth material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\t/**\n\t\t * Type for depth packing.\n\t\t *\n\t\t * @type {(BasicDepthPacking|RGBADepthPacking|RGBDepthPacking|RGDepthPacking)}\n\t\t * @default BasicDepthPacking\n\t\t */\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material used internally for implementing shadow mapping with\n * point lights.\n *\n * Can also be used to customize the shadow casting of an object by assigning\n * an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.\n * The following examples demonstrates this approach in order to ensure\n * transparent parts of objects do not cast shadows.\n *\n * @augments Material\n */\nclass MeshDistanceMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh distance material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This material is defined by a MatCap (or Lit Sphere) texture, which encodes the\n * material color and shading.\n *\n * `MeshMatcapMaterial` does not respond to lights since the matcap image file encodes\n * baked lighting. It will cast a shadow onto an object that receives shadows\n * (and shadow clipping works), but it will not self-shadow or receive\n * shadows.\n *\n * @augments Material\n */\nclass MeshMatcapMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh matcap material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The matcap map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.matcap = null;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for rendering line primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const material = new THREE.LineDashedMaterial( {\n * \tcolor: 0xffffff,\n * \tscale: 1,\n * \tdashSize: 3,\n * \tgapSize: 1,\n * } );\n * ```\n *\n * @augments LineBasicMaterial\n */\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\t/**\n\t * Constructs a new line dashed material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineDashedMaterial = true;\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\t/**\n\t\t * The scale of the dashed part of a line.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.scale = 1;\n\n\t\t/**\n\t\t * The size of the dash. This is both the gap with the stroke.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 3\n\t\t */\n\t\tthis.dashSize = 3;\n\n\t\t/**\n\t\t * The size of the gap.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Converts an array to a specific type.\n *\n * @param {TypedArray|Array} array - The array to convert.\n * @param {TypedArray.constructor} type - The constructor of a typed array that defines the new type.\n * @return {TypedArray} The converted array.\n */\nfunction convertArray( array, type ) {\n\n\tif ( ! array || array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\n/**\n * Returns `true` if the given object is a typed array.\n *\n * @param {any} object - The object to check.\n * @return {boolean} Whether the given object is a typed array.\n */\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) && ! ( object instanceof DataView );\n\n}\n\n/**\n * Returns an array by which times and values can be sorted.\n *\n * @param {Array} times - The keyframe time values.\n * @return {Array} The array.\n */\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n/**\n * Sorts the given array by the previously computed order via `getKeyframeOrder()`.\n *\n * @param {Array} values - The values to sort.\n * @param {number} stride - The stride.\n * @param {Array} order - The sort order.\n * @return {Array} The sorted values.\n */\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * Used for parsing AOS keyframe formats.\n *\n * @param {Array} jsonKeys - A list of JSON keyframes.\n * @param {Array} times - This array will be filled with keyframe times by this function.\n * @param {Array} values - This array will be filled with keyframe values by this function.\n * @param {string} valuePropertyName - The name of the property to use.\n */\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( ...value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\n/**\n * Creates a new clip, containing only the segment of the original clip between the given frames.\n *\n * @param {AnimationClip} sourceClip - The values to sort.\n * @param {string} name - The name of the clip.\n * @param {number} startFrame - The start frame.\n * @param {number} endFrame - The end frame.\n * @param {number} [fps=30] - The FPS.\n * @return {AnimationClip} The new sub clip.\n */\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( -1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\n/**\n * Converts the keyframes of the given animation clip to an additive format.\n *\n * @param {AnimationClip} targetClip - The clip to make additive.\n * @param {number} [referenceFrame=0] - The reference frame.\n * @param {AnimationClip} [referenceClip=targetClip] - The reference clip.\n * @param {number} [fps=30] - The FPS.\n * @return {AnimationClip} The updated clip which is now additive.\n */\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\n/**\n * A class with various methods to assist with animations.\n *\n * @hideconstructor\n */\nclass AnimationUtils {\n\n\t/**\n\t * Converts an array to a specific type\n\t *\n\t * @static\n\t * @param {TypedArray|Array} array - The array to convert.\n\t * @param {TypedArray.constructor} type - The constructor of a type array.\n\t * @return {TypedArray} The converted array\n\t */\n\tstatic convertArray( array, type ) {\n\n\t\treturn convertArray( array, type );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given object is a typed array.\n\t *\n\t * @static\n\t * @param {any} object - The object to check.\n\t * @return {boolean} Whether the given object is a typed array.\n\t */\n\tstatic isTypedArray( object ) {\n\n\t\treturn isTypedArray( object );\n\n\t}\n\n\t/**\n\t * Returns an array by which times and values can be sorted.\n\t *\n\t * @static\n\t * @param {Array} times - The keyframe time values.\n\t * @return {Array} The array.\n\t */\n\tstatic getKeyframeOrder( times ) {\n\n\t\treturn getKeyframeOrder( times );\n\n\t}\n\n\t/**\n\t * Sorts the given array by the previously computed order via `getKeyframeOrder()`.\n\t *\n\t * @static\n\t * @param {Array} values - The values to sort.\n\t * @param {number} stride - The stride.\n\t * @param {Array} order - The sort order.\n\t * @return {Array} The sorted values.\n\t */\n\tstatic sortedArray( values, stride, order ) {\n\n\t\treturn sortedArray( values, stride, order );\n\n\t}\n\n\t/**\n\t * Used for parsing AOS keyframe formats.\n\t *\n\t * @static\n\t * @param {Array} jsonKeys - A list of JSON keyframes.\n\t * @param {Array} times - This array will be filled with keyframe times by this method.\n\t * @param {Array} values - This array will be filled with keyframe values by this method.\n\t * @param {string} valuePropertyName - The name of the property to use.\n\t */\n\tstatic flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tflattenJSON( jsonKeys, times, values, valuePropertyName );\n\n\t}\n\n\t/**\n\t * Creates a new clip, containing only the segment of the original clip between the given frames.\n\t *\n\t * @static\n\t * @param {AnimationClip} sourceClip - The values to sort.\n\t * @param {string} name - The name of the clip.\n\t * @param {number} startFrame - The start frame.\n\t * @param {number} endFrame - The end frame.\n\t * @param {number} [fps=30] - The FPS.\n\t * @return {AnimationClip} The new sub clip.\n\t */\n\tstatic subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\treturn subclip( sourceClip, name, startFrame, endFrame, fps );\n\n\t}\n\n\t/**\n\t * Converts the keyframes of the given animation clip to an additive format.\n\t *\n\t * @static\n\t * @param {AnimationClip} targetClip - The clip to make additive.\n\t * @param {number} [referenceFrame=0] - The reference frame.\n\t * @param {AnimationClip} [referenceClip=targetClip] - The reference clip.\n\t * @param {number} [fps=30] - The FPS.\n\t * @return {AnimationClip} The updated clip which is now additive.\n\t */\n\tstatic makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\treturn makeClipAdditive( targetClip, referenceFrame, referenceClip, fps );\n\n\t}\n\n}\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References: {@link http://www.oodesign.com/template-method-pattern.html}\n *\n * @abstract\n */\nclass Interpolant {\n\n\t/**\n\t * Constructs a new interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\t/**\n\t\t * The parameter positions.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.parameterPositions = parameterPositions;\n\n\t\t/**\n\t\t * A cache index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._cachedIndex = 0;\n\n\t\t/**\n\t\t * The result buffer.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor( sampleSize );\n\n\t\t/**\n\t\t * The sample values.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.sampleValues = sampleValues;\n\n\t\t/**\n\t\t * The value size.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.valueSize = sampleSize;\n\n\t\t/**\n\t\t * The interpolation settings.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.settings = null;\n\n\t\t/**\n\t\t * The default settings object.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\t/**\n\t * Evaluate the interpolant at position `t`.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\t/**\n\t * Returns the interpolation settings.\n\t *\n\t * @return {Object} The interpolation settings.\n\t */\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @param {number} index - An index into the sample value buffer.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @abstract\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t * @param {number} t1 - The next interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\t/**\n\t * Optional method that is executed when the interval has changed.\n\t *\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t */\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @augments Interpolant\n */\nclass CubicInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new cubic interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = -0;\n\t\tthis._offsetPrev = -0;\n\t\tthis._weightNext = -0;\n\t\tthis._offsetNext = -0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( -1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tconst s1 = ( -1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A basic linear interpolant.\n *\n * @augments Interpolant\n */\nclass LinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new linear interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n *\n * @augments Interpolant\n */\nclass DiscreteInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new discrete interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\n/**\n * Represents s a timed sequence of keyframes, which are composed of lists of\n * times and related values, and which are used to animate a specific property\n * of an object.\n */\nclass KeyframeTrack {\n\n\t/**\n\t * Constructs a new keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\t/**\n\t\t * The track's name can refer to morph targets or bones or\n\t\t * possibly other values within an animated object. See {@link PropertyBinding#parseTrackName}\n\t\t * for the forms of strings that can be parsed for property binding.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * The keyframe times.\n\t\t *\n\t\t * @type {Float32Array}\n\t\t */\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\n\t\t/**\n\t\t * The keyframe values.\n\t\t *\n\t\t * @type {Float32Array}\n\t\t */\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t/**\n\t * Converts the keyframe track to JSON.\n\t *\n\t * @static\n\t * @param {KeyframeTrack} track - The keyframe track to serialize.\n\t * @return {Object} The serialized keyframe track as JSON.\n\t */\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\t/**\n\t * Factory method for creating a new discrete interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {DiscreteInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Factory method for creating a new linear interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {LinearInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Factory method for creating a new smooth interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {CubicInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Defines the interpolation factor method for this keyframe track.\n\t *\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} interpolation - The interpolation type.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current interpolation type.\n\t *\n\t * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type.\n\t */\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the value size.\n\t *\n\t * @return {number} The value size.\n\t */\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t/**\n\t * Moves all keyframes either forward or backward in time.\n\t *\n\t * @param {number} timeOffset - The offset to move the time values.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scale all keyframe times by a factor (useful for frame - seconds conversions).\n\t *\n\t * @param {number} timeScale - The time scale.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes keyframes before and after animation without changing any values within the defined time range.\n\t *\n\t * Note: The method does not shift around keys to the start of the track time, because for interpolated\n\t * keys this will change their values\n\t *\n\t * @param {number} startTime - The start time.\n\t * @param {number} endTime - The end time.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== -1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs minimal validation on the keyframe track. Returns `true` if the values\n\t * are valid.\n\t *\n\t * @return {boolean} Whether the keyframes are valid or not.\n\t */\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t/**\n\t * Optimizes this keyframe track by removing equivalent sequential keys (which are\n\t * common in morph target sequences).\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\toptimize() {\n\n\t\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new keyframe track with copied values from this instance.\n\t *\n\t * @return {KeyframeTrack} A clone of this instance.\n\t */\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default ''\n */\nKeyframeTrack.prototype.ValueTypeName = '';\n\n/**\n * The time buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Float32Array.constructor\n */\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Float32Array.constructor\n */\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateLinear\n */\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A track for boolean keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new boolean keyframe track.\n\t *\n\t * This keyframe track type has no `interpolation` parameter because the\n\t * interpolation is always discrete.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t */\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'bool'\n */\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Array.constructor\n */\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateDiscrete\n */\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for color keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass ColorKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new color keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'color'\n */\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A track for numeric keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass NumberKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new number keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'number'\n */\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @augments Interpolant\n */\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new SLERP interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A track for Quaternion keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new Quaternion keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n\t/**\n\t * Overwritten so the method returns Quaternion based interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {QuaternionLinearInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'quaternion'\n */\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\n// DefaultInterpolation is inherited;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for string keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass StringKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new string keyframe track.\n\t *\n\t * This keyframe track type has no `interpolation` parameter because the\n\t * interpolation is always discrete.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t */\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'string'\n */\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Array.constructor\n */\nStringKeyframeTrack.prototype.ValueBufferType = Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateDiscrete\n */\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for vector keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass VectorKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new vector keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'vector'\n */\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\n/**\n * A reusable set of keyframe tracks which represent an animation.\n */\nclass AnimationClip {\n\n\t/**\n\t * Constructs a new animation clip.\n\t *\n\t * Note: Instead of instantiating an AnimationClip directly with the constructor, you can\n\t * use the static interface of this class for creating clips. In most cases though, animation clips\n\t * will automatically be created by loaders when importing animated 3D assets.\n\t *\n\t * @param {string} [name=''] - The clip's name.\n\t * @param {number} [duration=-1] - The clip's duration in seconds. If a negative value is passed,\n\t * the duration will be calculated from the passed keyframes.\n\t * @param {Array} tracks - An array of keyframe tracks.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode=NormalAnimationBlendMode] - Defines how the animation\n\t * is blended/combined when two or more animations are simultaneously played.\n\t */\n\tconstructor( name = '', duration = -1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\t/**\n\t\t * The clip's name.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * An array of keyframe tracks.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.tracks = tracks;\n\n\t\t/**\n\t\t * The clip's duration in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.duration = duration;\n\n\t\t/**\n\t\t * Defines how the animation is blended/combined when two or more animations\n\t\t * are simultaneously played.\n\t\t *\n\t\t * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}\n\t\t */\n\t\tthis.blendMode = blendMode;\n\n\t\t/**\n\t\t * The UUID of the animation clip.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the animation clip.\n\t\t * It should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Factory method for creating an animation clip from the given JSON.\n\t *\n\t * @static\n\t * @param {Object} json - The serialized animation clip.\n\t * @return {AnimationClip} The new animation clip.\n\t */\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\tclip.userData = JSON.parse( json.userData || '{}' );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Serializes the given animation clip into JSON.\n\t *\n\t * @static\n\t * @param {AnimationClip} clip - The animation clip to serialize.\n\t * @return {Object} The JSON object.\n\t */\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode,\n\t\t\t'userData': JSON.stringify( clip.userData ),\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\t/**\n\t * Returns a new animation clip from the passed morph targets array of a\n\t * geometry, taking a name and the number of frames per second.\n\t *\n\t * Note: The fps parameter is required, but the animation speed can be\n\t * overridden via {@link AnimationAction#setDuration}.\n\t *\n\t * @static\n\t * @param {string} name - The name of the animation clip.\n\t * @param {Array} morphTargetSequence - A sequence of morph targets.\n\t * @param {number} fps - The Frames-Per-Second value.\n\t * @param {boolean} noLoop - Whether the clip should be no loop or not.\n\t * @return {AnimationClip} The new animation clip.\n\t */\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, -1, tracks );\n\n\t}\n\n\t/**\n\t * Searches for an animation clip by name, taking as its first parameter\n\t * either an array of clips, or a mesh or geometry that contains an\n\t * array named \"animations\" property.\n\t *\n\t * @static\n\t * @param {(Array|Object3D)} objectOrClipArray - The array or object to search through.\n\t * @param {string} name - The name to search for.\n\t * @return {?AnimationClip} The found animation clip. Returns `null` if no clip has been found.\n\t */\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Returns an array of new AnimationClips created from the morph target\n\t * sequences of a geometry, trying to sort morph target names into\n\t * animation-group-based patterns like \"Walk_001, Walk_002, Run_001, Run_002...\".\n\t *\n\t * See {@link MD2Loader#parse} as an example for how the method should be used.\n\t *\n\t * @static\n\t * @param {Array} morphTargets - A sequence of morph targets.\n\t * @param {number} fps - The Frames-Per-Second value.\n\t * @param {boolean} noLoop - Whether the clip should be no loop or not.\n\t * @return {Array} An array of new animation clips.\n\t */\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t/**\n\t * Parses the `animation.hierarchy` format and returns a new animation clip.\n\t *\n\t * @static\n\t * @deprecated since r175.\n\t * @param {Object} animation - A serialized animation clip as JSON.\n\t * @param {Array} bones - An array of bones.\n\t * @return {?AnimationClip} The new animation clip.\n\t */\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tconsole.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' );\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || -1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = -1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Sets the duration of this clip to the duration of its longest keyframe track.\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Trims all tracks to the clip's duration.\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs minimal validation on each track in the clip. Returns `true` if all\n\t * tracks are valid.\n\t *\n\t * @return {boolean} Whether the clip's keyframes are valid or not.\n\t */\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t/**\n\t * Optimizes each track by removing equivalent sequential keys (which are\n\t * common in morph target sequences).\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new animation clip with copied values from this instance.\n\t *\n\t * @return {AnimationClip} A clone of this instance.\n\t */\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\tconst clip = new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t\tclip.userData = JSON.parse( JSON.stringify( this.userData ) );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Serializes this animation clip into JSON.\n\t *\n\t * @return {Object} The JSON object.\n\t */\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\n/**\n * @class\n * @classdesc A simple caching system, used internally by {@link FileLoader}.\n * To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.\n * @hideconstructor\n */\nconst Cache = {\n\n\t/**\n\t * Whether caching is enabled or not.\n\t *\n\t * @static\n\t * @type {boolean}\n\t * @default false\n\t */\n\tenabled: false,\n\n\t/**\n\t * A dictionary that holds cached files.\n\t *\n\t * @static\n\t * @type {Object}\n\t */\n\tfiles: {},\n\n\t/**\n\t * Adds a cache entry with a key to reference the file. If this key already\n\t * holds a file, it is overwritten.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t * @param {Object} file - The file to be cached.\n\t */\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\t/**\n\t * Gets the cached value for the given key.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t * @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.\n\t */\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\t/**\n\t * Removes the cached file associated with the given key.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t */\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\t/**\n\t * Remove all values from the cache.\n\t *\n\t * @static\n\t */\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * Handles and keeps track of loaded and pending data. A default global\n * instance of this class is created and used by loaders if not supplied\n * manually.\n *\n * In general that should be sufficient, however there are times when it can\n * be useful to have separate loaders - for example if you want to show\n * separate loading bars for objects and textures.\n *\n * ```js\n * const manager = new THREE.LoadingManager();\n * manager.onLoad = () => console.log( 'Loading complete!' );\n *\n * const loader1 = new OBJLoader( manager );\n * const loader2 = new ColladaLoader( manager );\n * ```\n */\nclass LoadingManager {\n\n\t/**\n\t * Constructs a new loading manager.\n\t *\n\t * @param {Function} [onLoad] - Executes when all items have been loaded.\n\t * @param {Function} [onProgress] - Executes when single items have been loaded.\n\t * @param {Function} [onError] - Executes when an error occurs.\n\t */\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\t/**\n\t\t * Executes when an item starts loading.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onStart = undefined;\n\n\t\t/**\n\t\t * Executes when all items have been loaded.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onLoad = onLoad;\n\n\t\t/**\n\t\t * Executes when single items have been loaded.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onProgress = onProgress;\n\n\t\t/**\n\t\t * Executes when an error occurs.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onError = onError;\n\n\t\t/**\n\t\t * Used for aborting ongoing requests in loaders using this manager.\n\t\t *\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis.abortController = new AbortController();\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * starts loading an item.\n\t\t *\n\t\t * @param {string} url - The URL to load.\n\t\t */\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * ended loading an item.\n\t\t *\n\t\t * @param {string} url - The URL of the loaded item.\n\t\t */\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * encounters an error when loading an item.\n\t\t *\n\t\t * @param {string} url - The URL of the item that produces an error.\n\t\t */\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Given a URL, uses the URL modifier callback (if any) and returns a\n\t\t * resolved URL. If no URL modifier is set, returns the original URL.\n\t\t *\n\t\t * @param {string} url - The URL to load.\n\t\t * @return {string} The resolved URL.\n\t\t */\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\t/**\n\t\t * If provided, the callback will be passed each resource URL before a\n\t\t * request is sent. The callback may return the original URL, or a new URL to\n\t\t * override loading behavior. This behavior can be used to load assets from\n\t\t * .ZIP files, drag-and-drop APIs, and Data URIs.\n\t\t *\n\t\t * ```js\n\t\t * const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};\n\t\t *\n\t\t * const manager = new THREE.LoadingManager();\n\t\t *\n\t\t * // Initialize loading manager with URL callback.\n\t\t * const objectURLs = [];\n\t\t * manager.setURLModifier( ( url ) => {\n\t\t *\n\t\t * \turl = URL.createObjectURL( blobs[ url ] );\n\t\t * \tobjectURLs.push( url );\n\t\t * \treturn url;\n\t\t *\n\t\t * } );\n\t\t *\n\t\t * // Load as usual, then revoke the blob URLs.\n\t\t * const loader = new GLTFLoader( manager );\n\t\t * loader.load( 'fish.gltf', (gltf) => {\n\t\t *\n\t\t * \tscene.add( gltf.scene );\n\t\t * \tobjectURLs.forEach( ( url ) => URL.revokeObjectURL( url ) );\n\t\t *\n\t\t * } );\n\t\t * ```\n\t\t *\n\t\t * @param {function(string):string} transform - URL modifier callback. Called with an URL and must return a resolved URL.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Registers a loader with the given regular expression. Can be used to\n\t\t * define what loader should be used in order to load specific files. A\n\t\t * typical use case is to overwrite the default loader for textures.\n\t\t *\n\t\t * ```js\n\t\t * // add handler for TGA textures\n\t\t * manager.addHandler( /\\.tga$/i, new TGALoader() );\n\t\t * ```\n\t\t *\n\t\t * @param {string} regex - A regular expression.\n\t\t * @param {Loader} loader - A loader that should handle matched cases.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Removes the loader for the given regular expression.\n\t\t *\n\t\t * @param {string} regex - A regular expression.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Can be used to retrieve the registered loader for the given file path.\n\t\t *\n\t\t * @param {string} file - The file path.\n\t\t * @return {?Loader} The registered loader. Returns `null` if no loader was found.\n\t\t */\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\t/**\n\t\t * Can be used to abort ongoing loading requests in loaders using this manager.\n\t\t * The abort only works if the loaders implement {@link Loader#abort} and `AbortSignal.any()`\n\t\t * is supported in the browser.\n\t\t *\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.abort = function () {\n\n\t\t\tthis.abortController.abort();\n\t\t\tthis.abortController = new AbortController();\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}\n\n}\n\n/**\n * The global default loading manager.\n *\n * @constant\n * @type {LoadingManager}\n */\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\n/**\n * Abstract base class for loaders.\n *\n * @abstract\n */\nclass Loader {\n\n\t/**\n\t * Constructs a new loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\t/**\n\t\t * The loading manager.\n\t\t *\n\t\t * @type {LoadingManager}\n\t\t * @default DefaultLoadingManager\n\t\t */\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\t/**\n\t\t * The crossOrigin string to implement CORS for loading the url from a\n\t\t * different domain that allows CORS.\n\t\t *\n\t\t * @type {string}\n\t\t * @default 'anonymous'\n\t\t */\n\t\tthis.crossOrigin = 'anonymous';\n\n\t\t/**\n\t\t * Whether the XMLHttpRequest uses credentials.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.withCredentials = false;\n\n\t\t/**\n\t\t * The base path from which the asset will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.path = '';\n\n\t\t/**\n\t\t * The base path from which additional resources like textures will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourcePath = '';\n\n\t\t/**\n\t\t * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t\t * used in HTTP request.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.requestHeader = {};\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for loading assets from the backend.\n\t *\n\t * @abstract\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {Function} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @param {onErrorCallback} [onError] - Executed when errors occur.\n\t */\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\t/**\n\t * A async version of {@link Loader#load}.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @return {Promise} A Promise that resolves when the asset has been loaded.\n\t */\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for parsing the asset into three.js entities.\n\t *\n\t * @abstract\n\t * @param {any} data - The data to parse.\n\t */\n\tparse( /* data */ ) {}\n\n\t/**\n\t * Sets the `crossOrigin` String to implement CORS for loading the URL\n\t * from a different domain that allows CORS.\n\t *\n\t * @param {string} crossOrigin - The `crossOrigin` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Whether the XMLHttpRequest uses credentials such as cookies, authorization\n\t * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.\n\t *\n\t * Note: This setting has no effect if you are loading files locally or from the same domain.\n\t *\n\t * @param {boolean} value - The `withCredentials` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for the asset.\n\t *\n\t * @param {string} path - The base path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for dependent resources like textures.\n\t *\n\t * @param {string} resourcePath - The resource path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given request header.\n\t *\n\t * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t * for configuring the HTTP request.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This method can be implemented in loaders for aborting ongoing requests.\n\t *\n\t * @abstract\n\t * @return {Loader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Callback for onProgress in loaders.\n *\n * @callback onProgressCallback\n * @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status.\n */\n\n/**\n * Callback for onError in loaders.\n *\n * @callback onErrorCallback\n * @param {Error} error - The error which occurred during the loading process.\n */\n\n/**\n * The default material name that is used by loaders\n * when creating materials for loaded 3D objects.\n *\n * Note: Not all loaders might honor this setting.\n *\n * @static\n * @type {string}\n * @default '__DEFAULT'\n */\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\n/**\n * A low level class for loading resources with the Fetch API, used internally by\n * most loaders. It can also be used directly to load any file type that does\n * not have a loader.\n *\n * This loader supports caching. If you want to use it, add `THREE.Cache.enabled = true;`\n * once to your application.\n *\n * ```js\n * const loader = new THREE.FileLoader();\n * const data = await loader.loadAsync( 'example.txt' );\n * ```\n *\n * @augments Loader\n */\nclass FileLoader extends Loader {\n\n\t/**\n\t * Constructs a new file loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * The expected mime type. Valid values can be found\n\t\t * [here]{@link hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype}\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.mimeType = '';\n\n\t\t/**\n\t\t * The expected response type.\n\t\t *\n\t\t * @type {('arraybuffer'|'blob'|'document'|'json'|'')}\n\t\t * @default ''\n\t\t */\n\t\tthis.responseType = '';\n\n\t\t/**\n\t\t * Used for aborting requests.\n\t\t *\n\t\t * @private\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis._abortController = new AbortController();\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded response to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(any)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @param {onErrorCallback} [onError] - Executed when errors occur.\n\t * @return {any|undefined} The cached resource if available.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( `file:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}, ( e ) => {\n\n\t\t\t\t\t\t\t\t\tcontroller.error( e );\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === '' ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( `file:${url}`, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\t/**\n\t * Sets the expected response type.\n\t *\n\t * @param {('arraybuffer'|'blob'|'document'|'json'|'')} value - The response type.\n\t * @return {FileLoader} A reference to this file loader.\n\t */\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the expected mime type of the loaded file.\n\t *\n\t * @param {string} value - The mime type.\n\t * @return {FileLoader} A reference to this file loader.\n\t */\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Aborts ongoing fetch requests.\n\t *\n\t * @return {FileLoader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\tthis._abortController.abort();\n\t\tthis._abortController = new AbortController();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Class for loading animation clips in the JSON format. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.AnimationLoader();\n * const animations = await loader.loadAsync( 'animations/animation.js' );\n * ```\n *\n * @augments Loader\n */\nclass AnimationLoader extends Loader {\n\n\t/**\n\t * Constructs a new animation loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded animations as an array\n\t * holding instances of {@link AnimationClip} to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Array)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns an array of animation clips.\n\t *\n\t * @param {Object} json - The serialized animation clips.\n\t * @return {Array} The parsed animation clips.\n\t */\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract base class for loading compressed texture formats S3TC, ASTC or ETC.\n * Textures are internally loaded via {@link FileLoader}.\n *\n * Derived classes have to implement the `parse()` method which holds the parsing\n * for the respective format.\n *\n * @abstract\n * @augments Loader\n */\nclass CompressedTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new compressed texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded compressed texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {CompressedTexture} The compressed texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nconst _loading = new WeakMap();\n\n/**\n * A loader for loading images. The class loads images with the HTML `Image` API.\n *\n * ```js\n * const loader = new THREE.ImageLoader();\n * const image = await loader.loadAsync( 'image.png' );\n * ```\n * Please note that `ImageLoader` has dropped support for progress\n * events in `r84`. For an `ImageLoader` that supports progress events, see\n * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}.\n *\n * @augments Loader\n */\nclass ImageLoader extends Loader {\n\n\t/**\n\t * Constructs a new image loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded image\n\t * to the `onLoad()` callback. The method also returns a new `Image` object which can\n\t * directly be used for texture creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Image)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {Image} The image.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( `image:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tif ( cached.complete === true ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tlet arr = _loading.get( cached );\n\n\t\t\t\tif ( arr === undefined ) {\n\n\t\t\t\t\tarr = [];\n\t\t\t\t\t_loading.set( cached, arr );\n\n\t\t\t\t}\n\n\t\t\t\tarr.push( { onLoad, onError } );\n\n\t\t\t}\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\t//\n\n\t\t\tconst callbacks = _loading.get( this ) || [];\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i ++ ) {\n\n\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\tif ( callback.onLoad ) callback.onLoad( this );\n\n\t\t\t}\n\n\t\t\t_loading.delete( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tCache.remove( `image:${url}` );\n\n\t\t\t//\n\n\t\t\tconst callbacks = _loading.get( this ) || [];\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i ++ ) {\n\n\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t}\n\n\t\t\t_loading.delete( this );\n\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tCache.add( `image:${url}`, image );\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\n/**\n * Class for loading cube textures. Images are internally loaded via {@link ImageLoader}.\n *\n * The loader returns an instance of {@link CubeTexture} and expects the cube map to\n * be defined as six separate images representing the sides of a cube. Other cube map definitions\n * like vertical and horizontal cross, column and row layouts are not supported.\n *\n * Note that, by convention, cube maps are specified in a coordinate system\n * in which positive-x is to the right when looking up the positive-z axis --\n * in other words, using a left-handed coordinate system. Since three.js uses\n * a right-handed coordinate system, environment maps used in three.js will\n * have pos-x and neg-x swapped.\n *\n * The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace}\n * is set to `SRGBColorSpace` by default.\n *\n * ```js\n * const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' );\n * const cubeTexture = await loader.loadAsync( [\n * \t'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'\n * ] );\n * scene.background = cubeTexture;\n * ```\n *\n * @augments Loader\n */\nclass CubeTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new cube texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the fully loaded cube texture\n\t * to the `onLoad()` callback. The method also returns a new cube texture object which can\n\t * directly be used for material creation. If you do it this way, the cube texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {Array} urls - Array of 6 URLs to images, one for each side of the\n\t * cube texture. The urls should be specified in the following order: pos-x,\n\t * neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well.\n\t * @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {CubeTexture} The cube texture.\n\t */\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract base class for loading binary texture formats RGBE, EXR or TGA.\n * Textures are internally loaded via {@link FileLoader}.\n *\n * Derived classes have to implement the `parse()` method which holds the parsing\n * for the respective format.\n *\n * @abstract\n * @augments Loader\n */\nclass DataTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new data texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded data texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {DataTexture} The data texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Class for loading textures. Images are internally\n * loaded via {@link ImageLoader}.\n *\n * ```js\n * const loader = new THREE.TextureLoader();\n * const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );\n *\n * const material = new THREE.MeshBasicMaterial( { map:texture } );\n * ```\n * Please note that `TextureLoader` has dropped support for progress\n * events in `r84`. For a `TextureLoader` that supports progress events, see\n * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.\n *\n * @augments Loader\n */\nclass TextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the fully loaded texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Texture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {Texture} The texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract base class for lights - all other light types inherit the\n * properties and methods described here.\n *\n * @abstract\n * @augments Object3D\n */\nclass Light extends Object3D {\n\n\t/**\n\t * Constructs a new light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\t/**\n\t\t * The light's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The light's intensity.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = intensity;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\t\tif ( this.target !== undefined ) data.object.target = this.target.uuid;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * A light source positioned directly above the scene, with color fading from\n * the sky color to the ground color.\n *\n * This light cannot be used to cast shadows.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass HemisphereLight extends Light {\n\n\t/**\n\t * Constructs a new hemisphere light.\n\t *\n\t * @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.\n\t * @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The light's ground color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * Abstract base class for light shadow classes. These classes\n * represent the shadow configuration for different light types.\n *\n * @abstract\n */\nclass LightShadow {\n\n\t/**\n\t * Constructs a new light shadow.\n\t *\n\t * @param {Camera} camera - The light's view of the world.\n\t */\n\tconstructor( camera ) {\n\n\t\t/**\n\t\t * The light's view of the world.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\n\t\t/**\n\t\t * The intensity of the shadow. The default is `1`.\n\t\t * Valid values are in the range `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = 1;\n\n\t\t/**\n\t\t * Shadow map bias, how much to add or subtract from the normalized depth\n\t\t * when deciding whether a surface is in shadow.\n\t\t *\n\t\t * The default is `0`. Very tiny adjustments here (in the order of `0.0001`)\n\t\t * may help reduce artifacts in shadows.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.bias = 0;\n\n\t\t/**\n\t\t * Defines how much the position used to query the shadow map is offset along\n\t\t * the object normal. The default is `0`. Increasing this value can be used to\n\t\t * reduce shadow acne especially in large scenes where light shines onto\n\t\t * geometry at a shallow angle. The cost is that shadows may appear distorted.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.normalBias = 0;\n\n\t\t/**\n\t\t * Setting this to values greater than 1 will blur the edges of the shadow.\n\t\t * High values will cause unwanted banding effects in the shadows - a greater\n\t\t * map size will allow for a higher value to be used here before these effects\n\t\t * become visible.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `PCFSoftShadowMap` and\n\t\t * and it is recommended to increase softness by decreasing the shadow map size instead.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `BasicShadowMap`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = 1;\n\n\t\t/**\n\t\t * The amount of samples to use when blurring a VSM shadow map.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 8\n\t\t */\n\t\tthis.blurSamples = 8;\n\n\t\t/**\n\t\t * Defines the width and height of the shadow map. Higher values give better quality\n\t\t * shadows at the cost of computation time. Values must be powers of two.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (512,512)\n\t\t */\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\t/**\n\t\t * The type of shadow texture. The default is `UnsignedByteType`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default UnsignedByteType\n\t\t */\n\t\tthis.mapType = UnsignedByteType;\n\n\t\t/**\n\t\t * The depth map generated using the internal camera; a location beyond a\n\t\t * pixel's depth is in shadow. Computed internally during rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The distribution map generated using the internal camera; an occlusion is\n\t\t * calculated based on the distribution of depths. Computed internally during\n\t\t * rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.mapPass = null;\n\n\t\t/**\n\t\t * Model to shadow camera space, to compute location and depth in shadow map.\n\t\t * This is computed internally during rendering.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Enables automatic updates of the light's shadow. If you do not require dynamic\n\t\t * lighting / shadows, you may set this to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t\t/**\n\t\t * When set to `true`, shadow maps will be updated in the next `render` call.\n\t\t * If you have set {@link LightShadow#autoUpdate} to `false`, you will need to\n\t\t * set this property to `true` and then make a render call to update the light's shadow.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\t/**\n\t * Used internally by the renderer to get the number of viewports that need\n\t * to be rendered for this shadow.\n\t *\n\t * @return {number} The viewport count.\n\t */\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\t/**\n\t * Gets the shadow cameras frustum. Used internally by the renderer to cull objects.\n\t *\n\t * @return {Frustum} The shadow camera frustum.\n\t */\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t */\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );\n\n\t\tif ( shadowCamera.reversedDepth ) {\n\n\t\t\tshadowMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 1.0, 0.0,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tshadowMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t}\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\t/**\n\t * Returns a viewport definition for the given viewport index.\n\t *\n\t * @param {number} viewportIndex - The viewport index.\n\t * @return {Vector4} The viewport.\n\t */\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\t/**\n\t * Returns the frame extends.\n\t *\n\t * @return {Vector2} The frame extends.\n\t */\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Copies the values of the given light shadow instance to this instance.\n\t *\n\t * @param {LightShadow} source - The light shadow to copy.\n\t * @return {LightShadow} A reference to this light shadow instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.needsUpdate = source.needsUpdate;\n\t\tthis.normalBias = source.normalBias;\n\t\tthis.blurSamples = source.blurSamples;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new light shadow instance with copied values from this instance.\n\t *\n\t * @return {LightShadow} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Serializes the light shadow into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized light shadow.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass SpotLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new spot light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLightShadow = true;\n\n\t\t/**\n\t\t * Used to focus the shadow camera. The camera's field of view is set as a\n\t\t * percentage of the spotlight's field-of-view. Range is `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.focus = 1;\n\n\t\t/**\n\t\t * Texture aspect ratio.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = ( this.mapSize.width / this.mapSize.height ) * this.aspect;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light gets emitted from a single point in one direction, along a cone\n * that increases in size the further from the light it gets.\n *\n * This light can cast shadows - see the {@link SpotLightShadow} for details.\n *\n * ```js\n * // white spotlight shining from the side, modulated by a texture\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 100, 1000, 100 );\n * spotLight.map = new THREE.TextureLoader().load( url );\n *\n * spotLight.castShadow = true;\n * spotLight.shadow.mapSize.width = 1024;\n * spotLight.shadow.mapSize.height = 1024;\n * spotLight.shadow.camera.near = 500;\n * spotLight.shadow.camera.far = 4000;\n * spotLight.shadow.camera.fov = 30;s\n * ```\n *\n * @augments Light\n */\nclass SpotLight extends Light {\n\n\t/**\n\t * Constructs a new spot light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t * @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The spot light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * Maximum range of the light. `0` means no limit.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI/3\n\t\t */\n\t\tthis.angle = angle;\n\n\t\t/**\n\t\t * Percent of the spotlight cone that is attenuated due to penumbra.\n\t\t * Value range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.penumbra = penumbra;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * A texture used to modulate the color of the light. The spot light\n\t\t * color is mixed with the RGB value of this texture, with a ratio\n\t\t * corresponding to its alpha value. The cookie-like masking effect is\n\t\t * reproduced using pixel values (0, 0, 0, 1-cookie_value).\n\t\t *\n\t\t * *Warning*: This property is disabled if {@link Object3D#castShadow} is set to `false`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {SpotLightShadow}\n\t\t */\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents the shadow configuration of point lights.\n *\n * @augments LightShadow\n */\nclass PointLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new point light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( -1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, -1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, -1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, -1 )\n\t\t];\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t * @param {number} [viewportIndex=0] - The viewport index.\n\t */\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );\n\n\t}\n\n}\n\n/**\n * A light that gets emitted from a single point in all directions. A common\n * use case for this is to replicate the light emitted from a bare\n * lightbulb.\n *\n * This light can cast shadows - see the {@link PointLightShadow} for details.\n *\n * ```js\n * const light = new THREE.PointLight( 0xff0000, 1, 100 );\n * light.position.set( 50, 50, 50 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass PointLight extends Light {\n\n\t/**\n\t * Constructs a new point light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\t/**\n\t\t * When distance is zero, light will attenuate according to inverse-square\n\t\t * law to infinite distance. When distance is non-zero, light will attenuate\n\t\t * according to inverse-square law until near the distance cutoff, where it\n\t\t * will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not\n\t\t * physically correct.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {PointLightShadow}\n\t\t */\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.\n *\n * In this projection mode, an object's size in the rendered image stays\n * constant regardless of its distance from the camera. This can be useful\n * for rendering 2D scenes and UI elements, amongst other things.\n *\n * ```js\n * const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass OrthographicCamera extends Camera {\n\n\t/**\n\t * Constructs a new orthographic camera.\n\t *\n\t * @param {number} [left=-1] - The left plane of the camera's frustum.\n\t * @param {number} [right=1] - The right plane of the camera's frustum.\n\t * @param {number} [top=1] - The top plane of the camera's frustum.\n\t * @param {number} [bottom=-1] - The bottom plane of the camera's frustum.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * The left plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.left = left;\n\n\t\t/**\n\t\t * The right plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.right = right;\n\n\t\t/**\n\t\t * The top plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.top = top;\n\n\t\t/**\n\t\t * The bottom plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.bottom = bottom;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link OrthographicCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link PerspectiveCamera}, `0` is a\n\t\t * valid value for an orthographic camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link OrthographicCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t * @see {@link PerspectiveCamera#setViewOffset}\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem, this.reversedDepth );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass DirectionalLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new directional light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( -5, 5, 5, -5, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\n/**\n * A light that gets emitted in a specific direction. This light will behave\n * as though it is infinitely far away and the rays produced from it are all\n * parallel. The common use case for this is to simulate daylight; the sun is\n * far enough away that its position can be considered to be infinite, and\n * all light rays coming from it are parallel.\n *\n * A common point of confusion for directional lights is that setting the\n * rotation has no effect. This is because three.js's DirectionalLight is the\n * equivalent to what is often called a 'Target Direct Light' in other\n * applications.\n *\n * This means that its direction is calculated as pointing from the light's\n * {@link Object3D#position} to the {@link DirectionalLight#target} position\n * (as opposed to a 'Free Direct Light' that just has a rotation\n * component).\n *\n * This light can cast shadows - see the {@link DirectionalLightShadow} for details.\n *\n * ```js\n * // White directional light at half intensity shining from the top.\n * const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\n * scene.add( directionalLight );\n * ```\n *\n * @augments Light\n */\nclass DirectionalLight extends Light {\n\n\t/**\n\t * Constructs a new directional light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The directional light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {DirectionalLightShadow}\n\t\t */\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light globally illuminates all objects in the scene equally.\n *\n * It cannot be used to cast shadows as it does not have a direction.\n *\n * ```js\n * const light = new THREE.AmbientLight( 0x404040 ); // soft white light\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass AmbientLight extends Light {\n\n\t/**\n\t * Constructs a new ambient light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\n/**\n * This class emits light uniformly across the face a rectangular plane.\n * This light type can be used to simulate light sources such as bright\n * windows or strip lighting.\n *\n * Important Notes:\n *\n * - There is no shadow support.\n * - Only PBR materials are supported.\n * - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`)\n * into your app and init the uniforms/textures.\n *\n * ```js\n * RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer\n * THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); // only relevant for WebGPURenderer\n *\n * const intensity = 1; const width = 10; const height = 10;\n * const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height );\n * rectLight.position.set( 5, 5, 0 );\n * rectLight.lookAt( 0, 0, 0 );\n * scene.add( rectLight )\n * ```\n *\n * @augments Light\n */\nclass RectAreaLight extends Light {\n\n\t/**\n\t * Constructs a new area light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t * @param {number} [width=10] - The width of the light.\n\t * @param {number} [height=10] - The height of the light.\n\t */\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\t/**\n\t\t * The width of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.width = width;\n\n\t\t/**\n\t\t * The height of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.height = height;\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents a third-order spherical harmonics (SH). Light probes use this class\n * to encode lighting information.\n *\n * - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf}\n * - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf}\n */\nclass SphericalHarmonics3 {\n\n\t/**\n\t * Constructs a new spherical harmonics.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\t/**\n\t\t * An array holding the (9) SH coefficients.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given SH coefficients to this instance by copying\n\t * the values.\n\t *\n\t * @param {Array} coefficients - The SH coefficients.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets all SH coefficients to `0`.\n\t *\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the radiance in the direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The radiance.\n\t */\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the irradiance (radiance convolved with cosine lobe) in the\n\t * direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The irradiance.\n\t */\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Adds the given SH to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * A convenience method for performing {@link SphericalHarmonics3#add} and\n\t * {@link SphericalHarmonics3#scale} at once.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this SH by the given scale factor.\n\t *\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linear interpolates between the given SH and this instance by the given\n\t * alpha factor.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to interpolate with.\n\t * @param {number} alpha - The alpha factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this spherical harmonics is equal with the given one.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality.\n\t * @return {boolean} Whether this spherical harmonics is equal with the given one.\n\t */\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical harmonics to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to copy.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\t/**\n\t * Returns a new spherical harmonics with copied values from this instance.\n\t *\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Sets the SH coefficients of this instance from the given array.\n\t *\n\t * @param {Array} array - An array holding the SH coefficients.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns an array with the SH coefficients, or copies them into the provided\n\t * array. The coefficients are represented as numbers.\n\t *\n\t * @param {Array} [array=[]] - The target array.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {Array} An array with flat SH coefficients.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Computes the SH basis for the given normal vector.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Array} shBasis - The target array holding the SH basis.\n\t */\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\n/**\n * Light probes are an alternative way of adding light to a 3D scene. Unlike\n * classical light sources (e.g. directional, point or spot lights), light\n * probes do not emit light. Instead they store information about light\n * passing through 3D space. During rendering, the light that hits a 3D\n * object is approximated by using the data from the light probe.\n *\n * Light probes are usually created from (radiance) environment maps. The\n * class {@link LightProbeGenerator} can be used to create light probes from\n * cube textures or render targets. However, light estimation data could also\n * be provided in other forms e.g. by WebXR. This enables the rendering of\n * augmented reality content that reacts to real world lighting.\n *\n * The current probe implementation in three.js supports so-called diffuse\n * light probes. This type of light probe is functionally equivalent to an\n * irradiance environment map.\n *\n * @augments Light\n */\nclass LightProbe extends Light {\n\n\t/**\n\t * Constructs a new light probe.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLightProbe = true;\n\n\t\t/**\n\t\t * A light probe uses spherical harmonics to encode lighting information.\n\t\t *\n\t\t * @type {SphericalHarmonics3}\n\t\t */\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deserializes the light prove from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized light probe.\n\t * @return {LightProbe} A reference to this light probe.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Class for loading geometries. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.MaterialLoader();\n * const material = await loader.loadAsync( 'material.json' );\n * ```\n * This loader does not support node materials. Use {@link NodeMaterialLoader} instead.\n *\n * @augments Loader\n */\nclass MaterialLoader extends Loader {\n\n\t/**\n\t * Constructs a new material loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * A dictionary holding textures used by the material.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.textures = {};\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded material to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Material)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns a material.\n\t *\n\t * @param {Object} json - The serialized material.\n\t * @return {Material} The parsed material.\n\t */\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = this.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\t/**\n\t * Textures are not embedded in the material JSON so they have\n\t * to be injected before the loading process starts.\n\t *\n\t * @param {Object} value - A dictionary holding textures for material properties.\n\t * @return {MaterialLoader} A reference to this material loader.\n\t */\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a material for the given type.\n\t *\n\t * @param {string} type - The material type.\n\t * @return {Material} The new material.\n\t */\n\tcreateMaterialFromType( type ) {\n\n\t\treturn MaterialLoader.createMaterialFromType( type );\n\n\t}\n\n\t/**\n\t * Creates a material for the given type.\n\t *\n\t * @static\n\t * @param {string} type - The material type.\n\t * @return {Material} The new material.\n\t */\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\n/**\n * A class with loader utility functions.\n */\nclass LoaderUtils {\n\n\t/**\n\t * Extracts the base URL from the given URL.\n\t *\n\t * @param {string} url -The URL to extract the base URL from.\n\t * @return {string} The extracted base URL.\n\t */\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === -1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\t/**\n\t * Resolves relative URLs against the given path. Absolute paths, data urls,\n\t * and blob URLs will be returned as is. Invalid URLs will return an empty\n\t * string.\n\t *\n\t * @param {string} url -The URL to resolve.\n\t * @param {string} path - The base path for relative URLs to be resolved against.\n\t * @return {string} The resolved URL.\n\t */\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\n/**\n * An instanced version of a geometry.\n */\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new instanced buffer geometry.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\n\t\t/**\n\t\t * The instance count.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Class for loading geometries. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.BufferGeometryLoader();\n * const geometry = await loader.loadAsync( 'models/json/pressure.json' );\n *\n * const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );\n * const object = new THREE.Mesh( geometry, material );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n */\nclass BufferGeometryLoader extends Loader {\n\n\t/**\n\t * Constructs a new geometry loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns a geometry.\n\t *\n\t * @param {Object} json - The serialized geometry.\n\t * @return {BufferGeometry} The parsed geometry.\n\t */\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tgeometry.boundingSphere = new Sphere().fromJSON( boundingSphere );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.\n * The files are internally loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.ObjectLoader();\n * const obj = await loader.loadAsync( 'models/json/example.json' );\n * scene.add( obj );\n *\n * // Alternatively, to parse a previously loaded JSON structure\n * const object = await loader.parseAsync( a_json_object );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n */\nclass ObjectLoader extends Loader {\n\n\t/**\n\t * Constructs a new object loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Async version of {@link ObjectLoader#load}.\n\t *\n\t * @async\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @return {Promise} A Promise that resolves with the loaded 3D object.\n\t */\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\t/**\n\t * Parses the given JSON. This is used internally by {@link ObjectLoader#load}\n\t * but can also be used directly to parse a previously loaded JSON structure.\n\t *\n\t * @param {Object} json - The serialized 3D object.\n\t * @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded.\n\t * @return {Object3D} The parsed 3D object.\n\t */\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\t/**\n\t * Async version of {@link ObjectLoader#parse}.\n\t *\n\t * @param {Object} json - The serialized 3D object.\n\t * @return {Promise} A Promise that resolves with the parsed 3D object.\n\t */\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\treturn object;\n\n\t}\n\n\t// internals\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._geometryInfo = data.geometryInfo.map( info => {\n\n\t\t\t\t\tlet box = null;\n\t\t\t\t\tlet sphere = null;\n\t\t\t\t\tif ( info.boundingBox !== undefined ) {\n\n\t\t\t\t\t\tbox = new Box3().fromJSON( info.boundingBox );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( info.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\tsphere = new Sphere().fromJSON( info.boundingSphere );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tboundingBox: box,\n\t\t\t\t\t\tboundingSphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\t\t\t\tobject._instanceInfo = data.instanceInfo;\n\n\t\t\t\tobject._availableInstanceIds = data._availableInstanceIds;\n\t\t\t\tobject._availableGeometryIds = data._availableGeometryIds;\n\n\t\t\t\tobject._nextIndexStart = data.nextIndexStart;\n\t\t\t\tobject._nextVertexStart = data.nextVertexStart;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._maxInstanceCount = data.maxInstanceCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tobject._indirectTexture = getTexture( data.indirectTexture.uuid );\n\n\t\t\t\tif ( data.colorsTexture !== undefined ) {\n\n\t\t\t\t\tobject._colorsTexture = getTexture( data.colorsTexture.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.boundingSphere !== undefined ) {\n\n\t\t\t\t\tobject.boundingSphere = new Sphere().fromJSON( data.boundingSphere );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.boundingBox !== undefined ) {\n\n\t\t\t\t\tobject.boundingBox = new Box3().fromJSON( data.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tbindLightTargets( object ) {\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isDirectionalLight || child.isSpotLight ) {\n\n\t\t\t\tconst uuid = child.target;\n\n\t\t\t\tconst target = object.getObjectByProperty( 'uuid', uuid );\n\n\t\t\t\tif ( target !== undefined ) {\n\n\t\t\t\t\tchild.target = target;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.target = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nconst _errorMap = new WeakMap();\n\n/**\n * A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}.\n * An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare\n * textures for rendering.\n *\n * Note that {@link Texture#flipY} and {@link Texture#premultiplyAlpha} are ignored with image bitmaps.\n * They needs these configuration on bitmap creation unlike regular images need them on uploading to GPU.\n *\n * You need to set the equivalent options via {@link ImageBitmapLoader#setOptions} instead.\n *\n * Also note that unlike {@link FileLoader}, this loader avoids multiple concurrent requests to the same URL only if `Cache` is enabled.\n *\n * ```js\n * const loader = new THREE.ImageBitmapLoader();\n * loader.setOptions( { imageOrientation: 'flipY' } ); // set options if needed\n * const imageBitmap = await loader.loadAsync( 'image.png' );\n *\n * const texture = new THREE.Texture( imageBitmap );\n * texture.needsUpdate = true;\n * ```\n *\n * @augments Loader\n */\nclass ImageBitmapLoader extends Loader {\n\n\t/**\n\t * Constructs a new image bitmap loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\t/**\n\t\t * Represents the loader options.\n\t\t *\n\t\t * @type {Object}\n\t\t * @default {premultiplyAlpha:'none'}\n\t\t */\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t\t/**\n\t\t * Used for aborting requests.\n\t\t *\n\t\t * @private\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis._abortController = new AbortController();\n\n\t}\n\n\t/**\n\t * Sets the given loader options. The structure of the object must match the `options` parameter of\n\t * [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}.\n\t *\n\t * @param {Object} options - The loader options to set.\n\t * @return {ImageBitmapLoader} A reference to this image bitmap loader.\n\t */\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded image bitmap to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {ImageBitmap|undefined} The image bitmap.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( `image-bitmap:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\t// check if there is an error for the cached promise\n\n\t\t\t\t\tif ( _errorMap.has( cached ) === true ) {\n\n\t\t\t\t\t\tif ( onError ) onError( _errorMap.get( cached ) );\n\n\t\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t\treturn imageBitmap;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\t\tfetchOptions.signal = ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( `image-bitmap:${url}`, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\t_errorMap.set( promise, e );\n\n\t\t\tCache.remove( `image-bitmap:${url}` );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( `image-bitmap:${url}`, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n\t/**\n\t * Aborts ongoing fetch requests.\n\t *\n\t * @return {ImageBitmapLoader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\tthis._abortController.abort();\n\t\tthis._abortController = new AbortController();\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _context;\n\n/**\n * Manages the global audio context in the engine.\n *\n * @hideconstructor\n */\nclass AudioContext {\n\n\t/**\n\t * Returns the global native audio context.\n\t *\n\t * @return {AudioContext} The native audio context.\n\t */\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\t/**\n\t * Allows to set the global native audio context from outside.\n\t *\n\t * @param {AudioContext} value - The native context to set.\n\t */\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\n/**\n * Class for loading audio buffers. Audios are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const audioListener = new THREE.AudioListener();\n * const ambientSound = new THREE.Audio( audioListener );\n *\n * const loader = new THREE.AudioLoader();\n * const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );\n *\n * ambientSound.setBuffer( audioBuffer );\n * ambientSound.play();\n * ```\n *\n * @augments Loader\n */\nclass AudioLoader extends Loader {\n\n\t/**\n\t * Constructs a new audio loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded audio buffer\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * A special type of camera that uses two perspective cameras with\n * stereoscopic projection. Can be used for rendering stereo effects\n * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or\n * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.\n */\nclass StereoCamera {\n\n\t/**\n\t * Constructs a new stereo camera.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'StereoCamera';\n\n\t\t/**\n\t\t * The aspect.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = 1;\n\n\t\t/**\n\t\t * The eye separation which represents the distance\n\t\t * between the left and right camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.064\n\t\t */\n\t\tthis.eyeSep = 0.064;\n\n\t\t/**\n\t\t * The camera representing the left eye. This is added to layer `1` so objects to be\n\t\t * rendered by the left camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The camera representing the right eye. This is added to layer `2` so objects to be\n\t\t * rendered by the right camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\t/**\n\t * Updates the stereo camera based on the given perspective camera.\n\t *\n\t * @param {PerspectiveCamera} camera - The perspective camera.\n\t */\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\n/**\n * This type of camera can be used in order to efficiently render a scene with a\n * predefined set of cameras. This is an important performance aspect for\n * rendering VR scenes.\n *\n * An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory\n * to define for each sub camera the `viewport` property which determines the\n * part of the viewport that is rendered with this camera.\n *\n * @augments PerspectiveCamera\n */\nclass ArrayCamera extends PerspectiveCamera {\n\n\t/**\n\t * Constructs a new array camera.\n\t *\n\t * @param {Array} [array=[]] - An array of perspective sub cameras.\n\t */\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArrayCamera = true;\n\n\t\t/**\n\t\t * Whether this camera is used with multiview rendering or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isMultiViewCamera = false;\n\n\t\t/**\n\t\t * An array of perspective sub cameras.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\n/**\n * Class for keeping track of time.\n */\nclass Clock {\n\n\t/**\n\t * Constructs a new clock.\n\t *\n\t * @param {boolean} [autoStart=true] - Whether to automatically start the clock when\n\t * `getDelta()` is called for the first time.\n\t */\n\tconstructor( autoStart = true ) {\n\n\t\t/**\n\t\t * If set to `true`, the clock starts automatically when `getDelta()` is called\n\t\t * for the first time.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoStart = autoStart;\n\n\t\t/**\n\t\t * Holds the time at which the clock's `start()` method was last called.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.startTime = 0;\n\n\t\t/**\n\t\t * Holds the time at which the clock's `start()`, `getElapsedTime()` or\n\t\t * `getDelta()` methods were last called.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.oldTime = 0;\n\n\t\t/**\n\t\t * Keeps track of the total time that the clock has been running.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.elapsedTime = 0;\n\n\t\t/**\n\t\t * Whether the clock is running or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.running = false;\n\n\t}\n\n\t/**\n\t * Starts the clock. When `autoStart` is set to `true`, the method is automatically\n\t * called by the class.\n\t */\n\tstart() {\n\n\t\tthis.startTime = performance.now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\t/**\n\t * Stops the clock.\n\t */\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\t/**\n\t * Returns the elapsed time in seconds.\n\t *\n\t * @return {number} The elapsed time.\n\t */\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\t/**\n\t * Returns the delta time in seconds.\n\t *\n\t * @return {number} The delta time.\n\t */\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = performance.now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\n\nconst _forward = /*@__PURE__*/ new Vector3();\nconst _up = /*@__PURE__*/ new Vector3();\n\n/**\n * The class represents a virtual listener of the all positional and non-positional audio effects\n * in the scene. A three.js application usually creates a single listener. It is a mandatory\n * constructor parameter for audios entities like {@link Audio} and {@link PositionalAudio}.\n *\n * In most cases, the listener object is a child of the camera. So the 3D transformation of the\n * camera represents the 3D transformation of the listener.\n *\n * @augments Object3D\n */\nclass AudioListener extends Object3D {\n\n\t/**\n\t * Constructs a new audio listener.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\t/**\n\t\t * The native audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = AudioContext.getContext();\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\t/**\n\t\t * An optional filter.\n\t\t *\n\t\t * Defined via {@link AudioListener#setFilter}.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.filter = null;\n\n\t\t/**\n\t\t * Time delta values required for `linearRampToValueAtTime()` usage.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\t/**\n\t * Returns the listener's input node.\n\t *\n\t * This method is used by other audio nodes to connect to this listener.\n\t *\n\t * @return {GainNode} The input node.\n\t */\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Removes the current filter from this listener.\n\t *\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filter.\n\t *\n\t * @return {?AudioNode} The filter.\n\t */\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\t/**\n\t * Sets the given filter to this listener.\n\t *\n\t * @param {AudioNode} value - The filter to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the applications master volume.\n\t *\n\t * @return {number} The master volume.\n\t */\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the applications master volume. This volume setting affects\n\t * all audio nodes in the scene.\n\t *\n\t * @param {number} value - The master volume to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t// the initial forward and up directions must be orthogonal\n\t\t_forward.set( 0, 0, -1 ).applyQuaternion( _quaternion$1 );\n\t\t_up.set( 0, 1, 0 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _forward.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _forward.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _forward.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( _up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( _up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( _up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _forward.x, _forward.y, _forward.z, _up.x, _up.y, _up.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Represents a non-positional ( global ) audio object.\n *\n * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create a global audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop( true );\n * \tsound.setVolume( 0.5 );\n * \tsound.play();\n * });\n * ```\n *\n * @augments Object3D\n */\nclass Audio extends Object3D {\n\n\t/**\n\t * Constructs a new audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AudioListener}\n\t\t * @readonly\n\t\t */\n\t\tthis.listener = listener;\n\n\t\t/**\n\t\t * The audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = listener.context;\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\t/**\n\t\t * Whether to start playback automatically or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoplay = false;\n\n\t\t/**\n\t\t * A reference to an audio buffer.\n\t\t *\n\t\t * Defined via {@link Audio#setBuffer}.\n\t\t *\n\t\t * @type {?AudioBuffer}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.buffer = null;\n\n\t\t/**\n\t\t * Modify pitch, measured in cents. +/- 100 is a semitone.\n\t\t * +/- 1200 is an octave.\n\t\t *\n\t\t * Defined via {@link Audio#setDetune}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.detune = 0;\n\n\t\t/**\n\t\t * Whether the audio should loop or not.\n\t\t *\n\t\t * Defined via {@link Audio#setLoop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.loop = false;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * start, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopStart = 0;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * stop, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopEnd = 0;\n\n\t\t/**\n\t\t * An offset to the time within the audio buffer the playback\n\t\t * should begin, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.offset = 0;\n\n\t\t/**\n\t\t * Overrides the default duration of the audio.\n\t\t *\n\t\t * @type {undefined|number}\n\t\t * @default undefined\n\t\t */\n\t\tthis.duration = undefined;\n\n\t\t/**\n\t\t * The playback speed.\n\t\t *\n\t\t * Defined via {@link Audio#setPlaybackRate}.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 1\n\t\t */\n\t\tthis.playbackRate = 1;\n\n\t\t/**\n\t\t * Indicates whether the audio is playing or not.\n\t\t *\n\t\t * This flag will be automatically set when using {@link Audio#play},\n\t\t * {@link Audio#pause}, {@link Audio#stop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isPlaying = false;\n\n\t\t/**\n\t\t * Indicates whether the audio playback can be controlled\n\t\t * with method like {@link Audio#play} or {@link Audio#pause}.\n\t\t *\n\t\t * This flag will be automatically set when audio sources are\n\t\t * defined.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.hasPlaybackControl = true;\n\n\t\t/**\n\t\t * Holds a reference to the current audio source.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @readonly\n\t\t * @default null\n\t\t */\n\t\tthis.source = null;\n\n\t\t/**\n\t\t * Defines the source type.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}\n\t\t * @readonly\n\t\t * @default 'empty'\n\t\t */\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\t/**\n\t\t * Can be used to apply a variety of low-order filters to create\n\t\t * more complex sound effects e.g. via `BiquadFilterNode`.\n\t\t *\n\t\t * The property is automatically set by {@link Audio#setFilters}.\n\t\t *\n\t\t * @type {Array}\n\t\t * @readonly\n\t\t */\n\t\tthis.filters = [];\n\n\t}\n\n\t/**\n\t * Returns the output audio node.\n\t *\n\t * @return {GainNode} The output node.\n\t */\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Sets the given audio node as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `audioNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {AudioNode} audioNode - The audio node like an instance of `OscillatorNode`.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media element as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {HTMLMediaElement} mediaElement - The media element.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media stream as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaStreamNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {MediaStream} mediaStream - The media stream.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given audio buffer as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `buffer` and {@link Audio#hasPlaybackControl} to `true`.\n\t *\n\t * @param {AudioBuffer} audioBuffer - The audio buffer.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should start playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\t/**\n\t * Pauses the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should stop playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tstop( delay = 0 ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop( this.context.currentTime + delay );\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Connects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio} A reference to this instance.\n\t */\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Disconnects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filters.\n\t *\n\t * @return {Array} The list of filters.\n\t */\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\t/**\n\t * Sets an array of filters and connects them with the audio source.\n\t *\n\t * @param {Array} [value] - A list of filters.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Defines the detuning of oscillation in cents.\n\t *\n\t * @param {number} value - The detuning of oscillation in cents.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the detuning of oscillation in cents.\n\t *\n\t * @return {number} The detuning of oscillation in cents.\n\t */\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\t/**\n\t * Returns the first filter in the list of filters.\n\t *\n\t * @return {AudioNode|undefined} The first filter in the list of filters.\n\t */\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\t/**\n\t * Applies a single filter node to the audio.\n\t *\n\t * @param {AudioNode} [filter] - The filter to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\t/**\n\t * Sets the playback rate.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [value] - The playback rate to set.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current playback rate.\n\n\t * @return {number} The playback rate.\n\t */\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\t/**\n\t * Automatically called when playback finished.\n\t */\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\t\tthis._progress = 0;\n\n\t}\n\n\t/**\n\t * Returns the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {boolean} Whether the audio should loop or not.\n\t */\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\t/**\n\t * Sets the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {boolean} value - Whether the audio should loop or not.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop start value which defines where in the audio buffer the replay should\n\t * start, in seconds.\n\t *\n\t * @param {number} value - The loop start value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop end value which defines where in the audio buffer the replay should\n\t * stop, in seconds.\n\t *\n\t * @param {number} value - The loop end value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the volume.\n\t *\n\t * @return {number} The volume.\n\t */\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the volume.\n\t *\n\t * @param {number} value - The volume to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.sourceType !== 'buffer' ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio source type cannot be copied.' );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.autoplay = source.autoplay;\n\n\t\tthis.buffer = source.buffer;\n\t\tthis.detune = source.detune;\n\t\tthis.loop = source.loop;\n\t\tthis.loopStart = source.loopStart;\n\t\tthis.loopEnd = source.loopEnd;\n\t\tthis.offset = source.offset;\n\t\tthis.duration = source.duration;\n\t\tthis.playbackRate = source.playbackRate;\n\t\tthis.hasPlaybackControl = source.hasPlaybackControl;\n\t\tthis.sourceType = source.sourceType;\n\n\t\tthis.filters = source.filters.slice();\n\n\t\treturn this;\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor( this.listener ).copy( this, recursive );\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents a positional audio object.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create the PositionalAudio object (passing in the listener)\n * const sound = new THREE.PositionalAudio( listener );\n *\n * // load a sound and set it as the PositionalAudio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/song.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setRefDistance( 20 );\n * \tsound.play();\n * });\n *\n * // create an object for the sound to play from\n * const sphere = new THREE.SphereGeometry( 20, 32, 16 );\n * const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );\n * const mesh = new THREE.Mesh( sphere, material );\n * scene.add( mesh );\n *\n * // finally add the sound to the mesh\n * mesh.add( sound );\n *\n * @augments Audio\n */\nclass PositionalAudio extends Audio {\n\n\t/**\n\t * Constructs a positional audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\t/**\n\t\t * The panner node represents the location, direction, and behavior of an audio\n\t\t * source in 3D space.\n\t\t *\n\t\t * @type {PannerNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\t/**\n\t * Returns the current reference distance.\n\t *\n\t * @return {number} The reference distance.\n\t */\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\t/**\n\t * Defines the reference distance for reducing volume as the audio source moves\n\t * further from the listener – i.e. the distance at which the volume reduction\n\t * starts taking effect.\n\t *\n\t * @param {number} value - The reference distance to set.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current rolloff factor.\n\t *\n\t * @return {number} The rolloff factor.\n\t */\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\t/**\n\t * Defines how quickly the volume is reduced as the source moves away from the listener.\n\t *\n\t * @param {number} value - The rolloff factor.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current distance model.\n\t *\n\t * @return {('linear'|'inverse'|'exponential')} The distance model.\n\t */\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\t/**\n\t * Defines which algorithm to use to reduce the volume of the audio source\n\t * as it moves away from the listener.\n\t *\n\t * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}\n\t * for more details.\n\t *\n\t * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current max distance.\n\t *\n\t * @return {number} The max distance.\n\t */\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\t/**\n\t * Defines the maximum distance between the audio source and the listener,\n\t * after which the volume is not reduced any further.\n\t *\n\t * This value is used only by the `linear` distance model.\n\t *\n\t * @param {number} value - The max distance.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the directional cone in which the audio can be listened.\n\t *\n\t * @param {number} coneInnerAngle - An angle, in degrees, of a cone inside of which there will be no volume reduction.\n\t * @param {number} coneOuterAngle - An angle, in degrees, of a cone outside of which the volume will be reduced by a constant value, defined by the `coneOuterGain` parameter.\n\t * @param {number} coneOuterGain - The amount of volume reduction outside the cone defined by the `coneOuterAngle`. When set to `0`, no sound can be heard.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class can be used to analyse audio data.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create an Audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop(true);\n * \tsound.setVolume(0.5);\n * \tsound.play();\n * });\n *\n * // create an AudioAnalyser, passing in the sound and desired fftSize\n * const analyser = new THREE.AudioAnalyser( sound, 32 );\n *\n * // get the average frequency of the sound\n * const data = analyser.getAverageFrequency();\n * ```\n */\nclass AudioAnalyser {\n\n\t/**\n\t * Constructs a new audio analyzer.\n\t *\n\t * @param {Audio} audio - The audio to analyze.\n\t * @param {number} [fftSize=2048] - The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data.\n\t */\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AnalyserNode}\n\t\t */\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\t/**\n\t\t * Holds the analyzed data.\n\t\t *\n\t\t * @type {Uint8Array}\n\t\t */\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\t/**\n\t * Returns an array with frequency data of the audio.\n\t *\n\t * Each item in the array represents the decibel value for a specific frequency.\n\t * The frequencies are spread linearly from 0 to 1/2 of the sample rate.\n\t * For example, for 48000 sample rate, the last item of the array will represent\n\t * the decibel value for 24000 Hz.\n\t *\n\t * @return {Uint8Array} The frequency data.\n\t */\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\t/**\n\t * Returns the average of the frequencies returned by {@link AudioAnalyser#getFrequencyData}.\n\t *\n\t * @return {number} The average frequency.\n\t */\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\n/**\n * Buffered scene graph property that allows weighted accumulation; used internally.\n */\nclass PropertyMixer {\n\n\t/**\n\t * Constructs a new property mixer.\n\t *\n\t * @param {PropertyBinding} binding - The property binding.\n\t * @param {string} typeName - The keyframe track type name.\n\t * @param {number} valueSize - The keyframe track value size.\n\t */\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\t/**\n\t\t * The property binding.\n\t\t *\n\t\t * @type {PropertyBinding}\n\t\t */\n\t\tthis.binding = binding;\n\n\t\t/**\n\t\t * The keyframe track value size.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.cumulativeWeight = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.useCount = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t/**\n\t * Accumulates data in the `incoming` region into `accu`.\n\t *\n\t * @param {number} accuIndex - The accumulation index.\n\t * @param {number} weight - The weight.\n\t */\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t/**\n\t * Accumulates data in the `incoming` region into `add`.\n\t *\n\t * @param {number} weight - The weight.\n\t */\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t/**\n\t * Applies the state of `accu` to the binding when accus differ.\n\t *\n\t * @param {number} accuIndex - The accumulation index.\n\t */\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Remembers the state of the bound property and copy it to both accus.\n\t */\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t/**\n\t * Applies the state previously taken via {@link PropertyMixer#saveOriginalState} to the binding.\n\t */\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t// internals\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\n\n\n/**\n * This holds a reference to a real property in the scene graph; used internally.\n */\nclass PropertyBinding {\n\n\t/**\n\t * Constructs a new property binding.\n\t *\n\t * @param {Object} rootNode - The root node.\n\t * @param {string} path - The path.\n\t * @param {?Object} [parsedPath] - The parsed path.\n\t */\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\t/**\n\t\t * The object path to the animated property.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.path = path;\n\n\t\t/**\n\t\t * An object holding information about the path.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\t/**\n\t\t * The object owns the animated property.\n\t\t *\n\t\t * @type {?Object}\n\t\t */\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\t/**\n\t\t * The root node.\n\t\t *\n\t\t * @type {Object3D|Skeleton}\n\t\t */\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\t/**\n\t * Factory method for creating a property binding from the given parameters.\n\t *\n\t * @static\n\t * @param {Object} root - The root node.\n\t * @param {string} path - The path.\n\t * @param {?Object} [parsedPath] - The parsed path.\n\t * @return {PropertyBinding|Composite} The created property binding or composite.\n\t */\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name - Node name to be sanitized.\n\t * @return {string} The sanitized node name.\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\t/**\n\t * Parses the given track name (an object path to an animated property) and\n\t * returns an object with information about the path. Matches strings in the following forms:\n\t *\n\t * - nodeName.property\n\t * - nodeName.property[accessor]\n\t * - nodeName.material.property[accessor]\n\t * - uuid.property[accessor]\n\t * - uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t * - parentName/nodeName.property\n\t * - parentName/parentName/nodeName.property[index]\n\t * - .bone[Armature.DEF_cog].position\n\t * - scene:helium_balloon_model:helium_balloon_model.position\n\t *\n\t * @static\n\t * @param {string} trackName - The track name to parse.\n\t * @return {Object} The parsed track name as an object.\n\t */\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== -1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== -1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\t/**\n\t * Searches for a node in the hierarchy of the given root object by the given\n\t * node name.\n\t *\n\t * @static\n\t * @param {Object} root - The root object.\n\t * @param {string|number} nodeName - The name of the node.\n\t * @return {?Object} The found node. Returns `null` if no object was found.\n\t */\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t/**\n\t * Creates a getter / setter pair for the property tracked by this binding.\n\t */\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.isMaterial === true ) {\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.isObject3D === true ) {\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\t/**\n\t * Unbinds the property.\n\t */\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n * - Instead pass this object as 'root'.\n * - You can also add and remove objects later when the mixer is running.\n *\n * Note:\n *\n * - Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the all objects in the group.\n * - A single property can either be controlled through a target group or directly, but not both.\n */\nclass AnimationObjectGroup {\n\n\t/**\n\t * Constructs a new animation group.\n\t *\n\t * @param {...Object3D} arguments - An arbitrary number of 3D objects that share the same animation state.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\t/**\n\t\t * The UUID of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Adds an arbitrary number of objects to this animation group.\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to add.\n\t */\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t/**\n\t * Removes an arbitrary number of objects to this animation group\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to remove.\n\t */\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for the passed 3D objects of this animation group.\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to uncache.\n\t */\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * An instance of `AnimationAction` schedules the playback of an animation which is\n * stored in {@link AnimationClip}.\n */\nclass AnimationAction {\n\n\t/**\n\t * Constructs a new animation action.\n\t *\n\t * @param {AnimationMixer} mixer - The mixer that is controlled by this action.\n\t * @param {AnimationClip} clip - The animation clip that holds the actual keyframes.\n\t * @param {?Object3D} [localRoot=null] - The root object on which this action is performed.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode.\n\t */\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\n\t\t/**\n\t\t * Defines how the animation is blended/combined when two or more animations\n\t\t * are simultaneously played.\n\t\t *\n\t\t * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}\n\t\t */\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\t/**\n\t\t * The loop mode, set via {@link AnimationAction#setLoop}.\n\t\t *\n\t\t * @type {(LoopRepeat|LoopOnce|LoopPingPong)}\n\t\t * @default LoopRepeat\n\t\t */\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = -1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t/**\n\t\t * The local time of this action (in seconds, starting with `0`).\n\t\t *\n\t\t * The value gets clamped or wrapped to `[0,clip.duration]` (according to the\n\t\t * loop state).\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.time = 0;\n\n\t\t/**\n\t\t * Scaling factor for the {@link AnimationAction#time}. A value of `0` causes the\n\t\t * animation to pause. Negative values cause the animation to play backwards.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\t/**\n\t\t * The degree of influence of this action (in the interval `[0, 1]`). Values\n\t\t * between `0` (no impact) and `1` (full impact) can be used to blend between\n\t\t * several actions.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\t/**\n\t\t * The number of repetitions of the performed clip over the course of this action.\n\t\t * Can be set via {@link AnimationAction#setLoop}.\n\t\t *\n\t\t * Setting this number has no effect if {@link AnimationAction#loop} is set to\n\t\t * `THREE:LoopOnce`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.repetitions = Infinity;\n\n\t\t/**\n\t\t * If set to `true`, the playback of the action is paused.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.paused = false;\n\n\t\t/**\n\t\t * If set to `false`, the action is disabled so it has no impact.\n\t\t *\n\t\t * When the action is re-enabled, the animation continues from its current\n\t\t * time (setting `enabled` to `false` doesn't reset the action).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enabled = true;\n\n\t\t/**\n\t\t * If set to true the animation will automatically be paused on its last frame.\n\t\t *\n\t\t * If set to false, {@link AnimationAction#enabled} will automatically be switched\n\t\t * to `false` when the last loop of the action has finished, so that this action has\n\t\t * no further impact.\n\t\t *\n\t\t * Note: This member has no impact if the action is interrupted (it\n\t\t * has only an effect if its last loop has really finished).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clampWhenFinished = false;\n\n\t\t/**\n\t\t * Enables smooth interpolation without separate clips for start, loop and end.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.zeroSlopeAtStart = true;\n\n\t\t/**\n\t\t * Enables smooth interpolation without separate clips for start, loop and end.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.zeroSlopeAtEnd = true;\n\n\t}\n\n\t/**\n\t * Starts the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\t/**\n\t * Resets the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = -1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\t/**\n\t * Returns `true` if the animation is running.\n\t *\n\t * @return {boolean} Whether the animation is running or not.\n\t */\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t/**\n\t * Returns `true` when {@link AnimationAction#play} has been called.\n\t *\n\t * @return {boolean} Whether the animation is scheduled or not.\n\t */\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\t/**\n\t * Defines the time when the animation should start.\n\t *\n\t * @param {number} time - The start time in seconds.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Configures the loop settings for this action.\n\t *\n\t * @param {(LoopRepeat|LoopOnce|LoopPingPong)} mode - The loop mode.\n\t * @param {number} repetitions - The number of repetitions.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the effective weight of this action.\n\t *\n\t * An action has no effect and thus an effective weight of zero when the\n\t * action is disabled.\n\t *\n\t * @param {number} weight - The weight to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t/**\n\t * Returns the effective weight of this action.\n\t *\n\t * @return {number} The effective weight.\n\t */\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\t/**\n\t * Fades the animation in by increasing its weight gradually from `0` to `1`,\n\t * within the passed time interval.\n\t *\n\t * @param {number} duration - The duration of the fade.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\t/**\n\t * Fades the animation out by decreasing its weight gradually from `1` to `0`,\n\t * within the passed time interval.\n\t *\n\t * @param {number} duration - The duration of the fade.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\t/**\n\t * Causes this action to fade in and the given action to fade out,\n\t * within the passed time interval.\n\t *\n\t * @param {AnimationAction} fadeOutAction - The animation action to fade out.\n\t * @param {number} duration - The duration of the fade.\n\t * @param {boolean} [warp=false] - Whether warping should be used or not.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tcrossFadeFrom( fadeOutAction, duration, warp = false ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp === true ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Causes this action to fade out and the given action to fade in,\n\t * within the passed time interval.\n\t *\n\t * @param {AnimationAction} fadeInAction - The animation action to fade in.\n\t * @param {number} duration - The duration of the fade.\n\t * @param {boolean} [warp=false] - Whether warping should be used or not.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tcrossFadeTo( fadeInAction, duration, warp = false ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\t/**\n\t * Stops any fading which is applied to this action.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the effective time scale of this action.\n\t *\n\t * An action has no effect and thus an effective time scale of zero when the\n\t * action is paused.\n\t *\n\t * @param {number} timeScale - The time scale to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Returns the effective time scale of this action.\n\t *\n\t * @return {number} The effective time scale.\n\t */\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\t/**\n\t * Sets the duration for a single loop of this action.\n\t *\n\t * @param {number} duration - The duration to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Synchronizes this action with the passed other action.\n\t *\n\t * @param {AnimationAction} action - The action to sync with.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Decelerates this animation's speed to `0` within the passed time interval.\n\t *\n\t * @param {number} duration - The duration.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\t/**\n\t * Changes the playback speed, within the passed time interval, by modifying\n\t * {@link AnimationAction#timeScale} gradually from `startTimeScale` to\n\t * `endTimeScale`.\n\t *\n\t * @param {number} startTimeScale - The start time scale.\n\t * @param {number} endTimeScale - The end time scale.\n\t * @param {number} duration - The duration.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops any scheduled warping which is applied to this action.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the animation mixer of this animation action.\n\t *\n\t * @return {AnimationMixer} The animation mixer.\n\t */\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\t/**\n\t * Returns the animation clip of this animation action.\n\t *\n\t * @return {AnimationClip} The animation clip.\n\t */\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\t/**\n\t * Returns the root object of this animation action.\n\t *\n\t * @return {Object3D} The root object.\n\t */\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === -1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n/**\n * `AnimationMixer` is a player for animations on a particular object in\n * the scene. When multiple objects in the scene are animated independently,\n * one `AnimationMixer` may be used for each object.\n */\nclass AnimationMixer extends EventDispatcher {\n\n\t/**\n\t * Constructs a new animation mixer.\n\t *\n\t * @param {Object3D} root - The object whose animations shall be played by this mixer.\n\t */\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\n\t\t/**\n\t\t * The global mixer time (in seconds; starting with `0` on the mixer's creation).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.time = 0;\n\n\t\t/**\n\t\t * A scaling factor for the global time.\n\t\t *\n\t\t * Note: Setting this member to `0` and later back to `1` is a\n\t\t * possibility to pause/unpause all actions that are controlled by this\n\t\t * mixer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t/**\n\t * Returns an instance of {@link AnimationAction} for the passed clip.\n\t *\n\t * If an action fitting the clip and root parameters doesn't yet exist, it\n\t * will be created by this method. Calling this method several times with the\n\t * same clip and root parameters always returns the same action.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode.\n\t * @return {?AnimationAction} The animation action.\n\t */\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t/**\n\t * Returns an existing animation action for the passed clip.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t * @return {?AnimationAction} The animation action. Returns `null` if no action was found.\n\t */\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Deactivates all previously scheduled actions on this mixer.\n\t *\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Advances the global mixer time and updates the animation.\n\t *\n\t * This is usually done in the render loop by passing the delta\n\t * time from {@link Clock} or {@link Timer}.\n\t *\n\t * @param {number} deltaTime - The delta time in seconds.\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the global mixer to a specific time and updates the animation accordingly.\n\t *\n\t * This is useful when you need to jump to an exact time in an animation. The\n\t * input parameter will be scaled by {@link AnimationMixer#timeScale}\n\t *\n\t * @param {number} time - The time to set in seconds.\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tsetTime( time ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( time ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t/**\n\t * Returns this mixer's root object.\n\t *\n\t * @return {Object3D} The mixer's root object.\n\t */\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for a clip. Before using this method make\n\t * sure to call {@link AnimationAction#stop} for all related actions.\n\t *\n\t * @param {AnimationClip} clip - The clip to uncache.\n\t */\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for a root object. Before using this\n\t * method make sure to call {@link AnimationAction#stop} for all related\n\t * actions or alternatively {@link AnimationMixer#stopAllAction} when the\n\t * mixer operates on a single root.\n\t *\n\t * @param {Object3D} root - The root object to uncache.\n\t */\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for an action. The action is identified by the\n\t * given clip and an optional root object. Before using this method make\n\t * sure to call {@link AnimationAction#stop} to deactivate the action.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t */\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Represents a 3D render target.\n *\n * @augments RenderTarget\n */\nclass RenderTarget3D extends RenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRenderTarget3D = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {Data3DTexture}\n\t\t */\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Represents a uniform which is a global shader variable. They are passed to shader programs.\n *\n * When declaring a uniform of a {@link ShaderMaterial}, it is declared by value or by object.\n * ```js\n * uniforms: {\n * \ttime: { value: 1.0 },\n * \tresolution: new Uniform( new Vector2() )\n * };\n * ```\n * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported\n * in {@link WebGLRenderer}.\n */\nclass Uniform {\n\n\t/**\n\t * Constructs a new uniform.\n\t *\n\t * @param {any} value - The uniform value.\n\t */\n\tconstructor( value ) {\n\n\t\t/**\n\t\t * The uniform value.\n\t\t *\n\t\t * @type {any}\n\t\t */\n\t\tthis.value = value;\n\n\t}\n\n\t/**\n\t * Returns a new uniform with copied values from this instance.\n\t * If the value has a `clone()` method, the value is cloned as well.\n\t *\n\t * @return {Uniform} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\n/**\n * A class for managing multiple uniforms in a single group. The renderer will process\n * such a definition as a single UBO.\n *\n * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported\n * in {@link WebGLRenderer}.\n *\n * @augments EventDispatcher\n */\nclass UniformsGroup extends EventDispatcher {\n\n\t/**\n\t * Constructs a new uniforms group.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isUniformsGroup = true;\n\n\t\t/**\n\t\t * The ID of the 3D object.\n\t\t *\n\t\t * @name UniformsGroup#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\t/**\n\t\t * The name of the uniforms group.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The buffer usage.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * An array holding the uniforms.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.uniforms = [];\n\n\t}\n\n\t/**\n\t * Adds the given uniform to this uniforms group.\n\t *\n\t * @param {Uniform} uniform - The uniform to add.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the given uniform from this uniforms group.\n\t *\n\t * @param {Uniform} uniform - The uniform to remove.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== -1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the name of this uniforms group.\n\t *\n\t * @param {string} name - The name to set.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the usage of this uniforms group.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Texture#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Copies the values of the given uniforms group to this instance.\n\t *\n\t * @param {UniformsGroup} source - The uniforms group to copy.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new uniforms group with copied values from this instance.\n\t *\n\t * @return {UniformsGroup} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * An instanced version of an interleaved buffer.\n *\n * @augments InterleavedBuffer\n */\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\t/**\n\t * Constructs a new instanced interleaved buffer.\n\t *\n\t * @param {TypedArray} array - A typed array with a shared buffer storing attribute data.\n\t * @param {number} stride - The number of typed-array elements per vertex.\n\t * @param {number} [meshPerAttribute=1] - Defines how often a value of this interleaved buffer should be repeated.\n\t */\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\t/**\n\t\t * Defines how often a value of this buffer attribute should be repeated,\n\t\t * see {@link InstancedBufferAttribute#meshPerAttribute}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\n/**\n * An alternative version of a buffer attribute with more control over the VBO.\n *\n * The renderer does not construct a VBO for this kind of attribute. Instead, it uses\n * whatever VBO is passed in constructor and can later be altered via the `buffer` property.\n *\n * The most common use case for this class is when some kind of GPGPU calculation interferes\n * or even produces the VBOs in question.\n *\n * Notice that this class can only be used with {@link WebGLRenderer}.\n */\nclass GLBufferAttribute {\n\n\t/**\n\t * Constructs a new GL buffer attribute.\n\t *\n\t * @param {WebGLBuffer} buffer - The native WebGL buffer.\n\t * @param {number} type - The native data type (e.g. `gl.FLOAT`).\n\t * @param {number} itemSize - The item size.\n\t * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.\n\t * @param {number} count - The expected number of vertices in VBO.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( buffer, type, itemSize, elementSize, count, normalized = false ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isGLBufferAttribute = true;\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The native WebGL buffer.\n\t\t *\n\t\t * @type {WebGLBuffer}\n\t\t */\n\t\tthis.buffer = buffer;\n\n\t\t/**\n\t\t * The native data type.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * The item size, see {@link BufferAttribute#itemSize}.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * The corresponding size (in bytes) for the given `type` parameter.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.elementSize = elementSize;\n\n\t\t/**\n\t\t * The expected number of vertices in VBO.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * Applies to integer data only. Indicates how the underlying data in the buffer maps to\n\t\t * the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,\n\t\t * and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to\n\t\t * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted\n\t\t * to floats unmodified, i.e. `65535` becomes `65535.0f`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the given native WebGL buffer.\n\t *\n\t * @param {WebGLBuffer} buffer - The buffer to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given native data type and element size.\n\t *\n\t * @param {number} type - The native data type (e.g. `gl.FLOAT`).\n\t * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the item size.\n\t *\n\t * @param {number} itemSize - The item size.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the count (the expected number of vertices in VBO).\n\t *\n\t * @param {number} count - The count.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * This class is designed to assist with raycasting. Raycasting is used for\n * mouse picking (working out what objects in the 3d space the mouse is over)\n * amongst other things.\n */\nclass Raycaster {\n\n\t/**\n\t * Constructs a new raycaster.\n\t *\n\t * @param {Vector3} origin - The origin vector where the ray casts from.\n\t * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.\n\t * @param {number} [near=0] - All results returned are further away than near. Near can't be negative.\n\t * @param {number} [far=Infinity] - All results returned are closer than far. Far can't be lower than near.\n\t */\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\t/**\n\t\t * The ray used for raycasting.\n\t\t *\n\t\t * @type {Ray}\n\t\t */\n\t\tthis.ray = new Ray( origin, direction );\n\n\t\t/**\n\t\t * All results returned are further away than near. Near can't be negative.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * All results returned are further away than near. Near can't be negative.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.far = far;\n\n\t\t/**\n\t\t * The camera to use when raycasting against view-dependent objects such as\n\t\t * billboarded objects like sprites. This field can be set manually or\n\t\t * is set when calling `setFromCamera()`.\n\t\t *\n\t\t * @type {?Camera}\n\t\t * @default null\n\t\t */\n\t\tthis.camera = null;\n\n\t\t/**\n\t\t * Allows to selectively ignore 3D objects when performing intersection tests.\n\t\t * The following code example ensures that only 3D objects on layer `1` will be\n\t\t * honored by raycaster.\n\t\t * ```js\n\t\t * raycaster.layers.set( 1 );\n\t\t * object.layers.enable( 1 );\n\t\t * ```\n\t\t *\n\t\t * @type {Layers}\n\t\t */\n\t\tthis.layers = new Layers();\n\n\n\t\t/**\n\t\t * A parameter object that configures the raycasting. It has the structure:\n\t\t *\n\t\t * ```\n\t\t * {\n\t\t * \tMesh: {},\n\t\t * \tLine: { threshold: 1 },\n\t\t * \tLOD: {},\n\t\t * \tPoints: { threshold: 1 },\n\t\t * \tSprite: {}\n\t\t * }\n\t\t * ```\n\t\t * Where `threshold` is the precision of the raycaster when intersecting objects, in world units.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\t/**\n\t * Updates the ray with a new origin and direction by copying the values from the arguments.\n\t *\n\t * @param {Vector3} origin - The origin vector where the ray casts from.\n\t * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.\n\t */\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\t/**\n\t * Uses the given coordinates and camera to compute a new origin and direction for the internal ray.\n\t *\n\t * @param {Vector2} coords - 2D coordinates of the mouse, in normalized device coordinates (NDC).\n\t * X and Y components should be between `-1` and `1`.\n\t * @param {Camera} camera - The camera from which the ray should originate.\n\t */\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, -1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Uses the given WebXR controller to compute a new origin and direction for the internal ray.\n\t *\n\t * @param {WebXRController} controller - The controller to copy the position and direction from.\n\t * @return {Raycaster} A reference to this raycaster.\n\t */\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, -1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The intersection point of a raycaster intersection test.\n\t * @typedef {Object} Raycaster~Intersection\n\t * @property {number} distance - The distance from the ray's origin to the intersection point.\n\t * @property {number} distanceToRay - Some 3D objects e.g. {@link Points} provide the distance of the\n\t * intersection to the nearest point on the ray. For other objects it will be `undefined`.\n\t * @property {Vector3} point - The intersection point, in world coordinates.\n\t * @property {Object} face - The face that has been intersected.\n\t * @property {number} faceIndex - The face index.\n\t * @property {Object3D} object - The 3D object that has been intersected.\n\t * @property {Vector2} uv - U,V coordinates at point of intersection.\n\t * @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.\n\t * @property {Vector3} uv1 - Interpolated normal vector at point of intersection.\n\t * @property {number} instanceId - The index number of the instance where the ray\n\t * intersects the {@link InstancedMesh}.\n\t */\n\n\t/**\n\t * Checks all intersection between the ray and the object with or without the\n\t * descendants. Intersections are returned sorted by distance, closest first.\n\t *\n\t * `Raycaster` delegates to the `raycast()` method of the passed 3D object, when\n\t * evaluating whether the ray intersects the object or not. This allows meshes to respond\n\t * differently to ray casting than lines or points.\n\t *\n\t * Note that for meshes, faces must be pointed towards the origin of the ray in order\n\t * to be detected; intersections of the ray passing through the back of a face will not\n\t * be detected. To raycast against both faces of an object, you'll want to set {@link Material#side}\n\t * to `THREE.DoubleSide`.\n\t *\n\t * @param {Object3D} object - The 3D object to check for intersection with the ray.\n\t * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.\n\t * Otherwise it only checks intersection with the object.\n\t * @param {Array} [intersects=[]] The target array that holds the result of the method.\n\t * @return {Array} An array holding the intersection points.\n\t */\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\t/**\n\t * Checks all intersection between the ray and the objects with or without\n\t * the descendants. Intersections are returned sorted by distance, closest first.\n\t *\n\t * @param {Array} objects - The 3D objects to check for intersection with the ray.\n\t * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.\n\t * Otherwise it only checks intersection with the object.\n\t * @param {Array} [intersects=[]] The target array that holds the result of the method.\n\t * @return {Array} An array holding the intersection points.\n\t */\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tlet propagate = true;\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tconst result = object.raycast( raycaster, intersects );\n\n\t\tif ( result === false ) propagate = false;\n\n\t}\n\n\tif ( propagate === true && recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class is an alternative to {@link Clock} with a different API design and behavior.\n * The goal is to avoid the conceptual flaws that became apparent in `Clock` over time.\n *\n * - `Timer` has an `update()` method that updates its internal state. That makes it possible to\n * call `getDelta()` and `getElapsed()` multiple times per simulation step without getting different values.\n * - The class can make use of the Page Visibility API to avoid large time delta values when the app\n * is inactive (e.g. tab switched or browser hidden).\n *\n * ```js\n * const timer = new Timer();\n * timer.connect( document ); // use Page Visibility API\n * ```\n */\nclass Timer {\n\n\t/**\n\t * Constructs a new timer.\n\t */\n\tconstructor() {\n\n\t\tthis._previousTime = 0;\n\t\tthis._currentTime = 0;\n\t\tthis._startTime = performance.now();\n\n\t\tthis._delta = 0;\n\t\tthis._elapsed = 0;\n\n\t\tthis._timescale = 1;\n\n\t\tthis._document = null;\n\t\tthis._pageVisibilityHandler = null;\n\n\t}\n\n\t/**\n\t * Connect the timer to the given document.Calling this method is not mandatory to\n\t * use the timer but enables the usage of the Page Visibility API to avoid large time\n\t * delta values.\n\t *\n\t * @param {Document} document - The document.\n\t */\n\tconnect( document ) {\n\n\t\tthis._document = document;\n\n\t\t// use Page Visibility API to avoid large time delta values\n\n\t\tif ( document.hidden !== undefined ) {\n\n\t\t\tthis._pageVisibilityHandler = handleVisibilityChange.bind( this );\n\n\t\t\tdocument.addEventListener( 'visibilitychange', this._pageVisibilityHandler, false );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disconnects the timer from the DOM and also disables the usage of the Page Visibility API.\n\t */\n\tdisconnect() {\n\n\t\tif ( this._pageVisibilityHandler !== null ) {\n\n\t\t\tthis._document.removeEventListener( 'visibilitychange', this._pageVisibilityHandler );\n\t\t\tthis._pageVisibilityHandler = null;\n\n\t\t}\n\n\t\tthis._document = null;\n\n\t}\n\n\t/**\n\t * Returns the time delta in seconds.\n\t *\n\t * @return {number} The time delta in second.\n\t */\n\tgetDelta() {\n\n\t\treturn this._delta / 1000;\n\n\t}\n\n\t/**\n\t * Returns the elapsed time in seconds.\n\t *\n\t * @return {number} The elapsed time in second.\n\t */\n\tgetElapsed() {\n\n\t\treturn this._elapsed / 1000;\n\n\t}\n\n\t/**\n\t * Returns the timescale.\n\t *\n\t * @return {number} The timescale.\n\t */\n\tgetTimescale() {\n\n\t\treturn this._timescale;\n\n\t}\n\n\t/**\n\t * Sets the given timescale which scale the time delta computation\n\t * in `update()`.\n\t *\n\t * @param {number} timescale - The timescale to set.\n\t * @return {Timer} A reference to this timer.\n\t */\n\tsetTimescale( timescale ) {\n\n\t\tthis._timescale = timescale;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Resets the time computation for the current simulation step.\n\t *\n\t * @return {Timer} A reference to this timer.\n\t */\n\treset() {\n\n\t\tthis._currentTime = performance.now() - this._startTime;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Can be used to free all internal resources. Usually called when\n\t * the timer instance isn't required anymore.\n\t */\n\tdispose() {\n\n\t\tthis.disconnect();\n\n\t}\n\n\t/**\n\t * Updates the internal state of the timer. This method should be called\n\t * once per simulation step and before you perform queries against the timer\n\t * (e.g. via `getDelta()`).\n\t *\n\t * @param {number} timestamp - The current time in milliseconds. Can be obtained\n\t * from the `requestAnimationFrame` callback argument. If not provided, the current\n\t * time will be determined with `performance.now`.\n\t * @return {Timer} A reference to this timer.\n\t */\n\tupdate( timestamp ) {\n\n\t\tif ( this._pageVisibilityHandler !== null && this._document.hidden === true ) {\n\n\t\t\tthis._delta = 0;\n\n\t\t} else {\n\n\t\t\tthis._previousTime = this._currentTime;\n\t\t\tthis._currentTime = ( timestamp !== undefined ? timestamp : performance.now() ) - this._startTime;\n\n\t\t\tthis._delta = ( this._currentTime - this._previousTime ) * this._timescale;\n\t\t\tthis._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction handleVisibilityChange() {\n\n\tif ( this._document.hidden === false ) this.reset();\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}.\n */\nclass Spherical {\n\n\t/**\n\t * Constructs a new spherical.\n\t *\n\t * @param {number} [radius=1] - The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t * @param {number} [phi=0] - The polar angle in radians from the y (up) axis.\n\t * @param {number} [theta=0] - The equator/azimuthal angle in radians around the y (up) axis.\n\t */\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\t/**\n\t\t * The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * The polar angle in radians from the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.phi = phi;\n\n\t\t/**\n\t\t * The equator/azimuthal angle in radians around the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t}\n\n\t/**\n\t * Sets the spherical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The polar angle.\n\t * @param {number} theta - The azimuthal angle.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical to this instance.\n\t *\n\t * @param {Spherical} other - The spherical to copy.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Restricts the polar angle [page:.phi phi] to be between `0.000001` and pi -\n\t * `0.000001`.\n\t *\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = clamp( this.phi, EPS, Math.PI - EPS );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The y value.\n\t * @param {number} z - The z value.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, -1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new spherical with copied values from this instance.\n\t *\n\t * @return {Spherical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Cylindrical coordinates]{@link https://en.wikipedia.org/wiki/Cylindrical_coordinate_system}.\n */\nclass Cylindrical {\n\n\t/**\n\t * Constructs a new cylindrical.\n\t *\n\t * @param {number} [radius=1] - The distance from the origin to a point in the x-z plane.\n\t * @param {number} [theta=0] - A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t * @param {number} [y=0] - The height above the x-z plane.\n\t */\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\t/**\n\t\t * The distance from the origin to a point in the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t\t/**\n\t\t * The height above the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle.\n\t * @param {number} y - The height value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given cylindrical to this instance.\n\t *\n\t * @param {Cylindrical} other - The cylindrical to copy.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The x value.\n\t * @param {number} z - The x value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new cylindrical with copied values from this instance.\n\t *\n\t * @return {Cylindrical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 2x2 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix2#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix2#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix2();\n * m.set( 11, 12,\n * 21, 22 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21,\n * 12, 22 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix2 {\n\n\t/**\n\t * Constructs a new 2x2 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t */\n\tconstructor( n11, n12, n21, n22 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix2.prototype.isMatrix2 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n21, n22 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 2x2 identity matrix.\n\t *\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} n11 - 1-1 matrix element.\n\t * @param {number} n12 - 1-2 matrix element.\n\t * @param {number} n21 - 2-1 matrix element.\n\t * @param {number} n22 - 2-2 matrix element.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tset( n11, n12, n21, n22 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 2 ] = n12;\n\t\tte[ 1 ] = n21; te[ 3 ] = n22;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 2D space.\n */\nclass Box2 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector2} [min=(Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector2} [max=(-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox2 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector2} min - The lower boundary of the box.\n\t * @param {Vector2} max - The upper boundary of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} points - An array holding 2D position data as instances of {@link Vector2}.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector2} center - The center of the box.\n\t * @param {Vector2} size - The x and y dimensions of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box2} box - The box to copy.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 2D.\n\t *\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector2} point - The point that should be included by the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions.\n\t *\n\t * @param {Vector2} vector - The vector that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector2} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width and height.\n\t *\n\t * @param {Vector2} point - A point in 2D space.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} A point as a proportion of this box's width and height.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector2} point - The point to clamp.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector2} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box2} box - The bounding box to intersect with.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box2} box - The bounding box that will be unioned with this instance.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 2D space.\n\t *\n\t * @param {Vector2} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box2} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nconst _d1 = /*@__PURE__*/ new Vector3();\nconst _d2 = /*@__PURE__*/ new Vector3();\nconst _r = /*@__PURE__*/ new Vector3();\nconst _c1 = /*@__PURE__*/ new Vector3();\nconst _c2 = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical line segment in 3D space represented by a start and end point.\n */\nclass Line3 {\n\n\t/**\n\t * Constructs a new line segment.\n\t *\n\t * @param {Vector3} [start=(0,0,0)] - Start of the line segment.\n\t * @param {Vector3} [end=(0,0,0)] - End of the line segment.\n\t */\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\t/**\n\t\t * Start of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.start = start;\n\n\t\t/**\n\t\t * End of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.end = end;\n\n\t}\n\n\t/**\n\t * Sets the start and end values by copying the given vectors.\n\t *\n\t * @param {Vector3} start - The start point.\n\t * @param {Vector3} end - The end point.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given line segment to this instance.\n\t *\n\t * @param {Line3} line - The line segment to copy.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the center of the line segment.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the delta vector of the line segment's start and end point.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\t/**\n\t * Returns the squared Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The squared Euclidean distance.\n\t */\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\t/**\n\t * Returns the Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The Euclidean distance.\n\t */\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\t/**\n\t * Returns a vector at a certain position along the line segment.\n\t *\n\t * @param {number} t - A value between `[0,1]` to represent a position along the line segment.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Returns a point parameter based on the closest point as projected on the line segment.\n\t *\n\t * @param {Vector3} point - The point for which to return a point parameter.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @return {number} The point parameter.\n\t */\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns the closest point on the line for a given point.\n\t *\n\t * @param {Vector3} point - The point to compute the closest point on the line for.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the line.\n\t */\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Returns the closest squared distance between this line segment and the given one.\n\t *\n\t * @param {Line3} line - The line segment to compute the closest squared distance to.\n\t * @param {Vector3} [c1] - The closest point on this line segment.\n\t * @param {Vector3} [c2] - The closest point on the given line segment.\n\t * @return {number} The squared distance between this line segment and the given one.\n\t */\n\tdistanceSqToLine3( line, c1 = _c1, c2 = _c2 ) {\n\n\t\t// from Real-Time Collision Detection by Christer Ericson, chapter 5.1.9\n\n\t\t// Computes closest points C1 and C2 of S1(s)=P1+s*(Q1-P1) and\n\t\t// S2(t)=P2+t*(Q2-P2), returning s and t. Function result is squared\n\t\t// distance between between S1(s) and S2(t)\n\n\t\tconst EPSILON = 1e-8 * 1e-8; // must be squared since we compare squared length\n\t\tlet s, t;\n\n\t\tconst p1 = this.start;\n\t\tconst p2 = line.start;\n\t\tconst q1 = this.end;\n\t\tconst q2 = line.end;\n\n\t\t_d1.subVectors( q1, p1 ); // Direction vector of segment S1\n\t\t_d2.subVectors( q2, p2 ); // Direction vector of segment S2\n\t\t_r.subVectors( p1, p2 );\n\n\t\tconst a = _d1.dot( _d1 ); // Squared length of segment S1, always nonnegative\n\t\tconst e = _d2.dot( _d2 ); // Squared length of segment S2, always nonnegative\n\t\tconst f = _d2.dot( _r );\n\n\t\t// Check if either or both segments degenerate into points\n\n\t\tif ( a <= EPSILON && e <= EPSILON ) {\n\n\t\t\t// Both segments degenerate into points\n\n\t\t\tc1.copy( p1 );\n\t\t\tc2.copy( p2 );\n\n\t\t\tc1.sub( c2 );\n\n\t\t\treturn c1.dot( c1 );\n\n\t\t}\n\n\t\tif ( a <= EPSILON ) {\n\n\t\t\t// First segment degenerates into a point\n\n\t\t\ts = 0;\n\t\t\tt = f / e; // s = 0 => t = (b*s + f) / e = f / e\n\t\t\tt = clamp( t, 0, 1 );\n\n\n\t\t} else {\n\n\t\t\tconst c = _d1.dot( _r );\n\n\t\t\tif ( e <= EPSILON ) {\n\n\t\t\t\t// Second segment degenerates into a point\n\n\t\t\t\tt = 0;\n\t\t\t\ts = clamp( - c / a, 0, 1 ); // t = 0 => s = (b*t - c) / a = -c / a\n\n\t\t\t} else {\n\n\t\t\t\t// The general nondegenerate case starts here\n\n\t\t\t\tconst b = _d1.dot( _d2 );\n\t\t\t\tconst denom = a * e - b * b; // Always nonnegative\n\n\t\t\t\t// If segments not parallel, compute closest point on L1 to L2 and\n\t\t\t\t// clamp to segment S1. Else pick arbitrary s (here 0)\n\n\t\t\t\tif ( denom !== 0 ) {\n\n\t\t\t\t\ts = clamp( ( b * f - c * e ) / denom, 0, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ts = 0;\n\n\t\t\t\t}\n\n\t\t\t\t// Compute point on L2 closest to S1(s) using\n\t\t\t\t// t = Dot((P1 + D1*s) - P2,D2) / Dot(D2,D2) = (b*s + f) / e\n\n\t\t\t\tt = ( b * s + f ) / e;\n\n\t\t\t\t// If t in [0,1] done. Else clamp t, recompute s for the new value\n\t\t\t\t// of t using s = Dot((P2 + D2*t) - P1,D1) / Dot(D1,D1)= (t*b - c) / a\n\t\t\t\t// and clamp s to [0, 1]\n\n\t\t\t\tif ( t < 0 ) {\n\n\t\t\t\t\tt = 0.;\n\t\t\t\t\ts = clamp( - c / a, 0, 1 );\n\n\t\t\t\t} else if ( t > 1 ) {\n\n\t\t\t\t\tt = 1;\n\t\t\t\t\ts = clamp( ( b - c ) / a, 0, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tc1.copy( p1 ).add( _d1.multiplyScalar( s ) );\n\t\tc2.copy( p2 ).add( _d2.multiplyScalar( t ) );\n\n\t\tc1.sub( c2 );\n\n\t\treturn c1.dot( c1 );\n\n\t}\n\n\t/**\n\t * Applies a 4x4 transformation matrix to this line segment.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this line segment is equal with the given one.\n\t *\n\t * @param {Line3} line - The line segment to test for equality.\n\t * @return {boolean} Whether this line segment is equal with the given one.\n\t */\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\t/**\n\t * Returns a new line segment with copied values from this instance.\n\t *\n\t * @return {Line3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * This displays a cone shaped helper object for a {@link SpotLight}.\n *\n * ```js\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 10, 10, 10 );\n * scene.add( spotLight );\n *\n * const spotLightHelper = new THREE.SpotLightHelper( spotLight );\n * scene.add( spotLightHelper );\n * ```\n *\n * @augments Object3D\n */\nclass SpotLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new spot light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {SpotLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t-1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, -1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n/**\n * A helper object to assist with visualizing a {@link Skeleton}.\n *\n * ```js\n * const helper = new THREE.SkeletonHelper( skinnedMesh );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass SkeletonHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new skeleton helper.\n\t *\n\t * @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object\n\t * can be used if it represents a hierarchy of bones (see {@link Bone}).\n\t */\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( 0, 0, 0 );\n\t\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\t/**\n\t\t * The object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.root = object;\n\n\t\t/**\n\t\t * The list of bones that the helper visualizes.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t// colors\n\n\t\tconst color1 = new Color( 0x0000ff );\n\t\tconst color2 = new Color( 0x00ff00 );\n\n\t\tthis.setColors( color1, color2 );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Defines the colors of the helper.\n\t *\n\t * @param {Color} color1 - The first line color for each bone.\n\t * @param {Color} color2 - The second line color for each bone.\n\t * @return {SkeletonHelper} A reference to this helper.\n\t */\n\tsetColors( color1, color2 ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\tfor ( let i = 0; i < colorAttribute.count; i += 2 ) {\n\n\t\t\tcolorAttribute.setXYZ( i, color1.r, color1.g, color1.b );\n\t\t\tcolorAttribute.setXYZ( i + 1, color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push( ...getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\n/**\n * This displays a helper object consisting of a spherical mesh for\n * visualizing an instance of {@link PointLight}.\n *\n * ```js\n * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );\n * pointLight.position.set( 10, 10, 10 );\n * scene.add( pointLight );\n *\n * const sphereSize = 1;\n * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );\n * scene.add( pointLightHelper );\n * ```\n *\n * @augments Mesh\n */\nclass PointLightHelper extends Mesh {\n\n\t/**\n\t * Constructs a new point light helper.\n\t *\n\t * @param {PointLight} light - The light to be visualized.\n\t * @param {number} [sphereSize=1] - The size of the sphere helper.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\n/**\n * Creates a visual aid consisting of a spherical mesh for a\n * given {@link HemisphereLight}.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * const helper = new THREE.HemisphereLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass HemisphereLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new hemisphere light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The size of the mesh used to visualize the light.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\n/**\n * The helper is an object to define grids. Grids are two-dimensional\n * arrays of lines.\n *\n * ```js\n * const size = 10;\n * const divisions = 10;\n *\n * const gridHelper = new THREE.GridHelper( size, divisions );\n * scene.add( gridHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass GridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new grid helper.\n\t *\n\t * @param {number} [size=10] - The size of the grid.\n\t * @param {number} [divisions=10] - The number of divisions across the grid.\n\t * @param {number|Color|string} [color1=0x444444] - The color of the center line.\n\t * @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid.\n\t */\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This helper is an object to define polar grids. Grids are\n * two-dimensional arrays of lines.\n *\n * ```js\n * const radius = 10;\n * const sectors = 16;\n * const rings = 8;\n * const divisions = 64;\n *\n * const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass PolarGridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new polar grid helper.\n\t *\n\t * @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.\n\t * @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.\n\t * @param {number} [rings=16] - The number of rings. This can be any positive integer.\n\t * @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.\n\t * @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.\n\t * @param {number|Color|string} [color2=0x888888] - The second color used for grid elements.\n\t */\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\n/**\n * Helper object to assist with visualizing a {@link DirectionalLight}'s\n * effect on the scene. This consists of plane and a line representing the\n * light's position and direction.\n *\n * ```js\n * const light = new THREE.DirectionalLight( 0xFFFFFF );\n * scene.add( light );\n *\n * const helper = new THREE.DirectionalLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass DirectionalLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new directional light helper.\n\t *\n\t * @param {DirectionalLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The dimensions of the plane.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {DirectionalLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\t/**\n\t\t * Contains the line showing the location of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\t/**\n\t\t * Represents the target line of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n * This helps with visualizing what a camera contains in its frustum. It\n * visualizes the frustum of a camera using a line segments.\n *\n * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.\n *\n * `CameraHelper` must be a child of the scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );\n * const helper = new THREE.CameraHelper( camera );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass CameraHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Camera} camera - The camera to visualize.\n\t */\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\t/**\n\t\t * The camera being visualized.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * This contains the points used to visualize the camera.\n\t\t *\n\t\t * @type {Object>}\n\t\t */\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\t/**\n\t * Defines the colors of the helper.\n\t *\n\t * @param {Color} frustum - The frustum line color.\n\t * @param {Color} cone - The cone line color.\n\t * @param {Color} up - The up line color.\n\t * @param {Color} target - The target line color.\n\t * @param {Color} cross - The cross line color.\n\t * @return {CameraHelper} A reference to this helper.\n\t */\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Updates the helper based on the projection matrix of the camera.\n\t */\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\tlet nearZ, farZ;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// Adjust z values based on coordinate system\n\n\t\tif ( this.camera.reversedDepth === true ) {\n\n\t\t\tnearZ = 1;\n\t\t\tfarZ = 0;\n\n\t\t} else {\n\n\t\t\tif ( this.camera.coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tnearZ = -1;\n\t\t\t\tfarZ = 1;\n\n\t\t\t} else if ( this.camera.coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tnearZ = 0;\n\t\t\t\tfarZ = 1;\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.CameraHelper.update(): Invalid coordinate system: ' + this.camera.coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// center / target\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, farZ );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, farZ );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, farZ );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, farZ );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, farZ );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, farZ );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, farZ );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, farZ );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, farZ );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\n/**\n * Helper object to graphically show the world-axis-aligned bounding box\n * around an object. The actual bounding box is handled with {@link Box3},\n * this is just a visual helper for debugging. It can be automatically\n * resized with {@link BoxHelper#update} when the object it's created from\n * is transformed. Note that the object must have a geometry for this to work,\n * so it won't work with sprites.\n *\n * ```js\n * const sphere = new THREE.SphereGeometry();\n * const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );\n * const box = new THREE.BoxHelper( object, 0xffff00 );\n * scene.add( box );\n * ```\n *\n * @augments LineSegments\n */\nclass BoxHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new box helper.\n\t *\n\t * @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The 3D object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Updates the helper's geometry to match the dimensions of the object,\n\t * including any children.\n\t */\n\tupdate() {\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\t/**\n\t * Updates the wireframe box for the passed object.\n\t *\n\t * @param {Object3D} object - The 3D object to create the helper for.\n\t * @return {BoxHelper} A reference to this instance.\n\t */\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Box3}.\n *\n * ```js\n * const box = new THREE.Box3();\n * box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) );\n *\n * const helper = new THREE.Box3Helper( box, 0xffff00 );\n * scene.add( helper )\n * ```\n *\n * @augments LineSegments\n */\nclass Box3Helper extends LineSegments {\n\n\t/**\n\t * Constructs a new box3 helper.\n\t *\n\t * @param {Box3} box - The box to visualize.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The box being visualized.\n\t\t *\n\t\t * @type {Box3}\n\t\t */\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Plane}.\n *\n * ```js\n * const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 );\n * const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 );\n * scene.add( helper );\n * ```\n *\n * @augments Line\n */\nclass PlaneHelper extends Line {\n\n\t/**\n\t * Constructs a new plane helper.\n\t *\n\t * @param {Plane} plane - The plane to be visualized.\n\t * @param {number} [size=1] - The side length of plane helper.\n\t * @param {number|Color|string} [hex=0xffff00] - The helper's color.\n\t */\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\t/**\n\t\t * The plane being visualized.\n\t\t *\n\t\t * @type {Plane}\n\t\t */\n\t\tthis.plane = plane;\n\n\t\t/**\n\t\t * The side length of plane helper.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\n/**\n * An 3D arrow object for visualizing directions.\n *\n * ```js\n * const dir = new THREE.Vector3( 1, 2, 0 );\n *\n * //normalize the direction vector (convert to vector of length 1)\n * dir.normalize();\n *\n * const origin = new THREE.Vector3( 0, 0, 0 );\n * const length = 1;\n * const hex = 0xffff00;\n *\n * const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex );\n * scene.add( arrowHelper );\n * ```\n *\n * @augments Object3D\n */\nclass ArrowHelper extends Object3D {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Vector3} [dir=(0, 0, 1)] - The (normalized) direction vector.\n\t * @param {Vector3} [origin=(0, 0, 0)] - Point at which the arrow starts.\n\t * @param {number} [length=1] - Length of the arrow in world units.\n\t * @param {(number|Color|string)} [color=0xffff00] - Color of the arrow.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new ConeGeometry( 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, -0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\t/**\n\t\t * The line part of the arrow helper.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\t/**\n\t\t * The cone part of the arrow helper.\n\t\t *\n\t\t * @type {Mesh}\n\t\t */\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\t/**\n\t * Sets the direction of the helper.\n\t *\n\t * @param {Vector3} dir - The normalized direction vector.\n\t */\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < -0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the length of the helper.\n\t *\n\t * @param {number} length - Length of the arrow in world units.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\t/**\n\t * Sets the color of the helper.\n\t *\n\t * @param {number|Color|string} color - The color to set.\n\t */\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\n/**\n * An axis object to visualize the 3 axes in a simple way.\n * The X axis is red. The Y axis is green. The Z axis is blue.\n *\n * ```js\n * const axesHelper = new THREE.AxesHelper( 5 );\n * scene.add( axesHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass AxesHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new axes helper.\n\t *\n\t * @param {number} [size=1] - Size of the lines representing the axes.\n\t */\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\t/**\n\t * Defines the colors of the axes helper.\n\t *\n\t * @param {number|Color|string} xAxisColor - The color for the x axis.\n\t * @param {number|Color|string} yAxisColor - The color for the y axis.\n\t * @param {number|Color|string} zAxisColor - The color for the z axis.\n\t * @return {AxesHelper} A reference to this axes helper.\n\t */\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This class is used to convert a series of paths to an array of\n * shapes. It is specifically used in context of fonts and SVG.\n */\nclass ShapePath {\n\n\t/**\n\t * Constructs a new shape path.\n\t */\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\t/**\n\t\t * The color of the shape.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color();\n\n\t\t/**\n\t\t * The paths that have been generated for this shape.\n\t\t *\n\t\t * @type {Array}\n\t\t * @default null\n\t\t */\n\t\tthis.subPaths = [];\n\n\t\t/**\n\t\t * The current path that is being generated.\n\t\t *\n\t\t * @type {?Path}\n\t\t * @default null\n\t\t */\n\t\tthis.currentPath = null;\n\n\t}\n\n\t/**\n\t * Creates a new path and moves it current point to the given one.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array} pts - An array of points in 2D space.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts the paths into an array of shapes.\n\t *\n\t * @param {boolean} isCCW - By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW).\n\t * If this flag is set to `true`, then those are flipped.\n\t * @return {Array} An array of shapes.\n\t */\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n/**\n * Abstract base class for controls.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Controls extends EventDispatcher {\n\n\t/**\n\t * Constructs a new controls instance.\n\t *\n\t * @param {Object3D} object - The object that is managed by the controls.\n\t * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.\n\t */\n\tconstructor( object, domElement = null ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The object that is managed by the controls.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\n\t\t/**\n\t\t * The HTML element used for event listeners.\n\t\t *\n\t\t * @type {?HTMLDOMElement}\n\t\t * @default null\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Whether the controls responds to user input or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enabled = true;\n\n\t\t/**\n\t\t * The internal state of the controls.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.state = -1;\n\n\t\t/**\n\t\t * This object defines the keyboard input of the controls.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.keys = {};\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to the available mouse buttons.\n\t\t * It depends on the control implementation what kind of mouse buttons and actions are supported.\n\t\t *\n\t\t * @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}}\n\t\t */\n\t\tthis.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to what kind of touch interaction.\n\t\t * It depends on the control implementation what kind of touch interaction and actions are supported.\n\t\t *\n\t\t * @type {{ONE: ?number, TWO: ?number}}\n\t\t */\n\t\tthis.touches = { ONE: null, TWO: null };\n\n\t}\n\n\t/**\n\t * Connects the controls to the DOM. This method has so called \"side effects\" since\n\t * it adds the module's event listeners to the DOM.\n\t *\n\t * @param {HTMLDOMElement} element - The DOM element to connect to.\n\t */\n\tconnect( element ) {\n\n\t\tif ( element === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.domElement !== null ) this.disconnect();\n\n\t\tthis.domElement = element;\n\n\t}\n\n\t/**\n\t * Disconnects the controls from the DOM.\n\t */\n\tdisconnect() {}\n\n\t/**\n\t * Call this method if you no longer want use to the controls. It frees all internal\n\t * resources and removes all event listeners.\n\t */\n\tdispose() {}\n\n\t/**\n\t * Controls should implement this method if they have to update their internal state\n\t * per simulation step.\n\t *\n\t * @param {number} [delta] - The time delta in seconds.\n\t */\n\tupdate( /* delta */ ) {}\n\n}\n\n/**\n * Scales the texture as large as possible within its surface without cropping\n * or stretching the texture. The method preserves the original aspect ratio of\n * the texture. Akin to CSS `object-fit: contain`\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction contain( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t} else {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Scales the texture to the smallest possible size to fill the surface, leaving\n * no empty space. The method preserves the original aspect ratio of the texture.\n * Akin to CSS `object-fit: cover`.\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction cover( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t} else {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n *\n * @param {Texture} texture - The texture.\n * @return {Texture} The updated texture.\n */\nfunction fill( texture ) {\n\n\ttexture.repeat.x = 1;\n\ttexture.repeat.y = 1;\n\n\ttexture.offset.x = 0;\n\ttexture.offset.y = 0;\n\n\treturn texture;\n\n}\n\n/**\n * Determines how many bytes must be used to represent the texture.\n *\n * @param {number} width - The width of the texture.\n * @param {number} height - The height of the texture.\n * @param {number} format - The texture's format.\n * @param {number} type - The texture's type.\n * @return {number} The byte length.\n */\nfunction getByteLength( width, height, format, type ) {\n\n\tconst typeByteLength = getTextureTypeByteLength( type );\n\n\tswitch ( format ) {\n\n\t\t// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n\t\tcase AlphaFormat:\n\t\t\treturn width * height;\n\t\tcase RedFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RedIntegerFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGIntegerFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBFormat:\n\t\t\treturn ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAIntegerFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n\t\tcase RGB_S3TC_DXT1_Format:\n\t\tcase RGBA_S3TC_DXT1_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_S3TC_DXT3_Format:\n\t\tcase RGBA_S3TC_DXT5_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n\t\tcase RGB_PVRTC_2BPPV1_Format:\n\t\tcase RGBA_PVRTC_2BPPV1_Format:\n\t\t\treturn ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4;\n\t\tcase RGB_PVRTC_4BPPV1_Format:\n\t\tcase RGBA_PVRTC_4BPPV1_Format:\n\t\t\treturn ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n\t\tcase RGB_ETC1_Format:\n\t\tcase RGB_ETC2_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_ETC2_EAC_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n\t\tcase RGBA_ASTC_4x4_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x4_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x5_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x5_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x6_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x5_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_8x6_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x8_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x5_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_10x6_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_10x8_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x10_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x10_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x12_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n\t\tcase RGBA_BPTC_Format:\n\t\tcase RGB_BPTC_SIGNED_Format:\n\t\tcase RGB_BPTC_UNSIGNED_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n\t\tcase RED_RGTC1_Format:\n\t\tcase SIGNED_RED_RGTC1_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8;\n\t\tcase RED_GREEN_RGTC2_Format:\n\t\tcase SIGNED_RED_GREEN_RGTC2_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine texture byte length for ${format} format.`,\n\t);\n\n}\n\nfunction getTextureTypeByteLength( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase UnsignedByteType:\n\t\tcase ByteType:\n\t\t\treturn { byteLength: 1, components: 1 };\n\t\tcase UnsignedShortType:\n\t\tcase ShortType:\n\t\tcase HalfFloatType:\n\t\t\treturn { byteLength: 2, components: 1 };\n\t\tcase UnsignedShort4444Type:\n\t\tcase UnsignedShort5551Type:\n\t\t\treturn { byteLength: 2, components: 4 };\n\t\tcase UnsignedIntType:\n\t\tcase IntType:\n\t\tcase FloatType:\n\t\t\treturn { byteLength: 4, components: 1 };\n\t\tcase UnsignedInt5999Type:\n\t\tcase UnsignedInt101111Type:\n\t\t\treturn { byteLength: 4, components: 3 };\n\n\t}\n\n\tthrow new Error( `Unknown texture type ${type}.` );\n\n}\n\n/**\n * A class containing utility functions for textures.\n *\n * @hideconstructor\n */\nclass TextureUtils {\n\n\t/**\n\t * Scales the texture as large as possible within its surface without cropping\n\t * or stretching the texture. The method preserves the original aspect ratio of\n\t * the texture. Akin to CSS `object-fit: contain`\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic contain( texture, aspect ) {\n\n\t\treturn contain( texture, aspect );\n\n\t}\n\n\t/**\n\t * Scales the texture to the smallest possible size to fill the surface, leaving\n\t * no empty space. The method preserves the original aspect ratio of the texture.\n\t * Akin to CSS `object-fit: cover`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic cover( texture, aspect ) {\n\n\t\treturn cover( texture, aspect );\n\n\t}\n\n\t/**\n\t * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic fill( texture ) {\n\n\t\treturn fill( texture );\n\n\t}\n\n\t/**\n\t * Determines how many bytes must be used to represent the texture.\n\t *\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} format - The texture's format.\n\t * @param {number} type - The texture's type.\n\t * @return {number} The byte length.\n\t */\n\tstatic getByteLength( width, height, format, type ) {\n\n\t\treturn getByteLength( width, height, format, type );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, getByteLength, getUnlitUniformColorSpace, mergeUniforms, probeAsync, warnOnce };\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import { unzip } from \"fflate\";\nimport {\n type PcSogsJson,\n type PcSogsV2Json,\n tryPcSogsZip,\n} from \"./SplatLoader\";\nimport type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n setPackedSplatCenter,\n setPackedSplatQuat,\n setPackedSplatRgba,\n setPackedSplatScales,\n} from \"./utils\";\n\nexport async function unpackPcSogs(\n json: PcSogsJson | PcSogsV2Json,\n extraFiles: Record,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const isVersion2 = \"version\" in json;\n\n if (!isVersion2 && json.quats.encoding !== \"quaternion_packed\") {\n throw new Error(\"Unsupported quaternion encoding\");\n }\n\n const numSplats = isVersion2 ? json.count : json.means.shape[0];\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n const meansPromise = Promise.all([\n decodeImageRgba(extraFiles[json.means.files[0]]),\n decodeImageRgba(extraFiles[json.means.files[1]]),\n ]).then((means) => {\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const fx = (means[0][i4 + 0] + (means[1][i4 + 0] << 8)) / 65535;\n const fy = (means[0][i4 + 1] + (means[1][i4 + 1] << 8)) / 65535;\n const fz = (means[0][i4 + 2] + (means[1][i4 + 2] << 8)) / 65535;\n let x =\n json.means.mins[0] + (json.means.maxs[0] - json.means.mins[0]) * fx;\n let y =\n json.means.mins[1] + (json.means.maxs[1] - json.means.mins[1]) * fy;\n let z =\n json.means.mins[2] + (json.means.maxs[2] - json.means.mins[2]) * fz;\n x = Math.sign(x) * (Math.exp(Math.abs(x)) - 1);\n y = Math.sign(y) * (Math.exp(Math.abs(y)) - 1);\n z = Math.sign(z) * (Math.exp(Math.abs(z)) - 1);\n setPackedSplatCenter(packedArray, i, x, y, z);\n }\n });\n\n const scalesPromise = decodeImageRgba(extraFiles[json.scales.files[0]]).then(\n (scales) => {\n let xLookup: number[];\n let yLookup: number[];\n let zLookup: number[];\n\n if (isVersion2) {\n xLookup =\n yLookup =\n zLookup =\n json.scales.codebook.map((x) => Math.exp(x));\n } else {\n xLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[0] +\n (json.scales.maxs[0] - json.scales.mins[0]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n yLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[1] +\n (json.scales.maxs[1] - json.scales.mins[1]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n zLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[2] +\n (json.scales.maxs[2] - json.scales.mins[2]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n }\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n setPackedSplatScales(\n packedArray,\n i,\n xLookup[scales[i4 + 0]],\n yLookup[scales[i4 + 1]],\n zLookup[scales[i4 + 2]],\n splatEncoding,\n );\n }\n },\n );\n\n const quatsPromise = decodeImageRgba(extraFiles[json.quats.files[0]]).then(\n (quats) => {\n const SQRT2 = Math.sqrt(2);\n const lookup = new Array(256)\n .fill(0)\n .map((_, i) => (i / 255 - 0.5) * SQRT2);\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const r0 = lookup[quats[i4 + 0]];\n const r1 = lookup[quats[i4 + 1]];\n const r2 = lookup[quats[i4 + 2]];\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = quats[i4 + 3] - 252;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n setPackedSplatQuat(packedArray, i, quatX, quatY, quatZ, quatW);\n }\n },\n );\n const sh0Promise = decodeImageRgba(extraFiles[json.sh0.files[0]]).then(\n (sh0) => {\n const SH_C0 = 0.28209479177387814;\n let rLookup: number[];\n let gLookup: number[];\n let bLookup: number[];\n let aLookup: number[];\n\n if (isVersion2) {\n rLookup =\n gLookup =\n bLookup =\n json.sh0.codebook.map((x) => SH_C0 * x + 0.5);\n aLookup = new Array(256).fill(0).map((_, i) => i / 255);\n } else {\n rLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[0] +\n (json.sh0.maxs[0] - json.sh0.mins[0]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n gLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[1] +\n (json.sh0.maxs[1] - json.sh0.mins[1]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n bLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[2] +\n (json.sh0.maxs[2] - json.sh0.mins[2]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n aLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[3] +\n (json.sh0.maxs[3] - json.sh0.mins[3]) * (i / 255),\n )\n .map((x) => 1.0 / (1.0 + Math.exp(-x)));\n }\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n setPackedSplatRgba(\n packedArray,\n i,\n rLookup[sh0[i4 + 0]],\n gLookup[sh0[i4 + 1]],\n bLookup[sh0[i4 + 2]],\n aLookup[sh0[i4 + 3]],\n splatEncoding,\n );\n }\n },\n );\n\n const promises = [meansPromise, scalesPromise, quatsPromise, sh0Promise];\n if (json.shN) {\n const useSH3 = isVersion2\n ? json.shN.bands >= 3\n : json.shN.shape[1] >= 48 - 3;\n const useSH2 = isVersion2\n ? json.shN.bands >= 2\n : json.shN.shape[1] >= 27 - 3;\n const useSH1 = isVersion2\n ? json.shN.bands >= 1\n : json.shN.shape[1] >= 12 - 3;\n\n if (useSH1) extra.sh1 = new Uint32Array(numSplats * 2);\n if (useSH2) extra.sh2 = new Uint32Array(numSplats * 4);\n if (useSH3) extra.sh3 = new Uint32Array(numSplats * 4);\n\n const sh1 = new Float32Array(9);\n const sh2 = new Float32Array(15);\n const sh3 = new Float32Array(21);\n\n const shN = json.shN;\n const shNPromise = Promise.all([\n decodeImage(extraFiles[json.shN.files[0]]),\n decodeImage(extraFiles[json.shN.files[1]]),\n ]).then(([centroids, labels]) => {\n const lookup =\n \"codebook\" in shN\n ? shN.codebook\n : new Array(256)\n .fill(0)\n .map((_, i) => shN.mins + (shN.maxs - shN.mins) * (i / 255));\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const label = labels.rgba[i4 + 0] + (labels.rgba[i4 + 1] << 8);\n const col = (label & 63) * 15;\n const row = label >>> 6;\n const offset = row * centroids.width + col;\n\n for (let d = 0; d < 3; ++d) {\n if (useSH1) {\n for (let k = 0; k < 3; ++k) {\n sh1[k * 3 + d] = lookup[centroids.rgba[(offset + k) * 4 + d]];\n }\n }\n\n if (useSH2) {\n for (let k = 0; k < 5; ++k) {\n sh2[k * 3 + d] = lookup[centroids.rgba[(offset + 3 + k) * 4 + d]];\n }\n }\n\n if (useSH3) {\n for (let k = 0; k < 7; ++k) {\n sh3[k * 3 + d] = lookup[centroids.rgba[(offset + 8 + k) * 4 + d]];\n }\n }\n }\n\n if (useSH1)\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n if (useSH2)\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n if (useSH3)\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n });\n promises.push(shNPromise);\n }\n\n await Promise.all(promises);\n\n return { packedArray, numSplats, extra };\n}\n\n// WebGL context for reading raw pixel data of WebP images\nlet offscreenGlContext: WebGL2RenderingContext | null = null;\n\nasync function decodeImage(fileBytes: ArrayBuffer) {\n if (!offscreenGlContext) {\n const canvas = new OffscreenCanvas(1, 1);\n offscreenGlContext = canvas.getContext(\"webgl2\");\n if (!offscreenGlContext) {\n throw new Error(\"Failed to create WebGL2 context\");\n }\n }\n\n const imageBlob = new Blob([fileBytes]);\n const bitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: \"none\",\n });\n\n const gl = offscreenGlContext;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n\n const data = new Uint8Array(bitmap.width * bitmap.height * 4);\n gl.readPixels(\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data,\n );\n\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n\n return { rgba: data, width: bitmap.width, height: bitmap.height };\n}\n\nasync function decodeImageRgba(fileBytes: ArrayBuffer) {\n const { rgba } = await decodeImage(fileBytes);\n return rgba;\n}\n\nexport async function unpackPcSogsZip(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const nameJson = tryPcSogsZip(fileBytes);\n if (!nameJson) {\n throw new Error(\"Invalid PC SOGS zip file\");\n }\n const { name, json } = nameJson;\n // Find path prefix, will be -1 if no / or \\\n const lastSlash = name.lastIndexOf(\"/\");\n const lastBackslash = name.lastIndexOf(\"\\\\\");\n const prefix = name.slice(0, Math.max(lastSlash, lastBackslash) + 1);\n\n const fileMap = new Map();\n const refFiles = [\n ...json.means.files,\n ...json.scales.files,\n ...json.quats.files,\n ...json.sh0.files,\n ...(json.shN?.files ?? []),\n ];\n for (const file of refFiles) {\n fileMap.set(prefix + file, file);\n }\n\n const unzipped = await new Promise>(\n (resolve, reject) => {\n unzip(\n fileBytes,\n {\n filter: ({ name }) => {\n return fileMap.has(name);\n },\n },\n (err, files) => {\n if (err) {\n reject(err);\n } else {\n resolve(files);\n }\n },\n );\n },\n );\n\n const extraFiles: Record = {};\n for (const [full, name] of fileMap.entries()) {\n extraFiles[name] = unzipped[full];\n }\n\n return await unpackPcSogs(json, extraFiles, splatEncoding);\n}\n","import init_wasm, { sort_splats, sort32_splats } from \"spark-worker-rs\";\nimport type { PcSogsJson, TranscodeSpzInput } from \"./SplatLoader\";\nimport { unpackAntiSplat } from \"./antisplat\";\nimport { type SplatEncoding, WASM_SPLAT_SORT } from \"./defines\";\nimport { unpackKsplat } from \"./ksplat\";\nimport { unpackPcSogs, unpackPcSogsZip } from \"./pcsogs\";\nimport { PlyReader } from \"./ply\";\nimport { SpzReader, transcodeSpz } from \"./spz\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n getTransferable,\n setPackedSplat,\n setPackedSplatCenter,\n setPackedSplatOpacity,\n setPackedSplatQuat,\n setPackedSplatRgb,\n setPackedSplatScales,\n toHalf,\n} from \"./utils\";\n\n// WebWorker for Spark's background CPU tasks, such as Gsplat file decoding\n// and sorting.\n\nasync function onMessage(event: MessageEvent) {\n // Unpack RPC function name, arguments, and ID from the main thread.\n const { name, args, id }: { name: string; args: unknown; id: number } =\n event.data;\n // console.log(`worker.onMessage(${id}, ${name}):`, args);\n\n // Initialize return result/error, to be filled out below.\n let result = undefined;\n let error = undefined;\n\n try {\n switch (name) {\n case \"unpackPly\": {\n const { packedArray, fileBytes, splatEncoding } = args as {\n packedArray: Uint32Array;\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackPly({\n packedArray,\n fileBytes,\n splatEncoding,\n });\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodeSpz\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackSpz(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodeAntiSplat\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = unpackAntiSplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n };\n break;\n }\n case \"decodeKsplat\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = unpackKsplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodePcSogs\": {\n const { fileBytes, extraFiles, splatEncoding } = args as {\n fileBytes: Uint8Array;\n extraFiles: Record;\n splatEncoding: SplatEncoding;\n };\n const json = JSON.parse(\n new TextDecoder().decode(fileBytes),\n ) as PcSogsJson;\n const decoded = await unpackPcSogs(json, extraFiles, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodePcSogsZip\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackPcSogsZip(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"sortSplats\": {\n // Sort maxSplats splats using readback data, which encodes one uint32 per\n // Gsplats, with the low bytes encoding a float16 distance sort metric.\n const { maxSplats, totalSplats, readback, ordering } = args as {\n maxSplats: number;\n totalSplats: number;\n readback: Uint8Array[];\n ordering: Uint32Array;\n };\n // Sort totalSplats splats each with 4 bytes of readback, and outputs Uint32Array ordering of splat indices\n result = {\n id,\n readback,\n ...sortSplats({ totalSplats, readback, ordering }),\n };\n break;\n }\n case \"sortDoubleSplats\": {\n // Sort numSplats splats using the readback distance metric, which encodes\n // one float16 per splat (no unused high bytes like for sortSplats).\n const { numSplats, readback, ordering } = args as {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n };\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort_splats(numSplats, readback, ordering),\n };\n } else {\n result = {\n id,\n readback,\n ...sortDoubleSplats({ numSplats, readback, ordering }),\n };\n }\n break;\n }\n case \"sort32Splats\": {\n const { maxSplats, numSplats, readback, ordering } = args as {\n maxSplats: number;\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n };\n // Benchmark sort\n // benchmarkSort(numSplats, readback, ordering);\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort32_splats(numSplats, readback, ordering),\n };\n } else {\n result = {\n id,\n readback,\n ...sort32Splats({ maxSplats, numSplats, readback, ordering }),\n };\n }\n break;\n }\n case \"transcodeSpz\": {\n const input = args as TranscodeSpzInput;\n const spzBytes = await transcodeSpz(input);\n result = {\n id,\n fileBytes: spzBytes,\n input,\n };\n break;\n }\n default: {\n throw new Error(`Unknown name: ${name}`);\n }\n }\n } catch (e) {\n error = e;\n console.error(error);\n }\n\n // Send the result or error back to the main thread, making sure to transfer any ArrayBuffers\n self.postMessage(\n { id, result, error },\n { transfer: getTransferable(result) },\n );\n}\n\nfunction benchmarkSort(\n numSplats: number,\n readback32: Uint32Array,\n ordering: Uint32Array,\n) {\n if (numSplats > 0) {\n console.log(\"Running sort benchmark\");\n const readbackF32 = new Float32Array(readback32.buffer);\n const readback16 = new Uint16Array(readback32.length);\n for (let i = 0; i < numSplats; ++i) {\n readback16[i] = toHalf(readbackF32[i]);\n }\n\n const WARMUP = 10;\n for (let i = 0; i < WARMUP; ++i) {\n const activeSplats = sort_splats(numSplats, readback16, ordering);\n const activeSplats32 = sort32_splats(numSplats, readback32, ordering);\n const results = sortDoubleSplats({\n numSplats,\n readback: readback16,\n ordering,\n });\n const results32 = sort32Splats({\n maxSplats: numSplats,\n numSplats,\n readback: readback32,\n ordering,\n });\n }\n\n const TIMING_SAMPLES = 1000;\n let start: number;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const activeSplats = sort_splats(numSplats, readback16, ordering);\n }\n const wasmTime = (performance.now() - start) / TIMING_SAMPLES;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const results = sortDoubleSplats({\n numSplats,\n readback: readback16,\n ordering,\n });\n }\n const jsTime = (performance.now() - start) / TIMING_SAMPLES;\n\n console.log(\n `JS: ${jsTime} ms, WASM: ${wasmTime} ms, numSplats: ${numSplats}`,\n );\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const activeSplats32 = sort32_splats(numSplats, readback32, ordering);\n }\n const wasm32Time = (performance.now() - start) / TIMING_SAMPLES;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const results = sort32Splats({\n maxSplats: numSplats,\n numSplats,\n readback: readback32,\n ordering,\n });\n }\n const js32Time = (performance.now() - start) / TIMING_SAMPLES;\n\n console.log(\n `JS32: ${js32Time} ms, WASM32: ${wasm32Time} ms, numSplats: ${numSplats}`,\n );\n }\n}\n\nasync function unpackPly({\n packedArray,\n fileBytes,\n splatEncoding,\n}: {\n packedArray: Uint32Array;\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n\n const extra: Record = {};\n\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, index, sh3, splatEncoding);\n }\n },\n );\n\n return { packedArray, numSplats, extra };\n}\n\nasync function unpackSpz(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const spz = new SpzReader({ fileBytes });\n await spz.parseHeader();\n const numSplats = spz.numSplats;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let extraCallbacks = {};\n if (spz.flagLod) {\n const childCounts = new Uint16Array(numSplats);\n const childStarts = new Uint32Array(numSplats);\n extra.childCounts = childCounts;\n extra.childStarts = childStarts;\n extraCallbacks = {\n childCounts: (index: number, count: number) => {\n childCounts[index] = count;\n },\n childStarts: (index: number, start: number) => {\n childStarts[index] = start;\n },\n };\n }\n\n await spz.parseSplats(\n (index, x, y, z) => {\n setPackedSplatCenter(packedArray, index, x, y, z);\n },\n (index, alpha) => {\n setPackedSplatOpacity(packedArray, index, alpha);\n },\n (index, r, g, b) => {\n setPackedSplatRgb(packedArray, index, r, g, b, splatEncoding);\n },\n (index, scaleX, scaleY, scaleZ) => {\n setPackedSplatScales(\n packedArray,\n index,\n scaleX,\n scaleY,\n scaleZ,\n splatEncoding,\n );\n },\n (index, quatX, quatY, quatZ, quatW) => {\n setPackedSplatQuat(packedArray, index, quatX, quatY, quatZ, quatW);\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, index, sh3, splatEncoding);\n }\n },\n extraCallbacks,\n );\n return { packedArray, numSplats, extra };\n}\n\n// Array of buckets for sorting float16 distances with range [0, DEPTH_INFINITY].\nconst DEPTH_INFINITY_F16 = 0x7c00;\nconst DEPTH_SIZE_16 = DEPTH_INFINITY_F16 + 1;\nlet depthArray16: Uint32Array | null = null;\n\nfunction sortSplats({\n totalSplats,\n readback,\n ordering,\n}: { totalSplats: number; readback: Uint8Array[]; ordering: Uint32Array }): {\n activeSplats: number;\n ordering: Uint32Array;\n} {\n // Sort totalSplats Gsplats, each with 4 bytes of readback, and outputs Uint32Array\n // of indices from most distant to nearest. Each 4 bytes encode a float16 distance\n // and unused high bytes.\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n\n const readbackUint32 = readback.map((layer) => new Uint32Array(layer.buffer));\n const layerSize = readbackUint32[0].length;\n const numLayers = Math.ceil(totalSplats / layerSize);\n\n let layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i = 0; i < layerSplats; ++i) {\n const pri = readbackLayer[i] & 0x7fff;\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n\n let activeSplats = 0;\n for (let j = 0; j < DEPTH_SIZE_16; ++j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n\n layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i = 0; i < layerSplats; ++i) {\n const pri = readbackLayer[i] & 0x7fff;\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = layerBase + i;\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n if (depthArray16[DEPTH_SIZE_16 - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[DEPTH_SIZE_16 - 1]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\n// Sort numSplats splats, each with 2 bytes of float16 readback for distance metric,\n// using one bucket sort pass, outputting Uint32Array of indices.\nfunction sortDoubleSplats({\n numSplats,\n readback,\n ordering,\n}: { numSplats: number; readback: Uint16Array; ordering: Uint32Array }): {\n activeSplats: number;\n ordering: Uint32Array;\n} {\n // Ensure depthArray is allocated and zeroed out for our buckets.\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n\n // Count the number of splats in each bucket (cull Gsplats at infinity).\n for (let i = 0; i < numSplats; ++i) {\n const pri = readback[i];\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n\n // Compute the beginning index of each bucket in the output array and the\n // total number of active (non-infinity) splats, going in reverse order\n // because we want most distant Gsplats to be first in the output array.\n let activeSplats = 0;\n for (let j = DEPTH_INFINITY_F16 - 1; j >= 0; --j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n\n // Write out the sorted indices into the output array according\n // bucket order.\n for (let i = 0; i < numSplats; ++i) {\n const pri = readback[i];\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = i;\n depthArray16[pri] += 1;\n }\n }\n // Sanity check that the end of the closest bucket is the same as\n // our total count of active splats (not at infinity).\n if (depthArray16[0] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[0]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\nconst DEPTH_INFINITY_F32 = 0x7f800000;\nlet bucket16lo: Uint32Array | null = null;\nlet bucket16hi: Uint32Array | null = null;\nlet scratchSplats: Uint32Array | null = null;\n\n// two-pass radix sort (base 65536) of 32-bit keys in readback,\n// but placing largest values first.\nfunction sort32Splats({\n maxSplats,\n numSplats,\n readback, // Uint32Array of bit‑patterns\n ordering, // Uint32Array to fill with sorted indices\n}: {\n maxSplats: number;\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}): { activeSplats: number; ordering: Uint32Array } {\n const BASE = 1 << 16; // 65536\n\n // allocate once\n if (!bucket16lo) {\n bucket16lo = new Uint32Array(BASE);\n }\n if (!bucket16hi) {\n bucket16hi = new Uint32Array(BASE);\n }\n if (!scratchSplats || scratchSplats.length < maxSplats) {\n scratchSplats = new Uint32Array(maxSplats);\n }\n\n // tally low and high buckets\n bucket16lo.fill(0);\n bucket16hi.fill(0);\n for (let i = 0; i < numSplats; ++i) {\n const key = readback[i];\n if (key < DEPTH_INFINITY_F32) {\n const inv = ~key >>> 0;\n bucket16lo[inv & 0xffff] += 1;\n bucket16hi[inv >>> 16] += 1;\n }\n }\n\n //\n // ——— Pass #1: bucket by inv(lo 16 bits) ———\n //\n // exclusive prefix‑sum → starting offsets\n let total = 0;\n for (let b = 0; b < BASE; ++b) {\n const c = bucket16lo[b];\n bucket16lo[b] = total;\n total += c;\n }\n const activeSplats = total;\n\n // scatter into scratch by low bits of inv\n for (let i = 0; i < numSplats; ++i) {\n const key = readback[i];\n if (key < DEPTH_INFINITY_F32) {\n const inv = ~key >>> 0;\n scratchSplats[bucket16lo[inv & 0xffff]++] = i;\n }\n }\n\n //\n // ——— Pass #2: bucket by inv(hi 16 bits) ———\n //\n // exclusive prefix‑sum again\n let sum = 0;\n for (let b = 0; b < BASE; ++b) {\n const c = bucket16hi[b];\n bucket16hi[b] = sum;\n sum += c;\n }\n\n // scatter into final ordering by high bits of inv\n for (let k = 0; k < activeSplats; ++k) {\n const idx = scratchSplats[k];\n const inv = ~readback[idx] >>> 0;\n ordering[bucket16hi[inv >>> 16]++] = idx;\n }\n\n // sanity‑check: the last bucket should have eaten all entries\n if (bucket16hi[BASE - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${bucket16hi[BASE - 1]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\n// Buffer to queue any messages received while initializing, for example\n// early messages to unpack a Gsplat file while still initializing the WASM code.\nconst messageBuffer: MessageEvent[] = [];\n\nfunction bufferMessage(event: MessageEvent) {\n messageBuffer.push(event);\n}\n\nasync function initialize() {\n // Hold any messages received while initializing\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm();\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of messageBuffer) {\n onMessage(event);\n }\n messageBuffer.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["CsplatArray","ptr","obj","CsplatArrayFinalization","wasm","lod_base","rgba","merge_filter","ret","takeFromExternrefTable0","arg0","GsplatArray","GsplatArrayFinalization","encoding","sort32_splats","num_splats","readback","ordering","sort_splats","__wbg_get_imports","arg1","getStringFromWasm0","v","isLikeNone","debugString","ptr1","passStringToWasm0","len1","WASM_VECTOR_LEN","getDataViewMemory0","val","deferred0_0","deferred0_1","handleError","result","arg2","getArrayU8FromWasm0","getArrayU16FromWasm0","getArrayU32FromWasm0","table","offset","addToExternrefTable0","idx","type","description","name","length","debug","i","builtInMatches","className","len","getUint16ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","decodeText","cachedUint16ArrayMemory0","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","f","args","e","x","arg","malloc","realloc","buf","cachedTextEncoder","mem","code","view","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","bytes","__wbg_init","module_or_path","ch2","wk","c","id","msg","transfer","cb","w","d","ed","err","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","b","r","j","_a","fl","revfl","_b","fd","rev","hMap","cd","mb","s","l","le","co","rvb","sv","r_1","m","flt","fdt","flrm","fdrm","max","a","bits","p","o","bits16","shft","slc","ec","ind","nt","inflt","dat","st","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","n","lt","dt","t","lms","dms","lpos","sym","add","dsym","end","shift","dend","et","mrg","k","wcln","fn","fnStr","td","ks","st_1","spInd","ch","cbfs","wrkr","fns","init","td_1","bInflt","inflateSync","pbf","gopt","cbify","opts","b2","b4","b8","gzs","flg","zs","Inflate","bts","chunk","inflate","data","ev","Gunzip","dutf8","strFromU8","latin1","slzh","zh","z","fnl","es","bs","z64e","sc","su","off","mt","unzip","term","tAll","files","cbd","lft","ze","fltr","_loop_3","c_1","no","cbl","infl","unzipSync","c_2","REVISION","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","LinearTransfer","SRGBTransfer","clamp","min","euclideanModulo","lerp","y","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","cos","dir","sqrSin","sin","tDir","quaternion","euler","update","order","c1","c2","c3","s1","s2","s3","axis","angle","halfAngle","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","vFrom","vTo","q","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","theta1","theta2","r1","r2","array","attribute","index","callback","Vector3","scalar","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tx","ty","tz","camera","minVal","maxVal","alpha","v1","v2","ax","ay","az","bx","by","bz","denominator","planeNormal","_vector$c","normal","theta","dx","dy","dz","radius","phi","sinPhiRadius","sx","sy","sz","u","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","g","h","t11","t12","t13","det","detInv","tmp","matrix4","rotation","cx","cy","_m3","matrix","_cache","warnOnce","message","LINEAR_REC709_TO_XYZ","XYZ_TO_LINEAR_REC709","createColorManagement","ColorManagement","color","sourceColorSpace","targetColorSpace","SRGBToLinear","LinearToSRGB","colorSpace","target","colorSpaces","targetMatrix","REC709_PRIMARIES","REC709_LUMINANCE_COEFFICIENTS","D65","Box3","il","_vector$b","points","center","size","halfSize","object","precise","box","point","vector","geometry","positionAttribute","_box$4","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","json","_testAxis","v0","extents","p0","p1","p2","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","delta","color1","color2","LN_SCALE_MIN","LN_SCALE_MAX","SCALE_ZERO","SPLAT_TEX_WIDTH_BITS","SPLAT_TEX_HEIGHT_BITS","SPLAT_TEX_WIDTH","SPLAT_TEX_HEIGHT","SPLAT_TEX_MIN_HEIGHT","SplatFileType","unindentLines","seenNonEmpty","lines","line","trimmedLine","indent","regex","unindent","f32buffer","u32buffer","supportsFloat16Array","f16buffer","u16buffer","normalize","vec","norm","acc","toHalf","toHalfNative","toHalfJS","fromHalf","fromHalfNative","fromHalfJS","sign","exp","frac","halfSign","newExp","subFrac","halfFrac","f32bits","mant","newFrac","floatToUint8","getTransferable","ctx","buffers","seen","traverse","setPackedSplat","packedSplats","scaleX","scaleY","scaleZ","quatX","quatY","quatZ","quatW","opacity","rgbMin","rgbRange","uR","uG","uB","uA","uQuat","encodeQuatOctXy88R8","tempQuaternion","uQuatX","uQuatY","uQuatZ","lnScaleMin","lnScaleScale","uScaleX","uScaleY","uScaleZ","uCenterX","uCenterY","uCenterZ","i4","setPackedSplatCenter","setPackedSplatScales","THREE.Quaternion","setPackedSplatQuat","setPackedSplatRgba","setPackedSplatRgb","setPackedSplatOpacity","THREE.Vector3","THREE.Color","getTextureSize","numSplats","width","height","depth","maxSplats","computeMaxSplats","tempNormalizedQuaternion","tempAxis","qnorm","xyz_norm","sum","p_x","p_y","u_f","v_f","quantU","quantV","packSint8Bytes","b0","b1","b3","clampedB0","clampedB1","clampedB2","clampedB3","encodeSh1Rgb","sh1Array","sh1Rgb","sh1Scale","base","bitStart","bitEnd","wordStart","bitOffset","firstWord","secondWord","encodeSh2Rgb","sh2Array","sh2Rgb","sh2Scale","encodeSh3Rgb","sh3Array","sh3Rgb","sh3Scale","decompressPartialGzip","fileBytes","numBytes","chunks","totalBytes","gunzip","allBytes","CHUNK_SIZE","GunzipReader","chunkBytes","ds","decompressionStream","readerDone","outOffset","decodeAntiSplat","initNumSplats","splatCallback","f32","i8","unpackAntiSplat","splatEncoding","packedArray","cbNumSplats","KSPLAT_COMPRESSION","KSPLAT_SH_DEGREE_TO_COMPONENTS","decodeKsplat","shCallback","headerOffset","header","versionMajor","versionMinor","maxSectionCount","compressionLevel","minSphericalHarmonicsCoeff","maxSphericalHarmonicsCoeff","sectionBase","section","getSh","splatOffset","component","sphericalHarmonicsOffsetBytes","sectionSplatCount","sectionMaxSplatCount","bucketSize","bucketCount","bucketBlockSize","bucketStorageSizeBytes","compressionScaleRange","fullBucketCount","fullBucketSplats","partiallyFilledBucketCount","bucketsMetaDataSizeBytes","bucketsStorageSizeBytes","sphericalHarmonicsDegree","shComponents","bytesPerCenter","bytesPerScale","bytesPerRotation","bytesPerColor","bytesPerSphericalHarmonicsComponent","scaleOffsetBytes","rotationOffsetBytes","colorOffsetBytes","bytesPerSplat","splatDataStorageSizeBytes","storageSizeBytes","sh1Index","sh2Index","sh3Index","sh1","sh2","sh3","compressionScaleFactor","bucketsBase","dataBase","bucketArray","partiallyFilledBucketLengths","partialBucketIndex","partialBucketBase","bucketIndex","bucketLength","key","unpackKsplat","splatCount","extra","PLY_PROPERTY_TYPES","_PlyReader","decoder","controller","headerTerminator","done","endHeader","headerLen","curElement","lineIndex","fields","elementCallback","elementName","element","count","properties","item","createEmptyItem","parseFn","createParseFn","isSuperSplat","ssChunks","numSh","sh1Props","sh2Props","sh3Props","prepareSh","num_f_rest","NUM_SH_TO_NUM_F_REST","_","ssShCallback","sh","initSuperSplat","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","min_r","min_g","min_b","max_r","max_g","max_b","decodeSuperSplat","getNumSh","packed_position","packed_rotation","packed_scale","packed_color","SQRT2","r0","rr","rOrder","scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","f_dc_0","f_dc_1","f_dc_2","red","green","blue","hasScales","hasRots","alphaDiv","FIELD_SCALE","redDiv","greenDiv","blueDiv","op","SH_C0","parsers","rgbaOffset","isVertex","propertyName","property","PARSE_FIELD","FIELD_BYTES","SET_FIELD","parser","PlyReader","littleEndian","NUM_F_REST_TO_NUM_SH","F_REST_REGEX","safeToCompile","createCompiledParserFn","createDynamicParserFn","UNSAFE_EVAL_ALLOWED","PROPERTY_NAME_REGEX","parserSrc","fRestMatch","fRestIndex","list","currentOffset","parserIndex","SpzReader","centerCallback","alphaCallback","rgbCallback","scalesCallback","quatCallback","childCounts","childStarts","centerBytes","centerUint16","i3","fixed","i9","rgbBytes","scale","scalesBytes","maxValue","quatBytes","values","combinedValues","valueMask","largestIndex","remainingValues","sumSquares","square","shBytes","SH_DEGREE_TO_VECS","i2","SPZ_MAGIC","SPZ_VERSION","FLAG_ANTIALIASED","SpzWriter","shDegree","fractionalBits","flagAntiAlias","splatSize","bufferSize","xRounded","xInt","yRounded","yInt","zRounded","zInt","quat","iLargest","negate","comp","negbit","mag","quantized","shVecs","base1","base2","base3","input","compressed","buffer","transcodeSpz","splats","SplatData","inputs","clipXyz","maxSh","opacityThreshold","transformPos","translate","transformScales","scales","transformQuaternion","withinClip","clip","withinOpacity","THREE.Box3","fileType","getSplatFileType","getSplatFileTypeFromPath","ply","lastIndex","spz","mapping","centers","magic","tryPcSogsZip","getFileExtension","pathOrUrl","noTrailing","lastSlash","filename","lastDot","extension","tryPcSogs","text","isVersion2","metaFilename","unzipped","targetSplats","newCenters","newScales","newQuaternions","newOpacities","newColors","newSh1","newSh2","newSh3","unpackPcSogs","extraFiles","meansPromise","decodeImageRgba","means","fx","fy","fz","scalesPromise","xLookup","yLookup","zLookup","quatsPromise","quats","lookup","sh0Promise","sh0","rLookup","gLookup","bLookup","aLookup","promises","useSH3","useSH2","useSH1","shN","shNPromise","decodeImage","centroids","labels","label","col","offscreenGlContext","imageBlob","bitmap","gl","texture","framebuffer","unpackPcSogsZip","nameJson","lastBackslash","prefix","fileMap","refFiles","file","resolve","reject","full","onMessage","event","error","decoded","unpackPly","unpackSpz","totalSplats","sortSplats","spzBytes","extraCallbacks","DEPTH_INFINITY_F16","DEPTH_SIZE_16","depthArray16","readbackUint32","layer","layerSize","numLayers","layerBase","readbackLayer","layerSplats","pri","activeSplats","nextIndex","messageBuffer","bufferMessage","initialize","init_wasm"],"mappings":"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","x_google_ignoreList":[1,2]} \ No newline at end of file diff --git a/dist/assets/oldWorker-DUF0ALOS.js.map b/dist/assets/oldWorker-DUF0ALOS.js.map deleted file mode 100644 index 370a67bd..00000000 --- a/dist/assets/oldWorker-DUF0ALOS.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"oldWorker-DUF0ALOS.js","sources":["../rust/spark-worker-rs/pkg/spark_worker_rs.js","../node_modules/fflate/esm/browser.js","../node_modules/three/build/three.core.js","../src/defines.ts","../src/dyno/base.ts","../src/utils.ts","../src/antisplat.ts","../src/ksplat.ts","../src/ply.ts","../src/spz.ts","../src/SplatLoader.ts","../src/pcsogs.ts","../src/oldWorker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_worker_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_worker_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_worker_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","/**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '180';\n\n/**\n * Represents mouse buttons and interaction types in context of controls.\n *\n * @type {ConstantsMouse}\n * @constant\n */\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\n\n/**\n * Represents touch interaction types in context of controls.\n *\n * @type {ConstantsTouch}\n * @constant\n */\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\n\n/**\n * Disables face culling.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceNone = 0;\n\n/**\n * Culls back faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceBack = 1;\n\n/**\n * Culls front faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceFront = 2;\n\n/**\n * Culls both front and back faces.\n *\n * @type {number}\n * @constant\n */\nconst CullFaceFrontBack = 3;\n\n/**\n * Gives unfiltered shadow maps - fastest, but lowest quality.\n *\n * @type {number}\n * @constant\n */\nconst BasicShadowMap = 0;\n\n/**\n * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm.\n *\n * @type {number}\n * @constant\n */\nconst PCFShadowMap = 1;\n\n/**\n * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm with\n * better soft shadows especially when using low-resolution shadow maps.\n *\n * @type {number}\n * @constant\n */\nconst PCFSoftShadowMap = 2;\n\n/**\n * Filters shadow maps using the Variance Shadow Map (VSM) algorithm.\n * When using VSMShadowMap all shadow receivers will also cast shadows.\n *\n * @type {number}\n * @constant\n */\nconst VSMShadowMap = 3;\n\n/**\n * Only front faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst FrontSide = 0;\n\n/**\n * Only back faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst BackSide = 1;\n\n/**\n * Both front and back faces are rendered.\n *\n * @type {number}\n * @constant\n */\nconst DoubleSide = 2;\n\n/**\n * No blending is performed which effectively disables\n * alpha transparency.\n *\n * @type {number}\n * @constant\n */\nconst NoBlending = 0;\n\n/**\n * The default blending.\n *\n * @type {number}\n * @constant\n */\nconst NormalBlending = 1;\n\n/**\n * Represents additive blending.\n *\n * @type {number}\n * @constant\n */\nconst AdditiveBlending = 2;\n\n/**\n * Represents subtractive blending.\n *\n * @type {number}\n * @constant\n */\nconst SubtractiveBlending = 3;\n\n/**\n * Represents multiply blending.\n *\n * @type {number}\n * @constant\n */\nconst MultiplyBlending = 4;\n\n/**\n * Represents custom blending.\n *\n * @type {number}\n * @constant\n */\nconst CustomBlending = 5;\n\n/**\n * A `source + destination` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst AddEquation = 100;\n\n/**\n * A `source - destination` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst SubtractEquation = 101;\n\n/**\n * A `destination - source` blending equation.\n *\n * @type {number}\n * @constant\n */\nconst ReverseSubtractEquation = 102;\n\n/**\n * A blend equation that uses the minimum of source and destination.\n *\n * @type {number}\n * @constant\n */\nconst MinEquation = 103;\n\n/**\n * A blend equation that uses the maximum of source and destination.\n *\n * @type {number}\n * @constant\n */\nconst MaxEquation = 104;\n\n/**\n * Multiplies all colors by `0`.\n *\n * @type {number}\n * @constant\n */\nconst ZeroFactor = 200;\n\n/**\n * Multiplies all colors by `1`.\n *\n * @type {number}\n * @constant\n */\nconst OneFactor = 201;\n\n/**\n * Multiplies all colors by the source colors.\n *\n * @type {number}\n * @constant\n */\nconst SrcColorFactor = 202;\n\n/**\n * Multiplies all colors by `1` minus each source color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusSrcColorFactor = 203;\n\n/**\n * Multiplies all colors by the source alpha value.\n *\n * @type {number}\n * @constant\n */\nconst SrcAlphaFactor = 204;\n\n/**\n * Multiplies all colors by 1 minus the source alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusSrcAlphaFactor = 205;\n\n/**\n * Multiplies all colors by the destination alpha value.\n *\n * @type {number}\n * @constant\n */\nconst DstAlphaFactor = 206;\n\n/**\n * Multiplies all colors by `1` minus the destination alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusDstAlphaFactor = 207;\n\n/**\n * Multiplies all colors by the destination color.\n *\n * @type {number}\n * @constant\n */\nconst DstColorFactor = 208;\n\n/**\n * Multiplies all colors by `1` minus each destination color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusDstColorFactor = 209;\n\n/**\n * Multiplies the RGB colors by the smaller of either the source alpha\n * value or the value of `1` minus the destination alpha value. The alpha\n * value is multiplied by `1`.\n *\n * @type {number}\n * @constant\n */\nconst SrcAlphaSaturateFactor = 210;\n\n/**\n * Multiplies all colors by a constant color.\n *\n * @type {number}\n * @constant\n */\nconst ConstantColorFactor = 211;\n\n/**\n * Multiplies all colors by `1` minus a constant color.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusConstantColorFactor = 212;\n\n/**\n * Multiplies all colors by a constant alpha value.\n *\n * @type {number}\n * @constant\n */\nconst ConstantAlphaFactor = 213;\n\n/**\n * Multiplies all colors by 1 minus a constant alpha value.\n *\n * @type {number}\n * @constant\n */\nconst OneMinusConstantAlphaFactor = 214;\n\n/**\n * Never pass.\n *\n * @type {number}\n * @constant\n */\nconst NeverDepth = 0;\n\n/**\n * Always pass.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysDepth = 1;\n\n/**\n * Pass if the incoming value is less than the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst LessDepth = 2;\n\n/**\n * Pass if the incoming value is less than or equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualDepth = 3;\n\n/**\n * Pass if the incoming value equals the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst EqualDepth = 4;\n\n/**\n * Pass if the incoming value is greater than or equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualDepth = 5;\n\n/**\n * Pass if the incoming value is greater than the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterDepth = 6;\n\n/**\n * Pass if the incoming value is not equal to the depth buffer value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualDepth = 7;\n\n/**\n * Multiplies the environment map color with the surface color.\n *\n * @type {number}\n * @constant\n */\nconst MultiplyOperation = 0;\n\n/**\n * Uses reflectivity to blend between the two colors.\n *\n * @type {number}\n * @constant\n */\nconst MixOperation = 1;\n\n/**\n * Adds the two colors.\n *\n * @type {number}\n * @constant\n */\nconst AddOperation = 2;\n\n/**\n * No tone mapping is applied.\n *\n * @type {number}\n * @constant\n */\nconst NoToneMapping = 0;\n\n/**\n * Linear tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst LinearToneMapping = 1;\n\n/**\n * Reinhard tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst ReinhardToneMapping = 2;\n\n/**\n * Cineon tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst CineonToneMapping = 3;\n\n/**\n * ACES Filmic tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst ACESFilmicToneMapping = 4;\n\n/**\n * Custom tone mapping.\n *\n * Expects a custom implementation by modifying shader code of the material's fragment shader.\n *\n * @type {number}\n * @constant\n */\nconst CustomToneMapping = 5;\n\n/**\n * AgX tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst AgXToneMapping = 6;\n\n/**\n * Neutral tone mapping.\n *\n * Implementation based on the Khronos 3D Commerce Group standard tone mapping.\n *\n * @type {number}\n * @constant\n */\nconst NeutralToneMapping = 7;\n\n/**\n * The skinned mesh shares the same world space as the skeleton.\n *\n * @type {string}\n * @constant\n */\nconst AttachedBindMode = 'attached';\n\n/**\n * The skinned mesh does not share the same world space as the skeleton.\n * This is useful when a skeleton is shared across multiple skinned meshes.\n *\n * @type {string}\n * @constant\n */\nconst DetachedBindMode = 'detached';\n\n/**\n * Maps textures using the geometry's UV coordinates.\n *\n * @type {number}\n * @constant\n */\nconst UVMapping = 300;\n\n/**\n * Reflection mapping for cube textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeReflectionMapping = 301;\n\n/**\n * Refraction mapping for cube textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeRefractionMapping = 302;\n\n/**\n * Reflection mapping for equirectangular textures.\n *\n * @type {number}\n * @constant\n */\nconst EquirectangularReflectionMapping = 303;\n\n/**\n * Refraction mapping for equirectangular textures.\n *\n * @type {number}\n * @constant\n */\nconst EquirectangularRefractionMapping = 304;\n\n/**\n * Reflection mapping for PMREM textures.\n *\n * @type {number}\n * @constant\n */\nconst CubeUVReflectionMapping = 306;\n\n/**\n * The texture will simply repeat to infinity.\n *\n * @type {number}\n * @constant\n */\nconst RepeatWrapping = 1000;\n\n/**\n * The last pixel of the texture stretches to the edge of the mesh.\n *\n * @type {number}\n * @constant\n */\nconst ClampToEdgeWrapping = 1001;\n\n/**\n * The texture will repeats to infinity, mirroring on each repeat.\n *\n * @type {number}\n * @constant\n */\nconst MirroredRepeatWrapping = 1002;\n\n/**\n * Returns the value of the texture element that is nearest (in Manhattan distance)\n * to the specified texture coordinates.\n *\n * @type {number}\n * @constant\n */\nconst NearestFilter = 1003;\n\n/**\n * Chooses the mipmap that most closely matches the size of the pixel being textured\n * and uses the `NearestFilter` criterion (the texel nearest to the center of the pixel)\n * to produce a texture value.\n *\n * @type {number}\n * @constant\n */\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004; // legacy\n\n/**\n * Chooses the two mipmaps that most closely match the size of the pixel being textured and\n * uses the `NearestFilter` criterion to produce a texture value from each mipmap.\n * The final texture value is a weighted average of those two values.\n *\n * @type {number}\n * @constant\n */\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005; // legacy\n\n/**\n * Returns the weighted average of the four texture elements that are closest to the specified\n * texture coordinates, and can include items wrapped or repeated from other parts of a texture,\n * depending on the values of `wrapS` and `wrapT`, and on the exact mapping.\n *\n * @type {number}\n * @constant\n */\nconst LinearFilter = 1006;\n\n/**\n * Chooses the mipmap that most closely matches the size of the pixel being textured and uses\n * the `LinearFilter` criterion (a weighted average of the four texels that are closest to the\n * center of the pixel) to produce a texture value.\n *\n * @type {number}\n * @constant\n */\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007; // legacy\n\n/**\n * Chooses the two mipmaps that most closely match the size of the pixel being textured and uses\n * the `LinearFilter` criterion to produce a texture value from each mipmap. The final texture value\n * is a weighted average of those two values.\n *\n * @type {number}\n * @constant\n */\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008; // legacy\n\n/**\n * An unsigned byte data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedByteType = 1009;\n\n/**\n * A byte data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst ByteType = 1010;\n\n/**\n * A short data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst ShortType = 1011;\n\n/**\n * An unsigned short data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShortType = 1012;\n\n/**\n * An int data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst IntType = 1013;\n\n/**\n * An unsigned int data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedIntType = 1014;\n\n/**\n * A float data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst FloatType = 1015;\n\n/**\n * A half float data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst HalfFloatType = 1016;\n\n/**\n * An unsigned short 4_4_4_4 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShort4444Type = 1017;\n\n/**\n * An unsigned short 5_5_5_1 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedShort5551Type = 1018;\n\n/**\n * An unsigned int 24_8 data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt248Type = 1020;\n\n/**\n * An unsigned int 5_9_9_9 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt5999Type = 35902;\n\n/**\n * An unsigned int 10_11_11 (packed) data type for textures.\n *\n * @type {number}\n * @constant\n */\nconst UnsignedInt101111Type = 35899;\n\n/**\n * Discards the red, green and blue components and reads just the alpha component.\n *\n * @type {number}\n * @constant\n */\nconst AlphaFormat = 1021;\n\n/**\n * Discards the alpha component and reads the red, green and blue component.\n *\n * @type {number}\n * @constant\n */\nconst RGBFormat = 1022;\n\n/**\n * Reads the red, green, blue and alpha components.\n *\n * @type {number}\n * @constant\n */\nconst RGBAFormat = 1023;\n\n/**\n * Reads each element as a single depth value, converts it to floating point, and clamps to the range `[0,1]`.\n *\n * @type {number}\n * @constant\n */\nconst DepthFormat = 1026;\n\n/**\n * Reads each element is a pair of depth and stencil values. The depth component of the pair is interpreted as\n * in `DepthFormat`. The stencil component is interpreted based on the depth + stencil internal format.\n *\n * @type {number}\n * @constant\n */\nconst DepthStencilFormat = 1027;\n\n/**\n * Discards the green, blue and alpha components and reads just the red component.\n *\n * @type {number}\n * @constant\n */\nconst RedFormat = 1028;\n\n/**\n * Discards the green, blue and alpha components and reads just the red component. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RedIntegerFormat = 1029;\n\n/**\n * Discards the alpha, and blue components and reads the red, and green components.\n *\n * @type {number}\n * @constant\n */\nconst RGFormat = 1030;\n\n/**\n * Discards the alpha, and blue components and reads the red, and green components. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGIntegerFormat = 1031;\n\n/**\n * Discards the alpha component and reads the red, green and blue component. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGBIntegerFormat = 1032;\n\n/**\n * Reads the red, green, blue and alpha components. The texels are read as integers instead of floating point.\n *\n * @type {number}\n * @constant\n */\nconst RGBAIntegerFormat = 1033;\n\n/**\n * A DXT1-compressed image in an RGB image format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_S3TC_DXT1_Format = 33776;\n\n/**\n * A DXT1-compressed image in an RGB image format with a simple on/off alpha value.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT1_Format = 33777;\n\n/**\n * A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT3_Format = 33778;\n\n/**\n * A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3\n * compression in how the alpha compression is done.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_S3TC_DXT5_Format = 33779;\n\n/**\n * PVRTC RGB compression in 4-bit mode. One block for each 4×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGB_PVRTC_4BPPV1_Format = 35840;\n\n/**\n * PVRTC RGB compression in 2-bit mode. One block for each 8×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGB_PVRTC_2BPPV1_Format = 35841;\n\n/**\n * PVRTC RGBA compression in 4-bit mode. One block for each 4×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\n\n/**\n * PVRTC RGBA compression in 2-bit mode. One block for each 8×4 pixels.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\n\n/**\n * ETC1 RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_ETC1_Format = 36196;\n\n/**\n * ETC2 RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_ETC2_Format = 37492;\n\n/**\n * ETC2 RGBA format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ETC2_EAC_Format = 37496;\n\n/**\n * ASTC RGBA 4x4 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_4x4_Format = 37808;\n\n/**\n * ASTC RGBA 5x4 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_5x4_Format = 37809;\n\n/**\n * ASTC RGBA 5x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_5x5_Format = 37810;\n\n/**\n * ASTC RGBA 6x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_6x5_Format = 37811;\n\n/**\n * ASTC RGBA 6x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_6x6_Format = 37812;\n\n/**\n * ASTC RGBA 8x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x5_Format = 37813;\n\n/**\n * ASTC RGBA 8x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x6_Format = 37814;\n\n/**\n * ASTC RGBA 8x8 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_8x8_Format = 37815;\n\n/**\n * ASTC RGBA 10x5 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x5_Format = 37816;\n\n/**\n * ASTC RGBA 10x6 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x6_Format = 37817;\n\n/**\n * ASTC RGBA 10x8 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x8_Format = 37818;\n\n/**\n * ASTC RGBA 10x10 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_10x10_Format = 37819;\n\n/**\n * ASTC RGBA 12x10 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_12x10_Format = 37820;\n\n/**\n * ASTC RGBA 12x12 format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_ASTC_12x12_Format = 37821;\n\n/**\n * BPTC RGBA format.\n *\n * @type {number}\n * @constant\n */\nconst RGBA_BPTC_Format = 36492;\n\n/**\n * BPTC Signed RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_BPTC_SIGNED_Format = 36494;\n\n/**\n * BPTC Unsigned RGB format.\n *\n * @type {number}\n * @constant\n */\nconst RGB_BPTC_UNSIGNED_Format = 36495;\n\n/**\n * RGTC1 Red format.\n *\n * @type {number}\n * @constant\n */\nconst RED_RGTC1_Format = 36283;\n\n/**\n * RGTC1 Signed Red format.\n *\n * @type {number}\n * @constant\n */\nconst SIGNED_RED_RGTC1_Format = 36284;\n\n/**\n * RGTC2 Red Green format.\n *\n * @type {number}\n * @constant\n */\nconst RED_GREEN_RGTC2_Format = 36285;\n\n/**\n * RGTC2 Signed Red Green format.\n *\n * @type {number}\n * @constant\n */\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\n\n/**\n * Animations are played once.\n *\n * @type {number}\n * @constant\n */\nconst LoopOnce = 2200;\n\n/**\n * Animations are played with a chosen number of repetitions, each time jumping from\n * the end of the clip directly to its beginning.\n *\n * @type {number}\n * @constant\n */\nconst LoopRepeat = 2201;\n\n/**\n * Animations are played with a chosen number of repetitions, alternately playing forward\n * and backward.\n *\n * @type {number}\n * @constant\n */\nconst LoopPingPong = 2202;\n\n/**\n * Discrete interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateDiscrete = 2300;\n\n/**\n * Linear interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateLinear = 2301;\n\n/**\n * Smooth interpolation mode for keyframe tracks.\n *\n * @type {number}\n * @constant\n */\nconst InterpolateSmooth = 2302;\n\n/**\n * Zero curvature ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst ZeroCurvatureEnding = 2400;\n\n/**\n * Zero slope ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst ZeroSlopeEnding = 2401;\n\n/**\n * Wrap around ending for animations.\n *\n * @type {number}\n * @constant\n */\nconst WrapAroundEnding = 2402;\n\n/**\n * Default animation blend mode.\n *\n * @type {number}\n * @constant\n */\nconst NormalAnimationBlendMode = 2500;\n\n/**\n * Additive animation blend mode. Can be used to layer motions on top of\n * each other to build complex performances from smaller re-usable assets.\n *\n * @type {number}\n * @constant\n */\nconst AdditiveAnimationBlendMode = 2501;\n\n/**\n * For every three vertices draw a single triangle.\n *\n * @type {number}\n * @constant\n */\nconst TrianglesDrawMode = 0;\n\n/**\n * For each vertex draw a triangle from the last three vertices.\n *\n * @type {number}\n * @constant\n */\nconst TriangleStripDrawMode = 1;\n\n/**\n * For each vertex draw a triangle from the first vertex and the last two vertices.\n *\n * @type {number}\n * @constant\n */\nconst TriangleFanDrawMode = 2;\n\n/**\n * Basic depth packing.\n *\n * @type {number}\n * @constant\n */\nconst BasicDepthPacking = 3200;\n\n/**\n * A depth value is packed into 32 bit RGBA.\n *\n * @type {number}\n * @constant\n */\nconst RGBADepthPacking = 3201;\n\n/**\n * A depth value is packed into 24 bit RGB.\n *\n * @type {number}\n * @constant\n */\nconst RGBDepthPacking = 3202;\n\n/**\n * A depth value is packed into 16 bit RG.\n *\n * @type {number}\n * @constant\n */\nconst RGDepthPacking = 3203;\n\n/**\n * Normal information is relative to the underlying surface.\n *\n * @type {number}\n * @constant\n */\nconst TangentSpaceNormalMap = 0;\n\n/**\n * Normal information is relative to the object orientation.\n *\n * @type {number}\n * @constant\n */\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\n\n/**\n * No color space.\n *\n * @type {string}\n * @constant\n */\nconst NoColorSpace = '';\n\n/**\n * sRGB color space.\n *\n * @type {string}\n * @constant\n */\nconst SRGBColorSpace = 'srgb';\n\n/**\n * sRGB-linear color space.\n *\n * @type {string}\n * @constant\n */\nconst LinearSRGBColorSpace = 'srgb-linear';\n\n/**\n * Linear transfer function.\n *\n * @type {string}\n * @constant\n */\nconst LinearTransfer = 'linear';\n\n/**\n * sRGB transfer function.\n *\n * @type {string}\n * @constant\n */\nconst SRGBTransfer = 'srgb';\n\n/**\n * Sets the stencil buffer value to `0`.\n *\n * @type {number}\n * @constant\n */\nconst ZeroStencilOp = 0;\n\n/**\n * Keeps the current value.\n *\n * @type {number}\n * @constant\n */\nconst KeepStencilOp = 7680;\n\n/**\n * Sets the stencil buffer value to the specified reference value.\n *\n * @type {number}\n * @constant\n */\nconst ReplaceStencilOp = 7681;\n\n/**\n * Increments the current stencil buffer value. Clamps to the maximum representable unsigned value.\n *\n * @type {number}\n * @constant\n */\nconst IncrementStencilOp = 7682;\n\n/**\n * Decrements the current stencil buffer value. Clamps to `0`.\n *\n * @type {number}\n * @constant\n */\nconst DecrementStencilOp = 7683;\n\n/**\n * Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing\n * the maximum representable unsigned value.\n *\n * @type {number}\n * @constant\n */\nconst IncrementWrapStencilOp = 34055;\n\n/**\n * Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable\n * unsigned value when decrementing a stencil buffer value of `0`.\n *\n * @type {number}\n * @constant\n */\nconst DecrementWrapStencilOp = 34056;\n\n/**\n * Inverts the current stencil buffer value bitwise.\n *\n * @type {number}\n * @constant\n */\nconst InvertStencilOp = 5386;\n\n/**\n * Will never return true.\n *\n * @type {number}\n * @constant\n */\nconst NeverStencilFunc = 512;\n\n/**\n * Will return true if the stencil reference value is less than the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst LessStencilFunc = 513;\n\n/**\n * Will return true if the stencil reference value is equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst EqualStencilFunc = 514;\n\n/**\n * Will return true if the stencil reference value is less than or equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualStencilFunc = 515;\n\n/**\n * Will return true if the stencil reference value is greater than the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterStencilFunc = 516;\n\n/**\n * Will return true if the stencil reference value is not equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualStencilFunc = 517;\n\n/**\n * Will return true if the stencil reference value is greater than or equal to the current stencil value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualStencilFunc = 518;\n\n/**\n * Will always return true.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysStencilFunc = 519;\n\n/**\n * Never pass.\n *\n * @type {number}\n * @constant\n */\nconst NeverCompare = 512;\n\n/**\n * Pass if the incoming value is less than the texture value.\n *\n * @type {number}\n * @constant\n */\nconst LessCompare = 513;\n\n/**\n * Pass if the incoming value equals the texture value.\n *\n * @type {number}\n * @constant\n */\nconst EqualCompare = 514;\n\n/**\n * Pass if the incoming value is less than or equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst LessEqualCompare = 515;\n\n/**\n * Pass if the incoming value is greater than the texture value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterCompare = 516;\n\n/**\n * Pass if the incoming value is not equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst NotEqualCompare = 517;\n\n/**\n * Pass if the incoming value is greater than or equal to the texture value.\n *\n * @type {number}\n * @constant\n */\nconst GreaterEqualCompare = 518;\n\n/**\n * Always pass.\n *\n * @type {number}\n * @constant\n */\nconst AlwaysCompare = 519;\n\n/**\n * The contents are intended to be specified once by the application, and used many\n * times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StaticDrawUsage = 35044;\n\n/**\n * The contents are intended to be respecified repeatedly by the application, and\n * used many times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst DynamicDrawUsage = 35048;\n\n/**\n * The contents are intended to be specified once by the application, and used at most\n * a few times as the source for drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StreamDrawUsage = 35040;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and queried\n * many times by the application.\n *\n * @type {number}\n * @constant\n */\nconst StaticReadUsage = 35045;\n\n/**\n * The contents are intended to be respecified repeatedly by reading data from the 3D API, and queried\n * many times by the application.\n *\n * @type {number}\n * @constant\n */\nconst DynamicReadUsage = 35049;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and queried at most\n * a few times by the application\n *\n * @type {number}\n * @constant\n */\nconst StreamReadUsage = 35041;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and used many times as\n * the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StaticCopyUsage = 35046;\n\n/**\n * The contents are intended to be respecified repeatedly by reading data from the 3D API, and used many times\n * as the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst DynamicCopyUsage = 35050;\n\n/**\n * The contents are intended to be specified once by reading data from the 3D API, and used at most a few times\n * as the source for WebGL drawing and image specification commands.\n *\n * @type {number}\n * @constant\n */\nconst StreamCopyUsage = 35042;\n\n/**\n * GLSL 1 shader code.\n *\n * @type {string}\n * @constant\n */\nconst GLSL1 = '100';\n\n/**\n * GLSL 3 shader code.\n *\n * @type {string}\n * @constant\n */\nconst GLSL3 = '300 es';\n\n/**\n * WebGL coordinate system.\n *\n * @type {number}\n * @constant\n */\nconst WebGLCoordinateSystem = 2000;\n\n/**\n * WebGPU coordinate system.\n *\n * @type {number}\n * @constant\n */\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * Represents the different timestamp query types.\n *\n * @type {ConstantsTimestampQuery}\n * @constant\n */\nconst TimestampQuery = {\n\tCOMPUTE: 'compute',\n\tRENDER: 'render'\n};\n\n/**\n * Represents mouse buttons and interaction types in context of controls.\n *\n * @type {ConstantsInterpolationSamplingType}\n * @constant\n */\nconst InterpolationSamplingType = {\n\tPERSPECTIVE: 'perspective',\n\tLINEAR: 'linear',\n\tFLAT: 'flat'\n};\n\n/**\n * Represents the different interpolation sampling modes.\n *\n * @type {ConstantsInterpolationSamplingMode}\n * @constant\n */\nconst InterpolationSamplingMode = {\n\tNORMAL: 'normal',\n\tCENTROID: 'centroid',\n\tSAMPLE: 'sample',\n\tFIRST: 'first',\n\tEITHER: 'either'\n};\n\n/**\n * This type represents mouse buttons and interaction types in context of controls.\n *\n * @typedef {Object} ConstantsMouse\n * @property {number} MIDDLE - The left mouse button.\n * @property {number} LEFT - The middle mouse button.\n * @property {number} RIGHT - The right mouse button.\n * @property {number} ROTATE - A rotate interaction.\n * @property {number} DOLLY - A dolly interaction.\n * @property {number} PAN - A pan interaction.\n **/\n\n/**\n * This type represents touch interaction types in context of controls.\n *\n * @typedef {Object} ConstantsTouch\n * @property {number} ROTATE - A rotate interaction.\n * @property {number} PAN - A pan interaction.\n * @property {number} DOLLY_PAN - The dolly-pan interaction.\n * @property {number} DOLLY_ROTATE - A dolly-rotate interaction.\n **/\n\n/**\n * This type represents the different timestamp query types.\n *\n * @typedef {Object} ConstantsTimestampQuery\n * @property {string} COMPUTE - A `compute` timestamp query.\n * @property {string} RENDER - A `render` timestamp query.\n **/\n\n/**\n * Represents the different interpolation sampling types.\n *\n * @typedef {Object} ConstantsInterpolationSamplingType\n * @property {string} PERSPECTIVE - Perspective-correct interpolation.\n * @property {string} LINEAR - Linear interpolation.\n * @property {string} FLAT - Flat interpolation.\n */\n\n/**\n * Represents the different interpolation sampling modes.\n *\n * @typedef {Object} ConstantsInterpolationSamplingMode\n * @property {string} NORMAL - Normal sampling mode.\n * @property {string} CENTROID - Centroid sampling mode.\n * @property {string} SAMPLE - Sample-specific sampling mode.\n * @property {string} FIRST - Flat interpolation using the first vertex.\n * @property {string} EITHER - Flat interpolation using either vertex.\n */\n\n/**\n * This modules allows to dispatch event objects on custom JavaScript objects.\n *\n * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}\n *\n * Code Example:\n * ```js\n * class Car extends EventDispatcher {\n * \tstart() {\n *\t\tthis.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );\n *\t}\n *};\n *\n * // Using events with the custom object\n * const car = new Car();\n * car.addEventListener( 'start', function ( event ) {\n * \talert( event.message );\n * } );\n *\n * car.start();\n * ```\n */\nclass EventDispatcher {\n\n\t/**\n\t * Adds the given event listener to the given event type.\n\t *\n\t * @param {string} type - The type of event to listen to.\n\t * @param {Function} listener - The function that gets called when the event is fired.\n\t */\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === -1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns `true` if the given event listener has been added to the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to check.\n\t * @return {boolean} Whether the given event listener has been added to the given event type.\n\t */\n\thasEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return false;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== -1;\n\n\t}\n\n\t/**\n\t * Removes the given event listener from the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to remove.\n\t */\n\tremoveEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event object.\n\t *\n\t * @param {Object} event - The event that gets fired.\n\t */\n\tdispatchEvent( event ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n/**\n * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n * (universally unique identifier).\n *\n * @return {string} The UUID.\n */\nfunction generateUUID() {\n\n\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\n/**\n * Clamps the given value between min and max.\n *\n * @param {number} value - The value to clamp.\n * @param {number} min - The min value.\n * @param {number} max - The max value.\n * @return {number} The clamped value.\n */\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n/**\n * Computes the Euclidean modulo of the given parameters that\n * is `( ( n % m ) + m ) % m`.\n *\n * @param {number} n - The first parameter.\n * @param {number} m - The second parameter.\n * @return {number} The Euclidean modulo.\n */\nfunction euclideanModulo( n, m ) {\n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n/**\n * Performs a linear mapping from range `` to range ``\n * for the given value.\n *\n * @param {number} x - The value to be mapped.\n * @param {number} a1 - Minimum value for range A.\n * @param {number} a2 - Maximum value for range A.\n * @param {number} b1 - Minimum value for range B.\n * @param {number} b2 - Maximum value for range B.\n * @return {number} The mapped value.\n */\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n/**\n * Returns the percentage in the closed interval `[0, 1]` of the given value\n * between the start and end point.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} value - A value between start and end.\n * @return {number} The interpolation factor.\n */\nfunction inverseLerp( x, y, value ) {\n\n\t// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n/**\n * Returns a value linearly interpolated from two known points based on the given interval -\n * `t = 0` will return `x` and `t = 1` will return `y`.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {number} The interpolated value.\n */\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n/**\n * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta\n * time to maintain frame rate independent movement. For details, see\n * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.\n *\n * @param {number} x - The current point.\n * @param {number} y - The target point.\n * @param {number} lambda - A higher lambda value will make the movement more sudden,\n * and a lower value will make the movement more gradual.\n * @param {number} dt - Delta time in seconds.\n * @return {number} The interpolated value.\n */\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n/**\n * Returns a value that alternates between `0` and the given `length` parameter.\n *\n * @param {number} x - The value to pingpong.\n * @param {number} [length=1] - The positive value the function will pingpong to.\n * @return {number} The alternated value.\n */\nfunction pingpong( x, length = 1 ) {\n\n\t// https://www.desmos.com/calculator/vcsjnyz7x4\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n/**\n * Returns a value in the range `[0,1]` that represents the percentage that `x` has\n * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to\n * the `min` and `max`.\n *\n * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\n/**\n * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}\n * that has zero 1st and 2nd order derivatives at x=0 and x=1.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n/**\n * Returns a random integer from `` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random integer.\n */\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n/**\n * Returns a random float from `` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random float.\n */\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n/**\n * Returns a random integer from `<-range/2, range/2>` interval.\n *\n * @param {number} range - Defines the value range.\n * @return {number} A random float.\n */\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n/**\n * Returns a deterministic pseudo-random float in the interval `[0, 1]`.\n *\n * @param {number} [s] - The integer seed.\n * @return {number} A random float.\n */\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} degrees - A value in degrees.\n * @return {number} The converted value in radians.\n */\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\n/**\n * Converts radians to degrees.\n *\n * @param {number} radians - A value in radians.\n * @return {number} The converted value in degrees.\n */\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\n/**\n * Returns `true` if the given number is a power of two.\n *\n * @param {number} value - The value to check.\n * @return {boolean} Whether the given number is a power of two or not.\n */\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\n/**\n * Returns the smallest power of two that is greater than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The smallest power of two that is greater than or equal to the given number.\n */\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Returns the largest power of two that is less than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The largest power of two that is less than or equal to the given number.\n */\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}\n * defined by the given angles and order.\n *\n * Rotations are applied to the axes in the order specified by order:\n * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.\n *\n * @param {Quaternion} q - The quaternion to set.\n * @param {number} a - The rotation applied to the first axis, in radians.\n * @param {number} b - The rotation applied to the second axis, in radians.\n * @param {number} c - The rotation applied to the third axis, in radians.\n * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.\n */\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\n/**\n * Denormalizes the given value according to the given typed array.\n *\n * @param {number} value - The value to denormalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The denormalize (float) value in the range `[0,1]`.\n */\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, -1 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, -1 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, -1 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n/**\n * Normalizes the given value according to the given typed array.\n *\n * @param {number} value - The float value in the range `[0,1]` to normalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The normalize value.\n */\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n/**\n * @class\n * @classdesc A collection of math utility functions.\n * @hideconstructor\n */\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\t/**\n\t * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n\t * (universally unique identifier).\n\t *\n\t * @static\n\t * @method\n\t * @return {string} The UUID.\n\t */\n\tgenerateUUID: generateUUID,\n\t/**\n\t * Clamps the given value between min and max.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to clamp.\n\t * @param {number} min - The min value.\n\t * @param {number} max - The max value.\n\t * @return {number} The clamped value.\n\t */\n\tclamp: clamp,\n\t/**\n\t * Computes the Euclidean modulo of the given parameters that\n\t * is `( ( n % m ) + m ) % m`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} n - The first parameter.\n\t * @param {number} m - The second parameter.\n\t * @return {number} The Euclidean modulo.\n\t */\n\teuclideanModulo: euclideanModulo,\n\t/**\n\t * Performs a linear mapping from range `` to range ``\n\t * for the given value.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to be mapped.\n\t * @param {number} a1 - Minimum value for range A.\n\t * @param {number} a2 - Maximum value for range A.\n\t * @param {number} b1 - Minimum value for range B.\n\t * @param {number} b2 - Maximum value for range B.\n\t * @return {number} The mapped value.\n\t */\n\tmapLinear: mapLinear,\n\t/**\n\t * Returns the percentage in the closed interval `[0, 1]` of the given value\n\t * between the start and end point.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The start point\n\t * @param {number} y - The end point.\n\t * @param {number} value - A value between start and end.\n\t * @return {number} The interpolation factor.\n\t */\n\tinverseLerp: inverseLerp,\n\t/**\n\t * Returns a value linearly interpolated from two known points based on the given interval -\n\t * `t = 0` will return `x` and `t = 1` will return `y`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The start point\n\t * @param {number} y - The end point.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {number} The interpolated value.\n\t */\n\tlerp: lerp,\n\t/**\n\t * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta\n\t * time to maintain frame rate independent movement. For details, see\n\t * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The current point.\n\t * @param {number} y - The target point.\n\t * @param {number} lambda - A higher lambda value will make the movement more sudden,\n\t * and a lower value will make the movement more gradual.\n\t * @param {number} dt - Delta time in seconds.\n\t * @return {number} The interpolated value.\n\t */\n\tdamp: damp,\n\t/**\n\t * Returns a value that alternates between `0` and the given `length` parameter.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to pingpong.\n\t * @param {number} [length=1] - The positive value the function will pingpong to.\n\t * @return {number} The alternated value.\n\t */\n\tpingpong: pingpong,\n\t/**\n\t * Returns a value in the range `[0,1]` that represents the percentage that `x` has\n\t * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to\n\t * the `min` and `max`.\n\t *\n\t * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to evaluate based on its position between min and max.\n\t * @param {number} min - The min value. Any x value below min will be `0`.\n\t * @param {number} max - The max value. Any x value above max will be `1`.\n\t * @return {number} The alternated value.\n\t */\n\tsmoothstep: smoothstep,\n\t/**\n\t * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}\n\t * that has zero 1st and 2nd order derivatives at x=0 and x=1.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} x - The value to evaluate based on its position between min and max.\n\t * @param {number} min - The min value. Any x value below min will be `0`.\n\t * @param {number} max - The max value. Any x value above max will be `1`.\n\t * @return {number} The alternated value.\n\t */\n\tsmootherstep: smootherstep,\n\t/**\n\t * Returns a random integer from `` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} low - The lower value boundary.\n\t * @param {number} high - The upper value boundary\n\t * @return {number} A random integer.\n\t */\n\trandInt: randInt,\n\t/**\n\t * Returns a random float from `` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} low - The lower value boundary.\n\t * @param {number} high - The upper value boundary\n\t * @return {number} A random float.\n\t */\n\trandFloat: randFloat,\n\t/**\n\t * Returns a random integer from `<-range/2, range/2>` interval.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} range - Defines the value range.\n\t * @return {number} A random float.\n\t */\n\trandFloatSpread: randFloatSpread,\n\t/**\n\t * Returns a deterministic pseudo-random float in the interval `[0, 1]`.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} [s] - The integer seed.\n\t * @return {number} A random float.\n\t */\n\tseededRandom: seededRandom,\n\t/**\n\t * Converts degrees to radians.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} degrees - A value in degrees.\n\t * @return {number} The converted value in radians.\n\t */\n\tdegToRad: degToRad,\n\t/**\n\t * Converts radians to degrees.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} radians - A value in radians.\n\t * @return {number} The converted value in degrees.\n\t */\n\tradToDeg: radToDeg,\n\t/**\n\t * Returns `true` if the given number is a power of two.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to check.\n\t * @return {boolean} Whether the given number is a power of two or not.\n\t */\n\tisPowerOfTwo: isPowerOfTwo,\n\t/**\n\t * Returns the smallest power of two that is greater than or equal to the given number.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to find a POT for.\n\t * @return {number} The smallest power of two that is greater than or equal to the given number.\n\t */\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\t/**\n\t * Returns the largest power of two that is less than or equal to the given number.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to find a POT for.\n\t * @return {number} The largest power of two that is less than or equal to the given number.\n\t */\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\t/**\n\t * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}\n\t * defined by the given angles and order.\n\t *\n\t * Rotations are applied to the axes in the order specified by order:\n\t * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.\n\t *\n\t * @static\n\t * @method\n\t * @param {Quaternion} q - The quaternion to set.\n\t * @param {number} a - The rotation applied to the first axis, in radians.\n\t * @param {number} b - The rotation applied to the second axis, in radians.\n\t * @param {number} c - The rotation applied to the third axis, in radians.\n\t * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.\n\t */\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\t/**\n\t * Normalizes the given value according to the given typed array.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The float value in the range `[0,1]` to normalize.\n\t * @param {TypedArray} array - The typed array that defines the data type of the value.\n\t * @return {number} The normalize value.\n\t */\n\tnormalize: normalize,\n\t/**\n\t * Denormalizes the given value according to the given typed array.\n\t *\n\t * @static\n\t * @method\n\t * @param {number} value - The value to denormalize.\n\t * @param {TypedArray} array - The typed array that defines the data type of the value.\n\t * @return {number} The denormalize (float) value in the range `[0,1]`.\n\t */\n\tdenormalize: denormalize\n};\n\n/**\n * Class representing a 2D vector. A 2D vector is an ordered pair of numbers\n * (labeled x and y), which can be used to represent a number of things, such as:\n *\n * - A point in 2D space (i.e. a position on a plane).\n * - A direction and length across a plane. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0)` to `(x, y)`\n * and the direction is also measured from `(0, 0)` towards `(x, y)`.\n * - Any arbitrary ordered pair of numbers.\n *\n * There are other things a 2D vector can be used to represent, such as\n * momentum vectors, complex numbers and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector2( 0, 1 );\n *\n * //no arguments; will be initialised to (0, 0)\n * const b = new THREE.Vector2( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector2 {\n\n\t/**\n\t * Constructs a new 2D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t */\n\tconstructor( x = 0, y = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector2.prototype.isVector2 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#x}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#y}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @param {number} value - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to copy.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector2} v - The vector to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector2} v - The vector to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 as the 3rd component) by\n\t * the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to apply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the given vector's x or y\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is less than the given vector's x or y\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the max vector's x or y\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x or y value is less than the min vector's x or y value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector2} min - The minimum x and y values.\n\t * @param {Vector2} max - The maximum x and y values in the desired range.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x or y values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x and y = -y.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the cross product with.\n\t * @return {number} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0) to (x, y). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0) to (x, y).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Computes the angle in radians of this vector with respect to the positive x-axis.\n\t *\n\t * @return {number} The angle in radians.\n\t */\n\tangle() {\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector2} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector2} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector2} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector2} v1 - The first vector.\n\t * @param {Vector2} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector2} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]` and y\n\t * value to be `array[ offset + 1 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this vector around the given center by the given angle.\n\t *\n\t * @param {Vector2} center - The point around which to rotate.\n\t * @param {number} angle - The angle to rotate, in radians.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\n/**\n * Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n *\n * Note that three.js expects Quaternions to be normalized.\n * ```js\n * const quaternion = new THREE.Quaternion();\n * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );\n *\n * const vector = new THREE.Vector3( 1, 0, 0 );\n * vector.applyQuaternion( quaternion );\n * ```\n */\nclass Quaternion {\n\n\t/**\n\t * Constructs a new quaternion.\n\t *\n\t * @param {number} [x=0] - The x value of this quaternion.\n\t * @param {number} [y=0] - The y value of this quaternion.\n\t * @param {number} [z=0] - The z value of this quaternion.\n\t * @param {number} [w=1] - The w value of this quaternion.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\t/**\n\t * Interpolates between two quaternions via SLERP. This implementation assumes the\n\t * quaternion data are managed in flat arrays.\n\t *\n\t * @param {Array} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array} src1 - The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @param {number} t - The interpolation factor in the range `[0,1]`.\n\t * @see {@link Quaternion#slerp}\n\t */\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : -1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\t/**\n\t * Multiplies two quaternions. This implementation assumes the quaternion data are managed\n\t * in flat arrays.\n\t *\n\t * @param {Array} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array} src1 - The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @return {Array} The destination array.\n\t * @see {@link Quaternion#multiplyQuaternions}.\n\t */\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\t/**\n\t * The x value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The y value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The z value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The w value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 1\n\t */\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the quaternion components.\n\t *\n\t * @param {number} x - The x value of this quaternion.\n\t * @param {number} y - The y value of this quaternion.\n\t * @param {number} z - The z value of this quaternion.\n\t * @param {number} w - The w value of this quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new quaternion with copied values from this instance.\n\t *\n\t * @return {Quaternion} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given quaternion to this instance.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to copy.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the rotation specified by the given\n\t * Euler angles.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given axis and angle.\n\t *\n\t * @param {Vector3} axis - The normalized axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the rotation required to rotate the direction vector\n\t * `vFrom` to the direction vector `vTo`.\n\t *\n\t * @param {Vector3} vFrom - The first (normalized) direction vector.\n\t * @param {Vector3} vTo - The second (normalized) direction vector.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < 1e-8 ) { // the epsilon value has been discussed in #31286\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Returns the angle between this quaternion and the given one in radians.\n\t *\n\t * @param {Quaternion} q - The quaternion to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), -1, 1 ) ) );\n\n\t}\n\n\t/**\n\t * Rotates this quaternion by a given angular step to the given quaternion.\n\t * The method ensures that the final quaternion will not overshoot `q`.\n\t *\n\t * @param {Quaternion} q - The target quaternion.\n\t * @param {number} step - The angular step in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the identity quaternion; that is, to the\n\t * quaternion that represents \"no rotation\".\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\t/**\n\t * Inverts this quaternion via {@link Quaternion#conjugate}. The\n\t * quaternion is assumed to have unit length.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tinvert() {\n\n\t\treturn this.conjugate();\n\n\t}\n\n\t/**\n\t * Returns the rotational conjugate of this quaternion. The conjugate of a\n\t * quaternion represents the same rotation in the opposite direction about\n\t * the rotational axis.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tconjugate() {\n\n\t\tthis._x *= -1;\n\t\tthis._y *= -1;\n\t\tthis._z *= -1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of this quaternion and the given one.\n\t *\n\t * @param {Quaternion} v - The quaternion to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\t/**\n\t * Computes the squared Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector. This can be useful if you are comparing the\n\t * lengths of two quaternions, as this is a slightly more efficient calculation than\n\t * {@link Quaternion#length}.\n\t *\n\t * @return {number} The squared Euclidean length.\n\t */\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector.\n\t *\n\t * @return {number} The Euclidean length.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\t/**\n\t * Normalizes this quaternion - that is, calculated the quaternion that performs\n\t * the same rotation as this one, but has a length equal to `1`.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\t/**\n\t * Multiplies the given quaternions and stores the result in this instance.\n\t *\n\t * @param {Quaternion} a - The first quaternion.\n\t * @param {Quaternion} b - The second quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between quaternions.\n\t *\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between the given quaternions\n\t * and stores the result in this quaternion.\n\t *\n\t * @param {Quaternion} qa - The source quaternion.\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\t/**\n\t * Sets this quaternion to a uniformly random, normalized quaternion.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trandom() {\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if this quaternion is equal with the given one.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to test for equality.\n\t * @return {boolean} Whether this quaternion is equal with the given one.\n\t */\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\t/**\n\t * Sets this quaternion's components from the given array.\n\t *\n\t * @param {Array} array - An array holding the quaternion component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this quaternion to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the quaternion components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The quaternion components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this quaternion from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the\n\t * numerical elements of this quaternion in an array of format `[x, y, z, w]`.\n\t *\n\t * @return {Array} The serialized quaternion.\n\t */\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\n/**\n * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers\n * (labeled x, y and z), which can be used to represent a number of things, such as:\n *\n * - A point in 3D space.\n * - A direction and length in 3D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0)` to `(x, y, z)`\n * and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`.\n * - Any arbitrary ordered triplet of numbers.\n *\n * There are other things a 3D vector can be used to represent, such as\n * momentum vectors and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y, z)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector3( 0, 1, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0)\n * const b = new THREE.Vector3( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector3 {\n\n\t/**\n\t * Constructs a new 3D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector3.prototype.isVector3 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @param {number} value - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to copy.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector3} v - The vector to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Euler rotation to this vector.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\t/**\n\t * Applies a rotation specified by an axis and an angle to this vector.\n\t *\n\t * @param {Vector3} axis - A normalized vector representing the rotation axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector by the given normal matrix and normalizes\n\t * the result.\n\t *\n\t * @param {Matrix3} m - The normal matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and\n\t * divides by perspective.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Quaternion to this vector.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector from world space into the camera's normalized\n\t * device coordinate (NDC) space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\t/**\n\t * Unprojects this vector from the camera's normalized device coordinate (NDC)\n\t * space into world space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\t/**\n\t * Transforms the direction of this vector by a matrix (the upper left 3 x 3\n\t * subset of the given 4x4 matrix and then normalizes the result.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector3} v - The vector to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the given vector's x, y or z\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is less than the given vector's x, y or z\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the max vector's x, y or z\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y or z value is less than the min vector's x, y or z value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector3} min - The minimum x, y and z values.\n\t * @param {Vector3} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y or z values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y and z = -z.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector3} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector3} v1 - The first vector.\n\t * @param {Vector3} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the cross product with.\n\t * @return {Vector3} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vectors and stores the result\n\t * in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector onto the given one.\n\t *\n\t * @param {Vector3} v - The vector to project to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\t/**\n\t * Projects this vector onto a plane by subtracting this\n\t * vector projected onto the plane's normal from this vector.\n\t *\n\t * @param {Vector3} planeNormal - The plane normal.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\t/**\n\t * Reflects this vector off a plane orthogonal to the given normal vector.\n\t *\n\t * @param {Vector3} normal - The (normalized) normal vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\treflect( normal ) {\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector3} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector3} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {Spherical} s - The spherical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The phi angle in radians.\n\t * @param {number} theta - The theta angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {Cylindrical} c - The cylindrical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle in radians.\n\t * @param {number} y - The y value.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the scale elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given Euler angles.\n\t *\n\t * @param {Euler} e - The Euler angles to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the RGB components of the\n\t * given color.\n\t *\n\t * @param {Color} c - The color to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector3} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`\n\t * and z value to be `array[ offset + 2 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this vector to a uniformly random point on a unit sphere.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\n/**\n * Represents a 3x3 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix();\n * m.set( 11, 12, 13,\n * 21, 22, 23,\n * 31, 32, 33 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31,\n * 12, 22, 32,\n * 13, 23, 33 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix3 {\n\n\t/**\n\t * Constructs a new 3x3 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 3x3 identity matrix.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix3} m - The matrix to copy.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 3x3 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix3} a - The first matrix.\n\t * @param {Matrix3} b - The second matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the normal matrix which is the inverse transpose of the upper\n\t * left 3x3 portion of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\t/**\n\t * Transposes this matrix into the supplied array, and returns itself unchanged.\n\t *\n\t * @param {Array} r - An array to store the transposed matrix elements.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the UV transform matrix from offset, repeat, rotation, and center.\n\t *\n\t * @param {number} tx - Offset x.\n\t * @param {number} ty - Offset y.\n\t * @param {number} sx - Repeat x.\n\t * @param {number} sy - Repeat y.\n\t * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise.\n\t * @param {number} cx - Center x of rotation.\n\t * @param {number} cy - Center y of rotation\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this matrix with the given scalar values.\n\t *\n\t * @param {number} sx - The amount to scale in the X axis.\n\t * @param {number} sy - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this matrix by the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates this matrix by the given scalar values.\n\t *\n\t * @param {number} tx - The amount to translate in the X axis.\n\t * @param {number} ty - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\t/**\n\t * Sets this matrix as a 2D translation transform.\n\t *\n\t * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D rotational transformation.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D scale transform.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix3} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\nconst LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(\n\t0.4123908, 0.3575843, 0.1804808,\n\t0.2126390, 0.7151687, 0.0721923,\n\t0.0193308, 0.1191948, 0.9505322\n);\n\nconst XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set(\n\t3.2409699, -1.5373832, -0.4986108,\n\t-0.9692436, 1.8759675, 0.0415551,\n\t0.0556301, -0.203977, 1.0569715\n);\n\nfunction createColorManagement() {\n\n\tconst ColorManagement = {\n\n\t\tenabled: true,\n\n\t\tworkingColorSpace: LinearSRGBColorSpace,\n\n\t\t/**\n\t\t * Implementations of supported color spaces.\n\t\t *\n\t\t * Required:\n\t\t *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n\t\t *\t- whitePoint: reference white [ x y ]\n\t\t *\t- transfer: transfer function (pre-defined)\n\t\t *\t- toXYZ: Matrix3 RGB to XYZ transform\n\t\t *\t- fromXYZ: Matrix3 XYZ to RGB transform\n\t\t *\t- luminanceCoefficients: RGB luminance coefficients\n\t\t *\n\t\t * Optional:\n\t\t * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: 'extended' | 'standard' }\n\t\t * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n\t\t *\n\t\t * Reference:\n\t\t * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n\t\t */\n\t\tspaces: {},\n\n\t\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\t\treturn color;\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = SRGBToLinear( color.r );\n\t\t\t\tcolor.g = SRGBToLinear( color.g );\n\t\t\t\tcolor.b = SRGBToLinear( color.b );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) {\n\n\t\t\t\tcolor.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ );\n\t\t\t\tcolor.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = LinearToSRGB( color.r );\n\t\t\t\tcolor.g = LinearToSRGB( color.g );\n\t\t\t\tcolor.b = LinearToSRGB( color.b );\n\n\t\t\t}\n\n\t\t\treturn color;\n\n\t\t},\n\n\t\tworkingToColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t\t},\n\n\t\tcolorSpaceToWorking: function ( color, sourceColorSpace ) {\n\n\t\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t\t},\n\n\t\tgetPrimaries: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].primaries;\n\n\t\t},\n\n\t\tgetTransfer: function ( colorSpace ) {\n\n\t\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\t\treturn this.spaces[ colorSpace ].transfer;\n\n\t\t},\n\n\t\tgetToneMappingMode: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.toneMappingMode || 'standard';\n\n\t\t},\n\n\t\tgetLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );\n\n\t\t},\n\n\t\tdefine: function ( colorSpaces ) {\n\n\t\t\tObject.assign( this.spaces, colorSpaces );\n\n\t\t},\n\n\t\t// Internal APIs\n\n\t\t_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {\n\n\t\t\treturn targetMatrix\n\t\t\t\t.copy( this.spaces[ sourceColorSpace ].toXYZ )\n\t\t\t\t.multiply( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t},\n\n\t\t_getDrawingBufferColorSpace: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace;\n\n\t\t},\n\n\t\t_getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace;\n\n\t\t},\n\n\t\t// Deprecated\n\n\t\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\twarnOnce( 'THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177\n\n\t\t\treturn ColorManagement.workingToColorSpace( color, targetColorSpace );\n\n\t\t},\n\n\t\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\t\twarnOnce( 'THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177\n\n\t\t\treturn ColorManagement.colorSpaceToWorking( color, sourceColorSpace );\n\n\t\t},\n\n\t};\n\n\t/******************************************************************************\n\t * sRGB definitions\n\t */\n\n\tconst REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ];\n\tconst REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ];\n\tconst D65 = [ 0.3127, 0.3290 ];\n\n\tColorManagement.define( {\n\n\t\t[ LinearSRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: LinearTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\tworkingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t\t[ SRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: SRGBTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t} );\n\n\treturn ColorManagement;\n\n}\n\nconst ColorManagement = /*@__PURE__*/ createColorManagement();\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\n/**\n * A class containing utility functions for images.\n *\n * @hideconstructor\n */\nclass ImageUtils {\n\n\t/**\n\t * Returns a data URI containing a representation of the given image.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object.\n\t * @param {string} [type='image/png'] - Indicates the image format.\n\t * @return {string} The data URI.\n\t */\n\tstatic getDataURL( image, type = 'image/png' ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\treturn canvas.toDataURL( type );\n\n\t}\n\n\t/**\n\t * Converts the given sRGB image data to linear color space.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object.\n\t * @return {HTMLCanvasElement|Object} The converted image.\n\t */\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\n/**\n * Represents the data source of a texture.\n *\n * The main purpose of this class is to decouple the data definition from the texture\n * definition so the same data can be used with multiple texture instances.\n */\nclass Source {\n\n\t/**\n\t * Constructs a new video texture.\n\t *\n\t * @param {any} [data=null] - The data definition of a texture.\n\t */\n\tconstructor( data = null ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSource = true;\n\n\t\t/**\n\t\t * The ID of the source.\n\t\t *\n\t\t * @name Source#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\t/**\n\t\t * The UUID of the source.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The data definition of a texture.\n\t\t *\n\t\t * @type {any}\n\t\t */\n\t\tthis.data = data;\n\n\t\t/**\n\t\t * This property is only relevant when {@link Source#needsUpdate} is set to `true` and\n\t\t * provides more control on how texture data should be processed. When `dataReady` is set\n\t\t * to `false`, the engine performs the memory allocation (if necessary) but does not transfer\n\t\t * the data into the GPU memory.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.dataReady = true;\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Source#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * Returns the dimensions of the source into the given target vector.\n\t *\n\t * @param {(Vector2|Vector3)} target - The target object the result is written into.\n\t * @return {(Vector2|Vector3)} The dimensions of the source.\n\t */\n\tgetSize( target ) {\n\n\t\tconst data = this.data;\n\n\t\tif ( ( typeof HTMLVideoElement !== 'undefined' ) && ( data instanceof HTMLVideoElement ) ) {\n\n\t\t\ttarget.set( data.videoWidth, data.videoHeight, 0 );\n\n\t\t} else if ( data instanceof VideoFrame ) {\n\n\t\t\ttarget.set( data.displayHeight, data.displayWidth, 0 );\n\n\t\t} else if ( data !== null ) {\n\n\t\t\ttarget.set( data.width, data.height, data.depth || 0 );\n\n\t\t} else {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * When the property is set to `true`, the engine allocates the memory\n\t * for the texture (if necessary) and triggers the actual texture upload\n\t * to the GPU next time the source is used.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Serializes the source into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized source.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nconst _tempVec3 = /*@__PURE__*/ new Vector3();\n\n/**\n * Base class for all textures.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments EventDispatcher\n */\nclass Texture extends EventDispatcher {\n\n\t/**\n\t * Constructs a new texture.\n\t *\n\t * @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isTexture = true;\n\n\t\t/**\n\t\t * The ID of the texture.\n\t\t *\n\t\t * @name Texture#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The data definition of a texture. A reference to the data source can be\n\t\t * shared across textures. This is often useful in context of spritesheets\n\t\t * where multiple textures render the same data but with different texture\n\t\t * transformations.\n\t\t *\n\t\t * @type {Source}\n\t\t */\n\t\tthis.source = new Source( image );\n\n\t\t/**\n\t\t * An array holding user-defined mipmaps.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.mipmaps = [];\n\n\t\t/**\n\t\t * How the texture is applied to the object. The value `UVMapping`\n\t\t * is the default, where texture or uv coordinates are used to apply the map.\n\t\t *\n\t\t * @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)}\n\t\t * @default UVMapping\n\t\t*/\n\t\tthis.mapping = mapping;\n\n\t\t/**\n\t\t * Lets you select the uv attribute to map the texture to. `0` for `uv`,\n\t\t * `1` for `uv1`, `2` for `uv2` and `3` for `uv3`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.channel = 0;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *U* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapS = wrapS;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *V* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapT = wrapT;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearFilter\n\t\t */\n\t\tthis.magFilter = magFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearMipmapLinearFilter\n\t\t */\n\t\tthis.minFilter = minFilter;\n\n\t\t/**\n\t\t * The number of samples taken along the axis through the pixel that has the\n\t\t * highest density of texels. By default, this value is `1`. A higher value\n\t\t * gives a less blurry result than a basic mipmap, at the cost of more\n\t\t * texture samples being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.anisotropy = anisotropy;\n\n\t\t/**\n\t\t * The format of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default RGBAFormat\n\t\t */\n\t\tthis.format = format;\n\n\t\t/**\n\t\t * The default internal format is derived from {@link Texture#format} and {@link Texture#type} and\n\t\t * defines how the texture data is going to be stored on the GPU.\n\t\t *\n\t\t * This property allows to overwrite the default format.\n\t\t *\n\t\t * @type {?string}\n\t\t * @default null\n\t\t */\n\t\tthis.internalFormat = null;\n\n\t\t/**\n\t\t * The data type of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default UnsignedByteType\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * How much a single repetition of the texture is offset from the beginning,\n\t\t * in each direction U and V. Typical range is `0.0` to `1.0`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.offset = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How many times the texture is repeated across the surface, in each\n\t\t * direction U and V. If repeat is set greater than `1` in either direction,\n\t\t * the corresponding wrap parameter should also be set to `RepeatWrapping`\n\t\t * or `MirroredRepeatWrapping` to achieve the desired tiling effect.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.repeat = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds\n\t\t * to the center of the texture. Default is `(0, 0)`, the lower left.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.center = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How much the texture is rotated around the center point, in radians.\n\t\t * Positive values are counter-clockwise.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.rotation = 0;\n\n\t\t/**\n\t\t * Whether to update the texture's uv-transformation {@link Texture#matrix}\n\t\t * from the properties {@link Texture#offset}, {@link Texture#repeat},\n\t\t * {@link Texture#rotation}, and {@link Texture#center}.\n\t\t *\n\t\t * Set this to `false` if you are specifying the uv-transform matrix directly.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = true;\n\n\t\t/**\n\t\t * The uv-transformation matrix of the texture.\n\t\t *\n\t\t * @type {Matrix3}\n\t\t */\n\t\tthis.matrix = new Matrix3();\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Set this to `false` if you are creating mipmaps manually.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.generateMipmaps = true;\n\n\t\t/**\n\t\t * If set to `true`, the alpha channel, if present, is multiplied into the\n\t\t * color channels when the texture is uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure premultiply alpha on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultiplyAlpha = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure the flip on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.flipY = true;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t * The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes),\n\t\t * `4` (word-alignment), and `8` (rows start on double-word boundaries).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 4\n\t\t */\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t/**\n\t\t * Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`.\n\t\t *\n\t\t * @type {string}\n\t\t * @default NoColorSpace\n\t\t */\n\t\tthis.colorSpace = colorSpace;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the texture. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This can be used to only update a subregion or specific rows of the texture (for example, just the\n\t\t * first 3 rows). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\t/**\n\t\t * A callback function, called when the texture is updated (e.g., when\n\t\t * {@link Texture#needsUpdate} has been set to true and then the texture is used).\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.onUpdate = null;\n\n\t\t/**\n\t\t * An optional back reference to the textures render target.\n\t\t *\n\t\t * @type {?(RenderTarget|WebGLRenderTarget)}\n\t\t * @default null\n\t\t */\n\t\tthis.renderTarget = null;\n\n\t\t/**\n\t\t * Indicates whether a texture belongs to a render target or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isRenderTargetTexture = false;\n\n\t\t/**\n\t\t * Indicates if a texture should be handled like a texture array.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isArrayTexture = image && image.depth && image.depth > 1 ? true : false;\n\n\t\t/**\n\t\t * Indicates whether this texture should be processed by `PMREMGenerator` or not\n\t\t * (only relevant for render target textures).\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.pmremVersion = 0;\n\n\t}\n\n\t/**\n\t * The width of the texture in pixels.\n\t */\n\tget width() {\n\n\t\treturn this.source.getSize( _tempVec3 ).x;\n\n\t}\n\n\t/**\n\t * The height of the texture in pixels.\n\t */\n\tget height() {\n\n\t\treturn this.source.getSize( _tempVec3 ).y;\n\n\t}\n\n\t/**\n\t * The depth of the texture in pixels.\n\t */\n\tget depth() {\n\n\t\treturn this.source.getSize( _tempVec3 ).z;\n\n\t}\n\n\t/**\n\t * The image object holding the texture data.\n\t *\n\t * @type {?Object}\n\t */\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\t/**\n\t * Updates the texture transformation matrix from the from the properties {@link Texture#offset},\n\t * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data texture to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Returns a new texture with copied values from this instance.\n\t *\n\t * @return {Texture} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given texture to this instance.\n\t *\n\t * @param {Texture} source - The texture to copy.\n\t * @return {Texture} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.renderTarget = source.renderTarget;\n\t\tthis.isRenderTargetTexture = source.isRenderTargetTexture;\n\t\tthis.isArrayTexture = source.isArrayTexture;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this texture's properties based on `values`.\n\t * @param {Object} values - A container with texture parameters.\n\t */\n\tsetValues( values ) {\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Texture.setValues(): parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Texture.setValues(): property '${ key }' does not exist.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ( currentValue && newValue ) && ( currentValue.isVector2 && newValue.isVector2 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( ( currentValue && newValue ) && ( currentValue.isVector3 && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( ( currentValue && newValue ) && ( currentValue.isMatrix3 && newValue.isMatrix3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the texture into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized texture.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Texture#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the texture has been disposed of.\n\t\t *\n\t\t * @event Texture#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Transforms the given uv vector with the textures uv transformation matrix.\n\t *\n\t * @param {Vector2} uv - The uv vector.\n\t * @return {Vector2} The transformed uv vector.\n\t */\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the texture\n\t * must be updated in the next render. This triggers a texture upload\n\t * to the GPU and ensures correct texture parameter configuration.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the PMREM\n\t * must be regenerated.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * The default image for all textures.\n *\n * @static\n * @type {?Image}\n * @default null\n */\nTexture.DEFAULT_IMAGE = null;\n\n/**\n * The default mapping for all textures.\n *\n * @static\n * @type {number}\n * @default UVMapping\n */\nTexture.DEFAULT_MAPPING = UVMapping;\n\n/**\n * The default anisotropy value for all textures.\n *\n * @static\n * @type {number}\n * @default 1\n */\nTexture.DEFAULT_ANISOTROPY = 1;\n\n/**\n * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers\n * (labeled x, y, z and w), which can be used to represent a number of things, such as:\n *\n * - A point in 4D space.\n * - A direction and length in 4D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)`\n * and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.\n * - Any arbitrary ordered quadruplet of numbers.\n *\n * There are other things a 4D vector can be used to represent, however these\n * are the most common uses in *three.js*.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector4( 0, 1, 0, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0, 1)\n * const b = new THREE.Vector4( );\n *\n * const d = a.dot( b );\n * ```\n */\nclass Vector4 {\n\n\t/**\n\t * Constructs a new 4D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t * @param {number} [w=1] - The w value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector4.prototype.isVector4 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t\t/**\n\t\t * The w value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.w = w;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#z}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#w}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @param {number} w - The value of the w component.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's w component to the given value\n\t *\n\t * @param {number} w - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @param {number} value - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector to copy.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector4} v - The vector to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector4} v - The vector to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector4} v - The vector to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the quaternion's axis and w to the angle.\n\t *\n\t * @param {Quaternion} q - The Quaternion to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the axis of rotation and w to the angle.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is less than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector4} min - The minimum x, y and z values.\n\t * @param {Vector4} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\t\tthis.w = clamp( this.w, min.w, max.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y, z or w values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\t\tthis.w = clamp( this.w, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector4} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector4} v1 - The first vector.\n\t * @param {Vector4} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector4} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`,\n\t * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`.\n\t *\n\t * @param {Array} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/**\n * A render target is a buffer where the video card draws pixels for a scene\n * that is being rendered in the background. It is used in different effects,\n * such as applying postprocessing to a rendered image before displaying it\n * on the screen.\n *\n * @augments EventDispatcher\n */\nclass RenderTarget extends EventDispatcher {\n\n\t/**\n\t * Render target options.\n\t *\n\t * @typedef {Object} RenderTarget~Options\n\t * @property {boolean} [generateMipmaps=false] - Whether to generate mipmaps or not.\n\t * @property {number} [magFilter=LinearFilter] - The mag filter.\n\t * @property {number} [minFilter=LinearFilter] - The min filter.\n\t * @property {number} [format=RGBAFormat] - The texture format.\n\t * @property {number} [type=UnsignedByteType] - The texture type.\n\t * @property {?string} [internalFormat=null] - The texture's internal format.\n\t * @property {number} [wrapS=ClampToEdgeWrapping] - The texture's uv wrapping mode.\n\t * @property {number} [wrapT=ClampToEdgeWrapping] - The texture's uv wrapping mode.\n\t * @property {number} [anisotropy=1] - The texture's anisotropy value.\n\t * @property {string} [colorSpace=NoColorSpace] - The texture's color space.\n\t * @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not.\n\t * @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not.\n\t * @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not.\n\t * @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not.\n\t * @property {?Texture} [depthTexture=null] - Reference to a depth texture.\n\t * @property {number} [samples=0] - The MSAA samples count.\n\t * @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.\n\t * @property {number} [depth=1] - The texture depth.\n\t * @property {boolean} [multiview=false] - Whether this target is used for multiview rendering.\n\t */\n\n\t/**\n\t * Constructs a new render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1,\n\t\t\tdepth: 1,\n\t\t\tmultiview: false\n\t\t}, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRenderTarget = true;\n\n\t\t/**\n\t\t * The width of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.width = width;\n\n\t\t/**\n\t\t * The height of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.height = height;\n\n\t\t/**\n\t\t * The depth of the render target.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.depth = options.depth;\n\n\t\t/**\n\t\t * A rectangular area inside the render target's viewport. Fragments that are\n\t\t * outside the area will be discarded.\n\t\t *\n\t\t * @type {Vector4}\n\t\t * @default (0,0,width,height)\n\t\t */\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\n\t\t/**\n\t\t * Indicates whether the scissor test should be enabled when rendering into\n\t\t * this render target or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.scissorTest = false;\n\n\t\t/**\n\t\t * A rectangular area representing the render target's viewport.\n\t\t *\n\t\t * @type {Vector4}\n\t\t * @default (0,0,width,height)\n\t\t */\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: options.depth };\n\n\t\tconst texture = new Texture( image );\n\n\t\t/**\n\t\t * An array of textures. Each color attachment is represented as a separate texture.\n\t\t * Has at least a single entry for the default color attachment.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t}\n\n\t\tthis._setTextureOptions( options );\n\n\t\t/**\n\t\t * Whether to allocate a depth buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthBuffer = options.depthBuffer;\n\n\t\t/**\n\t\t * Whether to allocate a stencil buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\t/**\n\t\t * Whether to resolve the depth buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\n\t\t/**\n\t\t * Whether to resolve the stencil buffer or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis._depthTexture = null;\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\t/**\n\t\t * The number of MSAA samples.\n\t\t *\n\t\t * A value of `0` disables MSAA.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.samples = options.samples;\n\n\t\t/**\n\t\t * Whether to this target is used in multiview rendering.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.multiview = options.multiview;\n\n\t}\n\n\t_setTextureOptions( options = {} ) {\n\n\t\tconst values = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\tflipY: false,\n\t\t\tinternalFormat: null\n\t\t};\n\n\t\tif ( options.mapping !== undefined ) values.mapping = options.mapping;\n\t\tif ( options.wrapS !== undefined ) values.wrapS = options.wrapS;\n\t\tif ( options.wrapT !== undefined ) values.wrapT = options.wrapT;\n\t\tif ( options.wrapR !== undefined ) values.wrapR = options.wrapR;\n\t\tif ( options.magFilter !== undefined ) values.magFilter = options.magFilter;\n\t\tif ( options.minFilter !== undefined ) values.minFilter = options.minFilter;\n\t\tif ( options.format !== undefined ) values.format = options.format;\n\t\tif ( options.type !== undefined ) values.type = options.type;\n\t\tif ( options.anisotropy !== undefined ) values.anisotropy = options.anisotropy;\n\t\tif ( options.colorSpace !== undefined ) values.colorSpace = options.colorSpace;\n\t\tif ( options.flipY !== undefined ) values.flipY = options.flipY;\n\t\tif ( options.generateMipmaps !== undefined ) values.generateMipmaps = options.generateMipmaps;\n\t\tif ( options.internalFormat !== undefined ) values.internalFormat = options.internalFormat;\n\n\t\tfor ( let i = 0; i < this.textures.length; i ++ ) {\n\n\t\t\tconst texture = this.textures[ i ];\n\t\t\ttexture.setValues( values );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * The texture representing the default color attachment.\n\t *\n\t * @type {Texture}\n\t */\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tset depthTexture( current ) {\n\n\t\tif ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;\n\t\tif ( current !== null ) current.renderTarget = this;\n\n\t\tthis._depthTexture = current;\n\n\t}\n\n\t/**\n\t * Instead of saving the depth in a renderbuffer, a texture\n\t * can be used instead which is useful for further processing\n\t * e.g. in context of post-processing.\n\t *\n\t * @type {?DepthTexture}\n\t * @default null\n\t */\n\tget depthTexture() {\n\n\t\treturn this._depthTexture;\n\n\t}\n\n\t/**\n\t * Sets the size of this render target.\n\t *\n\t * @param {number} width - The width.\n\t * @param {number} height - The height.\n\t * @param {number} [depth=1] - The depth.\n\t */\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\t\t\t\tthis.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\t/**\n\t * Returns a new render target with copied values from this instance.\n\t *\n\t * @return {RenderTarget} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the settings of the given render target. This is a structural copy so\n\t * no resources are shared between render targets after the copy. That includes\n\t * all MRT textures and the depth texture.\n\t *\n\t * @param {RenderTarget} source - The render target to copy.\n\t * @return {RenderTarget} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t\t// ensure image object is not shared, see #20328\n\n\t\t\tconst image = Object.assign( {}, source.textures[ i ].image );\n\t\t\tthis.textures[ i ].source = new Source( image );\n\n\t\t}\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires RenderTarget#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\n/**\n * A render target used in context of {@link WebGLRenderer}.\n *\n * @augments RenderTarget\n */\nclass WebGLRenderTarget extends RenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\n/**\n * Creates an array of textures directly from raw buffer data.\n *\n * @augments Texture\n */\nclass DataArrayTexture extends Texture {\n\n\t/**\n\t * Constructs a new data array texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDataArrayTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image = { data, width, height, depth };\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t\t/**\n\t\t * A set of all layers which need to be updated in the texture.\n\t\t *\n\t\t * @type {Set}\n\t\t */\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\t/**\n\t * Describes that a specific layer of the texture needs to be updated.\n\t * Normally when {@link Texture#needsUpdate} is set to `true`, the\n\t * entire data texture array is sent to the GPU. Marking specific\n\t * layers will only transmit subsets of all mipmaps associated with a\n\t * specific depth in the array which is often much more performant.\n\t *\n\t * @param {number} layerIndex - The layer index that should be updated.\n\t */\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\t/**\n\t * Resets the layer updates registry.\n\t */\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\n/**\n * An array render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new array render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {DataArrayTexture}\n\t\t */\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Creates a three-dimensional texture from raw data, with parameters to\n * divide it into width, height, and depth.\n *\n * @augments Texture\n */\nclass Data3DTexture extends Texture {\n\n\t/**\n\t * Constructs a new data array texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in Data3DTexture directly.\n\t\t//\n\t\t//\tconst texture = new THREE.Data3DTexture( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isData3DTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image = { data, width, height, depth };\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\n/**\n * A 3D render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {Data3DTexture}\n\t\t */\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 3D space.\n */\nclass Box3 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox3 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector3} min - The lower boundary of the box.\n\t * @param {Vector3} max - The upper boundary of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} array - An array holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector3} center - The center of the box.\n\t * @param {Vector3} size - The x, y and z dimensions of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the world-axis-aligned bounding box for the given 3D object\n\t * (including its children), accounting for the object's, and children's,\n\t * world transforms. The function may result in a larger box than strictly necessary.\n\t *\n\t * @param {Object3D} object - The 3D object to compute the bounding box for.\n\t * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest\n\t * world-axis-aligned bounding box at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box3} box - The box to copy.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector3} point - The point that should be included by the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions. The depth of this box will be\n\t * expanded by the z component of the vector in both directions.\n\t *\n\t * @param {Vector3} vector - The vector that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given 3D object and\n\t * its children, accounting for the object's, and children's, world\n\t * transforms. The function may result in a larger box than strictly\n\t * necessary (unless the precise parameter is set to true).\n\t *\n\t * @param {Object3D} object - The 3D object that should expand the bounding box.\n\t * @param {boolean} precise - If set to `true`, the method expands the bounding box\n\t * as little as necessary at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y &&\n\t\t\tpoint.z >= this.min.z && point.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width, height and depth.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A point as a proportion of this box's width, height and depth.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y &&\n\t\t\tbox.max.z >= this.min.z && box.min.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with this bounding box.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with this bounding box.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given plane intersects with this bounding box.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether the given plane intersects with this bounding box.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given triangle intersects with this bounding box.\n\t *\n\t * @param {Triangle} triangle - The triangle to test.\n\t * @return {boolean} Whether the given triangle intersects with this bounding box.\n\t */\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector3} point - The point to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Returns a bounding sphere that encloses this bounding box.\n\t *\n\t * @param {Sphere} target - The target sphere that is used to store the method's result.\n\t * @return {Sphere} The bounding sphere that encloses this bounding box.\n\t */\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box3} box - The bounding box to intersect with.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box3} box - The bounding box that will be unioned with this instance.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this bounding box by the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 3D space.\n\t *\n\t * @param {Vector3} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box3} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding box.\n\t *\n\t * @return {Object} Serialized structure with fields representing the object state.\n\t */\n\ttoJSON() {\n\n\t\treturn {\n\t\t\tmin: this.min.toArray(),\n\t\t\tmax: this.max.toArray()\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding box.\n\t *\n\t * @param {Object} json - The serialized json to set the box from.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.min.fromArray( json.min );\n\t\tthis.max.fromArray( json.max );\n\t\treturn this;\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical 3D sphere defined by a center and radius. This class is mainly\n * used as a Bounding Sphere for 3D objects.\n */\nclass Sphere {\n\n\t/**\n\t * Constructs a new sphere.\n\t *\n\t * @param {Vector3} [center=(0,0,0)] - The center of the sphere\n\t * @param {number} [radius=-1] - The radius of the sphere.\n\t */\n\tconstructor( center = new Vector3(), radius = -1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphere = true;\n\n\t\t/**\n\t\t * The center of the sphere\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.center = center;\n\n\t\t/**\n\t\t * The radius of the sphere.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.radius = radius;\n\n\t}\n\n\t/**\n\t * Sets the sphere's components by copying the given values.\n\t *\n\t * @param {Vector3} center - The center.\n\t * @param {number} radius - The radius.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the minimum bounding sphere for list of points.\n\t * If the optional center point is given, it is used as the sphere's\n\t * center. Otherwise, the center of the axis-aligned bounding box\n\t * encompassing the points is calculated.\n\t *\n\t * @param {Array} points - A list of points in 3D space.\n\t * @param {Vector3} [optionalCenter] - The center of the sphere.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given sphere to this instance.\n\t *\n\t * @param {Sphere} sphere - The sphere to copy.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the sphere is empty (the radius set to a negative number).\n\t *\n\t * Spheres with a radius of `0` contain only their center point and are not\n\t * considered to be empty.\n\t *\n\t * @return {boolean} Whether this sphere is empty or not.\n\t */\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\t/**\n\t * Makes this sphere empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = -1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere contains the given point inclusive of\n\t * the surface of the sphere.\n\t *\n\t * @param {Vector3} point - The point to check.\n\t * @return {boolean} Whether this sphere contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\t/**\n\t * Returns the closest distance from the boundary of the sphere to the\n\t * given point. If the sphere contains the point, the distance will\n\t * be negative.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The distance to the point.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test.\n\t * @return {boolean} Whether this sphere intersects with the given one or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to test.\n\t * @return {boolean} Whether this sphere intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether this sphere intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\t/**\n\t * Clamps a point within the sphere. If the point is outside the sphere, it\n\t * will clamp it to the closest point on the edge of the sphere. Points\n\t * already inside the sphere will not be affected.\n\t *\n\t * @param {Vector3} point - The plane to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a bounding box that encloses this sphere.\n\t *\n\t * @param {Box3} target - The target box that is used to store the method's result.\n\t * @return {Box3} The bounding box that encloses this sphere.\n\t */\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Transforms this sphere with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the sphere's center by the given offset.\n\t *\n\t * @param {Vector3} offset - The offset.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this sphere to include the given point.\n\t *\n\t * @param {Vector3} point - The point to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this sphere to enclose both the original sphere and the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere is equal with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test for equality.\n\t * @return {boolean} Whether this bounding sphere is equal with the given one.\n\t */\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\t/**\n\t * Returns a new sphere with copied values from this instance.\n\t *\n\t * @return {Sphere} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding sphere.\n\t *\n\t * @return {Object} Serialized structure with fields representing the object state.\n\t */\n\ttoJSON() {\n\n\t\treturn {\n\t\t\tradius: this.radius,\n\t\t\tcenter: this.center.toArray()\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a serialized structure of the bounding sphere.\n\t *\n\t * @param {Object} json - The serialized json to set the sphere from.\n\t * @return {Box3} A reference to this bounding sphere.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.radius = json.radius;\n\t\tthis.center.fromArray( json.center );\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A ray that emits from an origin in a certain direction. The class is used by\n * {@link Raycaster} to assist with raycasting. Raycasting is used for\n * mouse picking (working out what objects in the 3D space the mouse is over)\n * amongst other things.\n */\nclass Ray {\n\n\t/**\n\t * Constructs a new ray.\n\t *\n\t * @param {Vector3} [origin=(0,0,0)] - The origin of the ray.\n\t * @param {Vector3} [direction=(0,0,-1)] - The (normalized) direction of the ray.\n\t */\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, -1 ) ) {\n\n\t\t/**\n\t\t * The origin of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.origin = origin;\n\n\t\t/**\n\t\t * The (normalized) direction of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.direction = direction;\n\n\t}\n\n\t/**\n\t * Sets the ray's components by copying the given values.\n\t *\n\t * @param {Vector3} origin - The origin.\n\t * @param {Vector3} direction - The direction.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given ray to this instance.\n\t *\n\t * @param {Ray} ray - The ray to copy.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector that is located at a given distance along this ray.\n\t *\n\t * @param {number} t - The distance along the ray to retrieve a position for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A position on the ray.\n\t */\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\t/**\n\t * Adjusts the direction of the ray to point at the given vector in world space.\n\t *\n\t * @param {Vector3} v - The target position.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Shift the origin of this ray along its direction by the given distance.\n\t *\n\t * @param {number} t - The distance along the ray to interpolate.\n\t * @return {Ray} A reference to this ray.\n\t */\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the point along this ray that is closest to the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to get the closet location on the ray for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on this ray.\n\t */\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\t/**\n\t * Returns the distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the squared distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\t/**\n\t * Returns the squared distance between this ray and the given line segment.\n\t *\n\t * @param {Vector3} v0 - The start point of the line segment.\n\t * @param {Vector3} v1 - The end point of the line segment.\n\t * @param {Vector3} [optionalPointOnRay] - When provided, it receives the point on this ray that is closest to the segment.\n\t * @param {Vector3} [optionalPointOnSegment] - When provided, it receives the point on the line segment that is closest to this ray.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given sphere, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @return {boolean} Whether this ray intersects with the given sphere or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tif ( sphere.radius < 0 ) return false; // handle empty spheres, see #31187\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Computes the distance from the ray's origin to the given plane. Returns `null` if the ray\n\t * does not intersect with the plane.\n\t *\n\t * @param {Plane} plane - The plane to compute the distance to.\n\t * @return {?number} Whether this ray intersects with the given sphere or not.\n\t */\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given plane, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @return {boolean} Whether this ray intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given bounding box, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this ray intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given triangle, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Vector3} a - The first vertex of the triangle.\n\t * @param {Vector3} b - The second vertex of the triangle.\n\t * @param {Vector3} c - The third vertex of the triangle.\n\t * @param {boolean} backfaceCulling - Whether to use backface culling or not.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = -1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\t/**\n\t * Transforms this ray with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The transformation matrix.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray is equal with the given one.\n\t *\n\t * @param {Ray} ray - The ray to test for equality.\n\t * @return {boolean} Whether this ray is equal with the given one.\n\t */\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\t/**\n\t * Returns a new ray with copied values from this instance.\n\t *\n\t * @return {Ray} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 4x4 matrix.\n *\n * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.\n * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices}\n *\n * This allows a 3D vector representing a point in 3D space to undergo\n * transformations such as translation, rotation, shear, scale, reflection,\n * orthogonal or perspective projection and so on, by being multiplied by the\n * matrix. This is known as `applying` the matrix to the vector.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix4();\n * m.set( 11, 12, 13, 14,\n * 21, 22, 23, 24,\n * 31, 32, 33, 34,\n * 41, 42, 43, 44 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31, 41,\n * 12, 22, 32, 42,\n * 13, 23, 33, 43,\n * 14, 24, 34, 44 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix4 {\n\n\t/**\n\t * Constructs a new 4x4 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 4x4 identity matrix.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix4} m - The matrix to copy.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the translation component of the given matrix\n\t * into this matrix's translation component.\n\t *\n\t * @param {Matrix4} m - The matrix to copy the translation component.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given basis vectors to this matrix.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the rotation component of the given matrix\n\t * into this matrix's rotation component.\n\t *\n\t * Note: This method does not support reflection matrices.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractRotation( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component (the upper left 3x3 matrix) of this matrix to\n\t * the rotation specified by the given Euler angles. The rest of\n\t * the matrix is set to the identity. Depending on the {@link Euler#order},\n\t * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix}\n\t * for a complete list.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component of this matrix to the rotation specified by\n\t * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion}\n\t * The rest of the matrix is set to the identity.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\t/**\n\t * Sets the rotation component of the transformation matrix, looking from `eye` towards\n\t * `target`, and oriented by the up-direction.\n\t *\n\t * @param {Vector3} eye - The eye vector.\n\t * @param {Vector3} target - The target vector.\n\t * @param {Vector3} up - The up vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 4x4 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix4} a - The first matrix.\n\t * @param {Matrix4} b - The second matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the position component for this matrix from the given vector,\n\t * without affecting the rest of the matrix.\n\t *\n\t * @param {number|Vector3} x - The x component of the vector or alternatively the vector object.\n\t * @param {number} y - The y component of the vector.\n\t * @param {number} z - The z component of the vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the columns of this matrix by the given vector.\n\t *\n\t * @param {Vector3} v - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the maximum scale value of the three axes.\n\t *\n\t * @return {number} The maximum scale.\n\t */\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\t/**\n\t * Sets this matrix as a translation transform from the given vector.\n\t *\n\t * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @param {number} z - The amount to translate in the z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the X axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Y axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Z axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the given axis by\n\t * the given angle.\n\t *\n\t * This is a somewhat controversial but mathematically sound alternative to\n\t * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}.\n\t *\n\t * @param {Vector3} axis - The normalized rotation axis.\n\t * @param {number} angle - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a scale transformation.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @param {number} z - The amount to scale in the Z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a shear transformation.\n\t *\n\t * @param {number} xy - The amount to shear X by Y.\n\t * @param {number} xz - The amount to shear X by Z.\n\t * @param {number} yx - The amount to shear Y by X.\n\t * @param {number} yz - The amount to shear Y by Z.\n\t * @param {number} zx - The amount to shear Z by X.\n\t * @param {number} zy - The amount to shear Z by Y.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the transformation composed of the given position,\n\t * rotation (Quaternion) and scale.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Decomposes this matrix into its position, rotation and scale components\n\t * and provides the result in the given objects.\n\t *\n\t * Note: Not all matrices are decomposable in this way. For example, if an\n\t * object has a non-uniformly scaled parent, then the object's world matrix\n\t * may not be decomposable, and this method may not be appropriate.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a perspective projection matrix. This is used internally by\n\t * {@link PerspectiveCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tc = near / ( far - near );\n\t\t\td = ( far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\t\td = ( -2 * far * near ) / ( far - near );\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tc = - far / ( far - near );\n\t\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = -1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a orthographic projection matrix. This is used internally by\n\t * {@link OrthographicCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = 2 / ( right - left );\n\t\tconst y = 2 / ( top - bottom );\n\n\t\tconst a = - ( right + left ) / ( right - left );\n\t\tconst b = - ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tc = 1 / ( far - near );\n\t\t\td = far / ( far - near );\n\n\t\t} else {\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tc = -2 / ( far - near );\n\t\t\t\td = - ( far + near ) / ( far - near );\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tc = -1 / ( far - near );\n\t\t\t\td = - near / ( far - near );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\tte[ 0 ] = x;\t\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = a;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = y;\t\tte[ 9 ] = 0; \t\tte[ 13 ] = b;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = c;\t\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix4} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\n/**\n * A class representing Euler angles.\n *\n * Euler angles describe a rotational transformation by rotating an object on\n * its various axes in specified amounts per axis, and a specified axis\n * order.\n *\n * Iterating through an instance will yield its components (x, y, z,\n * order) in the corresponding order.\n *\n * ```js\n * const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );\n * const b = new THREE.Vector3( 1, 0, 1 );\n * b.applyEuler(a);\n * ```\n */\nclass Euler {\n\n\t/**\n\t * Constructs a new euler instance.\n\t *\n\t * @param {number} [x=0] - The angle of the x axis in radians.\n\t * @param {number} [y=0] - The angle of the y axis in radians.\n\t * @param {number} [z=0] - The angle of the z axis in radians.\n\t * @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\t/**\n\t * The angle of the x axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the y axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the z axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * A string representing the order that the rotations are applied.\n\t *\n\t * @type {string}\n\t * @default 'XYZ'\n\t */\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the Euler components.\n\t *\n\t * @param {number} x - The angle of the x axis in radians.\n\t * @param {number} y - The angle of the y axis in radians.\n\t * @param {number} z - The angle of the z axis in radians.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new Euler instance with copied values from this instance.\n\t *\n\t * @return {Euler} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\t/**\n\t * Copies the values of the given Euler instance to this instance.\n\t *\n\t * @param {Euler} euler - The Euler instance to copy.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a pure rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a normalized quaternion.\n\t *\n\t * @param {Quaternion} q - A normalized Quaternion.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from the given vector.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\t/**\n\t * Resets the euler angle with a new order by creating a quaternion from this\n\t * euler angle and then setting this euler angle with the quaternion and the\n\t * new order.\n\t *\n\t * Warning: This discards revolution information.\n\t *\n\t * @param {string} [newOrder] - A string representing the new order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\treorder( newOrder ) {\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\t/**\n\t * Returns `true` if this Euler instance is equal with the given one.\n\t *\n\t * @param {Euler} euler - The Euler instance to test for equality.\n\t * @return {boolean} Whether this Euler instance is equal with the given one.\n\t */\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\t/**\n\t * Sets this Euler instance's components to values from the given array. The first three\n\t * entries of the array are assign to the x,y and z components. An optional fourth entry\n\t * defines the Euler order.\n\t *\n\t * @param {Array} array - An array holding the Euler component values.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this Euler instance to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the Euler components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The Euler components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\n/**\n * The default Euler angle order.\n *\n * @static\n * @type {string}\n * @default 'XYZ'\n */\nEuler.DEFAULT_ORDER = 'XYZ';\n\n/**\n * A layers object assigns an 3D object to 1 or more of 32\n * layers numbered `0` to `31` - internally the layers are stored as a\n * bit mask], and by default all 3D objects are a member of layer `0`.\n *\n * This can be used to control visibility - an object must share a layer with\n * a camera to be visible when that camera's view is\n * rendered.\n *\n * All classes that inherit from {@link Object3D} have an `layers` property which\n * is an instance of this class.\n */\nclass Layers {\n\n\t/**\n\t * Constructs a new layers instance, with membership\n\t * initially set to layer `0`.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * A bit mask storing which of the 32 layers this layers object is currently\n\t\t * a member of.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\t/**\n\t * Sets membership to the given layer, and remove membership all other layers.\n\t *\n\t * @param {number} layer - The layer to set.\n\t */\n\tset( layer ) {\n\n\t\tthis.mask = ( 1 << layer | 0 ) >>> 0;\n\n\t}\n\n\t/**\n\t * Adds membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to enable.\n\t */\n\tenable( layer ) {\n\n\t\tthis.mask |= 1 << layer | 0;\n\n\t}\n\n\t/**\n\t * Adds membership to all layers.\n\t */\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\t/**\n\t * Toggles the membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to toggle.\n\t */\n\ttoggle( layer ) {\n\n\t\tthis.mask ^= 1 << layer | 0;\n\n\t}\n\n\t/**\n\t * Removes membership of the given layer.\n\t *\n\t * @param {number} layer - The layer to enable.\n\t */\n\tdisable( layer ) {\n\n\t\tthis.mask &= ~ ( 1 << layer | 0 );\n\n\t}\n\n\t/**\n\t * Removes the membership from all layers.\n\t */\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\t/**\n\t * Returns `true` if this and the given layers object have at least one\n\t * layer in common.\n\t *\n\t * @param {Layers} layers - The layers to test.\n\t * @return {boolean } Whether this and the given layers object have at least one layer in common or not.\n\t */\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given layer is enabled.\n\t *\n\t * @param {number} layer - The layer to test.\n\t * @return {boolean } Whether the given layer is enabled or not.\n\t */\n\tisEnabled( layer ) {\n\n\t\treturn ( this.mask & ( 1 << layer | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\n/**\n * Fires when the object has been added to its parent object.\n *\n * @event Object3D#added\n * @type {Object}\n */\nconst _addedEvent = { type: 'added' };\n\n/**\n * Fires when the object has been removed from its parent object.\n *\n * @event Object3D#removed\n * @type {Object}\n */\nconst _removedEvent = { type: 'removed' };\n\n/**\n * Fires when a new child object has been added.\n *\n * @event Object3D#childadded\n * @type {Object}\n */\nconst _childaddedEvent = { type: 'childadded', child: null };\n\n/**\n * Fires when a child object has been removed.\n *\n * @event Object3D#childremoved\n * @type {Object}\n */\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\n/**\n * This is the base class for most objects in three.js and provides a set of\n * properties and methods for manipulating objects in 3D space.\n *\n * @augments EventDispatcher\n */\nclass Object3D extends EventDispatcher {\n\n\t/**\n\t * Constructs a new 3D object.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isObject3D = true;\n\n\t\t/**\n\t\t * The ID of the 3D object.\n\t\t *\n\t\t * @name Object3D#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\t/**\n\t\t * The UUID of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Object3D';\n\n\t\t/**\n\t\t * A reference to the parent object.\n\t\t *\n\t\t * @type {?Object3D}\n\t\t * @default null\n\t\t */\n\t\tthis.parent = null;\n\n\t\t/**\n\t\t * An array holding the child 3D objects of this instance.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.children = [];\n\n\t\t/**\n\t\t * Defines the `up` direction of the 3D object which influences\n\t\t * the orientation via methods like {@link Object3D#lookAt}.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * Represents the object's local position.\n\t\t\t *\n\t\t\t * @name Object3D#position\n\t\t\t * @type {Vector3}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Euler angles, in radians.\n\t\t\t *\n\t\t\t * @name Object3D#rotation\n\t\t\t * @type {Euler}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Quaternions.\n\t\t\t *\n\t\t\t * @name Object3D#quaternion\n\t\t\t * @type {Quaternion}\n\t\t\t */\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local scale.\n\t\t\t *\n\t\t\t * @name Object3D#scale\n\t\t\t * @type {Vector3}\n\t\t\t * @default (1,1,1)\n\t\t\t */\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's model-view matrix.\n\t\t\t *\n\t\t\t * @name Object3D#modelViewMatrix\n\t\t\t * @type {Matrix4}\n\t\t\t */\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's normal matrix.\n\t\t\t *\n\t\t\t * @name Object3D#normalMatrix\n\t\t\t * @type {Matrix3}\n\t\t\t */\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in local space.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in world space.\n\t\t * If the 3D object has no parent, then it's identical to the local transformation matrix\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the local matrix from position,\n\t\t * rotation and scale every frame.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the world matrix from the current local\n\t\t * matrix and the object's transformation hierarchy.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\n\t\t/**\n\t\t * When set to `true`, it calculates the world matrix in that frame and resets this property\n\t\t * to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t/**\n\t\t * The layer membership of the 3D object. The 3D object is only visible if it has\n\t\t * at least one layer in common with the camera in use. This property can also be\n\t\t * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.\n\t\t *\n\t\t * @type {Layers}\n\t\t */\n\t\tthis.layers = new Layers();\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered into shadow maps.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.castShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is affected by shadows in the scene.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.receiveShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is honored by view frustum culling.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.frustumCulled = true;\n\n\t\t/**\n\t\t * This value allows the default rendering order of scene graph objects to be\n\t\t * overridden although opaque and transparent objects remain sorted independently.\n\t\t * When this property is set for an instance of {@link Group},all descendants\n\t\t * objects will be sorted and rendered together. Sorting is from lowest to highest\n\t\t * render order.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.renderOrder = 0;\n\n\t\t/**\n\t\t * An array holding the animation clips of the 3D object.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.animations = [];\n\n\t\t/**\n\t\t * Custom depth material to be used when rendering to the depth map. Can only be used\n\t\t * in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight},\n\t\t * if you are modifying vertex positions in the vertex shader you must specify a custom depth\n\t\t * material for proper shadows.\n\t\t *\n\t\t * Only relevant in context of {@link WebGLRenderer}.\n\t\t *\n\t\t * @type {(Material|undefined)}\n\t\t * @default undefined\n\t\t */\n\t\tthis.customDepthMaterial = undefined;\n\n\t\t/**\n\t\t * Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}.\n\t\t *\n\t\t * Only relevant in context of {@link WebGLRenderer}.\n\t\t *\n\t\t * @type {(Material|undefined)}\n\t\t * @default undefined\n\t\t */\n\t\tthis.customDistanceMaterial = undefined;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the 3D object. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * Applies the given transformation matrix to the object and updates the object's position,\n\t * rotation and scale.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\t/**\n\t * Applies a rotation represented by given the quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as an axis/angle couple to the 3D object.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t */\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as Euler angles to the 3D object.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t */\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as rotation matrix to the 3D object.\n\t *\n\t * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be\n\t * a pure rotation matrix (i.e, unscaled).\n\t */\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as a Quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The Quaternion\n\t */\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in world space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its X axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Y axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Z axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along the given axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its X-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Y-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Z-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's local space to world space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's word space to local space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\t/**\n\t * Rotates the object to face a point in world space.\n\t *\n\t * This method does not support objects having non-uniformly-scaled parent(s).\n\t *\n\t * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space\n\t * @param {number} [y] - The y coordinate in world space.\n\t * @param {number} [z] - The z coordinate in world space.\n\t */\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child to this 3D object. An arbitrary number of\n\t * objects may be added. Any current parent on an object passed in here will be\n\t * removed, since an object can have at most one parent.\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to add.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the given 3D object as child from this 3D object.\n\t * An arbitrary number of objects may be removed.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @param {Object3D} object - The 3D object to remove.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== -1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes this 3D object from its current parent.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes all child objects.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child of this 3D object, while maintaining the object's world\n\t * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to attach.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching ID.\n\t *\n\t * @param {number} id - The id.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching name.\n\t *\n\t * @param {string} name - The name.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns all 3D objects with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @param {Array} result - The method stores the result in this array.\n\t * @return {Array} The found 3D objects.\n\t */\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the position of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's position in world space.\n\t */\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Returns a Quaternion representing the position of the 3D object in world space.\n\t *\n\t * @param {Quaternion} target - The target Quaternion the result is stored to.\n\t * @return {Quaternion} The 3D object's rotation in world space.\n\t */\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the scale of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's scale in world space.\n\t */\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\t/**\n\t * Abstract method to get intersections between a casted ray and this\n\t * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}\n\t * implement this method in order to use raycasting.\n\t *\n\t * @abstract\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - An array holding the result of the method.\n\t */\n\traycast( /* raycaster, intersects */ ) {}\n\n\t/**\n\t * Executes the callback on this 3D object and all descendants.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.\n\t * Descendants of invisible 3D objects are not traversed.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in local space by computing it from the current\n\t * position, rotation and scale values.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in world space of this 3D objects and its descendants.\n\t *\n\t * To ensure correct results, this method also recomputes the 3D object's transformation matrix in\n\t * local space. The computation of the local and world matrix can be controlled with the\n\t * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both\n\t * `true` by default. Set these flags to `false` if you need more control over the update matrix process.\n\t *\n\t * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even\n\t * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.\n\t */\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the\n\t * update of ancestor and descendant nodes.\n\t *\n\t * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.\n\t * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.\n\t */\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// make sure descendants are updated\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the 3D object into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized 3D object.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.geometryInfo = this._geometryInfo.map( info => ( {\n\t\t\t\t...info,\n\t\t\t\tboundingBox: info.boundingBox ? info.boundingBox.toJSON() : undefined,\n\t\t\t\tboundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : undefined\n\t\t\t} ) );\n\t\t\tobject.instanceInfo = this._instanceInfo.map( info => ( { ...info } ) );\n\n\t\t\tobject.availableInstanceIds = this._availableInstanceIds.slice();\n\t\t\tobject.availableGeometryIds = this._availableGeometryIds.slice();\n\n\t\t\tobject.nextIndexStart = this._nextIndexStart;\n\t\t\tobject.nextVertexStart = this._nextVertexStart;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tobject.indirectTexture = this._indirectTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\t\tobject.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = this.boundingSphere.toJSON();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = this.boundingBox.toJSON();\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new 3D object with copied values from this instance.\n\t *\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.\n\t * @return {Object3D} A clone of this instance.\n\t */\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\t/**\n\t * Copies the values of the given 3D object to this instance.\n\t *\n\t * @param {Object3D} source - The 3D object to copy.\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * The default up direction for objects, also used as the default\n * position for {@link DirectionalLight} and {@link HemisphereLight}.\n *\n * @static\n * @type {Vector3}\n * @default (0,1,0)\n */\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\n\n/**\n * The default setting for {@link Object3D#matrixAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\n\n/**\n * The default setting for {@link Object3D#matrixWorldAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nconst _v40 = /*@__PURE__*/ new Vector4();\nconst _v41 = /*@__PURE__*/ new Vector4();\nconst _v42 = /*@__PURE__*/ new Vector4();\n\n/**\n * A geometric triangle as defined by three vectors representing its three corners.\n */\nclass Triangle {\n\n\t/**\n\t * Constructs a new triangle.\n\t *\n\t * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle.\n\t * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle.\n\t * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle.\n\t */\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\t/**\n\t\t * The first corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.a = a;\n\n\t\t/**\n\t\t * The second corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.b = b;\n\n\t\t/**\n\t\t * The third corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.c = c;\n\n\t}\n\n\t/**\n\t * Computes the normal vector of a triangle.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} p1 - The first corner of the triangle.\n\t * @param {Vector3} p2 - The second corner of the triangle.\n\t * @param {Vector3} p3 - The third corner of the triangle.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given attribute and indices.\n\t *\n\t * @param {BufferAttribute} attr - The attribute to interpolate.\n\t * @param {number} i1 - Index of first vertex.\n\t * @param {number} i2 - Index of second vertex.\n\t * @param {number} i3 - Index of third vertex.\n\t * @param {Vector3} barycoord - The barycoordinate value to use to interpolate.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The interpolated attribute value.\n\t */\n\tstatic getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {\n\n\t\t_v40.setScalar( 0 );\n\t\t_v41.setScalar( 0 );\n\t\t_v42.setScalar( 0 );\n\n\t\t_v40.fromBufferAttribute( attr, i1 );\n\t\t_v41.fromBufferAttribute( attr, i2 );\n\t\t_v42.fromBufferAttribute( attr, i3 );\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( _v40, barycoord.x );\n\t\ttarget.addScaledVector( _v41, barycoord.y );\n\t\ttarget.addScaledVector( _v42, barycoord.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given values.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given array values.\n\t *\n\t * @param {Array} points - An array with 3D points.\n\t * @param {number} i0 - The array index representing the first corner of the triangle.\n\t * @param {number} i1 - The array index representing the second corner of the triangle.\n\t * @param {number} i2 - The array index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given attribute values.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute with 3D points data.\n\t * @param {number} i0 - The attribute index representing the first corner of the triangle.\n\t * @param {number} i1 - The attribute index representing the second corner of the triangle.\n\t * @param {number} i2 - The attribute index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new triangle with copied values from this instance.\n\t *\n\t * @return {Triangle} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given triangle to this instance.\n\t *\n\t * @param {Triangle} triangle - The triangle to copy.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the area of the triangle.\n\t *\n\t * @return {number} The triangle's area.\n\t */\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\t/**\n\t * Computes the midpoint of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's midpoint.\n\t */\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\t/**\n\t * Computes the normal of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes a plane the triangle lies within.\n\t *\n\t * @param {Plane} target - The target vector that is used to store the method's result.\n\t * @return {Plane} The plane the triangle lies within.\n\t */\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this triangle intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\t/**\n\t * Returns the closest point on the triangle to the given point.\n\t *\n\t * @param {Vector3} p - The point to compute the closest point for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the triangle.\n\t */\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle is equal with the given one.\n\t *\n\t * @param {Triangle} triangle - The triangle to test for equality.\n\t * @return {boolean} Whether this triangle is equal with the given one.\n\t */\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\n/**\n * A Color instance is represented by RGB components in the linear working\n * color space, which defaults to `LinearSRGBColorSpace`. Inputs\n * conventionally using `SRGBColorSpace` (such as hexadecimals and CSS\n * strings) are converted to the working color space automatically.\n *\n * ```js\n * // converted automatically from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setHex( 0x112233 );\n * ```\n * Source color spaces may be specified explicitly, to ensure correct conversions.\n * ```js\n * // assumed already LinearSRGBColorSpace; no conversion\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );\n *\n * // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );\n * ```\n * If THREE.ColorManagement is disabled, no conversions occur. For details,\n * see Color management. Iterating through a Color instance will yield\n * its components (r, g, b) in the corresponding order. A Color can be initialised\n * in any of the following ways:\n * ```js\n * //empty constructor - will default white\n * const color1 = new THREE.Color();\n *\n * //Hexadecimal color (recommended)\n * const color2 = new THREE.Color( 0xff0000 );\n *\n * //RGB string\n * const color3 = new THREE.Color(\"rgb(255, 0, 0)\");\n * const color4 = new THREE.Color(\"rgb(100%, 0%, 0%)\");\n *\n * //X11 color name - all 140 color names are supported.\n * //Note the lack of CamelCase in the name\n * const color5 = new THREE.Color( 'skyblue' );\n * //HSL string\n * const color6 = new THREE.Color(\"hsl(0, 100%, 50%)\");\n *\n * //Separate RGB values between 0 and 1\n * const color7 = new THREE.Color( 1, 0, 0 );\n * ```\n */\nclass Color {\n\n\t/**\n\t * Constructs a new color.\n\t *\n\t * Note that standard method of specifying color in three.js is with a hexadecimal triplet,\n\t * and that method is used throughout the rest of the documentation.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t */\n\tconstructor( r, g, b ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isColor = true;\n\n\t\t/**\n\t\t * The red component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.r = 1;\n\n\t\t/**\n\t\t * The green component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.g = 1;\n\n\t\t/**\n\t\t * The blue component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\t/**\n\t * Sets the colors's components from the given values.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t * @return {Color} A reference to this color.\n\t */\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the colors's components to the given scalar value.\n\t *\n\t * @param {number} scalar - The scalar value.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a hexadecimal value.\n\t *\n\t * @param {number} hex - The hexadecimal value.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} r - Red channel value between `0.0` and `1.0`.\n\t * @param {number} g - Green channel value between `0.0` and `1.0`.\n\t * @param {number} b - Blue channel value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.colorSpaceToWorking( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,\n\t * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or\n\t * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -\n\t * all 140 color names are supported).\n\t *\n\t * @param {string} style - Color as a CSS-style string.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a color name. Faster than {@link Color#setStyle} if\n\t * you don't need the other CSS-style formats.\n\t *\n\t * For convenience, the list of names is exposed in `Color.NAMES` as a hash.\n\t * ```js\n\t * Color.NAMES.aliceblue // returns 0xF0F8FF\n\t * ```\n\t *\n\t * @param {string} style - The color name.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new color with copied values from this instance.\n\t *\n\t * @return {Color} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\t/**\n\t * Copies the values of the given color to this instance.\n\t *\n\t * @param {Color} color - The color to copy.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {number} The hexadecimal value.\n\t */\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The hexadecimal value as a string.\n\t */\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( -6 );\n\n\t}\n\n\t/**\n\t * Converts the colors RGB values into the HSL format and stores them into the\n\t * given target object.\n\t *\n\t * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {{h:number,s:number,l:number}} The HSL representation of this color.\n\t */\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the RGB values of this color and stores them into the given target object.\n\t *\n\t * @param {Color} target - The target color that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} The RGB representation of this color.\n\t */\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The CSS representation of this color.\n\t */\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\t/**\n\t * Adds the given HSL values to this color's values.\n\t * Internally, this converts the color's RGB values to HSL, adds HSL\n\t * and then converts the color back to RGB.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @return {Color} A reference to this color.\n\t */\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given color to the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to add.\n\t * @return {Color} A reference to this color.\n\t */\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given colors and stores the result in this instance.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @return {Color} A reference to this color.\n\t */\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Color} A reference to this color.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the RGB values of the given color from the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to subtract.\n\t * @return {Color} A reference to this color.\n\t */\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the RGB values of the given color with the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's RGB values toward the RGB values of the\n\t * given color. The alpha argument can be thought of as the ratio between\n\t * the two colors, where `0.0` is this color and `1.0` is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given colors and stores the result in this instance.\n\t * The alpha argument can be thought of as the ratio between the two colors, where `0.0`\n\t * is the first and `1.0` is the second color.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's HSL values toward the HSL values of the\n\t * given color. It differs from {@link Color#lerp} by not interpolating straight\n\t * from one color to the other, but instead going through all the hues in between\n\t * those two colors. The alpha argument can be thought of as the ratio between\n\t * the two colors, where 0.0 is this color and 1.0 is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the color's RGB components from the given 3D vector.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this color with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix.\n\t * @return {Color} A reference to this color.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this color is equal with the given one.\n\t *\n\t * @param {Color} c - The color to test for equality.\n\t * @return {boolean} Whether this bounding color is equal with the given one.\n\t */\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\t/**\n\t * Sets this color's RGB components from the given array.\n\t *\n\t * @param {Array} array - An array holding the RGB values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the RGB components of this color to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array} [array=[]] - The target array holding the color components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array} The color components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this color from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding color data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the color\n\t * as a hexadecimal value.\n\t *\n\t * @return {number} The hexadecimal value.\n\t */\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\n/**\n * A dictionary with X11 color names.\n *\n * Note that multiple words such as Dark Orange become the string 'darkorange'.\n *\n * @static\n * @type {Object}\n */\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\n/**\n * Abstract base class for materials.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Material extends EventDispatcher {\n\n\t/**\n\t * Constructs a new material.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMaterial = true;\n\n\t\t/**\n\t\t * The ID of the material.\n\t\t *\n\t\t * @name Material#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Material';\n\n\t\t/**\n\t\t * Defines the blending type of the material.\n\t\t *\n\t\t * It must be set to `CustomBlending` if custom blending properties like\n\t\t * {@link Material#blendSrc}, {@link Material#blendDst} or {@link Material#blendEquation}\n\t\t * should have any effect.\n\t\t *\n\t\t * @type {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending)}\n\t\t * @default NormalBlending\n\t\t */\n\t\tthis.blending = NormalBlending;\n\n\t\t/**\n\t\t * Defines which side of faces will be rendered - front, back or both.\n\t\t *\n\t\t * @type {(FrontSide|BackSide|DoubleSide)}\n\t\t * @default FrontSide\n\t\t */\n\t\tthis.side = FrontSide;\n\n\t\t/**\n\t\t * If set to `true`, vertex colors should be used.\n\t\t *\n\t\t * The engine supports RGB and RGBA vertex colors depending on whether a three (RGB) or\n\t\t * four (RGBA) component color buffer attribute is used.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.vertexColors = false;\n\n\t\t/**\n\t\t * Defines how transparent the material is.\n\t\t * A value of `0.0` indicates fully transparent, `1.0` is fully opaque.\n\t\t *\n\t\t * If the {@link Material#transparent} is not set to `true`,\n\t\t * the material will remain fully opaque and this value will only affect its color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.opacity = 1;\n\n\t\t/**\n\t\t * Defines whether this material is transparent. This has an effect on\n\t\t * rendering as transparent objects need special treatment and are rendered\n\t\t * after non-transparent objects.\n\t\t *\n\t\t * When set to true, the extent to which the material is transparent is\n\t\t * controlled by {@link Material#opacity}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.transparent = false;\n\n\t\t/**\n\t\t * Enables alpha hashed transparency, an alternative to {@link Material#transparent} or\n\t\t * {@link Material#alphaTest}. The material will not be rendered if opacity is lower than\n\t\t * a random threshold. Randomization introduces some grain or noise, but approximates alpha\n\t\t * blending without the associated problems of sorting. Using TAA can reduce the resulting noise.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaHash = false;\n\n\t\t/**\n\t\t * Defines the blending source factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default SrcAlphaFactor\n\t\t */\n\t\tthis.blendSrc = SrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending destination factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default OneMinusSrcAlphaFactor\n\t\t */\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending equation.\n\t\t *\n\t\t * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default AddEquation\n\t\t */\n\t\tthis.blendEquation = AddEquation;\n\n\t\t/**\n\t\t * Defines the blending source alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendSrcAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending destination alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendDstAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending equation of the alpha channel.\n\t\t *\n\t\t * @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendEquationAlpha = null;\n\n\t\t/**\n\t\t * Represents the RGB values of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantColor` or `OneMinusConstantColor`.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\n\t\t/**\n\t\t * Represents the alpha value of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantAlpha` or `OneMinusConstantAlpha`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.blendAlpha = 0;\n\n\t\t/**\n\t\t * Defines the depth function.\n\t\t *\n\t\t * @type {(NeverDepth|AlwaysDepth|LessDepth|LessEqualDepth|EqualDepth|GreaterEqualDepth|GreaterDepth|NotEqualDepth)}\n\t\t * @default LessEqualDepth\n\t\t */\n\t\tthis.depthFunc = LessEqualDepth;\n\n\t\t/**\n\t\t * Whether to have depth test enabled when rendering this material.\n\t\t * When the depth test is disabled, the depth write will also be implicitly disabled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthTest = true;\n\n\t\t/**\n\t\t * Whether rendering this material has any effect on the depth buffer.\n\t\t *\n\t\t * When drawing 2D overlays it can be useful to disable the depth writing in\n\t\t * order to layer several things together without creating z-index artifacts.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthWrite = true;\n\n\t\t/**\n\t\t * The bit mask to use when writing to the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilWriteMask = 0xff;\n\n\t\t/**\n\t\t * The stencil comparison function to use.\n\t\t *\n\t\t * @type {NeverStencilFunc|LessStencilFunc|EqualStencilFunc|LessEqualStencilFunc|GreaterStencilFunc|NotEqualStencilFunc|GreaterEqualStencilFunc|AlwaysStencilFunc}\n\t\t * @default AlwaysStencilFunc\n\t\t */\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\n\t\t/**\n\t\t * The value to use when performing stencil comparisons or stencil operations.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.stencilRef = 0;\n\n\t\t/**\n\t\t * The bit mask to use when comparing against the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilFuncMask = 0xff;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns `false`.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` but the depth test fails.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` and the depth test passes.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZPass = KeepStencilOp;\n\n\t\t/**\n\t\t * Whether stencil operations are performed against the stencil buffer. In\n\t\t * order to perform writes or comparisons against the stencil buffer this\n\t\t * value must be `true`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.stencilWrite = false;\n\n\t\t/**\n\t\t * User-defined clipping planes specified as THREE.Plane objects in world\n\t\t * space. These planes apply to the objects this material is attached to.\n\t\t * Points in space whose signed distance to the plane is negative are clipped\n\t\t * (not rendered). This requires {@link WebGLRenderer#localClippingEnabled} to\n\t\t * be `true`.\n\t\t *\n\t\t * @type {?Array}\n\t\t * @default null\n\t\t */\n\t\tthis.clippingPlanes = null;\n\n\t\t/**\n\t\t * Changes the behavior of clipping planes so that only their intersection is\n\t\t * clipped, rather than their union.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipIntersection = false;\n\n\t\t/**\n\t\t * Defines whether to clip shadows according to the clipping planes specified\n\t\t * on this material.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipShadows = false;\n\n\t\t/**\n\t\t * Defines which side of faces cast shadows. If `null`, the side casting shadows\n\t\t * is determined as follows:\n\t\t *\n\t\t * - When {@link Material#side} is set to `FrontSide`, the back side cast shadows.\n\t\t * - When {@link Material#side} is set to `BackSide`, the front side cast shadows.\n\t\t * - When {@link Material#side} is set to `DoubleSide`, both sides cast shadows.\n\t\t *\n\t\t * @type {?(FrontSide|BackSide|DoubleSide)}\n\t\t * @default null\n\t\t */\n\t\tthis.shadowSide = null;\n\n\t\t/**\n\t\t * Whether to render the material's color.\n\t\t *\n\t\t * This can be used in conjunction with {@link Object3D#renderOder} to create invisible\n\t\t * objects that occlude other objects.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.colorWrite = true;\n\n\t\t/**\n\t\t * Override the renderer's default precision for this material.\n\t\t *\n\t\t * @type {?('highp'|'mediump'|'lowp')}\n\t\t * @default null\n\t\t */\n\t\tthis.precision = null;\n\n\t\t/**\n\t\t * Whether to use polygon offset or not. When enabled, each fragment's depth value will\n\t\t * be offset after it is interpolated from the depth values of the appropriate vertices.\n\t\t * The offset is added before the depth test is performed and before the value is written\n\t\t * into the depth buffer.\n\t\t *\n\t\t * Can be useful for rendering hidden-line images, for applying decals to surfaces, and for\n\t\t * rendering solids with highlighted edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.polygonOffset = false;\n\n\t\t/**\n\t\t * Specifies a scale factor that is used to create a variable depth offset for each polygon.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetFactor = 0;\n\n\t\t/**\n\t\t * Is multiplied by an implementation-specific value to create a constant depth offset.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\t/**\n\t\t * Whether to apply dithering to the color to remove the appearance of banding.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.dithering = false;\n\n\t\t/**\n\t\t * Whether alpha to coverage should be enabled or not. Can only be used with MSAA-enabled contexts\n\t\t * (meaning when the renderer was created with *antialias* parameter set to `true`). Enabling this\n\t\t * will smooth aliasing on clip plane edges and alphaTest-clipped edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaToCoverage = false;\n\n\t\t/**\n\t\t * Whether to premultiply the alpha (transparency) value.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultipliedAlpha = false;\n\n\t\t/**\n\t\t * Whether double-sided, transparent objects should be rendered with a single pass or not.\n\t\t *\n\t\t * The engine renders double-sided, transparent objects with two draw calls (back faces first,\n\t\t * then front faces) to mitigate transparency artifacts. There are scenarios however where this\n\t\t * approach produces no quality gains but still doubles draw calls e.g. when rendering flat\n\t\t * vegetation like grass sprites. In these cases, set the `forceSinglePass` flag to `true` to\n\t\t * disable the two pass rendering to avoid performance issues.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.forceSinglePass = false;\n\n\t\t/**\n\t\t * Whether it's possible to override the material with {@link Scene#overrideMaterial} or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.allowOverride = true;\n\n\t\t/**\n\t\t * Defines whether 3D objects using this material are visible.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * Defines whether this material is tone mapped according to the renderer's tone mapping setting.\n\t\t *\n\t\t * It is ignored when rendering to a render target or using post processing or when using\n\t\t * `WebGPURenderer`. In all these cases, all materials are honored by tone mapping.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.toneMapped = true;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the Material. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Material#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\t/**\n\t * Sets the alpha value to be used when running an alpha test. The material\n\t * will not be rendered if the opacity is lower than this value.\n\t *\n\t * @type {number}\n\t * @readonly\n\t * @default 0\n\t */\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\t/**\n\t * An optional callback that is executed immediately before the material is used to render a 3D object.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {Scene} scene - The scene.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\t/**\n\t * An optional callback that is executed immediately before the shader\n\t * program is compiled. This function is called with the shader source code\n\t * as a parameter. Useful for the modification of built-in materials.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}. The\n\t * recommended approach when customizing materials is to use `WebGPURenderer` with the new\n\t * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}.\n\t *\n\t * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.\n\t * @param {WebGLRenderer} renderer - A reference to the renderer.\n\t */\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\t/**\n\t * In case {@link Material#onBeforeCompile} is used, this callback can be used to identify\n\t * values of settings used in `onBeforeCompile()`, so three.js can reuse a cached\n\t * shader or recompile the shader for this material as needed.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @return {string} The custom program cache key.\n\t */\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\t/**\n\t * This method can be used to set default values from parameter objects.\n\t * It is a generic implementation so it can be used with different types\n\t * of materials.\n\t *\n\t * @param {Object} [values] - The material values to set.\n\t */\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the material into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized material.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.sheenColorMap && this.sheenColorMap.isTexture ) {\n\n\t\t\tdata.sheenColorMap = this.sheenColorMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture ) {\n\n\t\t\tdata.sheenRoughnessMap = this.sheenRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Returns a new material with copied values from this instance.\n\t *\n\t * @return {Material} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given material to this instance.\n\t *\n\t * @param {Material} source - The material to copy.\n\t * @return {Material} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Material#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the material has been disposed of.\n\t\t *\n\t\t * @event Material#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the material\n\t * needs to be recompiled.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\n/**\n * A material for drawing geometries in a simple shaded (flat or wireframe) way.\n *\n * This material is not affected by lights.\n *\n * @augments Material\n */\nclass MeshBasicMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh basic material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Specular map used by the material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < -27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < -14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= -8388609; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n/**\n * Returns a half precision floating point value (FP16) from the given single\n * precision floating point value (FP32).\n *\n * @param {number} val - A single precision floating point value.\n * @return {number} The FP16 value.\n */\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, -65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n/**\n * Returns a single precision floating point value (FP32) from the given half\n * precision floating point value (FP16).\n *\n * @param {number} val - A half precision floating point value.\n * @return {number} The FP32 value.\n */\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\n/**\n * A class containing utility functions for data.\n *\n * @hideconstructor\n */\nclass DataUtils {\n\n\t/**\n\t * Returns a half precision floating point value (FP16) from the given single\n\t * precision floating point value (FP32).\n\t *\n\t * @param {number} val - A single precision floating point value.\n\t * @return {number} The FP16 value.\n\t */\n\tstatic toHalfFloat( val ) {\n\n\t\treturn toHalfFloat( val );\n\n\t}\n\n\t/**\n\t * Returns a single precision floating point value (FP32) from the given half\n\t * precision floating point value (FP16).\n\t *\n\t * @param {number} val - A half precision floating point value.\n\t * @return {number} The FP32 value.\n\t */\n\tstatic fromHalfFloat( val ) {\n\n\t\treturn fromHalfFloat( val );\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nlet _id$2 = 0;\n\n/**\n * This class stores data for an attribute (such as vertex positions, face\n * indices, normals, colors, UVs, and any custom attributes ) associated with\n * a geometry, which allows for more efficient passing of data to the GPU.\n *\n * When working with vector-like data, the `fromBufferAttribute( attribute, index )`\n * helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}.\n */\nclass BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {TypedArray} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBufferAttribute = true;\n\n\t\t/**\n\t\t * The ID of the buffer attribute.\n\t\t *\n\t\t * @name BufferAttribute#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The array holding the attribute data. It should have `itemSize * numVertices`\n\t\t * elements, where `numVertices` is the number of vertices in the associated geometry.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.array = array;\n\n\t\t/**\n\t\t * The number of values of the array that should be associated with a particular vertex.\n\t\t * For instance, if this attribute is storing a 3-component vector (such as a position,\n\t\t * normal, or color), then the value should be `3`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * Represents the number of items this buffer attribute stores. It is internally computed\n\t\t * by dividing the `array` length by the `itemSize`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\n\t\t/**\n\t\t * Applies to integer data only. Indicates how the underlying data in the buffer maps to\n\t\t * the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,\n\t\t * and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to\n\t\t * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted\n\t\t * to floats unmodified, i.e. `65535` becomes `65535.0f`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t\t/**\n\t\t * Defines the intended usage pattern of the data store for optimization purposes.\n\t\t *\n\t\t * Note: After the initial use of a buffer, its usage cannot be changed. Instead,\n\t\t * instantiate a new one and set the desired usage before the next render.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * This can be used to only update some components of stored vectors (for example, just the\n\t\t * component related to color). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * Configures the bound GPU type for use in shaders.\n\t\t *\n\t\t * Note: this only has an effect for integer arrays and is not configurable for float arrays.\n\t\t * For lower precision float types, use `Float16BufferAttribute`.\n\t\t *\n\t\t * @type {(FloatType|IntType)}\n\t\t * @default FloatType\n\t\t */\n\t\tthis.gpuType = FloatType;\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * A callback function that is executed after the renderer has transferred the attribute\n\t * array data to the GPU.\n\t */\n\tonUploadCallback() {}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the usage of this buffer attribute.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {BufferAttribute} A reference to this buffer attribute.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data array to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Copies the values of the given buffer attribute to this instance.\n\t *\n\t * @param {BufferAttribute} source - The buffer attribute to copy.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies a vector from the given buffer attribute to this one. The start\n\t * and destination position in the attribute buffers are represented by the\n\t * given indices.\n\t *\n\t * @param {number} index1 - The destination index into this buffer attribute.\n\t * @param {BufferAttribute} attribute - The buffer attribute to copy from.\n\t * @param {number} index2 - The source index into the given buffer attribute.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given array data into this buffer attribute.\n\t *\n\t * @param {(TypedArray|Array)} array - The array to copy.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 matrix to the given attribute. Works with\n\t * item size `2` and `3`.\n\t *\n\t * @param {Matrix3} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 normal matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix3} m - The normal matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3` and with direction vectors.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given array data in the buffer attribute.\n\t *\n\t * @param {(TypedArray|Array)} value - The array data to set.\n\t * @param {number} [offset=0] - The offset in this buffer attribute's array.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @return {number} The returned value.\n\t */\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\t/**\n\t * Sets the given value to the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @param {number} value - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The x component.\n\t */\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\t/**\n\t * Sets the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The y component.\n\t */\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\t/**\n\t * Sets the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} y - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The z component.\n\t */\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\t/**\n\t * Sets the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} z - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The w component.\n\t */\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\t/**\n\t * Sets the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} w - The value to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x and y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y, z and w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @param {number} w - The value for the w component to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given callback function that is executed after the Renderer has transferred\n\t * the attribute array data to the GPU. Can be used to perform clean-up operations after\n\t * the upload when attribute data are not needed anymore on the CPU side.\n\t *\n\t * @param {Function} callback - The `onUpload()` callback.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new buffer attribute with copied values from this instance.\n\t *\n\t * @return {BufferAttribute} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\t/**\n\t * Serializes the buffer attribute into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized buffer attribute.\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int8` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int8BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int8Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt8` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint8Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt8Clamped` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint8ClampedArray)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int16` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt16` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Int32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Int32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Int32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `UInt32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Float16` buffer attribute with\n * a plain `Array` instance.\n *\n * This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`\n * browser support is still problematic.\n *\n * @augments BufferAttribute\n */\nclass Float16BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Uint16Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Convenient class that can be used when creating a `Float32` buffer attribute with\n * a plain `Array` instance.\n *\n * @augments BufferAttribute\n */\nclass Float32BufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new buffer attribute.\n\t *\n\t * @param {(Array|Float32Array)} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\n/**\n * A representation of mesh, line, or point geometry. Includes vertex\n * positions, face indices, normals, colors, UVs, and custom attributes\n * within buffers, reducing the cost of passing all this data to the GPU.\n *\n * ```js\n * const geometry = new THREE.BufferGeometry();\n * // create a simple square shape. We duplicate the top left and bottom right\n * // vertices because each vertex needs to appear once per triangle.\n * const vertices = new Float32Array( [\n * \t-1.0, -1.0, 1.0, // v0\n * \t 1.0, -1.0, 1.0, // v1\n * \t 1.0, 1.0, 1.0, // v2\n *\n * \t 1.0, 1.0, 1.0, // v3\n * \t-1.0, 1.0, 1.0, // v4\n * \t-1.0, -1.0, 1.0 // v5\n * ] );\n * // itemSize = 3 because there are 3 values (components) per vertex\n * geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n * const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * ```\n *\n * @augments EventDispatcher\n */\nclass BufferGeometry extends EventDispatcher {\n\n\t/**\n\t * Constructs a new geometry.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBufferGeometry = true;\n\n\t\t/**\n\t\t * The ID of the geometry.\n\t\t *\n\t\t * @name BufferGeometry#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\t/**\n\t\t * The UUID of the geometry.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the geometry.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\t/**\n\t\t * Allows for vertices to be re-used across multiple triangles; this is\n\t\t * called using \"indexed triangles\". Each triangle is associated with the\n\t\t * indices of three vertices. This attribute therefore stores the index of\n\t\t * each vertex for each triangular face. If this attribute is not set, the\n\t\t * renderer assumes that each three contiguous positions represent a single triangle.\n\t\t *\n\t\t * @type {?BufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.index = null;\n\n\t\t/**\n\t\t * A (storage) buffer attribute which was generated with a compute shader and\n\t\t * now defines indirect draw calls.\n\t\t *\n\t\t * Can only be used with {@link WebGPURenderer} and a WebGPU backend.\n\t\t *\n\t\t * @type {?BufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.indirect = null;\n\n\t\t/**\n\t\t * This dictionary has as id the name of the attribute to be set and as value\n\t\t * the buffer attribute to set it to. Rather than accessing this property directly,\n\t\t * use `setAttribute()` and `getAttribute()` to access attributes of this geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.attributes = {};\n\n\t\t/**\n\t\t * This dictionary holds the morph targets of the geometry.\n\t\t *\n\t\t * Note: Once the geometry has been rendered, the morph attribute data cannot\n\t\t * be changed. You will have to call `dispose()?, and create a new geometry instance.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.morphAttributes = {};\n\n\t\t/**\n\t\t * Used to control the morph target behavior; when set to `true`, the morph\n\t\t * target data is treated as relative offsets, rather than as absolute\n\t\t * positions/normals.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.morphTargetsRelative = false;\n\n\t\t/**\n\t\t * Split the geometry into groups, each of which will be rendered in a\n\t\t * separate draw call. This allows an array of materials to be used with the geometry.\n\t\t *\n\t\t * Use `addGroup()` and `clearGroups()` to edit groups, rather than modifying this array directly.\n\t\t *\n\t\t * Every vertex and index must belong to exactly one group — groups must not share vertices or\n\t\t * indices, and must not leave vertices or indices unused.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.groups = [];\n\n\t\t/**\n\t\t * Bounding box for the geometry which can be calculated with `computeBoundingBox()`.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\t/**\n\t\t * Determines the part of the geometry to render. This should not be set directly,\n\t\t * instead use `setDrawRange()`.\n\t\t *\n\t\t * @type {{start:number,count:number}}\n\t\t */\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the geometry.\n\t\t * It should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t}\n\n\t/**\n\t * Returns the index of this geometry.\n\t *\n\t * @return {?BufferAttribute} The index. Returns `null` if no index is defined.\n\t */\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\t/**\n\t * Sets the given index to this geometry.\n\t *\n\t * @param {Array|BufferAttribute} index - The index to set.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given indirect attribute to this geometry.\n\t *\n\t * @param {BufferAttribute} indirect - The attribute holding indirect draw calls.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetIndirect( indirect ) {\n\n\t\tthis.indirect = indirect;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the indirect attribute of this geometry.\n\t *\n\t * @return {?BufferAttribute} The indirect attribute. Returns `null` if no indirect attribute is defined.\n\t */\n\tgetIndirect() {\n\n\t\treturn this.indirect;\n\n\t}\n\n\t/**\n\t * Returns the buffer attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @return {BufferAttribute|InterleavedBufferAttribute|undefined} The buffer attribute.\n\t * Returns `undefined` if not attribute has been found.\n\t */\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\t/**\n\t * Sets the given attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @param {BufferAttribute|InterleavedBufferAttribute} attribute - The attribute to set.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deletes the attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name to delete.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this geometry has an attribute for the given name.\n\t *\n\t * @param {string} name - The attribute name.\n\t * @return {boolean} Whether this geometry has an attribute for the given name or not.\n\t */\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\t/**\n\t * Adds a group to this geometry.\n\t *\n\t * @param {number} start - The first element in this draw call. That is the first\n\t * vertex for non-indexed geometry, otherwise the first triangle index.\n\t * @param {number} count - Specifies how many vertices (or indices) are part of this group.\n\t * @param {number} [materialIndex=0] - The material array index to use.\n\t */\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Clears all groups.\n\t */\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\t/**\n\t * Sets the draw range for this geometry.\n\t *\n\t * @param {number} start - The first vertex for non-indexed geometry, otherwise the first triangle index.\n\t * @param {number} count - For non-indexed BufferGeometry, `count` is the number of vertices to render.\n\t * For indexed BufferGeometry, `count` is the number of indices to render.\n\t */\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 transformation matrix to the geometry.\n\t *\n\t * @param {Matrix4} matrix - The matrix to apply.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the rotation represented by the Quaternion to the geometry.\n\t *\n\t * @param {Quaternion} q - The Quaternion to apply.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the X axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the Y axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry about the Z axis. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#rotation} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the geometry. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#position} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} x - The x offset.\n\t * @param {number} y - The y offset.\n\t * @param {number} z - The z offset.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales the geometry. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#scale} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {number} x - The x scale.\n\t * @param {number} y - The y scale.\n\t * @param {number} z - The z scale.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the geometry to face a point in 3D space. This is typically done as a one time\n\t * operation, and not during a loop. Use {@link Object3D#lookAt} for typical\n\t * real-time mesh rotation.\n\t *\n\t * @param {Vector3} vector - The target point.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Center the geometry based on its bounding box.\n\t *\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Defines a geometry by creating a `position` attribute based on the given array of points. The array\n\t * can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is\n\t * set to `0`.\n\t *\n\t * If the method is used with an existing `position` attribute, the vertex data are overwritten with the\n\t * data from the array. The length of the array must match the vertex count.\n\t *\n\t * @param {Array|Array} points - The points.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute === undefined ) {\n\n\t\t\tconst position = [];\n\n\t\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\t} else {\n\n\t\t\tconst l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size\n\n\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tpositionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tif ( points.length > positionAttribute.count ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );\n\n\t\t\t}\n\n\t\t\tpositionAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the geometry, and updates the `boundingBox` member.\n\t * The bounding box is not computed by the engine; it must be computed by your app.\n\t * You may need to recompute the bounding box if the geometry vertices are modified.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the geometry, and updates the `boundingSphere` member.\n\t * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.\n\t * You may need to recompute the bounding sphere if the geometry vertices are modified.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Calculates and adds a tangent attribute to this geometry.\n\t *\n\t * The computation is only supported for indexed geometries and if position, normal, and uv attributes\n\t * are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by\n\t * {@link BufferGeometryUtils#computeMikkTSpaceTangents} instead.\n\t */\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? -1 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes vertex normals for the given vertex data. For indexed geometries, the method sets\n\t * each vertex normal to be the average of the face normals of the faces that share that vertex.\n\t * For non-indexed geometries, vertices are not shared, and the method sets each vertex normal\n\t * to be the same as the face normal.\n\t */\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Ensures every normal vector in a geometry will have a magnitude of `1`. This will\n\t * correct lighting on the geometry surfaces.\n\t */\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Return a new non-index version of this indexed geometry. If the geometry\n\t * is already non-indexed, the method is a NOOP.\n\t *\n\t * @return {BufferGeometry} The non-indexed version of this indexed geometry.\n\t */\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\t/**\n\t * Serializes the geometry into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized geometry.\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = boundingSphere.toJSON();\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Returns a new geometry with copied values from this instance.\n\t *\n\t * @return {BufferGeometry} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given geometry to this instance.\n\t *\n\t * @param {BufferGeometry} source - The geometry to copy.\n\t * @return {BufferGeometry} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires BufferGeometry#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\n/**\n * Class representing triangular polygon mesh based objects.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments Object3D\n */\nclass Mesh extends Object3D {\n\n\t/**\n\t * Constructs a new mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\t/**\n\t\t * The mesh geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The mesh material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default MeshBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\t/**\n\t\t * The number of instances of this mesh.\n\t\t * Can only be used with {@link WebGPURenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.count = 1;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the local-space position of the vertex at the given index, taking into\n\t * account the current animation state of both morph targets and skinning.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * @return {Vector3} The vertex position in local space.\n\t */\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tconst barycoord = new Vector3();\n\t\tTriangle.getBarycoord( _intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord );\n\n\t\tif ( uv ) {\n\n\t\t\tintersection.uv = Triangle.getInterpolatedAttribute( uv, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\tintersection.uv1 = Triangle.getInterpolatedAttribute( uv1, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\tintersection.normal = Triangle.getInterpolatedAttribute( normal, a, b, c, barycoord, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( -1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\t\tintersection.barycoord = barycoord;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * A geometry class for a rectangular cuboid with a given width, height, and depth.\n * On creation, the cuboid is centred on the origin, with each edge parallel to one\n * of the axes.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const cube = new THREE.Mesh( geometry, material );\n * scene.add( cube );\n * ```\n *\n * @augments BufferGeometry\n */\nclass BoxGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new box geometry.\n\t *\n\t * @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis.\n\t * @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis.\n\t * @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis.\n\t * @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides.\n\t * @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides.\n\t * @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, -1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, -1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', -1, -1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : -1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {BoxGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n// Uniform Utilities\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * A material rendered with custom shaders. A shader is a small program written in GLSL.\n * that runs on the GPU. You may want to use a custom shader if you need to implement an\n * effect not included with any of the built-in materials.\n *\n * There are the following notes to bear in mind when using a `ShaderMaterial`:\n *\n * - `ShaderMaterial` can only be used with {@link WebGLRenderer}.\n * - Built in attributes and uniforms are passed to the shaders along with your code. If\n * you don't want that, use {@link RawShaderMaterial} instead.\n * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`\n * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has\n * to be placed right above the loop. The loop formatting has to correspond to a defined standard.\n * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.\n * - The loop variable has to be *i*.\n * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly\n * value of *i* for the given iteration and can be used in preprocessor\n * statements.\n *\n * ```js\n * const material = new THREE.ShaderMaterial( {\n * \tuniforms: {\n * \t\ttime: { value: 1.0 },\n * \t\tresolution: { value: new THREE.Vector2() }\n * \t},\n * \tvertexShader: document.getElementById( 'vertexShader' ).textContent,\n * \tfragmentShader: document.getElementById( 'fragmentShader' ).textContent\n * } );\n * ```\n *\n * @augments Material\n */\nclass ShaderMaterial extends Material {\n\n\t/**\n\t * Constructs a new shader material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\t/**\n\t\t * Defines custom constants using `#define` directives within the GLSL code\n\t\t * for both the vertex shader and the fragment shader; each key/value pair\n\t\t * yields another directive.\n\t\t * ```js\n\t\t * defines: {\n\t\t * \tFOO: 15,\n\t\t * \tBAR: true\n\t\t * }\n\t\t * ```\n\t\t * Yields the lines:\n\t\t * ```\n\t\t * #define FOO 15\n\t\t * #define BAR true\n\t\t * ```\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.defines = {};\n\n\t\t/**\n\t\t * An object of the form:\n\t\t * ```js\n\t\t * {\n\t\t * \t\"uniform1\": { value: 1.0 },\n\t\t * \t\"uniform2\": { value: 2 }\n\t\t * }\n\t\t * ```\n\t\t * specifying the uniforms to be passed to the shader code; keys are uniform\n\t\t * names, values are definitions of the form\n\t\t * ```\n\t\t * {\n\t\t * \tvalue: 1.0\n\t\t * }\n\t\t * ```\n\t\t * where `value` is the value of the uniform. Names must match the name of\n\t\t * the uniform, as defined in the GLSL code. Note that uniforms are refreshed\n\t\t * on every frame, so updating the value of the uniform will immediately\n\t\t * update the value available to the GLSL code.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.uniforms = {};\n\n\t\t/**\n\t\t * An array holding uniforms groups for configuring UBOs.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.uniformsGroups = [];\n\n\t\t/**\n\t\t * Vertex shader GLSL code. This is the actual code for the shader.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.vertexShader = default_vertex;\n\n\t\t/**\n\t\t * Fragment shader GLSL code. This is the actual code for the shader.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.fragmentShader = default_fragment;\n\n\t\t/**\n\t\t * Controls line thickness or lines.\n\t\t *\n\t\t * WebGL and WebGPU ignore this setting and always render line primitives with a\n\t\t * width of one pixel.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.linewidth = 1;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Define whether the material color is affected by global fog settings; `true`\n\t\t * to pass fog uniforms to the shader.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.fog = false;\n\n\t\t/**\n\t\t * Defines whether this material uses lighting; `true` to pass uniform data\n\t\t * related to lighting to this shader.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.lights = false;\n\n\t\t/**\n\t\t * Defines whether this material supports clipping; `true` to let the renderer\n\t\t * pass the clippingPlanes uniform.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipping = false;\n\n\t\t/**\n\t\t * Overwritten and set to `true` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.forceSinglePass = true;\n\n\t\t/**\n\t\t * This object allows to enable certain WebGL 2 extensions.\n\t\t *\n\t\t * - clipCullDistance: set to `true` to use vertex shader clipping\n\t\t * - multiDraw: set to `true` to use vertex shader multi_draw / enable gl_DrawID\n\t\t *\n\t\t * @type {{clipCullDistance:false,multiDraw:false}}\n\t\t */\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t/**\n\t\t * When the rendered geometry doesn't include these attributes but the\n\t\t * material does, these default values will be passed to the shaders. This\n\t\t * avoids errors when buffer data is missing.\n\t\t *\n\t\t * - color: [ 1, 1, 1 ]\n\t\t * - uv: [ 0, 0 ]\n\t\t * - uv1: [ 0, 0 ]\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\t/**\n\t\t * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}\n\t\t * to bind a generic vertex index to an attribute variable.\n\t\t *\n\t\t * @type {string|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.index0AttributeName = undefined;\n\n\t\t/**\n\t\t * Can be used to force a uniform update while changing uniforms in\n\t\t * {@link Object3D#onBeforeRender}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\t/**\n\t\t * Defines the GLSL version of custom shader code.\n\t\t *\n\t\t * @type {?(GLSL1|GLSL3)}\n\t\t * @default null\n\t\t */\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Abstract base class for cameras. This class should always be inherited\n * when you build a new camera.\n *\n * @abstract\n * @augments Object3D\n */\nclass Camera extends Object3D {\n\n\t/**\n\t * Constructs a new camera.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\t/**\n\t\t * The inverse of the camera's world matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\t/**\n\t\t * The camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The inverse of the camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The coordinate system in which the camera is used.\n\t\t *\n\t\t * @type {(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t */\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t\tthis._reversedDepth = false;\n\n\t}\n\n\t/**\n\t * The flag that indicates whether the camera uses a reversed depth buffer.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t */\n\tget reversedDepth() {\n\n\t\treturn this._reversedDepth;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * This method is overwritten since cameras have a different forward vector compared to other\n\t * 3D objects. A camera looks down its local, negative z-axis by default.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n/**\n * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.\n *\n * This projection mode is designed to mimic the way the human eye sees. It\n * is the most common projection mode used for rendering a 3D scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass PerspectiveCamera extends Camera {\n\n\t/**\n\t * Constructs a new perspective camera.\n\t *\n\t * @param {number} [fov=50] - The vertical field of view.\n\t * @param {number} [aspect=1] - The aspect ratio.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\t/**\n\t\t * The vertical field of view, from bottom to top of view,\n\t\t * in degrees.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 50\n\t\t */\n\t\tthis.fov = fov;\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link PerspectiveCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link OrthographicCamera}, `0` is not a\n\t\t * valid value for a perspective camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link PerspectiveCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\t/**\n\t\t * Object distance used for stereoscopy and depth-of-field effects. This\n\t\t * parameter does not influence the projection matrix unless a\n\t\t * {@link StereoCamera} is being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.focus = 10;\n\n\t\t/**\n\t\t * The aspect ratio, usually the canvas width / canvas height.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = aspect;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * Film size used for the larger axis. Default is `35` (millimeters). This\n\t\t * parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset}\n\t\t * is set to a nonzero value.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 35\n\t\t */\n\t\tthis.filmGauge = 35;\n\n\t\t/**\n\t\t * Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.filmOffset = 0;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Returns the focal length from the current {@link PerspectiveCamera#fov} and\n\t * {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The computed focal length.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\t/**\n\t * Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}.\n\t *\n\t * @return {number} The effective FOV.\n\t */\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\t/**\n\t * Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector.\n\t * @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( -1, -1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} target - The target vector that is used to store result where x is width and y is height.\n\t * @returns {Vector2} The view size.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *```\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *```\n\t * then for each monitor you would call it like this:\n\t *```js\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * // --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * // --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * // --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * // --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * // --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * // --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t * ```\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = -0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem, this.reversedDepth );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = -90; // negative fov is not an error\nconst aspect = 1;\n\n/**\n * A special type of camera that is positioned in 3D space to render its surroundings into a\n * cube render target. The render target can then be used as an environment map for rendering\n * realtime reflections in your scene.\n *\n * ```js\n * // Create cube render target\n * const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 256, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );\n *\n * // Create cube camera\n * const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );\n * scene.add( cubeCamera );\n *\n * // Create car\n * const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );\n * const car = new THREE.Mesh( carGeometry, chromeMaterial );\n * scene.add( car );\n *\n * // Update the render target cube\n * car.visible = false;\n * cubeCamera.position.copy( car.position );\n * cubeCamera.update( renderer, scene );\n *\n * // Render the scene\n * car.visible = true;\n * renderer.render( scene, camera );\n * ```\n *\n * @augments Object3D\n */\nclass CubeCamera extends Object3D {\n\n\t/**\n\t * Constructs a new cube camera.\n\t *\n\t * @param {number} near - The camera's near plane.\n\t * @param {number} far - The camera's far plane.\n\t * @param {WebGLCubeRenderTarget} renderTarget - The cube render target.\n\t */\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\t/**\n\t\t * A reference to the cube render target.\n\t\t *\n\t\t * @type {WebGLCubeRenderTarget}\n\t\t */\n\t\tthis.renderTarget = renderTarget;\n\n\t\t/**\n\t\t * The current active coordinate system.\n\t\t *\n\t\t * @type {?(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t * @default null\n\t\t */\n\t\tthis.coordinateSystem = null;\n\n\t\t/**\n\t\t * The current active mipmap level\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\t/**\n\t * Must be called when the coordinate system of the cube camera is changed.\n\t */\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, -1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, -1, 0 );\n\t\t\tcameraPX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, -1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, -1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, -1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, -1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Calling this method will render the given scene with the given renderer\n\t * into the cube render target of the camera.\n\t *\n\t * @param {(Renderer|WebGLRenderer)} renderer - The renderer.\n\t * @param {Scene} scene - The scene to render.\n\t */\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\n/**\n * Creates a cube texture made up of six images.\n *\n * ```js\n * const loader = new THREE.CubeTextureLoader();\n * loader.setPath( 'textures/cube/pisa/' );\n *\n * const textureCube = loader.load( [\n * \t'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'\n * ] );\n *\n * const material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } );\n * ```\n *\n * @augments Texture\n */\nclass CubeTexture extends Texture {\n\n\t/**\n\t * Constructs a new cube texture.\n\t *\n\t * @param {Array} [images=[]] - An array holding a image for each side of a cube.\n\t * @param {number} [mapping=CubeReflectionMapping] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space value.\n\t */\n\tconstructor( images = [], mapping = CubeReflectionMapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubeTexture = true;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t}\n\n\t/**\n\t * Alias for {@link CubeTexture#image}.\n\t *\n\t * @type {Array}\n\t */\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\n/**\n * A cube render target used in context of {@link WebGLRenderer}.\n *\n * @augments WebGLRenderTarget\n */\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\t/**\n\t * Constructs a new cube render target.\n\t *\n\t * @param {number} [size=1] - The size of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {DataArrayTexture}\n\t\t */\n\t\tthis.texture = new CubeTexture( images );\n\t\tthis._setTextureOptions( options );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n\t/**\n\t * Converts the given equirectangular texture to a cube map.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {Texture} texture - The equirectangular texture.\n\t * @return {WebGLCubeRenderTarget} A reference to this cube render target.\n\t */\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Clears this cube render target.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.\n\t * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.\n\t * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.\n\t */\n\tclear( renderer, color = true, depth = true, stencil = true ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\n/**\n * This is almost identical to an {@link Object3D}. Its purpose is to\n * make working with groups of objects syntactically clearer.\n *\n * ```js\n * // Create a group and add the two cubes.\n * // These cubes can now be rotated / scaled etc as a group.\n * const group = new THREE.Group();\n *\n * group.add( meshA );\n * group.add( meshB );\n *\n * scene.add( group );\n * ```\n *\n * @augments Object3D\n */\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\n/**\n * Class for representing a XR controller with its\n * different coordinate systems.\n *\n * @private\n */\nclass WebXRController {\n\n\t/**\n\t * Constructs a new XR controller.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * A group representing the target ray space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._targetRay = null;\n\n\t\t/**\n\t\t * A group representing the grip space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._grip = null;\n\n\t\t/**\n\t\t * A group representing the hand space\n\t\t * of the XR controller.\n\t\t *\n\t\t * @private\n\t\t * @type {?Group}\n\t\t * @default null\n\t\t */\n\t\tthis._hand = null;\n\n\t}\n\n\t/**\n\t * Returns a group representing the hand space of the XR controller.\n\t *\n\t * @return {Group} A group representing the hand space of the XR controller.\n\t */\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\t/**\n\t * Returns a group representing the target ray space of the XR controller.\n\t *\n\t * @return {Group} A group representing the target ray space of the XR controller.\n\t */\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\t/**\n\t * Returns a group representing the grip space of the XR controller.\n\t *\n\t * @return {Group} A group representing the grip space of the XR controller.\n\t */\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\t/**\n\t * Dispatches the given event to the groups representing\n\t * the different coordinate spaces of the XR controller.\n\t *\n\t * @param {Object} event - The event to dispatch.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Connects the controller with the given XR input source.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Disconnects the controller from the given XR input source.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Updates the controller with the given input source, XR frame and reference space.\n\t * This updates the transformations of the groups that represent the different\n\t * coordinate systems of the controller.\n\t *\n\t * @param {XRInputSource} inputSource - The input source.\n\t * @param {XRFrame} frame - The XR frame.\n\t * @param {XRReferenceSpace} referenceSpace - The reference space.\n\t * @return {WebXRController} A reference to this instance.\n\t */\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a group representing the hand joint for the given input joint.\n\t *\n\t * @private\n\t * @param {Group} hand - The group representing the hand space.\n\t * @param {XRJointSpace} inputjoint - The hand joint data.\n\t * @return {Group} A group representing the hand joint for the given input joint.\n\t */\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\n/**\n * This class can be used to define an exponential squared fog,\n * which gives a clear view near the camera and a faster than exponentially\n * densening fog farther from the camera.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 );\n * ```\n */\nclass FogExp2 {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [density=0.00025] - Defines how fast the fog will grow dense.\n\t */\n\tconstructor( color, density = 0.00025 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFogExp2 = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * Defines how fast the fog will grow dense.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.00025\n\t\t */\n\t\tthis.density = density;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {FogExp2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\n/**\n * This class can be used to define a linear fog that grows linearly denser\n * with the distance.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.Fog( 0xcccccc, 10, 15 );\n * ```\n */\nclass Fog {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [near=1] - The minimum distance to start applying fog.\n\t * @param {number} [far=1000] - The maximum distance at which fog stops being calculated and applied.\n\t */\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFog = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The minimum distance to start applying fog. Objects that are less than\n\t\t * `near` units from the active camera won't be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The maximum distance at which fog stops being calculated and applied.\n\t\t * Objects that are more than `far` units away from the active camera won't\n\t\t * be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1000\n\t\t */\n\t\tthis.far = far;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {Fog} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\n/**\n * Scenes allow you to set up what is to be rendered and where by three.js.\n * This is where you place 3D objects like meshes, lines or lights.\n *\n * @augments Object3D\n */\nclass Scene extends Object3D {\n\n\t/**\n\t * Constructs a new scene.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\t/**\n\t\t * Defines the background of the scene. Valid inputs are:\n\t\t *\n\t\t * - A color for defining a uniform colored background.\n\t\t * - A texture for defining a (flat) textured background.\n\t\t * - Cube textures or equirectangular textures for defining a skybox.\n\t\t *\n\t\t * @type {?(Color|Texture)}\n\t\t * @default null\n\t\t */\n\t\tthis.background = null;\n\n\t\t/**\n\t\t * Sets the environment map for all physical materials in the scene. However,\n\t\t * it's not possible to overwrite an existing texture assigned to the `envMap`\n\t\t * material property.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.environment = null;\n\n\t\t/**\n\t\t * A fog instance defining the type of fog that affects everything\n\t\t * rendered in the scene.\n\t\t *\n\t\t * @type {?(Fog|FogExp2)}\n\t\t * @default null\n\t\t */\n\t\tthis.fog = null;\n\n\t\t/**\n\t\t * Sets the blurriness of the background. Only influences environment maps\n\t\t * assigned to {@link Scene#background}. Valid input is a float between `0`\n\t\t * and `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.backgroundBlurriness = 0;\n\n\t\t/**\n\t\t * Attenuates the color of the background. Only applies to background textures.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.backgroundIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the background in radians. Only influences environment maps\n\t\t * assigned to {@link Scene#background}.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.backgroundRotation = new Euler();\n\n\t\t/**\n\t\t * Attenuates the color of the environment. Only influences environment maps\n\t\t * assigned to {@link Scene#environment}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.environmentIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians. Only influences physical materials\n\t\t * in the scene when {@link Scene#environment} is used.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.environmentRotation = new Euler();\n\n\t\t/**\n\t\t * Forces everything in the scene to be rendered with the defined material. It is possible\n\t\t * to exclude materials from override by setting {@link Material#allowOverride} to `false`.\n\t\t *\n\t\t * @type {?Material}\n\t\t * @default null\n\t\t */\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * \"Interleaved\" means that multiple attributes, possibly of different types,\n * (e.g., position, normal, uv, color) are packed into a single array buffer.\n *\n * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}\n */\nclass InterleavedBuffer {\n\n\t/**\n\t * Constructs a new interleaved buffer.\n\t *\n\t * @param {TypedArray} array - A typed array with a shared buffer storing attribute data.\n\t * @param {number} stride - The number of typed-array elements per vertex.\n\t */\n\tconstructor( array, stride ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInterleavedBuffer = true;\n\n\t\t/**\n\t\t * A typed array with a shared buffer storing attribute data.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.array = array;\n\n\t\t/**\n\t\t * The number of typed-array elements per vertex.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.stride = stride;\n\n\t\t/**\n\t\t * The total number of elements in the array\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\t/**\n\t\t * Defines the intended usage pattern of the data store for optimization purposes.\n\t\t *\n\t\t * Note: After the initial use of a buffer, its usage cannot be changed. Instead,\n\t\t * instantiate a new one and set the desired usage before the next render.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * This can be used to only update some components of stored vectors (for example, just the\n\t\t * component related to color). Use the `addUpdateRange()` function to add ranges to this array.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.updateRanges = [];\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t\t/**\n\t\t * The UUID of the interleaved buffer.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\t/**\n\t * A callback function that is executed after the renderer has transferred the attribute array\n\t * data to the GPU.\n\t */\n\tonUploadCallback() {}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the usage of this interleaved buffer.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {InterleavedBuffer} A reference to this interleaved buffer.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a range of data in the data array to be updated on the GPU.\n\t *\n\t * @param {number} start - Position at which to start update.\n\t * @param {number} count - The number of components to update.\n\t */\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\t/**\n\t * Clears the update ranges.\n\t */\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\t/**\n\t * Copies the values of the given interleaved buffer to this instance.\n\t *\n\t * @param {InterleavedBuffer} source - The interleaved buffer to copy.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies a vector from the given interleaved buffer to this one. The start\n\t * and destination position in the attribute buffers are represented by the\n\t * given indices.\n\t *\n\t * @param {number} index1 - The destination index into this interleaved buffer.\n\t * @param {InterleavedBuffer} interleavedBuffer - The interleaved buffer to copy from.\n\t * @param {number} index2 - The source index into the given interleaved buffer.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tcopyAt( index1, interleavedBuffer, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= interleavedBuffer.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = interleavedBuffer.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given array data in the interleaved buffer.\n\t *\n\t * @param {(TypedArray|Array)} value - The array data to set.\n\t * @param {number} [offset=0] - The offset in this interleaved buffer's array.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new interleaved buffer with copied values from this instance.\n\t *\n\t * @param {Object} [data] - An object with shared array buffers that allows to retain shared structures.\n\t * @return {InterleavedBuffer} A clone of this instance.\n\t */\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\t/**\n\t * Sets the given callback function that is executed after the Renderer has transferred\n\t * the array data to the GPU. Can be used to perform clean-up operations after\n\t * the upload when data are not needed anymore on the CPU side.\n\t *\n\t * @param {Function} callback - The `onUpload()` callback.\n\t * @return {InterleavedBuffer} A reference to this instance.\n\t */\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the interleaved buffer into JSON.\n\t *\n\t * @param {Object} [data] - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized interleaved buffer.\n\t */\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\n/**\n * An alternative version of a buffer attribute with interleaved data. Interleaved\n * attributes share a common interleaved data storage ({@link InterleavedBuffer}) and refer with\n * different offsets into the buffer.\n */\nclass InterleavedBufferAttribute {\n\n\t/**\n\t * Constructs a new interleaved buffer attribute.\n\t *\n\t * @param {InterleavedBuffer} interleavedBuffer - The buffer holding the interleaved data.\n\t * @param {number} itemSize - The item size.\n\t * @param {number} offset - The attribute offset into the buffer.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The buffer holding the interleaved data.\n\t\t *\n\t\t * @type {InterleavedBuffer}\n\t\t */\n\t\tthis.data = interleavedBuffer;\n\n\t\t/**\n\t\t * The item size, see {@link BufferAttribute#itemSize}.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * The attribute offset into the buffer.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.offset = offset;\n\n\t\t/**\n\t\t * Whether the data are normalized or not, see {@link BufferAttribute#normalized}\n\t\t *\n\t\t * @type {InterleavedBuffer}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t}\n\n\t/**\n\t * The item count of this buffer attribute.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\t/**\n\t * The array holding the interleaved buffer attribute data.\n\t *\n\t * @type {TypedArray}\n\t */\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 3x3 normal matrix to the given attribute. Only works with\n\t * item size `3`.\n\t *\n\t * @param {Matrix3} m - The normal matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given 4x4 matrix to the given attribute. Only works with\n\t * item size `3` and with direction vectors.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @return {number} The returned value.\n\t */\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\t/**\n\t * Sets the given value to the given component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} component - The component index.\n\t * @param {number} value - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} y - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} z - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} w - The value to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the x component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The x component.\n\t */\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\t/**\n\t * Returns the y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The y component.\n\t */\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\t/**\n\t * Returns the z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The z component.\n\t */\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\t/**\n\t * Returns the w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @return {number} The w component.\n\t */\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\t/**\n\t * Sets the x and y component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y, z and w component of the vector at the given index.\n\t *\n\t * @param {number} index - The index into the buffer attribute.\n\t * @param {number} x - The value for the x component to set.\n\t * @param {number} y - The value for the y component to set.\n\t * @param {number} z - The value for the z component to set.\n\t * @param {number} w - The value for the w component to set.\n\t * @return {InterleavedBufferAttribute} A reference to this instance.\n\t */\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new buffer attribute with copied values from this instance.\n\t *\n\t * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.\n\t *\n\t * @param {Object} [data] - An object with interleaved buffers that allows to retain the interleaved property.\n\t * @return {BufferAttribute|InterleavedBufferAttribute} A clone of this instance.\n\t */\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the buffer attribute into JSON.\n\t *\n\t * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.\n\t *\n\t * @param {Object} [data] - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized buffer attribute.\n\t */\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * A material for rendering instances of {@link Sprite}.\n *\n * ```js\n * const map = new THREE.TextureLoader().load( 'textures/sprite.png' );\n * const material = new THREE.SpriteMaterial( { map: map, color: 0xffffff } );\n *\n * const sprite = new THREE.Sprite( material );\n * sprite.scale.set(200, 200, 1)\n * scene.add( sprite );\n * ```\n *\n * @augments Material\n */\nclass SpriteMaterial extends Material {\n\n\t/**\n\t * Constructs a new sprite material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The rotation of the sprite in radians.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.rotation = 0;\n\n\t\t/**\n\t\t * Specifies whether size of the sprite is attenuated by the camera depth (perspective camera only).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sizeAttenuation = true;\n\n\t\t/**\n\t\t * Overwritten since sprite materials are transparent\n\t\t * by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.transparent = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\n/**\n * A sprite is a plane that always faces towards the camera, generally with a\n * partially transparent texture applied.\n *\n * Sprites do not cast shadows, setting {@link Object3D#castShadow} to `true` will\n * have no effect.\n *\n * ```js\n * const map = new THREE.TextureLoader().load( 'sprite.png' );\n * const material = new THREE.SpriteMaterial( { map: map } );\n *\n * const sprite = new THREE.Sprite( material );\n * scene.add( sprite );\n * ```\n *\n * @augments Object3D\n */\nclass Sprite extends Object3D {\n\n\t/**\n\t * Constructs a new sprite.\n\t *\n\t * @param {(SpriteMaterial|SpriteNodeMaterial)} [material] - The sprite material.\n\t */\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t-0.5, -0.5, 0, 0, 0,\n\t\t\t\t0.5, -0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t-0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\t/**\n\t\t * The sprite geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = _geometry;\n\n\t\t/**\n\t\t * The sprite material.\n\t\t *\n\t\t * @type {(SpriteMaterial|SpriteNodeMaterial)}\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * The sprite's anchor point, and the point around which the sprite rotates.\n\t\t * A value of `(0.5, 0.5)` corresponds to the midpoint of the sprite. A value\n\t\t * of `(0, 0)` corresponds to the lower left corner of the sprite.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t\t/**\n\t\t * The number of instances of this sprite.\n\t\t * Can only be used with {@link WebGPURenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.count = 1;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this sprite.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( -0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( -0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A component for providing a basic Level of Detail (LOD) mechanism.\n *\n * Every LOD level is associated with an object, and rendering can be switched\n * between them at the distances specified. Typically you would create, say,\n * three meshes, one for far away (low detail), one for mid range (medium\n * detail) and one for close up (high detail).\n *\n * ```js\n * const lod = new THREE.LOD();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n *\n * //Create spheres with 3 levels of detail and create new LOD levels for them\n * for( let i = 0; i < 3; i++ ) {\n *\n * \tconst geometry = new THREE.IcosahedronGeometry( 10, 3 - i );\n * \tconst mesh = new THREE.Mesh( geometry, material );\n * \tlod.addLevel( mesh, i * 75 );\n *\n * }\n *\n * scene.add( lod );\n * ```\n *\n * @augments Object3D\n */\nclass LOD extends Object3D {\n\n\t/**\n\t * Constructs a new LOD.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLOD = true;\n\n\t\t/**\n\t\t * The current LOD index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * This array holds the LOD levels.\n\t\t\t *\n\t\t\t * @name LOD#levels\n\t\t\t * @type {Array<{object:Object3D,distance:number,hysteresis:number}>}\n\t\t\t */\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Whether the LOD object is updated automatically by the renderer per frame\n\t\t * or not. If set to `false`, you have to call {@link LOD#update} in the\n\t\t * render loop by yourself.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a mesh that will display at a certain distance and greater. Typically\n\t * the further away the distance, the lower the detail on the mesh.\n\t *\n\t * @param {Object3D} object - The 3D object to display at this level.\n\t * @param {number} [distance=0] - The distance at which to display this level of detail.\n\t * @param {number} [hysteresis=0] - Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.\n\t * @return {LOD} A reference to this instance.\n\t */\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes an existing level, based on the distance from the camera.\n\t * Returns `true` when the level has been removed. Otherwise `false`.\n\t *\n\t * @param {number} distance - Distance of the level to remove.\n\t * @return {boolean} Whether the level has been removed or not.\n\t */\n\tremoveLevel( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0; i < levels.length; i ++ ) {\n\n\t\t\tif ( levels[ i ].distance === distance ) {\n\n\t\t\t\tconst removedElements = levels.splice( i, 1 );\n\t\t\t\tthis.remove( removedElements[ 0 ].object );\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns the currently active LOD level index.\n\t *\n\t * @return {number} The current active LOD level index.\n\t */\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\t/**\n\t * Returns a reference to the first 3D object that is greater than\n\t * the given distance.\n\t *\n\t * @param {number} distance - The LOD distance.\n\t * @return {?Object3D} The found 3D object. `null` if no 3D object has been found.\n\t */\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this LOD.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the LOD by computing which LOD level should be visible according\n\t * to the current distance of the given camera.\n\t *\n\t * @param {Camera} camera - The camera the scene is rendered with.\n\t */\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\n/**\n * A mesh that has a {@link Skeleton} that can then be used to animate the\n * vertices of the geometry with skinning/skeleton animation.\n *\n * Next to a valid skeleton, the skinned mesh requires skin indices and weights\n * as buffer attributes in its geometry. These attribute define which bones affect a single\n * vertex to a certain extend.\n *\n * Typically skinned meshes are not created manually but loaders like {@link GLTFLoader}\n * or {@link FBXLoader } import respective models.\n *\n * @augments Mesh\n */\nclass SkinnedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new skinned mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\t/**\n\t\t * `AttachedBindMode` means the skinned mesh shares the same world space as the skeleton.\n\t\t * This is not true when using `DetachedBindMode` which is useful when sharing a skeleton\n\t\t * across multiple skinned meshes.\n\t\t *\n\t\t * @type {(AttachedBindMode|DetachedBindMode)}\n\t\t * @default AttachedBindMode\n\t\t */\n\t\tthis.bindMode = AttachedBindMode;\n\n\t\t/**\n\t\t * The base matrix that is used for the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The base matrix that is used for resetting the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The bounding box of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * If the skinned mesh is animated, the bounding box should be recomputed per frame in order to reflect\n\t * the current animation state.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the skinned mesh, and updates {@link SkinnedMesh#boundingSphere}.\n\t * The bounding sphere is automatically computed by the engine once when it is needed, e.g., for ray casting\n\t * and view frustum culling. If the skinned mesh is animated, the bounding sphere should be recomputed\n\t * per frame in order to reflect the current animation state.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$5.copy( this.boundingSphere );\n\t\t_sphere$5.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$5 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Binds the given skeleton to the skinned mesh.\n\t *\n\t * @param {Skeleton} skeleton - The skeleton to bind.\n\t * @param {Matrix4} [bindMatrix] - The bind matrix. If no bind matrix is provided,\n\t * the skinned mesh's world matrix will be used instead.\n\t */\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\t/**\n\t * This method sets the skinned mesh in the rest pose).\n\t */\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\t/**\n\t * Normalizes the skin weights which are defined as a buffer attribute\n\t * in the skinned mesh's geometry.\n\t */\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the bone transform associated with the given index to the given\n\t * vertex position. Returns the updated vector.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * the skinned mesh's world matrix will be used instead.\n\t * @return {Vector3} The updated vertex position.\n\t */\n\tapplyBoneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\n/**\n * A bone which is part of a {@link Skeleton}. The skeleton in turn is used by\n * the {@link SkinnedMesh}.\n *\n * ```js\n * const root = new THREE.Bone();\n * const child = new THREE.Bone();\n *\n * root.add( child );\n * child.position.y = 5;\n * ```\n *\n * @augments Object3D\n */\nclass Bone extends Object3D {\n\n\t/**\n\t * Constructs a new bone.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\n/**\n * Creates a texture directly from raw buffer data.\n *\n * The interpretation of the data depends on type and format: If the type is\n * `UnsignedByteType`, a `Uint8Array` will be useful for addressing the\n * texel data. If the format is `RGBAFormat`, data needs four values for\n * one texel; Red, Green, Blue and Alpha (typically the opacity).\n *\n * @augments Texture\n */\nclass DataTexture extends Texture {\n\n\t/**\n\t * Constructs a new data texture.\n\t *\n\t * @param {?TypedArray} [data=null] - The buffer data.\n\t * @param {number} [width=1] - The width of the texture.\n\t * @param {number} [height=1] - The height of the texture.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=NearestFilter] - The mag filter value.\n\t * @param {number} [minFilter=NearestFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDataTexture = true;\n\n\t\t/**\n\t\t * The image definition of a data texture.\n\t\t *\n\t\t * @type {{data:TypedArray,width:number,height:number}}\n\t\t */\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t *\n\t\t * Overwritten and set to `1` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default 1\n\t\t */\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * Class for representing the armatures in `three.js`. The skeleton\n * is defined by a hierarchy of bones.\n *\n * ```js\n * const bones = [];\n *\n * const shoulder = new THREE.Bone();\n * const elbow = new THREE.Bone();\n * const hand = new THREE.Bone();\n *\n * shoulder.add( elbow );\n * elbow.add( hand );\n *\n * bones.push( shoulder , elbow, hand);\n *\n * shoulder.position.y = -5;\n * elbow.position.y = 0;\n * hand.position.y = 5;\n *\n * const armSkeleton = new THREE.Skeleton( bones );\n * ```\n */\nclass Skeleton {\n\n\t/**\n\t * Constructs a new skeleton.\n\t *\n\t * @param {Array} [bones] - An array of bones.\n\t * @param {Array} [boneInverses] - An array of bone inverse matrices.\n\t * If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}.\n\t */\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * An array of bones defining the skeleton.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.bones = bones.slice( 0 );\n\n\t\t/**\n\t\t * An array of bone inverse matrices.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.boneInverses = boneInverses;\n\n\t\t/**\n\t\t * An array buffer holding the bone data.\n\t\t * Input data for {@link Skeleton#boneTexture}.\n\t\t *\n\t\t * @type {?Float32Array}\n\t\t * @default null\n\t\t */\n\t\tthis.boneMatrices = null;\n\n\t\t/**\n\t\t * A texture holding the bone data for use\n\t\t * in the vertex shader.\n\t\t *\n\t\t * @type {?DataTexture}\n\t\t * @default null\n\t\t */\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\t/**\n\t * Initializes the skeleton. This method gets automatically called by the constructor\n\t * but depending on how the skeleton is created it might be necessary to call this method\n\t * manually.\n\t */\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses}\n\t * and fills it with new matrices.\n\t */\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new skeleton with copied values from this instance.\n\t *\n\t * @return {Skeleton} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\t/**\n\t * Computes a data texture for passing bone data to the vertex shader.\n\t *\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the skeleton's bone array and returns the first with a\n\t * matching name.\n\t *\n\t * @param {string} name - The name of the bone.\n\t * @return {Bone|undefined} The found bone. `undefined` if no bone has been found.\n\t */\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setups the skeleton by the given JSON and bones.\n\t *\n\t * @param {Object} json - The skeleton as serialized JSON.\n\t * @param {Object} bones - An array of bones.\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the skeleton into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized skeleton.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * An instanced version of a buffer attribute.\n *\n * @augments BufferAttribute\n */\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\t/**\n\t * Constructs a new instanced buffer attribute.\n\t *\n\t * @param {TypedArray} array - The array holding the attribute data.\n\t * @param {number} itemSize - The item size.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t * @param {number} [meshPerAttribute=1] - How often a value of this buffer attribute should be repeated.\n\t */\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\t/**\n\t\t * Defines how often a value of this buffer attribute should be repeated. A\n\t\t * value of one means that each value of the instanced attribute is used for\n\t\t * a single instance. A value of two means that each value is used for two\n\t\t * consecutive instances (and so on).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\n\n/**\n * A special version of a mesh with instanced rendering support. Use\n * this class if you have to render a large number of objects with the same\n * geometry and material(s) but with different world transformations. The usage\n * of 'InstancedMesh' will help you to reduce the number of draw calls and thus\n * improve the overall rendering performance in your application.\n *\n * @augments Mesh\n */\nclass InstancedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new instanced mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array} [material] - The mesh material.\n\t * @param {number} count - The number of instances.\n\t */\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedMesh = true;\n\n\t\t/**\n\t\t * Represents the local transformation of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMatrixAt}.\n\t\t *\n\t\t * @type {InstancedBufferAttribute}\n\t\t */\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\t\t/**\n\t\t * Represents the color of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setColorAt}.\n\t\t *\n\t\t * @type {?InstancedBufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.instanceColor = null;\n\n\t\t/**\n\t\t * Represents the morph target weights of all instances. You have to set its\n\t\t * {@link Texture#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMorphAt}.\n\t\t *\n\t\t * @type {?DataTexture}\n\t\t * @default null\n\t\t */\n\t\tthis.morphTexture = null;\n\n\t\t/**\n\t\t * The number of instances.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * The bounding box of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere}\n\t * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.\n\t * You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$4.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$4 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the color of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t */\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Gets the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t */\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Gets the morph target weights of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object - The target object that is used to store the method's result.\n\t */\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceColor} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The instance color.\n\t */\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The local transformation.\n\t */\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#morphTexture} to `true` after updating all the influences.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights\n\t * of a single instance.\n\t */\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\n/**\n * A two dimensional surface that extends infinitely in 3D space, represented\n * in [Hessian normal form]{@link http://mathworld.wolfram.com/HessianNormalForm.html}\n * by a unit length normal vector and a constant.\n */\nclass Plane {\n\n\t/**\n\t * Constructs a new plane.\n\t *\n\t * @param {Vector3} [normal=(1,0,0)] - A unit length vector defining the normal of the plane.\n\t * @param {number} [constant=0] - The signed distance from the origin to the plane.\n\t */\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPlane = true;\n\n\t\t/**\n\t\t * A unit length vector defining the normal of the plane.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.normal = normal;\n\n\t\t/**\n\t\t * The signed distance from the origin to the plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.constant = constant;\n\n\t}\n\n\t/**\n\t * Sets the plane components by copying the given values.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {number} constant - The constant.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane components by defining `x`, `y`, `z` as the\n\t * plane normal and `w` as the constant.\n\t *\n\t * @param {number} x - The value for the normal's x component.\n\t * @param {number} y - The value for the normal's y component.\n\t * @param {number} z - The value for the normal's z component.\n\t * @param {number} w - The constant value.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from the given normal and coplanar point (that is a point\n\t * that lies onto the plane).\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Vector3} point - A coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from three coplanar points. The winding order is\n\t * assumed to be counter-clockwise, and determines the direction of\n\t * the plane normal.\n\t *\n\t * @param {Vector3} a - The first coplanar point.\n\t * @param {Vector3} b - The second coplanar point.\n\t * @param {Vector3} c - The third coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given plane to this instance.\n\t *\n\t * @param {Plane} plane - The plane to copy.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Normalizes the plane normal and adjusts the constant accordingly.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Negates both the plane normal and the constant.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnegate() {\n\n\t\tthis.constant *= -1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given point to this plane.\n\t *\n\t * @param {Vector3} point - The point to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given sphere to this plane.\n\t *\n\t * @param {Sphere} sphere - The sphere to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\t/**\n\t * Projects a the given point onto the plane.\n\t *\n\t * @param {Vector3} point - The point to project.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The projected point on the plane.\n\t */\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the intersection point of the passed line and the plane. Returns\n\t * `null` if the line does not intersect. Returns the line's starting point if\n\t * the line is coplanar with the plane.\n\t *\n\t * @param {Line3} line - The line to compute the intersection for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given line segment intersects with (passes through) the plane.\n\t *\n\t * @param {Line3} line - The line to test.\n\t * @return {boolean} Whether the given line segment intersects with the plane or not.\n\t */\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with the plane.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with the plane or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with the plane.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with the plane or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns a coplanar vector to the plane, by calculating the\n\t * projection of the normal at the origin onto the plane.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The coplanar point.\n\t */\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\t/**\n\t * Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform.\n\t *\n\t * The optional normal matrix can be pre-computed like so:\n\t * ```js\n\t * const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\t * ```\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @param {Matrix4} [optionalNormalMatrix] - A pre-computed normal matrix.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the plane by the distance defined by the given offset vector.\n\t * Note that this only affects the plane constant and will not affect the normal vector.\n\t *\n\t * @param {Vector3} offset - The offset vector.\n\t * @return {Plane} A reference to this plane.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this plane is equal with the given one.\n\t *\n\t * @param {Plane} plane - The plane to test for equality.\n\t * @return {boolean} Whether this plane is equal with the given one.\n\t */\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\t/**\n\t * Returns a new plane with copied values from this instance.\n\t *\n\t * @return {Plane} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\nconst _defaultSpriteCenter = /*@__PURE__*/ new Vector2( 0.5, 0.5 );\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\n/**\n * Frustums are used to determine what is inside the camera's field of view.\n * They help speed up the rendering process - objects which lie outside a camera's\n * frustum can safely be excluded from rendering.\n *\n * This class is mainly intended for use internally by a renderer.\n */\nclass Frustum {\n\n\t/**\n\t * Constructs a new frustum.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t */\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\t/**\n\t\t * This array holds the planes that enclose the frustum.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\t/**\n\t * Sets the frustum planes by copying the given planes.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given frustum to this instance.\n\t *\n\t * @param {Frustum} frustum - The frustum to copy.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the frustum planes from the given projection matrix.\n\t *\n\t * @param {Matrix4} m - The projection matrix.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system.\n\t * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\n\t\tif ( reversedDepth ) {\n\n\t\t\tplanes[ 4 ].setComponents( me2, me6, me10, me14 ).normalize(); // far\n\t\t\tplanes[ 5 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // near\n\n\t\t} else {\n\n\t\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // far\n\n\t\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); // near\n\n\t\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize(); // near\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the 3D object's bounding sphere is intersecting this frustum.\n\t *\n\t * Note that the 3D object must have a geometry so that the bounding sphere can be calculated.\n\t *\n\t * @param {Object3D} object - The 3D object to test.\n\t * @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given sprite is intersecting this frustum.\n\t *\n\t * @param {Sprite} sprite - The sprite to test.\n\t * @return {boolean} Whether the sprite is intersecting this frustum or not.\n\t */\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$3.center.set( 0, 0, 0 );\n\n\t\tconst offset = _defaultSpriteCenter.distanceTo( sprite.center );\n\n\t\t_sphere$3.radius = 0.7071067811865476 + offset;\n\t\t_sphere$3.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere is intersecting this frustum.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box is intersecting this frustum.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box is intersecting this frustum or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$6 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within the frustum.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the point lies within this frustum or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns a new frustum with copied values from this instance.\n\t *\n\t * @return {Frustum} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum$1 = /*@__PURE__*/ new Frustum();\n\n/**\n * FrustumArray is used to determine if an object is visible in at least one camera\n * from an array of cameras. This is particularly useful for multi-view renderers.\n*/\nclass FrustumArray {\n\n\t/**\n\t * Constructs a new frustum array.\n\t *\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The coordinate system to use.\n\t\t *\n\t\t * @type {WebGLCoordinateSystem|WebGPUCoordinateSystem}\n\t\t * @default WebGLCoordinateSystem\n\t\t */\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\t/**\n\t * Returns `true` if the 3D object's bounding sphere is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Object3D} object - The 3D object to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the 3D object is visible in any camera.\n\t */\n\tintersectsObject( object, cameraArray ) {\n\n\t\tif ( ! cameraArray.isArrayCamera || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsObject( object ) ) {\n\n\t\t\t\treturn true; // Object is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given sprite is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Sprite} sprite - The sprite to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the sprite is visible in any camera.\n\t */\n\tintersectsSprite( sprite, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsSprite( sprite ) ) {\n\n\t\t\t\treturn true; // Sprite is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the sphere is visible in any camera.\n\t */\n\tintersectsSphere( sphere, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsSphere( sphere ) ) {\n\n\t\t\t\treturn true; // Sphere is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box is intersecting any frustum\n\t * from the camera array.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the box is visible in any camera.\n\t */\n\tintersectsBox( box, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.intersectsBox( box ) ) {\n\n\t\t\t\treturn true; // Box is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within any frustum\n\t * from the camera array.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @param {Object} cameraArray - An object with a cameras property containing an array of cameras.\n\t * @return {boolean} Whether the point is visible in any camera.\n\t */\n\tcontainsPoint( point, cameraArray ) {\n\n\t\tif ( ! cameraArray || ! cameraArray.cameras || cameraArray.cameras.length === 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < cameraArray.cameras.length; i ++ ) {\n\n\t\t\tconst camera = cameraArray.cameras[ i ];\n\n\t\t\t_projScreenMatrix$2.multiplyMatrices(\n\t\t\t\tcamera.projectionMatrix,\n\t\t\t\tcamera.matrixWorldInverse\n\t\t\t);\n\n\t\t\t_frustum$1.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t\tif ( _frustum$1.containsPoint( point ) ) {\n\n\t\t\t\treturn true; // Point is visible in at least one camera\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false; // Not visible in any camera\n\n\t}\n\n\t/**\n\t * Returns a new frustum array with copied values from this instance.\n\t *\n\t * @return {FrustumArray} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new FrustumArray();\n\n\t}\n\n}\n\nfunction ascIdSort( a, b ) {\n\n\treturn a - b;\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( start, count, z, index ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: -1,\n\t\t\t\tcount: -1,\n\t\t\t\tz: -1,\n\t\t\t\tindex: -1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = start;\n\t\titem.count = count;\n\t\titem.z = z;\n\t\titem.index = index;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _frustumArray = /*@__PURE__*/ new FrustumArray();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _forward$1 = /*@__PURE__*/ new Vector3();\nconst _temp = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\n// safely copies array contents to a potentially smaller array\nfunction copyArrayContents( src, target ) {\n\n\tif ( src.constructor !== target.constructor ) {\n\n\t\t// if arrays are of a different type (eg due to index size increasing) then data must be per-element copied\n\t\tconst len = Math.min( src.length, target.length );\n\t\tfor ( let i = 0; i < len; i ++ ) {\n\n\t\t\ttarget[ i ] = src[ i ];\n\n\t\t}\n\n\t} else {\n\n\t\t// if the arrays use the same data layout we can use a fast block copy\n\t\tconst len = Math.min( src.length, target.length );\n\t\ttarget.set( new src.constructor( src.buffer, 0, len ) );\n\n\t}\n\n}\n\n/**\n * A special version of a mesh with multi draw batch rendering support. Use\n * this class if you have to render a large number of objects with the same\n * material but with different geometries or world transformations. The usage of\n * `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall\n * rendering performance in your application.\n *\n * ```js\n * const box = new THREE.BoxGeometry( 1, 1, 1 );\n * const sphere = new THREE.SphereGeometry( 1, 12, 12 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n *\n * // initialize and add geometries into the batched mesh\n * const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );\n * const boxGeometryId = batchedMesh.addGeometry( box );\n * const sphereGeometryId = batchedMesh.addGeometry( sphere );\n *\n * // create instances of those geometries\n * const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId );\n * const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId );\n *\n * const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId );\n * const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId );\n *\n * // position the geometries\n * batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 );\n * batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 );\n *\n * batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 );\n * batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 );\n *\n * scene.add( batchedMesh );\n * ```\n *\n * @augments Mesh\n */\nclass BatchedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new batched mesh.\n\t *\n\t * @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered.\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries.\n\t * @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries\n\t * @param {Material|Array} [material] - The mesh material.\n\t */\n\tconstructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBatchedMesh = true;\n\n\t\t/**\n\t\t * When set ot `true`, the individual objects of a batch are frustum culled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.perObjectFrustumCulled = true;\n\n\t\t/**\n\t\t * When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts.\n\t\t * If the material is marked as \"transparent\" objects are rendered back to front and if not then they are\n\t\t * rendered front to back.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * The bounding box of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\t/**\n\t\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered\n\t\t * sort with.\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.customSort = null;\n\n\t\t// stores visible, active, and geometry id per instance and reserved buffer ranges for geometries\n\t\tthis._instanceInfo = [];\n\t\tthis._geometryInfo = [];\n\n\t\t// instance, geometry ids that have been set as inactive, and are available to be overwritten\n\t\tthis._availableInstanceIds = [];\n\t\tthis._availableGeometryIds = [];\n\n\t\t// used to track where the next point is that geometry should be inserted\n\t\tthis._nextIndexStart = 0;\n\t\tthis._nextVertexStart = 0;\n\t\tthis._geometryCount = 0;\n\n\t\t// flags\n\t\tthis._visibilityChanged = true;\n\t\tthis._geometryInitialized = false;\n\n\t\t// cached user options\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\t// buffers for multi draw\n\t\tthis._multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\t\tthis._indirectTexture = null;\n\t\tthis._colorsTexture = null;\n\n\t\tthis._initMatricesTexture();\n\t\tthis._initIndirectTexture();\n\n\t}\n\n\t/**\n\t * The maximum number of individual instances that can be stored in the batch.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget maxInstanceCount() {\n\n\t\treturn this._maxInstanceCount;\n\n\t}\n\n\t/**\n\t * The instance count.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget instanceCount() {\n\n\t\treturn this._instanceInfo.length - this._availableInstanceIds.length;\n\n\t}\n\n\t/**\n\t * The number of unused vertices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedVertexCount() {\n\n\t\treturn this._maxVertexCount - this._nextVertexStart;\n\n\t}\n\n\t/**\n\t * The number of unused indices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedIndexCount() {\n\n\t\treturn this._maxIndexCount - this._nextIndexStart;\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initIndirectTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\tconst indirectArray = new Uint32Array( size * size );\n\t\tconst indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );\n\n\t\tthis._indirectTexture = indirectTexture;\n\n\t}\n\n\t_initColorsTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\t// 4 floats per RGBA pixel initialized to white\n\t\tconst colorsArray = new Float32Array( size * size * 4 ).fill( 1 );\n\t\tconst colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );\n\t\tcolorsTexture.colorSpace = ColorManagement.workingColorSpace;\n\n\t\tthis._colorsTexture = colorsTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\t// Reserve last u16 index for primitive restart.\n\t\t\t\tconst indexArray = maxVertexCount > 65535\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `THREE.BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the instance defined by the given ID.\n\t *\n\t * @param {number} instanceId - The instance to validate.\n\t */\n\tvalidateInstanceId( instanceId ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the geometry defined by the given ID.\n\t *\n\t * @param {number} geometryId - The geometry to validate.\n\t */\n\tvalidateGeometryId( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered sort with.\n\t *\n\t * @param {Function} func - The custom sort function.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the bounding box, updating {@link BatchedMesh#boundingBox}.\n\t * Bounding boxes aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}.\n\t * Bounding spheres aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds a new instance to the batch using the geometry of the given ID and returns\n\t * a new id referring to the new instance to be used by other functions.\n\t *\n\t * @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}.\n\t * @return {number} The instance ID.\n\t */\n\taddInstance( geometryId ) {\n\n\t\tconst atCapacity = this._instanceInfo.length >= this.maxInstanceCount;\n\n\t\t// ensure we're not over geometry\n\t\tif ( atCapacity && this._availableInstanceIds.length === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\tconst instanceInfo = {\n\t\t\tvisible: true,\n\t\t\tactive: true,\n\t\t\tgeometryIndex: geometryId,\n\t\t};\n\n\t\tlet drawId = null;\n\n\t\t// Prioritize using previously freed instance ids\n\t\tif ( this._availableInstanceIds.length > 0 ) {\n\n\t\t\tthis._availableInstanceIds.sort( ascIdSort );\n\n\t\t\tdrawId = this._availableInstanceIds.shift();\n\t\t\tthis._instanceInfo[ drawId ] = instanceInfo;\n\n\t\t} else {\n\n\t\t\tdrawId = this._instanceInfo.length;\n\t\t\tthis._instanceInfo.push( instanceInfo );\n\n\t\t}\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\t_matrix$1.identity().toArray( matricesTexture.image.data, drawId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tif ( colorsTexture ) {\n\n\t\t\t_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );\n\t\t\tcolorsTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn drawId;\n\n\t}\n\n\t/**\n\t * Adds the given geometry to the batch and returns the associated\n\t * geometry id referring to it to be used in other functions.\n\t *\n\t * @param {BufferGeometry} geometry - The geometry to add.\n\t * @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of\n\t * vertex buffer space to reserve for the added geometry. This is necessary if it is planned\n\t * to set a new geometry at this index at a later time that is larger than the original geometry.\n\t * Defaults to the length of the given geometry vertex buffer.\n\t * @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index\n\t * buffer space to reserve for the added geometry. This is necessary if it is planned to set a\n\t * new geometry at this index at a later time that is larger than the original geometry. Defaults to\n\t * the length of the given geometry index buffer.\n\t * @return {number} The geometry ID.\n\t */\n\taddGeometry( geometry, reservedVertexCount = -1, reservedIndexCount = -1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst geometryInfo = {\n\t\t\t// geometry information\n\t\t\tvertexStart: -1,\n\t\t\tvertexCount: -1,\n\t\t\treservedVertexCount: -1,\n\n\t\t\tindexStart: -1,\n\t\t\tindexCount: -1,\n\t\t\treservedIndexCount: -1,\n\n\t\t\t// draw range information\n\t\t\tstart: -1,\n\t\t\tcount: -1,\n\n\t\t\t// state\n\t\t\tboundingBox: null,\n\t\t\tboundingSphere: null,\n\t\t\tactive: true,\n\t\t};\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tgeometryInfo.vertexStart = this._nextVertexStart;\n\t\tgeometryInfo.reservedVertexCount = reservedVertexCount === -1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount;\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tgeometryInfo.indexStart = this._nextIndexStart;\n\t\t\tgeometryInfo.reservedIndexCount = reservedIndexCount === -1 ? index.count : reservedIndexCount;\n\n\t\t}\n\n\t\tif (\n\t\t\tgeometryInfo.indexStart !== -1 &&\n\t\t\tgeometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount ||\n\t\t\tgeometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\t// update id\n\t\tlet geometryId;\n\t\tif ( this._availableGeometryIds.length > 0 ) {\n\n\t\t\tthis._availableGeometryIds.sort( ascIdSort );\n\n\t\t\tgeometryId = this._availableGeometryIds.shift();\n\t\t\tgeometryInfoList[ geometryId ] = geometryInfo;\n\n\n\t\t} else {\n\n\t\t\tgeometryId = this._geometryCount;\n\t\t\tthis._geometryCount ++;\n\t\t\tgeometryInfoList.push( geometryInfo );\n\n\t\t}\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\t// increment the next geometry position\n\t\tthis._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount;\n\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Replaces the geometry at the given ID with the provided geometry. Throws an error if there\n\t * is not enough space reserved for geometry. Calling this will change all instances that are\n\t * rendering that geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry that should be replaced with the given geometry.\n\t * @param {BufferGeometry} geometry - The new geometry.\n\t * @return {number} The geometry ID.\n\t */\n\tsetGeometryAt( geometryId, geometry ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > geometryInfo.reservedIndexCount ||\n\t\t\tgeometry.attributes.position.count > geometryInfo.reservedVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry buffer data over\n\t\tconst vertexStart = geometryInfo.vertexStart;\n\t\tconst reservedVertexCount = geometryInfo.reservedVertexCount;\n\t\tgeometryInfo.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = geometryInfo.indexStart;\n\t\t\tconst reservedIndexCount = geometryInfo.reservedIndexCount;\n\t\t\tgeometryInfo.indexCount = geometry.getIndex().count;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount );\n\n\t\t}\n\n\t\t// update the draw range\n\t\tgeometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\t\tgeometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount;\n\n\t\t// store the bounding boxes\n\t\tgeometryInfo.boundingBox = null;\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tgeometryInfo.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tgeometryInfo.boundingSphere = null;\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tgeometryInfo.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Deletes the geometry defined by the given ID from this batch. Any instances referencing\n\t * this geometry will also be removed as a side effect.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteGeometry( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// delete any instances associated with this geometry\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active && instanceInfo[ i ].geometryIndex === geometryId ) {\n\n\t\t\t\tthis.deleteInstance( i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometryInfoList[ geometryId ].active = false;\n\t\tthis._availableGeometryIds.push( geometryId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deletes an existing instance from the batch using the given ID.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteInstance( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tthis._instanceInfo[ instanceId ].active = false;\n\t\tthis._availableInstanceIds.push( instanceId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Repacks the sub geometries in [name] to remove any unused space remaining from\n\t * previously deleted geometry, freeing up space to add new geometry.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\toptimize() {\n\n\t\t// track the next indices to copy data to\n\t\tlet nextVertexStart = 0;\n\t\tlet nextIndexStart = 0;\n\n\t\t// Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest\n\t\t// in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order.\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst indices = geometryInfoList\n\t\t\t.map( ( e, i ) => i )\n\t\t\t.sort( ( a, b ) => {\n\n\t\t\t\treturn geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart;\n\n\t\t\t} );\n\n\t\tconst geometry = this.geometry;\n\t\tfor ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) {\n\n\t\t\t// if a geometry range is inactive then don't copy anything\n\t\t\tconst index = indices[ i ];\n\t\t\tconst geometryInfo = geometryInfoList[ index ];\n\t\t\tif ( geometryInfo.active === false ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// if a geometry contains an index buffer then shift it, as well\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\tif ( geometryInfo.indexStart !== nextIndexStart ) {\n\n\t\t\t\t\tconst { indexStart, vertexStart, reservedIndexCount } = geometryInfo;\n\t\t\t\t\tconst index = geometry.index;\n\t\t\t\t\tconst array = index.array;\n\n\t\t\t\t\t// shift the index pointers based on how the vertex data will shift\n\t\t\t\t\t// adjusting the index must happen first so the original vertex start value is available\n\t\t\t\t\tconst elementDelta = nextVertexStart - vertexStart;\n\t\t\t\t\tfor ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) {\n\n\t\t\t\t\t\tarray[ j ] = array[ j ] + elementDelta;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount );\n\t\t\t\t\tindex.addUpdateRange( nextIndexStart, reservedIndexCount );\n\n\t\t\t\t\tgeometryInfo.indexStart = nextIndexStart;\n\n\t\t\t\t}\n\n\t\t\t\tnextIndexStart += geometryInfo.reservedIndexCount;\n\n\t\t\t}\n\n\t\t\t// if a geometry needs to be moved then copy attribute data to overwrite unused space\n\t\t\tif ( geometryInfo.vertexStart !== nextVertexStart ) {\n\n\t\t\t\tconst { vertexStart, reservedVertexCount } = geometryInfo;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tfor ( const key in attributes ) {\n\n\t\t\t\t\tconst attribute = attributes[ key ];\n\t\t\t\t\tconst { array, itemSize } = attribute;\n\t\t\t\t\tarray.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize );\n\t\t\t\t\tattribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tgeometryInfo.vertexStart = nextVertexStart;\n\n\t\t\t}\n\n\t\t\tnextVertexStart += geometryInfo.reservedVertexCount;\n\t\t\tgeometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\n\t\t\t// step the next geometry points to the shifted position\n\t\t\tthis._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0;\n\t\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the bounding box for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding box for.\n\t * @param {Box3} target - The target object that is used to store the method's result.\n\t * @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingBoxAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingBox === null ) {\n\n\t\t\tconst box = new Box3();\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tgeometryInfo.boundingBox = box;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingBox );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the bounding sphere for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding sphere for.\n\t * @param {Sphere} target - The target object that is used to store the method's result.\n\t * @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingSphereAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingSphere === null ) {\n\n\t\t\tconst sphere = new Sphere();\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tgeometryInfo.boundingSphere = sphere;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingSphere );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance.\n\t * Negatively scaled matrices are not supported.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the matrix of.\n\t * @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tmatrix.toArray( matricesArray, instanceId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the matrix of.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t * @return {Matrix4} The instance's local transformation matrix.\n\t */\n\tgetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn matrix.fromArray( this._matricesTexture.image.data, instanceId * 16 );\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the color of.\n\t * @param {Color} color - The color to set the instance to.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._colorsTexture === null ) {\n\n\t\t\tthis._initColorsTexture();\n\n\t\t}\n\n\t\tcolor.toArray( this._colorsTexture.image.data, instanceId * 4 );\n\t\tthis._colorsTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the color of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the color of.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t * @return {Color} The instance's color.\n\t */\n\tgetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn color.fromArray( this._colorsTexture.image.data, instanceId * 4 );\n\n\t}\n\n\t/**\n\t * Sets the visibility of the instance.\n\t *\n\t * @param {number} instanceId - The id of the instance to set the visibility of.\n\t * @param {boolean} visible - Whether the instance is visible or not.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetVisibleAt( instanceId, visible ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._instanceInfo[ instanceId ].visible === visible ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis._instanceInfo[ instanceId ].visible = visible;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the visibility state of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the visibility state of.\n\t * @return {boolean} Whether the instance is visible or not.\n\t */\n\tgetVisibleAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].visible;\n\n\t}\n\n\t/**\n\t * Sets the geometry ID of the instance at the given index.\n\t *\n\t * @param {number} instanceId - The ID of the instance to set the geometry ID of.\n\t * @param {number} geometryId - The geometry ID to be use by the instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetGeometryIdAt( instanceId, geometryId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tthis._instanceInfo[ instanceId ].geometryIndex = geometryId;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the geometry ID of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the geometry ID of.\n\t * @return {number} The instance's geometry ID.\n\t */\n\tgetGeometryIdAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].geometryIndex;\n\n\t}\n\n\t/**\n\t * Get the range representing the subset of triangles related to the attached geometry,\n\t * indicating the starting offset and count, or `null` if invalid.\n\t *\n\t * @param {number} geometryId - The id of the geometry to get the range of.\n\t * @param {Object} [target] - The target object that is used to store the method's result.\n\t * @return {{\n\t * \tvertexStart:number,vertexCount:number,reservedVertexCount:number,\n\t * \tindexStart:number,indexCount:number,reservedIndexCount:number,\n\t * \tstart:number,count:number\n\t * }} The result object with range data.\n\t */\n\tgetGeometryRangeAt( geometryId, target = {} ) {\n\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\ttarget.vertexStart = geometryInfo.vertexStart;\n\t\ttarget.vertexCount = geometryInfo.vertexCount;\n\t\ttarget.reservedVertexCount = geometryInfo.reservedVertexCount;\n\n\t\ttarget.indexStart = geometryInfo.indexStart;\n\t\ttarget.indexCount = geometryInfo.indexCount;\n\t\ttarget.reservedIndexCount = geometryInfo.reservedIndexCount;\n\n\t\ttarget.start = geometryInfo.start;\n\t\ttarget.count = geometryInfo.count;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Resizes the necessary buffers to support the provided number of instances.\n\t * If the provided arguments shrink the number of instances but there are not enough\n\t * unused Ids at the end of the list then an error is thrown.\n\t *\n\t * @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch.\n\t*/\n\tsetInstanceCount( maxInstanceCount ) {\n\n\t\t// shrink the available instances as much as possible\n\t\tconst availableInstanceIds = this._availableInstanceIds;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tavailableInstanceIds.sort( ascIdSort );\n\t\twhile ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {\n\n\t\t\tinstanceInfo.pop();\n\t\t\tavailableInstanceIds.pop();\n\n\t\t}\n\n\t\t// throw an error if it can't be shrunk to the desired size\n\t\tif ( maxInstanceCount < instanceInfo.length ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` );\n\n\t\t}\n\n\t\t// copy the multi draw counts\n\t\tconst multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tconst multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tcopyArrayContents( this._multiDrawCounts, multiDrawCounts );\n\t\tcopyArrayContents( this._multiDrawStarts, multiDrawStarts );\n\n\t\tthis._multiDrawCounts = multiDrawCounts;\n\t\tthis._multiDrawStarts = multiDrawStarts;\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\n\t\t// update texture data for instance sampling\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst colorsTexture = this._colorsTexture;\n\n\t\tindirectTexture.dispose();\n\t\tthis._initIndirectTexture();\n\t\tcopyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data );\n\n\t\tmatricesTexture.dispose();\n\t\tthis._initMatricesTexture();\n\t\tcopyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data );\n\n\t\tif ( colorsTexture ) {\n\n\t\t\tcolorsTexture.dispose();\n\t\t\tthis._initColorsTexture();\n\t\t\tcopyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes.\n\t * If the provided arguments shrink the geometry buffers but there is not enough unused space at the\n\t * end of the geometry attributes then an error is thrown.\n\t *\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to.\n\t * @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to.\n\t*/\n\tsetGeometrySize( maxVertexCount, maxIndexCount ) {\n\n\t\t// Check if we can shrink to the requested vertex attribute size\n\t\tconst validRanges = [ ...this._geometryInfo ].filter( info => info.active );\n\t\tconst requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) );\n\t\tif ( requiredVertexLength > maxVertexCount ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t}\n\n\t\t// Check if we can shrink to the requested index attribute size\n\t\tif ( this.geometry.index ) {\n\n\t\t\tconst requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) );\n\t\t\tif ( requiredIndexLength > maxIndexCount ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\t// dispose of the previous geometry\n\t\tconst oldGeometry = this.geometry;\n\t\toldGeometry.dispose();\n\n\t\t// recreate the geometry needed based on the previous variant\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tif ( this._geometryInitialized ) {\n\n\t\t\tthis._geometryInitialized = false;\n\t\t\tthis.geometry = new BufferGeometry();\n\t\t\tthis._initializeGeometry( oldGeometry );\n\n\t\t}\n\n\t\t// copy data from the previous geometry\n\t\tconst geometry = this.geometry;\n\t\tif ( oldGeometry.index ) {\n\n\t\t\tcopyArrayContents( oldGeometry.index.array, geometry.index.array );\n\n\t\t}\n\n\t\tfor ( const key in oldGeometry.attributes ) {\n\n\t\t\tcopyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array );\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t_mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count );\n\n\t\t\t// get the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._geometryInfo = source._geometryInfo.map( info => ( {\n\t\t\t...info,\n\n\t\t\tboundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null,\n\t\t\tboundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null,\n\t\t} ) );\n\t\tthis._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) );\n\n\t\tthis._availableInstanceIds = source._availableInstanceIds.slice();\n\t\tthis._availableGeometryIds = source._availableGeometryIds.slice();\n\n\t\tthis._nextIndexStart = source._nextIndexStart;\n\t\tthis._nextVertexStart = source._nextVertexStart;\n\t\tthis._geometryCount = source._geometryCount;\n\n\t\tthis._maxInstanceCount = source._maxInstanceCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._indirectTexture = source._indirectTexture.clone();\n\t\tthis._indirectTexture.image.data = this._indirectTexture.image.data.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture = source._colorsTexture.clone();\n\t\t\tthis._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\n\t\tthis._indirectTexture.dispose();\n\t\tthis._indirectTexture = null;\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture.dispose();\n\t\t\tthis._colorsTexture = null;\n\n\t\t}\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst indirectArray = indirectTexture.image.data;\n\n\t\tconst frustum = camera.isArrayCamera ? _frustumArray : _frustum;\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled && ! camera.isArrayCamera ) {\n\n\t\t\t_matrix$1\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_matrix$1,\n\t\t\t\tcamera.coordinateSystem,\n\t\t\t\tcamera.reversedDepth\n\t\t\t);\n\n\t\t}\n\n\t\tlet multiDrawCount = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_matrix$1.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix$1 );\n\t\t\t_forward$1.set( 0, 0, -1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix$1 );\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! frustum.intersectsSphere( _sphere$2, camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tconst z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward$1 );\n\t\t\t\t\t\t_renderList.push( geometryInfo.start, geometryInfo.count, z, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ multiDrawCount ] = item.count;\n\t\t\t\tindirectArray[ multiDrawCount ] = item.index;\n\t\t\t\tmultiDrawCount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! frustum.intersectsSphere( _sphere$2, camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tmultiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ multiDrawCount ] = geometryInfo.count;\n\t\t\t\t\t\tindirectArray[ multiDrawCount ] = i;\n\t\t\t\t\t\tmultiDrawCount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tindirectTexture.needsUpdate = true;\n\t\tthis._multiDrawCount = multiDrawCount;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\n/**\n * A material for rendering line primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );\n * ```\n *\n * @augments Material\n */\nclass LineBasicMaterial extends Material {\n\n\t/**\n\t * Constructs a new line basic material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * Sets the color of the lines using data from a texture. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * Controls line thickness or lines.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}. WebGL and WebGPU\n\t\t * ignore this setting and always render line primitives with a\n\t\t * width of one pixel.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.linewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of line ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('butt'|'round'|'square')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.linecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of line joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.linejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\n/**\n * A continuous line. The line are rendered by connecting consecutive\n * vertices with straight lines.\n *\n * ```js\n * const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );\n *\n * const points = [];\n * points.push( new THREE.Vector3( - 10, 0, 0 ) );\n * points.push( new THREE.Vector3( 0, 10, 0 ) );\n * points.push( new THREE.Vector3( 10, 0, 0 ) );\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments Object3D\n */\nclass Line extends Object3D {\n\n\t/**\n\t * Constructs a new line.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\t/**\n\t\t * The line geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default LineBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes an array of distance values which are necessary for rendering dashed lines.\n\t * For each vertex in the geometry, the method calculates the cumulative length from the\n\t * current point to the very beginning of the line.\n\t *\n\t * @return {Line} A reference to this line.\n\t */\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: i,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tbarycoord: null,\n\t\tobject: object\n\n\t};\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\n/**\n * A series of lines drawn between pairs of vertices.\n *\n * @augments Line\n */\nclass LineSegments extends Line {\n\n\t/**\n\t * Constructs a new line segments.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A continuous line. This is nearly the same as {@link Line} the only difference\n * is that the last vertex is connected with the first vertex in order to close\n * the line to form a loop.\n *\n * @augments Line\n */\nclass LineLoop extends Line {\n\n\t/**\n\t * Constructs a new line loop.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\n/**\n * A material for rendering point primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const vertices = [];\n *\n * for ( let i = 0; i < 10000; i ++ ) {\n * \tconst x = THREE.MathUtils.randFloatSpread( 2000 );\n * \tconst y = THREE.MathUtils.randFloatSpread( 2000 );\n * \tconst z = THREE.MathUtils.randFloatSpread( 2000 );\n *\n * \tvertices.push( x, y, z );\n * }\n *\n * const geometry = new THREE.BufferGeometry();\n * geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );\n * const material = new THREE.PointsMaterial( { color: 0x888888 } );\n * const points = new THREE.Points( geometry, material );\n * scene.add( points );\n * ```\n *\n * @augments Material\n */\nclass PointsMaterial extends Material {\n\n\t/**\n\t * Constructs a new points material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Defines the size of the points in pixels.\n\t\t *\n\t\t * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.size = 1;\n\n\t\t/**\n\t\t * Specifies whether size of individual points is attenuated by the camera depth (perspective camera only).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sizeAttenuation = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\n/**\n * A class for displaying points or point clouds.\n *\n * @augments Object3D\n */\nclass Points extends Object3D {\n\n\t/**\n\t * Constructs a new point cloud.\n\t *\n\t * @param {BufferGeometry} [geometry] - The points geometry.\n\t * @param {Material|Array} [material] - The points material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\t/**\n\t\t * The points geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array}\n\t\t * @default PointsMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this point cloud.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tfaceIndex: null,\n\t\t\tbarycoord: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * A texture for use with a video.\n *\n * ```js\n * // assuming you have created a HTML video element with id=\"video\"\n * const video = document.getElementById( 'video' );\n * const texture = new THREE.VideoTexture( video );\n * ```\n *\n * Note: When using video textures with {@link WebGPURenderer}, {@link Texture#colorSpace} must be\n * set to THREE.SRGBColorSpace.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments Texture\n */\nclass VideoTexture extends Texture {\n\n\t/**\n\t * Constructs a new video texture.\n\t *\n\t * @param {HTMLVideoElement} video - The video element to use as a data source for the texture.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( video, mapping, wrapS, wrapT, magFilter = LinearFilter, minFilter = LinearFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isVideoTexture = true;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * The video frame request callback identifier, which is a positive integer.\n\t\t *\n\t\t * Value of 0 represents no scheduled rVFC.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t */\n\t\tthis._requestVideoFrameCallbackId = 0;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tscope._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tthis._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\t/**\n\t * This method is called automatically by the renderer and sets {@link Texture#needsUpdate}\n\t * to `true` every time a new frame is available.\n\t *\n\t * Only relevant if `requestVideoFrameCallback` is not supported in the browser.\n\t */\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this._requestVideoFrameCallbackId !== 0 ) {\n\n\t\t\tthis.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );\n\n\t\t}\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n/**\n * This class can be used as an alternative way to define video data. Instead of using\n * an instance of `HTMLVideoElement` like with `VideoTexture`, `VideoFrameTexture` expects each frame is\n * defined manually via {@link VideoFrameTexture#setFrame}. A typical use case for this module is when\n * video frames are decoded with the WebCodecs API.\n *\n * ```js\n * const texture = new THREE.VideoFrameTexture();\n * texture.setFrame( frame );\n * ```\n *\n * @augments VideoTexture\n */\nclass VideoFrameTexture extends VideoTexture {\n\n\t/**\n\t * Constructs a new video frame texture.\n\t *\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isVideoFrameTexture = true;\n\n\t}\n\n\t/**\n\t * This method overwritten with an empty implementation since\n\t * this type of texture is updated via `setFrame()`.\n\t */\n\tupdate() {}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this ); // restoring Texture.clone()\n\n\t}\n\n\t/**\n\t * Sets the current frame of the video. This will automatically update the texture\n\t * so the data can be used for rendering.\n\t *\n\t * @param {VideoFrame} frame - The video frame.\n\t */\n\tsetFrame( frame ) {\n\n\t\tthis.image = frame;\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * This class can only be used in combination with `copyFramebufferToTexture()` methods\n * of renderers. It extracts the contents of the current bound framebuffer and provides it\n * as a texture for further usage.\n *\n * ```js\n * const pixelRatio = window.devicePixelRatio;\n * const textureSize = 128 * pixelRatio;\n *\n * const frameTexture = new FramebufferTexture( textureSize, textureSize );\n *\n * // calculate start position for copying part of the frame data\n * const vector = new Vector2();\n * vector.x = ( window.innerWidth * pixelRatio / 2 ) - ( textureSize / 2 );\n * vector.y = ( window.innerHeight * pixelRatio / 2 ) - ( textureSize / 2 );\n *\n * renderer.render( scene, camera );\n *\n * // copy part of the rendered frame into the framebuffer texture\n * renderer.copyFramebufferToTexture( frameTexture, vector );\n * ```\n *\n * @augments Texture\n */\nclass FramebufferTexture extends Texture {\n\n\t/**\n\t * Constructs a new framebuffer texture.\n\t *\n\t * @param {number} [width] - The width of the texture.\n\t * @param {number} [height] - The height of the texture.\n\t */\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFramebufferTexture = true;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default to disable filtering.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.magFilter = NearestFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * Overwritten and set to `NearestFilter` by default to disable filtering.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default NearestFilter\n\t\t */\n\t\tthis.minFilter = NearestFilter;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Creates a texture based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments Texture\n */\nclass CompressedTexture extends Texture {\n\n\t/**\n\t * Constructs a new compressed texture.\n\t *\n\t * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip)\n\t * the data and dimensions.\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {string} [colorSpace=NoColorSpace] - The color space.\n\t */\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedTexture = true;\n\n\t\t/**\n\t\t * The image property of a compressed texture just defines its dimensions.\n\t\t *\n\t\t * @type {{width:number,height:number}}\n\t\t */\n\t\tthis.image = { width: width, height: height };\n\n\t\t/**\n\t\t * This array holds for all mipmaps (including the bases mip) the data and dimensions.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.mipmaps = mipmaps;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default since it is not possible to\n\t\t * flip compressed textures.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default since it is not\n\t\t * possible to generate mipmaps for compressed data. Mipmaps\n\t\t * must be embedded in the compressed texture file.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\n/**\n * Creates a texture 2D array based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments CompressedTexture\n */\nclass CompressedArrayTexture extends CompressedTexture {\n\n\t/**\n\t * Constructs a new compressed array texture.\n\t *\n\t * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip)\n\t * the data and dimensions.\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} depth - The depth of the texture.\n\t * @param {number} [format=RGBAFormat] - The min filter value.\n\t * @param {number} [type=UnsignedByteType] - The min filter value.\n\t */\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedArrayTexture = true;\n\n\t\t/**\n\t\t * The image property of a compressed texture just defines its dimensions.\n\t\t *\n\t\t * @name CompressedArrayTexture#image\n\t\t * @type {{width:number,height:number,depth:number}}\n\t\t */\n\t\tthis.image.depth = depth;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped in the depth and corresponds to\n\t\t * *W* in UVW mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\t/**\n\t\t * A set of all layers which need to be updated in the texture.\n\t\t *\n\t\t * @type {Set}\n\t\t */\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\t/**\n\t * Describes that a specific layer of the texture needs to be updated.\n\t * Normally when {@link Texture#needsUpdate} is set to `true`, the\n\t * entire compressed texture array is sent to the GPU. Marking specific\n\t * layers will only transmit subsets of all mipmaps associated with a\n\t * specific depth in the array which is often much more performant.\n\t *\n\t * @param {number} layerIndex - The layer index that should be updated.\n\t */\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\t/**\n\t * Resets the layer updates registry.\n\t */\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\n/**\n * Creates a cube texture based on data in compressed form.\n *\n * These texture are usually loaded with {@link CompressedTextureLoader}.\n *\n * @augments CompressedTexture\n */\nclass CompressedCubeTexture extends CompressedTexture {\n\n\t/**\n\t * Constructs a new compressed texture.\n\t *\n\t * @param {Array} images - An array of compressed textures.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t */\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCompressedCubeTexture = true;\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\n/**\n * Creates a texture from a canvas element.\n *\n * This is almost the same as the base texture class, except that it sets {@link Texture#needsUpdate}\n * to `true` immediately since a canvas can directly be used for rendering.\n *\n * @augments Texture\n */\nclass CanvasTexture extends Texture {\n\n\t/**\n\t * Constructs a new texture.\n\t *\n\t * @param {HTMLCanvasElement} [canvas] - The HTML canvas element.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * This class can be used to automatically save the depth information of a\n * rendering into a texture.\n *\n * @augments Texture\n */\nclass DepthTexture extends Texture {\n\n\t/**\n\t * Constructs a new depth texture.\n\t *\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} [type=UnsignedIntType] - The texture type.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t * @param {number} [format=DepthFormat] - The texture format.\n\t * @param {number} [depth=1] - The depth of the texture.\n\t */\n\tconstructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat, depth = 1 ) {\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tconst image = { width: width, height: height, depth: depth };\n\n\t\tsuper( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDepthTexture = true;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flipY = false;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * Code corresponding to the depth compare function.\n\t\t *\n\t\t * @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)}\n\t\t * @default null\n\t\t */\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.source = new Source( Object.assign( {}, source.image ) ); // see #30540\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents a texture created externally with the same renderer context.\n *\n * This may be a texture from a protected media stream, device camera feed,\n * or other data feeds like a depth sensor.\n *\n * Note that this class is only supported in {@link WebGLRenderer}, and in\n * the {@link WebGPURenderer} WebGPU backend.\n *\n * @augments Texture\n */\nclass ExternalTexture extends Texture {\n\n\t/**\n\t * Creates a new raw texture.\n\t *\n\t * @param {?(WebGLTexture|GPUTexture)} [sourceTexture=null] - The external texture.\n\t */\n\tconstructor( sourceTexture = null ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The external source texture.\n\t\t *\n\t\t * @type {?(WebGLTexture|GPUTexture)}\n\t\t * @default null\n\t\t */\n\t\tthis.sourceTexture = sourceTexture;\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isExternalTexture = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sourceTexture = source.sourceTexture;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a capsule.\n *\n * ```js\n * const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const capsule = new THREE.Mesh( geometry, material );\n * scene.add( capsule );\n * ```\n *\n * @augments BufferGeometry\n */\nclass CapsuleGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new capsule geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the capsule.\n\t * @param {number} [height=1] - Height of the middle section.\n\t * @param {number} [capSegments=4] - Number of curve segments used to build each cap.\n\t * @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule. Must be an integer >= 3.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the middle section. Must be an integer >= 1.\n\t */\n\tconstructor( radius = 1, height = 1, capSegments = 4, radialSegments = 8, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t};\n\n\t\theight = Math.max( 0, height );\n\t\tcapSegments = Math.max( 1, Math.floor( capSegments ) );\n\t\tradialSegments = Math.max( 3, Math.floor( radialSegments ) );\n\t\theightSegments = Math.max( 1, Math.floor( heightSegments ) );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst halfHeight = height / 2;\n\t\tconst capArcLength = ( Math.PI / 2 ) * radius;\n\t\tconst cylinderPartLength = height;\n\t\tconst totalArcLength = 2 * capArcLength + cylinderPartLength;\n\n\t\tconst numVerticalSegments = capSegments * 2 + heightSegments;\n\t\tconst verticesPerRow = radialSegments + 1;\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\t// generate vertices, normals, and uvs\n\n\t\tfor ( let iy = 0; iy <= numVerticalSegments; iy ++ ) {\n\n\t\t\tlet currentArcLength = 0;\n\t\t\tlet profileY = 0;\n\t\t\tlet profileRadius = 0;\n\t\t\tlet normalYComponent = 0;\n\n\t\t\tif ( iy <= capSegments ) {\n\n\t\t\t\t// bottom cap\n\t\t\t\tconst segmentProgress = iy / capSegments;\n\t\t\t\tconst angle = ( segmentProgress * Math.PI ) / 2;\n\t\t\t\tprofileY = - halfHeight - radius * Math.cos( angle );\n\t\t\t\tprofileRadius = radius * Math.sin( angle );\n\t\t\t\tnormalYComponent = - radius * Math.cos( angle );\n\t\t\t\tcurrentArcLength = segmentProgress * capArcLength;\n\n\t\t\t} else if ( iy <= capSegments + heightSegments ) {\n\n\t\t\t\t// middle section\n\t\t\t\tconst segmentProgress = ( iy - capSegments ) / heightSegments;\n\t\t\t\tprofileY = - halfHeight + segmentProgress * height;\n\t\t\t\tprofileRadius = radius;\n\t\t\t\tnormalYComponent = 0;\n\t\t\t\tcurrentArcLength = capArcLength + segmentProgress * cylinderPartLength;\n\n\t\t\t} else {\n\n\t\t\t\t// top cap\n\t\t\t\tconst segmentProgress =\n\t\t\t\t\t( iy - capSegments - heightSegments ) / capSegments;\n\t\t\t\tconst angle = ( segmentProgress * Math.PI ) / 2;\n\t\t\t\tprofileY = halfHeight + radius * Math.sin( angle );\n\t\t\t\tprofileRadius = radius * Math.cos( angle );\n\t\t\t\tnormalYComponent = radius * Math.sin( angle );\n\t\t\t\tcurrentArcLength =\n\t\t\t\t\tcapArcLength + cylinderPartLength + segmentProgress * capArcLength;\n\n\t\t\t}\n\n\t\t\tconst v = Math.max( 0, Math.min( 1, currentArcLength / totalArcLength ) );\n\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / radialSegments;\n\n\t\t\t} else if ( iy === numVerticalSegments ) {\n\n\t\t\t\tuOffset = -0.5 / radialSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= radialSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / radialSegments;\n\t\t\t\tconst theta = u * Math.PI * 2;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - profileRadius * cosTheta;\n\t\t\t\tvertex.y = profileY;\n\t\t\t\tvertex.z = profileRadius * sinTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set(\n\t\t\t\t\t- profileRadius * cosTheta,\n\t\t\t\t\tnormalYComponent,\n\t\t\t\t\tprofileRadius * sinTheta\n\t\t\t\t);\n\t\t\t\tnormal.normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, v );\n\n\t\t\t}\n\n\t\t\tif ( iy > 0 ) {\n\n\t\t\t\tconst prevIndexRow = ( iy - 1 ) * verticesPerRow;\n\t\t\t\tfor ( let ix = 0; ix < radialSegments; ix ++ ) {\n\n\t\t\t\t\tconst i1 = prevIndexRow + ix;\n\t\t\t\t\tconst i2 = prevIndexRow + ix + 1;\n\t\t\t\t\tconst i3 = iy * verticesPerRow + ix;\n\t\t\t\t\tconst i4 = iy * verticesPerRow + ix + 1;\n\n\t\t\t\t\tindices.push( i1, i2, i3 );\n\t\t\t\t\tindices.push( i2, i4, i3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CapsuleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.height, data.capSegments, data.radialSegments, data.heightSegments );\n\n\t}\n\n}\n\n/**\n * A simple shape of Euclidean geometry. It is constructed from a\n * number of triangular segments that are oriented around a central point and\n * extend as far out as a given radius. It is built counter-clockwise from a\n * start angle and a given central angle. It can also be used to create\n * regular polygons, where the number of segments determines the number of\n * sides.\n *\n * ```js\n * const geometry = new THREE.CircleGeometry( 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const circle = new THREE.Mesh( geometry, material );\n * scene.add( circle )\n * ```\n *\n * @augments BufferGeometry\n */\nclass CircleGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new circle geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the circle.\n\t * @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.\n\t * @param {number} [thetaStart=0] - Start angle for first segment in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,\n\t * of the circular sector in radians. The default value results in a complete circle.\n\t */\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CircleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cylinder.\n *\n * ```js\n * const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cylinder = new THREE.Mesh( geometry, material );\n * scene.add( cylinder );\n * ```\n *\n * @augments BufferGeometry\n */\nclass CylinderGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new cylinder geometry.\n\t *\n\t * @param {number} [radiusTop=1] - Radius of the cylinder at the top.\n\t * @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.\n\t * @param {number} [height=1] - Height of the cylinder.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.\n\t * @param {number} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cylinder.\n\t */\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tif ( radiusTop > 0 || y !== 0 ) {\n\n\t\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( radiusBottom > 0 || y !== heightSegments - 1 ) {\n\n\t\t\t\t\t\tindices.push( b, c, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : -1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CylinderGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cone.\n *\n * ```js\n * const geometry = new THREE.ConeGeometry( 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cone = new THREE.Mesh(geometry, material );\n * scene.add( cone );\n * ```\n *\n * @augments CylinderGeometry\n */\nclass ConeGeometry extends CylinderGeometry {\n\n\t/**\n\t * Constructs a new cone geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the cone base.\n\t * @param {number} [height=1] - Height of the cone.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.\n\t * @param {number} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cone.\n\t */\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {ConeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A polyhedron is a solid in three dimensions with flat faces. This class\n * will take an array of vertices, project them onto a sphere, and then\n * divide them up to the desired level of detail.\n *\n * @augments BufferGeometry\n */\nclass PolyhedronGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new polyhedron geometry.\n\t *\n\t * @param {Array} [vertices] - A flat array of vertices describing the base shape.\n\t * @param {Array} [indices] - A flat array of indices describing the base shape.\n\t * @param {number} [radius=1] - The radius of the shape.\n\t * @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.\n\t */\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PolyhedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a dodecahedron.\n *\n * ```js\n * const geometry = new THREE.DodecahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const dodecahedron = new THREE.Mesh( geometry, material );\n * scene.add( dodecahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new dodecahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the dodecahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t-1, -1, -1,\t-1, -1, 1,\n\t\t\t-1, 1, -1, -1, 1, 1,\n\t\t\t1, -1, -1, 1, -1, 1,\n\t\t\t1, 1, -1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {DodecahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\n/**\n * Can be used as a helper object to view the edges of a geometry.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry();\n * const edges = new THREE.EdgesGeometry( geometry );\n * const line = new THREE.LineSegments( edges );\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass EdgesGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new edges geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t * @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)\n\t * between the face normals of the adjoining faces exceeds this value.\n\t */\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * An abstract base class for creating an analytic curve object that contains methods\n * for interpolation.\n *\n * @abstract\n */\nclass Curve {\n\n\t/**\n\t * Constructs a new curve.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Curve';\n\n\t\t/**\n\t\t * This value determines the amount of divisions when calculating the\n\t\t * cumulative segment lengths of a curve via {@link Curve#getLengths}. To ensure\n\t\t * precision when using methods like {@link Curve#getSpacedPoints}, it is\n\t\t * recommended to increase the value of this property if the curve is very large.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 200\n\t\t */\n\t\tthis.arcLengthDivisions = 200;\n\n\t\t/**\n\t\t * Must be set to `true` if the curve parameters have changed.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\t/**\n\t\t * An internal cache that holds precomputed curve length values.\n\t\t *\n\t\t * @private\n\t\t * @type {?Array}\n\t\t * @default null\n\t\t */\n\t\tthis.cacheArcLengths = null;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor.\n\t *\n\t * @abstract\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor. Unlike {@link Curve#getPoint}, this method honors the length\n\t * of the curve which equidistant samples.\n\t *\n\t * @param {number} u - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPoint} and returns an array of points representing\n\t * the curve shape.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPointAt} and returns an array of points representing\n\t * the curve shape. Unlike {@link Curve#getPoints}, this method returns equi-spaced points across the entire\n\t * curve.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t/**\n\t * Returns the total arc length of the curve.\n\t *\n\t * @return {number} The length of the curve.\n\t */\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t/**\n\t * Returns an array of cumulative segment lengths of the curve.\n\t *\n\t * @param {number} [divisions=this.arcLengthDivisions] - The number of divisions.\n\t * @return {Array} An array holding the cumulative segment lengths.\n\t */\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\t/**\n\t * Update the cumulative segment distance cache. The method must be called\n\t * every time curve parameters are changed. If an updated curve is part of a\n\t * composed curve like {@link CurvePath}, this method must be called on the\n\t * composed curve, too.\n\t */\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t/**\n\t * Given an interpolation factor in the range `[0,1]`, this method returns an updated\n\t * interpolation factor in the same range that can be ued to sample equidistant points\n\t * from a curve.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {?number} distance - An optional distance on the curve.\n\t * @return {number} The updated interpolation factor.\n\t */\n\tgetUtoTmapping( u, distance = null ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns a unit vector tangent for the given interpolation factor.\n\t * If the derived curve does not implement its tangent derivation,\n\t * two points a small delta apart will be used to find its gradient\n\t * which seems to give a reasonable approximation.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t */\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\t/**\n\t * Same as {@link Curve#getTangent} but with equidistant samples.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t * @see {@link Curve#getPointAt}\n\t */\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * Generates the Frenet Frames. Requires a curve definition in 3D space. Used\n\t * in geometries like {@link TubeGeometry} or {@link ExtrudeGeometry}.\n\t *\n\t * @param {number} segments - The number of segments.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @return {{tangents: Array, normals: Array, binormals: Array}} The Frenet Frames.\n\t */\n\tcomputeFrenetFrames( segments, closed = false ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), -1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), -1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a new curve with copied values from this instance.\n\t *\n\t * @return {Curve} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given curve to this instance.\n\t *\n\t * @param {Curve} source - The curve to copy.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the curve into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized curve.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.7,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Deserializes the curve from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized curve.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an ellipse.\n *\n * ```js\n * const curve = new THREE.EllipseCurve(\n * \t0, 0,\n * \t10, 10,\n * \t0, 2 * Math.PI,\n * \tfalse,\n * \t0\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const ellipse = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass EllipseCurve extends Curve {\n\n\t/**\n\t * Constructs a new ellipse curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t */\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\t/**\n\t\t * The X center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aX = aX;\n\n\t\t/**\n\t\t * The Y center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aY = aY;\n\n\t\t/**\n\t\t * The radius of the ellipse in the x direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.xRadius = xRadius;\n\n\t\t/**\n\t\t * The radius of the ellipse in the y direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.yRadius = yRadius;\n\n\t\t/**\n\t\t * The start angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aStartAngle = aStartAngle;\n\n\t\t/**\n\t\t * The end angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI*2\n\t\t */\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\t/**\n\t\t * Whether the ellipse is drawn clockwise or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.aClockwise = aClockwise;\n\n\t\t/**\n\t\t * The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an arc.\n *\n * @augments EllipseCurve\n */\nclass ArcCurve extends EllipseCurve {\n\n\t/**\n\t * Constructs a new arc curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [aRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t */\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nfunction CubicPoly() {\n\n\t/**\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t* cusps and self-intersections in non-uniform catmull rom curves.\n\t* http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t*\n\t* curve.type accepts centripetal(default), chordal and catmullrom\n\t* curve.tension is used for catmullrom which defaults to 0.5\n\t*/\n\n\t/*\n\tBased on an optimized c++ solution in\n\t- http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t- http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\n/**\n * A curve representing a Catmull-Rom spline.\n *\n * ```js\n * //Create a closed wavey loop\n * const curve = new THREE.CatmullRomCurve3( [\n * \tnew THREE.Vector3( -10, 0, 10 ),\n * \tnew THREE.Vector3( -5, 5, 5 ),\n * \tnew THREE.Vector3( 0, 0, 0 ),\n * \tnew THREE.Vector3( 5, -5, 5 ),\n * \tnew THREE.Vector3( 10, 0, 10 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CatmullRomCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Catmull-Rom curve.\n\t *\n\t * @param {Array} [points] - An array of 3D points defining the curve.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @param {('centripetal'|'chordal'|'catmullrom')} [curveType='centripetal'] - The curve type.\n\t * @param {number} [tension=0.5] - Tension of the curve.\n\t */\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\t/**\n\t\t * An array of 3D points defining the curve.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.points = points;\n\n\t\t/**\n\t\t * Whether the curve is closed or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.closed = closed;\n\n\t\t/**\n\t\t * The curve type.\n\t\t *\n\t\t * @type {('centripetal'|'chordal'|'catmullrom')}\n\t\t * @default 'centripetal'\n\t\t */\n\t\tthis.curveType = curveType;\n\n\t\t/**\n\t\t * Tension of the curve.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.5\n\t\t */\n\t\tthis.tension = tension;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n/**\n * Computes a point on a Catmull-Rom spline.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Catmull-Rom spline.\n */\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( -3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\n/**\n * Computes a point on a Quadratic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @return {number} The calculated point on a Quadratic Bezier curve.\n */\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\n/**\n * Computes a point on a Cubic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Cubic Bezier curve.\n */\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\n/**\n * A curve representing a 2D Cubic Bezier curve.\n *\n * ```js\n * const curve = new THREE.CubicBezierCurve(\n * \tnew THREE.Vector2( - 0, 0 ),\n * \tnew THREE.Vector2( - 5, 15 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CubicBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The first control point.\n\t * @param {Vector2} [v2] - The second control point.\n\t * @param {Vector2} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Cubic Bezier curve.\n *\n * @augments Curve\n */\nclass CubicBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The first control point.\n\t * @param {Vector3} [v2] - The second control point.\n\t * @param {Vector3} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D line segment.\n *\n * @augments Curve\n */\nclass LineCurve extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector2} [v1] - The start point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D line segment.\n *\n * @augments Curve\n */\nclass LineCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector3} [v1] - The start point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D Quadratic Bezier curve.\n *\n * ```js\n * const curve = new THREE.QuadraticBezierCurve(\n * \tnew THREE.Vector2( - 10, 0 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * )\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The control point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Quadratic Bezier curve.\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The control point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D spline curve.\n *\n * ```js\n * // Create a sine-like wave\n * const curve = new THREE.SplineCurve( [\n * \tnew THREE.Vector2( -10, 0 ),\n * \tnew THREE.Vector2( -5, 5 ),\n * \tnew THREE.Vector2( 0, 0 ),\n * \tnew THREE.Vector2( 5, -5 ),\n * \tnew THREE.Vector2( 10, 0 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const splineObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass SplineCurve extends Curve {\n\n\t/**\n\t * Constructs a new 2D spline curve.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the curve.\n\t */\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\t/**\n\t\t * An array of 2D points defining the curve.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.points = points;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * A base class extending {@link Curve}. `CurvePath` is simply an\n * array of connected curves, but retains the API of a curve.\n *\n * @augments Curve\n */\nclass CurvePath extends Curve {\n\n\t/**\n\t * Constructs a new curve path.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\t/**\n\t\t * An array of curves defining the\n\t\t * path.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.curves = [];\n\n\t\t/**\n\t\t * Whether the path should automatically be closed\n\t\t * by a line curve.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoClose = false;\n\n\t}\n\n\t/**\n\t * Adds a curve to this curve path.\n\t *\n\t * @param {Curve} curve - The curve to add.\n\t */\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\t/**\n\t * Adds a line curve to close the path.\n\t *\n\t * @return {CurvePath} A reference to this curve path.\n\t */\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definitions)\n\t * for the given interpolation factor.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( t, optionalTarget ) {\n\n\t\t// To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 } The curve lengths.\n\t */\n\tgetCurveLengths() {\n\n\t\t// Compute lengths and cache them\n\t\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t}\n\n\tgetSpacedPoints( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tgetPoints( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = curve.isEllipseCurve ? divisions * 2\n\t\t\t\t: ( curve.isLineCurve || curve.isLineCurve3 ) ? 1\n\t\t\t\t\t: curve.isSplineCurve ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A 2D path representation. The class provides methods for creating paths\n * and contours of 2D shapes similar to the 2D Canvas API.\n *\n * ```js\n * const path = new THREE.Path();\n *\n * path.lineTo( 0, 0.8 );\n * path.quadraticCurveTo( 0, 1, 0.2, 1 );\n * path.lineTo( 1, 1 );\n *\n * const points = path.getPoints();\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments CurvePath\n */\nclass Path extends CurvePath {\n\n\t/**\n\t * Constructs a new path.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the path.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\t/**\n\t\t * The current offset of the path. Any new curve added will start here.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Creates a path from the given list of points. The points are added\n\t * to the path as instances of {@link LineCurve}.\n\t *\n\t * @param {Array} points - An array of 2D points.\n\t * @return {Path} A reference to this path.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Moves {@link Path#currentPoint} to the given point.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {Path} A reference to this path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array} pts - An array of points in 2D space.\n\t * @return {Path} A reference to this path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} [aY=0] - The y coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} [aRadius=1] - The radius of the arc.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the arc.\n\t * @param {number} [aY=0] - The y coordinate of the center of the arc.\n\t * @param {number} [aRadius=1] - The radius of the arc.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} [aY=0] - The y coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} [aX=0] - The x coordinate of the absolute center of the ellipse.\n\t * @param {number} [aY=0] - The y coordinate of the absolute center of the ellipse.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.\n\t * @param {number} [aStartAngle=0] - The start angle in radians.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Defines an arbitrary 2d shape plane using paths with optional holes. It\n * can be used with {@link ExtrudeGeometry}, {@link ShapeGeometry}, to get\n * points, or to get triangulated faces.\n *\n * ```js\n * const heartShape = new THREE.Shape();\n *\n * heartShape.moveTo( 25, 25 );\n * heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );\n * heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );\n * heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );\n * heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );\n * heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );\n * heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );\n *\n * const extrudeSettings = {\n * \tdepth: 8,\n * \tbevelEnabled: true,\n * \tbevelSegments: 2,\n * \tsteps: 2,\n * \tbevelSize: 1,\n * \tbevelThickness: 1\n * };\n *\n * const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );\n * const mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() );\n * ```\n *\n * @augments Path\n */\nclass Shape extends Path {\n\n\t/**\n\t * Constructs a new shape.\n\t *\n\t * @param {Array} [points] - An array of 2D points defining the shape.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\t/**\n\t\t * The UUID of the shape.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\t/**\n\t\t * Defines the holes in the shape. Hole definitions must use the\n\t\t * opposite winding order (CW/CCW) than the outer shape.\n\t\t *\n\t\t * @type {Array}\n\t\t * @readonly\n\t\t */\n\t\tthis.holes = [];\n\n\t}\n\n\t/**\n\t * Returns an array representing each contour of the holes\n\t * as a list of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {Array>} The holes as a series of 2D points.\n\t */\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\t/**\n\t * Returns an object that holds contour data for the shape and its holes as\n\t * arrays of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {{shape:Array,holes:Array>}} An object with contour data.\n\t */\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* eslint-disable */\n// copy of mapbox/earcut version 3.0.1\n// https://github.com/mapbox/earcut/tree/v3.0.1\n\nfunction earcut(data, holeIndices, dim = 2) {\n\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let minX, minY, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = Infinity;\n minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i];\n const y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n let last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n } else {\n for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n const prev = ear.prev;\n const next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i, ear.i, next.i); // cut off the triangle\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n let p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n let p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles) {\n let p = start;\n do {\n const a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i, p.i, b.i);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n const list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareXYSlope);\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareXYSlope(a, b) {\n let result = a.x - b.x;\n // when the left-most point of 2 holes meet at a vertex, sort the holes counterclockwise so that when we find\n // the bridge to the outer shell is always the point that they meet at.\n if (result === 0) {\n result = a.y - b.y;\n if (result === 0) {\n const aSlope = (a.next.y - a.y) / (a.next.x - a.x);\n const bSlope = (b.next.y - b.y) / (b.next.x - b.x);\n result = aSlope - bSlope;\n }\n }\n return result;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n const bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n const bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n // unless they intersect at a vertex, then choose the vertex\n if (equals(hole, p)) return p;\n do {\n if (equals(hole, p.next)) return p.next;\n else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let numMerges;\n let inSize = 1;\n\n do {\n let p = list;\n let e;\n list = null;\n let tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n let q = p;\n let pSize = 0;\n for (let i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n let qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a point lies within a convex triangle but false if its equal to the first point of the triangle\nfunction pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {\n return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // doesn't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = createNode(a.i, a.x, a.y),\n b2 = createNode(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = createNode(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction createNode(i, x, y) {\n return {\n i, // vertex index in coordinates array\n x, y, // vertex coordinates\n prev: null, // previous and next vertex nodes in a polygon ring\n next: null,\n z: 0, // z-order curve value\n prevZ: null, // previous and next nodes in z-order\n nextZ: null,\n steiner: false // indicates whether this is a steiner point\n };\n}\n\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\nclass Earcut {\n\n\t/**\n\t * Triangulates the given shape definition by returning an array of triangles.\n\t *\n\t * @param {Array} data - An array with 2D points.\n\t * @param {Array} holeIndices - An array with indices defining holes.\n\t * @param {number} [dim=2] - The number of coordinates per vertex in the input array.\n\t * @return {Array} An array representing the triangulated faces. Each face is defined by three consecutive numbers\n\t * representing vertex indices.\n\t */\n\tstatic triangulate( data, holeIndices, dim = 2 ) {\n\n\t\treturn earcut( data, holeIndices, dim );\n\n\t}\n\n}\n\n/**\n * A class containing utility functions for shapes.\n *\n * @hideconstructor\n */\nclass ShapeUtils {\n\n\t/**\n\t * Calculate area of a ( 2D ) contour polygon.\n\t *\n\t * @param {Array} contour - An array of 2D points.\n\t * @return {number} The area.\n\t */\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given contour uses a clockwise winding order.\n\t *\n\t * @param {Array} pts - An array of 2D points defining a polygon.\n\t * @return {boolean} Whether the given contour uses a clockwise winding order or not.\n\t */\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\t/**\n\t * Triangulates the given shape definition.\n\t *\n\t * @param {Array} contour - An array of 2D points defining the contour.\n\t * @param {Array>} holes - An array that holds arrays of 2D points defining the holes.\n\t * @return {Array>} An array that holds for each face definition an array with three indices.\n\t */\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * ```js\n * const length = 12, width = 8;\n *\n * const shape = new THREE.Shape();\n * shape.moveTo( 0,0 );\n * shape.lineTo( 0, width );\n * shape.lineTo( length, width );\n * shape.lineTo( length, 0 );\n * shape.lineTo( 0, 0 );\n *\n * const geometry = new THREE.ExtrudeGeometry( shape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ExtrudeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new extrude geometry.\n\t *\n\t * @param {Shape|Array} [shapes] - A shape or an array of shapes.\n\t * @param {ExtrudeGeometry~Options} [options] - The extrude settings.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( -0.5, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.\n\t\t\t * @param {Array} points\n\t\t\t*/\n\t\t\tfunction mergeOverlappingPoints( points ) {\n\n\t\t\t\tconst THRESHOLD = 1e-10;\n\t\t\t\tconst THRESHOLD_SQ = THRESHOLD * THRESHOLD;\n\t\t\t\tlet prevPos = points[ 0 ];\n\t\t\t\tfor ( let i = 1; i <= points.length; i ++ ) {\n\n\t\t\t\t\tconst currentIndex = i % points.length;\n\t\t\t\t\tconst currentPos = points[ currentIndex ];\n\t\t\t\t\tconst dx = currentPos.x - prevPos.x;\n\t\t\t\t\tconst dy = currentPos.y - prevPos.y;\n\t\t\t\t\tconst distSq = dx * dx + dy * dy;\n\n\t\t\t\t\tconst scalingFactorSqrt = Math.max(\n\t\t\t\t\t\tMath.abs( currentPos.x ),\n\t\t\t\t\t\tMath.abs( currentPos.y ),\n\t\t\t\t\t\tMath.abs( prevPos.x ),\n\t\t\t\t\t\tMath.abs( prevPos.y )\n\t\t\t\t\t);\n\t\t\t\t\tconst thresholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;\n\t\t\t\t\tif ( distSq <= thresholdSqScaled ) {\n\n\t\t\t\t\t\tpoints.splice( currentIndex, 1 );\n\t\t\t\t\t\ti --;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tprevPos = currentPos;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmergeOverlappingPoints( vertices );\n\t\t\tholes.forEach( mergeOverlappingPoints );\n\n\t\t\tconst numHoles = holes.length;\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0; h < numHoles; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = numHoles; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\t\t\tlet faces;\n\n\t\t\tif ( bevelSegments === 0 ) {\n\n\t\t\t\tfaces = ShapeUtils.triangulateShape( contour, holes );\n\n\t\t\t} else {\n\n\t\t\t\tconst contractedContourVertices = [];\n\t\t\t\tconst expandedHoleVertices = [];\n\n\t\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t\t// contract shape\n\n\t\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\t\t\t\t\t\tif ( t === 0 ) contractedContourVertices.push( vert );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// expand holes\n\n\t\t\t\t\tfor ( let h = 0, hl = numHoles; h < hl; h ++ ) {\n\n\t\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\t\t\t\t\t\tconst oneHoleVertices = [];\n\t\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\t\t\t\t\t\t\tif ( t === 0 ) oneHoleVertices.push( vert );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( t === 0 ) expandedHoleVertices.push( oneHoleVertices );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfaces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );\n\n\t\t\t}\n\n\t\t\tconst flen = faces.length;\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array} shapes - An array of shapes.\n\t * @return {ExtrudeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * A geometry class for representing an icosahedron.\n *\n * ```js\n * const geometry = new THREE.IcosahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const icosahedron = new THREE.Mesh( geometry, material );\n * scene.add( icosahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new icosahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the icosahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t-1, t, 0, \t1, t, 0, \t-1, - t, 0, \t1, - t, 0,\n\t\t\t0, -1, t, \t0, 1, t,\t0, -1, - t, \t0, 1, - t,\n\t\t\tt, 0, -1, \tt, 0, 1, \t- t, 0, -1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {IcosahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.\n *\n * ```js\n * const points = [];\n * for ( let i = 0; i < 10; i ++ ) {\n * \tpoints.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );\n * }\n * const geometry = new THREE.LatheGeometry( points );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const lathe = new THREE.Mesh( geometry, material );\n * scene.add( lathe );\n * ```\n *\n * @augments BufferGeometry\n */\nclass LatheGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new lathe geometry.\n\t *\n\t * @param {Array} [points] - An array of points in 2D space. The x-coordinate of each point\n\t * must be greater than zero.\n\t * @param {number} [segments=12] - The number of circumference segments to generate.\n\t * @param {number} [phiStart=0] - The starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a\n\t * closed lathe, less than 2PI is a portion.\n\t */\n\tconstructor( points = [ new Vector2( 0, -0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {LatheGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an octahedron.\n *\n * ```js\n * const geometry = new THREE.OctahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const octahedron = new THREE.Mesh( geometry, material );\n * scene.add( octahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new octahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the octahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t-1, 0, 0,\t0, 1, 0,\n\t\t\t0, -1, 0, \t0, 0, 1,\t0, 0, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {OctahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a plane.\n *\n * ```js\n * const geometry = new THREE.PlaneGeometry( 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const plane = new THREE.Mesh( geometry, material );\n * scene.add( plane );\n * ```\n *\n * @augments BufferGeometry\n */\nclass PlaneGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new plane geometry.\n\t *\n\t * @param {number} [width=1] - The width along the X axis.\n\t * @param {number} [height=1] - The height along the Y axis\n\t * @param {number} [widthSegments=1] - The number of segments along the X axis.\n\t * @param {number} [heightSegments=1] - The number of segments along the Y axis.\n\t */\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PlaneGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\n/**\n * A class for generating a two-dimensional ring geometry.\n *\n * ```js\n * const geometry = new THREE.RingGeometry( 1, 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass RingGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new ring geometry.\n\t *\n\t * @param {number} [innerRadius=0.5] - The inner radius of the ring.\n\t * @param {number} [outerRadius=1] - The outer radius of the ring.\n\t * @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`.\n\t * @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`.\n\t * @param {number} [thetaStart=0] - Starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {RingGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * Creates an one-sided polygonal geometry from one or more path shapes.\n *\n * ```js\n * const arcShape = new THREE.Shape()\n *\t.moveTo( 5, 1 )\n *\t.absarc( 1, 1, 4, 0, Math.PI * 2, false );\n *\n * const geometry = new THREE.ShapeGeometry( arcShape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ShapeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new shape geometry.\n\t *\n\t * @param {Shape|Array} [shapes] - A shape or an array of shapes.\n\t * @param {number} [curveSegments=12] - Number of segments per shape.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array} shapes - An array of shapes.\n\t * @return {ShapeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * A class for generating a sphere geometry.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry( 15, 32, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const sphere = new THREE.Mesh( geometry, material );\n * scene.add( sphere );\n * ```\n *\n * @augments BufferGeometry\n */\nclass SphereGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new sphere geometry.\n\t *\n\t * @param {number} [radius=1] - The sphere radius.\n\t * @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`.\n\t * @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`.\n\t * @param {number} [phiStart=0] - The horizontal starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size.\n\t * @param {number} [thetaStart=0] - The vertical starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI] - The vertical sweep angle size.\n\t */\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = -0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {SphereGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an tetrahedron.\n *\n * ```js\n * const geometry = new THREE.TetrahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const tetrahedron = new THREE.Mesh( geometry, material );\n * scene.add( tetrahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new tetrahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the tetrahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t-1, -1, 1, \t-1, 1, -1, \t1, -1, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TetrahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an torus.\n *\n * ```js\n * const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torus = new THREE.Mesh( geometry, material );\n * scene.add( torus );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube.\n\t * @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`.\n\t * @param {number} [radialSegments=12] - The number of radial segments.\n\t * @param {number} [tubularSegments=48] - The number of tubular segments.\n\t * @param {number} [arc=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\n/**\n * Creates a torus knot, the particular shape of which is defined by a pair\n * of coprime integers, p and q. If p and q are not coprime, the result will\n * be a torus link.\n *\n * ```js\n * const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torusKnot = new THREE.Mesh( geometry, material );\n * scene.add( torusKnot );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusKnotGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus knot geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus knot.\n\t * @param {number} [tube=0.4] - Radius of the tube.\n\t * @param {number} [tubularSegments=64] - The number of tubular segments.\n\t * @param {number} [radialSegments=8] - The number of radial segments.\n\t * @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry.\n\t * @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus.\n\t */\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusKnotGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\n/**\n * Creates a tube that extrudes along a 3D curve.\n *\n * ```js\n * class CustomSinCurve extends THREE.Curve {\n *\n * \tgetPoint( t, optionalTarget = new THREE.Vector3() ) {\n *\n * \t\tconst tx = t * 3 - 1.5;\n * \t\tconst ty = Math.sin( 2 * Math.PI * t );\n * \t\tconst tz = 0;\n *\n * \t\treturn optionalTarget.set( tx, ty, tz );\n * \t}\n *\n * }\n *\n * const path = new CustomSinCurve( 10 );\n * const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TubeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new tube geometry.\n\t *\n\t * @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube.\n\t * @param {number} [tubularSegments=64] - The number of segments that make up the tube.\n\t * @param {number} [radius=1] -The radius of the tube.\n\t * @param {number} [radialSegments=8] - The number of segments that make up the cross-section.\n\t * @param {boolean} [closed=false] - Whether the tube is closed or not.\n\t */\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( -1, -1, 0 ), new Vector3( -1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TubeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\n/**\n * Can be used as a helper object to visualize a geometry as a wireframe.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry();\n *\n * const wireframe = new THREE.WireframeGeometry( geometry );\n *\n * const line = new THREE.LineSegments( wireframe );\n * line.material.depthWrite = false;\n * line.material.opacity = 0.25;\n * line.material.transparent = true;\n *\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass WireframeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new wireframe geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t */\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * This material can receive shadows, but otherwise is completely transparent.\n *\n * ```js\n * const geometry = new THREE.PlaneGeometry( 2000, 2000 );\n * geometry.rotateX( - Math.PI / 2 );\n *\n * const material = new THREE.ShadowMaterial();\n * material.opacity = 0.2;\n *\n * const plane = new THREE.Mesh( geometry, material );\n * plane.position.y = -200;\n * plane.receiveShadow = true;\n * scene.add( plane );\n * ```\n *\n * @augments Material\n */\nclass ShadowMaterial extends Material {\n\n\t/**\n\t * Constructs a new shadow material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.color = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Overwritten since shadow materials are transparent\n\t\t * by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.transparent = true;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This class works just like {@link ShaderMaterial}, except that definitions\n * of built-in uniforms and attributes are not automatically prepended to the\n * GLSL shader code.\n *\n * `RawShaderMaterial` can only be used with {@link WebGLRenderer}.\n *\n * @augments ShaderMaterial\n */\nclass RawShaderMaterial extends ShaderMaterial {\n\n\t/**\n\t * Constructs a new raw shader material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\n/**\n * A standard physically based material, using Metallic-Roughness workflow.\n *\n * Physically based rendering (PBR) has recently become the standard in many\n * 3D applications, such as [Unity]{@link https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/},\n * [Unreal]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/} and\n * [3D Studio Max]{@link http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017}.\n *\n * This approach differs from older approaches in that instead of using\n * approximations for the way in which light interacts with a surface, a\n * physically correct model is used. The idea is that, instead of tweaking\n * materials to look good under specific lighting, a material can be created\n * that will react 'correctly' under all lighting scenarios.\n *\n * In practice this gives a more accurate and realistic looking result than\n * the {@link MeshLambertMaterial} or {@link MeshPhongMaterial}, at the cost of\n * being somewhat more computationally expensive. `MeshStandardMaterial` uses per-fragment\n * shading.\n *\n * Note that for best results you should always specify an environment map when using this material.\n *\n * For a non-technical introduction to the concept of PBR and how to set up a\n * PBR material, check out these articles by the people at [marmoset]{@link https://www.marmoset.co}:\n *\n * - [Basic Theory of Physically Based Rendering]{@link https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/}\n * - [Physically Based Rendering and You Can Too]{@link https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/}\n *\n * Technical details of the approach used in three.js (and most other PBR systems) can be found is this\n * [paper from Disney]{@link https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf}\n * (pdf), by Brent Burley.\n *\n * @augments Material\n */\nclass MeshStandardMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh standard material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * How rough the material appears. `0.0` means a smooth mirror reflection, `1.0`\n\t\t * means fully diffuse. If `roughnessMap` is also provided,\n\t\t * both values are multiplied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.roughness = 1.0;\n\n\t\t/**\n\t\t * How much the material is like a metal. Non-metallic materials such as wood\n\t\t * or stone use `0.0`, metallic use `1.0`, with nothing (usually) in between.\n\t\t * A value between `0.0` and `1.0` could be used for a rusty metal look.\n\t\t * If `metalnessMap` is also provided, both values are multiplied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.metalness = 0.0;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The green channel of this texture is used to alter the roughness of the\n\t\t * material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.roughnessMap = null;\n\n\t\t/**\n\t\t * The blue channel of this texture is used to alter the metalness of the\n\t\t * material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.metalnessMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map. To ensure a physically correct rendering, environment maps\n\t\t * are internally pre-processed with {@link PMREMGenerator}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * Scales the effect of the environment map by multiplying its color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.envMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * An extension of the {@link MeshStandardMaterial}, providing more advanced\n * physically-based rendering properties:\n *\n * - Anisotropy: Ability to represent the anisotropic property of materials\n * as observable with brushed metals.\n * - Clearcoat: Some materials — like car paints, carbon fiber, and wet surfaces — require\n * a clear, reflective layer on top of another layer that may be irregular or rough.\n * Clearcoat approximates this effect, without the need for a separate transparent surface.\n * - Iridescence: Allows to render the effect where hue varies depending on the viewing\n * angle and illumination angle. This can be seen on soap bubbles, oil films, or on the\n * wings of many insects.\n * - Physically-based transparency: One limitation of {@link Material#opacity} is that highly\n * transparent materials are less reflective. Physically-based transmission provides a more\n * realistic option for thin, transparent surfaces like glass.\n * - Advanced reflectivity: More flexible reflectivity for non-metallic materials.\n * - Sheen: Can be used for representing cloth and fabric materials.\n *\n * As a result of these complex shading features, `MeshPhysicalMaterial` has a\n * higher performance cost, per pixel, than other three.js materials. Most\n * effects are disabled by default, and add cost as they are enabled. For\n * best results, always specify an environment map when using this material.\n *\n * @augments MeshStandardMaterial\n */\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\t/**\n\t * Constructs a new mesh physical material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\t/**\n\t\t * The rotation of the anisotropy in tangent, bitangent space, measured in radians\n\t\t * counter-clockwise from the tangent. When `anisotropyMap` is present, this\n\t\t * property provides additional rotation to the vectors in the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.anisotropyRotation = 0;\n\n\t\t/**\n\t\t * Red and green channels represent the anisotropy direction in `[-1, 1]` tangent,\n\t\t * bitangent space, to be rotated by `anisotropyRotation`. The blue channel\n\t\t * contains strength as `[0, 1]` to be multiplied by `anisotropy`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.anisotropyMap = null;\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `clearcoat`,\n\t\t * for per-pixel control over a coating's intensity.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatMap = null;\n\n\t\t/**\n\t\t * Roughness of the clear coat layer, from `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.clearcoatRoughness = 0.0;\n\n\t\t/**\n\t\t * The green channel of this texture is multiplied against\n\t\t * `clearcoatRoughness`, for per-pixel control over a coating's roughness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatRoughnessMap = null;\n\n\t\t/**\n\t\t * How much `clearcoatNormalMap` affects the clear coat layer, from\n\t\t * `(0,0)` to `(1,1)`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * Can be used to enable independent normals for the clear coat layer.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.clearcoatNormalMap = null;\n\n\t\t/**\n\t\t * Index-of-refraction for non-metallic materials, from `1.0` to `2.333`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1.5\n\t\t */\n\t\tthis.ior = 1.5;\n\n\t\t/**\n\t\t * Degree of reflectivity, from `0.0` to `1.0`. Default is `0.5`, which\n\t\t * corresponds to an index-of-refraction of `1.5`.\n\t\t *\n\t\t * This models the reflectivity of non-metallic materials. It has no effect\n\t\t * when `metalness` is `1.0`\n\t\t *\n\t\t * @name MeshPhysicalMaterial#reflectivity\n\t\t * @type {number}\n\t\t * @default 0.5\n\t\t */\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `iridescence`, for per-pixel\n\t\t * control over iridescence.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.iridescenceMap = null;\n\n\t\t/**\n\t\t * Strength of the iridescence RGB color shift effect, represented by an index-of-refraction.\n\t\t * Between `1.0` to `2.333`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1.3\n\t\t */\n\t\tthis.iridescenceIOR = 1.3;\n\n\t\t/**\n\t\t *Array of exactly 2 elements, specifying minimum and maximum thickness of the iridescence layer.\n\t\t Thickness of iridescence layer has an equivalent effect of the one `thickness` has on `ior`.\n\t\t *\n\t\t * @type {Array}\n\t\t * @default [100,400]\n\t\t */\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t/**\n\t\t * A texture that defines the thickness of the iridescence layer, stored in the green channel.\n\t\t * Minimum and maximum values of thickness are defined by `iridescenceThicknessRange` array:\n\t\t * - `0.0` in the green channel will result in thickness equal to first element of the array.\n\t\t * - `1.0` in the green channel will result in thickness equal to second element of the array.\n\t\t * - Values in-between will linearly interpolate between the elements of the array.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\t/**\n\t\t * The sheen tint.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.sheenColor = new Color( 0x000000 );\n\n\t\t/**\n\t\t * The RGB channels of this texture are multiplied against `sheenColor`, for per-pixel control\n\t\t * over sheen tint.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.sheenColorMap = null;\n\n\t\t/**\n\t\t * Roughness of the sheen layer, from `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.sheenRoughness = 1.0;\n\n\t\t/**\n\t\t * The alpha channel of this texture is multiplied against `sheenRoughness`, for per-pixel control\n\t\t * over sheen roughness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.sheenRoughnessMap = null;\n\n\t\t/**\n\t\t * The red channel of this texture is multiplied against `transmission`, for per-pixel control over\n\t\t * optical transparency.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.transmissionMap = null;\n\n\t\t/**\n\t\t * The thickness of the volume beneath the surface. The value is given in the\n\t\t * coordinate space of the mesh. If the value is `0` the material is\n\t\t * thin-walled. Otherwise the material is a volume boundary.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.thickness = 0;\n\n\t\t/**\n\t\t * A texture that defines the thickness, stored in the green channel. This will\n\t\t * be multiplied by `thickness`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.thicknessMap = null;\n\n\t\t/**\n\t\t * Density of the medium given as the average distance that light travels in\n\t\t * the medium before interacting with a particle. The value is given in world\n\t\t * space units, and must be greater than zero.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.attenuationDistance = Infinity;\n\n\t\t/**\n\t\t * The color that white light turns into due to absorption when reaching the\n\t\t * attenuation distance.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\t/**\n\t\t * A float that scales the amount of specular reflection for non-metals only.\n\t\t * When set to zero, the model is effectively Lambertian. From `0.0` to `1.0`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.specularIntensity = 1.0;\n\n\t\t/**\n\t\t * The alpha channel of this texture is multiplied against `specularIntensity`,\n\t\t * for per-pixel control over specular intensity.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularIntensityMap = null;\n\n\t\t/**\n\t\t * Tints the specular reflection at normal incidence for non-metals only.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\n\t\t/**\n\t\t * The RGB channels of this texture are multiplied against `specularColor`,\n\t\t * for per-pixel control over specular color.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\t/**\n\t * The anisotropy strength.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\t/**\n\t * Represents the intensity of the clear coat layer, from `0.0` to `1.0`. Use\n\t * clear coat related properties to enable multilayer materials that have a\n\t * thin translucent layer over the base layer.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\t/**\n\t * The intensity of the iridescence layer, simulating RGB color shift based on the angle between\n\t * the surface and the viewer, from `0.0` to `1.0`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\t/**\n\t * Defines the strength of the angular separation of colors (chromatic aberration) transmitting\n\t * through a relatively clear volume. Any value zero or larger is valid, the typical range of\n\t * realistic values is `[0, 1]`. This property can be only be used with transmissive objects.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\n\n\t}\n\n\t/**\n\t * The intensity of the sheen layer, from `0.0` to `1.0`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\t/**\n\t * Degree of transmission (or optical transparency), from `0.0` to `1.0`.\n\t *\n\t * Thin, transparent or semitransparent, plastic or glass materials remain\n\t * largely reflective even if they are fully transmissive. The transmission\n\t * property can be used to model these materials.\n\t *\n\t * When transmission is non-zero, `opacity` should be set to `1`.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for shiny surfaces with specular highlights.\n *\n * The material uses a non-physically based [Blinn-Phong]{@link https://en.wikipedia.org/wiki/Blinn-Phong_shading_model}\n * model for calculating reflectance. Unlike the Lambertian model used in the\n * {@link MeshLambertMaterial} this can simulate shiny surfaces with specular\n * highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.\n *\n * Performance will generally be greater when using this material over the\n * {@link MeshStandardMaterial} or {@link MeshPhysicalMaterial}, at the cost of\n * some graphical accuracy.\n *\n * @augments Material\n */\nclass MeshPhongMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh phong material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * Specular color of the material. The default color is set to `0x111111` (very dark grey)\n\t\t *\n\t\t * This defines how shiny the material is and the color of its shine.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.specular = new Color( 0x111111 );\n\n\t\t/**\n\t\t * How shiny the specular highlight is; a higher value gives a sharper highlight.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 30\n\t\t */\n\t\tthis.shininess = 30;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The specular map value affects both how much the specular surface\n\t\t * highlight contributes and how much of the environment map affects the\n\t\t * surface.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material implementing toon shading.\n *\n * @augments Material\n */\nclass MeshToonMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh toon material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff );\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * Gradient map for toon shading. It's required to set\n\t\t * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter}\n\t\t * when using this type of texture.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.gradientMap = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material that maps the normal vectors to RGB colors.\n *\n * @augments Material\n */\nclass MeshNormalMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh normal material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for non-shiny surfaces, without specular highlights.\n *\n * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance}\n * model for calculating reflectance. This can simulate some surfaces (such\n * as untreated wood or stone) well, but cannot simulate shiny surfaces with\n * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment\n * shading.\n *\n * Due to the simplicity of the reflectance and illumination models,\n * performance will be greater when using this material over the\n * {@link MeshPhongMaterial}, {@link MeshStandardMaterial} or\n * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.\n *\n * @augments Material\n */\nclass MeshLambertMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh lambert material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The light map. Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.lightMap = null;\n\n\t\t/**\n\t\t * Intensity of the baked light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\t/**\n\t\t * The red channel of this texture is used as the ambient occlusion map.\n\t\t * Requires a second set of UVs.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.aoMap = null;\n\n\t\t/**\n\t\t * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`\n\t\t * disables ambient occlusion. Where intensity is `1` and the AO map's\n\t\t * red channel is also `1`, ambient light is fully occluded on a surface.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\t/**\n\t\t * Emissive (light) color of the material, essentially a solid color\n\t\t * unaffected by other lighting.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.emissive = new Color( 0x000000 );\n\n\t\t/**\n\t\t * Intensity of the emissive light. Modulates the emissive color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.emissiveIntensity = 1.0;\n\n\t\t/**\n\t\t * Set emissive (glow) map. The emissive map color is modulated by the\n\t\t * emissive color and the emissive intensity. If you have an emissive map,\n\t\t * be sure to set the emissive color to something other than black.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.emissiveMap = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Specular map used by the material.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.specularMap = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The environment map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.envMap = null;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.envMapRotation = new Euler();\n\n\t\t/**\n\t\t * How to combine the result of the surface's color with the environment map, if any.\n\t\t *\n\t\t * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to\n\t\t * blend between the two colors.\n\t\t *\n\t\t * @type {(MultiplyOperation|MixOperation|AddOperation)}\n\t\t * @default MultiplyOperation\n\t\t */\n\t\tthis.combine = MultiplyOperation;\n\n\t\t/**\n\t\t * How much the environment map affects the surface.\n\t\t * The valid range is between `0` (no reflections) and `1` (full reflections).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.reflectivity = 1;\n\n\t\t/**\n\t\t * The index of refraction (IOR) of air (approximately 1) divided by the\n\t\t * index of refraction of the material. It is used with environment mapping\n\t\t * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.\n\t\t * The refraction ratio should not exceed `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.98\n\t\t */\n\t\tthis.refractionRatio = 0.98;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\t/**\n\t\t * Defines appearance of wireframe ends.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinecap = 'round';\n\n\t\t/**\n\t\t * Defines appearance of wireframe joints.\n\t\t *\n\t\t * Can only be used with {@link SVGRenderer}.\n\t\t *\n\t\t * @type {('round'|'bevel'|'miter')}\n\t\t * @default 'round'\n\t\t */\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for drawing geometry by depth. Depth is based off of the camera\n * near and far plane. White is nearest, black is farthest.\n *\n * @augments Material\n */\nclass MeshDepthMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh depth material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\t/**\n\t\t * Type for depth packing.\n\t\t *\n\t\t * @type {(BasicDepthPacking|RGBADepthPacking|RGBDepthPacking|RGDepthPacking)}\n\t\t * @default BasicDepthPacking\n\t\t */\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * Renders the geometry as a wireframe.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.wireframe = false;\n\n\t\t/**\n\t\t * Controls the thickness of the wireframe.\n\t\t *\n\t\t * WebGL and WebGPU ignore this property and always render\n\t\t * 1 pixel wide lines.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material used internally for implementing shadow mapping with\n * point lights.\n *\n * Can also be used to customize the shadow casting of an object by assigning\n * an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.\n * The following examples demonstrates this approach in order to ensure\n * transparent parts of objects do not cast shadows.\n *\n * @augments Material\n */\nclass MeshDistanceMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh distance material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This material is defined by a MatCap (or Lit Sphere) texture, which encodes the\n * material color and shading.\n *\n * `MeshMatcapMaterial` does not respond to lights since the matcap image file encodes\n * baked lighting. It will cast a shadow onto an object that receives shadows\n * (and shadow clipping works), but it will not self-shadow or receive\n * shadows.\n *\n * @augments Material\n */\nclass MeshMatcapMaterial extends Material {\n\n\t/**\n\t * Constructs a new mesh matcap material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\t/**\n\t\t * Color of the material.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (1,1,1)\n\t\t */\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\t/**\n\t\t * The matcap map.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.matcap = null;\n\n\t\t/**\n\t\t * The color map. May optionally include an alpha channel, typically combined\n\t\t * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map\n\t\t * color is modulated by the diffuse `color`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The texture to create a bump map. The black and white values map to the\n\t\t * perceived depth in relation to the lights. Bump doesn't actually affect\n\t\t * the geometry of the object, only the lighting. If a normal map is defined\n\t\t * this will be ignored.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.bumpMap = null;\n\n\t\t/**\n\t\t * How much the bump map affects the material. Typical range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.bumpScale = 1;\n\n\t\t/**\n\t\t * The texture to create a normal map. The RGB values affect the surface\n\t\t * normal for each pixel fragment and change the way the color is lit. Normal\n\t\t * maps do not change the actual shape of the surface, only the lighting. In\n\t\t * case the material has a normal map authored using the left handed\n\t\t * convention, the `y` component of `normalScale` should be negated to compensate\n\t\t * for the different handedness.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.normalMap = null;\n\n\t\t/**\n\t\t * The type of normal map.\n\t\t *\n\t\t * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}\n\t\t * @default TangentSpaceNormalMap\n\t\t */\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\n\t\t/**\n\t\t * How much the normal map affects the material. Typical value range is `[0,1]`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The displacement map affects the position of the mesh's vertices. Unlike\n\t\t * other maps which only affect the light and shade of the material the\n\t\t * displaced vertices can cast shadows, block other objects, and otherwise\n\t\t * act as real geometry. The displacement texture is an image where the value\n\t\t * of each pixel (white being the highest) is mapped against, and\n\t\t * repositions, the vertices of the mesh.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.displacementMap = null;\n\n\t\t/**\n\t\t * How much the displacement map affects the mesh (where black is no\n\t\t * displacement, and white is maximum displacement). Without a displacement\n\t\t * map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementScale = 1;\n\n\t\t/**\n\t\t * The offset of the displacement map's values on the mesh's vertices.\n\t\t * The bias is added to the scaled sample of the displacement map.\n\t\t * Without a displacement map set, this value is not applied.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.displacementBias = 0;\n\n\t\t/**\n\t\t * The alpha map is a grayscale texture that controls the opacity across the\n\t\t * surface (black: fully transparent; white: fully opaque).\n\t\t *\n\t\t * Only the color of the texture is used, ignoring the alpha channel if one\n\t\t * exists. For RGB and RGBA textures, the renderer will use the green channel\n\t\t * when sampling this texture due to the extra bit of precision provided for\n\t\t * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and\n\t\t * luminance/alpha textures will also still work as expected.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.alphaMap = null;\n\n\t\t/**\n\t\t * Whether the material is rendered with flat shading or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.flatShading = false;\n\n\t\t/**\n\t\t * Whether the material is affected by fog or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A material for rendering line primitives.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * ```js\n * const material = new THREE.LineDashedMaterial( {\n * \tcolor: 0xffffff,\n * \tscale: 1,\n * \tdashSize: 3,\n * \tgapSize: 1,\n * } );\n * ```\n *\n * @augments LineBasicMaterial\n */\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\t/**\n\t * Constructs a new line dashed material.\n\t *\n\t * @param {Object} [parameters] - An object with one or more properties\n\t * defining the material's appearance. Any property of the material\n\t * (including any property from inherited materials) can be passed\n\t * in here. Color values can be passed any type of value accepted\n\t * by {@link Color#set}.\n\t */\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineDashedMaterial = true;\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\t/**\n\t\t * The scale of the dashed part of a line.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.scale = 1;\n\n\t\t/**\n\t\t * The size of the dash. This is both the gap with the stroke.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 3\n\t\t */\n\t\tthis.dashSize = 3;\n\n\t\t/**\n\t\t * The size of the gap.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Converts an array to a specific type.\n *\n * @param {TypedArray|Array} array - The array to convert.\n * @param {TypedArray.constructor} type - The constructor of a typed array that defines the new type.\n * @return {TypedArray} The converted array.\n */\nfunction convertArray( array, type ) {\n\n\tif ( ! array || array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\n/**\n * Returns `true` if the given object is a typed array.\n *\n * @param {any} object - The object to check.\n * @return {boolean} Whether the given object is a typed array.\n */\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) && ! ( object instanceof DataView );\n\n}\n\n/**\n * Returns an array by which times and values can be sorted.\n *\n * @param {Array} times - The keyframe time values.\n * @return {Array} The array.\n */\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n/**\n * Sorts the given array by the previously computed order via `getKeyframeOrder()`.\n *\n * @param {Array} values - The values to sort.\n * @param {number} stride - The stride.\n * @param {Array} order - The sort order.\n * @return {Array} The sorted values.\n */\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * Used for parsing AOS keyframe formats.\n *\n * @param {Array} jsonKeys - A list of JSON keyframes.\n * @param {Array} times - This array will be filled with keyframe times by this function.\n * @param {Array} values - This array will be filled with keyframe values by this function.\n * @param {string} valuePropertyName - The name of the property to use.\n */\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( ...value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\n/**\n * Creates a new clip, containing only the segment of the original clip between the given frames.\n *\n * @param {AnimationClip} sourceClip - The values to sort.\n * @param {string} name - The name of the clip.\n * @param {number} startFrame - The start frame.\n * @param {number} endFrame - The end frame.\n * @param {number} [fps=30] - The FPS.\n * @return {AnimationClip} The new sub clip.\n */\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( -1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\n/**\n * Converts the keyframes of the given animation clip to an additive format.\n *\n * @param {AnimationClip} targetClip - The clip to make additive.\n * @param {number} [referenceFrame=0] - The reference frame.\n * @param {AnimationClip} [referenceClip=targetClip] - The reference clip.\n * @param {number} [fps=30] - The FPS.\n * @return {AnimationClip} The updated clip which is now additive.\n */\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\n/**\n * A class with various methods to assist with animations.\n *\n * @hideconstructor\n */\nclass AnimationUtils {\n\n\t/**\n\t * Converts an array to a specific type\n\t *\n\t * @static\n\t * @param {TypedArray|Array} array - The array to convert.\n\t * @param {TypedArray.constructor} type - The constructor of a type array.\n\t * @return {TypedArray} The converted array\n\t */\n\tstatic convertArray( array, type ) {\n\n\t\treturn convertArray( array, type );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given object is a typed array.\n\t *\n\t * @static\n\t * @param {any} object - The object to check.\n\t * @return {boolean} Whether the given object is a typed array.\n\t */\n\tstatic isTypedArray( object ) {\n\n\t\treturn isTypedArray( object );\n\n\t}\n\n\t/**\n\t * Returns an array by which times and values can be sorted.\n\t *\n\t * @static\n\t * @param {Array} times - The keyframe time values.\n\t * @return {Array} The array.\n\t */\n\tstatic getKeyframeOrder( times ) {\n\n\t\treturn getKeyframeOrder( times );\n\n\t}\n\n\t/**\n\t * Sorts the given array by the previously computed order via `getKeyframeOrder()`.\n\t *\n\t * @static\n\t * @param {Array} values - The values to sort.\n\t * @param {number} stride - The stride.\n\t * @param {Array} order - The sort order.\n\t * @return {Array} The sorted values.\n\t */\n\tstatic sortedArray( values, stride, order ) {\n\n\t\treturn sortedArray( values, stride, order );\n\n\t}\n\n\t/**\n\t * Used for parsing AOS keyframe formats.\n\t *\n\t * @static\n\t * @param {Array} jsonKeys - A list of JSON keyframes.\n\t * @param {Array} times - This array will be filled with keyframe times by this method.\n\t * @param {Array} values - This array will be filled with keyframe values by this method.\n\t * @param {string} valuePropertyName - The name of the property to use.\n\t */\n\tstatic flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tflattenJSON( jsonKeys, times, values, valuePropertyName );\n\n\t}\n\n\t/**\n\t * Creates a new clip, containing only the segment of the original clip between the given frames.\n\t *\n\t * @static\n\t * @param {AnimationClip} sourceClip - The values to sort.\n\t * @param {string} name - The name of the clip.\n\t * @param {number} startFrame - The start frame.\n\t * @param {number} endFrame - The end frame.\n\t * @param {number} [fps=30] - The FPS.\n\t * @return {AnimationClip} The new sub clip.\n\t */\n\tstatic subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\treturn subclip( sourceClip, name, startFrame, endFrame, fps );\n\n\t}\n\n\t/**\n\t * Converts the keyframes of the given animation clip to an additive format.\n\t *\n\t * @static\n\t * @param {AnimationClip} targetClip - The clip to make additive.\n\t * @param {number} [referenceFrame=0] - The reference frame.\n\t * @param {AnimationClip} [referenceClip=targetClip] - The reference clip.\n\t * @param {number} [fps=30] - The FPS.\n\t * @return {AnimationClip} The updated clip which is now additive.\n\t */\n\tstatic makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\treturn makeClipAdditive( targetClip, referenceFrame, referenceClip, fps );\n\n\t}\n\n}\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References: {@link http://www.oodesign.com/template-method-pattern.html}\n *\n * @abstract\n */\nclass Interpolant {\n\n\t/**\n\t * Constructs a new interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\t/**\n\t\t * The parameter positions.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.parameterPositions = parameterPositions;\n\n\t\t/**\n\t\t * A cache index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._cachedIndex = 0;\n\n\t\t/**\n\t\t * The result buffer.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor( sampleSize );\n\n\t\t/**\n\t\t * The sample values.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.sampleValues = sampleValues;\n\n\t\t/**\n\t\t * The value size.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.valueSize = sampleSize;\n\n\t\t/**\n\t\t * The interpolation settings.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.settings = null;\n\n\t\t/**\n\t\t * The default settings object.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\t/**\n\t * Evaluate the interpolant at position `t`.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\t/**\n\t * Returns the interpolation settings.\n\t *\n\t * @return {Object} The interpolation settings.\n\t */\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @param {number} index - An index into the sample value buffer.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @abstract\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t * @param {number} t1 - The next interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\t/**\n\t * Optional method that is executed when the interval has changed.\n\t *\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t */\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @augments Interpolant\n */\nclass CubicInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new cubic interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = -0;\n\t\tthis._offsetPrev = -0;\n\t\tthis._weightNext = -0;\n\t\tthis._offsetNext = -0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( -1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tconst s1 = ( -1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A basic linear interpolant.\n *\n * @augments Interpolant\n */\nclass LinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new linear interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n *\n * @augments Interpolant\n */\nclass DiscreteInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new discrete interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\n/**\n * Represents s a timed sequence of keyframes, which are composed of lists of\n * times and related values, and which are used to animate a specific property\n * of an object.\n */\nclass KeyframeTrack {\n\n\t/**\n\t * Constructs a new keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\t/**\n\t\t * The track's name can refer to morph targets or bones or\n\t\t * possibly other values within an animated object. See {@link PropertyBinding#parseTrackName}\n\t\t * for the forms of strings that can be parsed for property binding.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * The keyframe times.\n\t\t *\n\t\t * @type {Float32Array}\n\t\t */\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\n\t\t/**\n\t\t * The keyframe values.\n\t\t *\n\t\t * @type {Float32Array}\n\t\t */\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t/**\n\t * Converts the keyframe track to JSON.\n\t *\n\t * @static\n\t * @param {KeyframeTrack} track - The keyframe track to serialize.\n\t * @return {Object} The serialized keyframe track as JSON.\n\t */\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\t/**\n\t * Factory method for creating a new discrete interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {DiscreteInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Factory method for creating a new linear interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {LinearInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Factory method for creating a new smooth interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {CubicInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\t/**\n\t * Defines the interpolation factor method for this keyframe track.\n\t *\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} interpolation - The interpolation type.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current interpolation type.\n\t *\n\t * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type.\n\t */\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the value size.\n\t *\n\t * @return {number} The value size.\n\t */\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t/**\n\t * Moves all keyframes either forward or backward in time.\n\t *\n\t * @param {number} timeOffset - The offset to move the time values.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scale all keyframe times by a factor (useful for frame - seconds conversions).\n\t *\n\t * @param {number} timeScale - The time scale.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes keyframes before and after animation without changing any values within the defined time range.\n\t *\n\t * Note: The method does not shift around keys to the start of the track time, because for interpolated\n\t * keys this will change their values\n\t *\n\t * @param {number} startTime - The start time.\n\t * @param {number} endTime - The end time.\n\t * @return {KeyframeTrack} A reference to this keyframe track.\n\t */\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== -1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs minimal validation on the keyframe track. Returns `true` if the values\n\t * are valid.\n\t *\n\t * @return {boolean} Whether the keyframes are valid or not.\n\t */\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t/**\n\t * Optimizes this keyframe track by removing equivalent sequential keys (which are\n\t * common in morph target sequences).\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\toptimize() {\n\n\t\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new keyframe track with copied values from this instance.\n\t *\n\t * @return {KeyframeTrack} A clone of this instance.\n\t */\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default ''\n */\nKeyframeTrack.prototype.ValueTypeName = '';\n\n/**\n * The time buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Float32Array.constructor\n */\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Float32Array.constructor\n */\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateLinear\n */\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A track for boolean keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new boolean keyframe track.\n\t *\n\t * This keyframe track type has no `interpolation` parameter because the\n\t * interpolation is always discrete.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t */\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'bool'\n */\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Array.constructor\n */\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateDiscrete\n */\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for color keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass ColorKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new color keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'color'\n */\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A track for numeric keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass NumberKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new number keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'number'\n */\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @augments Interpolant\n */\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new SLERP interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A track for Quaternion keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new Quaternion keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n\t/**\n\t * Overwritten so the method returns Quaternion based interpolant.\n\t *\n\t * @static\n\t * @param {TypedArray} [result] - The result buffer.\n\t * @return {QuaternionLinearInterpolant} The new interpolant.\n\t */\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'quaternion'\n */\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\n// DefaultInterpolation is inherited;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for string keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass StringKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new string keyframe track.\n\t *\n\t * This keyframe track type has no `interpolation` parameter because the\n\t * interpolation is always discrete.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t */\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'string'\n */\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\n\n/**\n * The value buffer type of this keyframe track.\n *\n * @type {TypedArray|Array}\n * @default Array.constructor\n */\nStringKeyframeTrack.prototype.ValueBufferType = Array;\n\n/**\n * The default interpolation type of this keyframe track.\n *\n * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}\n * @default InterpolateDiscrete\n */\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A track for vector keyframe values.\n *\n * @augments KeyframeTrack\n */\nclass VectorKeyframeTrack extends KeyframeTrack {\n\n\t/**\n\t * Constructs a new vector keyframe track.\n\t *\n\t * @param {string} name - The keyframe track's name.\n\t * @param {Array} times - A list of keyframe times.\n\t * @param {Array} values - A list of keyframe values.\n\t * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.\n\t */\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tsuper( name, times, values, interpolation );\n\n\t}\n\n}\n\n/**\n * The value type name.\n *\n * @type {String}\n * @default 'vector'\n */\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\n/**\n * A reusable set of keyframe tracks which represent an animation.\n */\nclass AnimationClip {\n\n\t/**\n\t * Constructs a new animation clip.\n\t *\n\t * Note: Instead of instantiating an AnimationClip directly with the constructor, you can\n\t * use the static interface of this class for creating clips. In most cases though, animation clips\n\t * will automatically be created by loaders when importing animated 3D assets.\n\t *\n\t * @param {string} [name=''] - The clip's name.\n\t * @param {number} [duration=-1] - The clip's duration in seconds. If a negative value is passed,\n\t * the duration will be calculated from the passed keyframes.\n\t * @param {Array} tracks - An array of keyframe tracks.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode=NormalAnimationBlendMode] - Defines how the animation\n\t * is blended/combined when two or more animations are simultaneously played.\n\t */\n\tconstructor( name = '', duration = -1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\t/**\n\t\t * The clip's name.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * An array of keyframe tracks.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.tracks = tracks;\n\n\t\t/**\n\t\t * The clip's duration in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.duration = duration;\n\n\t\t/**\n\t\t * Defines how the animation is blended/combined when two or more animations\n\t\t * are simultaneously played.\n\t\t *\n\t\t * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}\n\t\t */\n\t\tthis.blendMode = blendMode;\n\n\t\t/**\n\t\t * The UUID of the animation clip.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the animation clip.\n\t\t * It should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Factory method for creating an animation clip from the given JSON.\n\t *\n\t * @static\n\t * @param {Object} json - The serialized animation clip.\n\t * @return {AnimationClip} The new animation clip.\n\t */\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\tclip.userData = JSON.parse( json.userData || '{}' );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Serializes the given animation clip into JSON.\n\t *\n\t * @static\n\t * @param {AnimationClip} clip - The animation clip to serialize.\n\t * @return {Object} The JSON object.\n\t */\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode,\n\t\t\t'userData': JSON.stringify( clip.userData ),\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\t/**\n\t * Returns a new animation clip from the passed morph targets array of a\n\t * geometry, taking a name and the number of frames per second.\n\t *\n\t * Note: The fps parameter is required, but the animation speed can be\n\t * overridden via {@link AnimationAction#setDuration}.\n\t *\n\t * @static\n\t * @param {string} name - The name of the animation clip.\n\t * @param {Array} morphTargetSequence - A sequence of morph targets.\n\t * @param {number} fps - The Frames-Per-Second value.\n\t * @param {boolean} noLoop - Whether the clip should be no loop or not.\n\t * @return {AnimationClip} The new animation clip.\n\t */\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, -1, tracks );\n\n\t}\n\n\t/**\n\t * Searches for an animation clip by name, taking as its first parameter\n\t * either an array of clips, or a mesh or geometry that contains an\n\t * array named \"animations\" property.\n\t *\n\t * @static\n\t * @param {(Array|Object3D)} objectOrClipArray - The array or object to search through.\n\t * @param {string} name - The name to search for.\n\t * @return {?AnimationClip} The found animation clip. Returns `null` if no clip has been found.\n\t */\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Returns an array of new AnimationClips created from the morph target\n\t * sequences of a geometry, trying to sort morph target names into\n\t * animation-group-based patterns like \"Walk_001, Walk_002, Run_001, Run_002...\".\n\t *\n\t * See {@link MD2Loader#parse} as an example for how the method should be used.\n\t *\n\t * @static\n\t * @param {Array} morphTargets - A sequence of morph targets.\n\t * @param {number} fps - The Frames-Per-Second value.\n\t * @param {boolean} noLoop - Whether the clip should be no loop or not.\n\t * @return {Array} An array of new animation clips.\n\t */\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t/**\n\t * Parses the `animation.hierarchy` format and returns a new animation clip.\n\t *\n\t * @static\n\t * @deprecated since r175.\n\t * @param {Object} animation - A serialized animation clip as JSON.\n\t * @param {Array} bones - An array of bones.\n\t * @return {?AnimationClip} The new animation clip.\n\t */\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tconsole.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' );\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || -1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = -1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Sets the duration of this clip to the duration of its longest keyframe track.\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Trims all tracks to the clip's duration.\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs minimal validation on each track in the clip. Returns `true` if all\n\t * tracks are valid.\n\t *\n\t * @return {boolean} Whether the clip's keyframes are valid or not.\n\t */\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t/**\n\t * Optimizes each track by removing equivalent sequential keys (which are\n\t * common in morph target sequences).\n\t *\n\t * @return {AnimationClip} A reference to this animation clip.\n\t */\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new animation clip with copied values from this instance.\n\t *\n\t * @return {AnimationClip} A clone of this instance.\n\t */\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\tconst clip = new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t\tclip.userData = JSON.parse( JSON.stringify( this.userData ) );\n\n\t\treturn clip;\n\n\t}\n\n\t/**\n\t * Serializes this animation clip into JSON.\n\t *\n\t * @return {Object} The JSON object.\n\t */\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\n/**\n * @class\n * @classdesc A simple caching system, used internally by {@link FileLoader}.\n * To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.\n * @hideconstructor\n */\nconst Cache = {\n\n\t/**\n\t * Whether caching is enabled or not.\n\t *\n\t * @static\n\t * @type {boolean}\n\t * @default false\n\t */\n\tenabled: false,\n\n\t/**\n\t * A dictionary that holds cached files.\n\t *\n\t * @static\n\t * @type {Object}\n\t */\n\tfiles: {},\n\n\t/**\n\t * Adds a cache entry with a key to reference the file. If this key already\n\t * holds a file, it is overwritten.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t * @param {Object} file - The file to be cached.\n\t */\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\t/**\n\t * Gets the cached value for the given key.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t * @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.\n\t */\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\t/**\n\t * Removes the cached file associated with the given key.\n\t *\n\t * @static\n\t * @param {string} key - The key to reference the cached file.\n\t */\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\t/**\n\t * Remove all values from the cache.\n\t *\n\t * @static\n\t */\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * Handles and keeps track of loaded and pending data. A default global\n * instance of this class is created and used by loaders if not supplied\n * manually.\n *\n * In general that should be sufficient, however there are times when it can\n * be useful to have separate loaders - for example if you want to show\n * separate loading bars for objects and textures.\n *\n * ```js\n * const manager = new THREE.LoadingManager();\n * manager.onLoad = () => console.log( 'Loading complete!' );\n *\n * const loader1 = new OBJLoader( manager );\n * const loader2 = new ColladaLoader( manager );\n * ```\n */\nclass LoadingManager {\n\n\t/**\n\t * Constructs a new loading manager.\n\t *\n\t * @param {Function} [onLoad] - Executes when all items have been loaded.\n\t * @param {Function} [onProgress] - Executes when single items have been loaded.\n\t * @param {Function} [onError] - Executes when an error occurs.\n\t */\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\t/**\n\t\t * Executes when an item starts loading.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onStart = undefined;\n\n\t\t/**\n\t\t * Executes when all items have been loaded.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onLoad = onLoad;\n\n\t\t/**\n\t\t * Executes when single items have been loaded.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onProgress = onProgress;\n\n\t\t/**\n\t\t * Executes when an error occurs.\n\t\t *\n\t\t * @type {Function|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.onError = onError;\n\n\t\t/**\n\t\t * Used for aborting ongoing requests in loaders using this manager.\n\t\t *\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis.abortController = new AbortController();\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * starts loading an item.\n\t\t *\n\t\t * @param {string} url - The URL to load.\n\t\t */\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * ended loading an item.\n\t\t *\n\t\t * @param {string} url - The URL of the loaded item.\n\t\t */\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * This should be called by any loader using the manager when the loader\n\t\t * encounters an error when loading an item.\n\t\t *\n\t\t * @param {string} url - The URL of the item that produces an error.\n\t\t */\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Given a URL, uses the URL modifier callback (if any) and returns a\n\t\t * resolved URL. If no URL modifier is set, returns the original URL.\n\t\t *\n\t\t * @param {string} url - The URL to load.\n\t\t * @return {string} The resolved URL.\n\t\t */\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\t/**\n\t\t * If provided, the callback will be passed each resource URL before a\n\t\t * request is sent. The callback may return the original URL, or a new URL to\n\t\t * override loading behavior. This behavior can be used to load assets from\n\t\t * .ZIP files, drag-and-drop APIs, and Data URIs.\n\t\t *\n\t\t * ```js\n\t\t * const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};\n\t\t *\n\t\t * const manager = new THREE.LoadingManager();\n\t\t *\n\t\t * // Initialize loading manager with URL callback.\n\t\t * const objectURLs = [];\n\t\t * manager.setURLModifier( ( url ) => {\n\t\t *\n\t\t * \turl = URL.createObjectURL( blobs[ url ] );\n\t\t * \tobjectURLs.push( url );\n\t\t * \treturn url;\n\t\t *\n\t\t * } );\n\t\t *\n\t\t * // Load as usual, then revoke the blob URLs.\n\t\t * const loader = new GLTFLoader( manager );\n\t\t * loader.load( 'fish.gltf', (gltf) => {\n\t\t *\n\t\t * \tscene.add( gltf.scene );\n\t\t * \tobjectURLs.forEach( ( url ) => URL.revokeObjectURL( url ) );\n\t\t *\n\t\t * } );\n\t\t * ```\n\t\t *\n\t\t * @param {function(string):string} transform - URL modifier callback. Called with an URL and must return a resolved URL.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Registers a loader with the given regular expression. Can be used to\n\t\t * define what loader should be used in order to load specific files. A\n\t\t * typical use case is to overwrite the default loader for textures.\n\t\t *\n\t\t * ```js\n\t\t * // add handler for TGA textures\n\t\t * manager.addHandler( /\\.tga$/i, new TGALoader() );\n\t\t * ```\n\t\t *\n\t\t * @param {string} regex - A regular expression.\n\t\t * @param {Loader} loader - A loader that should handle matched cases.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Removes the loader for the given regular expression.\n\t\t *\n\t\t * @param {string} regex - A regular expression.\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\t/**\n\t\t * Can be used to retrieve the registered loader for the given file path.\n\t\t *\n\t\t * @param {string} file - The file path.\n\t\t * @return {?Loader} The registered loader. Returns `null` if no loader was found.\n\t\t */\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\t/**\n\t\t * Can be used to abort ongoing loading requests in loaders using this manager.\n\t\t * The abort only works if the loaders implement {@link Loader#abort} and `AbortSignal.any()`\n\t\t * is supported in the browser.\n\t\t *\n\t\t * @return {LoadingManager} A reference to this loading manager.\n\t\t */\n\t\tthis.abort = function () {\n\n\t\t\tthis.abortController.abort();\n\t\t\tthis.abortController = new AbortController();\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}\n\n}\n\n/**\n * The global default loading manager.\n *\n * @constant\n * @type {LoadingManager}\n */\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\n/**\n * Abstract base class for loaders.\n *\n * @abstract\n */\nclass Loader {\n\n\t/**\n\t * Constructs a new loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\t/**\n\t\t * The loading manager.\n\t\t *\n\t\t * @type {LoadingManager}\n\t\t * @default DefaultLoadingManager\n\t\t */\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\t/**\n\t\t * The crossOrigin string to implement CORS for loading the url from a\n\t\t * different domain that allows CORS.\n\t\t *\n\t\t * @type {string}\n\t\t * @default 'anonymous'\n\t\t */\n\t\tthis.crossOrigin = 'anonymous';\n\n\t\t/**\n\t\t * Whether the XMLHttpRequest uses credentials.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.withCredentials = false;\n\n\t\t/**\n\t\t * The base path from which the asset will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.path = '';\n\n\t\t/**\n\t\t * The base path from which additional resources like textures will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourcePath = '';\n\n\t\t/**\n\t\t * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t\t * used in HTTP request.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.requestHeader = {};\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for loading assets from the backend.\n\t *\n\t * @abstract\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {Function} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @param {onErrorCallback} [onError] - Executed when errors occur.\n\t */\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\t/**\n\t * A async version of {@link Loader#load}.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @return {Promise} A Promise that resolves when the asset has been loaded.\n\t */\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for parsing the asset into three.js entities.\n\t *\n\t * @abstract\n\t * @param {any} data - The data to parse.\n\t */\n\tparse( /* data */ ) {}\n\n\t/**\n\t * Sets the `crossOrigin` String to implement CORS for loading the URL\n\t * from a different domain that allows CORS.\n\t *\n\t * @param {string} crossOrigin - The `crossOrigin` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Whether the XMLHttpRequest uses credentials such as cookies, authorization\n\t * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.\n\t *\n\t * Note: This setting has no effect if you are loading files locally or from the same domain.\n\t *\n\t * @param {boolean} value - The `withCredentials` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for the asset.\n\t *\n\t * @param {string} path - The base path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for dependent resources like textures.\n\t *\n\t * @param {string} resourcePath - The resource path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given request header.\n\t *\n\t * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t * for configuring the HTTP request.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This method can be implemented in loaders for aborting ongoing requests.\n\t *\n\t * @abstract\n\t * @return {Loader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Callback for onProgress in loaders.\n *\n * @callback onProgressCallback\n * @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status.\n */\n\n/**\n * Callback for onError in loaders.\n *\n * @callback onErrorCallback\n * @param {Error} error - The error which occurred during the loading process.\n */\n\n/**\n * The default material name that is used by loaders\n * when creating materials for loaded 3D objects.\n *\n * Note: Not all loaders might honor this setting.\n *\n * @static\n * @type {string}\n * @default '__DEFAULT'\n */\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\n/**\n * A low level class for loading resources with the Fetch API, used internally by\n * most loaders. It can also be used directly to load any file type that does\n * not have a loader.\n *\n * This loader supports caching. If you want to use it, add `THREE.Cache.enabled = true;`\n * once to your application.\n *\n * ```js\n * const loader = new THREE.FileLoader();\n * const data = await loader.loadAsync( 'example.txt' );\n * ```\n *\n * @augments Loader\n */\nclass FileLoader extends Loader {\n\n\t/**\n\t * Constructs a new file loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * The expected mime type. Valid values can be found\n\t\t * [here]{@link hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype}\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.mimeType = '';\n\n\t\t/**\n\t\t * The expected response type.\n\t\t *\n\t\t * @type {('arraybuffer'|'blob'|'document'|'json'|'')}\n\t\t * @default ''\n\t\t */\n\t\tthis.responseType = '';\n\n\t\t/**\n\t\t * Used for aborting requests.\n\t\t *\n\t\t * @private\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis._abortController = new AbortController();\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded response to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(any)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.\n\t * @param {onErrorCallback} [onError] - Executed when errors occur.\n\t * @return {any|undefined} The cached resource if available.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( `file:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}, ( e ) => {\n\n\t\t\t\t\t\t\t\t\tcontroller.error( e );\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === '' ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( `file:${url}`, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\t/**\n\t * Sets the expected response type.\n\t *\n\t * @param {('arraybuffer'|'blob'|'document'|'json'|'')} value - The response type.\n\t * @return {FileLoader} A reference to this file loader.\n\t */\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the expected mime type of the loaded file.\n\t *\n\t * @param {string} value - The mime type.\n\t * @return {FileLoader} A reference to this file loader.\n\t */\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Aborts ongoing fetch requests.\n\t *\n\t * @return {FileLoader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\tthis._abortController.abort();\n\t\tthis._abortController = new AbortController();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Class for loading animation clips in the JSON format. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.AnimationLoader();\n * const animations = await loader.loadAsync( 'animations/animation.js' );\n * ```\n *\n * @augments Loader\n */\nclass AnimationLoader extends Loader {\n\n\t/**\n\t * Constructs a new animation loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded animations as an array\n\t * holding instances of {@link AnimationClip} to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Array)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns an array of animation clips.\n\t *\n\t * @param {Object} json - The serialized animation clips.\n\t * @return {Array} The parsed animation clips.\n\t */\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract base class for loading compressed texture formats S3TC, ASTC or ETC.\n * Textures are internally loaded via {@link FileLoader}.\n *\n * Derived classes have to implement the `parse()` method which holds the parsing\n * for the respective format.\n *\n * @abstract\n * @augments Loader\n */\nclass CompressedTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new compressed texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded compressed texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {CompressedTexture} The compressed texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nconst _loading = new WeakMap();\n\n/**\n * A loader for loading images. The class loads images with the HTML `Image` API.\n *\n * ```js\n * const loader = new THREE.ImageLoader();\n * const image = await loader.loadAsync( 'image.png' );\n * ```\n * Please note that `ImageLoader` has dropped support for progress\n * events in `r84`. For an `ImageLoader` that supports progress events, see\n * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}.\n *\n * @augments Loader\n */\nclass ImageLoader extends Loader {\n\n\t/**\n\t * Constructs a new image loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded image\n\t * to the `onLoad()` callback. The method also returns a new `Image` object which can\n\t * directly be used for texture creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Image)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {Image} The image.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( `image:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tif ( cached.complete === true ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tlet arr = _loading.get( cached );\n\n\t\t\t\tif ( arr === undefined ) {\n\n\t\t\t\t\tarr = [];\n\t\t\t\t\t_loading.set( cached, arr );\n\n\t\t\t\t}\n\n\t\t\t\tarr.push( { onLoad, onError } );\n\n\t\t\t}\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\t//\n\n\t\t\tconst callbacks = _loading.get( this ) || [];\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i ++ ) {\n\n\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\tif ( callback.onLoad ) callback.onLoad( this );\n\n\t\t\t}\n\n\t\t\t_loading.delete( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tCache.remove( `image:${url}` );\n\n\t\t\t//\n\n\t\t\tconst callbacks = _loading.get( this ) || [];\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i ++ ) {\n\n\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t}\n\n\t\t\t_loading.delete( this );\n\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tCache.add( `image:${url}`, image );\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\n/**\n * Class for loading cube textures. Images are internally loaded via {@link ImageLoader}.\n *\n * The loader returns an instance of {@link CubeTexture} and expects the cube map to\n * be defined as six separate images representing the sides of a cube. Other cube map definitions\n * like vertical and horizontal cross, column and row layouts are not supported.\n *\n * Note that, by convention, cube maps are specified in a coordinate system\n * in which positive-x is to the right when looking up the positive-z axis --\n * in other words, using a left-handed coordinate system. Since three.js uses\n * a right-handed coordinate system, environment maps used in three.js will\n * have pos-x and neg-x swapped.\n *\n * The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace}\n * is set to `SRGBColorSpace` by default.\n *\n * ```js\n * const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' );\n * const cubeTexture = await loader.loadAsync( [\n * \t'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'\n * ] );\n * scene.background = cubeTexture;\n * ```\n *\n * @augments Loader\n */\nclass CubeTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new cube texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the fully loaded cube texture\n\t * to the `onLoad()` callback. The method also returns a new cube texture object which can\n\t * directly be used for material creation. If you do it this way, the cube texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {Array} urls - Array of 6 URLs to images, one for each side of the\n\t * cube texture. The urls should be specified in the following order: pos-x,\n\t * neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well.\n\t * @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {CubeTexture} The cube texture.\n\t */\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract base class for loading binary texture formats RGBE, EXR or TGA.\n * Textures are internally loaded via {@link FileLoader}.\n *\n * Derived classes have to implement the `parse()` method which holds the parsing\n * for the respective format.\n *\n * @abstract\n * @augments Loader\n */\nclass DataTextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new data texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded data texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {DataTexture} The data texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Class for loading textures. Images are internally\n * loaded via {@link ImageLoader}.\n *\n * ```js\n * const loader = new THREE.TextureLoader();\n * const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );\n *\n * const material = new THREE.MeshBasicMaterial( { map:texture } );\n * ```\n * Please note that `TextureLoader` has dropped support for progress\n * events in `r84`. For a `TextureLoader` that supports progress events, see\n * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.\n *\n * @augments Loader\n */\nclass TextureLoader extends Loader {\n\n\t/**\n\t * Constructs a new texture loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the fully loaded texture\n\t * to the `onLoad()` callback. The method also returns a new texture object which can\n\t * directly be used for material creation. If you do it this way, the texture\n\t * may pop up in your scene once the respective loading process is finished.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Texture)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {Texture} The texture.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract base class for lights - all other light types inherit the\n * properties and methods described here.\n *\n * @abstract\n * @augments Object3D\n */\nclass Light extends Object3D {\n\n\t/**\n\t * Constructs a new light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\t/**\n\t\t * The light's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The light's intensity.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = intensity;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\t\tif ( this.target !== undefined ) data.object.target = this.target.uuid;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * A light source positioned directly above the scene, with color fading from\n * the sky color to the ground color.\n *\n * This light cannot be used to cast shadows.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass HemisphereLight extends Light {\n\n\t/**\n\t * Constructs a new hemisphere light.\n\t *\n\t * @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.\n\t * @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The light's ground color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * Abstract base class for light shadow classes. These classes\n * represent the shadow configuration for different light types.\n *\n * @abstract\n */\nclass LightShadow {\n\n\t/**\n\t * Constructs a new light shadow.\n\t *\n\t * @param {Camera} camera - The light's view of the world.\n\t */\n\tconstructor( camera ) {\n\n\t\t/**\n\t\t * The light's view of the world.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\n\t\t/**\n\t\t * The intensity of the shadow. The default is `1`.\n\t\t * Valid values are in the range `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = 1;\n\n\t\t/**\n\t\t * Shadow map bias, how much to add or subtract from the normalized depth\n\t\t * when deciding whether a surface is in shadow.\n\t\t *\n\t\t * The default is `0`. Very tiny adjustments here (in the order of `0.0001`)\n\t\t * may help reduce artifacts in shadows.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.bias = 0;\n\n\t\t/**\n\t\t * Defines how much the position used to query the shadow map is offset along\n\t\t * the object normal. The default is `0`. Increasing this value can be used to\n\t\t * reduce shadow acne especially in large scenes where light shines onto\n\t\t * geometry at a shallow angle. The cost is that shadows may appear distorted.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.normalBias = 0;\n\n\t\t/**\n\t\t * Setting this to values greater than 1 will blur the edges of the shadow.\n\t\t * High values will cause unwanted banding effects in the shadows - a greater\n\t\t * map size will allow for a higher value to be used here before these effects\n\t\t * become visible.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `PCFSoftShadowMap` and\n\t\t * and it is recommended to increase softness by decreasing the shadow map size instead.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `BasicShadowMap`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = 1;\n\n\t\t/**\n\t\t * The amount of samples to use when blurring a VSM shadow map.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 8\n\t\t */\n\t\tthis.blurSamples = 8;\n\n\t\t/**\n\t\t * Defines the width and height of the shadow map. Higher values give better quality\n\t\t * shadows at the cost of computation time. Values must be powers of two.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (512,512)\n\t\t */\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\t/**\n\t\t * The type of shadow texture. The default is `UnsignedByteType`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default UnsignedByteType\n\t\t */\n\t\tthis.mapType = UnsignedByteType;\n\n\t\t/**\n\t\t * The depth map generated using the internal camera; a location beyond a\n\t\t * pixel's depth is in shadow. Computed internally during rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The distribution map generated using the internal camera; an occlusion is\n\t\t * calculated based on the distribution of depths. Computed internally during\n\t\t * rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.mapPass = null;\n\n\t\t/**\n\t\t * Model to shadow camera space, to compute location and depth in shadow map.\n\t\t * This is computed internally during rendering.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Enables automatic updates of the light's shadow. If you do not require dynamic\n\t\t * lighting / shadows, you may set this to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t\t/**\n\t\t * When set to `true`, shadow maps will be updated in the next `render` call.\n\t\t * If you have set {@link LightShadow#autoUpdate} to `false`, you will need to\n\t\t * set this property to `true` and then make a render call to update the light's shadow.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\t/**\n\t * Used internally by the renderer to get the number of viewports that need\n\t * to be rendered for this shadow.\n\t *\n\t * @return {number} The viewport count.\n\t */\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\t/**\n\t * Gets the shadow cameras frustum. Used internally by the renderer to cull objects.\n\t *\n\t * @return {Frustum} The shadow camera frustum.\n\t */\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t */\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );\n\n\t\tif ( shadowCamera.reversedDepth ) {\n\n\t\t\tshadowMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 1.0, 0.0,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tshadowMatrix.set(\n\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t);\n\n\t\t}\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\t/**\n\t * Returns a viewport definition for the given viewport index.\n\t *\n\t * @param {number} viewportIndex - The viewport index.\n\t * @return {Vector4} The viewport.\n\t */\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\t/**\n\t * Returns the frame extends.\n\t *\n\t * @return {Vector2} The frame extends.\n\t */\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Copies the values of the given light shadow instance to this instance.\n\t *\n\t * @param {LightShadow} source - The light shadow to copy.\n\t * @return {LightShadow} A reference to this light shadow instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.needsUpdate = source.needsUpdate;\n\t\tthis.normalBias = source.normalBias;\n\t\tthis.blurSamples = source.blurSamples;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new light shadow instance with copied values from this instance.\n\t *\n\t * @return {LightShadow} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Serializes the light shadow into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized light shadow.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass SpotLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new spot light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLightShadow = true;\n\n\t\t/**\n\t\t * Used to focus the shadow camera. The camera's field of view is set as a\n\t\t * percentage of the spotlight's field-of-view. Range is `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.focus = 1;\n\n\t\t/**\n\t\t * Texture aspect ratio.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = ( this.mapSize.width / this.mapSize.height ) * this.aspect;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light gets emitted from a single point in one direction, along a cone\n * that increases in size the further from the light it gets.\n *\n * This light can cast shadows - see the {@link SpotLightShadow} for details.\n *\n * ```js\n * // white spotlight shining from the side, modulated by a texture\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 100, 1000, 100 );\n * spotLight.map = new THREE.TextureLoader().load( url );\n *\n * spotLight.castShadow = true;\n * spotLight.shadow.mapSize.width = 1024;\n * spotLight.shadow.mapSize.height = 1024;\n * spotLight.shadow.camera.near = 500;\n * spotLight.shadow.camera.far = 4000;\n * spotLight.shadow.camera.fov = 30;s\n * ```\n *\n * @augments Light\n */\nclass SpotLight extends Light {\n\n\t/**\n\t * Constructs a new spot light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t * @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The spot light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * Maximum range of the light. `0` means no limit.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI/3\n\t\t */\n\t\tthis.angle = angle;\n\n\t\t/**\n\t\t * Percent of the spotlight cone that is attenuated due to penumbra.\n\t\t * Value range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.penumbra = penumbra;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * A texture used to modulate the color of the light. The spot light\n\t\t * color is mixed with the RGB value of this texture, with a ratio\n\t\t * corresponding to its alpha value. The cookie-like masking effect is\n\t\t * reproduced using pixel values (0, 0, 0, 1-cookie_value).\n\t\t *\n\t\t * *Warning*: This property is disabled if {@link Object3D#castShadow} is set to `false`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {SpotLightShadow}\n\t\t */\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents the shadow configuration of point lights.\n *\n * @augments LightShadow\n */\nclass PointLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new point light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( -1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, -1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, -1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, -1 )\n\t\t];\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t * @param {number} [viewportIndex=0] - The viewport index.\n\t */\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );\n\n\t}\n\n}\n\n/**\n * A light that gets emitted from a single point in all directions. A common\n * use case for this is to replicate the light emitted from a bare\n * lightbulb.\n *\n * This light can cast shadows - see the {@link PointLightShadow} for details.\n *\n * ```js\n * const light = new THREE.PointLight( 0xff0000, 1, 100 );\n * light.position.set( 50, 50, 50 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass PointLight extends Light {\n\n\t/**\n\t * Constructs a new point light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\t/**\n\t\t * When distance is zero, light will attenuate according to inverse-square\n\t\t * law to infinite distance. When distance is non-zero, light will attenuate\n\t\t * according to inverse-square law until near the distance cutoff, where it\n\t\t * will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not\n\t\t * physically correct.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {PointLightShadow}\n\t\t */\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.\n *\n * In this projection mode, an object's size in the rendered image stays\n * constant regardless of its distance from the camera. This can be useful\n * for rendering 2D scenes and UI elements, amongst other things.\n *\n * ```js\n * const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass OrthographicCamera extends Camera {\n\n\t/**\n\t * Constructs a new orthographic camera.\n\t *\n\t * @param {number} [left=-1] - The left plane of the camera's frustum.\n\t * @param {number} [right=1] - The right plane of the camera's frustum.\n\t * @param {number} [top=1] - The top plane of the camera's frustum.\n\t * @param {number} [bottom=-1] - The bottom plane of the camera's frustum.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * The left plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.left = left;\n\n\t\t/**\n\t\t * The right plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.right = right;\n\n\t\t/**\n\t\t * The top plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.top = top;\n\n\t\t/**\n\t\t * The bottom plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.bottom = bottom;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link OrthographicCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link PerspectiveCamera}, `0` is a\n\t\t * valid value for an orthographic camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link OrthographicCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t * @see {@link PerspectiveCamera#setViewOffset}\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem, this.reversedDepth );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass DirectionalLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new directional light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( -5, 5, 5, -5, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\n/**\n * A light that gets emitted in a specific direction. This light will behave\n * as though it is infinitely far away and the rays produced from it are all\n * parallel. The common use case for this is to simulate daylight; the sun is\n * far enough away that its position can be considered to be infinite, and\n * all light rays coming from it are parallel.\n *\n * A common point of confusion for directional lights is that setting the\n * rotation has no effect. This is because three.js's DirectionalLight is the\n * equivalent to what is often called a 'Target Direct Light' in other\n * applications.\n *\n * This means that its direction is calculated as pointing from the light's\n * {@link Object3D#position} to the {@link DirectionalLight#target} position\n * (as opposed to a 'Free Direct Light' that just has a rotation\n * component).\n *\n * This light can cast shadows - see the {@link DirectionalLightShadow} for details.\n *\n * ```js\n * // White directional light at half intensity shining from the top.\n * const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\n * scene.add( directionalLight );\n * ```\n *\n * @augments Light\n */\nclass DirectionalLight extends Light {\n\n\t/**\n\t * Constructs a new directional light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The directional light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {DirectionalLightShadow}\n\t\t */\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light globally illuminates all objects in the scene equally.\n *\n * It cannot be used to cast shadows as it does not have a direction.\n *\n * ```js\n * const light = new THREE.AmbientLight( 0x404040 ); // soft white light\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass AmbientLight extends Light {\n\n\t/**\n\t * Constructs a new ambient light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\n/**\n * This class emits light uniformly across the face a rectangular plane.\n * This light type can be used to simulate light sources such as bright\n * windows or strip lighting.\n *\n * Important Notes:\n *\n * - There is no shadow support.\n * - Only PBR materials are supported.\n * - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`)\n * into your app and init the uniforms/textures.\n *\n * ```js\n * RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer\n * THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); // only relevant for WebGPURenderer\n *\n * const intensity = 1; const width = 10; const height = 10;\n * const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height );\n * rectLight.position.set( 5, 5, 0 );\n * rectLight.lookAt( 0, 0, 0 );\n * scene.add( rectLight )\n * ```\n *\n * @augments Light\n */\nclass RectAreaLight extends Light {\n\n\t/**\n\t * Constructs a new area light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t * @param {number} [width=10] - The width of the light.\n\t * @param {number} [height=10] - The height of the light.\n\t */\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\t/**\n\t\t * The width of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.width = width;\n\n\t\t/**\n\t\t * The height of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.height = height;\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents a third-order spherical harmonics (SH). Light probes use this class\n * to encode lighting information.\n *\n * - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf}\n * - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf}\n */\nclass SphericalHarmonics3 {\n\n\t/**\n\t * Constructs a new spherical harmonics.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\t/**\n\t\t * An array holding the (9) SH coefficients.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given SH coefficients to this instance by copying\n\t * the values.\n\t *\n\t * @param {Array} coefficients - The SH coefficients.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets all SH coefficients to `0`.\n\t *\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the radiance in the direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The radiance.\n\t */\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the irradiance (radiance convolved with cosine lobe) in the\n\t * direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The irradiance.\n\t */\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Adds the given SH to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * A convenience method for performing {@link SphericalHarmonics3#add} and\n\t * {@link SphericalHarmonics3#scale} at once.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this SH by the given scale factor.\n\t *\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linear interpolates between the given SH and this instance by the given\n\t * alpha factor.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to interpolate with.\n\t * @param {number} alpha - The alpha factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this spherical harmonics is equal with the given one.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality.\n\t * @return {boolean} Whether this spherical harmonics is equal with the given one.\n\t */\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical harmonics to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to copy.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\t/**\n\t * Returns a new spherical harmonics with copied values from this instance.\n\t *\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Sets the SH coefficients of this instance from the given array.\n\t *\n\t * @param {Array} array - An array holding the SH coefficients.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns an array with the SH coefficients, or copies them into the provided\n\t * array. The coefficients are represented as numbers.\n\t *\n\t * @param {Array} [array=[]] - The target array.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {Array} An array with flat SH coefficients.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Computes the SH basis for the given normal vector.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Array} shBasis - The target array holding the SH basis.\n\t */\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\n/**\n * Light probes are an alternative way of adding light to a 3D scene. Unlike\n * classical light sources (e.g. directional, point or spot lights), light\n * probes do not emit light. Instead they store information about light\n * passing through 3D space. During rendering, the light that hits a 3D\n * object is approximated by using the data from the light probe.\n *\n * Light probes are usually created from (radiance) environment maps. The\n * class {@link LightProbeGenerator} can be used to create light probes from\n * cube textures or render targets. However, light estimation data could also\n * be provided in other forms e.g. by WebXR. This enables the rendering of\n * augmented reality content that reacts to real world lighting.\n *\n * The current probe implementation in three.js supports so-called diffuse\n * light probes. This type of light probe is functionally equivalent to an\n * irradiance environment map.\n *\n * @augments Light\n */\nclass LightProbe extends Light {\n\n\t/**\n\t * Constructs a new light probe.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLightProbe = true;\n\n\t\t/**\n\t\t * A light probe uses spherical harmonics to encode lighting information.\n\t\t *\n\t\t * @type {SphericalHarmonics3}\n\t\t */\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deserializes the light prove from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized light probe.\n\t * @return {LightProbe} A reference to this light probe.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Class for loading geometries. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.MaterialLoader();\n * const material = await loader.loadAsync( 'material.json' );\n * ```\n * This loader does not support node materials. Use {@link NodeMaterialLoader} instead.\n *\n * @augments Loader\n */\nclass MaterialLoader extends Loader {\n\n\t/**\n\t * Constructs a new material loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * A dictionary holding textures used by the material.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.textures = {};\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded material to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Material)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns a material.\n\t *\n\t * @param {Object} json - The serialized material.\n\t * @return {Material} The parsed material.\n\t */\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = this.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\t/**\n\t * Textures are not embedded in the material JSON so they have\n\t * to be injected before the loading process starts.\n\t *\n\t * @param {Object} value - A dictionary holding textures for material properties.\n\t * @return {MaterialLoader} A reference to this material loader.\n\t */\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a material for the given type.\n\t *\n\t * @param {string} type - The material type.\n\t * @return {Material} The new material.\n\t */\n\tcreateMaterialFromType( type ) {\n\n\t\treturn MaterialLoader.createMaterialFromType( type );\n\n\t}\n\n\t/**\n\t * Creates a material for the given type.\n\t *\n\t * @static\n\t * @param {string} type - The material type.\n\t * @return {Material} The new material.\n\t */\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\n/**\n * A class with loader utility functions.\n */\nclass LoaderUtils {\n\n\t/**\n\t * Extracts the base URL from the given URL.\n\t *\n\t * @param {string} url -The URL to extract the base URL from.\n\t * @return {string} The extracted base URL.\n\t */\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === -1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\t/**\n\t * Resolves relative URLs against the given path. Absolute paths, data urls,\n\t * and blob URLs will be returned as is. Invalid URLs will return an empty\n\t * string.\n\t *\n\t * @param {string} url -The URL to resolve.\n\t * @param {string} path - The base path for relative URLs to be resolved against.\n\t * @return {string} The resolved URL.\n\t */\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\n/**\n * An instanced version of a geometry.\n */\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new instanced buffer geometry.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\n\t\t/**\n\t\t * The instance count.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Class for loading geometries. The files are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.BufferGeometryLoader();\n * const geometry = await loader.loadAsync( 'models/json/pressure.json' );\n *\n * const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );\n * const object = new THREE.Mesh( geometry, material );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n */\nclass BufferGeometryLoader extends Loader {\n\n\t/**\n\t * Constructs a new geometry loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given JSON object and returns a geometry.\n\t *\n\t * @param {Object} json - The serialized geometry.\n\t * @return {BufferGeometry} The parsed geometry.\n\t */\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tgeometry.boundingSphere = new Sphere().fromJSON( boundingSphere );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.\n * The files are internally loaded via {@link FileLoader}.\n *\n * ```js\n * const loader = new THREE.ObjectLoader();\n * const obj = await loader.loadAsync( 'models/json/example.json' );\n * scene.add( obj );\n *\n * // Alternatively, to parse a previously loaded JSON structure\n * const object = await loader.parseAsync( a_json_object );\n * scene.add( object );\n * ```\n *\n * @augments Loader\n */\nclass ObjectLoader extends Loader {\n\n\t/**\n\t * Constructs a new object loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Async version of {@link ObjectLoader#load}.\n\t *\n\t * @async\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @return {Promise} A Promise that resolves with the loaded 3D object.\n\t */\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\t/**\n\t * Parses the given JSON. This is used internally by {@link ObjectLoader#load}\n\t * but can also be used directly to parse a previously loaded JSON structure.\n\t *\n\t * @param {Object} json - The serialized 3D object.\n\t * @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded.\n\t * @return {Object3D} The parsed 3D object.\n\t */\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\t/**\n\t * Async version of {@link ObjectLoader#parse}.\n\t *\n\t * @param {Object} json - The serialized 3D object.\n\t * @return {Promise} A Promise that resolves with the parsed 3D object.\n\t */\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\treturn object;\n\n\t}\n\n\t// internals\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._geometryInfo = data.geometryInfo.map( info => {\n\n\t\t\t\t\tlet box = null;\n\t\t\t\t\tlet sphere = null;\n\t\t\t\t\tif ( info.boundingBox !== undefined ) {\n\n\t\t\t\t\t\tbox = new Box3().fromJSON( info.boundingBox );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( info.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\tsphere = new Sphere().fromJSON( info.boundingSphere );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tboundingBox: box,\n\t\t\t\t\t\tboundingSphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\t\t\t\tobject._instanceInfo = data.instanceInfo;\n\n\t\t\t\tobject._availableInstanceIds = data._availableInstanceIds;\n\t\t\t\tobject._availableGeometryIds = data._availableGeometryIds;\n\n\t\t\t\tobject._nextIndexStart = data.nextIndexStart;\n\t\t\t\tobject._nextVertexStart = data.nextVertexStart;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._maxInstanceCount = data.maxInstanceCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tobject._indirectTexture = getTexture( data.indirectTexture.uuid );\n\n\t\t\t\tif ( data.colorsTexture !== undefined ) {\n\n\t\t\t\t\tobject._colorsTexture = getTexture( data.colorsTexture.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.boundingSphere !== undefined ) {\n\n\t\t\t\t\tobject.boundingSphere = new Sphere().fromJSON( data.boundingSphere );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.boundingBox !== undefined ) {\n\n\t\t\t\t\tobject.boundingBox = new Box3().fromJSON( data.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tbindLightTargets( object ) {\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isDirectionalLight || child.isSpotLight ) {\n\n\t\t\t\tconst uuid = child.target;\n\n\t\t\t\tconst target = object.getObjectByProperty( 'uuid', uuid );\n\n\t\t\t\tif ( target !== undefined ) {\n\n\t\t\t\t\tchild.target = target;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.target = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nconst _errorMap = new WeakMap();\n\n/**\n * A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}.\n * An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare\n * textures for rendering.\n *\n * Note that {@link Texture#flipY} and {@link Texture#premultiplyAlpha} are ignored with image bitmaps.\n * They needs these configuration on bitmap creation unlike regular images need them on uploading to GPU.\n *\n * You need to set the equivalent options via {@link ImageBitmapLoader#setOptions} instead.\n *\n * Also note that unlike {@link FileLoader}, this loader avoids multiple concurrent requests to the same URL only if `Cache` is enabled.\n *\n * ```js\n * const loader = new THREE.ImageBitmapLoader();\n * loader.setOptions( { imageOrientation: 'flipY' } ); // set options if needed\n * const imageBitmap = await loader.loadAsync( 'image.png' );\n *\n * const texture = new THREE.Texture( imageBitmap );\n * texture.needsUpdate = true;\n * ```\n *\n * @augments Loader\n */\nclass ImageBitmapLoader extends Loader {\n\n\t/**\n\t * Constructs a new image bitmap loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\t/**\n\t\t * Represents the loader options.\n\t\t *\n\t\t * @type {Object}\n\t\t * @default {premultiplyAlpha:'none'}\n\t\t */\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t\t/**\n\t\t * Used for aborting requests.\n\t\t *\n\t\t * @private\n\t\t * @type {AbortController}\n\t\t */\n\t\tthis._abortController = new AbortController();\n\n\t}\n\n\t/**\n\t * Sets the given loader options. The structure of the object must match the `options` parameter of\n\t * [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}.\n\t *\n\t * @param {Object} options - The loader options to set.\n\t * @return {ImageBitmapLoader} A reference to this image bitmap loader.\n\t */\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and pass the loaded image bitmap to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Unsupported in this loader.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t * @return {ImageBitmap|undefined} The image bitmap.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( `image-bitmap:${url}` );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\t// check if there is an error for the cached promise\n\n\t\t\t\t\tif ( _errorMap.has( cached ) === true ) {\n\n\t\t\t\t\t\tif ( onError ) onError( _errorMap.get( cached ) );\n\n\t\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t\treturn imageBitmap;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\t\tfetchOptions.signal = ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( `image-bitmap:${url}`, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\t_errorMap.set( promise, e );\n\n\t\t\tCache.remove( `image-bitmap:${url}` );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( `image-bitmap:${url}`, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n\t/**\n\t * Aborts ongoing fetch requests.\n\t *\n\t * @return {ImageBitmapLoader} A reference to this instance.\n\t */\n\tabort() {\n\n\t\tthis._abortController.abort();\n\t\tthis._abortController = new AbortController();\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _context;\n\n/**\n * Manages the global audio context in the engine.\n *\n * @hideconstructor\n */\nclass AudioContext {\n\n\t/**\n\t * Returns the global native audio context.\n\t *\n\t * @return {AudioContext} The native audio context.\n\t */\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\t/**\n\t * Allows to set the global native audio context from outside.\n\t *\n\t * @param {AudioContext} value - The native context to set.\n\t */\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\n/**\n * Class for loading audio buffers. Audios are internally\n * loaded via {@link FileLoader}.\n *\n * ```js\n * const audioListener = new THREE.AudioListener();\n * const ambientSound = new THREE.Audio( audioListener );\n *\n * const loader = new THREE.AudioLoader();\n * const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );\n *\n * ambientSound.setBuffer( audioBuffer );\n * ambientSound.play();\n * ```\n *\n * @augments Loader\n */\nclass AudioLoader extends Loader {\n\n\t/**\n\t * Constructs a new audio loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded audio buffer\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * A special type of camera that uses two perspective cameras with\n * stereoscopic projection. Can be used for rendering stereo effects\n * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or\n * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.\n */\nclass StereoCamera {\n\n\t/**\n\t * Constructs a new stereo camera.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'StereoCamera';\n\n\t\t/**\n\t\t * The aspect.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = 1;\n\n\t\t/**\n\t\t * The eye separation which represents the distance\n\t\t * between the left and right camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.064\n\t\t */\n\t\tthis.eyeSep = 0.064;\n\n\t\t/**\n\t\t * The camera representing the left eye. This is added to layer `1` so objects to be\n\t\t * rendered by the left camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The camera representing the right eye. This is added to layer `2` so objects to be\n\t\t * rendered by the right camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\t/**\n\t * Updates the stereo camera based on the given perspective camera.\n\t *\n\t * @param {PerspectiveCamera} camera - The perspective camera.\n\t */\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\n/**\n * This type of camera can be used in order to efficiently render a scene with a\n * predefined set of cameras. This is an important performance aspect for\n * rendering VR scenes.\n *\n * An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory\n * to define for each sub camera the `viewport` property which determines the\n * part of the viewport that is rendered with this camera.\n *\n * @augments PerspectiveCamera\n */\nclass ArrayCamera extends PerspectiveCamera {\n\n\t/**\n\t * Constructs a new array camera.\n\t *\n\t * @param {Array} [array=[]] - An array of perspective sub cameras.\n\t */\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArrayCamera = true;\n\n\t\t/**\n\t\t * Whether this camera is used with multiview rendering or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isMultiViewCamera = false;\n\n\t\t/**\n\t\t * An array of perspective sub cameras.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\n/**\n * Class for keeping track of time.\n */\nclass Clock {\n\n\t/**\n\t * Constructs a new clock.\n\t *\n\t * @param {boolean} [autoStart=true] - Whether to automatically start the clock when\n\t * `getDelta()` is called for the first time.\n\t */\n\tconstructor( autoStart = true ) {\n\n\t\t/**\n\t\t * If set to `true`, the clock starts automatically when `getDelta()` is called\n\t\t * for the first time.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoStart = autoStart;\n\n\t\t/**\n\t\t * Holds the time at which the clock's `start()` method was last called.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.startTime = 0;\n\n\t\t/**\n\t\t * Holds the time at which the clock's `start()`, `getElapsedTime()` or\n\t\t * `getDelta()` methods were last called.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.oldTime = 0;\n\n\t\t/**\n\t\t * Keeps track of the total time that the clock has been running.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.elapsedTime = 0;\n\n\t\t/**\n\t\t * Whether the clock is running or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.running = false;\n\n\t}\n\n\t/**\n\t * Starts the clock. When `autoStart` is set to `true`, the method is automatically\n\t * called by the class.\n\t */\n\tstart() {\n\n\t\tthis.startTime = performance.now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\t/**\n\t * Stops the clock.\n\t */\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\t/**\n\t * Returns the elapsed time in seconds.\n\t *\n\t * @return {number} The elapsed time.\n\t */\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\t/**\n\t * Returns the delta time in seconds.\n\t *\n\t * @return {number} The delta time.\n\t */\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = performance.now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\n\nconst _forward = /*@__PURE__*/ new Vector3();\nconst _up = /*@__PURE__*/ new Vector3();\n\n/**\n * The class represents a virtual listener of the all positional and non-positional audio effects\n * in the scene. A three.js application usually creates a single listener. It is a mandatory\n * constructor parameter for audios entities like {@link Audio} and {@link PositionalAudio}.\n *\n * In most cases, the listener object is a child of the camera. So the 3D transformation of the\n * camera represents the 3D transformation of the listener.\n *\n * @augments Object3D\n */\nclass AudioListener extends Object3D {\n\n\t/**\n\t * Constructs a new audio listener.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\t/**\n\t\t * The native audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = AudioContext.getContext();\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\t/**\n\t\t * An optional filter.\n\t\t *\n\t\t * Defined via {@link AudioListener#setFilter}.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.filter = null;\n\n\t\t/**\n\t\t * Time delta values required for `linearRampToValueAtTime()` usage.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\t/**\n\t * Returns the listener's input node.\n\t *\n\t * This method is used by other audio nodes to connect to this listener.\n\t *\n\t * @return {GainNode} The input node.\n\t */\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Removes the current filter from this listener.\n\t *\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filter.\n\t *\n\t * @return {?AudioNode} The filter.\n\t */\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\t/**\n\t * Sets the given filter to this listener.\n\t *\n\t * @param {AudioNode} value - The filter to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the applications master volume.\n\t *\n\t * @return {number} The master volume.\n\t */\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the applications master volume. This volume setting affects\n\t * all audio nodes in the scene.\n\t *\n\t * @param {number} value - The master volume to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t// the initial forward and up directions must be orthogonal\n\t\t_forward.set( 0, 0, -1 ).applyQuaternion( _quaternion$1 );\n\t\t_up.set( 0, 1, 0 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _forward.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _forward.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _forward.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( _up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( _up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( _up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _forward.x, _forward.y, _forward.z, _up.x, _up.y, _up.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Represents a non-positional ( global ) audio object.\n *\n * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create a global audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop( true );\n * \tsound.setVolume( 0.5 );\n * \tsound.play();\n * });\n * ```\n *\n * @augments Object3D\n */\nclass Audio extends Object3D {\n\n\t/**\n\t * Constructs a new audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AudioListener}\n\t\t * @readonly\n\t\t */\n\t\tthis.listener = listener;\n\n\t\t/**\n\t\t * The audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = listener.context;\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\t/**\n\t\t * Whether to start playback automatically or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoplay = false;\n\n\t\t/**\n\t\t * A reference to an audio buffer.\n\t\t *\n\t\t * Defined via {@link Audio#setBuffer}.\n\t\t *\n\t\t * @type {?AudioBuffer}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.buffer = null;\n\n\t\t/**\n\t\t * Modify pitch, measured in cents. +/- 100 is a semitone.\n\t\t * +/- 1200 is an octave.\n\t\t *\n\t\t * Defined via {@link Audio#setDetune}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.detune = 0;\n\n\t\t/**\n\t\t * Whether the audio should loop or not.\n\t\t *\n\t\t * Defined via {@link Audio#setLoop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.loop = false;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * start, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopStart = 0;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * stop, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopEnd = 0;\n\n\t\t/**\n\t\t * An offset to the time within the audio buffer the playback\n\t\t * should begin, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.offset = 0;\n\n\t\t/**\n\t\t * Overrides the default duration of the audio.\n\t\t *\n\t\t * @type {undefined|number}\n\t\t * @default undefined\n\t\t */\n\t\tthis.duration = undefined;\n\n\t\t/**\n\t\t * The playback speed.\n\t\t *\n\t\t * Defined via {@link Audio#setPlaybackRate}.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 1\n\t\t */\n\t\tthis.playbackRate = 1;\n\n\t\t/**\n\t\t * Indicates whether the audio is playing or not.\n\t\t *\n\t\t * This flag will be automatically set when using {@link Audio#play},\n\t\t * {@link Audio#pause}, {@link Audio#stop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isPlaying = false;\n\n\t\t/**\n\t\t * Indicates whether the audio playback can be controlled\n\t\t * with method like {@link Audio#play} or {@link Audio#pause}.\n\t\t *\n\t\t * This flag will be automatically set when audio sources are\n\t\t * defined.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.hasPlaybackControl = true;\n\n\t\t/**\n\t\t * Holds a reference to the current audio source.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @readonly\n\t\t * @default null\n\t\t */\n\t\tthis.source = null;\n\n\t\t/**\n\t\t * Defines the source type.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}\n\t\t * @readonly\n\t\t * @default 'empty'\n\t\t */\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\t/**\n\t\t * Can be used to apply a variety of low-order filters to create\n\t\t * more complex sound effects e.g. via `BiquadFilterNode`.\n\t\t *\n\t\t * The property is automatically set by {@link Audio#setFilters}.\n\t\t *\n\t\t * @type {Array}\n\t\t * @readonly\n\t\t */\n\t\tthis.filters = [];\n\n\t}\n\n\t/**\n\t * Returns the output audio node.\n\t *\n\t * @return {GainNode} The output node.\n\t */\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Sets the given audio node as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `audioNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {AudioNode} audioNode - The audio node like an instance of `OscillatorNode`.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media element as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {HTMLMediaElement} mediaElement - The media element.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media stream as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaStreamNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {MediaStream} mediaStream - The media stream.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given audio buffer as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `buffer` and {@link Audio#hasPlaybackControl} to `true`.\n\t *\n\t * @param {AudioBuffer} audioBuffer - The audio buffer.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should start playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\t/**\n\t * Pauses the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should stop playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tstop( delay = 0 ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop( this.context.currentTime + delay );\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Connects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio} A reference to this instance.\n\t */\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Disconnects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filters.\n\t *\n\t * @return {Array} The list of filters.\n\t */\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\t/**\n\t * Sets an array of filters and connects them with the audio source.\n\t *\n\t * @param {Array} [value] - A list of filters.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Defines the detuning of oscillation in cents.\n\t *\n\t * @param {number} value - The detuning of oscillation in cents.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the detuning of oscillation in cents.\n\t *\n\t * @return {number} The detuning of oscillation in cents.\n\t */\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\t/**\n\t * Returns the first filter in the list of filters.\n\t *\n\t * @return {AudioNode|undefined} The first filter in the list of filters.\n\t */\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\t/**\n\t * Applies a single filter node to the audio.\n\t *\n\t * @param {AudioNode} [filter] - The filter to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\t/**\n\t * Sets the playback rate.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [value] - The playback rate to set.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current playback rate.\n\n\t * @return {number} The playback rate.\n\t */\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\t/**\n\t * Automatically called when playback finished.\n\t */\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\t\tthis._progress = 0;\n\n\t}\n\n\t/**\n\t * Returns the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {boolean} Whether the audio should loop or not.\n\t */\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\t/**\n\t * Sets the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {boolean} value - Whether the audio should loop or not.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop start value which defines where in the audio buffer the replay should\n\t * start, in seconds.\n\t *\n\t * @param {number} value - The loop start value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop end value which defines where in the audio buffer the replay should\n\t * stop, in seconds.\n\t *\n\t * @param {number} value - The loop end value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the volume.\n\t *\n\t * @return {number} The volume.\n\t */\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the volume.\n\t *\n\t * @param {number} value - The volume to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.sourceType !== 'buffer' ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio source type cannot be copied.' );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.autoplay = source.autoplay;\n\n\t\tthis.buffer = source.buffer;\n\t\tthis.detune = source.detune;\n\t\tthis.loop = source.loop;\n\t\tthis.loopStart = source.loopStart;\n\t\tthis.loopEnd = source.loopEnd;\n\t\tthis.offset = source.offset;\n\t\tthis.duration = source.duration;\n\t\tthis.playbackRate = source.playbackRate;\n\t\tthis.hasPlaybackControl = source.hasPlaybackControl;\n\t\tthis.sourceType = source.sourceType;\n\n\t\tthis.filters = source.filters.slice();\n\n\t\treturn this;\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor( this.listener ).copy( this, recursive );\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents a positional audio object.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create the PositionalAudio object (passing in the listener)\n * const sound = new THREE.PositionalAudio( listener );\n *\n * // load a sound and set it as the PositionalAudio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/song.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setRefDistance( 20 );\n * \tsound.play();\n * });\n *\n * // create an object for the sound to play from\n * const sphere = new THREE.SphereGeometry( 20, 32, 16 );\n * const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );\n * const mesh = new THREE.Mesh( sphere, material );\n * scene.add( mesh );\n *\n * // finally add the sound to the mesh\n * mesh.add( sound );\n *\n * @augments Audio\n */\nclass PositionalAudio extends Audio {\n\n\t/**\n\t * Constructs a positional audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\t/**\n\t\t * The panner node represents the location, direction, and behavior of an audio\n\t\t * source in 3D space.\n\t\t *\n\t\t * @type {PannerNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\t/**\n\t * Returns the current reference distance.\n\t *\n\t * @return {number} The reference distance.\n\t */\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\t/**\n\t * Defines the reference distance for reducing volume as the audio source moves\n\t * further from the listener – i.e. the distance at which the volume reduction\n\t * starts taking effect.\n\t *\n\t * @param {number} value - The reference distance to set.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current rolloff factor.\n\t *\n\t * @return {number} The rolloff factor.\n\t */\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\t/**\n\t * Defines how quickly the volume is reduced as the source moves away from the listener.\n\t *\n\t * @param {number} value - The rolloff factor.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current distance model.\n\t *\n\t * @return {('linear'|'inverse'|'exponential')} The distance model.\n\t */\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\t/**\n\t * Defines which algorithm to use to reduce the volume of the audio source\n\t * as it moves away from the listener.\n\t *\n\t * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}\n\t * for more details.\n\t *\n\t * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current max distance.\n\t *\n\t * @return {number} The max distance.\n\t */\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\t/**\n\t * Defines the maximum distance between the audio source and the listener,\n\t * after which the volume is not reduced any further.\n\t *\n\t * This value is used only by the `linear` distance model.\n\t *\n\t * @param {number} value - The max distance.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the directional cone in which the audio can be listened.\n\t *\n\t * @param {number} coneInnerAngle - An angle, in degrees, of a cone inside of which there will be no volume reduction.\n\t * @param {number} coneOuterAngle - An angle, in degrees, of a cone outside of which the volume will be reduced by a constant value, defined by the `coneOuterGain` parameter.\n\t * @param {number} coneOuterGain - The amount of volume reduction outside the cone defined by the `coneOuterAngle`. When set to `0`, no sound can be heard.\n\t * @return {PositionalAudio} A reference to this instance.\n\t */\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class can be used to analyse audio data.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create an Audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop(true);\n * \tsound.setVolume(0.5);\n * \tsound.play();\n * });\n *\n * // create an AudioAnalyser, passing in the sound and desired fftSize\n * const analyser = new THREE.AudioAnalyser( sound, 32 );\n *\n * // get the average frequency of the sound\n * const data = analyser.getAverageFrequency();\n * ```\n */\nclass AudioAnalyser {\n\n\t/**\n\t * Constructs a new audio analyzer.\n\t *\n\t * @param {Audio} audio - The audio to analyze.\n\t * @param {number} [fftSize=2048] - The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data.\n\t */\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AnalyserNode}\n\t\t */\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\t/**\n\t\t * Holds the analyzed data.\n\t\t *\n\t\t * @type {Uint8Array}\n\t\t */\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\t/**\n\t * Returns an array with frequency data of the audio.\n\t *\n\t * Each item in the array represents the decibel value for a specific frequency.\n\t * The frequencies are spread linearly from 0 to 1/2 of the sample rate.\n\t * For example, for 48000 sample rate, the last item of the array will represent\n\t * the decibel value for 24000 Hz.\n\t *\n\t * @return {Uint8Array} The frequency data.\n\t */\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\t/**\n\t * Returns the average of the frequencies returned by {@link AudioAnalyser#getFrequencyData}.\n\t *\n\t * @return {number} The average frequency.\n\t */\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\n/**\n * Buffered scene graph property that allows weighted accumulation; used internally.\n */\nclass PropertyMixer {\n\n\t/**\n\t * Constructs a new property mixer.\n\t *\n\t * @param {PropertyBinding} binding - The property binding.\n\t * @param {string} typeName - The keyframe track type name.\n\t * @param {number} valueSize - The keyframe track value size.\n\t */\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\t/**\n\t\t * The property binding.\n\t\t *\n\t\t * @type {PropertyBinding}\n\t\t */\n\t\tthis.binding = binding;\n\n\t\t/**\n\t\t * The keyframe track value size.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.cumulativeWeight = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.useCount = 0;\n\n\t\t/**\n\t\t * TODO\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t/**\n\t * Accumulates data in the `incoming` region into `accu`.\n\t *\n\t * @param {number} accuIndex - The accumulation index.\n\t * @param {number} weight - The weight.\n\t */\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t/**\n\t * Accumulates data in the `incoming` region into `add`.\n\t *\n\t * @param {number} weight - The weight.\n\t */\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t/**\n\t * Applies the state of `accu` to the binding when accus differ.\n\t *\n\t * @param {number} accuIndex - The accumulation index.\n\t */\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Remembers the state of the bound property and copy it to both accus.\n\t */\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t/**\n\t * Applies the state previously taken via {@link PropertyMixer#saveOriginalState} to the binding.\n\t */\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t// internals\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\n\n\n/**\n * This holds a reference to a real property in the scene graph; used internally.\n */\nclass PropertyBinding {\n\n\t/**\n\t * Constructs a new property binding.\n\t *\n\t * @param {Object} rootNode - The root node.\n\t * @param {string} path - The path.\n\t * @param {?Object} [parsedPath] - The parsed path.\n\t */\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\t/**\n\t\t * The object path to the animated property.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.path = path;\n\n\t\t/**\n\t\t * An object holding information about the path.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\t/**\n\t\t * The object owns the animated property.\n\t\t *\n\t\t * @type {?Object}\n\t\t */\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\t/**\n\t\t * The root node.\n\t\t *\n\t\t * @type {Object3D|Skeleton}\n\t\t */\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\t/**\n\t * Factory method for creating a property binding from the given parameters.\n\t *\n\t * @static\n\t * @param {Object} root - The root node.\n\t * @param {string} path - The path.\n\t * @param {?Object} [parsedPath] - The parsed path.\n\t * @return {PropertyBinding|Composite} The created property binding or composite.\n\t */\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name - Node name to be sanitized.\n\t * @return {string} The sanitized node name.\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\t/**\n\t * Parses the given track name (an object path to an animated property) and\n\t * returns an object with information about the path. Matches strings in the following forms:\n\t *\n\t * - nodeName.property\n\t * - nodeName.property[accessor]\n\t * - nodeName.material.property[accessor]\n\t * - uuid.property[accessor]\n\t * - uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t * - parentName/nodeName.property\n\t * - parentName/parentName/nodeName.property[index]\n\t * - .bone[Armature.DEF_cog].position\n\t * - scene:helium_balloon_model:helium_balloon_model.position\n\t *\n\t * @static\n\t * @param {string} trackName - The track name to parse.\n\t * @return {Object} The parsed track name as an object.\n\t */\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== -1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== -1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\t/**\n\t * Searches for a node in the hierarchy of the given root object by the given\n\t * node name.\n\t *\n\t * @static\n\t * @param {Object} root - The root object.\n\t * @param {string|number} nodeName - The name of the node.\n\t * @return {?Object} The found node. Returns `null` if no object was found.\n\t */\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t/**\n\t * Creates a getter / setter pair for the property tracked by this binding.\n\t */\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.isMaterial === true ) {\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.isObject3D === true ) {\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\t/**\n\t * Unbinds the property.\n\t */\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n * - Instead pass this object as 'root'.\n * - You can also add and remove objects later when the mixer is running.\n *\n * Note:\n *\n * - Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the all objects in the group.\n * - A single property can either be controlled through a target group or directly, but not both.\n */\nclass AnimationObjectGroup {\n\n\t/**\n\t * Constructs a new animation group.\n\t *\n\t * @param {...Object3D} arguments - An arbitrary number of 3D objects that share the same animation state.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\t/**\n\t\t * The UUID of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Adds an arbitrary number of objects to this animation group.\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to add.\n\t */\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t/**\n\t * Removes an arbitrary number of objects to this animation group\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to remove.\n\t */\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for the passed 3D objects of this animation group.\n\t *\n\t * @param {...Object3D} arguments - The 3D objects to uncache.\n\t */\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * An instance of `AnimationAction` schedules the playback of an animation which is\n * stored in {@link AnimationClip}.\n */\nclass AnimationAction {\n\n\t/**\n\t * Constructs a new animation action.\n\t *\n\t * @param {AnimationMixer} mixer - The mixer that is controlled by this action.\n\t * @param {AnimationClip} clip - The animation clip that holds the actual keyframes.\n\t * @param {?Object3D} [localRoot=null] - The root object on which this action is performed.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode.\n\t */\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\n\t\t/**\n\t\t * Defines how the animation is blended/combined when two or more animations\n\t\t * are simultaneously played.\n\t\t *\n\t\t * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}\n\t\t */\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\t/**\n\t\t * The loop mode, set via {@link AnimationAction#setLoop}.\n\t\t *\n\t\t * @type {(LoopRepeat|LoopOnce|LoopPingPong)}\n\t\t * @default LoopRepeat\n\t\t */\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = -1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t/**\n\t\t * The local time of this action (in seconds, starting with `0`).\n\t\t *\n\t\t * The value gets clamped or wrapped to `[0,clip.duration]` (according to the\n\t\t * loop state).\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.time = 0;\n\n\t\t/**\n\t\t * Scaling factor for the {@link AnimationAction#time}. A value of `0` causes the\n\t\t * animation to pause. Negative values cause the animation to play backwards.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\t/**\n\t\t * The degree of influence of this action (in the interval `[0, 1]`). Values\n\t\t * between `0` (no impact) and `1` (full impact) can be used to blend between\n\t\t * several actions.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\t/**\n\t\t * The number of repetitions of the performed clip over the course of this action.\n\t\t * Can be set via {@link AnimationAction#setLoop}.\n\t\t *\n\t\t * Setting this number has no effect if {@link AnimationAction#loop} is set to\n\t\t * `THREE:LoopOnce`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.repetitions = Infinity;\n\n\t\t/**\n\t\t * If set to `true`, the playback of the action is paused.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.paused = false;\n\n\t\t/**\n\t\t * If set to `false`, the action is disabled so it has no impact.\n\t\t *\n\t\t * When the action is re-enabled, the animation continues from its current\n\t\t * time (setting `enabled` to `false` doesn't reset the action).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enabled = true;\n\n\t\t/**\n\t\t * If set to true the animation will automatically be paused on its last frame.\n\t\t *\n\t\t * If set to false, {@link AnimationAction#enabled} will automatically be switched\n\t\t * to `false` when the last loop of the action has finished, so that this action has\n\t\t * no further impact.\n\t\t *\n\t\t * Note: This member has no impact if the action is interrupted (it\n\t\t * has only an effect if its last loop has really finished).\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clampWhenFinished = false;\n\n\t\t/**\n\t\t * Enables smooth interpolation without separate clips for start, loop and end.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.zeroSlopeAtStart = true;\n\n\t\t/**\n\t\t * Enables smooth interpolation without separate clips for start, loop and end.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.zeroSlopeAtEnd = true;\n\n\t}\n\n\t/**\n\t * Starts the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\t/**\n\t * Resets the playback of the animation.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = -1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\t/**\n\t * Returns `true` if the animation is running.\n\t *\n\t * @return {boolean} Whether the animation is running or not.\n\t */\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t/**\n\t * Returns `true` when {@link AnimationAction#play} has been called.\n\t *\n\t * @return {boolean} Whether the animation is scheduled or not.\n\t */\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\t/**\n\t * Defines the time when the animation should start.\n\t *\n\t * @param {number} time - The start time in seconds.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Configures the loop settings for this action.\n\t *\n\t * @param {(LoopRepeat|LoopOnce|LoopPingPong)} mode - The loop mode.\n\t * @param {number} repetitions - The number of repetitions.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the effective weight of this action.\n\t *\n\t * An action has no effect and thus an effective weight of zero when the\n\t * action is disabled.\n\t *\n\t * @param {number} weight - The weight to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t/**\n\t * Returns the effective weight of this action.\n\t *\n\t * @return {number} The effective weight.\n\t */\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\t/**\n\t * Fades the animation in by increasing its weight gradually from `0` to `1`,\n\t * within the passed time interval.\n\t *\n\t * @param {number} duration - The duration of the fade.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\t/**\n\t * Fades the animation out by decreasing its weight gradually from `1` to `0`,\n\t * within the passed time interval.\n\t *\n\t * @param {number} duration - The duration of the fade.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\t/**\n\t * Causes this action to fade in and the given action to fade out,\n\t * within the passed time interval.\n\t *\n\t * @param {AnimationAction} fadeOutAction - The animation action to fade out.\n\t * @param {number} duration - The duration of the fade.\n\t * @param {boolean} [warp=false] - Whether warping should be used or not.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tcrossFadeFrom( fadeOutAction, duration, warp = false ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp === true ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Causes this action to fade out and the given action to fade in,\n\t * within the passed time interval.\n\t *\n\t * @param {AnimationAction} fadeInAction - The animation action to fade in.\n\t * @param {number} duration - The duration of the fade.\n\t * @param {boolean} [warp=false] - Whether warping should be used or not.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tcrossFadeTo( fadeInAction, duration, warp = false ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\t/**\n\t * Stops any fading which is applied to this action.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the effective time scale of this action.\n\t *\n\t * An action has no effect and thus an effective time scale of zero when the\n\t * action is paused.\n\t *\n\t * @param {number} timeScale - The time scale to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Returns the effective time scale of this action.\n\t *\n\t * @return {number} The effective time scale.\n\t */\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\t/**\n\t * Sets the duration for a single loop of this action.\n\t *\n\t * @param {number} duration - The duration to set.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Synchronizes this action with the passed other action.\n\t *\n\t * @param {AnimationAction} action - The action to sync with.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t/**\n\t * Decelerates this animation's speed to `0` within the passed time interval.\n\t *\n\t * @param {number} duration - The duration.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\t/**\n\t * Changes the playback speed, within the passed time interval, by modifying\n\t * {@link AnimationAction#timeScale} gradually from `startTimeScale` to\n\t * `endTimeScale`.\n\t *\n\t * @param {number} startTimeScale - The start time scale.\n\t * @param {number} endTimeScale - The end time scale.\n\t * @param {number} duration - The duration.\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops any scheduled warping which is applied to this action.\n\t *\n\t * @return {AnimationAction} A reference to this animation action.\n\t */\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the animation mixer of this animation action.\n\t *\n\t * @return {AnimationMixer} The animation mixer.\n\t */\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\t/**\n\t * Returns the animation clip of this animation action.\n\t *\n\t * @return {AnimationClip} The animation clip.\n\t */\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\t/**\n\t * Returns the root object of this animation action.\n\t *\n\t * @return {Object3D} The root object.\n\t */\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === -1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n/**\n * `AnimationMixer` is a player for animations on a particular object in\n * the scene. When multiple objects in the scene are animated independently,\n * one `AnimationMixer` may be used for each object.\n */\nclass AnimationMixer extends EventDispatcher {\n\n\t/**\n\t * Constructs a new animation mixer.\n\t *\n\t * @param {Object3D} root - The object whose animations shall be played by this mixer.\n\t */\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\n\t\t/**\n\t\t * The global mixer time (in seconds; starting with `0` on the mixer's creation).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.time = 0;\n\n\t\t/**\n\t\t * A scaling factor for the global time.\n\t\t *\n\t\t * Note: Setting this member to `0` and later back to `1` is a\n\t\t * possibility to pause/unpause all actions that are controlled by this\n\t\t * mixer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t/**\n\t * Returns an instance of {@link AnimationAction} for the passed clip.\n\t *\n\t * If an action fitting the clip and root parameters doesn't yet exist, it\n\t * will be created by this method. Calling this method several times with the\n\t * same clip and root parameters always returns the same action.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode.\n\t * @return {?AnimationAction} The animation action.\n\t */\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t/**\n\t * Returns an existing animation action for the passed clip.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t * @return {?AnimationAction} The animation action. Returns `null` if no action was found.\n\t */\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Deactivates all previously scheduled actions on this mixer.\n\t *\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Advances the global mixer time and updates the animation.\n\t *\n\t * This is usually done in the render loop by passing the delta\n\t * time from {@link Clock} or {@link Timer}.\n\t *\n\t * @param {number} deltaTime - The delta time in seconds.\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the global mixer to a specific time and updates the animation accordingly.\n\t *\n\t * This is useful when you need to jump to an exact time in an animation. The\n\t * input parameter will be scaled by {@link AnimationMixer#timeScale}\n\t *\n\t * @param {number} time - The time to set in seconds.\n\t * @return {AnimationMixer} A reference to thi animation mixer.\n\t */\n\tsetTime( time ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( time ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t/**\n\t * Returns this mixer's root object.\n\t *\n\t * @return {Object3D} The mixer's root object.\n\t */\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for a clip. Before using this method make\n\t * sure to call {@link AnimationAction#stop} for all related actions.\n\t *\n\t * @param {AnimationClip} clip - The clip to uncache.\n\t */\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for a root object. Before using this\n\t * method make sure to call {@link AnimationAction#stop} for all related\n\t * actions or alternatively {@link AnimationMixer#stopAllAction} when the\n\t * mixer operates on a single root.\n\t *\n\t * @param {Object3D} root - The root object to uncache.\n\t */\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Deallocates all memory resources for an action. The action is identified by the\n\t * given clip and an optional root object. Before using this method make\n\t * sure to call {@link AnimationAction#stop} to deactivate the action.\n\t *\n\t * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.\n\t * @param {Object3D} [optionalRoot] - An alternative root object.\n\t */\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Represents a 3D render target.\n *\n * @augments RenderTarget\n */\nclass RenderTarget3D extends RenderTarget {\n\n\t/**\n\t * Constructs a new 3D render target.\n\t *\n\t * @param {number} [width=1] - The width of the render target.\n\t * @param {number} [height=1] - The height of the render target.\n\t * @param {number} [depth=1] - The height of the render target.\n\t * @param {RenderTarget~Options} [options] - The configuration object.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRenderTarget3D = true;\n\n\t\tthis.depth = depth;\n\n\t\t/**\n\t\t * Overwritten with a different texture type.\n\t\t *\n\t\t * @type {Data3DTexture}\n\t\t */\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\t\tthis._setTextureOptions( options );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Represents a uniform which is a global shader variable. They are passed to shader programs.\n *\n * When declaring a uniform of a {@link ShaderMaterial}, it is declared by value or by object.\n * ```js\n * uniforms: {\n * \ttime: { value: 1.0 },\n * \tresolution: new Uniform( new Vector2() )\n * };\n * ```\n * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported\n * in {@link WebGLRenderer}.\n */\nclass Uniform {\n\n\t/**\n\t * Constructs a new uniform.\n\t *\n\t * @param {any} value - The uniform value.\n\t */\n\tconstructor( value ) {\n\n\t\t/**\n\t\t * The uniform value.\n\t\t *\n\t\t * @type {any}\n\t\t */\n\t\tthis.value = value;\n\n\t}\n\n\t/**\n\t * Returns a new uniform with copied values from this instance.\n\t * If the value has a `clone()` method, the value is cloned as well.\n\t *\n\t * @return {Uniform} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\n/**\n * A class for managing multiple uniforms in a single group. The renderer will process\n * such a definition as a single UBO.\n *\n * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported\n * in {@link WebGLRenderer}.\n *\n * @augments EventDispatcher\n */\nclass UniformsGroup extends EventDispatcher {\n\n\t/**\n\t * Constructs a new uniforms group.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isUniformsGroup = true;\n\n\t\t/**\n\t\t * The ID of the 3D object.\n\t\t *\n\t\t * @name UniformsGroup#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\t/**\n\t\t * The name of the uniforms group.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The buffer usage.\n\t\t *\n\t\t * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}\n\t\t * @default StaticDrawUsage\n\t\t */\n\t\tthis.usage = StaticDrawUsage;\n\n\t\t/**\n\t\t * An array holding the uniforms.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.uniforms = [];\n\n\t}\n\n\t/**\n\t * Adds the given uniform to this uniforms group.\n\t *\n\t * @param {Uniform} uniform - The uniform to add.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the given uniform from this uniforms group.\n\t *\n\t * @param {Uniform} uniform - The uniform to remove.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== -1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the name of this uniforms group.\n\t *\n\t * @param {string} name - The name to set.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the usage of this uniforms group.\n\t *\n\t * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Texture#dispose\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Copies the values of the given uniforms group to this instance.\n\t *\n\t * @param {UniformsGroup} source - The uniforms group to copy.\n\t * @return {UniformsGroup} A reference to this uniforms group.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new uniforms group with copied values from this instance.\n\t *\n\t * @return {UniformsGroup} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * An instanced version of an interleaved buffer.\n *\n * @augments InterleavedBuffer\n */\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\t/**\n\t * Constructs a new instanced interleaved buffer.\n\t *\n\t * @param {TypedArray} array - A typed array with a shared buffer storing attribute data.\n\t * @param {number} stride - The number of typed-array elements per vertex.\n\t * @param {number} [meshPerAttribute=1] - Defines how often a value of this interleaved buffer should be repeated.\n\t */\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\t/**\n\t\t * Defines how often a value of this buffer attribute should be repeated,\n\t\t * see {@link InstancedBufferAttribute#meshPerAttribute}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\n/**\n * An alternative version of a buffer attribute with more control over the VBO.\n *\n * The renderer does not construct a VBO for this kind of attribute. Instead, it uses\n * whatever VBO is passed in constructor and can later be altered via the `buffer` property.\n *\n * The most common use case for this class is when some kind of GPGPU calculation interferes\n * or even produces the VBOs in question.\n *\n * Notice that this class can only be used with {@link WebGLRenderer}.\n */\nclass GLBufferAttribute {\n\n\t/**\n\t * Constructs a new GL buffer attribute.\n\t *\n\t * @param {WebGLBuffer} buffer - The native WebGL buffer.\n\t * @param {number} type - The native data type (e.g. `gl.FLOAT`).\n\t * @param {number} itemSize - The item size.\n\t * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.\n\t * @param {number} count - The expected number of vertices in VBO.\n\t * @param {boolean} [normalized=false] - Whether the data are normalized or not.\n\t */\n\tconstructor( buffer, type, itemSize, elementSize, count, normalized = false ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isGLBufferAttribute = true;\n\n\t\t/**\n\t\t * The name of the buffer attribute.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The native WebGL buffer.\n\t\t *\n\t\t * @type {WebGLBuffer}\n\t\t */\n\t\tthis.buffer = buffer;\n\n\t\t/**\n\t\t * The native data type.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * The item size, see {@link BufferAttribute#itemSize}.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.itemSize = itemSize;\n\n\t\t/**\n\t\t * The corresponding size (in bytes) for the given `type` parameter.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.elementSize = elementSize;\n\n\t\t/**\n\t\t * The expected number of vertices in VBO.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * Applies to integer data only. Indicates how the underlying data in the buffer maps to\n\t\t * the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,\n\t\t * and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to\n\t\t * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted\n\t\t * to floats unmodified, i.e. `65535` becomes `65535.0f`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.normalized = normalized;\n\n\t\t/**\n\t\t * A version number, incremented every time the `needsUpdate` is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.version = 0;\n\n\t}\n\n\t/**\n\t * Flag to indicate that this attribute has changed and should be re-sent to\n\t * the GPU. Set this to `true` when you modify the value of the array.\n\t *\n\t * @type {number}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t/**\n\t * Sets the given native WebGL buffer.\n\t *\n\t * @param {WebGLBuffer} buffer - The buffer to set.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given native data type and element size.\n\t *\n\t * @param {number} type - The native data type (e.g. `gl.FLOAT`).\n\t * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the item size.\n\t *\n\t * @param {number} itemSize - The item size.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the count (the expected number of vertices in VBO).\n\t *\n\t * @param {number} count - The count.\n\t * @return {BufferAttribute} A reference to this instance.\n\t */\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * This class is designed to assist with raycasting. Raycasting is used for\n * mouse picking (working out what objects in the 3d space the mouse is over)\n * amongst other things.\n */\nclass Raycaster {\n\n\t/**\n\t * Constructs a new raycaster.\n\t *\n\t * @param {Vector3} origin - The origin vector where the ray casts from.\n\t * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.\n\t * @param {number} [near=0] - All results returned are further away than near. Near can't be negative.\n\t * @param {number} [far=Infinity] - All results returned are closer than far. Far can't be lower than near.\n\t */\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\t/**\n\t\t * The ray used for raycasting.\n\t\t *\n\t\t * @type {Ray}\n\t\t */\n\t\tthis.ray = new Ray( origin, direction );\n\n\t\t/**\n\t\t * All results returned are further away than near. Near can't be negative.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * All results returned are further away than near. Near can't be negative.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.far = far;\n\n\t\t/**\n\t\t * The camera to use when raycasting against view-dependent objects such as\n\t\t * billboarded objects like sprites. This field can be set manually or\n\t\t * is set when calling `setFromCamera()`.\n\t\t *\n\t\t * @type {?Camera}\n\t\t * @default null\n\t\t */\n\t\tthis.camera = null;\n\n\t\t/**\n\t\t * Allows to selectively ignore 3D objects when performing intersection tests.\n\t\t * The following code example ensures that only 3D objects on layer `1` will be\n\t\t * honored by raycaster.\n\t\t * ```js\n\t\t * raycaster.layers.set( 1 );\n\t\t * object.layers.enable( 1 );\n\t\t * ```\n\t\t *\n\t\t * @type {Layers}\n\t\t */\n\t\tthis.layers = new Layers();\n\n\n\t\t/**\n\t\t * A parameter object that configures the raycasting. It has the structure:\n\t\t *\n\t\t * ```\n\t\t * {\n\t\t * \tMesh: {},\n\t\t * \tLine: { threshold: 1 },\n\t\t * \tLOD: {},\n\t\t * \tPoints: { threshold: 1 },\n\t\t * \tSprite: {}\n\t\t * }\n\t\t * ```\n\t\t * Where `threshold` is the precision of the raycaster when intersecting objects, in world units.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\t/**\n\t * Updates the ray with a new origin and direction by copying the values from the arguments.\n\t *\n\t * @param {Vector3} origin - The origin vector where the ray casts from.\n\t * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.\n\t */\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\t/**\n\t * Uses the given coordinates and camera to compute a new origin and direction for the internal ray.\n\t *\n\t * @param {Vector2} coords - 2D coordinates of the mouse, in normalized device coordinates (NDC).\n\t * X and Y components should be between `-1` and `1`.\n\t * @param {Camera} camera - The camera from which the ray should originate.\n\t */\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, -1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Uses the given WebXR controller to compute a new origin and direction for the internal ray.\n\t *\n\t * @param {WebXRController} controller - The controller to copy the position and direction from.\n\t * @return {Raycaster} A reference to this raycaster.\n\t */\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, -1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The intersection point of a raycaster intersection test.\n\t * @typedef {Object} Raycaster~Intersection\n\t * @property {number} distance - The distance from the ray's origin to the intersection point.\n\t * @property {number} distanceToRay - Some 3D objects e.g. {@link Points} provide the distance of the\n\t * intersection to the nearest point on the ray. For other objects it will be `undefined`.\n\t * @property {Vector3} point - The intersection point, in world coordinates.\n\t * @property {Object} face - The face that has been intersected.\n\t * @property {number} faceIndex - The face index.\n\t * @property {Object3D} object - The 3D object that has been intersected.\n\t * @property {Vector2} uv - U,V coordinates at point of intersection.\n\t * @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.\n\t * @property {Vector3} uv1 - Interpolated normal vector at point of intersection.\n\t * @property {number} instanceId - The index number of the instance where the ray\n\t * intersects the {@link InstancedMesh}.\n\t */\n\n\t/**\n\t * Checks all intersection between the ray and the object with or without the\n\t * descendants. Intersections are returned sorted by distance, closest first.\n\t *\n\t * `Raycaster` delegates to the `raycast()` method of the passed 3D object, when\n\t * evaluating whether the ray intersects the object or not. This allows meshes to respond\n\t * differently to ray casting than lines or points.\n\t *\n\t * Note that for meshes, faces must be pointed towards the origin of the ray in order\n\t * to be detected; intersections of the ray passing through the back of a face will not\n\t * be detected. To raycast against both faces of an object, you'll want to set {@link Material#side}\n\t * to `THREE.DoubleSide`.\n\t *\n\t * @param {Object3D} object - The 3D object to check for intersection with the ray.\n\t * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.\n\t * Otherwise it only checks intersection with the object.\n\t * @param {Array} [intersects=[]] The target array that holds the result of the method.\n\t * @return {Array} An array holding the intersection points.\n\t */\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\t/**\n\t * Checks all intersection between the ray and the objects with or without\n\t * the descendants. Intersections are returned sorted by distance, closest first.\n\t *\n\t * @param {Array} objects - The 3D objects to check for intersection with the ray.\n\t * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.\n\t * Otherwise it only checks intersection with the object.\n\t * @param {Array} [intersects=[]] The target array that holds the result of the method.\n\t * @return {Array} An array holding the intersection points.\n\t */\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tlet propagate = true;\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tconst result = object.raycast( raycaster, intersects );\n\n\t\tif ( result === false ) propagate = false;\n\n\t}\n\n\tif ( propagate === true && recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class is an alternative to {@link Clock} with a different API design and behavior.\n * The goal is to avoid the conceptual flaws that became apparent in `Clock` over time.\n *\n * - `Timer` has an `update()` method that updates its internal state. That makes it possible to\n * call `getDelta()` and `getElapsed()` multiple times per simulation step without getting different values.\n * - The class can make use of the Page Visibility API to avoid large time delta values when the app\n * is inactive (e.g. tab switched or browser hidden).\n *\n * ```js\n * const timer = new Timer();\n * timer.connect( document ); // use Page Visibility API\n * ```\n */\nclass Timer {\n\n\t/**\n\t * Constructs a new timer.\n\t */\n\tconstructor() {\n\n\t\tthis._previousTime = 0;\n\t\tthis._currentTime = 0;\n\t\tthis._startTime = performance.now();\n\n\t\tthis._delta = 0;\n\t\tthis._elapsed = 0;\n\n\t\tthis._timescale = 1;\n\n\t\tthis._document = null;\n\t\tthis._pageVisibilityHandler = null;\n\n\t}\n\n\t/**\n\t * Connect the timer to the given document.Calling this method is not mandatory to\n\t * use the timer but enables the usage of the Page Visibility API to avoid large time\n\t * delta values.\n\t *\n\t * @param {Document} document - The document.\n\t */\n\tconnect( document ) {\n\n\t\tthis._document = document;\n\n\t\t// use Page Visibility API to avoid large time delta values\n\n\t\tif ( document.hidden !== undefined ) {\n\n\t\t\tthis._pageVisibilityHandler = handleVisibilityChange.bind( this );\n\n\t\t\tdocument.addEventListener( 'visibilitychange', this._pageVisibilityHandler, false );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disconnects the timer from the DOM and also disables the usage of the Page Visibility API.\n\t */\n\tdisconnect() {\n\n\t\tif ( this._pageVisibilityHandler !== null ) {\n\n\t\t\tthis._document.removeEventListener( 'visibilitychange', this._pageVisibilityHandler );\n\t\t\tthis._pageVisibilityHandler = null;\n\n\t\t}\n\n\t\tthis._document = null;\n\n\t}\n\n\t/**\n\t * Returns the time delta in seconds.\n\t *\n\t * @return {number} The time delta in second.\n\t */\n\tgetDelta() {\n\n\t\treturn this._delta / 1000;\n\n\t}\n\n\t/**\n\t * Returns the elapsed time in seconds.\n\t *\n\t * @return {number} The elapsed time in second.\n\t */\n\tgetElapsed() {\n\n\t\treturn this._elapsed / 1000;\n\n\t}\n\n\t/**\n\t * Returns the timescale.\n\t *\n\t * @return {number} The timescale.\n\t */\n\tgetTimescale() {\n\n\t\treturn this._timescale;\n\n\t}\n\n\t/**\n\t * Sets the given timescale which scale the time delta computation\n\t * in `update()`.\n\t *\n\t * @param {number} timescale - The timescale to set.\n\t * @return {Timer} A reference to this timer.\n\t */\n\tsetTimescale( timescale ) {\n\n\t\tthis._timescale = timescale;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Resets the time computation for the current simulation step.\n\t *\n\t * @return {Timer} A reference to this timer.\n\t */\n\treset() {\n\n\t\tthis._currentTime = performance.now() - this._startTime;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Can be used to free all internal resources. Usually called when\n\t * the timer instance isn't required anymore.\n\t */\n\tdispose() {\n\n\t\tthis.disconnect();\n\n\t}\n\n\t/**\n\t * Updates the internal state of the timer. This method should be called\n\t * once per simulation step and before you perform queries against the timer\n\t * (e.g. via `getDelta()`).\n\t *\n\t * @param {number} timestamp - The current time in milliseconds. Can be obtained\n\t * from the `requestAnimationFrame` callback argument. If not provided, the current\n\t * time will be determined with `performance.now`.\n\t * @return {Timer} A reference to this timer.\n\t */\n\tupdate( timestamp ) {\n\n\t\tif ( this._pageVisibilityHandler !== null && this._document.hidden === true ) {\n\n\t\t\tthis._delta = 0;\n\n\t\t} else {\n\n\t\t\tthis._previousTime = this._currentTime;\n\t\t\tthis._currentTime = ( timestamp !== undefined ? timestamp : performance.now() ) - this._startTime;\n\n\t\t\tthis._delta = ( this._currentTime - this._previousTime ) * this._timescale;\n\t\t\tthis._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction handleVisibilityChange() {\n\n\tif ( this._document.hidden === false ) this.reset();\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}.\n */\nclass Spherical {\n\n\t/**\n\t * Constructs a new spherical.\n\t *\n\t * @param {number} [radius=1] - The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t * @param {number} [phi=0] - The polar angle in radians from the y (up) axis.\n\t * @param {number} [theta=0] - The equator/azimuthal angle in radians around the y (up) axis.\n\t */\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\t/**\n\t\t * The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * The polar angle in radians from the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.phi = phi;\n\n\t\t/**\n\t\t * The equator/azimuthal angle in radians around the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t}\n\n\t/**\n\t * Sets the spherical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The polar angle.\n\t * @param {number} theta - The azimuthal angle.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical to this instance.\n\t *\n\t * @param {Spherical} other - The spherical to copy.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Restricts the polar angle [page:.phi phi] to be between `0.000001` and pi -\n\t * `0.000001`.\n\t *\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = clamp( this.phi, EPS, Math.PI - EPS );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The y value.\n\t * @param {number} z - The z value.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, -1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new spherical with copied values from this instance.\n\t *\n\t * @return {Spherical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Cylindrical coordinates]{@link https://en.wikipedia.org/wiki/Cylindrical_coordinate_system}.\n */\nclass Cylindrical {\n\n\t/**\n\t * Constructs a new cylindrical.\n\t *\n\t * @param {number} [radius=1] - The distance from the origin to a point in the x-z plane.\n\t * @param {number} [theta=0] - A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t * @param {number} [y=0] - The height above the x-z plane.\n\t */\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\t/**\n\t\t * The distance from the origin to a point in the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t\t/**\n\t\t * The height above the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle.\n\t * @param {number} y - The height value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given cylindrical to this instance.\n\t *\n\t * @param {Cylindrical} other - The cylindrical to copy.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The x value.\n\t * @param {number} z - The x value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new cylindrical with copied values from this instance.\n\t *\n\t * @return {Cylindrical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 2x2 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix2#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix2#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix2();\n * m.set( 11, 12,\n * 21, 22 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21,\n * 12, 22 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix2 {\n\n\t/**\n\t * Constructs a new 2x2 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t */\n\tconstructor( n11, n12, n21, n22 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix2.prototype.isMatrix2 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.elements = [\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n21, n22 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 2x2 identity matrix.\n\t *\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} n11 - 1-1 matrix element.\n\t * @param {number} n12 - 1-2 matrix element.\n\t * @param {number} n21 - 2-1 matrix element.\n\t * @param {number} n22 - 2-2 matrix element.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tset( n11, n12, n21, n22 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 2 ] = n12;\n\t\tte[ 1 ] = n21; te[ 3 ] = n22;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 2D space.\n */\nclass Box2 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector2} [min=(Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector2} [max=(-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox2 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector2} min - The lower boundary of the box.\n\t * @param {Vector2} max - The upper boundary of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array} points - An array holding 2D position data as instances of {@link Vector2}.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector2} center - The center of the box.\n\t * @param {Vector2} size - The x and y dimensions of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box2} box - The box to copy.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 2D.\n\t *\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector2} point - The point that should be included by the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions.\n\t *\n\t * @param {Vector2} vector - The vector that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector2} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width and height.\n\t *\n\t * @param {Vector2} point - A point in 2D space.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} A point as a proportion of this box's width and height.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector2} point - The point to clamp.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector2} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box2} box - The bounding box to intersect with.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box2} box - The bounding box that will be unioned with this instance.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 2D space.\n\t *\n\t * @param {Vector2} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box2} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nconst _d1 = /*@__PURE__*/ new Vector3();\nconst _d2 = /*@__PURE__*/ new Vector3();\nconst _r = /*@__PURE__*/ new Vector3();\nconst _c1 = /*@__PURE__*/ new Vector3();\nconst _c2 = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical line segment in 3D space represented by a start and end point.\n */\nclass Line3 {\n\n\t/**\n\t * Constructs a new line segment.\n\t *\n\t * @param {Vector3} [start=(0,0,0)] - Start of the line segment.\n\t * @param {Vector3} [end=(0,0,0)] - End of the line segment.\n\t */\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\t/**\n\t\t * Start of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.start = start;\n\n\t\t/**\n\t\t * End of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.end = end;\n\n\t}\n\n\t/**\n\t * Sets the start and end values by copying the given vectors.\n\t *\n\t * @param {Vector3} start - The start point.\n\t * @param {Vector3} end - The end point.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given line segment to this instance.\n\t *\n\t * @param {Line3} line - The line segment to copy.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the center of the line segment.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the delta vector of the line segment's start and end point.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\t/**\n\t * Returns the squared Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The squared Euclidean distance.\n\t */\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\t/**\n\t * Returns the Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The Euclidean distance.\n\t */\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\t/**\n\t * Returns a vector at a certain position along the line segment.\n\t *\n\t * @param {number} t - A value between `[0,1]` to represent a position along the line segment.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Returns a point parameter based on the closest point as projected on the line segment.\n\t *\n\t * @param {Vector3} point - The point for which to return a point parameter.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @return {number} The point parameter.\n\t */\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns the closest point on the line for a given point.\n\t *\n\t * @param {Vector3} point - The point to compute the closest point on the line for.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the line.\n\t */\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Returns the closest squared distance between this line segment and the given one.\n\t *\n\t * @param {Line3} line - The line segment to compute the closest squared distance to.\n\t * @param {Vector3} [c1] - The closest point on this line segment.\n\t * @param {Vector3} [c2] - The closest point on the given line segment.\n\t * @return {number} The squared distance between this line segment and the given one.\n\t */\n\tdistanceSqToLine3( line, c1 = _c1, c2 = _c2 ) {\n\n\t\t// from Real-Time Collision Detection by Christer Ericson, chapter 5.1.9\n\n\t\t// Computes closest points C1 and C2 of S1(s)=P1+s*(Q1-P1) and\n\t\t// S2(t)=P2+t*(Q2-P2), returning s and t. Function result is squared\n\t\t// distance between between S1(s) and S2(t)\n\n\t\tconst EPSILON = 1e-8 * 1e-8; // must be squared since we compare squared length\n\t\tlet s, t;\n\n\t\tconst p1 = this.start;\n\t\tconst p2 = line.start;\n\t\tconst q1 = this.end;\n\t\tconst q2 = line.end;\n\n\t\t_d1.subVectors( q1, p1 ); // Direction vector of segment S1\n\t\t_d2.subVectors( q2, p2 ); // Direction vector of segment S2\n\t\t_r.subVectors( p1, p2 );\n\n\t\tconst a = _d1.dot( _d1 ); // Squared length of segment S1, always nonnegative\n\t\tconst e = _d2.dot( _d2 ); // Squared length of segment S2, always nonnegative\n\t\tconst f = _d2.dot( _r );\n\n\t\t// Check if either or both segments degenerate into points\n\n\t\tif ( a <= EPSILON && e <= EPSILON ) {\n\n\t\t\t// Both segments degenerate into points\n\n\t\t\tc1.copy( p1 );\n\t\t\tc2.copy( p2 );\n\n\t\t\tc1.sub( c2 );\n\n\t\t\treturn c1.dot( c1 );\n\n\t\t}\n\n\t\tif ( a <= EPSILON ) {\n\n\t\t\t// First segment degenerates into a point\n\n\t\t\ts = 0;\n\t\t\tt = f / e; // s = 0 => t = (b*s + f) / e = f / e\n\t\t\tt = clamp( t, 0, 1 );\n\n\n\t\t} else {\n\n\t\t\tconst c = _d1.dot( _r );\n\n\t\t\tif ( e <= EPSILON ) {\n\n\t\t\t\t// Second segment degenerates into a point\n\n\t\t\t\tt = 0;\n\t\t\t\ts = clamp( - c / a, 0, 1 ); // t = 0 => s = (b*t - c) / a = -c / a\n\n\t\t\t} else {\n\n\t\t\t\t// The general nondegenerate case starts here\n\n\t\t\t\tconst b = _d1.dot( _d2 );\n\t\t\t\tconst denom = a * e - b * b; // Always nonnegative\n\n\t\t\t\t// If segments not parallel, compute closest point on L1 to L2 and\n\t\t\t\t// clamp to segment S1. Else pick arbitrary s (here 0)\n\n\t\t\t\tif ( denom !== 0 ) {\n\n\t\t\t\t\ts = clamp( ( b * f - c * e ) / denom, 0, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ts = 0;\n\n\t\t\t\t}\n\n\t\t\t\t// Compute point on L2 closest to S1(s) using\n\t\t\t\t// t = Dot((P1 + D1*s) - P2,D2) / Dot(D2,D2) = (b*s + f) / e\n\n\t\t\t\tt = ( b * s + f ) / e;\n\n\t\t\t\t// If t in [0,1] done. Else clamp t, recompute s for the new value\n\t\t\t\t// of t using s = Dot((P2 + D2*t) - P1,D1) / Dot(D1,D1)= (t*b - c) / a\n\t\t\t\t// and clamp s to [0, 1]\n\n\t\t\t\tif ( t < 0 ) {\n\n\t\t\t\t\tt = 0.;\n\t\t\t\t\ts = clamp( - c / a, 0, 1 );\n\n\t\t\t\t} else if ( t > 1 ) {\n\n\t\t\t\t\tt = 1;\n\t\t\t\t\ts = clamp( ( b - c ) / a, 0, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tc1.copy( p1 ).add( _d1.multiplyScalar( s ) );\n\t\tc2.copy( p2 ).add( _d2.multiplyScalar( t ) );\n\n\t\tc1.sub( c2 );\n\n\t\treturn c1.dot( c1 );\n\n\t}\n\n\t/**\n\t * Applies a 4x4 transformation matrix to this line segment.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this line segment is equal with the given one.\n\t *\n\t * @param {Line3} line - The line segment to test for equality.\n\t * @return {boolean} Whether this line segment is equal with the given one.\n\t */\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\t/**\n\t * Returns a new line segment with copied values from this instance.\n\t *\n\t * @return {Line3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * This displays a cone shaped helper object for a {@link SpotLight}.\n *\n * ```js\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 10, 10, 10 );\n * scene.add( spotLight );\n *\n * const spotLightHelper = new THREE.SpotLightHelper( spotLight );\n * scene.add( spotLightHelper );\n * ```\n *\n * @augments Object3D\n */\nclass SpotLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new spot light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {SpotLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t-1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, -1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n/**\n * A helper object to assist with visualizing a {@link Skeleton}.\n *\n * ```js\n * const helper = new THREE.SkeletonHelper( skinnedMesh );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass SkeletonHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new skeleton helper.\n\t *\n\t * @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object\n\t * can be used if it represents a hierarchy of bones (see {@link Bone}).\n\t */\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( 0, 0, 0 );\n\t\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\t/**\n\t\t * The object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.root = object;\n\n\t\t/**\n\t\t * The list of bones that the helper visualizes.\n\t\t *\n\t\t * @type {Array}\n\t\t */\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t// colors\n\n\t\tconst color1 = new Color( 0x0000ff );\n\t\tconst color2 = new Color( 0x00ff00 );\n\n\t\tthis.setColors( color1, color2 );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Defines the colors of the helper.\n\t *\n\t * @param {Color} color1 - The first line color for each bone.\n\t * @param {Color} color2 - The second line color for each bone.\n\t * @return {SkeletonHelper} A reference to this helper.\n\t */\n\tsetColors( color1, color2 ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\tfor ( let i = 0; i < colorAttribute.count; i += 2 ) {\n\n\t\t\tcolorAttribute.setXYZ( i, color1.r, color1.g, color1.b );\n\t\t\tcolorAttribute.setXYZ( i + 1, color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push( ...getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\n/**\n * This displays a helper object consisting of a spherical mesh for\n * visualizing an instance of {@link PointLight}.\n *\n * ```js\n * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );\n * pointLight.position.set( 10, 10, 10 );\n * scene.add( pointLight );\n *\n * const sphereSize = 1;\n * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );\n * scene.add( pointLightHelper );\n * ```\n *\n * @augments Mesh\n */\nclass PointLightHelper extends Mesh {\n\n\t/**\n\t * Constructs a new point light helper.\n\t *\n\t * @param {PointLight} light - The light to be visualized.\n\t * @param {number} [sphereSize=1] - The size of the sphere helper.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\n/**\n * Creates a visual aid consisting of a spherical mesh for a\n * given {@link HemisphereLight}.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * const helper = new THREE.HemisphereLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass HemisphereLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new hemisphere light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The size of the mesh used to visualize the light.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\n/**\n * The helper is an object to define grids. Grids are two-dimensional\n * arrays of lines.\n *\n * ```js\n * const size = 10;\n * const divisions = 10;\n *\n * const gridHelper = new THREE.GridHelper( size, divisions );\n * scene.add( gridHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass GridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new grid helper.\n\t *\n\t * @param {number} [size=10] - The size of the grid.\n\t * @param {number} [divisions=10] - The number of divisions across the grid.\n\t * @param {number|Color|string} [color1=0x444444] - The color of the center line.\n\t * @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid.\n\t */\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This helper is an object to define polar grids. Grids are\n * two-dimensional arrays of lines.\n *\n * ```js\n * const radius = 10;\n * const sectors = 16;\n * const rings = 8;\n * const divisions = 64;\n *\n * const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass PolarGridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new polar grid helper.\n\t *\n\t * @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.\n\t * @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.\n\t * @param {number} [rings=16] - The number of rings. This can be any positive integer.\n\t * @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.\n\t * @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.\n\t * @param {number|Color|string} [color2=0x888888] - The second color used for grid elements.\n\t */\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\n/**\n * Helper object to assist with visualizing a {@link DirectionalLight}'s\n * effect on the scene. This consists of plane and a line representing the\n * light's position and direction.\n *\n * ```js\n * const light = new THREE.DirectionalLight( 0xFFFFFF );\n * scene.add( light );\n *\n * const helper = new THREE.DirectionalLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass DirectionalLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new directional light helper.\n\t *\n\t * @param {DirectionalLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The dimensions of the plane.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {DirectionalLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\t/**\n\t\t * Contains the line showing the location of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\t/**\n\t\t * Represents the target line of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n * This helps with visualizing what a camera contains in its frustum. It\n * visualizes the frustum of a camera using a line segments.\n *\n * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.\n *\n * `CameraHelper` must be a child of the scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );\n * const helper = new THREE.CameraHelper( camera );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass CameraHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Camera} camera - The camera to visualize.\n\t */\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\t/**\n\t\t * The camera being visualized.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * This contains the points used to visualize the camera.\n\t\t *\n\t\t * @type {Object>}\n\t\t */\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\t/**\n\t * Defines the colors of the helper.\n\t *\n\t * @param {Color} frustum - The frustum line color.\n\t * @param {Color} cone - The cone line color.\n\t * @param {Color} up - The up line color.\n\t * @param {Color} target - The target line color.\n\t * @param {Color} cross - The cross line color.\n\t * @return {CameraHelper} A reference to this helper.\n\t */\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Updates the helper based on the projection matrix of the camera.\n\t */\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\tlet nearZ, farZ;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// Adjust z values based on coordinate system\n\n\t\tif ( this.camera.reversedDepth === true ) {\n\n\t\t\tnearZ = 1;\n\t\t\tfarZ = 0;\n\n\t\t} else {\n\n\t\t\tif ( this.camera.coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\t\tnearZ = -1;\n\t\t\t\tfarZ = 1;\n\n\t\t\t} else if ( this.camera.coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\t\tnearZ = 0;\n\t\t\t\tfarZ = 1;\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'THREE.CameraHelper.update(): Invalid coordinate system: ' + this.camera.coordinateSystem );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// center / target\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, farZ );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, farZ );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, farZ );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, farZ );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, farZ );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, farZ );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, farZ );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, farZ );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, farZ );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\n/**\n * Helper object to graphically show the world-axis-aligned bounding box\n * around an object. The actual bounding box is handled with {@link Box3},\n * this is just a visual helper for debugging. It can be automatically\n * resized with {@link BoxHelper#update} when the object it's created from\n * is transformed. Note that the object must have a geometry for this to work,\n * so it won't work with sprites.\n *\n * ```js\n * const sphere = new THREE.SphereGeometry();\n * const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );\n * const box = new THREE.BoxHelper( object, 0xffff00 );\n * scene.add( box );\n * ```\n *\n * @augments LineSegments\n */\nclass BoxHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new box helper.\n\t *\n\t * @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The 3D object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Updates the helper's geometry to match the dimensions of the object,\n\t * including any children.\n\t */\n\tupdate() {\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\t/**\n\t * Updates the wireframe box for the passed object.\n\t *\n\t * @param {Object3D} object - The 3D object to create the helper for.\n\t * @return {BoxHelper} A reference to this instance.\n\t */\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Box3}.\n *\n * ```js\n * const box = new THREE.Box3();\n * box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) );\n *\n * const helper = new THREE.Box3Helper( box, 0xffff00 );\n * scene.add( helper )\n * ```\n *\n * @augments LineSegments\n */\nclass Box3Helper extends LineSegments {\n\n\t/**\n\t * Constructs a new box3 helper.\n\t *\n\t * @param {Box3} box - The box to visualize.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The box being visualized.\n\t\t *\n\t\t * @type {Box3}\n\t\t */\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Plane}.\n *\n * ```js\n * const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 );\n * const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 );\n * scene.add( helper );\n * ```\n *\n * @augments Line\n */\nclass PlaneHelper extends Line {\n\n\t/**\n\t * Constructs a new plane helper.\n\t *\n\t * @param {Plane} plane - The plane to be visualized.\n\t * @param {number} [size=1] - The side length of plane helper.\n\t * @param {number|Color|string} [hex=0xffff00] - The helper's color.\n\t */\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\t/**\n\t\t * The plane being visualized.\n\t\t *\n\t\t * @type {Plane}\n\t\t */\n\t\tthis.plane = plane;\n\n\t\t/**\n\t\t * The side length of plane helper.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\n/**\n * An 3D arrow object for visualizing directions.\n *\n * ```js\n * const dir = new THREE.Vector3( 1, 2, 0 );\n *\n * //normalize the direction vector (convert to vector of length 1)\n * dir.normalize();\n *\n * const origin = new THREE.Vector3( 0, 0, 0 );\n * const length = 1;\n * const hex = 0xffff00;\n *\n * const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex );\n * scene.add( arrowHelper );\n * ```\n *\n * @augments Object3D\n */\nclass ArrowHelper extends Object3D {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Vector3} [dir=(0, 0, 1)] - The (normalized) direction vector.\n\t * @param {Vector3} [origin=(0, 0, 0)] - Point at which the arrow starts.\n\t * @param {number} [length=1] - Length of the arrow in world units.\n\t * @param {(number|Color|string)} [color=0xffff00] - Color of the arrow.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new ConeGeometry( 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, -0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\t/**\n\t\t * The line part of the arrow helper.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\t/**\n\t\t * The cone part of the arrow helper.\n\t\t *\n\t\t * @type {Mesh}\n\t\t */\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\t/**\n\t * Sets the direction of the helper.\n\t *\n\t * @param {Vector3} dir - The normalized direction vector.\n\t */\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < -0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the length of the helper.\n\t *\n\t * @param {number} length - Length of the arrow in world units.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\t/**\n\t * Sets the color of the helper.\n\t *\n\t * @param {number|Color|string} color - The color to set.\n\t */\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\n/**\n * An axis object to visualize the 3 axes in a simple way.\n * The X axis is red. The Y axis is green. The Z axis is blue.\n *\n * ```js\n * const axesHelper = new THREE.AxesHelper( 5 );\n * scene.add( axesHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass AxesHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new axes helper.\n\t *\n\t * @param {number} [size=1] - Size of the lines representing the axes.\n\t */\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\t/**\n\t * Defines the colors of the axes helper.\n\t *\n\t * @param {number|Color|string} xAxisColor - The color for the x axis.\n\t * @param {number|Color|string} yAxisColor - The color for the y axis.\n\t * @param {number|Color|string} zAxisColor - The color for the z axis.\n\t * @return {AxesHelper} A reference to this axes helper.\n\t */\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This class is used to convert a series of paths to an array of\n * shapes. It is specifically used in context of fonts and SVG.\n */\nclass ShapePath {\n\n\t/**\n\t * Constructs a new shape path.\n\t */\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\t/**\n\t\t * The color of the shape.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color();\n\n\t\t/**\n\t\t * The paths that have been generated for this shape.\n\t\t *\n\t\t * @type {Array}\n\t\t * @default null\n\t\t */\n\t\tthis.subPaths = [];\n\n\t\t/**\n\t\t * The current path that is being generated.\n\t\t *\n\t\t * @type {?Path}\n\t\t * @default null\n\t\t */\n\t\tthis.currentPath = null;\n\n\t}\n\n\t/**\n\t * Creates a new path and moves it current point to the given one.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array} pts - An array of points in 2D space.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts the paths into an array of shapes.\n\t *\n\t * @param {boolean} isCCW - By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW).\n\t * If this flag is set to `true`, then those are flipped.\n\t * @return {Array} An array of shapes.\n\t */\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n/**\n * Abstract base class for controls.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Controls extends EventDispatcher {\n\n\t/**\n\t * Constructs a new controls instance.\n\t *\n\t * @param {Object3D} object - The object that is managed by the controls.\n\t * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.\n\t */\n\tconstructor( object, domElement = null ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The object that is managed by the controls.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\n\t\t/**\n\t\t * The HTML element used for event listeners.\n\t\t *\n\t\t * @type {?HTMLDOMElement}\n\t\t * @default null\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Whether the controls responds to user input or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enabled = true;\n\n\t\t/**\n\t\t * The internal state of the controls.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.state = -1;\n\n\t\t/**\n\t\t * This object defines the keyboard input of the controls.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.keys = {};\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to the available mouse buttons.\n\t\t * It depends on the control implementation what kind of mouse buttons and actions are supported.\n\t\t *\n\t\t * @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}}\n\t\t */\n\t\tthis.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to what kind of touch interaction.\n\t\t * It depends on the control implementation what kind of touch interaction and actions are supported.\n\t\t *\n\t\t * @type {{ONE: ?number, TWO: ?number}}\n\t\t */\n\t\tthis.touches = { ONE: null, TWO: null };\n\n\t}\n\n\t/**\n\t * Connects the controls to the DOM. This method has so called \"side effects\" since\n\t * it adds the module's event listeners to the DOM.\n\t *\n\t * @param {HTMLDOMElement} element - The DOM element to connect to.\n\t */\n\tconnect( element ) {\n\n\t\tif ( element === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.domElement !== null ) this.disconnect();\n\n\t\tthis.domElement = element;\n\n\t}\n\n\t/**\n\t * Disconnects the controls from the DOM.\n\t */\n\tdisconnect() {}\n\n\t/**\n\t * Call this method if you no longer want use to the controls. It frees all internal\n\t * resources and removes all event listeners.\n\t */\n\tdispose() {}\n\n\t/**\n\t * Controls should implement this method if they have to update their internal state\n\t * per simulation step.\n\t *\n\t * @param {number} [delta] - The time delta in seconds.\n\t */\n\tupdate( /* delta */ ) {}\n\n}\n\n/**\n * Scales the texture as large as possible within its surface without cropping\n * or stretching the texture. The method preserves the original aspect ratio of\n * the texture. Akin to CSS `object-fit: contain`\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction contain( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t} else {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Scales the texture to the smallest possible size to fill the surface, leaving\n * no empty space. The method preserves the original aspect ratio of the texture.\n * Akin to CSS `object-fit: cover`.\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction cover( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t} else {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n *\n * @param {Texture} texture - The texture.\n * @return {Texture} The updated texture.\n */\nfunction fill( texture ) {\n\n\ttexture.repeat.x = 1;\n\ttexture.repeat.y = 1;\n\n\ttexture.offset.x = 0;\n\ttexture.offset.y = 0;\n\n\treturn texture;\n\n}\n\n/**\n * Determines how many bytes must be used to represent the texture.\n *\n * @param {number} width - The width of the texture.\n * @param {number} height - The height of the texture.\n * @param {number} format - The texture's format.\n * @param {number} type - The texture's type.\n * @return {number} The byte length.\n */\nfunction getByteLength( width, height, format, type ) {\n\n\tconst typeByteLength = getTextureTypeByteLength( type );\n\n\tswitch ( format ) {\n\n\t\t// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n\t\tcase AlphaFormat:\n\t\t\treturn width * height;\n\t\tcase RedFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RedIntegerFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGIntegerFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBFormat:\n\t\t\treturn ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAIntegerFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n\t\tcase RGB_S3TC_DXT1_Format:\n\t\tcase RGBA_S3TC_DXT1_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_S3TC_DXT3_Format:\n\t\tcase RGBA_S3TC_DXT5_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n\t\tcase RGB_PVRTC_2BPPV1_Format:\n\t\tcase RGBA_PVRTC_2BPPV1_Format:\n\t\t\treturn ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4;\n\t\tcase RGB_PVRTC_4BPPV1_Format:\n\t\tcase RGBA_PVRTC_4BPPV1_Format:\n\t\t\treturn ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n\t\tcase RGB_ETC1_Format:\n\t\tcase RGB_ETC2_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_ETC2_EAC_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n\t\tcase RGBA_ASTC_4x4_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x4_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x5_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x5_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x6_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x5_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_8x6_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x8_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x5_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_10x6_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_10x8_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x10_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x10_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x12_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n\t\tcase RGBA_BPTC_Format:\n\t\tcase RGB_BPTC_SIGNED_Format:\n\t\tcase RGB_BPTC_UNSIGNED_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n\t\tcase RED_RGTC1_Format:\n\t\tcase SIGNED_RED_RGTC1_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8;\n\t\tcase RED_GREEN_RGTC2_Format:\n\t\tcase SIGNED_RED_GREEN_RGTC2_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine texture byte length for ${format} format.`,\n\t);\n\n}\n\nfunction getTextureTypeByteLength( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase UnsignedByteType:\n\t\tcase ByteType:\n\t\t\treturn { byteLength: 1, components: 1 };\n\t\tcase UnsignedShortType:\n\t\tcase ShortType:\n\t\tcase HalfFloatType:\n\t\t\treturn { byteLength: 2, components: 1 };\n\t\tcase UnsignedShort4444Type:\n\t\tcase UnsignedShort5551Type:\n\t\t\treturn { byteLength: 2, components: 4 };\n\t\tcase UnsignedIntType:\n\t\tcase IntType:\n\t\tcase FloatType:\n\t\t\treturn { byteLength: 4, components: 1 };\n\t\tcase UnsignedInt5999Type:\n\t\tcase UnsignedInt101111Type:\n\t\t\treturn { byteLength: 4, components: 3 };\n\n\t}\n\n\tthrow new Error( `Unknown texture type ${type}.` );\n\n}\n\n/**\n * A class containing utility functions for textures.\n *\n * @hideconstructor\n */\nclass TextureUtils {\n\n\t/**\n\t * Scales the texture as large as possible within its surface without cropping\n\t * or stretching the texture. The method preserves the original aspect ratio of\n\t * the texture. Akin to CSS `object-fit: contain`\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic contain( texture, aspect ) {\n\n\t\treturn contain( texture, aspect );\n\n\t}\n\n\t/**\n\t * Scales the texture to the smallest possible size to fill the surface, leaving\n\t * no empty space. The method preserves the original aspect ratio of the texture.\n\t * Akin to CSS `object-fit: cover`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic cover( texture, aspect ) {\n\n\t\treturn cover( texture, aspect );\n\n\t}\n\n\t/**\n\t * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic fill( texture ) {\n\n\t\treturn fill( texture );\n\n\t}\n\n\t/**\n\t * Determines how many bytes must be used to represent the texture.\n\t *\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} format - The texture's format.\n\t * @param {number} type - The texture's type.\n\t * @return {number} The byte length.\n\t */\n\tstatic getByteLength( width, height, format, type ) {\n\n\t\treturn getByteLength( width, height, format, type );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, getByteLength, getUnlitUniformColorSpace, mergeUniforms, probeAsync, warnOnce };\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import { unzip } from \"fflate\";\nimport {\n type PcSogsJson,\n type PcSogsV2Json,\n tryPcSogsZip,\n} from \"./SplatLoader\";\nimport type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n setPackedSplatCenter,\n setPackedSplatQuat,\n setPackedSplatRgba,\n setPackedSplatScales,\n} from \"./utils\";\n\nexport async function unpackPcSogs(\n json: PcSogsJson | PcSogsV2Json,\n extraFiles: Record,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const isVersion2 = \"version\" in json;\n\n if (!isVersion2 && json.quats.encoding !== \"quaternion_packed\") {\n throw new Error(\"Unsupported quaternion encoding\");\n }\n\n const numSplats = isVersion2 ? json.count : json.means.shape[0];\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n const meansPromise = Promise.all([\n decodeImageRgba(extraFiles[json.means.files[0]]),\n decodeImageRgba(extraFiles[json.means.files[1]]),\n ]).then((means) => {\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const fx = (means[0][i4 + 0] + (means[1][i4 + 0] << 8)) / 65535;\n const fy = (means[0][i4 + 1] + (means[1][i4 + 1] << 8)) / 65535;\n const fz = (means[0][i4 + 2] + (means[1][i4 + 2] << 8)) / 65535;\n let x =\n json.means.mins[0] + (json.means.maxs[0] - json.means.mins[0]) * fx;\n let y =\n json.means.mins[1] + (json.means.maxs[1] - json.means.mins[1]) * fy;\n let z =\n json.means.mins[2] + (json.means.maxs[2] - json.means.mins[2]) * fz;\n x = Math.sign(x) * (Math.exp(Math.abs(x)) - 1);\n y = Math.sign(y) * (Math.exp(Math.abs(y)) - 1);\n z = Math.sign(z) * (Math.exp(Math.abs(z)) - 1);\n setPackedSplatCenter(packedArray, i, x, y, z);\n }\n });\n\n const scalesPromise = decodeImageRgba(extraFiles[json.scales.files[0]]).then(\n (scales) => {\n let xLookup: number[];\n let yLookup: number[];\n let zLookup: number[];\n\n if (isVersion2) {\n xLookup =\n yLookup =\n zLookup =\n json.scales.codebook.map((x) => Math.exp(x));\n } else {\n xLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[0] +\n (json.scales.maxs[0] - json.scales.mins[0]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n yLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[1] +\n (json.scales.maxs[1] - json.scales.mins[1]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n zLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.scales.mins[2] +\n (json.scales.maxs[2] - json.scales.mins[2]) * (i / 255),\n )\n .map((x) => Math.exp(x));\n }\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n setPackedSplatScales(\n packedArray,\n i,\n xLookup[scales[i4 + 0]],\n yLookup[scales[i4 + 1]],\n zLookup[scales[i4 + 2]],\n splatEncoding,\n );\n }\n },\n );\n\n const quatsPromise = decodeImageRgba(extraFiles[json.quats.files[0]]).then(\n (quats) => {\n const SQRT2 = Math.sqrt(2);\n const lookup = new Array(256)\n .fill(0)\n .map((_, i) => (i / 255 - 0.5) * SQRT2);\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const r0 = lookup[quats[i4 + 0]];\n const r1 = lookup[quats[i4 + 1]];\n const r2 = lookup[quats[i4 + 2]];\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = quats[i4 + 3] - 252;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n setPackedSplatQuat(packedArray, i, quatX, quatY, quatZ, quatW);\n }\n },\n );\n const sh0Promise = decodeImageRgba(extraFiles[json.sh0.files[0]]).then(\n (sh0) => {\n const SH_C0 = 0.28209479177387814;\n let rLookup: number[];\n let gLookup: number[];\n let bLookup: number[];\n let aLookup: number[];\n\n if (isVersion2) {\n rLookup =\n gLookup =\n bLookup =\n json.sh0.codebook.map((x) => SH_C0 * x + 0.5);\n aLookup = new Array(256).fill(0).map((_, i) => i / 255);\n } else {\n rLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[0] +\n (json.sh0.maxs[0] - json.sh0.mins[0]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n gLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[1] +\n (json.sh0.maxs[1] - json.sh0.mins[1]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n bLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[2] +\n (json.sh0.maxs[2] - json.sh0.mins[2]) * (i / 255),\n )\n .map((x) => SH_C0 * x + 0.5);\n aLookup = new Array(256)\n .fill(0)\n .map(\n (_, i) =>\n json.sh0.mins[3] +\n (json.sh0.maxs[3] - json.sh0.mins[3]) * (i / 255),\n )\n .map((x) => 1.0 / (1.0 + Math.exp(-x)));\n }\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n setPackedSplatRgba(\n packedArray,\n i,\n rLookup[sh0[i4 + 0]],\n gLookup[sh0[i4 + 1]],\n bLookup[sh0[i4 + 2]],\n aLookup[sh0[i4 + 3]],\n splatEncoding,\n );\n }\n },\n );\n\n const promises = [meansPromise, scalesPromise, quatsPromise, sh0Promise];\n if (json.shN) {\n const useSH3 = isVersion2\n ? json.shN.bands >= 3\n : json.shN.shape[1] >= 48 - 3;\n const useSH2 = isVersion2\n ? json.shN.bands >= 2\n : json.shN.shape[1] >= 27 - 3;\n const useSH1 = isVersion2\n ? json.shN.bands >= 1\n : json.shN.shape[1] >= 12 - 3;\n\n if (useSH1) extra.sh1 = new Uint32Array(numSplats * 2);\n if (useSH2) extra.sh2 = new Uint32Array(numSplats * 4);\n if (useSH3) extra.sh3 = new Uint32Array(numSplats * 4);\n\n const sh1 = new Float32Array(9);\n const sh2 = new Float32Array(15);\n const sh3 = new Float32Array(21);\n\n const shN = json.shN;\n const shNPromise = Promise.all([\n decodeImage(extraFiles[json.shN.files[0]]),\n decodeImage(extraFiles[json.shN.files[1]]),\n ]).then(([centroids, labels]) => {\n const lookup =\n \"codebook\" in shN\n ? shN.codebook\n : new Array(256)\n .fill(0)\n .map((_, i) => shN.mins + (shN.maxs - shN.mins) * (i / 255));\n\n for (let i = 0; i < numSplats; ++i) {\n const i4 = i * 4;\n const label = labels.rgba[i4 + 0] + (labels.rgba[i4 + 1] << 8);\n const col = (label & 63) * 15;\n const row = label >>> 6;\n const offset = row * centroids.width + col;\n\n for (let d = 0; d < 3; ++d) {\n if (useSH1) {\n for (let k = 0; k < 3; ++k) {\n sh1[k * 3 + d] = lookup[centroids.rgba[(offset + k) * 4 + d]];\n }\n }\n\n if (useSH2) {\n for (let k = 0; k < 5; ++k) {\n sh2[k * 3 + d] = lookup[centroids.rgba[(offset + 3 + k) * 4 + d]];\n }\n }\n\n if (useSH3) {\n for (let k = 0; k < 7; ++k) {\n sh3[k * 3 + d] = lookup[centroids.rgba[(offset + 8 + k) * 4 + d]];\n }\n }\n }\n\n if (useSH1)\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n if (useSH2)\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n if (useSH3)\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n });\n promises.push(shNPromise);\n }\n\n await Promise.all(promises);\n\n return { packedArray, numSplats, extra };\n}\n\n// WebGL context for reading raw pixel data of WebP images\nlet offscreenGlContext: WebGL2RenderingContext | null = null;\n\nasync function decodeImage(fileBytes: ArrayBuffer) {\n if (!offscreenGlContext) {\n const canvas = new OffscreenCanvas(1, 1);\n offscreenGlContext = canvas.getContext(\"webgl2\");\n if (!offscreenGlContext) {\n throw new Error(\"Failed to create WebGL2 context\");\n }\n }\n\n const imageBlob = new Blob([fileBytes]);\n const bitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: \"none\",\n });\n\n const gl = offscreenGlContext;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n\n const data = new Uint8Array(bitmap.width * bitmap.height * 4);\n gl.readPixels(\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data,\n );\n\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n\n return { rgba: data, width: bitmap.width, height: bitmap.height };\n}\n\nasync function decodeImageRgba(fileBytes: ArrayBuffer) {\n const { rgba } = await decodeImage(fileBytes);\n return rgba;\n}\n\nexport async function unpackPcSogsZip(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const nameJson = tryPcSogsZip(fileBytes);\n if (!nameJson) {\n throw new Error(\"Invalid PC SOGS zip file\");\n }\n const { name, json } = nameJson;\n // Find path prefix, will be -1 if no / or \\\n const lastSlash = name.lastIndexOf(\"/\");\n const lastBackslash = name.lastIndexOf(\"\\\\\");\n const prefix = name.slice(0, Math.max(lastSlash, lastBackslash) + 1);\n\n const fileMap = new Map();\n const refFiles = [\n ...json.means.files,\n ...json.scales.files,\n ...json.quats.files,\n ...json.sh0.files,\n ...(json.shN?.files ?? []),\n ];\n for (const file of refFiles) {\n fileMap.set(prefix + file, file);\n }\n\n const unzipped = await new Promise>(\n (resolve, reject) => {\n unzip(\n fileBytes,\n {\n filter: ({ name }) => {\n return fileMap.has(name);\n },\n },\n (err, files) => {\n if (err) {\n reject(err);\n } else {\n resolve(files);\n }\n },\n );\n },\n );\n\n const extraFiles: Record = {};\n for (const [full, name] of fileMap.entries()) {\n extraFiles[name] = unzipped[full];\n }\n\n return await unpackPcSogs(json, extraFiles, splatEncoding);\n}\n","import init_wasm, { sort_splats, sort32_splats } from \"spark-worker-rs\";\nimport type { PcSogsJson, TranscodeSpzInput } from \"./SplatLoader\";\nimport { unpackAntiSplat } from \"./antisplat\";\nimport { type SplatEncoding, WASM_SPLAT_SORT } from \"./defines\";\nimport { unpackKsplat } from \"./ksplat\";\nimport { unpackPcSogs, unpackPcSogsZip } from \"./pcsogs\";\nimport { PlyReader } from \"./ply\";\nimport { SpzReader, transcodeSpz } from \"./spz\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n getTransferable,\n setPackedSplat,\n setPackedSplatCenter,\n setPackedSplatOpacity,\n setPackedSplatQuat,\n setPackedSplatRgb,\n setPackedSplatScales,\n toHalf,\n} from \"./utils\";\n\n// WebWorker for Spark's background CPU tasks, such as Gsplat file decoding\n// and sorting.\n\nasync function onMessage(event: MessageEvent) {\n // Unpack RPC function name, arguments, and ID from the main thread.\n const { name, args, id }: { name: string; args: unknown; id: number } =\n event.data;\n // console.log(`worker.onMessage(${id}, ${name}):`, args);\n\n // Initialize return result/error, to be filled out below.\n let result = undefined;\n let error = undefined;\n\n try {\n switch (name) {\n case \"unpackPly\": {\n const { packedArray, fileBytes, splatEncoding } = args as {\n packedArray: Uint32Array;\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackPly({\n packedArray,\n fileBytes,\n splatEncoding,\n });\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodeSpz\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackSpz(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodeAntiSplat\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = unpackAntiSplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n };\n break;\n }\n case \"decodeKsplat\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = unpackKsplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodePcSogs\": {\n const { fileBytes, extraFiles, splatEncoding } = args as {\n fileBytes: Uint8Array;\n extraFiles: Record;\n splatEncoding: SplatEncoding;\n };\n const json = JSON.parse(\n new TextDecoder().decode(fileBytes),\n ) as PcSogsJson;\n const decoded = await unpackPcSogs(json, extraFiles, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"decodePcSogsZip\": {\n const { fileBytes, splatEncoding } = args as {\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n };\n const decoded = await unpackPcSogsZip(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra,\n };\n break;\n }\n case \"sortSplats\": {\n // Sort maxSplats splats using readback data, which encodes one uint32 per\n // Gsplats, with the low bytes encoding a float16 distance sort metric.\n const { maxSplats, totalSplats, readback, ordering } = args as {\n maxSplats: number;\n totalSplats: number;\n readback: Uint8Array[];\n ordering: Uint32Array;\n };\n // Sort totalSplats splats each with 4 bytes of readback, and outputs Uint32Array ordering of splat indices\n result = {\n id,\n readback,\n ...sortSplats({ totalSplats, readback, ordering }),\n };\n break;\n }\n case \"sortDoubleSplats\": {\n // Sort numSplats splats using the readback distance metric, which encodes\n // one float16 per splat (no unused high bytes like for sortSplats).\n const { numSplats, readback, ordering } = args as {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n };\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort_splats(numSplats, readback, ordering),\n };\n } else {\n result = {\n id,\n readback,\n ...sortDoubleSplats({ numSplats, readback, ordering }),\n };\n }\n break;\n }\n case \"sort32Splats\": {\n const { maxSplats, numSplats, readback, ordering } = args as {\n maxSplats: number;\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n };\n // Benchmark sort\n // benchmarkSort(numSplats, readback, ordering);\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort32_splats(numSplats, readback, ordering),\n };\n } else {\n result = {\n id,\n readback,\n ...sort32Splats({ maxSplats, numSplats, readback, ordering }),\n };\n }\n break;\n }\n case \"transcodeSpz\": {\n const input = args as TranscodeSpzInput;\n const spzBytes = await transcodeSpz(input);\n result = {\n id,\n fileBytes: spzBytes,\n input,\n };\n break;\n }\n default: {\n throw new Error(`Unknown name: ${name}`);\n }\n }\n } catch (e) {\n error = e;\n console.error(error);\n }\n\n // Send the result or error back to the main thread, making sure to transfer any ArrayBuffers\n self.postMessage(\n { id, result, error },\n { transfer: getTransferable(result) },\n );\n}\n\nfunction benchmarkSort(\n numSplats: number,\n readback32: Uint32Array,\n ordering: Uint32Array,\n) {\n if (numSplats > 0) {\n console.log(\"Running sort benchmark\");\n const readbackF32 = new Float32Array(readback32.buffer);\n const readback16 = new Uint16Array(readback32.length);\n for (let i = 0; i < numSplats; ++i) {\n readback16[i] = toHalf(readbackF32[i]);\n }\n\n const WARMUP = 10;\n for (let i = 0; i < WARMUP; ++i) {\n const activeSplats = sort_splats(numSplats, readback16, ordering);\n const activeSplats32 = sort32_splats(numSplats, readback32, ordering);\n const results = sortDoubleSplats({\n numSplats,\n readback: readback16,\n ordering,\n });\n const results32 = sort32Splats({\n maxSplats: numSplats,\n numSplats,\n readback: readback32,\n ordering,\n });\n }\n\n const TIMING_SAMPLES = 1000;\n let start: number;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const activeSplats = sort_splats(numSplats, readback16, ordering);\n }\n const wasmTime = (performance.now() - start) / TIMING_SAMPLES;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const results = sortDoubleSplats({\n numSplats,\n readback: readback16,\n ordering,\n });\n }\n const jsTime = (performance.now() - start) / TIMING_SAMPLES;\n\n console.log(\n `JS: ${jsTime} ms, WASM: ${wasmTime} ms, numSplats: ${numSplats}`,\n );\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const activeSplats32 = sort32_splats(numSplats, readback32, ordering);\n }\n const wasm32Time = (performance.now() - start) / TIMING_SAMPLES;\n\n start = performance.now();\n for (let i = 0; i < TIMING_SAMPLES; ++i) {\n const results = sort32Splats({\n maxSplats: numSplats,\n numSplats,\n readback: readback32,\n ordering,\n });\n }\n const js32Time = (performance.now() - start) / TIMING_SAMPLES;\n\n console.log(\n `JS32: ${js32Time} ms, WASM32: ${wasm32Time} ms, numSplats: ${numSplats}`,\n );\n }\n}\n\nasync function unpackPly({\n packedArray,\n fileBytes,\n splatEncoding,\n}: {\n packedArray: Uint32Array;\n fileBytes: Uint8Array;\n splatEncoding: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n\n const extra: Record = {};\n\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, index, sh3, splatEncoding);\n }\n },\n );\n\n return { packedArray, numSplats, extra };\n}\n\nasync function unpackSpz(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n}> {\n const spz = new SpzReader({ fileBytes });\n await spz.parseHeader();\n const numSplats = spz.numSplats;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let extraCallbacks = {};\n if (spz.flagLod) {\n const childCounts = new Uint16Array(numSplats);\n const childStarts = new Uint32Array(numSplats);\n extra.childCounts = childCounts;\n extra.childStarts = childStarts;\n extraCallbacks = {\n childCounts: (index: number, count: number) => {\n childCounts[index] = count;\n },\n childStarts: (index: number, start: number) => {\n childStarts[index] = start;\n },\n };\n }\n\n await spz.parseSplats(\n (index, x, y, z) => {\n setPackedSplatCenter(packedArray, index, x, y, z);\n },\n (index, alpha) => {\n setPackedSplatOpacity(packedArray, index, alpha);\n },\n (index, r, g, b) => {\n setPackedSplatRgb(packedArray, index, r, g, b, splatEncoding);\n },\n (index, scaleX, scaleY, scaleZ) => {\n setPackedSplatScales(\n packedArray,\n index,\n scaleX,\n scaleY,\n scaleZ,\n splatEncoding,\n );\n },\n (index, quatX, quatY, quatZ, quatW) => {\n setPackedSplatQuat(packedArray, index, quatX, quatY, quatZ, quatW);\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, index, sh3, splatEncoding);\n }\n },\n extraCallbacks,\n );\n return { packedArray, numSplats, extra };\n}\n\n// Array of buckets for sorting float16 distances with range [0, DEPTH_INFINITY].\nconst DEPTH_INFINITY_F16 = 0x7c00;\nconst DEPTH_SIZE_16 = DEPTH_INFINITY_F16 + 1;\nlet depthArray16: Uint32Array | null = null;\n\nfunction sortSplats({\n totalSplats,\n readback,\n ordering,\n}: { totalSplats: number; readback: Uint8Array[]; ordering: Uint32Array }): {\n activeSplats: number;\n ordering: Uint32Array;\n} {\n // Sort totalSplats Gsplats, each with 4 bytes of readback, and outputs Uint32Array\n // of indices from most distant to nearest. Each 4 bytes encode a float16 distance\n // and unused high bytes.\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n\n const readbackUint32 = readback.map((layer) => new Uint32Array(layer.buffer));\n const layerSize = readbackUint32[0].length;\n const numLayers = Math.ceil(totalSplats / layerSize);\n\n let layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i = 0; i < layerSplats; ++i) {\n const pri = readbackLayer[i] & 0x7fff;\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n\n let activeSplats = 0;\n for (let j = 0; j < DEPTH_SIZE_16; ++j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n\n layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i = 0; i < layerSplats; ++i) {\n const pri = readbackLayer[i] & 0x7fff;\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = layerBase + i;\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n if (depthArray16[DEPTH_SIZE_16 - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[DEPTH_SIZE_16 - 1]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\n// Sort numSplats splats, each with 2 bytes of float16 readback for distance metric,\n// using one bucket sort pass, outputting Uint32Array of indices.\nfunction sortDoubleSplats({\n numSplats,\n readback,\n ordering,\n}: { numSplats: number; readback: Uint16Array; ordering: Uint32Array }): {\n activeSplats: number;\n ordering: Uint32Array;\n} {\n // Ensure depthArray is allocated and zeroed out for our buckets.\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n\n // Count the number of splats in each bucket (cull Gsplats at infinity).\n for (let i = 0; i < numSplats; ++i) {\n const pri = readback[i];\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n\n // Compute the beginning index of each bucket in the output array and the\n // total number of active (non-infinity) splats, going in reverse order\n // because we want most distant Gsplats to be first in the output array.\n let activeSplats = 0;\n for (let j = DEPTH_INFINITY_F16 - 1; j >= 0; --j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n\n // Write out the sorted indices into the output array according\n // bucket order.\n for (let i = 0; i < numSplats; ++i) {\n const pri = readback[i];\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = i;\n depthArray16[pri] += 1;\n }\n }\n // Sanity check that the end of the closest bucket is the same as\n // our total count of active splats (not at infinity).\n if (depthArray16[0] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[0]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\nconst DEPTH_INFINITY_F32 = 0x7f800000;\nlet bucket16lo: Uint32Array | null = null;\nlet bucket16hi: Uint32Array | null = null;\nlet scratchSplats: Uint32Array | null = null;\n\n// two-pass radix sort (base 65536) of 32-bit keys in readback,\n// but placing largest values first.\nfunction sort32Splats({\n maxSplats,\n numSplats,\n readback, // Uint32Array of bit‑patterns\n ordering, // Uint32Array to fill with sorted indices\n}: {\n maxSplats: number;\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}): { activeSplats: number; ordering: Uint32Array } {\n const BASE = 1 << 16; // 65536\n\n // allocate once\n if (!bucket16lo) {\n bucket16lo = new Uint32Array(BASE);\n }\n if (!bucket16hi) {\n bucket16hi = new Uint32Array(BASE);\n }\n if (!scratchSplats || scratchSplats.length < maxSplats) {\n scratchSplats = new Uint32Array(maxSplats);\n }\n\n // tally low and high buckets\n bucket16lo.fill(0);\n bucket16hi.fill(0);\n for (let i = 0; i < numSplats; ++i) {\n const key = readback[i];\n if (key < DEPTH_INFINITY_F32) {\n const inv = ~key >>> 0;\n bucket16lo[inv & 0xffff] += 1;\n bucket16hi[inv >>> 16] += 1;\n }\n }\n\n //\n // ——— Pass #1: bucket by inv(lo 16 bits) ———\n //\n // exclusive prefix‑sum → starting offsets\n let total = 0;\n for (let b = 0; b < BASE; ++b) {\n const c = bucket16lo[b];\n bucket16lo[b] = total;\n total += c;\n }\n const activeSplats = total;\n\n // scatter into scratch by low bits of inv\n for (let i = 0; i < numSplats; ++i) {\n const key = readback[i];\n if (key < DEPTH_INFINITY_F32) {\n const inv = ~key >>> 0;\n scratchSplats[bucket16lo[inv & 0xffff]++] = i;\n }\n }\n\n //\n // ——— Pass #2: bucket by inv(hi 16 bits) ———\n //\n // exclusive prefix‑sum again\n let sum = 0;\n for (let b = 0; b < BASE; ++b) {\n const c = bucket16hi[b];\n bucket16hi[b] = sum;\n sum += c;\n }\n\n // scatter into final ordering by high bits of inv\n for (let k = 0; k < activeSplats; ++k) {\n const idx = scratchSplats[k];\n const inv = ~readback[idx] >>> 0;\n ordering[bucket16hi[inv >>> 16]++] = idx;\n }\n\n // sanity‑check: the last bucket should have eaten all entries\n if (bucket16hi[BASE - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${bucket16hi[BASE - 1]}`,\n );\n }\n\n return { activeSplats, ordering };\n}\n\n// Buffer to queue any messages received while initializing, for example\n// early messages to unpack a Gsplat file while still initializing the WASM code.\nconst messageBuffer: MessageEvent[] = [];\n\nfunction bufferMessage(event: MessageEvent) {\n messageBuffer.push(event);\n}\n\nasync function initialize() {\n // Hold any messages received while initializing\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm();\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of messageBuffer) {\n onMessage(event);\n }\n messageBuffer.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["i","x","ptr","err","l","td","dat","Inflate","Gunzip","_a","e","max","ColorManagement","SplatFileType","bits","THREE.Quaternion","THREE.Vector3","THREE.Color","b2","offset","i32","section","_","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","packed_position","packed_rotation","packed_scale","packed_color","SH_C0","i2","input","THREE.Box3","quaternion","spz","center","index","name","init_wasm"],"mappings":"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","x_google_ignoreList":[1,2]} \ No newline at end of file diff --git a/dist/assets/worker-C9LcsNvD.js.map b/dist/assets/worker-C9LcsNvD.js.map deleted file mode 100644 index e2117f57..00000000 --- a/dist/assets/worker-C9LcsNvD.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"worker-C9LcsNvD.js","sources":["../rust/spark-worker-rs/pkg/spark_worker_rs.js","../src/worker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_worker_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_worker_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_worker_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","import init_wasm, {\n sort_splats,\n sort32_splats,\n decode_to_gsplatarray,\n decode_to_csplatarray,\n decode_to_packedsplats,\n new_lod_tree,\n new_shared_lod_tree,\n init_lod_tree,\n dispose_lod_tree,\n traverse_lod_trees,\n type ChunkDecoder,\n tiny_lod_packedsplats,\n bhatt_lod_packedsplats,\n update_lod_trees,\n decode_to_extsplats,\n tiny_lod_extsplats,\n bhatt_lod_extsplats,\n get_lod_tree_level,\n} from \"spark-worker-rs\";\nimport type { ExtResult, PackedResult, SplatEncoding } from \"./defines\";\n\nconst rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk,\n};\n\nasync function onMessage(event: MessageEvent) {\n const {\n id,\n name,\n args,\n }: { id: unknown; name: keyof typeof rpcHandlers; args: unknown } =\n event.data;\n try {\n const handler = rpcHandlers[name] as (\n args: unknown,\n options: { sendStatus: (data: unknown) => void },\n ) => unknown | Promise;\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n\n const sendStatus = (data: unknown) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) },\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n}\n\nfunction sortSplats16({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nfunction sortSplats32({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: string;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nasync function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n}: {\n decoder: ChunkDecoder;\n fileBytes?: Uint8Array;\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n chunked?: boolean;\n chunkedLength?: number;\n sendStatus: (data: unknown) => void;\n}) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576; // 1 MB\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length)),\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk: Promise = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk = await readNextChunk;\n\n if (nextChunk.length === 0) {\n break;\n }\n\n decoder.push(nextChunk);\n loaded += nextChunk.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n const decoded = decoder.finish();\n return decoded;\n}\n\ntype DecodedPackedResult = {\n numSplats: number;\n packed: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n splatEncoding: SplatEncoding;\n};\n\nfunction toPackedResult(packed: DecodedPackedResult): PackedResult {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n splatEncoding: packed.splatEncoding,\n };\n}\n\nasync function loadPackedSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n encoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadPackedSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, encoding, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toPackedResult(decoded as DecodedPackedResult);\n if (result.splatEncoding.lodOpacity) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n const result = toPackedResult(\n decoded.to_packedsplats_lod() as DecodedPackedResult,\n );\n return { lodSplats: result };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n // if (nonLod === true) {\n // sendStatus({ orig: toPackedResult(packed as DecodedPackedResult) });\n // } else if (nonLod === \"wait\") {\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked as DecodedPackedResult);\n return result;\n}\n\ntype DecodedExtResult = {\n numSplats: number;\n ext0: Uint32Array;\n ext1: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n};\n\nfunction toExtResult(packed: DecodedExtResult): ExtResult {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n };\n}\n\nasync function loadExtSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadExtSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toExtResult(decoded as DecodedExtResult);\n if (result.extra.lodTree) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod() as DecodedExtResult),\n };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked as DecodedExtResult);\n return result;\n}\n\nasync function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n filter,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n filter,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nfunction newLodTree({\n capacity,\n}: {\n capacity: number;\n}) {\n const { lodId } = new_lod_tree(capacity) as { lodId: number };\n return { lodId };\n}\n\nfunction newSharedLodTree({\n lodId,\n}: {\n lodId: number;\n}) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId) as { lodId: number };\n return { lodId: newLodId };\n}\n\nfunction initLodTree({\n numSplats,\n lodTree,\n}: {\n numSplats: number;\n lodTree: Uint32Array;\n}) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree) as {\n lodId: number;\n chunkToPage: Uint32Array;\n };\n return { lodId, chunkToPage };\n}\n\nfunction disposeLodTree({ lodId }: { lodId: number }) {\n dispose_lod_tree(lodId);\n}\n\nfunction updateLodTrees({\n ranges,\n}: {\n ranges: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[];\n}) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData }) => lodTreeData);\n\n const result = update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData,\n );\n}\n\nfunction traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n}: {\n maxSplats: number;\n pixelScaleLimit: number;\n lastPixelLimit?: number;\n instances: Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >;\n}) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId),\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 0xffffffff),\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error(\"Incorrect array size for viewToObjectCols\");\n }\n return instance.viewToObjectCols;\n }),\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale),\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate),\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0),\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov),\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate),\n );\n\n const result = traverse_lod_trees(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs,\n ) as {\n instanceIndices: {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n }[];\n chunks: [number, number][];\n pixelLimit?: number;\n };\n const { instanceIndices, chunks, pixelLimit } = result;\n\n const indices = keyInstances.reduce(\n (indices, [key, _instance], index) => {\n indices[key] = instanceIndices[index];\n return indices;\n },\n {} as Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n );\n // console.log(`traverseLodTrees: instanceIndices=${instanceIndices.length}`);\n // console.log(`traverseLodTrees: chunks=${chunks.length}`, JSON.stringify(chunks));\n return {\n keyIndices: indices,\n chunks,\n pixelLimit,\n };\n}\n\nfunction getLodTreeLevel({\n lodId,\n level,\n}: {\n lodId: number;\n level: number;\n}) {\n return get_lod_tree_level(lodId, level) as { indices: Uint32Array };\n}\n\nlet nextChunkWaiter = (_chunk: Uint8Array) => {};\n\nasync function nextChunk({ chunk }: { chunk: Uint8Array }) {\n nextChunkWaiter(chunk);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nfunction getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\nasync function initialize() {\n // Hold any messages received while initializing\n const pending: MessageEvent[] = [];\n const bufferMessage = (event: MessageEvent) => {\n pending.push(event);\n };\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm();\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["ChunkDecoder","ptr","obj","ChunkDecoderFinalization","wasm","ret","takeFromExternrefTable0","bytes","CsplatArray","CsplatArrayFinalization","lod_base","rgba","merge_filter","arg0","GsplatArray","GsplatArrayFinalization","encoding","bhatt_lod_extsplats","num_splats","ext1","ext2","extra","isLikeNone","addToExternrefTable0","bhatt_lod_packedsplats","packed","decode_to_csplatarray","file_type","path_name","ptr0","passStringToWasm0","len0","WASM_VECTOR_LEN","ptr1","len1","decode_to_extsplats","sh1_codes","sh2_codes","sh3_codes","decode_to_gsplatarray","decode_to_packedsplats","dispose_lod_tree","lod_id","get_lod_tree_level","level","init_lod_tree","lod_tree","new_lod_tree","capacity","new_shared_lod_tree","orig_lod_id","sort32_splats","readback","ordering","sort_splats","tiny_lod_extsplats","tiny_lod_packedsplats","traverse_lod_trees","max_splats","pixel_scale_limit","_last_pixel_limit","lod_ids","root_pages","view_to_objects","lod_scales","behind_foveates","cone_foveates","cone_fov0s","cone_fovs","passArray32ToWasm0","ptr2","passArrayF32ToWasm0","len2","ptr3","len3","ptr4","len4","ptr5","len5","ptr6","len6","ptr7","len7","update_lod_trees","page_bases","chunk_bases","counts","lod_trees","__wbg_get_imports","arg1","getStringFromWasm0","v","debugString","getDataViewMemory0","val","deferred0_0","deferred0_1","handleError","result","arg2","getArrayU8FromWasm0","getArrayU16FromWasm0","getArrayU32FromWasm0","table","offset","idx","type","description","name","length","debug","i","builtInMatches","className","len","getUint16ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","getFloat32ArrayMemory0","decodeText","cachedUint16ArrayMemory0","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","f","args","e","x","arg","malloc","realloc","buf","cachedTextEncoder","mem","code","view","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","__wbg_init","module_or_path","rpcHandlers","sortSplats16","sortSplats32","loadPackedSplats","loadExtSplats","tinyLodPackedSplats","qualityLodPackedSplats","tinyLodExtSplats","qualityLodExtSplats","newLodTree","newSharedLodTree","initLodTree","disposeLodTree","updateLodTrees","traverseLodTrees","getLodTreeLevel","nextChunk","onMessage","event","id","handler","data","getTransferable","error","numSplats","decodeBytesUrl","decoder","fileBytes","url","requestHeader","withCredentials","chunked","chunkedLength","sendStatus","request","response","readStream","contentLength","total","loaded","done","readNextChunk","resolve","nextChunkWaiter","toPackedResult","fileType","pathName","lod","lodBase","lodAbove","nonLod","sh1Codes","sh2Codes","sh3Codes","decoded","initialSplats","lodName","lodStart","base","lodDuration","lodPacked","toExtResult","packedArray","extArrays","lodId","newLodId","lodTree","chunkToPage","ranges","lodIds","pageBases","pageBase","chunkBases","chunkBase","count","lodTreeData","maxSplats","pixelScaleLimit","lastPixelLimit","instances","keyInstances","_key","rootPages","viewToObjects","lodScales","behindFoveates","coneFov0s","coneFovs","coneFoveates","instanceIndices","chunks","pixelLimit","indices","key","_instance","index","_chunk","chunk","ctx","buffers","seen","traverse","initialize","pending","bufferMessage","init_wasm"],"mappings":"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"} \ No newline at end of file diff --git a/dist/assets/worker-On-THXgb.js.map b/dist/assets/worker-On-THXgb.js.map deleted file mode 100644 index 7bb1eb64..00000000 --- a/dist/assets/worker-On-THXgb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"worker-On-THXgb.js","sources":["../rust/spark-worker-rs/pkg/spark_worker_rs.js","../src/worker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_worker_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_worker_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_worker_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","import init_wasm, {\n sort_splats,\n sort32_splats,\n decode_to_gsplatarray,\n decode_to_csplatarray,\n decode_to_packedsplats,\n new_lod_tree,\n new_shared_lod_tree,\n init_lod_tree,\n dispose_lod_tree,\n traverse_lod_trees,\n type ChunkDecoder,\n tiny_lod_packedsplats,\n bhatt_lod_packedsplats,\n update_lod_trees,\n decode_to_extsplats,\n tiny_lod_extsplats,\n bhatt_lod_extsplats,\n get_lod_tree_level,\n} from \"spark-worker-rs\";\nimport type { ExtResult, PackedResult, SplatEncoding } from \"./defines\";\n\nconst rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk,\n};\n\nasync function onMessage(event: MessageEvent) {\n const {\n id,\n name,\n args,\n }: { id: unknown; name: keyof typeof rpcHandlers; args: unknown } =\n event.data;\n try {\n const handler = rpcHandlers[name] as (\n args: unknown,\n options: { sendStatus: (data: unknown) => void },\n ) => unknown | Promise;\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n\n const sendStatus = (data: unknown) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) },\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n}\n\nfunction sortSplats16({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nfunction sortSplats32({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: string;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nasync function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n}: {\n decoder: ChunkDecoder;\n fileBytes?: Uint8Array;\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n chunked?: boolean;\n chunkedLength?: number;\n sendStatus: (data: unknown) => void;\n}) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576; // 1 MB\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length)),\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk: Promise = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk = await readNextChunk;\n\n if (nextChunk.length === 0) {\n break;\n }\n\n decoder.push(nextChunk);\n loaded += nextChunk.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n const decoded = decoder.finish();\n return decoded;\n}\n\ntype DecodedPackedResult = {\n numSplats: number;\n packed: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n splatEncoding: SplatEncoding;\n};\n\nfunction toPackedResult(packed: DecodedPackedResult): PackedResult {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n splatEncoding: packed.splatEncoding,\n };\n}\n\nasync function loadPackedSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n encoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadPackedSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, encoding, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toPackedResult(decoded as DecodedPackedResult);\n if (result.splatEncoding.lodOpacity) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n const result = toPackedResult(\n decoded.to_packedsplats_lod() as DecodedPackedResult,\n );\n return { lodSplats: result };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n // if (nonLod === true) {\n // sendStatus({ orig: toPackedResult(packed as DecodedPackedResult) });\n // } else if (nonLod === \"wait\") {\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked as DecodedPackedResult);\n return result;\n}\n\ntype DecodedExtResult = {\n numSplats: number;\n ext0: Uint32Array;\n ext1: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n};\n\nfunction toExtResult(packed: DecodedExtResult): ExtResult {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n };\n}\n\nasync function loadExtSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadExtSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toExtResult(decoded as DecodedExtResult);\n if (result.extra.lodTree) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod() as DecodedExtResult),\n };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked as DecodedExtResult);\n return result;\n}\n\nasync function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n filter,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n filter,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nfunction newLodTree({\n capacity,\n}: {\n capacity: number;\n}) {\n const { lodId } = new_lod_tree(capacity) as { lodId: number };\n return { lodId };\n}\n\nfunction newSharedLodTree({\n lodId,\n}: {\n lodId: number;\n}) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId) as { lodId: number };\n return { lodId: newLodId };\n}\n\nfunction initLodTree({\n numSplats,\n lodTree,\n}: {\n numSplats: number;\n lodTree: Uint32Array;\n}) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree) as {\n lodId: number;\n chunkToPage: Uint32Array;\n };\n return { lodId, chunkToPage };\n}\n\nfunction disposeLodTree({ lodId }: { lodId: number }) {\n dispose_lod_tree(lodId);\n}\n\nfunction updateLodTrees({\n ranges,\n}: {\n ranges: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[];\n}) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData }) => lodTreeData);\n\n const result = update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData,\n );\n}\n\nfunction traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n}: {\n maxSplats: number;\n pixelScaleLimit: number;\n lastPixelLimit?: number;\n instances: Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >;\n}) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId),\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 0xffffffff),\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error(\"Incorrect array size for viewToObjectCols\");\n }\n return instance.viewToObjectCols;\n }),\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale),\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate),\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0),\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov),\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate),\n );\n\n const result = traverse_lod_trees(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs,\n ) as {\n instanceIndices: {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n }[];\n chunks: [number, number][];\n pixelLimit?: number;\n };\n const { instanceIndices, chunks, pixelLimit } = result;\n\n const indices = keyInstances.reduce(\n (indices, [key, _instance], index) => {\n indices[key] = instanceIndices[index];\n return indices;\n },\n {} as Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n );\n // console.log(`traverseLodTrees: instanceIndices=${instanceIndices.length}`);\n // console.log(`traverseLodTrees: chunks=${chunks.length}`, JSON.stringify(chunks));\n return {\n keyIndices: indices,\n chunks,\n pixelLimit,\n };\n}\n\nfunction getLodTreeLevel({\n lodId,\n level,\n}: {\n lodId: number;\n level: number;\n}) {\n return get_lod_tree_level(lodId, level) as { indices: Uint32Array };\n}\n\nlet nextChunkWaiter = (_chunk: Uint8Array) => {};\n\nasync function nextChunk({ chunk }: { chunk: Uint8Array }) {\n nextChunkWaiter(chunk);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nfunction getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\nasync function initialize() {\n // Hold any messages received while initializing\n const pending: MessageEvent[] = [];\n const bufferMessage = (event: MessageEvent) => {\n pending.push(event);\n };\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm();\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["ptr","nextChunk","decoder","decoded","result","lodTreeData","indices","init_wasm"],"mappings":"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"} \ No newline at end of file diff --git a/dist/assets/worker-QdpqHGuR.js.map b/dist/assets/worker-QdpqHGuR.js.map new file mode 100644 index 00000000..d057dbfb --- /dev/null +++ b/dist/assets/worker-QdpqHGuR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker-QdpqHGuR.js","sources":["../rust/spark-rs/pkg/spark_rs.js","../src/worker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","import init_wasm, {\n sort_splats,\n sort32_splats,\n decode_to_gsplatarray,\n decode_to_csplatarray,\n decode_to_packedsplats,\n new_lod_tree,\n new_shared_lod_tree,\n init_lod_tree,\n dispose_lod_tree,\n traverse_lod_trees,\n dynamic_traverse_lod_trees,\n type ChunkDecoder,\n tiny_lod_packedsplats,\n bhatt_lod_packedsplats,\n update_lod_trees,\n decode_to_extsplats,\n tiny_lod_extsplats,\n bhatt_lod_extsplats,\n get_lod_tree_level,\n} from \"spark-rs\";\nimport type { ExtResult, PackedResult, SplatEncoding } from \"./defines\";\n\nconst rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk,\n};\n\nasync function onMessage(event: MessageEvent) {\n const {\n id,\n name,\n args,\n }: { id: unknown; name: keyof typeof rpcHandlers; args: unknown } =\n event.data;\n try {\n const handler = rpcHandlers[name] as (\n args: unknown,\n options: { sendStatus: (data: unknown) => void },\n ) => unknown | Promise;\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n\n const sendStatus = (data: unknown) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) },\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n}\n\nfunction sortSplats16({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nfunction sortSplats32({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: string;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nasync function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n}: {\n decoder: ChunkDecoder;\n fileBytes?: Uint8Array;\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n chunked?: boolean;\n chunkedLength?: number;\n sendStatus: (data: unknown) => void;\n}) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576; // 1 MB\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length)),\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk: Promise = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk = await readNextChunk;\n\n if (nextChunk.length === 0) {\n break;\n }\n \n\n decoder.push(nextChunk);\n loaded += nextChunk.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n const decoded = decoder.finish();\n return decoded;\n}\n\ntype DecodedPackedResult = {\n numSplats: number;\n packed: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n splatEncoding: SplatEncoding;\n};\n\nfunction toPackedResult(packed: DecodedPackedResult): PackedResult {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n splatEncoding: packed.splatEncoding,\n };\n}\n\nasync function loadPackedSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n encoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadPackedSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, encoding, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toPackedResult(decoded as DecodedPackedResult);\n if (result.splatEncoding.lodOpacity) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n const result = toPackedResult(\n decoded.to_packedsplats_lod() as DecodedPackedResult,\n );\n return { lodSplats: result };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n // if (nonLod === true) {\n // sendStatus({ orig: toPackedResult(packed as DecodedPackedResult) });\n // } else if (nonLod === \"wait\") {\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked as DecodedPackedResult);\n return result;\n}\n\ntype DecodedExtResult = {\n numSplats: number;\n ext0: Uint32Array;\n ext1: Uint32Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n};\n\nfunction toExtResult(packed: DecodedExtResult): ExtResult {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n labels: packed.labels,\n instances: packed.instances,\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n };\n}\n\nasync function loadExtSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadExtSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toExtResult(decoded as DecodedExtResult);\n\n if (result.extra.lodTree) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod() as DecodedExtResult),\n };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked as DecodedExtResult);\n return result;\n}\n\nasync function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n filter,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n filter,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nfunction newLodTree({\n capacity,\n}: {\n capacity: number;\n}) {\n const { lodId } = new_lod_tree(capacity) as { lodId: number };\n return { lodId };\n}\n\nfunction newSharedLodTree({\n lodId,\n}: {\n lodId: number;\n}) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId) as { lodId: number };\n return { lodId: newLodId };\n}\n\nfunction initLodTree({\n numSplats,\n lodTree,\n}: {\n numSplats: number;\n lodTree: Uint32Array;\n}) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree) as {\n lodId: number;\n chunkToPage: Uint32Array;\n };\n return { lodId, chunkToPage };\n}\n\nfunction disposeLodTree({ lodId }: { lodId: number }) {\n dispose_lod_tree(lodId);\n}\n\nfunction updateLodTrees({\n ranges,\n}: {\n ranges: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[];\n}) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData }) => lodTreeData);\n\n const result = update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData,\n );\n}\n\nfunction traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n traverseMode,\n}: {\n maxSplats: number;\n pixelScaleLimit: number;\n lastPixelLimit?: number;\n instances: Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >;\n traverseMode: \"dynamic\" | \"standard\";\n}) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId),\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 0xffffffff),\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error(\"Incorrect array size for viewToObjectCols\");\n }\n return instance.viewToObjectCols;\n }),\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale),\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate),\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0),\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov),\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate),\n );\n\n const lodFunction =\n traverseMode === \"dynamic\"\n ? dynamic_traverse_lod_trees\n : traverse_lod_trees;\n const result = lodFunction(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs,\n ) as {\n instanceIndices: {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n }[];\n chunks: [number, number][];\n pixelLimit?: number;\n };\n const { instanceIndices, chunks, pixelLimit } = result;\n\n const indices = keyInstances.reduce(\n (indices, [key, _instance], index) => {\n indices[key] = instanceIndices[index];\n return indices;\n },\n {} as Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n );\n // console.log(`traverseLodTrees: instanceIndices=${instanceIndices.length}`);\n // console.log(`traverseLodTrees: chunks=${chunks.length}`, JSON.stringify(chunks));\n return {\n keyIndices: indices,\n chunks,\n pixelLimit,\n };\n}\n\nfunction getLodTreeLevel({\n lodId,\n level,\n}: {\n lodId: number;\n level: number;\n}) {\n return get_lod_tree_level(lodId, level) as { indices: Uint32Array };\n}\n\nlet nextChunkWaiter = (_chunk: Uint8Array) => {};\n\nasync function nextChunk({ chunk }: { chunk: Uint8Array }) {\n nextChunkWaiter(chunk);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nfunction getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\nasync function initialize() {\n let resolveWaitForModule: (value: WebAssembly.Module) => void;\n const waitForModule = new Promise((resolve) => {\n resolveWaitForModule = resolve;\n });\n\n // Hold any messages received while initializing\n const pending: MessageEvent[] = [];\n const bufferMessage = (event: MessageEvent) => {\n // Handle module\n if (event.data.name === \"init-wasm\") {\n resolveWaitForModule(event.data.module as WebAssembly.Module);\n return;\n }\n\n pending.push(event);\n };\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm({ module_or_path: await waitForModule });\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["ptr","nextChunk","decoder","decoded","result","lodTreeData","indices","init_wasm"],"mappings":"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"} \ No newline at end of file diff --git a/dist/assets/worker-o12t87OT.js.map b/dist/assets/worker-o12t87OT.js.map new file mode 100644 index 00000000..c6a36cea --- /dev/null +++ b/dist/assets/worker-o12t87OT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker-o12t87OT.js","sources":["../rust/spark-rs/pkg/spark_rs.js","../src/worker.ts"],"sourcesContent":["/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","import init_wasm, {\n sort_splats,\n sort32_splats,\n decode_to_gsplatarray,\n decode_to_csplatarray,\n decode_to_packedsplats,\n new_lod_tree,\n new_shared_lod_tree,\n init_lod_tree,\n dispose_lod_tree,\n traverse_lod_trees,\n dynamic_traverse_lod_trees,\n type ChunkDecoder,\n tiny_lod_packedsplats,\n bhatt_lod_packedsplats,\n update_lod_trees,\n decode_to_extsplats,\n tiny_lod_extsplats,\n bhatt_lod_extsplats,\n get_lod_tree_level,\n} from \"spark-rs\";\nimport type { ExtResult, PackedResult, SplatEncoding } from \"./defines\";\n\nconst rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk,\n};\n\nasync function onMessage(event: MessageEvent) {\n const {\n id,\n name,\n args,\n }: { id: unknown; name: keyof typeof rpcHandlers; args: unknown } =\n event.data;\n try {\n const handler = rpcHandlers[name] as (\n args: unknown,\n options: { sendStatus: (data: unknown) => void },\n ) => unknown | Promise;\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n\n const sendStatus = (data: unknown) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) },\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n}\n\nfunction sortSplats16({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint16Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nfunction sortSplats32({\n numSplats,\n readback,\n ordering,\n}: {\n numSplats: number;\n readback: Uint32Array;\n ordering: Uint32Array;\n}) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: string;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\nasync function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n}: {\n decoder: ChunkDecoder;\n fileBytes?: Uint8Array;\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n chunked?: boolean;\n chunkedLength?: number;\n sendStatus: (data: unknown) => void;\n}) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576; // 1 MB\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length)),\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk: Promise = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk = await readNextChunk;\n\n if (nextChunk.length === 0) {\n break;\n }\n \n\n decoder.push(nextChunk);\n loaded += nextChunk.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n const decoded = decoder.finish();\n return decoded;\n}\n\ntype DecodedPackedResult = {\n numSplats: number;\n packed: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n splatEncoding: SplatEncoding;\n};\n\nfunction toPackedResult(packed: DecodedPackedResult): PackedResult {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n splatEncoding: packed.splatEncoding,\n };\n}\n\nasync function loadPackedSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n encoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadPackedSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, encoding, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toPackedResult(decoded as DecodedPackedResult);\n if (result.splatEncoding.lodOpacity) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n const result = toPackedResult(\n decoded.to_packedsplats_lod() as DecodedPackedResult,\n );\n return { lodSplats: result };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n // if (nonLod === true) {\n // sendStatus({ orig: toPackedResult(packed as DecodedPackedResult) });\n // } else if (nonLod === \"wait\") {\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toPackedResult(decoded.to_packedsplats() as DecodedPackedResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked as DecodedPackedResult);\n return result;\n}\n\ntype DecodedExtResult = {\n numSplats: number;\n ext0: Uint32Array;\n ext1: Uint32Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n};\n\nfunction toExtResult(packed: DecodedExtResult): ExtResult {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n labels: packed.labels,\n instances: packed.instances,\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree,\n },\n };\n}\n\nasync function loadExtSplats(\n {\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n }: {\n url?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: string;\n pathName?: string;\n chunked?: boolean;\n chunkedLength?: number;\n lod?: boolean | \"quality\";\n lodBase?: number;\n lodAbove?: number;\n nonLod?: boolean;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n },\n {\n sendStatus,\n }: {\n sendStatus: (data: unknown) => void;\n },\n) {\n // console.log(\"loadExtSplats\", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, lod, lodBase, lodAbove, nonLod });\n if (!lod) {\n const decoder = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes,\n );\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n const result = toExtResult(decoded as DecodedExtResult);\n\n if (result.extra.lodTree) {\n return { lodSplats: result };\n }\n return result;\n }\n\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus,\n });\n\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod() as DecodedExtResult),\n };\n }\n\n if (lodAbove !== undefined) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n }\n\n let result:\n | (ReturnType & {\n lodSplats?: ReturnType;\n })\n | { lodSplats?: ReturnType } = {};\n\n if (nonLod) {\n // Wait until LoD computation is complete before resolving full PackedSplats result\n result = toExtResult(decoded.to_extsplats() as DecodedExtResult);\n }\n\n const initialSplats = decoded.len();\n const lodName = lod === \"quality\" ? \"Bhatt\" : \"Tiny\";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`,\n );\n\n const lodStart = performance.now();\n if (lod === \"quality\") {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`,\n );\n\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked as DecodedExtResult);\n return result;\n}\n\nasync function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n filter,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n packedArray: Uint32Array;\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra as object,\n base,\n rgba,\n encoding,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded as DecodedPackedResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n filter,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nasync function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding,\n}: {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra?: Record;\n lodBase?: number;\n rgba?: Uint8Array;\n encoding: SplatEncoding;\n}) {\n const base = Math.max(1.1, Math.min(2.0, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra as object,\n base,\n rgba,\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded as DecodedExtResult);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`,\n );\n return result;\n}\n\nfunction newLodTree({\n capacity,\n}: {\n capacity: number;\n}) {\n const { lodId } = new_lod_tree(capacity) as { lodId: number };\n return { lodId };\n}\n\nfunction newSharedLodTree({\n lodId,\n}: {\n lodId: number;\n}) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId) as { lodId: number };\n return { lodId: newLodId };\n}\n\nfunction initLodTree({\n numSplats,\n lodTree,\n}: {\n numSplats: number;\n lodTree: Uint32Array;\n}) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree) as {\n lodId: number;\n chunkToPage: Uint32Array;\n };\n return { lodId, chunkToPage };\n}\n\nfunction disposeLodTree({ lodId }: { lodId: number }) {\n dispose_lod_tree(lodId);\n}\n\nfunction updateLodTrees({\n ranges,\n}: {\n ranges: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[];\n}) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData }) => lodTreeData);\n\n const result = update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData,\n );\n}\n\nfunction traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n traverseMode,\n}: {\n maxSplats: number;\n pixelScaleLimit: number;\n lastPixelLimit?: number;\n instances: Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >;\n traverseMode: \"dynamic\" | \"standard\";\n}) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId),\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 0xffffffff),\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error(\"Incorrect array size for viewToObjectCols\");\n }\n return instance.viewToObjectCols;\n }),\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale),\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate),\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0),\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov),\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate),\n );\n\n const lodFunction =\n traverseMode === \"dynamic\"\n ? dynamic_traverse_lod_trees\n : traverse_lod_trees;\n const result = lodFunction(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs,\n ) as {\n instanceIndices: {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n }[];\n chunks: [number, number][];\n pixelLimit?: number;\n };\n const { instanceIndices, chunks, pixelLimit } = result;\n\n const indices = keyInstances.reduce(\n (indices, [key, _instance], index) => {\n indices[key] = instanceIndices[index];\n return indices;\n },\n {} as Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n );\n // console.log(`traverseLodTrees: instanceIndices=${instanceIndices.length}`);\n // console.log(`traverseLodTrees: chunks=${chunks.length}`, JSON.stringify(chunks));\n return {\n keyIndices: indices,\n chunks,\n pixelLimit,\n };\n}\n\nfunction getLodTreeLevel({\n lodId,\n level,\n}: {\n lodId: number;\n level: number;\n}) {\n return get_lod_tree_level(lodId, level) as { indices: Uint32Array };\n}\n\nlet nextChunkWaiter = (_chunk: Uint8Array) => {};\n\nasync function nextChunk({ chunk }: { chunk: Uint8Array }) {\n nextChunkWaiter(chunk);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nfunction getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\nasync function initialize() {\n let resolveWaitForModule: (value: WebAssembly.Module) => void;\n const waitForModule = new Promise((resolve) => {\n resolveWaitForModule = resolve;\n });\n\n // Hold any messages received while initializing\n const pending: MessageEvent[] = [];\n const bufferMessage = (event: MessageEvent) => {\n // Handle module\n if (event.data.name === \"init-wasm\") {\n resolveWaitForModule(event.data.module as WebAssembly.Module);\n return;\n }\n\n pending.push(event);\n };\n self.addEventListener(\"message\", bufferMessage);\n\n await init_wasm({ module_or_path: await waitForModule });\n\n self.removeEventListener(\"message\", bufferMessage);\n self.addEventListener(\"message\", onMessage);\n\n // Process any buffered messages\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n}\n\ninitialize().catch(console.error);\n"],"names":["ChunkDecoder","ptr","obj","ChunkDecoderFinalization","wasm","ret","takeFromExternrefTable0","bytes","CsplatArray","CsplatArrayFinalization","lod_base","rgba","merge_filter","arg0","GsplatArray","GsplatArrayFinalization","encoding","bhatt_lod_extsplats","num_splats","ext1","ext2","extra","isLikeNone","addToExternrefTable0","bhatt_lod_packedsplats","packed","decode_to_csplatarray","file_type","path_name","ptr0","passStringToWasm0","len0","WASM_VECTOR_LEN","ptr1","len1","decode_to_extsplats","sh1_codes","sh2_codes","sh3_codes","decode_to_gsplatarray","decode_to_packedsplats","dispose_lod_tree","lod_id","dynamic_traverse_lod_trees","max_splats","pixel_scale_limit","_last_pixel_limit","lod_ids","root_pages","view_to_objects","lod_scales","behind_foveates","cone_foveates","cone_fov0s","cone_fovs","passArray32ToWasm0","ptr2","passArrayF32ToWasm0","len2","ptr3","len3","ptr4","len4","ptr5","len5","ptr6","len6","ptr7","len7","get_lod_tree_level","level","init_lod_tree","lod_tree","new_lod_tree","capacity","new_shared_lod_tree","orig_lod_id","sort32_splats","readback","ordering","sort_splats","tiny_lod_extsplats","tiny_lod_packedsplats","traverse_lod_trees","update_lod_trees","page_bases","chunk_bases","counts","lod_trees","__wbg_get_imports","arg1","getStringFromWasm0","v","debugString","getDataViewMemory0","val","deferred0_0","deferred0_1","handleError","result","arg2","getArrayU8FromWasm0","getArrayU16FromWasm0","getArrayU32FromWasm0","getArrayF32FromWasm0","table","offset","idx","type","description","name","length","debug","i","builtInMatches","className","len","getFloat32ArrayMemory0","getUint16ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint16ArrayMemory0","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","f","args","x","arg","malloc","realloc","buf","cachedTextEncoder","mem","code","view","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","e","expectedResponseType","__wbg_init","module_or_path","rpcHandlers","sortSplats16","sortSplats32","loadPackedSplats","loadExtSplats","tinyLodPackedSplats","qualityLodPackedSplats","tinyLodExtSplats","qualityLodExtSplats","newLodTree","newSharedLodTree","initLodTree","disposeLodTree","updateLodTrees","traverseLodTrees","getLodTreeLevel","nextChunk","onMessage","event","id","handler","data","getTransferable","error","numSplats","decodeBytesUrl","decoder","fileBytes","url","requestHeader","withCredentials","chunked","chunkedLength","sendStatus","request","response","readStream","contentLength","total","loaded","done","readNextChunk","resolve","nextChunkWaiter","toPackedResult","fileType","pathName","lod","lodBase","lodAbove","nonLod","sh1Codes","sh2Codes","sh3Codes","decoded","initialSplats","lodName","lodStart","base","lodDuration","lodPacked","toExtResult","packedArray","extArrays","lodId","newLodId","lodTree","chunkToPage","ranges","lodIds","pageBases","pageBase","chunkBases","chunkBase","count","lodTreeData","maxSplats","pixelScaleLimit","lastPixelLimit","instances","traverseMode","keyInstances","_key","rootPages","viewToObjects","lodScales","behindFoveates","coneFov0s","coneFovs","coneFoveates","instanceIndices","chunks","pixelLimit","indices","key","_instance","index","_chunk","chunk","ctx","buffers","seen","traverse","initialize","resolveWaitForModule","waitForModule","pending","bufferMessage","init_wasm"],"mappings":"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"} \ No newline at end of file diff --git a/dist/spark.cjs.js b/dist/spark.cjs.js index 9f85cfa4..afd01c76 100644 --- a/dist/spark.cjs.js +++ b/dist/spark.cjs.js @@ -2,7 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const THREE = require("three"); const Pass_js = require("three/addons/postprocessing/Pass.js"); -var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null; function _interopNamespaceDefault(e) { const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } }); if (e) { @@ -20,1049 +19,703 @@ function _interopNamespaceDefault(e) { return Object.freeze(n); } const THREE__namespace = /* @__PURE__ */ _interopNamespaceDefault(THREE); -class OldSplatGeometry extends THREE__namespace.InstancedBufferGeometry { - constructor(ordering, activeSplats) { - super(); - this.ordering = ordering; - this.setAttribute("position", new THREE__namespace.BufferAttribute(QUAD_VERTICES$1, 3)); - this.setIndex(new THREE__namespace.BufferAttribute(QUAD_INDICES$1, 1)); - this._maxInstanceCount = ordering.length; - this.instanceCount = activeSplats; - this.attribute = new THREE__namespace.InstancedBufferAttribute(ordering, 1, false, 1); - this.attribute.setUsage(THREE__namespace.DynamicDrawUsage); - this.setAttribute("splatIndex", this.attribute); - } - update(ordering, activeSplats) { - this.ordering = ordering; - this.attribute.array = ordering; - this.instanceCount = activeSplats; - this.attribute.addUpdateRange(0, activeSplats); - this.attribute.needsUpdate = true; - } -} -const QUAD_VERTICES$1 = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]); -const QUAD_INDICES$1 = new Uint16Array([0, 1, 2, 0, 2, 3]); -const jsContent$1 = '(function() {\n "use strict";\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_worker_rs_bg.js": import0\n };\n }\n typeof FinalizationRegistry === "undefined" ? {} : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i2 = 1; i2 < length; i2++) {\n debug += ", " + debugString(val[i2]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x2) {\n return x2 === void 0 || x2 === null;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (module_or_path === void 0) {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4g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ADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQcgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgsgASgCAEGIzcQAQRYgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRBns3EAEESIAEoAgQiBigCDCIFEQAADQQCQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACgCCCAAKAIMIAEQtQJFDQEMBgsgBEHbgcIAQQIgBREAAA0FIAJBAToADCACIAY2AhggAiAENgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUaiIENgIgIAAoAgggACgCDCACQSBqELUCDQUgBEHZgcIAQQIQrwMNBQsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRBsM3EAEEQIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQUgACgCCCAAKAIMIAEQtQJFDQEMBQsgBEHbgcIAQQIgBREAAA0EIAJBAToADCACIAY2AhggAiAENgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUaiIENgIgIAAoAgggACgCDCACQSBqELUCDQQgBEHZgcIAQQIQrwMNBAsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDAMLIAEoAgBBwM3EAEETIAEoAgQoAgwRAAAhAwwCCyABKAIAQdPNxABBECABKAIEKAIMEQAAIQMMAQsgASgCAEHjzcQAQQwgASgCBCgCDBEAACEDCyACQTBqJAAgAwveGQMmfwp7BX4jAEEgayIIJAAgAC8BJCIEQQ9qIgtB8P8DcSEFIAtB8P8HcSEMIAAoAiAhCSAAKAIcIRIgACgCFCEGIAAoAhAhEyAAKAIIIQcgACgCBCEUAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMEQCAMQf//A3EiDEUNASAJIAVBAXYiCnAhACAGIApwIQMgBEUNAiAHIAVuIgcgAiAEQQJ0IhduIgIgAiAHSxsiJkUNEiAJIABrIRggBiADayEZIAQgDEsNESAEQQFxIScgCq0hNiAXQQhrQQN2IgAgBEEBdiICIAAgAkkbIgAgBCACa0H//wNxIhAgACAQSRsiIUF/cyAhQQFqIgBBA3EiAkEEIAIbIgJqISIgBEH+/wNxIhogACACayIdQQF0IihrISMgF0H4/w9xIhUgHUEDdCIpayEkIAEhDCAUIRFBACEHQQAhCQNAAn4gCUUgNEKAgICAEFRyRQRAIDSnIQQgNEKAgICAcINCgICAgBB9DAELIAogGUsNFCAZIAprIRkgNiE0IBMiCSAKIgRqIRNCgICAgBALITcCfiAHRSA1QoCAgIAQVHJFBEAgNachACA1QoCAgIBwg0KAgICAEH0MAQsgCiAYSw0UIBggCmshGCA2ITUgEiIHIAoiAGohEkKAgICAEAshOCAEIBBJDQQgACAQSQ0FIBQgBSAbbGohHCABIBcgG2xqIR4gNEL/////D4MgNUL/////D4MhNSAJIBBqISUgByELIAkhDQJAAkAgFUUNACAVIQYgHiEAIBohBCAcIQ4gIUEETwRAIA4gKGohDiAHIB1qIQsgCSAdaiENIAAgKWohACAJIQMgByEPICIhAiAMIQQgESEGA0AgBEEYaiAP/VwAAP2JAf2pASIv/QwlZgAAJWYAACVmAAAlZgAA/bUBQQj9rQH9DGbI//9myP//Zsj//2bI///9rgEiMCAG/V0AACItICv9DQACBAYAAAAAAAAAAAAAAAD9iQH9qQH9DIVKAACFSgAAhUoAAIVKAAAiMf21AUEI/a0BIi79rgFBBv2sAf0MAAAAAAAAAAAAAAAAAAAAACIr/bgB/Qz/AAAA/wAAAP8AAAD/AAAAIiz9tgEiKv0bAzoAACAEQRBqICr9GwI6AAAgBEEIaiAq/RsBOgAAIAQgKv0bADoAACAEQRpqIC4gA/1cAAD9iQH9qQEiMv0MGoEAABqBAAAagQAAGoEAAP21AUEI/a0B/Qzruv//67r//+u6///ruv///a4BIjP9rgFBBv2sASAr/bgBICz9tgEiKv0bAzoAACAEQRJqICr9GwI6AAAgBEEKaiAq/RsBOgAAIARBAmogKv0bADoAACAEQRxqIC0gK/0NAQMFBwAAAAAAAAAAAAAAAP2JAf2pASAx/bUBQQj9rQEiLSAw/a4BQQb9rAEgK/24ASAs/bYBIir9GwM6AAAgBEEUaiAq/RsCOgAAIARBDGogKv0bAToAACAEQQRqICr9GwA6AAAgBEEZaiAuIC/9DAg0AAAINAAACDQAAAg0AAD9tQFBCP2tASAy/QwTGQAAExkAABMZAAATGQAA/bUBQQj9rQH9rgEiLv2xAf0MBCIAAAQiAAAEIgAABCIAACIv/a4BQQb9rAEgK/24ASAs/bYBIir9GwM6AAAgBEERaiAq/RsCOgAAIARBCWogKv0bAToAACAEQQFqICr9GwA6AAAgBEEdaiAtIC79sQEgL/2uAUEG/awBICv9uAEgLP22ASIq/RsDOgAAIARBFWogKv0bAjoAACAEQQ1qICr9GwE6AAAgBEEFaiAq/RsAOgAAIARBHmogLSAz/a4BQQb9rAEgK/24ASAs/bYBIiv9GwM6AAAgBEEWaiAr/RsCOgAAIARBDmogK/0bAToAACAEQQZqICv9GwA6AAAgA0EEaiEDIA9BBGohDyAEQSBqIQQgBkEIaiEGIAJBBGoiAg0ACyAkIQYgIyEECwNAIARFDQEgDSAlRg0CIABBAmpB/wEgDi0AAEGFlQFsQQh2IgIgDS0AACIPQZqCAmxBCHZBlYoBayIDakEGdSIfQQAgH0EAShsiHyAfQf8BThs6AAAgAEH/ASALLQAAIh9BpcwBbEEIdkGa7wBrIiAgAmpBBnUiFkEAIBZBAEobIhYgFkH/AU4bOgAAIABBBmpB/wEgAyAOQQFqLQAAQYWVAWxBCHYiA2pBBnUiFkEAIBZBAEobIhYgFkH/AU4bOgAAIABBBGpB/wEgAyAgakEGdSIgQQAgIEEAShsiICAgQf8BThs6AAAgAEEBakH/ASACIB9BiOgAbEEIdiAPQZMybEEIdmoiAmtBhMQAakEGdSIPQQAgD0EAShsiDyAPQf8BThs6AAAgAEEFakH/ASADIAJrQYTEAGpBBnUiAkEAIAJBAEobIgIgAkH/AU4bOgAAIABBCGohACAOQQJqIQ4gC0EBaiELIA1BAWohDSAEQQJrIQQgBkEIayIGDQALCyAnRSALIAcgEGpGciANICVGcg0AIBUgHmoiAEH/ASAaIBxqLQAAQYWVAWxBCHYiAiANLQAAIgNBmoICbEEIdmpBlYoBa0EGdSIEQQAgBEEAShsiBCAEQf8BThs6AAIgAEH/ASACIAstAAAiBEGlzAFsQQh2akGa7wBrQQZ1IgZBACAGQQBKGyIGIAZB/wFOGzoAACAAQf8BIAIgA0GTMmxBCHYgBEGI6ABsQQh2amtBhMQAakEGdSIAQQAgAEEAShsiACAAQf8BThs6AAELIDeEITQgNSA4hCE1IAwgF2ohDCAFIBFqIREgG0EBaiIbICZJDQALDBILIAQgB0sNBCAEIARBAXZrIgMgBksNBSADIAlLDQYgAiAEQQJ0IgpJDQcgAC8BJiEVIAEgCiAUIAQgEyADIBIgAxBuIARFDQggAiAKayICIARBA3QiDXAhDyAFIBVsIgAgBUkgACAHS3INCSAMQf//A3EiDEUNCiAFQQF2IQcgASAKaiEaIAAgBWsiACAAIAVBAXQiEXAiHmshACAFIBRqIRwCQCACIA9rIiIgDUkNACAEIAxLBEAgBSAJSyAFIAZLciAAIBFJcg0BQQAgBCAFQejpxAAQ6gcACyADIAdLBEAgBSAJSyAFIAZLciAAIBFJcg0BQQAgAyAHQdjpxAAQ6gcACyAAIBFJIAUgBktyIAUgCUtyIQIgBSAHayIMIANJBEAgAg0BQQAgAyAMQcjpxAAQ6gcACyACDQAgGiAKIBwgBCATIAMgByATaiIjIAMgEiADIAcgEmoiJCADEGYgCiAaaiAKIAUgHGogBCAjIAMgEyADICQgAyASIAMQZiAiIA1rIgwgDUkNACAHQQFrIRAgBiAHayEXIAUgE2ohGCAEQQR0IRkgBEEMbCEbIAUgEmohHSALQfD/A3FBBHYiAkEGdCEhIAJBMGwhJUEAIQsgACECA0AgAiARayICIBFJIAYgC2pBAWsgEElyIAsgF2ogBUkgCSALakEBayAQSXJyDQEgCSALIAdrIgtqIAVJDQEgASAbaiAKIBQgJWogBCAOICNqIiYgAyAOIBhqIicgAyAOICRqIiggAyAOIB1qIikgAxBmIAEgGWogCiAUICFqIAQgJyADICYgAyApIAMgKCADEGYgESAUaiEUIAEgDWohASAHIA5qIQ4gDCANayIMIA1PDQALCyAPRQ0RIAYgFUEBcSAVQQF2akEBayAHbCIBSQ0LIAEgCUsNDCAEIB5LDQ0gAyAGIAFrIgJLDQ4gAyAJIAFrIgJLDQ8gGiAiaiAPIAAgHGogBCABIBNqIAMgASASaiADEG4MEQsgCEEANgIYIAhBATYCDCAIQbyhxwA2AgggCEIENwIQIAhBCGpByOrEABCNCAALIAhBADYCGCAIQQE2AgwgCEG8occANgIIIAhCBDcCECAIQQhqQdjqxAAQjQgAC0EAIBAgBEH46sQAEOoHAAtBACAQIABB6OrEABDqBwALQQAgBCAHQbjqxAAQ6gcAC0EAIAMgBkGo6sQAEOoHAAtBACADIAlBmOrEABDqBwALQQAgCiACQYjqxAAQ6gcACyAIQQA2AhggCEEBNgIMIAhBvKHHADYCCCAIQgQ3AhAgCEEIakHY6MQAEI0IAAsgBSAAIAdB+OnEABDqBwALIAhBADYCGCAIQQE2AgwgCEG8occANgIIIAhCBDcCECAIQQhqQejoxAAQjQgACyABIAYgBkG46cQAEOoHAAsgASAJIAlBqOnEABDqBwALQQAgBCAeQZjpxAAQ6gcAC0EAIAMgAkGI6cQAEOoHAAtBACADIAJB+OjEABDqBwALIAogGUsgCiAYS3INAEEAIAQgBUGI68QAEOoHAAsgCEEgaiQAC50YBCB/AX0BewF+IwBBsMAAayIHJAACQAJAAkAgAiADQf8BcUECdCIFKAKAhUlwRQRAQQEhCCACIAUoApCFSW5BAnQiDARAAkAgDEEATgRAIAdBADYCtCAgB0EwakEBIAwgB0GwIGoQhQcgBygCMEEBRw0BIAcoAjghCCAHKAI0IQQLIAcgCDYCtCAgByAENgKwIEHgvsQAQTYgB0GwIGpB0L7EAEGYv8QAEOAGAAsgBygCNCEICyAHQQA2AiwgByAINgIoIAcgDDYCJAJAAkAgA0H/AXFBAWsOAwMBAQALIAJBA24iBUECdCIOBEAgDCAOSQRAIAdBJGpBACAOEO8FIAcoAighCCAHKAIsIQQLIAQgCGohAyAOQQFrIgIEQCADQQAgAvwLAAsgAiADakEAOgAAIAQgDmohBAsgByAENgIsIARBAnYiAiAFIAIgBUkbIgJFDQNBACEFIAJBAUcEQCACQQFxIAJB/v///wNxIQIgCCEGIAEhBANAIAZBA2pB/wE6AAAgBiAELwAAOwAAIAZBAmogBEECai0AADoAACAGQQdqQf8BOgAAIAZBBmogBEEFai0AADoAACAGQQRqIARBA2ovAAA7AAAgBkEIaiEGIARBBmohBCACIAVBAmoiBUcNAAtFDQQLIAggBUECdGoiAkH/AToAAyACIAEgBUEDbGoiAS0AAjoAAiACIAEvAAA7AAAMAwsgB0EQaiAHQSxqKAIANgIAIAcgBykCJDcDCCAHQbAgahDuAiAHKAKwIEUEQCAHQSRqQQEQ0QkLAkAgAiADQf8BcUECdCgCoIVJbkECdCIRIAcoAhAiBk0EQCAHKAIMIRIMAQsgESAGayIFIAcoAgggBmtLBEAgB0EIaiAGIAUQ7wUgBygCECEGCyAHKAIMIhIgBmohBCAFQQJPBH8gBUEBayIFBEAgBEEAIAX8CwALIBIgBSAGaiIGagUgBAtBADoAACAGQQFqIRELIAcgETYCEAJ/An8CQAJAAkACQCADQf8BcUEBaw4DAQIDAAsgB0EwakEAQYAg/AsAIAdBsCBqQQBBgCD8CwAgAkEDbiENQQEhHkEDDAQLIAdBMGpBAEGAIPwLACAHQbAgakEAQYAg/AsAIAJBAnYMAgsgB0EwakEAQYAg/AsAIAdBsCBqQQBBgCD8CwBBASEeIAIhDUEDDAILIAdBMGpBAEGAIPwLACAHQbAgakEAQYAg/AsAIAJBAXYLIQ1BBAshFgJAAkACQCANBEAgDUEIdiANQf8BcUEAR2oiBEEBayIFQQAgBCAFTxshBiABIRcgASEYIAEhDCABIQ5BgAIhGgNAIAYhHyAWIA0gGiANIBpJGyITIBRBCHRrIghsIhVB//8DcUEDbiEGIBYgEyAgamxB//8DcUEDbiEEAkACQAJAAkAgDSAPQYACaiIFIAUgDUsbIhAgD2siGyAWbCILQYEISQRAIBNBAnQhHCAWIBMgIWoiHWwhCQJAAkACQAJAAkACQAJAIANB/wFxQQFrDgMBBQIACyAQQQNsIgQgD0EDbCIFTyACIARPcQ0CIAUgBCACQfi8xAAQ6gcACyAQQQJ0IgQgD0ECdCIFTyACIARPcQ0CIAUgBCACQYi9xAAQ6gcACyAQQQF0IgUgD0EBdCIKTyACIAVPcQ0DIAogBSACQdi9xAAQ6gcACyALIAQgBWsiBSAFIAtLG0UNByAJICIgE0EDbCIEaiIFIAUgCUsbIQpBACEGIBUgFEGAemwgBGoiBSAFIBVLGyIJQQRPBEAgCkF8cSEIIAlBfHEhBiAHQTBqIQQgFyEFA0AgBCAF/VwAAP2JAf2pAf37Af0MgYCAO4GAgDuBgIA7gYCAO/3mAf0LAgAgBUEEaiEFIARBEGohBCAIQQRrIggNAAsgBiAJRg0ICyAHQTBqIAZBAnRqIQQDQCAEIAYgF2otAACzQ4GAgDuUOAIAIARBBGohBCAKIAZBAWoiBkcNAAsMBwsgCyAEIAVrIgUgBSALSxtFDQYgCSAZIBxqIgUgBSAJSxshCkEAIQYgFSAcIBRBCnRrIgUgBSAVSxsiCUEETwRAIApBfHEhCCAJQXxxIQYgB0EwaiEEIBghBQNAIAQgBf1cAAD9iQH9qQH9+wH9DIGAgDuBgIA7gYCAO4GAgDv95gH9CwIAIAVBBGohBSAEQRBqIQQgCEEEayIIDQALIAYgCUYNBwsgB0EwaiAGQQJ0aiEEA0AgBCAGIBhqLQAAs0OBgIA7lDgCACAEQQRqIQQgCiAGQQFqIgZHDQALDAYLIA8gEEsNAiALQf//A3FBA24iBSAbIAUgG0kbRQ0FIAQgHSAEIB1JGyEKQQAhBCAGIAggBiAISRsiCUEETwRAIApB/P8BcSEIIAlB/P8BcSEEIAdBMGohBiAMIQUDQCAGIAX9XAAA/YkB/akB/fsB/QyBgIA7gYCAO4GAgDuBgIA7/eYBIiUgJf0NCAkKCwwNDg8MDQ4PDA0OD/0LAiAgBiAlICX9DQQFBgcEBQYHCAkKCwgJCgv9CwIQIAYgJSAl/Q0AAQIDAAECAwABAgMEBQYH/QsCACAFQQRqIQUgBkEwaiEGIAhBBGsiCA0ACyAEIAlGDQYLIAdBMGogBEEMbGohBgNAIAZBCGogBCAMai0AALNDgYCAO5QiJDgCACAGQQRqICQ4AgAgBiAkOAIAIAZBDGohBiAKIARBAWoiBEcNAAsMBQsgC0ECdiIEIAUgCmtBAXYiBSAEIAVJG0UNBEEAIQUgFUECdiIGIBNBAXQiCCAUQQl0a0EBdiIEIAQgBksbIgZBAUYNAyAJQQJ2IgQgCCAjakEBdiIFIAQgBUkbQf7///8DcSEJIAZBAXEhCEEAIQUgB0EwaiEGIA4hBANAIAYgBP1cAAD9iQH9qQH9+wH9DIGAgDuBgIA7gYCAO4GAgDv95gEiJSAl/Q0ICQoLCAkKCwgJCgsMDQ4P/QsCECAGICUgJf0NAAECAwABAgMAAQIDBAUGB/0LAgAgBEEEaiEEIAZBIGohBiAJIAVBAmoiBUcNAAsMAgtBACALQYAIQei9xAAQ6gcACyAPIBAgAkGYvcQAEOoHAAsgCEUNAQsgB0EwaiAFQQR0aiIEIAEgCmogBUEBdGoiBS0AALNDgYCAO5QiJDgCCCAEICQ4AgQgBCAkOAIAIAQgBS0AAbNDgYCAO5Q4AgwLAn8gHkUEQCAbQQJ0IgQgC0sNBSAHQTBqDAELIAtB//8DcUEDbiEFAkAgC0EDSQ0AQYACIAUgBUGAAk8bIQlBASEFIAdBsCBqIQYgB0EwaiEEA0AgBiAEKgIAOAIAIAZBDGpBgICA/AM2AgAgBkEEaiAEQQRqKQIANwIAIAUgHUYNASAEQQxqIQQgBkEQaiEGIAUgCUkgBUEBaiEFDQALCyAbQQJ0IgRBgQhPDQMgB0GwIGoLIQYgEEECdCIIIBFLIAggD0ECdCIFSXINBCAIIAVrIgUgBCAEIAVLGwRAQQAgHGshBSASIQQDQCAEQf8BIAYqAgBDAAB/Q5QQuQciJPwBQQAgJEMAAAAAYBsgJEMAAH9DXhs6AAAgBEEBakH/ASAGQQRqKgIAQwAAf0OUELkHIiT8AUEAICRDAAAAAGAbICRDAAB/Q14bOgAAIARBAmohBCAGQQhqIQYgGSAFQQJqIgVHDQALCyASQYAIaiESIBdBgAZqIRcgIkGABmshIiAYQYAIaiEYIBlBgAhrIRkgDEGAAmohDCAgQYACayEgICNBgARrISMgIUGAAmshISAOQYAEaiEOIBRBAWohFCAfQQFrIQYgGiIPQYACaiEaIB8NAAsLIAAgBykDCDcCACAAQQhqIAdBEGooAgA2AgAMBgtBACAEQYAIQai9xAAQ6gcAC0EAIAQgC0HIvcQAEOoHAAsgBSAIIBFBuL3EABDqBwALQfi9xABBxQBBwL7EABDrBwALIAcCfwJAIAIgDEsEQCAHQSRqQQAgAhDvBSAHKAIoIQggBygCLCEGDAELQQAgAkUNARoLIAIEQCAGIAhqIAEgAvwKAAALIAIgBmoLNgIsCyAHQSBqIAdBLGooAgAiATYCACAHIAcpAiQiJjcDGCAAQQhqIAE2AgAgACAmNwIACyAHQbDAAGokAAuOHgINfwF+IwBBsAFrIgIkACABKAIMIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIUIgQgASgCECIGSQRAIAFBDGohBQNAAkACQCAEIAdqLQAAIgNBCWsOJQEBCwsBCwsLCwsLCwsLCwsLCwsLCwsLAQsICwsLCwsLCwsLCwcACyADQdsAaw4hCAoKCgoKCgoKCgoFCgoKCgoKCgMKCgoKCgQKCgoKCgoJCgsgASAEQQFqIgQ2AhQgBCAGRw0ACyAGIQQLIAJBCGogByAGIARBAWoiASAGIAEgBkkbEPkBIAIoAgwhAyACKAIIIQVBFBBxIgFFDRsgASAFNgIMIAFBBTYCACAAIAE2AgQgAEGVgICAeDYCACABIAM2AhAMGgsgASAEQQFqIgU2AhQCQCAFIAZPDQAgASAEQQJqIgM2AhQgBSAHai0AAEH1AEcNGCADIAUgBiAFIAZLGyIFRg0AIAEgBEEDaiIJNgIUIAMgB2otAABB7ABHBEAgCSEDDBkLIAUgCUYNACABIARBBGoiAzYCFCAHIAlqLQAAQewARw0YIABCkoCAgAg3AwAMGgsgAkEQaiAHIAYgBRD5ASACKAIUIQEgAigCECEDQRQQcSIERQ0aIARBBTYCAAwYCyABIARBAWoiBTYCFAJAIAUgBk8NACABIARBAmoiAzYCFCAFIAdqLQAAQfIARw0VIAMgBSAGIAUgBksbIgVGDQAgASAEQQNqIgk2AhQgAyAHai0AAEH1AEcEQCAJIQMMFgsgBSAJRg0AIAEgBEEEaiIDNgIUIAcgCWotAABB5QBHDRUgAEKAgICAGDcDAAwZCyACQSBqIAcgBiAFEPkBIAIoAiQhASACKAIgIQNBFBBxIgRFDRkgBEEFNgIADBULIAEgBEEBaiIFNgIUAkAgBSAGTw0AIAEgBEECaiIDNgIUIAUgB2otAABB4QBHDRIgAyAFIAYgBSAGSxsiBUYNACABIARBA2oiCTYCFCADIAdqLQAAQewARwRAIAkhAwwTCyAFIAlGDQAgASAEQQRqIgg2AhQgByAJai0AAEHzAEcEQCAIIQMMEwsgBSAIRg0AIAEgBEEFaiIDNgIUIAcgCGotAABB5QBHDRIgAEKAgICACDcDAAwYCyACQTBqIAcgBiAFEPkBIAIoAjQhASACKAIwIQNBFBBxIgRFDRggBEEFNgIADBILIAEgBEEBajYCFCACQeAAaiABQQAQxwMgAikDYCIPQgNRDQ8gACACKQNoNwMIIABBADYCBCAAIA+nQQJ0KALM60E2AgAMFgsgAUEANgIIIAEgBEEBajYCFCACQeAAaiAFIAEQggIgAigCZCEFIAIoAmAiA0ECRg0NIAIoAmghASADQQFxRQ0EIAFBAEgNAwJAIAFFBEBBASEDDAELIAEQcSIDRQ0XCyABBEAgAyAFIAH8CgAACyAAIAE2AgwgACADNgIIIAAgATYCBCAAQYyAgIB4NgIADBULIAEgAS0AGEEBayIFOgAYIARBAWohAyAFQf8BcUUNCyABIAM2AhQgAkEBOgCUASACIAE2ApABIAJCgICAgIABNwKgAUEAIQRBCCEDQQghBgJAA0ACQCACIAQ2AqgBIAJB4ABqIAJBkAFqEJ8DAkACQCACLQBgQQFGBEAgAigCZCEFDAELIAItAGFBAUcNAiACQeAAaiACKAKQARCCASACKAJkIQUgAigCYCIMQZWAgIB4Rw0BCyACKAKkASEGIAQEQCAGIQMDQCADEP4CIANBEGohAyAEQQFrIgQNAAsLQZWAgIB4IQRBASEJIAIoAqABIgNFDQMgBkEEaygCACIIQXhxIgcgA0EEdCIDQQRBCCAIQQNxIggbckkNCCAIQQAgByADQSdqSxsNCSAGEKICDAMLIAIpA2ghDyACKAKgASAERgRAIwBBIGsiBiQAAkACQCACQaABaiIIKAIAIgdB////P0sNAEEEIAdBAXQiDSANQQRNGyINQQR0Ig5B+P///wdLDQAgBiAHBH8gBiAHQQR0NgIcIAYgCCgCBDYCFEEIBUEACzYCGCAGQQhqQQggDiAGQRRqEIUHIAYoAghBAUcNASAGKAIQIQogBigCDCELCyALIApBxKLBABCTCQALIAYoAgwhByAIIA02AgAgCCAHNgIEIAZBIGokACACKAKkASEGCyADIAZqIgggDzcCACAIQQRrIAU2AgAgCEEIayAMNgIAIANBEGohAyAEQQFqIQQMAQsLQZSAgIB4IQQgAikCpAEhDyACKAKgASEFCyABIAEtABhBAWo6ABggAiABELoDIgM2AnAgAiAPNwNoIAIgBTYCZCACIAQ2AmACQAJAIAlFBEAgAw0BIA9CIIinIQMgD6chCQwMC0GVgICAeCEEIANFDQEgAkHwAGoQsQQMAQsgAkHgAGoQ/gJBlYCAgHghBCADIQULDAkLIAEgAS0AGEEBayIFOgAYIARBAWohAyAFQf8BcUUNByABIAM2AhQgAkEBOgCAASACIAE2AnwgAkEANgKMASACQoCAgICAATcChAFBCCEFA0AgAkHgAGogAkH8AGoQ0QICQAJAIAItAGBBAUYEQCACKAJkIQYMAQsgAi0AYUUEQCAJrSEPIAIoAoQBIQQMCgsgAigCfCIIQQA2AgggCCAIKAIUQQFqNgIUIAJB4ABqIAhBDGogCBCCAiACKAJkIQYgAigCYCIDQQJGDQAgAigCaCEEAn8gA0EBcQRAIARBAEgNCgJAIARFBEBBASEDDAELIAQQcSIDRQ0aCyAEBEAgAyAGIAT8CgAACyAEIQZBjICAgHgMAQsgBCEDQY2AgIB4CyELIAIgBDYCrAEgAiADNgKoASACIAY2AqQBIAIgCzYCoAEgCCgCDCEHAkACQAJAIAgoAhQiBCAIKAIQIgNJBEADQAJAIAQgB2otAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEAwsgCCAEQQFqIgQ2AhQgAyAERw0ACyADIQQLIAJB2ABqIAcgAyAEQQFqIgUgAyADIAVLGxD5ASACKAJcIQMgAigCWCEFQRQQcSIGRQ0aIAYgBTYCDCAGQQM2AgAgBiADNgIQDAILIAJB0ABqIAcgAyAEQQFqIgUgAyADIAVLGxD5ASACKAJUIQMgAigCUCEFQRQQcSIGRQ0ZIAYgBTYCDCAGQQY2AgAgBiADNgIQDAELIAggBEEBajYCFCACQeAAaiAIEIIBIAIoAmBBlYCAgHhHDQIgAigCZCEGCyACQaABahD+AgsgAigCiAEhAyAJBEAgAyEEA0AgBBD+AiAEQRBqEP4CIARBIGohBCAJQQFrIgkNAAsLQZWAgIB4IQQgAigChAEiBUUEQCAGIQUMCQsgAyAFQQV0QQgQogcgBiEFDAgLIAIgAv0AA2D9CwOQASACKQOoASEPIAIoAoQBIAlGBEBBACEIQQAhByMAQSBrIgMkAAJAAkAgAkGEAWoiBSgCACIEQf///x9LDQBBBCAEQQF0IgogCkEETRsiCkEFdCIMQfj///8HSw0AIAMgBAR/IAMgBEEFdDYCHCADIAUoAgQ2AhRBCAVBAAs2AhggA0EIakEIIAwgA0EUahCFByADKAIIQQFHDQEgAygCECEHIAMoAgwhCAsgCCAHQbSiwQAQkwkACyADKAIMIQQgBSAKNgIAIAUgBDYCBCADQSBqJAAgAigCiAEhBQsgBSAJQQV0aiIDIA83AgggAyAGNgIEIAMgCzYCACADIAL9AAOQAf0LAhAgAiAJQQFqIgk2AowBDAALAAsgA0Ewa0H/AXFBCk8EQCACIAcgBiAEQQFqIgMgBiADIAZJGxD5ASACKAIEIQMgAigCACEEQRQQcSIFRQ0UIAUgBDYCDCAFQQo2AgAgBSADNgIQDAkLIAJB4ABqIAFBARDHAyACKQNgIg9CA1EEQCAAIAIoAmg2AgQgAEGVgICAeDYCAAwTCyAAIAIpA2g3AwggAEEANgIEIAAgD6dBAnQoAszrQTYCAAwSC0HYmsgAEP8HAAsgACABNgIIIAAgBTYCBCAAQY2AgIB4NgIADBALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HYmsgAEP8HAAsgASABLQAYQQFqOgAYIAIgARDiBCIDNgJwIAIgBTYCZCACIAQ2AmAgAiAPNwNoAkACQCAEQZWAgIB4RwRAIAMNASAPQiCIpyEDIA+nIQkMBAsgAw0BQZWAgIB4IQQgD6chCQwDCyACQeAAahD+AkGVgICAeCEEIAMhBSAPpyEJDAILIAJB8ABqELEEQZWAgIB4IQQgD6chCQwBCyACQcgAaiAHIAYgAyAGIAMgBkkbEPkBIAIoAkwhAyACKAJIIQVBFBBxIgFFDQwgASAFNgIMIAFBGDYCACAAIAE2AgQgAEGVgICAeDYCACABIAM2AhAMCwsgBEGVgICAeEYNACAAIAM2AgwgACAJNgIIIAAgBTYCBCAAIAQ2AgAMCgsgBSABEOsFIQEgAEGVgICAeDYCACAAIAE2AgQMCQsgAkFAayAHIAYgAyAGIAMgBkkbEPkBIAIoAkQhAyACKAJAIQVBFBBxIgFFDQkgASAFNgIMIAFBGDYCACAAIAE2AgQgAEGVgICAeDYCACABIAM2AhAMCAsgAEGVgICAeDYCACAAIAU2AgQMBwsgACACKAJoNgIEIABBlYCAgHg2AgAMBgsgAkE4aiAHIAYgAxD5ASACKAI8IQEgAigCOCEDQRQQcSIERQ0GIARBCTYCAAsgBCADNgIMIAAgBDYCBCAAQZWAgIB4NgIAIAQgATYCEAwECyACQShqIAcgBiADEPkBIAIoAiwhASACKAIoIQNBFBBxIgRFDQQgBEEJNgIACyAEIAM2AgwgACAENgIEIABBlYCAgHg2AgAgBCABNgIQDAILIAJBGGogByAGIAMQ+QEgAigCHCEBIAIoAhghA0EUEHEiBEUNAiAEQQk2AgALIAQgAzYCDCAAIAQ2AgQgAEGVgICAeDYCACAEIAE2AhALIAJBsAFqJAAPCwAL2xoDE38GfQF+IwBBsAFrIgIkAAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAhQiAyABKAIQIgRJBEAgASgCDCEGAn4CQANAIAMgBmotAAAiBUEJayIHQRdLQQEgB3RBk4CABHFFcg0BIAEgA0EBaiIDNgIUIAMgBEcNAAsgBCEDQgAMAQtCgAILIAWtQhCGhEKAgrgDUQ0BCwJAIAJBKGogASgCDCIHIAQgAyAESQR/A0AgAyAHai0AACIIQQlrIgVBF0tBASAFdEGTgIAEcUVyDQIgASADQQFqIgM2AhQgAyAERw0ACyAEBSADC0EBaiIBIAQgASAESRsQ+QEgAigCLCEBIAIoAighBEEUEHEiAw0CDBALAkAgCEHbAEcEQCAIQfsARg0BIAEgAkGvAWpBmMHBABDuASEFDA4LIAEgAS0AGEEBayIFOgAYIANBAWohAyAFQf8BcUUNCyABIAM2AhQgAiABNgKkASACQQE6AKgBIAJB5ABqIAJBpAFqEJ8DIAItAGRBAUYEQCACKAJoIQRBAiEDDAoLAkACQAJAAkACQAJAAkACQAJAAkACQCACLQBlQQFGBEAgAkHkAGogAigCpAEQ0gIgAigCZCIFQQJGBEAgAigCaCEEQQIhAwwWCyACKAJoIQ8gAkHkAGogAkGkAWoQnwMgAi0AZEEBRgRAIAIoAmghBEECIQMMFgsgAi0AZUEBRw0CIAJB5ABqIAIoAqQBENICIAIoAmQiB0ECRw0BIAIoAmghBEECIQMMFQtBAEGMg8EAQYD9wAAQ2wYhBEECIQMMFAsgAioCaCEVIAJB5ABqIAJBpAFqEJ8DIAItAGRBAUYEQCACKAJoIQRBAiEDDBQLIAItAGVBAUcNAiACQeQAaiACKAKkARDSAiACKAJkIghBAkcNASACKAJoIQRBAiEDDBMLQQFBjIPBAEGA/cAAENsGIQRBAiEDDBILIAIqAmghFiACQeQAaiACQaQBahCfAyACLQBkQQFGBEAgAigCaCEEQQIhAwwSCyACLQBlQQFHDQIgAkHkAGogAigCpAEQ0gIgAigCZCIQQQJHDQEgAigCaCEEQQIhAwwRC0ECQYyDwQBBgP3AABDbBiEEQQIhAwwQCyACKgJoIRcgAkHkAGogAkGkAWoQnwMgAi0AZEEBRgRAIAIoAmghBEECIQMMEAsgAi0AZUEBRw0CIAJB5ABqIAIoAqQBENICIAIoAmQiEUECRw0BIAIoAmghBEECIQMMDwtBA0GMg8EAQYD9wAAQ2wYhBEECIQMMDgsgAioCaCEYIAJB5ABqIAJBpAFqEJ8DIAItAGRBAUYEQCACKAJoIQRBAiEDDA4LIAItAGVBAUcNASACQeQAaiACKAKkARDSAkECIQMgAigCZCISQQJGBEAgAigCaCEEDA4LIAIoAmghCiACQeQAaiACQaQBahDHBiACKAJoIQQgAigCZCILQQJrDgICDQMLQQRBjIPBAEGA/cAAENsGIQRBAiEDDAwLQQVBjIPBAEGA/cAAENsGIQRBAiEDDAsLQQZBjIPBAEGA/cAAENsGIQQMCgsgAkHkAGohCSMAQRBrIgYkACAGQQhqIAJBpAFqIgwQnwMCQCAGLQAIQQFGBEAgCSAGKAIMNgIEIAlBAToAAAwBCyAGLQAJRQRAIAlBgAY7AQAMAQsgBkEIaiAMKAIAEIECIAYtAAhBAUYEQCAJIAYoAgw2AgQgCUEBOgAADAELIAkgBi0ACToAASAJQQA6AAALIAZBEGokACACLQBkDQggAi0AZSITQQNHBEAgBCEUIA8hBCAFIQMMCgtBB0GMg8EAQYD9wAAQ2wYhBAwJCyABIAEtABhBAWsiBToAGCADQQFqIQMgBUH/AXFFDQYgASADNgIUIAJBAToAqAEgAiABNgKkAUEDIQZBAiEJQQIhDEECIQ1BAiELQQIhBUECIQ5BAiEKAn8CQANAAkAgAkHkAGoiBCACQaQBahDRAiACLQBkQQFGDQAgAi0AZUEBRw0GIAIoAqQBIgNBADYCCCADIAMoAhRBAWo2AhQgBCADQQxqIAMQggIgAigCaCEEIAIoAmRBAkYNAgJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJsQQZrDgUAAwMDAQMLIARB4OrAAEEGENsHRQ0DIARB5urAAEEGENsHDQEgDkECRg0EQebqwABBBhCfByEEQQIMDgsgBEHs6sAAQQoQ2wdFDQQgBEH26sAAQQoQ2wdFDQUgBEGS68AAQQoQ2wcNASAGQQNGDQlBkuvAAEEKEJ8HIQRBAgwNCyAEQYDrwABBBhDbB0UNBSAEQYbrwABBBhDbB0UNBiAEQYzrwABBBhDbB0UNBwsgAxCgASIERQ0JDAoLIApBAkcEQEHg6sAAQQYQnwchBEECDAsLIAJB5ABqIAMQsAVBAiEDIAIoAmgiDyEEIAIoAmQiCkECRw0IDBALIAJB5ABqIAMQsAVBAiEDIAIoAmgiBL4hFyACKAJkIg5BAkcNBwwPCyAFQQJHBEBB7OrAAEEKEJ8HIQRBAgwJCyACQeQAaiADELAFQQIhAyACKAJoIgS+IRUgAigCZCIFQQJHDQYMDgsgC0ECRwRAQfbqwABBChCfByEEQQIMCAsgAkHkAGogAxCwBUECIQMgAigCaCIEviEWIAIoAmQiC0ECRw0FDA0LIA1BAkcEQEGA68AAQQYQnwchBEECDAcLIAJB5ABqIAMQsAVBAiEDIAIoAmgiBL4hGCACKAJkIg1BAkcNBAwMCyAMQQJHBEBBhuvAAEEGEJ8HIQRBAgwGCyACQeQAaiADELAFQQIhAyACKAJoIgS+IRkgAigCZCIMQQJHDQMMCwsgCUECRwRAQYzrwABBBhCfByEEQQIMBQsgAkHkAGogAxCwBUECIQMgAigCaCIEviEaIAIoAmQiCUECRw0CDAoLIAJB5ABqIAMQrAUgAi0AZSEGIAItAGRBAUcNAQsLIAIoAmghBAtBAgshAwwFCyABIANBAWoiBTYCFAJAIAQgBU0NACABIANBAmoiCDYCFCAFIAZqLQAAQfUARw0DIAggBSAEIAQgBUkbIgVGDQAgASADQQNqIgc2AhQgBiAIai0AAEHsAEcEQCAHIQgMBAsgBSAHRg0AIAEgA0EEaiIINgIUIAYgB2otAABB7ABHDQMgAEECNgIADA4LIAJBCGogBiAEIAUQ+QEgAigCDCEBIAIoAgghBEEUEHEiA0UNDiADQQU2AgAMAwsgAyAENgIMIANBBTYCACADIAE2AhAMCwsgCkEAIApBAkcbIQMgCUEAIAlBAkcbIRMgDEEAIAxBAkcbIRIgDUEAIA1BAkcbIQcgC0EAIAtBAkcbIQggBUEAIAVBAkcbIRAgDkEAIA5BAkcbIRFBAiAGIAZBA0YbIRQgDyEEDAILIAJBEGogBiAEIAgQ+QEgAigCFCEBIAIoAhAhBEEUEHEiA0UNCyADQQk2AgALIAMgBDYCDCAAIAM2AgQgAEEDNgIAIAMgATYCEAwJCyABIAEtABhBAWo6ABggAiABEOIEIgU2AqABIAIgFDoAnAEgAiAaOAKYASACIBM2ApQBIAIgGTgCkAEgAiASNgKMASACIBg4AogBIAIgBzYChAEgAiAWOAKAASACIAg2AnwgAiAVOAJ4IAIgEDYCdCACIBc4AnAgAiARNgJsIAIgBDYCaCACIAM2AmRBAiEHIANBAkcEQCAFDQQgAkHgAGogAkHsAGoiBUEwaigCADYCACACQdAAaiAFQSBq/QACAP0LAwAgAkFAayAFQRBq/QACAP0LAwAgAiAF/QACAP0LAzAgAyEHIAQhBQwECyAFRQRAIAQhBQwECyACQaABahCxBCAEIQUMAwsgAkEgaiAHIAQgAyAEIAMgBEkbEPkBIAIoAiAhBCACKAIkDAQLIAIoAmghBAsgASABLQAYQQFqOgAYIAIgARC6AyIFNgKgASACIBM6AJwBIAIgFDYCmAEgAiALNgKUASACIAo2ApABIAIgEjYCjAEgAiAYOAKIASACIBE2AoQBIAIgFzgCgAEgAiAQNgJ8IAIgFjgCeCACIAg2AnQgAiAVOAJwIAIgBzYCbCACIAQ2AmggAiADNgJkQQIhBwJAIANBAkcEQCAFDQIgAkHgAGogAkHsAGoiBUEwaigCADYCACACQdAAaiAFQSBq/QACAP0LAwAgAkFAayAFQRBq/QACAP0LAwAgAiAF/QACAP0LAzAgAyEHDAELIAVFDQAgAkGgAWoQsQQLIAQhBQsgB0ECRg0CIAAgAv0AAzD9CwIIIABBOGogAkHgAGooAgA2AgAgAEEoaiACQdAAav0AAwD9CwIAIABBGGogAkFAa/0AAwD9CwIAIAAgBTYCBCAAIAc2AgAMBAsgAkEYaiAHIAQgAyAEIAMgBEkbEPkBIAIoAhghBCACKAIcCyEBQRQQcSIDRQ0DIAMgBDYCDCADQRg2AgAgAyABNgIQDAELIAUgARDrBSEDCyAAQQM2AgAgACADNgIECyACQbABaiQADwsAC88XAyR/A30BeyMAQcACayIEJAACeyADLQAcIgVBAkYEQEMAAIA/IShBACEFQwAAgD8hKUMAAIA/ISr9DAAAAAAAAIA/AABAwQAAEEEMAQsgBEHiAWogA0Efai0AADoAACAEIAMvAB07AeABIAMqAhghKCADKgIUISkgAyoCECEqIAP9AAIACyErIARBABC2CTYCsAEgBEEANgKsASAEQgA3AqQBIARBADYCXCAEQoCAgIDAADcCVCAEQgQ3AkwgBEIANwJEIARCgICAgMAANwI8IARBADYCLCAEQQA2AiQgBEEANgIcIARBADYCFCAEQQA2AgwgBEEANgIEIARBADYCNCAEQYCAgIB4NgJsIARBgICAgHg2AnggBCAr/QsChAEgBCAqOAKUASAEICk4ApgBIAQgKDgCnAEgBCAFOgCgASAEQbwBakEAOgAAIARBowFqIARB4gFqLQAAOgAAIARBADYCaCAEQoCAgIDAADcCYCAEQgA3ArQBIAQgBC8B4AE7AKEBIAEoAjwhEyAEIAI6AOgBIAQgEzYC5AEgBCABKAIIIgg2AuABIARBBGogBEHgAWoQpQQgAgRAIARBAToAoAELAkACQAJAAkBBgIAwEHEiEEUNACAQQQRrIh0tAABBA3EEQCAQQQBBgIAw/AsAC0GAgBAQcSIJRQ0AIAlBBGsiHi0AAEEDcQRAIAlBAEGAgBD8CwALQYCAMBBxIhFFDQAgEUEEayIfLQAAQQNxBEAgEUEAQYCAMPwLAAtBgIAwEHEiEkUNACASQQRrIiAtAABBA3EEQCASQQBBgIAw/AsAC0GAgMAAEHEiC0UNACALQQRrIiEtAABBA3EEQCALQQBBgIDAAPwLAAtBgIAIEHEiDEUNACAMQQRrIiItAABBA3EEQCAMQQBBgIAI/AsAC0GAgBAQcSINRQ0AIA1BBGsiIygCACIFQQNxIgMEQCANQQBBgIAQ/AsACyAIBEAgDEECIAIbISQgDUEEIAIbISVBgIAEQQAgAhshGyABKAIQISYgASgCFCEcIAEoAgQhJwNAQYCABCAIIA5rIgMgA0GAgARPGyEUIAggDkcEQCAnIA5BJGxqIQMgJiAOQRhsaiEGQQAhFSAJIRZBACEFIA0hFyALIRggDCEZA0AgCCAOIBVqIhpNBEAgGiAIQdTAxwAQjAcACyADQRBqKgIAISggA0EMaioCACEpIANBCGoqAgAhKiAEQcABaiADEKQDIARB0AFqIAMQmgMgBEHgAWogAykCABDLAiAE/QAE4AEhKyAFIBBqIgogKjgCACAFIBFqIgcgBCoCwAE4AgAgBSASaiIPIAQqAtABOAIAIApBBGogKTgCACAHQQRqIAQqAsQBOAIAIA9BBGogBCoC1AE4AgAgCkEIaiAoOAIAIAdBCGogBCoCyAE4AgAgD0EIaiAEKgLYATgCACAYICv9CwIAIBYCfyADQRRqLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQogB0GAgAJxIQ8gB0GA+AFxIgdBgPgBRgRAIA9BEHQhByAHQYCAgPwHciAKRQ0BGiAHIApBDXRyQYCAgP4HcgwBCyAPQRB0IQ8gB0ENdEGAgID8AHEgCkENdHJBgICAwANqIA9yIAcNABogD0GAgIDYA3IgCmdBEGsiB0EXdGsgCiAHQf//A3FBCGp0Qf///wNxcgs2AgAgAgRAAn8CQCAaIBxJBEACfyAGQRRqKAIAIgpBBEsEQCAGQQRqKAIAIQogBkEIaigCAAwBCyAGQQRqCyEHIAoNAUEAIQpBAAwCCyAaIBxBxMDHABCMBwwHCyAHKAIACyEHIBkgCjsBACAXIAc2AgALIANBJGohAyAGQRhqIQYgFkEEaiEWIAVBDGohBSAXQQRqIRcgGEEQaiEYIBlBAmohGSAVQQFqIhUgFEkNAAsLIAQgGzYCrAIgBCAlNgKoAiAEIBs2AqQCIAQgJDYCoAIgBEEANgKcAiAEQoCAgIDAADcClAIgBEKAgICAwAA3AowCIARCgICQgMAANwKEAiAEIAs2AoACIARBgIAMNgL8ASAEIBI2AvgBIARBgIAMNgL0ASAEIBE2AvABIARBgIAENgLsASAEIAk2AugBIARBgIAMNgLkASAEIBA2AuABIARBBGogDiAUIARB4AFqEJcBIA4gFGoiDiAISQ0ACyAjKAIAIgVBA3EhAwsCQAJAIAVBeHFBhIAQQYiAECADG08EQCADQQAgBUGogBBPGw0GIA0QogIgIigCACICQXhxQYSACEGIgAggAkEDcSIDG0kNBSADQQAgAkGogAhPGw0GIAwQogIgISgCACICQXhxQYSAwABBiIDAACACQQNxIgMbSQ0FIANBACACQaiAwABPGw0GIAsQogIgICgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBIQogIgHygCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBEQogIgHigCACICQXhxQYSAEEGIgBAgAkEDcSIDG0kNBSADQQAgAkGogBBPGw0GIAkQogIgHSgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBAQogIgE0UNBEGAgJABEHEiAkUNAyACQQRrIgsoAgAiBUEDcSIDBEAgAkEAQYCAkAH8CwALIAhFDQIgASgCICEMIAEoAhwhDUEAIQYDQEGAgAQgCCAGayIDIANBgIAETxshCSAGIAhHBEBBACEFIAIhAwNAIARB4AFqIA0gDCAFIAZqELwBIAMgBP0ABOAB/QsCACADQRBqIAT9AATwAf0LAgAgA0EgaiAEKgKAAjgCACADQSRqIQMgBUEBaiIFIAlJDQALCyAEQQRqIAYgCSACQYCAJBDOAyAIIAYgCWoiBksNAAsMAQsMBAsgCygCACIFQQNxIQMLAkAgBUF4cUGEgJABQYiAkAEgAxtPBEAgA0EAIAVBqICQAU8bDQUgAhCiAiATQQFGDQNBgIDwARBxIgJFDQIgAkEEayILKAIAIgVBA3EiAwRAIAJBAEGAgPAB/AsACyAIBEAgASgCLCEMIAEoAighDUEAIQYDQEGAgAQgCCAGayIDIANBgIAETxshCSAGIAhHBEBBACEFIAIhAwNAIARB4AFqIA0gDCAFIAZqEIsBIAMgBP0ABOAB/QsCACADQRBqIAT9AATwAf0LAgAgA0EgaiAE/QAEgAL9CwIAIANBMGogBCoCkAI4AgAgA0E0aiAEKQKUAjcCACADQTxqIQMgBUEBaiIFIAlJDQALCyAEQQRqIAYgCSACQYCAPBDiAyAGIAlqIgYgCEkNAAsgCygCACIFQQNxIQMLIAVBeHFBhIDwAUGIgPABIAMbSQ0EIANBACAFQaiA8AFPGw0FIAIQogIgE0ECTQ0DQYCA0AIQcSICRQ0CIAJBBGsiCSgCACIFQQNxIgMEQCACQQBBgIDQAvwLAAsgCARAIAEoAjghCyABKAI0IQxBACEGA0BBgIAEIAggBmsiASABQYCABE8bIQEgBiAIRwRAQQAhBSACIQMDQCAEQeABaiAMIAsgBSAGahBsIAMgBP0ABOAB/QsCACADQRBqIAT9AATwAf0LAgAgA0EgaiAE/QAEgAL9CwIAIANBMGogBP0ABJAC/QsCACADQUBrIAT9AASgAv0LAgAgA0HQAGogBCoCsAI4AgAgA0HUAGohAyAFQQFqIgUgAUkNAAsLIARBBGogBiABIAJBgIDUABDjAyABIAZqIgYgCEkNAAsgCSgCACIFQQNxIQMLIAVBeHFBhIDQAkGIgNACIAMbSQ0EIANBACAFQaiA0AJPGw0BIAIQogIMAwsMAwsMAwsACwJAIARBBGoiAhCjASIBBEAgAEECNgIAIAAgATYCBCACEMACDAELIAAgBEEEakG8AfwKAAALIARBwAJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvlFQMRfwF+AW8jAEHgBmsiASQAIAFBoAFqIgcgAiADKAIMEQEAAkACQAJAAkACQAJAIAEpA6ABQsvTs7K7k+HLQoUgASkDqAFC7b+ClN2syJ2df4WEUARAIAFBMGogAkHwAPwKAAAgASgClAEiA0UNASAHIAMgASgCmAEiEigCDCIIEQEAAkACQAJAAkACQCABKQOgAUKf0/elq5SA065/hSABKQOoAUKQkPj2grmEnmyFhFBFBEAgByADIAgRAQAgASkDoAFChq+1jMLkqv4xhSABKQOoAUKbq7TXwZS/hYZ/hYRQDQEgByADIAgRAQAgASkDoAFCx5uZ88LP+aS8f4UgASkDqAFC7sKNnfXyzrRehYRQDQIgByADIAgRAQAgASkDoAFC/pXph6aw4PvMAIUgASkDqAFC1cSH6oL5y8Z7hYRQDQMgByADIAgRAQAgASkDoAFC07aF9P3V/p5VhSABKQOoAUKw3b+ylJ6K/Q2FhFANBCAHIAMgCBEBACABKQOgAUKR3taAjqSFsp9/hSABKQOoAUKAxNGW34qexvsAhYRQIhMNBSABQQA2ArABIAFBATYCpAEgAUHU4MEANgKgASABQgQ3AqgBIAdB3ODBABCNCAALIAFBoAFqIANBuAX8CgAAIAFBEGogA0Ecav0AAgD9CwMAIAFBIGogA0Esav0AAgD9CwMAIAEgA/0AAgz9CwMAIAMoAjwhByADKAIIIQggAykDACEVIAEoAsgGIgQEQCABKALMBiIFQQRrKAIAIgZBeHEiCUEEQQggBkEDcSIGGyAEakkNDCAGQQAgCSAEQSdqSxsNCyAFEKICCyABQeABaiEEAkACQAJAIAEoArwGQYCAgIB4aw4CAQIACyAEEL4CDAELIAQQvQELIANBBGsoAgAiBEF4cUG8BUHABSAEQQNxIgUbSQ0LIAVFDQggBEHgBU8NCgwICyABQRBqIANBHGr9AAIA/QsDACABQSBqIANBLGr9AAIA/QsDACABIAP9AAIM/QsDACADKAKAASEJIAMoAnwhDSADKAJ0IQ4gAygCcCELIAMoAmghEiADKAJkIQQgAygCXCETIAMoAlghBSADKAJQIQwgAygCTCEGIAMoAjwhByADKAIIIQggAykCACEVIAMoAkAiCgRAIAMoAkQiD0EEaygCACIQQXhxIhFBBEEIIBBBA3EiEBsgCmpJDQsgEEEAIBEgCkEnaksbDQogDxCiAgsgBgRAIAxBBGsoAgAiCkF4cSIPQQRBCCAKQQNxIgobIAZqSQ0LIApBACAPIAZBJ2pLGw0KIAwQogILIAUEQCATQQRrKAIAIgZBeHEiDEEEQQggBkEDcSIGGyAFakkNCyAGQQAgDCAFQSdqSxsNCiATEKICCwJAIARBgICAgHhGDQAgBARAIBJBBGsoAgAiBUF4cSIGIARBAnQiBEEEQQggBUEDcSIFG2pJDQwgBUEAIAYgBEEnaksbDQsgEhCiAgsgCwRAIA5BBGsoAgAiBEF4cSIFIAtBAXQiBkEEQQggBEEDcSIEG2pJDQwgBEEAIAUgBkEnaksbDQsgDhCiAgsgDUUNACAJQQRrKAIAIgRBeHEiBSANQQJ0IgZBBEEIIARBA3EiBBtqSQ0LIARBACAFIAZBJ2pLGw0KIAkQogILIANBBGsoAgAiBEF4cUGs0wBBsNMAIARBA3EiBRtJDQogBUUgBEHQ0wBJcg0HDAkLIAFBEGogA0Ecav0AAgD9CwMAIAFBIGogA0Esav0AAgD9CwMAIAEgA/0AAgz9CwMAIAMoAjwhByADKAIIIQggAykCACEVIAMoAkAiBARAIAMoAkQiBUEEaygCACIGQXhxIglBBEEIIAZBA3EiBhsgBGpJDQogBkEAIAkgBEEnaksbDQkgBRCiAgsgA0EEaygCACIEQXhxIgVB0ABB1AAgBEEDcSIEG0kNCSAERSAFQfQASXINBgwICyABQRBqIANBHGr9AAIA/QsDACABQSBqIANBLGr9AAIA/QsDACABIAP9AAIM/QsDACADKAI8IQcgAygCCCEIIAMpAgAhFSADKAJAIgQEQCADKAJEIgVBBGsoAgAiBkF4cSIJQQRBCCAGQQNxIgYbIARqSQ0JIAZBACAJIARBJ2pLGw0IIAUQogILIANBBGsoAgAiBEF4cSIFQdAAQdQAIARBA3EiBBtJDQggBEUgBUH0AElyDQUMBwsgAUEQaiADQRxq/QACAP0LAwAgAUEgaiADQSxq/QACAP0LAwAgASAD/QACDP0LAwAgAygCPCEHIAMoAgghCCADKQIAIRUgAygCQCIEBEAgAygCRCAEQQEQogcLIANBBGsoAgAiBEF4cSIFQdAAQdQAIARBA3EiBBtJDQcgBEUgBUH0AElyDQQMBgsgAUEQaiADQZQCav0AAgD9CwMAIAFBIGogA0GkAmr9AAIA/QsDACABIAP9AAKEAv0LAwAgAygCgAIhCCADKQL4ASEVIAMoAugBIQwgAygC5AEhBiADKAKIASEKIAMoAnQhDyADKAJwIQkgAygCbCEFIAMoAmghDSADKAJkIQ4gAygCACEEIAMoArQCIQcgAygC2AIiCwRAIAMoAtwCIAtBARCiBwsCQCAEQQJGDQAgBQRAIA1BJGohBANAIARBBGsoAgAiC0GAgICAeHJBgICAgHhHBEAgBCgCACIQQQRrKAIAIhFBeHEiFEEEQQggEUEDcSIRGyALakkNCiARQQAgFCALQSdqSxsNCSAQEKICCyAEQTBqIQQgBUEBayIFDQALCyAOBEAgDSAOQTBsQQgQogcLIAlBgICAgHhyQYCAgIB4Rg0AIA8gCUEBEKIHCyADIBIgExshAyAGRSAKQQJGckUEQCAMIAZBKGxBCBCiBwsgA0EEaygCACIEQXhxQYQDQYgDIARBA3EiBRtJDQIgBUUgBEGoA0lyDQMMBQsgASADNgKkASABIAI2AqABQdjmyABBKyABQaABakHo7sAAQejvwAAQ4AYAC0Gw4MEAEN0JAAtBzIzIAEEuQfyMyAAQ6wcMAQsgAxCiAiABKAI8IgNBgICAgHhyQYCAgIB4RwRAIAEoAkAiBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgA2pJDQMgBUEAIAYgA0EnaksbDQIgBBCiAgsgASgCSEGAgICAeEcEQCABQcgAahD1AgsgASgCMCIDBEAgASgCNCIEQQRrKAIAIgVBeHEiBkEEQQggBUEDcSIFGyADakkNAyAFQQAgBiADQSdqSxsNAiAEEKICCwJAIAEoAogBIgNBgICAgHhyQYCAgIB4RwRAIAEoAowBIgRBBGsoAgAiBUF4cSIGQQRBCCAFQQNxIgUbIANqSQ0EIAVBACAGIANBJ2pLGw0BIAQQogILQdQAEHEiA0UNASADIAg2AhQgAyAVNwIMIANBADYCCCADQoGAgIAQNwIAIAMgAf0AAwD9CwIYIAMgBzYCUCADIAg2AkwgAyAHNgJIIANBKGogAUEQav0AAwD9CwIAIANBOGogAUEgav0AAwD9CwIAIANBCGoQDSEWENoEIgcgFiYBIAJBBGsoAgAiA0F4cUH0AEH4ACADQQNxIggbSQ0DIAhBACADQZgBTxsNAiACEKICIAAgBzYCBCAAQQA2AgAgAUHgBmokAA8LDAELAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwAL5hYCDH8IfUMAAIA/IRACfwJAIAAoAgQiAyACQQhqKAIAIgVJBEAgACgCACEGIAJBBGooAgAiCSADQSRsaiICEIoEIQ8gAi8BFCIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSECIANBgIACcSEEIANBgPgBcSIDQYD4AUYEQCAEQRB0IQMgA0GAgID8B3IgAkUNAxogAyACQQ10ckGAgID+B3IMAwsgBEEQdCEEIANFDQEgA0ENdEGAgID8AHEgAkENdHJBgICAwANqIARyDAILIAMgBUHUwMcAEIwHAAsgBEGAgIDYA3IgAmdBEGsiA0EXdGsgAiADQf//A3FBCGp0Qf///wNxcgu+IhFDAACAP14EQCAREMYFQ1T4LUCUQwAAgD+SkSEQC0MAAIA/IRECfwJAIAUgBksEQCAJIAZBJGxqIgIQigQhEyACLwEUIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQIgA0GAgAJxIQYgA0GA+AFxIgNBgPgBRgRAIAZBEHQhAyADQYCAgPwHciACRQ0DGiADIAJBDXRyQYCAgP4HcgwDCyAGQRB0IQYgA0UNASADQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBnIMAgsgBiAFQdTAxwAQjAcACyAGQYCAgNgDciACZ0EQayIDQRd0ayACIANB//8DcUEIanRB////A3FyC74iEkMAAIA/XgRAIBIQxgVDVPgtQJRDAACAP5KRIRELQwAAgD8hFAJAAkACfwJAIAUgACgCDCICSwRAIAAoAgghBiAJIAJBJGxqIgIQigQhEiACLwEUIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQIgA0GAgAJxIQQgA0GA+AFxIgNBgPgBRgRAIARBEHQhAyADQYCAgPwHciACRQ0DGiADIAJBDXRyQYCAgP4HcgwDCyAEQRB0IQQgA0UNASADQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBHIMAgsMAgsgBEGAgIDYA3IgAmdBEGsiA0EXdGsgAiADQf//A3FBCGp0Qf///wNxcgu+IhVDAACAP14EQCAVEMYFQ1T4LUCUQwAAgD+SkSEUCwJ/AkAgBSAGSwRAIAkgBkEkbGoiAhCKBCEVIAIvARQiA0H//wFxRQRAIANBEHQMAwsgA0H/B3EhAiADQYCAAnEhBiADQYD4AXEiA0GA+AFGBEAgBkEQdCEDIANBgICA/AdyIAJFDQMaIAMgAkENdHJBgICA/gdyDAMLIAZBEHQhBiADRQ0BIANBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAGcgwCCyAGIAVB1MDHABCMBwALIAZBgICA2ANyIAJnQRBrIgNBF3RrIAIgA0H//wNxQQhqdEH///8DcXILIQJDAACAPyEWAn8CQCAFIABBDEEIIBIgEpIgFJQiEiASWyASIBUgFZIgAr4iFEMAAIA/XgR9IBQQxgVDVPgtQJRDAACAP5KRBSAWC5RgRXEiBxtqIgYoAgAiAksEQCAAIA8gD5IgEJQiDyAPWyAPIBMgE5IgEZRgRXEiCkECdGoiDCgCACEEIAkgAkEkbGoiAhCKBCETIAIvARQiA0H//wFxRQRAIANBEHQMAwsgA0H/B3EhAiADQYCAAnEhCCADQYD4AXEiA0GA+AFGBEAgCEEQdCEDIANBgICA/AdyIAJFDQMaIAMgAkENdHJBgICA/gdyDAMLIAhBEHQhCCADRQ0BIANBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAIcgwCCwwCCyAIQYCAgNgDciACZ0EQayIDQRd0ayACIANB//8DcUEIanRB////A3FyC0MAAIA/IQ++IhBDAACAP14EQCAQEMYFQ1T4LUCUQwAAgD+SkSEPC0MAAIA/IRACfwJAIAQgBUkEQEEIQQwgBxshCCAJIARBJGxqIgIQigQhEiACLwEUIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQIgA0GAgAJxIQQgA0GA+AFxIgNBgPgBRgRAIARBEHQhAyADQYCAgPwHciACRQ0DGiADIAJBDXRyQYCAgP4HcgwDCyAEQRB0IQQgA0UNASADQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBHIMAgsMAwsgBEGAgIDYA3IgAmdBEGsiA0EXdGsgAiADQf//A3FBCGp0Qf///wNxcgu+IhFDAACAP14EQCAREMYFQ1T4LUCUQwAAgD+SkSEQC0MAAIA/IRECfwJAIAUgACAIaiIIKAIAIgJLBEAgACAKRUECdGoiAygCACEEIAkgAkEkbGoiABCKBCEUIAAvARQiAkH//wFxRQRAIAJBEHQMAwsgAkH/B3EhACACQYCAAnEhByACQYD4AXEiAkGA+AFGBEAgB0EQdCECIAJBgICA/AdyIABFDQMaIAIgAEENdHJBgICA/gdyDAMLIAdBEHQhByACRQ0BIAJBDXRBgICA/ABxIABBDXRyQYCAgMADaiAHcgwCCwwCCyAHQYCAgNgDciAAZ0EQayICQRd0ayAAIAJB//8DcUEIanRB////A3FyC74iFUMAAIA/XgRAIBUQxgVDVPgtQJRDAACAP5KRIRELAn8CQCAEIAVJBEAgEyATkiAPlCIPIBIgEpIgEJRgRSEHIA8gD1shCiAJIARBJGxqIgAQigQhECAALwEUIgJB//8BcUUEQCACQRB0DAMLIAJB/wdxIQAgAkGAgAJxIQQgAkGA+AFxIgJBgPgBRgRAIARBEHQhAiACQYCAgPwHciAARQ0DGiACIABBDXRyQYCAgP4HcgwDCyAEQRB0IQQgAkUNASACQQ10QYCAgPwAcSAAQQ10ckGAgIDAA2ogBHIMAgsMAwsgBEGAgIDYA3IgAGdBEGsiAkEXdGsgACACQf//A3FBCGp0Qf///wNxcgshAEMAAIA/IQ8CfwJAIAUgCCADIAYgByAKcSIHGyAUIBSSIBGUIhEgEVsgESAQIBCSIAC+IhNDAACAP14EfSATEMYFQ1T4LUCUQwAAgD+SkQUgDwuUYEVxIgobIg0oAgAiAEsEQCAMIAYgAyAKGyAHGyIOKAIAIQQgCSAAQSRsaiIAEIoEIRAgAC8BFCICQf//AXFFBEAgAkEQdAwDCyACQf8HcSEAIAJBgIACcSELIAJBgPgBcSICQYD4AUYEQCALQRB0IQIgAkGAgID8B3IgAEUNAxogAiAAQQ10ckGAgID+B3IMAwsgC0EQdCELIAJFDQEgAkENdEGAgID8AHEgAEENdHJBgICAwANqIAtyDAILIAAgBUHUwMcAEIwHAAsgC0GAgIDYA3IgAGdBEGsiAkEXdGsgACACQf//A3FBCGp0Qf///wNxcgtDAACAPyERviIPQwAAgD9eBEAgDxDGBUNU+C1AlEMAAIA/kpEhEQtDAACAPyEPAn8CQCAEIAVJBEAgCSAEQSRsaiIAEIoEIRMgAC8BFCICQf//AXFFBEAgAkEQdAwDCyACQf8HcSEAIAJBgIACcSEFIAJBgPgBcSICQYD4AUYEQCAFQRB0IQIgAkGAgID8B3IgAEUNAxogAiAAQQ10ckGAgID+B3IMAwsgBUEQdCEFIAJFDQEgAkENdEGAgID8AHEgAEENdHJBgICAwANqIAVyDAILDAMLIAVBgICA2ANyIABnQRBrIgJBF3RrIAAgAkH//wNxQQhqdEH///8DcXILviISQwAAgD9eBEAgEhDGBUNU+C1AlEMAAIA/kpEhDwsgASAGIAwgBxsoAgA2AgAgASANIA4gECAQkiARlCIQIBBbIBAgEyATkiAPlGBFcSIAGygCADYCBCABIA4gDSAAGygCADYCCCABIAMgCCAKGygCADYCDA8LIAIgBUHUwMcAEIwHAAsgBCAFQdTAxwAQjAcAC/YWAh1/BX0jAEGQAWsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKALEASICQR9xRQRAIAFBADoASCABQQA2AkQgASACQQV2Ihg2AkAgACABQUBrEKUEIAFBADYCDCABQoCAgIDAADcCBCABQQA2AhggAUKAgICAwAA3AhAgAUEANgIkIAFCgICAgMAANwIcIAFBADYCMCABQoCAgIDAADcCKCABQQA2AjwgAUKAgICAwAA3AjQgAkUEQEEEIQMgABCjASEPQQQhBUEEIQZBBCESDCQLQQAhAkEEIRIDQCALQYCABCAYIBRrIgcgB0GAgARPGyIHQQNsIg5JBEAgDiALayICIAEoAgQgC2tLBEAgAUEEaiALIAJBBEEEEKQFIAEoAgghEiABKAIMIQsLIBIgC0ECdGohBSACQQJPBH8gAkECdEEEayIGBEAgBUEAIAb8CwALIAIgC2oiAkEBayELIBIgAkECdGpBBGsFIAULQQA2AgAgASALQQFqIgs2AgwgASgCGCECCyACIAdJBEAgByACayIGIAEoAhAgAmtLBEAgAUEQaiACIAZBBEEEEKQFIAEoAhghAgsgASgCFCIDIAJBAnRqIQUgBkECTwR/IAZBAnRBBGsiBARAIAVBACAE/AsACyACIAZqIgVBAWshAiADIAVBAnRqQQRrBSAFC0EANgIAIAEgAkEBaiICNgIYCyABKAIkIgwgDkkEQCAOIAxrIgYgASgCHCAMa0sEQCABQRxqIAwgBkEEQQQQpAUgASgCJCEMCyABKAIgIgMgDEECdGohBSAGQQJPBH8gBkECdEEEayIEBEAgBUEAIAT8CwALIAYgDGoiBUEBayEMIAMgBUECdGpBBGsFIAULQQA2AgAgASAMQQFqIgw2AiQLIAEoAjAiDSAOSQRAIA4gDWsiBiABKAIoIA1rSwRAIAFBKGogDSAGQQRBBBCkBSABKAIwIQ0LIAEoAiwiAyANQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgBiANaiIFQQFrIQ0gAyAFQQJ0akEEawUgBQtBADYCACABIA1BAWoiDTYCMAsgB0ECdCIXIAEoAjwiCEsEQCAXIAhrIgYgASgCNCAIa0sEQCABQTRqIAggBkEEQQQQpAUgASgCPCEICyABKAI4IgMgCEECdGohBSAGQQJPBH8gBkECdEEEayIEBEAgBUEAIAT8CwALIAYgCGoiBUEBayEIIAMgBUECdGpBBGsFIAULQQA2AgAgASAIQQFqIgg2AjwLIAEoAgghEiAUIBhHBEAgFEEFdCEDIAAoAsQBIQQgACgCwAEhGUEAIRYgASgCOCEVIAEoAhQhGiABKAIgIRsgASgCLCEcIAIhBSAHIQZBACERQQAhDwNAIANBA2ogBE8NGiADQQdqIARPDRsgA0ELaiAETw0cIANBD2ogBE8NHSADQRNqIARPDR4gA0EXaiAETw0fIAsgEU0NBCADIBlqIglBBGoqAAAhHiAJQQhqKgAAIR8gCUEMaioAACEgIAlBEGoqAAAhISAJQRRqKgAAISIgEiAWaiIQIAkqAAA4AgAgEUEBaiIKIAtPDQUgEEEEaiAeOAIAIBFBAmoiEyALTw0GIBBBCGogHzgCACANIBFNDQcgFiAcaiIQICA4AgAgCiANTw0IIBBBBGogITgCACANIBNNDQkgEEEIaiAiOAIAIANBGGoiECAETw0KIAwgEU0NCyAWIBtqIhAgCUEYai0AALNDAAB/Q5U4AgAgA0EZaiIdIARPDQwgCiAMTw0NIBBBBGogCUEZai0AALNDAAB/Q5U4AgAgA0EaaiIKIARPDQ4gDCATTQ0PIBBBCGogCUEaai0AALNDAAB/Q5U4AgAgA0EbaiIKIARPDRAgBUUNESAPIBpqIAlBG2otAACzQwAAf0OVOAIAIANBHGoiCiAETw0SIANBHWoiCiAETw0TIANBHmoiCiAETw0UIANBH2oiCiAETw0VIAggD00NFiAJQRxqLQAAIQogCUEeai0AACETIAlBH2otAAAhECAVIAlBHWotAACzQwAAAMOSQwAAADyUOAIAIA9BAWoiCSAITw0XIBVBBGogE7NDAAAAw5JDAAAAPJQ4AgAgD0ECaiIJIAhPDRggFUEIaiAQs0MAAADDkkMAAAA8lDgCACAPQQNqIgkgCE8NGSAVQQxqIAqzQwAAAMOSQwAAADyUOAIAIAVBAWshBSAVQRBqIRUgA0EgaiEDIBZBDGohFiARQQNqIREgD0EEaiEPIAZBAWsiBg0ACwsgCyAOSQ0eIAIgB0kNHyAMIA5JDSAgDSAOSQ0hIAggF0kNIiABKAIUIQYgASgCICEFIAEoAiwhAyABQgQ3AogBIAFCAjcCgAEgAUIENwJ4IAFCBDcCcCABQgQ3AmggASAXNgJkIAEgASgCOCIENgJgIAEgDjYCXCABIAM2AlggASAONgJUIAEgBTYCUCABIAc2AkwgASAGNgJIIAEgDjYCRCABIBI2AkAgACAUIAcgAUFAaxCXASAYIAcgFGoiFEsNAAsMIgsgAUEANgJQIAFBATYCRCABQYTawAA2AkAgAUIENwJIIAFBQGsQkgchDwwjCyARIAtBjNfAABCMBwALIAogC0Gc18AAEIwHAAsgEyALQazXwAAQjAcACyARIA1BvNfAABCMBwALIAogDUHM18AAEIwHAAsgEyANQdzXwAAQjAcACyAQIARB7NfAABCMBwALIBEgDEH818AAEIwHAAsgHSAEQYzYwAAQjAcACyAKIAxBnNjAABCMBwALIAogBEGs2MAAEIwHAAsgEyAMQbzYwAAQjAcACyAKIARBzNjAABCMBwALIAIgAkHc2MAAEIwHAAsgCiAEQezYwAAQjAcACyAKIARB/NjAABCMBwALIAogBEGM2cAAEIwHAAsgCiAEQZzZwAAQjAcACyAPIAhBrNnAABCMBwALIAkgCEG82cAAEIwHAAsgCSAIQczZwAAQjAcACyAJIAhB3NnAABCMBwALIAMgA0EEciAEQfDlwQAQ6gcACyADQQRqIANBCHIgBEHw5cEAEOoHAAsgA0EIaiADQQxyIARB8OXBABDqBwALIANBDGogA0EQciAEQfDlwQAQ6gcACyADQRBqIANBFHIgBEHw5cEAEOoHAAsgA0EUaiADQRhyIARB8OXBABDqBwALQQAgDiALQfzWwAAQ6gcAC0EAIAcgAkHs1sAAEOoHAAtBACAOIAxB3NbAABDqBwALQQAgDiANQczWwAAQ6gcAC0EAIBcgCEG81sAAEOoHAAsgASgCNCECIAAQowEhDyACRQ0AIARBBGsoAgAiAEF4cSIHIAJBAnQiAkEEQQggAEEDcSIAG2pJDQIgAEEAIAcgAkEnaksbDQMgBBCiAgsgASgCKCIABEAgA0EEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAiACQQAgByAAQSdqSxsNAyADEKICCyABKAIcIgAEQCAFQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0CIAJBACAHIABBJ2pLGw0DIAUQogILIAEoAhAiAARAIAZBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQIgAkEAIAcgAEEnaksbDQMgBhCiAgsgASgCBCIARQ0AIBJBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQEgAkEAIAcgAEEnaksbDQIgEhCiAgsgAUGQAWokACAPDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL9RYCHX8FfSMAQZABayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAswBIgJBH3FFBEAgAUEAOgBIIAFBADYCRCABIAJBBXYiGDYCQCAAIAFBQGsQ4QMgAUEANgIMIAFCgICAgMAANwIEIAFBADYCGCABQoCAgIDAADcCECABQQA2AiQgAUKAgICAwAA3AhwgAUEANgIwIAFCgICAgMAANwIoIAFBADYCPCABQoCAgIDAADcCNCACRQRAQQQhAyAAENQBIQ9BBCEFQQQhBkEEIRIMJAtBACECQQQhEgNAIAtBgIAEIBggFGsiByAHQYCABE8bIgdBA2wiDkkEQCAOIAtrIgIgASgCBCALa0sEQCABQQRqIAsgAkEEQQQQpAUgASgCCCESIAEoAgwhCwsgEiALQQJ0aiEFIAJBAk8EfyACQQJ0QQRrIgYEQCAFQQAgBvwLAAsgAiALaiICQQFrIQsgEiACQQJ0akEEawUgBQtBADYCACABIAtBAWoiCzYCDCABKAIYIQILIAIgB0kEQCAHIAJrIgYgASgCECACa0sEQCABQRBqIAIgBkEEQQQQpAUgASgCGCECCyABKAIUIgMgAkECdGohBSAGQQJPBH8gBkECdEEEayIEBEAgBUEAIAT8CwALIAIgBmoiBUEBayECIAMgBUECdGpBBGsFIAULQQA2AgAgASACQQFqIgI2AhgLIAEoAiQiDCAOSQRAIA4gDGsiBiABKAIcIAxrSwRAIAFBHGogDCAGQQRBBBCkBSABKAIkIQwLIAEoAiAiAyAMQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgBiAMaiIFQQFrIQwgAyAFQQJ0akEEawUgBQtBADYCACABIAxBAWoiDDYCJAsgASgCMCINIA5JBEAgDiANayIGIAEoAiggDWtLBEAgAUEoaiANIAZBBEEEEKQFIAEoAjAhDQsgASgCLCIDIA1BAnRqIQUgBkECTwR/IAZBAnRBBGsiBARAIAVBACAE/AsACyAGIA1qIgVBAWshDSADIAVBAnRqQQRrBSAFC0EANgIAIAEgDUEBaiINNgIwCyAHQQJ0IhcgASgCPCIISwRAIBcgCGsiBiABKAI0IAhrSwRAIAFBNGogCCAGQQRBBBCkBSABKAI8IQgLIAEoAjgiAyAIQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgBiAIaiIFQQFrIQggAyAFQQJ0akEEawUgBQtBADYCACABIAhBAWoiCDYCPAsgASgCCCESIBQgGEcEQCAUQQV0IQMgACgCzAEhBCAAKALIASEZQQAhFiABKAI4IRUgASgCFCEaIAEoAiAhGyABKAIsIRwgAiEFIAchBkEAIRFBACEPA0AgA0EDaiAETw0aIANBB2ogBE8NGyADQQtqIARPDRwgA0EPaiAETw0dIANBE2ogBE8NHiADQRdqIARPDR8gCyARTQ0EIAMgGWoiCUEEaioAACEeIAlBCGoqAAAhHyAJQQxqKgAAISAgCUEQaioAACEhIAlBFGoqAAAhIiASIBZqIhAgCSoAADgCACARQQFqIgogC08NBSAQQQRqIB44AgAgEUECaiITIAtPDQYgEEEIaiAfOAIAIA0gEU0NByAWIBxqIhAgIDgCACAKIA1PDQggEEEEaiAhOAIAIA0gE00NCSAQQQhqICI4AgAgA0EYaiIQIARPDQogDCARTQ0LIBYgG2oiECAJQRhqLQAAs0MAAH9DlTgCACADQRlqIh0gBE8NDCAKIAxPDQ0gEEEEaiAJQRlqLQAAs0MAAH9DlTgCACADQRpqIgogBE8NDiAMIBNNDQ8gEEEIaiAJQRpqLQAAs0MAAH9DlTgCACADQRtqIgogBE8NECAFRQ0RIA8gGmogCUEbai0AALNDAAB/Q5U4AgAgA0EcaiIKIARPDRIgA0EdaiIKIARPDRMgA0EeaiIKIARPDRQgA0EfaiIKIARPDRUgCCAPTQ0WIAlBHGotAAAhCiAJQR5qLQAAIRMgCUEfai0AACEQIBUgCUEdai0AALNDAAAAw5JDAAAAPJQ4AgAgD0EBaiIJIAhPDRcgFUEEaiATs0MAAADDkkMAAAA8lDgCACAPQQJqIgkgCE8NGCAVQQhqIBCzQwAAAMOSQwAAADyUOAIAIA9BA2oiCSAITw0ZIBVBDGogCrNDAAAAw5JDAAAAPJQ4AgAgBUEBayEFIBVBEGohFSADQSBqIQMgFkEMaiEWIBFBA2ohESAPQQRqIQ8gBkEBayIGDQALCyALIA5JDR4gAiAHSQ0fIAwgDkkNICANIA5JDSEgCCAXSQ0iIAEoAhQhBiABKAIgIQUgASgCLCEDIAFCBDcCiAEgAUICNwKAASABQgQ3AnggAUIENwJwIAFCBDcCaCABIBc2AmQgASABKAI4IgQ2AmAgASAONgJcIAEgAzYCWCABIA42AlQgASAFNgJQIAEgBzYCTCABIAY2AkggASAONgJEIAEgEjYCQCAAIBQgByABQUBrEH4gGCAHIBRqIhRLDQALDCILIAFBADYCUCABQQE2AkQgAUGE2sAANgJAIAFCBDcCSCABQUBrEJIHIQ8MIwsgESALQYzXwAAQjAcACyAKIAtBnNfAABCMBwALIBMgC0Gs18AAEIwHAAsgESANQbzXwAAQjAcACyAKIA1BzNfAABCMBwALIBMgDUHc18AAEIwHAAsgECAEQezXwAAQjAcACyARIAxB/NfAABCMBwALIB0gBEGM2MAAEIwHAAsgCiAMQZzYwAAQjAcACyAKIARBrNjAABCMBwALIBMgDEG82MAAEIwHAAsgCiAEQczYwAAQjAcACyACIAJB3NjAABCMBwALIAogBEHs2MAAEIwHAAsgCiAEQfzYwAAQjAcACyAKIARBjNnAABCMBwALIAogBEGc2cAAEIwHAAsgDyAIQazZwAAQjAcACyAJIAhBvNnAABCMBwALIAkgCEHM2cAAEIwHAAsgCSAIQdzZwAAQjAcACyADIANBBHIgBEHw5cEAEOoHAAsgA0EEaiADQQhyIARB8OXBABDqBwALIANBCGogA0EMciAEQfDlwQAQ6gcACyADQQxqIANBEHIgBEHw5cEAEOoHAAsgA0EQaiADQRRyIARB8OXBABDqBwALIANBFGogA0EYciAEQfDlwQAQ6gcAC0EAIA4gC0H81sAAEOoHAAtBACAHIAJB7NbAABDqBwALQQAgDiAMQdzWwAAQ6gcAC0EAIA4gDUHM1sAAEOoHAAtBACAXIAhBvNbAABDqBwALIAEoAjQhAiAAENQBIQ8gAkUNACAEQQRrKAIAIgBBeHEiByACQQJ0IgJBBEEIIABBA3EiABtqSQ0CIABBACAHIAJBJ2pLGw0DIAQQogILIAEoAigiAARAIANBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQIgAkEAIAcgAEEnaksbDQMgAxCiAgsgASgCHCIABEAgBUEEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAiACQQAgByAAQSdqSxsNAyAFEKICCyABKAIQIgAEQCAGQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0CIAJBACAHIABBJ2pLGw0DIAYQogILIAEoAgQiAEUNACASQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0BIAJBACAHIABBJ2pLGw0CIBIQogILIAFBkAFqJAAgDw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+0WAh1/BX0jAEGQAWsiASQAAkACQAJAIAAoAmgiAkEfcQRAIAFBADYCUCABQQE2AkQgAUGE2sAANgJAIAFCBDcCSCABQUBrEJIHIQMMAQsgAUEAOgBIIAFBADYCRCABIAJBBXYiGDYCQCAAIAFBQGsQ6QEgAUEANgIMIAFCgICAgMAANwIEIAFBADYCGCABQoCAgIDAADcCECABQQA2AiQgAUKAgICAwAA3AhwgAUEANgIwIAFCgICAgMAANwIoIAFBADYCPCABQoCAgIDAADcCNAJAAkAgAkUEQEEEIQNBBCEFQQQhBkEEIREMAQtBACECQQQhEQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIAtBgIAEIBggFGsiByAHQYCABE8bIgdBA2wiDkkEQCAOIAtrIgIgASgCBCALa0sEQCABQQRqIAsgAkEEQQQQpAUgASgCCCERIAEoAgwhCwsgESALQQJ0aiEFIAJBAk8EfyACQQJ0QQRrIgYEQCAFQQAgBvwLAAsgAiALaiICQQFrIQsgESACQQJ0akEEawUgBQtBADYCACABIAtBAWoiCzYCDCABKAIYIQILIAIgB0kEQCAHIAJrIgYgASgCECACa0sEQCABQRBqIAIgBkEEQQQQpAUgASgCGCECCyABKAIUIgMgAkECdGohBSAGQQJPBH8gBkECdEEEayIEBEAgBUEAIAT8CwALIAIgBmoiBUEBayECIAMgBUECdGpBBGsFIAULQQA2AgAgASACQQFqIgI2AhgLIAEoAiQiDCAOSQRAIA4gDGsiBiABKAIcIAxrSwRAIAFBHGogDCAGQQRBBBCkBSABKAIkIQwLIAEoAiAiAyAMQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgBiAMaiIFQQFrIQwgAyAFQQJ0akEEawUgBQtBADYCACABIAxBAWoiDDYCJAsgASgCMCINIA5JBEAgDiANayIGIAEoAiggDWtLBEAgAUEoaiANIAZBBEEEEKQFIAEoAjAhDQsgASgCLCIDIA1BAnRqIQUgBkECTwR/IAZBAnRBBGsiBARAIAVBACAE/AsACyAGIA1qIgVBAWshDSADIAVBAnRqQQRrBSAFC0EANgIAIAEgDUEBaiINNgIwCyAHQQJ0IhcgASgCPCIISwRAIBcgCGsiBiABKAI0IAhrSwRAIAFBNGogCCAGQQRBBBCkBSABKAI8IQgLIAEoAjgiAyAIQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgBiAIaiIFQQFrIQggAyAFQQJ0akEEawUgBQtBADYCACABIAhBAWoiCDYCPAsgASgCCCERAkAgFCAYRwRAIBRBBXQhAyAAKAJoIQQgACgCZCEZQQAhFiABKAI4IRUgASgCFCEaIAEoAiAhGyABKAIsIRwgAiEFIAchBkEAIRBBACESA0AgA0EDaiAETw0ZIANBB2ogBE8NGiADQQtqIARPDRsgA0EPaiAETw0cIANBE2ogBE8NHSADQRdqIARPDR4gCyAQTQ0CIAMgGWoiCUEEaioAACEeIAlBCGoqAAAhHyAJQQxqKgAAISAgCUEQaioAACEhIAlBFGoqAAAhIiARIBZqIg8gCSoAADgCACAQQQFqIgogC08NBCAPQQRqIB44AgAgEEECaiITIAtPDQUgD0EIaiAfOAIAIA0gEE0NBiAWIBxqIg8gIDgCACAKIA1PDQcgD0EEaiAhOAIAIA0gE00NCCAPQQhqICI4AgAgA0EYaiIPIARPDQkgDCAQTQ0KIBYgG2oiDyAJQRhqLQAAs0MAAH9DlTgCACADQRlqIh0gBE8NCyAKIAxPDQwgD0EEaiAJQRlqLQAAs0MAAH9DlTgCACADQRpqIgogBE8NDSAMIBNNDQ4gD0EIaiAJQRpqLQAAs0MAAH9DlTgCACADQRtqIgogBE8NDyAFRQ0QIBIgGmogCUEbai0AALNDAAB/Q5U4AgAgA0EcaiIKIARPDREgA0EdaiIKIARPDRIgA0EeaiIKIARPDRMgA0EfaiIKIARPDRQgCCASTQ0VIAlBHGotAAAhCiAJQR5qLQAAIRMgCUEfai0AACEPIBUgCUEdai0AALNDAAAAw5JDAAAAPJQ4AgAgEkEBaiIJIAhPDRYgFUEEaiATs0MAAADDkkMAAAA8lDgCACASQQJqIgkgCE8NFyAVQQhqIA+zQwAAAMOSQwAAADyUOAIAIBJBA2oiCSAITw0YIBVBDGogCrNDAAAAw5JDAAAAPJQ4AgAgBUEBayEFIBVBEGohFSADQSBqIQMgFkEMaiEWIBBBA2ohECASQQRqIRIgBkEBayIGDQALCyALIA5JDR0gAiAHSQ0eIAwgDkkNHyANIA5JDSAgCCAXSQ0hIAEoAhQhBiABKAIgIQUgASgCLCEDIAFCBDcCiAEgAUICNwKAASABQgQ3AnggAUIENwJwIAFCBDcCaCABIBc2AmQgASABKAI4IgQ2AmAgASAONgJcIAEgAzYCWCABIA42AlQgASAFNgJQIAEgBzYCTCABIAY2AkggASAONgJEIAEgETYCQCAAIBQgByABQUBrEJMCIAcgFGoiFCAYTw0iDAELCyAQIAtBjNfAABCMBwALIAogC0Gc18AAEIwHAAsgEyALQazXwAAQjAcACyAQIA1BvNfAABCMBwALIAogDUHM18AAEIwHAAsgEyANQdzXwAAQjAcACyAPIARB7NfAABCMBwALIBAgDEH818AAEIwHAAsgHSAEQYzYwAAQjAcACyAKIAxBnNjAABCMBwALIAogBEGs2MAAEIwHAAsgEyAMQbzYwAAQjAcACyAKIARBzNjAABCMBwALIAIgAkHc2MAAEIwHAAsgCiAEQezYwAAQjAcACyAKIARB/NjAABCMBwALIAogBEGM2cAAEIwHAAsgCiAEQZzZwAAQjAcACyASIAhBrNnAABCMBwALIAkgCEG82cAAEIwHAAsgCSAIQczZwAAQjAcACyAJIAhB3NnAABCMBwALIAMgA0EEciAEQfDlwQAQ6gcACyADQQRqIANBCHIgBEHw5cEAEOoHAAsgA0EIaiADQQxyIARB8OXBABDqBwALIANBDGogA0EQciAEQfDlwQAQ6gcACyADQRBqIANBFHIgBEHw5cEAEOoHAAsgA0EUaiADQRhyIARB8OXBABDqBwALQQAgDiALQfzWwAAQ6gcAC0EAIAcgAkHs1sAAEOoHAAtBACAOIAxB3NbAABDqBwALQQAgDiANQczWwAAQ6gcAC0EAIBcgCEG81sAAEOoHAAsgASgCNCIARQ0AIARBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQMgAkEAIAcgAEEnaksbDQQgBBCiAgsgASgCKCIABEAgA0EEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgByAAQSdqSxsNBCADEKICCyABKAIcIgAEQCAFQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0DIAJBACAHIABBJ2pLGw0EIAUQogILIAEoAhAiAARAIAZBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQMgAkEAIAcgAEEnaksbDQQgBhCiAgsgASgCBCIABEAgEUEEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgByAAQSdqSxsNASAREKICC0EAIQMMAQsMAgsgAUGQAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL7RYCHX8FfSMAQZABayIBJAACQAJAAkAgACgCSCICQR9xBEAgAUEANgJQIAFBATYCRCABQYTawAA2AkAgAUIENwJIIAFBQGsQkgchAwwBCyABQQA6AEggAUEANgJEIAEgAkEFdiIYNgJAIAAgAUFAaxCEAiABQQA2AgwgAUKAgICAwAA3AgQgAUEANgIYIAFCgICAgMAANwIQIAFBADYCJCABQoCAgIDAADcCHCABQQA2AjAgAUKAgICAwAA3AiggAUEANgI8IAFCgICAgMAANwI0AkACQCACRQRAQQQhA0EEIQVBBCEGQQQhEQwBC0EAIQJBBCERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0AgC0GAgAQgGCAUayIHIAdBgIAETxsiB0EDbCIOSQRAIA4gC2siAiABKAIEIAtrSwRAIAFBBGogCyACQQRBBBCkBSABKAIIIREgASgCDCELCyARIAtBAnRqIQUgAkECTwR/IAJBAnRBBGsiBgRAIAVBACAG/AsACyACIAtqIgJBAWshCyARIAJBAnRqQQRrBSAFC0EANgIAIAEgC0EBaiILNgIMIAEoAhghAgsgAiAHSQRAIAcgAmsiBiABKAIQIAJrSwRAIAFBEGogAiAGQQRBBBCkBSABKAIYIQILIAEoAhQiAyACQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgQEQCAFQQAgBPwLAAsgAiAGaiIFQQFrIQIgAyAFQQJ0akEEawUgBQtBADYCACABIAJBAWoiAjYCGAsgASgCJCIMIA5JBEAgDiAMayIGIAEoAhwgDGtLBEAgAUEcaiAMIAZBBEEEEKQFIAEoAiQhDAsgASgCICIDIAxBAnRqIQUgBkECTwR/IAZBAnRBBGsiBARAIAVBACAE/AsACyAGIAxqIgVBAWshDCADIAVBAnRqQQRrBSAFC0EANgIAIAEgDEEBaiIMNgIkCyABKAIwIg0gDkkEQCAOIA1rIgYgASgCKCANa0sEQCABQShqIA0gBkEEQQQQpAUgASgCMCENCyABKAIsIgMgDUECdGohBSAGQQJPBH8gBkECdEEEayIEBEAgBUEAIAT8CwALIAYgDWoiBUEBayENIAMgBUECdGpBBGsFIAULQQA2AgAgASANQQFqIg02AjALIAdBAnQiFyABKAI8IghLBEAgFyAIayIGIAEoAjQgCGtLBEAgAUE0aiAIIAZBBEEEEKQFIAEoAjwhCAsgASgCOCIDIAhBAnRqIQUgBkECTwR/IAZBAnRBBGsiBARAIAVBACAE/AsACyAGIAhqIgVBAWshCCADIAVBAnRqQQRrBSAFC0EANgIAIAEgCEEBaiIINgI8CyABKAIIIRECQCAUIBhHBEAgFEEFdCEDIAAoAkghBCAAKAJEIRlBACEWIAEoAjghFSABKAIUIRogASgCICEbIAEoAiwhHCACIQUgByEGQQAhEEEAIRIDQCADQQNqIARPDRkgA0EHaiAETw0aIANBC2ogBE8NGyADQQ9qIARPDRwgA0ETaiAETw0dIANBF2ogBE8NHiALIBBNDQIgAyAZaiIJQQRqKgAAIR4gCUEIaioAACEfIAlBDGoqAAAhICAJQRBqKgAAISEgCUEUaioAACEiIBEgFmoiDyAJKgAAOAIAIBBBAWoiCiALTw0EIA9BBGogHjgCACAQQQJqIhMgC08NBSAPQQhqIB84AgAgDSAQTQ0GIBYgHGoiDyAgOAIAIAogDU8NByAPQQRqICE4AgAgDSATTQ0IIA9BCGogIjgCACADQRhqIg8gBE8NCSAMIBBNDQogFiAbaiIPIAlBGGotAACzQwAAf0OVOAIAIANBGWoiHSAETw0LIAogDE8NDCAPQQRqIAlBGWotAACzQwAAf0OVOAIAIANBGmoiCiAETw0NIAwgE00NDiAPQQhqIAlBGmotAACzQwAAf0OVOAIAIANBG2oiCiAETw0PIAVFDRAgEiAaaiAJQRtqLQAAs0MAAH9DlTgCACADQRxqIgogBE8NESADQR1qIgogBE8NEiADQR5qIgogBE8NEyADQR9qIgogBE8NFCAIIBJNDRUgCUEcai0AACEKIAlBHmotAAAhEyAJQR9qLQAAIQ8gFSAJQR1qLQAAs0MAAADDkkMAAAA8lDgCACASQQFqIgkgCE8NFiAVQQRqIBOzQwAAAMOSQwAAADyUOAIAIBJBAmoiCSAITw0XIBVBCGogD7NDAAAAw5JDAAAAPJQ4AgAgEkEDaiIJIAhPDRggFUEMaiAKs0MAAADDkkMAAAA8lDgCACAFQQFrIQUgFUEQaiEVIANBIGohAyAWQQxqIRYgEEEDaiEQIBJBBGohEiAGQQFrIgYNAAsLIAsgDkkNHSACIAdJDR4gDCAOSQ0fIA0gDkkNICAIIBdJDSEgASgCFCEGIAEoAiAhBSABKAIsIQMgAUIENwKIASABQgI3AoABIAFCBDcCeCABQgQ3AnAgAUIENwJoIAEgFzYCZCABIAEoAjgiBDYCYCABIA42AlwgASADNgJYIAEgDjYCVCABIAU2AlAgASAHNgJMIAEgBjYCSCABIA42AkQgASARNgJAIAAgFCAHIAFBQGsQ4gEgByAUaiIUIBhPDSIMAQsLIBAgC0GM18AAEIwHAAsgCiALQZzXwAAQjAcACyATIAtBrNfAABCMBwALIBAgDUG818AAEIwHAAsgCiANQczXwAAQjAcACyATIA1B3NfAABCMBwALIA8gBEHs18AAEIwHAAsgECAMQfzXwAAQjAcACyAdIARBjNjAABCMBwALIAogDEGc2MAAEIwHAAsgCiAEQazYwAAQjAcACyATIAxBvNjAABCMBwALIAogBEHM2MAAEIwHAAsgAiACQdzYwAAQjAcACyAKIARB7NjAABCMBwALIAogBEH82MAAEIwHAAsgCiAEQYzZwAAQjAcACyAKIARBnNnAABCMBwALIBIgCEGs2cAAEIwHAAsgCSAIQbzZwAAQjAcACyAJIAhBzNnAABCMBwALIAkgCEHc2cAAEIwHAAsgAyADQQRyIARB8OXBABDqBwALIANBBGogA0EIciAEQfDlwQAQ6gcACyADQQhqIANBDHIgBEHw5cEAEOoHAAsgA0EMaiADQRByIARB8OXBABDqBwALIANBEGogA0EUciAEQfDlwQAQ6gcACyADQRRqIANBGHIgBEHw5cEAEOoHAAtBACAOIAtB/NbAABDqBwALQQAgByACQezWwAAQ6gcAC0EAIA4gDEHc1sAAEOoHAAtBACAOIA1BzNbAABDqBwALQQAgFyAIQbzWwAAQ6gcACyABKAI0IgBFDQAgBEEEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgByAAQSdqSxsNBCAEEKICCyABKAIoIgAEQCADQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0DIAJBACAHIABBJ2pLGw0EIAMQogILIAEoAhwiAARAIAVBBGsoAgAiAkF4cSIHIABBAnQiAEEEQQggAkEDcSICG2pJDQMgAkEAIAcgAEEnaksbDQQgBRCiAgsgASgCECIABEAgBkEEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgByAAQSdqSxsNBCAGEKICCyABKAIEIgAEQCARQQRrKAIAIgJBeHEiByAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0DIAJBACAHIABBJ2pLGw0BIBEQogILQQAhAwwBCwwCCyABQZABaiQAIAMPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu1FgEOfwJ/AkAgAiADSwRAIAEgA0EebGoiAy8BACICQf//AXFFBEAgAkEQdAwDCyACQf8HcSEBIAJBgIACcSEFIAJBgPgBcSICQYD4AUYEQCAFQRB0IQIgAkGAgID8B3IgAUUNAxogAiABQQ10ckGAgID+B3IMAwsgBUEQdCEFIAJFDQEgAkENdEGAgID8AHEgAUENdHJBgICAwANqIAVyDAILIAMgAkGEwccAEIwHAAsgBUGAgIDYA3IgAWdBEGsiAkEXdGsgASACQf//A3FBCGp0Qf///wNxcgshAQJ/IAMvAQIiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhAiAFQYCAAnEhBiAFQYD4AXEiBUGA+AFGBEAgBkEQdCEFIAVBgICA/AdyIAJFDQEaIAUgAkENdHJBgICA/gdyDAELIAZBEHQhBiAFQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBnIgBQ0AGiAGQYCAgNgDciACZ0EQayIFQRd0ayACIAVB//8DcUEIanRB////A3FyCyEFAn8gAy8BBCIGQf//AXFFBEAgBkEQdAwBCyAGQf8HcSECIAZBgIACcSEHIAZBgPgBcSIGQYD4AUYEQCAHQRB0IQYgBkGAgID8B3IgAkUNARogBiACQQ10ckGAgID+B3IMAQsgB0EQdCEHIAZBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAHciAGDQAaIAdBgICA2ANyIAJnQRBrIgZBF3RrIAIgBkH//wNxQQhqdEH///8DcXILIQYCfyADLwEGIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQIgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQhByAHQYCAgPwHciACRQ0BGiAHIAJBDXRyQYCAgP4HcgwBCyAIQRB0IQggB0ENdEGAgID8AHEgAkENdHJBgICAwANqIAhyIAcNABogCEGAgIDYA3IgAmdBEGsiB0EXdGsgAiAHQf//A3FBCGp0Qf///wNxcgshBwJ/IAMvAQgiCEH//wFxRQRAIAhBEHQMAQsgCEH/B3EhAiAIQYCAAnEhCSAIQYD4AXEiCEGA+AFGBEAgCUEQdCEIIAhBgICA/AdyIAJFDQEaIAggAkENdHJBgICA/gdyDAELIAlBEHQhCSAIQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogCXIgCA0AGiAJQYCAgNgDciACZ0EQayIIQRd0ayACIAhB//8DcUEIanRB////A3FyCyEIAn8gAy8BCiIJQf//AXFFBEAgCUEQdAwBCyAJQf8HcSECIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IQkgCUGAgID8B3IgAkUNARogCSACQQ10ckGAgID+B3IMAQsgCkEQdCEKIAlBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAKciAJDQAaIApBgICA2ANyIAJnQRBrIglBF3RrIAIgCUH//wNxQQhqdEH///8DcXILIQkCfyADLwEMIgpB//8BcUUEQCAKQRB0DAELIApB/wdxIQIgCkGAgAJxIQsgCkGA+AFxIgpBgPgBRgRAIAtBEHQhCiAKQYCAgPwHciACRQ0BGiAKIAJBDXRyQYCAgP4HcgwBCyALQRB0IQsgCkENdEGAgID8AHEgAkENdHJBgICAwANqIAtyIAoNABogC0GAgIDYA3IgAmdBEGsiCkEXdGsgAiAKQf//A3FBCGp0Qf///wNxcgshCgJ/IAMvAQ4iC0H//wFxRQRAIAtBEHQMAQsgC0H/B3EhAiALQYCAAnEhDCALQYD4AXEiC0GA+AFGBEAgDEEQdCELIAtBgICA/AdyIAJFDQEaIAsgAkENdHJBgICA/gdyDAELIAxBEHQhDCALQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogDHIgCw0AGiAMQYCAgNgDciACZ0EQayILQRd0ayACIAtB//8DcUEIanRB////A3FyCyELAn8gAy8BECIMQf//AXFFBEAgDEEQdAwBCyAMQf8HcSECIAxBgIACcSENIAxBgPgBcSIMQYD4AUYEQCANQRB0IQwgDEGAgID8B3IgAkUNARogDCACQQ10ckGAgID+B3IMAQsgDUEQdCENIAxBDXRBgICA/ABxIAJBDXRyQYCAgMADaiANciAMDQAaIA1BgICA2ANyIAJnQRBrIgxBF3RrIAIgDEH//wNxQQhqdEH///8DcXILIQwCfyADLwESIg1B//8BcUUEQCANQRB0DAELIA1B/wdxIQIgDUGAgAJxIQ4gDUGA+AFxIg1BgPgBRgRAIA5BEHQhDSANQYCAgPwHciACRQ0BGiANIAJBDXRyQYCAgP4HcgwBCyAOQRB0IQ4gDUENdEGAgID8AHEgAkENdHJBgICAwANqIA5yIA0NABogDkGAgIDYA3IgAmdBEGsiDUEXdGsgAiANQf//A3FBCGp0Qf///wNxcgshDQJ/IAMvARQiDkH//wFxRQRAIA5BEHQMAQsgDkH/B3EhAiAOQYCAAnEhDyAOQYD4AXEiDkGA+AFGBEAgD0EQdCEOIA5BgICA/AdyIAJFDQEaIA4gAkENdHJBgICA/gdyDAELIA9BEHQhDyAOQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogD3IgDg0AGiAPQYCAgNgDciACZ0EQayIOQRd0ayACIA5B//8DcUEIanRB////A3FyCyEOAn8gAy8BFiIPQf//AXFFBEAgD0EQdAwBCyAPQf8HcSECIA9BgIACcSEQIA9BgPgBcSIPQYD4AUYEQCAQQRB0IQ8gD0GAgID8B3IgAkUNARogDyACQQ10ckGAgID+B3IMAQsgEEEQdCEQIA9BDXRBgICA/ABxIAJBDXRyQYCAgMADaiAQciAPDQAaIBBBgICA2ANyIAJnQRBrIg9BF3RrIAIgD0H//wNxQQhqdEH///8DcXILIQ8CfyADLwEYIhBB//8BcUUEQCAQQRB0DAELIBBB/wdxIQIgEEGAgAJxIQQgEEGA+AFxIhBBgPgBRgRAIARBEHQhECAQQYCAgPwHciACRQ0BGiAQIAJBDXRyQYCAgP4HcgwBCyAEQRB0IQQgEEENdEGAgID8AHEgAkENdHJBgICAwANqIARyIBANABogBEGAgIDYA3IgAmdBEGsiEEEXdGsgAiAQQf//A3FBCGp0Qf///wNxcgshEAJ/IAMvARoiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAiAEQYCAAnEhESAEQYD4AXEiBEGA+AFGBEAgEUEQdCEEIARBgICA/AdyIAJFDQEaIAQgAkENdHJBgICA/gdyDAELIBFBEHQhESAEQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogEXIgBA0AGiARQYCAgNgDciACZ0EQayIEQRd0ayACIARB//8DcUEIanRB////A3FyCyECIAACfyADLwEcIgRB//8BcUUEQCAEQRB0DAELIARB/wdxIQMgBEGAgAJxIREgBEGA+AFxIgRBgPgBRgRAIBFBEHQhBCAEQYCAgPwHciADRQ0BGiAEIANBDXRyQYCAgP4HcgwBCyARQRB0IREgBEENdEGAgID8AHEgA0ENdHJBgICAwANqIBFyIAQNABogEUGAgIDYA3IgA2dBEGsiBEEXdGsgAyAEQf//A3FBCGp0Qf///wNxcgs2AjggACACNgI0IAAgEDYCMCAAIA82AiwgACAONgIoIAAgDTYCJCAAIAw2AiAgACALNgIcIAAgCjYCGCAAIAk2AhQgACAINgIQIAAgBzYCDCAAIAY2AgggACAFNgIEIAAgATYCAAv3FQIRfwJ+IwBBIGsiCiQAAkACQAJAA0ACfyABKAKcAyICIAEpA6ADIhMgAq0iFCATIBRUG6ciBEYEQEEBIQVBJSEGQQAhB0EAIQJBACEJQQAhCyADQYB+cUEkcgwBCyAKQQhqIAEgASgCmAMgBGogAiAEa0EAENYBIAopAhAiE0IoiKchByATQiCIpyECIBNCGIinIQkgE0IQiKchCyATQgiIpyEGIAotABshDCAKLQAaIQ4gCi0AGSEIIAotABghDSAKKAIMIQQgE6chBSAEIAooAggNABogASABKQOgAyAErXw3A6ADIANBgH5xQShyCyIDQf8BcUEoRwRAIANBCHYhAQwCCwJAAkACQAJAIAVB/wFxQQFrDgIAAQQLIA1B/wFxIgRByQBGDQEgBEHmAEcgCEHkAEdyIA5B/wFxQcEARyAMQf8BcUHUAEdycg0DDAILIAZB/wFxQckARyALQf8BcUHFAEdyIAlB/wFxQc4ARyACQf8BcUHEAEdycg0CQQMhAwwDCyAIQcQARyAOQf8BcUHBAEdyIAxB/wFxQdQAR3INAQsLAn8CQCABKAIIQQJHBEBBASEHIAFBCGoiA0G4AkGgAiABLQC5AkECRiIFG2ooAgAhBCADQbQCQZwCIAUbaigCACEDIAEtAMQCIg9BAUYEQCAEQQN2IARBB3FBAEdqIQUgA0UgBEVyRQRAIANBA3YgA0EHcUEAR2ohAkEBIQ1BASEIQQEhDEEBDAQLQQEhDSAERSADQQRNcg0CIANBBGsiAkEAIAIgA00bIgJBA3YgAkEHcUEAR2ohAkECIQdBASEIQQIhDEEBDAMLIARFBEBBACENQQAhBUEAIQhBAgwDC0EAIQ0gBCEFQQEhCEEADAILQayYxwAQ3QkACyADRSAEQQVJckUEQEEDIQcgBEEEayICQQAgAiAETRsiAkEDdiACQQdxQQBHaiEFIANBAnYgA0EDcUEAR2ohAkEBIQhBAyEMQQEMAQsgBEUgA0ECTXJFBEAgA0ECayICQQAgAiADTRsiAkECdiACQQNxQQBHaiECIARBAnYgBEEDcUEAR2ohBUEEIQdBASEIQQQhDEEBDAELAkAgBEEDSQ0AIAMgA0EBdmsiAkUNACAEQQJrIgVBACAEIAVPGyIFQQJ2IAVBA3FBAEdqIQVBBSEHQQEhCEEFIQxBAQwBCwJAIAQgBEEBdmsiBUUNACADQQFrIgJBACACIANNGyICIAJBAXZrIgJFDQBBBiEHQQEhCEEGIQxBAQwBC0EAIQhBByEHIARBAWsiAkEAIAIgBE0bIgIgAkEBdmsiBUUgA0VyRQRAIAMhAkEBIQhBByEMQQEMAQsgAyECQQILIQ4gAS0AxgIiCUECdCIQKAKQlEkgA2whCwJAAkACQCABLQDHAiIGQQhrDgkCAAAAAAAAAAEACyAGQQhNBEAgC0EIIAZuIhFuIhIgCyARIBJsR2ohCwwCCwwECyALQQF0IQsLIAFBADoA5AMgASAENgLcAyABIAM2AtgDIAEgDDoA1AMgASACNgLQAyABIAM2AswDIAFBADYCyAMgASAONgLEAyABIAc6AMADIAEgBDYCvAMgASADNgK4AyABIAI2ArQDIAEgBTYCsAMgASAINgKsAyABIA02AqgDIAEgC0EBaiIFNgLgAwJAIBAoAoCVSSAGQQdqQQN2bEEBayICQQdLQa8BIAJ2QQFxRXJFBEAgAUKBhIyggMCBgAggAkEDdK2IPADFBCAPRQRAIAStIAWtfiETDAILIAlBAnQiAigCyJRJIANBA3YgA0EHcUEAR2psIQsCQAJAAkAgBkEIayIFDgkCAAAAAAAAAAEACyAGQQhNBEAgC0EIIAZuIgduIg4gCyAHIA5sR2ohCwwCCwwGCyALQQF0IQsLIAIoApyVSSADQQRrIgJBACACIANNGyICQQN2IAJBB3FBAEdqbCECAkACQAJAAkACQAJAIAUOCQABAQEBAQEBAgELIAlBAnQoAriVSSADQQJ2IANBA3FBAEdqbCEHIAJBAWohDQwECyAGQQlPDQggCUECdCgCuJVJIANBAnYgA0EDcUEAR2psIQcgAkEIIAZuIgVuIg4gAiAFIA5sR2pBAWohDSAGQQhrDgkDAgICAgICAgECCyAJQQJ0KAK4lUkgA0ECdiADQQNxQQBHamwhByACQQF0QQFyIQ0LIAdBAXQhBwwBCyAHQQggBm4iAm4iBSAHIAIgBWxHaiEHCyAJQQJ0IgUoAtSVSSADQQJrIgJBACACIANNGyICQQJ2IAJBA3FBAEdqbCECAkACQAJAAkACQAJAIAZBCGsOCQABAQEBAQEBAgELIAUoAvCVSSADIANBAXZrbCEFIARBAnYgBEEDcUEAR2ohDiACQQFqIQwMBAsgBkEJTw0IIAlBAnQoAvCVSSADIANBAXZrbCEFIARBAnYgBEEDcUEAR2ohDiACQQggBm4iDG4iCCACIAggDGxHakEBaiEMIAZBCGsOCQMCAgICAgICAQILIAUoAvCVSSADIANBAXZrbCEFIARBAnYgBEEDcUEAR2ohDiACQQF0QQFyIQwLIAVBAXQhBQwBCyAFQQggBm4iAm4iCCAFIAIgCGxHaiEFCyAJQQJ0IgIoAoyWSSADQQFrIghBACADIAhPGyIIIAhBAXZrbCEJAkACQAJAIAZBCGsiCA4JAgAAAAAAAAABAAsgBkEITQRAIAlBCCAGbiIPbiIQIAkgDyAQbEdqIQkMAgsMBgsgCUEBdCEJCyACKALklEkgA2whAgJAAkACQCAIDgkCAAAAAAAAAAEACyAGQQhNBEAgAkEIIAZuIgZuIgggAiAGIAhsR2ohAgwCCwwGCyACQQF0IQILIARBBGsiBkEAIAQgBk8bIgZBA3YgBkEHcUEAR2qtIAdBAWqtfiAEQQN2IARBB3FBAEdqrSANrSALQQFqrXx+fCAOrSAMrX58IARBAmsiB0EAIAQgB08bIgdBAnYgB0EDcUEAR2qtIAVBAWqtfnwgBCAEQQF2a60gCUEBaq1+fCAEQQFrIgVBACAEIAVPGyIEIARBAXZrrSACQQFqrX58IRMMAQsgCkEANgIYIApBATYCDCAKQbiPxQA2AgggCkIENwIQIApBCGpBwI/FABCNCAALIAFBADYC+AMCQAJAIAEoAogEIgJBgoCAgHhIIAJFckUEQCABKAKMBCIDQQRrKAIAIgRBeHEiBUEEQQggBEEDcSIEGyACakkNASAEQQAgBSACQSdqSxsNAiADEKICIAEoAtgDIQMLIAFBADYCnAQgAUIANwKUBCABQYCAgIB4NgKIBCABIBM3A+gDIAogARCKBSAKLQAAQQJ0KAKslEkgA2whAwJAAkACQCAKLQABIgJBCGsOCQIAAAAAAAAAAQALIAJBCE0EQCADQQggAm4iAm4iBCADIAIgBGxHaiEDDAILDAYLIANBAXQhAwsgAyABKAKIAyICSwRAIABBJzoAAAwECyAAQSg6AAAgASACIANrNgKIAwwDC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgACAHOwAJIAAgATsAASAAIAw6AA8gACAOOgAOIAAgCDoADSAAIA06AAwgACACOgAIIAAgCToAByAAIAs6AAYgACAGOgAFIAAgBToABCAAIAM6AAAgAEELaiAHQRB2OgAAIABBA2ogAUEQdjoAAAsgCkEgaiQADwtB0I/FABCBCAALyBUCB38HfiMAQeACayICJAACfwJAAn8CQAJAAkACQCAALQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAAskMAAH9DlQvSAgEFfwJAAkACQAJAAkACQCAAKAIAIgAoAgAOAgABAwsgACgCCCIBRQ0CIAAoAgQiA0EEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAWpJDQQgAkUgBCABQSdqTXINAQwDCyAALQAEQQNHDQEgACgCCCIDKAIAIQEgA0EEaigCACICKAIAIgQEQCABIAQRAwALIAIoAgQiAgRAIAFBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIAJqSQ0EIARBACAFIAJBJ2pLGw0DIAEQogILIANBBGsoAgAiAUF4cSICQRBBFCABQQNxIgEbSQ0DIAFFDQAgAkE0Tw0CCyADEKICCyAAQQRrKAIAIgNBeHEiAUEYQRwgA0EDcSIDG0kNASADQQAgAUE8TxsNACAAEKICDwtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALkgMBBH8CQAJAAkACQAJAAkAgByAIVgRAIAcgCH0gCFgNAyAGIAcgBn1UIAcgBkIBhn0gCEIBhlpxDQIgBiAIWA0GIAcgBiAIfSIGfSAGVg0GIAIgA08NAUEAIAMgAkG4j8IAEOoHAAsgAEEANgIADwsgASADaiEMIAMhCgJAAkACQANAIAoiCUUNASAJQQFrIgogAWoiCy0AAEE5Rg0ACyALIAstAABBAWo6AAAgAyAJTw0BIAkgAyADQfiEwgAQ6gcACwJAIANFBEBBMSEKDAELIAFBMToAAEEwIQogA0EBayIJRSAJRXINACABQQFqQTAgCfwLAAsgBEEBasEiBCAFwUwgAiADTXINASAMIAo6AAAgA0EBaiEDDAELIAMgCUYNACADIAlrIgVFDQAgASAJakEwIAX8CwALIAIgA0kNAgwDCyACIANPDQJBACADIAJByI/CABDqBwALIABBADYCAA8LQQAgAyACQaiPwgAQ6gcACyAAIAQ7AQggACADNgIEIAAgATYCAA8LIABBADYCAAu8AwIFfwF+IwBBIGsiAiQAAkACQAJAAkACQCABLQCYASIDQQhHDQAgAkEJOgAQIAIgASACQRBqIAEoAoABEOQEAkAgAi0AACIDQR1GBEAgAigCBCIEQYCAgIB4Rw0BQQAhAyABQQA6AJgBDAILIAIpAgQhBwJ/IANFBEAgAiAHNwMQIAenIQMgAikCFCEHQQUMAQsgAigCDCEEQRAQcSIBRQ0EIAEgAzoAACABIAQ2AgwgASAHNwIEIAEgAkEBciIDLwAAOwABIAFBA2ogA0ECai0AADoAACACQYAGOwEQIAIoAhAhA0EACyEEIABB7LvEADYCGCAAIAE2AhQgACAHQiCIPgIMIAAgBz4CCCAAIAM2AgQgACAENgIADAILIAIpAgggASACKAIIIAIoAgwQlgFB/wFxIgFBACABQQhHGyIDOgCYASAERQ0ApyIBQQRrKAIAIgVBeHEiBkEEQQggBUEDcSIFGyAEakkNAyAFQQAgBiAEQSdqSxsNBCABEKICCyAAQQY2AgAgACADOgAECyACQSBqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC5QDAQZ/AkAgACgCaEGAgICAeEcNAAJAAkAgACgCpAEiBUEASA0AIAVBAXQiBkH/////B08NAAJ/IAZFBEBBAiEHQQAMAQsgBhBxIgdFDQIgB0EEay0AAEEDcUUgBkVyRQRAIAdBACAG/AsACyAFCyEGIAAgBTYCcCAAIAc2AmwgACAGNgJoDAILQbjewAAQ/wcLAAsCQAJAIAIEQEEAIQUgACgCbCEHIAAoAnAiCSABayIAQQAgACAJTRsiCiACQQFrIgAgACAKSxsiACAEIAAgBEkbIghBB0sEQCAHIAFBAXRqIQAgAyEGIAhBAWoiBSAFQQdxIgVBCCAFG2siBSEIA0AgACAG/QABAP0LAQAgBkEQaiEGIABBEGohACAIQQhrIggNAAsLIAMgBUEBdGohACAHIAEgBWpBAXRqIQYDQCAEIAVGDQMgBSAKRg0CIAYgAC8BADsBACAGQQJqIQYgAEECaiEAIAIgBUEBaiIFRw0ACwsPCyABIAVqIAlB2N7AABCMBwALIAQgBEHI3sAAEIwHAAuYAwEGfwJAIAAoAnRBgICAgHhHDQACQAJAIAAoAqQBIgVB/////wNLDQAgBUECdCIGQf3///8HTw0AAn8gBkUEQEEEIQdBAAwBCyAGEHEiB0UNAiAHQQRrLQAAQQNxRSAGRXJFBEAgB0EAIAb8CwALIAULIQYgACAFNgJ8IAAgBzYCeCAAIAY2AnQMAgtB6N7AABD/BwsACwJAAkAgAgRAQQAhBSAAKAJ4IQcgACgCfCIJIAFrIgBBACAAIAlNGyIKIAJBAWsiACAAIApLGyIAIAQgACAESRsiCEEDSwRAIAcgAUECdGohACADIQYgCEEBaiIFIAVBA3EiBUEEIAUbayIFIQgDQCAAIAb9AAIA/QsCACAGQRBqIQYgAEEQaiEAIAhBBGsiCA0ACwsgAyAFQQJ0aiEAIAcgASAFakECdGohBgNAIAQgBUYNAyAFIApGDQIgBiAAKAIANgIAIAZBBGohBiAAQQRqIQAgAiAFQQFqIgVHDQALCw8LIAEgBWogCUGI38AAEIwHAAsgBCAEQfjewAAQjAcAC5oDAQZ/AkAgACgCjAFBgICAgHhHDQACQAJAIAAoAqgBIgVBAEgNACAFQQF0IgZB/////wdPDQACfyAGRQRAQQIhB0EADAELIAYQcSIHRQ0CIAdBBGstAABBA3FFIAZFckUEQCAHQQAgBvwLAAsgBQshBiAAIAU2ApQBIAAgBzYCkAEgACAGNgKMAQwCC0HIucEAEP8HCwALAkACQCACBEBBACEFIAAoApABIQcgACgClAEiCSABayIAQQAgACAJTRsiCiACQQFrIgAgACAKSxsiACAEIAAgBEkbIghBB0sEQCAHIAFBAXRqIQAgAyEGIAhBAWoiBSAFQQdxIgVBCCAFG2siBSEIA0AgACAG/QABAP0LAQAgBkEQaiEGIABBEGohACAIQQhrIggNAAsLIAMgBUEBdGohACAHIAEgBWpBAXRqIQYDQCAEIAVGDQMgBSAKRg0CIAYgAC8BADsBACAGQQJqIQYgAEECaiEAIAIgBUEBaiIFRw0ACwsPCyABIAVqIAlB6LnBABCMBwALIAQgBEHYucEAEIwHAAueAwEGfwJAIAAoApgBQYCAgIB4Rw0AAkACQCAAKAKoASIFQf////8DSw0AIAVBAnQiBkH9////B08NAAJ/IAZFBEBBBCEHQQAMAQsgBhBxIgdFDQIgB0EEay0AAEEDcUUgBkVyRQRAIAdBACAG/AsACyAFCyEGIAAgBTYCoAEgACAHNgKcASAAIAY2ApgBDAILQfi5wQAQ/wcLAAsCQAJAIAIEQEEAIQUgACgCnAEhByAAKAKgASIJIAFrIgBBACAAIAlNGyIKIAJBAWsiACAAIApLGyIAIAQgACAESRsiCEEDSwRAIAcgAUECdGohACADIQYgCEEBaiIFIAVBA3EiBUEEIAUbayIFIQgDQCAAIAb9AAIA/QsCACAGQRBqIQYgAEEQaiEAIAhBBGsiCA0ACwsgAyAFQQJ0aiEAIAcgASAFakECdGohBgNAIAQgBUYNAyAFIApGDQIgBiAAKAIANgIAIAZBBGohBiAAQQRqIQAgAiAFQQFqIgVHDQALCw8LIAEgBWogCUGYusEAEIwHAAsgBCAEQYi6wQAQjAcAC40DAQV/IwBBIGsiBiQAAkACQAJAAkAgASgCCCIDQQpJDQACQAJAIAEoAgQiBC0AAEEfRw0AIAQtAAFBiwFHDQAgBC0AAkEIRw0AQQohAiAELQADIgVBBHEEQCADQQxJDQMgAyAELwAKQQxqIgJJDQMLIAVBCHFFDQEgAiADTw0CA0AgAiAEai0AAEUEQCACQQFqIQIMAwsgAyACQQFqIgJHDQALDAILIAZBADYCGEEBIQUgBkEBNgIMIAZBvO3HADYCCCAGQgQ3AhAgACAGQQhqEJUHNgIEDAMLIAVBEHEEQCACIANPDQEDQCACIARqLQAABEAgAyACQQFqIgJHDQEMAwsLIAJBAWohAgsgBUECcUUNASADIAJBAmoiAk8NAQtBACEFIABBADoAAQwBCyACIANLDQFBACEFIAFBADYCCCACIANHBEAgAyACayIDBEAgBCACIARqIAP8CgAACyABIAM2AggLIABBAToAAQsgACAFOgAAIAZBIGokAA8LQQAgAiADQYSkxwAQ6gcAC88DAQV/IwBBIGsiAiQAIAAoAgAiA0EIaiEFQQEhAAJAIAMoAgBBAUYEQCABKAIAIgNByMnEAEEDIAEoAgQiBigCDCIEEQAADQECQCABLQAKQYABcUUEQCADQbuzxQBBASAEEQAADQMgBSABEPIFRQ0BDAMLIANB24HCAEECIAQRAAANAiACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEPIFDQIgAkHZgcIAQQIQrwMNAgsgA0HejsgAQQEgBBEAACEADAELIAEoAgAiA0H8nMgAQQIgASgCBCIGKAIMIgQRAAANAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAQRAAANAiAFIAEQxAUNAiABKAIAIQMgASgCBCgCDCEEDAELIANB24HCAEECIAQRAAANASACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEMQFDQEgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0BCyADQd6OyABBASAEEQAAIQALIAJBIGokACAAC6ADAQJ/IwBB0ABrIgckACAHQQBB0AD8CwACQCACRQRAIAdC//79+/fv37//ADcDAAwBCyABQQN0IgggBE0EQCAEIAhGDQFBCCAEIAhrIgQgBEEITxsiBEUNASAHIAMgCGogBPwKAAAMAQsgCCAEIARByOjEABDqBwALIAACfyABRQRAIAdBgQE6AEcgB0GBAToAPiAHQYEBOgA1IAdBgQE6ACwgB0GBAToAIyAHQYEBOgAaIAdBgQE6ABEgB0GBAToACEGBf0H/ACACGwwBCwJAIAYEQCAGQQFrIgFFDQEgByAFLQABOgAIIAFBAUYNASAHIAUtAAI6ABEgAUECRg0BIAcgBS0AAzoAGiABQQNGDQEgByAFLQAEOgAjIAFBBEYNASAHIAUtAAU6ACwgAUEFRg0BIAcgBS0ABjoANSABQQZGDQEgByAFLQAHOgA+IAFBB0YNASAHIAUtAAg6AEcMAQtBAUEAQQBBuOjEABDqBwALQYF/Qf8AIAIbIAJFDQAaIAUtAAALOgAAIABBAWogB0HQAPwKAAAgB0HQAGokAAuDAwEBfyMAQSBrIgUkACAAAn8CQCAERQRAIANBBGogAksgA0F7S3JFBEAgACABIANqKgAAOAIEDAILIAVBADYCGCAFQQE2AgwgBUHI28EANgIIIAVCBDcCECAAIAVBCGoQkgc2AgRBAQwCCyADQX1NIANBAmogAk1xRQRAIAVBADYCGCAFQQE2AgwgBUHI28EANgIIIAVCBDcCECAAIAVBCGoQkgc2AgRBAQwCCyAAAn8gASADaiIBLQABQQh0IgIgAS0AAHIiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhASACQYCAAnEhAyACQYD4AXEiAkGA+AFGBEAgA0EQdCECIAJBgICA/AdyIAFFDQEaIAFBDXQgAnJBgICA/gdyDAELIANBEHQhAyACQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogA3IgAg0AGiADQYCAgNgDciABZ0EQayICQRd0ayABIAJB//8DcUEIanRB////A3FyCzYCBAtBAAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAAQQAAAOwFEAAkAAAATwMAAA0AAADsBRAAJAAAAE8DAAA+AAAA7AUQACQAAAC4AwAAIQAAAOwFEAAkAAAAuAMAAA0AAADsBRAAJAAAALYDAAAlAAAA7AUQACQAAADGAwAAIQAAAOwFEAAkAAAAxgMAAA0AAADsBRAAJAAAAMQDAAAlAAAA7AUQACQAAABZAwAADQAAAOwFEAAkAAAAWgMAAA0AAADsBRAAJAAAAFsDAAANAAAA7AUQACQAAABYAwAAOwAAAOwFEAAkAAAAhAMAACUAAADsBRAAJAAAAIQDAAA2AAAA7AUQACQAAACGAwAAHQAAAOwFEAAkAAAAgAMAACUAAADsBRAAJAAAAJYDAAAlAAAA7AUQACQAAACWAwAANgAAAOwFEAAkAAAAlgMAAEsAAADsBRAAJAAAAJYDAABgAAAA7AUQACQAAACYAwAAHgAAAOwFEAAkAAAAkgMAACUAAADsBRAAJAAAAKgDAAAlAAAA7AUQACQAAACoAwAANgAAAOwFEAAkAAAAqAMAAEsAAADsBRAAJAAAAKgDAABgAAAA7AUQACQAAACqAwAAHgAAAOwFEAAkAAAApAMAACUAAADsBRAAJAAAAHEDAAANAAAA7AUQACQAAAByAwAADQAAAOwFEAAkAAAAcwMAAA0AAADsBRAAJAAAAHQDAAANAAAA7AUQACQAAABwAwAAPQAAAOwFEAAkAAAAZQMAAA0AAADsBRAAJAAAAGYDAAANAAAA7AUQACQAAABnAwAADQAAAOwFEAAkAAAAZAMAAD8AAACmAxAAUgAAAFIAAAATAAAADQUQAEAAAAB2AAAAIAAAAA0FEABAAAAAdQAAACIAAAANBRAAQAAAAHQAAAAeAAAADQUQAEAAAABzAAAAJgAAAA0FEABAAAAAcgAAACQAAAANBRAAQAAAAFQAAAAXAAAADQUQAEAAAABVAAAAFwAAAA0FEABAAAAAVgAAABcAAAANBRAAQAAAAFgAAAAWAAAADQUQAEAAAABZAAAAFgAAAA0FEABAAAAAWgAAABYAAAANBRAAQAAAAFwAAAAqAAAADQUQAEAAAABcAAAAFAAAAA0FEABAAAAAXQAAACoAAAANBRAAQAAAAF0AAAAUAAAADQUQAEAAAABeAAAAKgAAAA0FEABAAAAAXgAAABQAAAANBRAAQAAAAGAAAAApAAAADQUQAEAAAABgAAAAGAAAAA0FEABAAAAAYgAAACYAAAANBRAAQAAAAGMAAAAmAAAADQUQAEAAAABkAAAAJgAAAA0FEABAAAAAZQAAACYAAAANBRAAQAAAAGgAAAAVAAAADQUQAEAAAABpAAAAFQAAAA0FEABAAAAAagAAABUAAAANBRAAQAAAAGsAAAAVAAAASW52YWxpZCAuc3BsYXQgZmlsZSBzaXpl7CwQABgAAABhdHRlbXB0ZWQgdG8gdGFrZSBvd25lcnNoaXAgb2YgUnVzdCB2YWx1ZSB3aGlsZSBpdCB3YXMgYm9ycm93ZWRNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tleQD6GRAAYwAAAGYKAAAfAAAA7AUQACQAAADuAQAAOAAAAOwFEAAkAAAA7gEAAFkAAADsBRAAJAAAAPcBAABHAAAA7AUQACQAAAD3AQAAOQAAAOwFEAAkAAAAZAIAAC4AAADsBRAAJAAAAGQCAAAfAAAA7AUQACQAAABlAgAAHwAAAOwFEAAkAAAAWQIAACoAAADsBRAAJAAAAIQCAAA2AAAA7AUQACQAAACEAgAAIwAAAOwFEAAkAAAAeAIAACoAAADsBRAAJAAAAKQCAAA2AAAA7AUQACQAAACkAgAAIwAAAOwFEAAkAAAAmAIAACoAAADsBRAAJAAAANQCAAAlAAAA7AUQACQAAADYAgAAPAAAAOwFEAAkAAAA2AIAAB0AAADsBRAAJAAAANICAAAyAAAA7AUQACQAAADDAgAAIQAAAOwFEAAkAAAAxwIAADgAAADsBRAAJAAAAMcCAAAZAAAA7AUQACQAAADBAgAALgAAAOwFEAAkAAAAtAIAAB0AAADsBRAAJAAAALcCAAAsAAAA7AUQACQAAAC3AgAAEQAAAOwFEAAkAAAAuAIAADAAAADsBRAAJAAAALICAAAqAAAA7AUQACQAAADjAgAAJgAAAOwFEAAkAAAA5wIAACAAAADsBRAAJAAAAOcCAAATAAAA7AUQACQAAADtAgAAJgAAAOwFEAAkAAAA8QIAACAAAADsBRAAJAAAAPECAAATAAAA7AUQACQAAAB/AQAANgAAAOwFEAAkAAAAgAEAADYAAADsBRAAJAAAAI0BAAAzAAAA7AUQACQAAACOAQAAMwAAAOwFEAAkAAAAigEAAEQAAADsBRAAJAAAAIUBAAApAAAATWlzc2luZyBjaGlsZF9jb3VudHMgb3IgY2hpbGRfc3RhcnRz+C8QACQAAADsBRAAJAAAAAACAAA1AAAA7AUQACQAAAAAAgAAVgAAAOwFEAAkAAAAMAIAACoAAADsBRAAJAAAABsCAAA2AAAA7AUQACQAAAAbAgAAVwAAAOwFEAAkAAAAxgEAABUAAADsBRAAJAAAAMQBAAAlAAAA7AUQACQAAADIAQAAKAAAAOwFEAAkAAAAyQEAACgAAADsBRAAJAAAAMcBAAAoAAAA7AUQACQAAADFAQAAKAAAAOwFEAAkAAAAEgIAADcAAADsBRAAJAAAABICAABYAEH84cAACwUBAAAAfQBBjOLAAAsFAQAAAH4AQZziwAALBQEAAAB/AEGs4sAACwUBAAAAgABBvOLAAAsFAQAAAIEAQcziwAALBQEAAACCAEHc4sAACwUBAAAAgwBB7OLAAAsFAQAAAIQAQfziwAALBQEAAACFAEGM48AACwUBAAAAhgBBnOPAAAsFAQAAAIcAQazjwAALBQEAAACIAEG848AACwUBAAAAiQBBzOPAAAsFAQAAAIoAQdzjwAALBQEAAACLAEHs48AACwUBAAAAjABB/OPAAAsFAQAAAI0AQYzkwAALBQEAAACNAEGc5MAACwUBAAAAjQBBrOTAAAsFAQAAAI0AQbzkwAALBQEAAACNAEHM5MAACwUBAAAAjQBB3OTAAAsFAQAAAI0AQezkwAALBQEAAACNAEH85MAACwUBAAAAjQBBjOXAAAsFAQAAAI0AQZzlwAAL6QEBAAAAjQAAAGFuIGFycmF5IG9mIGxlbmd0aCAxYW4gYXJyYXkgb2YgbGVuZ3RoIDJhbiBhcnJheSBvZiBsZW5ndGggM2FuIGFycmF5IG9mIGxlbmd0aCA0bWlzc2luZyBmaWVsZCBgAPQyEAAPAAAA6JIRAAEAAABpbnZhbGlkIGxlbmd0aCAAFDMQAA8AAAAakxEACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAANDMQABEAAADokhEAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAAWDMQABEAAABpMxAADABBkOfAAAsFAQAAAI4AQaDnwAALBQEAAACPAEGw58AACyUBAAAAkAAAAF4aEABgAAAAoAQAACIAAABeGhAAYAAAAJYEAAAmAEHg58AACwUBAAAAkQBB8OfAAAu9BgEAAACSAAAAc2gxc2gyc2gzYXNoM2Jsb2RUcmVlAAAAygUQACEAAAC4AAAAMAAAAMoFEAAhAAAAtgAAADAAAABtYXhTcGxhdHNudW1TcGxhdHNtYXhTaERlZ3JlZWV4dDBleHQxAAAAkwAAAAQAAAAEAAAAIAAAAMoFEAAhAAAATAAAAFMAAADKBRAAIQAAAE8AAABTAAAAygUQACEAAABSAAAAVQAAAMoFEAAhAAAAVQAAAFUAAABzaDFDb2Rlc8oFEAAhAAAAWAAAAF4AAABzaDJDb2Rlc8oFEAAhAAAAWwAAAF4AAABzaDNDb2Rlc8oFEAAhAAAAYQAAAFkAAADKBRAAIQAAAGQAAABcAAAAygUQACEAAABKAAAAZwAAAMoFEAAhAAAASQAAAGcAAADKBRAAIQAAAEgAAABtAAAAygUQACEAAABHAAAAaAAAAMoFEAAhAAAARgAAAGgAAAArIxAAbQAAAJUAAAAOAAAAcmdiTWlucmdiTWF4bG5TY2FsZU1pbmxuU2NhbGVNYXhzaDFNYXhzaDJNYXhzaDNNYXhsb2RPcGFjaXR5YDUQAAYAAABmNRAABgAAAGw1EAAKAAAAdjUQAAoAAACANRAABgAAAIY1EAAGAAAAjDUQAAYAAACSNRAACgAAABAjEAAaAAAAOQAAAC0AAAAQIxAAGgAAAC4AAAAzAAAA7AUQACQAAACKAAAAJwAAAHNoMwDsBRAAJAAAAJsAAAAuAAAAcGFja2VkAADsBRAAJAAAAEUAAABTAAAA7AUQACQAAABIAAAAUwAAAOwFEAAkAAAASwAAAFMAAADsBRAAJAAAAE4AAABeAAAA7AUQACQAAABRAAAAXgAAAOwFEAAkAAAAVAAAAF4AAADsBRAAJAAAAFcAAABcAAAAc3BsYXRFbmNvZGluZwAAAOwFEAAkAAAAWQAAAHwAAADsBRAAJAAAAEMAAABLAAAA7AUQACQAAABCAAAAbQAAAOwFEAAkAAAAQQAAAGgAAADsBRAAJAAAAEAAAABoAAAAECMQABoAAABWAAAALQAAABAjEAAaAAAASwAAADMAAACUAAAA9AAAAAQAAACVAAAAlgAAAJcAQbjuwAALZQEAAACYAAAAECMQABoAAACXAAAAKwAAAGZpbGVUeXBlECMQABoAAACZAAAAaAAAAJkAAAAIAAAABAAAAJoAAAAQIxAAGgAAAJYAAABYAAAAmwAAAJAAAAAEAAAAnAAAAJ0AAACeAEGo78AACy0BAAAAnwAAABAjEAAaAAAAkAEAAFsAAACgAAAAcAAAAAQAAAChAAAAogAAAKMAQeDvwAALLQEAAACkAAAAECMQABoAAAARAQAAWwAAAKUAAADsAAAABAAAAKYAAACnAAAAqABBmPDAAAvhFQEAAACpAAAAECMQABoAAAB5AAAAKwAAABAjEAAaAAAAewAAAGgAAAAQIxAAGgAAAHgAAABbAAAARXhwZWN0ZWQgIGFjdGl2ZSBzcGxhdHMgYnV0IGdvdCBQOBAACQAAAFk4EAAXAAAAigMQABsAAAAzAAAAFQAAAIoDEAAbAAAApwAAABMAAACKAxAAGwAAAJ8AAAATAAAAigMQABsAAACiAAAAHQAAAIoDEAAbAAAAogAAABEAAACKAxAAGwAAAJAAAAAgAAAAigMQABsAAACQAAAAFAAAAIoDEAAbAAAAfAAAABgAAACKAxAAGwAAAH0AAAAYAAAAigMQABsAAAB0AAAAGQAAALwZEAAfAAAA4wAAABYAAABsb2RJZAAAALwZEAAfAAAA7AAAAFQAAAC8GRAAHwAAAAkBAAAWAAAAvBkQAB8AAAATAQAAVAAAALwZEAAfAAAAJAEAAD0AAAC8GRAAHwAAADcBAAArAAAAvBkQAB8AAAA4AQAAKwAAALwZEAAfAAAAMgEAACsAAAC8GRAAHwAAADMBAAArAAAAvBkQAB8AAAC7AAAAMQAAALwZEAAfAAAA2QAAABMAAAC8GRAAHwAAAMoAAAAnAAAAvBkQAB8AAAC8AAAAJgAAALwZEAAfAAAAzwAAADYAAAC8GRAAHwAAAHcBAAAvAAAAvBkQAB8AAAB6AQAAHwAAAGluZGljZXMAvBkQAB8AAACWAQAAVgAAALwZEAAfAAAAgwEAACQAAAC8GRAAHwAAAIkBAAAjAAAAvBkQAB8AAACGAQAAIgAAALwZEAAfAAAAeAEAACYAAABJbnZhbGlkIGNvbmVfZm92cyBsZW5ndGhJbnZhbGlkIGNvbmVfZm92MHMgbGVuZ3RoSW52YWxpZCBjb25lX2ZvdmVhdGVzIGxlbmd0aEludmFsaWQgYmVoaW5kX2ZvdmVhdGVzIGxlbmd0aEludmFsaWQgbG9kX3NjYWxlcyBsZW5ndGhJbnZhbGlkIHZpZXdfdG9fb2JqZWN0cyBsZW5ndGgAALwZEAAfAAAA5wEAACYAAAC8GRAAHwAAAOkBAABDAAAAvBkQAB8AAADtAQAAGAAAALwZEAAfAAAA+wEAABkAAAC8GRAAHwAAAAACAAAZAAAAvBkQAB8AAAAHAgAAKwAAALwZEAAfAAAACwIAABgAAAC8GRAAHwAAABECAAAvAAAAvBkQAB8AAAATAgAAPgAAALwZEAAfAAAAFQIAABwAAAC8GRAAHwAAAAQCAAAYAAAAvBkQAB8AAAArAgAAJAAAAHBpeGVsTGltaXRpbnN0YW5jZUluZGljZXNjaHVua3NvdXRwdXRTaXplZnJvbnRpZXJTaXplbGVhZkNvdW50AAC8GRAAHwAAAFQCAABcAAAAvBkQAB8AAABTAgAAYgAAALwZEAAfAAAAUgIAAF4AAAC8GRAAHwAAAFECAABZAAAAvBkQAB8AAABQAgAAaAAAALwZEAAfAAAATwIAAGIAAAC8GRAAHwAAAD4CAAAjAAAAvBkQAB8AAABBAgAAWgAAALwZEAAfAAAAQAIAAHIAAAC8GRAAHwAAAD8CAABYAAAAvBkQAB8AAAAxAgAAHQAAALwZEAAfAAAAMQIAADMAAAC8GRAAHwAAAC0CAAAjAAAAvBkQAB8AAAAtAgAAHgAAALwZEAAfAAAAKAIAABwAAAC8GRAAHwAAACICAAAUAAAAvBkQAB8AAADSAQAAHQAAALwZEAAfAAAA1QEAADoAAAC8GRAAHwAAANoBAAAZAAAAvBkQAB8AAAC7AQAAMwAAALwZEAAfAAAAwAEAAB0AAAC8GRAAHwAAAMEBAAAiAAAAvBkQAB8AAADCAQAAIAAAALwZEAAfAAAAwwEAACAAAAC8GRAAHwAAAMQBAAAfAAAAvBkQAB8AAADGAQAAHQAAALwZEAAfAAAAvwEAADwAAAC8GRAAHwAAAL4BAAA9AAAAvBkQAB8AAAD1AAAAOgAAALwZEAAfAAAA9wAAAB0AAAC8GRAAHwAAAPgAAAAdAAAAvBkQAB8AAAD/AAAAWAAAAHZlcnNpb25jb3VudG1heFNoY2h1bmtTaXplYWxsQ2h1bmtCeXRlc3NoQ29kZUNvdW50c3RydWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A3YA9gL2AfYD9gAOAg4BDgMOAI4CjgGOA44ATgJOAU4DTgDOAs4BzgPOAC4CLgEuAy4ArgKuAa4DrgBuAm4BbgNuAO4C7gHuA+4AHgIeAR4DHgCeAp4BngOeAF4CXgFeA14A3gLeAd4D3gA+Aj4BPgM+AL4CvgG+A74AfgJ+AX4DfgD+Av4B/gP8cGBAAaQAAAIYCAAAdAAAAHBgQAGkAAAAiBAAAFAAAABwYEABpAAAAIwQAABIAAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMyA8IG91dF9zbGljZS5sZW4oKQAcGBAAaQAAADYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAzKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpHBgQAGkAAAA3BAAADQAAABwYEABpAAAAOQQAACIAAAAcGBAAaQAAADoEAAAmAAAAHBgQAGkAAAA7BAAAJgAAABwYEABpAAAARAQAACMAAAAcGBAAaQAAAEQEAAAOAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDEgPCBvdXRfc2xpY2UubGVuKCkAHBgQAGkAAABGBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMSkgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRwYEABpAAAARwQAAA0AAAAcGBAAaQAAAEgEAAAiAAAAHBgQAGkAAABIBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAyIDwgb3V0X3NsaWNlLmxlbigpABwYEABpAAAATAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDIpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkcGBAAaQAAAE0EAAANAAAAHBgQAGkAAABOBAAAIgAAABwYEABpAAAATgQAAA0AAAAcGBAAaQAAAE8EAAAmAAAAHBgQAGkAAABPBAAADQAAABwYEABpAAAALAQAABcAAAAAAAAACAAAAAQAAAC2AQAAdW5yZWFjaGFibGUA6SQQAGMAAAC1AAAAJgAAANYlEABbAAAAbAEAABEAAADWJRAAWwAAAHUBAAARAAAA1iUQAFsAAAB+AQAAEQAAANYlEABbAAAAiAEAABEAAADWJRAAWwAAAI8BAAAfAAAA1iUQAFsAAACPAQAAJQAAANYlEABbAAAAjwEAABQAAADWJRAAWwAAAJcBAABCAAAA1iUQAFsAAACYAQAAHwAAANYlEABbAAAAmAEAABQAAAAIAAgACAQIAAQACAQEAgQAAgAEAgIBAgABAAIB1iUQAFsAAABuAAAADgAAANYlEABbAAAAaAAAAA4AAADWJRAAWwAAAEMAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogTm90IGEgcG9zc2libGUgYnl0ZSByb3VuZGVkIHBpeGVsIHdpZHRoAAAAZEcRAFEAAABGERAAXAAAAFEDAAASAAAARhEQAFwAAABCAAAAHQAAAIkMEABwAAAA9QAAACYAAACJDBAAcAAAAOQAAAAeAAAAiQwQAHAAAADmAAAAHgAAAIkMEABwAAAADwEAABsAAACJDBAAcAAAADQBAAAOAAAAiQwQAHAAAAA0AQAASQAAAIkMEABwAAAAiAAAACgAAACJDBAAcAAAAGYBAAAxAAAArSIQAGIAAACeAAAAJwAAAK0iEABiAAAA5QAAACEAAAAOFBAAZAAAAM4CAAAnAAAADhQQAGQAAADjAgAAHgAAAA4UEABkAAAAGAMAACcAAAAOFBAAZAAAADMDAAA3AAAADhQQAGQAAADVBAAAJwAAAA4UEABkAAAAhQcAACcAAAAOFBAAZAAAAKAFAAAnAAAADhQQAGQAAAD9BQAAJwAAAA4UEABkAAAAcgYAACcAAAAOFBAAZAAAAIoGAAAnAAAADhQQAGQAAADMBAAAHAAAAA4UEABkAAAAzQUAACcAAAAOFBAAZAAAAHUHAAAcAAAADhQQAGQAAAB1BwAALwAAAA4UEABkAAAAcwcAACYAAAAOFBAAZAAAAHEHAAAZAAAADhQQAGQAAABqBwAAMAAAAA4UEABkAAAAaAcAAC4AAAAOFBAAZAAAADgGAAAnAAAADhQQAGQAAACDBQAAJwAAAA4UEABkAAAA+AQAACcAAAAOFBAAZAAAAAUFAAAnAAAADhQQAGQAAADmBQAAJwAAAA4UEABkAAAAOQcAAA4AAAAOFBAAZAAAADsHAAAOAAAADhQQAGQAAABGBQAAJwAAAA4UEABkAAAATAcAABwAAAAOFBAAZAAAAEwHAAA8AAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogVW5yZWNvZ25pemVkIGNodW5rICBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBpbiBzdGFydF9jaHVua0BKEQA9AAAAfUoRACcAAAAOFBAAZAAAAGkEAAASAAAADhQQAGQAAAAnBAAAKgAAAA4UEABkAAAApgYAACcAAAAOFBAAZAAAALgCAAA8AAAADhQQAGQAAAC6AgAAHwAAAGFzc2VydGlvbiBmYWlsZWQ6ICg4IC8gYml0X2RlcHRoIGFzIHVzaXplICogY2hhbm5lbHMpLnNhdHVyYXRpbmdfbXVsKGlucHV0LmxlbigpKSA+PQogICAgb3V0cHV0LmxlbigpAAAAeBMQAGcAAABiAAAABQAAAGlucHV0IGZvciB1bnBhY2sgYml0cyBpcyBub3QgZW1wdHkAAHgTEABnAAAAfgAAACUAAABhc3NlcnRpb24gZmFpbGVkOiBtYXRjaGVzIShiaXRfZGVwdGgsIDEgfCAyIHwgNCB8IDgpeBMQAGcAAABfAAAABQAAAHgTEABnAAAAtgAAABoAQYyYxQALOgEAAAC3AQAAuAEAALkBAAAQAAAAeBMQAGcAAABCAAAAEQAAAAAAAAAEAAAABAAAALoBAAC7AQAAuwEAQdCYxQALxRsBAAAAvAEAAL0BAAC+AQAAeBMQAGcAAABVAAAAHAAAAHgTEABnAAAAVQAAAAkAAAB4ExAAZwAAAL0AAAAaAAAAeBMQAGcAAADBAAAAGQAAAENhbGxlciBzaG91bGQgdmVyaWZ56RYQAG8AAAAoAAAAKwAAAOkWEABvAAAASgAAAA0AAADpFhAAbwAAAEoAAAA9AAAA6RYQAG8AAABWAAAAHQAAAOkWEABvAAAARAAAAA0AAADpFhAAbwAAAGcAAAAiAAAA6RYQAG8AAABoAAAADwAAAOkWEABvAAAAYAAAACIAAAAAAAAAAAQAAAEAAAC/AQAAwAEAAMABAAAAAAAAAAQAAAEAAADBAQAAwgEAAMIBAAAAAAAAAAQAAAEAAADDAQAAxAEAAMQBAAB4ExAAZwAAAFAAAAATAAAAQ2h1bmtUeXBlAAAAAAAAAAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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", self.location.href);\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n var ch2 = {};\n var wk = function(c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + \';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'\n ], { type: "text/javascript" }))));\n w.onmessage = function(e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err2 = new Error(ed[0]);\n err2["code"] = ed[1];\n err2.stack = ed[2];\n cb(err2, null);\n } else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n };\n var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n var fleb = new u8([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 0,\n /* unused */\n 0,\n 0,\n /* impossible */\n 0\n ]);\n var fdeb = new u8([\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 4,\n 4,\n 5,\n 5,\n 6,\n 6,\n 7,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n /* unused */\n 0,\n 0\n ]);\n var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n var freb = function(eb, start) {\n var b = new u16(31);\n for (var i2 = 0; i2 < 31; ++i2) {\n b[i2] = start += 1 << eb[i2 - 1];\n }\n var r = new i32(b[30]);\n for (var i2 = 1; i2 < 30; ++i2) {\n for (var j = b[i2]; j < b[i2 + 1]; ++j) {\n r[j] = j - b[i2] << 5 | i2;\n }\n }\n return { b, r };\n };\n var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n fl[28] = 258, revfl[258] = 28;\n var _b = freb(fdeb, 0), fd = _b.b;\n var rev = new u16(32768);\n for (var i = 0; i < 32768; ++i) {\n var x = (i & 43690) >> 1 | (i & 21845) << 1;\n x = (x & 52428) >> 2 | (x & 13107) << 2;\n x = (x & 61680) >> 4 | (x & 3855) << 4;\n rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;\n }\n var hMap = function(cd, mb, r) {\n var s = cd.length;\n var i2 = 0;\n var l = new u16(mb);\n for (; i2 < s; ++i2) {\n if (cd[i2])\n ++l[cd[i2] - 1];\n }\n var le = new u16(mb);\n for (i2 = 1; i2 < mb; ++i2) {\n le[i2] = le[i2 - 1] + l[i2 - 1] << 1;\n }\n var co;\n if (r) {\n co = new u16(1 << mb);\n var rvb = 15 - mb;\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n var sv = i2 << 4 | cd[i2];\n var r_1 = mb - cd[i2];\n var v = le[cd[i2] - 1]++ << r_1;\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n co[i2] = rev[le[cd[i2] - 1]++] >> 15 - cd[i2];\n }\n }\n }\n return co;\n };\n var flt = new u8(288);\n for (var i = 0; i < 144; ++i)\n flt[i] = 8;\n for (var i = 144; i < 256; ++i)\n flt[i] = 9;\n for (var i = 256; i < 280; ++i)\n flt[i] = 7;\n for (var i = 280; i < 288; ++i)\n flt[i] = 8;\n var fdt = new u8(32);\n for (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n var flrm = /* @__PURE__ */ hMap(flt, 9, 1);\n var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\n var max = function(a) {\n var m = a[0];\n for (var i2 = 1; i2 < a.length; ++i2) {\n if (a[i2] > m)\n m = a[i2];\n }\n return m;\n };\n var bits = function(d, p, m) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8) >> (p & 7) & m;\n };\n var bits16 = function(d, p) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);\n };\n var shft = function(p) {\n return (p + 7) / 8 | 0;\n };\n var slc = function(v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n return new u8(v.subarray(s, e));\n };\n var ec = [\n "unexpected EOF",\n "invalid block type",\n "invalid length/literal",\n "invalid distance",\n "stream finished",\n "no stream handler",\n ,\n "no callback",\n "invalid UTF-8 data",\n "extra field too long",\n "date not in range 1980-2099",\n "filename too long",\n "stream finishing",\n "invalid zip data"\n // determined by unknown compression method\n ];\n var err = function(ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n };\n var inflt = function(dat, st, buf, dict) {\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n var resize = noBuf || st.i != 2;\n var noSt = st.i;\n if (noBuf)\n buf = new u8(sl * 3);\n var cbuf = function(l2) {\n var bl = buf.length;\n if (l2 > bl) {\n var nbuf = new u8(Math.max(bl * 2, l2));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n var tbts = sl * 8;\n do {\n if (!lm) {\n final = bits(dat, pos, 1);\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + l);\n buf.set(dat.subarray(s, t), bt);\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n } else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n var ldt = new u8(tl);\n var clt = new u8(19);\n for (var i2 = 0; i2 < hcLen; ++i2) {\n clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);\n }\n pos += hcLen * 3;\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n var clm = hMap(clt, clb, 1);\n for (var i2 = 0; i2 < tl; ) {\n var r = clm[bits(dat, pos, clbmsk)];\n pos += r & 15;\n var s = r >> 4;\n if (s < 16) {\n ldt[i2++] = s;\n } else {\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i2 - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i2++] = c;\n }\n }\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n lbt = max(lt);\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (; ; lpos = pos) {\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n } else {\n var add = sym - 254;\n if (sym > 264) {\n var i2 = sym - 257, b = fleb[i2];\n add = bits(dat, pos, (1 << b) - 1) + fl[i2];\n pos += b;\n }\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n };\n var et = /* @__PURE__ */ new u8(0);\n var mrg = function(a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n };\n var wcln = function(fn, fnStr, td2) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf("[") + 1, st.lastIndexOf("]")).replace(/\\s+/g, "").split(",");\n for (var i2 = 0; i2 < dt.length; ++i2) {\n var v = dt[i2], k = ks[i2];\n if (typeof v == "function") {\n fnStr += ";" + k + "=";\n var st_1 = v.toString();\n if (v.prototype) {\n if (st_1.indexOf("[native code]") != -1) {\n var spInd = st_1.indexOf(" ", 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf("(", spInd));\n } else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ";" + k + ".prototype." + t + "=" + v.prototype[t].toString();\n }\n } else\n fnStr += st_1;\n } else\n td2[k] = v;\n }\n return fnStr;\n };\n var ch = [];\n var cbfs = function(v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n };\n var wrkr = function(fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = "", td_1 = {}, m = fns.length - 1;\n for (var i2 = 0; i2 < m; ++i2)\n fnStr = wcln(fns[i2], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td2 = mrg({}, ch[id].e);\n return wk(ch[id].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init.toString() + "}", id, td2, cbfs(td2), cb);\n };\n var bInflt = function() {\n return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt];\n };\n var pbf = function(msg) {\n return postMessage(msg, [msg.buffer]);\n };\n var gopt = function(o) {\n return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n };\n };\n var cbify = function(dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function(err2, dat2) {\n w.terminate();\n cb(err2, dat2);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function() {\n w.terminate();\n };\n };\n var b2 = function(d, b) {\n return d[b] | d[b + 1] << 8;\n };\n var b4 = function(d, b) {\n return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0;\n };\n var b8 = function(d, b) {\n return b4(d, b) + b4(d, b + 4) * 4294967296;\n };\n var gzs = function(d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, "invalid gzip data");\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n };\n var Inflate = /* @__PURE__ */ function() {\n function Inflate2(opts, cb) {\n if (typeof opts == "function")\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate2.prototype.e = function(c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate2.prototype.c = function(final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;\n };\n Inflate2.prototype.push = function(chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate2;\n }();\n function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != "function")\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function(ev) {\n return pbf(inflateSync(ev.data[0], gopt(ev.data[1])));\n }, 1, cb);\n }\n function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n }\n var Gunzip = /* @__PURE__ */ function() {\n function Gunzip2(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n Gunzip2.prototype.push = function(chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n } else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n Inflate.prototype.c.call(this, final);\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip2;\n }();\n var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();\n try {\n td.decode(et, { stream: true });\n } catch (e) {\n }\n var dutf8 = function(d) {\n for (var r = "", i2 = 0; ; ) {\n var c = d[i2++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i2 + eb > d.length)\n return { s: r, r: slc(d, i2 - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i2++] & 63) << 12 | (d[i2++] & 63) << 6 | d[i2++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n } else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | d[i2++] & 63);\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i2++] & 63) << 6 | d[i2++] & 63);\n }\n };\n function strFromU8(dat, latin1) {\n if (latin1) {\n var r = "";\n for (var i2 = 0; i2 < dat.length; i2 += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i2, i2 + 16384));\n return r;\n } else if (td) {\n return td.decode(dat);\n } else {\n var _a2 = dutf8(dat), s = _a2.s, r = _a2.r;\n if (r.length)\n err(8);\n return s;\n }\n }\n var slzh = function(d, b) {\n return b + 30 + b2(d, b + 26) + b2(d, b + 28);\n };\n var zh = function(d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n };\n var z64e = function(d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n };\n var mt = typeof queueMicrotask == "function" ? queueMicrotask : typeof setTimeout == "function" ? setTimeout : function(fn) {\n fn();\n };\n function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != "function")\n err(7);\n var term = [];\n var tAll = function() {\n for (var i3 = 0; i3 < term.length; ++i3)\n term[i3]();\n };\n var files = {};\n var cbd = function(a, b) {\n mt(function() {\n cb(a, b);\n });\n };\n mt(function() {\n cbd = cb;\n });\n var e = data.length - 22;\n for (; b4(data, e) != 101010256; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 101075792;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function(i3) {\n var _a2 = zh(data, o, z), c_1 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off);\n o = no;\n var cbl = function(e2, d) {\n if (e2) {\n tAll();\n cbd(e2, null);\n } else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n } catch (e2) {\n cbl(e2, null);\n }\n } else\n term.push(inflate(infl, { size: su }, cbl));\n } else\n cbl(err(14, "unknown compression type " + c_1, 1), null);\n } else\n cbl(null, null);\n };\n for (var i2 = 0; i2 < c; ++i2) {\n _loop_3(i2);\n }\n } else\n cbd(null, {});\n return tAll;\n }\n function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 101010256; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 101075792;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i2 = 0; i2 < c; ++i2) {\n var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, "unknown compression type " + c_2);\n }\n }\n return files;\n }\n /**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\n const REVISION = "180";\n const NoColorSpace = "";\n const SRGBColorSpace = "srgb";\n const LinearSRGBColorSpace = "srgb-linear";\n const LinearTransfer = "linear";\n const SRGBTransfer = "srgb";\n function clamp(value, min, max2) {\n return Math.max(min, Math.min(max2, value));\n }\n function euclideanModulo(n, m) {\n return (n % m + m) % m;\n }\n function lerp(x2, y, t) {\n return (1 - t) * x2 + t * y;\n }\n class Quaternion {\n /**\n * Constructs a new quaternion.\n *\n * @param {number} [x=0] - The x value of this quaternion.\n * @param {number} [y=0] - The y value of this quaternion.\n * @param {number} [z=0] - The z value of this quaternion.\n * @param {number} [w=1] - The w value of this quaternion.\n */\n constructor(x2 = 0, y = 0, z = 0, w = 1) {\n this.isQuaternion = true;\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n /**\n * Interpolates between two quaternions via SLERP. This implementation assumes the\n * quaternion data are managed in flat arrays.\n *\n * @param {Array} dst - The destination array.\n * @param {number} dstOffset - An offset into the destination array.\n * @param {Array} src0 - The source array of the first quaternion.\n * @param {number} srcOffset0 - An offset into the first source array.\n * @param {Array} src1 - The source array of the second quaternion.\n * @param {number} srcOffset1 - An offset into the second source array.\n * @param {number} t - The interpolation factor in the range `[0,1]`.\n * @see {@link Quaternion#slerp}\n */\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n if (t === 0) {\n dst[dstOffset + 0] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n return;\n }\n if (t === 1) {\n dst[dstOffset + 0] = x1;\n dst[dstOffset + 1] = y1;\n dst[dstOffset + 2] = z1;\n dst[dstOffset + 3] = w1;\n return;\n }\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n let s = 1 - t;\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n if (sqrSin > Number.EPSILON) {\n const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n const tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n if (s === 1 - t) {\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n /**\n * Multiplies two quaternions. This implementation assumes the quaternion data are managed\n * in flat arrays.\n *\n * @param {Array} dst - The destination array.\n * @param {number} dstOffset - An offset into the destination array.\n * @param {Array} src0 - The source array of the first quaternion.\n * @param {number} srcOffset0 - An offset into the first source array.\n * @param {Array} src1 - The source array of the second quaternion.\n * @param {number} srcOffset1 - An offset into the second source array.\n * @return {Array} The destination array.\n * @see {@link Quaternion#multiplyQuaternions}.\n */\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n const x0 = src0[srcOffset0];\n const y0 = src0[srcOffset0 + 1];\n const z0 = src0[srcOffset0 + 2];\n const w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1];\n const y1 = src1[srcOffset1 + 1];\n const z1 = src1[srcOffset1 + 2];\n const w1 = src1[srcOffset1 + 3];\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n return dst;\n }\n /**\n * The x value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n /**\n * The y value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n /**\n * The z value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n /**\n * The w value of this quaternion.\n *\n * @type {number}\n * @default 1\n */\n get w() {\n return this._w;\n }\n set w(value) {\n this._w = value;\n this._onChangeCallback();\n }\n /**\n * Sets the quaternion components.\n *\n * @param {number} x - The x value of this quaternion.\n * @param {number} y - The y value of this quaternion.\n * @param {number} z - The z value of this quaternion.\n * @param {number} w - The w value of this quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n set(x2, y, z, w) {\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onChangeCallback();\n return this;\n }\n /**\n * Returns a new quaternion with copied values from this instance.\n *\n * @return {Quaternion} A clone of this instance.\n */\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._w);\n }\n /**\n * Copies the values of the given quaternion to this instance.\n *\n * @param {Quaternion} quaternion - The quaternion to copy.\n * @return {Quaternion} A reference to this quaternion.\n */\n copy(quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the rotation specified by the given\n * Euler angles.\n *\n * @param {Euler} euler - The Euler angles.\n * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromEuler(euler, update = true) {\n const x2 = euler._x, y = euler._y, z = euler._z, order = euler._order;\n const cos = Math.cos;\n const sin = Math.sin;\n const c1 = cos(x2 / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n const s1 = sin(x2 / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n switch (order) {\n case "XYZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "YXZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "ZXY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "ZYX":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "YZX":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "XZY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n default:\n console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + order);\n }\n if (update === true) this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the given axis and angle.\n *\n * @param {Vector3} axis - The normalized axis.\n * @param {number} angle - The angle in radians.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromAxisAngle(axis, angle) {\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the given rotation matrix.\n *\n * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromRotationMatrix(m) {\n const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion to the rotation required to rotate the direction vector\n * `vFrom` to the direction vector `vTo`.\n *\n * @param {Vector3} vFrom - The first (normalized) direction vector.\n * @param {Vector3} vTo - The second (normalized) direction vector.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromUnitVectors(vFrom, vTo) {\n let r = vFrom.dot(vTo) + 1;\n if (r < 1e-8) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n }\n /**\n * Returns the angle between this quaternion and the given one in radians.\n *\n * @param {Quaternion} q - The quaternion to compute the angle with.\n * @return {number} The angle in radians.\n */\n angleTo(q) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n }\n /**\n * Rotates this quaternion by a given angular step to the given quaternion.\n * The method ensures that the final quaternion will not overshoot `q`.\n *\n * @param {Quaternion} q - The target quaternion.\n * @param {number} step - The angular step in radians.\n * @return {Quaternion} A reference to this quaternion.\n */\n rotateTowards(q, step) {\n const angle = this.angleTo(q);\n if (angle === 0) return this;\n const t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n }\n /**\n * Sets this quaternion to the identity quaternion; that is, to the\n * quaternion that represents "no rotation".\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n identity() {\n return this.set(0, 0, 0, 1);\n }\n /**\n * Inverts this quaternion via {@link Quaternion#conjugate}. The\n * quaternion is assumed to have unit length.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n invert() {\n return this.conjugate();\n }\n /**\n * Returns the rotational conjugate of this quaternion. The conjugate of a\n * quaternion represents the same rotation in the opposite direction about\n * the rotational axis.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onChangeCallback();\n return this;\n }\n /**\n * Calculates the dot product of this quaternion and the given one.\n *\n * @param {Quaternion} v - The quaternion to compute the dot product with.\n * @return {number} The result of the dot product.\n */\n dot(v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n }\n /**\n * Computes the squared Euclidean length (straight-line length) of this quaternion,\n * considered as a 4 dimensional vector. This can be useful if you are comparing the\n * lengths of two quaternions, as this is a slightly more efficient calculation than\n * {@link Quaternion#length}.\n *\n * @return {number} The squared Euclidean length.\n */\n lengthSq() {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n }\n /**\n * Computes the Euclidean length (straight-line length) of this quaternion,\n * considered as a 4 dimensional vector.\n *\n * @return {number} The Euclidean length.\n */\n length() {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n }\n /**\n * Normalizes this quaternion - that is, calculated the quaternion that performs\n * the same rotation as this one, but has a length equal to `1`.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n normalize() {\n let l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this._onChangeCallback();\n return this;\n }\n /**\n * Multiplies this quaternion by the given one.\n *\n * @param {Quaternion} q - The quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n multiply(q) {\n return this.multiplyQuaternions(this, q);\n }\n /**\n * Pre-multiplies this quaternion by the given one.\n *\n * @param {Quaternion} q - The quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n premultiply(q) {\n return this.multiplyQuaternions(q, this);\n }\n /**\n * Multiplies the given quaternions and stores the result in this instance.\n *\n * @param {Quaternion} a - The first quaternion.\n * @param {Quaternion} b - The second quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n multiplyQuaternions(a, b) {\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this._onChangeCallback();\n return this;\n }\n /**\n * Performs a spherical linear interpolation between quaternions.\n *\n * @param {Quaternion} qb - The target quaternion.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {Quaternion} A reference to this quaternion.\n */\n slerp(qb, t) {\n if (t === 0) return this;\n if (t === 1) return this.copy(qb);\n const x2 = this._x, y = this._y, z = this._z, w = this._w;\n let cosHalfTheta = w * qb._w + x2 * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1) {\n this._w = w;\n this._x = x2;\n this._y = y;\n this._z = z;\n return this;\n }\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x2 + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n this.normalize();\n return this;\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x2 * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this._onChangeCallback();\n return this;\n }\n /**\n * Performs a spherical linear interpolation between the given quaternions\n * and stores the result in this quaternion.\n *\n * @param {Quaternion} qa - The source quaternion.\n * @param {Quaternion} qb - The target quaternion.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {Quaternion} A reference to this quaternion.\n */\n slerpQuaternions(qa, qb, t) {\n return this.copy(qa).slerp(qb, t);\n }\n /**\n * Sets this quaternion to a uniformly random, normalized quaternion.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n random() {\n const theta1 = 2 * Math.PI * Math.random();\n const theta2 = 2 * Math.PI * Math.random();\n const x0 = Math.random();\n const r1 = Math.sqrt(1 - x0);\n const r2 = Math.sqrt(x0);\n return this.set(\n r1 * Math.sin(theta1),\n r1 * Math.cos(theta1),\n r2 * Math.sin(theta2),\n r2 * Math.cos(theta2)\n );\n }\n /**\n * Returns `true` if this quaternion is equal with the given one.\n *\n * @param {Quaternion} quaternion - The quaternion to test for equality.\n * @return {boolean} Whether this quaternion is equal with the given one.\n */\n equals(quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n }\n /**\n * Sets this quaternion\'s components from the given array.\n *\n * @param {Array} array - An array holding the quaternion component values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Quaternion} A reference to this quaternion.\n */\n fromArray(array, offset = 0) {\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onChangeCallback();\n return this;\n }\n /**\n * Writes the components of this quaternion to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the quaternion components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The quaternion components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n }\n /**\n * Sets the components of this quaternion from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.\n * @param {number} index - The index into the attribute.\n * @return {Quaternion} A reference to this quaternion.\n */\n fromBufferAttribute(attribute, index) {\n this._x = attribute.getX(index);\n this._y = attribute.getY(index);\n this._z = attribute.getZ(index);\n this._w = attribute.getW(index);\n this._onChangeCallback();\n return this;\n }\n /**\n * This methods defines the serialization result of this class. Returns the\n * numerical elements of this quaternion in an array of format `[x, y, z, w]`.\n *\n * @return {Array} The serialized quaternion.\n */\n toJSON() {\n return this.toArray();\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n *[Symbol.iterator]() {\n yield this._x;\n yield this._y;\n yield this._z;\n yield this._w;\n }\n }\n class Vector3 {\n /**\n * Constructs a new 3D vector.\n *\n * @param {number} [x=0] - The x value of this vector.\n * @param {number} [y=0] - The y value of this vector.\n * @param {number} [z=0] - The z value of this vector.\n */\n constructor(x2 = 0, y = 0, z = 0) {\n Vector3.prototype.isVector3 = true;\n this.x = x2;\n this.y = y;\n this.z = z;\n }\n /**\n * Sets the vector components.\n *\n * @param {number} x - The value of the x component.\n * @param {number} y - The value of the y component.\n * @param {number} z - The value of the z component.\n * @return {Vector3} A reference to this vector.\n */\n set(x2, y, z) {\n if (z === void 0) z = this.z;\n this.x = x2;\n this.y = y;\n this.z = z;\n return this;\n }\n /**\n * Sets the vector components to the same value.\n *\n * @param {number} scalar - The value to set for all vector components.\n * @return {Vector3} A reference to this vector.\n */\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n }\n /**\n * Sets the vector\'s x component to the given value\n *\n * @param {number} x - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setX(x2) {\n this.x = x2;\n return this;\n }\n /**\n * Sets the vector\'s y component to the given value\n *\n * @param {number} y - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n /**\n * Sets the vector\'s z component to the given value\n *\n * @param {number} z - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setZ(z) {\n this.z = z;\n return this;\n }\n /**\n * Allows to set a vector component with an index.\n *\n * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n * @param {number} value - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error("index is out of range: " + index);\n }\n return this;\n }\n /**\n * Returns the value of the vector component which matches the given index.\n *\n * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n * @return {number} A vector component value.\n */\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error("index is out of range: " + index);\n }\n }\n /**\n * Returns a new vector with copied values from this instance.\n *\n * @return {Vector3} A clone of this instance.\n */\n clone() {\n return new this.constructor(this.x, this.y, this.z);\n }\n /**\n * Copies the values of the given vector to this instance.\n *\n * @param {Vector3} v - The vector to copy.\n * @return {Vector3} A reference to this vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n }\n /**\n * Adds the given vector to this instance.\n *\n * @param {Vector3} v - The vector to add.\n * @return {Vector3} A reference to this vector.\n */\n add(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n }\n /**\n * Adds the given scalar value to all components of this instance.\n *\n * @param {number} s - The scalar to add.\n * @return {Vector3} A reference to this vector.\n */\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n }\n /**\n * Adds the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n }\n /**\n * Adds the given vector scaled by the given factor to this instance.\n *\n * @param {Vector3|Vector4} v - The vector.\n * @param {number} s - The factor that scales `v`.\n * @return {Vector3} A reference to this vector.\n */\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n }\n /**\n * Subtracts the given vector from this instance.\n *\n * @param {Vector3} v - The vector to subtract.\n * @return {Vector3} A reference to this vector.\n */\n sub(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n }\n /**\n * Subtracts the given scalar value from all components of this instance.\n *\n * @param {number} s - The scalar to subtract.\n * @return {Vector3} A reference to this vector.\n */\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n }\n /**\n * Subtracts the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n }\n /**\n * Multiplies the given vector with this instance.\n *\n * @param {Vector3} v - The vector to multiply.\n * @return {Vector3} A reference to this vector.\n */\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n }\n /**\n * Multiplies the given scalar value with all components of this instance.\n *\n * @param {number} scalar - The scalar to multiply.\n * @return {Vector3} A reference to this vector.\n */\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n }\n /**\n * Multiplies the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n multiplyVectors(a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n }\n /**\n * Applies the given Euler rotation to this vector.\n *\n * @param {Euler} euler - The Euler angles.\n * @return {Vector3} A reference to this vector.\n */\n applyEuler(euler) {\n return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n }\n /**\n * Applies a rotation specified by an axis and an angle to this vector.\n *\n * @param {Vector3} axis - A normalized vector representing the rotation axis.\n * @param {number} angle - The angle in radians.\n * @return {Vector3} A reference to this vector.\n */\n applyAxisAngle(axis, angle) {\n return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n }\n /**\n * Multiplies this vector with the given 3x3 matrix.\n *\n * @param {Matrix3} m - The 3x3 matrix.\n * @return {Vector3} A reference to this vector.\n */\n applyMatrix3(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[3] * y + e[6] * z;\n this.y = e[1] * x2 + e[4] * y + e[7] * z;\n this.z = e[2] * x2 + e[5] * y + e[8] * z;\n return this;\n }\n /**\n * Multiplies this vector by the given normal matrix and normalizes\n * the result.\n *\n * @param {Matrix3} m - The normal matrix.\n * @return {Vector3} A reference to this vector.\n */\n applyNormalMatrix(m) {\n return this.applyMatrix3(m).normalize();\n }\n /**\n * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and\n * divides by perspective.\n *\n * @param {Matrix4} m - The matrix to apply.\n * @return {Vector3} A reference to this vector.\n */\n applyMatrix4(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n const w = 1 / (e[3] * x2 + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x2 + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x2 + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x2 + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n }\n /**\n * Applies the given Quaternion to this vector.\n *\n * @param {Quaternion} q - The Quaternion.\n * @return {Vector3} A reference to this vector.\n */\n applyQuaternion(q) {\n const vx = this.x, vy = this.y, vz = this.z;\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n const tx = 2 * (qy * vz - qz * vy);\n const ty = 2 * (qz * vx - qx * vz);\n const tz = 2 * (qx * vy - qy * vx);\n this.x = vx + qw * tx + qy * tz - qz * ty;\n this.y = vy + qw * ty + qz * tx - qx * tz;\n this.z = vz + qw * tz + qx * ty - qy * tx;\n return this;\n }\n /**\n * Projects this vector from world space into the camera\'s normalized\n * device coordinate (NDC) space.\n *\n * @param {Camera} camera - The camera.\n * @return {Vector3} A reference to this vector.\n */\n project(camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n }\n /**\n * Unprojects this vector from the camera\'s normalized device coordinate (NDC)\n * space into world space.\n *\n * @param {Camera} camera - The camera.\n * @return {Vector3} A reference to this vector.\n */\n unproject(camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n }\n /**\n * Transforms the direction of this vector by a matrix (the upper left 3 x 3\n * subset of the given 4x4 matrix and then normalizes the result.\n *\n * @param {Matrix4} m - The matrix.\n * @return {Vector3} A reference to this vector.\n */\n transformDirection(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[4] * y + e[8] * z;\n this.y = e[1] * x2 + e[5] * y + e[9] * z;\n this.z = e[2] * x2 + e[6] * y + e[10] * z;\n return this.normalize();\n }\n /**\n * Divides this instance by the given vector.\n *\n * @param {Vector3} v - The vector to divide.\n * @return {Vector3} A reference to this vector.\n */\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n }\n /**\n * Divides this vector by the given scalar.\n *\n * @param {number} scalar - The scalar to divide.\n * @return {Vector3} A reference to this vector.\n */\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n /**\n * If this vector\'s x, y or z value is greater than the given vector\'s x, y or z\n * value, replace that value with the corresponding min value.\n *\n * @param {Vector3} v - The vector.\n * @return {Vector3} A reference to this vector.\n */\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z value is less than the given vector\'s x, y or z\n * value, replace that value with the corresponding max value.\n *\n * @param {Vector3} v - The vector.\n * @return {Vector3} A reference to this vector.\n */\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z value is greater than the max vector\'s x, y or z\n * value, it is replaced by the corresponding value.\n * If this vector\'s x, y or z value is less than the min vector\'s x, y or z value,\n * it is replaced by the corresponding value.\n *\n * @param {Vector3} min - The minimum x, y and z values.\n * @param {Vector3} max - The maximum x, y and z values in the desired range.\n * @return {Vector3} A reference to this vector.\n */\n clamp(min, max2) {\n this.x = clamp(this.x, min.x, max2.x);\n this.y = clamp(this.y, min.y, max2.y);\n this.z = clamp(this.z, min.z, max2.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z values are greater than the max value, they are\n * replaced by the max value.\n * If this vector\'s x, y or z values are less than the min value, they are\n * replaced by the min value.\n *\n * @param {number} minVal - The minimum value the components will be clamped to.\n * @param {number} maxVal - The maximum value the components will be clamped to.\n * @return {Vector3} A reference to this vector.\n */\n clampScalar(minVal, maxVal) {\n this.x = clamp(this.x, minVal, maxVal);\n this.y = clamp(this.y, minVal, maxVal);\n this.z = clamp(this.z, minVal, maxVal);\n return this;\n }\n /**\n * If this vector\'s length is greater than the max value, it is replaced by\n * the max value.\n * If this vector\'s length is less than the min value, it is replaced by the\n * min value.\n *\n * @param {number} min - The minimum value the vector length will be clamped to.\n * @param {number} max - The maximum value the vector length will be clamped to.\n * @return {Vector3} A reference to this vector.\n */\n clampLength(min, max2) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max2));\n }\n /**\n * The components of this vector are rounded down to the nearest integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded up to the nearest integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded to the nearest integer value\n *\n * @return {Vector3} A reference to this vector.\n */\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded towards zero (up if negative,\n * down if positive) to an integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n roundToZero() {\n this.x = Math.trunc(this.x);\n this.y = Math.trunc(this.y);\n this.z = Math.trunc(this.z);\n return this;\n }\n /**\n * Inverts this vector - i.e. sets x = -x, y = -y and z = -z.\n *\n * @return {Vector3} A reference to this vector.\n */\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n }\n /**\n * Calculates the dot product of the given vector with this instance.\n *\n * @param {Vector3} v - The vector to compute the dot product with.\n * @return {number} The result of the dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n // TODO lengthSquared?\n /**\n * Computes the square of the Euclidean length (straight-line length) from\n * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should\n * compare the length squared instead as it is slightly more efficient to calculate.\n *\n * @return {number} The square length of this vector.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n /**\n * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).\n *\n * @return {number} The length of this vector.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n /**\n * Computes the Manhattan length of this vector.\n *\n * @return {number} The length of this vector.\n */\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n }\n /**\n * Converts this vector to a unit vector - that is, sets it equal to a vector\n * with the same direction as this one, but with a vector length of `1`.\n *\n * @return {Vector3} A reference to this vector.\n */\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n /**\n * Sets this vector to a vector with the same direction as this one, but\n * with the specified length.\n *\n * @param {number} length - The new length of this vector.\n * @return {Vector3} A reference to this vector.\n */\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n /**\n * Linearly interpolates between the given vector and this instance, where\n * alpha is the percent distance along the line - alpha = 0 will be this\n * vector, and alpha = 1 will be the given one.\n *\n * @param {Vector3} v - The vector to interpolate towards.\n * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n * @return {Vector3} A reference to this vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n }\n /**\n * Linearly interpolates between the given vectors, where alpha is the percent\n * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n * be the second one. The result is stored in this instance.\n *\n * @param {Vector3} v1 - The first vector.\n * @param {Vector3} v2 - The second vector.\n * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n * @return {Vector3} A reference to this vector.\n */\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n }\n /**\n * Calculates the cross product of the given vector with this instance.\n *\n * @param {Vector3} v - The vector to compute the cross product with.\n * @return {Vector3} The result of the cross product.\n */\n cross(v) {\n return this.crossVectors(this, v);\n }\n /**\n * Calculates the cross product of the given vectors and stores the result\n * in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n crossVectors(a, b) {\n const ax = a.x, ay = a.y, az = a.z;\n const bx = b.x, by = b.y, bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n /**\n * Projects this vector onto the given one.\n *\n * @param {Vector3} v - The vector to project to.\n * @return {Vector3} A reference to this vector.\n */\n projectOnVector(v) {\n const denominator = v.lengthSq();\n if (denominator === 0) return this.set(0, 0, 0);\n const scalar = v.dot(this) / denominator;\n return this.copy(v).multiplyScalar(scalar);\n }\n /**\n * Projects this vector onto a plane by subtracting this\n * vector projected onto the plane\'s normal from this vector.\n *\n * @param {Vector3} planeNormal - The plane normal.\n * @return {Vector3} A reference to this vector.\n */\n projectOnPlane(planeNormal) {\n _vector$c.copy(this).projectOnVector(planeNormal);\n return this.sub(_vector$c);\n }\n /**\n * Reflects this vector off a plane orthogonal to the given normal vector.\n *\n * @param {Vector3} normal - The (normalized) normal vector.\n * @return {Vector3} A reference to this vector.\n */\n reflect(normal) {\n return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n }\n /**\n * Returns the angle between the given vector and this instance in radians.\n *\n * @param {Vector3} v - The vector to compute the angle with.\n * @return {number} The angle in radians.\n */\n angleTo(v) {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n if (denominator === 0) return Math.PI / 2;\n const theta = this.dot(v) / denominator;\n return Math.acos(clamp(theta, -1, 1));\n }\n /**\n * Computes the distance from the given vector to this instance.\n *\n * @param {Vector3} v - The vector to compute the distance to.\n * @return {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n /**\n * Computes the squared distance from the given vector to this instance.\n * If you are just comparing the distance with another distance, you should compare\n * the distance squared instead as it is slightly more efficient to calculate.\n *\n * @param {Vector3} v - The vector to compute the squared distance to.\n * @return {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n }\n /**\n * Computes the Manhattan distance from the given vector to this instance.\n *\n * @param {Vector3} v - The vector to compute the Manhattan distance to.\n * @return {number} The Manhattan distance.\n */\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n }\n /**\n * Sets the vector components from the given spherical coordinates.\n *\n * @param {Spherical} s - The spherical coordinates.\n * @return {Vector3} A reference to this vector.\n */\n setFromSpherical(s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n }\n /**\n * Sets the vector components from the given spherical coordinates.\n *\n * @param {number} radius - The radius.\n * @param {number} phi - The phi angle in radians.\n * @param {number} theta - The theta angle in radians.\n * @return {Vector3} A reference to this vector.\n */\n setFromSphericalCoords(radius, phi, theta) {\n const sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n }\n /**\n * Sets the vector components from the given cylindrical coordinates.\n *\n * @param {Cylindrical} c - The cylindrical coordinates.\n * @return {Vector3} A reference to this vector.\n */\n setFromCylindrical(c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n }\n /**\n * Sets the vector components from the given cylindrical coordinates.\n *\n * @param {number} radius - The radius.\n * @param {number} theta - The theta angle in radians.\n * @param {number} y - The y value.\n * @return {Vector3} A reference to this vector.\n */\n setFromCylindricalCoords(radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n }\n /**\n * Sets the vector components to the position elements of the\n * given transformation matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixPosition(m) {\n const e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n }\n /**\n * Sets the vector components to the scale elements of the\n * given transformation matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixScale(m) {\n const sx = this.setFromMatrixColumn(m, 0).length();\n const sy = this.setFromMatrixColumn(m, 1).length();\n const sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n }\n /**\n * Sets the vector components from the specified matrix column.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @param {number} index - The column index.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixColumn(m, index) {\n return this.fromArray(m.elements, index * 4);\n }\n /**\n * Sets the vector components from the specified matrix column.\n *\n * @param {Matrix3} m - The 3x3 matrix.\n * @param {number} index - The column index.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrix3Column(m, index) {\n return this.fromArray(m.elements, index * 3);\n }\n /**\n * Sets the vector components from the given Euler angles.\n *\n * @param {Euler} e - The Euler angles to set.\n * @return {Vector3} A reference to this vector.\n */\n setFromEuler(e) {\n this.x = e._x;\n this.y = e._y;\n this.z = e._z;\n return this;\n }\n /**\n * Sets the vector components from the RGB components of the\n * given color.\n *\n * @param {Color} c - The color to set.\n * @return {Vector3} A reference to this vector.\n */\n setFromColor(c) {\n this.x = c.r;\n this.y = c.g;\n this.z = c.b;\n return this;\n }\n /**\n * Returns `true` if this vector is equal with the given one.\n *\n * @param {Vector3} v - The vector to test for equality.\n * @return {boolean} Whether this vector is equal with the given one.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n }\n /**\n * Sets this vector\'s x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`\n * and z value to be `array[ offset + 2 ]`.\n *\n * @param {Array} array - An array holding the vector component values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Vector3} A reference to this vector.\n */\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n }\n /**\n * Writes the components of this vector to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the vector components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The vector components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n }\n /**\n * Sets the components of this vector from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n * @param {number} index - The index into the attribute.\n * @return {Vector3} A reference to this vector.\n */\n fromBufferAttribute(attribute, index) {\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n /**\n * Sets each component of this vector to a pseudo-random value between `0` and\n * `1`, excluding `1`.\n *\n * @return {Vector3} A reference to this vector.\n */\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n }\n /**\n * Sets this vector to a uniformly random point on a unit sphere.\n *\n * @return {Vector3} A reference to this vector.\n */\n randomDirection() {\n const theta = Math.random() * Math.PI * 2;\n const u = Math.random() * 2 - 1;\n const c = Math.sqrt(1 - u * u);\n this.x = c * Math.cos(theta);\n this.y = u;\n this.z = c * Math.sin(theta);\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n }\n const _vector$c = /* @__PURE__ */ new Vector3();\n const _quaternion$4 = /* @__PURE__ */ new Quaternion();\n class Matrix3 {\n /**\n * Constructs a new 3x3 matrix. The arguments are supposed to be\n * in row-major order. If no arguments are provided, the constructor\n * initializes the matrix as an identity matrix.\n *\n * @param {number} [n11] - 1-1 matrix element.\n * @param {number} [n12] - 1-2 matrix element.\n * @param {number} [n13] - 1-3 matrix element.\n * @param {number} [n21] - 2-1 matrix element.\n * @param {number} [n22] - 2-2 matrix element.\n * @param {number} [n23] - 2-3 matrix element.\n * @param {number} [n31] - 3-1 matrix element.\n * @param {number} [n32] - 3-2 matrix element.\n * @param {number} [n33] - 3-3 matrix element.\n */\n constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n Matrix3.prototype.isMatrix3 = true;\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ];\n if (n11 !== void 0) {\n this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33);\n }\n }\n /**\n * Sets the elements of the matrix.The arguments are supposed to be\n * in row-major order.\n *\n * @param {number} [n11] - 1-1 matrix element.\n * @param {number} [n12] - 1-2 matrix element.\n * @param {number} [n13] - 1-3 matrix element.\n * @param {number} [n21] - 2-1 matrix element.\n * @param {number} [n22] - 2-2 matrix element.\n * @param {number} [n23] - 2-3 matrix element.\n * @param {number} [n31] - 3-1 matrix element.\n * @param {number} [n32] - 3-2 matrix element.\n * @param {number} [n33] - 3-3 matrix element.\n * @return {Matrix3} A reference to this matrix.\n */\n set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n const te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n }\n /**\n * Sets this matrix to the 3x3 identity matrix.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n identity() {\n this.set(\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Copies the values of the given matrix to this instance.\n *\n * @param {Matrix3} m - The matrix to copy.\n * @return {Matrix3} A reference to this matrix.\n */\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n }\n /**\n * Extracts the basis of this matrix into the three axis vectors provided.\n *\n * @param {Vector3} xAxis - The basis\'s x axis.\n * @param {Vector3} yAxis - The basis\'s y axis.\n * @param {Vector3} zAxis - The basis\'s z axis.\n * @return {Matrix3} A reference to this matrix.\n */\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrix3Column(this, 0);\n yAxis.setFromMatrix3Column(this, 1);\n zAxis.setFromMatrix3Column(this, 2);\n return this;\n }\n /**\n * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n setFromMatrix4(m) {\n const me = m.elements;\n this.set(\n me[0],\n me[4],\n me[8],\n me[1],\n me[5],\n me[9],\n me[2],\n me[6],\n me[10]\n );\n return this;\n }\n /**\n * Post-multiplies this matrix by the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix to multiply with.\n * @return {Matrix3} A reference to this matrix.\n */\n multiply(m) {\n return this.multiplyMatrices(this, m);\n }\n /**\n * Pre-multiplies this matrix by the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix to multiply with.\n * @return {Matrix3} A reference to this matrix.\n */\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n /**\n * Multiples the given 3x3 matrices and stores the result\n * in this matrix.\n *\n * @param {Matrix3} a - The first matrix.\n * @param {Matrix3} b - The second matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n const b11 = be[0], b12 = be[3], b13 = be[6];\n const b21 = be[1], b22 = be[4], b23 = be[7];\n const b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n }\n /**\n * Multiplies every component of the matrix by the given scalar.\n *\n * @param {number} s - The scalar.\n * @return {Matrix3} A reference to this matrix.\n */\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n }\n /**\n * Computes and returns the determinant of this matrix.\n *\n * @return {number} The determinant.\n */\n determinant() {\n const te = this.elements;\n const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i2 = te[8];\n return a * e * i2 - a * f * h - b * d * i2 + b * f * g + c * d * h - c * e * g;\n }\n /**\n * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n * You can not invert with a determinant of zero. If you attempt this, the method produces\n * a zero matrix instead.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n }\n /**\n * Transposes this matrix in place.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n transpose() {\n let tmp;\n const m = this.elements;\n tmp = m[1];\n m[1] = m[3];\n m[3] = tmp;\n tmp = m[2];\n m[2] = m[6];\n m[6] = tmp;\n tmp = m[5];\n m[5] = m[7];\n m[7] = tmp;\n return this;\n }\n /**\n * Computes the normal matrix which is the inverse transpose of the upper\n * left 3x3 portion of the given 4x4 matrix.\n *\n * @param {Matrix4} matrix4 - The 4x4 matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n getNormalMatrix(matrix4) {\n return this.setFromMatrix4(matrix4).invert().transpose();\n }\n /**\n * Transposes this matrix into the supplied array, and returns itself unchanged.\n *\n * @param {Array} r - An array to store the transposed matrix elements.\n * @return {Matrix3} A reference to this matrix.\n */\n transposeIntoArray(r) {\n const m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n }\n /**\n * Sets the UV transform matrix from offset, repeat, rotation, and center.\n *\n * @param {number} tx - Offset x.\n * @param {number} ty - Offset y.\n * @param {number} sx - Repeat x.\n * @param {number} sy - Repeat y.\n * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise.\n * @param {number} cx - Center x of rotation.\n * @param {number} cy - Center y of rotation\n * @return {Matrix3} A reference to this matrix.\n */\n setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n this.set(\n sx * c,\n sx * s,\n -sx * (c * cx + s * cy) + cx + tx,\n -sy * s,\n sy * c,\n -sy * (-s * cx + c * cy) + cy + ty,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Scales this matrix with the given scalar values.\n *\n * @param {number} sx - The amount to scale in the X axis.\n * @param {number} sy - The amount to scale in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n scale(sx, sy) {\n this.premultiply(_m3.makeScale(sx, sy));\n return this;\n }\n /**\n * Rotates this matrix by the given angle.\n *\n * @param {number} theta - The rotation in radians.\n * @return {Matrix3} A reference to this matrix.\n */\n rotate(theta) {\n this.premultiply(_m3.makeRotation(-theta));\n return this;\n }\n /**\n * Translates this matrix by the given scalar values.\n *\n * @param {number} tx - The amount to translate in the X axis.\n * @param {number} ty - The amount to translate in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n translate(tx, ty) {\n this.premultiply(_m3.makeTranslation(tx, ty));\n return this;\n }\n // for 2D Transforms\n /**\n * Sets this matrix as a 2D translation transform.\n *\n * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector.\n * @param {number} y - The amount to translate in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n makeTranslation(x2, y) {\n if (x2.isVector2) {\n this.set(\n 1,\n 0,\n x2.x,\n 0,\n 1,\n x2.y,\n 0,\n 0,\n 1\n );\n } else {\n this.set(\n 1,\n 0,\n x2,\n 0,\n 1,\n y,\n 0,\n 0,\n 1\n );\n }\n return this;\n }\n /**\n * Sets this matrix as a 2D rotational transformation.\n *\n * @param {number} theta - The rotation in radians.\n * @return {Matrix3} A reference to this matrix.\n */\n makeRotation(theta) {\n const c = Math.cos(theta);\n const s = Math.sin(theta);\n this.set(\n c,\n -s,\n 0,\n s,\n c,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Sets this matrix as a 2D scale transform.\n *\n * @param {number} x - The amount to scale in the X axis.\n * @param {number} y - The amount to scale in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n makeScale(x2, y) {\n this.set(\n x2,\n 0,\n 0,\n 0,\n y,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Returns `true` if this matrix is equal with the given one.\n *\n * @param {Matrix3} matrix - The matrix to test for equality.\n * @return {boolean} Whether this matrix is equal with the given one.\n */\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i2 = 0; i2 < 9; i2++) {\n if (te[i2] !== me[i2]) return false;\n }\n return true;\n }\n /**\n * Sets the elements of the matrix from the given array.\n *\n * @param {Array} array - The matrix elements in column-major order.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Matrix3} A reference to this matrix.\n */\n fromArray(array, offset = 0) {\n for (let i2 = 0; i2 < 9; i2++) {\n this.elements[i2] = array[i2 + offset];\n }\n return this;\n }\n /**\n * Writes the elements of this matrix to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The matrix elements in column-major order.\n */\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n /**\n * Returns a matrix with copied values from this instance.\n *\n * @return {Matrix3} A clone of this instance.\n */\n clone() {\n return new this.constructor().fromArray(this.elements);\n }\n }\n const _m3 = /* @__PURE__ */ new Matrix3();\n const _cache = {};\n function warnOnce(message) {\n if (message in _cache) return;\n _cache[message] = true;\n console.warn(message);\n }\n const LINEAR_REC709_TO_XYZ = /* @__PURE__ */ new Matrix3().set(\n 0.4123908,\n 0.3575843,\n 0.1804808,\n 0.212639,\n 0.7151687,\n 0.0721923,\n 0.0193308,\n 0.1191948,\n 0.9505322\n );\n const XYZ_TO_LINEAR_REC709 = /* @__PURE__ */ new Matrix3().set(\n 3.2409699,\n -1.5373832,\n -0.4986108,\n -0.9692436,\n 1.8759675,\n 0.0415551,\n 0.0556301,\n -0.203977,\n 1.0569715\n );\n function createColorManagement() {\n const ColorManagement2 = {\n enabled: true,\n workingColorSpace: LinearSRGBColorSpace,\n /**\n * Implementations of supported color spaces.\n *\n * Required:\n * - primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n * - whitePoint: reference white [ x y ]\n * - transfer: transfer function (pre-defined)\n * - toXYZ: Matrix3 RGB to XYZ transform\n * - fromXYZ: Matrix3 XYZ to RGB transform\n * - luminanceCoefficients: RGB luminance coefficients\n *\n * Optional:\n * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: \'extended\' | \'standard\' }\n * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n *\n * Reference:\n * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n spaces: {},\n convert: function(color, sourceColorSpace, targetColorSpace) {\n if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n return color;\n }\n if (this.spaces[sourceColorSpace].transfer === SRGBTransfer) {\n color.r = SRGBToLinear(color.r);\n color.g = SRGBToLinear(color.g);\n color.b = SRGBToLinear(color.b);\n }\n if (this.spaces[sourceColorSpace].primaries !== this.spaces[targetColorSpace].primaries) {\n color.applyMatrix3(this.spaces[sourceColorSpace].toXYZ);\n color.applyMatrix3(this.spaces[targetColorSpace].fromXYZ);\n }\n if (this.spaces[targetColorSpace].transfer === SRGBTransfer) {\n color.r = LinearToSRGB(color.r);\n color.g = LinearToSRGB(color.g);\n color.b = LinearToSRGB(color.b);\n }\n return color;\n },\n workingToColorSpace: function(color, targetColorSpace) {\n return this.convert(color, this.workingColorSpace, targetColorSpace);\n },\n colorSpaceToWorking: function(color, sourceColorSpace) {\n return this.convert(color, sourceColorSpace, this.workingColorSpace);\n },\n getPrimaries: function(colorSpace) {\n return this.spaces[colorSpace].primaries;\n },\n getTransfer: function(colorSpace) {\n if (colorSpace === NoColorSpace) return LinearTransfer;\n return this.spaces[colorSpace].transfer;\n },\n getToneMappingMode: function(colorSpace) {\n return this.spaces[colorSpace].outputColorSpaceConfig.toneMappingMode || "standard";\n },\n getLuminanceCoefficients: function(target, colorSpace = this.workingColorSpace) {\n return target.fromArray(this.spaces[colorSpace].luminanceCoefficients);\n },\n define: function(colorSpaces) {\n Object.assign(this.spaces, colorSpaces);\n },\n // Internal APIs\n _getMatrix: function(targetMatrix, sourceColorSpace, targetColorSpace) {\n return targetMatrix.copy(this.spaces[sourceColorSpace].toXYZ).multiply(this.spaces[targetColorSpace].fromXYZ);\n },\n _getDrawingBufferColorSpace: function(colorSpace) {\n return this.spaces[colorSpace].outputColorSpaceConfig.drawingBufferColorSpace;\n },\n _getUnpackColorSpace: function(colorSpace = this.workingColorSpace) {\n return this.spaces[colorSpace].workingColorSpaceConfig.unpackColorSpace;\n },\n // Deprecated\n fromWorkingColorSpace: function(color, targetColorSpace) {\n warnOnce("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().");\n return ColorManagement2.workingToColorSpace(color, targetColorSpace);\n },\n toWorkingColorSpace: function(color, sourceColorSpace) {\n warnOnce("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().");\n return ColorManagement2.colorSpaceToWorking(color, sourceColorSpace);\n }\n };\n const REC709_PRIMARIES = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06];\n const REC709_LUMINANCE_COEFFICIENTS = [0.2126, 0.7152, 0.0722];\n const D65 = [0.3127, 0.329];\n ColorManagement2.define({\n [LinearSRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: LinearTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n workingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n },\n [SRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: SRGBTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n }\n });\n return ColorManagement2;\n }\n const ColorManagement = /* @__PURE__ */ createColorManagement();\n function SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n }\n function LinearToSRGB(c) {\n return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n }\n class Box3 {\n /**\n * Constructs a new bounding box.\n *\n * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box.\n * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n */\n constructor(min = new Vector3(Infinity, Infinity, Infinity), max2 = new Vector3(-Infinity, -Infinity, -Infinity)) {\n this.isBox3 = true;\n this.min = min;\n this.max = max2;\n }\n /**\n * Sets the lower and upper boundaries of this box.\n * Please note that this method only copies the values from the given objects.\n *\n * @param {Vector3} min - The lower boundary of the box.\n * @param {Vector3} max - The upper boundary of the box.\n * @return {Box3} A reference to this bounding box.\n */\n set(min, max2) {\n this.min.copy(min);\n this.max.copy(max2);\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given array.\n *\n * @param {Array} array - An array holding 3D position data.\n * @return {Box3} A reference to this bounding box.\n */\n setFromArray(array) {\n this.makeEmpty();\n for (let i2 = 0, il = array.length; i2 < il; i2 += 3) {\n this.expandByPoint(_vector$b.fromArray(array, i2));\n }\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data.\n * @return {Box3} A reference to this bounding box.\n */\n setFromBufferAttribute(attribute) {\n this.makeEmpty();\n for (let i2 = 0, il = attribute.count; i2 < il; i2++) {\n this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i2));\n }\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given array.\n *\n * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}.\n * @return {Box3} A reference to this bounding box.\n */\n setFromPoints(points) {\n this.makeEmpty();\n for (let i2 = 0, il = points.length; i2 < il; i2++) {\n this.expandByPoint(points[i2]);\n }\n return this;\n }\n /**\n * Centers this box on the given center vector and sets this box\'s width, height and\n * depth to the given size values.\n *\n * @param {Vector3} center - The center of the box.\n * @param {Vector3} size - The x, y and z dimensions of the box.\n * @return {Box3} A reference to this bounding box.\n */\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n /**\n * Computes the world-axis-aligned bounding box for the given 3D object\n * (including its children), accounting for the object\'s, and children\'s,\n * world transforms. The function may result in a larger box than strictly necessary.\n *\n * @param {Object3D} object - The 3D object to compute the bounding box for.\n * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest\n * world-axis-aligned bounding box at the expense of more computation.\n * @return {Box3} A reference to this bounding box.\n */\n setFromObject(object, precise = false) {\n this.makeEmpty();\n return this.expandByObject(object, precise);\n }\n /**\n * Returns a new box with copied values from this instance.\n *\n * @return {Box3} A clone of this instance.\n */\n clone() {\n return new this.constructor().copy(this);\n }\n /**\n * Copies the values of the given box to this instance.\n *\n * @param {Box3} box - The box to copy.\n * @return {Box3} A reference to this bounding box.\n */\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n /**\n * Makes this box empty which means in encloses a zero space in 3D.\n *\n * @return {Box3} A reference to this bounding box.\n */\n makeEmpty() {\n this.min.x = this.min.y = this.min.z = Infinity;\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n }\n /**\n * Returns true if this box includes zero points within its bounds.\n * Note that a box with equal lower and upper bounds still includes one\n * point, the one both bounds share.\n *\n * @return {boolean} Whether this box is empty or not.\n */\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n }\n /**\n * Returns the center point of this box.\n *\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The center point.\n */\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n /**\n * Returns the dimensions of this box.\n *\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The size.\n */\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n }\n /**\n * Expands the boundaries of this box to include the given point.\n *\n * @param {Vector3} point - The point that should be included by the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n /**\n * Expands this box equilaterally by the given vector. The width of this\n * box will be expanded by the x component of the vector in both\n * directions. The height of this box will be expanded by the y component of\n * the vector in both directions. The depth of this box will be\n * expanded by the z component of the vector in both directions.\n *\n * @param {Vector3} vector - The vector that should expand the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n /**\n * Expands each dimension of the box by the given scalar. If negative, the\n * dimensions of the box will be contracted.\n *\n * @param {number} scalar - The scalar value that should expand the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n /**\n * Expands the boundaries of this box to include the given 3D object and\n * its children, accounting for the object\'s, and children\'s, world\n * transforms. The function may result in a larger box than strictly\n * necessary (unless the precise parameter is set to true).\n *\n * @param {Object3D} object - The 3D object that should expand the bounding box.\n * @param {boolean} precise - If set to `true`, the method expands the bounding box\n * as little as necessary at the expense of more computation.\n * @return {Box3} A reference to this bounding box.\n */\n expandByObject(object, precise = false) {\n object.updateWorldMatrix(false, false);\n const geometry = object.geometry;\n if (geometry !== void 0) {\n const positionAttribute = geometry.getAttribute("position");\n if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) {\n for (let i2 = 0, l = positionAttribute.count; i2 < l; i2++) {\n if (object.isMesh === true) {\n object.getVertexPosition(i2, _vector$b);\n } else {\n _vector$b.fromBufferAttribute(positionAttribute, i2);\n }\n _vector$b.applyMatrix4(object.matrixWorld);\n this.expandByPoint(_vector$b);\n }\n } else {\n if (object.boundingBox !== void 0) {\n if (object.boundingBox === null) {\n object.computeBoundingBox();\n }\n _box$4.copy(object.boundingBox);\n } else {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n _box$4.copy(geometry.boundingBox);\n }\n _box$4.applyMatrix4(object.matrixWorld);\n this.union(_box$4);\n }\n }\n const children = object.children;\n for (let i2 = 0, l = children.length; i2 < l; i2++) {\n this.expandByObject(children[i2], precise);\n }\n return this;\n }\n /**\n * Returns `true` if the given point lies within or on the boundaries of this box.\n *\n * @param {Vector3} point - The point to test.\n * @return {boolean} Whether the bounding box contains the given point or not.\n */\n containsPoint(point) {\n return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y && point.z >= this.min.z && point.z <= this.max.z;\n }\n /**\n * Returns `true` if this bounding box includes the entirety of the given bounding box.\n * If this box and the given one are identical, this function also returns `true`.\n *\n * @param {Box3} box - The bounding box to test.\n * @return {boolean} Whether the bounding box contains the given bounding box or not.\n */\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n }\n /**\n * Returns a point as a proportion of this box\'s width, height and depth.\n *\n * @param {Vector3} point - A point in 3D space.\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} A point as a proportion of this box\'s width, height and depth.\n */\n getParameter(point, target) {\n return target.set(\n (point.x - this.min.x) / (this.max.x - this.min.x),\n (point.y - this.min.y) / (this.max.y - this.min.y),\n (point.z - this.min.z) / (this.max.z - this.min.z)\n );\n }\n /**\n * Returns `true` if the given bounding box intersects with this bounding box.\n *\n * @param {Box3} box - The bounding box to test.\n * @return {boolean} Whether the given bounding box intersects with this bounding box.\n */\n intersectsBox(box) {\n return box.max.x >= this.min.x && box.min.x <= this.max.x && box.max.y >= this.min.y && box.min.y <= this.max.y && box.max.z >= this.min.z && box.min.z <= this.max.z;\n }\n /**\n * Returns `true` if the given bounding sphere intersects with this bounding box.\n *\n * @param {Sphere} sphere - The bounding sphere to test.\n * @return {boolean} Whether the given bounding sphere intersects with this bounding box.\n */\n intersectsSphere(sphere) {\n this.clampPoint(sphere.center, _vector$b);\n return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n }\n /**\n * Returns `true` if the given plane intersects with this bounding box.\n *\n * @param {Plane} plane - The plane to test.\n * @return {boolean} Whether the given plane intersects with this bounding box.\n */\n intersectsPlane(plane) {\n let min, max2;\n if (plane.normal.x > 0) {\n min = plane.normal.x * this.min.x;\n max2 = plane.normal.x * this.max.x;\n } else {\n min = plane.normal.x * this.max.x;\n max2 = plane.normal.x * this.min.x;\n }\n if (plane.normal.y > 0) {\n min += plane.normal.y * this.min.y;\n max2 += plane.normal.y * this.max.y;\n } else {\n min += plane.normal.y * this.max.y;\n max2 += plane.normal.y * this.min.y;\n }\n if (plane.normal.z > 0) {\n min += plane.normal.z * this.min.z;\n max2 += plane.normal.z * this.max.z;\n } else {\n min += plane.normal.z * this.max.z;\n max2 += plane.normal.z * this.min.z;\n }\n return min <= -plane.constant && max2 >= -plane.constant;\n }\n /**\n * Returns `true` if the given triangle intersects with this bounding box.\n *\n * @param {Triangle} triangle - The triangle to test.\n * @return {boolean} Whether the given triangle intersects with this bounding box.\n */\n intersectsTriangle(triangle) {\n if (this.isEmpty()) {\n return false;\n }\n this.getCenter(_center);\n _extents.subVectors(this.max, _center);\n _v0$2.subVectors(triangle.a, _center);\n _v1$7.subVectors(triangle.b, _center);\n _v2$4.subVectors(triangle.c, _center);\n _f0.subVectors(_v1$7, _v0$2);\n _f1.subVectors(_v2$4, _v1$7);\n _f2.subVectors(_v0$2, _v2$4);\n let axes = [\n 0,\n -_f0.z,\n _f0.y,\n 0,\n -_f1.z,\n _f1.y,\n 0,\n -_f2.z,\n _f2.y,\n _f0.z,\n 0,\n -_f0.x,\n _f1.z,\n 0,\n -_f1.x,\n _f2.z,\n 0,\n -_f2.x,\n -_f0.y,\n _f0.x,\n 0,\n -_f1.y,\n _f1.x,\n 0,\n -_f2.y,\n _f2.x,\n 0\n ];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n return false;\n }\n axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n return false;\n }\n _triangleNormal.crossVectors(_f0, _f1);\n axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents);\n }\n /**\n * Clamps the given point within the bounds of this box.\n *\n * @param {Vector3} point - The point to clamp.\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The clamped point.\n */\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n /**\n * Returns the euclidean distance from any edge of this box to the specified point. If\n * the given point lies inside of this box, the distance will be `0`.\n *\n * @param {Vector3} point - The point to compute the distance to.\n * @return {number} The euclidean distance.\n */\n distanceToPoint(point) {\n return this.clampPoint(point, _vector$b).distanceTo(point);\n }\n /**\n * Returns a bounding sphere that encloses this bounding box.\n *\n * @param {Sphere} target - The target sphere that is used to store the method\'s result.\n * @return {Sphere} The bounding sphere that encloses this bounding box.\n */\n getBoundingSphere(target) {\n if (this.isEmpty()) {\n target.makeEmpty();\n } else {\n this.getCenter(target.center);\n target.radius = this.getSize(_vector$b).length() * 0.5;\n }\n return target;\n }\n /**\n * Computes the intersection of this bounding box and the given one, setting the upper\n * bound of this box to the lesser of the two boxes\' upper bounds and the\n * lower bound of this box to the greater of the two boxes\' lower bounds. If\n * there\'s no overlap, makes this box empty.\n *\n * @param {Box3} box - The bounding box to intersect with.\n * @return {Box3} A reference to this bounding box.\n */\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n if (this.isEmpty()) this.makeEmpty();\n return this;\n }\n /**\n * Computes the union of this box and another and the given one, setting the upper\n * bound of this box to the greater of the two boxes\' upper bounds and the\n * lower bound of this box to the lesser of the two boxes\' lower bounds.\n *\n * @param {Box3} box - The bounding box that will be unioned with this instance.\n * @return {Box3} A reference to this bounding box.\n */\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n /**\n * Transforms this bounding box by the given 4x4 transformation matrix.\n *\n * @param {Matrix4} matrix - The transformation matrix.\n * @return {Box3} A reference to this bounding box.\n */\n applyMatrix4(matrix) {\n if (this.isEmpty()) return this;\n _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n this.setFromPoints(_points);\n return this;\n }\n /**\n * Adds the given offset to both the upper and lower bounds of this bounding box,\n * effectively moving it in 3D space.\n *\n * @param {Vector3} offset - The offset that should be used to translate the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n /**\n * Returns `true` if this bounding box is equal with the given one.\n *\n * @param {Box3} box - The box to test for equality.\n * @return {boolean} Whether this bounding box is equal with the given one.\n */\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n /**\n * Returns a serialized structure of the bounding box.\n *\n * @return {Object} Serialized structure with fields representing the object state.\n */\n toJSON() {\n return {\n min: this.min.toArray(),\n max: this.max.toArray()\n };\n }\n /**\n * Returns a serialized structure of the bounding box.\n *\n * @param {Object} json - The serialized json to set the box from.\n * @return {Box3} A reference to this bounding box.\n */\n fromJSON(json) {\n this.min.fromArray(json.min);\n this.max.fromArray(json.max);\n return this;\n }\n }\n const _points = [\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3()\n ];\n const _vector$b = /* @__PURE__ */ new Vector3();\n const _box$4 = /* @__PURE__ */ new Box3();\n const _v0$2 = /* @__PURE__ */ new Vector3();\n const _v1$7 = /* @__PURE__ */ new Vector3();\n const _v2$4 = /* @__PURE__ */ new Vector3();\n const _f0 = /* @__PURE__ */ new Vector3();\n const _f1 = /* @__PURE__ */ new Vector3();\n const _f2 = /* @__PURE__ */ new Vector3();\n const _center = /* @__PURE__ */ new Vector3();\n const _extents = /* @__PURE__ */ new Vector3();\n const _triangleNormal = /* @__PURE__ */ new Vector3();\n const _testAxis = /* @__PURE__ */ new Vector3();\n function satForAxes(axes, v0, v1, v2, extents) {\n for (let i2 = 0, j = axes.length - 3; i2 <= j; i2 += 3) {\n _testAxis.fromArray(axes, i2);\n const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n const p0 = v0.dot(_testAxis);\n const p1 = v1.dot(_testAxis);\n const p2 = v2.dot(_testAxis);\n if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n return false;\n }\n }\n return true;\n }\n const _colorKeywords = {\n "aliceblue": 15792383,\n "antiquewhite": 16444375,\n "aqua": 65535,\n "aquamarine": 8388564,\n "azure": 15794175,\n "beige": 16119260,\n "bisque": 16770244,\n "black": 0,\n "blanchedalmond": 16772045,\n "blue": 255,\n "blueviolet": 9055202,\n "brown": 10824234,\n "burlywood": 14596231,\n "cadetblue": 6266528,\n "chartreuse": 8388352,\n "chocolate": 13789470,\n "coral": 16744272,\n "cornflowerblue": 6591981,\n "cornsilk": 16775388,\n "crimson": 14423100,\n "cyan": 65535,\n "darkblue": 139,\n "darkcyan": 35723,\n "darkgoldenrod": 12092939,\n "darkgray": 11119017,\n "darkgreen": 25600,\n "darkgrey": 11119017,\n "darkkhaki": 12433259,\n "darkmagenta": 9109643,\n "darkolivegreen": 5597999,\n "darkorange": 16747520,\n "darkorchid": 10040012,\n "darkred": 9109504,\n "darksalmon": 15308410,\n "darkseagreen": 9419919,\n "darkslateblue": 4734347,\n "darkslategray": 3100495,\n "darkslategrey": 3100495,\n "darkturquoise": 52945,\n "darkviolet": 9699539,\n "deeppink": 16716947,\n "deepskyblue": 49151,\n "dimgray": 6908265,\n "dimgrey": 6908265,\n "dodgerblue": 2003199,\n "firebrick": 11674146,\n "floralwhite": 16775920,\n "forestgreen": 2263842,\n "fuchsia": 16711935,\n "gainsboro": 14474460,\n "ghostwhite": 16316671,\n "gold": 16766720,\n "goldenrod": 14329120,\n "gray": 8421504,\n "green": 32768,\n "greenyellow": 11403055,\n "grey": 8421504,\n "honeydew": 15794160,\n "hotpink": 16738740,\n "indianred": 13458524,\n "indigo": 4915330,\n "ivory": 16777200,\n "khaki": 15787660,\n "lavender": 15132410,\n "lavenderblush": 16773365,\n "lawngreen": 8190976,\n "lemonchiffon": 16775885,\n "lightblue": 11393254,\n "lightcoral": 15761536,\n "lightcyan": 14745599,\n "lightgoldenrodyellow": 16448210,\n "lightgray": 13882323,\n "lightgreen": 9498256,\n "lightgrey": 13882323,\n "lightpink": 16758465,\n "lightsalmon": 16752762,\n "lightseagreen": 2142890,\n "lightskyblue": 8900346,\n "lightslategray": 7833753,\n "lightslategrey": 7833753,\n "lightsteelblue": 11584734,\n "lightyellow": 16777184,\n "lime": 65280,\n "limegreen": 3329330,\n "linen": 16445670,\n "magenta": 16711935,\n "maroon": 8388608,\n "mediumaquamarine": 6737322,\n "mediumblue": 205,\n "mediumorchid": 12211667,\n "mediumpurple": 9662683,\n "mediumseagreen": 3978097,\n "mediumslateblue": 8087790,\n "mediumspringgreen": 64154,\n "mediumturquoise": 4772300,\n "mediumvioletred": 13047173,\n "midnightblue": 1644912,\n "mintcream": 16121850,\n "mistyrose": 16770273,\n "moccasin": 16770229,\n "navajowhite": 16768685,\n "navy": 128,\n "oldlace": 16643558,\n "olive": 8421376,\n "olivedrab": 7048739,\n "orange": 16753920,\n "orangered": 16729344,\n "orchid": 14315734,\n "palegoldenrod": 15657130,\n "palegreen": 10025880,\n "paleturquoise": 11529966,\n "palevioletred": 14381203,\n "papayawhip": 16773077,\n "peachpuff": 16767673,\n "peru": 13468991,\n "pink": 16761035,\n "plum": 14524637,\n "powderblue": 11591910,\n "purple": 8388736,\n "rebeccapurple": 6697881,\n "red": 16711680,\n "rosybrown": 12357519,\n "royalblue": 4286945,\n "saddlebrown": 9127187,\n "salmon": 16416882,\n "sandybrown": 16032864,\n "seagreen": 3050327,\n "seashell": 16774638,\n "sienna": 10506797,\n "silver": 12632256,\n "skyblue": 8900331,\n "slateblue": 6970061,\n "slategray": 7372944,\n "slategrey": 7372944,\n "snow": 16775930,\n "springgreen": 65407,\n "steelblue": 4620980,\n "tan": 13808780,\n "teal": 32896,\n "thistle": 14204888,\n "tomato": 16737095,\n "turquoise": 4251856,\n "violet": 15631086,\n "wheat": 16113331,\n "white": 16777215,\n "whitesmoke": 16119285,\n "yellow": 16776960,\n "yellowgreen": 10145074\n };\n const _hslA = { h: 0, s: 0, l: 0 };\n const _hslB = { h: 0, s: 0, l: 0 };\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n }\n class Color {\n /**\n * Constructs a new color.\n *\n * Note that standard method of specifying color in three.js is with a hexadecimal triplet,\n * and that method is used throughout the rest of the documentation.\n *\n * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n * @param {number} [g] - The green component.\n * @param {number} [b] - The blue component.\n */\n constructor(r, g, b) {\n this.isColor = true;\n this.r = 1;\n this.g = 1;\n this.b = 1;\n return this.set(r, g, b);\n }\n /**\n * Sets the colors\'s components from the given values.\n *\n * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n * @param {number} [g] - The green component.\n * @param {number} [b] - The blue component.\n * @return {Color} A reference to this color.\n */\n set(r, g, b) {\n if (g === void 0 && b === void 0) {\n const value = r;\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === "number") {\n this.setHex(value);\n } else if (typeof value === "string") {\n this.setStyle(value);\n }\n } else {\n this.setRGB(r, g, b);\n }\n return this;\n }\n /**\n * Sets the colors\'s components to the given scalar value.\n *\n * @param {number} scalar - The scalar value.\n * @return {Color} A reference to this color.\n */\n setScalar(scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n }\n /**\n * Sets this color from a hexadecimal value.\n *\n * @param {number} hex - The hexadecimal value.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setHex(hex, colorSpace = SRGBColorSpace) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from RGB values.\n *\n * @param {number} r - Red channel value between `0.0` and `1.0`.\n * @param {number} g - Green channel value between `0.0` and `1.0`.\n * @param {number} b - Blue channel value between `0.0` and `1.0`.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setRGB(r, g, b, colorSpace = ColorManagement.workingColorSpace) {\n this.r = r;\n this.g = g;\n this.b = b;\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from RGB values.\n *\n * @param {number} h - Hue value between `0.0` and `1.0`.\n * @param {number} s - Saturation value between `0.0` and `1.0`.\n * @param {number} l - Lightness value between `0.0` and `1.0`.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) {\n h = euclideanModulo(h, 1);\n s = clamp(s, 0, 1);\n l = clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,\n * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or\n * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -\n * all 140 color names are supported).\n *\n * @param {string} style - Color as a CSS-style string.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setStyle(style, colorSpace = SRGBColorSpace) {\n function handleAlpha(string) {\n if (string === void 0) return;\n if (parseFloat(string) < 1) {\n console.warn("THREE.Color: Alpha component of " + style + " will be ignored.");\n }\n }\n let m;\n if (m = /^(\\w+)\\(([^\\)]*)\\)/.exec(style)) {\n let color;\n const name = m[1];\n const components = m[2];\n switch (name) {\n case "rgb":\n case "rgba":\n if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(255, parseInt(color[1], 10)) / 255,\n Math.min(255, parseInt(color[2], 10)) / 255,\n Math.min(255, parseInt(color[3], 10)) / 255,\n colorSpace\n );\n }\n if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(100, parseInt(color[1], 10)) / 100,\n Math.min(100, parseInt(color[2], 10)) / 100,\n Math.min(100, parseInt(color[3], 10)) / 100,\n colorSpace\n );\n }\n break;\n case "hsl":\n case "hsla":\n if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setHSL(\n parseFloat(color[1]) / 360,\n parseFloat(color[2]) / 100,\n parseFloat(color[3]) / 100,\n colorSpace\n );\n }\n break;\n default:\n console.warn("THREE.Color: Unknown color model " + style);\n }\n } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n const hex = m[1];\n const size = hex.length;\n if (size === 3) {\n return this.setRGB(\n parseInt(hex.charAt(0), 16) / 15,\n parseInt(hex.charAt(1), 16) / 15,\n parseInt(hex.charAt(2), 16) / 15,\n colorSpace\n );\n } else if (size === 6) {\n return this.setHex(parseInt(hex, 16), colorSpace);\n } else {\n console.warn("THREE.Color: Invalid hex color " + style);\n }\n } else if (style && style.length > 0) {\n return this.setColorName(style, colorSpace);\n }\n return this;\n }\n /**\n * Sets this color from a color name. Faster than {@link Color#setStyle} if\n * you don\'t need the other CSS-style formats.\n *\n * For convenience, the list of names is exposed in `Color.NAMES` as a hash.\n * ```js\n * Color.NAMES.aliceblue // returns 0xF0F8FF\n * ```\n *\n * @param {string} style - The color name.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setColorName(style, colorSpace = SRGBColorSpace) {\n const hex = _colorKeywords[style.toLowerCase()];\n if (hex !== void 0) {\n this.setHex(hex, colorSpace);\n } else {\n console.warn("THREE.Color: Unknown color " + style);\n }\n return this;\n }\n /**\n * Returns a new color with copied values from this instance.\n *\n * @return {Color} A clone of this instance.\n */\n clone() {\n return new this.constructor(this.r, this.g, this.b);\n }\n /**\n * Copies the values of the given color to this instance.\n *\n * @param {Color} color - The color to copy.\n * @return {Color} A reference to this color.\n */\n copy(color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n }\n /**\n * Copies the given color into this color, and then converts this color from\n * `SRGBColorSpace` to `LinearSRGBColorSpace`.\n *\n * @param {Color} color - The color to copy/convert.\n * @return {Color} A reference to this color.\n */\n copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n }\n /**\n * Copies the given color into this color, and then converts this color from\n * `LinearSRGBColorSpace` to `SRGBColorSpace`.\n *\n * @param {Color} color - The color to copy/convert.\n * @return {Color} A reference to this color.\n */\n copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n }\n /**\n * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.\n *\n * @return {Color} A reference to this color.\n */\n convertSRGBToLinear() {\n this.copySRGBToLinear(this);\n return this;\n }\n /**\n * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.\n *\n * @return {Color} A reference to this color.\n */\n convertLinearToSRGB() {\n this.copyLinearToSRGB(this);\n return this;\n }\n /**\n * Returns the hexadecimal value of this color.\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {number} The hexadecimal value.\n */\n getHex(colorSpace = SRGBColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255));\n }\n /**\n * Returns the hexadecimal value of this color as a string (for example, \'FFFFFF\').\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {string} The hexadecimal value as a string.\n */\n getHexString(colorSpace = SRGBColorSpace) {\n return ("000000" + this.getHex(colorSpace).toString(16)).slice(-6);\n }\n /**\n * Converts the colors RGB values into the HSL format and stores them into the\n * given target object.\n *\n * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method\'s result.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {{h:number,s:number,l:number}} The HSL representation of this color.\n */\n getHSL(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n const max2 = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue, saturation;\n const lightness = (min + max2) / 2;\n if (min === max2) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max2 - min;\n saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min);\n switch (max2) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n }\n /**\n * Returns the RGB values of this color and stores them into the given target object.\n *\n * @param {Color} target - The target color that is used to store the method\'s result.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} The RGB representation of this color.\n */\n getRGB(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n target.r = _color.r;\n target.g = _color.g;\n target.b = _color.b;\n return target;\n }\n /**\n * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {string} The CSS representation of this color.\n */\n getStyle(colorSpace = SRGBColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n if (colorSpace !== SRGBColorSpace) {\n return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`;\n }\n return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n }\n /**\n * Adds the given HSL values to this color\'s values.\n * Internally, this converts the color\'s RGB values to HSL, adds HSL\n * and then converts the color back to RGB.\n *\n * @param {number} h - Hue value between `0.0` and `1.0`.\n * @param {number} s - Saturation value between `0.0` and `1.0`.\n * @param {number} l - Lightness value between `0.0` and `1.0`.\n * @return {Color} A reference to this color.\n */\n offsetHSL(h, s, l) {\n this.getHSL(_hslA);\n return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l);\n }\n /**\n * Adds the RGB values of the given color to the RGB values of this color.\n *\n * @param {Color} color - The color to add.\n * @return {Color} A reference to this color.\n */\n add(color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n }\n /**\n * Adds the RGB values of the given colors and stores the result in this instance.\n *\n * @param {Color} color1 - The first color.\n * @param {Color} color2 - The second color.\n * @return {Color} A reference to this color.\n */\n addColors(color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n }\n /**\n * Adds the given scalar value to the RGB values of this color.\n *\n * @param {number} s - The scalar to add.\n * @return {Color} A reference to this color.\n */\n addScalar(s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n }\n /**\n * Subtracts the RGB values of the given color from the RGB values of this color.\n *\n * @param {Color} color - The color to subtract.\n * @return {Color} A reference to this color.\n */\n sub(color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n }\n /**\n * Multiplies the RGB values of the given color with the RGB values of this color.\n *\n * @param {Color} color - The color to multiply.\n * @return {Color} A reference to this color.\n */\n multiply(color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n }\n /**\n * Multiplies the given scalar value with the RGB values of this color.\n *\n * @param {number} s - The scalar to multiply.\n * @return {Color} A reference to this color.\n */\n multiplyScalar(s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n }\n /**\n * Linearly interpolates this color\'s RGB values toward the RGB values of the\n * given color. The alpha argument can be thought of as the ratio between\n * the two colors, where `0.0` is this color and `1.0` is the first argument.\n *\n * @param {Color} color - The color to converge on.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerp(color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n }\n /**\n * Linearly interpolates between the given colors and stores the result in this instance.\n * The alpha argument can be thought of as the ratio between the two colors, where `0.0`\n * is the first and `1.0` is the second color.\n *\n * @param {Color} color1 - The first color.\n * @param {Color} color2 - The second color.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerpColors(color1, color2, alpha) {\n this.r = color1.r + (color2.r - color1.r) * alpha;\n this.g = color1.g + (color2.g - color1.g) * alpha;\n this.b = color1.b + (color2.b - color1.b) * alpha;\n return this;\n }\n /**\n * Linearly interpolates this color\'s HSL values toward the HSL values of the\n * given color. It differs from {@link Color#lerp} by not interpolating straight\n * from one color to the other, but instead going through all the hues in between\n * those two colors. The alpha argument can be thought of as the ratio between\n * the two colors, where 0.0 is this color and 1.0 is the first argument.\n *\n * @param {Color} color - The color to converge on.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerpHSL(color, alpha) {\n this.getHSL(_hslA);\n color.getHSL(_hslB);\n const h = lerp(_hslA.h, _hslB.h, alpha);\n const s = lerp(_hslA.s, _hslB.s, alpha);\n const l = lerp(_hslA.l, _hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n }\n /**\n * Sets the color\'s RGB components from the given 3D vector.\n *\n * @param {Vector3} v - The vector to set.\n * @return {Color} A reference to this color.\n */\n setFromVector3(v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n return this;\n }\n /**\n * Transforms this color with the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix.\n * @return {Color} A reference to this color.\n */\n applyMatrix3(m) {\n const r = this.r, g = this.g, b = this.b;\n const e = m.elements;\n this.r = e[0] * r + e[3] * g + e[6] * b;\n this.g = e[1] * r + e[4] * g + e[7] * b;\n this.b = e[2] * r + e[5] * g + e[8] * b;\n return this;\n }\n /**\n * Returns `true` if this color is equal with the given one.\n *\n * @param {Color} c - The color to test for equality.\n * @return {boolean} Whether this bounding color is equal with the given one.\n */\n equals(c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n }\n /**\n * Sets this color\'s RGB components from the given array.\n *\n * @param {Array} array - An array holding the RGB values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Color} A reference to this color.\n */\n fromArray(array, offset = 0) {\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n }\n /**\n * Writes the RGB components of this color to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the color components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The color components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n }\n /**\n * Sets the components of this color from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding color data.\n * @param {number} index - The index into the attribute.\n * @return {Color} A reference to this color.\n */\n fromBufferAttribute(attribute, index) {\n this.r = attribute.getX(index);\n this.g = attribute.getY(index);\n this.b = attribute.getZ(index);\n return this;\n }\n /**\n * This methods defines the serialization result of this class. Returns the color\n * as a hexadecimal value.\n *\n * @return {number} The hexadecimal value.\n */\n toJSON() {\n return this.getHex();\n }\n *[Symbol.iterator]() {\n yield this.r;\n yield this.g;\n yield this.b;\n }\n }\n const _color = /* @__PURE__ */ new Color();\n Color.NAMES = _colorKeywords;\n if (typeof __THREE_DEVTOOLS__ !== "undefined") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: {\n revision: REVISION\n } }));\n }\n if (typeof window !== "undefined") {\n if (window.__THREE__) {\n console.warn("WARNING: Multiple instances of Three.js being imported.");\n } else {\n window.__THREE__ = REVISION;\n }\n }\n const LN_SCALE_MIN = -12;\n const LN_SCALE_MAX = 9;\n const LN_SCALE_ZERO = -30;\n const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n const SPLAT_TEX_WIDTH_BITS = 11;\n const SPLAT_TEX_HEIGHT_BITS = 11;\n const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS;\n const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS;\n const SPLAT_TEX_MIN_HEIGHT = 1;\n var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => {\n SplatFileType2["PLY"] = "ply";\n SplatFileType2["SPZ"] = "spz";\n SplatFileType2["SPLAT"] = "splat";\n SplatFileType2["KSPLAT"] = "ksplat";\n SplatFileType2["PCSOGS"] = "pcsogs";\n SplatFileType2["PCSOGSZIP"] = "pcsogszip";\n SplatFileType2["RAD"] = "rad";\n return SplatFileType2;\n })(SplatFileType || {});\n function unindentLines(s) {\n var _a2;\n let seenNonEmpty = false;\n const lines = s.split("\\n").map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n }).filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n const indent = (_a2 = lines[0].match(/^\\s*/)) == null ? void 0 : _a2[0];\n if (!indent) {\n return lines;\n }\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, ""));\n }\n function unindent(s) {\n return unindentLines(s).join("\\n");\n }\n const f32buffer = new Float32Array(1);\n const u32buffer = new Uint32Array(f32buffer.buffer);\n const supportsFloat16Array = "Float16Array" in globalThis;\n const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null;\n const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer);\n function normalize(vec) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n }\n const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\n const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n function toHalfNative(f) {\n f16buffer[0] = f;\n return u16buffer[0];\n }\n function toHalfJS(f) {\n f32buffer[0] = f;\n const bits2 = u32buffer[0];\n const sign = bits2 >> 31 & 1;\n const exp = bits2 >> 23 & 255;\n const frac = bits2 & 8388607;\n const halfSign = sign << 15;\n if (exp === 255) {\n if (frac !== 0) {\n return halfSign | 32767;\n }\n return halfSign | 31744;\n }\n const newExp = exp - 127 + 15;\n if (newExp >= 31) {\n return halfSign | 31744;\n }\n if (newExp <= 0) {\n if (newExp < -10) {\n return halfSign;\n }\n const subFrac = (frac | 8388608) >> 1 - newExp + 13;\n return halfSign | subFrac;\n }\n const halfFrac = frac >> 13;\n return halfSign | newExp << 10 | halfFrac;\n }\n function fromHalfNative(u) {\n u16buffer[0] = u;\n return f16buffer[0];\n }\n function fromHalfJS(h) {\n const sign = h >> 15 & 1;\n const exp = h >> 10 & 31;\n const frac = h & 1023;\n let f32bits;\n if (exp === 0) {\n if (frac === 0) {\n f32bits = sign << 31;\n } else {\n let mant = frac;\n let e = -14;\n while ((mant & 1024) === 0) {\n mant <<= 1;\n e--;\n }\n mant &= 1023;\n const newExp = e + 127;\n const newFrac = mant << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n } else if (exp === 31) {\n if (frac === 0) {\n f32bits = sign << 31 | 2139095040;\n } else {\n f32bits = sign << 31 | 2143289344;\n }\n } else {\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n u32buffer[0] = f32bits;\n return f32buffer[0];\n }\n function floatToUint8(v) {\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n function setPackedSplat(packedSplats, index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity);\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN;\n const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX;\n const lnScaleScale = 254 / (lnScaleMax - lnScaleMin);\n const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24;\n }\n function setPackedSplatCenter(packedSplats, index, x2, y, z) {\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760;\n }\n function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) {\n const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN;\n const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX;\n const lnScaleScale = 254 / (lnScaleMax - lnScaleMin);\n const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const i4 = index * 4;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080;\n }\n const tempQuaternion = new Quaternion();\n function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const i4 = index * 4;\n packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24;\n }\n function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;\n }\n function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080;\n }\n function setPackedSplatOpacity(packedSplats, index, opacity) {\n const uA = floatToUint8(opacity);\n const i4 = index * 4;\n packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24;\n }\n new Vector3();\n new Vector3();\n new Color();\n function getTextureSize(numSplats) {\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n }\n function computeMaxSplats(numSplats) {\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n }\n unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n const tempNormalizedQuaternion = new Quaternion();\n const tempAxis = new Vector3();\n function encodeQuatOctXy88R8(q) {\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n const theta = 2 * Math.acos(qnorm.w);\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z\n );\n const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n const angleInt = Math.round(theta * (255 / Math.PI));\n return angleInt << 16 | quantV << 8 | quantU;\n }\n function packSint8Bytes(b0, b1, b22, b3) {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24;\n }\n function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) {\n const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1;\n const sh1Scale = 63 / sh1Max;\n const base = index * 2;\n for (let i2 = 0; i2 < 9; ++i2) {\n const s = sh1Rgb[i2] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 127;\n const bitStart = i2 * 7;\n const bitEnd = bitStart + 7;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh1Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) {\n const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1;\n const sh2Scale = 1 / sh2Max;\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0\n );\n }\n function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) {\n const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1;\n const sh3Scale = 31 / sh3Max;\n const base = index * 4;\n for (let i2 = 0; i2 < 21; ++i2) {\n const s = sh3Rgb[i2] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 63;\n const bitStart = i2 * 6;\n const bitEnd = bitStart + 6;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh3Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n function decompressPartialGzip(fileBytes, numBytes) {\n const chunks = [];\n let totalBytes = 0;\n let result = null;\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset2 = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset2);\n offset2 += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error("Failed to decompress partial gzip");\n }\n }\n return result;\n }\n class GunzipReader {\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024\n }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n const ds = new DecompressionStream("gzip");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n async read(numBytes) {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`\n );\n }\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n }\n function decodeAntiSplat(fileBytes, initNumSplats, splatCallback) {\n const numSplats = Math.floor(fileBytes.length / 32);\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error("Invalid .splat file size");\n }\n initNumSplats(numSplats);\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i322 = i2 * 32;\n const i8 = i2 * 8;\n const x2 = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i322 + 24] / 255;\n const g = fileBytes[i322 + 25] / 255;\n const b = fileBytes[i322 + 26] / 255;\n const opacity = fileBytes[i322 + 27] / 255;\n const quatW = (fileBytes[i322 + 28] - 128) / 128;\n const quatX = (fileBytes[i322 + 29] - 128) / 128;\n const quatY = (fileBytes[i322 + 30] - 128) / 128;\n const quatZ = (fileBytes[i322 + 31] - 128) / 128;\n splatCallback(\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n }\n }\n function unpackAntiSplat(fileBytes, splatEncoding) {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n setPackedSplat(\n packedArray,\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n }\n );\n return { packedArray, numSplats };\n }\n const KSPLAT_COMPRESSION = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n }\n };\n const KSPLAT_SH_DEGREE_TO_COMPONENTS = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n function decodeKsplat(fileBytes, initNumSplats, splatCallback, shCallback) {\n var _a2;\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n for (let section = 0; section < maxSectionCount; ++section) {\n let getSh = function(splatOffset, component) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true\n )\n );\n }\n const t = data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) / 255;\n return minSphericalHarmonicsCoeff + t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff);\n };\n const section2 = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n const sectionSplatCount = section2.getUint32(0, true);\n const sectionMaxSplatCount = section2.getUint32(4, true);\n const bucketSize = section2.getUint32(8, true);\n const bucketCount = section2.getUint32(12, true);\n const bucketBlockSize = section2.getFloat32(16, true);\n const bucketStorageSizeBytes = section2.getUint16(20, true);\n const compressionScaleRange = (section2.getUint32(24, true) || ((_a2 = KSPLAT_COMPRESSION[compressionLevel]) == null ? void 0 : _a2.scaleRange)) ?? 1;\n const fullBucketCount = section2.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section2.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes = bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section2.getUint16(40, true);\n const shComponents = KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat = bytesPerCenter + bytesPerScale + bytesPerRotation + bytesPerColor + shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes = splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9,\n 14,\n 19,\n 10,\n 15,\n 20,\n 11,\n 16,\n 21,\n 12,\n 17,\n 22,\n 13,\n 18,\n 23\n ];\n const sh3Index = [\n 24,\n 31,\n 38,\n 25,\n 32,\n 39,\n 26,\n 33,\n 40,\n 27,\n 34,\n 41,\n 28,\n 35,\n 42,\n 29,\n 36,\n 43,\n 30,\n 37,\n 44\n ];\n const sh1 = sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : void 0;\n const sh2 = sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount\n );\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n for (let i2 = 0; i2 < sectionSplatCount; ++i2) {\n const splatOffset = i2 * bytesPerSplat;\n let bucketIndex;\n if (i2 < fullBucketSplats) {\n bucketIndex = Math.floor(i2 / bucketSize);\n } else {\n const bucketLength = partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i2 >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n const x2 = compressionLevel === 0 ? data.getFloat32(splatOffset + 0, true) : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 0];\n const y = compressionLevel === 0 ? data.getFloat32(splatOffset + 4, true) : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 1];\n const z = compressionLevel === 0 ? data.getFloat32(splatOffset + 8, true) : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 2];\n const scaleX = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n const quatW = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true)\n );\n const quatX = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true)\n );\n const quatY = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true)\n );\n const quatZ = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true)\n );\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n splatCallback(\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i22, key] of sh1Index.entries()) {\n sh1[i22] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i22, key] of sh2Index.entries()) {\n sh2[i22] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i22, key] of sh3Index.entries()) {\n sh3[i22] = getSh(splatOffset, key);\n }\n }\n shCallback == null ? void 0 : shCallback(i2, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n }\n function unpackKsplat(fileBytes, splatEncoding) {\n var _a2;\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n for (let section = 0; section < maxSectionCount; ++section) {\n let getSh = function(splatOffset, component) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true\n )\n );\n }\n const t = data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) / 255;\n return minSphericalHarmonicsCoeff + t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff);\n };\n const section2 = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n const sectionSplatCount = section2.getUint32(0, true);\n const sectionMaxSplatCount = section2.getUint32(4, true);\n const bucketSize = section2.getUint32(8, true);\n const bucketCount = section2.getUint32(12, true);\n const bucketBlockSize = section2.getFloat32(16, true);\n const bucketStorageSizeBytes = section2.getUint16(20, true);\n const compressionScaleRange = (section2.getUint32(24, true) || ((_a2 = KSPLAT_COMPRESSION[compressionLevel]) == null ? void 0 : _a2.scaleRange)) ?? 1;\n const fullBucketCount = section2.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section2.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes = bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section2.getUint16(40, true);\n const shComponents = KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat = bytesPerCenter + bytesPerScale + bytesPerRotation + bytesPerColor + shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes = splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9,\n 14,\n 19,\n 10,\n 15,\n 20,\n 11,\n 16,\n 21,\n 12,\n 17,\n 22,\n 13,\n 18,\n 23\n ];\n const sh3Index = [\n 24,\n 31,\n 38,\n 25,\n 32,\n 39,\n 26,\n 33,\n 40,\n 27,\n 34,\n 41,\n 28,\n 35,\n 42,\n 29,\n 36,\n 43,\n 30,\n 37,\n 44\n ];\n const sh1 = sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : void 0;\n const sh2 = sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount\n );\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n for (let i2 = 0; i2 < sectionSplatCount; ++i2) {\n const splatOffset = i2 * bytesPerSplat;\n let bucketIndex;\n if (i2 < fullBucketSplats) {\n bucketIndex = Math.floor(i2 / bucketSize);\n } else {\n const bucketLength = partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i2 >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n const x2 = compressionLevel === 0 ? data.getFloat32(splatOffset + 0, true) : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 0];\n const y = compressionLevel === 0 ? data.getFloat32(splatOffset + 4, true) : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 1];\n const z = compressionLevel === 0 ? data.getFloat32(splatOffset + 8, true) : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 2];\n const scaleX = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n const quatW = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true)\n );\n const quatX = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true)\n );\n const quatY = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true)\n );\n const quatZ = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true)\n );\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n setPackedSplat(\n packedArray,\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i22, key] of sh1Index.entries()) {\n sh1[i22] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1, i2, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh2Index.entries()) {\n sh2[i22] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2, i2, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh3Index.entries()) {\n sh3[i22] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3, i2, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n }\n const PLY_PROPERTY_TYPES = [\n "char",\n "uchar",\n "short",\n "ushort",\n "int",\n "uint",\n "float",\n "double"\n ];\n const _PlyReader = class _PlyReader {\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }) {\n this.header = "";\n this.littleEndian = true;\n this.elements = {};\n this.comments = [];\n this.data = null;\n this.numSplats = 0;\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // "vertex" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (controller) => {\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n }\n });\n const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader();\n this.header = "";\n const headerTerminator = "end_header\\n";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error("Failed to read header");\n }\n this.header += value;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n this.elements = {};\n let curElement = null;\n this.comments = [];\n this.header.trim().split("\\n").forEach((line, lineIndex) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== "ply") {\n throw new Error("Invalid PLY header");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return;\n }\n const fields = trimmedLine.split(" ");\n switch (fields[0]) {\n case "format":\n if (fields[1] === "binary_little_endian") {\n this.littleEndian = true;\n } else if (fields[1] === "binary_big_endian") {\n this.littleEndian = false;\n } else {\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== "1.0") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case "end_header":\n break;\n case "comment":\n this.comments.push(trimmedLine.slice("comment ".length));\n break;\n case "element": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {}\n };\n this.elements[name] = curElement;\n break;\n }\n case "property":\n if (curElement == null) {\n throw new Error("Property must be inside an element");\n }\n if (fields[1] === "list") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3],\n countType: fields[2]\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1]\n };\n }\n break;\n }\n });\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n parseData(elementCallback) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No data to parse");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n const parseFn = createParseFn(properties, this.littleEndian);\n const callback = elementCallback(element) ?? (() => {\n });\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback, shCallback) {\n if (this.elements.vertex == null) {\n throw new Error("No vertex element found");\n }\n let isSuperSplat = false;\n const ssChunks = [];\n let numSh = 0;\n let sh1Props = [];\n let sh2Props = [];\n let sh3Props = [];\n let sh1 = void 0;\n let sh2 = void 0;\n let sh3 = void 0;\n function prepareSh() {\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3));\n sh2Props = new Array(5).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3)\n );\n sh3Props = new Array(7).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3)\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0;\n }\n function ssShCallback(index, item) {\n if (!sh1) {\n throw new Error("Missing sh1");\n }\n const sh = item.f_rest;\n for (let i2 = 0; i2 < sh1Props.length; i2++) {\n sh1[i2] = sh[sh1Props[i2]] * 8 / 255 - 4;\n }\n if (sh2) {\n for (let i2 = 0; i2 < sh2Props.length; i2++) {\n sh2[i2] = sh[sh2Props[i2]] * 8 / 255 - 4;\n }\n }\n if (sh3) {\n for (let i2 = 0; i2 < sh3Props.length; i2++) {\n sh3[i2] = sh[sh3Props[i2]] * 8 / 255 - 4;\n }\n }\n shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3);\n }\n function initSuperSplat(element) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z\n } = element.properties;\n if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) {\n throw new Error("Missing PLY chunk properties");\n }\n isSuperSplat = true;\n return (index, item) => {\n const {\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = item;\n ssChunks.push({\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n });\n };\n }\n function decodeSuperSplat(element) {\n if (shCallback && element.name === "sh") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== "vertex") {\n return null;\n }\n const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties;\n if (!packed_position || !packed_rotation || !packed_scale || !packed_color) {\n throw new Error(\n "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color"\n );\n }\n const SQRT2 = Math.sqrt(2);\n return (index, item) => {\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error("Missing PLY chunk");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = chunk;\n const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item;\n const x2 = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x;\n const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y;\n const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z;\n const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = packed_rotation2 >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n const scaleX = Math.exp(\n (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x\n );\n const scaleY = Math.exp(\n (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y\n );\n const scaleZ = Math.exp(\n (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z\n );\n const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0);\n const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0);\n const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0);\n const opacity = (packed_color2 & 255) / 255;\n splatCallback(\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n };\n }\n const elementCallback = (element) => {\n if (element.name === "chunk") {\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n if (element.name !== "vertex") {\n return null;\n }\n const {\n x: x2,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha\n } = element.properties;\n if (!x2 || !y || !z) {\n throw new Error("Missing PLY properties: x, y, z");\n }\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n numSh = getNumSh(element.properties);\n prepareSh();\n return (index, item) => {\n const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale;\n const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale;\n const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale;\n const quatX = hasRots ? item.rot_1 : 0;\n const quatY = hasRots ? item.rot_2 : 0;\n const quatZ = hasRots ? item.rot_3 : 0;\n const quatW = hasRots ? item.rot_0 : 1;\n const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1;\n const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1;\n const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1;\n const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1;\n splatCallback(\n index,\n item.x,\n item.y,\n item.z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b\n );\n if (shCallback && sh1) {\n const sh = item.f_rest;\n if (sh1) {\n for (let i2 = 0; i2 < sh1Props.length; i2++) {\n sh1[i2] = sh[sh1Props[i2]];\n }\n }\n if (sh2) {\n for (let i2 = 0; i2 < sh2Props.length; i2++) {\n sh2[i2] = sh[sh2Props[i2]];\n }\n }\n if (sh3) {\n for (let i2 = 0; i2 < sh3Props.length; i2++) {\n sh3[i2] = sh[sh3Props[i2]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n this.parseData(elementCallback);\n }\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No parsed data");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error("Invalid RGBA array length");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n let rgbaOffset = 0;\n const isVertex = elementName === "vertex";\n if (isVertex) {\n for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) {\n if (!properties[name] || properties[name].type !== "float") {\n throw new Error(`Can\'t injectRgba due to property: ${name}`);\n }\n }\n }\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") {\n const component = Number.parseInt(\n propertyName.slice("f_dc_".length)\n );\n parsers.push(() => {\n const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n } else if (propertyName === "opacity") {\n parsers.push(() => {\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1)\n )\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.countType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n for (let index = 0; index < count; index++) {\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n };\n _PlyReader.defaultPointScale = 1e-3;\n let PlyReader = _PlyReader;\n const SH_C0$1 = 0.28209479177387814;\n const PARSE_FIELD = {\n char: (data, offset, littleEndian) => {\n return data.getInt8(offset);\n },\n uchar: (data, offset, littleEndian) => {\n return data.getUint8(offset);\n },\n short: (data, offset, littleEndian) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data, offset, littleEndian) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data, offset, littleEndian) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data, offset, littleEndian) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data, offset, littleEndian) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data, offset, littleEndian) => {\n return data.getFloat64(offset, littleEndian);\n }\n };\n const SET_FIELD = {\n char: (data, offset, littleEndian, value) => {\n data.setInt8(offset, value);\n },\n uchar: (data, offset, littleEndian, value) => {\n data.setUint8(offset, value);\n },\n short: (data, offset, littleEndian, value) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (data, offset, littleEndian, value) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (data, offset, littleEndian, value) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (data, offset, littleEndian, value) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (data, offset, littleEndian, value) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (data, offset, littleEndian, value) => {\n data.setFloat64(offset, value, littleEndian);\n }\n };\n const FIELD_BYTES = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8\n };\n const FIELD_SCALE = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1\n };\n const NUM_F_REST_TO_NUM_SH = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3\n };\n const NUM_SH_TO_NUM_F_REST = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n function createEmptyItem(properties) {\n const item = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n }\n function createParseFn(properties, littleEndian) {\n if (safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n }\n const UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function("return 42;");\n } catch (e) {\n return false;\n }\n return true;\n })();\n const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n function safeToCompile(properties) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) {\n return false;\n }\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n }\n function createCompiledParserFn(properties, littleEndian) {\n const parserSrc = ["let list;"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(\n /*js*/\n `\n item.f_rest[${fRestIndex}] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `\n );\n } else if (!property.isList) {\n parserSrc.push(\n /*js*/\n `\n item[\'${propertyName}\'] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `\n );\n } else {\n parserSrc.push(\n /*js*/\n `\n list = item[\'${propertyName}\'];\n list.length = PARSE_FIELD[\'${property.countType}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `\n );\n }\n }\n parserSrc.push("return offset;");\n const fn = new Function(\n "data",\n "offset",\n "item",\n "PARSE_FIELD",\n parserSrc.join("\\n")\n );\n return (data, offset, item) => fn(data, offset, item, PARSE_FIELD);\n }\n function createDynamicParserFn(properties, littleEndian) {\n const parsers = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (data, offset, item) => {\n item.f_rest[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian\n );\n return offset + FIELD_BYTES[property.type];\n }\n );\n } else if (!property.isList) {\n parsers.push(\n (data, offset, item) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian\n );\n return offset + FIELD_BYTES[property.type];\n }\n );\n } else {\n parsers.push(\n (data, offset, item) => {\n const list = item[propertyName];\n list.length = PARSE_FIELD[property.countType](\n data,\n offset,\n littleEndian\n );\n let currentOffset = offset + FIELD_BYTES[property.countType];\n for (let i2 = 0; i2 < list.length; i2++) {\n list[i2] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n }\n );\n }\n }\n return (data, offset, item) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n }\n function getNumSh(properties) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n }\n class SpzReader {\n constructor({ fileBytes }) {\n this.version = -1;\n this.numSplats = 0;\n this.shDegree = 0;\n this.fractionalBits = 0;\n this.flags = 0;\n this.flagAntiAlias = false;\n this.flagLod = false;\n this.reserved = 0;\n this.headerParsed = false;\n this.parsed = false;\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes\n });\n }\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error("SPZ file header already parsed");\n }\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 1347635022) {\n throw new Error("Invalid SPZ file");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 1) !== 0;\n this.flagLod = (this.flags & 128) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n async parseSplats(centerCallback, alphaCallback, rgbCallback, scalesCallback, quatCallback, shCallback, {\n childCounts,\n childStarts\n } = {}) {\n if (!this.headerParsed) {\n throw new Error("SPZ file header must be parsed first");\n }\n if (this.parsed) {\n throw new Error("SPZ file already parsed");\n }\n this.parsed = true;\n if (this.version === 1) {\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const x2 = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback == null ? void 0 : centerCallback(i2, x2, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i9 = i2 * 9;\n const x2 = ((centerBytes[i9 + 2] << 24 | centerBytes[i9 + 1] << 16 | centerBytes[i9] << 8) >> 8) / fixed;\n const y = ((centerBytes[i9 + 5] << 24 | centerBytes[i9 + 4] << 16 | centerBytes[i9 + 3] << 8) >> 8) / fixed;\n const z = ((centerBytes[i9 + 8] << 24 | centerBytes[i9 + 7] << 16 | centerBytes[i9 + 6] << 8) >> 8) / fixed;\n centerCallback == null ? void 0 : centerCallback(i2, x2, y, z);\n }\n } else {\n throw new Error("Unreachable");\n }\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n alphaCallback == null ? void 0 : alphaCallback(i2, bytes[i2] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback == null ? void 0 : rgbCallback(i2, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback == null ? void 0 : scalesCallback(i2, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n const maxValue = 1 / Math.sqrt(2);\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3]\n ];\n const combinedValues = values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n const valueMask = (1 << 9) - 1;\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n for (let i22 = 3; i22 >= 0; --i22) {\n if (i22 !== largestIndex) {\n const value = remainingValues & valueMask;\n const sign = remainingValues >>> 9 & 1;\n remainingValues = remainingValues >>> 10;\n quaternion[i22] = maxValue * (value / valueMask);\n quaternion[i22] = sign === 0 ? quaternion[i22] : -quaternion[i22];\n sumSquares += quaternion[i22] * quaternion[i22];\n }\n }\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n quatCallback == null ? void 0 : quatCallback(\n i2,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3]\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ)\n );\n quatCallback == null ? void 0 : quatCallback(i2, quatX, quatY, quatZ, quatW);\n }\n }\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3\n );\n let offset = 0;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback == null ? void 0 : shCallback(i2, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i22 = i2 * 2;\n const count = bytes[i22] + (bytes[i22 + 1] << 8);\n childCounts == null ? void 0 : childCounts(i2, count);\n }\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i4 = i2 * 4;\n const start = bytes[i4] + (bytes[i4 + 1] << 8) + (bytes[i4 + 2] << 16) + (bytes[i4 + 3] << 24);\n childStarts == null ? void 0 : childStarts(i2, start);\n }\n }\n }\n }\n const SH_DEGREE_TO_VECS = { 1: 3, 2: 8, 3: 15 };\n const SH_C0 = 0.28209479177387814;\n const SPZ_MAGIC = 1347635022;\n const SPZ_VERSION = 3;\n const FLAG_ANTIALIASED = 1;\n class SpzWriter {\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true\n }) {\n this.clippedCount = 0;\n const splatSize = 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) + (shDegree >= 2 ? 15 : 0) + (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n this.view.setUint32(0, SPZ_MAGIC, true);\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0);\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n setCenter(index, x2, y, z) {\n const xRounded = Math.round(x2 * this.fraction);\n const xInt = Math.max(-8388607, Math.min(8388607, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-8388607, Math.min(8388607, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-8388607, Math.min(8388607, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 255);\n this.view.setUint8(base + 1, xInt >> 8 & 255);\n this.view.setUint8(base + 2, xInt >> 16 & 255);\n this.view.setUint8(base + 3, yInt & 255);\n this.view.setUint8(base + 4, yInt >> 8 & 255);\n this.view.setUint8(base + 5, yInt >> 16 & 255);\n this.view.setUint8(base + 6, zInt & 255);\n this.view.setUint8(base + 7, zInt >> 8 & 255);\n this.view.setUint8(base + 8, zInt >> 16 & 255);\n }\n setAlpha(index, alpha) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255)))\n );\n }\n static scaleRgb(r) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n setRgb(index, r, g, b) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n setScale(index, scaleX, scaleY, scaleZ) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16)))\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16)))\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16)))\n );\n }\n setQuat(index, ...q) {\n const base = 16 + this.numSplats * 16 + index * 4;\n const quat = normalize(q);\n let iLargest = 0;\n for (let i2 = 1; i2 < 4; ++i2) {\n if (Math.abs(quat[i2]) > Math.abs(quat[iLargest])) {\n iLargest = i2;\n }\n }\n const negate = quat[iLargest] < 0 ? 1 : 0;\n let comp = iLargest;\n for (let i2 = 0; i2 < 4; ++i2) {\n if (i2 !== iLargest) {\n const negbit = (quat[i2] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i2]) / Math.SQRT1_2) + 0.5\n );\n comp = comp << 10 | negbit << 9 | mag;\n }\n }\n this.view.setUint8(base, comp & 255);\n this.view.setUint8(base + 1, comp >> 8 & 255);\n this.view.setUint8(base + 2, comp >> 16 & 255);\n this.view.setUint8(base + 3, comp >>> 24 & 255);\n }\n static quantizeSh(sh, bits2) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << 8 - bits2;\n const quantized = Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n setSh(index, sh1, sh2, sh3) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n async finalize() {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n }\n });\n const compressed = stream.pipeThrough(new CompressionStream("gzip"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n "Compressed",\n input.length,\n "bytes to",\n buffer.byteLength,\n "bytes"\n );\n return new Uint8Array(buffer);\n }\n }\n async function transcodeSpz(input) {\n var _a2, _b2, _c;\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold\n } = input;\n for (const input2 of inputs) {\n let transformPos = function(pos) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }, transformScales = function(scales) {\n scales.multiplyScalar(scale);\n return scales;\n }, transformQuaternion = function(quat) {\n quat.premultiply(quaternion);\n return quat;\n }, withinClip = function(p) {\n return !clip || clip.containsPoint(p);\n }, withinOpacity = function(opacity) {\n return opacityThreshold !== void 0 ? opacity >= opacityThreshold : true;\n };\n const scale = ((_a2 = input2.transform) == null ? void 0 : _a2.scale) ?? 1;\n const quaternion = new Quaternion().fromArray(\n ((_b2 = input2.transform) == null ? void 0 : _b2.quaternion) ?? [0, 0, 0, 1]\n );\n const translate = new Vector3().fromArray(\n ((_c = input2.transform) == null ? void 0 : _c.translate) ?? [0, 0, 0]\n );\n const clip = clipXyz ? new Box3(\n new Vector3().fromArray(clipXyz.min),\n new Vector3().fromArray(clipXyz.max)\n ) : void 0;\n let fileType = input2.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input2.fileBytes);\n if (!fileType && input2.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input2.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input2.fileBytes });\n await ply.parseHeader();\n let lastIndex = null;\n ply.parseSplats(\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n lastIndex,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz2 = new SpzReader({ fileBytes: input2.fileBytes });\n await spz2.parseHeader();\n const mapping = new Int32Array(spz2.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz2.numSplats * 3);\n const center = new Vector3();\n spz2.parseSplats(\n (index, x2, y, z) => {\n const center2 = transformPos(new Vector3(x2, y, z));\n centers[index * 3] = center2.x;\n centers[index * 3 + 1] = center2.y;\n centers[index * 3 + 2] = center2.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n mapping[index],\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n }\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input2.fileBytes,\n (numSplats) => {\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index2 = splats.pushSplat();\n splats.setCenter(index2, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(index2, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n index2,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(index2, opacity);\n splats.setColor(index2, r, g, b);\n }\n }\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex = null;\n decodeKsplat(\n input2.fileBytes,\n (numSplats) => {\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n lastIndex,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n }\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true\n });\n for (let i2 = 0; i2 < splats.numSplats; ++i2) {\n const i3 = i2 * 3;\n const i4 = i2 * 4;\n spz.setCenter(\n i2,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2]\n );\n spz.setScale(\n i2,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2]\n );\n spz.setQuat(\n i2,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3]\n );\n spz.setAlpha(i2, splats.opacities[i2]);\n spz.setRgb(\n i2,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2]\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i2,\n splats.sh1.slice(i2 * 9, (i2 + 1) * 9),\n shDegree >= 2 && splats.sh2 ? splats.sh2.slice(i2 * 15, (i2 + 1) * 15) : void 0,\n shDegree >= 3 && splats.sh3 ? splats.sh3.slice(i2 * 21, (i2 + 1) * 21) : void 0\n );\n }\n }\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n }\n function getSplatFileType(fileBytes) {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 16777215) === 7957616) {\n return SplatFileType.PLY;\n }\n if ((magic & 16777215) === 559903) {\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 1347635022) {\n return SplatFileType.SPZ;\n }\n return void 0;\n }\n if (magic === 67324752) {\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n return void 0;\n }\n if (magic === 809779538) {\n return SplatFileType.RAD;\n }\n return void 0;\n }\n function getFileExtension(pathOrUrl) {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf("/"),\n noTrailing.lastIndexOf("\\\\")\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(".");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return "";\n }\n return filename.slice(lastDot + 1).toLowerCase();\n }\n function getSplatFileTypeFromPath(pathOrUrl) {\n const extension = getFileExtension(pathOrUrl);\n if (extension === "ply") {\n return SplatFileType.PLY;\n }\n if (extension === "spz") {\n return SplatFileType.SPZ;\n }\n if (extension === "splat") {\n return SplatFileType.SPLAT;\n }\n if (extension === "ksplat") {\n return SplatFileType.KSPLAT;\n }\n if (extension === "sog") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === "rad") {\n return SplatFileType.RAD;\n }\n return void 0;\n }\n function tryPcSogs(input) {\n try {\n let text;\n if (typeof input === "string") {\n text = input;\n } else {\n const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n return void 0;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n const json = JSON.parse(text);\n if (!json || typeof json !== "object" || Array.isArray(json)) {\n return void 0;\n }\n const isVersion2 = json.version === 2;\n for (const key of ["means", "scales", "quats", "sh0"]) {\n if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) {\n return void 0;\n }\n if (isVersion2) {\n if (!json[key].files) {\n return void 0;\n }\n if ((key === "scales" || key === "sh0") && !json[key].codebook) {\n return void 0;\n }\n if (key === "means" && (!json[key].mins || !json[key].maxs)) {\n return void 0;\n }\n } else {\n if (!json[key].shape || !json[key].files) {\n return void 0;\n }\n if (key !== "quats" && (!json[key].mins || !json[key].maxs)) {\n return void 0;\n }\n }\n }\n return json;\n } catch {\n return void 0;\n }\n }\n function tryPcSogsZip(input) {\n try {\n const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename = null;\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop();\n if (filename === "meta.json") {\n metaFilename = name;\n return true;\n }\n return false;\n }\n });\n if (!metaFilename) {\n return void 0;\n }\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return void 0;\n }\n return { name: metaFilename, json };\n } catch {\n return void 0;\n }\n }\n class SplatData {\n constructor({ maxSplats = 1 } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n pushSplat() {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n unpushSplat(index) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error("Cannot unpush splat from non-last position");\n }\n }\n ensureCapacity(numSplats) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n this.maxSplats = targetSplats;\n }\n }\n ensureIndex(index) {\n this.ensureCapacity(index + 1);\n }\n setCenter(index, x2, y, z) {\n this.centers[index * 3] = x2;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n setScale(index, scaleX, scaleY, scaleZ) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n setQuaternion(index, x2, y, z, w) {\n this.quaternions[index * 4] = x2;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n setOpacity(index, opacity) {\n this.opacities[index] = opacity;\n }\n setColor(index, r, g, b) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n setSh1(index, sh1) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n setSh2(index, sh2) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n setSh3(index, sh3) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n }\n async function unpackPcSogs(json, extraFiles, splatEncoding) {\n const isVersion2 = "version" in json;\n if (!isVersion2 && json.quats.encoding !== "quaternion_packed") {\n throw new Error("Unsupported quaternion encoding");\n }\n const numSplats = isVersion2 ? json.count : json.means.shape[0];\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n const meansPromise = Promise.all([\n decodeImageRgba(extraFiles[json.means.files[0]]),\n decodeImageRgba(extraFiles[json.means.files[1]])\n ]).then((means) => {\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const fx = (means[0][i4 + 0] + (means[1][i4 + 0] << 8)) / 65535;\n const fy = (means[0][i4 + 1] + (means[1][i4 + 1] << 8)) / 65535;\n const fz = (means[0][i4 + 2] + (means[1][i4 + 2] << 8)) / 65535;\n let x2 = json.means.mins[0] + (json.means.maxs[0] - json.means.mins[0]) * fx;\n let y = json.means.mins[1] + (json.means.maxs[1] - json.means.mins[1]) * fy;\n let z = json.means.mins[2] + (json.means.maxs[2] - json.means.mins[2]) * fz;\n x2 = Math.sign(x2) * (Math.exp(Math.abs(x2)) - 1);\n y = Math.sign(y) * (Math.exp(Math.abs(y)) - 1);\n z = Math.sign(z) * (Math.exp(Math.abs(z)) - 1);\n setPackedSplatCenter(packedArray, i2, x2, y, z);\n }\n });\n const scalesPromise = decodeImageRgba(extraFiles[json.scales.files[0]]).then(\n (scales) => {\n let xLookup;\n let yLookup;\n let zLookup;\n if (isVersion2) {\n xLookup = yLookup = zLookup = json.scales.codebook.map((x2) => Math.exp(x2));\n } else {\n xLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[0] + (json.scales.maxs[0] - json.scales.mins[0]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n yLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[1] + (json.scales.maxs[1] - json.scales.mins[1]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n zLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[2] + (json.scales.maxs[2] - json.scales.mins[2]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n }\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n setPackedSplatScales(\n packedArray,\n i2,\n xLookup[scales[i4 + 0]],\n yLookup[scales[i4 + 1]],\n zLookup[scales[i4 + 2]],\n splatEncoding\n );\n }\n }\n );\n const quatsPromise = decodeImageRgba(extraFiles[json.quats.files[0]]).then(\n (quats) => {\n const SQRT2 = Math.sqrt(2);\n const lookup = new Array(256).fill(0).map((_, i2) => (i2 / 255 - 0.5) * SQRT2);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const r0 = lookup[quats[i4 + 0]];\n const r1 = lookup[quats[i4 + 1]];\n const r2 = lookup[quats[i4 + 2]];\n const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = quats[i4 + 3] - 252;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n setPackedSplatQuat(packedArray, i2, quatX, quatY, quatZ, quatW);\n }\n }\n );\n const sh0Promise = decodeImageRgba(extraFiles[json.sh0.files[0]]).then(\n (sh0) => {\n const SH_C02 = 0.28209479177387814;\n let rLookup;\n let gLookup;\n let bLookup;\n let aLookup;\n if (isVersion2) {\n rLookup = gLookup = bLookup = json.sh0.codebook.map((x2) => SH_C02 * x2 + 0.5);\n aLookup = new Array(256).fill(0).map((_, i2) => i2 / 255);\n } else {\n rLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[0] + (json.sh0.maxs[0] - json.sh0.mins[0]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n gLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[1] + (json.sh0.maxs[1] - json.sh0.mins[1]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n bLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[2] + (json.sh0.maxs[2] - json.sh0.mins[2]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n aLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[3] + (json.sh0.maxs[3] - json.sh0.mins[3]) * (i2 / 255)\n ).map((x2) => 1 / (1 + Math.exp(-x2)));\n }\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n setPackedSplatRgba(\n packedArray,\n i2,\n rLookup[sh0[i4 + 0]],\n gLookup[sh0[i4 + 1]],\n bLookup[sh0[i4 + 2]],\n aLookup[sh0[i4 + 3]],\n splatEncoding\n );\n }\n }\n );\n const promises = [meansPromise, scalesPromise, quatsPromise, sh0Promise];\n if (json.shN) {\n const useSH3 = isVersion2 ? json.shN.bands >= 3 : json.shN.shape[1] >= 48 - 3;\n const useSH2 = isVersion2 ? json.shN.bands >= 2 : json.shN.shape[1] >= 27 - 3;\n const useSH1 = isVersion2 ? json.shN.bands >= 1 : json.shN.shape[1] >= 12 - 3;\n if (useSH1) extra.sh1 = new Uint32Array(numSplats * 2);\n if (useSH2) extra.sh2 = new Uint32Array(numSplats * 4);\n if (useSH3) extra.sh3 = new Uint32Array(numSplats * 4);\n const sh1 = new Float32Array(9);\n const sh2 = new Float32Array(15);\n const sh3 = new Float32Array(21);\n const shN = json.shN;\n const shNPromise = Promise.all([\n decodeImage(extraFiles[json.shN.files[0]]),\n decodeImage(extraFiles[json.shN.files[1]])\n ]).then(([centroids, labels]) => {\n const lookup = "codebook" in shN ? shN.codebook : new Array(256).fill(0).map((_, i2) => shN.mins + (shN.maxs - shN.mins) * (i2 / 255));\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const label = labels.rgba[i4 + 0] + (labels.rgba[i4 + 1] << 8);\n const col = (label & 63) * 15;\n const row = label >>> 6;\n const offset = row * centroids.width + col;\n for (let d = 0; d < 3; ++d) {\n if (useSH1) {\n for (let k = 0; k < 3; ++k) {\n sh1[k * 3 + d] = lookup[centroids.rgba[(offset + k) * 4 + d]];\n }\n }\n if (useSH2) {\n for (let k = 0; k < 5; ++k) {\n sh2[k * 3 + d] = lookup[centroids.rgba[(offset + 3 + k) * 4 + d]];\n }\n }\n if (useSH3) {\n for (let k = 0; k < 7; ++k) {\n sh3[k * 3 + d] = lookup[centroids.rgba[(offset + 8 + k) * 4 + d]];\n }\n }\n }\n if (useSH1)\n encodeSh1Rgb(extra.sh1, i2, sh1, splatEncoding);\n if (useSH2)\n encodeSh2Rgb(extra.sh2, i2, sh2, splatEncoding);\n if (useSH3)\n encodeSh3Rgb(extra.sh3, i2, sh3, splatEncoding);\n }\n });\n promises.push(shNPromise);\n }\n await Promise.all(promises);\n return { packedArray, numSplats, extra };\n }\n let offscreenGlContext = null;\n async function decodeImage(fileBytes) {\n if (!offscreenGlContext) {\n const canvas = new OffscreenCanvas(1, 1);\n offscreenGlContext = canvas.getContext("webgl2");\n if (!offscreenGlContext) {\n throw new Error("Failed to create WebGL2 context");\n }\n }\n const imageBlob = new Blob([fileBytes]);\n const bitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: "none"\n });\n const gl = offscreenGlContext;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n );\n const data = new Uint8Array(bitmap.width * bitmap.height * 4);\n gl.readPixels(\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data\n );\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n return { rgba: data, width: bitmap.width, height: bitmap.height };\n }\n async function decodeImageRgba(fileBytes) {\n const { rgba } = await decodeImage(fileBytes);\n return rgba;\n }\n async function unpackPcSogsZip(fileBytes, splatEncoding) {\n var _a2;\n const nameJson = tryPcSogsZip(fileBytes);\n if (!nameJson) {\n throw new Error("Invalid PC SOGS zip file");\n }\n const { name, json } = nameJson;\n const lastSlash = name.lastIndexOf("/");\n const lastBackslash = name.lastIndexOf("\\\\");\n const prefix = name.slice(0, Math.max(lastSlash, lastBackslash) + 1);\n const fileMap = /* @__PURE__ */ new Map();\n const refFiles = [\n ...json.means.files,\n ...json.scales.files,\n ...json.quats.files,\n ...json.sh0.files,\n ...((_a2 = json.shN) == null ? void 0 : _a2.files) ?? []\n ];\n for (const file of refFiles) {\n fileMap.set(prefix + file, file);\n }\n const unzipped = await new Promise(\n (resolve, reject) => {\n unzip(\n fileBytes,\n {\n filter: ({ name: name2 }) => {\n return fileMap.has(name2);\n }\n },\n (err2, files) => {\n if (err2) {\n reject(err2);\n } else {\n resolve(files);\n }\n }\n );\n }\n );\n const extraFiles = {};\n for (const [full, name2] of fileMap.entries()) {\n extraFiles[name2] = unzipped[full];\n }\n return await unpackPcSogs(json, extraFiles, splatEncoding);\n }\n async function onMessage(event) {\n const { name, args, id } = event.data;\n let result = void 0;\n let error = void 0;\n try {\n switch (name) {\n case "unpackPly": {\n const { packedArray, fileBytes, splatEncoding } = args;\n const decoded = await unpackPly({\n packedArray,\n fileBytes,\n splatEncoding\n });\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeSpz": {\n const { fileBytes, splatEncoding } = args;\n const decoded = await unpackSpz(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeAntiSplat": {\n const { fileBytes, splatEncoding } = args;\n const decoded = unpackAntiSplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray\n };\n break;\n }\n case "decodeKsplat": {\n const { fileBytes, splatEncoding } = args;\n const decoded = unpackKsplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodePcSogs": {\n const { fileBytes, extraFiles, splatEncoding } = args;\n const json = JSON.parse(\n new TextDecoder().decode(fileBytes)\n );\n const decoded = await unpackPcSogs(json, extraFiles, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodePcSogsZip": {\n const { fileBytes, splatEncoding } = args;\n const decoded = await unpackPcSogsZip(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "sortSplats": {\n const { totalSplats, readback, ordering } = args;\n result = {\n id,\n readback,\n ...sortSplats({ totalSplats, readback, ordering })\n };\n break;\n }\n case "sortDoubleSplats": {\n const { numSplats, readback, ordering } = args;\n {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort_splats(numSplats, readback, ordering)\n };\n }\n break;\n }\n case "sort32Splats": {\n const { numSplats, readback, ordering } = args;\n {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort32_splats(numSplats, readback, ordering)\n };\n }\n break;\n }\n case "transcodeSpz": {\n const input = args;\n const spzBytes = await transcodeSpz(input);\n result = {\n id,\n fileBytes: spzBytes,\n input\n };\n break;\n }\n default: {\n throw new Error(`Unknown name: ${name}`);\n }\n }\n } catch (e) {\n error = e;\n console.error(error);\n }\n self.postMessage(\n { id, result, error },\n { transfer: getTransferable(result) }\n );\n }\n async function unpackPly({\n packedArray,\n fileBytes,\n splatEncoding\n }) {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const extra = {};\n ply.parseSplats(\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n setPackedSplat(\n packedArray,\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3, splatEncoding);\n }\n }\n );\n return { packedArray, numSplats, extra };\n }\n async function unpackSpz(fileBytes, splatEncoding) {\n const spz = new SpzReader({ fileBytes });\n await spz.parseHeader();\n const numSplats = spz.numSplats;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n let extraCallbacks = {};\n if (spz.flagLod) {\n const childCounts = new Uint16Array(numSplats);\n const childStarts = new Uint32Array(numSplats);\n extra.childCounts = childCounts;\n extra.childStarts = childStarts;\n extraCallbacks = {\n childCounts: (index, count) => {\n childCounts[index] = count;\n },\n childStarts: (index, start) => {\n childStarts[index] = start;\n }\n };\n }\n await spz.parseSplats(\n (index, x2, y, z) => {\n setPackedSplatCenter(packedArray, index, x2, y, z);\n },\n (index, alpha) => {\n setPackedSplatOpacity(packedArray, index, alpha);\n },\n (index, r, g, b) => {\n setPackedSplatRgb(packedArray, index, r, g, b, splatEncoding);\n },\n (index, scaleX, scaleY, scaleZ) => {\n setPackedSplatScales(\n packedArray,\n index,\n scaleX,\n scaleY,\n scaleZ,\n splatEncoding\n );\n },\n (index, quatX, quatY, quatZ, quatW) => {\n setPackedSplatQuat(packedArray, index, quatX, quatY, quatZ, quatW);\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3, splatEncoding);\n }\n },\n extraCallbacks\n );\n return { packedArray, numSplats, extra };\n }\n const DEPTH_INFINITY_F16 = 31744;\n const DEPTH_SIZE_16 = DEPTH_INFINITY_F16 + 1;\n let depthArray16 = null;\n function sortSplats({\n totalSplats,\n readback,\n ordering\n }) {\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n const readbackUint32 = readback.map((layer) => new Uint32Array(layer.buffer));\n const layerSize = readbackUint32[0].length;\n const numLayers = Math.ceil(totalSplats / layerSize);\n let layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n let activeSplats = 0;\n for (let j = 0; j < DEPTH_SIZE_16; ++j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = layerBase + i2;\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n if (depthArray16[DEPTH_SIZE_16 - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[DEPTH_SIZE_16 - 1]}`\n );\n }\n return { activeSplats, ordering };\n }\n const messageBuffer = [];\n function bufferMessage(event) {\n messageBuffer.push(event);\n }\n async function initialize() {\n self.addEventListener("message", bufferMessage);\n await __wbg_init();\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of messageBuffer) {\n onMessage(event);\n }\n messageBuffer.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=oldWorker-DUF0ALOS.js.map\n'; -const blob$1 = typeof self !== "undefined" && self.Blob && new Blob([jsContent$1], { type: "text/javascript;charset=utf-8" }); -function WorkerWrapper$1(options) { - let objURL; - try { - objURL = blob$1 && (self.URL || self.webkitURL).createObjectURL(blob$1); - if (!objURL) throw ""; - const worker = new Worker(objURL, { - name: options == null ? void 0 : options.name - }); - worker.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(objURL); - }); - return worker; - } catch (e) { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent$1), - { - name: options == null ? void 0 : options.name - } - ); - } finally { - objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); - } +const LN_SCALE_MIN = -12; +const LN_SCALE_MAX = 9; +const SCALE_MIN = Math.exp(LN_SCALE_MIN); +const SCALE_MAX = Math.exp(LN_SCALE_MAX); +const LN_SCALE_ZERO = -30; +const SCALE_ZERO = Math.exp(LN_SCALE_ZERO); +const SPLAT_TEX_WIDTH_BITS = 11; +const SPLAT_TEX_HEIGHT_BITS = 11; +const SPLAT_TEX_DEPTH_BITS = 11; +const SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; +const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; +const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; +const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; +const SPLAT_TEX_MIN_HEIGHT = 1; +const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1; +const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1; +const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1; +const WASM_SPLAT_SORT = true; +const USE_COMPILED_PARSER_FUNCTION = true; +var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => { + SplatFileType2["PLY"] = "ply"; + SplatFileType2["SPZ"] = "spz"; + SplatFileType2["SPLAT"] = "splat"; + SplatFileType2["KSPLAT"] = "ksplat"; + SplatFileType2["PCSOGS"] = "pcsogs"; + SplatFileType2["PCSOGSZIP"] = "pcsogszip"; + SplatFileType2["RAD"] = "rad"; + return SplatFileType2; +})(SplatFileType || {}); +const DEFAULT_SPLAT_ENCODING = { + rgbMin: 0, + rgbMax: 1, + lnScaleMin: LN_SCALE_MIN, + lnScaleMax: LN_SCALE_MAX, + sh1Max: 1, + sh2Max: 1, + sh3Max: 1, + lodOpacity: false +}; +const defines = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + DEFAULT_SPLAT_ENCODING, + LN_SCALE_MAX, + LN_SCALE_MIN, + LN_SCALE_ZERO, + SCALE_MAX, + SCALE_MIN, + SCALE_ZERO, + SPLAT_TEX_DEPTH, + SPLAT_TEX_DEPTH_BITS, + SPLAT_TEX_DEPTH_MASK, + SPLAT_TEX_HEIGHT, + SPLAT_TEX_HEIGHT_BITS, + SPLAT_TEX_HEIGHT_MASK, + SPLAT_TEX_LAYER_BITS, + SPLAT_TEX_MIN_HEIGHT, + SPLAT_TEX_WIDTH, + SPLAT_TEX_WIDTH_BITS, + SPLAT_TEX_WIDTH_MASK, + SplatFileType, + USE_COMPILED_PARSER_FUNCTION, + WASM_SPLAT_SORT +}, Symbol.toStringTag, { value: "Module" })); +function isBoolType(type) { + return type === "bool" || type === "bvec2" || type === "bvec3" || type === "bvec4"; } -var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; -var fleb = new u8([ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - /* unused */ - 0, - 0, - /* impossible */ - 0 -]); -var fdeb = new u8([ - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13, - /* unused */ - 0, - 0 -]); -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -var freb = function(eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - var r = new i32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = j - b[i] << 5 | i; - } +function isScalarType(type) { + return type === "int" || type === "uint" || type === "float"; +} +function isIntType(type) { + return type === "int" || type === "ivec2" || type === "ivec3" || type === "ivec4"; +} +function isUintType(type) { + return type === "uint" || type === "uvec2" || type === "uvec3" || type === "uvec4"; +} +function isFloatType(type) { + return type === "float" || type === "vec2" || type === "vec3" || type === "vec4"; +} +function isMatFloatType(type) { + return type === "mat2" || type === "mat2x2" || type === "mat2x3" || type === "mat2x4" || type === "mat3" || type === "mat3x2" || type === "mat3x3" || type === "mat3x4" || type === "mat4" || type === "mat4x2" || type === "mat4x3" || type === "mat4x4"; +} +function isAllFloatType(type) { + return isFloatType(type) || isMatFloatType(type); +} +function isVector2Type(type) { + return type === "vec2" || type === "ivec2" || type === "uvec2"; +} +function isVector3Type(type) { + return type === "vec3" || type === "ivec3" || type === "uvec3"; +} +function isVector4Type(type) { + return type === "vec4" || type === "ivec4" || type === "uvec4"; +} +function isVectorType(type) { + return isVector2Type(type) || isVector3Type(type) || isVector4Type(type); +} +function isMat2(type) { + return type === "mat2" || type === "mat2x2"; +} +function isMat3(type) { + return type === "mat3" || type === "mat3x3"; +} +function isMat4(type) { + return type === "mat4" || type === "mat4x4"; +} +function vectorElementType(type) { + switch (type) { + case "vec2": + return "float"; + case "vec3": + return "float"; + case "vec4": + return "float"; + case "ivec2": + return "int"; + case "ivec3": + return "int"; + case "ivec4": + return "int"; + case "uvec2": + return "uint"; + case "uvec3": + return "uint"; + case "uvec4": + return "uint"; + default: + throw new Error(`Invalid vector type: ${type}`); } - return { b, r }; -}; -var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0), fd = _b.b; -var rev = new u16(32768); -for (var i = 0; i < 32768; ++i) { - var x = (i & 43690) >> 1 | (i & 21845) << 1; - x = (x & 52428) >> 2 | (x & 13107) << 2; - x = (x & 61680) >> 4 | (x & 3855) << 4; - rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; } -var hMap = function(cd, mb, r) { - var s = cd.length; - var i = 0; - var l = new u16(mb); - for (; i < s; ++i) { - if (cd[i]) - ++l[cd[i] - 1]; +function vectorDim(type) { + switch (type) { + case "vec2": + case "ivec2": + case "uvec2": + return 2; + case "vec3": + case "ivec3": + case "uvec3": + return 3; + case "vec4": + case "ivec4": + case "uvec4": + return 4; + default: + throw new Error(`Invalid vector type: ${type}`); } - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = le[i - 1] + l[i - 1] << 1; +} +function sameSizeVec(type) { + if (isScalarType(type)) { + return "float"; } - var co; - if (r) { - co = new u16(1 << mb); - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - if (cd[i]) { - var sv = i << 4 | cd[i]; - var r_1 = mb - cd[i]; - var v = le[cd[i] - 1]++ << r_1; - for (var m = v | (1 << r_1) - 1; v <= m; ++v) { - co[rev[v] >> rvb] = sv; + if (isVector2Type(type)) { + return "vec2"; + } + if (isVector3Type(type)) { + return "vec3"; + } + if (isVector4Type(type)) { + return "vec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function sameSizeUvec(type) { + if (isScalarType(type)) { + return "uint"; + } + if (isVector2Type(type)) { + return "uvec2"; + } + if (isVector3Type(type)) { + return "uvec3"; + } + if (isVector4Type(type)) { + return "uvec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function sameSizeIvec(type) { + if (isScalarType(type)) { + return "int"; + } + if (isVector2Type(type)) { + return "ivec2"; + } + if (isVector3Type(type)) { + return "ivec3"; + } + if (isVector4Type(type)) { + return "ivec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function typeLiteral(type) { + if (typeof type === "string") { + return type; + } + if (typeof type === "object" && type.type) { + return type.type; + } + throw new Error(`Invalid DynoType: ${String(type)}`); +} +function numberAsInt(value) { + return Math.trunc(value).toString(); +} +function numberAsUint(value) { + const v = Math.max(0, Math.trunc(value)); + return `${v.toString()}u`; +} +function numberAsFloat(value) { + return value === Number.POSITIVE_INFINITY ? "INFINITY" : value === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(value) ? value.toFixed(1) : value.toString(); +} +function valType(val) { + if (val instanceof DynoValue) { + return val.type; + } + const value = val.dynoOut(); + return value.type; +} +class DynoValue { + constructor(type) { + this.__isDynoValue = true; + this.type = type; + } +} +class DynoOutput extends DynoValue { + constructor(dyno2, key) { + super(dyno2.outTypes[key]); + this.dyno = dyno2; + this.key = key; + } +} +class DynoLiteral extends DynoValue { + constructor(type, literal) { + super(type); + this.literal = literal; + } + getLiteral() { + return this.literal; + } +} +function dynoLiteral(type, literal) { + return new DynoLiteral(type, literal); +} +class DynoConst extends DynoLiteral { + constructor(type, value) { + super(type, ""); + this.value = value; + } + getLiteral() { + const { type, value } = this; + switch (type) { + case "bool": + return value ? "true" : "false"; + case "uint": + return numberAsUint(value); + case "int": + return numberAsInt(value); + case "float": + return numberAsFloat(value); + case "bvec2": { + const v = value; + return `bvec2(${v[0]}, ${v[1]})`; + } + case "uvec2": { + if (value instanceof THREE__namespace.Vector2) { + return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`; } + const v = value; + return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`; } - } - } else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + case "ivec2": { + if (value instanceof THREE__namespace.Vector2) { + return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`; + } + const v = value; + return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`; } - } - } - return co; -}; -var flt = new u8(288); -for (var i = 0; i < 144; ++i) - flt[i] = 8; -for (var i = 144; i < 256; ++i) - flt[i] = 9; -for (var i = 256; i < 280; ++i) - flt[i] = 7; -for (var i = 280; i < 288; ++i) - flt[i] = 8; -var fdt = new u8(32); -for (var i = 0; i < 32; ++i) - fdt[i] = 5; -var flrm = /* @__PURE__ */ hMap(flt, 9, 1); -var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); -var max$1 = function(a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; -}; -var bits = function(d, p, m) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8) >> (p & 7) & m; -}; -var bits16 = function(d, p) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); -}; -var shft = function(p) { - return (p + 7) / 8 | 0; -}; -var slc = function(v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - return new u8(v.subarray(s, e)); -}; -var ec = [ - "unexpected EOF", - "invalid block type", - "invalid length/literal", - "invalid distance", - "stream finished", - "no stream handler", - , - "no callback", - "invalid UTF-8 data", - "extra field too long", - "date not in range 1980-2099", - "filename too long", - "stream finishing", - "invalid zip data" - // determined by unknown compression method -]; -var err = function(ind, msg, nt) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err); - if (!nt) - throw e; - return e; -}; -var inflt = function(dat, st, buf, dict) { - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - var noBuf = !buf; - var resize = noBuf || st.i != 2; - var noSt = st.i; - if (noBuf) - buf = new u8(sl * 3); - var cbuf = function(l2) { - var bl = buf.length; - if (l2 > bl) { - var nbuf = new u8(Math.max(bl * 2, l2)); - nbuf.set(buf); - buf = nbuf; - } - }; - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - var tbts = sl * 8; - do { - if (!lm) { - final = bits(dat, pos, 1); - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; - if (t > sl) { - if (noSt) - err(0); - break; + case "vec2": { + if (value instanceof THREE__namespace.Vector2) { + return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`; } - if (resize) - cbuf(bt + l); - buf.set(dat.subarray(s, t), bt); - st.b = bt += l, st.p = pos = t * 8, st.f = final; - continue; - } else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - var ldt = new u8(tl); - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - clt[clim[i]] = bits(dat, pos + i * 3, 7); + const v = value; + return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`; + } + case "bvec3": { + const v = value; + return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`; + } + case "uvec3": { + if (value instanceof THREE__namespace.Vector3) { + return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`; } - pos += hcLen * 3; - var clb = max$1(clt), clbmsk = (1 << clb) - 1; - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl; ) { - var r = clm[bits(dat, pos, clbmsk)]; - pos += r & 15; - var s = r >> 4; - if (s < 16) { - ldt[i++] = s; - } else { - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } + const v = value; + return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`; + } + case "ivec3": { + if (value instanceof THREE__namespace.Vector3) { + return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`; } - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - lbt = max$1(lt); - dbt = max$1(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } else - err(1); - if (pos > tbts) { - if (noSt) - err(0); - break; + const v = value; + return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`; } - } - if (resize) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (; ; lpos = pos) { - var c = lm[bits16(dat, pos) & lms], sym = c >> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - err(0); - break; + case "vec3": { + if (value instanceof THREE__namespace.Vector3) { + return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`; + } + const v = value; + return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`; } - if (!c) - err(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } else { - var add2 = sym - 254; - if (sym > 264) { - var i = sym - 257, b = fleb[i]; - add2 = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; + case "bvec4": { + const v = value; + return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`; + } + case "uvec4": { + if (value instanceof THREE__namespace.Vector4) { + return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`; } - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err(3); - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + const v = value; + return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`; + } + case "ivec4": { + if (value instanceof THREE__namespace.Vector4) { + return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`; } - if (pos > tbts) { - if (noSt) - err(0); - break; + const v = value; + return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`; + } + case "vec4": { + if (value instanceof THREE__namespace.Vector4) { + return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; } - if (resize) - cbuf(bt + 131072); - var end = bt + add2; - if (bt < dt) { - var shift = dl - dt, dend = Math.min(dt, end); - if (shift + bt < 0) - err(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; + if (value instanceof THREE__namespace.Quaternion) { + return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; } - for (; bt < end; ++bt) - buf[bt] = buf[bt - dt]; + const v = value; + return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`; + } + case "mat2": + case "mat2x2": { + const m = value; + const e = m instanceof THREE__namespace.Matrix2 ? m.elements : value; + const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat2x3": { + const e = value; + const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat2x4": { + const e = value; + const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3": + case "mat3x3": { + const m = value; + const e = m instanceof THREE__namespace.Matrix3 ? m.elements : value; + const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3x2": { + const e = value; + const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3x4": { + const e = value; + const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4": + case "mat4x4": { + const m = value; + const e = m instanceof THREE__namespace.Matrix4 ? m.elements : value; + const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4x2": { + const e = value; + const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4x3": { + const e = value; + const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; } + default: + throw new Error(`Type not implemented: ${String(type)}`); } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); -}; -var et = /* @__PURE__ */ new u8(0); -var b2 = function(d, b) { - return d[b] | d[b + 1] << 8; -}; -var b4 = function(d, b) { - return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0; -}; -var b8 = function(d, b) { - return b4(d, b) + b4(d, b + 4) * 4294967296; -}; -var gzs = function(d) { - if (d[0] != 31 || d[1] != 139 || d[2] != 8) - err(6, "invalid gzip data"); - var flg = d[3]; - var st = 10; - if (flg & 4) - st += (d[10] | d[11] << 8) + 2; - for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) - ; - return st + (flg & 2); -}; -var Inflate = /* @__PURE__ */ function() { - function Inflate2(opts, cb) { - if (typeof opts == "function") - cb = opts, opts = {}; - this.ondata = cb; - var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); - this.s = { i: 0, b: dict ? dict.length : 0 }; - this.o = new u8(32768); - this.p = new u8(0); - if (dict) - this.o.set(dict); } - Inflate2.prototype.e = function(c) { - if (!this.ondata) - err(5); - if (this.d) - err(4); - if (!this.p.length) - this.p = c; - else if (c.length) { - var n = new u8(this.p.length + c.length); - n.set(this.p), n.set(c, this.p.length), this.p = n; - } - }; - Inflate2.prototype.c = function(final) { - this.s.i = +(this.d = final || false); - var bts = this.s.b; - var dt = inflt(this.p, this.s, this.o); - this.ondata(slc(dt, bts, this.s.b), this.d); - this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; - this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; - }; - Inflate2.prototype.push = function(chunk, final) { - this.e(chunk), this.c(final); - }; - return Inflate2; -}(); -function inflateSync(data, opts) { - return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); } -var Gunzip = /* @__PURE__ */ function() { - function Gunzip2(opts, cb) { - this.v = 1; - this.r = 0; - Inflate.call(this, opts, cb); - } - Gunzip2.prototype.push = function(chunk, final) { - Inflate.prototype.e.call(this, chunk); - this.r += chunk.length; - if (this.v) { - var p = this.p.subarray(this.v - 1); - var s = p.length > 3 ? gzs(p) : 4; - if (s > p.length) { - if (!final) - return; - } else if (this.v > 1 && this.onmember) { - this.onmember(this.r - p.length); - } - this.p = p.subarray(s), this.v = 0; - } - Inflate.prototype.c.call(this, final); - if (this.s.f && !this.s.l && !final) { - this.v = shft(this.s.p) + 9; - this.s = { i: 0 }; - this.o = new u8(0); - this.push(new u8(0), final); - } - }; - return Gunzip2; -}(); -var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} catch (e) { +function dynoConst(type, value) { + return new DynoConst(type, value); } -var dutf8 = function(d) { - for (var r = "", i = 0; ; ) { - var c = d[i++]; - var eb = (c > 127) + (c > 223) + (c > 239); - if (i + eb > d.length) - return { s: r, r: slc(d, i - 1) }; - if (!eb) - r += String.fromCharCode(c); - else if (eb == 3) { - c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); - } else if (eb & 1) - r += String.fromCharCode((c & 31) << 6 | d[i++] & 63); - else - r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); +function literalZero(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(false)`; } -}; -function strFromU8(dat, latin1) { - if (latin1) { - var r = ""; - for (var i = 0; i < dat.length; i += 16384) - r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); - return r; - } else if (td) { - return td.decode(dat); - } else { - var _a2 = dutf8(dat), s = _a2.s, r = _a2.r; - if (r.length) - err(8); - return s; + if (isAllFloatType(type)) { + return `${typeString}(0.0)`; + } + if (isIntType(type)) { + return `${typeString}(0)`; } + if (isUintType(type)) { + return `${typeString}(0u)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -var slzh = function(d, b) { - return b + 30 + b2(d, b + 26) + b2(d, b + 28); -}; -var zh = function(d, b, z) { - var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); - var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2]; - return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; -}; -var z64e = function(d, b) { - for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) - ; - return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; -}; -function unzipSync(data, opts) { - var files = {}; - var e = data.length - 22; - for (; b4(data, e) != 101010256; --e) { - if (!e || data.length - e > 65558) - err(13); +function literalOne(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(true)`; } - var c = b2(data, e + 8); - if (!c) - return {}; - var o = b4(data, e + 16); - var z = o == 4294967295 || c == 65535; - if (z) { - var ze = b4(data, e - 12); - z = b4(data, ze) == 101075792; - if (z) { - c = b4(data, ze + 32); - o = b4(data, ze + 48); - } + if (isAllFloatType(type)) { + return `${typeString}(1.0)`; } - var fltr = opts && opts.filter; - for (var i = 0; i < c; ++i) { - var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off); - o = no; - if (!fltr || fltr({ - name: fn, - size: sc, - originalSize: su, - compression: c_2 - })) { - if (!c_2) - files[fn] = slc(data, b, b + sc); - else if (c_2 == 8) - files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) }); - else - err(14, "unknown compression type " + c_2); - } + if (isIntType(type)) { + return `${typeString}(1)`; } - return files; + if (isUintType(type)) { + return `${typeString}(1u)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -const LN_SCALE_MIN = -12; -const LN_SCALE_MAX = 9; -const SCALE_MIN = Math.exp(LN_SCALE_MIN); -const SCALE_MAX = Math.exp(LN_SCALE_MAX); -const LN_SCALE_ZERO = -30; -const SCALE_ZERO = Math.exp(LN_SCALE_ZERO); -const SPLAT_TEX_WIDTH_BITS = 11; -const SPLAT_TEX_HEIGHT_BITS = 11; -const SPLAT_TEX_DEPTH_BITS = 11; -const SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; -const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; -const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; -const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; -const SPLAT_TEX_MIN_HEIGHT = 1; -const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1; -const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1; -const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1; -const WASM_SPLAT_SORT = true; -const USE_COMPILED_PARSER_FUNCTION = true; -var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => { - SplatFileType2["PLY"] = "ply"; - SplatFileType2["SPZ"] = "spz"; - SplatFileType2["SPLAT"] = "splat"; - SplatFileType2["KSPLAT"] = "ksplat"; - SplatFileType2["PCSOGS"] = "pcsogs"; - SplatFileType2["PCSOGSZIP"] = "pcsogszip"; - SplatFileType2["RAD"] = "rad"; - return SplatFileType2; -})(SplatFileType || {}); -const DEFAULT_SPLAT_ENCODING = { - rgbMin: 0, - rgbMax: 1, - lnScaleMin: LN_SCALE_MIN, - lnScaleMax: LN_SCALE_MAX, - sh1Max: 1, - sh2Max: 1, - sh3Max: 1, - lodOpacity: false -}; -const defines = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - DEFAULT_SPLAT_ENCODING, - LN_SCALE_MAX, - LN_SCALE_MIN, - LN_SCALE_ZERO, - SCALE_MAX, - SCALE_MIN, - SCALE_ZERO, - SPLAT_TEX_DEPTH, - SPLAT_TEX_DEPTH_BITS, - SPLAT_TEX_DEPTH_MASK, - SPLAT_TEX_HEIGHT, - SPLAT_TEX_HEIGHT_BITS, - SPLAT_TEX_HEIGHT_MASK, - SPLAT_TEX_LAYER_BITS, - SPLAT_TEX_MIN_HEIGHT, - SPLAT_TEX_WIDTH, - SPLAT_TEX_WIDTH_BITS, - SPLAT_TEX_WIDTH_MASK, - SplatFileType, - USE_COMPILED_PARSER_FUNCTION, - WASM_SPLAT_SORT -}, Symbol.toStringTag, { value: "Module" })); -function isBoolType(type) { - return type === "bool" || type === "bvec2" || type === "bvec3" || type === "bvec4"; +function literalNegOne(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(true)`; + } + if (isAllFloatType(type)) { + return `${typeString}(-1.0)`; + } + if (isIntType(type)) { + return `${typeString}(-1)`; + } + if (isUintType(type)) { + return `${typeString}(0xFFFFFFFFu)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -function isScalarType(type) { - return type === "int" || type === "uint" || type === "float"; +const DEFAULT_INDENT = " "; +class Compilation { + constructor({ indent } = {}) { + this.globals = /* @__PURE__ */ new Set(); + this.statements = []; + this.uniforms = {}; + this.declares = /* @__PURE__ */ new Set(); + this.updaters = []; + this.sequence = 0; + this.indent = DEFAULT_INDENT; + this.indent = indent ?? DEFAULT_INDENT; + } + nextSequence() { + return this.sequence++; + } } -function isIntType(type) { - return type === "int" || type === "ivec2" || type === "ivec3" || type === "ivec4"; -} -function isUintType(type) { - return type === "uint" || type === "uvec2" || type === "uvec3" || type === "uvec4"; -} -function isFloatType(type) { - return type === "float" || type === "vec2" || type === "vec3" || type === "vec4"; -} -function isMatFloatType(type) { - return type === "mat2" || type === "mat2x2" || type === "mat2x3" || type === "mat2x4" || type === "mat3" || type === "mat3x2" || type === "mat3x3" || type === "mat3x4" || type === "mat4" || type === "mat4x2" || type === "mat4x3" || type === "mat4x4"; -} -function isAllFloatType(type) { - return isFloatType(type) || isMatFloatType(type); -} -function isVector2Type(type) { - return type === "vec2" || type === "ivec2" || type === "uvec2"; -} -function isVector3Type(type) { - return type === "vec3" || type === "ivec3" || type === "uvec3"; -} -function isVector4Type(type) { - return type === "vec4" || type === "ivec4" || type === "uvec4"; -} -function isVectorType(type) { - return isVector2Type(type) || isVector3Type(type) || isVector4Type(type); -} -function isMat2(type) { - return type === "mat2" || type === "mat2x2"; -} -function isMat3(type) { - return type === "mat3" || type === "mat3x3"; -} -function isMat4(type) { - return type === "mat4" || type === "mat4x4"; -} -function vectorElementType(type) { - switch (type) { - case "vec2": - return "float"; - case "vec3": - return "float"; - case "vec4": - return "float"; - case "ivec2": - return "int"; - case "ivec3": - return "int"; - case "ivec4": - return "int"; - case "uvec2": - return "uint"; - case "uvec3": - return "uint"; - case "uvec4": - return "uint"; - default: - throw new Error(`Invalid vector type: ${type}`); - } -} -function vectorDim(type) { - switch (type) { - case "vec2": - case "ivec2": - case "uvec2": - return 2; - case "vec3": - case "ivec3": - case "uvec3": - return 3; - case "vec4": - case "ivec4": - case "uvec4": - return 4; - default: - throw new Error(`Invalid vector type: ${type}`); - } -} -function sameSizeVec(type) { - if (isScalarType(type)) { - return "float"; - } - if (isVector2Type(type)) { - return "vec2"; - } - if (isVector3Type(type)) { - return "vec3"; - } - if (isVector4Type(type)) { - return "vec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function sameSizeUvec(type) { - if (isScalarType(type)) { - return "uint"; - } - if (isVector2Type(type)) { - return "uvec2"; - } - if (isVector3Type(type)) { - return "uvec3"; - } - if (isVector4Type(type)) { - return "uvec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function sameSizeIvec(type) { - if (isScalarType(type)) { - return "int"; - } - if (isVector2Type(type)) { - return "ivec2"; - } - if (isVector3Type(type)) { - return "ivec3"; - } - if (isVector4Type(type)) { - return "ivec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function typeLiteral(type) { - if (typeof type === "string") { - return type; - } - if (typeof type === "object" && type.type) { - return type.type; +class Dyno { + constructor({ + inTypes, + outTypes, + inputs, + update, + globals, + statements, + generate + }) { + this.inTypes = inTypes ?? {}; + this.outTypes = outTypes ?? {}; + this.inputs = inputs ?? {}; + this.update = update; + this.globals = globals; + this.statements = statements; + this.generate = generate ?? (({ inputs: inputs2, outputs, compile }) => { + var _a2, _b2; + return { + globals: (_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs: inputs2, outputs, compile }), + statements: (_b2 = this.statements) == null ? void 0 : _b2.call(this, { inputs: inputs2, outputs, compile }) + }; + }); } - throw new Error(`Invalid DynoType: ${String(type)}`); -} -function numberAsInt(value) { - return Math.trunc(value).toString(); -} -function numberAsUint(value) { - const v = Math.max(0, Math.trunc(value)); - return `${v.toString()}u`; -} -function numberAsFloat(value) { - return value === Number.POSITIVE_INFINITY ? "INFINITY" : value === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(value) ? value.toFixed(1) : value.toString(); -} -function valType(val) { - if (val instanceof DynoValue) { - return val.type; + get outputs() { + const outputs = {}; + for (const key in this.outTypes) { + outputs[key] = new DynoOutput(this, key); + } + return outputs; } - const value = val.dynoOut(); - return value.type; -} -class DynoValue { - constructor(type) { - this.__isDynoValue = true; - this.type = type; + apply(inputs) { + Object.assign(this.inputs, inputs); + return this.outputs; } -} -class DynoOutput extends DynoValue { - constructor(dyno2, key) { - super(dyno2.outTypes[key]); - this.dyno = dyno2; - this.key = key; + compile({ + inputs, + outputs, + compile + }) { + const result = [ + `// ${this.constructor.name}(${Object.values(inputs).join(", ")}) => (${Object.values(outputs).join(", ")})` + ]; + const declares = []; + for (const key in outputs) { + const name = outputs[key]; + if (name && !compile.declares.has(name)) { + compile.declares.add(name); + declares.push(key); + } + } + const { globals, statements, uniforms } = this.generate({ + inputs, + outputs, + compile + }); + for (const global of globals ?? []) { + compile.globals.add(global); + } + for (const key in uniforms) { + compile.uniforms[key] = uniforms[key]; + } + if (this.update) { + compile.updaters.push(this.update); + } + for (const key of declares) { + const name = outputs[key]; + if (name) { + if (!compile.uniforms[name]) { + result.push(`${dynoDeclare(name, this.outTypes[key])};`); + } + } + } + if (statements == null ? void 0 : statements.length) { + result.push("{"); + result.push(...statements.map((line) => compile.indent + line)); + result.push("}"); + } + return result; } } -class DynoLiteral extends DynoValue { - constructor(type, literal) { - super(type); - this.literal = literal; - } - getLiteral() { - return this.literal; +class DynoBlock extends Dyno { + constructor({ + inTypes, + outTypes, + inputs, + update, + globals, + construct + }) { + super({ + inTypes, + outTypes, + inputs, + update, + globals, + generate: (args) => this.generateBlock(args) + }); + this.construct = construct; } -} -function dynoLiteral(type, literal) { - return new DynoLiteral(type, literal); -} -class DynoConst extends DynoLiteral { - constructor(type, value) { - super(type, ""); - this.value = value; - } - getLiteral() { - const { type, value } = this; - switch (type) { - case "bool": - return value ? "true" : "false"; - case "uint": - return numberAsUint(value); - case "int": - return numberAsInt(value); - case "float": - return numberAsFloat(value); - case "bvec2": { - const v = value; - return `bvec2(${v[0]}, ${v[1]})`; - } - case "uvec2": { - if (value instanceof THREE__namespace.Vector2) { - return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`; - } - const v = value; - return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`; - } - case "ivec2": { - if (value instanceof THREE__namespace.Vector2) { - return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`; - } - const v = value; - return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`; - } - case "vec2": { - if (value instanceof THREE__namespace.Vector2) { - return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`; - } - const v = value; - return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`; - } - case "bvec3": { - const v = value; - return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`; - } - case "uvec3": { - if (value instanceof THREE__namespace.Vector3) { - return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`; - } - const v = value; - return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`; + generateBlock({ + inputs, + outputs, + compile + }) { + var _a2, _b2; + const blockInputs = {}; + const blockOutputs = {}; + for (const key in inputs) { + if (inputs[key] != null) { + blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]); } - case "ivec3": { - if (value instanceof THREE__namespace.Vector3) { - return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`; - } - const v = value; - return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`; + } + for (const key in outputs) { + if (outputs[key] != null) { + blockOutputs[key] = new DynoValue(this.outTypes[key]); } - case "vec3": { - if (value instanceof THREE__namespace.Vector3) { - return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`; + } + const options = { roots: [] }; + const returned = this.construct(blockInputs, blockOutputs, options); + for (const global of ((_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs, outputs, compile })) ?? []) { + compile.globals.add(global); + } + const ordering = []; + const nodeOuts = /* @__PURE__ */ new Map(); + function visit(node, outKey, outName) { + let outs = nodeOuts.get(node); + if (!outs) { + outs = { + sequence: compile.nextSequence(), + outNames: /* @__PURE__ */ new Map(), + newOuts: /* @__PURE__ */ new Set() + }; + nodeOuts.set(node, outs); + for (const key in node.inputs) { + let input = node.inputs[key]; + while (input) { + if (input instanceof DynoValue) { + if (input instanceof DynoOutput) { + visit(input.dyno, input.key); + } + break; + } + if (typeof input.dynoOut !== "function") { + throw new Error( + `dynoOut is not a function for ${input.constructor.name}` + ); + } + input = input.dynoOut(); + } } - const v = value; - return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`; - } - case "bvec4": { - const v = value; - return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`; + ordering.push(node); } - case "uvec4": { - if (value instanceof THREE__namespace.Vector4) { - return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`; + if (outKey) { + if (!outName) { + outs.newOuts.add(outKey); } - const v = value; - return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`; + outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`); } - case "ivec4": { - if (value instanceof THREE__namespace.Vector4) { - return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`; + } + for (const root of options.roots) { + visit(root); + } + for (const key in blockOutputs) { + let value = (returned == null ? void 0 : returned[key]) ?? blockOutputs[key]; + while (value) { + if (value instanceof DynoValue) { + if (value instanceof DynoOutput) { + visit(value.dyno, value.key, outputs[key]); + } + break; } - const v = value; - return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`; + value = value.dynoOut(); } - case "vec4": { - if (value instanceof THREE__namespace.Vector4) { - return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; - } - if (value instanceof THREE__namespace.Quaternion) { - return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; + blockOutputs[key] = value; + } + const steps = []; + for (const dyno2 of ordering) { + const inputs2 = {}; + const outputs2 = {}; + for (const key in dyno2.inputs) { + let value = dyno2.inputs[key]; + while (value) { + if (value instanceof DynoValue) { + if (value instanceof DynoLiteral) { + inputs2[key] = value.getLiteral(); + } else if (value instanceof DynoOutput) { + const source = (_b2 = nodeOuts.get(value.dyno)) == null ? void 0 : _b2.outNames.get(value.key); + if (!source) { + throw new Error( + `Source not found for ${value.dyno.constructor.name}.${value.key}` + ); + } + inputs2[key] = source; + } + break; + } + value = value.dynoOut(); } - const v = value; - return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`; - } - case "mat2": - case "mat2x2": { - const m = value; - const e = m instanceof THREE__namespace.Matrix2 ? m.elements : value; - const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat2x3": { - const e = value; - const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat2x4": { - const e = value; - const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3": - case "mat3x3": { - const m = value; - const e = m instanceof THREE__namespace.Matrix3 ? m.elements : value; - const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3x2": { - const e = value; - const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3x4": { - const e = value; - const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat4": - case "mat4x4": { - const m = value; - const e = m instanceof THREE__namespace.Matrix4 ? m.elements : value; - const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; } - case "mat4x2": { - const e = value; - const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; + const outs = nodeOuts.get(dyno2) ?? { outNames: /* @__PURE__ */ new Map() }; + for (const [key, name] of outs.outNames.entries()) { + outputs2[key] = name; } - case "mat4x3": { - const e = value; - const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; + const newSteps = dyno2.compile({ inputs: inputs2, outputs: outputs2, compile }); + steps.push(newSteps); + } + const literalOutputs = []; + for (const key in outputs) { + if (blockOutputs[key] instanceof DynoLiteral) { + literalOutputs.push( + `${outputs[key]} = ${blockOutputs[key].getLiteral()};` + ); } - default: - throw new Error(`Type not implemented: ${String(type)}`); } + if (literalOutputs.length > 0) { + steps.push(literalOutputs); + } + const statements = steps.flatMap((step2, index) => { + return index === 0 ? step2 : ["", ...step2]; + }); + return { statements }; } } -function dynoConst(type, value) { - return new DynoConst(type, value); +function dynoBlock(inTypes, outTypes, construct, { update, globals } = {}) { + return new DynoBlock({ inTypes, outTypes, construct, update, globals }); } -function literalZero(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(false)`; - } - if (isAllFloatType(type)) { - return `${typeString}(0.0)`; - } - if (isIntType(type)) { - return `${typeString}(0)`; - } - if (isUintType(type)) { - return `${typeString}(0u)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -function literalOne(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(true)`; - } - if (isAllFloatType(type)) { - return `${typeString}(1.0)`; - } - if (isIntType(type)) { - return `${typeString}(1)`; - } - if (isUintType(type)) { - return `${typeString}(1u)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -function literalNegOne(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(true)`; - } - if (isAllFloatType(type)) { - return `${typeString}(-1.0)`; - } - if (isIntType(type)) { - return `${typeString}(-1)`; - } - if (isUintType(type)) { - return `${typeString}(0xFFFFFFFFu)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -const DEFAULT_INDENT = " "; -class Compilation { - constructor({ indent } = {}) { - this.globals = /* @__PURE__ */ new Set(); - this.statements = []; - this.uniforms = {}; - this.declares = /* @__PURE__ */ new Set(); - this.updaters = []; - this.sequence = 0; - this.indent = DEFAULT_INDENT; - this.indent = indent ?? DEFAULT_INDENT; - } - nextSequence() { - return this.sequence++; - } -} -class Dyno { - constructor({ +function dyno$1({ + inTypes, + outTypes, + inputs, + update, + globals, + statements, + generate +}) { + return new Dyno({ inTypes, outTypes, inputs, @@ -1070,320 +723,85 @@ class Dyno { globals, statements, generate - }) { - this.inTypes = inTypes ?? {}; - this.outTypes = outTypes ?? {}; - this.inputs = inputs ?? {}; - this.update = update; - this.globals = globals; - this.statements = statements; - this.generate = generate ?? (({ inputs: inputs2, outputs, compile }) => { - var _a2, _b2; - return { - globals: (_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs: inputs2, outputs, compile }), - statements: (_b2 = this.statements) == null ? void 0 : _b2.call(this, { inputs: inputs2, outputs, compile }) - }; - }); + }); +} +function dynoDeclare(name, type, count) { + const typeStr = typeof type === "string" ? type : type.type; + if (!typeStr) { + throw new Error(`Invalid DynoType: ${String(type)}`); } - get outputs() { - const outputs = {}; - for (const key in this.outTypes) { - outputs[key] = new DynoOutput(this, key); + return `${typeStr} ${name}${count != null ? `[${count}]` : ""}`; +} +function unindentLines(s) { + var _a2; + let seenNonEmpty = false; + const lines = s.split("\n").map((line) => { + const trimmedLine = line.trimEnd(); + if (seenNonEmpty) { + return trimmedLine; } - return outputs; + if (trimmedLine.length > 0) { + seenNonEmpty = true; + return trimmedLine; + } + return null; + }).filter((line) => line != null); + while (lines.length > 0 && lines[lines.length - 1].length === 0) { + lines.pop(); } - apply(inputs) { - Object.assign(this.inputs, inputs); - return this.outputs; + if (lines.length === 0) { + return []; } - compile({ - inputs, - outputs, - compile + const indent = (_a2 = lines[0].match(/^\s*/)) == null ? void 0 : _a2[0]; + if (!indent) { + return lines; + } + const regex = new RegExp(`^${indent}`); + return lines.map((line) => line.replace(regex, "")); +} +function unindent(s) { + return unindentLines(s).join("\n"); +} +class UnaryOp extends Dyno { + constructor({ + a, + outKey, + outTypeFunc }) { - const result = [ - `// ${this.constructor.name}(${Object.values(inputs).join(", ")}) => (${Object.values(outputs).join(", ")})` - ]; - const declares = []; - for (const key in outputs) { - const name = outputs[key]; - if (name && !compile.declares.has(name)) { - compile.declares.add(name); - declares.push(key); - } - } - const { globals, statements, uniforms } = this.generate({ - inputs, - outputs, - compile - }); - for (const global of globals ?? []) { - compile.globals.add(global); - } - for (const key in uniforms) { - compile.uniforms[key] = uniforms[key]; - } - if (this.update) { - compile.updaters.push(this.update); - } - for (const key of declares) { - const name = outputs[key]; - if (name) { - if (!compile.uniforms[name]) { - result.push(`${dynoDeclare(name, this.outTypes[key])};`); - } - } - } - if (statements == null ? void 0 : statements.length) { - result.push("{"); - result.push(...statements.map((line) => compile.indent + line)); - result.push("}"); - } - return result; + const inTypes = { a: valType(a) }; + const outType = outTypeFunc(valType(a)); + const outTypes = { [outKey]: outType }; + super({ inTypes, outTypes, inputs: { a } }); + this.outKey = outKey; + } + dynoOut() { + return new DynoOutput(this, this.outKey); } } -class DynoBlock extends Dyno { +class BinaryOp extends Dyno { constructor({ - inTypes, - outTypes, - inputs, - update, - globals, - construct + a, + b, + outKey, + outTypeFunc }) { - super({ - inTypes, - outTypes, - inputs, - update, - globals, - generate: (args) => this.generateBlock(args) - }); - this.construct = construct; + const inTypes = { a: valType(a), b: valType(b) }; + const outType = outTypeFunc(valType(a), valType(b)); + const outTypes = { [outKey]: outType }; + super({ inTypes, outTypes, inputs: { a, b } }); + this.outKey = outKey; } - generateBlock({ - inputs, - outputs, - compile - }) { - var _a2, _b2; - const blockInputs = {}; - const blockOutputs = {}; - for (const key in inputs) { - if (inputs[key] != null) { - blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]); - } - } - for (const key in outputs) { - if (outputs[key] != null) { - blockOutputs[key] = new DynoValue(this.outTypes[key]); - } - } - const options = { roots: [] }; - const returned = this.construct(blockInputs, blockOutputs, options); - for (const global of ((_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs, outputs, compile })) ?? []) { - compile.globals.add(global); - } - const ordering = []; - const nodeOuts = /* @__PURE__ */ new Map(); - function visit(node, outKey, outName) { - let outs = nodeOuts.get(node); - if (!outs) { - outs = { - sequence: compile.nextSequence(), - outNames: /* @__PURE__ */ new Map(), - newOuts: /* @__PURE__ */ new Set() - }; - nodeOuts.set(node, outs); - for (const key in node.inputs) { - let input = node.inputs[key]; - while (input) { - if (input instanceof DynoValue) { - if (input instanceof DynoOutput) { - visit(input.dyno, input.key); - } - break; - } - if (typeof input.dynoOut !== "function") { - throw new Error( - `dynoOut is not a function for ${input.constructor.name}` - ); - } - input = input.dynoOut(); - } - } - ordering.push(node); - } - if (outKey) { - if (!outName) { - outs.newOuts.add(outKey); - } - outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`); - } - } - for (const root of options.roots) { - visit(root); - } - for (const key in blockOutputs) { - let value = (returned == null ? void 0 : returned[key]) ?? blockOutputs[key]; - while (value) { - if (value instanceof DynoValue) { - if (value instanceof DynoOutput) { - visit(value.dyno, value.key, outputs[key]); - } - break; - } - value = value.dynoOut(); - } - blockOutputs[key] = value; - } - const steps = []; - for (const dyno2 of ordering) { - const inputs2 = {}; - const outputs2 = {}; - for (const key in dyno2.inputs) { - let value = dyno2.inputs[key]; - while (value) { - if (value instanceof DynoValue) { - if (value instanceof DynoLiteral) { - inputs2[key] = value.getLiteral(); - } else if (value instanceof DynoOutput) { - const source = (_b2 = nodeOuts.get(value.dyno)) == null ? void 0 : _b2.outNames.get(value.key); - if (!source) { - throw new Error( - `Source not found for ${value.dyno.constructor.name}.${value.key}` - ); - } - inputs2[key] = source; - } - break; - } - value = value.dynoOut(); - } - } - const outs = nodeOuts.get(dyno2) ?? { outNames: /* @__PURE__ */ new Map() }; - for (const [key, name] of outs.outNames.entries()) { - outputs2[key] = name; - } - const newSteps = dyno2.compile({ inputs: inputs2, outputs: outputs2, compile }); - steps.push(newSteps); - } - const literalOutputs = []; - for (const key in outputs) { - if (blockOutputs[key] instanceof DynoLiteral) { - literalOutputs.push( - `${outputs[key]} = ${blockOutputs[key].getLiteral()};` - ); - } - } - if (literalOutputs.length > 0) { - steps.push(literalOutputs); - } - const statements = steps.flatMap((step2, index) => { - return index === 0 ? step2 : ["", ...step2]; - }); - return { statements }; - } -} -function dynoBlock(inTypes, outTypes, construct, { update, globals } = {}) { - return new DynoBlock({ inTypes, outTypes, construct, update, globals }); -} -function dyno$1({ - inTypes, - outTypes, - inputs, - update, - globals, - statements, - generate -}) { - return new Dyno({ - inTypes, - outTypes, - inputs, - update, - globals, - statements, - generate - }); -} -function dynoDeclare(name, type, count) { - const typeStr = typeof type === "string" ? type : type.type; - if (!typeStr) { - throw new Error(`Invalid DynoType: ${String(type)}`); - } - return `${typeStr} ${name}${count != null ? `[${count}]` : ""}`; -} -function unindentLines(s) { - var _a2; - let seenNonEmpty = false; - const lines = s.split("\n").map((line) => { - const trimmedLine = line.trimEnd(); - if (seenNonEmpty) { - return trimmedLine; - } - if (trimmedLine.length > 0) { - seenNonEmpty = true; - return trimmedLine; - } - return null; - }).filter((line) => line != null); - while (lines.length > 0 && lines[lines.length - 1].length === 0) { - lines.pop(); - } - if (lines.length === 0) { - return []; - } - const indent = (_a2 = lines[0].match(/^\s*/)) == null ? void 0 : _a2[0]; - if (!indent) { - return lines; - } - const regex = new RegExp(`^${indent}`); - return lines.map((line) => line.replace(regex, "")); -} -function unindent(s) { - return unindentLines(s).join("\n"); -} -class UnaryOp extends Dyno { - constructor({ - a, - outKey, - outTypeFunc - }) { - const inTypes = { a: valType(a) }; - const outType = outTypeFunc(valType(a)); - const outTypes = { [outKey]: outType }; - super({ inTypes, outTypes, inputs: { a } }); - this.outKey = outKey; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class BinaryOp extends Dyno { - constructor({ - a, - b, - outKey, - outTypeFunc - }) { - const inTypes = { a: valType(a), b: valType(b) }; - const outType = outTypeFunc(valType(a), valType(b)); - const outTypes = { [outKey]: outType }; - super({ inTypes, outTypes, inputs: { a, b } }); - this.outKey = outKey; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class TrinaryOp extends Dyno { - constructor({ - a, - b, - c, - outKey, - outTypeFunc + dynoOut() { + return new DynoOutput(this, this.outKey); + } +} +class TrinaryOp extends Dyno { + constructor({ + a, + b, + c, + outKey, + outTypeFunc }) { const inTypes = { a: valType(a), b: valType(b), c: valType(c) }; const outType = outTypeFunc(valType(a), valType(b), valType(c)); @@ -1395,6603 +813,5920 @@ class TrinaryOp extends Dyno { return new DynoOutput(this, this.outKey); } } -const threeRevision = Number.parseInt(THREE__namespace.REVISION); -const threeMrtArray = threeRevision >= 179; -const f32buffer = new Float32Array(1); -const u32buffer = new Uint32Array(f32buffer.buffer); -const supportsFloat16Array = "Float16Array" in globalThis; -const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null; -const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer); -function normalize$1(vec) { - const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0)); - return vec.map((v) => v / norm); -} -function floatBitsToUint$1(f) { - f32buffer[0] = f; - return u32buffer[0]; -} -function uintBitsToFloat$1(u) { - u32buffer[0] = u; - return f32buffer[0]; -} -const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS; -const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS; -function toHalfNative(f) { - f16buffer[0] = f; - return u16buffer[0]; -} -function toHalfJS(f) { - f32buffer[0] = f; - const bits2 = u32buffer[0]; - const sign2 = bits2 >> 31 & 1; - const exp3 = bits2 >> 23 & 255; - const frac = bits2 & 8388607; - const halfSign = sign2 << 15; - if (exp3 === 255) { - if (frac !== 0) { - return halfSign | 32767; - } - return halfSign | 31744; - } - const newExp = exp3 - 127 + 15; - if (newExp >= 31) { - return halfSign | 31744; - } - if (newExp <= 0) { - if (newExp < -10) { - return halfSign; - } - const subFrac = (frac | 8388608) >> 1 - newExp + 13; - return halfSign | subFrac; - } - const halfFrac = frac >> 13; - return halfSign | newExp << 10 | halfFrac; -} -function fromHalfNative(u) { - u16buffer[0] = u; - return f16buffer[0]; -} -function fromHalfJS(h) { - const sign2 = h >> 15 & 1; - const exp3 = h >> 10 & 31; - const frac = h & 1023; - let f32bits; - if (exp3 === 0) { - if (frac === 0) { - f32bits = sign2 << 31; - } else { - let mant = frac; - let e = -14; - while ((mant & 1024) === 0) { - mant <<= 1; - e--; - } - mant &= 1023; - const newExp = e + 127; - const newFrac = mant << 13; - f32bits = sign2 << 31 | newExp << 23 | newFrac; - } - } else if (exp3 === 31) { - if (frac === 0) { - f32bits = sign2 << 31 | 2139095040; - } else { - f32bits = sign2 << 31 | 2143289344; - } - } else { - const newExp = exp3 - 15 + 127; - const newFrac = frac << 13; - f32bits = sign2 << 31 | newExp << 23 | newFrac; +const Gsplat = { type: "Gsplat" }; +const CovSplat = { type: "CovSplat" }; +const TPackedSplats = { type: "PackedSplats" }; +const TExtSplats = { type: "ExtSplats" }; +const TCovSplats = { type: "CovSplats" }; +const numPackedSplats = (packedSplats) => new NumPackedSplats({ packedSplats }); +const readPackedSplat = (packedSplats, index) => new ReadPackedSplat({ packedSplats, index }); +const readPackedSplatRange = (packedSplats, index, base, count) => new ReadPackedSplatRange({ packedSplats, index, base, count }); +const numExtSplats = (extSplats) => new NumExtSplats({ extSplats }); +const readExtSplat = (extSplats, index) => new ReadExtSplat({ extSplats, index }); +const numCovSplats = (covsplats) => new NumCovSplats({ covsplats }); +const readCovSplat = (covSplats, index) => new ReadCovSplat({ covSplats, index }); +const gsplatToCovSplat = (gsplat) => new GsplatToCovSplat({ gsplat }); +const splitGsplat = (gsplat) => new SplitGsplat({ gsplat }); +const combineGsplat = ({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b +}) => { + return new CombineGsplat({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }); +}; +const gsplatNormal = (gsplat) => new GsplatNormal({ gsplat }); +const transformGsplat = (gsplat, { + scale, + rotate, + translate, + recolor +}) => { + return new TransformGsplat({ gsplat, scale, rotate, translate, recolor }); +}; +const splatTexCoord = (index) => new SplatTexCoord({ index }); +const pagedSplatTexCoord = (index) => new PagedSplatTexCoord({ index }); +const defineGsplat = unindent(` + struct Gsplat { + vec3 center; + uint flags; + vec3 scales; + int index; + vec4 quaternion; + vec4 rgba; + }; + const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; + + bool isGsplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; } - u32buffer[0] = f32bits; - return f32buffer[0]; -} -function floatToUint8(v) { - return Math.max(0, Math.min(255, Math.round(v * 255))); -} -function floatToSint8(v) { - return Math.max(-127, Math.min(127, Math.round(v * 127))); -} -function Uint8ToFloat(v) { - return v / 255; -} -function Sint8ToFloat(v) { - return v / 127; -} -class DataCache { - // Create a DataCache with a given function that fetches data not in the cache. +`); +const defineCovSplat = unindent(` + struct CovSplat { + vec3 center; + uint flags; + vec4 rgba; + vec3 xxyyzz; + int index; + vec3 xyxzyz; + }; + + bool isCovSplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; + } +`); +const definePackedSplats = unindent(` + struct PackedSplats { + usampler2DArray textureArray; + int numSplats; + vec4 rgbMinMaxLnScaleMinMax; + bool lodOpacity; + }; +`); +class NumPackedSplats extends UnaryOp { constructor({ - asyncFetch, - dispose, - maxItems = 5 + packedSplats }) { - this.asyncFetch = asyncFetch; - this.dispose = dispose; - this.maxItems = maxItems; - this.items = []; - this.pending = /* @__PURE__ */ new Map(); - } - has(key) { - return this.items.some((item) => item.key === key); + super({ a: packedSplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; } - getImmediate(key) { - const index = this.items.findIndex((item) => item.key === key); - if (index >= 0) { - const item = this.items.splice(index, 1)[0]; - this.items.push(item); - return item.data; +} +const defineReadPackedArray = unindent(` + bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { + if ((index >= 0) && (index < numSplats)) { + uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); + unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); + return true; + } else { + return false; } - return void 0; } - // Fetch data for the key, returning cached data if available. - async getFetch(key) { - const immediate = this.getImmediate(key); - if (immediate !== void 0) { - return immediate; - } - let pending = this.pending.get(key); - if (pending) { - return pending; - } - pending = this.asyncFetch(key).then((data) => { - this.pending.delete(key); - this.items.push({ key, data }); - while (this.items.length > this.maxItems) { - const removed = this.items.shift(); - if (removed && this.dispose) { - this.dispose(removed.data); +`); +class ReadPackedSplat extends Dyno { + constructor({ + packedSplats, + index + }) { + super({ + inTypes: { packedSplats: TPackedSplats, index: "int" }, + outTypes: { gsplat: Gsplat }, + inputs: { packedSplats, index }, + globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return []; + } + const { packedSplats: packedSplats2, index: index2 } = inputs; + let statements; + if (packedSplats2 && index2) { + statements = unindentLines(` + ${gsplat}.flags = 0u; + if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { + if (${packedSplats2}.lodOpacity) { + ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; + } + bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); + ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `); + } else { + statements = [`${gsplat}.flags = 0u;`]; } + statements.push(`${gsplat}.index = ${index2 ?? "0"};`); + return statements; } - return data; }); - this.pending.set(key, pending); - return pending; } -} -function mapObject(obj, fn) { - const entries = Object.entries(obj).map(([key, value]) => [ - key, - fn(value, key) - ]); - return Object.fromEntries(entries); -} -function mapFilterObject(obj, fn) { - const entries = Object.entries(obj).map(([key, value]) => [key, fn(value, key)]).filter(([_, value]) => value !== void 0); - return Object.fromEntries(entries); -} -function getTransferable(ctx) { - const buffers = []; - const seen = /* @__PURE__ */ new Set(); - function traverse(obj) { - if (obj && typeof obj === "object" && !seen.has(obj)) { - seen.add(obj); - if (obj instanceof ArrayBuffer) { - buffers.push(obj); - } else if (ArrayBuffer.isView(obj)) { - buffers.push(obj.buffer); - } else if (Array.isArray(obj)) { - obj.forEach(traverse); - } else { - Object.values(obj).forEach(traverse); - } - } + dynoOut() { + return new DynoOutput(this, "gsplat"); } - traverse(ctx); - return buffers; -} -function newArray(n, initFunction) { - return new Array(n).fill(null).map((_, i) => initFunction(i)); } -class FreeList { +class ReadPackedSplatRange extends Dyno { constructor({ - // Allocate a new item with the given args - allocate, - // Dispose of an item (optional, if GC is enough) - dispose, - // Check if an existing item in the list is valid for the given args, - // allowing you to store heterogeneous items in the list. - valid + packedSplats, + index, + base, + count }) { - this.items = []; - this.allocate = allocate; - this.dispose = dispose; - this.valid = valid; - } - // Allocate a new item from the free list, first checking if a existing item - // on the freelist is valid for the given args. - alloc(args) { - while (true) { - const item = this.items.pop(); - if (!item) { - break; - } - if (this.valid(item, args)) { - return item; - } - if (this.dispose) { - this.dispose(item); + super({ + inTypes: { + packedSplats: TPackedSplats, + index: "int", + base: "int", + count: "int" + }, + outTypes: { gsplat: Gsplat }, + inputs: { packedSplats, index, base, count }, + globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return []; + } + const { packedSplats: packedSplats2, index: index2, base: base2, count: count2 } = inputs; + let statements; + if (packedSplats2 && index2 && base2 && count2) { + statements = unindentLines(` + ${gsplat}.flags = 0u; + if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { + if (${packedSplats2}.lodOpacity) { + ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; + } + bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); + ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `); + } else { + statements = [`${gsplat}.flags = 0u;`]; + } + statements.push(`${gsplat}.index = ${index2 ?? "0"};`); + return statements; } - } - return this.allocate(args); + }); } - free(item) { - this.items.push(item); + dynoOut() { + return new DynoOutput(this, "gsplat"); } - disposeAll() { - let item; - item = this.items.pop(); - while (item) { - if (this.dispose) { - this.dispose(item); - } - item = this.items.pop(); - } +} +const defineExtSplats = unindent(` + struct ExtSplats { + usampler2DArray textureArray1; + usampler2DArray textureArray2; + int numSplats; + }; +`); +class NumExtSplats extends UnaryOp { + constructor({ extSplats }) { + super({ a: extSplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; } } -function encodeExtSplat(extArrays, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) { - const i4 = index * 4; - const [extA, extB] = extArrays; - extA[i4] = floatBitsToUint$1(x); - extA[i4 + 1] = floatBitsToUint$1(y); - extA[i4 + 2] = floatBitsToUint$1(z); - extA[i4 + 3] = toHalf(opacity); - extB[i4] = toHalf(r) | toHalf(g) << 16; - extB[i4 + 1] = toHalf(b) | toHalf(Math.log(scaleX)) << 16; - extB[i4 + 2] = toHalf(Math.log(scaleY)) | toHalf(Math.log(scaleZ)) << 16; - extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW); +const defineReadExtArrays = unindent(` + void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { + gsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); + gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; + } + } +`); +class ReadExtSplat extends Dyno { + constructor({ + extSplats, + index + }) { + super({ + inTypes: { extSplats: TExtSplats, index: "int" }, + outTypes: { gsplat: Gsplat }, + inputs: { extSplats, index }, + globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return [`${gsplat}.flags = 0u;`]; + } + const { extSplats: extSplats2, index: index2 } = inputs; + if (extSplats2 && index2) { + return unindentLines(` + readExtArrays(${extSplats2}.textureArray1, ${extSplats2}.textureArray2, ${extSplats2}.numSplats, ${index2}, ${gsplat}); + `); + } + return [`${gsplat}.flags = 0u;`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "gsplat"); + } } -function decodeExtSplat(extArrays, index) { - const result = packedFields; - const i4 = index * 4; - const [extA, extB] = extArrays; - result.center.x = uintBitsToFloat$1(extA[i4]); - result.center.y = uintBitsToFloat$1(extA[i4 + 1]); - result.center.z = uintBitsToFloat$1(extA[i4 + 2]); - result.opacity = fromHalf(extA[i4 + 3] & 65535); - result.color.r = fromHalf(extB[i4] & 65535); - result.color.g = fromHalf(extB[i4] >>> 16); - result.color.b = fromHalf(extB[i4 + 1] & 65535); - result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16)); - result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 65535)); - result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16)); - decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion); - return result; +class NumCovSplats extends UnaryOp { + constructor({ covsplats }) { + super({ a: covsplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; + } } -function setPackedSplat(packedSplats, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity); - const uQuat = encodeQuatOctXy88R8( - tempQuaternion.set(quatX, quatY, quatZ, quatW) - ); - const uQuatX = uQuat & 255; - const uQuatY = uQuat >>> 8 & 255; - const uQuatZ = uQuat >>> 16 & 255; - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); - const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uCenterX = toHalf(x); - const uCenterY = toHalf(y); - const uCenterZ = toHalf(z); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; - packedSplats[i4 + 1] = uCenterX | uCenterY << 16; - packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24; - packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24; +const defineReadCovArrays = unindent(` + void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { + covsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); + covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; + } + } +`); +class ReadCovSplat extends Dyno { + constructor({ + covSplats, + index + }) { + super({ + inTypes: { covSplats: TCovSplats, index: "int" }, + outTypes: { covsplat: CovSplat }, + inputs: { covSplats, index }, + globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays], + statements: ({ inputs, outputs }) => { + const { covsplat } = outputs; + if (!covsplat) { + return [`${covsplat}.flags = 0u;`]; + } + const { covSplats: covSplats2, index: index2 } = inputs; + if (covSplats2 && index2) { + return unindentLines(` + readCovArrays(${covSplats2}.textureArray, ${covSplats2}.numSplats, ${index2}, ${covsplat}); + `); + } + return [`${covsplat}.flags = 0u;`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "covsplat"); + } } -function setPackedSplatCenter(packedSplats, index, x, y, z) { - const uCenterX = toHalf(x); - const uCenterY = toHalf(y); - const uCenterZ = toHalf(z); - const i4 = index * 4; - packedSplats[i4 + 1] = uCenterX | uCenterY << 16; - packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760; -} -function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) { - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); - const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const i4 = index * 4; - packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080; -} -const tempQuaternion = new THREE__namespace.Quaternion(); -function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) { - const uQuat = encodeQuatOctXy88R8( - tempQuaternion.set(quatX, quatY, quatZ, quatW) - ); - const uQuatX = uQuat & 255; - const uQuatY = uQuat >>> 8 & 255; - const uQuatZ = uQuat >>> 16 & 255; - const i4 = index * 4; - packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24; - packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24; -} -function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; -} -function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080; -} -function setPackedSplatOpacity(packedSplats, index, opacity) { - const uA = floatToUint8(opacity); - const i4 = index * 4; - packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24; -} -const packedCenter = new THREE__namespace.Vector3(); -const packedScales = new THREE__namespace.Vector3(); -const packedQuaternion = new THREE__namespace.Quaternion(); -const packedColor = new THREE__namespace.Color(); -const packedFields = { - center: packedCenter, - scales: packedScales, - quaternion: packedQuaternion, - color: packedColor, - opacity: 0 -}; -function unpackSplat(packedSplats, index, encoding) { - const result = packedFields; - const i4 = index * 4; - const word0 = packedSplats[i4]; - const word1 = packedSplats[i4 + 1]; - const word2 = packedSplats[i4 + 2]; - const word3 = packedSplats[i4 + 3]; - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - result.color.set( - rgbMin + (word0 & 255) / 255 * rgbRange, - rgbMin + (word0 >>> 8 & 255) / 255 * rgbRange, - rgbMin + (word0 >>> 16 & 255) / 255 * rgbRange - ); - result.opacity = (word0 >>> 24 & 255) / 255; - if (encoding == null ? void 0 : encoding.lodOpacity) { - result.opacity = 2 * result.opacity; - } - result.center.set( - fromHalf(word1 & 65535), - fromHalf(word1 >>> 16 & 65535), - fromHalf(word2 & 65535) - ); - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = (lnScaleMax - lnScaleMin) / 254; - const uScalesX = word3 & 255; - result.scales.x = uScalesX === 0 ? 0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale); - const uScalesY = word3 >>> 8 & 255; - result.scales.y = uScalesY === 0 ? 0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale); - const uScalesZ = word3 >>> 16 & 255; - result.scales.z = uScalesZ === 0 ? 0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale); - const uQuat = word2 >>> 16 & 65535 | word3 >>> 8 & 16711680; - decodeQuatOctXy88R8(uQuat, result.quaternion); - return result; -} -function getTextureSize(numSplats) { - const width = SPLAT_TEX_WIDTH; - const height = Math.max( - SPLAT_TEX_MIN_HEIGHT, - Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) - ); - const depth = Math.ceil(numSplats / (width * height)); - const maxSplats = width * height * depth; - return { width, height, depth, maxSplats }; -} -function computeMaxSplats(numSplats) { - const width = SPLAT_TEX_WIDTH; - const height = Math.max( - SPLAT_TEX_MIN_HEIGHT, - Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) - ); - const depth = Math.ceil(numSplats / (width * height)); - return width * height * depth; -} -function isMobile() { - if (navigator.platform.toLowerCase().startsWith("win")) { - return false; +class GsplatToCovSplat extends Dyno { + constructor({ gsplat }) { + super({ + inTypes: { gsplat: Gsplat }, + outTypes: { covsplat: CovSplat }, + inputs: { gsplat }, + globals: () => [defineGsplat, defineCovSplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2 } = inputs; + const { covsplat } = outputs; + if (!gsplat2) { + return [`${covsplat}.flags = 0u;`]; + } + return unindentLines(` + ${covsplat}.flags = 0u; + if (isGsplatActive(${gsplat2}.flags)) { + ${covsplat}.flags = ${gsplat2}.flags; + ${covsplat}.index = ${gsplat2}.index; + ${covsplat}.rgba = ${gsplat2}.rgba; + ${covsplat}.center = ${gsplat2}.center; + mat3 m = scaleQuaternionToMatrix(${gsplat2}.scales, ${gsplat2}.quaternion); + m = m * transpose(m); + ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); + ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); + } + `); + } + }); } - if (navigator.maxTouchPoints > 0) { - return true; + dynoOut() { + return new DynoOutput(this, "covsplat"); } - return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( - navigator.userAgent - ); } -function isAndroid() { - return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); -} -function isOculus() { - return !!navigator.xr && /Oculus/.test(navigator.userAgent); -} -function isQuest2() { - return isOculus() && /Quest 2/.test(navigator.userAgent); -} -function isIos() { - return /iPhone|iPad/.test(navigator.userAgent); -} -function isVisionPro() { - return !!navigator.xr && isIos() && /Safari/.test(navigator.userAgent) && isMobile(); +class SplitGsplat extends Dyno { + constructor({ gsplat }) { + super({ + inTypes: { gsplat: Gsplat }, + outTypes: { + flags: "uint", + active: "bool", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + inputs: { gsplat }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2 } = inputs; + const { + flags, + active, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + } = outputs; + return [ + !flags ? null : `${flags} = ${gsplat2 ? `${gsplat2}.flags` : "0u"};`, + !active ? null : `${active} = isGsplatActive(${gsplat2 ? `${gsplat2}.flags` : "0u"});`, + !index ? null : `${index} = ${gsplat2 ? `${gsplat2}.index` : "0"};`, + !center ? null : `${center} = ${gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, + !scales ? null : `${scales} = ${gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)"};`, + !quaternion ? null : `${quaternion} = ${gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};`, + !rgba ? null : `${rgba} = ${gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, + !rgb ? null : `${rgb} = ${gsplat2 ? `${gsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, + !opacity ? null : `${opacity} = ${gsplat2 ? `${gsplat2}.rgba.a` : "0.0"};`, + !x ? null : `${x} = ${gsplat2 ? `${gsplat2}.center.x` : "0.0"};`, + !y ? null : `${y} = ${gsplat2 ? `${gsplat2}.center.y` : "0.0"};`, + !z ? null : `${z} = ${gsplat2 ? `${gsplat2}.center.z` : "0.0"};`, + !r ? null : `${r} = ${gsplat2 ? `${gsplat2}.rgba.r` : "0.0"};`, + !g ? null : `${g} = ${gsplat2 ? `${gsplat2}.rgba.g` : "0.0"};`, + !b ? null : `${b} = ${gsplat2 ? `${gsplat2}.rgba.b` : "0.0"};` + ].filter(Boolean); + } + }); + } } -function flipPixels(pixels, width, height) { - const tempLine = new Uint8Array(width * 4); - for (let y = 0; y < height / 2; y++) { - const topOffset = y * width * 4; - const bottomOffset = (height - 1 - y) * width * 4; - tempLine.set(pixels.subarray(topOffset, topOffset + width * 4)); - pixels.set( - pixels.subarray(bottomOffset, bottomOffset + width * 4), - topOffset - ); - pixels.set(tempLine, bottomOffset); +class CombineGsplat extends Dyno { + constructor({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }) { + super({ + inTypes: { + gsplat: Gsplat, + flags: "uint", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: outGsplat } = outputs; + if (!outGsplat) { + return []; + } + const { + gsplat: gsplat2, + flags: flags2, + index: index2, + center: center2, + scales: scales2, + quaternion: quaternion2, + rgba: rgba2, + rgb: rgb2, + opacity: opacity2, + x: x2, + y: y2, + z: z2, + r: r2, + g: g2, + b: b22 + } = inputs; + return [ + `${outGsplat}.flags = ${flags2 ?? (gsplat2 ? `${gsplat2}.flags` : "0u")};`, + `${outGsplat}.index = ${index2 ?? (gsplat2 ? `${gsplat2}.index` : "0")};`, + `${outGsplat}.center = ${center2 ?? (gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${outGsplat}.scales = ${scales2 ?? (gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)")};`, + `${outGsplat}.quaternion = ${quaternion2 ?? (gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, + `${outGsplat}.rgba = ${rgba2 ?? (gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + !rgb2 ? null : `${outGsplat}.rgba.rgb = ${rgb2};`, + !opacity2 ? null : `${outGsplat}.rgba.a = ${opacity2};`, + !x2 ? null : `${outGsplat}.center.x = ${x2};`, + !y2 ? null : `${outGsplat}.center.y = ${y2};`, + !z2 ? null : `${outGsplat}.center.z = ${z2};`, + !r2 ? null : `${outGsplat}.rgba.r = ${r2};`, + !g2 ? null : `${outGsplat}.rgba.g = ${g2};`, + !b22 ? null : `${outGsplat}.rgba.b = ${b22};` + ].filter(Boolean); + } + }); } - return pixels; -} -function pixelsToPngUrl(pixels, width, height) { - const canvas = document.createElement("canvas"); - canvas.width = width; - canvas.height = height; - const ctx = canvas.getContext("2d"); - if (!ctx) { - throw new Error("Can't get 2d context"); + dynoOut() { + return new DynoOutput(this, "gsplat"); } - const imageData = ctx.createImageData(width, height); - imageData.data.set(pixels); - ctx.putImageData(imageData, 0, 0); - return canvas.toDataURL("image/png"); -} -function cloneClock(clock) { - const newClock = new THREE__namespace.Clock(clock.autoStart); - newClock.startTime = clock.startTime; - newClock.oldTime = clock.oldTime; - newClock.elapsedTime = clock.elapsedTime; - newClock.running = clock.running; - return newClock; -} -function omitUndefined(obj) { - return Object.fromEntries( - Object.entries(obj).filter(([_, value]) => value !== void 0) - ); } -const IDENT_VERTEX_SHADER = unindent(` - precision highp float; - - in vec3 position; - - void main() { - gl_Position = vec4(position.xy, 0.0, 1.0); +const defineGsplatNormal = unindent(` + vec3 gsplatNormal(vec3 scales, vec4 quaternion) { + float minScale = min(scales.x, min(scales.y, scales.z)); + vec3 normal; + if (scales.z == minScale) { + normal = vec3(0.0, 0.0, 1.0); + } else if (scales.y == minScale) { + normal = vec3(0.0, 1.0, 0.0); + } else { + normal = vec3(1.0, 0.0, 0.0); + } + return quatVec(quaternion, normal); } `); -function averagePositions(positions) { - const sum = new THREE__namespace.Vector3(); - for (const position of positions) { - sum.add(position); +class GsplatNormal extends UnaryOp { + constructor({ gsplat }) { + super({ a: gsplat, outKey: "normal", outTypeFunc: () => "vec3" }); + this.globals = () => [defineGsplat, defineGsplatNormal]; + this.statements = ({ inputs, outputs }) => [ + `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);` + ]; } - return sum.divideScalar(positions.length); } -function averageQuaternions(quaternions) { - if (quaternions.length === 0) { - return new THREE__namespace.Quaternion(); +class TransformGsplat extends Dyno { + constructor({ + gsplat, + scale, + rotate, + translate, + recolor + }) { + super({ + inTypes: { + gsplat: Gsplat, + scale: "float", + rotate: "vec4", + translate: "vec3", + recolor: "vec4" + }, + outTypes: { gsplat: Gsplat }, + inputs: { gsplat, scale, rotate, translate, recolor }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs, compile }) => { + const { gsplat: gsplat2 } = outputs; + if (!gsplat2 || !inputs.gsplat) { + return []; + } + const { scale: scale2, rotate: rotate2, translate: translate2, recolor: recolor2 } = inputs; + const indent = compile.indent; + const statements = [ + `${gsplat2} = ${inputs.gsplat};`, + `if (isGsplatActive(${gsplat2}.flags)) {`, + scale2 ? `${indent}${gsplat2}.center *= ${scale2};` : null, + rotate2 ? `${indent}${gsplat2}.center = quatVec(${rotate2}, ${gsplat2}.center);` : null, + translate2 ? `${indent}${gsplat2}.center += ${translate2};` : null, + scale2 ? `${indent}${gsplat2}.scales *= ${scale2};` : null, + rotate2 ? `${indent}${gsplat2}.quaternion = quatQuat(${rotate2}, ${gsplat2}.quaternion);` : null, + recolor2 ? `${indent}${gsplat2}.rgba *= ${recolor2};` : null, + "}" + ].filter(Boolean); + return statements; + } + }); } - const sum = quaternions[0].clone(); - for (let i = 1; i < quaternions.length; i++) { - if (quaternions[i].dot(quaternions[0]) < 0) { - sum.x -= quaternions[i].x; - sum.y -= quaternions[i].y; - sum.z -= quaternions[i].z; - sum.w -= quaternions[i].w; - } else { - sum.x += quaternions[i].x; - sum.y += quaternions[i].y; - sum.z += quaternions[i].z; - sum.w += quaternions[i].w; - } + dynoOut() { + return new DynoOutput(this, "gsplat"); } - return sum.normalize(); -} -function coinciDist(matrix1, matrix2) { - const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1); - const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2); - const direction1 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix1).sub(origin1).normalize(); - const direction2 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix2).sub(origin2).normalize(); - const distance2 = origin1.distanceTo(origin2); - const coincidence = direction1.dot(direction2); - return { distance: distance2, coincidence }; -} -function withinDist({ - matrix1, - matrix2, - maxDistance -}) { - const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1); - const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2); - return origin1.distanceTo(origin2) <= maxDistance; -} -function withinCoinciDist({ - matrix1, - matrix2, - maxDistance, - minCoincidence -}) { - const { distance: distance2, coincidence } = coinciDist(matrix1, matrix2); - return distance2 <= maxDistance && (minCoincidence == null || coincidence >= minCoincidence); -} -function coorientDist(matrix1, matrix2) { - const [origin1, rotate1] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()]; - const [origin2, rotate2] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()]; - matrix1.decompose(origin1, rotate1, new THREE__namespace.Vector3()); - matrix2.decompose(origin2, rotate2, new THREE__namespace.Vector3()); - const distance2 = origin1.distanceTo(origin2); - const coorient = Math.abs(rotate1.dot(rotate2)); - return { distance: distance2, coorient }; } -function withinCoorientDist({ - matrix1, - matrix2, - maxDistance, - minCoorient -}) { - const { distance: distance2, coorient } = coorientDist(matrix1, matrix2); - return distance2 <= maxDistance && (minCoorient == null || coorient >= minCoorient); -} -function epsilonSign(value, epsilon = 1e-3) { - if (Math.abs(value) < epsilon) { - return 0; +const splitCovSplat = (covsplat) => new SplitCovSplat({ covsplat }); +const combineCovSplat = ({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b +}) => { + return new CombineCovSplat({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }); +}; +class SplitCovSplat extends Dyno { + constructor({ covsplat }) { + super({ + inTypes: { covsplat: CovSplat }, + outTypes: { + flags: "uint", + active: "bool", + index: "int", + center: "vec3", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + inputs: { covsplat }, + globals: () => [defineCovSplat], + statements: ({ inputs, outputs }) => { + const { covsplat: covsplat2 } = inputs; + const { + flags, + active, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + } = outputs; + return [ + !flags ? null : `${flags} = ${covsplat2 ? `${covsplat2}.flags` : "0u"};`, + !active ? null : `${active} = isCovSplatActive(${covsplat2 ? `${covsplat2}.flags` : "0u"});`, + !index ? null : `${index} = ${covsplat2 ? `${covsplat2}.index` : "0"};`, + !center ? null : `${center} = ${covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, + !rgba ? null : `${rgba} = ${covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, + !rgb ? null : `${rgb} = ${covsplat2 ? `${covsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, + !opacity ? null : `${opacity} = ${covsplat2 ? `${covsplat2}.rgba.a` : "0.0"};`, + !x ? null : `${x} = ${covsplat2 ? `${covsplat2}.center.x` : "0.0"};`, + !y ? null : `${y} = ${covsplat2 ? `${covsplat2}.center.y` : "0.0"};`, + !z ? null : `${z} = ${covsplat2 ? `${covsplat2}.center.z` : "0.0"};`, + !r ? null : `${r} = ${covsplat2 ? `${covsplat2}.rgba.r` : "0.0"};`, + !g ? null : `${g} = ${covsplat2 ? `${covsplat2}.rgba.g` : "0.0"};`, + !b ? null : `${b} = ${covsplat2 ? `${covsplat2}.rgba.b` : "0.0"};` + ].filter(Boolean); + } + }); } - return Math.sign(value); -} -function encodeQuatXyz888(q) { - const negQuat = q.w < 0; - const iQuatX = floatToSint8(negQuat ? -q.x : q.x); - const iQuatY = floatToSint8(negQuat ? -q.y : q.y); - const iQuatZ = floatToSint8(negQuat ? -q.z : q.z); - const uQuatX = iQuatX & 255; - const uQuatY = iQuatY & 255; - const uQuatZ = iQuatZ & 255; - return uQuatX | uQuatY << 8 | uQuatZ << 16; } -function decodeQuatXyz888(encoded, out) { - const iQuatX = encoded << 24 >> 24; - const iQuatY = encoded << 16 >> 24; - const iQuatZ = encoded << 8 >> 24; - out.set(iQuatX / 127, iQuatY / 127, iQuatZ / 127, 0); - const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z; - out.w = Math.sqrt(Math.max(0, 1 - dotSelf)); - return out; +class CombineCovSplat extends Dyno { + constructor({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }) { + super({ + inTypes: { + covsplat: CovSplat, + flags: "uint", + index: "int", + center: "vec3", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + outTypes: { covsplat: CovSplat }, + inputs: { + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }, + globals: () => [defineCovSplat], + statements: ({ inputs, outputs }) => { + const { covsplat: outCovSplat } = outputs; + if (!outCovSplat) { + return []; + } + const { + covsplat: covsplat2, + flags: flags2, + index: index2, + center: center2, + rgba: rgba2, + rgb: rgb2, + opacity: opacity2, + x: x2, + y: y2, + z: z2, + r: r2, + g: g2, + b: b22 + } = inputs; + return [ + `${outCovSplat}.flags = ${flags2 ?? (covsplat2 ? `${covsplat2}.flags` : "0u")};`, + `${outCovSplat}.index = ${index2 ?? (covsplat2 ? `${covsplat2}.index` : "0")};`, + `${outCovSplat}.center = ${center2 ?? (covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${outCovSplat}.rgba = ${rgba2 ?? (covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + !rgb2 ? null : `${outCovSplat}.rgba.rgb = ${rgb2};`, + !opacity2 ? null : `${outCovSplat}.rgba.a = ${opacity2};`, + !x2 ? null : `${outCovSplat}.center.x = ${x2};`, + !y2 ? null : `${outCovSplat}.center.y = ${y2};`, + !z2 ? null : `${outCovSplat}.center.z = ${z2};`, + !r2 ? null : `${outCovSplat}.rgba.r = ${r2};`, + !g2 ? null : `${outCovSplat}.rgba.g = ${g2};`, + !b22 ? null : `${outCovSplat}.rgba.b = ${b22};`, + `${outCovSplat}.xxyyzz = ${covsplat2 ? `${covsplat2}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, + `${outCovSplat}.xyxzyz = ${covsplat2 ? `${covsplat2}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` + ].filter(Boolean); + } + }); + } + dynoOut() { + return new DynoOutput(this, "covsplat"); + } } -const tempNormalizedQuaternion = new THREE__namespace.Quaternion(); -const tempAxis = new THREE__namespace.Vector3(); -function encodeQuatOctXy88R8(q) { - const qnorm = tempNormalizedQuaternion.copy(q).normalize(); - if (qnorm.w < 0) { - qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w); +class SplatTexCoord extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => { + const { index: index2 } = inputs; + const { coord } = outputs; + if (!index2 || !coord) { + return []; + } + return [`${coord} = splatTexCoord(${index2});`]; + } + }); } - const theta = 2 * Math.acos(qnorm.w); - const xyz_norm = Math.sqrt( - qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z - ); - const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm); - const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z); - let p_x = axis.x / sum; - let p_y = axis.y / sum; - if (axis.z < 0) { - const tmp = p_x; - p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); - p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + dynoOut() { + return new DynoOutput(this, "coord"); } - const u_f = p_x * 0.5 + 0.5; - const v_f = p_y * 0.5 + 0.5; - const quantU = Math.round(u_f * 255); - const quantV = Math.round(v_f * 255); - const angleInt = Math.round(theta * (255 / Math.PI)); - return angleInt << 16 | quantV << 8 | quantU; } -function decodeQuatOctXy88R8(encoded, out) { - const quantU = encoded & 255; - const quantV = encoded >>> 8 & 255; - const angleInt = encoded >>> 16 & 255; - const u_f = quantU / 255; - const v_f = quantV / 255; - let f_x = (u_f - 0.5) * 2; - let f_y = (v_f - 0.5) * 2; - const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); - const t = Math.max(-f_z, 0); - f_x += f_x >= 0 ? -t : t; - f_y += f_y >= 0 ? -t : t; - const axis = tempAxis.set(f_x, f_y, f_z).normalize(); - const theta = angleInt / 255 * Math.PI; - const halfTheta = theta * 0.5; - const s = Math.sin(halfTheta); - const w = Math.cos(halfTheta); - out.set(axis.x * s, axis.y * s, axis.z * s, w); - return out; -} -function encodeQuatEulerXyz888(q) { - const qNorm = q.clone().normalize(); - const sinr_cosp = 2 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z); - const cosr_cosp = 1 - 2 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y); - const roll = Math.atan2(sinr_cosp, cosr_cosp); - const sinp = 2 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x); - const pitch = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp); - const siny_cosp = 2 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y); - const cosy_cosp = 1 - 2 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z); - const yaw = Math.atan2(siny_cosp, cosy_cosp); - const normRoll = (roll + Math.PI) / (2 * Math.PI); - const normPitch = (pitch + Math.PI) / (2 * Math.PI); - const normYaw = (yaw + Math.PI) / (2 * Math.PI); - const rollQ = Math.round(normRoll * 255); - const pitchQ = Math.round(normPitch * 255); - const yawQ = Math.round(normYaw * 255); - return yawQ << 16 | pitchQ << 8 | rollQ; -} -function decodeQuatEulerXyz888(encoded, out) { - const rollQ = encoded & 255; - const pitchQ = encoded >>> 8 & 255; - const yawQ = encoded >>> 16 & 255; - const normRoll = rollQ / 255; - const normPitch = pitchQ / 255; - const normYaw = yawQ / 255; - const roll = normRoll * (2 * Math.PI) - Math.PI; - const pitch = normPitch * (2 * Math.PI) - Math.PI; - const yaw = normYaw * (2 * Math.PI) - Math.PI; - const cr = Math.cos(roll * 0.5); - const sr = Math.sin(roll * 0.5); - const cp = Math.cos(pitch * 0.5); - const sp = Math.sin(pitch * 0.5); - const cy = Math.cos(yaw * 0.5); - const sy = Math.sin(yaw * 0.5); - out.w = cr * cp * cy + sr * sp * sy; - out.x = sr * cp * cy - cr * sp * sy; - out.y = cr * sp * cy + sr * cp * sy; - out.z = cr * cp * sy - sr * sp * cy; - out.normalize(); - return out; +class PagedSplatTexCoord extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => { + const { index: index2 } = inputs; + const { coord } = outputs; + if (!index2 || !coord) { + return []; + } + return [`${coord} = pagedSplatTexCoord(${index2});`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "coord"); + } } -function encodeQuatOctXy1010R12(qx, qy, qz, qw) { - const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw); - const qnx = (qw < 0 ? -qx : qx) / qlen; - const qny = (qw < 0 ? -qy : qy) / qlen; - const qnz = (qw < 0 ? -qz : qz) / qlen; - const qnw = (qw < 0 ? -qw : qw) / qlen; - const theta = 2 * Math.acos(qnw); - const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz); - const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm; - const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm; - const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm; - const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ); - let p_x = axisX / sum; - let p_y = axisY / sum; - if (axisZ < 0) { - const tmp = p_x; - p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); - p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); +const outputPackedSplat = (gsplat, rgbMinMaxLnScaleMinMax) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax }); +const outputCovSplat = (covsplat, rgbMinMaxLnScaleMinMax) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax }); +const outputExtendedSplat = (gsplat) => new OutputExtendedSplat({ gsplat }); +const outputExtCovSplat = (covsplat) => new OutputExtCovSplat({ covsplat }); +const outputSplatDepth = (gsplat, viewCenter, viewDir, sortRadial) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial }); +const outputCovSplatDepth = (covsplat, viewCenter, viewDir, sortRadial) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial }); +const outputRgba8 = (rgba8) => new OutputRgba8({ rgba8 }); +class OutputPackedSplat extends Dyno { + constructor({ + gsplat, + rgbMinMaxLnScaleMinMax + }) { + super({ + inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: "vec4" }, + inputs: { gsplat, rgbMinMaxLnScaleMinMax }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; + if (gsplat2 && rgbMinMaxLnScaleMinMax2) { + return unindentLines(` + if (isGsplatActive(${gsplat2}.flags)) { + target = packSplatEncoding(${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba, ${rgbMinMaxLnScaleMinMax2}); + } else { + target = uvec4(0u, 0u, 0u, 0u); + } + `); + } + return ["target = uvec4(0u, 0u, 0u, 0u);"]; + } + }); } - const u_f = p_x * 0.5 + 0.5; - const v_f = p_y * 0.5 + 0.5; - const quantU = Math.round(u_f * 1023); - const quantV = Math.round(v_f * 1023); - const angleInt = Math.round(theta * (4095 / Math.PI)); - return angleInt << 20 | quantV << 10 | quantU; } -function decodeQuatOctXy1010R12(encoded, out) { - const quantU = encoded & 1023; - const quantV = encoded >>> 10 & 1023; - const angleInt = encoded >>> 20 & 4095; - const u_f = quantU / 1023; - const v_f = quantV / 1023; - let f_x = (u_f - 0.5) * 2; - let f_y = (v_f - 0.5) * 2; - const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); - const t = Math.max(-f_z, 0); - f_x += f_x >= 0 ? -t : t; - f_y += f_y >= 0 ? -t : t; - const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z); - const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen; - const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen; - const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen; - const theta = angleInt / 4095 * Math.PI; - const halfTheta = theta * 0.5; - const s = Math.sin(halfTheta); - const w = Math.cos(halfTheta); - out.set(axisX * s, axisY * s, axisZ * s, w); - return out; +class OutputCovSplat extends Dyno { + constructor({ + covsplat, + rgbMinMaxLnScaleMinMax + }) { + super({ + inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: "vec4" }, + inputs: { covsplat, rgbMinMaxLnScaleMinMax }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; + if (covsplat2 && rgbMinMaxLnScaleMinMax2) { + return unindentLines(` + if (isCovSplatActive(${covsplat2}.flags)) { + target = packSplatCovEncoding(${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz, ${rgbMinMaxLnScaleMinMax2}); + } else { + target = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);"]; + } + }); + } } -function packSint8Bytes(b0, b1, b22, b3) { - const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127))); - const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127))); - const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127))); - const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127))); - return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24; +class OutputExtendedSplat extends Dyno { + constructor({ + gsplat + }) { + super({ + inTypes: { gsplat: Gsplat }, + inputs: { gsplat }, + globals: () => [defineGsplat], + statements: ({ inputs }) => { + const { gsplat: gsplat2 } = inputs; + if (gsplat2) { + return unindentLines(` + if (isGsplatActive(${gsplat2}.flags)) { + packSplatExt(target, target2, ${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba); + } else { + target = uvec4(0u); + target2 = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; + } + }); + } } -function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) { - const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1; - const sh1Scale = 63 / sh1Max; - const base = index * 2; - for (let i = 0; i < 9; ++i) { - const s = sh1Rgb[i] * sh1Scale; - const value = Math.round(Math.max(-63, Math.min(63, s))) & 127; - const bitStart = i * 7; - const bitEnd = bitStart + 7; - const wordStart = Math.floor(bitStart / 32); - const bitOffset = bitStart - wordStart * 32; - const firstWord = value << bitOffset & 4294967295; - sh1Array[base + wordStart] |= firstWord; - if (bitEnd > wordStart * 32 + 32) { - const secondWord = value >>> 32 - bitOffset & 4294967295; - sh1Array[base + wordStart + 1] |= secondWord; - } +class OutputExtCovSplat extends Dyno { + constructor({ + covsplat + }) { + super({ + inTypes: { covsplat: CovSplat }, + inputs: { covsplat }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2 } = inputs; + if (covsplat2) { + return unindentLines(` + if (isCovSplatActive(${covsplat2}.flags)) { + packSplatExtCov(target, target2, ${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz); + } else { + target = uvec4(0u); + target2 = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; + } + }); } } -function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) { - const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1; - const sh2Scale = 1 / sh2Max; - sh2Array[index * 4 + 0] = packSint8Bytes( - sh2Rgb[0] * sh2Scale, - sh2Rgb[1] * sh2Scale, - sh2Rgb[2] * sh2Scale, - sh2Rgb[3] * sh2Scale - ); - sh2Array[index * 4 + 1] = packSint8Bytes( - sh2Rgb[4] * sh2Scale, - sh2Rgb[5] * sh2Scale, - sh2Rgb[6] * sh2Scale, - sh2Rgb[7] * sh2Scale - ); - sh2Array[index * 4 + 2] = packSint8Bytes( - sh2Rgb[8] * sh2Scale, - sh2Rgb[9] * sh2Scale, - sh2Rgb[10] * sh2Scale, - sh2Rgb[11] * sh2Scale - ); - sh2Array[index * 4 + 3] = packSint8Bytes( - sh2Rgb[12] * sh2Scale, - sh2Rgb[13] * sh2Scale, - sh2Rgb[14] * sh2Scale, - 0 - ); -} -function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) { - const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1; - const sh3Scale = 31 / sh3Max; - const base = index * 4; - for (let i = 0; i < 21; ++i) { - const s = sh3Rgb[i] * sh3Scale; - const value = Math.round(Math.max(-31, Math.min(31, s))) & 63; - const bitStart = i * 6; - const bitEnd = bitStart + 6; - const wordStart = Math.floor(bitStart / 32); - const bitOffset = bitStart - wordStart * 32; - const firstWord = value << bitOffset & 4294967295; - sh3Array[base + wordStart] |= firstWord; - if (bitEnd > wordStart * 32 + 32) { - const secondWord = value >>> 32 - bitOffset & 4294967295; - sh3Array[base + wordStart + 1] |= secondWord; - } - } -} -function encodeExtRgb(r, g, b) { - const ar = Math.abs(r); - const ag = Math.abs(g); - const ab = Math.abs(b); - const maxAbs = Math.max(ar, ag, ab); - const base = Math.floor(Math.log2(maxAbs)); - const biasedBase = Math.max(0, Math.min(31, base + 15)); - const divisor = 2 ** (biasedBase - 15) / 255; - const uR = Math.round(Math.max(0, Math.min(255, ar / divisor))); - const uG = Math.round(Math.max(0, Math.min(255, ag / divisor))); - const uB = Math.round(Math.max(0, Math.min(255, ab / divisor))); - const expSigns = biasedBase << 3 | ((r < 0 ? 1 : 0) | (g < 0 ? 2 : 0) | (b < 0 ? 4 : 0)); - return uR | uG << 8 | uB << 16 | expSigns << 24; -} -function decodeExtRgb(encoded) { - const color = packedFields.color; - const biasedBase = encoded >>> 27 & 31; - const divisor = 2 ** (biasedBase - 15) / 255; - const r = (encoded & 255) * divisor; - const g = (encoded >>> 8 & 255) * divisor; - const b = (encoded >>> 16 & 255) * divisor; - color.r = encoded & 16777216 ? -r : r; - color.g = encoded & 33554432 ? -g : g; - color.b = encoded & 67108864 ? -b : b; - return color; -} -function encodeExtSh1Rgb(sh1Array, index, sh1Rgb) { - const i4 = index * 4; - for (let k = 0; k < 3; ++k) { - const k3 = k * 3; - sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); - } -} -function encodeExtSh12Rgb(sh1Array, sh2Array, index, sh1Rgb, sh2Rgb) { - const i4 = index * 4; - for (let k = 0; k < 3; ++k) { - const k3 = k * 3; - sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); - } - sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]); - for (let k = 1; k < 5; ++k) { - const k5 = k * 5; - sh2Array[i4 + (k - 1)] = encodeExtRgb( - sh2Rgb[k5], - sh2Rgb[k5 + 1], - sh2Rgb[k5 + 2] - ); - } -} -function encodeExt3Rgb(sh3ArrayA, sh3ArrayB, index, sh3Rgb) { - const i4 = index * 4; - for (let k = 0; k < 4; ++k) { - const k3 = k * 3; - sh3ArrayA[i4 + k] = encodeExtRgb( - sh3Rgb[k3], - sh3Rgb[k3 + 1], - sh3Rgb[k3 + 2] - ); - } - for (let k = 4; k < 7; ++k) { - const k3 = k * 3; - sh3ArrayB[i4 + (k - 4)] = encodeExtRgb( - sh3Rgb[k3], - sh3Rgb[k3 + 1], - sh3Rgb[k3 + 2] - ); - } -} -function decompressPartialGzip(fileBytes, numBytes) { - const chunks = []; - let totalBytes = 0; - let result = null; - const gunzip = new Gunzip((data, final) => { - chunks.push(data); - totalBytes += data.length; - if (final || totalBytes >= numBytes) { - const allBytes = new Uint8Array(totalBytes); - let offset2 = 0; - for (const chunk of chunks) { - allBytes.set(chunk, offset2); - offset2 += chunk.length; +class OutputSplatDepth extends Dyno { + constructor({ + gsplat, + viewCenter, + viewDir, + sortRadial + }) { + super({ + inTypes: { + gsplat: Gsplat, + viewCenter: "vec3", + viewDir: "vec3", + sortRadial: "bool" + }, + inputs: { gsplat, viewCenter, viewDir, sortRadial }, + globals: () => [defineGsplat], + statements: ({ inputs }) => { + const { gsplat: gsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; + if (gsplat2 && viewCenter2 && viewDir2 && sortRadial2) { + return unindentLines(` + float metric = 1.0 / 0.0; + if (isGsplatActive(${gsplat2}.flags)) { + vec3 center = ${gsplat2}.center - ${viewCenter2}; + if (${sortRadial2}) { + metric = length(center); + } else { + float bias = 100.0; // reduce popping + metric = dot(center, ${viewDir2}) + bias; + } + } + target3 = floatToVec4(metric); + `); + } + return []; } - result = allBytes.slice(0, numBytes); - } - }); - const CHUNK_SIZE = 1024; - let offset = 0; - while (result == null && offset < fileBytes.length) { - const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE); - gunzip.push(chunk, false); - offset += CHUNK_SIZE; - } - if (result == null) { - gunzip.push(new Uint8Array(), true); - if (result == null) { - throw new Error("Failed to decompress partial gzip"); - } + }); } - return result; } -class GunzipReader { +class OutputCovSplatDepth extends Dyno { constructor({ - fileBytes, - chunkBytes = 64 * 1024 + covsplat, + viewCenter, + viewDir, + sortRadial }) { - this.fileBytes = fileBytes; - this.chunkBytes = chunkBytes; - this.chunks = []; - this.totalBytes = 0; - const ds = new DecompressionStream("gzip"); - const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds); - this.reader = decompressionStream.getReader(); - } - async read(numBytes) { - while (this.totalBytes < numBytes) { - const { value: chunk, done: readerDone } = await this.reader.read(); - if (readerDone) { - break; + super({ + inTypes: { + covsplat: CovSplat, + viewCenter: "vec3", + viewDir: "vec3", + sortRadial: "bool" + }, + inputs: { covsplat, viewCenter, viewDir, sortRadial }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; + if (covsplat2 && viewCenter2 && viewDir2 && sortRadial2) { + return unindentLines(` + float metric = 1.0 / 0.0; + if (isCovSplatActive(${covsplat2}.flags)) { + vec3 center = ${covsplat2}.center - ${viewCenter2}; + if (${sortRadial2}) { + metric = length(center); + } else { + float bias = 100.0; // reduce popping + metric = dot(center, ${viewDir2}) + bias; + } + } + target3 = floatToVec4(metric); + `); + } + return []; } - this.chunks.push(chunk); - this.totalBytes += chunk.length; - } - if (this.totalBytes < numBytes) { - throw new Error( - `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}` - ); - } - const allBytes = new Uint8Array(this.totalBytes); - let outOffset = 0; - for (const chunk of this.chunks) { - allBytes.set(chunk, outOffset); - outOffset += chunk.length; - } - const result = allBytes.subarray(0, numBytes); - this.chunks = [allBytes.subarray(numBytes)]; - this.totalBytes -= numBytes; - return result; + }); } } -const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - DataCache, - FreeList, - GunzipReader, - IDENT_VERTEX_SHADER, - Sint8ToFloat, - Uint8ToFloat, - averagePositions, - averageQuaternions, - cloneClock, - coinciDist, - computeMaxSplats, - coorientDist, - decodeExtRgb, - decodeExtSplat, - decodeQuatEulerXyz888, - decodeQuatOctXy1010R12, - decodeQuatOctXy88R8, - decodeQuatXyz888, - decompressPartialGzip, - encodeExt3Rgb, - encodeExtRgb, - encodeExtSh12Rgb, - encodeExtSh1Rgb, - encodeExtSplat, - encodeQuatEulerXyz888, - encodeQuatOctXy1010R12, - encodeQuatOctXy88R8, - encodeQuatXyz888, - encodeSh1Rgb, - encodeSh2Rgb, - encodeSh3Rgb, - epsilonSign, - flipPixels, - floatBitsToUint: floatBitsToUint$1, - floatToSint8, - floatToUint8, - fromHalf, - getTextureSize, - getTransferable, - isAndroid, - isIos, - isMobile, - isOculus, - isQuest2, - isVisionPro, - mapFilterObject, - mapObject, - newArray, - normalize: normalize$1, - omitUndefined, - pixelsToPngUrl, - setPackedSplat, - setPackedSplatCenter, - setPackedSplatOpacity, - setPackedSplatQuat, - setPackedSplatRgb, - setPackedSplatRgba, - setPackedSplatScales, - threeMrtArray, - threeRevision, - toHalf, - uintBitsToFloat: uintBitsToFloat$1, - unpackSplat, - withinCoinciDist, - withinCoorientDist, - withinDist -}, Symbol.toStringTag, { value: "Module" })); -class OldSplatWorker { - constructor() { - this.messages = {}; - this.messageIdNext = 0; - this.worker = new WorkerWrapper$1(); - this.worker.onmessage = (event) => this.onMessage(event); +class OutputRgba8 extends Dyno { + constructor({ rgba8 }) { + super({ + inTypes: { rgba8: "vec4" }, + inputs: { rgba8 }, + statements: ({ inputs, outputs }) => [ + `target = ${inputs.rgba8 ?? "vec4(0.0, 0.0, 0.0, 0.0)"};` + ] + }); } - makeMessageId() { - return ++this.messageIdNext; + dynoOut() { + return new DynoOutput(this, "rgba8"); } - makeMessagePromiseId() { - const id = this.makeMessageId(); - const promise = new Promise((resolve, reject) => { - this.messages[id] = { resolve, reject }; +} +const uniform = (key, type, value) => new DynoUniform({ key, type, value }); +const dynoBool = (value = false, key) => new DynoBool({ key, value }); +const dynoUint = (value = 0, key) => new DynoUint({ key, value }); +const dynoInt = (value = 0, key) => new DynoInt({ key, value }); +const dynoFloat = (value = 0, key) => new DynoFloat({ key, value }); +const dynoBvec2 = (value, key) => new DynoBvec2({ key, value }); +const dynoUvec2 = (value, key) => new DynoUvec2({ key, value }); +const dynoIvec2 = (value, key) => new DynoIvec2({ key, value }); +const dynoVec2 = (value, key) => new DynoVec2({ key, value }); +const dynoBvec3 = (value, key) => new DynoBvec3({ key, value }); +const dynoUvec3 = (value, key) => new DynoUvec3({ key, value }); +const dynoIvec3 = (value, key) => new DynoIvec3({ key, value }); +const dynoVec3 = (value, key) => new DynoVec3({ key, value }); +const dynoBvec4 = (value, key) => new DynoBvec4({ key, value }); +const dynoUvec4 = (value, key) => new DynoUvec4({ key, value }); +const dynoIvec4 = (value, key) => new DynoIvec4({ key, value }); +const dynoVec4 = (value, key) => new DynoVec4({ key, value }); +const dynoMat2 = (value, key) => new DynoMat2({ key, value }); +const dynoMat2x2 = (value, key) => new DynoMat2x2({ key, value }); +const dynoMat2x3 = (value, key) => new DynoMat2x3({ key, value }); +const dynoMat2x4 = (value, key) => new DynoMat2x4({ key, value }); +const dynoMat3 = (value, key) => new DynoMat3({ key, value }); +const dynoMat3x2 = (value, key) => new DynoMat3x2({ key, value }); +const dynoMat3x3 = (value, key) => new DynoMat3x3({ key, value }); +const dynoMat3x4 = (value, key) => new DynoMat3x4({ key, value }); +const dynoMat4 = (value, key) => new DynoMat4({ key, value }); +const dynoMat4x2 = (value, key) => new DynoMat4x2({ key, value }); +const dynoMat4x3 = (value, key) => new DynoMat4x3({ key, value }); +const dynoMat4x4 = (value, key) => new DynoMat4x4({ key, value }); +const dynoUsampler2D = (value, key) => new DynoUsampler2D({ key, value }); +const dynoIsampler2D = (value, key) => new DynoIsampler2D({ key, value }); +const dynoSampler2D = (value, key) => new DynoSampler2D({ key, value }); +const dynoUsampler2DArray = (value, key) => new DynoUsampler2DArray({ key, value }); +const dynoIsampler2DArray = (key, value) => new DynoIsampler2DArray({ key, value }); +const dynoSampler2DArray = (value, key) => new DynoSampler2DArray({ key, value }); +const dynoUsampler3D = (value, key) => new DynoUsampler3D({ key, value }); +const dynoIsampler3D = (value, key) => new DynoIsampler3D({ key, value }); +const dynoSampler3D = (value, key) => new DynoSampler3D({ key, value }); +const dynoUsamplerCube = (value, key) => new DynoUsamplerCube({ key, value }); +const dynoIsamplerCube = (value, key) => new DynoIsamplerCube({ key, value }); +const dynoSamplerCube = (value, key) => new DynoSamplerCube({ key, value }); +const dynoSampler2DShadow = (value, key) => new DynoSampler2DShadow({ key, value }); +const dynoSampler2DArrayShadow = (value, key) => new DynoSampler2DArrayShadow({ key, value }); +const dynoSamplerCubeShadow = (value, key) => new DynoSamplerCubeShadow({ key, value }); +class DynoUniform extends Dyno { + constructor({ + key, + type, + count, + value, + update, + globals + }) { + key = key ?? "value"; + super({ + outTypes: { [key]: type }, + update: () => { + if (update) { + const value2 = update(this.value); + if (value2 !== void 0) { + this.value = value2; + } + } + this.uniform.value = this.value; + }, + generate: ({ inputs, outputs }) => { + const allGlobals = (globals == null ? void 0 : globals({ inputs, outputs })) ?? []; + const uniforms = {}; + const name = outputs[key]; + if (name) { + allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`); + uniforms[name] = this.uniform; + } + return { globals: allGlobals, uniforms }; + } }); - return { id, promise }; + this.type = type; + this.count = count; + this.value = value; + this.uniform = { value }; + this.outKey = key; } - onMessage(event) { - const { id, result, error } = event.data; - const handler = this.messages[id]; - if (handler) { - delete this.messages[id]; - if (error) { - handler.reject(error); - } else { - handler.resolve(result); - } - } + dynoOut() { + return new DynoOutput(this, this.outKey); } - // Invoke an RPC on the worker with the given name and arguments. - // The normal usage of a worker is to run one activity at a time, - // but this function allows for concurrent calls, tagging each request - // with a unique message Id and awaiting a response to that same Id. - // The method will automatically transfer any ArrayBuffers in the - // arguments to the worker. If you'd like to transfer a copy of a - // buffer then you must clone it before passing to this function. - async call(name, args) { - const { id, promise } = this.makeMessagePromiseId(); - this.worker.postMessage( - { name, args, id }, - { transfer: getTransferable(args) } - ); - return promise; +} +class DynoBool extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bool", value, update }); } } -let maxWorkers = 4; -let numWorkers = 0; -const freeWorkers = []; -const workerQueue = []; -async function allocWorker() { - const worker = freeWorkers.shift(); - if (worker) { - return worker; +class DynoUint extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uint", value, update }); } - if (numWorkers < maxWorkers) { - const worker2 = new OldSplatWorker(); - numWorkers += 1; - return worker2; +} +class DynoInt extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "int", value, update }); } - return new Promise((resolve) => { - workerQueue.push(resolve); - }); } -function freeWorker(worker) { - if (numWorkers > maxWorkers) { - numWorkers -= 1; - return; +class DynoFloat extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "float", value, update }); } - const waiter = workerQueue.shift(); - if (waiter) { - waiter(worker); - return; +} +class DynoBvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec2", value, update }); } - freeWorkers.push(worker); } -async function withWorker(callback) { - const worker = await allocWorker(); - try { - return await callback(worker); - } finally { - freeWorker(worker); +class DynoUvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec2", value, update }); } } -const jsContent = '(function() {\n "use strict";\n class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n }\n if (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n }\n function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_worker_rs_bg.js": import0\n };\n }\n const ChunkDecoderFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += ", " + debugString(val[i]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n let cachedFloat32ArrayMemory0 = null;\n function getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x) {\n return x === void 0 || x === null;\n }\n function passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (module_or_path === void 0) {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyB6QgiIpyEIIHpCIIinIRJBACELDAoLQaiQyAApAwAieUL/AYNCBFENACB5QhCIpyIVIHmnIgNB/wFxQQRGDQEaIHlCCIinIQggeUIgiKchEkEAIQsMCQsgBC8ByAwLQf//AHE7ASYgASARQf//AHEiCDsBJCAIQQ9qQQR2IQICfyAIRQRAQQEhFUEADAELIAJBHmwQcSIVRQ0CIBUhAwJAIAhBEUkNACACQQFrIhBBB3EhCyACQQJrQQdPBEAgEEF4cSEHA0AgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EQakIANwAAIANBFmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBJmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBNGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQdIAav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HiAGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANB8ABqQgA3AAAgA0GIAWpCADcAACADQY4BakIANwAAIANB+ABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQaYBakIANwAAIANBrAFqQgA3AAAgA0GWAWr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxAFqQgA3AAAgA0HKAWpCADcAACADQbQBav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HoAWpCADcAACADQeIBakIANwAAIANB0gFq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQfABaiEDIAdBCGsiBw0ACwsgC0UNAANAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBFmpCADcAACADQRBqQgA3AAAgA0EeaiEDIAtBAWsiCw0ACwsgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EWakIANwAAIANBEGpCADcAACACCyEDIAEoApwEIgsEQCABKAKgBCIOQQRrKAIAIhBBeHEiESALQR5sIgtBBEEIIBBBA3EiEBtqSQ0LIBBBACARIAtBJ2pLGw0MIA4QogILIAEgAjYCpAQgASAVNgKgBCABIAM2ApwEAn8CQCAIRQ0AIBUtAAAiA0ECRg0AIARBMGogFUEcai0AADoAACAEIBX9AAAE/QsDyAwgBCAVKQAUNwMoIBUtAAEhCyAVLQACIQcgFS0AAyEIIBUtAB0MAQsgBEEwakEAOgAAIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwPIDCAEQgA3AyhBACEIQQAhB0EAIQtBACEDQQALIRUgASAIOgCFBSABIAc6AIQFIAEgCzoAgwUgASADOgCCBSABIAT9AAPIDP0LAIYFIAEgBCkDKDcAlgUgASAVOgCfBSABQZ4FaiAEQTBqLQAAOgAAIAEgAS8BJCIDQQR2IANBD3FBAEdqIgM7AaAFIAEgAS8BJiILQQR2IAtBD3FBAEdqIgs7AaIFAkACQCADIAtsQQh0IgNBAE4EQAJAIANFBEBBASELDAELIAMQcSILRQ0FIAtBBGstAABBA3FFIANFcg0AIAtBACAD/AsACyABKAIAIhUEQCABKAIEIghBBGsoAgAiEEF4cSICQQRBCCAQQQNxIhAbIBVqSQ0OIBBBACACIBVBJ2pLGw0PIAgQogILIAEgAzYCCCABIAs2AgQgASADNgIAIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQECQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCDCIVBEAgASgCECAVQQEQogcLIAEgAzYCFCABIAs2AhAgASADNgIMIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQICQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCGCIVBEAgASgCHCAVQQEQogcLIAEgAzYCICABIAs2AhwgASADNgIYIAEvASRBFGoiAxBxIgtFDQQgAwRAIAtB/wAgA/wLAAsgASgCqAQiFQRAIAEoAqwEIBVBARCiBwsgASADNgKwBCABIAs2AqwEIAEgAzYCqARBERBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBEGpBgQE6AAAgA0EIakKBg4aMmLDgwIF/NwAAIAEoArQEIgsEQCABKAK4BCALQQEQogcLIAFBETYCvAQgASADNgK4BCABQRE2ArQEIAEvAaAFIgtBA3QhAwJAIAtFBEBBASELDAELIAMQcSILRQ0FCyADBEAgC0H/ACAD/AsACyABKALABCIVBEAgASgCxAQgFUEBEKIHCyABIAM2AsgEIAEgCzYCxAQgASADNgLABEEJEHEiA0UNBCADQoGDhoyYsODAgX83AAAgA0EIakGBAToAACABKALMBCILBEAgASgC0AQgC0EBEKIHCyABQQk2AtQEIAEgAzYC0AQgAUEJNgLMBCABLwGgBSILQQN0IQMCQCALRQRAQQEhCwwBCyADEHEiC0UNBQsgAwRAIAtB/wAgA/wLAAsgASgC2AQiBwRAIAEoAtwEIAdBARCiBwsgASADNgLgBCABIAs2AtwEIAEgAzYC2ARBCRBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQMAwtB7KzGABD/BwALQfysxgAQ/wcAC0GMrcYAEP8HAAsgEkEHdiASQeAAcUEAR2oiCkECdCERAkAgCkUNACAREHEiCUUNASAJQQRrLQAAQQNxRSARRXINACAJQQAgEfwLAAsCQAJAAkACQCARIBJBBXYiEE8EQCASQSBJDQIgASkD4AMheSABKALoAyELIAkhCCAQIRUDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEgJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEi0AADoAAAwBCyADRQ0AIAggEiAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCC0EAIBAgEUGwrcYAEOoHAAtBACELQaiQyAApAwAieaciA0H/AXFBBEYNACB5QiCIpyESIHlCEIinIRUgeUIIiKchCCAKDQEMCQsgBCAKNgIwIAQgCTYCLCAEIAo2AiggBEHIDGogAUHwAGoiFSAEQShqIBAQsgMgBC0AyAwiC0EdRg0BIAQ1AM0MInkgBEHTDGoxAABCMIYgBEHRDGozAABCIIaEhCJ6QhiIpyESIHpCCIinIRUgBCgC1AwhDiAELQDMDCEDIAQvAcoMIQIgBC0AyQwhByB5pyEIDAgLIAlBBGsoAgAiBkF4cSICQQRBCCAGQQNxIgcbIBFqSQ0KIAdBACACIBFBJ2pLGw0LIAkQogIMBwsCQCABLQAoRQ0AIBVBARC5ASEHIAEgFUEBELkBOgAsIAdB/wFxRQ0AQRMhCwwHCyABIBUQqgUiAzoApAUCQCADRQ0AIAEgFRCqBToApQUgFRCqBQRAIAEgFRCqBUEBcyIDOgBuIAEgAzoAXiABIAM6AE4gASADOgA+IAEgFUEHEK8BOgA8IAEgFUEHEK8BOgBMIAEgFUEHEK8BOgBcIAEgFUEHEK8BOgBsIAEgFUEGEK8BOgA9IAEgFUEGEK8BOgBNIAEgFUEGEK8BOgBdIAEgFUEGEK8BOgBtCyABLQClBUEBRgRAQf8BIQMgASAVEKoFBH8gFUEIELkBBUH/AQs6APYEIAEgFRCqBQR/IBVBCBC5AQVB/wELOgD6BCAVEKoFBEAgFUEIELkBIQMLIAEgAzoA/gQLIAEtAJMBQfIBRw0AQQ8hCwwGCyABIBUQqgU6ACogASAVQQYQuQE6AC0gASAVQQMQuQE6AC4gASAVEKoFIgM6AKYFAkACQAJAIANFDQAgFRCqBQRAIAEgFUEGEK8BNgLwAyABIBVBBhCvATYC9AMgASAVQQYQrwE2AvgDIAEgFUEGEK8BNgL8AyABIBVBBhCvATYCgAQgASAVQQYQrwE2AoQEIAEgFUEGEK8BNgKIBCABIBVBBhCvATYCjAQLIAEtAJMBQfIBRw0AQQ8hCwwBCyAVQQIQuQEhA0EPIQsgAS0AkwFB8gFGDQcgAUEBIAN0Ihg6AKcFAkAgA0EfcSIPRQ0AAkACQEEDIA90QQNrIgNBAE4EQCADEHEiEUUNBiARQQRrLQAAQQNxRSADRXJFBEAgEUEAIAP8CwALIAEpA+ADIXkgASgC6AMhByARIQ4gAyECAkADQCB5UA0BIAcpAwgieiAHKAIEIgitInsgeiB7VBunIgogBygCAGohEAJAIAhC/////w8geiB6Qv////8PWhunayIJQQAgCCAJTxsiCSB5IAKtInsgeSB7VBunIg0gCSANSRsiCUEBRgRAIA4gEC0AADoAAAwBCyAJRQ0AIA4gECAJ/AoAAAsgASB5IAmtInt9Ink3A+ADIAcgeiB7fDcDCCAIIApGDQEgCSAOaiEOIAIgCWsiAg0AC0GokMgAKQMAInpC/wGDQgRRIQwMAgtBASEMQaiQyAApAwAiekL/AYNCBFENAUEAIQsMAgtBuKnGABD/BwALIAFBmAFqISYgESEZIAMhDQJAA0ACQCANQQJNBEAgDARAQQEhCUEAIQpBACEIQQAhEAwCCyAEIHo3A8gMQaiqxgBBNyAEQcgMakGYqsYAQeCqxgAQ4AYACyAZLwAAIBlBAmotAABBEHRyIghBA2oiCUECdiEKAn8gCUH8//8PcSIURQRAQQEhCUEADAELIBQQcSIJRQ0IIAlBBGstAABBA3FFIBRFckUEQCAJQQAgFPwLAAsgCgshECAIIBRNBEAgCEUEQEEAIQpBACEIDAILIAEpA+ADIXkgASgC6AMhByAJIQ4gCCECA0ACQCB5UA0AIAcpAwgieyAHKAIEIhKtInwgeyB8VBunIiIgBygCAGohFgJAIBJC/////w8geyB7Qv////8PWhunayIUQQAgEiAUTxsiFCB5IAKtInwgeSB8VBunIhsgFCAbSRsiFEEBRgRAIA4gFi0AADoAAAwBCyAURQ0AIA4gFiAU/AoAAAsgASB5IBStInx9Ink3A+ADIAcgeyB8fDcDCCASICJGDQAgDiAUaiEOIAIgFGsiAg0BDAMLCyAMDQFBACELIBBFDQQgCSAQQQJ0QQEQogcMBAtBACAIIBRBiKrGABDqBwALIAVBCEYNASAEIAo2AuAYIAQgCTYC3BggBCAQNgLYGCAEQcgMaiAmIAVBKGxqIARB2BhqIAgQsgMgBC0AyAwiCUEdRwRAIAQoAtQMIQ4gBCkCzAwheiAELwHKDCECIAQtAMkMIQcgCSELDAMLIAVBAWohBSAZQQMgDSANQQNPGyIJaiEZIA0gCWsiDQ0ACyARIANBARCiBwwCC0EIQQhB+KnGABCMBwALIBEgA0EBEKIHIHqnIQMMBwsgBEEANgLgGCAEQoCAgIAQNwLYGCAEQcgMaiABQdgDaiAEQdgYahDzAQJAAkACQAJAAkACfwJAIAQtAMgMQQRGDQAgBCkDyAwieqciA0H/AXFBBEYNAEEADAELIAQoAuAYIgNBA2oiCUEASA0CIAlBAnYhAgJ/IAlBfHEiCUUEQEEBIQdBAAwBCyAJEHEiB0UNCSAHQQRrLQAAQQNxRSAJRXJFBEAgB0EAIAn8CwALIAILIQggBCACNgIwIAQgBzYCLCAEIAg2AiggAyAJSw0DIAQoAtwYIQkgAwRAIAcgCSAD/AoAAAsgGEEBayECIA9BBE8NBCAEQcgMaiABQZgBaiJdIAJBKGxqIARBKGogAxCyAyAELQDIDCIIQR1GDQEgBCgC1AwhDiAELwHKDCECIAQtAMkMIQcgBCkCzAwieqchAyAICyELIAQoAtgYIgZFDQsgBCgC3BggBkEBEKIHDAsLIAQoAtgYIgMEQCAJIANBARCiBwsgFUEHELkBIQMgFUEEEK8BIQggFUEEEK8BIQIgFUEEEK8BIQ4gFUEEEK8BIRIgFUEEEK8BIQkgAUH/ACABLAA8IANB/wFxIgdBACABLQA+G2ogByABLQCkBSIQGyIDQQAgA0EAShsiESARQf8AThtBAXQvAbjkRDsBMiABQf8AIAMgCWoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45EQ7ATogAUH/ACADIBJqIhFBACARQQBKGyIRIBFB/wBOG0EBdC4BuOZEIhE7ATggAUH/ACADIAhqIgpBACAKQQBKGyIKIApB/wBOG0EBdC8BuOZEOwEwIAFB/wAgAiADaiIKQQAgCkEAShsiCiAKQf8AThtBAXQvAbjmREEBdDsBNCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwE2IAPBQQdMBEAgAUEIOwE2CyARQYQBTA0DIAFBhAE7ATgMAwtByKnGABD/BwALQQAgAyAJQeipxgAQ6gcACyACQQhB2KnGABCMBwALAkAgEEUNACABQf8AIAEsAEwgB0EAIAEtAE4baiAHIAEtAKQFGyIDQQAgA0EAShsiECAQQf8AThtBAXQvAbjkRDsBQiABQf8AIAMgCWoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LwG45EQ7AUogAUH/ACADIBJqIhBBACAQQQBKGyIQIBBB/wBOG0EBdC4BuOZEIhA7AUggAUH/ACADIAhqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEOwFAIAFB/wAgAiADaiIRQQAgEUEAShsiESARQf8AThtBAXQvAbjmREEBdDsBRCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwFGIAPBQQdMBEAgAUEIOwFGCyAQQYUBTgRAIAFBhAE7AUgLIAFB/wAgASwAXCAHQQAgAS0AXhtqIAcgAS0ApAUbIgNBACADQQBKGyIQIBBB/wBOG0EBdC8BuOREOwFSIAFB/wAgAyAJaiIQQQAgEEEAShsiECAQQf8AThtBAXQvAbjkRDsBWiABQf8AIAMgEmoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LgG45kQiEDsBWCABQf8AIAMgCGoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45kQ7AVAgAUH/ACACIANqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEQQF0OwFUIAFB/wAgAyAOaiIDQQAgA0EAShsiAyADQf8AThtBAXQuAbjkREGbAWxB5ABtIgM7AVYgA8FBB0wEQCABQQg7AVYLIBBBhQFOBEAgAUGEATsBWAsgAUH/ACABLABsIAdBACABLQBuG2ogByABLQCkBRsiA0EAIANBAEobIhAgEEH/AE4bQQF0LwG45EQ7AWIgAUH/ACADIAlqIglBACAJQQBKGyIJIAlB/wBOG0EBdC8BuOREOwFqIAFB/wAgAyASaiIJQQAgCUEAShsiCSAJQf8AThtBAXQuAbjmRCIHOwFoIAFB/wAgAyAIaiIJQQAgCUEAShsiCSAJQf8AThtBAXQvAbjmRDsBYCABQf8AIAIgA2oiCUEAIAlBAEobIgggCEH/AE4bQQF0LwG45kRBAXQ7AWQgAUH/ACADIA5qIgNBACADQQBKGyIDIANB/wBOG0EBdC4BuOREQZsBbEHkAG0iAzsBZiADwUEHTARAIAFBCDsBZgsgB0GFAUgNACABQYQBOwFoCyABLQCTAUHyAUcNAQtBACEVQQAhEgwHCwJAAn8gAS0AKEUEQEETIQ5BExBxIgZFDQMgBkEPakGrrcYAKAAANgAAIAZBnK3GAP0AAAD9CwAAIAQgBjYCzAwgBEETNgLIDCAENQDJDCJ5IAQxAM8MQjCGIAQzAM0MQiCGhIQiekIYiKchEiB5pyEIIHpCCIinDAELIBVBARC5ARogBEHIDGpBACEKIAFB8ABqIQ1BoM/GACEJQZjNxgAhEANAIAkhESAKIQcgECEJQSEhFANAQfx+IRkDQCANIAktAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGGAWogBToAAAsgDSAJQQFqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBigFqIAU6AAALIA0gCUECai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQY4BaiAFOgAACyANIAlBA2otAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGSAWogBToAAAsgDSAJQQRqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBlgFqIAU6AAALIA0gCUEFai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQZoBaiAFOgAACyANIAlBBmotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGeAWogBToAAAsgDSAJQQdqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBogFqIAU6AAALIA0gCUEIai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQaYBaiAFOgAACyANIAlBCWotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGqAWogBToAAAsgDSAJQQpqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBrgFqIAU6AAALIAlBC2ohCSAZQSxqIhkNAAsgB0GEAWohByAQIBRqIQkgFEEhakGIAiAUQYgCRyIZGyEUIBkNAAsgCkGgCGohCiARQYgCaiEJIBEiEEG41cYARw0AC0EPQR0gAS0AkwFB8gFGGzoAACAELQDIDCIJQR1HBEAgBDUAzQwieSAEQdMMajEAAEIwhiAEQdEMajMAAEIghoSEInpCGIinIRIgekIIiKchFSAEKALUDCEOIAQtAMwMIQMgBC8BygwhAiAELQDJDCEHIHmnIQggCSELDAkLIBVBARC5AUH/AXEiB0EBRgRAIBVBCBC5ASEDCyABIAM6AIEFIAEgB0EBRjoAgAUgAS0AkwFB8gFGDQcgAS0AKA0BIAFBADoAqAVBEyEOQRMQcSIGRQ0CIAZBD2pBq63GACgAADYAACAGQZytxgD9AAAA/QsAACAEIAY2AswMIARBEzYCyAwgBDUAyQwieSAEMQDPDEIwhiAEMwDNDEIghoSEInpCGIinIRIgeachCCB6QgiIpwshFUEYIQtBEyEDDAcLIAEvAaIFIkpFDQMgAUEwaiE6IAFBkARqIRkgAUH0BGohFyABQZYFaiEcIAFBhgVqIUcgAUGCBWohJyAEQZENaiFLIARBiA1qIRggBEH/DGohTCAEQfYMaiFNIARB7QxqIU4gBEHkDGohTyAEQdsMaiEoIARBoRlqIVAgBEGYGWohUSAEQY8ZaiFSIARBhhlqIVMgBEH9GGohVCAEQfQYaiFVIARB6xhqIVYgBEGZD2ohKSAEQYQPaiEqIARB7w5qISsgBEHaDmohLCAEQcUOaiEtIARBsA5qIRMgBEGbDmohLiAEQYYOaiEvIARB8Q1qITAgBEHcDWohMSAEQccNaiEyIARBsg1qITMgBEGdDWohNCAEQfMMaiE1IARB0gxqIVcgBEHiGGohWCAEQegLaiFZIARB6AlqIVogBEGoC2ohICAEQagJaiEhIARB6ApqIV4gBEHoCGohXyAEQagKaiFgIARBqAhqIWEgBEHeDGohNiAEQegHaiFiIARBqAdqIWMgBEHoBmohZCAEQagGaiFlIARB6AVqIWYgBEGoBWohZyAEQegEaiFoIARBqARqIWkgBEHoA2ohaiAEQagDaiFrIARB6AJqIWwgBEGoAmohbSAEQegBaiFuIARBqAFqIW8gBEHoAGohcCAEQThqIXEgBEEoakECciFIIARB2AxqITwgBEHIDGpBAnIhPSAEQR1qIT4gBEEOaiEUIARBzwxqIQwgBEHMDGohciAEQckMaiI/QRVqIXMgBEGIGWohdEEBIQNBACEQA0AgAS0ApwUiC0UNAiADIREgJ/0MAAAAAAAAAAAAAAAAAAAAAP0LAQAgJ0EWakIANwEAICdBEGpCADcBACAQIAtwIQ8CQCABLwGgBSJ1RQ0AQQEhN0EAISZBACEKAkACQAJAAkACQAJAAkACQANAIHNCADcAACA/QRBqQgA3AAAgP/0MAAAAAAAAAAAAAAAAAAAAAP0LAAACQCABLQCkBUEBRw0AIAEtAKUFQQFxRQ0AIAQgFSAXQQMgFygCABDIBDoA5QwLIAQgAS0AgAUEfyAVIAEtAIEFEJkFBUEACzoAyAwCQAJAAkACQAJ/AkACQCABLQAoDQAgFSABLQCoBRCZBUUEQEEAIQlBACELIAEtACgNAQwCC0EUIThBFBBxIhpFDRIgGkEQakGYsMYAKAAANgAAIBpBiLDGAP0AAAD9CwAAQRQhOUEYDAILIBVBnLDGAEEEQYSDxAQQyAQhAyAEQRQ6ACggBCADQf8BcSIJOgApIAlBBU8EQCAJIQZBFAwCCyAEQShqEKsEIAQgCToAywxBAiEDAkACQAJAAkACQAJAAkACQCAJQQFrDgQDAAEEAgtBAyEDDAILQQEhAwwBC0EAIQMLIEcgA0GBgoQIbCIDNgEAIDwgAzYAAAwBC0EAIQ4gCkEebCEIIAwhCwNAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQAQQegCbCAOIEdqIgctAABBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBA2tBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABAgByADOgAAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQARQegCbCADQSRsaiIDQbywxgBqQQkgAygAvLBGEMgEIQMgBEEVOgAoIAQgA0H/AXEiAzoAKSADQQlLBEAgAyEGQRUMBgsgBEEoahCrBCALQQJrQQogAyADQQpPGyIDOgAAIAogASgCpAQiAk8NAyABKAKgBCAIaiADOgARIAcgAzoAACAKIAEoAqQEIgJPDQIgFSABKAKgBCAIai0AEkHoAmwgA0EkbGoiA0G8sMYAakEJIAMoALywRhDIBCEDIARBFToAKCAEIANB/wFxIgM6ACkgA0EJSwRAIAMhBkEVDAYLIARBKGoQqwQgC0EBa0EKIAMgA0EKTxsiAzoAACAKIAEoAqQEIgJPDQMgASgCoAQgCGogAzoAEiAHIAM6AAAgCiABKAKkBCICTw0CIBUgASgCoAQgCGotABNB6AJsIANBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABMgByADOgAAIAtBBGohCyAOQQFqIg5BBEkNAAsLIBVB3MzGAEEDQYCDuAQQyAQhAyAEQRY6ACggBCADQf8BcSILOgApIAtBA0sEQCALIQZBFgwECyAEQShqEKsEIAQgCzoAygwMAgsgCiACQaywxgAQjAcACyAKIAJBzMzGABCMBwwRCyAKIAEoAqQEIgNPDQEgCkEebCIFIAEoAqAEaiALOgACIAogASgCpAQiA08NAiABKAKgBCAFaiAJOgADIAogASgCpAQiA08NAyABKAKgBCAFaiBy/QAAAP0LAAQgAS0AkwFB8gFHDQRBDwshAyAAIDg2AhAgACAaNgIMIAAgOTYCCCAAIEA7AQYgACAGOgAFIAAgAzoABCAAQYCAgIB4NgIADBYLIAogA0HozMYAEIwHAAsgCiADQfjMxgAQjAcACyAKIANBiM3GABCMBwALIARBDGogBEHKDGotAAA6AAAgBCAELwDIDDsBCiAEICgpAAA3A9gYIAQgKEEHaigAADYA3xggBEHPDGooAAAhOSAELQDMDCEGIAQvAM0MIUAgBCgA0wwhGiAEKADXDCE4ID5BB2ogBCgA3xg2AAAgPiAEKQPYGDcAACAEIDg2ABkgBCAaNgAVIAQgOTYAESAEIEA7AA8gBCAGOgAOIAQgCToADQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0ACkEBcUUEQCAELQAnIQsgBEHIDGpBAEGADPwLAAJAAkACQAJAIAlBBEcEQCAKIAEoAqQEIgNPDQEgASgCoAQgBWotABQhAyABLQCWBSECIHT9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIARB+Bhq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAEQegYav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LA9gYIAtBBE8NAiAEQcgYaiABIARB2BhqIA9BASACIANqQf8BcSA6IAtBBHRqIgMvAQQgAy8BBhDqASAELQDJGCEHIAQtAMgYIgJBHUYNAyAEIAQpAcoYNwO4DCAEIARB0BhqKQEANwG+DAwcC0EDIQ4gC0EDSw0DDAULIAogA0GgrsYAEIwHAAsgC0EEQbCuxgAQjAcACyABIAc6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFaiAHOgAUIARB2BhqIgMgAygCACICIAMoAjAiCGsiDiADKAIQIgcgAygCICINayISazYCMCADIAIgCGoiAiAHIA1qIghrNgIgIAMgDiASajYCECADIAIgCGo2AgAgAyADKAIkIgIgAygCFCIIaiIOIAMoAjQiByADKAIEIg1qIhJqNgIEIAMgDSAHayIHIAggAmsiAms2AjQgAyACIAdqNgIUIAMgEiAOazYCJCADIAMoAigiCCADKAIYIg5qIgcgAygCOCINIAMoAggiEmoiFmoiAjYCCCADIBIgDWsiDSAOIAhrIghrNgI4IAMgFiAHazYCKCADIAggDWo2AhggAyADKAIsIg4gAygCHCIHaiINIAMoAjwiEiADKAIMIhZqIiJqIgg2AgwgAyAHIA5rIgcgFiASayISaiIONgIcIAMgEiAHazYCPCADICIgDWsiBzYCLCADIAggAygCACINakEDaiISIAIgAygCBCIWaiIia0EDdTYCCCADIA0gCGtBA2oiCCAWIAJrIgJrQQN1NgIMIAMgAiAIakEDdTYCBCADIBIgImpBA3U2AgAgAyADKAIQIgIgDmtBA2oiCCADKAIUIg0gAygCGCISayIWa0EDdTYCHCADIAIgDmpBA2oiAiANIBJqIg5rQQN1NgIYIAMgCCAWakEDdTYCFCADIAIgDmpBA3U2AhAgAyADKAIgIgIgB2tBA2oiCCADKAIkIg4gAygCKCINayISa0EDdTYCLCADIAIgB2pBA2oiAiANIA5qIg5rQQN1NgIoIAMgCCASakEDdTYCJCADIAIgDmpBA3U2AiAgAyADKAIwIgIgAygCPCIIa0EDaiIOIAMoAjQiByADKAI4Ig1rIhJrQQN1NgI8IAMgAiAIakEDaiICIAcgDWoiCGtBA3U2AjggAyAOIBJqQQN1NgI0IAMgAiAIakEDdTYCMCAEIAQoAtgYNgLIDCAEIAQoAtwYNgKIDSAEIAQoAuAYNgLIDSAEIAQoAuQYNgKIDiAEIAQoAugYNgLIDiAEIAQoAuwYNgKIDyAEIAQoAvAYNgLIDyAEIAQoAvQYNgKIECAEIAQoAvgYNgLIECAEIAQoAvwYNgKIESAEIAQoAoAZNgLIESAEIAQoAoQZNgKIEiAEIAQoAogZNgLIEiAEIAQoAowZNgKIEyAEIAQoApAZNgLIEyAEIAQoApQZNgKIFEEAIQ4MAwsgCiADQcCuxgAQjAcACyAKIAEoAqQEIgJPDQ0gC0EEQaivxgAQjAcACwJAIAlBBEYNACABQQA6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFakEAOgAUDAELIAogA0GIqcYAEIwHAAsgAUEAOgCXBQJAIAogASgCpAQiC08NACABKAKgBCAFakEAOgAVIAFBADoAmAUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABYgAUEAOgCZBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAFyABQQA6AJoFIAogASgCpAQiC08NACABKAKgBCAFakEAOgAYIAFBADoAmwUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABkgAUEAOgCcBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAGiABQQA6AJ0FIAogASgCpAQiC08NACABKAKgBCAFakEAOgAbIAFBADoAngUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABwgBEEoakEAQYAM/AsADAILIAogC0GoqcYAEIwHAAsgOiALQQR0aiEDQQAhDUGXBSESIAQtAAshCANAIAogASgCpAQiAk8NDCAEQdgYaiABIARByAxqIA1qIgsgDyAOIAEoAqAEIAVqLQAVIAEgEmoiIi0AAGpB/wFxIAMvAQAgAy8BAhDqASAELQDYGCICQR1HDRUgBC0A2RghAgJ/AkAgCygCAARAIAsQmgJBASEIIAJBAXENAUEADAILQQAgAkEBcUUNARogCxCaAgtBASEIQQELIRYgCiABKAKkBCICTw0FIAEoAqAEIAVqIBY6ABUgCiABKAKkBCICTw0MIARB2BhqIAEgC0FAayIHIA8gDiABKAKgBCAFai0AFiAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshFiAKIAEoAqQEIgJPDQUgASgCoAQgBWogFjoAFiAKIAEoAqQEIgJPDQwgBEHYGGogASALQYABaiIHIA8gDiABKAKgBCAFai0AFyAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshByAKIAEoAqQEIgJPDQUgASgCoAQgBWogBzoAFyAKIAEoAqQEIgJPDQwgBEHYGGogASALQcABaiILIA8gDiABKAKgBCAFai0AGCAHakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQUgASgCoAQgBWogCzoAGCAiIAs6AAAgDUGAAmohDSASQZYFayASQQFqIRJBBEkNAAtBeCENA0ACQCANQdiuxgBqKAIAIgtBCE0EfyAKIAEoAqQEIgJPDQQgBEHYGGogASAEQcgMakGACEGACiALQQVGIgcbaiIOIA9BAiABKAKgBCAFaiALai0AFCALIBxqIiItAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0XIAQtANkYIQICfwJAIA4oAgAEQCAOEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIA4QmgILQQEhCEEBCyEWIAogASgCpAQiAk8NBiABKAKgBCAFaiALaiAWOgAUIAogASgCpAQiAk8NBCALQQFqIQ5BCSALayICQQAgAkEJTRtBAUYNBSAEQdgYaiABIARByAxqQcAIQcAKIAcbaiISIA9BAiABKAKgBCAFaiAOai0AFCAWakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFyAELQDZGCECAn8CQCASKAIABEAgEhCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiASEJoCC0EBIQhBAQshEiAKIAEoAqQEIgJPDQYgASgCoAQgBWogDmogEjoAFCAiIBI6AAAgC0EIRw0BQQkFIAsLQQlB2K7GABCMBwALIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQYAJQYALIAcbaiISIA9BAiABKAKgBCAFaiALai0AFCAOIBxqIhYtAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0VIAQtANkYIQICfwJAIBIoAgAEQCASEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIBIQmgILQQEhCEEBCyESIAogASgCpAQiAk8NBCABKAKgBCAFaiALaiASOgAUIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQcAJQcALIAcbaiILIA9BAiABKAKgBCAFaiAOai0AFCASakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQQgASgCoAQgBWogDmogCzoAFCAWIAs6AAAgDUEEaiINDQALIAQgCDoACyAEID0pAQA3A7gMIAQgPUEGaikBADcBvgwgBC8ByAwhAyBxIDxB8Av8CgAAIAQgBCkDuAw3A6gMIAQgBCkBvgw3Aa4MIEhBBmogBCkBrgw3AQAgSCAEKQOoDDcBACAEIAM7ASgLIARByAxqIQcgAS8BoAUiJCEFIAEoAqwEInYhDiABKAKwBCIiIQIgASgCuAQiDSELIAEoArwEIkEhEiMAQfACayIDJAAgA0EIakEAQeQC/AsAAkAgEEUEQCADQRhqQf/+/fsHNgIAIANBEGpC//79+/fv37//ADcDACADQv/+/fv379+//wA3AwgMAQsgCkEEdCIIIAJNBEACQCACIAhGDQBBECACIAhrIhYgFkEQTxsiFkUNACADQQhqIAggDmogFvwKAAALAkAgBUEBayAKRgRAIAhBD3IiCCACTw0BIAMgCCAOai0AAEGBgoQIbDYAGAwDCyAIQRBqIgggAk0EQCACIAhGDQNBBCACIAhrIgIgAkEETxsiAkUNAyADQRhqIAggDmogAvwKAAAMAwsgCCACIAJB+OPEABDqBwALIAggAkGY5MQAEIwHAAsgCCACIAJBqOTEABDqBwALIAMgAy0AGCICOgCUAiADIAI6AMABIAMgAjoAbCADIAMtABkiAjoAlQIgAyACOgDBASADIAI6AG0gAyADLQAaIgI6AJYCIAMgAjoAwgEgAyACOgBuIAMgAy0AGyICOgCXAiADIAI6AMMBIAMgAjoAbyAHAn8gCkUEQCADQYEBOgDXAiADQYEBOgDCAiADQYEBOgCtAiADQYEBOgCYAiADQYEBOgCDAiADQYEBOgDuASADQYEBOgDZASADQYEBOgDEASADQYEBOgCvASADQYEBOgCaASADQYEBOgCFASADQYEBOgBwIANBgQE6AFsgA0GBAToARiADQYEBOgAxIANBgQE6ABxBgX9B/wAgEBsMAQsCQCASBEAgEkEBayICRQ0BIAMgCy0AAToAHCACQQFGDQEgAyALLQACOgAxIAJBAkYNASADIAstAAM6AEYgAkEDRg0BIAMgCy0ABDoAWyACQQRGDQEgAyALLQAFOgBwIAJBBUYNASADIAstAAY6AIUBIAJBBkYNASADIAstAAc6AJoBIAJBB0YNASADIAstAAg6AK8BIAJBCEYNASADIAstAAk6AMQBIAJBCUYNASADIAstAAo6ANkBIAJBCkYNASADIAstAAs6AO4BIAJBC0YNASADIAstAAw6AIMCIAJBDEYNASADIAstAA06AJgCIAJBDUYNASADIAstAA46AK0CIAJBDkYNASADIAstAA86AMICIAJBD0YNASADIAstABA6ANcCDAELQQFBAEEAQYjkxAAQ6gcAC0GBf0H/ACAQGyAQRQ0AGiALLQAACzoAACAHQQFqIANBCGpB5AL8CgAAIANB8AJqJAAgCUEBaw4EBAUGBwgLIAogAkHorsYAEIwHAAsgDkEJQfiuxgAQjAcACyAKIAJBiK/GABCMBwALIAogAkG4r8YAEIwHAAtBsH0hCwNAIARByAxqIAtqIgNB5gJqIAQtAMkMOgAAIANB5wJqIAQtAMoMOgAAIANB6AJqIAQtAMsMOgAAIANB6QJqIAQtAMwMOgAAIANB6gJqIAQtAM0MOgAAIANB6wJqIAQtAM4MOgAAIANB7AJqIAQtAM8MOgAAIANB7QJqIAQtANAMOgAAIANB7gJqIAQtANEMOgAAIANB7wJqIAQtANIMOgAAIANB8AJqIAQtANMMOgAAIANB8QJqIAQtANQMOgAAIANB8gJqIAQtANUMOgAAIANB8wJqIAQtANYMOgAAIANB9AJqIAQtANcMOgAAIANB9QJqIAQtANgMOgAAIANB9gJqIAQtANkMOgAAIANB9wJqIAQtANoMOgAAIANB+AJqIAQtANsMOgAAIANB+QJqIAQtANwMOgAAIAtBFWoiCw0ACwwECyA2QRBqIAQtAN0MIgNBgYKECGw2AAAgNUEQaiAELQDyDCILQYGChAhsNgAAIBhBEGogBC0Ahw0iCUGBgoQIbDYAACA0QRBqIAQtAJwNIgJBgYKECGw2AAAgM0EQaiAELQCxDSIIQYGChAhsNgAAIDYgA61CgYKEiJCgwIABfiJ5NwAAIDZBCGogeTcAACA1IAutQoGChIiQoMCAAX4ieTcAACA1QQhqIHk3AAAgGCAJrUKBgoSIkKDAgAF+Ink3AAAgGEEIaiB5NwAAIDQgAq1CgYKEiJCgwIABfiJ5NwAAIDRBCGogeTcAACAzQQhqIAitQoGChIiQoMCAAX4ieTcAACAzIHk3AAAgMkEQaiAELQDGDSIDQYGChAhsNgAAIDFBEGogBC0A2w0iC0GBgoQIbDYAACAwQRBqIAQtAPANIglBgYKECGw2AAAgL0EQaiAELQCFDiICQYGChAhsNgAAIC5BEGogBC0Amg4iCEGBgoQIbDYAACAyIAOtQoGChIiQoMCAAX4ieTcAACAyQQhqIHk3AAAgMSALrUKBgoSIkKDAgAF+Ink3AAAgMUEIaiB5NwAAIDAgCa1CgYKEiJCgwIABfiJ5NwAAIDBBCGogeTcAACAvIAKtQoGChIiQoMCAAX4ieTcAACAvQQhqIHk3AAAgLiAIrUKBgoSIkKDAgAF+Ink3AAAgLkEIaiB5NwAAIBNBEGogBC0Arw4iA0GBgoQIbDYAACAtQRBqIAQtAMQOIgtBgYKECGw2AAAgLEEQaiAELQDZDiIJQYGChAhsNgAAICtBEGogBC0A7g4iAkGBgoQIbDYAACAqQRBqIAQtAIMPIghBgYKECGw2AAAgE0EIaiADrUKBgoSIkKDAgAF+Ink3AAAgEyB5NwAAIC1BCGogC61CgYKEiJCgwIABfiJ5NwAAIC0geTcAACAsQQhqIAmtQoGChIiQoMCAAX4ieTcAACAsIHk3AAAgK0EIaiACrUKBgoSIkKDAgAF+Ink3AAAgKyB5NwAAICpBCGogCK1CgYKEiJCgwIABfiJ5NwAAICogeTcAACApQRBqIAQtAJgPIgNBgYKECGw2AAAgKUEIaiADrUKBgoSIkKDAgAF+Ink3AAAgKSB5NwAADAMLIARByAxqQeUCQRBBAUEBQRUQ4gIMAgsgFCEDIARBKGohC0EAIQkjAEEQayIOJAAgBEHIDGoiQiEFA0AgCSICQQFqIQkgAkECdEEBciFDQXAhEiADIQIgCyEIA0AgEkERaiFEAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgkBAgMEBQYHCAkACyAFIBJqIgdB5QBqIAdB5ABqLQAAIAdBzwBqLQAAIAdBOmotAAAgB0Elai0AACAHQRRqLQAAIAdBE2otAAAgB0ERai0AACAHQRJqLQAAampqampqakEEakH4/wNxQQN2QYGChAhsIhY2AAAgB0HQAGogFjYAACAHQTtqIBY2AAAgB0EmaiAWNgAADAkLIEJB5QJBBCBEIENBFRDiAgwICyAFIBJqIgdB5QBqIAdBFWotAAAgB0ETai0AACIWQQJqIhsgB0EUai0AACIdQQF0ampBFnRBgICAeHEgHSAHQRJqLQAAIh5BAmoiIyAWQQF0ampBDnRBgID8D3FqIBsgB0ERai0AACIWakEGdCAeQQd0akGA/gNxciAHQRBqLQAAIBZBAXRqICNqQQJ2aiIWNgAAIAdB0ABqIBY2AAAgB0E7aiAWNgAAIAdBJmogFjYAAAwHCyAFIBJqIgdB5QBqIAdBzwBqLQAAIhtBAmoiHSAHQeQAai0AACIWIBZBAXRqakECdkGBgoQIbDYAACAHQdAAaiAWIAdBOmotAAAiHkECaiIjaiAbQQF0akECdkGBgoQIbDYAACAHQTtqIB0gB0Elai0AACIWaiAeQQF0akECdkGBgoQIbDYAACAHQSZqICMgB0EQai0AAGogFkEBdGpBAnZBgYKECGw2AAAMBgsgBSASaiIHQRhqLQAAIRYgB0EXai0AACEbIAdBEWotAAAhOyAHQRJqLQAAIR0gB0ETai0AACEeIA4gB0EWai0AACIjIAdBFGotAAAiRkECaiJbIAdBFWotAAAiJUEBdGpqQQJ2OgADIA4gJSAeQQJqIlwgRkEBdGpqQQJ2OgACIA4gHSAeQQF0aiBbakECdjoAASAOIDsgHUEBdGogXGpBAnY6AAAgB0EmaiAOKAIANgAAIA4gJSAbQQJqIh1qICNBAXRqQQJ2OgAEIAdBO2ogDigAATYAACAOIBYgI2ogG0EBdGpBAmpBAnY6AAUgB0HQAGogDigBAjYAACAOIBYgHWogFkEBdGpBAnY6AAYgB0HlAGogDigAAzYAAAwFCyAFIBJqIgdBFGotAAAhOyAHQRNqLQAAIRYgB0HkAGotAAAhRiAHQc8Aai0AACEbIAdBOmotAAAhHSAHQSVqLQAAIR4gDiAHQRJqLQAAIltBAmoiXCAHQRBqLQAAIiNqIAdBEWotAAAiJUEBdGpBAnY6AAwgDiAlIB5BAmoidyAjQQF0ampBAnY6AAsgDiAjIB1BAmoieCAeQQF0ampBAnY6AAogDiAbIB1BAXRqIHdqQQJ2OgAJIAdB0ABqIA4oAAk2AAAgDiBGIBtBAXRqIHhqQQJ2OgAIIAdB5QBqIA4oAgg2AAAgDiA7IFwgFkEBdGpqQQJ2OgAOIA4gFiAlIFtBAXRqakECakECdjoADSAHQSZqIA4oAAs2AAAgB0E7aiAOKAEKNgAADAQLIAUgEmoiB0HRAGogB0EQai0AACIdIAdBEWotAAAiFmpBAWpBAXYiGzoAACAHQSZqIBs6AAAgB0HSAGogFiAHQRJqLQAAIhtqQQFqQQF2Ih46AAAgB0EnaiAeOgAAIAdB5QBqIAdBJWotAAAiHiAHQc8Aai0AACAHQTpqLQAAIiNBAXRqakECakECdjoAACAHQeYAaiAWIB4gHUEBdGpqQQJqQQJ2IiU6AAAgB0HQAGogHSAjIB5BAXRqakECakECdjoAACAHQTtqICU6AAAgB0HnAGogGyAdIBZBAXRqakECakECdiIdOgAAIAdBPGogHToAACAHQegAaiAHQRNqLQAAIh0gFiAbQQF0ampBAmpBAnYiHjoAACAHQRRqLQAAIRYgB0HTAGogGyAdakEBakEBdiIjOgAAIAdBPWogHjoAACAHQShqICM6AAAgB0E+aiAWIBsgHUEBdGpqQQJqQQJ2OgAAIAdBKWogFiAdakEBakEBdjoAAAwDCyAFIBJqIgdB0ABqIAdBEmotAAAiHSAHQRNqLQAAIhZqQQFqQQF2Ihs6AAAgB0EmaiAdIAdBEWotAAAiI2pBAWpBAXY6AAAgB0EnaiAbOgAAIAdB0QBqIBYgB0EUai0AACIbakEBakEBdiIeOgAAIAdBKGogHjoAACAHQdIAaiAbIAdBFWotAAAiHmpBAWpBAXYiJToAACAHQeUAaiAbIB1qIBZBAXRqQQJqQQJ2Ijs6AAAgB0E8aiA7OgAAIAdB5gBqIBYgHkECaiI7IBtBAXRqakECdiJGOgAAIAdBPWogRjoAACAHQTtqICMgFiAdQQF0ampBAmpBAnY6AAAgB0EYai0AACEjIAdBF2otAAAhFiAHQecAaiAHQRZqLQAAIh0gGyAeQQF0ampBAmpBAnYiGzoAACAHQSlqICU6AAAgB0HoAGogIyAdIBZBAXRqakECakECdjoAACAHQdMAaiAWIB1BAXQgO2pqQQJ2OgAAIAdBPmogGzoAAAwCCyAFIBJqIgdB5QBqIAdB5ABqLQAAIiMgB0HPAGotAAAiHWpBAWpBAXY6AAAgB0HnAGogHSAHQTpqLQAAIhZqQQFqQQF2Ihs6AAAgB0HQAGogGzoAACAHQdIAaiAWIAdBJWotAAAiG2pBAWpBAXYiHjoAACAHQTtqIB46AAAgB0E9aiAbIAdBEGotAAAiHmpBAWpBAXYiJToAACAHQeYAaiAWICMgHUEBdGpqQQJqQQJ2OgAAIAdB6ABqIBsgHSAWQQF0ampBAmpBAnYiHToAACAHQdEAaiAdOgAAIAdB0wBqIB4gFiAbQQF0ampBAmpBAnYiFjoAACAHQTxqIBY6AAAgB0ETai0AACEjIAdBEmotAAAhFiAHQT5qIAdBEWotAAAiHSAbIB5BAXRqakECakECdiIbOgAAIAdBJmogJToAACAHQSlqICMgHSAWQQF0ampBAmpBAnY6AAAgB0EoaiAWIB4gHUEBdGpqQQJqQQJ2OgAAIAdBJ2ogGzoAAAwBCyAFIBJqIgdB6ABqIAdB5ABqLQAAIhY6AAAgB0HnAGogFjoAACAHQeYAaiAWOgAAIAdB5QBqIBY6AAAgB0HTAGogFjoAACAHQdIAaiAWOgAAIAdBO2ogB0E6ai0AACIbIAdBzwBqLQAAIh1qQQFqQQF2Ih46AAAgB0EoaiAeOgAAIAdBJmogGyAHQSVqLQAAIh5qQQFqQQF2OgAAIAdB0ABqIBYgHWoiI0EBakEBdiIlOgAAIAdBPWogJToAACAHQTxqIBYgG2ogHUEBdGpBAmpBAnYiJToAACAHQSlqICU6AAAgB0HRAGogIyAWQQF0akECakECdiIWOgAAIAdBPmogFjoAACAHQSdqIB0gHiAbQQF0ampBAmpBAnY6AAALIEJB5QIgCCBDIERBFRDXAiACQQFqIQIgCEFAayEIIBJBBGoiEg0ACyADQQRqIQMgC0GAAmohCyAFQdQAaiEFIAlBBEcNAAsgDkEQaiQADAMLIARByAxqQeUCQRBBFSAQQQBHIApBAEcQgwQLIARByAxqIgNB5QIgBEEoakEBQQFBFRDXAiADQeUCIHBBAUEFQRUQ1wIgA0HlAiBvQQFBCUEVENcCIANB5QIgbkEBQQ1BFRDXAiADQeUCIG1BBUEBQRUQ1wIgA0HlAiBsQQVBBUEVENcCIANB5QIga0EFQQlBFRDXAiADQeUCIGpBBUENQRUQ1wIgA0HlAiBpQQlBAUEVENcCIANB5QIgaEEJQQVBFRDXAiADQeUCIGdBCUEJQRUQ1wIgA0HlAiBmQQlBDUEVENcCIANB5QIgZUENQQFBFRDXAiADQeUCIGRBDUEFQRUQ1wIgA0HlAiBjQQ1BCUEVENcCIANB5QIgYkENQQ1BFRDXAgwBCyAKIAJBmK/GABCMBwALAkAgQQRAIA0gBC0A2Aw6AAAgQUEBayIDQQ9NBEBBAEEQIANB0K3GABDqBwALIA0gBC0A7Qw6AAEgDSAELQCCDToAAiANIAQtAJcNOgADIA0gBC0ArA06AAQgDSAELQDBDToABSANIAQtANYNOgAGIA0gBC0A6w06AAcgDSAELQCADjoACCANIAQtAJUOOgAJIA0gBC0Aqg46AAogDSAELQC/DjoACyANIAQtANQOOgAMIA0gBC0A6Q46AA0gDSAELQD+DjoADiANIAQtAJMPOgAPIA0gBC0AqA86ABAgIiAKQQR0IgNJDQggIiADayILQQ9LDQFBAEEQIAtB4K3GABDqBwALQQBBAEHArcYAEIwHAAsgAyB2aiIDIAQtAJkPOgAAIAMgBC0Amg86AAEgAyAELQCbDzoAAiADIAQtAJwPOgADIAMgBC0AnQ86AAQgAyAELQCeDzoABSADIAQtAJ8POgAGIAMgBC0AoA86AAcgAyAELQChDzoACCADIAQtAKIPOgAJIAMgBC0Aow86AAogAyAELQCkDzoACyADIAQtAKUPOgAMIAMgBC0Apg86AA0gAyAELQCnDzoADiADIAQtAKgPOgAPICRBBHQhDiABKAIIIgkgCiAkIEVsakEEdCIHayEIIAEoAgQhDUEAIRJBACECAkADQCAHIAlLDQEgCEEPTQ0DIAcgDWoiAyAEQcgMaiIFIAJqIgtBFmotAAA6AAAgA0EBaiALQRdqLQAAOgAAIANBAmogC0EYai0AADoAACADQQNqIAtBGWotAAA6AAAgA0EEaiALQRpqLQAAOgAAIANBBWogC0Ebai0AADoAACADQQZqIAtBHGotAAA6AAAgA0EHaiALQR1qLQAAOgAAIANBCGogC0Eeai0AADoAACADQQlqIAtBH2otAAA6AAAgA0EKaiALQSBqLQAAOgAAIANBC2ogC0Ehai0AADoAACADQQxqIAtBImotAAA6AAAgA0ENaiALQSNqLQAAOgAAIANBDmogC0Ekai0AADoAACADQQ9qIAtBJWotAAA6AAAgCCAOayEIIAcgDmohByACQRVqIQIgEkEBaiISQRBJDQALIAEvAaAFIQkgBC0ADCEDIARB2BhqIAogECABKALEBCICIAEoAsgEIgggASgC0AQiDiABKALUBCIHELoEIAUgCiAQIAEoAtwEIg0gASgC4AQiEiABKALoBCIFIAEoAuwEIhYQugQCQAJAAkACQAJAIANBAWsOAwECAwALIARB2BhqQdEAQQhBCSAQQQBHIgMgCkEARyILEIMEIARByAxqQdEAQQhBCSADIAsQgwQMAwsgBCAELQDZGCIDOgDiGCAEIAQtANoYIgs6AOMYIAQgBC8A2xg7AOQYIAQgBCgA3Rg2AOYYIAQgAzoA6xggBCAEKADaGDYA7BggBCAELwDeGDsA8BggBCAELQDgGDoA8hggBCADOgD0GCAEIAs6APUYIAQgBC0A2xg6APYYIAQgBC0A3Bg6APcYIAQgBC8A3RgiAzsA+BggBCAELQDfGCILOgD6GCAEIAQtAOAYIiI6APsYIAQgBCkA2Rg3AP0YIAQgBCgA2Rg2AIYZIAQgAzsAihkgBCALOgCMGSAEICI6AI0ZIAQgBC0A2Rg6AI8ZIAQgBC0A2hg6AJAZIAQgBC0A2xgiAzoAkRkgBCAELQDcGDoAkhkgBCAEKADdGDYAkxkgBCAELQDZGCILOgCYGSAEIAQoANoYNgCZGSAEIAQvAN4YOwCdGSAEIAQtAOAYOgCfGSAEIAs6AKEZIAQgBC0A2hg6AKIZIAQgAzoAoxkgBCAELQDcGDoApBkgBCAELQDdGDoApRkgBCAELQDeGDoAphkgBCAELQDfGDoApxkgBCAELQDgGDoAqBkgBCAELQDJDDoA0gwgBCAELQDKDDoA0wwgBCAELQDLDDoA1AwgBCAELQDMDDoA1QwgBCAELQDNDDoA1gwgBCAELQDODDoA1wwgBCAELQDPDDoA2AwgBCAELQDQDDoA2QwgBCAELQDJDDoA2wwgBCAELQDKDDoA3AwgBCAELQDLDDoA3QwgBCAELQDMDDoA3gwgBCAELQDNDDoA3wwgBCAELQDODDoA4AwgBCAELQDPDDoA4QwgBCAELQDQDDoA4gwgBCAELQDJDDoA5AwgBCAELQDKDDoA5QwgBCAELQDLDDoA5gwgBCAELQDMDDoA5wwgBCAELQDNDDoA6AwgBCAELQDODDoA6QwgBCAELQDPDDoA6gwgBCAELQDQDDoA6wwgBCAELQDJDDoA7QwgBCAELQDKDDoA7gwgBCAELQDLDDoA7wwgBCAELQDMDDoA8AwgBCAELQDNDDoA8QwgBCAELQDODDoA8gwgBCAELQDPDDoA8wwgBCAELQDQDDoA9AwgBCAELQDJDDoA9gwgBCAELQDKDDoA9wwgBCAELQDLDDoA+AwgBCAELQDMDDoA+QwgBCAELQDNDDoA+gwgBCAELQDODDoA+wwgBCAELQDPDDoA/AwgBCAELQDQDDoA/QwgBCAELQDJDDoA/wwgBCAELQDKDDoAgA0gBCAELQDLDDoAgQ0gBCAELQDMDDoAgg0gBCAELQDNDDoAgw0gBCAELQDODDoAhA0gBCAELQDPDDoAhQ0gBCAELQDQDDoAhg0gBCAELQDJDDoAiA0gBCAELQDKDDoAiQ0gBCAELQDLDDoAig0gBCAELQDMDDoAiw0gBCAELQDNDDoAjA0gBCAELQDODDoAjQ0gBCAELQDPDDoAjg0gBCAELQDQDDoAjw0gBCAELQDJDDoAkQ0gBCAELQDKDDoAkg0gBCAELQDLDDoAkw0gBCAELQDMDDoAlA0gBCAELQDNDDoAlQ0gBCAELQDODDoAlg0gBCAELQDPDDoAlw0gBCAELQDQDDoAmA0MAgsgWCAEMQDhGEKBgoSIkKDAgAF+NwAAIFYgBDEA6hhCgYKEiJCgwIABfjcAACBVIAQxAPMYQoGChIiQoMCAAX43AAAgVCAEMQD8GEKBgoSIkKDAgAF+NwAAIFMgBDEAhRlCgYKEiJCgwIABfjcAACBSIAQxAI4ZQoGChIiQoMCAAX43AAAgUSAEMQCXGUKBgoSIkKDAgAF+NwAAIFAgBDEAoBlCgYKEiJCgwIABfjcAACBXIAQxANEMQoGChIiQoMCAAX43AAAgKCAEMQDaDEKBgoSIkKDAgAF+NwAAIE8gBDEA4wxCgYKEiJCgwIABfjcAACBOIAQxAOwMQoGChIiQoMCAAX43AAAgTSAEMQD1DEKBgoSIkKDAgAF+NwAAIEwgBDEA/gxCgYKEiJCgwIABfjcAACAYIAQxAIcNQoGChIiQoMCAAX43AAAgSyAEMQCQDUKBgoSIkKDAgAF+NwAADAELIARB2BhqQdEAQQhBAUEBQQkQ4gIgBEHIDGpB0QBBCEEBQQFBCRDiAgsgBEHYGGoiA0HRACBhQQFBAUEJENcCIARByAxqIgtB0QAgYEEBQQFBCRDXAiADQdEAIF9BAUEFQQkQ1wIgC0HRACBeQQFBBUEJENcCIANB0QAgIUEFQQFBCRDXAiALQdEAICBBBUEBQQkQ1wIgA0HRACBaQQVBBUEJENcCIAtB0QAgWUEFQQVBCRDXAiAOIAcgAiAIIAMgChCOBiAFIBYgDSASIAsgChCOBiAJIB9sIQ4gCUEDdCEWIAogCSBJbGpBA3QhAiABKAIUIgcgJmohIiABKAIgIg0gJmohGyABKAIcIR0gASgCECEeQQAhBUEAIRIDQCACIAdLDQQgDiAiaiIDQQdNDQUgAiANSw0GIA4gG2oiA0EHTQ0HIARByAxqIBJqIgNBCmotAAAhJCACIB5qIgsgBEHYGGogEmoiCUEKai0AADoAACACIB1qIgggJDoAACADQQtqLQAAISQgC0EBaiAJQQtqLQAAOgAAIAhBAWogJDoAACADQQxqLQAAISQgC0ECaiAJQQxqLQAAOgAAIAhBAmogJDoAACADQQ1qLQAAISQgC0EDaiAJQQ1qLQAAOgAAIAhBA2ogJDoAACADQQ5qLQAAISQgC0EEaiAJQQ5qLQAAOgAAIAhBBGogJDoAACADQQ9qLQAAISQgC0EFaiAJQQ9qLQAAOgAAIAhBBWogJDoAACADQRBqLQAAISQgC0EGaiAJQRBqLQAAOgAAIAhBBmogJDoAACADQRFqLQAAIQMgC0EHaiAJQRFqLQAAOgAAIAhBB2ogAzoAACAOIBZrIQ4gAiAWaiECIBJBCWohEiAFQQFqIgVBCEkNAAsgASgCmAQiAiABKAKQBEYEQEEAIQgjAEEgayILJAACQAJAQQQgGSIDKAIAIg5BAXQiCSAJQQRNGyIHrUIefiJ5QiCIUEUNACB5pyINQQBIDQAgCyAOBH8gCyAOQR5sNgIcIAsgAygCBDYCFEEBBUEACzYCGCALQQhqQQEgDSALQRRqEIUHIAsoAghBAUcNASALKAIQIQkgCygCDCEICyAIIAlBmKnGABCTCQALIAsoAgwhCSADIAc2AgAgAyAJNgIEIAtBIGokAAsgASgClAQgAkEebGoiAyAE/QABCv0LAAAgA0EWaiAEQSBqKQEANwAAIANBEGogBEEaaikBADcAACABIAJBAWo2ApgEICZBCGshJiAKQQFqIQogNyA3IHVJIgNqITcgAw0BDAoLCyAHIAkgCUGArsYAEOoHAAtBAEEQIAhB8K3GABDqBwALIAIgByAHQfivxgAQ6gcAC0EAQQggA0HIr8YAEOoHAAsgAiANIA1B6K/GABDqBwALQQBBCCADQdivxgAQ6gcACyADICIgIkGQrsYAEOoHAAsgBCAEKQHaGDcDuAwgBCAEQeAYaikBADcBvgwgBC0A2RghBwsgBCAEKQO4DDcDqAwgBCAEKQG+DDcBrgwgAEEMaiAEKQGuDDcBACAAIAQpA6gMNwEGIAAgBzoABSAAIAI6AAQgAEGAgICAeDYCAAwJC0EREHEiA0UNASADQoGDhoyYsODAgX83AAAgA0EQakGBAToAACADQQhqQoGDhoyYsODAgX83AAAgASgCtAQiCwRAIAEoArgEIAtBARCiBwsgAUERNgK8BCABIAM2ArgEIAFBETYCtARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgCzAQiCwRAIAEoAtAEIAtBARCiBwsgAUEJNgLUBCABIAM2AtAEIAFBCTYCzARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQgH0FAaiEfIElBCGohSSBFQRBqIUUgESARIEpJIgtqIQMgESEQIAsNAAsMAgsAC0H4qMYAEIIIAAsgAS8BogUiR0UNAEEAIQdBASEDA0AgAyELAkAgAS8BoAUiSEUNAEEAIQMDQCADIAcgAS8BoAVsaiIGIAEoApgEIglJBEAgBEHQDGogASgClAQgBkEebGoiBkEIav0AAAD9CwMAIARB3gxqIAZBFmopAAA3AQAgBCAGKQAANwPIDAJAAkAgBEHIDGoiCi0AHSIGQQNNBEAgAS0ALSIJRQ0CIAotAAMhDUE/IAlBACABIAZBBHRqIgYtAD4bIAYsAD1qIgZBACAGQQBKGyAJIAEtAKQFGyIGIAZBP08bIQIgAS0ApgVFDQEgASgC8AMgAmohAiANQQRHDQEgASgCgAQgAmohAgwBCyAGQQRBuNXGABCMBwALQT8gAkEAIAJBAEobIgYgBkE/ThshBiABLQAuIgkEfyAGQf8BcUECQQEgCUEESxt2IghBCSAJa0H/AXEiCSAIIAlJGwUgBgshCSABLwGgBSESAn8CQAJAIAEtAChFBEAgAkEnTA0BQQMMAwsgAkEnTA0BQQIMAgsgAkETTA0AQQIMAQsgAkEATA0BIAJBDkoLIQggEkEDdCEZIBJBBHQhDkEBIRZBASAJQf8BcSIJIAlBAU0bIgkgBkEBdGoiEEEEaiERAkACQAJAAkACQAJAAkAgDUEERgRAIANFDQMMAQsgCi0AAEUEQCAKLQABIRYgAw0BDAILQQAhFiADRQ0DCyADQQR0QQRrIg0gB0EEdCIUIA5saiECIAEoAgQhCiABKAIIIQYCQAJAAkACQAJAAkACQAJAAkAgAS0AKkUEQCACIAZLDQMgBiACayIMQQdLDQEMDwsgAiAGSw0DIAYgAmsiDEEHSw0BDA0LIAggCSARIAIgCmoQ+AIgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEECciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQNyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEFciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQZyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEIciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQlyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEELciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQxyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEOciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQ9yIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgASgCFCIKIANBA3RBBGsiDCAHQQN0IgUgGWxqIgJPDQMMBAsgEUH/AXEiBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBA3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBC3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBD3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgYtAAIgBi0ABWsiAiACQR91IgpzIAprQQF2IAYtAAMiCiAGLQAEIg1rIhQgFEEfdSIUcyAUa0EBdGpPBEAgBkH/AEGAfyAKQfwAQYB/IA0gCmtBA2xB/wBBgH8gAiACQYB/TBsiAiACQf8AThtqIgIgAkGAf0wbIgIgAkH8AE4bQQNqQQN1akGAAWsiCiAKQYB/TBsiCiAKQf8AThtBgAFzOgADIAZB/wBBgH8gDUH7ACACIAJB+wBOG0EEakEDdWtBgAFrIgYgBkGAf0wbIgYgBkH/AE4bQYABczoABAsMBwsgAiAGIAZBuKfGABDqBwALIAIgBiAGQdioxgAQ6gcACyAKIAJrIhRBB00NASABKAIcIQ0gASgCICEGIAggCSARIAEoAhAiDyACahD4AiACIAZLDQMgBiACayIUQQdNDQIgCCAJIBEgAiANahD4AiAKIAwgBUEBciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQJyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBA3IgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEEciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQVyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBBnIgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEHciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCDAQLIAIgCiAKQZinxgAQ6gcAC0EAQQggFEHopsYAEOoHAAtBAEEIIBRB+KbGABDqBwALIAIgBiAGQYinxgAQ6gcACyAWQQFxDQBBACEWDAELIANBBHQhCiAHQQR0Ig0gDmwhFCABKAIEIQYgASgCCCECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAqRQRAIAYgCiAUaiIPaiETQQAhBkEAIAcgEmxBCHQgCmprIQVBACANQQFqIBJsIi5BBHQgCmoiL2shGkEAIA1BAmogEmwiMEEEdCAKaiIxayEMQQAgDUEDaiASbCIyQQR0IApqIjNrIRRBACANQQRqIBJsIjRBBHQgCmoiNWshFkEAIA1BBWogEmwiNkEEdCAKaiI3ayEYQQAgDUEGaiASbCI4QQR0IApqIjlrISZBACANQQdqIBJsIh1BBHQgCmoiHmshIkEAIA1BCGogEmwiOkEEdCAKaiIXayEbQQAgDUEJaiASbCIcQQR0IApqIjxrISdBACANQQpqIBJsIj1BBHQgCmoiPmshKEEAIA1BC2ogEmwiP0EEdCAKaiJAayEpQQAgDUEMaiASbCIkQQR0IApqIkFrISpBACANQQ1qIBJsIkJBBHQgCmoiQ2shK0EAIA1BDmogEmwiREEEdCAKaiIjayEsQQAgDUEPaiASbCIlQQR0IApqIkVrIS0DQCAGIA9qIg0gAksNESACIAVqIg1BB00NFCAIIAkgECAGIBNqIh8QlAQgBiAvaiACSw0QIAIgGmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDFqIAJLDQ8gAiAMaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgM2ogAksNDiACIBRqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA1aiACSw0NIAIgFmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDdqIAJLDQwgAiAYaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgOWogAksNCyACICZqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiAeaiACSw0KIAIgImoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIBdqIAJLDQkgAiAbaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgPGogAksNCCACICdqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA+aiACSw0HIAIgKGoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIEBqIAJLDQYgAiApaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgQWogAksNBSACICpqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiBDaiACSw0EIAIgK2oiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGICNqIAJLDQMgAiAsaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgRWogAksNAiACIC1qIg1BCEkNFCAIIAkgECAOIB9qEJQEIAVBBGshBSAaQQRrIRogDEEEayEMIBRBBGshFCAWQQRrIRYgGEEEayEYICZBBGshJiAiQQRrISIgG0EEayEbICdBBGshJyAoQQRrISggKUEEayEpICpBBGshKiArQQRrISsgLEEEayEsIC1BBGshLSAGQQRqIgZBDEcNAAsMEQsgEEH/AXEhDyAGIAogFGoiPGohPUEAIAcgEmxBCHQgCmprIRogBiANQQFqIBJsIj5BBHQgCmoiLmohP0EAIC5rIQwgBiANQQJqIBJsIkBBBHQgCmoiL2ohJEEAIC9rIRQgBiANQQNqIBJsIkFBBHQgCmoiMGohQkEAIDBrIRYgBiANQQRqIBJsIkNBBHQgCmoiMWohREEAIDFrIRggBiANQQVqIBJsIiNBBHQgCmoiMmohJUEAIDJrISYgBiANQQZqIBJsIkVBBHQgCmoiM2ohH0EAIDNrISIgBiANQQdqIBJsIklBBHQgCmoiNGohSkEAIDRrIRsgBiANQQhqIBJsIktBBHQgCmoiNWohTEEAIDVrIScgBiANQQlqIBJsIk1BBHQgCmoiNmohTkEAIDZrISggBiANQQpqIBJsIk9BBHQgCmoiN2ohUEEAIDdrISkgBiANQQtqIBJsIlFBBHQgCmoiOGohUkEAIDhrISogBiANQQxqIBJsIlNBBHQgCmoiOWohVEEAIDlrISsgBiANQQ1qIBJsIlVBBHQgCmoiHWohVkEAIB1rISwgBiANQQ5qIBJsIldBBHQgCmoiHmohWEEAIB5rIS0gBiANQQ9qIBJsIllBBHQgCmoiOmohWkEAIDprIQ1BdCEGAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAAkAgAiAGIDxqIgVBDGpPBEAgAiAaaiIFQQdLDQEMEwsgBUEMagwRCyAPIAYgPWoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAuakEMaiACSw0PIAIgDGoiBUEISQ0RIA8gBiA/aiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIC9qQQxqIAJLDQ4gAiAUaiIFQQhJDREgDyAGICRqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgMGpBDGogAksNDSACIBZqIgVBCEkNESAPIAYgQmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAxakEMaiACSw0MIAIgGGoiBUEISQ0RIA8gBiBEaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDJqQQxqIAJLDQsgAiAmaiIFQQhJDREgDyAGICVqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgM2pBDGogAksNCiACICJqIgVBCEkNESAPIAYgH2oiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA0akEMaiACSw0JIAIgG2oiBUEISQ0RIA8gBiBKaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDVqQQxqIAJLDQggAiAnaiIFQQhJDREgDyAGIExqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgNmpBDGogAksNByACIChqIgVBCEkNESAPIAYgTmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA3akEMaiACSw0GIAIgKWoiBUEISQ0RIA8gBiBQaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDhqQQxqIAJLDQUgAiAqaiIFQQhJDREgDyAGIFJqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOWpBDGogAksNBCACICtqIgVBCEkNESAPIAYgVGoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAdakEMaiACSw0DIAIgLGoiBUEISQ0RIA8gBiBWaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIB5qQQxqIAJLDQIgAiAtaiIFQQhJDREgDyAGIFhqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOmpBDGogAksNASACIA1qIgVBCEkNESAPIAYgWmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgGkEEayEaIAxBBGshDCAUQQRrIRQgFkEEayEWIBhBBGshGCAmQQRrISYgIkEEayEiIBtBBGshGyAnQQRrIScgKEEEayEoIClBBGshKSAqQQRrISogK0EEayErICxBBGshLCAtQQRrIS0gDUEEayENIAZBBGoiBg0AC0EBIRYMIgsgWUEEdCAKaiAGakEMagwOCyBXQQR0IApqIAZqQQxqDA0LIFVBBHQgCmogBmpBDGoMDAsgU0EEdCAKaiAGakEMagwLCyBRQQR0IApqIAZqQQxqDAoLIE9BBHQgCmogBmpBDGoMCQsgTUEEdCAKaiAGakEMagwICyBLQQR0IApqIAZqQQxqDAcLIElBBHQgCmogBmpBDGoMBgsgRUEEdCAKaiAGakEMagwFCyAjQQR0IApqIAZqQQxqDAQLIENBBHQgCmogBmpBDGoMAwsgQUEEdCAKaiAGakEMagwCCyBAQQR0IApqIAZqQQxqDAELID5BBHQgCmogBmpBDGoLIAIgAkG4qMYAEOoHAAtBAEEIIAVBqKjGABDqBwALICVBBHQgCmogBmohDQwOCyBEQQR0IApqIAZqIQ0MDQsgQkEEdCAKaiAGaiENDAwLICRBBHQgCmogBmohDQwLCyA/QQR0IApqIAZqIQ0MCgsgPUEEdCAKaiAGaiENDAkLIBxBBHQgCmogBmohDQwICyA6QQR0IApqIAZqIQ0MBwsgHUEEdCAKaiAGaiENDAYLIDhBBHQgCmogBmohDQwFCyA2QQR0IApqIAZqIQ0MBAsgNEEEdCAKaiAGaiENDAMLIDJBBHQgCmogBmohDQwCCyAwQQR0IApqIAZqIQ0MAQsgLkEEdCAKaiAGaiENCyANIAIgAkGYqMYAEOoHAAsCQAJAIAEoAhQiCiADQQN0IgwgB0EDdCIFIBlsaiICSQ0AAkACQCAKIAJrIhRBB00NACABKAIcIQ0gASgCICEGIAggCSAQIAEoAhAiDyACahCUBCACIAZLDQMgBiACayIUQQdNDQEgCCAJIBAgAiANahCUBCAKIAVBAXIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUECciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQNyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBBHIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUEFciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQZyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBB3IgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEQQEhFgwEC0EAQQggFEHIp8YAEOoHAAtBAEEIIBRB2KfGABDqBwALIAIgCiAKQfinxgAQ6gcACyACIAYgBkHop8YAEOoHAAsCQCAHRQ0AIAcgDmxBBHQgA0EEdGoiCkEPciENIApBDnIhFCAKQQ1yIQwgCkEMciEFIApBC3IhDyAKQQpyIRogCkEJciEYIApBCHIhJiAKQQdyISIgCkEGciEbIApBBXIhJyAKQQRyISggCkEDciEpIApBAnIhKiAKQQFyISsgASgCCCEGIAEoAgQhAiABLQAqRQRAIAggCSARIAIgBiAKIA4Q+gIgCCAJIBEgAiAGICsgDhD6AiAIIAkgESACIAYgKiAOEPoCIAggCSARIAIgBiApIA4Q+gIgCCAJIBEgAiAGICggDhD6AiAIIAkgESACIAYgJyAOEPoCIAggCSARIAIgBiAbIA4Q+gIgCCAJIBEgAiAGICIgDhD6AiAIIAkgESACIAYgJiAOEPoCIAggCSARIAIgBiAYIA4Q+gIgCCAJIBEgAiAGIBogDhD6AiAIIAkgESACIAYgDyAOEPoCIAggCSARIAIgBiAFIA4Q+gIgCCAJIBEgAiAGIAwgDhD6AiAIIAkgESACIAYgFCAOEPoCIAggCSARIAIgBiANIA4Q+gIgASgCICEGIAEoAhwhAiAIIAkgESABKAIQIg0gASgCFCIUIAcgGWxBA3QgA0EDdGoiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIgCCAJIBEgDSAUIApBAXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBAnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBA3IiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBHIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBB3IiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIMAQsgESACIAYgCiAOEOEFIBEgAiAGICsgDhDhBSARIAIgBiAqIA4Q4QUgESACIAYgKSAOEOEFIBEgAiAGICggDhDhBSARIAIgBiAnIA4Q4QUgESACIAYgGyAOEOEFIBEgAiAGICIgDhDhBSARIAIgBiAmIA4Q4QUgESACIAYgGCAOEOEFIBEgAiAGIBogDhDhBSARIAIgBiAPIA4Q4QUgESACIAYgBSAOEOEFIBEgAiAGIAwgDhDhBSARIAIgBiAUIA4Q4QUgESACIAYgDSAOEOEFCyAWRQ0DIANBBHQhESAHQQR0IQogASgCCCEGIAEoAgQhAiABLQAqRQRAIBJBBnQhFCAKQQRqIBJsQQR0IBFqQQ9qIQ1BfSEFA0AgCCAJIBAgAiAGIA1BD2sgDhDgBCAIIAkgECACIAYgDUEOayAOEOAEIAggCSAQIAIgBiANQQ1rIA4Q4AQgCCAJIBAgAiAGIA1BDGsgDhDgBCAIIAkgECACIAYgDUELayAOEOAEIAggCSAQIAIgBiANQQprIA4Q4AQgCCAJIBAgAiAGIA1BCWsgDhDgBCAIIAkgECACIAYgDUEIayAOEOAEIAggCSAQIAIgBiANQQdrIA4Q4AQgCCAJIBAgAiAGIA1BBmsgDhDgBCAIIAkgECACIAYgDUEFayAOEOAEIAggCSAQIAIgBiANQQRrIA4Q4AQgCCAJIBAgAiAGIA1BA2sgDhDgBCAIIAkgECACIAYgDUECayAOEOAEIAggCSAQIAIgBiANQQFrIA4Q4AQgCCAJIBAgAiAGIA0gDhDgBCANIBRqIQ0gBUEBaiIFDQALIAEoAiAhBiABKAIcIQIgCCAJIBAgASgCECIRIAEoAhQiCiAZIAdBA3RBBHJsIANBA3RqIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEIAggCSAQIBEgCiAOQQFyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQJyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQNyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQRyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQVyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQZyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQdyIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEDAQLIBJBBnQhDSAKQQRqIBJsQQR0IBFqQQ9qIQlBfSEIA0AgECACIAYgCUEPayAOEOEFIBAgAiAGIAlBDmsgDhDhBSAQIAIgBiAJQQ1rIA4Q4QUgECACIAYgCUEMayAOEOEFIBAgAiAGIAlBC2sgDhDhBSAQIAIgBiAJQQprIA4Q4QUgECACIAYgCUEJayAOEOEFIBAgAiAGIAlBCGsgDhDhBSAQIAIgBiAJQQdrIA4Q4QUgECACIAYgCUEGayAOEOEFIBAgAiAGIAlBBWsgDhDhBSAQIAIgBiAJQQRrIA4Q4QUgECACIAYgCUEDayAOEOEFIBAgAiAGIAlBAmsgDhDhBSAQIAIgBiAJQQFrIA4Q4QUgECACIAYgCSAOEOEFIAkgDWohCSAIQQFqIggNAAsMAwtBAEEIIA1BiKjGABDqBwALQQBBCCAMQcioxgAQ6gcAC0EAQQggDEGop8YAEOoHAAsgA0EBaiIDIEhHDQEMAgsLIAYgCUHoqMYAEIwHAAsgB0EBaiEHIAsgCyBHSSIGaiEDIAYNAAsLIAAgAf0AAgD9CwIAIABBIGogAUEgav0AAgD9CwIAIABBEGogAUEQav0AAgD9CwIAIAEoAnQiAARAIBUoAgAgAEECdEEBEKIHCyABKAKQBCIABEAgASgClAQgAEEebEEBEKIHCyBdEL8CIAEoAvAEQYAhQQEQogcgASgCnAQiAARAIAEoAqAEIABBHmxBARCiBwsgASgCqAQiAARAIAEoAqwEIABBARCiBwsgASgCtAQiAARAIAEoArgEIABBARCiBwsgASgCwAQiAARAIAEoAsQEIABBARCiBwsgASgCzAQiAARAIAEoAtAEIABBARCiBwsgASgC2AQiAEUNBCABKALcBCAAQQEQogcMBAsgekIgiKchEiB6QhCIpyEVIHpCCIinIQgLCyAAIA42AhAgACADOgAIIAAgAjsBBiAAIAc6AAUgACALOgAEIABBgICAgHg2AgAgAEEPaiASQRh2rTwAACAAQQ1qIBJBCHatPQAAIAAgEkEYdK0gCEH/AXEgFUEIdHKtQv///weDhD4ACQsgASgCdCIABEAgASgCcCIGQQRrKAIAIgNBeHEiCyAAQQJ0IgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoApAEIgAEQCABKAKUBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAgAiAARAIAEoAgQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCDCIABEAgASgCECIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAIYIgAEQCABKAIcIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAFBmAFqEL8CIAEoAvAEIgZBBGsoAgAiAEF4cUGEIUGIISAAQQNxIgMbSQ0BIANBACAAQaghTxsNAiAGEKICIAEoApwEIgAEQCABKAKgBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAqgEIgAEQCABKAKsBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAK0BCIABEAgASgCuAQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCwAQiAARAIAEoAsQEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAswEIgAEQCABKALQBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKALYBCIARQ0AIAEoAtwEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0BIANBACALIABBJ2pLGw0CIAYQogILAkAgASgC5AQiAARAIAEoAugEIgFBBGsoAgAiBkF4cSIDQQRBCCAGQQNxIgYbIABqSQ0CIAZBACADIABBJ2pLGw0BIAEQogILIARBsBlqJAAPCwwBC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu6pAECEX8BfiMAQbABayIGJAAgAy0AACIPQRh0IAMtAAMiB0EYdCINIA9yIAMtAAEiCkEIdCIRIAMtAAIiCUEQdCIMcnIiCEGA/gNxQQh0ciAMQQh2IAdyciEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACQAJAAkACQCAGAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AAEEBaw4FBAABAgwDCyABQgA3A4ADIAEgAzYC/AIgAUEDOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxLCyACKAIEIQsgASgCCEECRiAPIBFyIAwgDXJyIgNByZCRkgVHcQ0DIAMgASgC2AIiCEcNBAxJCyACKAABIREgAS0AkQMNBCABKALQAiICIANGDQQgAS0AlANBAUZBACARQSBxGw0FIAAgETYCECAAIAI2AgwgACADNgIIIABBADoABCAAQQE2AgAMSQsgCEGJobm6BEcEQCAAQQE2AgAgAEEBOgAEDEkLIAFCADcDgAMgAUEBOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxICyAIQY2U6NAARwRAIABBATYCACAAQQE6AAQMSAsgAUIANwOAAyABQQI6APgCIABBADoACCAAIAU2AgQgAEEANgIADEcLIAAgAzYABSAAQQQ6AAQgAEEBNgIADEYLIAhB5siFogVHIAhByYiFogVHcQ1EAkAgBARAIAZBQGshCCABKALwAiENIAEtAPQCIQwjAEEQayILJAACQAJAIAxBAXFFDQAgDS0AowdBB0YNAAJAIAQoAgwiECgCACISIAQoAgQiDEcEQCAMIAQoAggiESgCACIOSQ0BIAtBBGogDUEBQQAgBCgCACAOaiAMIA5rIBIgDmtBABBCIAstAAQEQCAIIAstAAU6AAEgCEEcOgAADAQLIBAgECgCACALKAIMaiIENgIAIA0tAKMHQQdGBEAgESAENgIAIAhBqAI7AQAMBAsgBCAMRwRAIAhBnAI7AQAMBAsgCEEoOwEAIBEgDEGAgAJrIgRBACAEIAxNGyIEIBEoAgAiCCAEIAhLGzYCAAwDCyAIQagCOwEADAILIA4gDCAMQeCQxQAQ6gcACyAIQagCOwEACyALQRBqJAAgBi0AQSEEIAYtAEAiCEEoRg0BIAAgBikBQjcBBiAAQQxqIAZByABqKQEANwEAIAAgBDoABSAAIAg6AAQgAEEBNgIADEcLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCDEQLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIARBAXENQyAAQQU6AAggAEIANwIADEULIAEtAOwCQQFrDgICAwELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQwsgBiARNgIkIBFBGHYhByARQRB2IQIgEUEIdiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBFB/wFxQckAaw4yAG9vb29vbwFvb29vb29vb29vb29vb29vBwoIbwsCBm8Mb29vCW9vBW9vAwRvb29vbw1vCyAEQf8BcUHEAGsOBQ8Obm4NbgsgBEH/AXFBzABHIAJB/wFxQdQAR3IgB0HFAEdyDW0gASgCCEECRg0zIAEoAuABQYGAgIB4Rg0QIAZB0JjRqgQ2AClBCSECIAZBCToAKAxkCyAEQf8BcUHjAGsOAhEQbAsgBEH/AXFBwgBrIgRFDREgBEEQRg0SDGsLIARB/wFxQcUAayIERQ0VIARBDUYNFAxqCyAHQfMARyAEQf8BcUHIAEdyIAJB/wFxQdkAR3INaSABKAIIQQJGDTogAS0AjAMNOyABLQCcAkECRg0XIAZB8JDlmgc2AClBCSECIAZBCToAKAxgCyAHQcEARyAEQf8BcUHBAEdyIAJB/wFxQc0AR3INaCABKAIIIgJBAkYNOyABLQCMAw08IAJBAUcNFyAGQeeCtYoENgApQQkhAiAGQQk6ACgMXwsgB0HMAEcgBEH/AXFB4wBHciACQf8BcUHUAEdyDWcgASgCCEECRg08IAEtAIwDDT0gASgCNEUNFyAGQeHG0eIENgApQQkhAiAGQQk6ACgMXgsgBEH/AXFByABrDgUXGGZmGWYLIAdB1gBHIARB/wFxQcQAR3IgAkH/AXFBwwBHcg1lIAEoAghBAkYNQCABKAJsRQ0cIAZB7YiNsgU2AClBCSECIAZBCToAKAxcCyAHQcQARyAEQf8BcUHLAEdyIAJB/wFxQccAR3INZCABKAIIQQJGDUEgASgC7AFBgYCAgHhGDRwgBkHilp2iBDYAKUEJIQIgBkEJOgAoDFsLIAdB5gBHIARB/wFxQdgAR3IgAkH/AXFByQBHcg1jIAEoAghBAkYNQSABKAKEAkGBgICAeEYNHCAGQeWwpbIGNgApQQkhAiAGQQk6ACgMWgsgBEH/AXFBwwBrIgRFDRwgBEERRg1HDGILIAdB9ABHIARB/wFxQdQAR3INYSACQf8BcUHYAEYNHAxhCyACQf8BcUHEAEcgB0HSAEdyDWAgASgCCEECRg0CIAZByZCRkgU2AClBCQxaCyACQf8BcUHOAEcgB0HEAEdyDV8MXQsgAkH/AXFBwQBHIAdB1ABHcg1eDFwLAkACQCABKALoAiIEQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMSgsgBEF8cUEERgRAQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEoLIAEoAuQCIgIoAAAiD0UNACACKAAEIggNAQtBEQxYCwJAIARBCEYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJCyACLQAIIgNBAWsiCUH/AXEiB0EPS0GLgQIgB3ZBAXFFcg0AAkACQAJAAkACfyAEQQlGBEBBACEHQaiQyAApAwAiF6ciBEH/AXFBBEcNJCACQQlqIQpBACEMQQAMAQsgAkEJai0AACIMQQZLDQEgBEEKayEHIAJBCmohCkEAQQEgDHRB1QBxDQAaIAxBA0cNAUEBCyECIANBAWsOEAEBAwEDAwMDAwMDAwMDAwIDCyAGIAw6AClBEwxbCyAMQQZNQQBBASAMdEHUAHEbDVkgAkGAgAIgCXZxQQFHDQEMWQsgAg1YCwJAIAdFBEBBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMSgsgCi0AACICDSMgB0EBRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEoLIAotAAEiAg0kIAdBAkYEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxKC0EAIQcCQAJAIAotAAIiAg4CAgEACyAGIAI6AClBGgxaC0EBIQcLAkAgAUEIaiIJKAIAQQJGDQACQCAJKALAASICQYKAgIB4SCACRXJFBEAgCSgCxAEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCzAEiAkGCgICAeEggAkVyRQRAIAkoAtABIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAtgBIgJBgoCAgHhIIAJFckUEQCAJKALcASIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKALkASICQYKAgIB4SCACRXJFBEAgCSgC6AEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgC8AEiAkGCgICAeEggAkVyRQRAIAkoAvQBIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAvwBIgJBgoCAgHhIIAJFckUEQCAJKAKAAiIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKAKgASEEIAkoAqQBIgoEQCAEIQIDQCACKAIAIgsEQCACQQRqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBDGooAgAiCwRAIAJBEGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEYaiECIApBAWsiCg0ACwsgCSgCnAEiAgRAIARBBGsoAgAiCkF4cSILIAJBGGwiAkEEQQggCkEDcSIKG2pJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCrAEhBCAJKAKwASIKBEAgBEEUaiECA0AgAkEEaygCACILBEAgAigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQRBrKAIAIgsEQCACQQxrKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBHGohAiAKQQFrIgoNAAsLIAkoAqgBIgIEQCAEQQRrKAIAIgpBeHEiCyACQRxsIgJBBEEIIApBA3EiChtqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoArgBIQQgCSgCvAEiCgRAIAQhAgNAIAJBEGooAgAiCwRAIAJBFGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEcaigCACILBEAgAkEgaigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQShqKAIAIgsEQCACQSxqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBBGooAgAiCwRAIAJBCGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkE4aiECIApBAWsiCg0ACwsgCSgCtAEiAkUNASAEQQRrKAIAIglBeHEiCiACQThsIgJBBEEIIAlBA3EiCRtqSQ1kIAlBACAKIAJBJ2pLGw0AIAQQogIMAQsMZAsgASADOgDHAiABIAw6AMYCIAFBBDoAxQIgASAHOgDEAiABIAhBGHQgCEGA/gNxQQh0ciAIQQh2QYD+A3EgCEEYdnJyNgLAAiABIA9BGHQgD0GA/gNxQQh0ciAPQQh2QYD+A3EgD0EYdnJyNgK8AiABQQI6ALkCIAFBAjoAnAIgAUECNgKQAiABQYGAgIB4NgKEAiABQYGAgIB4NgL4ASABQYGAgIB4NgLsASABQYGAgIB4NgLgASABQYGAgIB4NgLUASABQoCAgICQgICAgH83AsQBIAFCgICAgMAANwK8ASABQgQ3ArQBIAFCADcCrAEgAUKAgICAwAA3AqQBIAFBADYCmAEgAUEANgJsIAFBADYCSCABQQA2AkAgAUEANgI0IAFBADYCECABQQA2AggMXAsgBiADOgApQRIMVwsgASgC6AIiB0EASA1iIAEoAuQCIQQCQCAHRQRAQQEhAgwBCyAHEHEiAkUNGQsgBwRAIAIgBCAH/AoAAAsgASAHNgLoASABIAI2AuQBIAEgBzYC4AEMTwsgB0HUAEcgAkH/AXFBwQBHcg1bDFkLIAdBzABHIAJB/wFxQdQAR3INWiABKALkAiEEAkACQAJAAkACQAJAAkACQAJAAkACQCABAn8CQAJAAkAgASgC6AIiA0EDTQRAQQAhCUGokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxUCyAEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgA0EEayEDIARBBGohByABKAIARQ0CIAMhDAwBCyADIARqIQdBACEMQQAhA0EAIAEoAgBBAUcNAhoLIAkgASgCBEEBaiIIRw0DIAwhAyAJDAELIAINAUEACzYCBCABQQE2AgAjAEEQayIEJAAgAUHwAmoiAkEAOgAEAkACQEGAgAEQcSIIRQ0AIAhBAEGAgAH8CwBBgBAQcSIMRQ0AIAxBAEGAEPwLACAEQQxqQQA7AQAgBEEANgIIIAIoAgAiAigC+AYiD0EEaygCACIKQXhxQYSAAUGIgAEgCkEDcSILG0kNayALQQAgCkGogAFPGw1sIA8QogIgAigC4AYiCgRAIAIoAuQGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAigC/AYiD0EEaygCACIKQXhxQYQQQYgQIApBA3EiCxtJDWsgC0EAIApBqBBPGw1sIA8QogIgAigC7AYiCgRAIAIoAvAGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAkEAQdgG/AsAIAJBADYClAcgAkEANgKIByACQQA6AIQHIAJBADYCgAcgAiAMNgL8BiACIAg2AvgGIAJCAjcD8AYgAkIANwPoBiACQoCAgIAgNwPgBiACQQE2AtwGIAJBJDYC2AYgAkEAOgCmByACIAQpAwA3A5gHIAJBngdqIAQpAQY3AQAgBEEQaiQADAELAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEPQaiQyAApAwAiF6ciAkH/AXFBBEcNAkEAIQhBACEMQQAhBEEAIQsMBAtBACEICyAGIAg2AjAgBiAJNgIsQQohAiAGQQo6ACgMWgsgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxMCyAHKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQggA0F8cSIKQQRGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQxBACEEQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhDCAKQQhGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQRBACELDAILIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMTAsgBygACCICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEEIApBDEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERgRAQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhCyADQX5xIgJBEEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERg0BIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMTAsgBy8AECIKQQh0IApBCHZyIQ4gAkESRw0CQQAhD0GokMgAKQMAIhenIgJB/wFxQQRHDQELQQAhCkEAIQMMAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAxJCyAHLwASIgJBCHQgAkEIdnIhCiADQRRGBEBBACEPQQAhA0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEkLIActABQiD0ECSw0BIANBFUYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJC0EAIQMCQCAHLQAVIgIOAgEAJgtBASEDCyABKAIIQQJHBEBBESECIAhFIAxFcg0CQRshAiABKALAAiIHIAtJIAwgByALa0tyDQIgASgCvAIiDSAESSAIIA0gBGtLcg0CIBBBAXEgBCALciAHIAxHckUgCCANRnFyDQMgBkEbOgAoDFULQaCSxQAQ3QkACyAGIA86AClBFCECCyAGIAI6ACgMUgsgASADOgC5AiABIA86ALgCIAEgCjsBtgIgASAOOwG0AiABIAs2ArACIAEgBDYCrAIgASAMNgKoAiABIAg2AqQCIAEgCTYCoAIMTQsgB0HUAEcgAkH/AXFByQBHcg1ZIAEoAghBAkYNISABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDE8LIAdBwgBHIAJB/wFxQccAR3INWCABKAIIQQJGDSIgAS0AjAMNIyABLQDFAkEERg0BIAZB86SdkgQ2AClBCSECIAZBCToAKAxPCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSECIAZBCToAKAxQCyAGQfOEpaIFNgApDE0LIAEoAugCIghBAEgNXSABLQDGAiECIAEtAMcCIQMgASgC5AIhBAJAIAhFBEBBASEJDAELIAgQcSIJRQ0UCyAIBEAgCSAEIAj8CgAACyAGAn8CQCAIIAJBAnQoApiPSSIERgRAQQggAyACQQNGGyECQQAhBwwBCyAGIAg2AjAgBiAENgIsIAYgAjoAKUEMDAELA0AgByAJai0AACIDQQFrQf8BcSACQf8BcUkEQCAHQQFqIgcgCEcNAQwjCwsgBiACOgAqIAYgAzoAKUENCyICOgAoIAgNFkEAIQgMTgsCQCABKALoAkUEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxCCyABKALkAi0AACIHQQRJDQAgBiAHOgApQRchAiAGQRc6ACgMTgsgASAHOgDFAgxJCyAHQdMARyACQf8BcUHOAEdyDVUgASgCCEECRg0hIAEoAtQBQYGAgIB4Rg0BIAZB0JjRqgQ2AClBCSECIAZBCToAKAxMCyAHQfQARyACQf8BcUHYAEdyDVQgASgCiAMiBCABKALoAiICTw0BDEgLIAEoAugCIghBAEgNWSABKALkAiEEIAEtAMcCIQMgAS0AxgIhAgJAIAhFBEBBASEHDAELIAgQcSIHRQ0QCyAIBEAgByAEIAj8CgAACwJAAkACQAJAIAIOBAEAAgMACyAGIAI6AClBECECIAZBEDoAKCAIRQ1NIAcgCEEBEKIHDE0LIAhBAk8EQCAIIQIgA0H/AXFBEEkNIwxHCyAGIAg2AjAgBkECNgIsDEQLIAhBBkkNIiADQf8BcUEQTwRAIAEgCDYC3AEMRwsgByAHLQABOgAAIAcgBy0AAzoAASAHIActAAU6AAIgAUEDNgLcAQxGCyABKALgAUGBgICAeEYNIiABLQCMA0UEQCABIAg2AtwBDEYLIAZB9KS5mgU2AClBCAxDCyABIAQgAms2AogDQZ4EIQgCQAJAIAJFDQAgASgC5AIhCUEAIQcDQCAHIAlqIgMtAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhCCAHQdAAa0Gwf0sNAQsgBiAINgIoQR4hBwxLCyABKAIIQQJGDSIgB0F/cyACaiEPIANBAWohCiACIAdBAWoiDmshDUEAIQwgBkEANgKAASAGQoCAgIAQNwJ4IAZB+ABqQQAgBxDvBSAGKAKAASEDA0BBAUECIAkgDGosAAAiCEEATiIQGyILIAYoAnggA2tLBH8gBkH4AGogAyALEO8FIAYoAoABBSADCyAGKAJ8IgRqIhIgEEUEQCASIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiADIAtqIgM2AoABIAcgDEEBaiIMRw0AC0EAIQkgBkEANgJIIAZCgICAgBA3A0AgAiAORwRAIAZBQGtBACANEO8FIAYoAkghCQNAQQFBAiAKLAAAIgJBAE4iCBsiAyAGKAJAIAlrSwR/IAZBQGsgCSADEO8FIAYoAkgFIAkLIAYoAkRqIgcgCAR/IAIFIAcgAkG/AXE6AAEgAkHAAXFBBnZBQHILOgAAIAYgAyAJaiIJNgJIIApBAWohCiAPQQFrIg8NAAsLIAZBPGoiAiAGQYIBai8BADsBACAGIAYoAX42AjggBigCeCIPQYCAgIB4Rg1AIARBCHYhAyAGKQNAIRcgBkGkAWogAi8BADsBACAGIAYoAjg2AqABIAEoAqwBIgogASgCpAFGBEAjAEEgayICJAACQCABQaQBaiIHKAIAIgxBqtWqFUsEf0EABUEEIAxBAXQiCyALQQRNGyILQRhsIQ4gAiAMBH8gAiAMQRhsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0GAlMUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABIApBAWo2AqwBIAEoAqgBIApBGGxqIgIgAzoABSACIAQ6AAQgAiAPNgIAIAIgBigCoAE2AQYgAiAJNgIUIAIgFzcBDCACQQpqIAZBpAFqLwEAOwEADD8LAkAgASgC6AIiBEEDTQRAQQAhCUEAIQNBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDD0LIAEoAuQCIggoAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAyAEQXxxQQRGBEBBACEJQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw9CyAIKAAEIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgBEEIRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDD0LQQAhBwJAAkAgCC0ACCICDgICAQALIAYgAjoAKUEWIQIgBkEWOgAoDEoLQQEhBwsgASAHOgCcAiABIAk2ApgCIAEgAzYClAIMRAsCQAJAIAEoAugCQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMPQsgASgC5AIoAAAiBw0BC0EjIQIgBkEjOgAoDEgLIAFBATYCCCABIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyNgIMDEMLIAEoAugCIgJBA00EQEGokMgAKQMAIhenIgdB/wFxQQRGDUMgBkEvaiAHQRh2OgAAIAYgBzoALCAGQSQ6ACggBiAHQQh2OwAtIAYgF0IgiKciCDYCMAw6CyABKALkAiIEKAAAIQcgAkF8cUEERwRAIAQoAAQhAgw8C0EAIQJBqJDIACkDACIXpyIEQf8BcUEERg07IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMOQsgB0HNAEcgAkH/AXFB0gBHcg1OIAEoAghBAkYNJSABLQCMAw0mIAEoAhBFDQIgBkHjkMnqBDYAKUEJIQIgBkEJOgAoDEULIAdB0ABHIAJB/wFxQcMAR3INTSABKAIIQQJGDSYgAS0AkAJBAkYNAiAGQeOSjYIFNgApQQkhAiAGQQk6ACgMRAsgB0HJAEcgAkH/AXFBzABHcg1MIAEoAghBAkYNJiABKAKYAUUNAiAGQeOYscoENgApQQkhAiAGQQk6ACgMQwsgASgC6AIiA0EDTQRAQQAhB0EAIQJBACEJQQAhA0EAIQhBACEMQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyABKALkAiIEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQIgA0F8cSIHQQRGBEBBACEHQQAhCUEAIQNBACEIQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgABCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciEJIAdBCEYEQEEAIQdBACEDQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAgiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnIhAyAHQQxGBEBBACEHQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAwiCEEYdCAIQYD+A3FBCHRyIAhBCHZBgP4DcSAIQRh2cnIhCCAHQRBGBEBBACEHQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgAECIMQRh0IAxBgP4DcUEIdHIgDEEIdkGA/gNxIAxBGHZyciEMIAdBFEYEQEEAIQdBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoABQiCkEYdCAKQYD+A3FBCHRyIApBCHZBgP4DcSAKQRh2cnIhCyAHQRhGBEBBACEHQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEKAAYIgpBGHQgCkGA/gNxQQh0ciAKQQh2QYD+A3EgCkEYdnJyIQogB0EcRwRAIAQoABwhBww3C0EAIQdBqJDIACkDACIXpyIEQf8BcUEERg02IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNQsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxBCwJAAkACQAJAAkACQCABLQCMA0UEQCABKALoAiIHDQJBACEDQaiQyAApAwAiF6ciAkH/AXFBBEcNAUEBIQJBACEIDAMLIAZB45KNggU2ACkMRQsgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLQQEhAiABKALkAiIELQAAIQggB0EBRgRAQQAhA0GokMgAKQMAIhenIgRB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLIAQtAAEhAyAHQQJGBEBBqJDIACkDACIXpyICQf8BcUEERgRAQQEhAgwCCyAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMOQsgBC0AAiECIAdBA0cNASACRSECQaiQyAApAwAhFwsgF6ciB0H/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiAHOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMNwsCQAJAAkAgBC0AAyIJDgICAQALIAZCgSo3AiwgBkEkOgAoQQAhCAw4C0EBIQkLIAINNSAHQQRGDQEgBkKBKjcCLCAGQSQ6AChBACEIDDYLQQAhCSACRQ00CyABIAkgA0H/AXFBEHRyIAhB/wFxQQh0cjYCkAIMPQsCQAJ/IAEoAugCIgRBA00EQEEAIQlBAEGokMgAKQMAIhenIgJB/wFxQQRGDQEaIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMNgsgASgC5AIiAygAACICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEJIARBfHFBBEYEQEEAQaiQyAApAwAiF6ciAkH/AXFBBEYNARogBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEQQhHDQEgAygABAshByABIAk2ApwBIAFBATYCmAEgASAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZycjYCoAEMPQsgBkKBKjcCLCAGQSQ6AChBACEIDDMLIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMPwsCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AjANFBEAgASgC5AIhAiABKALoAiIHQQFLDQJBACEJQaiQyAApAwAiF6ciA0H/AXFBBEcNAUEAIQMMAwsgBkHtiI2yBTYAKQxMCyAGIAM6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDEALIAIvAAAiA0EIdCADQQh2ciEJIAdBAmsiA0EBSw0BQaiQyAApAwAhF0ECIQcLIBenIgRB/wFxQQRGBEAgAiAHaiADaiEHQQAhCEEAIQMMAgsgBiAEOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw+CyACLwACIgNBCHQgA0EIdnIhCCAHQQRrIgNBAUsNASACQQRqIQdBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgB2ohB0EAIQxBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMPAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQEgAkEGaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMOgsgAi8ABiIDQQh0IANBCHZyIQsgB0EIayIDQQFLDQEgAkEIaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEKQQAhAwwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDgLIAIvAAgiA0EIdCADQQh2ciEKIAdBCmsiA0EBSw0BIAJBCmohB0GokMgAKQMAIRcLIBenIgJB/wFxQQRGBEAgAyAHaiEDQQAhBEEAIQ8MAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw2CyACLwAKIgNBCHQgA0EIdnIhBCACQQxqIQMgB0EMayIPQQFLDQFBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgD2ohD0EAIQNBAAwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDQLIAMvAAAiA0EIdCADQQh2ciEOIAdBfnFBDkcEQCAHQRBrIQMgAkEQaiEPIAIvAA4MAQtBACEDQaiQyAApAwAiF6ciD0H/AXFBBEcNJSACIAdqIQ9BAAshBwJAIAECfyADQQNNBEBBACECQQBBqJDIACkDACIXpyIDQf8BcUEERg0BGiAGQS9qIANBGHY6AAAgBiADOgAsIAZBJDoAKCAGIANBCHY7AC0gBiAXQiCIpyIINgIwDDULIA8oAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAiADQXxxQQRGBEBBAEGokMgAKQMAIhenIgNB/wFxQQRGDQEaIAZBL2ogA0EYdjoAACAGIAM6ACwgBkEkOgAoIAYgA0EIdjsALSAGIBdCIIinIgg2AjAMNQsgA0EIRw0BIA8oAAQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnILIgM2ApQBIAEgAjYCkAEgASAEQf//A3FBAXQ2AowBIAEgCkH//wNxQQF0NgKIASABIAtB//8DcUEBdDYChAEgASAMQf//A3FBAXQ2AoABIAEgDv0QIAdBCHQgB0GA/gNxQQh2cv0aASAJ/RoCIAj9GgP9qQFBAf2rAf0LA3AgAUEBNgJsDDwLIAZCgSo3AiwgBkEkOgAoQQAhCAwyCwJAAkACQCABLQCMA0UEQEECIQIgAS0AxgJBAWsOBgcCAQMHAgMLIAZB4padogQ2ACkMPwsgASgC4AFBgYCAgHhHBEBBASECDAILIAZCgSo3AiwgBkEkOgAoQQAhCAwzC0EGIQILIAEoAugCIgdBAEgNTQJAIAcEQCABKALkAiEDIAcQcSIERQ0FIAcEQCAEIAMgB/wKAAALIAIgB0cNASABIAI2AvQBIAEgBDYC8AEgASACNgLsAQw8CyAGQeKWnaIENgApQSEhAiAGQSE6ACgMPwsgBkHilp2iBDYAKUEhIQIgBkEhOgAoIAQgB0EBEKIHDD4LIAEoAugCIgdBAEgNTCABKALkAiEEAkAgB0UEQEEBIQIMAQsgBxBxIgJFDQMLIAcEQCACIAQgB/wKAAALIAEgBzYCjAIgASACNgKIAiABIAc2AoQCDDkLIAdB0ABHIAJB/wFxQcMAR3INRSABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0mIAEoAugCIgxBAWshDyAMQQJrIQsgASgC5AIiCiAMaiEEQQAhByAMIQMDQCAHIAxGDS0gByAKaiIJQQFqIQggCS0AAEUEQCAHRQ07IANBAWshByAIIQQgAwwsCyAHIA9GDS0gByAKaiECIAgtAABFDSogByALRg0tIAJBAmotAABFDSkgA0EDayEDIAdBA2oiB0HRAEcNAAsMOQsgBkHpho2CBTYAKUEJIQIgBkEJOgAoDDwLIAEoAogDIgMgASgC6AIiAkkEQEEnIQIgBkEnOgAoDDwLIAEgAyACazYCiANBngQhAwJAAkAgAkUNACABKALkAiEEQQAhBwNAIAQgB2otAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhAyAHQdAAa0Gwf0sNAQsgBiADNgIoQR4hAgw8CyAHQQFqIgMgAkYEQCAGQQA2AiwgBkGeCjsBKEEeIQIMPAsgASgCCEECRiIMDQEgAiAHa0ECayEIIAMgBGoiAi0AAA0CQQAgAUEIaiAMGyEJIAJBAWohD0EAIQwgBkEANgJIIAZCgICAgBA3AkAgBkFAa0EAIAcQ7wUgBigCSCECA0BBAUECIAQgDGosAAAiA0EATiILGyIKIAYoAkAgAmtLBH8gBkFAayACIAoQ7wUgBigCSAUgAgsgBigCRGoiDiALBH8gAwUgDiADQb8BcToAASADQcABcUEGdkFAcgs6AAAgBiACIApqIgI2AkggByAMQQFqIgxHDQALIAhBAEgNSiAIRQRAQQEhAgwmCyAIEHEiAg0lCwALQaCUxQAQ3QkACyAGIAg2AjAgBkGeCjsBKEEeIQIMOAsgCSAIQQEQogcMNwsgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDCkLIAFCADcDgAMgAUECOgD4AiAAQQQ6AAggACAFNgIEIABBADYCACAAIAEoAtgCNgAJDEELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQAsgASABKALcAkEEazYC3AIgASgCAEUEQCAAQQE2AgAgAEECOgAEDEALIAEoAgRBAWoiAiADRwRAIAAgAjYCDCAAIAM2AgggAEEKOgAEIABBATYCAAxACyABIAM2AgQgAUEBNgIAIAEtAJEDRQRAIAEgASkDyAJCBHw3A8gCIAEgByAJIAogDyABKALQAkF/cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2c0F/czYC0AILIAFB5siFogU2APkCIAFBBzoA+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMPwsgBiACOgApQRgMNQsgBiACOgApQRkMNAtBwJPFABDdCQALIAYgAjoAKUEVIQIgBkEVOgAoDC8LQdCTxQAQ3QkACyABIAg2AtABIAEgCTYCzAEgASAINgLIAQwpC0Hgk8UAEN0JAAsgBkHzpJ2SBDYAKQwpC0GQlMUAEN0JAAsgByAHLQABOgAAQQEhAgwjCyAGIAg2AjAgBkEGNgIsDCALIAZB9KS5mgU2AClBBgwgC0Hwk8UAEN0JAAtBsJPFABDdCQALIAZB8JDlmgc2ACkMIgtBsJLFABDdCQALIAZB54K1igQ2ACkMIAtBwJHFABDdCQALIAZB4cbR4gQ2ACkMHgtB4JHFABDdCQALIAZB45DJ6gQ2ACkMHAtB8JHFABDdCQALQYCSxQAQ3QkAC0Ggk8UAEN0JAAsgBiAPOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAwNC0HQkcUAEN0JAAtBkJLFABDdCQALIAZB6YaNggU2ACkMFQtB1JXFABDdCQALIAgEQCACIA8gCPwKAAALIAhBCHYhAyAGKQJEIRcgBigCQCEPIAkoArABIgogCSgCqAFGBEAjAEEgayIEJAACQCAJQagBaiIHKAIAIgxBksmkEksEf0EABUEEIAxBAXQiCyALQQRNGyILQRxsIQ4gBCAMBH8gBCAMQRxsNgIcIAQgBygCBDYCFEEEBUEACzYCGCAEQQhqQQQgDiAEQRRqEIUHIAQoAghBAUcNASAEKAIQIQcgBCgCDAsgB0GwlMUAEJMJAAsgBCgCDCEMIAcgCzYCACAHIAw2AgQgBEEgaiQACyABKAK0ASAJIApBAWo2ArABIApBHGxqIgcgFzcCFCAHIA82ARAgByAINgEMIAcgAjYBCCAHIAhBEHY7AQYgByADOgAFIAcgCDoABCAHQQA2AgAMEQsgA0EDayEHIAJBAmohCSACQQNqIQQgA0ECawwBCyADQQJrIQcgAkEBaiEJIAJBAmohBCADQQFrCyAHRQRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQQMAwsgBC0AAA0OQQJrIQcgCUECaiEEDAMLIAdB9ABHIAJB/wFxQdgAR3INGiABKAKIAyIEIAEoAugCIghJDQ4gASgC5AIhAiABIAQgCGs2AogDQZ4EIQwCQAJAIAhFDQAgAiAIaiEJQQAhB0EAIAhrIQMDQCACIAdqIg8tAAAEQCADIAdBAWoiB2oNAQwCCwtBngIhDCAHQdAAa0Gwf0sNAQsgBiAMNgIoQR4hBwwTCyAHQQFqIgMgCEYEQCAGQQA2AiwgBkGeDjsBKEEeIQcMEwsgCCADayIOQQFNBEAgBkEANgIsIAZBngo7AShBHiEHDBMLAkAgCSACIANqIhBBAmoiBEcEQCAQLQAAIQwgEC0AASEKIAcgCGshC0EAIQMDQCADIA9qQQNqLQAARQ0CIAMgC2ogA0EBaiEDQXxHDQALCyAGQZ4EOwEoQR4hBwwTCwJAAkACQAJAIANBAmoiDyAOSyADQX1LckUEQCADQQNqIgsgDksNAQJAIAkgCyAQaiIPRwRAIAMgB2ohCSAIQQRrIQ1BACEIA0AgAiAJakEEai0AAEUNAiAIQQFqIQggDSAJQQFqIglHDQALCyAGQZ4EOwEoQR4hBwwYCyAIIAtqIgkgCEkgCSAOS3INAiAJQQFqIRIgCSAOTw0DIAEoAghBAkYNBCAGQUBrIQ0gAiEJIAwhCyAQIBJqIRMgDiASayECIwBBIGsiDiQAAkAgB0HQAGtBsH9NBEAgDUECNgIAIA1BAToABAwBCyAOQQA2AhwgDkKAgICAEDcCFCAOQRRqQQAgBxDvBSAOKAIcIQwDQEEBQQIgCSwAACIQQQBOIhQbIhIgDigCFCAMa0sEfyAOQRRqIAwgEhDvBSAOKAIcBSAMCyAOKAIYIhVqIhYgFAR/IBAFIBYgEEG/AXE6AAEgEEHAAXFBBnZBQHILOgAAIA4gDCASaiIMNgIcIAlBAWohCSAHQQFrIgcNAAsgDigCFCEQQQAhBwJAAkACQAJAAkACQAJAAkACQAJAAkAgC0H/AXEOAgEABAsgCkH/AXENAUEBIQcLAkAgA0EETwRAIAQoAABBgIGChHhxDQlBBCAEQQNqQXxxIgkgBGsgBCAJRhsiCSADQQRrIgpJBEADQCAEIAlqKAIAQYCBgoR4cQ0LIAlBBGoiCSAKSQ0ACwsgBCAKaigAAEGAgYKEeHFFDQEMCQsgA0UNACAEIANBAWsiCWosAABBAEgNCCAJRQ0AIAQgA0ECayIJaiwAAEEASA0IIAlFDQAgBCADQQNrIglqLAAAQQBIIAlyDQgLIA5BFGogBCADEPsCIA4oAhRBAUcNASAOIA4pAhg3AwhB3IzFAEELIA5BCGpBzIzFAEHojMUAEOAGAAsgDUECNgIAIA1BBToABAwHCyAOKAIcIgpBAEgNASAOKAIYIQQCQCAKRQRAQQEhCwwBCyAKEHEiC0UNAwsgCgRAIAsgBCAK/AoAAAsgDkEUaiAPIAgQ+wIgDigCFEEBRgRAIA1BAjYCACANQQA6AAQMBQsgDigCHCIPQQBIDS0gDigCGCEEAkAgD0UEQEEBIRIMAQsgDxBxIhJFDQMLIA8EQCASIAQgD/wKAAALAn8CQCAHRQRAIAJBAEgNMAJAIAJFBEBBASEJDAELIAIQcSIJRQ0GCyACBEAgCSATIAL8CgAACyAOIAI2AhAgDiAJNgIMIA4gAjYCCCAOQRRqIAkgAhD7AiAOKAIURQ0BQQAhCSACRQ0GIA4pAgynIAJBARCiBwwGCyACQQBIDS8CQCACRQRAQQEhCQwBCyACEHEiCUUNBQsgAgRAIAkgEyAC/AoAAAsgCUEIdiETIAIhBEEADAELIA4pAwgiF0IgiKchCSAXpyIEQYCAgIB4Rg0EIBdCKIinIRNBAQshFCANIBM7AAkgDSAHOgA0IA0gDzYCMCANIBI2AiwgDSAPNgIoIA0gCjYCJCANIAs2AiAgDSAKNgIcIA0gDDYCGCANIBU2AhQgDSAQNgIQIA0gAjYCDCANIAk6AAggDSAENgIEIA0gFDYCACANQQtqIBNBEHY6AAAMBwsgDUECNgIAIA1BBjoABAwFC0HYmsgAEP8HCwALIA1BAjYCACANIAk6AAQgD0UNACASIA9BARCiBwsgCkUNASALIApBARCiBwwBCyANQQI2AgAgDUEAOgAECyAQRQ0AAkAgFUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgEGpPBEAgAkEAIAQgEEEnaksbDQEgFRCiAgwCCwwlCwwlCyAOQSBqJAAgBi0ARCEEIAYoAkAiCUECRg0NIAZBiAFqIgggBkHkAGr9AAIA/QsDACAGQZgBaiIKIAZB9ABqKAIANgIAIAYgBikBRjcDoAEgBiAG/QACVP0LA3ggBiAGQcwAaikBADcBpgEgBi0ARSEPIAEoAsQBIgMgASgCvAFGBEAjAEEgayICJAACQCABQbwBaiIHKAIAIgxByaSSCUsEf0EABUEEIAxBAXQiCyALQQRNGyILQThsIQ4gAiAMBH8gAiAMQThsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0HQksUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABKALAASADQThsaiICQSRqIAj9AAMA/QsCACACIA86AAUgAiAEOgAEIAIgCTYCACACIAYpA6ABNwEGIAIgBv0AA3j9CwIUIAJBDGogBikBpgE3AQAgAkE0aiAKKAIANgIAIAEgA0EBajYCxAEMDAtBAiAPIA5BkJPFABDqBwALIAsgDiAOQYCTxQAQ6gcACyALIAkgDkHwksUAEOoHAAsgEiAOIA5B4JLFABDqBwALQcCSxQAQ3QkAC0EAIQdBqJDIACkDACIXpyICQf8BcUEERw0AIAwNAQwMCyACQf8BcUEDRw0LIBdCIIinIgcoAgAhAiAHQQRqKAIAIgQoAgAiAwRAIAIgAxEDAAsgBCgCBCIDBEAgAiADIAQoAggQogcLIAdBDEEEEKIHDAsLIAZBQGsgBCAHIAEoAogDIgIQ3wEgBigCRCEHAkACQCAGKAJAQQFGBEAgB0GAgICAeHJBgICAgHhGDQ0gBigCSCEJDAELIAYoAkghCSACIAYoAkwiA08NASAHRQ0MCyAJIAdBARCiBwwLCyABIAIgA2s2AogDIAEoAvgBIgJBgoCAgHhIIAJFckUEQCABKAL8ASACQQEQogcLIAEgAzYCgAIgASAJNgL8ASABIAc2AvgBDAoLIAZCgSo3AiwgBkEkOgAoQQAhCAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQlBJCECIAYoAiQhBwJ/AkACQAJAIAYtAENBAWsOAwABAhULIAZBxABqDAILIAhBCGoMAQsgCEEIagstAABBJUcNEUEhIQIgBi0AQ0EDTwRAIAgoAgAhAyAIQQRqKAIAIgQoAgAiDARAIAMgDBEDAAsgBCgCBCIMBEAgAyAMIAQoAggQogcLIAhBDEEEEKIHCwwSCyABIAo2AiwgASALNgIoIAEgDDYCJCABIAg2AiAgASADNgIcIAEgCTYCGCABIAI2AhQgAUEBNgIQIAEgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnI2AjAMBwsgB0UNBiACQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciICIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyIgdyQQBIDQYgASACNgI8IAEgBzYCOCABQQE2AjQMBgtBKCEHIAZBKDoAKAwKCyAGIAQ6AClBHiEHIAZBHjoAKAwJC0ELCyICOgAoIAhFBEBBACEIDAcLIAcgCEEBEKIHDAYLIAEgAjYC3AELIAEgBzYC2AEgASAINgLUAQsgBkEoakEBciEJQSghAgwLC0EnIQcgBkEnOgAoDAMLQQUhAiAGQQU6ACgMAQtBByECIAZBBzoAKAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQkMBAsgBiAGKAApNgJ4IAYgBkEsaigAADYAe0EoIQIgBkEoakEBciEJIAdBKEYNBiAGKAIwIQggByECDAILIAYgDDoAKiAGIAM6AClBDwsiAjoAKCAGIAYoACk2AnggBiAGQSxqKAAANgB7IAZBKGpBAXIhCQsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBkE2aiAGQcYAai0AADoAACAGIAYvAUQ7ATQgBigCQCEHCyAHQRh2IQMMAQsgBkEoakEBciEJQSghAgsgBiADOgAsIAkgBi8BNDsABEECIQMgCUEGaiAGQTZqLQAAOgAAIAYgBzsAKSAGIAdBEHY6ACsgBiAINgIwIAYgAjoAKAJAIAJBKEcEQAJAIAJBI0sNACAGKAIkIgdB5sbR4gRGDQBBAyEDIAdBIHENAgsgBkEaaiICIAYtACs6AAAgBkESaiAGQTNqLQAAOgAAIAYgBi8AKTsBGCAGIAYvADE7ARAgBi0ALCEDIAYoAC0hByAGLQAoIgRBKEYNASAAIAYvARg7AAUgAEEHaiACLQAAOgAAIAYgBigBEDYCCCAGIAZBE2ooAAA2AAsgAEEQaiAGKAALNgAAIAAgBigCCDYADSAAIAc2AAkgACADOgAIIAAgBDoABCAAQQE2AgAMBQsgBigCJCEHCyAGIAYoARA2AgggBiAGQRNqKAAANgALIAYgBigCCDYCHCAGIAYoAAs2AB8gEUHJirmiBEcEQCABQgA3A4ADIAFBAjoA+AILIAAgBzYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAQQA2AgAgAEEQaiAGKAAfNgAADAMLIAZBAjYCRCAGQaSVxQA2AkAgBkIBNwJMIAYgBkEkaq1CgICAgJANhDcDeCAGIAZB+ABqNgJIIAZBQGtBtJXFABCNCAALIAFBADsAjQMgASADNgLYAiAAQQY6AAggAEIANwIADAELIAEgAzYC2AIgAS0AkQNFBEAgAUIENwPIAiABIAcgCSAKIA9B/wFzQQJ0KAKYjUNB////B3MiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnNBf3M2AtACCyABQQA2AugCIAEgCzYC3AICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HJAEcEQCAPQeYARwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HQAGsOKwEAAAAAAAAAAAAAAAAAAAAABgkHAAoABQALAAAACAAABAAAAgMAAAAAAAwACyAPQSBxDRhBIiECDCgLQSIhAiAHQcUARyAKQcwAR3IgCUHUAEdyDSdBAyEMQYAGIQIMIgtBBiEIQQEhAiAKQcIAayIERQ0KIARBEEYNCwwkC0EGIQhBASECIApBxQBrIgRFDQwgBEENRg0LDCMLQQYhCEEBIQIgB0HzAEcgCkHIAEdyIAlB2QBHcg0iQQkhAkEJIQwMHwtBBiEIQQEhAiAHQcEARyAKQcEAR3IgCUHNAEdyDSEMHQtBBiEIQQEhAiAHQcwARyAKQeMAR3IgCUHUAEdyDSAMGwtBBiEIQQEhAiAKQcgAaw4FCQofHwsfC0EGIQhBASECIAdB1gBHIApBxABHciAJQcMAR3INHkEYIQJBGCEMDBsLQQYhCEEBIQwgB0HEAEcgCkHLAEdyIAlBxwBHcg0QQQYhAgwaC0EGIQhBASECIAdB5gBHIApB2ABHciAJQckAR3INHEH/////ByECDBoLQQYhCEEBIQIgCkHDAGsiBEUNCCAEQRFGDQkMGwtBBiEIQQEhAiAHQfQARyAKQdQAR3IgCUHYAEdyDRogAS0AkgNBAXENGkH/////ByECDBgLQQEhDCAHQdQARyAJQckAR3INDEEEIQIMFgsgB0HCAEcNGEEBIQwgCUHHAEYNFQwYC0EBIQwgB0HTAEcgCUHOAEdyDQpBgAIhAgwUCyAHQfQARyAJQdgAR3INFiABLQCSA0EBcQ0WQf////8HIQIMFAsgB0HNAEcgCUHSAEdyDRVBICECQSAhDAwSCyAHQdAARw0UIAlBwwBGDRAMFAsgB0HJAEcNEyAJQcwARg0ODBMLIAdB0ABHIAlBwwBHcg0SIAEtAJMDQQFxDRJB/////wchAgwQCyAHQfQARyAJQdgAR3INESABLQCSA0EBcQ0RQf////8HIQIMDwsgCkHkAEcgCUHBAEdyRSAHQdQARnENAUEBIQJBBiEIIApB4wBrDgIGBRALIApBxABHIAlBwQBHckUgB0HUAEZxDQNBIiECIApBxABrDgUGCBERCRELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAwSCyALQQNLBEBBBSEIQQAhAgwPCyAAQQE2AgAgAEEfOgAEDBELQQYhCAtBASECDAwLIAEtAI0DRQRAIABByYiFogU2AAUgAEEgOgAEIABBATYCAAwPCyABQQE6AIwDQQchCEEAIQIMCwsgB0HUAEcNCiAJQcEARg0CDAoLIAdBzABHIAlB1ABHcg0JQRohAkEaIQwMBgsgB0HUAEcgCUHBAEdyDQoLQaT4xgBBKEHElcUAEOsHAAsgB0HEAEcgCUHOAEdyDQhBACECDAQLIAdB0gBHIAlBxABHcg0HQQ0hAkENIQwMAgtBCCECQQghDAwBC0EEIQJBBCEMCyALIAxJDQELIAIgC0kNAEEGIQhBACECDAELQQYhCEECIQICQAJAAkACQAJAIA9ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAKQcUAaw4EAwQEAgQLIAdBxQBHIApBzABHciAJQdQAR3INAwwECyAHQcwARyAKQeMAR3INAiAJQdQARg0DDAILIAdB0gBHDQEgCUHEAEYNAgwBCyAHQcQARw0AIAlBzgBGDQELIAFCADcDgAMgASADNgD5AiABIAg6APgCIAEgAjoA7AIgACADNgIQIAAgCzYCDCAAQQE6AAggACAFNgIEIABBADYCAAwCC0EhIQILIAAgAzYABSAAIAI6AAQgAEEBNgIACyAGQbABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQdiayAAQ/wcAC4J7AyJ/B30BfiMAQcABayIEJAACQAJAAkACQAJAIAEoAgBBAkcEQCABKAKkAiICIAEoAmRJBEAgAUH0A2ohFiABQbwCaiETIAFB8ABqIRwgAUGwA2ohHSABQYADaiEeIAFBjANqIR8gAUGYA2ohICABQaQDaiEhA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCYCACQShsaiINKQMQIAEpA4ABfCIrIAEpA3BRBEAgASgCuAIiAyANKAIYIgJBB2pBeHFJDQEgAiADSw0CIAEoArQCIQMgDS0AICIbQQFGBEAgBEEYaiADIAIQ+QIgBCgCGCIDQYCAgIB4RwRAIAQoAhwgBEEANgK4ASAEQQE2AqwBIARBuMnBADYCqAEgBEIENwKwASAEQagBahCSByEZIANFDR4gA0EBEKIHDB4LIAQoAiAhGSAEKAIcIhpBgICAgHhGDR0gBCgCJCECIBkhAwtBCSEFAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBAWsODQECAxofHR4bHB8dHgQACyANLQAhDgQEBQYHCQsgDS0AIQ4FCwoJCQwJCyANLQAhIgUOBg4NEBAPDxALIA0tACEOChIRERERERERFBMRCyANLQAhQQtrDgIcHRsLIARBGGogAyACQQMgASgCrAIQ+AQMAwsgBEEYaiADIAJBAyABKAKsAhDmAwwCCyAEQRhqIAMgAiABKAKsAhCgAgwBCyAEQRhqIAMgAiABKAKsAhD+AQsgEyABKAKoAiABKAKsAiAEKAIcIgMgBCgCIBDCBSAEKAIYIgJFDTIgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbakkNOCAIQQAgBSACQSdqSxsNOSADEKICDDILIARBATYCrAEgBEHgycEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQShqIgEgBEGoAWoQsQYgARCOByEBDDALIARBATYCrAEgBEG8ysEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQTRqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEBIAEoAqwCEOYDDC0LIARBGGogAyACQQEgASgCrAIQ+AQMLAsgDSgCAEUEQCAEQQA2ArgBIARBATYCrAEgBEGYysEANgKoASAEQgQ3ArABIARBqAFqEJIHDAELIA0oAggNKiAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHCyEBDCsLIARBGGogAyACQQMgASgCrAIQ5gMMJwsgBEEYaiADIAJBAyABKAKsAhD4BAwmCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgcMAgsgDSgCCEUEQCAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHDAILIA0qAgQhJCABKAKsAiEIIA0qAgwhJyAFQQRGDSQgBEEYaiADIAJBAyAIICQgJxD/AwwlCyAEQQE2AqwBIARB4MrBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEFAayIBIARBqAFqELEGIAEQjgcLIQEMJgsgBEEBNgKsASAEQYjLwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARBzABqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEDIAEoAqwCEPgEDB8LIARBGGogAyACIAEoAqwCEP0BDB4LIA0oAgBFBEAgBEEANgK4ASAEQQE2AqwBIARBmMrBADYCqAEgBEIENwKwASAEQagBahCSBwwBCyANKAIIDRwgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSBwshAQwhCwJAAkACQAJAIA0tACEiCEEKRwRAIAgOAgIDAQsgBEHYAGogAyACIAEoAqwCEMUDDB0LIARBATYCrAEgBEHEy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDcCAEIARB8ABqNgKwASAEQeQAaiIBIARBqAFqELEGIAEQjgchAQwjCyAEQRhqIAMgAkEDIAEoAqwCEPgEDAELIARBGGogAyACQQMgASgCrAIQ5gMLIAEoAqwCIgdBAnQiAkH/////A0sNDCAHQQR0IgNB/f///wdPDQwCQCADRQRAQQQhC0EAIQIMAQsgAxBxIgtFDQ4gASgCrAIhBwsgBEEANgKwASAEIAs2AqwBIAQgAjYCqAEgBwRAQQAhA0EBIQYgBCgCICEIIAQoAhwhAgNAIAZBAWsiDCIFIAhPBEAgDCEGDBsLIAggBWsiBUEAIAUgCE0bIgVBAUYNGiAFQQJGDRlDAACAPyACKgIAIiQgJJSTIAJBBGoqAgAiJyAnlJMgAkEIaioCACIoICiUk0MAAAAAEOAIkSElIAQoAqgBIANrQQNNBEAgBEGoAWogA0EEQQRBBBCkBSAEKAKsASELIAQoArABIQMLIAsgA0ECdGoiBSAlOAIMIAUgKDgCCCAFICc4AgQgBSAkOAIAIAQgA0EEaiIDNgKwASAGQQNqIQYgAkEMaiECIAdBAWsiBw0ACwsgBEHgAGogBEGwAWooAgA2AgAgBCAEKQKoATcDWCAEKAIYIgNFDRkgBCgCHCICQQRrKAIAIghBeHEiBSADQQJ0IgNBBEEIIAhBA3EiCBtqSQ0nIAhBACAFIANBJ2pLGw0oIAIQogIMGQsgDS0AIUELRg0VIARBATYCrAEgBEHwy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDGCAEIARBGGo2ArABIARBkAFqIgEgBEGoAWoQsQYgARCOByEBDB8LIA0tACFBDEYNEyAEQQE2AqwBIARBnMzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3AxggBCAEQRhqNgKwASAEQZwBaiIBIARBqAFqELEGIAEQjgchAQweC0EPIQUMAQtBFSEFCwJAAkACQAJAAkAgDS0AISIIDggBAAMDAgIEBAMLIARBGGogAyACIAUgASgCrAIQ5gMMEwsgBEEYaiADIAIgBSABKAKsAhD4BAwSCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKAIIRQRAIARBADYCuAEgBEEBNgKsASAEQfzJwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKgIEISQgASgCrAIhByANKgIMIScgCEEERg0QIARBGGogAyACIAUgByAkICcQ/wMMEQsgBEEBNgKsASAEQdDMwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARB+ABqIgEgBEGoAWoQsQYgARCOByEBDBwLIA0oAghFBEAgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSByEBDBwLIAEoAqwCIQcgDSoCDCEkIAhBBkYNDSAEQRhqIAMgAiAFIAcgJBCQBAwPCyAEQQE2AqwBIARB+MzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEGEAWoiASAEQagBahCxBiABEI4HIQEMGgsgBEEYaiADIAIgASgCrAIQjgUMAQsgBEEYaiADIAIgASgCrAIQ0wQLIAQoAhwhECABKALoA0UNByABKAKsAiEOIAEoAqgCIRQgBCgCICEPIBMQowUgFkEIakEAOgAAIBZCADcCACATIA4Q0AQgEygCAEEBRw0HIA5BAnQiCSABKAK4AyIDSw0FIAEoArQDIQogDkUNBkEAIQcgCiEFQQAhAgJAAkACQANAAkAgByAPSQRAIAIgEGooAgBBAnQiAyABKAKIAyIGTw0OIAIgCU8NBSAFIAEoAoQDIANBAnRqKAIANgIAIANBAXIiCCABKAKIAyIGSQ0BIAghAwwOCyAPIA9BiLnBABCMBwALIAJBAWogCU8NAiAFQQRqIAEoAoQDIAhBAnRqKAIANgIAIANBAnIiCCABKAKIAyIGTwRAIAghAwwNCyACQQJqIAlPDQEgBUEIaiABKAKEAyAIQQJ0aigCADYCACADQQNyIgMgASgCiAMiBk8NDCAJIAJBA2pLBEAgBUEMaiABKAKEAyADQQJ0aigCADYCACAFQRBqIQUgAkEEaiECIAdBAWoiByAOSQ0BDAsLCyACQQNqIQIMAgsgAkECaiECDAELIAJBAWohAgsgAiAJQai5wQAQjAcACyAEICs3A1ggBEECNgKsASAEQbTNwQA2AqgBIARCAjcCtAEgBEKAgICAoAUiKyAEQdgAaq2ENwMgIAQgKyAcrYQ3AxggBCAEQRhqNgKwASAEQQxqIgEgBEGoAWoQsQYgARCOByEBIABBAToAACAAIAE2AgQMHAsgAEEAOwEADBsLQQAgAiADQYDNwQAQ6gcAC0GQy8EAEP8HCwALQQAgCSADQbi5wQAQ6gcACwJAAkACQAJAAkAgASgC6ANBAUYEQCAEIAEoAsACIBRBAnQgDiAUakECdBDhCCICELgKIgM2AnAgBCAJNgJYIAMgCUcNHyACIAogCRDgCSACQYMISw0DDAYLIAEoAsQCQQFHDQUgCSABKALEAyIDSw0AIAEoAsADIQwgDkUNASAKQQxqIQtBACEHIAwhA0EAIQUDQAJAAkACQCAHIA9JBEAgBSAQaigCAEECdCICIAEoApQDIghPDQEgBUEDaiIIIAlPDQIgCyACQQJ0IgggASgCkANqKAIANgIAIAIgASgClAMiBk8NCSADIAEoApADIAhqKAIANgIAIAJBAXIiCCABKAKUAyIGSQ0DIAghAgwJCyAPIA9BuLjBABCMBwALIAIgCEHIuMEAEIwHAAsgCCAJQdi4wQAQjAcACyADQQRqIAEoApADIAhBAnRqKAIANgIAIAJBAnIiCCABKAKUAyIGTwRAIAghAgwGCyADQQhqIAEoApADIAhBAnRqKAIANgIAIAJBA3IiAiABKAKUAyIGTw0FIANBDGogASgCkAMgAkECdGooAgA2AgAgC0EQaiELIANBEGohAyAFQQRqIQUgB0EBaiIHIA5JDQALDAELQQAgCSADQfi4wQAQ6gcACyAEIAEoAsACIBRBAnQiFSAOIBRqQQJ0IhQQ4QgiAxC4CiICNgJwIAQgCTYCWAJAIAIgCUYEQCADIAogCRDgCSADQYQITwRAIAMQmwcLIAQgASgCyAIgFSAUEOEIIgMQuAoiAjYCcCAEIAk2AlggAiAJRgRAIAMgDCAJEOAJIANBhAhPBEAgAxCbBwsgASgC6ANBAkYNBiABKALMAkUNBiABKALUAkUNBiAORQ0CQQAhEkEAIAlrIRdBAyEDQQAhBQJAAn8CQANAAkACQAJAAkACQAJAAkAgDyASSwRAIANBA2siCCAQaigCAEECdCICIAEoAqADIgZPDRAgCCAJTw0CIAUgCmoiESACQQJ0IiIgASgCnANqKAIANgIAIAJBAXIiCCABKAKgAyIGSQ0BIAghAgwQCyAPIA9B6LfBABCMBwALIANBAmsgCU8NAiARQQRqIAhBAnQiIyABKAKcA2ooAgA2AgAgAkECciIHIAEoAqADIgZPBEAgByECDA8LIANBAWsgCU8NASARQQhqIAdBAnQiGCABKAKcA2ooAgA2AgAgAkEDciILIAEoAqADIgZPBEAgCyECDA8LIAMgCU8NAyARQQxqIAEoApwDIAtBAnRqKAIANgIAIAIgASgCrAMiBk8NCSADIBdqIgtBA0YNBCAFIAxqIhEgASgCqAMgImooAgA2AgAgASgCrAMiBiAIIgJLDQUMCQsgA0EDayEDDAILIANBAWshAwwBCyADQQJrIQMLIAMgCUGouMEAEIwHAAsgA0EDawwDCyALQQJGDQEgEUEEaiABKAKoAyAjaigCADYCACABKAKsAyIGIAciAk0NAyALQQFHBEAgEUEIaiABKAKoAyAYaigCADYCACAFQRBqIQUgA0EEaiEDIBJBAWoiEiAOSQ0BDAcLCyADQQFrDAELIANBAmsLIAlBiLjBABCMBwALIAIgBkH4t8EAEIwHAAsMHgsMHQsgASgC0AIgFSAUEOEIIgMgCiAJELUHIANBhAhPBEAgAxCbBwsgASgC2AIgFSAUEOEIIgIgDCAJELUHIAJBgwhNDQMLIAIQmwcMAgsgAiAGQZi4wQAQjAcACyACIAZB6LjBABCMBwALIAQoAhgiA0UNEAJAIBBBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgEBCiAgwSCwwXCwwXCyADIAZBmLnBABCMBwALIARBGGogAyACIAUgByAkEIIFDAELIARBGGogAyACIAUgByAkICcQ+QQLAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBBWsOCAYBAgAAAwQFAAtBpPjGAEEoQaTMwQAQ6wcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEKcBDBQLIBMgASgCqAIgASgCrAIgBCgCHCIIIAQoAiAQlAEMEwsgASgCrAIiDiABKAKoAiIPaiIUQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAtwCQQFGBEAgASgC4AIQuAogCU8NEyAJELYJIgIgASgC4AIQ3AkgASgC4AIiA0GECEkNASADEJsHDAELIAlFDRIgCRC2CSECCyABIAI2AuACIAFBATYC3AIMEQsgASgCrAIiECABKAKoAiIUaiISQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAuQCQQFGBEAgASgC6AIQuAogCU8NESAJELYJIgIgASgC6AIQ3AkgASgC6AIiA0GECEkNASADEJsHDAELIAlFDRAgCRC2CSECCyABIAI2AugCIAFBATYC5AIMDwsgASgCrAIiDyABKAKoAiIJaiIVQQJ0IQwgBCgCICEFIAQoAhwhCCABKALsAiIHQQFHBH9BAAUgASgC8AIQuAoLIAxJBEAgDBC2CSEDIAwQtgkhAgJAIAdFBEAgA60gAq1CIIaEISsMAQsgAyABKALwAhDcCSACIAEoAvQCENwJIAEoAvACIgdBhAhPBEAgBxCbBwsgA60gAq1CIIaEISsgASgC9AIiA0GECEkNACADEJsHCyABICs3A/ACIAFBATYC7AILIBMQowUgFkEIakEAOgAAIBZCADcCACATIA8Q0AQgASgC7AJFDRAgD0ECdCIKIAEoArgDIgNNBEAgASgCxAMiAyAKTwRAIAEoArQDIRAgASgCwAMhFCAPRQ0PQQAhB0EAIAprIRFBAyEGQQohAkEBIQ4gCCEDAn8CQANAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgBSACQQprSwRAIAJBCWsgBU8NASACQQhrIAVPDQIgBkEDayIYIApJDQMgGCEGDAQLIAJBCmsMDgsgAkEJayECDAkLIAJBCGsMBQtDAAB/QyADQQRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgAyoCACIoiyIlICQgA0EIaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACISQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBBqIgtDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBB2sgBU8NCCACQQZrIAVPDQUgAkEFayAFTw0BIAogBkECa0sEQEMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBGsgBU8NCiACQQNrIAVPDQcgAkECayAFTw0DIAogBkEBa0sEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NDCACIAVPDQkgAkEBaiAFTw0FIAYgCk8NAkMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBDGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NHSACQQNqIAVPDRkgAkEEaiAFTw0VIAYgEWoiC0EDRw0OIAZBA2sMEQsgBkEBayEGDAELIAZBAmshBgsgBiAKQbi3wQAQjAcACyACQQVrDAILIAJBAmsMAQsgAkEBagsgBUGot8EAEIwHAAsgAkEGayECDAELIAJBA2shAgsgAiAFQZi3wQAQjAcACyACQQdrDAILIAJBBGsMAQsgAkEBawsgBUGIt8EAEIwHAAtDAAB/QyADQTRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EwaioCACIoiyIlICQgA0E4aioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBRqIhJDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAXQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBWogBU8NDyACQQZqIAVPDQsgAkEHaiAFTw0HIAtBAkYNAUMAAH9DIANBQGsqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQTxqKgIAIiiLIiUgJCADQcQAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgF0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQhqIAVPDRAgAkEJaiAFTw0MIAJBCmogBU8NCCALQQFHBEBDAAB/QyADQcwAaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANByABqKgIAIiiLIiUgJCADQdAAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACILQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQhqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgC0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACAHQRBqIQcgAkEVaiECIANB1ABqIQMgBkEEaiEGIA4gD0kgDkEBaiEODQEMEwsLIAZBAWsMAQsgBkECawsgCkH4tsEAEIwHAAtBACAKIANByLfBABDqBwALQQAgCiADQdi3wQAQ6gcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEOYBDA8LIAJBBGoMAgsgAkEHagwBCyACQQpqCyAFQei2wQAQjAcACyACQQNqDAILIAJBBmoMAQsgAkEJagsgBUHYtsEAEIwHAAsgAkECagwCCyACQQVqDAELIAJBCGoLIAVByLbBABCMBwALIAQgASgC8AIgCUECdCIOIAwQ4QgiAxC4CiICNgJwIAQgCjYCWAJ/AkACQAJAIAIgCkYEQCADIBAgChDgCSADQYQITwRAIAMQmwcLIAQgASgC9AIgDiAMEOEIIgMQuAoiAjYCcCAEIAo2AlggAiAKRgRAIAMgFCAKEOAJIANBhAhPBEAgAxCbBwsgASgCoAMiAiAMSQRAIAwgAiIDayIHIAEoApgDIAJrSwRAICAgAiAHQQRBBBCkBSABKAKgAyEDCyABKAKcAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCISBEAgBUEAIBL8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2AqADIAEgASgCrAMiAiAMSQR/IAwgAiIDayIHIAEoAqQDIAJrSwRAICEgAiAHQQRBBBCkBSABKAKsAyEDCyABKAKoAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCIMBEAgBUEAIAz8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACADQQFqBSAMCzYCrAMLIA9FDQggCUEEdCEFQQAhAkEAIAprIRVBAyEDQQEhCwJ/AkADQAJAAkACQAJAAn8CQCAKIANBA2siB0sEQCAHIA5qIhIgASgCoAMiBkkNASAJQQJ0IANqQQNrDAILIANBA2shAwwECyABKAKcAyAFaiACaiACIBBqIgcoAgA2AgAgA0ECayAKTw0BIAMgDmoiDEECayIRIAEoAqADIgZJBEAgASgCnAMgBWogAmpBBGogB0EEaigCADYCACADQQFrIApPDQMgDEEBayIXIAEoAqADIgZJBEAgASgCnAMgBWogAmpBCGogB0EIaigCADYCACADIApPDQUgASgCoAMiBiAMSwRAIAEoApwDIAVqIAJqQQxqIAdBDGooAgA2AgAgAyAVaiIMQQNGDQ8gEiABKAKsAyIHSQ0HIAlBAnQgA2pBA2sMCgsgCUECdCADagwCCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAZBuLbBABCMBwALIANBAmshAwwBCyADQQFrIQMLIAMgCkGotsEAEIwHAAsgASgCqAMgBWogAmogAiAUaiIGKAIANgIAIAxBAkYNBSARIAEoAqwDIgdPDQEgASgCqAMgBWogAmpBBGogBkEEaigCADYCACAMQQFGDQYgASgCrAMiByAXSwRAIAEoAqgDIAVqIAJqQQhqIAZBCGooAgA2AgAgAkEQaiECIANBBGohAyALIA9JIAtBAWohCw0BDAwLCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAdBmLbBABCMBwALDB0LDBwLIANBAmsMAgsgA0EBawwBCyADQQNrCyAKQYi2wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgEyAQENAEIAEoAtwCQQFHDQEgASgC5AJFDQECQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAIBBBAnQiBiABKAK4AyIDTQRAIAYgASgCxAMiA0sNASABKAK0AyEVIAEoAsADIQwgBCABKALgAiAUQQJ0Ig8gCRDhCCIDELgKIgI2AnAgBCAGNgJYIAIgBkcNJiAVIAYgAxDhCSADQYQITwRAIAMQmwcLIBBFDQ4gFUEMaiELQQAhAkEDIQdBASEOIAwhCiAIIQMDQAJAAkACQAJAAkACQCACIAVJBEAgAkEBaiIRIAVPDQEgAkECaiIRIAVPDQIgBiAHTQ0DQwAAf0MgA0EEaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIAMqAgAiKIsiJSAkIANBCGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgC0MAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEDaiAFTw0EIAJBBGogBU8NBSACQQVqIhggBUkNBiAYDA0LIAIgBUH4tMEAEIwHAAsgESAFQYi1wQAQjAcACyARIAVBmLXBABCMBwALIAcgBkGotcEAEIwHAAsgAkEDagwQCyACQQRqDAsLQwAAf0MgA0EQaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBDGoqAgAiKIsiJSAkIANBFGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEGaiAFTw0LIAJBB2ogBU8NByACQQhqIAVPDQNDAAB/QyADQRxqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EYaioCACIoiyIlICQgA0EgaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIRQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAKQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgEUEbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQlqIAVPDQwgAkEKaiAFTw0IIAJBC2ogBU8NBEMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhFBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIApBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASARQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBDGogBU8NDSACQQ1qIAVPDQkgAkEOaiAFTw0FQwAAf0MgA0E0aioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBMGoqAgAiKIsiJSAkIANBOGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkEMakMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgC0EQaiELIAdBBGohByAKQRBqIQogA0E8aiEDIAJBD2ohAiAOIBBJIA5BAWohDg0ACwwOC0EAIAYgA0H4tcEAEOoHAAtBACAGIANB6LXBABDqBwALIAJBCGoMAgsgAkELagwBCyACQQ5qCyAFQdi1wQAQjAcACyACQQdqDAILIAJBCmoMAQsgAkENagsgBUHItcEAEIwHAAsgAkEGagwCCyACQQlqDAELIAJBDGoLIAVBuLXBABCMBwALIAQgASgC4AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlgCQAJAIAIgBkYEQCADIBUgBhDgCSADQYQITwRAIAMQmwcLIAQgASgC6AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlggAiAGRw0aIAMgDCAGEOAJIANBhAhPBEAgAxCbBwsgASgClAMiAiAJSQRAIAkgAiIDayIHIAEoAowDIAJrSwRAIB8gAiAHQQRBBBCkBSABKAKUAyEDCyABKAKQAyIKIANBAnQiC2ohBSAHQQJPBEAgCSACQX9zakECdCIJBEAgBUEAIAn8CwALIBJBBHQgAkECdGsgCmogC2pBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2ApQDCyAQRQ0EIBVBDGohCSAUQQR0QQxyIQ5BACEDQQEhB0EAIQICQAJAAkADQCADQQNqIgUgBk8NBSADIA9qQQNqIgUgASgCiAMiCk8NBiABKAKEAyAOaiACaiACIAlqKAIANgIAIAMgFGoiCiABKAKUAyIFTw0DIAEoApADIA9qIAJqIAIgDGoiCygCADYCACABKAKUAyIFIApBAWpLBEAgASgCkAMgD2ogAmpBBGogC0EEaigCADYCACABKAKUAyIFIApBAmpNDQIgASgCkAMgD2ogAmpBCGogC0EIaigCADYCACABKAKUAyIFIApBA2pNDQMgASgCkAMgD2ogAmpBDGogC0EMaigCADYCACADQQRqIQMgAkEQaiECIAcgEEkgB0EBaiEHDQEMCQsLIApBAWohCgwCCyAKQQJqIQoMAQsgCkEDaiEKCyAKIAVB6LTBABCMBwALDBkLIAUgBkHItMEAEIwHAAsgBSAKQdi0wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgDkECdCIMIQIgASgCuAMiAyAMSQRAIAwgAyICayIHIAEoArADIAJrSwRAIB0gAiAHQQRBBBCkBSABKAK4AyECCyABKAK0AyIKIAJBAnQiC2ohBiAHQQJPBEAgDCADQX9zakECdCIQBEAgBkEAIBD8CwALIA5BBHQgA0ECdGsgCmogC2pBBGshBiACIAdqQQFrIQILIAZBADYCACACQQFqIQILIAEgAjYCuAMgASgC3AJFDQACQAJ/AkACQAJAAkACfwJAAkAgAiAMTwRAIAEoArQDIQogDkUNCUEEIQJBASELQQEhBiAKIQcgCCEDAkADQAJAAkACQCAFIAJBBGtLBEAgAkEDayAFTw0BIAJBAmsgBU8NAiAGQQFrIhggDEkNAyAYIQYMBQsgAkEEawwNCyACQQNrIQIMCQsgAkECawwGC0MAAH9DIANBBGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADKgIAIiiLIiUgJCADQQhqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NCCACIAVPDQcgAkEBaiAFTw0DIAYgDE8NAUMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NCSACQQNqIAVPDQYgAkEEaiAFTw0EIAwgBkEBaksEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAZBBGohBiAHQRBqIQcgAkEJaiECIANBJGohAyALIA5JIAtBAWohCw0BDAwLCyAGQQFqIQYLIAYgDEGotMEAEIwHAAtBACAMIAJBuLTBABDqBwALIAJBAWoMAQsgAkEEagsgBUGYtMEAEIwHAAsgAkEDaiECCyACIAVBiLTBABCMBwALIAJBAWsMAQsgAkECagsgBUH4s8EAEIwHAAsgBCABKALgAiAPQQJ0IhAgCRDhCCIDELgKIgI2AnAgBCAMNgJYIAIgDEcNFiADIAogDBDgCSADQYQITwRAIAMQmwcLIAEoAogDIgIgCUkEQCAJIAIiA2siByABKAKAAyACa0sEQCAeIAIgB0EEQQQQpAUgASgCiAMhAwsgASgChAMiCyADQQJ0IgZqIQUgB0ECTwRAIAkgAkF/c2pBAnQiCQRAIAVBACAJ/AsACyAUQQR0IAJBAnRrIAtqIAZqQQRrIQUgAyAHakEBayEDCyAFQQA2AgAgASADQQFqNgKIAwsgDkUNACAPQQR0IQVBACEDQQEhC0EBIQICfwJAAkACQAJAAkACQAJAA0AgDCACQQFrIgdLBEAgASgCiAMiBiAHIBBqTQ0FIAEoAoQDIAVqIANqIAMgCmoiBygCADYCACACIAxPDQQgAiAQaiIJIAEoAogDIgZPDQggASgChAMgBWogA2pBBGogB0EEaigCADYCACACQQFqIAxPDQMgASgCiAMiBiAJQQFqTQ0HIAEoAoQDIAVqIANqQQhqIAdBCGooAgA2AgAgAkECaiAMTw0CIAEoAogDIgYgCUECak0NBiABKAKEAyAFaiADakEMaiAHQQxqKAIANgIAIAJBBGohAiADQRBqIQMgCyAOSSALQQFqIQsNAQwKCwsgAkEBayECDAILIAJBAmohAgwBCyACQQFqIQILIAIgDEHYs8EAEIwHAAsgD0ECdCACakEBawwDCyAPQQJ0IAJqQQJqDAILIA9BAnQgAmpBAWoMAQsgD0ECdCACagsgBkHos8EAEIwHAAsgBCgCGCIDRQ0NIAhBBGsoAgAiAkF4cSIFIANBAnQiA0EEQQggAkEDcSICG2pJDRMgAkEAIAUgA0EnaksbDQAgCBCiAgwNCwwTCyAEQagBaiADIAIgASgCrAIQ1AQgEyABKAKoAiABKAKsAiAEKAKsASIDIAQoArABELcEIAQoAqgBIgJFDQsCQCADQQRrKAIAIghBeHEiBSACQQJ0IgJBBEEIIAhBA3EiCBtqTwRAIAhBACAFIAJBJ2pLGw0BIAMQogIMDQsMEgsMEgsgBEGoAWogAyACIAEoAqwCEJwFIBMgASgCqAIgASgCrAIgBCgCrAEiAyAEKAKwARC2BCAEKAKoASICRQ0KAkAgA0EEaygCACIIQXhxIgUgAkEBdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAwLDBELDBELIAZBAWohBgsgBiAIQcTNwQAQjAcACyATIAEoAqgCIAEoAqwCIAQoAlwiAyAEKAJgEKAFIAQoAlgiAkUNBwJAIANBBGsoAgAiCEF4cSIFIAJBAnQiAkEEQQggCEEDcSIIG2pPBEAgCEEAIAUgAkEnaksbDQEgAxCiAgwJCwwOCwwOCyAEQRhqIAMgAiABKAKsAiANKgIEIA0qAgwQqgMLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQngIgBCgCGCICRQ0FAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAcLDAwLDAwLIARBGGogAyACQQMgCCAkICcQ+QQLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQpAIgBCgCGCICRQ0DAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAULDAoLDAoLIARBGGogAyACQQEgASgCrAIgDSoCBCANKgIMEPkECyAEKAIgIQggBCgCHCEJIBMgASgCqAIgASgCrAIiCxDpBCALBEBBACECQQwhCiAIIQUDQAJAAkACQCABKAK4AyIDIAJBA2pLBEAgBUUNAiACIAlqKAIAIgdB////A3EhDCAHQYCAgIB4cSEGIAdBgICA/AdxIgNBgICA/AdGBEAgBkEQdiAMQQ12ckGABEEAIAwbckGA+AFyIQYMBAsgBkEQdiEGIANBgICAuARLDQEgA0GAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgA0ENdiAMQQ12akGAgAFqIAZyaiEGDAQLIANBgICAmANJDQMgDEGAgIAEciIHQf4AIANBF3YiDGt2IQMgB0EdIAxrIgx2QQFxBH8gA0EDIAx0QQFrIAdxQQBHagUgAwsgBnIhBgwDCyACIAJBBGogA0HIs8EAEOoHAAsgBkGA+AFyIQYMAQsgCCAIQbizwQAQjAcACyABKAK0AyAKaiAGQf//A3E2AgAgCkEQaiEKIAVBAWshBSACQQRqIQIgC0EBayILDQALCyABQQE6APwDIAQoAhgiA0UNAQJAIAlBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgCRCiAgwDCwwICwwICyAAQQE6AAAgACABNgIEIBtFIBpFcg0FIBkgGkEBEKIHDAULAkACQAJAIAEoArgCIgIgDSgCGEEHakF4cSIDTwRAIAFBADYCuAIgAiADayEIIANFDQEgAiADRg0DIAhFDQIgASgCtAIiAiACIANqIAj8CgAADAILQQAgAyACQYSkxwAQ6gcACyACIANGDQELIAEgCDYCuAILIA0pAxghKyABIAEoAqQCQQFqIgI2AqQCIAEgASkDcCArQgd8Qvj///8Pg3w3A3ACQCAbRSAaRXINAAJAIBlBBGsoAgAiA0F4cSICQQRBCCADQQNxIgMbIBpqTwRAIANBACACIBpBJ2pLGw0BIBkQogIgASgCpAIhAgwCCwwHCwwHCyACIAEoAmRJDQALCyAAQYACOwEADAILQYzJwQAQ3QkACyAAQQE6AAAgACAZNgIECyAEQcABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIARBADYCqAFBACAEQfAAaiAEQdgAaiAEQagBakHg+cQAEPUHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGEMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQNyAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGAMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQOCAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvgawMRfwd+AXsjAEGw1QBrIgMkACAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD8EggAq0hFAJAAkACQAJAAkACQAJAAn8CQAJ+AkACQAJAAkACQAJAAkACQEG4nMcAKQMAIhhC/wGDQgRSBEBCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQJBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLIgcbIgYEQCADQfDIAGogBWogA0EYaiAG/AoAAAsgBw0DIBUgBK0iGnwhFSAEIApqIQogFiAGrXwhFiAXIBp9IhdCAFINAAsMAQtCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQFBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLGyIGBEAgA0HwyABqIAVqIANBGGogBvwKAAALIBYgBq18IRYgBCAKaiEKIBUgBK0iGHwhFSAXIBh9IhdQRQ0ACwtB+LbJACgCACINQQBIDQJB+LbJACANQQFqNgIAIApBEUkEQANAIAwoAuy3RCEFIAwoAui3RCEEAkAgDCgC9LdEIgdFBEAgBSAKSw0BIAQgA0HwyABqIAUQ2wcNAQwFCyAFIApLDQAgDCgC8LdEIgYgB2ohDiADQfDIAGohBwNAIAVFDQUgBUEBayEFQaSkxwAgBiAGRSAGIA5GciIIGyEPIActAAAhCSAELQAAIQsgB0EBaiEHIARBAWohBEEAIAZBAWogCBshBiALIAkgDy0AAHFGDQALCyAMQRRqIgxBuANHDQALQfi2yQAgDTYCAEEDIQRBBCEBQQMhCQwLC0EAIApBEEGUpMcAEOoHAAsgGBDSByEBIABBgICAgHg2AgAgACABNgIEDAoLQfi2yQAgDTYCAAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAxB+LfEAGotAAAiBA4EAAMDAQMLQYCAARBxIgZFDRUgBkEAQYCAAfwLAEGAEBBxIgVFDRUgBUEAQYAQ/AsAIANBJGpBADsBACADQQA2AiBBqAcQcSIERQ0VIARBAEHYBvwLACAEQQA2ApQHIARBADYCiAcgBEEAOgCEByAEQQA2AoAHIAQgBTYC/AYgBCAGNgL4BiAEQgI3A/AGIARCADcD6AYgBEKAgICAIDcD4AYgBEEBNgLcBiAEQSQ2AtgGIARBADoApgcgBCADKQMYNwOYByAEQZ4HaiADKQEeNwEAQYABEHEiBkUNFSADQeQCakIANwIAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwLUAiADQQI2ArhFIANBADYCsEUgA0G8xQBqIANBGGoiBUHUAvwKAAAgA0GAAjsAw0ggA0EBOwHASCADQoCAgICCIDcDuEggA0IANwOwSCADQQA6AKhIIANBgAI7AaRIIAMgBDYCoEggA0EAOgCcSCADQQA2AphIIAMgBjYClEggA0GAATYCkEggAyABNgLISCADIAI2AsxIIANCADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4CAAAKCyAAKAIIIgMNCAwJCwJAIAAtAARBAWsOAgAABwsgACgCCCIDDQUMBgsgACgCBCIDQQBKBEAgACgCCCIBQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyADakkNDCACQQAgBCADQSdqSxsNCyABEKICCyAAKAIQIgNFDQkgACgCFCIAKAIAIgEEQCADIAERAwALIAAoAgQiAEUNCSADQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAAakkNCyABRQ0IIAIgAEEnaksNCgwICwJAIAAtAARBAWsOAgAAAgsgACgCCCIDDQAMAQsgACgCDCIBQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyADakkNCSACQQAgBCADQSdqSxsNCCABEKICCwJAQQMgAC0AFCIDQQRrIANBA00bQf8BcQ4EBwcHAAELIANBAWsOAgAABgsgACgCGCIBRQ0FIAAoAhwiA0EEaygCACIAQXhxIgJBBEEIIABBA3EiABsgAWpPBEAgAEUgAiABQSdqTXINBQwHCwwHCyAAKAIMIgFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIANqSQ0GIAJBACAEIANBJ2pLGw0FIAEQogILIAAoAhQiA0UNAyAAKAIYIgAoAgAiAQRAIAMgAREDAAsgACgCBCIARQ0DIANBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIABqSQ0FIAFFIAIgAEEnak1yDQIMBAsgACgCDCIBQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyADakkNBCACQQAgBCADQSdqSxsNAyABEKICCyAAKAIUIgNFDQEgACgCGCIAKAIAIgEEQCADIAERAwALIAAoAgQiAEUNASADQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAAakkNAyABRSACIABBJ2pNcg0ADAILIAMQogILDwtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALmgkCCH8BeyAAIAEoAgQiAjYCPCABKAIAIgUhAyAAKAIIIgcgBUkEQCAFIAciA2siBiAAKAIAIANrSwRAIAAgAyAGQQRBJBCkBSAAKAIIIQMLIAAoAgQhCSAGQQNxIgQEQCADIARqIAUgB2sgBGshBiAJIANBJGxqIQIDQCAC/QwAAAAAAAAAAAAAAAAAAAAA/QsCACACQSBqQQA7AQAgAkEQaiAK/QsCACACQSRqIQIgBEEBayIEDQALIQMLIAcgBWtBfE0EQCAJIANBJGxqIQIDQCAC/QwAAAAAAAAAAAAAAAAAAAAA/QsCACACQSBqQQA7AQAgAkEQaiAK/QsCACACQSRqIAr9CwIAIAJBNGogCv0LAgAgAkHEAGpBADsBACACQcgAaiAK/QsCACACQdgAaiAK/QsCACACQegAakEAOwEAIAJB7ABqIAr9CwIAIAJB/ABqIAr9CwIAIAJBjAFqQQA7AQAgAkGQAWohAiADQQRqIQMgBkEEayIGDQALCyAAKAI8IQILIABBADYCICAAIAM2AggCQAJ/AkACQCACRQRAIABBADYCLAwBCyAFBEBBACEEIAAoAhggBUkEQCAAQRhqQQAgBUECQRIQpAUgACgCICEEIAAoAjwhAgsgBUESbCIDBEAgACgCHCAEQRJsakEAIAP8CwALIABBADYCLCAAIAQgBWo2AiAgAkEBTQ0BQQAhBCAAKAIkIAVJBEAgAEEkakEAIAVBAkEeEKQFIAAoAiwhBCAAKAI8IQILIAVBHmwiAwRAIAAoAiggBEEebGpBACAD/AsACyAAQQA2AjggACAEIAVqNgIsIAJBAk0NBEEAIQQgACgCMCAFSQRAIABBMGpBACAFQQJBKhCkBSAAKAI4IQQLIAVBKmwiAwRAIAAoAjQgBEEqbGpBACAD/AsACyAEIAVqIQQgAEE4agwDC0EAIQQgAEEANgIsIAJBAUcNAQsgAEEANgI4DAILIABBADYCOCACQQJNDQEgAEE4agsgBDYCAAsgACgCFCEEIABBADYCFCAAKAIQIQcCQAJAAkACQCAEBEAgByECA0AgAkEUaigCACIDQQVPBEAgAkEIaigCACIIQQRrKAIAIgZBeHEiCSADQQJ0IgNBBEEIIAZBA3EiBhtqSQ0DIAZBACAJIANBJ2pLGw0EIAgQogILIAJBGGohAiAEQQFrIgQNAAsLIAEtAAhFDQMgBUUEQEEAIQMMAwtBACEDIAAoAgwgBUkEQCAAQQxqQQAgBUEEQRgQpAUgACgCECEHIAAoAhQhAwsgBUEBayAFQQNxIgQEQCAFQXxxIQUgAyAEaiAHIANBGGxqIQIDQCACQQA2AgAgAkEUakEANgIAIAJBGGohAiAEQQFrIgQNAAshAwtBA0kNAiAHIANBGGxqIQIDQCACQQA2AgAgAkHcAGpBADYCACACQcQAakIANwIAIAJBLGpCADcCACACQRRqQgA3AgAgAkHgAGohAiADQQRqIQMgBUEEayIFDQALDAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAAIAM2AhQLC8gGAQR/AkACQCAAKAIMIgIEQCAAKAIQIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAhgiAgRAIAAoAhwiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCPCICBEAgACgCQCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJIIgIEQCAAKAJMIgNBBGsoAgAiAUF4cSIEIAJBAnQiAkEEQQggAUEDcSIBG2pJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCVCICBEAgACgCWCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJgIgJBgICAgHhyQYCAgIB4RwRAIAAoAmQiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCbCICBEAgACgCcCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJ4IgIEQCAAKAJ8IgNBBGsoAgAiAUF4cSIEIAJBAnQiAkEEQQggAUEDcSIBG2pJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsCQCAAKAKEASICQYCAgIB4Rg0AIAIEQCAAKAKIASIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNAiABQQAgBCACQSdqSxsNAyADEKICCyAAKAKQASICBEAgACgClAEiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQIgAUEAIAQgAkEnaksbDQMgAxCiAgsgACgCnAEiAkUNACAAKAKgASIAQQRrKAIAIgNBeHEiASACQQJ0IgJBBEEIIANBA3EiAxtqSQ0BIANBACABIAJBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL3xADB38CfgF7IwBBIGsiBSQAAkACQCAAKAIAIgJFBEAgACgCECIARQ0BIABBk7PFAEEBEJcDIQIMAgsCQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIGTwRAIAAoAhAiAkUNASACQeqyxQBBEBCXA0UNAQwHCyAAIARBAWoiATYCCCAFQQhqIAIgBGotAAAiAxDnByAFKAIIIgcEQCAAKAIQIgBFDQggACAHIAUoAgwQlwMhAgwJCyAAIAAoAgxBAWoiBzYCDCAHQfUDTwRAIAAoAhAiAgRAIAJB+rLFAEEZEJcDDQgLIABBAToABAwGCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBwQBrDhcCBg8FDwQPDw8PDw8PDwEBAAACAw8PBw8LIAAoAhAiBARAQQEhAiAEQayzxQBBARCXAw0VIAAoAgAiAkUNCSAAKAIEIQYgACgCCCEBCyABIAZPDQggASACai0AAEHMAEcNCCAAIAFBAWo2AgggBUEQaiAAENkEIAUtABBFDQcgBS0AESEBIAAoAhAiAwRAQQEhAiADQfqyxQBB6rLFACABQQFxIgMbQRlBECADGxCXAw0VCyAAIAE6AAQMEQsgACgCECIBBEBBASECIAFBsrPFAEEBEJcDDRQLIANB0ABHDQggACgCECICRQ0JIAJBs7PFAEEGEJcDDREMCQsgACgCECIBBEBBASECIAFB6LLFAEEBEJcDDRMLQQEhAiAAEIYCDRIgA0HBAEYEQCAAKAIQIgEEQCABQbmzxQBBAhCXAw0UCyAAQQEQ1QENEwsgACgCECIBRQ0OIAFB6bLFAEEBEJcDDRIMDgsgACgCECIBBEBBASECIAFBu7PFAEEBEJcDDRILIAUgABC3BkEBIQIgBSgCAEEBcQ0RIAUoAgRBAUYEQCAAKAIQIgFFDQ4gAUG8s8UAQQEQlwMNEgsgACgCECIBRQ0NIAFB3o7IAEEBEJcDDREMDQtBACECIwBBEGsiASQAAkACQAJAAkAgACgCAEUEQCAAKAIQIgMNAQwECyABIABBxwAQrAYgAS0AAEEBRgRAIAEtAAEhAyAAKAIQIgQEQEEBIQIgBEH6ssUAQeqyxQAgA0EBcSIEG0EZQRAgBBsQlwMNBQsgACADOgAEQQAhAiAAQQA2AgAMBAsgACgCECICBEAgASkDCCIJUA0DIAJB+bTFAEEEEJcDDQIDQCAIIAlRBEAgACgCECIDRQ0FQQEhAiADQf20xQBBAhCXA0UNBQwGCwJAIAhQDQAgACgCECICRQ0AIAJB55DGAEECEJcDDQQLQQEhAiAAIAAoAhRBAWo2AhQgCEIBfCEIIABCARCCBkUNAAsMBAsgABDOAiECDAMLIANBk7PFAEEBEJcDIQIMAgtBASECDAELIAAQzgIhAiAAIAAoAhQgCadrNgIUCyABQRBqJAAgAg0ODAwLIAAoAhAiAgRAIAJBvbPFAEEEEJcDDQ4LQQEhAkEAIQEjAEEQayIDJAACQAJAAkACQCAAKAIARQRAIAAoAhAiBA0BDAQLIAMgAEHHABCsBiADLQAAQQFGBEAgAy0AASEEIAAoAhAiBgRAQQEhASAGQfqyxQBB6rLFACAEQQFxIgYbQRlBECAGGxCXAw0FCyAAIAQ6AARBACEBIABBADYCAAwECyAAKAIQIgEEQCADKQMIIglQDQMgAUH5tMUAQQQQlwMNAgNAIAggCVEEQCAAKAIQIgRFDQVBASEBIARB/bTFAEECEJcDRQ0FDAYLAkAgCFANACAAKAIQIgFFDQAgAUHnkMYAQQIQlwMNBAtBASEBIAAgACgCFEEBajYCFCAIQgF8IQggAEIBEIIGRQ0ACwwECyAAEPkDIQEMAwsgBEGTs8UAQQEQlwMhAQwCC0EBIQEMAQsgABD5AyEBIAAgACgCFCAJp2s2AhQLIANBEGokACABDQ8gACgCACIDRQ0GIAAoAggiASAAKAIETw0GIAEgA2otAABBzABHDQYgACABQQFqNgIIIAVBEGogABDZBCAFLQAQRQ0IIAUtABEhASAAKAIQIgMEQCADQfqyxQBB6rLFACABQQFxIgMbQRlBECADGxCXAw0QCyAAIAE6AAQMDAsjAEEgayICJAACQAJAIAAoAgBFBEAgACgCECIBRQ0BIAFBk7PFAEEBEJcDIQEMAgsgAiAAEK8GIAIoAgBFBEAgACgCECIDBEBBASEBIANB+rLFAEHqssUAIAItAARBAXEiAxtBGUEQIAMbEJcDDQMLIAAgAv0AAgD9CwIADAELIAAoAhBFDQAgAP0AAgAhCiAAIAL9AAIA/QsCACACIAr9CwMQIAAQhgIhASAAIAL9AAMQ/QsCAAwBC0EAIQELIAJBIGokACABDQwMCgtBASECIAAQhgINDSAAKAIQIgEEQCABQcGzxQBBBBCXAw0OCyAAEK0EDQ0MCQsgBSkDGCIIUA0AIAAgCBCCBg0KIAAoAhAiAUUNAEEBIQIgAUGts8UAQQEQlwMNDAsgA0HSAEYNBiAAKAIQIgJFDQYgAkGus8UAQQQQlwMNCQwGCyAAKAIQIgJFDQAgAkGus8UAQQQQlwMNCAsgABCGAg0HDAULIAAoAhAiAUUNACABQeqyxQBBEBCXAw0IC0EAIQIgAEEAOgAEIABBADYCAAwHCyAFKQMYIghQDQIgACgCECICBEAgAkHwyccAQQMQlwMNBQsgACAIEIIGDQQMAgsgACAENgIIIABBABDMAQ0DDAELIAAQhgINAgtBACECIAAoAgBFDQMgACAAKAIMQQFrNgIMDAMLQQAhAiAAQQA2AgAMAgtBASECDAELQQAhAgsgBUEgaiQAIAILsB0DB34PfwF7IAEoAgQiCiACKQMQIgYgAikDCCIIIAIpAwAiCSABKQMYhSIDQtii0e/CqeW/LX4gA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhELSgaqbq/qC16d/fiIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEhYUiA0LYotHvwqnlvy1+IANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhIWFIgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhCADQtii0e/CqeW/LX6FIgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgASkDECIEQn+FfiIFQjiGIAVCgP4Dg0IohoQgBUKAgPwHg0IYhiAFQoCAgPgPg0IIhoSEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISEIAMgBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhH6FIAOJIgencSEMIAdCGYhC/wCDQoGChIiQoMCAAX4hBSABKAIAIQ0CQANAAkAgDCANaikAACIEIAWFIgNCf4UgA0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIDUEUEQANAAkAgDSADeqdBA3YgDGogCnFBBnRrIgtBQGopAwAgCVINACALQThrKQMAIAhSDQAgC0EwaykDACAGUQ0DCyADQgF9IAODIgNQRQ0ACwsgBCAEQgGGg0KAgYKEiJCgwIB/g1BFDQIgDCAPQQhqIg9qIApxIQwMAQsLIAAgATYCBCAAIAs2AgAgAEEANgIgDwsgASgCCEUEQAJAIwBBIGsiESQAIBEgAUEQajYCACABKAIMIQwgESARNgIEAkACQAJAAkACQAJAAkACQAJ/AkAgDEEBaiILBEAgASgCBCIUIBRBAWpBA3ZBB2wgFEEISRsiCkEBdiALSQRAIApBAWoiCiALIAogC0sbIgtBD0kNAiALQf////8BTQRAQX8gC0EDdEEHbkEBa2d2IgtB/v//H0sNBSALQQFqDAQLDAsLIBFBBGohFkEAIQogASINIA0oAgRBAWoiEAR/IA0oAgAhDwJAIBBBA3YgEEEHcUEAR2oiDEECTwRAIAxB/v///wNxIg4hCyAPIQoDQCAKIAr9AAMAIhn9TUEH/c0B/QwBAQEBAQEBAQEBAQEBAQEB/U4gGf0Mf39/f39/f39/f39/f39/f/1Q/c4B/QsDACAKQRBqIQogC0ECayILDQALIAwgDkYNASAOQQN0IQogDEEBcSEMCyAKIA9qIQoDQCAKIAopAwAiA0J/hUIHiEKBgoSIkKDAgAGDIANC//79+/fv37//AIR8NwMAIApBCGohCiAMQQFrIgwNAAsLAkAgEEEITwRAIA8gEGogDykAADcAAAwBCyAQRQ0AIA9BCGogDyAQ/AoAAAtBASELQQAhDANAIAwhDyALIQwCQCAPIA0oAgAiC2otAABBgAFHDQAgCyAPQX9zQQZ0aiESA0AgFiANIA8QtAIhAyANKAIEIg4gA6ciFXEiEyEKIA0oAgAiCyATaikAAEKAgYKEiJCgwIB/gyIDUARAQQghFANAIAogFGohCiAUQQhqIRQgCyAKIA5xIgpqKQAAQoCBgoSIkKDAgH+DIgNQDQALCyALIAN6p0EDdiAKaiAOcSIKaiwAAEEATgRAIAspAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAKIBNrIA8gE2tzIA5xQQhPBEAgCiALaiITLQAAIBMgFUEZdiITOgAAIA0oAgAgCkEIayAOcWpBCGogEzoAACALIApBf3NBBnRqIQtB/wFGBEAgDSgCBCEKIA0oAgAgD2pB/wE6AAAgDSgCACAKIA9BCGtxakEIakH/AToAACALIBJBwAD8CgAADAMLIBIgC0HAABCwAwwBCwsgCyAPaiAVQRl2Igs6AAAgDSgCACAOIA9BCGtxakEIaiALOgAACyAMIAwgEEkiCmohCyAKDQALIA0oAgQiDCAMQQFqQQN2QQdsIAxBCEkbBUEACyANKAIMazYCCAwHCwwJC0EEIAtBCHFBCGogC0EESRsLIgtBCGoiCiALQQZ0Ig9qIg0gCkkgDUH4////B0tyDQAgDRBxIg1FDQEgDSAPaiEQIAoEQCAQQf8BIAr8CwALIAtBAWsiEyALQQN2QQdsIBNBCEkbIRUgASgCACENIAwNAkEAIQwMAwsgEUEANgIYIBFBATYCDCARQcS1xAA2AgggEUIENwIQIBFBCGpBmLXEABCNCAsACyAQQQhqIRYgDSkDAEJ/hUKAgYKEiJCgwIB/gyEGQQAhCiAMIQsgDSEPA0AgBlAEQANAIApBCGohCiAPQQhqIg8pAwBCgIGChIiQoMCAf4MiA0KAgYKEiJCgwIB/UQ0ACyADQoCBgoSIkKDAgH+FIQYLIBAgEyANIAZ6p0EDdiAKaiIXQQZ0ayIOQUBqKQMAIBEoAgAiEikDCIUiA0LYotHvwqnlvy1+IA5BOGspAwCFIANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhIUiA0LYotHvwqnlvy1+IA5BMGspAwCFIANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhELSgaqbq/qC16d/fiIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIANC2KLR78Kp5b8tfoUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCASKQMAIgRCf4V+IgVCOIYgBUKA/gODQiiGhCAFQoCA/AeDQhiGIAVCgICA+A+DQgiGhIQgBUIIiEKAgID4D4MgBUIYiEKAgPwHg4QgBUIoiEKA/gODIAVCOIiEhIQgAyAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEfoUgA4mnIhhxIg5qKQAAQoCBgoSIkKDAgH+DIgNQBEBBCCESA0AgDiASaiEOIBJBCGohEiAQIA4gE3EiDmopAABCgIGChIiQoMCAf4MiA1ANAAsLIAZCAX0gBoMhBiAQIAN6p0EDdiAOaiATcSIOaiwAAEEATgRAIBApAwBCgIGChIiQoMCAf4N6p0EDdiEOCyAOIBBqIBhBGXYiEjoAACAWIA5BCGsgE3FqIBI6AAAgECAOQX9zQQZ0aiIOQTBqIA0gF0F/c0EGdGoiEkEwav0AAAD9CwAAIA5BIGogEkEgav0AAAD9CwAAIA5BEGogEkEQav0AAAD9CwAAIA4gEv0AAAD9CwAAIAtBAWsiCw0ACwsgASATNgIEIAEgEDYCACABIBUgDGs2AgggFEUNACAUIBRBBnRBxwBqQUBxIgtqQQlqIgxFDQAgDSALayILQQRrKAIAIgpBeHEiDUEEQQggCkEDcSIKGyAMakkNASAKQQAgDSAMQSdqSxsNAiALEKICCyARQSBqJAAMAwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIBFBADYCGCARQQE2AgwgEUHEtcQANgIIIBFCBDcCECARQQhqQZi1xAAQjQgACwsgACAHNwMAIAAgAikDADcDCCAAQRBqIAJBCGr9AAMA/QsDACAAIAE2AiALkwoBBn8jAEEwayICJAACQAJAAkACQAJAAkBBAyAAKAIAIgQtAAAiAEEEayAAQQNNG0H/AXFBAWsOBAECAwQAC0EBIQAgASgCACIDQbK3xwBBBSABKAIEIgYoAgwiBREAAA0EIARBAWohBAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAEIAEQxQINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6ACwgAiAGNgIUIAIgAzYCECACQeCBwgA2AiAgAiABKQIINwIkIAIgAkEsajYCGCACIAJBEGo2AhwgBCACQRxqEMUCDQUgAigCHEHZgcIAQQIgAigCICgCDBEAAA0FCyADQd6OyABBASAFEQAAIQAMBAtBASEAIAEoAgAiA0G3t8cAQQsgASgCBCIGKAIMIgURAAANAyAEQQFqIQQCQCABLQAKQYABcUUEQCADQbuzxQBBASAFEQAADQUgBCABEMUCDQUgASgCACEDIAEoAgQoAgwhBQwBCyADQduBwgBBAiAFEQAADQQgAkEBOgAsIAIgBjYCFCACIAM2AhAgAkHggcIANgIgIAIgASkCCDcCJCACIAJBLGo2AhggAiACQRBqNgIcIAQgAkEcahDFAg0EIAIoAhxB2YHCAEECIAIoAiAoAgwRAAANBAsgA0HejsgAQQEgBREAACEADAMLQQEhACABKAIAIgNBwrfHAEEOIAEoAgQiBygCDCIFEQAADQIgBEEBaiEGAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAIgBjYCHCABIARBBGpByKjHACAEQQJqQdioxwAgBEEDakHoqMcAIAJBHGpB+KjHABDuBQ0EIAEoAgAhAyABKAIEKAIMIQUMAQsgA0HbgcIAQQIgBREAAA0DIAJBAToADyACIAc2AhQgAiADNgIQIAJB4IHCADYCICACIAEpAgg3AiQgAiACQQ9qNgIYIAIgAkEQajYCHCACIAY2AiwgAkEcaiAEQQRqQcioxwAgBEECakHYqMcAIARBA2pB6KjHACACQSxqQfioxwAQ7gUNAyACKAIcQdmBwgBBAiACKAIgKAIMEQAADQMLIANB3o7IAEEBIAURAAAhAAwCC0EBIQAgASgCACIDQdC3xwBBBiABKAIEIgYoAgwiBREAAA0BAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0DIAQgARCUA0UNAQwDCyADQduBwgBBAiAFEQAADQIgAkEBOgAsIAIgBjYCFCACIAM2AhAgAkHggcIANgIgIAIgASkCCDcCJCACIAJBLGo2AhggAiACQRBqIgE2AhwgBCACQRxqEJQDDQIgAUHZgcIAQQIQrwMNAgsgA0HejsgAQQEgBREAACEADAELQQEhACABKAIAIgNB1rfHAEEOIAEoAgQiBigCDCIFEQAADQACQCABLQAKQYABcUUEQCADQbuzxQBBASAFEQAADQIgBEEIaigCACAEQQxqKAIAIAEQtQJFDQEMAgsgA0HbgcIAQQIgBREAAA0BIAJBAToALCACIAY2AhQgAiADNgIQIAJB4IHCADYCICACIAEpAgg3AiQgAiACQSxqNgIYIARBCGooAgAgBEEMaigCACACIAJBEGoiBjYCHCACQRxqELUCDQEgBkHZgcIAQQIQrwMNAQsgA0HejsgAQQEgBREAACEACyACQTBqJAAgAAv6CAMKfwJ+AnsjAEHwAGsiByQAIAcgAjYCACAHIAAoAggiAzYCBAJAAkACQAJAAkACQAJAAkAgAiADRgRAIAdBJGogASACEPEDIAcoAighAQJAIAcoAiwiCkUNACABIApBA3RqIQkgACgCBCEFIAEhAwNAIAMoAgAiBCACTw0JIANBBGooAgAiBiACTw0KIAUgBEEYbGoiBEEQaiIIKQIAIQ0gBSAGQRhsaiIG/QACACEPIAggBkEQaiIIKQIANwIAIAT9AAIAIRAgBCAP/QsCACAIIA03AgAgBiAQ/QsCACADQQhqIgMgCUcNAAsgACgCFCICBEAgACgCECEFIAEhAwNAIAMoAgAiBCACTw0KIANBBGooAgAiBiACTw0LIAUgBEEYbGoiBEEQaiIIKQIAIQ0gBSAGQRhsaiIG/QACACEPIAggBkEQaiIIKQIANwIAIAT9AAIAIRAgBCAP/QsCACAIIA03AgAgBiAQ/QsCACADQQhqIgMgCUcNAAsLIAAoAiAiAgRAIAAoAhwhBSABIQMDQCADKAIAIgQgAk8NCiADQQRqKAIAIgYgAk8NCyAFIARBCWxqIgQpAAAhDSAFIAZBCWxqIgZBCGoiCC0AACELIAQgBikAADcAACAEQQhqIgQtAAAhDCAEIAs6AAAgCCAMOgAAIAYgDTcAACADQQhqIgMgCUcNAAsLIAAoAiwiBARAIAAoAighBiABIQIDQCACKAIAIgMgBE8NBCACQQRqKAIAIgUgBE8NBSAGIANBD2xqIgNBB2opAAAhDSADKQAAIQ4gBiAFQQ9saiIFQQhqKAAAIQggBUEMai8AACELIAVBDmotAAAhDCADIAUpAAA3AAAgA0EOaiAMOgAAIANBDGogCzsAACADQQhqIAg2AAAgByAONwMIIAcgDTcADyAFQQdqIAcpAA83AAAgBSAHKQMINwAAIAJBCGoiAiAJRw0ACwsgACgCOCIDRSAKRXINACAAKAI0IQQgASECA0AgAigCACIAIANPDQUgAkEEaigCACIFIANPDQYgB0EVaiIKIAQgAEEVbGoiAEENaikAADcAACAEIAVBFWxqIgX9AAAAIQ8gBUEUai0AACEGIABBEGogBUEQaigAADYAACAAQRRqIAY6AAAgAP0AAAAhECAAIA/9CwAAIAcgEP0LAwggBSAH/QADCP0LAAAgBUENaiAKKQAANwAAIAJBCGoiAiAJRw0ACwsgBygCJCIABEAgAUEEaygCACICQXhxIgMgAEEDdCIAQQRBCCACQQNxIgIbakkNBiACQQAgAyAAQSdqSxsNByABEKICCyAHQfAAaiQADwsgB0EANgIIQQAgByAHQQRqIAdBCGpBrLzHABD1BwALIAMgBEHA9scAEIwHAAsgBSAEQcD2xwAQjAcACyAAIANBwPbHABCMBwALIAUgA0HA9scAEIwHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAQgAkHA9scAEIwHAAsgBiACQcD2xwAQjAcAC7gHAQR/IAAoArABIgFBhAhPBEAgARCbBwsgACgCtAEiAUGECE8EQCABEJsHCwJAIAAoAgBFDQAgACgCBCIBQYQISQ0AIAEQmwcLAkAgACgCCEUNACAAKAIMIgFBhAhJDQAgARCbBwsCQCAAKAIQRQ0AIAAoAhQiAUGECEkNACABEJsHCwJAIAAoAhhFDQAgACgCHCIBQYQISQ0AIAEQmwcLAkAgACgCIEUNACAAKAIkIgFBhAhJDQAgARCbBwsCQCAAKAIoRQ0AIAAoAiwiAUGECEkNACABEJsHCwJAIAAoAjBFDQAgACgCNCIBQYQITwRAIAEQmwcLIAAoAjgiAUGECEkNACABEJsHCwJAAkAgACgCRCIBBEAgACgCSCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAlAiAQRAIAAoAlQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAJcIgEEQCAAKAJgIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCaCIBBEAgACgCbCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILAkAgACgCPEUNACAAKAJAIgFBhAhJDQAgARCbBwsgACgCjAEiAUGAgICAeHJBgICAgHhHBEAgACgCkAEiA0EEaygCACICQXhxIgQgAUEBdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKYASIBQYCAgIB4ckGAgICAeEcEQCAAKAKcASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAnQiAQRAIAAoAngiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKAASIBBEAgACgChAEiAEEEaygCACIDQXhxIgIgAUECdCIBQQRBCCADQQNxIgMbakkNASADQQAgAiABQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC6QIAhN/An4jAEGQBGsiByQAIAdBDGpBAEGABPwLAAJAIAAoAgwiEUUEQCABKAIAIAAoAgAgACgCBCABKAIEKAIMEQAAIQAMAQsgACgCACEOIAAoAggiDy0AACEKAkACQCAAKAIEIhBFDQAgDiAQaiELIAdBDGohAiAOIQADQAJ/IAAsAAAiBkEATgRAIAZB/wFxIQQgAEEBagwBCyAALQABQT9xIQUgBkEfcSEEIAZBX00EQCAEQQZ0IAVyIQQgAEECagwBCyAALQACQT9xIAVBBnRyIQUgBkFwSQRAIAUgBEEMdHIhBCAAQQNqDAELIARBEnRBgIDwAHEgAC0AA0E/cSAFQQZ0cnIiBEGAgMQARg0CIABBBGoLIQAgA0GAAUYNAiACIAQ2AgAgAkEEaiECIANBAWohAyAAIAtHDQALCyAPIBFqIRIgA0ECdCIAQQRqIQwgACAHakEIaiELQbwFIRNByAAhFCAPIQRBgAEhDQNAIARBAWohBEEAIQJBJCEAQQEhCUEBIQZBACEFA0ACQCACQQFxBEAgBCASRg0EIAQtAAAhAiAEQQFqIQQMAQsgCiECIAlBAXFFDQMLIAJB4QBrIglB/wFxQRpPBEAgAkEwa0H/AXFBCUsNAyACQRZrIQkLIAatIhYgCUH/AXEiBq1+IhVCIIinDQIgFaciAiAFaiIFIAJJDQIgBkEaQQEgACAUayICQQAgACACTxsiAiACQQFNGyICIAJBGk8bIgJPBEAgAEEkaiEAIBZBJCACa61+IhWnIQZBACEJQQEhAiAVQiCIUA0BDAMLCyAFIAhqIgYgBUkNASAGIANBAWoiAm4iCiANaiINIApJIA1BgLADc0GAgMQAa0GAkLx/SXIgA0H/AEtyDQEgCyEAAkAgBiACIApsayIIIANPBEAgCEGAAUkNASAIQYABQZiyxQAQjAcACwNAIABBBGogACgCADYCACAAQQRrIQAgA0EBayIDIAhLDQALCyAHQQxqIAhBAnRqIA02AgAgBCASRwRAIAQtAAAhCkEAIQMCQCAFIBNuIgAgAm4gAGoiAEHIA0kEQCAAIQUMAQsDQCADQSRqIQMgAEHX/ABLIABBI24iBSEADQALCyAIQQFqIQggAyAFQSRsQfz/A3EgBUEmakH//wNxbmohFCALQQRqIQsgDEEEaiEMQQIhEyACIQMMAQsLIAdBDGohAwNAIAcgAygCADYCjAQgB0GMBGogARCoBSIADQIgA0EEaiEDIAxBBGsiDA0ACwwBC0EBIQAgASgCACICQei3xQBBCSABKAIEKAIMIgERAAANACAQBEAgAiAOIBAgAREAAA0BIAJB6rPFAEEBIAERAAANAQsgAiAPIBEgAREAAA0AIAJBpbPFAEEBIAERAAAhAAsgB0GQBGokACAAC6cJAgN+Bn9BsLXJACgCAEUEQBBWCwJAAkACQAJAQbi1yQAoAgBFBEBBuLXJAEF/NgIAQcS1yQAoAgAiBUHYtckAKQMAIgEgAK2FIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIRC0oGqm6v6gtenf34iAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCACQtii0e/CqeW/LX6FIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIRB0LXJACkDACICQn+FfiIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEIAEgAkI4hiACQoD+A4NCKIaEIAJCgID8B4NCGIYgAkKAgID4D4NCCIaEhCACQgiIQoCAgPgPgyACQhiIQoCA/AeDhCACQiiIQoD+A4MgAkI4iISEhH6FIAGJIgGncSEEIAFCGYhC/wCDQoGChIiQoMCAAX4hA0HAtckAKAIAIgZBIGshCQJAA0ACQCAEIAZqKQAAIgIgA4UiAUJ/hSABQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIgFQRQRAA0AgACAJIAF6p0EDdiAEaiAFcSIIQQV0aygCAEYNAiABQgF9IAGDIgFQRQ0ACwsgAiACQgGGg0KAgYKEiJCgwIB/g1BFDQIgBCAHQQhqIgdqIAVxIQQMAQsLQYABIQAgBiAIaiIEKQAAIgEgAUIBhoNCgIGChIiQoMCAf4N6p0EDdiAGIAhBCGsgBXFqIgUpAAAiASABQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHTQRAQci1yQBByLXJACgCAEEBajYCAEH/ASEACyAEIAA6AAAgBUEIaiAAOgAAQcy1yQBBzLXJACgCAEEBazYCACAGQQAgCGtBBXRqIgBBHGsoAgAiBEGAgICAeEYNACAAQQxrKAIAIQYgAEEQaygCACEFIABBGGsoAgAhCCAAQQRrKAIAIgAgACgCAEEBayIHNgIAIAdFBEAgABDSBQsgBARAIAhBBGsoAgAiAEF4cSIHIARBAnQiBEEEQQggAEEDcSIAG2pJDQMgAEEAIAcgBEEnaksbDQQgCBCiAgsgBUUNACAGQQRrKAIAIgBBeHEiBCAFQQJ0IgVBBEEIIABBA3EiABtqSQ0EIABBACAEIAVBJ2pLGw0FIAYQogILQbi1yQBBuLXJACgCAEEBajYCAA8LQayKwQAQsAoAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALzAYBBH8CQAJAAkAgACgCACIBQYCAgIB4Rg0AIAEEQCAAKAIEIgNBBGsoAgAiAkF4cSIEIAFBA3QiAUEEQQggAkEDcSICG2pJDQIgAkEAIAQgAUEnaksbDQMgAxCiAgsgACgCDCIBRQ0AIAAoAhAiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCwJAIAAoAhwiAUGAgICAeEYNACABBEAgACgCICIDQQRrKAIAIgJBeHEiBCABQQN0IgFBBEEIIAJBA3EiAhtqSQ0CIAJBACAEIAFBJ2pLGw0DIAMQogILIAAoAigiAUUNACAAKAIsIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsCQCAAKAI4IgFBgICAgHhGDQAgAQRAIAAoAjwiA0EEaygCACICQXhxIgQgAUEDdCIBQQRBCCACQQNxIgIbakkNAiACQQAgBCABQSdqSxsNAyADEKICCyAAKAJEIgFFDQAgACgCSCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILAkAgACgCVCIBQYCAgIB4Rg0AIAEEQCAAKAJYIgNBBGsoAgAiAkF4cSIEIAFBA3QiAUEEQQggAkEDcSICG2pJDQIgAkEAIAQgAUEnaksbDQMgAxCiAgsgACgCYCIBRQ0AIAAoAmQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCwJAIAAoAnAiAUGAgICAeEYNACABBEAgACgCdCIDQQRrKAIAIgJBeHEiBCABQQN0IgFBBEEIIAJBA3EiAhtqSQ0CIAJBACAEIAFBJ2pLGw0DIAMQogILIAAoAnwiAUUNACAAKAKAASIAQQRrKAIAIgNBeHEiAiABQQJ0IgFBBEEIIANBA3EiAxtqSQ0BIANBACACIAFBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALtwcCCn4GfwJAIAEpAxAiA1ANACABKAIYIg4oAgAiECAOKQMIIgQgDigCBCIMrSIHIAQgB1QbpyIPaiENAkACQCADIAxC/////w8gBCAEQv////8PWhunayIRQQAgDCARTxutIgIgAiADVhtCB1gEQCAMIA9GDQMgAS0AICIPQTdLDQMgDTEAACEIIA4gBEIBfCIGNwMIIANCAX0hAiAPrUL/AYMiCkIIfCEEIAEpAwAgCCAKhoQhCCADQgFRDQIgAiAMIAYgByAGIAdUG6ciDWutIgUgAiAFVBtQIA9BL0tyDQIgDSAQajEAACAOIAYgAkIAUq0iC3wiBTcDCCAKQhB8IQYgAiALfSECIASGIAiEIQggA0IDVARAIAYhBAwDCyACIAwgBSAHIAUgB1QbpyINa60iBCACIARUG1AEQCAGIQQMAwsgD0EnSwRAIAYhBAwDCyANIBBqMQAAIA4gBSACQgBSrSIDfCIFNwMIIApCGHwhBCACIAN9IQMgBoYgCIQhCCACQgJUBEAgAyECDAMLIAMgDCAFIAcgBSAHVBunIg1rrSICIAIgA1YbUARAIAMhAgwDCyAPQR9LBEAgAyECDAMLIA0gEGoxAAAgDiAFIANCAFKtIgJ8IgU3AwggCkIghCEGIAMgAn0hAiAEhiAIhCEIIANCAlQEQCAGIQQMAwsgAiAMIAUgByAFIAdUG6ciDWutIgQgAiAEVBtQBEAgBiEEDAMLIA9BF0sEQCAGIQQMAwsgDSAQajEAACAOIAUgAkIAUq0iA3wiBTcDCCAKQih8IQQgAiADfSEDIAaGIAiEIQggAkICVARAIAMhAgwDCyADIAwgBSAHIAUgB1QbpyINa60iAiACIANWG1AEQCADIQIMAwsgBkIvVgRAIAMhAgwDCyANIBBqMQAAIA4gBSADQgBSrSICfCIFNwMIIApCMHwhBiADIAJ9IQIgBIYgCIQhCCADQgJUBEAgBiEEDAMLIAIgDCAFIAcgBSAHVBunIgxrrSIEIAIgBFQbUARAIAYhBAwDCyAPQQdNDQEgBiEEDAILIAEgAS0AICIMQThyOgAgIAEgASkDACANKQAAIAxBP3GthoQ3AwAgASADIANBPyAMa0H4AXFBA3atIgIgAiADVhsiAn03AxAgDiACIAR8NwMIDAILIAwgEGoxAAAgDiAFIAJCAFKtIgd8NwMIIApCOIQhBCACIAd9IQIgBoYgCIQhCAsgASAEPAAgIAEgCDcDACABIAI3AxALIABBHToAAAvtBwIGfwh+AkAgASgCCCIFQQhqKQMAIghQDQAgBUEQaigCACIGKAIAIAYpAwgiDSAGKAIEIgStIgkgCSANVhunIgNqIQICQAJAIAggBEL/////DyANIA1C/////w9aG6drIgdBACAEIAdPG60iCSAIIAlUG0IHWARAIAMgBEYNAyABLQAMIgRBN0sNAyACMQAAIQkgBUEIaiIHIgIgCEIBfTcDACAGIA1CAXw3AwggBK1C/wGDIg5CCHwhCCABKQMAIAkgDoaEIQsgAikDACIJUA0CIAVBEGooAgAiAigCBCIDIAIpAwgiCiADrSIMIAogDFQbpyIDRiAEQS9Lcg0CIAIoAgAgA2oxAAAgBiANQgJ8NwMIIAciAiAJQgF9NwMAIA5CEHwhCSAIhiALhCELIAIpAwAiCFAEQCAJIQgMAwsgBUEQaigCACICKAIEIgMgAikDCCIKIAOtIgwgCiAMVBunIgNGBEAgCSEIDAMLIARBJ0sEQCAJIQgMAwsgAigCACADajEAACAGIA1CA3w3AwggBUEIaiIHIgIgCEIBfTcDACAOQhh8IQggCYYgC4QhCyACKQMAIglQDQIgBUEQaigCACICKAIEIgMgAikDCCIKIAOtIgwgCiAMVBunIgNGIARBH0tyDQIgAigCACADajEAACAGIA1CBHw3AwggByICIAlCAX03AwAgDkIghCEJIAiGIAuEIQsgAikDACIIUARAIAkhCAwDCyAFQRBqKAIAIgIoAgQiAyACKQMIIgogA60iDCAKIAxUG6ciA0YEQCAJIQgMAwsgBEEXSwRAIAkhCAwDCyACKAIAIANqMQAAIAYgDUIFfDcDCCAFQQhqIgciAiAIQgF9NwMAIA5CKHwhCCAJhiALhCELIAIpAwAiClANAiAFQRBqKAIAIgIoAgQiAyACKQMIIgwgA60iDyAMIA9UG6ciA0YgCUIvVnINAiACKAIAIANqMQAAIAYgDUIGfDcDCCAHIgIgCkIBfTcDACAOQjB8IQkgCIYgC4QhCyACKQMAIghQBEAgCSEIDAMLIAVBEGooAgAiAigCBCIDIAIpAwgiCiADrSIMIAogDFQbpyIDRgRAIAkhCAwDCyAEQQdNDQEgCSEIDAILIAEgAS0ADCIEQThyOgAMIAEgASkDACACKQAAIARBP3GthoQ3AwAgBUEIaiAIIAhBPyAEa0H4AXFBA3atIgkgCCAJVBsiCH03AwAgBiAIIA18NwMIDAILIAIoAgAgA2oxAAAgBiANQgd8NwMIIAVBCGogCEIBfTcDACAOQjiEIQggCYYgC4QhCwsgASAIPAAMIAEgCzcDAAsgAEEdOgAAC/YHAgV/A34gASgCACICQf///wNxIQUgAkGAgICAeHEhBiABKAIEIQMCfiAGQRB2IAVBDXZyQYAEQQAgBRtyQYD4AXKtIAJBgICA/AdxIgRBgICA/AdGDQAaIAZBEHYhBgJAIARBgICAuARNBEAgBEENdiAFQQ12akGAgAFqIAZyrSACQQx2IAJB/98AcUEAR3GtfCAEQYCAgMQDTw0CGiAEQYCAgJgDSQ0BIAVBgICABHIiAkH+ACAEQRd2IgVrdiEEIAJBHSAFayIFdkEBcQR/IARBAyAFdEEBayACcUEAR2oFIAQLIAZyrQwCCyAGQYD4AXKtDAELIAatCyEHIAEoAgghBCADQf///wNxIQUgA0GAgICAeHEhBgJ+IANBgICA/AdxIgJBgICA/AdHBEAgBkEQdiEGIAJBgICAuARNBEAgAkENdiAFQQ12akGAgAFqIAZyrSADQQx2IANB/98AcUEAR3GtfCACQYCAgMQDTw0CGiACQYCAgJgDTwRAIAVBgICABHIiBUH+ACACQRd2IgJrdiEDIAVBHSACayICdkEBcQR/IANBAyACdEEBayAFcUEAR2oFIAMLIAZyrQwDCyAGrQwCCyAGQYD4AXKtDAELIAZBEHYgBUENdnJBgARBACAFG3JBgPgBcq0LIQggASgCDCEBIARB////A3EhAiAEQYCAgIB4cSEFAn4gBEGAgID8B3EiA0GAgID8B0cEQCAFQRB2IQUgA0GAgIC4BE0EQCADQQ12IAJBDXZqQYCAAWogBXKtIARBDHYgBEH/3wBxQQBHca18IANBgICAxANPDQIaIANBgICAmANPBEAgAkGAgIAEciIEQf4AIANBF3YiAmt2IQMgBEEdIAJrIgJ2QQFxBH8gA0EDIAJ0QQFrIARxQQBHagUgAwsgBXKtDAMLIAWtDAILIAVBgPgBcq0MAQsgBUEQdiACQQ12ckGABEEAIAIbckGA+AFyrQshCSABQf///wNxIQQgAUGAgICAeHEhAiAAIAdC//8DgyAIQhCGQoCA/P8PgyAJQiCGQoCAgIDw/z+DAn4gAUGAgID8B3EiA0GAgID8B0cEQCACQRB2IQIgA0GAgIC4BE0EQCADQQ12IARBDXZqQYCAAWogAnKtIAFBDHYgAUH/3wBxQQBHca18IANBgICAxANPDQIaIANBgICAmANPBEAgBEGAgIAEciIEQf4AIANBF3YiA2t2IQEgBEEdIANrIgN2QQFxBH8gAUEDIAN0QQFrIARxQQBHagUgAQsgAnKtDAMLIAKtDAILIAJBgPgBcq0MAQsgAkEQdiAEQQ12ckGABEEAIAQbckGA+AFyrQtCMIaEhIQ3AgALvwgCBX8BfSABKAIAIglB////A3EhBiAJQYCAgIB4cSEKAkAgCUGAgID8B3EiB0GAgID8B0YEQCAKQRB2IAZBDXZyQYAEQQAgBhtyQYD4AXIhCgwBCyAKQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAlBDHYgCUH/3wBxQQBHcSAHQQ12IAZBDXZqQYCAAWogCnJqIQoMAgsgB0GAgICYA0kNASAGQYCAgARyIglB/gAgB0EXdiIGa3YhByAJQR0gBmsiBnZBAXEEfyAHQQMgBnRBAWsgCXFBAEdqBSAHCyAKciEKDAELIApBgPgBciEKCyABKAIEIgZB////A3EhCCAGQYCAgIB4cSEJAkAgBkGAgID8B3EiB0GAgID8B0cEQCAJQRB2IQkgB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAZBDHYgBkH/3wBxQQBHcSAHQQ12IAhBDXZqQYCAAWogCXJqIQkMAwsgB0GAgICYA0kNAiAIQYCAgARyIgZB/gAgB0EXdiIIa3YhByAGQR0gCGsiCHZBAXEEfyAHQQMgCHRBAWsgBnFBAEdqBSAHCyAJciEJDAILIAlBgPgBciEJDAELIAlBEHYgCEENdnJBgARBACAIG3JBgPgBciEJCyABKAIIIgZB////A3EhCCAGQYCAgIB4cSEHAkAgBkGAgID8B3EiAUGAgID8B0cEQCAHQRB2IQcgAUGAgIC4BE0EQCABQYCAgMQDTwRAIAZBDHYgBkH/3wBxQQBHcSABQQ12IAhBDXZqQYCAAWogB3JqIQcMAwsgAUGAgICYA0kNAiAIQYCAgARyIgZB/gAgAUEXdiIIa3YhASAGQR0gCGsiCHZBAXEEfyABQQMgCHRBAWsgBnFBAEdqBSABCyAHciEHDAILIAdBgPgBciEHDAELIAdBEHYgCEENdnJBgARBACAIG3JBgPgBciEHC0MAAABAIQsgAyoCACADKgIEkiADKgIIkkMAAEBAlSACQwAAgD9fBH0gCwUgAkMAAIBAlEMAAEDAkkMAAIC/kkMzMzM/lEMAAIA/kiICIAKSC5S8IgZB////A3EhCCAGQYCAgIB4cSEDAkAgBkGAgID8B3EiAUGAgID8B0YEQCADQRB2IAhBDXZyQYAEQQAgCBtyQYD4AXIhAwwBCyADQRB2IQMgAUGAgIC4BE0EQCABQYCAgMQDTwRAIAZBDHYgBkH/3wBxQQBHcSABQQ12IAhBDXZqQYCAAWogA3JqIQMMAgsgAUGAgICYA0kNASAIQYCAgARyIgZB/gAgAUEXdiIIa3YhASAGQR0gCGsiCHZBAXEEfyABQQMgCHRBAWsgBnFBAEdqBSABCyADciEDDAELIANBgPgBciEDCyAAIAU2AgwgACAEQf//A3E2AgggACAHQf//A3EgA0EQdHI2AgQgACAKQf//A3EgCUEQdHI2AgALlSEDBX4RfwF7IAGtQYi2yQApAwAiAiAArYUiA0LYotHvwqnlvy1+hSADQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhISFIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCACQtii0e/CqeW/LX6FIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIRBgLbJACkDACIDQn+FfiIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIAIgA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhH6FIAKJIQZB+LXJACgCAEUEQAJAIwBBIGsiDyQAAkACQAJAAkACfwJAAkACQAJAQfi1yQACfwJAAkACQEH8tckAKAIAQQFqIgkEQEH0tckAKAIAIgcgB0EBaiINQQN2IgtBB2wgB0EISRsiB0EBdiAJSQRAIAdBAWoiByAJIAcgCUsbIglBD0kNAiAJQf////8BTQRAQX8gCUEDdEEHbkEBa2d2IglB/v///wFLDQggCUEBaiEIDAcLDA4LQQAgDUUNBBpB8LXJACgCACEKIAsgDUEHcUEAR2oiCUEBTQ0CIAohCCAJQf7///8DcSILIQcDQCAIIAj9AAMAIhj9TUEH/c0B/QwBAQEBAQEBAQEBAQEBAQEB/U4gGP0Mf39/f39/f39/f39/f39/f/1Q/c4B/QsDACAIQRBqIQggB0ECayIHDQALIAkgC0YNAyALQQN0IQggCUEBcSEJDAILDAwLQQQgCUEIcUEIaiAJQQRJGyEIDAMLIAggCmohCANAIAggCCkDACICQn+FQgeIQoGChIiQoMCAAYMgAkL//v379+/fv/8AhHw3AwAgCEEIaiEIIAlBAWsiCQ0ACwsCQCANQQhPBEAgCiANaiAKKQAANwAADAELIA1FDQAgCkEIaiAKIA38CgAAC0EBIQdBACEJA0AgCSEKIAchCQJAIApB8LXJACgCACIHai0AAEGAAUcNACAHIAxqIRMgByAKQX9zQQN0aiEUQQAgCmtBA3QhFQJAA0BB9LXJACgCACILQYi2yQApAwAiAiAHIBVqIghBCGs1AgCFIgNC2KLR78Kp5b8tfiAIQQRrNQIAhSADQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhISFIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCACQtii0e/CqeW/LX6FIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIRBgLbJACkDACIDQn+FfiIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIAIgA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhH6FIAKJpyIScSIOIQggByAOaikAAEKAgYKEiJCgwIB/gyICUARAQQghEANAIAggEGohCCAQQQhqIRAgByAIIAtxIghqKQAAQoCBgoSIkKDAgH+DIgJQDQALCyAHIAJ6p0EDdiAIaiALcSIIaiwAAEEATgRAIAcpAwBCgIGChIiQoMCAf4N6p0EDdiEICyAIIA5rIAogDmtzIAtxQQhPBEAgByAIaiIOLQAAIA4gEkEZdiIOOgAAQfC1yQAoAgAgCEEIayALcWpBCGogDjoAAEH/AUYNAiAHIAhBA3RrIQhBeCEHA0AgByATaiILKAAAIQ4gCyAHIAhqIgsoAAA2AAAgCyAONgAAIAdBBGoiBw0AC0HwtckAKAIAIQcMAQsLIAcgCmogEkEZdiIHOgAAQfC1yQAoAgAgCyAKQQhrcWpBCGogBzoAAAwBC0H0tckAKAIAIQtB8LXJACgCACAKakH/AToAAEHwtckAKAIAIAsgCkEIa3FqQQhqQf8BOgAAIAcgCEF/c0EDdGogFCkAADcAAAsgDEEIayEMIAkgCSANSSIIaiEHIAgNAAtB9LXJACgCACIJIAlBAWpBA3ZBB2wgCUEISRsLQfy1yQAoAgBrNgIADAULIAhBCGoiCSAIQQN0IgpqIgcgCUkgB0H4////B0tyDQAgBxBxIgdFDQEgByAKaiEKIAkEQCAKQf8BIAn8CwALIAhBAWsiDSAIQQN2QQdsIA1BCEkbIRBB8LXJACgCACEHQfy1yQAoAgAiDg0CQQAMAwsgD0EANgIYIA9BATYCDCAPQcS1xAA2AgggD0IENwIQIA9BCGpBmLXEABCNCAsACyAKQQhqIRIgBykDAEJ/hUKAgYKEiJCgwIB/gyEFQQAhCCAHIQkDQCAFUARAA0AgCEEIaiEIIAlBCGoiCSkDAEKAgYKEiJCgwIB/gyICQoCBgoSIkKDAgH9RDQALIAJCgIGChIiQoMCAf4UhBQsgCiANQYi2yQApAwAiAiAHIAV6p0EDdiAIaiITQQN0ayIMQQhrNQIAhSIDQtii0e/CqeW/LX4gDEEEazUCAIUgA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCACQgiIQoCAgPgPgyACQhiIQoCA/AeDhCACQiiIQoD+A4MgAkI4iISEhELSgaqbq/qC16d/fiICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEhSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEQtKBqpur+oLXp39+IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgAkLYotHvwqnlvy1+hSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEQYC2yQApAwAiA0J/hX4iBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhCACIANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIR+hSACiaciFHEiDGopAABCgIGChIiQoMCAf4MiAlAEQEEIIQsDQCALIAxqIQwgC0EIaiELIAogDCANcSIMaikAAEKAgYKEiJCgwIB/gyICUA0ACwsgBUIBfSAFgyEFIAogAnqnQQN2IAxqIA1xIgxqLAAAQQBOBEAgCikDAEKAgYKEiJCgwIB/g3qnQQN2IQwLIAogDGogFEEZdiILOgAAIBIgDEEIayANcWogCzoAACAKIAxBf3NBA3RqIAcgE0F/c0EDdGopAAA3AwAgDkEBayIODQALQfC1yQAoAgAhB0H8tckAKAIACyEIQfC1yQAgCjYCAEH0tckAKAIAIQlB9LXJACANNgIAQfi1yQAgECAIazYCACAJRQ0AIAkgCUEDdEEPakF4cSIIakEJaiIJRQ0AIAcgCGsiB0EEaygCACIIQXhxIgpBBEEIIAhBA3EiCBsgCWpJDQEgCEEAIAogCUEnaksbDQIgBxCiAgsgD0EgaiQADAMLQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAPQQA2AhggD0EBNgIMIA9BxLXEADYCCCAPQgQ3AhAgD0EIakGYtcQAEI0IAAsLQfS1yQAoAgAiCCAGp3EhCSAGQhmIIgRC/wCDQoGChIiQoMCAAX4hBUHwtckAKAIAIQcDQAJ/AkACQCAHIAlqKQAAIgMgBYUiAkJ/hSACQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIgJQRQRAA0AgByACeqdBA3YgCWogCHFBA3RrIgxBCGsoAgAgAEYEQEEBIQogASAMQQRrKAIARg0DCyACQgF9IAKDIgJQRQ0ACwsgA0KAgYKEiJCgwIB/gyECIBZFBEAgAlANAiACeqdBA3YgCWogCHEhEQtBASACIANCAYaDUA0CGkEAIQogByARaiwAACIJQQBOBEAgByAHKQMAQoCBgoSIkKDAgH+DeqdBA3YiEWotAAAhCQsgByARaiAEp0H/AHEiDDoAACAHIBFBCGsgCHFqQQhqIAw6AABB+LXJAEH4tckAKAIAIAlBAXFrNgIAQfy1yQBB/LXJACgCAEEBajYCACAHIBFBA3RrIglBCGsgADYCACAJQQRrIAE2AgALIAoPC0EACyEWIBdBCGoiFyAJaiAIcSEJDAALAAuECQMZfwR9AXsjAEEQayIOJAACQAJAAkACQAJAIAIEQCAAKAIIIhEgAWsiBUEAIAUgEU0bIRZDAACAPyAAKgJAIAAtAFhBAkYiBRtDAAAAACAAKgI8IAUbIh+TISAgAkEMbCEXIABBPGohGCAAKAIEIAFBGGxqIQYgAygCICEPIAMoAiQhEiADKAIYIRkgAygCHCETIAMoAhAhGiADKAIUIRQgAygCCCEbIAMoAgwhECADKAIAIRwgAygCBCEVA0ACQAJAAkACQCANIBZHBEAgB0EDaiIFIBVLDQEgBiAMIBxqIgRBCGogBP1dAgD9VgIAAiIh/VoCCAIgBiAh/VsCAAAgDSAQRg0DIAsgG2ooAgAiCkH///8DcSEIIApBgICAgHhxIQQgCkGAgID8B3EiCUGAgID8B0YEQCAIQQ12IARBEHZyQYAEQQAgCBtyQYD4AXIhBAwFCyAEQRB2IQQgCUGAgIC4BEsNAiAJQYCAgMQDTwRAIApBDHYgCkH/3wBxQQBHcSAJQQ12IAhBDXZqQYCAAWogBHJqIQQMBQsgCUGAgICYA0kNBCAIQYCAgARyIgpB/gAgCUEXdiIIa3YhCSAKQR0gCGsiCHZBAXEEfyAJQQMgCHRBAWsgCnFBAEdqBSAJCyAEciEEDAQLIAEgDWogEUHsu8cAEIwHAAsgByAFIBVBpMXHABDqBwALIARBgPgBciEEDAELIBAgEEHkxMcAEIwHAAsgBkEMaiAEOwEAIAUgFEsNBEMAAH9DQwAAAAAgDCAaaiIEQQRqKgIAIB+TICCVQwAAf0OUIh0gHUMAAAAAXRsiHSAdQwAAf0NeGxC5ByEdIAZBDmpB/wFDAAB/Q0MAAAAAIARBCGoqAgAgH5MgIJVDAAB/Q5QiHiAeQwAAAABdGyIeIB5DAAB/Q14bELkHIh78AUEAIB5DAAAAAGAbIB5DAAB/Q14bQRB0Qf8BIB38AUEAIB1DAAAAAGAbIB1DAAB/Q14bQQh0ckH/AUMAAH9DQwAAAAAgBCoCACAfkyAglUMAAH9DlCIdIB1DAAAAAF0bIh0gHUMAAH9DXhsQuQciHfwBQQAgHUMAAAAAYBsgHUMAAH9DXhtyIgQ7AQAgBkEQaiAEQRB2OgAAIAUgE0sNBSAGIBggDCAZaiIH/V0CACAHQQhqKgIAIh39IAIgHf0gAxDfBCALQQNqIBJPDQIgDiAP/QACAP0LBAAgBkEWaiAOEJ0EIgdBEHY6AAAgBkEUaiAHOwEAIA1BAWohDSAPQRBqIQ8gBkEYaiEGIAtBBGohCyAFIQcgFyAMQQxqIgxHDQALCyAAIAEgAiADKAIoIAMoAiwgAygCMCADKAI0IAMoAjggAygCPBDqBCADKAJEIgVFDQQgAygCTCIHDQEMBAsgCyALQQRqIBJBhMXHABDqBwALIAAoAhAiBiAAKAIUIgAgASACIAMoAkggBxCNAyAGIAAgASACIAMoAkAgBRCzAwwCCyAHIAUgFEGUxccAEOoHAAsgByAFIBNB9MTHABDqBwALIA5BEGokAAvXBwIHfwN9IAEoAggiAkEDdCEGIAEoAgQhBCABKAIAIQcgACgCCCIDIQEgACgCACADayACSQRAIAAgAyACQQRBCBCkBSAAKAIIIQELIAAoAgQhBSAGBEAgBSABQQN0aiAEIAb8CgAACyAAIAEgAmoiAjYCCAJAAkACQAJAIAcEQCAEQQRrKAIAIgBBeHEiASAHQQN0IgZBBEEIIABBA3EiABtqSQ0BIABBACABIAZBJ2pLGw0CIAQQogILIAIgA0YNAwJAAkAgAiADayIAIANNBEAgAkEBdCEBIAJBgBBLDQEgASAAQR8gA2drbE8NAgsgAkECSQ0FDAQLIAEgAEELbEkNAwsgAiADTQ0DA0AgBSADQQN0aiIAKAIEIQQgACoCACEKAkAgA0UEQEEAIQEMAQsgAyEAIAogClwEQANAAkAgBSAAQQFrIgdBAXYiAUEDdGoiBioCACIJIAlbIAkgCmBFcQ0AIAQgBkEEaigCAEsNACAAIQEMAwsgBSAAQQN0aiAGKQIANwIAIAEhACAHQQJPDQAMAgsACwNAIAUgAEEBayIHQQF2IgFBA3RqIgYqAgAiCSAJWyAJIApgRXFBfyAJIApfGyIIQQBMIAQgBkEEaigCAE0gCBsEQCAAIQEMAgsgBSAAQQN0aiAGKQIANwIAIAEhACAHQQFLDQALCyAFIAFBA3RqIgAgBDYCBCAAIAo4AgAgA0EBaiIDIAJHDQALDAMLQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyACQQJrIQYgAkEBdiEDA0AgA0EBayIDQQF0IgRBAXIhACAFIANBA3RqIgEoAgQhByABKgIAIQogAyEBAkACQCAEIAZPDQADQAJAIAogBSAAIARBA3QgBWoiAkEQaioCACIJIAlbIAkgBSAAQQN0aiIEKgIAIgtgRXEiCCAIQX8gCSALXxsgCyALXBsiCEEATCAEQQRqKAIAIAJBFGooAgBNIAgbaiICQQN0aiIAKgIAIglgRSAKIApbcUUEQCAJIApgRSAJIAlbcSAHIABBBGooAgBPcg0BCyAFIAFBA3RqIAApAgA3AgAgAkEBdCIEQQFyIQAgAiEBIAQgBkkNAQwCCwsgASEADAELIAQgBkcEQCABIQAMAQsCQCAKIApcIAogBSAAQQN0aiICKgIAIglgciIEIAkgCVwgCSAKYHJxRQRAIARFDQEgASEADAILIAcgAkEEaigCAEkNACABIQAMAQsgBSABQQN0aiACKQIANwIACyAFIABBA3RqIgAgBzYCBCAAIAo4AgAgAw0ACwsL4wgDB38EfQF7IwBBsAFrIgUkAAJ/AkAgASgCCCIHIAJLBEAgBUGAAWogASgCBCACQSRsaiIHEJoDIAX9AASAASIQ/R8AIgwgEP0fASINlEOPws0/ELcKIQ4gDCAQ/R8CIgyUQ4/CzT8QtwohDyANIAyUQ4/CzT8QtwogDiAPkpJDAABAQJVD5kAfPxC3CkPbD0lBlCEMIAcvARQiBkH//wFxRQRAIAZBEHQMAwsgBkH/B3EhByAGQYCAAnEhCCAGQYD4AXEiBkGA+AFGBEAgCEEQdCEGIAZBgICA/AdyIAdFDQMaIAYgB0ENdHJBgICA/gdyDAMLIAhBEHQhCCAGRQ0BIAZBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAIcgwCCyACIAdB1MDHABCMBwALIAhBgICA2ANyIAdnQRBrIgZBF3RrIAcgBkH//wNxQQhqdEH///8DcXILIQggBUEIaiABKAIQIgkgASgCFCIKIAIQ6AIgDCAIvpQhDQJAAn8CQAJAIAUoAiwiBkEJTwRAIAUoAgwiB0UNASAFQQA2AjAgBUEANgJUIAUoAhAMAwsgBg0BCyAAQQE2AiggACACNgIIIABBADYCBCAAIA04AgAMAgsgBUEANgIwIAVBADYCVCAGIQcgBUEMagshCCAHQQJ0IQsgBUGEAWohB0MAAID/IQwDQCAFQYABaiABIAgoAgAgAyAEEJUCIAVB4ABqIAdBCGr9AAIA/QsDACAFQfAAaiAHQRhq/QACAP0LAwAgBSAHKQIANwNYIAhBBGohCCAFKgKAASEOIAVBMGogBUHYAGoQ/wEgDCAOEOAIIQwgC0EEayILDQALIAMoAgghAQJAAkACQAJAAkAgBCAMlCANXwRAIAEgAk0NASADKAIEIAJqQQE6AAALIAEgAk0NASADKAIEIAJqLQAARQRAIAkgCiACQQRBABDkBSAAIAw4AgAgAEEkaiAFQdAAaikCADcCACAAQRRqIAVBQGv9AAIA/QsCACAAIAX9AAIw/QsCBAwGCyAJIAogAiAFKAJUIghBCUkEfyAFQTRqBSAFKAI0IghBgIAETw0DIAUoAjgLIAgQ5AUgAEEBNgIoIAAgAjYCCCAAQQA2AgQgACANOAIAIAUoAlQiAEEJSQ0FIAUoAjgiAUEEaygCACICQXhxIgMgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgAyAAQSdqSxsNBCABEKICDAULIAIgAUHs6sEAEIwHAAsgAiABQfzqwQAQjAcAC0GM68EAQS1BvOvBABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACwJAAkAgBkEJTwRAIAUoAhAiAEEEaygCACIBQXhxIgIgBkECdCIDQQRBCCABQQNxIgEbakkNASABQQAgAiADQSdqSxsNAiAAEKICCyAFQbABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL9wgCAn0DfwJAAkACQAJAAkACQAJAAkACQAJAIAAoAlxFIAJFckUEQEMAAP5CQwAA/kIgACoCTJUgAC0AWEECRhshBiAAKAIcIAFBCWxqIQkgACgCICEIQQAhAANAIAEgCE8NCiAAIARPDQsgACAJaiIHQf8AQwAA/kJDAAD+wiAGIAMqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxC5ByIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQFqIARPDQkgB0EBakH/AEMAAP5CQwAA/sIgBiADQQRqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQuQciBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEECaiAETw0IIAdBAmpB/wBDAAD+QkMAAP7CIAYgA0EIaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bELkHIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBA2ogBE8NByAHQQNqQf8AQwAA/kJDAAD+wiAGIANBDGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxC5ByIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQRqIARPDQYgB0EEakH/AEMAAP5CQwAA/sIgBiADQRBqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQuQciBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEFaiAETw0FIAdBBWpB/wBDAAD+QkMAAP7CIAYgA0EUaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bELkHIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBBmogBE8NBCAHQQZqQf8AQwAA/kJDAAD+wiAGIANBGGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxC5ByIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQdqIARPDQMgB0EHakH/AEMAAP5CQwAA/sIgBiADQRxqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQuQciBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEIaiAETw0CIAdBCGpB/wBDAAD+QkMAAP7CIAYgA0EgaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bELkHIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIANBJGohAyAAQQlqIQAgAUEBaiEBIAJBAWsiAg0ACwsPCyAAQQhqIQAMCAsgAEEHaiEADAcLIABBBmohAAwGCyAAQQVqIQAMBQsgAEEEaiEADAQLIABBA2ohAAwDCyAAQQJqIQAMAgsgAEEBaiEADAELIAAgBE8NACABIAhBhMTHABCMBwALIAAgBEH0w8cAEIwHAAuOCQISfwl7IwBBIGsiBiQAAkACQCACQf//A3EiCUEBIAN0akEBayADdiICQf//A00EQCAJRQ0BIAEgASAJQQJ0IgdwayIBIAdPBEAgA0EfcSIOQR1LDQMgByAOQQJqdkEEIA50IghBAWsgB3FBAEdqIREgAkECdCEVIAEgB2shDwNAAkACQCAVIBAgDnZsIgIgBU0EQCAFIAJrQQJ2IgEgESABIBFJGyIWRQ0CIAIgBGohF0EAIQsgACEJIAchDAwBCyACIAUgBUHI2MQAEOoHAAsDQCAIIAcgCCALbCICayIBIAEgCEsbIgEEQCAAIAJqIQIgFyALQQJ0aiIDLAAAIRIgAywAASETIAMsAAIhFCABQYGAgIB8bEEEayIDQSBPBEBBfCAIIAwgCCAMSRtB/////wNsa0ECdiADQQJ2QQFqIgpBB3EiA0EIIAMbIgNrQQFqIQ0gAiAKIANrQQJ0IgNqIQIgASADayEBIBL9ESEcIBP9ESEdIBT9ESEeIAkhAwNAIANBDGogHiAD/QAAACIfIBj9DQEFCQ0AAAAAAAAAAAAAAAD9hwH9pwEiGv21AUEF/a0BIB8gGP0NAAQIDAAAAAAAAAAAAAAAAP2JAf2pAf2uASIZ/RsDOgAAIANBCGogGf0bAjoAACADQQRqIBn9GwE6AAAgAyAZ/RsAOgAAIANBHGogHiADQRBqIgr9AAAAIiAgGf0NAQUJDQAAAAAAAAAAAAAAAP2HAf2nASIY/bUBQQX9rQEgICAZ/Q0ABAgMAAAAAAAAAAAAAAAA/YkB/akB/a4BIhv9GwM6AAAgA0EYaiAb/RsCOgAAIANBFGogG/0bAToAACAKIBv9GwA6AAAgA0EOaiAdIBr9tQFBBf2tASAfIBn9DQIAAAAGAAAACgAAAA4AAAD9rgEgGUEY/asBQRj9rAEgHP21AUEF/a0B/a4BIhr9GwM6AAAgA0EKaiAa/RsCOgAAIANBBmogGv0bAToAACADQQJqIBr9GwA6AAAgA0EeaiAdIBj9tQFBBf2tASAgIBr9DQIAAAAGAAAACgAAAA4AAAD9rgEgG0EY/asBQRj9rAEgHP21AUEF/a0B/a4BIhj9GwM6AAAgA0EaaiAY/RsCOgAAIANBFmogGP0bAToAACADQRJqIBj9GwA6AAAgA0EgaiEDIA1BCGsiDQ0ACwsDQCACIAItAAAgAkEBaiwAACINIBRsQQV2aiIKOgAAIAJBAmoiAyADLQAAIA0gE2xBBXZqIArAIBJsQQV2ajoAACACQQRqIQIgAUEEayIBDQALCyAIIAlqIQkgDCAIayEMIAtBAWoiCyAWRw0ACwsgEEEBaiEQIAAgB2ohACAPQQAgByAHIA9LIgEbayEPIAFFDQALCyAGQSBqJAAPC0HY5sgAQSsgBkEfakHY2MQAQaj7xgAQ4AYACyAGQQA2AhQgBkEBNgIIIAZBvKHHADYCBCAGQgQ3AgwgBkEEakGo2MQAEI0IAAsgBkEANgIUIAZBATYCCCAGQbyhxwA2AgQgBkIENwIMIAZBBGpBuNjEABCNCAAL/gcCE38BfgJAAkACQAJAIAEoAgBBAUYEQCABKAIcIgUgASgCNCIERwRAIAEoAjAhCyAEIQMgBSABKAI8IghBAWsiEGoiAiAETw0CIAEoAjghDSAFIAtqIREgBSAIaiEGIAEoAhgiAyAFaiEOIAggA2shEiAFIAEoAhAiDGtBAWohEyABKQMIIRUgASgCJCIPQX9GIQkgDyEHIAUhAwNAIAMgBUcNAwJAAkAgFSACIAtqMQAAiKdBAXFFBEAgASAGNgIcIAYhAyAJDQJBACECDAELIAwgByAMIAcgDEsbIAkbIgogCCAIIApJGyEUIAohAwJAAkACQANAIAMiAiAURgRAQQAgByAJGyEKIAwhAgNAIAIgCk0EQCABIAY2AhwgD0F/RwRAIAFBADYCJAsgACAGNgIIIAAgBTYCBCAAQQA2AgAPCyACQQFrIgIgCE8NBSACIAVqIgMgBE8NAyACIA1qLQAAIAMgC2otAABGDQALIAEgDjYCHCASIQIgDiEDIAlFDQUMBgsgAiAFaiAETw0CIAJBAWohAyACIA1qLQAAIAIgEWotAABGDQALIAIgE2ohAyAJDQRBACECDAMLIAMgBEH4nscAEIwHAAsgBCAFIApqIgAgACAESRsgBEGIn8cAEIwHAAsgAiAIQeiexwAQjAcACyABIAI2AiQgAiEHCyADIBBqIgIgBEkNAAsgBCEDDAMLIABBAjYCAA8LAkAgAS0ADkUEQCABIAEtAAwiBUEBczoADCABKAI0IQIgASgCMCEEIAEoAgQiA0UNAQJAIAIgA00EQCACIANHDQEMAwsgAyAEaiwAAEG/f0oNAgsgBCACIAMgAkHUuMcAELsJAAsgAEECNgIADwsCQAJAIAIgA0cEQAJ/IAMgBGoiBCwAACICQQBOBEAgAkH/AXEMAQsgBC0AAUE/cSEGIAJBH3EhByAHQQZ0IAZyIAJBX00NABogBC0AAkE/cSAGQQZ0ciEGIAYgB0EMdHIgAkFwSQ0AGiAHQRJ0QYCA8ABxIAQtAANBP3EgBkEGdHJyCyEEQQEhAiAFQQFxRQ0BDAILIAVBAXENASAAQQI2AgAgAUEBOgAODwsCQCAEQYABSQ0AQQIhAiAEQYAQSQ0AQQNBBCAEQYCABEkbIQILIAAgAzYCBCAAQQE2AgAgACACIANqIgA2AgggASAANgIEDwsgACADNgIIIAAgAzYCBCAAQQA2AgAPCyADRQ0BCyADIQIDQAJAIAIgBE8EQCACIARGDQQMAQsgAiALaiwAAEG/f0wNACACIQQMAwsgAkEBaiICDQALC0EAIQQLIAAgBDYCCCAAIAU2AgQgAEEBNgIAIAEgAyAEIAMgBEsbNgIcC7QKAgN8A38jAEEQayIFJAAgALshAQJAIAC8IgZB/////wdxIgRB25+k+gNPBEAgBEHSp+2DBE8EQCAEQdbjiIcETwRAAkACQAJAAkAgBEH////7B00EQCAFQgA3AwgCQCAEQdqfpO4ETQRAIAEgAUSDyMltMF/kP6JEAAAAAAAAOEOgRAAAAAAAADjDoCICRAAAAFD7Ifm/oqAgAkRjYhphtBBRvqKgIQEgAvwCIQQMAQsgBSAEIARBF3ZBlgFrIgRBF3Rrvrs5AwAgBSAFQQhqIAQQdCEEIAZBAE4EQCAFKwMIIQEMAQtBACAEayEEIAUrAwiaIQELIARBA3FBAWsOAwMEAQILIAAgAJMhAAwHCyABIAGiIgFEgV4M/f//37+iRAAAAAAAAPA/oCABIAGiIgJEQjoF4VNVpT+ioCABIAKiIAFEaVDu4EKT+T6iRCceD+iHwFa/oKKgtowhAAwGCyABIAEgAaIiAqIiAyACIAKioiACRKdGO4yHzcY+okR058ri+QAqv6CiIAEgAyACRLL7bokQEYE/okR3rMtUVVXFv6CioKC2IQAMBQsgASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwECyABIAGiIgIgAZqiIgMgAiACoqIgAkSnRjuMh83GPqJEdOfK4vkAKr+goiADIAJEsvtuiRARgT+iRHesy1RVVcW/oKIgAaGgtiEADAMLIARB4Nu/hQRPBEBEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiAiACIAKiIgGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtiEADAMLIAZBAE4EQCABRNIhM3982RLAoCIBIAGiIgFEgV4M/f//37+iRAAAAAAAAPA/oCABIAGiIgJEQjoF4VNVpT+ioCABIAKiIAFEaVDu4EKT+T6iRCceD+iHwFa/oKKgtowhAAwDCyABRNIhM3982RJAoCIBIAGiIgFEgV4M/f//37+iRAAAAAAAAPA/oCABIAGiIgJEQjoF4VNVpT+ioCABIAKiIAFEaVDu4EKT+T6iRCceD+iHwFa/oKKgtiEADAILIARB5JfbgARPBEBEGC1EVPshCcBEGC1EVPshCUAgBkEAThsgAaAiAiACoiIBIAKaoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CiIAKhoLYhAAwCCyAGQQBOBEAgAUQYLURU+yH5v6AiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwCCyABRBgtRFT7Ifk/oCIBIAGiIgFEgV4M/f//37+iRAAAAAAAAPA/oCABIAGiIgJEQjoF4VNVpT+ioCABIAKiIAFEaVDu4EKT+T6iRCceD+iHwFa/oKKgtowhAAwBCyAEQYCAgMwDTwRAIAEgAaIiAiABoiIDIAIgAqKiIAJEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAyACRLL7bokQEYE/okR3rMtUVVXFv6CiIAGgoLYhAAwBCyAFIABDAACAA5QgAEMAAIB7kiAEQYCAgARJGzgCCCAFKgIIGgsgBUEQaiQAIAALxgcBDn4gACAANQIgIgIgADUCACIEfCIFIAA0AhAiAUL7nAF+QhCHIAF8IAA0AjAiA0KMlQJ+QhCHfCIGfT4CMCAAIAFCjJUCfkIQhyADIANC+5wBfkIQh3x9IgEgBCACfSIDfD4CECAAIAUgBnw+AgAgACADIAF9PgIgIAAgADQCFCIBQoyVAn5CEIcgADQCNCIDQvucAX5CEIcgA3x9IgIgADUCBCIEIAA1AiQiBX0iBnw+AhQgACAGIAJ9PgIkIAAgBCAFfCICIAEgAUL7nAF+QhCHfCADQoyVAn5CEId8IgR9PgI0IAAgADUCKCIFIAA1AggiBnwiByAANAIYIgFC+5wBfkIQhyABfCAANAI4IgNCjJUCfkIQh3wiCH0+AjggACAGIAV9IgUgAUKMlQJ+QhCHIAMgA0L7nAF+QhCHfH0iBn0iCj4CKCAAIAA1AiwiCyAANQIMIgx8IgkgADQCHCIBQvucAX5CEIcgAXwgADQCPCIDQoyVAn5CEId8Ig19PgI8IAAgByAIfMQiByAANAIAIgh8QgR8Ig4gAiAEfMQiAkL7nAF+QhCHIAJ8IAkgDXzEIgRCjJUCfkIQh3wiCX1CA4g+AgwgACAJIA58QgOIPgIAIAAgCCAHfUIEfCIHIAJCjJUCfkIQhyAEQvucAX5CEIcgBHx9IgJ9QgOIPgIIIAAgAiAHfEIDiD4CBCAAIAUgBnzEIgQgADQCECIFfEIEfCIGIAA0AhQiAkL7nAF+QhCHIAJ8IAFCjJUCfkIQhyADIANC+5wBfkIQh3x9IgMgDCALfSIHfMQiAUKMlQJ+QhCHfCIIfUIDiD4CHCAAIAYgCHxCA4g+AhAgACAFIAR9QgR8IgQgAkKMlQJ+QhCHIAFC+5wBfkIQhyABfH0iAX1CA4g+AhggACABIAR8QgOIPgIUIAAgCsQiAiAANAIgIgR8QgR8IgUgADQCJCIBQvucAX5CEIcgAXwgByADfcQiA0KMlQJ+QhCHfCIGfUIDiD4CLCAAIAUgBnxCA4g+AiAgACAEIAJ9QgR8IgIgAUKMlQJ+QhCHIANC+5wBfkIQhyADfH0iAX1CA4g+AiggACABIAJ8QgOIPgIkIAAgADQCOCICIAA0AjAiBHxCBHwiBSAANAI0IgFC+5wBfkIQhyABfCAANAI8IgNCjJUCfkIQh3wiBn1CA4g+AjwgACAFIAZ8QgOIPgIwIAAgBCACfUIEfCICIAFCjJUCfkIQhyADIANC+5wBfkIQh3x9IgF9QgOIPgI4IAAgASACfEIDiD4CNAuMCgIDfAN/IwBBEGsiBSQAIAC7IQECfQJAAkAgALwiBkH/////B3EiBEHbn6T6A08EQCAEQdKn7YMETwRAIARB1uOIhwRPBEACQAJAAkACQCAEQf////sHTQRAIAVCADcDCAJAIARB2p+k7gRNBEAgASABRIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIgJEAAAAUPsh+b+ioCACRGNiGmG0EFG+oqAhASAC/AIhBAwBCyAFIAQgBEEXdkGWAWsiBEEXdGu+uzkDACAFIAVBCGogBBB0IQQgBkEATgRAIAUrAwghAQwBC0EAIARrIQQgBSsDCJohAQsgBEEDcUEBaw4DAwQBAgsgACAAkwwJCyABIAEgAaIiAqIiAyACIAKioiACRKdGO4yHzcY+okR058ri+QAqv6CiIAEgAyACRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAgLIAEgAaIiAUSBXgz9///fv6JEAAAAAAAA8D+gIAEgAaIiAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2DAcLIAEgAaIiAiABmqIiAyACIAKioiACRKdGO4yHzcY+okR058ri+QAqv6CiIAMgAkSy+26JEBGBP6JEd6zLVFVVxb+goiABoaC2DAYLIAEgAaIiAUSBXgz9///fv6JEAAAAAAAA8D+gIAEgAaIiAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jAwFCyAEQd/bv4UESw0CIAZBAE4EQCABRNIhM3982RLAoCICIAIgAqIiAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAULRNIhM3982RLAIAGhIgIgAiACoiIBoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiADIAFEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYMBAsgBEHjl9uABEsNAiAGQQBOBEBEGC1EVPsh+T8gAaEiAiACIAKiIgGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwECyABRBgtRFT7Ifk/oCICIAIgAqIiAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAMLIARBgICAzANPBEAgASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAwsgBSAAQwAAgHuSOAIIIAUqAggaQwAAgD8MAgtEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAQtEGC1EVPshCcBEGC1EVPshCUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLaMCyAFQRBqJAALgQgDBX8DewZ9IAAvAQYhAwJ/IAAvAQQiAkH//wFxRQRAIAJBEHQMAQsgAkH/B3EhBiACQYCAAnEhBCACQYD4AXEiAkGA+AFGBEAgBEEQdCECIAJBgICA/AdyIAZFDQEaIAIgBkENdHJBgICA/gdyDAELIARBEHQhBCACQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2ogBHIgAg0AGiAGIAZnQRBrIgZB//8DcUEIanRB////A3EgBEGAgIDYA3IgBkEXdGtyCyEGIAAvAQghAgJ/IANB//8BcQRAIANB/wdxIQQgA0GAgAJxIQUgA0GA+AFxIgNBgPgBRwRAIAVBEHQhBSADQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIgAw0CGiAEIARnQRBrIgNB//8DcUEIanRB////A3EgBUGAgIDYA3IgA0EXdGtyDAILIAVBEHQhAyADIARBDXRyQYCAgP4HciAEDQEaIANBgICA/AdyDAELIANBEHQLIQMgAf0ABAAhByABKgJEIQsgASoCQCEOIAEqAjwhDCABKgI4IQ0gAf0ABBAhCSABKgI0QwAAgD8CfyACQf//AXEEQCACQf8HcSEEIAJBgIACcSEFIAJBgPgBcSICQYD4AUcEQCAFQRB0IQUgAkENdEGAgID8AHEgBEENdHJBgICAwANqIAVyIAINAhogBCAEZ0EQayICQf//A3FBCGp0Qf///wNxIAVBgICA2ANyIAJBF3RrcgwCCyAFQRB0IQIgAiAEQQ10ckGAgID+B3IgBA0BGiACQYCAgPwHcgwBCyACQRB0C/0RIAb9HAAgA/0cASAH/eUBIgcgB/3mASIIIAf9DQgJCgsAAQIDAAECAwABAgMgCCAIIAf9DQQFBgcAAQIDAAECAwABAgP95AH95AH94wH9HwBDvTeGNRDgCJUiDwJ/IAAvAQoiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhACABQYCAAnEhAyABQYD4AXEiAUGA+AFGBEAgA0EQdCEBIAFBgICA/AdyIABFDQEaIAEgAEENdHJBgICA/gdyDAELIANBEHQhAyABQQ10QYCAgPwAcSAAQQ10ckGAgIDAA2ogA3IgAQ0AGiAAIABnQRBrIgBB//8DcUEIanRB////A3EgA0GAgIDYA3IgAEEXdGtyC76UlAJ9IA0gCSAH/eYBIgcgB/0NCAkKCwABAgMAAQIDAAECAyAHIAcgB/0NBAUGBwABAgMAAQIDAAECA/3kAf3kAf0fACIKQwAAAABfDQAaQwAAgD8gCiAPlCIKIA5gDQAaIA0gDCANkyAKIAuVlJIgCiALYEUNABogDEMAAIA/IAyTIAogC5MgDiALk5WUkguUC6UIAQl/IwBBIGsiByQAIARBfHEiBiADaiEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACIANJIgkgAiADayADIAJrIgggAiADSxtBAUZxRQRAIAFBA2siBkEAIAEgBk8bIgYgBSAFIAZLGyEKIAlBACAIQQNLGw0BIAMgCkkNAiADIQUMDgsgA0EBayICIAFPDQMgASAFSSADIAVLcg0EIAYEQCAAIANqIAAgAmotAAAgBvwLAAsgBUEBayECDA0LIAMgCkkNASADIQUMDAsgACADaiELIAAgAmohDEEAIQYDQCADIAZqQQNqIAFPDQQgAiAGaiIFQQNqIAFPDQUgASAFTQ0GIAYgC2oiCCAGIAxqIgktAAA6AAAgBUEBaiINIAFPDQcgCEEBaiAJQQFqLQAAOgAAIAEgBUECaiIFSwRAIAhBAmogCUECai0AADoAACAIQQNqIAlBA2otAAA6AAAgAyAGQQRqIgZqIgUgCk8NDAwBCwsgBSABQfyIxQAQjAcACyABQQRrIQYgAyEFA0AgAkEDaiIDIAFPDQcgAkF8Tw0IIAUgBksNCSAAIAVqIAAgAmooAAA2AAAgAkEEaiECIAogBUEEaiIFSw0ACwwKCyACIAFBpIfFABCMBwALIAMgBSABQbSHxQAQ6gcAC0HEh8UAQS9B9IfFABDrBwALQYSIxQBByABBzIjFABDrBwALIAUgAUHciMUAEIwHAAsgDSABQeyIxQAQjAcAC0EAIAMgAUG8jMUAEOoHAAsgAiACQQRqIAFBvIzFABDqBwALIAdBADYCGCAHQQE2AgwgB0HUnMgANgIIIAdCBDcCECAHQQhqQbyMxQAQjQgACyACIAZqIQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARBA3FBAWsOAwABAg4LIAEgAksNCiACIAFBjInFABCMBwALIAVBAWoiBiABTw0BIAJBAWoiAyABTw0CIAEgAk0NAyABIAVLDQogBSABQdSKxQAQjAcACyAFQQJqIgYgAU8NAyACQQJqIgMgAU8NBCABIAJNDQUgASAFTQ0GIAAgBWogACACai0AADoAACACQQFqIgIgAU8NByAFQQFqIgUgAUkNCSAFIAFBrIzFABCMBwALQayJxQBBL0HcicUAEOsHAAtB7InFAEHIAEG0isUAEOsHAAsgAiABQcSKxQAQjAcAC0HkisUAQS9BlIvFABDrBwALQaSLxQBByABB7IvFABDrBwALIAIgAUH8i8UAEIwHAAsgBSABQYyMxQAQjAcACyACIAFBnIzFABCMBwALIAEgBUsEQCACIQMgBSEGDAILIAUgAUGcicUAEIwHAAsgACAFaiAAIAJqLQAAOgAACyAAIAZqIAAgA2otAAA6AAALIAdBIGokAAvPBwIJfwJ9IAAgASACEOkEAkACQCACBEAgACgChAFBCGohASAAKAKIASEMQQEhCgNAAkACQCAMIAtBA2pLBEAgCkEBayIGIgUgBE8EQCAGIQoMBwsgBCAFayIFQQAgBCAFTxsiBUEBRg0GIAVBAkYNBSADKgIAEMYFvCIHQf///wNxIQggB0GAgICAeHEhBSABQQRrIgkvAQAhDSADQQRqKgIAIQ4gB0GAgID8B3EiBkGAgID8B0YEQCAFQRB2IAhBDXZyQYAEQQAgCBtyQYD4AXIhBQwDCyAFQRB2IQUgBkGAgIC4BEsNASAGQYCAgMQDTwRAIAdBDHYgB0H/3wBxQQBHcSAGQQ12IAhBDXZqQYCAAWogBXJqIQUMAwsgBkGAgICYA0kNAiAIQYCAgARyIgdB/gAgBkEXdiIIa3YhBiAHQR0gCGsiCHZBAXEEfyAGQQMgCHRBAWsgB3FBAEdqBSAGCyAFciEFDAILIAsgC0EEaiAMQdi/wQAQ6gcACyAFQYD4AXIhBQsgA0EIaioCACAJIAVBEHQgDXI2AgAgDhDGBbwiB0H///8DcSEIIAdBgICAgHhxIQUCQCAHQYCAgPwHcSIGQYCAgPwHRgRAIAVBEHYgCEENdnJBgARBACAIG3JBgPgBciEFDAELIAVBEHYhBSAGQYCAgLgETQRAIAZBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIAZBDXYgCEENdmpBgIABaiAFcmohBQwCCyAGQYCAgJgDSQ0BIAhBgICABHIiB0H+ACAGQRd2IghrdiEGIAdBHSAIayIIdkEBcQR/IAZBAyAIdEEBayAHcUEAR2oFIAYLIAVyIQUMAQsgBUGA+AFyIQULEMYFvCIIQf///wNxIQkgCEGAgICAeHEhBwJAIAhBgICA/AdxIgZBgICA/AdGBEAgB0EQdiAJQQ12ckGABEEAIAkbckGA+AFyIQcMAQsgB0EQdiEHIAZBgICAuARNBEAgBkGAgIDEA08EQCAIQQx2IAhB/98AcUEAR3EgBkENdiAJQQ12akGAgAFqIAdyaiEHDAILIAZBgICAmANJDQEgCUGAgIAEciIIQf4AIAZBF3YiCWt2IQYgCEEdIAlrIgl2QQFxBH8gBkEDIAl0QQFrIAhxQQBHagUgBgsgB3IhBwwBCyAHQYD4AXIhBwsgASAFQf//A3EgB0EQdHI2AgAgAUEQaiEBIAtBBGohCyAKQQNqIQogA0EMaiEDIAJBAWsiAg0ACwsgAEEBOgDAAQ8LIApBAWohCgsgCiAEQei/wQAQjAcAC6IdAwV+EX8Be0HYtckAKQMAIgMgAa2FIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAEQtii0e/CqeW/LX6FIgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRB0LXJACkDACIEQn+FfiIFQjiGIAVCgP4Dg0IohoQgBUKAgPwHg0IYhiAFQoCAgPgPg0IIhoSEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISEIAMgBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhH6FIAOJIQdByLXJACgCAEUEQAJAIwBBIGsiDiQAAkACQAJAAkACfwJAAkACQAJAQci1yQACfwJAAkACQEHMtckAKAIAQQFqIggEQEHEtckAKAIAIgkgCUEBaiIMQQN2Ig1BB2wgCUEISRsiCUEBdiAISQRAIAlBAWoiCSAIIAggCUkbIghBD0kNAiAIQf////8BTQRAQX8gCEEDdEEHbkEBa2d2IghB/v//P0sNCCAIQQFqIQoMBwsMDgtBACAMRQ0EGkHAtckAKAIAIQsgDSAMQQdxQQBHaiIIQQFNDQIgCyEKIAhB/v///wNxIg0hCQNAIAogCv0AAwAiGf1NQQf9zQH9DAEBAQEBAQEBAQEBAQEBAQH9TiAZ/Qx/f39/f39/f39/f39/f39//VD9zgH9CwMAIApBEGohCiAJQQJrIgkNAAsgCCANRg0DIA1BA3QhCiAIQQFxIQgMAgsMDAtBBCAIQQhxQQhqIAhBBEkbIQoMAwsgCiALaiEKA0AgCiAKKQMAIgNCf4VCB4hCgYKEiJCgwIABgyADQv/+/fv379+//wCEfDcDACAKQQhqIQogCEEBayIIDQALCwJAIAxBCE8EQCALIAxqIAspAAA3AAAMAQsgDEUNACALQQhqIAsgDPwKAAALQQEhCUEAIQgDQCAIIQsgCSEIAkAgC0HAtckAKAIAIglqLQAAQYABRw0AIAkgC0F/c0EFdGohD0EAIAtrQQV0IRQDQEHEtckAKAIAIg1B2LXJACkDACIDIAkgFGpBIGs1AgCFIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAEQtii0e/CqeW/LX6FIgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRB0LXJACkDACIEQn+FfiIFQjiGIAVCgP4Dg0IohoQgBUKAgPwHg0IYhiAFQoCAgPgPg0IIhoSEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISEIAMgBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCAEQgiIQoCAgPgPgyAEQhiIQoCA/AeDhCAEQiiIQoD+A4MgBEI4iISEhH6FIAOJpyITcSIQIQogCSAQaikAAEKAgYKEiJCgwIB/gyIDUARAQQghEQNAIAogEWohCiARQQhqIREgCSAKIA1xIgpqKQAAQoCBgoSIkKDAgH+DIgNQDQALCyAJIAN6p0EDdiAKaiANcSIKaiwAAEEATgRAIAkpAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAKIBBrIAsgEGtzIA1xQQhPBEAgCSAKaiIQLQAAIBAgE0EZdiIQOgAAQcC1yQAoAgAgCkEIayANcWpBCGogEDoAACAJIApBf3NBBXRqIQlB/wFGBEBBxLXJACgCACEKQcC1yQAoAgAgC2pB/wE6AABBwLXJACgCACAKIAtBCGtxakEIakH/AToAACAJQRBqIA9BEGr9AAAA/QsAACAJIA/9AAAA/QsAAAwDCyAPIAlBIBCwA0HAtckAKAIAIQkMAQsLIAkgC2ogE0EZdiIJOgAAQcC1yQAoAgAgDSALQQhrcWpBCGogCToAAAsgCCAIIAxJIgpqIQkgCg0AC0HEtckAKAIAIgggCEEBakEDdkEHbCAIQQhJGwtBzLXJACgCAGs2AgAMBQsgCkEIaiIIIApBBXQiC2oiCSAISSAJQfj///8HS3INACAJEHEiCUUNASAJIAtqIQsgCARAIAtB/wEgCPwLAAsgCkEBayINIApBA3ZBB2wgDUEISRshEUHAtckAKAIAIQlBzLXJACgCACIQDQJBAAwDCyAOQQA2AhggDkEBNgIMIA5BxLXEADYCCCAOQgQ3AhAgDkEIakGYtcQAEI0ICwALIAtBCGohEyAJQSBrIRQgCSkDAEJ/hUKAgYKEiJCgwIB/gyEGQQAhCiAJIQgDQCAGUARAA0AgCkEIaiEKIAhBCGoiCCkDAEKAgYKEiJCgwIB/gyIDQoCBgoSIkKDAgH9RDQALIANCgIGChIiQoMCAf4UhBgsgCyANQdi1yQApAwAiAyAUIAZ6p0EDdiAKaiIVQQV0azUCAIUiBEI4hiAEQoD+A4NCKIaEIARCgID8B4NCGIYgBEKAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhELSgaqbq/qC16d/fiIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEIARC2KLR78Kp5b8tfoUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhEHQtckAKQMAIgRCf4V+IgVCOIYgBUKA/gODQiiGhCAFQoCA/AeDQhiGIAVCgICA+A+DQgiGhIQgBUIIiEKAgID4D4MgBUIYiEKAgPwHg4QgBUIoiEKA/gODIAVCOIiEhIQgAyAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEfoUgA4mnIhZxIgxqKQAAQoCBgoSIkKDAgH+DIgNQBEBBCCEPA0AgDCAPaiEMIA9BCGohDyALIAwgDXEiDGopAABCgIGChIiQoMCAf4MiA1ANAAsLIAZCAX0gBoMhBiALIAN6p0EDdiAMaiANcSIMaiwAAEEATgRAIAspAwBCgIGChIiQoMCAf4N6p0EDdiEMCyALIAxqIBZBGXYiDzoAACATIAxBCGsgDXFqIA86AAAgCyAMQX9zQQV0aiIMQRBqIAkgFUF/c0EFdGoiD0EQav0AAAD9CwAAIAwgD/0AAAD9CwAAIBBBAWsiEA0AC0HAtckAKAIAIQlBzLXJACgCAAshCkHAtckAIAs2AgBBxLXJACgCACEIQcS1yQAgDTYCAEHItckAIBEgCms2AgAgCEUNACAIIAhBBXRBJ2pBYHEiCmpBCWoiCEUNACAJIAprIglBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAhqSQ0BIApBACALIAhBJ2pLGw0CIAkQogILIA5BIGokAAwDC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgDkEANgIYIA5BATYCDCAOQcS1xAA2AgggDkIENwIQIA5BCGpBmLXEABCNCAALC0HEtckAKAIAIgogB6dxIQggB0IZiCIFQv8Ag0KBgoSIkKDAgAF+IQZBwLXJACgCACEJA0ACfwJAAkAgCCAJaikAACIEIAaFIgNCf4UgA0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIDUEUEQANAIAEgCSADeqdBA3YgCGogCnFBBXRrIgtBIGsoAgBGDQIgA0IBfSADgyIDUEUNAAsLIARCgIGChIiQoMCAf4MhAyAXRQRAIANQDQIgA3qnQQN2IAhqIApxIRILQQEgAyAEQgGGg1ANAhogCSASaiwAACIIQQBOBEAgCSAJKQMAQoCBgoSIkKDAgH+DeqdBA3YiEmotAAAhCAsgCSASaiAFp0H/AHEiCzoAACAJIBJBCGsgCnFqQQhqIAs6AABByLXJAEHItckAKAIAIAhBAXFrNgIAIABBgICAgHg2AgBBzLXJAEHMtckAKAIAQQFqNgIAIAkgEkEFdGsiCEEcayIAQRhqIAJBGGooAgA2AgAgACACKQIANwIAIAhBIGsgATYCACAAQQhqIAJBCGr9AAIA/QsCAA8LIAAgC0EcayIB/QACAP0LAgAgASACKQIANwIAIABBGGogAUEYaiIIKAIANgIAIABBEGogAUEQaikCADcCACABQQhqIAJBCGr9AAIA/QsCACAIIAJBGGooAgA2AgAPC0EACyEXIBhBCGoiGCAIaiAKcSEIDAALAAupBwEffyMAQRBrIgYkAAJAAkAgA0EDbCIKQf////8DSw0AIANBDGwiBEH9////B08NAAJAIARFBEBBBCEHDAELIAohCCAEEHEiB0UNAgsgBkEANgIMIAYgBzYCCCAGIAg2AgQCQAJAAkACQAJAAkACQAJAAkACQAJAIAMEQCACIANrIgRBACACIARPGyENIAIgCmsiBEEAIAIgBE8bIQ4gAiADQQlsIgtrIgRBACACIARPGyEPIAIgA0EGbCIMayIEQQAgAiAETxshECABIANqIREgASAKaiESIAEgA0ECdCITaiEUIAEgA0EHbCIVaiEWIAEgA0EKbCIXaiEYIAEgA0EBdCIZaiEaIAEgA0EFbCIbaiEcIAEgA0EDdCIdaiEeIAEgA0ELbCIfaiEgIAEgDGohISABIAtqISJBCCEIQQAhBANAIAIgBEYEQCAEIQUMDQsgBCAORg0JIAQgEEYNCiAEIA9GDQsgASAEai0AACAEIBJqLQAAQQh0ciAEICFqLQAAQRB0ciAEICJqLQAAQRh0ciEJIAYoAgQgBUYEQCAGQQRqQezqxwAQ+gUgBigCCCEHCyAHIAhqQQhrIAk2AgAgBiAFQQFqIgU2AgwgBCANRg0FIAQgE2ogAk8NAiAEIBVqIAJPDQMgBCAXaiACTw0EIAQgEWotAAAgBCAUai0AAEEIdHIgBCAWai0AAEEQdHIgBCAYai0AAEEYdHIhCSAGKAIEIAVGBEAgBkEEakHs6scAEPoFIAYoAgghBwsgByAIakEEayAJNgIAIAYgBUEBaiIJNgIMIAQgGWoiBSACTw0MIAQgG2ogAk8NBiAEIB1qIAJPDQcgBCAfaiACTw0IIAQgGmotAAAgBCAcai0AAEEIdHIgBCAeai0AAEEQdHIgBCAgai0AAEEYdHIhBSAGKAIEIAlGBEAgBkEEakHs6scAEPoFIAYoAgghBwsgByAIaiAFNgIAIAYgCUEBaiIFNgIMIAhBDGohCCADIARBAWoiBEcNAAsLIAAgBikCBDcCACAAQQhqIAZBDGooAgA2AgAgBkEQaiQADwsgA0ECdCAEaiEFDAkLIANBB2wgBGohBQwICyADQQpsIARqIQUMBwsgAyAEaiEFDAYLIANBBWwgBGohBQwFCyADQQN0IARqIQUMBAsgA0ELbCAEaiEFDAMLIAQgCmohBQwCCyAEIAxqIQUMAQsgBCALaiEFCyAFIAJB/OrHABCMBwALQdzqxwAQ/wcLAAuwCAMDfwF8BH0jAEEQayICJAACQCABKAIAQZSAgIB4RgRAAn0CQCAAAn8CQAJAAkACfQJAAkACQAJ9AkACQCABKAIMIgQEQAJ9AkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAggiASgCACIDQYCAgIB4cyADQQBOG0EBaw4KCgABAgMEBQYHCAkLIAEvAQSzDAoLIAEoAgSzDAkLIAEpAwi1DAgLIAEsAASyDAcLIAEuAQSyDAYLIAEoAgSyDAULIAEpAwi0DAQLIAEqAgQMAwsgASsDCCIFtkMAAIA/QwAAgL8gBb1CAFkbmAwCCyABIAJBD2pB2OfAABCVCAwNCyABLQAEswshBiAEQQFGDQQCQAJAAkACQAJAAkACQAJAAkBBFSABKAIQIgNBgICAgHhzIANBAE4bQQFrDgoLAAECAwQFBgcICgsgAS8BFLMMCwsgASgCFLMMCgsgASkDGLUMCQsgASwAFLIMCAsgAS4BFLIMBwsgASgCFLIMBgsgASkDGLQMBQsgASoCFAwECyABKwMYIgW2QwAAgD9DAACAvyAFvUIAWRuYDAMLQQAgAkEPakGk4sAAENsGDAoLIAFBEGogAkEPakHY58AAEJUIDAkLIAEtABSzCyEHIARBAkYNBAJAAkACQAJAAkACQAJAAkACQEEVIAEoAiAiA0GAgICAeHMgA0EAThtBAWsOCgsAAQIDBAUGBwgKCyABLwEkswwLCyABKAIkswwKCyABKQMotQwJCyABLAAksgwICyABLgEksgwHCyABKAIksgwGCyABKQMotAwFCyABKgIkDAQLIAErAygiBbZDAACAP0MAAIC/IAW9QgBZG5gMAwtBASACQQ9qQaTiwAAQ2wYMBgsgAUEgaiACQQ9qQdjnwAAQlQgMBQsgAS0AJLMLIQggBEEDRg0CAkACQAJAAkACQAJAAkACQAJAQRUgASgCMCIDQYCAgIB4cyADQQBOG0EBaw4KDQABAgMEBQYHCAoLIAEvATSzDA0LIAEoAjSzDAwLIAEpAzi1DAsLIAEsADSyDAoLIAEuATSyDAkLIAEoAjSyDAgLIAEpAzi0DAcLIAEqAjQMBgsgASsDOCIFtkMAAIA/QwAAgL8gBb1CAFkbmAwFC0ECIAJBD2pBpOLAABDbBgwCCyABQTBqIAJBD2pB2OfAABCVCAwBC0EDIAJBD2pBpOLAABDbBgs2AgQgAEEBNgIADAMLIAEtADSzCyEJIARBBEcEQCACQQQ2AgggBEH8////AGpB/////wBxQQRqIAJBCGpB6JXBABDbBiEBIABBATYCACAAIAE2AgQMAgsgACAJOAIQIAAgCDgCDCAAIAc4AgggACAGOAIEIABBADYCAAwBCyABIAJBD2pBpOLAABCVCCEBIABBATYCACAAIAE2AgQLIAJBEGokAAvGCAEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAIANBAXENACADQQJxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUHYuskAKAIARgRAIAIoAgRBA3FBA0cNAUHQuskAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCACIAA2AgAPCyABIAMQ1gQLAkACQAJAAkACQAJAAkAgAigCBCIDQQJxRQRAIAJB3LrJACgCAEYNAiACQdi6yQAoAgBGDQMgAiADQXhxIgIQ1gQgASAAIAJqIgBBAXI2AgQgACABaiAANgIAIAFB2LrJACgCAEcNAUHQuskAIAA2AgAPCyACIANBfnE2AgQgASAAQQFyNgIEIAAgAWogADYCAAsgAEGAAkkNAkEfIQIgAUIANwIQIABB////B00EQCAAQSYgAEEIdmciAmt2QQFxIAJBAXRrQT5qIQILIAEgAjYCHCACQQJ0QbC3yQBqIQNBASACdCIEQcy6yQAoAgBxDQMgAyABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIQcy6yQBBzLrJACgCACAEcjYCAAwEC0HcuskAIAE2AgBB1LrJAEHUuskAKAIAIABqIgA2AgAgASAAQQFyNgIEQdi6yQAoAgAgAUYEQEHQuskAQQA2AgBB2LrJAEEANgIACyAAQei6yQAoAgAiAk0NBUHcuskAKAIAIgBFDQVB1LrJACgCACIDQSlJDQRBsLjJACEBA0AgACABKAIAIgVPBEAgACAFIAEoAgRqSQ0GCyABKAIIIQEMAAsAC0HYuskAIAE2AgBB0LrJAEHQuskAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LAn9ByLrJACgCACICQQEgAEEDdnQiA3FFBEBByLrJACACIANyNgIAIABB+AFxQcC4yQBqIgAMAQsgAEH4AXEiAkHAuMkAaiEAIAJByLjJAGooAgALIQIgACABNgIIIAIgATYCDCABIAA2AgwgASACNgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQfC6yQBB8LrJACgCAEEBayIANgIAIAANAUG4uMkAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQfC6yQBB/x8gASABQf8fTRs2AgAPC0G4uMkAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQfC6yQBB/x8gBCAEQf8fTRs2AgAgAiADTw0AQei6yQBBfzYCAAsLrgcBCX8gACABIAIQzAMCQAJAIAIEQCAAKAJgQQhqIQwgACgCZCENQQEhCgNAAkACQCANIAtBA2pLBEAgCkEBayIBIARPBEAgASEKDAcLIAQgAWsiAUEAIAEgBE0bIgFBAUYNBiABQQJGDQUgAygCACIHQf///wNxIQUgB0GAgICAeHEhCSADQQRqKAIAIQEgB0GAgID8B3EiBkGAgID8B0YEQCAJQRB2IAVBDXZyQYAEQQAgBRtyQYD4AXIhCQwDCyAJQRB2IQkgBkGAgIC4BEsNASAGQYCAgMQDTwRAIAdBDHYgB0H/3wBxQQBHcSAGQQ12IAVBDXZqQYCAAWogCXJqIQkMAwsgBkGAgICYA0kNAiAFQYCAgARyIgVB/gAgBkEXdiIGa3YhByAFQR0gBmsiBnZBAXEEfyAHQQMgBnRBAWsgBXFBAEdqBSAHCyAJciEJDAILIAsgC0EEaiANQYjbwAAQ6gcACyAJQYD4AXIhCQsgA0EIaigCACEHIAFB////A3EhCCABQYCAgIB4cSEGAkAgAUGAgID8B3EiBUGAgID8B0cEQCAGQRB2IQYgBUGAgIC4BE0EQCAFQYCAgMQDTwRAIAFBDHYgAUH/3wBxQQBHcSAFQQ12IAhBDXZqQYCAAWogBnJqIQYMAwsgBUGAgICYA0kNAiAIQYCAgARyIghB/gAgBUEXdiIFa3YhASAIQR0gBWsiBXZBAXEEfyABQQMgBXRBAWsgCHFBAEdqBSABCyAGciEGDAILIAZBgPgBciEGDAELIAZBEHYgCEENdnJBgARBACAIG3JBgPgBciEGCyAHQf///wNxIQggB0GAgICAeHEhAQJAIAdBgICA/AdxIgVBgICA/AdHBEAgAUEQdiEBIAVBgICAuARNBEAgBUGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgBUENdiAIQQ12akGAgAFqIAFyaiEBDAMLIAVBgICAmANJDQIgCEGAgIAEciIIQf4AIAVBF3YiBWt2IQcgCEEdIAVrIgV2QQFxBH8gB0EDIAV0QQFrIAhxQQBHagUgBwsgAXIhAQwCCyABQYD4AXIhAQwBCyABQRB2IAhBDXZyQYAEQQAgCBtyQYD4AXIhAQsgDCABOwEAIAxBBGsgCUH//wNxIAZBEHRyNgIAIAxBEGohDCALQQRqIQsgCkEDaiEKIANBDGohAyACQQFrIgINAAsLIABBAToAuAEPCyAKQQFqIQoLIAogBEGY28AAEIwHAAutBwEJfyAAIAEgAhDpBAJAAkAgAgRAIAAoAoQBIQwgACgCiAEhDUEBIQkDQAJAAkAgDSALQQNqSwRAIAlBAWsiASAETwRAIAEhCQwHCyAEIAFrIgFBACABIARNGyIBQQFGDQYgAUECRg0FIAMoAgAiCEH///8DcSEHIAhBgICAgHhxIQYgA0EEaigCACEBIAhBgICA/AdxIgVBgICA/AdGBEAgBkEQdiAHQQ12ckGABEEAIAcbckGA+AFyIQYMAwsgBkEQdiEGIAVBgICAuARLDQEgBUGAgIDEA08EQCAIQQx2IAhB/98AcUEAR3EgBUENdiAHQQ12akGAgAFqIAZyaiEGDAMLIAVBgICAmANJDQIgB0GAgIAEciIIQf4AIAVBF3YiB2t2IQUgCEEdIAdrIgd2QQFxBH8gBUEDIAd0QQFrIAhxQQBHagUgBQsgBnIhBgwCCyALIAtBBGogDUGYu8EAEOoHAAsgBkGA+AFyIQYLIANBCGooAgAhCCABQf///wNxIQogAUGAgICAeHEhBQJAIAFBgICA/AdxIgdBgICA/AdGBEAgBUEQdiAKQQ12ckGABEEAIAobckGA+AFyIQUMAQsgBUEQdiEFIAdBgICAuARNBEAgB0GAgIDEA08EQCABQQx2IAFB/98AcUEAR3EgB0ENdiAKQQ12akGAgAFqIAVyaiEFDAILIAdBgICAmANJDQEgCkGAgIAEciIKQf4AIAdBF3YiB2t2IQEgCkEdIAdrIgd2QQFxBH8gAUEDIAd0QQFrIApxQQBHagUgAQsgBXIhBQwBCyAFQYD4AXIhBQsgDCAGQf//A3EgBUEQdHI2AgAgCEH///8DcSEFIAhBgICAgHhxIQECQCAIQYCAgPwHcSIGQYCAgPwHRgRAIAFBEHYgBUENdnJBgARBACAFG3JBgPgBciEBDAELIAFBEHYhASAGQYCAgLgETQRAIAZBgICAxANPBEAgCEEMdiAIQf/fAHFBAEdxIAZBDXYgBUENdmpBgIABaiABcmohAQwCCyAGQYCAgJgDSQ0BIAVBgICABHIiCEH+ACAGQRd2IgZrdiEFIAhBHSAGayIGdkEBcQR/IAVBAyAGdEEBayAIcUEAR2oFIAULIAFyIQEMAQsgAUGA+AFyIQELIAxBBGogATsBACAMQRBqIQwgC0EEaiELIAlBA2ohCSADQQxqIQMgAkEBayICDQALCyAAQQE6AMABDwsgCUEBaiEJCyAJIARBqLvBABCMBwALqggCB38CfiMAQUBqIgIkAAJAAkACQAJAAkAgASgCFCIDIAEoAhAiBEkEQCABKAIMIQgCfgJAA0AgAyAIai0AACIFQQlrIgZBF0tBASAGdEGTgIAEcUVyDQEgASADQQFqIgM2AhQgAyAERw0ACyAEIQNCAAwBC0KAAgsgBa1CEIaEQoCCuANRDQELAkACQAJAIAJBEGogASgCDCIFIAQgAyAESQR/A0ACQCADIAVqLQAAIgZBCWsOJQAABAQABAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAMECyABIANBAWoiAzYCFCADIARHDQALIAQFIAMLQQFqIgEgBCABIARJGxD5ASACKAIUIQEgAigCECEEQRQQcSIDRQ0EIAMgBDYCDCADQQU2AgAgAyABNgIQDAYLIAEgA0EBajYCFCACQRhqIAFBABDHAyACKQMYIgpCA1ENBCACKQMgIQkCQAJAAkAgCqdBAWsOAgABAgsgCUKAgICAEFQNAyACQQE6ACggAiAJNwMwIAJBKGogAkE/akGY58AAEN4GIAEQ6wUhAwwHCyAJQoCAgIAQVA0CIAJBAjoAKCACIAk3AzAgAkEoaiACQT9qQZjnwAAQ3gYgARDrBSEDDAYLIAJBAzoAKCACIAk3AzAgAkEoaiACQT9qQZjnwAAQ3wYgARDrBSEDDAULIAZBMGtB/wFxQQpPBEAgASACQT9qQZjnwAAQ7gEgARDrBSEDDAULIAJBGGogAUEBEMcDIAIpAxgiCkIDUQRAIAIoAiAhAwwFCyACKQMgIQkCfwJAAkACQCAKp0EBaw4CAAECCyAJQoCAgIAQVA0DIAJBAToAKCACIAk3AzAgAkEoaiACQT9qQZjnwAAQ3gYMAgsgCUKAgICAEFQNAiACQQI6ACggAiAJNwMwIAJBKGogAkE/akGY58AAEN4GDAELIAJBAzoAKCACIAk3AzAgAkEoaiACQT9qQZjnwAAQ3wYLIAEQ6wUhAwwECyAAIAk+AgQgAEEBNgIADAQLIAEgA0EBaiIHNgIUAkACQAJAIAQgB00NACABIANBAmoiBTYCFCAHIAhqLQAAQfUARw0BIAUgByAEIAQgB0kbIgdGDQAgASADQQNqIgY2AhQgBSAIai0AAEHsAEcEQCAGIQUMAgsgBiAHRg0AIAEgA0EEaiIFNgIUIAYgCGotAABB7ABHDQEgAEEANgIADAYLIAIgCCAEIAcQ+QEgAigCBCEEIAIoAgAhAUEUEHEiA0UNAiADQQU2AgAMAQsgAkEIaiAIIAQgBRD5ASACKAIMIQQgAigCCCEBQRQQcSIDRQ0BIANBCTYCAAsgAyABNgIMIAAgAzYCBCAAQQI2AgAgAyAENgIQDAMLAAsgAigCICEDCyAAQQI2AgAgACADNgIECyACQUBrJAALmAcCDn8CfiMAQdAAayICJAAgACgCCCEDIAAoAgQhBQJAAn9BASABKAIAIghBIiABKAIEIgooAhAiCxECAA0AGiACIAM2AgggAiAFNgIEIAJBL2qtQoCAgICAB4QhEANAAkAgAkEMaiACQQRqEO0DIAgCfwJAIAIoAgwiBQRAIAIoAhghDCACKAIUIQ1BACACKAIQIgNFDQIaIAMgBWohD0EAIQAgBSEBQQAhBwNAAn8gASwAACIEQQBOBEAgBEH/AXEhBCABQQFqDAELIAEtAAFBP3EhBiAEQR9xIQkgBEFfTQRAIAlBBnQgBnIhBCABQQJqDAELIAEtAAJBP3EgBkEGdHIhBiAEQXBJBEAgBiAJQQx0ciEEIAFBA2oMAQsgCUESdEGAgPAAcSABLQADQT9xIAZBBnRyciEEIAFBBGoLIQkgAkEcaiAEQYGCBBCBAyACLQApIAItAChrQf8BcUEBRwRAAkACQCAAIAdLDQACQCAARQ0AIAAgA08EQCAAIANHDQIMAQsgACAFaiwAAEG/f0wNAQsCQCAHRQ0AIAMgB00EQCADIAdGDQEMAgsgBSAHaiwAAEG/f0wNAQsgCCAAIAVqIAcgAGsgCigCDBEAAEUNAQwHCyAFIAMgACAHQYCKwwAQuwkACyACQThqIAJBJGopAgA3AwAgAiACKQIcIhE3AzAgAi0APCEAAkAgAi0APSIGQYEBTwRAIBGnIQ4DQCAAQf8BcSAGTw0CIABBAWohACAIIA4gCxECAEUNAAsMBwsgACAGIAAgBksbIQYDQCAAIAZGDQEgAkEwaiAAaiEOIABBAWohACAIIA4tAAAgCxECAEUNAAsMBgsCf0EBIARBgAFJDQAaQQIgBEGAEEkNABpBA0EEIARBgIAESRsLIAdqIQALIAcgAWsgCWohByAJIgEgD0cNAAsMAQsgCEEiIAsRAgAMBAtBACAARQ0AGiAAIANPBEAgAyAAIANGDQEaDAULIAAgBWosAABBQEgNBCAACyIBIAVqIAMgAWsgCigCDBEAAA0AIAxFDQEDQCACIA0tAAA6AC8gAkEBNgJEIAJB6InDADYCQCACQQE2AjQgAkHgicMANgIwIAJBATYCPCACIBA3A0ggAiACQcgAajYCOCAIIAogAkEwahDBAw0BIA1BAWohDSAMQQFrIgwNAAsMAQsLQQELIAJB0ABqJAAPCyAFIAMgACADQcyJwwAQuwkAC+MHAwZ/B30BeyMAQZABayICJAAgAiAAKAIAIgb9AAIAIg8gD/0NAAECAwQFBgcICQoLCAkKC/0LBAAgAgJ/IA/9GQYiA0H//wFxRQRAIANBEHQMAQsgA0H/B3EhBCADQYCAAnEhBSADQYD4AXEiA0GA+AFGBEAgBUEQdCIDQYCAgPwHciAERQ0BGiADIARBDXRyQYCAgP4HcgwBCyAFQRB0IgUgA0ENdEGAgID8AHEgBEENdHJBgICAwANqciADDQAaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAFQYCAgNgDciAEQRd0a3ILNgIcIAJDAAAAACAAKAIEIgAqAgAgAC0AHEECRiIEGyIIIAZBEGotAAAiA7NDAAB/Q5VDAACAPyAAKgIEIAQbIAiTIgmUkv0TIAggBkEOai8BACIFIANBEHRyQf8BcbNDAAB/Q5UgCZSS/SAAIAggBUEIdrNDAAB/Q5UgCZSS/SAB/QsEICAGQRFqLwAAIAZBE2otAAAiA0EQdHIiBUEIdiEHQwAAEEEgACoCDCAEGyEJQwAAQMEgACoCCCAEGyEIIAVB/wFxBEAgCCAJIAiTQwAAfkOVIAVBAWtB/wFxs5SSEIkEIQsLIAdB/wFxBEAgCCAJIAiTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIQoLIAIgAwR9IAggCSAIk0MAAH5DlSADQQFrQf8BcbOUkhCJBAVDAAAAAAv9EyAL/SAAIAr9IAH9CwQwQwAAgD8gBkEUai8BACIAQQh2s/0TIAAgBkEWai0AACIGQRB0ckH/AXGz/SAB/QwAAH9DAAB/QwAAf0MAAH9D/ecBIg8gD/3kAf0MAACAvwAAgL8AAIC/AACAv/3kASIP/R8BIgqLkyAP/R8AIgyLkyIIjEMAAAAAEOAIIQkgAiAGs0MAAH9DlUMAAAA/lEPbD0lAlCINEJkCIgsgCiAJIAmMIg4gD/0MAAAAAAAAAAAAAAAAAAAAAP1G/U0iD/3HAf0bAkEBcRuSIgogCCAIlCAKIAqUIAwgCSAOIA/9GwBBAXEbkiIJIAmUkpKRIgqVlP0TIAsgCSAKlZT9IAEgCyAIIAqVlP0gAiANEJsC/SAD/QsEQCACIAJBQGutQoCAgIDAAoQ3A3AgAiACQTBqrUKAgICAoAKENwNoIAIgAkEgaq1CgICAgKAChDcDYCACIAJBHGqtQoCAgIDQAoQ3A1ggAiACrUKAgICAoAKENwNQIAEoAgAgASgCBCACQgU3AoQBIAJBBjYCfCACQeCqxwA2AnggAiACQdAAajYCgAEgAkH4AGoQwQMgAkGQAWokAAuyBwEJfyMAQdAAayIBJABBgYDEACECAkACQCAAKAIEIgQgACgCECIDSQ0AIAAgBCADayIENgIEIAAgACgCACICIANqIgg2AgACQAJAIANBAkYEQCACLQAAIgNBwQBrQV9xQQpqIANBMGsgA0E5SxsiBUEPSw0EIAItAAEiA0HBAGtBX3FBCmogA0EwayADQTlLGyIDQRBPDQQgBUEEdCADciIFwEEATg0BQYCAxAAhAiAFQf8BcSIDQcABSQ0DAn9BAiADQeABSQ0AGkEDIANB8AFJDQAaIANB+AFPDQRBBAshA0EAIQIgAUEAOgATIAFBADsAESABIAU6ABAgASADNgIMIANBAXRBAmshCSABIAFBEGo2AgggAUERaiEFA0AgBEECSQRAQYCAxAAhAgwFCyAAIARBAmsiBDYCBCAAIAIgCGoiBkECajYCACAGLQAAIgdBwQBrQV9xQQpqIAdBMGsgB0E5SxsiB0EPSw0FIAZBAWotAAAiBkHBAGtBX3FBCmogBkEwayAGQTlLGyIGQRBPDQUgBSAHQQR0IAZyOgAAIAVBAWohBSAJIAJBAmoiAkcNAAsMAgtBpPjGAEEoQbywxQAQ6wcAC0EBIQMgAUEBNgIMIAFBADoAEyABQQA7ABEgASAFOgAQIAEgAUEQajYCCAsgAUE4aiABQRBqIAMQ+wJBgIDEACECIAEoAjgNACABKAI8IQAgASABKAJAIgI2AhggASAANgIUIAAgAmohAwJAIAJFDQAgAwJ/IAAsAAAiAkEATgRAIAJB/wFxIQIgAEEBagwBCyAALQABQT9xIQUgAkEfcSEEIAJBX00EQCAEQQZ0IAVyIQIgAEECagwBCyAALQACQT9xIAVBBnRyIQUgAkFwSQRAIAUgBEEMdHIhAiAAQQNqDAELIARBEnRBgIDwAHEgAC0AA0E/cSAFQQZ0cnIhAiAAQQRqCyIERwRAIAQsAAAaDAELIAJBgIDEAEcNAQsgAQJ/QQAhAiADIABrIgRBEE8EQCAAIAQQxwIMAQsgACADRwRAA0AgAiAALAAAQb9/SmohAiAAQQFqIQAgBEEBayIEDQALCyACCzYCNCABQQQ2AiAgAUG8scUANgIcIAFCAzcCKCABIAFBNGqtQoCAgIAQhDcDSCABIAFBFGqtQoCAgICgDYQ3A0AgASABQQhqrUKAgICAsA2ENwM4IAEgAUE4ajYCJCABQRxqQdyxxQAQjQgACyABQdAAaiQAIAIPC0GssMUAEN0JAAvpBwIGfQZ/AkACQAJAIAQEQEMAAHxCIAWVIQUgAUEBdiEQIAFBAWpBAXYhEQNAIAxBCWoiDyADSyANQZuOx+MBS3INA0MAAHxCQwAAfMIgBSACQSBqKgIAlCIHIAdDAAB8wl0bIgcgB0MAAHxCXhsQuQchB0MAAHxCQwAAfMIgBSACQRxqKgIAlCIIIAhDAAB8wl0bIgggCEMAAHxCXhsQuQchCEMAAHxCQwAAfMIgBSACQRBqKgIAlCIJIAlDAAB8wl0bIgkgCUMAAHxCXhsQuQchCUMAAHxCQwAAfMIgBSACQRRqKgIAlCIKIApDAAB8wl0bIgogCkMAAHxCXhsQuQchCkMAAHxCQwAAfMIgBSACQRhqKgIAlCILIAtDAAB8wl0bIgsgC0MAAHxCXhsQuQchCyANIBFGDQQgAEH/AEMAAHxCQwAAfMIgBSACKgIAlCIGIAZDAAB8wl0bIgYgBkMAAHxCXhsQuQciBvwAQYB/IAZDAAAAw2AbIAZDAAD+Ql4bQQAgBiAGWxtB/wBxQf8AQwAAfEJDAAB8wiAFIAJBBGoqAgCUIgYgBkMAAHzCXRsiBiAGQwAAfEJeGxC5ByIG/ABBgH8gBkMAAADDYBsgBkMAAP5CXhtBACAGIAZbG0H/AHFBB3RyQf8AQwAAfEJDAAB8wiAFIAJBCGoqAgCUIgYgBkMAAHzCXRsiBiAGQwAAfEJeGxC5ByIG/ABBgH8gBkMAAADDYBsgBkMAAP5CXhtBACAGIAZbG0H/AHFBDnRyQf8AQwAAfEJDAAB8wiAFIAJBDGoqAgCUIgYgBkMAAHzCXRsiBiAGQwAAfEJeGxC5ByIG/ABBgH8gBkMAAADDYBsgBkMAAP5CXhtBACAGIAZbG0H/AHFBFXRyQf8AIAn8AEGAfyAJQwAAAMNgGyAJQwAA/kJeG0EAIAkgCVsbQf8AcSIMQRx0cjYCACANIBBGDQIgAEEEakH/ACAI/ABBgH8gCEMAAADDYBsgCEMAAP5CXhtBACAIIAhbG0H/AHFBEXRB/wAgB/wAQYB/IAdDAAAAw2AbIAdDAAD+Ql4bQQAgByAHWxtB/wBxQRh0ckH/ACAK/ABBgH8gCkMAAADDYBsgCkMAAP5CXhtBACAKIApbG0H/AHFBA3QgDEEEdnJB/wAgC/wAQYB/IAtDAAAAw2AbIAtDAAD+Ql4bQQAgCyALWxtB/wBxQQp0cnI2AgAgAEEIaiEAIA5BAmohDiACQSRqIQIgDyEMIAQgDUEBaiINRw0ACwsPCyAOQQFqIAFBoM7HABCMBwALIAwgDyADQbDOxwAQ6gcACyAOIAFBkM7HABCMBwAL/AoCC3sIfyADBEAgBSABIAJrIhFBACABIBFPGyIWIAUgFkkbIhEgA0EBayISIBEgEkkbQQFqIhJBBEsEQCAC/REhDv0MAAAAAAEAAAACAAAAAwAAACELIAQhESASIBJBA3EiE0EEIBMbayITIRIDQCAAIAsgDv2uASIM/RsAQRhsaiAR/QACACIG/Qz//38A//9/AP//fwD//38A/U4iB0EN/a0BIAb9DAAAAIAAAACAAAAAgAAAAID9TkEQ/a0BIgj9UCIJIAf9DAAAAAAAAAAAAAAAAAAAAAD9OP0MAAIAAAACAAAAAgAAAAIAAP1O/VAgBv0NAAEEBQgJDA0AAQABAAEAAf0MAHwAfAB8AHwAfAB8AHwAfCIN/VAgCCAG/Q0AAQQFCAkMDQABAAEAAQABIA39UCAJIAb9DAAAgH8AAIB/AACAfwAAgH8iDf1OIglBDf2tAf0MAEAAAABAAAAAQAAAAEAAAP2uAf1QIAb9DQABBAUICQwNAAEAAQABAAEgBv0MABAAAAAQAAAAEAAAABAAAP1OIAr9OCAG/Qz/LwAA/y8AAP8vAAD/LwAA/U4gCv04/U79DAEAAAABAAAAAQAAAAEAAAD9TiAG/Q0AAQQFCAkMDQABAAEAAQAB/Y4BIAj9DAAAgPoAAID6AACA+gAAgPoiCCAH/QwAAIAAAACAAAAAgAAAAIAA/VAiBv0bAP0MfgAAAH4AAAB+AAAAfgAAACAJQRf9rQEiD/2xASIH/RsAdv0RIAb9GwEgB/0bAXb9HAEgBv0bAiAH/RsCdv0cAiAG/RsDIAf9GwN2/RwDIAn9DAAAgMcAAIDHAACAxwAAgMf9rgEiECAI/ToiCEEB/QwdAAAAHQAAAB0AAAAdAAAAIA/9sQH9DB8AAAAfAAAAHwAAAB8AAAD9TiIH/RsAIhV0/RFBASAH/RsBIhR0/RwBQQEgB/0bAiIXdP0cAkEBIAf9GwMiGHT9HAMgBv1OIAr9OP1QQQMgFXT9EUEDIBR0/RwBQQMgF3T9HAJBAyAYdP0cA/0M//////////////////////2uASAG/U4gCv04/U79sQEgCP1S/VAgBv0NAAEEBQgJDA0AAQABAAEAASAQ/QwBAIAOAQCADgEAgA4BAIAO/TogBv0NAAEEBQgJDA0AAQABAAEAAf1SIAn9DAAAAEcAAABHAAAARwAAAEf9PCAG/Q0AAQQFCAkMDQABAAEAAQAB/VIgCSAN/TcgBv0NAAEEBQgJDA0AAQABAAEAAf1SIgb9WQEMACAAIAz9GwFBGGxqIAb9WQEMASAAIAz9GwJBGGxqIAb9WQEMAiAAIAz9GwNBGGxqIAb9WQEMAyARQRBqIREgC/0MBAAAAAQAAAAEAAAABAAAAP2uASELIBJBBGsiEg0ACwsgBCATQQJ0aiERIAIgE2pBGGwgAGpBDGohEgNAAkACQCATIBZHBEAgBSATRwRAIBEoAgAiFUH///8DcSEUIBVBgICAgHhxIQQgFUGAgID8B3EiAEGAgID8B0YEQCAUQQ12IARBEHZyQYAEQQAgFBtyQYD4AXIhBAwECyAEQRB2IQQgAEGAgIC4BEsNAiAAQYCAgMQDTwRAIBVBDHYgFUH/3wBxQQBHcSAAQQ12IBRBDXZqQYCAAWogBHJqIQQMBAsgAEGAgICYA0kNAyAUQYCAgARyIhVB/gAgAEEXdiIUa3YhACAVQR0gFGsiFHZBAXEEfyAAQQMgFHRBAWsgFXFBAEdqBSAACyAEciEEDAMLIAUgBUGEw8cAEIwHAAsgAiATaiABQey7xwAQjAcACyAEQYD4AXIhBAsgEiAEOwEAIBJBGGohEiARQQRqIREgAyATQQFqIhNHDQALCwv8CgILewh/IAMEQCAFIAEgAmsiEUEAIAEgEU8bIhYgBSAWSRsiESADQQFrIhIgESASSRtBAWoiEkEESwRAIAL9ESEO/QwAAAAAAQAAAAIAAAADAAAAIQsgBCERIBIgEkEDcSITQQQgExtrIhMhEgNAIAAgCyAO/a4BIgz9GwBBJGxqIBH9AAIAIgb9DP//fwD//38A//9/AP//fwD9TiIHQQ39rQEgBv0MAAAAgAAAAIAAAACAAAAAgP1OQRD9rQEiCP1QIgkgB/0MAAAAAAAAAAAAAAAAAAAAAP04/QwAAgAAAAIAAAACAAAAAgAA/U79UCAG/Q0AAQQFCAkMDQABAAEAAQAB/QwAfAB8AHwAfAB8AHwAfAB8Ig39UCAIIAb9DQABBAUICQwNAAEAAQABAAEgDf1QIAkgBv0MAACAfwAAgH8AAIB/AACAfyIN/U4iCUEN/a0B/QwAQAAAAEAAAABAAAAAQAAA/a4B/VAgBv0NAAEEBQgJDA0AAQABAAEAASAG/QwAEAAAABAAAAAQAAAAEAAA/U4gCv04IAb9DP8vAAD/LwAA/y8AAP8vAAD9TiAK/Tj9Tv0MAQAAAAEAAAABAAAAAQAAAP1OIAb9DQABBAUICQwNAAEAAQABAAH9jgEgCP0MAACA+gAAgPoAAID6AACA+iIIIAf9DAAAgAAAAIAAAACAAAAAgAD9UCIG/RsA/Qx+AAAAfgAAAH4AAAB+AAAAIAlBF/2tASIP/bEBIgf9GwB2/REgBv0bASAH/RsBdv0cASAG/RsCIAf9GwJ2/RwCIAb9GwMgB/0bA3b9HAMgCf0MAACAxwAAgMcAAIDHAACAx/2uASIQIAj9OiIIQQH9DB0AAAAdAAAAHQAAAB0AAAAgD/2xAf0MHwAAAB8AAAAfAAAAHwAAAP1OIgf9GwAiFXT9EUEBIAf9GwEiFHT9HAFBASAH/RsCIhd0/RwCQQEgB/0bAyIYdP0cAyAG/U4gCv04/VBBAyAVdP0RQQMgFHT9HAFBAyAXdP0cAkEDIBh0/RwD/Qz//////////////////////a4BIAb9TiAK/Tj9Tv2xASAI/VL9UCAG/Q0AAQQFCAkMDQABAAEAAQABIBD9DAEAgA4BAIAOAQCADgEAgA79OiAG/Q0AAQQFCAkMDQABAAEAAQAB/VIgCf0MAAAARwAAAEcAAABHAAAAR/08IAb9DQABBAUICQwNAAEAAQABAAH9UiAJIA39NyAG/Q0AAQQFCAkMDQABAAEAAQAB/VIiBv1ZARQAIAAgDP0bAUEkbGogBv1ZARQBIAAgDP0bAkEkbGogBv1ZARQCIAAgDP0bA0EkbGogBv1ZARQDIBFBEGohESAL/QwEAAAABAAAAAQAAAAEAAAA/a4BIQsgEkEEayISDQALCyAEIBNBAnRqIREgAiATakEkbCAAakEUaiESA0ACQAJAIBMgFkcEQCAFIBNHBEAgESgCACIVQf///wNxIRQgFUGAgICAeHEhBCAVQYCAgPwHcSIAQYCAgPwHRgRAIBRBDXYgBEEQdnJBgARBACAUG3JBgPgBciEEDAQLIARBEHYhBCAAQYCAgLgESw0CIABBgICAxANPBEAgFUEMdiAVQf/fAHFBAEdxIABBDXYgFEENdmpBgIABaiAEcmohBAwECyAAQYCAgJgDSQ0DIBRBgICABHIiFUH+ACAAQRd2IhRrdiEAIBVBHSAUayIUdkEBcQR/IABBAyAUdEEBayAVcUEAR2oFIAALIARyIQQMAwsgBSAFQdTFxwAQjAcACyACIBNqIAFB5MDHABCMBwALIARBgPgBciEECyASIAQ7AQAgEkEkaiESIBFBBGohESADIBNBAWoiE0cNAAsLC7wJAgJ/AXsjAEHQAGsiAiQAIAJBDmpBADoAACACQR5qQQA6AAAgAkEmakEAOgAAIAJBLmpBADoAACACQTZqQQA6AAAgAkE+akEAOgAAIAJBxgBqQQA6AAAgAkEAOwEMIAJBFmpBADoAACACQQA7ARwgAkEAOwEkIAJBADsBLCACQQA7ATQgAkEAOwE8IAJBADsBRCACQQA7ARQgAkHOAGpBADoAACACQQA7AUxBgCEQcSIDBEAgA0HI1cYAQYAh/AoAACAAQQE2AnAgAP0MAAAAAAAAAAAAAAAAAAAAAP0LAnQgAEL/gYCAgH83AoQBIABBADYCoAUgAEHyAToAkwEgAEEANgKYBCAAQoCAgIAQNwOQBCAAQQA6AKYFIABBADsBpAUgAEKAgICAEDcDACAAQgA3AwggAEIBNwMQIABCgICAgBA3AxggAEHoA2ogAUEQaikDADcDACAAIAH9AAMA/QsD2AMgACACKAIINgKMASAAQY8BaiACKAALNgAAIABBJ2pCADcAACAAQgA3AyAgAEIANwMwIABBN2pCADcAACAAQgA3A0AgAEHHAGpCADcAACAAQgA3A1AgAEHXAGpCADcAACAAQgA3A2AgAEHnAGpCADcAACAAIAT9CwPwAyAAQYAEaiAE/QsDACAAQQE2ApgBIAAgBP0LApwBIABC/4GAgIB/NwKsASAAQbcBaiACKAATNgAAIAAgAigCEDYCtAEgACAE/QsCxAEgAEEBNgLAASAAQfIBOgC7ASAAQv+BgICAfzcC1AEgAEHyAToA4wEgACAE/QsC7AEgAEEBNgLoASAAQv+BgICAfzcC/AEgAEEBNgKQAiAAIAT9CwKUAiAAQfIBOgCLAiAAQd8BaiACKAAbNgAAIAAgAigCGDYC3AEgAEGHAmogAigAIzYAACAAIAIoAiA2AoQCIABC/4GAgIB/NwKkAiAAQa8CaiACKAArNgAAIAAgAigCKDYCrAIgACAE/QsCvAIgAEEBNgK4AiAAQfIBOgCzAiAAQv+BgICAfzcCzAIgAEHXAmogAigAMzYAACAAIAIoAjA2AtQCIAAgBP0LAuQCIABBATYC4AIgAEHyAToA2wIgAEL/gYCAgH83AvQCIABB/wJqIAIoADs2AAAgACACKAI4NgL8AiAAIAT9CwKMAyAAQQE2AogDIABB8gE6AIMDIABC/4GAgIB/NwKcAyAAQacDaiACKABDNgAAIAAgAigCQDYCpAMgACAE/QsCtAMgAEEBNgKwAyAAQfIBOgCrAyAAQv+BgICAfzcCxAMgAEHPA2ogAigASzYAACAAIAIoAkg2AswDIABBAToApwUgAEHyAToA0wMgAEH8BGpB0PbGACgAADYAACAAQcj2xgApAAA3APQEIABBADoAqAUgACADNgLwBCAAQQA6AIAFIABCADcCpAQgAEKAgICAEDcCnAQgAEGYBWpCADcBACAAQZIFakIANwEAIAAgBP0LAYIFIABBADYC7AQgAEKAgICAEDcC5AQgAEIBNwLcBCAAQgA3AtQEIABCgICAgBA3AswEIABCATcCxAQgAEIANwK8BCAAQoCAgIAQNwK0BCAAQgE3AqwEIAJB0ABqJAAPCwAL2AcCDH8BeyMAQYAIayIGJAACQAJAAkAgASgC2AFBgYCAgHhHBEAgASgC3AEhAiABKALgASEHIAEoAtABIQsgASgC1AEhDCABKALMASENQQAhAQNAIAEgBmr9DAAAAP8AAAD/AAAA/wAAAP/9CwAAIAFBEGoiAUGACEcNAAsgB0EDbiEKIAdBBE8EQCAHQQRrIgFBC00EQEGAAiEEIAYhASAHIQMMAwtBgAJBgAIgAUEDbiIBIAFBgAJPG0EBaiIBIAFBA3EiAUEEIAEbayIFayEEIAcgBUF9bGohAyACIAVBA2xqIAYgBUECdGohASAGIQgDQCAIIAJBCWogAkEGaiACQQNqIAL9XAAA/VYAAAH9VgAAAv1WAAAD/QsAACACQQxqIQIgCEEQaiEIIAVBBGsiBQ0ACyECDAILIAYhASAHIQMgB0UNAwwCC0GgmcUAQRRBtJnFABCrBwALA0AgBEUEQEEAQQBB9JnFABCMBwALIAEgAigAADYAACABQQRqIQEgBEEBayEEIAJBA2ohAiADQQNrIgNBA0sNAAsgBA0AQQBBAEHEmcUAEIwHAAsgA0EDRgRAIAEgAi8AADsAACABQQJqIAJBAmotAAA6AAAMAQtBAEEDIANB1JnFABDqBwALAkBBAEEAIAwgDUGBgICAeEYiARsiAyADIApLIgMbIghFDQBBAUEBIAsgAxsgARshA0GAAiAIIAhBgAJPGyEJQQAhBSAIQRBPBEAgCUHwA3EhBSAJQQJ0QUBxIQtBACEBIAMhBANAIAEgBmoiAkE/aiAE/QAAACIO/VgAAA8gAkE7aiAO/VgAAA4gAkE3aiAO/VgAAA0gAkEzaiAO/VgAAAwgAkEvaiAO/VgAAAsgAkEraiAO/VgAAAogAkEnaiAO/VgAAAkgAkEjaiAO/VgAAAggAkEfaiAO/VgAAAcgAkEbaiAO/VgAAAYgAkEXaiAO/VgAAAUgAkETaiAO/VgAAAQgAkEPaiAO/VgAAAMgAkELaiAO/VgAAAIgAkEHaiAO/VgAAAEgAkEDaiAO/VgAAAAgBEEQaiEEIAsgAUFAayIBRw0ACyAFIAlGDQELIAkgBWshBCADIAVqIQIgBUECdCAGakEDaiEBA0AgASACLQAAOgAAIAJBAWohAiABQQRqIQEgBEEBayIEDQALCyAHQYMGSQRAIAggCkcEQCAKQQJ0IAhBAnQiB2shASAGIAdqQQNqIQIDQCACQf8BOgAAIAJBBGohAiABQQRrIgENAAsLIAAgBkGACPwKAAAgBkGACGokAA8LIAggCkGAAkHkmcUAEOoHAAvSCAEEfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkAgAC0AAEEBaw4DAQIDAAsgAiAAKAIENgIEIAEoAgBBoPvHAEECIAEoAgQoAgwRAAAhACACQQA6AA0gAiAAOgAMIAIgATYCCCACQQhqQbT7xwBBBCACQQRqQaT7xwAQjAUgAkEpOgATQcj7xwBBBCACQRNqQbj7xwAQjAVBFBBxIgBFDQQgAEEQakHcgsgAKAAANgAAIABBzILIAP0AAAD9CwAAIAJBFDYCHCACIAA2AhggAkEUNgIUQdz7xwBBByACQRRqQcz7xwAQjAUhASACLQANIgMgAi0ADCIEciEAAkAgBEEBcSADQQFHcg0AIAEoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEADAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAAsgAigCFCIBRQ0DIAIoAhgiA0EEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgAWpJDQUgBEEAIAUgAUEnaksbDQYgAxCiAgwDCyAALQABIQNBASEAIAEoAgBB4/vHAEEEIAEoAgQoAgwRAAANAgJAIAEtAApBgAFxRQRAIAEoAgBBu7PFAEEBIAEoAgQoAgwRAAANBCABKAIAIANBAnQiAygCpKhJIAMoAvymSSABKAIEKAIMEQAARQ0BDAQLIAEoAgBB24HCAEECIAEoAgQoAgwRAAANAyACQQE6AAggAiABKQIANwIUIANBAnQiAygCzKlJIQQgAygC9KpJIQMgAiACQQhqNgIcIAJBFGoiBSADIAQQrwMNAyAFQdmBwgBBAhCvAw0DCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQAMAgsgACgCBCEAIAEoAgBB5/vHAEEFIAEoAgQoAgwRAAAhAyACQQA6ABkgAiADOgAYIAIgATYCFCACQRRqQcj7xwBBBCAAQQhqQbj7xwAQjAVB3PvHAEEHIABB7PvHABCMBSACLQAZIgMgAi0AGCIEciEAIARBAXEgA0EBR3INASgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQAMAgsgACgCAEGls8UAQQEgACgCBCgCDBEAACEADAELIAIgACgCBCIANgIIIAEoAgBBjPzHAEEGIAEoAgQoAgwRAAAhAyACQQA6ABkgAiADOgAYIAIgATYCFCACQRRqQcj7xwBBBCAAQQhqQbj7xwAQjAVBupjIAEEFIAJBCGpB/PvHABCMBSACLQAZIgMgAi0AGCIEciEAIARBAXEgA0EBR3INACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQAMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEACyACQSBqJAAgAEEBcQ8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALvQcDCX8CfAJ+IwBBMGsiBCQAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIUIgYgASgCECIFSQRAIAEoAgwiCSAGai0AACIHQS5GDQEgB0HFAEYgB0HlAEZyDQILIAJFDQJCASEPDAgLIAEgBkEBaiIGNgIUIAUgBk0NAyAGIAVrIQcCQANAIAYgCWotAAAiCkEwayILQf8BcSIMQQpPBEAgCEUNBiAKQSByQeUARwRAIAghBwwGCyAEQSBqIAEgAiADIAgQ2AIMCAsgDEEFSyADQpmz5syZs+bMGVJyIANCmLPmzJmz5swZVnENASABIAZBAWoiBjYCFCAIQQFrIQggA0IKfiALrUL/AYN8IQMgBSAGRw0ACyAFIQYgB0UNBQwDCyAEQSBqIAEgAiADIAgQ6AYMBQsgBEEgaiABIAIgA0EAENgCIAQoAiBFDQUgACAEKAIkNgIIIABCAzcDAAwHC0IAIAN9IhBCAFMEQEICIQ8gECEDDAYLIAO6vUKAgICAgICAgIB/hCEDDAULIAO6IQ0CQAJAAkAgByAHQR91IgFzIAFrIgFBtQJPBEADQCANRAAAAAAAAAAAYQ0EIAdBAE4NAiANRKDI64XzzOF/oyENIAdBtAJqIgcgB0EfdSIBcyABayIBQbUCTw0ACwsgAUEDdCsDoIJHIQ4gB0EATg0BIA0gDqMhDQwCCyAEQRBqIAkgBSAGEPkBIAQoAhQhAiAEKAIQIQVBFBBxIgFFDQggASAFNgIMIAFBDjYCACABIAI2AhAgBCABNgIkIARBATYCIAwECyANIA6iIg2ZRAAAAAAAAPB/Yg0AIARBCGogCSAFIAYQ+QEgBCgCDCECIAQoAgghBUEUEHEiAUUNByABIAU2AgwgAUEONgIAIAEgAjYCECAEIAE2AiQgBEEBNgIgDAMLIAQgDSANmiACGzkDKCAEQQA2AiAMAgsgBSAGTQ0AIARBGGogCSAFIAZBAWoiASAFIAEgBUkbEPkBIAQoAhwhAiAEKAIYIQVBFBBxIgFFDQUgASAFNgIMIAFBDTYCACABIAI2AhAgBCABNgIkIARBATYCIAwBCyAEIAkgBSAGQQFqIgEgBSABIAVJGxD5ASAEKAIEIQIgBCgCACEFQRQQcSIBRQ0EIAEgBTYCDCABQQU2AgAgASACNgIQIAQgATYCJCAEQQE2AiALIAQoAiBFDQAgACAEKAIkNgIIIABCAzcDAAwCCyAEKQMoIQMLIAAgAzcDCCAAIA83AwALIARBMGokAA8LAAvqBwENfyMAQUBqIgUkAEEAELYJIQYgBUEQakEAOgAAIAVBPGogBEEYaigCADYCACAFQTRqIARBEGopAgA3AgAgBUEaaiAEQR9qLQAAOgAAIAVCADcDCCAFIAT9AAIA/QsCJCAFIAQvAB07ARggBC0AHCEPIAEQuAohECAGQYQITwRAIAYQmwcLAkAgA0UEQAwBC0H458AAQQMQ7AghBCADKAIAIgogBBDiCCEIQbS7yQAtAAAhA0G0u8kAQQA6AABBuLvJACgCAEG4u8kAQQA2AgAgCCADGyELAkACQAJAIANFBEAgCxC5CkUEQEEBIQkMBAsgC0GDCEsNAQwCCyALQYQISQ0CCyALEJsHCwsgBEGECE8EQCAEEJsHCyAKQfvnwABBAxDsCCIDEOIIIQhBtLvJAC0AACEEQbS7yQBBADoAAEG4u8kAKAIAQbi7yQBBADYCACAIIAQbIQYCfwJAAkAgBEUEQCAGELkKRQRAQQEhDUECDAQLIAZBgwhLDQEMAgsgCSAGQYQISQ0CGgsgBhCbBwsgCQshCCADQYQITwRAIAMQmwcLIApBjOzAAEEDEOwIIgQQ4gghA0G0u8kALQAAIQdBtLvJAEEAOgAAQbi7yQAoAgBBuLvJAEEANgIAIAMgBxshAwJAAkACQCAHRQRAIAMQuQpFBEBBASEMQQMhCAwECyADQYMISw0BDAILIANBhAhJDQILIAMQmwcLCyAEQYQITwRAIAQQmwcLQQAhByAKQYbowABBBxDsCCIKEOIIIQRBtLvJAC0AACEOQbS7yQBBADoAAEG4u8kAKAIAQbi7yQBBADYCACAEIA4bIQQCQAJAAkAgDkUEQCAEELkKRQRAQQEhD0EBIQcMBAsgBEGDCEsNAQwCCyAEQYQISQ0CCyAEEJsHCwsgCkGECEkNACAKEJsHCyAAQYCAgIB4NgJ0IABBgICAgHg2AmggAEIENwJgIABCADcCWCAAQoCAgIDAADcCUCAAQgQ3AkggAEIANwJAIABCgICAgMAANwI4IAAgBDYCNCAAIAc2AjAgAEEANgIoIABBADYCICAAQQA2AhggACADNgIUIAAgDDYCECAAIAY2AgwgACANNgIIIAAgCzYCBCAAIAk2AgAgACAPOgCcASAAIAE2AqwBIAAgCDYCqAEgACACNgKkASAAIBBBAnY2AqABIABBmAFqIAVBPGooAgA2AgAgAEGIAWogBUEsav0AAgD9CwIAIAAgBf0AAhz9CwJ4IAAgBS8BGDsAnQEgAEGfAWogBUEaai0AADoAACAAIAUpAwg3ArABIABBuAFqIAVBEGotAAA6AAAgBUFAayQAC8cHAgZ/AnsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFFBEBBBCELDAELIAFBAnQQcSILRQ0BIAFBBE8EQCABQXxxIgwhCQNAIAggC2ogACAIav0AAgD9DLtukD67bpA+u26QPrtukD795gH9DAAAAD8AAAA/AAAAPwAAAD/95AH9CwIAIAhBEGohCCAJQQRrIgkNAAsgASAMRg0BCyAMQQJ0IQggASAMayEJA0AgCCALaiAAIAhqKgIAQ7tukD6UQwAAAD+SOAIAIAhBBGohCCAJQQFrIgkNAAsLQYAIEHEiAEUNAP0MAAAAAAEAAAACAAAAAwAAACEOQQAhCANAIAAgCGoiCSAO/fsB/QwAAH9DAAB/QwAAf0MAAH9DIg/95wH9CwIAIAlBEGogDv0MBAAAAAQAAAAEAAAABAAAAP2uAf37ASAP/ecB/QsCACAO/QwIAAAACAAAAAgAAAAIAAAA/a4BIQ4gCEEgaiIIQYAIRw0ACwJAAkAgBwRAQQAhCUEAIQgDQCADIAhNDQUgASACIAhqIgwtAAAiCk0NBiAFIAlNDQcgBCALIApBAnRqKgIAOAIAIAhBAWoiCiADTw0IIAEgDEEBai0AACIKTQ0JIAlBAWoiDSAFTw0KIARBBGogCyAKQQJ0aioCADgCACAIQQJqIgogA08NCyABIAxBAmotAAAiCk0NDCAJQQJqIg0gBU8NDSAEQQhqIAsgCkECdGoqAgA4AgAgCEEDaiIKIANPDQ4gBiAIaiAAIAxBA2otAABBAnRqKgIAOAIAIARBDGohBCAJQQNqIQkgCEEEaiEIIAdBAWsiBw0ACyAAQQRrKAIAIgJBeHFBhAhBiAggAkEDcSIDG0kNDiADQQAgAkGoCE8bDQ8gABCiAgwBCyAAQQRrKAIAIgJBeHFBhAhBiAggAkEDcSIDG0kNDSADQQAgAkGoCE8bDQ4gABCiAiABRQ0BCyALQQRrKAIAIgBBeHEiAiABQQJ0IgFBBEEIIABBA3EiABtqSQ0MIABBACACIAFBJ2pLGw0NIAsQogILDwsACyAIIANBgPHHABCMBwALIAogAUGQ8ccAEIwHAAsgCSAFQaDxxwAQjAcACyAKIANBsPHHABCMBwALIAogAUHA8ccAEIwHAAsgDSAFQdDxxwAQjAcACyAKIANB4PHHABCMBwALIAogAUHw8ccAEIwHAAsgDSAFQYDyxwAQjAcACyAKIANBkPLHABCMBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9kGAg1/An0gAEGstskAKAIAIgcEfyMAQRBrIQhBrLbJACAHQQFrIgY2AgBBqLbJACgCACIFIAZBDGxqIgQoAgghASAEKAIEIQMgBCgCACEEAkAgBkUEQCABIQogAyELIAQhDAwBCyAFKAAAIQwgBSAENgAAIAUoAAQhCyAFIAM2AAQgBUEIaiIDKAAAIQogAyABNgAAIAhBCGogAygCADYCACAIIAUpAgA3AwBBASEBIAdBBE8EQCAGQQJrIgFBACABIAZNGyEGQQEhAQNAAn8gBSABQQxsaiIDQQxqIgQqAgAiDiAOWyAOIAMqAgAiD2BFcSIJIAlBfyAOIA9fGyAPIA9cGyIJBEAgCUEATAwBCyADKAIEIgkgBCgCBCINRwRAIAkgDU0MAQsgAygCCCAEKAIITQshAyAFIAJBDGxqIgQgBSABIANqIgJBDGxqIgEpAgA3AgAgBEEIaiABQQhqKAIANgIAIAJBAXQiA0EBciEBIAMgBkkNAAsLAkAgB0ECayABRwRAIAIhAQwBCyAFIAJBDGxqIgIgBSABQQxsaiIDKQIANwIAIAJBCGogA0EIaigCADYCAAsgBSABQQxsaiICIAgpAwA3AgAgAkEIaiAIQQhqKAIAIgg2AgAgAigCBCEDIAIqAgAhDgJAIAFFBEBBACEBDAELIA4gDlsEQANAAkAgBSABIgJBAWsiBkEBdiIBQQxsaiIEKgIAIg8gD1sgDiAPX0VxQX8gDiAPYBsiBwRAIAdBAEoNASACIQEMBAsgBCgCBCIHIANHBEAgAyAHSw0BIAIhAQwECyAIIAQoAghLDQAgAiEBDAMLIAUgAkEMbGoiAiAEKQIANwIAIAJBCGogBEEIaigCADYCACAGQQFLDQAMAgsACwNAAkAgBSABIgJBAWsiBkEBdiIBQQxsaiIEKgIAIg8gD1sgDiAPX0VxDQAgBCgCBCIHIANHBEAgAyAHSw0BIAIhAQwDCyAIIAQoAghLDQAgAiEBDAILIAUgAkEMbGoiAiAEKQIANwIAIAJBCGogBEEIaigCADYCACAGQQJPDQALCyAFIAFBDGxqIgEgCDYCCCABIAM2AgQgASAOOAIACyAAIAo2AgwgACALNgIIIAAgDDYCBEEBBSABCzYCAAuWCAMGfwR7An0gBUEDbiEKIAEqAgAhESAAKgIAIRACQAJAAkACQAJAAkACQAJAQYAIEHEiCEUNACARIBCT/RMhDiAQ/RMhD/0MAAAAAAEAAAACAAAAAwAAACEMA0AgBiAIaiAPIA4gDP37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kASIN/R8AEIkE/RMgDf0fARCJBP0gASAN/R8CEIkE/SACIA39HwMQiQT9IAP9CwIAIAz9DAQAAAAEAAAABAAAAAQAAAD9rgEhDCAGQRBqIgZBgAhHDQALIAEqAgQgACoCBCEQQYAIEHEiCUUNACAQk/0TIQ4gEP0TIQ/9DAAAAAABAAAAAgAAAAMAAAAhDEEAIQYDQCAGIAlqIA8gDiAM/fsB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQBIg39HwAQiQT9EyAN/R8BEIkE/SABIA39HwIQiQT9IAIgDf0fAxCJBP0gA/0LAgAgDP0MBAAAAAQAAAAEAAAABAAAAP2uASEMIAZBEGoiBkGACEcNAAsgASoCCCAAKgIIIRBBgAgQcSIARQ0AIBCT/RMhDiAQ/RMhD/0MAAAAAAEAAAACAAAAAwAAACEMQQAhBgNAIAAgBmogDyAOIAz9+wH9DAAAf0MAAH9DAAB/QwAAf0P95wH95gH95AEiDf0fABCJBP0TIA39HwEQiQT9IAEgDf0fAhCJBP0gAiAN/R8DEIkE/SAD/QsCACAM/QwEAAAABAAAAAQAAAAEAAAA/a4BIQwgBkEQaiIGQYAIRw0ACwJAIAVBA08EQEEAIQZBACEBA0AgAyAGTQ0EIAEgBU8NBSAEIAggAiAGaiILLQAAQQJ0aioCADgCACAGQQFqIgcgA08NBiABQQFqIgcgBU8NByAEQQRqIAkgC0EBai0AAEECdGoqAgA4AgAgBkECaiIHIANPDQggAUECaiIHIAVPDQIgBEEIaiAAIAtBAmotAABBAnRqKgIAOAIAIAZBBGohBiAEQQxqIQQgAUEDaiEBIApBAWsiCg0ACwsgAEEEaygCACIBQXhxQYQIQYgIIAFBA3EiAhtJDQcgAkEAIAFBqAhPGw0IIAAQogIgCUEEaygCACIAQXhxQYQIQYgIIABBA3EiARtJDQcgAUEAIABBqAhPGw0IIAkQogIgCEEEaygCACIAQXhxQYQIQYgIIABBA3EiARtJDQcgAUEAIABBqAhPGw0IIAgQogIPCyAHIAVBoPXHABCMBwsACyAGIANB0PTHABCMBwALIAEgBUHg9McAEIwHAAsgByADQfD0xwAQjAcACyAHIAVBgPXHABCMBwALIAcgA0GQ9ccAEIwHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALggcBA34gASgCACACQQZ0ayIBQUBqKQMAIAAoAgAoAgAiACkDCIUiA0LYotHvwqnlvy1+IAFBOGspAwCFIANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhIUiA0LYotHvwqnlvy1+IAFBMGspAwCFIANCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIRC0oGqm6v6gtenf34iA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhELSgaqbq/qC16d/fiIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIANC2KLR78Kp5b8tfoUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAAKQMAIgRCf4V+IgVCOIYgBUKA/gODQiiGhCAFQoCA/AeDQhiGIAVCgICA+A+DQgiGhIQgBUIIiEKAgID4D4MgBUIYiEKAgPwHg4QgBUIoiEKA/gODIAVCOIiEhIQgAyAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEfoUgA4kLwwYBDH8jAEEQayIJJABBASELAkAgAigCACIKQSIgAigCBCIMKAIQIg0RAgANAAJAAkAgAUUEQEEAIQFBACECDAELIAAhBSABIQYDQCAFIAZqIQ5BACECAkACQANAIAIgBWoiBy0AACIIQf8Aa0H/AXFBoQFJIAhBIkZyIAhB3ABGcg0BIAYgAkEBaiICRw0ACyADIAZqIQMMAQsgAiADaiEDAkACQCAHLAAAIgJBAE4EQCAHQQFqIQUgAkH/AXEhAgwBCyAHLQABQT9xIQUgAkEfcSEGIAJBX00EQCAGQQZ0IAVyIQIgB0ECaiEFDAELIActAAJBP3EgBUEGdHIhCCACQXBJBEAgCCAGQQx0ciECIAdBA2ohBQwBCyAHQQRqIQUgBkESdEGAgPAAcSAHLQADQT9xIAhBBnRyciICQYCAxABGDQELIAkgAkGBgAQQgQMCQCAJLQANIgYgCS0ADCIHayIIQf8BcUEBRg0AAkACQAJAIAMgBEkNAAJAIARFDQAgASAETQRAIAEgBEcNAgwBCyAAIARqLAAAQb9/TA0BCwJAIANFDQAgASADTQRAIAEgA0YNAQwCCyAAIANqLAAAQb9/TA0BCyAKIAAgBGogAyAEayAMKAIMIgQRAABFDQEMAgsgACABIAQgA0GogcIAELsJAAsCQCAGQYEBTwRAIAogCSgCACANEQIADQIMAQsgCiAHIAlqIAggBBEAAA0BCyACQYABSQRAIANBAWohBAwCCyACQYAQSQRAIANBAmohBAwCC0EDQQQgAkGAgARJGyADaiEEDAELDAYLAn9BASACQYABSQ0AGkECIAJBgBBJDQAaQQNBBCACQYCABEkbCyADaiEDCyAOIAVrIgYNAQsLIAMgBEkNAUEAIQICQCAERQ0AIAEgBE0EQCAEIAEiAkcNAwwBCyAEIgIgAGosAABBv39MDQILIANFBEBBACEBDAELIAEgA00EQCABIANGDQEgAiEEDAILIAAgA2osAABBv39MBEAgAiEEDAILIAMhAQsgCiAAIAJqIAEgAmsgDCgCDBEAAA0BIApBIiANEQIAIQsMAQsgACABIAQgA0G4gcIAELsJAAsgCUEQaiQAIAsLzwYBCH8jAEEwayEIA0AgASgCACIEQf///wNxIQMgBEGAgICAeHEhBgJAIARBgICA/AdxIgJBgICA/AdGBEAgA0ENdiAGQRB2ckGABEEAIAMbckGA+AFyIQYMAQsgBkEQdiEGIAJBgICAuARNBEAgAkGAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgAkENdiADQQ12akGAgAFqIAZyaiEGDAILIAJBgICAmANJDQEgA0GAgIAEciIEQf4AIAJBF3YiA2t2IQIgBEEdIANrIgN2QQFxBH8gAkEDIAN0QQFrIARxQQBHagUgAgsgBnIhBgwBCyAGQYD4AXIhBgsgAUEEaigCACIDQf///wNxIQUgA0GAgICAeHEhBAJAIANBgICA/AdxIgJBgICA/AdHBEAgBEEQdiEEIAJBgICAuARNBEAgAkGAgIDEA08EQCADQQx2IANB/98AcUEAR3EgAkENdiAFQQ12akGAgAFqIARyaiEEDAMLIAJBgICAmANJDQIgBUGAgIAEciIDQf4AIAJBF3YiBWt2IQIgA0EdIAVrIgV2QQFxBH8gAkEDIAV0QQFrIANxQQBHagUgAgsgBHIhBAwCCyAEQYD4AXIhBAwBCyAFQQ12IARBEHZyQYAEQQAgBRtyQYD4AXIhBAsgAUEIaigCACIFQf///wNxIQcgBUGAgICAeHEhAwJAIAVBgICA/AdxIgJBgICA/AdHBEAgA0EQdiEDIAJBgICAuARNBEAgAkGAgIDEA08EQCAFQQx2IAVB/98AcUEAR3EgAkENdiAHQQ12akGAgAFqIANyaiEDDAMLIAJBgICAmANJDQIgB0GAgIAEciIFQf4AIAJBF3YiB2t2IQIgBUEdIAdrIgd2QQFxBH8gAkEDIAd0QQFrIAVxQQBHagUgAgsgA3IhAwwCCyADQYD4AXIhAwwBCyAHQQ12IANBEHZyQYAEQQAgBxtyQYD4AXIhAwsgCEEGaiAJaiICIAY7AQAgAkEEaiADOwEAIAJBAmogBDsBACABQQxqIQEgCUEGaiIJQSpHDQALIAAgCP0AAQb9CwEAIABBKGogCEEuai8BADsBACAAQSBqIAhBJmopAQA3AQAgAEEQaiAIQRZq/QABAP0LAQALogcCCH8CfiMAQZACayICJAACQCABKAK4AiIDQQNNBEAgAEEAOwEADAELIAIgASgCtAIiBSgAACIENgIIAkACQAJAAkAgBEHSgpGaBEYEQCADQQhJBEAgAEEAOgABIABBADoAAAwGCyADIAUoAAQiBkEHakF4cSIIQRBqIgRJDQEgBkEIaiIHIANLIAZBd0tyDQIgAkEANgKAAiACIAY2AvwBIAIgBUEIajYC+AEgAkEYaiACQfgBahBvIAIoAhwhBiACKAIYIglBAkYEQCAAIAYQzgc2AgQgAEEBOgAADAYLIAJBkAFqIAJBIGpB6AD8CgAAIAIgBjYCjAEgAiAJNgKIASAIQQhqIgggBEsNAyABQQA2ArgCIAMgBGshByAFIAhqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBSAEIAVqIAf8CgAACyABIAc2ArgCCyABIAEpA3AgBK18Igo3A3AgASAKIAt8NwOIASABIAo3A4ABAkAgAigC8AFBAUYEQCABIAIpA5ABPgKoAiABIAIoApgBIgM2AqwCIAEoApABQQJGDQEMBgsgAkEBNgIcIAJBhMnBADYCGCACQgE3AiQgAiACQfABaq1CgICAgBCENwOIAiACIAJBiAJqNgIgIAJB+AFqIgEgAkEYahCxBiABEI4HIQEgAigC5AEiAwRAIAIoAugBIANBKGxBCBCiBwsgACABNgIEIABBAToAAAwGCyABQQA2AqgCIAIgAi0A9AFBAXE6ACAgAiAGQQAgCUEBcRs2AhwgAiADNgIYIAFBvAJqIAJBGGoQ4QMMBAsgAkEBNgIsIAJBzMjBADYCKCACQQE2AhwgAkGQzsEANgIYIAJBATYCJCACIAJBCGqtQoCAgICQBIQ3A/gBIAIgAkH4AWo2AiAgAkEMaiIBIAJBGGoQsQYgACABEI4HNgIEIABBAToAAAwECyAAQQA6AAEgAEEAOgAADAMLQQggByADQeTNwQAQ6gcACyAIIAQgA0HUzcEAEOoHAAsgAUEANgKkAgJAIAEoAgBBAkYNACABKAJcIgNFDQACQCABKAJgIgRBBGsoAgAiBUF4cSIGIANBKGwiA0EEQQggBUEDcSIFG2pPBEAgBUEAIAYgA0EnaksbDQEgBBCiAgwCC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgASACQYgBakHwAPwKAAAgAEGAAjsBAAsgAkGQAmokAAumBwIIfwJ+IwBBkAJrIgIkAAJAAkACQCABKALgAiIDQQNNBEAgAEEAOwEADAELIAIgASgC3AIiBSgAACIENgIIAkACQAJAAkAgBEHSgpGaBEYEQCADQQhJBEAgAEEAOgABIABBADoAAAwGCyADIAUoAAQiBkEHakF4cSIIQRBqIgRJDQEgBkEIaiIHIANLIAZBd0tyDQIgAkEANgKAAiACIAY2AvwBIAIgBUEIajYC+AEgAkEYaiACQfgBahBvIAIoAhwhBiACKAIYIglBAkYEQCAAIAYQzgc2AgQgAEEBOgAADAYLIAJBkAFqIAJBIGpB6AD8CgAAIAIgBjYCjAEgAiAJNgKIASAIQQhqIgggBEsNAyABQQA2AuACIAMgBGshByAFIAhqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBSAEIAVqIAf8CgAACyABIAc2AuACCyABIAEpA7gCIAStfCIKNwO4AiABIAogC3w3A9ACIAEgCjcDyAIgAigC8AFBAUYEQCABIAIpA5ABPgL0AiABIAIoApgBIgM2AvgCIAEoAgBBAkcNBSABQQA2AvQCIAIgAi0A9AFBAXE6ACAgAiAGQQAgCUEBcRs2AhwgAiADNgIYIAFB+AFqIAJBGGoQhAIMBQsgAkEBNgIcIAJBhMnBADYCGCACQgE3AiQgAiACQfABaq1CgICAgBCENwOIAiACIAJBiAJqNgIgIAJB+AFqIgEgAkEYahCxBiABEI4HIQEgAigC5AEiAwRAIAIoAugBIANBKGxBCBCiBwsgACABNgIEIABBAToAAAwFCyACQQE2AiwgAkHMyMEANgIoIAJBATYCHCACQZDOwQA2AhggAkEBNgIkIAIgAkEIaq1CgICAgJAEhDcD+AEgAiACQfgBajYCICACQQxqIgEgAkEYahCxBiAAIAEQjgc2AgQgAEEBOgAADAQLIABBADoAASAAQQA6AAAMAwtBCCAHIANB5M3BABDqBwALIAggBCADQdTNwQAQ6gcACyABQQA2AvACAkAgASgCiAFBAkYNACABKALkASIDRQ0AIAEoAugBIgRBBGsoAgAiBUF4cSIGIANBKGwiA0EEQQggBUEDcSIFG2pJDQIgBUEAIAYgA0EnaksbDQMgBBCiAgsgAUGIAWogAkGIAWpB8AD8CgAAIABBgAI7AQALIAJBkAJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAumBwIIfwJ+IwBBkAJrIgIkAAJAAkACQCABKAKAAyIDQQNNBEAgAEEAOwEADAELIAIgASgC/AIiBSgAACIENgIIAkACQAJAAkAgBEHSgpGaBEYEQCADQQhJBEAgAEEAOgABIABBADoAAAwGCyADIAUoAAQiBkEHakF4cSIIQRBqIgRJDQEgBkEIaiIHIANLIAZBd0tyDQIgAkEANgKAAiACIAY2AvwBIAIgBUEIajYC+AEgAkEYaiACQfgBahBvIAIoAhwhBiACKAIYIglBAkYEQCAAIAYQzgc2AgQgAEEBOgAADAYLIAJBkAFqIAJBIGpB6AD8CgAAIAIgBjYCjAEgAiAJNgKIASAIQQhqIgggBEsNAyABQQA2AoADIAMgBGshByAFIAhqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBSAEIAVqIAf8CgAACyABIAc2AoADCyABIAEpA9gCIAStfCIKNwPYAiABIAogC3w3A/ACIAEgCjcD6AIgAigC8AFBAUYEQCABIAIpA5ABPgKUAyABIAIoApgBIgM2ApgDIAEoAgBBAkcNBSABQQA2ApQDIAIgAi0A9AFBAXE6ACAgAiAGQQAgCUEBcRs2AhwgAiADNgIYIAFB+AFqIAJBGGoQ6QEMBQsgAkEBNgIcIAJBhMnBADYCGCACQgE3AiQgAiACQfABaq1CgICAgBCENwOIAiACIAJBiAJqNgIgIAJB+AFqIgEgAkEYahCxBiABEI4HIQEgAigC5AEiAwRAIAIoAugBIANBKGxBCBCiBwsgACABNgIEIABBAToAAAwFCyACQQE2AiwgAkHMyMEANgIoIAJBATYCHCACQZDOwQA2AhggAkEBNgIkIAIgAkEIaq1CgICAgJAEhDcD+AEgAiACQfgBajYCICACQQxqIgEgAkEYahCxBiAAIAEQjgc2AgQgAEEBOgAADAQLIABBADoAASAAQQA6AAAMAwtBCCAHIANB5M3BABDqBwALIAggBCADQdTNwQAQ6gcACyABQQA2ApADAkAgASgCiAFBAkYNACABKALkASIDRQ0AIAEoAugBIgRBBGsoAgAiBUF4cSIGIANBKGwiA0EEQQggBUEDcSIFG2pJDQIgBUEAIAYgA0EnaksbDQMgBBCiAgsgAUGIAWogAkGIAWpB8AD8CgAAIABBgAI7AQALIAJBkAJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuiBwIIfwJ+IwBBkAJrIgIkAAJAIAEoArgCIgNBA00EQCAAQQA7AQAMAQsgAiABKAK0AiIFKAAAIgQ2AggCQAJAAkACQCAEQdKCkZoERgRAIANBCEkEQCAAQQA6AAEgAEEAOgAADAYLIAMgBSgABCIGQQdqQXhxIghBEGoiBEkNASAGQQhqIgcgA0sgBkF3S3INAiACQQA2AoACIAIgBjYC/AEgAiAFQQhqNgL4ASACQRhqIAJB+AFqEG8gAigCHCEGIAIoAhgiCUECRgRAIAAgBhDOBzYCBCAAQQE6AAAMBgsgAkGQAWogAkEgakHoAPwKAAAgAiAGNgKMASACIAk2AogBIAhBCGoiCCAESw0DIAFBADYCuAIgAyAEayEHIAUgCGopAAAhCwJAAkAgBEUNACADIARGDQEgB0UNACAFIAQgBWogB/wKAAALIAEgBzYCuAILIAEgASkDcCAErXwiCjcDcCABIAogC3w3A4gBIAEgCjcDgAECQCACKALwAUEBRgRAIAEgAikDkAE+AqgCIAEgAigCmAEiAzYCrAIgASgCkAFBAkYNAQwGCyACQQE2AhwgAkGEycEANgIYIAJCATcCJCACIAJB8AFqrUKAgICAEIQ3A4gCIAIgAkGIAmo2AiAgAkH4AWoiASACQRhqELEGIAEQjgchASACKALkASIDBEAgAigC6AEgA0EobEEIEKIHCyAAIAE2AgQgAEEBOgAADAYLIAFBADYCqAIgAiACLQD0AUEBcToAICACIAZBACAJQQFxGzYCHCACIAM2AhggAUG8AmogAkEYahClBAwECyACQQE2AiwgAkHMyMEANgIoIAJBATYCHCACQZDOwQA2AhggAkEBNgIkIAIgAkEIaq1CgICAgJAEhDcD+AEgAiACQfgBajYCICACQQxqIgEgAkEYahCxBiAAIAEQjgc2AgQgAEEBOgAADAQLIABBADoAASAAQQA6AAAMAwtBCCAHIANB5M3BABDqBwALIAggBCADQdTNwQAQ6gcACyABQQA2AqQCAkAgASgCAEECRg0AIAEoAlwiA0UNAAJAIAEoAmAiBEEEaygCACIFQXhxIgYgA0EobCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgBiADQSdqSxsNASAEEKICDAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyABIAJBiAFqQfAA/AoAACAAQYACOwEACyACQZACaiQAC+oGAQV/AkACQAJAAkACQAJAAkAgAEEEayIHKAIAIghBeHEiBEEEQQggCEEDcSIFGyABak8EQCAFQQAgAUEnaiIGIARJGw0BAkAgAkEJTwRAIAIgAxDBBCICDQFBAA8LQQAhAiADQcz/e0sNCEEQIANBC2pBeHEgA0ELSRshASAAQQhrIQYgBUUEQCAGRSABQYACSXIgBCABa0GAgAhLIAEgBE9ycg0HIAAPCyAEIAZqIQUCQCABIARLBEAgBUHcuskAKAIARg0BQdi6yQAoAgAgBUcEQCAFKAIEIghBAnENCSAIQXhxIgggBGoiBCABSQ0JIAUgCBDWBCAEIAFrIgVBEE8EQCAHIAEgBygCAEEBcXJBAnI2AgAgASAGaiIBIAVBA3I2AgQgBCAGaiIEIAQoAgRBAXI2AgQgASAFEOMCDAkLIAcgBCAHKAIAQQFxckECcjYCACAEIAZqIgEgASgCBEEBcjYCBAwIC0HQuskAKAIAIARqIgQgAUkNCAJAIAQgAWsiBUEPTQRAIAcgCEEBcSAEckECcjYCACAEIAZqIgEgASgCBEEBcjYCBEEAIQVBACEBDAELIAcgASAIQQFxckECcjYCACABIAZqIgEgBUEBcjYCBCAEIAZqIgQgBTYCACAEIAQoAgRBfnE2AgQLQdi6yQAgATYCAEHQuskAIAU2AgAMBwsgBCABayIEQQ9NDQYgByABIAhBAXFyQQJyNgIAIAEgBmoiASAEQQNyNgIEIAUgBSgCBEEBcjYCBCABIAQQ4wIMBgtB1LrJACgCACAEaiIEIAFLDQQMBgsgAyABIAEgA0sbIgMEQCACIAAgA/wKAAALIAcoAgAiA0F4cSIHIAFBBEEIIANBA3EiARtqSQ0CIAFFIAYgB09yDQZBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcACyAHIAEgCEEBcXJBAnI2AgAgASAGaiIFIAQgAWsiAUEBcjYCBEHUuskAIAE2AgBB3LrJACAFNgIACyAGRQ0AIAAPCyADEHEiAUUNASADQXxBeCAHKAIAIgJBA3EbIAJBeHFqIgIgAiADSxsiAgRAIAEgACAC/AoAAAsgASECCyAAEKICCyACC68HAQZ/IwBBQGoiAyQAIAAoAgwhBAJAAkACQCAAKAIUIgEgACgCECICSQRAA0AgASAEai0AACIGQQlrIgVBGUsNAkEBIAV0QZOAgARxRQRAIAVBGUcNAyAAEMsEIQEMBAsgACABQQFqIgE2AhQgASACRw0ACyACIQELIANBEGogBCACIAFBAWoiACACIAAgAkkbEPkBIAMoAhQhACADKAIQIQJBFBBxIgFFDQIgASACNgIMIAFBBTYCACABIAA2AhAMAQsgBkH7AEYEQCAAIAAtABhBAWsiBToAGCABQQFqIQEgBUH/AXEEQCAAIAE2AhQCQCAAEMsEIgFFBEAgACgCDCEEAkACQCAAKAIUIgEgACgCECICSQRAA0ACQCABIARqLQAAQQlrDjIAAAMDAAMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBgMLIAAgAUEBaiIBNgIUIAEgAkcNAAsgAiEBCyADQShqIAQgAiABQQFqIgEgAiABIAJJGxD5ASADKAIsIQIgAygCKCEEQRQQcSIBRQ0HIAFBAzYCAAwBCyADQSBqIAQgAiABQQFqIgEgAiABIAJJGxD5ASADKAIkIQIgAygCICEEQRQQcSIBRQ0GIAFBBjYCAAsgASAENgIMIAEgAjYCEAsgACAALQAYQQFqOgAYDAMLIAAgAUEBajYCFCAAEIcEIQEgACAALQAYQQFqOgAYIAENAiAAKAIMIQQCQCAAKAIUIgEgACgCECICSQRAA0AgASAEai0AACIFQQlrIgZBF0tBASAGdEGTgIAEcUVyDQIgACABQQFqIgE2AhQgASACRw0ACyACIQELIANBOGogBCACIAEQ+QEgAygCPCEAIAMoAjghAkEUEHEiAUUNBCABIAI2AgwgAUEDNgIAIAEgADYCEAwDCyAFQf0ARgRAIAAgAUEBajYCFEEAIQEMAwsgA0EwaiAEIAIgARD5ASADKAI0IQAgAygCMCECQRQQcSIBRQ0DIAEgAjYCDCABQQo2AgAgASAANgIQDAILIANBGGogBCACIAEgAiABIAJJGxD5ASADKAIcIQAgAygCGCECQRQQcSIBRQ0CIAEgAjYCDCABQRg2AgAgASAANgIQDAELIANBCGogBCACIAFBAWoiACACIAAgAkkbEPkBIAMoAgwhACADKAIIIQJBFBBxIgFFDQEgASACNgIMIAFBCjYCACABIAA2AhALIANBQGskACABDwsAC6IHAgd/A34jAEHwCGsiBCQAIAG8IQcCf0EDIAGLQwAAgH9bDQAaQQIgB0GAgID8B3EiBUGAgID8B0YNABogB0H///8DcSIIQYCAgARyIAdBAXRB/v//B3EgB0EXdkH/AXEiBhsiCa0iC0IBgyEMIAVFBEBBBCAIRQ0BGiAGQZYBayEGQgEhDSAMUAwBC0KAgIAQIAtCAYYgCUGAgIAERiIIGyELQgJCASAIGyENQeh+Qel+IAgbIAZqIQYgDFALIQUgA0H//wNxIQggBCAGOwHoCCAEIA03A+AIIARCATcD2AggBCALNwPQCCAEIAU6AOoIAn8CQCAFQf8BcUEBTQRAQXRBBSAGwSIFQQBIGyAFbCIFQcD9AEkNAUHDhMIAQSVB6ITCABDrBwALAkACQCAFQf8BcSIJQQJHBEBBASEFQeqzxQBByIHCACAHQQBIIgYbQeqzxQBBASAGGyACGyEGQQEgB0EfdiACGyECIAlBBEcNAUECIQUgBEECOwGQCCADQf//A3ENAkEBIQUgBEEBNgKYCCAEQZiwxQA2ApQIIARBkAhqDAQLIARBAzYCmAggBEHzncYANgKUCCAEQQI7AZAIQQEhBkEAIQJBASEFIARBkAhqDAMLIARBAzYCmAggBEHsncYANgKUCCAEQQI7AZAIIARBkAhqDAILIAQgCDYCoAggBEEAOwGcCCAEQQI2ApgIIARBuYPCADYClAggBEGQCGoMAQtB6rPFAEEBIAdBAEgiCRshCkHqs8UAQciBwgAgCRsgB0EfdiEHIARBkAhqIAsgBiAEQRBqIAVBBHZBFWoiBkGAgH5BACADayADwUEASBsiBRDpAiAFwSEFAkAgBCgCkAgEQCAEQcgIaiAEQZgIaigCADYCACAEIAQpApAINwPACAwBCyAEQcAIaiAEQdAIaiAEQRBqIAYgBRBlCyAKIAIbIQZBASAHIAIbIQIgBSAELgHICCIHSARAIARBCGogBCgCwAggBCgCxAggByAIIARBkAhqEOwEIAQoAgwhBSAEKAIIDAELQQIhBSAEQQI7AZAIIANB//8DcUUEQEEBIQUgBEEBNgKYCCAEQZiwxQA2ApQIIARBkAhqDAELIAQgCDYCoAggBEEAOwGcCCAEQQI2ApgIIARBuYPCADYClAggBEGQCGoLIQMgBCAFNgLMCCAEIAM2AsgIIAQgAjYCxAggBCAGNgLACCAAIARBwAhqEL4DIARB8AhqJAALiAUBBH8gABC/BAJAAkAgACgCiAQiAQRAIAAoAowEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgClAQiAQRAIAAoApgEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCoAQiAQRAIAAoAqQEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCrAQiAQRAIAAoArAEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCuAQiAQRAIAAoArwEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCxAQiAQRAIAAoAsgEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgC0AQiAQRAIAAoAtQEIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgC3AQiAQRAIAAoAuAEIgBBBGsoAgAiA0F4cSICIAFBAnQiAUEEQQggA0EDcSIDG2pJDQEgA0EAIAIgAUEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAv7BAEEfwJAAkAgACgCBCIBBEAgACgCACIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAiwiAQRAIAAoAigiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAJUIgEEQCAAKAJQIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCfCIBBEAgACgCeCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAqQBIgEEQCAAKAKgASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAswBIgEEQCAAKALIASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAvQBIgEEQCAAKALwASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoApwCIgEEQCAAKAKYAiIAQQRrKAIAIgNBeHEiAiABQQJ0IgFBBEEIIANBA3EiAxtqSQ0BIANBACACIAFBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL3AUBBH8gACgCrAEiAUGECE8EQCABEJsHCwJAIAAoAgBFDQAgACgCBCIBQYQISQ0AIAEQmwcLAkAgACgCCEUNACAAKAIMIgFBhAhJDQAgARCbBwsCQCAAKAIQRQ0AIAAoAhQiAUGECEkNACABEJsHCwJAIAAoAhhFDQAgACgCHCIBQYQISQ0AIAEQmwcLAkAgACgCIEUNACAAKAIkIgFBhAhJDQAgARCbBwsCQCAAKAIoRQ0AIAAoAiwiAUGECEkNACABEJsHCwJAAkAgACgCOCIBBEAgACgCPCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAkQiAQRAIAAoAkgiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAJQIgEEQCAAKAJUIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsCQCAAKAIwRQ0AIAAoAjQiAUGECEkNACABEJsHCyAAKAJoIgFBgICAgHhyQYCAgIB4RwRAIAAoAmwiA0EEaygCACICQXhxIgQgAUEBdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAJ0IgFBgICAgHhyQYCAgIB4RwRAIAAoAngiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAJcIgEEQCAAKAJgIgBBBGsoAgAiA0F4cSICIAFBAnQiAUEEQQggA0EDcSIDG2pJDQEgA0EAIAIgAUEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuIBwEHfyMAQUBqIgEkAAJAAkAgACgCAEUEQCAAKAIQIgBFDQEgAEGTs8UAQQEQlwMhAgwCCyABQQxqIAAQyAUCQAJ/IAEoAgwiBEUEQCABLQAQIQQgACgCECIDBEBBASECIANB+rLFAEHqssUAIARBAXEiAxtBGUEQIAMbEJcDDQULIAAgBDoABEEADAELAkAgASgCECICQQFxDQAgAUKAgICAIDcCGCABIAQ2AgwgASACNgIQIAEgAiAEaiIFNgIUA0ACQCABQQxqEKgCQYCAxABrDgICAAELCyAAKAIQIgNFDQMgAygCAEEiIAMoAgQoAhARAgANAiABQoCAgIAgNwIYIAEgBTYCFCABIAI2AhAgASAENgIMA0ACQAJ/AkACQAJAIAFBDGoQqAIiAEGBgMQARwRAIABBgIDEAEYNASAAQSdHBEACQAJAAkACQAJAAkAgAEEhTARAIABBCWsOBQEDBgYCBQsgAEEiRg0DIABB3ABHDQUgAUIANwEiIAFB3LgBOwEgDAoLIAFCADcBIiABQdzoATsBIAwJCyABQgA3ASIgAUHc5AE7ASAMCAsgAUIANwEiIAFB3NwBOwEgDAcLIAFCADcBIiABQdzEADsBIAwGCyAARQ0ECwJAAkAgAEGABk8EQCAAEOUEDQELIAAQ4QINAQsgAUEwaiAAENYFIAFBKGogAUE4ai8AADsBACABIAEpADA3AyAgAS0AOiEAIAEtADshAiABQThqIAFBKGovAQA7AQAgASABKQMgNwMwIABB/wFxIAJB/wFxTw0IDAcLIAEgADYCIEGBASECQYABDAULIAMoAgBBJyADKAIEKAIQEQIADQkMBgsgAygCAEEiIAMoAgQoAhARAgAhAgwKC0HY5sgAQSsgAUEwakHstsUAQcy2xQAQ4AYACyABQgA3ASIgAUHc4AA7ASALQQIhAkEACyEAIAFBOGogAUEoai8BADsBACABIAEpAyA3AzALIAJB/wFxIQUgAEH/AXEhAiADKAIAIQYgAygCBCgCECEHIAEoAjAhBANAIAQhACAGIAVBgAFNBH8gAUEwaiACai0AAAUgAAsgBxECAA0EIAJBAWoiAiAFRw0ACwwACwALIAAoAhAiBARAIARB6rLFAEEQEJcDDQILIABBADoABEEACyECIAAgAjYCAAwCC0EBIQIMAQtBACECCyABQUBrJAAgAgu9BgEIfyMAQSBrIQgDQCABKAIAIgRB////A3EhAyAEQYCAgIB4cSEGAkAgBEGAgID8B3EiAkGAgID8B0YEQCADQQ12IAZBEHZyQYAEQQAgAxtyQYD4AXIhBgwBCyAGQRB2IQYgAkGAgIC4BE0EQCACQYCAgMQDTwRAIARBDHYgBEH/3wBxQQBHcSACQQ12IANBDXZqQYCAAWogBnJqIQYMAgsgAkGAgICYA0kNASADQYCAgARyIgRB/gAgAkEXdiIDa3YhAiAEQR0gA2siA3ZBAXEEfyACQQMgA3RBAWsgBHFBAEdqBSACCyAGciEGDAELIAZBgPgBciEGCyABQQRqKAIAIgNB////A3EhBSADQYCAgIB4cSEEAkAgA0GAgID8B3EiAkGAgID8B0cEQCAEQRB2IQQgAkGAgIC4BE0EQCACQYCAgMQDTwRAIANBDHYgA0H/3wBxQQBHcSACQQ12IAVBDXZqQYCAAWogBHJqIQQMAwsgAkGAgICYA0kNAiAFQYCAgARyIgNB/gAgAkEXdiIFa3YhAiADQR0gBWsiBXZBAXEEfyACQQMgBXRBAWsgA3FBAEdqBSACCyAEciEEDAILIARBgPgBciEEDAELIAVBDXYgBEEQdnJBgARBACAFG3JBgPgBciEECyABQQhqKAIAIgVB////A3EhByAFQYCAgIB4cSEDAkAgBUGAgID8B3EiAkGAgID8B0cEQCADQRB2IQMgAkGAgIC4BE0EQCACQYCAgMQDTwRAIAVBDHYgBUH/3wBxQQBHcSACQQ12IAdBDXZqQYCAAWogA3JqIQMMAwsgAkGAgICYA0kNAiAHQYCAgARyIgVB/gAgAkEXdiIHa3YhAiAFQR0gB2siB3ZBAXEEfyACQQMgB3RBAWsgBXFBAEdqBSACCyADciEDDAILIANBgPgBciEDDAELIAdBDXYgA0EQdnJBgARBACAHG3JBgPgBciEDCyAIQQJqIAlqIgIgBjsBACACQQRqIAM7AQAgAkECaiAEOwEAIAFBDGohASAJQQZqIglBHkcNAAsgACAI/QABAv0LAQAgAEEWaiAIQRhqKQEANwEAIABBEGogCEESaikBADcBAAuBCQEEfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgMtAABBAWsOHAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwACyABKAIAQaWtxwBBAiABKAIEKAIMEQAAIQAMHAsgASgCAEGnrccAQQIgASgCBCgCDBEAACEADBsLIAEoAgBBqa3HAEEDIAEoAgQoAgwRAAAhAAwaCyABKAIAQaytxwBBBCABKAIEKAIMEQAAIQAMGQsgASgCAEGwrccAQQUgASgCBCgCDBEAACEADBgLIAEoAgBBta3HAEECIAEoAgQoAgwRAAAhAAwXCyABKAIAQbetxwBBAyABKAIEKAIMEQAAIQAMFgsgASgCAEG6rccAQQQgASgCBCgCDBEAACEADBULIAEoAgBBvq3HAEEFIAEoAgQoAgwRAAAhAAwUCyABKAIAQcOtxwBBAiABKAIEKAIMEQAAIQAMEwsgASgCAEHFrccAQQMgASgCBCgCDBEAACEADBILIAEoAgBByK3HAEEEIAEoAgQoAgwRAAAhAAwRCyABKAIAQcytxwBBBSABKAIEKAIMEQAAIQAMEAsgASgCAEHRrccAQQYgASgCBCgCDBEAACEADA8LIAEoAgBB163HAEECIAEoAgQoAgwRAAAhAAwOCyABKAIAQdmtxwBBAyABKAIEKAIMEQAAIQAMDQsgASgCAEHcrccAQQQgASgCBCgCDBEAACEADAwLIAEoAgBB4K3HAEEFIAEoAgQoAgwRAAAhAAwLCyABKAIAQeWtxwBBAyABKAIEKAIMEQAAIQAMCgsgASgCAEHorccAQQQgASgCBCgCDBEAACEADAkLIAEoAgBB7K3HAEEFIAEoAgQoAgwRAAAhAAwICyABKAIAQfGtxwBBBiABKAIEKAIMEQAAIQAMBwsgASgCAEH3rccAQQQgASgCBCgCDBEAACEADAYLIAEoAgBB+63HAEEFIAEoAgQoAgwRAAAhAAwFCyABKAIAQYCuxwBBBiABKAIEKAIMEQAAIQAMBAsgASgCAEGGrscAQQcgASgCBCgCDBEAACEADAMLIAEoAgBBja7HAEEFIAEoAgQoAgwRAAAhAAwCCyABKAIAQZKuxwBBBiABKAIEKAIMEQAAIQAMAQtBASEAIAIgA0EBajYCDCABKAIAIgNBpqvHAEEHIAEoAgQiBSgCDCIEEQAADQACQCABLQAKQYABcUUEQCADQbuzxQBBASAEEQAADQIgAkEMaiABEMQEDQIgASgCACEDIAEoAgQoAgwhBAwBCyADQduBwgBBAiAEEQAADQEgAkEBOgAfIAIgBTYCFCACIAM2AhAgAkHggcIANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDEBA0BIAIoAiBB2YHCAEECIAIoAiQoAgwRAAANAQsgA0HejsgAQQEgBBEAACEACyACQTBqJAAgAAuDBwMIfwN9AXsjAEEQayIHJAAgB0EEaiABEKsGIAcoAgghCAJ/AkACQCAAKAIIIgIEQCAHKAIMIQRDAACAPyAAKgJAIAAtAFhBAkYiBRtDAAAAACAAKgI8IAUbIguTIQwgAkECdCEJIAAoAgRBDGohBUEAIQADQCAEIABBA2oiAk0EQCACIARB0NvBABCMBwALIAQgAGsiAkEAIAIgBE0bIgJBAUYNAyACQQJGDQIgACAIaiIDLQAAs/0TIANBAWotAACz/SAB/QwAAH9DAAB/QwAAf0MAAH9D/ecBIQ0gA0EDai0AALNDAAB/Q5W8IgJB////A3EhBiADQQJqLQAAs0MAAH9DlSEKAkAgAkGAgID8B3EiA0GAgID8B0YEQCAGQQ12QYAEQQAgBhtyQYD4AXIhAgwBCyADQYCAgLgESwRAQYD4ASECDAELIAJBgICAxANPBEAgA0ENdiAGQQ12aiACQQx2IAJB/98AcUEAR3FqQYCAAWohAgwBCyACQYCAgJgDSQRAQQAhAgwBCyAGQYCAgARyIgZB/gAgAkEXdiIDa3YhAiAGQR0gA2siA3ZBAXFFDQAgAkEDIAN0QQFrIAZxQQBHaiECCyAFIAI7AQAgBUECakH/AUMAAH9DQwAAAAAgCiALkyAMlUMAAH9DlCIKIApDAAAAAF0bIgogCkMAAH9DXhsQuQciCvwBQQAgCkMAAAAAYBsgCkMAAH9DXhtBEHRB/wFDAAB/Q0MAAAAAIA39HwEgC5MgDJVDAAB/Q5QiCiAKQwAAAABdGyIKIApDAAB/Q14bELkHIgr8AUEAIApDAAAAAGAbIApDAAB/Q14bQQh0ckH/AUMAAH9DQwAAAAAgDf0fACALkyAMlUMAAH9DlCIKIApDAAAAAF0bIgogCkMAAH9DXhsQuQciCvwBQQAgCkMAAAAAYBsgCkMAAH9DXhtyIgI7AQAgBUEEaiACQRB2OgAAIAVBGGohBSAJIABBBGoiAEcNAAsLAkACQCAHKAIEIgAEQCAIQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAAakkNASACQQAgBCAAQSdqSxsNAiAIEKICCyABQYQITwRAIAEQmwcLIAdBEGokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAAQQJqDAELIABBAWoLIARB4NvBABCMBwAL8AgBBX8jAEEgayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAEEBaw4cAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHAALIAEoAgBBpa3HAEECIAEoAgQoAgwRAAAhAgwcCyABKAIAQaetxwBBAiABKAIEKAIMEQAAIQIMGwsgASgCAEGprccAQQMgASgCBCgCDBEAACECDBoLIAEoAgBBrK3HAEEEIAEoAgQoAgwRAAAhAgwZCyABKAIAQbCtxwBBBSABKAIEKAIMEQAAIQIMGAsgASgCAEG1rccAQQIgASgCBCgCDBEAACECDBcLIAEoAgBBt63HAEEDIAEoAgQoAgwRAAAhAgwWCyABKAIAQbqtxwBBBCABKAIEKAIMEQAAIQIMFQsgASgCAEG+rccAQQUgASgCBCgCDBEAACECDBQLIAEoAgBBw63HAEECIAEoAgQoAgwRAAAhAgwTCyABKAIAQcWtxwBBAyABKAIEKAIMEQAAIQIMEgsgASgCAEHIrccAQQQgASgCBCgCDBEAACECDBELIAEoAgBBzK3HAEEFIAEoAgQoAgwRAAAhAgwQCyABKAIAQdGtxwBBBiABKAIEKAIMEQAAIQIMDwsgASgCAEHXrccAQQIgASgCBCgCDBEAACECDA4LIAEoAgBB2a3HAEEDIAEoAgQoAgwRAAAhAgwNCyABKAIAQdytxwBBBCABKAIEKAIMEQAAIQIMDAsgASgCAEHgrccAQQUgASgCBCgCDBEAACECDAsLIAEoAgBB5a3HAEEDIAEoAgQoAgwRAAAhAgwKCyABKAIAQeitxwBBBCABKAIEKAIMEQAAIQIMCQsgASgCAEHsrccAQQUgASgCBCgCDBEAACECDAgLIAEoAgBB8a3HAEEGIAEoAgQoAgwRAAAhAgwHCyABKAIAQfetxwBBBCABKAIEKAIMEQAAIQIMBgsgASgCAEH7rccAQQUgASgCBCgCDBEAACECDAULIAEoAgBBgK7HAEEGIAEoAgQoAgwRAAAhAgwECyABKAIAQYauxwBBByABKAIEKAIMEQAAIQIMAwsgASgCAEGNrscAQQUgASgCBCgCDBEAACECDAILIAEoAgBBkq7HAEEGIAEoAgQoAgwRAAAhAgwBC0EBIQIgASgCACIEQaarxwBBByABKAIEIgYoAgwiBREAAA0AIABBAWohAAJAIAEtAApBgAFxRQRAIARBu7PFAEEBIAURAAANAiAAIAEQygQNAiABKAIAIQQgASgCBCgCDCEFDAELIARB24HCAEECIAURAAANASADQQE6AA8gAyAGNgIEIAMgBDYCACADQeCBwgA2AhQgAyABKQIINwIYIAMgA0EPajYCCCADIAM2AhAgACADQRBqEMoEDQEgAygCEEHZgcIAQQIgAygCFCgCDBEAAA0BCyAEQd6OyABBASAFEQAAIQILIANBIGokACACC60GAQh/IwBBIGshCANAIAEoAgAiBEH///8DcSEDIARBgICAgHhxIQYCQCAEQYCAgPwHcSICQYCAgPwHRgRAIANBDXYgBkEQdnJBgARBACADG3JBgPgBciEGDAELIAZBEHYhBiACQYCAgLgETQRAIAJBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIAJBDXYgA0ENdmpBgIABaiAGcmohBgwCCyACQYCAgJgDSQ0BIANBgICABHIiBEH+ACACQRd2IgNrdiECIARBHSADayIDdkEBcQR/IAJBAyADdEEBayAEcUEAR2oFIAILIAZyIQYMAQsgBkGA+AFyIQYLIAFBBGooAgAiA0H///8DcSEFIANBgICAgHhxIQQCQCADQYCAgPwHcSICQYCAgPwHRwRAIARBEHYhBCACQYCAgLgETQRAIAJBgICAxANPBEAgA0EMdiADQf/fAHFBAEdxIAJBDXYgBUENdmpBgIABaiAEcmohBAwDCyACQYCAgJgDSQ0CIAVBgICABHIiA0H+ACACQRd2IgVrdiECIANBHSAFayIFdkEBcQR/IAJBAyAFdEEBayADcUEAR2oFIAILIARyIQQMAgsgBEGA+AFyIQQMAQsgBUENdiAEQRB2ckGABEEAIAUbckGA+AFyIQQLIAFBCGooAgAiBUH///8DcSEHIAVBgICAgHhxIQMCQCAFQYCAgPwHcSICQYCAgPwHRwRAIANBEHYhAyACQYCAgLgETQRAIAJBgICAxANPBEAgBUEMdiAFQf/fAHFBAEdxIAJBDXYgB0ENdmpBgIABaiADcmohAwwDCyACQYCAgJgDSQ0CIAdBgICABHIiBUH+ACACQRd2IgdrdiECIAVBHSAHayIHdkEBcQR/IAJBAyAHdEEBayAFcUEAR2oFIAILIANyIQMMAgsgA0GA+AFyIQMMAQsgB0ENdiADQRB2ckGABEEAIAcbckGA+AFyIQMLIAhBDmogCWoiAiAGOwEAIAJBBGogAzsBACACQQJqIAQ7AQAgAUEMaiEBIAlBBmoiCUESRw0ACyAAIAj9AAEO/QsBACAAQRBqIAhBHmovAQA7AQALzwgCB3sKfyABIAAgAEEDakF8cSIKayILaiIMQQNxIQ1BACEBIAAgCkcEQANAIAEgACwAAEG/f0pqIQEgAEEBaiEAIAtBAWoiCw0ACwsCQCANRQ0AIAogDEF8cWoiACwAAEG/f0ohCSANQQFGDQAgCSAALAABQb9/SmohCSANQQJGDQAgCSAALAACQb9/SmohCQsgDEECdiELIAEgCWohDAJAA0AgCiEJIAtFDQFBwAEgCyALQcABTxsiDkEDcSEPAkAgDkECdCIQQfAHcSIRRQRAQQAhAQwBC0EAIQEgCSEAIBBBEGsiCkEwTwRAIAAgCkEEdkEBaiISQfz///8BcSINQQR0aiEA/QwAAAAAAAAAAAAAAAAAAAAAIQIgDSEKIAkhAQNAIAH9AAIAIgMgAf0AAhAiBP0NDA0ODxwdHh8AAQIDAAECAyAB/QACICIGIAH9AAIwIgf9DQABAgMAAQIDDA0ODxwdHh/9DQABAgMEBQYHGBkaGxwdHh8iBf1NQQf9rQEgBUEG/a0B/VD9DAEBAQEBAQEBAQEBAQEBAQEiBf1OIAMgBP0NCAkKCxgZGhsAAQIDAAECAyAGIAf9DQABAgMAAQIDCAkKCxgZGhv9DQABAgMEBQYHGBkaGxwdHh8iCP1NQQf9rQEgCEEG/a0B/VAgBf1OIAMgBP0NBAUGBxQVFhcAAQIDAAECAyAGIAf9DQABAgMAAQIDBAUGBxQVFhf9DQABAgMEBQYHGBkaGxwdHh8iCP1NQQf9rQEgCEEG/a0B/VAgBf1OIAMgBP0NAAECAxAREhMAAQIDAAECAyAGIAf9DQABAgMAAQIDAAECAxAREhP9DQABAgMEBQYHGBkaGxwdHh8iA/1NQQf9rQEgA0EG/a0B/VAgBf1OIAL9rgH9rgH9rgH9rgEhAiABQUBrIQEgCkEEayIKDQALIAIgAiAD/Q0ICQoLDA0ODwABAgMAAQID/a4BIgIgAiAC/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQEgDSASRg0BCyAJIBFqIQoDQCAAQQhq/V0CACIC/U1BB/2tASACQQb9rQH9UP0MAQEBAQEBAQEBAQEBAQEBASIC/U4iA/0bASAA/V0CACIE/U1BB/2tASAEQQb9rQH9UCAC/U4iAv0bASAC/RsAIAFqaiAD/RsAamohASAAQRBqIgAgCkcNAAsLIAsgDmshCyAJIBBqIQogAUEIdkH/gfwHcSABQf+B/AdxakGBgARsQRB2IAxqIQwgD0UNAAsCfyAJIA5B/AFxQQJ0aiIBKAIAIgBBf3NBB3YgAEEGdnJBgYKECHEiACAPQQFGDQAaIAAgASgCBCIAQX9zQQd2IABBBnZyQYGChAhxaiIAIA9BAkYNABogACABKAIIIgBBf3NBB3YgAEEGdnJBgYKECHFqCyIAQQh2Qf+BHHEgAEH/gfwHcWpBgYAEbEEQdiAMaiEMCyAMC+sEAQR/AkACQCAAKAIAIgIEQCAAKAIEIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAgwiAgRAIAAoAhAiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCOCICBEAgACgCPCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJcIgIEQCAAKAJgIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAmgiAkGAgICAeHJBgICAgHhHBEAgACgCbCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJ0IgIEQCAAKAJ4IgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILAkAgACgCoAEiAkGAgICAeEYNACACBEAgACgCpAEiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQIgAUEAIAQgAkEnaksbDQMgAxCiAgsgACgCrAEiAkUNACAAKAKwASIAQQRrKAIAIgNBeHEiAUEEQQggA0EDcSIDGyACakkNASADQQAgASACQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC90GAQZ/QeS0yQAoAgAiAiAASQRAIAAgAiIBayIDQdy0yQAoAgAgAWtLBEBB3LTJACABIANBBEEEEKQFQeS0yQAoAgAhAQtB4LTJACgCACIFIAFBAnRqIQQgA0ECTwRAIAAgAkF/c2pBAnQiBgRAIARBACAG/AsACyAAIAFqQQJ0IAJBAnRrIAVqQQRrIQQgASADakEBayEBCyAEQQA2AgBB5LTJACABQQFqNgIAC0HwtMkAKAIAIgIgAEkEQCAAIAIiAWsiA0HotMkAKAIAIAFrSwRAQei0yQAgASADQQRBBBCkBUHwtMkAKAIAIQELQey0yQAoAgAiBSABQQJ0aiEEIANBAk8EQCAAIAJBf3NqQQJ0IgYEQCAEQQAgBvwLAAsgACABakECdCACQQJ0ayAFakEEayEEIAEgA2pBAWshAQsgBEEANgIAQfC0yQAgAUEBajYCAAtBlLXJACgCACICIABJBEAgACACIgFrIgNBjLXJACgCACABa0sEQEGMtckAIAEgA0EEQQQQpAVBlLXJACgCACEBC0GQtckAKAIAIgUgAUECdGohBCADQQJPBEAgACACQX9zakECdCIGBEAgBEEAIAb8CwALIAAgAWpBAnQgAkECdGsgBWpBBGshBCABIANqQQFrIQELIARBADYCAEGUtckAIAFBAWo2AgALQfy0yQAoAgAiAkH//wNNBEAgAiEAQYCABCACayIBQfS0yQAoAgAgAmtLBEBB9LTJACACIAFBBEEEEKQFQfy0yQAoAgAhAAtB+LTJACgCACIEIABBAnQiA2ohASACQf//A0cEQEH8/w8gAkECdCIFayIGBEAgAUEAIAb8CwALIAMgBWsgBGpB/P8PaiEBIAAgAmtB//8DaiEACyABQQA2AgBB/LTJACAAQQFqNgIAC0GItckAKAIAIgJB//8DTQRAIAIhAEGAgAQgAmsiAUGAtckAKAIAIAJrSwRAQYC1yQAgAiABQQRBBBCkBUGItckAKAIAIQALQYS1yQAoAgAiBCAAQQJ0IgNqIQEgAkH//wNHBEBB/P8PIAJBAnQiBWsiBgRAIAFBACAG/AsACyADIAVrIARqQfz/D2ohASAAIAJrQf//A2ohAAsgAUEANgIAQYi1yQAgAEEBajYCAAsLjgcCAX8BfCMAQTBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOEQECAwQFBgcICQoLDA0ODxARAAsgAiAALQABOgAIIAIgAkEIaq1CgICAgMABhDcDECABKAIAIAEoAgQgAkIBNwIkIAJBAjYCHCACQfSQxgA2AhggAiACQRBqNgIgIAJBGGoQwQMMEQsgAiAAKQMINwMIIAIgAkEIaq1CgICAgKAFhDcDECABKAIAIAEoAgQgAkIBNwIkIAJBAjYCHCACQZCRxgA2AhggAiACQRBqNgIgIAJBGGoQwQMMEAsgAiAAKQMINwMIIAIgAkEIaq1CgICAgNANhDcDECABKAIAIAEoAgQgAkIBNwIkIAJBAjYCHCACQZCRxgA2AhggAiACQRBqNgIgIAJBGGoQwQMMDwsgACsDCCEDIAIgAkEQaq1CgICAgOANhDcDCCACIAM5AxAgASgCACABKAIEIAJCATcCJCACQQI2AhwgAkHspcYANgIYIAIgAkEIajYCICACQRhqEMEDDA4LIAIgACgCBDYCCCACIAJBCGqtQoCAgIDwDYQ3AxAgASgCACABKAIEIAJCATcCJCACQQI2AhwgAkGskcYANgIYIAIgAkEQajYCICACQRhqEMEDDA0LIAIgACkCBDcCCCACIAJBCGqtQoCAgICADoQ3AxAgASgCACABKAIEIAJCATcCJCACQQE2AhwgAkHEkcYANgIYIAIgAkEQajYCICACQRhqEMEDDAwLIAEoAgBBzJHGAEEKIAEoAgQoAgwRAAAMCwsgASgCAEHWkcYAQQogASgCBCgCDBEAAAwKCyABKAIAQeCRxgBBDCABKAIEKAIMEQAADAkLIAEoAgBB7JHGAEEOIAEoAgQoAgwRAAAMCAsgASgCAEH6kcYAQQggASgCBCgCDBEAAAwHCyABKAIAQYKSxgBBAyABKAIEKAIMEQAADAYLIAEoAgBBhZLGAEEEIAEoAgQoAgwRAAAMBQsgASgCAEGJksYAQQwgASgCBCgCDBEAAAwECyABKAIAQZWSxgBBDyABKAIEKAIMEQAADAMLIAEoAgBBpJLGAEENIAEoAgQoAgwRAAAMAgsgASgCAEGxksYAQQ4gASgCBCgCDBEAAAwBCyABKAIAIAAoAgQgACgCCCABKAIEKAIMEQAACyACQTBqJAAL9AUCBX8BfiABQiCIIAFCEIinIQUCfyABpyIDQf//AXFFBEAgA0EQdAwBCyADQf8HcSEGIANBgIACcSECIANBgPgBcSIDQYD4AUYEQCACQRB0IQMgA0GAgID8B3IgBkUNARogAyAGQQ10ckGAgID+B3IMAQsgAkEQdCECIANBDXRBgICA/ABxIAZBDXRyQYCAgMADaiACciADDQAaIAYgBmdBEGsiBkH//wNxQQhqdEH///8DcSACQYCAgNgDciAGQRd0a3ILIQYgAUIwiCEBpyEDAn8gBUH//wFxBEAgBUH/B3EhAiAFQYCAAnEhBCAFQYD4AXEiBUGA+AFHBEAgBEEQdCEEIAVBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAEciAFDQIaIAIgAmdBEGsiBUH//wNxQQhqdEH///8DcSAEQYCAgNgDciAFQRd0a3IMAgsgBEEQdCEFIAUgAkENdHJBgICA/gdyIAINARogBUGAgID8B3IMAQsgBUEQdAshBSABpyECIAAgBv0RIAX9HAECfyADQf//AXEEQCADQf8HcSEEIANBgIACcSEAIANBgPgBcSIDQYD4AUcEQCAAQRB0IQAgA0ENdEGAgID8AHEgBEENdHJBgICAwANqIAByIAMNAhogBCAEZ0EQayIDQf//A3FBCGp0Qf///wNxIABBgICA2ANyIANBF3RrcgwCCyAAQRB0IQMgAyAEQQ10ckGAgID+B3IgBA0BGiADQYCAgPwHcgwBCyADQRB0C/0cAgJ/IAJB//8BcQRAIAJB/wdxIQQgAkGAgAJxIQAgAkGA+AFxIgJBgPgBRwRAIABBEHQhACACQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogAHIgAg0CGiAEIARnQRBrIgJB//8DcUEIanRB////A3EgAEGAgIDYA3IgAkEXdGtyDAILIABBEHQhAiACIARBDXRyQYCAgP4HciAEDQEaIAJBgICA/AdyDAELIAJBEHQL/RwD/QsEAAuOBgENfyAAIAAoAgQiCCAAKAIAIgNJQQJ0aiIFIABBDEEIIAAoAgwgACgCCEkiBBtqIgkgACADIAhNQQJ0aiIIIABBCEEMIAQbaiIDKAIAIAgoAgBJIgQbIAkoAgAiCyAFKAIAIgpJIgUbIgYoAgAhDCADIAggCSAFGyAEGyIHKAIAIQ0gAiALIAogBRsiCTYCACACIAcgBiAMIA1LIgUbKAIANgIEIAIgBiAHIAUbKAIANgIIIAJBDGoiCyAIIAMgBBsoAgAiCDYCACAAQRBqIgMgACgCFCIFIAAoAhAiBklBAnRqIgcgA0EMQQggACgCHCAAKAIYSSIKG2oiBCADIAUgBk9BAnRqIgAgA0EIQQwgChtqIgUoAgAgACgCAEkiBhsgBCgCACIKIAcoAgAiDEkiAxsiBygCACENIAUgACAEIAMbIAYbIgQoAgAhDiACQRBqIg8gCiAMIAMbIgM2AgAgAkEUaiAEIAcgDSAOSyIKGygCADYCACACQRhqIAcgBCAKGygCADYCACACQRxqIgcgACAFIAYbKAIAIgA2AgAgASAD/REgDyADIAlJQQJ0aiIFKAIAIgT9HAEgBSAEIAIgAyAJT0ECdGoiBigCACICSUECdGoiBSgCACID/RwCIAUgAyAGIAIgBE1BAnRqIgYoAgAiBElBAnRqIgooAgAiBf0cAyAJ/REgAv0cASAE/RwCIAYgAyAET0ECdGoiDCgCACIC/RwD/bcB/QsCACABIAdBfEEAIAAgCE8baiIBQXxBACABKAIAIgEgC0F8QQAgACAISRtqIgQoAgAiCU8baiIDQXxBACADKAIAIgMgBEF8QQAgASAJSRtqIgcoAgAiBE8baiILKAIAIgb9ESAD/RwBIAH9HAIgAP0cAyAHQXxBACADIARJG2oiASgCACIA/REgBP0cASAJ/RwCIAj9HAP9uQH9CwIQAkAgDCACIAVNQQJ0aiABQXxBACAAIAZLG2pBBGpGBEAgCiACIAVLQQJ0aiALQXxBACAAIAZNG2pBBGpGDQELEIAIAAsLrQYCBX8EfSMAQSBrIgQkAEEBIQUCQAJAAkAgAiACQQRBAyADQQFxGyIHbiIGIAdsRgRAIAZBAnQiBwRAQQAhBQJAIAdBAE4EQCAEQQA2AhggBEEIakEBIAcgBEEUahCFByAEKAIIQQFHDQEgBCgCECEGIAQoAgwhBQsgBCAGNgIYIAQgBTYCFEHgvsQAQTYgBEEUakHQvsQAQZi/xAAQ4AYACyAEKAIMIQULQQAhBiAEQQA2AhwgBCAFNgIYIAQgBzYCFCADQQFxDQEgAkEDbiIDQQJ0IgIEQCACIAdLBEAgBEEUakEAIAIQ7wUgBCgCHCEGIAQoAhghBQsgBSAGaiEHIAJBAWsiCARAIAdBACAI/AsACyAHIAhqQQA6AAAgAiAGaiEGCyAEIAY2AhwgBkECdiICIAMgAiADSRsiA0UNAgNAIAFBCGoqAgAhCyABQQRqKgIAIQpDAAB/QyEJIAEqAgAiDEMAAIA/XQR9IAxDAAAAABDgCEMAAH9DlAUgCQsQuQciDEMAAIC/XkUgDEMAAIBDXUVyDQQgCkMAAIA/XQR9IApDAAAAABDgCEMAAH9DlAUgCQsQuQciCkMAAIC/XkUgCkMAAIBDXUVyDQQgC0MAAIA/XQR9IAtDAAAAABDgCEMAAH9DlAUgCQsQuQciCUMAAIC/XkUgCUMAAIBDXUVyDQQgBSAM/AE6AAAgBUEDakH/AToAACAFQQJqIAn8AToAACAFQQFqIAr8AToAACABQQxqIQEgBUEEaiEFIANBAWsiAw0ACwwCC0H4vcQAQcUAQcC+xAAQ6wcACwJAAkAgAiAHSwRAIARBFGpBACACEO8FIAQoAhghBSAEKAIcIQMMAQtBACEDIAJFDQELA0BDAAB/QyEJIAEqAgAiC0MAAIA/XQR9IAtDAAAAABDgCEMAAH9DlAUgCQsQuQciCUMAAIC/XkUgCUMAAIBDXUVyDQMgAyAFaiAJ/AE6AAAgAUEEaiEBIANBAWohAyACQQFrIgINAAsLIAQgAzYCHAsgACAEKQIUNwIAIABBCGogBEEcaigCADYCACAEQSBqJAAPC0Gov8QAEN0JAAvABgEGfyMAQfAAayICJAACfwJAAkACQCAAKAIAIgFFDQACQCAAKAIIIgMgACgCBCIFTw0AIAEgA2otAABB1QBHDQBBASEEIAAgA0EBaiIDNgIICwJAAkACQCADIAVJBEAgASADai0AAEHLAEYNAQsgBEUNA0EAIQMMAQsgACADQQFqIgY2AggCQAJAIAUgBk0NACABIAZqLQAAQcMARw0AIAAgA0ECajYCCEEBIQFBxbPFACEDDAELIAJByABqIAAQ7wIgAigCSCIDRQRAIAItAEwhASAAKAIQIgQEQEEBIARB+rLFAEHqssUAIAFBAXEiBBtBGUEQIAQbEJcDDQgaCyAAIAE6AAQgAEEANgIAQQAMBwsgAigCTCIBBEAgAigCVEUNAQsgACgCECIBBEAgAUHqssUAQRAQlwMNBQsgAEEAOgAEIABBADYCAEEADAYLIARFDQELIAAoAhAiBARAIARBxrPFAEEHEJcDDQMLIANFDQELIAAoAhAiBARAIARBzbPFAEEIEJcDDQILIAJBATsBRCACIAE2AkAgAkEANgI8IAJBAToAOCACQd8ANgI0IAIgATYCMCACQQA2AiwgAiABNgIoIAIgAzYCJCACQd8ANgIgIAJBGGogAkEgahCuBCACKAIYIgEEQCAEBEAgBCABIAIoAhwQlwMNAwsgAkHIAGogAkEgakEo/AoAACAEIQEDQCABIQMCQANAIAMhBSACQRBqIAJByABqEK4EIAIoAhAiBkUNAUEAIQMgBUUNAAsgAigCFCEDIAVB6rPFAEEBEJcDDQRBACEBIARFDQEgBCIBIAYgAxCXAw0EDAELCyABRQ0BIAFB6LPFAEECEJcDRQ0BDAILQdizxQAQ3QkACyAAKAIQIgEEQCABQeuzxQBBAxCXAw0BCyACQQhqIAAQtwZBASACKAIIQQFxDQIaIAAoAhAiAQRAQQEgAUHejsgAQQEQlwMNAxoLIAAoAgAiA0UNASAAKAIIIgEgACgCBE8NASABIANqLQAAQfUARw0BIAAgAUEBajYCCEEADAILQQEMAQsgACgCECIBBEBBASABQe6zxQBBBBCXAw0BGgsgABCGAgsgAkHwAGokAAvLBgIIfwN+IwBBoAFrIgMkACABvCEEAn9BAyABi0MAAIB/Ww0AGkECIARBgICA/AdxIgdBgICA/AdGDQAaIARB////A3EiBUGAgIAEciAEQQF0Qf7//wdxIARBF3ZB/wFxIgYbIgitIgtCAYMhDCAHRQRAQQQgBUUNARogBkGWAWshBkIBIQ0gDFAMAQtCgICAECALQgGGIAhBgICABEYiBRshC0ICQgEgBRshDUHofkHpfiAFGyAGaiEGIAxQCyEHIAMgBjsBiAEgAyANNwOAASADQgE3A3ggAyALNwNwIAMgBzoAigECQAJAAkACQAJAAkACQAJAIAdB/wFxQQFNBEAgA0HgAGogA0HwAGogA0EHahDPASADKAJgRQ0BIANBmAFqIANB6ABqKAIANgIAIAMgAykCYDcDkAEMAgsgB0H/AXEiBUECRg0CIANBAjsBGEEBIQdB6rPFAEHIgcIAIARBAEgiBhtB6rPFAEEBIAYbIAIbIQZBASAEQR92IAIbIQIgBUEERg0DIANBAzYCICADQeydxgA2AhwMBwsgA0GQAWogA0HwAGogA0EHahBXCyADKAKUASIHRQ0CIAMoApABIgYtAABBME0NA0Hqs8UAQQEgBEEASCIFGyEIQeqzxQBByIHCACAFGyEJIARBH3YhCiADLgGYASEFIAMgBjYCHCADQQI7ARggA0EBNgIgIAdBAUYEQCADQSRqIQRBAyEHDAULIANBPGohBCADQQI7ATAgA0HsucUANgIoIANBAjsBJCADIAdBAWs2AjggA0EBNgIsIAMgBkEBajYCNEEFIQcMBAsgA0EDNgIgIANB853GADYCHCADQQI7ARhBASEGQQAhAkEBIQcMBAsgA0EDNgIgIANBu4PCADYCHAwDC0G+g8IAQSFBoITCABDrBwALQfCDwgBBH0GwhMIAEOsHAAsgCSAIIAIbIQZBASAKIAIbIQIgBEEBOwEMIARBAjsBACAEQQEgBWsgBUEBayAFQQBMIgUbOwEOIARBAkEBIAUbNgIIIARBwYTCAEHAhMIAIAUbNgIECyADIAc2AmwgAyACNgJkIAMgBjYCYCADIANBGGo2AmggACADQeAAahC+AyADQaABaiQAC8QHAg1/AnsjAEEwayICJAAgAS0AASIFIAEtAAAiBkEBdGohDEECIQ1BAiIDBEAgAUECaiEEA0AgDUEBdCENIAQtAAAgDEEBdGohDCAEQQFqIQQgA0EBayIDDQALCyABQQRqIQMgAkEAOgASIAJBAToAEwJ/IAUtAPD5RCAGLQDw+URPBEBBASEKIAUhCCAGIQVBAAwBCyACQQA6ABMgAkEBOgASIAYhCEEBCyEGQQIhBCACQQI2AiQgAkKAgICA8B83AhwgAiADNgIYIAIgATYCFAJAAkADQAJAAkACQCAERQRAIAIoAiAiA0UNBiACIANBAWs2AiAgAigCFCIEIAIoAhhHDQEMBgsgAkEANgIkIAJBCGohCwJAAkACQCAEIAJBFGoiAygCDCIHTwRAIAcNAQwCCyADIAcgBEF/c2o2AgwgAyADKAIAIgkgBGoiB0EBaiADKAIEIg4gBCAOIAlrIglJGzYCACAEIAlPDQEgAyADKAIIIARqIgRBAWo2AggMAgsgAyADKAIAIgkgB0EBayIEakEBaiADKAIEIg4gBCAOIAlrIglJGzYCACAEIAlJBEAgAyADKAIIIAdqNgIIC0EAIQcgA0EANgIMDAELQQAhBwsgCyAHNgIEIAsgBDYCACACKAIMIgRFDQUgAigCCCEDDAELIAIgBEEBajYCFCACIAIoAhwiA0EBajYCHAsgBC0AACIELQDw+UQiByAFQf8BcSILLQDw+URPBEACQCAEIAtGDQAgByAIQf8BcS0A8PlETw0AIANBgAJPDQIgAiADOgATIAMhCiAEIQgLIAIoAiQhBAwCCyACIAY6ABMgA0H/AUsNAiACIAM6ABIgBiEKIAMhBiAFIQggBCEFIAIoAiQhBAwBCwtB2ObIAEErIAJBL2pBiJbIAEHYmMgAEOAGAAtB2ObIAEErIAJBL2pBiJbIAEHomMgAEOAGAAsgBkH/AXEiCCAKQf8BcUYEQCACQQA2AhRBASACQRJqIAJBE2ogAkEUakHImMgAEPkHAAsCQCAIQQRJBEAgCkH/AXEiBUEETw0BIAEgBWr9BwAAIQ8gASAIav0HAAAhECAAQQQ2AnggACABNgJ0IABBADYCcCAAQRw2AmggACANNgJkIAAgDDYCYCAAQRo2AjAgACAKOgAlIAAgBjoAJCAAQQQgBSAGQf8BcSIBIAEgBUkbQRBqIgEgAUEETRs2AiAgACAP/QsEECAAIBD9CwQAIAJBMGokAA8LIAhBBEGImsgAEIwHAAsgBUEEQZiayAAQjAcAC58GAQd/IwBBMGsiBCQAIAEoAgAiBygCDCEGAkACQAJAIAcoAhQiAyAHKAIQIgJJBEADQCADIAZqLQAAIghBCWsiBUEXS0EBIAV0QZOAgARxRXINAiAHIANBAWoiAzYCFCACIANHDQALIAIhAwtBASEFIARBKGogBiACIANBAWoiASACIAEgAkkbEPkBIAQoAiwhAyAEKAIoIQFBFBBxIgJFDQIgAiABNgIMIAJBAzYCACAAIAI2AgQgAiADNgIQDAELIAhB/QBGBEBBACEFIABBADoAAQwBCwJAIAEtAARFBEAgA0EBaiEDIAhBLEYEQCAHIAM2AhQgAiADSwRAA0AgAyAGai0AACIBQQlrIgVBGUsNBEEBIAV0QZOAgARxRQRAIAVBGUcNBSAAQQE6AAFBACEFDAYLIAcgA0EBaiIDNgIUIAIgA0cNAAsgAiEDC0EBIQUgBEEQaiAGIAIgA0EBaiIBIAIgASACSRsQ+QEgBCgCFCEDIAQoAhAhAUEUEHEiAkUNBCACIAE2AgwgAkEFNgIAIAAgAjYCBCACIAM2AhAMAwsgBEEgaiAGIAIgAyACIAIgA0sbEPkBIAQoAiQhAyAEKAIgIQFBFBBxIgJFDQMgAiABNgIMIAJBCDYCACAAIAI2AgQgAiADNgIQQQEhBQwCC0EAIQUgAUEAOgAEIAhBIkcEQEEBIQUgBCAGIAIgA0EBaiIBIAIgASACSRsQ+QEgBCgCBCEDIAQoAgAhAUEUEHEiAkUNAyACIAE2AgwgAkERNgIAIAAgAjYCBCACIAM2AhAMAgsgAEEBOgABDAELQQEhBSABQf0ARwRAIARBCGogBiACIANBAWoiASACIAEgAkkbEPkBIAQoAgwhAyAEKAIIIQFBFBBxIgJFDQIgAiABNgIMIAJBETYCACAAIAI2AgQgAiADNgIQDAELIARBGGogBiACIANBAWoiASACIAEgAkkbEPkBIAQoAhwhAyAEKAIYIQFBFBBxIgJFDQEgAiABNgIMIAJBFTYCACAAIAI2AgQgAiADNgIQCyAAIAU6AAAgBEEwaiQADwsAC8gGAgd/An4jAEEwayIDJAACQAJAAkAgASgCFCICIAEoAhAiBEkEQCABKAIMIQgCfgJAA0AgAiAIai0AACIFQQlrIgZBF0tBASAGdEGTgIAEcUVyDQEgASACQQFqIgI2AhQgAiAERw0ACyAEIQJCAAwBC0KAAgsgBa1CEIaEQoCCuANRDQELIAACfQJAAkACQAJAAkAgA0EQaiABKAIMIgUgBCACIARJBH8DQAJAIAIgBWotAAAiBkEJaw4lAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEAwQLIAEgAkEBaiICNgIUIAIgBEcNAAsgBAUgAgtBAWoiASAEIAEgBEkbEPkBIAMoAhQhBCADKAIQIQFBFBBxIgJFDQggAiABNgIMIAJBBTYCACACIAQ2AhAMAwsgASACQQFqNgIUIANBGGogAUEAEMcDIAMpAxgiCkIDUQ0BIAMpAyAhCQJAAkAgCqdBAWsOAgABBQsgCbUMBQsgCbQMBAsgBkEwa0H/AXFBCk8EQCABIANBL2pB2OfAABDuASABEOsFIQIMAgsgA0EYaiABQQEQxwMgAykDGCIKQgNRDQAgAykDICEJAkACQAJAIAqnQQFrDgIBAgALIAm/tkMAAIA/QwAAgL8gCUIAWRuYDAULIAm1DAQLIAm0DAMLIAMoAiAhAgsgAEECNgIAIAAgAjYCBAwDCyAJv7ZDAACAP0MAAIC/IAlCAFkbmAs4AgQgAEEBNgIADAELIAEgAkEBaiIHNgIUAkACQAJAIAQgB00NACABIAJBAmoiBTYCFCAHIAhqLQAAQfUARw0BIAUgByAEIAQgB0kbIgdGDQAgASACQQNqIgY2AhQgBSAIai0AAEHsAEcEQCAGIQUMAgsgBiAHRg0AIAEgAkEEaiIFNgIUIAYgCGotAABB7ABHDQEgAEEANgIADAMLIAMgCCAEIAcQ+QEgAygCBCEEIAMoAgAhAUEUEHEiAkUNAyACQQU2AgAMAQsgA0EIaiAIIAQgBRD5ASADKAIMIQQgAygCCCEBQRQQcSICRQ0CIAJBCTYCAAsgAiABNgIMIAAgAjYCBCAAQQI2AgAgAiAENgIQCyADQTBqJAAPCwALzQYDA38BfAN9IwBBEGsiAiQAAkAgASgCAEGUgICAeEYEQAJ9AkAgAAJ/AkACQAJAAn0CQAJAIAEoAgwiBARAAn0CQAJAAkACQAJAAkACQAJAAkACQAJAQRUgASgCCCIBKAIAIgNBgICAgHhzIANBAE4bQQFrDgoKAAECAwQFBgcICQsgAS8BBLMMCgsgASgCBLMMCQsgASkDCLUMCAsgASwABLIMBwsgAS4BBLIMBgsgASgCBLIMBQsgASkDCLQMBAsgASoCBAwDCyABKwMIIgW2QwAAgD9DAACAvyAFvUIAWRuYDAILIAEgAkEPakHY58AAEJUIDAkLIAEtAASzCyEGIARBAUYNBAJAAkACQAJAAkACQAJAAkACQEEVIAEoAhAiA0GAgICAeHMgA0EAThtBAWsOCgsAAQIDBAUGBwgKCyABLwEUswwLCyABKAIUswwKCyABKQMYtQwJCyABLAAUsgwICyABLgEUsgwHCyABKAIUsgwGCyABKQMYtAwFCyABKgIUDAQLIAErAxgiBbZDAACAP0MAAIC/IAW9QgBZG5gMAwtBACACQQ9qQfThwAAQ2wYMBgsgAUEQaiACQQ9qQdjnwAAQlQgMBQsgAS0AFLMLIQcgBEECRg0CAkACQAJAAkACQAJAAkACQAJAQRUgASgCICIDQYCAgIB4cyADQQBOG0EBaw4KDQABAgMEBQYHCAoLIAEvASSzDA0LIAEoAiSzDAwLIAEpAyi1DAsLIAEsACSyDAoLIAEuASSyDAkLIAEoAiSyDAgLIAEpAyi0DAcLIAEqAiQMBgsgASsDKCIFtkMAAIA/QwAAgL8gBb1CAFkbmAwFC0EBIAJBD2pB9OHAABDbBgwCCyABQSBqIAJBD2pB2OfAABCVCAwBC0ECIAJBD2pB9OHAABDbBgs2AgQgAEEBNgIADAMLIAEtACSzCyEIIARBA0cEQCACQQM2AgggBEH9////AGpB/////wBxQQNqIAJBCGpB6JXBABDbBiEBIABBATYCACAAIAE2AgQMAgsgACAIOAIMIAAgBzgCCCAAIAY4AgQgAEEANgIADAELIAEgAkEPakH04cAAEJUIIQEgAEEBNgIAIAAgATYCBAsgAkEQaiQAC+4FAQp/IwBBQGoiBSQAIAVBADYCKCAFQQA2AjxBBCEHIAVBLGohCSAFQTxqIQwCQAJAAkACfyAEQQVJBEAgCSEKIAwMAQsgBUEIaiAFQShqQX8gBEEBa2d2QQFqEPUDIAUoAggiBkGBgICAeEcEQCAGDQJB2JXHAEERQdTMxwAQ6wcACyAFKAI8IgdBBUkEQCAHIQYgCSEKQQQhByAMDAELIAUoAiwhBiAFKAIwIQogCQshCyADIARBAnRqIQ0CQAJAIAsgBiAHSQR/AkAgBEH/////A3EiCCAHIAZBf3NqIgQgBCAISxsiCEEHTQ0AIAZBAnQgCmoiBCADa0EQSQ0AIAYgCEEBaiIIIAhBA3EiCEEEIAgbayIOaiEGIAMgDkECdGoDQCAEIAP9AAIA/QsCACADQRBqIQMgBEEQaiEEIA5BBGsiDg0ACyEDCyAKIAZBAnRqIQQDQCADIA1GDQIgBCADKAIANgIAIARBBGohBCADQQRqIQMgByAGQQFqIgZHDQALIAcFIAYLNgIAIAMgDUYNAQNAAn8gBSgCPCIHQQVJBEAgByEEIAkhC0EEIQcgDAwBCyAFKAIsIQQgBSgCMCELIAkLIQYgAygCACEKIAQgB0YEfyAFQShqENQGIAUoAjAhCyAJIQYgBSgCLAUgBAtBAnQgC2ogCjYCACAGIAYoAgBBAWo2AgAgA0EEaiIDIA1HDQALDAELIAsgBjYCAAsgBUEgaiAFQThqKQIANwMAIAUgBf0AAij9CwMQIAEgAksEQCAAIAJBGGxqIgQoAhQiAUEFTwRAIAQoAggiA0EEaygCACIAQXhxIgIgAUECdCIBQQRBCCAAQQNxIgAbakkNAyAAQQAgAiABQSdqSxsNBCADEKICCyAEIAX9AAMQ/QsCACAEQRBqIAVBIGopAwA3AgAgBUFAayQADwsgAiABQby7xwAQjAcLAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALigYCEX8BfiMAQTBrIgUkACAFQQxqrUKAgICAEIQhFCAALQAMIQwgACgCBCERIAAoAgAhECAAKAIIIglBBGohCgJ/A0ACQCANIhINACAEIQtBASENAkACfyACIAZPBEADQCABIAZqIQcCQAJAAkACQAJAAkACQAJAIAIgBmsiCEEITwRAIAdBA2pBfHEiBCAHRg0BIAQgB2shBEEAIQMDQCADIAdqLQAAQQpGDQkgBCADQQFqIgNHDQALIAQgCEEIayIDSw0DDAILIAIgBkYNA0EAIQMDQCADIAdqLQAAQQpGDQggA0EBaiIDIAhHDQALDAULIAhBCGshA0EAIQQLA0BBgIKECCAEIAdqIg8oAgAiE0GKlKjQAHNrIBNyQYCChAggD0EEaigCACIPQYqUqNAAc2sgD3JxQYCBgoR4cUGAgYKEeEcNASAEQQhqIgQgA00NAAsLIAQgCEcNAQsgAiEGIAsMBgsgBCAHaiEHIAIgBGsgBmshCEEAIQMDQCADIAdqLQAAQQpGDQIgCCADQQFqIgNHDQALCyACIQYgCwwECyADIARqIQMLIAMgBmoiA0EBaiEGAkAgAiADTQ0AIAEgA2otAABBCkcNAEEAIQ0gBiEEDAQLIAIgBk8NAAsLIAsLIQQgAiEDCwJAIAxBAXFFBEAgAEEBOgAMIBAEQCAFIBE2AgwgBSAUNwMQIAooAgAhCCAJKAIAIQwgBUEBNgIsIAVBiPDBADYCKCAFQQE2AiQgBUECNgIcIAVB4PjHADYCGCAFIAVBEGo2AiBBASAMIAggBUEYahDBAw0FGgwCCyAJKAIAQbyLwwBBBCAKKAIAKAIMEQAADQIMAQsgDkUNACAJKAIAQQogCigCACgCEBECAA0BIBAEQCAJKAIAQaDwwQBBByAKKAIAKAIMEQAADQIMAQsgCSgCAEG8i8MAQQQgCigCACgCDBEAAA0BCyAOQQFqIQ5BASEMIAkoAgAgASALaiADIAtrIAooAgAoAgwRAABFDQELCyASQQFzCyAFQTBqJABBAXEL4gYCBX8BfiMAQTBrIgIkACAAKAIAIQAgASgCACIDQeiyxQBBASABKAIEIgQoAgwiBREAACEGIAIgADYCDAJAAkACQAJAAkACQAJAIAYNAAJAIAEtAApBgAFxRQRAIAJBDGogARDEBCACIABBAWo2AgxFDQEMAwsgA0Hc+McAQQEgBREAAA0BIAJBAToAHyACIAQ2AhQgAiADNgIQIAJB4IHCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQxAQNASACKAIgQdmBwgBBAiACKAIkKAIMEQAAIAIgAEEBajYCDA0CCwJAIAEtAApBgAFxBEAgASkCACEHIAJBAToAHyACIAc3AhAgAkHggcIANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDEBA0DIAIoAiBB2YHCAEECIAIoAiQoAgwRAAAgAiAAQQJqNgIMRQ0BDAcLIAEoAgBB55DGAEECIAEoAgQoAgwRAAANAiACQQxqIAEQxAQgAiAAQQJqNgIMDQYLAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAfIAIgBzcCECACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEMQEDQcgAigCIEHZgcIAQQIgAigCJCgCDBEAACACIABBA2o2AgxFDQEMBgsgASgCAEHnkMYAQQIgASgCBCgCDBEAAA0GIAJBDGogARDEBCACIABBA2o2AgwNBQsgAS0ACkGAAXFFDQIgASgCACEDIAEoAgQhBEEBIQAgAkEBOgAfIAIgBDYCFCACIAM2AhAgAkHggcIANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDEBA0EIAIoAiBB2YHCAEECIAIoAiQoAgwRAABFDQMMBgsgAiAAQQFqNgIMCyACIABBAmo2AgwMAwsgASgCAEHnkMYAQQIgASgCBCgCDBEAAA0BQQEhACACQQxqIAEQxAQNAyABKAIEIQQgASgCACEDCyADQemyxQBBASAEKAIMEQAAIQAMAgtBASEADAELIAIgAEEDajYCDEEBIQALIAJBMGokACAAC4IGAQF/AkACQCABIAMgBWwgBGoiA0kNAAJAIAEgA2siBEEDTQ0AIAAgA2oiBEH/ASACKAIAIAQtAABqIgZBACAGQQBKGyIGIAZB/wFOGzoAACAEQf8BIAIoAgQgBC0AAWoiBkEAIAZBAEobIgYgBkH/AU4bOgABIARB/wEgAigCCCAELQACaiIGQQAgBkEAShsiBiAGQf8BThs6AAIgBEH/ASACKAIMIAQtAANqIgRBACAEQQBKGyIEIARB/wFOGzoAAyABIAMgBWoiA0kNASABIANrIgRBBEkNACAAIANqIgRB/wEgAigCECAELQAAaiIGQQAgBkEAShsiBiAGQf8BThs6AAAgBEH/ASACKAIUIAQtAAFqIgZBACAGQQBKGyIGIAZB/wFOGzoAASAEQf8BIAIoAhggBC0AAmoiBkEAIAZBAEobIgYgBkH/AU4bOgACIARB/wEgAigCHCAELQADaiIEQQAgBEEAShsiBCAEQf8BThs6AAMgASADIAVqIgNJDQEgASADayIEQQRJDQAgACADaiIEQf8BIAIoAiAgBC0AAGoiBkEAIAZBAEobIgYgBkH/AU4bOgAAIARB/wEgAigCJCAELQABaiIGQQAgBkEAShsiBiAGQf8BThs6AAEgBEH/ASACKAIoIAQtAAJqIgZBACAGQQBKGyIGIAZB/wFOGzoAAiAEQf8BIAIoAiwgBC0AA2oiBEEAIARBAEobIgQgBEH/AU4bOgADIAEgAyAFaiIDSQ0BIAEgA2siBEEETw0CC0EAQQQgBEGY4sQAEOoHAAsgAyABIAFBqOLEABDqBwALIAAgA2oiAEH/ASACKAIwIAAtAABqIgFBACABQQBKGyIBIAFB/wFOGzoAACAAQf8BIAIoAjQgAC0AAWoiAUEAIAFBAEobIgEgAUH/AU4bOgABIABB/wEgAigCOCAALQACaiIBQQAgAUEAShsiASABQf8BThs6AAIgAEH/ASACKAI8IAAtAANqIgBBACAAQQBKGyIAIABB/wFOGzoAAwuBBgIHfwJ8IwBBIGsiBiQAQQEhCSABIAEoAhQiB0EBaiIFNgIUAkAgBSABKAIQIghPDQACQAJAIAEoAgwgBWotAABBK2sOAwECAAILQQAhCQsgASAHQQJqIgU2AhQLAkAgAAJ/AkACQAJAAn8CQAJAIAUgCEkEQCABIAVBAWoiBzYCFCABKAIMIgogBWotAABBMGtB/wFxIgVBCk8NAQJAIAcgCE8NAANAIAcgCmotAABBMGtB/wFxIgtBCk8NASABIAdBAWoiBzYCFCAFQcyZs+YARyALQQdLciAFQcuZs+YASnENBiAFQQpsIAtqIQUgByAIRw0ACyAIIQcLIAkNAiAEIAVrIgFBH3VBgICAgHhzIAEgASAESCAFQQBKcxsMAwsgBkEYaiABKAIMIAggBRD5ASAGKAIcIQIgBigCGCEEQRQQcSIBRQ0EIAEgBDYCDCABQQU2AgAgACABNgIEIABBATYCACABIAI2AhAMBwsgBkEQaiAKIAggBxD5ASAGKAIUIQIgBigCECEEQRQQcSIBRQ0DIAEgBDYCDCABQQ02AgAgACABNgIEIABBATYCACABIAI2AhAMBgsgBCAFaiIBQR91QYCAgIB4cyABIAVBAEggASAESHMbCyEFIAO6IQwCQAJAAkAgBSAFQR91IgFzIAFrIgFBtQJPBEADQCAMRAAAAAAAAAAAYQ0HIAVBAE4NAiAMRKDI64XzzOF/oyEMIAVBtAJqIgUgBUEfdSIBcyABayIBQbUCTw0ACwsgAUEDdCsDoIJHIQ0gBUEATg0BIAwgDaMhDAwFCyAGQQhqIAogCCAHEPkBIAYoAgwhAiAGKAIIIQQMAQsgDCANoiIMmUQAAAAAAADwf2INAyAGIAogCCAHEPkBIAYoAgQhAiAGKAIAIQQLQRQQcSIBRQ0BIAEgBDYCDCABQQ42AgAgACABNgIEIAEgAjYCEEEBDAMLIAAgASACIANQIAkQ7AUMAwsACyAAIAwgDJogAhs5AwhBAAs2AgALIAZBIGokAAvbBgIFfwF+IwBBMGsiAiQAIAEoAgAiA0HossUAQQEgASgCBCIEKAIMIgURAAAhBiACIAA2AgwCQAJAAkACQAJAAkACQCAGDQACQCABLQAKQYABcUUEQCACQQxqIAEQxAQgAiAAQQFqNgIMRQ0BDAMLIANB3PjHAEEBIAURAAANASACQQE6AB8gAiAENgIUIAIgAzYCECACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEMQEDQEgAigCIEHZgcIAQQIgAigCJCgCDBEAACACIABBAWo2AgwNAgsCQCABLQAKQYABcQRAIAEpAgAhByACQQE6AB8gAiAHNwIQIAJB4IHCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQxAQNAyACKAIgQdmBwgBBAiACKAIkKAIMEQAAIAIgAEECajYCDEUNAQwHCyABKAIAQeeQxgBBAiABKAIEKAIMEQAADQIgAkEMaiABEMQEIAIgAEECajYCDA0GCwJAIAEtAApBgAFxBEAgASkCACEHIAJBAToAHyACIAc3AhAgAkHggcIANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDEBA0HIAIoAiBB2YHCAEECIAIoAiQoAgwRAAAgAiAAQQNqNgIMRQ0BDAYLIAEoAgBB55DGAEECIAEoAgQoAgwRAAANBiACQQxqIAEQxAQgAiAAQQNqNgIMDQULIAEtAApBgAFxRQ0CIAEoAgAhAyABKAIEIQRBASEAIAJBAToAHyACIAQ2AhQgAiADNgIQIAJB4IHCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQxAQNBCACKAIgQdmBwgBBAiACKAIkKAIMEQAARQ0DDAYLIAIgAEEBajYCDAsgAiAAQQJqNgIMDAMLIAEoAgBB55DGAEECIAEoAgQoAgwRAAANAUEBIQAgAkEMaiABEMQEDQMgASgCBCEEIAEoAgAhAwsgA0HpssUAQQEgBCgCDBEAACEADAILQQEhAAwBCyACIABBA2o2AgxBASEACyACQTBqJAAgAAuOBgIGfwV+QQQhAyABKAIIIgRBBGooAgAhBSABAn4gBEEIaigCACIGIAEpAwAiCiAGrSIJIAkgClYbp0YEQEGokMgAKQMAIg1CCIghCyANpyEDIAkgDUL/AYNCBFINARoLIApCAXwLIgw3AwAgA0H/AXFBBEcEQCAAQoGAgICQgICAgH83AgAgACADrUL/AYMgC0IIhoQ3AggPCyABAn4CQCAGIAwgCSAJIAxWG6ciA2tBBE8EQCADIAVqKAAAIQZBBCEDQgAhCwwBC0EAIQZBqJDIACkDACINQgiIIQsgDachAyAJIA1C/wGDQgRSDQEaCyAMQgR8CyIKNwMAIANB/wFxQQRHBEAgACADOgAIIABCgYCAgJCAgICAfzcCACAAIAunIgE7AAkgACALQhiIPgIMIABBC2ogAUEQdjoAAA8LAkACQAJAAkAgAkH//wNxIgdBBU8EQCAHQQVrIgIEQCACEHEiAwRAIANBBGstAABBA3FFIAJFckUEQCADQQAgAvwLAAsgBEEIaigCACIFrSEJIAVC/////w8gCiAKQv////8PWhunayIIQQAgBSAITxsgAk8EQCAEQQRqKAIAIAogCSAJIApWG6dqIQQgAkEBRw0EIAMgBC0AADoAAAwFC0GokMgAKQMAIgtCCIghDCALpyEEIAtC/wGDQgRSDQYMBQsACyAFIAogCSAJIApWG6dqIQRBASEDDAELIAD9DAEAAAAAAACAXAgSACAAAAD9CwIADwsgAkUNACADIAQgAvwKAAALQgAhDEEEIQQLIAogAq18IQkLIAEgCTcDAAJAAkACQCAEQf8BcUEERwRAIABCgYCAgJCAgICAfzcCACAAIAStQv8BgyAMQgiGhDcCCCACRQ0BIANBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0CIABBACABIAdBImpLGw0DIAMQogIPCyAAIAY2AgwgACACNgIIIAAgAzYCBCAAQQA2AgALDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALhwcBBn8jAEEwayICJAACQAJAAkACQAJAAkACQEEDIAAoAgAiA0GAgICAeHMgA0EAThtBAWsOBQECAwQFAAsgASgCAEGkrscAQREgASgCBCgCDBEAACEDDAULIAEoAgBBta7HAEENIAEoAgQoAgwRAAAhAwwEC0EBIQMgASgCACIEQdSuxwBBDyABKAIEIgcoAgwiBREAAA0DIABBBGohBgJAIAEtAApBgAFxRQRAIARBu7PFAEEBIAURAAANBSACIAY2AhwgASAAQQdqQcioxwAgAEEFakHYqMcAIABBBmpB6KjHACACQRxqQfioxwAQ7gVFDQEMBQsgBEHbgcIAQQIgBREAAA0EIAJBAToADyACIAc2AhQgAiAENgIQIAJB4IHCADYCICACIAEpAgg3AiQgAiACQQ9qNgIYIAIgAkEQajYCHCACIAY2AiwgAkEcaiAAQQdqQcioxwAgAEEFakHYqMcAIABBBmpB6KjHACACQSxqQfioxwAQ7gUNBCACKAIcQdmBwgBBAiACKAIgKAIMEQAADQQLIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwDC0EBIQMgASgCACIEQeOuxwBBByABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIARB24HCAEECIAURAAANAyACQQE6ACwgAiAGNgIUIAIgBDYCECACQeCBwgA2AiAgAiABKQIINwIkIAIgAkEsajYCGCACIAJBEGoiBDYCHCAAKAIEIAAoAgggAkEcahC1Ag0DIARB2YHCAEECEK8DDQMLIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwCCyABKAIAQequxwBBCiABKAIEKAIMEQAAIQMMAQsgAiAAQQhqNgIQIAEoAgBBhK/HAEEMIAEoAgQoAgwRAAAhAyACQQA6ACEgAiADOgAgIAIgATYCHCACQRxqQZCvxwBBCCAAQQRqQfSuxwAQjAVBmK/HAEEFIAJBEGpBxK7HABCMBSACLQAhIgEgAi0AICIEciEDIARBAXEgAUEBR3INACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQMMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEDCyACQTBqJAAgA0EBcQufBgIHfwF+IwBBMGsiBCQAAkACQAJAAkACQAJAAkACQAJAAkAgASgCFCICIAEoAhAiA0kEQCABKAIMIQcCfgJAA0AgAiAHai0AACIFQQlrIghBF0tBASAIdEGTgIAEcUVyDQEgASACQQFqIgI2AhQgAiADRw0ACyADIQJCAAwBC0KAAgsgBa1CEIaEQoCCuANRDQELAkAgBEEYaiABKAIMIgcgAyACIANJBH8gAUEMaiEIA0ACQCACIAdqLQAAQQlrIgVBGU0EQEEBIAV0QZOAgARxDQEgBUEZRg0ECyABIARBL2pBtOLAABDuASABEOsFIQIMDAsgASACQQFqIgI2AhQgAiADRw0ACyADBSACC0EBaiIBIAMgASADSRsQ+QEgBCgCHCEDIAQoAhghAUEUEHEiAkUNByACIAE2AgwgAkEFNgIAIAIgAzYCEAwJCyABQQA2AgggASACQQFqNgIUIARBIGogCCABEIICIAQoAiQhAiAEKAIgIgFBAkYNCCAEKAIoIQMCQCABQQFxBEAgA0EASA0DIANFDQEMBwsgA0EASA0DIAMNBgtBASEBDAcLIAEgAkEBaiIGNgIUAkAgAyAGTQ0AIAEgAkECaiIFNgIUIAYgB2otAABB9QBHDQMgBSAGIAMgAyAGSRsiBkYNACABIAJBA2oiCDYCFCAFIAdqLQAAQewARwRAIAghBQwECyAGIAhGDQAgASACQQRqIgU2AhQgByAIai0AAEHsAEcNAyAAQYCAgIB4NgIADAkLIARBCGogByADIAYQ+QEgBCgCDCEGIAQoAgghAUEUEHEiAkUNBSACQQU2AgAMAwtB2JrIABD/BwALQdiayAAQ/wcACyAEQRBqIAcgAyAFEPkBIAQoAhQhBiAEKAIQIQFBFBBxIgJFDQIgAkEJNgIACyACIAE2AgwgACACNgIEIABBgYCAgHg2AgAgAiAGNgIQDAQLIAMQcSIBDQELAAsgAwRAIAEgAiAD/AoAAAsgACADNgIIIAAgATYCBCAAIAM2AgAMAQsgAEGBgICAeDYCACAAIAI2AgQLIARBMGokAAvyBQIFfwJ9IAEqAgAQxgW8IgJB////A3EhAyACQYCAgIB4cSEFIAEqAgQCQCACQYCAgPwHcSIEQYCAgPwHRgRAIANBDXYgBUEQdnJBgARBACADG3JBgPgBciEFDAELIAVBEHYhBSAEQYCAgLgETQRAIARBgICAxANPBEAgAkEMdiACQf/fAHFBAEdxIARBDXYgA0ENdmpBgIABaiAFcmohBQwCCyAEQYCAgJgDSQ0BIANBgICABHIiAkH+ACAEQRd2IgNrdiEEIAJBHSADayIDdkEBcQR/IARBAyADdEEBayACcUEAR2oFIAQLIAVyIQUMAQsgBUGA+AFyIQULIAEqAgghCBDGBbwiAkH///8DcSEDIAJBgICAgHhxIQQCQCACQYCAgPwHcSIBQYCAgPwHRwRAIARBEHYhBCABQYCAgLgETQRAIAFBgICAxANPBEAgAkEMdiACQf/fAHFBAEdxIAFBDXYgA0ENdmpBgIABaiAEcmohBAwDCyABQYCAgJgDSQ0CIANBgICABHIiAkH+ACABQRd2IgNrdiEBIAJBHSADayIDdkEBcQR/IAFBAyADdEEBayACcUEAR2oFIAELIARyIQQMAgsgBEGA+AFyIQQMAQsgA0ENdiAEQRB2ckGABEEAIAMbckGA+AFyIQQLIAgQxgW8IgNB////A3EhBiADQYCAgIB4cSECAkAgA0GAgID8B3EiAUGAgID8B0cEQCACQRB2IQIgAUGAgIC4BE0EQCABQYCAgMQDTwRAIANBDHYgA0H/3wBxQQBHcSABQQ12IAZBDXZqQYCAAWogAnJqIQIMAwsgAUGAgICYA0kNAiAGQYCAgARyIgNB/gAgAUEXdiIGa3YhASADQR0gBmsiBnZBAXEEfyABQQMgBnRBAWsgA3FBAEdqBSABCyACciECDAILIAJBgPgBciECDAELIAZBDXYgAkEQdnJBgARBACAGG3JBgPgBciECCyAAIAI7ASAgACAEOwEeIAAgBTsBHAu7BwIFewd/IAJB//8DcSECIAFB//8DcSEKIAQgBEGgK3AiC2siDUGgK08EQCANIQwgAyEBA0D9DAAAAAAAAAAAAAAAAAAAAAAiBSAC/RwAIQYgBSAKQa0BbP0cACEHQQAhBANAIAEgBGoiAv0AAAAiCP2JAf0MIAAfAB4AHQAcABsAGgAZAP26ASAG/a4BIAj9igH9DBgAFwAWABUAFAATABIAEQD9ugH9rgEgAkEQav0AAAAiCf2JAf0MEAAPAA4ADQAMAAsACgAJAP26Af2uASAJ/YoB/QwIAAcABgAFAAQAAwACAAEA/boB/a4BIQYgBSAH/a4BIQcgCP19/X8gBf2uASAJ/X39f/2uASEFIARBIGoiBEGgK0cNAAsgBiAHQQX9qwH9rgEiBv0bASAG/RsAaiAG/RsCaiAG/RsDakHx/wNwIQIgAUGgK2ohASAF/RsAIApqIAX9GwFqIAX9GwJqIAX9GwNqQfH/A3AhCiAMQaArayIMQZ8rSw0ACwsgAyANaiEDIAtBIE8EQP0MAAAAAAAAAAAAAAAAAAAAACIFIAL9HAAhBkEAIAtB4D9xIgFrIQIgBSAKIAtBBXZs/RwAIQcgAyEEA0AgBP0AAAAiCP2JAf0MIAAfAB4AHQAcABsAGgAZAP26ASAG/a4BIAj9igH9DBgAFwAWABUAFAATABIAEQD9ugH9rgEgBEEQav0AAAAiCf2JAf0MEAAPAA4ADQAMAAsACgAJAP26Af2uASAJ/YoB/QwIAAcABgAFAAQAAwACAAEA/boB/a4BIQYgBEEgaiEEIAUgB/2uASEHIAj9ff1/IAX9rgEgCf19/X/9rgEhBSACQSBqIgINAAsgASADaiEDIAtBH3EhCyAF/RsAIApqIAX9GwFqIAX9GwJqIAX9GwNqIQogBiAHQQX9qwH9rgEiBv0bASAG/RsAaiAG/RsCaiAG/RsDaiECCwJAIAtFDQACQCALQQdxIgxFBEAgAyEEDAELIAMhAQNAIAogAS0AAGoiCiACaiECIAFBAWoiBCEBIAxBAWsiDA0ACwsgC0EISQ0AIAMgC2ohAQNAIAogBC0AAGoiAyAEQQFqLQAAaiIMIARBAmotAABqIg0gBEEDai0AAGoiCyAEQQRqLQAAaiIOIARBBWotAABqIg8gBEEGai0AAGoiECAEQQdqLQAAaiIKIBAgDyAOIAsgDSAMIAIgA2pqampqampqIQIgBEEIaiIEIAFHDQALCyAAIAJB8f8DcDsBAiAAIApB8f8DcDsBAAuzBwIFewh/IABB//8DcSEJIABBEHYhCCACIAJBoCtwIgprIgxBoCtPBEAgDCELIAEhAgNA/QwAAAAAAAAAAAAAAAAAAAAAIgMgCP0cACEEIAMgCUGtAWz9HAAhBUEAIQADQCAAIAJqIgj9AAAAIgb9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBP2uASAG/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIAhBEGr9AAAAIgf9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgB/2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEEIAMgBf2uASEFIAb9ff1/IAP9rgEgB/19/X/9rgEhAyAAQSBqIgBBoCtHDQALIAQgBUEF/asB/a4BIgT9GwEgBP0bAGogBP0bAmogBP0bA2pB8f8DcCEIIAJBoCtqIQIgA/0bACAJaiAD/RsBaiAD/RsCaiAD/RsDakHx/wNwIQkgC0GgK2siC0GfK0sNAAsLIAEgDGohASAKQSBPBED9DAAAAAAAAAAAAAAAAAAAAAAiAyAI/RwAIQRBACAKQeA/cSICayEIIAMgCSAKQQV2bP0cACEFIAEhAANAIAD9AAAAIgb9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBP2uASAG/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIABBEGr9AAAAIgf9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgB/2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEEIABBIGohACADIAX9rgEhBSAG/X39fyAD/a4BIAf9ff1//a4BIQMgCEEgaiIIDQALIAQgBUEF/asB/a4BIgT9GwEgBP0bAGogBP0bAmogBP0bA2ohCCAKQR9xIQogA/0bACAJaiAD/RsBaiAD/RsCaiAD/RsDaiEJIAEgAmohAQsCQCAKRQ0AAkAgCkEHcSILRQRAIAEhAAwBCyABIQIDQCAJIAItAABqIgkgCGohCCACQQFqIgAhAiALQQFrIgsNAAsLIApBCEkNACABIApqIQEDQCAJIAAtAABqIgIgAEEBai0AAGoiCyAAQQJqLQAAaiIMIABBA2otAABqIgogAEEEai0AAGoiDSAAQQVqLQAAaiIOIABBBmotAABqIg8gAEEHai0AAGoiCSAPIA4gDSAKIAwgCyACIAhqampqampqaiEIIABBCGoiACABRw0ACwsgCUHx/wNwIAhB8f8DcEEQdHILrAcCAn8BeyMAQYDSAGsiAyQAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4FAAIDBAUBC0GAgAgQcSIERQ0FIARBBGstAABBA3EEQCAEQQBBgIAI/AsACyADQUBrQQBBwNEA/AsAQajTABBxIgFFDQUgAUGAgICAeDYCZCABQgE3AlwgAUKAgAg3AlQgASAENgJQIAFCgICAgICAgAE3AkggAUKAgICAEDcCQCABIAL9AAIA/QsCACABQTBqIAJBMGr9AAIA/QsCACABQSBqIAJBIGr9AAIA/QsCACABQRBqIAJBEGr9AAIA/QsCACABQegAaiADQQxqQfTRAPwKAAAgAUHc0gBqQQBBwQD8CwAgAUEAOwGkUyABQQA2AqBTQajewQAhAgwGC0G4BRBxIgFFDQQgAUEANgKwBSABQoCAgIAQNwOoBSABQYGAgIB4NgKcBSABIAL9AAIA/QsCACABQTBqIAJBMGr9AAIA/QsCACABQSBqIAJBIGr9AAIA/QsCACABQRBqIAJBEGr9AAIA/QsCAEGQ3sEAIQIMBQtBzAAQcSIBRQ0DIAFBADYCSCABQoCAgIAQNwJAIAEgAv0AAgD9CwIAIAFBMGogAkEwav0AAgD9CwIAIAFBIGogAkEgav0AAgD9CwIAIAFBEGogAkEQav0AAgD9CwIAQcDewQAhAgwEC0HMABBxIgFFDQIgAUEANgJIIAFCgICAgBA3AkAgASAC/QACAP0LAgAgAUEwaiACQTBq/QACAP0LAgAgAUEgaiACQSBq/QACAP0LAgAgAUEQaiACQRBq/QACAP0LAgBB2N7BACECDAMLQcwAEHEiAUUNASABQQA2AkggAUKAgICAEDcCQCABIAL9AAIA/QsCACABQTBqIAJBMGr9AAIA/QsCACABQSBqIAJBIGr9AAIA/QsCACABQRBqIAJBEGr9AAIA/QsCAEHw3sEAIQIMAgtBgAMQcSIBRQ0AIAFBAjYCiAEgAUECNgIAIAH9DAAAAAAAAAAAAAAAAAAAAAD9CwO4AiABIAX9CwPgAiABIAL9AAIA/QsC+AEgAUHIAmogBf0LAwAgAUHYAmpCgICAgBA3AwAgAUH1AmpCADcAACABQfACakIANwMAIAFBiAJqIAJBEGr9AAIA/QsCACABQZgCaiACQSBq/QACAP0LAgAgAUGoAmogAkEwav0AAgD9CwIAQYjfwQAhAgwBCwALIAAgAjYCBCAAIAE2AgAgA0GA0gBqJAALkgYBBn8CQAJAAkACQAJAAkAgAEEgSQ0AIABB/wBJBEBBASEDDAYLAkAgAEGAgARPBEAgAEGAgAhJDQEgAEHg//8AcUHgzQpHIABB/v//AHFBnvAKR3EgAEHwgzhJcSAA/RH9DMBI/f9QMf3/EBT9/wAI/f/9rgH9DPn////x////8P///132///9PP1TQX9zcSAAQYCADGtBnnRJcSAAQdCmDGtBe0lxIABBgII4a0GwxVRJcSEDDAcLIABBCHZB/wFxIQUDQCABQQJqIQYgAiABLQC7gUMiA2ohBCAFIAEtALqBQyIBRwRAIAEgBUsNByAEIQIgBiIBQdAARw0BDAcLIAIgBEsgBEGiAktyDQUgAkGKgsMAaiEBA0AgA0UEQCAEIQIgBiIBQdAARw0CDAgLIANBAWshAyABLQAAIAFBAWohASAAQf8BcUcNAAsLDAELIABBCHZB/wFxIQUDQCABQQJqIQYgAiABLQCt+0IiA2ohBCAFIAEtAKz7QiIBRwRAIAEgBUsNBCAEIQIgBiIBQdgARw0BDAQLIAIgBEsgBEHQAUtyDQIgAkGE/MIAaiEBA0AgA0UEQCAEIQIgBiIBQdgARw0CDAULIANBAWshAyABLQAAIAFBAWohASAAQf8BcUcNAAsLC0EAIQMMBAsgAiAEQdABQeiGwwAQ6gcACyAAQf//A3EhAkEBIQNBACEBA0AgAUEBaiEEAkAgASwA1P1CIgBBAE4EQCAEIQEMAQsgBEHmA0cEQCABQdX9wgBqLQAAIABB/wBxQQh0ciEAIAFBAmohAQwBC0HYhsMAEN0JAAsgAiAAayICQQBIDQMgA0EBcyEDIAFB5gNHDQALDAILIAIgBEGiAkHohsMAEOoHAAtBASEDQQAhAQNAIAFBAWohBAJAIAEsAKyEQyICQQBOBEAgBCEBDAELIARBqQJHBEAgAUGthMMAai0AACACQf8AcUEIdHIhAiABQQJqIQEMAQtB2IbDABDdCQALIAAgAmsiAEEASA0BIANBAXMhAyABQakCRw0ACwsgA0EBcQvCBgILfwR7IwBBIGsiCSQAAkACQAJAAkACQCADIAQgBWwiCmoiC0EBayIGIAFNBEAgBEEBayAFbCADaiIEQQFrIgcgBk8NASAEIAZLDQIgASAGayEMIAQgBkYEQCABIAprIANrIQRBACEAIAIhAwNAIAAgDE8NBSACIARLDQYgBCAFayEEIAAgBWohACADQQFrIgMNAAsMBgsgACAGaiEOIAAgB2otAAAhDyAAIARqIQ0gBiAEayIBIAIgASACSRsiBkEBcSEQIAZBEHEhAyAAIAtqIQtBACEHA0AgBSAHbCIAIAxPDQQgAiAMIABBAWoiAWsiBEsNBSAAIA5qLQAAIA9rIQogASAOaiEEQQAhAQJAIAZBEEkgB0EBaiIHIAVsQRBJckUEQCAEIAr9ESIRIA39AAAAIhL9iQH9qQH9rgH9DAAAAAAAAAAAAAAAAAAAAAD9uAH9DP8AAAD/AAAA/wAAAP8AAAAiFP22ASARIBIgEf0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pAf2uASAT/bgBIBT9tgH9hgEgESASIBH9DQgJCgsAAAAAAAAAAAAAAAD9iQH9qQH9rgEgE/24ASAU/bYBIBEgEiAR/Q0MDQ4PAAAAAAAAAAAAAAAA/YkB/akB/a4BIBP9uAEgFP22Af2GAf1m/QsAACAGIAMiAUYNAQsgAUEBciEAIBAEQCABIARqQf8BIAogASANai0AAGoiAUEAIAFBAEobIgEgAUH/AU4bOgAAIAAhAQsgACAGRg0AIAEgC2ohACABIA1qIQQgBiABayEBA0AgAEH/ASAKIAQtAABqIghBACAIQQBKGyIIIAhB/wFOGzoAACAAQQFqQf8BIAogBEEBai0AAGoiCEEAIAhBAEobIgggCEH/AU4bOgAAIABBAmohACAEQQJqIQQgAUECayIBDQALCyAFIAtqIQsgAiAHRw0ACwwFCyAJQQA2AhggCUEBNgIMIAlBiILIADYCCCAJQgQ3AhAgCUEIakHo4sQAEI0IAAsgByAGQfjixAAQjAcACyAEIAYgBkGo48QAEOoHAAsgACAMQYjjxAAQjAcAC0EAIAIgBEGY48QAEOoHAAsgCUEgaiQAC78GAQR/IAAgAWohAgJAAkAgACgCBCIDQQFxDQAgA0ECcUUNASAAKAIAIgMgAWohASAAIANrIgBB2LrJACgCAEYEQCACKAIEQQNxQQNHDQFB0LrJACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADAILIAAgAxDWBAsCQAJAAkAgAigCBCIDQQJxRQRAIAJB3LrJACgCAEYNAiACQdi6yQAoAgBGDQMgAiADQXhxIgMQ1gQgACABIANqIgFBAXI2AgQgACABaiABNgIAIABB2LrJACgCAEcNAUHQuskAIAE2AgAPCyACIANBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsgAUGAAk8EQEEfIQIgAEIANwIQIAFB////B00EQCABQSYgAUEIdmciA2t2QQFxIANBAXRrQT5qIQILIAAgAjYCHCACQQJ0QbC3yQBqIQRBASACdCIDQcy6yQAoAgBxRQRAIAQgADYCACAAIAQ2AhggACAANgIMIAAgADYCCEHMuskAQcy6yQAoAgAgA3I2AgAPCwJAAkAgASAEKAIAIgMoAgRBeHFGBEAgAyECDAELIAFBGSACQQF2a0EAIAJBH0cbdCEFA0AgAyAFQR12QQRxaiIEKAIQIgJFDQIgBUEBdCEFIAIhAyACKAIEQXhxIAFHDQALCyACKAIIIgEgADYCDCACIAA2AgggAEEANgIYIAAgAjYCDCAAIAE2AggPCyAEQRBqIAA2AgAgACADNgIYIAAgADYCDCAAIAA2AggPCwJ/Qci6yQAoAgAiAkEBIAFBA3Z0IgNxRQRAQci6yQAgAiADcjYCACABQfgBcUHAuMkAaiIBDAELIAFB+AFxIgNBwLjJAGohASADQci4yQBqKAIACyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQdy6yQAgADYCAEHUuskAQdS6yQAoAgAgAWoiATYCACAAIAFBAXI2AgQgAEHYuskAKAIARw0BQdC6yQBBADYCAEHYuskAQQA2AgAPC0HYuskAIAA2AgBB0LrJAEHQuskAKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsL3HkDH38IfgJ7IwBBEGsiFSQAAkAgASkDGEICUgRAIAFBGGohIiABQcgAaiERIAEoAgwhCSABKAIIIQsDQCABKAIAIQcCQCAJIAtLDQAgASgCBCIIIAEoAhAiBmsiBQRAIAYgB2pBACAF/AsACyAVICIgByAIEKYDIBUtAABBBEYEQCAIIBUoAgQiCU8EQCABIAg2AhAgASAJNgIMQQAhCyABQQA2AggMAgtBtJvHAEE2QeybxwAQ6wcACyAVKAIEIQYgFSgCACEFIBUxAAAgASAINgIQIAFCADcDCEEAIQlBACELQgRRDQAgACAGNgIEIAAgBTYCAAwDCyABKQNQISkgASkDSCEqQQRBACAJIAtGIiAbISEjAEEwayIMJAAgESADNgIwIBEgCSALayIGNgIkIBEgAjYCLCARIAcgC2oiHzYCICARKAI8IgQtAAAiBUEMRgRAIARBDToAAEENIQULIBEpAxghJyARKQMQISggBCADNgJ0IAQgBjYCcCAEQQA2AlAgBCADNgJMIAQgAjYCSCAEIB82AjggBCAhOgAEIAQgBiAfajYCPCAEQcEAaiEUIARBCGohGSAEQYTsAGohDiAEQYTnAGohGiAEQaQBaiEdIARB9CpqIRsgBEHE1ABqIRcgBEHIAGohEwJAAkACQAJAA0AgBSEGQRIhBUEBIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQf8BcUEBaw4eHBsaDQwLCgkCARkYCBcdBx8WFRQGBRMSHgARECEPDgsgBCgCJCIJIAQoAiAiECAEKAIcIg1qIgtPDQMgBCgCOCEGIAQtAEAhBSAEKQMwISMDQEJ/IAQ1ApQBhkJ/hSElIAQoAjwhEiAELQCYASEIAkACQAJAAkACQAJAAkACQAJAAkACQANAICMgJYOnIQ9BgAQhCkGo58gAIQcCQAJAAkACQCAIQQFrDgMAAQIDC0G0CiEKIB0hBwwCC0G0CiEKIBshBwwBC0HQBCEKIBchBwsgCiAPTQ0BIAcgD0ECdGooAQAiCkEYdiIPIAVB/wFxSwRAIAYgEkYNECAGMQAAISQgBCAFQQhqIgc6AEAgBCAGQQFqIgY2AjggBCAkIAWthiAjhCIjNwMwIAchBQwBCwsgCkH//wNxIgdBEE8EQCAFQf8BcSEIAkACQAJAAkAgB0EQaw4CAQIACwJAIAggD0EHaiIKTwRAIAUhBwwBCyAGIQgDQCAIIBJGDRQgBCAIQQFqIgY2AjggBCAFQQhqIgc6AEAgBCAIMQAAIAWthiAjhCIjNwMwIAYhCCAKIAciBUH/AXFLDQALCyAEIAcgD2tBB2siBToAQCAEICMgD62IIiRCB4giIzcDMCALICSnQf8AcUELaiILIAlqIgdJDQogCUHAAksNCyALQcACIAlrIghLDQwgC0EBdCIIBEAgGiAJQQF0akEAIAj8CwALIAQgBzYCJCAHIQkMDgsCQCAIIA9BAmoiCk8EQCAFIQcMAQsgBiEIA0AgCCASRg0TIAQgCEEBaiIGNgI4IAQgBUEIaiIHOgBAIAQgCDEAACAFrYYgI4QiIzcDMCAGIQggCiAHIgVB/wFxSw0ACwsgBCAHIA9rIgU6AEAgBCAjIA+tiCIkNwMwIAkNASAEQRo2AogBIARB5IDAADYChAEMLgsCQCAIIA9BA2oiCk8EQCAFIQcMAQsgBiEIA0AgCCASRg0SIAQgCEEBaiIGNgI4IAQgBUEIaiIHOgBAIAQgCDEAACAFrYYgI4QiIzcDMCAGIQggCiAHIgVB/wFxSw0ACwtBfSEIIAQgByAPa0EDayIFOgBAIAQgIyAPrYgiJEIDiCIjNwMwIAsgJKdBB3FBA2oiCiAJaiIHSQ0FIAlBwAJLDQYgCkHAAiAJayIISw0HIApBAXQiCARAIBogCUEBdGpBACAI/AsACyAEIAc2AiQgByEJDAwLIAlBAWshByAJQcACSw0CIBogB0EBdGovAQAhDSAEIAVBAmsiBToAQCAEICRCAogiIzcDMCALICSnQQNxIghBA2oiCiAJakkEQCAEQRo2AogBIARB5IDAADYChAEMLQsgCkHAAiAJayIHSw0DIBogCUEBdGohByAIQQJq/REiK/0MAAAAAAEAAAACAAAAAwAAAP1AIiz9GwBBAXEEQCAHIA07AQALICz9GwFBAXEEQCAHQQJqIA07AQALICz9GwJBAXEEQCAHQQRqIA07AQALICz9GwNBAXEEQCAHQQZqIA07AQALICv9DAQAAAAFAAAABgAAAAcAAAD9QCIr/RsAQQFxBEAgB0EIaiANOwEACyAr/RsBQQFxBEAgB0EKaiANOwEACyAr/RsCQQFxBEAgB0EMaiANOwEACyAr/RsDQQFxBEAgB0EOaiANOwEACyAEIAQoAiQgCmoiCTYCJCAEKAIgIRAgBCgCHCENDAsLIAQgBSAPayIFOgBAIAQgIyAPrYgiIzcDMCAJQcACSQ0JIAlBwAJB1PzIABCMBwALIA8gCkHc+cgAEIwHAAsgB0HAAkH0+8gAEIwHAAtBACAKIAdBhPzIABDqBwALIARBGjYCiAEgBEHkgMAANgKEAUEeIQYMKAsgCUHAAkHAAkGk/MgAEOoHAAtBACAKIAhBlPzIABDqBwALIARBGjYCiAEgBEHkgMAANgKEAQwkCyAJQcACQcACQcT8yAAQ6gcAC0EAIAsgCEG0/MgAEOoHAAsgBCAJQQFqIgc2AiQgGiAJQQF0aiAKOwEAIAchCQsgCSANIBBqIgtJDQALDAMLQXwhCAwfC0F+IQgMHgtBACEIQRohBgwdCyAELwGEa0UEQCAEQSU2AogBIARB7c7AADYChAEMHAsCQAJAAkAgDUHBAkkEQCAMQRhqIgZBASAaIA0gG0G0CkEKIA4QrQEgDCgCGA0BIAwoAiAhBSAEIAwoAhw2ApQBIARBAjoAmAEgBCAFNgIoIAQoAhwiCEHAAksNAiAEKAIgIgdBwAIgCGsiBUsNAyAGQQIgGiAIQQF0aiAHIBdB0ARBCSAOEK0BIAwoAhhFBEAgDCgCICEGIAwoAhwhBSAEQQM6AKABIAQgBTYCnAEgBCAGIAQoAihqNgIoQREhBSAELQAEQQZHDR9BACEIQREhBgwhCyAEQRY2AogBIARBzoDAADYChAEMHwtBACANQcACQeT7yAAQ6gcACyAEQRw2AogBIARBgIDAADYChAEMHQsgCEHAAkHAAkHU+8gAEOoHAAtBACAHIAVBxPvIABDqBwALQRchBSAEKAJgIglFDRkgBCkDMCEjAkAgBC0AQCIIIAlPBEAgCCEKDAELIAQoAjghBiAEKAI8IQsDQCAGIAtGBEBBACEIQRYhBgweCyAEIAZBAWoiBzYCOCAEIAhBCGoiCjoAQCAEIAYxAAAgCK2GICOEIiM3AzAgByEGIAkgCiIIQf8BcUsNAAsLIAQgCiAJazoAQCAEICMgCa2INwMwIAQgBCgCZCAJajYCZCAEIAQoAlwgI0J/IAlBP3GthkJ/hYOnajYCXAwZC0J/IAQ1ApwBhkJ/hSElIAQoAjghBiAELQBAIQUgBCgCPCEPIAQpAzAhIyAELQCgASEQAkACQAJAAkADQCAjICWDpyEIQSAhCkGo98gAIQcCQAJAAkACQCAQQQFrDgMAAQIDC0G0CiEKIB0hBwwCC0G0CiEKIBshBwwBC0HQBCEKIBchBwsgCCAKTw0CAkACQCAHIAhBAnRqKAEAIghBGHYiCyAFQf8BcUsEQCAGIA9HDQEMBwsgCEEQdiIJQf8BcUEPTQ0BIAshBwwDCyAGMQAAISQgBCAFQQhqIgc6AEAgBCAGQQFqIgY2AjggBCAkIAWthiAjhCIjNwMwIAchBQwBCwsgC0EfcSENIAhB//8DcSEKQn8gCSALakE/ca2GQn+FISUDQCAjICWDpyANdiAKaiEIQSAhB0Go98gAIQkCQAJAAkACQCAQQQFrDgMAAQIDC0G0CiEHIB0hCQwCC0G0CiEHIBshCQwBC0HQBCEHIBchCQsgByAITQ0DIAkgCEECdGooAQAiCEEYdiIHIAtqQf8BcSAFQf8BcUsEQCAGIA9GDQUgBjEAACEkIAQgBUEIaiIHOgBAIAQgBkEBaiIGNgI4IAQgJCAFrYYgI4QiIzcDMCAHIQUMAQsLIAQgBCgCZCALajYCZCAFIAtrIQUgCEEQdiEJICMgC62IISMLIAQgBSAHazoAQCAEICMgB62INwMwIAlBwABxRQRAIAQgCUEPcTYCYCAEIAhB//8DcTYCXEEWIQUMHAsgBEEWNgKIASAEQefQwAA2AoQBDBwLIAggCkHs+cgAEIwHAAsgCCAHQez5yAAQjAcAC0EAIQhBFSEGDBoLQQshBSAELQADIgtFDRcCQCAELQBAIgpBH0sNAEEAIQhBECEGIAQoAjgiDSAEKAI8IglGDRogBCANQQFqIgc2AjggBCAKrSImQgh8IiM8AEAgBCAEKQMwIA0xAAAgJoaEIiQ3AzAgCkEXSw0AIAcgCUYNGiAEIA1BAmoiBzYCOCAEICZCEHwiJTwAQCAEIA0xAAEgI4YgJIQiJDcDMCAKQQ9LDQAgByAJRg0aIAQgDUEDaiIHNgI4IAQgJkIYfCIjPABAIAQgDTEAAiAlhiAkhCIkNwMwIApBB0sNACAHIAlGDRogBCANQQRqNgI4IAQgCkEgcjoAQCAEIA0xAAMgI4YgJIQ3AzALIAQgBCgCUCIHIAQoAlRqNgJUIAQoAnghBgJ/AkACQCALQQRxBEAgBkUEQCAEIAQoAnwgBCgCSCAHEN8CNgJ8IAQpAzAhIwwCCyAEIAQoAoABIAQoAkggBxCpASIGNgJ8IAQgBjYCgAEgBCgCeCEGCyAEKQMwISMgBg0BCyAjpyIGQRh0IAZBgP4DcUEIdHIgBkEIdkGA/gNxIAZBGHZycgwBCyAjpwshBiAEIAQoAkwgBCgCUGs2AnQCQCAELQADQQRxBEAgBiAEKAJ8Rw0BCyAEQQA6AEAgBEIANwMwDBgLIARBFTYCiAEgBEHAz8AANgKEAQwYCyAELQABIgZBAXEEQCAEIAQtAEAiBUH4AXE6AEAgBCAEKQMwIAVBB3GtiDcDMEEQIQUMFwsgBCkDMCEjIAQtAEAiBUECTQRAIAQoAjgiByAEKAI8RgRAQQAhCEENIQYMGgsgBCAHQQFqNgI4IAcxAAAgBa2GICOEISMgBUEIciEFCyAEIAVBAWs6AEAgBCAjQgGIIiQ3AzAgBCAjp0EBcSAGcjoAAQJAAkACQAJAICSnQQNxQQFrDgMBAgMACyAEIAVBA2s6AEAgBCAjQgOINwMwQQ4hBQwZC0EAIQggBEEAOgCgASAEQQU2ApwBIARBADoAmAEgBEEJNgKUASAEIAVBA2s6AEAgBCAjQgOINwMwQREhBUERIQYgBC0ABEEGRw0YDBoLIAQgBUEDazoAQCAEICNCA4g3AzBBGCEFDBcLIARBEzYCiAEgBEG40MAANgKEAUF9IQggBCAFQQNrOgBAIAQgI0IDiDcDMEEeIQYMGAsCQCAEKAJ4IgpBgARxBEACQCAELQBAIgtBD0sNAEEAIQhBCCEGIAQoAjgiCSAEKAI8IgdGDRogBCAJQQFqIgU2AjggBCALrSIkQgh8IiM8AEAgBCAEKQMwIAkxAAAgJIaEIiQ3AzAgC0EHSw0AIAUgB0YNGiAEIAlBAmo2AjggBCALQRByOgBAIAQgCTEAASAjhiAkhDcDMAsgBC0AA0EEcQRAIAQvAXwgBCgCMEcNAgsgBEEAOgBAIARCADcDMAsgBCgCjAEiBQRAIAUgCkEJdkEBcTYCLCAEKAKMAUEBNgIwIAQoAnghCgtBDCEFIAQtAANBBHFFIApFcg0WIARCADcCfAwWCyAEQRQ2AogBIARB88/AADYChAEMFgsCQCAEKAJ4Ig9BgCBxBEBBByEGIAQoAnANAUEAIQgMGAtBCCEFIAQoAowBIgZFDRUgBkEANgIkDBULAkAgBCgCPCIIIAQoAjgiCUYEQEEAIQcMAQsgCCAJayEHQQAhBQNAIAUgCWotAAAEQCAJIAVBAWoiBWogCEcNAQwCCwsgBUEBaiEHCwJAIAQoAowBIgVFDQAgBSgCJCIIRQ0AIAUoAigiBSAEKAJYIgtPBEAgBSALayIFIAcgBSAHSRsiBQRAIAggC2ogCSAF/AoAAAsgBCAEKAJYIAVqNgJYIAQoAnghDwwBC0GA+8gAQRJBlPvIABCrBwALAkAgD0GABHFFDQAgBC0AA0EEcUUNACAEIAQoAnwgCSAHEKkBNgJ8C0EBIQoCQCAHRQ0AIAcgCWpBAWsiBUUNACAFLQAAQQBHIQoLIAQgBCgCPCIIIAQoAjggB2oiBSAFIAhLGyIHNgI4QQghBSAKRSAHIAhHcg0UQQAhCAwWCwJAAkAgBCgCeCIPQYAQcQRAQQYhBiAEKAJwDQFBACEIDBgLIAQoAowBIgVFDQEgBUEANgIcDAELAkAgBCgCPCIIIAQoAjgiCUYEQEEAIQcMAQsgCCAJayEHQQAhBQNAIAUgCWotAAAEQCAJIAVBAWoiBWogCEcNAQwCCwsgBUEBaiEHCwJAIAQoAowBIgVFDQAgBSgCHCIIRQ0AIAUoAiAiBSAEKAJYIgtPBEAgBSALayIFIAcgBSAHSRsiBQRAIAggC2ogCSAF/AoAAAsgBCAEKAJYIAVqNgJYIAQoAnghDwwBC0Hc+sgAQRJB8PrIABCrBwALAkAgD0GABHFFDQAgBC0AA0EEcUUNACAEIAQoAnwgCSAHEKkBNgJ8C0EBIQoCQCAHRQ0AIAcgCWpBAWsiBUUNACAFLQAAQQBHIQoLIAQgBCgCPCIIIAQoAjggB2oiBSAFIAhLGyIFNgI4IApFIAUgCEdyDQBBACEIDBYLIARBADYCWEEHIQUMEwsCQCAEKAJ4IghBgAhxRQ0AIAQoAjwgBCgCOCIHayIGIAQoAlgiBSAFIAZLGyIKBEACQCAEKAKMASIJRQ0AIAkoAhAiBkUNACAKIAkoAhgiCyAJKAIUIAVrIghrIgVBACAFIAtNGyIFIAUgCksbIgUEQCAGIAsgCCAIIAtLG2ogByAF/AoAAAsgBCgCeCEICwJAIAhBgARxRQ0AIAQtAANBBHFFDQAgBCgCPCAEKAI4IgZrIgUgCk8EQCAEIAQoAnwgBiAKEKkBNgJ8DAELQQAgCiAFQcz6yAAQ6gcACyAEIAQoAnAgCms2AnAgBCAEKAJYIAprIgU2AlggBCAEKAI8IgcgBCgCOCAKaiIGIAYgB0sbNgI4CyAFRQ0AQQAhCEEFIQYMFQsgBEEANgJYQQYhBQwSCwJAAkAgBCgCeCILQYAIcQRAIAQpAzAhIwJAIAQtAEAiCUEPSw0AQQAhCEEEIQYgBCgCOCIKIAQoAjwiB0YNFyAEIApBAWoiBTYCOCAEIAmtIiVCCHwiJDwAQCAEIAoxAAAgJYYgI4QiIzcDMCAJQQdLDQAgBSAHRg0XIAQgCkECajYCOCAEIAlBEHI6AEAgBCAKMQABICSGICOEIiM3AzALIAQgI6ciBjYCWCAEKAKMASIFBH8gBSAGNgIUIAQoAngFIAsLQYAEcUUNAiAELQADQQRxDQEMAgtBBSEFIAQoAowBIgZFDRMgBkEANgIQDBMLIAwgBCkDMD0BGCAEIAQoAnwgDEEYakECEKkBNgJ8CyAEQQA6AEAgBEIANwMwQQUhBQwRC0ENIQUgBC0AAyIHRQ0QIAQpAzAhIwJAAkAgBC0AQCIIQQ9LDQAgBCgCOCILIAQoAjwiBkYNASAEIAtBAWoiBTYCOCAEIAitIiVCCHwiJDwAQCAEIAsxAAAgJYYgI4QiIzcDMCAIQQdLDQAgBSAGRg0BIAQgC0ECajYCOCAEIAhBEHI6AEAgBCALMQABICSGICOEIiM3AzALAkAgB0ECcUEAICNCn5YCURtFBEAgBCgCjAEiBQR/IAVBfzYCMCAELQADBSAHC0EBcQRAIAQpAzAiI0IIhkKA/gODICNCCIh8Qh+CUA0CCyAEQRc2AogBIARBks/AADYChAEMFAsgBC0AAkUEQCAEQQ86AAILIAxBn5YCOwAYIARBACAMQRhqQQIQqQE2AnwgBEEAOgBAIARCADcDMEEBIQUMEgsgI0IPg0IIUQRAIAQgI0IEiCIkNwMwIAQgBC0AQEEEazoAQCAkp0EPcSIGQQhqIQcgBC0AAiIFBH8gBQUgBCAHOgACIAcLIAdJIAZBB0tyRQRAIARCgICAgBA3A3ggBEEAOgBAIARCADcDMCAEQQEgB3Q2ApABQQxBGyAjQoDAAINQGyEFDBMLIARBFDYCiAEgBEGH0MAANgKEAQwTCyAEQRs2AogBIARB/dDAADYChAEMEgtBACEGQQAhCAwSCyAEQR02AogBIARBm9DAADYChAEMEAtBAiEIIAQtAAFBAnFFBEBBHCEGDBELIARBATYCfEEMIQUMDgsgBCkDMCEjAkAgBC0AQCILQR9LDQBBACEIQRshBiAEKAI4IgkgBCgCPCIHRg0QIAQgCUEBaiIFNgI4IAQgC60iJkIIfCIkPABAIAQgCTEAACAmhiAjhCIjNwMwIAtBF0sNACAFIAdGDRAgBCAJQQJqIgU2AjggBCAmQhB8IiU8AEAgBCAJMQABICSGICOEIiM3AzAgC0EPSw0AIAUgB0YNECAEIAlBA2oiBTYCOCAEICZCGHwiJDwAQCAEIAkxAAIgJYYgI4QiIzcDMCALQQdLDQAgBSAHRg0QIAQgCUEEajYCOCAEIAtBIHI6AEAgBCAJMQADICSGICOEIiM3AzALIARBADoAQCAEQgA3AzAgBCAjpyIFQRh0IAVBgP4DcUEIdHIgBUEIdkGA/gNxIAVBGHZycjYCfEEcIQUMDQsgBCkDMCEjAkAgBC0AQCIFQQ1LDQBBACEIQRghBiAEKAI4IgkgBCgCPCILRg0PIAQgCUEBaiIHNgI4IAQgBa0iJEIIfCIlPABAIAQgCTEAACAkhiAjhCIjNwMwIAVBBUsEQCAlpyEFDAELIAcgC0YNDyAEIAlBAmo2AjggBCAFQRByIgU6AEAgBCAJMQABICWGICOEIiM3AzALIAQgBUEOazoAQCAEICNCDog3AzAgBCAjpyIHQR9xIgZBgQJqNgIcIAQgB0EFdkEfcSIFQQFqNgIgIAQgB0EKdkEPcUEEajYCGCAGQR1LIAVBHUtyRQRAIARBADYCJEEZIQUMDQsgBEEkNgKIASAEQazOwAA2AoQBDA0LA0AgBCgCTCIGIAQoAlAiB0YEQEEAIQhBFyEGDA8LIAYgB2shCgJAIAcgBCgCXCIGTwRAIBMgBiAKIAQoAlgiBiAGIApLGyIGEOwCDAELIAYgB2siCSAEKAIQTQRAIAQoAgwiBkFAaiIHQUFPDREgEyAZIAdBACAGIAdPGyAJIAQoAhQiBmsiC2sgBiAJayAGIAlJIgYbIgggCCAKIAQoAlgiByALIAkgBhsiBiAGIAdLGyIGIAYgCksbIgZqEJQFDAELIAQtAAFBBHEEQEEeIQYgBEEeNgKIASAEQdXPwAA2AoQBQX0hCAwQCyAMQQA2AiggDEEBNgIcIAxBxPnIADYCGCAMQgQ3AiAgDEEYakGk+8gAEI0IAAsgBCAEKAJYIgcgBms2AlggBiAHRw0ACwwLCwJAIAQoAmAiCUUEQCAEKAJYIQUMAQsgBCkDMCEjAkAgBC0AQCIGIAlPBEAgBiEIDAELIAQoAjghBSAEKAI8IQsDQCAFIAtGBEBBACEIQRQhBgwQCyAEIAVBAWoiBzYCOCAEIAZBCGoiCDoAQCAEIAUxAAAgBq2GICOEIiM3AzAgByEFIAkgCCIGQf8BcUsNAAsLIAQgCCAJazoAQCAEICMgCa2INwMwIAQgBCgCZCAJajYCZCAEIAQoAlggI0J/IAlBP3GthkJ/hYOnaiIFNgJYCyAEIAU2AmhBFSEFDAoLIAQoAlAiByAEKAJMIgZGBEBBACEIQRMhBgwMCyAGIAdLBEAgBCgCWCEGIAQgB0EBajYCUCAEKAJIIAdqIAY6AAAMCgsgByAGQbz/yAAQjAcACyAEQRI6AAACQCAEKAI8IgggBCgCOCILa0EPSQ0AIAQoAkwgBCgCUGtBgwJNDQAgBBCrASAELQAAIgVBEkcNCSAEKAI8IQggBCgCOCELCyAMQQhqIBNBCGooAgA2AgAgBEEANgJQIBMpAgAhJCAEQgE3A0ggDCAkNwMAIAwgFCgAADYCECAMIBRBA2ooAAA2ABNBqOfIACEJQYAEIR4CQAJAAkACQCAELQCYAUEBaw4DAAECAwtBtAohHiAdIQkMAgtBtAohHiAbIQkMAQtB0AQhHiAXIQkLQaj3yAAhD0EgIQcCQAJAAkACQCAELQCgAUEBaw4DAAECAwtBtAohByAdIQ8MAgtBtAohByAbIQ8MAQtB0AQhByAXIQ8LIAQtAEAhECAEKQMwISMCQAJAA0BBEiEKA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAKQf8BcUETaw4FBAEIAgsACyAIIAtrQQ9PBEAgDCgCBCAMKAIIa0GDAksNDAsgBEEANgJkIAshBiAQIQUgHiAjQn8gBDUClAGGQn+FIiaDpyIKSw0CDBgLIAQoAmAiCkUEQCAEKAJYIQUMBgsgCyEFIAogECIGQf8BcUsNAyAFIQ0MBAtBFyEKIAQoAmAiDUUNEyALIQUgDSAQIgZB/wFxSw0GIAUhEgwHCwNAIAkgCkECdGoiDS0AAyIKIAVB/wFxTQ0SIAYgCEcEQCAFrSElIAYxAAAhJCAGQQFqIQYgBUEIaiEFIB4gJCAlhiAjhCIjICaDpyIKTQ0XDAELC0ESIQYgBEESOgAAIBMgDCkDADcCACAEIAg2AjwgBCAINgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCACAEIBAgCEEDdGogC0EDdGs6AEBBACEIDCALIAwoAggiBiAMKAIEIgVHBEAgBSAGTQ0JIAwoAgAgBmogBCgCWDoAACAMIAZBAWo2AggMEwtBEyEGIARBEzoAACATIAwpAwA3AgAgBCAQOgBAIAQgCDYCPCAEIAs2AjggBCAjNwMwIBQgDCgCEDYAACAUQQNqIAwoABM2AAAgE0EIaiAMQQhqKAIANgIAQQAhCAwfCwNAIAUgCEYNCSAFMQAAIAathiAjhCEjIAVBAWoiDSEFIAogBkEIaiIGQf8BcUsNAAsLIAQgBCgCZCAKajYCZCAEIAQoAlggI0J/IApBP3GthkJ/hYOnaiIFNgJYIAYgCmshECAjIAqtiCEjIA0hCwsgBCAFNgJoQRUhCgwOCyALIQYgECEFIAcgI0J/IAQ1ApwBhkJ/hSImg6ciCk0NCwNAIA8gCkECdGoiDS0AAyIKIAVB/wFxTQ0LIAYgCEcEQCAFrSElIAYxAAAhJCAGQQFqIQYgBUEIaiEFIAcgJCAlhiAjhCIjICaDpyIKTQ0NDAELC0EVIQYgBEEVOgAAIBMgDCkDADcCACAEIAg2AjwgBCAINgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCACAEIBAgCEEDdGogC0EDdGs6AEBBACEIDBsLA0AgBSAIRg0GIAUxAAAgBq2GICOEISMgBUEBaiISIQUgDSAGQQhqIgZB/wFxSw0ACwsgBCAEKAJkIA1qNgJkIAQgBCgCXCAjQn8gDUE/ca2GQn+Fg6dqNgJcIAYgDWshECAjIA2tiCEjIBIhCwwLCyAMKAIEIgUgDCgCCCIGRg0EIAUgBmshFiAGIAQoAlwiBU8EQCAMIAUgFiAEKAJYIgUgBSAWSxsiBRDsAgwHCyAFIAZrIhIgBCgCEE0EQCAEKAIMIgVBQGoiBkFBTw0aIAwgGSAGQQAgBSAGTxsgEiAEKAIUIgVrIg1rIAUgEmsgBSASSSIFGyIKIAogFiAEKAJYIgYgDSASIAUbIgUgBSAGSxsiBSAFIBZLGyIFahCUBQwHCyAELQABQQRxRQ0FIBMgDCkDADcCACAEIBA6AEAgBCAINgI8IAQgCzYCOCAEICM3AzAgFCAMKAIQNgAAQR4hBiAEQR42AogBIARB1c/AADYChAEgBEEeOgAAIBRBA2ogDCgAEzYAACATQQhqIAxBCGooAgA2AgBBfSEIDBgLIARBEjoAACATIAwpAwA3AgAgBCAQOgBAIAQgCDYCPCAEIAs2AjggBCAjNwMwIBQgDCgCEDYAACAUQQNqIAwoABM2AAAgE0EIaiAMQQhqKAIANgIAIAQQqwEgBC0AACEFDBULIAYgBUG8/8gAEIwHAAtBFCEGIARBFDoAACATIAwpAwA3AgAgBCAINgI8IAQgCDYCOCAEICM3AzAgFCAMKAIQNgAAIBRBA2ogDCgAEzYAACATQQhqIAxBCGooAgA2AgAgBCAQIAhBA3RqIAtBA3RrOgBAQQAhCAwVC0EWIQYgBEEWOgAAIBMgDCkDADcCACAEIAg2AjwgBCAINgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCACAEIBAgCEEDdGogC0EDdGs6AEBBACEIDBQLQRchBiAEQRc6AAAgEyAMKQMANwIAIAQgEDoAQCAEIAg2AjwgBCALNgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCAEEAIQgMEwsgDEEANgIoIAxBATYCHCAMQcT5yAA2AhggDEIENwIgIAxBGGpBvPrIABCNCAALIAQgBCgCWCIGIAVrNgJYQRJBFyAFIAZGGyEKDAMLIA0vAQAhEgJAAkAgDS0AAiIcQQ9LBEAgCiENDAELICNCfyAKIBxqQT9xrYZCf4UiJoOnIAp2IBJqIg0gB08NASAKQR9xIRYCQANAIA8gDUECdGoiGC0AAyINIApqQf8BcSAFQf8BcU0NASAGIAhHBEAgBa0hJSAGMQAAIAZBAWohBiAFQQhqIQUgJYYgI4QiIyAmg6cgFnYgEmoiDSAHTw0EDAELC0EVIQYgBEEVOgAAIBMgDCkDADcCACAEIAg2AjwgBCAINgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCACAEIBAgCEEDdGogC0EDdGs6AEBBACEIDBMLIBgtAAIhHCAYLwEAIRIgBCAEKAJkIApqNgJkIAUgCmshBSAjIAqtiCEjCyAFIA1rIRAgIyANrYghIyAcQcAAcUUEQCAEIBxBD3E2AmAgBCASQf//A3E2AlxBFiEKIAYhCwwECyATIAwpAwA3AgAgBCAQOgBAIAQgCDYCPCAEIAY2AjggBCAjNwMwIBQgDCgCEDYAACAEQRY2AogBIARB59DAADYChAFBHiEGIARBHjoAACAUQQNqIAwoABM2AAAgE0EIaiAMQQhqKAIANgIAQX0hCAwRCyANIAdBrPrIABCMBwALIAogB0Gc+sgAEIwHAAsgDS8BACESAkAgDS0AAiIcRQRAQQAhDSAGIQtBACEcDAELQQAhDSAcQQ9LBEAgBiELDAELAkAgHiAjQn8gCiAcakE/ca2GQn+FIiaDp0H//wNxIApBD3EiGHYgEmpB//8DcSINTQ0AAkADQCAJIA1BAnRqIg0tAAMiFiAKakH/AXEgBUH/AXFNDQEgBiAIRwRAIAWtISUgBjEAACEkIAZBAWohBiAFQQhqIQUgHiAkICWGICOEIiMgJoOnQf//A3EgGHYgEmpB//8DcSINTQ0DDAELC0ESIQYgBEESOgAAIBMgDCkDADcCACAEIAg2AjwgBCAINgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCACAEIBAgCEEDdGogC0EDdGs6AEBBACEIDBELIAUgCmshBSAjIAqtiCEjIA0tAAIhHCANLwEAIRIgCiENIAYhCyAWIQoMAQsgDSAeQYz6yAAQjAcACyAEIBJB//8DcTYCWCAEIA0gCkH/AXFqNgJkIAUgCmshECAjIAqtiCEjQRMhCiAcRQ0AIBxBIHENAiAcQcAAcUUEQCAEIBxBD3E2AmBBFCEKDAELCwtBHiEGIARBHjoAACATIAwpAwA3AgAgBCAQOgBAIAQgCDYCPCAEIAs2AjggBCAjNwMwIBQgDCgCEDYAACAEQRw2AogBIARBy9DAADYChAEgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCAEF9IQgMDAtBDCEFIARBDDoAACAEQX82AmQgEyAMKQMANwIAIAQgEDoAQCAEIAg2AjwgBCALNgI4IAQgIzcDMCAUIAwoAhA2AAAgFEEDaiAMKAATNgAAIBNBCGogDEEIaigCADYCAAwJCyAKIB5B/PnIABCMBwALIAQgBC0AQCIHQfgBcToAQCAEIAQpAzAgB0EHca2IIiM3AzACQCAHQR9LDQBBACEIQQ4hBiAEKAI4IgkgBCgCPCILRg0KIAQgCUEBaiIFNgI4IAQgB61CGIMiJkIIfCIkPABAIAQgCTEAACAmhiAjhCIjNwMwIAdBGHEiB0EYRg0AIAUgC0YNCiAEIAlBAmoiBTYCOCAEICZCEHwiJTwAQCAEIAkxAAEgJIYgI4QiIzcDMCAHQQ9LDQAgBSALRg0KIAQgCUEDaiIFNgI4IAQgJkIYfCIkPABAIAQgCTEAAiAlhiAjhCIjNwMwIAcNACAFIAtGDQogBEEgOgBAIAQgCUEEajYCOCAEIAkxAAMgJIYgI4QiIzcDMAsgI0IQiCAjhUL//wODQv//A1EEQEEAIQggBEEAOgBAIARCADcDMCAEICOnQf//A3E2AlhBDyEFIAQtAARBBkcNCEEOIQYMCgsgBEEdNgKIASAEQdDOwAA2AoQBDAgLQQ0hBSAELQAEQQVrQf8BcUECTw0GQQAhCEEMIQYMCAtBHSEGIAQtAAMiB0UNByAEKAJ4RQ0HAkAgBC0AQCIJQR9LDQBBACEIQQshBiAEKAI4IhcgBCgCPCILRg0IIAQgF0EBaiIFNgI4IAQgCa0iJkIIfCIjPABAIAQgBCkDMCAXMQAAICaGhCIkNwMwIAlBF0sNACAFIAtGDQggBCAXQQJqIgU2AjggBCAmQhB8IiU8AEAgBCAXMQABICOGICSEIiQ3AzAgCUEPSw0AIAUgC0YNCCAEIBdBA2oiBTYCOCAEICZCGHwiIzwAQCAEIBcxAAIgJYYgJIQiJDcDMCAJQQdLDQAgBSALRg0IIAQgF0EEajYCOCAEIAlBIHI6AEAgBCAXMQADICOGICSENwMwCwJAIAdBBHEEQCAEKAJUIAQoAjBHDQELIARBADoAQCAEQgA3AzBBHSEGQQEhCAwICyAEQRc2AogBIARBqc/AADYChAEMBgsCQCAELQBAIgtBD0sNAEEAIQhBAyEGIAQoAjgiCSAEKAI8IgdGDQcgBCAJQQFqIgU2AjggBCALrSIkQgh8IiM8AEAgBCAEKQMwIAkxAAAgJIaEIiQ3AzAgC0EHSw0AIAUgB0YNByAEIAlBAmo2AjggBCALQRByOgBAIAQgCTEAASAjhiAkhDcDMAsgBCgCjAEiBQRAIAUgBC0AMDYCCCAEKAKMASAEKQMwQgiIPgIMCwJAIAQtAHlBAnFFDQAgBC0AA0EEcUUNACAMIAQpAzA9ARggBCAEKAJ8IAxBGGpBAhCpATYCfAsgBEEAOgBAIARCADcDMEEEIQUMBAsCQCAELQBAIgtBH0sNAEEAIQhBAiEGIAQoAjgiCSAEKAI8IgdGDQYgBCAJQQFqIgU2AjggBCALrSImQgh8IiM8AEAgBCAEKQMwIAkxAAAgJoaEIiQ3AzAgC0EXSw0AIAUgB0YNBiAEIAlBAmoiBTYCOCAEICZCEHwiJTwAQCAEIAkxAAEgI4YgJIQiJDcDMCALQQ9LDQAgBSAHRg0GIAQgCUEDaiIFNgI4IAQgJkIYfCIjPABAIAQgCTEAAiAlhiAkhCIkNwMwIAtBB0sNACAFIAdGDQYgBCAJQQRqNgI4IAQgC0EgcjoAQCAEIAkxAAMgI4YgJIQ3AzALIAQoAowBIgUEQCAFIAQpAzA+AgQLAkAgBC0AeUECcUUNACAELQADQQRxRQ0AIAwgBCkDMD4CGCAEIAQoAnwgDEEYakEEEKkBNgJ8CyAEQQA6AEAgBEIANwMwQQMhBQwDCyAEKQMwISMCQCAELQBAIgtBD0sNAEEAIQggBCgCOCIJIAQoAjwiB0YEQEEBIQYMBgtBASEGIAQgCUEBaiIFNgI4IAQgC60iJUIIfCIkPABAIAQgCTEAACAlhiAjhCIjNwMwIAtBB0sNACAFIAdGDQUgBCAJQQJqNgI4IAQgC0EQcjoAQCAEIAkxAAEgJIYgI4QiIzcDMAsgBCAjpyIGNgJ4AkACQCAGQf8BcUEIRgRAIAZBgMADcQ0BIAQoAowBIgUEfyAFIAZBCHZBAXE2AgAgBCgCeAUgBgtBgARxRQ0CIAQtAANBBHFFDQIgBCgCfCEFIAwgBCkDMD0AGCAEIAUgDEEYakECEKkBNgJ8DAILIARBGzYCiAEgBEH90MAANgKEAQwFCyAEQRk2AogBIARBtYDAADYChAEMBAsgBEEAOgBAIARCADcDMEECIQUMAgtBDCEFIAQoAlgiCkUNASAEKAI4IQ8gBCgCPCEHIAQoAlAhCCAEKAJIIQsgBCgCTCEJAkADQCAHIA9rIgcgBCgCTCAIayIGIAogBiAKSRsiBiAGIAdLGyINRQRAQQAhCEEPIQYMBgsgCCAJTQRAIA0gCSAIayIGSw0CIA0EQCAIIAtqIA8gDfwKAAALIAQgCCANaiIINgJQIAQgBCgCWCANayIKNgJYIAQgBCgCPCIHIAQoAjggDWoiBiAGIAdLGyIPNgI4IApFDQQMAQsLIAggCSAJQdz/yAAQ6gcAC0EAIA0gBkHM/8gAEOoHAAsCQCAEKAIkIgUgBCgCGCILTw0AQRMgBSAFQRNNGyENIAQoAjghCiAEKQMwISQgBC0AQCEGIAQoAjwhCQJAA0ACQCAGQf8BcUECSwRAICQhIyAGIQgMAQsgCSAKRgRAQQAhCEEZIQYMBwsgBCAKQQFqIgc2AjggBCAGQQhyIgg6AEAgBCAKMQAAIAathiAkhCIjNwMwIAchCgsgBSANRg0BIAQgCEEDayIGOgBAIAQgI0IDiCIkNwMwIAQgBUEBaiIHNgIkIBogBUGD58gAai0AAEEBdGogI6dBB3E7AQAgByIFIAtHDQALIAshBQwBCyANQRNBtPvIABCMBwALIAVBEk0EQAJAIAVBC00EQCAFQYPnyABqIQYgBUETIAVrIgtBGHEiB2ohBSAHIQgDQCAaIAb9XQAAIiv9iQH9qQEiLP0bAEEBdGpBADsBACAaICz9GwFBAXRqQQA7AQAgGiAs/RsCQQF0akEAOwEAIBogLP0bA0EBdGpBADsBACAaICsgLP0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pASIr/RsAQQF0akEAOwEAIBogK/0bAUEBdGpBADsBACAaICv9GwJBAXRqQQA7AQAgGiAr/RsDQQF0akEAOwEAIAZBCGohBiAIQQhrIggNAAsgByALRg0BCwNAIBogBUGD58gAai0AAEEBdGpBADsBACAFQQFqIgVBE0cNAAsLIARBEzYCJAsgDEEYakEAIBpBEyAdQbQKQQcgDhCtASAMKAIYRQRAIAwoAhwhBiAMKAIgIQUgBEEBOgCYASAEIAU2AiggBCAGNgKUASAEQQA2AiRBGiEFDAELCyAEQRk2AogBIARBnIDAADYChAELQX0hCEEeIQYLIAQgBjoAACARKAIgIQkgESARKAI8Ig4oAjgiHTYCICARIA4oAjwgHWs2AiQgESAOKAJMIgUgDigCUCIGazYCMCARIAYgDigCSCIPaiIHNgIsIBEgESgCKCAdIAlrajYCKCAOIA4oAnQgBiAFa2oiFiAOKAJUaiIFNgJUIBEgBTYCNCARIA4oAnwiFzYCUAJAAkACQAJAAkACQAJAAkACQAJAAkAgDkEMaigCACISQUBqQUFJBEACQCASQcAASw0AIBZFDQwgDi0AACIFQR5LDQBBASAFdCIFQYCMgIAEcQ0MIAVBgJAEcUUNACAOLQAEQQRGDQwLIAYgFkkNASAOLQADQQRxIQYgDigCeCELIBJBQGoiBUEAIAUgEk0bIhggFksEQCAWIBYgGCAOKAIUIhBrIhsgFiAbSRsiGWshDSAPIBlqIQogBkUEQCAQIBJLDQQgEiAQayIFIBlJBEBBACAZIAVBwP3IABDqBwALIA4oAgghBSAZBEAgBSAQaiAPIBn8CgAACyAWIBtNDQogDUUNDCAFIAogDfwKAAAMDAsgECASSw0EIBkgEiAQayIFSw0FIA4oAggiBiAQaiEFIAtFDQcMCAsgDyAWIBhrIgVqIRsCQCAGBEAgCw0BIBcgDyAFEN8CIQUgGARAIA4oAgggGyAY/AoAAAsgDiAFIBsgGBDfAjYCfAwHCyAYRQ0GIA4oAgggGyAY/AoAAAwGCyAOKAKAASAPIAUQqQEhBiAOKAIIIA4gBiAbIBgQqQE2AoABIBhFDQUgGyAY/AoAAAwFCwwLC0EAIBYgBkGkgMkAEOoHAAsgECASIBJB0P3IABDqBwALIBAgEiASQfD9yAAQ6gcAC0EAIBkgBUHg/cgAEOoHAAsgDiAYNgIQIA5BADYCFAwFCyAZBEAgBSAPIBn8CgAACyAOIBcgDyAZEN8CIgU2AnwgFiAbTQ0BIA0EQCAGIAogDfwKAAALIA4gBSAKIA0Q3wI2AnwMAwsgDiAOKAKAASAPIBkQqQE2AoABIBkEQCAFIA8gGfwKAAALIBYgG0sNAQsgDiAQIBlqIgVBACAFIBhHGzYCFCAYIA4oAhAiBU0NAiAOIAUgGWo2AhAMAgsgDiAOKAKAASAKIA0QqQE2AoABIA1FDQAgBiAKIA38CgAACyAOIBg2AhAgDiANNgIUCyAOKAKEASIGBEACQCAOKAKIASIFBEAgBSAGakEBay0AAEUNAQtB7P/IAEElQZSAyQAQ6wcACyARIAY2AjgLIBEgDi0AAEEMa0H/AXEiBUEGSQR/IAVBAnQoAriESQVBAAsgDi0AQCAOLQABQQZ0QcAAcXJyNgJMIBEgESkDECAdIB9rrXwiIzcDECARIBEpAxggByACa618IiQ3AxgCQAJAAkACQAJAAkACQCAIRQRAIBZFIAkgHUZxICFB/wFxQQRGcg0BCwJAAkAgCEEEag4HBQUFAQMABAILQQIhCAwCCyAMQQA2AiggDEEBNgIcIAxBwObIADYCGCAMQgQ3AiAgDEEYakHI5sgAEI0IAAtBASEICyARIBEpAwAgIyAofXw3AwAgESARKQMIICQgJ318NwMIDAMLIBEgESkDACAjICh9fDcDACARIBEpAwggJCAnfXw3AwgMAQsgESARKQMAICMgKH18NwMAIBEgESkDCCAkICd9fDcDCAJAIAhBAmsOAgECAAsgESgCOCIGBH8gDEEYaiAGAkAgBi0AAEUEQEEAIQcMAQsgBkEBaiEGQQAhBwNAIAYgB2ogB0EBaiEHLQAADQALCyAHEPsCIAwoAiAhBkEAIAwoAhwgDCgCGBsFQQALIQUgFSAGNgIIIBUgBTYCBCAVQQA2AgAMAgsgFSAXNgIEIBVBATYCAAwBCyAVQQI2AgAgFSAIOgAECyAMQTBqJAAMAQtB5PzIAEHKAEGw/cgAEOsHAAsgFS0ABCEHIBUoAgAgASABKAIMIgkgASgCCCABKQNIICp9p2oiBSAFIAlLGyILNgIIQQJHBEACQEEWEHEiAUUNACABQci2xwD9AAAA/QsAACABQQ5qQda2xwApAAA3AABBDBBxIgJFDQAgAkEWNgIIIAIgATYCBCACQRY2AgBBDBBxIgFFDQAgAUEUOgAIIAFBuJ/GADYCBCABIAI2AgAgACABrUIghkIDhDcCAAwECwALIAEpA1AgKX2nIQUCQAJAAkAgB0EBaw4CAQIACyAgIANFcg0BIAVFDQIMAQsgICADRXINACAFRQ0BCwsgAEEEOgAAIAAgBTYCBAwBCwJAAkACQCABKAIoIgsgASgCLCIJRiABKAIkIgggA01xRQRAIAEoAiAhByAJIAtLDQIgCCABKAIwIgZrIgUEQCAGIAdqQQAgBfwLAAsgFSABQThqIAcgCBCmAyAVLQAAQQRHDQEgCCAVKAIEIglPBEAgASAINgIwIAEgCTYCLEEAIQsMAwtBtJvHAEE2QeybxwAQ6wcACyABQgA3AyggACABQThqIAIgAxCmAwwDCyAVKAIEIQYgFSgCACEFIBUxAAAgASAINgIwIAFCADcDKEEAIQlBACELQgRSDQELIAcgC2ohBgJAIAkgC2siBSADIAMgBUsbIgNBAUYEQCACIAYtAAA6AAAMAQsgA0UNACACIAYgA/wKAAALIAAgAzYCBCAAQQQ6AAAgASAJIAMgC2oiACAAIAlLGzYCKAwBCyAAIAY2AgQgACAFNgIACyAVQRBqJAAL5AUBBX8gASgCACICQf///wNxIQMgAkGAgICAeHEhBiABKAIEIQQCQCACQYCAgPwHcSIFQYCAgPwHRgRAIANBDXYgBkEQdnJBgARBACADG3JBgPgBciEGDAELIAZBEHYhBiAFQYCAgLgETQRAIAVBgICAxANPBEAgAkEMdiACQf/fAHFBAEdxIAVBDXYgA0ENdmpBgIABaiAGcmohBgwCCyAFQYCAgJgDSQ0BIANBgICABHIiAkH+ACAFQRd2IgNrdiEFIAJBHSADayIDdkEBcQR/IAVBAyADdEEBayACcUEAR2oFIAULIAZyIQYMAQsgBkGA+AFyIQYLIAEoAgghASAEQf///wNxIQMgBEGAgICAeHEhBQJAIARBgICA/AdxIgJBgICA/AdHBEAgBUEQdiEFIAJBgICAuARNBEAgAkGAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgAkENdiADQQ12akGAgAFqIAVyaiEFDAMLIAJBgICAmANJDQIgA0GAgIAEciIDQf4AIAJBF3YiAmt2IQQgA0EdIAJrIgJ2QQFxBH8gBEEDIAJ0QQFrIANxQQBHagUgBAsgBXIhBQwCCyAFQYD4AXIhBQwBCyADQQ12IAVBEHZyQYAEQQAgAxtyQYD4AXIhBQsgAUH///8DcSEDIAFBgICAgHhxIQQCQCABQYCAgPwHcSICQYCAgPwHRwRAIARBEHYhBCACQYCAgLgETQRAIAJBgICAxANPBEAgAUEMdiABQf/fAHFBAEdxIAJBDXYgA0ENdmpBgIABaiAEcmohBAwDCyACQYCAgJgDSQ0CIANBgICABHIiA0H+ACACQRd2IgJrdiEBIANBHSACayICdkEBcQR/IAFBAyACdEEBayADcUEAR2oFIAELIARyIQQMAgsgBEGA+AFyIQQMAQsgA0ENdiAEQRB2ckGABEEAIAMbckGA+AFyIQQLIAAgBDsBGiAAIAU7ARggACAGOwEWC9cFAwR+CH8BeyABKQMQIAEpAxggAhDyAyEFIAEoAghFBEAgASABQRBqEMABCyABKAIEIgwgBadxIQkgBUIZiCIIQv8Ag0KBgoSIkKDAgAF+IQcgASgCACEKAkACQCACLQAAIhBBC0cEQANAIAkgCmopAAAiBiAHhSIFQn+FIAVCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiBVBFBEADQCAQIAogBXqnQQN2IAlqIAxxQWhsaiIPQRhrLQAARg0EIAVCAX0gBYMiBVBFDQALCyAGQoCBgoSIkKDAgH+DIQUCfwJAIA1FBEAgBVANASAFeqdBA3YgCWogDHEhCwsgBSAGQgGGg0IAUg0FQQEMAQtBAAshDSAOQQhqIg4gCWogDHEhCQwACwALIAIoAAEhEANAIAkgCmopAAAiBiAHhSIFQn+FIAVCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiBVBFBEADQCAKIAV6p0EDdiAJaiAMcUFobGoiD0EYay0AAEELRgRAIBAgD0EXaygAAEYNBAsgBUIBfSAFgyIFUEUNAAsLIAZCgIGChIiQoMCAf4MhBQJ/AkAgDUUEQCAFUA0BIAV6p0EDdiAJaiAMcSELCyAFIAZCAYaDQgBSDQRBAQwBC0EACyENIA5BCGoiDiAJaiAMcSEJDAALAAsgD0EQayIB/QADACERIA9BCGsgBDcDACABIAM3AwAgACAR/QsDCCAAQgE3AwAPCyAKIAtqLAAAIglBAE4EQCAKIAopAwBCgIGChIiQoMCAf4N6p0EDdiILai0AACEJCyAKIAtqIAinQf8AcSINOgAAIAogC0EIayAMcWpBCGogDToAACABIAEoAgggCUEBcWs2AgggASABKAIMQQFqNgIMIAogC0FobGoiAUEIayAENwMAIAFBEGsgAzcDACABQRhrIAI1AAAgAkEEajEAAEIghoQ3AwAgAEIANwMAC8IFAQl/IwBBMGsiBCQAAkACQAJ/AkACQCACIANLBEAgASADQRhsaiIGKAIUIgJBBE0EQEEAIQEgBEEANgIIIARBADYCLCAGQQRqIgMgAkECdGohCUEIIQUgBEEMaiIGIQogBEEsaiILDAQLIAYoAgghAyAGKAIEIQJBACEBIARBADYCCCAEQQA2AiwgAyACQQJ0aiEJIARBDGohBiAEQSxqIQsgAkEJSQ0CIAQgBEEIakF/IAJBAWtndkEBahD2AyAEKAIAIgFBgYCAgHhHBEAgAQ0CQdiVxwBBEUHUzMcAEOsHAAsgBCgCLCIFQQlJBEAgBSEBDAMLIAQoAgwhASAEKAIQIQogBgwDCyADIAJBrLvHABCMBwsACyAGIQpBCCEFIAsLIgwgASAFSQR/AkAgCSADayIHQQJ2IgggBSABQX9zaiICIAIgCEsbIghBB00gB0EDcXINACABQQJ0IApqIgIgA2tBEEkNACABIAhBAWoiCCAIQQNxIghBBCAIG2siB2ohASADIAdBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAHQQRrIgcNAAshAwsgCiABQQJ0aiECA0AgAyAJRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAUgAUEBaiIBRw0ACyAFBSABCzYCACADIAlGDQEDQAJ/IAQoAiwiBUEJSQRAIAUhAiAGIQdBCCEFIAsMAQsgBCgCDCECIAQoAhAhByAGCyEBIAMoAgAhDCACIAVGBEAgBEEIahDVBiAEKAIMIQIgBCgCECEHIAYhAQsgByACQQJ0aiAMNgIAIAEgASgCAEEBajYCACADQQRqIgMgCUcNAAsMAQsgDCABNgIACyAAIAT9AAII/QsCACAAQSBqIARBKGopAgA3AgAgAEEQaiAEQRhq/QACAP0LAgAgBEEwaiQAC8IFAQl/IwBBMGsiBCQAAkACQAJ/AkACQCACIANLBEAgASADQRhsaiIGKAIUIgJBBE0EQEEAIQEgBEEANgIIIARBADYCLCAGQQRqIgMgAkECdGohCUEIIQUgBEEMaiIGIQogBEEsaiILDAQLIAYoAgghAyAGKAIEIQJBACEBIARBADYCCCAEQQA2AiwgAyACQQJ0aiEJIARBDGohBiAEQSxqIQsgAkEJSQ0CIAQgBEEIakF/IAJBAWtndkEBahD2AyAEKAIAIgFBgYCAgHhHBEAgAQ0CQdiVxwBBEUHUzMcAEOsHAAsgBCgCLCIFQQlJBEAgBSEBDAMLIAQoAgwhASAEKAIQIQogBgwDCyADIAJBpMDHABCMBwsACyAGIQpBCCEFIAsLIgwgASAFSQR/AkAgCSADayIHQQJ2IgggBSABQX9zaiICIAIgCEsbIghBB00gB0EDcXINACABQQJ0IApqIgIgA2tBEEkNACABIAhBAWoiCCAIQQNxIghBBCAIG2siB2ohASADIAdBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAHQQRrIgcNAAshAwsgCiABQQJ0aiECA0AgAyAJRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAUgAUEBaiIBRw0ACyAFBSABCzYCACADIAlGDQEDQAJ/IAQoAiwiBUEJSQRAIAUhAiAGIQdBCCEFIAsMAQsgBCgCDCECIAQoAhAhByAGCyEBIAMoAgAhDCACIAVGBEAgBEEIahDVBiAEKAIMIQIgBCgCECEHIAYhAQsgByACQQJ0aiAMNgIAIAEgASgCAEEBajYCACADQQRqIgMgCUcNAAsMAQsgDCABNgIACyAAIAT9AAII/QsCACAAQSBqIARBKGopAgA3AgAgAEEQaiAEQRhq/QACAP0LAgAgBEEwaiQAC9MFAgl/BX4jAEEQayILJAACQAJ/AkACQCABUEUEQEGgfyACIAF5Ig+nayIGa8FB0ABsQbCnBWpBzhBtIgJB0QBPDQEgCyACQQR0IgIpA4iFQiABIA+GEN0GQgFBQCAGIAIvAZCFQmprIgdBP3GtIg+GIhFCAX0iEiALKQMIIAspAwBCP4h8IgGDIhBQRQRAIAIvAZKFQiEIIAEgD4inIgZBkM4ATwRAIAZBwIQ9SQ0EIAZBgMLXL08EQEEIQQkgBkGAlOvcA0kiAhshCUGAwtcvQYCU69wDIAIbDAYLQQZBByAGQYCt4gRJIgIbIQlBwIQ9QYCt4gQgAhsMBQsgBkHkAE8EQEECQQMgBkHoB0kiAhshCUHkAEHoByACGwwFC0EKQQEgBkEJSyIJGwwECyAAQQA2AgAMBAtB2I/CAEEcQfSPwgAQ6wcACyACQdEAQZiPwgAQjAcAC0EEQQUgBkGgjQZJIgIbIQlBkM4AQaCNBiACGwshAgJAAkACQCAJIAhrQQFqwSIIIAXBIgpKBEAgB0H//wNxIQ0gCCAFa8EgBCAIIAprIARJGyIKQQFrIQ5BACEHA0AgAyAHaiAGIAJuIgxBMGo6AAAgBiACIAxsayEGIAcgDkYNAyAHIAlGDQIgB0EBaiEHIAJBCkkgAkEKbiECRQ0AC0GEkMIAEIEIAAsgACADIARBACAIIAUgAUIKgCACrSAPhiARELIEDAMLIAdBAWohAiANQQFrQT9xrSETQgEhAQNAIAEgE4hQRQRAIABBADYCAAwECyACIARGDQIgAiADaiAQQgp+IhAgD4inQTBqOgAAIAFCCn4hASAQIBKDIRAgCiACQQFqIgJHDQALIAAgAyAEIAogCCAFIBAgESABELIEDAILIAAgAyAEIAogCCAFIAatIA+GIBB8IAKtIA+GIBEQsgQMAQsgBCAEQZSQwgAQjAcACyALQRBqJAAL8QQBDH8jAEEgayIEJAACQAJAAkAgACgCACIBQQNGIAFBAklyDQACQAJAIAAtABRBAWsOAgIAAQsgBEEANgIYIARBATYCDCAEQbzLxwA2AgggBEIENwIQIARBCGpBxMvHABCNCAALIAAoAgghCiAAKAIMIgwEQANAIAogB0EMbGoiBSgCBCELIAUoAggiCQRAIAtBJGohAQNAIAFBBGsoAgAiAkGAgICAeHJBgICAgHhHBEAgASgCACIGQQRrKAIAIgNBeHEiCEEEQQggA0EDcSIDGyACakkNByADQQAgCCACQSdqSxsNBiAGEKICCwJAIAFBFGsoAgAiBkECRg0AIAFBEGshAgJAIAZFBEAgAigCACICRQ0CIAFBDGsoAgAiBkEEaygCACIDQXhxIghBBEEIIANBA3EiAxsgAmpJDQkgA0UgCCACQSdqTXINAQwICyACKAIAIgJFDQEgAUEMaygCACIGQQRrKAIAIgNBeHEiCCACQQF0IgJBBEEIIANBA3EiAxtqSQ0IIANFDQAgCCACQSdqSw0HCyAGEKICCyABQSxqIQEgCUEBayIJDQALCyAFKAIAIgEEQCALQQRrKAIAIgVBeHEiCSABQSxsIgFBBEEIIAVBA3EiBRtqSQ0FIAVBACAJIAFBJ2pLGw0EIAsQogILIAdBAWoiByAMRw0ACwsgACgCBCIARQ0AIApBBGsoAgAiAUF4cSIHIABBDGwiAEEEQQggAUEDcSIBG2pJDQIgAUEAIAcgAEEnaksbDQEgChCiAgsgBEEgaiQADwtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALtwgCBX8DfiMAQUBqIgEkACABQQY2AgQgAUGQgsgANgIAQai3yQAtAABBA0cEQAJAIwBBIGsiAiQAAkACQAJAAkBBqLfJAC0AAEECaw4CAwEAC0Got8kAQQI6AABBgAgQcSIDRQ0BQai3yQBBAzoAAEGYt8kAIAM2AgBBkLfJAEKAgICAgIABNwMAQYC3yQBCADcDAEGgt8kAQQA6AABBnLfJAEEANgIAQYy3yQBBADoAAEGIt8kAQQA2AgALIAJBIGokAAwCCwALIAJBADYCGCACQQE2AgwgAkGYg8gANgIIIAJCBDcCECACQQhqQZCEyAAQjQgACwsCQAJAAkACQAJAAkACQAJAQfi6yQApAwAiBlAEQEGAu8kAKQMAIQcDQCAHQn9RDQJBgLvJACAHQgF8IgZBgLvJACkDACIIIAcgCFEiAhs3AwAgCCEHIAJFDQALQfi6yQAgBjcDAAsCQEGAt8kAKQMAIAZSBEBBjLfJAC0AACECQQEhA0GMt8kAQQE6AAAgASACOgAYIAINA0GAt8kAIAY3AwAMAQtBiLfJACgCACICQX9GDQMgAkEBaiEDC0GIt8kAIAM2AgAgAUGAt8kANgIQIAAoAgQaIAFBBDoAGCABIAFBEGo2AiACQAJAIAFBGGpBiPvHACAAEMEDBEAgAS0AGEEERw0BIAFBADYCOCABQQE2AiwgAUHw+scANgIoIAFCBDcCMCABQShqQfj6xwAQjQgACyABQQQ6AAggASgCHCEAIAEtABgiAkEETSACQQNHcQ0BIAAoAgAhAiAAQQRqKAIAIgMoAgAiBARAIAIgBBEDAAsgAygCBCIDBEAgAkEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgA2pJDQYgBEEAIAUgA0EnaksbDQcgAhCiAgsgAEEEaygCACICQXhxIgNBEEEUIAJBA3EiAhtJDQcgAkEAIANBNE8bDQggABCiAgwBCyABIAEpAxg3AwgLIAEoAhAiACAAKAIIQQFrIgI2AgggAkUEQCAAQQA6AAwgAEIANwMACyABLQAIQQRHDQcgAUFAayQADwsjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQbCFyAA2AgggAEIENwIQIABBCGpBuIXIABCNCAALIAFCADcCNCABQoGAgIDAADcCLCABQcCDyAA2AiggAUEYaiABQShqEPsHAAtB2IPIAEEmQYCEyAAQqwcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAEgASkDCDcDECABQQI2AiwgAUGsgsgANgIoIAFCAjcCNCABIAFBEGqtQoCAgIDgAoQ3AyAgASABrUKAgICAoAGENwMYIAEgAUEYajYCMCABQShqQbyCyAAQjQgAC9UFAQl/IwBBIGsiCCQAIAAgACgCCCIEIAJqIgM2AgggACgCBCIJIANBEGoiByAHIAlLGyEDIAAoAgAhBQJAAkACQAJAAkACQAJAAkACQAJAAkAgASACTwRAIAEgBEsNASAEIAFrIQAgByAJTwRAIAAgAmoiASADSw0DIAAgAUsNBCAEIAMgAmtLDQUgAkUNCiAEIAVqIAAgBWogAvwKAAAMCgsgAkUNCSAEIAVqIgMgACAFaiIA/QAAAP0LAAAgAkERSQ0JIAAgAmohAkEAIAFrIQEgA0EQaiEAA0AgACAAIAFq/QAAAP0LAAAgAEEQaiIAIAFqIAJJDQALDAkLIAFBAUcEQEEAIQAgASADIAQgAWsiCSADIAlLG2ogBGsiBiADIARrIgdBACADIAdPGyIHIAYgB0kbIgYgAkEBayIKIAYgCkkbIgpBAWoiBkERSSABQQ9Ncg0IIAZBD3EiAEEQIAAbIgAgCkF/c2ohCkEAIAFrIQsgBCAFaiEBIAYgAGshAANAIAEgASALav0AAAD9CwAAIAFBEGohASAKQRBqIgoNAAsMCAsgBEEBayIAIANPDQQgAyAESQ0FIAIgAyAEayIBSw0GIAJFDQggBCAFaiAAIAVqLQAAIAL8CwAMCAtB8P7IAEEJQfz+yAAQqwcAC0EAIAEgA0Hg/sgAEOoHAAsgACABIANB4P7IABDqBwALIAhBADYCGCAIQQE2AgwgCEHUnMgANgIIIAhCBDcCECAIQQhqQeD+yAAQjQgACyAAIANBkP7IABCMBwALIAQgAyADQbD+yAAQ6gcAC0EAIAIgAUGg/sgAEOoHAAsgBSAJaiEBIAQgBWohBQNAIAAgCWoiBiADTw0CIAAgB0YNAyAAIAVqIAAgAWotAAA6AAAgAEEBaiIAIAJHDQALCyAIQSBqJAAPCyAGIANBwP7IABCMBwALIAAgBGogA0HQ/sgAEIwHAAuVBgEFfyMAQcDSAGsiAyQAAkACQAJAAkAgAkEJTQRAIABBgICAgHg2AgAMAQsCQAJAIAEtAABBH0cNACABLQABQYsBRw0AIAEtAAJBCEcNAEEKIQQgAS0AAyIFQQRxRQ0BIAJBDEkEQCAAQYCAgIB4NgIADAMLIAIgAS8ACkEMaiIETw0BIABBgICAgHg2AgAMAgsgA0EANgIcIANBATYCECADQbztxwA2AgwgA0IENwIUIANBDGoQlQchASAAQYGAgIB4NgIAIAAgATYCBAwBCyAFQQhxBEACQCACIARLBEADQCABIARqLQAARQ0CIAIgBEEBaiIERw0ACwsgAEGAgICAeDYCAAwCCyAEQQFqIQQLAkAgBUEQcUUNACACIARLBEADQCABIARqLQAARQRAIARBAWohBAwDCyACIARBAWoiBEcNAAsLIABBgICAgHg2AgAMAQsCQAJAIAVBAnEEQCACIARBAmoiBEkNAQsgAiAESw0BIABBgICAgHg2AgAMAgsgAEGAgICAeDYCAAwBC0EEEHEiBUUNASAFQQRrIgYtAABBA3EEQCAFQQA2AAALIANBDGoiB0EAQYHSAPwLACADQaDSAGogByABIARqIAIgBGsgBUEEQQBBBhBEIAMgAy0ApFIiAToAk1ICQAJAAkACQCABDgMBAgEACyABQf8BRwRAIANBATYCpFIgA0GY98cANgKgUiADQgE3AqxSIAMgA0GT0gBqrUKAgICA4ASENwO4UiADIANBuNIAajYCqFIgA0GU0gBqIgEgA0Gg0gBqELEGIAEQkAchASAAQYGAgIB4NgIAIAAgATYCBAwDCyAAQQA2AgggAEKAgICAEDcCAAwCCyADKAKoUiEBIAAgBTYCBCAAQQQ2AgAgAEEEIAEgAUEETxs2AggMAgsgAEGAgICAeDYCAAsgBigCACIAQXhxIgFBCEEMIABBA3EiABtJDQIgAEEAIAFBLE8bDQMgBRCiAgsgA0HA0gBqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC64DAhp9A3xDAACAPyEMRAAAAAAAAPA/RAAAAODTDtU/IhujIhxEAAAAAAAA8D9EAAAAwJoD1D8iHaEgG6GitiELQwAAgD8hDUMAAIA/IQFDmpkZPiIIQ8P1qD4iA5QiDkMAAIA/Q5qZmT4iCZNDmpkZPyIEkyIClCAJQ4/CdT0iBZQiD0MAAIA/QwrXIz8iCpMgA5MiBpQgCiAElCIQQwAAgD8gCJMgBZMiB5SSkiAIIASUIhEgBpSTIAkgA5QiEiAHlJMgCiAFlCITIAKUkyIUQwAAAABcBEAgECASk0MAAIA/IBSVIgGUIQwgDiATkyABlCEVIA8gEZMgAZQhFiAJIAaUIAogApSTIAGUIRcgAyAClCAEIAaUkyABlCEYIAogB5QgCCAGlJMgAZQhDSAFIAaUIAMgB5STIAGUIRkgCCAClCAJIAeUkyABlCEaIAQgB5QgBSAClJMgAZQhAQsgACAFIBggHCAdorYiApQgF5IgDCALlJKUOAIMIAAgBCAZIAKUIA2SIBUgC5SSlDgCCCAAIAMgASAClCAaIBYgC5SSkpQ4AgQgAEEBNgIAC5kFAgZ/AX4CQCABKAIIIgIgASgCBCIETw0AIAEoAgAgAmotAABB9QBHDQBBASEHIAEgAkEBaiICNgIICwJAAkAgAiAESQRAIAEoAgAiBiACai0AAEEwayIDQf8BcSIFQQpJDQELDAELIAEgAkEBaiICNgIIAkACQCAFRQRAQQAhAwwBCyADQf8BcSEDA0AgAiAERgRAIAQhAgwDCyACIAZqLQAAQTBrQf8BcSIFQQlLDQEgASACQQFqIgI2AgggA61CCn4iCEIgiFAEQCAFIAinIgVqIgMgBU8NAQsLDAILIAIgBE8NACACIAZqLQAAQd8ARw0AIAEgAkEBaiICNgIICwJAAkACQAJAIAIgAiADaiIFTQRAIAEgBTYCCCAEIAVJDQUgAkUNAiACIARJDQEMAgsMBAsgAiAGaiwAAEG/f0wNAQsgBUUgBCAFTXJFBEAgBSAGaiwAAEG/f0wNAQsgAiAGaiEEIAcNASAAQgE3AgggACADNgIEIAAgBDYCAA8LIAYgBCACIAVBuLLFABC7CQALIAIgBmpBAWshBiADIQECfwNAIAEiAkUEQEEAIQEgBCEFQQEMAgsgAkEBayEBIAIgBmotAABB3wBHDQALAkACQCABRQ0AAkAgASADTwRAIAEgA0cNASACDQJBACEGDAMLIAEgBGosAABBv39KDQELIAQgA0EAIAFByLLFABC7CQALAkAgAiADTwRAIAMhBiACIANHDQEMAgsgAiAEaiwAAEG/f0wNACACIQYMAQsgBCADIAIgA0HYssUAELsJAAsgBCAGaiEFIAMgBmshAyAECyECIANFBEAMAQsgACADNgIMIAAgBTYCCCAAIAE2AgQgACACNgIADwsgAEEANgIAIABBADoABAvbBQIKfwF+IwBBIGsiAyQAAn8CQAJAIAIEQANAIAEgBWosAABBAE4EQCAFQQFqIgUgAkcNAQwDCwsgA0EANgIQIANCgICAgBA3AwggA0EIakEAIAIQ7wUgAygCECEFIAEhByACIQgDQCAFIQYgBywAACIEQQBIBEAgBEH/AHFBAnQoApysSSEEC0EBQQJBAyAEQYAQSSIMGyAEQYABSSIJGyIKIAMoAgggBWtLBH8gA0EIaiAFIAoQ7wUgAygCEAUgBgsgAygCDGohBgJAIAlFBEAgBEEGdiEJIARBP3FBgH9yIQsgDARAIAYgCzoAASAGIAlBwAFyOgAADAILIAYgCzoAAiAGIAlBgAFyOgABIAYgBEEMdkHgAXI6AAAMAQsgBiAEOgAACyADIAUgCmoiBTYCECAHQQFqIQcgCEEBayIIDQALIAMpAwghDUEADAMLIANBADYCECADIAE2AgwMAQsgA0EIaiIGIAEgAhD7AiADKAIIRQ0AIAMgAykCDCINQiCIPgIYIAMgDT4CFCADIAI2AhAgAyABNgIMIAMgAjYCCEHY5sgAQSsgBkG4msgAQciayAAQ4AYACyACrSABrUIghoQhDSACIQVBAQshByANQiCIpyEEAkACQAJAAkACQAJAAkAgBSANpyIITw0AIAVFBEAgBEEEaygCACIGQXhxIgpBBEEIIAZBA3EiBhsgCGpJDQIgBkEAIAogCEEnaksbDQMgBBCiAkEBIQQMAQsgBCAIQQEgBRC7AiIERQ0DCyACRSAHcg0FIAFBBGsoAgAiB0F4cSIIQQRBCCAHQQNxIgcbIAJqSQ0DIAdBACAIIAJBJ2pLGw0EIAEQogIMBQtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgACAFNgIEIAAgBDYCACADQSBqJAALpAQBB38CQAJAIAAoAjgiBQRAIAAoAjQgBUECdEELakF4cSIBayIEQQRrKAIAIgJBeHEiAyABIAVqQQlqIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAiwhAiAAKAIwIgYEQCACIQEDQCABQawBaigCACIHBEAgAUGoAWooAgAiBUEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgB2pJDQMgA0EAIAQgB0EnaksbDQQgBRCiAgsgARDqAyABQbgBaiEBIAZBAWsiBg0ACwsgACgCKCIDBEAgAkEEaygCACIBQXhxIgQgA0G4AWwiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAQgA0EnaksbDQIgAhCiAgsgACgCTCIEBEAgACgCSCIDQQRrKAIAIgJBeHEiAUEEQQggAkEDcSICGyAEakkNASACQQAgASAEQSdqSxsNAiADEKICCwJAIAAoAmAiBEUNACAAKAJkIgNFDQAgBEEEaygCACICQXhxIgFBBEEIIAJBA3EiAhsgA2pJDQEgAkEAIAEgA0EnaksbDQIgBBCiAgsCQCAAQX9GDQAgACAAKAIEIgJBAWs2AgQgAkEBRw0AIABBBGsoAgAiAUF4cUHsAEHwACABQQNxIgIbSQ0BIAJBACABQZABTxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC6kTAxh/BX4BeyMAQSBrIhMkACABKQMQIAEpAxggAigCBCIWIAIoAggiGRCVBCEeIAEoAghFBEACQCABQRBqIRAjAEEgayIMJAACQAJAAkAgASgCDCIUQQFqIgQEQAJAIAEoAgQiCiAKQQFqIhFBA3YiCEEHbCIXIApBCEkbIgVBAXYgBEkEQAJAAkACQAJAAn8gBUEBaiIFIAQgBCAFSRsiBUEPTwRAIAVB/////wFLDQtBfyAFQQN0QQduQQFrZ3ZBAWoMAQtBBCAFQQhxQQhqIAVBBEkbCyIHrUIYfiIcQiCIpw0AIBynIgQgB0EIaiIIaiIFIARJIAVB+P///wdLcg0AIAUQcSIFRQ0BIAQgBWohCyAIBEAgC0H/ASAI/AsACyAHQQFrIg8gB0EDdkEHbCAPQQhJGyEVIAEoAgAhByAUDQJBACEUDAMLIAxBADYCGCAMQQE2AgwgDEHEtcQANgIIIAxCBDcCECAMQQhqQZi1xAAQjQgLAAsgC0EIaiEXIAdBGGshGCAHKQMAQn+FQoCBgoSIkKDAgH+DIR0gECkDCCEfIBApAwAhIEEAIQUgFCEGIAchCANAIB1QBEADQCAFQQhqIQUgCEEIaiIIKQMAQoCBgoSIkKDAgH+DIhxCgIGChIiQoMCAf1ENAAsgHEKAgYKEiJCgwIB/hSEdCyALIA8gICAfIBggHXqnQQN2IAVqIhBBaGxqIgRBBGooAgAgBEEIaigCABCVBKciCXEiBGopAABCgIGChIiQoMCAf4MiHFAEQEEIIQ0DQCAEIA1qIQQgDUEIaiENIAsgBCAPcSIEaikAAEKAgYKEiJCgwIB/gyIcUA0ACwsgHUIBfSAdgyEdIAsgHHqnQQN2IARqIA9xIgRqLAAAQQBOBEAgCykDAEKAgYKEiJCgwIB/g3qnQQN2IQQLIAQgC2ogCUEZdiIJOgAAIBcgBEEIayAPcWogCToAACALIARBf3NBGGxqIglBEGogByAQQX9zQRhsaiIEQRBqKQAANwAAIAkgBP0AAAD9CwAAIAZBAWsiBg0ACwsgASAPNgIEIAEgCzYCACABIBUgFGs2AgggCkUNASAKIApBGGxBH2pBeHEiBWpBCWoiBkUNASAHIAVrIgRBBGsoAgAiBUF4cSIIQQRBCCAFQQNxIgUbIAZqSQ0DIAVBACAIIAZBJ2pLGw0EIAQQogIMAQsgASARBH8gASgCACEJAkACQCAIIBFBB3FBAEdqIgZBAkkEQCAGIQgMAQsgBkEBcSEIIAZB/v///wNxIgdBA3QhDSAHIQQgCSEFA0AgBSAF/QADACIh/U1BB/3NAf0MAQEBAQEBAQEBAQEBAQEBAf1OICH9DH9/f39/f39/f39/f39/f3/9UP3OAf0LAwAgBUEQaiEFIARBAmsiBA0ACyAGIAdGDQELIAkgDWohBQNAIAUgBSkDACIcQn+FQgeIQoGChIiQoMCAAYMgHEL//v379+/fv/8AhHw3AwAgBUEIaiEFIAhBAWsiCA0ACwsCQCARQQhPBEAgCSARaiAJKQAANwAADAELIBFFDQAgCUEIaiAJIBH8CgAACyAJQQhqIQsgECkDCCEfIBApAwAhIEEBIQRBACEFA0AgBSEIIAQhBQJAIAggCWoiDy0AAEGAAUcNACAJIAhBf3NBGGxqIQ4gCSAIQWhsaiIEQRBrIRggBEEUayEQA0AgCiAgIB8gECgCACAYKAIAEJUEpyIVcSIHIQYgByAJaikAAEKAgYKEiJCgwIB/gyIdUARAQQghDQNAIAYgDWohBCANQQhqIQ0gCSAEIApxIgZqKQAAQoCBgoSIkKDAgH+DIh1QDQALCyAJIB16p0EDdiAGaiAKcSIGaiwAAEEATgRAIAkpAwBCgIGChIiQoMCAf4N6p0EDdiEGCyAGIAdrIAggB2tzIApxQQhPBEAgBiAJaiIELQAAIAQgFUEZdiIEOgAAIAsgBkEIayAKcWogBDoAACAJIAZBf3NBGGxqIQZB/wFGBEAgD0H/AToAACALIAogCEEIa3FqQf8BOgAAIAZBEGogDkEQaikAADcAACAGIA79AAAA/QsAAAwDCyAOKQAAIRwgDiAGKQAANwAAIAYgHDcAACAGKQAIIRwgBiAOKQAINwAIIA4gHDcACCAOKAAQIQcgDiAGKAAQNgAQIAYoABQhBCAGIA4oABQ2ABQgDiAENgAUIAYgBzYAEAwBCwsgDyAVQRl2IgQ6AAAgCyAKIAhBCGtxaiAEOgAACyAFIAUgEUkiCGohBCAIDQALIAogFyAKQQhJGwVBAAsgFGs2AggLIAxBIGokAAwECwwCC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgDEEANgIYIAxBATYCDCAMQcS1xAA2AgggDEIENwIQIAxBCGpBmLXEABCNCAALCyABKAIEIgggHqdxIQcgHkIZiCIfQv8Ag0KBgoSIkKDAgAF+ISAgASgCACEEA0ACQAJAAkACQAJAAkAgBCAHaikAACIeICCFIhxCf4UgHEKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIcUEUEQANAIAQgHHqnQQN2IAdqIAhxQWhsaiIFQRBrKAIAIBlGBEAgFiAFQRRrKAIAIBkQ2wdFDQMLIBxCAX0gHIMiHFBFDQALCyAeQoCBgoSIkKDAgH+DIRwgGkUEQCAcUA0DIBx6p0EDdiAHaiAIcSESCyAcIB5CAYaDUARAQQEhGgwGCyAEIBJqLAAAIgdBAE4EQCAEIAQpAwBCgIGChIiQoMCAf4N6p0EDdiISai0AACEHCyAEIBJqIB+nQf8AcSIFOgAAIAQgEkEIayAIcWpBCGogBToAACATQRBqIgUgAkEIaigCADYCACATQRxqIANBCGooAgA2AgAgASABKAIIIAdBAXFrNgIIIAEgASgCDEEBajYCDCAEIBJBaGxqQRhrIgEgAikCADcCACATIAMpAgA3AhQgAUEIaiAFKQMANwIAIAFBEGogE0EYaikDADcCACAAQYCAgIB4NgIADAELIAAgBUEMayIBKQIANwIAIAEgAykCADcCACAAQQhqIAFBCGoiACgCADYCACAAIANBCGooAgA2AgAgAigCACICRQ0AIBZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0CIABBACABIAJBJ2pLGw0DIBYQogILIBNBIGokAA8LQQAhGgwCC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgG0EIaiIbIAdqIAhxIQcMAAsAC44FAgx/A34jAEGgAWsiCCQAIAhBAEGgAfwLAAJAAkAgAiAAKAKgASIFTQRAIAVBKU8NAiAFQQFqIQwgBUECdCEJIAEgAkECdGohDQJAA0AgCCAGQQJ0aiEDA0AgBiECIAMhBCABIA1GDQQgA0EEaiEDIAJBAWohBiABKAIAIQcgAUEEaiILIQEgB0UNAAsgB60hEUIAIQ8gCSEHIAIhASAAIQMDQCABQShPDQIgBCAPIAQ1AgB8IAM1AgAgEX58IhA+AgAgEEIgiCEPIARBBGohBCABQQFqIQEgA0EEaiEDIAdBBGsiBw0ACwJAIAogEEKAgICAEFoEfyACIAVqIgFBKE8NASAIIAFBAnRqIA8+AgAgDAUgBQsgAmoiASABIApJGyEKIAshAQwBCwsgAUEoQYyDwgAQjAcACyABQShBjIPCABCMBwALIAJBAWohDSACQQJ0IQwgACAFQQJ0aiEOIAAhAwJAA0AgCCAHQQJ0aiEGA0AgByELIAYhBCADIA5GDQMgBEEEaiEGIAdBAWohByADKAIAIQkgA0EEaiIFIQMgCUUNAAsgCa0hEUIAIQ8gDCEJIAshAyABIQYDQCADQShPDQIgBCAPIAQ1AgB8IAY1AgAgEX58IhA+AgAgEEIgiCEPIARBBGohBCADQQFqIQMgBkEEaiEGIAlBBGsiCQ0ACwJAIAogEEKAgICAEFoEfyACIAtqIgNBKE8NASAIIANBAnRqIA8+AgAgDQUgAgsgC2oiAyADIApJGyEKIAUhAwwBCwsgA0EoQYyDwgAQjAcACyADQShBjIPCABCMBwALIAAgCEGgAfwKAAAgACAKNgKgASAIQaABaiQADwtBACAFQShBjIPCABDqBwALpQUCBX8EfgJAAkACQAJAAkAgAkUEQEEBIQUMAQsgAhBxIgVFDQEgBUEEay0AAEEDcUUgAkVyDQAgBUEAIAL8CwALIAEoAgQiA60hCCADQv////8PIAEpAwgiCSAJQv////8PWhunayIEQQAgAyAETxsgAk8EQCABKAIAIAkgCCAIIAlWG6dqIQMgAkEBRwRAIAJFDQMgBSADIAL8CgAADAMLIAUgAy0AADoAAAwCC0GokMgAKQMAIgtCCIghCiALpyEDIAtC/wGDQgRSDQMMAgsAC0EEIQMLIAkgAq18IQgLIAEgCDcDCAJAAkACQAJAIANB/wFxIgZBBEcEQCAKQhiIpyEBIAqnIgchBAJAAkACQAJAIAZBAWsOAwEAAgMLIAEtAAghBAsgBEH/AXFBJUcNASAAQTI2AgggAEHfi8EANgIEIABBgICAgHg2AgAMBAsgAS0ACEElRg0CCyAAIAE2AgggAEGBgICAeDYCACAAIANB/wFxIAdBCHRyNgIEDAILIAAgAjYCCCAAIAU2AgQgAEGGgICAeDYCAA8LIABBMjYCCCAAQd+LwQA2AgQgAEGAgICAeDYCACABKAIAIQAgAUEEaigCACIDKAIAIgQEQCAAIAQRAwALIAMoAgQiAwRAIABBBGsoAgAiBEF4cSIGQQRBCCAEQQNxIgQbIANqSQ0CIARBACAGIANBJ2pLGw0DIAAQogILIAFBBGsoAgAiAEF4cSIDQRBBFCAAQQNxIgAbSQ0BIABBACADQTRPGw0CIAEQogILIAIEQCAFQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyACakkNASAAQQAgASACQSdqSxsNAiAFEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC40EAQd/AkACQCAAKAIAIgEEQCAAKAIEIgRBBGsoAgAiAkF4cSIDIAFBJGwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgCECECIAAoAhQiBQRAIAIhAQNAIAFBFGooAgAiBEEFTwRAIAFBCGooAgAiBkEEaygCACIDQXhxIgcgBEECdCIEQQRBCCADQQNxIgMbakkNAyADQQAgByAEQSdqSxsNBCAGEKICCyABQRhqIQEgBUEBayIFDQALCyAAKAIMIgMEQCACQQRrKAIAIgFBeHEiBCADQRhsIgNBBEEIIAFBA3EiARtqSQ0BIAFBACAEIANBJ2pLGw0CIAIQogILIAAoAhgiAQRAIAAoAhwiBEEEaygCACICQXhxIgMgAUESbCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAIkIgEEQCAAKAIoIgRBBGsoAgAiAkF4cSIDIAFBHmwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgCMCICBEAgACgCNCIDQQRrKAIAIgBBeHEiASACQSpsIgJBBEEIIABBA3EiABtqSQ0BIABBACABIAJBJ2pLGw0CIAMQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALjQQBB38CQAJAIAAoAgAiAQRAIAAoAgQiBEEEaygCACICQXhxIgMgAUEYbCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAIQIQIgACgCFCIFBEAgAiEBA0AgAUEUaigCACIEQQVPBEAgAUEIaigCACIGQQRrKAIAIgNBeHEiByAEQQJ0IgRBBEEIIANBA3EiAxtqSQ0DIANBACAHIARBJ2pLGw0EIAYQogILIAFBGGohASAFQQFrIgUNAAsLIAAoAgwiAwRAIAJBBGsoAgAiAUF4cSIEIANBGGwiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAQgA0EnaksbDQIgAhCiAgsgACgCGCIBBEAgACgCHCIEQQRrKAIAIgJBeHEiAyABQQlsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAiQiAQRAIAAoAigiBEEEaygCACICQXhxIgMgAUEPbCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAIwIgIEQCAAKAI0IgNBBGsoAgAiAEF4cSIBIAJBFWwiAkEEQQggAEEDcSIAG2pJDQEgAEEAIAEgAkEnaksbDQIgAxCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvLBQIGfwN+IwBBgAFrIgQkACABvCEGAn9BAyABi0MAAIB/Ww0AGkECIAZBgICA/AdxIgVBgICA/AdGDQAaIAZB////A3EiCEGAgIAEciAGQQF0Qf7//wdxIAZBF3ZB/wFxIgcbIgmtIgpCAYMhCyAFRQRAQQQgCEUNARogB0GWAWshB0IBIQwgC1AMAQtCgICAECAKQgGGIAlBgICABEYiCBshCkICQgEgCBshDEHofkHpfiAIGyAHaiEHIAtQCyEFIAQgBzsBeCAEIAw3A3AgBEIBNwNoIAQgCjcDYCAEIAU6AHoCfwJAAkACQAJAAkAgBUH/AXFBAU0EQCADQf//A3EhA0Hqs8UAQQEgBkEASCIFGyEHQeqzxQBByIHCACAFGyEFIAZBH3YhBiAEQSBqIARB4ABqIARBD2oQzwEgBCgCIEUNASAEQdgAaiAEQShqKAIANgIAIAQgBCkCIDcDUAwCCyAFQf8BcSIIQQJGDQJBASEFQeqzxQBByIHCACAGQQBIIgcbQeqzxQBBASAHGyACGyEHQQEgBkEfdiACGyEGIAhBBEcNA0ECIQUgBEECOwEgIANB//8DcQ0EQQEhBSAEQQE2AiggBEGYsMUANgIkIARBIGoMBQsgBEHQAGogBEHgAGogBEEPahBXCyAFIAcgAhshB0EBIAYgAhshBiAEIAQoAlAgBCgCVCAELwFYIAMgBEEgahDsBCAEKAIEIQUgBCgCAAwDCyAEQQM2AiggBEHzncYANgIkIARBAjsBIEEBIQdBACEGQQEhBSAEQSBqDAILIARBAzYCKCAEQeydxgA2AiQgBEECOwEgIARBIGoMAQsgBEEBNgIwIARBADsBLCAEQQI2AiggBEG5g8IANgIkIARBIGoLIQIgBCAFNgJcIAQgAjYCWCAEIAY2AlQgBCAHNgJQIAAgBEHQAGoQvgMgBEGAAWokAAv3BAEIfwJAIAMtAAMiByADLQAEIgtrIgggCEEfdSIIcyAIa0EBdCADLQACIgggAy0ABSIKayIEIARBH3UiBXMgBWtBAXZqIAJB/wFxSw0AIAFB/wFxIgEgAy0AACADLQABIgJrIgUgBUEfdSIFcyAFa0kNACABIgUgAiAIayIGIAZBH3UiBnMgBmtB/wFxSQ0AIAUgCCAHayIGIAZBH3UiBnMgBmsiBkH/AXFJDQAgBSADLQAHIAMtAAYiBWsiCSAJQR91IglzIAlrSQ0AIAEgBSAKayIJIAlBH3UiCXMgCWtB/wFxSQ0AIAEgCiALayIBIAFBH3UiAXMgAWsiAUH/AXFJDQAgAEH/AXEiACAGQf8BcU8gAUH/AXEgAE1xRQRAQQEgAxDiBRoPCyADQf8BIAVB/wBBgH8gCyAHa0EDbEH/AEGAfyAEIARBgH9MGyIAIABB/wBOG2oiACAAQYB/TBsiACAAQf8AThsiAEEJbEE/akEHdSIBayIEQQAgBEEAShsiBCAEQf8BThs6AAYgA0H/AEGAfyAKIABBEmxBP2pBB3UiCmtBgAFrIgQgBEGAf0wbIgQgBEH/AE4bQYABczoABSADQf8AQYB/IAcgAEEbbEE/akEHdSIAakGAAWsiByAHQYB/TBsiByAHQf8AThtBgAFzOgADIANB/wBBgH8gCyAAa0GAAWsiACAAQYB/TBsiACAAQf8AThtBgAFzOgAEIANB/wBBgH8gCCAKakGAAWsiACAAQYB/TBsiACAAQf8AThtBgAFzOgACIANB/wBBgH8gASACakGAAWsiACAAQYB/TBsiACAAQf8AThtBgAFzOgABCwvDBQIHfwF7IwBB0NEAayIDJABBASEHAkACQAJAIAJBAXQiBEEATgRAAkAgAkUNACAEEHEiB0UNAiAHQQRrLQAAQQNxRSAERXINACAHQQAgBPwLAAsgAyAENgIMIAMgBzYCCCADIAQ2AgRBhNIAEHEiBUUNASAFQQA2AuRRIAVB6NEAakEAOwEAIANBkM8AakEAQcAC/AsAIAVB/NEAakEANgAAIAX9DAAAAAAAAAAAAAAAAAAAAAD9CwDtUSADQRBqIgZBAEGAzwD8CwAgBSAGQcDRAPwKAAAgBUHg0QBqQQA2AgAgBUHQ0QBqIAr9CwIAIAUgCv0LAsBRIAVBADoAgFIgBUEAOgDsUSAFQQA7AepRA0AgA0EQaiAFIAEgAiAHIAQgCEEEEEQgAygCGCAIaiEIIAMtABQiBkECRwRAIAYEQCAAIAMpAgQ3AgAgACAGOgAMIABBCGogA0EMaigCADYCAAwGCyAEIAhPBEAgAyAINgIMCyAAIAMpAgQ3AgQgAEGAgICAeDYCACAAQQxqIANBDGooAgA2AgAMBQsgAiADKAIQIgZJDQMgASAGaiEBIAIgBmshAiADIAQEfyAEIQYgAygCBCAEayAESQRAIANBBGogBCAEEPgFIAMoAgghByADKAIMIQYLIAYgB2ohCSAEQQFHBH8gBEEBayIEBEAgCUEAIAT8CwALIAcgBCAGaiIGagUgCQtBADoAACAGQQFqBSAEQQF0CyIENgIMDAALAAtBwPzEABD/BwsACyAAIAMpAgQ3AgAgAEECOgAMIABBCGogA0EMaigCADYCAAsCQCAFQQRrKAIAIgBBeHEiAUGI0gBBjNIAIABBA3EiABtPBEAgAEEAIAFBrNIATxsNASAFEKICIANB0NEAaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALowUBCH8CQAJAAkACQAJAAkACQCABIAIgAyAEIAUgBhDAAwRAIAUgBkEBdCIIayIBIARPDQIgBSAGayICIARPDQMgAEH/AXEiDCABIANqIgotAAAiASACIANqIgstAAAiAmsiByAHQR91IgdzIAdrSQ0GIAUgBmoiByAETw0EIAQgBU0NBSAMIAMgB2oiDS0AACIHIAMgBWoiDi0AACIJayIAIABBH3UiAHMgAGtJDQYgBkF9bCAFaiIAIARPDQcgBSAIaiIFIARPDQEgACADaiIELQAAIQYgAyAFaiIDLQAAIQUgDkH/AEGAfyAJQf8AQYB/IAkgAmtBA2xB/wBBgH8gASAHayIAIABBgH9MGyIAIABB/wBOG2oiACAAQYB/TBsiACAAQf8AThsiAEEbbEE/akEHdSIJa0GAAWsiCCAIQYB/TBsiCCAIQf8AThtBgAFzOgAAIAtB/wBBgH8gAiAJakGAAWsiAiACQYB/TBsiAiACQf8AThtBgAFzOgAAIA1B/wBBgH8gByAAQRJsQT9qQQd1IgJrQYABayIHIAdBgH9MGyIHIAdB/wBOG0GAAXM6AAAgCkH/AEGAfyABIAJqQYABayIBIAFBgH9MGyIBIAFB/wBOG0GAAXM6AAAgA0H/AEGAfyAFIABBCWxBP2pBB3UiAGtBgAFrIgEgAUGAf0wbIgEgAUH/AE4bQYABczoAACAEQf8AQYB/IAAgBmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAAsPCyAFIARB2NfEABCMBwALIAEgBEHo18QAEIwHAAsgAiAEQfjXxAAQjAcACyAHIARBiNjEABCMBwALIAUgBEGY2MQAEIwHAAtBASADIAQgBSAGEOgEGg8LIAAgBEHI18QAEIwHAAvMBQIGfwJ+AkAgAkUNACACQQdrIgNBACACIANPGyEHIAFBA2pBfHEgAWshCEEAIQMDQAJAAkACQCABIANqLQAAIgXAIgZBAE4EQCAIIANrQQNxDQEgAyAHTw0CA0AgASADaiIEQQRqKAIAIAQoAgByQYCBgoR4cQ0DIANBCGoiAyAHSQ0ACwwCC0KAgICAgCAhCkKAgICAECEJAkACQAJ+AkACQAJAAkACQAJAAkACQAJAIAUtAPSWQkECaw4DAAECCgsgA0EBaiIEIAJJDQJCACEKQgAhCQwJC0IAIQogA0EBaiIEIAJJDQJCACEJDAgLQgAhCiADQQFqIgQgAkkNAkIAIQkMBwsgASAEaiwAAEG/f0oNBgwHCyABIARqLAAAIQQCQAJAIAVB4AFrIgUEQCAFQQ1GBEAMAgUMAwsACyAEQWBxQaB/Rg0EDAMLIARBn39KDQIMAwsgBkEfakH/AXFBDE8EQCAGQX5xQW5HDQIgBEFASA0DDAILIARBQEgNAgwBCyABIARqLAAAIQQCQAJAAkACQCAFQfABaw4FAQAAAAIACyAGQQ9qQf8BcUECSyAEQUBOcg0DDAILIARB8ABqQf8BcUEwTw0CDAELIARBj39KDQELIAIgA0ECaiIETQRAQgAhCQwFCyABIARqLAAAQb9/Sg0CQgAhCSADQQNqIgQgAk8NBCABIARqLAAAQUBIDQVCgICAgIDgAAwDC0KAgICAgCAMAgtCACEJIANBAmoiBCACTw0CIAEgBGosAABBv39MDQMLQoCAgICAwAALIQpCgICAgBAhCQsgACAKIAOthCAJhDcCBCAAQQE2AgAPCyAEQQFqIQMMAgsgA0EBaiEDDAELIAIgA00NAANAIAEgA2osAABBAEgNASACIANBAWoiA0cNAAsMAgsgAiADSw0ACwsgACACNgIIIAAgATYCBCAAQQA2AgALiwUCB38CewJAAn8CQCABKAIgIgUgA00EQCACIANqIgggBWshByADIAVIBEAgAiEEDAILIAH9AAQQIQsgAf0ABAAhDCABLQAlIQkgAS0AJCEGIAIhBANAIAQgBmr9AAAAIAz9IyAEIAlq/QAAACAL/SP9Tv1kIgoEQCAKaCAEIAJragwECyAHIARBEGoiBE8NAAsMAQsgA0UNAiABLQA0IQUCQAJAAkAgA0EETwRAQYCChAggBUGBgoQIbCIHIAIoAABzIgRrIARyQYCBgoR4cUGAgYKEeEcEQCACIQQDQCAFIAQtAABGDQUgBEEBaiEEIANBAWsiAw0ACwwHCyACQQQgAkEDcSIIayIGaiEEIANBCUkNASAEIAIgA2oiA0EIayIISw0CA0BBgIKECCAEKAIAIAdzIgZrIAZyQYCBgoR4cUGAgYKEeEcNA0GAgoQIIARBBGooAgAgB3MiBmsgBnJBgIGChHhxQYCBgoR4Rw0DIARBCGoiBCAITQ0ACwwCCyAFIAIiBC0AAEYNAiADQQFGDQUgBC0AASAFRgRAIARBAWohBAwDCyADQQJGDQUgBSACLQACRw0FIAJBAmohBAwCCyADIAZNDQQgAyAIakEEayEDA0AgBSAELQAARg0CIARBAWohBCADQQFrIgMNAAsMBAsgAyAETQ0DA0AgBSAELQAARg0BIARBAWoiBCADRw0ACwwDCyAEIAJrIgIgAS0ANWsiAUEAIAEgAk0bDAELQQAhCSAEIAhPDQEgByABLQAkav0AAAAgAf0ABAD9IyAHIAEtACVq/QAAACAB/QAEEP0j/U79ZCIERQ0BIARoIAMgBWtqCyEEQQEhCQsgACAENgIEIAAgCTYCAAuLBQEQfyMAQRBrIgokAAJAIAEoAhAiBiABKAIMIgNJDQAgBiABKAIIIg5LDQAgASgCBCELIAFBFGoiECABLQAYIgdqQQFrLQAAIQgCQCAHQQVPBEADQCADIAtqIQQCQCAGIANrIgVBB00EQCADIAZGDQRBACECA0AgAiAEai0AACAIRg0CIAUgAkEBaiICRw0ACwwECyAKQQhqIAggBCAFEIcFIAooAghBAXFFDQMgCigCDCECCyABIAIgA2pBAWoiAzYCDCADIA5NIAMgB09xRQRAIAMgBk0NAQwECwtBACAHQQRB5LjHABDqBwALIAhBgYKECGwhDwNAIAMgC2ohBQJAAkACQAJAIAYgA2siCUEITwRAIAVBA2pBfHEiAiAFRg0BIAIgBWshBEEAIQIDQCACIAVqLQAAIAhGDQUgBCACQQFqIgJHDQALIAQgCUEIayICSw0DDAILIAMgBkYNBUEAIQIDQCACIAVqLQAAIAhGDQQgAkEBaiICIAlHDQALDAULIAlBCGshAkEAIQQLA0BBgIKECCAEIAVqIgwoAgAgD3MiEWsgEXJBgIKECCAMQQRqKAIAIA9zIgxrIAxycUGAgYKEeHFBgIGChHhHDQEgBEEIaiIEIAJNDQALCyAEIAlGDQIgBCAFaiEFIAYgBGsgA2shCUEAIQIDQCAIIAIgBWotAABHBEAgAkEBaiICIAlHDQEMBAsLIAIgBGohAgsgASACIANqQQFqIgM2AgwCQCADIAdJIAMgDktyRQRAIAsgAyAHayICaiAQIAcQ2wdFDQELIAMgBk0NAQwDCwsgACADNgIIIAAgAjYCBEEBIQ0MAQsgASAGNgIMCyAAIA02AgAgCkEQaiQAC7oEAQR/AkACQAJAAkACQAJAAkACQAJAAkBBFSAAKAIAIgRBgICAgHhzIARBAE4bDhUHBwcHBwcHBwcHBwcBBwIHBwMHBAUACyAAKAIEIQIgACgCCCIABEAgAiEBA0AgARD+AiABQRBqEP4CIAFBIGohASAAQQFrIgANAAsLIARFDQYgAkEEaygCACIAQXhxIgMgBEEFdCIBQQRBCCAAQQNxIgAbckkNCCAARQ0FIAMgAUEnaksNBwwFCyAAKAIEIgNFDQUgACgCCCICQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNByAARSABIANBJ2pNcg0EDAYLIAAoAgQiA0UNBCAAKAIIIgJBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0GIABFIAEgA0Enak1yDQMMBQsgACgCBCICEP4CIAJBBGsoAgAiAUF4cUEUQRggAUEDcSIAG0kNBSAARSABQThJcg0CDAQLIAAoAgQiAhD+AiACQQRrKAIAIgFBeHFBFEEYIAFBA3EiABtJDQQgAEUgAUE4SXINAQwDCyAAKAIIIQIgACgCDCIDBEAgAiEBA0AgARD+AiABQRBqIQEgA0EBayIDDQALCyAAKAIEIgFFDQEgAkEEaygCACIAQXhxIgMgAUEEdCIBQQRBCCAAQQNxIgAbckkNAyAARSADIAFBJ2pNcg0ADAILIAIQogILDwtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALtAUCB38BeyAFQQNuIQwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQRAIAFBAnQiChBxIglFDQUCQCABQQRPBEAgACEIIAkhByABQXxxIgshBgNAIAcgCP0AAgAiDf0fABCJBP0TIA39HwEQiQT9IAEgDf0fAhCJBP0gAiAN/R8DEIkE/SAD/QsCACAIQRBqIQggB0EQaiEHIAZBBGsiBg0ACyABIAtGDQELIAEgC2shBiAAIAtBAnQiB2ohCCAHIAlqIQcDQCAHIAgqAgAQiQQ4AgAgCEEEaiEIIAdBBGohByAGQQFrIgYNAAsLIAVBA08NAQwCC0EEIQkgBUEDSQ0CC0EAIQhBACEHA0AgAyAITQ0HIAEgAiAIaiIALQAAIgZNDQggBSAHTQ0JIAQgCSAGQQJ0aioCADgCACAIQQFqIgYgA08NCiABIABBAWotAAAiBk0NCyAHQQFqIgogBU8NDCAEQQRqIAkgBkECdGoqAgA4AgAgCEECaiIGIANPDQ0gASAAQQJqLQAAIgBNDQ4gB0ECaiIGIAVPDQMgBEEIaiAJIABBAnRqKgIAOAIAIAhBBGohCCAEQQxqIQQgB0EDaiEHIAxBAWsiDA0ACyABQQJ0IQoLIAlBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIApqSQ0DIABBACABIApBJ2pLGw0EIAkQogILDwsgBiAFQbD2xwAQjAcLAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAggA0Gw9ccAEIwHAAsgBiABQcD1xwAQjAcACyAHIAVB0PXHABCMBwALIAYgA0Hg9ccAEIwHAAsgBiABQfD1xwAQjAcACyAKIAVBgPbHABCMBwALIAYgA0GQ9scAEIwHAAsgACABQaD2xwAQjAcAC6QFAwd/AX4BbyMAQTBrIgMkAAJAAn8CQCAAKAIAIgQlAUGBCCUBECNFBEBBAiAEELoKIgVBAEcgBUH///8HRiIFGyEIQQEhByAFDQFBAAwCCyADQQc6ABggA0EYaiABIAIQ0AUhAAwCCyADQRhqIAQQrwogAygCGARAIAMpAyAhCkEDDAELIANBGGogBCUBECQgAygCGCIFBEAgAygCHCIErSEKQQAhB0EFDAELAkACQCAEJQEQJQRAIANBGGogBBCrBiADKQIcIQogAygCGCEGDAELIAQlARAmRQ0BIAQlARAnIQsQ2gQiBCALJgEgA0EYaiAEEKsGIAMpAhwhCiADKAIYIQYgBEGECEkNACAEEJsHCyAGQYCAgIB4Rg0AIAqnIQVBASEJIApCIIghCkEGDAELIAMgAK1CgICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//A3FJBEAgAiABayEFQQAhAUEAIQICQAJAAkAgB0EddkEDcUEBaw4DAAEAAgsgBSECDAELIAVB/v8DcUEBdiECCyAHQf///wBxIQggACgCBCEGIAAoAgAhBANAIAFB//8DcSACQf//A3FPDQIgAUEBaiEBIAQgCCAGKAIQEQIARQ0ACwwCCyAAKAIAIAAoAgQgAxChAyEBIAAgCTcCCAwCCyAEIAYgAxChAw0AIAUgAmtB//8DcSEFQQAhAgNAIAUgAkH//wNxTQRAQQAhASAAIAk3AggMAwtBASEBIAJBAWohAiAEIAggBigCEBECAEUNAAsgACAJNwIIDAELQQEhAQsgA0EQaiQAIAELogQBB38jAEHQAGsiAiQAIAAgAToAbCAAKAIYIQMgAEGAgICAeDYCGAJAAkAgA0GAgICAeEcEQCACQRxqIABBJGr9AAIA/QsCACACQSxqIABBNGr9AAIA/QsCACACQTxqIABBxABq/QACAP0LAgAgAkHMAGogAEHUAGooAgA2AgAgAiADNgIQIAIgACkCHDcCFCACQQhqIAEgAkEQahDgAgJAIAIoAggiASAAKAIEIAAoAgggAigCDCIDKAIQEQAAIggEQCADKAIAIgAEQCABIAARAwALIAMoAgQiAEUNASABQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyAAakkNAyADQQAgBSAAQSdqSxsNBCABEKICDAELIABBADYCCCAAKAJYIgVBgICAgHhyQYCAgIB4RwRAIAAoAlwiBkEEaygCACIEQXhxIgdBBEEIIARBA3EiBBsgBWpJDQMgBEEAIAcgBUEnaksbDQQgBhCiAgsgAEGAgICAeDYCWAJAIAAoAmQiBUUNACAAKAJoIgYoAgAiBARAIAUgBBEDAAsgBigCBCIGRQ0AIAVBBGsoAgAiBEF4cSIHQQRBCCAEQQNxIgQbIAZqSQ0DIARBACAHIAZBJ2pLGw0EIAUQogILIAAgAzYCaCAAIAE2AmQLIAJB0ABqJAAgCA8LQezgwQAQ3QkAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuGBAEHfwJAAkACQAJAAkACQAJAIAMgBCAFayIGSwRAIAMgBE0NASAEIAVBAXQiCmsiCCADTw0CIAQgBWoiByADTw0DAkAgAiAGai0AACILIAIgBGotAAAiDGsiBiAGQR91IgZzIAZrQQF0Qf4DcSACIAhqLQAAIgYgAiAHai0AACIIayIHIAdBH3UiB3MgB2tBAXZqIAFB/wFxSw0AIAQgBUECdGsiASADTw0FIAQgBUEDbCIHayIFIANPDQYgAEH/AXEiACABIAJqLQAAIAIgBWotAAAiAWsiBSAFQR91IgVzIAVrSQ0AIAAgASAGayIBIAFBH3UiAXMgAWtB/wFxSQ0AIAYgC2siASABQR91IgFzIAFrQf8BcSAASw0AIAQgB2oiASADTw0HIAQgCmoiBCADTw0IIAAiAyABIAJqLQAAIAIgBGotAAAiAWsiAiACQR91IgJzIAJrSQ0AIAMgASAIayIBIAFBH3UiAXMgAWtB/wFxSQ0AIAggDGsiACAAQR91IgBzIABrQf8BcSADTSEJCyAJDwsgBiADQYjXxAAQjAcACyAEIANBmNfEABCMBwALIAggA0Go18QAEIwHAAsgByADQbjXxAAQjAcACyABIANByNbEABCMBwALIAUgA0HY1sQAEIwHAAsgASADQejWxAAQjAcACyAEIANB+NbEABCMBwALuAQBCH8jAEEQayIDJAAgAyABNgIEIAMgADYCACADQqCAgIAONwIIAn8CQAJAAkAgAigCECIJBEAgAigCFCIADQEMAgsgAigCDCIARQ0BIAIoAggiASAAQQN0IgBqIQQgAEEIa0EDdkEBaiEGIAIoAgAhAANAAkAgAEEEaigCACIFRQ0AIAMoAgAgACgCACAFIAMoAgQoAgwRAABFDQBBAQwFC0EBIAEoAgAgAyABQQRqKAIAEQIADQQaIABBCGohACAEIAFBCGoiAUcNAAsMAgsgAEEYbCEKIABBAWtB/////wFxQQFqIQYgAigCCCEEIAIoAgAhAANAAkAgAEEEaigCACIBRQ0AIAMoAgAgACgCACABIAMoAgQoAgwRAABFDQBBAQwEC0EAIQdBACEIAkACQAJAIAUgCWoiAUEIai8BAEEBaw4CAQIACyABQQpqLwEAIQgMAQsgBCABQQxqKAIAQQN0ai8BBCEICwJAAkACQCABLwEAQQFrDgIBAgALIAFBAmovAQAhBwwBCyAEIAFBBGooAgBBA3RqLwEEIQcLIAMgBzsBDiADIAg7AQwgAyABQRRqKAIANgIIQQEgBCABQRBqKAIAQQN0aiIBKAIAIAMgASgCBBECAA0DGiAAQQhqIQAgBUEYaiIFIApHDQALDAELCwJAIAYgAigCBE8NACADKAIAIAIoAgAgBkEDdGoiACgCACAAKAIEIAMoAgQoAgwRAABFDQBBAQwBC0EACyADQRBqJAALpQQCBX8EfSABKAIAIgIgASgCBEYEf0EABSABIAJBBGo2AgACfwJAIAIoAgAiAiABKAIIIgEoAggiA0kEQCABKAIEIAJBGGxqIgJBEWovAAAgAkETai0AACIDQRB0ciIEQQh2IQVDAAAQQSABKgJIIAEtAFhBAkYiBhshCEMAAEDBIAEqAkQgBhshByAEQf8BcQRAIAcgCCAHk0MAAH5DlSAEQQFrQf8BcbOUkhCJBCEJCyAFQf8BcQRAIAcgCCAHk0MAAH5DlSAFQQFrQf8BcbOUkhCJBCEKCyADBH0gByAIIAeTQwAAfkOVIANBAWtB/wFxs5SSEIkEBUMAAAAACyEHIAJBDGovAQAiAkH//wFxRQRAIAJBEHQMAwsgAkH/B3EhASACQYCAAnEhAyACQYD4AXEiAkGA+AFGBEAgA0EQdCICQYCAgPwHciABRQ0DGiACIAFBDXRyQYCAgP4HcgwDCyADQRB0IQMgAkUNASACQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogA3IMAgsgAiADQdy7xwAQjAcACyABIAFnQRBrIgFB//8DcUEIanRB////A3EgA0GAgIDYA3IgAUEXdGtyCyEBIAkgCpRDj8LNPxC3CiEIIAkgB5RDj8LNPxC3CiEJIAogB5RDj8LNPxC3CiAIIAmSkkMAAEBAlUPmQB8/ELcKQ9sPSUGUIAG+lCEHQQELIQEgACAHOAIEIAAgATYCAAu8BAMBfg5/AXsjAEEgayIEJAAgAf0AAxAhEQJAAkACfyABKAIEIgpFBEBB6JrIACELQQAhCkEADAELAkACQAJAIApBAWqtQhR+IgJCIIinDQAgAqdBB2pBeHEiBSAKQQlqIghqIgMgBUkgA0H4////B0tyDQAgAw0BQQghAwwCCyAEQQA2AhggBEEBNgIMIARBxLXEADYCCCAEQgQ3AhAgBEEIakGYtcQAEI0IDAQLIAMQcSIDRQ0DCyADIAVqIQsgASgCACEJIAgEQCALIAkgCPwKAAALIAEoAgwiDQRAIAtBFGshECAJQQhqIQMgCSkDAEJ/hUKAgYKEiJCgwIB/gyECIA0hCCAJIQUDQCACUARAA0AgBUGgAWshBSADKQMAIANBCGohA0KAgYKEiJCgwIB/gyICQoCBgoSIkKDAgH9RDQALIAJCgIGChIiQoMCAf4UhAgsgCSAFIAJ6p0EDdkFsbGoiDGtBbG0hBiAMQQxrKAIAIgdBAEgNAyAMQRBrKAIAIQ4CQCAHRQRAQQEhDwwBCyAHEHEiD0UNBQsgBwRAIA8gDiAH/AoAAAsgAkIBfSACgyECIAxBCGsoAgAhDiAQIAZBFGxqIgYgDEEEay0AADoAECAGIA42AgwgBiAHNgIIIAYgDzYCBCAGIAc2AgAgCEEBayIIDQALCyABKAIICyEDIAAgDTYCDCAAIAM2AgggACAKNgIEIAAgCzYCACAAIBH9CwMQIARBIGokAA8LQaTvwQAQ/wcACwALvgQBBn8jAEEwayIDJAAgAyACNgIIIAMgATYCBCADQSBqIANBBGoQ7QMCQAJAAkAgAygCICIGBEAgAygCJCEBIAMoAixFBEAgACABNgIIIAAgBjYCBCAAQYCAgIB4NgIADAQLIAJBAEgNAQJAIAJFBEBBASEEDAELIAIQcSIERQ0DCyADQQA2AhQgAyAENgIQIAMgAjYCDCABIAJLBEAgA0EMakEAIAEQ9wUgAygCECEEIAMoAhQhBSADKAIMIQILIAEEQCAEIAVqIAYgAfwKAAALIAMgASAFaiIBNgIUIAIgAWtBAk0EQCADQQxqIAFBAxD3BSADKAIQIQQgAygCFCEBCyABIARqIgJBxPnHAC8AACIFOwAAIAJBAmpBxvnHAC0AACIGOgAAIAMgAUEDaiICNgIUIAMgAykCBDcCGANAAkAgA0EgaiADQRhqEO0DIAMoAiAiB0UNACADKAIsIAMoAiQiASADKAIMIAJrSwRAIANBDGogAiABEPcFIAMoAhAhBCADKAIUIQILIAEEQCACIARqIAcgAfwKAAALIAMgASACaiICNgIURQ0BIAMoAgwgAmtBAk0EQCADQQxqIAJBAxD3BSADKAIQIQQgAygCFCECCyACIARqIgEgBTsAACABQQJqIAY6AAAgAyACQQNqIgI2AhQMAQsLIAAgAykCDDcCACAAQQhqIANBFGooAgA2AgAMAwsgAEEANgIIIABCgICAgBg3AgAMAgtBlO7BABD/BwsACyADQTBqJAAL2QQDBX8BewZ9IwBBEGsiBSQAAkACQAJAAkAgA0ECdCIGQf////8DSw0AIANBBHQiB0H9////B08NAAJAIAdFBEBBBCEIQQAhBgwBCyAHEHEiCEUNAgsgBUEANgIMIAUgCDYCCCAFIAY2AgQCQCADBEBBACEGQQAhBwNAIAIgBk0NBSAGQQFqIgQgAk8NBiAGQQJqIgQgAk8NAkMAAIA/IAEgBmoiBC0AALP9EyAEQQFqLQAAs/0gAf0MAAB/QwAAf0MAAH9DAAB/Q/3nASIJIAn95AH9DAAAgL8AAIC/AACAvwAAgL/95AEiCf0fACIKi5MgCf0fASINi5MiC4xDAAAAABDgCCEMIARBAmotAACzQwAAf0OVQwAAAD+UQ9sPSUCUIg4QmQIiDyALIAsgC5QgCiAMIAyMIgogCf0MAAAAAAAAAAAAAAAAAAAAAP1G/U0iCf0bAEEBcRuSIgsgC5QgDSAMIAogCf3HAf0bAkEBcRuSIgwgDJSSkpEiCpWUIQ0gBSgCBCAOEJsCIQ4gB2tBA00EQCAFQQRqIAdBBEEEQQQQpAUgBSgCCCEIIAUoAgwhBwsgCCAHQQJ0aiIEIA44AgwgBCANOAIIIAQgDyAMIAqVlDgCBCAEIA8gCyAKlZQ4AgAgBSAHQQRqIgc2AgwgBkEDaiEGIANBAWsiAw0ACwsgACAFKQIENwIAIABBCGogBUEMaigCADYCACAFQRBqJAAPCyAEIAJBvOvHABCMBwALQYzrxwAQ/wcLAAsgBiACQZzrxwAQjAcACyAEIAJBrOvHABCMBwALuAMBBH8gABCdAQJAAkAgACgC8AMiAgRAIAAoAvQDIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAogEIgJBgoCAgHhIIAJFckUEQCAAKAKMBCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAL8AyICBEAgACgCgAQiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsCQCAAKAKoBCICRQ0AIAAoAqwEIgMoAgAiAQRAIAIgAREDAAsgAygCBCIDRQ0AIAJBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIANqSQ0BIAFBACAEIANBJ2pLGw0CIAIQogILIAAoArAEIgIEQCAAKAK0BCIAQQRrKAIAIgNBeHEiAUEEQQggA0EDcSIDGyACakkNASADQQAgASACQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4kJAg9/AX4jAEEwayIHJAACQAJAAkACQAJAIAEoAhQiBSABKAIQIghJBEAgASAFQQFqIgQ2AhQgASgCDCIGIAVqLQAAIgNBMEcNAiAEIAhJBEAgBCAGai0AAEEwa0H/AXFBCkkNAgsgACABIAJCABCvAgwFCyAHQRhqIAEoAgwgCCAFEPkBIAcoAhwhAiAHKAIYIQFBFBBxIgNFDQIgAyABNgIMIANBBTYCACAAIAM2AgggAEIDNwMAIAMgAjYCEAwECyAHQQhqIAYgCCAFQQJqIgEgCCABIAhJGxD5ASAHKAIMIQIgBygCCCEBQRQQcSIDRQ0BIAMgATYCDCADQQ02AgAgACADNgIIIABCAzcDACADIAI2AhAMAwsgA0Exa0H/AXFBCU8EQCAHQRBqIAYgCCAEEPkBIAcoAhQhAiAHKAIQIQFBFBBxIgNFDQEgAyABNgIMIANBDTYCACAAIAM2AgggAEIDNwMAIAMgAjYCEAwDCyADQTBrrUL/AYMhEiAEIAhPDQEDQCAEIAZqLQAAQTBrIgVB/wFxIgNBCk8NAiADQQVLIBJCmbPmzJmz5swZUnIgEkKZs+bMmbPmzBlacUUEQCABIARBAWoiBDYCFCASQgp+IAWtQv8Bg3whEiAEIAhHDQEMAwsLIAdBIGohCUEAIQYjAEEQayILJAACQAJAAkACQAJAIAEiBSgCECIKIAEoAhQiA00NACAKIANrIQEgBSgCDCEMIAMhBANAIAQgDGotAAAiCEEwa0H/AXFBCk8EQCAIQS5GDQMgCEHFAEcgCEHlAEdxDQIgCSAFIAIgEiAGEO4DDAQLIAUgBEEBaiIENgIUIAZBAWoiBiABRw0ACyABIQYLIAkgBSACIBIgBhDwBAwBCyAFIARBAWoiBDYCFAJAIAQgCk8NACAGIAxqIQ4gBCAKayEPIAMgCmsgBmpBAWohEEEAIQQCQANAIAMgBmohDSADIA5qQQFqLQAAIhFBMGsiCEH/AXEiAUEKTwRAIARFBEAgDUEBaiEEDAQLIAQgBmohASARQSByQeUARwRAIAkgBSACIBIgARDwBAwFCyAJIAUgAiASIAEQ7gMMBAsgAUEFSyASQpmz5syZs+bMGVJyIBJCmLPmzJmz5swZVnENASAFIA1BAmo2AhQgA0EBaiEDIBJCCn4gCK1C/wGDfCESIBAgBEEBayIERw0ACyAJIAUgAiASIAYgD2oQ8AQMAgsgCSAFIAIgEiAEIAZqEOgGDAELIAtBCGogDCAKIARBAWoiASAKIAEgCkkbEPkBIAsoAgwhAiALKAIIIQFBFBBxIQMgBCAKSQRAIANFDQIgAyABNgIMIANBDTYCACAJIAM2AgQgCUEBNgIAIAMgAjYCEAwBCyADRQ0BIAMgATYCDCADQQU2AgAgCSADNgIEIAlBATYCACADIAI2AhALIAtBEGokAAwBCwALIAcoAiBBAUYEQCAAIAcoAiQ2AgggAEIDNwMADAMLIAAgBysDKDkDCCAAQgA3AwAMAgsACyAAIAEgAiASEK8CCyAHQTBqJAALwwQCBn8BfgJ/IAFFBEAgACgCCCEGQS0hCyAFQQFqDAELQStBgIDEACAAKAIIIgZBgICAAXEiARshCyABQRV2IAVqCyEHAkAgBkGAgIAEcUUEQEEAIQIMAQsCf0EAIANFDQAaIAIsAABBv39KIgEgA0EBRg0AGiABIAIsAAFBv39KagsgB2ohBwsCQCAALwEMIgkgB0sEQAJAAkAgBkGAgIAIcUUEQCAJIAdrIQlBACEBQQAhBwJAAkACQCAGQR12QQNxQQFrDgMAAQACCyAJIQcMAQsgCUH+/wNxQQF2IQcLIAZB////AHEhCiAAKAIEIQggACgCACEAA0AgAUH//wNxIAdB//8DcU8NAkEBIQYgAUEBaiEBIAAgCiAIKAIQEQIARQ0ACwwECyAAIAApAggiDKdBgICA/3lxQbCAgIACcjYCCEEBIQYgACgCACIIIAAoAgQiCiALIAIgAxDzBw0DQQAhASAJIAdrQf//A3EhAgNAIAFB//8DcSACTw0CIAFBAWohASAIQTAgCigCEBECAEUNAAsMAwtBASEGIAAgCCALIAIgAxDzBw0CIAAgBCAFIAgoAgwRAAANAiAJIAdrQf//A3EhAkEAIQEDQCACIAFB//8DcU0EQEEADwsgAUEBaiEBIAAgCiAIKAIQEQIARQ0ACwwCCyAIIAQgBSAKKAIMEQAADQEgACAMNwIIQQAPC0EBIQYgACgCACIBIAAoAgQiACALIAIgAxDzBw0AIAEgBCAFIAAoAgwRAAAhBgsgBgu7BAIGfwV9IAAgASACEMwDAkACQAJAIAIEQCAAKAJgQQxqIQEgACoCjAEgACoCiAEiDpMhDyAAKAJkIQlBASEGA0AgB0EDaiAJTw0CIAZBAWsiBSAETwRAIAUhBgwFCyAEIAVrIgVBACAEIAVPGyIFQQFGDQQgBUECRg0DIANBCGoqAgAhCyADQQRqKgIAIQxBACEFQQAhCCADKgIAIg1DAAAAAF9FBEBB/wFDAACAP0MAAAAAIA0QxgUgDpMgD5UiDSANQwAAAABdGyINIA1DAACAP14bQwAAfkOUELkHIg38AUEAIA1DAAAAAGAbIA1DAAB/Q14bQQFqQf8BcSEICyAMQwAAAABfRQRAQf8BQwAAgD9DAAAAACAMEMYFIA6TIA+VIgwgDEMAAAAAXRsiDCAMQwAAgD9eG0MAAH5DlBC5ByIM/AFBACAMQwAAAABgGyAMQwAAf0NeG0EBakH/AXFBCHQhBQsgASALQwAAAABfBH8gCgVB/wFDAACAP0MAAAAAIAsQxgUgDpMgD5UiCyALQwAAAABdGyILIAtDAACAP14bQwAAfkOUELkHIgv8AUEAIAtDAAAAAGAbIAtDAAB/Q14bQQFqQf8BcUEQdAsgBSAIcnIgAS0AA0EYdHI2AgAgAUEQaiEBIAdBBGohByAGQQNqIQYgA0EMaiEDIAJBAWsiAg0ACwsgAEEBOgC4AQ8LIAcgB0EEaiAJQdThwAAQ6gcACyAGQQFqIQYLIAYgBEHk4cAAEIwHAAvOBAMFfwN7B30CQAJAAkACQAJAAkACQAJAAkAgB0EDTwRAIAdBA24hCSABKgIAIAAqAgAiEZMhEiAB/V0CBCAA/V0CBCIO/eUBIQ9BACEBQQAhAANAIAEgA08NAyABIAVPDQQgAUEBaiIIIANPDQUgBSAITQ0GIAFBAmoiCCADTw0HIAUgCE0NCCABIARqIggtAAAhCyABIAJqIgotAAAhDCAOIA8gCkEBai0AACAIQQFqLQAAQQh0crNDAP9/R5X9EyAKQQJqLQAAIAhBAmotAABBCHRys0MA/39Hlf0gAf3mAf3kASIN/R8AIhOLEIkEIRQgDf0fASIVixCJBCEWIAAgB08NCSAGQwAAwH9DAACAPyARIAtBCHQgDHKzQwD/f0eVIBKUkiIQmCAQIBBcGyAQixCJBEMAAIC/kpQ4AgAgAEEBaiIIIAdPDQogBkEEakMAAMB/QwAAgD8gE5ggDSAN/UIiDf0bAEEBcRsgFEMAAIC/kpQ4AgAgAEECaiIIIAdPDQIgBkEIakMAAMB/QwAAgD8gFZggDf3HAf0bAkEBcRsgFkMAAIC/kpQ4AgAgAUEEaiEBIAZBDGohBiAAQQNqIQAgCUEBayIJDQALCw8LIAggB0HE7scAEIwHAAsgASADQcTtxwAQjAcACyABIAVB1O3HABCMBwALIAggA0Hk7ccAEIwHAAsgCCAFQfTtxwAQjAcACyAIIANBhO7HABCMBwALIAggBUGU7scAEIwHAAsgACAHQaTuxwAQjAcACyAIIAdBtO7HABCMBwALiAQBBX8jAEEgayIEJABBovnHACEFQQkhAwJAAkAgAigCAEEBcQ0AIARBEGogAigCBCACKAIIEPsCQaL5xwAgBCgCFCAEKAIQIgIbIQUgAg0AIAQoAhgiAw0AIAFBAUEAEJcDIQIMAQsgBCADNgIMIAQgBTYCCCABKAIEIQUgASgCACEDA0ACQCAEQRBqIARBCGoQ7QMgBCgCECIGRQ0AIAQoAhQhByAEKAIcRQRAIAEgBiAHEJcDIQIMAwtBASECIAMgBiAHIAUoAgwRAAANAiADQf3/AyAFKAIQEQIARQ0BDAILC0EAIQILAkACQAJAAkAgACgCACIBQYCAgIB4RwRAIAFFDQIgACgCBCIFQQRrKAIAIgBBeHEiA0EEQQggAEEDcSIAGyABakkNBCAARSADIAFBJ2pNcg0BDAMLIAAtAARBA0cNASAAKAIIIgUoAgAhACAFQQRqKAIAIgEoAgAiAwRAIAAgAxEDAAsgASgCBCIBBEAgAEEEaygCACIDQXhxIgZBBEEIIANBA3EiAxsgAWpJDQQgA0EAIAYgAUEnaksbDQMgABCiAgsgBUEEaygCACIAQXhxIgFBEEEUIABBA3EiABtJDQMgAEUNACABQTRPDQILIAUQogILIARBIGokACACDwtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALgwQBCX8jAEEgayIFJAACQAJAAkACQCABIAAoArABIgNGIAAoArQBIgQgAkZxDQACQCAALQC4AUUEQCAAKAJkIQQMAQsgACgCrAEgA0ECdCADIARqQQJ0EOEIIQMgBEECdCIGIAAoAmQiBEsNAiAAKAJgIQcgBSADELgKIgg2AgAgBSAGNgIEIAYgCEcNBCADIAcgBhDgCSAAQQA6ALgBIANBhAhJDQAgAxCbBwsgAkECdCIGIQMgBCAGSQRAIAYgBCIDayIHIAAoAlwgA2tLBEAgAEHcAGogAyAHQQRBBBCkBSAAKAJkIQMLIAAoAmAiCSADQQJ0IgpqIQggB0ECTwRAIAYgBEF/c2pBAnQiCwRAIAhBACAL/AsACyACQQR0IARBAnRrIAlqIApqQQRrIQggAyAHakEBayEDCyAIQQA2AgAgA0EBaiEDCyAAIAM2AmQgACgCrAEgAUECdCABIAJqQQJ0EOEIIQQgAyAGSQ0CIAAoAmAgBSAEELgKIgc2AgAgBSAGNgIEIAYgB0cNAyAGIAQQ4QkgAEEAOgC4ASAAIAI2ArQBIAAgATYCsAEgBEGECEkNACAEEJsHCyAFQSBqJAAPC0EAIAYgBEH868AAEOoHAAtBACAGIANBkOzAABDqBwALIAVBADYCCEEAIAUgBUEEaiAFQQhqQeD5xAAQ9QcAC8gEAgJ/AX0jAEEgayIDJAAgASgCBCgCACABKAIAKAIAaiABKAIIKAIQIAJsaiECIAACfwJAAkACQAJAAkAgASgCDCgCAA4CAAECCwJAIAJBe0sNACABKAIUIAJBBGpJDQAgACABKAIQIAJqKgAAOAIEDAQLIANBADYCGCADQQE2AgwgA0HI28EANgIIIANCBDcCECAAIANBCGoQkgc2AgRBAQwECwJAIAJBfU0EQCABKAIUIAJBAmpPDQELIANBADYCGCADQQE2AgwgA0HI28EANgIIIANCBDcCECAAIANBCGoQkgc2AgRBAQwECyABKAIQIAJqIgEtAAFBCHQiAiABLQAAciIBQf//AXFFBEAgACABQRB0NgIEDAMLIAFB/wdxIQEgAkGAgAJxIQQgAkGA+AFxIgJBgPgBRgRAIARBEHQhAiABRQRAIAAgAkGAgID8B3I2AgQMBAsgACABQQ10IAJyQYCAgP4HcjYCBAwDCyAEQRB0IQQgAkUNASAAIAJBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAEcjYCBAwCCyABKAIUIAJNBEAgA0EANgIYIANBATYCDCADQZCzwQA2AgggA0IENwIQIAAgA0EIahCSBzYCBEEBDAMLIAAgASgCGCoCACIFIAEoAhAgAmotAACzQwAAf0OVIAEoAhwqAgAgBZOUkjgCBAwBCyAAIARBgICA2ANyIAFnQRBrIgJBF3RrIAEgAkH//wNxQQhqdEH///8DcXI2AgQLQQALNgIAIANBIGokAAuKBAEIfyMAQSBrIgckAAJAAkACQAJAIAAtALgBRQRAIAAoAmQhBQwBCyAAKAKsASAAKAKwASIFQQJ0IAUgACgCtAEiBWpBAnQQ4QghBiAFQQJ0IgggACgCZCIFSw0BIAAoAmAhCSAHIAYQuAoiCjYCACAHIAg2AgQgCCAKRw0DIAYgCSAIEOAJIAZBhAhJDQAgBhCbBwsgAEIANwKwASAAQbgBakEAOgAAIAUgAkECdCIISQRAIAUhBiAIIAVrIgkgACgCXCAFa0sEQCAAQdwAaiAFIAlBBEEEEKQFIAAoAmQhBgsgACgCYCILIAZBAnQiDGohCiAJQQJPBEAgCCAFQX9zakECdCIIBEAgCkEAIAj8CwALIAJBBHQgBUECdGsgC2ogDGpBBGshCiAGIAlqQQFrIQYLIApBADYCACAGQQFqIQgLIAAgCDYCZAJAIAAoAgBBAUcNACACQQF0IgUgCEsNAiAAKAJgIgYgBSADIAQgAiAAKgKQARCpAiAAKAIEIAFBAXQgASACakEBdBDhCCIAELgKIQEgByAFNgIEIAcgATYCACABIAVHDQMgACAGIAUQ4AkgAEGECEkNACAAEJsHCyAHQSBqJAAPC0EAIAggBUH868AAEOoHAAtBACAFIAhBxODAABDqBwALIAdBADYCCEEAIAcgB0EEaiAHQQhqQeD5xAAQ9QcAC/8UAxN/A34Be0HgtskAKAIARQRAAkBB4LbJACgCAEHgtskAQgE3AgBB7LbJACgCACECQei2yQAoAgAhBEHotskAQfCayAApAwA3AgBB9LbJACgCACEFQfC2yQBB+JrIACkDADcCAEUgAkVyDQAgBQRAIARBCGohDSAEKQMAQn+FQoCBgoSIkKDAgH+DIRUgBCEDA0AgFVAEQANAIANB4ABrIQMgDSkDACANQQhqIQ1CgIGChIiQoMCAf4MiFUKAgYKEiJCgwIB/UQ0ACyAVQoCBgoSIkKDAgH+FIRULIAMgFXqnQQN2QXRsakEEaygCACIHQYQITwRAIAcQmwcLIBVCAX0gFYMhFSAFQQFrIgUNAAsLIAIgAkEMbEETakF4cSIFakEJaiIDRQ0AAkAgBCAFayIEQQRrKAIAIgJBeHEiBUEEQQggAkEDcSICGyADak8EQCACQQAgBSADQSdqSxsNASAEEKICDAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACwtB5LbJACgCAEUEQEHktskAQX82AgBB7LbJACgCACIDIABxIQQgAEEZdiITrUKBgoSIkKDAgAF+IRdB6LbJACgCACECAkACQANAIAIgBGopAAAiFiAXhSIVQn+FIBVCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiFVBFBEADQCAAIAIgFXqnQQN2IARqIANxQXRsaiIFQQxrKAIARgRAIAVBCGsoAgAgAUYNBAsgFUIBfSAVgyIVUEUNAAsLIBYgFkIBhoNCgIGChIiQoMCAf4NQBEAgBCAGQQhqIgZqIANxIQQMAQsLQfC2yQAoAgBFBEACQEEAIQIjAEEgayIJJAACQAJAAkBB9LbJACgCACINQQFqIgQEQAJAQey2yQAoAgAiCiAKQQFqIg5BA3YiA0EHbCAKQQhJGyIPQQF2IARJBEACQAJAAn8gD0EBaiIDIAQgAyAESxsiBEEPTwRAIARB/////wFLDQlBfyAEQQN0QQduQQFrZ3ZBAWoMAQtBBCAEQQhxQQhqIARBBEkbCyIErUIMfiIVQiCIpw0AIBWnIgNBeEsNACADQQdqQXhxIgMgBEEIaiIGaiICIANJIAJB+P///wdLcg0AIAIQcSICRQ0BIAIgA2ohBSAGBEAgBUH/ASAG/AsACyAEQQFrIgsgBEEDdkEHbCALQQhJGyEMQei2yQAoAgAhBiANBEAgBUEMayEPIAVBCGohECAGQQxrIREgBikDAEJ/hUKAgYKEiJCgwIB/gyEVIAYhA0EAIQQgDSECA0AgFVAEQANAIARBCGohBCADQQhqIgMpAwBCgIGChIiQoMCAf4MiFUKAgYKEiJCgwIB/UQ0ACyAVQoCBgoSIkKDAgH+FIRULIAUgBiAVeqdBA3YgBGoiEkF0bGoiB0EMaygCACIIIAdBCGsoAgAgCBsiFCALcSIHaikAAEKAgYKEiJCgwIB/gyIWUARAQQghCANAIAcgCGohByAIQQhqIQggBSAHIAtxIgdqKQAAQoCBgoSIkKDAgH+DIhZQDQALCyAVQgF9IBWDIRUgBSAWeqdBA3YgB2ogC3EiB2osAABBAE4EQCAFKQMAQoCBgoSIkKDAgH+DeqdBA3YhBwsgBSAHaiAUQRl2Igg6AAAgECAHQQhrIAtxaiAIOgAAIA8gB0F0bGoiB0EIaiARIBJBdGxqIghBCGooAAA2AAAgByAIKQAANwAAIAJBAWsiAg0ACwtB7LbJACALNgIAQei2yQAgBTYCAEHwtskAIAwgDWs2AgAgCkUNAyAKIA5BDGxBB2pBeHEiA2pBCWoiBEUNAyAGIANrIgNBBGsoAgAiBkF4cSICQQRBCCAGQQNxIgYbIARqSQ0FIAZBACACIARBJ2pLGw0GIAMQogIMAwsgCUEANgIYIAlBATYCDCAJQcS1xAA2AgggCUIENwIQIAlBCGpBmLXEABCNCAsACyAOBEBB6LbJACgCACEFAkACQCADIA5BB3FBAEdqIgdBAkkEQCAHIQMMAQsgB0EBcSEDIAdB/v///wNxIghBA3QhAiAIIQYgBSEEA0AgBCAE/QADACIY/U1BB/3NAf0MAQEBAQEBAQEBAQEBAQEBAf1OIBj9DH9/f39/f39/f39/f39/f3/9UP3OAf0LAwAgBEEQaiEEIAZBAmsiBg0ACyAHIAhGDQELIAIgBWohBANAIAQgBCkDACIVQn+FQgeIQoGChIiQoMCAAYMgFUL//v379+/fv/8AhHw3AwAgBEEIaiEEIANBAWsiAw0ACwsgBUEIaiELAkAgDkEITwRAIAUgDmogBSkAADcAAAwBCyAORQ0AIAsgBSAO/AoAAAtBASEGQQAhBANAIAQhAyAGIQQCQCADIAVqIhAtAABBgAFHDQAgBSADQXRsaiICQQRrIREgAkEIayEGIAJBDGshBwNAIAcoAgAiAiAGKAIAIAIbIhIgCnEiDCECIAUgDGopAABCgIGChIiQoMCAf4MiFVAEQEEIIQgDQCACIAhqIQIgCEEIaiEIIAUgAiAKcSICaikAAEKAgYKEiJCgwIB/gyIVUA0ACwsgBSAVeqdBA3YgAmogCnEiAmosAABBAE4EQCAFKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgsgAiAMayADIAxrcyAKcUEITwRAIAIgBWoiCC0AACAIIBJBGXYiCDoAACALIAJBCGsgCnFqIAg6AAAgBSACQXRsaiIIQQxrIQJB/wFGBEAgEEH/AToAACALIANBCGsgCnFqQf8BOgAAIAJBCGogB0EIaigAADYAACACIAcpAAA3AAAMAwsgBygAACEMIAcgAigAADYAACACIAw2AAAgBigAACECIAYgCEEIayIMKAAANgAAIAwgAjYAACARKAAAIQIgESAIQQRrIggoAAA2AAAgCCACNgAADAELCyAQIBJBGXYiBjoAACALIANBCGsgCnFqIAY6AAALIAQgBCAOSSIDaiEGIAMNAAsLQfC2yQAgDyANazYCAAsgCUEgaiQADAQLDAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAJQQA2AhggCUEBNgIMIAlBxLXEADYCCCAJQgQ3AhAgCUEIakGYtcQAEI0IAAsLIAAgARDsCCEEQei2yQAoAgAiAkHstskAKAIAIgUgAHEiA2opAABCgIGChIiQoMCAf4MiFVAEQEEIIQYDQCADIAZqIQMgBkEIaiEGIAIgAyAFcSIDaikAAEKAgYKEiJCgwIB/gyIVUA0ACwsgAiAVeqdBA3YgA2ogBXEiA2osAAAiBkEATgRAIAIgAikDAEKAgYKEiJCgwIB/g3qnQQN2IgNqLQAAIQYLIAIgA2ogEzoAACACIANBCGsgBXFqQQhqIBM6AABB8LbJAEHwtskAKAIAIAZBAXFrNgIAQfS2yQBB9LbJACgCAEEBajYCACACIANBdGxqIgNBBGsgBDYCACADQQhrIAE2AgAgA0EMayAANgIADAELIAVBBGsoAgAhBAsgBBDbCUHktskAQeS2yQAoAgBBAWo2AgAPC0G4psYAELAKAAu/BAMGfwF8AX0jAEEQayICJAACQAJAIAEoAgBBlICAgHhGBEBBBCEDAkAgASgCDCIEBEAgASgCCCEBQYCAECAEIARBgIAQTxsiA0ECdBBxIgVFDQQgBEEEdCEGIAJBADYCCCACIAU2AgQgAiADNgIAQQAhA0EAIQQCQANAAn0CQAJAAkACQAJAAkACQAJAAkACQAJAQRUgASgCACIHQYCAgIB4cyAHQQBOG0EBaw4KCgABAgMEBQYHCAkLIAFBBGovAQCzDAoLIAFBBGooAgCzDAkLIAFBCGopAwC1DAgLIAFBBGosAACyDAcLIAFBBGouAQCyDAYLIAFBBGooAgCyDAULIAFBCGopAwC0DAQLIAFBBGoqAgAMAwsgAUEIaisDACIItkMAAIA/QwAAgL8gCL1CAFkbmAwCCyABIAJBD2pB2OfAABCVCCEDIAIoAgAiAQRAIAIoAgQgAUECdEEEEKIHCwwDCyABQQRqLQAAswshCSABQRBqIQEgAigCACAERgRAIAJB1ILBABD6BSACKAIEIQULIAMgBWogCTgCACACIARBAWoiBDYCCCADQQRqIQMgBkEQayIGDQALIAIoAgQhAyACKAIAIgFBgICAgHhHDQILIAAgBDYCCCAAIAM2AgQgAEGAgICAeDYCAAwDC0EAIQFBACEECyAAIAQ2AgggACADNgIEIAAgATYCAAwBCyABIAJBD2pB+L/BABCVCCEBIABBgICAgHg2AgAgACABNgIECyACQRBqJAAPCwAL7AQBA38jAEEgayIDJAACQAJAAkAgAC0A8AFBBkcEQCAAKALoASIFRQ0BIAUgASACIAAoAuwBKAIQEQAAIQIMAwsgACgCxAEgACgCzAEiBGsgAkkEQCAAQcQBaiAEIAJBAUEBEKQFIAAoAswBIQQLIAAoAsgBIQUgAgRAIAQgBWogASAC/AoAAAsgACACIARqIgE2AswBQQAhAiABQQRJDQICQAJAAkACQCAFLwAAIAUtAAJBEHRyIgRBn5YiRwRAIARB8NjlA0YEQCAAQQAQ3wMhAgwICyAEIAUtAANBGHRyIgFB0JaNIEYNASABQdKCkYIDRyABQdKCkZoER3ENBCAAQQUQ3wMhAgwHCyAAKALcAUGAgICAeEYNASAAKALkASEBDAILIAAoAtABQYCAgIB4Rg0CIAAoAtQBIAAoAtgBEHxB/wFxQQRHDQIgAEEEEN8DIQIMBQsgA0EIaiAFIAEQ7QIgAygCDCEFIAMoAggiBEGBgICAeEYEQCAFIQIMBQsgACADKAIQIgE2AuQBIAAgBTYC4AEgACAENgLcASAEQYCAgIB4Rg0ECyABQQRJDQAgACgC4AEoAABBzo7NggVHDQAgAEEBEN8DIQIMAwsgACgC0AFBgICAgHhGDQEgACgC1AEgACgC2AEQfEH/AXEiAUEGRwRAIAAgARDfAyECDAMLIANBADYCGCADQQE2AgwgA0GUqsEANgIIIANCBDcCECADQQhqEJIHIQIMAgtB8KnBABDdCQALIANBADYCGCADQQE2AgwgA0GUqsEANgIIIANCBDcCECADQQhqEJIHIQILIANBIGokACACC+wEAQN/IwBBIGsiAyQAAkACQAJAIAAtAOgBQQZHBEAgACgC4AEiBUUNASAFIAEgAiAAKALkASgCEBEAACECDAMLIAAoArwBIAAoAsQBIgRrIAJJBEAgAEG8AWogBCACQQFBARCkBSAAKALEASEECyAAKALAASEFIAIEQCAEIAVqIAEgAvwKAAALIAAgAiAEaiIBNgLEAUEAIQIgAUEESQ0CAkACQAJAAkAgBS8AACAFLQACQRB0ciIEQZ+WIkcEQCAEQfDY5QNGBEAgAEEAEN0DIQIMCAsgBCAFLQADQRh0ciIBQdCWjSBGDQEgAUHSgpGCA0cgAUHSgpGaBEdxDQQgAEEFEN0DIQIMBwsgACgC1AFBgICAgHhGDQEgACgC3AEhAQwCCyAAKALIAUGAgICAeEYNAiAAKALMASAAKALQARB8Qf8BcUEERw0CIABBBBDdAyECDAULIANBCGogBSABEO0CIAMoAgwhBSADKAIIIgRBgYCAgHhGBEAgBSECDAULIAAgAygCECIBNgLcASAAIAU2AtgBIAAgBDYC1AEgBEGAgICAeEYNBAsgAUEESQ0AIAAoAtgBKAAAQc6OzYIFRw0AIABBARDdAyECDAMLIAAoAsgBQYCAgIB4Rg0BIAAoAswBIAAoAtABEHxB/wFxIgFBBkcEQCAAIAEQ3QMhAgwDCyADQQA2AhggA0EBNgIMIANBlKrBADYCCCADQgQ3AhAgA0EIahCSByECDAILQfCpwQAQ3QkACyADQQA2AhggA0EBNgIMIANBlKrBADYCCCADQgQ3AhAgA0EIahCSByECCyADQSBqJAAgAgv8AwEEfyMAQRBrIgQkAAJAAkACQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BIAAgARCLBUUNAkEBIQIMAwsgACgCACECQQkhAwNAIAMgBGpBBmogAkEPcS0A3LZFOgAAIANBAWshAyACQRBJIAJBBHYhAkUNAAtBASECIAFBAUGEtMUAQQIgAyAEakEHakEJIANrEMgDRQ0BDAILIAAoAgAhAkEJIQMDQCADIARqQQZqIAJBD3EtAMmBQjoAACADQQFrIQMgAkEPSyACQQR2IQINAAtBASECIAFBAUGEtMUAQQIgAyAEakEHakEJIANrEMgDDQELIAEoAgBBsIrDAEECIAEoAgQoAgwRAAAEQEEBIQIMAQsgAEEEaiEAAkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASAAIAEQiwUhAgwCCyAAKAIAIQJBCSEDA0AgAyAEakEGaiACQQ9xLQDctkU6AAAgA0EBayEDIAJBD0sgAkEEdiECDQALIAFBAUGEtMUAQQIgAyAEakEHakEJIANrEMgDIQIMAQsgACgCACECQQkhAwNAIAMgBGpBBmogAkEPcS0AyYFCOgAAIANBAWshAyACQQ9LIAJBBHYhAg0ACyABQQFBhLTFAEECIAMgBGpBB2pBCSADaxDIAyECCyAEQRBqJAAgAgvyBAICfwF7IwBBgNIAayIDJAACQAJAAkACQAJAAkACQAJAIAFB/wFxQQFrDgUAAgMEBQELQYCACBBxIgRFDQUgBEEEay0AAEEDcQRAIARBAEGAgAj8CwALIANBQGtBAEHA0QD8CwBBrNQAEHEiAUUNBSABIAJBxAH8CgAAIAFBgICAgHg2AugBIAFCATcC4AEgAUKAgAg3AtgBIAEgBDYC1AEgAUKAgICAgICAATcCzAEgAUKAgICAEDcCxAEgAUHsAWogA0EMakH00QD8CgAAIAFB4NMAakEAQcEA/AsAIAFBADsBqFQgAUEANgKkVEG438EAIQIMBgtBuAYQcSIBRQ0EIAFBADYC8AQgAUKAgICAEDcD6AQgAUGBgICAeDYC3AQgAUH0BGogAkHEAfwKAABBoN/BACECDAULQdABEHEiAUUNAyABIAJBxAH8CgAAIAFBADYCzAEgAUKAgICAEDcCxAFB0N/BACECDAQLQdABEHEiAUUNAiABIAJBxAH8CgAAIAFBADYCzAEgAUKAgICAEDcCxAFB6N/BACECDAMLQdABEHEiAUUNASABIAJBxAH8CgAAIAFBADYCzAEgAUKAgICAEDcCxAFBgODBACECDAILQYgEEHEiAUUNACABQQI2AgAgAf0MAAAAAAAAAAAAAAAAAAAAAP0LA3AgAUIANwOYAiABQQI2ApABIAFCATcCtAIgAUGAAWogBf0LAwAgAUGgAmogBf0LAwAgAUGwAmpBADYCACABQbwCaiACQcQB/AoAACABQQA6AIAEQZjgwQAhAgwBCwALIAAgAjYCBCAAIAE2AgAgA0GA0gBqJAAL8gQCAn8BeyMAQYDSAGsiAyQAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4FAAIDBAUBC0GAgAgQcSIERQ0FIARBBGstAABBA3EEQCAEQQBBgIAI/AsACyADQUBrQQBBwNEA/AsAQaTUABBxIgFFDQUgASACQbwB/AoAACABQYCAgIB4NgLgASABQgE3AtgBIAFCgIAINwLQASABIAQ2AswBIAFCgICAgICAgAE3AsQBIAFCgICAgBA3ArwBIAFB5AFqIANBDGpB9NEA/AoAACABQdjTAGpBAEHBAPwLACABQQA7AaBUIAFBADYCnFRBmN3BACECDAYLQbAGEHEiAUUNBCABQQA2AvAEIAFCgICAgBA3A+gEIAFBgYCAgHg2AtwEIAFB9ARqIAJBvAH8CgAAQYDdwQAhAgwFC0HIARBxIgFFDQMgASACQbwB/AoAACABQQA2AsQBIAFCgICAgBA3ArwBQbDdwQAhAgwEC0HIARBxIgFFDQIgASACQbwB/AoAACABQQA2AsQBIAFCgICAgBA3ArwBQcjdwQAhAgwDC0HIARBxIgFFDQEgASACQbwB/AoAACABQQA2AsQBIAFCgICAgBA3ArwBQeDdwQAhAgwCC0GABBBxIgFFDQAgAUECNgIAIAH9DAAAAAAAAAAAAAAAAAAAAAD9CwNwIAFCADcDmAIgAUECNgKQASABQgE3ArQCIAFBgAFqIAX9CwMAIAFBoAJqIAX9CwMAIAFBsAJqQQA2AgAgAUG8AmogAkG8AfwKAAAgAUEAOgD4A0H43cEAIQIMAQsACyAAIAI2AgQgACABNgIAIANBgNIAaiQAC9kEAQN/IwBBIGsiAyQAAkACQAJAIAAtAIwBQQZHBEAgACgChAEiBUUNASAFIAEgAiAAKAKIASgCEBEAACECDAMLIAAoAgAgACgCCCIEayACSQRAIAAgBCACQQFBARCkBSAAKAIIIQQLIAAoAgQhBSACBEAgBCAFaiABIAL8CgAACyAAIAIgBGoiATYCCEEAIQIgAUEESQ0CAkACQAJAAkAgBS8AACAFLQACQRB0ciIEQZ+WIkcEQCAEQfDY5QNGBEAgAEEAEOADIQIMCAsgBCAFLQADQRh0ciIBQdCWjSBGDQEgAUHSgpGCA0cgAUHSgpGaBEdxDQQgAEEFEOADIQIMBwsgACgCeEGAgICAeEYNASAAKAKAASEBDAILIAAoAgxBgICAgHhGDQIgACgCECAAKAIUEHxB/wFxQQRHDQIgAEEEEOADIQIMBQsgA0EIaiAFIAEQ7QIgAygCDCEFIAMoAggiBEGBgICAeEYEQCAFIQIMBQsgACADKAIQIgE2AoABIAAgBTYCfCAAIAQ2AnggBEGAgICAeEYNBAsgAUEESQ0AIAAoAnwoAABBzo7NggVHDQAgAEEBEOADIQIMAwsgACgCDEGAgICAeEYNASAAKAIQIAAoAhQQfEH/AXEiAUEGRwRAIAAgARDgAyECDAMLIANBADYCGCADQQE2AgwgA0GUqsEANgIIIANCBDcCECADQQhqEJIHIQIMAgtB8KnBABDdCQALIANBADYCGCADQQE2AgwgA0GUqsEANgIIIANCBDcCECADQQhqEJIHIQILIANBIGokACACC9QEAQN/IwBBIGsiAyQAAkACQAJAIAAtAGxBBkcEQCAAKAJkIgVFDQEgBSABIAIgACgCaCgCEBEAACECDAMLIAAoAgAgACgCCCIEayACSQRAIAAgBCACQQFBARCkBSAAKAIIIQQLIAAoAgQhBSACBEAgBCAFaiABIAL8CgAACyAAIAIgBGoiATYCCEEAIQIgAUEESQ0CAkACQAJAAkAgBS8AACAFLQACQRB0ciIEQZ+WIkcEQCAEQfDY5QNGBEAgAEEAEL8DIQIMCAsgBCAFLQADQRh0ciIBQdCWjSBGDQEgAUHSgpGCA0cgAUHSgpGaBEdxDQQgAEEFEL8DIQIMBwsgACgCWEGAgICAeEYNASAAKAJgIQEMAgsgACgCDEGAgICAeEYNAiAAKAIQIAAoAhQQfEH/AXFBBEcNAiAAQQQQvwMhAgwFCyADQQhqIAUgARDtAiADKAIMIQUgAygCCCIEQYGAgIB4RgRAIAUhAgwFCyAAIAMoAhAiATYCYCAAIAU2AlwgACAENgJYIARBgICAgHhGDQQLIAFBBEkNACAAKAJcKAAAQc6OzYIFRw0AIABBARC/AyECDAMLIAAoAgxBgICAgHhGDQEgACgCECAAKAIUEHxB/wFxIgFBBkcEQCAAIAEQvwMhAgwDCyADQQA2AhggA0EBNgIMIANBlKrBADYCCCADQgQ3AhAgA0EIahCSByECDAILQfCpwQAQ3QkACyADQQA2AhggA0EBNgIMIANBlKrBADYCCCADQgQ3AhAgA0EIahCSByECCyADQSBqJAAgAgv8AwMFfwF7AX4CQAJAAkACQCAFLQC/AiIGQQhLQQEgBnRBlgJxRXJFBEBBCCAGbkECdK0gAq1+IgxCIIhQIAynIARJcQ0BIAEgAmohCCAEQXxxIQUgBkEIRgRAIAJFDQUgBEECdiIEIAJBAWsiAiACIARLGyICQQNNDQQgASACQQFqIgIgAkEDcSICQQQgAhtrIgJqIAMgAkECdCIGaiEHIAUgBmshBQNAIAMgACAB/VwAAP2JAf2pASIL/RsDQQJ0aiAAIAv9GwJBAnRqIAAgC/0bAUECdGogACAL/RsAQQJ0av1cAAD9VgAAAf1WAAAC/VYAAAP9CwAAIAFBBGohASADQRBqIQMgAkEEayICDQALIQEgByEDDAQLIAVFDQRBfyAGdEF/cyEKQQggBmshB0EAIARBfHFrIQJBfyEFA0AgBUEASARAIAEgCEYNBCABLQAAIQkgByEFIAFBAWohAQsgAyAAIAkgBXYgCnFBAnRqKAAANgAAIAUgBmshBSADQQRqIQMgAkEEaiICDQALDAQLQbCXxQBBNEHkl8UAEOsHAAtBhJbFAEHlAEHslsUAEOsHAAtB/JbFAEEiQaCXxQAQqwcACwNAIAVFDQEgAyAAIAEtAABBAnRqKAAANgAAIANBBGohAyAFQQRrIQUgAUEBaiIBIAhHDQALCwvjBAICfwF7IwBBgNIAayIDJAACQAJAAkACQAJAAkACQAJAIAFB/wFxQQFrDgUAAgMEBQELQYCACBBxIgRFDQUgBEEEay0AAEEDcQRAIARBAEGAgAj8CwALIANBQGtBAEHA0QD8CwBByNMAEHEiAUUNBSABIAJB4AD8CgAAIAFBgICAgHg2AoQBIAFCATcCfCABQoCACDcCdCABIAQ2AnAgAUKAgICAgICAATcCaCABQoCAgIAQNwJgIAFBiAFqIANBDGpB9NEA/AoAACABQfzSAGpBAEHBAPwLACABQQA7AcRTIAFBADYCwFNBiNzBACECDAYLQdgFEHEiAUUNBCABIAJB4AD8CgAAIAFBADYC0AUgAUKAgICAEDcDyAUgAUGBgICAeDYCvAVB8NvBACECDAULQewAEHEiAUUNAyABIAJB4AD8CgAAIAFBADYCaCABQoCAgIAQNwJgQaDcwQAhAgwEC0HsABBxIgFFDQIgASACQeAA/AoAACABQQA2AmggAUKAgICAEDcCYEG43MEAIQIMAwtB7AAQcSIBRQ0BIAEgAkHgAPwKAAAgAUEANgJoIAFCgICAgBA3AmBB0NzBACECDAILQaADEHEiAUUNACABQQI2AogBIAFBAjYCACABQfgBaiACQeAA/AoAACABQegCav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgASAF/QsD2AIgAUIANwOAAyABQfgCakKAgICAEDcDACABQYgDaiAF/QsDACABQZUDakIANwAAQejcwQAhAgwBCwALIAAgAjYCBCAAIAE2AgAgA0GA0gBqJAALqAQCCn8BfSMAQRBrIggkAAJAAkACQAJAAkACQCAEBEBDAAD4QSAFlSEQA0AgCUEVbCIGQRVqIgcgA0sgCUGLhsPhAEtyDQQgCUECdCEHIAlBAWohCSAI/QwAAAAAAAAAAAAAAAAAAAAA/QsDAEEAIQtBBiEKIAIhBkEAIQwDQCAIIApBBmsiDkEDdkH8////AXFqIg1B/wBDAAD4QUMAAPjBIBAgBioCAJQiBSAFQwAA+MFdGyIFIAVDAAD4QV4bELkHIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbQT9xIg8gDkEecXQgDSgCAHI2AgAgDkHgAXFBIGogCkkEQCAMQRBPDQUgDSANKAIEIA8gC0EecXZyNgIECyAGQQRqIQYgCkEGaiEKIAtBBmshCyAMQQFqIgxBFUcNAAsgASAHTQ0FIAgoAgwhCiAIKAIIIQsgCCgCBCEMIAAgB0ECdGogCCgCADYCACAHQQFyIgYgAU8NBiAAIAZBAnRqIAw2AgAgB0ECciIGIAFPDQcgACAGQQJ0aiALNgIAIAdBA3IiBiABTw0CIAAgBkECdGogCjYCACACQdQAaiECIAQgCUcNAAsLIAhBEGokAA8LIAYgAUHAz8cAEIwHAAtBBEEEQeDPxwAQjAcACyAGIAcgA0HQz8cAEOoHAAsgByABQZDPxwAQjAcACyAGIAFBoM/HABCMBwALIAYgAUGwz8cAEIwHAAv9AwEGfwJAAkACQAJAAkACQAJAIARFIAJFcg0AIAAoAjxFDQAgACgCICINIAFrIgpBACAKIA1NGyEOIAAoAhwgAUESbGohCgNAIAkgDkYNAiALQQlqIgwgBEsgCUGbjsfjAUtyDQMgCiADEMYCIANBJGohAyAKQRJqIQogDCELIAIgCUEBaiIJRw0ACwsCQCAGRSACRXINACAAKAI8QQJJDQBBACEEIAAoAiwiCyABayIDQQAgAyALTRshDCAAKAIoIAFBHmxqIQNBACEJA0AgCSAMRg0EIARBD2oiCiAGSyAJQZCixIgBS3INBSADIAUQwgIgBUE8aiEFIANBHmohAyAKIQQgAiAJQQFqIglHDQALCwJAIAhFIAJFcg0AIAAoAjxBA0kNAEEAIQogACgCOCIEIAFrIgNBACADIARNGyEFIAAoAjQgAUEqbGohA0EAIQkDQCAFIAlGDQYgCkEVaiIAIAhLIAlBi4bD4QBLcg0HIAMgBxC2AiAHQdQAaiEHIANBKmohAyAAIQogAiAJQQFqIglHDQALCw8LIAEgCWogDUHExscAEIwHAAsgCyAMIARB1MbHABDqBwALIAEgCWogC0HkxscAEIwHAAsgBCAKIAZB9MbHABDqBwALIAEgCWogBEGEx8cAEIwHAAsgCiAAIAhBlMfHABDqBwALxQQCBX8BfiMAQTBrIgIkAAJAAkAgACgCACIDQQJHBEBBASEEAkACfwJAIANBAXEEQCACIABBBGo2AgAgASgCCCACIAE2AgwgAkKAgICAgMjQBzcCBCACrUKAgICAoA+EIQdBgICABHENASACIAc3AxAgAkIBNwIkIAJBATYCHCACQaD4xwA2AhggAiACQRBqNgIgIAJBBGpBoLrFACACQRhqEMEDDAILIAEoAgAiAyAAKAIQIAAoAhQgASgCBCgCDCIBEQAADQUMBAsgAiAHNwMQIAJBATYCLCACQaz5xwA2AiggAkEBNgIkIAJBATYCHCACQaD4xwA2AhggAiACQRBqNgIgIAJBBGpBoLrFACACQRhqEMEDCyIDQQAgAigCBCIFG0UEQCADDQQgBUUNAUGgt8UAQTcgAkEYakGQt8UAQdi3xQAQ4AYACyABKAIAQfy2xQBBFCABKAIEKAIMEQAADQMLIAEoAgAhAyABKAIEKAIMIQEMAQsCQAJAAkAgACgCJCIERQ0AIAAoAiAhAANAIAJBGGogACAEEPsCAkAgAigCGEEBRgRAIAItACEhAyACLQAgIQUgAigCHCEGIAFBxPnHAEEDEJcDRQ0BDAULIAEgAigCHCACKAIgEJcDDQQMAgsgBUEBcUUNASAEIAMgBmoiA0kNAiAAIANqIQAgBCADayIEDQALC0EAIQQMAwsgAyAEIARByPnHABDqBwALQQEhBAwBCyADIAAoAhggACgCHCABEQAAIQQLIAJBMGokACAEC+MDAQd/IwBB0AFrIgUkACAAIAE6AOgBIAAoAgAhAiAAQQI2AgACQAJAIAJBAkcEQCAFIAI2AhQgBUEYaiAAQQRqQbgB/AoAACAFQQhqIAEgBUEUahDVAwJAIAUoAggiASAAKALAASAAKALEASAFKAIMIgIoAhARAAAiCARAIAIoAgAiAARAIAEgABEDAAsgAigCBCIARQ0BIAFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIABqSQ0DIAJBACAEIABBJ2pLGw0EIAEQogIMAQsgAEEANgLEASAAKALUASIEQYCAgIB4ckGAgICAeEcEQCAAKALYASIGQQRrKAIAIgNBeHEiB0EEQQggA0EDcSIDGyAEakkNAyADQQAgByAEQSdqSxsNBCAGEKICCyAAQYCAgIB4NgLUAQJAIAAoAuABIgRFDQAgACgC5AEiBigCACIDBEAgBCADEQMACyAGKAIEIgZFDQAgBEEEaygCACIDQXhxIgdBBEEIIANBA3EiAxsgBmpJDQMgA0EAIAcgBkEnaksbDQQgBBCiAgsgACACNgLkASAAIAE2AuABCyAFQdABaiQAIAgPC0Hs4MEAEN0JAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL+wMCD38BfiADIAEoAhgiCiAFayIJSwRAQQAgASgCDCIIayEQIAQgCGohESAIIAUgBSAISRsiEiAIayETIAEoAiAhDSABKAIQIQ8gASkDACEWA0ACQAJAIBYgAiAJajEAAIhCAYNQBEAgASAJNgIYIAUhByAJIQogBg0CDAELIAggDSAIIAggDUsbIAYbIgdBAWsgBUkhDAJAAkACQAJAA0AgB0UEQCAQIAUgDSAGGyIHIAggByAISxtqIQ4gCCAJaiEHIBMhCyARIQwDQCAORQRAIAEgCTYCGCAGRQRAIAEgBTYCIAsgACAKNgIIIAAgCTYCBCAAQQE2AgAPCyALRQ0DIAMgB00NBCAOQQFrIQ4gC0EBayELIAIgB2ohFCAMLQAAIAxBAWohDCAHQQFqIQcgFC0AAEYNAAsgCiAPayEKIA8hByAGRQ0GDAcLIAdBAWshByAMRQ0EIAcgCWoiCyADTw0DIAQgB2otAAAgAiALai0AAEYNAAsgByAKaiAIayEKIAUhByAGRQ0EDAULIBIgBUHonsYAEIwHAAsgAyAIIAlqIgAgACADSRsgA0H4nsYAEIwHAAsgCyADQZifxgAQjAcACyAHIAVBiJ/GABCMBwALIAEgBzYCICAHIQ0LIAogBWsiCSADSQ0ACwsgAUEANgIYIABBADYCAAvgAwEHfyMAQdABayIFJAAgACABOgDwASAAKAIAIQIgAEECNgIAAkACQCACQQJHBEAgBSACNgIMIAVBEGogAEEEakHAAfwKAAAgBSABIAVBDGoQ1AMCQCAFKAIAIgEgACgCyAEgACgCzAEgBSgCBCICKAIQEQAAIggEQCACKAIAIgAEQCABIAARAwALIAIoAgQiAEUNASABQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAAakkNAyACQQAgBCAAQSdqSxsNBCABEKICDAELIABBADYCzAEgACgC3AEiBEGAgICAeHJBgICAgHhHBEAgACgC4AEiBkEEaygCACIDQXhxIgdBBEEIIANBA3EiAxsgBGpJDQMgA0EAIAcgBEEnaksbDQQgBhCiAgsgAEGAgICAeDYC3AECQCAAKALoASIERQ0AIAAoAuwBIgYoAgAiAwRAIAQgAxEDAAsgBigCBCIGRQ0AIARBBGsoAgAiA0F4cSIHQQRBCCADQQNxIgMbIAZqSQ0DIANBACAHIAZBJ2pLGw0EIAQQogILIAAgAjYC7AEgACABNgLoAQsgBUHQAWokACAIDwtB7ODBABDdCQALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+UDAQd/IwBB8ABrIgUkACAAIAE6AIwBIAAoAhghAiAAQYCAgIB4NgIYAkACQCACQYCAgIB4RwRAIAUgAjYCECAFQRRqIABBHGpB3AD8CgAAIAVBCGogASAFQRBqENkDAkAgBSgCCCIBIAAoAgQgACgCCCAFKAIMIgIoAhARAAAiCARAIAIoAgAiAARAIAEgABEDAAsgAigCBCIARQ0BIAFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIABqSQ0DIAJBACAEIABBJ2pLGw0EIAEQogIMAQsgAEEANgIIIAAoAngiBEGAgICAeHJBgICAgHhHBEAgACgCfCIGQQRrKAIAIgNBeHEiB0EEQQggA0EDcSIDGyAEakkNAyADQQAgByAEQSdqSxsNBCAGEKICCyAAQYCAgIB4NgJ4AkAgACgChAEiBEUNACAAKAKIASIGKAIAIgMEQCAEIAMRAwALIAYoAgQiBkUNACAEQQRrKAIAIgNBeHEiB0EEQQggA0EDcSIDGyAGakkNAyADQQAgByAGQSdqSxsNBCAEEKICCyAAIAI2AogBIAAgATYChAELIAVB8ABqJAAgCA8LQezgwQAQ3QkAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuRBAEGfyAAIAEoAgAiBDYCqAEgACABKAIEIgc2AqwBIABBASAEQRZ2IARB////AXFBAEdqIgIgAkEBTRtBgBAgBEELdiAEQf8PcUEAR2oiAiACQYAQTxtBASAEG2wiAkELdDYCpAEgAkENdCIFELYJIQIgACgCsAEiA0GECE8EQCADEJsHCyAAIAI2ArABIAUQtgkhAiAAKAK0ASIDQYQITwRAIAMQmwcLIAAgAjYCtAEgBwR/IAUQtgkhA0EBBUEACyECAkAgACgCAEUNACAAKAIEIgZBhAhJDQAgBhCbBwsgACADNgIEIAAgAjYCACAHQQJJBH9BAAUgBRC2CSEDQQELIQICQCAAKAIIRQ0AIAAoAgwiBkGECEkNACAGEJsHCyAAIAM2AgwgACACNgIIIAdBA0kEf0EABSAFELYJIQNBAQshAgJAIAAoAhBFDQAgACgCFCIGQYQISQ0AIAYQmwcLIAAgAzYCFCAAIAI2AhAgB0EDSQR/QQAFIAUQtgkhBUEBCyECAkAgACgCGEUNACAAKAIcIgNBhAhJDQAgAxCbBwsgACAFNgIcIAAgAjYCGEEBIQICQCABLQAIQQFHBEBBACECDAELIARBAnQQtgkhBAsCQCAAKAI8RQ0AIAAoAkAiAUGECEkNACABEJsHCyAAQgA3ArgBIAAgBDYCQCAAIAI2AjwgAEHAAWpBADoAAAvsAwEIfyMAQSBrIgckAAJAAkACQCAALQC4AUUEQCAAKAJkIQUMAQsgACgCrAEgACgCsAEiBUECdCAFIAAoArQBIgVqQQJ0EOEIIQggBUECdCIGIAAoAmQiBUsNASAAKAJgIQkgByAIELgKIgo2AgAgByAGNgIEIAYgCkcNAiAIIAkgBhDgCSAIQYQISQ0AIAgQmwcLIABCADcCsAEgAEG4AWpBADoAACAFIAJBAnQiBkkEQCAFIQggBiAFayIJIAAoAlwgBWtLBEAgAEHcAGogBSAJQQRBBBCkBSAAKAJkIQgLIAAoAmAiCyAIQQJ0IgxqIQogCUECTwRAIAYgBUF/c2pBAnQiBgRAIApBACAG/AsACyACQQR0IAVBAnRrIAtqIAxqQQRrIQogCCAJakEBayEICyAKQQA2AgAgCEEBaiEGCyAAIAY2AmQCQCAAKAIIQQFHDQAgACgCYCIFIAYgAyAEIAIgACoClAEQ4wEgACgCDCABQQJ0IAEgAmpBAnQQ4QgiABC4CiEBIAcgBjYCBCAHIAE2AgAgASAGRw0CIAAgBSAGEOAJIABBhAhJDQAgABCbBwsgB0EgaiQADwtBACAGIAVB/OvAABDqBwALIAdBADYCCEEAIAcgB0EEaiAHQQhqQeD5xAAQ9QcAC+wDAQh/IwBBIGsiByQAAkACQAJAIAAtALgBRQRAIAAoAmQhBQwBCyAAKAKsASAAKAKwASIFQQJ0IAUgACgCtAEiBWpBAnQQ4QghCCAFQQJ0IgYgACgCZCIFSw0BIAAoAmAhCSAHIAgQuAoiCjYCACAHIAY2AgQgBiAKRw0CIAggCSAGEOAJIAhBhAhJDQAgCBCbBwsgAEIANwKwASAAQbgBakEAOgAAIAUgAkECdCIGSQRAIAUhCCAGIAVrIgkgACgCXCAFa0sEQCAAQdwAaiAFIAlBBEEEEKQFIAAoAmQhCAsgACgCYCILIAhBAnQiDGohCiAJQQJPBEAgBiAFQX9zakECdCIGBEAgCkEAIAb8CwALIAJBBHQgBUECdGsgC2ogDGpBBGshCiAIIAlqQQFrIQgLIApBADYCACAIQQFqIQYLIAAgBjYCZAJAIAAoAhBBAUcNACAAKAJgIgUgBiADIAQgAiAAKgKYARDaAyAAKAIUIAFBAnQgASACakECdBDhCCIAELgKIQEgByAGNgIEIAcgATYCACABIAZHDQIgACAFIAYQ4AkgAEGECEkNACAAEJsHCyAHQSBqJAAPC0EAIAYgBUH868AAEOoHAAsgB0EANgIIQQAgByAHQQRqIAdBCGpB4PnEABD1BwALvQUAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEEBaw4YAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYAAsgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAA8LIABBBGogARCeBA8LIAEoAgBB7KDGAEEYIAEoAgQoAgwRAAAPCyABKAIAQYShxgBBGyABKAIEKAIMEQAADwsgASgCAEGfocYAQRogASgCBCgCDBEAAA8LIAEoAgBBuaHGAEEZIAEoAgQoAgwRAAAPCyABKAIAQdKhxgBBDCABKAIEKAIMEQAADwsgASgCAEHeocYAQRMgASgCBCgCDBEAAA8LIAEoAgBB8aHGAEETIAEoAgQoAgwRAAAPCyABKAIAQYSixgBBDiABKAIEKAIMEQAADwsgASgCAEGSosYAQQ4gASgCBCgCDBEAAA8LIAEoAgBBoKLGAEEMIAEoAgQoAgwRAAAPCyABKAIAQayixgBBDiABKAIEKAIMEQAADwsgASgCAEG6osYAQQ4gASgCBCgCDBEAAA8LIAEoAgBByKLGAEETIAEoAgQoAgwRAAAPCyABKAIAQduixgBBGiABKAIEKAIMEQAADwsgASgCAEH1osYAQT4gASgCBCgCDBEAAA8LIAEoAgBBs6PGAEEUIAEoAgQoAgwRAAAPCyABKAIAQcejxgBBNCABKAIEKAIMEQAADwsgASgCAEH7o8YAQSwgASgCBCgCDBEAAA8LIAEoAgBBp6TGAEEkIAEoAgQoAgwRAAAPCyABKAIAQcukxgBBDiABKAIEKAIMEQAADwsgASgCAEHZpMYAQRMgASgCBCgCDBEAAA8LIAEoAgBB7KTGAEEcIAEoAgQoAgwRAAAPCyABKAIAQYilxgBBGCABKAIEKAIMEQAAC7gDAgl/AX4CQAJAAkAgACgCBCIHRQ0AIAAoAgwiCARAIAAoAgAiAUEIaiEDIAEpAwBCf4VCgIGChIiQoMCAf4MhCgNAIApQBEADQCABQcABayEBIAMpAwAgA0EIaiEDQoCBgoSIkKDAgH+DIgpCgIGChIiQoMCAf1ENAAsgCkKAgYKEiJCgwIB/hSEKCyABIAp6p0EDdkFobGoiAkEYaygCACIEBEAgAkEUaygCACIFQQRrKAIAIgZBeHEiCUEEQQggBkEDcSIGGyAEakkNBCAGQQAgCSAEQSdqSxsNBSAFEKICCyACQQxrKAIAIgQEQCACQQhrKAIAIgJBBGsoAgAiBUF4cSIGQQRBCCAFQQNxIgUbIARqSQ0EIAVBACAGIARBJ2pLGw0FIAIQogILIApCAX0gCoMhCiAIQQFrIggNAAsLIAdBGGwiASAHakEhaiIDRQ0AIAAoAgAgAWsiAEEcaygCACIBQXhxIgJBBEEIIAFBA3EiARsgA2pJDQEgAUEAIAIgA0EnaksbDQIgAEEYaxCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvjAwELfyMAQRBrIgYkAAJAAkAgAyAEbCIHQf////8DSw0AIAdBAnQiCUH9////B08NAAJAIAlFBEBBBCELQQAhBwwBCyAJEHEiC0UNAgsgBkEANgIMIAYgCzYCCCAGIAc2AgQCQCAEBEAgBEEBdCEPA0AgDEECdCEOIA1BAXQhByANQQFqIQ0gAyEJA0AgB0EBaiACTw0DAn8gASAHai8AACIFQf//AXEEQCAFQf8HcSEIIAVBgIACcSEKIAVBgPgBcSIFQYD4AUcEQCAKQRB0IQogBUENdEGAgID8AHEgCEENdHJBgICAwANqIApyIAUNAhogCkGAgIDYA3IgCGdBEGsiBUEXdGsgCCAFQf//A3FBCGp0Qf///wNxcgwCCyAKQRB0IQUgBSAIQQ10ckGAgID+B3IgCA0BGiAFQYCAgPwHcgwBCyAFQRB0CyEIIAYoAgQgDEYEQCAGQQRqQazmxwAQ+gUgBigCCCELCyALIA5qIAg2AgAgBiAMQQFqIgw2AgwgDkEEaiEOIAcgD2ohByAJQQFrIgkNAAsgBCANRw0ACwsgACAGKQIENwIAIABBCGogBkEMaigCADYCACAGQRBqJAAPCyAHIAdBAmogAkG85scAEOoHAAtBnObHABD/BwsAC8wDAQV7QQAhBQJAIARFDQAgAS0AACECAkAgBEEPTQRAIAMhAQNAIAEtAAAgAkYNAiABQQFqIQEgBEEBayIEDQALDAILIAL9DyIHIAP9AAAA/SP9ZCIBBEAgAyABaGohAQwBCyADIARqIQYgA0FwcUEQaiEBAkACQAJAIARBwABJDQAgASAGQUBqIgRLDQAgAyADQQ9xa0FAayEBA0AgByABQSBr/QAEAP0jIgggByABQTBrIgL9AAQA/SMiCf1QIAcgAUEQa/0ABAD9IyIK/VAgByAB/QAEAP0jIgv9UP1kDQIgAUEQaiABQUBrIQEgBE0NAAsgAUEwayEBCyABIAZBEGsiBEsNAQNAIAcgAf0AAAD9I/1kIgJFBEAgBCABQRBqIgFPDQEMAwsLIAEgAmhqIQEMAgsCQCAJ/WQiAUUEQCAI/WQiAQ0BIAr9ZCIBRQRAIAv9ZGggAkEwamohAQwECyABaCACQSBqaiEBDAMLIAIgAWhqIQEMAgsgAWggAkEQamohAQwBCyABIAZPDQEgByAGQRBrIgH9AAAA/SP9ZCICBEAgASACaGohAQwBCwwBCyABIANrIQFBASEFCyAAIAE2AgQgACAFNgIAC5gEAQd/IwBBEGsiCCQAIAFBBGohBAJAAkACQAJAAn8gASgCJCIDQQlJBEBBCCEGIAQhByABQSRqDAELIAEoAgghByADIQYgBAsoAgAiCSACTQRAAkACQAJAAkACQCACQQlPBEBBgYCAgHghBSACIAZGDQpBACEFIAJB/////wNLIAJBAnQiBEH8////B0tyDQogA0EJSQ0CIAZBAnQhAyAGQf////8DTQ0BIAMhBAwKC0GBgICAeCEFIANBCUkNCSABQQA2AgAgCUECdCICBEAgBCAHIAL8CgAACyABIAk2AiQgBkECdCIBQf3///8HSSAGQf////8DTXENBCAIIAE2AgwgCEEANgIIQdjmyABBKyAIQQhqQcikwQBBxMzHABDgBgALIANB/f///wdJDQEgAyEEDAgLIAQQcSIDDQFBBCEFDAcLQQQhBSAHIANBBCAEELsCIgNFDQYMBQsgCUECdCIFRQ0EIAMgByAF/AoAAAwECyAHQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiAHEKICDAQLQfTMxwBBIEGUzccAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAEgAjYCJCABIAM2AgggASAJNgIEIAFBATYCAEGBgICAeCEFCyAAIAQ2AgQgACAFNgIAIAhBEGokAAuYBAEHfyMAQRBrIggkAEEEIQQgAUEEaiEFAkACQAJAAkACfyABKAIUIgNBBUkEQCAFIQYgAUEUagwBCyABKAIIIQYgAyEEIAULKAIAIgkgAk0EQAJAAkACQAJAAkAgAkEFTwRAQYGAgIB4IQcgAiAERg0KQQAhByACQf////8DSyACQQJ0IgVB/P///wdLcg0KIANBBUkNAiAEQQJ0IQMgBEH/////A00NASADIQUMCgtBgYCAgHghByADQQVJDQkgAUEANgIAIAlBAnQiAgRAIAUgBiAC/AoAAAsgASAJNgIUIARBAnQiAUH9////B0kgBEH/////A01xDQQgCCABNgIMIAhBADYCCEHY5sgAQSsgCEEIakHIpMEAQcTMxwAQ4AYACyADQf3///8HSQ0BIAMhBQwICyAFEHEiBA0BQQQhBwwHC0EEIQcgBiADQQQgBRC7AiIERQ0GDAULIAlBAnQiA0UNBCAEIAYgA/wKAAAMBAsgBkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDQEgAkEAIAMgAUEnaksbDQIgBhCiAgwEC0H0zMcAQSBBlM3HABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyABIAI2AhQgASAENgIIIAEgCTYCBCABQQE2AgBBgYCAgHghBwsgACAFNgIEIAAgBzYCACAIQRBqJAALmgMBBH8CQAJAIAAoAiwiAQRAIAAoAigiA0EEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAWpJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCNCIBBEAgACgCMCIDQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiADEKICCwJAIAAoAowBIgFFDQAgASABKAIAIgFBAWs2AgAgAUEBRw0AIAAoAowBEN0FCwJAIAAoApABIgFFDQAgASABKAIAIgFBAWs2AgAgAUEBRw0AIAAoApABEN0FCyAAKAI8IgEEQCAAKAI4IgNBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAngiAQRAIAAoAnwiAEEEaygCACIDQXhxIgIgAUEFdCIBQQRBCCADQQNxIgMbckkNASADQQAgAiABQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC50DAQp/IAAoAgAhAwJAAkACQCAAKAIMIgJFDQAgACgCBCEFIAMgACgCCCIBIANBACABIANPG2siASACaiACIAMgAWsiB0sbIgQgAUcEQCAEIAFrIQQgBSABQQxsaiEBA0AgASgCACIGBEAgAUEEaigCACIJQQRrKAIAIghBeHEiCiAGQQJ0IgZBBEEIIAhBA3EiCBtqSQ0EIAhBACAKIAZBJ2pLGw0FIAkQogILIAFBDGohASAEQQFrIgQNAAsLIAIgB00NACACIAdrIgFBACABIAJNGyEBA0AgBSgCACICBEAgBUEEaigCACIHQQRrKAIAIgRBeHEiBiACQQJ0IgJBBEEIIARBA3EiBBtqSQ0DIARBACAGIAJBJ2pLGw0EIAcQogILIAVBDGohBSABQQFrIgENAAsLIAMEQCAAKAIEIgBBBGsoAgAiAUF4cSICIANBDGwiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAIgA0EnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuTBAMHfwF7AX4jAEEwayIEJAAgASgCACEIAkACQAJAAkACQAJAAkACQCABKAIEIgcEQAJAIAdBBE8EQCAIQRxqIQMgB0F8cSIFIQIDQCADIANBCGsgA0EQayADQRhr/VwCAP1WAgAB/VYCAAL9VgIAAyAJ/a4BIQkgA0EgaiEDIAJBBGsiAg0ACyAJIAkgCf0NCAkKCwwNDg8AAQIDAAECA/2uASIJIAkgCf0NBAUGBwABAgMAAQIDAAECA/2uAf0bACECIAUgB0YNAQsgByAFayEGIAVBA3QgCGpBBGohAwNAIAMoAgAgAmohAiADQQhqIQMgBkEBayIGDQALCyABKAIMIgMNAUEAIQMMBAsgASgCDCIDRQ0BDAILIAJBD0sNASADIQYgCCgCBA0BC0EBIQVBACECDAILIAJBACACQQBKG0EBdCECCyACQQBIDQECQCACRQRAQQEhBUEAIQIMAQsgAhBxIgVFDQMLIAMhBgsgBEEANgIQIAQgBTYCDCAEIAI2AgggASkCECEKIAEoAgghASAEIAo3AiQgBCAGNgIgIAQgATYCHCAEIAc2AhggBCAINgIUIARBCGpBjO/BACAEQRRqEMEDDQIgACAEKQIINwIAIABBCGogBEEQaigCADYCACAEQTBqJAAPC0GU7sEAEP8HCwALQZj6xwBB1gAgBEEvakGk7sEAQbTuwQAQ4AYAC/IDAQh/IAEoAgQiBQRAIAEoAgAhBANAAkAgA0EBaiECAn8gAiADIARqLQAAIgjAIglBAE4NABoCQAJAAkACQAJAAkACQAJAAkACQAJAIAgtAPSWQkECaw4DAAECDAtBm9HAACACIARqIAIgBU8bLAAAQUBODQsgA0ECagwKC0Gb0cAAIAIgBGogAiAFTxssAAAhByAIQeABayIGRQ0BIAZBDUYNAgwDC0Gb0cAAIAIgBGogAiAFTxssAAAhBiAIQfABaw4FBAMDAwUDCyAHQWBxQaB/Rw0IDAYLIAdBn39KDQcMBQsgCUEfakH/AXFBDE8EQCAJQX5xQW5HIAdBQE5yDQcMBQsgB0FATg0GDAQLIAlBD2pB/wFxQQJLIAZBQE5yDQUMAgsgBkHwAGpB/wFxQTBPDQQMAQsgBkGPf0oNAwtBm9HAACAEIANBAmoiAmogAiAFTxssAABBv39KDQJBm9HAACAEIANBA2oiAmogAiAFTxssAABBv39KDQIgA0EEagwBC0Gb0cAAIAQgA0ECaiICaiACIAVPGywAAEFATg0BIANBA2oLIgMiAiAFSQ0BCwsgACADNgIEIAAgBDYCACABIAUgAms2AgQgASACIARqNgIAIAAgAiADazYCDCAAIAMgBGo2AggPCyAAQQA2AgAL+AMBB38jAEEQayIHJABBASEJIAEgASgCFCIFQQFqIgY2AhQCQCAGIAEoAhAiCE8NAAJAAkAgASgCDCAGai0AAEEraw4DAQIAAgtBACEJCyABIAVBAmoiBjYCFAsCQAJAAkACfwJAAkAgBiAISQRAIAEgBkEBaiIFNgIUIAEoAgwiCiAGai0AAEEwa0H/AXEiBkEKTw0BAkAgBSAITw0AA0AgBSAKai0AAEEwa0H/AXEiC0EKTw0BIAEgBUEBaiIFNgIUIAZBzJmz5gBHIAtBB0tyIAZBy5mz5gBKcQ0GIAZBCmwgC2ohBiAFIAhHDQALCyAJDQIgBCAGayIFQR91QYCAgIB4cyAFIAZBAEogBCAFSnMbDAMLIAdBCGogASgCDCAIIAYQ+QEgBygCDCECIAcoAgghBEEUEHEiAUUNBCABIAQ2AgwgAUEFNgIAIAAgATYCBCAAQQE2AgAgASACNgIQDAULIAcgCiAIIAUQ+QEgBygCBCECIAcoAgAhBEEUEHEiAUUNAyABIAQ2AgwgAUENNgIAIAAgATYCBCAAQQE2AgAgASACNgIQDAQLIAQgBmoiBUEfdUGAgICAeHMgBSAGQQBIIAQgBUpzGwshBSAAIAEgAiADIAUQ8AQMAgsgACABIAIgA1AgCRDsBQwBCwALIAdBEGokAAvyAwEGfyMAQRBrIgIkACACQQA2AgQCfyABQYABTwRAIAFBP3FBgH9yIQMgAUEGdiEEIAFBgBBJBEAgAiADOgAFIAIgBEHAAXI6AARBAgwCCyABQQx2IQYgBEE/cUGAf3IhBCABQf//A00EQCACIAM6AAYgAiAEOgAFIAIgBkHgAXI6AARBAwwCCyACIAM6AAcgAiAEOgAGIAIgBkE/cUGAf3I6AAUgAiABQRJ2QXByOgAEQQQMAQsgAiABOgAEQQELIQEgAkEIaiAAKAIIKAIAIAJBBGogARCRBAJAAkACQAJAIAItAAgiBkEERwRAIAAoAgQhASAALQAAIgNBBE0gA0EDR3FFBEAgASgCACEDIAFBBGooAgAiBCgCACIFBEAgAyAFEQMACyAEKAIEIgQEQCADQQRrKAIAIgVBeHEiB0EEQQggBUEDcSIFGyAEakkNAyAFQQAgByAEQSdqSxsNBCADEKICCyABQQRrKAIAIgNBeHEiBEEQQRQgA0EDcSIDG0kNBCADQQAgBEE0TxsNBSABEKICCyAAIAIpAwg3AgALIAJBEGokACAGQQRHDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+sDAgd9CX8gACABIAIQzAMgAkEEdCEOIARBAnQiAUFwcSEPIAFBDGpBcHEhECABQQhqQXBxIRFBAiAEIARBAk0bQQJ0QQRqQXBxIRIgACgCYCETIAAoAmQhDUEAIQFBACEAAkACQAJAAkACQANAIAFBBGoiAiANSw0CQwAAgD8gACATaiIMQQhqKAIAIhRBEHZB/wFxs0MAAH9DlSIGIAaSQwAAgL+SIgWLkyAUQRh2s0MAAH9DlSIGIAaSQwAAgL+SIgqLkyIGjEMAAAAAEOAIIQcgDEEPai0AALNDAAB/Q5VDAAAAP5RD2w9JQJQiCBCZAiEJIAgQmwIhCCAAIBBGDQMgACADaiIMIAkgBSAHjCILIAcgBUMAAAAAYBuSIgUgBiAGlCAFIAWUIAogCyAHIApDAAAAAGAbkiIHIAeUkpKRIgWVlDgCACAAIBFGDQQgDEEEaiAJIAcgBZWUOAIAIAAgEkYNBSAMQQhqIAkgBiAFlZQ4AgAgACAPRg0BIAxBDGogCDgCACACIQEgDiAAQRBqIgBHDQALDwsgAUEDaiAEQczVwAAQjAcACyABIAIgDUHc1cAAEOoHAAsgASAEQZzVwAAQjAcACyABQQFqIARBrNXAABCMBwALIAFBAmogBEG81cAAEIwHAAufBQEPfyMAQRBrIgQkAAJAAkACQAJAIAIEQCACQQJ0IgkQcSIIBEAgCEEEayIQLQAAQQNxRSAJRXJFBEAgCEEAIAn8CwALIAkhBgNAIAEoAgAiAyACTw0FIAggA0ECdGogBTYCACABQQRqIQEgBUEBaiEFIAZBBGsiBg0AC0EAIQYgBEEANgIMIARCgICAgMAANwIEQQQhA0EAIQUCQANAIAUgCCAFQQJ0aiILKAIAIgFHBEAgBkEDdCEMA0AgBCgCBCAGRgRAIwBBIGsiAyQAAkACQCAEQQRqIgcoAgAiCkH/////AEsNAEEEIApBAXQiDSANQQRNGyINQQN0IhFB/P///wdLDQAgAyAKBH8gAyAKQQN0NgIcIAMgBygCBDYCFEEEBUEACzYCGCADQQhqQQQgESADQRRqEIUHIAMoAghBAUcNASADKAIQIQ8gAygCDCEOCyAOIA9B4PbHABCTCQALIAMoAgwhCiAHIA02AgAgByAKNgIEIANBIGokACAEKAIIIQMLIAMgDGoiByAFNgIAIAdBBGogATYCACAEIAZBAWoiBjYCDCABIAJPDQMgCygCACEHIAsgCCABQQJ0aiIBKAIANgIAIAEgBzYCACAMQQhqIQwgCygCACIBIAVHDQALCyAFQQFqIgUgAkcNAAsgACAEKQIENwIAIABBCGogBEEMaigCADYCACAQKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAJakkNAyAAQQAgASAJQSdqSxsNBCAIEKICDAYLIAEgAkHw9scAEIwHCwALIABCgICAgMAANwIAIABBCGpBADYCAAwDC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAyACQdD2xwAQjAcACyAEQRBqJAAL5QMCBH8EfiMAQdAAayIDJAAgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAzggAyABNwMwIAMgAULzytHLp4zZsvQAhTcDICADIAFC7d6R85bM3LfkAIU3AxggAyAANwMoIAMgAELh5JXz1uzZvOwAhTcDECADIABC9crNg9es27fzAIU3AwggAyACLQAAIgU2AkwgA0EIaiIEIANBzABqIgZBBBCCAyAFQQtGBEAgA0EENgJMIAQgBkEEEIIDIAQgAkEBakEEEIIDCyADKQMIIQEgAykDGCEAIAM1AkAhCSADKQM4IQcgAykDICADKQMQIQogA0HQAGokACAHIAlCOIaEIgmFIgdCEIkgByAKfCIHhSIIQhWJIAggACABfCIBQiCJfCIIhSIKQhCJIAogByAAQg2JIAGFIgB8IgFCIIlC/wGFfCIHhSIKQhWJIAogASAAQhGJhSIAIAggCYV8IgFCIIl8IgmFIghCEIkgCCABIABCDYmFIgAgB3wiAUIgiXwiB4UiCEIViSAIIAEgAEIRiYUiACAJfCIBQiCJfCIJhSIIQhCJIAggAEINiSABhSIAIAd8IgFCIIl8IgeFQhWJIABCEYkgAYUiAEINiSAAIAl8hSIAQhGJhSAAIAd8IgBCIImFIACFC/oDAgd/AX4jAEEwayICJAACQAJAAkACQAJAAkAgACgCBCIDDgMBAwIAC0EBIQQgASgCACIFQeCQxgBBByABKAIEIgYoAgwiBxEAAA0EIAIgACgCACIANgIUIAIgAkEUaq1CgICAgNAAhCIJNwMAIAJCATcCJCACQQI2AhwgAkGwkMYANgIYIAIgAjYCICAFIAYgAkEYahDBAw0DQQAhBCADQQN0IgFBCGsiA0UNBCAAIAFqIQggA0EDdiEDIABBCGoiAEEIQQAgAUEIRxtqIQEDQCACIAA2AhQgBUHnkMYAQQIgBxEAAA0EIAIgCTcDACACQgE3AiQgAkECNgIcIAJBsJDGADYCGCACIAI2AiAgBSAGIAJBGGoQwQMNBCABQQhBACABIgAgCEcbaiEBIANBAWsiAw0ACwwEC0GQkMYAQQ5BoJDGABDrBwALIAJCgICAgCAiCSAAKAIAIgCthDcDACACIAkgAEEIaq2ENwMIIAEoAgAgASgCBCACQgI3AiQgAkEDNgIcIAJByJDGADYCGCACIAI2AiAgAkEYahDBAyEEDAILIAIgADUCAEKAgICAIIQ3AwAgASgCACABKAIEIAJCATcCJCACQQI2AhwgAkGwkMYANgIYIAIgAjYCICACQRhqEMEDIQQMAQtBASEECyACQTBqJAAgBAuVBAEHfyMAQRBrIgkkAEEgIQQgASgChAEiAyEGIAFBBGoiBSEHIANBIU8EQCABKAIEIQYgASgCCCEHIAMhBAsCQAJAAkACQCACIAZPBEACQAJAAkACQAJAIAJBIU8EQEGBgICAeCEIIAIgBEYNCkEAIQggAkH/////A0sgAkECdCIFQfz///8HS3INCiADQSFJDQIgBEECdCEDIARB/////wNNDQEgAyEFDAoLQYGAgIB4IQggA0EhSQ0JIAFBADYCACAGQQJ0IgIEQCAFIAcgAvwKAAALIAEgBjYChAEgBEECdCIDQf3///8HSSAEQf////8DTXENBCAJIAM2AgwgCUEANgIIQdjmyABBKyAJQQhqQbTMxwBBxMzHABDgBgALIANB/f///wdJDQEgAyEFDAgLIAUQcSIEDQFBBCEIDAcLQQQhCCAHIANBBCAFELsCIgRFDQYMBQsgBkECdCIDRQ0EIAQgByAD/AoAAAwECyAHQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyADakkNASABQQAgAiADQSdqSxsNAiAHEKICDAQLQfTMxwBBIEGUzccAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAEgAjYChAEgASAENgIIIAEgBjYCBCABQQE2AgBBgYCAgHghCAsgACAFNgIEIAAgCDYCACAJQRBqJAALkgQBB38jAEEQayIJJABBBCEEIAEoAhQiAyEGIAFBBGoiBSEHIANBBU8EQCABKAIEIQYgASgCCCEHIAMhBAsCQAJAAkACQCACIAZPBEACQAJAAkACQAJAIAJBBU8EQEGBgICAeCEIIAIgBEYNCkEAIQggAkH/////A0sgAkECdCIFQfz///8HS3INCiADQQVJDQIgBEECdCEDIARB/////wNNDQEgAyEFDAoLQYGAgIB4IQggA0EFSQ0JIAFBADYCACAGQQJ0IgIEQCAFIAcgAvwKAAALIAEgBjYCFCAEQQJ0IgNB/f///wdJIARB/////wNNcQ0EIAkgAzYCDCAJQQA2AghB2ObIAEErIAlBCGpBtMzHAEHEzMcAEOAGAAsgA0H9////B0kNASADIQUMCAsgBRBxIgQNAUEEIQgMBwtBBCEIIAcgA0EEIAUQuwIiBEUNBgwFCyAGQQJ0IgNFDQQgBCAHIAP8CgAADAQLIAdBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIANqSQ0BIAFBACACIANBJ2pLGw0CIAcQogIMBAtB9MzHAEEgQZTNxwAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgASACNgIUIAEgBDYCCCABIAY2AgQgAUEBNgIAQYGAgIB4IQgLIAAgBTYCBCAAIAg2AgAgCUEQaiQAC5IEAQd/IwBBEGsiCSQAQQghBCABKAIkIgMhBiABQQRqIgUhByADQQlPBEAgASgCBCEGIAEoAgghByADIQQLAkACQAJAAkAgAiAGTwRAAkACQAJAAkACQCACQQlPBEBBgYCAgHghCCACIARGDQpBACEIIAJB/////wNLIAJBAnQiBUH8////B0tyDQogA0EJSQ0CIARBAnQhAyAEQf////8DTQ0BIAMhBQwKC0GBgICAeCEIIANBCUkNCSABQQA2AgAgBkECdCICBEAgBSAHIAL8CgAACyABIAY2AiQgBEECdCIDQf3///8HSSAEQf////8DTXENBCAJIAM2AgwgCUEANgIIQdjmyABBKyAJQQhqQbTMxwBBxMzHABDgBgALIANB/f///wdJDQEgAyEFDAgLIAUQcSIEDQFBBCEIDAcLQQQhCCAHIANBBCAFELsCIgRFDQYMBQsgBkECdCIDRQ0EIAQgByAD/AoAAAwECyAHQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyADakkNASABQQAgAiADQSdqSxsNAiAHEKICDAQLQfTMxwBBIEGUzccAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAEgAjYCJCABIAQ2AgggASAGNgIEIAFBATYCAEGBgICAeCEICyAAIAU2AgQgACAINgIAIAlBEGokAAuPAwEEfwJAAkACQCAALQAAIgFBBEYgAUECRnINACAAKAIEIgFFDQAgACgCCCIDQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiADEKICCwJAIAAtABAiAUEERiABQQJGcg0AIAAoAhQiAUUNACAAKAIYIgNBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILAkAgAC0AICIBQQRGIAFBAkZyDQAgACgCJCIBRQ0AIAAoAigiA0EEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAWpJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsCQCAALQAwIgFBBEYgAUECRnINACAAKAI0IgFFDQAgACgCOCIAQQRrKAIAIgNBeHEiAkEEQQggA0EDcSIDGyABakkNASADQQAgAiABQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC98DAgR/BH4jAEHQAGsiAyQAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwM4IAMgATcDMCADIAFC88rRy6eM2bL0AIU3AyAgAyABQu3ekfOWzNy35ACFNwMYIAMgADcDKCADIABC4eSV89bs2bzsAIU3AxAgAyAAQvXKzYPXrNu38wCFNwMIIAMgAi0AACIFNgJMIANBCGoiBCADQcwAaiIGEIsEIAVBC0YEQCADQQQ2AkwgBCAGEIsEIAQgAkEBahCLBAsgAykDCCEBIAMpAxghACADNQJAIQkgAykDOCEHIAMpAyAgAykDECEKIANB0ABqJAAgByAJQjiGhCIJhSIHQhCJIAcgCnwiB4UiCEIViSAIIAAgAXwiAUIgiXwiCIUiCkIQiSAKIAcgAEINiSABhSIAfCIBQiCJQv8BhXwiB4UiCkIViSAKIAEgAEIRiYUiACAIIAmFfCIBQiCJfCIJhSIIQhCJIAggASAAQg2JhSIAIAd8IgFCIIl8IgeFIghCFYkgCCABIABCEYmFIgAgCXwiAUIgiXwiCYUiCEIQiSAIIABCDYkgAYUiACAHfCIBQiCJfCIHhUIViSAAQhGJIAGFIgBCDYkgACAJfIUiAEIRiYUgACAHfCIAQiCJhSAAhQuOBAEFfyMAQSBrIgMkAAJAAkACQCAAKAIAIgFFDQADQAJAIAAoAggiAiAAKAIETw0AIAEgAmotAABBxQBHDQAgACACQQFqNgIIDAILAkAgBEUNACAAKAIQIgFFDQAgAUHwyccAQQMQlwMNAwsgABCJBUH/AXEiAUECRg0CA0ACQAJAAkACQAJAIAAoAgAiBUUNACAAKAIIIgIgACgCBE8NACACIAVqLQAAQfAARw0AIAAgAkEBajYCCCABQQFxDQEgACgCECIBRQ0CIAFBprPFAEEBEJcDDQgMAgsgAUEBcUUNAiAAKAIQIgJFDQJBASEBIAJBq7PFAEEBEJcDRQ0CDAgLIAAoAhAiAUUNACABQeeQxgBBAhCXAw0GCyAAKAIADQEgACgCECICRQ0AQQEhASACQZOzxQBBARCXAw0GCyAEQQFqIQQgACgCACIBDQIMAwsgAyAAEO8CIAMoAgBFBEAgAy0ABCEEIAAoAhAiAgRAQQEhASACQfqyxQBB6rLFACAEQQFxIgIbQRlBECACGxCXAw0GCyAAIAQ6AARBACEBIABBADYCAAwFCyADIAP9AAIA/QsDEAJAIAAoAhAiAUUNACADQRBqIAEQiwINBCAAKAIQIgFFDQAgAUGBtMUAQQMQlwMNBAtBASEBIAAQhgJFDQALCwwBC0EAIQEMAQtBASEBCyADQSBqJAAgAQvTAwEEfwJAAkACQAJAAkAgAkEHTQRAIAINAQwFCyABQQNqQXxxIgQgAUYNASAEIAFrIQUgASAEayEGQQEhAyABIQQDQCAELQAAQS5GDQUgBEEBaiEEIAZBAWoiBg0ACyAFIAJBCGsiA0sNAwwCC0EBIQMgAS0AAEEuRg0DIAJBAUYEQEEAIQMMBAsgAS0AAUEuRg0DIAJBAkYEQEEAIQMMBAsgAS0AAkEuRg0DIAJBA0YEQEEAIQMMBAsgAS0AA0EuRg0DIAJBBEYEQEEAIQMMBAsgAS0ABEEuRg0DIAJBBUYEQEEAIQMMBAsgAS0ABUEuRg0DQQAhAyACQQZGDQMgAS0ABkEuRiEDDAMLIAJBCGshAwsDQEGAgoQIIAEgBWoiBCgCACIGQa7cuPECc2sgBnJBgIKECCAEQQRqKAIAIgRBrty48QJzayAEcnFBgIGChHhxQYCBgoR4Rw0BIAVBCGoiBSADTQ0ACwsgAiAFRgRAQQAhAwwBCyABIAVqIQQgBUF/cyACaiEGA0AgBC0AAEEuRiIDDQEgBEEBaiEEIAYiBUEBayEGIAUNAAsLIAAgAyAALQAEcjoABCAAKAIAIgAoAgAgASACIAAoAgQoAgwRAAAL/wMBBn8jAEHQA2siAiQAIAEtAFgiA0ECRwRAIAJBIGogAUHUAGooAgA2AgAgAkEYaiABQcwAaikCADcDACACQQZqIAFB2wBqLQAAOgAAIAIgAf0AAjz9CwMIIAIgAS8AWTsBBAsgAkH4AWogAkEgaigCADYCACACQfABaiACQRhqKQMANwMAIAJB/wFqIAJBBmotAAA6AAAgAiAC/QADCP0LA+ABIAIgAzoA/AEgAiACLwEEOwD9ASACQSRqIAFBASACQeABaiIBEHICQAJAAkACfyACKAIkQQJGBEAgAigCKCEDIAJBADYCyAMgAkKAgICAEDcCwAMgAkGck8EANgLkASACQqCAgIAONwLoASACIAJBwANqNgLgASADIAEQrwQNAiACKALAAyEEIAIoAsQDIgYgAigCyAMQ7AghASAEBEAgBkEEaygCACIFQXhxIgdBBEEIIAVBA3EiBRsgBGpJDQQgBUEAIAcgBEEnaksbDQUgBhCiAgsgAyADKAIAKAIAEQMAQQEMAQsgAkGEAmoiASACQSRqQbwB/AoAACABENIBIQFBAAshAyAAIAE2AgQgACADNgIAIAJB0ANqJAAPC0GgnsYAQTcgAkHPA2pBtJPBAEHYnsYAEOAGAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALogQBBH8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAQQEgAS0AACIDQSRrIANBI00bQf8BcUEBaw4DAwECAAsgAEEFNgIAIAAgASkCBDcCBAwJCyACIAH9AAIA/QsDACACQQA2AhggAkKAgICAEDcCECACQey1xAA2AiAgAkKggICADjcCJCACIAJBEGo2AhwgAiACQRxqEOEEDQIgACACKQIQNwIEIABBDGogAkEYaigCADYCACAAQQI2AgAgAEEANgIQIAItAABBJEcNCCACLQAEQQNHDQggAigCCCIAKAIAIQEgAEEEaigCACIDKAIAIgQEQCABIAQRAwALIAMoAgQiAwRAIAFBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIANqSQ0EIARBACAFIANBJ2pLGw0FIAEQogILIABBBGsoAgAiAUF4cSIDQRBBFCABQQNxIgEbSQ0FIAFBACADQTRPGw0GIAAQogIMCAsgAEEDNgIAIABCAzcDCAwHC0EQEHEiA0UNBSAAQbC7xAA2AhggACADNgIUIABBADsBBCAAQQA2AgAgAyAB/QACAP0LAgAMBgtBoJ7GAEE3IAJBL2pBhLbEAEHYnsYAEOAGAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACwALIAJBMGokAAu9BAEFfyMAQSBrIgEkAAJAAkACQAJAAkADQCAAEM8FIAAoAggiAiAAKAIEIgNGDQEgAiADTw0CIAAoAgAiBSACai0AACIEQdwARwRAIARBIkcEQCABQRA2AhQgACABQRRqEIsHIQAMBwsgACACQQFqNgIIQQAhAAwGCyAAIAJBAWoiBDYCCAJAAkACfyADIARLBEAgACACQQJqIgI2AgggBCAFai0AAAwBCyABQQQ2AhQgAUEMaiAAIAFBFGoQ8wYgAS0ADA0GIAQhAiABLQANC0Eiaw5UAgAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAIAAAACAAAAAAAAAAIAAAACAAIBAAsgAUEMNgIUIAAgAUEUahCLByEADAYLIAIgA0sNBAJAIAMgAmtBA00EQCAAIAM2AgggAUEENgIUIAFBDGogACABQRRqEPQGDAELIAAgAkEEajYCCCACIAVqIgItAAFBAXQvAYiURiACLQAAQQF0LwGImEZyIAItAAJBAXQvAYiYRnIgAi0AA0EBdC8BiJRGcsFBAE4EQCABQQA7AQwMAQsgAUEMNgIUIAFBDGogACABQRRqEPQGCyABLwEMQQFHDQALIAEoAhAhAAwECyABQQQ2AhQgACABQRRqEIsHIQAMAwsgAiADQbilxgAQjAcACyABKAIQIQAMAQsgAiADIANByKXGABDqBwALIAFBIGokACAAC+EDAwJ/BX4BeyAAKQM4IQcgACkDKCIEIQYCQAJAAkACQAJAAkAgBCAAKQMIIgVSDQAgACkDMCIGIAApAxAiBVINACAHIQYgByAAKQMYIgVRDQELIAUgBlgNACAAQTBqIQJBAiEDA0AgAkEoaikDACEGIAJBGGopAwAiCCEFAkAgBCAIUg0AIAJBIGopAwAiBSACKQMAIgRSDQAgByEEIAYiBSAHUQ0DCyAEIAVYDQIgAkEgaiECIAYhByAIIQQgASADQQFqIgNHDQALDAILIABBMGohAkECIQMDQAJAIAJBKGopAwAhBiACQRhqKQMAIgghBQJAAkAgBCAIUg0AIAJBIGopAwAiBSACKQMAIgRSDQAgByEEIAYiBSAHUQ0BCyAEIAVWDQELIAJBIGohAiAGIQcgCCEEIAEgA0EBaiIDRw0BDAULCyABIANGDQMMAgsgASADRw0BCyABQQF2IQMgAUEFdCAAakEgayECA0AgAP0AAwAhCSAAIAL9AAMA/QsDACACIAn9CwMAIABBEGoiAf0AAwAhCSABIAJBEGoiAf0AAwD9CwMAIAEgCf0LAwAgAkEgayECIABBIGohACADQQFrIgMNAAsMAQsgACABQQAgAUEBcmdBAXRBPnMQqgELC9YDAQt/IwBBEGsiCCQAAkACQAJAAkAgAyAEbCIHQf////8DSw0AIAdBAnQiCkH9////B08NAAJAIApFBEBBBCELQQAhBwwBCyAKEHEiC0UNAgsgCEEANgIMIAggCzYCCCAIIAc2AgQgAxBxIgxFDQEgDEEEayIQKAIAIglBA3EiB0UgA0VyRQRAIAxBACAD/AsACwJAIAQEQCAGIAWTIQZBACEHA0AgDUECdCEOIAdBAWogAyEPIAwhCQNAIAIgB00NAyAJIAEgB2otAAAgCS0AAGoiEToAACAIKAIEIA1GBEAgCEEEakGs6ccAEPoFIAgoAgghCwsgCyAOaiAFIAYgEUH/AXGzQwAAf0OVlJI4AgAgCCANQQFqIg02AgwgCUEBaiEJIA5BBGohDiAEIAdqIQcgD0EBayIPDQALIgcgBEcNAAsgECgCACIJQQNxIQcLIAAgCCkCBDcCACAAQQhqIAhBDGooAgA2AgAgCUF4cSIAQQRBCCAHGyADakkNAyAHQQAgACADQSdqSxsNBCAMEKICIAhBEGokAA8LIAcgAkGc6ccAEIwHAAtBjOnHABD/BwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuOAwEEfwJAAkAgACgCDCICQYCAgIB4ckGAgICAeEcEQCAAKAIQIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAhhBgICAgHhHBEAgAEEYahD2AgsgACgCACICBEAgACgCBCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJ4IgJBgICAgHhyQYCAgIB4RwRAIAAoAnwiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsCQCAAKAKEASICRQ0AIAAoAogBIgAoAgAiAwRAIAIgAxEDAAsgACgCBCIARQ0AIAJBBGsoAgAiA0F4cSIBQQRBCCADQQNxIgMbIABqSQ0BIANBACABIABBJ2pLGw0CIAIQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALjAMBBH8CQAJAIAAoAgwiAkGAgICAeHJBgICAgHhHBEAgACgCECIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAIYQYCAgIB4RwRAIABBGGoQ9QILIAAoAgAiAgRAIAAoAgQiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCWCICQYCAgIB4ckGAgICAeEcEQCAAKAJcIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILAkAgACgCZCICRQ0AIAAoAmgiACgCACIDBEAgAiADEQMACyAAKAIEIgBFDQAgAkEEaygCACIDQXhxIgFBBEEIIANBA3EiAxsgAGpJDQEgA0EAIAEgAEEnaksbDQIgAhCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvJAwINfwF+An8gAyAFQQFrIg0gASgCFCIIaiIHSwRAIAUgASgCECIOayEPIAEoAhwhCyABKAIIIQogASkDACEUA0ACQCABAn8CQCAUIAIgB2oxAACIQgGDUARAIAEgBSAIaiIINgIUIAYNAwwBCyAKIAsgCiAKIAtJGyAGGyIJIAUgBSAJSRshDCACIAhqIRAgCSEHAkACQAJAA0AgByAMRgRAQQAgCyAGGyEMIAohBwNAIAcgDE0EQCABIAUgCGoiAjYCFCAGRQRAIAFBADYCHAsgACACNgIIIAAgCDYCBEEBDAwLIAdBAWsiByAFTw0FIAcgCGoiCSADTw0DIAQgB2otAAAgAiAJai0AAEYNAAsgASAIIA5qIgg2AhQgDyAGRQ0GGgwHCyAHIAhqIhEgA08NAiAHIBBqIRIgBCAHaiAHQQFqIQctAAAgEi0AAEYNAAsgESAKa0EBaiEIIAZFDQMMBQsgCSADQfiexwAQjAcACyADIAggCWoiACAAIANJGyADQYifxwAQjAcACyAHIAVB6J7HABCMBwALQQALIgc2AhwgByELCyAIIA1qIgcgA0kNAAsLIAEgAzYCFEEACyEHIAAgBzYCAAvtAwIFfwF7QQJBAyACQQhGGyEJAkACQCAFBEAgAUEBayADbiEGIAMhByACIQoDQCAGRQ0CIAZBAWshBiAIIAAgB2otAABqIQggAyAHaiEHIApBAWsiCg0ACyAJQQFqIQkLIARFDQECeyAA/VwAAf2JAf2pASAA/VwABf2JAf2pAf2uASILIAJBHHEiBkEIRg0AGiALIAD9XAAJ/YkB/akB/a4BIgsgBkEMRg0AGiALIAD9XAAN/YkB/akB/a4BCyILIAsgC/0NCAkKCwwNDg8AAQIDAAECA/2uASILIAsgC/0NBAUGBwABAgMAAQIDAAECA/2uAf0bACEHIAIgBkcEQCACIAZrIQogACAGakEBaiEGA0AgByAGLQAAaiEHIAZBAWohBiAKQQFrIgoNAAsLIAlBAWohCSAHIAhqIQgMAQsgByABQdjixAAQjAcAC0EBIAlBAWt0IAhqIAl2IgcgB0GAfyAFGyAEGyEEIANBAWohCCABQQFrIgUgA2shBiAFIANuIQVBACEHAkACQANAIAUgB0YNAiACIAZNBEAgAgRAIAAgCGogBCAC/AsACyAGIANrIQYgAyAIaiEIIAIgB0EBaiIHRg0CDAELC0EAIAIgBkG44sQAEOoHAAsPCyAIIAEgAUHI4sQAEOoHAAvdAwIEfgZ/IAEpAxAgASkDGCACEPIDIQUgASgCBCIJIAWncSEHIAVCGYhC/wCDQoGChIiQoMCAAX4hBiABKAIAIQoCQAJAIAItAAAiC0ELRwRAA0AgByAKaikAACIEIAaFIgNCf4UgA0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIDUEUEQANAIAogA3qnQQN2IAdqIAlxQWhsaiIMQRhrLQAAIAtGDQQgA0IBfSADgyIDUEUNAAsLIAQgBEIBhoNCgIGChIiQoMCAf4NCAFINAyAHIAhBCGoiCGogCXEhBwwACwALIAIoAAEhCwNAIAcgCmopAAAiBCAGhSIDQn+FIANCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiA1BFBEADQCAKIAN6p0EDdiAHaiAJcUFobGoiDEEYay0AAEELRgRAIAxBF2soAAAgC0YNBAsgA0IBfSADgyIDUEUNAAsLIAQgBEIBhoNCgIGChIiQoMCAf4NQRQ0CIAcgCEEIaiIIaiAJcSEHDAALAAsgAEEMOgAMIAAgATYCBCAAIAw2AgAPCyABKAIIRQRAIAEgAUEQahDAAQsgACABNgIIIAAgBTcDACAAIAIoAAA2AAwgAEEQaiACQQRqLQAAOgAAC40DAQR/AkACQCAAKALQASICQYCAgIB4ckGAgICAeEcEQCAAKALUASIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAIAQQJHBEAgABCKAgsgACgCxAEiAgRAIAAoAsgBIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAtwBIgJBgICAgHhyQYCAgIB4RwRAIAAoAuABIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILAkAgACgC6AEiAkUNACAAKALsASIAKAIAIgMEQCACIAMRAwALIAAoAgQiAEUNACACQQRrKAIAIgNBeHEiAUEEQQggA0EDcSIDGyAAakkNASADQQAgASAAQSdqSxsNAiACEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC40DAQR/AkACQCAAKALIASICQYCAgIB4ckGAgICAeEcEQCAAKALMASIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAIAQQJHBEAgABDAAgsgACgCvAEiAgRAIAAoAsABIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIAAoAtQBIgJBgICAgHhyQYCAgIB4RwRAIAAoAtgBIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILAkAgACgC4AEiAkUNACAAKALkASIAKAIAIgMEQCACIAMRAwALIAAoAgQiAEUNACACQQRrKAIAIgNBeHEiAUEEQQggA0EDcSIDGyAAakkNASADQQAgASAAQSdqSxsNAiACEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9wDAQd/IwBBIGsiAyQAIAAoAgwhBAJAAkACQCAAKAIUIgEgACgCECICSQRAA0AgASAEai0AACIFQQlrIgdBF0tBASAHdEGTgIAEcUVyDQIgACABQQFqIgE2AhQgASACRw0ACyACIQELIAMgBCACIAFBAWoiACACIAAgAkkbEPkBIAMoAgQhACADKAIAIQJBFBBxIgFFDQIgASACNgIMIAFBBTYCACABIAA2AhAMAQsgBUHuAEYEQCAAIAFBAWoiBjYCFAJAIAIgBk0NACAAIAFBAmoiBTYCFAJAIAQgBmotAABB9QBHDQAgBSAGIAIgAiAGSRsiBkYNASAAIAFBA2oiBzYCFCAEIAVqLQAAQewARwRAIAchBQwBCyAGIAdGDQEgACABQQRqIgU2AhRBACEBIAQgB2otAABB7ABGDQMLIANBEGogBCACIAUQ+QEgAygCFCEAIAMoAhAhAkEUEHEiAUUNAyABIAI2AgwgAUEJNgIAIAEgADYCEAwCCyADQQhqIAQgAiAGEPkBIAMoAgwhACADKAIIIQJBFBBxIgFFDQIgASACNgIMIAFBBTYCACABIAA2AhAMAQsgACADQR9qQcjAwQAQ7gEgABDrBSEBCyADQSBqJAAgAQ8LAAvGAwINfwF+IAMgBUEBayINIAEoAhQiCGoiB0sEQCAFIAEoAhAiDmshDyABKAIcIQsgASgCCCEKIAEpAwAhFANAAkAgAQJ/AkAgFCACIAdqMQAAiEIBg1AEQCABIAUgCGoiCDYCFCAGDQMMAQsgCiALIAogCiALSRsgBhsiCSAFIAUgCUkbIQwgAiAIaiEQIAkhBwJAAkACQANAIAcgDEYEQEEAIAsgBhshDCAKIQcDQCAHIAxNBEAgASAFIAhqIgI2AhQgBkUEQCABQQA2AhwLIAAgAjYCCCAAIAg2AgQgAEEBNgIADwsgB0EBayIHIAVPDQUgByAIaiIJIANPDQMgBCAHai0AACACIAlqLQAARg0ACyABIAggDmoiCDYCFCAPIAZFDQYaDAcLIAcgCGoiESADTw0CIAcgEGohEiAEIAdqIAdBAWohBy0AACASLQAARg0ACyARIAprQQFqIQggBkUNAwwFCyAJIANB+J7HABCMBwALIAMgCCAJaiIAIAAgA0kbIANBiJ/HABCMBwALIAcgBUHonscAEIwHAAtBAAsiBzYCHCAHIQsLIAggDWoiByADSQ0ACwsgASADNgIUIABBADYCAAvzAwIEfwJ9IwBBEGshAiAAvCIDQR92IQQCQAJ9IAACfwJAAkACQAJAIANB/////wdxIgFB0Ni6lQRPBEAgAUGAgID8B0sEQCAADwsgA0EASCIDRSABQZfkxZUES3ENAiADRQ0BIAJDAACAgCAAlTgCCCACKgIIGiABQbTjv5YETQ0BDAcLIAFBmOTF9QNNBEAgAUGAgIDIA00NA0EAIQEgAAwGCyABQZKrlPwDTQ0DCyAAQzuquD+UIARBAnQqAuSwSZL8AAwDCyAAQwAAAH+UDwsgAiAAQwAAAH+SOAIMIAIqAgwaIABDAACAP5IPCyAERSAEawsiAbIiBUMAcjG/lJIiACAFQ46+vzWUIgaTCyEFIAAgBSAFIAUgBZQiACAAQxVSNbuUQ4+qKj6SlJMiAJRDAAAAQCAAk5UgBpOSQwAAgD+SIQUgAUUNAAJAAkACQCABQf8ATARAIAFBgn9ODQMgBUMAAIAMlCEFIAFBm35NDQEgAUHmAGohAQwDCyAFQwAAAH+UIQUgAUH+AUsNASABQf8AayEBDAILIAVDAACADJQhBUG2fSABIAFBtn1NG0HMAWohAQwBCyAFQwAAAH+UIQVB/QIgASABQf0CTxtB/gFrIQELIAUgAUEXdEGAgID8A2pBgICA/AdxvpQhBQsgBQuiAwEFfyAALwEcIQECf0EAIAAvAR4iAkH//wFxIgNBgPgBSw0AGkEAIAFB//8BcSIEQYD4AUsNABogAsFBAE4EQCABIAJJIAHBQQBODQEaIAIgBHJBAEcMAQsgAcFBAEggASACS3ELIQQgAiABIAQbIAEgA0GB+AFJGyEBAkAgAC8BICIAQf//AXEiAkGA+AFLDQAgAUH//wFxIgNBgPgBSw0AIADBQQBOBEAgAcFBAE4EQCAAIAFB//8DcUshBQwCCyAAIANyQQBHIQUMAQsgAcFBAEggACABQf//A3FJcSEFCwJ/IAAgASAFGyABIAJBgfgBSRsiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhACABQYCAAnEhAiABQYD4AXEiAUGA+AFGBEAgAkEQdCIBQYCAgPwHciAARQ0BGiABIABBDXRyQYCAgP4HcgwBCyACQRB0IgIgAUENdEGAgID8AHEgAEENdHJBgICAwANqciABDQAaIAJBgICA2ANyIABnQRBrIgFBF3RrIAAgAUH//wNxQQhqdEH///8DcXILvhCJBAugAwIGfwZ+QQQhAyAAIAAoAjhBBGo2AjhBBCECAn4CQCAAKAI8IgRFDQBBCCAEayIFQQQgBUEESSIHGyEGAn4gBwRAQQAhAkIADAELIAE1AAALIQggBiACQQFySwRAIAEgAmozAAAgAkEDdK2GIAiEIQggAkECciECCyAAIAApAzAgAiAGSQR+IAEgAmoxAAAgAkEDdK2GIAiEBSAICyAEQQN0QThxrYaEIgg3AzAgBUEFTwRAIAAgBEEEajYCPA8LIAAgACkDGCAIhSIJIAApAwh8IgsgACkDECIKQg2JIAogACkDAHwiCoUiDHwiDSAMQhGJhTcDECAAIA1CIIk3AwggACALIAlCEImFIglCFYkgCSAKQiCJfCIJhTcDGCAAIAggCYU3AwAgBEEEayECIARBCEYNAEEAIQNCAAwBC0EAIQUgATUAAAshCCACIANBAXJLBEAgASAFaiADajMAACADQQN0rYYgCIQhCCADQQJyIQMLIAAgAiADSwR+IAEgAyAFamoxAAAgA0EDdK2GIAiEBSAICzcDMCAAIAI2AjwL3wMCBX8BfiMAQTBrIgQkAAJAAkACQAJAAkACQAJAIAEgAigCLBETACIIQv////8PVg0AIAinIgNBAEgNACADQQF2IQcCQCADQf7///8HcSIGRQRAQQIhAwwBCyAGEHEiA0UNAiADQQRrLQAAQQNxRSAGRXJFBEAgA0EAIAb8CwALIAchBQsgBEEIaiABIAMgBiACKAI0EQYAIAQoAghBBkcEQCAAIAT9AAMI/QsDACAAQSBqIARBKGopAwA3AwAgAEEQaiAEQRhq/QADAP0LAwAgBUUNByADQQRrKAIAIgBBeHEiASAFQQF0IgJBBEEIIABBA3EiABtqSQ0DIABBACABIAJBJ2pLGw0EIAMQogIMBwsgACAHNgIMIAAgAzYCCCAAIAU2AgQgAEEGNgIADAYLIABCAzcDCCAAQQM2AgAgAigCACIABEAgASAAEQMACyACKAIEIgBFDQUgAUEEaygCACICQXhxIgVBBEEIIAJBA3EiAhsgAGpJDQMgAkEAIAUgAEEnaksbDQQgARCiAgwFCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgBEEwaiQAC98DAgV/AX4jAEEwayIEJAACQAJAAkACQAJAAkACQCABIAIoAiwREwAiCEL/////D1YNACAIpyIDQQBIDQAgA0ECdiEHAkAgA0H8////B3EiBkUEQEEEIQMMAQsgBhBxIgNFDQIgA0EEay0AAEEDcUUgBkVyRQRAIANBACAG/AsACyAHIQULIARBCGogASADIAYgAigCNBEGACAEKAIIQQZHBEAgACAE/QADCP0LAwAgAEEgaiAEQShqKQMANwMAIABBEGogBEEYav0AAwD9CwMAIAVFDQcgA0EEaygCACIAQXhxIgEgBUECdCICQQRBCCAAQQNxIgAbakkNAyAAQQAgASACQSdqSxsNBCADEKICDAcLIAAgBzYCDCAAIAM2AgggACAFNgIEIABBBjYCAAwGCyAAQgM3AwggAEEDNgIAIAIoAgAiAARAIAEgABEDAAsgAigCBCIARQ0FIAFBBGsoAgAiAkF4cSIFQQRBCCACQQNxIgIbIABqSQ0DIAJBACAFIABBJ2pLGw0EIAEQogIMBQsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIARBMGokAAveAwEKfyMAQSBrIgMkACADQQA2AhAgA0KAgICAwAA3AgggA0EANgIcIANCgICAgMAANwIUIAEoAgghByABKAIAIQgCQAJAAkAgASgCBCIGIAEoAgwiCkcEQCACKAIIIQsgAigCBCEJIAIoAgAhDEEEIQIDQCAGQQRqKAIAIgEgCUEIaigCACIFTw0CAkAgCUEEaigCACABQSRsaiAMLQAAQQJ0QQxxaioCCCALKgIAXUUEQCADKAIUIARGBEAgA0EUakHEk8EAEIsGIAMoAhghAgsgAiAEQQJ0aiABNgIAIAMgBEEBaiIENgIcDAELIAMoAhAiBSADKAIIRgRAIANBCGpB1JPBABCLBgsgAygCDCAFQQJ0aiABNgIAIAMgBUEBajYCEAsgBkEIaiIGIApHDQALCyAHBEAgCEEEaygCACIBQXhxIgIgB0EDdCIEQQRBCCABQQNxIgEbakkNAiABQQAgAiAEQSdqSxsNAyAIEKICCyAAIAMpAgg3AgAgACADKQIUNwIMIABBCGogA0EQaigCADYCACAAQRRqIANBHGooAgA2AgAgA0EgaiQADwsgASAFQdTAxwAQjAcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAv7AwIGfwF7IwBBMGsiBCQAIARBGGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIAQgCf0LAwgCQAJAAkACQAJAAkADQAJAIARBKGogASAEQQhqQSAQ5AICQAJAIAQtACgiA0EERwRAAkAgA0EBaw4DAgADCgsgBCgCLC0ACEEjRg0EDAkLIAQoAiwiA0EhTw0CIAIoAgAgAigCCCIBayADSQRAIAIgASADQQFBARCkBSACKAIIIQELIAMEQCACKAIEIAFqIARBCGogA/wKAAALIAAgAzYCBCACIAEgA2o2AgggAEEEOgAADAkLIAQtAClBI0YNAgwHCyAEKAIsIgMtAAhBI0cNBiADKAIAIQUgA0EEaigCACIGKAIAIgcEQCAFIAcRAwALIAYoAgQiBgRAIAVBBGsoAgAiB0F4cSIIQQRBCCAHQQNxIgcbIAZqSQ0DIAdBACAIIAZBJ2pLGw0EIAUQogILIANBBGsoAgAiBUF4cSIGQRBBFCAFQQNxIgUbSQ0EIAVBACAGQTRPGw0FIAMQogIMAQsLQQAgA0EgQfybxwAQ6gcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAAgBCkDKDcCAAsgBEEwaiQAC8kDAQt/IwBBEGsiByQAAkACQAJAAkAgAyAEbCIGQf////8DSw0AIAZBAnQiCUH9////B08NAAJAIAlFBEBBBCEKQQAhBgwBCyAJEHEiCkUNAgsgB0EANgIMIAcgCjYCCCAHIAY2AgQgAxBxIgtFDQEgC0EEayIPKAIAIghBA3EiBkUgA0VyRQRAIAtBACAD/AsACwJAIAQEQEEAIQYDQCAMQQJ0IQ0gBkEBaiADIQ4gCyEIA0AgAiAGTQ0DIAggASAGai0AACAILQAAaiIQOgAAIAcoAgQgDEYEQCAHQQRqQdzpxwAQ+gUgBygCCCEKCyAKIA1qIAUgEMCyQwAA/kKVlDgCACAHIAxBAWoiDDYCDCAIQQFqIQggDUEEaiENIAQgBmohBiAOQQFrIg4NAAsiBiAERw0ACyAPKAIAIghBA3EhBgsgACAHKQIENwIAIABBCGogB0EMaigCADYCACAIQXhxIgBBBEEIIAYbIANqSQ0DIAZBACAAIANBJ2pLGw0EIAsQogIgB0EQaiQADwsgBiACQczpxwAQjAcAC0G86ccAEP8HCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC94DAQN/IwBBIGsiBSQAIAEoAhBFBEAgAUF/NgIQIAVBCiACIAMQqQMCQAJAIAUoAgBBAXEEQCADIAUoAgRBAWoiBE8NASAFQQA2AhggBUEBNgIMIAVBiILIADYCCCAFQgQ3AhAgBUEIakHMjcgAEI0IAAsCQCABKAIcIgRFBEBBACEEDAELIAEoAhggBGpBAWstAABBCkcNAEEAIQQgAUEANgIcIAFBADoAIAsgASgCFCAEayADTQRAIAAgAUEUaiACIAMQ/QYMAgsgAwRAIAEoAhggBGogAiAD/AoAAAsgAEEEOgAAIAEgAyAEajYCHAwBCwJAIAEoAhwiBkUNAAJAAkAgASgCFCAGayAETQRAIAVBCGogAUEUaiACIAQQ/QYgBS0ACEEERg0BIAAgBSkDCDcCAAwECyAEBEAgASgCGCAGaiACIAT8CgAACyABIAQgBmoiBjYCHAwBCyABKAIcIQYLIAZFDQAgAUEANgIcIAFBADoAIAsgAiAEaiEGIAMgBGsiAiABKAIUTwRAIAAgAUEUaiAGIAIQ/QYMAQsgAgRAIAEoAhggBiAC/AoAAAsgAEEEOgAAIAEgAjYCHAsgASABKAIQQQFqNgIQIAVBIGokAA8LQaiHyAAQsAoAC5cDAQV/AkACQAJAAkACQCABRQRAIABFDQEgAEEIayIBKAIAQQFHDQIgACgCECEGIAAoAgwhBSAAKAIIIQQgACgCBCECIAFBADYCAAJAIAFBf0YNACAAQQRrIgMgAygCAEEBayIDNgIAIAMNACAAQQxrKAIAIgBBeHEiA0EgQSQgAEEDcSIAG0kNBSAAQQAgA0HEAE8bDQYgARCiAgsgBCgCACIABEAgAiAAEQMACyAEKAIEIgAEQCACQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyAAakkNBSABQQAgBCAAQSdqSxsNBiACEKICCyAGKAIAIgAEQCAFIAARAwALIAYoAgQiAEUNAyAFQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAAakkNBCABQQAgAiAAQSdqSxsNBSAFEKICDAMLIABFDQAgAEEIayIAIAAoAgBBAWsiATYCACABDQIgABDXBA8LEI4KAAtBjNrAAEE/EI8KAAsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvnBAIHfwJ9Qay2yQAoAgAiAkGktskAKAIARgRAIwBBIGsiASQAAkBBpLbJACgCACIEQdWq1SpNBH9BBCAEQQF0IgMgA0EETRsiA0EMbCEGIAEgBAR/IAEgBEEMbDYCHCABQai2yQAoAgA2AhRBBAVBAAs2AhggAUEIakEEIAYgAUEUahCFByABKAIIQQFHDQEgASgCECEDIAEoAgwFQQALIANByJXBABCTCQALQai2yQAgASgCDDYCAEGktskAIAM2AgAgAUEgaiQAC0GotskAKAIAIgEgAkEMbGoiAyAAKQIANwIAIANBCGoiBCAAQQhqKAIANgIAQay2yQAgAkEBajYCACAEKAIAIQYgAygCBCEEIAMqAgAhCAJAIAJFDQAgCCAIWwRAIAIhBQNAAkAgASAFIgBBAWsiA0EBdiIFQQxsaiICKgIAIgkgCVsgCCAJX0VxQX8gCCAJYBsiBwRAIAdBAEoNASAAIQUMBAsgAigCBCIHIARHBEAgBCAHSw0BIAAhBQwECyAGIAIoAghLDQAgACEFDAMLIAEgAEEMbGoiACACKQIANwIAIABBCGogAkEIaigCADYCACADQQFLDQALDAELIAIhBQNAAkAgASAFIgBBAWsiA0EBdiIFQQxsaiICKgIAIgkgCVsgCCAJX0VxDQAgAigCBCIHIARHBEAgBCAHSw0BIAAhBQwDCyAGIAIoAghLDQAgACEFDAILIAEgAEEMbGoiACACKQIANwIAIABBCGogAkEIaigCADYCACADQQJPDQALCyABIAVBDGxqIgAgBjYCCCAAIAQ2AgQgACAIOAIAC5UDAQV/AkAgAy0AAyIGIAMtAAQiCGsiBSAFQR91IgVzIAVrQQF0IAMtAAIiBSADLQAFIgdrIgQgBEEfdSIEcyAEa0EBdmogAkH/AXFLDQAgAy0AACADLQABIgJrIgQgBEEfdSIEcyAEayABQf8BcSIESw0AIAIgBWsiAiACQR91IgJzIAJrQf8BcSAESw0AIAQgBSAGayICIAJBH3UiAnMgAmsiAkH/AXFJDQAgBCIFIAMtAAcgAy0ABiIGayIEIARBH3UiBHMgBGtJDQAgBSAGIAdrIgYgBkEfdSIGcyAGa0H/AXFJDQAgByAIayIBIAFBH3UiAXMgAWsiAUH/AXEgBUsNACAAQf8BcSACQf8BcUkEQEEBIAMQ4gUaDwsgAEH/AXEiACABQf8BcSIBSSADEOIFIQIgACABSQ0AIANB/wEgAy0ABSACQQFqQQF1IgBrIgFBACABQQBKGyIBIAFB/wFOGzoABSADQf8AQYB/IAAgAy0AAmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAgsLxwMCAn8EfiMAQdAAayIEJAAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LAzggBCABNwMwIAQgAULzytHLp4zZsvQAhTcDICAEIAFC7d6R85bM3LfkAIU3AxggBCAANwMoIAQgAELh5JXz1uzZvOwAhTcDECAEIABC9crNg9es27fzAIU3AwggBEEIaiIFIAIgAxCCAyAEQf8BOgBPIAUgBEHPAGpBARCCAyAEKQMIIQEgBCkDGCEAIARBQGs1AgAhCCAEKQM4IQYgBCkDICAEKQMQIQkgBEHQAGokACAGIAhCOIaEIgiFIgZCEIkgBiAJfCIGhSIHQhWJIAcgACABfCIBQiCJfCIHhSIJQhCJIAkgBiAAQg2JIAGFIgB8IgFCIIlC/wGFfCIGhSIJQhWJIAkgASAAQhGJhSIAIAcgCIV8IgFCIIl8IgiFIgdCEIkgByABIABCDYmFIgAgBnwiAUIgiXwiBoUiB0IViSAHIAEgAEIRiYUiACAIfCIBQiCJfCIIhSIHQhCJIAcgAEINiSABhSIAIAZ8IgFCIIl8IgaFQhWJIABCEYkgAYUiAEINiSAAIAh8hSIAQhGJhSAAIAZ8IgBCIImFIACFC9wDAgN9BH8gACABIAIQzAMCQAJAAkAgAgRAIAAqAoQBIAAqAoABIgaTIQcgACgCYCEBIAAoAmQhC0EBIQgDQCAKQQNqIAtPDQIgCEEBayIJIARPBEAgCSEIDAULIAQgCWsiCUEAIAQgCU8bIglBAUYNBCAJQQJGDQNDAAB/Q0MAAAAAIAMqAgAgBpMgB5VDAAB/Q5QiBSAFQwAAAABdGyIFIAVDAAB/Q14bELkHIQUgASABLQADQRh0Qf8BIAX8AUEAIAVDAAAAAGAbIAVDAAB/Q14bckH/AUMAAH9DQwAAAAAgA0EEaioCACAGkyAHlUMAAH9DlCIFIAVDAAAAAF0bIgUgBUMAAH9DXhsQuQciBfwBQQAgBUMAAAAAYBsgBUMAAH9DXhtBCHRyQf8BQwAAf0NDAAAAACADQQhqKgIAIAaTIAeVQwAAf0OUIgUgBUMAAAAAXRsiBSAFQwAAf0NeGxC5ByIF/AFBACAFQwAAAABgGyAFQwAAf0NeG0EQdHI2AgAgAUEQaiEBIApBBGohCiAIQQNqIQggA0EMaiEDIAJBAWsiAg0ACwsgAEEBOgC4AQ8LIAogCkEEaiALQaTgwAAQ6gcACyAIQQFqIQgLIAggBEG04MAAEIwHAAvVAwEKfyMAQSBrIgMkACADQQA2AhAgA0KAgICAwAA3AgggA0EANgIcIANCgICAgMAANwIUIAEoAgghByABKAIAIQgCQAJAAkAgASgCBCIGIAEoAgwiCkcEQCACKAIIIQsgAigCBCEJIAIoAgAhDEEEIQIDQCAGQQRqKAIAIgEgCSgCCCIFTw0CAkAgCSgCBCABQRhsaiAMLQAAQQJ0aioCACALKgIAXUUEQCADKAIUIARGBEAgA0EUakHEk8EAEIsGIAMoAhghAgsgAiAEQQJ0aiABNgIAIAMgBEEBaiIENgIcDAELIAMoAhAiBSADKAIIRgRAIANBCGpB1JPBABCLBgsgAygCDCAFQQJ0aiABNgIAIAMgBUEBajYCEAsgBkEIaiIGIApHDQALCyAHBEAgCEEEaygCACIBQXhxIgIgB0EDdCIEQQRBCCABQQNxIgEbakkNAiABQQAgAiAEQSdqSxsNAyAIEKICCyAAIAMpAgg3AgAgACADKQIUNwIMIABBCGogA0EQaigCADYCACAAQRRqIANBHGooAgA2AgAgA0EgaiQADwsgASAFQdy7xwAQjAcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAv5AwEEfyABQRh2IQIgAUEQdiEDQQghBSABQQh2IQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUHBAGsOGAIPDw8EDw8PAw8PDw8PDw8PBg8PDwEABQ8LIAJB0ABHIARB/wFxQcUAR3IgA0H/AXFBwgBHcg0OIABBAToAAA8LIARB/wFxQdAARyADQf8BcUE4R3INDSACQcwAaw4NBw0NDQ0NDQ0NDQ0NCAYLIARB/wFxQcwAaw4DCQwIDAsgAkHQAEcgBEH/AXFBwwBHcg0LIANB/wFxQcMARg0DDAsLIAJBxgBHIARB/wFxQdgAR3IgA0H/AXFByQBHcg0KIABBCToAAA8LIAJBIEcgBEH/AXFBzQBHciADQf8BcUHQAEdyDQkgAEEKOgAADwsgBEH/AXFByQBHIAJBxgBHciADQf8BcUHGAEdyDQhBACEFCyAAIAU6AAAPCyACQSBHDQYgAEECOgAADwsgAEEDOgAADwsgAEEEOgAADwsgA0H/AXFByQBrDgUBAwMDAgMLIAJByABHIANB/wFxQdAAR3INAiAAQQc6AAAPCyACQc0ARw0BIABBBToAAA8LIAJBxgBHDQAgAEEGOgAADwsgACACOgAEIAAgAzoAAyAAIAQ6AAIgACABOgABIABBCzoAAAuYBQEDfyMAQeApayICJAAgAkEPakEAQdAp/AsAQcAAQYDyAhDBBCIDBEAgA0E/akFAcSIBQgA3AjAgAUHAgAI2AgwgAUEAOgAEIAFBgAg2AgAgAUIANwMQIAH9DAAAAAAAAAAAAAAAAAAAAAD9CwMYIAFBADYCKCABQQE2AkggAUEAOgBAIAFCgYCAgBA3AjggAf0MAAAAAAAAAAAAAAAAAAAAAP0LAkwgAUEAOgCgASABQQA2ApwBIAFBIDYCbCAB/QwAAAAAAAAAAAAAAAAAAAAA/QsEcCABIAFBgPEAajYCCCABQdwAav0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAUGAAWpCADcDACABQZEBakIANwAAIAFCADcCjAEgAUGhAWogAkEMakHTKfwKAAAgAUH0KmpBAEHYxQD8CwAgAUGA8gI2AshwIAEgAzYCxHAgAUHUAGpBADYCACABQQA2AhQgAUL/////HzcDeCABQYCIPDYCACABQQA6AKABIAFBADYCnAEgAUKAgAI3A5ABIAFBADoAQCABQQE2AjggAUIANwMwIAFB5ABqQX82AgAgAEHUAGpBADYCACAAQgA3AkwgAEE4akEANgIAIABBMGpCADcDACAAQSBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQRBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQQA2AkggAEEdNgJEIABBHjYCQCAAIAE2AjwgAkHgKWokAA8LIAJBfDYCCCACQQA2AgwjAEEQayIAJAAgAEHw5cgANgIMIAAgAkEIajYCCEEAIABBCGpB7JzIACAAQQxqQeycyAAgAkEMakGY58gAEPIEAAuvAwEIfwJAAkACQCAAKAIIIgQgACgCFCICTQRAIAAgBDYCFCACIARGDQEgAiAEayEFIAAoAhAgBEEYbGohAQNAIAFBFGooAgAiAEEFTwRAIAFBCGooAgAiA0EEaygCACICQXhxIgcgAEECdCIAQQRBCCACQQNxIgIbakkNBCACQQAgByAAQSdqSxsNBSADEKICCyABQRhqIQEgBUEBayIFDQALDAELIAIhAyAEIAJrIgYgACgCDCACa0sEQCAAQQxqIAIgBkEEQRgQpAUgACgCFCEDCyAAKAIQIQggBkEDcSIFBEAgAyAFaiAEIAJrIAVrIQYgCCADQRhsaiEBA0AgAUEANgIAIAFBFGpBADYCACABQRhqIQEgBUEBayIFDQALIQMLIAIgBGtBfE0EQCAIIANBGGxqIQEDQCABQQA2AgAgAUHcAGpBADYCACABQcQAakIANwIAIAFBLGpCADcCACABQRRqQgA3AgAgAUHgAGohASADQQRqIQMgBkEEayIGDQALCyAAIAM2AhQLDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALkwQCBn8BfiMAQTBrIgIkACACQQhqrUKAgICAoAyEIQggASgCBCEEIAEoAgAhBUEAIQEDQCACAn8CQAJAAkACQAJAAkACQAJAAkACQCAAIAFqLQAAIgMOKAAHBwcHBwcHBwEDBwcCBwcHBwcHBwcHBwcHBwcHBwcHBwcEBwcHBwUGCyACQgA3AQogAkHc4AA7AQgMCAsgAkIANwEKIAJB3OgBOwEIDAcLIAJCADcBCiACQdzkATsBCAwGCyACQgA3AQogAkHc3AE7AQgMBQsgAkIANwEKIAJB3MQAOwEIDAQLIAJCADcBCiACQdzOADsBCAwDCyADQdwARg0BCyADEOECRQRAIAJBIGoiBiADQQ9xLQDctkU6AAAgAkGw4MCBAzYAGyACIANBBHYtANy2RToAHyADQQFyZ0ECdiIDIAJBGGoiB2pB+wA6AAAgByADQQJrIgNqQdzqATsAACACQRpqQQA6AAAgAkH9ADoAISACQRBqIAYvAQA7AQAgAkEAOwEYIAIgAikBGDcDCEEKDAMLIAIgAzYCCEGAASEDQYEBDAILIAJCADcBCiACQdy4ATsBCAtBACEDQQILOgAVIAIgAzoAFCACIAg3AwAgAkIBNwIkIAJBATYCHCACQaD4xwA2AhggAiACNgIgIAUgBCACQRhqEMEDIgNFBEAgAUEBaiIBQQRHDQELCyACQTBqJAAgAwu0AwICfgt/IwBBIGsiBCQAIAFBCGohDQJAAkADQCANKAIAQQJHDQECfyABKAKcAyIFIAEpA6ADIgMgBa0iAiACIANWG6ciBkYEQEEBIQhBJSEJQQAhCkEAIQtBACEMQQAhBSAHQYB+cUEkcgwBCyAEQQxqIAEgASgCmAMgBmogBSAGa0EAENYBIAQpAhQiAkIoiKchCiACQiCIpyELIAJCGIinIQwgAkIQiKchBSACQgiIpyEJIAQoAhwhDiAEKAIQIQYgAqchCCAGIAQoAgwNABogASABKQOgAyAGrXw3A6ADIAdBgH5xQShyCyIHQf8BcUEoRwRAIAAgCjsACSAAIA42AgwgACALOgAIIAAgDDoAByAAIAU6AAYgACAJOgAFIAAgCDoABCAAIAc6AAAgAEELaiAKQRB2OgAAIABBA2ogB0EYdjoAACAAIAdBCHY7AAEMAwsgCEH/AXFBAkcgCUH/AXFByQBHciAFQf8BcUHFAEcgDEH/AXFBzgBHcnIgC0H/AXFBxABHcg0AC0Gk+MYAQShBnJjHABDrBwALIABBKDoAACAAIA02AgQLIARBIGokAAvuAwEJfQJ9IAAqAgwiA0MAAAAAXUUEQCAAKgIEIQUgACoCACEGIAAqAggMAQsgA4whAyAAKgIEjCEFIAAqAgCMIQYgACoCCIwLIQhDAACAPyEEQwAAgD8gAyADQwAAgD9eGxD2BCICIAKSIglDAAAAP5QQmQIiAotDvTeGNV1FBEAgBSAClSEHIAYgApUhBCAIIAKVIQELIAcgB4sgBIuSIAGLkiIDlSECIAQgA5UhAwJAIAFDAAAAAF1FBEAgAiEBDAELQwAAgD8gA4uTIgEgAYwgAkMAAAAAYBshAUMAAIA/IAKLkyICIAKMIANDAAAAAGAbIQMLQf8BQwAAf0NDAAAAACAJQ9sPSUCVQwAAf0OUIgIgAkMAAAAAXRsiAiACQwAAf0NeGxC5ByIC/AFBACACQwAAAABgGyACQwAAf0NeG0EQdEH/AUMAAH9DQwAAAAAgAUMAAIA/kkMAAAA/lEMAAH9DlCIBIAFDAAAAAF0bIgEgAUMAAH9DXhsQuQciAfwBQQAgAUMAAAAAYBsgAUMAAH9DXhtBCHRyQf8BQwAAf0NDAAAAACADQwAAgD+SQwAAAD+UQwAAf0OUIgEgAUMAAAAAXRsiASABQwAAf0NeGxC5ByIB/AFBACABQwAAAABgGyABQwAAf0NeG3IL4wMBBH8jAEFAaiICJAACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOAwECAwALIAIgACgCBDYCBEEUEHEiAEUNBCAAQRBqQdyCyAAoAAA2AAAgAEHMgsgA/QAAAP0LAAAgAkEUNgIQIAIgADYCDCACQRQ2AgggAiACQQRqrUKAgICA8AGENwMgIAIgAkEIaq1CgICAgJAIhDcDGCABKAIAIAEoAgQgAkICNwI0IAJBAzYCLCACQZCHyAA2AiggAiACQRhqNgIwIAJBKGoQwQMhACACKAIIIgFFDQMgAigCDCIEQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyABakkNBSADQQAgBSABQSdqSxsNBiAEEKICDAMLIAIgAC0AAUECdCIAKAKspEk2AhwgAiAAKALUpUk2AhggAiACQRhqrUKAgICAoAGENwMIIAEoAgAgASgCBCACQgE3AjQgAkEBNgIsIAJBoPjHADYCKCACIAJBCGo2AjAgAkEoahDBAyEADAILIAEgACgCBCIAKAIAIAAoAgQQlwMhAAwBCyAAKAIEIgAoAgAgASAAKAIEKAIQEQIAIQALIAJBQGskACAADwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuxAwIHfwF+IwBBIGsiAyQAAkAgAAJ/AkAgASgCFCICIAEoAhAiBUkEQCABKAIMIQcCfgJAA0AgAiAHai0AACIGQQlrIghBF0tBASAIdEGTgIAEcUVyDQEgASACQQFqIgI2AhQgAiAFRw0ACyAFIQJCAAwBC0KAAgsgBq1CEIaEQoCCuANRDQELIANBGGogARCVAyADKAIYIAAgAygCHDYCBEEBagwBCyABIAJBAWoiBDYCFAJAAkAgBCAFTw0AIAEgAkECaiIGNgIUAkAgBCAHai0AAEH1AEcNACAGIAQgBSAEIAVLGyIERg0BIAEgAkEDaiIINgIUIAYgB2otAABB7ABHBEAgCCEGDAELIAQgCEYNASABIAJBBGoiBjYCFEEAIAcgCGotAABB7ABGDQMaCyADQRBqIAcgBSAGEPkBIAMoAhQhBCADKAIQIQFBFBBxIgJFDQMgAkEJNgIADAELIANBCGogByAFIAQQ+QEgAygCDCEEIAMoAgghAUEUEHEiAkUNAiACQQU2AgALIAIgATYCDCAAIAI2AgQgAiAENgIQQQILNgIAIANBIGokAA8LAAv3AwEGfyMAQRBrIgIkAAJAAkACQAJAAkAgASgCAEGUgICAeEYEQCABKAIMIgNFDQEgAiABKAIIIgQQqAMgAigCACIBQYCAgIB4RgRAIAIoAgQhAwwFCyACKAIEIQUCQCADQQFHBEAgAigCCCEHIAIgBEEQahCoAyACKAIAIgRBgICAgHhHDQEgAigCBCEDIAFFDQYgBUEEaygCACIEQXhxIgZBBEEIIARBA3EiBBsgAWpJDQQgBEEAIAYgAUEnaksbDQUgBRCiAgwGC0EBIAJBD2pBlOLAABDbBiEDIAFFDQUgBSABQQEQogcMBQsgAigCBCEGIANBAkcEQCACQQI2AgAgA0H+////AGpB/////wBxQQJqIAJB6JXBABDbBiEDIABBgICAgHg2AgAgACADNgIEIAEEQCAFIAFBARCiBwsgBEUNBiAGIARBARCiBwwGCyAAIAIoAgg2AhQgACAGNgIQIAAgBDYCDCAAIAc2AgggACAFNgIEIAAgATYCAAwFCyABIAJBD2pBlOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAQLQQAgAkEPakGU4sAAENsGIQMMAgtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAAgAzYCBCAAQYCAgIB4NgIACyACQRBqJAALxQMCBH8BfiMAQTBrIgUkAAJAAkACQAJAAkACQAJAIAEgAigCLBETACIHQv////8PVg0AIAenIgNBAEgNAAJAIAdQIgYEQEEBIQQMAQsgAxBxIgRFDQIgBEEEay0AAEEDcUUgA0VyDQAgBEEAIAP8CwALIAVBCGogASAEIAMgAigCNBEGACAFKAIIQQZHBEAgACAF/QADCP0LAwAgAEEgaiAFQShqKQMANwMAIABBEGogBUEYav0AAwD9CwMAIAYNByAEQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNAyAAQQAgASADQSdqSxsNBCAEEKICDAcLIAAgAzYCDCAAIAQ2AgggACADNgIEIABBBjYCAAwGCyAAQgM3AwggAEEDNgIAIAIoAgAiAARAIAEgABEDAAsgAigCBCIARQ0FIAFBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIABqSQ0DIAJBACADIABBJ2pLGw0EIAEQogIMBQsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIAVBMGokAAvfAwIFfwF+IwBBIGsiAiQAIAAoAgghBCAAKAIEIQVBASEDIAEoAgBB6LLFAEEBIAEoAgQoAgwRAAAhAAJAIARFBEAgACEDDAELAkAgAA0AIAEtAApBgAFxBEAgASgCACIAQdz4xwBBASABKAIEIgYoAgwRAAANASACQQE6AA8gAiAGNgIEIAIgADYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqELoFDQEgAigCEEHZgcIAQQIgAigCFCgCDBEAACEDDAELIAUgARC6BSEDCyAEQQFGDQAgBUEEaiEAIARBAnRBBGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAPIAIgBzcCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqELoFRQ0BQQEMAgtBASABKAIAQeeQxgBBAiABKAIEKAIMEQAADQEaIAAgARC6BQwBCyACKAIQQdmBwgBBAiACKAIUKAIMEQAACyEDIABBBGohACAEQQRrIgQNAAsLQQEhACADRQRAIAEoAgBB6bLFAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAALzAMCBX8DfiMAQTBrIgQkACAEIAM2AgwgBCACNgIIAkACQAJAAkAgASgCDEUNACABKQMQIAEpAxggAiADEJUEIQkgASgCBCIHIAmncSEFIAlCGYhC/wCDQoGChIiQoMCAAX4hCyABKAIAIQEDQAJAIAEgBWopAAAiCiALhSIJQn+FIAlCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiCVBFBEADQCABIAl6p0EDdiAFaiAHcUFobGoiBkEQaygCACADRgRAIAIgBkEUaygCACADENsHRQ0DCyAJQgF9IAmDIglQRQ0ACwsgCiAKQgGGg0KAgYKEiJCgwIB/g1BFDQIgBSAIQQhqIghqIAdxIQUMAQsLIAZBBGsoAgAiAUEASA0CIAZBCGsoAgAhAgJAIAFFBEBBASEDDAELIAEQcSIDRQ0ECyABBEAgAyACIAH8CgAACyAAIAE2AgggACADNgIEIAAgATYCAAwBCyAEQQI2AhQgBEHo1sEANgIQIARCATcCHCAEIARBCGqtQoCAgIAghDcDKCAEIARBKGo2AhggBEEQahCSByEBIABBgICAgHg2AgAgACABNgIECyAEQTBqJAAPC0HYmsgAEP8HCwAL1QMCBH0FfwJAAkAgAgRAIAAoAggiCyABayIJQQAgCSALTRshDUMAAIA/IAAqAkAgAC0AWEECRiIJG0MAAAAAIAAqAjwgCRsiB5MhCCAAKAIEIAFBGGxqQQ5qIQpBACEJQQAhAANAIAAgDUYNAyAJQQNqIgwgBEsgAEHUqtWqBUtyDQJDAAB/Q0MAAAAAIANBBGoqAgAgB5MgCJVDAAB/Q5QiBSAFQwAAAABdGyIFIAVDAAB/Q14bELkHIQUgCkH/AUMAAH9DQwAAAAAgA0EIaioCACAHkyAIlUMAAH9DlCIGIAZDAAAAAF0bIgYgBkMAAH9DXhsQuQciBvwBQQAgBkMAAAAAYBsgBkMAAH9DXhtBEHRB/wEgBfwBQQAgBUMAAAAAYBsgBUMAAH9DXhtBCHRyQf8BQwAAf0NDAAAAACADKgIAIAeTIAiVQwAAf0OUIgUgBUMAAAAAXRsiBSAFQwAAf0NeGxC5ByIF/AFBACAFQwAAAABgGyAFQwAAf0NeG3IiCTsBACAKQQJqIAlBEHY6AAAgA0EMaiEDIApBGGohCiAMIQkgAiAAQQFqIgBHDQALCw8LIAkgDCAEQeTDxwAQ6gcACyAAIAFqIAtB7LvHABCMBwALuQMBB38gACABKAIAIgQ2AqQBIAAgASgCBCIFNgKoASAAQQEgBEEWdiAEQf///wFxQQBHaiICIAJBAU0bQYAQIARBC3YgBEH/D3FBAEdqIgIgAkGAEE8bQQEgBBtsIgJBC3QiBjYCoAEgAkENdCIHELYJIQIgACgCrAEiCEGECE8EQCAIEJsHCyAAIAI2AqwBIAUEQCAGQQF0ELYJIQJBASEDCwJAIAAoAgBFDQAgACgCBCIGQYQISQ0AIAYQmwcLIAAgAjYCBCAAIAM2AgAgBUECSQR/QQAFIAcQtgkhAkEBCyEDAkAgACgCCEUNACAAKAIMIgZBhAhJDQAgBhCbBwsgACACNgIMIAAgAzYCCCAFQQNJBH9BAAUgBxC2CSEDQQELIQICQCAAKAIQRQ0AIAAoAhQiBUGECEkNACAFEJsHCyAAIAM2AhQgACACNgIQQQEhAgJAIAEtAAgiAUEBRwRAQQAhAgwBCyAEQQJ0ELYJIQQLAkAgACgCMEUNACAAKAI0IgNBhAhJDQAgAxCbBwsgAEIANwKwASAAIAE6AJwBIAAgBDYCNCAAIAI2AjAgAEG4AWpBADoAAAvjAwIEfwF+IwBBIGsiAiQAIAAoAgghBCAAKAIEIQUgASgCAEHossUAQQEgASgCBCgCDBEAACEDAkAgBEUEQCADIQAMAQsCf0EBIAMNABogAS0ACkGAAXEEQEEBIAEoAgAiA0Hc+McAQQEgASgCBCIAKAIMEQAADQEaIAJBAToADyACIAA2AgQgAiADNgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCEEEBIAUgAkEQahDKBA0BGiACKAIQQdmBwgBBAiACKAIUKAIMEQAADAELIAUgARDKBAshACAEQQFGDQAgBUEBaiEDIARBAWshBANAIABBAXEhBQJ/QQEgBQ0AGgJAIAEtAApBgAFxBEAgASkCACEGIAJBAToADyACIAY3AgAgAkHggcIANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAMgAkEQahDKBEUNAUEBDAILQQEgASgCAEHnkMYAQQIgASgCBCgCDBEAAA0BGiADIAEQygQMAQsgAigCEEHZgcIAQQIgAigCFCgCDBEAAAshACADQQFqIQMgBEEBayIEDQALC0EBIQMgAEUEQCABKAIAQemyxQBBASABKAIEKAIMEQAAIQMLIAJBIGokACADC4sDAQR/IwBBEGsiAyQAAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BQQMhAiAALAAAIgQgBMBBB3UiAHMgAGsiAEH/AXEiBUEKTwRAQQEhAiADIABBAXQiACAAQThqIAVB5ABJG0H+AXEvALi6RTsADCAFQeMASyEAC0EAIAQgAEH/AXEiABtFBEAgAkEBayICIANBC2pqIABBAXQtALm6RToAAAsgASAEQQBOQQFBACADQQtqIAJqQQMgAmsQyAMMAgsgAC0AACECQQMhAANAIAAgA2pBB2ogAkEPcUHctsUAai0AADoAACACQf8BcSIEQQR2IQIgAEEBayEAIARBD0sNAAsgAUEBQYS0xQBBAiAAIANqQQhqQQMgAGsQyAMMAQsgAC0AACECQQMhAANAIAAgA2pBDGogAkEPcUHJgcIAai0AADoAACACQf8BcSIEQQR2IQIgAEEBayEAIARBD0sNAAsgAUEBQYS0xQBBAiAAIANqQQ1qQQMgAGsQyAMLIANBEGokAAuuAwIDfgR/IAAoAgxFBEBBAA8LIAApAxAgACkDGCABEPIDIQIgACgCBCIGIAKncSEFIAJCGYhC/wCDQoGChIiQoMCAAX4hBCAAKAIAIQcCQAJAIAEtAAAiCEELRwRAQQAhAQNAIAUgB2opAAAiAyAEhSICQn+FIAJCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiAlBFBEADQCAIIAcgAnqnQQN2IAVqIAZxQWhsaiIAQRhrLQAARg0FIAJCAX0gAoMiAlBFDQALCyADIANCAYaDQoCBgoSIkKDAgH+DQgBSDQIgBSABQQhqIgFqIAZxIQUMAAsACyABKAABIQhBACEBA0AgBSAHaikAACIDIASFIgJCf4UgAkKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyICUEUEQANAIAcgAnqnQQN2IAVqIAZxQWhsaiIAQRhrLQAAQQtGBEAgCCAAQRdrKAAARg0FCyACQgF9IAKDIgJQRQ0ACwsgAyADQgGGg0KAgYKEiJCgwIB/g1BFDQEgBSABQQhqIgFqIAZxIQUMAAsAC0EAIQALIABBGGtBACAAGwvPAwIDfwF+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBAWsOCAECAwQFBgcIAAtBASEDIAEgAkEfakGY58AAEJUIIQEMCQsgAS0ABCEBDAgLIAEvAQQhAQwHCyABKAIEIQEMBgsgASkDCCIFQv////8PWARAIAWnIQEMBQtBASEDIAJBAToACCACIAU3AxAgAkEIaiACQR9qQZjnwAAQ3gYhAQwFCyABLAAEIgFBAEgEQCACQQI6AAggAiABrDcDECACQQhqIAJBH2pBmOfAABDeBiEBQQEhAwwFCyABQf8BcSEBDAMLIAEuAQQiAUEASARAIAJBAjoACCACIAGsNwMQIAJBCGogAkEfakGY58AAEN4GIQFBASEDDAQLIAFB//8DcSEBDAILIAEoAgQiAUEATg0BIAJBAjoACCACIAGsNwMQIAJBCGogAkEfakGY58AAEN4GIQFBASEDDAILIAEpAwgiBUKAgICAEFoEQCACQQI6AAggAiAFNwMQIAJBCGogAkEfakGY58AAEN4GIQFBASEDDAILIAWnIQELCyAAIAE2AgQgACADNgIAIAJBIGokAAvPAwIDfwF+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBAWsOCAECAwQFBgcIAAtBASEDIAEgAkEfakGo58AAEJUIIQEMCQsgAS0ABCEBDAgLIAEvAQQhAQwHCyABKAIEIQEMBgsgASkDCCIFQv////8PWARAIAWnIQEMBQtBASEDIAJBAToACCACIAU3AxAgAkEIaiACQR9qQajnwAAQ3gYhAQwFCyABLAAEIgFBAEgEQCACQQI6AAggAiABrDcDECACQQhqIAJBH2pBqOfAABDeBiEBQQEhAwwFCyABQf8BcSEBDAMLIAEuAQQiAUEASARAIAJBAjoACCACIAGsNwMQIAJBCGogAkEfakGo58AAEN4GIQFBASEDDAQLIAFB//8DcSEBDAILIAEoAgQiAUEATg0BIAJBAjoACCACIAGsNwMQIAJBCGogAkEfakGo58AAEN4GIQFBASEDDAILIAEpAwgiBUKAgICAEFoEQCACQQI6AAggAiAFNwMQIAJBCGogAkEfakGo58AAEN4GIQFBASEDDAILIAWnIQELCyAAIAE2AgQgACADNgIAIAJBIGokAAv6AgEEfwJAAkACQAJAAkACQAJAIAAtAAAOGgAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAECBAsgAC0ABEEDRw0DIAAoAggiACgCACECIABBBGooAgAiASgCACIDBEAgAiADEQMACyABKAIEIgEEQCACQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNBiADQQAgBCABQSdqSxsNBSACEKICCyAAQQRrKAIAIgJBeHEiAUEQQRQgAkEDcSICG0kNBSACRSABQTRJcg0CDAQLIAAoAgQiAkUNAiAAKAIIIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0EIAFFIAMgAkEnak1yDQEMAwsgACgCBCICRQ0BIAAoAggiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQMgAUUgAyACQSdqTXINAAwCCyAAEKICCw8LQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC6gDAwV/AXsBfiMAQZABayICJAAgASgCBCEFIAEoAgAgAiAAKAIAIgT9AAIIIgcgB/0NAAECAwQFBgcICQoLCAkKC/0LBAAgAgJ/IAf9GQYiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhACABQYCAAnEhAyABQYD4AXEiAUGA+AFGBEAgA0EQdCEBIAFBgICA/AdyIABFDQEaIAEgAEENdHJBgICA/gdyDAELIANBEHQhAyABQQ10QYCAgPwAcSAAQQ10ckGAgIDAA2ogA3IgAQ0AGiAAIABnQRBrIgBB//8DcUEIanRB////A3EgA0GAgIDYA3IgAEEXdGtyCzYCHCACQSBqIgAgBBCkAyACQTBqIgEgBBCaAyACQUBrIgMgBCkCABDLAiACIAOtQoCAgIDAAoQ3A3AgAkKAgICAoAIiCCABrYQ3A2ggAiAIIACthDcDYCACIAJBHGqtQoCAgIDQAoQ3A1ggAiAIIAKthDcDUCACQgU3AoQBIAJBBjYCfCACQZynxwA2AnggAiACQdAAajYCgAEgBSACQfgAahDBAyACQZABaiQAC8oDAQN/AkAgACgCACIDRQRAIAAoAhAiAEUNASAAQZOzxQBBARCXAw8LAkACfwJAAkAgACgCCCIBIAAoAgRPBEAgACgCECICRQ0BIAJB6rLFAEEQEJcDRQ0BQQEPC0EBIQIgACABQQFqNgIIAkACQAJAAkAgASADai0AAEHOAGsOBQIDAAABAAsgACgCECIBRQ0DIAFB6rLFAEEQEJcDRQ0DDAYLIABBABDVAQ0FIAAoAhAiAQRAIAFB/7TFAEEDEJcDDQYLIABBABDVAUUNBgwFCyAAKAIQIgBFDQUgAEGFtcUAQQUQlwNFDQUMBAsgACAAKAIMQQFqIgE2AgwgAUH0A0sNASAAEK0EDQMDQCAAKAIAIgMEQAJAIAAoAggiASAAKAIETw0AIAEgA2otAABBxQBHDQAgACABQQFqNgIIIAAgACgCDEEBazYCDAwHCyAAKAIQIgEEQCABQYK1xQBBAxCXAw0GCyAAEK0ERQ0BDAULCyAAKAIQIgFFDQAgAUHqssUAQRAQlwMNAwsgAEEAOgAEQQAMAQsgACgCECIBBEAgAUH6ssUAQRkQlwMNAgsgAEEBOgAEQQALIQIgACACNgIACyACDwtBAAuPAwENfyMAQRBrIgYkAAJAIAEtACUNACABKAIEIQcCQCABKAIQIgQgASgCCCIMSw0AIAQgASgCDCICSQ0AIAFBFGoiDSABLQAYIgVqQQFrLQAAIQkgBUEFSSEOA0ACQCACIAdqIQoCQCAEIAJrIgtBB00EQCACIARGDQJBACEDA0AgAyAKai0AACAJRg0CIAsgA0EBaiIDRw0ACwwCCyAGQQhqIAkgCiALEIcFIAYoAghBAXFFDQEgBigCDCEDCyABIAIgA2pBAWoiAjYCDAJAIAIgBUkgAiAMS3INACAOBEAgByACIAVrIgNqIA0gBRDbBw0BIAEoAhwhBCABIAI2AhwgBCAHaiEIIAMgBGshAwwFC0EAIAVBBEHkuMcAEOoHAAsgAiAETQ0BDAILCyABIAQ2AgwLIAFBAToAJQJAIAEtACRBAUYEQCABKAIgIQIgASgCHCEBDAELIAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQgbm90IGZpbmQgRU9DREVPQ0QgY29tbWVudCBleGNlZWRzIGZpbGUgYm91bmRhcnkAAABTIhAAWQAAABACAAAkAAAARU9DRDY0IGV4dGVuc2libGUgZGF0YSBzZWN0b3IgZXhjZWVkcyBmaWxlIGJvdW5kYXJ5RU9DRDY0IGV4dGVuZHMgYmV5b25kIEVPQ0Q2NCBsb2NhdG9yTG93IEVPQ0Q2NCByZWNvcmQgc2l6ZQAAALQAAAAMAAAABAAAALUAAAC2AAAAtwBBvJPBAAu5LAEAAAC4AAAAiggQAFgAAACtCAAAGwAAAIoIEABYAAAAqwgAABoAAADavuWfRqP1Qda9IYIEin9+bSFxc5z+Wz98T9PqHwhx/v/RdU8UjvBwCSevxkboy2vj/HVWg7aPELisF+ETauo3Bro1G72r6e53M2YWY4Y3fVerifDxfVD/AOsyEUOUJRdr73nJEJIZqhTGMt1wo/d9s9Z0rBITht2/xAQ7FZjtPv983P/+/w1gGQswk0k0V9UqAxAAXwAAAEoAAAAfAAAAKgMQAF8AAABEAAAAFwAAAAAAAADTCKOFiGo/JERzcAMuihkT0DGfKSI4CaSJbE7smPouCAAAAAAEAAAABAAAALkAAAD4HBAAYAAAAK4CAAATAAAAExsQAEoAAABfAwAACQAAAAAAAAAEAAAABAAAALoAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAD4ShAAvQAAAL4AAACyAAAAvwAAALMAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwQAAAAAAAAAEAAAABAAAAMIAAABYWVoAAAAAAAQAAAAEAAAAwwAAAENlbnRlcnNBbHBoYXNTY2FsZXNRdWF0c1NoRXh0ZW5zaW9uQ2hpbGRDb3VudHNDaGlsZFN0YXJ0cwAAAAAAAAAIAAAABAAAAMQAAAAAAAAACAAAAAQAAADFAAAAxAAAALRLEACwAAAAxgAAALIAAACwAAAAswAAAAAAAAAIAAAABAAAAMcAAAAAAAAACAAAAAQAAABwAAAAxwAAAPBLEACwAAAAyAAAALIAAACwAAAAswAAAMkAAAAMAAAABAAAAMoAAADJAAAADAAAAAQAAADLAAAAygAAACxMEADMAAAAzQAAALIAAADOAAAAswAAAK0AAAAMAAAABAAAAM8AAACtAAAADAAAAAQAAADQAAAAzwAAAGhMEACwAAAA0QAAALIAAACwAAAAswAAANIAAAAMAAAABAAAANMAAADSAAAADAAAAAQAAADUAAAA0wAAAKRMEADVAAAA1gAAALIAAADXAAAAswAAANgAAAAEAAAABAAAANkAAADYAAAABAAAAAQAAADaAAAA2QAAAOBMEADbAAAA3AAAALIAAADdAAAAswAAAN4AAAAMAAAABAAAANMAAADeAAAADAAAAAQAAADfAAAA0wAAABxNEADgAAAA4QAAALIAAADgAAAAswAAAOIAAAAoAAAABAAAAOMAAADiAAAAKAAAAAQAAADkAAAA4wAAAFhNEADlAAAA5gAAAOcAAADoAAAA6QAAAOoAAAAgAAAABAAAAOMAAADqAAAAIAAAAAQAAADkAAAA4wAAAJRNEADlAAAA6wAAAOcAAADoAAAA6QAAAOwAAAAoAAAABAAAAOMAAADsAAAAKAAAAAQAAADkAAAA4wAAANBNEADlAAAA7QAAAOcAAADoAAAA6QAAAO4AAAAkAAAABAAAAOQAAADjAAAAdE4QAOUAAADvAAAA5wAAAOgAAADpAAAA8AAAACQAAAAEAAAA4wAAAPAAAAAkAAAABAAAAOQAAADjAAAAOE4QAOUAAADxAAAA5wAAAOgAAADpAAAA7gAAACQAAAAEAAAA4wAAAO4AAAAkAAAABAAAAOQAAADjAAAAdE4QAOUAAADyAAAA5wAAAOgAAADpAAAA8wAAACgAAAAEAAAA4wAAAPMAAAAoAAAABAAAAOQAAADjAAAAsE4QAOUAAAD0AAAA5wAAAOgAAADpAAAA9QAAACgAAAAEAAAA4wAAAPUAAAAoAAAABAAAAOQAAADjAAAA7E4QAOUAAAD2AAAA5wAAAOgAAADpAAAA9wAAAPgAAAD5AAAA+gAAAPsAAAD8AAAA/QAAAP4AAAD/AAAAAAEAAAEBAAACAQAA/AAAAP0AAAADAQAABAEAAAUBAAAGAQAABwEAAAgBAAD9AAAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAA/QAAAA8BAAAQAQAAEQEAABIBAAATAQAADgEAAP0AAAD3AAAAFAEAABUBAAAWAQAAFwEAAPwAAAD9AAAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAA/QAAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAAAAAAABAAAAAQAAAAlAQAAJgEAAAQAAAAEAAAAJwEAANgAAAAEAAAABAAAANoAAAAAAAAABAAAAAQAAAAoAQAAKQEAACoBAABGMzJGMTZGMzJMZUJ5dGVzRjE2TGVCeXRlc1I4UjhEZWx0YVM4UzhEZWx0YUxuMFI4TG5GMTZPY3Q4OFI4VTE2VTMyAIwFEAA9AAAASQEAADIAAACMBRAAPQAAAEwBAAA7AAAAjAUQAD0AAABUAQAAMQAAAIwFEAA9AAAAWAEAADEAAACMBRAAPQAAAFABAAAxAAAATgUQAD0AAADzAQAAMQAAAE4FEAA9AAAA6AEAADIAAABOBRAAPQAAAO8BAAAxAAAATgUQAD0AAAD3AQAAMQAAAE4FEAA9AAAA6wEAADsAAAD6GRAAYwAAAPMBAAAVAAAA+hkQAGMAAADjAQAAFQAAACBzcGxhdHMsIGdvdCAAAABQOBAACQAAAFRREAANAAAAIFNIIHJlY29yZHMsIGdvdCAAAABQOBAACQAAAHRREAARAAAASW52YWxpZCBQTFkgZmlsZZhREAAQAAAASW5jb21wbGV0ZSBSQUQgY2h1bmuwURAAFAAAAFRydW5jYXRlZCBnemlwIHN0cmVhbQAAAMxREAAVAAAASW5jb21wbGV0ZSBTUFogc3RyZWFtOiBzdGFnZSA9ICwgc2hfZGVncmVlID0gAAAA7FEQAB8AAAALUhAADgAAAEludmFsaWQgU1BaIHN0cmVhbQAALFIQABIAAAAAAAAACAAAAAQAAAArAQAAiiQQAF4AAAD4BQAAHAAAAIokEABeAAAA+wUAABYAAABOb3QgYSBaSVAvU09HUyBmaWxlAHhSEAATAAAAU09HUyBmaWxlIHRvbyBzbWFsbACUUhAAEwAAAMoFEAAhAAAAnQMAAA0AAADKBRAAIQAAAJ8DAAANAAAAygUQACEAAACcAwAAQAAAAMoFEAAhAAAAqAMAAA0AAADKBRAAIQAAAKgDAAA9AAAAygUQACEAAAAwBAAAIwAAAMoFEAAhAAAAMAQAAA0AAADKBRAAIQAAAC4EAAAnAAAAygUQACEAAAA+BAAAIwAAAMoFEAAhAAAAPgQAAA0AAADKBRAAIQAAADwEAAAnAAAAygUQACEAAACyAwAADQAAAMoFEAAhAAAAsQMAADoAAADKBRAAIQAAAN4DAAA3AAAAygUQACEAAADfAwAAEQAAAMoFEAAhAAAA2QMAACcAAADKBRAAIQAAAPMDAAAoAAAAygUQACEAAAD3AwAAMwAAAMoFEAAhAAAA+AMAAA0AAADKBRAAIQAAAP0DAAA3AAAAygUQACEAAAD+AwAAEQAAAMoFEAAhAAAA/wMAABEAAADKBRAAIQAAAAAEAAARAAAAygUQACEAAADyAwAAKAAAAMoFEAAhAAAAEgQAACgAAADKBRAAIQAAAB4EAAA3AAAAygUQACEAAAAfBAAAEQAAAMoFEAAhAAAAIAQAABEAAADKBRAAIQAAACEEAAARAAAAygUQACEAAAAXBAAANwAAAMoFEAAhAAAAGAQAABEAAADKBRAAIQAAABEEAAAoAAAAygUQACEAAADKAwAADQAAAMoFEAAhAAAAyQMAADwAAADKBRAAIQAAAL4DAAANAAAAygUQACEAAAC9AwAAPgAAAKwOEAA+AAAABQIAACEAAABVbmtub3duIGZpbGUgdHlwZQAAAABVEAARAAAArA4QAD4AAAANAgAAHQAAAAwAAAAMAAAAEAAAAAQAAAAEAAAADAAAABgAAAAoAAAALAAAAAEAAAAGAAAABgAAAAgAAAAEAAAAAgAAAAYAAAAMAAAAFAAAABgAAAD/fwAABgAAAAYAAAAIAAAABAAAAAEAAAAGAAAADAAAABQAAAAYAAAA/38AAAAAAAAJAAAAGAAAAC0AAABTZWN0aW9uIGRhdGEgc2l6ZSBvdmVyZmxvdwAAtFUQABoAAADPBBAAPQAAAOAAAAAoAAAAzwQQAD0AAADiAAAAJgAAAM8EEAA9AAAA5AAAACkAAADPBBAAPQAAAOUAAAA5AAAAzwQQAD0AAADmAAAAOQAAAM8EEAA9AAAA5wAAADkAAADPBBAAPQAAAGkBAABZAAAAzwQQAD0AAABpAQAANgAAAM8EEAA9AAAAaAEAAFkAAADPBBAAPQAAAGgBAAA2AAAAzwQQAD0AAABnAQAAWAAAAM8EEAA9AAAAZwEAADYAAADPBBAAPQAAAGYBAABGAAAAzwQQAD0AAABmAQAAJAAAAM8EEAA9AAAAYwEAAEgAAADPBBAAPQAAAGMBAAAqAAAAzwQQAD0AAABiAQAASgAAAM8EEAA9AAAAYgEAACgAAADPBBAAPQAAAPYAAAAVAAAAzwQQAD0AAAALAQAAFwAAAM8EEAA9AAAAEQEAABcAAADPBBAAPQAAABcBAAAXAAAAzwQQAD0AAAAqAQAAFQAAAM8EEAA9AAAAKwEAABUAAADPBBAAPQAAACwBAAAVAAAAzwQQAD0AAAAtAQAAFQAAAM8EEAA9AAAAMQEAAB8AAADPBBAAPQAAADIBAAAfAAAAzwQQAD0AAAAzAQAAHwAAAM8EEAA9AAAANAEAAB4AAADPBBAAPQAAADQBAAAYAAAAGAAAAB8AAAAmAAAAGQAAACAAAAAnAAAAGgAAACEAAAAoAAAAGwAAACIAAAApAAAAHAAAACMAAAAqAAAAHQAAACQAAAArAAAAHgAAACUAAAAsAAAAzwQQAD0AAABTAQAAIAAAAM8EEAA9AAAATQEAACAAAADPBBAAPQAAAEgBAAAcAAAAzwQQAD0AAADdAAAAJAAAAEJ1Y2tldCBhcnJheSBvdXQgb2YgYm91bmRzAABcWBAAGgAAAFRydW5jYXRlZCBrc3BsYXQgZmlsZQAAAIBYEAAVAAAAVW5leHBlY3RlZCBlbmQgb2YgZmlsZSB3aGlsZSByZWFkaW5nIHNlY3Rpb24gaGVhZGVyc6BYEAA0AAAAU2VjdGlvbiBzaXplIG92ZXJmbG93AAAA3FgQABUAAABJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIAAA/FgQABoAAABVbnN1cHBvcnRlZCAua3NwbGF0IHZlcnNpb246IAAAACBZEAAdAAAA7FwRAAEAAABGaWxlIHRvbyBzbWFsbCBmb3Iga3NwbGF0IGhlYWRlclBZEAAgAAAAU0ggYnl0ZSBvdXQgb2YgYm91bmRzAAAAeFkQABUAAADKBRAAIQAAAPgBAAA3AAAAygUQACEAAAD4AQAAWAAAAMoFEAAhAAAAAQIAAEYAAADKBRAAIQAAAAECAAA4AAAAygUQACEAAACUAgAANgAAAMoFEAAhAAAAlAIAACMAAADKBRAAIQAAAIgCAAA2AAAAygUQACEAAACIAgAARQAAAMoFEAAhAAAAiAIAAFgAAADKBRAAIQAAAIgCAAAVAAAAygUQACEAAACDAgAALAAAAMoFEAAhAAAAvgIAADYAAADKBRAAIQAAAL4CAAAjAAAAygUQACEAAADAAgAAJwAAAMoFEAAhAAAArwIAADgAAADKBRAAIQAAAK8CAABHAAAAygUQACEAAACvAgAAWgAAAMoFEAAhAAAArwIAABUAAADKBRAAIQAAALICAABCAAAAygUQACEAAACyAgAAUQAAAMoFEAAhAAAAsgIAAGQAAADKBRAAIQAAAKoCAAAyAAAAygUQACEAAACpAgAAMgAAAMoFEAAhAAAA9AIAAD8AAADKBRAAIQAAAPQCAAAmAAAAygUQACEAAADxAgAAOQAAAMoFEAAhAAAA8QIAACYAAADKBRAAIQAAAOMCAAA+AAAAygUQACEAAADjAgAATQAAAMoFEAAhAAAA4wIAAGAAAADKBRAAIQAAAOMCAAAVAAAAygUQACEAAADfAgAAOAAAAMoFEAAhAAAA3wIAAEcAAADKBRAAIQAAAN8CAABaAAAAygUQACEAAADfAgAAFQAAAMoFEAAhAAAA2gIAAC4AAADKBRAAIQAAANkCAAAuAAAAygUQACEAAAAnAwAAKQAAAMoFEAAhAAAALgMAAEsAAADKBRAAIQAAAC4DAAAhAAAAygUQACEAAAArAwAARQAAAMoFEAAhAAAAKwMAACEAAADKBRAAIQAAABQDAAAhAAAAygUQACEAAAAXAwAANgAAAMoFEAAhAAAAFwMAABUAAADKBRAAIQAAABkDAABAAAAAygUQACEAAAASAwAAMgAAAMoFEAAhAAAABAMAAB0AAADKBRAAIQAAAAgDAAA2AAAAygUQACEAAAAIAwAAFQAAAMoFEAAhAAAAAgMAAC4AAADKBRAAIQAAADsDAAAmAAAAygUQACEAAAA/AwAAIAAAAMoFEAAhAAAAPwMAABMAAADKBRAAIQAAAEUDAAAmAAAAygUQACEAAABJAwAAIAAAAMoFEAAhAAAASQMAABMAAADKBRAAIQAAAJ8BAAA2AAAAygUQACEAAACgAQAANgAAAMoFEAAhAAAArwEAADMAAADKBRAAIQAAALABAAAzAAAAygUQACEAAACsAQAAQwAAAMoFEAAhAAAApgEAAC0AAADKBRAAIQAAAKUBAAAtAAAAygUQACEAAAAKAgAANAAAAMoFEAAhAAAACgIAAFUAAADKBRAAIQAAAD8CAAA2AAAAygUQACEAAAA/AgAAPwAAAMoFEAAhAAAAPwIAAEwAAADKBRAAIQAAAD8CAAAVAAAAygUQACEAAAA6AgAALAAAAMoFEAAhAAAATAIAADIAAADKBRAAIQAAAFECAAA4AAAAygUQACEAAABRAgAAQQAAAMoFEAAhAAAAUQIAAE4AAADKBRAAIQAAAFECAAAVAAAAygUQACEAAABUAgAAQgAAAMoFEAAhAAAAVAIAAEsAAADKBRAAIQAAAFQCAABYAAAAygUQACEAAABUAgAAGQAAAMoFEAAhAAAASwIAADIAAADKBRAAIQAAAGMCAAAyAAAAygUQACEAAABsAgAAQgAAAMoFEAAhAAAAbAIAAEsAAADKBRAAIQAAAGwCAABYAAAAygUQACEAAABsAgAAGQAAAMoFEAAhAAAAaAIAADwAAADKBRAAIQAAAGgCAABFAAAAygUQACEAAABoAgAAUgAAAMoFEAAhAAAAaAIAABkAAADKBRAAIQAAAGICAAAyAAAAygUQACEAAAAlAgAANQAAAMoFEAAhAAAAJQIAAFYAAADKBRAAIQAAAM8BAAAnAAAAygUQACEAAADRAQAAFQAAAMoFEAAhAAAAzgEAACcAAADKBRAAIQAAANABAAAoAAAAygUQACEAAADTAQAAKAAAAMoFEAAhAAAA0gEAACgAAADKBRAAIQAAANQBAAAoAAAAygUQACEAAAAcAgAANgAAAMoFEAAhAAAAHAIAAFcAQYDAwQALBgEAAAAsAQBBkMDBAAsGAQAAAC0BAEGgwMEACwYBAAAALQEAQbDAwQALBgEAAAAtAQBBwMDBAAsGAQAAAC0BAEHQwMEACwYBAAAALgEAQeDAwQALBgEAAAAvAQBB8MDBAAsGAQAAADABAEGAwcEACwYBAAAAMQEAQZDBwQALBgEAAAAyAQBBoMHBAAutBwEAAAAzAQAAehkQAEEAAACaAQAADQAAAHoZEABBAAAAnQEAAA0AAAB6GRAAQQAAALMBAAAZAAAAb3V0cHV0IGJhdGNoIGNodW5rLCBjaHVua19yZWwgPSDYYBAAIAAAAG9jdGFudCBsZW5ndGhzOiAAYRAAEAAAAFz8EQABAAAAehkQAEEAAADjAQAAGQAAAHoZEABBAAAA2gEAACEAAABzcGxpdCBheGlzPSwgZXh0ZW50PSwgc3BsaXQ9LCBhLmxlbj0sIGIubGVuPUBhEAALAAAAS2EQAAkAAABUYRAACAAAAFxhEAAIAAAAZGEQAAgAAABc/BEAAQAAAHoZEABBAAAAzQEAAB0AAAB6GRAAQQAAAOgBAAAFAAAAehkQAEEAAADhAQAATgAAANcAEAA6AAAAPQAAADYAAABQTFkgaGVhZGVyIHRvbyBsYXJnZdxhEAAUAAAAZW5kX2hlYWRlcgoA1wAQADoAAABjAAAAHQAAANcAEAA6AAAAnQAAACQAAADXABAAOgAAAJwAAAAkAAAA1wAQADoAAACbAAAAJAAAANcAEAA6AAAAmgAAACYAAADXABAAOgAAAJkAAAAoAAAA1wAQADoAAACYAAAAJAAAANcAEAA6AAAAlwAAACwAAADXABAAOgAAAJYAAAAqAAAA1wAQADoAAAB0AAAAIgAAANcAEAA6AAAAhAAAACYAAADXABAAOgAAAIoAAAAmAAAA1wAQADoAAACQAAAAJgAAANcAEAA6AAAAfgAAACMAAADXABAAOgAAAHkAAAAkAAAA1wAQADoAAAB2AAAAIgAAANcAEAA6AAAAcQAAACUAAADXABAAOgAAALkAAAAdAAAA1wAQADoAAADOAAAALgAAANcAEAA6AAAAzQAAADAAAADXABAAOgAAAMwAAAAsAAAA1wAQADoAAADLAAAANAAAANcAEAA6AAAAygAAADIAAADXABAAOgAAANoAAABJAAAA1wAQADoAAADZAAAASQAAANcAEAA6AAAA2AAAACsAAADXABAAOgAAAOQAAAAvAAAAMCEQADoAAADvBQAAKwAAAEludmFsaWQgY2h1bmsgY291bnQ6IGV4cGVjdGVkICwgZ290IMRjEAAeAAAA4mMQAAYAAABVbnN1cHBvcnRlZCBSQUQgdmVyc2lvbjogAAAA+GMQABkAAAAwIRAAOgAAANcFAABAAAAASW52YWxpZCBSQUQgbWFnaWM6IDB4AAAALGQQABUAAAACAEHWyMEACwEIAEHgyMEAC8ElIAAA6VVuc3VwcG9ydGVkIFJBRCBjaHVuayB2ZXJzaW9uOiAAZGQQAB8AAAAwIRAAOgAAAEQGAAAvAAAARmFpbGVkIHRvIGRlY29tcHJlc3MgZ3ogZGF0YZxkEAAcAAAAVW5zdXBwb3J0ZWQgY2VudGVyIGVuY29kaW5nOiAAAADAZBAAHQAAAFByb3BlcnR5IG1pc3NpbmcgbWF46GQQABQAAABQcm9wZXJ0eSBtaXNzaW5nIG1pbgRlEAAUAAAAVW5zdXBwb3J0ZWQgYWxwaGEgZW5jb2Rpbmc6ICBlEAAcAAAAVW5zdXBwb3J0ZWQgcmdiIGVuY29kaW5nOiAAAERlEAAaAAAAVW5zdXBwb3J0ZWQgc2NhbGVzIGVuY29kaW5nOiAAAABoZRAAHQAAADAhEAA6AAAAqAYAAC8AAABVbnN1cHBvcnRlZCBvcmllbnRhdGlvbiBlbmNvZGluZzogAACgZRAAIgAAAFVuc3VwcG9ydGVkIGNoaWxkIGNvdW50IGVuY29kaW5nOiAAAMxlEAAiAAAAVW5zdXBwb3J0ZWQgY2hpbGQgc3RhcnQgZW5jb2Rpbmc6IAAA+GUQACIAAAAwIRAAOgAAAN0GAAAeAAAAVW5zdXBwb3J0ZWQgc2ggZW5jb2Rpbmc6IAAAADRmEAAZAAAAVW5zdXBwb3J0ZWQgc2ggbGFiZWwgZW5jb2Rpbmc6IABYZhAAHwAAADAhEAA6AAAAUwYAACQAAABQcm9wZXJ0eSBvZmZzZXQgbWlzbWF0Y2g6IGV4cGVjdGVkIACQZhAAIwAAAOJjEAAGAAAAMCEQADoAAACqBgAASAAAADAhEAA6AAAAOAYAADsAAAAwIRAAOgAAADcGAABFAAAASW52YWxpZCBSQUQgY2h1bmsgbWFnaWM6IDB4APRmEAAbAAAAVW5zdXBwb3J0ZWQgU1BaIHZlcnNpb246IAAAABhnEAAZAAAASW52YWxpZCBTUFogbWFnaWM6IDB4AAAAPGcQABUAAAB+ABAAOgAAAHkAAAApAAAAfgAQADoAAAB6AAAAKQAAAH4AEAA6AAAAewAAACkAAAB+ABAAOgAAAHsAAABPAAAAfgAQADoAAAB6AAAATwAAAH4AEAA6AAAAeQAAAE8AAAB+ABAAOgAAAIEAAAApAAAAfgAQADoAAACCAAAAKQAAAH4AEAA6AAAAgwAAACkAAAB+ABAAOgAAAIMAAABPAAAAfgAQADoAAACCAAAATwAAAH4AEAA6AAAAgQAAAE8AAAB+ABAAOgAAAJ4AAAA2AAAAfgAQADoAAACeAAAAJQAAAH4AEAA6AAAAuQAAADsAAAB+ABAAOgAAALkAAAAlAAAAfgAQADoAAAC6AAAAOwAAAH4AEAA6AAAAugAAACUAAAB+ABAAOgAAALsAAAA7AAAAfgAQADoAAAC7AAAAJQAAAH4AEAA6AAAA1QAAADwAAAB+ABAAOgAAANUAAAAlAAAAfgAQADoAAADWAAAAPAAAAH4AEAA6AAAA1gAAACUAAAB+ABAAOgAAANcAAAA8AAAAfgAQADoAAADXAAAAJQAAAH4AEAA6AAAA8wAAADQAAAB+ABAAOgAAAPQAAAAwAAAAfgAQADoAAAD1AAAAMAAAAH4AEAA6AAAA9gAAADAAAAB+ABAAOgAAAA4BAAApAAAAfgAQADoAAAAPAQAAKQAAAH4AEAA6AAAAEAEAACkAAAB+ABAAOgAAABEBAAApAAAAfgAQADoAAAAXAQAAMQAAAH4AEAA6AAAAGAEAADEAAAB+ABAAOgAAABkBAAAxAAAAfgAQADoAAAAcAQAAKQAAAH4AEAA6AAAAHQEAACkAAAB+ABAAOgAAAB4BAAApAAAAfgAQADoAAAAfAQAAKQAAAH4AEAA6AAAAMgEAACsAAAB+ABAAOgAAAFoBAABEAAAAfgAQADoAAABZAQAARAAAAH4AEAA6AAAAWAEAACoAAAB+ABAAOgAAAE8BAABlAAAAfgAQADoAAABPAQAANQAAAH4AEAA6AAAASAEAAGQAAAB+ABAAOgAAAEgBAAA1AAAAfgAQADoAAABCAQAAUwAAAH4AEAA6AAAAQgEAADEAAAB+ABAAOgAAAHsBAAApAAAAfgAQADoAAAB7AQAARwAAAH4AEAA6AAAAlQEAACsAAAB+ABAAOgAAAJUBAABJAAAAfgAQADoAAAC6AQAAJwAAAH4AEAA6AAAAyAEAAEEAAAB+ABAAOgAAAMEBAAAhAAAAbWV0YS5qc29ubWV0YS5qc29uIG5vdCBmb3VuZCBpbiBTT0dTIHppcAVrEAAfAAAAAQAAAAAAAABMUhEAAQAAAEZhaWxlZCB0byBwYXJzZSBtZXRhLmpzb24gZm9yIFNPR1MgaW4gY2FjaGUA5PcRAA0AAABeaxAACQAAAEIHEAA7AAAAMwIAADIAAABCBxAAOwAAADICAAAyAAAAQgcQADsAAAAxAgAAMgAAAEIHEAA7AAAAMAIAABwAAABCBxAAOwAAAC8CAAAeAAAAQgcQADsAAAAuAgAAGgAAAEIHEAA7AAAALQIAACIAAABCBxAAOwAAACwCAAAgAAAAZGF0YSBkaWQgbm90IG1hdGNoIGFueSB2YXJpYW50IG9mIHVudGFnZ2VkIGVudW0gUGNTb2dzUm9vdHF1YXRlcm5pb25fcGFja2VkZGVjb2RlIG1lYW5zWzBdZGVjb2RlIG1lYW5zWzFdZGVjb2RlIHNjYWxlc2RlY29kZSBxdWF0c2RlY29kZSBzaDBCBxAAOwAAABwBAAAWAAAAQgcQADsAAAAdAQAAFQAAAEIHEAA7AAAAHgEAABQAAABCBxAAOwAAAB8BAAATAAAAQgcQADsAAAAgAQAAFwAAAEIHEAA7AAAAIQEAADUAAABCBxAAOwAAACIBAAA1AAAAQgcQADsAAAAjAQAANQAAAFVuc3VwcG9ydGVkIHF1YXRlcm5pb24gZW5jb2RpbmcgaW4gU09HUyB2MQAABG0QACoAAABCBxAAOwAAAM0AAAAWAAAAQgcQADsAAADOAAAAFQAAAEIHEAA7AAAAzwAAABQAAABCBxAAOwAAANAAAAATAAAAQgcQADsAAADRAAAAFwAAAEIHEAA7AAAA0gAAADUAAABCBxAAOwAAANMAAAA1AAAAQgcQADsAAADUAAAANQAAAFVuZXhwZWN0ZWQgRU9GAAC4bRAADgAAAJEEEAA9AAAAdQAAABsAAACRBBAAPQAAAHYAAABBAAAANAEAANgCAAAIAAAANQEAADYBAAA3AQAAOAEAAMgpAAAEAAAAOQEAADoBAAA7AQAAPAEAAGwAAAAEAAAAPQEAAD4BAAA/AQAAPAEAAGwAAAAEAAAAQAEAAD4BAABBAQAAPAEAAGwAAAAEAAAAQgEAAD4BAABDAQAARAEAAKABAAAIAAAARQEAAEYBAABHAQAASAEAADADAAAIAAAASQEAAEoBAABLAQAATAEAACQqAAAEAAAATQEAAE4BAABPAQAAUAEAAMgAAAAEAAAAUQEAAFIBAABTAQAAUAEAAMgAAAAEAAAAVAEAAFIBAABVAQAAUAEAAMgAAAAEAAAAVgEAAFIBAABXAQAAWAEAAAACAAAIAAAAWQEAAFoBAABbAQAAXAEAALgCAAAIAAAAXQEAAF4BAABfAQAAYAEAAKgpAAAEAAAAYQEAAGIBAABjAQAAZAEAAEwAAAAEAAAAZQEAAGYBAABnAQAAZAEAAEwAAAAEAAAAaAEAAGYBAABpAQAAZAEAAEwAAAAEAAAAagEAAGYBAABrAQAAbAEAAIABAAAIAAAAbQEAAG4BAABvAQAAcAEAADgDAAAIAAAAcQEAAHIBAABzAQAAdAEAACwqAAAEAAAAdQEAAHYBAAB3AQAAeAEAANAAAAAEAAAAeQEAAHoBAAB7AQAAeAEAANAAAAAEAAAAfAEAAHoBAAB9AQAAeAEAANAAAAAEAAAAfgEAAHoBAAB/AQAAgAEAAAgCAAAIAAAAgQEAAIIBAACDAQAArA4QAD4AAACkAQAAJAAAAEludmFsaWQgZGVjb2RlciB0eXBlQHAQABQAAACsDhAAPgAAAL4BAAAJAAAArA4QAD4AAADDAQAAKQAAAKwOEAA+AAAAwAIAABwAAACsDhAAPgAAALsCAABBAAAArA4QAD4AAAC5AgAAQQAAAKwOEAA+AAAArQIAADUAAACsDhAAPgAAAKgCAAA1AAAArA4QAD4AAACkAgAAMQAAAKwOEAA+AAAAoAIAAC8AAACsDhAAPgAAAJ8CAAAxAAAArA4QAD4AAACeAgAALQAAAKwOEAA+AAAAnQIAADUAAACsDhAAPgAAAJwCAAAzAAAAhh8QAD8AAACYAAAAFQAAAHRpbnlfbG9kOjpjb21wdXRlX2xvZF90cmVlOiBzcGxhdHMubGVuPSwgbG9kX2Jhc2U9LCBtZXJnZV9maWx0ZXI9AAAAPHEQACcAAABjcRAACwAAAG5xEAAPAAAAbGV2ZWxfbWluOiAsIGZlYXR1cmVfc2l6ZVswXTogAACYcRAACwAAAKNxEAATAAAAhh8QAD8AAAA0AAAAFAAAAExldmVsOiAsIHN0ZXA6ICwgZnJvbnRpZXI6ICAvIAAA2HEQAAcAAADfcRAACAAAAOdxEAAMAAAA83EQAAMAAABTb3J0ZWQgYWN0aXZlOiAAGHIQAA8AAABNZXJnZWQ6IDByEAAIAAAA83EQAAMAAACGHxAAPwAAAHIAAAAXAAAAAQAAAIYfEAA/AAAAiQAAABMAAABSb290IGluZGV4OiBschAADAAAAFJvb3Q6IAAAgHIQAAYAAACGHxAAPwAAAIcAAAAFAAAAhh8QAD8AAABnAAAAKAAAAIYfEAA/AAAAZwAAAB0AAACGHxAAPwAAAGMAAAAdAAAAhh8QAD8AAABkAAAAGAAAAIYfEAA/AAAAYQAAAFAAAAANBRAAQAAAAM8AAAAdAAAAxh8QAEAAAADYAAAAFQAAAMYfEABAAAAAygAAABYAAABiaGF0dF9sb2Q6OmNvbXB1dGVfbG9kX3RyZWU6IGluaXRpYWxfbGVuPQAAACBzEAApAAAAxh8QAEAAAAAYAAAAGQAAACwgIyBhY3RpdmU6ICwgIyBzcGxhdHM6INhxEAAHAAAA33EQAAgAAADncRAADAAAAPNxEAADAAAAZHMQAAwAAABwcxAADAAAAMYfEABAAAAARQAAABoAAADGHxAAQAAAAHwAAAAdAAAAxh8QAEAAAABoAAAANwAAAMYfEABAAAAAawAAABoAAADGHxAAQAAAAGwAAABBAAAAxh8QAEAAAABvAAAAGwAAAMYfEABAAAAAcwAAACEAAADGHxAAQAAAAFQAAAAtAAAAUm9vdCBzcGxhdDogLHQQAAwAAADGHxAAQAAAAJEAAAAZAAAAxh8QAEAAAACVAAAADgAAAE91dHB1dCBzZXQ6IGB0EAAMAAAA83EQAAMAAABMb0QgZ3Jvd3RoIGZhY3RvcjogAHx0EAATAAAAxh8QAEAAAADgAAAADQAAAFBydW5pbmcgZnJvbSBsaW1pdF9zaXplPSwgIyBmcm9udGllcj0AAACodBAAGAAAAMB0EAANAAAAxh8QAEAAAADyAAAABQAAAFRydW5jYXRlZCB0byBvdXRwdXRfY291bnQ9AADwdBAAGgAAAEF2ZXJhZ2UgY2hpbGRyZW4gcGVyIGludGVyaW9yIHNwbGF0OiAAAAAUdRAAJQAAAFJvb3QgI2NoaWxkcmVuOiBEdRAAEAAAAMYfEABAAAAA9gAAABUAAADGHxAAQAAAAK8AAAAaAAAAxh8QAEAAAACyAAAAGQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jaGlsZHJlbi5sZW4oKSA8PSA2NTUzNQAAAMYfEABAAAAAswAAABEAAAAKAACABAAAgAgAAIAQ6BEAoPsRAKP7EQCo+xEArvsRALf7EQADAAAAAwAAAAUAAAAGAAAACQAAAAMAAABkSxAAZUsQAGZLEAAHAAAABgAAAAMAAAAGAAAABQAAAAIAAAAJAAAACwAAAAsAAAAEAAAAeEsQAH9LEAD6TREAhUsQAItLEACQSxAAkksQAJtLEACmSxAAk9sRABgAAAAIAAAADwAAAAYAAAAEAAAADgAAAA0AAABe2xEAdtsRAH7bEQCN2xEAk9sRAJfbEQCl2xEAAwAAAAMAAAAKAAAACgAAAAIAAAAHAAAAAgAAAAcAAAAFAAAABQAAAAcAAAADAAAAAwAAAFBQEABTUBAAVlAQAGBQEABqUBAAbFAQAHNQEAB1UBAAfFAQAIFQEACGUBAAjVAQAJBQEADWAxAAIgAAAFIAAAATAAAA8hUQABsAAADoAQAAFwBBrO7BAAueAQEAAACEAQAA+QMQABgAAACKAgAADgAAAHEIEAAYAAAAggIAABMAAABxCBAAGAAAAJ8BAAA/AAAAcQgQABgAAACgAQAAMwAAANjKEQARAAAA9B4QACAAAAAqAgAAEQAAAIUBAAAMAAAABAAAAIYBAACHAQAAiAEAAEMbEAAaAAAAvQEAAB0AAAC0AAAADAAAAAQAAACJAQAAigEAAIsBAEHU78EACzUBAAAAuAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKQAAAgBBkvDBAAsBBQBBnPDBAAvOASAAAKggICAgICAgCgpDYXVzZWQgYnk6CgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgoAAEV4EAARAAAAEgQQAFwAAAA2AAAAHwAAABIEEABcAAAAPAAAABsAAABd/BEAAgAAAGJhY2t0cmFjZSBjYXB0dXJlIGZhaWxlZOMIEABeAAAAZwQAAA4AAAAAAAAAEAAAAAQAAACMAQAAjQEAAI4BAAAKClN0YWNrOgoKAAC0AAAADAAAAAQAAACJAQAAigEAAI8BAEH08cEAC4AYAQAAALgAAACoAQQBAQEEAQICAMAEAgQBCQIBAfsHzwEFATEtAQEBAgECAQEsAQsGCgsBASMBChUQAWUIAQoBBCEBAQEeG1sLOgsEAQIBGBgrAywBBwIFCSk6NwEBAQQIBAEDBwoCDQEPAToBBAQIARQCGgECAjkBBAIEAgIDAwEeAgMBCwI5AQQFAQIEARQCFgYBAToBAgEBBAgBBwILAh4BPQEMATIBAwE3AQEDBQMBBAcCCwIdAToBAgEGAQUCFAIcAjkCBAQIARQCHQFIAQcDAQFaAQIHCwliAQIJCQEBB0kCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAV4BAAMAAx0CHgIeAkACAQcIAQILAwEFAS0FMwFBAiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEnAQgfMQQwAQEFAQEFASgJDAIgBAICAQM4AQECAwEBAzoIAgJABlIDAQ0BBwQBBgEDAjI/DQEiZQABAQMLAw0DDQMNAgwFCAIKAQIBAgUxBQEKAQENARANMyEAAnEDfQEPAWAgLwEAASQEAwUFAV0GXQMAAQAGAAFiBAEKAQEcBFACDiJOARcDZwMDAggBAwEEARkCBQGXAhoSDQEmCBkLLgMwAQIEAgIRARUCQgYCAgICDAEIASMBCwEzAQEDAgIFAgEBGwEOAgUCAQFkBQkDeQECAQQBAAGTEQAQAwEMECIBAgGpAQcBBgELASMBAQEvAS0CQwEVAwAB4gGVBQAGASoBCQADAQIFBCgDBAGlAgAEJgEaBQEBAAJPBEYLMQR7ATYPKQECAgoDMQQCAgIBBAEKATIDJAUBCD4BDAI0CQoEAgFfAwIBAQIGAQIBnQEDCBUCOQIDASUHAwVGBg0BAQEBAQ4CVQgCAwEBFwFUBgEBBAIBAu4EBgIBAhsCVQgCAQECagEBAQIGAQFlAQEBAgQBBQAJAQIAAgEBBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQEBARcBABEGDwAMAwMABTsHCQQAAygCAAE/EUACAQIABAEHAQIAAgEEAC4CFwADCRACBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFBT4hAaAOAAE9BAAF/gIAB20IAAUAAR5ggPAAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJPBEYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AgAHbQcAYIDwAKoBCgEEAQUXAR8BwwEEBNABJAcCHgVgASoEAgICBAEBBgEBAwEBARQBUwGLCKYBJgkpACYBAQUBAisBBABWAgYACwUrAgNAwEAAAgYCJgIGAggBAQEBAQEBHwI1AQcBAQMDAQcDBAIGBA0FAwEHdAENARANZQEEAQIKAQEDBQYBAQEBAQEEAQYEAQIEBQUEAREgAwIANADlBgQDAgwmAQEFAQAuEh6EZgMEAT4CAgEBAQgVBQEDACsBDgZQAAcMBQAaBhoAUGAkBCR0CwEPAQcBAgELAQ8BBwECAAECAwEqAQkAMw0zXRYKFgBAAEAAVQFHAQICAQICAgQBDAEBAQcBQQEEAggBBwEcAQQBBQEBAwcBAAIZARkBHwEZAR8BGQEfARkBHwEZAQgACgEUBgYAPgBEABoGGgYaAEFueQocEAAbAAAArwoAACYAAAAKHBAAGwAAALgKAAAaAAAAKzAxMjM0NTY3ODlBQkNERUYsCigKAAAAAAAAAAwAAAAEAAAAkAEAAJEBAACSAQAAIHsKIHsgLi4gfTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAocEAAbAAAANQcAAB8AAABhc3NlcnRpb24gZmFpbGVkOiBvdGhlciA+IDBhc3NlcnRpb24gZmFpbGVkOiBub2JvcnJvdwAAAOoSEAAeAAAAqwEAAAEAAABhc3NlcnRpb24gZmFpbGVkOiBkaWdpdHMgPCA0MDAuMGUwYXNzZXJ0aW9uIGZhaWxlZDogIWJ1Zi5pc19lbXB0eSgpAGIfEAAjAAAAtwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBidWZbMF0gPiBiJzAnAGIfEAAjAAAAuAAAAAUAAABiHxAAIwAAAAYBAAAFAAAAYh8QACMAAAAHAQAABQAAAGVlLWFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBtYXhsZW5iHxAAIwAAAHoCAAANAAAAYh8QACMAAACZAAAADgAAAN9FGj0DzxrmwfvM/gAAAADKxprHF/5wq9z71P4AAAAAT9y8vvyxd//2+9z+AAAAAAzWa0HvkVa+Efzk/gAAAAA8/H+QrR/QjSz87P4AAAAAg5pVMShcUdNG/PT+AAAAALXJpq2PrHGdYfz8/gAAAADLi+4jdyKc6nv8BP8AAAAAbVN4QJFJzK6W/Az/AAAAAFfOtl15EjyCsfwU/wAAAAA3VvtNNpQQwsv8HP8AAAAAT5hIOG/qlpDm/CT/AAAAAMc6giXLhXTXAP0s/wAAAAD0l7+Xzc+GoBv9NP8AAAAA5awqF5gKNO81/Tz/AAAAAI6yNSr7ZziyUP1E/wAAAAA7P8bS39TIhGv9TP8AAAAAus3TGidE3cWF/VT/AAAAAJbJJbvOn2uToP1c/wAAAACEpWJ9JGys27r9ZP8AAAAA9tpfDVhmq6PV/Wz/AAAAACbxw96T+OLz7/10/wAAAAC4gP+qqK21tQr+fP8AAAAAi0p8bAVfYocl/oT/AAAAAFMwwTRg/7zJP/6M/wAAAABVJrqRjIVOllr+lP8AAAAAvX4pcCR3+d90/pz/AAAAAI+45bifvd+mj/6k/wAAAACUfXSIz1+p+Kn+rP8AAAAAz5uoj5NwRLnE/rT/AAAAAGsVD7/48AiK3/68/wAAAAC2MTFlVSWwzfn+xP8AAAAArH970MbiP5kU/8z/AAAAAAY7KyrEEFzkLv/U/wAAAADTknNpmSQkqkn/3P8AAAAADsoAg/K1h/1j/+T/AAAAAOsaEZJkCOW8fv/s/wAAAADMiFBvCcy8jJn/9P8AAAAALGUZ4lgXt9Gz//z/AEH+icIACwVAnM7/BABBjIrCAAvoDRCl1Ojo/wwAAAAAAAAAYqzF63itAwAUAAAAAACECZT4eDk/gR4AHAAAAAAAsxUHyXvOl8A4ACQAAAAAAHBc6nvOMn6PUwAsAAAAAABogOmrpDjS1W0ANAAAAAAARSKaFyYnT5+IADwAAAAAACf7xNQxomPtogBEAAAAAACorciMOGXesL0ATAAAAAAA22WrGo4Ix4PYAFQAAAAAAJodcUL5HV3E8gBcAAAAAABY5xumLGlNkg0BZAAAAAAA6o1wGmTuAdonAWwAAAAAAEp375qZo22iQgF0AAAAAACFa320e3gJ8lwBfAAAAAAAdxjdeaHkVLR3AYQAAAAAAMLFm1uShluGkgGMAAAAAAA9XZbIxVM1yKwBlAAAAAAAs6CX+ly0KpXHAZwAAAAAAONfoJm9n0be4QGkAAAAAAAljDnbNMKbpfwBrAAAAAAAXJ+Yo3KaxvYWArQAAAAAAM6+6VRTv9y3MQK8AAAAAADiQSLyF/P8iEwCxAAAAAAApXhc05vOIMxmAswAAAAAAN9TIXvzWhaYgQLUAAAAAAA6MB+X3LWg4psC3AAAAAAAlrPjXFPR2ai2AuQAAAAAADxEp6TZfJv70ALsAAAAAAAQRKSnTEx2u+sC9AAAAAAAGpxAtu+Oq4sGA/wAAAAAACyEV6YQ7x/QIAMEAQAAAAApMZHp5aQQmzsDDAEAAAAAnQycofubEOdVAxQBAAAAACn0O2LZICiscAMcAQAAAACFz6d6XktEgIsDJAEAAAAALd2sA0DkIb+lAywBAAAAAI//RF4vnGeOwAM0AQAAAABBuIycnRcz1NoDPAEAAAAAqRvjtJLbGZ71A0QBAAAAANl337puv5brDwRMAQAAAADLAhAALgAAAH0AAAAVAAAAywIQAC4AAADvAgAAJgAAAMsCEAAuAAAA4wIAACYAAADLAhAALgAAAMwCAAAmAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ID4gMMsCEAAuAAAA3AEAAAUAAADLAhAALgAAADMCAAARAAAAywIQAC4AAABsAgAACQAAAMsCEAAuAAAAqQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1pbnVzID4gMAAAAMsCEAAuAAAAqgAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLnBsdXMgPiAwywIQAC4AAACrAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCArIGQucGx1cyA8ICgxIDw8IDYxKQAAAMsCEAAuAAAArwAAAAUAAADLAhAALgAAAAoBAAARAAAAywIQAC4AAABAAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX3N1YihkLm1pbnVzKS5pc19zb21lKCkAywIQAC4AAACtAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX2FkZChkLnBsdXMpLmlzX3NvbWUoKQAAywIQAC4AAACsAAAABQAAAPQREAAvAAAACwEAAAUAAAD0ERAALwAAAAwBAAAFAAAA9BEQAC8AAAANAQAABQAAAPQREAAvAAAAcgEAACQAAAD0ERAALwAAAHcBAAAvAAAA9BEQAC8AAACEAQAAEgAAAPQREAAvAAAAZgEAAA0AAAD0ERAALwAAAEwBAAAiAAAA9BEQAC8AAAAPAQAABQAAAPQREAAvAAAADgEAAAUAAAD0ERAALwAAAHYAAAAFAAAA9BEQAC8AAAB3AAAABQAAAPQREAAvAAAAeAAAAAUAAAD0ERAALwAAAMIAAAAJAAAA9BEQAC8AAAD7AAAADQAAAPQREAAvAAAAAgEAABIAAAD0ERAALwAAAHoAAAAFAAAA9BEQAC8AAAB5AAAABQAAAAEAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjvBb/KGIwAAAIHvrIVbQW0t7gQAAAEfar9k7Thu7Zen2vT5P+kDTxgAAT6VLgmZ3wP9OBUPL+R0I+z1z9MI3ATE2rDNvBl/M6YDJh/pTgIAAAF8Lphbh9O+cp/Z2IcvFRLGUN5rcG5Kzw/YldVucbImsGbGrSQ2FR1a00I8DlT/Y8BzVcwX7/ll8ii8VffH3IDc7W70zu/cX/dTBQBvBBAAIQAAAC4AAAAJAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQbaYwgALMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMEBAQEBABB9JjCAAv1cFsuLi5dYmVnaW4gPD0gZW5kICggPD0gKSB3aGVuIHNsaWNpbmcgYAB5jBAADgAAAIeMEAAEAAAAi4wQABAAAADokhEAAQAAAGJ5dGUgaW5kZXggIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSAgKGJ5dGVzICkgb2YgYAC8jBAACwAAAMeMEAAmAAAA7YwQAAgAAAD1jBAABgAAAOiSEQABAAAAIGlzIG91dCBvZiBib3VuZHMgb2YgYAAAvIwQAAsAAAAkjRAAFgAAAOiSEQABAAAAJhEQAB8AAABnBgAAFQAAACYREAAfAAAAlQYAABUAAAAmERAAHwAAAJYGAAAVAAAAJhEQAB8AAAB0BQAAKAAAACYREAAfAAAAdAUAABIAAABjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKCkgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICgAAACkjRAAJgAAAMqNEAArAAAAXgcSAAEAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyEI4QAEwAAAD6AhAALwAAAFwDAAAFAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHSOEAASAAAAho4QACIAAAByYW5nZSBlbmQgaW5kZXgguI4QABAAAACGjhAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgANiOEAAWAAAA7o4QAA0AAAB1ChAAIAAAAIQAAAAeAAAAdQoQACAAAACgAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAwAAAAOAAAADBAAAA4QAAAMIAAADiAAAAwwAAAOMAAADEAAAA5AAAAMUAAADlAAAAxgAAAOYAAADHAAAA5wAAAMgAAADoAAAAyQAAAOkAAADKAAAA6gAAAMsAAADrAAAAzAAAAOwAAADNAAAA7QAAAM4AAADuAAAAzwAAAO8AAADQAAAA8AAAANEAAADxAAAA0gAAAPIAAADTAAAA8wAAANQAAAD0AAAA1QAAAPUAAADWAAAA9gAAANgAAAD4AAAA2QAAAPkAAADaAAAA+gAAANsAAAD7AAAA3AAAAPwAAADdAAAA/QAAAN4AAAD+AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAIAQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMBAAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAAAAAQAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA5AQAAOgEAADsBAAA8AQAAPQEAAD4BAAA/AQAAQAEAAEEBAABCAQAAQwEAAEQBAABFAQAARgEAAEcBAABIAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAAFEBAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFoBAABbAQAAXAEAAF0BAABeAQAAXwEAAGABAABhAQAAYgEAAGMBAABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAG8BAABwAQAAcQEAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAD/AAAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAAgQEAAFMCAACCAQAAgwEAAIQBAACFAQAAhgEAAFQCAACHAQAAiAEAAIkBAABWAgAAigEAAFcCAACLAQAAjAEAAI4BAADdAQAAjwEAAFkCAACQAQAAWwIAAJEBAACSAQAAkwEAAGACAACUAQAAYwIAAJYBAABpAgAAlwEAAGgCAACYAQAAmQEAAJwBAABvAgAAnQEAAHICAACfAQAAdQIAAKABAAChAQAAogEAAKMBAACkAQAApQEAAKYBAACAAgAApwEAAKgBAACpAQAAgwIAAKwBAACtAQAArgEAAIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAIAAAA/gEAAP0BAAAoAAAACAAAAP8BAAD+AQAA3NcRAAACAAABAgAAAgIAAAMCAAAEAgAAAAAAAAEAAAABAAAABQIAAAAAAAABAAAAAQAAAAYCAAAFAgAAGNgRAAcCAAAIAgAACQIAAAcCAAAKAgAAlQEAAAwAAAAEAAAACwIAAJUBAAAMAAAABAAAANAAAAALAgAAVNgRALAAAADRAAAAsgAAALAAAACzAAAADAIAABgAAAAEAAAADQIAAAwCAAAYAAAABAAAAA4CAAANAgAAkNgRAA8CAAAQAgAAsgAAAA8CAACzAAAAEQIAACgAAAAEAAAA4wAAABECAAAoAAAABAAAAOQAAADjAAAAzNgRAOUAAADtAAAA5wAAAOgAAADpAAAA8AAAACQAAAAEAAAA4wAAAPAAAAAkAAAABAAAAOQAAADjAAAACNkRAOUAAADxAAAA5wAAAOgAAADpAAAAEgIAAEgAAAAIAAAAEwIAABICAABIAAAACAAAABQCAAATAgAARNkRABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAADQAAAAEAAAA4wAAABoCAAA0AAAABAAAAOQAAADjAAAAgNkRAOUAAAAbAgAA5wAAAOgAAADpAAAAHAIAACAAAAAEAAAA4wAAABwCAAAgAAAABAAAAOQAAADjAAAAvNkRAOUAAAAdAgAA5wAAAOgAAADpAAAA7gAAACQAAAAEAAAA4wAAAO4AAAAkAAAABAAAAOQAAADjAAAA+NkRAOUAAADvAAAA5wAAAOgAAADpAAAAHgIAAB8CAAAgAgAAIQIAACICAAAIAQAA/QAAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIAAP0AAAD+AAAAKQIAACoCAAArAgAAAgEAAPwAAAD9AAAA9wAAACwCAAAtAgAALgIAABcBAAD8AAAA/QAAAC8CAAAwAgAAMQIAADICAAATAQAADgEAAP0AAAAzAgAANAIAADUCAAA2AgAANwIAADgCAAD9AAAAAAAAAAQAAAAEAAAAOQIAAGNvbnRleHQAOgIAAAwAAAAEAAAAywAAAHNvdXJjZQAAOgIAAAwAAAAEAAAAygAAADoCAAAMAAAABAAAAMsAAADKAAAADNsRADsCAADNAAAAsgAAADwCAACzAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbUZhaWxlZENhbm5vdE1ha2VQcm9ncmVzc0JhZFBhcmFtQWRsZXIzMk1pc21hdGNoRmFpbGVkRG9uZU5lZWRzTW9yZUlucHV0SGFzTW9yZU91dHB1dENvbG9yQ29sb3JMYXlvdXRDb2xvcnNwYWNlQ2ljcEZvcm1hdEdlbmVyaWNGZWF0dXJlAAAAAAQAAAAEAAAAKAEAACkBAAA9AgAAU1JnYlVuc3BlY2lmaWVkUmdiTVJnYkJCdDYwMVJnYjI0MG1HZW5lcmljRmlsbVJnYjIwMjBYeXpTbXB0ZVJwNDMxU21wdGVScDQzMkluZHVzdHJ5MjIAAPYQEABPAAAAaQQAACQAAAD2EBAATwAAAM4BAAA3AAAAYXNzZXJ0aW9uIGZhaWxlZDogc2NhbGVzLnguaXNfZmluaXRlKCkgJiYgc2NhbGVzLnkuaXNfZmluaXRlKCkgJiYgc2NhbGVzLnouaXNfZmluaXRlKCkAALIFEAAXAAAA8AAAAAkAAACyBRAAFwAAAPcAAAAVAAAAsgUQABcAAAD4AAAAFwAAALIFEAAXAAAABQEAABYAAACyBRAAFwAAABIBAAAWAAAAsgUQABcAAAAfAQAAFgAAALIFEAAXAAAAGAEAACUAAACyBRAAFwAAABkBAAAkAAAAsgUQABcAAAALAQAAJQAAALIFEAAXAAAADAEAACQAAACyBRAAFwAAAP0AAAAlAAAAsgUQABcAAAD+AAAAJAAAALIFEAAXAAAA4gAAACEAAACyBRAAFwAAANgAAAAhAAAAsgUQABcAAAAqAQAAFgAAALIFEAAXAAAAJgEAABYAAACyBRAAFwAAAC4BAAAXAAAAsgUQABcAAAC6AAAAKAAAALIFEAAXAAAAvgAAAC8AAACyBRAAFwAAADYBAAARAAAAsgUQABcAAAA6AQAAEQAAALIFEAAXAAAAPgEAABEAAACyBRAAFwAAAH4BAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogdG90YWxfY292Lnh4KCkuaXNfZmluaXRlKCkgJiYgdG90YWxfY292Lnl5KCkuaXNfZmluaXRlKCkgJiYKICAgIHRvdGFsX2Nvdi56eigpLmlzX2Zpbml0ZSgpdAUQABcAAABjAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHRvdGFsX2Nvdi54eSgpLmlzX2Zpbml0ZSgpICYmIHRvdGFsX2Nvdi54eigpLmlzX2Zpbml0ZSgpICYmCiAgICB0b3RhbF9jb3YueXooKS5pc19maW5pdGUoKXQFEAAXAAAAZAEAAAkAAAB0BRAAFwAAAGgBAAAJAAAAdAUQABcAAACXAQAAFQAAAHQFEAAXAAAAmAEAABcAAAB0BRAAFwAAAKQBAAAWAAAAdAUQABcAAACxAQAAFgAAAHQFEAAXAAAAvgEAABYAAAB0BRAAFwAAALcBAAAlAAAAdAUQABcAAAC4AQAAJAAAAHQFEAAXAAAAqgEAACUAAAB0BRAAFwAAAKsBAAAkAAAAdAUQABcAAACdAQAAJQAAAHQFEAAXAAAAngEAACQAAAB0BRAAFwAAAEsBAAAlAAAAdAUQABcAAABMAQAAIQAAAHQFEAAXAAAAQgEAACEAAAB0BRAAFwAAAMkBAAAWAAAAdAUQABcAAADFAQAAFgAAAHQFEAAXAAAAzQEAABcAAAB0BRAAFwAAABQBAAAVAAAAdAUQABcAAAAYAQAAGQAAAHQFEAAXAAAA1gEAABEAAAB0BRAAFwAAANoBAAARAAAAdAUQABcAAADeAQAAEQAAAHQFEAAXAAAAGgIAAAkAAABJZGVudGl0eUJ0NzA5VXNGQ0NCdDQ3MEJHU21wdGUxNzBtU21wdGUyNDBtWUNnQ29CdDIwMjBOb25Db25zdGFudEJ0MjAyMENvbnN0YW50U21wdGUyMDg1Q2hyb21hdGljaXR5RGVyaXZlZE5vbkNvbnN0YW50Q2hyb21hdGljaXR5RGVyaXZlZENvbnN0YW50QnQyMTAwSXB0UHFDMllDZ0NvUmVZQ2dDb1JvTmFycm93UmFuZ2VGdWxsUmFuZ2WyBRAAFwAAABUCAABIAAAAsgUQABcAAAAbAgAAMAAAALIFEAAXAAAAcQIAADEAAACyBRAAFwAAAHMCAAAxAAAAsgUQABcAAAB9AgAAIwAAALIFEAAXAAAAfwIAAB4AAACyBRAAFwAAAIECAAAqAAAAsgUQABcAAAAiAgAAQgAAALIFEAAXAAAATwIAAC4AAACyBRAAFwAAAE8CAAAdAAAAsgUQABcAAABcAgAALgAAALIFEAAXAAAAXAIAAB0AAACyBRAAFwAAAGkCAAAuAAAAsgUQABcAAABpAgAAHQAAALIFEAAXAAAAOAIAAEkAAACyBRAAFwAAAAQCAAAfAAAAsgUQABcAAAAGAgAAPAAAALIFEAAXAAAABwIAAD4AAACyBRAAFwAAAAUCAAA3AAAAsgUQABcAAAADAgAAPQAAALIFEAAXAAAAMQIAAEcAAAB0BRAAFwAAABwDAABIAAAAdAUQABcAAAAiAwAAMAAAAHQFEAAXAAAAbQMAADEAAAB0BRAAFwAAAG8DAAAxAAAAdAUQABcAAAB5AwAAIwAAAHQFEAAXAAAAewMAAB4AAAB0BRAAFwAAAH0DAAAqAAAAdAUQABcAAAApAwAAQgAAAHQFEAAXAAAAVAMAABkAAAB0BRAAFwAAAFQDAAA3AAAAdAUQABcAAABdAwAAGQAAAHQFEAAXAAAAXQMAADcAAAB0BRAAFwAAAGYDAAAZAAAAdAUQABcAAABmAwAANwAAAHQFEAAXAAAAQAMAAEkAAABjZW50ZXIgYXJyYXkgdG9vIHNtYWxsOiAgPCAAtOMRABgAAADM4xEAAwAAAHQFEAAXAAAAAAMAAAkAAABvcGFjaXR5IGFycmF5IHRvbyBzbWFsbDogAAAA8OMRABkAAADM4xEAAwAAAHQFEAAXAAAAAQMAAAkAAAByZ2IgYXJyYXkgdG9vIHNtYWxsOiAAAAAs5BEAFQAAAMzjEQADAAAAdAUQABcAAAACAwAACQAAAHNjYWxlIGFycmF5IHRvbyBzbWFsbDogAGTkEQAXAAAAzOMRAAMAAAB0BRAAFwAAAAMDAAAJAAAAcXVhdCBhcnJheSB0b28gc21hbGw6IAAAnOQRABYAAADM4xEAAwAAAHQFEAAXAAAABAMAAAkAAABiYXNlICsgY291bnQgb3V0IG9mIGJvdW5kczogICsgID4gAADU5BEAHAAAAPDkEQADAAAA8+QRAAMAAAB0BRAAFwAAAAUDAAAJAAAAdAUQABcAAAALAwAAHwAAAHQFEAAXAAAADgMAAD4AAAB0BRAAFwAAAA0DAAA8AAAAdAUQABcAAAAMAwAANwAAAHQFEAAXAAAACgMAAD0AAAB0BRAAFwAAADkDAABHAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRlgOURADwAAAAVCBAAWwAAADUAAAASAAAAQnQ0NzBNTGluZWFyTG9nMTAwTG9nU3FydEllYzYxOTY2XzJfNEJ0MTM2MUJ0MjAyMF8xMGJpdEJ0MjAyMF8xMmJpdFNtcHRlMjA4NFNtcHRlNDI4QnQyMTAwSGxnAAAAAAAAAAgAAAAEAAAAPgIAAIokEABeAAAAVgEAAC4AAACKJBAAXgAAAEUBAAA2AAAAiiQQAF4AAADSBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jYXAgPj0gbGVuiiQQAF4AAACdBAAADQAAAF4VEABjAAAA8gAAAAkAAABeFRAAYwAAAP8AAAASAAAAWE1MOmNvbS5hZG9iZS54bXBSYXcgcHJvZmlsZSB0eXBlIGlwdGNSYXcgcHJvZmlsZSB0eXBlIDhiaW0AZgsQAE4AAACDBwAAEQAAANwZEAAdAAAATwEAAAkAAADcGRAAHQAAAFABAAAJAAAA3BkQAB0AAABOAQAALwAAANwZEAAdAAAAbwEAAAkAAADcGRAAHQAAAHABAAAJAAAA3BkQAB0AAABxAQAACQAAANwZEAAdAAAAcgEAAAkAAADcGRAAHQAAAG4BAAAvAAAA3BkQAB0AAACMAQAACQAAANwZEAAdAAAAjQEAAAkAAADcGRAAHQAAAI4BAAAJAAAA3BkQAB0AAACPAQAACQAAANwZEAAdAAAAiwEAAC8AAADcGRAAHQAAAJ4BAAANAAAA3BkQAB0AAADYAQAAFQAAAGZfcmVzdF8AAOgRAAcAAABwbHlJbnZhbGlkIFBMWSBoZWFkZXIAAAAT6BEAEgAAAP0AEAAUAAAAdgEAABUAAABiaW5hcnlfbGl0dGxlX2VuZGlhbjEuMFVuc3VwcG9ydGVkIFBMWSB2ZXJzaW9uOiBX6BEAGQAAAFVuc3VwcG9ydGVkIFBMWSBmb3JtYXQ6IHjoEQAYAAAAZWxlbWVudAD9ABAAFAAAAIUBAAAeAAAAcHJvcGVydHlQTFkgbGlzdCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkAAAAuOgRACUAAABQcm9wZXJ0eSBvdXRzaWRlIG9mIGVsZW1lbnQA6OgRABsAAABJbnZhbGlkIHByb3BlcnR5IGxpbmU6IAAM6REAFwAAAGVuZF9oZWFkZXIAAP0AEAAUAAAAngEAABIAAABNaXNzaW5nIFBMWSBmb3JtYXQgbGluZQBI6REAFwAAAHZlcnRleE1pc3NpbmcgdmVydGV4IGVsZW1lbnRu6REAFgAAAGNodW5rVW5zdXBwb3J0ZWQgUExZIGhlYWRlciBsaW5lOiAAAJHpEQAdAAAAeE1pc3NpbmcgeCBwcm9wZXJ0eQC56REAEgAAAHlNaXNzaW5nIHkgcHJvcGVydHkA1ekRABIAAAB6TWlzc2luZyB6IHByb3BlcnR5APHpEQASAAAAc2NhbGVfME1pc3Npbmcgc2NhbGVfMCBwcm9wZXJ0eQAT6hEAGAAAAHNjYWxlXzFNaXNzaW5nIHNjYWxlXzEgcHJvcGVydHkAO+oRABgAAABzY2FsZV8yTWlzc2luZyBzY2FsZV8yIHByb3BlcnR5AGPqEQAYAAAAcm90XzFNaXNzaW5nIHJvdF8wIHByb3BlcnR5AInqEQAWAAAAcm90XzJNaXNzaW5nIHJvdF8xIHByb3BlcnR5AK3qEQAWAAAAcm90XzNNaXNzaW5nIHJvdF8yIHByb3BlcnR5ANHqEQAWAAAAcm90XzBNaXNzaW5nIHJvdF8zIHByb3BlcnR5APXqEQAWAAAAb3BhY2l0eU1pc3Npbmcgb3BhY2l0eSBwcm9wZXJ0eQAb6xEAGAAAAGZfZGNfME1pc3NpbmcgZl9kY18wIHByb3BlcnR5AAAAQusRABcAAABmX2RjXzFNaXNzaW5nIGZfZGNfMSBwcm9wZXJ0eQAAAGrrEQAXAAAAZl9kY18yTWlzc2luZyBmX2RjXzIgcHJvcGVydHkAAACS6xEAFwAAAEludmFsaWQgbnVtYmVyIG9mIGZfcmVzdCBwcm9wZXJ0aWVzOiAAAAC06xEAJQAAAP0AEAAUAAAAggMAACgAAAD9ABAAFAAAAHADAAAoAAAA/QAQABQAAAB5AwAAKAAAAP0AEAAUAAAA/QMAACYAAAD9ABAAFAAAAP4DAAAnAAAA/QAQABQAAAAABAAAKgAAAP0AEAAUAAAABAQAACoAAAD9ABAAFAAAAAgEAAAqAAAA/QAQABQAAAAMBAAAKgAAAP0AEAAUAAAA9gMAACoAAAD9ABAAFAAAAPoDAAAqAAAA/QAQABQAAADeAwAAJgAAAP0AEAAUAAAA3wMAACcAAAD9ABAAFAAAAOEDAAAqAAAA/QAQABQAAADlAwAAKgAAAP0AEAAUAAAA6QMAACoAAAD9ABAAFAAAAO0DAAAqAAAA/QAQABQAAADXAwAAKQAAAP0AEAAUAAAA2wMAACkAAAD9ABAAFAAAACYEAAAmAAAA/QAQABQAAAAlBAAAJwAAAP0AEAAUAAAAIgQAACoAAAD9ABAAFAAAAB4EAAAqAAAA/QAQABQAAAAVBAAAKgAAAP0AEAAUAAAAKAQAACoAAAD9ABAAFAAAALcCAAAZAAAA/QAQABQAAADkAgAAHAAAAP0AEAAUAAAA5QIAABwAAAD9ABAAFAAAAOYCAAAcAAAA/QAQABQAAADnAgAAGwAAAP0AEAAUAAAA6AIAABsAAAD9ABAAFAAAAOkCAAAbAAAA/QAQABQAAADqAgAAGQAAAP0AEAAUAAAA6wIAABkAAAD9ABAAFAAAAOwCAAAZAAAA/QAQABQAAADtAgAAHQAAAP0AEAAUAAAA7gIAABoAAAD9ABAAFAAAAO8CAAAaAAAA/QAQABQAAADwAgAAGgAAAP0AEAAUAAAA8QIAABoAAABNaXNzaW5nIFBMWSBjaHVuayBmb3Igc3BsYXQgZO4RABwAAABNaXNzaW5nIGNodW5rIGVsZW1lbnQgZm9yIFN1cGVyU3BsYXQgUExZiO4RACgAAABtaW5feE1pc3NpbmcgbWluX3ggcHJvcGVydHkAve4RABYAAABtaW5feU1pc3NpbmcgbWluX3kgcHJvcGVydHkA4e4RABYAAABtaW5fek1pc3NpbmcgbWluX3ogcHJvcGVydHkABe8RABYAAABtYXhfeE1pc3NpbmcgbWF4X3ggcHJvcGVydHkAKe8RABYAAABtYXhfeU1pc3NpbmcgbWF4X3kgcHJvcGVydHkATe8RABYAAABtYXhfek1pc3NpbmcgbWF4X3ogcHJvcGVydHkAce8RABYAAABtaW5fc2NhbGVfeE1pc3NpbmcgbWluX3NjYWxlX3ggcHJvcGVydHkAm+8RABwAAABtaW5fc2NhbGVfeU1pc3NpbmcgbWluX3NjYWxlX3kgcHJvcGVydHkAy+8RABwAAABtaW5fc2NhbGVfek1pc3NpbmcgbWluX3NjYWxlX3ogcHJvcGVydHkA++8RABwAAABtYXhfc2NhbGVfeE1pc3NpbmcgbWF4X3NjYWxlX3ggcHJvcGVydHkAK/ARABwAAABtYXhfc2NhbGVfeU1pc3NpbmcgbWF4X3NjYWxlX3kgcHJvcGVydHkAW/ARABwAAABtYXhfc2NhbGVfek1pc3NpbmcgbWF4X3NjYWxlX3ogcHJvcGVydHkAi/ARABwAAABtaW5fcm1pbl9nbWluX2JtYXhfcm1heF9nbWF4X2JwYWNrZWRfcG9zaXRpb25NaXNzaW5nIHBhY2tlZF9wb3NpdGlvbiBwcm9wZXJ0eQAAAN3wEQAgAAAAcGFja2VkX3JvdGF0aW9uTWlzc2luZyBwYWNrZWRfcm90YXRpb24gcHJvcGVydHkAF/ERACAAAABwYWNrZWRfc2NhbGVNaXNzaW5nIHBhY2tlZF9zY2FsZSBwcm9wZXJ0eQAAAEzxEQAdAAAAcGFja2VkX2NvbG9yTWlzc2luZyBwYWNrZWRfY29sb3IgcHJvcGVydHkAAACA8REAHQAAAP0AEAAUAAAAPgIAADAAAAD9ABAAFAAAAEICAAAfAAAAU0ggZWxlbWVudCBjb3VudCAoKSBtdXN0IG1hdGNoIHZlcnRleCBjb3VudCAoAAAAyPERABIAAADa8REAGwAAAF4HEgABAAAATm90IGVub3VnaCBjaHVuayByZWNvcmRzOiBoYXZlICwgbmVlZCBhdCBsZWFzdCAAEPIRAB8AAAAv8hEAEAAAAP0AEAAUAAAAFgMAAD0AAAD9ABAAFAAAABYDAAAhAAAA/QAQABQAAAAQAwAAPQAAAP0AEAAUAAAAEAMAACEAAAD9ABAAFAAAAAoDAAA9AAAA/QAQABQAAAAKAwAAIQAAAP0AEAAUAAAABAMAAB8AAAD9ABAAFAAAAD8BAAAZAAAAY2hhcnVjaGFyc2hvcnR1c2hvcnRpbnRmbG9hdGRvdWJsZVVuc3VwcG9ydGVkIFBMWSBwcm9wZXJ0eSB0eXBlOiAAAADy8hEAHwAAAFYhEAAUAAAA4QMAABYAAABWIRAAFAAAAOUDAAAUAAAAViEQABQAAADlAwAAMAAAAFYhEAAUAAAAyQMAABYAAABWIRAAFAAAAM0DAAAUAAAAViEQABQAAADNAwAAMAAAAFYhEAAUAAAA6gQAABYAAABWIRAAFAAAAO4EAAAtAAAAViEQABQAAADuBAAAOgAAAFYhEAAUAAAA7gQAABQAAABWIRAAFAAAAA8FAAAWAAAAViEQABQAAAATBQAALQAAAFYhEAAUAAAAEwUAADoAAABWIRAAFAAAABMFAABLAAAAViEQABQAAAATBQAAXAAAAFYhEAAUAAAAEwUAABQAAABWIRAAFAAAAKgEAAAWAAAAViEQABQAAACsBAAAJwAAAFYhEAAUAAAArAQAABQAAABWIRAAFAAAAMAEAAAWAAAAViEQABQAAADEBAAALQAAAFYhEAAUAAAAxAQAADoAAABWIRAAFAAAAMQEAAAUAAAAViEQABQAAABvBAAAFgAAAFYhEAAUAAAAdAQAAC4AAABWIRAAFAAAAHYEAAAUAAAAViEQABQAAACNBAAAFgAAAFYhEAAUAAAAkgQAAC4AAABWIRAAFAAAAJQEAAAUAAAAViEQABQAAAD2BAAAFgAAAFYhEAAUAAAA+gQAAC0AAABWIRAAFAAAAPoEAAA6AAAAViEQABQAAAD6BAAAFAAAAFYhEAAUAAAAFQQAABYAAABWIRAAFAAAABoEAAAUAAAAViEQABQAAAAaBAAAPwAAAFYhEAAUAAAA+wMAABYAAABWIRAAFAAAAAAEAAAUAAAAViEQABQAAAAABAAAPwAAAFYhEAAUAAAA1QQAABYAAABWIRAAFAAAANgEAAA5AAAAViEQABQAAADYBAAARgAAAFYhEAAUAAAA2AQAAFcAAABWIRAAFAAAACcFAAAWAAAAViEQABQAAAArBQAALQAAAFYhEAAUAAAAKwUAADoAAABWIRAAFAAAACsFAABLAAAAViEQABQAAAArBQAAXAAAAFYhEAAUAAAAKwUAABQAAABWIRAAFAAAADsEAAAWAAAAViEQABQAAAA/BAAAGgAAAFYhEAAUAAAAPwQAABQAAABWIRAAFAAAAFQEAAAWAAAAViEQABQAAABYBAAAGwAAAFYhEAAUAAAAWAQAABQAAABJbnZhbGlkIFNIIGRlZ3JlZTogAIz2EQATAAAASW52YWxpZCBnemlwIGhlYWRlcgCo9hEAEwAAAGgHEAAVAAAATwEAABwAAABoBxAAFQAAAE8BAAA1AAAAaAcQABUAAABQAQAAHAAAAGgHEAAVAAAAUAEAADkAAABoBxAAFQAAAFEBAAAcAAAAaAcQABUAAABRAQAAOQAAAGgHEAAVAAAAWQEAAAkAAABoBxAAFQAAAFoBAAAJAAAAaAcQABUAAABbAQAACQAAAGgHEAAVAAAAiAEAACEAAABoBxAAFQAAAIkBAAAhAAAAaAcQABUAAACKAQAAIQAAAGgHEAAVAAAAjAEAAB8AAABoBxAAFQAAAJIBAAAJAAAAaAcQABUAAACTAQAACQAAAGgHEAAVAAAAlAEAAAkAAABoBxAAFQAAAJUBAAAJAAAAAQAAAAAAAAABAAAAAAAAAE1pc3NpbmcgZmlsZSAgaW4gU09HUyB6aXAAAADk9xEADQAAAPH3EQAMAAAAaAcQABUAAAC4AQAAIgAAAGgHEAAVAAAAuAEAAAkAAABoBxAAFQAAALkBAAAmAAAAaAcQABUAAAC5AQAACQAAAGgHEAAVAAAAugEAACYAAABoBxAAFQAAALoBAAAJAAAAaAcQABUAAAC7AQAAJQAAAGgHEAAVAAAAoQEAACoAAABoBxAAFQAAAKEBAAAhAAAAaAcQABUAAAChAQAACQAAAGgHEAAVAAAAogEAAC4AAABoBxAAFQAAAKIBAAAlAAAAaAcQABUAAACiAQAACQAAAGgHEAAVAAAAowEAAC4AAABoBxAAFQAAAKMBAAAlAAAAaAcQABUAAACjAQAACQAAAGgHEAAVAAAApAEAACsAAABoBxAAFQAAAPwBAAAgAAAAaAcQABUAAAD8AQAAOwAAAGgHEAAVAAAADgIAAEQAAABoBxAAFQAAAA4CAAAVAAAAaAcQABUAAAAJAgAARAAAAGgHEAAVAAAACQIAABUAAABoBxAAFQAAAAQCAABDAAAAaAcQABUAAAAEAgAAFQAAAGgHEAAVAAAA0QEAACAAAABoBxAAFQAAANEBAAA7AAAAaAcQABUAAADjAQAARAAAAGgHEAAVAAAA4wEAADUAAABoBxAAFQAAAOMBAAAVAAAAaAcQABUAAADeAQAARAAAAGgHEAAVAAAA3gEAADUAAABoBxAAFQAAAN4BAAAVAAAAaAcQABUAAADZAQAAQwAAAGgHEAAVAAAA2QEAADQAAABoBxAAFQAAANkBAAAVAAAAaAcQABUAAAB7AQAAJAAAAGgHEAAVAAAAewEAAAkAAABoBxAAFQAAAHwBAAAoAAAAaAcQABUAAAB8AQAACQAAAGgHEAAVAAAAfQEAACgAAABoBxAAFQAAAH0BAAAJAAAAaAcQABUAAABmAQAAKAAAAGgHEAAVAAAAZgEAAB8AAABoBxAAFQAAAGYBAAAJAAAAaAcQABUAAABnAQAALAAAAGgHEAAVAAAAZwEAACMAAABoBxAAFQAAAGcBAAAJAAAAaAcQABUAAABoAQAALAAAAGgHEAAVAAAAaAEAACMAAABoBxAAFQAAAGgBAAAJAAAAtwQQABcAAACgAAAADgAAALcEEAAXAAAAkAAAABQAAAC3BBAAFwAAAJcAAAATAAAAtwQQABcAAACYAAAAGQAAAERlY29tcHJlc3Npb24gZmFpbGVkOiAAAID7EQAWAAAAc3B6c3BsYXRrc3BsYXRwY3NvZ3N6aXByYWRJbnZhbGlkIGZpbGUgdHlwZTogAAAAuvsRABMAAABzb2d6aXAAAI0mEAAYAAAA9gAAABwAAACNJhAAGAAAAPYAAAAqAAAAbV3L1ixQ62N4QaZXcRuLufUrL4lkWmc6/u1yMy/njHUBAAAAAAAAAAIAAAAAAAAAAQAAAAEAAAAAAAAAIAAA6CAgICAgICAgICAgICBhdCA6AAAAUPwRAAEAAAAKOiAAAQAAAAAAAABd/BEAAgAAAAIAQfr4xwALAQQAQYT5xwALMSAAAOggLSAAAQAAAAAAAACI/BEAAwAAACAgICAgIDx1bmtub3duPgACAAAAAAAAAAIAQcD5xwALxRwgAIDg77+9AKMdEAA0AAAAZwEAADAAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt2PwRACgAAAAkAAAAAAAAAAIAAAAA/REAYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGRpZCBub3QAABj9EQBWAAAAiR0QABkAAACIAgAAEQAAAD8CAAAMAAAABAAAAEACAABBAgAAQgIAAE9zAAAAAAAABAAAAAQAAABDAgAAY29kZQAAAAABAAAAAQAAAEQCAABraW5khQEAAAwAAAAEAAAARQIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAABGAgAAAAAAAAQAAAAEAAAARwIAAEN1c3RvbWVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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", self.location.href);\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n const rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk\n };\n async function onMessage(event) {\n const {\n id,\n name,\n args\n } = event.data;\n try {\n const handler = rpcHandlers[name];\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n const sendStatus = (data) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) }\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n }\n function sortSplats16({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n function sortSplats32({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n async function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n }) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576;\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length))\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : void 0,\n credentials: withCredentials ? "include" : "same-origin"\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch "${url}": ${response.status} ${response.statusText}`\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get("Content-Length") || "0"\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk2 = await readNextChunk;\n if (nextChunk2.length === 0) {\n break;\n }\n decoder.push(nextChunk2);\n loaded += nextChunk2.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error("No url or fileBytes provided");\n }\n const decoded = decoder.finish();\n return decoded;\n }\n function toPackedResult(packed) {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n },\n splatEncoding: packed.splatEncoding\n };\n }\n async function loadPackedSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toPackedResult(decoded2);\n if (result2.splatEncoding.lodOpacity) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n const result2 = toPackedResult(\n decoded.to_packedsplats_lod()\n );\n return { lodSplats: result2 };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toPackedResult(decoded.to_packedsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked);\n return result;\n }\n function toExtResult(packed) {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n }\n };\n }\n async function loadExtSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toExtResult(decoded2);\n if (result2.extra.lodTree) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod())\n };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toExtResult(decoded.to_extsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked);\n return result;\n }\n async function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n filter,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n filter,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n function newLodTree({\n capacity\n }) {\n const { lodId } = new_lod_tree(capacity);\n return { lodId };\n }\n function newSharedLodTree({\n lodId\n }) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId);\n return { lodId: newLodId };\n }\n function initLodTree({\n numSplats,\n lodTree\n }) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree);\n return { lodId, chunkToPage };\n }\n function disposeLodTree({ lodId }) {\n dispose_lod_tree(lodId);\n }\n function updateLodTrees({\n ranges\n }) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData: lodTreeData2 }) => lodTreeData2);\n update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData\n );\n }\n function traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances\n }) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId)\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 4294967295)\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error("Incorrect array size for viewToObjectCols");\n }\n return instance.viewToObjectCols;\n })\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale)\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate)\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0)\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov)\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate)\n );\n const result = traverse_lod_trees(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs\n );\n const { instanceIndices, chunks, pixelLimit } = result;\n const indices = keyInstances.reduce(\n (indices2, [key, _instance], index) => {\n indices2[key] = instanceIndices[index];\n return indices2;\n },\n {}\n );\n return {\n keyIndices: indices,\n chunks,\n pixelLimit\n };\n }\n function getLodTreeLevel({\n lodId,\n level\n }) {\n return get_lod_tree_level(lodId, level);\n }\n let nextChunkWaiter = (_chunk) => {\n };\n async function nextChunk({ chunk }) {\n nextChunkWaiter(chunk);\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n async function initialize() {\n const pending = [];\n const bufferMessage = (event) => {\n pending.push(event);\n };\n self.addEventListener("message", bufferMessage);\n await __wbg_init();\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=worker-On-THXgb.js.map\n'; -const blob = typeof self !== "undefined" && self.Blob && new Blob([jsContent], { type: "text/javascript;charset=utf-8" }); -function WorkerWrapper(options) { - let objURL; - try { - objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob); - if (!objURL) throw ""; - const worker = new Worker(objURL, { - name: options == null ? void 0 : options.name - }); - worker.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(objURL); - }); - return worker; - } catch (e) { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent), - { - name: options == null ? void 0 : options.name - } - ); - } finally { - objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); +class DynoIvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec2", value, update }); } } -const _SplatWorker = class _SplatWorker { - constructor() { - this.queue = null; - this.messages = {}; - this.worker = new WorkerWrapper(); - this.worker.onmessage = (event) => this.onMessage(event); +class DynoVec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec2", value, update }); } - onMessage(event) { - var _a2; - const { id, result, error, status } = event.data; - const promise = this.messages[id]; - if (promise) { - if (error !== void 0) { - delete this.messages[id]; - promise.reject(error); - } else if (status !== void 0) { - (_a2 = promise.onStatus) == null ? void 0 : _a2.call(promise, status); - } else { - delete this.messages[id]; - promise.resolve(result); - } - } - } - tryExclusive(callback) { - return this.queue == null ? this.exclusive(callback) : null; - } - async exclusive(callback) { - const queue = this.queue; - if (queue != null) { - await new Promise((resolve) => { - queue.push(() => resolve(void 0)); - }); - } else { - this.queue = []; - } - try { - return await callback(this); - } finally { - if (this.queue != null) { - if (this.queue.length === 0) { - this.queue = null; - } else { - const waiter = this.queue.shift(); - waiter(); - } - } - } - } - async call(name, args, options = {}) { - const id = ++_SplatWorker.currentId; - const promise = new Promise((resolve, reject) => { - this.messages[id] = { resolve, reject, onStatus: options.onStatus }; - }); - this.worker.postMessage( - { id, name, args }, - { transfer: getTransferable(args) } - ); - return await promise; +} +class DynoBvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec3", value, update }); } - dispose() { - this.worker.terminate(); - const messages = Object.values(this.messages); - this.messages = {}; - for (const message of messages) { - message.reject(new Error("Worker terminate")); - } +} +class DynoUvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec3", value, update }); } -}; -_SplatWorker.currentId = 0; -let SplatWorker = _SplatWorker; -class NewSplatWorkerPool { - constructor(maxWorkers2 = 4) { - this.numWorkers = 0; - this.freelist = []; - this.queue = []; - this.maxWorkers = maxWorkers2; +} +class DynoIvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec3", value, update }); } - async withWorker(callback) { - const worker = await this.allocWorker(); - try { - return await callback(worker); - } finally { - this.freeWorker(worker); - } +} +class DynoVec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec3", value, update }); } - async allocWorker() { - const worker = this.freelist.pop(); - if (worker) { - return worker; - } - if (this.numWorkers < this.maxWorkers) { - const worker2 = new SplatWorker(); - this.numWorkers += 1; - return worker2; - } - return new Promise((resolve) => { - this.queue.push(resolve); - }); +} +class DynoBvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec4", value, update }); } - freeWorker(worker) { - if (this.numWorkers > this.maxWorkers) { - this.numWorkers -= 1; - return; - } - const waiter = this.queue.shift(); - if (waiter) { - waiter(worker); - return; - } - this.freelist.push(worker); +} +class DynoUvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec4", value, update }); } } -const workerPool = new NewSplatWorkerPool(); -const Gsplat = { type: "Gsplat" }; -const CovSplat = { type: "CovSplat" }; -const TPackedSplats = { type: "PackedSplats" }; -const TExtSplats = { type: "ExtSplats" }; -const TCovSplats = { type: "CovSplats" }; -const numPackedSplats = (packedSplats) => new NumPackedSplats({ packedSplats }); -const readPackedSplat = (packedSplats, index) => new ReadPackedSplat({ packedSplats, index }); -const readPackedSplatRange = (packedSplats, index, base, count) => new ReadPackedSplatRange({ packedSplats, index, base, count }); -const numExtSplats = (extSplats) => new NumExtSplats({ extSplats }); -const readExtSplat = (extSplats, index) => new ReadExtSplat({ extSplats, index }); -const numCovSplats = (covsplats) => new NumCovSplats({ covsplats }); -const readCovSplat = (covSplats, index) => new ReadCovSplat({ covSplats, index }); -const gsplatToCovSplat = (gsplat) => new GsplatToCovSplat({ gsplat }); -const splitGsplat = (gsplat) => new SplitGsplat({ gsplat }); -const combineGsplat = ({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b -}) => { - return new CombineGsplat({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }); -}; -const gsplatNormal = (gsplat) => new GsplatNormal({ gsplat }); -const transformGsplat = (gsplat, { - scale, - rotate, - translate, - recolor -}) => { - return new TransformGsplat({ gsplat, scale, rotate, translate, recolor }); -}; -const splatTexCoord = (index) => new SplatTexCoord({ index }); -const pagedSplatTexCoord = (index) => new PagedSplatTexCoord({ index }); -const defineGsplat = unindent(` - struct Gsplat { - vec3 center; - uint flags; - vec3 scales; - int index; - vec4 quaternion; - vec4 rgba; - }; - const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; - - bool isGsplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; +class DynoIvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec4", value, update }); } -`); -const defineCovSplat = unindent(` - struct CovSplat { - vec3 center; - uint flags; - vec4 rgba; - vec3 xxyyzz; - int index; - vec3 xyxzyz; - }; - - bool isCovSplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; +} +class DynoVec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec4", value, update }); } -`); -const definePackedSplats = unindent(` - struct PackedSplats { - usampler2DArray textureArray; - int numSplats; - vec4 rgbMinMaxLnScaleMinMax; - bool lodOpacity; - }; -`); -class NumPackedSplats extends UnaryOp { +} +class DynoMat2 extends DynoUniform { constructor({ - packedSplats + key, + value, + update }) { - super({ a: packedSplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; + super({ key, type: "mat2", value, update }); } } -const defineReadPackedArray = unindent(` - bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { - if ((index >= 0) && (index < numSplats)) { - uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); - unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); - return true; - } else { - return false; - } - } -`); -class ReadPackedSplat extends Dyno { +class DynoMat2x2 extends DynoUniform { constructor({ - packedSplats, - index + key, + value, + update }) { - super({ - inTypes: { packedSplats: TPackedSplats, index: "int" }, - outTypes: { gsplat: Gsplat }, - inputs: { packedSplats, index }, - globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return []; - } - const { packedSplats: packedSplats2, index: index2 } = inputs; - let statements; - if (packedSplats2 && index2) { - statements = unindentLines(` - ${gsplat}.flags = 0u; - if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { - if (${packedSplats2}.lodOpacity) { - ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; - } - bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); - ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `); - } else { - statements = [`${gsplat}.flags = 0u;`]; - } - statements.push(`${gsplat}.index = ${index2 ?? "0"};`); - return statements; - } - }); - } - dynoOut() { - return new DynoOutput(this, "gsplat"); + super({ key, type: "mat2x2", value, update }); } } -class ReadPackedSplatRange extends Dyno { +class DynoMat2x3 extends DynoUniform { constructor({ - packedSplats, - index, - base, - count + key, + value, + update }) { - super({ - inTypes: { - packedSplats: TPackedSplats, - index: "int", - base: "int", - count: "int" - }, - outTypes: { gsplat: Gsplat }, - inputs: { packedSplats, index, base, count }, - globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return []; - } - const { packedSplats: packedSplats2, index: index2, base: base2, count: count2 } = inputs; - let statements; - if (packedSplats2 && index2 && base2 && count2) { - statements = unindentLines(` - ${gsplat}.flags = 0u; - if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { - if (${packedSplats2}.lodOpacity) { - ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; - } - bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); - ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `); - } else { - statements = [`${gsplat}.flags = 0u;`]; - } - statements.push(`${gsplat}.index = ${index2 ?? "0"};`); - return statements; - } - }); + super({ key, type: "mat2x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoMat2x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat2x4", value, update }); } } -const defineExtSplats = unindent(` - struct ExtSplats { - usampler2DArray textureArray1; - usampler2DArray textureArray2; - int numSplats; - }; -`); -class NumExtSplats extends UnaryOp { - constructor({ extSplats }) { - super({ a: extSplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; +class DynoMat3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3", value, update }); } } -const defineReadExtArrays = unindent(` - void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { - gsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); - gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } +class DynoMat3x2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3x2", value, update }); } -`); -class ReadExtSplat extends Dyno { +} +class DynoMat3x3 extends DynoUniform { constructor({ - extSplats, - index + key, + value, + update }) { - super({ - inTypes: { extSplats: TExtSplats, index: "int" }, - outTypes: { gsplat: Gsplat }, - inputs: { extSplats, index }, - globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return [`${gsplat}.flags = 0u;`]; - } - const { extSplats: extSplats2, index: index2 } = inputs; - if (extSplats2 && index2) { - return unindentLines(` - readExtArrays(${extSplats2}.textureArray1, ${extSplats2}.textureArray2, ${extSplats2}.numSplats, ${index2}, ${gsplat}); - `); - } - return [`${gsplat}.flags = 0u;`]; - } - }); + super({ key, type: "mat3x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoMat3x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3x4", value, update }); } } -class NumCovSplats extends UnaryOp { - constructor({ covsplats }) { - super({ a: covsplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; +class DynoMat4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4", value, update }); } } -const defineReadCovArrays = unindent(` - void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { - covsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); - covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } +class DynoMat4x2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4x2", value, update }); } -`); -class ReadCovSplat extends Dyno { +} +class DynoMat4x3 extends DynoUniform { constructor({ - covSplats, - index + key, + value, + update }) { - super({ - inTypes: { covSplats: TCovSplats, index: "int" }, - outTypes: { covsplat: CovSplat }, - inputs: { covSplats, index }, - globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays], - statements: ({ inputs, outputs }) => { - const { covsplat } = outputs; - if (!covsplat) { - return [`${covsplat}.flags = 0u;`]; - } - const { covSplats: covSplats2, index: index2 } = inputs; - if (covSplats2 && index2) { - return unindentLines(` - readCovArrays(${covSplats2}.textureArray, ${covSplats2}.numSplats, ${index2}, ${covsplat}); - `); - } - return [`${covsplat}.flags = 0u;`]; - } - }); + super({ key, type: "mat4x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "covsplat"); +} +class DynoMat4x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4x4", value, update }); } } -class GsplatToCovSplat extends Dyno { - constructor({ gsplat }) { - super({ - inTypes: { gsplat: Gsplat }, - outTypes: { covsplat: CovSplat }, - inputs: { gsplat }, - globals: () => [defineGsplat, defineCovSplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2 } = inputs; - const { covsplat } = outputs; - if (!gsplat2) { - return [`${covsplat}.flags = 0u;`]; - } - return unindentLines(` - ${covsplat}.flags = 0u; - if (isGsplatActive(${gsplat2}.flags)) { - ${covsplat}.flags = ${gsplat2}.flags; - ${covsplat}.index = ${gsplat2}.index; - ${covsplat}.rgba = ${gsplat2}.rgba; - ${covsplat}.center = ${gsplat2}.center; - mat3 m = scaleQuaternionToMatrix(${gsplat2}.scales, ${gsplat2}.quaternion); - m = m * transpose(m); - ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); - ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); - } - `); - } - }); - } - dynoOut() { - return new DynoOutput(this, "covsplat"); +class DynoUsampler2D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usampler2D", value, update }); } } -class SplitGsplat extends Dyno { - constructor({ gsplat }) { - super({ - inTypes: { gsplat: Gsplat }, - outTypes: { - flags: "uint", - active: "bool", - index: "int", - center: "vec3", - scales: "vec3", - quaternion: "vec4", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - inputs: { gsplat }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2 } = inputs; - const { - flags, - active, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - } = outputs; - return [ - !flags ? null : `${flags} = ${gsplat2 ? `${gsplat2}.flags` : "0u"};`, - !active ? null : `${active} = isGsplatActive(${gsplat2 ? `${gsplat2}.flags` : "0u"});`, - !index ? null : `${index} = ${gsplat2 ? `${gsplat2}.index` : "0"};`, - !center ? null : `${center} = ${gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, - !scales ? null : `${scales} = ${gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)"};`, - !quaternion ? null : `${quaternion} = ${gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};`, - !rgba ? null : `${rgba} = ${gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, - !rgb ? null : `${rgb} = ${gsplat2 ? `${gsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, - !opacity ? null : `${opacity} = ${gsplat2 ? `${gsplat2}.rgba.a` : "0.0"};`, - !x ? null : `${x} = ${gsplat2 ? `${gsplat2}.center.x` : "0.0"};`, - !y ? null : `${y} = ${gsplat2 ? `${gsplat2}.center.y` : "0.0"};`, - !z ? null : `${z} = ${gsplat2 ? `${gsplat2}.center.z` : "0.0"};`, - !r ? null : `${r} = ${gsplat2 ? `${gsplat2}.rgba.r` : "0.0"};`, - !g ? null : `${g} = ${gsplat2 ? `${gsplat2}.rgba.g` : "0.0"};`, - !b ? null : `${b} = ${gsplat2 ? `${gsplat2}.rgba.b` : "0.0"};` - ].filter(Boolean); - } - }); +class DynoIsampler2D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler2D", value, update }); } } -class CombineGsplat extends Dyno { +class DynoSampler2D extends DynoUniform { constructor({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b + key, + value, + update }) { - super({ - inTypes: { - gsplat: Gsplat, - flags: "uint", - index: "int", - center: "vec3", - scales: "vec3", - quaternion: "vec4", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: outGsplat } = outputs; - if (!outGsplat) { - return []; - } - const { - gsplat: gsplat2, - flags: flags2, - index: index2, - center: center2, - scales: scales2, - quaternion: quaternion2, - rgba: rgba2, - rgb: rgb2, - opacity: opacity2, - x: x2, - y: y2, - z: z2, - r: r2, - g: g2, - b: b22 - } = inputs; - return [ - `${outGsplat}.flags = ${flags2 ?? (gsplat2 ? `${gsplat2}.flags` : "0u")};`, - `${outGsplat}.index = ${index2 ?? (gsplat2 ? `${gsplat2}.index` : "0")};`, - `${outGsplat}.center = ${center2 ?? (gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${outGsplat}.scales = ${scales2 ?? (gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)")};`, - `${outGsplat}.quaternion = ${quaternion2 ?? (gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, - `${outGsplat}.rgba = ${rgba2 ?? (gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - !rgb2 ? null : `${outGsplat}.rgba.rgb = ${rgb2};`, - !opacity2 ? null : `${outGsplat}.rgba.a = ${opacity2};`, - !x2 ? null : `${outGsplat}.center.x = ${x2};`, - !y2 ? null : `${outGsplat}.center.y = ${y2};`, - !z2 ? null : `${outGsplat}.center.z = ${z2};`, - !r2 ? null : `${outGsplat}.rgba.r = ${r2};`, - !g2 ? null : `${outGsplat}.rgba.g = ${g2};`, - !b22 ? null : `${outGsplat}.rgba.b = ${b22};` - ].filter(Boolean); - } - }); + super({ key, type: "sampler2D", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoUsampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usampler2DArray", value, update }); } } -const defineGsplatNormal = unindent(` - vec3 gsplatNormal(vec3 scales, vec4 quaternion) { - float minScale = min(scales.x, min(scales.y, scales.z)); - vec3 normal; - if (scales.z == minScale) { - normal = vec3(0.0, 0.0, 1.0); - } else if (scales.y == minScale) { - normal = vec3(0.0, 1.0, 0.0); - } else { - normal = vec3(1.0, 0.0, 0.0); - } - return quatVec(quaternion, normal); +class DynoIsampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler2DArray", value, update }); } -`); -class GsplatNormal extends UnaryOp { - constructor({ gsplat }) { - super({ a: gsplat, outKey: "normal", outTypeFunc: () => "vec3" }); - this.globals = () => [defineGsplat, defineGsplatNormal]; - this.statements = ({ inputs, outputs }) => [ - `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);` - ]; +} +class DynoSampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "sampler2DArray", value, update }); } } -class TransformGsplat extends Dyno { +class DynoUsampler3D extends DynoUniform { constructor({ - gsplat, - scale, - rotate, - translate, - recolor + key, + value, + update }) { - super({ - inTypes: { - gsplat: Gsplat, - scale: "float", - rotate: "vec4", - translate: "vec3", - recolor: "vec4" - }, - outTypes: { gsplat: Gsplat }, - inputs: { gsplat, scale, rotate, translate, recolor }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs, compile }) => { - const { gsplat: gsplat2 } = outputs; - if (!gsplat2 || !inputs.gsplat) { - return []; - } - const { scale: scale2, rotate: rotate2, translate: translate2, recolor: recolor2 } = inputs; - const indent = compile.indent; - const statements = [ - `${gsplat2} = ${inputs.gsplat};`, - `if (isGsplatActive(${gsplat2}.flags)) {`, - scale2 ? `${indent}${gsplat2}.center *= ${scale2};` : null, - rotate2 ? `${indent}${gsplat2}.center = quatVec(${rotate2}, ${gsplat2}.center);` : null, - translate2 ? `${indent}${gsplat2}.center += ${translate2};` : null, - scale2 ? `${indent}${gsplat2}.scales *= ${scale2};` : null, - rotate2 ? `${indent}${gsplat2}.quaternion = quatQuat(${rotate2}, ${gsplat2}.quaternion);` : null, - recolor2 ? `${indent}${gsplat2}.rgba *= ${recolor2};` : null, - "}" - ].filter(Boolean); - return statements; - } - }); - } - dynoOut() { - return new DynoOutput(this, "gsplat"); + super({ key, type: "usampler3D", value, update }); } } -const splitCovSplat = (covsplat) => new SplitCovSplat({ covsplat }); -const combineCovSplat = ({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b -}) => { - return new CombineCovSplat({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }); -}; -class SplitCovSplat extends Dyno { - constructor({ covsplat }) { - super({ - inTypes: { covsplat: CovSplat }, - outTypes: { - flags: "uint", - active: "bool", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - inputs: { covsplat }, - globals: () => [defineCovSplat], - statements: ({ inputs, outputs }) => { - const { covsplat: covsplat2 } = inputs; - const { - flags, - active, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - } = outputs; - return [ - !flags ? null : `${flags} = ${covsplat2 ? `${covsplat2}.flags` : "0u"};`, - !active ? null : `${active} = isCovSplatActive(${covsplat2 ? `${covsplat2}.flags` : "0u"});`, - !index ? null : `${index} = ${covsplat2 ? `${covsplat2}.index` : "0"};`, - !center ? null : `${center} = ${covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, - !rgba ? null : `${rgba} = ${covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, - !rgb ? null : `${rgb} = ${covsplat2 ? `${covsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, - !opacity ? null : `${opacity} = ${covsplat2 ? `${covsplat2}.rgba.a` : "0.0"};`, - !x ? null : `${x} = ${covsplat2 ? `${covsplat2}.center.x` : "0.0"};`, - !y ? null : `${y} = ${covsplat2 ? `${covsplat2}.center.y` : "0.0"};`, - !z ? null : `${z} = ${covsplat2 ? `${covsplat2}.center.z` : "0.0"};`, - !r ? null : `${r} = ${covsplat2 ? `${covsplat2}.rgba.r` : "0.0"};`, - !g ? null : `${g} = ${covsplat2 ? `${covsplat2}.rgba.g` : "0.0"};`, - !b ? null : `${b} = ${covsplat2 ? `${covsplat2}.rgba.b` : "0.0"};` - ].filter(Boolean); - } - }); +class DynoIsampler3D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler3D", value, update }); } } -class CombineCovSplat extends Dyno { +class DynoSampler3D extends DynoUniform { constructor({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b + key, + value, + update }) { - super({ - inTypes: { - covsplat: CovSplat, - flags: "uint", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - outTypes: { covsplat: CovSplat }, - inputs: { - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }, - globals: () => [defineCovSplat], - statements: ({ inputs, outputs }) => { - const { covsplat: outCovSplat } = outputs; - if (!outCovSplat) { - return []; - } - const { - covsplat: covsplat2, - flags: flags2, - index: index2, - center: center2, - rgba: rgba2, - rgb: rgb2, - opacity: opacity2, - x: x2, - y: y2, - z: z2, - r: r2, - g: g2, - b: b22 - } = inputs; - return [ - `${outCovSplat}.flags = ${flags2 ?? (covsplat2 ? `${covsplat2}.flags` : "0u")};`, - `${outCovSplat}.index = ${index2 ?? (covsplat2 ? `${covsplat2}.index` : "0")};`, - `${outCovSplat}.center = ${center2 ?? (covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${outCovSplat}.rgba = ${rgba2 ?? (covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - !rgb2 ? null : `${outCovSplat}.rgba.rgb = ${rgb2};`, - !opacity2 ? null : `${outCovSplat}.rgba.a = ${opacity2};`, - !x2 ? null : `${outCovSplat}.center.x = ${x2};`, - !y2 ? null : `${outCovSplat}.center.y = ${y2};`, - !z2 ? null : `${outCovSplat}.center.z = ${z2};`, - !r2 ? null : `${outCovSplat}.rgba.r = ${r2};`, - !g2 ? null : `${outCovSplat}.rgba.g = ${g2};`, - !b22 ? null : `${outCovSplat}.rgba.b = ${b22};`, - `${outCovSplat}.xxyyzz = ${covsplat2 ? `${covsplat2}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, - `${outCovSplat}.xyxzyz = ${covsplat2 ? `${covsplat2}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` - ].filter(Boolean); - } - }); - } - dynoOut() { - return new DynoOutput(this, "covsplat"); + super({ key, type: "sampler3D", value, update }); } } -class SplatTexCoord extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => { - const { index: index2 } = inputs; - const { coord } = outputs; - if (!index2 || !coord) { - return []; - } - return [`${coord} = splatTexCoord(${index2});`]; - } - }); +class DynoUsamplerCube extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usamplerCube", value, update }); } - dynoOut() { - return new DynoOutput(this, "coord"); +} +class DynoIsamplerCube extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isamplerCube", value, update }); } } -class PagedSplatTexCoord extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => { - const { index: index2 } = inputs; - const { coord } = outputs; - if (!index2 || !coord) { - return []; - } - return [`${coord} = pagedSplatTexCoord(${index2});`]; - } - }); - } - dynoOut() { - return new DynoOutput(this, "coord"); - } -} -const outputPackedSplat = (gsplat, rgbMinMaxLnScaleMinMax) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax }); -const outputCovSplat = (covsplat, rgbMinMaxLnScaleMinMax) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax }); -const outputExtendedSplat = (gsplat) => new OutputExtendedSplat({ gsplat }); -const outputExtCovSplat = (covsplat) => new OutputExtCovSplat({ covsplat }); -const outputSplatDepth = (gsplat, viewCenter, viewDir, sortRadial) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial }); -const outputCovSplatDepth = (covsplat, viewCenter, viewDir, sortRadial) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial }); -const outputRgba8 = (rgba8) => new OutputRgba8({ rgba8 }); -class OutputPackedSplat extends Dyno { +class DynoSamplerCube extends DynoUniform { constructor({ - gsplat, - rgbMinMaxLnScaleMinMax + key, + value, + update }) { - super({ - inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: "vec4" }, - inputs: { gsplat, rgbMinMaxLnScaleMinMax }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; - if (gsplat2 && rgbMinMaxLnScaleMinMax2) { - return unindentLines(` - if (isGsplatActive(${gsplat2}.flags)) { - target = packSplatEncoding(${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba, ${rgbMinMaxLnScaleMinMax2}); - } else { - target = uvec4(0u, 0u, 0u, 0u); - } - `); - } - return ["target = uvec4(0u, 0u, 0u, 0u);"]; - } - }); + super({ key, type: "samplerCube", value, update }); } } -class OutputCovSplat extends Dyno { +class DynoSampler2DShadow extends DynoUniform { constructor({ - covsplat, - rgbMinMaxLnScaleMinMax + key, + value, + update }) { - super({ - inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: "vec4" }, - inputs: { covsplat, rgbMinMaxLnScaleMinMax }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; - if (covsplat2 && rgbMinMaxLnScaleMinMax2) { - return unindentLines(` - if (isCovSplatActive(${covsplat2}.flags)) { - target = packSplatCovEncoding(${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz, ${rgbMinMaxLnScaleMinMax2}); - } else { - target = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);"]; - } - }); + super({ key, type: "sampler2DShadow", value, update }); } } -class OutputExtendedSplat extends Dyno { +class DynoSampler2DArrayShadow extends DynoUniform { constructor({ - gsplat + key, + value, + update }) { - super({ - inTypes: { gsplat: Gsplat }, - inputs: { gsplat }, - globals: () => [defineGsplat], - statements: ({ inputs }) => { - const { gsplat: gsplat2 } = inputs; - if (gsplat2) { - return unindentLines(` - if (isGsplatActive(${gsplat2}.flags)) { - packSplatExt(target, target2, ${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba); - } else { - target = uvec4(0u); - target2 = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; - } - }); + super({ key, type: "sampler2DArrayShadow", value, update }); } } -class OutputExtCovSplat extends Dyno { +class DynoSamplerCubeShadow extends DynoUniform { constructor({ - covsplat + key, + value, + update }) { - super({ - inTypes: { covsplat: CovSplat }, - inputs: { covsplat }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2 } = inputs; - if (covsplat2) { - return unindentLines(` - if (isCovSplatActive(${covsplat2}.flags)) { - packSplatExtCov(target, target2, ${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz); - } else { - target = uvec4(0u); - target2 = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; - } - }); + super({ key, type: "samplerCubeShadow", value, update }); } } -class OutputSplatDepth extends Dyno { - constructor({ - gsplat, - viewCenter, - viewDir, - sortRadial - }) { - super({ - inTypes: { - gsplat: Gsplat, - viewCenter: "vec3", - viewDir: "vec3", - sortRadial: "bool" - }, - inputs: { gsplat, viewCenter, viewDir, sortRadial }, - globals: () => [defineGsplat], - statements: ({ inputs }) => { - const { gsplat: gsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; - if (gsplat2 && viewCenter2 && viewDir2 && sortRadial2) { - return unindentLines(` - float metric = 1.0 / 0.0; - if (isGsplatActive(${gsplat2}.flags)) { - vec3 center = ${gsplat2}.center - ${viewCenter2}; - if (${sortRadial2}) { - metric = length(center); - } else { - float bias = 100.0; // reduce popping - metric = dot(center, ${viewDir2}) + bias; - } - } - target3 = floatToVec4(metric); - `); - } - return []; - } - }); +var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; +var fleb = new u8([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + /* unused */ + 0, + 0, + /* impossible */ + 0 +]); +var fdeb = new u8([ + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + /* unused */ + 0, + 0 +]); +var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +var freb = function(eb, start) { + var b = new u16(31); + for (var i = 0; i < 31; ++i) { + b[i] = start += 1 << eb[i - 1]; } -} -class OutputCovSplatDepth extends Dyno { - constructor({ - covsplat, - viewCenter, - viewDir, - sortRadial - }) { - super({ - inTypes: { - covsplat: CovSplat, - viewCenter: "vec3", - viewDir: "vec3", - sortRadial: "bool" - }, - inputs: { covsplat, viewCenter, viewDir, sortRadial }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; - if (covsplat2 && viewCenter2 && viewDir2 && sortRadial2) { - return unindentLines(` - float metric = 1.0 / 0.0; - if (isCovSplatActive(${covsplat2}.flags)) { - vec3 center = ${covsplat2}.center - ${viewCenter2}; - if (${sortRadial2}) { - metric = length(center); - } else { - float bias = 100.0; // reduce popping - metric = dot(center, ${viewDir2}) + bias; - } - } - target3 = floatToVec4(metric); - `); - } - return []; - } - }); + var r = new i32(b[30]); + for (var i = 1; i < 30; ++i) { + for (var j = b[i]; j < b[i + 1]; ++j) { + r[j] = j - b[i] << 5 | i; + } } + return { b, r }; +}; +var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; +fl[28] = 258, revfl[258] = 28; +var _b = freb(fdeb, 0), fd = _b.b; +var rev = new u16(32768); +for (var i = 0; i < 32768; ++i) { + var x = (i & 43690) >> 1 | (i & 21845) << 1; + x = (x & 52428) >> 2 | (x & 13107) << 2; + x = (x & 61680) >> 4 | (x & 3855) << 4; + rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; } -class OutputRgba8 extends Dyno { - constructor({ rgba8 }) { - super({ - inTypes: { rgba8: "vec4" }, - inputs: { rgba8 }, - statements: ({ inputs, outputs }) => [ - `target = ${inputs.rgba8 ?? "vec4(0.0, 0.0, 0.0, 0.0)"};` - ] - }); +var hMap = function(cd, mb, r) { + var s = cd.length; + var i = 0; + var l = new u16(mb); + for (; i < s; ++i) { + if (cd[i]) + ++l[cd[i] - 1]; } - dynoOut() { - return new DynoOutput(this, "rgba8"); + var le = new u16(mb); + for (i = 1; i < mb; ++i) { + le[i] = le[i - 1] + l[i - 1] << 1; } -} -const uniform = (key, type, value) => new DynoUniform({ key, type, value }); -const dynoBool = (value = false, key) => new DynoBool({ key, value }); -const dynoUint = (value = 0, key) => new DynoUint({ key, value }); -const dynoInt = (value = 0, key) => new DynoInt({ key, value }); -const dynoFloat = (value = 0, key) => new DynoFloat({ key, value }); -const dynoBvec2 = (value, key) => new DynoBvec2({ key, value }); -const dynoUvec2 = (value, key) => new DynoUvec2({ key, value }); -const dynoIvec2 = (value, key) => new DynoIvec2({ key, value }); -const dynoVec2 = (value, key) => new DynoVec2({ key, value }); -const dynoBvec3 = (value, key) => new DynoBvec3({ key, value }); -const dynoUvec3 = (value, key) => new DynoUvec3({ key, value }); -const dynoIvec3 = (value, key) => new DynoIvec3({ key, value }); -const dynoVec3 = (value, key) => new DynoVec3({ key, value }); -const dynoBvec4 = (value, key) => new DynoBvec4({ key, value }); -const dynoUvec4 = (value, key) => new DynoUvec4({ key, value }); -const dynoIvec4 = (value, key) => new DynoIvec4({ key, value }); -const dynoVec4 = (value, key) => new DynoVec4({ key, value }); -const dynoMat2 = (value, key) => new DynoMat2({ key, value }); -const dynoMat2x2 = (value, key) => new DynoMat2x2({ key, value }); -const dynoMat2x3 = (value, key) => new DynoMat2x3({ key, value }); -const dynoMat2x4 = (value, key) => new DynoMat2x4({ key, value }); -const dynoMat3 = (value, key) => new DynoMat3({ key, value }); -const dynoMat3x2 = (value, key) => new DynoMat3x2({ key, value }); -const dynoMat3x3 = (value, key) => new DynoMat3x3({ key, value }); -const dynoMat3x4 = (value, key) => new DynoMat3x4({ key, value }); -const dynoMat4 = (value, key) => new DynoMat4({ key, value }); -const dynoMat4x2 = (value, key) => new DynoMat4x2({ key, value }); -const dynoMat4x3 = (value, key) => new DynoMat4x3({ key, value }); -const dynoMat4x4 = (value, key) => new DynoMat4x4({ key, value }); -const dynoUsampler2D = (value, key) => new DynoUsampler2D({ key, value }); -const dynoIsampler2D = (value, key) => new DynoIsampler2D({ key, value }); -const dynoSampler2D = (value, key) => new DynoSampler2D({ key, value }); -const dynoUsampler2DArray = (value, key) => new DynoUsampler2DArray({ key, value }); -const dynoIsampler2DArray = (key, value) => new DynoIsampler2DArray({ key, value }); -const dynoSampler2DArray = (value, key) => new DynoSampler2DArray({ key, value }); -const dynoUsampler3D = (value, key) => new DynoUsampler3D({ key, value }); -const dynoIsampler3D = (value, key) => new DynoIsampler3D({ key, value }); -const dynoSampler3D = (value, key) => new DynoSampler3D({ key, value }); -const dynoUsamplerCube = (value, key) => new DynoUsamplerCube({ key, value }); -const dynoIsamplerCube = (value, key) => new DynoIsamplerCube({ key, value }); -const dynoSamplerCube = (value, key) => new DynoSamplerCube({ key, value }); -const dynoSampler2DShadow = (value, key) => new DynoSampler2DShadow({ key, value }); -const dynoSampler2DArrayShadow = (value, key) => new DynoSampler2DArrayShadow({ key, value }); -const dynoSamplerCubeShadow = (value, key) => new DynoSamplerCubeShadow({ key, value }); -class DynoUniform extends Dyno { - constructor({ - key, - type, - count, - value, - update, - globals - }) { - key = key ?? "value"; - super({ - outTypes: { [key]: type }, - update: () => { - if (update) { - const value2 = update(this.value); - if (value2 !== void 0) { - this.value = value2; - } - } - this.uniform.value = this.value; - }, - generate: ({ inputs, outputs }) => { - const allGlobals = (globals == null ? void 0 : globals({ inputs, outputs })) ?? []; - const uniforms = {}; - const name = outputs[key]; - if (name) { - allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`); - uniforms[name] = this.uniform; + var co; + if (r) { + co = new u16(1 << mb); + var rvb = 15 - mb; + for (i = 0; i < s; ++i) { + if (cd[i]) { + var sv = i << 4 | cd[i]; + var r_1 = mb - cd[i]; + var v = le[cd[i] - 1]++ << r_1; + for (var m = v | (1 << r_1) - 1; v <= m; ++v) { + co[rev[v] >> rvb] = sv; } - return { globals: allGlobals, uniforms }; } - }); - this.type = type; - this.count = count; - this.value = value; - this.uniform = { value }; - this.outKey = key; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class DynoBool extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bool", value, update }); - } -} -class DynoUint extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uint", value, update }); - } -} -class DynoInt extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "int", value, update }); - } -} -class DynoFloat extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "float", value, update }); - } -} -class DynoBvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec2", value, update }); - } -} -class DynoUvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec2", value, update }); - } -} -class DynoIvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec2", value, update }); + } + } else { + co = new u16(s); + for (i = 0; i < s; ++i) { + if (cd[i]) { + co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + } + } } -} -class DynoVec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec2", value, update }); + return co; +}; +var flt = new u8(288); +for (var i = 0; i < 144; ++i) + flt[i] = 8; +for (var i = 144; i < 256; ++i) + flt[i] = 9; +for (var i = 256; i < 280; ++i) + flt[i] = 7; +for (var i = 280; i < 288; ++i) + flt[i] = 8; +var fdt = new u8(32); +for (var i = 0; i < 32; ++i) + fdt[i] = 5; +var flrm = /* @__PURE__ */ hMap(flt, 9, 1); +var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); +var max$1 = function(a) { + var m = a[0]; + for (var i = 1; i < a.length; ++i) { + if (a[i] > m) + m = a[i]; } -} -class DynoBvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec3", value, update }); + return m; +}; +var bits = function(d, p, m) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8) >> (p & 7) & m; +}; +var bits16 = function(d, p) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); +}; +var shft = function(p) { + return (p + 7) / 8 | 0; +}; +var slc = function(v, s, e) { + if (s == null || s < 0) + s = 0; + if (e == null || e > v.length) + e = v.length; + return new u8(v.subarray(s, e)); +}; +var ec = [ + "unexpected EOF", + "invalid block type", + "invalid length/literal", + "invalid distance", + "stream finished", + "no stream handler", + , + "no callback", + "invalid UTF-8 data", + "extra field too long", + "date not in range 1980-2099", + "filename too long", + "stream finishing", + "invalid zip data" + // determined by unknown compression method +]; +var err = function(ind, msg, nt) { + var e = new Error(msg || ec[ind]); + e.code = ind; + if (Error.captureStackTrace) + Error.captureStackTrace(e, err); + if (!nt) + throw e; + return e; +}; +var inflt = function(dat, st, buf, dict) { + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) + return buf || new u8(0); + var noBuf = !buf; + var resize = noBuf || st.i != 2; + var noSt = st.i; + if (noBuf) + buf = new u8(sl * 3); + var cbuf = function(l2) { + var bl = buf.length; + if (l2 > bl) { + var nbuf = new u8(Math.max(bl * 2, l2)); + nbuf.set(buf); + buf = nbuf; + } + }; + var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; + var tbts = sl * 8; + do { + if (!lm) { + final = bits(dat, pos, 1); + var type = bits(dat, pos + 1, 3); + pos += 3; + if (!type) { + var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; + if (t > sl) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + l); + buf.set(dat.subarray(s, t), bt); + st.b = bt += l, st.p = pos = t * 8, st.f = final; + continue; + } else if (type == 1) + lm = flrm, dm = fdrm, lbt = 9, dbt = 5; + else if (type == 2) { + var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; + var tl = hLit + bits(dat, pos + 5, 31) + 1; + pos += 14; + var ldt = new u8(tl); + var clt = new u8(19); + for (var i = 0; i < hcLen; ++i) { + clt[clim[i]] = bits(dat, pos + i * 3, 7); + } + pos += hcLen * 3; + var clb = max$1(clt), clbmsk = (1 << clb) - 1; + var clm = hMap(clt, clb, 1); + for (var i = 0; i < tl; ) { + var r = clm[bits(dat, pos, clbmsk)]; + pos += r & 15; + var s = r >> 4; + if (s < 16) { + ldt[i++] = s; + } else { + var c = 0, n = 0; + if (s == 16) + n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; + else if (s == 17) + n = 3 + bits(dat, pos, 7), pos += 3; + else if (s == 18) + n = 11 + bits(dat, pos, 127), pos += 7; + while (n--) + ldt[i++] = c; + } + } + var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); + lbt = max$1(lt); + dbt = max$1(dt); + lm = hMap(lt, lbt, 1); + dm = hMap(dt, dbt, 1); + } else + err(1); + if (pos > tbts) { + if (noSt) + err(0); + break; + } + } + if (resize) + cbuf(bt + 131072); + var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; + var lpos = pos; + for (; ; lpos = pos) { + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; + pos += c & 15; + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (!c) + err(2); + if (sym < 256) + buf[bt++] = sym; + else if (sym == 256) { + lpos = pos, lm = null; + break; + } else { + var add2 = sym - 254; + if (sym > 264) { + var i = sym - 257, b = fleb[i]; + add2 = bits(dat, pos, (1 << b) - 1) + fl[i]; + pos += b; + } + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; + if (!d) + err(3); + pos += d & 15; + var dt = fd[dsym]; + if (dsym > 3) { + var b = fdeb[dsym]; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + } + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + 131072); + var end = bt + add2; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } + for (; bt < end; ++bt) + buf[bt] = buf[bt - dt]; + } + } + st.l = lm, st.p = lpos, st.b = bt, st.f = final; + if (lm) + final = 1, st.m = lbt, st.d = dm, st.n = dbt; + } while (!final); + return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); +}; +var et = /* @__PURE__ */ new u8(0); +var b2 = function(d, b) { + return d[b] | d[b + 1] << 8; +}; +var b4 = function(d, b) { + return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0; +}; +var b8 = function(d, b) { + return b4(d, b) + b4(d, b + 4) * 4294967296; +}; +var gzs = function(d) { + if (d[0] != 31 || d[1] != 139 || d[2] != 8) + err(6, "invalid gzip data"); + var flg = d[3]; + var st = 10; + if (flg & 4) + st += (d[10] | d[11] << 8) + 2; + for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) + ; + return st + (flg & 2); +}; +var Inflate = /* @__PURE__ */ function() { + function Inflate2(opts, cb) { + if (typeof opts == "function") + cb = opts, opts = {}; + this.ondata = cb; + var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); + this.s = { i: 0, b: dict ? dict.length : 0 }; + this.o = new u8(32768); + this.p = new u8(0); + if (dict) + this.o.set(dict); } + Inflate2.prototype.e = function(c) { + if (!this.ondata) + err(5); + if (this.d) + err(4); + if (!this.p.length) + this.p = c; + else if (c.length) { + var n = new u8(this.p.length + c.length); + n.set(this.p), n.set(c, this.p.length), this.p = n; + } + }; + Inflate2.prototype.c = function(final) { + this.s.i = +(this.d = final || false); + var bts = this.s.b; + var dt = inflt(this.p, this.s, this.o); + this.ondata(slc(dt, bts, this.s.b), this.d); + this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; + this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; + }; + Inflate2.prototype.push = function(chunk, final) { + this.e(chunk), this.c(final); + }; + return Inflate2; +}(); +function inflateSync(data, opts) { + return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); } -class DynoUvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec3", value, update }); +var Gunzip = /* @__PURE__ */ function() { + function Gunzip2(opts, cb) { + this.v = 1; + this.r = 0; + Inflate.call(this, opts, cb); } + Gunzip2.prototype.push = function(chunk, final) { + Inflate.prototype.e.call(this, chunk); + this.r += chunk.length; + if (this.v) { + var p = this.p.subarray(this.v - 1); + var s = p.length > 3 ? gzs(p) : 4; + if (s > p.length) { + if (!final) + return; + } else if (this.v > 1 && this.onmember) { + this.onmember(this.r - p.length); + } + this.p = p.subarray(s), this.v = 0; + } + Inflate.prototype.c.call(this, final); + if (this.s.f && !this.s.l && !final) { + this.v = shft(this.s.p) + 9; + this.s = { i: 0 }; + this.o = new u8(0); + this.push(new u8(0), final); + } + }; + return Gunzip2; +}(); +var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); +var tds = 0; +try { + td.decode(et, { stream: true }); + tds = 1; +} catch (e) { } -class DynoIvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec3", value, update }); +var dutf8 = function(d) { + for (var r = "", i = 0; ; ) { + var c = d[i++]; + var eb = (c > 127) + (c > 223) + (c > 239); + if (i + eb > d.length) + return { s: r, r: slc(d, i - 1) }; + if (!eb) + r += String.fromCharCode(c); + else if (eb == 3) { + c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); + } else if (eb & 1) + r += String.fromCharCode((c & 31) << 6 | d[i++] & 63); + else + r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); } -} -class DynoVec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec3", value, update }); +}; +function strFromU8(dat, latin1) { + if (latin1) { + var r = ""; + for (var i = 0; i < dat.length; i += 16384) + r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); + return r; + } else if (td) { + return td.decode(dat); + } else { + var _a2 = dutf8(dat), s = _a2.s, r = _a2.r; + if (r.length) + err(8); + return s; } } -class DynoBvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec4", value, update }); +var slzh = function(d, b) { + return b + 30 + b2(d, b + 26) + b2(d, b + 28); +}; +var zh = function(d, b, z) { + var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); + var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2]; + return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; +}; +var z64e = function(d, b) { + for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) + ; + return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; +}; +function unzipSync(data, opts) { + var files = {}; + var e = data.length - 22; + for (; b4(data, e) != 101010256; --e) { + if (!e || data.length - e > 65558) + err(13); } -} -class DynoUvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec4", value, update }); + var c = b2(data, e + 8); + if (!c) + return {}; + var o = b4(data, e + 16); + var z = o == 4294967295 || c == 65535; + if (z) { + var ze = b4(data, e - 12); + z = b4(data, ze) == 101075792; + if (z) { + c = b4(data, ze + 32); + o = b4(data, ze + 48); + } } -} -class DynoIvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec4", value, update }); + var fltr = opts && opts.filter; + for (var i = 0; i < c; ++i) { + var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off); + o = no; + if (!fltr || fltr({ + name: fn, + size: sc, + originalSize: su, + compression: c_2 + })) { + if (!c_2) + files[fn] = slc(data, b, b + sc); + else if (c_2 == 8) + files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) }); + else + err(14, "unknown compression type " + c_2); + } } + return files; } -class DynoVec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec4", value, update }); - } +const threeRevision = Number.parseInt(THREE__namespace.REVISION); +const threeMrtArray = threeRevision >= 179; +const f32buffer = new Float32Array(1); +const u32buffer = new Uint32Array(f32buffer.buffer); +const supportsFloat16Array = "Float16Array" in globalThis; +const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null; +const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer); +function normalize$1(vec) { + const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0)); + return vec.map((v) => v / norm); } -class DynoMat2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2", value, update }); - } +function floatBitsToUint$1(f) { + f32buffer[0] = f; + return u32buffer[0]; } -class DynoMat2x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x2", value, update }); - } +function uintBitsToFloat$1(u) { + u32buffer[0] = u; + return f32buffer[0]; } -class DynoMat2x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x3", value, update }); - } +const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS; +const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS; +function toHalfNative(f) { + f16buffer[0] = f; + return u16buffer[0]; } -class DynoMat2x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x4", value, update }); +function toHalfJS(f) { + f32buffer[0] = f; + const bits2 = u32buffer[0]; + const sign2 = bits2 >> 31 & 1; + const exp3 = bits2 >> 23 & 255; + const frac = bits2 & 8388607; + const halfSign = sign2 << 15; + if (exp3 === 255) { + if (frac !== 0) { + return halfSign | 32767; + } + return halfSign | 31744; } -} -class DynoMat3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3", value, update }); + const newExp = exp3 - 127 + 15; + if (newExp >= 31) { + return halfSign | 31744; } -} -class DynoMat3x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x2", value, update }); + if (newExp <= 0) { + if (newExp < -10) { + return halfSign; + } + const subFrac = (frac | 8388608) >> 1 - newExp + 13; + return halfSign | subFrac; } + const halfFrac = frac >> 13; + return halfSign | newExp << 10 | halfFrac; } -class DynoMat3x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x3", value, update }); - } -} -class DynoMat3x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x4", value, update }); - } -} -class DynoMat4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4", value, update }); - } +function fromHalfNative(u) { + u16buffer[0] = u; + return f16buffer[0]; } -class DynoMat4x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x2", value, update }); +function fromHalfJS(h) { + const sign2 = h >> 15 & 1; + const exp3 = h >> 10 & 31; + const frac = h & 1023; + let f32bits; + if (exp3 === 0) { + if (frac === 0) { + f32bits = sign2 << 31; + } else { + let mant = frac; + let e = -14; + while ((mant & 1024) === 0) { + mant <<= 1; + e--; + } + mant &= 1023; + const newExp = e + 127; + const newFrac = mant << 13; + f32bits = sign2 << 31 | newExp << 23 | newFrac; + } + } else if (exp3 === 31) { + if (frac === 0) { + f32bits = sign2 << 31 | 2139095040; + } else { + f32bits = sign2 << 31 | 2143289344; + } + } else { + const newExp = exp3 - 15 + 127; + const newFrac = frac << 13; + f32bits = sign2 << 31 | newExp << 23 | newFrac; } + u32buffer[0] = f32bits; + return f32buffer[0]; } -class DynoMat4x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x3", value, update }); - } +function floatToUint8(v) { + return Math.max(0, Math.min(255, Math.round(v * 255))); } -class DynoMat4x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x4", value, update }); - } +function floatToSint8(v) { + return Math.max(-127, Math.min(127, Math.round(v * 127))); } -class DynoUsampler2D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usampler2D", value, update }); - } +function Uint8ToFloat(v) { + return v / 255; } -class DynoIsampler2D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler2D", value, update }); - } +function Sint8ToFloat(v) { + return v / 127; } -class DynoSampler2D extends DynoUniform { +class DataCache { + // Create a DataCache with a given function that fetches data not in the cache. constructor({ - key, - value, - update + asyncFetch, + dispose, + maxItems = 5 }) { - super({ key, type: "sampler2D", value, update }); + this.asyncFetch = asyncFetch; + this.dispose = dispose; + this.maxItems = maxItems; + this.items = []; + this.pending = /* @__PURE__ */ new Map(); } -} -class DynoUsampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usampler2DArray", value, update }); + has(key) { + return this.items.some((item) => item.key === key); } -} -class DynoIsampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler2DArray", value, update }); + getImmediate(key) { + const index = this.items.findIndex((item) => item.key === key); + if (index >= 0) { + const item = this.items.splice(index, 1)[0]; + this.items.push(item); + return item.data; + } + return void 0; } -} -class DynoSampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DArray", value, update }); + // Fetch data for the key, returning cached data if available. + async getFetch(key) { + const immediate = this.getImmediate(key); + if (immediate !== void 0) { + return immediate; + } + let pending = this.pending.get(key); + if (pending) { + return pending; + } + pending = this.asyncFetch(key).then((data) => { + this.pending.delete(key); + this.items.push({ key, data }); + while (this.items.length > this.maxItems) { + const removed = this.items.shift(); + if (removed && this.dispose) { + this.dispose(removed.data); + } + } + return data; + }); + this.pending.set(key, pending); + return pending; } } -class DynoUsampler3D extends DynoUniform { - constructor({ +function mapObject(obj, fn) { + const entries = Object.entries(obj).map(([key, value]) => [ key, - value, - update - }) { - super({ key, type: "usampler3D", value, update }); - } + fn(value, key) + ]); + return Object.fromEntries(entries); } -class DynoIsampler3D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler3D", value, update }); - } +function mapFilterObject(obj, fn) { + const entries = Object.entries(obj).map(([key, value]) => [key, fn(value, key)]).filter(([_, value]) => value !== void 0); + return Object.fromEntries(entries); } -class DynoSampler3D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler3D", value, update }); +function getTransferable(ctx) { + const buffers = []; + const seen = /* @__PURE__ */ new Set(); + function traverse(obj) { + if (obj && typeof obj === "object" && !seen.has(obj)) { + seen.add(obj); + if (obj instanceof ArrayBuffer) { + buffers.push(obj); + } else if (ArrayBuffer.isView(obj)) { + buffers.push(obj.buffer); + } else if (Array.isArray(obj)) { + obj.forEach(traverse); + } else { + Object.values(obj).forEach(traverse); + } + } } + traverse(ctx); + return buffers; } -class DynoUsamplerCube extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usamplerCube", value, update }); - } +function newArray(n, initFunction) { + return new Array(n).fill(null).map((_, i) => initFunction(i)); } -class DynoIsamplerCube extends DynoUniform { +class FreeList { constructor({ - key, - value, - update + // Allocate a new item with the given args + allocate, + // Dispose of an item (optional, if GC is enough) + dispose, + // Check if an existing item in the list is valid for the given args, + // allowing you to store heterogeneous items in the list. + valid }) { - super({ key, type: "isamplerCube", value, update }); + this.items = []; + this.allocate = allocate; + this.dispose = dispose; + this.valid = valid; } -} -class DynoSamplerCube extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "samplerCube", value, update }); - } -} -class DynoSampler2DShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DShadow", value, update }); - } -} -class DynoSampler2DArrayShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DArrayShadow", value, update }); - } -} -class DynoSamplerCubeShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "samplerCubeShadow", value, update }); - } -} -class DynoProgram { - constructor({ - graph, - inputs, - outputs, - template, - consoleLog - }) { - this.graph = graph; - this.template = template; - this.inputs = inputs ?? {}; - this.outputs = outputs ?? {}; - const compile = new Compilation({ indent: this.template.indent }); - for (const key in this.outputs) { - if (this.outputs[key]) { - compile.declares.add(this.outputs[key]); + // Allocate a new item from the free list, first checking if a existing item + // on the freelist is valid for the given args. + alloc(args) { + while (true) { + const item = this.items.pop(); + if (!item) { + break; + } + if (this.valid(item, args)) { + return item; + } + if (this.dispose) { + this.dispose(item); } } - const statements = graph.compile({ - inputs: this.inputs, - outputs: this.outputs, - compile - }); - this.shader = template.generate({ globals: compile.globals, statements }); - this.uniforms = compile.uniforms; - this.updaters = compile.updaters; - if (consoleLog) { - console.log("*** COMPILED SHADER", this.shader); - console.log("*** UNIFORMS", this.uniforms); - } + return this.allocate(args); } - prepareMaterial() { - return getMaterial(this); + free(item) { + this.items.push(item); } - update() { - for (const updater of this.updaters) { - updater(); + disposeAll() { + let item; + item = this.items.pop(); + while (item) { + if (this.dispose) { + this.dispose(item); + } + item = this.items.pop(); } } } -class DynoProgramTemplate { - constructor(template) { - const globals = template.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m); - const statements = template.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); - if (!globals || !statements) { - throw new Error( - "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" - ); - } - this.before = template.substring(0, globals.index); - this.between = template.substring( - globals.index + globals[0].length, - statements.index - ); - this.after = template.substring( - statements.index + statements[0].length - ); - this.indent = statements[1]; - } - generate({ - globals, - statements - }) { - return this.before + Array.from(globals).join("\n\n") + this.between + statements.map((s) => this.indent + s).join("\n") + this.after; - } +function encodeExtSplat(extArrays, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) { + const i4 = index * 4; + const [extA, extB] = extArrays; + extA[i4] = floatBitsToUint$1(x); + extA[i4 + 1] = floatBitsToUint$1(y); + extA[i4 + 2] = floatBitsToUint$1(z); + extA[i4 + 3] = toHalf(opacity); + extB[i4] = toHalf(r) | toHalf(g) << 16; + extB[i4 + 1] = toHalf(b) | toHalf(Math.log(scaleX)) << 16; + extB[i4 + 2] = toHalf(Math.log(scaleY)) | toHalf(Math.log(scaleZ)) << 16; + extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW); } -const programMaterial = /* @__PURE__ */ new WeakMap(); -function getMaterial(program) { - let material = programMaterial.get(program); - if (material) { - return material; - } - material = new THREE__namespace.RawShaderMaterial({ - glslVersion: THREE__namespace.GLSL3, - vertexShader: IDENT_VERTEX_SHADER, - fragmentShader: program.shader, - uniforms: program.uniforms - }); - programMaterial.set(program, material); - return material; +function decodeExtSplat(extArrays, index) { + const result = packedFields; + const i4 = index * 4; + const [extA, extB] = extArrays; + result.center.x = uintBitsToFloat$1(extA[i4]); + result.center.y = uintBitsToFloat$1(extA[i4 + 1]); + result.center.z = uintBitsToFloat$1(extA[i4 + 2]); + result.opacity = fromHalf(extA[i4 + 3] & 65535); + result.color.r = fromHalf(extB[i4] & 65535); + result.color.g = fromHalf(extB[i4] >>> 16); + result.color.b = fromHalf(extB[i4 + 1] & 65535); + result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16)); + result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 65535)); + result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16)); + decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion); + return result; } -function addOutputType(a, b, operation = "add") { - const error = () => { - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); - }; - if (a === b) return a; - if (a === "int") { - if (isIntType(b)) return b; - error(); - } - if (b === "int") { - if (isIntType(a)) return a; - error(); - } - if (a === "uint") { - if (isUintType(b)) return b; - error(); - } - if (b === "uint") { - if (isUintType(a)) return a; - error(); - } - if (a === "float") { - if (isAllFloatType(b)) return b; - error(); - } - if (b === "float") { - if (isAllFloatType(a)) return a; - error(); - } - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); +function setPackedSplat(packedSplats, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity); + const uQuat = encodeQuatOctXy88R8( + tempQuaternion.set(quatX, quatY, quatZ, quatW) + ); + const uQuatX = uQuat & 255; + const uQuatY = uQuat >>> 8 & 255; + const uQuatZ = uQuat >>> 16 & 255; + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); + const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uCenterX = toHalf(x); + const uCenterY = toHalf(y); + const uCenterZ = toHalf(z); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; + packedSplats[i4 + 1] = uCenterX | uCenterY << 16; + packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24; + packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24; } -function subOutputType(a, b) { - return addOutputType(a, b, "sub"); +function setPackedSplatCenter(packedSplats, index, x, y, z) { + const uCenterX = toHalf(x); + const uCenterY = toHalf(y); + const uCenterZ = toHalf(z); + const i4 = index * 4; + packedSplats[i4 + 1] = uCenterX | uCenterY << 16; + packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760; } -function mulOutputType(a, b) { - const error = () => { - throw new Error(`Invalid mul types: ${a}, ${b}`); - }; - const result = (value) => value; - if (a === "int") { - if (isIntType(b)) return result(b); - error(); - } - if (b === "int") { - if (isIntType(a)) return result(a); - error(); - } - if (a === "uint") { - if (isUintType(b)) return result(b); - error(); +function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) { + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); + const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const i4 = index * 4; + packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080; +} +const tempQuaternion = new THREE__namespace.Quaternion(); +function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) { + const uQuat = encodeQuatOctXy88R8( + tempQuaternion.set(quatX, quatY, quatZ, quatW) + ); + const uQuatX = uQuat & 255; + const uQuatY = uQuat >>> 8 & 255; + const uQuatZ = uQuat >>> 16 & 255; + const i4 = index * 4; + packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24; + packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24; +} +function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; +} +function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080; +} +function setPackedSplatOpacity(packedSplats, index, opacity) { + const uA = floatToUint8(opacity); + const i4 = index * 4; + packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24; +} +const packedCenter = new THREE__namespace.Vector3(); +const packedScales = new THREE__namespace.Vector3(); +const packedQuaternion = new THREE__namespace.Quaternion(); +const packedColor = new THREE__namespace.Color(); +const packedFields = { + center: packedCenter, + scales: packedScales, + quaternion: packedQuaternion, + color: packedColor, + opacity: 0 +}; +function unpackSplat(packedSplats, index, encoding) { + const result = packedFields; + const i4 = index * 4; + const word0 = packedSplats[i4]; + const word1 = packedSplats[i4 + 1]; + const word2 = packedSplats[i4 + 2]; + const word3 = packedSplats[i4 + 3]; + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + result.color.set( + rgbMin + (word0 & 255) / 255 * rgbRange, + rgbMin + (word0 >>> 8 & 255) / 255 * rgbRange, + rgbMin + (word0 >>> 16 & 255) / 255 * rgbRange + ); + result.opacity = (word0 >>> 24 & 255) / 255; + if (encoding == null ? void 0 : encoding.lodOpacity) { + result.opacity = 2 * result.opacity; } - if (b === "uint") { - if (isUintType(a)) return result(a); - error(); + result.center.set( + fromHalf(word1 & 65535), + fromHalf(word1 >>> 16 & 65535), + fromHalf(word2 & 65535) + ); + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = (lnScaleMax - lnScaleMin) / 254; + const uScalesX = word3 & 255; + result.scales.x = uScalesX === 0 ? 0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale); + const uScalesY = word3 >>> 8 & 255; + result.scales.y = uScalesY === 0 ? 0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale); + const uScalesZ = word3 >>> 16 & 255; + result.scales.z = uScalesZ === 0 ? 0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale); + const uQuat = word2 >>> 16 & 65535 | word3 >>> 8 & 16711680; + decodeQuatOctXy88R8(uQuat, result.quaternion); + return result; +} +function getTextureSize(numSplats) { + const width = SPLAT_TEX_WIDTH; + const height = Math.max( + SPLAT_TEX_MIN_HEIGHT, + Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) + ); + const depth = Math.ceil(numSplats / (width * height)); + const maxSplats = width * height * depth; + return { width, height, depth, maxSplats }; +} +function computeMaxSplats(numSplats) { + const width = SPLAT_TEX_WIDTH; + const height = Math.max( + SPLAT_TEX_MIN_HEIGHT, + Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) + ); + const depth = Math.ceil(numSplats / (width * height)); + return width * height * depth; +} +function isMobile() { + if (navigator.platform.toLowerCase().startsWith("win")) { + return false; } - if (a === "float") { - if (isAllFloatType(b)) return result(b); - error(); + if (navigator.maxTouchPoints > 0) { + return true; } - if (b === "float") { - if (isAllFloatType(a)) return result(a); - error(); + return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( + navigator.userAgent + ); +} +function isAndroid() { + return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); +} +function isOculus() { + return !!navigator.xr && /Oculus/.test(navigator.userAgent); +} +function isQuest2() { + return isOculus() && /Quest 2/.test(navigator.userAgent); +} +function isIos() { + return /iPhone|iPad/.test(navigator.userAgent); +} +function isVisionPro() { + return !!navigator.xr && isIos() && /Safari/.test(navigator.userAgent) && isMobile(); +} +function flipPixels(pixels, width, height) { + const tempLine = new Uint8Array(width * 4); + for (let y = 0; y < height / 2; y++) { + const topOffset = y * width * 4; + const bottomOffset = (height - 1 - y) * width * 4; + tempLine.set(pixels.subarray(topOffset, topOffset + width * 4)); + pixels.set( + pixels.subarray(bottomOffset, bottomOffset + width * 4), + topOffset + ); + pixels.set(tempLine, bottomOffset); } - if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) { - if (a === b) return result(a); - error(); + return pixels; +} +function pixelsToPngUrl(pixels, width, height) { + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext("2d"); + if (!ctx) { + throw new Error("Can't get 2d context"); } - if (a === "vec2") { - if (b === "vec2" || isMat2(b)) return result("vec2"); - if (b === "mat3x2") return result("vec3"); - if (b === "mat4x2") return result("vec4"); - error(); + const imageData = ctx.createImageData(width, height); + imageData.data.set(pixels); + ctx.putImageData(imageData, 0, 0); + return canvas.toDataURL("image/png"); +} +function cloneClock(clock) { + const newClock = new THREE__namespace.Clock(clock.autoStart); + newClock.startTime = clock.startTime; + newClock.oldTime = clock.oldTime; + newClock.elapsedTime = clock.elapsedTime; + newClock.running = clock.running; + return newClock; +} +function omitUndefined(obj) { + return Object.fromEntries( + Object.entries(obj).filter(([_, value]) => value !== void 0) + ); +} +const IDENT_VERTEX_SHADER = unindent(` + precision highp float; + + in vec3 position; + + void main() { + gl_Position = vec4(position.xy, 0.0, 1.0); } - if (a === "vec3") { - if (b === "mat2x3") return result("vec2"); - if (b === "vec3" || isMat3(b)) return result("vec3"); - if (b === "mat4x3") return result("vec4"); - error(); +`); +function averagePositions(positions) { + const sum = new THREE__namespace.Vector3(); + for (const position of positions) { + sum.add(position); } - if (a === "vec4") { - if (b === "mat2x4") return result("vec2"); - if (b === "mat3x4") return result("vec3"); - if (b === "vec4" || isMat4(b)) return result("vec4"); - error(); + return sum.divideScalar(positions.length); +} +function averageQuaternions(quaternions) { + if (quaternions.length === 0) { + return new THREE__namespace.Quaternion(); } - if (b === "vec2") { - if (isMat2(a)) return result("vec2"); - if (a === "mat2x3") return result("vec3"); - if (a === "mat2x4") return result("vec4"); - error(); + const sum = quaternions[0].clone(); + for (let i = 1; i < quaternions.length; i++) { + if (quaternions[i].dot(quaternions[0]) < 0) { + sum.x -= quaternions[i].x; + sum.y -= quaternions[i].y; + sum.z -= quaternions[i].z; + sum.w -= quaternions[i].w; + } else { + sum.x += quaternions[i].x; + sum.y += quaternions[i].y; + sum.z += quaternions[i].z; + sum.w += quaternions[i].w; + } } - if (b === "vec3") { - if (a === "mat3x2") return result("vec2"); - if (isMat3(a)) return result("vec3"); - if (a === "mat3x4") return result("vec4"); - error(); - } - if (b === "vec4") { - if (a === "mat4x2") return result("vec2"); - if (a === "mat4x3") return result("vec3"); - if (isMat4(a)) return result("vec4"); - error(); - } - if (isMat2(a)) { - if (isMat2(b)) return result("mat2"); - if (b === "mat3x2") return result("mat3x2"); - if (b === "mat4x2") return result("mat4x2"); - error(); - } - if (a === "mat2x3") { - if (isMat2(b)) return result("mat2x3"); - if (b === "mat3x2") return result("mat3"); - if (b === "mat4x2") return result("mat4x3"); - error(); - } - if (a === "mat2x4") { - if (isMat2(b)) return result("mat2x4"); - if (b === "mat3x2") return result("mat3x4"); - if (b === "mat4x2") return result("mat4"); - error(); - } - if (a === "mat3x2") { - if (b === "mat2x3") return result("mat2"); - if (isMat3(b)) return result("mat3x2"); - if (b === "mat4x3") return result("mat4x2"); - error(); - } - if (isMat3(a)) { - if (b === "mat2x3") return result("mat2x3"); - if (isMat3(b)) return result("mat3"); - if (b === "mat4x3") return result("mat4x3"); - error(); - } - if (a === "mat3x4") { - if (b === "mat2x3") return result("mat2x4"); - if (isMat3(b)) return result("mat3x4"); - if (b === "mat4x3") return result("mat4"); - error(); - } - if (a === "mat4x2") { - if (b === "mat2x4") return result("mat2"); - if (b === "mat3x4") return result("mat3x2"); - if (isMat4(b)) return result("mat4x2"); - error(); - } - if (a === "mat4x3") { - if (b === "mat2x4") return result("mat2x3"); - if (b === "mat3x4") return result("mat3"); - if (isMat4(b)) return result("mat4x3"); - error(); - } - if (isMat4(a)) { - if (b === "mat2x4") return result("mat2x4"); - if (b === "mat3x4") return result("mat3x4"); - if (isMat4(b)) return result("mat4"); - error(); - } - throw new Error(`Invalid mul types: ${a}, ${b}`); -} -function divOutputType(a, b) { - return addOutputType(a, b, "div"); -} -function imodOutputType(a, b) { - if (a === b) return a; - if (a === "int") { - if (isIntType(b)) return b; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (a === "uint") { - if (isUintType(b)) return b; - } else if (b === "uint") { - if (isUintType(a)) return a; - } - throw new Error(`Invalid imod types: ${a}, ${b}`); + return sum.normalize(); } -function modOutputType(a, b) { - if (a === b || b === "float") return a; - throw new Error(`Invalid mod types: ${a}, ${b}`); +function coinciDist(matrix1, matrix2) { + const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1); + const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2); + const direction1 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix1).sub(origin1).normalize(); + const direction2 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix2).sub(origin2).normalize(); + const distance2 = origin1.distanceTo(origin2); + const coincidence = direction1.dot(direction2); + return { distance: distance2, coincidence }; } -function modfOutputType(a) { - return a; +function withinDist({ + matrix1, + matrix2, + maxDistance +}) { + const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1); + const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2); + return origin1.distanceTo(origin2) <= maxDistance; } -function negOutputType(a) { - return a; +function withinCoinciDist({ + matrix1, + matrix2, + maxDistance, + minCoincidence +}) { + const { distance: distance2, coincidence } = coinciDist(matrix1, matrix2); + return distance2 <= maxDistance && (minCoincidence == null || coincidence >= minCoincidence); } -function absOutputType(a) { - return a; +function coorientDist(matrix1, matrix2) { + const [origin1, rotate1] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()]; + const [origin2, rotate2] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()]; + matrix1.decompose(origin1, rotate1, new THREE__namespace.Vector3()); + matrix2.decompose(origin2, rotate2, new THREE__namespace.Vector3()); + const distance2 = origin1.distanceTo(origin2); + const coorient = Math.abs(rotate1.dot(rotate2)); + return { distance: distance2, coorient }; } -function signOutputType(a) { - return a; +function withinCoorientDist({ + matrix1, + matrix2, + maxDistance, + minCoorient +}) { + const { distance: distance2, coorient } = coorientDist(matrix1, matrix2); + return distance2 <= maxDistance && (minCoorient == null || coorient >= minCoorient); } -function floorOutputType(a) { - return a; +function epsilonSign(value, epsilon = 1e-3) { + if (Math.abs(value) < epsilon) { + return 0; + } + return Math.sign(value); } -function ceilOutputType(a) { - return a; +function encodeQuatXyz888(q) { + const negQuat = q.w < 0; + const iQuatX = floatToSint8(negQuat ? -q.x : q.x); + const iQuatY = floatToSint8(negQuat ? -q.y : q.y); + const iQuatZ = floatToSint8(negQuat ? -q.z : q.z); + const uQuatX = iQuatX & 255; + const uQuatY = iQuatY & 255; + const uQuatZ = iQuatZ & 255; + return uQuatX | uQuatY << 8 | uQuatZ << 16; } -function truncOutputType(a) { - return a; +function decodeQuatXyz888(encoded, out) { + const iQuatX = encoded << 24 >> 24; + const iQuatY = encoded << 16 >> 24; + const iQuatZ = encoded << 8 >> 24; + out.set(iQuatX / 127, iQuatY / 127, iQuatZ / 127, 0); + const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z; + out.w = Math.sqrt(Math.max(0, 1 - dotSelf)); + return out; } -function roundOutputType(a) { - return a; +const tempNormalizedQuaternion = new THREE__namespace.Quaternion(); +const tempAxis = new THREE__namespace.Vector3(); +function encodeQuatOctXy88R8(q) { + const qnorm = tempNormalizedQuaternion.copy(q).normalize(); + if (qnorm.w < 0) { + qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w); + } + const theta = 2 * Math.acos(qnorm.w); + const xyz_norm = Math.sqrt( + qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z + ); + const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm); + const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z); + let p_x = axis.x / sum; + let p_y = axis.y / sum; + if (axis.z < 0) { + const tmp = p_x; + p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); + p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + } + const u_f = p_x * 0.5 + 0.5; + const v_f = p_y * 0.5 + 0.5; + const quantU = Math.round(u_f * 255); + const quantV = Math.round(v_f * 255); + const angleInt = Math.round(theta * (255 / Math.PI)); + return angleInt << 16 | quantV << 8 | quantU; } -function fractOutputType(a) { - return a; +function decodeQuatOctXy88R8(encoded, out) { + const quantU = encoded & 255; + const quantV = encoded >>> 8 & 255; + const angleInt = encoded >>> 16 & 255; + const u_f = quantU / 255; + const v_f = quantV / 255; + let f_x = (u_f - 0.5) * 2; + let f_y = (v_f - 0.5) * 2; + const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); + const t = Math.max(-f_z, 0); + f_x += f_x >= 0 ? -t : t; + f_y += f_y >= 0 ? -t : t; + const axis = tempAxis.set(f_x, f_y, f_z).normalize(); + const theta = angleInt / 255 * Math.PI; + const halfTheta = theta * 0.5; + const s = Math.sin(halfTheta); + const w = Math.cos(halfTheta); + out.set(axis.x * s, axis.y * s, axis.z * s, w); + return out; } -function powOutputType(a) { - return a; +function encodeQuatEulerXyz888(q) { + const qNorm = q.clone().normalize(); + const sinr_cosp = 2 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z); + const cosr_cosp = 1 - 2 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y); + const roll = Math.atan2(sinr_cosp, cosr_cosp); + const sinp = 2 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x); + const pitch = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp); + const siny_cosp = 2 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y); + const cosy_cosp = 1 - 2 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z); + const yaw = Math.atan2(siny_cosp, cosy_cosp); + const normRoll = (roll + Math.PI) / (2 * Math.PI); + const normPitch = (pitch + Math.PI) / (2 * Math.PI); + const normYaw = (yaw + Math.PI) / (2 * Math.PI); + const rollQ = Math.round(normRoll * 255); + const pitchQ = Math.round(normPitch * 255); + const yawQ = Math.round(normYaw * 255); + return yawQ << 16 | pitchQ << 8 | rollQ; } -function expOutputType(a) { - return a; +function decodeQuatEulerXyz888(encoded, out) { + const rollQ = encoded & 255; + const pitchQ = encoded >>> 8 & 255; + const yawQ = encoded >>> 16 & 255; + const normRoll = rollQ / 255; + const normPitch = pitchQ / 255; + const normYaw = yawQ / 255; + const roll = normRoll * (2 * Math.PI) - Math.PI; + const pitch = normPitch * (2 * Math.PI) - Math.PI; + const yaw = normYaw * (2 * Math.PI) - Math.PI; + const cr = Math.cos(roll * 0.5); + const sr = Math.sin(roll * 0.5); + const cp = Math.cos(pitch * 0.5); + const sp = Math.sin(pitch * 0.5); + const cy = Math.cos(yaw * 0.5); + const sy = Math.sin(yaw * 0.5); + out.w = cr * cp * cy + sr * sp * sy; + out.x = sr * cp * cy - cr * sp * sy; + out.y = cr * sp * cy + sr * cp * sy; + out.z = cr * cp * sy - sr * sp * cy; + out.normalize(); + return out; } -function exp2OutputType(a) { - return a; -} -function logOutputType(a) { - return a; -} -function log2OutputType(a) { - return a; -} -function sqrOutputType(a) { - return a; +function encodeQuatOctXy1010R12(qx, qy, qz, qw) { + const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw); + const qnx = (qw < 0 ? -qx : qx) / qlen; + const qny = (qw < 0 ? -qy : qy) / qlen; + const qnz = (qw < 0 ? -qz : qz) / qlen; + const qnw = (qw < 0 ? -qw : qw) / qlen; + const theta = 2 * Math.acos(qnw); + const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz); + const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm; + const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm; + const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm; + const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ); + let p_x = axisX / sum; + let p_y = axisY / sum; + if (axisZ < 0) { + const tmp = p_x; + p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); + p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + } + const u_f = p_x * 0.5 + 0.5; + const v_f = p_y * 0.5 + 0.5; + const quantU = Math.round(u_f * 1023); + const quantV = Math.round(v_f * 1023); + const angleInt = Math.round(theta * (4095 / Math.PI)); + return angleInt << 20 | quantV << 10 | quantU; } -function sqrtOutputType(a) { - return a; +function decodeQuatOctXy1010R12(encoded, out) { + const quantU = encoded & 1023; + const quantV = encoded >>> 10 & 1023; + const angleInt = encoded >>> 20 & 4095; + const u_f = quantU / 1023; + const v_f = quantV / 1023; + let f_x = (u_f - 0.5) * 2; + let f_y = (v_f - 0.5) * 2; + const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); + const t = Math.max(-f_z, 0); + f_x += f_x >= 0 ? -t : t; + f_y += f_y >= 0 ? -t : t; + const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z); + const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen; + const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen; + const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen; + const theta = angleInt / 4095 * Math.PI; + const halfTheta = theta * 0.5; + const s = Math.sin(halfTheta); + const w = Math.cos(halfTheta); + out.set(axisX * s, axisY * s, axisZ * s, w); + return out; } -function inversesqrtOutputType(a) { - return a; +function packSint8Bytes(b0, b1, b22, b3) { + const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127))); + const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127))); + const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127))); + const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127))); + return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24; } -function minOutputType(a, b, operation = "min") { - if (a === b) return a; - if (b === "float") { - if (isFloatType(a)) return a; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (b === "uint") { - if (isUintType(a)) return a; +function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) { + const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1; + const sh1Scale = 63 / sh1Max; + const base = index * 2; + for (let i = 0; i < 9; ++i) { + const s = sh1Rgb[i] * sh1Scale; + const value = Math.round(Math.max(-63, Math.min(63, s))) & 127; + const bitStart = i * 7; + const bitEnd = bitStart + 7; + const wordStart = Math.floor(bitStart / 32); + const bitOffset = bitStart - wordStart * 32; + const firstWord = value << bitOffset & 4294967295; + sh1Array[base + wordStart] |= firstWord; + if (bitEnd > wordStart * 32 + 32) { + const secondWord = value >>> 32 - bitOffset & 4294967295; + sh1Array[base + wordStart + 1] |= secondWord; + } } - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); } -function maxOutputType(a, b) { - return minOutputType(a, b, "max"); +function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) { + const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1; + const sh2Scale = 1 / sh2Max; + sh2Array[index * 4 + 0] = packSint8Bytes( + sh2Rgb[0] * sh2Scale, + sh2Rgb[1] * sh2Scale, + sh2Rgb[2] * sh2Scale, + sh2Rgb[3] * sh2Scale + ); + sh2Array[index * 4 + 1] = packSint8Bytes( + sh2Rgb[4] * sh2Scale, + sh2Rgb[5] * sh2Scale, + sh2Rgb[6] * sh2Scale, + sh2Rgb[7] * sh2Scale + ); + sh2Array[index * 4 + 2] = packSint8Bytes( + sh2Rgb[8] * sh2Scale, + sh2Rgb[9] * sh2Scale, + sh2Rgb[10] * sh2Scale, + sh2Rgb[11] * sh2Scale + ); + sh2Array[index * 4 + 3] = packSint8Bytes( + sh2Rgb[12] * sh2Scale, + sh2Rgb[13] * sh2Scale, + sh2Rgb[14] * sh2Scale, + 0 + ); } -function clampOutputType(a, b, _c) { - if (b === "float") { - if (isFloatType(a)) return a; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (b === "uint") { - if (isUintType(a)) return a; +function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) { + const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1; + const sh3Scale = 31 / sh3Max; + const base = index * 4; + for (let i = 0; i < 21; ++i) { + const s = sh3Rgb[i] * sh3Scale; + const value = Math.round(Math.max(-31, Math.min(31, s))) & 63; + const bitStart = i * 6; + const bitEnd = bitStart + 6; + const wordStart = Math.floor(bitStart / 32); + const bitOffset = bitStart - wordStart * 32; + const firstWord = value << bitOffset & 4294967295; + sh3Array[base + wordStart] |= firstWord; + if (bitEnd > wordStart * 32 + 32) { + const secondWord = value >>> 32 - bitOffset & 4294967295; + sh3Array[base + wordStart + 1] |= secondWord; + } } - throw new Error(`Invalid clamp types: ${a}, ${b}`); } -function mixOutputType(a, b, c) { - if (c === a) return a; - if (c === "float") return a; - if (c === "bool" && a === "float") return a; - if (c === "bvec2" && a === "vec2") return a; - if (c === "bvec3" && a === "vec3") return a; - if (c === "bvec4" && a === "vec4") return a; - throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`); +function encodeExtRgb(r, g, b) { + const ar = Math.abs(r); + const ag = Math.abs(g); + const ab = Math.abs(b); + const maxAbs = Math.max(ar, ag, ab); + const base = Math.floor(Math.log2(maxAbs)); + const biasedBase = Math.max(0, Math.min(31, base + 15)); + const divisor = 2 ** (biasedBase - 15) / 255; + const uR = Math.round(Math.max(0, Math.min(255, ar / divisor))); + const uG = Math.round(Math.max(0, Math.min(255, ag / divisor))); + const uB = Math.round(Math.max(0, Math.min(255, ab / divisor))); + const expSigns = biasedBase << 3 | ((r < 0 ? 1 : 0) | (g < 0 ? 2 : 0) | (b < 0 ? 4 : 0)); + return uR | uG << 8 | uB << 16 | expSigns << 24; } -function stepOutputType(a, b) { - if (a === b || b === "float") return b; - throw new Error(`Invalid step types: ${a}, ${b}`); +function decodeExtRgb(encoded) { + const color = packedFields.color; + const biasedBase = encoded >>> 27 & 31; + const divisor = 2 ** (biasedBase - 15) / 255; + const r = (encoded & 255) * divisor; + const g = (encoded >>> 8 & 255) * divisor; + const b = (encoded >>> 16 & 255) * divisor; + color.r = encoded & 16777216 ? -r : r; + color.g = encoded & 33554432 ? -g : g; + color.b = encoded & 67108864 ? -b : b; + return color; } -function smoothstepOutputType(a, b, c) { - if (a === b) { - if (a === c || a === "float") return c; +function encodeExtSh1Rgb(sh1Array, index, sh1Rgb) { + const i4 = index * 4; + for (let k = 0; k < 3; ++k) { + const k3 = k * 3; + sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); } - throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`); -} -function isNanOutputType(a, operation = "isNan") { - if (a === "float") return "bool"; - if (a === "vec2") return "bvec2"; - if (a === "vec3") return "bvec3"; - if (a === "vec4") return "bvec4"; - throw new Error(`Invalid ${operation} types: ${a}`); -} -function isInfOutputType(a) { - return isNanOutputType(a, "isInf"); } -const add = (a, b) => new Add({ a, b }); -const sub = (a, b) => new Sub({ a, b }); -const mul = (a, b) => new Mul({ a, b }); -const div = (a, b) => new Div({ a, b }); -const imod = (a, b) => new IMod({ a, b }); -const mod = (a, b) => new Mod({ a, b }); -const modf = (a) => new Modf({ a }).outputs; -const neg = (a) => new Neg({ a }); -const abs = (a) => new Abs({ a }); -const sign = (a) => new Sign({ a }); -const floor = (a) => new Floor({ a }); -const ceil = (a) => new Ceil({ a }); -const trunc = (a) => new Trunc({ a }); -const round = (a) => new Round({ a }); -const fract = (a) => new Fract({ a }); -const pow = (a, b) => new Pow({ a, b }); -const exp = (a) => new Exp({ a }); -const exp2 = (a) => new Exp2({ a }); -const log = (a) => new Log({ a }); -const log2 = (a) => new Log2({ a }); -const sqr = (a) => new Sqr({ a }); -const sqrt = (a) => new Sqrt({ a }); -const inversesqrt = (a) => new InverseSqrt({ a }); -const min = (a, b) => new Min({ a, b }); -const max = (a, b) => new Max({ a, b }); -const clamp = (a, min2, max2) => new Clamp({ a, min: min2, max: max2 }); -const mix = (a, b, t) => new Mix({ a, b, t }); -const step = (edge, x) => new Step({ edge, x }); -const smoothstep = (edge0, edge1, x) => new Smoothstep({ edge0, edge1, x }); -const isNan = (a) => new IsNan({ a }); -const isInf = (a) => new IsInf({ a }); -class Add extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "sum", outTypeFunc: addOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`]; - }; +function encodeExtSh12Rgb(sh1Array, sh2Array, index, sh1Rgb, sh2Rgb) { + const i4 = index * 4; + for (let k = 0; k < 3; ++k) { + const k3 = k * 3; + sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); + } + sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]); + for (let k = 1; k < 5; ++k) { + const k5 = k * 5; + sh2Array[i4 + (k - 1)] = encodeExtRgb( + sh2Rgb[k5], + sh2Rgb[k5 + 1], + sh2Rgb[k5 + 2] + ); } } -class Sub extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "difference", outTypeFunc: subOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`]; - }; +function encodeExt3Rgb(sh3ArrayA, sh3ArrayB, index, sh3Rgb) { + const i4 = index * 4; + for (let k = 0; k < 4; ++k) { + const k3 = k * 3; + sh3ArrayA[i4 + k] = encodeExtRgb( + sh3Rgb[k3], + sh3Rgb[k3 + 1], + sh3Rgb[k3 + 2] + ); } -} -class Mul extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "product", outTypeFunc: mulOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.product} = ${inputs.a} * ${inputs.b};`]; - }; + for (let k = 4; k < 7; ++k) { + const k3 = k * 3; + sh3ArrayB[i4 + (k - 4)] = encodeExtRgb( + sh3Rgb[k3], + sh3Rgb[k3 + 1], + sh3Rgb[k3 + 2] + ); } } -class Div extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "quotient", outTypeFunc: divOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`]; - }; +function decompressPartialGzip(fileBytes, numBytes) { + const chunks = []; + let totalBytes = 0; + let result = null; + const gunzip = new Gunzip((data, final) => { + chunks.push(data); + totalBytes += data.length; + if (final || totalBytes >= numBytes) { + const allBytes = new Uint8Array(totalBytes); + let offset2 = 0; + for (const chunk of chunks) { + allBytes.set(chunk, offset2); + offset2 += chunk.length; + } + result = allBytes.slice(0, numBytes); + } + }); + const CHUNK_SIZE = 1024; + let offset = 0; + while (result == null && offset < fileBytes.length) { + const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE); + gunzip.push(chunk, false); + offset += CHUNK_SIZE; } -} -class IMod extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "remainder", outTypeFunc: imodOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`]; - }; + if (result == null) { + gunzip.push(new Uint8Array(), true); + if (result == null) { + throw new Error("Failed to decompress partial gzip"); + } } + return result; } -class Mod extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "remainder", outTypeFunc: modOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`]; - }; +class GunzipReader { + constructor({ + fileBytes, + chunkBytes = 64 * 1024 + }) { + this.fileBytes = fileBytes; + this.chunkBytes = chunkBytes; + this.chunks = []; + this.totalBytes = 0; + const ds = new DecompressionStream("gzip"); + const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds); + this.reader = decompressionStream.getReader(); } -} -class Modf extends Dyno { - constructor({ a }) { - const inTypes = { a: valType(a) }; - const outType = modfOutputType(inTypes.a); - const outTypes = { - fract: outType, - integer: outType - }; - super({ inTypes, outTypes, inputs: { a } }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`]; - }; + async read(numBytes) { + while (this.totalBytes < numBytes) { + const { value: chunk, done: readerDone } = await this.reader.read(); + if (readerDone) { + break; + } + this.chunks.push(chunk); + this.totalBytes += chunk.length; + } + if (this.totalBytes < numBytes) { + throw new Error( + `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}` + ); + } + const allBytes = new Uint8Array(this.totalBytes); + let outOffset = 0; + for (const chunk of this.chunks) { + allBytes.set(chunk, outOffset); + outOffset += chunk.length; + } + const result = allBytes.subarray(0, numBytes); + this.chunks = [allBytes.subarray(numBytes)]; + this.totalBytes -= numBytes; + return result; } } -class Neg extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "neg", outTypeFunc: negOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.neg} = -${inputs.a};`]; - }; +function uploadU32DataTextureRows(renderer, texture2, width, rows, data) { + const gl = renderer.getContext(); + const props = renderer.properties.get(texture2); + const glTexture = props == null ? void 0 : props.__webglTexture; + if (!glTexture) { + throw new Error("texture not found"); } + const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL); + const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL); + renderer.state.activeTexture(gl.TEXTURE0); + renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, + width, + rows, + gl.RGBA_INTEGER, + gl.UNSIGNED_INT, + data + ); + renderer.state.unbindTexture(); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply); } -class Abs extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "abs", outTypeFunc: absOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.abs} = abs(${inputs.a});`]; - }; +const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + DataCache, + FreeList, + GunzipReader, + IDENT_VERTEX_SHADER, + Sint8ToFloat, + Uint8ToFloat, + averagePositions, + averageQuaternions, + cloneClock, + coinciDist, + computeMaxSplats, + coorientDist, + decodeExtRgb, + decodeExtSplat, + decodeQuatEulerXyz888, + decodeQuatOctXy1010R12, + decodeQuatOctXy88R8, + decodeQuatXyz888, + decompressPartialGzip, + encodeExt3Rgb, + encodeExtRgb, + encodeExtSh12Rgb, + encodeExtSh1Rgb, + encodeExtSplat, + encodeQuatEulerXyz888, + encodeQuatOctXy1010R12, + encodeQuatOctXy88R8, + encodeQuatXyz888, + encodeSh1Rgb, + encodeSh2Rgb, + encodeSh3Rgb, + epsilonSign, + flipPixels, + floatBitsToUint: floatBitsToUint$1, + floatToSint8, + floatToUint8, + fromHalf, + getTextureSize, + getTransferable, + isAndroid, + isIos, + isMobile, + isOculus, + isQuest2, + isVisionPro, + mapFilterObject, + mapObject, + newArray, + normalize: normalize$1, + omitUndefined, + pixelsToPngUrl, + setPackedSplat, + setPackedSplatCenter, + setPackedSplatOpacity, + setPackedSplatQuat, + setPackedSplatRgb, + setPackedSplatRgba, + setPackedSplatScales, + threeMrtArray, + threeRevision, + toHalf, + uintBitsToFloat: uintBitsToFloat$1, + unpackSplat, + uploadU32DataTextureRows, + withinCoinciDist, + withinCoorientDist, + withinDist +}, Symbol.toStringTag, { value: "Module" })); +class DynoProgram { + constructor({ + graph, + inputs, + outputs, + template, + consoleLog + }) { + this.graph = graph; + this.template = template; + this.inputs = inputs ?? {}; + this.outputs = outputs ?? {}; + const compile = new Compilation({ indent: this.template.indent }); + for (const key in this.outputs) { + if (this.outputs[key]) { + compile.declares.add(this.outputs[key]); + } + } + const statements = graph.compile({ + inputs: this.inputs, + outputs: this.outputs, + compile + }); + this.shader = template.generate({ globals: compile.globals, statements }); + this.uniforms = compile.uniforms; + this.updaters = compile.updaters; + if (consoleLog) { + console.log("*** COMPILED SHADER", this.shader); + console.log("*** UNIFORMS", this.uniforms); + } } -} -class Sign extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sign", outTypeFunc: signOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sign} = sign(${inputs.a});`]; - }; + prepareMaterial() { + return getMaterial(this); + } + update() { + for (const updater of this.updaters) { + updater(); + } } } -class Floor extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "floor", outTypeFunc: floorOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.floor} = floor(${inputs.a});`]; - }; +class DynoProgramTemplate { + constructor(template) { + const globals = template.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m); + const statements = template.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); + if (!globals || !statements) { + throw new Error( + "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" + ); + } + this.before = template.substring(0, globals.index); + this.between = template.substring( + globals.index + globals[0].length, + statements.index + ); + this.after = template.substring( + statements.index + statements[0].length + ); + this.indent = statements[1]; } -} -class Ceil extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "ceil", outTypeFunc: ceilOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.ceil} = ceil(${inputs.a});`]; - }; + generate({ + globals, + statements + }) { + return this.before + Array.from(globals).join("\n\n") + this.between + statements.map((s) => this.indent + s).join("\n") + this.after; } } -class Trunc extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "trunc", outTypeFunc: truncOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.trunc} = trunc(${inputs.a});`]; - }; +const programMaterial = /* @__PURE__ */ new WeakMap(); +function getMaterial(program) { + let material = programMaterial.get(program); + if (material) { + return material; } + material = new THREE__namespace.RawShaderMaterial({ + glslVersion: THREE__namespace.GLSL3, + vertexShader: IDENT_VERTEX_SHADER, + fragmentShader: program.shader, + uniforms: program.uniforms + }); + programMaterial.set(program, material); + return material; } -class Round extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "round", outTypeFunc: roundOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.round} = round(${inputs.a});`]; - }; +function addOutputType(a, b, operation = "add") { + const error = () => { + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); + }; + if (a === b) return a; + if (a === "int") { + if (isIntType(b)) return b; + error(); } -} -class Fract extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "fract", outTypeFunc: fractOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.fract} = fract(${inputs.a});`]; - }; + if (b === "int") { + if (isIntType(a)) return a; + error(); } -} -class Pow extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "power", outTypeFunc: powOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`]; - }; + if (a === "uint") { + if (isUintType(b)) return b; + error(); } -} -class Exp extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "exp", outTypeFunc: expOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.exp} = exp(${inputs.a});`]; - }; + if (b === "uint") { + if (isUintType(a)) return a; + error(); } -} -class Exp2 extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "exp2", outTypeFunc: exp2OutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.exp2} = exp2(${inputs.a});`]; - }; + if (a === "float") { + if (isAllFloatType(b)) return b; + error(); } -} -class Log extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "log", outTypeFunc: logOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.log} = log(${inputs.a});`]; - }; + if (b === "float") { + if (isAllFloatType(a)) return a; + error(); } + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); } -class Log2 extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "log2", outTypeFunc: log2OutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.log2} = log2(${inputs.a});`]; - }; - } +function subOutputType(a, b) { + return addOutputType(a, b, "sub"); } -class Sqr extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sqr", outTypeFunc: sqrOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`]; - }; +function mulOutputType(a, b) { + const error = () => { + throw new Error(`Invalid mul types: ${a}, ${b}`); + }; + const result = (value) => value; + if (a === "int") { + if (isIntType(b)) return result(b); + error(); } -} -class Sqrt extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sqrt", outTypeFunc: sqrtOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sqrt} = sqrt(${inputs.a});`]; - }; + if (b === "int") { + if (isIntType(a)) return result(a); + error(); } -} -class InverseSqrt extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "inversesqrt", outTypeFunc: inversesqrtOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`]; - }; + if (a === "uint") { + if (isUintType(b)) return result(b); + error(); } -} -class Min extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "min", outTypeFunc: minOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`]; - }; + if (b === "uint") { + if (isUintType(a)) return result(a); + error(); } -} -class Max extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "max", outTypeFunc: maxOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`]; - }; + if (a === "float") { + if (isAllFloatType(b)) return result(b); + error(); } -} -class Clamp extends TrinaryOp { - constructor({ - a, - min: min2, - max: max2 - }) { - super({ - a, - b: min2, - c: max2, - outKey: "clamp", - outTypeFunc: clampOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: a2, b: min3, c: max3 } = inputs; - return [`${outputs.clamp} = clamp(${a2}, ${min3}, ${max3});`]; - }; + if (b === "float") { + if (isAllFloatType(a)) return result(a); + error(); } -} -class Mix extends TrinaryOp { - constructor({ a, b, t }) { - super({ a, b, c: t, outKey: "mix", outTypeFunc: mixOutputType }); - this.statements = ({ inputs, outputs }) => { - const { a: a2, b: b22, c: t2 } = inputs; - return [`${outputs.mix} = mix(${a2}, ${b22}, ${t2});`]; - }; + if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) { + if (a === b) return result(a); + error(); } -} -class Step extends BinaryOp { - constructor({ edge, x }) { - super({ - a: edge, - b: x, - outKey: "step", - outTypeFunc: stepOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: edge2, b: x2 } = inputs; - return [`${outputs.step} = step(${edge2}, ${x2});`]; - }; + if (a === "vec2") { + if (b === "vec2" || isMat2(b)) return result("vec2"); + if (b === "mat3x2") return result("vec3"); + if (b === "mat4x2") return result("vec4"); + error(); } -} -class Smoothstep extends TrinaryOp { - constructor({ - edge0, - edge1, - x - }) { - super({ - a: edge0, - b: edge1, - c: x, - outKey: "smoothstep", - outTypeFunc: smoothstepOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: edge02, b: edge12, c: x2 } = inputs; - return [`${outputs.smoothstep} = smoothstep(${edge02}, ${edge12}, ${x2});`]; - }; + if (a === "vec3") { + if (b === "mat2x3") return result("vec2"); + if (b === "vec3" || isMat3(b)) return result("vec3"); + if (b === "mat4x3") return result("vec4"); + error(); } -} -class IsNan extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "isNan", outTypeFunc: isNanOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.isNan} = isNan(${inputs.a});`]; - }; + if (a === "vec4") { + if (b === "mat2x4") return result("vec2"); + if (b === "mat3x4") return result("vec3"); + if (b === "vec4" || isMat4(b)) return result("vec4"); + error(); } -} -class IsInf extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "isInf", outTypeFunc: isInfOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.isInf} = isInf(${inputs.a});`]; - }; + if (b === "vec2") { + if (isMat2(a)) return result("vec2"); + if (a === "mat2x3") return result("vec3"); + if (a === "mat2x4") return result("vec4"); + error(); } -} -const and = (a, b) => new And({ a, b }); -const or = (a, b) => new Or({ a, b }); -const xor = (a, b) => new Xor({ a, b }); -const not = (a) => new Not({ a }); -const shr = (a, b) => new Shr({ a, b }); -const shl = (a, b) => new Shl({ a, b }); -const lessThan = (a, b) => new LessThan({ a, b }); -const lessThanEqual = (a, b) => new LessThanEqual({ a, b }); -const greaterThan = (a, b) => new GreaterThan({ a, b }); -const greaterThanEqual = (a, b) => new GreaterThanEqual({ a, b }); -const equal = (a, b) => new Equal({ a, b }); -const notEqual = (a, b) => new NotEqual({ a, b }); -const any = (a) => new Any({ a }); -const all = (a) => new All({ a }); -const select = (cond, t, f) => new Select({ cond, t, f }); -const compXor = (a) => new CompXor({ a }); -class And extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "and" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.and === "bool") { - return [`${outputs.and} = ${inputs.a} && ${inputs.b};`]; - } - return [`${outputs.and} = ${inputs.a} & ${inputs.b};`]; - }; + if (b === "vec3") { + if (a === "mat3x2") return result("vec2"); + if (isMat3(a)) return result("vec3"); + if (a === "mat3x4") return result("vec4"); + error(); } -} -class Or extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "or" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.or === "bool") { - return [`${outputs.or} = ${inputs.a} || ${inputs.b};`]; - } - return [`${outputs.or} = ${inputs.a} | ${inputs.b};`]; - }; + if (b === "vec4") { + if (a === "mat4x2") return result("vec2"); + if (a === "mat4x3") return result("vec3"); + if (isMat4(a)) return result("vec4"); + error(); } -} -class Xor extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "xor" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.xor === "bool") { - return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`]; - } - return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`]; - }; + if (isMat2(a)) { + if (isMat2(b)) return result("mat2"); + if (b === "mat3x2") return result("mat3x2"); + if (b === "mat4x2") return result("mat4x2"); + error(); } -} -class Not extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => aType, outKey: "not" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.not === "bool") { - return [`${outputs.not} = !${inputs.a};`]; - } - return [`${outputs.not} = not(${inputs.a});`]; - }; + if (a === "mat2x3") { + if (isMat2(b)) return result("mat2x3"); + if (b === "mat3x2") return result("mat3"); + if (b === "mat4x2") return result("mat4x3"); + error(); } -} -class LessThan extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThan"), - outKey: "lessThan" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.lessThan === "bool") { - return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`]; - } - return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat2x4") { + if (isMat2(b)) return result("mat2x4"); + if (b === "mat3x2") return result("mat3x4"); + if (b === "mat4x2") return result("mat4"); + error(); } -} -class LessThanEqual extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThanEqual"), - outKey: "lessThanEqual" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.lessThanEqual === "bool") { - return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`]; - } - return [ - `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});` - ]; - }; + if (a === "mat3x2") { + if (b === "mat2x3") return result("mat2"); + if (isMat3(b)) return result("mat3x2"); + if (b === "mat4x3") return result("mat4x2"); + error(); } -} -class GreaterThan extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThan"), - outKey: "greaterThan" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.greaterThan === "bool") { - return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`]; - } - return [ - `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});` - ]; - }; + if (isMat3(a)) { + if (b === "mat2x3") return result("mat2x3"); + if (isMat3(b)) return result("mat3"); + if (b === "mat4x3") return result("mat4x3"); + error(); } -} -class GreaterThanEqual extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThanEqual"), - outKey: "greaterThanEqual" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.greaterThanEqual === "bool") { - return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`]; - } - return [ - `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});` - ]; - }; + if (a === "mat3x4") { + if (b === "mat2x3") return result("mat2x4"); + if (isMat3(b)) return result("mat3x4"); + if (b === "mat4x3") return result("mat4"); + error(); } -} -class Equal extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: equalOutputType, outKey: "equal" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.equal === "bool") { - return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`]; - } - return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat4x2") { + if (b === "mat2x4") return result("mat2"); + if (b === "mat3x4") return result("mat3x2"); + if (isMat4(b)) return result("mat4x2"); + error(); } -} -class NotEqual extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: notEqualOutputType, outKey: "notEqual" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.notEqual === "bool") { - return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`]; - } - return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat4x3") { + if (b === "mat2x4") return result("mat2x3"); + if (b === "mat3x4") return result("mat3"); + if (isMat4(b)) return result("mat4x3"); + error(); } -} -class Any extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => "bool", outKey: "any" }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.any} = any(${inputs.a});`]; - }; + if (isMat4(a)) { + if (b === "mat2x4") return result("mat2x4"); + if (b === "mat3x4") return result("mat3x4"); + if (isMat4(b)) return result("mat4"); + error(); } + throw new Error(`Invalid mul types: ${a}, ${b}`); } -class All extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => "bool", outKey: "all" }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.all} = all(${inputs.a});`]; - }; +function divOutputType(a, b) { + return addOutputType(a, b, "div"); +} +function imodOutputType(a, b) { + if (a === b) return a; + if (a === "int") { + if (isIntType(b)) return b; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (a === "uint") { + if (isUintType(b)) return b; + } else if (b === "uint") { + if (isUintType(a)) return a; } + throw new Error(`Invalid imod types: ${a}, ${b}`); } -class Select extends TrinaryOp { - constructor({ - cond, - t, - f - }) { - super({ - a: cond, - b: t, - c: f, - outKey: "select", - outTypeFunc: (aType, bType, cType) => bType - }); - this.statements = ({ inputs, outputs }) => { - const { a: cond2, b: t2, c: f2 } = inputs; - return [`${outputs.select} = (${cond2}) ? (${t2}) : (${f2});`]; - }; - } +function modOutputType(a, b) { + if (a === b || b === "float") return a; + throw new Error(`Invalid mod types: ${a}, ${b}`); } -function compareOutputType(type, operator) { - if (isScalarType(type)) { - return "bool"; - } - if (type === "ivec2" || type === "uvec2" || type === "vec2") { - return "bvec2"; - } - if (type === "ivec3" || type === "uvec3" || type === "vec3") { - return "bvec3"; - } - if (type === "ivec4" || type === "uvec4" || type === "vec4") { - return "bvec4"; - } - throw new Error(`Invalid ${operator} type: ${type}`); +function modfOutputType(a) { + return a; } -function equalOutputType(type, operator = "equal") { - if (isScalarType(type)) { - return "bool"; +function negOutputType(a) { + return a; +} +function absOutputType(a) { + return a; +} +function signOutputType(a) { + return a; +} +function floorOutputType(a) { + return a; +} +function ceilOutputType(a) { + return a; +} +function truncOutputType(a) { + return a; +} +function roundOutputType(a) { + return a; +} +function fractOutputType(a) { + return a; +} +function powOutputType(a) { + return a; +} +function expOutputType(a) { + return a; +} +function exp2OutputType(a) { + return a; +} +function logOutputType(a) { + return a; +} +function log2OutputType(a) { + return a; +} +function sqrOutputType(a) { + return a; +} +function sqrtOutputType(a) { + return a; +} +function inversesqrtOutputType(a) { + return a; +} +function minOutputType(a, b, operation = "min") { + if (a === b) return a; + if (b === "float") { + if (isFloatType(a)) return a; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (b === "uint") { + if (isUintType(a)) return a; } - if (isBoolType(type)) { - return type; + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); +} +function maxOutputType(a, b) { + return minOutputType(a, b, "max"); +} +function clampOutputType(a, b, _c) { + if (b === "float") { + if (isFloatType(a)) return a; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (b === "uint") { + if (isUintType(a)) return a; } - if (type === "ivec2" || type === "uvec2" || type === "vec2") { - return "bvec2"; + throw new Error(`Invalid clamp types: ${a}, ${b}`); +} +function mixOutputType(a, b, c) { + if (c === a) return a; + if (c === "float") return a; + if (c === "bool" && a === "float") return a; + if (c === "bvec2" && a === "vec2") return a; + if (c === "bvec3" && a === "vec3") return a; + if (c === "bvec4" && a === "vec4") return a; + throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`); +} +function stepOutputType(a, b) { + if (a === b || b === "float") return b; + throw new Error(`Invalid step types: ${a}, ${b}`); +} +function smoothstepOutputType(a, b, c) { + if (a === b) { + if (a === c || a === "float") return c; } - if (type === "ivec3" || type === "uvec3" || type === "vec3") { - return "bvec3"; + throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`); +} +function isNanOutputType(a, operation = "isNan") { + if (a === "float") return "bool"; + if (a === "vec2") return "bvec2"; + if (a === "vec3") return "bvec3"; + if (a === "vec4") return "bvec4"; + throw new Error(`Invalid ${operation} types: ${a}`); +} +function isInfOutputType(a) { + return isNanOutputType(a, "isInf"); +} +const add = (a, b) => new Add({ a, b }); +const sub = (a, b) => new Sub({ a, b }); +const mul = (a, b) => new Mul({ a, b }); +const div = (a, b) => new Div({ a, b }); +const imod = (a, b) => new IMod({ a, b }); +const mod = (a, b) => new Mod({ a, b }); +const modf = (a) => new Modf({ a }).outputs; +const neg = (a) => new Neg({ a }); +const abs = (a) => new Abs({ a }); +const sign = (a) => new Sign({ a }); +const floor = (a) => new Floor({ a }); +const ceil = (a) => new Ceil({ a }); +const trunc = (a) => new Trunc({ a }); +const round = (a) => new Round({ a }); +const fract = (a) => new Fract({ a }); +const pow = (a, b) => new Pow({ a, b }); +const exp = (a) => new Exp({ a }); +const exp2 = (a) => new Exp2({ a }); +const log = (a) => new Log({ a }); +const log2 = (a) => new Log2({ a }); +const sqr = (a) => new Sqr({ a }); +const sqrt = (a) => new Sqrt({ a }); +const inversesqrt = (a) => new InverseSqrt({ a }); +const min = (a, b) => new Min({ a, b }); +const max = (a, b) => new Max({ a, b }); +const clamp = (a, min2, max2) => new Clamp({ a, min: min2, max: max2 }); +const mix = (a, b, t) => new Mix({ a, b, t }); +const step = (edge, x) => new Step({ edge, x }); +const smoothstep = (edge0, edge1, x) => new Smoothstep({ edge0, edge1, x }); +const isNan = (a) => new IsNan({ a }); +const isInf = (a) => new IsInf({ a }); +class Add extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "sum", outTypeFunc: addOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`]; + }; } - if (type === "ivec4" || type === "uvec4" || type === "vec4") { - return "bvec4"; +} +class Sub extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "difference", outTypeFunc: subOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`]; + }; } - throw new Error(`Invalid ${operator} type: ${type}`); } -function notEqualOutputType(type) { - return equalOutputType(type, "notEqual"); +class Mul extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "product", outTypeFunc: mulOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.product} = ${inputs.a} * ${inputs.b};`]; + }; + } } -function compXorOutputType(type) { - if (isBoolType(type)) { - return "bool"; +class Div extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "quotient", outTypeFunc: divOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`]; + }; } - if (isIntType(type)) { - return "int"; +} +class IMod extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "remainder", outTypeFunc: imodOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`]; + }; } - if (isUintType(type)) { - return "uint"; +} +class Mod extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "remainder", outTypeFunc: modOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`]; + }; } - throw new Error(`Invalid compXor type: ${type}`); } -class CompXor extends UnaryOp { +class Modf extends Dyno { constructor({ a }) { - const outType = compXorOutputType(valType(a)); - super({ a, outTypeFunc: (aType) => outType, outKey: "compXor" }); + const inTypes = { a: valType(a) }; + const outType = modfOutputType(inTypes.a); + const outTypes = { + fract: outType, + integer: outType + }; + super({ inTypes, outTypes, inputs: { a } }); this.statements = ({ inputs, outputs }) => { - if (isScalarType(this.outTypes.compXor)) { - return [`${outputs.compXor} = ${inputs.a};`]; - } - const components = isVector2Type(outType) ? ["x", "y"] : isVector3Type(outType) ? ["x", "y", "z"] : ["x", "y", "z", "w"]; - const operands = components.map((c) => `${inputs.a}.${c}`); - const operator = isBoolType(outType) ? "^^" : "^"; - return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`]; + return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`]; }; } } -class Shr extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shr" }); +class Neg extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "neg", outTypeFunc: negOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`]; + return [`${outputs.neg} = -${inputs.a};`]; }; } } -class Shl extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shl" }); +class Abs extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "abs", outTypeFunc: absOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`]; + return [`${outputs.abs} = abs(${inputs.a});`]; }; } } -const bool = (value) => new Bool({ value }); -const int = (value) => new Int({ value }); -const uint = (value) => new Uint({ value }); -const float = (value) => new Float({ value }); -const bvec2 = (value) => new BVec2({ value }); -const bvec3 = (value) => new BVec3({ value }); -const bvec4 = (value) => new BVec4({ value }); -const ivec2 = (value) => new IVec2({ value }); -const ivec3 = (value) => new IVec3({ value }); -const ivec4 = (value) => new IVec4({ value }); -const uvec2 = (value) => new UVec2({ value }); -const uvec3 = (value) => new UVec3({ value }); -const uvec4 = (value) => new UVec4({ value }); -const vec2 = (value) => new Vec2({ value }); -const vec3 = (value) => new Vec3({ value }); -const vec4 = (value) => new Vec4({ value }); -const mat2 = (value) => new Mat2({ value }); -const mat3 = (value) => new Mat3({ value }); -const mat4 = (value) => new Mat4({ value }); -const floatBitsToInt = (value) => new FloatBitsToInt({ value }); -const floatBitsToUint = (value) => new FloatBitsToUint({ value }); -const intBitsToFloat = (value) => new IntBitsToFloat({ value }); -const uintBitsToFloat = (value) => new UintBitsToFloat({ value }); -const packSnorm2x16 = (value) => new PackSnorm2x16({ value }); -const unpackSnorm2x16 = (value) => new UnpackSnorm2x16({ value }); -const packUnorm2x16 = (value) => new PackUnorm2x16({ value }); -const unpackUnorm2x16 = (value) => new UnpackUnorm2x16({ value }); -const packHalf2x16 = (value) => new PackHalf2x16({ value }); -const unpackHalf2x16 = (value) => new UnpackHalf2x16({ value }); -const uintToRgba8 = (value) => new UintToRgba8({ value }); -class SimpleCast extends UnaryOp { - constructor({ - value, - outType, - outKey - }) { - super({ a: value, outTypeFunc: () => outType, outKey }); - this.statements = ({ inputs, outputs }) => [ - `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});` - ]; - } -} -class Bool extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bool", outKey: "bool" }); - } -} -class Int extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "int", outKey: "int" }); - } -} -class Uint extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uint", outKey: "uint" }); - } -} -class Float extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "float", outKey: "float" }); - } -} -class BVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec2", outKey: "bvec2" }); - } -} -class BVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec3", outKey: "bvec3" }); - } -} -class BVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec4", outKey: "bvec4" }); - } -} -class IVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec2", outKey: "ivec2" }); - } -} -class IVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec3", outKey: "ivec3" }); - } -} -class IVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec4", outKey: "ivec4" }); - } -} -class UVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec2", outKey: "uvec2" }); - } -} -class UVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec3", outKey: "uvec3" }); - } -} -class UVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec4", outKey: "uvec4" }); - } -} -class Vec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec2", outKey: "vec2" }); - } -} -class Vec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec3", outKey: "vec3" }); - } -} -class Vec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec4", outKey: "vec4" }); - } -} -class Mat2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat2", outKey: "mat2" }); - } -} -class Mat3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat3", outKey: "mat3" }); - } -} -class Mat4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat4", outKey: "mat4" }); +class Sign extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "sign", outTypeFunc: signOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sign} = sign(${inputs.a});`]; + }; } } -class FloatBitsToInt extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "int", outTypeFunc: () => "int" }); +class Floor extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "floor", outTypeFunc: floorOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.int} = floatBitsToInt(${inputs.a});`]; + return [`${outputs.floor} = floor(${inputs.a});`]; }; } } -class FloatBitsToUint extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Ceil extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "ceil", outTypeFunc: ceilOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = floatBitsToUint(${inputs.a});`]; + return [`${outputs.ceil} = ceil(${inputs.a});`]; }; } } -class IntBitsToFloat extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "float", outTypeFunc: () => "float" }); +class Trunc extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "trunc", outTypeFunc: truncOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.float} = intBitsToFloat(${inputs.a});`]; + return [`${outputs.trunc} = trunc(${inputs.a});`]; }; } } -class UintBitsToFloat extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "float", outTypeFunc: () => "float" }); +class Round extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "round", outTypeFunc: roundOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.float} = uintBitsToFloat(${inputs.a});`]; + return [`${outputs.round} = round(${inputs.a});`]; }; } } -class PackSnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Fract extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "fract", outTypeFunc: fractOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packSnorm2x16(${inputs.a});`]; + return [`${outputs.fract} = fract(${inputs.a});`]; }; } } -class UnpackSnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Pow extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "power", outTypeFunc: powOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`]; + return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`]; }; } } -class PackUnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Exp extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "exp", outTypeFunc: expOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packUnorm2x16(${inputs.a});`]; + return [`${outputs.exp} = exp(${inputs.a});`]; }; } } -class UnpackUnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Exp2 extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "exp2", outTypeFunc: exp2OutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`]; + return [`${outputs.exp2} = exp2(${inputs.a});`]; }; } } -class PackHalf2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Log extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "log", outTypeFunc: logOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packHalf2x16(${inputs.a});`]; + return [`${outputs.log} = log(${inputs.a});`]; }; } } -class UnpackHalf2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Log2 extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "log2", outTypeFunc: log2OutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`]; + return [`${outputs.log2} = log2(${inputs.a});`]; }; } } -class UintToRgba8 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "rgba8", outTypeFunc: () => "vec4" }); +class Sqr extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "sqr", outTypeFunc: sqrOutputType }); this.statements = ({ inputs, outputs }) => { - return [ - `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`, - `${outputs.rgba8} = vec4(uRgba) / 255.0;` - ]; + return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`]; }; } } -const length = (a) => new Length({ a }); -const distance = (a, b) => new Distance({ a, b }); -const dot = (a, b) => new Dot({ a, b }); -const cross = (a, b) => new Cross({ a, b }); -const normalize = (a) => new Normalize({ a }); -const faceforward = (a, b, c) => new FaceForward({ a, b, c }); -const reflectVec = (incident, normal) => new ReflectVec({ incident, normal }); -const refractVec = (incident, normal, eta) => new RefractVec({ incident, normal, eta }); -const split = (vector) => new Split({ vector }); -const combine = ({ - vector, - vectorType, - x, - y, - z, - w, - r, - g, - b, - a -}) => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a }); -const projectH = (a) => new ProjectH({ a }); -const extendVec = (a, b) => new ExtendVec({ a, b }); -const swizzle = (a, select2) => new Swizzle({ vector: a, select: select2 }); -const compMult = (a, b) => new CompMult({ a, b }); -const outer = (a, b) => new Outer({ a, b }); -const transpose = (a) => new Transpose({ a }); -const determinant = (a) => new Determinant({ a }); -const inverse = (a) => new Inverse({ a }); -class Length extends UnaryOp { +class Sqrt extends UnaryOp { constructor({ a }) { - super({ a, outTypeFunc: (aType) => "float", outKey: "length" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.length} = length(${inputs.a});` - ]; + super({ a, outKey: "sqrt", outTypeFunc: sqrtOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sqrt} = sqrt(${inputs.a});`]; + }; } } -class Distance extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "distance", outTypeFunc: (aType, bType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.distance} = distance(${inputs.a}, ${inputs.b});` - ]; +class InverseSqrt extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "inversesqrt", outTypeFunc: inversesqrtOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`]; + }; } } -class Dot extends BinaryOp { +class Min extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "dot", outTypeFunc: (aType, bType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.dot} = dot(${inputs.a}, ${inputs.b});` - ]; + super({ a, b, outKey: "min", outTypeFunc: minOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`]; + }; } } -class Cross extends BinaryOp { +class Max extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "cross", outTypeFunc: (aType, bType) => "vec3" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cross} = cross(${inputs.a}, ${inputs.b});` - ]; - } -} -class Normalize extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => aType, outKey: "normalize" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.normalize} = normalize(${inputs.a});` - ]; - } -} -function projectHOutputType(type) { - if (type === "vec3") { - return "vec2"; - } - if (type === "vec4") { - return "vec3"; + super({ a, b, outKey: "max", outTypeFunc: maxOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`]; + }; } - throw new Error("Invalid type"); } -class ProjectH extends UnaryOp { - constructor({ a }) { +class Clamp extends TrinaryOp { + constructor({ + a, + min: min2, + max: max2 + }) { super({ a, - outTypeFunc: (aType) => projectHOutputType(aType), - outKey: "projected" + b: min2, + c: max2, + outKey: "clamp", + outTypeFunc: clampOutputType }); this.statements = ({ inputs, outputs }) => { - if (this.inTypes.a === "vec3") { - return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`]; - } - if (this.inTypes.a === "vec4") { - return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`]; - } - throw new Error("Invalid type"); + const { a: a2, b: min3, c: max3 } = inputs; + return [`${outputs.clamp} = clamp(${a2}, ${min3}, ${max3});`]; }; } } -function extendVecOutputType(type) { - if (type === "float") return "vec2"; - if (type === "vec2") return "vec3"; - if (type === "vec3") return "vec4"; - throw new Error("Invalid type"); -} -class ExtendVec extends BinaryOp { - constructor({ a, b }) { - const type = valType(a); - const outType = extendVecOutputType(type); - super({ a, b, outKey: "extend", outTypeFunc: () => outType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});` - ]; - } -} -class FaceForward extends TrinaryOp { - constructor({ a, b, c }) { - super({ - a, - b, - c, - outKey: "forward", - outTypeFunc: (aType, bType, cType) => aType - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});` - ]; +class Mix extends TrinaryOp { + constructor({ a, b, t }) { + super({ a, b, c: t, outKey: "mix", outTypeFunc: mixOutputType }); + this.statements = ({ inputs, outputs }) => { + const { a: a2, b: b22, c: t2 } = inputs; + return [`${outputs.mix} = mix(${a2}, ${b22}, ${t2});`]; + }; } } -class ReflectVec extends BinaryOp { - constructor({ - incident, - normal - }) { +class Step extends BinaryOp { + constructor({ edge, x }) { super({ - a: incident, - b: normal, - outKey: "reflection", - outTypeFunc: (aType, bType) => aType + a: edge, + b: x, + outKey: "step", + outTypeFunc: stepOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});` - ]; + this.statements = ({ inputs, outputs }) => { + const { a: edge2, b: x2 } = inputs; + return [`${outputs.step} = step(${edge2}, ${x2});`]; + }; } } -class RefractVec extends TrinaryOp { +class Smoothstep extends TrinaryOp { constructor({ - incident, - normal, - eta + edge0, + edge1, + x }) { super({ - a: incident, - b: normal, - c: eta, - outKey: "refraction", - outTypeFunc: (aType, bType, cType) => aType + a: edge0, + b: edge1, + c: x, + outKey: "smoothstep", + outTypeFunc: smoothstepOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});` - ]; + this.statements = ({ inputs, outputs }) => { + const { a: edge02, b: edge12, c: x2 } = inputs; + return [`${outputs.smoothstep} = smoothstep(${edge02}, ${edge12}, ${x2});`]; + }; } } -class CompMult extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "product", outTypeFunc: (aType, bType) => aType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.product} = matrixCompMult(${a}, ${b});` - ]; +class IsNan extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "isNan", outTypeFunc: isNanOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.isNan} = isNan(${inputs.a});`]; + }; } } -function outerOutputType(aType, bType) { - if (aType === "vec2") { - if (bType === "vec2") return "mat2"; - if (bType === "vec3") return "mat3x2"; - if (bType === "vec4") return "mat4x2"; - } - if (aType === "vec3") { - if (bType === "vec2") return "mat2x3"; - if (bType === "vec3") return "mat3"; - if (bType === "vec4") return "mat4x3"; - } - if (aType === "vec4") { - if (bType === "vec2") return "mat2x4"; - if (bType === "vec3") return "mat3x4"; - if (bType === "vec4") return "mat4"; +class IsInf extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "isInf", outTypeFunc: isInfOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.isInf} = isInf(${inputs.a});`]; + }; } - throw new Error(`Invalid outer type: ${aType}, ${bType}`); } -class Outer extends BinaryOp { +const and = (a, b) => new And({ a, b }); +const or = (a, b) => new Or({ a, b }); +const xor = (a, b) => new Xor({ a, b }); +const not = (a) => new Not({ a }); +const shr = (a, b) => new Shr({ a, b }); +const shl = (a, b) => new Shl({ a, b }); +const lessThan = (a, b) => new LessThan({ a, b }); +const lessThanEqual = (a, b) => new LessThanEqual({ a, b }); +const greaterThan = (a, b) => new GreaterThan({ a, b }); +const greaterThanEqual = (a, b) => new GreaterThanEqual({ a, b }); +const equal = (a, b) => new Equal({ a, b }); +const notEqual = (a, b) => new NotEqual({ a, b }); +const any = (a) => new Any({ a }); +const all = (a) => new All({ a }); +const select = (cond, t, f) => new Select({ cond, t, f }); +const compXor = (a) => new CompXor({ a }); +class And extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "outer", outTypeFunc: outerOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});` - ]; + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "and" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.and === "bool") { + return [`${outputs.and} = ${inputs.a} && ${inputs.b};`]; + } + return [`${outputs.and} = ${inputs.a} & ${inputs.b};`]; + }; } } -function transposeOutputType(type) { - if (type === "mat2") return "mat2"; - if (type === "mat3") return "mat3"; - if (type === "mat4") return "mat4"; - if (type === "mat2x2") return "mat2x2"; - if (type === "mat2x3") return "mat3x2"; - if (type === "mat2x4") return "mat4x2"; - if (type === "mat3x2") return "mat2x3"; - if (type === "mat3x3") return "mat3x3"; - if (type === "mat3x4") return "mat4x3"; - if (type === "mat4x2") return "mat2x4"; - if (type === "mat4x3") return "mat3x4"; - if (type === "mat4x4") return "mat4x4"; - throw new Error(`Invalid transpose type: ${type}`); +class Or extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "or" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.or === "bool") { + return [`${outputs.or} = ${inputs.a} || ${inputs.b};`]; + } + return [`${outputs.or} = ${inputs.a} | ${inputs.b};`]; + }; + } } -class Transpose extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "transpose", outTypeFunc: transposeOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.transpose} = transpose(${inputs.a});` - ]; +class Xor extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "xor" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.xor === "bool") { + return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`]; + } + return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`]; + }; } } -class Determinant extends UnaryOp { +class Not extends UnaryOp { constructor({ a }) { - super({ a, outKey: "det", outTypeFunc: (aType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.det} = determinant(${inputs.a});` - ]; + super({ a, outTypeFunc: (aType) => aType, outKey: "not" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.not === "bool") { + return [`${outputs.not} = !${inputs.a};`]; + } + return [`${outputs.not} = not(${inputs.a});`]; + }; } } -class Inverse extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "inverse", outTypeFunc: (aType) => aType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.inverse} = inverse(${a});` - ]; +class LessThan extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThan"), + outKey: "lessThan" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.lessThan === "bool") { + return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`]; + } + return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`]; + }; } } -function splitOutTypes(type) { - const result = (value) => value; - switch (type) { - case "vec2": - return result({ x: "float", y: "float", r: "float", g: "float" }); - case "vec3": - return result({ - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }); - case "vec4": - return result({ - x: "float", - y: "float", - z: "float", - w: "float", - r: "float", - g: "float", - b: "float", - a: "float" - }); - case "ivec2": - return result({ x: "int", y: "int", r: "int", g: "int" }); - case "ivec3": - return result({ - x: "int", - y: "int", - z: "int", - r: "int", - g: "int", - b: "int" - }); - case "ivec4": - return result({ - x: "int", - y: "int", - z: "int", - w: "int", - r: "int", - g: "int", - b: "int", - a: "int" - }); - case "uvec2": - return result({ x: "uint", y: "uint", r: "uint", g: "uint" }); - case "uvec3": - return result({ - x: "uint", - y: "uint", - z: "uint", - r: "uint", - g: "uint", - b: "uint" - }); - case "uvec4": - return result({ - x: "uint", - y: "uint", - z: "uint", - w: "uint", - r: "uint", - g: "uint", - b: "uint", - a: "uint" - }); - default: - throw new Error(`Invalid vector type: ${type}`); +class LessThanEqual extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThanEqual"), + outKey: "lessThanEqual" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.lessThanEqual === "bool") { + return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`]; + } + return [ + `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});` + ]; + }; } } -class Split extends Dyno { - constructor({ vector }) { - const type = valType(vector); - const inTypes = { vector: type }; - const outTypes = splitOutTypes(inTypes.vector); - super({ inTypes, outTypes, inputs: { vector } }); +class GreaterThan extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThan"), + outKey: "greaterThan" + }); this.statements = ({ inputs, outputs }) => { - const { x, y, z, w, r, g, b, a } = outputs; - const { vector: vector2 } = inputs; + if (this.outTypes.greaterThan === "bool") { + return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`]; + } return [ - x ? `${x} = ${vector2}.x;` : null, - y ? `${y} = ${vector2}.y;` : null, - z ? `${z} = ${vector2}.z;` : null, - w ? `${w} = ${vector2}.w;` : null, - r ? `${r} = ${vector2}.r;` : null, - g ? `${g} = ${vector2}.g;` : null, - b ? `${b} = ${vector2}.b;` : null, - a ? `${a} = ${vector2}.a;` : null - ].filter(Boolean); + `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});` + ]; }; } } -class Combine extends Dyno { - constructor({ - vector, - vectorType, - x, - y, - z, - w, - r, - g, - b, - a - }) { - if (!vector && !vectorType) { - throw new Error("Either vector or vectorType must be provided"); - } - const vType = vectorType ?? valType(vector); - const elType = vectorElementType(vType); - const dim = vectorDim(vType); - const inTypes = { - vector: vType, - x: elType, - y: elType, - r: elType, - g: elType - }; - const inputs = { vector, x, y, r, g }; - if (dim >= 3) { - Object.assign(inTypes, { z: elType, b: elType }); - Object.assign(inputs, { z, b }); - } - if (dim >= 4) { - Object.assign(inTypes, { w: elType, a: elType }); - Object.assign(inputs, { w, a }); - } - super({ inTypes, outTypes: { vector: vType }, inputs }); - this.statements = ({ inputs: inputs2, outputs }) => { - const { vector: vector2 } = outputs; - const { - vector: input, - x: x2, - y: y2, - z: z2, - w: w2, - r: r2, - g: g2, - b: b22, - a: a2 - } = inputs2; - const statements = [ - `${vector2}.x = ${x2 ?? r2 ?? (input ? `${input}.x` : literalZero(elType))};`, - `${vector2}.y = ${y2 ?? g2 ?? (input ? `${input}.y` : literalZero(elType))};` - ]; - if (dim >= 3) - statements.push( - `${vector2}.z = ${z2 ?? b22 ?? (input ? `${input}.z` : literalZero(elType))};` - ); - if (dim >= 4) - statements.push( - `${vector2}.w = ${w2 ?? a2 ?? (input ? `${input}.w` : literalZero(elType))};` - ); - return statements; +class GreaterThanEqual extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThanEqual"), + outKey: "greaterThanEqual" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.greaterThanEqual === "bool") { + return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`]; + } + return [ + `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});` + ]; }; } - dynoOut() { - return new DynoOutput( - this, - "vector" - ); +} +class Equal extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: equalOutputType, outKey: "equal" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.equal === "bool") { + return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`]; + } + return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`]; + }; } } -function swizzleOutputType(type, swizzle2) { - let result = null; - if (isFloatType(type)) { - result = swizzle2.length === 1 ? "float" : swizzle2.length === 2 ? "vec2" : swizzle2.length === 3 ? "vec3" : swizzle2.length === 4 ? "vec4" : null; - } else if (isIntType(type)) { - result = swizzle2.length === 1 ? "int" : swizzle2.length === 2 ? "ivec2" : swizzle2.length === 3 ? "ivec3" : swizzle2.length === 4 ? "ivec4" : null; - } else if (isUintType(type)) { - result = swizzle2.length === 1 ? "uint" : swizzle2.length === 2 ? "uvec2" : swizzle2.length === 3 ? "uvec3" : swizzle2.length === 4 ? "uvec4" : null; +class NotEqual extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: notEqualOutputType, outKey: "notEqual" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.notEqual === "bool") { + return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`]; + } + return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`]; + }; } - if (result == null) { - throw new Error(`Invalid swizzle: ${swizzle2}`); +} +class Any extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "bool", outKey: "any" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.any} = any(${inputs.a});`]; + }; } - return result; } -class Swizzle extends UnaryOp { - constructor({ vector, select: select2 }) { - super({ - a: vector, - outKey: "swizzle", - outTypeFunc: (aType) => swizzleOutputType(aType, select2) - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.swizzle} = ${inputs.a}.${select2};` - ]; +class All extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "bool", outKey: "all" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.all} = all(${inputs.a});`]; + }; } } -const remapIndex = (index, from, to) => { - return new DynoRemapIndex({ index, from, to }); -}; -const pcgMix = (value) => { - return new PcgMix({ value }); -}; -const pcgNext = (state) => { - return new PcgNext({ state }); -}; -const pcgHash = (state) => { - return new PcgHash({ state }); -}; -const hash = (value) => { - return new Hash({ value }); -}; -const hash2 = (value) => { - return new Hash2({ value }); -}; -const hash3 = (value) => { - return new Hash3({ value }); -}; -const hash4 = (value) => { - return new Hash4({ value }); -}; -const hashFloat = (value) => { - return new HashFloat({ value }); -}; -const hashVec2 = (value) => { - return new HashVec2({ value }); -}; -const hashVec3 = (value) => { - return new HashVec3({ value }); -}; -const hashVec4 = (value) => { - return new HashVec4({ value }); -}; -const normalizedDepth = (z, zNear, zFar) => { - return new NormalizedDepth({ z, zNear, zFar }).outputs.depth; -}; -const debugColorHue = (index) => { - return new DebugColorHue({ index }); -}; -class DynoRemapIndex extends Dyno { +class Select extends TrinaryOp { constructor({ - from, - to, - index + cond, + t, + f }) { super({ - inTypes: { from: "int", to: "int", index: "int" }, - outTypes: { index: "int" }, - inputs: { from, to, index }, - statements: ({ inputs, outputs }) => { - return [ - `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};` - ]; - } + a: cond, + b: t, + c: f, + outKey: "select", + outTypeFunc: (aType, bType, cType) => bType }); - } - dynoOut() { - return new DynoOutput(this, "index"); + this.statements = ({ inputs, outputs }) => { + const { a: cond2, b: t2, c: f2 } = inputs; + return [`${outputs.select} = (${cond2}) ? (${t2}) : (${f2});`]; + }; } } -class PcgNext extends Dyno { - constructor({ state }) { - const type = valType(state); - super({ - inTypes: { state: type }, - outTypes: { state: "uint" }, - inputs: { state }, - globals: () => [ - unindent(` - uint pcg_next(uint state) { - return state * 747796405u + 2891336453u; - } - `) - ], - statements: ({ inputs, outputs }) => { - const toUint = type === "uint" ? `${inputs.state}` : type === "int" ? `uint(${inputs.state})` : `floatBitsToUint(${inputs.state})`; - return [`${outputs.state} = pcg_next(${toUint});`]; - } - }); +function compareOutputType(type, operator) { + if (isScalarType(type)) { + return "bool"; } - dynoOut() { - return new DynoOutput(this, "state"); + if (type === "ivec2" || type === "uvec2" || type === "vec2") { + return "bvec2"; } -} -class PcgHash extends Dyno { - constructor({ state }) { - super({ - inTypes: { state: "uint" }, - outTypes: { hash: "uint" }, - inputs: { state }, - globals: () => [ - unindent(` - uint pcg_hash(uint state) { - uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; - return (hash >> 22u) ^ hash; - } - `) - ], - statements: ({ inputs, outputs }) => [ - `${outputs.hash} = pcg_hash(${inputs.state});` - ] - }); + if (type === "ivec3" || type === "uvec3" || type === "vec3") { + return "bvec3"; } - dynoOut() { - return new DynoOutput(this, "hash"); + if (type === "ivec4" || type === "uvec4" || type === "vec4") { + return "bvec4"; } + throw new Error(`Invalid ${operator} type: ${type}`); } -class PcgMix extends Dyno { - constructor({ value }) { - const type = valType(value); - const tempType = sameSizeUvec(type); - super({ - inTypes: { value: type }, - outTypes: { state: "uint" }, - inputs: { value }, - globals: () => [ - unindent(` - uint pcg_mix(uint value) { - return value; - } - uint pcg_mix(uvec2 value) { - return value.x + 0x9e3779b9u * value.y; - } - uint pcg_mix(uvec3 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; - } - uint pcg_mix(uvec4 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; - } - `) - ], - statements: ({ inputs, outputs }) => { - const toUvec = isUintType(type) ? `${inputs.value}` : isIntType(type) ? `${tempType}(${inputs.value})` : `floatBitsToUint(${inputs.value})`; - return [ - `${tempType} bits = ${toUvec};`, - `${outputs.state} = pcg_mix(bits);` - ]; - } - }); +function equalOutputType(type, operator = "equal") { + if (isScalarType(type)) { + return "bool"; } - dynoOut() { - return new DynoOutput(this, "state"); + if (isBoolType(type)) { + return type; + } + if (type === "ivec2" || type === "uvec2" || type === "vec2") { + return "bvec2"; + } + if (type === "ivec3" || type === "uvec3" || type === "vec3") { + return "bvec3"; + } + if (type === "ivec4" || type === "uvec4" || type === "vec4") { + return "bvec4"; } + throw new Error(`Invalid ${operator} type: ${type}`); } -class Hash extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uint" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - return new PcgHash({ state }).outputs; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); - } +function notEqualOutputType(type) { + return equalOutputType(type, "notEqual"); } -class Hash2 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec2" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec2", x, y }) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +function compXorOutputType(type) { + if (isBoolType(type)) { + return "bool"; } -} -class Hash3 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec3" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const z = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec3", x, y, z }) }; - } - }); + if (isIntType(type)) { + return "int"; } - dynoOut() { - return new DynoOutput(this, "hash"); + if (isUintType(type)) { + return "uint"; } + throw new Error(`Invalid compXor type: ${type}`); } -class Hash4 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec4" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const z = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const w = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec4", x, y, z, w }) }; +class CompXor extends UnaryOp { + constructor({ a }) { + const outType = compXorOutputType(valType(a)); + super({ a, outTypeFunc: (aType) => outType, outKey: "compXor" }); + this.statements = ({ inputs, outputs }) => { + if (isScalarType(this.outTypes.compXor)) { + return [`${outputs.compXor} = ${inputs.a};`]; } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); + const components = isVector2Type(outType) ? ["x", "y"] : isVector3Type(outType) ? ["x", "y", "z"] : ["x", "y", "z", "w"]; + const operands = components.map((c) => `${inputs.a}.${c}`); + const operator = isBoolType(outType) ? "^^" : "^"; + return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`]; + }; } } -class HashFloat extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "float" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const word = hash(value2); - return { hash: mul(float(word), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +class Shr extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shr" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`]; + }; } } -class HashVec2 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec2" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash2(value2); - return { hash: mul(vec2(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +class Shl extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shl" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`]; + }; } } -class HashVec3 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec3" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash3(value2); - return { hash: mul(vec3(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +const bool = (value) => new Bool({ value }); +const int = (value) => new Int({ value }); +const uint = (value) => new Uint({ value }); +const float = (value) => new Float({ value }); +const bvec2 = (value) => new BVec2({ value }); +const bvec3 = (value) => new BVec3({ value }); +const bvec4 = (value) => new BVec4({ value }); +const ivec2 = (value) => new IVec2({ value }); +const ivec3 = (value) => new IVec3({ value }); +const ivec4 = (value) => new IVec4({ value }); +const uvec2 = (value) => new UVec2({ value }); +const uvec3 = (value) => new UVec3({ value }); +const uvec4 = (value) => new UVec4({ value }); +const vec2 = (value) => new Vec2({ value }); +const vec3 = (value) => new Vec3({ value }); +const vec4 = (value) => new Vec4({ value }); +const mat2 = (value) => new Mat2({ value }); +const mat3 = (value) => new Mat3({ value }); +const mat4 = (value) => new Mat4({ value }); +const floatBitsToInt = (value) => new FloatBitsToInt({ value }); +const floatBitsToUint = (value) => new FloatBitsToUint({ value }); +const intBitsToFloat = (value) => new IntBitsToFloat({ value }); +const uintBitsToFloat = (value) => new UintBitsToFloat({ value }); +const packSnorm2x16 = (value) => new PackSnorm2x16({ value }); +const unpackSnorm2x16 = (value) => new UnpackSnorm2x16({ value }); +const packUnorm2x16 = (value) => new PackUnorm2x16({ value }); +const unpackUnorm2x16 = (value) => new UnpackUnorm2x16({ value }); +const packHalf2x16 = (value) => new PackHalf2x16({ value }); +const unpackHalf2x16 = (value) => new UnpackHalf2x16({ value }); +const uintToRgba8 = (value) => new UintToRgba8({ value }); +class SimpleCast extends UnaryOp { + constructor({ + value, + outType, + outKey + }) { + super({ a: value, outTypeFunc: () => outType, outKey }); + this.statements = ({ inputs, outputs }) => [ + `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});` + ]; } } -class HashVec4 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec4" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash4(value2); - return { hash: mul(vec4(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); +class Bool extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bool", outKey: "bool" }); } - dynoOut() { - return new DynoOutput(this, "hash"); +} +class Int extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "int", outKey: "int" }); } } -class NormalizedDepth extends Dyno { +class Uint extends SimpleCast { constructor({ - z, - zNear, - zFar + value }) { - super({ - inTypes: { z: "float", zNear: "float", zFar: "float" }, - outTypes: { depth: "float" }, - inputs: { z, zNear, zFar }, - statements: ({ inputs, outputs }) => [ - `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`, - `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));` - ] - }); + super({ value, outType: "uint", outKey: "uint" }); } - dynoOut() { - return new DynoOutput(this, "depth"); +} +class Float extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "float", outKey: "float" }); } } -class DebugColorHue extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { color: "vec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => [ - `${outputs.color} = debugColorHue(uint(${inputs.index}));` - ] - }); +class BVec2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bvec2", outKey: "bvec2" }); } - dynoOut() { - return new DynoOutput(this, "color"); +} +class BVec3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bvec3", outKey: "bvec3" }); } } -const transformPos = (position, { - scale, - scales, - rotate, - translate -}) => { - return new TransformPosition({ position, scale, scales, rotate, translate }).outputs.position; -}; -const transformDir = (dir, { - scale, - scales, - rotate -}) => { - return new TransformDir({ dir, scale, scales, rotate }).outputs.dir; -}; -const transformQuat = (quaternion, { rotate }) => { - return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion; -}; -class TransformPosition extends Dyno { +class BVec4 extends SimpleCast { constructor({ - position, - scale, - scales, - rotate, - translate + value }) { - super({ - inTypes: { - position: "vec3", - scale: "float", - scales: "vec3", - rotate: "vec4", - translate: "vec3" - }, - outTypes: { position: "vec3" }, - inputs: { position, scale, scales, rotate, translate }, - statements: ({ inputs, outputs }) => { - const { position: position2 } = outputs; - if (!position2) { - return []; - } - const { scale: scale2, scales: scales2, rotate: rotate2, translate: translate2 } = inputs; - return [ - `${position2} = ${inputs.position ?? "vec3(0.0, 0.0, 0.0)"};`, - !scale2 ? null : `${position2} *= ${scale2};`, - !scales2 ? null : `${position2} *= ${scales2};`, - !rotate2 ? null : `${position2} = quatVec(${rotate2}, ${position2});`, - !translate2 ? null : `${position2} += ${translate2};` - ].filter(Boolean); - } - }); + super({ value, outType: "bvec4", outKey: "bvec4" }); } } -class TransformDir extends Dyno { +class IVec2 extends SimpleCast { constructor({ - dir, - scale, - scales, - rotate + value }) { - super({ - inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, - outTypes: { dir: "vec3" }, - inputs: { dir, scale, scales, rotate }, - statements: ({ inputs, outputs }) => { - const { dir: dir2 } = outputs; - if (!dir2) { - return []; - } - const { scale: scale2, scales: scales2, rotate: rotate2 } = inputs; - return [ - `${dir2} = ${inputs.dir ?? "vec3(0.0, 0.0, 0.0)"};`, - !scale2 ? null : `${dir2} *= ${scale2};`, - !scales2 ? null : `${dir2} *= ${scales2};`, - !rotate2 ? null : `${dir2} = quatVec(${rotate2}, ${dir2});` - ].filter(Boolean); - } - }); + super({ value, outType: "ivec2", outKey: "ivec2" }); } } -class TransformQuaternion extends Dyno { +class IVec3 extends SimpleCast { constructor({ - quaternion, - rotate + value }) { - super({ - inTypes: { quaternion: "vec4", rotate: "vec4" }, - outTypes: { quaternion: "vec4" }, - inputs: { quaternion, rotate }, - statements: ({ inputs, outputs }) => { - const { quaternion: quaternion2 } = outputs; - if (!quaternion2) { - return []; - } - return [ - `${quaternion2} = ${inputs.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, - !rotate ? null : `${quaternion2} = quatQuat(${inputs.rotate}, ${quaternion2});` - ].filter(Boolean); - } - }); + super({ value, outType: "ivec3", outKey: "ivec3" }); } } -const dynoIf = () => { - throw new Error("Not implemented"); -}; -const dynoSwitch = () => { - throw new Error("Not implemented"); -}; -const dynoFor = () => { - throw new Error("Not implemented"); -}; -const comment = () => { - throw new Error("Not implemented"); -}; -const arrayIndex = () => { - throw new Error("Not implemented"); -}; -const arrayLength = () => { - throw new Error("Not implemented"); -}; -const textureSize = (texture2, lod) => new TextureSize({ texture: texture2, lod }); -const texture = (texture2, coord, bias) => new Texture({ texture: texture2, coord, bias }); -const texelFetch = (texture2, coord, lod) => new TexelFetch({ texture: texture2, coord, lod }); -class TextureSize extends Dyno { - constructor({ texture: texture2, lod }) { - const textureType = valType(texture2); - super({ - inTypes: { texture: textureType, lod: "int" }, - outTypes: { size: textureSizeType(textureType) }, - inputs: { texture: texture2, lod }, - statements: ({ inputs, outputs }) => [ - `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? "0"});` - ] - }); +class IVec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "ivec4", outKey: "ivec4" }); } - dynoOut() { - return new DynoOutput(this, "size"); +} +class UVec2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "uvec2", outKey: "uvec2" }); } } -class Texture extends Dyno { +class UVec3 extends SimpleCast { constructor({ - texture: texture2, - coord, - bias + value }) { - const textureType = valType(texture2); - super({ - inTypes: { - texture: textureType, - coord: textureCoordType(textureType), - bias: "float" - }, - outTypes: { sample: textureReturnType(textureType) }, - inputs: { texture: texture2, coord, bias }, - statements: ({ inputs, outputs }) => [ - `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : ""});` - ] - }); + super({ value, outType: "uvec3", outKey: "uvec3" }); } - dynoOut() { - return new DynoOutput(this, "sample"); +} +class UVec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "uvec4", outKey: "uvec4" }); } } -class TexelFetch extends Dyno { +class Vec2 extends SimpleCast { constructor({ - texture: texture2, - coord, - lod + value }) { - const textureType = valType(texture2); - super({ - inTypes: { - texture: textureType, - coord: textureSizeType(textureType), - lod: "int" - }, - outTypes: { texel: textureReturnType(textureType) }, - inputs: { texture: texture2, coord, lod }, - statements: ({ inputs, outputs }) => [ - `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? "0"});` - ] - }); + super({ value, outType: "vec2", outKey: "vec2" }); } - dynoOut() { - return new DynoOutput(this, "texel"); +} +class Vec3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "vec3", outKey: "vec3" }); } } -function textureSizeType(textureType) { - switch (textureType) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DShadow": - case "samplerCubeShadow": - return "ivec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DArrayShadow": - return "ivec3"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Vec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "vec4", outKey: "vec4" }); } } -function textureCoordType(textureType) { - switch (textureType) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - return "vec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DShadow": - return "vec3"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "vec4"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Mat2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat2", outKey: "mat2" }); } } -function textureReturnType(textureType) { - switch (textureType) { - case "sampler2D": - case "sampler2DArray": - case "sampler3D": - case "samplerCube": - case "sampler2DShadow": - return "vec4"; - case "usampler2D": - case "usampler2DArray": - case "usampler3D": - case "usamplerCube": - return "uvec4"; - case "isampler2D": - case "isampler2DArray": - case "isampler3D": - case "isamplerCube": - return "ivec4"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "float"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Mat3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat3", outKey: "mat3" }); } } -const radians = (degrees2) => new Radians({ degrees: degrees2 }); -const degrees = (radians2) => new Degrees({ radians: radians2 }); -const sin = (radians2) => new Sin({ radians: radians2 }); -const cos = (radians2) => new Cos({ radians: radians2 }); -const tan = (radians2) => new Tan({ radians: radians2 }); -const asin = (sin2) => new Asin({ sin: sin2 }); -const acos = (cos2) => new Acos({ cos: cos2 }); -const atan = (tan2) => new Atan({ tan: tan2 }); -const atan2 = (y, x) => new Atan2({ y, x }); -const sinh = (x) => new Sinh({ x }); -const cosh = (x) => new Cosh({ x }); -const tanh = (x) => new Tanh({ x }); -const asinh = (x) => new Asinh({ x }); -const acosh = (x) => new Acosh({ x }); -const atanh = (x) => new Atanh({ x }); -class Radians extends UnaryOp { - constructor({ degrees: degrees2 }) { - super({ a: degrees2, outTypeFunc: (aType) => aType, outKey: "radians" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.radians} = radians(${inputs.a});` - ]; +class Mat4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat4", outKey: "mat4" }); } } -class Degrees extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "degrees" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.degrees} = degrees(${inputs.a});` - ]; +class FloatBitsToInt extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "int", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.int} = floatBitsToInt(${inputs.a});`]; + }; } } -class Sin extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "sin" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.sin} = sin(${inputs.a});` - ]; +class FloatBitsToUint extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = floatBitsToUint(${inputs.a});`]; + }; } } -class Cos extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "cos" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cos} = cos(${inputs.a});` - ]; +class IntBitsToFloat extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "float", outTypeFunc: () => "float" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.float} = intBitsToFloat(${inputs.a});`]; + }; } } -class Tan extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "tan" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.tan} = tan(${inputs.a});` - ]; +class UintBitsToFloat extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "float", outTypeFunc: () => "float" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.float} = uintBitsToFloat(${inputs.a});`]; + }; } } -class Asin extends UnaryOp { - constructor({ sin: sin2 }) { - super({ a: sin2, outTypeFunc: (aType) => aType, outKey: "asin" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.asin} = asin(${inputs.a});` - ]; +class PackSnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packSnorm2x16(${inputs.a});`]; + }; } } -class Acos extends UnaryOp { - constructor({ cos: cos2 }) { - super({ a: cos2, outTypeFunc: (aType) => aType, outKey: "acos" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.acos} = acos(${inputs.a});` - ]; +class UnpackSnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`]; + }; } } -class Atan extends UnaryOp { - constructor({ tan: tan2 }) { - super({ a: tan2, outTypeFunc: (aType) => aType, outKey: "atan" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.atan} = atan(${inputs.a});` - ]; +class PackUnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packUnorm2x16(${inputs.a});`]; + }; } } -class Atan2 extends BinaryOp { - constructor({ y, x }) { - super({ - a: y, - b: x, - outTypeFunc: (aType, bType) => aType, - outKey: "atan2" - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});` - ]; +class UnpackUnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`]; + }; } } -class Sinh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "sinh" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.sinh} = sinh(${inputs.a});` - ]; +class PackHalf2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packHalf2x16(${inputs.a});`]; + }; } } -class Cosh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "cosh" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cosh} = cosh(${inputs.a});` - ]; +class UnpackHalf2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`]; + }; } } -class Tanh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "tanh" }); +class UintToRgba8 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "rgba8", outTypeFunc: () => "vec4" }); + this.statements = ({ inputs, outputs }) => { + return [ + `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`, + `${outputs.rgba8} = vec4(uRgba) / 255.0;` + ]; + }; + } +} +const length = (a) => new Length({ a }); +const distance = (a, b) => new Distance({ a, b }); +const dot = (a, b) => new Dot({ a, b }); +const cross = (a, b) => new Cross({ a, b }); +const normalize = (a) => new Normalize({ a }); +const faceforward = (a, b, c) => new FaceForward({ a, b, c }); +const reflectVec = (incident, normal) => new ReflectVec({ incident, normal }); +const refractVec = (incident, normal, eta) => new RefractVec({ incident, normal, eta }); +const split = (vector) => new Split({ vector }); +const combine = ({ + vector, + vectorType, + x, + y, + z, + w, + r, + g, + b, + a +}) => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a }); +const projectH = (a) => new ProjectH({ a }); +const extendVec = (a, b) => new ExtendVec({ a, b }); +const swizzle = (a, select2) => new Swizzle({ vector: a, select: select2 }); +const compMult = (a, b) => new CompMult({ a, b }); +const outer = (a, b) => new Outer({ a, b }); +const transpose = (a) => new Transpose({ a }); +const determinant = (a) => new Determinant({ a }); +const inverse = (a) => new Inverse({ a }); +class Length extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "float", outKey: "length" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.tanh} = tanh(${inputs.a});` + `${outputs.length} = length(${inputs.a});` ]; } } -class Asinh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "asinh" }); +class Distance extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "distance", outTypeFunc: (aType, bType) => "float" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.asinh} = asinh(${inputs.a});` + `${outputs.distance} = distance(${inputs.a}, ${inputs.b});` ]; } } -class Acosh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "acosh" }); +class Dot extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "dot", outTypeFunc: (aType, bType) => "float" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.acosh} = acosh(${inputs.a});` + `${outputs.dot} = dot(${inputs.a}, ${inputs.b});` ]; } } -class Atanh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "atanh" }); +class Cross extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "cross", outTypeFunc: (aType, bType) => "vec3" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.atanh} = atanh(${inputs.a});` + `${outputs.cross} = cross(${inputs.a}, ${inputs.b});` ]; } } -const dyno = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - Abs, - Acos, - Acosh, - Add, - All, - And, - Any, - Asin, - Asinh, - Atan, - Atan2, - Atanh, - BVec2, - BVec3, - BVec4, - BinaryOp, - Bool, - Ceil, - Clamp, - Combine, - CombineCovSplat, - CombineGsplat, - CompMult, - CompXor, - Compilation, - Cos, - Cosh, - CovSplat, - Cross, - DebugColorHue, - Degrees, - Determinant, - Distance, - Div, - Dot, - Dyno, - DynoBlock, - DynoBool, - DynoBvec2, - DynoBvec3, - DynoBvec4, - DynoConst, - DynoFloat, - DynoInt, - DynoIsampler2D, - DynoIsampler2DArray, - DynoIsampler3D, - DynoIsamplerCube, - DynoIvec2, - DynoIvec3, - DynoIvec4, - DynoLiteral, - DynoMat2, - DynoMat2x2, - DynoMat2x3, - DynoMat2x4, - DynoMat3, - DynoMat3x2, - DynoMat3x3, - DynoMat3x4, - DynoMat4, - DynoMat4x2, - DynoMat4x3, - DynoMat4x4, - DynoOutput, - DynoProgram, - DynoProgramTemplate, - DynoRemapIndex, - DynoSampler2D, - DynoSampler2DArray, - DynoSampler2DArrayShadow, - DynoSampler2DShadow, - DynoSampler3D, - DynoSamplerCube, - DynoSamplerCubeShadow, - DynoUint, - DynoUniform, - DynoUsampler2D, - DynoUsampler2DArray, - DynoUsampler3D, - DynoUsamplerCube, - DynoUvec2, - DynoUvec3, - DynoUvec4, - DynoValue, - DynoVec2, - DynoVec3, - DynoVec4, - Equal, - Exp, - Exp2, - ExtendVec, - FaceForward, - Float, - FloatBitsToInt, - FloatBitsToUint, - Floor, - Fract, - GreaterThan, - GreaterThanEqual, - Gsplat, - GsplatNormal, - GsplatToCovSplat, - Hash, - Hash2, - Hash3, - Hash4, - HashFloat, - HashVec2, - HashVec3, - HashVec4, - IMod, - IVec2, - IVec3, - IVec4, - Int, - IntBitsToFloat, - Inverse, - InverseSqrt, - IsInf, - IsNan, - Length, - LessThan, - LessThanEqual, - Log, - Log2, - Mat2, - Mat3, - Mat4, - Max, - Min, - Mix, - Mod, - Modf, - Mul, - Neg, - Normalize, - NormalizedDepth, - Not, - NotEqual, - NumCovSplats, - NumExtSplats, - NumPackedSplats, - Or, - Outer, - OutputCovSplat, - OutputExtCovSplat, - OutputExtendedSplat, - OutputPackedSplat, - OutputRgba8, - PackHalf2x16, - PackSnorm2x16, - PackUnorm2x16, - PagedSplatTexCoord, - PcgHash, - PcgMix, - PcgNext, - Pow, - ProjectH, - Radians, - ReadCovSplat, - ReadExtSplat, - ReadPackedSplat, - ReadPackedSplatRange, - ReflectVec, - RefractVec, - Round, - Select, - Shl, - Shr, - Sign, - SimpleCast, - Sin, - Sinh, - Smoothstep, - SplatTexCoord, - Split, - SplitCovSplat, - SplitGsplat, - Sqr, - Sqrt, - Step, - Sub, - Swizzle, - TCovSplats, - TExtSplats, - TPackedSplats, - Tan, - Tanh, - TexelFetch, - Texture, - TextureSize, - TransformDir, - TransformGsplat, - TransformPosition, - TransformQuaternion, - Transpose, - TrinaryOp, - Trunc, - UVec2, - UVec3, - UVec4, - Uint, - UintBitsToFloat, - UintToRgba8, - UnaryOp, - UnpackHalf2x16, - UnpackSnorm2x16, - UnpackUnorm2x16, - Vec2, - Vec3, - Vec4, - Xor, - abs, - acos, - acosh, - add, - all, - and, - any, - arrayIndex, - arrayLength, - asin, - asinh, - atan, - atan2, - atanh, - bool, - bvec2, - bvec3, - bvec4, - ceil, - clamp, - combine, - combineCovSplat, - combineGsplat, - comment, - compMult, - compXor, - cos, - cosh, - cross, - debugColorHue, - defineCovSplat, - defineExtSplats, - defineGsplat, - defineGsplatNormal, - definePackedSplats, - degrees, - determinant, - distance, - div, - dot, - dyno: dyno$1, - dynoBlock, - dynoBool, - dynoBvec2, - dynoBvec3, - dynoBvec4, - dynoConst, - dynoDeclare, - dynoFloat, - dynoFor, - dynoIf, - dynoInt, - dynoIsampler2D, - dynoIsampler2DArray, - dynoIsampler3D, - dynoIsamplerCube, - dynoIvec2, - dynoIvec3, - dynoIvec4, - dynoLiteral, - dynoMat2, - dynoMat2x2, - dynoMat2x3, - dynoMat2x4, - dynoMat3, - dynoMat3x2, - dynoMat3x3, - dynoMat3x4, - dynoMat4, - dynoMat4x2, - dynoMat4x3, - dynoMat4x4, - dynoSampler2D, - dynoSampler2DArray, - dynoSampler2DArrayShadow, - dynoSampler2DShadow, - dynoSampler3D, - dynoSamplerCube, - dynoSamplerCubeShadow, - dynoSwitch, - dynoUint, - dynoUsampler2D, - dynoUsampler2DArray, - dynoUsampler3D, - dynoUsamplerCube, - dynoUvec2, - dynoUvec3, - dynoUvec4, - dynoVec2, - dynoVec3, - dynoVec4, - equal, - exp, - exp2, - extendVec, - faceforward, - float, - floatBitsToInt, - floatBitsToUint, - floor, - fract, - greaterThan, - greaterThanEqual, - gsplatNormal, - gsplatToCovSplat, - hash, - hash2, - hash3, - hash4, - hashFloat, - hashVec2, - hashVec3, - hashVec4, - imod, - int, - intBitsToFloat, - inverse, - inversesqrt, - isAllFloatType, - isBoolType, - isFloatType, - isInf, - isIntType, - isMat2, - isMat3, - isMat4, - isMatFloatType, - isNan, - isScalarType, - isUintType, - isVector2Type, - isVector3Type, - isVector4Type, - isVectorType, - ivec2, - ivec3, - ivec4, - length, - lessThan, - lessThanEqual, - literalNegOne, - literalOne, - literalZero, - log, - log2, - mat2, - mat3, - mat4, - max, - min, - mix, - mod, - modf, - mul, - neg, - normalize, - normalizedDepth, - not, - notEqual, - numCovSplats, - numExtSplats, - numPackedSplats, - numberAsFloat, - numberAsInt, - numberAsUint, - or, - outer, - outputCovSplat, - outputCovSplatDepth, - outputExtCovSplat, - outputExtendedSplat, - outputPackedSplat, - outputRgba8, - outputSplatDepth, - packHalf2x16, - packSnorm2x16, - packUnorm2x16, - pagedSplatTexCoord, - pcgHash, - pcgMix, - pcgNext, - pow, - projectH, - radians, - readCovSplat, - readExtSplat, - readPackedSplat, - readPackedSplatRange, - reflectVec, - refractVec, - remapIndex, - round, - sameSizeIvec, - sameSizeUvec, - sameSizeVec, - select, - shl, - shr, - sign, - sin, - sinh, - smoothstep, - splatTexCoord, - split, - splitCovSplat, - splitGsplat, - sqr, - sqrt, - step, - sub, - swizzle, - tan, - tanh, - texelFetch, - texture, - textureSize, - transformDir, - transformGsplat, - transformPos, - transformQuat, - transpose, - trunc, - typeLiteral, - uint, - uintBitsToFloat, - uintToRgba8, - uniform, - unindent, - unindentLines, - unpackHalf2x16, - unpackSnorm2x16, - unpackUnorm2x16, - uvec2, - uvec3, - uvec4, - valType, - vec2, - vec3, - vec4, - vectorDim, - vectorElementType, - xor -}, Symbol.toStringTag, { value: "Module" })); -const _ExtSplats = class _ExtSplats { - constructor(options = {}) { - this.maxSplats = 0; - this.numSplats = 0; - this.extra = {}; - this.maxSh = 3; - this.isInitialized = false; - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - this.textures = [_ExtSplats.emptyTexture, _ExtSplats.emptyTexture]; - this.extra = {}; - this.dyno = new DynoExtSplats({ extSplats: this }); - this.dynoNumSh = new DynoInt({ - key: "numSh", - value: 0, - update: () => { - return Math.min(this.getNumSh(), this.maxSh); - } - }); - this.initialized = Promise.resolve(this); - this.reinitialize(options); +class Normalize extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => aType, outKey: "normalize" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.normalize} = normalize(${inputs.a});` + ]; } - reinitialize(options) { - this.isInitialized = false; - this.extra = {}; - this.maxSplats = options.maxSplats ?? 0; - this.lod = options.lod; - this.nonLod = options.nonLod; - if (options.url || options.fileBytes || options.stream || options.construct) { - this.initialized = this.asyncInitialize(options).then(() => { - this.isInitialized = true; - return this; - }); - } else { - this.initialize(options); - this.isInitialized = true; - this.initialized = Promise.resolve(this); - } +} +function projectHOutputType(type) { + if (type === "vec3") { + return "vec2"; } - initialize(options) { - this.extra = options.extra ?? {}; - this.lodSplats = options.lodSplats; - if (options.extArrays) { - this.extArrays = options.extArrays; - this.maxSplats = Math.floor( - Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) - ); - this.numSplats = options.numSplats ?? this.maxSplats; - this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - this.numSplats = Math.min( - this.maxSplats, - options.numSplats ?? Number.POSITIVE_INFINITY - ); - this.updateTextures(); - } else { - this.maxSplats = options.maxSplats ?? 0; - this.numSplats = 0; - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - } + if (type === "vec4") { + return "vec3"; } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - construct, - lod, - nonLod, - lodAbove - } = options; - this.lod = lod; - this.nonLod = nonLod; - const loader = new SplatLoader(); - if (fileBytes || url || stream) { - await loader.loadInternalAsync({ - extSplats: this, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress: options.onProgress, - lodAbove - }); - } - if (construct) { - const maybePromise = construct(this); - if (maybePromise instanceof Promise) { - await maybePromise; + throw new Error("Invalid type"); +} +class ProjectH extends UnaryOp { + constructor({ a }) { + super({ + a, + outTypeFunc: (aType) => projectHOutputType(aType), + outKey: "projected" + }); + this.statements = ({ inputs, outputs }) => { + if (this.inTypes.a === "vec3") { + return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`]; } - } - } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. - dispose() { - if (this.textures[0] !== _ExtSplats.emptyTexture) { - this.textures[0].dispose(); - this.textures[0].source.data = null; - this.textures[0] = _ExtSplats.emptyTexture; - } - if (this.textures[1] !== _ExtSplats.emptyTexture) { - this.textures[1].dispose(); - this.textures[1].source.data = null; - this.textures[1] = _ExtSplats.emptyTexture; - } - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - for (const key in this.extra) { - const dyno2 = this.extra[key]; - if (dyno2 instanceof DynoUniform) { - const texture2 = dyno2.value; - if (texture2 == null ? void 0 : texture2.isTexture) { - texture2.dispose(); - texture2.source.data = null; - } + if (this.inTypes.a === "vec4") { + return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`]; } - } - this.extra = {}; - this.disposeLodSplats(); + throw new Error("Invalid type"); + }; } - prepareFetchSplat() { +} +function extendVecOutputType(type) { + if (type === "float") return "vec2"; + if (type === "vec2") return "vec3"; + if (type === "vec3") return "vec4"; + throw new Error("Invalid type"); +} +class ExtendVec extends BinaryOp { + constructor({ a, b }) { + const type = valType(a); + const outType = extendVecOutputType(type); + super({ a, b, outKey: "extend", outTypeFunc: () => outType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});` + ]; } - getNumSplats() { - return this.numSplats; +} +class FaceForward extends TrinaryOp { + constructor({ a, b, c }) { + super({ + a, + b, + c, + outKey: "forward", + outTypeFunc: (aType, bType, cType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});` + ]; } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; +} +class ReflectVec extends BinaryOp { + constructor({ + incident, + normal + }) { + super({ + a: incident, + b: normal, + outKey: "reflection", + outTypeFunc: (aType, bType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});` + ]; } - getNumSh() { - return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3a || !this.extra.sh3b ? 2 : 3; +} +class RefractVec extends TrinaryOp { + constructor({ + incident, + normal, + eta + }) { + super({ + a: incident, + b: normal, + c: eta, + outKey: "refraction", + outTypeFunc: (aType, bType, cType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});` + ]; } - setMaxSh(maxSh) { - this.maxSh = maxSh; +} +class CompMult extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "product", outTypeFunc: (aType, bType) => aType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.product} = matrixCompMult(${a}, ${b});` + ]; } - fetchSplat({ - index, - viewOrigin - }) { - let gsplat = readExtSplat(this.dyno, index); - if (this.hasRgbDir() && viewOrigin) { - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } = this.ensureShTextures(); - let { rgb } = evaluateExtSH({ - coord: splatTexCoord(index), - viewDir, - numSh: this.dynoNumSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB - }); - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - } - return gsplat; +} +function outerOutputType(aType, bType) { + if (aType === "vec2") { + if (bType === "vec2") return "mat2"; + if (bType === "vec3") return "mat3x2"; + if (bType === "vec4") return "mat4x2"; } - ensureShTextures() { - if (!this.extra.sh1) { - return {}; - } - let sh1Texture = this.extra.sh1Texture; - if (!sh1Texture) { - let sh1 = this.extra.sh1; - const { width, height, depth, maxSplats } = getTextureSize( - sh1.length / 4 - ); - if (sh1.length < maxSplats * 4) { - const newSh1 = new Uint32Array(maxSplats * 4); - newSh1.set(sh1); - this.extra.sh1 = newSh1; - sh1 = newSh1; - } - const texture2 = newUint32ArrayTexture( - sh1, - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - sh1Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh1" - }); - this.extra.sh1Texture = sh1Texture; - } - if (!this.extra.sh2) { - return { sh1Texture }; - } - let sh2Texture = this.extra.sh2Texture; - if (!sh2Texture) { - let sh2 = this.extra.sh2; - const { width, height, depth, maxSplats } = getTextureSize( - sh2.length / 4 - ); - if (sh2.length < maxSplats * 4) { - const newSh2 = new Uint32Array(maxSplats * 4); - newSh2.set(sh2); - this.extra.sh2 = newSh2; - sh2 = newSh2; - } - const texture2 = newUint32ArrayTexture( - sh2, - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - sh2Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh2" - }); - this.extra.sh2Texture = sh2Texture; - } - if (!this.extra.sh3a || !this.extra.sh3b) { - return { sh1Texture, sh2Texture }; - } - let sh3TextureA = this.extra.sh3TextureA; - if (!sh3TextureA) { - let sh3a = this.extra.sh3a; - const { width, height, depth, maxSplats } = getTextureSize( - sh3a.length / 4 - ); - if (sh3a.length < maxSplats * 4) { - const newSh3 = new Uint32Array(maxSplats * 4); - newSh3.set(sh3a); - this.extra.sh3a = newSh3; - sh3a = newSh3; - } - const texture2 = newUint32ArrayTexture( - sh3a, - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - sh3TextureA = new DynoUsampler2DArray({ - value: texture2, - key: "sh3" - }); - this.extra.sh3TextureA = sh3TextureA; - } - let sh3TextureB = this.extra.sh3TextureB; - if (!sh3TextureB) { - let sh3b = this.extra.sh3b; - const { width, height, depth, maxSplats } = getTextureSize( - sh3b.length / 4 - ); - if (sh3b.length < maxSplats * 4) { - const newSh3b = new Uint32Array(maxSplats * 4); - newSh3b.set(sh3b); - this.extra.sh3b = newSh3b; - sh3b = newSh3b; - } - const texture2 = newUint32ArrayTexture( - sh3b, - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - sh3TextureB = new DynoUsampler2DArray({ - value: texture2, - key: "sh3b" - }); - this.extra.sh3TextureB = sh3TextureB; - } - return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB }; + if (aType === "vec3") { + if (bType === "vec2") return "mat2x3"; + if (bType === "vec3") return "mat3"; + if (bType === "vec4") return "mat4x3"; } - // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(numSplats) { - const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(numSplats, 2 * this.maxSplats) - ); - const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4; - if (!this.extArrays[0] || targetSize > currentSize) { - this.maxSplats = getTextureSize(targetSize).maxSplats; - const newArray0 = new Uint32Array(this.maxSplats * 4); - const newArray1 = new Uint32Array(this.maxSplats * 4); - if (this.extArrays[0]) { - newArray0.set(this.extArrays[0]); - newArray1.set(this.extArrays[1]); - } - this.extArrays[0] = newArray0; - this.extArrays[1] = newArray1; - } - return this.extArrays; + if (aType === "vec4") { + if (bType === "vec2") return "mat2x4"; + if (bType === "vec3") return "mat3x4"; + if (bType === "vec4") return "mat4"; } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(index) { - if (index >= this.numSplats) { - throw new Error("Invalid index"); - } - return decodeExtSplat(this.extArrays, index); + throw new Error(`Invalid outer type: ${aType}, ${bType}`); +} +class Outer extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "outer", outTypeFunc: outerOutputType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});` + ]; } - // Set all ExtSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(index, center, scales, quaternion, opacity, color) { - const extArrays = this.ensureSplats(index + 1); - encodeExtSplat( - extArrays, - index, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b - ); - this.numSplats = Math.max(this.numSplats, index + 1); +} +function transposeOutputType(type) { + if (type === "mat2") return "mat2"; + if (type === "mat3") return "mat3"; + if (type === "mat4") return "mat4"; + if (type === "mat2x2") return "mat2x2"; + if (type === "mat2x3") return "mat3x2"; + if (type === "mat2x4") return "mat4x2"; + if (type === "mat3x2") return "mat2x3"; + if (type === "mat3x3") return "mat3x3"; + if (type === "mat3x4") return "mat4x3"; + if (type === "mat4x2") return "mat2x4"; + if (type === "mat4x3") return "mat3x4"; + if (type === "mat4x4") return "mat4x4"; + throw new Error(`Invalid transpose type: ${type}`); +} +class Transpose extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "transpose", outTypeFunc: transposeOutputType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.transpose} = transpose(${inputs.a});` + ]; } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(center, scales, quaternion, opacity, color) { - const extArrays = this.ensureSplats(this.numSplats + 1); - encodeExtSplat( - extArrays, - this.numSplats, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b - ); - ++this.numSplats; +} +class Determinant extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "det", outTypeFunc: (aType) => "float" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.det} = determinant(${inputs.a});` + ]; } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.numSplats) { - return; - } - for (let i = 0; i < this.numSplats; ++i) { - const unpacked = decodeExtSplat(this.extArrays, i); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color - ); - } +} +class Inverse extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "inverse", outTypeFunc: (aType) => aType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.inverse} = inverse(${a});` + ]; } - // Check if source texture needs to be created/updated - updateTextures() { - if (this.textures[0] !== _ExtSplats.emptyTexture) { - const { width, height, depth } = this.textures[0].image; - if (this.maxSplats !== width * height * depth) { - this.textures[0].dispose(); - this.textures[0] = _ExtSplats.emptyTexture; - this.textures[1].dispose(); - this.textures[1] = _ExtSplats.emptyTexture; - } - } - if (this.textures[0] === _ExtSplats.emptyTexture) { - const { width, height, depth } = getTextureSize(this.maxSplats); - this.textures[0] = newUint32ArrayTexture( - this.extArrays[0], - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - this.textures[1] = newUint32ArrayTexture( - this.extArrays[1], - width, - height, - depth, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - } else if (this.extArrays[0].buffer !== this.textures[0].image.data.buffer) { - this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer); - this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer); - this.textures[0].needsUpdate = true; - this.textures[1].needsUpdate = true; - } +} +function splitOutTypes(type) { + const result = (value) => value; + switch (type) { + case "vec2": + return result({ x: "float", y: "float", r: "float", g: "float" }); + case "vec3": + return result({ + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }); + case "vec4": + return result({ + x: "float", + y: "float", + z: "float", + w: "float", + r: "float", + g: "float", + b: "float", + a: "float" + }); + case "ivec2": + return result({ x: "int", y: "int", r: "int", g: "int" }); + case "ivec3": + return result({ + x: "int", + y: "int", + z: "int", + r: "int", + g: "int", + b: "int" + }); + case "ivec4": + return result({ + x: "int", + y: "int", + z: "int", + w: "int", + r: "int", + g: "int", + b: "int", + a: "int" + }); + case "uvec2": + return result({ x: "uint", y: "uint", r: "uint", g: "uint" }); + case "uvec3": + return result({ + x: "uint", + y: "uint", + z: "uint", + r: "uint", + g: "uint", + b: "uint" + }); + case "uvec4": + return result({ + x: "uint", + y: "uint", + z: "uint", + w: "uint", + r: "uint", + g: "uint", + b: "uint", + a: "uint" + }); + default: + throw new Error(`Invalid vector type: ${type}`); } - extractSplats(indices, pageColoring) { - const maxSplats = getTextureSize(indices.length).maxSplats; - const newSplats = new _ExtSplats({ maxSplats }); - for (let i = 0; i < indices.length; i++) { - const splat = this.getSplat(indices[i]); - if (pageColoring) { - let hue = (indices[i] >>> 16) * 0.61803398875; - hue = hue - Math.floor(hue); - const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); - const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); - const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); - splat.color.r *= r; - splat.color.g *= g; - splat.color.b *= b; - } - newSplats.pushSplat( - splat.center, - splat.scales, - splat.quaternion, - splat.opacity, - splat.color - ); - } - return newSplats; +} +class Split extends Dyno { + constructor({ vector }) { + const type = valType(vector); + const inTypes = { vector: type }; + const outTypes = splitOutTypes(inTypes.vector); + super({ inTypes, outTypes, inputs: { vector } }); + this.statements = ({ inputs, outputs }) => { + const { x, y, z, w, r, g, b, a } = outputs; + const { vector: vector2 } = inputs; + return [ + x ? `${x} = ${vector2}.x;` : null, + y ? `${y} = ${vector2}.y;` : null, + z ? `${z} = ${vector2}.z;` : null, + w ? `${w} = ${vector2}.w;` : null, + r ? `${r} = ${vector2}.r;` : null, + g ? `${g} = ${vector2}.g;` : null, + b ? `${b} = ${vector2}.b;` : null, + a ? `${a} = ${vector2}.a;` : null + ].filter(Boolean); + }; } - disposeLodSplats() { - if (this.lodSplats) { - this.lodSplats.dispose(); - this.lodSplats = void 0; +} +class Combine extends Dyno { + constructor({ + vector, + vectorType, + x, + y, + z, + w, + r, + g, + b, + a + }) { + if (!vector && !vectorType) { + throw new Error("Either vector or vectorType must be provided"); } - } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; - const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()]; - const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; - const extra = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + const vType = vectorType ?? valType(vector); + const elType = vectorElementType(vType); + const dim = vectorDim(vType); + const inTypes = { + vector: vType, + x: elType, + y: elType, + r: elType, + g: elType }; - const decoded = await workerPool.withWorker(async (worker) => { - return await worker.call( - quality ? "qualityLodExtSplats" : "tinyLodExtSplats", - { - numSplats: this.numSplats, - extArrays, - extra, - lodBase, - rgba - } - ); - }); - const lodSplats = new _ExtSplats(decoded); - if (this.lodSplats) { - this.lodSplats.dispose(); + const inputs = { vector, x, y, r, g }; + if (dim >= 3) { + Object.assign(inTypes, { z: elType, b: elType }); + Object.assign(inputs, { z, b }); } - this.lodSplats = lodSplats; - this.nonLod = true; - this.lod = quality ? "quality" : true; + if (dim >= 4) { + Object.assign(inTypes, { w: elType, a: elType }); + Object.assign(inputs, { w, a }); + } + super({ inTypes, outTypes: { vector: vType }, inputs }); + this.statements = ({ inputs: inputs2, outputs }) => { + const { vector: vector2 } = outputs; + const { + vector: input, + x: x2, + y: y2, + z: z2, + w: w2, + r: r2, + g: g2, + b: b22, + a: a2 + } = inputs2; + const statements = [ + `${vector2}.x = ${x2 ?? r2 ?? (input ? `${input}.x` : literalZero(elType))};`, + `${vector2}.y = ${y2 ?? g2 ?? (input ? `${input}.y` : literalZero(elType))};` + ]; + if (dim >= 3) + statements.push( + `${vector2}.z = ${z2 ?? b22 ?? (input ? `${input}.z` : literalZero(elType))};` + ); + if (dim >= 4) + statements.push( + `${vector2}.w = ${w2 ?? a2 ?? (input ? `${input}.w` : literalZero(elType))};` + ); + return statements; + }; + } + dynoOut() { + return new DynoOutput( + this, + "vector" + ); + } +} +function swizzleOutputType(type, swizzle2) { + let result = null; + if (isFloatType(type)) { + result = swizzle2.length === 1 ? "float" : swizzle2.length === 2 ? "vec2" : swizzle2.length === 3 ? "vec3" : swizzle2.length === 4 ? "vec4" : null; + } else if (isIntType(type)) { + result = swizzle2.length === 1 ? "int" : swizzle2.length === 2 ? "ivec2" : swizzle2.length === 3 ? "ivec3" : swizzle2.length === 4 ? "ivec4" : null; + } else if (isUintType(type)) { + result = swizzle2.length === 1 ? "uint" : swizzle2.length === 2 ? "uvec2" : swizzle2.length === 3 ? "uvec3" : swizzle2.length === 4 ? "uvec4" : null; + } + if (result == null) { + throw new Error(`Invalid swizzle: ${swizzle2}`); + } + return result; +} +class Swizzle extends UnaryOp { + constructor({ vector, select: select2 }) { + super({ + a: vector, + outKey: "swizzle", + outTypeFunc: (aType) => swizzleOutputType(aType, select2) + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.swizzle} = ${inputs.a}.${select2};` + ]; } +} +const remapIndex = (index, from, to) => { + return new DynoRemapIndex({ index, from, to }); }; -_ExtSplats.emptyArray = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_ExtSplats.emptyTexture = newUint32ArrayTexture( - null, - 1, - 1, - 1, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" -); -_ExtSplats.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -let ExtSplats = _ExtSplats; -class DynoExtSplats extends DynoUniform { - constructor({ extSplats } = {}) { +const pcgMix = (value) => { + return new PcgMix({ value }); +}; +const pcgNext = (state) => { + return new PcgNext({ state }); +}; +const pcgHash = (state) => { + return new PcgHash({ state }); +}; +const hash = (value) => { + return new Hash({ value }); +}; +const hash2 = (value) => { + return new Hash2({ value }); +}; +const hash3 = (value) => { + return new Hash3({ value }); +}; +const hash4 = (value) => { + return new Hash4({ value }); +}; +const hashFloat = (value) => { + return new HashFloat({ value }); +}; +const hashVec2 = (value) => { + return new HashVec2({ value }); +}; +const hashVec3 = (value) => { + return new HashVec3({ value }); +}; +const hashVec4 = (value) => { + return new HashVec4({ value }); +}; +const normalizedDepth = (z, zNear, zFar) => { + return new NormalizedDepth({ z, zNear, zFar }).outputs.depth; +}; +const debugColorHue = (index) => { + return new DebugColorHue({ index }); +}; +class DynoRemapIndex extends Dyno { + constructor({ + from, + to, + index + }) { super({ - key: "extSplats", - type: TExtSplats, - globals: () => [defineExtSplats], - value: { - textureArray1: ExtSplats.emptyTexture, - textureArray2: ExtSplats.emptyTexture, - numSplats: 0 - }, - update: (value) => { - var _a2, _b2, _c; - value.textureArray1 = ((_a2 = this.extSplats) == null ? void 0 : _a2.textures[0]) ?? ExtSplats.emptyTexture; - value.textureArray2 = ((_b2 = this.extSplats) == null ? void 0 : _b2.textures[1]) ?? ExtSplats.emptyTexture; - value.numSplats = ((_c = this.extSplats) == null ? void 0 : _c.numSplats) ?? 0; - return value; + inTypes: { from: "int", to: "int", index: "int" }, + outTypes: { index: "int" }, + inputs: { from, to, index }, + statements: ({ inputs, outputs }) => { + return [ + `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};` + ]; } }); - this.extSplats = extSplats; - } -} -const defineEvaluateExtSH1 = unindent(` - vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packedData.x); - vec3 sh1_1 = decodeExtRgb(packedData.y); - vec3 sh1_2 = decodeExtRgb(packedData.z); - - return sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - } -`); -const defineEvaluateExtSH12 = unindent(` - vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packed1.x); - vec3 sh1_1 = decodeExtRgb(packed1.y); - vec3 sh1_2 = decodeExtRgb(packed1.z); - - vec3 sh2_0 = decodeExtRgb(packed1.w); - vec3 sh2_1 = decodeExtRgb(packed2.x); - vec3 sh2_2 = decodeExtRgb(packed2.y); - vec3 sh2_3 = decodeExtRgb(packed2.z); - vec3 sh2_4 = decodeExtRgb(packed2.w); - - vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - - vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - - return sh1Rgb + sh2Rgb; } -`); -const defineEvaluateExtSH3 = unindent(` - vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { - vec3 sh3_0 = decodeExtRgb(packedA.x); - vec3 sh3_1 = decodeExtRgb(packedA.y); - vec3 sh3_2 = decodeExtRgb(packedA.z); - vec3 sh3_3 = decodeExtRgb(packedA.w); - vec3 sh3_4 = decodeExtRgb(packedB.x); - vec3 sh3_5 = decodeExtRgb(packedB.y); - vec3 sh3_6 = decodeExtRgb(packedB.z); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + dynoOut() { + return new DynoOutput(this, "index"); } -`); -function evaluateExtSH({ - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB -}) { - return new Dyno({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3TextureA: "usampler2DArray", - sh3TextureB: "usampler2DArray" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB - }, - globals: () => [ - defineEvaluateExtSH1, - defineEvaluateExtSH12, - defineEvaluateExtSH3 - ], - statements: ({ inputs, outputs }) => { - const lines = ["vec3 rgb = vec3(0.0);"]; - if (inputs.sh1Texture) { - if (!inputs.sh2Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 1) { - rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - } - `) - ); - } else { - lines.push( - ...unindentLines(` - if (${inputs.numSh} == 1) { - rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - } else if (${inputs.numSh} >= 2) { - rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - `) - ); - if (inputs.sh3TextureA && inputs.sh3TextureB) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 3) { - rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir}); - } - `) - ); +} +class PcgNext extends Dyno { + constructor({ state }) { + const type = valType(state); + super({ + inTypes: { state: type }, + outTypes: { state: "uint" }, + inputs: { state }, + globals: () => [ + unindent(` + uint pcg_next(uint state) { + return state * 747796405u + 2891336453u; } - lines.push("}"); - } + `) + ], + statements: ({ inputs, outputs }) => { + const toUint = type === "uint" ? `${inputs.state}` : type === "int" ? `uint(${inputs.state})` : `floatBitsToUint(${inputs.state})`; + return [`${outputs.state} = pcg_next(${toUint});`]; } - lines.push(`${outputs.rgb} = rgb;`); - return lines; - } - }).outputs; + }); + } + dynoOut() { + return new DynoOutput(this, "state"); + } } -function newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { - const texture2 = new THREE__namespace.DataArrayTexture( - data, - width, - height, - depth - ); - texture2.format = format; - texture2.type = type; - texture2.internalFormat = internalFormat; - texture2.needsUpdate = true; - return texture2; +class PcgHash extends Dyno { + constructor({ state }) { + super({ + inTypes: { state: "uint" }, + outTypes: { hash: "uint" }, + inputs: { state }, + globals: () => [ + unindent(` + uint pcg_hash(uint state) { + uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (hash >> 22u) ^ hash; + } + `) + ], + statements: ({ inputs, outputs }) => [ + `${outputs.hash} = pcg_hash(${inputs.state});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function decode_rad_header(bytes) { - const ret = wasm.decode_rad_header(bytes); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); +class PcgMix extends Dyno { + constructor({ value }) { + const type = valType(value); + const tempType = sameSizeUvec(type); + super({ + inTypes: { value: type }, + outTypes: { state: "uint" }, + inputs: { value }, + globals: () => [ + unindent(` + uint pcg_mix(uint value) { + return value; + } + uint pcg_mix(uvec2 value) { + return value.x + 0x9e3779b9u * value.y; + } + uint pcg_mix(uvec3 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; + } + uint pcg_mix(uvec4 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; + } + `) + ], + statements: ({ inputs, outputs }) => { + const toUvec = isUintType(type) ? `${inputs.value}` : isIntType(type) ? `${tempType}(${inputs.value})` : `floatBitsToUint(${inputs.value})`; + return [ + `${tempType} bits = ${toUvec};`, + `${outputs.state} = pcg_mix(bits);` + ]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "state"); } - return takeFromExternrefTable0(ret[0]); } -function get_raycast_buffer() { - const ret = wasm.get_raycast_buffer(); - return ret; +class Hash extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uint" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + return new PcgHash({ state }).outputs; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function get_raycast_buffer2() { - const ret = wasm.get_raycast_buffer2(); - return ret; +class Hash2 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec2" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec2", x, y }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) { - const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count); - return ret; +class Hash3 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec3" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const z = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec3", x, y, z }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) { - const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity); - return ret; +class Hash4 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec4" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const z = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const w = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec4", x, y, z, w }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function __wbg_get_imports() { - const import0 = { - __proto__: null, - __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) { - const ret = Error(getStringFromWasm0(arg0, arg1)); - return ret; - }, - __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }, - __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); +class HashFloat extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "float" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const word = hash(value2); + return { hash: mul(float(word), dynoConst("float", 1 / 2 ** 32)) }; } - }, - __wbg_length_0c32cb8543c8e4c8: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_length_1e701798fdcaa3b4: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_length_fd4646b401926788: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_new_227d7c05414eb861: function() { - const ret = new Error(); - return ret; - }, - __wbg_new_4f9fafbb3909af72: function() { - const ret = new Object(); - return ret; - }, - __wbg_new_f3c9df4f38f3f798: function() { - const ret = new Array(); - return ret; - }, - __wbg_new_with_length_26bffbe236bf73f9: function(arg0) { - const ret = new Float32Array(arg0 >>> 0); - return ret; - }, - __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) { - Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2); - }, - __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) { - Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2); - }, - __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) { - arg0[arg1] = arg2; - }, - __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) { - arg0[arg1 >>> 0] = arg2; - }, - __wbg_set_8ee2d34facb8466e: function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.set(arg0, arg1, arg2); - return ret; - }, arguments); - }, - __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) { - arg0.set(getArrayF32FromWasm0(arg1, arg2)); - }, - __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, - __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) { - const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); - return ret; - }, - __wbindgen_cast_0000000000000001: function(arg0) { - const ret = arg0; - return ret; - }, - __wbindgen_cast_0000000000000002: function(arg0, arg1) { - const ret = getArrayF32FromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000003: function(arg0, arg1) { - const ret = getArrayU32FromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000004: function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000005: function(arg0) { - const ret = BigInt.asUintN(64, arg0); - return ret; - }, - __wbindgen_init_externref_table: function() { - const table = wasm.__wbindgen_externrefs; - const offset = table.grow(4); - table.set(0, void 0); - table.set(offset + 0, void 0); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - } - }; - return { - __proto__: null, - "./spark_rs_bg.js": import0 - }; -} -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_externrefs.set(idx, obj); - return idx; -} -function getArrayF32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} -function getArrayU32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); -} -let cachedDataViewMemory0 = null; -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} -let cachedFloat32ArrayMemory0 = null; -function getFloat32ArrayMemory0() { - if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { - cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + }); } - return cachedFloat32ArrayMemory0; -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return decodeText(ptr, len); -} -let cachedUint32ArrayMemory0 = null; -function getUint32ArrayMemory0() { - if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { - cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + dynoOut() { + return new DynoOutput(this, "hash"); } - return cachedUint32ArrayMemory0; } -let cachedUint8ArrayMemory0 = null; -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); +class HashVec2 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec2" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const words = hash2(value2); + return { hash: mul(vec2(words), dynoConst("float", 1 / 2 ** 32)) }; + } + }); } - return cachedUint8ArrayMemory0; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); + dynoOut() { + return new DynoOutput(this, "hash"); } } -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8ArrayMemory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = cachedTextEncoder.encodeInto(arg, view); - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; +class HashVec3 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec3" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const words = hash3(value2); + return { hash: mul(vec3(words), dynoConst("float", 1 / 2 ** 32)) }; + } + }); } - WASM_VECTOR_LEN = offset; - return ptr; -} -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_externrefs.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} -let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); -cachedTextDecoder.decode(); -const MAX_SAFARI_DECODE_BYTES = 2146435072; -let numBytesDecoded = 0; -function decodeText(ptr, len) { - numBytesDecoded += len; - if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { - cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); - cachedTextDecoder.decode(); - numBytesDecoded = len; + dynoOut() { + return new DynoOutput(this, "hash"); } - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} -const cachedTextEncoder = new TextEncoder(); -if (!("encodeInto" in cachedTextEncoder)) { - cachedTextEncoder.encodeInto = function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; -} -let WASM_VECTOR_LEN = 0; -let wasm; -function __wbg_finalize_init(instance, module2) { - wasm = instance.exports; - cachedDataViewMemory0 = null; - cachedFloat32ArrayMemory0 = null; - cachedUint32ArrayMemory0 = null; - cachedUint8ArrayMemory0 = null; - wasm.__wbindgen_start(); - return wasm; } -async function __wbg_load(module2, imports) { - if (typeof Response === "function" && module2 instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module2, imports); - } catch (e) { - const validResponse = module2.ok && expectedResponseType(module2.type); - if (validResponse && module2.headers.get("Content-Type") !== "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; +class HashVec4 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec4" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); } + const words = hash4(value2); + return { hash: mul(vec4(words), dynoConst("float", 1 / 2 ** 32)) }; } - } - const bytes = await module2.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module2, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module: module2 }; - } else { - return instance; - } + }); } - function expectedResponseType(type) { - switch (type) { - case "basic": - case "cors": - case "default": - return true; - } - return false; + dynoOut() { + return new DynoOutput(this, "hash"); } } -async function __wbg_init(module_or_path) { - if (wasm !== void 0) return wasm; - if (module_or_path !== void 0) { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({ module_or_path } = module_or_path); - } else { - console.warn("using deprecated parameters for the initialization function; pass a single object instead"); - } - } - if (module_or_path === void 0) { - module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAABlwM3YAN/f38Bf2ACf38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgBH9/f38AYAABb2AAAGACf38Bb2AEf39/fwF/YAZ/f39/f38AYAFvAX9gAX0BfWAFf39/fn8AYAABf2AFf39/f38Bf2ADf39vAGAGf39/f39/AX9gB39/f39/f38AYAV/f35/fwBgBX9/fH9/AGAFf399f38AYAADf39/YANvb28AYANvf28AYANvb28Bf2ADb39/AW9gAX8Bb2ADb39/AGACf28AYAF8AW9gAX4Bb2AKf39/f3t9fX19fwBgB39/f39/f38Bf2AIf397fX1/f38AYAJ+fwBgA39/fgBgAn9+AX9gA39+fgBgBH9+fn8AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAZ/f39/f30AYA59fX19fX19fX1/b319fwFvYA19fX19fX19fX1/fX1/AW9gAW8Df39/YAp9fX19fX19fX1/AW9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAn19AX1gAXwBfwK7CRgQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAIEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACBAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABkQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAaEC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADRAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgASEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAGxAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5X2Q1MWU4OTQ1OGIzZmRiZjYAHBAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AA0QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5AB0QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAANEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxAAgQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmAB8QLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAIQLi9zcGFya19yc19iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAAoQLi9zcGFya19yc19iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhAuL3NwYXJrX3JzX2JnLmpzH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUACRAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAxACAQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAKEC4vc3BhcmtfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDMAChAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDA0AAoQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwNQAhA54CnAIFAAECAQIFAQEGBQAiIwcCAwUBAg4OBAECBQMACwUBBQICAAIFAgQkAgMDAgACAAUCABMBAQkBFAACDwEFBRQOAg8ABQIEJQEDAQICBRAFBQEEBQEPAQEMAgEBBwUBAgEBASYBAQICAgICAQIFBAIBDAYBAgMDJwECBAYCAgMBAQICAQUCASgGAAABBAMDAwMEBgYHAwQABwEDAgADDAQEAQEG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NgIEDAELIAAPCyAAQQhqC98XAhp/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEHQ38EAKAIAIgkhBiACQQNrQRhtIgVBACAFQQBKGyILIQUgC0ECdEHg38EAaiEHA0AgAyAEQQN0aiAFQQBIBHxEAAAAAAAAAAAFIAcoAgC3CzkDACAEIAZJIgoEQCAHQQRqIQcgBUEBaiEFIAQgCmoiBCAGTQ0BCwtBACEFA0BBACEEIANBwAJqIAVBA3RqIB0gACAEQQN0aisDACADIAUgBGtBA3RqKwMAoqA5AwAgBSAJSSIGBEAgBSAGaiIFIAlNDQELC0QAAAAAAADwf0QAAAAAAADgfyACIAtBaGxqIgpBGGsiAkH+D0siEBtEAAAAAAAAAABEAAAAAAAAYAMgAkG5cEkiERtEAAAAAAAA8D8gAkGCeEgiEhsgAkH/B0oiExtB/RcgAiACQf0XTxtB/g9rIApBlwhrIBAbIhVB8GggAiACQfBoTRtBkg9qIApBsQdqIBEbIhYgAiASGyATG0H/B2qtQjSGv6IhHiADQdwDaiIOIAlBAnRqIQ9BLyAKa0Ef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ADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwQCyABKAIAQdyWwQBBCiABKAIEKAIMEQAADA8LIAEoAgBB5pbBAEEMIAEoAgQoAgwRAAAMDgsgASgCAEHylsEAQQ4gASgCBCgCDBEAAAwNCyABKAIAQYCXwQBBCCABKAIEKAIMEQAADAwLIAEoAgBBiJfBAEEDIAEoAgQoAgwRAAAMCwsgASgCAEGLl8EAQQQgASgCBCgCDBEAAAwKCyABKAIAQY+XwQBBDCABKAIEKAIMEQAADAkLIAEoAgBBm5fBAEEPIAEoAgQoAgwRAAAMCAsgASgCAEGql8EAQQ0gASgCBCgCDBEAAAwHCyABKAIAQbeXwQBBDiABKAIEKAIMEQAADAYLIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAMBQsgACkDCCIJQv////////8HgyEKIAlC////////////AINC//////////f/AFgEQCAJQjSIpyEAIAlCAFMNAiACQagCagwDC0HUosEAQdeiwQAgCUIAWSIAG0HbosEAIApQIgQbIQNBA0EEIAAbQQMgBBshAAwDCyABKAIAQdqXwQBBBCABKAIEKAIMEQAADAMLIAJBLToAqAJBASEIIAJBqQJqCyEGAn8CQAJAAkACQAJAAkACQAJAIABB/w9xIgBFIApQcUUEQCAAQQJJIApCAFJyIQMgCkKAgICAgICACIQgCiAAGyIJQgKGIQogCUIBgyEPAkACQAJAIABBtQhrQcx3IAAbIgBBAEgEQCACQZACakHQwcAAIAAgAEGFolNsQRR2IABBf0drIgBqIgdBBHQiBGspAwAiCSAKQgKEIgsQngEgAkGAAmpB2MHAACAEaykDACINIAsQngEgAkHwAWogAikDmAIiCyACKQOAAnwiDCACKQOIAiALIAxWrXwgACAHQbHZtR9sQRN2a0H8AGpB/wBxQcAAcyIEELsBIAJBsAFqIAkgCiADQX9zrHwiCxCeASACQaABaiANIAsQngEgAkGQAWogAikDuAEiCyACKQOgAXwiDCACKQOoASALIAxWrXwgBBC7ASACQeABaiAJIAoQngEgAkHQAWogDSAKEJ4BIAJBwAFqIAIpA+gBIgkgAikD0AF8Ig0gAikD2AEgCSANVq18IAQQuwEgAikDwAEhCyACKQOQASEJIAIpA/ABIQwg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QYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAkHgmMEAEJQBCyACIANBAWo2AgggAigCBCADaiAGOgAAQQAhAwwDCyAGIAMgA0GcqsEAEM8BAAsgBEEUNgIUIAEgBEEUahCwASEDDAELIAggAyADQZyqwQAQzwEACyAEQSBqJAAgA0UNDgwNCyACKAIAIANGBEAgAkHgl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpBIjoAAAwLCyACKAIAIANGBEAgAkHwl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpB3AA6AAAMCgsgAigCACADRgRAIAJBgJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQS86AAAMCQsgAigCACADRgRAIAJBkJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQg6AAAMCAsgAigCACADRgRAIAJBoJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQw6AAAMBwsgAigCACADRgRAIAJBsJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQo6AAAMBgsgAigCACADRgRAIAJBwJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQ06AAAMBQsgAigCACADRgRAIAJB0JjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQk6AAAMBAsgAyAEIAZBsKHBABDPAQALIAcoAgwhAwwDCyAHQQQ2AhQgACABIAdBFGoQpAEMBgsgBCAGQYChwQAQsQEACwwBCwsgAEECNgIAIAAgAzYCBAwCCyAAIAM2AgggACABNgIEIABBADYCAAwBCyAAIAM2AgggACABNgIEIABBATYCAAsgB0EgaiQAC68QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQbu3wABBARBEIQIMAgsCQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIGTwRAIAAoAhAiAkUNASACQZK3wABBEBBERQ0BDAcLIAAgBEEBaiIBNgIIIAVBCGogAiAEai0AACIDEM0BIAUoAggiBwRAIAAoAhAiAEUNCCAAIAcgBSgCDBBEIQIMCQsgACAAKAIMQQFqIgc2AgwgB0H1A08EQCAAKAIQIgIEQCAC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AgBBlObBAEGU5sEAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LAn9BjObBACgCACICQQEgAEEDdnQiA3FFBEBBjObBACACIANyNgIAIABB+AFxQYTkwQBqIgAMAQsgAEH4AXEiAkGE5MEAaiEAIAJBjOTBAGooAgALIQIgACABNgIIIAIgATYCDCABIAA2AgwgASACNgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQbTmwQBBtObBACgCAEEBayIANgIAIAANAUH848EAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbTmwQBB/x8gASABQf8fTRs2AgAPC0H848EAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQbTmwQBB/x8gBCAEQf8fTRs2AgAgAiADTw0AQazmwQBBfzYCAAsL2AkBBH8jAEFAaiICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOGAECAwQFBgcICQoLDA0ODxAREhMUFRYXGAALIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAhAQwYCwJAAkACQAJAIAAtAARBAWsOAwECAwALIAIgACgCCDYCBEEUEBgiAEUNGyAAQRBqQc3UwQAoAAA2AAAgAEG91MEA/QAAAP0LAAAgAkEUNgIQIAIgADYCDCACQRQ2AgggAiACQQRqrUKAgICAgAeENwMgIAIgAkEIaq1CgICAgJAHhDcDGCABKAIAIAEoAgQgAkICNwI0IAJBAzYCLCACQYDYwQA2AiggAiACQRhqNgIwIAJBKGoQSSEBIAIoAggiAEUNGiACKAIMIgRBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0cIANBACAFIABBJ2pLGw0dIAQQLgwaCyACIAAtAAVBAnQiACgC+NxB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/AoAAAsgACACIANqNgIIQQALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBECACACIAIoAgggAigCDCgCGBECACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALTwECfyAAKAIEIQIgACgCACEDAkAgACgCCCIALQAARQ0AIANBurPAAEEEIAIoAgwRAABFDQBBAQ8LIAAgAUEKRjoAACADIAEgAigCEBEBAAtKAQJ/IAAgACgCBCIDIAJrNgIEIAAgACgCACACIANLciIENgIAQQEhAyAEBH8gAwUgACgCCCIAKAIAIAEgAiAAKAIEKAIMEQAACwtIAQF/AkAgAUHhAGsiAUH/AXFBGUsEQEEAIQEMAQsgAUECdEH8B3EiAigCwNtBIQEgAigC2NpBIQILIAAgAjYCBCAAIAE2AgALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQ2QEAC8kCAAJAIAAgAk0EQCAAIAFNIAEgAktyDQEjAEEwayICJAAgAiABNgIEIAIgADYCACACQQI2AgwgAkG0pMAANgIIIAJCAjcCFCACIAJBBGqtQoCAgIAQhDcDKCACIAKtQoCAgIAQhDcDICACIAJBIGo2AhAgAkEIaiADENkBAAsjAEEwayIBJAAgASACNgIEIAEgADYCACABQQI2AgwgAUHgo8AANgIIIAFCAjcCFCABIAFBBGqtQoCAgIAQhDcDKCABIAGtQoCAgIAQhDcDICABIAFBIGo2AhAgAUEIaiADENkBAAsjAEEwayIAJAAgACACNgIEIAAgATYCACAAQQI2AgwgAEGApMAANgIIIABCAjcCFCAAIABBBGqtQoCAgIAQhDcDKCAAIACtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIaiADENkBAAs3AAJ/IARBAXEEQCAFuxCOAgwBC0GBCEGACCABLQAAGwshBCACIANBBhBLIAQQ6gEgAEEANgIACzgBAX8jAEEQayICJAAgAkEIaiAAIAAoAgAoAgQRAgAgAigCCCABIAIoAgwoAhARAQAgAkEQaiQACzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQEARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQAACzwBAn8gASgCBCECIAEoAgAhA0EIEBgiAUUEQAALIAEgAjYCBCABIAM2AgAgAEGI2cEANgIEIAAgATYCAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakHEscAAIANBDGpBxLHAACACQai0wAAQbwALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBxJXAADYCCCABQgQ3AhAgAUEIaiAAENkBAAuUBQIHfwF7EGUiEiAKJgECfyMAQdAAayIOJAAgDkKAgICAwAA3AgQgDkEANgIMIA4gDUEARzoALCAOQYCAgPwDNgIoIA5CgICA/IOAgMA/NwIgIA4gDDgCHCAOIAs4AhggDkKAgICAgICAwD83AhBBrOLBACgCAEUEQBBNCwJAAkACQAJAQbDiwQAoAgBFBEBBsOLBAEF/NgIAAn8gCUUEQEEAIQ1BBAwBC0G84sEAKAIAIRFBuOLBACgCACETIAP9EyAE/SABIRVBACENA0AgEiUBIA1BAnQgDUGAgAQgCSANayIPIA9BgIAETxsiD2oiDUECdBAHIQoQZSIQIAomASAPQQJ0Ig8gEUsNAyAOIBAlARAIIhQ2AjAgDiAPNgI0IA8gFEcNBiATIA8gECUBEAkgDiACOAJAIA4gATgCPCAOIAA4AjggEyAPIA5BBGogDkE4aiAVIAUgBiAHIAggDkEQahAkIBBBhAhPBEAgEBC3AQsgCSANSw0AC0Gw4sEAKAIAQQFqIQ8gDigCDCENIA4oAggLIQlBsOLBACAPNgIAIA0QCiEKEGUiDyAKJgEgDyUBEAshECAOIA02AjQgDiAQNgIwIA0gEEcNBCAPJQEgCSANEAwgDigCBCINBEAgCUEEaygCACIQQXhxIhEgDUECdCINQQRBCCAQQQNxIhAbakkNAyAQQQAgESANQSdqSxsNBCAJEC4LIBJBhAhPBEAgEhC3AQsgDkHQAGokACAPDAULQfCSwAAQqwIAC0EAIA8gEUH4k8AAEM8BAAtBqNnBAEEuQdjZwQAQzgEAC0Ho2cEAQS5BmNrBABDOAQALIA5BADYCOCAOQTBqIA5BNGogDkE4ahDUAQALIgklASAJELcBC8ECAQR/IwBBEGsiASQAQdjiwQAtAABBA0cEQCABQQE6AA8gAUEPaiECIwBBIGsiACQAAkACQAJAAkACQAJAAkACQAJAQdjiwQAtAABBAWsOAwQDAQALQdjiwQBBAjoAACACLQAAIAJBADoAAEUNBEHE5sEAKAIAQf////8HcQRAQbzmwQAoAgANBgtByObBACgCAA0BQdjiwQBBAzoAAEHM5sEAQQE2AgALIABBIGokAAwGCwALIABBADYCGCAAQQE2AgwgAEGM1cEANgIIDAMLIABBADYCGCAAQQE2AgwgAEGsgMAANgIIDAILQeCSwAAQngIACyAAQQA2AhggAEEBNgIMIABBvNfBADYCCCAAQgQ3AhAgAEEIakHE18EAENkBAAsgAEIENwIQIABBCGpBqJPAABDZAQALCyABQRBqJAALLQACQCADaUEBRyABQYCAgIB4IANrS3JFBEAgACABIAMgAhA0IgANAQsACyAAC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABB7NbBACABKAIEIAEoAggiAC0ACCAALQAJEJIBAAsgACADNgIEIAAgAjYCACAAQdDWwQAgASgCBCABKAIIIgAtAAggAC0ACRCSAQALqQICAX8BbwJ/IwBBMGsiDSQAQaziwQAoAgBFBEAQTQsCQEGw4sEAKAIARQRAQbDiwQBBfzYCAEHU4sEAQQA2AgAgDSAMQQBHOgAgIA1BgICA/AM2AhwgDUKAgID8g4CAwD83AhQgDSALOAIQIA0gCjgCDCANQoCAgICAgIDAPzcCBCAJQQJ0IglBvOLBACgCACIMSw0BQbjiwQAoAgAgDSACOAIsIA0gATgCKCANIAA4AiQgCUHM4sEAIA1BJGogA/0TIAT9IAEgBSAGIAcgCCANQQRqECRB0OLBACgCAEHU4sEAKAIAEO8BQbDiwQBBsOLBACgCAEEBajYCACANQTBqJAAMAgtB8JLAABCrAgALQQAgCSAMQeiTwAAQzwEACyIJJQEgCRC3AQvUVQMefwR+AXwjAEEQayIaJAAQZSIbIAAmASMAQYAIayIBJAACQAJAAkACQAJA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CyABQZ+4wABBBBBECx4AIABFBEAQrwIACyAAIAIgAyAEIAUgASgCEBERAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQEQsACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARBwALHAAgAEUEQBCvAgALIAAgAiADIAQgASgCEBEyAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQETMACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARNAALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAwALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAAALFAAgASABIAAgACABXRsgACAAXBsLHAEBbyAAJQEgASUBIAEQtwEgAiUBIAIQtwEQAgsYACAARQRAEK8CAAsgACACIAEoAhARAQALHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsfAEG55sEALQAARQRAQbnmwQBBAToAAAsgAEEBNgIACxcAIAAoAgAgASAAKAIEQQxqKAIAEQEACxYBAW8gACABEBQhAhBlIgAgAiYBIAALFgEBbyAAIAEQFSECEGUiACACJgEgAAsWAQFvIAAgARAWIQIQZSIAIAImASAACxkAIAEoAgBBkKTBAEEFIAEoAgQoAgwRAAALDgAgAARAAAsgARDVAQALEwAgASgCBBogAEHclcAAIAEQSQsQACACKAIEGiAAIAEgAhBJCxMAIAEoAgQaIABB8JfAACABEEkLEwAgASgCBBogAEH0lcAAIAEQSQsTACABKAIEGiAAQZSYwAAgARBJCxMAIAEoAgQaIABB4J7AACABEEkLEwAgASgCBBogAEHMv8AAIAEQSQsZACABKAIAQbG9wABBEiABKAIEKAIMEQAACxUAIAEgACgCACIAKAIAIAAoAgQQRAsTACABKAIEGiAAQeCiwQAgARBJCxYAIABBgMjBADYCBCAAIAFBHGo2AgALFgAgAEHEx8EANgIEIAAgAUEcajYCAAsQACAAQQRqED4gAEEcahBdCxkAIAEoAgBB0pfBAEEIIAEoAgQoAgwRAAALGQAgASgCAEGTlcEAQQMgASgCBCgCDBEAAAsZACABKAIAQcjDwQBBFyABKAIEKAIMEQAACxkAIAEoAgBB1MLBAEEUIAEoAgQoAgwRAAALGQAgASgCAEGsw8EAQQog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EGsiASQAIAFB3ZLAADYCDCABIABBB2o2AgggAUEIakHU18EAIAFBDGpB1NfBACAAQQhqQbzVwQAQbwALIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEGc1sEANgIIIABCBDcCECAAQQhqQaTWwQAQ2QEAC0Hc1cEAEJ4CAAsgAEEANgIYIABBATYCDCAAQYzVwQA2AgggAEIENwIQIABBCGpBzNXBABDZAQALQbjmwQBBADoAACAEQQM6AAALIABBIGokACAJKAIMIQMgAigCUEGAgIAEcSIEDQELIAMgCSgCECIASQ0CIAMgAGshAyAJKAIIIABBDGxqDAELIAkoAggLIQ8gAkGAgICAeDYCWCACQcjOwQApAwAiHzcCXCACIARBF3YiADoAZCACIAA6AHggAkEANgJ0IAJB0NjBADYCcCACIAJByABqNgJoIAIgAkHYAGo2AmwgA0UEQCAfpyEDIB9CIIinDAgLIA8gA0EMbGohGCACQZgBaiEVIAJBlwFqIRkDQAJAIA8oAggiAEUEQCACQQA2AogBIAIgAkHoAGo2AoQBIAJBAzYCkAEgAkECNgLQASACQYQBaiACQZABaiACQdABakEAIAJBACACECUgAigChAEiASABKAIMQQFqNgIMRQ0BDA4LIA8oAgQiCSAAQSxsaiEaA0AgAkEANgKAASACIAJB6ABqNgJ8AkACQAJAAkAgCSgCIEGAgICAeEcEQCACQZABaiIAIAkoAiQiGyAJKAIoIhwQQUECIRcgAigCkAENAyAAIAIoApQBIgggAigCmAEiAUHMusAAQQYQIQJAAkAgAigCkAEEQCACKALMASEAIAIoAsgBIQQgAigCxAEhBiACKALAASEDIAIoArQBQX9GDQEgAkGEAWogFSADIAYgBCAAQQAQVgwCCwNAIAJB0AFqIAJBkAFqECsgAigC0AEiAEEBRg0ACwJAAkAgAEEBaw4CGQEACyACIAIpAtQBNwKIASACQQE2AoQBDAILIAJBADYChAEMAQsgAkGEAWogFSADIAYgBCAAQQEQVgsgAigChAFBAUcNAiACKAKIASIAQQZqIgRFDQECQCABIARNBEAgASAERw0BDAMLIAQgCGosAABBv39KDQILIAggASAEIAFB1LrAABCQAgALIAJBAzYCkAEMAwsgASAIaiEHIAQgCGohAwNAAkAg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IAMMBgsCQCACKAJYIgBBgICAgHhHBEAgAEUNAiACKAJcIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIABqSQ0FIAFFIAQgAEEnak1yDQEMBgsgAi0AXEEDRw0BIAIoAmAiAygCACEAIANBBGooAgAiASgCACIEBEAgACAEEQQACyABKAIEIgEEQCAAQQRrKAIAIgRBeHEiBkEEQQggBEEDcSIEGyABakkNBSAEQQAgBiABQSdqSxsNBiAAEC4LIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0EIABFDQAgAUE0Tw0FCyADEC4LQYijwQBBNyACQd8BakGMlsAAQcCjwQAQnwEACwALQdC4wABBPSACQd8BakHAuMAAQei5wAAQnwEAC0Go2cEAQS5B2NnBABDOAQALQejZwQBBLkGY2sEAEM4BAAsLCAAgACUBEAQLDABB9LPAAEEyEBEACwcAEBIQ1wELBABBAQsEAEEACwIACwub3wE+AEGAgMAAC5UTT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAAABAAKgAAAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9sZWdhY3kucnMAc3BhcmstcnMvc3JjL3JheWNhc3QucnMAbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9pbXBscy5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2Vycm9yLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9sYXp5X2xvY2sucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExNy9zcmMvZXh0ZXJucmVmLnJzAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9zcGxhdF9lbmNvZGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2RlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAGxpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS41L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL3JlYWQucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNi9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu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//////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MgcQAGIAAACzAQAAGgAAADIHEABiAAAAAAIAABMAAAAyBxAAYgAAAAUCAAAzAAAAMgcQAGIAAAAJAgAAPgAAADIHEABiAAAADwIAADoAAAAyBxAAYgAAAKsBAAA9AAAAMgcQAGIAAACmAQAARQAAACBhdCBsaW5lIAAAAEACEABjAAAA9wEAACEAAABAAhAAYwAAAPsBAAAMAAAAIGNvbHVtbiBAAhAAYwAAAAICAAAhAAAAQAIQAGMAAAALAgAAKgAAAEACEABjAAAADwIAACwAAABAAhAAYwAAABQCAAAJAAAAaW5mLWluZk5hTgAAPgAAAAwAAAAEAAAAPwAAAEAAAABYAEGAo8EAC/sHAQAAAEIAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5ALcDEABLAAAABQsAAA4AAACkAhAATwAAADwGAAAUAAAApAIQAE8AAAA8BgAAIQAAAKQCEABPAAAAMAYAABQAAACkAhAATwAAADAGAAAhAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAAAABFUhAABgAAAEtSEAAIAAAAU1IQAAoAAAD/axAAAQAAAGludmFsaWQgdHlwZTogAACAUhAADgAAABtWEAALAAAAaW52YWxpZCB2YWx1ZTogAKBSEAAPAAAAG1YQAAsAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlk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aWQgUkFEIG1hZ2ljOiAweAAAAABmEAAVAAAAAgBBqszBAAsBCABBtMzBAAt1IAAA6W1dy9YsUOtjeEGmV3Ebi7n1Ky+JZFpnOv7tcjMv54x1AQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAACAAAOggICAgICAgICAgICAgYXQgOgAAAIhmEAABAAAACjogAAEAAAAAAAAAlWYQAAIAAAACAEGyzcEACwEEAEG8zcEACzEgAADoIC0gAAEAAAAAAAAAwGYQAAMAAAAgICAgICA8dW5rbm93bj4AAgAAAAAAAAACAEH4zcEAC50NIACA4O+/vQAyBhAANAAAAGcBAAAwAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybRBnEAAoAAAAJAAAAAAAAAACAAAAOGcQAGVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2Ug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", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("spark.cjs.js", document.baseURI).href); - } - const imports = __wbg_get_imports(); - if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) { - module_or_path = fetch(module_or_path); +class NormalizedDepth extends Dyno { + constructor({ + z, + zNear, + zFar + }) { + super({ + inTypes: { z: "float", zNear: "float", zFar: "float" }, + outTypes: { depth: "float" }, + inputs: { z, zNear, zFar }, + statements: ({ inputs, outputs }) => [ + `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`, + `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "depth"); + } +} +class DebugColorHue extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { color: "vec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => [ + `${outputs.color} = debugColorHue(uint(${inputs.index}));` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "color"); + } +} +const transformPos = (position, { + scale, + scales, + rotate, + translate +}) => { + return new TransformPosition({ position, scale, scales, rotate, translate }).outputs.position; +}; +const transformDir = (dir, { + scale, + scales, + rotate +}) => { + return new TransformDir({ dir, scale, scales, rotate }).outputs.dir; +}; +const transformQuat = (quaternion, { rotate }) => { + return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion; +}; +class TransformPosition extends Dyno { + constructor({ + position, + scale, + scales, + rotate, + translate + }) { + super({ + inTypes: { + position: "vec3", + scale: "float", + scales: "vec3", + rotate: "vec4", + translate: "vec3" + }, + outTypes: { position: "vec3" }, + inputs: { position, scale, scales, rotate, translate }, + statements: ({ inputs, outputs }) => { + const { position: position2 } = outputs; + if (!position2) { + return []; + } + const { scale: scale2, scales: scales2, rotate: rotate2, translate: translate2 } = inputs; + return [ + `${position2} = ${inputs.position ?? "vec3(0.0, 0.0, 0.0)"};`, + !scale2 ? null : `${position2} *= ${scale2};`, + !scales2 ? null : `${position2} *= ${scales2};`, + !rotate2 ? null : `${position2} = quatVec(${rotate2}, ${position2});`, + !translate2 ? null : `${position2} += ${translate2};` + ].filter(Boolean); + } + }); + } +} +class TransformDir extends Dyno { + constructor({ + dir, + scale, + scales, + rotate + }) { + super({ + inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, + outTypes: { dir: "vec3" }, + inputs: { dir, scale, scales, rotate }, + statements: ({ inputs, outputs }) => { + const { dir: dir2 } = outputs; + if (!dir2) { + return []; + } + const { scale: scale2, scales: scales2, rotate: rotate2 } = inputs; + return [ + `${dir2} = ${inputs.dir ?? "vec3(0.0, 0.0, 0.0)"};`, + !scale2 ? null : `${dir2} *= ${scale2};`, + !scales2 ? null : `${dir2} *= ${scales2};`, + !rotate2 ? null : `${dir2} = quatVec(${rotate2}, ${dir2});` + ].filter(Boolean); + } + }); + } +} +class TransformQuaternion extends Dyno { + constructor({ + quaternion, + rotate + }) { + super({ + inTypes: { quaternion: "vec4", rotate: "vec4" }, + outTypes: { quaternion: "vec4" }, + inputs: { quaternion, rotate }, + statements: ({ inputs, outputs }) => { + const { quaternion: quaternion2 } = outputs; + if (!quaternion2) { + return []; + } + return [ + `${quaternion2} = ${inputs.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, + !rotate ? null : `${quaternion2} = quatQuat(${inputs.rotate}, ${quaternion2});` + ].filter(Boolean); + } + }); + } +} +const dynoIf = () => { + throw new Error("Not implemented"); +}; +const dynoSwitch = () => { + throw new Error("Not implemented"); +}; +const dynoFor = () => { + throw new Error("Not implemented"); +}; +const comment = () => { + throw new Error("Not implemented"); +}; +const arrayIndex = () => { + throw new Error("Not implemented"); +}; +const arrayLength = () => { + throw new Error("Not implemented"); +}; +const textureSize = (texture2, lod) => new TextureSize({ texture: texture2, lod }); +const texture = (texture2, coord, bias) => new Texture({ texture: texture2, coord, bias }); +const texelFetch = (texture2, coord, lod) => new TexelFetch({ texture: texture2, coord, lod }); +class TextureSize extends Dyno { + constructor({ texture: texture2, lod }) { + const textureType = valType(texture2); + super({ + inTypes: { texture: textureType, lod: "int" }, + outTypes: { size: textureSizeType(textureType) }, + inputs: { texture: texture2, lod }, + statements: ({ inputs, outputs }) => [ + `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? "0"});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "size"); + } +} +class Texture extends Dyno { + constructor({ + texture: texture2, + coord, + bias + }) { + const textureType = valType(texture2); + super({ + inTypes: { + texture: textureType, + coord: textureCoordType(textureType), + bias: "float" + }, + outTypes: { sample: textureReturnType(textureType) }, + inputs: { texture: texture2, coord, bias }, + statements: ({ inputs, outputs }) => [ + `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : ""});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "sample"); + } +} +class TexelFetch extends Dyno { + constructor({ + texture: texture2, + coord, + lod + }) { + const textureType = valType(texture2); + super({ + inTypes: { + texture: textureType, + coord: textureSizeType(textureType), + lod: "int" + }, + outTypes: { texel: textureReturnType(textureType) }, + inputs: { texture: texture2, coord, lod }, + statements: ({ inputs, outputs }) => [ + `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? "0"});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "texel"); + } +} +function textureSizeType(textureType) { + switch (textureType) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DShadow": + case "samplerCubeShadow": + return "ivec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DArrayShadow": + return "ivec3"; + default: + throw new Error(`Invalid texture type: ${textureType}`); } - const { instance, module: module2 } = await __wbg_load(await module_or_path, imports); - return __wbg_finalize_init(instance); } +function textureCoordType(textureType) { + switch (textureType) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + return "vec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DShadow": + return "vec3"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "vec4"; + default: + throw new Error(`Invalid texture type: ${textureType}`); + } +} +function textureReturnType(textureType) { + switch (textureType) { + case "sampler2D": + case "sampler2DArray": + case "sampler3D": + case "samplerCube": + case "sampler2DShadow": + return "vec4"; + case "usampler2D": + case "usampler2DArray": + case "usampler3D": + case "usamplerCube": + return "uvec4"; + case "isampler2D": + case "isampler2DArray": + case "isampler3D": + case "isamplerCube": + return "ivec4"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "float"; + default: + throw new Error(`Invalid texture type: ${textureType}`); + } +} +const radians = (degrees2) => new Radians({ degrees: degrees2 }); +const degrees = (radians2) => new Degrees({ radians: radians2 }); +const sin = (radians2) => new Sin({ radians: radians2 }); +const cos = (radians2) => new Cos({ radians: radians2 }); +const tan = (radians2) => new Tan({ radians: radians2 }); +const asin = (sin2) => new Asin({ sin: sin2 }); +const acos = (cos2) => new Acos({ cos: cos2 }); +const atan = (tan2) => new Atan({ tan: tan2 }); +const atan2 = (y, x) => new Atan2({ y, x }); +const sinh = (x) => new Sinh({ x }); +const cosh = (x) => new Cosh({ x }); +const tanh = (x) => new Tanh({ x }); +const asinh = (x) => new Asinh({ x }); +const acosh = (x) => new Acosh({ x }); +const atanh = (x) => new Atanh({ x }); +class Radians extends UnaryOp { + constructor({ degrees: degrees2 }) { + super({ a: degrees2, outTypeFunc: (aType) => aType, outKey: "radians" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.radians} = radians(${inputs.a});` + ]; + } +} +class Degrees extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "degrees" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.degrees} = degrees(${inputs.a});` + ]; + } +} +class Sin extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "sin" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.sin} = sin(${inputs.a});` + ]; + } +} +class Cos extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "cos" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.cos} = cos(${inputs.a});` + ]; + } +} +class Tan extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "tan" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.tan} = tan(${inputs.a});` + ]; + } +} +class Asin extends UnaryOp { + constructor({ sin: sin2 }) { + super({ a: sin2, outTypeFunc: (aType) => aType, outKey: "asin" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.asin} = asin(${inputs.a});` + ]; + } +} +class Acos extends UnaryOp { + constructor({ cos: cos2 }) { + super({ a: cos2, outTypeFunc: (aType) => aType, outKey: "acos" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.acos} = acos(${inputs.a});` + ]; + } +} +class Atan extends UnaryOp { + constructor({ tan: tan2 }) { + super({ a: tan2, outTypeFunc: (aType) => aType, outKey: "atan" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atan} = atan(${inputs.a});` + ]; + } +} +class Atan2 extends BinaryOp { + constructor({ y, x }) { + super({ + a: y, + b: x, + outTypeFunc: (aType, bType) => aType, + outKey: "atan2" + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});` + ]; + } +} +class Sinh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "sinh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.sinh} = sinh(${inputs.a});` + ]; + } +} +class Cosh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "cosh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.cosh} = cosh(${inputs.a});` + ]; + } +} +class Tanh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "tanh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.tanh} = tanh(${inputs.a});` + ]; + } +} +class Asinh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "asinh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.asinh} = asinh(${inputs.a});` + ]; + } +} +class Acosh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "acosh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.acosh} = acosh(${inputs.a});` + ]; + } +} +class Atanh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "atanh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atanh} = atanh(${inputs.a});` + ]; + } +} +const dyno = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Abs, + Acos, + Acosh, + Add, + All, + And, + Any, + Asin, + Asinh, + Atan, + Atan2, + Atanh, + BVec2, + BVec3, + BVec4, + BinaryOp, + Bool, + Ceil, + Clamp, + Combine, + CombineCovSplat, + CombineGsplat, + CompMult, + CompXor, + Compilation, + Cos, + Cosh, + CovSplat, + Cross, + DebugColorHue, + Degrees, + Determinant, + Distance, + Div, + Dot, + Dyno, + DynoBlock, + DynoBool, + DynoBvec2, + DynoBvec3, + DynoBvec4, + DynoConst, + DynoFloat, + DynoInt, + DynoIsampler2D, + DynoIsampler2DArray, + DynoIsampler3D, + DynoIsamplerCube, + DynoIvec2, + DynoIvec3, + DynoIvec4, + DynoLiteral, + DynoMat2, + DynoMat2x2, + DynoMat2x3, + DynoMat2x4, + DynoMat3, + DynoMat3x2, + DynoMat3x3, + DynoMat3x4, + DynoMat4, + DynoMat4x2, + DynoMat4x3, + DynoMat4x4, + DynoOutput, + DynoProgram, + DynoProgramTemplate, + DynoRemapIndex, + DynoSampler2D, + DynoSampler2DArray, + DynoSampler2DArrayShadow, + DynoSampler2DShadow, + DynoSampler3D, + DynoSamplerCube, + DynoSamplerCubeShadow, + DynoUint, + DynoUniform, + DynoUsampler2D, + DynoUsampler2DArray, + DynoUsampler3D, + DynoUsamplerCube, + DynoUvec2, + DynoUvec3, + DynoUvec4, + DynoValue, + DynoVec2, + DynoVec3, + DynoVec4, + Equal, + Exp, + Exp2, + ExtendVec, + FaceForward, + Float, + FloatBitsToInt, + FloatBitsToUint, + Floor, + Fract, + GreaterThan, + GreaterThanEqual, + Gsplat, + GsplatNormal, + GsplatToCovSplat, + Hash, + Hash2, + Hash3, + Hash4, + HashFloat, + HashVec2, + HashVec3, + HashVec4, + IMod, + IVec2, + IVec3, + IVec4, + Int, + IntBitsToFloat, + Inverse, + InverseSqrt, + IsInf, + IsNan, + Length, + LessThan, + LessThanEqual, + Log, + Log2, + Mat2, + Mat3, + Mat4, + Max, + Min, + Mix, + Mod, + Modf, + Mul, + Neg, + Normalize, + NormalizedDepth, + Not, + NotEqual, + NumCovSplats, + NumExtSplats, + NumPackedSplats, + Or, + Outer, + OutputCovSplat, + OutputExtCovSplat, + OutputExtendedSplat, + OutputPackedSplat, + OutputRgba8, + PackHalf2x16, + PackSnorm2x16, + PackUnorm2x16, + PagedSplatTexCoord, + PcgHash, + PcgMix, + PcgNext, + Pow, + ProjectH, + Radians, + ReadCovSplat, + ReadExtSplat, + ReadPackedSplat, + ReadPackedSplatRange, + ReflectVec, + RefractVec, + Round, + Select, + Shl, + Shr, + Sign, + SimpleCast, + Sin, + Sinh, + Smoothstep, + SplatTexCoord, + Split, + SplitCovSplat, + SplitGsplat, + Sqr, + Sqrt, + Step, + Sub, + Swizzle, + TCovSplats, + TExtSplats, + TPackedSplats, + Tan, + Tanh, + TexelFetch, + Texture, + TextureSize, + TransformDir, + TransformGsplat, + TransformPosition, + TransformQuaternion, + Transpose, + TrinaryOp, + Trunc, + UVec2, + UVec3, + UVec4, + Uint, + UintBitsToFloat, + UintToRgba8, + UnaryOp, + UnpackHalf2x16, + UnpackSnorm2x16, + UnpackUnorm2x16, + Vec2, + Vec3, + Vec4, + Xor, + abs, + acos, + acosh, + add, + all, + and, + any, + arrayIndex, + arrayLength, + asin, + asinh, + atan, + atan2, + atanh, + bool, + bvec2, + bvec3, + bvec4, + ceil, + clamp, + combine, + combineCovSplat, + combineGsplat, + comment, + compMult, + compXor, + cos, + cosh, + cross, + debugColorHue, + defineCovSplat, + defineExtSplats, + defineGsplat, + defineGsplatNormal, + definePackedSplats, + degrees, + determinant, + distance, + div, + dot, + dyno: dyno$1, + dynoBlock, + dynoBool, + dynoBvec2, + dynoBvec3, + dynoBvec4, + dynoConst, + dynoDeclare, + dynoFloat, + dynoFor, + dynoIf, + dynoInt, + dynoIsampler2D, + dynoIsampler2DArray, + dynoIsampler3D, + dynoIsamplerCube, + dynoIvec2, + dynoIvec3, + dynoIvec4, + dynoLiteral, + dynoMat2, + dynoMat2x2, + dynoMat2x3, + dynoMat2x4, + dynoMat3, + dynoMat3x2, + dynoMat3x3, + dynoMat3x4, + dynoMat4, + dynoMat4x2, + dynoMat4x3, + dynoMat4x4, + dynoSampler2D, + dynoSampler2DArray, + dynoSampler2DArrayShadow, + dynoSampler2DShadow, + dynoSampler3D, + dynoSamplerCube, + dynoSamplerCubeShadow, + dynoSwitch, + dynoUint, + dynoUsampler2D, + dynoUsampler2DArray, + dynoUsampler3D, + dynoUsamplerCube, + dynoUvec2, + dynoUvec3, + dynoUvec4, + dynoVec2, + dynoVec3, + dynoVec4, + equal, + exp, + exp2, + extendVec, + faceforward, + float, + floatBitsToInt, + floatBitsToUint, + floor, + fract, + greaterThan, + greaterThanEqual, + gsplatNormal, + gsplatToCovSplat, + hash, + hash2, + hash3, + hash4, + hashFloat, + hashVec2, + hashVec3, + hashVec4, + imod, + int, + intBitsToFloat, + inverse, + inversesqrt, + isAllFloatType, + isBoolType, + isFloatType, + isInf, + isIntType, + isMat2, + isMat3, + isMat4, + isMatFloatType, + isNan, + isScalarType, + isUintType, + isVector2Type, + isVector3Type, + isVector4Type, + isVectorType, + ivec2, + ivec3, + ivec4, + length, + lessThan, + lessThanEqual, + literalNegOne, + literalOne, + literalZero, + log, + log2, + mat2, + mat3, + mat4, + max, + min, + mix, + mod, + modf, + mul, + neg, + normalize, + normalizedDepth, + not, + notEqual, + numCovSplats, + numExtSplats, + numPackedSplats, + numberAsFloat, + numberAsInt, + numberAsUint, + or, + outer, + outputCovSplat, + outputCovSplatDepth, + outputExtCovSplat, + outputExtendedSplat, + outputPackedSplat, + outputRgba8, + outputSplatDepth, + packHalf2x16, + packSnorm2x16, + packUnorm2x16, + pagedSplatTexCoord, + pcgHash, + pcgMix, + pcgNext, + pow, + projectH, + radians, + readCovSplat, + readExtSplat, + readPackedSplat, + readPackedSplatRange, + reflectVec, + refractVec, + remapIndex, + round, + sameSizeIvec, + sameSizeUvec, + sameSizeVec, + select, + shl, + shr, + sign, + sin, + sinh, + smoothstep, + splatTexCoord, + split, + splitCovSplat, + splitGsplat, + sqr, + sqrt, + step, + sub, + swizzle, + tan, + tanh, + texelFetch, + texture, + textureSize, + transformDir, + transformGsplat, + transformPos, + transformQuat, + transpose, + trunc, + typeLiteral, + uint, + uintBitsToFloat, + uintToRgba8, + uniform, + unindent, + unindentLines, + unpackHalf2x16, + unpackSnorm2x16, + unpackUnorm2x16, + uvec2, + uvec3, + uvec4, + valType, + vec2, + vec3, + vec4, + vectorDim, + vectorElementType, + xor +}, Symbol.toStringTag, { value: "Module" })); var computeUvec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeUvec4_Vec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n \n target = uvec4(0u, 0u, 0u, 0u);\n\n \n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeUvec4x2_Vec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n \n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n \n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeVec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}"; -var oldSplatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}"; -var oldSplatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n \n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n \n vSplatIndex = splatIndex;\n\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n \n \n \n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}"; -var splatDefines_default = "const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\nuint encodeQuatOctXy88R8(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n \n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\nvec4 decodeQuatOctXy88R8(uint encoded) {\n \n uint quantU = encoded & uint(0xFFu); \n uint quantV = (encoded >> 8u) & uint(0xFFu); \n uint angleInt = encoded >> 16u; \n\n \n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n \n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n \n uint quantU = encoded & uint(0x3FFu); \n uint quantV = (encoded >> 10u) & uint(0x3FFu); \n uint angleInt = encoded >> 20u; \n\n \n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n \n \n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n \n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n \n \n}\n\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\nvec3 quatVec(vec4 q, vec3 v) {\n \n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n \n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n \n float cosHalfTheta = dot(q1, q2);\n\n \n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n \n \n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n \n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n \n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n \n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n \n float hue = fract(float(i) * 0.61803398875);\n \n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); \n}"; -var splatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n \n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n \n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}"; -var splatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n \n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n \n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n \n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n \n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n \n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}"; +var splatDefines_default = "const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\nuint encodeQuatOctXy88R8(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n \n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\nvec4 decodeQuatOctXy88R8(uint encoded) {\n \n uint quantU = encoded & uint(0xFFu); \n uint quantV = (encoded >> 8u) & uint(0xFFu); \n uint angleInt = encoded >> 16u; \n\n \n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n \n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n \n uint quantU = encoded & uint(0x3FFu); \n uint quantV = (encoded >> 10u) & uint(0x3FFu); \n uint angleInt = encoded >> 20u; \n\n \n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n \n \n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n \n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n \n \n}\n\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\nvec3 quatVec(vec4 q, vec3 v) {\n \n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n \n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n \n float cosHalfTheta = dot(q1, q2);\n\n \n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n \n \n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n \n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n \n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n \n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n \n float hue = fract(float(i) * 0.61803398875);\n \n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); \n}"; +var splatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n \n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n \n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}"; +var splatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n \n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n \n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n \n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n \n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n \n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}"; let shaders = null; function getShaders() { if (!shaders) { THREE__namespace.ShaderChunk.splatDefines = splatDefines_default; shaders = { - oldSplatVertex: oldSplatVertex_default, - oldSplatFragment: oldSplatFragment_default, splatVertex: splatVertex_default, splatFragment: splatFragment_default, computeVec4Template: computeVec4_default, @@ -8180,287 +6915,68 @@ const _Readback = class _Readback { return Promise.all(promises).then(() => readback); } // Perform render operation to run the Rgba8Readback program - // but don't perform the readback yet. - render({ - reader, - count, - renderer - }) { - this.renderer = renderer || this.renderer; - if (!this.renderer) { - throw new Error("No renderer"); - } - this.ensureCapacity(count); - const { program, material } = this.prepareProgramMaterial(reader); - program.update(); - const renderState = this.saveRenderState(this.renderer); - this.process({ count, material }); - this.resetRenderState(this.renderer, renderState); - } - // Perform a readback of the render target, returning a buffer of the - // given type. - async readback({ - readback - }) { - if (!this.renderer) { - throw new Error("No renderer"); - } - const renderState = this.saveRenderState(this.renderer); - const promise = this.read({ readback }); - this.resetRenderState(this.renderer, renderState); - return promise; - } - // Perform a render and readback operation for the given Rgba8Readback, - // and readback buffer (call ensureBuffer first). - async renderReadback({ - reader, - count, - renderer, - readback - }) { - this.renderer = renderer || this.renderer; - if (!this.renderer) { - throw new Error("No renderer"); - } - this.ensureCapacity(count); - const { program, material } = this.prepareProgramMaterial(reader); - program.update(); - const renderState = this.saveRenderState(this.renderer); - this.process({ count, material }); - const promise = this.read({ readback }); - this.resetRenderState(this.renderer, renderState); - return promise; - } - getTexture() { - var _a2; - return (_a2 = this.target) == null ? void 0 : _a2.texture; - } -}; -_Readback.programTemplate = null; -_Readback.readbackProgram = /* @__PURE__ */ new WeakMap(); -_Readback.fullScreenQuad = new Pass_js.FullScreenQuad( - new THREE__namespace.RawShaderMaterial({ visible: false }) -); -let Readback = _Readback; -const _RgbaArray = class _RgbaArray { - constructor(options = {}) { - this.capacity = 0; - this.count = 0; - this.array = null; - this.readback = null; - this.source = null; - this.needsUpdate = true; - this.dyno = new DynoUniform({ - key: "rgbaArray", - type: TRgbaArray, - globals: () => [defineRgbaArray], - value: { - texture: _RgbaArray.getEmpty(), - count: 0 - }, - update: (value) => { - value.texture = this.getTexture(); - value.count = this.count; - return value; - } - }); - if (options.array) { - this.array = options.array; - const splatCount = Math.floor(this.array.length / 4); - this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - if (this.capacity > splatCount) { - this.array = new Uint8Array(this.capacity * 4); - this.array.set(options.array); - } - this.count = Math.min( - splatCount, - options.count ?? Number.POSITIVE_INFINITY - ); - } else { - this.capacity = options.capacity ?? 0; - this.count = 0; - } - } - // Free up resources - dispose() { - if (this.readback) { - this.readback.dispose(); - this.readback = null; - } - if (this.source) { - this.source.dispose(); - this.source = null; - } - } - // Ensure that our array is large enough to hold capacity RGBA8 values. - ensureCapacity(capacity) { - var _a2; - if (!this.array || capacity > (((_a2 = this.array) == null ? void 0 : _a2.length) ?? 0) / 4) { - this.capacity = getTextureSize(capacity).maxSplats; - const newArray2 = new Uint8Array(this.capacity * 4); - if (this.array) { - newArray2.set(this.array); - } - this.array = newArray2; - } - return this.array; - } - // Get the THREE.DataArrayTexture from either the readback or the source. - getTexture() { - var _a2; - let texture2 = (_a2 = this.readback) == null ? void 0 : _a2.getTexture(); - if (this.source || this.array) { - texture2 = this.maybeUpdateSource(); - } - return texture2 ?? _RgbaArray.getEmpty(); - } - // Create or get a THREE.DataArrayTexture from the data array. - maybeUpdateSource() { - if (!this.array) { - throw new Error("No array"); - } - if (this.needsUpdate || !this.source) { - this.needsUpdate = false; - if (this.source) { - const { width, height, depth } = this.source.image; - if (this.capacity !== width * height * depth) { - this.source.dispose(); - this.source = null; - } - } - if (!this.source) { - const { width, height, depth } = getTextureSize(this.capacity); - this.source = new THREE__namespace.DataArrayTexture( - this.array, - width, - height, - depth - ); - this.source.format = THREE__namespace.RGBAFormat; - this.source.type = THREE__namespace.UnsignedByteType; - this.source.internalFormat = "RGBA8"; - this.source.needsUpdate = true; - } else if (this.array.buffer !== this.source.image.data.buffer) { - this.source.image.data = new Uint8Array(this.array.buffer); - } - this.source.needsUpdate = true; - } - return this.source; - } - // Generate the RGBA8 values from a Rgba8Readback dyno program. + // but don't perform the readback yet. render({ reader, count, renderer }) { - if (!this.readback) { - this.readback = new Readback({ renderer }); + this.renderer = renderer || this.renderer; + if (!this.renderer) { + throw new Error("No renderer"); } - this.readback.render({ reader, count, renderer }); - this.capacity = this.readback.capacity; - this.count = this.readback.count; + this.ensureCapacity(count); + const { program, material } = this.prepareProgramMaterial(reader); + program.update(); + const renderState = this.saveRenderState(this.renderer); + this.process({ count, material }); + this.resetRenderState(this.renderer, renderState); } - // Extract the RGBA8 values from a PackedSplats collection. - fromPackedSplats({ - packedSplats, - base, - count, - renderer + // Perform a readback of the render target, returning a buffer of the + // given type. + async readback({ + readback }) { - const { dynoSplats, dynoBase, dynoCount, reader } = _RgbaArray.makeDynos(); - dynoSplats.packedSplats = packedSplats; - dynoBase.value = base; - dynoCount.value = count; - this.render({ reader, count, renderer }); - return this; - } - // Read back the RGBA8 values from the readback buffer. - async read() { - if (!this.readback) { - throw new Error("No readback"); - } - if (!this.array || this.array.length < this.count * 4) { - this.array = new Uint8Array(this.capacity * 4); - } - const result = await this.readback.readback({ readback: this.array }); - return result.subarray(0, this.count * 4); - } - async getArray() { - if (this.readback) { - return await this.read(); - } - if (this.array) { - return this.array; + if (!this.renderer) { + throw new Error("No renderer"); } - throw new Error("No array"); + const renderState = this.saveRenderState(this.renderer); + const promise = this.read({ readback }); + this.resetRenderState(this.renderer, renderState); + return promise; } - // Can be used where you need an uninitialized THREE.DataArrayTexture like - // a uniform you will update with the result of this.getTexture() later. - static getEmpty() { - if (!_RgbaArray.emptySource) { - const emptyArray = new Uint8Array(1 * 4); - _RgbaArray.emptySource = new THREE__namespace.DataArrayTexture(emptyArray, 1, 1, 1); - _RgbaArray.emptySource.format = THREE__namespace.RGBAFormat; - _RgbaArray.emptySource.type = THREE__namespace.UnsignedByteType; - _RgbaArray.emptySource.internalFormat = "RGBA8"; - _RgbaArray.emptySource.needsUpdate = true; + // Perform a render and readback operation for the given Rgba8Readback, + // and readback buffer (call ensureBuffer first). + async renderReadback({ + reader, + count, + renderer, + readback + }) { + this.renderer = renderer || this.renderer; + if (!this.renderer) { + throw new Error("No renderer"); } - return _RgbaArray.emptySource; + this.ensureCapacity(count); + const { program, material } = this.prepareProgramMaterial(reader); + program.update(); + const renderState = this.saveRenderState(this.renderer); + this.process({ count, material }); + const promise = this.read({ readback }); + this.resetRenderState(this.renderer, renderState); + return promise; } - // Create a dyno program that can extract RGBA8 values from a PackedSplats - static makeDynos() { - if (!_RgbaArray.dynos) { - const dynoSplats = new DynoPackedSplats(); - const dynoBase = new DynoInt({ value: 0 }); - const dynoCount = new DynoInt({ value: 0 }); - const reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("index is undefined"); - } - index = add(index, dynoBase); - const gsplat = readPackedSplatRange( - dynoSplats, - index, - dynoBase, - dynoCount - ); - return { rgba8: splitGsplat(gsplat).outputs.rgba }; - } - ); - _RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader }; - } - return _RgbaArray.dynos; + getTexture() { + var _a2; + return (_a2 = this.target) == null ? void 0 : _a2.texture; } }; -_RgbaArray.emptySource = null; -_RgbaArray.dynos = null; -let RgbaArray = _RgbaArray; -const TRgbaArray = { type: "RgbaArray" }; -const defineRgbaArray = unindent(` - struct RgbaArray { - sampler2DArray texture; - int count; - }; -`); -function readRgbaArray(rgba, index) { - const dyno2 = new Dyno({ - inTypes: { rgba: TRgbaArray, index: "int" }, - outTypes: { rgba: "vec4" }, - inputs: { rgba, index }, - globals: () => [defineRgbaArray], - statements: ({ inputs, outputs }) => unindentLines(` - if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { - ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); - } else { - ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0); - } - `) - }); - return dyno2.outputs.rgba; -} +_Readback.programTemplate = null; +_Readback.readbackProgram = /* @__PURE__ */ new WeakMap(); +_Readback.fullScreenQuad = new Pass_js.FullScreenQuad( + new THREE__namespace.RawShaderMaterial({ visible: false }) +); +let Readback = _Readback; var SplatEditSdfType = /* @__PURE__ */ ((SplatEditSdfType2) => { SplatEditSdfType2["ALL"] = "all"; SplatEditSdfType2["PLANE"] = "plane"; @@ -9263,2092 +7779,2437 @@ class SplatGenerator extends THREE__namespace.Object3D { } } } -const _SplatAccumulator = class _SplatAccumulator { - constructor({ - extSplats, - covSplats - } = {}) { - this.time = 0; - this.deltaTime = 0; - this.viewToWorld = new THREE__namespace.Matrix4(); - this.viewOrigin = new THREE__namespace.Vector3(); - this.viewDirection = new THREE__namespace.Vector3(); - this.maxSplats = 0; - this.numSplats = 0; - this.target = null; - this.mapping = []; - this.version = -1; - this.mappingVersion = -1; - this.readback = null; - this.readbackSplats = []; - if (!threeMrtArray) { - throw new Error("Spark requires THREE.js r179 or above"); +class CsplatArray { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CsplatArray.prototype); + obj.__wbg_ptr = ptr; + CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CsplatArrayFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_csplatarray_free(ptr, 0); + } + /** + * @param {number} lod_base + */ + bhatt_lod(lod_base) { + wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base); + } + /** + * @returns {boolean} + */ + has_lod() { + const ret = wasm.csplatarray_has_lod(this.__wbg_ptr); + return ret !== 0; + } + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(rgba) { + wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba); + } + /** + * @returns {number} + */ + len() { + const ret = wasm.csplatarray_len(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(lod_base, merge_filter) { + wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter); + } + /** + * @returns {object} + */ + to_extsplats() { + const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } - this.extSplats = extSplats ?? true; - this.covSplats = covSplats ?? false; + return takeFromExternrefTable0(ret[0]); } - dispose() { - if (this.target) { - this.target.dispose(); - this.target = null; + /** + * @returns {object} + */ + to_extsplats_lod() { + const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_packedsplats() { + const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_packedsplats_lod() { + const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {number} + */ + get maxShDegree() { + const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {number} + */ + get numSplats() { + const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} arg0 + */ + set maxShDegree(arg0) { + wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0); + } + /** + * @param {number} arg0 + */ + set numSplats(arg0) { + wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0); + } +} +if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free; +class GsplatArray { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(GsplatArray.prototype); + obj.__wbg_ptr = ptr; + GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + GsplatArrayFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_gsplatarray_free(ptr, 0); + } + /** + * @returns {number} + */ + get maxShDegree() { + const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {number} + */ + get numSplats() { + const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + */ + bhatt_lod(lod_base) { + wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base); + } + /** + * @returns {boolean} + */ + has_lod() { + const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr); + return ret !== 0; + } + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(rgba) { + wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba); + } + /** + * @returns {number} + */ + len() { + const ret = wasm.gsplatarray_len(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(lod_base, merge_filter) { + wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter); + } + /** + * @returns {object} + */ + to_extsplats() { + const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_extsplats_lod() { + const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats(encoding) { + const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats_lod(encoding) { + const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } + return takeFromExternrefTable0(ret[0]); } - // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator - // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) - getTextures() { - if (this.target) { - return this.target.textures; - } - return _SplatAccumulator.emptyTextures; + /** + * @param {number} arg0 + */ + set maxShDegree(arg0) { + wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0); } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(splatCounts) { - let maxSplats = 0; - const mapping = splatCounts.map((numSplats) => { - const base = maxSplats; - const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - maxSplats += rounded; - return { base, count: numSplats }; - }); - return { maxSplats, mapping }; + /** + * @param {number} arg0 + */ + set numSplats(arg0) { + wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0); } - // Ensures our NewSplatAccumulator.target render target has enough space - // to generate maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate({ maxSplats }) { - if (this.target && (maxSplats ?? 1) <= this.maxSplats) { - return false; - } - this.dispose(); - const textureSize2 = getTextureSize(maxSplats ?? 1); - const { width, height, depth } = textureSize2; - this.maxSplats = textureSize2.maxSplats; - this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, { - depthBuffer: false, - stencilBuffer: false, - generateMipmaps: false, - magFilter: THREE__namespace.NearestFilter, - minFilter: THREE__namespace.NearestFilter, - format: THREE__namespace.RGBAIntegerFormat, - type: THREE__namespace.UnsignedIntType - }); - this.target.scissorTest = true; - if (this.extSplats) { - const target2 = this.target.texture.clone(); - const target3 = this.target.texture.clone(); - target3.format = THREE__namespace.RGBAFormat; - target3.type = THREE__namespace.UnsignedByteType; - target3.internalFormat = "RGBA8"; - this.target.textures = [this.target.texture, target2, target3]; - } else { - const target3 = this.target.texture.clone(); - target3.format = THREE__namespace.RGBAFormat; - target3.type = THREE__namespace.UnsignedByteType; - target3.internalFormat = "RGBA8"; - this.target.textures = [this.target.texture, target3]; +} +if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free; +function decode_rad_header(bytes) { + const ret = wasm.decode_rad_header(bytes); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} +function get_raycast_buffer() { + const ret = wasm.get_raycast_buffer(); + return ret; +} +function get_raycast_buffer2() { + const ret = wasm.get_raycast_buffer2(); + return ret; +} +function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) { + const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count); + return ret; +} +function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) { + const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity); + return ret; +} +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) { + const ret = Error(getStringFromWasm0(arg0, arg1)); + return ret; + }, + __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) { + const v = arg0; + const ret = typeof v === "boolean" ? v : void 0; + return isLikeNone(ret) ? 16777215 : ret ? 1 : 0; + }, + __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) { + const ret = arg0 in arg1; + return ret; + }, + __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) { + const ret = !arg0; + return ret; + }, + __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) { + const val = arg0; + const ret = typeof val === "object" && val !== null; + return ret; + }, + __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) { + const ret = arg0 === void 0; + return ret; + }, + __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) { + const ret = arg0 == arg1; + return ret; + }, + __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) { + const obj = arg1; + const ret = typeof obj === "number" ? obj : void 0; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }, + __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) { + const obj = arg1; + const ret = typeof obj === "string" ? obj : void 0; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_csplatarray_new: function(arg0) { + const ret = CsplatArray.__wrap(arg0); + return ret; + }, + __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }, + __wbg_get_4848e350b40afc16: function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; + }, + __wbg_get_f96702c6245e4ef9: function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; + }, arguments); + }, + __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; + }, + __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) { + const ret = arg0[arg1]; + return ret; + }, + __wbg_gsplatarray_new: function(arg0) { + const ret = GsplatArray.__wrap(arg0); + return ret; + }, + __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) { + let result; + try { + result = arg0 instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) { + let result; + try { + result = arg0 instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_length_0c32cb8543c8e4c8: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_1e701798fdcaa3b4: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_6e821edde497a532: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_a4ca9e78359b5f1f: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_fd4646b401926788: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_new_227d7c05414eb861: function() { + const ret = new Error(); + return ret; + }, + __wbg_new_4f9fafbb3909af72: function() { + const ret = new Object(); + return ret; + }, + __wbg_new_99cabae501c0a8a0: function() { + const ret = /* @__PURE__ */ new Map(); + return ret; + }, + __wbg_new_a560378ea1240b14: function(arg0) { + const ret = new Uint8Array(arg0); + return ret; + }, + __wbg_new_f3c9df4f38f3f798: function() { + const ret = new Array(); + return ret; + }, + __wbg_new_with_length_26bffbe236bf73f9: function(arg0) { + const ret = new Float32Array(arg0 >>> 0); + return ret; + }, + __wbg_new_with_length_41a22191b9bdfd66: function(arg0) { + const ret = new Uint32Array(arg0 >>> 0); + return ret; + }, + __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) { + Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2); + }, + __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) { + Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2); + }, + __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) { + Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2); + }, + __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) { + const ret = arg0.push(arg1); + return ret; + }, + __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) { + const ret = arg0.set(arg1, arg2); + return ret; + }, + __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) { + arg0.set(getArrayU32FromWasm0(arg1, arg2)); + }, + __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) { + arg0[arg1] = arg2; + }, + __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) { + arg0[arg1 >>> 0] = arg2; + }, + __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); + }, + __wbg_set_8ee2d34facb8466e: function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.set(arg0, arg1, arg2); + return ret; + }, arguments); + }, + __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) { + arg0.set(getArrayF32FromWasm0(arg1, arg2)); + }, + __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) { + arg0[arg1 >>> 0] = arg2 >>> 0; + }, + __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { + const ret = arg1.stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbindgen_cast_0000000000000001: function(arg0) { + const ret = arg0; + return ret; + }, + __wbindgen_cast_0000000000000002: function(arg0, arg1) { + const ret = getArrayF32FromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000003: function(arg0, arg1) { + const ret = getArrayU32FromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000004: function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000005: function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return ret; + }, + __wbindgen_init_externref_table: function() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, void 0); + table.set(offset + 0, void 0); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); } - return true; - } - saveRenderState(renderer) { - return { - target: renderer.getRenderTarget(), - xrEnabled: renderer.xr.enabled, - autoClear: renderer.autoClear - }; + }; + return { + __proto__: null, + "./spark_rs_bg.js": import0 + }; +} +typeof FinalizationRegistry === "undefined" ? {} : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1)); +const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1)); +const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1)); +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_externrefs.set(idx, obj); + return idx; +} +function debugString(val) { + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; } - resetRenderState(renderer, state) { - renderer.setRenderTarget(state.target); - renderer.xr.enabled = state.xrEnabled; - renderer.autoClear = state.autoClear; + if (type == "string") { + return `"${val}"`; } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(generator, covGenerator) { - const theGenerator = generator ?? covGenerator; - if (!theGenerator) { - throw new Error("Either generator or covGenerator must be provided"); + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } else { + return `Symbol(${description})`; } - let program = _SplatAccumulator.generatorProgram.get(theGenerator); - if (!program) { - const graph = dynoBlock( - { index: "int" }, - {}, - ({ index }, _outputs, { roots }) => { - if (generator) { - generator.inputs.index = index; - } - if (covGenerator) { - covGenerator.inputs.index = index; - } - if (this.extSplats) { - if (!this.covSplats) { - if (generator) { - const output = outputExtendedSplat(generator.outputs.gsplat); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } else { - if (covGenerator) { - const output = outputExtCovSplat(covGenerator.outputs.covsplat); - roots.push(output); - } else if (generator) { - const covsplat = gsplatToCovSplat(generator.outputs.gsplat); - const output = outputExtCovSplat(covsplat); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } - } else { - if (!this.covSplats) { - if (generator) { - const centerSubView = sub( - splitGsplat(generator.outputs.gsplat).outputs.center, - _SplatAccumulator.viewCenterUniform - ); - const halfAlpha = mul( - splitGsplat(generator.outputs.gsplat).outputs.opacity, - dynoConst("float", 0.5) - ); - const gsplat = combineGsplat({ - gsplat: generator.outputs.gsplat, - center: centerSubView, - opacity: halfAlpha - }); - const output = outputPackedSplat( - gsplat, - dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) - ); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } else { - let covsplat; - if (covGenerator) { - covsplat = covGenerator.outputs.covsplat; - } else if (generator) { - covsplat = gsplatToCovSplat(generator.outputs.gsplat); - } else { - throw new Error("Generator must be provided"); - } - const centerSubView = sub( - splitCovSplat(covsplat).outputs.center, - _SplatAccumulator.viewCenterUniform - ); - const halfAlpha = mul( - splitCovSplat(covsplat).outputs.opacity, - dynoConst("float", 0.5) - ); - covsplat = combineCovSplat({ - covsplat, - center: centerSubView, - opacity: halfAlpha - }); - const output = outputCovSplat( - covsplat, - dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) - ); - roots.push(output); - } - if (!generator) { - throw new Error("Generator must be provided"); - } - } - if (generator) { - const outputDepth = outputSplatDepth( - generator.outputs.gsplat, - _SplatAccumulator.viewCenterUniform, - _SplatAccumulator.viewDirUniform, - _SplatAccumulator.sortRadialUniform - ); - roots.push(outputDepth); - } - if (covGenerator) { - const outputDepth = outputCovSplatDepth( - covGenerator.outputs.covsplat, - _SplatAccumulator.viewCenterUniform, - _SplatAccumulator.viewDirUniform, - _SplatAccumulator.sortRadialUniform - ); - roots.push(outputDepth); - } - return void 0; - } - ); - program = new DynoProgram({ - graph, - inputs: { index: "_index" }, - outputs: {}, - template: this.extSplats ? _SplatAccumulator.programExtTemplate : _SplatAccumulator.programTemplate - // consoleLog: true, - }); - _SplatAccumulator.generatorProgram.set(theGenerator, program); + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } else { + return "Function"; } - Object.assign(program.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }); - const material = program.prepareMaterial(); - _SplatAccumulator.fullScreenQuad.material = material; - return { program, material }; } - generate({ - generator, - covGenerator, - base, - count, - renderer - }) { - if (!this.target) { - throw new Error("Target must be initialized with ensureGenerate"); + if (Array.isArray(val)) { + const length2 = val.length; + let debug = "["; + if (length2 > 0) { + debug += debugString(val[0]); } - if (base + count > this.maxSplats) { - throw new Error("Base + count exceeds maxSplats"); + for (let i = 1; i < length2; i++) { + debug += ", " + debugString(val[i]); } - const { program, material } = this.prepareProgramMaterial( - generator, - covGenerator - ); - program.update(); - const renderState = this.saveRenderState(renderer); - const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - material.uniforms.targetBase.value = base; - material.uniforms.targetCount.value = count; - while (base < nextBase) { - const layer = Math.floor(base / layerSize); - material.uniforms.targetLayer.value = layer; - const layerBase = layer * layerSize; - const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) - ); - this.target.scissor.set( - 0, - layerYStart, - SPLAT_TEX_WIDTH, - layerYEnd - layerYStart - ); - renderer.setRenderTarget(this.target, layer); - renderer.xr.enabled = false; - renderer.autoClear = false; - _SplatAccumulator.fullScreenQuad.render(renderer); - base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + debug += "]"; + return debug; + } + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + return toString.call(val); + } + if (className == "Object") { + try { + return "Object(" + JSON.stringify(val) + ")"; + } catch (_) { + return "Object"; } - this.resetRenderState(renderer, renderState); - return { nextBase }; } - prepareGenerate({ - renderer, - scene, - time, - camera, - sortRadial, - renderSize, - previous, - lodInstances - }) { - var _a2; - this.viewToWorld.copy(camera.matrixWorld); - camera.getWorldPosition(this.viewOrigin); - camera.getWorldDirection(this.viewDirection); - _SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin); - _SplatAccumulator.viewDirUniform.value.copy(this.viewDirection); - _SplatAccumulator.sortRadialUniform.value = sortRadial; - this.time = time; - this.deltaTime = time - previous.time; - const allGenerators = []; - scene.traverse((node) => { - if (node instanceof SplatGenerator) { - if (!camera.layers || camera.layers.test(node.layers)) { - allGenerators.push(node); - } - } - }); - const globalEditsSet = /* @__PURE__ */ new Set(); - scene.traverseVisible((node) => { - if (node instanceof SplatEdit) { - let ancestor = node.parent; - while (ancestor != null && !(ancestor instanceof SplatMesh)) { - ancestor = ancestor.parent; - } - if (ancestor == null) { - globalEditsSet.add(node); - } - } - }); - const globalEdits = Array.from(globalEditsSet); - for (const object of allGenerators) { - try { - (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { - renderer, - object, - time: this.time, - deltaTime: this.deltaTime, - viewToWorld: this.viewToWorld, - camera, - renderSize, - globalEdits, - lodIndices: lodInstances && object instanceof SplatMesh ? lodInstances.get(object) : void 0 - }); - } catch (error) { - console.error("frameUpdate error", error); - object.generator = void 0; - object.covGenerator = void 0; - object.generatorError = error; - } + if (val instanceof Error) { + return `${val.name}: ${val.message} +${val.stack}`; + } + return className; +} +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} +function getArrayU16FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len); +} +function getArrayU32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); +} +let cachedUint16ArrayMemory0 = null; +function getUint16ArrayMemory0() { + if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) { + cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer); + } + return cachedUint16ArrayMemory0; +} +let cachedUint32ArrayMemory0 = null; +function getUint32ArrayMemory0() { + if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { + cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32ArrayMemory0; +} +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} +function isLikeNone(x) { + return x === void 0 || x === null; +} +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === void 0) { + const buf = cachedTextEncoder.encode(arg); + const ptr2 = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr2; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8ArrayMemory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 127) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); } - const visibleGenerators = []; - scene.traverseVisible((node) => { - if (node instanceof SplatGenerator) { - if (!camera.layers || camera.layers.test(node.layers)) { - visibleGenerators.push(node); - } - } - }); - const splatCounts = visibleGenerators.map( - (generator) => generator.numSplats - ); - const { maxSplats, mapping: baseCounts } = this.generateMapping(splatCounts); - const previousMappings = previous.mapping.reduce((mappings, mapping) => { - mappings.set(mapping.node, mapping); - return mappings; - }, /* @__PURE__ */ new Map()); - this.mapping = []; - this.numSplats = 0; - baseCounts.forEach(({ base, count }, index) => { - const node = visibleGenerators[index]; - const previousNode = previousMappings.get(node); - if (previousNode && previousNode.count !== node.numSplats) { - node.updateMappingVersion(); - } - const { generator, covGenerator } = node; - if ((generator || covGenerator) && count > 0) { - const { version, mappingVersion } = node; - this.mapping.push({ - node, - generator, - covGenerator, - version, - mappingVersion, - base, - count - }); - this.numSplats = Math.max(this.numSplats, base + count); - } - }); - const { splatsUpdated, mappingUpdated } = previous.checkVersions( - this.mapping - ); - this.version = previous.version + (splatsUpdated ? 1 : 0); - this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0); + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + WASM_VECTOR_LEN = offset; + return ptr; +} +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_externrefs.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} +let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} +const cachedTextEncoder = new TextEncoder(); +if (!("encodeInto" in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function(arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); return { - sameMapping: !mappingUpdated, - version: this.version, - mappingVersion: this.mappingVersion, - visibleGenerators, - generate: () => { - this.ensureGenerate({ maxSplats }); - for (const { node, base, count } of this.mapping) { - const { generator, covGenerator } = node; - if ((generator || covGenerator) && count > 0) { - this.generate({ generator, covGenerator, base, count, renderer }); - } - } - }, - readback: async () => { - const textures = this.getTextures(); - if (this.readbackSplats.length === 0) { - this.readbackSplats = [ - new DynoUsampler2DArray({ value: textures[0], key: "extSplats" }), - new DynoUsampler2DArray({ value: textures[1], key: "extSplats" }) - ]; - } - this.readbackSplats[0].value = textures[0]; - this.readbackSplats[1].value = textures[1]; - if (!this.readback) { - this.readback = new Readback({ renderer }); - } - const readback = this.readback; - const words = this.extSplats ? 8 : 4; - const array = readback.ensureBuffer( - this.numSplats * words, - new Uint32Array(0) - ); - const reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - const rgba8 = new Dyno({ - inTypes: { - index: "int", - extSplats1: "usampler2DArray", - extSplats2: "usampler2DArray" - }, - outTypes: { rgba8: "vec4" }, - inputs: { - index, - extSplats1: this.readbackSplats[0], - extSplats2: this.readbackSplats[1] - }, - statements: ({ inputs, outputs }) => { - if (this.extSplats) { - return unindentLines(` - int indexDiv8 = ${inputs.index} >> 3; - ivec3 coord = splatTexCoord(indexDiv8); - uvec4 packedData; - if ((${inputs.index} & 4) == 0) { - packedData = texelFetch(${inputs.extSplats1}, coord, 0); - } else { - packedData = texelFetch(${inputs.extSplats2}, coord, 0); - } - - int indexMod4 = ${inputs.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${outputs.rgba8} = uintToVec4(data); - `); - } - return unindentLines(` - int indexDiv4 = ${inputs.index} >> 2; - ivec3 coord = splatTexCoord(indexDiv4); - uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0); - - int indexMod4 = ${inputs.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${outputs.rgba8} = uintToVec4(data); - `); - } - }).outputs.rgba8; - return { rgba8 }; - } - ); - return await readback.renderReadback({ - reader, - count: this.numSplats * words, - renderer, - readback: array - }); - } + read: arg.length, + written: buf.length }; - } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - checkVersions(otherMapping) { - if (this.mapping.length !== otherMapping.length) { - return { splatsUpdated: true, mappingUpdated: true }; + }; +} +let WASM_VECTOR_LEN = 0; +let wasm; +function __wbg_finalize_init(instance, module2) { + wasm = instance.exports; + cachedDataViewMemory0 = null; + cachedFloat32ArrayMemory0 = null; + cachedUint16ArrayMemory0 = null; + cachedUint32ArrayMemory0 = null; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; +} +async function __wbg_load(module2, imports) { + if (typeof Response === "function" && module2 instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module2, imports); + } catch (e) { + const validResponse = module2.ok && expectedResponseType(module2.type); + if (validResponse && module2.headers.get("Content-Type") !== "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } } - const mappingUpdated = this.mapping.some((item, i) => { - const other = otherMapping[i]; - return item.node !== other.node || item.base !== other.base || item.count !== other.count || item.mappingVersion !== other.mappingVersion; - }); - if (mappingUpdated) { - return { splatsUpdated: true, mappingUpdated: true }; + const bytes = await module2.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module2, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module: module2 }; + } else { + return instance; } - const splatsUpdated = this.mapping.some((item, i) => { - return item.version !== otherMapping[i].version; - }); - return { splatsUpdated, mappingUpdated }; } -}; -_SplatAccumulator.viewCenterUniform = new DynoVec3({ value: new THREE__namespace.Vector3() }); -_SplatAccumulator.viewDirUniform = new DynoVec3({ value: new THREE__namespace.Vector3() }); -_SplatAccumulator.sortRadialUniform = new DynoBool({ value: true }); -_SplatAccumulator.emptyTexture = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatAccumulator.emptyTextures = (() => { - return [_SplatAccumulator.emptyTexture, _SplatAccumulator.emptyTexture]; -})(); -_SplatAccumulator.programExtTemplate = new DynoProgramTemplate( - getShaders().computeUvec4x2Vec4Template -); -_SplatAccumulator.programTemplate = new DynoProgramTemplate( - getShaders().computeUvec4Vec4Template -); -_SplatAccumulator.generatorProgram = /* @__PURE__ */ new WeakMap(); -_SplatAccumulator.fullScreenQuad = new Pass_js.FullScreenQuad( - new THREE__namespace.RawShaderMaterial({ visible: false }) -); -let SplatAccumulator = _SplatAccumulator; -class SplatGeometry extends THREE__namespace.InstancedBufferGeometry { - constructor() { - super(); - this.setAttribute("position", new THREE__namespace.BufferAttribute(QUAD_VERTICES, 3)); - this.setIndex(new THREE__namespace.BufferAttribute(QUAD_INDICES, 1)); + function expectedResponseType(type) { + switch (type) { + case "basic": + case "cors": + case "default": + return true; + } + return false; } } -const QUAD_VERTICES = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]); -const QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]); -const _SparkRenderer = class _SparkRenderer extends THREE__namespace.Mesh { - constructor(options) { - if (!options) { - throw new Error("SparkRenderer options are required"); - } - if (!options.renderer) { - throw new Error("renderer is required in SparkRenderer options"); +async function __wbg_init(module_or_path) { + if (wasm !== void 0) return wasm; + if (module_or_path !== void 0) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({ module_or_path } = module_or_path); + } else { + console.warn("using deprecated parameters for the initialization function; pass a single object instead"); } - const uniforms = _SparkRenderer.makeUniforms(); - Object.assign(uniforms, options.extraUniforms ?? {}); - const shaders2 = getShaders(); - const premultipliedAlpha = options.premultipliedAlpha ?? true; - const geometry = new SplatGeometry(); - const material = new THREE__namespace.ShaderMaterial({ - glslVersion: THREE__namespace.GLSL3, - vertexShader: options.vertexShader ?? shaders2.splatVertex, - fragmentShader: options.fragmentShader ?? shaders2.splatFragment, - uniforms, - premultipliedAlpha, - transparent: options.transparent ?? true, - depthTest: options.depthTest ?? true, - depthWrite: options.depthWrite ?? false, - side: THREE__namespace.DoubleSide, - allowOverride: false + } + const imports = __wbg_get_imports(); + if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) { + module_or_path = fetch(module_or_path); + } + const { instance, module: module2 } = await __wbg_load(await module_or_path, imports); + return __wbg_finalize_init(instance); +} +function b64ToUint6(nChr) { + return nChr > 64 && nChr < 91 ? nChr - 65 : nChr > 96 && nChr < 123 ? nChr - 71 : nChr > 47 && nChr < 58 ? nChr + 4 : nChr === 43 ? 62 : nChr === 47 ? 63 : 0; +} +function base64ToUint8(sBase64, nBlocksSize) { + const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, ""); + const nInLen = sB64Enc.length; + const nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2; + const taBytes = new Uint8Array(nOutLen); + let nMod3; + let nMod4; + let nUint24 = 0; + let nOutIdx = 0; + for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) { + nMod4 = nInIdx & 3; + nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 6 * (3 - nMod4); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + nMod3 = 0; + while (nMod3 < 3 && nOutIdx < nOutLen) { + taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; + nMod3++; + nOutIdx++; + } + nUint24 = 0; + } + } + return taBytes; +} +function toUint8(b64) { + if (typeof Uint8Array.fromBase64 === "function") return Uint8Array.fromBase64(b64); + let bin = atob(b64); + let len = bin.length; + let bytes = new Uint8Array(len); + for (let i = 0; i < len; i++) { + bytes[i] = bin.charCodeAt(i); + } + return bytes; +} +const decode64 = typeof atob === "function" ? toUint8 : base64ToUint8; +const WASM = decode64("AGFzbQEAAAAB0gdyYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGAAAGABfwN/f39gAX0BfWAFf39/f38Bf2AAAW9gAn9vAGABfwF+YAN/fX8AYAZ/f39/f38Bf2AGf39/f399AGAFf39/fn8AYAABf2ABfwFvYAJ/fwFvYAJ/fQBgAX4Bf2ADb39/AW9gA29/fwBgAm9vAX9gA39/bwBgCX9/f39/f39/fwBgAn9vA39/f2ACb28Bb2ACb38Bb2AJf39/f39/f39/AX9gDH9/f39/f39/f39/fwBgBX9/f31/AGAHf39/f39/fwF/YAV/f39/fQBgBH99f38Bf2AEf39/fgBgF39/f39/f39/f39/f39/f39/f39/f39/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AGADfn5/AX5gB39/f39/fX0AYAF/AX1gBX9/fn9/AGAFf398f38AYAV/f31/fwBgE399fH9/f39/f39/f39/f39/f38Df39/YAR/b39vA39/f2ADf29vAX9gAAJ/f2ADb29vAX9gA29vbwFvYANvb28AYANvf28AYANvb38AYAFvAW9gAXwBb2ABfgFvYAR/f399AX9gC39/f39/f39/f39/AX9gCn9/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gB39/f31/f38AYAJ/fgBgA399fwF/YAZ/fn9/f38AYAV/f39+fgBgCX9/f39/fX19fwBgBn9/f399fQBgBH5+f38BfmAFf39/f38BfWAEf39/fwF9YAJ+fwBgCX9/f39/f35+fgBgA39/ewBgA39+fwBgAn9+AX9gAn1/AX1gA319fQF9YAN/fn4AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAR/fn5/AGAJf39/f39/f39vA39/f2AIf39/f29/f38Df39/YAd/f39/f39/A39/f2AHf29vf31/fwN/f39gB39vf31/f28Df39/YA59fX19fX19fX1/b319fwFvYAZ/b399f28Df39/YAZ/b29/fX8Df39/YAV/f39/bwN/f39gBH9/f38Df39/YAR/b29/A39/f2ACf38Df39/YA19fX19fX19fX1/fX1/AW9gAW8Df39/YAJ/bwJ/f2AKfX19fX19fX19fwFvYAR/fn9/AGAEf31/fwBgBH98f38AYAF8AX9gAn19AX0CoRY2EC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF80MWEyMjE5MWI5YmRmZDY2ABoQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV9kNTFlODk0NThiM2ZkYmY2AB4QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfMWU3MDE3OThmZGNhYTNiNAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAHxAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyABIQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfOGVlMmQzNGZhY2I4NDY2ZQA5EC4vc3BhcmtfcnNfYmcuanMbX193YmdfcHVzaF82YmRiYzk5MGJlNWFjMzdiACAQLi9zcGFya19yc19iZy5qcxVfX3diZ19jc3BsYXRhcnJheV9uZXcAGhAuL3NwYXJrX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAaEC4vc3BhcmtfcnNfYmcuanMcX193YmdfRXJyb3JfMmU1OWIxYjM3YTlhMzRjMwAbEC4vc3BhcmtfcnNfYmcuanMrX193YmdfX193YmluZGdlbl9pc19vYmplY3RfNDBjNWE4MDU3MmU4ZjlkMwAMEC4vc3BhcmtfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF9jMGNjYTcyYjgyYjg2ZjRkAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19fX3diaW5kZ2VuX2luXzRiZDdhNTdlNTQzMzczNjYAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABMQLi9zcGFya19yc19iZy5qcy1fX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0X2E4NmMyMTY1NzVhNzVjMzAADBAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfZTQyMjc1ZTYwMWUxNGVlYgAhEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3Xzk5Y2FiYWU1MDFjMGE4YTAAEhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ADoQLi9zcGFya19yc19iZy5qcxpfX3diZ19nZXRfZjk2NzAyYzYyNDVlNGVmOQAkEC4vc3BhcmtfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmJlNDI3NjhjNjkwZTM4MAA7EC4vc3BhcmtfcnNfYmcuanMaX193YmdfZ2V0XzQ4NDhlMzUwYjQwYWZjMTYAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YzYwYjJlOGFkMGU5MzgzADwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfODFiNDE3NDM1MmU2YTA5NQA9EC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADBAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAHhAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgAhEC4vc3BhcmtfcnNfYmcuanMgX193Ymdfc2V0X2luZGV4XzMzOGE2NmU0MGZjNDVkZWUAHxAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5ABoQLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHxAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV81MTdjZDBmMTgxMWFiODcyAB4QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzY0YzI4N2EyN2NjMjRkMjcAIRAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19nZXRfdW5jaGVja2VkXzdkN2JhYmUzMmU5ZTZhNTQAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxABIQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABMQLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAEQLi9zcGFya19yc19iZy5qczBfX3diZ19fX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxXzNhNzJhZTc2NGQ0NmQ5NDQAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABMQLi9zcGFya19yc19iZy5qcyxfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfNGI4ZGE2ODNkZWIyNWQ3MgAMEC4vc3BhcmtfcnNfYmcuanMtX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9mZjdjMTMzN2E1ZTNiMzNhAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA+EC4vc3BhcmtfcnNfYmcuanMnX193YmdfX193YmluZGdlbl90aHJvd184MWZjNzc2NzlhZjgzYmM2AAEQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19kZDVkMmQwN2NlOWU2YzU3ABMQLi9zcGFya19yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4QLi9zcGFya19yc19iZy5qcyBf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bGF0YXJyYXlfbWF4U2hEZWdyZWUA4ggfX193YmdfZ2V0X2dzcGxhdGFycmF5X251bVNwbGF0cwDjCBZfX3diZ19nc3BsYXRhcnJheV9mcmVlANUFIV9fd2JnX3NldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDnCB9fX3diZ19zZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAOgIIV9fd2JnX3NldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDpCB9fX3diZ19zZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAOoIE2JoYXR0X2xvZF9leHRzcGxhdHMAsggWYmhhdHRfbG9kX3BhY2tlZHNwbGF0cwCxCBNjaHVua2RlY29kZXJfZmluaXNoANwIEWNodW5rZGVjb2Rlcl9wdXNoAOYIFWNzcGxhdGFycmF5X2JoYXR0X2xvZACVBxNjc3BsYXRhcnJheV9oYXNfbG9kAOkHGGNzcGxhdGFycmF5X2luamVjdF9yZ2JhOAD9CQ9jc3BsYXRhcnJheV9sZW4A8wcUY3NwbGF0YXJyYXlfdGlueV9sb2QAhgcYY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzANUIHGNzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QA1wgbY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzANYIH2NzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QA2AgRZGVjb2RlX3JhZF9oZWFkZXIA2wgVZGVjb2RlX3RvX2NzcGxhdGFycmF5ALMIE2RlY29kZV90b19leHRzcGxhdHMArAgVZGVjb2RlX3RvX2dzcGxhdGFycmF5ALoIFmRlY29kZV90b19wYWNrZWRzcGxhdHMApQgQZGlzcG9zZV9sb2RfdHJlZQCKAhpkeW5hbWljX3RyYXZlcnNlX2xvZF90cmVlcwD4BxhleHRzcGxhdHNfdG9fZ3NwbGF0YXJyYXkAuwgSZ2V0X2xvZF90cmVlX2xldmVsAMwIEmdldF9yYXljYXN0X2J1ZmZlcgCvChNnZXRfcmF5Y2FzdF9idWZmZXIyALAKFWdzcGxhdGFycmF5X2JoYXR0X2xvZACWBxhnc3BsYXRhcnJheV9pbmplY3RfcmdiYTgA/gkPZ3NwbGF0YXJyYXlfbGVuAPMHFGdzcGxhdGFycmF5X3RpbnlfbG9kAIcHGGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0cwDZCBxnc3BsYXRhcnJheV90b19leHRzcGxhdHNfbG9kANoIG2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0cwDJCB9nc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHNfbG9kAMoIDWluaXRfbG9kX3RyZWUAywgMbmV3X2xvZF90cmVlAN4IE25ld19zaGFyZWRfbG9kX3RyZWUA3QgbcGFja2Vkc3BsYXRzX3RvX2NzcGxhdGFycmF5ALwIG3BhY2tlZHNwbGF0c190b19nc3BsYXRhcnJheQC5CBNyYXljYXN0X2V4dF9idWZmZXJzAPgIFXJheWNhc3RfcGFja2VkX2J1ZmZlcgDUCBVyYXljYXN0X3BhY2tlZF9zcGxhdHMAsAgMc2ltZF9lbmFibGVkAIsLDXNvcnQzMl9zcGxhdHMAkgkLc29ydF9zcGxhdHMAkwkSdGlueV9sb2RfZXh0c3BsYXRzAK0IFXRpbnlfbG9kX3BhY2tlZHNwbGF0cwCuCBJ0cmF2ZXJzZV9sb2RfdHJlZXMA+QcQdXBkYXRlX2xvZF90cmVlcwCfCAp3YXNtX3N0YXJ0AP0GE2dzcGxhdGFycmF5X2hhc19sb2QA6QcRX193YmluZGdlbl9tYWxsb2MA9gcSX193YmluZGdlbl9yZWFsbG9jAK8ID19fd2JpbmRnZW5fZnJlZQC2BxRfX3diaW5kZ2VuX2V4bl9zdG9yZQCVChdfX2V4dGVybnJlZl90YWJsZV9hbGxvYwCfBRVfX3diaW5kZ2VuX2V4dGVybnJlZnMBARlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jAL4HEF9fd2JpbmRnZW5fc3RhcnQAiQsJ9AkBAEEBC/0EsgWACqkJkAWxCY8B4QrgCjQx9gmACv0K9QHtA8wG8geKCsYB7gGZB64G9An/Cc4F+gbIBvQDhwaUB84I+giJCYsIwAWcBbYCkgSNCY8I0gTQBKgFNdMI2gboBPsI5wKLCjMyrgajBKsJ/wPkBugF6Qq3AdAGhAeVCfgF7geQCcYC6AryCOcK/wnfAucE2Qa4A5IG0Qf/CNoF1wWACYAJgAncB90H5AeBCd4HignlB90HggnfB4MJ3Qe0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QQV0aiIEIAI2AgAgBEIANwIIIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwIQIAMgB0EBajYCQCADIAMoAjRBAWoiAjYCNCACIAMoAjBJDQALCyADIEs3A9gDIAMgTDcD0AMgAyBNNwPIAyADIE43A8ADIANB+AFqQb6awAAgA0HAA2oQ4AQgAygC+AEiBQRAIAMoAvwBIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAVqSQ0GIAJBACAEIAVBJ2pLGw0HIAcQogILAkACQAJAIAMoAkAiBUUNACADKAI8IgQgBUEFdGohBiAD/QkChAEhUSAEIQIDQCACKAIAIg0gACgCCCIHTw0CIAMgACgCBCANQRhsaiIH/V0CACAHKgIIIgH9IAIgAf0gAyBR/ecB/WgiUv0fAvwENwPQAyADIFL9HwH8BDcDyAMgAyBS/R8A/AQ3A8ADIANB+AFqIANBwANqELIDIAJBGGogAykDiAI3AwAgAkEIaiAD/QAD+AH9CwMAIAJBIGoiAiAGRw0ACyAFQQFGDQAgBUEVTwRAIAQgBRCQBAwBCyAEIAUQ+wQLIAMgBTYCgAMgAyBKNwP4ASADQcADakGklsAAIANB+AFqEOAEAkAgAygCwAMiBgRAIAMoAsQDIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAZqSQ0BIAJBACAEIAZBJ2pLGw0KIAcQogILQQAhBCADQQA2ApABIANCgICAgMAANwKIASADQQA2ApwBIANCgICAgMAANwKUASADQQA2AqABIANBADYCpAEgBUUEQEKAgICAgICAgIB/IUJC////////////ACFDQQQhCEL///////////8AIURC////////////ACFFQoCAgICAgICAgH8hRkKAgICAgICAgIB/IUcMAwtBACECQv///////////wAhRUKAgICAgICAgIB/IUdCgICAgICAgICAfyFGQoCAgICAgICAgH8hQkL///////////8AIURC////////////ACFDA0ACQAJAIAMoAjwiECACQQV0IgZqIgQoAgAiByAAKAIIIglJBEAgACgCBCINIAdBGGxqIgf9XQIAIAcqAggiAf0gAiAB/SADIAP9CQKEASJR/ecB/WgiUv0fAvwEIUEgUv0fAfwEIT8gUv0fAPwEIUAgBSACQQFqIhJNBEAg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//8DcSEFQQAhAkEAIQoCfwJAAkACQANAIAVFDQYgCiASaiIHIAEoApwBIgZJBEAgASgCmAEgA2ogAmogAiAMaiIJKAIANgIAIAEoApwBIgYgB0EBak0NBCABKAKYASADaiACakEEaiAJQQRqKAIANgIAIAEoApwBIgYgB0ECak0NAyABKAKYASADaiACakEIaiAJQQhqKAIANgIAIAEoApwBIgYgB0EDak0NAiABKAKYASADaiACakEMaiAJQQxqKAIANgIAIAJBEGohAiAKQQRqIQogBUEBayEFIAhBAWsiCA0BDAYLCyAPQQJ0IApqDAMLIA9BAnQgCmpBA2oMAgsgD0ECdCAKakECagwBCyAPQQJ0IApqQQFqCyAGQcyswQAQ8AcACyAEKAIYIgJFDQ8gDkEEaygCACIDQXhxIgUgAkECdCICQQRBCCADQQNxIgMbakkNFCADQQAgBSACQSdqSxsNFSAOEKICDA8LIAogDUG8rMEAEPAHAAtBACANIAJBnK3BABCgBQALIARBGGogBiADIAEoArAEEMwEIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQwAQgBCgCGCIDRQ0MAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA4LDBILDBILIARBGGogBiADIAEoArAEELEFIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQvwQgBCgCGCIDRQ0LAkAgAkEEaygCACIFQXhxIgggA0EBdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA0LDBELDBELIAdBAWohBwsgByAIQfTmwQAQ8AcACyAEIAQoAiA2AmAgBCAEKQIYNwNYIAQoAmgiAkUNAAJAIAQoAmwiA0EEaygCACIFQXhxIgggAkECdCICQQRBCCAFQQNxIgUbak8EQCAFQQAgCCACQSdqSxsNASADEKICDAILDA4LDA4LIAEgASgCrAQgASgCsAQgBCgCXCICIAQoAmAQvwUgBCgCWCIDRQ0HAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDAkLDA0LDA0LIARBGGogBiADIAEoArAEIAIqAgQgAioCDBDEAwsgASABKAKsBCABKAKwBCAEKAIcIgIgBCgCIBCkAiAEKAIYIgNFDQUCQCACQQRrKAIAIgVBeHEiCCADQQJ0IgNBBEEIIAVBA3EiBRtqTwRAIAVBACAIIANBJ2pLGw0BIAIQogIMBwsMCwsMCwsgBEEYaiAGIANBAyAFICogKBCaBQsgASABKAKsBCABKAKwBCAEKAIcIgIgBCgCIBCqAiAEKAIYIgNFDQMCQCACQQRrKAIAIgVBeHEiCCADQQJ0IgNBBEEIIAVBA3EiBRtqTwRAIAVBACAIIANBJ2pLGw0BIAIQogIMBQsMCQsMCQsgBEEYaiAGIANBASABKAKwBCACKgIEIAIqAgwQmgULIAQoAiAhCCAEKAIcIQogASABKAKsBCABKAKwBCIFEIwFIAUEQEEAIQJBDCEHIAghBgNAAkACQAJAIAEoArQBIgMgAkEDaksEQCAGRQ0CIAIgCmooAgAiDkH///8DcSEMIA5BgICAgHhxIQkgDkGAgID8B3EiA0GAgID8B0YEQCAJQRB2IAxBDXZyQYAEQQAgDBtyQYD4AXIhCQwECyAJQRB2IQkgA0GAgIC4BEsNASADQYCAgMQDTwRAIA5BDHYgDkH/3wBxQQBHcSADQQ12IAxBDXZqQYCAAWogCXJqIQkMBAsgA0GAgICYA0kNAyAMQYCAgARyIg5B/gAgA0EXdiIMa3YhAyAOQR0gDGsiDHZBAXEEfyADQQMgDHRBAWsgDnFBAEdqBSADCyAJciEJDAMLIAIgAkEEaiADQayswQAQoAUACyAJQYD4AXIhCQwBCyAIIAhBnKzBABDwBwALIAEoArABIAdqIAlB//8DcTYCACAHQRBqIQcgBkEBayEGIAJBBGohAiAFQQFrIgUNAAsLIAFBAToA8AEgBCgCGCICRQ0BAkAgCkEEaygCACIDQXhxIgUgAkECdCICQQRBCCADQQNxIgMbak8EQCADQQAgBSACQSdqSxsNASAKEKICDAMLDAcLDAcLIABBAToAACAAIAE2AgQgH0UgHEVyDQMgHSAcQQEQwQcMAwsCQAJAAkAgGiABKAKYBCICTQRAIAFBADYCmAQgAiAaayEDIBpFDQEgAiAaRg0DIANFDQIgASgClAQiAiACIBpqIAP8CgAADAILQQAgGiACQaijxwAQoAUACyACIBpGDQELIAEgAzYCmAQLIAEgASkD8AMgGq18NwPwAyABIAEoAqgEQQFqIgI2AqgEAkAgH0UgHEVyDQACQCAdQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAcak8EQCACQQAgAyAcQSdqSxsNASAdEKICIAEoAqgEIQIMAgsMBgsMBgsgAiABKALkA0kNAAsLIABBgAI7AQALIARBwAFqJAAPC0Gc5sEAEJkKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQAgBEHYAGogBEHoAGpBACABQdChxAAQoAgAC9N6BBR/Gn4Qexh9IwBB8AJrIgIkACAAEKUBIAIgACgCCCIHNgIMIAIgAkEMaq1CgICAgBCEIic3AzAgAkHwAGpBzIHAACACQTBqEOAEAkACQAJAAkACfyACKAJwIgUEQCACKAJ0IgZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAVqSQ0EIANBACAEIAVBJ2pLGw0FIAYQogIgACgCCCEHCyACKAIMRQ0CAkACQAJAIAcEQAJAAkAgB0ECdCIMEG4iBgRAQQAhBSAHQQRJDQH9DAAAAAABAAAAAgAAAAMAAAAhMCAGIQMgB0H8//8fcSIFIQQDQCADIDD9CwIAIANBEGohAyAw/QwEAAAABAAAAAQAAAAEAAAA/a4BITAgBEEEayIEDQALIAUgB0cNASACIAA2AnQgAiACQe8CajYCcCACIAJB8ABqNgIwDAILQQQgDBCaCQALIAYgBUECdGohAwNAIAMgBTYCACADQQRqIQMgByAFQQFqIgVHDQALIAIgADYCdCACIAJB7wJqNgJwIAIgAkHwAGo2AjAgB0EBRg0DCyAHQRVJDQEgAkEwaiEJIwBBgCBrIgUkAAJAAkACQAJAAkACQEGAifoAIAcgB0GAifoATxsiAyAHIAdBAXZrIgQgAyAESxsiA0GBCE8EQCAEQf////8DSw0CIANBAnQiC0H9////B08NAiALEG4iCEUNAyAGIAcgCCADIAdBwQBJIAkQaCAIQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyALakkNBCADQQAgBCALQSdqSxsNBSAIEKICDAELIAYgByAFQYAIIAdBwQBJIAkQaAsgBUGAIGokAAwECxCYCgALQQQgCxCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACwwCCyAAQQRBABD/AQwCCyAGIAcgAkHwAGoQyQELIAAgBiAHEP8BIAZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAxqSQ0EIANBACAEIAxBJ2pLGw0FIAYQogILIAAQqwQgACgCCCIDRQ0BAkACQCADQQF0QQFrIgQQbiIDBEBBACEFIAJBADYCGCACIAM2AhQgAiAENgIQIAAoAggiCUUNASAEIAlJBEAgAkEQakEAIAlBAUEBENYGIAIoAhghBSACKAIUIQMLIAMgBWohBiAJQQFHBH8gCUEBayIEBEAgBkEBIAT8CwALIAMgBCAFaiIFagUgBgtBAToAACACIAVBAWo2AhggACgCCEUNASAAKAIEIgUQlwQhQSAFLwEcIghB//8BcSIERQRAIAhBEHQMBAsgCEH/B3EhCSAIQYCAAnEhAyAIQYD4AXEiBkGA+AFGBEAgA0EQdCIDQYCAgPwHciAJRQ0EGiADIAlBDXRyQYCAgP4HcgwECyADQRB0IQMgBkUNAiAGQQ10QYCAgPwAcSAJQQ10ckGAgIDAA2ogA3IMAwtBASAEEJoJAAtBAEEAQdjRxgAQ8AcACyADQYCAgNgDciAJZ0EQayIDQRd0ayAJIANB//8DcUEIanRB////A3FyCyEDIAJB//8BQ703hjUgQSBBkiADviJBQwAAgD9eBH0gQRDgBUNU+C1AlEMAAIA/kpEFQwAAgD8LlCJBIEEgQVwbIkFDvTeGNSBBQ703hjVeGxDgBUMYcjE/lY0iQfwAQYCAfiBBQwAAAMdgGyBBQwD+/0ZeG0EAIEEgQVsbOwEcIAIgBRCXBCJBIEGSAn8gCEEQdCAERQ0AGiAIQf8HcSEGIAhBgIACcSEDIAhBgPgBcSIEQYD4AUYEQCADQRB0IgNBgICA/AdyIAZFDQEaIAMgBkENdHJBgICA/gdyDAELIANBEHQiAyAEQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAQNABogA0GAgIDYA3IgBmdBEGsiA0EXdGsgBiADQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EfSBBEOAFQ1T4LUCUQwAAgD+SkQVDAACAPwuUOALwASACIAJB8AFqrUKAgICAoASENwN4IAIgAkEcaq1CgICAgLAEhDcDcCACQTBqQdCZwAAgAkHwAGoQ4AQCQCACKAIwIgUEQCACKAI0IgZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAVqSQ0BIANBACAEIAVBJ2pLGw0FIAYQogILIAIgAi8BHDsBHiACQQA2AiAgAkEANgIsIAJCgICAgMAANwIkQbi/yAAoAgAiBUUEQBCsBSEFCyAFKAIAIAUoAgQoAgwRBAAhAyACQbiixwD9AAMA/QsDMCACIAOtQoSQmNOYmLbsO4UiF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhEK7sOOODIRC0oGqm6v6gtenf34iFkKAwAODQiiGIBZCgICwA4NCGIYgFkKAgIDIA4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhEKAgICAgICAgOYAhCAXQtii0e/CqeW/LX6FIhdCko2P6LiU4IL1AIUiFkLYotHvwqnlvy1+IBZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iFkI4hiAWQoD+A4NCKIaEIBZCgID8B4NCGIYgFkKAgID4D4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhIVC7fSAhaaBppCrf4UiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A1ggAiAXQpjXmprFqdfE4wCFIhZC2KLR78Kp5b8tfiAWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEQtKBqpur+oLXp39+IhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhISFQvWz5eTn1dzgcIUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A1AgAiAXQvWz5eTn1dzgcIUiFkLYotHvwqnlvy1+IBZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iFkI4hiAWQoD+A4NCKIaEIBZCgID8B4NCGIYgFkKAgID4D4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhIVCko2P6LiU4IL1AIUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A0ggAiAXQu30gIWmgaaQq3+FIhdC2KLR78Kp5b8tfiAXQjiGIBdCgP4Dg0IohoQgF0KAgPwHg0IYhiAXQoCAgPgPg0IIhoSEIBdCCIhCgICA+A+DIBdCGIhCgID8B4OEIBdCKIhCgP4DgyAXQjiIhISEQtKBqpur+oLXp39+IhdCOIYgF0KA/gODQiiGhCAXQoCA/AeDQhiGIBdCgICA+A+DQgiGhIQgF0IIiEKAgID4D4MgF0IYiEKAgPwHg4QgF0IoiEKA/gODIBdCOIiEhISFQpjXmprFqdfE4wCFIhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhCAXQgiIQoCAgPgPgyAXQhiIQoCA/AeDhCAXQiiIQoD+A4MgF0I4iISEhCAWQtii0e/CqeW/LX6FIhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRCi9ii9Yeaz5izf34iF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhCAXQgiIQoCAgPgPgyAXQhiIQoCA/AeDhCAXQiiIQoD+A4MgF0I4iISEhCAWQsycj/6S8NWpdH6FIBaJNwNAIAJBqAJqrSIhQoCAgIAQhCEiIAJB2AFqrUKAgICAEIQhKCACQSBqrUKAgICAEIQhKSACQeAAaq1CgICAgKAEhCEqIAJBHmqtQoCAgICwBIQhKyACQfgAaiEUIAJB+AFqIRUgAigCDCELIAIoAiAhBAJAA0AgAkMAAIA/IAIuAR4Q2AYiQjgCYCAAKAIIIQgCQCAEIAtPDQAgBCALayEMIARBLGwiCiAAKAIEaiEDIAQgBCAIIAQgCEsbayEHQQAhBQJAA0AgBCAFaiEGQwAAgD8hQAJ/AkAgBSAHagRAIAMQlwQhRSADQRxqLwEAIg5B//8BcUUEQCAOQRB0DAMLIA5B/wdxIQ0gDkGAgAJxIQkgDkGA+AFxIg5BgPgBRgRAIAlBEHQiCUGAgID8B3IgDUUNAxogCSANQQ10ckGAgID+B3IMAwsgCUEQdCEJIA5FDQEgDkENdEGAgID8AHEgDUENdHJBgICAwANqIAlyDAILIAYgCEHY0cYAEPAHAAsgCUGAgIDYA3IgDWdBEGsiCUEXdGsgDSAJQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EQCBBEOAFQ1T4LUCUQwAAgD+SkSFACyBFIEWSIECUIEJeDQEgAiAGQQFqNgIgIANBLGohAyAMIAVBAWoiBWoNAAsgCyEGCyAEIAZPDQAgBiAEayILQf////8BSw0EIAtBA3QiA0H9////B08NBEEAIQcCQCADRQRAQQQhCEEAIQsMAQsgAxBuIghFDQMLIAQgBmshBiAIIQUDQEMAAIA/IUACfwJAIAQgB2oiDCAAKAIIIgNJBEAgACgCBCAKaiIDEJcEIUIgA0Ecai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEOIAlBgIACcSEDIAlBgPgBcSIJQYD4AUYEQCADQRB0IgNBgICA/AdyIA5FDQMaIAMgDkENdHJBgICA/gdyDAMLIANBEHQhAyAJRQ0BIAlBDXRBgICA/ABxIA5BDXRyQYCAgMADaiADcgwCCyAMIANB2NHGABDwBwALIANBgICA2ANyIA5nQRBrIgNBF3RrIA4gA0H//wNxQQhqdEH///8DcXILviJBQwAAgD9eBEAgQRDgBUNU+C1AlEMAAIA/kpEhQAsgBUEEaiAMNgIAIAUgQiBCkiBAjJQ4AgAgCkEsaiEKIAVBCGohBSAGIAdBAWoiB2oNAAsgAiAHNgJsIAIgCDYCaCACIAs2AmQgAkEkaiACQeQAahCXAiAAKAIIIQgLIAIgAigCLCILNgLYASACIAg2AqgCIAIgIjcDmAEgAiAoNwOQASACICc3A4gBIAIgKTcDgAEgAiAqNwN4IAIgKzcDcCACQfABakG0kMAAIAJB8ABqEOAEIAIoAvABIgUEQCACKAL0ASIGQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyAFakkNBiADQQAgBCAFQSdqSxsNByAGEKICCyACKAI8IgQEQCACKAIwIglBCGohAyAJKQMAQn+FQoCBgoSIkKDAgH+DIRogCSEFA0AgGlAEQANAIAMiBkEIaiEDIAVBgARrIQUgBikDAEKAgYKEiJCgwIB/gyIXQoCBgoSIkKDAgH9RDQALIBdCgIGChIiQoMCAf4UhGgsgBSAaeqdBA3RBwAdxayIGQQRrKAIAIghBCU8EQCAGQSBrKAIAIgxBBGsoAgAiBkF4cSIHIAhBAnQiCEEEQQggBkEDcSIGG2pJDQggBkEAIAcgCEEnaksbDQkgDBCiAgsgGkIBfSAagyEaIARBAWsiBA0ACyACIAIoAjQiBAR/IARBCWoiAwRAIAlB/wEgA/wLAAsgBCAEQQFqQQN2QQdsIARBCEkbBUEACzYCOCACQQA2AjwLAkAgCwRAIAIoAigiByALQQN0aiEJA0AgBygCBCIMIAAoAggiA08NAiACIAAoAgQgDEEsbGoiA/1dAgggAyoCECJB/SACIEH9IAMgAv0JAmD95wH9aCIw/R8C/AQ3A7gBIAIgMP0fAfwENwOwASACIDD9HwD8BDcDqAEgAkHwAGogAkEwaiACQagBahCGAgJAIAIoApABIggEQCACIBQpAwA3A/ABIAIgFP0AAwj9CwP4ASAIKAIAIgsgCCgCBCIFIAIoAnAiBnEiBGopAABCgIGChIiQoMCAf4MiGlAEQEEIIQoDQCAEIApqIQMgCkEIaiEKIAsgAyAFcSIEaikAAEKAgYKEiJCgwIB/gyIaUA0ACwsgCyAaeqdBA3YgBGogBXEiBGosAAAiCkEATgRAIAsgCykDAEKAgYKEiJCgwIB/g3qnQQN2IgRqLQAAIQoLIAQgC2ogBkEZdiIDOgAAIAggCCgCCCAKQQFxazYCCCALIARBCGsgBXFqQQhqIAM6AAAgCyAEQQZ0ayIFQUBqIgMgAikDgAI3AxAgAyAC/QAD8AH9CwMAIAVBBGtBADYCACAFQShrQQA2AgAgCCAIKAIMQQFqNgIMDAELIAIoAnAhBQsgBUEkayEGAn8gBUEEayIDKAIAIghBCUkEQCAIIQRBCCEIIAYMAQsgBigCACEEIAYhAyAFQSBrKAIACyEKIAQgCEYEQCAFQShrEOUGIAVBIGsoAgAhCiAGKAIAIQQgBiEDCyAKIARBAnRqIAw2AgAgAyADKAIAQQFqNgIAIAdBCGoiByAJRw0ACwsgAkEANgLIASACQoCAgIDAADcCwAEDQCACKAIUIRMgAigCGCEQAkACQAJAAkACQAJAA0AgAkHMAWogAkEkahCgAyACKALMAUEBRw0CIAIoAtQBIhEgEE8NASARIBNqIgstAABFDQALIAAoAggiDyARSwRAIAIgACgCBCIHIBFBLGxqIhL9XQIIIBIqAhAiQf0gAiBB/SADIAL9CQJg/ecB/WgiMP0fAfwEIhg3A+ABIAIgMP0fAPwEIho3A9gBIAIgMP0fAvwEIhc3A+gBAkAgF0IBfSIcIBdCAXwiHVcEQAJAIBhCAX0iFiAYQgF8Ih5VBEADQCAcIB1ZDQIgHCAcIB1TrXwiHCAdVw0ADAILAAsgGkIBfSIYIBpCAXwiH1cEQCACKQNAIhdCOIYgF0KA/gODQiiGhCAXQoCA/AeDQhiGIBdCgICA+A+DQgiGhIQgF0IIiEKAgID4D4MgF0IYiEKAgPwHg4QgF0IoiEKA/gODIBdCOIiEhIQhLCAXQn+FIS1DAACA/yFBQX8hDEL///////////8AISMgAigCMCEOIAIoAjQhDSACKQNIIS4gAigCPCEIQv///////////wAhJEL///////////8AISUMAwsDQCAWIRoDQCAaIB5TIgMEQCAaIAOtfCIaIB5XDQELCyAcIB1ZDQEgHCAcIB1TrXwiHCAdVw0ACwsgAkL///////////8ANwOIAiACQv///////////wA3A4ACCyACQv///////////wA3A/gBIAJC/////4+AgEA3A/ABDAcLA0ACQAJAIAgEQCAWIRoMAQsgFiEXA0AgGCEaA0AgGiAfUyIDBEAgGiADrXwiGiAfVw0BCwsgFyAeWQ0CIB4gFyAXIB5TrXwiF1kNAAsMAQsDQCAaIiAgGiAeU618IRogGCEXAkACQANAIA0gFyAuhSIZQtii0e/CqeW/LX4gGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEhSAghSIZQtii0e/CqeW/LX4gGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEhSAchSIbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEQtKBqpur+oLXp39+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIQgG0LYotHvwqnlvy1+hSIbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEIC1+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIQgGyAsfoUgG4kiGadxIQMgGUIZiEL/AINCgYKEiJCgwIABfiEvIBcgFyAfU618IRlBACEEAkACQANAAkAgAyAOaikAACImIC+FIhtCf4UgG0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIbUEUEQANAAkAgFyAOIBt6p0EDdiADaiANcUEGdGsiBkFAaikDAFINACAgIAZBOGspAwBSDQAgHCAGQTBrKQMAUQ0DCyAbQgF9IBuDIhtQRQ0ACwsgJiAmQgGGg0KAgYKEiJCgwIB/g1BFDQIgAyAEQQhqIgRqIA1xIQMMAQsLAn8gBkEEaygCACIEQQlPBEAgBkEkaygCACEEIAZBIGsoAgAMAQsgBkEkawshAyAERQ0AIARBAnQhBgNAIAMoAgAiBCAQTw0CAkAgBCARRg0AIAQgE2otAABBAXFFDQAgBCAPTw0FIAJB8ABqIgUgEhCsAyAC/QAEcCEyIAUgEikCABDTAiAC/QAEcCEwIAUgByAEQSxsaiIKEKwDIAL9AARwITMgBSAKKQIAENMCIDIgMP0NCAkKCwgJCgsICQoLAAECAyAw/R8AIlMgMP0fAiJIIEiSIlaUIk8gMP0fAyJEIDD9HwEiQyBDkiJJlCJQkv0TIEMgVpQiUSBEIFMgU5IiQJQiRZP9IAFDAACAPyBTIECUIkIgQyBJlCJSkpP9IAL95gEiMSAzIDH9DQgJCgsICQoLCAkKCwABAgMgAv0ABHAiMP0fACJUIDD9HwIiSiBKkiJGlCJVIDD9HwMiSyAw/R8BIkMgQ5IiTJQiTZL9EyBDIEaUIlcgSyBUIFSSIkCUIkeT/SABQwAAgD8gVCBAlCJAIEMgTJQiTpKT/SAC/eYBIjX9DQQFBgcUFRYXAAECAwABAgMiPiA+/eYBIDIgMf0NBAUGBwQFBgcEBQYHAAECAyBTIEmUIkMgRCBWlCJEk/0TQwAAgD8gQiBIIFaUIkmSk/0gASBRIEWS/SAC/eYBIjYgMyAx/Q0EBQYHBAUGBwQFBgcAAQIDIFQgTJQiRSBLIEaUIkKT/RNDAACAPyBAIEogRpQiQJKT/SABIFcgR5L9IAL95gEiN/0NBAUGBxQVFhcAAQIDAAECAyI0IDT95gEgMiAx/Q0AAQIDAAECAwABAgMAAQIDQwAAgD8gUiBJkpP9EyBDIESS/SABIE8gUJP9IAL95gEiOCAzIDH9DQABAgMAAQIDAAECAwABAgNDAACAPyBOIECSk/0TIEUgQpL9IAEgVSBNk/0gAv3mASI5/Q0EBQYHFBUWFwABAgMAAQIDIjogOv3mAf3kAf3kASI7/R8AQwAAAD8gOyAxIDX9DQABAgMQERITAAECAwABAgMiMCAw/eYBIDYgN/0NAAECAxAREhMAAQIDAAECAyIwIDD95gEgOCA5/Q0AAQIDEBESEwABAgMAAQIDIjAgMP3mAf3kAf3kASI//Q0UFRYXBAUGBwABAgMAAQIDIDEgMf0NCAkKCwABAgMAAQIDAAECAyA1IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMiAy/eYBIDYgMf0NCAkKCwABAgMAAQIDAAECAyA3IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMyAz/eYBIDggMf0NCAkKCwABAgMAAQIDAAECAyA5IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMCAw/eYB/eQB/eQBIjwgMf0NBAUGBwABAgMAAQIDAAECA/0NAAECAwQFBgcQERITAAECAyA1/R8AIkMgNf0fAZQgN/0fACJEIDf9HwGUIDn9HwAiSSA5/R8BlJKSIlf9IAP9DAAAAD8AAAA/AAAAPwAAAD/95gEiPf0fARDeBiFMID/9HwBDAAAAPyA9/R8AEN4GIUYgPP0fAEMAAAA/ID39HwIQ3gYhTyA+IDL95gEgNCAz/eYBIDogMP3mAf3kAf3kASI0/R8AQwAAAD8gNP0fAUMAAAA/lBDeBiFIQwAAAAAhUiAx/R8AIkUgMf0fApQgNv0fACJCIDb9HwKUIDj9HwAiQCA4/R8ClJKSIkdDAAAAPyBDIDX9HwKUIEQgN/0fApQgSSA5/R8ClJKSIk5DAAAAP5QQ3gYiSiBIIEUgMf0fAZQgQiA2/R8BlCBAIDj9HwGUkpIiQ0MAAAA/ID39HwMQ3gYiS5QgSiBMlJMiRJQgRiBMIE+UIEggSJSTIkmUIEsgTyBLlCJFIEogSJQiQpOUk5IiVYtDYEKiDSBPiyJQIEyLIlEgRosiQCBAIEBcGyJNIE0gUSBRIFFcGyJAIEAgTV0bIkAgQCBAXBsiTSBNIFAgUCBQXBsiQCBAIE1dGyJAIEAgQJSUIkAgQCBAXBsiQENgQqINIEBDYEKiDV4bQ19wiTCUXUUEQCASQRBqIBL9XQII/VYCAAIhMiAKQRBqIAr9XQII/VYCAAIhMyBVIEf9EyBO/SABIjogQ/0TIFf9IAEiMCA0/eYBIDsgOv3mAf3lAf3mASA/IDsgPP3mASA0IDT95gH95QH95gEgMCA8IDD95gEgOiA0/eYB/eUB/eYB/eUB/eQBIjD9HwAgMP0fAZSRlRDgBUMAAAA/lCAzIDL95QEiMP0fAiJOIEogS5QgSCBGlJNDAACAPyBVlSJHlCJAIECSIDD9HwEiQ5SUIE4gRCBHlCJAIECSIDD9HwAiRJSUIEMgQiBFkyBHlCJAIECSIESUlCBOIE4gRiBMlCBLIEuUkyBHlJSUIEQgRCBJIEeUlJQgQyBDIEYgT5QgSiBKlJMgR5SUlJKSkpKSQwAAAD6UkiFSCyAKKAIUIQkgEigCFCEFIFKMEIgEIUICQCAFIAlGBEBDAAAAACFAIBIoAhggCigCGEcNAQsgAkHwAGoiBSASELQDIAL9AARwITAgBSAKELQDIEIgMCAC/QAEcP3lASIwIDD95gEiMCAw/Q0ICQoLAAECAwABAgMAAQIDIDAgMCAw/Q0EBQYHAAECAwABAgMAAQID/eQB/eQB/R8AjBCIBJQiQCBAWw0AQwAAAAAhQAsgQCBBXkUNACAcISMgICEkIBchJSBAIUEgBCEMCyADQQRqIQMgBkEEayIGDQALCyAXIB9ZDQMgGSIXIB9VDQMMAQsLIAQgEEHA+cEAEPAHAAsgBCAPQdjRxgAQ8AcACyAeICBXDQEgGiAeVw0ACwsgHCAdUyIDBEAgHCADrXwiHCAdVw0BCwsgAiAjNwOIAiACICQ3A4ACIAIgJTcD+AEgAiBBOAL0ASACIAw2AvABIAxBf0YNBiACIAw2AnQgAiARNgJwIAAgAkHwAGpBAkMAAAAAEEIhDyALQQA6AAAgAkEwaiACQdgBahCOAiINRQ0DIA0oAiQiBSEOIA1BJGohCyAFQQlPBEAgDSgCBCEOCyAORQRAQQAhCgwGCyANQQRqIQlBACEKQQAhA0EAIQUDQCALKAIAIgchBCAJIQYgB0EJSSIIRQRAIA0oAgghBiANKAIEIQQLAkACQCAEIAVLBEAgESADIAZqKAIARgRAIApBAWohCgwDCyAKRQRAQQAhCgwDCyAJIQQgCEUEQCANKAIEIQcgDSgCCCEECyAFIAprIgYgB08NASAFIAdJBEAgBCADIApBAnRraiIIKAIAIQYgCCADIARqIgQoAgA2AgAgBCAGNgIADAMLIAUgB0HwucEAEPAHAAsgBSAEQeC5wQAQ8AcACyAGIAdB8LnBABDwBwALIANBBGohAyAFQQFqIgUgDkcNAAsMBAsgESAPQdjRxgAQ8AcACyARIBBBgPnBABDwBwALIAIgAi8BHkEBajsBHiACQSRqIAJBwAFqEJcCIAIoAiAiBCACKAIMIgtJDQYgAigCLEEBSw0GIAIgACgCCEEBazYCwAIgAiACQcACaq1CgICAgBCENwPwASACQfAAakG7jsAAIAJB8AFqEOAEIAIoAnAiAwRAIAIoAnQgA0EBEMEHCwJAAkACQAJAAkAgAigCwAIiBCAAKAIIIgNJBEAgAiAAKAIEIARBLGxqNgKoAiACICFCgICAgJAFhDcD8AEgAkHwAGpB4I/AACACQfABahDgBCACKAJwIgMEQCACKAJ0IANBARDBBwsgACgCCCIDRQ0PIANBAXRBAWsiBBBuIgNFDQFBACEFIAJBADYC4AEgAiADNgLcASACIAQ2AtgBIAIoAgwiCQRAIAQgCUkEQCACQdgBakEAIAlBAUEBENYGIAIoAuABIQUgAigC3AEhAwsgAyAFaiEGIAlBAUcEfyAJQQFrIgQEQCAGQQEgBPwLAAsgAyAEIAVqIgVqBSAGC0EBOgAAIAVBAWohBQsgAiAFNgLgASAFIAAoAggiCkkEQCAKIAVrIgQgAigC2AEgBWtLBEAgAkHYAWogBSAEQQFBARDWBiACKALgASEFIAIoAtwBIQMLIAMgBWohBiAEQQJPBH8gBEEBayIEBEAgBkEAIAT8CwALIAMgBCAFaiIFagUgBgtBADoAACAFQQFqIQoLIAIgCjYC4AEgAigCwAIiAyAKTw0EIAIoAtwBIgkgA2pBAToAACACQfAAaiAAIAIoAsACIAJB2AFqIAEQlAJBACEHQQAhAwJAIApBBE8EQP0MAAAAAAAAAAAAAAAAAAAAACEwIAkhBSAKQXxxIgchAwNAIDAgBf1cAAD9iQH9qQH9rgEhMCAFQQRqIQUgA0EEayIDDQALIDAgMCAw/Q0ICQoLDA0ODwABAgMAAQID/a4BIjAgMCAw/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQMgByAKRg0BCyAHIAlqIQUgCiAHayEHA0AgAyAFLQAAaiEDIAVBAWohBSAHQQFrIgcNAAsLIAIoApgBIQ8gAigCfCENIAIgAzYCxAIgAiAAKAIINgKoAiACICI3A3ggAiACQcQCaq1CgICAgBCEIhg3A3AgAkHwAWpBqprAACACQfAAahDgBCACKALwASIDBEAgAigC9AEgA0EBEMEHCyACIAIoAsQCsyACKAIMs5U4AqgCIAIgIUKAgICAoASENwPwASACQfAAakGfkcAAIAJB8AFqEOAEIAIoAnAiAwRAIAIoAnQgA0EBEMEHCyACQQA2ArACIAJCgICAgMAANwKoAiACQagCahChByACKAKsAiACKALAAiIENgIAIAJBATYCsAIgBCAAKAIIIgNPDQIgAiAAKAIEIARBLGxqIgMQlwQiASABkiADQRxqLwEAEKcGIgFDAACAP14EfSABEOAFQ1T4LUCUQwAAgD+SkQVDAACAPwuUOALIAkEEEG4iA0UNAyADIAIoAsACNgIAIAJB4AJqrUKAgICAEIQhFiACQcgCaq1CgICAgKAEhCEXQQEhBEEBIQcDQCACIAc2AuACIAIgFjcDeCACIBc3A3AgAkHwAWpBooHAACACQfAAahDgBCACKALwASIMBEAgAigC9AEiCEEEaygCACIGQXhxIgVBBEEIIAZBA3EiBhsgDGpJDRMgBkEAIAUgDEEnaksbDRQgCBCiAgtBACEFIAJBADYCeCACQoCAgIDAADcCcCAHQQJ0IQYDQCAAIAMgBWooAgAgAkGoAmogAioCyAIgAkHwAGoQ2AEgBiAFQQRqIgVHDQALAkAgAigCeCIHRQRAIAIoAnAiBgRAIAIoAnQgBkECdEEEEMEHCyACIAIoArACIgc2AswCIAcgAigCxAJGDQFBACACQcwCaiACQcQCakEAIAJB4PnBABCgCAALIAIgAioCyAJDAACAPpQ4AsgCIAIoAnQgAigCcCEGIAQEQCADQQRrKAIAIgtBeHEiDCAEQQJ0IghBBEEIIAtBA3EiBBtqSQ0UIARBACAMIAhBJ2pLGw0VIAMQogILIQMgBiEEDAELC0EAIQUDQCAFIAlqLQAARQRAIAIoAqgCIAdGBEAgAkGoAmoQoQcLIAIoAqwCIAdBAnRqIAU2AgAgAiAHQQFqIgc2ArACCyAKIAVBAWoiBUcNAAsgACACKAKsAiAHEP8BIAAgAigCxAIQpgUgAiAYNwPwASACQfAAakG9gMAAIAJB8AFqEOAEIAIoAnAiBgRAIAIoAnQgBkEBEMEHCyACIAAoAggiFQR8QgAhGkEAIQdBACEGA0AgAkHwAGogACgCECAAKAIUIAcQ8wIgAigClAEiBUEISwRAIAIoAngiDkEEaygCACIIQXhxIgsgBUECdCIMQQRBCCAIQQNxIggbakkNFCACKAJ0IQUgCEEAIAsgDEEnaksbDQggDhCiAgsgBiAFQQBHaiEGIBogBa18IRogFSAHQQFqIgdHDQALIBq6IAa3owVEAAAAAAAA+H8LOQPQAiACIAJB0AJqrUKAgICAgAWENwPwASACQfAAakHvj8AAIAJB8AFqEOAEIAIoAnAiBgRAIAIoAnQgBkEBEMEHCyACQfAAaiAAKAIQIAAoAhRBABDzAiACIAIoAnQgAigClAEiBiAGQQhLGzYC3AIgAiACQdwCaq1CgICAgBCENwPgAiACQfABakGAk8AAIAJB4AJqEOAEIAZBCU8EQCACKAJ4IAZBAnRBBBDBBwsgAigC8AEiBgRAIAIoAvQBIAZBARDBBwsgBARAIAMgBEECdEEEEMEHCyACKAKoAiIDBEAgAigCrAIgA0ECdEEEEMEHCyAPQQlPBEAgDSAPQQJ0QQQQwQcLIAIoAtgBIgMEQCAJIANBARDBBwsCQCACKAI0IgxFDQAgAigCPCIEBEAgAigCMCIFQQhqIQMgBSkDAEJ/hUKAgYKEiJCgwIB/gyEaA0AgGlAEQANAIAMiBkEIaiEDIAVBgARrIQUgBikDAEKAgYKEiJCgwIB/gyIXQoCBgoSIkKDAgH9RDQALIBdCgIGChIiQoMCAf4UhGgsgBSAaeqdBA3RBwAdxayIGQQRrKAIAIglBCU8EQCAGQSBrKAIAIgdBBGsoAgAiBkF4cSIIIAlBAnQiCUEEQQggBkEDcSIGG2pJDRUgBkEAIAggCUEnaksbDRYgBxCiAgsgGkIBfSAagyEaIARBAWsiBA0ACwsgDEEGdCIEIAxqQckAaiIDRQ0AIAIoAjAgBGtBQGogA0EIEMEHCyACKAIkIgMEQCACKAIoIANBA3RBBBDBBwsgAigCECIDBEAgEyADQQEQwQcLIAAoAgghBwwQCyAEIANB2NHGABDwBwALQQEgBBCaCQALIAQgA0HY0cYAEPAHAAtBBBCxCgALIAMgCkHQ+cEAEPAHAAsMDAtBkPnBABCZCgALIAsoAgAhBQsgDiAKayIEIA1BBEEkIAVBCEsiAxtqKAIASQRAIA1BBGogCyADGyAENgIACwJAAkACQAJAIAwgEEkEQCAMIBNqQQA6AAAgAkEwaiAVEI4CIgpFDQIgCigCJCIFIQsgCkEkaiENIAVBCU8EQCAKKAIEIQsLIAsNAUEAIQgMBAsgDCAQQaD5wQAQ8AcACyAKQQRqIQlBACEIQQAhA0EAIQUDQCANKAIAIgchBCAJIQYgB0EJSSIORQRAIAooAgghBiAKKAIEIQQLAkACQCAEIAVLBEAgDCADIAZqKAIARgRAIAhBAWohCAwDCyAIRQRAQQAhCAwDCyAJIQQgDkUEQCAKKAIEIQcgCigCCCEECyAFIAhrIgYgB08NASAFIAdJBEAgBCADIAhBAnRraiIHKAIAIQYgByADIARqIgQoAgA2AgAgBCAGNgIADAMLIAUgB0HwucEAEPAHAAsgBSAEQeC5wQAQ8AcACyAGIAdB8LnBABDwBwALIANBBGohAyAFQQFqIgUgC0cNAAsMAQtBsPnBABCZCgALIA0oAgAhBQsgCyAIayIEIApBBEEkIAVBCEsiAxtqKAIASQRAIApBBGogDSADGyAENgIACyACKAIQIBBGBH8jAEEQayIFJAAgBUEEaiACQRBqIgYoAgAiAyAGKAIEQQggA0EBdCIDIANBCE0bIgRBAUEBEM4GIAUoAgRBAUYEQCAFKAIIIAUoAgwQmgkACyAFKAIIIQMgBiAENgIAIAYgAzYCBCAFQRBqJAAgAigCFAUgEwsgEGpBAToAACACIBBBAWo2AhhDAACAPyFAAn8CQCAAKAIIIgMgD0sEQCAAKAIEIA9BLGxqIgYQlwQhQiAGLwEcIgRB//8BcUUEQCAEQRB0DAMLIARB/wdxIQUgBEGAgAJxIQMgBEGA+AFxIgRBgPgBRgRAIANBEHQiA0GAgID8B3IgBUUNAxogAyAFQQ10ckGAgID+B3IMAwsgA0EQdCEDIARFDQEgBEENdEGAgID8AHEgBUENdHJBgICAwANqIANyDAILIA8gA0HY0cYAEPAHAAsgA0GAgIDYA3IgBWdBEGsiA0EXdGsgBSADQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EQCBBEOAFQ1T4LUCUQwAAgD+SkSFACyBCIEKSIECUIkIgAioCYCJAXkUEQCACIAb9XQIIIAYqAhAiQf0gAiBB/SADIED9E/3nAf1oIjD9HwL8BDcDoAIgAiAw/R8B/AQ3A5gCIAIgMP0fAPwENwOQAiACQfAAaiACQTBqIAJBkAJqEIYCAkAgAigCkAEiCQRAIAIgFCkDADcDqAIgAiAU/QADCP0LA7ACIAkoAgAiCCAJKAIEIgUgAigCcCIEcSIHaikAAEKAgYKEiJCgwIB/gyIaUARAQQghBgNAIAYgB2ohAyAGQQhqIQYgCCADIAVxIgdqKQAAQoCBgoSIkKDAgH+DIhpQDQALCyAIIBp6p0EDdiAHaiAFcSIHaiwAACIGQQBOBEAgCCAIKQMAQoCBgoSIkKDAgH+DeqdBA3YiB2otAAAhBgsgByAIaiAEQRl2IgM6AAAgCSAJKAIIIAZBAXFrNgIIIAggB0EIayAFcWpBCGogAzoAACAIIAdBBnRrIgVBQGoiAyACKQO4AjcDECADIAL9AAOoAv0LAwAgBUEEa0EANgIAIAVBKGtBADYCACAJIAkoAgxBAWo2AgwMAQsgAigCcCEFCyAFQSRrIQYCfyAFQQRrIgMoAgAiBEEJSQRAIAQhB0EIIQQgBgwBCyAGKAIAIQcgBiEDIAVBIGsoAgALIQggBCAHRgRAIAVBKGsQ5QYgBUEgaygCACEIIAYoAgAhByAGIQMLIAggB0ECdGogDzYCACADIAMoAgBBAWo2AgAgAkEkaiBCjCAPEJgFDAILIAIoAsgBIgQgAigCwAFGBEAgAkHAAWoQnwcLIAIoAsQBIARBA3RqIgMgDzYCBCADIEKMOAIAIAIgBEEBajYCyAEMAQsgAioC0AEhQSACKALIASIEIAIoAsABRgRAIAJBwAFqEJ8HCyACKALEASAEQQN0aiIDIBE2AgQgAyBBOAIAIAIgBEEBajYCyAEMAAsACwsgDCADQdjRxgAQ8AcAC0EEIAMQmgkACwwCCxCYCgALIAcEQCAAKAIEQRxqIQMDQAJAAn8CQAJAAn8CQCADLwEAIgxB//8BcSIFBEAgDEH/B3EhCyAMQYCAAnEhCCAMQYD4AXEiCUGA+AFHIgZFBEAgCEEQdCIEQYCAgPwHciALRQ0DGiAEIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQQgCUUNASAJQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogBHIMAgsgDEEQdL5DAACAP14NAgwFCyAEQYCAgNgDciALZ0EQayIEQRd0ayALIARB//8DcUEIanRB////A3FyC75DAACAP15FDQMgBQ0BCyAMQRB0DAELIAZFBEAgCEEQdCIEQYCAgPwHciALRQ0BGiAEIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgQgCUENdEGAgID8AHEgC0ENdHJBgICAwANqciAJDQAaIARBgICA2ANyIAtnQRBrIgRBF3RrIAsgBEH//wNxQQhqdEH///8DcXILQwAAgD8hQL4iAUMAAIA/XgRAIAEQ4AVDVPgtQJRDAACAP5KRQwAAgL+SQwAAgD6UQwAAgD+SIUALQwAAAEBDAACAPyBAIEBDAACAP10bIgEgAUMAAABAXhu8IgVB////A3EhBiAFQYCAgIB4cSEEAkAgBUGAgID8B3EiCEGAgID8B0YEQCAGQQ12IARBEHZyQYAEQQAgBhtyQYD4AXIhBAwBCyAEQRB2IQQgCEGAgIC4BE0EQCAIQYCAgMQDTwRAIAVBDHYgBUH/3wBxQQBHcSAIQQ12IAZBDXZqQYCAAWogBHJqIQQMAgsgCEGAgICYA0kNASAGQYCAgARyIglB/gAgCEEXdiIGa3YhBSAJQR0gBmsiBnZBAXEEfyAFQQMgBnRBAWsgCXFBAEdqBSAFCyAEciEEDAELIARBgPgBciEECyADIAQ7AQALIANBLGohAyAHQQFrIgcNAAsLIAAQWiACQfACaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALk5MBAhF/An4jAEGwAWsiBiQAIAMtAAMiC0EYdCIIIAMtAAAiDXIgAy0AASIOQQh0IgogAy0AAiIJQRB0IgxyciIHQf+B/AdxQQh4IAdBGHhB/4H8B3FyIQMCQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgUEAAECJwMLIAFCADcDgAMgAEEAOgAIIAAgBTYCBCAAQQA2AgAgASADrUIghkIDhDcD+AIMfwsgAigCBCEHIAEoAghBAkYgCiANciAIIAxyciIDQcmQkZIFR3ENAyABKALYAiIIIANHIAhByYiFogVGIAhB5siFogVGcnENHyABIAM2AtgCIAEtAJEDRQRAIAFCBDcDyAIgASALIAkgDiANQf8Bc0ECdCgCxMFCQf///wdzIgJzQf8BcUECdCgCxMFCIAJBCHZzIgJzQf8BcUECdCgCxMFCIAJBCHZzIgJzQf8BcUECdCgCxMFCIAJBCHZzQX9zNgLQAgsgAUEANgLoAiABIAc2AtwCIA1ByQBGDRsgDUHmAEYNGiANQdAAaw4rBQQEBAQEBAQEBAQEBAQEBAQKDQsEDgQJBA8EBAQMBAQIBAQGBwQEBAQEEAQLIAIoAAEhEiABLQCRAw0fIAEoAtACIgIgA0YNHyABLQCUA0EBRkEAIBJBIHEbDSAgACASNgIQIAAgAjYCDCAAIAM2AgggAEEAOgAEIABBATYCAAx9CyAHQYmhuboERwRAIABBATYCACAAQQE6AAQMfQsgAUIANwOAAyABQgE3A/gCIABBADoACCAAIAU2AgQgAEEANgIADHwLIAdBjZTo0ABHBEAgAEEBNgIAIABBAToABAx8CyABQgA3A4ADIAFCAjcD+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMewsgACADNgAFIABBBDoABCAAQQE2AgAMegsgDUEgcUUEQEEiIQIMeQtBBiEKDG8LQSIhAiALQcUARyAOQcwAR3IgCUHUAEdyDXdBAyEMQYAGIQIMcQtBBiEKQQEhAiADIQggDkHCAGsiBEUNCiAEQRBGDQsMdAtBBiEKQQEhAiADIQggDkHFAGsiBEUNDCAEQQ1GDQsMcwtBBiEKQQEhAiALQfMARwRAIAMhCAxzCyAOQcgARwRAIAMhCAxzCyADIQggCUHZAEcNckEJIQJBCSEMDG4LQQYhCkEBIQIgC0HBAEcEQCADIQgMcgsgDkHBAEcEQCADIQgMcgsgAyEIIAlBzQBHDXEMbAtBBiEKQQEhAiALQcwARwRAIAMhCAxxCyAOQeMARwRAIAMhCAxxCyADIQggCUHUAEcNcAxqC0EGIQpBASECIAMhCCAOQcgAaw4FCQpvbwtvC0EGIQpBASECIAtB1gBHBEAgAyEIDG8LIA5BxABHBEAgAyEIDG8LIAMhCCAJQcMARw1uQRghAkEYIQwMagtBBiEKQQEhDCALQcQARyAOQcsAR3IgCUHHAEdyDWZBBiECDGkLQQYhCkEBIQIgC0HmAEcEQCADIQgMbQsgDkHYAEcEQCADIQgMbQsgAyEIIAlByQBHDWxB/////wchAgxpC0EGIQpBASECIAMhCCAOQcMAayIERQ0IIARBEUYNCQxrC0EGIQpBASECIAtB9ABHBEAgAyEIDGsLIA5B1ABHBEAgAyEIDGsLIAlB2ABHBEAgAyEIDGsLIAMhCCABLQCSA0EBcQ1qQf////8HIQIMZwtBASEMIAtB1ABHIAlByQBHcg1iQQQhAgxlCyALQcIARg0KDGgLQQEhDCALQdMARyAJQc4AR3INYEGAAiECDGMLIAtB9ABHIAlB2ABHcg1mIAEtAJIDQQFxDWZB/////wchAgxjCyALQc0ARyAJQdIAR3INZUEgIQJBICEMDGELIAtB0ABHDWQgCUHDAEYNXwxkCyALQckARw1jIAlBzABGDV0MYwsgC0HQAEcgCUHDAEdyDWIgAS0AkwNBAXENYkH/////ByECDF8LIAtB9ABHIAlB2ABHcg1hIAEtAJIDQQFxDWFB/////wchAgxeCyAOQeQARyAJQcEAR3JFIAtB1ABGcQ0BQQEhAkEGIQogAyEIIA5B4wBrDgJUU2ALIA5BxABHIAlBwQBHckUgC0HUAEZxDQJBIiECIA5BxABrDgVUVmFhV2ELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAxiCyAHQQNLBEBBACECQQUhCkEAIQgMXwsgAEEBNgIAIABBHzoABAxhC0EBIQwgCUHHAEYNWQxdCyABLQCNA0UEQCAAQcmIhaIFNgAFIABBIDoABCAAQQE2AgAMYAsgAUEBOgCMA0EHDFoLAkAgBARAQQEhBwJAIAEtAPQCQQFHDQAgASgC8AIiDC0AowdBB0YNACAEKAIMIg8oAgAiECAEKAIEIgpGDQAgCiAEKAIIIhIoAgAiCEkNCSAGQUBrIAxBAUEAIAQoAgAgCGogCiAIayAQIAhrQQAQSCAGLQBABEAgBi0AQSEIDFELIA8gDygCACAGKAJIaiIENgIAIBIgDC0AowdBB0YiBwR/IAQFQQEhCCAEIApHDVEgCkGAgAJrIgRBACAEIApNGyIEIBIoAgAiCCAEIAhLGws2AgALIAEgCzoAgwMgASAJOgCCAyABIA46AIEDIAEgDToAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIAcNASAAQQU6AAggAEIANwIADGALIAEgCzoAgwMgASAJOgCCAyABIA46AIEDIAEgDToAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCCyABQQA7AI0DIAEgAzYC2AIgAEEGOgAIIABCADcCAAxeCyABLQDsAkEBaw4CAgMBCyABQgA3A4ADIAFCAjcD+AIgACASNgAJIABBAzoACCAAIAU2AgQgAEEANgIADFwLIAYgEjYCJCASQRh2IQIgEkEQdiEDIBJBCHYhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCASQf8BcUHJAGsOMgB2dnZ2dnYBdnZ2dnZ2dnZ2dnZ2dnZ2dgcKCHYLAgZ2DHZ2dgl2dgV2dgMEdnZ2dnYNdgsgBEH/AXFBxABrDgUPDnV1DXULIARB/wFxQcwARyADQf8BcUHUAEdyIAJBxQBHcg10IAEoAghBAkYNMSABKALgAUGBgICAeEYNECAGQdCY0aoENgApQQkhByAGQQk6ACgMbQsgBEH/AXFB4wBrDgIREHMLIARB/wFxQcIAayIERQ0SIARBEEYNEwxyCyAEQf8BcUHFAGsiBEUNFiAEQQ1GDRUMcQsgAkHzAEcgBEH/AXFByABHciADQf8BcUHZAEdyDXAgASgCCEECRg05IAEtAIwDDTogAS0AnAJBAkYNGCAGQfCQ5ZoHNgApQQkhByAGQQk6ACgMaQsgAkHBAEcgBEH/AXFBwQBHciADQf8BcUHNAEdyDW8gASgCCCICQQJGDTogAS0AjAMNOyACQQFHDRggBkHngrWKBDYAKUEJIQcgBkEJOgAoDGgLIAJBzABHIARB/wFxQeMAR3IgA0H/AXFB1ABHcg1uIAEoAghBAkYNOyABLQCMAw08IAEoAjRFDRggBkHhxtHiBDYAKUEJIQcgBkEJOgAoDGcLIARB/wFxQcgAaw4FGBltbRptCyACQdYARyAEQf8BcUHEAEdyIANB/wFxQcMAR3INbCABKAIIQQJGDUAgASgCbEUNHSAGQe2IjbIFNgApQQkhByAGQQk6ACgMZQsgAkHEAEcgBEH/AXFBywBHciADQf8BcUHHAEdyDWsgASgCCEECRg1CIAEoAuwBQYGAgIB4Rg0dIAZB4padogQ2AClBCSEHIAZBCToAKAxkCyACQeYARyAEQf8BcUHYAEdyIANB/wFxQckAR3INaiABKAIIQQJGDUIgASgChAJBgYCAgHhGDR0gBkHlsKWyBjYAKUEJIQcgBkEJOgAoDGMLIARB/wFxQcMAayIERQ0dIARBEUYNTQxpCyACQfQARyAEQf8BcUHUAEdyDWggA0H/AXFB2ABGDR0MaAsgA0H/AXFBxABHIAJB0gBHcg1nIAEoAghBAkYNAiAGQcmQkZIFNgApQQkhByAGQQk6ACgMYAsgA0H/AXFBzgBHIAJBxABHcg1mDGQLIANB/wFxQcEARyACQdQAR3INZQxjCwJAAkAgASgC6AIiAkEDTQRAQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADE0LIAJBB00EQEHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxNCyABKALkAiIDKAAAIg5FDQAgAygABCIIDQELQREhByAGQRE6ACgMXgsCfyACQQhHBEAgAkEJayEKIAMtAAghAiADQQlqDAELQQAhAkHglccAMQAAQgRSDRtBACEKIANBCGoLIQQCQCACIAJBAWsiA3NB/wFxIANB/wFxSwRAIAJoIgNBBUkNAQsgBiACOgApQRIhByAGQRI6ACgMXgtCgYSQwIACIANBA3StQvgBg4inIQICQCAKRQRAQQAhB0EAIQtB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMTAsCQCAGAn8CQAJAAkACQCAELQAAIgsOBwMKAAMBCgIKCyADQR9xQQNPDQRBAgwDCyADQR9xQQNPDQNBBAwCCyADQR9xQQNPDQJBBgwBCyADQQRHIAtBA0dyDQFBAws6ACogBiACOgApQQ8hByAGQQ86ACgMXwsgCkEBRgRAQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxMCyAELQABIgMNICAKQQJrIgNFBEBBACEHQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEwLIAQtAAIiCg0hIANBAUYEQEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMTAtBACEHAkACQCAELQADIgoOAgIBAAsgBiAKOgApQRohByAGQRo6ACgMXwtBASEHCwJAIAFBCGoiDCgCAEECRg0AAkAgDCgCwAEiA0EASgRAIAwoAsQBIgRBBGsoAgAiCUF4cSINQQRBCCAJQQNxIgkbIANqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAswBIgNBAEoEQCAMKALQASIEQQRrKAIAIglBeHEiDUEEQQggCUEDcSIJGyADakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKALYASIDQQBKBEAgDCgC3AEiBEEEaygCACIJQXhxIg1BBEEIIAlBA3EiCRsgA2pJDXsgCUEAIA0gA0EnaksbDQEgBBCiAgsgDCgC5AEiA0EASgRAIAwoAugBIgRBBGsoAgAiCUF4cSINQQRBCCAJQQNxIgkbIANqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAvABIgNBAEoEQCAMKAL0ASIEQQRrKAIAIglBeHEiDUEEQQggCUEDcSIJGyADakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKAL8ASIDQQBKBEAgDCgCgAIiBEEEaygCACIJQXhxIg1BBEEIIAlBA3EiCRsgA2pJDXsgCUEAIA0gA0EnaksbDQEgBBCiAgsgDCgCoAEhBCAMKAKkASIJBEAgBCEDA0AgAygCACINBEAgA0EEaigCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQQxqKAIAIg0EQCADQRBqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBGGohAyAJQQFrIgkNAAsLIAwoApwBIgMEQCAEQQRrKAIAIglBeHEiDSADQRhsIgNBBEEIIAlBA3EiCRtqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAqwBIQQgDCgCsAEiCQRAIARBFGohAwNAIANBBGsoAgAiDQRAIAMoAgAiD0EEaygCACIQQXhxIhFBBEEIIBBBA3EiEBsgDWpJDX0gEEEAIBEgDUEnaksbDQMgDxCiAgsgA0EQaygCACINBEAgA0EMaygCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQRxqIQMgCUEBayIJDQALCyAMKAKoASIDBEAgBEEEaygCACIJQXhxIg0gA0EcbCIDQQRBCCAJQQNxIgkbakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKAK4ASEEIAwoArwBIgkEQCAEIQMDQCADQRBqKAIAIg0EQCADQRRqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBHGooAgAiDQRAIANBIGooAgAiD0EEaygCACIQQXhxIhFBBEEIIBBBA3EiEBsgDWpJDX0gEEEAIBEgDUEnaksbDQMgDxCiAgsgA0EoaigCACINBEAgA0EsaigCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQQRqKAIAIg0EQCADQQhqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBOGohAyAJQQFrIgkNAAsLIAwoArQBIgNFDQEgBEEEaygCACIMQXhxIgkgA0E4bCIDQQRBCCAMQQNxIgwbakkNeiAMQQAgCSADQSdqSxsNACAEEKICDAELDHoLIAEgAjoAxwIgASALOgDGAiABQQQ6AMUCIAEgBzoAxAIgASAIQRh4Qf+B/AdxIAhB/4H8B3FBCHhyNgLAAiABIA5BGHhB/4H8B3EgDkH/gfwHcUEIeHI2ArwCIAFBAjoAuQIgAUECOgCcAiABQQI2ApACIAFBgYCAgHg2AoQCIAFBgYCAgHg2AvgBIAFBgYCAgHg2AuwBIAFBgYCAgHg2AuABIAFBgYCAgHg2AtQBIAFCgICAgJCAgICAfzcCxAEgAUKAgICAwAA3ArwBIAFCBDcCtAEgAUIANwKsASABQoCAgIDAADcCpAEgAUEANgKYASABQQA2AmwgAUEANgJIIAFBADYCQCABQQA2AjQgAUEANgIQIAFBADYCCAxiCwJAIAEoAugCIgJFBEBBASEHDAELIAEoAuQCIQMgAhBuIgdFDXcgAkUNACAHIAMgAvwKAAALIAEgAjYC6AEgASAHNgLkASABIAI2AuABDFsLIAJB1ABHIANB/wFxQcEAR3INYgxgCyACQcwARyADQf8BcUHUAEdyDWEgASgC5AIhBAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgC6AIiA0EDTQRAQQAhAkHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxTCyAEKAAAIghB/4H8B3FBCHggCEEYeEH/gfwHcXIhAiADQQRrIQMgBEEEaiEHIAEoAgBFDQIgAyEKDAELIAMgBGohB0EAIQpBACEDIAEoAgBBAUcNAgsgAiABKAIEQQFqIghHDQMgCiEDDAELIAgNAUEAIQILIAEgAjYCBCABQQE2AgAjAEEQayIIJAAgAUHwAmoiBEEAOgAEAkACQEGAgAEQbiIKBEAgCkEEay0AAEEDcQRAIApBAEGAgAH8CwALQYAQEG4iDEUNASAMQQRrLQAAQQNxBEAgDEEAQYAQ/AsACyAIQQA7AQwgCEEANgIIIAQoAgAiBCgC+AYiCUEEaygCACILQXhxQYSAAUGIgAEgC0EDcSIOG0kNfyAOQQAgC0GogAFPGw2AASAJEKICIAQoAuAGIgsEQCAEKALkBiIJQQRrKAIAIg5BeHEiDSALQQF0IgtBBEEIIA5BA3EiDhtqSQ2AASAOQQAgDSALQSdqSxsNgQEgCRCiAgsgBCgC/AYiCUEEaygCACILQXhxQYQQQYgQIAtBA3EiDhtJDX8gDkEAIAtBqBBPGw2AASAJEKICIAQoAuwGIgsEQCAEKALwBiIJQQRrKAIAIg5BeHEiDSALQQF0IgtBBEEIIA5BA3EiDhtqSQ2AASAOQQAgDSALQSdqSxsNgQEgCRCiAgsgBEEAQdgG/AsAIARBADYClAcgBEEANgKIByAEQQA6AIQHIARBADYCgAcgBCAMNgL8BiAEIAo2AvgGIARCAjcD8AYgBEIANwPoBiAEQoCAgIAgNwPgBiAEQQE2AtwGIARBMTYC2AYgBEEAOgCmByAEIAgpAwA3A5gHIAQgCCkBBjcBngcgCEEQaiQADAILQYCAARCxCgALQYAQELEKAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEIQeCVxwAxAABCBFINAkEAIQpBACELDAQLQQAhCAsgBiAINgIwIAYgAjYCLEEKIQcgBkEKOgAoDF8LIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSwsgBygAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQogA0F8cSIEQQRHDQJBACELQeCVxwAxAABCBFINAUEAIQgLQQAhDAxWCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIAcoAAQiCEH/gfwHcUEIeCAIQRh4Qf+B/AdxciEIIARBCEYEQEEAIQxB4JXHACkDACIXQv8Bg0IEUQRAQQAhCwxWCyAGQSQ6ACggBiAXNwIsIBdCIIinDEgLIAcoAAgiDEH/gfwHcUEIeCAMQRh4Qf+B/AdxciELIARBDEYEQEHglccAMQAAQgRRBEBBACEMDFYLIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAsgBygADCIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQwgA0F+cSIEQRBGBEBBAEHglccAMQAAQgRRDVYaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAsgBy8AECIJQQh0IAlBCHZyIQ8gBEESRgRAQQAhA0HglccAMQAAQgRRBEBBACEEQQAhDgxYCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIAcvABIiBEEIdCAEQQh2ciEEIANBFEYEQEEAIQ5BACEDQeCVxwAxAABCBFENVyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIActABQiDkEDTwRAIAYgDjoAKUEUIQcgBkEUOgAoDFsLIANBFUYEQEEAIQNB4JXHADEAAEIEUQ1XIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAtBACEDAkACQCAHLQAVIgcOAlgBAAsgBiAHOgApQRUhByAGQRU6ACgMWwtBASEDDFYLIAYgCzoAKUETIQcMVgsgAkHUAEcgA0H/AXFByQBHcg1fIAEoAghBAkYNHSABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDFELIAJBwgBHIANB/wFxQccAR3INXiABKAIIQQJGDR8gAS0AjAMNICABLQDFAkEERg0BIAZB86SdkgQ2AClBCSEHIAZBCToAKAxXCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSEHIAZBCToAKAxYCyAGQfOEpaIFNgApDE8LIAEtAMYCIQIgAS0AxwIhBAJAIAEoAugCIghFBEBBASEDDAELIAEoAuQCIQcgCBBuIgNFDR0gCEUNACADIAcgCPwKAAALIAYCfwJAIAggAkECdCgC+JhIIgdGBEBBCCAEIAJBA0YbIQRBACECDAELIAYgCDYCMCAGIAc2AiwgBiACOgApQQwMAQsDQCACIANqLQAAIgpBAWtB/wFxIARB/wFxSQRAIAJBAWoiAiAIRw0BDCALCyAGIAQ6ACogBiAKOgApQQ0LIgc6ACggCEUEQEEAIQgMSwsgAyAIQQEQwQcMSgsCQCABKALoAkUEQEEAIQJB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMRAsgASgC5AItAAAiAkEESQ0AIAYgAjoAKUEXIQcgBkEXOgAoDFYLIAEgAjoAxQIMVAsgAkHTAEcgA0H/AXFBzgBHcg1bIAEoAghBAkYNHiABKALUAUGBgICAeEYNASAGQdCY0aoENgApQQkhByAGQQk6ACgMVAsgAkH0AEcgA0H/AXFB2ABHcg1aIAEoAogDIgIgASgC6AIiBE8NAQxKCyABLQDHAiEDIAEtAMYCIQQCQCABKALoAiIIRQRAQQEhAgwBCyABKALkAiEKIAgQbiICRQ0eIAhFDQAgAiAKIAj8CgAACwJAAkACQAJAIAQOBAEAAgMACyAGIAQ6AClBECEHIAZBEDoAKCAIRQ1VIAIgCEEBEMEHDEkLIAhBAk8EQCAIIQcgA0EQSQ0hDEoLIAYgCDYCMCAGQQI2AiwMRgsgCEEGSQ0gIANBEE8EQCABIAg2AtwBDEoLIAIgAi0AAToAACACIAItAAM6AAEgAiACLQAFOgACIAFBAzYC3AEMSQsgASgC4AFBgYCAgHhGDSAgAS0AjANFBEAgASAINgLcAQxJCyAGQfSkuZoFNgApQQgMRQsgASACIARrNgKIA0GeBCEKAkACQCAERQ0AIAEoAuQCIQNBACECA0AgAiADaiIILQAABEAgBCACQQFqIgJHDQEMAgsLQZ4CIQogAkHQAGtBsH9LDQELIAYgCjYCKEEeIQIMUwsgASgCCEECRg0gIAJBf3MgBGohDiAIQQFqIQkgBCACQQFqIg1rIQ9BACEMIAZBADYCgAEgBkKAgICAEDcCeCAGQfgAakEAIAIQ4gYgBigCgAEhCANAQQFBAiADIAxqLAAAIgpBAE4iEBsiCyAGKAJ4IAhrSwR/IAZB+ABqIAggCxDiBiAGKAKAAQUgCAsgBigCfCIHaiIRIBBFBEAgESAKQb8BcToAASAKQcABcUEGdkFAciEKCyAKOgAAIAYgCCALaiIINgKAASACIAxBAWoiDEcNAAtBACEDIAZBADYCSCAGQoCAgIAQNwNAIAQgDUcEQCAGQUBrQQAgDxDiBiAGKAJIIQMDQEEBQQIgCSwAACICQQBOIgobIgggBigCQCADa0sEfyAGQUBrIAMgCBDiBiAGKAJIBSADCyAGKAJEaiIEIAoEfyACBSAEIAJBvwFxOgABIAJBwAFxQQZ2QUByCzoAACAGIAMgCGoiAzYCSCAJQQFqIQkgDkEBayIODQALCyAGIAYoAX42AjggBiAGLwGCATsBPCAGKAJ4IgRBgICAgHhGBEAgBiAHOgApDEMLIAdBCHYhCCAGKQNAIRcgBiAGLwE8OwGkASAGIAYoAjg2AqABIAEoAqwBIgIgASgCpAFGBEAgAUGkAWoQngcLIAEgAkEBajYCrAEgASgCqAEgAkEYbGoiAiAIOgAFIAIgBzoABCACIAQ2AgAgAiAGKAKgATYBBiACIAYvAaQBOwEKIAIgAzYCFCACIBc3AgwMQQsCQCABKALoAiICQQNNBEBBACEHQQAhA0EAIQJB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMPwsgASgC5AIiCCgAACIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQMgAkEHTQRAQQAhAkEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMPwsgCCgABCIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQcgAkEIRgRAQQAhAkHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw/C0EAIQICQAJAIAgtAAgiCA4CAgEACyAGIAg6AClBFiEHIAZBFjoAKAxSC0EBIQILIAEgAjoAnAIgASAHNgKYAiABIAM2ApQCDE8LAkACQCABKALoAkEDTQRAQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADD8LIAEoAuQCKAAAIgINAQtBIyEHIAZBIzoAKAxQCyABQQE2AgggASACQRh4Qf+B/AdxIAJB/4H8B3FBCHhyNgIMDE4LIAEoAugCIgJBA00EQEHglccAMQAAQgRRDU4gBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw8CyABKALkAiIEKAAAIQMgAkEITwRAIAQoAAQiAkH/gfwHcUEIeCACQRh4Qf+B/AdxciECDD4LQQAhAkHglccAMQAAQgRRDT0gBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw7CyACQc0ARyADQf8BcUHSAEdyDVQgASgCCEECRg0jIAEtAIwDDSQgASgCEEUNAiAGQeOQyeoENgApQQkhByAGQQk6ACgMTQsgAkHQAEcgA0H/AXFBwwBHcg1TIAEoAghBAkYNJCABLQCQAkECRg0CIAZB45KNggU2AClBCSEHIAZBCToAKAxMCyACQckARyADQf8BcUHMAEdyDVIgASgCCEECRg0lIAEoApgBRQ0CIAZB45ixygQ2AClBCSEHIAZBCToAKAxLCyABKALoAiIDQQNNBEBBACECQQAhB0EAIQNBACEIQQAhCkEAIQxBACELQQAhCUHglccAMQAAQgRRDTkgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw4CyABKALkAiICKAAAIgRB/4H8B3FBCHggBEEYeEH/gfwHcXIhCSADQXxxIgRBBEYEQEEAIQJBACEHQQAhA0EAIQhBACEKQQAhDEEAIQtB4JXHADEAAEIEUQ05IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAigABCIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQsgBEEIRgRAQQAhAkEAIQdBACEDQQAhCEEAIQpBACEMQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoAAgiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEMIARBDEYEQEEAIQJBACEHQQAhA0EAIQhBACEKQeCVxwApAwAiF0L/AYNCBFENOSAGQSQ6ACggBiAXNwIsIBdCIIinDDgLIAIoAAwiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEKIARBEEYEQEEAIQJBACEHQQAhA0EAIQhB4JXHADEAAEIEUQ05IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAigAECIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQggBEEURgRAQQAhAkEAIQdBACEDQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoABQiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEDIARBGEYEQEEAIQJBACEHQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoABgiB0H/gfwHcUEIeCAHQRh4Qf+B/AdxciEHIARBHEcEQCACKAAcIgJB/4H8B3FBCHggAkEYeEH/gfwHcXIhAgw5C0EAIQJB4JXHADEAAEIEUQ04IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNwsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxDCyABLQCMAw0iAkAgASgC6AIiAkUEQEEAIQNBACEIQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw4CyABKALkAiIELQAAIQMgAkEBRgRAQQAhCEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgBC0AASEIIAJBAkYEQEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgBC0AAiEKAkAgAkEDRgRAQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw5CwJAAkACQCAELQADIgcOAgIBAAsgBkKBKjcCLCAGQSQ6AChBAAw6C0EBIQcLIApB/wFxDTcgAkEERg0BIAZCgSo3AiwgBkEkOgAoQQAMOAsgCkH/AXENNgsgASAHIANB/wFxQQh0ciAIQf8BcUEQdHI2ApACDEgLAkAgAQJ/IAEoAugCIgJBA00EQEEAIQdBAEHglccAMQAAQgRRDQEaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgASgC5AIiAygAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQcgAkEHTQRAQQBB4JXHADEAAEIEUQ0BGiAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAJBCEcNASADKAAEIgJB/4H8B3FBCHggAkEYeEH/gfwHcXILIgI2AqABIAEgBzYCnAEgAUEBNgKYAQxICyAGQoEqNwIsIAZBJDoAKEEADDULIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMQQsgAS0AjAMNIyABKALkAiECAkACQAJAIAEoAugCIgdBAU0EQEEAIQhBACEKQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8AACIDQQh0IANBCHZyIQggB0F+cSILQQJGBEBBACEKQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8AAiIDQQh0IANBCHZyIQogC0EERgRAQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQFB4JXHACkDACEXQQYhBwsgF0L/AYNCBFEEQCACIAdqIANqIQJBACEDQQAhC0EAIQ5BACEEQQAhCQwCCyAGQSQ6ACggBiAXNwIsIBdCIIinDDYLIAIvAAYiA0EIdCADQQh2ciEJIAtBCEYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEOQQAhBAwCCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDYLIAIvAAgiA0EIdCADQQh2ciEPIAtBCkYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEOQQAhBAwCCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDYLIAIvAAoiA0EIdCADQQh2ciEEIAtBDEYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEODAILIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNgsgAi8ADCIDQQh0IANBCHZyIQ4gC0EORwRAIAIvAA4iA0EIdCADQQh2ckH//wNxQQF0IQsgB0EQayEDIAJBEGohAgwBC0EAIQNB4JXHADEAAEIEUg0lIAIgB2ohAkEAIQsLAkAgAQJ/IANBA00EQEEAIQdBAEHglccAMQAAQgRRDQEaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNwsgAigAACIHQf+B/AdxQQh4IAdBGHhB/4H8B3FyIQcgA0F8cUEERgRAQQBB4JXHADEAAEIEUQ0BGiAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDcLIANBCEcNASACKAAEIgJB/4H8B3FBCHggAkEYeEH/gfwHcXILIgI2ApQBIAEgBzYCkAEgASAEQf//A3FBAXQ2AowBIAEgD0H//wNxQQF0NgKIASABIAj9ECAK/RoBIAz9GgIgCf0aA/2pAUEB/asB/QsDeCABIAs2AnQgASAOQf//A3FBAXQ2AnAgAUEBNgJsDEcLIAZCgSo3AiwgBkEkOgAoQQAMNAsCQAJAAkACQCABLQCMA0UEQEECIQcgAS0AxgJBAWsOBgEDAgQBAwQLIAZB4padogQ2ACkMQgsACyABKALgAUGBgICAeEcEQEEBIQcMAgsgBkKBKjcCLCAGQSQ6AChBAAw1C0EGIQcLIAEoAugCIgJFBEAgBkHilp2iBDYAKUEhIQcgBkEhOgAoDEcLIAEoAuQCIQggAhBuIgNFDWAgAgRAIAMgCCAC/AoAAAsgAiAHRgRAIAEgBzYC9AEgASADNgLwASABIAc2AuwBDEYLIAZB4padogQ2AClBISEHIAZBIToAKCADIAJBARDBBww6CwJAIAEoAugCIgJFBEBBASEHDAELIAEoAuQCIQMgAhBuIgdFDWAgAkUNACAHIAMgAvwKAAALIAEgAjYCjAIgASAHNgKIAiABIAI2AoQCDEQLIAJB0ABHIANB/wFxQcMAR3INSyABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0pQQAhAiABKALoAiEDIAEoAuQCIQhB4JXHACkDACIYQv8BgyIXQgRRDSogA0ECayEHIANBAWshDEF9IQoDQCACIANGDS4gAiAIaiIELQAARQRAIAJFDUYgBEEBaiEJIAJBf3MgA2ohAgwtCyACIAxGDS4gBEEBai0AAEUNKCACIAdGDS4gBEECai0AAEUNKSAKQQNrIQogAkEDaiICQdEARw0ACwxECyAGQemGjYIFNgApQQkhByAGQQk6ACgMRAsgASgCiAMiAiABKALoAiIDSQRAQSchByAGQSc6ACgMRAsgASACIANrNgKIA0GeBCEIAkACQCADRQ0AIAEoAuQCIQRBACECA0AgAiAEai0AAARAIAMgAkEBaiICRw0BDAILC0GeAiEIIAJB0ABrQbB/Sw0BCyAGIAg2AihBHiEHDDgLIAJBAWoiCCADRgRAIAZBngo7AShBHiEHDEQLAkAgASgCCEECRwRAIAQgCGoiCC0AAA0BIAhBAWohCyADIAJrQQJrIQNBACEKIAZBADYCSCAGQoCAgIAQNwJAIAZBQGtBACACEOIGIAYoAkghBwNAQQFBAiAEIApqLAAAIghBAE4iCRsiDCAGKAJAIAdrSwR/IAZBQGsgByAMEOIGIAYoAkgFIAcLIAYoAkRqIg4gCUUEQCAOIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiAHIAxqIgc2AkggAiAKQQFqIgpHDQALAkAgA0UEQEEBIQcMAQsgAxBuIgdFDScgA0UNACAHIAsgA/wKAAALIAYpAkQhFyAGKAJAIQQgASgCuAEiAiABKAKwAUYEQCABQbABahCjBwsgASACQQFqNgK4ASABKAK0ASACQRxsaiICIBc3AhQgAiAENgIQIAIgAzYCDCACIAc2AgggAiADNgIEIAJBADYCAAxEC0HMuMQAEJkKAAsgBkGeCjsBKEEeIQcMQwsgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAwvCyABQgA3A4ADIAFCAjcD+AIgAEEEOgAIIAAgBTYCBCAAQQA2AgAgACABKALYAjYACQxaCyABQgA3A4ADIAFCAjcD+AIgACASNgAJIABBAzoACCAAIAU2AgQgAEEANgIADFkLIAEgASgC3AJBBGs2AtwCIAEoAgBFBEAgAEEBNgIAIABBAjoABAxZCyABKAIEQQFqIgIgA0cEQCAAIAI2AgwgACADNgIIIABBCjoABCAAQQE2AgAMWQsgASADNgIEIAFBATYCACABLQCRA0UEQCABIAEpA8gCQgR8NwPIAiABIAsgCSAOIA0gASgC0AJBf3MiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnNBf3M2AtACCyABQebIhaIFNgD5AiABQQc6APgCIABBADoACCAAIAU2AgQgAEEANgIADFgLIAggCiAKQby1xAAQoAUACyAGIAM6AClBGCEHIAZBGDoAKAw9CyAGIAo6AClBGSEHIAZBGToAKAw8C0H8t8QAEJkKAAtBjLjEABCZCgALQQEgCBCaCQALIAEgCDYC0AEgASADNgLMASABIAg2AsgBDDcLQZy4xAAQmQoACyAGQfOknZIENgApDC4LQby4xAAQmQoAC0EBIAgQmgkACyACIAItAAE6AABBASEHDCgLIAYgCDYCMCAGQQY2AiwMJAsgBkH0pLmaBTYAKUEGDCQLQay4xAAQmQoAC0Hst8QAEJkKAAsgBkHwkOWaBzYAKQwmC0H8tsQAEJkKAAsgBkHngrWKBDYAKQwkC0GMtsQAEJkKAAsgBkHhxtHiBDYAKQwiC0GstsQAEJkKAAsgBkHjkMnqBDYAKQwgC0G8tsQAEJkKAAsgBkHjko2CBTYAKQweC0HMtsQAEJkKAAtB3LfEABCZCgALIAZB7YiNsgU2ACkMGwsgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAwPC0GctsQAEJkKAAtB3LbEABCZCgALIAZB6YaNggU2ACkMFwtBASADEJoJAAsgBEECaiEJIAMgCmpBAWohAgwDCyADIApqIQIgBEEDaiEJDAILQfy4xAAQmQoACyADQQJrIQcgA0EBayEMIAMgCGohCUF9IQoCQAJAAkADQCACIANGDQMgAiAIaiIELQAARQ0CIAIgDEYNAyAEQQFqLQAARQ0BIAIgB0YNAyAEQQJqLQAABEAgCkEDayEKIAJBA2oiAkHRAEcNAQweCwsgAyAKaiECIARBA2ohCQwDCyAEQQJqIQkgAyAKakEBaiECDAILIAJFDRogBEEBaiEJIAJBf3MgA2ohAgwBCyADDQEMGQsgAg0CC0EAIgIgF0IEUQ0CGgsgF0IDUg0WIBhCIIinIgIoAgAhAyACQQRqKAIAIgQoAgAiCARAIAMgCBEDAAsgBCgCBCIIBEAgAyAIIAQoAggQwQcLIAJBDEEEEMEHDBYLIAktAAANFSAJQQFqIQkgAkEBawshAiAGQUBrIAkgAiABKAKIAyIEEN4BIAYoAkQhAgJAAkAgBigCQEEBRgRAIAJBgICAgHhyQYCAgIB4Rg0XIAYoAkghAwwBCyAGKAJIIQMgBCAGKAJMIghPDQEgAkUNFgsgAyACQQEQwQcMFQsgASAEIAhrNgKIAyABKAL4ASIEQQBKBEAgASgC/AEgBEEBEMEHCyABIAg2AoACIAEgAzYC/AEgASACNgL4AQwUCyACQfQARyADQf8BcUHYAEdyDRsgASgCiAMiAiABKALoAiIKSQ0LIAEgAiAKazYCiANBngQhDAJAAkAgCkUNACABKALkAiEEQQAhAkEAIAprIQgDQCACIARqIgctAAAEQCAIIAJBAWoiAmoNAQwCCwtBngIhDCACQdAAa0Gwf0sNAQsgBiAMNgIoQR4hAgwWCyACQQFqIgMgCkYEQCAGQZ4OOwEoQR4hAgwWCyAKIANrIg9BAUYEQCAGQZ4KOwEoQR4hAgwWCwJAIAogAkEDakcEQCADIARqIhAtAAAhDCAQQQJqIQsgEC0AASEJIAIgCmshDkEAIQgDQCAHIAhqQQNqLQAARQ0CIAggDmogCEEBaiEIQXxHDQALCyAGQZ4EOwEoQR4hAgwWCwJAAkACQCAIQQJqIgcgD0sgCEF9S3JFBEACQCAPIAhBA2oiB08EQCAKIAMgB2pHBEAgAiAIaiEDIAcgEGohDiAKQQRrIQ1BACEKA0AgAyAEakEEai0AAEUNAyAKQQFqIQogDSADQQFqIgNHDQALCyAGQZ4EOwEoQR4hAgwbCyAHIA8gD0G8t8QAEKAFAAsgByAKaiIDIApJIAMgD0tyDQEgA0EBaiERIAMgD08NAiABKAIIQQJGDQMgBkFAayENIAQhByALIQMgECARaiEUIA8gEWshDyMAQSBrIgskAAJAIAJB0ABrQbB/TQRAIA1BAjYCACANQQE6AAQMAQsgC0EANgIUIAtCgICAgBA3AgwgC0EMakEAIAIQ4gYgCygCFCEEA0BBAUECIAcsAAAiEEEATiIVGyITIAsoAgwgBGtLBH8gC0EMaiAEIBMQ4gYgCygCFAUgBAsgCygCECIRaiIWIBUEfyAQBSAWIBBBvwFxOgABIBBBwAFxQQZ2QUByCzoAACALIAQgE2oiBDYCFCAHQQFqIQcgAkEBayICDQALIAsoAgwhEEEAIQICQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDEH/AXEOAgEABAsgCUH/AXENAUEBIQILAkAgCEEETwRAIAMoAABBgIGChHhxDQpBBCADQQNqQXxxIgcgA2sgAyAHRhsiDCAIQQRrIgdJBEADQCADIAxqKAIAQYCBgoR4cQ0MIAxBBGoiDCAHSQ0ACwsgAyAHaigAAEGAgYKEeHFFDQEMCgsgCEUNACADIAhBAWsiB2osAABBAEgNCSAHRQ0AIAMgCEECayIHaiwAAEEASA0JIAdFDQAgAyAIQQNrIgdqLAAAQQBIIAdyDQkLIAtBDGogAyAIEJcDIAsoAgxBAUcNASALIAspAhA3AxhBrLLEAEELIAtBGGpBnLLEAEG4ssQAEMIHAAsgDUECNgIAIA1BBToABAwICyALKAIUIgNBAEgNAQJAIANFBEBBASEMDAELIAsoAhAhByADEG4iDEUNAyADRQ0AIAwgByAD/AoAAAsgC0EMaiAOIAoQlwMCQAJAAkACQCALKAIMBEAgDUECNgIAIA1BADoABAwBCyALKAIUIgdBAEgNBQJAIAdFBEBBASEODAELIAsoAhAhCSAHEG4iDkUNCCAHRQ0AIA4gCSAH/AoAAAsCQCACRQRAIA9FDQMgDxBuIgkNAUEBIA8QmgkAC0EAIRMgDw0EQQEhCQwKCyAPBEAgCSAUIA/8CgAACyALQQxqIAkgDxCXAyALKAIMQQFHDQIgCSAPQQEQwQcgDUECNgIAIA1BADoABCAHRQ0AIA4gB0EBEMEHCyADRQ0KIAwgA0EBEMEHDAoLQQEhCQtBASETDAYLIA8QbiIJRQ0EIA9FDQUgCSAUIA/8CgAADAULIA1BAjYCACANQQY6AAQMBgsQmAoAC0EBIAMQmgkAC0EBIAcQmgkAC0EBIA8QmgkACyANIAI6ADQgDSAHNgIwIA0gDjYCLCANIAc2AiggDSADNgIkIA0gDDYCICANIAM2AhwgDSAENgIYIA0gETYCFCANIBA2AhAgDSAPNgIMIA0gCTYCCCANIA82AgQgDSATNgIADAILIA1BAjYCACANQQA6AAQLIBBFDQACQCARQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAQak8EQCACQQAgAyAQQSdqSxsNASAREKICDAILDDULDDULIAtBIGokACAGLQBEIQQgBigCQCIHQQJGBEAgBiAEOgApDAoLIAYgBikBRjcDoAEgBiAGKQFMNwGmASAGIAb9AAJU/QsDeCAGIAb9AAJk/QsDiAEgBiAGKAJ0NgKYASAGLQBFIQogASgCxAEiCCABKAK8AUYEQCMAQRBrIgIkACACQQRqIAFBvAFqIgMoAgAiDCADKAIEQQQgDEEBdCIMIAxBBE0bIgxBBEE4EM4GIAIoAgRBAUYEQCACKAIIIAIoAgwQmgkACyACKAIIIQsgAyAMNgIAIAMgCzYCBCACQRBqJAALIAEoAsABIAhBOGxqIgIgBv0AA4gB/QsCJCACIAo6AAUgAiAEOgAEIAIgBzYCACACIAYpA6ABNwEGIAIgBikBpgE3AQwgAiAG/QADeP0LAhQgAiAGKAKYATYCNCABIAhBAWo2AsQBDAgLQQIgByAPQcy3xAAQoAUACyAHIAMgD0Gst8QAEKAFAAsgESAPIA9BnLfEABCgBQALQYy3xAAQmQoACyAGQoEqNwIsIAZBJDoAKEEACyEIIAYgBigALDYAQyAGIAYoACk2AkAgBkEoakEBciEDQSQhByAGKAIkIQICfwJAAkACQCAGLQBDQQFrDgMAAQIZCyAGQcQAagwCCyAIQQhqDAELIAhBCGoLLQAAQSVHDRVBISEHIAYtAENBA0YEQCAIKAIAIQQgCEEEaigCACIKKAIAIgwEQCAEIAwRAwALIAooAgQiDARAIAQgDCAKKAIIEMEHCyAIQQxBBBDBBwsMFgsgASACNgIwIAEgBzYCLCABIAM2AiggASAINgIkIAEgCjYCICABIAw2AhwgASALNgIYIAEgCTYCFCABQQE2AhAMEAsgA0UNDyACIANBGHhB/4H8B3EgA0H/gfwHcUEIeHIiA3JBAEgNDyABIAI2AjwgASADNgI4IAFBATYCNAwPC0EoIQIgBkEoOgAoDBALQR4hAiAGQR46ACgMDwtBCwsiBzoAKCAIRQRAQQAhCAwBCyACIAhBARDBBwsgBiAGKAAsNgB7IAYgBigAKTYCeCAGQShqQQFyIQMMDQsgASAHNgLcAQsgASACNgLYASABIAg2AtQBDAgLQSchAiAGQSc6ACgMCQtBBSEHIAZBBToAKAwHC0EHIQcgBkEHOgAoDAYLQQALIQRBACEOQQAhAwsgASgCCEECRwRAQREhByAKRSAIRXINAUEbIQcgASgCwAIiCSAMSSAIIAkgDGtLcg0BIAEoArwCIg0gC0kgCiANIAtrS3INASAQQQFxIAsgDHIgCiANR3JFIAggCUZxcg0CIAZBGzoAKAwEC0HstsQAEJkKAAsgBiAHOgAoDAILIAEgAzoAuQIgASAOOgC4AiABIAQ7AbYCIAEgDzsBtAIgASAMNgKwAiABIAs2AqwCIAEgCDYCqAIgASAKNgKkAiABIAI2AqACCyAGQShqQQFyIQNBKCEHDAYLIAYgBigALDYAQyAGIAYoACk2AkAgBkEoakEBciEDDAILIAYgBigALDYAeyAGIAYoACk2AnhBKCEHIAZBKGpBAXIhAyACQShGDQQgBigCMCEIIAIhBwsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBiAGLwFEOwE0IAYgBi0ARjoANiAGKAJAIQILIAJBGHYhCgwBCyAGQShqQQFyIQNBKCEHCyAGIAo6ACwgAyAGLwE0OwAEIAMgBi0ANjoABiAGIAI7ACkgBiACQRB2OgArIAYgCDYCMCAGIAc6ACgCfyAHQShHBEACQCAHQSNLDQAgBigCJCICQebG0eIERg0AQQMgAkEgcQ0CGgsgBiAGLwApOwEYIAYgBi0AKzoAGiAGIAYvADE7ARAgBiAGLQAzOgASIAYoAC0hAiAGLQAsIgMgBi0AKCIEQShGDQEaIAAgBi0AGjoAByAAIAYvARg7AAUgBiAGKAEQNgIIIAYgBigAEzYACyAAIAYoAAs2ABAgACAGKAIINgANIAAgAjYACSAAIAM6AAggACAEOgAEIABBATYCAAwUCyAGKAIkIQJBAgshAyAGIAYoABM2AAsgBiAGKAEQNgIIIAYgBigCCDYCHCAGIAYoAAs2AB8gEkHJirmiBEcEQCABQgA3A4ADIAFCAjcD+AILIAAgAjYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAIAYoAB82ABAgAEEANgIADBILIAYgBkEkaq1CgICAgPANhDcDQEHf58AAIAZBQGtB3LjEABCTCAALIAAgCDoABSAAQRw6AAQgAEEBNgIADBALIAtB1ABHDQwgCUHBAEYNAgwMCyALQcwARyAJQdQAR3INC0EaIQJBGiEMDAcLIAtB1ABHIAlBwQBHcg0MC0GMjMYAQShB7LjEABCoCQALIAtBxABHIAlBzgBHcg0KQQAhAgwFCyALQdIARyAJQcQAR3INCUENIQJBDSEMDAMLQQEhAiADIQgMBgtBCCECQQghDAwBC0EEIQJBBCEMCyAHIAxJDQILIAIgB0kNAUEGCyEKQQAhAiADIQgMAQtBBiEKQQIhAiADIQgCQAJAAkACQAJAIA1ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAOQcUAaw4EAwQEAgQLIAtBxQBHIA5BzABHciAJQdQAR3INAwwECyALQcwARyAOQeMAR3INAiAJQdQARg0DDAILIAtB0gBHDQEgCUHEAEYNAgwBCyALQcQARw0AIAlBzgBGDQELIAFBADsA/QIgAUIANwOAAyABIAg2APkCIAEgCjoA+AIgASACOgDsAiAAIAM2AhAgACAHNgIMIABBAToACCAAIAU2AgQgAEEANgIAIAFB/wJqQQA6AAAMAgtBISECCyAAIAM2AAUgACACOgAEIABBATYCAAsgBkGwAWokAA8LQQEgAhCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/llAhl/BX0jAEEQayIbJAACQAJAAkACQCABQSFJBEAgACETIAEhCgwBCyACQQRrIR4gAkEQayEfAkACQANAIARFBEAgACABIAIgA0EBIAYQgwEMBQsgACABQQN2IhNBHGxqIQwgACATQQR0aiERIARBAWshBCAbAn8gAUHAAE8EQCAAIBEgDCATIAYQswYMAQsgACAGKAIAQQRqIhMoAgAgACgCACIKIBEoAgAiCBDdAiILIBMoAgAgCiAMKAIAIgoQ3QJHDQAaIAwgESATKAIAIAggChDdAiALcxsLIg8oAgAiDDYCDCAPIABrQQJ2IRMCQCAFBEAgBigCAEEEaigCACAFKAIAIAwQ3QJFDQELIAEgA0sNAyAGKAIAIRogAiABQQJ0IhdqIQtBACEKIAAhESATIQwDQCAAIAxBA2siCEEAIAggDE0bQQJ0aiIcIBFLBEAgGkEEaigCACIIKAIIIRAgDygCACEWA0BDAACAPyEhAn8CQCAQIBEoAgAiDksEQCAIKAIEIhQgDkEYbGoiDS0AEyIHIA0tABIiCSANLQARIhUgCSAVSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyANQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQ0gB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgDUUNAxogByANQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgDUENdHJBgICAwANqIAlyDAILDAsLIA0gDWdBEGsiDUH//wNxQQhqdEH///8DcSAJQYCAgNgDciANQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAQIBZLBEAgFCAWQRhsaiINLQATIgcgDS0AEiIJIA0tABEiFSAJIBVLGyIJIAcgCUsbIgcEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIiQwAAEEEgCCoCSCAJGyAik0MAAH5DlSAHQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIA1BDGoiFS8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCyAWIBBByMvGABDwBwALIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgCkECdCACIAtBBGsgIyAhlCIhICFbICEgIiAglGBFcSIYG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEEaigCACIOSwRAIBQgDkEYbGoiBy0AEyIJIActABIiEiAHLQARIhkgEiAZSxsiEiAJIBJLGyIJBH1DAABAwSAIKgJEIAgtAFhBAkYiEhsiIEMAABBBIAgqAkggEhsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAHQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNAxogCSAHQQ10ckGAgID+B3IMAwsgEkEQdCESIAlFDQEgCUENdEGAgID8AHEgB0ENdHJBgICAwANqIBJyDAILDAsLIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIHIA0tABIiCSANLQARIhIgCSASSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgEkEQdCISIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAogGGoiEkECdCACIAtBCGsgIyAhlCIhICFbICEgIiAglGBFcSIYG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEIaigCACIOSwRAIBQgDkEYbGoiCi0AEyIHIAotABIiCSAKLQARIhkgCSAZSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQogB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCkUNAxogByAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAJQYCAgNgDciAKQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIKIA0tABIiByANLQARIgkgByAJSxsiByAHIApJGyIKBH1DAABAwSAIKgJEIAgtAFhBAkYiBxsiIEMAABBBIAgqAkggBxsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQogB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCkUNARogByAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIApBDXRyQYCAgMADanIgBw0AGiAKIApnQRBrIgpB//8DcUEIanRB////A3EgCUGAgIDYA3IgCkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIBIgGGoiCUECdCACIAtBDGsgIyAhlCIhICFbICEgIiAglGBFcSISG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEMaigCACIOSwRAIBQgDkEYbGoiCi0AEyIHIAotABIiFCAKLQARIhggFCAYSxsiFCAHIBRLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiFBsiIEMAABBBIAgqAkggFBsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQogB0GAgAJxIRQgB0GA+AFxIgdBgPgBRgRAIBRBEHQiB0GAgID8B3IgCkUNAxogByAKQQ10ckGAgID+B3IMAwsgFEEQdCEUIAdFDQEgB0ENdEGAgID8AHEgCkENdHJBgICAwANqIBRyDAILDAsLIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAUQYCAgNgDciAKQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIKIA0tABIiByANLQARIg0gByANSxsiDSAKIA1LGyIKBH1DAABAwSAIKgJEIAgtAFhBAkYiDRsiIEMAABBBIAgqAkggDRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIg1B//8BcUUEQCANQRB0DAELIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNARogDSAKQQ10ckGAgID+B3IMAQsgB0EQdCIHIA1BDXRBgICA/ABxIApBDXRyQYCAgMADanIgDQ0AGiAKIApnQRBrIgpB//8DcUEIanRB////A3EgB0GAgIDYA3IgCkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAkgEmoiCkECdCACIAtBEGsiCyAjICGUIiEgIVsgISAiICCUYEVxIg0baiAONgIAIAogDWohCiARQRBqIhEgHEkNAAsLIAAgDEECdGoiFiARSwRAIBpBBGooAgAiCCgCCCENIA8oAgAhBwNAQwAAgD8hIQJ/AkAgDSARKAIAIhRLBEAgCCgCBCIVIBRBGGxqIg4tABMiECAOLQASIgkgDi0AESISIAkgEksbIgkgCSAQSRsiEAR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIBBBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDkEMai8BACIQQf//AXFFBEAgEEEQdAwDCyAQQf8HcSEOIBBBgIACcSEJIBBBgPgBcSIQQYD4AUYEQCAJQRB0IhBBgICA/AdyIA5FDQMaIBAgDkENdHJBgICA/gdyDAMLIAlBEHQhCSAQRQ0BIBBBDXRBgICA/ABxIA5BDXRyQYCAgMADaiAJcgwCCyAUIA1ByMvGABDwBwALIA4gDmdBEGsiDkH//wNxQQhqdEH///8DcSAJQYCAgNgDciAOQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAHIA1JBEAgFSAHQRhsaiIOLQATIhAgDi0AEiIJIA4tABEiFSAJIBVLGyIJIAkgEEkbIhAEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIiQwAAEEEgCCoCSCAJGyAik0MAAH5DlSAQQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIA5BDGovAQAiEEH//wFxRQRAIBBBEHQMAwsgEEH/B3EhDiAQQYCAAnEhCSAQQYD4AXEiEEGA+AFGBEAgCUEQdCIQQYCAgPwHciAORQ0DGiAQIA5BDXRyQYCAgP4HcgwDCyAJQRB0IQkgEEUNASAQQQ10QYCAgPwAcSAOQQ10ckGAgIDAA2ogCXIMAgsgByANQcjLxgAQ8AcACyAOIA5nQRBrIg5B//8DcUEIanRB////A3EgCUGAgIDYA3IgDkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIApBAnQgAiALQQRrIgsgIyAhlCIhICFbICEgIiAglGBFcSIOG2ogFDYCACAKIA5qIQogEUEEaiIRIBZJDQALCyABIAxHBEAgC0EEayILIApBAnRqIBEoAgA2AgAgEUEEaiERIAEhDAwBCwsgCkECdCIMBEAgACACIAz8CgAACyABIAprIQsCQCABIApGDQBBACENIAtBBE8EQCAAIAxqIQ4gFyAfaiEIIAtBfHEiDSERA0AgDiAI/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCEEQayEIIA5BEGohDiARQQRrIhENAAsgCyANRg0BCyAeIBcgDUECdCIRa2ohDiAAIBFqIAxqIQggDSABayAKaiERA0AgCCAOKAIANgIAIA5BBGshDiAIQQRqIQggEUEBaiIRDQALCyAKRQ0AIAEgCkkNAiAAIAxqIAsgAiADIAQgG0EMaiAGED0gCiIBQSFPDQEgACETDAQLIAEgA0sNAiACIAFBAnQiFWohCyAGKAIAIRpBACEFIAAhEQNAIAAgE0EDayIMQQAgDCATTRtBAnRqIhwgEUsEQCAaQQRqKAIAIg4oAgghFCAPKAIAIQ0gBigCAEEEaiEYA0BDAACAPyEhAn8CQCANIBRJBEAgESgCACEKIA4oAgQiByANQRhsIglqIgwtABMiCCAMLQASIhAgDC0AESIWIBAgFksbIhAgCCAQSxsiCAR9QwAAQMEgDioCRCAOLQBYQQJGIhAbIiBDAAAQQSAOKgJIIBAbICCTQwAAfkOVIAhBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDEEMai8BACIIQf//AXFFBEAgCEEQdAwDCyAIQf8HcSEMIAhBgIACcSEQIAhBgPgBcSIIQYD4AUYEQCAQQRB0IghBgICA/AdyIAxFDQMaIAggDEENdHJBgICA/gdyDAMLIBBBEHQhECAIRQ0BIAhBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAQcgwCCyANIBRByMvGABDwBwALIAwgDGdBEGsiDEH//wNxQQhqdEH///8DcSAQQYCAgNgDciAMQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBRJBEAgByAKQRhsaiIMLQATIgggDC0AEiIQIAwtABEiByAHIBBJGyIQIAggEEsbIggEfUMAAEDBIA4qAkQgDi0AWEECRiIQGyIiQwAAEEEgDioCSCAQGyAik0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAxBDGovAQAiCEH//wFxRQRAIAhBEHQMAwsgCEH/B3EhDCAIQYCAAnEhECAIQYD4AXEiCEGA+AFGBEAgEEEQdCIIQYCAgPwHciAMRQ0DGiAIIAxBDXRyQYCAgP4HcgwDCyAQQRB0IRAgCEUNASAIQQ10QYCAgPwAcSAMQQ10ckGAgIDAA2ogEHIMAgsgCiAUQcjLxgAQ8AcACyAMIAxnQRBrIgxB//8DcUEIanRB////A3EgEEGAgIDYA3IgDEEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAVBAnQgAiALQQRrICMgIZQiISAhXCAhICIgIJRgciIZG2ogCjYCAEMAAIA/ISECfwJAIBgoAgAiDCgCCCIQIA1LBEAgEUEEaigCACEKIAwoAgQiFiAJaiIILQATIgcgCC0AEiIJIAgtABEiFyAJIBdLGyIJIAcgCUsbIgcEfUMAAEDBIAwqAkQgDC0AWEECRiIJGyIgQwAAEEEgDCoCSCAJGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIAhBDGoiFy8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCyANIBBByMvGABDwBwALIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBBJBEAgFiAKQRhsaiIHLQATIgkgBy0AEiISIActABEiHSASIB1LGyISIAkgEksbIgkEfUMAAEDBIAwqAkQgDC0AWEECRiISGyIiQwAAEEEgDCoCSCASGyAik0MAAH5DlSAJQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAdBDGovAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsMCwsgByAHZ0EQayIHQf//A3FBCGp0Qf///wNxIBJBgICA2ANyIAdBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFIBlqIhJBAnQgAiALQQhrICMgIZQiISAhXCAhICIgIJRgciIZG2ogCjYCACARQQhqKAIAIQogCC0AEyIFIAgtABIiByAILQARIgkgByAJSxsiByAFIAdLGyIFBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIUMAABBBIAwqAkggBxsgIZNDAAB+Q5UgBUEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAshI0MAAIA/ISECfyAXLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQUgB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgBUUNARogByAFQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgBw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAQSQRAIBYgCkEYbGoiBS0AEyIHIAUtABIiCSAFLQARIh0gCSAdSxsiCSAHIAlLGyIHBH1DAABAwSAMKgJEIAwtAFhBAkYiCRsiIkMAABBBIAwqAkggCRsgIpNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAFQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQUgB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgBUUNAxogByAFQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgBUENdHJBgICAwANqIAlyDAILDAsLIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAJQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgEiAZaiIJQQJ0IAIgC0EMayAjICGUIiEgIVwgISAiICCUYHIiEhtqIAo2AgAgEUEMaigCACEKIAgtABMiBSAILQASIgcgCC0AESIIIAcgCEsbIgggBSAISxsiBQR9QwAAQMEgDCoCRCAMLQBYQQJGIggbIiFDAAAQQSAMKgJIIAgbICGTQwAAfkOVIAVBAWtB/wFxs5SSEIgEIiEgIZIFQwAAAAALISNDAACAPyEhAn8gFy8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSEHIAhBgPgBcSIIQYD4AUYEQCAHQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAdBEHQiByAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAogEEkEQCAWIApBGGxqIgUtABMiCCAFLQASIhAgBS0AESIHIAcgEEkbIhAgCCAQSxsiCAR9QwAAQMEgDCoCRCAMLQBYQQJGIhAbIiJDAAAQQSAMKgJIIBAbICKTQwAAfkOVIAhBAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgBUEMai8BACIMQf//AXFFBEAgDEEQdAwDCyAMQf8HcSEFIAxBgIACcSEIIAxBgPgBcSIMQYD4AUYEQCAIQRB0IgxBgICA/AdyIAVFDQMaIAwgBUENdHJBgICA/gdyDAMLIAhBEHQhCCAMRQ0BIAxBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAIcgwCCwwLCyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCEGAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAkgEmoiBUECdCACIAtBEGsiCyAjICGUIiEgIVwgISAiICCUYHIiDBtqIAo2AgAgBSAMaiEFIBFBEGoiESAcSQ0ACwsgACATQQJ0aiIUIBFLBEAgGkEEaigCACIMKAIIIQggDygCACEQA0BDAACAPyEhAn8CQCAIIBBLBEAgESgCACEOIAwoAgQiCSAQQRhsaiIKLQATIg0gCi0AEiIHIAotABEiFiAHIBZLGyIHIAcgDUkbIg0EfUMAAEDBIAwqAkQgDC0AWEECRiIHGyIgQwAAEEEgDCoCSCAHGyAgk0MAAH5DlSANQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIApBDGovAQAiDUH//wFxRQRAIA1BEHQMAwsgDUH/B3EhCiANQYCAAnEhByANQYD4AXEiDUGA+AFGBEAgB0EQdCINQYCAgPwHciAKRQ0DGiANIApBDXRyQYCAgP4HcgwDCyAHQRB0IQcgDUUNASANQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2ogB3IMAgsgECAIQcjLxgAQ8AcACyAKIApnQRBrIgpB//8DcUEIanRB////A3EgB0GAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCCAOSwRAIAkgDkEYbGoiCi0AEyINIAotABIiByAKLQARIgkgByAJSxsiByAHIA1JGyINBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIkMAABBBIAwqAkggBxsgIpNDAAB+Q5UgDUEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAKQQxqLwEAIg1B//8BcUUEQCANQRB0DAMLIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNAxogDSAKQQ10ckGAgID+B3IMAwsgB0EQdCEHIA1FDQEgDUENdEGAgID8AHEgCkENdHJBgICAwANqIAdyDAILIA4gCEHIy8YAEPAHAAsgCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQJ0IAIgC0EEayILICMgIZQiISAhXCAhICIgIJRgciIKG2ogDjYCACAFIApqIQUgEUEEaiIRIBRJDQALCyABIBNHBEAgAiAFQQJ0aiARKAIANgIAIBFBBGohESAFQQFqIQUgC0EEayELIAEhEwwBCwsgBUECdCIMBEAgACACIAz8CgAACyABIAVGDQQgACAMaiETQQAhCwJAIAEgBWsiCkEETwRAIBUgH2ohDiATIQggCkF8cSILIREDQCAIIA79AAIA/QwAAAAAAAAAAAAAAAAAAAAA/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAOQRBrIQ4gCEEQaiEIIBFBBGsiEQ0ACyAKIAtGDQELIB4gC0ECdCIRayAVaiEOIAAgEWogDGohCCALIAFrIAVqIREDQCAIIA4oAgA2AgAgDkEEayEOIAhBBGohCCARQQFqIhENAAsLIAEgBU8EQEEAIQUgEyEAIAoiAUEhSQ0EDAELCyAFIAEgAUGgm8EAEKAFAAtB+IHHAEETQZCbwQAQkwgLAAsgCkECSQ0AIAYoAgAhECAKQQF2IQYCQAJAAkACQCAGAn8gCkEPTQRAIApBB0sEQCAQQQRqIgAoAgAgEygCBCATKAIAEN0CIQMgACgCACATKAIMIBMoAggQ3QIhBCAAKAIAIBNBDEEIIAQbaiIFKAIAIhEgEyADQQJ0aiIIKAIAIgsQ3QIhASAAKAIAIBNBCEEMIAQbaiIMKAIAIg4gEyADQQFzQQJ0aiIEKAIAIg0Q3QIhAyAAKAIAIAwgBCAFIAEbIAMbKAIAIgwgCCAFIAQgAxsgARsoAgAiBBDdAiEFIAIgDSAOIAMbNgIMIAIgESALIAEbNgIAIAIgBCAMIAUbNgIIIAIgDCAEIAUbNgIEIAAoAgAgEyAGQQJ0IhFqIgEoAgQgASgCABDdAiEEIAAoAgAgASgCDCABKAIIEN0CIQUgACgCACABQQxBCCAFG2oiDCgCACIIIAEgBEECdGoiCygCACIOEN0CIQMgACgCACABQQhBDCAFG2oiBSgCACINIAEgBEEBc0ECdGoiBCgCACIPEN0CIQEgACgCACAFIAQgDCADGyABGygCACIFIAsgDCAEIAEbIAMbKAIAIgQQ3QIhDCACIBFqIgAgDyANIAEbNgIMIAAgCCAOIAMbNgIAIAAgBCAFIAwbNgIIIAAgBSAEIAwbNgIEQQQMAgsgAiATKAIANgIAIAIgBkECdCIAaiAAIBNqKAIANgIAQQEMAQsgEyACIAIgCkECdGoiACAQELkCIBMgBkECdCIBaiABIAJqIABBIGogEBC5AkEICyIBSwRAIAFBAnQhDCAQQQRqKAIAIgQoAgghESABIQADQCACIABBAnQiA2oiBSADIBNqKAIAIg02AgAgDSARTw0FIAVBBGsoAgAhDiAEKAIEIgMgDUEYbCIUaiIFLQATIgggBS0AEiILIAUtABEiDyALIA9LGyILIAggC0sbIggEfUMAAEDBIAQqAkQgBC0AWEECRiILGyIhQwAAEEEgBCoCSCALGyAhk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAFQQxqLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQsgCEGA+AFxIghBgPgBRgRAIAtBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgC0EQdCILIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgC0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gBCgCCCILTw0EIAQoAgQiCCAOQRhsaiIFLQATIg8gBS0AEiIHIAUtABEiCSAHIAlLGyIHIAcgD0kbIg8EfUMAAEDBIAQqAkQgBC0AWEECRiIHGyIgQwAAEEEgBCoCSCAHGyAgk0MAAH5DlSAPQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hICAhlCIhICFcICEgIgJ/IAVBDGovAQAiD0H//wFxRQRAIA9BEHQMAQsgD0H/B3EhBSAPQYCAAnEhByAPQYD4AXEiD0GA+AFGBEAgB0EQdCIPQYCAgPwHciAFRQ0BGiAPIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgD0ENdEGAgID8AHEgBUENdHJBgICAwANqciAPDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBH0gJBDgBUNU+C1AlEMAAIA/kpEFICALlGByRQRAIAwhBQJ/A0AgAiAFaiIPIA42AgAgAiAFQQRGDQEaIAsgDU0NBiAPQQhrKAIAIQ4gCCAUaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIhQwAAEEEgBCoCSCAPGyAhk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAIQQxqLwEAIgtB//8BcUUEQCALQRB0DAELIAtB/wdxIQggC0GAgAJxIQ8gC0GA+AFxIgtBgPgBRgRAIA9BEHQiC0GAgID8B3IgCEUNARogCyAIQQ10ckGAgID+B3IMAQsgD0EQdCIPIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAIIAhnQRBrIghB//8DcUEIanRB////A3EgD0GAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gEU8NBSADIA5BGGxqIggtABMiCyAILQASIg8gCC0AESIHIAcgD0kbIg8gCyAPSxsiCwR9QwAAQMEgBCoCRCAELQBYQQJGIg8bIiBDAAAQQSAEKgJIIA8bICCTQwAAfkOVIAtBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQRrIQUgIZQiISAhWwRAIAMhCCARIQsgISAiICCUYEUNAQsLIAIgBWoLIA02AgALIAxBBGohDCAAQQFqIgAgBkcNAAsLIAIgBkECdCIAaiEDIAogBmsiFCABSwRAIAAgE2ohCSABQQJ0IQwgEEEEaigCACIEKAIIIREDQCADIAFBAnQiAGoiBSAAIAlqKAIAIg02AgAgDSARTw0FIAVBBGsoAgAhDiAEKAIEIgAgDUEYbCIWaiIFLQATIgggBS0AEiILIAUtABEiDyALIA9LGyILIAggC0sbIggEfUMAAEDBIAQqAkQgBC0AWEECRiILGyIhQwAAEEEgBCoCSCALGyAhk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAFQQxqLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQsgCEGA+AFxIghBgPgBRgRAIAtBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgC0EQdCILIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgC0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gBCgCCCILTw0EIAQoAgQiCCAOQRhsaiIFLQATIg8gBS0AEiIHIAUtABEiFSAHIBVLGyIHIAcgD0kbIg8EfUMAAEDBIAQqAkQgBC0AWEECRiIHGyIgQwAAEEEgBCoCSCAHGyAgk0MAAH5DlSAPQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hICAhlCIhICFcICEgIgJ/IAVBDGovAQAiD0H//wFxRQRAIA9BEHQMAQsgD0H/B3EhBSAPQYCAAnEhByAPQYD4AXEiD0GA+AFGBEAgB0EQdCIPQYCAgPwHciAFRQ0BGiAPIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgD0ENdEGAgID8AHEgBUENdHJBgICAwANqciAPDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBH0gJBDgBUNU+C1AlEMAAIA/kpEFICALlGByRQRAIAwhBQJ/A0AgAyAFaiIPIA42AgAgAyAFQQRGDQEaIAsgDU0NBiAPQQhrKAIAIQ4gCCAWaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIhQwAAEEEgBCoCSCAPGyAhk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAIQQxqLwEAIgtB//8BcUUEQCALQRB0DAELIAtB/wdxIQggC0GAgAJxIQ8gC0GA+AFxIgtBgPgBRgRAIA9BEHQiC0GAgID8B3IgCEUNARogCyAIQQ10ckGAgID+B3IMAQsgD0EQdCIPIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAIIAhnQRBrIghB//8DcUEIanRB////A3EgD0GAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gEU8NBSAAIA5BGGxqIggtABMiCyAILQASIg8gCC0AESIHIAcgD0kbIg8gCyAPSxsiCwR9QwAAQMEgBCoCRCAELQBYQQJGIg8bIiBDAAAQQSAEKgJIIA8bICCTQwAAfkOVIAtBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQRrIQUgIZQiISAhWwRAIAAhCCARIQsgISAiICCUYEUNAQsLIAMgBWoLIA02AgALIAxBBGohDCABQQFqIgEgFEcNAAsLIANBBGshDiATIApBAnRBBGsiAGohESAAIAJqIQgDQCATIAMoAgAiACACKAIAIgEgEEEEaiIEKAIAIAAgARDdAiIAGzYCACARIA4oAgAiASAIKAIAIgUgBCgCACAFIAEQ3QIiARs2AgAgEUEEayERIBNBBGohEyADIABBAnRqIQMgAiAAQQFzQQJ0aiECIA4gAUECdCIAayEOIAAgCGpBBGshCCAGQQFrIgYNAAsgDkEEaiEAIApBAXEEfyATIAIgAyAAIAJLIgEbKAIANgIAIAMgACACTUECdGohAyACIAFBAnRqBSACCyAARiADIAhBBGpGcQ0EEJwKAAsgDiARQcjLxgAQ8AcACyANIAtByMvGABDwBwALIA4gC0HIy8YAEPAHAAsgDSARQcjLxgAQ8AcACyAbQRBqJAAPCyAOIBBByMvGABDwBwALIAogEEHIy8YAEPAHAAv5ZQIZfwV9IwBBEGsiGyQAAkACQAJAAkAgAUEhSQRAIAAhEyABIQoMAQsgAkEEayEeIAJBEGshHwJAAkADQCAERQRAIAAgASACIANBASAGEIQBDAULIAAgAUEDdiITQRxsaiEMIAAgE0EEdGohESAEQQFrIQQgGwJ/IAFBwABPBEAgACARIAwgEyAGELMGDAELIAAgBigCAEEEaiITKAIAIAAoAgAiCiARKAIAIggQ3QIiCyATKAIAIAogDCgCACIKEN0CRw0AGiAMIBEgEygCACAIIAoQ3QIgC3MbCyIPKAIAIgw2AgwgDyAAa0ECdiETAkAgBQRAIAYoAgBBBGooAgAgBSgCACAMEN0CRQ0BCyABIANLDQMgBigCACEaIAIgAUECdCIXaiELQQAhCiAAIREgEyEMA0AgACAMQQNrIghBACAIIAxNG0ECdGoiHCARSwRAIBpBBGooAgAiCCgCCCEQIA8oAgAhFgNAQwAAgD8hIQJ/AkAgECARKAIAIg5LBEAgCCgCBCIUIA5BGGxqIg0tABMiByANLQASIgkgDS0AESIVIAkgFUsbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDUEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSENIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIA1FDQMaIAcgDUENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIA1BDXRyQYCAgMADaiAJcgwCCwwLCyANIA1nQRBrIg1B//8DcUEIanRB////A3EgCUGAgIDYA3IgDUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgECAWSwRAIBQgFkEYbGoiDS0AEyIHIA0tABIiCSANLQARIhUgCSAVSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIkMAABBBIAgqAkggCRsgIpNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiANQQxqIhUvAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsgFiAQQcjLxgAQ8AcACyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIApBAnQgAiALQQRrICMgIZQiISAhWyAhICIgIJRgRXEiGBtqIA42AgBDAACAPyEhAn8CQCAQIBFBBGooAgAiDksEQCAUIA5BGGxqIgctABMiCSAHLQASIhIgBy0AESIZIBIgGUsbIhIgCSASSxsiCQR9QwAAQMEgCCoCRCAILQBYQQJGIhIbIiBDAAAQQSAIKgJIIBIbICCTQwAAfkOVIAlBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgB0EMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCwwLCyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiByANLQASIgkgDS0AESISIAkgEksbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACIJQf//AXFFBEAgCUEQdAwBCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQEaIAkgB0ENdHJBgICA/gdyDAELIBJBEHQiEiAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2pyIAkNABogByAHZ0EQayIHQf//A3FBCGp0Qf///wNxIBJBgICA2ANyIAdBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAKIBhqIhJBAnQgAiALQQhrICMgIZQiISAhWyAhICIgIJRgRXEiGBtqIA42AgBDAACAPyEhAn8CQCAQIBFBCGooAgAiDksEQCAUIA5BGGxqIgotABMiByAKLQASIgkgCi0AESIZIAkgGUsbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgCkEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEKIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIApFDQMaIAcgCkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIApBDXRyQYCAgMADaiAJcgwCCwwLCyAKIApnQRBrIgpB//8DcUEIanRB////A3EgCUGAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiCiANLQASIgcgDS0AESIJIAcgCUsbIgcgByAKSRsiCgR9QwAAQMEgCCoCRCAILQBYQQJGIgcbIiBDAAAQQSAIKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEKIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIApFDQEaIAcgCkENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIAcNABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyASIBhqIglBAnQgAiALQQxrICMgIZQiISAhWyAhICIgIJRgRXEiEhtqIA42AgBDAACAPyEhAn8CQCAQIBFBDGooAgAiDksEQCAUIA5BGGxqIgotABMiByAKLQASIhQgCi0AESIYIBQgGEsbIhQgByAUSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIhQbIiBDAAAQQSAIKgJIIBQbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgCkEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEKIAdBgIACcSEUIAdBgPgBcSIHQYD4AUYEQCAUQRB0IgdBgICA/AdyIApFDQMaIAcgCkENdHJBgICA/gdyDAMLIBRBEHQhFCAHRQ0BIAdBDXRBgICA/ABxIApBDXRyQYCAgMADaiAUcgwCCwwLCyAKIApnQRBrIgpB//8DcUEIanRB////A3EgFEGAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiCiANLQASIgcgDS0AESINIAcgDUsbIg0gCiANSxsiCgR9QwAAQMEgCCoCRCAILQBYQQJGIg0bIiBDAAAQQSAIKgJIIA0bICCTQwAAfkOVIApBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACINQf//AXFFBEAgDUEQdAwBCyANQf8HcSEKIA1BgIACcSEHIA1BgPgBcSINQYD4AUYEQCAHQRB0Ig1BgICA/AdyIApFDQEaIA0gCkENdHJBgICA/gdyDAELIAdBEHQiByANQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIA0NABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAJIBJqIgpBAnQgAiALQRBrIgsgIyAhlCIhICFbICEgIiAglGBFcSING2ogDjYCACAKIA1qIQogEUEQaiIRIBxJDQALCyAAIAxBAnRqIhYgEUsEQCAaQQRqKAIAIggoAgghDSAPKAIAIQcDQEMAAIA/ISECfwJAIA0gESgCACIUSwRAIAgoAgQiFSAUQRhsaiIOLQATIhAgDi0AEiIJIA4tABEiEiAJIBJLGyIJIAkgEEkbIhAEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIgQwAAEEEgCCoCSCAJGyAgk0MAAH5DlSAQQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIA5BDGovAQAiEEH//wFxRQRAIBBBEHQMAwsgEEH/B3EhDiAQQYCAAnEhCSAQQYD4AXEiEEGA+AFGBEAgCUEQdCIQQYCAgPwHciAORQ0DGiAQIA5BDXRyQYCAgP4HcgwDCyAJQRB0IQkgEEUNASAQQQ10QYCAgPwAcSAOQQ10ckGAgIDAA2ogCXIMAgsgFCANQcjLxgAQ8AcACyAOIA5nQRBrIg5B//8DcUEIanRB////A3EgCUGAgIDYA3IgDkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgByANSQRAIBUgB0EYbGoiDi0AEyIQIA4tABIiCSAOLQARIhUgCSAVSxsiCSAJIBBJGyIQBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIkMAABBBIAgqAkggCRsgIpNDAAB+Q5UgEEEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAOQQxqLwEAIhBB//8BcUUEQCAQQRB0DAMLIBBB/wdxIQ4gEEGAgAJxIQkgEEGA+AFxIhBBgPgBRgRAIAlBEHQiEEGAgID8B3IgDkUNAxogECAOQQ10ckGAgID+B3IMAwsgCUEQdCEJIBBFDQEgEEENdEGAgID8AHEgDkENdHJBgICAwANqIAlyDAILIAcgDUHIy8YAEPAHAAsgDiAOZ0EQayIOQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIA5BF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAKQQJ0IAIgC0EEayILICMgIZQiISAhWyAhICIgIJRgRXEiDhtqIBQ2AgAgCiAOaiEKIBFBBGoiESAWSQ0ACwsgASAMRwRAIAtBBGsiCyAKQQJ0aiARKAIANgIAIBFBBGohESABIQwMAQsLIApBAnQiDARAIAAgAiAM/AoAAAsgASAKayELAkAgASAKRg0AQQAhDSALQQRPBEAgACAMaiEOIBcgH2ohCCALQXxxIg0hEQNAIA4gCP0AAgD9DAAAAAAAAAAAAAAAAAAAAAD9DQwNDg8ICQoLBAUGBwABAgP9CwIAIAhBEGshCCAOQRBqIQ4gEUEEayIRDQALIAsgDUYNAQsgHiAXIA1BAnQiEWtqIQ4gACARaiAMaiEIIA0gAWsgCmohEQNAIAggDigCADYCACAOQQRrIQ4gCEEEaiEIIBFBAWoiEQ0ACwsgCkUNACABIApJDQIgACAMaiALIAIgAyAEIBtBDGogBhA+IAoiAUEhTw0BIAAhEwwECyABIANLDQIgAiABQQJ0IhVqIQsgBigCACEaQQAhBSAAIREDQCAAIBNBA2siDEEAIAwgE00bQQJ0aiIcIBFLBEAgGkEEaigCACIOKAIIIRQgDygCACENIAYoAgBBBGohGANAQwAAgD8hIQJ/AkAgDSAUSQRAIBEoAgAhCiAOKAIEIgcgDUEYbCIJaiIMLQATIgggDC0AEiIQIAwtABEiFiAQIBZLGyIQIAggEEsbIggEfUMAAEDBIA4qAkQgDi0AWEECRiIQGyIgQwAAEEEgDioCSCAQGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIAxBDGovAQAiCEH//wFxRQRAIAhBEHQMAwsgCEH/B3EhDCAIQYCAAnEhECAIQYD4AXEiCEGA+AFGBEAgEEEQdCIIQYCAgPwHciAMRQ0DGiAIIAxBDXRyQYCAgP4HcgwDCyAQQRB0IRAgCEUNASAIQQ10QYCAgPwAcSAMQQ10ckGAgIDAA2ogEHIMAgsgDSAUQcjLxgAQ8AcACyAMIAxnQRBrIgxB//8DcUEIanRB////A3EgEEGAgIDYA3IgDEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAUSQRAIAcgCkEYbGoiDC0AEyIIIAwtABIiECAMLQARIgcgByAQSRsiECAIIBBLGyIIBH1DAABAwSAOKgJEIA4tAFhBAkYiEBsiIkMAABBBIA4qAkggEBsgIpNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAMQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQwgCEGAgAJxIRAgCEGA+AFxIghBgPgBRgRAIBBBEHQiCEGAgID8B3IgDEUNAxogCCAMQQ10ckGAgID+B3IMAwsgEEEQdCEQIAhFDQEgCEENdEGAgID8AHEgDEENdHJBgICAwANqIBByDAILIAogFEHIy8YAEPAHAAsgDCAMZ0EQayIMQf//A3FBCGp0Qf///wNxIBBBgICA2ANyIAxBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQJ0IAIgC0EEayAjICGUIiEgIVwgISAiICCUYHIiGRtqIAo2AgBDAACAPyEhAn8CQCAYKAIAIgwoAggiECANSwRAIBFBBGooAgAhCiAMKAIEIhYgCWoiCC0AEyIHIAgtABIiCSAILQARIhcgCSAXSxsiCSAHIAlLGyIHBH1DAABAwSAMKgJEIAwtAFhBAkYiCRsiIEMAABBBIAwqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAIQQxqIhcvAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsgDSAQQcjLxgAQ8AcACyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAQSQRAIBYgCkEYbGoiBy0AEyIJIActABIiEiAHLQARIh0gEiAdSxsiEiAJIBJLGyIJBH1DAABAwSAMKgJEIAwtAFhBAkYiEhsiIkMAABBBIAwqAkggEhsgIpNDAAB+Q5UgCUEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAHQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNAxogCSAHQQ10ckGAgID+B3IMAwsgEkEQdCESIAlFDQEgCUENdEGAgID8AHEgB0ENdHJBgICAwANqIBJyDAILDAsLIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBSAZaiISQQJ0IAIgC0EIayAjICGUIiEgIVwgISAiICCUYHIiGRtqIAo2AgAgEUEIaigCACEKIAgtABMiBSAILQASIgcgCC0AESIJIAcgCUsbIgcgBSAHSxsiBQR9QwAAQMEgDCoCRCAMLQBYQQJGIgcbIiFDAAAQQSAMKgJIIAcbICGTQwAAfkOVIAVBAWtB/wFxs5SSEIgEIiEgIZIFQwAAAAALISNDAACAPyEhAn8gFy8BACIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQEaIAcgBUENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAcNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAogEEkEQCAWIApBGGxqIgUtABMiByAFLQASIgkgBS0AESIdIAkgHUsbIgkgByAJSxsiBwR9QwAAQMEgDCoCRCAMLQBYQQJGIgkbIiJDAAAQQSAMKgJIIAkbICKTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgBUEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQMaIAcgBUENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAJcgwCCwwLCyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIBIgGWoiCUECdCACIAtBDGsgIyAhlCIhICFcICEgIiAglGByIhIbaiAKNgIAIBFBDGooAgAhCiAILQATIgUgCC0AEiIHIAgtABEiCCAHIAhLGyIIIAUgCEsbIgUEfUMAAEDBIAwqAkQgDC0AWEECRiIIGyIhQwAAEEEgDCoCSCAIGyAhk0MAAH5DlSAFQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAACyEjQwAAgD8hIQJ/IBcvAQAiCEH//wFxRQRAIAhBEHQMAQsgCEH/B3EhBSAIQYCAAnEhByAIQYD4AXEiCEGA+AFGBEAgB0EQdCIIQYCAgPwHciAFRQ0BGiAIIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCEENdEGAgID8AHEgBUENdHJBgICAwANqciAIDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBBJBEAgFiAKQRhsaiIFLQATIgggBS0AEiIQIAUtABEiByAHIBBJGyIQIAggEEsbIggEfUMAAEDBIAwqAkQgDC0AWEECRiIQGyIiQwAAEEEgDCoCSCAQGyAik0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAVBDGovAQAiDEH//wFxRQRAIAxBEHQMAwsgDEH/B3EhBSAMQYCAAnEhCCAMQYD4AXEiDEGA+AFGBEAgCEEQdCIMQYCAgPwHciAFRQ0DGiAMIAVBDXRyQYCAgP4HcgwDCyAIQRB0IQggDEUNASAMQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2ogCHIMAgsMCwsgBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAVBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAJIBJqIgVBAnQgAiALQRBrIgsgIyAhlCIhICFcICEgIiAglGByIgwbaiAKNgIAIAUgDGohBSARQRBqIhEgHEkNAAsLIAAgE0ECdGoiFCARSwRAIBpBBGooAgAiDCgCCCEIIA8oAgAhEANAQwAAgD8hIQJ/AkAgCCAQSwRAIBEoAgAhDiAMKAIEIgkgEEEYbGoiCi0AEyINIAotABIiByAKLQARIhYgByAWSxsiByAHIA1JGyINBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIEMAABBBIAwqAkggBxsgIJNDAAB+Q5UgDUEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIg1B//8BcUUEQCANQRB0DAMLIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNAxogDSAKQQ10ckGAgID+B3IMAwsgB0EQdCEHIA1FDQEgDUENdEGAgID8AHEgCkENdHJBgICAwANqIAdyDAILIBAgCEHIy8YAEPAHAAsgCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAggDksEQCAJIA5BGGxqIgotABMiDSAKLQASIgcgCi0AESIJIAcgCUsbIgcgByANSRsiDQR9QwAAQMEgDCoCRCAMLQBYQQJGIgcbIiJDAAAQQSAMKgJIIAcbICKTQwAAfkOVIA1BAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgCkEMai8BACINQf//AXFFBEAgDUEQdAwDCyANQf8HcSEKIA1BgIACcSEHIA1BgPgBcSINQYD4AUYEQCAHQRB0Ig1BgICA/AdyIApFDQMaIA0gCkENdHJBgICA/gdyDAMLIAdBEHQhByANRQ0BIA1BDXRBgICA/ABxIApBDXRyQYCAgMADaiAHcgwCCyAOIAhByMvGABDwBwALIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAHQYCAgNgDciAKQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUECdCACIAtBBGsiCyAjICGUIiEgIVwgISAiICCUYHIiChtqIA42AgAgBSAKaiEFIBFBBGoiESAUSQ0ACwsgASATRwRAIAIgBUECdGogESgCADYCACARQQRqIREgBUEBaiEFIAtBBGshCyABIRMMAQsLIAVBAnQiDARAIAAgAiAM/AoAAAsgASAFRg0EIAAgDGohE0EAIQsCQCABIAVrIgpBBE8EQCAVIB9qIQ4gEyEIIApBfHEiCyERA0AgCCAO/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDkEQayEOIAhBEGohCCARQQRrIhENAAsgCiALRg0BCyAeIAtBAnQiEWsgFWohDiAAIBFqIAxqIQggCyABayAFaiERA0AgCCAOKAIANgIAIA5BBGshDiAIQQRqIQggEUEBaiIRDQALCyABIAVPBEBBACEFIBMhACAKIgFBIUkNBAwBCwsgBSABIAFBoJvBABCgBQALQfiBxwBBE0GQm8EAEJMICwALIApBAkkNACAGKAIAIRAgCkEBdiEGAkACQAJAAkAgBgJ/IApBD00EQCAKQQdLBEAgEEEEaiIAKAIAIBMoAgQgEygCABDdAiEDIAAoAgAgEygCDCATKAIIEN0CIQQgACgCACATQQxBCCAEG2oiBSgCACIRIBMgA0ECdGoiCCgCACILEN0CIQEgACgCACATQQhBDCAEG2oiDCgCACIOIBMgA0EBc0ECdGoiBCgCACINEN0CIQMgACgCACAMIAQgBSABGyADGygCACIMIAggBSAEIAMbIAEbKAIAIgQQ3QIhBSACIA0gDiADGzYCDCACIBEgCyABGzYCACACIAQgDCAFGzYCCCACIAwgBCAFGzYCBCAAKAIAIBMgBkECdCIRaiIBKAIEIAEoAgAQ3QIhBCAAKAIAIAEoAgwgASgCCBDdAiEFIAAoAgAgAUEMQQggBRtqIgwoAgAiCCABIARBAnRqIgsoAgAiDhDdAiEDIAAoAgAgAUEIQQwgBRtqIgUoAgAiDSABIARBAXNBAnRqIgQoAgAiDxDdAiEBIAAoAgAgBSAEIAwgAxsgARsoAgAiBSALIAwgBCABGyADGygCACIEEN0CIQwgAiARaiIAIA8gDSABGzYCDCAAIAggDiADGzYCACAAIAQgBSAMGzYCCCAAIAUgBCAMGzYCBEEEDAILIAIgEygCADYCACACIAZBAnQiAGogACATaigCADYCAEEBDAELIBMgAiACIApBAnRqIgAgEBC5AiATIAZBAnQiAWogASACaiAAQSBqIBAQuQJBCAsiAUsEQCABQQJ0IQwgEEEEaigCACIEKAIIIREgASEAA0AgAiAAQQJ0IgNqIgUgAyATaigCACINNgIAIA0gEU8NBSAFQQRrKAIAIQ4gBCgCBCIDIA1BGGwiFGoiBS0AEyIIIAUtABIiCyAFLQARIg8gCyAPSxsiCyAIIAtLGyIIBH1DAABAwSAEKgJEIAQtAFhBAkYiCxsiIUMAABBBIAQqAkggCxsgIZNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gBUEMai8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIAQoAggiC08NBCAEKAIEIgggDkEYbGoiBS0AEyIPIAUtABIiByAFLQARIgkgByAJSxsiByAHIA9JGyIPBH1DAABAwSAEKgJEIAQtAFhBAkYiBxsiIEMAABBBIAQqAkggBxsgIJNDAAB+Q5UgD0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISAgIZQiISAhXCAhICICfyAFQQxqLwEAIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQUgD0GAgAJxIQcgD0GA+AFxIg9BgPgBRgRAIAdBEHQiD0GAgID8B3IgBUUNARogDyAFQQ10ckGAgID+B3IMAQsgB0EQdCIHIA9BDXRBgICA/ABxIAVBDXRyQYCAgMADanIgDw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgR9ICQQ4AVDVPgtQJRDAACAP5KRBSAgC5RgckUEQCAMIQUCfwNAIAIgBWoiDyAONgIAIAIgBUEERg0BGiALIA1NDQYgD0EIaygCACEOIAggFGoiCC0AEyILIAgtABIiDyAILQARIgcgByAPSRsiDyALIA9LGyILBH1DAABAwSAEKgJEIAQtAFhBAkYiDxsiIUMAABBBIAQqAkggDxsgIZNDAAB+Q5UgC0EBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIBFPDQUgAyAOQRhsaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIgQwAAEEEgBCoCSCAPGyAgk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hIAJ/IAhBDGovAQAiC0H//wFxRQRAIAtBEHQMAQsgC0H/B3EhCCALQYCAAnEhDyALQYD4AXEiC0GA+AFGBEAgD0EQdCILQYCAgPwHciAIRQ0BGiALIAhBDXRyQYCAgP4HcgwBCyAPQRB0Ig8gC0ENdEGAgID8AHEgCEENdHJBgICAwANqciALDQAaIAggCGdBEGsiCEH//wNxQQhqdEH///8DcSAPQYCAgNgDciAIQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUEEayEFICGUIiEgIVsEQCADIQggESELICEgIiAglGBFDQELCyACIAVqCyANNgIACyAMQQRqIQwgAEEBaiIAIAZHDQALCyACIAZBAnQiAGohAyAKIAZrIhQgAUsEQCAAIBNqIQkgAUECdCEMIBBBBGooAgAiBCgCCCERA0AgAyABQQJ0IgBqIgUgACAJaigCACINNgIAIA0gEU8NBSAFQQRrKAIAIQ4gBCgCBCIAIA1BGGwiFmoiBS0AEyIIIAUtABIiCyAFLQARIg8gCyAPSxsiCyAIIAtLGyIIBH1DAABAwSAEKgJEIAQtAFhBAkYiCxsiIUMAABBBIAQqAkggCxsgIZNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gBUEMai8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIAQoAggiC08NBCAEKAIEIgggDkEYbGoiBS0AEyIPIAUtABIiByAFLQARIhUgByAVSxsiByAHIA9JGyIPBH1DAABAwSAEKgJEIAQtAFhBAkYiBxsiIEMAABBBIAQqAkggBxsgIJNDAAB+Q5UgD0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISAgIZQiISAhXCAhICICfyAFQQxqLwEAIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQUgD0GAgAJxIQcgD0GA+AFxIg9BgPgBRgRAIAdBEHQiD0GAgID8B3IgBUUNARogDyAFQQ10ckGAgID+B3IMAQsgB0EQdCIHIA9BDXRBgICA/ABxIAVBDXRyQYCAgMADanIgDw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgR9ICQQ4AVDVPgtQJRDAACAP5KRBSAgC5RgckUEQCAMIQUCfwNAIAMgBWoiDyAONgIAIAMgBUEERg0BGiALIA1NDQYgD0EIaygCACEOIAggFmoiCC0AEyILIAgtABIiDyAILQARIgcgByAPSRsiDyALIA9LGyILBH1DAABAwSAEKgJEIAQtAFhBAkYiDxsiIUMAABBBIAQqAkggDxsgIZNDAAB+Q5UgC0EBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIBFPDQUgACAOQRhsaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIgQwAAEEEgBCoCSCAPGyAgk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hIAJ/IAhBDGovAQAiC0H//wFxRQRAIAtBEHQMAQsgC0H/B3EhCCALQYCAAnEhDyALQYD4AXEiC0GA+AFGBEAgD0EQdCILQYCAgPwHciAIRQ0BGiALIAhBDXRyQYCAgP4HcgwBCyAPQRB0Ig8gC0ENdEGAgID8AHEgCEENdHJBgICAwANqciALDQAaIAggCGdBEGsiCEH//wNxQQhqdEH///8DcSAPQYCAgNgDciAIQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUEEayEFICGUIiEgIVsEQCAAIQggESELICEgIiAglGBFDQELCyADIAVqCyANNgIACyAMQQRqIQwgAUEBaiIBIBRHDQALCyADQQRrIQ4gEyAKQQJ0QQRrIgBqIREgACACaiEIA0AgEyADKAIAIgAgAigCACIBIBBBBGoiBCgCACAAIAEQ3QIiABs2AgAgESAOKAIAIgEgCCgCACIFIAQoAgAgBSABEN0CIgEbNgIAIBFBBGshESATQQRqIRMgAyAAQQJ0aiEDIAIgAEEBc0ECdGohAiAOIAFBAnQiAGshDiAAIAhqQQRrIQggBkEBayIGDQALIA5BBGohACAKQQFxBH8gEyACIAMgACACSyIBGygCADYCACADIAAgAk1BAnRqIQMgAiABQQJ0agUgAgsgAEYgAyAIQQRqRnENBBCcCgALIA4gEUHIy8YAEPAHAAsgDSALQcjLxgAQ8AcACyAOIAtByMvGABDwBwALIA0gEUHIy8YAEPAHAAsgG0EQaiQADwsgDiAQQcjLxgAQ8AcACyAKIBBByMvGABDwBwALrlwEF38DfQF+AXsjAEHQAGsiCiQAAkACQAJAAkAgAC0ApFNFBEAgCkFAayAAQUBrEPEEIAotAEAEQCAKKAJEIQEMAwsgCi0AQUEBRw0BIABBAToApFMLIAAoAkgiA0UNACAAQZwBaiEUIApBNGqtQoCAgIAQhCEbIABB2ABqIRUgAEHkAGohEiAAQfAAaiEWIABB/ABqIRcDQAJAIAAoAlQiCCAAKAKgUyIBayICQQAgAiAITRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiBWshAiABIAVGBEAgACACNgKgUwwBCyABIAhNBEAgAgRAIAAoAlAiASABIAVqIAL8CgAACyAAKAJIIQMgACACNgKgUwwBC0EAIAEgCEGoo8cAEKAFAAsCQAJAIAMgDU8EQCAKQUBrIBQgACgCRCANaiADIA1rIAAoAlAgACgCVCACQQYQTCAKIAotAEQiAToAByAKKAJAIRMgCigCSCIQRQ0CIAAoAqBTIgMgEGoiAiADTyACIAAoAlQiCE1xDQEgAyACIAhB9O7BABCgBQALIA0gAyADQYTvwQAQoAUACyAAKAJQIQggACgCWCAAKAJgIgJrIBBJBEAgFSACIBBBAUEBENYGIAAoAmAhAgsgEARAIAAoAlwgAmogAyAIaiAQ/AoAAAsgACACIBBqIgg2AmAgACAAKAKgUyAQajYCoFMCQCAAKAJkQYCAgIB4Rw0AIAhBD00NASAKIAAoAlwiAigAACIDNgIUIANBzo7NggVHBEAgCiAKQRRqrUKAgICA4AOENwNAIApBGGoiAEHk58EAIApBQGsQtwcgABC9CCEBDAULIAogAigABCIFNgIkIAVBBGtBfE0EQCAKIApBJGqtQoCAgIAQhDcDQCAKQShqIgBBrJLAACAKQUBrELcHIAAQvQghAQwFCyAAQQA2AmAgAi0ADiEEIAItAA0hByACLQAMIQMgAigACCELIAhBEGsiCARAIAgEQCACIAJBEGogCPwKAAALIAAgCDYCYAsgCiADNgI0AkAgA0EDTQRAQYCAwAAQbiICRQ0BIAAgBDoAmgEgACAHOgCZASAAQQA6AJgBIABBADYClAEgACADNgKQASAAIAs2AowBIAAgBTYCiAEgAEEANgKEASAAQoCAgIDAADcCfCAAQgI3AnQgAEIANwJsIAAgAjYCaCAAQYCAEDYCZCAKIARBgAFxQQd2OgBIIAogAzYCRCAKIAs2AkAgACAKQUBrEPwBIAAoAmRBgICAgHhGDQMMAgsgCiAbNwM4IApBQGsiAEH0l8AAIApBOGoQtwcgABDCCCEBDAULQQRBgIDAABCaCQALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAJgBQQFrDgkNDAsKAAEGBBYCC0EJIQ5BBiEBIAAoApABDgQECAcGAgsgAEEJQQcgACwAmgFBAE4bOgCYAQwVCyAAKAJgQQZBCSAAKAKIASIDQQFGGyIMbiICIAAoAowBIAAoApQBayIISQRAIAIiCEGAgARJDRQLQYCABCAIIAhBgIAETxsiC0EDbCICIAAoAmwiAUsEfyACIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsIAAoAogBBSADC0EBRw0LIAhFDQ1BACEBQQAhAkEAIQNBACEEA0AgAUECaiIHIAAoAmAiBUsEQCABIAcgBUHU6MEAEKAFAAsCfyAAKAJcIAFqIgVBAWotAABBCHQiBiAFLQAAciIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSEFIAZBgIACcSEJIAZBgPgBcSIGQYD4AUYEQCAJQRB0IgZBgICA/AdyIAVFDQEaIAVBDXQgBnJBgICA/gdyDAELIAlBEHQiCSAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAYNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIAVBF3RrcgshBQJ/AkACQCAAKAJsIgYgA0sEQCAAKAJoIAJqIAU2AgAgAUEEaiIGIAAoAmAiBUsNASAAKAJcIAFqIgVBA2otAABBCHQiByAFQQJqLQAAciIFQf//AXFFBEAgBUEQdAwECyAFQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQQaIAVBDXQgB3JBgICA/gdyDAQLIAlBEHQhCSAHRQ0CIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAJcgwDCyADIAZBhOjBABDwBwALIAcgBiAFQcTowQAQoAUACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyCyEFAn8CQAJAIANBAWoiByAAKAJsIglJBEAgACgCaCACakEEaiAFNgIAIAFBBmoiBSAAKAJgIgdLDQEgACgCXCABaiIBQQVqLQAAQQh0IgcgAUEEai0AAHIiAUH//wFxRQRAIAFBEHQMBAsgAUH/B3EhASAHQYCAAnEhBiAHQYD4AXEiB0GA+AFGBEAgBkEQdCIHQYCAgPwHciABRQ0EGiABQQ10IAdyQYCAgP4HcgwECyAGQRB0IQYgB0UNAiAHQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBnIMAwsgByAJQZTowQAQ8AcACyAGIAUgB0G06MEAEKAFAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAFBF3RrcgshASADQQJqIgcgACgCbCIGSQRAIAAoAmggAmpBCGogATYCACACQQxqIQIgA0EDaiEDIAUhASAEQQFqIgQgC0kNAQwOCwsgByAGQaTowQAQ8AcAC0GU7cEAEJ0KAAsgACgCYCIBQQJ2IgIgACgCjAEgACgClAFrIgdJBEAgAiEHIAFBgIAQSQ0SC0GAgAQgByAHQYCABE8bIgggACgChAEiAUsEQCAIIAFrIgIgACgCfCABa0sEQCAXIAEgAkEEQQQQ1gYgACgChAEhAQsgACgCgAEiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYChAELIAcEQEEAIQFBACEDAkADQCABQQRqIgIgACgCYCIFSwRAIAEgAiAFQeTuwQAQoAUACyAAKAKEASIFIANLBEAgACgCgAEgAWogACgCXCABaigAADYCACACIQEgCCADQQFqIgNGDQIMAQsLIAMgBUHU7sEAEPAHAAsgACgChAEhAQsgACgCECAAKAIUIAAoApQBIAggACgCgAEgARCfAwJAAkACQCAAKAJgIgEgCEECdCICTwRAIABBADYCYCABIAJrIQMgB0UNASABIAJGDQMgA0UNAiAAKAJcIgEgASACaiAD/AoAAAwCCwwbCyABIAJGDQELIAAgAzYCYAsgACAAKAKUASAIaiICNgKUASACIAAoAowBRw0SIABBADYClAFBCSEBCyAAIAE6AJgBDBELIAAoAmAiAUEBdiICIAAoAowBIAAoApQBayIESQRAIAIhBCABQYCACEkNEAtBgIAEIAQgBEGAgARPGyICIAAoAngiAUsEQCACIAFrIgMgACgCcCABa0sEQCAWIAEgA0ECQQIQ1gYgACgCeCEBCyAAKAJ0IgUgAUEBdGohCCADQQJPBH8gA0EBdEECayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAUgA0EBdGpBAmsFIAgLQQA7AQAgACABQQFqIgE2AngLIAQEQEEAIQNBAiEBAkADQCAAKAJgIgggAUkEQCABQQJrIAEgCEHE7sEAEKAFAAsgACgCeCIIIANLBEAgACgCdCABakECayAAKAJcIAFqQQJrLwAAOwEAIAFBAmohASACIANBAWoiA0YNAgwBCwsgAyAIQbTuwQAQ8AcACyAAKAJ4IQELIAAoAhAgACgCFCAAKAKUASACIAAoAnQgARC9AwJAAkACQCAAKAJgIgMgAkEBdCIBTwRAIABBADYCYCADIAFrIQggBEUNASABIANGDQMgCEUNAiAAKAJcIgMgASADaiAI/AoAAAwCC0EAIAEgA0Goo8cAEKAFAAsgASADRg0BCyAAIAg2AmALIAAgACgClAEgAmoiAjYClAEgAiAAKAKMAUcNECAAQQA2ApQBIABBCDoAmAEMEAtBLSEODAELQRghDgsgACgCYCAObiICIAAoAowBIAAoApQBayILSQRAIAIiC0GAgARJDQ0LQYCABCALIAtBgIAETxsiDCAObCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgggAUECdGohAyACQQJPBH8gAkECdEEEayIFBEAgA0EAIAX8CwALIAEgAmoiAkEBayEBIAggAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AmwLIAxBCWwhEQJAIAsEQCAMQeAAbCEIIAxBGGwhB0EAIQVBACEPAkADQCAOIA9sIgEgACgCYCICTw0DAkACQAJAAkAgD0EJbCIDIAAoAmwiAk8NACAAKAJoIANBAnRqIAAoAlwgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKAJgIgJPBEAgBCEBDAgLIANBA2oiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEGaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EGaiIGIAAoAmwiAk8EQCAGIQMMAQsgACgCaCAGQQJ0aiAAKAJcIARqLQAAs0MAAADDkkMAAAA8lDgCACABQQFqIgQgACgCYCICTwRAIAQhAQwICyADQQFqIgYgACgCbCICTwRAIAYhAwwBCyAAKAJoIAZBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKAJgIgJPBEAgBCEBDAgLIANBBGoiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEHaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EHaiIGIAAoAmwiAk8EQCAGIQMMAQsgACgCaCAGQQJ0aiAAKAJcIARqLQAAs0MAAADDkkMAAAA8lDgCACABQQJqIgQgACgCYCICTwRAIAQhAQwICyADQQJqIgYgACgCbCICTwRAIAYhAwwBCyAAKAJoIAZBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKAJgIgJPBEAgBCEBDAgLIANBBWoiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEIaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EIaiIDIAAoAmwiAk8NACAAKAJoIANBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAAoApABQQFLDQEMAgsgAyACQaTuwQAQ8AcACwJAAkAgAUEJaiIDIAAoAmAiBk8NACAPQQ9sIBFqIgIgACgCbCIGTw0DIAAoAmggAkECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAmAiBk8NACACQQNqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBD2oiAyAAKAJgIgZPDQAgAkEGaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRJqIgMgACgCYCIGTw0AIAJBCWoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIDIAAoAmAiBk8NACACQQxqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBCmoiAyAAKAJgIgZPDQAgAkEBaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ1qIgMgACgCYCIGTw0AIAJBBGoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIDIAAoAmAiBk8NACACQQdqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBE2oiAyAAKAJgIgZPDQAgAkEKaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRZqIgMgACgCYCIGTw0AIAJBDWoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIDIAAoAmAiBk8NACACQQJqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDmoiAyAAKAJgIgZPDQAgAkEFaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRFqIgMgACgCYCIGTw0AIAJBCGoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIDIAAoAmAiBk8NACACQQtqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBF2oiAyAAKAJgIgZPDQAgAkEOaiICIAAoAmwiBk8NAyAAKAJoIAJBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAAoApABQQJNDQJBACEGIAghAwwBCyADIAZB9O3BABDwBwALAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQANAIAAoAmAiAiAFIAZqIgFBGGpLBEAgBiAHaiIEIAAoAmwiAk8NDyAAKAJoIANqIAEgACgCXGpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQRtqTQ0HIAAoAmwiAiAEQQNqTQ0OIAAoAmggA2pBDGogASAAKAJcakEbai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBHmpNDQYgACgCbCICIARBBmpNDQ0gACgCaCADakEYaiABIAAoAlxqQR5qLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEhak0NBSAAKAJsIgIgBEEJak0NDCAAKAJoIANqQSRqIAEgACgCXGpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQSRqTQ0EIAAoAmwiAiAEQQxqTQ0LIAAoAmggA2pBMGogASAAKAJcakEkai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBJ2pNDQMgACgCbCICIARBD2pNDQogACgCaCADakE8aiABIAAoAlxqQSdqLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEqak0NAiAAKAJsIgIgBEESak0NCSAAKAJoIANqQcgAaiAAKAJcIAVqIAZqQSpqLQAAs0MAAADDkkMAAAA8lDgCACADQQRqIQMgBkEBaiICIQYgAkEDRw0BDBALCyABQRhqDAYLIAFBKmoMBQsgAUEnagwECyABQSRqDAMLIAFBIWoMAgsgAUEeagwBCyABQRtqCyACQdTtwQAQ8AcACyAEQRJqIQQMBQsgBEEPaiEEDAQLIARBDGohBAwDCyAEQQlqIQQMAgsgBEEGaiEEDAELIARBA2ohBAsgBCACQeTtwQAQ8AcACyAFIA5qIQUgB0EVaiEHIAhB1ABqIQggD0EBaiIPIAxGDQIMAQsLIAIgBkGE7sEAEPAHAAsgACgCbCEBCwJAAkACQAJAAkAgASARTwRAIAAoAmghCCAAKAKUASEEQQQhAkEAIQYCQCAAKAKQASIOQQJJBEBBACEHQQQhBQwBCyAMQRhsIgMgAUsNAiAMQQ9sIQcgCCARQQJ0aiEFIA5BAkYNACABIAlJIAMgCUtyDQYgCSADayEGIAggA0ECdGohAgsgACAEIAwgCCARIAUgByACIAYQ1gMgACgCYCICIAlJDRkgAEEANgJgIAIgCWshASALRQ0CIAIgCUYNBCABRQ0DIAAoAlwiAiACIAlqIAH8CgAADAMLQQAgESABQcTtwQAQoAUACyARIAMgAUG07cEAEKAFAAsgAiAJRg0BCyAAIAE2AmALIAAgACgClAEgDGoiAjYClAEgAiAAKAKMAUcNDyAAQQA2ApQBIABBBjoAmAEMDwsgAyAJIAFBpO3BABCgBQALIAEgAkGU7sEAEPAHAAsgACgCYEEEQQMgACgCiAEiA0EDRhsiDm4iAiAAKAKMASAAKAKUAWsiC0kEQCACIgtBgIAESQ0MCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBgIAEIAsgC0GAgARPGyIIQQJ0IgIgACgCbCIBSwR/IAIgAWsiAiAAKAJkIAFrSwRAIBIgASACQQRBBBDWBiAAKAJsIQELIAAoAmgiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWo2AmwgACgCiAEFIAMLQQNHBEAgC0UNDEEAIQFBACECQQAhA0EAIQQDQCABIAAoAmAiBU8NAiABQQFqIgcgBU8NAyABQQJqIgcgBU8NBCADIAAoAmwiBU8NBSAAKAJcIAFqIgVBAWotAAAhByAFQQJqLQAAIQYgACgCaCACaiAFLQAAs0MAAP9ClUMAAIC/kiIYOAIAIANBAWoiBSAAKAJsIglPDQYgACgCaCACakEEaiAHs0MAAP9ClUMAAIC/kiIZOAIAIANBAmoiBSAAKAJsIgdPDQcgACgCaCACakEIaiAGs0MAAP9ClUMAAIC/kiIaOAIAIANBA2oiBSAAKAJsIgdPDQggACgCaCACakEMakMAAAAAQwAAgD8gGCAYlCAZIBmUkiAaIBqUkpMiGCAYIBhcGyIYQwAAAAAgGEMAAAAAXhuROAIAIAFBA2ohASACQRBqIQIgA0EEaiEDIARBAWoiBCAISQ0ACwwLCyALRQ0LQQAhAkEAIQNBACEHA0ACQAJAAkACQCAAKAJgIgEgA0sEQCADQQFqIgQgAU8NASADQQJqIgYgAU8NAiADQQNqIgkgAU8NAyAAKAJcIANqIgFBAmotAAAhESABQQNqLQAAIQUgAS0AACABQQFqLQAAIQwgCv0MAAAAAAAAAAAAAAAAAAAAAP0LA0AgDEEIdHIiDyARQRB0IAVBGHRyciEBQwAAAAAhGAJ9IAoCfwJAIAVBBnYiBUEDRwRAIAogD0H/A3GzQwCA/0OVQ/MENT+UIhiMIBggDEECcRsiGDgCTCAYIBiUIRggAUEKdiEBIAVBAkYNAQsgCiABQf8DcbNDAID/Q5VD8wQ1P5QiGYwgGSABQYAEcRsiGTgCSCAYIBkgGZSSIRggAUEKdiIBIAVBAUYNARoLIAogAUH/A3GzQwCA/0OVQ/MENT+UIhmMIBkgAUGABHEbIhk4AkQgGCAZIBmUkiIYIAVFDQEaIAFBCnYLIgFB/wNxs0MAgP9DlUPzBDU/lCIZjCAZIAFBgARxGyIZOAJAIBggGSAZlJILIRggCkFAayAFQQJ0akMAAIA/IBiTIhiRQwAAAAAgGEMAAAAAXhs4AgAgAyAAKAJsIgFJDQQgAyABQeTrwQAQ8AcACyADIAFBpOvBABDwBwALIAQgAUG068EAEPAHAAsgBiABQcTrwQAQ8AcACyAJIAFB1OvBABDwBwALIAAoAmggAmogCioCQDgCACAEIAAoAmwiAU8NCiAAKAJoIAJqQQRqIAoqAkQ4AgAgBiAAKAJsIgFPDQkgACgCaCACakEIaiAKKgJIOAIAIAkgACgCbCIBTw0IIAAoAmggAmpBDGogCioCTDgCACACQRBqIQIgA0EEaiEDIAggB0EBaiIHSw0ACwwKCyABIAVBpOzBABDwBwALIAcgBUG07MEAEPAHAAsgByAFQcTswQAQ8AcACyADIAVB1OzBABDwBwALIAUgCUHk7MEAEPAHAAsgBSAHQfTswQAQ8AcACyAFIAdBhO3BABDwBwALIAkgAUGU7MEAEPAHAAsgBiABQYTswQAQ8AcACyAEIAFB9OvBABDwBwALIAtFDQAgACgCaCECQQAhByAAKAIIIgkgACgClAEiBGsiAUEAIAEgCU0bIQEgACgCbCIMQQJ2IQMgACgCBCAEQSxsaiEGIAghBQNAIAFFDQIgA0UNAyAKIAL9AAIA/QsEQCACQRBqIQIgB0EEaiEHIARBAWohBCABQQFrIQEgA0EBayEDIAYgCkFAaxCNAiAGQSxqIQYgBUEBayIFDQALCyAAKAJgIgEgCCAObCICSQ0XIABBADYCYCABIAJrIQMgC0UNAiABIAJGDQQgA0UNAyAAKAJcIgEgASACaiAD/AoAAAwDCyAEIAlB+NbGABDwBwALIAcgB0EEaiAMQejYxgAQoAUACyABIAJGDQELIAAgAzYCYAsgACAAKAKUASAIaiICNgKUASACIAAoAowBRw0MIABBADYClAEgAEEFOgCYAQwMCyAAKAJgIgFBA24iAiAAKAKMASAAKAKUAWsiCEkEQCACIQggAUGAgAxJDQsLQYCABCAIIAhBgIAETxsiC0EDbCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsCwJAAkACQAJAAkACQAJAAkACQAJAAkAgCARAQQAhA0EAIQEDQCABIAAoAmAiAk8NAiABIAAoAmwiAk8NAyAAKAJoIANqIAAoAlwgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKAJgIgVPDQQgAiAAKAJsIgVPDQUgACgCaCADakEEaiAAKAJcIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCIBDgCACABQQJqIgIgACgCYCIFTw0GIAIgACgCbCIFTw0HIAAoAmggA2pBCGogACgCXCABakECai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgA0EMaiEDIAkgAUEDaiIBRw0AC0EAIQcgACgCCCIMIAAoApQBIgRrIgJBACACIAxNGyEDIAAoAmwiDkEDbiECIAAoAgQgBEEsbGohBiAAKAJoIQEgCyEFA0AgA0UNCCACRQ0JIAogAf1dAgAgAUEIaioCACIY/SACIBj9IAP9CwRAIAFBDGohASAHQQNqIQcgBEEBaiEEIANBAWshAyACQQFrIQIgBiAKQUBrEOYCIAZBLGohBiAFQQFrIgUNAAsLIAAoAmAiAiAJSQ0bIABBADYCYCACIAlrIQEgCEUNCCACIAlGDQogAUUNCSAAKAJcIgIgAiAJaiAB/AoAAAwJCyABIAJBxOrBABDwBwALIAEgAkHU6sEAEPAHAAsgAiAFQeTqwQAQ8AcACyACIAVB9OrBABDwBwALIAIgBUGE68EAEPAHAAsgAiAFQZTrwQAQ8AcACyAEIAxB+NbGABDwBwALIAcgB0EDaiAOQcjaxgAQoAUACyACIAlGDQELIAAgATYCYAsgACAAKAKUASALaiICNgKUASACIAAoAowBRw0LIABBADYClAEgAEEEOgCYAQwLCyAAKAJgIgFBA24iAiAAKAKMASAAKAKUAWsiCEkEQCACIQggAUGAgAxJDQoLQYCABCAIIAhBgIAETxsiC0EDbCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsCwJAAkACQAJAAkACQAJAAkACQAJAAkAgCARAQQAhA0EAIQEDQCABIAAoAmAiAk8NAiABIAAoAmwiAk8NAyAAKAJoIANqIAAoAlwgAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAWoiAiAAKAJgIgVPDQQgAiAAKAJsIgVPDQUgACgCaCADakEEaiAAKAJcIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgCYCIFTw0GIAIgACgCbCIFTw0HIAAoAmggA2pBCGogACgCXCABakECai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgA0EMaiEDIAkgAUEDaiIBRw0AC0EAIQcgACgCCCIMIAAoApQBIgRrIgJBACACIAxNGyEDIAAoAmwiDkEDbiECIAAoAgQgBEEsbGohBiAAKAJoIQEgCyEFA0AgA0UNCCACRQ0JIAogAf1dAgAgAUEIaioCACIY/SACIBj9IAP9CwRAIAFBDGohASAHQQNqIQcgBEEBaiEEIANBAWshAyACQQFrIQIgBiAKQUBrEO4CIAZBLGohBiAFQQFrIgUNAAsLIAAoAmAiAiAJSQ0aIABBADYCYCACIAlrIQEgCEUNCCACIAlGDQogAUUNCSAAKAJcIgIgAiAJaiAB/AoAAAwJCyABIAJB5OnBABDwBwALIAEgAkH06cEAEPAHAAsgAiAFQYTqwQAQ8AcACyACIAVBlOrBABDwBwALIAIgBUGk6sEAEPAHAAsgAiAFQbTqwQAQ8AcACyAEIAxB+NbGABDwBwALIAcgB0EDaiAOQfjXxgAQoAUACyACIAlGDQELIAAgATYCYAsgACAAKAKUASALaiICNgKUASACIAAoAowBRw0KIABBADYClAEgAEEDOgCYAQwKCyAAKAJgIgIgACgCjAEgACgClAFrIgRJBEAgAiIEQYCABEkNCQtBgIAEIAQgBEGAgARPGyICIAAoAmwiAUsEQCACIAFrIgMgACgCZCABa0sEQCASIAEgA0EEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohCCADQQJPBH8gA0ECdEEEayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAUgA0ECdGpBBGsFIAgLQQA2AgAgACABQQFqIgE2AmwLAkACQAJAAkACQCAEBEBDAACAP0MAAABAIAAsAJoBQQBOGyEYQQAhAUEAIQMDQCABIAAoAmAiCE8NAiABIAAoAmwiCE8NAyAAKAJoIANqIBggACgCXCABai0AALNDAAB/Q5WUOAIAIANBBGohAyABQQFqIgEgAkcNAAsgACgCbCEBCyAAKAIEIAAoAgggACgClAEgAiAAKAJoIAEQ4wQgACgCYCIBIAJJDRQgAEEANgJgIAEgAmshAyAERQ0CIAEgAkYNBCADRQ0DIAAoAlwiASABIAJqIAP8CgAADAMLIAEgCEHE6cEAEPAHAAsgASAIQdTpwQAQ8AcACyABIAJGDQELIAAgAzYCYAsgACAAKAKUASACaiICNgKUASACIAAoAowBRw0JIABBADYClAEgAEECOgCYAQwJCyAIRQ0BQQEgAC0AmQF0syEYQQAhAUEAIQJBACEDQQAhBAJAAkACQAJAA0AgAUEDaiIFIAAoAmAiB0sEQCABIAUgB0G06cEAEKAFAAsgAyAAKAJsIgdPDQEgACgCaCACaiAAKAJcIAFqIgdBAmotAAAiBkEQdCAHLQAAciAHQQFqLQAAQQh0ciIHQYCAgHhyIAcgBsBBAEgbsiAYlTgCACABQQZqIgcgACgCYCIGSw0CIANBAWoiBSAAKAJsIgZPDQMgACgCaCACakEEaiAAKAJcIAFqIgVBBWotAAAiBkEQdCAFQQNqLQAAciAFQQRqLQAAQQh0ciIFQYCAgHhyIAUgBsBBAEgbsiAYlTgCACABQQlqIgUgACgCYCIGSw0EIANBAmoiByAAKAJsIgZJBEAgACgCaCACakEIaiAAKAJcIAFqIgFBCGotAAAiB0EQdCABQQZqLQAAciABQQdqLQAAQQh0ciIBQYCAgHhyIAEgB8BBAEgbsiAYlTgCACACQQxqIQIgA0EDaiEDIAUhASAEQQFqIgQgC0kNAQwGCwsgByAGQYTpwQAQ8AcACyADIAdB5OjBABDwBwALIAUgByAGQaTpwQAQoAUACyAFIAZB9OjBABDwBwALIAcgBSAGQZTpwQAQoAUACyAIRQ0AIAAoAmghAUEAIQcgACgCCCIJIAAoApQBIgRrIgJBACACIAlNGyECIAAoAmwiDkEDbiEGIAAoAgQgBEEsbGpBCGohAyALIQUDQCACRQ0CIAZFDQMgAyABQQhqIAH9XQIA/VYCAAIiHP1aAggCIAMgHP1bAgAAIAFBDGohASAHQQNqIQcgA0EsaiEDIARBAWohBCACQQFrIQIgBkEBayEGIAVBAWsiBQ0ACwsgACgCYCIBIAsgDGwiAkkNDCAAQQA2AmAgASACayEDIAhFDQIgASACRg0EIANFDQMgACgCXCIBIAEgAmogA/wKAAAMAwsgBCAJQfjWxgAQ8AcACyAHIAdBA2ogDkGI18YAEKAFAAsgASACRg0BCyAAIAM2AmALIAAgACgClAEgC2oiAjYClAEgAiAAKAKMAUcNASAAQQA2ApQBIABBAToAmAEMAQsLIAotAAchAQsgDSATaiENAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCiAKQQdqrUKAgICA8AOENwNAIApBCGoiAEG3mcAAIApBQGsQtwcgABC9CCEBDAYLIABBAToApVMgDUEIaiANIAAoAkgiAiANayIBQQAgASACTRtBB0sbIQ0MAgsgECATckUNAQsgDSAAKAJIIgNJDQELCyANRQ0AIA0gACgCSCICTQRAQQAhASAAQQA2AkggAiANRg0CIAIgDWsiAgRAIAAoAkQiAyADIA1qIAL8CgAACyAAIAI2AkgMAgtBACANIAJBqKPHABCgBQALQQAhAQsgCkHQAGokACABDwtBACAJIAJBqKPHABCgBQALQQAgAiABQaijxwAQoAUAC7deBBl/A30BewF+IwBB0ABrIgkkAAJAAkACQCAALQDEU0UEQCAJQUBrIABB4ABqEPEEIAktAEAEQCAJKAJEIQEMAwsgCS0AQUEBRw0BIABBAToAxFMLIAAoAmgiA0UNACAAQdkAaiETIABBPGohFSAAQbwBaiEWIAlBNGqtQoCAgIAQhCEeIABB+ABqIRcgAEGEAWohEiAAQZABaiEYIABBnAFqIRkDQAJAIAAoAnQiBSAAKALAUyIBayICQQAgAiAFTRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiCGshAiABIAhGBEAgACACNgLAUwwBCyABIAVNBEAgAgRAIAAoAnAiASABIAhqIAL8CgAACyAAKAJoIQMgACACNgLAUwwBC0EAIAEgBUGoo8cAEKAFAAsCQAJAIAMgDU8EQCAJQUBrIBYgACgCZCANaiADIA1rIAAoAnAgACgCdCACQQYQTCAJIAktAEQiAToAByAJKAJAIRQgCSgCSCIRRQ0CIAAoAsBTIgMgEWoiAiADTyACIAAoAnQiBU1xDQEgAyACIAVB9O7BABCgBQALIA0gAyADQYTvwQAQoAUACyAAKAJwIQUgACgCeCAAKAKAASICayARSQRAIBcgAiARQQFBARDWBiAAKAKAASECCyARBEAgACgCfCACaiADIAVqIBH8CgAACyAAIAIgEWoiCDYCgAEgACAAKALAUyARajYCwFMCQAJAAkAgACgChAFBgICAgHhGBEACQCAIQRBJDQAgCSAAKAJ8IgIoAAAiAzYCFCADQc6OzYIFRwRAIAkgCUEUaq1CgICAgOADhDcDQCAJQRhqIgBB5OfBACAJQUBrELcHIAAQvQghAQwJCyAJIAIoAAQiBDYCJCAEQQRrQXxNBEAgCSAJQSRqrUKAgICAEIQ3A0AgCUEoaiIAQaySwAAgCUFAaxC3ByAAEL0IIQEMCQsgAEEANgKAASACLAAOIQUgAi0ADSELIAItAAwhAyACKAAIIQcgCEEQayIIBEAgCARAIAIgAkEQaiAI/AoAAAsgACAINgKAAQsgCSADNgI0IANBA0sNA0GAgMAAEG4iAkUNAiAAIAU6ALoBIAAgCzoAuQEgAEEAOgC4ASAAQQA2ArQBIAAgAzYCsAEgACAHNgKsASAAIAQ2AqgBIABBADYCpAEgAEKAgICAwAA3ApwBIABCAjcClAEgAEIANwKMASAAIAI2AogBIABBgIAQNgKEASAJIAVBgAFxQQd2OgBIIAkgAzYCRCAJIAc2AkAgACAJQUBrEOoBIAVBAE4NAAJ9IAAtAFhBAkYEQP0MAAAAAAAAgD8AAEDBAAAQQSEdQwAAgD8hGkMAAIA/IRtDAACAPwwBCyAJIBMvAAA7AUAgCSATLQACOgBCIAAqAlAhGiAAKgJMIRsgAP0AAjwhHSAAKgJUCyEcIABBAToAWCAAIBw4AlQgACAaOAJQIAAgGzgCTCAAIB39CwI8IBMgCS8BQDsAACATIAktAEI6AAILIAAoAoQBQYCAgIB4Rg0ECwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AuAFBAWsOCQ0MCwoAAQYEGQILQQkhDkEGIQEgACgCsAEOBAQIBwYCCyAAQQlBByAALAC6AUEAThs6ALgBDBQLIAAoAoABQQZBCSAAKAKoASIDQQFGGyIMbiICIAAoAqwBIAAoArQBayIISQRAIAIiCEGAgARJDRcLQYCABCAIIAhBgIAETxsiC0EDbCICIAAoAowBIgFLBH8gAiABayICIAAoAoQBIAFrSwRAIBIgASACQQRBBBDWBiAAKAKMASEBCyAAKAKIASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYCjAEgACgCqAEFIAMLQQFHDQsgCEUNDUEAIQFBACECQQAhA0EAIQQDQCABQQJqIgcgACgCgAEiBUsEQCABIAcgBUHU6MEAEKAFAAsCfyAAKAJ8IAFqIgVBAWotAABBCHQiBiAFLQAAciIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSEFIAZBgIACcSEKIAZBgPgBcSIGQYD4AUYEQCAKQRB0IgZBgICA/AdyIAVFDQEaIAVBDXQgBnJBgICA/gdyDAELIApBEHQiCiAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAYNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIApBgICA2ANyIAVBF3RrcgshBQJ/AkACQCAAKAKMASIGIANLBEAgACgCiAEgAmogBTYCACABQQRqIgYgACgCgAEiBUsNASAAKAJ8IAFqIgVBA2otAABBCHQiByAFQQJqLQAAciIFQf//AXFFBEAgBUEQdAwECyAFQf8HcSEFIAdBgIACcSEKIAdBgPgBcSIHQYD4AUYEQCAKQRB0IgdBgICA/AdyIAVFDQQaIAVBDXQgB3JBgICA/gdyDAQLIApBEHQhCiAHRQ0CIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAKcgwDCyADIAZBhOjBABDwBwALIAcgBiAFQcTowQAQoAUACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCkGAgIDYA3IgBUEXdGtyCyEFAn8CQAJAIANBAWoiByAAKAKMASIKSQRAIAAoAogBIAJqQQRqIAU2AgAgAUEGaiIFIAAoAoABIgdLDQEgACgCfCABaiIBQQVqLQAAQQh0IgcgAUEEai0AAHIiAUH//wFxRQRAIAFBEHQMBAsgAUH/B3EhASAHQYCAAnEhBiAHQYD4AXEiB0GA+AFGBEAgBkEQdCIHQYCAgPwHciABRQ0EGiABQQ10IAdyQYCAgP4HcgwECyAGQRB0IQYgB0UNAiAHQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBnIMAwsgByAKQZTowQAQ8AcACyAGIAUgB0G06MEAEKAFAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAFBF3RrcgshASADQQJqIgcgACgCjAEiBkkEQCAAKAKIASACakEIaiABNgIAIAJBDGohAiADQQNqIQMgBSEBIARBAWoiBCALSQ0BDA4LCyAHIAZBpOjBABDwBwALQZTtwQAQnQoACyAAKAKAASIBQQJ2IgIgACgCrAEgACgCtAFrIgVJBEAgAiEFIAFBgIAQSQ0VC0GAgAQgBSAFQYCABE8bIgggACgCpAEiAUsEQCAIIAFrIgIgACgCnAEgAWtLBEAgGSABIAJBBEEEENYGIAAoAqQBIQELIAAoAqABIgQgAUECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAEgAmoiAkEBayEBIAQgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AqQBCyAFBEBBACEBQQAhAwJAA0AgAUEEaiICIAAoAoABIgRLBEAgASACIARB5O7BABCgBQALIAAoAqQBIgQgA0sEQCAAKAKgASABaiAAKAJ8IAFqKAAANgIAIAIhASAIIANBAWoiA0YNAgwBCwsgAyAEQdTuwQAQ8AcACyAAKAKkASEBCyAAKAIQIAAoAhQgACgCtAEgCCAAKAKgASABEJ4DAkACQAJAIAAoAoABIgEgCEECdCICTwRAIABBADYCgAEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgCfCIBIAEgAmogA/wKAAAMAgsMHAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAhqIgI2ArQBIAIgACgCrAFHDREgAEEANgK0AUEJIQELIAAgAToAuAEMEAsgACgCgAEiAUEBdiICIAAoAqwBIAAoArQBayIESQRAIAIhBCABQYCACEkNEwtBgIAEIAQgBEGAgARPGyICIAAoApgBIgFLBEAgAiABayIDIAAoApABIAFrSwRAIBggASADQQJBAhDWBiAAKAKYASEBCyAAKAKUASIIIAFBAXRqIQUgA0ECTwR/IANBAXRBAmsiBwRAIAVBACAH/AsACyABIANqIgNBAWshASAIIANBAXRqQQJrBSAFC0EAOwEAIAAgAUEBaiIBNgKYAQsgBARAQQAhA0ECIQECQANAIAAoAoABIgUgAUkEQCABQQJrIAEgBUHE7sEAEKAFAAsgACgCmAEiBSADSwRAIAAoApQBIAFqQQJrIAAoAnwgAWpBAmsvAAA7AQAgAUECaiEBIAIgA0EBaiIDRg0CDAELCyADIAVBtO7BABDwBwALIAAoApgBIQELIAAoAhAgACgCFCAAKAK0ASACIAAoApQBIAEQvAMCQAJAAkAgACgCgAEiAyACQQF0IgFPBEAgAEEANgKAASADIAFrIQUgBEUNASABIANGDQMgBUUNAiAAKAJ8IgMgASADaiAF/AoAAAwCC0EAIAEgA0Goo8cAEKAFAAsgASADRg0BCyAAIAU2AoABCyAAIAAoArQBIAJqIgI2ArQBIAIgACgCrAFHDQ8gAEEANgK0ASAAQQg6ALgBDA8LQS0hDgwBC0EYIQ4LIAAoAoABIA5uIgIgACgCrAEgACgCtAFrIghJBEAgAiIIQYCABEkNEAtBgIAEIAggCEGAgARPGyIMIA5sIgogACgCjAEiAUsEQCAKIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AowBCyAMQQlsIQ8CQCAIBEAgDEHgAGwhCyAMQRhsIQVBACEHQQAhEAJAA0AgDiAQbCIBIAAoAoABIgJPDQMCQAJAAkACQCAQQQlsIgMgACgCjAEiAk8NACAAKAKIASADQQJ0aiAAKAJ8IAFqLQAAs0MAAADDkkMAAAA8lDgCACABQQNqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EDaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKAKAASICTwRAIAQhAQwICyADQQZqIgYgACgCjAEiAk8EQCAGIQMMAQsgACgCiAEgBkECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEBaiIEIAAoAoABIgJPBEAgBCEBDAgLIANBAWoiBiAAKAKMASICTwRAIAYhAwwBCyAAKAKIASAGQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQQRqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EEaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKAKAASICTwRAIAQhAQwICyADQQdqIgYgACgCjAEiAk8EQCAGIQMMAQsgACgCiAEgBkECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUECaiIEIAAoAoABIgJPBEAgBCEBDAgLIANBAmoiBiAAKAKMASICTwRAIAYhAwwBCyAAKAKIASAGQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQQVqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EFaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKAKAASICTwRAIAQhAQwICyADQQhqIgMgACgCjAEiAk8NACAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKwAUEBSw0BDAILIAMgAkGk7sEAEPAHAAsCQAJAIAFBCWoiAyAAKAKAASIGTw0AIBBBD2wgD2oiAiAAKAKMASIGTw0DIAAoAogBIAJBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDGoiAyAAKAKAASIGTw0AIAJBA2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgCgAEiBk8NACACQQZqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUESaiIDIAAoAoABIgZPDQAgAkEJaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFWoiAyAAKAKAASIGTw0AIAJBDGoiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgCgAEiBk8NACACQQFqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUENaiIDIAAoAoABIgZPDQAgAkEEaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEGoiAyAAKAKAASIGTw0AIAJBB2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgCgAEiBk8NACACQQpqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEWaiIDIAAoAoABIgZPDQAgAkENaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBC2oiAyAAKAKAASIGTw0AIAJBAmoiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgCgAEiBk8NACACQQVqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUERaiIDIAAoAoABIgZPDQAgAkEIaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFGoiAyAAKAKAASIGTw0AIAJBC2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgCgAEiBk8NACACQQ5qIgIgACgCjAEiBk8NAyAAKAKIASACQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKwAUECTQ0CQQAhBiALIQMMAQsgAyAGQfTtwQAQ8AcACwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkADQCAAKAKAASICIAYgB2oiAUEYaksEQCAFIAZqIgQgACgCjAEiAk8NDyAAKAKIASADaiABIAAoAnxqQRhqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBG2pNDQcgACgCjAEiAiAEQQNqTQ0OIAAoAogBIANqQQxqIAEgACgCfGpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEeak0NBiAAKAKMASICIARBBmpNDQ0gACgCiAEgA2pBGGogASAAKAJ8akEeai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQSFqTQ0FIAAoAowBIgIgBEEJak0NDCAAKAKIASADakEkaiABIAAoAnxqQSFqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBJGpNDQQgACgCjAEiAiAEQQxqTQ0LIAAoAogBIANqQTBqIAEgACgCfGpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEnak0NAyAAKAKMASICIARBD2pNDQogACgCiAEgA2pBPGogASAAKAJ8akEnai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQSpqTQ0CIAAoAowBIgIgBEESak0NCSAAKAKIASADakHIAGogACgCfCAHaiAGakEqai0AALNDAAAAw5JDAAAAPJQ4AgAgA0EEaiEDIAZBAWoiAiEGIAJBA0cNAQwQCwsgAUEYagwGCyABQSpqDAULIAFBJ2oMBAsgAUEkagwDCyABQSFqDAILIAFBHmoMAQsgAUEbagsgAkHU7cEAEPAHAAsgBEESaiEEDAULIARBD2ohBAwECyAEQQxqIQQMAwsgBEEJaiEEDAILIARBBmohBAwBCyAEQQNqIQQLIAQgAkHk7cEAEPAHAAsgByAOaiEHIAVBFWohBSALQdQAaiELIBBBAWoiECAMRg0CDAELCyACIAZBhO7BABDwBwALIAAoAowBIQELAkACQAJAAkACQAJAIAEgD08EQCAAKAKIASEEIAAoArQBIQtBBCECQQAhBgJAIAAoArABIg5BAkkEQEEAIQVBBCEHDAELIAxBGGwiAyABSw0CIAxBD2whBSAEIA9BAnRqIQcgDkECRg0AIAEgCkkgAyAKS3INBSAKIANrIQYgBCADQQJ0aiECCyAAIAsgDCAEIA8gByAFIAIgBhCGBSAAKAKAASICIApJDQIgAEEANgKAASACIAprIQEgCEUNAyACIApGDQYgAUUNBSAAKAJ8IgIgAiAKaiAB/AoAAAwFC0EAIA8gAUHE7cEAEKAFAAsgDyADIAFBtO3BABCgBQALQQAgCiACQaijxwAQoAUACyACIApHDQEMAgsgAyAKIAFBpO3BABCgBQALIAAgATYCgAELIAAgACgCtAEgDGoiAjYCtAEgAiAAKAKsAUcNDSAAQQA2ArQBIABBBjoAuAEMDQsgASACQZTuwQAQ8AcACyAAKAKAAUEEQQMgACgCqAEiA0EDRhsiDm4iAiAAKAKsASAAKAK0AWsiCEkEQCACIghBgIAESQ0PCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBgIAEIAggCEGAgARPGyILQQJ0IgIgACgCjAEiAUsEfyACIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgKMASAAKAKoAQUgAwtBA0cEQCAIRQ0MQQAhAUEAIQJBACEDQQAhBANAIAEgACgCgAEiBU8NAiABQQFqIgcgBU8NAyABQQJqIgcgBU8NBCADIAAoAowBIgVPDQUgACgCfCABaiIFQQFqLQAAIQcgBUECai0AACEGIAAoAogBIAJqIAUtAACzQwAA/0KVQwAAgL+SIho4AgAgA0EBaiIFIAAoAowBIgpPDQYgACgCiAEgAmpBBGogB7NDAAD/QpVDAACAv5IiGzgCACADQQJqIgUgACgCjAEiB08NByAAKAKIASACakEIaiAGs0MAAP9ClUMAAIC/kiIcOAIAIANBA2oiBSAAKAKMASIHTw0IIAAoAogBIAJqQQxqQwAAAABDAACAPyAaIBqUIBsgG5SSIBwgHJSSkyIaIBogGlwbIhpDAAAAACAaQwAAAABeG5E4AgAgAUEDaiEBIAJBEGohAiADQQRqIQMgBEEBaiIEIAtJDQALDAsLIAhFDQtBACECQQAhA0EAIQUDQAJAAkACQAJAIAAoAoABIgEgA0sEQCADQQFqIgcgAU8NASADQQJqIgYgAU8NAiADQQNqIgogAU8NAyAAKAJ8IANqIgFBAmotAAAhDyABQQNqLQAAIQQgAS0AACABQQFqLQAAIQwgCf0MAAAAAAAAAAAAAAAAAAAAAP0LA0AgDEEIdHIiECAPQRB0IARBGHRyciEBQwAAAAAhGgJ9IAkCfwJAIARBBnYiBEEDRwRAIAkgEEH/A3GzQwCA/0OVQ/MENT+UIhqMIBogDEECcRsiGjgCTCAaIBqUIRogAUEKdiEBIARBAkYNAQsgCSABQf8DcbNDAID/Q5VD8wQ1P5QiG4wgGyABQYAEcRsiGzgCSCAaIBsgG5SSIRogAUEKdiIBIARBAUYNARoLIAkgAUH/A3GzQwCA/0OVQ/MENT+UIhuMIBsgAUGABHEbIhs4AkQgGiAbIBuUkiIaIARFDQEaIAFBCnYLIgFB/wNxs0MAgP9DlUPzBDU/lCIbjCAbIAFBgARxGyIbOAJAIBogGyAblJILIRogCUFAayAEQQJ0akMAAIA/IBqTIhqRQwAAAAAgGkMAAAAAXhs4AgAgAyAAKAKMASIBSQ0EIAMgAUHk68EAEPAHAAsgAyABQaTrwQAQ8AcACyAHIAFBtOvBABDwBwALIAYgAUHE68EAEPAHAAsgCiABQdTrwQAQ8AcACyAAKAKIASACaiAJKgJAOAIAIAcgACgCjAEiAU8NCiAAKAKIASACakEEaiAJKgJEOAIAIAYgACgCjAEiAU8NCSAAKAKIASACakEIaiAJKgJIOAIAIAogACgCjAEiAU8NCCAAKAKIASACakEMaiAJKgJMOAIAIAJBEGohAiADQQRqIQMgCyAFQQFqIgVLDQALDAoLIAEgBUGk7MEAEPAHAAsgByAFQbTswQAQ8AcACyAHIAVBxOzBABDwBwALIAMgBUHU7MEAEPAHAAsgBSAKQeTswQAQ8AcACyAFIAdB9OzBABDwBwALIAUgB0GE7cEAEPAHAAsgCiABQZTswQAQ8AcACyAGIAFBhOzBABDwBwALIAcgAUH068EAEPAHAAsgCEUNACAAKAKIASEGQQAhBSAAKAIIIgogACgCtAEiBGsiAkEAIAIgCk0bIQMgACgCjAEiDEECdiECIAAoAgQgBEEYbGpBFGohASALIQcDQCADRQ0CIAJFDQMgCSAG/QACAP0LBEAgAUECaiAJQUBrEM4EIg9BEHY6AAAgASAPOwEAIAZBEGohBiAFQQRqIQUgAUEYaiEBIARBAWohBCADQQFrIQMgAkEBayECIAdBAWsiBw0ACwsgACgCgAEiASALIA5sIgJJDRggAEEANgKAASABIAJrIQMgCEUNAiABIAJGDQQgA0UNAyAAKAJ8IgEgASACaiAD/AoAAAwDCyAEIApBmNTGABDwBwALIAUgBUEEaiAMQYjWxgAQoAUACyABIAJGDQELIAAgAzYCgAELIAAgACgCtAEgC2oiAjYCtAEgAiAAKAKsAUcNCyAAQQA2ArQBIABBBToAuAEMCwsgACgCgAEiAUEDbiICIAAoAqwBIAAoArQBayILSQRAIAIhCyABQYCADEkNDgtBgIAEIAsgC0GAgARPGyIIQQNsIgcgACgCjAEiAUsEQCAHIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgKMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCwRAQQAhA0EAIQEDQCABIAAoAoABIgJPDQIgASAAKAKMASICTw0DIAAoAogBIANqIAAoAnwgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKAKAASIFTw0EIAIgACgCjAEiBU8NBSAAKAKIASADakEEaiAAKAJ8IAFqQQFqLQAAs0MAAIA9lEMAACDBkhCIBDgCACABQQJqIgIgACgCgAEiBU8NBiACIAAoAowBIgVPDQcgACgCiAEgA2pBCGogACgCfCABakECai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgA0EMaiEDIAcgAUEDaiIBRw0ACyAAKAK0ASIDQRhsIQYgACgCiAEhAUEAIQQgCCEFIAAoAowBIgpBA24iDCECA0AgAyAAKAIIIg5PDQggAkUNCSAAKAIEIAZqIBUgAf1dAgAgAUEIaioCACIa/SACIBr9IAMQ+QQgAUEMaiEBIARBA2ohBCAGQRhqIQYgA0EBaiEDIAJBAWshAiAFQQFrIgUNAAsLIAAoAoABIgIgB0kNCCAAQQA2AoABIAIgB2shASALRQ0JIAIgB0YNCyABRQ0KIAAoAnwiAiACIAdqIAH8CgAADAoLIAEgAkHE6sEAEPAHAAsgASACQdTqwQAQ8AcACyACIAVB5OrBABDwBwALIAIgBUH06sEAEPAHAAsgAiAFQYTrwQAQ8AcACyACIAVBlOvBABDwBwALIAMgDkGY1MYAEPAHAAsgBCAMQQNsQQNqIApB6NbGABCgBQALQQAgByACQaijxwAQoAUACyACIAdGDQELIAAgATYCgAELIAAgACgCtAEgCGoiAjYCtAEgAiAAKAKsAUcNCiAAQQA2ArQBIABBBDoAuAEMCgsgACgCgAEiAUEDbiICIAAoAqwBIAAoArQBayIFSQRAIAIhBSABQYCADEkNDQtBgIAEIAUgBUGAgARPGyIEQQNsIgIgACgCjAEiAUsEQCACIAFrIgMgACgChAEgAWtLBEAgEiABIANBBEEEENYGIAAoAowBIQELIAAoAogBIgcgAUECdGohCCADQQJPBH8gA0ECdEEEayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAcgA0ECdGpBBGsFIAgLQQA2AgAgACABQQFqIgE2AowBCwJAAkACQAJAAkACQAJAAkACQCAFBEBBACEDQQAhAQNAIAEgACgCgAEiCE8NAiABIAAoAowBIghPDQMgACgCiAEgA2ogACgCfCABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiIIIAAoAoABIgdPDQQgCCAAKAKMASIHTw0FIAAoAogBIANqQQRqIAAoAnwgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiCCAAKAKAASIHTw0GIAggACgCjAEiB08NByAAKAKIASADakEIaiAAKAJ8IAFqQQJqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACADQQxqIQMgAiABQQNqIgFHDQALIAAoAowBIQELIAAgACgCtAEgBCAAKAKIASABELAEIAAoAoABIgEgAkkNGiAAQQA2AoABIAEgAmshAyAFRQ0GIAEgAkYNCCADRQ0HIAAoAnwiASABIAJqIAP8CgAADAcLIAEgCEHk6cEAEPAHAAsgASAIQfTpwQAQ8AcACyAIIAdBhOrBABDwBwALIAggB0GU6sEAEPAHAAsgCCAHQaTqwQAQ8AcACyAIIAdBtOrBABDwBwALIAEgAkYNAQsgACADNgKAAQsgACAAKAK0ASAEaiICNgK0ASACIAAoAqwBRw0JIABBADYCtAEgAEEDOgC4AQwJCyAAKAKAASICIAAoAqwBIAAoArQBayIESQRAIAIiBEGAgARJDQwLQYCABCAEIARBgIAETxsiAiAAKAKMASIBSwRAIAIgAWsiAyAAKAKEASABa0sEQCASIAEgA0EEQQQQ1gYgACgCjAEhAQsgACgCiAEiCCABQQJ0aiEFIANBAk8EfyADQQJ0QQRrIgcEQCAFQQAgB/wLAAsgASADaiIDQQFrIQEgCCADQQJ0akEEawUgBQtBADYCACAAIAFBAWoiATYCjAELAkACQAJAAkACQCAEBEBDAACAP0MAAABAIAAsALoBQQBOGyEaQQAhAUEAIQMDQCABIAAoAoABIgVPDQIgASAAKAKMASIFTw0DIAAoAogBIANqIBogACgCfCABai0AALNDAAB/Q5WUOAIAIANBBGohAyABQQFqIgEgAkcNAAsgACgCjAEhAQsgACgCBCAAKAIIIAAoArQBIAIgACgCiAEgARDiBCAAKAKAASIBIAJJDRUgAEEANgKAASABIAJrIQMgBEUNAiABIAJGDQQgA0UNAyAAKAJ8IgEgASACaiAD/AoAAAwDCyABIAVBxOnBABDwBwALIAEgBUHU6cEAEPAHAAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAJqIgI2ArQBIAIgACgCrAFHDQggAEEANgK0ASAAQQI6ALgBDAgLIAhFDQFBASAALQC5AXSzIRpBACEBQQAhAkEAIQNBACEEAkACQAJAAkADQCABQQNqIgUgACgCgAEiB0sEQCABIAUgB0G06cEAEKAFAAsgAyAAKAKMASIHTw0BIAAoAogBIAJqIAAoAnwgAWoiB0ECai0AACIGQRB0IActAAByIAdBAWotAABBCHRyIgdBgICAeHIgByAGwEEASBuyIBqVOAIAIAFBBmoiByAAKAKAASIGSw0CIANBAWoiBSAAKAKMASIGTw0DIAAoAogBIAJqQQRqIAAoAnwgAWoiBUEFai0AACIGQRB0IAVBA2otAAByIAVBBGotAABBCHRyIgVBgICAeHIgBSAGwEEASBuyIBqVOAIAIAFBCWoiBSAAKAKAASIGSw0EIANBAmoiByAAKAKMASIGSQRAIAAoAogBIAJqQQhqIAAoAnwgAWoiAUEIai0AACIHQRB0IAFBBmotAAByIAFBB2otAABBCHRyIgFBgICAeHIgASAHwEEASBuyIBqVOAIAIAJBDGohAiADQQNqIQMgBSEBIARBAWoiBCALSQ0BDAYLCyAHIAZBhOnBABDwBwALIAMgB0Hk6MEAEPAHAAsgBSAHIAZBpOnBABCgBQALIAUgBkH06MEAEPAHAAsgByAFIAZBlOnBABCgBQALIAhFDQAgACgCiAEhAUEAIQUgACgCCCIKIAAoArQBIgRrIgJBACACIApNGyECIAAoAowBIg5BA24hBiAAKAIEIARBGGxqIQMgCyEHA0AgAkUNAiAGRQ0DIAMgAUEIaiAB/V0CAP1WAgACIh39WgIIAiADIB39WwIAACABQQxqIQEgBUEDaiEFIANBGGohAyAEQQFqIQQgAkEBayECIAZBAWshBiAHQQFrIgcNAAsLIAAoAoABIgEgCyAMbCICSQ0NIABBADYCgAEgASACayEDIAhFDQIgASACRg0EIANFDQMgACgCfCIBIAEgAmogA/wKAAAMAwsgBCAKQZjUxgAQ8AcACyAFIAVBA2ogDkGo1MYAEKAFAAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAtqIgI2ArQBIAIgACgCrAFHDQAgAEEANgK0ASAAQQE6ALgBDAALAAtBBEGAgMAAEJoJAAsgCSAeNwM4IAlBQGsiAEH0l8AAIAlBOGoQtwcgABDCCCEBDAQLIAktAAchAQsgDSAUaiENAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCSAJQQdqrUKAgICA8AOENwNAIAlBCGoiAEG3mcAAIAlBQGsQtwcgABC9CCEBDAYLIABBAToAxVMgDUEIaiANIAAoAmgiAiANayIBQQAgASACTRtBB0sbIQ0MAgsgESAUckUNAQsgDSAAKAJoIgNJDQELCyANRQ0AIA0gACgCaCICTQRAQQAhASAAQQA2AmggAiANRg0CIAIgDWsiAgRAIAAoAmQiAyADIA1qIAL8CgAACyAAIAI2AmgMAgtBACANIAJBqKPHABCgBQALQQAhAQsgCUHQAGokACABDwtBACACIAFBqKPHABCgBQALqGcDEn8HfgF7IwBBsNUAayIDJAAgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA/BIIAKtIRUCQAJAAkACQAJAAkACQAJAAkBB6LjFACkDACIYQv8Bg0IEUgRAQhAhFgwBC0IQIRYDQCACIBkgFSAVIBlWG6ciBGsiBkKAwAAgFiAWQoDAAFobpyIFIAUgBksbIgYEQCADQRhqIAEgBGogBvwKAAALIAIgBEYNAkEQQhAgFyAXQhBaG6ciBWsiBCAGIAQgBkkbIgQEQCADQfDIAGogBWogA0EYaiAE/AoAAAsgFyAErXwhFyAGIAxqIQwgGSAGrSIYfCEZIBYgGH0iFlBFDQALDAELA0AgAiAZIBUgFSAZVhunIgRrIgZCgMAAIBYgFkKAwABaG6ciBSAFIAZLGyIGBEAgA0EYaiABIARqIAb8CgAACyACIARGDQFBEEIQIBcgF0IQWhunIgVrIgQgBiAEIAZJIggbIgQEQCADQfDIAGogBWogA0EYaiAE/AoAAAsgCEUEQCAZIAatIhp8IRkgBiAMaiEMIBcgBK18IRcgFiAafSIWUA0CDAELCyAYEMQIIQEgAEGAgICAeDYCACAAIAE2AgQMAQtB3L/IACgCACIGQQBIDQECQAJAIAYgBkEBaiINTARAQdy/yAAgDTYCACAMQRFPBEBBACAMQRBB/LfGABCgBQALA0AgCygC1OtDIQUgCygC0OtDIQYCQCALKALc60MiCEUEQCAFIAxLDQEgBiADQfDIAGogBRD3B0UNBAwBCyAFIAxLDQAgCCALKALY60MiBGohDiADQfDIAGohCANAIAVFDQQgBUEBayEFQfi3xgAgBCAERSAEIA5GciIQGyEHIAgtAAAhCSAGLQAAIQogBkEBaiEGIAhBAWohCEEAIARBAWogEBshBCAKIAkgBy0AAHFGDQALCyALQRRqIgtBuANHDQALQdy/yAAgDUEBazYCACANQQBKBEBBAyEHQQQhAUEDIQgMAwtBnJPHAEHNAEHEk8cAEJMIAAtBpIPHAEEcQcCDxwAQlAgAC0Hcv8gAIA1BAWs2AgAgDUEATARAQZyTxwBBzQBBxJPHABCTCAALAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAtB4OvDAGotAAAiCg4EAAUFAQULQYCAARBuIglFDQUgCUEEay0AAEEDcQRAIAlBAEGAgAH8CwALQYAQEG4iBEUNBiAEQQRrLQAAQQNxBEAgBEEAQYAQ/AsACyADQQA7ASQgA0EANgIgQagHEG4iBkUNByAGQQBB2Ab8CwAgBkEANgKUByAGQQA2AogHIAZBADoAhAcgBkEANgKAByAGIAQ2AvwGIAYgCTYC+AYgBkICNwPwBiAGQgA3A+gGIAZCgICAgCA3A+AGIAZBATYC3AYgBkExNgLYBiAGQQA6AKYHIAYgAykDGDcDmAcgBiADKQEeNwGeB0GAARBuIglFDQggA0IANwLkAiAD/QwAAAAAAAAAAAAAAAAAAAAA/QsC1AIgA0ECNgK4RSADQQA2ArBFIANBvMUAaiADQRhqIgRB1AL8CgAAIANBgAI7AMNIIANBATsBwEggA0KAgICAgiA3A7hIIANCADcDsEggA0EAOgCoSCADQYACOwGkSCADIAY2AqBIIANBADoAnEggA0EANgKYSCADIAk2ApRIIANBgAE2ApBIIAMgATYCyEggAyACNgLMSCADQgA3A9BIIANBADYC2EggA0EAOgDCSCADQeDIAGogA0GwxQBqIgIQuAQgAy0A4EhBKEcNAyADQRA2AthIIANB2NEAaiIBIAJBsAP8CgAAIAQgARC4BCADLQAYIgVBKEcEQCADIAMtABs6ANZRIAMgAy8AGTsB1FEgAygCHCEEIAMpAiAhFSABEJ4BDBkLQYCACCEEAkAgAygCHCIBLQC+AkEDdCICKQOQnEggATUCtAIgATEAvwJ+IhV+IhZC8P////8AVg0AIBZCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhZCIIinDQAgFqciBUH/AXEEQCAFIAVBgH5xQYACaiIFSw0BC0GAgAggBSAFQYCACE8bIQQLQQEhBUH/////ByEGAkAgAikDyJxIIBV+IhVC8P////8AVg0AIBVCB3xCA4inQQFqIgFB/////wNLDQAgAUECdCEIIAFBD3EEQCAIIAhBQHFBQGsiCEsNAQtBgIAIIAggCEGAgAhNGyEGCyAEBEAgBBBuIgVFDQoLIAMgBjYCuAQgA0EANgK0BCADQgA3AqwEIANBADYCkAQgAyAFNgKMBCADIAQ2AogEIANCgICAgICAgICAfzcCnAQgA0KAgICAEDcClAQgA0J/NwOABCADQRhqIgEgA0HY0QBqQagD/AoAACADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQgA3APUDIANBgAI7AdwEIANCADcD0AQgA0KAgICAEDcDyAQgA0EANgLABCADIAMoAoBVNgLYBCADQQI2AtwDIAMoAiBBAkYNCkEnIQUgAy0A3gJBA3QpA4CdSCADNQLUAiIVIAMxAN8Cfn5C8P////8AVg0XIAMoAtgCIQQgA0EQaiABEJUFIAMtABBBA3QpA7idSCADMQARIBV+fiIVQvD/////AFYNFyAErSAVQgd8QgOIfiIWQiCIpyAWp0EASHINFyADQZjVAGogARCqASADLQCYVSIFQShHBEAgAyADLQCbVToA1lEgAyADLwCZVTsB1FEgAygCnFUhBCADKQKgVSEVDBgLIAMoAiAiBEECRg0LIAMgAygCTEEBRgR/IAMoAlAgAy0A0QJBAkZqBUEBCzYC1AQgAyADLwAdOwHUUSADIAMtAB86ANZRIAMtABwhBSADKQIkIRUgAygCLCEBIAMoAjAhCSADLQA0IQcgAy0ANSEIIAMtADYhCiADLQA3IQwgAygCOCECIAMtADwhCyADLQA9IQ8gAy0APiENIAMtAD8hDiADKQNAIRYgAygCGCEGIANBuM0AaiIQIANByABqQZgE/AoAACAGQQJGDRggAyADLQDWUToA90ggAyADLwHUUTsA9UggA0GgyQBqIBBBmAT8CgAAIAMgFjcDmEkgAyAOOgCXSSADIA06AJZJIAMgDzoAlUkgAyALOgCUSSADIAI2ApBJIAMgDDoAj0kgAyAKOgCOSSADIAg6AI1JIAMgBzoAjEkgAyAJNgKISSADIAE2AoRJIAMgFTcC/EggAyAENgL4SCADIAU6APRIIAMgBjYC8EggA0EIaiADQfDIAGoQlQVBHCEKIAMtAAkhCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADLQAIQQFrDgYtASUCLQMAC0EAIQhBASEKIAtoQQFrDgQEAxAPJAtBAiEIQQMhCiALaEEBaw4EBAUPBiMLQQEhCEECIQogC2hBAWsOBAYHDggiC0EDIQhBBCEKIAtoQQFrDgQICQ0KIQtBCSEKDCALQQUhCgwfC0EHIQoMHgtBCyEKDB0LQQYhCAwIC0EGIQoMGwtBCiEKDBoLQQUhCAwFC0EIIQoMGAtBDCEKDBcLQQchCAwCCyADAn5BqMTIAC0AAARAQaDEyAApAwAhFkGYxMgAKQMADAELIANBuM0AahDcBkGoxMgAQQE6AABBoMTIACADKQPATSIWNwMAIAMpA7hNCyIXNwOAAUEAIQRBmMTIACAXQgF8NwMAIANCADcDaCADIAE2AmAgA0ECOgBdIANBgICAgHg2AiAgA0IANwMYIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwIsIANBADYCPCADQQE6AEAgA0EBNgKoASAD/Qz/////AAAAAAAAAAAAAAAA/QsDmAEgA0IANwOQASADQQA6AKwBIAMgFjcDiAEgA0G4oscA/QADAP0LA3AgAyACNgJkIAJBBE8EQCABKAAAIQRCBCEWDA0LIANCBCAVQeCVxwApAwAiGUL/AYNCBFEiBhsiFjcDaCAGDQwgGUIIiCEXIBmnDA0LQQQhCAsgAykD+EghFSADLQD3SCEBIAMtAPZIIQcgAy0A9UghCSADQZjAAGoiCyADQYDJAGpBuAT8CgAAQfAEEG4iBEUNCSAEIBU3AyggBCABOgAnIAQgBzoAJiAEIAk6ACUgBCAFOgAkIAQgBjYCICAEQQA2AhggBEIANwMQIARCgICAgAI3AwggBEIBNwMAIARBMGogC0G4BPwKAAAgBCAIOgDoBEGMuMYAIQYMGAsgA0EYaiADQeDIAGoQkQQgAykDICIWQiCIpyEFIAMpAzghFSAD/VwCNCEcIAMoAjAhAiADLQAvIQ8gAy0ALiELIAMtAC0hCiADLQAsIQggAygCKCEMIAMoAhwhBCADKAIYIQEgFqchBiADQbDFAGoQngEMFQtBBCEBQgAhFUEAIQtBACEIIApBCHQMFQtBgIABELEKAAtBgBAQsQoAC0GoBxCxCgALQQFBgAEQmgkAC0EBIAQQmgkAC0HYr8YAEJkKAAtB2K/GABCZCgALQfAEELEKAAsgA0G4zQBqQQFyIAQQsQQgAyADLQC7TToA2lEgAyADLwC5TTsB2FEgAyADLwG8TTsA21FBBCEEIAMCfgJAIAIgFiAVIBUgFlYbpyIGa0EETwRAQgAhFyABIAZqNQAAIhlCDH0iGEIAIBggGVgbIRkMAQtB4JXHACkDACIYQgiIIRcgGKchBEIAIRkgFSAYQv8Bg0IEUg0BGgsgFkIEfAsiFjcDaCAEQf8BcSIGQQRGDQEgF6dBCHQgBnILNgCbVSADIBdCGIg+AJ9VQQAhBUETIQQMAQsCQAJAAkACQAJAAkACQAJAAkAgAy0A2FFFBEBBBCEEAkACQCACIBYgFSAVIBZWG6ciBmtBBE8EQCABIAZqKAAAIQVCACEXDAELQQAhBUHglccAKQMAIhhCCIghFyAYpyEEIBhC/wGDQgRSDQELIBZCBHwhFQsgAyAVNwNoAkACQCAEQf8BcUEERwRAIANBmNUAakEBciEGIAMgBK1C/wGDIBdCCIaENwK8TSADIAMoAb5NNgCdVSADIAMvAcJNOwChVSADKAG6TSEEQQAhBQwBCyADQbjNAGpBAXIgBRCxBEHSkpmyBCEEIANBmNUAaiEGQQIhBQJAAkACQAJAAkACQAJAAkACQAJAAkAgAy0AuU1BAWsOCwkKAAECAwQFBgcICwtB1qDh4QQhBAwKC0HWoOHBBSEEDAkLQcGcpeoEIQQMCAtBwZy1sgQhBAwHC0HBmMHCBCEEDAYLQcmGjYIFIQQMBQtBxbClsgQhBAwEC0HYmsGCAiEEDAMLIAMoAbpNIQQMAgsgA0G4zQBqIANB4ABqIgYQ5gMgAygCuE0NCyADQfAAaiEJIAMgAy0AzE06AORIIAMgAygCyE0iATYC4EggAykDwE0hGEHSkpmyBCEFIAMpA2ghFwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4LAAkKCwECAwQFBgcIC0HXiomCBSEFDAcLQcGcpeoEIQUMBgtBwZy1sgQhBQwFC0HBmMHCBCEFDAQLQcmGjYIFIQUMAwtBxbClsgQhBQwCC0HYmsGCAiEFDAELIAMoAOFIIQULIAMgBTYCmFVBBCEFQRMhBAwQCyADQbjNAGohAUEAIQVCACEZIAYoAgQiBK0hFQJAAkAgBEL/////DyAGKQMIIhYgFkL/////D1obp2siB0EAIAQgB08bQQNPBEAgBigCACAWIBUgFSAWVhunaiIELwAAIARBAmotAABBEHRyIQVBBCEEDAELQeCVxwApAwAiGkIIiCEZIBqnIQQgGkL/AYNCBFINAQsgFkIDfCEVCyAGIBU3AwgCQCAEQf8BcUEERwRAIAEgBK1C/wGDIBlCCIaENwIADAELIAFBBDoAACABIAU2AgQLIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwQCyADKAK8TUEBcUUEQCADKAJkIgGtIRYgAUL/////DyADKQNoIhUgFUL/////D1obp2siBEEAIAEgBE8bQQJNBEBB4JXHADEAACIXpyEBAkAgF0IEUQRAIAMgFUIDfDcDaCABQQRGDQEMEAsgAyAWNwNoIAFBBEcNDwtBACEEDA0LIAMgFUIDfDcDaCADKAJgIBUgFiAVIBZUG6dqIgEvAAAgAUECai0AAEEQdHIiBEGdg6gBRw0MIANBuM0AaiAGEKQGIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwRCyADLwG6TSEBIANBuM0AaiAGEKQGIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwRCyADIAMvAbpNQf//AHEiBjYCoAEgAyABQf//AHEiATYCnAFBFyEFIAFFIAZFcg0JIANBAjoA2FEgA0G4zQBqIAkgA0HY0QBqIBcgFyAYfBDwAiADQQE6AKoBIANBAjoAXQwRC0ETEG4iAUUNCiABQeHBxQAoAAA2AA8gAUHSwcUA/QAAAP0LAAAgAyABNgCfVSADQRM2AJtVQRghBUETIQQMDwsgA0G4zQBqIAYQzQYgAy0AuE1BBEcEQCADIAMpArhNNwCbVUEAIQVBEyEEDA8LIAMtALlNIgFBL0cNBSADQbjNAGogBhClBiADLQC4TUEERwRAIAMgAykCuE03AJtVQQAhBUETIQQMDwsgAygCvE0iAUEddiIGRQRAIAMgAUEBakH//wBxNgKcASADIAFBDnZBAWpB//8AcTYCoAEgA0EDOgDYUSADQbjNAGogCSADQdjRAGogFyAXIBh8EPACIAMgAUH/////AEs6AKsBIANBAzoAXQwQCyADIAY6AJhVQQwhBUETIQQMDgsgAykD0E0hGyADQbjNAGohAUIAIRZBACEHIwBBEGshCCAGAn4CQCAGKAIEIgogBikDCCIYIAqtIhUgFSAYVhunIgRHBEAgBigCACAEai0AACEHQQQhBAwBC0HglccAKQMAIhpCCIghFiAapyEEIBUgGkL/AYNCBFINARoLIBhCAXwLIhg3AwhBBCEFAkACQCAEQf8BcUEERwRAIAEgFjwABSABIAQ6AAQgAUEAOgAAIAFBCmogFkIoiD0BACABIBZCCIg+AQYMAQtCACEWIAYCfiAKIBggFSAVIBhWG6drQQJNBEBB4JXHACkDACIaQgiIIRYgGqchBSAVIBpC/wGDQgRSDQEaCyAYQgN8CyIYNwMIIAVB/wFxQQRHBEAgCCAFrUL/AYMgFkIIhoQiFTcDACABIAgpAgQ3AgggASAVPgIEIAFBADoAAAwBCyAGAn4CQCAKIBggFSAVIBhWG6ciBGtBA08EQCAGKAIAIARqIgQvAAAgBC0AAkEQdHJBAWohBUEEIQRCACEWDAELQeCVxwApAwAiGkIIiCEWIBqnIQRBASEFIBUgGkL/AYNCBFINARoLIBhCA3wLIhg3AwggBEH/AXFBBEcEQCAIIAStQv8BgyAWQgiGhCIVNwMAIAEgCCkCBDcCCCABIBU+AgQgAUEAOgAADAELAkACQCAKIBggFSAVIBhWG6ciBGtBA08EQCAGKAIAIARqIgQvAAAgBC0AAkEQdHJBAWohBEEEIQpCACEWDAELQeCVxwApAwAiGkIIiCEWIBqnIQpBASEEIBpC/wGDQgRSDQELIBhCA3whFQsgBiAVNwMIIApB/wFxQQRHBEAgCCAKrUL/AYMgFkIIhoQiFTcDACABIAgpAgQ3AgggASAVPgIEIAFBADoAAAwBCyAFrSAErX5CIIhQBEAgAUEAOgAMIAFBADYCCCABIAQ2AgQgASAFNgIAIAEgB0ECdkEBcToAFCABIAdBA3ZBAXE6ABMgASAHQQV2QQFxOgASIAEgB0EEdkEBcToAESABIAdBAXZBAXE6ABUMAgsgAUEJOgAACyABQQI6ABULIAMoAsRNIQQgAygCwE0hCiADKAK4TSEBIAMtAM1NIgdBAkYNAiADIAMoArxNIhA2AqABIAMgATYCnAEgAyAXIBt8IhU3A2ggAy8Bzk0hESADLQDMTSENIAMtAMtNIQIgAy0Ayk0hEiADLQDJTSEPIAMtAMhNIRMgFSAVIBl8IhlaDQUgA0G8xQBqIQUCQAJAAn8CQAJAAkADQCADQdjRAGogBhDmAyADKALYUQRAIAMtANxRIgUNBiADLQDgUUEBaw4DAgMEBgsgFUIIfCEXIAMpA/BRIRUCQAJAAkAgAy0A6FEiCEELRwRAIAMpA+BRIRYgAyADKADpUTYAuU0gAyAIOgC4TSADQbDFAGogCSADQbjNAGoiCxCdBCADLQC8RUEMRwRAIAMoArhFIQwgAykDsEUhGCADIAUtAAQ6ALxNIAMgBSgCADYCuE0gAyAWIBd8NwPITSADIBc3A8BNIAwgGCALENIFCyAIQQZGDQELIBVCAFMgAykDaCIYIBV8IhYgGFRzRQ0BIANCgoCAgIDd5wg3AJtVQQAhBQwWCyADIAMoAqQBQQFqNgKkASAWQhhUBEBBGyEFDBYLIAMpA2giFkJ0WgRAIANCgoCAgIDd5wg3AJtVQQAhBQwWCyADIBZCDHw3A2ggA0G4zQBqIAYQpQYgAy0AuE1BBEcEQCADIAMpArhNNwCbVUEAIQUMFgsgAyADKQOQASADNQK8TUL///8Hg3w3A5ABIAMtAKoBRQRAIANBuM0AaiAGEOYDIAMoArhNDRUCQAJAIAMtAMhNQQJrDgYAAQEBAQABCyADQQE6AKoBCyAVQhh9IhZCAFMgFiADKQNoIhh8IhYgGFRzRQ0BIANCgoCAgIDd5wg3AJtVQQAhBQwWCyAVQhB9IhZCAFMgFiADKQNoIhh8IhYgGFRzDQELIAMgFjcDaCAVIBd8IhUgGVQNAQwNCwsgA0KCgICAgN3nCDcAm1VBACEFDBILIAMtAOFRDAILIAMoAuRRLQAIDAELIAMoAuRRLQAIC0H/AXFBJUYNAQsgAyADKADkUTYAn1UgAyADKQDdUTcDmFUgAygC6FEhBAwNCyADIAMpA+BRNwO4TSADQbjNAGoQ7AUMBQtB1qDhgQIhBAsgBiAENgAADAQLIAMgCjYAn1UgAyADKAK8TTYAm1UgAyABQRh2OgCaVSADIAFBCHY7AZhVIAEhBQwJCyADQdKSmbIENgKYVUEEIQVBEyEEDAkLIAMgAToAmFVBCyEFQRMhBAwICyADIAMtAKoBBH9BAQUgCUG5jMYAEMYECzoAqgEgB0EBcUUNAUEDIQUgCUH8jMYAEMYERQ0AIAlB5IzGABDGBA0BC0ETIQQMBgsCQCACQQFxRQ0AIAlBgY3GABDGBA0AQQMhBUETIQQMBgsCQCANQQFxRQ0AIAlBho3GABDGBA0AQQMhBUETIQQMBgsCQAJAAkACQAJAAkAgB0EBcUUEQCAJQbmMxgAQxgQgCUG0jMYAEMYERw0BQQMhBUETIQQMDAsgA0EFOgC4TSADQdjRAGogA0EYaiADQbjNAGpBBhD4BAJAIAMtANhRIgVBGmsOBAUEBAAECyADKALcUUGAgICAeEYEQEEDIQUMCwsgAyADQdzRAGoiCCgCCCIFNgLITSADIAgpAgA3A8BNAkACQAJAIAVBBE8EQCADQgQ3A7hNIAMoAsRNKAAAIQoMAQsgA0IEIAWtQeCVxwApAwAiFUL/AYMiFkIEURs3A7hNIBZCBFINAQsgA0GwxQBqIQVBACEOQgAhFyADQbjNAGoiCCgCECILrSEVAkACQCALQv////8PIAgpAwAiFiAWQv////8PWhunayIUQQAgCyAUTxtBAk8EQCAIKAIMIBYgFSAVIBZWG6dqLwAAIQ5BBCELDAELQeCVxwApAwAiGUIIiCEXIBmnIQsgGUL/AYNCBFINAQsgFkICfCEVCyAIIBU3AwACQCALQf8BcUEERwRAIAUgC61C/wGDIBdCCIaENwIADAELIAVBBDoAACAFIA47AQILIAMtALBFQQRGDQEgAykDsEUhFQsgAyAVNwCbVSADKALATSIEBEAgAygCxE0gBEEBEMEHC0EAIQUMCwsgAyADLwGyRTsBqAEgCUHkjMYAELYEIgVFDQEgAyAFKQMAQgh9NwMYIAMoAsBNIgVFDQAgAygCxE0gBUEBEMEHCyAJQeSMxgAQtgQiBQ0BDAQLQYyNxgAQmQoACyAFKQMIIRYgAyAFKQMAIhVCEHw3A2ggA0G4zQBqIgggBhDmAwJAIAMoArhNRQRAIANBxM0AaiEFIAMgAy0AzE06AIxVIAMgAygCyE02AohVIAMpA9BNIAMpA8BNIRggCCAJIANBiNUAahCdBAJAIAMtAMRNQQxHBEAgAyAFKAIAIgs2AthRIAMgBS0ABCIMOgDcUSADKALATSADKQO4TSADIAw6ALxNIAMgCzYCuE0gAyAYIBVCGHwiGXw3A8hNIAMgGTcDwE0gCBDSBQwBCyAVQhh8IRkLIBl8Qgh8IhUgFlYNBCADQbjNAGogBhDmAyADKAK4TUEBRw0BCwwHCyADIAMtAMxNOgCMVSADIAMoAshNNgKIVSADKQPATSEWIANBuM0AaiIGIAkgA0GI1QBqEJ0EIAMtAMRNQQxGDQIgAyAFKAIAIgk2AthRIAMgBS0ABCIFOgDcUSADKALATSADKQO4TSADIAU6ALxNIAMgCTYCuE0gAyAVNwPATSADIBUgFnw3A8hNIAYQ0gUMAgsgAyADKADgUTYAn1UgAyADKQDZUTcDmFUgAygC5FEhBAwGCyADQdjRAGoQuwRBGyEFDAULIAMgETsBXiADIAc6AF0gAyANOgBcIAMgAjoAWyADIBI6AFogAyAPOgBZIAMgEzoAWCADIAQ2AlQgAyAKNgJQIAMgEDYCTCADIAE2AkggAyAPOgCrAQwGC0EBQRMQmgkACyADIAQ7AZhVIAMgBEEQdjoAmlVBESEFQRMhBAwDCyADQdSVxwA2AJ9VIANBAjYAm1VBACEFQRMhBAwCCyADIAMtAL9NOgCaVSADIAMvAL1NOwGYVSADIAMpA8BNNwCbVSADKALITSEEIAMtALxNIQULIAVB/wFxQR1GDQELIAMgAy0AmlU6AK5VIAMgAy8BmFU7AaxVIAMvAJtVIQEgAy8AnVUhCCADKACfVSEGIAMoAiAiAkEASgRAIAMoAiQiCUEEaygCACIHQXhxIgxBBEEIIAdBA3EiBxsgAmpJDQ8gB0EAIAwgAkEnaksbDRAgCRCiAgsgAygCdCICRQ0BIAIgAkEYbCIJakEhaiICRQ0BIAMoAnAgCWsiCUEcaygCACIHQXhxIgxBBEEIIAdBA3EiBxsgAmpJDQ4gB0EAIAwgAkEnaksbRQRAIAlBGGsQogIMAgsMDwsgAyADLwAlOwGsVSADIAMtACc6AK5VIAMpAxghFiADLQAkIQUgA/0AAzAhHCADKAIwIQQgAygCQCEIIAMtAEQhBiADLQBFIQcgAy0ARiEJIAMtAEchCiADKQNIIRcgAykDKCEVIAMoAiAhASADQfDIAGogA0HQAGpB4AD8CgAAIAFBgYCAgHhHDQEgFUIgiKchBiAVQhCIpyEIIBWnIQELIAGtQv//A4MgCK1C//8Dg0IQhiAGrUIghoSEIRUgBUH/AXEEf0EQEG4iCEUNAiAIIAU6AAAgCCADLwGsVTsAASAIIAMtAK5VOgADIAggBDYCDCAIIBU3AgRCgAYhFUEABUEFCyEBIAhBGHYhDyAIQRB2IQsgCEEIdiEKIBVCIIinIQlB1O/DACECIBWnDAcLIANB0MQAaiILIANB8MgAakHgAPwKAABBoAEQbiIERQ0BIAQgBToADCAEIAE2AgggBCAWNwMAIAQgAy8BrFU7AA0gBCADLQCuVToADyAEIBc3AzAgBCAKOgAvIAQgCToALiAEIAc6AC0gBCAGOgAsIAQgCDYCKCAEIBz9CwMYIAQgFTcDECAEQThqIAtB4AD8CgAAIARBCDoAmAFBxLjGACEGDAcLQRAQsQoAC0GgARCxCgALIANB8MgAahDTA0EEIQhBACEEQQQhAQwCCyADQRhqENMDCyADIAU6AIhVIAMgAy8B1FE7AIlVIAMgAy0A1lE6AItVIAMgFTcCkFUgAyAENgKMVSADQRhqIANBiNUAahCRBCADKQM4IRUgA/1cAjQhHCADKAIwIQIgAy0ALyEPIAMtAC4hCyADLQAtIQogAy0ALCEIIAMoAighDCADKAIkIQUgAygCICEGIAMoAhwhBCADKAIYIQELIAFBBkYNASAGIQkgBAshByAKQf8BcSAPQRB0IAtB/wFxQQh0cnIhCgwBCwJAAn8gBCAGKAIsERQAIhVCgICAgAJWBEBBACEFQQMhAUEDDAELIANBADYCiEkgA0IANwOASSADQoCAgIACIBV9NwP4SCADQgE3A/BIIANBGGogBCADQfDIAGogBigCMBEFACADKAIYIgFBBkYNASADKAIsIghBCHYhCiADKQM4IRUgA/1cAjQhHCADKAIwIQIgAygCKCEMIAMoAiQhBSADKAIcIQcgAygCIAshCSAGKAIAIgsEQCAEIAsRAwALIAYoAgQiBkUNASAEQQRrKAIAIgtBeHEiDUEEQQggC0EDcSILGyAGakkNBCALQQAgDSAGQSdqSxsNBSAEEKICDAELIAMgBCAGKAIMEQEAIAMoAgQhCiADKAIAIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCAGKAIQEQQAQf8BcUEBaw4JAQIDBAUGBwgJAAsgA0EYaiAEIAYQtwQgAygCJCEFIAMoAiAhCSADKAIcIQcgAygCGCIBQQZHDR8CQCAKrSIWIAitfiIVQiCIUARAIBWnIgEgBU0NAQtBACEMQQIhASAHRQ0fIAkgB0EBEMEHQYCAgIB4IQcMIQsgB0GAgICAeEcNCQwdCyADQRhqIAQgBhC3BCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNHkEAIQwCQCAIQQBIDQAgCq0iFSAIQQF0rX4iFkIgiKcNACAWpyAFTQ0KC0ECIQEgB0UNHSAJIAdBARDBB0GAgICAeCEHDB8LIANBGGogBCAGELcEIAMoAiQhBSADKAIgIQkgAygCHCEHIAMoAhgiAUEGRw0dAkACQCAIrSIWQgN+IhVCIIinDQAgFaetIAqtIhV+IhdCIIinDQAgF6cgBU0NAQtBACEMQQIhASAHRQ0dIAkgB0EBEMEHQYCAgIB4IQcMHwsgB0GAgICAeEYNGyAWQgN+IhZCIIinDSUgFqetIBV+IhZCIIinDSUgFqciASAFTQ0JDCMLIANBGGogBCAGELcEIAMoAiQhBSADKAIgIQkgAygCHCEHIAMoAhgiAUEGRw0cAkACQCAIQf////8DSw0AIAhBAnStIAqtfiIVQiCIpw0AIBWnIAVNDQELQQAhDEECIQEgB0UNHCAJIAdBARDBB0GAgICAeCEHDB4LIAdBgICAgHhGDRogByEGIAkhBAwYCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGyAKrSIWIAitfiIVQiCIUARAIBWnIgEgBU0NCQtBACEMIAdFDRhBAiEBIAkgB0EBdEECEMEHQYCAgIB4IQcMHAsgA0EYaiAEIAYQpwQgAygCJCEFIAMoAiAhCSADKAIcIQcgAygCGCIBQQZHDRpBACEMAkAgCEEASA0AIAqtIhUgCEEBdK1+IhZCIIinDQAgFqcgBU0NCQsgB0UNF0ECIQEgCSAHQQF0QQIQwQdBgICAgHghBwwbCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGQJAAkAgCK0iFkIDfiIVQiCIpw0AIBWnrSAKrSIVfiIXQiCIpw0AIBenIAVNDQELQQAhDCAHRQ0XQQIhASAJIAdBAXRBAhDBB0GAgICAeCEHDBsLIAdBgICAgHhGDRcgFkIDfiIWQiCIpw0hIBanrSAVfiIWQiCIpw0hIBanIgEgBU0NCAwfCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGAJAIAhB/////wNLDQAgCq0iFiAIQQJ0rX4iFUIgiKcNACAVpyAFTQ0JC0EAIQwgB0UNFUECIQEgCSAHQQF0QQIQwQdBgICAgHghBwwZCyADQRhqIAQgBhCoBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNFwJAAkAgCK0iFkIDfiIVQiCIpw0AIBWnrSAKrSIVfiIXQiCIpw0AIBenIAVNDQELQQAhDCAHRQ0VQQIhASAJIAdBAnRBBBDBB0GAgICAeCEHDBkLIAdBgICAgHhGDRUgFkIDfiIWQiCIpw0fIBanrSAVfiIWQiCIpw0fIBanIgEgBU0NCAwdCyADQRhqIAQgBhCoBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNFgJAIAhB/////wNLDQAgCq0iFiAIQQJ0rX4iFUIgiKcNACAVpyAFTQ0JC0EAIQwgB0UNE0ECIQEgCSAHQQJ0QQQQwQdBgICAgHghBwwXCyAVQiCIpw0dIAEgBUsNGyADQRhqIAkgAUECEIoBIAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBZ+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwcCyAHQYCAgIB4Rg0SIAhBAXStIBV+IhZCIIinDRwgFqciASAFSw0aIANBGGogCSABQQMQigEgAygCHCEEAkACQAJAIAhB/////wNLDQAgCEECdK0gFX4iFUIgiKcNACADKAIgIgUgFadPDQELIAMoAhgiAEUNASAEIABBARDBBwwBCyADKAIYIgZBgICAgHhHDQkLDBsLIANBGGogCSABQQAQigEgAygCHCEEAkACQAJAIAhB/////wNLDQAgCEECdK0gFX4iFUIgiKcNACADKAIgIgUgFadPDQELIAMoAhgiAEUNASAEIABBARDBBwwBCyADKAIYIgZBgICAgHhHDQkLDBoLIAdBgICAgHhGDRAgFUIgiKcNGiABIAVLDRggA0EYaiAJIAFBAhB/IAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBZ+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwZCyAHQYCAgIB4Rg0PIAhBAXStIBV+IhZCIIinDRkgFqciASAFSw0XIANBGGogCSABQQMQfyADKAIcIQQCQAJAAkAgCEH/////A0sNACAIQQJ0rSAVfiIVQiCIpw0AIAMoAiAiBSAVp08NAQsgAygCGCIARQ0BIAQgAEEBEMEHDAELIAMoAhgiBkGAgICAeEcNCQsMGAsgA0EYaiAJIAFBABB/IAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBV+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwXCyAHQYCAgIB4Rg0NIAhBAnStIBZ+IhVCIIinDRcgFaciASAFSw0VIANBGGogCSABQQEQfyADKAIcIQQCQCADKAIgIgUgAUkEQCADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwWCyADQRhqIAkgAUEAELQCIAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBV+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwVCyAHQYCAgIB4Rg0LIAhBAnStIBZ+IhVCIIinDRUgFaciASAFSw0TIANBGGogCSABQQEQtAIgAygCHCEEIAMoAiAiBSABSQRAIAMoAhgiAEUNFSAEIABBARDBBwwVCyADKAIYIgZBgICAgHhGDRQgB0UNCSAJQQRrKAIAIgFBeHEiAiAHQQJ0IgdBBEEIIAFBA3EiARtqSQ0RIAFFIAIgB0Enak1yDQgMEgsgB0UNCCAJQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAHakkNECABRSACIAdBJ2pNcg0HDBELIAdFDQcgCUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgB2pJDQ8gAUUgAiAHQSdqTXINBgwQCyAHRQ0GIAlBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIAdqSQ0OIAFFIAIgB0Enak1yDQUMDwsgB0UNBSAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0NIAFFIAIgB0Enak1yDQQMDgsgB0UNBCAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0MIAFFIAIgB0Enak1yDQMMDQsgB0UNAyAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0LIAFFIAIgB0Enak1yDQIMDAsgB0UNAiAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0KIAFFIAIgB0Enak1yDQEMCwsgB0UNASAJQQRrKAIAIgFBeHEiAiAHQQJ0IgdBBEEIIAFBA3EiARtqSQ0JIAFFDQAgAiAHQSdqSw0KCyAJEKICCyAAIAo2AhAgACAINgIMIAAgBTYCCCAAIAQ2AgQgACAGNgIADAULQQIhAUGAgICAeCEHDAMLQQAhDEECIQFBgICAgHghBwwCC0GAgICAeCEHDAELIAMoAiwiCEEIdiEKIAMpAzghFSAD/VwCNCEcIAMoAjAhAiADKAIoIQwLIAMgFTcDOCADIBz9WAA3AyADIBz9WAA2AiADIBz9WAA1ASADIBz9WAA0ACADIAI2AjAgAyAMNgIoIAMgBTYCJCADIAk2AiAgAyAHNgIcIAMgATYCGCADIAhB/wFxIApBCHRyNgIsIwBBIGsiCSQAIAlBCGoiARCbCSMAQTBrIgIkACACIANBGGoiBikCIDcCKCACIAb9AAIQ/QsCGCACIAb9AAIA/QsCCEHIABBuIgZFBEBByAAQsQoACyAGQdTHxgA2AgAgBiACKQIENwIcIAYgAv0AAgz9CwIkIAYgAv0AAhz9CwI0IAYgAigCLDYCRCAGIAEpAgA3AgQgBiAB/QACCP0LAgwgAkEwaiQAIAlBIGokACAAQYCAgIB4NgIAIAAgBjYCBAsgA0Gw1QBqJAAPCwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC0EAIAEgBUGQ8MMAEKAFAAtBoPDDAEEvQdDwwwAQlAgAC0GA8MMAEJkKAAvrWwQUfxF9B3sEfiMAQZAFayIJJAAgACgCCCEVIAlBADYC0AMgCUEANgLUBCAJIAA2AqgBIAkgASACQQJ0IgpqIhM2AqQBIAkgATYCoAFBICEHIAlB1ARqIgghDiAJQdQDaiIEIQYCfwJAAkACQAJAAkACQAJAAkAgAkEhTwRAIAlBEGogCUHQA2pBfyACQQFrZ3ZBAWoQhQQgCSgCECIFQYGAgIB4RwRAIAUNBUGIqcYAQRFB2NvGABCoCQALAn8gCSgC1AQiB0EhSQRAIAchBUEgIQcgBAwBCyAJKALUAyEFIAQhDiAJKALYAwshBiAFIAdPDQELIAYgBUECdGohBgNAIAlBCGogCUGgAWoQ2AQgCSgCCEEBcUUNAiAGIAkqAgw4AgAgBkEEaiEGIAcgBUEBaiIFRw0ACyAHIQULIA4gBTYCACAJIAkoAqgBNgIgIAkgCSkCoAE3AxgDQCAJIAlBGGoQ2AQgCSgCAEEBRw0CAn8gCSgC1AQiB0EhSQRAIAchBiAEIQ5BICEHIAgMAQsgCSgC1AMhBiAJKALYAyEOIAQLIQUgCSoCBCEYIAYgB0YEQCAJQdADahDoBiAJKALUAyEGIAkoAtgDIQ4gBCEFCyAOIAZBAnRqIBg4AgAgBSAFKAIAQQFqNgIADAALAAsgDiAFNgIACyAJQRhqIAlB0ANqQYgB/AoAACAJQRxqIRIgCSgCHCAJKAKcASIIIAhBIEsiDhsiBwR9IAkoAiAgEiAOGyEEIAdBA3EhBQJAAkAgB0EESQRAQwAAAIAhGEEAIQcMAQsgB0F8cSEMQwAAAIAhGEEAIQcgBCEGA0AgGCAGKgIAkiAGQQRqKgIAkiAGQQhqKgIAkiAGQQxqKgIAkiEYIAZBEGohBiAMIAdBBGoiB0cNAAsgBUUNAQsgBCAHQQJ0aiEGA0AgGCAGKgIAkiEYIAZBBGohBiAFQQFrIgUNAAsLQ2BCog0gGCAYIBhcGyIYQ2BCog0gGENgQqINXhsFQ2BCog0LIScCQCAJKAIcIAggDhsiBUUNACAJKAIgIBIgDhsiBCEGIAVBAnQiCEEEayIFQQxPBEAgBCAFQQJ2QQFqIgxB/P///wdxIg5BAnRqIQYgJ/0TISkgDiEHIAQhBQNAIAUgBf0AAgAgKf3nAf0LAgAgBUEQaiEFIAdBBGsiBw0ACyAMIA5GDQELIAQgCGohBQNAIAYgBioCACAnlTgCACAGQQRqIgYgBUcNAAsLIAJFBEAgCUIANwOwAf0MAAAAAAAAAAAAAAAAAAAAACEpQQAhBkEADAYLIAkoAhwgCSgCnAEiBSAFQSBLIgUbIQYgACgCBCELIAAoAgghDEF/IQggCSgCICASIAUbIg4hByAKIQQgASEFA0AgBSgCACINIAxPDQIgBiAIQQFqIghGDQMgBUEEaiEFIAsgDUEsbGoiDSoCDCEaIA0qAgghHCANKgIQIAcqAgAhGCAJQdADaiANELQDIAn9AATQAyIp/R8CIBggLP0fAhDeBv0TICn9HwAgGCAs/R8AEN4G/SAAICn9HwEgGCAs/R8BEN4G/SABISwgGCAt/R8CEN4G/RMgHCAYIC39HwAQ3gb9IAAgGiAYIC39HwEQ3gb9IAEhLSAHQQRqIQcgBEEEayIEDQALIANDAAAAP5QiAyADlCEb/QwAAAAAAAAAAAAAAAAAAAAAISlDAAAAACEYQX8hB0MAAAAAIRogASEFA0AgDCAFKAIAIgRNBEAgBCAMQcDOxgAQ8AcACyAGIAdBAWoiB0YNBCALIARBLGxqIgRBEGogBP1dAgj9VgIAAiErIA4qAgAhAyAJQdADaiIIIAQQrAMgCf0ABNADISogCCAEKQIAENMCIBsgKyAt/eUBIi79HwAiHyAflCAqICn9DQgJCgsICQoLCAkKCwABAgMgCf0ABNADIiv9HwAiHCAr/R8CIh0gHZIiGZQiIyAr/R8DIiAgK/0fASIeIB6SIiGUIiSS/RMgHiAZlCIlICAgHCAckiIilCImk/0gAUMAAIA/IBwgIpQiIiAeICGUIiiSk/0gAv3mASIr/R8AIh4gHpQgKiAp/Q0EBQYHBAUGBwQFBgcAAQIDIBwgIZQiISAgIBmUIiCT/RNDAACAPyAiIB0gGZQiGZKT/SABICUgJpL9IAL95gEiL/0fACIcIByUICogKf0NAAECAwABAgMAAQIDAAECA0MAAIA/ICggGZKT/RMgISAgkv0gASAjICST/SAC/eYBIir9HwAiGSAZlJKSkpIgAyAp/R8AEN4G/RMgGyAu/R8BIh0gHZQgK/0fASIgICCUIC/9HwEiISAhlCAq/R8BIiMgI5SSkpKSIAMgKf0fARDeBv0gASAbIC79HwIiJCAklCAr/R8CIiUgJZQgL/0fAiIiICKUICr9HwIiJiAmlJKSkpIgAyAp/R8CEN4G/SACIB8gHZQgHiAglCAcICGUIBkgI5SSkpIgAyAp/R8DEN4G/SADISkgBUEEaiEFIB0gJJQgICAllCAhICKUICMgJpSSkpIgAyAYEN4GIRggHyAklCAeICWUIBwgIpQgGSAmlJKSkiADIBoQ3gYhGiAOQQRqIQ4gCkEEayIKDQALDAQLIAkoAhQQsQoACyANIAxB2NHGABDwBwALIAYgBkGwzsYAEPAHAAsgBiAGQdDOxgAQ8AcACyAJIBg4ArQBIBi8Qf////8HcUH////7B0shBiAJIBo4ArABIBq8Qf////8HcUH////7B0sLIQUgCSAp/QsEoAEgKf3gASIq/QwAAIB/AACAfwAAgH8AAIB//UQgKv0MAACAfwAAgH8AAIB/AACAf/1D/VD9TSIq/RsAQQFxICr9xwH9GwJBAXFyRSAp/R8CvEH/////B3FB////+wdNcUUEQEHgzsYAQewAQczPxgAQqAkACwJ9AkACQCAp/R8DvEH/////B3FB////+wdLIAVyIAZyQQFxRQRAIAlB0ANqIAlBoAFqELABQwAAAAAgCSoC0AMiAyADIANcGyIDQwAAAAAgA0MAAAAAXhuRIgNDAACAf14gA0MAAIB/XXJFDQFDAAAAACAJKgLUAyIYIBggGFwbIhhDAAAAACAYQwAAAABeG5EiGEMAAIB/XiAYQwAAgH9dckUNAUMAAAAAIAkqAtgDIhogGiAaXBsiGkMAAAAAIBpDAAAAAF4bkSIaQwAAgH9dRQ0BIBr9EyAD/SAAIBj9IAH9DGBCog1gQqINYEKiDWBCog396wEhKiAJ/QAEgAQiKf3hASAp/R8CIhuMIgP9IAIgA/0gAyApIAkqAugDIhogCSoC8AMiAyAp/R8BIhyUIAkqAvQDIhkgKf0fACIflJOUIAkqAuADIh4gGSAblCAJKgL4AyIYIByUk5QgCSoC5AMiHCADIBuUIBggH5STlJOSQwAAAABdGyIp/R8BIRsgKf0fACEfICn9HwIiHUMAAAAAX0UEQCAdQwAAgD+SIR0gHiAZkiIZQwAAAABfRQRAIBkgHZIiGUMAAAA/IBmRlSIglCEZIBwgA5MgIJQhHiAfIBqTICCUIR0gGCAbkyAglAwFCyAcIAOTQwAAAD8gHSAZkyIckZUiA5QhGSAcIAOUIR4gGCAbkiADlCEdIBogH5IgA5QMBAtDAACAPyAdkyEdIBkgHpMiGUMAAAAAX0UNAiAYIBuTQwAAAD8gHSAZkyIbkZUiGJQhGSAaIB+SIBiUIR4gHCADkiAYlCEdIBsgGJQMAwtB3M/GAEHsAEHI0MYAEKgJAAtB+MvGAEHWAEHY0MYAEKgJAAsgHyAak0MAAAA/IBkgHZIiH5GVIhqUIRkgGCAbkiAalCEeIB8gGpQhHSAcIAOSIBqUCyAq/R8AIgMgKv0fASIYlEOPws0/EIILIRsgAyAq/R8CIhqUQ4/CzT8QggshHyAYIBqUQ4/CzT8QggsgGyAfkpJDAABAQJVD5kAfPxCCCyEbIAAoAgghDSACBH8gDSABKAIAIgVNBEAgBSANQejQxgAQ8AcACyAAKAIEIAVBLGxqIgUoAhghFCAFKAIUBUEACyEWQwAAekRDvTeGNSAnIBtD2w9JQZSVIhsgG0O9N4Y1XRsiGyAbQwAAekReG7wiB0H///8DcSEEIAdBgICAgHhxIQYCQCAHQYCAgPwHcSIFQYCAgPwHRgRAIARBDXYgBkEQdnJBgARBACAEG3JBgPgBciEODAELIAZBEHYhDiAFQYCAgLgETQRAIAVBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIAVBDXYgBEENdmpBgIABaiAOcmohDgwCCyAFQYCAgJgDSQ0BIARBgICABHIiB0H+ACAFQRd2IgRrdiEFIAdBHSAEayIEdkEBcQR/IAVBAyAEdEEBayAHcUEAR2oFIAULIA5yIQ4MAQsgDkGA+AFyIQ4LICz9GwAiBEH///8DcSEGIARBgICAgHhxIQogLP0bASEFAkAgBEGAgID8B3EiB0GAgID8B0YEQCAGQQ12IApBEHZyQYAEQQAgBhtyQYD4AXIhCgwBCyAKQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIARBDHYgBEH/3wBxQQBHcSAHQQ12IAZBDXZqQYCAAWogCnJqIQoMAgsgB0GAgICYA0kNASAGQYCAgARyIgRB/gAgB0EXdiIGa3YhByAEQR0gBmsiBnZBAXEEfyAHQQMgBnRBAWsgBHFBAEdqBSAHCyAKciEKDAELIApBgPgBciEKCyAs/RsCIQcgBUH///8DcSEGIAVBgICAgHhxIQgCQCAFQYCAgPwHcSIEQYCAgPwHRwRAIAhBEHYhCCAEQYCAgLgETQRAIARBgICAxANPBEAgBUEMdiAFQf/fAHFBAEdxIARBDXYgBkENdmpBgIABaiAIcmohCAwDCyAEQYCAgJgDSQ0CIAZBgICABHIiBUH+ACAEQRd2IgZrdiEEIAVBHSAGayIGdkEBcQR/IARBAyAGdEEBayAFcUEAR2oFIAQLIAhyIQgMAgsgCEGA+AFyIQgMAQsgBkENdiAIQRB2ckGABEEAIAYbckGA+AFyIQgLIAdB////A3EhBiAHQYCAgIB4cSEEAkAgB0GAgID8B3EiBUGAgID8B0cEQCAEQRB2IQQgBUGAgIC4BE0EQCAFQYCAgMQDTwRAIAdBDHYgB0H/3wBxQQBHcSAFQQ12IAZBDXZqQYCAAWogBHJqIQQMAwsgBUGAgICYA0kNAiAGQYCAgARyIgdB/gAgBUEXdiIGa3YhBSAHQR0gBmsiBnZBAXEEfyAFQQMgBnRBAWsgB3FBAEdqBSAFCyAEciEEDAILIARBgPgBciEEDAELIAZBDXYgBEEQdnJBgARBACAGG3JBgPgBciEECyADEOAFvCIGQf///wNxIQwgBkGAgICAeHEhBwJAIAZBgICA/AdxIgVBgICA/AdGBEAgDEENdiAHQRB2ckGABEEAIAwbckGA+AFyIQcMAQsgB0EQdiEHIAVBgICAuARNBEAgBUGAgIDEA08EQCAGQQx2IAZB/98AcUEAR3EgBUENdiAMQQ12akGAgAFqIAdyaiEHDAILIAVBgICAmANJDQEgDEGAgIAEciIGQf4AIAVBF3YiDGt2IQUgBkEdIAxrIgx2QQFxBH8gBUEDIAx0QQFrIAZxQQBHagUgBQsgB3IhBwwBCyAHQYD4AXIhBwsgGBDgBbwiDEH///8DcSELIAxBgICAgHhxIQUCQCAMQYCAgPwHcSIGQYCAgPwHRwRAIAVBEHYhBSAGQYCAgLgETQRAIAZBgICAxANPBEAgDEEMdiAMQf/fAHFBAEdxIAZBDXYgC0ENdmpBgIABaiAFcmohBQwDCyAGQYCAgJgDSQ0CIAtBgICABHIiDEH+ACAGQRd2IgtrdiEGIAxBHSALayILdkEBcQR/IAZBAyALdEEBayAMcUEAR2oFIAYLIAVyIQUMAgsgBUGA+AFyIQUMAQsgC0ENdiAFQRB2ckGABEEAIAsbckGA+AFyIQULIBoQ4AW8IgtB////A3EhDyALQYCAgIB4cSEMAkAgC0GAgID8B3EiBkGAgID8B0cEQCAMQRB2IQwgBkGAgIC4BE0EQCAGQYCAgMQDTwRAIAtBDHYgC0H/3wBxQQBHcSAGQQ12IA9BDXZqQYCAAWogDHJqIQwMAwsgBkGAgICYA0kNAiAPQYCAgARyIgtB/gAgBkEXdiIPa3YhBiALQR0gD2siD3ZBAXEEfyAGQQMgD3RBAWsgC3FBAEdqBSAGCyAMciEMDAILIAxBgPgBciEMDAELIA9BDXYgDEEQdnJBgARBACAPG3JBgPgBciEMC7wiD0H///8DcSEQIB28IQYCfiAQQQ12IhcgD0GAgICAeHEiEUEQdnJBgARBACAQG3JBgPgBcq0gD0GAgID8B3EiC0GAgID8B0YNABogEUEQdiERAkAgC0GAgIC4BE0EQCAXIAtBDXZqQYCAAWogEXKtIA9BDHYgD0H/3wBxQQBHca18IAtBgICAxANPDQIaIAtBgICAmANJDQEgEEGAgIAEciIPQf4AIAtBF3YiEGt2IQsgD0EdIBBrIhB2QQFxBH8gC0EDIBB0QQFrIA9xQQBHagUgCwsgEXKtDAILIBFBgPgBcq0MAQsgEa0LITAgHrwhCyAGQf///wNxIRAgBkGAgICAeHEhEQJ+IAZBgICA/AdxIg9BgICA/AdHBEAgEUEQdiERIA9BgICAuARNBEAgD0ENdiAQQQ12akGAgAFqIBFyrSAGQQx2IAZB/98AcUEAR3GtfCAPQYCAgMQDTw0CGiAPQYCAgJgDTwRAIBBBgICABHIiBkH+ACAPQRd2IhBrdiEPIAZBHSAQayIQdkEBcQR/IA9BAyAQdEEBayAGcUEAR2oFIA8LIBFyrQwDCyARrQwCCyARQYD4AXKtDAELIBFBEHYgEEENdnJBgARBACAQG3JBgPgBcq0LITEgGbwhBiALQf///wNxIRAgC0GAgICAeHEhEQJ+IAtBgICA/AdxIg9BgICA/AdHBEAgEUEQdiERIA9BgICAuARNBEAgD0ENdiAQQQ12akGAgAFqIBFyrSALQQx2IAtB/98AcUEAR3GtfCAPQYCAgMQDTw0CGiAPQYCAgJgDTwRAIBBBgICABHIiC0H+ACAPQRd2IhBrdiEPIAtBHSAQayIQdkEBcQR/IA9BAyAQdEEBayALcUEAR2oFIA8LIBFyrQwDCyARrQwCCyARQYD4AXKtDAELIBFBEHYgEEENdnJBgARBACAQG3JBgPgBcq0LITIgBkH///8DcSEPIAZBgICAgHhxIRACfiAGQYCAgPwHcSILQYCAgPwHRwRAIBBBEHYhECALQYCAgLgETQRAIAtBDXYgD0ENdmpBgIABaiAQcq0gBkEMdiAGQf/fAHFBAEdxrXwgC0GAgIDEA08NAhogC0GAgICYA08EQCAPQYCAgARyIgZB/gAgC0EXdiIPa3YhCyAGQR0gD2siD3ZBAXEEfyALQQMgD3RBAWsgBnFBAEdqBSALCyAQcq0MAwsgEK0MAgsgEEGA+AFyrQwBCyAQQRB2IA9BDXZyQYAEQQAgDxtyQYD4AXKtCyEzIAAoAgAgDUYEQCMAQRBrIgYkACAGQQRqIAAoAgAiCyAAKAIEQQQgC0EBdCILIAtBBE0bIgtBBEEsEM4GIAYoAgRBAUYEQCAGKAIIIAYoAgwQmgkACyAGKAIIIQ8gACALNgIAIAAgDzYCBCAGQRBqJAALIAAoAgQgDUEsbGoiBiAt/VoCEAIgBiAt/VsCCAAgBiAMOwEoIAYgBTsBJiAGIAc7ASQgBiAEOwEiIAYgCDsBICAGIAo7AR4gBiAOOwEcIAYgFDYCGCAGIBY2AhQgBiAwQv//A4MgMUIQhkKAgPz/D4MgMkIghkKAgICA8P8/gyAzQjCGhISENwIAIAAgDUEBajYCCCAJQdADaiABIBMQpwMgACgCFCIFIAAoAgxGBEAgAEEMahCeBwsgACgCECAFQRhsaiIHIAkpAuADNwIQIAcgCf0AAtAD/QsCACAAIAVBAWo2AhQCQAJAIAAoAjxFDQAgCf0MAAAAAAAAAAAAAAAAAAAAAP0LBOABIAn9DAAAAAAAAAAAAAAAAAAAAAD9CwTQASAJ/QwAAAAAAAAAAAAAAAAAAAAA/QsEwAECQCACRQRAIAAoAiAhDAwBCyAJKAIgIBIgCSgCnAEiBUEgSyIHGyEPIAkoAhwgBSAHGyENIAAoAhwhECAAKAIgIQxBACEHIAEhBQJAA0AgByANRwRAIAUoAgAiBCAMTw0CIA8gB0ECdGoqAgAhAyAQIARBEmxqIQZBACEOA0AgBkECai8BACEEAn8gBi8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEKIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIApFDQEaIAggCkENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIAgNABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIApBF3RrcgshESAGQQRqLwEAIQoCfyAEQf//AXEEQCAEQf8HcSEIIARBgIACcSELIARBgPgBcSIEQYD4AUcEQCALQRB0IgsgBEENdEGAgID8AHEgCEENdHJBgICAwANqciAEDQIaIAggCGdBEGsiBEH//wNxQQhqdEH///8DcSALQYCAgNgDciAEQRd0a3IMAgsgC0EQdCIEIAhBDXRyQYCAgP4HciAIDQEaIARBgICA/AdyDAELIARBEHQLIQsgCUHQA2ogDmoCfyAKQf//AXEEQCAKQf8HcSEEIApBgIACcSEIIApBgPgBcSIKQYD4AUcEQCAIQRB0IgggCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQIaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAIQYCAgNgDciAEQRd0a3IMAgsgCEEQdCIKIARBDXRyQYCAgP4HciAEDQEaIApBgICA/AdyDAELIApBEHQLviADIAlBwAFqIA5qIgRBCGoqAgAQ3gb9EyARviADIAQqAgAQ3gb9IAAgC74gAyAEQQRqKgIAEN4G/SAB/QsEACAGQQZqIQYgDkEQaiIOQTBHDQALIAkgCf0ABPAD/QsE4AEgCSAJ/QAE4AP9CwTQASAJIAn9AATQA/0LBMABIAdBAWohByATIAVBBGoiBUcNAQwDCwsgDSANQfjQxgAQ8AcACyAEIAxBiNHGABDwBwALIAlBwAFqIQZBACEOA0AgBigCACIEQf///wNxIQggBEGAgICAeHEhCiAGQQRqKAIAIQUCQCAEQYCAgPwHcSIHQYCAgPwHRgRAIAhBDXYgCkEQdnJBgARBACAIG3JBgPgBciEKDAELIApBEHYhCiAHQYCAgLgETQRAIAdBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIAdBDXYgCEENdmpBgIABaiAKcmohCgwCCyAHQYCAgJgDSQ0BIAhBgICABHIiBEH+ACAHQRd2IghrdiEHIARBHSAIayIIdkEBcQR/IAdBAyAIdEEBayAEcUEAR2oFIAcLIApyIQoMAQsgCkGA+AFyIQoLIAZBCGooAgAhByAFQf///wNxIQ0gBUGAgICAeHEhCAJAIAVBgICA/AdxIgRBgICA/AdHBEAgCEEQdiEIIARBgICAuARNBEAgBEGAgIDEA08EQCAFQQx2IAVB/98AcUEAR3EgBEENdiANQQ12akGAgAFqIAhyaiEIDAMLIARBgICAmANJDQIgDUGAgIAEciIFQf4AIARBF3YiDWt2IQQgBUEdIA1rIg12QQFxBH8gBEEDIA10QQFrIAVxQQBHagUgBAsgCHIhCAwCCyAIQYD4AXIhCAwBCyANQQ12IAhBEHZyQYAEQQAgDRtyQYD4AXIhCAsgB0H///8DcSENIAdBgICAgHhxIQQCQCAHQYCAgPwHcSIFQYCAgPwHRwRAIARBEHYhBCAFQYCAgLgETQRAIAVBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIAVBDXYgDUENdmpBgIABaiAEcmohBAwDCyAFQYCAgJgDSQ0CIA1BgICABHIiB0H+ACAFQRd2Ig1rdiEFIAdBHSANayINdkEBcQR/IAVBAyANdEEBayAHcUEAR2oFIAULIARyIQQMAgsgBEGA+AFyIQQMAQsgDUENdiAEQRB2ckGABEEAIA0bckGA+AFyIQQLIAlB0ANqIA5qIgUgCjsBACAFQQRqIAQ7AQAgBUECaiAIOwEAIAZBEGohBiAOQQZqIg5BEkcNAAsgCSAJLwHgAzsB0AIgCSAJ/QAB0AP9CwPAAiAAKAIYIAxGBEAjAEEQayIFJAAgBUEEaiAAQRhqIgcoAgAiBCAHKAIEQQQgBEEBdCIEIARBBE0bIgRBAkESEM4GIAUoAgRBAUYEQAwDCyAFKAIIIQYgByAENgIAIAcgBjYCBCAFQRBqJAALIAAoAhwgDEESbGoiBSAJLwHQAjsBECAFIAn9AAPAAv0LAQAgACAMQQFqNgIgIAAoAjxBAU0NAEEAIQcgCUHwAWpBAEHQAPwLAAJAIAJFBEAgACgCLCEMDAELIAkoAiAgEiAJKAKcASIFQSBLIgQbIQ8gCSgCHCAFIAQbIQ0gACgCKCEQIAAoAiwhDCABIQUCQANAIAcgDUcEQCAFKAIAIgQgDE8NAiAPIAdBAnRqKgIAIQMgECAEQR5saiEGQQAhDgNAIAZBAmovAQAhBAJ/IAYvAQAiCEH//wFxRQRAIAhBEHQMAQsgCEH/B3EhCiAIQYCAAnEhCyAIQYD4AXEiCEGA+AFGBEAgC0EQdCIIQYCAgPwHciAKRQ0BGiAIIApBDXRyQYCAgP4HcgwBCyALQRB0IgsgCEENdEGAgID8AHEgCkENdHJBgICAwANqciAIDQAaIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSALQYCAgNgDciAKQRd0a3ILIREgBkEEai8BACEKAn8gBEH//wFxBEAgBEH/B3EhCCAEQYCAAnEhCyAEQYD4AXEiBEGA+AFHBEAgC0EQdCILIARBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBA0CGiAIIAhnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyDAILIAtBEHQiBCAIQQ10ckGAgID+B3IgCA0BGiAEQYCAgPwHcgwBCyAEQRB0CyELIAlB0ANqIhQgDmoCfyAKQf//AXEEQCAKQf8HcSEEIApBgIACcSEIIApBgPgBcSIKQYD4AUcEQCAIQRB0IgggCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQIaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAIQYCAgNgDciAEQRd0a3IMAgsgCEEQdCIKIARBDXRyQYCAgP4HciAEDQEaIApBgICA/AdyDAELIApBEHQLviADIAlB8AFqIgogDmoiBEEIaioCABDeBv0TIBG+IAMgBCoCABDeBv0gACALviADIARBBGoqAgAQ3gb9IAH9CwQAIAZBBmohBiAOQRBqIg5B0ABHDQALIAogFEHQAPwKAAAgB0EBaiEHIBMgBUEEaiIFRw0BDAMLCyANIA1BmNHGABDwBwALIAQgDEGo0cYAEPAHAAsgCUHwAWohBkEAIQ4DQCAGKAIAIgRB////A3EhCCAEQYCAgIB4cSEKIAZBBGooAgAhBQJAIARBgICA/AdxIgdBgICA/AdGBEAgCEENdiAKQRB2ckGABEEAIAgbckGA+AFyIQoMAQsgCkEQdiEKIAdBgICAuARNBEAgB0GAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgB0ENdiAIQQ12akGAgAFqIApyaiEKDAILIAdBgICAmANJDQEgCEGAgIAEciIEQf4AIAdBF3YiCGt2IQcgBEEdIAhrIgh2QQFxBH8gB0EDIAh0QQFrIARxQQBHagUgBwsgCnIhCgwBCyAKQYD4AXIhCgsgBkEIaigCACEHIAVB////A3EhDSAFQYCAgIB4cSEIAkAgBUGAgID8B3EiBEGAgID8B0cEQCAIQRB2IQggBEGAgIC4BE0EQCAEQYCAgMQDTwRAIAVBDHYgBUH/3wBxQQBHcSAEQQ12IA1BDXZqQYCAAWogCHJqIQgMAwsgBEGAgICYA0kNAiANQYCAgARyIgVB/gAgBEEXdiINa3YhBCAFQR0gDWsiDXZBAXEEfyAEQQMgDXRBAWsgBXFBAEdqBSAECyAIciEIDAILIAhBgPgBciEIDAELIA1BDXYgCEEQdnJBgARBACANG3JBgPgBciEICyAHQf///wNxIQ0gB0GAgICAeHEhBAJAIAdBgICA/AdxIgVBgICA/AdHBEAgBEEQdiEEIAVBgICAuARNBEAgBUGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgBUENdiANQQ12akGAgAFqIARyaiEEDAMLIAVBgICAmANJDQIgDUGAgIAEciIHQf4AIAVBF3YiDWt2IQUgB0EdIA1rIg12QQFxBH8gBUEDIA10QQFrIAdxQQBHagUgBQsgBHIhBAwCCyAEQYD4AXIhBAwBCyANQQ12IARBEHZyQYAEQQAgDRtyQYD4AXIhBAsgCUHQA2ogDmoiBSAKOwEAIAVBBGogBDsBACAFQQJqIAg7AQAgBkEQaiEGIA5BBmoiDkEeRw0ACyAJIAkpAeYDNwHWAiAJIAkpAeADNwPQAiAJIAn9AAHQA/0LA8ACIAAoAiQgDEYEQCMAQRBrIgUkACAFQQRqIABBJGoiBygCACIEIAcoAgRBBCAEQQF0IgQgBEEETRsiBEECQR4QzgYgBSgCBEEBRgRADAMLIAUoAgghBiAHIAQ2AgAgByAGNgIEIAVBEGokAAsgACgCKCAMQR5saiIFIAkpAdYCNwEWIAUgCSkD0AI3ARAgBSAJ/QADwAL9CwEAIAAgDEEBajYCLCAAKAI8QQJNDQBBACEHIAlB4AJqQQBB8AD8CwACQCACRQRAIAAoAjghBQwBCyAJKAIgIBIgCSgCnAEiAkEgSyIFGyESIAkoAhwgAiAFGyEIIAAoAjQhDSAAKAI4IQUCQANAIAcgCEcEQCABKAIAIgIgBU8NAiASIAdBAnRqKgIAIQMgDSACQSpsaiEGQQAhDgNAIAZBAmovAQAhAgJ/IAYvAQAiCkH//wFxRQRAIApBEHQMAQsgCkH/B3EhBCAKQYCAAnEhDCAKQYD4AXEiCkGA+AFGBEAgDEEQdCIKQYCAgPwHciAERQ0BGiAKIARBDXRyQYCAgP4HcgwBCyAMQRB0IgwgCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQAaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAMQYCAgNgDciAEQRd0a3ILIQsgBkEEai8BACEEAn8gAkH//wFxBEAgAkH/B3EhCiACQYCAAnEhDCACQYD4AXEiAkGA+AFHBEAgDEEQdCIMIAJBDXRBgICA/ABxIApBDXRyQYCAgMADanIgAg0CGiAKIApnQRBrIgJB//8DcUEIanRB////A3EgDEGAgIDYA3IgAkEXdGtyDAILIAxBEHQiAiAKQQ10ckGAgID+B3IgCg0BGiACQYCAgPwHcgwBCyACQRB0CyEMIAlB0ANqIg8gDmoCfyAEQf//AXEEQCAEQf8HcSECIARBgIACcSEKIARBgPgBcSIEQYD4AUcEQCAKQRB0IgogBEENdEGAgID8AHEgAkENdHJBgICAwANqciAEDQIaIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAKQYCAgNgDciACQRd0a3IMAgsgCkEQdCIEIAJBDXRyQYCAgP4HciACDQEaIARBgICA/AdyDAELIARBEHQLviADIAlB4AJqIgQgDmoiAkEIaioCABDeBv0TIAu+IAMgAioCABDeBv0gACAMviADIAJBBGoqAgAQ3gb9IAH9CwQAIAZBBmohBiAOQRBqIg5B8ABHDQALIAQgD0HwAPwKAAAgB0EBaiEHIBMgAUEEaiIBRw0BDAMLCyAIIAhBuNHGABDwBwALIAIgBUHI0cYAEPAHAAsgCUHgAmohBkEAIQ4DQCAGKAIAIgdB////A3EhCiAHQYCAgIB4cSEEIAZBBGooAgAhAQJAIAdBgICA/AdxIgJBgICA/AdGBEAgCkENdiAEQRB2ckGABEEAIAobckGA+AFyIQQMAQsgBEEQdiEEIAJBgICAuARNBEAgAkGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgAkENdiAKQQ12akGAgAFqIARyaiEEDAILIAJBgICAmANJDQEgCkGAgIAEciIHQf4AIAJBF3YiCmt2IQIgB0EdIAprIgp2QQFxBH8gAkEDIAp0QQFrIAdxQQBHagUgAgsgBHIhBAwBCyAEQYD4AXIhBAsgBkEIaigCACECIAFB////A3EhCCABQYCAgIB4cSEKAkAgAUGAgID8B3EiB0GAgID8B0cEQCAKQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAFBDHYgAUH/3wBxQQBHcSAHQQ12IAhBDXZqQYCAAWogCnJqIQoMAwsgB0GAgICYA0kNAiAIQYCAgARyIgFB/gAgB0EXdiIIa3YhByABQR0gCGsiCHZBAXEEfyAHQQMgCHRBAWsgAXFBAEdqBSAHCyAKciEKDAILIApBgPgBciEKDAELIAhBDXYgCkEQdnJBgARBACAIG3JBgPgBciEKCyACQf///wNxIQcgAkGAgICAeHEhCAJAIAJBgICA/AdxIgFBgICA/AdHBEAgCEEQdiEIIAFBgICAuARNBEAgAUGAgIDEA08EQCACQQx2IAJB/98AcUEAR3EgAUENdiAHQQ12akGAgAFqIAhyaiEIDAMLIAFBgICAmANJDQIgB0GAgIAEciICQf4AIAFBF3YiB2t2IQEgAkEdIAdrIgd2QQFxBH8gAUEDIAd0QQFrIAJxQQBHagUgAQsgCHIhCAwCCyAIQYD4AXIhCAwBCyAHQQ12IAhBEHZyQYAEQQAgBxtyQYD4AXIhCAsgCUHmBGogDmoiASAEOwEAIAFBBGogCDsBACABQQJqIAo7AQAgBkEQaiEGIA5BBmoiDkEqRw0ACyAAKAIwIAVGBEAjAEEQayIBJAAgAUEEaiAAQTBqIgIoAgAiByACKAIEQQQgB0EBdCIHIAdBBE0bIgdBAkEqEM4GIAEoAgRBAUYEQCABKAIIIAEoAgwQmgkACyABKAIIIQQgAiAHNgIAIAIgBDYCBCABQRBqJAALIAAoAjQgBUEqbGoiASAJLwGOBTsBKCABIAkpAYYFNwEgIAEgCf0AAfYE/QsBECABIAn9AAHmBP0LAQAgACAFQQFqNgI4CwJAAkAgCSgCnAEiAEEhTwRAIAkoAiAiAUEEaygCACICQXhxIgUgAEECdCIAQQRBCCACQQNxIgIbakkNASACQQAgBSAAQSdqSxsNAiABEKICCyAJQZAFaiQAIBUPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgBSgCCCAFKAIMEJoJAAvPXAMXfwN9AX4jAEHQAGsiCiQAAkACQAJAAkAgAC0A3FRFBEAgCkEwaiAAQbACahDxBCAKLQAwBEAgCigCNCEBDAMLIAotADFBAUcNASAAQQE6ANxUCyAAKAK4AiIDRQ0AIABB1AJqIRQgCkHEAGqtQoCAgIAQhCEbIABByAJqIRUgAEH4AWohEiAAQYQCaiEWIABBkAJqIRcDQAJAIAAoAsQCIgYgACgC2FQiAWsiAkEAIAIgBk0bQYCABE8EQCABIQIMAQsgASABQYCAAmsiAkEAIAEgAk8bIglrIQIgASAJRgRAIAAgAjYC2FQMAQsgASAGTQRAIAIEQCAAKALAAiIBIAEgCWogAvwKAAALIAAoArgCIQMgACACNgLYVAwBC0EAIAEgBkGoo8cAEKAFAAsCQAJAIAMgDU8EQCAKQTBqIBQgACgCtAIgDWogAyANayAAKALAAiAAKALEAiACQQYQTCAKIAotADQiAToAAyAKKAIwIRMgCigCOCIQRQ0CIAAoAthUIgMgEGoiAiADTyACIAAoAsQCIgZNcQ0BIAMgAiAGQfTuwQAQoAUACyANIAMgA0GE78EAEKAFAAsgACgCwAIhBiAAKALIAiAAKALQAiICayAQSQRAIBUgAiAQQQFBARDWBiAAKALQAiECCyAQBEAgACgCzAIgAmogAyAGaiAQ/AoAAAsgACACIBBqIgY2AtACIAAgACgC2FQgEGo2AthUAkACQAJAIAAoAvgBQYCAgIB4RgRAIAZBEE8EQCAKIAAoAswCIgIoAAAiAzYCECADQc6OzYIFRwRAIAogCkEQaq1CgICAgOADhDcDMCAKQRRqIgBB5OfBACAKQTBqELcHIAAQvQghAQwJCyAKIAIoAAQiCTYCICAJQQRrQXxNBEAgCiAKQSBqrUKAgICAEIQ3AzAgCkEkaiIAQaySwAAgCkEwahC3ByAAEL0IIQEMCQsgAEEANgLQAiACLQAOIQQgAi0ADSEHIAItAAwhAyACKAAIIQggBkEQayIGBEAgBgRAIAIgAkEQaiAG/AoAAAsgACAGNgLQAgsgCiADNgJEIANBA0sNA0GAgMAAEG4iAkUNAiAAIAQ6AK4CIAAgBzoArQIgAEEAOgCsAiAAQQA2AqgCIAAgAzYCpAIgACAINgKgAiAAIAk2ApwCIABBADYCmAIgAEKAgICAwAA3A5ACIABCAjcDiAIgAEIANwOAAiAAIAI2AvwBIABBgIAQNgL4ASAKIARBgAFxQQd2OgA4IAogAzYCNCAKIAg2AjAgACAKQTBqEKsDCyAAKAL4AUGAgICAeEYNBAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAKwCQQFrDgkNDAsKAAEGBBMCC0EJIRFBBiEBIAAoAqQCDgQECAcGAgsgAEEJQQcgACwArgJBAE4bOgCsAgwOCyAAKALQAkEGQQkgACgCnAIiA0EBRhsiDG4iAiAAKAKgAiAAKAKoAmsiBkkEQCACIgZBgIAESQ0RC0GAgAQgBiAGQYCABE8bIghBA2wiAiAAKAKAAiIBSwR/IAIgAWsiAiAAKAL4ASABa0sEQCASIAEgAkEEQQQQ1gYgACgCgAIhAQsgACgC/AEiCSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgCSACQQJ0akEEawUgAwtBADYCACAAIAFBAWo2AoACIAAoApwCBSADC0EBRw0LIAZFDQxBACEBQQAhAkEAIQNBACEJA0AgAUECaiIHIAAoAtACIgRLBEAgASAHIARB1OjBABCgBQALAn8gACgCzAIgAWoiBEEBai0AAEEIdCIFIAQtAAByIgRB//8BcUUEQCAEQRB0DAELIARB/wdxIQQgBUGAgAJxIQsgBUGA+AFxIgVBgPgBRgRAIAtBEHQiBUGAgID8B3IgBEUNARogBEENdCAFckGAgID+B3IMAQsgC0EQdCILIAVBDXRBgICA/ABxIARBDXRyQYCAgMADanIgBQ0AGiAEIARnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyCyEEAn8CQAJAIAAoAoACIgUgA0sEQCAAKAL8ASACaiAENgIAIAFBBGoiBSAAKALQAiIESw0BIAAoAswCIAFqIgRBA2otAABBCHQiByAEQQJqLQAAciIEQf//AXFFBEAgBEEQdAwECyAEQf8HcSEEIAdBgIACcSELIAdBgPgBcSIHQYD4AUYEQCALQRB0IgdBgICA/AdyIARFDQQaIARBDXQgB3JBgICA/gdyDAQLIAtBEHQhCyAHRQ0CIAdBDXRBgICA/ABxIARBDXRyQYCAgMADaiALcgwDCyADIAVBhOjBABDwBwALIAcgBSAEQcTowQAQoAUACyAEIARnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyCyEEAn8CQAJAIANBAWoiByAAKAKAAiILSQRAIAAoAvwBIAJqQQRqIAQ2AgAgAUEGaiIEIAAoAtACIgdLDQEgACgCzAIgAWoiAUEFai0AAEEIdCIHIAFBBGotAAByIgFB//8BcUUEQCABQRB0DAQLIAFB/wdxIQEgB0GAgAJxIQUgB0GA+AFxIgdBgPgBRgRAIAVBEHQiB0GAgID8B3IgAUUNBBogAUENdCAHckGAgID+B3IMBAsgBUEQdCEFIAdFDQIgB0ENdEGAgID8AHEgAUENdHJBgICAwANqIAVyDAMLIAcgC0GU6MEAEPAHAAsgBSAEIAdBtOjBABCgBQALIAEgAWdBEGsiAUH//wNxQQhqdEH///8DcSAFQYCAgNgDciABQRd0a3ILIQEgA0ECaiIHIAAoAoACIgVJBEAgACgC/AEgAmpBCGogATYCACACQQxqIQIgA0EDaiEDIAQhASAJQQFqIgkgCEkNAQwOCwsgByAFQaTowQAQ8AcAC0GU7cEAEJ0KAAsgACgC0AIiAUECdiICIAAoAqACIAAoAqgCayIJSQRAIAIhCSABQYCAEEkNDwtBgIAEIAkgCUGAgARPGyIGIAAoApgCIgFLBEAgBiABayICIAAoApACIAFrSwRAIBcgASACQQRBBBDWBiAAKAKYAiEBCyAAKAKUAiIEIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiCARAIANBACAI/AsACyABIAJqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgKYAgsgCQRAQQAhAUEAIQMCQANAIAFBBGoiAiAAKALQAiIESwRAIAEgAiAEQeTuwQAQoAUACyAAKAKYAiIEIANLBEAgACgClAIgAWogACgCzAIgAWooAAA2AgAgAiEBIAYgA0EBaiIDRg0CDAELCyADIARB1O7BABDwBwALIAAoApgCIQELIAAgACgCqAIgBiAAKAKUAiABEMAEAkACQAJAIAAoAtACIgEgBkECdCICTwRAIABBADYC0AIgASACayEDIAlFDQEgASACRg0DIANFDQIgACgCzAIiASABIAJqIAP8CgAADAILDBYLIAEgAkYNAQsgACADNgLQAgsgACAAKAKoAiAGaiICNgKoAiACIAAoAqACRw0LIABBADYCqAJBCSEBCyAAIAE6AKwCDAoLIAAoAtACIgFBAXYiAiAAKAKgAiAAKAKoAmsiBEkEQCACIQQgAUGAgAhJDQ0LQYCABCAEIARBgIAETxsiAiAAKAKMAiIBSwRAIAIgAWsiAyAAKAKEAiABa0sEQCAWIAEgA0ECQQIQ1gYgACgCjAIhAQsgACgCiAIiCSABQQF0aiEGIANBAk8EfyADQQF0QQJrIggEQCAGQQAgCPwLAAsgASADaiIDQQFrIQEgCSADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYCjAILIAQEQEEAIQNBAiEBAkADQCAAKALQAiIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAowCIgYgA0sEQCAAKAKIAiABakECayAAKALMAiABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgCjAIhAQsgACAAKAKoAiACIAAoAogCIAEQvwQCQAJAAkAgACgC0AIiAyACQQF0IgFPBEAgAEEANgLQAiADIAFrIQYgBEUNASABIANGDQMgBkUNAiAAKALMAiIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLQAgsgACAAKAKoAiACaiICNgKoAiACIAAoAqACRw0JIABBADYCqAIgAEEIOgCsAgwJC0EtIREMAQtBGCERCyAAKALQAiARbiICIAAoAqACIAAoAqgCayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDCARbCILIAAoAoACIgFLBEAgCyABayICIAAoAvgBIAFrSwRAIBIgASACQQRBBBDWBiAAKAKAAiEBCyAAKAL8ASIJIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAJIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgKAAgsgDEEJbCEPAkAgBgRAIAxB4ABsIQcgDEEYbCEJQQAhDkEAIQgCQANAIAggEWwiASAAKALQAiICTw0DAkACQAJAAkAgCEEJbCIDIAAoAoACIgJPDQAgACgC/AEgA0ECdGogACgCzAIgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALQAiICTwRAIAQhAQwICyADQQNqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALQAiICTwRAIAQhAQwICyADQQZqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALQAiICTwRAIAQhAQwICyADQQFqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALQAiICTwRAIAQhAQwICyADQQRqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALQAiICTwRAIAQhAQwICyADQQdqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALQAiICTwRAIAQhAQwICyADQQJqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALQAiICTwRAIAQhAQwICyADQQVqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALQAiICTwRAIAQhAQwICyADQQhqIgMgACgCgAIiAk8NACAAKAL8ASADQQJ0aiAAKALMAiAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCpAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC0AIiBU8NACAIQQ9sIA9qIgIgACgCgAIiBU8NAyAAKAL8ASACQQJ0aiAAKALMAiADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtACIgVPDQAgAkEDaiIEIAAoAoACIgVPBEAgBCECDAQLIAAoAvwBIARBAnRqIAAoAswCIANqLQAAs0MAAADDkkMAAAA8lDgCACAB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aiIDRg0CDAELCyADIARB1O7BABDwBwALIAAoAoACIQELIAAgACgCkAIgBiAAKAL8ASABEMIEAkACQAJAIAAoAtwBIgEgBkECdCICTwRAIABBADYC3AEgASACayEDIAhFDQEgASACRg0DIANFDQIgACgC2AEiASABIAJqIAP8CgAADAILDBYLIAEgAkYNAQsgACADNgLcAQsgACAAKAKQAiAGaiICNgKQAiACIAAoAogCRw0LIABBADYCkAJBCSEBCyAAIAE6AJQCDAoLIAAoAtwBIgFBAXYiAiAAKAKIAiAAKAKQAmsiBUkEQCACIQUgAUGAgAhJDQ0LQYCABCAFIAVBgIAETxsiAiAAKAL0ASIBSwRAIAIgAWsiAyAAKALsASABa0sEQCAWIAEgA0ECQQIQ1gYgACgC9AEhAQsgACgC8AEiCCABQQF0aiEGIANBAk8EfyADQQF0QQJrIgQEQCAGQQAgBPwLAAsgASADaiIDQQFrIQEgCCADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYC9AELIAUEQEEAIQNBAiEBAkADQCAAKALcASIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAvQBIgYgA0sEQCAAKALwASABakECayAAKALYASABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgC9AEhAQsgACAAKAKQAiACIAAoAvABIAEQwQQCQAJAAkAgACgC3AEiAyACQQF0IgFPBEAgAEEANgLcASADIAFrIQYgBUUNASABIANGDQMgBkUNAiAAKALYASIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLcAQsgACAAKAKQAiACaiICNgKQAiACIAAoAogCRw0JIABBADYCkAIgAEEIOgCUAgwJC0EtIREMAQtBGCERCyAAKALcASARbiICIAAoAogCIAAoApACayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDSARbCILIAAoAugBIgFLBEAgCyABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBDWBiAAKALoASEBCyAAKALkASIIIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAIIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsgDUEJbCEOAkAgBgRAIA1B4ABsIQkgDUEYbCEIQQAhD0EAIQcCQANAIAcgEWwiASAAKALcASICTw0DAkACQAJAAkAgB0EJbCIDIAAoAugBIgJPDQAgACgC5AEgA0ECdGogACgC2AEgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALcASICTwRAIAQhAQwICyADQQNqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALcASICTwRAIAQhAQwICyADQQZqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALcASICTwRAIAQhAQwICyADQQFqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALcASICTwRAIAQhAQwICyADQQRqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALcASICTwRAIAQhAQwICyADQQdqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALcASICTwRAIAQhAQwICyADQQJqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALcASICTwRAIAQhAQwICyADQQVqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALcASICTwRAIAQhAQwICyADQQhqIgMgACgC6AEiAk8NACAAKALkASADQQJ0aiAAKALYASAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC3AEiBE8NACAHQQ9sIA5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtwBIgRPDQAgAkEDaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgC3AEiBE8NACACQQZqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEmoiAyAAKALcASIETw0AIAJBCWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIDIAAoAtwBIgRPDQAgAkEMaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgC3AEiBE8NACACQQFqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDWoiAyAAKALcASIETw0AIAJBBGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIDIAAoAtwBIgRPDQAgAkEHaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgC3AEiBE8NACACQQpqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFmoiAyAAKALcASIETw0AIAJBDWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIDIAAoAtwBIgRPDQAgAkECaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgC3AEiBE8NACACQQVqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEWoiAyAAKALcASIETw0AIAJBCGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIDIAAoAtwBIgRPDQAgAkELaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgC3AEiBE8NACACQQ5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAk0NAkEAIQQgCSEDDAELIAMgBEH07cEAEPAHAAsCQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAA0AgACgC3AEiAiAEIA9qIgFBGGpLBEAgBCAIaiIFIAAoAugBIgJPDQ8gACgC5AEgA2ogASAAKALYAWpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEbak0NByAAKALoASICIAVBA2pNDQ4gACgC5AEgA2pBDGogASAAKALYAWpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEeak0NBiAAKALoASICIAVBBmpNDQ0gACgC5AEgA2pBGGogASAAKALYAWpBHmotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEhak0NBSAAKALoASICIAVBCWpNDQwgACgC5AEgA2pBJGogASAAKALYAWpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEkak0NBCAAKALoASICIAVBDGpNDQsgACgC5AEgA2pBMGogASAAKALYAWpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEnak0NAyAAKALoASICIAVBD2pNDQogACgC5AEgA2pBPGogASAAKALYAWpBJ2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEqak0NAiAAKALoASICIAVBEmpNDQkgACgC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xOvBABDwBwALIAkgAUHU68EAEPAHAAsgACgC5AEgAmogCioCMDgCACAFIAAoAugBIgFPDQogACgC5AEgAmpBBGogCioCNDgCACAHIAAoAugBIgFPDQkgACgC5AEgAmpBCGogCioCODgCACAJIAAoAugBIgFPDQggACgC5AEgAmpBDGogCioCPDgCACACQRBqIQIgA0EEaiEDIAggD0EBaiIPSw0ACwwKCyABIARBpOzBABDwBwALIAcgBEG07MEAEPAHAAsgByAEQcTswQAQ8AcACyADIARB1OzBABDwBwALIAQgC0Hk7MEAEPAHAAsgBCAHQfTswQAQ8AcACyAEIAdBhO3BABDwBwALIAkgAUGU7MEAEPAHAAsgByABQYTswQAQ8AcACyAFIAFB9OvBABDwBwALIAAgACgCkAIgCCAAKALkASAAKALoARCPBQJAAkACQCAAKALcASIBIAggDWwiAk8EQCAAQQA2AtwBIAEgAmshAyAGRQ0BIAEgAkYNAyADRQ0CIAAoAtgBIgEgASACaiAD/AoAAAwCCwwQCyABIAJGDQELIAAgAzYC3AELIAAgACgCkAIgCGoiAjYCkAIgAiAAKAKIAkcNBSAAQQA2ApACIABBBToAlAIMBQsgACgC3AEiAUEDbiICIAAoAogCIAAoApACayIISQRAIAIhCCABQYCADEkNCAtBgIAEIAggCEGAgARPGyIEQQNsIgYgACgC6AEiAUsEQCAGIAFrIgIgACgC4AEgAWtLBEAgEiABIAJBBEEEENYGIAAoAugBIQELIAAoAuQBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AugBCwJAAkACQAJAAkACQAJAAkACQCAIBEBBACEDQQAhAQNAIAEgACgC3AEiAk8NAiABIAAoAugBIgJPDQMgACgC5AEgA2ogACgC2AEgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKALcASIFTw0EIAIgACgC6AEiBU8NBSAAKALkASADakEEaiAAKALYASABakEBai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgAUECaiICIAAoAtwBIgVPDQYgAiAAKALoASIFTw0HIAAoAuQB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LGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8C/AQ3A3ggAyAs/R8B/AQ3A3AgAyAs/R8A/AQ3A2ggA0GIAWogA0HoAGoQsgMgAkEYaiADKQOYATcDACACQQhqIAP9AAOIAf0LAwAgAkEgaiICIAhHDQALIARBAUYNACAEQRVPBEAgBSAEEJAEDAELIAUgBBD7BAsgAyAENgKgASADICQ3A4gBIANB6ABqQaSWwAAgA0GIAWoQ4AQCQCADKAJoIggEQCADKAJsIgZBBGsoAgAiAkF4cSIFQQRBCCACQQNxIgIbIAhqSQ0BIAJBACAFIAhBJ2pLGw0KIAYQogILQQAhBSADQQA2AqgBIANCgICAgMAANwKgASADQQA2ArQBIANCgICAgMAANwKsASADQQA2ArgBIANBADYCvAEgBEUEQEKAgICAgICAgIB/IRxC////////////ACEdQQQhCUL///////////8AIR5C////////////ACEfQoCAgICAgICAgH8hIEKAgICAgICAgIB/ISEMAwtBACECQv///////////wAhH0KAgICAgICAgIB/ISFCgICAgICAgICAfyEgQoCAgICAgICAgH8hHEL///////////8AIR5C////////////ACEdA0ACQAJAIAMoAhwiESACQQV0IgdqIgUoAgAiBiAAKAIIIglJBEAgACgCBCILIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADIAP9CQJkIiv95wH9aCIs/R8C/AQhGyAs/R8B/AQhGSAs/R8A/AQhGiAEIAJBAWoiCE0EQCACIQ0MAwsgBEEBayENIBJBAXEEQCAEIQgMAwsgByARakEgaiEHA0AgCSAHKAIAIgZNBEAgBiAJQdjRxgAQ8AcACyALIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8A/AQgGlIgLP0fAfwEIBlSciAs/R8C/AQgG1JyDQIgB0EgaiEHIAQgCEEBaiIIRw0ACyAEIQgMAgsgBiAJQdjRxgAQ8AcACyAIQQFrIQ0LICEgGyAbICFTGyEhICAgGSAZICBTGyEgIBwgGiAaIBxTGyEcIB8gGyAbIB9VGyEfIB4gGSAZIB5VGyEeIB0gGiAaIB1VGyEdIAMgAygCvAFBAWo2ArwBIAMpA0giGSAI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mAUgBhDDBCEoIAJBBmoiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIA0gACgClAUgACgCmAUgBhDDBCEoIAJBB2oiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIAUgACgClAUgACgCmAUgBhDDBCEoIAJBCGoiAiAAKALcBCIETw0FIAAoAtgEIAJBAnRqICg4AgALIAAtAPwBIgJBCEcEQCAALQDsAiEFIAAoAugCIAAtAOQCIQ0gACgC4AIgAC0A3AIhDyAAKALYAiAALQDUAiERIAAoAtACIAAtAMwCIRUgACgCyAIgAC0AxAIhFyAAKALAAiAALQC8AiEZIAAoArgCIAAtALQCIRsgACgCsAIgAC0ArAIhHSAAKAKoAiAALQCkAiEfIAAoAqACIAAtAJwCISEgACgCmAIgAC0AlAIhIyAAKAKQAiAALQCMAiElIAAoAogCIAAtAIQCIQEgACgCgAIgACgC+AEgAiAAKAKUBSAAKAKYBSAGEMMEISggCEEPbCICIAAoAugEIgRPDQQgACgC5AQgAkECdGogKDgCACABIAAoApQFIAAoApgFIAYQwwQhKCACQQFqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAlIAAoApQFIAAoApgFIAYQwwQhKCACQQJqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAjIAAoApQFIAAoApgFIAYQwwQhKCACQQNqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAhIAAoApQFIAAoApgFIAYQwwQhKCACQQRqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAfIAAoApQFIAAoApgFIAYQwwQhKCACQQVqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAdIAAoApQFIAAoApgFIAYQwwQhKCACQQZqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAbIAAoApQFIAAoApgFIAYQwwQhKCACQQdqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAZIAAoApQFIAAoApgFIAYQ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AELf0JWLxqyZuQqFhFANASAGIAJBAWoiAkcNAAsgAUGAgARJDQRBqODBAEEUELQIIQEMCgsgASACSQ0LIANB8AdqIAUgAhCXAyADKALwB0EBRgRAIAMpAvQHEL4IIQEMCgsgA0HwB2ogAygC9AcgAygC+AcQUSADKALwByEBIAMoApwJIgZBgICAgHhGBEAgAUUNBAwKCyADQQRyIANB8AdqIgVBBHJBqAH8CgAAIAMgA/0AA6AJ/QsDsAEgAyAGNgKsASADIAE2AgACQCADLQC5ASIMRQRAIANB8ABqIQEgAy0AuAFFBEAgAygCqAEhByADKAKUASEGIANBsAZqIgogARDnAyAFIAcgBiAKEKQBIAMoAvAHIQEgAygC9AwiBEGAgICAeEYNAiADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIAMoAoQJIQsgA0HQA2ogA0GQCWpBzAH8CgAAIAMoAuAKIQggAygC3AohCiADQbACaiADQeQKakGgAfwKAAAgAygChAwhCSADQcABaiADQYgMakHsAPwKAAAgAykD+AwhLSADQQA6APgHIAMgCTYC9AcgAyAHNgLwByAAIAUQqwMgASEFDAULIAMoAqgBIQkgAygClAEhBSADQbAGaiIGIAEQ5wMgA0HwB2oiByAJIAUgBhC4AkGAgICAeCEEIAMoAvAHIQEgAygChAkiC0GAgICAeEYNASADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIANBADoA+AcgA0EANgL0ByADIAk2AvAHIAAgBxCrAyABIQUMBAsgA0GwBmoiASADQcAB/AoAACADQfAHaiIGIAEQeiADKAL0ByEBIAMoAvAHIgVBgICAgHhGDQIgA0GgBWogA0H4B2pBjAH8CgAAIAMpAogJISwgAygChAkhCyADQdADaiADQZAJakHMAfwKAAAgAygC3AohCiADKALgCiEIIANBADoA+AcgAyAINgL0ByADIAo2AvAHIAAgBhCrA0GCgICAeCEEIAEhBgwDCyADEK0DIAENCQwDC0Gwq8EAQRAQtAghAQwICyABRQ0BDAcLIAAoApAHIgEgAkELaiICSQ0CIABBADYCkAcgASACRwRAIAEgAmsiAQRAIAAoAowHIgcgAiAHaiAB/AoAAAsgACABNgKQBwsCQCAAKAL8BiIBQYOAgIB4Rg0AIABB+AFqIQICQAJAAkBBASABQYCAgIB4cyABQQBOGw4CAQIACyACEMABDAILIAIQ0AMMAQsgAhCSAgsgACAGNgL8ASAAIAU2AvgBIABBgAJqIANBoAVqQYwB/AoAACAAICw3A5ADIAAgCzYCjAMgAEGYA2ogA0HQA2pBzAH8CgAAIAAgCDYC6AQgACAKNgLkBCAAQewEaiADQbACakGgAfwKAAAgACAJNgKMBiAAQZAGaiADQcABakHsAPwKAAAgACAtNwOAByAAIAQ2AvwGIAwNACADEK0DC0EAIQEgACgC/AYiAkGDgICAeEYNBQsgAEH4AWohEAJAIAJBgICAgHhzQQEgAkEASCIBG0EBaw4CAwIACyACQYCAgIB4RgRAAkACQAJAAkAgACgC1AIiAgRAIAAoApAHIQQgAEGMA2ohDSAAQYADaiEOIAAoAtgCIQFBACEGA0BBgIAEIQogBCAGayIFIAJuIgIgACgC0AIiCyABayIBQQAgASALTRsiASABIAJLGyICQYCABE0EQCACIgpFDQsLIBAgChDbAkF8IQVBACELQQMhBEF9IQlBACECQQAhBwJAAkADQCAAKAKgAiAALQCkAiAAKAKMByAAKAKQByAAKALUAiAHbCAGaiIBEMMEISgCQAJAAn8gBEEDayIMIAAoAuQCIghPBEAgDAwBCyAAKALgAiACaiAoOAIAIAAoAqgCIAAtAKwCIAAoAowHIAAoApAHIAEQwwQhKCAEQQJrIg8gACgC5AIiCEkEQCAAKALgAiACakEEaiAoOAIAIAAoArACIAAtALQCIAAoAowHIAAoApAHIAEQwwQhKCAEQQFrIhQgACgC5AIiCEkEQCAAKALgAiACakEIaiAoOAIAQwAAgD8hKCAALQCcAiIIQQhHDQMMBAsgBEEBawwBCyAEQQJrCyAIQazkwQAQ8AcACyAAKAKYAiAIIAAoAowHIAAoApAHIAEQwwQhKAsCQAJ/AkAgACgC8AIiCCAHSwRAIAAoAuwCIAtqICg4AgAgACgCuAIgAC0AvAIgACgCjAcgACgCkAcgARDDBCEoIAwgACgC/AIiCEkNASAEQQNrDAILIAcgCEGM5MEAEPAHAAsgACgC+AIgAmogKDgCACAAKALAAiAALQDEAiAAKAKMByAAKAKQByABEMMEISggACgC/AIiCCAPSwRAIAAoAvgCIAJqQQRqICg4AgAgACgCyAIgAC0AzAIgACgCjAcgACgCkAcgARDDBCEoIAAoAvwCIgggFEsEQCAAKAL4AiACakEIaiAoOAIAIAQgACgCiAMiAU0NA0EAIAQgAUGoo8cAEKAFAAsgBEEBawwBCyAEQQJrCyAIQZzkwQAQ8AcACyAAIAw2AogDIANB76SM1AM2ApQIIANC76SM1PPNxME6NwKMCCADQoCAgIAwNwKECCADIAQ2AvwHIAMgDjYC+AcgAyABIAlqNgKACCADQfAHaiIMEJgCIAtBBGoiASAAKAKUAyIISw0BIAAgCzYClAMgA/0MAAAAAAAAAAAAAAAAAACAP/0LAowIIANCgICAgMAANwKECCADIAE2AvwHIAMgDTYC+AcgAyAFIAhqNgKACCAJQQNrIQkgBEEDaiEEIAJBDGohAiAFQQRrIQUgDBCYAiABIQsgB0EBaiIHIApJDQALIApBA2wiAiAAKALkAiIBTQ0BQQAgAiABQfzjwQAQoAUAC0EAIAEgCEGoo8cAEKAFAAsgCiAAKALwAiIBSw0CIAIgACgC/AIiAUsNAyACIAAoAogDIgFLDQQgCkECdCIBIAAoApQDIgVLDQUgACgC2AIhBSAAKALgAiELIAAoAuwCIQQgACgC+AIhByAAKAKEAyEIIANCBDcCyAggA0ICNwLACCADQgQ3ArgIIANCBDcCsAggA0IENwKoCCADQgQ3AqAIIANCBDcCmAggAyABNgKUCCADIAI2AowIIAMgCDYCiAggAyACNgKECCADIAc2AoAIIAMgCjYC/AcgAyAENgL4ByADIAI2AvQHIAMgCzYC8AcgAyAAKAKQAzYCkAggACAFIAogA0HwB2oQeSAAIAAoAtgCIApqIgE2AtgCIAAoAtQCIgIgCmwgBmohBiAAKAKQByEEIAINAAsLQazjwQAQnQoAC0EAIAogAUHs48EAEKAFAAtBACACIAFB3OPBABCgBQALQQAgAiABQczjwQAQoAUAC0EAIAEgBUG848EAEKAFAAtBjIzGAEEoQbzkwQAQqAkAC0EAIAIgAUGoo8cAEKAFAAsCQAJAAkAgAkGCgICAeEYEQCAAKALgBCIBIAAoAoACSQ0BIAAoApAHIQJBACEBIABBADYCkAcgAg0CDAYLQYyMxgBBKEHs5cEAEKgJAAtBACEHAkACQANAAkAgACgC/AEgAUEGdGoiASgCJCIFBEAgBSAAKAKQByIIIAdrIgZNDQEMBAtBzOTBABCdCgALIAEtADwhC0GAgAQhAiAGIAVuIgYgASgCICIEIAEoAjgiCmsiAUEAIAEgBE0bIgEgASAGSxsiAUGAgARNBEAgASICRQ0DCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAtBAWsOAwIBDAALIBAgAiAHIAUgACgCjAcgCBCjAwwLCyAAKAL8AkGAgICAeEcNAQwKCyAQIAIgCiAHIAUgACgCjAcgCBDpASIBDREgAkEDbCIBIAAoApgCIgZLDQEgAiAAKAKkAiIGSw0CIAEgACgCsAIiBksNAyABIAAoArwCIgZLDQQgAkECdCIGIAAoAsgCIgtLDQUgACgClAIhCyAAKAKgAiEEIAAoAqwCIQggACgCuAIhCSADQgQ3AsgIIANCAjcCwAggA0IENwK4CCADQgQ3ArAIIANCBDcCqAggA0IENwKgCCADQgQ3ApgIIAMgBjYClAggAyABNgKMCCADIAk2AogIIAMgATYChAggAyAINgKACCADIAI2AvwHIAMgBDYC+AcgAyABNgL0ByADIAs2AvAHIAMgACgCxAI2ApAIIAAgCiACIANB8AdqEHkMCQsgECACIAcgBSAAKAKMByAIEOEBIAJBCWwiASAAKALUAiIGSw0FIAAoAtACIQsCQCAAKALoBCIGQQJPBEAgAkEPbCIEIAAoAuACIghNBEAgACgC3AIhCCAGQQJHDQJBACEJQQQhBgwKC0EAIAQgCEG85cEAEKAFAAsgACAKIAIgCyABEGUMCQsgAkEVbCIJIAAoAuwCIgZLDQYgACgC6AIhBgwHC0EAIAEgBkGc5cEAEKAFAAtBACACIAZBjOXBABCgBQALQQAgASAGQfzkwQAQoAUAC0EAIAEgBkHs5MEAEKAFAAtBACAGIAtB3OTBABCgBQALQQAgASAGQczlwQAQoAUAC0EAIAkgBkGs5cEAEKAFAAsgACAKIAIgCyABEGUgACAKIAIgCCAEEJ0BIAlFDQAgACAKIAIgBiAJEIEBCyAAKALgBCIBIAAoAoACIgZPDQEgACgC/AEgAUEGdGoiBiAGKAI4IAJqIgo2AjggACgC4AQhASAGKAIgIApGBEAgACABQQFqIgE2AuAECyACIAVsIAdqIQcgASAAKAKAAkkNAAsgACgCkAchCAwBCyABIAZB3OXBABDwBwALIAcgCEsNAUEAIQEgAEEANgKQByAIIAdrIQIgBwRAIAcgCEYNBSACBEAgACgCjAciBSAFIAdqIAL8CgAACyAAIAI2ApAHDAULIAcgCEYNBAsgACACNgKQBwwDC0EAIAcgCEGoo8cAEKAFAAsCQAJAIAFFBEACQAJAAkACQAJAAkACQAJAAkAgACgChAYiAgRAIAAoApAHIQQgAEHIAmohFCAAKAKIBiEBQQAhDANAQYCABCEGIAQgDGsiBSACbiICIAAoAoAGIgogAWsiAUEAIAEgCk0bIgEgASACSxsiAkGAgARNBEAgAiIGRQ0NCyAQIAYQ0QFBACEKQQAhC0EAIQgCQAJAAkACQAJAAkADQCAAKAKwBSAALQC0BSAAKAKMByAAKAKQByAAKAKEBiAIbCAMaiIHEMMEISggCEEDbCICIAAoApgGIglPDRQgAkECdCIEIAAoApQGaiAoOAIAIAAoArgFIAAtALwFIAAoAowHIAAoApAHIAcQwwQhKCACQQFqIgEgACgCmAYiCU8EQCABIQIMFQsgAUECdCINIAAoApQGaiAoOAIAIAAoAsAFIAAtAMQFIAAoAowHIAAoApAHIAcQwwQhKCACQQJqIgUgACgCmAYiCU8EQCAFIQIMFQsgBUECdCIOIAAoApQGaiAoOAIAIAAoAvgFIAAtAPwFIAAoAowHIAAoApAHIAcQwwQhKCAAKAKkBiIJIAhNBEAgCCAJQfzhwQAQ8AcACyAIQQJ0Ig8gACgCoAZqQwAAgD8gKIwQiARDAACAP5KVOAIAIAAoAuAFIAAtAOQFIAAoAowHIAAoApAHIAcQwwQhKCACIAAoArAGIglPDQUgACgCrAYgBGogKEO7bpA+lEMAAAA/kjgCACAAKALoBSAALQDsBSAAKAKMByAAKAKQByAHEMMEISggACgCsAYiCSABTQRAIAEhAgwGCyAAKAKsBiANaiAoQ7tukD6UQwAAAD+SOAIAIAAoAvAFIAAtAPQFIAAoAowHIAAoApAHIAcQwwQhKCAAKAKwBiIJIAVNBEAgBSECDAYLIAAoAqwGIA5qIChDu26QPpRDAAAAP5I4AgAgACgCyAUgAC0AzAUgACgCjAcgACgCkAcgBxDDBCEoAkACfwJAAkACQAJAAkACQAJAAkACQCACIAAoArwGIglPDQAgACgCuAYgBGogKBCIBDgCACAAKALQBSAALQDUBSAAKAKMByAAKAKQByAHEMMEISggACgCvAYiCSABIgJNDQAgACgCuAYgDWogKBCIBDgCACAAKALYBSAALQDcBSAAKAKMByAAKAKQByAHEMMEISggACgCvAYiCSAFIgJNDQAgACgCuAYgDmogKBCIBDgCACAAKAKYAiAALQCcAiAAKAKMByAAKAKQByAHEMMEISggACgCoAIgAC0ApAIgACgCjAcgACgCkAcgBxDDBCEpIAAoAqgCIAAtAKwCIAAoAowHIAAoApAHIAcQwwQhKiAAKAKwAiAALQC0AiAAKAKMByAAKAKQByAHEMMEISsgCEECdCICIAAoAsgGIgRJDQEMAgsgAiAJQeziwQAQ8AcACyAAKALEBiACQQJ0aiAoICggKJQgKSAplJIgKiAqlJIgKyArlJKRIiiVOAIAIAJBAXIiASAAKALIBiIETwRAIAEhAgwBCyAAKALEBiABQQJ0aiApICiVOAIAIAJBAnIiASAAKALIBiIETwRAIAEhAgwBCyAAKALEBiABQQJ0aiAqICiVOAIAIAJBA3IiAiAAKALIBiIETw0AIAAoAsQGIAJBAnRqICsgKJU4AgAgAC0AvAIiBEEIRg0IIAAoArgCIAdqIQIgACgCkAchASAAKAKMByEFIAAtAMQCIQkgACgCwAIhDSAEQQFrDgcBBgUEBAQDAgsgAiAEQdziwQAQ8AcACyABIAJNBEAgAiABQbjoxgAQ8AcACyACIAVqLQAADAULIAEgAk0EQCACIAFBqOjGABDwBwALIAIgBWosAAAMBAsgAkF3TSACQQhqIgQgAU1xRQ0eIAIgBWorAAD8AwwDCyACQXtNIAJBBGoiBCABTXFFDR4gAiAFaigAAAwCCyACQX1NIAJBAmoiBCABTXFFDR4gAiAFai8AAAwBCyACQX1NIAJBAmoiBCABTXFFDR4gAiAFai4AAAshAgJ/AkACQCAAKAL4BiIBIAhLBEAgACgC9AYgD2ogAjYCACAHIA1qIQIgACgCkAchASAAKAKMByEFAkACQAJAAkACQAJAAkACQAJAAkAgCUEBaw4HBQABAgICAwQLIAJBfU0gAkECaiIEIAFNcQ0FDCoLIAJBfU0gAkECaiIEIAFNcQ0FDCgLIAJBe00gAkEEaiIEIAFNcQ0FDCYLIAJBd00gAkEIaiIEIAFNcQ0FDCQLIAEgAksNByACIAFBqOjGABDwBwALIAEgAksNBSACIAFBuOjGABDwBwALIAIgBWouAAAMBgsgAiAFai8AAAwFCyACIAVqKAAADAQLIAIgBWorAAD8AwwDCyAIIAFBjOLBABDwBwALIAIgBWotAAAMAQsgAiAFaiwAAAshAiAIIAAoAoQHIgFPDQMgACgCgAcgD2ogAjYCAAsgAC0A7AQiAkEIRwRAIAAtAKwFIQUgACgCqAUgAC0ApAUhDSAAKAKgBSAALQCcBSEPIAAoApgFIAAtAJQFIRIgACgCkAUgAC0AjAUhFSAAKAKIBSAALQCEBSEXIAAoAoAFIAAtAPwEIRkgACgC+AQgAC0A9AQhASAAKALwBCAAKALoBCACIAAoAowHIAAoApAHIAcQwwQhKCAIQQlsIgIgACgC1AYiBE8NBSAAKALQBiACQQJ0aiAoOAIAIAEgACgCjAcgACgCkAcgBxDDBCEoIAJBAWoiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIBkgACgCjAcgACgCkAcgBxDDBCEoIAJBAmoiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIBcgACgCjAcgACgCkAcgBxDDBCEoIAJBA2oiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIBUgACgCjAcgACgCkAcgBxDDBCEoIAJBBGoiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIBIgACgCjAcgACgCkAcgBxDDBCEoIAJBBWoiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIA8gACgCjAcgACgCkAcgBxDDBCEoIAJBBmoiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIA0gACgCjAcgACgCkAcgBxDDBCEoIAJBB2oiASAAKALUBiIETwRAIAEhAgwGCyAAKALQBiABQQJ0aiAoOAIAIAUgACgCjAcgACgCkAcgBxDDBCEoIAJBCGoiAiAAKALUBiIETw0FIAAoAtAGIAJBAnRqICg4AgALIAAtAPQDIgJBCEcEQCAALQDkBCEFIAAoAuAEIAAtANwEIQ0gACgC2AQgAC0A1AQhDyAAKALQBCAALQDMBCESIAAoAsgEIAAtAMQEIRUgACgCwAQgAC0AvAQhFyAAKAK4BCAALQC0BCEZIAAoArAEIAAtAKwEIRsgACgCqAQgAC0ApAQhHSAAKAKgBCAALQCcBCEfIAAoApgEIAAtAJQEISEgACgCkAQgAC0AjAQhIyAAKAKIBCAALQCEBCElIAAoAoAEIAAtAPwDIQEgACgC+AMgACgC8AMgAiAAKAKMByAAKAKQByAHEMMEISggCEEPbCICIAAoAuAGIgRPDQQgACgC3AYgAkECdGogKDgCACABIAAoAowHIAAoApAHIAcQwwQhKCACQQFqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAlIAAoAowHIAAoApAHIAcQwwQhKCACQQJqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAjIAAoAowHIAAoApAHIAcQwwQhKCACQQNqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAhIAAoAowHIAAoApAHIAcQwwQhKCACQQRqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAfIAAoAowHIAAoApAHIAcQwwQhKCACQQVqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAdIAAoAowHIAAoApAHIAcQwwQhKCACQQZqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAbIAAoAowHIAAoApAHIAcQwwQhKCACQQdqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAZIAAoAowHIAAoApAHIAcQwwQhKCACQQhqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAXIAAoAowHIAAoApAHIAcQwwQhKCACQQlqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAVIAAoAowHIAAoApAHIAcQwwQhKCACQQpqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACASIAAo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ASADIAQ2AqwBIAMgAjYCACADLQC5ASINRQRAIANB8ABqIRECQCADLQC4AUUEQCADKAKoASEJIAMoApQBIQQgA0GwBmoiAiAREOcDIAYgCSAEIAIQpAEgAygC8AchAiADKAL0DCIFQYCAgIB4Rg0BIAMoAvQHIQogA0GgBWogA0H4B2pBjAH8CgAAIAMpA4gJISwgAygChAkhDiADQdADaiADQZAJakHMAfwKAAAgAygC4AohDCADKALcCiEHIANBsAJqIANB5ApqQaAB/AoAACADKAKEDCESIANBwAFqIANBiAxqQewA/AoAACADKQP4DCEtIANBADoA+AcgAyASNgL0ByADIAk2AvAHIAAgBhDqAQwECyADKAKoASEJIAMoApQBIQogA0GwBmoiAiAREOcDIANB8AdqIgQgCSAKIAIQuAJBgICAgHghBSADKALwByECIAMoAoQJIg5BgICAgHhGDQAgAygC9AchCiADQaAFaiADQfgHakGMAfwKAAAgAykDiAkhLCADQQA6APgHIANBADYC9AcgAyAJNgLwByAAIAQQ6gEMAwsgAxCtAyACRQ0DDAkLIANBsAZqIgIgA0HAAfwKAAAgA0HwB2oiCiACEHogAygC9AchAiADKALwByIEQYCAgIB4RwRAIANBoAVqIANB+AdqQYwB/AoAACADKQKICSEsIAMoAoQJIQ4gA0HQA2ogA0GQCWpBzAH8CgAAIAMoAtwKIQcgAygC4AohDCADQQA6APgHIAMgDDYC9AcgAyAHNgLwByAAIAoQ6gFBgoCAgHghBSACIQogBCECDAILIAINCAwCC0Gwq8EAQRAQtAghAgwHCyAAKAL4BSIEIAFBC2oiCUkNAiAAQQA2AvgFIAQgCUcEQCAEIAlrIgQEQCAAKAL0BSIBIAEgCWogBPwKAAALIAAgBDYC+AULAkAgACgC5AUiAUGDgICAeEYNACAAQeAAaiEEAkACQAJAQQEgAUGAgICAeHMgAUEAThsOAgECAAsgBBDAAQwCCyAEENADDAELIAQQkgILIAAgCjYCZCAAIAI2AmAgAEHoAGogA0GgBWpBjAH8CgAAIAAgLDcD+AEgACAONgL0ASAAQYACaiADQdADakHMAfwKAAAgACAMNgLQAyAAIAc2AswDIABB1ANqIANBsAJqQaAB/AoAACAAIBI2AvQEIABB+ARq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Aw0UIAVBg47CAEECEMMDDRQLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAAwTCyABKAIAQZ/7wwBBESABKAIEKAIMEQAAIQAMEgtBASEAIAIgA0EBajYCDCABKAIAIgNB+f/DAEEPIAEoAgQiBSgCDCIEEQAADRECQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRMgAkEMaiABEOcERQ0BDBMLIANBhY7CAEECIAQRAAANEiACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRIgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0SCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEQtBASEAIAIgA0EBajYCDCABKAIAIgNBiIDEAEEQIAEoAgQiBSgCDCIEEQAADRACQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRIgAkEMaiABEOcERQ0BDBILIANBhY7CAEECIAQRAAANESACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDREgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0RCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEAtBASEAIAIgA0EBajYCDCABKAIAIgNBmIDEAEEQIAEoAgQiBSgCDCIEEQAADQ8CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADREgAkEMaiABEOcERQ0BDBELIANBhY7CAEECIAQRAAANECACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRAgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0QCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDwtBASEAIAIgA0EBajYCDCABKAIAIgNBqIDEAEEOIAEoAgQiBSgCDCIEEQAADQ4CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRAgAkEMaiABEOcERQ0BDBALIANBhY7CAEECIAQRAAANDyACQQE6AB8g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AAsgBSAJQYDOxgAQ8AcAC0EEQYCA0AIQmgkACwJAIANBCGoiARDXASICBEAgAEECNgIAIAAgAjYCBCABEPoBDAELIAAgA0EIakH4AfwKAAALIANB4AJqJAAPC0EEQYCAEBCaCQALQQRBgIAwEJoJAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL4RcCGX8CfCMAQbAEayIDJAAgA0IANwOYASADQgA3A5ABIANCADcDiAEgA0IANwOAASADQgA3A3ggA0IANwNwIANCADcDaCADQgA3A2AgA0IANwNYIANCADcDUCADQgA3A0ggA0IANwNAIANCADcDOCADQgA3AzAgA0IANwMoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwAgA0IANwO4AiADQgA3A7ACIANCADcDqAIgA0IANwOgAiADQgA3A5gCIANCADcDkAIgA0IANwOIAiADQgA3A4ACIANCADcD+AEgA0IANwPwASADQgA3A+gBIANCADcD4AEgA0IANwPYASADQgA3A9ABIANCADcDyAEgA0IANwPAASADQgA3A7gBIANCADcDsAEgA0IANwOoASADQgA3A6ABIANCADcD2AMgA0IANwPQAyADQgA3A8gDIANCADcDwAMgA0IANwO4AyADQgA3A7ADIANCADcDqAMgA0IANwOgAyADQgA3A5gDIANCADcDkAMgA0IANwOIAyADQgA3A4ADIANCADcD+AIgA0IANwPwAiADQgA3A+gCIANCADcD4AIgA0IANwPYAiADQgA3A9ACIANCADcDyAIgA0IANwPAAiADQeADakEAQdAA/AsAQaS5yAAoAgAiCSEGIAJBA2tBGG0iBUEAIAVBAEobIgshBSALQQJ0QbS5yABqIQcDQCADIARBA3RqIAVBAEgEfEQAAAAAAAAAAAUgBygCALcLOQMAIAQgBkkiCgRAIAdBBGohByAFQQFqIQUgBCAKaiIEIAZNDQELC0EAIQUDQEEAIQQgA0HAAmogBUEDdGogHCAAIARBA3RqKwMAIAMgBSAEa0EDdGorAwCioDkDACAFIAlJIgQEQCAEIAVqIgUgCU0NAQsLRAAAAAAAAPB/RAAAAAAAAOB/IAIgC0FobGoiCkEYayIGQf4PSyIPG0QAAAAAAAAAAEQAAAAAAABgAyAG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EMcEDQkgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGD+sMAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQkgACABEMcERQ0BDAkLIARBhY7CAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQggAigCIEGDjsIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEGd+sMAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQggACABEMcERQ0BDAgLIARBhY7CAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQcgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0HCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBgsgASgCAEG4+sMAQRYgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRBzvrDAEESIAEoAgQiBigCDCIFEQAADQQCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQYgACgCCCAAKAIMIAEQwQJFDQEMBgsgBEGFjsIAQQIgBREAAA0FIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/CADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUaiIENgIgIAAoAgggACgCDCACQSBqEMECDQUgBEGDjsIAQQIQwwMNBQsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRB4PrDAEEQIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQUgACgCCCAAKAIMIAEQwQJFDQEMBQsgBEGFjsIAQQIgBREAAA0EIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/C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ACAAKQPYAiACrXwiCTcD4AIgACAJNwPYAgJAAkACQCABKAKkAkEBRgRAIAAgASgClAIiAjYCiAMgACABKAK0ASABKALAASIDIAEoArABGyIFNgKMAyAFRQ0BIAMgBW4iByADIAUgB2xHaiIFIAJGBEAgAS0AqAIhAiABIARBACAGQQFxGzYCJCABIAM2AiAgASACQQFxIgM6ACggAEH4AWogAUEgahDqASABKALQASIEQQJHBEACfSAALQDQAiICQQJGBEBDAABAwSENQwAAEEEhDkMAAIA/IRBBACECQwAAgD8hEUMAAIA/IRJDAACAPyETQwAAAAAMAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAswCIRAgACoCyAIhESAAKgLEAiESIAAqAsACIQ4gACoCvAIhDSAAKgK4AiETIAAqArQCCyEPIAAgASoChAIgECABKAKAAhs4AswCIAAgASoC/AEgESABKAL4ARs4AsgCIAAgASoC9AEgEiABKALwARs4AsQCIAAgASoC7AEgDiABKALoARs4AsACIAAgASoC5AEgDSABKALgARs4ArwCIAAgASoC3AEgEyABKALYARs4ArgCIAAgAiABLQCIAiICIAJBAkYbOgDQAiAAIAEqAtQBIA8gBEEBcRs4ArQCIAAgAS0AIjoA0wIgACABLwEgOwDRAgsgA0UNBAJ9IAAtANACQQJGBED9DAAAAAAAAIA/AABAwQAAEEEhFEMAAIA/IQ1DAACAPyEOQwAAgD8MAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAsgCIQ0gACoCxAIhDiAA/QACtAIhFCAAKgLMAgshDyAAQQE6ANACIAAgDzgCzAIgACANOALIAiAAIA44AsQCIAAgFP0LArQCIAAgAS8BIDsA0QIgACABLQAiOgDTAgwECyABIAU2AswCIAFCgICAgBAiCSAAQYgDaq2ENwMoIAEgCSABQcwCaq2ENwMgIAFBwAJqIgBBxYTAACABQSBqELcHIAAQvQghAwwCCyABIAFBpAJqrUKAgICAEIQ3AyAgAUG0AmoiAEHkksAAIAFBIGoQtwcgABC9CCEDIAEoApQCIQIMAQtB/OXBABCdCgALIAEoApACIQQgAgRAIARBJGohAANAIABBBGsoAgAiBUEASgRAIAAoAgAgBUEBEMEHCyAAQTBq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IAIgA0EEEOsGIAIoAgghAwsgAigCBCADaiEHAn8gBUGAEEkEQCAFQQZ2QUByIQhBAgwBCyAHIAVBBnZBP3FBgAFyOgABIAVBDHZBYHIhCEEDCyEJIAcgCDoAACACIAMgCWo2AgggByAJakEBayAFQT9xQYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAhCtBwsgAiADQQFqNgIIIAIoAgQgA2ogBToAAEEAIQMMAwsgBSADIANBmLjFABCgBQALIARBFDYCFCABIARBFGoQmwghAwwBCyAIIAMgA0GYuMUAEKAFAAsgBEEgaiQAIANFDQ8MDgsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQSI6AAAMDAsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQdwAOgAADAsLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEvOgAADAoLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEIOgAADAkLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEMOgAADAgLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEKOgAADAcLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakENOgAADAYLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEJOgAADAULIAMgByAFQfywxQAQoAUACyAGKAIMIQMMBAsgBkEENgIUIAAgASAGQRRqEIEIDAYLIAcgBUHMsMUAEPAHAAsgACAGKAIENgIEIABBAjYCAAwECwwBCwsgAEECNgIAIAAgAzYCBAwBCyAAIAE2AgggACADNgIEIABBADYCAAsgBkEgaiQAC98QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQam4xQBBARCuAyECDAILAkACQAJAAkACQAJAAkAgACgCCCIEIAAoAgQiBk8EQCAAKAIQIgJFDQEgAkHHx8QAQRAQrgNFDQEMBwsgACAEQQFqIgE2AgggBUEIaiACIARqLQAAIgMQigggBSgCCCIHBEAgACgCECIARQ0IIAAgByAFKAIMEK4DIQIM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CnFBA3RrIgdBCGsoAgAgAEYEQEEBIQggASAHQQRrKAIARg0DCyACQgF9IAKDIgJQRQ0ACwsgBUKAgYKEiJCgwIB/gyECIBZFBEAgAlANAiACeqdBA3YgDGogCnEhEwtBASACIAVCAYaDUA0CGkEAIQggCSATaiwAACIMQQBOBEAgCSAJKQMAQoCBgoSIkKDAgH+DeqdBA3YiE2otAAAhDAsgCSATaiADp0H/AHEiBzoAACAJIBNBCGsgCnFqQQhqIAc6AABB0L7IAEHQvsgAKAIAIAxBAXFrNgIAQdS+yABB1L7IACgCAEEBajYCACAJIBNBA3RrIgdBCGsgADYCACAHQQRrIAE2AgALIAgPC0EACyEWIBdBCGoiFyAMaiAKcSEMDAALAAueBgEEfyAAENoEAkACQCAAKAKYBCIBBEAgACgCnAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKkBCIBBEAgACgCqAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKwBCIBBEAgACgCtAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAK8BCIBBEAgACgCwAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALIBCIBBEAgACgCzAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALUBCIBBEAgACgC2AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALgBCIBBEAgACgC5AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALsBCIBBEAgACgC8AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdq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rMtUVVXFv6CioKC2DAULRNIhM3982RLAIAGhIgIgAiACoiIBoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiADIAFEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYMBAsgBEHjl9uABEsNAiAGQQBOBEBEGC1EVPsh+T8gAaEiAiACIAKiIgGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwECyABRBgtRFT7Ifk/oCICIAIgAqIiAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAMLIARBgICAzANPBEAgASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAwsgBSAAQwAAgHuSOAIIIAUqAggaQwAAgD8MAgtEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAQtEGC1EVPshCcBEGC1EVPshCUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLaMCyAFQRBqJAAL3QgBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBzMPIACgCAEYEQCACKAIEQQNxQQNHDQFBxMPIACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEO4ECwJAAkACQAJAAkACQAJAIAIoAgQiA0ECcUUEQCACQdDDyAAoAgBGDQIgAkHMw8gAKAIARg0DIAIgA0F4cSICEO4EIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQczDyAAoAgBHDQFBxMPIACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYC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hAhsNgAAIBZB0ABqIAwgFkE6ai0AACIUQQJqIglqIAhBAXRqQQJ2QYGChAhsNgAAIBZBO2ogEiAWQSVqLQAAIghqIBRBAXRqQQJ2QYGChAhsNgAAIBZBJmogCSAWQRBqLQAAaiAIQQF0akECdkGBgoQIbDYAAAwGCyAmIDVqIipBGGotAAAhMiAqQRdqLQAAISUgKkERai0AACESICpBEmotAAAhISAqQRNqLQAAIQ0gKCAqQRZqLQAAIhYgKkEUai0AACIUQQJqIgkgKkEVai0AACIMQQF0ampBAnY6AAMgKCAMIA1BAmoiCCAUQQF0ampBAnY6AAIgKCAhIA1BAXRqIAlqQQJ2OgABICggEiAhQQF0aiAIakECdjoAACAqQSZqICgoAgA2AAAgKCAMICVBAmoiCGogFkEBdGpBAnY6AAQgKkE7aiAoKAABNgAAICggFiAyaiAlQQF0akECakECdjoABSAqQdAAaiAoKAECNgAAICggCCAyaiAyQQF0akECdjoABiAqQeUAaiAoKAADNgAADAULICYgNWoiNEEUai0AACEWIDRBE2otAAAhOSA0QeQAai0AACEMIDRBzwBqLQAAISogNEE6ai0AACEyIDRBJWotAAAhJSAoIDRBEmotAAAiEkECaiIUIDRBEGotAAAiIWogNEERai0AACINQQF0akECdjoADCAoIA0gJUECaiIJICFBAXRqakECdjoACyAoICEgMkECaiIIICVBAXRqakECdjoACiAoICogMkEBdGogCWpBAnY6AAkgNEHQAGogKCgACTYAACAoIAwgKkEBdGogCGpBAnY6AAggNEHlAGogKCgCCDYAACAoIBYgFCA5QQF0ampBAnY6AA4gKCA5IA0gEkEBdGpqQQJqQQJ2OgANIDRBJmogKCgACzYAACA0QTtqICgoAQo2AAAMBAsgJiA1aiINQdEAaiANQRBqLQAAIhIgDUERai0AACIWakEBakEBdiIIOgAAIA1BJmogCDoAACANQdIAaiAWIA1BEmotAAAiDGpBAWpBAXYiCDoAACANQSdqIAg6AAAgDUHlAGogDUElai0AACIUIA1BzwBqLQAAIA1BOmotAAAiCUEBdGpqQQJqQQJ2OgAAIA1B5gBqIBYgFCASQQF0ampBAmpBAnYiCDoAACANQdAAaiASIAkgFEEBdGpqQQJqQQJ2OgAAIA1BO2ogCDoAACANQecAaiAMIBIgFkEBdGpqQQJqQQJ2Igg6AAAgDUE8aiAIOgAAIA1B6ABqIA1BE2otAAAiEiAWIAxBAXRqakECakECdiIJOgAAIA1BFGotAAAhFCANQdMAaiAMIBJqQQFqQQF2Igg6AAAgDUE9aiAJOgAAIA1BKGogCDoAACANQT5qIBQgDCASQQF0ampBAmpBAnY6AAAgDUEpaiASIBRqQQFqQQF2OgAADAMLICYgNWoiJUHQAGogJUESai0AACIMICVBE2otAAAiFmpBAWpBAXYiCDoAACAlQSZqIAwgJUERai0AACIJakEBakEBdjoAACAlQSdqIAg6AAAgJUHRAGogFiAlQRRqLQAAIiFqQQFqQQF2Igg6AAAgJUEoaiAIOgAAICVB0gBqICEgJUEVai0AACINakEBakEBdiISOgAAICVB5QBqIAwgIWogFkEBdGpBAmpBAnYiCDoAACAlQTxqIAg6AAAgJUHmAGogFiANQQJqIhQgIUEBdGpqQQJ2Igg6AAAgJUE9aiAIOgAAICVBO2ogCSAWIAxBAXRqakECakECdjoAACAlQRhqLQAAIQkgJUEXai0AACEWICVB5wBqICVBFmotAAAiDCAhIA1BAXRqakECakECdiIIOgAAICVBKWogEjoAACAlQegAaiAJIAwgFkEBdGpqQQJqQQJ2OgAAICVB0wBqIBYgDEEBdCAUampBAnY6AAAgJUE+aiAIOgAADAILICYgNWoiIUHlAGogIUHkAGotAAAiCSAhQc8Aai0AACISakEBakEBdjoAACAhQecAaiASICFBOmotAAAiDGpBAWpBAXYiCDoAACAhQdAAaiAIOgAAICFB0gBqIAwgIUElai0AACINakEBakEBdiIIOgAAICFBO2ogCDoAACAhQT1qIA0gIUEQai0AACIWakEBakEBdiIUOgAAICFB5gBqIAwgCSASQQF0ampBAmpBAnY6AAAgIUHoAGogDSASIAxBAXRqakECakECdiIIOgAAICFB0QBqIAg6AAAgIUHTAGogFiAMIA1BAXRqakECakECdiIIOgAAICFBPGogCDoAACAhQRNqLQAAIQkgIUESai0AACEMICFBPmogIUERai0AACISIA0gFkEBdGpqQQJqQQJ2Igg6AAAgIUEmaiAUOgAAICFBKWogCSASIAxB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AmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQRyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBCAKIANBBXIgH2wgB2oiAkkNAiAKIAJrIiBBCEkNACAPIBAgFyABIAJqEKQEIAIgEUsNAyARIAJrIiBBCEkNASAPIBAgFyACIAhqEKQEIAogA0EGciAfbCAHaiICSQ0CIAogAmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQdyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBEEBITAMBAtBAEEIICBBmL3FABCgBQALQQBBCCAgQai9xQAQoAUACyACIAogCkHIvcUAEKAFAAsgAiARIBFBuL3FABCgBQALIAYNACAwRQ0HIABBBHQhLCAFKAIIIQIgBSgCBCEBQQAhLiAFLQAqDQMMAQsgAEEEdCIsIAZBBHQiLiATbGoiKUEPciE7IClBDnIhHiApQQ1yIRYgKUEMciEMIClBC3IhEiApQQpyIRQgKUEJciEJIClBCHIhFSApQQdyIRkgKUEGciELIClBBXIhESApQQRyIQogKUEDciEIIClBAnIhByApQQFyIQMgBSgCCCECIAUoAgQhASAFLQAqDQEgDyAQIBggASACICkgExCKAyAPIBAgGCABIAIgAyATEIoDIA8gECAYIAEgAiAHIBMQigMgDyAQIBggASACIAggExCKAyAPIBAgGCABIAIgCiATEIoDIA8gECAYIAEgAiARIBMQigMgDyAQIBggASACIAsgExCKAyAPIBAgGCABIAIgGSATEIoDIA8gECAYIAEgAiAVIBMQigMgDyAQIBggASACIAkgExCKAyAPIBAgGCABIAIgFCATEIoDIA8gECAYIAEgAiASIBMQigMgDyAQIBggASACIAwgExCKAyAPIBAgGCABIAIgFiATEIoDIA8gECAYIAEgAiAeIBMQigMgDyAQIBggASACIDsgExCKAyAFKAIgIQsgBSgCHCERIA8gECAYIAUoAhAiCCAFKAIUIgcgBiAfbEEDdCAAQQN0aiIKIB8QigMgDyAQIBggESALIAogHxCKAyAPIBAgGCAIIAcgCkEBciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkECciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEDciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEEciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEFciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEGciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEHciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAwRQ0GCyAnQQZ0IQMgLkEEaiAnbEEEdCAsakEPaiELQX0hJgNAIA8gECAXIAEgAiALQQ9rIBMQ+gQgDyAQIBcgASACIAtBDmsgExD6BCAPIBAgFyABIAIgC0ENayATEPoEIA8gECAXIAEgAiALQQxrIBMQ+gQgDyAQIBcgASACIAtBC2sgExD6BCAPIBAgFyABIAIgC0EKayATEPoEIA8gECAXIAEgAiALQQlrIBMQ+gQgDyAQIBcgASACIAtBCGsgExD6BCAPIBAgFyABIAIgC0EHayATEPoEIA8gECAXIAEgAiALQQZrIBMQ+gQgDyAQIBcgASACIAtBBWsgExD6BCAPIBAgFyABIAIgC0EEayATEPoEIA8gECAXIAEgAiALQQNrIBMQ+gQgDyAQIBcgASACIAtBAmsgExD6BCAPIBAgFyABIAIgC0EBayATEPoEIA8gECAXIAEgAiALIBMQ+gQgAyALaiELICZBAWoiJg0ACyAFKAIgIQogBSgCHCEIIA8gECAXIAUoAhAiByAFKAIUIgMgHyAGQQN0QQRybCAAQQN0aiICIB8Q+gQgDyAQIBcgCCAKIAIgHxD6BCAPIBAgFyAHIAMgAkEBciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkECciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEDciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEEciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEFciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEGciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEHciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BAwFCyAYIAEgAiApIBMQ/AUgGCABIAIgAyATEPwFIBggASACIAcgExD8BSAYIAEgAiAIIBMQ/AUgGCABIAIgCiATEPwFIBggASACIBEgExD8BSAYIAEgAiALIBMQ/AUgGCABIAIgGSATEPwFIBggASACIBUgExD8BSAYIAEgAiAJIBMQ/AUgGCABIAIgFCATEPwFIBggASACIBIgExD8BSAYIAEgAiAMIBMQ/AUgGCABIAIgFiATEPwFIBggASACIB4gExD8BSAYIAEgAiA7IBMQ/AUgMEUNBAsgJ0EGdCEDIC5BBGogJ2xBBHQgLGpBD2ohCkF9IQcDQCAXIAEgAiAKQQ9rIBMQ/AUgFyABIAIgCkEOayATEPwFIBcgASACIApBDWsgExD8BSAXIAEgAiAKQQxrIBMQ/AUgFyABIAIgCkELayATEPwFIBcgASACIApBCmsgExD8BSAXIAEgAiAKQQlrIBMQ/AUgFyABIAIgCkEIayATEPwFIBcgASACIApBB2sgExD8BSAXIAEgAiAKQQZrIBMQ/AUgFyABIAIgCkEFayATEPwFIBcgASACIApBBGsgExD8BSAXIAEgAiAKQQNrIBMQ/AUgFyABIAIgCkECayATEPwFIBcgASACIApBAWsgExD8BSAXIAEgAiAKIBMQ/AUgAyAKaiEKIAdBAWoiBw0ACwwDC0EAQQggC0HYvcUAEKAFAAtBAEEIICJBmL7FABCgBQALQQBBCCAiQfi8xQAQoAUACyAAQQFqIgAgc0cNAQwCCwsgAyABQbi+xQAQ8AcACyAGQQFqIgYgckcNAAsLICsgBf0AAiD9CwIgICsgBf0AAhD9CwIQICsgBf0AAgD9CwIAIAUoAnQiAARAIB0oAgAgAEECdEEBEMEHCyAFKAKQBCIABEAgBSgClAQgAEEebEEBEMEHCyB2EMMCIAUoAvAEQYAhQQEQwQcgBSgCnAQiAARAIAUoAqAEIABBHmxBARDBBwsgBSgCqAQiAARAIAUoAqwEIABBARDBBwsgBSgCtAQiAARAIAUoArgEIABBARDBBwsgBSgCwAQiAARAIAUoAsQEIABBARDBBwsgBSgCzAQiAARAIAUoAtAEIABBARDBBwsgBSgC2AQiAEUNBSAFKALcBCAAQQEQwQcMBQsgBCgC2BgiAUUNACAEKALcGCABQQEQwQcLIHpCIIinIR0geqchBgwBC0ECIQZB1JXHACEdCyArIAI2AhAgKyAdNgIMICsgBjYCCCArIAo7AQYgKyAJOgAFICsgADoABAsgK0GAgICAeDYCACAFKAJ0IgEEQCAFKAJwIgNBBGsoAgAiAEF4cSIGIAFBAnQiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCkAQiAQRAIAUoApQEIgNBBGsoAgAiAEF4cSIGIAFBHmwiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCACIDBEAgBSgCBCIGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNAyAAQQAgASADQSdqSxsNBCAGEKICCyAFKAIMIgMEQCAFKAIQIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoAhgiAwRAIAUoAhwiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQQgBhCiAgsgBUGYAWoQwwIgBSgC8AQiAUEEaygCACIGQXhxQYQhQYghIAZBA3EiABtJDQIgAEEAIAZBqCFPGw0DIAEQogIgBSgCnAQiAQRAIAUoAqAEIgNBBGsoAgAiAEF4cSIGIAFBHmwiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCqAQiAwRAIAUoAqwEIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoArQEIgMEQCAFKAK4BCIGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNAyAAQQAgASADQSdqSxsNBCAGEKICCyAFKALABCIDBEAgBSgCxAQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQQgBhCiAgsgBSgCzAQiAwRAIAUoAtAEIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoAtgEIgNFDQAgBSgC3AQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQIgAEEAIAEgA0EnaksbDQMgBhCiAgsCQCAFKALkBCIDBEAgBSgC6AQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQEgBhCiAgsgBEGwGWokAAwFCwwCC0EBIAAQmgkAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtBAUEJEJoJAAsgDkGABmokAAuBBgIFfwN9QwAAgD8hCgJ/AkAgACgCCCIFIAFLBEAgACgCBCIGIAFBGGxqIgEtABMiAyABLQASIgQgAS0AESIHIAQgB0sbIgQgAyAESxsiAwR9QwAAQMEgACoCRCAALQBYQQJGIgQbIghDAAAQQSAAKgJIIAQbIAiTQwAAfkOVIANBAWtB/wFxs5SSEIgEIgggCJIFQwAAAAALIQggAUEMai8BACIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEBIANBgIACcSEEIANBgPgBcSIDQYD4AUYEQCAEQRB0IgNBgICA/AdyIAFFDQMaIAMgAUENdHJBgICA/gdyDAMLIARBEHQhBCADRQ0BIANBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAEcgwCCyABIAVByMvGABDwBwALIAEgAWdBEGsiAUH//wNxQQhqdEH///8DcSAEQYCAgNgDciABQRd0a3ILviIJQwAAgD9eBEAgCRDgBUNU+C1AlEMAAIA/kpEhCgsCfwJAIAIgBUkEQCAGIAJBGGxqIgEtABMiAiABLQASIgMgAS0AESIFIAMgBUsbIgMgAiADSxsiAgR9QwAAQMEgACoCRCAALQBYQQJGIgMbIglDAAAQQSAAKgJIIAMbIAmTQwAAfkOVIAJBAWtB/wFxs5SSEIgEIgkgCZIFQwAAAAALIQkgAUEMai8BACIBQf//AXFFBEAgAUEQdAwDCyABQf8HcSEAIAFBgIACcSECIAFBgPgBcSIBQYD4AUYEQCACQRB0IgFBgICA/AdyIABFDQMaIAEgAEENdHJBgICA/gdyDAMLIAJBEHQhAiABRQ0BIAFBDXRBgICA/ABxIABBDXRyQYCAgMADaiACcgwCCyACIAVByMvGABDwBwALIAAgAGdBEGsiAEH//wNxQQhqdEH///8DcSACQYCAgNgDciAAQRd0a3ILIQAgCCAKlCIKIApbIAogCSAAviIIQwAAgD9eBH0gCBDgBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcQvfBgIIfwN+IwBBoAFrIgMkACABvCIGQf///wNxIgdBgICABHIgBkEBdEH+//8HcSAGQRd2Qf8BcSIIGyIJrSILQgGDIQxBAiEEAkACQAJAAkACQCAHRUEEQQNBAiAHGyAGQYCAgPwHcSIHGyAHQYCAgPwHRhtBAWsOBAABAgMEC0EDIQQMAwtBBCEEDAILIAhBlgFrIQUgDFAhBEIBIQ0MAQtCgICAECALQgGGIAlBgICABEYiBRshC0ICQgEgBRshDSAMUCEEQeh+Qel+IAUbIAhqIQULIAMgBTsBiAEgAyANNwOAASADQgE3A3ggAyALNwNwIAMgBDoAigECQAJAAkACQAJAAkACQAJAIARB/wFxQQFNBEAgA0HgAGogA0HwAGogA0EHahDVASADKAJgRQ0BIAMgAygCaDYCmAEgAyADKQJgNwOQAQwCCyAEQQJrQf8BcSIIRQ0CQQEhBEHaycQAQcSNwgAgBkEASCIFG0HaycQAQQEgBRsgAhshB0EBIAZBH3YgAhshBSADQQI7ARggCEECRg0DIANBAzYCICADQZiyxQA2AhwMBwsgA0GQAWogA0HwAGogA0EHahBdCyADKAKUASIFRQ0CIAMoApABIgQtAABBME0NA0HaycQAQQEgBkEASCIHGyEJQdrJxABBxI3CACAHGyEHIAZBH3YhCiADLgGYASEIIANBATYCICADIAQ2AhwgA0ECOwEYIAVBAWsiBUUEQCADQSRqIQZBAyEEDAULIANBPGohBiADIAU2AjggA0ECOwEwIANBqLjFADYCKCADQQI7ASQgA0EBNgIsIAMgBEEBajYCNEEFIQQMBAsgA0EDNgIgIANBn7LFADYCHCADQQI7ARhBASEHQQAhBUEBIQQMBAsgA0EDNgIgIANBx43CADYCHAwDC0Gmn8IAQSFBiKDCABCoCQALQdifwgBBH0GYoMIAEKgJAAsgByAJIAIbIQdBASAKIAIbIQUgBkEBOwEMIAZBAjsBACAGQQJBASAIQQBMIgIbNgIIIAZBqaDCAEGooMIAIAIbNgIEIAYgCEEBayICIAJBH3UiAnMgAms7AQ4LIAMgBDYCbCADIAU2AmQgAyAHNgJgIAMgA0EYajYCaCAAIANB4ABqEMkDIANBoAFqJAAL4gYCBX8BfiMAQTBrIgIkACAAKAIAIQAgASgCACIDQfzKxABBASABKAIEIgQoAgwiBREAACEGIAIgADYCDAJAAkACQAJAAkACQAJAIAYNAAJAIAEtAApBgAFxRQRAIAJBDGogARDnBCACIABBAWo2AgxFDQEMAwsgA0HIiscAQQEgBREAAA0BIAJBAToAHyACIAQ2AhQgAiADNgIQIAJBiI/CADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQ5wQNASACKAIgQYOOwgBBAiACKAIkKAIMEQAAIAIgAEEBajYCDA0CCwJAIAEtAApBgAFxBEAgASkCACEHIAJBAToAHyACIAc3AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0DIAIoAiBBg47CAEECIAIoAiQoAgwRAAAgAiAAQQJqNgIMRQ0BDAcLIAEoAgBB06bFAEECIAEoAgQoAgwRAAANAiACQQxqIAEQ5wQgAiAAQQJqNgIMDQYLAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAfIAIgBzcCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQcgAigCIEGDjsIAQQIgAigCJCgCDBEAACACIABBA2o2AgxFDQEMBgsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0GIAJBDGogARDnBCACIABBA2o2AgwNBQsgAS0ACkGAAXFFDQIgASgCACEDIAEoAgQhBEEBIQAgAkEBOgAfIAIgBDYCFCACIAM2AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0EIAIoAiBBg47CAEECIAIoAiQoAgwRAABFDQMMBgsgAiAAQQFqNgIMCyACIABBAmo2AgwMAwsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0BQQEhACACQQxqIAEQ5wQNAyABKAIEIQQgASgCACEDCyADQf3KxABBASAEKAIMEQAAIQAMAgtBASEADAELIAIgAEEDajYCDEEBIQALIAJBMGokACAAC5UGAgZ/BX5BBCEDIAEoAggiBEEEaigCACEFIAECfiAEQQhqKAIAIgYgASkDACIKIAatIgkgCSAKVhunRgRAQeCVxwApAwAiDUIIiCELIA2nIQMgCSANQv8Bg0IEUg0BGgsgCkIBfAsiDDcDACADQf8BcUEERwRAIABCgYCAgJCAgICAfzcCACAAIAOtQv8BgyALQgiGhDcCCA8LIAECfgJAIAYgDCAJIAkgDFYbpyIDa0EETwRAIAMgBWooAAAhBkEEIQNCACELDAELQQAhBkHglccAKQMAIg1CCIghCyANpyEDIAkgDUL/AYNCBFINARoLIAxCBHwLIgo3AwAgA0H/AXFBBEcEQCAAIAM6AAggAEKBgICAkICAgIB/NwIAIAAgC6ciATsACSAAIAtCGIg+AgwgAEELaiABQRB2OgAADwsCQAJAAkACQCACQf//A3EiB0EFTwRAIAdBBWsiAgRAIAIQbiIDBEAgA0EEay0AAEEDcUUgAkVyRQRAIANBACAC/AsACyAEQQhqKAIAIgWtIQkgBUL/////DyAKIApC/////w9aG6drIghBACAFIAhPGyACTwRAIARBBGooAgAgCiAJIAkgClYbp2ohBCACQQFHDQQgAyAELQAAOgAADAULQeCVxwApAwAiC0IIiCEMIAunIQQgC0L/AYNCBFINBgwFC0EBIAIQmgkACyAFIAogCSAJIApWG6dqIQRBASEDDAELIAD9DAEAAAAAAACAYM0RACAAAAD9CwIADwsgAkUNACADIAQgAvwKAAALQgAhDEEEIQQLIAogAq18IQkLIAEgCTcDAAJAAkACQCAEQf8BcUEERwRAIABCgYCAgJCAgICAfzcCACAAIAStQv8BgyAMQgiGhDcCCCACRQ0BIANBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0CIABBACABIAdBImpLGw0DIAMQogIPCyAAIAY2AgwgACACNgIIIAAgAzYCBCAAQQA2AgALDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALggYBAX8CQAJAIAEgAyAFbCAEaiIDSQ0AAkAgASADayIEQQNNDQAgACADaiIEQf8BIAIoAgAgBC0AAGoiBkEAIAZBAEobIgYgBkH/AU4bOgAAIARB/wEgAigCBCAELQABaiIGQQAgBkEAShsiBiAGQf8BThs6AAEgBEH/ASACKAIIIAQtAAJqIgZBACAGQQBKGyIGIAZB/wFOGzoAAiAEQf8BIAIoAgwgBC0AA2oiBEEAIARBAEobIgQgBEH/AU4bOgADIAEgAyAFaiIDSQ0BIAEgA2siBEEESQ0AIAAgA2oiBEH/ASACKAIQIAQtAABqIgZBACAGQQBKGyIGIAZB/wFOGzoAACAEQf8BIAIoAhQgBC0AAWoiBkEAIAZBAEobIgYgBkH/AU4bOgABIARB/wEgAigCGCAELQACaiIGQQAgBkEAShsiBiAGQf8BThs6AAIgBEH/ASACKAIcIAQtAANqIgRBACAEQQBKGyIEIARB/wFOGzoAAyABIAMgBWoiA0kNASABIANrIgRBBEkNACAAIANqIgRB/wEgAigCICAELQAAaiIGQQAgBkEAShsiBiAGQf8BThs6AAAgBEH/ASACKAIkIAQtAAFqIgZBACAGQQBKGyIGIAZB/wFOGzoAASAEQf8BIAIoAiggBC0AAmoiBkEAIAZBAEobIgYgBkH/AU4bOgACIARB/wEgAigCLCAELQADaiIEQQAgBEEAShsiBCAEQf8BThs6AAMgASADIAVqIgNJDQEgASADayIEQQRPDQILQQBBBCAEQaCOxAAQoAUACyADIAEgAUGwjsQAEKAFAAsgACADaiIAQf8BIAIoAjAgAC0AAGoiAUEAIAFBAEobIgEgAUH/AU4bOgAAIABB/wEgAigCNCAALQABaiIBQQAgAUEAShsiASABQf8BThs6AAEgAEH/ASACKAI4IAAtAAJqIgFBACABQQBKGyIBIAFB/wFOGzoAAiAAQf8BIAIoAjwgAC0AA2oiAEEAIABBAEobIgAgAEH/AU4bOgADC84GAwN/AXwCfSMAQRBrIgIkAAJAAkAgASgCAEGUgICAeEYEQCAAAn0CQAJAAkACQAJ9AkACQCABKAIMIgQEQAJ9AkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAggiASgCACIDQYCAgIB4cyADQQBOG0EBaw4KCgABAgMEBQYHCAkLIAEvAQSzDAoLIAEoAgSzDAkLIAEpAwi1DAgLIAEsAASyDAcLIAEuAQSyDAYLIAEoAgSyDAULIAEpAwi0DAQLIAEqAgQMAwsgASsDCCIFtkMAAIA/QwAAgL8gBb1CAFkbmAwCCyAAIAEgAkEPakGohMEAEM0INgIEDAwLIAEtAASzCyEGQQEhAyAEQQFGDQQCQAJAAkACQAJAAkACQAJAAkBBFSABKAIQIgNBgICAgHhzIANBAE4bQQFrDgoLAAECAwQFBgcICgsgAS8BFLMMCwsgASgCFLMMCgsgASkDGLUMCQsgASwAFLIMCAsgAS4BFLIMBwsgASgCFLIMBgsgASkDGLQMBQsgASoCFAwECyABKwMYIgW2QwAAgD9DAACAvyAFvUIAWRuYDAMLIABBACACQQ9qQfj/wAAQuAc2AgQMCQsgACABQRBqIAJBD2pBqITBABDNCDYCBAwICyABLQAUswshByAEQQJGDQICQAJAAkACQAJAAkACQAJAAkBBFSABKAIgIgNBgICAgHhzIANBAE4bQQFrDgoMAAECAwQFBgcICgsgAS8BJLMMDAsgASgCJLMMCwsgASkDKLUMCgsgASwAJLIMCQsgAS4BJLIMCAsgASgCJLIMBwsgASkDKLQMBgsgASoCJAwFCyABKwMoIgW2QwAAgD9DAACAvyAFvUIAWRuYDAQLIABBASACQQ9qQfj/wAAQuAc2AgQMBgsgACABQSBqIAJBD2pBqITBABDNCDYCBAwECyAAQQIgAkEPakH4/8AAELgHNgIEDAMLIAEtACSzCzgCDCAAIAc4AgggACAGOAIEQQAhAyAEQQNGDQIgAkEDNgIIIAAgBEH9////AGpB/////wBxQQNqIAJBCGpBgJzBABC4BzYCBAwBCyAAIAEgAkEPakH4/8AAEM0INgIEC0EBIQMLIAAgAzYCACACQRBqJAAL2wYCBX8BfiMAQTBrIgIkACABKAIAIgNB/MrEAEEBIAEoAgQiBCgCDCIFEQAAIQYgAiAANgIMAkACQAJAAkACQAJAAkAgBg0AAkAgAS0ACkGAAXFFBEAgAkEMaiABEOcEIAIgAEEBajYCDEUNAQwDCyADQciKxwBBASAFEQAADQEgAkEBOgAfIAIgBDYCFCACIAM2AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0BIAIoAiBBg47CAEECIAIoAiQoAgwRAAAgAiAAQQFqNgIMDQILAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAfIAIgBzcCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQMgAigCIEGDjsIAQQIgAigCJCgCDBEAACACIABBAmo2AgxFDQEMBwsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0CIAJBDGogARDnBCACIABBAmo2AgwNBgsCQCABLQAKQYABcQRAIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBiI/CADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQ5wQNByACKAIgQYOOwgBBAiACKAIkKAIMEQAAIAIgAEEDajYCDEUNAQwGCyABKAIAQdOmxQBBAiABKAIEKAIMEQAADQYgAkEMaiABEOcEIAIgAEEDajYCDA0FCyABLQAKQYABcUUNAiABKAIAIQMgASgCBCEEQQEhACACQQE6AB8gAiAENgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQQgAigCIEGDjsIAQQIgAigCJCgCDBEAAEUNAwwGCyACIABBAWo2AgwLIAIgAEECajYCDAwDCyABKAIAQdOmxQBBAiABKAIEKAIMEQAADQFBASEAIAJBDGogARDnBA0DIAEoAgQhBCABKAIAIQMLIANB/crEAEEBIAQoAgwRAAAhAAwCC0EBIQAMAQsgAiAAQQNqNgIMQQEhAAsgAkEwaiQAIAAL8wUBCn8jAEFAaiIFJAAgBUEANgIoIAVBADYCPCADIARBAnRqIQxBBCEHIAVBLGohCiAFQTxqIQ0CQAJAAkACQCAEQQRNBEAgCiEJIA0hCwwBCyAFQQhqIAVBKGpBfyAEQQFrZ3ZBAWoQhgQCQCAFKAIIIgZBgYCAgHhHBEAgBg0BQYipxgBBEUHY28YAEKgJAAsCfyAFKAI8IgdBBUkEQCAHIQYgDSELQQQhByAKDAELIAUoAiwhBiAKIQsgBSgCMAshCSAGIAdJDQEgBiEHDAILIAUoAgwQsQoACwJAIAQgByAGQX9zaiIIIAQgCEkbIghBB00NACAGQQJ0IgQgCWogA2tBEEkNACAEIAlqIQQgBiAIQQFqIgggCEEDcSIIQQQgCBtrIg5qIQYgAyAOQQJ0agNAIAQgA/0AAgD9CwIAIANBEGohAyAEQRBqIQQgDkEEayIODQALIQMLIAkgBkECdGohBANAIAMgDEYNAiAEIAMoAgA2AgAgBEEEaiEEIANBBGohAyAHIAZBAWoiBkcNAAsLIAsgBzYCACADIAxGDQEDQAJ/IAUoAjwiB0EFSQRAIAchBCAKIQlBBCEHIA0MAQsgBSgCLCEEIAUoAjAhCSAKCyEGIAMoAgAhCyAEIAdGBH8gBUEoahDpBiAFKAIwIQkgCiEGIAUoAiwFIAQLQQJ0IAlqIAs2AgAgBiAGKAIAQQFqNgIAIANBBGoiAyAMRw0ACwwBCyALIAY2AgALIAUgBSkCODcDICAFIAX9AAIo/QsDEAJAAkAgASACSwRAIAAgAkEYbGoiACgCFCIBQQVPBEAgACgCCCICQQRrKAIAIgNBeHEiBCABQQJ0IgFBBEEIIANBA3EiAxtqSQ0CIANBACAEIAFBJ2pLGw0DIAIQogILIAAgBSkDIDcCECAAIAX9AAMQ/QsCACAFQUBrJAAPCyACIAFB0M3GABDwBwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC4cHAQZ/IwBBMGsiAiQAAkACQAJAAkACQAJAAkBBAyAAKAIAIgNBgICAgHhzIANBAE4bQQFrDgUBAgMEBQALIAEoAgBB+L/GAEERIAEoAgQoAgwRAAAhAwwFCyABKAIAQYnAxgBBDSABKAIEKAIMEQAAIQMMBAtBASEDIAEoAgAiBEGowMYAQQ8gASgCBCIHKAIMIgURAAANAyAAQQRqIQYCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQUgAiAGNgIcIAEgAEEHakGQu8YAIABBBWpBoLvGACAAQQZqQbC7xgAgAkEcakHAu8YAEIsGRQ0BDAULIARBhY7CAEECIAURAAANBCACQQE6AA8gAiAHNgIUIAIgBDYCECACQYiPwgA2AiAgAiABKQIINwIkIAIgAkEPajYCGCACIAJBEGo2AhwgAiAGNgIsIAJBHGogAEEHakGQu8YAIABBBWpBoLvGACAAQQZqQbC7xgAgAkEsakHAu8YAEIsGDQQgAigCHEGDjsIAQQIgAigCICgCDBEAAA0ECyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMAwtBASEDIAEoAgAiBEG3wMYAQQcgASgCBCIGKAIMIgURAAANAgJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANBCAAKAIEIAAoAgggARDBAkUNAQwECyAEQYWOwgBBAiAFEQAADQMgAkEBOgAsIAIgBjYCFCACIAQ2AhAgAkGIj8IANgIgIAIgASkCCDcCJCACIAJBLGo2AhggAiACQRBqIgQ2AhwgACgCBCAAKAIIIAJBHGoQwQINAyAEQYOOwgBBAhDDAw0DCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMAgsgASgCAEG+wMYAQQogASgCBCgCDBEAACEDDAELIAIgAEEIajYCECABKAIAQdjAxgBBDCABKAIEKAIMEQAAIQMgAkEAOgAhIAIgAzoAICACIAE2AhwgAkEcakHkwMYAQQggAEEEakHIwMYAEJ4FQezAxgBBBSACQRBqQZjAxgAQngUgAi0AISIBIAItACAiBHIhAyAEQQFxIAFBAUdyDQAoAgAiAC0ACkGAAXFFBEAgACgCAEG9y8QAQQIgACgCBCgCDBEAACEDDAELIAAoAgBB8cnEAEEBIAAoAgQoAgwRAAAhAwsgAkEwaiQAIANBAXEL8gUCBX8CfSABKgIAEOAFvCICQf///wNxIQMgAkGAgICAeHEhBSABKgIEAkAgAkGAgID8B3EiBEGAgID8B0YEQCADQQ12IAVBEHZyQYAEQQAgAxtyQYD4AXIhBQwBCyAFQRB2IQUgBEGAgIC4BE0EQCAEQYCAgMQDTwRAIAJBDHYgAkH/3wBxQQBHcSAEQQ12IANBDXZqQYCAAWogBXJqIQUMAgsgBEGAgICYA0kNASADQYCAgARyIgJB/gAgBEEXdiIDa3YhBCACQR0gA2siA3ZBAXEEfyAEQQMgA3RBAWsgAnFBAEdqBSAECyAFciEFDAELIAVBgPgBciEFCyABKgIIIQgQ4AW8IgJB////A3EhAyACQYCAgIB4cSEEAkAgAkGAgID8B3EiAUGAgID8B0cEQCAEQRB2IQQgAUGAgIC4BE0EQCABQYCAgMQDTwRAIAJBDHYgAkH/3wBxQQBHcSABQQ12IANBDXZqQYCAAWogBHJqIQQMAwsgAUGAgICYA0kNAiADQYCAgARyIgJB/gAgAUEXdiIDa3YhASACQR0gA2siA3ZBAXEEfyABQQMgA3RBAWsgAnFBAEdqBSABCyAEciEEDAILIARBgPgBciEEDAELIANBDXYgBEEQdnJBgARBACADG3JBgPgBciEECyAIEOAFvCIDQf///wNxIQYgA0GAgICAeHEhAgJAIANBgICA/AdxIgFBgICA/AdHBEAgAkEQdiECIAFBgICAuARNBEAgAUGAgIDEA08EQCADQQx2IANB/98AcUEAR3EgAUENdiAGQQ12akGAgAFqIAJyaiECDAMLIAFBgICAmANJDQIgBkGAgIAEciIDQf4AIAFBF3YiBmt2IQEgA0EdIAZrIgZ2QQFxBH8gAUEDIAZ0QQFrIANxQQBHagUgAQsgAnIhAgwCCyACQYD4AXIhAgwBCyAGQQ12IAJBEHZyQYAEQQAgBhtyQYD4AXIhAgsgACACOwEoIAAgBDsBJiAAIAU7ASQLuwcCBXsHfyACQf//A3EhAiABQf//A3EhCiAEIARBoCtwIgtrIgxBoCtPBEAgDCENIAMhAQNA/QwAAAAAAAAAAAAAAAAAAAAAIgUgAv0cACEGIAUgCkGtAWz9HAAhB0EAIQQDQCABIARqIgL9AAAAIgj9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBv2uASAI/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIAJBEGr9AAAAIgn9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgCf2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEGIAcgBf2uASEHIAj9ff1/IAX9rgEgCf19/X/9rgEhBSAEQSBqIgRBoCtHDQALIAYgB0EF/asB/a4BIgb9GwEgBv0bAGogBv0bAmogBv0bA2pB8f8DcCECIAFBoCtqIQEgBf0bACAKaiAF/RsBaiAF/RsCaiAF/RsDakHx/wNwIQogDUGgK2siDUGfK0sNAAsLIAMgDGohAyALQSBPBED9DAAAAAAAAAAAAAAAAAAAAAAiBSAC/RwAIQZBACALQeA/cSIBayECIAUgCiALQQV2bP0cACEHIAMhBANAIAT9AAAAIgj9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBv2uASAI/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIARBEGr9AAAAIgn9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgCf2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEGIARBIGohBCAHIAX9rgEhByAI/X39fyAF/a4BIAn9ff1//a4BIQUgAkEgaiICDQALIAEgA2ohAyALQR9xIQsgBf0bACAKaiAF/RsBaiAF/RsCaiAF/RsDaiEKIAYgB0EF/asB/a4BIgb9GwEgBv0bAGogBv0bAmogBv0bA2ohAgsCQCALRQ0AAkAgC0EHcSIBRQRAIAMhBAwBCyADIQQDQCAEIgxBAWohBCAKIAwtAABqIgogAmohAiABQQFrIgENAAsLIAtBCEkNACADIAtqIQEDQCAKIAQtAABqIgMgBEEBai0AAGoiDCAEQQJqLQAAaiINIARBA2otAABqIgsgBEEEai0AAGoiDiAEQQVqLQAAaiIPIARBBmotAABqIhAgBEEHai0AAGoiCiAQIA8gDiALIA0gDCACIANqampqampqaiECIARBCGoiBCABRw0ACwsgACACQfH/A3A7AQIgACAKQfH/A3A7AQALswcCBXsIfyAAQf//A3EhCSAAQRB2IQggAiACQaArcCIKayILQaArTwRAIAshDCABIQIDQP0MAAAAAAAAAAAAAAAAAAAAACIDIAj9HAAhBCADIAlBrQFs/RwAIQVBACEAA0AgACACaiII/QAAACIG/YkB/QwgAB8AHgAdABwAGwAaABkA/boBIAT9rgEgBv2KAf0MGAAXABYAFQAUABMAEgARAP26Af2uASAIQRBq/QAAACIH/YkB/QwQAA8ADgANAAwACwAKAAkA/boB/a4BIAf9igH9DAgABwAGAAUABAADAAIAAQD9ugH9rgEhBCAFIAP9rgEhBSAG/X39fyAD/a4BIAf9ff1//a4BIQMgAEEgaiIAQaArRw0ACyAEIAVBBf2rAf2uASIE/RsBIAT9GwBqIAT9GwJqIAT9GwNqQfH/A3AhCCACQaAraiECIAP9GwAgCWogA/0bAWogA/0bAmogA/0bA2pB8f8DcCEJIAxBoCtrIgxBnytLDQALCyABIAtqIQEgCkEgTwRA/QwAAAAAAAAAAAAAAAAAAAAAIgMgCP0cACEEQQAgCkHgP3EiAmshCCADIAkgCkEFdmz9HAAhBSABIQADQCAA/QAAACIG/YkB/QwgAB8AHgAdABwAGwAaABkA/boBIAT9rgEgBv2KAf0MGAAXABYAFQAUABMAEgARAP26Af2uASAAQRBq/QAAACIH/YkB/QwQAA8ADgANAAwACwAKAAkA/boB/a4BIAf9igH9DAgABwAGAAUABAADAAIAAQD9ugH9rgEhBCAAQSBqIQAgBSAD/a4BIQUgBv19/X8gA/2uASAH/X39f/2uASEDIAhBIGoiCA0ACyAEIAVBBf2rAf2uASIE/RsBIAT9GwBqIAT9GwJqIAT9GwNqIQggCkEfcSEKIAP9GwAgCWogA/0bAWogA/0bAmogA/0bA2ohCSABIAJqIQELAkAgCkUNAAJAIApBB3EiAkUEQCABIQAMAQsgASEAA0AgACILQQFqIQAgCSALLQAAaiIJIAhqIQggAkEBayICDQALCyAKQQhJDQAgASAKaiEBA0AgCSAALQAAaiICIABBAWotAABqIgsgAEECai0AAGoiDCAAQQNqLQAAaiIKIABBBGotAABqIg0gAEEFai0AAGoiDiAAQQZqLQAAaiIPIABBB2otAABqIgkgDyAOIA0gCiAMIAsgAiAIampqampqamohCCAAQQhqIgAgAUcNAAsLIAlB8f8DcCAIQfH/A3BBEHRyC7QGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQAJAAkACQCABKALgAiIDQQRJDQAgAiABKALcAiIGKAAAIgQ2AgAgBEHSgpGaBEYEQCADQQhJDQEgAyAGKAAEIgVBB2pBeHEiB0EQaiIESQ0BIAVBCGoiCCADSyAFQXdLcg0CIAJBADYC/AEgAiAFNgL4ASACIAZBCGo2AvQBIAJBEGogAkH0AWoQeCACKAIUIQUgAigCECIIQQJGBEAgACAFEMEINgIEDAULIAJBiAFqIAJBGGpB6AD8CgAAIAIgBTYChAEgAiAINgKAASAEIAdBCGoiCUkNAyABQQA2AuACIAMgBGshByAGIAlqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBiAEIAZqIAf8CgAACyABIAc2AuACCyABIAEpA7gCIAStfCIKNwO4AiABIAogC3w3A9ACIAEgCjcDyAIgAigC6AFBAUYEQCABIAIpA4gBPgL0AiABIAIoApABIgM2AvgCIAEoAgBBAkcNBiABQQA2AvQCIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFB+AFqIAJBEGoQ/AEMBgsgAiACQegBaq1CgICAgBCENwMQIAJB9AFqIgFBipLAACACQRBqELcHIAEQvQghASACKALcASIDBEAgAigC4AEgA0EobEEIEMEHCyAAIAE2AgQMBAsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEDAMLQQAhAyAAQQA6AAEMBAtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EBIQMMAQtBACEDIAFBADYC8AICQCABKAKIAUECRg0AIAEoAuQBIgRFDQAgASgC6AEiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbakkNAiAFQQAgByAEQSdqSxsNAyAGEKICCyABQYgBaiACQYABakHwAPwKAAAgAEEBOgABCyAAIAM6AAAgAkGAAmokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7QGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQAJAAkACQCABKAKAAyIDQQRJDQAgAiABKAL8AiIGKAAAIgQ2AgAgBEHSgpGaBEYEQCADQQhJDQEgAyAGKAAEIgVBB2pBeHEiB0EQaiIESQ0BIAVBCGoiCCADSyAFQXdLcg0CIAJBADYC/AEgAiAFNgL4ASACIAZBCGo2AvQBIAJBEGogAkH0AWoQeCACKAIUIQUgAigCECIIQQJGBEAgACAFEMEINgIEDAULIAJBiAFqIAJBGGpB6AD8CgAAIAIgBTYChAEgAiAINgKAASAEIAdBCGoiCUkNAyABQQA2AoADIAMgBGshByAGIAlqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBiAEIAZqIAf8CgAACyABIAc2AoADCyABIAEpA9gCIAStfCIKNwPYAiABIAogC3w3A/ACIAEgCjcD6AIgAigC6AFBAUYEQCABIAIpA4gBPgKUAyABIAIoApABIgM2ApgDIAEoAgBBAkcNBiABQQA2ApQDIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFB+AFqIAJBEGoQ6gEMBgsgAiACQegBaq1CgICAgBCENwMQIAJB9AFqIgFBipLAACACQRBqELcHIAEQvQghASACKALcASIDBEAgAigC4AEgA0EobEEIEMEHCyAAIAE2AgQMBAsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEDAMLQQAhAyAAQQA6AAEMBAtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EBIQMMAQtBACEDIAFBADYCkAMCQCABKAKIAUECRg0AIAEoAuQBIgRFDQAgASgC6AEiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbakkNAiAFQQAgByAEQSdqSxsNAyAGEKICCyABQYgBaiACQYABakHwAPwKAAAgAEEBOgABCyAAIAM6AAAgAkGAAmokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC64GAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQCABKAK4AiIDQQRJDQAgAiABKAK0AiIGKAAAIgQ2AgACQCAEQdKCkZoERgRAIANBCEkNAiADIAYoAAQiBUEHakF4cSIHQRBqIgRJDQIgBUEIaiIIIANLIAVBd0tyDQMgAkEANgL8ASACIAU2AvgBIAIgBkEIajYC9AEgAkEQaiACQfQBahB4IAIoAhQhBSACKAIQIghBAkYEQCAAIAUQwQg2AgQMAgsgAkGIAWogAkEYakHoAPwKAAAgAiAFNgKEASACIAg2AoABIAQgB0EIaiIJSQ0EIAFBADYCuAIgAyAEayEHIAYgCWopAAAhCwJAAkAgBEUNACADIARGDQEgB0UNACAGIAQgBmogB/wKAAALIAEgBzYCuAILIAEgASkDcCAErXwiCjcDcCABIAogC3w3A4gBIAEgCjcDgAECQCACKALoAUEBRgRAIAEgAikDiAE+AqgCIAEgAigCkAEiAzYCrAIgASgCkAFBAkYNAQwHCyACIAJB6AFqrUKAgICAEIQ3AxAgAkH0AWoiAUGKksAAIAJBEGoQtwcgARC9CCEBIAIoAtwBIgMEQCACKALgASADQShsQQgQwQcLIAAgATYCBAwCCyABQQA2AqgCIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFBvAJqIAJBEGoQswQMBQsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEC0EBIQMMBAtBACEDIABBADoAAQwDC0EIIAggA0Gw58EAEKAFAAsgCSAEIANBoOfBABCgBQALQQAhAyABQQA2AqQCAkAgASgCAEECRg0AIAEoAlwiBEUNAAJAIAEoAmAiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbak8EQCAFQQAgByAEQSdqSxsNASAGEKICDAILQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyABIAJBgAFqQfAA/AoAACAAQQE6AAELIAAgAzoAACACQYACaiQAC7MGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQCABKAKYBCIDQQRJDQAgAiABKAKUBCIGKAAAIgQ2AgACQCAEQdKCkZoERgRAIANBCEkNAiADIAYoAAQiBUEHakF4cSIHQRBqIgRJDQIgBUEIaiIIIANLIAVBd0tyDQMgAkEANgL8ASACIAU2AvgBIAIgBkEIajYC9AEgAkEQaiACQfQBahB4IAIoAhQhBSACKAIQIghBAkYEQCAAIAUQwQg2AgQMAgsgAkGIAWogAkEYakHoAPwKAAAgAiAFNgKEASACIAg2AoABIAQgB0EIaiIJSQ0EIAFBADYCmAQgAyAEayEHIAYgCWopAAAhCwJAAkAgBEUNACADIARGDQEgB0UNACAGIAQgBmogB/wKAAALIAEgBzYCmAQLIAEgASkD8AMgBK18Igo3A/ADIAEgCiALfDcDiAQgASAKNwOABAJAIAIoAugBQQFGBEAgASACKQOIAT4CrAQgASACKAKQASIDNgKwBCABKAL4AUECRg0BDAcLIAIgAkHoAWqtQoCAgIAQhDcDECACQfQBaiIBQYqSwAAgAkEQahC3ByABEL0IIQEgAigC3AEiAwRAIAIoAuABIANBKGxBCBDBBwsgACABNgIEDAILIAFBADYCrAQgAiACLQDsAUEBcToAGCACIAVBACAIQQFxGzYCFCACIAM2AhAgASACQRBqEKsDDAULIAIgAq1CgICAgOADhDcDECACQQRqIgFBwOfBACACQRBqELcHIAAgARC9CDYCBAtBASEDDAQLQQAhAyAAQQA6AAEMAwtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EAIQMgAUEANgKoBAJAIAEoAoADQQJGDQAgASgC3AMiBEUNAAJAIAEoAuADIgZBBGsoAgAiBUF4cSIHIARBKGwiBEEEQQggBUEDcSIFG2pPBEAgBUEAIAcgBEEnaksbDQEgBhCiAgwCC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgAUGAA2ogAkGAAWpB8AD8CgAAIABBAToAAQsgACADOgAAIAJBgAJqJAALwAYBBH8gACABaiECAkACQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQczDyAAoAgBGBEAgAigCBEEDcUEDRw0BQcTDyAAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQ7gQLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkHQw8gAKAIARg0CIAJBzMPIACgCAEYNAyACIANBeHEiAxDuBCAAIAEgA2oiAUEBcjYCBCAAIAFqIAE2AgAgAEHMw8gAKAIARw0BQcTDyAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAQR8hAiABQYCAgAhJDQMMBAsCQEG8w8gAKAIAIgJBASABQQN2dCIDcUUEQEG8w8gAIAIgA3I2AgAgAUH4AXFBtMHIAGoiASECDAELIAFB+AFxIgFBtMHIAGohAiABQbzByABqKAIAIQELIAIgADYCCCABIAA2AgwMBQtB0MPIACAANgIAQcjDyABByMPIACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQczDyAAoAgBHDQNBxMPIAEEANgIAQczDyABBADYCAA8LQczDyAAgADYCAEHEw8gAQcTDyAAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAUEmIAFBCHZnIgNrdkEBcSADQQF0ckE+cyECCyAAQgA3AhAgACACNgIcIAJBAnRBpMDIAGohBEEBIAJ0IgNBwMPIACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQcDDyABBwMPIACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhgMAgsgBEEQaiAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIICw8LIAAgAjYCDCAAIAE2AggL5AUBBX8gASgCACICQf///wNxIQMgAkGAgICAeHEhBiABKAIEIQQCQCACQYCAgPwHcSIFQYCAgPwHRgRAIANBDXYgBkEQdnJBgARBACADG3JBgPgBciEGDAELIAZBEHYhBiAFQYCAgLgETQRAIAVBgICAxANPBEAgAkEMdiACQf/fAHFBAEdxIAVBDXYgA0ENdmpBgIABaiAGcmohBgwCCyAFQYCAgJgDSQ0BIANBgICABHIiAkH+ACAFQRd2IgNrdiEFIAJBHSADayIDdkEBcQR/IAVBAyADdEEBayACcUEAR2oFIAULIAZyIQYMAQsgBkGA+AFyIQYLIAEoAgghASAEQf///wNxIQMgBEGAgICAeHEhBQJAIARBgICA/AdxIgJBgICA/AdHBEAgBUEQdiEFIAJBgICAuARNBEAgAkGAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgAkENdiADQQ12akGAgAFqIAVyaiEFDAMLIAJBgICAmANJDQIgA0GAgIAEciIDQf4AIAJBF3YiAmt2IQQgA0EdIAJrIgJ2QQFxBH8gBEEDIAJ0QQFrIANxQQBHagUgBAsgBXIhBQwCCyAFQYD4AXIhBQwBCyADQQ12IAVBEHZyQYAEQQAgAxtyQYD4AXIhBQsgAUH///8DcSEDIAFBgICAgHhxIQQCQCABQYCAgPwHcSICQYCAgPwHRwRAIARBEHYhBCACQYCAgLgETQRAIAJBgICAxANPBEAgAUEMdiABQf/fAHFBAEdxIAJBDXYgA0ENdmpBgIABaiAEcmohBAwDCyACQYCAgJgDSQ0CIANBgICABHIiA0H+ACACQRd2IgJrdiEBIANBHSACayICdkEBcQR/IAFBAyACdEEBayADcUEAR2oFIAELIARyIQQMAgsgBEGA+AFyIQQMAQsgA0ENdiAEQRB2ckGABEEAIAMbckGA+AFyIQQLIAAgBDsBIiAAIAU7ASAgACAGOwEeC9wFAgl/BX4jAEEQayILJAACQAJ/AkACQCABUEUEQEGgfyACIAF5Ig+nayIGa8FB0ABsQbCnBWpBzhBtIgJB0ABLDQEgCyACQQR0IgIpA/CsQiABIA+GEPwGQgFBQCAGIAIvAfisQmprIgetIhCGIhFCAX0iEiALKQMIIAspAwBCP4h8IgGDIg9QRQRAIAIvAfqsQiEIIAdBP3EhCSABIBCIpyIGQZDOAE8EQCAGQcCEPUkNBCAGQYDC1y9PBEBBCEEJIAZBgJTr3ANJIgIbIQpBgMLXL0GAlOvcAyACGwwGC0EGQQcgBkGAreIESSICGyEKQcCEPUGAreIEIAIbDAULIAZB5ABPBEBBAkEDIAZB6AdJIgIbIQpB5ABB6AcgAhsMBQtBCkEBIAZBCUsiChsMBAsgAEEANgIADAQLQYC3wgBBHEGct8IAEKgJAAsgAkHRAEGst8IAEPAHAAtBBEEFIAZBoI0GSSICGyEKQZDOAEGgjQYgAhsLIQIgCa0hEAJAAkACQCAKIAhrQQFqwSIIIAXBIglKBEAgB0H//wNxIQ0gCCAFa8EgBCAIIAlrIARJGyIJQQFrIQ5BACEHA0AgAyAHaiAGIAJuIgxBMGo6AAAgBiACIAxsayEGIAcgDkYNAyAHIApGDQIgB0EBaiEHIAJBCkkgAkEKbiECRQ0AC0G8t8IAEJ0KAAsgACADIARBACAIIAUgAUIKgCACrSAQhiAREOQEDAMLIAdBAWohAiANQQFrQT9xrSETQgEhAQNAIAEgE4hQRQRAIABBADYCAAwECyACIARGDQIgAiADaiAPQgp+Ig8gEIinQTBqOgAAIAFCCn4hASAPIBKDIQ8gCSACQQFqIgJHDQALIAAgAyAEIAkgCCAFIA8gESABEOQEDAILIAAgAyAEIAkgCCAFIAatIBCGIA98IAKtIBCGIBEQ5AQMAQsgBCAEQcy3wgAQ8AcACyALQRBqJAAL1wUDBH4IfwF7IAEpAxAgASkDGCACEIMEIQUgASgCCEUEQCABIAFBEGoQ0gELIAEoAgQiDCAFp3EhCSAFQhmIIghC/wCDQoGChIiQoMCAAX4hByABKAIAIQoCQAJAIAItAAAiEEELRwRAA0AgCSAKaikAACIGIAeFIgVCf4UgBUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIFUEUEQANAIBAgCiAFeqdBA3YgCWogDHFBaGxqIg9BGGstAABGDQQgBUIBfSAFgyIFUEUNAAsLIAZCgIGChIiQoMCAf4MhBQJ/AkAgDUUEQCAFUA0BIAV6p0EDdiAJaiAMcSELCyAFIAZCAYaDQgBSDQVBAQwBC0EACyENIA5BCGoiDiAJaiAMcSEJDAALAAsgAigAASEQA0AgCSAKaikAACIGIAeFIgVCf4UgBUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIFUEUEQANAIAogBXqnQQN2IAlqIAxxQWhsaiIPQRhrLQAAQQtGBEAgECAPQRdrKAAARg0ECyAFQgF9IAWDIgVQRQ0ACwsgBkKAgYKEiJCgwIB/gyEFAn8CQCANRQRAIAVQDQEgBXqnQQN2IAlqIAxxIQsLIAUgBkIBhoNCAFINBEEBDAELQQALIQ0gDkEIaiIOIAlqIAxxIQkMAAsACyAPQRBrIgH9AAMAIREgD0EIayAENwMAIAEgAzcDACAAIBH9CwMIIABCATcDAA8LIAogC2osAAAiCUEATgRAIAogCikDAEKAgYKEiJCgwIB/g3qnQQN2IgtqLQAAIQkLIAogC2ogCKdB/wBxIg06AAAgCiALQQhrIAxxakEIaiANOgAAIAEgASgCCCAJQQFxazYCCCABIAEoAgxBAWo2AgwgCiALQWhsaiIBQQhrIAQ3AwAgAUEQayADNwMAIAFBGGsgAjUAACACQQRqMQAAQiCGhDcDACAAQgA3AwALhHcDHn8IfgJ7IwBBEGsiEyQAAkAgASkDGEICUgRAIAFBGGohISABQcgAaiEOIAEoAgwhBSABKAIIIQYDQCABKAIAIQcCQCAFIAZLDQAgAS0AECABKAIEIgZFckUEQCAHQQAgBvwLAAsgEyAhIAcgBhC2AyATLQAAQQRGBEAgBiATKAIEIgVPBEAgAUEBOgAQIAEgBTYCDEEAIQYgAUEANgIIDAILQYyyxgBBJEGwssYAEKgJAAsgEygCBCEJIBMoAgAhCiATMQAAIAFBAToAECABQgA3AwhBACEFQQAhBkIEUQ0AIAAgCTYCBCAAIAo2AgAMAwsgASkDUCEoIAEpA0ghKUEEQQAgBSAGRiIeGyEfIwBBIGsiCyQAIA4gAzYCMCAOIAUgBmsiBTYCJCAOIAI2AiwgDiAGIAdqIhw2AiAgDigCPCIELQAAIgZBDEYEQCAEQQ06AABBDSEGCyAOKQMYISYgDikDECEnIAQgAzYCdCAEIAU2AnAgBEEANgJQIAQgAzYCTCAEIAI2AkggBCAcNgI4IAQgHzoABCAEIAUgHGo2AjwgBEHBAGohESAEQQhqISAgBEGE7ABqIR0gBEGE5wBqIRYgBEGkAWohGCAEQfQqaiEZIARBxNQAaiEaIARByABqIRACQAJAAkACQANAIAZB/wFxIQVBEiEGQR0hCEEBIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDh4cGxoNDAsKCQIBGRgIFx0HHxYVFAYFExIeABEQIQ8OCyAEKAIkIgwgBCgCICIPIAQoAhwiDWoiCU8NAyAEKAI4IQUgBC0AQCEGIAQpAzAhIgNAQn8gBDUClAGGQn+FISMgBCgCPCESIAQtAJgBIRQgBAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAA0AgIiAjg6chCkGABCEIQaDuxwAhBwJAAkACQAJAIBRBAWsOAwABAgMLQbQKIQggGCEHDAILQbQKIQggGSEHDAELQdAEIQggGiEHCyAIIApNDQEgByAKQQJ0aiIHLQADIgggBkH/AXFLBEAgBSASRg0SIAUxAAAhJCAEIAZBCGoiBzoAQCAEIAVBAWoiBTYCOCAEICQgBq2GICKEIiI3AzAgByEGDAELCyAHLwEAIgpBEE8EQCAGQf8BcSEHAkACQAJAAkACQAJAIApBEGsOAgECAAsCQCAHIAhBB2oiFE8EQCAFIQcgBiEKDAELA0AgBSASRg0YIAQgBUEBaiIHNgI4IAQgBkEIaiIKOgBAIAQgBTEAACAGrYYgIoQiIjcDMCAHIQUgFCAKIgZB/wFxSw0ACwsgBCAKIAhrQQdrIgY6AEAgBCAiIAitiCIjQgeIIiI3AzAgCSAjp0H/AHFBC2oiBSAMaiIKSQ0MIAxBwAJLDQ0gBUHAAiAMayIJSw0OIAVBAXQiBQ0EDBELAkAgByAIQQJqIg1PBEAgBiEHDAELIAUhCgNAIAogEkYNFyAEIApBAWoiBTYCOCAEIAZBCGoiBzoAQCAEIAoxAAAgBq2GICKEIiI3AzAgBSEKIA0gByIGQf8BcUsNAAsLIAQgByAIayIKOgBAIAQgIiAIrYgiIzcDMCAMDQEgBEEaNgKIASAEQbecwAA2AoQBDDILAkAgByAIQQNqIgpPBEAgBSEUIAYhBwwBCwNAIAUgEkYNFiAEIAVBAWoiFDYCOCAEIAZBCGoiBzoAQCAEIAUxAAAgBq2GICKEIiI3AzAgFCEFIAogByIGQf8BcUsNAAsLQX0hCiAEIAcgCGtBA2siBjoAQCAEICIgCK2IIiNCA4giIjcDMCAjp0EHcUEDaiIFIAxqIgcgCUsNByAMQcACSw0IIAVBwAIgDGsiCUsNCSAFQQF0IgUNAQwOCyAMQQFrIQYgDEHAAksNBCAWIAZBAXRqLwEAIQcgBCAKQQJrIgY6AEAgBCAjQgKIIiI3AzAgCSAjp0EDcSIIQQNqIgogDGpJBEAgBEEaNgKIASAEQbecwAA2AoQBDDELIApBwAIgDGsiCUsNBSAWIAxBAXRqIQkgCEECav0RIiv9DAAAAAABAAAAAgAAAAMAAAD9QCIq/RsAQQFxBEAgCSAHOwEACyAq/RsBQQFxBEAgCUECaiAHOwEACyAq/RsCQQFxBEAgCUEEaiAHOwEACyAq/RsDQQFxBEAgCUEGaiAHOwEACyAr/QwEAAAABQAAAAYAAAAHAAAA/UAiKv0bAEEBcQRAIAlBCGogBzsBAAsgKv0bAUEBcQRAIAlBCmogBzsBAAsgKv0bAkEBcQRAIAlBDGogBzsBAAsgKv0bA0EBcQRAIAlBDmogBzsBAAsgBCgCICEPIAQoAhwhDSAEKAIkIApqDA8LIBYgDEEBdGpBACAF/AsADAwLIBYgDEEBdGpBACAF/AsADAwLIAQgBiAIayIGOgBAIAQgIiAIrYgiIjcDMCAMQcACSQ0JIAxBwAJB1IPIABDwBwALIAogCEHkgsgAEPAHAAsgBkHAAkH0gsgAEPAHAAtBACAKIAlBhIPIABCgBQALIARBGjYCiAEgBEG3nMAANgKEAUEeIQgMKgsgDEHAAkHAAkGkg8gAEKAFAAtBACAFIAlBlIPIABCgBQALIARBGjYCiAEgBEG3nMAANgKEAQwmCyAMQcACQcACQcSDyAAQoAUAC0EAIAUgCUG0g8gAEKAFAAsgFiAMQQF0aiAKOwEAIAxBAWoMAgsgFCEFIAcMAQsgByEFIAoLIgw2AiQgDCANIA9qIglJDQALDAMLQXwhCkEKIQgMHwtBfiEKQQkhCAweC0EAIQpBGiEIDB0LIAQvAYRrRQRAIARBJTYCiAEgBEHr6MAANgKEAQwcCwJAAkACQCANQcECSQRAIAtBEGoiB0EBIBYgDSAZQbQKQQogHRCxASALKAIQDQEgCygCGCEFIAQgCygCFDYClAEgBEECOgCYASAEIAU2AiggBCgCHCIFQcACSw0CIAQoAiAiBkHAAiAFayIJSw0DIAdBAiAWIAVBAXRqIAYgGkHQBEEJIB0QsQEgCygCEEUEQCALKAIYIQUgCygCFCEGIARBAzoAoAEgBCAGNgKcASAEIAUgBCgCKGo2AihBESEGIAQtAARBBkcNH0EAIQpBESEIDCELIARBFjYCiAEgBEHkm8AANgKEAQwfC0EAIA1BwAJB1ILIABCgBQALIARBHDYCiAEgBEGWm8AANgKEAQwdCyAFQcACQcACQcSCyAAQoAUAC0EAIAYgCUG0gsgAEKAFAAtBFyEGIAQoAmAiCUUNGSAEKQMwISICQCAELQBAIgogCU8EQCAKIQgMAQsgBCgCOCEFIAQoAjwhDANAIAUgDEYEQEEAIQpBFiEIDB4LIAQgBUEBaiIHNgI4IAQgCkEIaiIIOgBAIAQgBTEAACAKrYYgIoQiIjcDMCAHIQUgCSAIIgpB/wFxSw0ACwsgBCAIIAlrOgBAIAQgIiAJrSIjiDcDMCAEIAQoAmQgCWo2AmQgBCAEKAJcICJCfyAjhkJ/hYOnajYCXAwZC0J/IAQ1ApwBhkJ/hSEjIAQoAjghBSAELQBAIQYgBCgCPCEPIAQpAzAhIiAELQCgASESAkACQAJAAkADQCAiICODpyEJQSAhCEGg/scAIQcCQAJAAkACQCASQQFrDgMAAQIDC0G0CiEIIBghBwwCC0G0CiEIIBkhBwwBC0HQBCEIIBohBwsgCCAJTQ0CAkACQCAHIAlBAnRqIgctAAMiCSAGQf8BcUsEQCAFIA9HDQEMBwsgBy8BACENIActAAIiDEEPTQ0BIAkhCAwDCyAFMQAAISQgBCAGQQhqIgc6AEAgBCAFQQFqIgU2AjggBCAkIAathiAihCIiNwMwIAchBgwBCwsgCUEfcSEUQn8gCSAMaq2GQn+FISMDQCAiICODpyAUdiANaiEKQSAhB0Gg/scAIQwCQAJAAkACQCASQQFrDgMAAQIDC0G0CiEHIBghDAwCC0G0CiEHIBkhDAwBC0HQBCEHIBohDAsgByAKTQ0DIAwgCkECdGoiBy0AAyIIIAlqQf8BcSAGQf8BcUsEQCAFIA9GDQUgBTEAACEkIAQgBkEIaiIHOgBAIAQgBUEBaiIFNgI4IAQgJCAGrYYgIoQiIjcDMCAHIQYMAQsLIActAAIhDCAHLwEAIQ0gBCAEKAJkIAlqNgJkIAYgCWshBiAiIAmtiCEiCyAEIAYgCGs6AEAgBCAiIAitiDcDMCAMQcAAcUUEQCAEIAxBD3E2AmAgBCANQf//A3E2AlxBFiEGDBwLIARBFjYCiAEgBEH/6sAANgKEAQwcCyAJIAhBhILIABDwBwALIAogB0GEgsgAEPAHAAtBACEKQRUhCAwaC0ELIQYgBC0AAyIMRQ0XAkAgBC0AQCIHQR9LDQBBACEKQRAhCCAEKAI4IgUgBCgCPCIJRg0aIAQgBUEBaiINNgI4IAQgB60iIkIIfCIjPABAIAQgBCkDMCAFMQAAICKGhCIkNwMwIAdBF0sNACAJIA1GDRogBCAFQQJqIg02AjggBCAiQhB8IiU8AEAgBCAFMQABICOGICSEIiM3AzAgB0EPSw0AIAkgDUYNGiAEIAVBA2oiDTYCOCAEICJCGHwiIjwAQCAEIAUxAAIgJYYgI4QiIzcDMCAHQQdLDQAgCSANRg0aIAQgBUEEajYCOCAEIAdBIHI6AEAgBCAFMQADICKGICOENwMwCyAEIAQoAlAiBSAEKAJUajYCVCAEKAJ4IQoCfwJAAkAgDEEEcQRAIApFBEAgBCAEKAJ8IAQoAkggBRDoAjYCfCAEKQMwISIMAgsgBCAEKAKAASAEKAJIIAUQugEiBTYCfCAEIAU2AoABIAQoAnghCgsgBCkDMCEiIAoNAQsgIqciBUH/gfwHcUEIeCAFQRh4Qf+B/AdxcgwBCyAipwshBSAEIAQoAkwgBCgCUGs2AnQCQCAELQADQQRxBEAgBSAEKAJ8Rw0BCyAEQQA6AEAgBEIANwMwDBgLIARBFTYCiAEgBEG+6cAANgKEAQwYCyAELQABIgdBAXEEQCAEIAQtAEAiBUH4AXE6AEAgBCAEKQMwIAVBB3GtiDcDMEEQIQYMFwsgBCkDMCEiIAQtAEAiBkECTQRAIAQoAjgiBSAEKAI8RgRAQQAhCkENIQgMGgsgBCAFQQFqNgI4IAUxAAAgBq2GICKEISIgBkEIciEGCyAEIAZBAWs6AEAgBCAiQgGIIiM3AzAgBCAip0EBcSAHcjoAAQJAAkACQAJAICOnQQNxQQFrDgMBAgMACyAEIAZBA2s6AEAgBCAiQgOINwMwQQ4hBgwZC0EAIQogBEEAOgCgASAEQQU2ApwBIARBADoAmAEgBEEJNgKUASAEIAZBA2s6AEAgBCAiQgOINwMwQREhBkERIQggBC0ABEEGRw0YDBoLIAQgBkEDazoAQCAEICJCA4g3AzBBGCEGDBcLIARBEzYCiAEgBEG26sAANgKEAUF9IQogBCAGQQNrOgBAIAQgIkIDiDcDMEEeIQgMGAsCQCAEKAJ4IgVBgARxBEACQCAELQBAIgdBD0sNAEEAIQpBCCEIIAQoAjgiBiAEKAI8IglGDRogBCAGQQFqIgw2AjggBCAHrSIiQgh8IiM8AEAgBCAEKQMwIAYxAAAgIoaEIiI3AzAgB0EHSw0AIAkgDEYNGiAEIAZBAmo2AjggBCAHQRByOgBAIAQgBjEAASAjhiAihDcDMAsgBC0AA0EEcQRAIAQvAXwgBCgCMEcNAgsgBEEAOgBAIARCADcDMAsgBCgCjAEiBgRAIAYgBUEJdkEBcTYCLCAEKAKMAUEBNgIwIAQoAnghBQtBDCEGIAQtAANBBHFFIAVFcg0WIARCADcCfAwWCyAEQRQ2AogBIARB8enAADYChAEMFgsCQCAEKAJ4IhJBgCBxBEBBByEIIAQoAnANAUEAIQoMGAtBCCEGIAQoAowBIgVFDRUgBUEANgIkDBULAkAgBCgCPCIJIAQoAjgiBUYEQEEAIQcMAQsgCSAFayEHQQAhBgNAIAUgBmotAAAEQCAFIAZBAWoiBmogCUcNAQwCCwsgBkEBaiEHCwJAIAQoAowBIgZFDQAgBigCJCIKRQ0AIAYoAigiCSAEKAJYIgZPBEAgCSAGayIJIAcgByAJSxsiCQRAIAYgCmogBSAJ/AoAAAsgBCAEKAJYIAlqNgJYIAQoAnghEgwBC0HggcgAQRJB9IHIABCUCAALAkAgEkGABHFFDQAgBC0AA0EEcUUNACAEIAQoAnwgBSAHELoBNgJ8CwJAIAdFBEAgBCAEKAI8IgUgBCgCOCIGIAUgBkkbIgo2AjgMAQsgBSAHakEBay0AACAEIAQoAjwiBSAEKAI4IAdqIgYgBSAGSRsiCjYCOEEIIQZFDRULQQghBiAFIApHDRRBACEKDBYLAkACQCAEKAJ4IhJBgBBxBEBBBiEIIAQoAnANAUEAIQoMGAsgBCgCjAEiBUUNASAFQQA2AhwMAQsCQCAEKAI8IgkgBCgCOCIFRgRAQQAhBwwBCyAJIAVrIQdBACEGA0AgBSAGai0AAARAIAUgBkEBaiIGaiAJRw0BDAILCyAGQQFqIQcLAkAgBCgCjAEiBkUNACAGKAIcIgpFDQAgBigCICIJIAQoAlgiBk8EQCAJIAZrIgkgByAHIAlLGyIJBEAgBiAKaiAFIAn8CgAACyAEIAQoAlggCWo2AlggBCgCeCESDAELQbyByABBEkHQgcgAEJQIAAsCQCASQYAEcUUNACAELQADQQRxRQ0AIAQgBCgCfCAFIAcQugE2AnwLAkAgB0UEQCAEIAQoAjwiBiAEKAI4IgUgBSAGSxsiBTYCOAwBCyAFIAdqQQFrLQAAIAQgBCgCPCIGIAQoAjggB2oiBSAFIAZLGyIFNgI4RQ0BCyAFIAZHDQBBACEKDBYLIARBADYCWEEHIQYMEwsCQCAEKAJ4IgpBgAhxRQ0AIAQoAjwgBCgCOCIIayIFIAQoAlgiBiAFIAZJGyIFBEACQCAEKAKMASIHRQ0AIAcoAhAiDEUNACAFIAcoAhgiCSAHKAIUIAZrIgZrIgdBACAHIAlNGyIHIAUgB0kbIgcEQCAMIAkgBiAGIAlLG2ogCCAH/AoAAAsgBCgCeCEKCwJAIApBgARxRQ0AIAQtAANBBHFFDQAgBCgCPCAEKAI4IgZrIgcgBU8EQCAEIAQoAnwgBiAFELoBNgJ8DAELQQAgBSAHQayByAAQoAUACyAEIAQoAnAgBWs2AnAgBCAEKAJYIAVrIgY2AlggBCAEKAI8IgcgBCgCOCAFaiIFIAUgB0sbNgI4CyAGRQ0AQQAhCkEFIQgMFQsgBEEANgJYQQYhBgwSCwJAAkAgBCgCeCIHQYAIcQRAIAQpAzAhIgJAIAQtAEAiBkEPSw0AQQAhCkEEIQggBCgCOCIFIAQoAjwiCUYNFyAEIAVBAWoiDDYCOCAEIAatIiNCCHwiJDwAQCAEIAUxAAAgI4YgIoQiIjcDMCAGQQdLDQAgCSAMRg0XIAQgBUECajYCOCAEIAZBEHI6AEAgBCAFMQABICSGICKEIiI3AzALIAQgIqciBTYCWCAEKAKMASIGBH8gBiAFNgIUIAQoAngFIAcLQYAEcUUNAiAELQADQQRxDQEMAgtBBSEGIAQoAowBIgVFDRMgBUEANgIQDBMLIAsgBCkDMD0BECAEIAQoAnwgC0EQakECELoBNgJ8CyAEQQA6AEAgBEIANwMwQQUhBgwRC0ENIQYgBC0AAyIHRQ0QIAQpAzAhIgJAAkAgBC0AQCIGQQ9LDQAgBCgCOCIFIAQoAjwiCUYNASAEIAVBAWoiCjYCOCAEIAatIiNCCHwiJDwAQCAEIAUxAAAgI4YgIoQiIjcDMCAGQQdLDQAgCSAKRg0BIAQgBUECajYCOCAEIAZBEHI6AEAgBCAFMQABICSGICKEIiI3AzALAkAgB0ECcUEAICJCn5YCURtFBEAgBCgCjAEiBQR/IAVBfzYCMCAELQADBSAHC0EBcQRAIAQpAzAiIkIIhkKA/gODICJCCIh8Qh+CUA0CCyAEQRc2AogBIARBkOnAADYChAEMFAsgBC0AAkUEQCAEQQ86AAILIAtBn5YCOwAQIARBACALQRBqQQIQugE2AnwgBEEAOgBAIARCADcDMEEBIQYMEgsgIkIPg0IIUQRAIAQgIkIEiCIjNwMwIAQgBC0AQEEEazoAQCAjp0EPcSIGQQhqIQUgBC0AAiIHBH8gBwUgBCAFOgACIAULIAVJIAZBB0tyRQRAIARCgICAgBA3A3ggBEEAOgBAIARCADcDMCAEQQEgBXQ2ApABQQxBGyAiQoDAAINQGyEGDBMLIARBFDYCiAEgBEGF6sAANgKEAQwTCyAEQRs2AogBIARB1uvAADYChAEMEgtBACEIQQAhCgwSCyAEQR02AogBIARBmerAADYChAEMEAtBAiEKIAQtAAFBAnFFBEBBHCEIDBELIARBATYCfEEMIQYMDgsgBCkDMCEiAkAgBC0AQCIGQR9LDQBBACEKQRshCCAEKAI4IgUgBCgCPCIHRg0QIAQgBUEBaiIJNgI4IAQgBq0iI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBF0sNACAHIAlGDRAgBCAFQQJqIgk2AjggBCAjQhB8IiU8AEAgBCAFMQABICSGICKEIiI3AzAgBkEPSw0AIAcgCUYNECAEIAVBA2oiCTYCOCAEICNCGHwiIzwAQCAEIAUxAAIgJYYgIoQiIjcDMCAGQQdLDQAgByAJRg0QIAQgBUEEajYCOCAEIAZBIHI6AEAgBCAFMQADICOGICKEIiI3AzALIARBADoAQCAEQgA3AzAgBCAipyIFQf+B/AdxQQh4IAVBGHhB/4H8B3FyNgJ8QRwhBgwNCyAEKQMwISICQCAELQBAIgZBDUsNAEEAIQpBGCEIIAQoAjgiBSAEKAI8IgdGDQ8gBCAFQQFqIgk2AjggBCAGrSIkQgh8IiM8AEAgBCAFMQAAICSGICKEIiI3AzAgBkEFSwRAICOnIQYMAQsgByAJRg0PIAQgBUECajYCOCAEIAZBEHIiBjoAQCAEIAUxAAEgI4YgIoQiIjcDMAsgBCAGQQ5rOgBAIAQgIkIOiDcDMCAEICKnIgVBH3EiBkGBAmo2AhwgBCAFQQV2QR9xIgdBAWo2AiAgBCAFQQp2QQ9xQQRqNgIYIAZBHUsgB0EdS3JFBEAgBEEANgIkQRkhBgwNCyAEQSQ2AogBIARBk+bAADYChAEMDQsDQCAEKAJMIgUgBCgCUCIHRgRAQQAhCkEXIQgMDwsgBSAHayEFAkAgByAEKAJcIglPBEAgECAJIAUgBCgCWCIHIAUgB0kbIgUQiQMMAQsgCSAHayIHIAQoAhBNBEAgBCgCDCIKQUBqIglBQU8NESAQICAgCUEAIAkgCk0bIAcgBCgCFCIJayIKayAJIAdrIAcgCUsiCRsiCCAIIAUgBCgCWCIMIAogByAJGyIHIAcgDEsbIgcgBSAHSRsiBWoQuQUMAQsgBC0AAUEEcQRAQR4hCCAEQR42AogBIARB0+nAADYChAFBfSEKDBALQaCAyABB1QBBlILIABCTCAALIAQgBCgCWCIHIAVrNgJYIAUgB0cNAAsMCwsCQCAEKAJgIglFBEAgBCgCWCEGDAELIAQpAzAhIgJAIAQtAEAiBSAJTwRAIAUhCgwBCyAEKAI4IQYgBCgCPCEIA0AgBiAIRgRAQQAhCkEUIQgMEAsgBCAGQQFqIgc2AjggBCAFQQhqIgo6AEAgBCAGMQAAIAWthiAihCIiNwMwIAchBiAJIAoiBUH/AXFLDQALCyAEIAogCWs6AEAgBCAiIAmtIiOINwMwIAQgBCgCZCAJajYCZCAEIAQoAlggIkJ/ICOGQn+Fg6dqIgY2AlgLIAQgBjYCaEEVIQYMCgsgBCgCUCIFIAQoAkwiB0YEQEEAIQpBEyEIDAwLIAUgB0kEQCAEKAJIIAVqIAQoAlg6AAAgBCAEKAJQQQFqNgJQDAoLIAUgB0HA/8cAEPAHAAsgBEESOgAAAkAgBCgCPCIKIAQoAjgiCWtBD0kNACAEKAJMIAQoAlBrQYMCTQ0AIAQQswEgBC0AACIGQRJHDQkgBCgCPCEKIAQoAjghCQsgECgCCCEFIARBADYCUCAQKQIAISIgBEIBNwNIIAsgBTYCGCALICI3AxAgCyARKAAANgIIIAsgESgAAzYAC0GABCEUQaDuxwAhDAJAAkACQAJAIAQtAJgBQQFrDgMAAQIDC0G0CiEUIBghDAwCC0G0CiEUIBkhDAwBC0HQBCEUIBohDAtBICEHQaD+xwAhEgJAAkACQAJAIAQtAKABQQFrDgMAAQIDC0G0CiEHIBghEgwCC0G0CiEHIBkhEgwBC0HQBCEHIBohEgsgBC0AQCEPIAQpAzAhIgJAAkADQEESIQgDQAJAAkACQCAEAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhB/wFxQRNrDgUEAQgCCwALIAogCWtBD08EQCALKAIUIAsoAhhrQYMCSw0MCyAEQQA2AmQgCSEFIA8hBiAUICJCfyAENQKUAYZCf4UiI4OnIghLDQIMGgsgBCgCYCIIRQRAIAQoAlghBgwGCyAJIQYgCCAPIgVB/wFxSw0DIAYhDQwEC0EXIQggBCgCYCINRQ0VIAkhBiANIA8iBUH/AXFLDQYgBiEVDAcLA0AgDCAIQQJ0aiINLQADIgggBkH/AXFNDRQgBSAKRwRAIAatISQgBTEAACElIAVBAWohBSAGQQhqIQYgFCAlICSGICKEIiIgI4OnIghNDRkMAQsLQRIhCCAEQRI6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIAo2AjwgBCAKNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIAQgDyAKQQN0aiAJQQN0azoAQEEAIQoMIgsgCygCGCIFIAsoAhQiBkYNCCAFIAZJBEAgCygCECAFaiAEKAJYOgAAIAsgBUEBajYCGAwVCyAFIAZBwP/HABDwBwALA0AgBiAKRg0JIAYxAAAgBa2GICKEISIgBkEBaiINIQYgCCAFQQhqIgVB/wFxSw0ACwsgBCAEKAJkIAhqNgJkIAQgBCgCWCAiQn8gCK0iI4ZCf4WDp2oiBjYCWCAFIAhrIQ8gIiAjiCEiIA0hCQsgBCAGNgJoQRUhCAwQCyAJIQUgDyEGIAcgIkJ/IAQ1ApwBhkJ/hSIjg6ciCE0NDQNAIBIgCEECdGoiDS0AAyIIIAZB/wFxTQ0LIAUgCkcEQCAGrSEkIAUxAAAhJSAFQQFqIQUgBkEIaiEGIAcgJSAkhiAihCIiICODpyIITQ0PDAELC0EVIQggBEEVOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDB0LA0AgBiAKRg0GIAYxAAAgBa2GICKEISIgBkEBaiIVIQYgDSAFQQhqIgVB/wFxSw0ACwsgBCAEKAJkIA1qNgJkIAQgBCgCXCAiQn8gDa0iI4ZCf4WDp2o2AlwgBSANayEPICIgI4ghIiAVIQkMDQsgCygCFCIFIAsoAhgiBkYNBCAFIAZrIQUgBiAEKAJcIghPBEAgC0EQaiAIIAUgBCgCWCIGIAUgBkkbIgYQiQMMBwsgCCAGayIGIAQoAhBNBEAgBCgCDCINQUBqIghBQU8NHCALQRBqICAgCEEAIAggDU0bIAYgBCgCFCIIayINayAIIAZrIAYgCEsiCBsiFSAVIAUgBCgCWCIbIA0gBiAIGyIGIAYgG0sbIgYgBSAGSRsiBmoQuQUMBwsgBC0AAUEEcUUNBSAQIAsoAhg2AgggECALKQMQNwIAIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBHjYCiAEgBEHT6cAANgKEAUEeDAgLIARBEjoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIAQQswEgBC0AACEGDBcLQRMhCCAEQRM6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAA0EAIQoMGAtBFCEIIARBFDoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgCjYCPCAEIAo2AjggBCAiNwMwIBEgCygCCDYAACARIAsoAAs2AAMgBCAPIApBA3RqIAlBA3RrOgBAQQAhCgwXC0EWIQggBEEWOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBYLQRchCCAEQRc6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAA0EAIQoMFQtBoIDIAEHVAEGcgcgAEJMIAAsgBCAEKAJYIgUgBms2AlhBEkEXIAUgBkYbIQgMBQsgDS8BACEVAkAgDS0AAiIXQQ9LBEAgCCENDAELICJCfyAIIBdqrYZCf4UiI4OnIAh2IBVqIg0gB08NAiAIQR9xIRcCQANAIBIgDUECdGoiGy0AAyINIAhqQf8BcSAGQf8BcU0NASAFIApHBEAgBq0hJCAFMQAAIAVBAWohBSAGQQhqIQYgJIYgIoQiIiAjg6cgF3YgFWoiDSAHTw0FDAELC0EVIQggBEEVOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBQLIBstAAIhFyAbLwEAIRUgBCAEKAJkIAhqNgJkIAYgCGshBiAiIAitiCEiCyAGIA1rIQ8gIiANrYghIiAXQcAAcUUEQCAEIBdBD3E2AmAgBCAVQf//A3E2AlxBFiEIIAUhCQwFCyAQIAsoAhg2AgggECALKQMQNwIAIAQgDzoAQCAEIAo2AjwgBCAFNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBFjYCiAEgBEH/6sAANgKEAUEeCyIIOgAAQX0hCgwRCyANIAdBjIHIABDwBwALIAggB0H8gMgAEPAHAAsgDS8BACEVAkAgDS0AAiIXRQRAQQAhDSAFIQlBACEXDAELQQAhDSAXQQ9LBEAgBSEJDAELAkAgFCAiQn8gCCAXaq2GQn+FIiODp0H//wNxIAhBD3EiF3YgFWpB//8DcSINTQ0AAkADQCAMIA1BAnRqIg0tAAMiGyAIakH/AXEgBkH/AXFNDQEgBSAKRwRAIAatISQgBTEAACElIAVBAWohBSAGQQhqIQYgFCAlICSGICKEIiIgI4OnQf//A3EgF3YgFWpB//8DcSINTQ0DDAELC0ESIQggBEESOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBELIAYgCGshBiAiIAitiCEiIA0tAAIhFyANLwEAIRUgCCENIAUhCSAbIQgMAQsgDSAUQeyAyAAQ8AcACyAEIBVB//8DcTYCWCAEIA0gCEH/AXFqNgJkIAYgCGshDyAiIAitiCEiQRMhCCAXRQ0AIBdBIHENAiAXQcAAcUUEQCAEIBdBD3E2AmBBFCEIDAELCwtBHiEIIARBHjoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBHDYCiAEgBEHj6sAANgKEAUF9IQoMDAtBDCEGIARBDDoAACAEQX82AmQgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAwwJCyAIIBRB3IDIABDwBwALIAQgBC0AQCIGQfgBcToAQCAEIAQpAzAgBkEHca2IIiI3AzACQCAGQR9LDQBBACEKQQ4hCCAEKAI4IgUgBCgCPCIHRg0KIAQgBUEBaiIJNgI4IAQgBq1CGIMiI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBGHEiBkEYRg0AIAcgCUYNCiAEIAVBAmoiCTYCOCAEICNCEHwiJTwAQCAEIAUxAAEgJIYgIoQiIjcDMCAGQQ9LDQAgByAJRg0KIAQgBUEDaiIJNgI4IAQgI0IYfCIjPABAIAQgBTEAAiAlhiAihCIiNwMwIAYNACAHIAlGDQogBEEgOgBAIAQgBUEEajYCOCAEIAUxAAMgI4YgIoQiIjcDMAsgIkIQiCAihUL//wODQv//A1EEQEEAIQogBEEAOgBAIARCADcDMCAEICKnQf//A3E2AlhBDyEGIAQtAARBBkcNCEEOIQgMCgsgBEEdNgKIASAEQbfmwAA2AoQBDAgLQQ0hBiAELQAEQQRNDQZBACEKQQwhCAwICwJAIAQtAAMiCUUNACAEKAJ4RQ0AAkAgBC0AQCIGQR9LDQBBACEKQQshCCAEKAI4IgUgBCgCPCIHRg0JIAQgBUEBaiIMNgI4IAQgBq0iIkIIfCIjPABAIAQgBCkDMCAFMQAAICKGhCIkNwMwIAZBF0sNACAHIAxGDQkgBCAFQQJqIgw2AjggBCAiQhB8IiU8AEAgBCAFMQABICOGICSEIiM3AzAgBkEPSw0AIAcgDEYNCSAEIAVBA2oiDDYCOCAEICJCGHwiIjwAQCAEIAUxAAIgJYYgI4QiIzcDMCAGQQdLDQAgByAMRg0JIAQgBUEEajYCOCAEIAZBIHI6AEAgBCAFMQADICKGICOENwMwCwJAIAlBBHEEQCAEKAJUIAQoAjBHDQELIARBADoAQCAEQgA3AzAMAQsgBEEXNgKIASAEQafpwAA2AoQBDAcLQR0hCEEBIQoMBwsCQCAELQBAIgZBD0sNAEEAIQpBAyEIIAQoAjgiBSAEKAI8IgdGDQcgBCAFQQFqIgk2AjggBCAGrSIiQgh8IiM8AEAgBCAEKQMwIAUxAAAgIoaEIiI3AzAgBkEHSw0AIAcgCUYNByAEIAVBAmo2AjggBCAGQRByOgBAIAQgBTEAASAjhiAihDcDMAsgBCgCjAEiBQRAIAUgBC0AMDYCCCAEKAKMASAEKQMwQgiIPgIMCwJAIAQtAHlBAnFFDQAgBC0AA0EEcUUNACALIAQpAzA9ARAgBCAEKAJ8IAtBEGpBAhC6ATYCfAsgBEEAOgBAIARCADcDMEEEIQYMBAsCQCAELQBAIgZBH0sNAEEAIQpBAiEIIAQoAjgiBSAEKAI8IgdGDQYgBCAFQQFqIgk2AjggBCAGrSIiQgh8IiM8AEAgBCAEKQMwIAUxAAAgIoaEIiQ3AzAgBkEXSw0AIAcgCUYNBiAEIAVBAmoiCTYCOCAEICJCEHwiJTwAQCAEIAUxAAEgI4YgJIQiIzcDMCAGQQ9LDQAgByAJRg0GIAQgBUEDaiIJNgI4IAQgIkIYfCIiPABAIAQgBTEAAiAlhiAjhCIjNwMwIAZBB0sNACAHIAlGDQYgBCAFQQRqNgI4IAQgBkEgcjoAQCAEIAUxAAMgIoYgI4Q3AzALIAQoAowBIgUEQCAFIAQpAzA+AgQLAkAgBC0AeUECcUUNACAELQADQQRxRQ0AIAsgBCkDMD4CECAEIAQoAnwgC0EQakEEELoBNgJ8CyAEQQA6AEAgBEIANwMwQQMhBgwDCyAEKQMwISICQCAELQBAIgZBD0sNAEEAIQogBCgCOCIFIAQoAjwiB0YEQEEBIQgMBgtBASEIIAQgBUEBaiIJNgI4IAQgBq0iI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBB0sNACAHIAlGDQUgBCAFQQJqNgI4IAQgBkEQcjoAQCAEIAUxAAEgJIYgIoQiIjcDMAsgBCAipyIFNgJ4AkACQCAFQf8BcUEIRgRAIAVBgMADcQ0BIAQoAowBIgYEfyAGIAVBCHZBAXE2AgAgBCgCeAUgBQtBgARxRQ0CIAQtAANBBHFFDQIgBCgCfCEFIAsgBCkDMD0AECAEIAUgC0EQakECELoBNgJ8DAILIARBGzYCiAEgBEHW68AANgKEAQwFCyAEQRk2AogBIARBy5vAADYChAEMBAsgBEEAOgBAIARCADcDMEECIQYMAgtBDCEGIAQoAlgiCEUNASAEKAI4IRIgBCgCPCEHIAQoAlAhCiAEKAJIIQwgBCgCTCEJAkADQCAHIBJrIgUgBCgCTCAKayIHIAggByAISRsiByAFIAdJGyIFRQRAQQAhCkEPIQgMBgsgCSAKTwRAIAUgCSAKayIHSw0CIAUEQCAKIAxqIBIgBfwKAAALIAQgBSAKaiIKNgJQIAQgBCgCWCAFayIINgJYIAQgBCgCPCIHIAQoAjggBWoiBSAFIAdLGyISNgI4IAhFDQQMAQsLIAogCSAJQcyGyAAQoAUAC0EAIAUgB0G8hsgAEKAFAAsCQCAEKAIkIgYgBCgCGCIHTw0AQRMgBiAGQRNNGyEMIAQoAjghCCAEKQMwISMgBC0AQCEFIAQoAjwhDQJAA0ACQCAFQf8BcUECSwRAICMhIiAFIQoMAQsgCCANRgRAQQAhCkEZIQgMBwsgBCAIQQFqIgk2AjggBCAFQQhyIgo6AEAgBCAIMQAAIAWthiAjhCIiNwMwIAkhCAsgBiAMRg0BIAQgCkEDayIFOgBAIAQgIkIDiCIjNwMwIAQgBkEBaiIJNgIkIBYgBkH77ccAai0AAEEBdGogIqdBB3E7AQAgCSIGIAdHDQALIAchBgwBCyAMQRNBpILIABDwBwALIAZBEk0EQAJAIAZBC00EQCAGQfvtxwBqIQUgBkETIAZrIglBGHEiB2ohBiAHIQoDQCAWIAX9XQAAIiv9iQH9qQEiKv0bAEEBdGpBADsBACAWICr9GwFBAXRqQQA7AQAgFiAq/RsCQQF0akEAOwEAIBYgKv0bA0EBdGpBADsBACAWICsgKv0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pASIq/RsAQQF0akEAOwEAIBYgKv0bAUEBdGpBADsBACAWICr9GwJBAXRqQQA7AQAgFiAq/RsDQQF0akEAOwEAIAVBCGohBSAKQQhrIgoNAAsgByAJRg0BCwNAIBYgBkH77ccAai0AAEEBdGpBADsBACAGQQFqIgZBE0cNAAsLIARBEzYCJAsgC0EQakEAIBZBEyAYQbQKQQcgHRCxASALKAIQRQRAIAsoAhQhBSALKAIYIQYgBEEBOgCYASAEIAY2AiggBCAFNgKUASAEQQA2AiRBGiEGDAELCyAEQRk2AogBIARBspvAADYChAELQX0hCkEeIQgLIAQgCDoAACAOKAIgIRQgDiAOKAI8IgUoAjgiDTYCICAOIAUoAjwgDWs2AiQgDiAFKAJMIgcgBSgCUCIGazYCMCAOIAYgBSgCSCIMaiIENgIsIA4gDigCKCANIBRrajYCKCAFIAUoAnQgBiAHa2oiCSAFKAJUaiIHNgJUIA4gBzYCNCAOIAUoAnwiEjYCUAJAAkACQAJAAkACQAJAAkACQCAFQQxqKAIAIghBQGpBQUkEQAJAIAhBwABLDQAgCUUNCiAFLQAAIgdBHksNAEEBIAd0IgdBgIyAgARxDQogB0GAkARxRQ0AIAUtAARBBEYNCgsgBiAJSQ0BIAUtAANBBHEhFSAFKAJ4IRsgCEFAaiIGQQAgBiAITRsiByAJSwRAIAkgCSAHIAUoAhQiGGsiDyAJIA9JGyIGayEZIAYgDGohGiAVRQRAIAggGEkNBCAGIAggGGsiCEsNBSAFKAIIIQggBgRAIAggGGogDCAG/AoAAAsgCSAPTQ0KIBlFDQkgCCAaIBn8CgAADAkLIAggGEkNBSAGIAggGGsiCEsNBiAFKAIIIgggGGohFSAbRQRAIAYEQCAVIAwgBvwKAAALIAUgEiAMIAYQ6AIiDDYCfCAJIA9NDQogGQRAIAggGiAZ/AoAAAsgBSAMIBogGRDoAjYCfAwJCyAFIAUoAoABIAwgBhC6ATYCgAEgBgRAIBUgDCAG/AoAAAsgCSAPTQ0JIAUgBSgCgAEgGiAZELoBNgKAASAZRQ0IIAggGiAZ/AoAAAwICyAMIAkgB2siCGohBgJAIBUEQCAbDQEgEiAMIAgQ6AIhCCAHBEAgBSgCCCAGIAf8CgAACyAFIAggBiAHEOgCNgJ8DAgLIAdFDQcgBSgCCCAGIAf8CgAADAcLIAUoAoABIAwgCBC6ASEIIAUoAgggBSAIIAYgBxC6ATYCgAEgB0UNBiAGIAf8CgAADAYLDAkLQQAgCSAGQZSHyAAQoAUACyAYIAggCEHQhMgAEKAFAAtBACAGIAhBwITIABCgBQALIBggCCAIQfCEyAAQoAUAC0EAIAYgCEHghMgAEKAFAAsgBSAHNgIQIAVBADYCFAwCCyAFIAc2AhAgBSAZNgIUDAELIAUgBiAYaiIIQQAgByAIRxs2AhQgByAFKAIQIghNDQAgBSAGIAhqNgIQCyAFKAKEASIGBEACQCAFKAKIASIHBEAgBiAHakEBay0AAEUNAQtB3IbIAEElQYSHyAAQqAkACyAOIAY2AjgLIAUtAEAgBS0AAUEGdEHAAHFyIQYgDiAFLQAAQQxrQf8BcSIFQQZJBH8gBUECdCgCmI5IIAZyBSAGCzYCTCAOIA4pAxAgDSAca618IiI3AxAgDiAOKQMYIAQgAmutfCIjNwMYAkACQAJAAkACQAJAAkAgCkUEQCAJRSANIBRGcSAfQf8BcUEERnINAQsCQAJAIApBBGoOBwUFBQEDAAQCC0ECIQoMAgtB9OzHAEGTAUHA7ccAEJMIAAtBASEKCyAOIA4pAwAgIiAnfXw3AwAgDiAOKQMIICMgJn18NwMIDAMLIA4gDikDACAiICd9fDcDACAOIA4pAwggIyAmfXw3AwgMAQsgDiAOKQMAICIgJ318NwMAIA4gDikDCCAjICZ9fDcDCAJAIApBAmsOAgECAAsgDigCOCIFBH8gC0EQaiAFAkAgBS0AAEUEQEEAIQUMAQsgBUEBaiEHQQAhBQNAIAUiBkEBaiEFIAYgB2otAAANAAsLIAUQlwMgCygCGCEFQQAgCygCFCALKAIQGwVBAAshBiATIAU2AgggEyAGNgIEIBNBADYCAAwCCyATIBI2AgQgE0EBNgIADAELIBNBAjYCACATIAo6AAQLIAtBIGokAAwBC0Hkg8gAQcoAQbCEyAAQqAkACyATLQAEIQkgEygCACABIAEoAgwiBSABKAIIIAEpA0ggKX2naiIGIAUgBkkbIgY2AghBAkcEQCAAQRRBsMnGAEEWEPIGDAMLIAEpA1AgKH2nIQcCQAJAAkAgCUEBaw4CAQIACyAeIANFcg0BIAdFDQIMAQsgHiADRXINACAHRQ0BCwsgAEEEOgAAIAAgBzYCBAwBCwJAAkACQCABKAIoIgYgASgCLCIFRiABKAIkIgcgA01xRQRAIAEoAiAhCSAFIAZLDQIgAS0AMCAHRXJFBEAgCUEAIAf8CwALIBMgAUE4aiAJIAcQtgMgEy0AAEEERw0BIAcgEygCBCIFTwRAIAFBAToAMCABIAU2AixBACEGDAMLQYyyxgBBJEGwssYAEKgJAAsgAUIANwMoIAAgAUE4aiACIAMQtgMMAwsgEygCBCEHIBMoAgAhCiATMQAAIAFBAToAMCABQgA3AyhBACEFQQAhBkIEUg0BCyAGIAlqIQcCQCAFIAZrIgkgAyADIAlLGyIDQQFGBEAgAiAHLQAAOgAADAELIANFDQAgAiAHIAP8CgAACyAAIAM2AgQgAEEEOgAAIAEgBSADIAZqIgAgACAFSxs2AigMAQsgACAHNgIEIAAgCjYCAAsgE0EQaiQAC9cFAQl/IwBBMGsiBCQAAkACQAJAAkACQAJAIAIgA0sEQCABIANBGGxqIgEoAhQiAkEETQRAIARBADYCCCAEQQA2AiwgAUEEaiIDIAJBAnRqIQogBEEsaiIIIQsgBEEMaiIJIQcMAwsgASgCCCEDIAEoAgQhASAEQQA2AgggBEEANgIsIAMgAUECdGohCiAEQQxqIQcgBEEsaiELIAFBCUkEQCAHIQkgCyEIDAMLIAQgBEEIakF/IAFBAWtndkEBahCHBCAEKAIAIgFBgYCAgHhHBEAgAQ0CQYipxgBBEUHY28YAEKgJAAsCfyAEKAIsIgZBCUkEQCAGIQEgByEJQQghBiALDAELIAQoAgwhASAEKAIQIQkgBwshCCABIAZPDQQMAwsgAyACQcDNxgAQ8AcACyAEKAIEELEKAAtBACEBQQghBgsCQCAKIANrIgJBA3EgAkECdiICIAYgAUF/c2oiBSACIAVJGyIFQQdNcg0AIAFBAnQiAiAJaiADa0EQSQ0AIAIgCWohAiABIAVBAWoiBSAFQQNxIgVBBCAFG2siBWohASADIAVBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAFQQRrIgUNAAshAwsgCSABQQJ0aiECA0AgAyAKRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAYgAUEBaiIBRw0ACyAGIQELIAggATYCACADIApGDQEDQAJ/IAQoAiwiBkEJSQRAIAYhAiAHIQVBCCEGIAsMAQsgBCgCDCECIAQoAhAhBSAHCyEBIAMoAgAhCCACIAZGBEAgBEEIahDqBiAEKAIMIQIgBCgCECEFIAchAQsgBSACQQJ0aiAINgIAIAEgASgCAEEBajYCACADQQRqIgMgCkcNAAsMAQsgCCABNgIACyAAIAQpAig3AiAgACAE/QACGP0LAhAgACAE/QACCP0LAgAgBEEwaiQAC9cFAQl/IwBBMGsiBCQAAkACQAJAAkACQAJAIAIgA0sEQCABIANBGGxqIgEoAhQiAkEETQRAIARBADYCCCAEQQA2AiwgAUEEaiIDIAJBAnRqIQogBEEsaiIIIQsgBEEMaiIJIQcMAwsgASgCCCEDIAEoAgQhASAEQQA2AgggBEEANgIsIAMgAUECdGohCiAEQQxqIQcgBEEsaiELIAFBCUkEQCAHIQkgCyEIDAMLIAQgBEEIakF/IAFBAWtndkEBahCHBCAEKAIAIgFBgYCAgHhHBEAgAQ0CQYipxgBBEUHY28YAEKgJAAsCfyAEKAIsIgZBCUkEQCAGIQEgByEJQQghBiALDAELIAQoAgwhASAEKAIQIQkgBwshCCABIAZPDQQMAwsgAyACQejRxgAQ8AcACyAEKAIEELEKAAtBACEBQQghBgsCQCAKIANrIgJBA3EgAkECdiICIAYgAUF/c2oiBSACIAVJGyIFQQdNcg0AIAFBAnQiAiAJaiADa0EQSQ0AIAIgCWohAiABIAVBAWoiBSAFQQNxIgVBBCAFG2siBWohASADIAVBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAFQQRrIgUNAAshAwsgCSABQQJ0aiECA0AgAyAKRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAYgAUEBaiIBRw0ACyAGIQELIAggATYCACADIApGDQEDQAJ/IAQoAiwiBkEJSQRAIAYhAiAHIQVBCCEGIAsMAQsgBCgCDCECIAQoAhAhBSAHCyEBIAMoAgAhCCACIAZGBEAgBEEIahDqBiAEKAIMIQIgBCgCECEFIAchAQsgBSACQQJ0aiAINgIAIAEgASgCAEEBajYCACADQQRqIgMgCkcNAAsMAQsgCCABNgIACyAAIAQpAig3AiAgACAE/QACGP0LAhAgACAE/QACCP0LAgAgBEEwaiQAC7cGAgt/BHsCQAJAAkACQAJAIAMgBCAFbCIJaiIKQQFrIgYgAU0EQCAEQQFrIAVsIANqIgRBAWsiByAGTw0BIAQgBksNAiABIAZrIQsgBCAGRgRAIAEgCWsgA2shBEEAIQAgAiEDA0AgACALTw0FIAIgBEsNBiAEIAVrIQQgACAFaiEAIANBAWsiAw0ACwwGCyAAIAZqIQ0gACAHai0AACEOIAAgBGohByAGIARrIgEgAiABIAJJGyIGQQFxIQ8gBkEYcSEDIAAgCmohDCAGQQhJIRBBACEJA0AgBSAJbCIAIAtPDQQgAiALIABBAWoiAWsiBEsNBSAAIA1qLQAAIA5rIQogASANaiEEQQAhAQJAIBAgCUEBaiIJIAVsQQhJckUEQCAEIAr9ESIRIAf9XQAAIhL9iQH9qQH9rgH9DAAAAAAAAAAAAAAAAAAAAAD9uAH9DP8AAAD/AAAA/wAAAP8AAAAiFP22ASARIBIgEf0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pAf2uASAT/bgBIBT9tgH9DQAECAwQFBgcAAAAAAAAAAD9WwAAACADQQhHBEAgBCARIAf9XQAIIhL9iQH9qQH9rgEgE/24ASAU/bYBIBEgEiAR/Q0EBQYHAAAAAAAAAAAAAAAA/YkB/akB/a4BIBP9uAEgFP22Af0NAAQIDBAUGBwAAAAAAAAAAP1bAAgACyAGIAMiAUYNAQsgAUEBciEAIA8EQCABIARqQf8BIAogASAHai0AAGoiAUEAIAFBAEobIgEgAUH/AU4bOgAAIAAhAQsgACAGRg0AIAEgDGohACABIAdqIQQgBiABayEBA0AgAEH/ASAKIAQtAABqIghBACAIQQBKGyIIIAhB/wFOGzoAACAAQQFqQf8BIAogBEEBai0AAGoiCEEAIAhBAEobIgggCEH/AU4bOgAAIABBAmohACAEQQJqIQQgAUECayIBDQALCyAFIAxqIQwgAiAJRw0ACwwFC0H4gccAQRNB8I7EABCTCAALIAcgBkGAj8QAEPAHAAsgBCAGIAZBsI/EABCgBQALIAAgC0GQj8QAEPAHAAtBACACIARBoI/EABCgBQALC9MFAgh/An0gAQRAIABBDGohBgNAAkACfwJAAkACfwJAIAYvAQAiAkH//wFxIgcEQCACQf8HcSEAIAJBgIACcSEEIAJBgPgBcSIDQYD4AUciCEUEQCAEQRB0IQUgBUGAgID8B3IgAEUNAxogBSAAQQ10ckGAgID+B3IMAwsgBEEQdCEFIANFDQEgA0ENdEGAgID8AHEgAEENdHJBgICAwANqIAVyDAILIAJBEHS+QwAAgD9eDQIMBQsgACAAZ0EQayIJQf//A3FBCGp0Qf///wNxIAVBgICA2ANyIAlBF3Rrcgu+QwAAgD9eRQ0DIAcNAQsgAkEQdAwBCyAIRQRAIARBEHQhAiACQYCAgPwHciAARQ0BGiACIABBDXRyQYCAgP4HcgwBCyAEQRB0IQIgA0ENdEGAgID8AHEgAEENdHJBgICAwANqIAJyIAMNABogACAAZ0EQayIAQf//A3FBCGp0Qf///wNxIAJBgICA2ANyIABBF3RrcgtDAACAPyEKviILQwAAgD9eBEAgCxDgBUNU+C1AlEMAAIA/kpFDAACAv5JDAACAPpRDAACAP5IhCgtDAAAAQEMAAIA/IAogCkMAAIA/XRsiCiAKQwAAAEBeG7wiBEH///8DcSEDIARBgICAgHhxIQICQCAEQYCAgPwHcSIAQYCAgPwHRgRAIANBDXYgAkEQdnJBgARBACADG3JBgPgBciECDAELIAJBEHYhAiAAQYCAgLgETQRAIABBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIABBDXYgA0ENdmpBgIABaiACcmohAgwCCyAAQYCAgJgDSQ0BIANBgICABHIiBEH+ACAAQRd2IgNrdiEAIARBHSADayIDdkEBcQR/IABBAyADdEEBayAEcUEAR2oFIAALIAJyIQIMAQsgAkGA+AFyIQILIAYgAjsBAAsgBkEYaiEGIAFBAWsiAQ0ACwsLqAYCBn8BfiMAQSBrIgQkACABKAIMIQUCQAJAAkAgASgCFCICIAEoAhAiA0kEQCABQQxqIQcDQCACIAVqLQAAQQlrIgZBGUsNAkEBIAZ0QZOAgARxRQRAIAZBGUcNAyABQQA2AgggASACQQFqNgIUIARBEGogByABEIICIAQoAhQhAiAEKAIQQQJHDQQgAEEBOgAAIAAgAjYCBAwFCyABIAJBAWoiAjYCFCACIANHDQALIAMhAgsgBEEFNgIQIARBCGogBSADIAJBAWoiASADIAEgA0kbEPgBIARBEGogBCgCCCAEKAIMEKYIIQEgAEEBOgAAIAAgATYCBAwCCyABIARBH2pBmN/BABD9ASABENMGIQEgAEEBOgAAIAAgATYCBAwBCyAAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCGCIFQQJrDgoAAQoKBwgECgoCCgsgAi8AAEH18ABHDQJBACEDDAoLQQIhAyACLwAAQebmAHMgAkECaiIGLQAAQTJzcg0HQQEhAwwJC0EDIQMgAkEDaikAAELf2JWTlo/dsvMAhSIIIAIpAABC5ubI+cWtmbH5AIWEUA0IIAggAikAAELm4tj5xa2ZsfkAhYRQRQ0HQQQhAwwICyACLwAAQfLwAEcNAUEFIQMMBwsgAikAAELy8Pyi1oybuuEAUg0BQQYhAwwGCyACLwAAQfPwAEcNBEEHIQMMBQsgAikAAELz8Pyi1oybuuEAUg0DQQghAwwECyACKAAAQezc/YIDcyACQQRqIgMvAABB8vAAc3JFBEBBCSEDDAQLIAIoAABB7Nz9sgZzIAMvAABBsewAc3INAkEKIQMMAwsgAigAAEHvxtHDA3MgAkEDaigAAEG48MjDA3NyDQFBCyEDDAILIAIvAABB5uIAcyAGLQAAQTZzckUNASACLwAAQfXiAHMgAkECaiIDLQAAQTZzckUEQEEMIQMMAgsgAi8AAEH15gBzIAMtAABBMnNyDQBBDSEDDAELIAAgAiAFQfSLwQBBDhCxByABENMGNgIEQQEMAQsgACADOgABQQALOgAACyAEQSBqJAAL9wUBB38jAEEwayIDJAACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgASgCFCICIAEoAhAiBEkEQCABKAIMIQcDQCACIAdqLQAAIgZBCWsiCEEXS0EBIAh0QZOAgARxRXJFBEAgASACQQFqIgI2AhQgAiAERw0BDAMLCyAGQe4ARg0JCyABKAIMIQcgAiAETw0BIAFBDGohCANAIAIgB2otAABBCWsiBkEZSw0HQQEgBnRBk4CABHFFBEAgBkEZRw0IIAFBADYCCCABIAJBAWo2AhQgA0EgaiAIIAEQggIgAygCJCIFIAMoAiAiAUECRg0JGiADKAIoIQIgAUEBRw0FIAJBAEgNDCACDQRBASEBDAcLIAEgAkEBaiICNgIUIAIgBEcNAAsLIAQhAgsgA0EFNgIgIANBCGogByAEIAJBAWoiASAEIAEgBEkbEPgBIANBIGogAygCCCADKAIMEKYIDAULIAIQbiIBDQFBASACEJoJAAsgAkEASA0GIAJFBEBBASEBDAILIAIQbiIBRQ0HCyACRQ0AIAEgBSAC/AoAAAsgACACNgIIIAAgATYCBCAAIAI2AgAMAwsgASADQS9qQZiAwQAQ/QEgARDTBgshBSAAQYGAgIB4NgIAIAAgBTYCBAwBCyABIAJBAWoiBTYCFAJ/AkAgBCAFTQ0AIAEgAkECaiIGNgIUAkACQCAFIAdqLQAAQfUARw0AIAYgBSAEIAQgBUkbIgVGDQIgASACQQNqIgg2AhQgBiAHai0AAEHsAEcEQCAIIQYMAQsgBSAIRg0CIAEgAkEEaiIGNgIUIAcgCGotAABB7ABGDQELIANBCTYCICADQRhqIAcgBCAGEPgBIANBIGogAygCGCADKAIcEKYIDAILIABBgICAgHg2AgAMAgsgA0EFNgIgIANBEGogByAEIAUQ+AEgA0EgaiADKAIQIAMoAhQQpggLIQIgAEGBgICAeDYCACAAIAI2AgQLIANBMGokAA8LEJgKAAtBASACEJoJAAv3BQEHfyMAQTBrIgMkAAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABKAIUIgIgASgCECIESQRAIAEoAgwhBwNAIAIgB2otAAAiBkEJayIIQRdLQQEgCHRBk4CABHFFckUEQCABIAJBAWoiAjYCFCACIARHDQEMAwsLIAZB7gBGDQkLIAEoAgwhByACIARPDQEgAUEMaiEIA0AgAiAHai0AAEEJayIGQRlLDQdBASAGdEGTgIAEcUUEQCAGQRlHDQggAUEANgIIIAEgAkEBajYCFCADQSBqIAggARCCAiADKAIkIgUgAygCICIBQQJGDQkaIAMoAighAiABQQFHDQUgAkEASA0MIAINBEEBIQEMBwsgASACQQFqIgI2AhQgAiAERw0ACwsgBCECCyADQQU2AiAgA0EIaiAHIAQgAkEBaiIBIAQgASAESRsQ+AEgA0EgaiADKAIIIAMoAgwQpggMBQsgAhBuIgENAUEBIAIQmgkACyACQQBIDQYgAkUEQEEBIQEMAgsgAhBuIgFFDQcLIAJFDQAgASAFIAL8CgAACyAAIAI2AgggACABNgIEIAAgAjYCAAwDCyABIANBL2pBlN3GABD+ASABENMGCyEFIABBgYCAgHg2AgAgACAFNgIEDAELIAEgAkEBaiIFNgIUAn8CQCAEIAVNDQAgASACQQJqIgY2AhQCQAJAIAUgB2otAABB9QBHDQAgBiAFIAQgBCAFSRsiBUYNAiABIAJBA2oiCDYCFCAGIAdqLQAAQewARwRAIAghBgwBCyAFIAhGDQIgASACQQRqIgY2AhQgByAIai0AAEHsAEYNAQsgA0EJNgIgIANBGGogByAEIAYQ+AEgA0EgaiADKAIYIAMoAhwQpggMAgsgAEGAgICAeDYCAAwCCyADQQU2AiAgA0EQaiAHIAQgBRD4ASADQSBqIAMoAhAgAygCFBCmCAshAiAAQYGAgIB4NgIAIAAgAjYCBAsgA0EwaiQADwsQmAoAC0EBIAIQmgkAC48GAgd/An4jAEEwayICJAACQAJAIAACfQJAAn8CQAJAAkACQAJAIAEoAhQiAyABKAIQIgRJBEAgASgCDCEFA0AgAyAFai0AACIGQQlrIghBF0tBASAIdEGTgIAEcUVyRQRAIAEgA0EBaiIDNgIUIAMgBEcNAQwDCwsgBkHuAEYNCQsgASgCDCEFIAMgBE8NAQNAAkAgAyAFai0AACIGQQlrDiUAAAUFAAUFBQUFBQUFBQUFBQUFBQUFBQAFBQUFBQUFBQUFBQUEBQsgASADQQFqIgM2AhQgAyAERw0ACwsgBCEDCyACQQU2AhggAiAFIAQgA0EBaiIBIAQgASAESRsQ+AEgAkEYaiACKAIAIAIoAgQQpggMAwsgASADQQFqNgIUIAJBGGogAUEAEPgDIAIpAxgiCkIDUQ0BIAIpAyAhCQJAAkAgCqdBAWsOAgABBQsgCbUMBQsgCbQMBAsgBkEwa0H/AXFBCk8EQCABIAJBL2pBqITBABD9ASABENMGDAILIAJBGGogAUEBEPgDIAIpAxgiCkIDUQ0AIAIpAyAhCQJAAkACQCAKp0EBaw4CAQIACyAJv7ZDAACAP0MAAIC/IAlCAFkbmAwFCyAJtQwECyAJtAwDCyACKAIgCyEDIABBAjYCACAAIAM2AgQMAwsgCb+2QwAAgD9DAACAvyAJQgBZG5gLOAIEIABBATYCAAwBCyABIANBAWoiBzYCFAJ/AkAgBCAHTQ0AIAEgA0ECaiIGNgIUAkACQCAFIAdqLQAAQfUARw0AIAYgByAEIAQgB0kbIgdGDQIgASADQQNqIgg2AhQgBSAGai0AAEHsAEcEQCAIIQYMAQsgByAIRg0CIAEgA0EEaiIGNgIUIAUgCGotAABB7ABGDQELIAJBCTYCGCACQRBqIAUgBCAGEPgBIAJBGGogAigCECACKAIUEKYIDAILIABBADYCAAwCCyACQQU2AhggAkEIaiAFIAQgBxD4ASACQRhqIAIoAgggAigCDBCmCAshAyAAQQI2AgAgACADNgIECyACQTBqJAALjwYCB38CfiMAQTBrIgIkAAJAAkAgAAJ9AkACfwJAAkACQAJAAkAgASgCFCIDIAEoAhAiBEkEQCABKAIMIQUDQCADIAVqLQAAIgZBCWsiCEEXS0EBIAh0QZOAgARxRXJFBEAgASADQQFqIgM2AhQgAyAERw0BDAMLCyAGQe4ARg0JCyABKAIMIQUgAyAETw0BA0ACQCADIAVqLQAAIgZBCWsOJQAABQUABQUFBQUFBQUFBQUFBQUFBQUFAAUFBQUFBQUFBQUFBQQFCyABIANBAWoiAzYCFCADIARHDQALCyAEIQMLIAJBBTYCGCACIAUgBCADQQFqIgEgBCABIARJGxD4ASACQRhqIAIoAgAgAigCBBCmCAwDCyABIANBAWo2AhQgAkEYaiABQQAQygIgAikDGCIKQgNRDQEgAikDICEJAkACQCAKp0EBaw4CAAEFCyAJtQwFCyAJtAwECyAGQTBrQf8BcUEKTwRAIAEgAkEvakH4qMYAEP4BIAEQ0wYMAgsgAkEYaiABQQEQygIgAikDGCIKQgNRDQAgAikDICEJAkACQAJAIAqnQQFrDgIBAgALIAm/tkMAAIA/QwAAgL8gCUIAWRuYDAULIAm1DAQLIAm0DAMLIAIoAiALIQMgAEECNgIAIAAgAzYCBAwDCyAJv7ZDAACAP0MAAIC/IAlCAFkbmAs4AgQgAEEBNgIADAELIAEgA0EBaiIHNgIUAn8CQCAEIAdNDQAgASADQQJqIgY2AhQCQAJAIAUgB2otAABB9QBHDQAgBiAHIAQgBCAHSRsiB0YNAiABIANBA2oiCDYCFCAFIAZqLQAAQewARwRAIAghBgwBCyAHIAhGDQIgASADQQRqIgY2AhQgBSAIai0AAEHsAEYNAQsgAkEJNgIYIAJBEGogBSAEIAYQ+AEgAkEYaiACKAIQIAIoAhQQpggMAgsgAEEANgIADAILIAJBBTYCGCACQQhqIAUgBCAHEPgBIAJBGGogAigCCCACKAIMEKYICyEDIABBAjYCACAAIAM2AgQLIAJBMGokAAumAwIbfQN8QwAAgD8hDUQAAAAAAADwP0QAAADg0w7VPyIcoyIdRAAAAAAAAPA/RAAAAMCaA9Q/Ih6hIByhorYiCyEOIB0gHqK2IgwhAUOamRk+IghDw/WoPiIClCIPQwAAgD9DmpmZPiIJk0OamRk/IgOTIgSUIAlDj8J1PSIFlCIQQwAAgD9DCtcjPyIKkyACkyIGlCAKIAOUIhFDAACAPyAIkyAFkyIHlJKSIAggA5QiEiAGlJMgCSAClCITIAeUkyAKIAWUIhQgBJSTIhVDAAAAAFwEQCAPIBSTQwAAgD8gFZUiAZQhFiAQIBKTIAGUIRcgESATkyABlCALlCEOIAkgBpQgCiAElJMgAZQhGCACIASUIAMgBpSTIAGUIRkgCiAHlCAIIAaUkyABlCENIAUgBpQgAiAHlJMgAZQhGiAIIASUIAkgB5STIAGUIRsgAyAHlCAFIASUkyABlCAMlCEBCyAAIAUgGSAMlCAYkiAOkpQ4AgwgACADIBogDJQgDZIgFiALlJKUOAIIIAAgAiABIBsgFyALlJKSlDgCBCAAQQE2AgALlQUCBn8BfgJAIAEoAggiAiABKAIEIgRPDQAgASgCACACai0AAEH1AEcNAEEBIQcgASACQQFqIgI2AggLAkACQCACIARJBEAgASgCACIGIAJqLQAAQTBrIgNB/wFxIgVBCkkNAQsMAQsgASACQQFqIgI2AggCQAJAIAVFBEBBACEDDAELIANB/wFxIQMDQCACIARGBEAgBCECDAMLIAIgBmotAABBMGtB/wFxIgVBCUsNASABIAJBAWoiAjYCCCADrUIKfiIIQiCIUARAIAUgCKciBWoiAyAFTw0BCwsMAgsgAiAETw0AIAIgBmotAABB3wBHDQAgASACQQFqIgI2AggLAkACQAJAIAIgAiADaiIFTQRAIAEgBTYCCCAEIAVJDQQgAkUgAiAET3INASACIAZqLAAAQb9/Sg0BDAILDAMLIAVFIAQgBU1yRQRAIAUgBmosAABBv39MDQELIAIgBmohBCAHDQEgAEIBNwIIIAAgAzYCBCAAIAQ2AgAPCyAGIAQgAiAFQczKxAAQ9QkACyACIAZqQQFrIQYgAyEBAn8DQCABIgJFBEBBACEBIAQhBUEBDAILIAJBAWshASACIAZqLQAAQd8ARw0ACwJAAkAgAUUNAAJAIAEgA08EQCABIANHDQEgAg0CQQAhBgwDCyABIARqLAAAQb9/Sg0BCyAEIANBACABQdzKxAAQ9QkACwJAIAIgA08EQCADIQYgAiADRw0BDAILIAIgBGosAABBv39MDQAgAiEGDAELIAQgAyACIANB7MrEABD1CQALIAQgBmohBSADIAZrIQMgBAshAiADRQRADAELIAAgAzYCDCAAIAU2AgggACABNgIEIAAgAjYCAA8LIABBADYCACAAQQA6AAQLpAQBB38CQAJAIAAoAjgiBQRAIAAoAjQgBUECdEELakF4cSIBayIEQQRrKAIAIgJBeHEiAyABIAVqQQlqIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAiwhAiAAKAIwIgYEQCACIQEDQCABQawBaigCACIHBEAgAUGoAWooAgAiBUEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgB2pJDQMgA0EAIAQgB0EnaksbDQQgBRCiAgsgARDoAyABQbgBaiEBIAZBAWsiBg0ACwsgACgCKCIDBEAgAkEEaygCACIBQXhxIgQgA0G4AWwiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAQgA0EnaksbDQIgAhCiAgsgACgCTCIEBEAgACgCSCIDQQRrKAIAIgJBeHEiAUEEQQggAkEDcSICGyAEakkNASACQQAgASAEQSdqSxsNAiADEKICCwJAIAAoAmAiBEUNACAAKAJkIgNFDQAgBEEEaygCACICQXhxIgFBBEEIIAJBA3EiAhsgA2pJDQEgAkEAIAEgA0EnaksbDQIgBBCiAgsCQCAAQX9GDQAgACAAKAIEIgJBAWs2AgQgAkEBRw0AIABBBGsoAgAiAUF4cUHsAEHwACABQQNxIgIbSQ0BIAJBACABQZABTxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC6wFAgV/BH4CQAJAAkACQAJAIAJFBEBBASEFDAELIAIQbiIFRQ0BIAVBBGstAABBA3FFIAJFcg0AIAVBACAC/AsACyABKAIEIgOtIQggA0L/////DyABKQMIIgkgCUL/////D1obp2siBEEAIAMgBE8bIAJPBEAgASgCACAJIAggCCAJVhunaiEDIAJBAUcEQCACRQ0DIAUgAyAC/AoAAAwDCyAFIAMtAAA6AAAMAgtB4JXHACkDACILQgiIIQogC6chAyALQv8Bg0IEUg0DDAILQQEgAhCaCQALQQQhAwsgCSACrXwhCAsgASAINwMIAkACQAJAAkAgA0H/AXEiBkEERwRAIApCGIinIQEgCqciByEEAkACQAJAAkAgBkEBaw4DAQACAwsgAS0ACCEECyAEQf8BcUElRw0BIABBMjYCCCAAQceSwQA2AgQgAEGAgICAeDYCAAwECyABLQAIQSVGDQILIAAgATYCCCAAQYGAgIB4NgIAIAAgA0H/AXEgB0EIdHI2AgQMAgsgACACNgIIIAAgBTYCBCAAQYaAgIB4NgIADwsgAEEyNgIIIABBx5LBADYCBCAAQYCAgIB4NgIAIAEoAgAhACABQQRqKAIAIgMoAgAiBARAIAAgBBEDAAsgAygCBCIDBEAgAEEEaygCACIEQXhxIgZBBEEIIARBA3EiBBsgA2pJDQIgBEEAIAYgA0EnaksbDQMgABCiAgsgAUEEaygCACIAQXhxIgNBEEEUIABBA3EiABtJDQEgAEEAIANBNE8bDQIgARCiAgsgAgRAIAVBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0BIABBACABIAJBJ2pLGw0CIAUQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL0wUCB38CfCMAQTBrIgYkAEEBIQkgASABKAIUIgdBAWoiBTYCFAJAIAUgASgCECIITw0AAkACQCABKAIMIAVqLQAAQStrDgMBAgACC0EAIQkLIAEgB0ECaiIFNgIUCwJAAkAgBSAISQRAIAEgBUEBaiIHNgIUIAEoAgwiCiAFai0AAEEwa0H/AXEiBUEKTwRAIAZBDTYCJCAGQRBqIAogCCAHEPgBIAZBJGogBigCECAGKAIUEKYIIQEgAEEBNgIAIAAgATYCBAwDCyAHIAhPDQECQANAIAcgCmotAABBMGtB/wFxIgtBCk8NAyABIAdBAWoiBzYCFCAFQcyZs+YARyALQQdLciAFQcuZs+YASnENASAFQQpsIAtqIQUgByAIRw0ACyAIIQcMAgsgACABIAIgA1AgCRCwBgwCCyAGQQU2AiQgBkEYaiABKAIMIAggBRD4ASAGQSRqIAYoAhggBigCHBCmCCEBIABBATYCACAAIAE2AgQMAQsgA7ohDCAAAn8CQAJAAkACQAJ/IAlFBEAgBCAFayIBQR91QYCAgIB4cyABIAEgBEggBUEASnMbDAELIAQgBWoiAUEfdUGAgICAeHMgASAFQQBIIAEgBEhzGwsiBUEfdSIBIAVzIAFrIgFBtQJPBEADQCAMRAAAAAAAAAAAYQ0FIAVBAE4NAiAMRKDI64XzzOF/oyEMIAVBtAJqIgUgBUEfdSIBcyABayIBQbUCTw0ACwsgAUEDdCsD0JVGIQ0gBUEATg0BIAwgDaMhDAwDCyAGQQ42AiQgBkEIaiAKIAggBxD4ASAAIAZBJGogBigCCCAGKAIMEKYINgIEDAELIAwgDaIiDJlEAAAAAAAA8H9iDQEgBkEONgIkIAYgCiAIIAcQ+AEgACAGQSRqIAYoAgAgBigCBBCmCDYCBAtBAQwBCyAAIAwgDJogAhs5AwhBAAs2AgALIAZBMGokAAvBBQEQfyMAQeAAayIXJAAgAQRAIAJBAUYhJQNAAkACQAJAAkACQAJAAkAgBEGAgAQgASAYIhprIhggGEGAgARPGyIbQQNsIiEgGkEDbCIeaiIZTwRAIBogG2oiGCAbSSAMIBhJcg0BIAogGUkNAiAGIBlJDQMgG0ECdCImIBpBAnQiGWoiHCAISw0EIBQgGEkNBQJAIBYgGE8EQEEAISJBBCEfIAINAUEEIR1BACEcQQAhI0EEISQMCQsgGiAYIBZByPDBABCgBQALAkAgG0EJbCIjIBpBCWwiHGoiHSAjSSAOIB1JckUEQCANIBxBAnRqISQgJUUNAUEEIR1BACEcDAkLIBwgHSAOQbjwwQAQoAUACyAbQQ9sIhwgGkEPbCIdaiIgIBxJIBAgIElyDQYgDyAdQQJ0aiEdIAJBA0cNByAbQRVsIiIgGkEVbCIfaiIgICJJIBIgIElyRQRAIBEgH0ECdGohHwwICyAfICAgEkGY8MEAEKAFAAsgHiAZIARBqPHBABCgBQALIBogGCAMQZjxwQAQoAUACyAeIBkgCkGI8cEAEKAFAAsgHiAZIAZB+PDBABCgBQALIBkgHCAIQejwwQAQoAUACyAaIBggFEHY8MEAEKAFAAsgHSAgIBBBqPDBABCgBQALIBdCBDcCWCAXQgI3AlAgFyAbNgJMIBcgFSAZajYCSCAXIBs2AkQgFyATIBlqNgJAIBcgIjYCPCAXIB82AjggFyAcNgI0IBcgHTYCMCAXICM2AiwgFyAkNgIoIBcgJjYCJCAXIAcgGUECdGo2AiAgFyAhNgIcIBcgBSAeQQJ0Ih5qNgIYIBcgITYCFCAXIAkgHmo2AhAgFyAbNgIMIBcgCyAZajYCCCAXICE2AgQgFyADIB5qNgIAIAAgGiAbIBcQmgEgASAYSw0ACwsgABCoASAXQeAAaiQAC8AFARB/IwBB4ABrIhckACABBEAgAkEBRiElA0ACQAJAAkACQAJAAkACQCAEQYCABCABIBgiGmsiGCAYQYCABE8bIhtBA2wiISAaQQNsIh5qIhlPBEAgGiAbaiIYIBtJIAwgGElyDQEgCiAZSQ0CIAYgGUkNAyAbQQJ0IiYgGkECdCIZaiIcIAhLDQQgFCAYSQ0FAkAgFiAYTwRAQQAhIkEEIR8gAg0BQQQhHUEAIRxBACEjQQQhJAwJCyAaIBggFkHI8MEAEKAFAAsCQCAbQQlsIiMgGkEJbCIcaiIdICNJIA4gHUlyRQRAIA0gHEECdGohJCAlRQ0BQQQhHUEAIRwMCQsgHCAdIA5BuPDBABCgBQALIBtBD2wiHCAaQQ9sIh1qIiAgHEkgECAgSXINBiAPIB1BAnRqIR0gAkEDRw0HIBtBFWwiIiAaQRVsIh9qIiAgIkkgEiAgSXJFBEAgESAfQQJ0aiEfDAgLIB8gICASQZjwwQAQoAUACyAeIBkgBEGo8cEAEKAFAAsgGiAYIAxBmPHBABCgBQALIB4gGSAKQYjxwQAQoAUACyAeIBkgBkH48MEAEKAFAAsgGSAcIAhB6PDBABCgBQALIBogGCAUQdjwwQAQoAUACyAdICAgEEGo8MEAEKAFAAsgF0IENwJYIBdCAjcCUCAXIBs2AkwgFyAVIBlqNgJIIBcgGzYCRCAXIBMgGWo2AkAgFyAiNgI8IBcgHzYCOCAXIBw2AjQgFyAdNgIwIBcgIzYCLCAXICQ2AiggFyAmNgIkIBcgByAZQQJ0ajYCICAXICE2AhwgFyAFIB5BAnQiHmo2AhggFyAhNgIUIBcgCSAeajYCECAXIBs2AgwgFyALIBlqNgIIIBcgITYCBCAXIAMgHmo2AgAgACAaIBsgFxB5IAEgGEsNAAsLIAAQ1wEgF0HgAGokAAuNBAEHfwJAAkAgACgCACIBBEAgACgCBCIDQQRrKAIAIgJBeHEiBCABQRhsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAhAhAyAAKAIUIgIEQCADQRRqIQEDQCABKAIAIgRBBU8EQCABQQxrKAIAIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDQMgBUEAIAcgBEEnaksbDQQgBhCiAgsgAUEYaiEBIAJBAWsiAg0ACwsgACgCDCIBBEAgA0EEaygCACICQXhxIgQgAUEYbCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAIYIgEEQCAAKAIcIgNBBGsoAgAiAkF4cSIEIAFBCWwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCJCIBBEAgACgCKCIDQQRrKAIAIgJBeHEiBCABQQ9sIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAjAiAQRAIAAoAjQiAEEEaygCACIDQXhxIgIgAUEVbCIBQQRBCCADQQNxIgMbakkNASADQQAgAiABQSdqSxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC40EAQd/AkACQCAAKAIAIgEEQCAAKAIEIgNBBGsoAgAiAkF4cSIEIAFBLGwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCECEDIAAoAhQiAgRAIANBFGohAQNAIAEoAgAiBEEFTwRAIAFBDGsoAgAiBkEEaygCACIFQXhxIgcgBEECdCIEQQRBCCAFQQNxIgUbakkNAyAFQQAgByAEQSdqSxsNBCAGEKICCyABQRhqIQEgAkEBayICDQALCyAAKAIMIgEEQCADQQRrKAIAIgJBeHEiBCABQRhsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAhgiAQRAIAAoAhwiA0EEaygCACICQXhxIgQgAUESbCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAIkIgEEQCAAKAIoIgNBBGsoAgAiAkF4cSIEIAFBHmwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCMCIBBEAgACgCNCIAQQRrKAIAIgNBeHEiAiABQSpsIgFBBEEIIANBA3EiAxtqSQ0BIANBACACIAFBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALvAUBEH8jAEHgAGsiFyQAIAEEQCACQQFGISUDQAJAAkACQAJAAkACQAJAIARBgIAEIAEgGCIaayIYIBhBgIAETxsiG0EDbCIhIBpBA2wiHmoiGU8EQCAaIBtqIhggG0kgDCAYSXINASAKIBlJDQIgBiAZSQ0DIBtBAnQiJiAaQQJ0IhlqIhwgCEsNBCAUIBhJDQUCQCAWIBhPBEBBACEiQQQhHyACDQFBBCEdQQAhHEEAISNBBCEkDAkLIBogGCAWQcjwwQAQoAUACwJAIBtBCWwiIyAaQQlsIhxqIh0gI0kgDiAdSXJFBEAgDSAcQQJ0aiEkICVFDQFBBCEdQQAhHAwJCyAcIB0gDkG48MEAEKAFAAsgG0EPbCIcIBpBD2wiHWoiICAcSSAQICBJcg0GIA8gHUECdGohHSACQQNHDQcgG0EVbCIiIBpBFWwiH2oiICAiSSASICBJckUEQCARIB9BAnRqIR8MCAsgHyAgIBJBmPDBABCgBQALIB4gGSAEQajxwQAQoAUACyAaIBggDEGY8cEAEKAFAAsgHiAZIApBiPHBABCgBQALIB4gGSAGQfjwwQAQoAUACyAZIBwgCEHo8MEAEKAFAAsgGiAYIBRB2PDBABCgBQALIB0gICAQQajwwQAQoAUACyAXQgQ3AlggF0ICNwJQIBcgGzYCTCAXIBUgGWo2AkggFyAbNgJEIBcgEyAZajYCQCAXICI2AjwgFyAfNgI4IBcgHDYCNCAXIB02AjAgFyAjNgIsIBcgJDYCKCAXICY2AiQgFyAHIBlBAnRqNgIgIBcgITYCHCAXIAUgHkECdCIeajYCGCAXICE2AhQgFyAJIB5qNgIQIBcgGzYCDCAXIAsgGWo2AgggFyAhNgIEIBcgAyAeajYCACAAIBogGyAXEOcBIAEgGEsNAAsLIBdB4ABqJAALvAUBEH8jAEHgAGsiFyQAIAEEQCACQQFGISUDQAJAAkACQAJAAkACQAJAIARBgIAEIAEgGCIaayIYIBhBgIAETxsiG0EDbCIhIBpBA2wiHmoiGU8EQCAaIBtqIhggG0kgDCAYSXINASAKIBlJDQIgBiAZSQ0DIBtBAnQiJiAaQQJ0IhlqIhwgCEsNBCAUIBhJDQUCQCAWIBhPBEBBACEiQQQhHyACDQFBBCEdQQAhHEEAISNBBCEkDAkLIBogGCAWQcjwwQAQoAUACwJAIBtBCWwiIyAaQQlsIhxqIh0gI0kgDiAdSXJFBEAgDSAcQQJ0aiEkICVFDQFBBCEdQQAhHAwJCyAcIB0gDkG48MEAEKAFAAsgG0EPbCIcIBpBD2wiHWoiICAcSSAQICBJcg0GIA8gHUECdGohHSACQQNHDQcgG0EVbCIiIBpBFWwiH2oiICAiSSASICBJckUEQCARIB9BAnRqIR8MCAsgHyAgIBJBmPDBABCgBQALIB4gGSAEQajxwQAQoAUACyAaIBggDEGY8cEAEKAFAAsgHiAZIApBiPHBABCgBQALIB4gGSAGQfjwwQAQoAUACyAZIBwgCEHo8MEAEKAFAAsgGiAYIBRB2PDBABCgBQALIB0gICAQQajwwQAQoAUACyAXQgQ3AlggF0ICNwJQIBcgGzYCTCAXIBUgGWo2AkggFyAbNgJEIBcgEyAZajYCQCAXICI2AjwgFyAfNgI4IBcgHDYCNCAXIB02AjAgFyAjNgIsIBcgJDYCKCAXICY2AiQgFyAHIBlBAnRqNgIgIBcgITYCHCAXIAUgHkECdCIeajYCGCAXICE2AhQgFyAJIB5qNgIQIBcgGzYCDCAXIAsgGWo2AgggFyAhNgIEIBcgAyAeajYCACAAIBogGyAXEI8CIAEgGEsNAAsLIBdB4ABqJAAL9wQBCH8CQCADLQADIgcgAy0ABCILayIIIAhBH3UiCHMgCGtBAXQgAy0AAiIIIAMtAAUiCmsiBCAEQR91IgVzIAVrQQF2aiACQf8BcUsNACABQf8BcSIBIAMtAAAgAy0AASICayIFIAVBH3UiBXMgBWtJDQAgASIFIAIgCGsiBiAGQR91IgZzIAZrQf8BcUkNACAFIAggB2siBiAGQR91IgZzIAZrIgZB/wFxSQ0AIAUgAy0AByADLQAGIgVrIgkgCUEfdSIJcyAJa0kNACABIAUgCmsiCSAJQR91IglzIAlrQf8BcUkNACABIAogC2siASABQR91IgFzIAFrIgFB/wFxSQ0AIABB/wFxIgAgBkH/AXFPIAFB/wFxIABNcUUEQEEBIAMQ/QUaDwsgA0H/ASAFQf8AQYB/IAsgB2tBA2xB/wBBgH8gBCAEQYB/TBsiACAAQf8AThtqIgAgAEGAf0wbIgAgAEH/AE4bIgBBCWxBP2pBB3UiAWsiBEEAIARBAEobIgQgBEH/AU4bOgAGIANB/wBBgH8gCiAAQRJsQT9qQQd1IgprQYABayIEIARBgH9MGyIEIARB/wBOG0GAAXM6AAUgA0H/AEGAfyAHIABBG2xBP2pBB3UiAGpBgAFrIgcgB0GAf0wbIgcgB0H/AE4bQYABczoAAyADQf8AQYB/IAsgAGtBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoABCADQf8AQYB/IAggCmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAiADQf8AQYB/IAEgAmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAQsL7QUCC38CfiMAQRBrIgQkAAJAAkACQCABKAIoIgIEQAJAIAEpAxAiDlBFBEAgASgCICEFDAELIAEoAiAhBSABKAIYIQMDQCAFQUBqIQUgAykDACADQQhqIQNCgIGChIiQoMCAf4MiDUKAgYKEiJCgwIB/UQ0ACyABIAU2AiAgASADNgIYIA1CgIGChIiQoMCAf4UhDgsgASACQQFrIgk2AiggASAOQgF9IA6DIg03AxAgAkH/////AUsNAkEEIAIgAkEETRsiAkEDdCIDQf3///8HTw0CIAUgDnqnQfgAcWsiBkEEaygCACEHIAZBCGsoAgAhCCADEG4iBkUNAyAGIAc2AgQgBiAINgIAIARBATYCDCAEIAY2AgggBCACNgIEIAEoAjAhCCABKAIEIQIgASgCACEKIAkEQCABKAIYIQNBASEHA0AgDVAEQANAIAMiAUEIaiEDIAVBQGohBSABKQMAQoCBgoSIkKDAgH+DIg1CgIGChIiQoMCAf1ENAAsgDUKAgYKEiJCgwIB/hSENCyAFIA16p0H4AHFrIgFBBGsoAgAhCyABQQhrKAIAIQEgDUIBfSANgyENIAQoAgQgB0YEQCAEQQRqIAcgCUEEQQgQ1gYgBCgCCCEGCyAGIAdBA3RqIgwgCzYCBCAMIAE2AgAgBCAHQQFqIgc2AgwgCUEBayIJDQALCwJAIAJFDQAgAkEJaiIBRQ0AIApB/wEgAfwLAAsgCEEANgIMIAggAjYCBCAIIAo2AgAgACAEKQIENwIAIAAgBCgCDDYCCCAIIAIgAkEBakEDdkEHbCACQQhJGzYCCAwBCyAAQQA2AgggAEKAgICAwAA3AgACQCABKAIEIgBFDQAgAEEJaiIDRQ0AIAEoAgBB/wEgA/wLAAsgAUEANgIMIAEgACAAQQFqQQN2QQdsIABBCEkbNgIIIAEoAjAiACABKQIANwIAIAAgASkCCDcCCAsgBEEQaiQADwsQmAoAC0EEIAMQmgkAC7oEAQt/AkACQAJAIAAoAgAiAUEDRiABQQJJcg0AAkACQCAALQAUQQFrDgICAAELQeiZxwBB+QBBpJrHABCTCAALIAAoAgghCSAAKAIMIgsEQANAIAkgBkEMbGoiBCgCBCEKIAQoAggiCARAIApBJGohAQNAIAFBBGsoAgAiAkEASgRAIAEoAgAiBUEEaygCACIDQXhxIgdBBEEIIANBA3EiAxsgAmpJDQcgA0EAIAcgAkEnaksbDQYgBRCiAgsCQCABQRRrKAIAIgVBAkYNACABQRBrIQICQCAFRQRAIAIoAgAiAkUNAiABQQxrKAIAIgVBBGsoAgAiA0F4cSIHQQRBCCADQQNxIgMbIAJqSQ0JIANFIAcgAkEnak1yDQEMCAsgAigCACICRQ0BIAFBDGsoAgAiBUEEaygCACIDQXhxIgcgAkEBdCICQQRBCCADQQNxIgMbakkNCCADRQ0AIAcgAkEnaksNBwsgBRCiAgsgAUEsaiEBIAhBAWsiCA0ACwsgBCgCACIBBEAgCkEEaygCACIEQXhxIgggAUEsbCIBQQRBCCAEQQNxIgQbakkNBSAEQQAgCCABQSdqSxsNBCAKEKICCyAGQQFqIgYgC0cNAAsLIAAoAgQiAEUNACAJQQRrKAIAIgFBeHEiBiAAQQxsIgBBBEEIIAFBA3EiARtqSQ0CIAFBACAGIABBJ2pLGw0BIAkQogILDwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQALpwUBCH8gACAAKAIIIgQgAmoiAzYCCCAAKAIEIgggA0EQaiIHIAcgCEsbIQMgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCABIAJPBEAgASAESw0BIAQgAWshACAHIAhPBEAgACACaiIBIANLDQMgACABSw0EIAQgAyACa0sNBSACRQ0KIAQgBWogACAFaiAC/AoAAA8LIAJFDQkgBCAFaiIDIAAgBWoiAP0AAAD9CwAAIAJBEUkNCSAAIAJqIQJBACABayEBIANBEGohAANAIAAgACABav0AAAD9CwAAIABBEGoiACABaiACSQ0ACwwJCyABQQFHBEBBACEAIAEgAyAEIAFrIgggAyAISxtqIARrIgYgAyAEayIHQQAgAyAHTxsiByAGIAdJGyIGIAJBAWsiCSAGIAlJGyIJQQFqIgZBEUkgAUEPTXINCCAGQQ9xIgBBECAAGyIAIAlBf3NqIQlBACABayEKIAQgBWohASAGIABrIQADQCABIAEgCmr9AAAA/QsAACABQRBqIQEgCUEQaiIJDQALDAgLIARBAWsiACADTw0EIAMgBEkNBSACIAMgBGsiAUsNBiACRQ0IIAQgBWogACAFai0AACAC/AsADAgLQfCFyABBCUH8hcgAEJQIAAtBACABIANBqKPHABCgBQALIAAgASADQbijxwAQoAUAC0HTo8cAQStB4IXIABCTCAALIAAgA0GQhcgAEPAHAAsgBCADIANBsIXIABCgBQALQQAgAiABQaCFyAAQoAUACyAFIAhqIQEgBCAFaiEFA0AgACAIaiIGIANPDQIgACAHRg0DIAAgBWogACABai0AADoAACAAQQFqIgAgAkcNAAsLDwsgBiADQcCFyAAQ8AcACyAAIARqIANB0IXIABDwBwALowUBCH8CQAJAAkACQAJAAkACQCABIAIgAyAEIAUgBhDgAwRAIAUgBkEBdCIIayIBIARPDQIgBSAGayICIARPDQMgAEH/AXEiDCABIANqIgotAAAiASACIANqIgstAAAiAmsiByAHQR91IgdzIAdrSQ0GIAUgBmoiByAETw0EIAQgBU0NBSAMIAMgB2oiDS0AACIHIAMg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CyADIARJDQEgAkEBayECIAFB/wFxIQEDQEEAIARFDQQaIAIgBGohAyAEQQFrIQQgASADLQAARw0ACwwCCyAGIAMgA0HwksIAEKAFAAtBACAEIANB4JLCABCgBQALQQELIQUgACAENgIEIAAgBTYCAAvbAgIGfwJ+IwBBEGsiBCQAIAEoAgAhBgJAAkACQAJAIAEoAggiAyABKAIEIgJJBEAgAyAGai0AAEHfAEYNAQsgAyACIAIgA0kbIQcCQANAIAMgB0YNBAJAAkAgAyAGai0AACICQd8ARwRAIAJBMGsiBUH/AXFBCkkNAiACQeEAa0H/AXFBGkkNASACQcEAa0H/AXFBGk8NByACQR1rIQUMAgtBASECIAEgA0EBajYCCCAIQn9SBEAgACAIQgF8NwMIDAYLIABBADoAAQwHCyACQdcAayEFCyABIANBAWoiAzYCCCAEIAhCPhD8BiAEKQMIQgBSDQEgBCkDACIJIAWtQv8Bg3wiCCAJWg0ACyAAQQA6AAFBASECDAQLIABBADoAAUEBIQIMAwsgAEIANwMIIAEgA0EBajYCCAtBACECDAELIABBADoAAUEBIQILIAAgAjoAACAEQRBqJAAL6QICBH4DfwJAAkACQCABQdgAaiACELYEIgIEQCACKQMIIgUgAikDACIEfSIHIAOtVgRAIABBGjoAAA8LIAenIgJBAEgNAUEBIQMCQCAEIAVRIgkNACACEG4iA0UNAyADQQRrLQAAQQNxRSACRXINACADQQAgAvwLAAsgASgCTCIIrSEGIAIgCEL/////DyAEIARC/////w9aG6drIgpBACAIIApPG00EQCABKAJIIAQgBiAEIAZUG6dqIQgCQCAHQgFSBEAgAkUNASADIAggAvwKAAAMAQsgAyAILQAAOgAACyABIAU3A1AMBAsgASAFIAZB4JXHACkDACIEQv8Bg0IEUSIBGzcDUCABDQMgACAENwIEIABBADoAACAJRQRAIAMgAkEBEMEHCw8LIABBHToAACAAQYCAgIB4NgIEDwsQmAoAC0EBIAIQmgkACyAAIAI2AgwgACADNgIIIAAgAjYCBCAAQR06AAALhQMCA30Cf0MAABBBIAEqAgwgAS0AHEECRiIGGyEFQwAAQMEgASoCCCAGGyEEQQAhAUEAIQYgAv0fACIDQwAAAABfRQRAQf8BQwAA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AmogBCkASTcAAA8LQQBBAEHAj8QAEPAHAAtBAEEIIAFBAWtB0I/EABCgBQALIAAgAyADQfCPxAAQoAUAC0EAQQggAUHgj8QAEKAFAAu3AQIDfwR+IAEoAgQiAq0hBQJAAkAgAkL/////DyABKQMIIgYgBkL/////D1obp2siBEEAIAIgBE8bQQJPBEAgASgCACAGIAUgBSAGVhunai8AACEDQQQhAgwBC0HglccAKQMAIghCCIghByAIpyECIAhC/wGDQgRSDQELIAZCAnwhBQsgASAFNwMIIAJB/wFxQQRHBEAgACACrUL/AYMgB0IIhoQ3AgAPCyAAQQQ6AAAgACADOwECC7cBAgR+BH9BBCEGIAEoAgQiCK0hAgJAAkAgCEL/////DyABKQMIIgMgA0L/////D1obp2siCUEAIAggCU8bQQRPBEAgASgCACADIAIgAiADVhunaigAACEHDAELQeCVxwApAwAiBUIIiCEEIAWnIQYgBUL/AYNCBFINAQsgA0IEfCECCyABIAI3AwggBkH/AXFBBEcEQCAAIAatQv8BgyAEQgiGhDcCAA8LIABBBDoAACAAIAc2AgQL5AECAn8BfiMAQTBrIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQQA2AiwgAkKAgICAEDcCJCACQSRqQaiBxwAgAygCACIDKAIAIAMoAgQQzgMaIAIgAigCLCIDNgIgIAIgAikCJCIENwMYIAEgAzYCCCABIAQ3AgALIAEoAgghAyABQQA2AgggASkCACEEIAFCgICAgBA3AgAgAiADNgIQIAIgBDcDCEEMEG4iAUUEQEEMELEKAAsgASACKAIQNgIIIAEgAikDCDcCACAAQeiOxwA2AgQgACABNgIAIAJBMGokAAu1AQECfyAAQf//AXFFBEAgAEEQdL4PCyAAQf8HcSEBIABBgIACcSECIABBgPgBcSIAQYD4AUYEQCACQRB0IQAgAUUEQCAAQYCAgPwHcr4PCyAAIAFBDXRyQYCAgP4Hcr4PCyACQRB0IQIgAARAIABBDXRBgICA/ABxIAFBDXRyQYCAgMADaiACcr4PCyACQYCAgNgDciABZ0EQayIAQRd0ayABIABB//8DcUEIanRB////A3FyvgvXAQEEfyMAQTBrIgIkACACIAEpA0A3AyggAiAB/QADMP0LAxggAiAB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KAIAQQFrDgMCAgEACyACIABBBGo2AgQgAiACQQRqrUKAgICAsA2ENwMIIAEoAgAgASgCBEHn78AAIAJBCGoQzgMMAgsgASgCAEGpuMUAQQEgASgCBCgCDBEAAAwBCyACIABBBGo2AgQgAiACQQRqrUKAgICAoAiENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMLIAJBEGokAAuwAQEEfyABKAIEIQICQAJAAkACQCABKAIAIgMgASgCCCIBTQ0AIAFFBEAgAkEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgA2pJDQIgBEEAIAUgA0EnaksbDQMgAhCiAkEBIQIMAQsgAiADQQEgARDAAiICRQ0DCyAAIAE2AgQgACACNgIADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQEgARCaCQALvwEBAX8jAEEQayICJAACfyAAKQMAQv///////////wCDQoCAgICAgID4/wBaBEAgAiAArUKAgICAgAWENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMMAQsgAkEAOgAEIAIgATYCACACIACtQoCAgICABYQ3AwgCQCACQcinxQBBlJvAACACQQhqEM4DDQAgAi0ABEUEQCABKAIAQeCnxQBBAiABKAIEKAIMEQAADQELQQAMAQtBAQsgAkEQaiQAC5ABAgV/AX4gAEEIaiECIAAgAUEDdGohBgNAIAIoAgAiBSACQQhrKAIASQRAIAI1AgQhByADIQECfwNAIAAgAWoiBEEIaiAEKQIANwIAIAAgAUUNARogBSABQQhrIgEgAGoiBCgCAEkNAAsgBEEIagsgBa0gB0IghoQ3AgALIANBCGohAyACQQhqIgIgBkcNAAsLrgEBA38jAEEQayIDJAACQAJAAkACQCAARSABRXINACAAKAIAIgBFDQAgAEHB////B08NASABQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAAakkNAiACQQAgBCAAQSdqSxsNAyABEKICCyADQRBqJAAPC0HQ7ccAQSsgA0EPakG0isgAQcSKyAAQwgcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuZAQICfwR+AkACQCABKAIEIgIgASkDCCIFIAKtIgQgBCAFVhunIgJHBEAgASgCACACai0A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AUEEaygCACICQXhxQSRBKCACQQNxIgQbSQ0BIARBACACQcgATxsNAiABEKICIABBuMLGADYCBCAAIAM2AgAPC0EEELEKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALiAEBA38gACgCBCICKAIAIgEEQCAAKAIAIAERAwALAkACQCACKAIEIgIEQCAAKAIAIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALhAEBAn8gACAAKAIAIgNBCHYgAyABIAAoAggiA0EDciICQf7/A3EgAmxBgP4DcUEIdnMiAXNB/wFxQQJ0KALwxEdzIgI2AgAgACAAKAIEIAJB/wFxakGFiKLAAGxBAWoiAjYCBCAAIANB/wFxIAJBGHZzQQJ0KALwxEcgA0EIdnM2AgggAQuCAQECfwJAAkAgAUH/////A0sNACABQQJ0IgJB/f///wdPDQACfyACRQRAQQQhA0EADAELIAIQbiIDRQ0CIANBBGstAABBA3FFIAJFckUEQCADQQAgAvwLAAsgAQshAiAAIAE2AgggACADNgIEIAAgAjYCAA8LEJgKAAtBBCACEJoJAAt5AgF/AX4jAEEgayICJAACfyAAKAIAIgAoAgxFBEAgACABEPQDDAELIAJCgICAgBAiAyAAQRBqrYQ3AxggAiADIABBDGqthDcDECACIACtQoCAgIDAA4Q3AwggASgCACABKAIEQbSHwAAgAkEIahDOAwsgAkEgaiQAC38BBH8gAEEEahCIAwJAAkAgACgCHCICBEAgACgCICIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAQShqEPwEDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALYgEEfiAAIAJC/////w+DIgMgAUL/////D4MiBH4iBSAEIAJCIIgiAn4iBCADIAFCIIgiBn58IgFCIIZ8IgM3AwAgACADIAVUrSACIAZ+IAEgBFStQiCGIAFCIIiEfHw3AwgLwwIBA38jAEEQayIBJABBvL/IAC0AAEEDRwRAIAFBAToADiABQQ5qIQAC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ACgCACICBEAgACgCBCIAQQRrKAIAIgFBeHEiA0EEQQggAUEDcSIBGyACakkNASABQQAgAyACQSdqSxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC28BAX8jAEEQayIFJAAgAUUEQEGcocQAQTIQ3QoACyAFQQhqIAEgAyAEIAIoAhARBgAgACAFKAIIIgJBAkYiATYCCCAAIAUoAgwiA0EAIAEbNgIEIABBACADQYAIIAJBAXEbIAEbNgIAIAVBEGokAAtoAQF/IwBBIGsiAiQAIAIgACgCACgCACIANgIIIAIgAGg2AgwgAiACQQxqrUKAgICAgA+ENwMYIAIgAkEIaq1CgICAgJAPhDcDECABKAIAIAEoAgRBlvnAACACQRBqEM4DIAJBIGokAAt9AwF/AX4BfCMAQRBrIgMkAAJAAkACQAJAIAAoAgBBAWsOAgECAAsgACsDCCEFIANBAzoAACADIAU5AwgMAgsgACkDCCEEIANBAToAACADIAQ3AwgMAQsgACkDCCEEIANBAjoAACADIAQ3AwgLIAMgASACELIHIANBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQRgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQwQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQQQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgC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BEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALQwEBfyMAQRBrIgIkACACQQhqIAEoAggiASABKAIAKAIEEQEAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAtKAQF/QSgQbiICRQRAQSgQsQoACyACQaimwQA2AgAgAiABKQIANwIEIAIgAf0AAgj9CwIMIAIgACkCADcCHCACIAAoAgg2AiQgAgulDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchBEEAIQMjAEGAAWsiACQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIFGyIKQgGDIQ1BAiECAkACQAJAAkACQCAMUCIGQQJBAyAGG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyECDAMLQQQhAgwCCyAFQbMIayEDIA1QIQJCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiAxshCkICQgEgAxshCyANUCECQct3Qcx3IAMbIAVqIQMLIAAgAzsBeCAAIAs3A3AgAEIBNwNoIAAgCjcDYCAAIAI6AHoCfwJAAkACQAJAIAJB/wFxQQFNBEBB2snEAEEBIAlCAFMiAhshA0HaycQAQcSNwgAgAhshAiAJQj+IpyEFIABBIGogAEHgAGogAEEPahDVASAAKAIgRQ0BIAAgACgCKDYCWCAAIAApAiA3A1AMAgsgAkECayIFQf8BcUUNAkEBIQJB2snEAEHEjcIAIAlCAFMiAxtB2snEAEEBIAMbIAQbIQMgCUI/iKcgBHIhBCAAQQI7ASAgBUH/AXFBAkYNAyAAQQM2AiggAEGYssUANgIkIABBIGoMBAsgAEHQAGogAEHgAGogAEEPahBdCyACIAMgBBshAyAEIAVyIQQgACAAKAJQIAAoAlQgAC8BWEEAIABBIGoQhwUgACgCBCECIAAoAgAMAgsgAEEDNgIoIABBn7LFADYCJCAAQQI7ASBBASEDQQAhBEEBIQIgAEEgagwBCyAAQQE2AiggAEGoysQANgIkIABBIGoLIQUgACACNgJcIAAgBTYCWCAAIAQ2AlQgACADNgJQIAEgAEHQAGoQyQMgAEGAAWokAA8LIAJBAEchBSABLwEOIQAjAEHwCGsiAiQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIGGyIKQgGDIQ1BAiEDAkACQAJAAkACQCAMUCIHQQJBAyAHG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyEDDAMLQQQhAwwCCyAGQbMIayEEIA1QIQNCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiBBshCkICQgEgBBshCyANUCEDQct3Qcx3IAQbIAZqIQQLIAIgBDsB6AggAiALNwPgCCACQgE3A9gIIAIgCjcD0AggAiADOgDqCAJ/AkAgA0H/AXFBAU0EQEF0QQUgBMEiA0EASBsgA2wiA0HA/QBJDQFByo3CAEElQfCNwgAQqAkACwJAAkAgA0ECayIGQf8BcQRAQQEhA0HaycQAQcSNwgAgCUIAUyIEG0HaycQAQQEgBBsgBRshBCAJQj+IpyAFciEFIAZB/wFxQQJHDQEgAkECOwGQCCAADQIgAkEBNgKYCCACQajKxAA2ApQIIAJBkAhqDAQLIAJBAzYCmAggAkGfssUANgKUCCACQQI7AZAIQQEhBEEAIQVBASEDIAJBkAhqDAMLIAJBAzYCmAggAkGYssUANgKUCCACQQI7AZAIIAJBkAhqDAILIAIgADYCoAggAkEAOwGcCEECIQMgAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqDAELQdrJxABBASAJQgBTIgYbIQdB2snEAEHEjcIAIAYbIAlCP4inIQggAkGQCGogCiAEIAJBEGogA0EEdkEVaiIEQYCAfkEAIABrIADBQQBIGyIDEO8CIAPBIQMCQCACKAKQCARAIAIgAigCmAg2AsgIIAIgAikCkAg3A8AIDAELIAJBwAhqIAJB0AhqIAJBEGogBCADEGYLIAcgBRshBCAFIAhyIQUgAyACLgHICCIGSARAIAJBCGogAigCwAggAigCxAggBiAAIAJBkAhqEIcFIAIoAgwhAyACKAIIDAELQQIhAyACQQI7AZAIIABFBEBBASEDIAJBATYCmAggAkGoysQANgKUCCACQZAIagwBCyACIAA2AqAIIAJBADsBnAggAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqCyEAIAIgAzYCzAggAiAANgLICCACIAU2AsQIIAIgBDYCwAggASACQcAIahDJAyACQfAIaiQAC0sAIAAoAgBBgICAgHhHBEAgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAA8LIAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBDOAwuFAQECfyMAQTBrIgEkACABEJsJIAFBIjYCHCABQZTvwQA2AhggASAA/QACAP0LAiAgAUEYaiECQTQQbiIARQRAQTQQsQoACyAAQYymwQA2AgAgACABKQIANwIEIAAgAf0AAgj9CwIMIAAgAikCADcCHCAAIAL9AAII/QsCJCABQTBqJAAgAAvEAgEIfyMAQRBrIgQkACAEQQhqIQcgACgCACEBIwBBEGsiAyQAIANBBGohAiAAKAIEIQgCQAJAQQQgAUEBaiIBIAAoAgAiBUEBdCIGIAEgBksbIgEgAUEETRsiBiIBQf////8ASw0AIAFBBHQiAUH8////B0sNAAJ/IAUEQCAIIAVBBHRBBCABEMACDAELIAEQbgsiBUUEQCACIAE2AgggAkEENgIEIAJBATYCAAwCCyACIAE2AgggAiAFNgIEIAJBADYCAAwBCyACQQA2AgQgAkEBNgIACwJ/IAMoAgQEQCADKAIMIQAgAygCCAwBCyADKAIIIQIgACAGNgIAIAAgAjYCBEGBgICAeAshAiAHIAA2AgQgByACNgIAIANBEGokACAEKAIIIgBBgYCAgHhHBEAgACAEKAIMEJoJAAsgBEEQaiQAC+ABAgF/AX4jAEEgayIDJAAgAyABNgIQIAMgADYCDCADQQE7ARwgAyACNgIYIAMgA0EMajYCFCMAQRBrIgEkACADQRRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIEIgNBAXEEQCACKAIAIQIgACADQQF2NgIEIAAgAjYCACAAQcCBxwAgASgCBCABKAIIIgAtAAggAC0ACRDcBQALIABBgICAgHg2AgAgACABNgIMIABB3IHHACABKAIEIAEoAggiAC0ACCAALQAJENwFAAs7AQF/IwBBEGsiAyQAIAMgATYCBCADIAA2AgAgAyADrUKAgICAwAGENwMIQZSbwAAgA0EIaiACEJMIAAtBAAJAIAAoAiQiACgCBEEDRwRAIABBBGohAAwBCyAAIAAoAgAoAhgRBAAiAA0AQfj8wQBBGEGQ/cEAEJQIAAsgAAv8QwImfwJ+IAAoAsQBIgJBBE8EQCAAKALAASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGoxAABC7gCFhEIAUg0TIAohAAJAA0AgAUEvIAwgABD2BEEBIR8gASgCAEEBRwRAQQAhBgwCCwJAIAogASgCBCIASwRAIAAgDGotAABBL0YNAQtBACEGIAAgCk0NAQwCCwsgASAANgLsBCABIAw2AugEIAEgAUHoBGqtQoCAgIAghDcDeCABQfACakHt78AAIAFB+ABqEOAEIAEoAvACIR4gASgC9AIhHyABKAL4AiEGCyABQfACaiABQRhqIAwgChDhBCABIAEpA/gCNwNQIAEgASgCgAM2AlgCQCABKQPwAiInQgNRBEAgAUHQAGoQvwghAAwBCyABQYwBaiABQYQDakG0AfwKAAAgASAnNwN4IAEgASkDUDcDgAEgASABKAJYNgKIASAB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EMEHCyABKALECCICBEAgASgCyAggAkEBEMEHCyABKALIByICQYCAgIB4RyAEcUUNACACBEAgASgCzAcgAkEBEMEHCyABKALUByICRQ0AIAEoAtgHIAJBARDBBwsgAUHoBGoQ/AMgASgCXCICBEAgASgCYCACQQEQwQcLICAEQCAhICBBARDBBwsgHgRAIB8gHkEBEMEHCyALIApBARDBByABKAIoIgIgAigCACICQQFrNgIAIAJBAUcNByABKAIoEP0CDAcLIAtBBGsoAgAiBUF4cSIIQQRBCCAFQQNxIgUbIApqSQ0EIAVBACAIIApBJ2pLGw0FIAsQogILIAYgAkEBaiICRw0ACwtBtu/BAEEfELQIIQALIAEoAigiAiACKAIAIgJBAWs2AgAgAkEBRw0CIAEoAigQ/QIMAgtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAFBkApqJAAgAA8LQZjPwQBBExC0CA8LQavPwQBBExC0CAv8QwImfwJ+IAAoAoACIgJBBE8EQCAAKAL8ASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGox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KALEBSACQQEQwQcLIAEoAswFIgIEQCABKALQBSACQQEQwQcLIAEoAtgFIgJFDQ4gASgC3AUgAkECdEEEEMEHDA4LIAFBADoA+AIgASAGNgL0AiABIAI2AvACIAkgAUHwAmoiCBCrAyAIIAFBjAVqIAEoAvwGIAEoAoAHENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYNACAIIAAgASgC+AIQQSABKAL0AiENIAEoAvACIg5BgICAgHhGBEAgAUEDNgLwAiABIA02AoAKIAFBDzYC/AkgAUHy8cEANgL4CSABQfgJaiAIEI4IIQIgA0UEQCACIQAMAgsgACADQQEQwQcgAiEADAELIAEoAvgCIQggAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKAKIByABKAKMBxDQBCABKAL0AiEAIAEoAvACIgNBgICAgHhGBEBBASEFQQEhBAwLCyABQfACaiILIAAgASgC+AIQQSABKAL0AiEPIAEoAvACIhBBgICAgHhGBEAgAUEDNgLwAiABIA82AoAKIAFBDzYC/AkgAUGB8sEANgL4CSABQfgJaiALEI4IIQJBASEFIANFDQogACADQQEQwQcMCgsgASgC+AIhCyADBEAgACADQQEQwQcLIAFB8AJqIAFBjAVqIAEoAqQIIAEoAqgIENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYEQEEBIQVBASEEDAkLIAFB8AJqIhkgACABKAL4AhBBIAEoAvQCIREgASgC8AIiEkGAgICAeEYEQCABQQM2AvACIAEgETYCgAogAUENNgL8CSABQZDywQA2AvgJIAFB+AlqIBkQjgghAkEBIQUgA0UNCCAAIANBARDBBwwICyABKAL4AiEZIAMEQCAAIANBARDBBwsgAUHwAmogAUGMBWogASgCtAcgASgCuAcQ0AQgASgC9AIhACABKALwAiIDQYCAgIB4RgRAQQEhBUEBIQQMBwsgAUHwAmoiGiAAIAEoAvgCEEEgASgC9AIhEyABKALwAiIUQYCAgIB4RgRAIAFBAzYC8AIgASATNgKACiABQQw2AvwJIAFBnfLBADYC+AkgAUH4CWogGhCOCCECQQEhBSADRQ0GIAAgA0EBEMEHDAYLIAEoAvgCIRogAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKALICCABKALM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CyUAIABBsJzBADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALKAAgASgCACAALQAAQQJ0IgAoAoiMSCAAKALgi0ggASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCoI1IIAAoAuiMSCABKAIEKAIMEQAACyEAIABB0PvDADYCBCAAIAFBBGpBACABLQAAQSRGGzYCAAsoACABKAIAIAAtAABBAnQiACgCrJJIIAAoApCSSCABKAIEKAIMEQAACygAIAEoAgAgAC0AAEECdCIAKAKQlEggACgCyJNIIAEoAgQoAgwRAAALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARCwALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARBgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbQALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbwALKAAgASgCACAALQAAQQJ0IgAoAqihSCAAKALgoEggASgCBCgCDBEAAAsiACABKAIoQQJHBEAgACABKQLcAjcDAA8LQdivxgAQmQoACyUAIABBjLnGADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALJwAgACgCAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCygAIAEoAgAgAC0AAEECdCIAKAKss0ggACgChLJIIAEoAgQoAgwRAAALJAAgAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCyEAIABFBEBBnKHEAEEyEN0KAAsgACACIAMgASgCEBEFAAshACAARQRAQZyhxABBMhDdCgALIAAgAiADIAEoAhARAAALHAAgACgCACIAQQRqKAIAIABBCGooAgAgARDBAgshACABKAIAIAAtAABBAnQoAtSLSEEBIAEoAgQoAgwRAAALIgAgASAALQAAQQJ0IgAoAuiPSCAAKALIj0ggAigCDBEAAAseACAAQdD7wwA2AgQgAEEAIAFBBGogAS0AABs2AgALHAAgASAAKAIAIgBBBGooAgAgAEEIaigCABCuAwsfACAARQRAQZyhxABBMhDdCgALIAAgAiAB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//sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEDaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRBqKAIAIgNB////+wdNBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQRqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBFGooAgAiA0H////7B00EQEHEvcgAKAIAIANBf3MiA0H//wNxQQJ0IgVBrL3IACgCAGooAgBBA3RqIABBBWqsIAOtQiCGhDcDAEGsvcgAKAIAIAVqIgMgAygCAEEBajYCAAsgBEEYaigCACIDQf////sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEGaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRxqKAIAIgNBgICA/AdJBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQdqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBIGohBCAAQQhqIgAgD0cNAAsMBAtBACALIABB8MPBABCgBQALQQAgCUEYaiAJQTBqQQAgAEHQocQAEKAIAAtBACALIARBqMDBABCgBQALQZSRwQAQtggACyALBEADQCAIKAIAIgRBgICA/AdJBEBBxL3IACgCACAEQX9zIgRB//8DcUECdCIDQay9yAAoAgBqKAIAQQN0aiAArCAErUIghoQ3AwBBrL3IACgCACADaiIEIAQoAgBBAWo2AgALIAhBBGohCCAAQQFqIQAgC0EEayILDQALCwJAAkACQAJAAkBByL3IACgCACIAIAZPBEBBxL3IACgCACELIAZB+P///wBxIggEQEEAIAhrIQAgCyEEA0BBoL3IACgCACAEKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiIDIAMoAgBBAWo2AgBBoL3IACgCACAEQQhqKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiID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AEEBayIANgIAIABFBEAgAhD/BgsMAwsQ3AoLAAsQ3goACwsRACABIAAoAgQgACgCCBCuAwsRACABIAAoAgAgACgCBBCuAwsTACAAQSg2AgQgAEH4tMYANgIACxMAIABBlKHBADYCBCAAIAE2AgALEwAgAEHQocEANgIEIAAgATYCAAsTACAAQYyiwQA2AgQgACABNgIACxMAIABByKLBADYCBCAAIAE2AgALEwAgAEGEo8EANgIEIAAgATYCAAsTACAAQcCjwQA2AgQgACABNgIACxMAIABB/KPBADYCBCAAIAE2AgALEwAgAEG4pMEANgIEIAAgATYCAAsRACAAKAIEIAAoAgggARDBAgscACAAQZi7z+wDNgIIIABC0Ofm8pPrxZs/NwIACxEAIAAoAgAgACgCBCABEMECCxMAIABB5MTGADYCBCAAIAE2AgALEwAgAEHUxsYANgIEIAAgATYCAAsTACAAQdzFxgA2AgQgACABNgIACxMAIABBmMbGADYCBCAAIAE2AgALEwAgAEGoxMYANgIEIAAgATYCAAsTACAAQaDFxgA2AgQgACABNgIACxMAIABB7MPGADYCBCAAIAE2AgALEwAgAEH8jMcANgIEIAAgATYCAAsWAEGUxMgAIAA2AgBBkMTIAEEBOgAACxEBAX8QnwUiASAAJQEmASABCw4AIAAlASABJQFBABAZCxIAQYipxgBBI0HQ+sEAEJMIAAsPAEGwkMIAQSsgABCoCQALEAAgAEHYmcEAIAEgAhDOAwsQACAAQcidwQAgASACEM4DCxMAQZCswgBBmQFB3KzCABCTCAALDwBB1J7CAEEzIAAQkwgACxAAIABBgPvBACABIAIQzgMLEAAgAEG4+8EAIAEgAhDOAwsQACAAQaz8wQAgASACEM4DCxAAIABBrP3BACABIAIQzgMLEAAgAEGIj8IAIAEgAhDOAwsQAEHtnsIAQfMAIAAQkwgACxAAIABB1OnDACABIAIQzgMLEAAgAEGsz8QAIAEgAhDOAwsQACAAQcinxQAgASACEM4DCxAAIABBpLLFACABIAIQzgMLEgAgACABLQDoBC0AsKZIOgAACxAAIABB4L/GACABIAIQzgMLEAAgAEGogccAIAEgAhDOAwsMACAAJQEgASACEAQLDQAgACUBIAElARAHGgsMACAAIAEgAiUBEBEL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IG5lZWQgYXQgbGVhc3QgwAAJRXhwZWN0ZWQgwBcgYWN0aXZlIHNwbGF0cyBidXQgZ290IMAACUV4cGVjdGVkIMANIHNwbGF0cywgZ290IMAACUV4cGVjdGVkIMARIFNIIHJlY29yZHMsIGdvdCDAAB5JbnZhbGlkIGNodW5rIGNvdW50OiBleHBlY3RlZCDABiwgZ290IMAAI1Byb3BlcnR5IG9mZnNldCBtaXNtYXRjaDogZXhwZWN0ZWQgwAYsIGdvdCDAABp3cm9uZyBkYXRhIHNpemUsIGV4cGVjdGVkIMAFIGdvdCDAABxNaXNzaW5nIFBMWSBjaHVuayBmb3Igc3BsYXQgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAFWJ5dGUgcmFuZ2Ugc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABBUaGUgZGVjb2RlciBmb3IgwCYgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIMAAEWludmFsaWQgc2l6ZSBmb3IgwADACSBhdCBsaW5lIMAIIGNvbHVtbiDAABpJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIMAAEXN0YXJ0IGJ5dGUgaW5kZXggwCcgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc3RyaW5nIG9mIGxlbmd0aCDAAA9lbmQgYnl0ZSBpbmRleCDAJyBpcyBvdXQgb2YgYm91bmRzIGZvciBzdHJpbmcgb2YgbGVuZ3RoIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAAdzdHJpbmcgwAAWRm9ybWF0IGVycm9yIGVuY29kaW5nIMAAFkZvcm1hdCBlcnJvciBkZWNvZGluZyDAABJVbmV4cGVjdGVkIGVuZCBvZiDAADBUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSDAABBUaGUgY29sb3Igc3BhY2UgwB0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIMAAEXVua25vd24gdmFyaWFudCBgwAxgLCBleHBlY3RlZCDAAA9pbnZhbGlkIGxlbmd0aCDACywgZXhwZWN0ZWQgwAAPaW52YWxpZCB2YWx1ZTogwAssIGV4cGVjdGVkIMAADmludmFsaWQgdHlwZTogwAssIGV4cGVjdGVkIMAAHGJhc2UgKyBjb3VudCBvdXQgb2YgYm91bmRzOiDAAyArIMADID4gwAARbWluID4gbWF4LiBtaW4gPSDACCwgbWF4ID0gwAAgb3V0cHV0IGJhdGNoIGNodW5rLCBjaHVua19yZWwgPSDAAB9JbmNvbXBsZXRlIFNQWiBzdHJlYW06IHN0YWdlID0gwA4sIHNoX2RlZ3JlZSA9IMAAGW9wYWNpdHkgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFnF1YXQgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAGGNlbnRlciBhcnJheSB0b28gc21hbGw6IMADIDwgwAAXc2NhbGUgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFXJnYiBhcnJheSB0b28gc21hbGw6IMADIDwgwAAMUm9vdCBpbmRleDogwAAGUm9vdDogwAAQYXNzZXJ0aW9uIGBsZWZ0IMAXIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiDACQogcmlnaHQ6IMAAEGFzc2VydGlvbiBgbGVmdCDAECByaWdodGAgZmFpbGVkOiDACQogIGxlZnQ6IMAJCiByaWdodDogwAAYVW5zdXBwb3J0ZWQgUExZIGZvcm1hdDogwAAMUm9vdCBzcGxhdDogwAAlQXZlcmFnZSBjaGlsZHJlbiBwZXIgaW50ZXJpb3Igc3BsYXQ6IMAAGkludmFsaWQgY29sb3IgY2FjaGUgYml0czogwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAwsICMgYWN0aXZlOiDADCwgIyBzcGxhdHM6IMAAJUludmFsaWQgbnVtYmVyIG9mIGZfcmVzdCBwcm9wZXJ0aWVzOiDAABNMb0QgZ3Jvd3RoIGZhY3RvcjogwAALaS9vIGVycm9yOiDAAApJTyBFcnJvcjogwAATSW52YWxpZCBwYXJhbWV0ZXI6IMAAIUludmFsaWQgbG9zc2xlc3MgdmVyc2lvbiBudW1iZXI6IMAAH1Vuc3VwcG9ydGVkIFJBRCBjaHVuayB2ZXJzaW9uOiDAABlVbnN1cHBvcnRlZCBTUFogdmVyc2lvbjogwAAZVW5zdXBwb3J0ZWQgUExZIHZlcnNpb246IMAAGVVuc3VwcG9ydGVkIFJBRCB2ZXJzaW9uOiDAABBSb290ICNjaGlsZHJlbjogwAAPdW5rbm93biB0b2tlbjogwAAdVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiDAABRDaHVuayBsZW5ndGggd3Jvbmc6IMAAIlVuc3VwcG9ydGVkIGNoaWxkIHN0YXJ0IGVuY29kaW5nOiDAACJVbnN1cHBvcnRlZCBjaGlsZCBjb3VudCBlbmNvZGluZzogwAAdVW5zdXBwb3J0ZWQgc2NhbGVzIGVuY29kaW5nOiDAAB1VbnN1cHBvcnRlZCBjZW50ZXIgZW5jb2Rpbmc6IMAAIlVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIGVuY29kaW5nOiDAAB9VbnN1cHBvcnRlZCBzaCBsYWJlbCBlbmNvZGluZzogwAAcVW5zdXBwb3J0ZWQgbGFiZWwgZW5jb2Rpbmc6IMAAGVVuc3VwcG9ydGVkIHNoIGVuY29kaW5nOiDAABpVbnN1cHBvcnRlZCByZ2IgZW5jb2Rpbmc6IMAAHFVuc3VwcG9ydGVkIGFscGhhIGVuY29kaW5nOiDAAA9Tb3J0ZWQgYWN0aXZlOiDAABVpbnZhbGlkIFppcCBhcmNoaXZlOiDAABl1bnN1cHBvcnRlZCBaaXAgYXJjaGl2ZTogwAAVVW5zdXBwb3J0ZWQgZmVhdHVyZTogwAAfVW5zdXBwb3J0ZWQgUExZIHByb3BlcnR5IHR5cGU6IMAAE0ludmFsaWQgZmlsZSB0eXBlOiDAABdJbnZhbGlkIHByb3BlcnR5IGxpbmU6IMAAHVVuc3VwcG9ydGVkIFBMWSBoZWFkZXIgbGluZTogwAATSW52YWxpZCBTSCBkZWdyZWU6IMAAI0ludmFsaWQgVlA4IGludHJhIHByZWRpY3Rpb24gbW9kZTogwAAiSW52YWxpZCBWUDggbHVtYSBwcmVkaWN0aW9uIG1vZGU6IMAAJEludmFsaWQgVlA4IGNocm9tYSBwcmVkaWN0aW9uIG1vZGU6IMAAGUludmFsaWQgVlA4IGNvbG9yIHNwYWNlOiDAABxUaGUgcGFyYW1ldGVyIGlzIG1hbGZvcm1lZDogwAAWRGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAC2xldmVsX21pbjogwBMsIGZlYXR1cmVfc2l6ZVswXTogwAATZmFpbGVkIHByaW50aW5nIHRvIMACOiDAABZGb3JtYXQgZXJyb3IgZGVjb2RpbmcgwAI6IMAADE91dHB1dCBzZXQ6IMADIC8gwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAAITWVyZ2VkOiDAAyAvIMAAFkZvcm1hdCBlcnJvciBlbmNvZGluZyDAAjoKwAABCsAAaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0AGludmFsaWQgY29kZSBsZW5ndGhzIHNldAB1bmtub3duIGhlYWRlciBmbGFncyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0ABNUaGUgZmlsZSBleHRlbnNpb24gwCYgd2FzIG5vdCByZWNvZ25pemVkIGFzIGFuIGltYWdlIGZvcm1hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AHNwYXJrLWxpYi9zcmMvc3B6LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAHNwYXJrLWxpYi9zcmMvcGx5LnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI3L3NyYy9sZWdhY3kucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL3N0ZXBfYnkucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2FsbC90d293YXkucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dpbmRvdy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZ3Jpc3UucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAc3BhcmstcnMvc3JjL3NvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2ZtdC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZGl5X2Zsb2F0LnJzAHNwYXJrLWxpYi9zcmMvdHNwbGF0LnJzAHNwYXJrLWxpYi9zcmMva3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAHNwYXJrLWxpYi9zcmMvZ3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvY3NwbGF0LnJzAHNwYXJrLXJzL3NyYy9leHRfc3BsYXRzLnJzAHNwYXJrLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9kZWNvbXByZXNzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2xvc3NsZXNzLnJzAHNwYXJrLWxpYi9zcmMvc29ncy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvdGhyZWFkX2xvY2FsL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL3J3bG9jay9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2Vycm9yLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29sb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2dlbmVyaWMvcGFja2VkcGFpci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21lbWNoci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dyaXRlci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMy4wL3NyYy9pbm5lci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdW5maWx0ZXJpbmdfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLTAuMjUuMTAvc3JjL2ltYWdlcy9idWZmZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4X2FyaXRobWV0aWNfZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3Mvd2VicC9kZWNvZGVyLnJzAHNwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9kZWNvZGVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC9tYWdpY19maW5kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9jb21tb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2h1ZmZtYW4ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2JpZ251bS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL2J1ZmZlcmVkL2xpbmV3cml0ZXJzaGltLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvc3RyZWFtLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL3JlZW50cmFudF9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2VfbG9jay5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTE3L3NyYy9leHRlcm5yZWYucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0vcGFsZXR0ZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2FsbG9jYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL2NvcmUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvc3RhYmxlLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9jaHVua190cmVlLnJzAHNwYXJrLXJzL3NyYy9sb2RfdHJlZS5ycwBzcGFyay1saWIvc3JjL3NwbGF0X2VuY29kZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL2JzdHIvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9tb2QucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9mbHQyZGVjL21vZC5ycwBzcGFyay1saWIvc3JjL3RpbnlfbG9kLnJzAHNwYXJrLWxpYi9zcmMvYmhhdHRfbG9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvaWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvZXh0ZW5kZWQucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci96bGliLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjk0L3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hbGx2ZWMtMS4xNS4xL3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDgucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcDQzNy5ycwBzcGFyay1saWIvc3JjL3N5bW1hdDMucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcmMzMi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNy9zcmMvdjAucnMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAJVGhlIENJQ1AgwB8gY2FuIG5vdCBiZSB1c2VkIGZvciBSR0IgaW1hZ2VzAMAsIGNhbid0IGJlIHJlcHJlc2VudGVkIGFzIGEgSmF2YVNjcmlwdCBudW1iZXIADU1pc3NpbmcgZmlsZSDADCBpbiBTT0dTIHppcADAECBlbGVtZW50cyBpbiBtYXAAPWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFVucmVjb2duaXplZCBjaHVuayDAJyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBpbiBzdGFydF9jaHVuawDAISBjaHVuayBhcHBlYXJlZCBiZWZvcmUgSUhEUiBjaHVuawBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW52YWxpZCB3aW5kb3cgc2l6ZQByZXBlYXRlZCBjYWxsIHdpdGggYmFkIHN0YXRlAGludmFsaWQgYmxvY2sgdHlwZQANTWlzc2luZyBmaWxlIMAJIGluIGNhY2hlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAwBUgZWxlbWVudHMgaW4gc2VxdWVuY2UAFlVuZXhwZWN0ZWQgcmVzdGFydCBvZiDADyBjaHVuayBzZXF1ZW5jZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZAA5aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc3RyOjpmcm9tX3V0ZjgowAQpID0gwCIgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgwBEgY2hhcnMgd2VyZSBmb3VuZAAoQ29udmVydGluZyB3aXRoIHRoZSB0ZXhlbCBtZW1vcnkgbGF5b3V0IMARIGlzIG5vdCBzdXBwb3J0ZWQAEVRoZSBpbWFnZSBmb3JtYXQgwBEgaXMgbm90IHN1cHBvcnRlZAAQZmxvYXRpbmcgcG9pbnQgYMABYABMVGhlIGNvbG9yaW1ldHJpYyBpbnRlcnByZXRhdGlvbiBvZiBhIENJQ1AgY29sb3Igc3BhY2UgaXMgbm90IHN1cHBvcnRlZCBmb3IgYMABYAABYMAGYCBvciBgwAFgAAtjaGFyYWN0ZXIgYMABYAAJaW50ZWdlciBgwAFgAAlib29sZWFuIGDAAWAAG1RoZSBlbmNvZGVyIG9yIGRlY29kZXIgZm9yIMAiIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbG9yIHR5cGUgYMABYAAPbWlzc2luZyBmaWVsZCBgwAFgABFkdXBsaWNhdGUgZmllbGQgYMABYAABYMABYAACYC7AAWAAAVvAAV0AwAEvAAZDaHVuayDAKiBtdXN0IGFwcGVhciBiZXR3ZWVuIFBMVEUgYW5kIElEQVQgY2h1bmtzLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBQTFRFIGNodW5rLgAGQ2h1bmsgwB4gaXMgaW52YWxpZCBiZWZvcmUgUExURSBjaHVuay4AFkNSQyBlcnJvcjogZXhwZWN0ZWQgMHjACCBoYXZlIDB4wBAgd2hpbGUgZGVjb2RpbmcgwAcgY2h1bmsuACVUaGUgc2l6ZSBvZiB0aGUgc0JJVCBjaHVuayBzaG91bGQgYmUgwA4gYnl0ZShzKSwgYnV0IMAfIGJ5dGUocykgd2VyZSBwcm92aWRlZCBmb3IgdGhlIMAMIGNvbG9yIHR5cGUuAAZDaHVuayDAGiBtdXN0IGFwcGVhciBhdCBtb3N0IG9uY2UuACRTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICPABiBnb3QgI8ABLgAjTm90IGVub3VnaCBwYWxldHRlIGVudHJpZXMsIGV4cGVjdCDABSBnb3QgwAEuAB5JbnZhbGlkIHNSR0IgcmVuZGVyaW5nIGludGVudCDAAS4AIUludmFsaWQgcGh5c2ljYWwgcGl4ZWwgc2l6ZSB1bml0IMABLgATSW52YWxpZCBkaXNwb3NlIG9wIMABLgARSW52YWxpZCBibGVuZCBvcCDAAS4AEkludmFsaWQgYml0IGRlcHRoIMABLgATSW52YWxpZCBzQklUIHZhbHVlIMA+LiBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gdGhlIHNhbXBsZSBkZXB0aCDAAS4AKFRyYW5zcGFyZW5jeSBjaHVuayBmb3VuZCBmb3IgY29sb3IgdHlwZSDAAS4AE0ludmFsaWQgY29sb3IgdHlwZSDAAS4AFlVua25vd24gZmlsdGVyIG1ldGhvZCDAAS4AG1Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kIMABLgAZVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIMABLgBJSSoAEXN0YXJ0IGJ5dGUgaW5kZXggwCYgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlIMAIIChieXRlcyDACyBvZiBzdHJpbmcpAA9lbmQgYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMALIG9mIHN0cmluZykACEpzVmFsdWUowAEpABJTSCBlbGVtZW50IGNvdW50ICjAGykgbXVzdCBtYXRjaCB2ZXJ0ZXggY291bnQgKMABKQAmY29weV9mcm9tX3NsaWNlOiBzb3VyY2Ugc2xpY2UgbGVuZ3RoICjAKykgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICjAASkAwAsgKG9zIGVycm9yIMABKQDAByAoMSA8PCDAASkAD0dzcGxhdChjZW50ZXI6IMALLCBvcGFjaXR5OiDABywgcmdiOiDACiwgc2NhbGVzOiDADiwgcXVhdGVybmlvbjogwAEpAA9Dc3BsYXQoY2VudGVyOiDACywgb3BhY2l0eTogwAcsIHJnYjogwAosIHNjYWxlczogwA4sIHF1YXRlcm5pb246IMABKQAGRXJyb3IowAgsIGxpbmU6IMAKLCBjb2x1bW46IMABKQDAAjogAAtzcGxpdCBheGlzPcAJLCBleHRlbnQ9wAgsIHNwbGl0PcAILCBhLmxlbj3ACCwgYi5sZW49wAEKABBvY3RhbnQgbGVuZ3RoczogwAEKAAAiExAAGgAAAHYAAAAgAAAAIhMQABoAAAB1AAAAIgAAACITEAAaAAAAdAAAAB4AAAAiExAAGgAAAHMAAAAmAAAAIhMQABoAAAByAAAAJAAAACITEAAaAAAAVAAAABcAAAAiExAAGgAAAFUAAAAXAAAAIhMQABoAAABWAAAAFwAAACITEAAaAAAAWAAAABYAAAAiExAAGgAAAFkAAAAWAAAAIhMQABoAAABaAAAAFgAAACITEAAaAAAAXAAAACoAAAAiExAAGgAAAFwAAAAUAAAAIhMQABoAAABdAAAAKgAAACITEAAaAAAAXQAAABQAAAAiExAAGgAAAF4AAAAqAAAAIhMQABoAAABeAAAAFAAAACITEAAaAAAAYAAAACkAAAAiExAAGgAAAGAAAAAYAAAAIhMQABoAAABiAAAAJgAAACITEAAaAAAAYwAAACYAAAAiExAAGgAAAGQAAAAmAAAAIhMQABoAAABlAAAAJgAAACITEAAaAAAAaAAAABUAAAAiExAAGgAAAGkAAAAVAAAAIhMQABoAAABqAAAAFQAAACITEAAaAAAAawAAABUAAABJbnZhbGlkIC5zcGxhdCBmaWxlIHNpemVNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tlecknEABeAAAAZgoAAB8AQbD/wAALBQEAAACFAEHA/8AACwUBAAAAhgBB0P/AAAsFAQAAAIcAQeD/wAALBQEAAACIAEHw/8AACwUBAAAAiQBBgIDBAAsFAQAAAIoAQZCAwQALBQEAAACJAEGggMEACwUBAAAAiwBBsIDBAAsFAQAAAIwAQcCAwQALBQEAAACNAEHQgMEACwUBAAAAjgBB4IDBAAsFAQAAAI8AQfCAwQALBQEAAACQAEGAgcEACwUBAAAAkQBBkIHBAAsFAQAAAJIAQaCBwQALBQEAAACTAEGwgcEACwUBAAAAlABBwIHBAAsFAQAAAJUAQdCBwQALBQEAAACWAEHggcEACwUBAAAAlwBB8IHBAAsFAQAAAJgAQYCCwQALBQEAAACYAEGQgsEACwUBAAAAmABBoILBAAsFAQAAAJgAQbCCwQALBQEAAACYAEHAgsEACwUBAAAAmABB0ILBAAsFAQAAAJgAQeCCwQALBQEAAACYAEHwgsEACwUBAAAAmABBgIPBAAsFAQAAAJgAQZCDwQALBQEAAACYAEGgg8EAC2UBAAAAmAAAAGFuIGFycmF5IG9mIGxlbmd0aCAxYW4gYXJyYXkgb2YgbGVuZ3RoIDJhbiBhcnJheSBvZiBsZW5ndGggM2FuIGFycmF5IG9mIGxlbmd0aCA0AAAAAAAAAAABAAAAmQBBkITBAAsFAQAAAJoAQaCEwQALBQEAAACbAEGwhMEACwUBAAAAnABBwITBAAuhCAEAAACdAAAAZmlsZXNtaW5zbWF4c3NoYXBlc3RydWN0IE1lYW5zIHdpdGggNCBlbGVtZW50cwAAWkIQABwAAABlbmNvZGluZ3N0cnVjdCBRdWF0cyB3aXRoIDIgZWxlbWVudHOIQhAAHAAAAHN0cnVjdCBTaDBWMSB3aXRoIDMgZWxlbWVudHOsQhAAHAAAAGNvZGVib29rc3RydWN0IFNoMFYyIHdpdGggMiBlbGVtZW50c9hCEAAcAAAAc3RydWN0IFNoTlYxIHdpdGggNCBlbGVtZW50c/xCEAAcAAAAYmFuZHNzdHJ1Y3QgU2hOVjIgd2l0aCAzIGVsZW1lbnRzAAAAJUMQABwAAABpbmZvc3RydWN0IExhYmVscyB3aXRoIDIgZWxlbWVudHMAAABQQxAAHQAAAHN0cnVjdCBNZWFuc1YxIHdpdGggNCBlbGVtZW50cwAAeEMQAB4AAABtZWFuc3NjYWxlc3F1YXRzbGFiZWxzc2gwc2hOc3RydWN0IFBjU29nc1YxIHdpdGggNiBlbGVtZW50cwC8QxAAHwAAAHN0cnVjdCBQY1NvZ3NWMiB3aXRoIDggZWxlbWVudHMA5EMQAB8AAABzdHJ1Y3QgU2NhbGVzVjEgd2l0aCAzIGVsZW1lbnRzAAxEEAAfAAAAc3RydWN0IFNjYWxlc1YyIHdpdGggMiBlbGVtZW50cwA0RBAAHwAAAHBheWxvYWRCeXRlc3Byb3BlcnRpZXNzdHJ1Y3QgUmFkQ2h1bmtNZXRhIHdpdGggOCBlbGVtZW50cwAAAHJEEAAjAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHOxRBAAJwAAAGNlbnRlcnJnYm9yaWVudGF0aW9uc2gxc2gyc2gzY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAOBEEAAGAAAAr7gRAAUAAADmRBAAAwAAAKVDEAAGAAAA6UQQAAsAAACqshEABQAAAMayEQAOAAAA9EQQAAMAAAD3RBAAAwAAAPpEEAADAAAA/UQQAAsAAAAIRRAACwAAABNFEAAIAAAAG0UQAAgAAAAjRRAACAAAACtFEAAIAAAAZjE2ZjMyX2xlYnl0ZXNmMTZfbGVieXRlc3I4cjhfZGVsdGFzOHM4X2RlbHRhbG5fMHI4bG5fZjE2b2N0ODhyOBhTEQACAAAAGlMRAAMAAAC0RRAAAwAAALdFEAALAAAAwkUQAAsAAADNRRAAAgAAAM9FEAAIAAAA10UQAAIAAADZRRAACAAAAOFFEAAGAAAA50UQAAYAAADtRRAABwAAAPslEQADAAAAIFMRAAMAQeyMwQALBQEAAACeAEH8jMEAC/EMAQAAAJ8AAABnegAAhEYQAAIAAABhIG1hcAAAAJL7BFYo6OWj081Pw6yS7bbjakM2M82IVICa6+WCgujhLNdEbhQC79AK/89rIxe4vUSV0OAI/fessvPzEUZsdWw5lVgtqlHyhoGoQNfUiaz5imNuwNELaayeyAFNk8/7bsE4yN0u33OsxCva288uwRrk7bUaKhm6qtGejw0QOHcgMajXqGqHsDP+WUI2ANZLUvBKAWY5uY4UmroklLt0EtPZB7zAeMPQNgh/Ts8U2UzoGPv9Fzgt5WbAxRwFGfGaSHDeQK7XBYuncix2l922AzuR7gb0/Mfo0PIRuPM96YgorugFjT0afX/VioadF7dBDodUMvFbHWmz0s3V7RvRKnRYlJuDE6geSHS8sDp6AfokcZ7rHghe/EnhMNERmQSmE/eH7bZNFPhCP9zQssOxiKADaRWv8ScPvdQxlx8xaO6+vgc+8kGfusrELB6Ilb/gnxVfs07Vk+VnQokAFOojUofoFtH5mVDgyi35LfBH1fTbssdW/Q/mG1TOFsk9apD3IM4/Z/nh0DIopEu0rx6BJpMg3jw9cfi9440jB8IT3Oo0DPEsVvqMDMSQUxAfmOHvrZ384tj2twBjQoxWu0l95eBPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAIQoEABMAAAApgAAADIAAADXIRAATwAAAMICAAAmAAAA0BwQAGEAAACkAAAAKgAAANAcEABhAAAABAEAACUAAACgAAAADAAAAAQAAAChAAAAoAAAAAwAAAAEAAAAogAAAKEAAADESBAAowAAAKQAAAClAAAAowAAAKYAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZU92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjpzcGVjOjpaaXA2NENERUxvY2F0b3JCbG9ja0ludmFsaWQgemlwNjQgbG9jYXRvciBkaWdpdGFsIHNpZ25hdHVyZSBoZWFkZXIAAAAAAIAoShAALgAAAHppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAICAShAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVCbG9ja1BLBgZ6aXA6OnR5cGVzOjpaaXBDZW50cmFsRW50cnlCbG9ja1BLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcgAAAIDsShAAIAAAAEludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NE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emVsZWFmQ291bnSSJxAAGAAAAFQCAABcAAAAkicQABgAAABTAgAAYgAAAJInEAAYAAAAUgIAAF4AAACSJxAAGAAAAFECAABZAAAAkicQABgAAABQAgAAaAAAAJInEAAYAAAATwIAAGIAAACSJxAAGAAAALsBAAAzAAAAkicQABgAAADAAQAAHQAAAJInEAAYAAAAwQEAACIAAACSJxAAGAAAAMIBAAAgAAAAkicQABgAAADDAQAAIAAAAJInEAAYAAAAxAEAAB8AAACSJxAAGAAAAMYBAAAdAAAAkicQABgAAAC/AQAAPAAAAJInEAAYAAAAvgEAAD0AAACSJxAAGAAAAPUAAAA6AAAAkicQABgAAAD/AAAAWAAAAJInEAAYAAAArQIAAB0AAACSJxAAGAAAALACAAA5AAAAbWlzc2luZ0NvdW50kicQABgAAABIAwAAYgAAAJInEAAYAAAARwMAAFwAAACSJxAAGAAAAEYDAABeAAAAkicQABgAAABFAwAAWQAAAJInEAAYAAAARAMAAGgAAACSJxAAGAAAAEMDAABiAAAAkicQABgAAAAyAwAAIwAAAJInEAAYAAAANQMAAFoAAACSJxAAGAAAADQDAABtAAAAkicQABgAAAAzAwAAWAAAAJInEAAYAAAA1QIAAEsAAACSJxAAGAAAAOICAABAAAAAkicQABgAAADjAgAAPwAAAJInEAAYAAAA6gIAADMAAACSJxAAGAAAAPUCAAA3AAAAkicQABgAAAD3AgAARgAAAJInEAAYAAAAmwIAADMAAACSJxAAGAAAAKACAAAdAAAAkicQABgAAAChAgAAIgAAAJInEAAYAAAAogIAACAAAACSJxAAGAAAAKMCAAAgAAAAkicQABgAAACkAgAAHwAAAJInEAAYAAAApQIAAB0AAACSJxAAGAAAAJ8CAAA8AAAAkicQABgAAACeAgAAPQAAAE5vdCBhIFpJUC9TT0dTIGZpbGVTT0dTIGZpbGUgdG9vIHNtYWxsAACIExAAHQAAAEwDAAANAAAAiBMQAB0AAABNAwAADQAAAIgTEAAdAAAATgMAAA0AAACIExAAHQAAAEsDAABBAAAAiBMQAB0AAABXAwAADQAAAIgTEAAdAAAAVwMAAD4AAACIExAAHQAAAGEDAAANAAAAiBMQAB0AAABiAwAADQAAAIgTEAAdAAAAYwMAAA0AAACIExAAHQAAAGADAAA7AAAAiBMQAB0AAABtAwAADQAAAIgTEAAdAAAAbgMAAA0AAACIExAAHQAAAG8DAAANAAAAiBMQAB0AAABsAwAAPwAAAFgcEAAYAAAAEAIAACEAAABVbmtub3duIGZpbGUgdHlwZQAAAFgcEAAYAAAAGAIAAB0AAAAMAAAADAAAABAAAAAEAAAABAAAAAwAAAAYAAAAKAAAACwAAAABAAAABgAAAAYAAAAIAAAABAAAAAIAAAAGAAAADAAAABQAAAAYAAAA/38AAAYAAAAGAAAACAAAAAQAAAABAAAABgAAAAwAAAAUAAAAGAAAAP9/AAAAAAAACQAAABgAAAAtAAAAChMQABcAAABpAQAAWQAAAAoTEAAXAAAAaQEAADYAAAAKExAAFwAAAGgBAABZAAAAChMQABcAAABoAQAANgAAAAoTEAAXAAAAZwEAAFgAAAAKExAAFwAAAGcBAAA2AAAAChMQABcAAABmAQAARgAAAAoTEAAXAAAAZgEAACQAAAAKExAAFwAAAGMBAABIAAAAChMQABcAAABjAQAAKgAAAAoTEAAXAAAAYgEAAEoAAAAKExAAFwAAAGIBAAAoAAAAChMQABcAAAD2AAAAFQAAAAoTEAAXAAAACwEAABcAAAAKExAAFwAAABEBAAAXAAAAChMQABcAAAAXAQAAFwAAAAoTEAAXAAAAIAEAABYAAAAKExAAFwAAACEBAAAWAAAAChMQABcAAAAqAQAAFQAAAAoTEAAXAAAAMQEAAB8AAAAKExAAFwAAADIBAAAfAAAAChMQABcAAAAzAQAAHwAAAAoTEAAXAAAANAEAAB4AAAAKExAAFwAAAEgBAAAcAAAAChMQABcAAABNAQAAIAAAABgAAAAfAAAAJgAAABkAAAAgAAAAJwAAABoAAAAhAAAAKAAAABsAAAAiAAAAKQAAABwAAAAjAAAAKgAAAB0AAAAkAAAAKwAAAB4AAAAlAAAALAAAAAoTEAAXAAAAUwEAACAAAAAKExAAFwAAAN0AAAAkAAAAQnVja2V0IGFycmF5IG91dCBvZiBib3VuZHNUcnVuY2F0ZWQga3NwbGF0IGZpbGVTZWN0aW9uIGRhdGEgc2l6ZSBvdmVyZmxvd1VuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgcmVhZGluZyBzZWN0aW9uIGhlYWRlcnNTZWN0aW9uIHNpemUgb3ZlcmZsb3dGaWxlIHRvbyBzbWFsbCBmb3Iga3NwbGF0IGhlYWRlclNIIGJ5dGUgb3V0IG9mIGJvdW5kcwCIExAAHQAAAO4BAAA4AAAAiBMQAB0AAADuAQAAWQAAAIgTEAAdAAAA9wEAAEcAAACIExAAHQAAAPcBAAA5AAAAiBMQAB0AAABkAgAALgAAAIgTEAAdAAAAZAIAAB8AAACIExAAHQAAAGUCAAAfAAAAiBMQAB0AAABZAgAAKgAAAIgTEAAdAAAAhAIAADYAAACIExAAHQAAAIQCAAAjAAAAiBMQAB0AAAB4AgAAKgAAAIgTEAAdAAAApAIAADYAAACIExAAHQAAAKQCAAAjAAAAiBMQAB0AAACYAgAAKgAAAIgTEAAdAAAA0gIAADIAAACIExAAHQAAANQCAAAlAAAAiBMQAB0AAADYAgAAPAAAAIgTEAAdAAAA2AIAAB0AAACIExAAHQAAAMMCAAAhAAAAiBMQAB0AAADHAgAAOAAAAIgTEAAdAAAAxwIAABkAAACIExAAHQAAAMECAAAuAAAAiBMQAB0AAAC0AgAAHQAAAIgTEAAdAAAAtwIAACwAAACIExAAHQAAALcCAAARAAAAiBMQAB0AAAC4AgAAMAAAAIgTEAAdAAAAsgIAACoAAACIExAAHQAAAOcCAAAgAAAAiBMQAB0AAADnAgAAEwAAAIgTEAAdAAAA8QIAACAAAACIExAAHQAAAPECAAATAAAAiBMQAB0AAAB/AQAANgAAAIgTEAAdAAAAgAEAADYAAACIExAAHQAAAI0BAAAzAAAAiBMQAB0AAACOAQAAMwAAAIgTEAAdAAAAigEAAEQAAACIExAAHQAAAIUBAAApAAAAiBMQAB0AAAAAAgAANQAAAIgTEAAdAAAAAAIAAFYAAACIExAAHQAAADACAAAqAAAAiBMQAB0AAAAbAgAANgAAAIgTEAAdAAAAGwIAAFcAAACIExAAHQAAAMYBAAAVAAAAiBMQAB0AAADEAQAAJQAAAIgTEAAdAAAAxQEAACgAAACIExAAHQAAAMkBAAAoAAAAiBMQAB0AAADHAQAAKAAAAIgTEAAdAAAAyAEAACgAAACIExAAHQAAABICAAA3AAAAiBMQAB0AAAASAgAAWABB0N7BAAsFAQAAAIgAQeDewQALBQEAAACIAEHw3sEACwYBAAAAQQEAQYDfwQALBgEAAABBAQBBkN/BAAsGAQAAAEEBAEGg38EACwYBAAAAQQEAQbDfwQALBgEAAABCAQBBwN/BAAsGAQAAAEMBAEHQ38EACwYBAAAARAEAQeDfwQALBgEAAABFAQBB8N/BAAsGAQAAAEYBAEGA4MEAC5YbAQAAAEcBAAB2JxAAGwAAAOgBAAAFAAAAdicQABsAAADhAQAATgAAAFBMWSBoZWFkZXIgdG9vIGxhcmdltA4QABQAAAA/AAAANgAAALQOEAAUAAAAogAAAB0AAAC0DhAAFAAAAOMAAAAkAAAAtA4QABQAAADiAAAAJAAAALQOEAAUAAAA4QAAACQAAAC0DhAAFAAAAOAAAAAwAAAAtA4QABQAAADfAAAAKgAAALQOEAAUAAAA3gAAACYAAAC0DhAAFAAAAN0AAAAoAAAAtA4QABQAAADcAAAAJAAAALQOEAAUAAAA2wAAACwAAAC0DhAAFAAAANoAAAAqAAAAtA4QABQAAACzAAAAIgAAALQOEAAUAAAAwQAAACUAAAC0DhAAFAAAAMIAAAAoAAAAtA4QABQAAADIAAAAJgAAALQOEAAUAAAAzgAAACYAAAC0DhAAFAAAANQAAAAmAAAAtA4QABQAAAC9AAAAIwAAALQOEAAUAAAAuAAAACQAAAC0DhAAFAAAALUAAAAiAAAAtA4QABQAAACwAAAAJQAAALQOEAAUAAAAnwAAAEoAAAC0DhAAFAAAAG4AAAAdAAAAtA4QABQAAACOAAAAJgAAALQOEAAUAAAAjQAAACgAAAC0DhAAFAAAAIwAAAAkAAAAtA4QABQAAACLAAAALAAAALQOEAAUAAAAigAAACoAAAC0DhAAFAAAAH4AAAAiAAAAtA4QABQAAACDAAAAIgAAALQOEAAUAAAAfAAAACUAAAC0DhAAFAAAAGsAAABMAAAAtA4QABQAAAD/AAAAHQAAALQOEAAUAAAAFAEAAC4AAAC0DhAAFAAAABMBAAAwAAAAtA4QABQAAAASAQAALAAAALQOEAAUAAAAEQEAADQAAAC0DhAAFAAAABABAAAyAAAAtA4QABQAAAAgAQAASQAAALQOEAAUAAAAHwEAAEkAAAC0DhAAFAAAAB4BAAArAAAAtA4QABQAAAAqAQAALwAAALQOEAAUAAAA8AAAAEwAAAADLhAAFAAAAC8GAAArAAAAAy4QABQAAAAXBgAAQAAAAAMuEAAUAAAAhAYAAC8AAABQcm9wZXJ0eSBtaXNzaW5nIG1heFByb3BlcnR5IG1pc3NpbmcgbWluAy4QABQAAAAdBwAAHgAAAAMuEAAUAAAAkwYAACQAAAADLhAAFAAAAOoGAABIAAAARmFpbGVkIHRvIGRlY29tcHJlc3MgZ3ogZGF0YQMuEAAUAAAAeAYAADsAAAADLhAAFAAAAHcGAABFAAAAG0ludmFsaWQgUkFEIGNodW5rIG1hZ2ljOiAweMMgAABpCAAAFUludmFsaWQgU1BaIG1hZ2ljOiAweMMgAABpCAAAAABRDhAAFAAAAHkAAAApAAAAUQ4QABQAAAB6AAAAKQAAAFEOEAAUAAAAewAAACkAAABRDhAAFAAAAHsAAABPAAAAUQ4QABQAAAB6AAAATwAAAFEOEAAUAAAAeQAAAE8AAABRDhAAFAAAAIEAAAApAAAAUQ4QABQAAACCAAAAKQAAAFEOEAAUAAAAgwAAACkAAABRDhAAFAAAAIMAAABPAAAAUQ4QABQAAACCAAAATwAAAFEOEAAUAAAAgQAAAE8AAABRDhAAFAAAAJ4AAAA2AAAAUQ4QABQAAACeAAAAJQAAAFEOEAAUAAAAuQAAADsAAABRDhAAFAAAALkAAAAlAAAAUQ4QABQAAAC6AAAAOwAAAFEOEAAUAAAAugAAACUAAABRDhAAFAAAALsAAAA7AAAAUQ4QABQAAAC7AAAAJQAAAFEOEAAUAAAA1QAAADwAAABRDhAAFAAAANUAAAAlAAAAUQ4QABQAAADWAAAAPAAAAFEOEAAUAAAA1gAAACUAAABRDhAAFAAAANcAAAA8AAAAUQ4QABQAAADXAAAAJQAAAFEOEAAUAAAA8wAAADQAAABRDhAAFAAAAPQAAAAwAAAAUQ4QABQAAAD1AAAAMAAAAFEOEAAUAAAA9gAAADAAAABRDhAAFAAAAA4BAAApAAAAUQ4QABQAAAAPAQAAKQAAAFEOEAAUAAAAEAEAACkAAABRDhAAFAAAABEBAAApAAAAUQ4QABQAAAAXAQAAMQAAAFEOEAAUAAAAGAEAADEAAABRDhAAFAAAABkBAAAxAAAAUQ4QABQAAAAcAQAAKQAAAFEOEAAUAAAAHQEAACkAAABRDhAAFAAAAB4BAAApAAAAUQ4QABQAAAAfAQAAKQAAAFEOEAAUAAAAMgEAACsAAABRDhAAFAAAAFoBAABEAAAAUQ4QABQAAABZAQAARAAAAFEOEAAUAAAAWAEAACoAAABRDhAAFAAAAE8BAABlAAAAUQ4QABQAAABPAQAANQAAAFEOEAAUAAAASAEAAGQAAABRDhAAFAAAAEgBAAA1AAAAUQ4QABQAAABCAQAAUwAAAFEOEAAUAAAAQgEAADEAAABRDhAAFAAAAHsBAAApAAAAUQ4QABQAAAB7AQAARwAAAFEOEAAUAAAAlQEAACsAAABRDhAAFAAAAJUBAABJAAAAUQ4QABQAAADIAQAAQQAAAFEOEAAUAAAAwQEAACEAAABGYWlsZWQgdG8gcGFyc2UgbWV0YS5qc29uIGZvciBTT0dTbWV0YS5qc29uIG5vdCBmb3VuZCBpbiBTT0dTIHppcAAAAGYUEAAVAAAAhQEAACEAAABmFBAAFQAAAIYBAAAlAAAAZhQQABUAAACGAQAAQQAAAGYUEAAVAAAAhgEAAAkAAABmFBAAFQAAAGICAAAyAAAAZhQQABUAAABhAgAAMgAAAGYUEAAVAAAAYAIAADIAAABmFBAAFQAAAF8CAAAmAAAAZhQQABUAAABeAgAAIAAAAGYUEAAVAAAAXQIAABwAAABmFBAAFQAAAFwCAAAeAAAAZhQQABUAAABbAgAAGgAAAGYUEAAVAAAAWgIAACIAAABmFBAAFQAAAFkCAAAgAAAAZGF0YSBkaWQgbm90IG1hdGNoIGFueSB2YXJpYW50IG9mIHVudGFnZ2VkIGVudW0gUGNTb2dzUm9vdGRlY29kZSBtZWFuc1swXWRlY29kZSBtZWFuc1sxXWRlY29kZSBzY2FsZXNkZWNvZGUgcXVhdHNkZWNvZGUgc2gwZGVjb2RlIGxhYmVsc1Vuc3VwcG9ydGVkIHF1YXRlcm5pb24gZW5jb2RpbmcgaW4gU09HUyB2MVVuZXhwZWN0ZWQgRU9G8hIQABcAAAB5AAAAGwAAAPISEAAXAAAAegAAAEEAAABIAQAAAAMAAAgAAABJAQAASgEAAEsBAABMAQAAyCkAAAQAAABNAQAATgEAAE8BAABQAQAAbAAAAAQAAABRAQAAUgEAAFMBAABQAQAAbAAAAAQAAABUAQAAUgEAAFUBAABQAQAAbAAAAAQAAABWAQAAUgEAAFcBAABYAQAAoAEAAAgAAABZAQAAWgEAAFsBAABcAQAAWAMAAAgAAABdAQAAXgEAAF8BAABgAQAAJCoAAAQAAABhAQAAYgEAAGMBAABkAQAAyAAAAAQAAABlAQAAZgEAAGcBAABkAQAAyAAAAAQAAABoAQAAZgEAAGkBAABkAQAAyAAAAAQAAABqAQAAZgEAAGsBAABsAQAAAAIAAAgAAABtAQAAbgEAAG8BAABwAQAAmAMAAAgAAABxAQAAcgEAAHMBAAB0AQAAYCoAAAgAAAB1AQAAdgEAAHcBAAB4AQAACAEAAAgAAAB5AQAAegEAAHsBAAB4AQAACAEAAAgAAAB8AQAAegEAAH0BAAB4AQAACAEAAAgAAAB+AQAAegEAAH8BAACAAQAAOAIAAAgAAACBAQAAggEAAIMBAACEAQAA4AIAAAgAAACFAQAAhgEAAIcBAACIAQAAqCkAAAQAAACJAQAAigEAAIsBAACMAQAATAAAAAQAAACNAQAAjgEAAI8BAACMAQAATAAAAAQAAACQAQAAjgEAAJEBAACMAQAATAAAAAQAAACSAQAAjgEAAJMBAACUAQAAgAEAAAgAAACVAQAAlgEAAJcBAABYHBAAGAAAAK8BAAAkAAAASW52YWxpZCBkZWNvZGVyIHR5cGVYHBAAGAAAAMkBAAAJAAAAWBwQABgAAADOAQAAKQAAAFgcEAAYAAAAsAIAADIAAABYHBAAGAAAAKwCAAA1AAAAAQAAAMEsEAAZAAAAhwAAAAUAAADBLBAAGQAAAGcAAAAoAAAAwSwQABkAAABhAAAAUAAAACITEAAaAAAAzwAAAB0AAADbLBAAGgAAAEUAAAAaAAAA2ywQABoAAABoAAAANwAAANssEAAaAAAAawAAABoAAADbLBAAGgAAAGwAAABBAAAA2ywQABoAAABUAAAALQAAANssEAAaAAAAlQAAAA4AAADbLBAAGgAAAPIAAAAFAAAA2ywQABoAAACvAAAAGgAAANssEAAaAAAAsgAAABkAAABhc3NlcnRpb24gZmFpbGVkOiBuZXdfY2hpbGRyZW4ubGVuKCkgPD0gNjU1MzUAAADbLBAAGgAAALMAAAARAAAAGCwQAFAAAAAcAAAABQAAAFcWEABIAAAAngEAAD8AAABXFhAASAAAAJ8BAAAzAAAAmAEAAAwAAAAEAAAAmQEAAJoBAACbAQBBoPvBAAsuAQAAAJwBAAD7ERAASAAAAI8CAAAOAAAApwAAAAwAAAAEAAAAnQEAAJ4BAACfAQBB2PvBAAvqAQEAAACrAAAAZW5kIG9mIHJhbmdlIHNob3VsZCBiZSBhIGNoYXJhY3RlciBib3VuZGFyecMgAAAoBQACOiAAICAgICAgIAoKQ2F1c2VkIGJ5OgAAAAAAAAAQAAAABAAAAKABAAChAQAAogEAAAoKU3RhY2sgYmFja3RyYWNlOgoARBIQAFcAAAA2AAAAHwAAAEQSEABXAAAAPAAAABsAAABiYWNrdHJhY2UgY2FwdHVyZSBmYWlsZWSgFhAAWQAAAGcEAAAOAAAACgpTdGFjazoKCgAApwAAAAwAAAAEAAAAowEAAKQBAAClAQBBzP3BAAuTFAEAAACrAAAAqAEEAQEBBAECAgDABAIEAQkCAQH7B88BBQExLQEBAQIBAgEBLAELBgoLAQEjAQoVEAFlCAEKAQQhAQEBHhtbCzoLBAECARgYKwMsAQcCBQkpOjcBAQEECAQBAwcKAg0BDwE6AQQECAEUAhoBAgI5AQQCBAICAwMBHgIDAQsCOQEEBQECBAEUAhYGAQE6AQIBAQQIAQcCCwIeAT0BDAEyAQMBNwEBAwUDAQQHAgsCHQE6AQIBBgEFAhQCHAI5AgQECAEUAh0BSAEHAwEBWgECBwsJYgECCQkBAQdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwFeAQADAAMdAh4CHgJAAgEHCAECCwMBBQEtBTMBQQIiAXYDBAIJAQYD2wICAToBAQcBAQEBAggGCgIBJwEILgIMFAQwAQEFAQEFASgJDAIgBAICAQM4AQECAwEBAzoIAgJABlIDAQ0BBwQBBgEDAjI/DQEiZQABAQMLAw0DDQMNAgwFCAIKAQIBAgUxBQEKAQENARANMyEAAnEDfQEPAWAgLwEAASQEAwUFAV0GXQMAAQAGAAFiBAEKAQEcBFACDiJOARcDZgQDAggBAwEEARkCBQGXAhoSDQEmCBkLLgMwAQIEAgIRARUCQgYCAgICDAEIASMBCwEzAQEDAgIFAgEBGwEOAgUCAQFkBQkDeQECAQQBAAGTEQAQAwEMECIBAgGpAQcBBgELASMBAQEvAS0CQwEVAwAB4gGVBQAGASoBCQADAQIFBCgDBAGlAgAEJgEaBQEBAAIYATQGRgsxBHsBNg8pAQICCgMxBAICAgEEAQoBMgMkBQEIPgEMAjQJCgQCAV8DAgEBAgYBAgGdAQMIFQI5AgMBJQcDBUYGDQEBAQEBDgJVCAIDAQEXAVQGAQEEAgEC7gQGAgECGwJVCAIBAQJqAQEBAgYBAWUBAQECBAEFAAkBAgACAQEEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQLGAQEDAQHJBwEGAQFSFgIHAQIBAnoGAwEBAgEHAQFIAgMBAQFBAQACCwI0BQUBAQEXAQARBg8ADAMDAAU7BwkEAAMoAgABPxFAAgECDQIABAEHAQIAAgEEAC4CFwADCRACBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFBT4hAaAOAAE9BAAF/gLzAQIBBwIFAQkBAAdtCAAFAAEeYIDwAABwAAcALQEBAQIBAgEBSAswFRABZQcCBgICAQQjAR4bWws6CQkBGAQBCQEDAQUrAzsJKhgBIDcBAQEECAQBAwcKAh0BOgEBAQIECAEJAQoCGgECAjkBBAIEAgIDAwEeAgMBCwI5AQQFAQIEARQCFgYBAToBAQIBBAgBBwMKAh4BOwEBAQwBCQEoAQMBNwEBAwUDAQQHAgsCHQE6AQICAQEDAwEEBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsHSQIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMABBwDHQIeAkACAQcIAQILCQEtAwEBdQIiAXYDBAIJAQYD2wICAToBAQcBAQEBAggGCgIBMC4CDBQEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJNBkYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECxgEBAwEByQcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AvMBAgEHAgUBAAdtBwBggPAAqgEKAQQBBRcBHwHDAQQE0AIjBwIeBWABKgQCAgIEAQEGAQEDAQEBFAFTAYsIpgEmCSkAJgEBBQECKwEEAFYCBgALBSsCA0DAQAACBgImAgYCCAEBAQEBAQEfAjUBBwEBAwMBBwMEAgYEDQUDAQd0AQ0BEA1lAQQBAgoBAQMFBgEBAQEBAQQBBgQBAgQFBQQBESADAgA0AOUGBAMCDCYBAQUBAC4SHoRmAwQBTRQGAQMAKwEOBlAABwwFABoGGgBQYCQEJHQLAQ8BBwECAQsBDwEHAQIAAQIDASoBCQAzDTNdFgoWAEAAQCAZAhkAVQFHAQICAQICAgQBDAEBAQcBQQEEAggBBwEcAQQBBQEBAwcBAAIZARkBHwEZAR8BGQEfARkBHwEZAQgACgEUBgYAPgBEABoGGgYaAAAAAAAABAAAAAQAAACmAQAAAAAAAAQAAAAEAAAApwEAACswLjBlMGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBtYXhsZW4AaSwQAFcAAACLAgAADQAAACB7CiwKKAogeyAuLiB9AACcEhAAVQAAAC4AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3RoZXIgPiAwYXNzZXJ0aW9uIGZhaWxlZDogbm9ib3Jyb3cAAAD5HxAAUgAAAIQBAAABAAAAYXNzZXJ0aW9uIGZhaWxlZDogZGlnaXRzIDwgNDAAAAAAAAAADAAAAAQAAACoAQAAqQEAAKoBAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw4B0QAE8AAABnBgAAFQAAAOAdEABPAAAAlQYAABUAAADgHRAATwAAAJYGAAAVAAAA4B0QAE8AAAB0BQAAKAAAAOAdEABPAAAAdAUAABIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlPT0hPQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEGhksIACzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDBAQEBAQAQeCSwgAL/B4eGBAAUAAAAKAAAAAJAAAAHhgQAFAAAACEAAAAHgAAAAAGAQEDAQQCBQcHAggICQIKBQsCDgQQARECEgUTHBQBFQIXAhkNHAUdCB8BJAFqBGsCbgKvA7ECvALPAtEC1AzVCdYC1wLaAeAF4QLmAecE6ALuIPAE+AL6BfsBDCc7Pk5Pj56en3uLk5aisrqGsQYHCTY9Plbz0NEEFBg2N1ZXf6qur7014BKHiY6eBA0OERIpMTQ6RUZJSk5PZGWKjI2PtsHDxMbL1ly2txscBwgKCxQXNjk6qKnY2Qk3kJGoBwo7PmZpj5IRb1+/7u9aYrm69Pz/U1Samy4vJyhVnaCho6SnqK26vMQGCwwVHTo/RVGmp8zNoAcZGiIlPj/f5+zv/8XGBCAjJSYoMzg6SEpMUFNVVlhaXF5gY2Vma3N4fX+KpKqvsMDQrq9ub8fd3pNeInsFAwQtA2YDAS8ugIIdAzEPHAQkCR4FKwVEBA4qgKoGJAQkBCgINAtOAzQMgTcJFgoIGDtFOQNjCAkwFgUhAxsFGyY4BEsFLwQKBwkHQCAnBAwJNgM6BRoHBAwHUEk3Mw0zBy4ICgYmAx0IAoDQUhAGCAkhLggqFhomHBQXCU4EJAlEDRkHCgZICCcJdQtCPioGOwUKBlEGAQUQAwULWQgCHWIeSAgKgKZeIkULCgYNEzoGCgYUHCwEF4C5PGRTDEgJCkZFG0gIUw1JBwpWCFgiDgoGRgodA0dJNwMOCAoGOQcKBiwECoD2GQc7Ax1VAQ8yDYObZnULgMSKTGMNhDAQFgqPmwWCR5q5OobGgjkHKgRcBiYKRgooBROBsDqAxlsFNCxLBDkHEUAFCwcJnNYpIGFzof2BMw8BHQYOBAiBjIkEawUNAwkHEI9ggP0DgbQGFw8RD0cJdDyA9gpzCHAVRnoUDBQMVwkZgIeBRwOFQg8VhFAfBgaA1SsFPiEBcC0DGgQCgUAfEToFAYHQKoDWKwQBgMA2CAKA4ID3KUwECgQCgxFETD2AwjwGAQRVBRs0AoEOLARkDFYKgK44HQ0sBAkHAg4GgJqD2QMRAw0DgNoGDAQBDwwEOAgKBigILAQCDgkngVgIHQMLAzsEHgQKB4D7hAUAAQMFBQYGAgcGCAcJEQocCxkMGQ0QDgwPBBADEhITCRYBFwQYARkDGgkbARwCHxYgAysCLQsuATAEMQIyAakCqgSrCPoC+wX+A/8JrXh5i42iMFdYi4yQHN0OD0tM+/wuLz9cXV/ihI2OkZKpsbq7xcbJyt7k5f8ABBESKTE0Nzo7PUlKXYSOkqmxtLq7xsrOz+TlAAQNDhESKTE0OjtFRklKXmRlhJGbncnOzw0RKTo7RUlXW15fZGWNkam0urvFyd/k5fANEUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc9vf+/4Btcd7fDh9ubxwdX31+rq/e3027vBYXHh9GR05PWFpcXn5/tcXU1dzw8fVyc490dSYuL6evt7/Hz9ffmgBAl5gwjx/O/05PWlsHCA8QJy/u725vNz0/QkVTZ3XIydDR2Nnn/v8AIF8igt8EgkQIGwQGEYGsDoCrBSAHgRwDGQgBBC8ENAQHAwEHBgcRClAPEgdVBwMEHAoJAwgDBwMCAwMDDAQFAwsGAQ4VBU4HGwdXBwIFGAxQBEMDLQMBBBEGDww6BB0lXyBtBGolgMgFgrADGgaC/QNZBxYJGAkUDBQMagYKBhoGWQcrBUYKLAQMBAEDMQssBBoGCwOArAYKBkwUgPQIPAMPAz4FOAgrBYL/ERgILxEtAyIOIQ+AjASCmhYLFYiUBS8FOwcCDhgJgL4idAyA1hqBEAWA4QnyngM3CYFcFIC4CIDdFDwDCgY4CEYIDAZ0Cx4DWgRZCYCDGBwKFglMBICKBqukDBcEMaEEgdomBwwFBYKzICoGTASAjQSAvgMbAw8NICcQAFUAAAAKAAAAKwAAACAnEABVAAAAGgAAADYAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvYXNzZXJ0aW9uIGZhaWxlZDogIWJ1Zi5pc19lbXB0eSgpAGksEABXAAAAtwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBidWZbMF0gPiBiJzAnAGksEABXAAAAuAAAAAUAAABpLBAAVwAAAAkBAAAFAAAAaSwQAFcAAAAKAQAABQAAAGVlLQDAABYAIADYAAYAIAAAAS4BAQAyAQQBAQA5AQ4BAQBKASwBAQB4AQAAh/95AQQBAQCBAQAA0gCCAQIBAQCGAQAAzgCHAQAAAQCJAQEAzQCLAQAAAQCOAQAATwCPAQAAygCQAQAAywCRAQAAAQCTAQAAzQCUAQAAzwCWAQAA0wCXAQAA0QCYAQAAAQCcAQAA0wCdAQAA1QCfAQAA1gCgAQQBAQCmAQAA2gCnAQAAAQCpAQAA2gCsAQAAAQCuAQAA2gCvAQAAAQCxAQEA2QCzAQIBAQC3AQAA2wC4AQAAAQC8AQAAAQDEAQAAAgDFAQAAAQDHAQAAAgDIAQAAAQDKAQAAAgDLARABAQDeARABAQDxAQAAAgDyAQIBAQD2AQAAn//3AQAAyP/4ASYBAQAgAgAAfv8iAhABAQA6AgAAKyo7AgAAAQA9AgAAXf8+AgAAKCpBAgAAAQBDAgAAPf9EAgAARQBFAgAARwBGAggBAQBwAwIBAQB2AwAAAQB/AwAAdACGAwAAJgCIAwIAJQCMAwAAQACOAwEAPwCRAxAAIACjAwgAIADPAwAACADYAxYBAQD0AwAAxP/3AwAAAQD5AwAA+f/6AwAAAQD9AwIAfv8ABA8AUAAQBB8AIABgBCABAQCKBDQBAQDABAAADwDBBAwBAQDQBF4BAQAxBSUAMACgECUAYBzHEAAAYBzNEAAAYBygE08A0JfwEwUACACJHAAAAQCQHCoAQPS9HAIAQPQAHpQBAQCeHgAAQeKgHl4BAQAIHwcA+P8YHwUA+P8oHwcA+P84HwcA+P9IHwUA+P9ZHwYB+P9oHwcA+P+IHwcA+P+YHwcA+P+oHwcA+P+4HwEA+P+6HwEAtv+8HwAA9//IHwMAqv/MHwAA9//YHwEA+P/aHwEAnP/oHwEA+P/qHwEAkP/sHwAA+f/4HwEAgP/6HwEAgv/8HwAA9/8mIQAAo+IqIQAAQd8rIQAAut8yIQAAHABgIQ8AEACDIQAAAQC2JBkAGgAALC8AMABgLAAAAQBiLAAACdZjLAAAGvFkLAAAGdZnLAQBAQBtLAAA5NVuLAAAA9ZvLAAA4dVwLAAA4tVyLAAAAQB1LAAAAQB+LAEAwdWALGIBAQDrLAIBAQDyLAAAAQBApiwBAQCAphoBAQAipwwBAQAypzwBAQB5pwIBAQB9pwAA/HV+pwgBAQCLpwAAAQCNpwAA2FqQpwIBAQCWpxIBAQCqpwAAvFqrpwAAsVqspwAAtVqtpwAAv1qupwAAvFqwpwAA7lqxpwAA1lqypwAA61qzpwAAoAO0pw4BAQDEpwAA0P/FpwAAvVrGpwAAyHXHpwIBAQDLpwAAmVrMpw4BAQDcpwAAv1n1pwAAAQAh/xkAIAAwAWkABwMAAAAEJwAoALAEIwAoAHAFCgAnAHwFDgAnAIwFBgAnAJQFAQAnAIAMMgBAAFANFQAgAKAYHwAgAEBuHwAgAKBuGAAbAADpIQAiACyQEACsAAAANJQQAAEAAAA8lBAADAAAAAIAAAAAAAAAsAIAAF0TYAESF+AgvR8gIXwsIC8FMGAzFaDgNPikYDYMpqA2HvvgNgD+4EL9AWFDgAchRwEK4UckDaFIqw4hSi8YIUs7GeFa8x5hWzA0oWMeYSFl8GqhZUBtIWZPb+Fm8K9hZ528oWgAz2FpZ9HhaQDaYWoA4KFrruIhbevkIW/Q6KFv+/NhcQEA7nHwAT9yAAMAAIMEIACRBWAAXROgABIXIB8MIGAf7yxgKyow4CtvpqAsAqggLR77IC4A/mA2nv+gNv0BITcBCmE3JA0hOKsOoTkvGCE68x4hS0A0oVMeYeFU8GphVU9v4VWdvGFWAM9hV2XRoVcA2iFYAOChWa7iIVvs5OFc0OhhXSAA7l7wAX9foBAAAKATYAaAHKAHFh8gCLYkQAkALKASQKbgEjCrYBQA+yAWIf/gFgAEYReAB+EXgAyhGqAYoRtAbqEcANThHKbWoR0A30EiMOAhJQDp4SUw8SEmivFyJnVzZXItcHJvdmlkZWQgY29tcGFyaXNvbiBmdW5jdGlvbiBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IGEgdG90YWwgb3JkZXImERAAXwAAAFwDAAAFAAAAAAAAAN9FGj0DzxrmwfvM/gAAAADKxprHF/5wq9z71P4AAAAAT9y8vvyxd//2+9z+AAAAAAzWa0HvkVa+Efzk/gAAAAA8/H+QrR/QjSz87P4AAAAAg5pVMShcUdNG/PT+AAAAALXJpq2PrHGdYfz8/gAAAADLi+4jdyKc6nv8BP8AAAAAbVN4QJFJzK6W/Az/AAAAAFfOtl15EjyCsfwU/wAAAAA3VvtNNpQQwsv8HP8AAAAAT5hIOG/qlpDm/CT/AAAAAMc6giXLhXTXAP0s/wAAAAD0l7+Xzc+GoBv9NP8AAAAA5awqF5gKNO81/Tz/AAAAAI6yNSr7ZziyUP1E/wAAAAA7P8bS39TIhGv9TP8AAAAAus3TGidE3cWF/VT/AAAAAJbJJbvOn2uToP1c/wAAAACEpWJ9JGys27r9ZP8AAAAA9tpfDVhmq6PV/Wz/AAAAACbxw96T+OLz7/10/wAAAAC4gP+qqK21tQr+fP8AAAAAi0p8bAVfYocl/oT/AAAAAFMwwTRg/7zJP/6M/wAAAABVJrqRjIVOllr+lP8AAAAAvX4pcCR3+d90/pz/AAAAAI+45bifvd+mj/6k/wAAAACUfXSIz1+p+Kn+rP8AAAAAz5uoj5NwRLnE/rT/AAAAAGsVD7/48AiK3/68/wAAAAC2MTFlVSWwzfn+xP8AAAAArH970MbiP5kU/8z/AAAAAAY7KyrEEFzkLv/U/wAAAADTknNpmSQkqkn/3P8AAAAADsoAg/K1h/1j/+T/AAAAAOsaEZJkCOW8fv/s/wAAAADMiFBvCcy8jJn/9P8AAAAALGUZ4lgXt9Gz//z/AEHmscIACwVAnM7/BABB9LHCAAvRmwEQpdTo6P8MAAAAAAAAAGKsxet4rQMAFAAAAAAAhAmU+Hg5P4EeABwAAAAAALMVB8l7zpfAOAAkAAAAAABwXOp7zjJ+j1MALAAAAAAAaIDpq6Q40tVtADQAAAAAAEUimhcmJ0+fiAA8AAAAAAAn+8TUMaJj7aIARAAAAAAAqK3IjDhl3rC9AEwAAAAAANtlqxqOCMeD2ABUAAAAAACaHXFC+R1dxPIAXAAAAAAAWOcbpixpTZINAWQAAAAAAOqNcBpk7gHaJwFsAAAAAABKd++amaNtokIBdAAAAAAAhWt9tHt4CfJcAXwAAAAAAHcY3Xmh5FS0dwGEAAAAAADCxZtbkoZbhpIBjAAAAAAAPV2WyMVTNcisAZQAAAAAALOgl/pctCqVxwGcAAAAAADjX6CZvZ9G3uEBpAAAAAAAJYw52zTCm6X8AawAAAAAAFyfmKNymsb2FgK0AAAAAADOvulUU7/ctzECvAAAAAAA4kEi8hfz/IhMAsQAAAAAAKV4XNObziDMZgLMAAAAAADfUyF781oWmIEC1AAAAAAAOjAfl9y1oOKbAtwAAAAAAJaz41xT0dmotgLkAAAAAAA8RKek2Xyb+9AC7AAAAAAAEESkp0xMdrvrAvQAAAAAABqcQLbvjquLBgP8AAAAAAAshFemEO8f0CADBAEAAAAAKTGR6eWkEJs7AwwBAAAAAJ0MnKH7mxDnVQMUAQAAAAAp9Dti2SAorHADHAEAAAAAhc+nel5LRICLAyQBAAAAAC3drANA5CG/pQMsAQAAAACP/0ReL5xnjsADNAEAAAAAQbiMnJ0XM9TaAzwBAAAAAKkb47SS2xme9QNEAQAAAADZd9+6br+W6w8ETAEAAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ID4gMMMQEABiAAAA3gEAAAUAAADDEBAAYgAAAH8AAAAVAAAAwxAQAGIAAAA1AgAAEQAAAMMQEABiAAAAbgIAAAkAAADDEBAAYgAAAKsAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5taW51cyA+IDAAAADDEBAAYgAAAKwAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5wbHVzID4gMMMQEABiAAAArQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQgKyBkLnBsdXMgPCAoMSA8PCA2MSkAAADDEBAAYgAAALEAAAAFAAAAwxAQAGIAAAAMAQAAEQAAAMMQEABiAAAAQgEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9zdWIoZC5taW51cykuaXNfc29tZSgpAMMQEABiAAAArwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9hZGQoZC5wbHVzKS5pc19zb21lKCkAAMMQEABiAAAArgAAAAUAAADZHhAAYwAAAA0BAAAFAAAA2R4QAGMAAAAOAQAABQAAANkeEABjAAAADwEAAAUAAADZHhAAYwAAAHQBAAAkAAAA2R4QAGMAAAB5AQAALwAAANkeEABjAAAAhgEAABIAAADZHhAAYwAAAGgBAAANAAAA2R4QAGMAAABOAQAAIgAAANkeEABjAAAAEQEAAAUAAADZHhAAYwAAABABAAAFAAAA2R4QAGMAAAB4AAAABQAAANkeEABjAAAAeQAAAAUAAADZHhAAYwAAAHoAAAAFAAAA2R4QAGMAAADEAAAACQAAANkeEABjAAAA/QAAAA0AAADZHhAAYwAAAAQBAAASAAAA2R4QAGMAAAB8AAAABQAAANkeEABjAAAAewAAAAUAAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7wW/yhiMAAACB76yFW0FtLe4EAAABH2q/ZO04bu2Xp9r0+T/pA08YAAE+lS4Jmd8D/TgVDy/kdCPs9c/TCNwExNqwzbwZfzOmAyYf6U4CAAABfC6YW4fTvnKf2diHLxUSxlDea3BuSs8P2JXVbnGyJrBmxq0kNhUdWtNCPA5U/2PAc1XMF+/5ZfIovFX3x9yA3O1u9M7v3F/3UwUAwxAQAGIAAADxAgAAJgAAAMMQEABiAAAA5QIAACYAAADDEBAAYgAAAM4CAAAmAAAALi5BbnkgICAgAAAAZg4QAE0AAACLAAAAIwAAAAJceMMgAABpAgAAAGYOEABNAAAAhAAAACsAAAD0KRAATAAAAOcAAAApAAAA9CkQAEwAAADXAAAAJQAAAGNhbm5vdCBwYXJzZSBpbnRlZ2VyIGZyb20gZW1wdHkgc3RyaW5naW52YWxpZCBkaWdpdCBmb3VuZCBpbiBzdHJpbmdudW1iZXIgdG9vIGxhcmdlIHRvIGZpdCBpbiB0YXJnZXQgdHlwZW51bWJlciB0b28gc21hbGwgdG8gZml0IGluIHRhcmdldCB0eXBlbnVtYmVyIHdvdWxkIGJlIHplcm8gZm9yIG5vbi16ZXJvIHR5cGUwMTIzNDU2Nzg5QUJDREVGAAAAqCkQAEsAAACFCwAAJgAAAKgpEABLAAAAjgsAABoAAABSZWZDZWxsIGFscmVhZHkgbXV0YWJseSBib3Jyb3dlZFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAAQTEbGYJiNjLDUy0rBMVsZEX0d32Gp1pWx5ZBTwiK2chJu8LRiujv+svZ9OMMT7WsTX6utY4tg57PHJiHURLCShAj2VPTcPR4kkHvYVXXri4U5rU317WYHJaEgwVZmBuCGKkAm9v6LbCayzapXV135hxsbP/fP0HUng5azaIkhJXjFZ+MIEayp2F3qb6m4ejx59Dz6CSD3sNlssXaqq5dXeufRkQozGtvaf1wdq5rMTnvWiogLAkHC204HBLzNkbfsgddxnFUcO0wZWv09/Mqu7bCMaJ1kRyJNKAHkPu8nxe6jYQOed6pJTjvsjz/efNzvkjoan0bxUE8Kt5YBU958ER+YumHLU/CxhxU2wGKFZRAuw6Ng+gjpsLZOL8NxaA4TPS7IY+nlgrOlo0TCQDMXEgx10WLYvpuylPhd1Rdu7oVbKCj1j+NiJcOlpFQmNfeEanMx9L64eyTy/r1XNdich3meWvetVRAn4RPWVgSDhYZIxUP2nA4JJtBIz2na/1l5lrmfCUJy1dkONBOo66RAeKfihghzKczYP28Kq/hJK3u0D+0LYMSn2yyCYarJEjJ6hVT0ClGfvtod2Xi9nk/L7dIJDZ0GwkdNSoSBPK8U0uzjUhScN5leTHvfmD+8+bnv8L9/nyR0NU9oMvM+jaKg7sHkZp4VLyxOWWnqEuYgzsKqZgiyfq1CYjLrhBPXe9fDmz0Rs0/2W2MDsJ0QxJa8wIjQerBcGzBgEF32EfXNpcG5i2OxbUApYSEG7waikFxW7taaJjod0PZ2WxaHk8tFV9+NgycLRsn3RwAPhIAmLlTMYOgkGKui9FTtZIWxfTdV/TvxJSnwu/Vltn26bwHrqiNHLdr3jGcKu8qhe15a8qsSHDTbxtd+C4qRuHhNt5moAfFf2NU6FQiZfNN5fOyAqTCqRtnkYQwJqCfKbiuxeT5n979Oszz1nv96M+8a6mA/VqymT4Jn7J/OISrsCQcLPEVBzUyRioec3cxB7ThcEj10GtRNoNGeneyXWNO1/rLD+bh0sy1zPmNhNfgShKWrwsjjbbIcKCdiUG7hEZdIwMHbDgaxD8VMYUODihCmE9nA6lUfsD6eVWBy2JMH8U4gV70I5idpw6z3JYVqhsAVOVaMU/8mWJi19hTec4XT+FJVn76UJUt13vUHMxiE4qNLVK7ljSR6Lsf0NmgBuzzfl6twmVHbpFIbC+gU3XoNhI6qQcJI2pUJAgrZT8R5HmnlqVIvI9mG5GkJyqKveC8y/KhjdDrYt79wCPv5tm94bwU/NCnDT+DiiZ+spE/uSTQcPgVy2k7RuZCenf9W7VrZdz0Wn7FNwlT7nY4SPexrgm48J8SoTPMP4py/SSTAAAAADdqwgFu1IQDWb5GAtyoCQfrwssGsnyNBIUWTwW4URMOjzvRD9aFlw3h71UMZPkaCVOT2AgKLZ4KPUdcC3CjJhxHyeQdHneiHykdYB6sCy8bm2HtGsLfqxj1tWkZyPI1Ev+Y9xOmJrERkUxzEBRaPBUjMP4Ueo64Fk3kehfgRk041yyPOY6SyTu5+As6PO5EPwuEhj5SOsA8ZVACPVgXXjZvfZw3NsPaNQGpGDSEv1cxs9WVMOpr0zLdAREzkOVrJKePqSX+Me8nyVstJkxNYiN7J6AiIpnmIBXzJCEotHgqH966K0Zg/ClxCj4o9BxxLcN2syyayPUuraI3L8CNmnD351hxrlkec5kz3HIcJZN3K09RdnLxF3RFm9V1eNyJfk+2S38WCA19IWLPfKR0gHmTHkJ4yqAEev3KxnuwLrxsh0R+bd76OG/pkPpubIa1a1vsd2oCUjFoNTjzaQh/r2I/FW1jZqsrYVHB6WDU16Zl471kZLoDImaNaeBnIMvXSBehFUlOH1NLeXWRSvxj3k/LCRxOkrdaTKXdmE2YmsRGr/AGR/ZOQEXBJIJERDLNQXNYD0Aq5klCHYyLQ1Bo8VRnAjNVPrx1VwnWt1aMwPhTu6o6UuIUfFDVfr5R6DniWt9TIFuG7WZZsYekWDSR610D+ylcWkVvXm0vrV+AGzXht3H34O7PseLZpXPjXLM85mvZ/ucyZ7jlBQ165DhKJu8PIOTuVp6i7GH0YO3k4i/o04jt6Yo2q+u9XGnq8LgT/cfS0fyebJf+qQZV/ywQGvobetj7QsSe+XWuXPhI6QDzf4PC8iY9hPARV0bxlEEJ9KMry/X6lY33zf9P9mBdeNlXN7rYDon82jnjPtu89XHei5+z39Ih9d3lSzfc2Axr1+9mqda22O/UgbIt1QSkYtAzzqDRanDm010aJNIQ/l7FJ5ScxH4q2sZJQBjHzFZXwvs8lcOigtPBlegRwKivTcufxY/KxnvJyPERC8l0B0TMQ22GzRrTwM8tuQLOQJavkXf8bZAuQiuSGSjpk5w+pparVGSX8uoilcWA4JT4x7yfz61+npYTOJyhefqdJG+1mBMFd5lKuzGbfdHzmjA1iY0HX0uMXuENjmmLz4/snYCK2/dCi4JJBIm1I8aIiGSag78OWILmsB6A0drcgVTMk4RjplGFOhgXhw1y1Yag0OKpl7ogqM4EZqr5bqSrfHjrrksSKa8SrG+tJcatrBiB8acv6zOmdlV1pEE/t6XEKfig80M6oar9fKOdl76i0HPEtecZBrS+p0C2ic2CtwzbzbI7sQ+zYg9JsVVli7BoIte7X0gVugb2U7gxnJG5tIrevIPgHL3aXlq/7TSYvgAAAABlZ7y4i8gJqu6vtRJXl2KPMvDeN9xfayW5ONed7yi0xYpPCH1k4L1vAYcB17i/1krd2GryM3ff4FYQY1ifVxlQ+jCl6BSfEPpx+KxCyMB7362nx2dDCHJ1Jm/OzXB/rZUVGBEt+7ekP57QGIcn6M8aQo9zoqwgxrDJR3oIPq8yoFvIjhi1ZzsK0ACHsmk4UC8MX+yX4vBZhYeX5T3Rh4ZltOA63VpPj88/KDN3hhDk6uN3WFIN2O1AaL9R+KH4K/DEn5dIKjAiWk9XnuL2b0l/kwj1x32nQNUYwPxtTtCfNSu3I43FGJafoH8qJxlH/bp8IEECko/0EPfoSKg9WBSbWD+oI7aQHTHT96GJas92FA+oyqzhB3++hGDDBtJwoF63FxzmWbip9DzfFUyF58LR4IB+aQ4vy3trSHfDog8Ny8dosXMpxwRhTKC42fWYb0SQ/9P8flBm7hs32lZNJ7kOKEAFtsbvsKSjiAwcGrDbgX/XZzmReNIr9B9ukwP3JjtmkJqDiD8vke1YkylUYES0MQf4DN+oTR66z/Gm7N+S/om4LkZnF5tUAnAn7LtI8HHeL0zJMID521XnRWOcoD9r+ceD0xdoNsFyD4p5yzdd5K5Q4VxA/1ROJZjo9nOIi64W7zcW+ECCBJ0nPrwkH+khQXhVma/X4IvKsFwzO7ZZ7V7R5VWwflBH1Rns/2whO2IJRofa5+kyyIKOjnDUnu0osflRkF9W5II6MVg6gwmPp+ZuMx8IwYYNbaY6taThQL3BhvwFLylJF0pO9a/zdiIylhGeini+K5gd2ZcgS8n0eC6uSMDAAf3SpWZBahxelvd5OSpPl5afXfLxI+UFGWtNYH7X9Y7RYufrtt5fUo4JwjfptXrZRgBovCG80Oox34iPVmMwYfnWIgSeapq9pr0H2MEBvzZutK1TCQgVmk5yHf8pzqURhnu3dOHHD83ZEJKovqwqRhEZOCN2pYB1ZsbYEAF6YP6uz3KbyXPKIvGkV0eWGO+pOa39zF4RRQbuTXZjifHOjSZE3OhB+GRReS/5NB6TQdqxJlO/1prr6cb5s4yhRQtiDvAZB2lMob5RmzzbNieENZmSllD+Li6ZuVQm/N7onhJxXYx3FuE0zi42qatJihFF5j8DIIGDu3aR4OMT9lxb/VnpSZg+VfEhBoJsRGE+1KrOi8bPqTd+OEF/1l0mw26ziXZ81u7KxG/WHVkKsaHh5B4U84F5qEvXacsTsg53q1yhwrk5xn4BgP6pnOWZFSQLNqA2blEcjqcWZobCcdo+LN5vLEm505TwgQQJlea4sXtJDaMeLrEbSD7SQy1ZbvvD9tvpppFnUR+psMx6zgx0lGG5ZvEGBd4AAAAAsClgPWBTwHrQeqBHwKaA9XCP4Mig9UCPENwgssFLcDBxYhANoRiwShEx0HcB7fDFscSQ+GG+ML/Rl1CCgpfgYDK+gF3ixCAaUu1AJ0IxYJXyGACoImKg75JLwNJD3JBQ8/XwbSOPUCqTpjAXg3oQpTNTcJjjKdDfUwCw4gQvwcG0BqH8ZHwBu9RVYYbEiUE0dKAhCaTagU4U8+FzxWSx8XVN0cylN3GLFR4RtgXCMQS161E5ZZHxftW4kUOGuCGhNpFBnObr4dtWwoHmRh6hVPY3wWkmTWEulmQBE0fzUZH32jGsJ6CR65eJ8daHVdFkN3yxWecGER5XL3EjSVjzWPlxk2UpCzMimSJTH4n+c6051xOQ6a2z11mE0+qIE4NoODrjVehAQxJYaSMvSLUDnficY6Ao5sPnmM+j2svPEzh75nMFq5zTQhu1s38LaZPNu0Dz8Gs6U7fbEzOKCoRjCLqtAzVq16Ny2v7DT8oi4/16C4PAqnEjhxpYQ7pNdzKZ/V5SpC0k8uOdDZLejdGybD340lHtgnIWXasSK4w8Qqk8FSKU7G+C01xG4u5MmsJc/LOiYSzJAiac4GIbz+DS+X/JssSvsxKDH5pyvg9GUgy/bzIxbxWSdt888ksOq6LJvoLC9G74YrPe0QKOzg0iPH4kQgGuXuJGHneCe5Kw5rEimYaM8uMmy0LKRvZSFmZE4j8GeTJFpj6CbMYDU/uWgePS9rwzqFb7g4E2xpNdFnQjdHZJ8w7WDkMntjMQJwbRoA5m7HB0xqvAXaaW0IGGJGCo5hmw0kZeAPsmY9FsduFhRRbcsT+2mwEW1qYRyvYUoeOWKXGZNm7BsFZTlp8ncCa2R032zOcKRuWHN1Y5p4XmEMe4Nmpn/4ZDB8JX1FdA5/03fTeHlzqHrvcHl3LXtSdbt4j3IRfPRwh38hQIxxCkIactdFsHasRyZ1fUrkflZIcn2LT9h58E1Oei1UO3IGVq1x21EHdaBTkXZxXlN9WlzFfodbb3r8Wfl5Lb6BXpa8F11Lu71ZMLkrWuG06VHKtn9SF7HVVmyzQ1WxqjZdmqigXkevClo8rZxZ7aBeUsaiyFEbpWJVYKf0VrWX/1ielWlbQ5LDXziQVVzpnZdXwp8BVB+Yq1Bkmj1TuYNIW5KB3lhPhnRcNITiX+WJIFTOi7ZXE4wcU2iOilC9/H1Chv7rQVv5QUUg+9dG8fYVTdr0g04H8ylKfPG/SaHoykGK6lxCV+32RizvYEX94qJO1uA0TQvnnklw5QhKpdUDRI7XlUdT0D9DKNKpQPnfa0vS3f1ID9pXTHTYwU+pwbRHgsMiRF/EiEAkxh5D9cvcSN7JSksDzuBPeMx2TKAAAAAKXTXMsLochNrnKUhhZCkZuzkc1QHeNZ1rgwBR1tglPsyFEPJ2Yjm6HD8Mdqe8DCd94TnrxwYQo61bJW8ZsC1gM+0YrIkKMeTjVwQoWNQEeYKJMbU4bhj9UjMtMe9oCF71NT2ST9IU2iWPIRaeDCFHRFEUi/62PcOU6wgPI2BawHk9bwzD2kZEqYdziBIEc9nIWUYVcr5vXRjjWpGluH/+v+VKMgUCY3pvX1a21NxW5w6BYyu0Zkpj3jt/r2rQd6BAjUJs+mprJJA3XugrtF658elrdUsOQj0hU3fxnAhSnoZVZ1I8sk4aVu971u1se4c3MU5LjdZnA+eLUs9WwKWA/J2QTEZ6uQQsJ4zIl6SMmU35uVX3HpAdnUOl0SAYgL46RbVygKKcOur/qfZRfKmniyGcazHGtSNbm4Dv73CI4MUtvSx/ypRkFZehqK4Uofl0SZQ1zq69faTziLEZqK3eA/WYErkSsVrTT4SWaMyEx7KRsQsIdphDYiutj9Wg/0CP/cqMNRrjxF9H1gjkxNZZPpnjlYR+yt3uI/8RU3jafkkl77Lzwsb6mZ/zNiIc82f4QcarQqbv4yj72i+cENIgtk3n7AyqzqRm9/to3XT7OQcpzvW9zue915PScWrI9x5wlcLSynLrmqAv3lYbrN4HwfHry3sWwoMRS/dPrYFLAefcfs1dO1eFN2ZiSYzlYhhWuFfU7F9+nIYCS1A7WW4/IQRb85vjcrvxvkd3Sj1HJpBgcuoqh1uiQNpubvQxZmHebFOtZIt65Q7WTym1VU94bwh6tNXvU/y/smYwAulDXxi0dpOiU1/byA5qF3ONakap0F+KEzd2wnlqQw7O4RHBlLwkDS5bDUVEBjiJ/4U42CXYDRSfPyRc9WIRkEg5NP9SZAEz6IMoe4LeHbc5XR3m4wAoKlnnAWIzujSuh1E8oa0MCW0X6yAlfbYV6cY1FbgcaCB0po8JPMzSPPBxiRmfa9QsU9EzBRu7bjDXAO0whtqwBUpgVywCCgoZzrtB7oERHNtNq/vyBcGmx8l6JceYoHjyVBqf2xxwwu7QzZnLv9fE/nNtI9c7B37i97z94qZmoNdq3Ef+IrYay+4C8cPhKKz2LZJL32X4FuqpQ5Xq+JnI3zQjL/Z8SXLDsPQp5t/udNMTVJP6Wz7Oz5eFTc/GXxD6CuX300KPquaOOCG0QWJ8gY3Ym6jFssadCQlFnVjTGKiUaf+B3AOitBC++ZF/pKSksx5Djft0Hrg3z524ZhXAjaqvJ6TixXqRLnGRmSFbzKzt4SuFpYt2sGkw9bA46qiF9FBPrLw6Eplwh0m8H50UidMn86CbTa6VV/YtlQYscKDKlpeJgvzKvE5AAAAAC0C3emKRGfl50a6DETJE/0py84Ujo10GOOPqfFZ07vM9NFmJVOX3Ck+lQHAnRqoMfAYddhXXs/UOlwSPbOnN5nepepweeNQfBThjZW3biRk2mz5jX0qQ4EQKJ5oqnSMVQd2UbygMOuwzTI2WW69n6gDv0JBpPn4Tcn7JaRnDm9zygyymm1KCJYASNV/o8d8js7FoWdpgxtrBIHGgr7d1L8T3wlWtJmzWtmbbrN6FMdCFxYaq7BQoKfdUn1OVKlY6jmrhQOe7T8P8+/i5lBgSxc9Ypb+miQs8vcm8RtNeuMm4Hg+z0c+hMMqPFkqibPw2+SxLTJD95c+LvVK155dQtEzX584lBklNPkb+N1alFEsN5aMxZDQNsn90usgR475HeqMJPRNyp74IMhDEYNH6uDuRTcJSQONBSQBUOyt+nVIwPiooWe+Eq0KvM9EqTNmtcQxu1xjdwFQDnXcubQpzoQZKxNtvm2pYdNvdIhw4N15HeIAkLqkupzXpmd1eVMtotRR8EtzF0pHHhWXrr2aPl/QmOO2d95ZuhrchFOggJZuDYJLh6rE8YvHxixiZEmFkwlLWHquDeJ2ww8/n0r0Gjsn9sfSgLB93u2yoDdOPQnGIz/UL4R5biPpe7PKUyeh9/4lfB5ZY8YSNGEb+5fusgr67G/jXarV7zCoCAa8uoWiEbhYS7b+4kfb/D+ueHOWXxVxS7ayN/G63zUsU2VpPm7Ia+OHby1ZiwIvhGKhoC2TzKLwemvkSnYG5pefjx2yO+Ifb9JFWdXeKFsIN4vUocbm1nwvQZDGIyySG8qWzgn3O8zUHpyKbhLxiLP7UgcaCj8Fx+OYQ33v9UGgBlu06tH2tjc4UfCNNDzyUN2fffks8n8kxVU5nsk4O0MggmdRHS9ljPSIIzb45SHrEUauQuArrJ8JjOolBeHo+OxoE91IBREAoaJXuq3PVWdEbNrOtQHYE1ymnqlQy5x0uXHAZoTcwrtte4QBYRaG3Ii1CXV52AuokH9NEpwST891oufHcw/lGpqoo6CWxaF9f2Yu1I4LLAlnrGqza8FoboJ7NHy/1jahVnFwG1occsazv/1vQtL/sqt1uQinGLvVTpFA8Or8Qi0DWwSXDzYGSuaVieMX+Is+/l/NhPIyz1kbiJNLJiWRls+C1yzD79XxKkxaWNshWIUyhh4/Pusc4tdF6agA6Ot16U+tz+UirxIMgSC7/ewiZhRLZNwYJmYB8Zw6E8wxOM4lln50Kft8qcBY8wAxNfHd2JK3Z9T/tbo9dk6fmRtMQnC8Cvh80QgllXKHjGQfhVGNuMPrgdXBNmhvnSRVwp/5vGXZQ7AI255Zq1Q3qMZW6kFhEFBNDBKNpIAAAAAngCqzH0HJULjB4+O+g5KhGQO4EiHCW/GGQnFCrUb5dMrG08fyBzAkVYcal1PFa9X0RUFmzISihWsEiDZKzG7fLUxEbBWNp4+yDY08tE/8fhPP1s0rDjUujI4fnaeKl6vACr0Y+Mte+19LdEhZCQUK/okvucZIzFphyObpVZidvnIYtw1K2VTu7Vl+XesbDx9MmyWsdFrGT9Pa7Pz43mTKn15OeaefrZoAH4cpBl32a6Hd3NiZHD87PpwViB9U82F41NnSQBU6MeeVEILh12HARldLc36WqJDZFoIj8hIKFZWSIKatU8NFCtPp9gyRmLSrEbIHk9BR5DRQe1c7cKdKXPCN+WQxbhrDsUSpxfM162JzH1hasvy7/TLWCNY2Xj6xtnSNiXeXbi73vd0otcyfjzXmLLf0Bc8QdC98MbzJlVY84yZu/QDFyX0qds8/WzRov3GHUH6SZPf+uNfc+jDhu3oaUoO7+bEkO9MCInmiQIX5iPO9OGsQGrhBoy7oOvQJaBBHManzpJYp2ReQa6hVN+uC5g8qYQWoqku2g67DgOQu6TPc7wrQe28gY30tUSHarXuS4myYcUXsssJkJFQrA6R+mDtlnXuc5bfImqfGij0n7DkF5g/aomYlaYlirV/u4ofs1iNkD3GjTrx34T/+0GEVTeig9q5PINwddqFO1NEhZGfp4IeETmCtN0gi3HXvovbG12MVJXDjP5Zb57egPGedEwSmfvCjJlRDpWQlAQLkD7I6JexRnaXG4rxtIAvb7Qq44yzpW0Ssw+hC7rKq5W6YGd2ve/p6L1FJUSvZfzar88wOahAvqeo6nK+oS94IKGFtMOmCjpdpqD2jOdNqhLn52bx4Gjob+DCJHbpBy7o6a3iC+4ibJXuiKA5/Kh5p/wCtUT7jTva+yf3w/Li/V3ySDG+9ce/IPVtc6fW9tY51lwa2tHTlETReVhd2LxSw9gWniDfmRC+3zPcEs0TBYzNuclvyjZH8cqci+jDWYF2w/NNlcR8wwvE1g83R6Z6qUcMtkpAgzjUQCn0zUns/lNJRjKwTsm8Lk5jcIJcQ6kcXOll/1tm62FbzCd4Ugkt5lKj4QVVLG+bVYajHHYdBoJ2t8phcThE/3GSiOZ4V4J4eP1Om39ywAV/2AypbfjVN21SGdRq3ZdKandbU2OyUc1jGJ0uZJcTsGQ932El0IP/JXpPHCL1wYIiXw2bK5oHBSswy+Ysv0V4LBWJ1D41UEo+n5ypORASNzm63i4wf9SwMNUYUzdals038FpKFGv/1BTBMzcTTr2pE+RxsBohey4ai7fNHQQ5Ux2u9f8PjixhDyTgggirbhwIAaIFAcSomwFuZHgG4ermBksmAAAAAEMUexeGKPYuxTyNOQxR7F1PRZdKinkac8ltYWQYoti7W7ajrJ6KLpXdnlWCFPM05lfnT/GS28LI0c+533FCwKwyVru792o2grR+TZV9EyzxPgdX5vs72t+4L6HIaeAYFyr0YwDvyO45rNyVLmWx9EompY9d45kCZKCNeXOjgvGC4JaKlSWqB6xmvny7r9Md3+zHZsgp++vxau+Q5rsgKTn4NFIuPQjfF34cpAC3ccVk9GW+czFZM0pyTUhd0sAxLpHUSjlU6McAF/y8F96R3XOdhaZkWLkrXRutUErKYumViXaSgkxKH7sPXmSsxjMFyIUnft9AG/PmAw+I8QcDkt5EF+nJgStk8MI/H+cLUn6DSEYFlI16iK3ObvO6H6FKZVy1MXKZibxL2p3HXBPwpjhQ5N0vldhQFtbMKwF2QVJyNVUpZfBppFyzfd9LehC+LzkExTj8OEgBvywzFm7jiskt9/He6Mt856vfB/BismaUIaYdg+SakLqnjuutpIFjXOeVGEsiqZVyYb3uZajQjwHrxPQWLvh5L23sAji8I7vn/zfA8DoLTcl5HzbesHJXuvNmLK02WqGUdU7ag9XDo/CW19jnU+tV3hD/LsnZkk+tmoY0ul+6uYMcrsKUzWF7S451AFxLSY1lCF32csEwlxaCJOwBRxhhOAQMGi9PAFVmDBQucckoo0iKPNhfQ1G5OwBFwizFeU8Vhm00Aleijd0UtvbK0Yp785KeAORb82GAGOcal93bl66ez+y5PkKVyn1W7t24amPk+34Y8zITeZdxBwKAtDuPufcv9K4m4E1xZfQ2ZqDIu1/j3MBIKrGhLGml2jusmVcC740sFeyCpOSvlt/zaqpSyim+Kd3g00i5o8czrmb7vpcl78WA9CB8X7c0B0hyCIpxMRzxZvhxkAK7ZesVfllmLD1NHTudwGRI3tQfXxvokmZY/OlxkZGIFdKF8wIXuX47VK0FLIVivPPGdsfkA0pK3UBeMcqJM1CuyicruQ8bpoBMD92XSAPHuAsXvK/OKzGWjT9KgURSK+UHRlDywnrdy4FuptxQoR8DE7VkFNaJ6S2VnZI6XPDzXh/kiEna2AVwmcx+ZzlBBxR6VXwDv2nxOvx9ii01EOtJdgSQXrM4HWfwLGZwIePfr2L3pLinyymB5N9Sli2yM/Jupkjlq5rF3OiOvsvrgTY6qJVNLW2pwBQuvbsD59DaZ6TEoXBh+CxJIuxXXvMj7oGwN5WWdQsYrzYfY7j/cgLcvGZ5y3la9PI6To/lmsP2ltnXjYEc6wC4X/97r5aSGsvVhmHcELrs5VOul/KCYS4twXVVOgRJ2ANHXaMUjjDCcM0kuWcIGDReSwxPSQAAAAA+a8LvPdD1BAO7N+t6oOsJRMsp5kdwHg15G9zi9EDXE8orFfzJkCIX9/vg+I7gPBqwi/71szDJHo1bC/Hoga4n1upsyNVRWyPrOpnMkiFFLqxKh8Gv8bAqkZpyxRzBeTQiqrvbIRGMMB96Tt9mYZI9WApQ0luxZzll2qXW0ANdT+5on6Dt06hL07hqpKqjtkaUyHSpl3NDQqkYga0kQ4pcGihIsxmTf1gn+L23XuNhVWCIo7pjM5RRXVhWvjiC82gG6TGHBVIGbDs5xINCIhhhfEnajn/y7WVBmS+KzMIke/Kp5pTxEtF/z3kTkLZiz3KICQ2di7I6drXZ+JmgB7qenmx4cZ3XT5qjvI112qdRl+TMk3jnd6ST2RxmfFRHbY1qLK9iaZeYiVf8WmYu54aEEIxEaxM3c4AtXLFvSIYUuXbt1lZ1VuG9Sz0jUjIm/7AMTT1fD/YKtDGdyFu8xsOqgq0BRYEWNq6/ffRBxmYoo/gN6kz7tt2nxd0fSHAE59FObyU+TdQS1XO/0DoKpAzYNM/ONzd0+dwJHzszhEQwwrov8i25lMXGh/8HKf7k28vAjxkkwzQuz/1f7CCYhUn2pu6LGaVVvPKbPn4d4iWi/9xOYBDf9Vf74Z6VFGzFnuVSrlwKURVr4W9+qQ4WZXXsKA63Ayu1gOgV3kIHAQkF5j9ixwk82fDiArIyDXup7u9FwiwARnkb63gS2QT1SdL1yyIQGsiZJ/H28uUej+k5/LGC+xOyOcz4jFIOF+mIq8HX42ku1FhexeoznCqTKEDIrUOCJ674tcyQk3cjHch80iOjvj0gGInWHnNLOWdol9tZA1U0Wrhi32TToDDRClip72GaRuzara3SsW9Cq6qzoJXBcU+WekakqBGESyVKj7obIU1VGJp6vibxuFFf6mSzYYGmXGI6kbdcUVNYOYv2jgfgNGEEWwOKOjDBZUMrHYd9QN9ofvvog0CQKmzNyyGd86DjcvAb1JnOcBZ2t2vKlIkACHuKuz+QtND9f6EOv3ifZX2XnN5KfKK1iJPbrlRx5cWWnuZ+oXXYFWOaVU5oa2slqoRonp1vVvVfgC/ug2IRhUGNEj52ZixVtIlJjxFfd+TTsHRf5FtKNCa0My/6Vg1EOLkO/w9SMJTNvb3PxkyDpASjgB8zSL508afHby1F+QTvqvq/2EHE1BqucQ3iN09mINhM3RczcrbV3AutCT41xsvRNn38OggWPtWFTTUkuyb3y7idwCCG9gLP/+3eLcGGHMLCPSsp/FbpxpmMTBCn547/pFy5FJo3e/vjLKcZ3Udl9t78Uh3gl5DybcybA1OnWexQHG4Hbnes6BdscAopB7LlKryFDhTXR+EAAAAAwN+OwcG5bFgBZuKZgnPZsEKsV3FDyrXogxU7KUXhw7qFPk17hFiv4kSHISPHkhoKB02UywYrdlLG9PiTy8T2rgsbeG8KfZr2yqIUN0m3Lx6JaKHfiA5DRkjRzYeOJTUUTvq71U+cWUyPQ9eNDFbspMyJYmXN74D8DTAOPdePnIYXUBJHFjbw3tbpfh9V/EU2lSPL95RFKW5Umqevkm5fPFKx0f1T1zNkkwi9pRAdhozQwghN0aTq1BF7ZBUcS2oo3JTk6d3yBnAdLYixnjizmF7nPVlfgd/An15RAVmqqZKZdSdTmBPFyljMSwvb2XAiGwb+4xpgHHrav5K77xlI1i/GxhcuoCSO7n+qT21qkWattR+nrNP9PmwMc/+q+ItsaicFrWtB5zSrnmn1KItS3OhU3B3pMj6EKe2wRSTdvnjkAjC55WTSICW7XOGmrmfIZnHpCWcXC5CnyIVRYTx9wqHj8wOghRGaYFqfW+NPpHIjkCqzIvbIKuIpRus4ltRQ+ElakfkvuAg58DbJuuUN4Ho6gyF7XGG4u4PveX13F+q9qJkrvM57snwR9XP/BM5aP9tAmz69ogL+YizD81Ii/jONrD8y606m8jTAZ3Eh+06x/nWPsJiXFnBHGde2s+FEdmxvhXcKjRy31QPdNMA49PQftjX1eVSsNababZ814Xdf6m+2XoyNL55TA+4dRjjH3Zm2Btz/VJ8cINpe2tQizRoLrAwbbU6V27LAVFin+32YeHW8mR6XJVnBGeRU8RfZlC6ZGJVIe4FVl/VA1oLOaRZdQKgXO6Ix1+Qs8BEQ1GPRz1qi0Km4OxB2NvqTYw3TU7yDElLaYYuSBe9KSLp98Yhl8zCJAxGpSdyfaMrJpEEKFiqAC3DIGcuvRtgNW75LzYQwiszi0hMMPVzSjyhn+0/36TpOkQujjk6FYoN+i19DoQWeQsfnB4IYacYBDVLvwdLcLsC0PrcAa7B2xp9I5QZAxiQHJiS9x/mqfETskVWEMx+UhVX9DUWKc8xwLKmhsPMnYLGVxflxSks48l9wETKA/tAz5hxJ8zmSiDXNahv1EuTa9HQGQzSriIK3vrOrd2E9anYH3/O22FEyu+hfD3s30c56UTNXuo69ljmbhr/5RAh++CLq5zj9ZCb+CZy1PtYSdD+w8O3/b34sfHpFBbyly8S9wyldfRynnKejNSdnfLvmZhpZf6bF174l0OyX5Q9iVuRpgM8ktg4O4kL2nSKdeFwj+5rF4yQUBGAxLy2g7qHsoYhDdWFXzbRsZ8OJrLhNSK3er9FtASEQ7hQaOS7LlPgvrXZh73L4oCmGADPpWY7y6D9sayjg4qqr9dmDaypXQmpMtduqkzsaAAAAAG9MpZufnjvs8NKed387BgMQd6OY4KU974/pmHT+dgwGkTqpnWHoN+oOpJJxgU0KBe4Br54e0zHpcZ+UcvztGAyTob2XY3Mj4Aw/hnuD1h4P7Jq7lBxIJeNzBIB4ApsUCm3XsZGdBS/m8kmKfX2gEgkS7LeS4j4p5Y1yjH742zEYl5eUg2dFCvQICa9vh+A3G+iskoAYfgz3dzKpbAatPR5p4ZiFmTMG8vZ/o2l5ljsdFtqehuYIAPGJRKVqBDYpFGt6jI+bqBL49OS3Y3sNLxcUQYqM5JMU+4vfsWD6QCUSlQyAiWXeHv4KkrtlhXsjEeo3hooa5Rj9dam9ZvC3YzCf+8arbylY3ABl/UePjGUz4MDAqBASXt9/XvtEDsFvNmGNyq2RX1Ta/hPxQXH6aTUetsyu7mRS2YEo90IMWns8Yxbep5PEQND8iOVLc2F9Pxwt2KTs/0bTg7PjSPIsdzqdYNKhbbJM1gL+6U2NF3E54lvUohKJStV9xe9OCGxSKGcg97OX8mnE+L7MX3dXVCsYG/Gw6Mlvx4eFylz2Gl4umVb7tWmEZcIGyMBZiSFYLeZt/bYWv2PBefPGWvSBSiSbze+/ax9xyART1FOLukwn5PbpvBQkd8t7aNJQCvdGImW747mVaX3O+iXYVXXMQCEagOW66lJ7zYUe3lbgb8dgjyNi+3/x/IwQvVkXn1TBY/AYZPgAyvqPb4ZfFB4Zy2ZxVW79gYfwiu7LVRFhIs1lDm5o/v689omR8FMSHILfbHPOeveDHOSA7FBBG2O52W8M9Xz0/Cfig5NrRxji9NNqjbh28X1q6IYSJk0dnc/VafKDcPICUe6FbR1LHhi09nh3+FPjhyrNlOhmaA9nj/B7CMNV4PgRy5eXXW4M5sL6fomOX+V5XMGSFhBkCZn5/H32tVnmBmfHkWkrYgrkWe50ixVL73vH1ZgUi3ADm2Lod/QuTewE/NOba7B2ABov4nJ1Y0fphbHZnur9fAVlFORxClhB6vqK352VxnoGENikUH+UAcuPRp+84Ao6J2/jolMArwfI8H2Zv58xPCTurqhWgeINzXEwk7oefDYhkZWuVf7ZC84OC5W5YUcwIuw1vFyDeRnHc6uHsBznIiuTDrpf/EIfxAyQgbNj3CQoEkOwWn0PFcGN3Yu24pEuLW14tlkCNBPC8uaNtZ2qKC7oA5VIh08w03edrqQY0Qs/lziTS/h0NtAIpqinZ+oNPBZ1mU55OTzVieuiouanBzlpTp9NBgI61vbQpKGZnAE6FO6NRHuiKN+LcLao5DwTM2vVi0cEmS7c9Euwq5sHFTDqmIFChdQk2XUGuq4aSh81laOHQfrvItoKPbytZXEZNgAAAACF2ZbdS7VcYM5syr2WarnAE7MvHd3f5aBYBnN9bdMDWugKlYcmZl86o7/J5/u5upp+YCxHsAzm+jXVcCfapge0X3+RaZETW9QUys0JTMy+dMkVKKkHeeIUgqB0ybd1BO4yrJIz/MBYjnkZzlMhH70upMYr82qq4U7vc3eT9Ut+s3CS6G6+/iLTOye0DmMhx3Pm+FGuKJSbE61NDc6YmH3pHUHrNNMtIYlW9LdUDvLEKYsrUvRFR5hJwJ4OlC/teQeqNO/aZFglZ+GBs7q5h8DHPF5WGvIynKd36wp6Qj56Xcfn7IAJiyY9jFKw4NRUw51RjVVAn+Gf/Ro4CSCrkY29LkgbYOAk0d1l/UcAPfs0fbgioqB2Tmgd85f+wMZCjudDmxg6jffShwguRFpQKDcn1fGh+huda0eeRP2acTeKCfTuHNQ6gtZpv1tAtOddM8lihKUUrOhvqSkx+XQc5IlTmT0fjldR1TPSiEPuio4wkw9Xpk7BO2zzROL6Ll7a8w7bA2XTFW+vbpC2ObPIsErOTWncE4MFFq4G3IBzMwnwVLbQZol4vKw0/WU66aVjSZQgut9J7tYV9GsPgymEfPS6AaViZ8/JqNpKED4HEhZNepfP26dZoxEa3HqHx+mv9+BsdmE9ohqrgCfDPV1/xU4g+hzY/TRwEkCxqYSdFyVqoJL8/H1ckDbA2UmgHYFP02AElkW9yvqPAE8jGd169mn6/y//JzFDNZq0mqNH7JzQOmlFRuenKYxaIvAah82DbRRIWvvJhjYxdAPvp6lb6dTU3jBCCRBciLSVhR5poFBuTiWJ+JPr5TIubjyk8zY6146z40FTfY+L7vhWHTPibhQTZ7eCzqnbSHMsAt6udASt0/HdOw4/sfGzumhnbo+9F0kKZIGUxAhLKUHR3fQZ166JnA44VFJi8unXu2Q0OMgTp70RhXpzfU/H9qTZGq6iqmcrezy65Rf2B2DOYNpVGxD90MKGIB6uTJ2bd9pAw3GpPUaoP+CIxPVdDR1jgLy05x05bXHA9wG7fXLYLaAq3l7drwfIAGFrAr3kspRg0WfkR1S+cpqa0rgnHwsu+kcNXYfC1MtaDLgB54lhlzpmEuCp48t2dC2nvMmofioU8HhZaXWhz7S7zQUJPhST1AvB4/OOGHUuQHS/k8WtKU6dq1ozGHLM7tYeBlNTx5COSf+ZrswmD3MCSsXOh5NTE9+VIG5aTLazlCB8DhH56tMkLJr0ofUMKW+ZxpTqQFBJskYjNDeften5839UfCrpiZNZnhoWgAjH2OzCel01VKcFMyfagOqxB06Ge7rLX+1n/oqdQHtTC521P8EgMOZX/WjgJIDtObJdI1V44KaM7j0AAAAAduEPna3EbuHbJWF8G4+sGW1uo4S2S8L4wKrNZTYeWTNA/1aum9o30u07OE8tkfUqW3D6t4BVm8v2tJRWbDyyZhrdvfvB+NyHtxnTGnezHn8BUhHi2ndwnqyWfwNaIutVLMPkyPfmhbSBB4opQa1HTDdMSNHsaSmtmogmMNh4ZM2umWtQdbwKLANdBbHD98jUtRbHSW4zpjUY0qmo7mY9/piHMmNDolMfNUNcgvXpkeeDCJ56WC3/Bi7M8Ju0RNarwqXZNhmAuEpvYbfXr8t6stkqdS8CDxRTdO4bzoJaj5j0u4AFL57heVl/7uSZ1SOB7zQsHDQRTWBC8EL98fe5QYcWttxcM9egKtLYPep4FVicmRrFR7x7uTFddCTH6eBysQjv72otjpMczIEO3GZMa6qHQ/ZxoiKKB0MtF53LCyfrKgS6MA9lxkbualuGRKc+8KWooyuAyd9dYcZCq9VSFN00XYkGETz1cPAzaLBa/g3Gu/GQHZ6Q7Gt/n3Epj92MX27SEYRLs23yqrzwMgBxlUThfgifxB906SUQ6R+RhL9pcIsislXqXsS05cMEHiimcv8nO6naRkffO0naRbNv6jNSYHfodwELnpYOll48w/Mo3cxu8/itEoUZoo9zrTbZBUw5RN5pWDioiFelaCKawB7DlV3F5vQhswf7vOLvc4OUDnweTysdYjnKEv/5YN+aj4HQB1SksXsiRb7m1PEqsKIQJS15NURRD9RLzM9+hqm5n4k0YrroSBRb59WO08Hl+DLOeCMXrwRV9qCZlVxt/OO9YmE4mAMdTnkMgLjNmNbOLJdLFQn2N2Po+aqjQjTP1aM7Ug6GWi54Z1WzOpcXTkx2GNOXU3mv4bJ2MiEYu1dX+bTKjNzVtvo92isMiU59emhB4KFNIJzXrC8BFwbiZGHn7fm6woyFzCODGFarpSggSqq1+2/LyY2OxFRNJAkxO8UGrODgZ9CWAWhNYLX8GxZU84bNcZL6u5CdZ3s6UAIN21+f1v4+46AfMX4TGMrCZfnFX77cpCPIPau+CJdm2352aUalUwg607IHpyUGk/FT55xsiML9EP4j8o0+iT/oSGgwdZNNUQnlrF6UfyR4pAnFdznS4BZFpAEZ2GSr1L0SStsgyW+6XL+OtcFJOiGXP9suCuT+T3aSH0DrUrWNjiRUghP/ceNviZDs8stgrg+9gaGSZqTA7hBFz3PQ7wIWpg4Ni30rbPcLymNq/X73PIuf+KFQupndJluWQObxWyWQEFS4SzU1xD3UOlmnXBxp0b0T9AqYcoh8eX0VvNOwcMoyv+0RF96RZ/bRDJFCRVrno0rHPIYru0pnJCaKzelD/Czm3icJh6JR6Ig/AAAAAOjb+7mRsYaoeWp9EWNlfIqLvocz8tT6IhoPAZuHzInPbxdydhZ9D2f+pvTe5Kn1RQxyDvx1GHPtncOIVE+fYkSnRJn93i7k7Db1H1Us+h7OxCHld71LmGZVkGPfyFPriyCIEDJZ4m0jsTmWmqs2lwFD7Wy4OocRqdJc6hCePsWIduU+MQ+PQyDnVLiZ/Vu5AhWAQrts6j+qhDHEExnyTEfxKbf+iEPK72CYMVZ6lzDNkkzLdOsmtmUD/U3c0aGnzDl6XHVAECFkqMva3bLE20ZaHyD/I3Vd7suupldWbS4DvrbVusfcqKsvB1MSNQhSid3TqTCkudQhTGIvmH17+8qVoABz7Mp9YgQRhtseHodA9sV8+Y+vAehndPpR+rdyBRJsibxrBvStg90PFJnSDo9xCfU2CGOIJ+C4c54y5JmO2j9iN6NVHyZLjuSfUYHlBLlaHr3AMGOsKOuYFbUoEEFd8+v4JJmW6cxCbVDWTWzLPpaXckf86mOvJxHa40U+Qguexfty9Ljqmi9DU4AgQsho+7lxEZHEYPlKP9lkibeNjFJMNPU4MSUd48qcB+zLB+83ML6WXU2vfoa2FqzaXAZEAae/PWvartWwIRfPvyCMJ2TbNV4OpiS21V2dKxbVycPNLnC6p1NhUnyo2EhzqUOgqFL62cIv6zEZ1FK78IdOUyt89ypBAebCmvpf2JX7xDBOAH1JJH1sof+G1Tw8DoHU5/U4rY2IKUVWc5BfWXILt4KJss7o9KMmMw8a9G/lChy0HrNl3mOijQWYG5cKmYB/0WI5BrsfKO5g5JFzo2zFm3iXfOIS6m0KyRHUEMYQT/gd6/aBd5bnaaxtXiXOQsbNFbl/tH/EblykP9dGqz5MrnDF9dcauOQ/wUNdogLLCUrZMLAzs02h22i2GMFnt4MpvEw6UNYxK7gNypJqUSCCgorbO/vgpioTO12TCTRcCOHvp7GYhdqgcF4hGe2dqU0FRlL0fCwv5ZT31FyO+NXHZiMufh9JU2/3kqjWxot8hC5Qhz1XOvosv+EBlaXuAA5NNfu3NF+GptyEfR9BR/VLqZwO8tD2c+M4LYhaIiKJwcr5cnizkw9pW0j00IkUHsBhz+V5GKWYaPB+Y9HqcWJKAqqZ83vA5OKTGx9bDtiXD+YDbLafaRGnd7LqHm2964WFZhA8/AxtLRTXlpRYtbkMsG5CtckEP6Qh38QdO9DFhtMLPj+qYUMuQrq4l995MMM3ost6Tsi2a6YTTdK8HExJVMe38C2tyuHFdjFYFyrbSP/xIPGGm13gbkCmWXRPp8KclFx75f4hag0l2tOQ5lKHeD2pPgFX1C/pjC+W84MuDRtY1bRiMqiliulTHAAAAACRkWiuYyWgh/K0yCmHTDHUFt1ZeuRpkVN1+Pn9T58Tc94Oe90surP0vSvbWsjTIqdZQkoJq/aCIDpn6o6ePifmD69PSP0bh2Fsiu/PGXIWMojjfpx6V7a168beG9GhNJVAMFw7soSUEiMV/LxW7QVBx3xt7zXIpcakWc1ofXs/F+zqV7keXp+Qj8/3Pvo3DsNrpmZtmRKuRAiDxuoy5Cxko3VEylHBjOPAUORNtagdsCQ5dR7Wjb03RxzVmeNFGPFy1HBfgGC4dhHx0NhkCSkl9ZhBiwcsiaKWveEMrNoLgj1LYyzP/6sFXm7DqyuWOla6B1L4SLOa0dki8n/69n4ua2cWgJnT3qkIQrYHfbpP+uwrJ1Qen+99jw6H07VpbV0k+AXz1kzN2kfdpXQyJVyJo7Q0J1EA/A7AkZSgZMhZyPVZMWYH7flPlnyR4eOEaBxyFQCygKHImxEwoDUrV0q7usYiFUhy6jzZ44KSrBt7bz2KE8HPPtvoXq+zRoeNQTkWHCmX5KjhvnU5iRAAwXDtkVAYQ2Pk0GrydbjEyBJSSlmDOuSrN/LNOqaaY09eY57ezwswLHvDGb3qq7cZs2bfiCIOcXqWxljrB672nv9XCw9uP6X92veMbEufIlYsdazHvR0CNQnVK6SYvYXRYER4QPEs1rJF5P8j1IxR9O39XGV8lfKXyF3bBlk1dXOhzIjiMKQmEIRsD4EVBKG7cu4vKuOGgdhXTqhJxiYGPD7f+62vt1VfG398zooX0mrT2rr7QrIUCfZ6PZhnEpPtn+tufA6DwI66S+kfKyNHJUzJybTdoWdGaWlO1/gB4KIA+B0zkZCzwSVYmlC0MDSJlsJLGAeq5eqzYsx7IgpiDtrzn59LmzFt/1MY/G47tsYJ0ThXmLmWpSxxvzS9GRFBReDs0NSIQiJgQGuz8SjFF6jlrYY5jQN0jUUq5RwthJDk1HkBdbzX88F0/mJQHFBYN/beyaaecDsSVlmqgz7333vHCk7qr6S8XmeNLc8PIw4bg3KfiuvcbT4j9fyvS1uJV7KmGMbaCOpyEiF743qPQYSQAdAV+K8ioTCGszBYKMbIodVXWcl7pe0BUjR8afyQJaSUAbTMOvMABBNikWy9F2mVQIb4/e50TDXH5d1dad+6t+dOK99JvJ8XYC0Of85Y9oYzyWfunTvTJrSqQk4ac2C8ZeLx1MsQRRzigdR0TPQsjbFlveUflwktNgaYRZg8/68WrW7HuF/aD5HOS2c/u7Oewioi9mzYlj5FSQdW6+1em4N8z/Mtjns7BB/qU6pqEqpX+4PC+Qk3CtCYpmJ+osGI8DNQ4F7B5Ch3UHVA2SWNuSS0HNGKRqgZo9c5cQ2mExAAXwAAAKAAAAAcAAAAAIEAAACBAQAAgQIAAIEDAACBBAAAgQUAAIEGAACBBwAAgQgAAIEJAACBCgAAgQsAAIEMAACBDQAAgQ4AAIEPAACBEAAAgREAAIESAACBEwAAgRQAAIEVAACBFgAAgRcAAIEYAACBGQAAgRoAAIEbAACBHAAAgR0AAIEeAACBHwAAgSAAAIEhAACBIgAAgSMAAIEkAACBJQAAgSYAAIEnAACBKAAAgSkAAIEqAACBKwAAgSwAAIEtAACBLgAAgS8AAIEwAACBMQAAgTIAAIEzAACBNAAAgTUAAIE2AACBNwAAgTgAAIE5AACBOgAAgTsAAIE8AACBPQAAgT4AAIE/AACBQAAAgUEAAIFCAACBQwAAgUQAAIFFAACBRgAAgUcAAIFIAACBSQAAgUoAAIFLAACBTAAAgU0AAIFOAACBTwAAgVAAAIFRAACBUgAAgVMAAIFUAACBVQAAgVYAAIFXAACBWAAAgVkAAIFaAACBWwAAgVwAAIFdAACBXgAAgV8AAIFgAACBYQAAgWIAAIFjAACBZAAAgWUAAIFmAACBZwAAgWgAAIFpAACBagAAgWsAAIFsAACBbQAAgW4AAIFvAACBcAAAgXEAAIFyAACBcwAAgXQAAIF1AACBdgAAgXcAAIF4AACBeQAAgXoAAIF7AACBfAAAgX0AAIF+AACBfwAAgYAAAIGBAACBggAAgYMAAIGEAACBhQAAgYYAAIGHAACBiAAAgYkAAIGKAACBiwAAgYwAAIGNAACBjgAAgY8AAIGQAACBkQAAgZIAAIGTAACBlAAAgZUAAIGWAACBlwAAgZgAAIGZAACBmgAAgZsAAIGcAACBnQAAgZ4AAIGfAACBoAAAgaEAAIGiAACBowAAgaQAAIGlAACBpgAAgacAAIGoAACBqQAAgaoAAIGrAACBrAAAga0AAIGuAACBrwAAgbAAAIGxAACBsgAAgbMAAIG0AACBtQAAgbYAAIG3AACBuAAAgbkAAIG6AACBuwAAgbwAAIG9AACBvgAAgb8AAIHAAACBwQAAgcIAAIHDAACBxAAAgcUAAIHGAACBxwAAgcgAAIHJAACBygAAgcsAAIHMAACBzQAAgc4AAIHPAACB0AAAgdEAAIHSAACB0wAAgdQAAIHVAACB1gAAgdcAAIHYAACB2QAAgdoAAIHbAACB3AAAgd0AAIHeAACB3wAAgeAAAIHhAACB4gAAgeMAAIHkAACB5QAAgeYAAIHnAACB6AAAgekAAIHqAACB6wAAgewAAIHtAACB7gAAge8AAIHwAACB8QAAgfIAAIHzAACB9AAAgfUAAIH2AACB9wAAgfgAAIH5AACB+gAAgfsAAIH8AACB/QAAgf4AAIH/AABAAAAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAABCwAAAQ0AAAEPAAABEQAAAhMAAAIXAAACGwAAAh8AAAMjAAADKwAAAzMAAAM7AAAEQwAABFMAAARjAAAEcwAABYMAAAWjAAAFwwAABeMAAAACAQBAAAAAQAAAphMQAF8AAACeAQAAFwAAAACAAQAAgAIAAIADAACABAAAgQUAAIEHAACCCQAAgg0AAIMRAACDGQAAhCEAAIQxAACFQQAAhWEAAIaBAACGwQAAhwEBAIeBAQCIAQIAiAEDAIkBBACJAQYAigEIAIoBDACLARAAiwEYAIwBIACMATAAjQFAAI0BYAAAAAAAAAAAphMQAF8AAACcAQAAGgAAAKYTEABfAAAA6gEAABEAAACmExAAXwAAAOsBAAARAAAAphMQAF8AAADwAQAAFQAAAKYTEABfAAAA8QEAABUAAACmExAAXwAAAB4CAAA5AAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADQAAAA8AAAARAAAAEwAAABcAAAAbAAAAHwAAACMAAAArAAAAMwAAADsAAABDAAAAUwAAAGMAAABzAAAAgwAAAKMAAADDAAAA4wAAAAIBAACmExAAXwAAADUCAAAdAEHQzcMAC5ocAQEBAQICAgIDAwMDBAQEBAUFBQUAAAAAphMQAF8AAABXAgAAOgAAAAAAAAABAQICAwMEBAUFBgYHBwgICQkKCgsLDAwNDQAAphMQAF8AAAByAgAAHAAAAKYTEABfAAAAiQIAABwAAACmExAAXwAAAIYCAAA0AAAAphMQAF8AAACGAgAAGQAAAKYTEABfAAAAfAIAABgAAACmExAAXwAAAIACAAAgAAAAphMQAF8AAAAoAgAAHQAAAKYTEABfAAAA9gEAABkAAACmExAAXwAAAPcBAAAZAAAAphMQAF8AAADOAgAAOQAAAKYTEABfAAAA4wIAABkAAACmExAAXwAAAAkDAAA6AAAAphMQAF8AAAAnAwAAHAAAAKYTEABfAAAAPgMAABwAAACmExAAXwAAADsDAAA0AAAAphMQAF8AAAA7AwAAGQAAAKYTEABfAAAAMQMAABgAAACmExAAXwAAADUDAAAgAAAAphMQAF8AAADWAgAAGQAAAKYTEABfAAAAuwIAABUAAACmExAAXwAAALUCAAAVAAAAphMQAF8AAACuAgAAFQAAAAWAAQAFhwEBBYMRAAWLARAFgQUABYkBBAWFQQAFjQFABYADAAWIAQIFhCEABYwBIAWCCQAFigEIBYaBAAUAAAAFgAIABYeBAQWDGQAFiwEYBYEHAAWJAQYFhWEABY0BYAWABAAFiAEDBYQxAAWMATAFgg0ABYoBDAWGwQAFAAAAB0AAAAiBUAAIgRAACARzAAcCHwAIgXAACIEwAAmBwAAHAAoACIFgAAiBIAAJgaAACIEAAAiBgAAIgUAACYHgAAcABgAIgVgACIEYAAmBkAAHAzsACIF4AAiBOAAJgdAABwERAAiBaAAIgSgACYGwAAiBCAAIgYgACIFIAAmB8AAHAAQACIFUAAiBFAAIBeMABwMrAAiBdAAIgTQACYHIAAcBDQAIgWQACIEkAAmBqAAIgQQACIGEAAiBRAAJgegABwAIAAiBXAAIgRwACYGYAAcEUwAIgXwACIE8AAmB2AAHAhcACIFsAAiBLAAJgbgACIEMAAiBjAAIgUwACYH4AAcAAwAIgVIACIESAAgFowAHAyMACIFyAAiBMgAJgcQABwELAAiBYgAIgSIACYGkAAiBAgAIgYIACIFCAAmB5AAHAAcACIFaAAiBGgAJgZQABwRDAAiBegAIgToACYHUAAcCEwAIgWoACIEqAAmBtAAIgQoACIGKAAiBSgAJgfQABwAFAAiBVgAIgRYACEAAAAcDMwAIgXYACIE2AAmBzAAHAQ8ACIFmAAiBJgAJgawACIEGAAiBhgAIgUYACYHsAAcACQAIgV4ACIEeAAmBnAAHBGMACIF+AAiBPgAJgdwABwIbAAiBbgAIgS4ACYG8AAiBDgAIgY4ACIFOAAmB/AAHQAAACIFRAAiBEQAIBYMABwIfAAiBcQAIgTEACYHCAAcACgAIgWEACIEhAAmBogAIgQEACIGBAAiBQQAJgeIABwAGAAiBWQAIgRkACYGSAAcDOwAIgXkACIE5AAmB0gAHAREACIFpAAiBKQAJgbIACIEJAAiBiQAIgUkACYHyAAcABAAIgVUACIEVAAgAAgEHAysACIF1AAiBNQAJgcoABwENAAiBZQAIgSUACYGqAAiBBQAIgYUACIFFAAmB6gAHAAgACIFdAAiBHQAJgZoABwRTAAiBfQAIgT0ACYHaAAcCFwAIgW0ACIEtAAmBugAIgQ0ACIGNAAiBTQAJgfoABwADAAiBUwAIgRMACAXDAAcDIwAIgXMACIEzAAmBxgAHAQsACIFjAAiBIwAJgaYACIEDAAiBgwAIgUMACYHmAAcABwAIgVsACIEbAAmBlgAHBEMACIF7AAiBOwAJgdYABwITAAiBawAIgSsACYG2AAiBCwAIgYsACIFLAAmB9gAHAAUACIFXAAiBFwAIQAAABwMzAAiBdwAIgTcACYHOAAcBDwAIgWcACIEnAAmBrgAIgQcACIGHAAiBRwAJge4ABwAJAAiBXwAIgR8ACYGeAAcEYwAIgX8ACIE/AAmB3gAHAhsACIFvAAiBLwAJgb4ACIEPAAiBjwAIgU8ACYH+AAdAAAAIgVAACIEQAAgEcwAHAh8ACIFwAAiBMAAJgcEABwAKAAiBYAAIgSAACYGhAAiBAAAIgYAACIFAAAmB4QAHAAYACIFYAAiBGAAJgZEABwM7AAiBeAAIgTgACYHRAAcBEQAIgWgACIEoAAmBsQAIgQgACIGIAAiBSAAJgfEABwAEAAiBVAAIgRQACAXjAAcDKwAIgXQACIE0AAmByQAHAQ0ACIFkAAiBJAAJgakACIEEAAiBhAAIgUQACYHpAAcACAAIgVwACIEcAAmBmQAHBFMACIF8AAiBPAAJgdkABwIXAAiBbAAIgSwACYG5AAiBDAAIgYwACIFMAAmB+QAHAAMACIFSAAiBEgAIBaMABwMjAAiBcgAIgTIACYHFAAcBCwAIgWIACIEiAAmBpQAIgQIACIGCAAiBQgAJgeUABwAHAAiBWgAIgRoACYGVAAcEQwAIgXoACIE6AAmB1QAHAhMACIFqAAiBKgAJgbUACIEKAAiBigAIgUoACYH1AAcABQAIgVYACIEWAAhAAAAHAzMACIF2AAiBNgAJgc0ABwEPAAiBZgAIgSYACYGtAAiBBgAIgYYACIFGAAmB7QAHAAkACIFeAAiBHgAJgZ0ABwRjAAiBfgAIgT4ACYHdAAcCGwAIgW4ACIEuAAmBvQAIgQ4ACIGOAAiBTgAJgf0AB0AAAAiBUQAIgREACAWDAAcCHwAIgXEACIExAAmBwwAHAAoACIFhAAiBIQAJgaMACIEBAAiBgQAIgUEACYHjAAcABgAIgVkACIEZAAmBkwAHAzsACIF5AAiBOQAJgdMABwERAAiBaQAIgSkACYGzAAiBCQAIgYkACIFJAAmB8wAHAAQACIFVAAiBFQAIAAIBBwMrAAiBdQAIgTUACYHLAAcBDQAIgWUACIElAAmBqwAIgQUACIGFAAiBRQAJgesABwAIAAiBXQAIgR0ACYGbAAcEUwAIgX0ACIE9AAmB2wAHAhcACIFtAAiBLQAJgbsACIENAAiBjQAIgU0ACYH7AAcAAwAIgVMACIETAAgFwwAHAyMACIFzAAiBMwAJgccABwELAAiBYwAIgSMACYGnAAiBAwAIgYMACIFDAAmB5wAHAAcACIFbAAiBGwAJgZcABwRDAAiBewAIgTsACYHXAAcCEwAIgWsACIErAAmBtwAIgQsACIGLAAiBSwAJgfcABwAFAAiBVwAIgRcACEAAAAcDMwAIgXcACIE3AAmBzwAHAQ8ACIFnAAiBJwAJga8ACIEHAAiBhwAIgUcACYHvAAcACQAIgV8ACIEfAAmBnwAHBGMACIF/AAiBPwAJgd8ABwIbAAiBbwAIgS8ACYG/AAiBDwAIgY8ACIFPAAmB/wCmExAAXwAAAH0BAAAOAAAAphMQAF8AAAB3AQAAFgAAAKYTEABfAAAAXwEAAB0AAACmExAAXwAAAHIBAAAZAAAAphMQAF8AAABNAQAAFQAAABAAAAARAAAAEgAAAAAAAAAIAAAABwAAAAkAAAAGAAAACgAAAAUAAAALAAAABAAAAAwAAAADAAAADQAAAAIAAAAOAAAAAQAAAA8AAACmExAAXwAAACEBAAAhAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0cHV0X3Bvc2l0aW9uIDw9IG91dHB1dC5sZW4oKQAAAKYTEABfAAAAegMAAAkAAACmExAAXwAAAIsDAAAsAAAAphMQAF8AAACLAwAAEQAAAKYTEABfAAAAzgMAABsAAACmExAAXwAAAPUDAAAoAAAAphMQAF8AAADhAwAANAAAAKYTEABfAAAA8AMAACAAAACmExAAXwAAADEEAAAgAAAAPR8QAFwAAAAeAAAACQAAAD0fEABcAAAALgAAAD8AAAA9HxAAXAAAAC8AAAANAAAAPR8QAFwAAAA3AAAAEQAAAD0fEABcAAAArQAAABEAAAA9HxAAXAAAAJcAAAAVAAAAPR8QAFwAAACfAAAAHgAAAD0fEABcAAAAowAAABEAAAA9HxAAXAAAAKQAAAAgAAAAPR8QAFwAAABgAAAAFQAAAD0fEABcAAAAhgAAABsAAAA9HxAAXAAAAHEAAAAjAAAAPR8QAFwAAAByAAAAJwAAAD0fEABcAAAAcwAAACQAAAA9HxAAXAAAAHQAAAAkAAAAPR8QAFwAAAB2AAAALQAAAD0fEABcAAAAdwAAAC0AAAA9HxAAXAAAAH0AAAAdAAAAPR8QAFwAAABhAAAAGgAAAD0fEABcAAAAZAAAAA0AAAA9HxAAXAAAAGoAAAANAAAAPR8QAFwAAABSAAAAGAAAAD0fEABcAAAAUgAAAAkAAACrAQAADAAAAAQAAAChAAAAqwEAAAwAAAAEAAAAogAAAKEAAADI8xAAowAAAKQAAAClAAAAowAAAKYAAABRdWF0VmVjM0EAAABJKRAAXgAAACUAAAAoAAAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvdx4pEAAqAAAAJQAAACgAAAAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAgwAAAAAAAAAEAAAABAAAAKwBAAAAAAAABAAAAAQAAACtAQAAVHJ5UmVzZXJ2ZUVycm9yAAAAAAAIAAAABAAAAK4BAABBbGxvY0Vycm9ybm9uX2V4aGF1c3RpdmWaHxAAXgAAALYAAAAUAAAApwAAAAwAAAAEAAAArwEAALABAACxAQBB9OnDAAvlAQEAAACrAAAAAAAAAAQAAAAEAAAASQAAAHvB/NSDxn5hADSg9/rQS5y1pwHi0DcUlopYBvoI7rUsAAAAAAQAAAAEAAAAsgEAAAAAAAAEAAAABAAAAKwAAAAAAAAABAAAAAQAAACsAAAAiVBORw0KGgr/2P9HSUY4OWFHSUY4N2FSSUZGAAAAAFdFQlD/////AAAAAE1NACpERFMgQk0AAAEAIz9SQURJQU5DRQAAAABmdHlwYXZpZv//AAB2LzEBcW9pZlAxUDJQM1A0UDVQNlA3ZmFyYmZlbGQAAABc9RAACAAAAAEAQeTrwwAL2Rlk9RAAAwAAAAEAAAAAAAAAAQAAAGf1EAAGAAAAAQAAAAAAAAACAAAAbfUQAAYAAAABAAAAAAAAAAIAAABz9RAADAAAAH/1EAAIAAAAAwAAAIf1EAAEAAAAAQAAAAAAAAAFAAAARjsQAAQAAAABAAAAAAAAAAUAAACL9RAABAAAAAEAAAAAAAAABwAAAI/1EAACAAAAAQAAAAAAAAAIAAAAkfUQAAQAAAABAAAAAAAAAAkAAACV9RAACgAAAAEAAAAAAAAACgAAAJ/1EAAMAAAAq/UQAAQAAAANAAAAr/UQAAQAAAABAAAAAAAAAAsAAACz9RAABAAAAAEAAAAAAAAADgAAALf1EAACAAAAAQAAAAAAAAAEAAAAufUQAAIAAAABAAAAAAAAAAQAAAC79RAAAgAAAAEAAAAAAAAABAAAAL31EAACAAAAAQAAAAAAAAAEAAAAv/UQAAIAAAABAAAAAAAAAAQAAADB9RAAAgAAAAEAAAAAAAAABAAAAMP1EAACAAAAAQAAAAAAAAAEAAAAxfUQAAgAAAABAAAAAAAAAAwAAACzAQAAEAAAAAQAAAC0AQAAswEAABAAAAAEAAAAtQEAALQBAACI9xAAowAAALYBAAClAAAAtwEAAKYAAAC4AQAAEAAAAAQAAAC5AQAAuAEAABAAAAAEAAAAugEAALkBAADE9xAAuwEAALwBAAClAAAAvQEAAKYAAAC6GhAAYQAAANECAABDAAAAuhoQAGEAAADSAgAAEwAAAGNhc3RfcGl4ZWxzIHJldHVybmVkIHRoZSByaWdodCBudW1iZXIgb2YgcGl4ZWxzALoaEABhAAAAlwYAAA4AAAAyHRAAYQAAAEcEAAA2AAAAMh0QAGEAAABKBAAANwAAADIdEABhAAAATQQAADsAAAAyHRAAYQAAAGIEAAAdAAAAMh0QAGEAAAB6BAAAQwAAADIdEABhAAAAcQQAAB0AAAAyHRAAYQAAAFAEAAA8AAAAMh0QAGEAAABDBAAAJwAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1ZmZlci5sZW4oKS5pc19tdWx0aXBsZV9vZihmcm9tX2xheW91dC5jaGFubmVscygpKQAAADIdEABhAAAAnAQAAAkAAAAAAAAACAAAAAQAAAC+AQAAaW5wdXQgbGF5b3V0IGFscmVhZHkgYWxsb2NhdGVkIHdpdGggYXBwcm9wcmlhdGUgbGF5b3V0AAAyHRAAYQAAAKIEAAAOAAAAWRcQAFkAAAAOAgAAPwAAAEltYWdlIHNpemUgZXhjZWVkcyBsaW1pdFRoZSBmb2xsb3dpbmcgc3RyaWN0IGxpbWl0cyBhcmUgc3BlY2lmaWVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBvcGVydGF0aW9uOiAAAAAAAAEAAAABAAAAvwEAAAAAAAABAAAAAQAAAMABAAAAAAAAAQAAAAEAAADBAQAAAAAAAAQAAAAEAAAAwgEAAAAAAAAEAAAABAAAAMMBAABpbm5lckZvcm1hdCBlcnJvclRoZSBJbWFnZSdzIGRpbWVuc2lvbnMgYXJlIGVpdGhlciB0b28gc21hbGwgb3IgdG9vIGxhcmdlVGhlIGVuZCB0aGUgaW1hZ2Ugc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQgZHVlIHRvIGEgcHJldmlvdXMgZXJyb3JUaGUgZW5kIG9mIHRoZSBpbWFnZSBoYXMgYmVlbiByZWFjaGVkYFVua25vd25gSW1hZ2VCdWZmZXJTaXplYWN0dWFsUG9sbGVkQWZ0ZXJFbmRPZkltYWdlUG9sbGVkQWZ0ZXJGYXRhbEVycm9yVGhlIGltYWdlIGZvcm1hdCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZEVycgAAAAAAAAQAAAAEAAAAxAEAAEZvcm1hdEVycm9yUmlmZlNpZ25hdHVyZUludmFsaWRXZWJwU2lnbmF0dXJlSW52YWxpZENodW5rTWlzc2luZ0NodW5rSGVhZGVySW52YWxpZFJlc2VydmVkQml0U2V0SW52YWxpZEFscGhhUHJlcHJvY2Vzc2luZ0ludmFsaWRDb21wcmVzc2lvbk1ldGhvZEFscGhhQ2h1bmtTaXplTWlzbWF0Y2hJbWFnZVRvb0xhcmdlRnJhbWVPdXRzaWRlSW1hZ2VMb3NzbGVzc1NpZ25hdHVyZUludmFsaWRWZXJzaW9uTnVtYmVySW52YWxpZEludmFsaWRDb2xvckNhY2hlQml0c0h1ZmZtYW5FcnJvckJpdFN0cmVhbUVycm9yVHJhbnNmb3JtRXJyb3JWcDhNYWdpY0ludmFsaWROb3RFbm91Z2hJbml0RGF0YUNvbG9yU3BhY2VJbnZhbGlkTHVtYVByZWRpY3Rpb25Nb2RlSW52YWxpZEludHJhUHJlZGljdGlvbk1vZGVJbnZhbGlkQ2hyb21hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW5jb25zaXN0ZW50SW1hZ2VTaXplc1Vuc3VwcG9ydGVkRmVhdHVyZUludmFsaWRQYXJhbWV0ZXJNZW1vcnlMaW1pdEV4Y2VlZGVkSW52YWxpZENodW5rU2l6ZU5vTW9yZUZyYW1lc0ludmFsaWREaW1lbnNpb25zTGltaXRzRXhjZWVkZWQAALEAAAAIAAAABAAAAC8AAACxAAAACAAAAAQAAACyAAAALwAAAMD9EACzAAAAtAAAAKUAAAC1AAAApgAAAFVucmVwcmVzZW50YWJsZUludmFsaWRLZXl3b3JkU2l6ZU1pc3NpbmdOdWxsU2VwYXJhdG9ySW5mbGF0aW9uRXJyb3JPdXRPZkRlY29tcHJlc3Npb25TcGFjZUludmFsaWRDb21wcmVzc2lvbkZsYWdNaXNzaW5nQ29tcHJlc3Npb25GbGFnAAAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAaQAAAENyY01pc21hdGNoY3JjX3ZhbGNyY19zdW1JbnZhbGlkU2lnbmF0dXJlTWlzc2luZ0ZjdGxNaXNzaW5nSW1hZ2VEYXRhQ2h1bmtCZWZvcmVJaGRyQWZ0ZXJJZGF0QmVmb3JlUGx0ZUFmdGVyUGx0ZU91dHNpZGVQbHRlSWRhdER1cGxpY2F0ZUNodW5rQXBuZ09yZGVycHJlc2VudFNob3J0UGFsZXR0ZWxlbgAAAAAAAQAAAAEAAADFAQAASW52YWxpZFNiaXRDaHVua1NpemVjb2xvcl90eXBlAAAAAAAAAQAAAAEAAADGAQAASW52YWxpZFNiaXRzYW1wbGVfZGVwdGhzYml0UGFsZXR0ZVJlcXVpcmVkAAAAAAAABAAAAAQAAADHAQAASW52YWxp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AABMIBAAaQAAABgCAAAYAAAATCAQAGkAAADzAQAAHwAAAIIbEABtAAAAbQEAABgAAACCGxAAbQAAAFoAAAAYAAAAcTEQAFoAAACiCAAAJQAAAHExEABaAAAAoggAAB4AAABxMRAAWgAAAPAIAAAiAAAAcTEQAFoAAADwCAAACgAAAHExEABaAAAA3QgAAB4AAABxMRAAWgAAAAoJAAAeAAAAcTEQAFoAAAALCQAAFwAAAHExEABaAAAADwkAACYAAABxMRAAWgAAABIJAAAiAAAAcTEQAFoAAAAMCQAAHQAAAHExEABaAAAAgQgAAAUAAABxMRAAWgAAAIQIAAAmAAAAcTEQAFoAAACICAAAKwAAAHExEABaAAAAiAgAACAAAABxMRAAWgAAACUIAABFAAAAcTEQAFoAAAAiCAAAHgAAAHExEABaAAAAOAgAADEAAABxMRAAWgAAABwIAABBAAAABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA8AD4AQABCAEQARgBIAEoATABOAFAAUgBUAFYAWABaAFwAXgBgAGIAZABmAGgAagBsAG4AcAByAHQAdwB6AH0AgACDAIYAiQCMAI8AkgCVAJgAmwCeAKEApACnAKoArQCxALUAuQC9AMEAxQDJAM0A0QDVANkA3QDhAOUA6gDvAPUA+QD+AAMBCAENARIBFwEcAQQABQAGAAcACAAJAAoACgALAAwADQAOAA8AEAARABEAEgATABQAFAAVABUAFgAWABcAFwAYABkAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAlACYAJwAoACkAKgArACwALQAuAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFsAXQBfAGAAYgBkAGUAZgBoAGoAbABuAHAAcgB0AHYAegB8AH4AgACCAIQAhgCIAIoAjACPAJEAlACXAJoAnQBxMRAAWgAAAGgIAAAwAAAAcTEQAFoAAABcCAAAOwAAAGgQ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T25lVHdvRm91ckVpZ2h0U2l4dGVlbkdyYXlzY2FsZVJnYkluZGV4ZWRHcmF5c2NhbGVBbHBoYVJnYmFFbmQgb2YgaW1hZ2UgaGFzIGJlZW4gcmVhY2hlZEEgZmF0YWwgZGVjb2RpbmcgZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVkIGVhcmxpZXJJbnZhbGlkIFBORyBzaWduYXR1cmUuZmNUTCBjaHVuayBtaXNzaW5nIGJlZm9yZSBmZEFUIGNodW5rLklEQVQgb3IgZmRBVCBjaHVuayBpcyBtaXNzaW5nLk1pc3NpbmcgcGFsZXR0ZSBvZiBpbmRleGVkIGltYWdlLkludmFsaWQgaW1hZ2UgZGltZW5zaW9uc1N1YiBmcmFtZSBpcyBvdXQtb2YtYm91bmRzLkNvcnJ1cHQgZGVmbGF0ZSBzdHJlYW0uIElEQVQgb3IgZkRBVCBjaHVuayBkb2VzIG5vdCBoYXZlIGVub3VnaCBkYXRhIGZvciBpbWFnZS5VbnJlcHJlc2VudGFibGUgZGF0YSBpbiB0RVh0IGNodW5rLktleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuTm8gbnVsbCBzZXBhcmF0b3IgaW4gdEVYdCBjaHVuay5JbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLk91dCBvZiBkZWNvbXByZXNzaW9uIHNwYWNlLiBUcnkgd2l0aCBhIGxhcmdlciBsaW1pdC5Vc2luZyBhbiB1bnJlY29nbml6ZWQgYnl0ZSBhcyBjb21wcmVzc2lvbiBtZXRob2QuVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay5ObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLmZkQVQgY2h1bmsgc2hvcnRlciB0aGFuIDQgYnl0ZXNCYWQgZ2FtbWEgdmFsdWUubGltaXRzIGFyZSBleGNlZWRlZEJhZFpsaWJIZWFkZXJJbnN1ZmZpY2llbnRJbnB1dEludmFsaWRCbG9ja1R5cGVJbnZhbGlkVW5jb21wcmVzc2VkQmxvY2tMZW5ndGhJbnZhbGlkSGxpdEludmFsaWRIZGlzdElu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pA6QF+bKS03SgABHeZvsylCl2RKiRHlIHc4A2I7FrUSBCCkegtAtbRfYMxM/0VedmtMgGM6mJCR5RvaoZaesShV2TRN9pDqgjj29dG+leneIVuIeZFCV5j4xZF2Mt/vFBhK1GLemquvLjbZKcCyW0WsOxBNXpKoSExYkERpH8OgSF6Af3+nuDtxEg9oUbPNTQt9MGYAhv9h8nQLiQyMpQ2h/PRQzgTJ6/X1oTjYcVM+5MjEQuM5QkJXJQEq9xrlLKVHoGcYLp6Z31DMIMdLHb4fauRRrCewexnYpoI0O07/SrpQQ39usZKNXQgBJF7j/HX6HGhnjI+q13wHNoBJgmbExORWutRyIkUzOcE115q0njvoQ4lWUprWt4xqvu3BJDH0qG+h3Q4XEV+l78mKNBz2XuxWH+TUEanmHyY61CgZk32IRccK8BhCPpXXkiHfWbGXRGyc1ymumpbf36dOSq/AdQRYfxKG8Hh7GX+4PD1aNsc0RZdMCYWRjo/8Ws7GJSE98HFHcm01QHOky3yiO1AbZyRYOfUlxc+Mgj7Ig2HYFFDsSfC4PgoUFm37qzVnxO1MrHcq+pQGeN6/L7tdH9C/cVRehmIQ0S/lYCb+sbMOMFqsSMC4wMSBlbGVtZW50IGluIG1hcDEgZWxlbWVudCBpbiBzZXF1ZW5jZXU4ZjMyZjY0dTMydTY0dXNpemVleHBsaWNpdCBwYW5pYwAAALgrEABfAAAAJAkAABIAAABvbmUgb2YgLCBieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50AAAAAAgAAAAEAAAA5AEAAOUBAADmAQAALjBhIGJvb2xlYW51bml0YSBzdHJpbmdhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikA4B0QAE8AAAC9BAAAJAAAAG51bGz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////GC4QAF0AAACzAQAAGgAAABguEABdAAAAAAIAABMAAAAYLhAAXQAAAAUCAAAzAAAAGC4QAF0AAAAJAgAAPgAAABguEABdAAAADwIAADoAAAAYLhAAXQAAAKsBAAA9AAAAGC4QAF0AAACmAQAARQAAACBhdCBsaW5lIAAAAPoWEABeAAAA9wEAACEAAAD6FhAAXgAAAPsBAAAMAAAA+hYQAF4AAAACAgAAIQAAAPoWEABeAAAACwIAACoAAAD6FhAAXgAAAA8CAAAsAAAA+hYQAF4AAAAUAgAACQAAAGluZi1pbmZOYU4AAKcAAAAMAAAABAAAAJ0BAACeAQAA5wEAQcSyxQALtwYBAAAAqwAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAgSMQAEsAAABkCwAADgAAAOAdEABPAAAAPAYAABQAAADgHRAATwAAADwGAAAhAAAA4B0QAE8AAAAwBgAAFAAAAOAdEABPAAAAMAYAACEAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFsaWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBhIG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8taW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJhaWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGltaXQgZXhjZWVkZWQYLhAAXQAAAFwCAAATAAAAGC4QAF0AAABuAgAAGQAAAC4/AAD9LxAAYgAAADUAAAAOAAAAZmFpbGVkIHRvIHdyaXRlIHdob2xlIGJ1ZmZlcjxcEQAcAAAAFwAAAAAAAAACAAAAWFwRAAICAgICAgICAgICAEGYucUACwgCAgAAAAAAAgBBz7nFAAsBAgBB9bnFAAsBAQBBkLrFAAsBAQBB+LrFAAv9BQEAAADJAQAAAAAAAAQAAAAEAAAAOgAAAAAAAAAEAAAABAAAAIMAAABMYXlvdXRzaXplYWxpZ24A4B0QAE8AAADNAQAANwAAAAAAAAAEAAAABAAAAOgBAABQYXJzZUludEVycm9yRW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVyb+AdEABPAAAAaQQAACQAAAA1GRAATgAAAA0IAAARAAAA8BsQAGcAAAA5AAAACQAAAHExEABaAAAApQYAAEsAAABxMRAAWgAAAKsGAABLAAAAcTEQAFoAAACrBgAAMQAAAHExEABaAAAApQYAADEAAABxMRAAWgAAAJkGAABJAAAAcTEQAFoAAACZBgAAMQAAAHExEABaAAAA1gYAAEsAAABxMRAAWgAAAN0GAABLAAAAcTEQAFoAAADdBgAAMQAAAHExEABaAAAA1gYAADEAAABxMRAAWgAAAMkGAABNAAAAcTEQAFoAAADJBgAANQAAAHExEABaAAAAuwYAAE0AAABxMRAAWgAAALsGAAA1AAAAcTEQAFoAAACNBgAASQAAAHExEABaAAAAjQYAADEAAABxMRAAWgAAAMUHAAAqAAAAcTEQAFoAAACiBwAAFQAAAHExEABaAAAArAcAACEAAABxMRAAWgAAALEHAAAhAAAAcTEQAFoAAAAcBAAACQAAAHExEABaAAAAGwQAADEAAABxMRAAWgAAABMEAAARAAAAcTEQAFoAAAASBAAALQAAALEAAAAIAAAABAAAALIAAABSZWFkaW5nIGZyb20gJlt1OF0gY2FuJ3QgZmFpbCBhbmQgdGhlIGNodW5rIGlzIGNvbXBsZXRlAHExEABaAAAADQQAABYAAABhc3NlcnRpb24gZmFpbGVkOiBjb21wbGV4aXR5IDw9IDIAAABxMRAAWgAAANMFAAAJAAAAcTEQAFoAAADXBQAAHAAAAAABAgMGBAUGBgYGBgYGBgdxMRAAWgAAAAMGAAAWAAAAnwBBgMHFAAsCpZEAQYzBxQALA62UjABBmMHFAAvlU7CbjIcAAAAAAAAAALSdjYaCAAAAAAAAAP7+8+bEsZmMhYKBAAUHCxMjQwABBAgFAgMGCQwNCgcLDg9Ob24ta2V5ZnJhbWUgZnJhbWVzAAAAcTEQAFoAAADFBAAAJQAAAHExEABaAAAAcwUAABsAAABxMRAAWgAAAHUFAAAxAAAAcTEQAFoAAAB5BQAANwAAAHExEABaAAAAgQUAAFYAAABxMRAAWgAAAIEFAAAvAAAAcTEQAFoAAAB5BQAAKwAAAHExEABaAAAAKAYAACYAAABxMRAAWgAAACoGAAAXAAAAcTEQAFoAAAAvBgAAFQAAAAUAAAAHAAAAcTEQAFoAAABXBgAAIAAAAHExEABaAAAAXgYAAC4AAABxMRAAWgAAAF4GAAAmAAAAcTEQAFoAAABqBgAAHQAAAHExEABaAAAAQQYAACoAAABxMRAAWgAAAEIGAAAbAAAAcTEQAFoAAABNBgAAGQAAAHExEABaAAAAvAUAAEoAAABxMRAAWgAAAL4FAAA1AAAAcTEQAFoAAAC+BQAAJQAAAHExEABaAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAOAAY4AgQJyAYKDtwJxMRAAWgAAAFEFAAARAAAAcTEQAFoAAABSBQAAEQAAAHExEABaAAAAUwUAABEAAABxMRAAWgAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIcTEQAFoAAAA/BQAAJQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3ExEABaAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPi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cmVlY2h1bmtTaXplYWxsQ2h1bmtCeXRlc2NodW5rc3NwbGF0RW5jb2RpbmdzaENvZGVDb3VudGNvbW1lbnRzdHJ1Y3QgUmFkTWV0YSB3aXRoIDExIGVsZW1lbnRzAAAA/pQRAB8AAAAAAAAACAAAAAQAAADpAQAAc3RydWN0IE1lYW5zc3RydWN0IFF1YXRzc3RydWN0IFNoMFYxc3RydWN0IFNoMFYyc3RydWN0IFNoTlYxc3RydWN0IFNoTlYyc3RydWN0IExhYmVsc3N0cnVjdCBNZWFuc1Yxc3RydWN0IFBjU29nc1Yxc3RydWN0IFBjU29nc1Yyc3RydWN0IFNjYWxlc1Yxc3RydWN0IFNjYWxlc1Yyc3RydWN0IFJhZENodW5rTWV0YWZpZWxkIGlkZW50aWZpZXJ2YXJpYW50IGlkZW50aWZpZXJnc3BsYXQAAAyWEQAGAAAAc3RydWN0IFJhZENodW5rUmFuZ2VvZmZzZXRiYXNlZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAAEKWEQAkAAAAc3RydWN0IFJhZENodW5rUHJvcGVydHlzdHJ1Y3QgU3BsYXRFbmNvZGluZ2Egc2VxdWVuY2VzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZ3JnYk1pbnJnYk1heGxuU2NhbGVNaW5sblNjYWxlTWF4c2gxTWF4c2gyTWF4c2gzTWF4bG9kT3BhY2l0eXN0cnVjdCBTZXRTcGxhdEVuY29kaW5nIHdpdGggOCBlbGVtZW50cwD4lhEAJwAAAMwxEABWAAAAbgAAAA4AAADMMRAAVgAAAGgAAAAOAAAAMB4QAFcAAABCAAAAHQAAABwbEABlAAAAUwAAABEAAACsKhAAXAAAANwBAAASAAAArCoQAFwAAADSAQAAPAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3ViZnJhbWUuY3VycmVudF9pbnRlcmxhY2VfaW5mby5pc19ub25lKCmsKhAAXAAAAPYBAAAJAAAArCoQAFwAAACQAQAAHQAAAKwqEABcAAAAkwIAADIAAACsKhAAXAAAABgCAAAvAAAACAAIAAgECAAEAAgEBAIEAAIABAICAQIAAQACAWFzc2VydGlvbiBmYWlsZWQ6IHNlbGYudW5maWx0ZXJp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TFkgbGlzdCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkUHJvcGVydHkgb3V0c2lkZSBvZiBlbGVtZW50Y2h1bmtNaXNzaW5nIHggcHJvcGVydHlNaXNzaW5nIHkgcHJvcGVydHlNaXNzaW5nIHogcHJvcGVydHlzY2FsZV8wTWlzc2luZyBzY2FsZV8wIHByb3BlcnR5c2NhbGVfMU1pc3Npbmcgc2NhbGVfMSBwcm9wZXJ0eXNjYWxlXzJNaXNzaW5nIHNjYWxlXzIgcHJvcGVydHlyb3RfMU1pc3Npbmcgcm90XzAgcHJvcGVydHlyb3RfMk1pc3Npbmcgcm90XzEgcHJvcGVydHlyb3RfM01pc3Npbmcgcm90XzIgcHJvcGVydHlyb3RfME1pc3Npbmcgcm90XzMgcHJvcGVydHlvcGFjaXR5TWlzc2luZyBvcGFjaXR5IHByb3BlcnR5Zl9kY18wTWlzc2luZyBmX2RjXzAgcHJvcGVydHlmX2RjXzFNaXNzaW5nIGZfZGNfMSBwcm9wZXJ0eWZfZGNfMk1pc3NpbmcgZl9kY18yIHByb3BlcnR5bGFiZWw/Pz8gTWlzc2luZyBsYWJlbCBmaWVsZGluc3RhbmNlX2xhYmVsPz8/IE1pc3NpbmcgaW5zdGFuY2VfbGFiZWwgcHJvcGVydHkAtA4QABQAAADfAwAAKAAAALQOEAAUAAAAzQMAACgAAAC0DhAAFAAAANYDAAAoAAAAtA4QABQAAACnBAAAJgAAALQOEAAUAAAAqAQAACcAAAC0DhAAFAAAAKoEAAAqAAAAtA4QABQAAACuBAAAKgAAALQOEAAUAAAAsgQAACoAAAC0DhAAFAAAALYEAAAqAAAAtA4QABQAAACgBAAAKgAAALQOEAAUAAAApAQAACoAAAC0DhAAFAAAAIgEAAAmAAAAtA4QABQAAACJBAAAJwAAALQOEAAUAAAAiwQAACoAAAC0DhAAFAAAAI8EAAAqAAAAtA4QABQAAACTBAAAKgAAALQOEAAUAAAAlwQAACoAAAC0DhAAFAAAAIEEAAApAAAAtA4QABQAAACFBAAAKQAAALQOEAAUAAAA0AQAACYAAAC0DhAAFAAAAM8EAAAnAAAAtA4QABQAAADMBAAAKgAAALQOEAAUAAAAyAQAACoAAAC0DhAAFAAAAL8EAAAqAAAAtA4QABQAAADSBAAAKgAAALQOEAAUAAAAMwMAABwAAAC0DhAAFAAAADQDAAAcAAAAtA4QABQAAAA1AwAAHAAAALQOEAAUAAAANgMAABsAAAC0DhAAFAAAADcDAAAbAAAAtA4QABQAAAA4AwAAGwAAALQOEAAUAAAAOQMAABkAAAC0DhAAFAAAADoDAAAZAAAAtA4QABQAAAA7AwAAGQAAALQOEAAUAAAAPAMAAB0AAAC0DhAAFAAAAD0DAAAaAAAAtA4QABQAAAA+AwAAGgAAALQOEAAUAAAAPwMAABoAAAC0DhAAFAAAAEADAAAaAAAATWlzc2luZyBjaHVuayBlbGVtZW50IGZvciBTdXBlclNwbGF0IFBMWW1pbl94TWlzc2luZyBtaW5feCBwcm9wZXJ0eW1pbl95TWlzc2luZyBtaW5feSBwcm9wZXJ0eW1pbl96TWlzc2luZyBtaW5feiBwcm9wZXJ0eW1heF94TWlzc2luZyBtYXhfeCBwcm9wZXJ0eW1heF95TWlzc2luZyBtYXhfeSBwcm9wZXJ0eW1heF96TWlzc2luZyBtYXhfeiBwcm9wZXJ0eW1pbl9zY2FsZV94TWlzc2luZyBtaW5fc2NhbGVfeCBwcm9wZXJ0eW1pbl9zY2FsZV95TWlzc2luZyBtaW5fc2NhbGVfeSBwcm9wZXJ0eW1pbl9zY2FsZV96TWlzc2luZyBtaW5fc2NhbGVfeiBwcm9wZXJ0eW1heF9zY2FsZV94TWlzc2luZyBtYXhfc2NhbGVfeCBwcm9wZXJ0eW1heF9zY2FsZV95TWlzc2luZyBtYXhfc2NhbGVfeSBwcm9wZXJ0eW1heF9zY2FsZV96TWlzc2luZyBtYXhfc2NhbGVfeiBwcm9wZXJ0eW1pbl9ybWluX2dtaW5fYm1heF9ybWF4X2dtYXhfYnBhY2tlZF9wb3NpdGlvbk1pc3NpbmcgcGFja2VkX3Bvc2l0aW9uIHByb3BlcnR5cGFja2VkX3JvdGF0aW9uTWlzc2luZyBwYWNrZWRfcm90YXRpb24gcHJvcGVydHlwYWNrZWRfc2NhbGVNaXNzaW5nIHBhY2tlZF9zY2FsZSBwcm9wZXJ0eXBhY2tlZF9jb2xvck1pc3NpbmcgcGFja2VkX2NvbG9yIHByb3BlcnR5AAC0DhAAFAAAAJECAAAfAAAAtA4QABQAAABTAwAAHwAAALQOEAAUAAAAWQMAAD0AAAC0DhAAFAAAAFkDAAAhAAAAtA4QABQAAABfAwAAPQAAALQOEAAUAAAAXwMAACEAAAC0DhAAFAAAAGUDAAA9AAAAtA4QABQAAABlAwAAIQAAAGNoYXJNaXNzaW5nIHJlZCBwcm9wZXJ0eU1pc3NpbmcgZ3JlZW4gcHJvcGVydHlNaXNzaW5nIGJsdWUgcHJvcGVydHlhbHBoYQMuEAAUAAAAJQQAADAAAAADLhAAFAAAAA0EAAAwAAAAAy4QABQAAAAuBQAALQAAAAMuEAAUAAAALgUAADoAAAADLhAAFAAAAFMFAAAtAAAAAy4QABQAAABTBQAAOgAAAAMuEAAUAAAAUwUAAEsAAAADLhAAFAAAAFMFAABcAAAAAy4QABQAAADsBAAAJwAAAAMuEAAUAAAABAUAAC0AAAADLhAAFAAAAAQFAAA6AAAAAy4QABQAAAC0BAAALgAAAAMuEAAUAAAA0gQAAC4AAAADLhAAFAAAAKAFAAA2AAAAFUludmFsaWQgUkFEIG1hZ2ljOiAweMMgAABpCAAAAAADLhAAFAAAADoFAAAtAAAAAy4QABQAAAA6BQAAOgAAAAMuEAAUAAAAWgQAAD8AAAADLhAAFAAAAEAEAAA/AAAAAy4QABQAAAAYBQAAOQAAAAMuEAAUAAAAGAUAAEYAAAADLhAAFAAAABgFAABXAAAAAy4QABQAAABrBQAALQAAAAMuEAAUAAAAawUAADoAAAADLhAAFAAAAGsFAABLAAAAAy4QABQAAABrBQAAXAAAAAMuEAAUAAAAfwQAABoAAAADLhAAFAAAAJgEAAAbAAAASW52YWxpZCBnemlwIGhlYWRlcgBmFBAAFQAAAGwBAAAcAAAAZhQQABUAAABsAQAANQAAAGYUEAAVAAAAbQEAABwAAABmFBAAFQAAAG0BAAA5AAAAZhQQABUAAABuAQAAHAAAAGYUEAAVAAAAbgEAADkAAABmFBAAFQAAAHYBAAAJAAAAZhQQABUAAAB3AQAACQAAAGYUEAAVAAAAeAEAAAkAAABmFBAAFQAAALMBAAAhAAAAZhQQABUAAAC0AQAAIQAAAGYUEAAVAAAAtQEAACEAAABmFBAAFQAAALcBAAAfAAAAZhQQABUAAAC9AQAACQAAAGYUEAAVAAAAvgEAAAkAAABmFBAAFQAAAL8BAAAJAAAAZhQQABUAAADjAQAAIgAAAGYUEAAVAAAA4wEAAAkAAABmFBAAFQAAAOQBAAAmAAAAZhQQABUAAADkAQAACQAAAGYUEAAVAAAA5QEAACYAAABmFBAAFQAAAOUBAAAJAAAAZhQQABUAAADmAQAAJQAAAGYUEAAVAAAAzAEAACoAAABmFBAAFQAAAMwBAAAhAAAAZhQQABUAAADMAQAACQAAAGYUEAAVAAAAzQEAAC4AAABmFBAAFQAAAM0BAAAlAAAAZhQQABUAAADNAQAACQAAAGYUEAAVAAAAzgEAAC4AAABmFBAAFQAAAM4BAAAlAAAAZhQQABUAAADOAQAACQAAAGYUEAAVAAAAzwEAACsAAABmFBAAFQAAACcCAAAgAAAAZhQQABUAAAAnAgAAOwAAAGYUEAAVAAAAOQIAAEQAAABmFBAAFQAAADkCAAAVAAAAZhQQABUAAAA0AgAARAAAAGYUEAAVAAAANAIAABUAAABmFBAAFQAAAC8CAABDAAAAZhQQABUAAAAvAgAAFQAAAGYUEAAVAAAA/AEAACAAAABmFBAAFQAAAPwBAAA7AAAAZhQQABUAAAAOAgAARAAAAGYUEAAVAAAADgIAADUAAABmFBAAFQAAAA4CAAAVAAAAZhQQABUAAAAJAgAARAAAAGYUEAAVAAAACQIAADUAAABmFBAAFQAAAAkCAAAVAAAAZhQQABUAAAAEAgAAQwAAAGYUEAAVAAAABAIAADQAAABmFBAAFQAAAAQCAAAVAAAAZhQQABUAAACmAQAAJAAAAGYUEAAVAAAApgEAAAkAAABmFBAAFQAAAKcBAAAoAAAAZhQQABUAAACnAQAACQAAAGYUEAAVAAAAqAEAACgAAABmFBAAFQAAAKgBAAAJAAAAZhQQABUAAACRAQAAKAAAAGYUEAAVAAAAkQEAAB8AAABmFBAAFQAAAJEBAAAJAAAAZhQQABUAAACSAQAALAAAAGYUEAAVAAAAkgEAACMAAABmFBAAFQAAAJIBAAAJAAAAZhQQABUAAACTAQAALAAAAGYUEAAVAAAAkwEAACMAAABmFBAAFQAAAJMBAAAJAAAA8hIQABcAAACkAAAADgAAAPISEAAXAAAAlAAAABQAAADyEhAAFwAAAJwAAAAZAAAAc3B6c3BsYXRrc3BsYXRwY3NvZ3N6aXByYWQAQaL+xgALAoA/AEG2/sYACwKAPwBByv7GAAvNFoA/AACAP3kyEAAYAAAA9gAAABwAAAB5MhAAGAAAAPYAAAAqAAAAhCgQAEwAAADiAAAAFAAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5AAAAAAQAAAAEAAAAXAIAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90AAAJKxAASQAAAHYCAAARAAAAXQIAAAwAAAAEAAAAXgIAAF8CAABgAgAAlB0QAEsAAACNBAAACQAAAIQoEABMAAAA4gAAADEAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtaMARACgAAAAkAAAAAAAAAAIAAACQwBEAmAEAAAwAAAAEAAAAYQIAAGICAABjAgAAAAAAAAgAAAAEAAAAZAIAAGUCAABmAgAAZwIAAGgCAAAQAAAABAAAAGkCAABqAgAAawIAAGwCAABtaWQgPiBsZW4AAABtXcvWLFDrY3hBpldxG4u5K4FbAb2GUewMtMKc5MnHBGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAMsuEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADLLhAAKgAAALcEAAANAAAAcndsb2NrIG92ZXJmbG93ZWQgcmVhZCBsb2Nrc50VEABdAAAAFQAAACwAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcmNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AAAA4RQQAFwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AAB5IhAAVgAAACMBAAAtAAAAAQAAAAAAAADTIAAAaAEAACAgICAgICAgICAgICBhdCAKwyAAAGgEAAI6IADTIAAAaAEAAyAtIAAgICAgICA8dW5rbm93bj7BIACAYABjYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tpbmcgdGhyZWFkAAAAzSMQAEwAAACQAAAACQAAAO+/vQBTKxAAZAAAAGcBAAAwAAAAc3Rkb3V0TGF6eUxvY2sgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZCciEABRAAAAngEAAAUAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAVi0QAEwAAAAmAAAADQAAAFdvdWxkQmxvY2sAAAAAAAAIAAAABAAAAG0CAAB1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UA0SgQAEwAAACKAQAAHQAAAG4CAAAQAAAABAAAAG8CAABwAgAAT3MAAAAAAAAEAAAABAAAAHECAABjb2RlAAAAAAEAAAABAAAAcgIAAGtpbmSYAQAADAAAAAQAAABzAgAAbWVzc2FnZUtpbmRFcnJvcgAAAAAIAAAABAAAAHQCAAAAAAAABAAAAAQAAAB1AgAAQ3VzdG9tcGFuaWNrZWQgYXQgOgoZIRAAXQAAABYBAAApAAAAmAEAAAwAAAAEAAAAdgIAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWSUHRAASwAAAFwDAAAUAAAAcndsb2NrIGhhcyBub3QgYmVlbiBsb2NrZWQgZm9yIHJlYWRpbmcAAJ0VEABdAAAAPgAAAAkAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABuJBAAZAAAAHwAAAARAAAAbiQQAGQAAACJAAAAEQAAAHcCAAAMAAAABAAAAHgCAAAAAAAABAAAAAQAAAB5AgAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3IAQaCVxwALmw0BAAAAyQEAAFRyeUZyb21JbnRFcnJvcmZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgAAt8oRABsAAAAlAAAAAgAAANTKEQAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAhAAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuKClaSVA2NCBmb290ZXIgaW5kaWNhdGVzIG1vcmUgZmlsZXMgb24gdGhpcyBkaXNrIHRoYW4gaW4gdGhlIHdob2xlIGFyY2hpdmVJbnZhbGlkIGNlbnRyYWwgZGlyZWN0b3J5IHNpemUgb3Igb2Zmc2V0NzQzMjEwLy4tZ/JCQ+UsKyopKCcmJSQjIiE4IB8eHRz/lKSViKCbrd3ehnroytfg0NzMu7ezsaiyyOLDmriufni/ncKqvaKhlsGOiauwuae6cK/AvJyMj3uFgJOKknLfl/nY7uz949rm94e08en29OeL9fP768nE8NaYts21fxvU09LV5MWpn4OsaVBiYGFRz5F0c5CCmXlrhG1ufG9SbHaNcYF3faV1XGpTSGNdQU+m7aPHvuHRy8bZ287q+J7v/////////////////////////////////////////////////////////////////////////////////////0F0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAAPhUQAF4AAABrAAAADQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgT25jZSBzdGF0ZfsVEABbAAAAOgAAABIAAABDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5ZmxhZ3MgYW5kIGxlbiBkb24ndCBtYXRjaCBpbiBleHRlbmRlZCB0aW1lc3RhbXAgZmllbGROVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgc2l6ZU5URlMgZXh0cmEgZmllbGQgaGFzIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSB0YWdOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IGV4Y2VlZHMgZGVjbGFyZWQgbGVuZ3RoAAB2LhAAVAAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoQUVTIGV4dHJhIGZpZWxkIHRydW5jYXRlZEludmFsaWQgQUVTIGVuY3J5cHRpb24gc3RyZW5ndGhJbnZhbGlkIEFFUyB2ZW5kb3IgdmVyc2lvbkludmFsaWQgQUVTIHZlbmRvckFFUyBleHRyYSBkYXRhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IHRydW5jYXRlZEV4dHJhIGZpZWxkIGhlYWRlciB0cnVuY2F0ZWRJbnZhbGlkIGNoZWNrc3Vtc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3ROb25lU29tZQAAAEEqEABqAAAAwwAAAAkAAABBKhAAagAAALwAAAAqAAAAQSoQAGoAAAC5AAAAKgAAAFIPEABiAAAAMQIAABsAAABSDxAAYgAAADICAAAdAAAAUg8QAGIAAAB0AQAAKQAAAFIPEABiAAAAeQEAABwAAABSDxAAYgAAAHkBAAAtAAAAUg8QAGIAAACAAQAAMAAAAFIPEABiAAAASwEAACkAAABSDxAA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").buffer; +const WASM_MODULE = WebAssembly.compile(WASM); +let initialized = false; +const initialization = __wbg_init({ module_or_path: WASM_MODULE }).then( + (_) => { + initialized = true; + } +); +function isInitialized() { + return initialized; +} +const jsContent = '(function() {\n "use strict";\n class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n }\n if (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n }\n function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = /* @__PURE__ */ new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_rs_bg.js": import0\n };\n }\n const ChunkDecoderFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += ", " + debugString(val[i]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n let cachedFloat32ArrayMemory0 = null;\n function getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x) {\n return x === void 0 || x === null;\n }\n function passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n const rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk\n };\n async function onMessage(event) {\n const {\n id,\n name,\n args\n } = event.data;\n try {\n const handler = rpcHandlers[name];\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n const sendStatus = (data) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) }\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n }\n function sortSplats16({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n function sortSplats32({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n async function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n }) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576;\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length))\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : void 0,\n credentials: withCredentials ? "include" : "same-origin"\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch "${url}": ${response.status} ${response.statusText}`\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get("Content-Length") || "0"\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk2 = await readNextChunk;\n if (nextChunk2.length === 0) {\n break;\n }\n decoder.push(nextChunk2);\n loaded += nextChunk2.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error("No url or fileBytes provided");\n }\n const decoded = decoder.finish();\n return decoded;\n }\n function toPackedResult(packed) {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n },\n splatEncoding: packed.splatEncoding\n };\n }\n async function loadPackedSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toPackedResult(decoded2);\n if (result2.splatEncoding.lodOpacity) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n const result2 = toPackedResult(\n decoded.to_packedsplats_lod()\n );\n return { lodSplats: result2 };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toPackedResult(decoded.to_packedsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked);\n return result;\n }\n function toExtResult(packed) {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n labels: packed.labels,\n instances: packed.instances,\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n }\n };\n }\n async function loadExtSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toExtResult(decoded2);\n if (result2.extra.lodTree) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod())\n };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toExtResult(decoded.to_extsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked);\n return result;\n }\n async function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n filter,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n filter,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n function newLodTree({\n capacity\n }) {\n const { lodId } = new_lod_tree(capacity);\n return { lodId };\n }\n function newSharedLodTree({\n lodId\n }) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId);\n return { lodId: newLodId };\n }\n function initLodTree({\n numSplats,\n lodTree\n }) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree);\n return { lodId, chunkToPage };\n }\n function disposeLodTree({ lodId }) {\n dispose_lod_tree(lodId);\n }\n function updateLodTrees({\n ranges\n }) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData: lodTreeData2 }) => lodTreeData2);\n update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData\n );\n }\n function traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n traverseMode\n }) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId)\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 4294967295)\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error("Incorrect array size for viewToObjectCols");\n }\n return instance.viewToObjectCols;\n })\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale)\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate)\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0)\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov)\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate)\n );\n const lodFunction = traverseMode === "dynamic" ? dynamic_traverse_lod_trees : traverse_lod_trees;\n const result = lodFunction(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs\n );\n const { instanceIndices, chunks, pixelLimit } = result;\n const indices = keyInstances.reduce(\n (indices2, [key, _instance], index) => {\n indices2[key] = instanceIndices[index];\n return indices2;\n },\n {}\n );\n return {\n keyIndices: indices,\n chunks,\n pixelLimit\n };\n }\n function getLodTreeLevel({\n lodId,\n level\n }) {\n return get_lod_tree_level(lodId, level);\n }\n let nextChunkWaiter = (_chunk) => {\n };\n async function nextChunk({ chunk }) {\n nextChunkWaiter(chunk);\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n async function initialize() {\n let resolveWaitForModule;\n const waitForModule = new Promise((resolve) => {\n resolveWaitForModule = resolve;\n });\n const pending = [];\n const bufferMessage = (event) => {\n if (event.data.name === "init-wasm") {\n resolveWaitForModule(event.data.module);\n return;\n }\n pending.push(event);\n };\n self.addEventListener("message", bufferMessage);\n await __wbg_init({ module_or_path: await waitForModule });\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=worker-QdpqHGuR.js.map\n'; +const blob = typeof self !== "undefined" && self.Blob && new Blob([jsContent], { type: "text/javascript;charset=utf-8" }); +function WorkerWrapper(options) { + let objURL; + try { + objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob); + if (!objURL) throw ""; + const worker = new Worker(objURL, { + name: options == null ? void 0 : options.name }); - super(geometry, material); - this.renderSize = new THREE__namespace.Vector2(); - this.lastFrame = -1; - this.updateTimeoutId = -1; - this.orderingTexture = null; - this.maxSplats = 0; - this.activeSplats = 0; - this.accumulators = []; - this.sorting = false; - this.sortDirty = false; - this.lastSortTime = 0; - this.sortWorker = null; - this.sortTimeoutId = -1; - this.sortedCenter = new THREE__namespace.Vector3().setScalar(Number.NEGATIVE_INFINITY); - this.sortedDir = new THREE__namespace.Vector3().setScalar(0); - this.readback32 = new Uint32Array(0); - this.lastLodRaycastTime = 0; - this.lodWorker = null; - this.lodMeshes = []; - this.lodDirty = false; - this.lodIds = /* @__PURE__ */ new Map(); - this.lodIdToSplats = /* @__PURE__ */ new Map(); - this.lodInitQueue = []; - this.lodInstances = /* @__PURE__ */ new Map(); - this.lodUpdates = []; - this.lastTraverseTime = 0; - this.pagerId = 0; - this.superXY = 1; - this.flushAfterGenerate = false; - this.flushAfterRead = false; - this.readPause = 1; - this.sortPause = 0; - this.sortDelay = 0; - this.pageSizeWarning = false; - this.material = material; - this.uniforms = uniforms; - this.frustumCulled = false; - this.renderer = options.renderer; - this.onDirty = options.onDirty; - this.dirty = true; - this.autoUpdate = options.autoUpdate ?? true; - this.preUpdate = options.preUpdate ?? true; - this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); - this.minPixelRadius = options.minPixelRadius ?? 0; - this.maxPixelRadius = options.maxPixelRadius ?? 512; - this.accumExtSplats = options.accumExtSplats ?? false; - this.covSplats = options.covSplats ?? false; - this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); - this.enable2DGS = options.enable2DGS ?? false; - this.preBlurAmount = options.preBlurAmount ?? 0; - this.blurAmount = options.blurAmount ?? 0.3; - this.focalDistance = options.focalDistance ?? 0; - this.apertureAngle = options.apertureAngle ?? 0; - this.falloff = options.falloff ?? 1; - this.clipXY = options.clipXY ?? 1.4; - this.focalAdjustment = options.focalAdjustment ?? 1; - this.encodeLinear = options.encodeLinear ?? false; - this.sortRadial = options.sortRadial ?? true; - this.minSortIntervalMs = options.minSortIntervalMs ?? 0; - this.enableLod = options.enableLod ?? true; - this.enableDriveLod = options.enableDriveLod ?? this.enableLod; - this.enableLodFetching = options.enableLodFetching ?? true; - this.lodSplatCount = options.lodSplatCount; - this.lodSplatScale = options.lodSplatScale ?? 1; - this.lodRenderScale = options.lodRenderScale ?? 1; - this.lodInflate = options.lodInflate ?? false; - this.pagedExtSplats = options.pagedExtSplats ?? false; - const defaultPages = isMobile() ? isIos() ? 96 : 128 : 256; - this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536; - this.numLodFetchers = options.numLodFetchers ?? 3; - this.behindFoveate = options.behindFoveate ?? 0.2; - this.coneFov0 = options.coneFov0 ?? 90; - this.coneFov = options.coneFov ?? 120; - this.coneFoveate = options.coneFoveate ?? 0.4; - this.lodRaycast = options.lodRaycast === void 0 ? isMobile() ? 1e4 : 25e3 : options.lodRaycast; - this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500; - this.clock = options.clock ? cloneClock(options.clock) : new THREE__namespace.Clock(); - const accumulatorOptions = { - extSplats: this.accumExtSplats, - covSplats: this.covSplats - }; - this.display = new SplatAccumulator(accumulatorOptions); - this.current = this.display; - this.accumulators.push(new SplatAccumulator(accumulatorOptions)); - this.accumulators.push(new SplatAccumulator(accumulatorOptions)); - if (options.target) { - const { - width, - height, - doubleBuffer, - superXY: origSuperXY, - ...origTargetOptions - } = options.target; - const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1)); - if (width * superXY > 8192 || height * superXY > 8192) { - throw new Error("Target size too large"); + worker.addEventListener("error", () => { + (self.URL || self.webkitURL).revokeObjectURL(objURL); + }); + return worker; + } catch (e) { + return new Worker( + "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent), + { + name: options == null ? void 0 : options.name } - this.superXY = superXY; - const superWidth = width * superXY; - const superHeight = height * superXY; - const targetOptions = { - format: THREE__namespace.RGBAFormat, - type: THREE__namespace.UnsignedByteType, - colorSpace: THREE__namespace.SRGBColorSpace, - ...origTargetOptions - }; - this.target = new THREE__namespace.WebGLRenderTarget( - superWidth, - superHeight, - targetOptions - ); - if (doubleBuffer) { - this.backTarget = new THREE__namespace.WebGLRenderTarget( - superWidth, - superHeight, - targetOptions - ); + ); + } finally { + objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); + } +} +const _SplatWorker = class _SplatWorker { + constructor() { + this.queue = null; + this.messages = {}; + this.worker = new WorkerWrapper(); + this.worker.onmessage = (event) => this.onMessage(event); + WASM_MODULE.then((module2) => { + this.worker.postMessage({ name: "init-wasm", module: module2 }); + }); + } + onMessage(event) { + var _a2; + const { id, result, error, status } = event.data; + const promise = this.messages[id]; + if (promise) { + if (error !== void 0) { + delete this.messages[id]; + promise.reject(error); + } else if (status !== void 0) { + (_a2 = promise.onStatus) == null ? void 0 : _a2.call(promise, status); + } else { + delete this.messages[id]; + promise.resolve(result); } - this.encodeLinear = options.encodeLinear ?? true; } } - static makeUniforms() { - const uniforms = { - // // number of active splats to render - // numSplats: { value: 0 }, - // Size of render viewport in pixels - renderSize: { value: new THREE__namespace.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new THREE__namespace.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new THREE__namespace.Vector3() }, - renderToViewBasis: { value: new THREE__namespace.Matrix3() }, - renderToViewOffset: { value: new THREE__namespace.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.5 * (1 / 255) }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: false }, - // Enable ray-splat max response evaluation - // enableRayEval: { value: false }, - // Inflate LoD splats so that opacity <= 1.0 - lodInflate: { value: false }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: false }, - // Back-to-front sort ordering of splat indices - ordering: { type: "t", value: _SparkRenderer.emptyOrdering }, - enableExtSplats: { value: false }, - enableCovSplats: { value: false }, - // Gsplat collection to render - extSplats: { type: "t", value: SplatAccumulator.emptyTexture }, - extSplats2: { type: "t", value: SplatAccumulator.emptyTexture }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Debug flag that alternates each frame - debugFlag: { value: false } - }; - return uniforms; + tryExclusive(callback) { + return this.queue == null ? this.exclusive(callback) : null; + } + async exclusive(callback) { + const queue = this.queue; + if (queue != null) { + await new Promise((resolve) => { + queue.push(() => resolve(void 0)); + }); + } else { + this.queue = []; + } + try { + return await callback(this); + } finally { + if (this.queue != null) { + if (this.queue.length === 0) { + this.queue = null; + } else { + const waiter = this.queue.shift(); + waiter(); + } + } + } + } + async call(name, args, options = {}) { + const id = ++_SplatWorker.currentId; + const promise = new Promise((resolve, reject) => { + this.messages[id] = { resolve, reject, onStatus: options.onStatus }; + }); + this.worker.postMessage( + { id, name, args }, + { transfer: getTransferable(args) } + ); + return await promise; } dispose() { - if (this.target) { - this.target.dispose(); - this.target = void 0; + this.worker.terminate(); + const messages = Object.values(this.messages); + this.messages = {}; + for (const message of messages) { + message.reject(new Error("Worker terminate")); } - if (this.backTarget) { - this.backTarget.dispose(); - this.backTarget = void 0; + } +}; +_SplatWorker.currentId = 0; +let SplatWorker = _SplatWorker; +class NewSplatWorkerPool { + constructor(maxWorkers = 4) { + this.numWorkers = 0; + this.freelist = []; + this.queue = []; + this.maxWorkers = maxWorkers; + } + async withWorker(callback) { + const worker = await this.allocWorker(); + try { + return await callback(worker); + } finally { + this.freeWorker(worker); } - if (this.orderingTexture) { - this.orderingTexture.dispose(); - this.orderingTexture = null; + } + async allocWorker() { + const worker = this.freelist.pop(); + if (worker) { + return worker; + } + if (this.numWorkers < this.maxWorkers) { + const worker2 = new SplatWorker(); + this.numWorkers += 1; + return worker2; + } + return new Promise((resolve) => { + this.queue.push(resolve); + }); + } + freeWorker(worker) { + if (this.numWorkers > this.maxWorkers) { + this.numWorkers -= 1; + return; + } + const waiter = this.queue.shift(); + if (waiter) { + waiter(worker); + return; + } + this.freelist.push(worker); + } +} +const workerPool = new NewSplatWorkerPool(); +const _PackedSplats = class _PackedSplats { + constructor(options = {}) { + this.maxSplats = 0; + this.numSplats = 0; + this.packedArray = null; + this.maxSh = 3; + this.isInitialized = false; + this.target = null; + this.source = null; + this.needsUpdate = true; + this.extra = {}; + this.dyno = new DynoPackedSplats({ packedSplats: this }); + this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({ + key: "rgbMinMaxLnScaleMinMax", + value: new THREE__namespace.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX), + update: (value) => { + var _a2, _b2, _c, _d; + value.set( + ((_a2 = this.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, + ((_b2 = this.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, + ((_c = this.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, + ((_d = this.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX + ); + return value; + } + }); + this.dynoNumSh = new DynoInt({ + key: "numSh", + value: 0, + update: () => { + return Math.min(this.getNumSh(), this.maxSh); + } + }); + this.dynoShMax = new DynoVec3({ + key: "shMax", + value: new THREE__namespace.Vector3(), + update: (value) => { + var _a2, _b2, _c; + value.set( + ((_a2 = this.splatEncoding) == null ? void 0 : _a2.sh1Max) ?? 1, + ((_b2 = this.splatEncoding) == null ? void 0 : _b2.sh2Max) ?? 1, + ((_c = this.splatEncoding) == null ? void 0 : _c.sh3Max) ?? 1 + ); + return value; + } + }); + this.initialized = Promise.resolve(this); + this.reinitialize(options); + } + reinitialize(options) { + this.isInitialized = false; + this.extra = {}; + this.maxSplats = options.maxSplats ?? 0; + this.splatEncoding = options.splatEncoding; + this.lod = options.lod; + this.nonLod = options.nonLod; + if (options.url || options.fileBytes || options.stream || options.construct) { + this.initialized = this.asyncInitialize(options).then(() => { + this.isInitialized = true; + return this; + }); + } else { + this.initialize(options); + this.isInitialized = true; + this.initialized = Promise.resolve(this); } - const accumulators = /* @__PURE__ */ new Set(); - accumulators.add(this.display); - accumulators.add(this.current); - for (const accumulator of this.accumulators) { - accumulators.add(accumulator); + } + initialize(options) { + this.extra = options.extra ?? {}; + this.splatEncoding = options.splatEncoding ?? this.splatEncoding; + this.lodSplats = options.lodSplats; + if (options.packedArray) { + this.packedArray = options.packedArray; + this.numSplats = options.numSplats ?? this.packedArray.length / 4; + this.maxSplats = Math.floor(this.packedArray.length / 4); + this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + this.numSplats = Math.min( + this.maxSplats, + options.numSplats ?? Number.POSITIVE_INFINITY + ); + } else { + this.maxSplats = options.maxSplats ?? 0; + this.numSplats = 0; } - for (const accumulator of accumulators) { - accumulator.dispose(); + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + construct, + lod, + nonLod, + lodAbove + } = options; + this.lod = lod; + this.nonLod = nonLod; + const loader = new SplatLoader(); + if (fileBytes || url || stream) { + await loader.loadInternalAsync({ + packedSplats: this, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress: options.onProgress, + lodAbove + }); } - const instances = this.lodInstances.values(); - this.lodInstances.clear(); - for (const instance of instances) { - instance.texture.dispose(); + if (construct) { + const maybePromise = construct(this); + if (maybePromise instanceof Promise) { + await maybePromise; + } } - if (this.sortWorker) { - this.sortWorker.dispose(); - this.sortWorker = null; + } + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. + dispose() { + if (this.target) { + this.target.dispose(); + this.target.texture.source.data = null; + this.target = null; } - if (this.lodWorker) { - this.lodWorker.dispose(); - this.lodWorker = null; + if (this.source) { + this.source.dispose(); + this.source.source.data = null; + this.source = null; } - if (this.pager) { - this.pager.dispose(); - this.pager = void 0; + this.packedArray = null; + for (const key in this.extra) { + const dyno2 = this.extra[key]; + if (dyno2 instanceof DynoUniform) { + const texture2 = dyno2.value; + if (texture2 == null ? void 0 : texture2.isTexture) { + texture2.dispose(); + texture2.source.data = null; + } + } } + this.extra = {}; + this.disposeLodSplats(); } - setDirty() { - var _a2; - if (!this.dirty) { - this.dirty = true; - (_a2 = this.onDirty) == null ? void 0 : _a2.call(this); + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; + } + hasRgbDir() { + return Math.min(this.getNumSh(), this.maxSh) > 0; + } + getNumSh() { + return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3; + } + setMaxSh(maxSh) { + this.maxSh = maxSh; + } + fetchSplat({ + index, + viewOrigin + }) { + let gsplat = readPackedSplat(this.dyno, index); + if (this.hasRgbDir() && viewOrigin) { + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures(); + let { rgb } = evaluatePackedSH({ + coord: splatTexCoord(index), + viewDir, + numSh: this.dynoNumSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax: this.dynoShMax + }); + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); } + return gsplat; } - onBeforeRender(renderer, scene, camera) { - var _a2; - const spark = _SparkRenderer.sparkOverride ?? this; - const frame = renderer.info.render.frame; - const isNewFrame = frame !== spark.lastFrame; - spark.lastFrame = frame; - if (spark.target) { - spark.renderSize.set(spark.target.width, spark.target.height); - } else { - const renderSize = renderer.getDrawingBufferSize(spark.renderSize); - if (renderer.xr.isPresenting) { - if (renderSize.x === 1 && renderSize.y === 1) { - const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; - if (baseLayer) { - renderSize.x = baseLayer.framebufferWidth; - renderSize.y = baseLayer.framebufferHeight; - } - } - } + ensureShTextures() { + if (!this.extra.sh1) { + return {}; } - this.uniforms.renderSize.value.copy(spark.renderSize); - const typedCamera = camera; - this.uniforms.near.value = typedCamera.near; - this.uniforms.far.value = typedCamera.far; - const geometry = this.geometry; - geometry.instanceCount = spark.activeSplats; - const accumToWorld = new THREE__namespace.Matrix4(); - if (!this.display.extSplats) { - accumToWorld.makeTranslation(spark.display.viewOrigin); + let sh1Texture = this.extra.sh1Texture; + if (!sh1Texture) { + let sh1 = this.extra.sh1; + const { width, height, depth, maxSplats } = getTextureSize( + sh1.length / 2 + ); + if (sh1.length < maxSplats * 2) { + const newSh1 = new Uint32Array(maxSplats * 2); + newSh1.set(sh1); + this.extra.sh1 = newSh1; + sh1 = newSh1; + } + const texture2 = new THREE__namespace.DataArrayTexture(sh1, width, height, depth); + texture2.format = THREE__namespace.RGIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + sh1Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh1" + }); + this.extra.sh1Texture = sh1Texture; } - const cameraToWorld = camera.matrixWorld.clone(); - const worldToCamera = cameraToWorld.invert(); - const accumToCamera = worldToCamera.multiply(accumToWorld); - accumToCamera.decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new THREE__namespace.Vector3() - ); - this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera); - this.uniforms.maxStdDev.value = spark.maxStdDev; - this.uniforms.minPixelRadius.value = spark.minPixelRadius; - this.uniforms.maxPixelRadius.value = spark.maxPixelRadius; - this.uniforms.minAlpha.value = spark.minAlpha; - this.uniforms.enable2DGS.value = spark.enable2DGS; - this.uniforms.lodInflate.value = spark.lodInflate; - this.uniforms.preBlurAmount.value = spark.preBlurAmount; - this.uniforms.blurAmount.value = spark.blurAmount; - this.uniforms.focalDistance.value = spark.focalDistance; - this.uniforms.apertureAngle.value = spark.apertureAngle; - this.uniforms.falloff.value = spark.falloff; - this.uniforms.clipXY.value = spark.clipXY; - this.uniforms.focalAdjustment.value = spark.focalAdjustment; - this.uniforms.encodeLinear.value = spark.encodeLinear; - this.uniforms.ordering.value = spark.orderingTexture ?? _SparkRenderer.emptyOrdering; - this.uniforms.enableExtSplats.value = this.display.extSplats; - this.uniforms.enableCovSplats.value = this.display.covSplats; - if (this.display.extSplats) { - const extSplats = spark.display.getTextures(); - this.uniforms.extSplats.value = extSplats[0]; - this.uniforms.extSplats2.value = extSplats[1]; - } else { - const packedSplats = spark.display.getTextures(); - this.uniforms.extSplats.value = packedSplats[0]; - this.uniforms.extSplats2.value = packedSplats[0]; + if (!this.extra.sh2) { + return { sh1Texture }; } - this.uniforms.time.value = spark.display.time; - this.uniforms.deltaTime.value = spark.display.deltaTime; - this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; - if (spark.autoUpdate && isNewFrame) { - const preUpdate = spark.preUpdate && !renderer.xr.isPresenting; - const useCamera = renderer.xr.isPresenting ? renderer.xr.getCamera() : camera; - if (preUpdate) { - spark.updateInternal({ - scene, - camera: useCamera, - autoUpdate: true - }); - } else { - if (spark.updateTimeoutId === -1) { - spark.updateTimeoutId = setTimeout(() => { - spark.updateTimeoutId = -1; - spark.updateInternal({ - scene, - camera: useCamera, - autoUpdate: true - }); - }, 1); - } + let sh2Texture = this.extra.sh2Texture; + if (!sh2Texture) { + let sh2 = this.extra.sh2; + const { width, height, depth, maxSplats } = getTextureSize( + sh2.length / 4 + ); + if (sh2.length < maxSplats * 4) { + const newSh2 = new Uint32Array(maxSplats * 4); + newSh2.set(sh2); + this.extra.sh2 = newSh2; + sh2 = newSh2; } + const texture2 = new THREE__namespace.DataArrayTexture(sh2, width, height, depth); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + sh2Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh2" + }); + this.extra.sh2Texture = sh2Texture; } - spark.dirty = false; - } - clearSplats() { - this.activeSplats = 0; - this.display.numSplats = 0; - this.setDirty(); - } - async update({ - scene, - camera - }) { - await this.updateInternal({ scene, camera, autoUpdate: false }); - } - // /** - // * Provide additional cameras to prefetch paged splat chunks without - // * affecting main LOD selection. - // */ - // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { - // const next = cameras?.filter(Boolean) ?? []; - // const sameCameras = - // this.prefetchCameras.length === next.length && - // this.prefetchCameras.every((camera, index) => camera === next[index]); - // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { - // return; - // } - // this.prefetchCameras = next; - // this.prefetchLodScale = lodScaleMultiplier; - // this.invalidatePrefetchCache(); - // } - // /** - // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are - // * added or removed from the scene. - // */ - // invalidatePrefetchCache() { - // this.prefetchMeshesCacheScene = undefined; - // } - async updateInternal({ - scene, - camera, - autoUpdate - }) { - const renderer = this.renderer; - const time = this.time ?? this.clock.getElapsedTime(); - const center = camera.getWorldPosition(new THREE__namespace.Vector3()); - const dir = camera.getWorldDirection(new THREE__namespace.Vector3()); - const viewChanged = center.distanceTo(this.sortedCenter) > 1e-3 || dir.dot(this.sortedDir) < 0.999; - const next = this.accumulators.pop(); - if (!next) { - throw new Error("No next accumulator"); + if (!this.extra.sh3) { + return { sh1Texture, sh2Texture }; } - if (next === this.current) { - throw new Error( - "Next accumulator is the same as the current accumulator" + let sh3Texture = this.extra.sh3Texture; + if (!sh3Texture) { + let sh3 = this.extra.sh3; + const { width, height, depth, maxSplats } = getTextureSize( + sh3.length / 4 ); + if (sh3.length < maxSplats * 4) { + const newSh3 = new Uint32Array(maxSplats * 4); + newSh3.set(sh3); + this.extra.sh3 = newSh3; + sh3 = newSh3; + } + const texture2 = new THREE__namespace.DataArrayTexture(sh3, width, height, depth); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + sh3Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh3" + }); + this.extra.sh3Texture = sh3Texture; } - const { version, mappingVersion, visibleGenerators, generate } = next.prepareGenerate({ - renderer, - scene, - time, - camera, - sortRadial: this.sortRadial ?? true, - renderSize: this.renderSize, - previous: this.current, - lodInstances: this.enableLod ? this.lodInstances : void 0 - }); - let doUpdate = true; - const needsUpdate = viewChanged || version !== this.current.version; - const mappingUpdated = mappingVersion !== this.display.mappingVersion; - if (autoUpdate && !needsUpdate) { - doUpdate = false; + return { sh1Texture, sh2Texture, sh3Texture }; + } + // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(numSplats) { + const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(numSplats, 2 * this.maxSplats) + ); + const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4; + if (!this.packedArray || targetSize > currentSize) { + this.maxSplats = getTextureSize(targetSize).maxSplats; + const newArray2 = new Uint32Array(this.maxSplats * 4); + if (this.packedArray) { + newArray2.set(this.packedArray); + } + this.packedArray = newArray2; } - if (mappingUpdated && this.sorting) { - doUpdate = false; + return this.packedArray; + } + // Ensure the extra array for the given level is large enough to hold numSplats + ensureSplatsSh(level, numSplats) { + let wordsPerSplat; + let key; + if (level === 0) { + return this.ensureSplats(numSplats); } - if (!doUpdate) { - this.accumulators.push(next); + if (level === 1) { + wordsPerSplat = 2; + key = "sh1"; + } else if (level === 2) { + wordsPerSplat = 4; + key = "sh2"; + } else if (level === 3) { + wordsPerSplat = 4; + key = "sh3"; } else { - generate(); - if (this.flushAfterGenerate) { - const gl = renderer.getContext(); - gl.flush(); - } - if (this.display.mappingVersion === next.mappingVersion) { - this.accumulators.push(this.display); - this.display = next; - } else { - if (this.display !== this.current) { - this.accumulators.push(this.current); - } + throw new Error(`Invalid level: ${level}`); + } + let maxSplats = !this.extra[key] ? 0 : this.extra[key].length / wordsPerSplat; + const targetSize = numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats); + if (!this.extra[key] || targetSize > maxSplats) { + maxSplats = getTextureSize(targetSize).maxSplats; + const newArray2 = new Uint32Array(maxSplats * wordsPerSplat); + if (this.extra[key]) { + newArray2.set(this.extra[key]); } - this.current = next; - this.sortDirty = true; - this.setDirty(); + this.extra[key] = newArray2; } - if (this.enableDriveLod) { - this.driveLod({ visibleGenerators, camera, scene }); + return this.extra[key]; + } + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(index) { + if (!this.packedArray || index >= this.numSplats) { + throw new Error("Invalid index"); } - await this.driveSort(); + return unpackSplat(this.packedArray, index, this.splatEncoding); } - async driveSort() { - if (this.sorting || !this.sortDirty) { + // Set all PackedSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(index, center, scales, quaternion, opacity, color) { + const packedSplats = this.ensureSplats(index + 1); + setPackedSplat( + packedSplats, + index, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + this.numSplats = Math.max(this.numSplats, index + 1); + } + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(center, scales, quaternion, opacity, color) { + const packedSplats = this.ensureSplats(this.numSplats + 1); + setPackedSplat( + packedSplats, + this.numSplats, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + ++this.numSplats; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.packedArray || !this.numSplats) { return; } - if (this.sortTimeoutId !== -1) { - clearTimeout(this.sortTimeoutId); - this.sortTimeoutId = -1; + for (let i = 0; i < this.numSplats; ++i) { + const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color + ); } - const now = performance.now(); - const nextSortTime = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : now; - if (now < nextSortTime) { - this.sortTimeoutId = setTimeout(() => { - this.sortTimeoutId = -1; - this.driveSort(); - }, nextSortTime - now); - return; + } + // Ensures our PackedSplats.target render target has enough space to generate + // maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate(maxSplats) { + if (this.target && (maxSplats ?? 1) <= this.maxSplats) { + return false; } - this.sorting = true; - this.sortDirty = false; - this.lastSortTime = now; - if (this.readPause > 0) { - await new Promise((resolve) => setTimeout(resolve, this.readPause)); + if (this.target) { + this.target.dispose(); } - const current = this.current; - this.sortedCenter.copy(current.viewOrigin); - this.sortedDir.copy(current.viewDirection); - const { numSplats, maxSplats } = current; - const rows = Math.max(1, Math.ceil(maxSplats / 16384)); - const orderingMaxSplats = rows * 16384; - this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats); - const ordering = new Uint32Array(this.maxSplats); - const readback = Readback.ensureBuffer(maxSplats, this.readback32); - this.readback32 = readback; - await this.readbackDepth({ - current, - renderer: this.renderer, - numSplats, - readback + const textureSize2 = getTextureSize(maxSplats ?? 1); + const { width, height, depth } = textureSize2; + this.maxSplats = textureSize2.maxSplats; + this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, { + depthBuffer: false, + stencilBuffer: false, + generateMipmaps: false, + magFilter: THREE__namespace.NearestFilter, + minFilter: THREE__namespace.NearestFilter }); - if (this.sortPause > 0) { - await new Promise((resolve) => setTimeout(resolve, this.sortPause)); - } - if (!this.sortWorker) { - this.sortWorker = new SplatWorker(); - } - const result = await this.sortWorker.call("sortSplats32", { - numSplats, - readback, - ordering + this.target.texture.format = THREE__namespace.RGBAIntegerFormat; + this.target.texture.type = THREE__namespace.UnsignedIntType; + this.target.texture.internalFormat = "RGBA32UI"; + this.target.scissorTest = true; + return true; + } + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(splatCounts) { + let maxSplats = 0; + const mapping = splatCounts.map((numSplats) => { + const base = maxSplats; + const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + maxSplats += rounded; + return { base, count: numSplats }; }); - if (this.sortDelay > 0) { - await new Promise((resolve) => setTimeout(resolve, this.sortDelay)); + return { maxSplats, mapping }; + } + // Returns a THREE.DataArrayTexture representing the PackedSplats content as + // a Uint32x4 data array texture (2048 x 2048 x depth in size) + getTexture() { + if (this.target) { + return this.target.texture; } - this.readback32 = result.readback; - this.activeSplats = result.activeSplats; - if (this.orderingTexture) { - if (rows > this.orderingTexture.image.height) { - this.orderingTexture.dispose(); - this.orderingTexture = null; - } + if (this.source || this.packedArray) { + const source = this.maybeUpdateSource(); + return source; } - if (!this.orderingTexture) { - const orderingTexture = new THREE__namespace.DataTexture( - result.ordering, - 4096, - rows, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType - ); - orderingTexture.internalFormat = "RGBA32UI"; - orderingTexture.needsUpdate = true; - this.orderingTexture = orderingTexture; - } else { - const renderer = this.renderer; - const gl = renderer.getContext(); - if (!renderer.properties.has(this.orderingTexture)) { - this.orderingTexture.needsUpdate = true; - } else { - const props = renderer.properties.get(this.orderingTexture); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("ordering texture not found"); + return _PackedSplats.getEmptyArray; + } + // Check if source texture needs to be created/updated + maybeUpdateSource() { + if (!this.packedArray) { + throw new Error("No packed splats"); + } + if (this.needsUpdate || !this.source) { + this.needsUpdate = false; + if (this.source) { + const { width, height, depth } = this.source.image; + if (this.maxSplats !== width * height * depth) { + this.source.dispose(); + this.source = null; } - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - // data, - result.ordering + } + if (!this.source) { + const { width, height, depth } = getTextureSize(this.maxSplats); + this.source = new THREE__namespace.DataArrayTexture( + this.packedArray, + width, + height, + depth ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); + this.source.format = THREE__namespace.RGBAIntegerFormat; + this.source.type = THREE__namespace.UnsignedIntType; + this.source.internalFormat = "RGBA32UI"; + this.source.needsUpdate = true; + } else if (this.packedArray.buffer !== this.source.image.data.buffer) { + this.source.image.data = new Uint8Array(this.packedArray.buffer); } + this.source.needsUpdate = true; } - if (this.current.mappingVersion === current.mappingVersion) { - if (this.current.mappingVersion !== this.display.mappingVersion) { - this.accumulators.push(this.display); - this.display = this.current; + return this.source; + } + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(generator) { + let program = _PackedSplats.generatorProgram.get(generator); + if (!program) { + const graph = dynoBlock( + { index: "int" }, + {}, + ({ index }, _outputs, { roots }) => { + generator.inputs.index = index; + const gsplat = generator.outputs.gsplat; + const output = outputPackedSplat( + gsplat, + this.dynoRgbMinMaxLnScaleMinMax + ); + roots.push(output); + return void 0; + } + ); + if (!_PackedSplats.programTemplate) { + _PackedSplats.programTemplate = new DynoProgramTemplate( + getShaders().computeUvec4Template + ); } + program = new DynoProgram({ + graph, + inputs: { index: "_index" }, + outputs: { output: "target" }, + template: _PackedSplats.programTemplate + }); + Object.assign(program.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } + }); + _PackedSplats.generatorProgram.set(generator, program); } - this.sorting = false; - this.setDirty(); - this.driveSort(); + const material = program.prepareMaterial(); + _PackedSplats.fullScreenQuad.material = material; + return { program, material }; } - ensureLodWorker() { - if (!this.lodWorker) { - this.lodWorker = new SplatWorker(); - } - return this.lodWorker; + saveRenderState(renderer) { + return { + target: renderer.getRenderTarget(), + xrEnabled: renderer.xr.enabled, + autoClear: renderer.autoClear + }; } - defaultSplatTarget() { - return isOculus() ? 5e5 : isVisionPro() ? 75e4 : isAndroid() ? 1e6 : isIos() ? 15e5 : 25e5; + resetRenderState(renderer, state) { + renderer.setRenderTarget(state.target); + renderer.xr.enabled = state.xrEnabled; + renderer.autoClear = state.autoClear; } - driveLod({ - visibleGenerators, - camera, - scene + // Executes a dyno program specified by generator which is any DynoBlock that + // maps { index: "int" } to { gsplat: Gsplat }. This is called in + // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for + // SplatGenerator instances whose version is newer than what was generated + // for it last time. + generate({ + generator, + base, + count, + renderer }) { - var _a2, _b2; - const defaultSplatCount = this.defaultSplatTarget(); - const splatCount = this.lodSplatCount ?? defaultSplatCount; - const maxSplats = splatCount * this.lodSplatScale; - let pixelScaleLimit = 0; - if (camera instanceof THREE__namespace.PerspectiveCamera) { - const tanYfov = Math.tan(0.5 * camera.fov * Math.PI / 180); - pixelScaleLimit = 2 * tanYfov / this.renderSize.y; - } else if (camera instanceof THREE__namespace.OrthographicCamera) { - const viewHeight = (camera.top - camera.bottom) / camera.zoom; - const viewWidth = (camera.right - camera.left) / camera.zoom; - const pxY = viewHeight / Math.max(1, this.renderSize.y); - const pxX = viewWidth / Math.max(1, this.renderSize.x); - pixelScaleLimit = Math.min(pxX, pxY); + if (!this.target) { + throw new Error("Target must be initialized with ensureSplats"); } - pixelScaleLimit *= this.lodRenderScale; - const viewPos = new THREE__namespace.Vector3(); - const viewQuat = new THREE__namespace.Quaternion(); - this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE__namespace.Vector3()); - if (this.lodPosOverride) { - viewPos.copy(this.lodPosOverride); + if (base + count > this.maxSplats) { + throw new Error("Base + count exceeds maxSplats"); } - if (this.lodQuatOverride) { - viewQuat.copy(this.lodQuatOverride).normalize(); + const { program, material } = this.prepareProgramMaterial(generator); + program.update(); + const renderState = this.saveRenderState(renderer); + const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + material.uniforms.targetBase.value = base; + material.uniforms.targetCount.value = count; + while (base < nextBase) { + const layer = Math.floor(base / layerSize); + material.uniforms.targetLayer.value = layer; + const layerBase = layer * layerSize; + const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) + ); + this.target.scissor.set( + 0, + layerYStart, + SPLAT_TEX_WIDTH, + layerYEnd - layerYStart + ); + renderer.setRenderTarget(this.target, layer); + renderer.xr.enabled = false; + renderer.autoClear = false; + _PackedSplats.fullScreenQuad.render(renderer); + base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); } - if (this.lastLod) { - if (this.lastLod.pixelScaleLimit !== pixelScaleLimit || this.lastLod.maxSplats !== maxSplats) { - this.lodDirty = true; - } - const distance2 = viewPos.distanceTo(this.lastLod.pos); - const distanceRamp = Math.max(0, 1 - distance2 / 1); - const dot2 = viewQuat.dot(this.lastLod.quat); - const quatRamp = Math.max(0, 1 - (1 - dot2) / 0.01); - const similarity = distanceRamp * quatRamp; - if (similarity < 0.999) { - this.lodDirty = true; - } + this.resetRenderState(renderer, renderState); + return { nextBase }; + } + disposeLodSplats() { + if (this.lodSplats) { + this.lodSplats.dispose(); + this.lodSplats = void 0; } - const lodMeshes = !this.enableLod ? [] : visibleGenerators.filter((generator) => { - var _a3, _b3; - return generator instanceof SplatMesh && (((_a3 = generator.packedSplats) == null ? void 0 : _a3.lodSplats) || ((_b3 = generator.extSplats) == null ? void 0 : _b3.lodSplats) || generator.paged) && generator.enableLod !== false; + } + async createLodSplats({ + rgbaArray, + quality + } = {}) { + const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; + const packedArray = this.packedArray.slice(); + const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; + const extra = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }; + const decoded = await workerPool.withWorker(async (worker) => { + return await worker.call( + quality ? "qualityLodPackedSplats" : "tinyLodPackedSplats", + { + numSplats: this.numSplats, + packedArray, + extra, + lodBase, + rgba, + encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING + } + ); }); - const hasPaged = lodMeshes.some((mesh) => mesh.paged); - if (this.lodMeshes.length !== lodMeshes.length) { - this.lodDirty = true; - } else { - if (lodMeshes.some( - (m, i) => m !== this.lodMeshes[i].mesh || m.version > this.lodMeshes[i].version - )) { - this.lodDirty = true; - } + const lodSplats = new _PackedSplats(decoded); + if (this.lodSplats) { + this.lodSplats.dispose(); } - this.lodMeshes = lodMeshes.map((mesh) => ({ - mesh, - version: mesh.version + 1 - })); - this.lodInitQueue = []; - const now = performance.now(); - for (const mesh of lodMeshes) { - const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; - if (splats) { - const record = this.lodIds.get(splats); - if (record) { - record.lastTouched = now; - } else { - this.lodInitQueue.push(splats); - } + this.lodSplats = lodSplats; + this.nonLod = true; + this.lod = quality ? "quality" : true; + } + extractSplats(indices, pageColoring) { + const maxSplats = getTextureSize(indices.length).maxSplats; + const newSplats = new _PackedSplats({ maxSplats }); + for (let i = 0; i < indices.length; i++) { + const splat = this.getSplat(indices[i]); + if (pageColoring) { + let hue = (indices[i] >>> 16) * 0.61803398875; + hue = hue - Math.floor(hue); + const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); + const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); + const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); + splat.color.r *= r; + splat.color.g *= g; + splat.color.b *= b; } + newSplats.pushSplat( + splat.center, + splat.scales, + splat.quaternion, + splat.opacity, + splat.color + ); } - this.ensureLodWorker().tryExclusive(async (worker) => { - if (hasPaged && !this.pager) { - this.pager = new SplatPager({ - renderer: this.renderer, - extSplats: this.pagedExtSplats, - maxSplats: this.maxPagedSplats, - numFetchers: this.numLodFetchers - }); - const { lodId } = await worker.call("newLodTree", { - capacity: this.pager.maxSplats - }); - this.pagerId = lodId; - } - if (this.pager) { - for (const { mesh } of this.lodMeshes) { - if (mesh.paged && !mesh.paged.pager) { - mesh.paged.pager = this.pager; - } - } - } - if (this.lodInitQueue.length > 0) { - const lodInitQueue = this.lodInitQueue; - this.lodInitQueue = []; - while (lodInitQueue.length > 0) { - const splats = lodInitQueue.shift(); - if (splats) { - await this.initLodTree(worker, splats); - this.lodDirty = true; - } - } - } - if (this.pager) { - const updates = this.pager.consumeLodTreeUpdates(); - for (const { splats, page, chunk, numSplats, lodTree } of updates) { - const record = this.lodIds.get(splats); - if (record) { - if (lodTree && chunk === 0) { - record.rootPage = page; - } - this.lodUpdates.push({ - lodId: record.lodId, - pageBase: page * this.pager.pageSplats, - chunkBase: chunk * this.pager.pageSplats, - count: numSplats, - lodTreeData: lodTree - }); - } - } - } - if (this.lodUpdates.length > 0) { - const lodUpdates = this.lodUpdates; - this.lodUpdates = []; - await worker.call("updateLodTrees", { ranges: lodUpdates }); - this.lodDirty = true; - } - if (this.lodDirty) { - const now2 = performance.now(); - const deltaPred = new THREE__namespace.Vector3(); - if (this.lastLod) { - const deltaTime = Math.max(1, now2 - this.lastLod.timestamp); - deltaPred.copy(viewPos).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / deltaTime); - } - this.lastLod = { - pos: viewPos, - quat: viewQuat, - pixelScaleLimit, - maxSplats, - timestamp: now2 - }; - this.lodDirty = false; - await this.updateLodInstances( - worker, - deltaPred, - lodMeshes, - maxSplats, - viewPos, - viewQuat, - pixelScaleLimit + return newSplats; + } +}; +_PackedSplats.getEmptyArray = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_PackedSplats.programTemplate = null; +_PackedSplats.generatorProgram = /* @__PURE__ */ new WeakMap(); +_PackedSplats.fullScreenQuad = new Pass_js.FullScreenQuad( + new THREE__namespace.RawShaderMaterial({ visible: false }) +); +_PackedSplats.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_PackedSplats.emptyUint32x2 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 2); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +let PackedSplats = _PackedSplats; +class DynoPackedSplats extends DynoUniform { + constructor({ packedSplats } = {}) { + super({ + key: "packedSplats", + type: TPackedSplats, + globals: () => [definePackedSplats], + value: { + textureArray: PackedSplats.getEmptyArray, + numSplats: 0, + rgbMinMaxLnScaleMinMax: new THREE__namespace.Vector4( + 0, + 1, + LN_SCALE_MIN, + LN_SCALE_MAX + ), + lodOpacity: false + }, + update: (value) => { + var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; + value.textureArray = ((_a2 = this.packedSplats) == null ? void 0 : _a2.getTexture()) ?? PackedSplats.getEmptyArray; + value.numSplats = ((_b2 = this.packedSplats) == null ? void 0 : _b2.numSplats) ?? 0; + value.rgbMinMaxLnScaleMinMax.set( + ((_d = (_c = this.packedSplats) == null ? void 0 : _c.splatEncoding) == null ? void 0 : _d.rgbMin) ?? 0, + ((_f = (_e = this.packedSplats) == null ? void 0 : _e.splatEncoding) == null ? void 0 : _f.rgbMax) ?? 1, + ((_h = (_g = this.packedSplats) == null ? void 0 : _g.splatEncoding) == null ? void 0 : _h.lnScaleMin) ?? LN_SCALE_MIN, + ((_j = (_i = this.packedSplats) == null ? void 0 : _i.splatEncoding) == null ? void 0 : _j.lnScaleMax) ?? LN_SCALE_MAX ); - this.currentLod = this.lastLod; - this.setDirty(); + value.lodOpacity = ((_l = (_k = this.packedSplats) == null ? void 0 : _k.splatEncoding) == null ? void 0 : _l.lodOpacity) ?? false; + return value; } - await this.cleanupLodTrees(worker); }); + this.packedSplats = packedSplats; } - async initLodTree(worker, splats) { - if (splats instanceof PackedSplats || splats instanceof ExtSplats) { - const { lodId } = await worker.call("initLodTree", { - numSplats: splats.numSplats ?? 0, - lodTree: splats.extra.lodTree.slice() - }); - this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); - this.lodIdToSplats.set(lodId, splats); - } else { - const { lodId } = await worker.call("newSharedLodTree", { - lodId: this.pagerId - }); - this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); - this.lodIdToSplats.set(lodId, splats); - } +} +const defineEvalPackedSH1 = unindent(` + vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { + // Extract sint7 values packed into 2 x uint32 + vec3 sh1_0 = vec3(ivec3( + int(packedData.x << 25u) >> 25, + int(packedData.x << 18u) >> 25, + int(packedData.x << 11u) >> 25 + )); + vec3 sh1_1 = vec3(ivec3( + int(packedData.x << 4u) >> 25, + int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, + int(packedData.y << 22u) >> 25 + )); + vec3 sh1_2 = vec3(ivec3( + int(packedData.y << 15u) >> 25, + int(packedData.y << 8u) >> 25, + int(packedData.y << 1u) >> 25 + )); + + vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + return rgb * (sh1Max / 63.0); } - async updateLodInstances(worker, deltaPred, lodMeshes, maxSplats, viewPos, viewQuat, pixelScaleLimit) { - const uuidToMesh = /* @__PURE__ */ new Map(); - const cameraToWorld = new THREE__namespace.Matrix4().compose( - viewPos, - viewQuat, - new THREE__namespace.Vector3().setScalar(1) - ); - const instances = lodMeshes.reduce( - (instances2, mesh) => { - var _a2, _b2; - uuidToMesh.set(mesh.uuid, mesh); - const viewToObject = mesh.matrixWorld.clone().invert().multiply(cameraToWorld); - const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; - if (!splats) { - return instances2; - } - const record = this.lodIds.get(splats); - if (!record) { - return instances2; - } - if (this.pager && mesh.paged && record.rootPage === void 0) { - return instances2; - } - instances2[mesh.uuid] = { - instanceId: mesh.uuid, - lodId: record.lodId, - rootPage: record.rootPage, - viewToObjectCols: viewToObject.elements, - lodScale: mesh.lodScale, - behindFoveate: mesh.behindFoveate ?? this.behindFoveate, - coneFov0: mesh.coneFov0 ?? this.coneFov0, - coneFov: mesh.coneFov ?? this.coneFov, - coneFoveate: mesh.coneFoveate ?? this.coneFoveate - }; - return instances2; - }, - {} - ); - const traverseStart = performance.now(); - const result = await worker.call("traverseLodTrees", { - maxSplats, - pixelScaleLimit, - lastPixelLimit: this.lastPixelLimit, - instances - }); - this.lastTraverseTime = performance.now() - traverseStart; - const { keyIndices, chunks, pixelLimit } = result; - this.lastPixelLimit = pixelLimit; - const totalLodSplats = Object.values(keyIndices).reduce( - (sum, { numSplats }) => sum + numSplats, - 0 - ); - this.updateLodIndices(uuidToMesh, keyIndices); - if (this.pager) { - this.pager.processUploads(); - const pagedMeshes = lodMeshes.map((mesh) => { - if (!mesh.paged || !this.pager) { - return null; - } - const meshPosition = mesh.getWorldPosition(new THREE__namespace.Vector3()); - return { - splats: mesh.paged, - distance: meshPosition.distanceTo(viewPos) - }; - }).filter((result2) => result2 !== null); - if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) { - this.pageSizeWarning = true; - console.warn( - `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}` +`); +const defineEvalPackedSH2 = unindent(` + vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { + // Extract sint8 values packed into 4 x uint32 + vec3 sh2_0 = vec3(ivec3( + int(packedData.x << 24u) >> 24, + int(packedData.x << 16u) >> 24, + int(packedData.x << 8u) >> 24 + )); + vec3 sh2_1 = vec3(ivec3( + int(packedData.x) >> 24, + int(packedData.y << 24u) >> 24, + int(packedData.y << 16u) >> 24 + )); + vec3 sh2_2 = vec3(ivec3( + int(packedData.y << 8u) >> 24, + int(packedData.y) >> 24, + int(packedData.z << 24u) >> 24 + )); + vec3 sh2_3 = vec3(ivec3( + int(packedData.z << 16u) >> 24, + int(packedData.z << 8u) >> 24, + int(packedData.z) >> 24 + )); + vec3 sh2_4 = vec3(ivec3( + int(packedData.w << 24u) >> 24, + int(packedData.w << 16u) >> 24, + int(packedData.w << 8u) >> 24 + )); + + vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + return rgb * (sh2Max / 127.0); + } +`); +const defineEvalPackedSH3 = unindent(` + vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { + // Extract sint6 values packed into 4 x uint32 + vec3 sh3_0 = vec3(ivec3( + int(packedData.x << 26u) >> 26, + int(packedData.x << 20u) >> 26, + int(packedData.x << 14u) >> 26 + )); + vec3 sh3_1 = vec3(ivec3( + int(packedData.x << 8u) >> 26, + int(packedData.x << 2u) >> 26, + int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 + )); + vec3 sh3_2 = vec3(ivec3( + int(packedData.y << 22u) >> 26, + int(packedData.y << 16u) >> 26, + int(packedData.y << 10u) >> 26 + )); + vec3 sh3_3 = vec3(ivec3( + int(packedData.y << 4u) >> 26, + int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, + int(packedData.z << 24u) >> 26 + )); + vec3 sh3_4 = vec3(ivec3( + int(packedData.z << 18u) >> 26, + int(packedData.z << 12u) >> 26, + int(packedData.z << 6u) >> 26 + )); + vec3 sh3_5 = vec3(ivec3( + int(packedData.z) >> 26, + int(packedData.w << 26u) >> 26, + int(packedData.w << 20u) >> 26 + )); + vec3 sh3_6 = vec3(ivec3( + int(packedData.w << 14u) >> 26, + int(packedData.w << 8u) >> 26, + int(packedData.w << 2u) >> 26 + )); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + return rgb * (sh3Max / 31.0); + } +`); +function evaluatePackedSH({ + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax +}) { + return new Dyno({ + inTypes: { + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3Texture: "usampler2DArray", + shMax: "vec3" + }, + outTypes: { rgb: "vec3" }, + inputs: { + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax + }, + globals: () => [ + defineEvalPackedSH1, + defineEvalPackedSH2, + defineEvalPackedSH3 + ], + statements: ({ inputs, outputs }) => { + const lines = ["vec3 rgb = vec3(0.0);"]; + if (inputs.sh1Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 1) { + vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x); + rgb += sh1Rgb; + `) ); - } - pagedMeshes.sort((a, b) => a.distance - b.distance); - this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({ - splats, - chunk: 0 - })); - for (const [lodId, chunk] of chunks) { - const splats = this.lodIdToSplats.get(lodId); - if (splats instanceof PagedSplats) { - if (chunk !== 0) { - this.pager.fetchPriority.push({ splats, chunk }); + if (inputs.sh2Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 2) { + vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y); + rgb += sh2Rgb; + `) + ); + if (inputs.sh3Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 3) { + vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z); + rgb += sh3Rgb; + } + `) + ); } + lines.push("}"); } + lines.push("}"); } - this.pager.autoDrive = this.enableLodFetching; - if (this.enableLodFetching) { - this.pager.driveFetchers(); - } + lines.push(`${outputs.rgb} = rgb;`); + return lines; } - if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { - this.lastLodRaycastTime = performance.now(); - const traverseStart2 = performance.now(); - const result2 = await worker.call("traverseLodTrees", { - maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)), - pixelScaleLimit, - instances - }); - performance.now() - traverseStart2; - const { keyIndices: keyIndices2 } = result2; - Object.values(keyIndices2).reduce( - (sum, { numSplats }) => sum + numSplats, - 0 + }).outputs; +} +class SplatLoader extends THREE.Loader { + constructor(manager) { + super(manager); + this.fileLoader = new THREE.FileLoader(manager); + } + load(url, onLoad, onProgress, onError) { + return this.loadInternal({ + url, + onLoad, + onProgress, + onError + }); + } + async loadAsync(url, onProgress) { + return new Promise((resolve, reject) => { + this.load( + url, + (decoded) => { + resolve(decoded); + }, + onProgress, + reject ); - for (const [uuid, countIndices] of Object.entries(keyIndices2)) { - const mesh = uuidToMesh.get(uuid); - mesh.raycastIndices = countIndices; - } - } + }); } - async cleanupLodTrees(worker) { - const DISPOSE_TIMEOUT_MS = 3e3; - const now = performance.now(); - let oldest = null; - for (const [splats, record] of this.lodIds.entries()) { - if (oldest == null || record.lastTouched < oldest.lastTouched) { - oldest = { - splats, - lastTouched: record.lastTouched, - lodId: record.lodId - }; - } - } - if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) { - return; + parse(packedSplats) { + return new SplatMesh({ packedSplats }); + } + loadInternal({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onLoad, + onProgress, + onError, + lod, + nonLod, + lodAbove, + lodBase + }) { + if (fileBytes instanceof ArrayBuffer) { + fileBytes = new Uint8Array(fileBytes); } - this.lodIds.delete(oldest.splats); - this.lodIdToSplats.delete(oldest.lodId); - for (const [mesh, instance] of this.lodInstances.entries()) { - if (instance.lodId === oldest.lodId) { - instance.texture.dispose(); - this.lodInstances.delete(mesh); + const resolvedURL = fileBytes ? void 0 : this.manager.resolveURL((this.path ?? "") + (url ?? "")); + let readStream = stream == null ? void 0 : stream.getReader(); + this.manager.itemStart(resolvedURL ?? ""); + workerPool.withWorker(async (worker) => { + const splatsLod = (packedSplats == null ? void 0 : packedSplats.lod) ?? (extSplats == null ? void 0 : extSplats.lod); + if (splatsLod) { + lod = splatsLod; } - } - await worker.call("disposeLodTree", { lodId: oldest.lodId }); - } - updateLodIndices(uuidToMesh, keyIndices) { - for (const [uuid, countIndices] of Object.entries(keyIndices)) { - const { lodId, numSplats, indices } = countIndices; - const mesh = uuidToMesh.get(uuid); - if (mesh.paged) { - mesh.paged.update(numSplats, indices); - } else { - let instance = this.lodInstances.get(mesh); - if (instance) { - if (indices.length > instance.indices.length) { - instance.texture.dispose(); - instance = void 0; - } - } - const rows = Math.ceil(indices.length / 16384); - if (!instance) { - const capacity = rows * 16384; - if (indices.length !== capacity) { - throw new Error("Indices length != capacity"); - } - const texture2 = new THREE__namespace.DataTexture( - indices, - 4096, - rows, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType + const splatsNonLod = (packedSplats == null ? void 0 : packedSplats.nonLod) ?? (extSplats == null ? void 0 : extSplats.nonLod); + if (splatsNonLod !== void 0) { + nonLod = splatsNonLod; + } + const onStatus = async (data) => { + const { loaded, total } = data; + if (loaded !== void 0 && onProgress) { + onProgress( + new ProgressEvent("progress", { + lengthComputable: total !== 0, + loaded, + total + }) ); - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - instance = { lodId, numSplats, indices, texture: texture2 }; - this.lodInstances.set(mesh, instance); - } else { - instance.numSplats = numSplats; - const renderer = this.renderer; - const gl = renderer.getContext(); - if (renderer.properties.has(instance.texture)) { - const props = renderer.properties.get(instance.texture); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("lodIndices texture not found"); + } + if (data.nextChunk) { + let chunk; + if (!readStream) { + chunk = new Uint8Array(0); + } else { + const { done, value } = await readStream.read(); + if (done) { + readStream.releaseLock(); + readStream = void 0; + chunk = new Uint8Array(0); + } else { + chunk = value; } - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - indices - ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); } + worker.call("nextChunk", { chunk }); + } + }; + const basedUrl = resolvedURL ? new URL(resolvedURL, window.location.href).toString() : void 0; + const decoded = await worker.call( + extSplats ? "loadExtSplats" : "loadPackedSplats", + { + url: basedUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + fileBytes: fileBytes == null ? void 0 : fileBytes.slice(), + fileType, + pathName: resolvedURL || fileName, + chunked: stream !== void 0, + chunkedLength: streamLength, + encoding: packedSplats == null ? void 0 : packedSplats.splatEncoding, + lod, + lodBase, + nonLod, + lodAbove + }, + { onStatus } + ); + if (decoded.lodSplats) { + if (extSplats) { + decoded.lodSplats = new ExtSplats({ + ...decoded.lodSplats + }); + } else { + decoded.lodSplats = new PackedSplats({ + ...decoded.lodSplats, + maxSplats: packedSplats == null ? void 0 : packedSplats.maxSplats + }); } } - mesh.updateMappingVersion(); - } + if (extSplats) { + const initExtSplats = { + // ...(initExt ?? {}), + ...decoded + }; + extSplats.initialize(initExtSplats); + onLoad == null ? void 0 : onLoad(extSplats); + } else { + const initSplats = { + // ...(init ?? {}), + ...decoded + }; + if (packedSplats) { + packedSplats.initialize(initSplats); + onLoad == null ? void 0 : onLoad(packedSplats); + } else { + onLoad == null ? void 0 : onLoad(new PackedSplats(initSplats)); + } + } + }).catch((error) => { + this.manager.itemError(resolvedURL ?? ""); + onError == null ? void 0 : onError(error); + }).finally(() => { + this.manager.itemEnd(resolvedURL ?? ""); + }); } - async readbackDepth({ - current, - renderer, - numSplats, - readback + async loadInternalAsync({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress, + lod, + nonLod, + lodAbove, + lodBase }) { - if (!renderer) { - throw new Error("No renderer"); - } - if (!current.target) { - throw new Error("No target"); - } - const roundedCount = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - if (readback.byteLength < roundedCount * 4) { - throw new Error( - `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}` - ); + return new Promise((resolve, reject) => { + this.loadInternal({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onLoad: resolve, + onProgress, + onError: reject, + lod, + nonLod, + lodAbove, + lodBase + }); + }); + } +} +function getSplatFileType(fileBytes) { + const view = new DataView(fileBytes.buffer); + const magic = view.getUint32(0, true); + if ((magic & 16777215) === 7957616) { + return SplatFileType.PLY; + } + if ((magic & 16777215) === 559903) { + const header = decompressPartialGzip(fileBytes, 4); + const gView = new DataView(header.buffer); + if (gView.getUint32(0, true) === 1347635022) { + return SplatFileType.SPZ; } - const readbackUint8 = new Uint8Array(readback.buffer); - const renderState = this.saveRenderState(renderer); - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - let baseIndex = 0; - const promises = []; - while (baseIndex < numSplats) { - const layer = Math.floor(baseIndex / layerSize); - const layerBase = layer * layerSize; - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH) - ); - const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4; - const subReadback = readbackUint8.subarray( - layerBase * 4, - layerBase * 4 + readbackSize - ); - renderer.setRenderTarget(current.target, layer); - const promise = renderer.readRenderTargetPixelsAsync( - current.target, - 0, - 0, - SPLAT_TEX_WIDTH, - layerYEnd, - subReadback, - void 0, - current.extSplats ? 2 : 1 - ); - promises.push(promise); - if (this.flushAfterRead) { - const gl = renderer.getContext(); - gl.flush(); - } - baseIndex += SPLAT_TEX_WIDTH * layerYEnd; + return void 0; + } + if (magic === 67324752) { + if (tryPcSogsZip(fileBytes)) { + return SplatFileType.PCSOGSZIP; } - this.resetRenderState(renderer, renderState); - return Promise.all(promises).then(() => readback); + return void 0; } - saveRenderState(renderer) { - return { - target: renderer.getRenderTarget(), - xrEnabled: renderer.xr.enabled, - autoClear: renderer.autoClear - }; + if (magic === 809779538) { + return SplatFileType.RAD; } - resetRenderState(renderer, state) { - renderer.setRenderTarget(state.target); - renderer.xr.enabled = state.xrEnabled; - renderer.autoClear = state.autoClear; + return void 0; +} +function getFileExtension(pathOrUrl) { + const noTrailing = pathOrUrl.split(/[?#]/, 1)[0]; + const lastSlash = Math.max( + noTrailing.lastIndexOf("/"), + noTrailing.lastIndexOf("\\") + ); + const filename = noTrailing.slice(lastSlash + 1); + const lastDot = filename.lastIndexOf("."); + if (lastDot <= 0 || lastDot === filename.length - 1) { + return ""; } - render(scene, camera) { - try { - _SparkRenderer.sparkOverride = this; - this.renderer.render(scene, camera); - } finally { - _SparkRenderer.sparkOverride = void 0; - } + return filename.slice(lastDot + 1).toLowerCase(); +} +function getSplatFileTypeFromPath(pathOrUrl) { + const extension = getFileExtension(pathOrUrl); + if (extension === "ply") { + return SplatFileType.PLY; } - renderTarget({ - scene, - camera - }) { - const target = this.backTarget ?? this.target; - if (!target) { - throw new Error("No target"); - } - const previousTarget = this.renderer.getRenderTarget(); - try { - this.renderer.setRenderTarget(target); - _SparkRenderer.sparkOverride = this; - this.renderer.render(scene, camera); - } finally { - _SparkRenderer.sparkOverride = void 0; - this.renderer.setRenderTarget(previousTarget); - } - if (target !== this.target) { - [this.target, this.backTarget] = [this.backTarget, this.target]; - } - return target; + if (extension === "spz") { + return SplatFileType.SPZ; } - // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). Subsequent calls to this.readTarget() - // will reuse the same buffers to minimize memory allocations. - async readTarget() { - if (!this.target) { - throw new Error("Must initialize with target"); - } - const { width, height } = this.target; - const byteSize = width * height * 4; - if (!this.superPixels || this.superPixels.length < byteSize) { - this.superPixels = new Uint8Array(byteSize); - } - const superPixels = this.superPixels; - await this.renderer.readRenderTargetPixelsAsync( - this.target, - 0, - 0, - width, - height, - superPixels - ); - const { superXY } = this; - if (superXY === 1) { - return superPixels; - } - const subWidth = width / superXY; - const subHeight = height / superXY; - const subSize = subWidth * subHeight * 4; - if (!this.targetPixels || this.targetPixels.length < subSize) { - this.targetPixels = new Uint8Array(subSize); - } - const targetPixels = this.targetPixels; - const super2 = superXY * superXY; - for (let y = 0; y < subHeight; y++) { - const row = y * subWidth; - for (let x = 0; x < subWidth; x++) { - const superCol = x * superXY; - let r = 0; - let g = 0; - let b = 0; - let a = 0; - for (let sy = 0; sy < superXY; sy++) { - const superRow = (y * superXY + sy) * width; - for (let sx = 0; sx < superXY; sx++) { - const superIndex = (superRow + superCol + sx) * 4; - r += superPixels[superIndex]; - g += superPixels[superIndex + 1]; - b += superPixels[superIndex + 2]; - a += superPixels[superIndex + 3]; - } - } - const pixelIndex = (row + x) * 4; - targetPixels[pixelIndex] = r / super2; - targetPixels[pixelIndex + 1] = g / super2; - targetPixels[pixelIndex + 2] = b / super2; - targetPixels[pixelIndex + 3] = a / super2; - } - } - return targetPixels; + if (extension === "splat") { + return SplatFileType.SPLAT; + } + if (extension === "ksplat") { + return SplatFileType.KSPLAT; } - async renderReadTarget({ - scene, - camera - }) { - this.renderTarget({ scene, camera }); - return this.readTarget(); + if (extension === "sog") { + return SplatFileType.PCSOGSZIP; } - // Renders out the scene to a cube map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces. - async renderCubeMap({ - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = true, - filter = false - }) { - if (!_SparkRenderer.cubeRender || _SparkRenderer.cubeRender.target.width !== size || _SparkRenderer.cubeRender.near !== near || _SparkRenderer.cubeRender.far !== far) { - if (_SparkRenderer.cubeRender) { - _SparkRenderer.cubeRender.target.dispose(); + if (extension === "rad") { + return SplatFileType.RAD; + } + return void 0; +} +function isPcSogs(input) { + return tryPcSogs(input) !== void 0; +} +function tryPcSogs(input) { + try { + let text; + if (typeof input === "string") { + text = input; + } else { + const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; + if (fileBytes.length > 65536) { + return void 0; } - const target2 = new THREE__namespace.WebGLCubeRenderTarget(size, { - format: THREE__namespace.RGBAFormat, - type: THREE__namespace.UnsignedByteType, - generateMipmaps: filter, - minFilter: filter ? THREE__namespace.LinearMipMapLinearFilter : THREE__namespace.LinearFilter, - magFilter: THREE__namespace.LinearFilter, - colorSpace: filter ? THREE__namespace.LinearSRGBColorSpace : THREE__namespace.SRGBColorSpace - }); - const cubeCamera2 = new THREE__namespace.CubeCamera(near, far, target2); - _SparkRenderer.cubeRender = { target: target2, cubeCamera: cubeCamera2, near, far }; - } - const { target, cubeCamera } = _SparkRenderer.cubeRender; - cubeCamera.position.copy(worldCenter); - const objectVisibility = /* @__PURE__ */ new Map(); - for (const object of hideObjects) { - objectVisibility.set(object, object.visible); - object.visible = false; - } - if (update) { - const tempCamera = new THREE__namespace.Camera(); - tempCamera.position.copy(worldCenter); - await this.update({ scene, camera: tempCamera }); + text = new TextDecoder().decode(fileBytes); } - try { - _SparkRenderer.sparkOverride = this; - cubeCamera.update(this.renderer, scene); - } finally { - _SparkRenderer.sparkOverride = void 0; + const json = JSON.parse(text); + if (!json || typeof json !== "object" || Array.isArray(json)) { + return void 0; } - for (const [object, visible] of objectVisibility.entries()) { - object.visible = visible; + const isVersion2 = json.version === 2; + for (const key of ["means", "scales", "quats", "sh0"]) { + if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) { + return void 0; + } + if (isVersion2) { + if (!json[key].files) { + return void 0; + } + if ((key === "scales" || key === "sh0") && !json[key].codebook) { + return void 0; + } + if (key === "means" && (!json[key].mins || !json[key].maxs)) { + return void 0; + } + } else { + if (!json[key].shape || !json[key].files) { + return void 0; + } + if (key !== "quats" && (!json[key].mins || !json[key].maxs)) { + return void 0; + } + } } - return target.texture; + return json; + } catch { + return void 0; } - async readCubeTargets() { - if (!_SparkRenderer.cubeRender) { - throw new Error("No cube render"); +} +function tryPcSogsZip(input) { + try { + const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; + let metaFilename = null; + const unzipped = unzipSync(fileBytes, { + filter: ({ name }) => { + const filename = name.split(/[\\/]/).pop(); + if (filename === "meta.json") { + metaFilename = name; + return true; + } + return false; + } + }); + if (!metaFilename) { + return void 0; } - const textures = _SparkRenderer.cubeRender.target.texture; - const promises = []; - const buffers = []; - for (let i = 0; i < textures.images.length; ++i) { - const { width, height } = textures.images[i]; - const byteSize = width * height * 4; - const readback = new Uint8Array(byteSize); - buffers.push(readback); - const promise = this.renderer.readRenderTargetPixelsAsync( - _SparkRenderer.cubeRender.target, - 0, - 0, - width, - height, - readback, - i - ); - promises.push(promise); + const json = tryPcSogs(unzipped[metaFilename]); + if (!json) { + return void 0; } - await Promise.all(promises); - return buffers; + return { name: metaFilename, json }; + } catch { + return void 0; } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = true - }) { - var _a2; - const cubeTexture = await this.renderCubeMap({ - scene, - worldCenter, - size, - near, - far, - hideObjects, - update, - filter: true - }); - if (!_SparkRenderer.pmrem) { - _SparkRenderer.pmrem = new THREE__namespace.PMREMGenerator(this.renderer); - } - return (_a2 = _SparkRenderer.pmrem) == null ? void 0 : _a2.fromCubemap(cubeTexture).texture; +} +class SplatData { + constructor({ maxSplats = 1 } = {}) { + this.numSplats = 0; + this.maxSplats = getTextureSize(maxSplats).maxSplats; + this.centers = new Float32Array(this.maxSplats * 3); + this.scales = new Float32Array(this.maxSplats * 3); + this.quaternions = new Float32Array(this.maxSplats * 4); + this.opacities = new Float32Array(this.maxSplats); + this.colors = new Float32Array(this.maxSplats * 3); } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(root, envMap) { - root.traverse((node) => { - if (node instanceof THREE__namespace.Mesh) { - if (Array.isArray(node.material)) { - for (const material of node.material) { - if (material instanceof THREE__namespace.MeshStandardMaterial) { - material.envMap = envMap; - } - } - } else { - if (node.material instanceof THREE__namespace.MeshStandardMaterial) { - node.material.envMap = envMap; - } - } - } - }); + pushSplat() { + const index = this.numSplats; + this.ensureIndex(index); + this.numSplats += 1; + return index; } - async getLodTreeLevel(splats, level, pageColoring = false) { - var _a2, _b2; - const instance = this.lodInstances.get(splats); - if (!instance) { - return null; - } - const result = await this.ensureLodWorker().exclusive(async (worker) => { - return await worker.call("getLodTreeLevel", { - lodId: instance.lodId, - level - }); - }); - if ((_a2 = splats.packedSplats) == null ? void 0 : _a2.lodSplats) { - const newSplats = splats.packedSplats.lodSplats.extractSplats( - result.indices, - pageColoring - ); - return new SplatMesh({ packedSplats: newSplats }); + unpushSplat(index) { + if (index === this.numSplats - 1) { + this.numSplats -= 1; + } else { + throw new Error("Cannot unpush splat from non-last position"); } - if ((_b2 = splats.extSplats) == null ? void 0 : _b2.lodSplats) { - const newSplats = splats.extSplats.lodSplats.extractSplats( - result.indices, - pageColoring - ); - return new SplatMesh({ extSplats: newSplats }); + } + ensureCapacity(numSplats) { + if (numSplats > this.maxSplats) { + const targetSplats = Math.max(numSplats, this.maxSplats * 2); + const newCenters = new Float32Array(targetSplats * 3); + const newScales = new Float32Array(targetSplats * 3); + const newQuaternions = new Float32Array(targetSplats * 4); + const newOpacities = new Float32Array(targetSplats); + const newColors = new Float32Array(targetSplats * 3); + newCenters.set(this.centers); + newScales.set(this.scales); + newQuaternions.set(this.quaternions); + newOpacities.set(this.opacities); + newColors.set(this.colors); + this.centers = newCenters; + this.scales = newScales; + this.quaternions = newQuaternions; + this.opacities = newOpacities; + this.colors = newColors; + if (this.sh1) { + const newSh1 = new Float32Array(targetSplats * 9); + newSh1.set(this.sh1); + this.sh1 = newSh1; + } + if (this.sh2) { + const newSh2 = new Float32Array(targetSplats * 15); + newSh2.set(this.sh2); + this.sh2 = newSh2; + } + if (this.sh3) { + const newSh3 = new Float32Array(targetSplats * 21); + newSh3.set(this.sh3); + this.sh3 = newSh3; + } + this.maxSplats = targetSplats; } - throw new Error( - "Only LoD-enabled PackedSplats and ExtSplats are supported" - ); } - get premultipliedAlpha() { - return this.material.premultipliedAlpha; + ensureIndex(index) { + this.ensureCapacity(index + 1); } - set premultipliedAlpha(value) { - if (this.material.premultipliedAlpha !== value) { - this.material.premultipliedAlpha = value; - this.material.needsUpdate = true; - } + setCenter(index, x, y, z) { + this.centers[index * 3] = x; + this.centers[index * 3 + 1] = y; + this.centers[index * 3 + 2] = z; } -}; -_SparkRenderer.emptyOrdering = (() => { - const numIndices = 4 * 4096 * 1; - const emptyArray = new Uint32Array(numIndices); - const texture2 = new THREE__namespace.DataTexture(emptyArray, 4096, 1); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SparkRenderer.cubeRender = null; -_SparkRenderer.pmrem = null; -let SparkRenderer = _SparkRenderer; -class PagedSplats { - constructor(options) { - var _a2; - this.pager = options.pager; - this.rootUrl = options.rootUrl ?? ""; - this.requestHeader = options.requestHeader; - this.withCredentials = options.withCredentials; - this.numSh = 0; - this.maxSh = ((_a2 = options.pager) == null ? void 0 : _a2.maxSh) ?? 3; - this.numSplats = 0; - this.dynoNumSplats = new DynoInt({ value: 0 }); - this.dynoIndices = new DynoUsampler2D({ - value: SplatPager.emptyIndicesTexture - }); - this.rgbMinMaxLnScaleMinMax = new DynoVec4({ - value: new THREE__namespace.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX) - }); - this.lodOpacity = new DynoBool({ - value: false - }); - this.dynoNumSh = new DynoInt({ value: 0 }); - this.shMax = new DynoVec3({ value: new THREE__namespace.Vector3() }); - this.fileBytes = options.fileBytes; - this.fileType = options.fileType; - if (!this.fileType && this.fileBytes) { - this.fileType = getSplatFileType(this.fileBytes); + setScale(index, scaleX, scaleY, scaleZ) { + this.scales[index * 3] = scaleX; + this.scales[index * 3 + 1] = scaleY; + this.scales[index * 3 + 2] = scaleZ; + } + setQuaternion(index, x, y, z, w) { + this.quaternions[index * 4] = x; + this.quaternions[index * 4 + 1] = y; + this.quaternions[index * 4 + 2] = z; + this.quaternions[index * 4 + 3] = w; + } + setOpacity(index, opacity) { + this.opacities[index] = opacity; + } + setColor(index, r, g, b) { + this.colors[index * 3] = r; + this.colors[index * 3 + 1] = g; + this.colors[index * 3 + 2] = b; + } + setSh1(index, sh1) { + if (!this.sh1) { + this.sh1 = new Float32Array(this.maxSplats * 9); } - if (!this.fileType && this.rootUrl) { - this.fileType = getSplatFileTypeFromPath(this.rootUrl); + for (let j = 0; j < 9; ++j) { + this.sh1[index * 9 + j] = sh1[j]; } - if (!this.fileType) { - throw new Error("Unable to determine file type"); + } + setSh2(index, sh2) { + if (!this.sh2) { + this.sh2 = new Float32Array(this.maxSplats * 15); } - if (this.fileType === SplatFileType.RAD) { - this.radMetaPromise = this.getRadMeta(); + for (let j = 0; j < 15; ++j) { + this.sh2[index * 15 + j] = sh2[j]; } } - dispose() { - if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) { - this.dynoIndices.value.dispose(); - this.dynoIndices.value = SplatPager.emptyIndicesTexture; + setSh3(index, sh3) { + if (!this.sh3) { + this.sh3 = new Float32Array(this.maxSplats * 21); } - } - setMaxSh(maxSh) { - this.maxSh = maxSh; - } - getRadMeta() { - if (this.radMetaPromise) { - return this.radMetaPromise; + for (let j = 0; j < 21; ++j) { + this.sh3[index * 21 + j] = sh3[j]; } - this.radMetaPromise = (async () => { - await wasmInitialized; - if (this.fileBytes) { - const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576)); - if (metaStart) { - return metaStart; - } - throw new Error("Failed to decode RAD header"); - } - if (!this.rootUrl) { - throw new Error("No url or fileBytes provided"); - } - for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) { - const bytes = await fetchRange({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset: 0, - bytes: tryBytes - }); - const metaStart = decode_rad_header(bytes); - if (metaStart) { - return metaStart; - } + } +} +const _ExtSplats = class _ExtSplats { + constructor(options = {}) { + this.maxSplats = 0; + this.numSplats = 0; + this.extra = {}; + this.maxSh = 3; + this.isInitialized = false; + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; + this.textures = [_ExtSplats.emptyTexture, _ExtSplats.emptyTexture]; + this.extra = {}; + this.dyno = new DynoExtSplats({ extSplats: this }); + this.dynoNumSh = new DynoInt({ + key: "numSh", + value: 0, + update: () => { + return Math.min(this.getNumSh(), this.maxSh); } - throw new Error("Failed to decode RAD header"); - })().then((metaStart) => { - return metaStart; - }); - this.radMetaPromise.catch((error) => { - console.error(error); }); - return this.radMetaPromise; - } - chunkUrl(chunk) { - return this.rootUrl.replace(/-lod-0\./, `-lod-${chunk}.`); + this.initialized = Promise.resolve(this); + this.reinitialize(options); } - async fetchDecodeChunk(chunk) { - let decodeBytes = void 0; - if (this.fileType === SplatFileType.RAD) { - const { meta, chunksStart } = await this.getRadMeta(); - if (chunk < 0 || chunk >= meta.chunks.length) { - throw new Error( - `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})` - ); - } - let { offset, bytes, filename } = meta.chunks[chunk]; - if (filename) { - if (this.fileBytes) { - throw new Error("Chunked RAD file not supported with fileBytes"); - } - const resolvedRoot = new URL( - this.rootUrl, - window.location.href - ).toString(); - const chunkUrl = new URL(filename, resolvedRoot).toString(); - decodeBytes = await fetchRange({ - url: chunkUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials - }); - } else { - offset += chunksStart; - if (this.fileBytes) { - if (offset < 0 || offset + bytes > this.fileBytes.length) { - throw new Error( - `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}` - ); - } - decodeBytes = this.fileBytes.slice(offset, offset + bytes); - } else if (this.rootUrl) { - decodeBytes = await fetchRange({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset, - bytes - }); - } else { - throw new Error("No url or fileBytes provided"); - } - } - } else if (this.fileBytes) ; - else if (this.rootUrl) { - const url = this.chunkUrl(chunk); - const request = new Request(url, { - headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, - credentials: this.withCredentials ? "include" : "same-origin" + reinitialize(options) { + this.isInitialized = false; + this.extra = {}; + this.maxSplats = options.maxSplats ?? 0; + this.lod = options.lod; + this.nonLod = options.nonLod; + if (options.url || options.fileBytes || options.stream || options.construct) { + this.initialized = this.asyncInitialize(options).then(() => { + this.isInitialized = true; + return this; }); - const response = await fetch(request); - if (!response.ok || !response.body) { - throw new Error( - `Failed to fetch "${url}": ${response.status} ${response.statusText}` - ); - } - decodeBytes = new Uint8Array(await response.arrayBuffer()); } else { - throw new Error("No url or fileBytes provided"); + this.initialize(options); + this.isInitialized = true; + this.initialized = Promise.resolve(this); + } + } + initialize(options) { + this.extra = options.extra ?? {}; + this.lodSplats = options.lodSplats; + if (options.extArrays) { + this.extArrays = options.extArrays; + this.maxSplats = Math.floor( + Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) + ); + this.numSplats = options.numSplats ?? this.maxSplats; + this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + this.numSplats = Math.min( + this.maxSplats, + options.numSplats ?? Number.POSITIVE_INFINITY + ); + this.updateTextures(); + } else { + this.maxSplats = options.maxSplats ?? 0; + this.numSplats = 0; + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; } - return await workerPool.withWorker(async (worker) => { - var _a2, _b2, _c, _d, _e; - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); - } - if (!this.pager.extSplats) { - const result2 = await worker.call("loadPackedSplats", { - fileBytes: decodeBytes, - pathName: this.chunkUrl(chunk), - sh1Codes: (_a2 = this.sh1Codes) == null ? void 0 : _a2.slice(), - sh2Codes: (_b2 = this.sh2Codes) == null ? void 0 : _b2.slice(), - sh3Codes: (_c = this.sh3Codes) == null ? void 0 : _c.slice() - }); - const lodSplats2 = result2.lodSplats; - if (!this.splatEncoding) { - this.splatEncoding = lodSplats2.splatEncoding; - this.numSh = lodSplats2.extra.sh3 ? 3 : lodSplats2.extra.sh2 ? 2 : lodSplats2.extra.sh1 ? 1 : 0; - this.rgbMinMaxLnScaleMinMax.value.set( - this.splatEncoding.rgbMin ?? 0, - this.splatEncoding.rgbMax ?? 1, - this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN, - this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX - ); - this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false; - this.shMax.value.set( - this.splatEncoding.sh1Max ?? 1, - this.splatEncoding.sh2Max ?? 1, - this.splatEncoding.sh3Max ?? 1 - ); - } - this.sh1Codes = lodSplats2.extra.sh1Codes ?? this.sh1Codes; - this.sh2Codes = lodSplats2.extra.sh2Codes ?? this.sh2Codes; - this.sh3Codes = lodSplats2.extra.sh3Codes ?? this.sh3Codes; - return lodSplats2; - } - const sh3Codes = this.sh3Codes; - const result = await worker.call("loadExtSplats", { - fileBytes: decodeBytes, - pathName: this.chunkUrl(chunk), - sh1Codes: (_d = this.sh1Codes) == null ? void 0 : _d.slice(), - sh2Codes: (_e = this.sh2Codes) == null ? void 0 : _e.slice(), - sh3Codes: sh3Codes ? [sh3Codes[0].slice(), sh3Codes[1].slice()] : void 0 + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + construct, + lod, + nonLod, + lodAbove + } = options; + this.lod = lod; + this.nonLod = nonLod; + const loader = new SplatLoader(); + if (fileBytes || url || stream) { + await loader.loadInternalAsync({ + extSplats: this, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress: options.onProgress, + lodAbove }); - const lodSplats = result.lodSplats; - if (!this.splatEncoding) { - this.splatEncoding = DEFAULT_SPLAT_ENCODING; - this.numSh = lodSplats.extra.sh3a && lodSplats.extra.sh3b ? 3 : lodSplats.extra.sh2 ? 2 : lodSplats.extra.sh1 ? 1 : 0; + } + if (construct) { + const maybePromise = construct(this); + if (maybePromise instanceof Promise) { + await maybePromise; } - this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes; - this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes; - this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes; - return lodSplats; - }); + } } - update(numSplats, indices) { - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. + dispose() { + if (this.textures[0] !== _ExtSplats.emptyTexture) { + this.textures[0].dispose(); + this.textures[0].source.data = null; + this.textures[0] = _ExtSplats.emptyTexture; } - const renderer = this.pager.renderer; - this.numSplats = numSplats; - this.dynoNumSplats.value = this.numSplats; - const rows = Math.ceil(numSplats / 16384); - let indicesTexture = this.dynoIndices.value === SplatPager.emptyIndicesTexture ? void 0 : this.dynoIndices.value; - if (indicesTexture && rows > indicesTexture.image.height) { - indicesTexture.dispose(); - indicesTexture = void 0; + if (this.textures[1] !== _ExtSplats.emptyTexture) { + this.textures[1].dispose(); + this.textures[1].source.data = null; + this.textures[1] = _ExtSplats.emptyTexture; } - if (!indicesTexture) { - indicesTexture = new THREE__namespace.DataTexture( - indices, - 4096, - rows, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType - ); - indicesTexture.internalFormat = "RGBA32UI"; - indicesTexture.needsUpdate = true; - renderer.initTexture(indicesTexture); - this.dynoIndices.value = indicesTexture; - } else { - const textureIndices = indicesTexture.image.data; - textureIndices.set(indices.subarray(0, numSplats)); - const gl = renderer.getContext(); - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture( - gl.TEXTURE_2D, - getGlTexture(renderer, indicesTexture) - ); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - indices - ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; + for (const key in this.extra) { + const dyno2 = this.extra[key]; + if (dyno2 instanceof DynoUniform) { + const texture2 = dyno2.value; + if (texture2 == null ? void 0 : texture2.isTexture) { + texture2.dispose(); + texture2.source.data = null; + } + } } + this.extra = {}; + this.disposeLodSplats(); } prepareFetchSplat() { } @@ -11356,3378 +10217,4222 @@ class PagedSplats { return this.numSplats; } hasRgbDir() { - if (!this.pager) { - return false; - } - return Math.min(this.numSh, this.pager.maxSh) > 0; + return Math.min(this.getNumSh(), this.maxSh) > 0; } getNumSh() { - return this.numSh; + return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3a || !this.extra.sh3b ? 2 : 3; + } + setMaxSh(maxSh) { + this.maxSh = maxSh; } fetchSplat({ index, viewOrigin }) { - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); - } - const splatIndex = this.pager.readIndex.apply({ - index, - numSplats: this.dynoNumSplats, - indices: this.dynoIndices - }).index; - if (!this.pager.extSplats) { - if (this.hasRgbDir() && viewOrigin) { - this.dynoNumSh.value = Math.min( - this.numSh, - this.maxSh, - this.pager.maxSh - ); - return this.pager.readSplatDir.apply({ - index: splatIndex, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity, - viewOrigin, - numSh: this.dynoNumSh, - shMax: this.shMax - }).gsplat; - } - return this.pager.readSplat.apply({ - index: splatIndex, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity - }).gsplat; - } + let gsplat = readExtSplat(this.dyno, index); if (this.hasRgbDir() && viewOrigin) { - this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh); - return this.pager.readSplatExtDir.apply({ - index: splatIndex, - viewOrigin, - numSh: this.dynoNumSh - }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } = this.ensureShTextures(); + let { rgb } = evaluateExtSH({ + coord: splatTexCoord(index), + viewDir, + numSh: this.dynoNumSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB + }); + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); } - return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat; + return gsplat; } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.pager || !this.numSplats) { - return; + ensureShTextures() { + if (!this.extra.sh1) { + return {}; } - const extSplats = this.pager.extSplats; - const indices = this.dynoIndices.value.image.data; - const packedSplatArray = this.pager.packedTexture.value.image.data; - const extPackedSplatArray = this.pager.extTexture.value.image.data; - const extArrays = [ - packedSplatArray, - extPackedSplatArray - ]; - for (let i = 0; i < this.numSplats; ++i) { - const splatIndex = indices[i]; - const unpacked = extSplats ? decodeExtSplat(extArrays, splatIndex) : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color + let sh1Texture = this.extra.sh1Texture; + if (!sh1Texture) { + let sh1 = this.extra.sh1; + const { width, height, depth, maxSplats } = getTextureSize( + sh1.length / 4 + ); + if (sh1.length < maxSplats * 4) { + const newSh1 = new Uint32Array(maxSplats * 4); + newSh1.set(sh1); + this.extra.sh1 = newSh1; + sh1 = newSh1; + } + const texture2 = newUint32ArrayTexture( + sh1, + width, + height, + depth, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType, + "RGBA32UI" ); + sh1Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh1" + }); + this.extra.sh1Texture = sh1Texture; } - } -} -const _SplatPager = class _SplatPager { - constructor(options) { - this.fetchPause = 0; - this.splatsChunkToPage = /* @__PURE__ */ new Map(); - this.pageToSplatsChunk = []; - this.renderer = options.renderer; - this.extSplats = options.extSplats ?? false; - this.pageSplats = 65536; - this.maxSplats = options.maxSplats ?? 16777216; - this.maxPages = Math.ceil(this.maxSplats / this.pageSplats); - this.maxSplats = this.maxPages * this.pageSplats; - this.maxSh = options.maxSh ?? 3; - this.curSh = 0; - this.autoDrive = options.autoDrive ?? true; - this.numFetchers = options.numFetchers ?? 3; - this.splatsChunkToPage = /* @__PURE__ */ new Map(); - this.pageToSplatsChunk = new Array(this.maxPages); - this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i); - this.pageLru = /* @__PURE__ */ new Set(); - this.freeablePages = []; - this.newUploads = []; - this.readyUploads = []; - this.lodTreeUpdates = []; - this.fetchers = []; - this.fetched = []; - this.fetchPriority = []; - this.packedTexture = new DynoUsampler2DArray({ - value: this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, + if (!this.extra.sh2) { + return { sh1Texture }; + } + let sh2Texture = this.extra.sh2Texture; + if (!sh2Texture) { + let sh2 = this.extra.sh2; + const { width, height, depth, maxSplats } = getTextureSize( + sh2.length / 4 + ); + if (sh2.length < maxSplats * 4) { + const newSh2 = new Uint32Array(maxSplats * 4); + newSh2.set(sh2); + this.extra.sh2 = newSh2; + sh2 = newSh2; + } + const texture2 = newUint32ArrayTexture( + sh2, + width, + height, + depth, THREE__namespace.RGBAIntegerFormat, THREE__namespace.UnsignedIntType, "RGBA32UI" - ) - }); - this.extTexture = new DynoUsampler2DArray({ - value: this.extSplats ? this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, + ); + sh2Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh2" + }); + this.extra.sh2Texture = sh2Texture; + } + if (!this.extra.sh3a || !this.extra.sh3b) { + return { sh1Texture, sh2Texture }; + } + let sh3TextureA = this.extra.sh3TextureA; + if (!sh3TextureA) { + let sh3a = this.extra.sh3a; + const { width, height, depth, maxSplats } = getTextureSize( + sh3a.length / 4 + ); + if (sh3a.length < maxSplats * 4) { + const newSh3 = new Uint32Array(maxSplats * 4); + newSh3.set(sh3a); + this.extra.sh3a = newSh3; + sh3a = newSh3; + } + const texture2 = newUint32ArrayTexture( + sh3a, + width, + height, + depth, THREE__namespace.RGBAIntegerFormat, THREE__namespace.UnsignedIntType, "RGBA32UI" - ) : _SplatPager.emptyExtTexture - }); - this.sh1Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh1Texture : _SplatPager.emptySh1Texture - }); - this.sh2Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh2Texture : _SplatPager.emptySh2Texture - }); - this.sh3Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh3Texture : _SplatPager.emptySh3Texture - }); - this.sh3TextureB = new DynoUsampler2DArray({ - value: _SplatPager.emptyExtSh3BTexture - }); - this.readIndex = dynoBlock( - { index: "int", numSplats: "int", indices: "usampler2D" }, - { index: "int" }, - ({ index, numSplats, indices }) => { - return new Dyno({ - inTypes: { - index: "int", - numSplats: "int", - indices: "usampler2D" - }, - outTypes: { index: "int" }, - inputs: { - index, - numSplats, - indices - }, - statements: ({ inputs, outputs }) => unindentLines(` - if (${inputs.index} >= ${inputs.numSplats}) { - return; - } - - ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14); - uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3]; - ${outputs.index} = int(index); - `) - }).outputs; + ); + sh3TextureA = new DynoUsampler2DArray({ + value: texture2, + key: "sh3" + }); + this.extra.sh3TextureA = sh3TextureA; + } + let sh3TextureB = this.extra.sh3TextureB; + if (!sh3TextureB) { + let sh3b = this.extra.sh3b; + const { width, height, depth, maxSplats } = getTextureSize( + sh3b.length / 4 + ); + if (sh3b.length < maxSplats * 4) { + const newSh3b = new Uint32Array(maxSplats * 4); + newSh3b.set(sh3b); + this.extra.sh3b = newSh3b; + sh3b = newSh3b; } + const texture2 = newUint32ArrayTexture( + sh3b, + width, + height, + depth, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType, + "RGBA32UI" + ); + sh3TextureB = new DynoUsampler2DArray({ + value: texture2, + key: "sh3b" + }); + this.extra.sh3TextureB = sh3TextureB; + } + return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB }; + } + // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(numSplats) { + const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(numSplats, 2 * this.maxSplats) ); - this.readSplat = dynoBlock( - { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, - { gsplat: Gsplat }, - ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => { - return new Dyno({ - inTypes: { - index: "int", - packedTexture: "usampler2DArray", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - index, - packedTexture: this.packedTexture, - rgbMinMaxLnScaleMinMax, - lodOpacity - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - ivec3 splatCoord = pagedSplatTexCoord(index); - uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0); - - unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax}); - if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${outputs.gsplat}.index = index; - ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - if (${inputs.lodOpacity}) { - ${outputs.gsplat}.rgba.a *= 2.0; - } - `) - }).outputs; + const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4; + if (!this.extArrays[0] || targetSize > currentSize) { + this.maxSplats = getTextureSize(targetSize).maxSplats; + const newArray0 = new Uint32Array(this.maxSplats * 4); + const newArray1 = new Uint32Array(this.maxSplats * 4); + if (this.extArrays[0]) { + newArray0.set(this.extArrays[0]); + newArray1.set(this.extArrays[1]); } + this.extArrays[0] = newArray0; + this.extArrays[1] = newArray1; + } + return this.extArrays; + } + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(index) { + if (index >= this.numSplats) { + throw new Error("Invalid index"); + } + return decodeExtSplat(this.extArrays, index); + } + // Set all ExtSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(index, center, scales, quaternion, opacity, color) { + const extArrays = this.ensureSplats(index + 1); + encodeExtSplat( + extArrays, + index, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + this.numSplats = Math.max(this.numSplats, index + 1); + } + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(center, scales, quaternion, opacity, color) { + const extArrays = this.ensureSplats(this.numSplats + 1); + encodeExtSplat( + extArrays, + this.numSplats, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b ); - this.readSplatDir = dynoBlock( - { - index: "int", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool", - viewOrigin: "vec3", - numSh: "int", - shMax: "vec3" - }, - { gsplat: Gsplat }, - ({ - index, - rgbMinMaxLnScaleMinMax, - lodOpacity, - viewOrigin, - numSh, - shMax - }) => { - if (!index || !rgbMinMaxLnScaleMinMax || !lodOpacity || !viewOrigin || !numSh || !shMax) { - throw new Error("index and viewOrigin are required"); - } - let gsplat = this.readSplat.apply({ - index, - rgbMinMaxLnScaleMinMax, - lodOpacity - }).gsplat; - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - let rgb = evaluatePackedSH({ - coord: pagedSplatTexCoord(index), - viewDir, - numSh, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3Texture: this.sh3Texture, - shMax - }).rgb; - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - return { gsplat }; + ++this.numSplats; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.numSplats) { + return; + } + for (let i = 0; i < this.numSplats; ++i) { + const unpacked = decodeExtSplat(this.extArrays, i); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color + ); + } + } + // Check if source texture needs to be created/updated + updateTextures() { + if (this.textures[0] !== _ExtSplats.emptyTexture) { + const { width, height, depth } = this.textures[0].image; + if (this.maxSplats !== width * height * depth) { + this.textures[0].dispose(); + this.textures[0] = _ExtSplats.emptyTexture; + this.textures[1].dispose(); + this.textures[1] = _ExtSplats.emptyTexture; } - ); - this.readSplatExt = dynoBlock( - { index: "int" }, - { gsplat: Gsplat }, - ({ index }) => { - return new Dyno({ - inTypes: { - index: "int", - extTexture1: "usampler2DArray", - extTexture2: "usampler2DArray" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - index, - extTexture1: this.packedTexture, - extTexture2: this.extTexture - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); - uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0); - float alpha = unpackSplatExtAlpha(ext1); - if (alpha == 0.0) { - return; - } - - uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0); - unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba); - if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${outputs.gsplat}.index = index; - ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - `) - }).outputs; + } + if (this.textures[0] === _ExtSplats.emptyTexture) { + const { width, height, depth } = getTextureSize(this.maxSplats); + this.textures[0] = newUint32ArrayTexture( + this.extArrays[0], + width, + height, + depth, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType, + "RGBA32UI" + ); + this.textures[1] = newUint32ArrayTexture( + this.extArrays[1], + width, + height, + depth, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType, + "RGBA32UI" + ); + } else if (this.extArrays[0].buffer !== this.textures[0].image.data.buffer) { + this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer); + this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer); + this.textures[0].needsUpdate = true; + this.textures[1].needsUpdate = true; + } + } + extractSplats(indices, pageColoring) { + const maxSplats = getTextureSize(indices.length).maxSplats; + const newSplats = new _ExtSplats({ maxSplats }); + for (let i = 0; i < indices.length; i++) { + const splat = this.getSplat(indices[i]); + if (pageColoring) { + let hue = (indices[i] >>> 16) * 0.61803398875; + hue = hue - Math.floor(hue); + const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); + const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); + const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); + splat.color.r *= r; + splat.color.g *= g; + splat.color.b *= b; } - ); - this.readSplatExtDir = dynoBlock( - { - index: "int", - viewOrigin: "vec3", - numSh: "int" + newSplats.pushSplat( + splat.center, + splat.scales, + splat.quaternion, + splat.opacity, + splat.color + ); + } + return newSplats; + } + disposeLodSplats() { + if (this.lodSplats) { + this.lodSplats.dispose(); + this.lodSplats = void 0; + } + } + async createLodSplats({ + rgbaArray, + quality + } = {}) { + const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; + const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()]; + const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; + const extra = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }; + const decoded = await workerPool.withWorker(async (worker) => { + return await worker.call( + quality ? "qualityLodExtSplats" : "tinyLodExtSplats", + { + numSplats: this.numSplats, + extArrays, + extra, + lodBase, + rgba + } + ); + }); + const lodSplats = new _ExtSplats(decoded); + if (this.lodSplats) { + this.lodSplats.dispose(); + } + this.lodSplats = lodSplats; + this.nonLod = true; + this.lod = quality ? "quality" : true; + } +}; +_ExtSplats.emptyArray = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_ExtSplats.emptyTexture = newUint32ArrayTexture( + null, + 1, + 1, + 1, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType, + "RGBA32UI" +); +_ExtSplats.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +let ExtSplats = _ExtSplats; +class DynoExtSplats extends DynoUniform { + constructor({ extSplats } = {}) { + super({ + key: "extSplats", + type: TExtSplats, + globals: () => [defineExtSplats], + value: { + textureArray1: ExtSplats.emptyTexture, + textureArray2: ExtSplats.emptyTexture, + numSplats: 0 }, - { gsplat: Gsplat }, - ({ index, viewOrigin, numSh }) => { - if (!index || !viewOrigin || !numSh) { - throw new Error("index and viewOrigin are required"); - } - let gsplat = this.readSplatExt.apply({ index }).gsplat; - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - let rgb = evaluateExtSH({ - coord: pagedSplatTexCoord(index), - viewDir, - numSh, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3TextureA: this.sh3Texture, - sh3TextureB: this.sh3TextureB - }).rgb; - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - return { gsplat }; + update: (value) => { + var _a2, _b2, _c; + value.textureArray1 = ((_a2 = this.extSplats) == null ? void 0 : _a2.textures[0]) ?? ExtSplats.emptyTexture; + value.textureArray2 = ((_b2 = this.extSplats) == null ? void 0 : _b2.textures[1]) ?? ExtSplats.emptyTexture; + value.numSplats = ((_c = this.extSplats) == null ? void 0 : _c.numSplats) ?? 0; + return value; } - ); + }); + this.extSplats = extSplats; } - dispose() { - this.autoDrive = false; - this.numFetchers = 0; - this.packedTexture.value.dispose(); - this.packedTexture.value.source.data = null; - if (this.extTexture.value !== _SplatPager.emptyExtTexture) { - this.extTexture.value.dispose(); - this.extTexture.value.source.data = null; - } - if (!this.extSplats) { - if (this.sh1Texture.value !== _SplatPager.emptySh1Texture) { - this.sh1Texture.value.dispose(); - this.sh1Texture.value.source.data = null; - } - if (this.sh2Texture.value !== _SplatPager.emptySh2Texture) { - this.sh2Texture.value.dispose(); - this.sh2Texture.value.source.data = null; - } - if (this.sh3Texture.value !== _SplatPager.emptySh3Texture) { - this.sh3Texture.value.dispose(); - this.sh3Texture.value.source.data = null; - } - } else { - if (this.sh1Texture.value !== _SplatPager.emptyExtSh1Texture) { - this.sh1Texture.value.dispose(); - this.sh1Texture.value.source.data = null; - } - if (this.sh2Texture.value !== _SplatPager.emptyExtSh2Texture) { - this.sh2Texture.value.dispose(); - this.sh2Texture.value.source.data = null; - } - if (this.sh3Texture.value !== _SplatPager.emptyExtSh3Texture) { - this.sh3Texture.value.dispose(); - this.sh3Texture.value.source.data = null; - } - if (this.sh3TextureB.value !== _SplatPager.emptyExtSh3BTexture) { - this.sh3TextureB.value.dispose(); - this.sh3TextureB.value.source.data = null; - } - } +} +const defineEvaluateExtSH1 = unindent(` + vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packedData.x); + vec3 sh1_1 = decodeExtRgb(packedData.y); + vec3 sh1_2 = decodeExtRgb(packedData.z); + + return sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); } - ensureShTextures(numSh) { - this.curSh = Math.max(this.curSh, numSh); - if (!this.extSplats) { - if (this.curSh >= 1 && this.sh1Texture.value === _SplatPager.emptySh1Texture) { - this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 2), - 256, - 256, - this.maxPages, - THREE__namespace.RGIntegerFormat, - THREE__namespace.UnsignedIntType, - "RG32UI" - ); - } - } else { - if (this.curSh >= 1 && this.sh1Texture.value === _SplatPager.emptyExtSh1Texture) { - this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - } - } - if (this.curSh >= 2 && this.sh2Texture.value === (!this.extSplats ? _SplatPager.emptySh2Texture : _SplatPager.emptyExtSh2Texture)) { - this.sh2Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - } - if (!this.extSplats) { - if (this.curSh >= 3 && this.sh3Texture.value === _SplatPager.emptySh3Texture) { - this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" - ); - } - } else { - if (this.curSh >= 3) { - if (this.sh3Texture.value === _SplatPager.emptyExtSh3Texture) { - this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" +`); +const defineEvaluateExtSH12 = unindent(` + vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packed1.x); + vec3 sh1_1 = decodeExtRgb(packed1.y); + vec3 sh1_2 = decodeExtRgb(packed1.z); + + vec3 sh2_0 = decodeExtRgb(packed1.w); + vec3 sh2_1 = decodeExtRgb(packed2.x); + vec3 sh2_2 = decodeExtRgb(packed2.y); + vec3 sh2_3 = decodeExtRgb(packed2.z); + vec3 sh2_4 = decodeExtRgb(packed2.w); + + vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + + vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + + return sh1Rgb + sh2Rgb; + } +`); +const defineEvaluateExtSH3 = unindent(` + vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { + vec3 sh3_0 = decodeExtRgb(packedA.x); + vec3 sh3_1 = decodeExtRgb(packedA.y); + vec3 sh3_2 = decodeExtRgb(packedA.z); + vec3 sh3_3 = decodeExtRgb(packedA.w); + vec3 sh3_4 = decodeExtRgb(packedB.x); + vec3 sh3_5 = decodeExtRgb(packedB.y); + vec3 sh3_6 = decodeExtRgb(packedB.z); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + } +`); +const randomColourFromID = unindent(` +precision highp float; +precision highp int; + +// Blazing fast HSL to RGB conversion +vec3 hsl2rgb(vec3 c) { + vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); + return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0)); +} + +vec4 getDeterministicColor(uint id) { + float hue = fract(float(id) * 0.618033988749895); + vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6)); + return vec4(rgb, 1.0); +} +`); +function evaluateExtSH({ + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB +}) { + return new Dyno({ + inTypes: { + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3TextureA: "usampler2DArray", + sh3TextureB: "usampler2DArray" + }, + outTypes: { rgb: "vec3" }, + inputs: { + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB + }, + globals: () => [ + defineEvaluateExtSH1, + defineEvaluateExtSH12, + defineEvaluateExtSH3 + ], + statements: ({ inputs, outputs }) => { + const lines = ["vec3 rgb = vec3(0.0);"]; + if (inputs.sh1Texture) { + if (!inputs.sh2Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 1) { + rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + } + `) ); - } - if (this.sh3TextureB.value === _SplatPager.emptyExtSh3BTexture) { - this.sh3TextureB.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType, - "RGBA32UI" + } else { + lines.push( + ...unindentLines(` + if (${inputs.numSh} == 1) { + rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + } else if (${inputs.numSh} >= 2) { + rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + `) ); + if (inputs.sh3TextureA && inputs.sh3TextureB) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 3) { + rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir}); + } + `) + ); + } + lines.push("}"); } } - } - } - allocatePage() { - return this.pageFreelist.shift(); - } - freePage(page) { - this.pageFreelist.push(page); - } - getSplatsChunk(splats, chunk) { - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - return void 0; - } - return chunks[chunk]; - } - insertSplatsChunkPage(splats, chunk, page, now) { - if (!this.splatsChunkToPage.has(splats)) { - this.splatsChunkToPage.set(splats, []); - } - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - throw new Error("impossible"); - } - if (chunk >= chunks.length) { - chunks.length = chunk + 1; - } - const pageLru = { page, lru: now }; - chunks[chunk] = pageLru; - this.pageLru.add(pageLru); - this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() }; - return this.pageToSplatsChunk[page]; - } - removeSplatsChunkPage(splats, chunk, page) { - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - throw new Error("impossible"); - } - const pageLru = chunks[chunk]; - if (!pageLru) { - throw new Error( - `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}` + lines.push(`${outputs.rgb} = rgb;`); + return lines; + } + }).outputs; +} +function newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { + const texture2 = new THREE__namespace.DataArrayTexture( + data, + width, + height, + depth + ); + texture2.format = format; + texture2.type = type; + texture2.internalFormat = internalFormat; + texture2.needsUpdate = true; + return texture2; +} +const _RgbaArray = class _RgbaArray { + constructor(options = {}) { + this.capacity = 0; + this.count = 0; + this.array = null; + this.readback = null; + this.source = null; + this.needsUpdate = true; + this.dyno = new DynoUniform({ + key: "rgbaArray", + type: TRgbaArray, + globals: () => [defineRgbaArray], + value: { + texture: _RgbaArray.getEmpty(), + count: 0 + }, + update: (value) => { + value.texture = this.getTexture(); + value.count = this.count; + return value; + } + }); + if (options.array) { + this.array = options.array; + const splatCount = Math.floor(this.array.length / 4); + this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + if (this.capacity > splatCount) { + this.array = new Uint8Array(this.capacity * 4); + this.array.set(options.array); + } + this.count = Math.min( + splatCount, + options.count ?? Number.POSITIVE_INFINITY ); + } else { + this.capacity = options.capacity ?? 0; + this.count = 0; } - this.pageLru.delete(pageLru); - chunks[chunk] = void 0; - while (chunks.length > 0 && chunks[chunks.length - 1] === void 0) { - chunks.pop(); - } - if (chunks.length === 0) { - this.splatsChunkToPage.delete(splats); + } + // Free up resources + dispose() { + if (this.readback) { + this.readback.dispose(); + this.readback = null; } - this.pageToSplatsChunk[page] = void 0; - while (this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0) { - this.pageToSplatsChunk.pop(); + if (this.source) { + this.source.dispose(); + this.source = null; } } - uploadPage(page, packedArray, extra, extArray) { - const pageBase = page * this.pageSplats; - const array = this.packedTexture.value.image.data; - array.subarray(pageBase * 4, pageBase * 4 + packedArray.length).set(packedArray); - this.packedTexture.value.addLayerUpdate(page); - this.packedTexture.value.needsUpdate = true; - if (extArray) { - const array2 = this.extTexture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + extArray.length).set(extArray); - this.extTexture.value.addLayerUpdate(page); - this.extTexture.value.needsUpdate = true; - } - const numSh = this.extSplats ? extra.sh3a && extra.sh3b ? 3 : extra.sh2 ? 2 : extra.sh1 ? 1 : 0 : extra.sh3 ? 3 : extra.sh2 ? 2 : extra.sh1 ? 1 : 0; - this.ensureShTextures(numSh); - if (!this.extSplats) { - if (this.sh1Texture.value !== _SplatPager.emptySh1Texture && extra.sh1) { - const sh1 = extra.sh1; - const array2 = this.sh1Texture.value.image.data; - array2.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1); - this.sh1Texture.value.addLayerUpdate(page); - this.sh1Texture.value.needsUpdate = true; - } - } else { - if (this.sh1Texture.value !== _SplatPager.emptyExtSh1Texture && extra.sh1) { - const sh1 = extra.sh1; - const array2 = this.sh1Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1); - this.sh1Texture.value.addLayerUpdate(page); - this.sh1Texture.value.needsUpdate = true; - } - } - if (this.sh2Texture.value !== _SplatPager.emptySh2Texture && extra.sh2) { - const sh2 = extra.sh2; - const array2 = this.sh2Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2); - this.sh2Texture.value.addLayerUpdate(page); - this.sh2Texture.value.needsUpdate = true; - } - if (!this.extSplats) { - if (this.sh3Texture.value !== _SplatPager.emptySh3Texture && extra.sh3) { - const sh3 = extra.sh3; - const array2 = this.sh3Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3); - this.sh3Texture.value.addLayerUpdate(page); - this.sh3Texture.value.needsUpdate = true; - } - } else { - if (this.sh3Texture.value !== _SplatPager.emptyExtSh3Texture && extra.sh3a) { - const sh3a = extra.sh3a; - const array2 = this.sh3Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a); - this.sh3Texture.value.addLayerUpdate(page); - this.sh3Texture.value.needsUpdate = true; - } - if (this.sh3TextureB.value !== _SplatPager.emptyExtSh3BTexture && extra.sh3b) { - const sh3b = extra.sh3b; - const array2 = this.sh3TextureB.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b); - this.sh3TextureB.value.addLayerUpdate(page); - this.sh3TextureB.value.needsUpdate = true; + // Ensure that our array is large enough to hold capacity RGBA8 values. + ensureCapacity(capacity) { + var _a2; + if (!this.array || capacity > (((_a2 = this.array) == null ? void 0 : _a2.length) ?? 0) / 4) { + this.capacity = getTextureSize(capacity).maxSplats; + const newArray2 = new Uint8Array(this.capacity * 4); + if (this.array) { + newArray2.set(this.array); } + this.array = newArray2; } + return this.array; } - getGlTexture(texture2) { - return getGlTexture(this.renderer, texture2); - } - newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { - const texture2 = new THREE__namespace.DataArrayTexture(data, width, height, depth); - texture2.format = format; - texture2.type = type; - texture2.internalFormat = internalFormat; - texture2.needsUpdate = true; - this.renderer.initTexture(texture2); - return texture2; + // Get the THREE.DataArrayTexture from either the readback or the source. + getTexture() { + var _a2; + let texture2 = (_a2 = this.readback) == null ? void 0 : _a2.getTexture(); + if (this.source || this.array) { + texture2 = this.maybeUpdateSource(); + } + return texture2 ?? _RgbaArray.getEmpty(); } - driveFetchers() { - const needed = []; - const overflow = []; - let numPages = 0; - for (const { splats, chunk } of this.fetchPriority) { - const pageLru = this.getSplatsChunk(splats, chunk); - if (pageLru) { - if (numPages >= this.maxPages) { - overflow.push(pageLru); - } else { - needed.push(pageLru); + // Create or get a THREE.DataArrayTexture from the data array. + maybeUpdateSource() { + if (!this.array) { + throw new Error("No array"); + } + if (this.needsUpdate || !this.source) { + this.needsUpdate = false; + if (this.source) { + const { width, height, depth } = this.source.image; + if (this.capacity !== width * height * depth) { + this.source.dispose(); + this.source = null; } - numPages += 1; - continue; - } - if (this.fetched.some( - ({ splats: s, chunk: c }) => splats === s && chunk === c - ) || this.fetchers.some( - ({ splats: s, chunk: c }) => splats === s && chunk === c - )) { - numPages += 1; - continue; } - if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) { - numPages += 1; - const promise = splats.fetchDecodeChunk(chunk).then( - async (data) => { - this.fetched.push({ splats, chunk, data }); - if (this.fetchPause > 0) { - await new Promise( - (resolve) => setTimeout(resolve, this.fetchPause) - ); - } - }, - async (error) => { - console.warn(error); - const backoff = 250 + 500 * Math.random(); - await new Promise((resolve) => setTimeout(resolve, backoff)); - } - ).finally(() => { - this.fetchers = this.fetchers.filter( - ({ splats: s, chunk: c }) => splats !== s || chunk !== c - ); - this.processFetched(); - }); - this.fetchers.push({ splats, chunk, promise }); - promise.then((data) => { - if (this.autoDrive) { - this.driveFetchers(); - } - }); + if (!this.source) { + const { width, height, depth } = getTextureSize(this.capacity); + this.source = new THREE__namespace.DataArrayTexture( + this.array, + width, + height, + depth + ); + this.source.format = THREE__namespace.RGBAFormat; + this.source.type = THREE__namespace.UnsignedByteType; + this.source.internalFormat = "RGBA8"; + this.source.needsUpdate = true; + } else if (this.array.buffer !== this.source.image.data.buffer) { + this.source.image.data = new Uint8Array(this.array.buffer); } + this.source.needsUpdate = true; } - const now = performance.now(); - for (const pageLru of overflow.reverse()) { - pageLru.lru = now; - this.pageLru.delete(pageLru); - this.pageLru.add(pageLru); - } - const extraPages = new Set(this.pageLru); - for (const pageLru of needed.reverse()) { - extraPages.delete(pageLru); - pageLru.lru = now; - this.pageLru.delete(pageLru); - this.pageLru.add(pageLru); - } - this.freeablePages = Array.from(extraPages).map(({ page }) => page); + return this.source; } - allocateFreeable() { - const page = this.freeablePages.shift(); - if (page === void 0) { - return void 0; - } - const splatsChunk = this.pageToSplatsChunk[page]; - if (!splatsChunk) { - throw new Error(`splatsChunk not found for page: ${page}`); + // Generate the RGBA8 values from a Rgba8Readback dyno program. + render({ + reader, + count, + renderer + }) { + if (!this.readback) { + this.readback = new Readback({ renderer }); } - const { splats, chunk } = splatsChunk; - this.removeSplatsChunkPage(splats, chunk, page); - this.lodTreeUpdates.push({ - splats, - page, - chunk, - numSplats: this.pageSplats - }); - return page; + this.readback.render({ reader, count, renderer }); + this.capacity = this.readback.capacity; + this.count = this.readback.count; } - processFetched() { - const now = performance.now(); - while (true) { - const fetched = this.fetched.shift(); - if (!fetched) { - break; - } - const { splats, chunk, data } = fetched; - let page = this.allocatePage(); - if (page === void 0) { - page = this.allocateFreeable(); - if (page === void 0) { - return; - } - } - this.insertSplatsChunkPage(splats, chunk, page, now); - const { numSplats, extra } = data; - this.lodTreeUpdates.push({ - splats, - page, - chunk, - numSplats, - lodTree: extra.lodTree - }); - if (!this.extSplats) { - const packedArray = data.packedArray; - this.newUploads.push({ page, numSplats, packedArray, extra }); - } else { - const extArrays = data.extArrays; - const packedArray = extArrays[0]; - const extArray = extArrays[1]; - this.newUploads.push({ page, numSplats, packedArray, extArray, extra }); - } - } + // Extract the RGBA8 values from a PackedSplats collection. + fromPackedSplats({ + packedSplats, + base, + count, + renderer + }) { + const { dynoSplats, dynoBase, dynoCount, reader } = _RgbaArray.makeDynos(); + dynoSplats.packedSplats = packedSplats; + dynoBase.value = base; + dynoCount.value = count; + this.render({ reader, count, renderer }); + return this; } - processUploads() { - while (true) { - const upload = this.readyUploads.shift(); - if (!upload) { - break; - } - const { page, numSplats, packedArray, extArray, extra } = upload; - this.uploadPage(page, packedArray, extra, extArray); + // Read back the RGBA8 values from the readback buffer. + async read() { + if (!this.readback) { + throw new Error("No readback"); } + if (!this.array || this.array.length < this.count * 4) { + this.array = new Uint8Array(this.capacity * 4); + } + const result = await this.readback.readback({ readback: this.array }); + return result.subarray(0, this.count * 4); } - consumeLodTreeUpdates() { - const updates = this.lodTreeUpdates; - this.lodTreeUpdates = []; - this.readyUploads.push(...this.newUploads); - this.newUploads = []; - return updates; + async getArray() { + if (this.readback) { + return await this.read(); + } + if (this.array) { + return this.array; + } + throw new Error("No array"); } -}; -_SplatPager.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyUint32x2 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 2); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyIndicesTexture = (() => { - const emptyArray = new Uint32Array(4096 * 4); - const texture2 = new THREE__namespace.DataTexture(emptyArray, 4096, 1); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyPackedTexture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtTexture = _SplatPager.emptyUint32x4; -_SplatPager.emptySh1Texture = _SplatPager.emptyUint32x2; -_SplatPager.emptySh2Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptySh3Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh1Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh2Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh3Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh3BTexture = _SplatPager.emptyUint32x4; -let SplatPager = _SplatPager; -function getGlTexture(renderer, texture2) { - if (!renderer.properties.has(texture2)) { - throw new Error("texture not found"); + // Can be used where you need an uninitialized THREE.DataArrayTexture like + // a uniform you will update with the result of this.getTexture() later. + static getEmpty() { + if (!_RgbaArray.emptySource) { + const emptyArray = new Uint8Array(1 * 4); + _RgbaArray.emptySource = new THREE__namespace.DataArrayTexture(emptyArray, 1, 1, 1); + _RgbaArray.emptySource.format = THREE__namespace.RGBAFormat; + _RgbaArray.emptySource.type = THREE__namespace.UnsignedByteType; + _RgbaArray.emptySource.internalFormat = "RGBA8"; + _RgbaArray.emptySource.needsUpdate = true; + } + return _RgbaArray.emptySource; } - const props = renderer.properties.get(texture2); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("texture not found"); + // Create a dyno program that can extract RGBA8 values from a PackedSplats + static makeDynos() { + if (!_RgbaArray.dynos) { + const dynoSplats = new DynoPackedSplats(); + const dynoBase = new DynoInt({ value: 0 }); + const dynoCount = new DynoInt({ value: 0 }); + const reader = dynoBlock( + { index: "int" }, + { rgba8: "vec4" }, + ({ index }) => { + if (!index) { + throw new Error("index is undefined"); + } + index = add(index, dynoBase); + const gsplat = readPackedSplatRange( + dynoSplats, + index, + dynoBase, + dynoCount + ); + return { rgba8: splitGsplat(gsplat).outputs.rgba }; + } + ); + _RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader }; + } + return _RgbaArray.dynos; } - return glTexture; -} -const wasmInitialized = __wbg_init(); -async function fetchRange({ - url, - requestHeader, - withCredentials, - offset, - bytes -}) { - const request = new Request(url, { - headers: requestHeader ? new Headers(requestHeader) : void 0, - credentials: withCredentials ? "include" : "same-origin" +}; +_RgbaArray.emptySource = null; +_RgbaArray.dynos = null; +let RgbaArray = _RgbaArray; +const TRgbaArray = { type: "RgbaArray" }; +const defineRgbaArray = unindent(` + struct RgbaArray { + sampler2DArray texture; + int count; + }; +`); +function readRgbaArray(rgba, index) { + const dyno2 = new Dyno({ + inTypes: { rgba: TRgbaArray, index: "int" }, + outTypes: { rgba: "vec4" }, + inputs: { rgba, index }, + globals: () => [defineRgbaArray], + statements: ({ inputs, outputs }) => unindentLines(` + if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { + ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); + } else { + ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0); + } + `) }); - if (offset !== void 0 && bytes !== void 0) { - request.headers.set("Range", `bytes=${offset}-${offset + bytes - 1}`); - } - const response = await fetch(request); - if (!response.ok || !response.body) { - throw new Error( - `Failed to fetch "${url}": ${response.status} ${response.statusText}` - ); - } - return new Uint8Array(await response.arrayBuffer()); + return dyno2.outputs.rgba; } -class EmptySplatSource { - constructor() { - this.fetchDyno = new Dyno({ - inTypes: {}, - outTypes: { gsplat: Gsplat }, - globals: () => [defineGsplat], - statements: ({ outputs }) => unindentLines(` - ${outputs.gsplat}.flags = 0u; - return; - `) - }).outputs.gsplat; - } - prepareFetchSplat() { +const PAGE_WIDTH = 256; +const PAGE_HEIGHT = 256; +const PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; +class PagedSplats { + constructor(options) { + var _a2; + this.pager = options.pager; + this.rootUrl = options.rootUrl ?? ""; + this.requestHeader = options.requestHeader; + this.withCredentials = options.withCredentials; + this.numSh = 0; + this.maxSh = ((_a2 = options.pager) == null ? void 0 : _a2.maxSh) ?? 3; + this.numSplats = 0; + this.dynoNumSplats = new DynoInt({ value: 0 }); + this.dynoIndices = new DynoUsampler2D({ + value: SplatPager.emptyIndicesTexture + }); + this.rgbMinMaxLnScaleMinMax = new DynoVec4({ + value: new THREE__namespace.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX) + }); + this.lodOpacity = new DynoBool({ + value: false + }); + this.dynoNumSh = new DynoInt({ value: 0 }); + this.shMax = new DynoVec3({ value: new THREE__namespace.Vector3() }); + this.fileBytes = options.fileBytes; + this.fileType = options.fileType; + if (!this.fileType && this.fileBytes) { + this.fileType = getSplatFileType(this.fileBytes); + } + if (!this.fileType && this.rootUrl) { + this.fileType = getSplatFileTypeFromPath(this.rootUrl); + } + if (!this.fileType) { + throw new Error("Unable to determine file type"); + } + if (this.fileType === SplatFileType.RAD) { + this.radMetaPromise = this.getRadMeta(); + } } dispose() { - } - getNumSplats() { - return 0; - } - hasRgbDir() { - return false; - } - getNumSh() { - return 0; + if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) { + this.dynoIndices.value.dispose(); + this.dynoIndices.value = SplatPager.emptyIndicesTexture; + } } setMaxSh(maxSh) { + this.maxSh = maxSh; } - fetchSplat({ index }) { - return this.fetchDyno; + getRadMeta() { + if (this.radMetaPromise) { + return this.radMetaPromise; + } + this.radMetaPromise = (async () => { + await initialization; + if (this.fileBytes) { + const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576)); + if (metaStart) { + return metaStart; + } + throw new Error("Failed to decode RAD header"); + } + if (!this.rootUrl) { + throw new Error("No url or fileBytes provided"); + } + for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) { + const bytes = await fetchRange({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset: 0, + bytes: tryBytes + }); + const metaStart = decode_rad_header(bytes); + if (metaStart) { + return metaStart; + } + } + throw new Error("Failed to decode RAD header"); + })().then((metaStart) => { + return metaStart; + }); + this.radMetaPromise.catch((error) => { + console.error(error); + }); + return this.radMetaPromise; } - forEachSplat() { + chunkUrl(chunk) { + return this.rootUrl.replace(/-lod-0\./, `-lod-${chunk}.`); } -} -const _SplatMesh = class _SplatMesh extends SplatGenerator { - constructor(options = {}) { - super({ - update: (context) => this.update(context) - }); - this.isInitialized = false; - this.recolor = new THREE__namespace.Color(1, 1, 1); - this.opacity = 1; - this.generatorDirty = true; - this.enableViewToObject = false; - this.enableViewToWorld = false; - this.enableWorldToView = false; - this.skinning = null; - this.edits = null; - this.rgbaDisplaceEdits = null; - this.splatRgba = null; - this.maxSh = 3; - this.showLodPageDyno = new DynoInt({ value: 0 }); - if (options.splats) { - this.splats = options.splats; - this.numSplats = options.splats.getNumSplats(); - } else if (options.paged) { - if (options.extSplats) { - console.warn( - "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" + async fetchDecodeChunk(chunk) { + let decodeBytes = void 0; + if (this.fileType === SplatFileType.RAD) { + const { meta, chunksStart } = await this.getRadMeta(); + if (chunk < 0 || chunk >= meta.chunks.length) { + throw new Error( + `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})` ); } - const rootUrl = options.url ?? ""; - if (options.paged === true) { - this.paged = new PagedSplats({ rootUrl }); - } else if (options.paged instanceof PagedSplats) { - this.paged = options.paged; - } else if (options.paged instanceof SplatPager) { - this.paged = new PagedSplats({ rootUrl, pager: options.paged }); + let { offset, bytes, filename } = meta.chunks[chunk]; + if (filename) { + if (this.fileBytes) { + throw new Error("Chunked RAD file not supported with fileBytes"); + } + const resolvedRoot = new URL( + this.rootUrl, + window.location.href + ).toString(); + const chunkUrl = new URL(filename, resolvedRoot).toString(); + decodeBytes = await fetchRange({ + url: chunkUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials + }); } else { - throw new Error("Invalid paged option"); - } - this.splats = this.paged; - } else if (options.extSplats) { - this.extSplats = options.extSplats instanceof ExtSplats ? options.extSplats : new ExtSplats(); - options.extSplats = this.extSplats; - this.numSplats = this.extSplats.numSplats; - this.splats = this.extSplats; - } else if (options.packedSplats) { - this.packedSplats = options.packedSplats; - this.packedSplats.splatEncoding = options.splatEncoding ?? { - ...DEFAULT_SPLAT_ENCODING - }; - this.splats = this.packedSplats; - } else { - this.packedSplats = new PackedSplats(); - } - this.editable = options.editable ?? true; - this.raycastable = options.raycastable ?? true; - this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2; - this.onFrame = options.onFrame; - this.context = { - transform: new SplatTransformer(), - viewToWorld: new SplatTransformer(), - worldToView: new SplatTransformer(), - viewToObject: new SplatTransformer(), - covTransform: new CovSplatTransformer(), - covViewToWorld: new CovSplatTransformer(), - covWorldToView: new CovSplatTransformer(), - covViewToObject: new CovSplatTransformer(), - recolor: new DynoVec4({ - value: new THREE__namespace.Vector4().setScalar(Number.NEGATIVE_INFINITY) - }), - time: new DynoFloat({ value: 0 }), - deltaTime: new DynoFloat({ value: 0 }), - numSplats: new DynoInt({ value: 0 }), - splats: new EmptySplatSource(), - enableLod: new DynoBool({ value: false }), - lodIndices: new DynoUsampler2D({ - value: emptyLodIndices, - key: "lodIndices" - }) - }; - this.covSplats = options.covSplats ?? false; - if (this.covSplats && !this.extSplats) { - throw new Error("CovSplats requires ExtSplats"); - } - this.objectModifiers = options.objectModifier ? [options.objectModifier] : void 0; - this.worldModifiers = options.worldModifier ? [options.worldModifier] : void 0; - if (options.objectModifiers) { - this.objectModifiers = options.objectModifiers; - } - if (options.worldModifiers) { - this.worldModifiers = options.worldModifiers; - } - this.enableLod = options.enableLod; - this.lodScale = options.lodScale ?? 1; - this.behindFoveate = options.behindFoveate; - this.coneFov0 = options.coneFov0; - this.coneFov = options.coneFov; - this.coneFoveate = options.coneFoveate; - this.updateGenerator(); - if (options.url || options.fileBytes || options.stream || options.constructSplats || options.packedSplats && !options.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) { - this.initialized = this.asyncInitialize(options).then(async () => { - this.updateGenerator(); - this.isInitialized = true; - if (options.onLoad) { - const maybePromise = options.onLoad(this); - if (maybePromise instanceof Promise) { - await maybePromise; + offset += chunksStart; + if (this.fileBytes) { + if (offset < 0 || offset + bytes > this.fileBytes.length) { + throw new Error( + `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}` + ); } + decodeBytes = this.fileBytes.slice(offset, offset + bytes); + } else if (this.rootUrl) { + decodeBytes = await fetchRange({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset, + bytes + }); + } else { + throw new Error("No url or fileBytes provided"); } - return this; + } + } else if (this.fileBytes) ; + else if (this.rootUrl) { + const url = this.chunkUrl(chunk); + const request = new Request(url, { + headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, + credentials: this.withCredentials ? "include" : "same-origin" }); - } else { - this.isInitialized = true; - this.initialized = Promise.resolve(this); - if (options.onLoad) { - const maybePromise = options.onLoad(this); - if (maybePromise instanceof Promise) { - this.initialized = maybePromise.then(() => this); - } + const response = await fetch(request); + if (!response.ok || !response.body) { + throw new Error( + `Failed to fetch "${url}": ${response.status} ${response.statusText}` + ); } + decodeBytes = new Uint8Array(await response.arrayBuffer()); + } else { + throw new Error("No url or fileBytes provided"); } - } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - constructSplats, - onProgress, - splatEncoding, - lod, - nonLod, - lodAbove - } = options; - if (this.packedSplats) { - if (url || fileBytes || stream || constructSplats) { - const packedSplatsOptions = { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - construct: constructSplats, - onProgress, - splatEncoding, - lod, - nonLod, - lodAbove - }; - this.packedSplats.reinitialize(packedSplatsOptions); + return await workerPool.withWorker(async (worker) => { + var _a2, _b2, _c, _d, _e; + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - await this.packedSplats.initialized; - this.splats = this.packedSplats; - } else if (this.extSplats) { - if (url || fileBytes || stream || constructSplats) { - const construct = constructSplats; - this.extSplats.reinitialize({ - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - construct, - onProgress, - lod, - nonLod, - lodAbove + if (!this.pager.extSplats) { + const result2 = await worker.call("loadPackedSplats", { + fileBytes: decodeBytes, + pathName: this.chunkUrl(chunk), + sh1Codes: (_a2 = this.sh1Codes) == null ? void 0 : _a2.slice(), + sh2Codes: (_b2 = this.sh2Codes) == null ? void 0 : _b2.slice(), + sh3Codes: (_c = this.sh3Codes) == null ? void 0 : _c.slice() }); - await this.extSplats.initialized; - this.splats = this.extSplats; + const lodSplats2 = result2.lodSplats; + if (!this.splatEncoding) { + this.splatEncoding = lodSplats2.splatEncoding; + this.numSh = lodSplats2.extra.sh3 ? 3 : lodSplats2.extra.sh2 ? 2 : lodSplats2.extra.sh1 ? 1 : 0; + this.rgbMinMaxLnScaleMinMax.value.set( + this.splatEncoding.rgbMin ?? 0, + this.splatEncoding.rgbMax ?? 1, + this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN, + this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX + ); + this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false; + this.shMax.value.set( + this.splatEncoding.sh1Max ?? 1, + this.splatEncoding.sh2Max ?? 1, + this.splatEncoding.sh3Max ?? 1 + ); + } + this.sh1Codes = lodSplats2.extra.sh1Codes ?? this.sh1Codes; + this.sh2Codes = lodSplats2.extra.sh2Codes ?? this.sh2Codes; + this.sh3Codes = lodSplats2.extra.sh3Codes ?? this.sh3Codes; + return lodSplats2; + } + const sh3Codes = this.sh3Codes; + const result = await worker.call("loadExtSplats", { + fileBytes: decodeBytes, + pathName: this.chunkUrl(chunk), + sh1Codes: (_d = this.sh1Codes) == null ? void 0 : _d.slice(), + sh2Codes: (_e = this.sh2Codes) == null ? void 0 : _e.slice(), + sh3Codes: sh3Codes ? [sh3Codes[0].slice(), sh3Codes[1].slice()] : void 0 + }); + const lodSplats = result.lodSplats; + if (!this.splatEncoding) { + this.splatEncoding = DEFAULT_SPLAT_ENCODING; + this.numSh = lodSplats.extra.sh3a && lodSplats.extra.sh3b ? 3 : lodSplats.extra.sh2 ? 2 : lodSplats.extra.sh1 ? 1 : 0; } + this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes; + this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes; + this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes; + return lodSplats; + }); + } + update(numSplats, indices) { + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - if (this.splats) { - this.numSplats = this.splats.getNumSplats(); - this.updateGenerator(); + const renderer = this.pager.renderer; + this.numSplats = numSplats; + this.dynoNumSplats.value = this.numSplats; + const rows = Math.ceil(numSplats / 16384); + let indicesTexture = this.dynoIndices.value === SplatPager.emptyIndicesTexture ? void 0 : this.dynoIndices.value; + if (indicesTexture && rows > indicesTexture.image.height) { + indicesTexture.dispose(); + indicesTexture = void 0; + } + if (!indicesTexture) { + indicesTexture = new THREE__namespace.DataTexture( + indices, + 4096, + rows, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType + ); + indicesTexture.internalFormat = "RGBA32UI"; + indicesTexture.needsUpdate = true; + renderer.initTexture(indicesTexture); + this.dynoIndices.value = indicesTexture; + } else { + const textureIndices = indicesTexture.image.data; + textureIndices.set(indices.subarray(0, numSplats)); + uploadU32DataTextureRows( + renderer, + indicesTexture, + 4096, + rows, + textureIndices + ); } } - static async staticInitialize() { - await __wbg_init(); - _SplatMesh.isStaticInitialized = true; + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; } - // Creates a new Gsplat with the provided parameters (all values in "float" space, - // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, - // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential - // doubling strategy to fit the new data, so it's fairly efficient to just - // pushSplat(...) each Gsplat you want to create in a loop. - pushSplat(center, scales, quaternion, opacity, color) { - if (this.packedSplats) { - this.packedSplats.pushSplat(center, scales, quaternion, opacity, color); - } else if (this.extSplats) { - this.extSplats.pushSplat(center, scales, quaternion, opacity, color); + hasRgbDir() { + if (!this.pager) { + return false; } + return Math.min(this.numSh, this.pager.maxSh) > 0; } - // This method iterates over all Gsplats in this instance's packedSplats, - // invoking the provided callback with index: number in 0..=(this.numSplats-1) and - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). - // Note that the objects passed in as center etc. are the same for every callback - // invocation: these objects are reused for efficiency. Changing these values has - // no effect as they are decoded/unpacked copies of the underlying data. To update - // the packedSplats, call .packedSplats.setSplat(index, center, scales, - // quaternion, opacity, color). - forEachSplat(callback) { - var _a2; - (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + getNumSh() { + return this.numSh; } - // Call this when you are finished with the SplatMesh and want to free - // any buffers it holds (via packedSplats). - dispose() { - if (this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats) { - this.splats.dispose(); - this.splats = void 0; + fetchSplat({ + index, + viewOrigin + }) { + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - if (this.packedSplats) { - this.packedSplats.dispose(); - this.packedSplats = void 0; + const splatIndex = this.pager.readIndex.apply({ + index, + numSplats: this.dynoNumSplats, + indices: this.dynoIndices + }).index; + if (!this.pager.extSplats) { + if (this.hasRgbDir() && viewOrigin) { + this.dynoNumSh.value = Math.min( + this.numSh, + this.maxSh, + this.pager.maxSh + ); + return this.pager.readSplatDir.apply({ + index: splatIndex, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity, + viewOrigin, + numSh: this.dynoNumSh, + shMax: this.shMax + }).gsplat; + } + return this.pager.readSplat.apply({ + index: splatIndex, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity + }).gsplat; } - if (this.extSplats) { - this.extSplats.dispose(); - this.extSplats = void 0; + if (this.hasRgbDir() && viewOrigin) { + this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh); + return this.pager.readSplatExtDir.apply({ + index: splatIndex, + viewOrigin, + numSh: this.dynoNumSh + }).gsplat; } + return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat; } - // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, - // only the centers of the splats are used to compute the bounding box. - // IMPORTANT: This should only be called after the SplatMesh is initialized. - getBoundingBox(centers_only = true) { - var _a2; - if (!this.initialized) { - throw new Error( - "Cannot get bounding box before SplatMesh is initialized" + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.pager || !this.numSplats) { + return; + } + const extSplats = this.pager.extSplats; + const indices = this.dynoIndices.value.image.data; + const packedSplatArray = this.pager.packedTexture.value.image.data; + const extPackedSplatArray = this.pager.extTexture.value.image.data; + const extArrays = [ + packedSplatArray, + extPackedSplatArray + ]; + for (let i = 0; i < this.numSplats; ++i) { + const splatIndex = indices[i]; + const unpacked = extSplats ? decodeExtSplat(extArrays, splatIndex) : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color ); } - const minVec = new THREE__namespace.Vector3( - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY + } +} +const _SplatPager = class _SplatPager { + constructor(options) { + this.fetchPause = 0; + this.splatsChunkToPage = /* @__PURE__ */ new Map(); + this.pageToSplatsChunk = []; + this.renderer = options.renderer; + this.extSplats = options.extSplats ?? false; + this.pageSplats = PAGE_SPLATS; + this.maxSplats = options.maxSplats ?? 16777216; + this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS); + this.maxSplats = this.maxPages * PAGE_SPLATS; + this.maxSh = options.maxSh ?? 3; + this.curSh = 0; + this.autoDrive = options.autoDrive ?? true; + this.numFetchers = options.numFetchers ?? 3; + this.splatsChunkToPage = /* @__PURE__ */ new Map(); + this.pageToSplatsChunk = new Array(this.maxPages); + this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i); + this.pageLru = /* @__PURE__ */ new Set(); + this.freeablePages = []; + this.newUploads = []; + this.readyUploads = []; + this.lodTreeUpdates = []; + this.fetchers = []; + this.fetched = []; + this.fetchPriority = []; + this.packedTexture = new DynoUsampler2DArray({ + value: this.newUint32ArrayTexture(4) + }); + this.extTexture = new DynoUsampler2DArray({ + value: this.extSplats ? this.newUint32ArrayTexture(4) : _SplatPager.emptyExtTexture + }); + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + this.shTextures = emptyShTextures.map( + (texture2) => new DynoUsampler2DArray({ + value: texture2 + }) ); - const maxVec = new THREE__namespace.Vector3( - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY + this.highlightLabel = new DynoInt({ key: "highlightLabel", value: -1 }); + this.lookUpTexture = new DynoUsampler2D({ + value: new THREE__namespace.DataTexture( + new Uint32Array(256), + 256, + 1, + THREE__namespace.RedIntegerFormat, + THREE__namespace.UnsignedIntType + ) + }); + this.lookUpTexture.value.image.data.fill(1); + this.lookUpTexture.value.needsUpdate = true; + this.renderer.initTexture(this.lookUpTexture.value); + this.labelTexture = new DynoUsampler2DArray({ + value: _SplatPager.emptyLabelTexture + }); + this.instanceTexture = new DynoUsampler2DArray({ + value: _SplatPager.emptyLabelTexture + }); + this.labelLookupModifier = new Dyno({ + inTypes: { + gsplat: Gsplat, + lookup: "usampler2D", + label: "usampler2DArray", + instance: "usampler2DArray", + highlightLabel: "int" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + lookup: this.lookUpTexture, + label: this.labelTexture, + instance: this.instanceTexture, + highlightLabel: this.highlightLabel + }, + globals: () => [ + randomColourFromID, + defineGsplat + ], + statements: ({ inputs, outputs }) => unindentLines(` + Gsplat g = ${inputs.gsplat}; + + ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16); + uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0); + uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r; + if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; } + + if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) { + uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0); + vec4 splatColour = getDeterministicColor(instanceTexel.r); + g.rgba = mix(g.rgba, splatColour, 0.6); + } + + ${outputs.gsplat} = g; + `) + }); + this.readIndex = dynoBlock( + { index: "int", numSplats: "int", indices: "usampler2D" }, + { index: "int" }, + ({ index, numSplats, indices }) => { + return new Dyno({ + inTypes: { + index: "int", + numSplats: "int", + indices: "usampler2D" + }, + outTypes: { index: "int" }, + inputs: { + index, + numSplats, + indices + }, + statements: ({ inputs, outputs }) => unindentLines(` + if (${inputs.index} >= ${inputs.numSplats}) { + return; + } + + ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14); + uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3]; + ${outputs.index} = int(index); + `) + }).outputs; + } ); - const corners = new THREE__namespace.Vector3(); - const signs = [-1, 1]; - function callback(_index, center, scales, quaternion, _opacity, _color) { - if (centers_only) { - minVec.min(center); - maxVec.max(center); - } else { - for (const x of signs) { - for (const y of signs) { - for (const z of signs) { - corners.set(x * scales.x, y * scales.y, z * scales.z); - corners.applyQuaternion(quaternion); - corners.add(center); - minVec.min(corners); - maxVec.max(corners); + this.readSplat = dynoBlock( + { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, + { gsplat: Gsplat }, + ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => { + return new Dyno({ + inTypes: { + index: "int", + packedTexture: "usampler2DArray", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + index, + packedTexture: this.packedTexture, + rgbMinMaxLnScaleMinMax, + lodOpacity + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + ivec3 splatCoord = pagedSplatTexCoord(index); + uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0); + + unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax}); + if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; } - } - } + + ${outputs.gsplat}.index = index; + ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + if (${inputs.lodOpacity}) { + ${outputs.gsplat}.rgba.a *= 2.0; + } + `) + }).outputs; } - } - (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); - const box = new THREE__namespace.Box3(minVec, maxVec); - return box; - } - set objectModifier(modifier) { - if (modifier) { - this.objectModifiers = [modifier]; - } else { - this.objectModifiers = void 0; - } - } - set worldModifier(modifier) { - if (modifier) { - this.worldModifiers = [modifier]; - } else { - this.worldModifiers = void 0; - } - } - constructGenerator(context) { - if (this.covSplats) { - return this.constructCovGenerator(context); - } - const { transform, viewToObject, recolor } = context; - const generator = dynoBlock( - { index: "int" }, + ); + this.readSplatDir = dynoBlock( + { + index: "int", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool", + viewOrigin: "vec3", + numSh: "int", + shMax: "vec3" + }, { gsplat: Gsplat }, - ({ index }) => { - if (!index) { - throw new Error("index is undefined"); + ({ + index, + rgbMinMaxLnScaleMinMax, + lodOpacity, + viewOrigin, + numSh, + shMax + }) => { + if (!index || !rgbMinMaxLnScaleMinMax || !lodOpacity || !viewOrigin || !numSh || !shMax) { + throw new Error("index and viewOrigin are required"); } - index = maybeLookupIndex( - context.lodIndices, - index, - context.numSplats, - context.enableLod, - this.showLodPageDyno - ); - context.splats.setMaxSh(this.maxSh); - context.splats.prepareFetchSplat(); - let gsplat = context.splats.fetchSplat({ + let gsplat = this.readSplat.apply({ index, - viewOrigin: viewToObject.translate - }); - if (this.splatRgba) { - gsplat = maybeInjectSplatRgba( - gsplat, - this.splatRgba.dyno, - index, - context.enableLod - ); - } - if (this.skinning) { - gsplat = this.skinning.modify(gsplat); - } - if (this.objectModifiers) { - for (const modifier of this.objectModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } - gsplat = transform.applyGsplat(gsplat); - const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba); - gsplat = combineGsplat({ gsplat, rgba: recolorRgba }); - if (this.rgbaDisplaceEdits) { - gsplat = this.rgbaDisplaceEdits.modify(gsplat); - } - if (this.worldModifiers) { - for (const modifier of this.worldModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } + rgbMinMaxLnScaleMinMax, + lodOpacity + }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + let rgb = evaluatePackedSH({ + coord: pagedSplatTexCoord(index), + viewDir, + numSh, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3Texture: this.shTextures[2], + shMax + }).rgb; + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); return { gsplat }; } ); - this.generator = generator; - this.covGenerator = void 0; - } - constructCovGenerator(context) { - const { covTransform, covViewToObject, recolor } = context; - const generator = dynoBlock( + this.readSplatExt = dynoBlock( { index: "int" }, - { covsplat: CovSplat }, + { gsplat: Gsplat }, ({ index }) => { - if (!index) { - throw new Error("index is undefined"); - } - index = maybeLookupIndex( - context.lodIndices, - index, - context.numSplats, - context.enableLod, - this.showLodPageDyno - ); - context.splats.prepareFetchSplat(); - let gsplat = context.splats.fetchSplat({ - index, - viewOrigin: covViewToObject.offset - }); - if (this.splatRgba) { - gsplat = maybeInjectSplatRgba( - gsplat, - this.splatRgba.dyno, + return new Dyno({ + inTypes: { + index: "int", + extTexture1: "usampler2DArray", + extTexture2: "usampler2DArray" + }, + outTypes: { gsplat: Gsplat }, + inputs: { index, - context.enableLod - ); - } - if (this.objectModifiers) { - for (const modifier of this.objectModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } - let covsplat = gsplatToCovSplat(gsplat); - if (this.skinning) { - covsplat = this.skinning.modifyCov(covsplat); - } - if (this.covObjectModifiers) { - for (const modifier of this.covObjectModifiers) { - covsplat = modifier.apply({ covsplat }).covsplat; - } - } - covsplat = covTransform.applyCovSplat(covsplat); - const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba); - covsplat = combineCovSplat({ covsplat, rgba: recolorRgba }); - if (this.rgbaDisplaceEdits) { - covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat); - } - if (this.covWorldModifiers) { - for (const modifier of this.covWorldModifiers) { - covsplat = modifier.apply({ covsplat }).covsplat; - } + extTexture1: this.packedTexture, + extTexture2: this.extTexture + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); + uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0); + float alpha = unpackSplatExtAlpha(ext1); + if (alpha == 0.0) { + return; + } + + uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0); + unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba); + if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${outputs.gsplat}.index = index; + ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + `) + }).outputs; + } + ); + this.readSplatExtDir = dynoBlock( + { + index: "int", + viewOrigin: "vec3", + numSh: "int" + }, + { gsplat: Gsplat }, + ({ index, viewOrigin, numSh }) => { + if (!index || !viewOrigin || !numSh) { + throw new Error("index and viewOrigin are required"); } - return { covsplat }; + let gsplat = this.readSplatExt.apply({ index }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + let rgb = evaluateExtSH({ + coord: pagedSplatTexCoord(index), + viewDir, + numSh, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3TextureA: this.shTextures[2], + sh3TextureB: this.shTextures[3] + }).rgb; + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); + return { gsplat }; } ); - this.generator = void 0; - this.covGenerator = generator; - } - // Call this whenever something changes in the Gsplat processing pipeline, - // for example changing maxSh or updating objectModifier or worldModifier. - // Compiled generators are cached for efficiency and re-use when the same - // pipeline structure emerges after successive changes. - updateGenerator() { - this.generatorDirty = true; } - // This is called automatically by SparkRenderer and you should not have to - // call it. It updates parameters for the generated pipeline and calls - // updateGenerator() if the pipeline needs to change. - update({ - renderer, - time, - deltaTime, - viewToWorld, - camera, - renderSize, - globalEdits, - lodIndices - }) { - var _a2, _b2, _c; - this.context.time.value = time; - this.context.deltaTime.value = deltaTime; - _SplatMesh.dynoTime.value = time; - this.showLodPageDyno.value = this.showLodPage ?? -1; - const splats = this.splats ?? this.packedSplats ?? this.extSplats; - if (splats) { - this.context.splats = splats; - } - this.numSplats = this.context.splats.getNumSplats(); - let updated = false; - const lodSplats = ((_a2 = this.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = this.extSplats) == null ? void 0 : _b2.lodSplats); - this.context.enableLod.value = lodSplats != null && lodIndices != null; - if (this.enableLod === false) { - this.context.enableLod.value = false; + dispose() { + this.autoDrive = false; + this.numFetchers = 0; + this.packedTexture.value.dispose(); + this.packedTexture.value.source.data = null; + if (this.extTexture.value !== _SplatPager.emptyExtTexture) { + this.extTexture.value.dispose(); + this.extTexture.value.source.data = null; } - this.context.lodIndices.value = (lodIndices == null ? void 0 : lodIndices.texture) ?? emptyLodIndices; - if (this.context.enableLod.value && lodSplats) { - this.context.splats = lodSplats; - this.numSplats = (lodIndices == null ? void 0 : lodIndices.numSplats) ?? 0; + if (this.labelTexture.value !== _SplatPager.emptyLabelTexture) { + this.labelTexture.value.dispose(); + this.labelTexture.value.source.data = null; } - this.context.numSplats.value = this.numSplats; - if (this.context.splats !== this.lastSplats) { - this.lastSplats = this.context.splats; - this.generatorDirty = true; + if (this.instanceTexture.value !== _SplatPager.emptyLabelTexture) { + this.instanceTexture.value.dispose(); + this.instanceTexture.value.source.data = null; } - if (!this.covSplats) { - if (this.context.transform.update(this)) { - updated = true; - } - if (this.context.viewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { - updated = true; - } - const worldToView = viewToWorld.clone().invert(); - if (this.context.worldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { - updated = true; + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + for (let i = 0; i < emptyShTextures.length; i++) { + const texture2 = this.shTextures[i].value; + if (texture2 !== emptyShTextures[i]) { + texture2.dispose(); + texture2.source.data = null; } - const objectToWorld = new THREE__namespace.Matrix4().compose( - this.context.transform.translate.value, - this.context.transform.rotate.value, - new THREE__namespace.Vector3().setScalar(this.context.transform.scale.value) + } + } + updateLabelLookup(categories) { + const array = this.lookUpTexture.value.image.data; + array.fill(0); + categories.forEach((id) => { + if (id >= 0 && id < 256) array[id] = 1; + }); + this.lookUpTexture.value.needsUpdate = true; + } + newUintArrayTex(data, width, height, depth, format, type, internalFormat) { + const texture2 = new THREE__namespace.DataArrayTexture(data, width, height, depth); + texture2.format = format; + texture2.type = type; + texture2.internalFormat = internalFormat; + texture2.needsUpdate = true; + this.renderer.initTexture(texture2); + return texture2; + } + ensureLabelTextures() { + if (this.labelTexture.value === _SplatPager.emptyLabelTexture) { + this.labelTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE__namespace.RedIntegerFormat, + THREE__namespace.UnsignedIntType, + "R32UI" ); - const worldToObject = objectToWorld.invert(); - const viewToObjectMatrix = worldToObject.multiply(viewToWorld); - if (this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { - updated = true; - } - } else { - if (this.context.covTransform.update(this)) { - updated = true; - } - if (this.context.covViewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { - updated = true; - } - const worldToView = viewToWorld.clone().invert(); - if (this.context.covWorldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { - updated = true; - } - const worldToObject = this.matrixWorld.clone().invert(); - const viewToObjectMatrix = worldToObject.multiply(viewToWorld); - if (this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { - updated = true; + } + } + updateLabelHighlight(id) { + this.highlightLabel.value = id; + } + ensureInstanceTextures() { + if (this.instanceTexture.value === _SplatPager.emptyLabelTexture) { + this.instanceTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE__namespace.RedIntegerFormat, + THREE__namespace.UnsignedIntType, + "R32UI" + ); + } + } + ensureShTextures(numSh) { + this.curSh = Math.max(this.curSh, numSh); + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + for (let i = 0; i < this.curSh; i++) { + if (this.shTextures[i].value === emptyShTextures[i]) { + const elementsPerSplat = this.shTextures[i].value === _SplatPager.emptyUint32x2 ? 2 : 4; + this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat); } } - const newRecolor = new THREE__namespace.Vector4( - this.recolor.r, - this.recolor.g, - this.recolor.b, - this.opacity - ); - if (!newRecolor.equals(this.context.recolor.value)) { - this.context.recolor.value.copy(newRecolor); - updated = true; + } + allocatePage() { + return this.pageFreelist.shift(); + } + getSplatsChunk(splats, chunk) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + return void 0; } - const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : []; - if (this.editable && !this.edits) { - this.traverseVisible((node) => { - if (node instanceof SplatEdit) { - edits.push(node); - } - }); + return chunks[chunk]; + } + insertSplatsChunkPage(splats, chunk, page, now) { + if (!this.splatsChunkToPage.has(splats)) { + this.splatsChunkToPage.set(splats, []); } - edits.sort((a, b) => a.ordering - b.ordering); - const editsSdfs = edits.map((edit) => { - if (edit.sdfs != null) { - return { edit, sdfs: edit.sdfs }; - } - const sdfs = []; - edit.traverseVisible((node) => { - if (node instanceof SplatEditSdf) { - sdfs.push(node); - } - }); - return { edit, sdfs }; - }); - if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) { - const edits2 = editsSdfs.length; - const sdfs = editsSdfs.reduce( - (total, edit) => total + edit.sdfs.length, - 0 + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + throw new Error("impossible"); + } + if (chunk >= chunks.length) { + chunks.length = chunk + 1; + } + const pageLru = { page, lru: now }; + chunks[chunk] = pageLru; + this.pageLru.add(pageLru); + this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() }; + return this.pageToSplatsChunk[page]; + } + removeSplatsChunkPage(splats, chunk, page) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + throw new Error("impossible"); + } + const pageLru = chunks[chunk]; + if (!pageLru) { + throw new Error( + `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}` ); - this.rgbaDisplaceEdits = new SplatEdits({ - maxEdits: edits2, - maxSdfs: sdfs - }); - this.generatorDirty = true; } - if (this.rgbaDisplaceEdits) { - const editResult = this.rgbaDisplaceEdits.update(editsSdfs); - updated || (updated = editResult.updated); - if (editResult.dynoUpdated) { - this.generatorDirty = true; - } + this.pageLru.delete(pageLru); + chunks[chunk] = void 0; + while (chunks.length > 0 && chunks[chunks.length - 1] === void 0) { + chunks.pop(); } - if (this.generatorDirty) { - this.constructGenerator(this.context); - this.generatorDirty = false; - updated = true; + if (chunks.length === 0) { + this.splatsChunkToPage.delete(splats); } - if (updated) { - this.updateVersion(); + this.pageToSplatsChunk[page] = void 0; + while (this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0) { + this.pageToSplatsChunk.pop(); } - (_c = this.onFrame) == null ? void 0 : _c.call(this, { mesh: this, time, deltaTime }); } - // This method conforms to the standard THREE.Raycaster API, performing object-ray - // intersections using this method to populate the provided intersects[] array - // with each intersection point. - raycast(raycaster, intersects) { - var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; - if (!_SplatMesh.isStaticInitialized || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) { + removeSplats(splats) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { return; - } - const paged = this.paged != null; - const ext = paged ? ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.extSplats) ?? false : this.extSplats != null; - const { near, far, ray } = raycaster; - const worldToMesh = this.matrixWorld.clone().invert(); - const worldToMeshRot = new THREE__namespace.Matrix3().setFromMatrix4(worldToMesh); - const origin = ray.origin.clone().applyMatrix4(worldToMesh); - const direction = ray.direction.clone().applyMatrix3(worldToMeshRot); - const buffer = get_raycast_buffer(); - const bufferSize = buffer.length / 4; - let intersections = 0; - const numSplats = ((_c = this.raycastIndices) == null ? void 0 : _c.numSplats) ?? (paged ? (_d = this.paged) == null ? void 0 : _d.numSplats : this.context.numSplats.value) ?? 0; - const indices = ((_e = this.raycastIndices) == null ? void 0 : _e.indices) ?? (paged ? (_f = this.paged) == null ? void 0 : _f.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; - if (!ext) { - const packed = paged ? (_h = (_g = this.paged) == null ? void 0 : _g.pager) == null ? void 0 : _h.packedTexture.value.image.data : indices ? (_j = (_i = this.packedSplats) == null ? void 0 : _i.lodSplats) == null ? void 0 : _j.packedArray : (_k = this.packedSplats) == null ? void 0 : _k.packedArray; - if (!packed) { - return; - } - const splatEncoding = paged ? (_l = this.paged) == null ? void 0 : _l.splatEncoding : (_m = this.packedSplats) == null ? void 0 : _m.splatEncoding; - for (let base = 0; base < numSplats; base += bufferSize) { - const count = Math.min(bufferSize, numSplats - base); - if (!indices) { - buffer.set(packed.subarray(base * 4, (base + count) * 4)); + } + const freedPages = /* @__PURE__ */ new Set(); + while (chunks.length > 0) { + const chunk = chunks.pop(); + if (chunk) { + const { page } = chunk; + this.pageToSplatsChunk[page] = void 0; + freedPages.add(page); + this.pageFreelist.push(page); + this.pageLru.delete(chunk); + } + } + this.splatsChunkToPage.delete(splats); + this.freeablePages = this.freeablePages.filter( + (page) => !freedPages.has(page) + ); + } + uploadPage(page, packedArray, shArrays, extArray, labels, instances) { + const pageBase = page * PAGE_SPLATS; + uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray); + if (extArray) { + uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray); + } + const numSh = Math.min(shArrays.length, 3); + this.ensureShTextures(numSh); + if (labels !== void 0) { + this.ensureLabelTextures(); + const labels_arr = labels; + const array = this.labelTexture.value.image.data; + array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr); + this.labelTexture.value.addLayerUpdate(page); + this.labelTexture.value.needsUpdate = true; + } + if (instances !== void 0) { + this.ensureInstanceTextures(); + const instances_arr = instances; + const array = this.instanceTexture.value.image.data; + array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr); + this.instanceTexture.value.addLayerUpdate(page); + this.instanceTexture.value.needsUpdate = true; + } + for (let i = 0; i < shArrays.length; i++) { + const array = shArrays[i]; + const elementsPerSplat = this.shTextures[i].value.format === THREE__namespace.RGIntegerFormat ? 2 : 4; + uploadTextureLayer( + this.shTextures[i], + page, + pageBase * elementsPerSplat, + array + ); + } + } + newUint32ArrayTexture(elementsPerSplat) { + const data = new Uint32Array( + this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat + ); + const texture2 = new THREE__namespace.DataArrayTexture( + data, + PAGE_WIDTH, + PAGE_HEIGHT, + this.maxPages + ); + texture2.format = elementsPerSplat === 2 ? THREE__namespace.RGIntegerFormat : THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = elementsPerSplat === 2 ? "RG32UI" : "RGBA32UI"; + texture2.needsUpdate = true; + texture2.source.dataReady = false; + this.renderer.initTexture(texture2); + return texture2; + } + driveFetchers() { + const needed = []; + const overflow = []; + let numPages = 0; + for (const { splats, chunk } of this.fetchPriority) { + const pageLru = this.getSplatsChunk(splats, chunk); + if (pageLru) { + if (numPages >= this.maxPages) { + overflow.push(pageLru); } else { - for (let i = 0; i < count; ++i) { - const index = indices[base + i]; - const i4 = i * 4; - const index4 = index * 4; - buffer[i4] = packed[index4]; - buffer[i4 + 1] = packed[index4 + 1]; - buffer[i4 + 2] = packed[index4 + 2]; - buffer[i4 + 3] = packed[index4 + 3]; - } + needed.push(pageLru); } - const newIntersections = raycast_packed_buffer( - origin.x, - origin.y, - origin.z, - direction.x, - direction.y, - direction.z, - this.minRaycastOpacity, - near, - far, - count, - (splatEncoding == null ? void 0 : splatEncoding.lnScaleMin) ?? LN_SCALE_MIN, - (splatEncoding == null ? void 0 : splatEncoding.lnScaleMax) ?? LN_SCALE_MAX, - (splatEncoding == null ? void 0 : splatEncoding.lodOpacity) ?? false - ); - intersections = this.appendRaycastBuffer( - intersections, - newIntersections - ); + numPages += 1; + continue; } - } else { - const buffer2 = get_raycast_buffer2(); - const ext1 = paged ? (_o = (_n = this.paged) == null ? void 0 : _n.pager) == null ? void 0 : _o.packedTexture.value.image.data : indices ? (_q = (_p = this.extSplats) == null ? void 0 : _p.lodSplats) == null ? void 0 : _q.extArrays[0] : (_r = this.extSplats) == null ? void 0 : _r.extArrays[0]; - const ext2 = paged ? (_t = (_s = this.paged) == null ? void 0 : _s.pager) == null ? void 0 : _t.extTexture.value.image.data : indices ? (_v = (_u = this.extSplats) == null ? void 0 : _u.lodSplats) == null ? void 0 : _v.extArrays[1] : (_w = this.extSplats) == null ? void 0 : _w.extArrays[1]; - if (!ext1 || !ext2) { - return; + if (this.fetched.some( + ({ splats: s, chunk: c }) => splats === s && chunk === c + ) || this.fetchers.some( + ({ splats: s, chunk: c }) => splats === s && chunk === c + )) { + numPages += 1; + continue; } - for (let base = 0; base < numSplats; base += bufferSize) { - const count = Math.min(bufferSize, numSplats - base); - if (!indices) { - buffer.set(ext1.subarray(base * 4, (base + count) * 4)); - buffer2.set(ext2.subarray(base * 4, (base + count) * 4)); - } else { - for (let i = 0; i < count; ++i) { - const index = indices[base + i]; - const i4 = i * 4; - const index4 = index * 4; - buffer[i4] = ext1[index4]; - buffer[i4 + 1] = ext1[index4 + 1]; - buffer[i4 + 2] = ext1[index4 + 2]; - buffer[i4 + 3] = ext1[index4 + 3]; - buffer2[i4] = ext2[index4]; - buffer2[i4 + 1] = ext2[index4 + 1]; - buffer2[i4 + 2] = ext2[index4 + 2]; - buffer2[i4 + 3] = ext2[index4 + 3]; + if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) { + numPages += 1; + const promise = splats.fetchDecodeChunk(chunk).then( + async (data) => { + this.fetched.push({ splats, chunk, data }); + if (this.fetchPause > 0) { + await new Promise( + (resolve) => setTimeout(resolve, this.fetchPause) + ); + } + }, + async (error) => { + console.warn(error); + const backoff = 250 + 500 * Math.random(); + await new Promise((resolve) => setTimeout(resolve, backoff)); } - } - const newIntersections = raycast_ext_buffers( - origin.x, - origin.y, - origin.z, - direction.x, - direction.y, - direction.z, - this.minRaycastOpacity, - near, - far, - count - ); - intersections = this.appendRaycastBuffer( - intersections, - newIntersections - ); + ).finally(() => { + this.fetchers = this.fetchers.filter( + ({ splats: s, chunk: c }) => splats !== s || chunk !== c + ); + this.processFetched(); + }); + this.fetchers.push({ splats, chunk, promise }); + promise.then((data) => { + if (this.autoDrive) { + this.driveFetchers(); + } + }); } } - for (const distance2 of _SplatMesh.raycastBuffer.subarray(0, intersections)) { - const point = ray.direction.clone().multiplyScalar(distance2).add(ray.origin); - intersects.push({ - distance: distance2, - point, - object: this - }); + const now = performance.now(); + for (const pageLru of overflow.reverse()) { + pageLru.lru = now; + this.pageLru.delete(pageLru); + this.pageLru.add(pageLru); } - } - appendRaycastBuffer(count, additional) { - const total = count + additional.length; - let capacity = _SplatMesh.raycastBuffer.length; - if (total > capacity) { - while (capacity < total) { - capacity *= 2; - } - const newBuffer = new Float32Array(capacity); - newBuffer.set(_SplatMesh.raycastBuffer.subarray(0, count)); - _SplatMesh.raycastBuffer = newBuffer; + const extraPages = new Set(this.pageLru); + for (const pageLru of needed.reverse()) { + extraPages.delete(pageLru); + pageLru.lru = now; + this.pageLru.delete(pageLru); + this.pageLru.add(pageLru); } - _SplatMesh.raycastBuffer.set(additional, count); - return count + additional.length; + this.freeablePages = Array.from(extraPages).map(({ page }) => page); } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - if (this.packedSplats) { - await this.packedSplats.createLodSplats({ quality, rgbaArray }); - } else if (this.extSplats) { - await this.extSplats.createLodSplats({ quality, rgbaArray }); + allocateFreeable() { + const page = this.freeablePages.shift(); + if (page === void 0) { + return void 0; + } + const splatsChunk = this.pageToSplatsChunk[page]; + if (!splatsChunk) { + throw new Error(`splatsChunk not found for page: ${page}`); } + const { splats, chunk } = splatsChunk; + this.removeSplatsChunkPage(splats, chunk, page); + this.lodTreeUpdates.push({ + splats, + page, + chunk, + numSplats: PAGE_SPLATS + }); + return page; } -}; -_SplatMesh.staticInitialized = _SplatMesh.staticInitialize(); -_SplatMesh.isStaticInitialized = false; -_SplatMesh.dynoTime = new DynoFloat({ value: 0 }); -_SplatMesh.raycastBuffer = new Float32Array(1024); -let SplatMesh = _SplatMesh; -function maybeLookupIndex(lodIndices, index, numSplats, enableLod, showLodPage) { - return dyno$1({ - inTypes: { - lodIndices: "usampler2D", - index: "int", - numSplats: "int", - enableLod: "bool", - showLodPage: "int" - }, - outTypes: { - index: "int" - }, - inputs: { - lodIndices, - index, - numSplats, - enableLod, - showLodPage - }, - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - if (${inputs.showLodPage} < 0) { - if (index >= ${inputs.numSplats}) { - return; - } - if (${inputs.enableLod}) { - ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); - uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3]; - ${outputs.index} = int(splatIndex); - } else { - ${outputs.index} = index; - } - } else { - int start = ${inputs.showLodPage} << 16; - if (index >= 65536) { - return; - } - ${outputs.index} = start + index; - } - `) - }).outputs.index; -} -function maybeInjectSplatRgba(gsplat, rgba, index, enableLod) { - return dyno$1({ - inTypes: { - gsplat: Gsplat, - rgba: TRgbaArray, - index: "int", - enableLod: "bool" - }, - outTypes: { gsplat: Gsplat }, - inputs: { gsplat, rgba, index, enableLod }, - statements: ({ inputs, outputs }) => unindentLines(` - ${outputs.gsplat} = ${inputs.gsplat}; - if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { - ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); + processFetched() { + const now = performance.now(); + while (true) { + const fetched = this.fetched.shift(); + if (!fetched) { + break; + } + const { splats, chunk, data } = fetched; + let page = this.allocatePage(); + if (page === void 0) { + page = this.allocateFreeable(); + if (page === void 0) { + return; } - `) - }).outputs.gsplat; -} -const emptyLodIndices = (() => { - const texture2 = new THREE__namespace.DataTexture( - new Uint32Array(16384), - 4096, - 1, - THREE__namespace.RGBAIntegerFormat, - THREE__namespace.UnsignedIntType + } + this.insertSplatsChunkPage(splats, chunk, page, now); + const { numSplats, extra } = data; + this.lodTreeUpdates.push({ + splats, + page, + chunk, + numSplats, + lodTree: extra.lodTree + }); + if (isExtResult(data, this.extSplats)) { + const extArrays = data.extArrays; + const packedArray = extArrays[0]; + const extArray = extArrays[1]; + const shArrays = [ + data.extra.sh1, + data.extra.sh2, + data.extra.sh3a, + data.extra.sh3b + ]; + shArrays.length = shArrays.findIndex((sh) => !sh); + this.newUploads.push({ + page, + numSplats, + packedArray, + extArray, + shArrays, + labels: extra == null ? void 0 : extra.labels, + instances: extra == null ? void 0 : extra.instances + }); + } else { + const packedArray = data.packedArray; + const shArrays = [ + data.extra.sh1, + data.extra.sh2, + data.extra.sh3 + ]; + shArrays.length = shArrays.findIndex((sh) => !sh); + this.newUploads.push({ + page, + numSplats, + packedArray, + shArrays + }); + } + } + } + processUploads() { + while (true) { + const upload = this.readyUploads.shift(); + if (!upload) { + break; + } + const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload; + this.uploadPage(page, packedArray, shArrays, extArray, labels, instances); + } + } + consumeLodTreeUpdates() { + const updates = this.lodTreeUpdates; + this.lodTreeUpdates = []; + this.readyUploads.push(...this.newUploads); + this.newUploads = []; + return updates; + } +}; +_SplatPager.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth ); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; texture2.internalFormat = "RGBA32UI"; texture2.needsUpdate = true; return texture2; })(); -new THREE__namespace.BufferGeometry(); -new THREE__namespace.ShaderMaterial(); -const PLY_PROPERTY_TYPES = [ - "char", - "uchar", - "short", - "ushort", - "int", - "uint", - "float", - "double" +_SplatPager.emptyUint32x2 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 2); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE__namespace.RGIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatPager.emptyIndicesTexture = (() => { + const emptyArray = new Uint32Array(4096 * 4); + const texture2 = new THREE__namespace.DataTexture(emptyArray, 4096, 1); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatPager.emptyPackedTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyExtTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyLabelTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyShTextures = [ + _SplatPager.emptyUint32x2, + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4 ]; -const _PlyReader = class _PlyReader { - // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet - constructor({ fileBytes }) { - this.header = ""; - this.littleEndian = true; - this.elements = {}; - this.comments = []; - this.data = null; - this.numSplats = 0; - this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes; +_SplatPager.emptyExtShTextures = [ + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4, + // SH3A + _SplatPager.emptyUint32x4 + // SH3B +]; +let SplatPager = _SplatPager; +function isExtResult(data, extSplats) { + return extSplats; +} +function uploadTextureLayer(texture2, layer, dstOffset, data) { + const array = texture2.value.image.data; + array.subarray(dstOffset, dstOffset + data.length).set(data); + texture2.value.addLayerUpdate(layer); + texture2.value.needsUpdate = true; + texture2.value.source.dataReady = true; +} +async function fetchRange({ + url, + requestHeader, + withCredentials, + offset, + bytes +}) { + const request = new Request(url, { + headers: requestHeader ? new Headers(requestHeader) : void 0, + credentials: withCredentials ? "include" : "same-origin" + }); + if (offset !== void 0 && bytes !== void 0) { + request.headers.set("Range", `bytes=${offset}-${offset + bytes - 1}`); } - // Identify and parse the PLY text header (assumed to be <64KB in size). - // this.elements will contain all the elements in the file, typically - // "vertex" contains the Gsplat data. - async parseHeader() { - const bufferStream = new ReadableStream({ - start: (controller) => { - controller.enqueue(this.fileBytes.slice(0, 65536)); - controller.close(); - } + const response = await fetch(request); + if (!response.ok || !response.body) { + throw new Error( + `Failed to fetch "${url}": ${response.status} ${response.statusText}` + ); + } + return new Uint8Array(await response.arrayBuffer()); +} +class EmptySplatSource { + constructor() { + this.fetchDyno = new Dyno({ + inTypes: {}, + outTypes: { gsplat: Gsplat }, + globals: () => [defineGsplat], + statements: ({ outputs }) => unindentLines(` + ${outputs.gsplat}.flags = 0u; + return; + `) + }).outputs.gsplat; + } + prepareFetchSplat() { + } + dispose() { + } + getNumSplats() { + return 0; + } + hasRgbDir() { + return false; + } + getNumSh() { + return 0; + } + setMaxSh(maxSh) { + } + fetchSplat({ index }) { + return this.fetchDyno; + } + forEachSplat() { + } +} +const _SplatMesh = class _SplatMesh extends SplatGenerator { + constructor(options = {}) { + super({ + update: (context) => this.update(context) }); - const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader(); - this.header = ""; - const headerTerminator = "end_header\n"; - while (true) { - const { value, done } = await decoder.read(); - if (done) { - throw new Error("Failed to read header"); + this.isInitialized = false; + this.recolor = new THREE__namespace.Color(1, 1, 1); + this.opacity = 1; + this.generatorDirty = true; + this.enableViewToObject = false; + this.enableViewToWorld = false; + this.enableWorldToView = false; + this.skinning = null; + this.edits = null; + this.rgbaDisplaceEdits = null; + this.splatRgba = null; + this.maxSh = 3; + this.showLodPageDyno = new DynoInt({ value: 0 }); + if (options.splats) { + this.splats = options.splats; + this.numSplats = options.splats.getNumSplats(); + } else if (options.paged) { + if (options.extSplats) { + console.warn( + "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" + ); } - this.header += value; - const endHeader = this.header.indexOf(headerTerminator); - if (endHeader >= 0) { - this.header = this.header.slice(0, endHeader + headerTerminator.length); - break; + const rootUrl = options.url ?? ""; + if (options.paged === true) { + this.paged = new PagedSplats({ rootUrl }); + } else if (options.paged instanceof PagedSplats) { + this.paged = options.paged; + } else if (options.paged instanceof SplatPager) { + this.paged = new PagedSplats({ rootUrl, pager: options.paged }); + } else { + throw new Error("Invalid paged option"); } + this.splats = this.paged; + } else if (options.extSplats) { + this.extSplats = options.extSplats instanceof ExtSplats ? options.extSplats : new ExtSplats(); + options.extSplats = this.extSplats; + this.numSplats = this.extSplats.numSplats; + this.splats = this.extSplats; + } else if (options.packedSplats) { + this.packedSplats = options.packedSplats; + this.packedSplats.splatEncoding = options.splatEncoding ?? { + ...DEFAULT_SPLAT_ENCODING + }; + this.splats = this.packedSplats; + } else { + this.packedSplats = new PackedSplats(); + } + this.editable = options.editable ?? true; + this.raycastable = options.raycastable ?? true; + this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2; + this.onFrame = options.onFrame; + this.context = { + transform: new SplatTransformer(), + viewToWorld: new SplatTransformer(), + worldToView: new SplatTransformer(), + viewToObject: new SplatTransformer(), + covTransform: new CovSplatTransformer(), + covViewToWorld: new CovSplatTransformer(), + covWorldToView: new CovSplatTransformer(), + covViewToObject: new CovSplatTransformer(), + recolor: new DynoVec4({ + value: new THREE__namespace.Vector4().setScalar(Number.NEGATIVE_INFINITY) + }), + time: new DynoFloat({ value: 0 }), + deltaTime: new DynoFloat({ value: 0 }), + numSplats: new DynoInt({ value: 0 }), + splats: new EmptySplatSource(), + enableLod: new DynoBool({ value: false }), + lodIndices: new DynoUsampler2D({ + value: emptyLodIndices, + key: "lodIndices" + }) + }; + this.covSplats = options.covSplats ?? false; + if (this.covSplats && !this.extSplats) { + throw new Error("CovSplats requires ExtSplats"); } - const headerLen = new TextEncoder().encode(this.header).length; - this.data = new DataView(this.fileBytes.buffer, headerLen); - this.elements = {}; - let curElement = null; - this.comments = []; - this.header.trim().split("\n").forEach((line, lineIndex) => { - const trimmedLine = line.trim(); - if (lineIndex === 0) { - if (trimmedLine !== "ply") { - throw new Error("Invalid PLY header"); - } - return; - } - if (trimmedLine.length === 0) { - return; - } - const fields = trimmedLine.split(" "); - switch (fields[0]) { - case "format": - if (fields[1] === "binary_little_endian") { - this.littleEndian = true; - } else if (fields[1] === "binary_big_endian") { - this.littleEndian = false; - } else { - throw new Error(`Unsupported PLY format: ${fields[1]}`); - } - if (fields[2] !== "1.0") { - throw new Error(`Unsupported PLY version: ${fields[2]}`); + this.objectModifiers = options.objectModifier ? [options.objectModifier] : void 0; + this.worldModifiers = options.worldModifier ? [options.worldModifier] : void 0; + if (options.objectModifiers) { + this.objectModifiers = options.objectModifiers; + } + if (options.worldModifiers) { + this.worldModifiers = options.worldModifiers; + } + this.enableLod = options.enableLod; + this.lodScale = options.lodScale ?? 1; + this.behindFoveate = options.behindFoveate; + this.coneFov0 = options.coneFov0; + this.coneFov = options.coneFov; + this.coneFoveate = options.coneFoveate; + this.updateGenerator(); + if (options.url || options.fileBytes || options.stream || options.constructSplats || options.packedSplats && !options.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) { + this.initialized = this.asyncInitialize(options).then(async () => { + this.updateGenerator(); + this.isInitialized = true; + if (options.onLoad) { + const maybePromise = options.onLoad(this); + if (maybePromise instanceof Promise) { + await maybePromise; } - break; - case "end_header": - break; - case "comment": - this.comments.push(trimmedLine.slice("comment ".length)); - break; - case "element": { - const name = fields[1]; - curElement = { - name, - count: Number.parseInt(fields[2]), - properties: {} - }; - this.elements[name] = curElement; - break; } - case "property": - if (curElement == null) { - throw new Error("Property must be inside an element"); - } - if (fields[1] === "list") { - curElement.properties[fields[4]] = { - isList: true, - type: fields[3], - countType: fields[2] - }; - } else { - curElement.properties[fields[2]] = { - isList: false, - type: fields[1] - }; - } - break; + return this; + }); + } else { + this.isInitialized = true; + this.initialized = Promise.resolve(this); + if (options.onLoad) { + const maybePromise = options.onLoad(this); + if (maybePromise instanceof Promise) { + this.initialized = maybePromise.then(() => this); + } } - }); - if (this.elements.vertex) { - this.numSplats = this.elements.vertex.count; } } - parseData(elementCallback) { - let offset = 0; - const data = this.data; - if (data == null) { - throw new Error("No data to parse"); + updateLabelLookup(categories) { + var _a2; + if (this.paged) { + (_a2 = this.paged.pager) == null ? void 0 : _a2.updateLabelLookup(categories); } - for (const elementName in this.elements) { - const element = this.elements[elementName]; - const { count, properties } = element; - const item = createEmptyItem(properties); - const parseFn = createParseFn(properties, this.littleEndian); - const callback = elementCallback(element) ?? (() => { - }); - for (let index = 0; index < count; index++) { - offset = parseFn(data, offset, item); - callback(index, item); + } + updateLabelHighlight(id) { + var _a2; + if (this.paged) { + (_a2 = this.paged.pager) == null ? void 0 : _a2.updateLabelHighlight(id); + } + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + constructSplats, + onProgress, + splatEncoding, + lod, + nonLod, + lodAbove + } = options; + if (this.packedSplats) { + if (url || fileBytes || stream || constructSplats) { + const packedSplatsOptions = { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + construct: constructSplats, + onProgress, + splatEncoding, + lod, + nonLod, + lodAbove + }; + this.packedSplats.reinitialize(packedSplatsOptions); + } + await this.packedSplats.initialized; + this.splats = this.packedSplats; + } else if (this.extSplats) { + if (url || fileBytes || stream || constructSplats) { + const construct = constructSplats; + this.extSplats.reinitialize({ + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + construct, + onProgress, + lod, + nonLod, + lodAbove + }); + await this.extSplats.initialized; + this.splats = this.extSplats; } } + if (this.splats) { + this.numSplats = this.splats.getNumSplats(); + this.updateGenerator(); + } } - // Parse all the Gsplat data in the PLY file in go, invoking the given - // callbacks for each Gsplat. - parseSplats(splatCallback, shCallback) { - if (this.elements.vertex == null) { - throw new Error("No vertex element found"); + // Creates a new Gsplat with the provided parameters (all values in "float" space, + // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, + // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential + // doubling strategy to fit the new data, so it's fairly efficient to just + // pushSplat(...) each Gsplat you want to create in a loop. + pushSplat(center, scales, quaternion, opacity, color) { + if (this.packedSplats) { + this.packedSplats.pushSplat(center, scales, quaternion, opacity, color); + } else if (this.extSplats) { + this.extSplats.pushSplat(center, scales, quaternion, opacity, color); } - let isSuperSplat = false; - const ssChunks = []; - let numSh = 0; - let sh1Props = []; - let sh2Props = []; - let sh3Props = []; - let sh1 = void 0; - let sh2 = void 0; - let sh3 = void 0; - function prepareSh() { - const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh]; - sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3)); - sh2Props = new Array(5).fill(null).flatMap( - (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3) - ); - sh3Props = new Array(7).fill(null).flatMap( - (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3) + } + // This method iterates over all Gsplats in this instance's packedSplats, + // invoking the provided callback with index: number in 0..=(this.numSplats-1) and + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). + // Note that the objects passed in as center etc. are the same for every callback + // invocation: these objects are reused for efficiency. Changing these values has + // no effect as they are decoded/unpacked copies of the underlying data. To update + // the packedSplats, call .packedSplats.setSplat(index, center, scales, + // quaternion, opacity, color). + forEachSplat(callback) { + var _a2; + (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + } + // Call this when you are finished with the SplatMesh and want to free + // any buffers it holds (via packedSplats). + dispose() { + if (this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats) { + this.splats.dispose(); + this.splats = void 0; + } + if (this.packedSplats) { + this.packedSplats.dispose(); + this.packedSplats = void 0; + } + if (this.extSplats) { + this.extSplats.dispose(); + this.extSplats = void 0; + } + } + // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, + // only the centers of the splats are used to compute the bounding box. + // IMPORTANT: This should only be called after the SplatMesh is initialized. + getBoundingBox(centers_only = true) { + var _a2; + if (!this.initialized) { + throw new Error( + "Cannot get bounding box before SplatMesh is initialized" ); - sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0; - sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0; - sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0; } - function ssShCallback(index, item) { - if (!sh1) { - throw new Error("Missing sh1"); - } - const sh = item.f_rest; - for (let i = 0; i < sh1Props.length; i++) { - sh1[i] = sh[sh1Props[i]] * 8 / 255 - 4; - } - if (sh2) { - for (let i = 0; i < sh2Props.length; i++) { - sh2[i] = sh[sh2Props[i]] * 8 / 255 - 4; - } - } - if (sh3) { - for (let i = 0; i < sh3Props.length; i++) { - sh3[i] = sh[sh3Props[i]] * 8 / 255 - 4; + const minVec = new THREE__namespace.Vector3( + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY + ); + const maxVec = new THREE__namespace.Vector3( + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY + ); + const corners = new THREE__namespace.Vector3(); + const signs = [-1, 1]; + function callback(_index, center, scales, quaternion, _opacity, _color) { + if (centers_only) { + minVec.min(center); + maxVec.max(center); + } else { + for (const x of signs) { + for (const y of signs) { + for (const z of signs) { + corners.set(x * scales.x, y * scales.y, z * scales.z); + corners.applyQuaternion(quaternion); + corners.add(center); + minVec.min(corners); + maxVec.max(corners); + } + } } } - shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3); } - function initSuperSplat(element) { - const { - min_x, - min_y, - min_z, - max_x, - max_y, - max_z, - min_scale_x, - min_scale_y, - min_scale_z, - max_scale_x, - max_scale_y, - max_scale_z - } = element.properties; - if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) { - throw new Error("Missing PLY chunk properties"); - } - isSuperSplat = true; - return (index, item) => { - const { - min_x: min_x2, - min_y: min_y2, - min_z: min_z2, - max_x: max_x2, - max_y: max_y2, - max_z: max_z2, - min_scale_x: min_scale_x2, - min_scale_y: min_scale_y2, - min_scale_z: min_scale_z2, - max_scale_x: max_scale_x2, - max_scale_y: max_scale_y2, - max_scale_z: max_scale_z2, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - } = item; - ssChunks.push({ - min_x: min_x2, - min_y: min_y2, - min_z: min_z2, - max_x: max_x2, - max_y: max_y2, - max_z: max_z2, - min_scale_x: min_scale_x2, - min_scale_y: min_scale_y2, - min_scale_z: min_scale_z2, - max_scale_x: max_scale_x2, - max_scale_y: max_scale_y2, - max_scale_z: max_scale_z2, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - }); - }; + (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + const box = new THREE__namespace.Box3(minVec, maxVec); + return box; + } + set objectModifier(modifier) { + if (modifier) { + this.objectModifiers = [modifier]; + } else { + this.objectModifiers = void 0; } - function decodeSuperSplat(element) { - if (shCallback && element.name === "sh") { - numSh = getNumSh(element.properties); - prepareSh(); - return ssShCallback; - } - if (element.name !== "vertex") { - return null; - } - const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties; - if (!packed_position || !packed_rotation || !packed_scale || !packed_color) { - throw new Error( - "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" - ); - } - const SQRT2 = Math.sqrt(2); - return (index, item) => { - const chunk = ssChunks[index >>> 8]; - if (chunk == null) { - throw new Error("Missing PLY chunk"); - } - const { - min_x, - min_y, - min_z, - max_x, - max_y, - max_z, - min_scale_x, - min_scale_y, - min_scale_z, - max_scale_x, - max_scale_y, - max_scale_z, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - } = chunk; - const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item; - const x = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x; - const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y; - const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z; - const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2; - const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2; - const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2; - const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2)); - const rOrder = packed_rotation2 >>> 30; - const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1; - const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2; - const quatZ = rOrder <= 2 ? r2 : rr; - const quatW = rOrder === 0 ? rr : r0; - const scaleX = Math.exp( - (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x - ); - const scaleY = Math.exp( - (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y - ); - const scaleZ = Math.exp( - (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z - ); - const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0); - const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0); - const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0); - const opacity = (packed_color2 & 255) / 255; - splatCallback( - index, - x, - y, - z, - scaleX, - scaleY, - scaleZ, - quatX, - quatY, - quatZ, - quatW, - opacity, - r, - g, - b - ); - }; + } + set worldModifier(modifier) { + if (modifier) { + this.worldModifiers = [modifier]; + } else { + this.worldModifiers = void 0; } - const elementCallback = (element) => { - if (element.name === "chunk") { - return initSuperSplat(element); - } - if (isSuperSplat) { - return decodeSuperSplat(element); - } - if (element.name !== "vertex") { - return null; - } - const { - x, - y, - z, - scale_0, - scale_1, - scale_2, - rot_0, - rot_1, - rot_2, - rot_3, - opacity, - f_dc_0, - f_dc_1, - f_dc_2, - red, - green, - blue, - alpha - } = element.properties; - if (!x || !y || !z) { - throw new Error("Missing PLY properties: x, y, z"); + } + constructGenerator(context) { + if (this.covSplats) { + return this.constructCovGenerator(context); + } + const { transform, viewToObject, recolor } = context; + const generator = dynoBlock( + { index: "int" }, + { gsplat: Gsplat }, + ({ index }) => { + var _a2, _b2, _c, _d; + if (!index) { + throw new Error("index is undefined"); + } + index = maybeLookupIndex( + context.lodIndices, + index, + context.numSplats, + context.enableLod, + this.showLodPageDyno + ); + context.splats.setMaxSh(this.maxSh); + context.splats.prepareFetchSplat(); + let gsplat = context.splats.fetchSplat({ + index, + viewOrigin: viewToObject.translate + }); + if (this.splatRgba) { + gsplat = maybeInjectSplatRgba( + gsplat, + this.splatRgba.dyno, + index, + context.enableLod + ); + } + if (this.skinning) { + gsplat = this.skinning.modify(gsplat); + } + if (this.objectModifiers) { + for (const modifier of this.objectModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; + } + } + gsplat = transform.applyGsplat(gsplat); + const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba); + gsplat = combineGsplat({ gsplat, rgba: recolorRgba }); + if (this.rgbaDisplaceEdits) { + gsplat = this.rgbaDisplaceEdits.modify(gsplat); + } + if (this.worldModifiers) { + for (const modifier of this.worldModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; + } + } + if ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.labelLookupModifier) { + gsplat = (_d = (_c = this.paged) == null ? void 0 : _c.pager) == null ? void 0 : _d.labelLookupModifier.apply({ gsplat }).gsplat; + } + return { gsplat }; } - const hasScales = scale_0 && scale_1 && scale_2; - const hasRots = rot_0 && rot_1 && rot_2 && rot_3; - const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1; - const redDiv = red != null ? FIELD_SCALE[red.type] : 1; - const greenDiv = green != null ? FIELD_SCALE[green.type] : 1; - const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1; - numSh = getNumSh(element.properties); - prepareSh(); - return (index, item) => { - const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale; - const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale; - const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale; - const quatX = hasRots ? item.rot_1 : 0; - const quatY = hasRots ? item.rot_2 : 0; - const quatZ = hasRots ? item.rot_3 : 0; - const quatW = hasRots ? item.rot_0 : 1; - const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1; - const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1; - const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1; - const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1; - splatCallback( + ); + this.generator = generator; + this.covGenerator = void 0; + } + constructCovGenerator(context) { + const { covTransform, covViewToObject, recolor } = context; + const generator = dynoBlock( + { index: "int" }, + { covsplat: CovSplat }, + ({ index }) => { + if (!index) { + throw new Error("index is undefined"); + } + index = maybeLookupIndex( + context.lodIndices, index, - item.x, - item.y, - item.z, - scaleX, - scaleY, - scaleZ, - quatX, - quatY, - quatZ, - quatW, - op, - r, - g, - b + context.numSplats, + context.enableLod, + this.showLodPageDyno ); - if (shCallback && sh1) { - const sh = item.f_rest; - if (sh1) { - for (let i = 0; i < sh1Props.length; i++) { - sh1[i] = sh[sh1Props[i]]; - } + context.splats.prepareFetchSplat(); + let gsplat = context.splats.fetchSplat({ + index, + viewOrigin: covViewToObject.offset + }); + if (this.splatRgba) { + gsplat = maybeInjectSplatRgba( + gsplat, + this.splatRgba.dyno, + index, + context.enableLod + ); + } + if (this.objectModifiers) { + for (const modifier of this.objectModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; } - if (sh2) { - for (let i = 0; i < sh2Props.length; i++) { - sh2[i] = sh[sh2Props[i]]; - } + } + let covsplat = gsplatToCovSplat(gsplat); + if (this.skinning) { + covsplat = this.skinning.modifyCov(covsplat); + } + if (this.covObjectModifiers) { + for (const modifier of this.covObjectModifiers) { + covsplat = modifier.apply({ covsplat }).covsplat; } - if (sh3) { - for (let i = 0; i < sh3Props.length; i++) { - sh3[i] = sh[sh3Props[i]]; - } + } + covsplat = covTransform.applyCovSplat(covsplat); + const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba); + covsplat = combineCovSplat({ covsplat, rgba: recolorRgba }); + if (this.rgbaDisplaceEdits) { + covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat); + } + if (this.covWorldModifiers) { + for (const modifier of this.covWorldModifiers) { + covsplat = modifier.apply({ covsplat }).covsplat; } - shCallback(index, sh1, sh2, sh3); } - }; - }; - this.parseData(elementCallback); + return { covsplat }; + } + ); + this.generator = void 0; + this.covGenerator = generator; } - // Inject RGBA values into original PLY file, which can be used to modify - // the color/opacity of the Gsplats and write out the modified PLY file. - injectRgba(rgba) { - let offset = 0; - const data = this.data; - if (data == null) { - throw new Error("No parsed data"); + // Call this whenever something changes in the Gsplat processing pipeline, + // for example changing maxSh or updating objectModifier or worldModifier. + // Compiled generators are cached for efficiency and re-use when the same + // pipeline structure emerges after successive changes. + updateGenerator() { + this.generatorDirty = true; + } + // This is called automatically by SparkRenderer and you should not have to + // call it. It updates parameters for the generated pipeline and calls + // updateGenerator() if the pipeline needs to change. + update({ + renderer, + time, + deltaTime, + viewToWorld, + camera, + renderSize, + globalEdits, + lodIndices + }) { + var _a2, _b2, _c; + this.context.time.value = time; + this.context.deltaTime.value = deltaTime; + _SplatMesh.dynoTime.value = time; + this.showLodPageDyno.value = this.showLodPage ?? -1; + const splats = this.splats ?? this.packedSplats ?? this.extSplats; + if (splats) { + this.context.splats = splats; } - if (rgba.length !== this.numSplats * 4) { - throw new Error("Invalid RGBA array length"); + this.numSplats = this.context.splats.getNumSplats(); + let updated = false; + const lodSplats = ((_a2 = this.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = this.extSplats) == null ? void 0 : _b2.lodSplats); + this.context.enableLod.value = lodSplats != null && lodIndices != null; + if (this.enableLod === false) { + this.context.enableLod.value = false; } - for (const elementName in this.elements) { - const element = this.elements[elementName]; - const { count, properties } = element; - const parsers = []; - let rgbaOffset = 0; - const isVertex = elementName === "vertex"; - if (isVertex) { - for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) { - if (!properties[name] || properties[name].type !== "float") { - throw new Error(`Can't injectRgba due to property: ${name}`); - } - } + this.context.lodIndices.value = (lodIndices == null ? void 0 : lodIndices.texture) ?? emptyLodIndices; + if (this.context.enableLod.value && lodSplats) { + this.context.splats = lodSplats; + this.numSplats = (lodIndices == null ? void 0 : lodIndices.numSplats) ?? 0; + } + this.context.numSplats.value = this.numSplats; + if (this.context.splats !== this.lastSplats) { + this.lastSplats = this.context.splats; + this.generatorDirty = true; + } + if (!this.covSplats) { + if (this.context.transform.update(this)) { + updated = true; + } + if (this.context.viewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { + updated = true; + } + const worldToView = viewToWorld.clone().invert(); + if (this.context.worldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { + updated = true; + } + const objectToWorld = new THREE__namespace.Matrix4().compose( + this.context.transform.translate.value, + this.context.transform.rotate.value, + new THREE__namespace.Vector3().setScalar(this.context.transform.scale.value) + ); + const worldToObject = objectToWorld.invert(); + const viewToObjectMatrix = worldToObject.multiply(viewToWorld); + if (this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { + updated = true; + } + } else { + if (this.context.covTransform.update(this)) { + updated = true; + } + if (this.context.covViewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { + updated = true; + } + const worldToView = viewToWorld.clone().invert(); + if (this.context.covWorldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { + updated = true; + } + const worldToObject = this.matrixWorld.clone().invert(); + const viewToObjectMatrix = worldToObject.multiply(viewToWorld); + if (this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { + updated = true; } - for (const [propertyName, property] of Object.entries(properties)) { - if (!property.isList) { - if (isVertex) { - if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") { - const component = Number.parseInt( - propertyName.slice("f_dc_".length) - ); - parsers.push(() => { - const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1; - SET_FIELD[property.type]( - data, - offset, - this.littleEndian, - value - ); - }); - } else if (propertyName === "opacity") { - parsers.push(() => { - const value = Math.max( - -100, - Math.min( - 100, - -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1) - ) - ); - SET_FIELD[property.type]( - data, - offset, - this.littleEndian, - value - ); - }); - } - } - parsers.push(() => { - offset += FIELD_BYTES[property.type]; - }); - } else { - parsers.push(() => { - const length2 = PARSE_FIELD[property.countType]( - data, - offset, - this.littleEndian - ); - offset += FIELD_BYTES[property.countType]; - offset += length2 * FIELD_BYTES[property.type]; - }); + } + const newRecolor = new THREE__namespace.Vector4( + this.recolor.r, + this.recolor.g, + this.recolor.b, + this.opacity + ); + if (!newRecolor.equals(this.context.recolor.value)) { + this.context.recolor.value.copy(newRecolor); + updated = true; + } + const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : []; + if (this.editable && !this.edits) { + this.traverseVisible((node) => { + if (node instanceof SplatEdit) { + edits.push(node); } + }); + } + edits.sort((a, b) => a.ordering - b.ordering); + const editsSdfs = edits.map((edit) => { + if (edit.sdfs != null) { + return { edit, sdfs: edit.sdfs }; } - for (let index = 0; index < count; index++) { - for (const parser of parsers) { - parser(); - } - if (isVertex) { - rgbaOffset += 4; + const sdfs = []; + edit.traverseVisible((node) => { + if (node instanceof SplatEditSdf) { + sdfs.push(node); } + }); + return { edit, sdfs }; + }); + if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) { + const edits2 = editsSdfs.length; + const sdfs = editsSdfs.reduce( + (total, edit) => total + edit.sdfs.length, + 0 + ); + this.rgbaDisplaceEdits = new SplatEdits({ + maxEdits: edits2, + maxSdfs: sdfs + }); + this.generatorDirty = true; + } + if (this.rgbaDisplaceEdits) { + const editResult = this.rgbaDisplaceEdits.update(editsSdfs); + updated || (updated = editResult.updated); + if (editResult.dynoUpdated) { + this.generatorDirty = true; } } + if (this.generatorDirty) { + this.constructGenerator(this.context); + this.generatorDirty = false; + updated = true; + } + if (updated) { + this.updateVersion(); + } + (_c = this.onFrame) == null ? void 0 : _c.call(this, { mesh: this, time, deltaTime }); } -}; -_PlyReader.defaultPointScale = 1e-3; -let PlyReader = _PlyReader; -const SH_C0$1 = 0.28209479177387814; -const PARSE_FIELD = { - char: (data, offset, littleEndian) => { - return data.getInt8(offset); - }, - uchar: (data, offset, littleEndian) => { - return data.getUint8(offset); - }, - short: (data, offset, littleEndian) => { - return data.getInt16(offset, littleEndian); - }, - ushort: (data, offset, littleEndian) => { - return data.getUint16(offset, littleEndian); - }, - int: (data, offset, littleEndian) => { - return data.getInt32(offset, littleEndian); - }, - uint: (data, offset, littleEndian) => { - return data.getUint32(offset, littleEndian); - }, - float: (data, offset, littleEndian) => { - return data.getFloat32(offset, littleEndian); - }, - double: (data, offset, littleEndian) => { - return data.getFloat64(offset, littleEndian); - } -}; -const SET_FIELD = { - char: (data, offset, littleEndian, value) => { - data.setInt8(offset, value); - }, - uchar: (data, offset, littleEndian, value) => { - data.setUint8(offset, value); - }, - short: (data, offset, littleEndian, value) => { - data.setInt16(offset, value, littleEndian); - }, - ushort: (data, offset, littleEndian, value) => { - data.setUint16(offset, value, littleEndian); - }, - int: (data, offset, littleEndian, value) => { - data.setInt32(offset, value, littleEndian); - }, - uint: (data, offset, littleEndian, value) => { - data.setUint32(offset, value, littleEndian); - }, - float: (data, offset, littleEndian, value) => { - data.setFloat32(offset, value, littleEndian); - }, - double: (data, offset, littleEndian, value) => { - data.setFloat64(offset, value, littleEndian); - } -}; -const FIELD_BYTES = { - char: 1, - uchar: 1, - short: 2, - ushort: 2, - int: 4, - uint: 4, - float: 4, - double: 8 -}; -const FIELD_SCALE = { - char: 127, - uchar: 255, - short: 32767, - ushort: 65535, - int: 2147483647, - uint: 4294967295, - float: 1, - double: 1 -}; -const NUM_F_REST_TO_NUM_SH = { - 0: 0, - 9: 1, - 24: 2, - 45: 3 -}; -const NUM_SH_TO_NUM_F_REST = { - 0: 0, - 1: 9, - 2: 24, - 3: 45 -}; -const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/; -function createEmptyItem(properties) { - const item = {}; - for (const [propertyName, property] of Object.entries(properties)) { - if (F_REST_REGEX.test(propertyName)) { - item.f_rest = new Array(getNumSh(properties)); + // This method conforms to the standard THREE.Raycaster API, performing object-ray + // intersections using this method to populate the provided intersects[] array + // with each intersection point. + raycast(raycaster, intersects) { + var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; + if (!isInitialized() || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) { + return; + } + const paged = this.paged != null; + const ext = paged ? ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.extSplats) ?? false : this.extSplats != null; + const { near, far, ray } = raycaster; + const worldToMesh = this.matrixWorld.clone().invert(); + const worldToMeshRot = new THREE__namespace.Matrix3().setFromMatrix4(worldToMesh); + const origin = ray.origin.clone().applyMatrix4(worldToMesh); + const direction = ray.direction.clone().applyMatrix3(worldToMeshRot); + const buffer = get_raycast_buffer(); + const bufferSize = buffer.length / 4; + let intersections = 0; + const numSplats = ((_c = this.raycastIndices) == null ? void 0 : _c.numSplats) ?? (paged ? (_d = this.paged) == null ? void 0 : _d.numSplats : this.context.numSplats.value) ?? 0; + const indices = ((_e = this.raycastIndices) == null ? void 0 : _e.indices) ?? (paged ? (_f = this.paged) == null ? void 0 : _f.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; + if (!ext) { + const packed = paged ? (_h = (_g = this.paged) == null ? void 0 : _g.pager) == null ? void 0 : _h.packedTexture.value.image.data : indices ? (_j = (_i = this.packedSplats) == null ? void 0 : _i.lodSplats) == null ? void 0 : _j.packedArray : (_k = this.packedSplats) == null ? void 0 : _k.packedArray; + if (!packed) { + return; + } + const splatEncoding = paged ? (_l = this.paged) == null ? void 0 : _l.splatEncoding : (_m = this.packedSplats) == null ? void 0 : _m.splatEncoding; + for (let base = 0; base < numSplats; base += bufferSize) { + const count = Math.min(bufferSize, numSplats - base); + if (!indices) { + buffer.set(packed.subarray(base * 4, (base + count) * 4)); + } else { + for (let i = 0; i < count; ++i) { + const index = indices[base + i]; + const i4 = i * 4; + const index4 = index * 4; + buffer[i4] = packed[index4]; + buffer[i4 + 1] = packed[index4 + 1]; + buffer[i4 + 2] = packed[index4 + 2]; + buffer[i4 + 3] = packed[index4 + 3]; + } + } + const newIntersections = raycast_packed_buffer( + origin.x, + origin.y, + origin.z, + direction.x, + direction.y, + direction.z, + this.minRaycastOpacity, + near, + far, + count, + (splatEncoding == null ? void 0 : splatEncoding.lnScaleMin) ?? LN_SCALE_MIN, + (splatEncoding == null ? void 0 : splatEncoding.lnScaleMax) ?? LN_SCALE_MAX, + (splatEncoding == null ? void 0 : splatEncoding.lodOpacity) ?? false + ); + intersections = this.appendRaycastBuffer( + intersections, + newIntersections + ); + } } else { - item[propertyName] = property.isList ? [] : 0; - } - } - return item; -} -function createParseFn(properties, littleEndian) { - if (safeToCompile(properties)) { - return createCompiledParserFn(properties, littleEndian); - } - return createDynamicParserFn(properties, littleEndian); -} -const UNSAFE_EVAL_ALLOWED = (() => { - try { - new Function("return 42;"); - } catch (e) { - return false; - } - return true; -})(); -const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/; -function safeToCompile(properties) { - if (!UNSAFE_EVAL_ALLOWED) { - return false; - } - for (const [propertyName, property] of Object.entries(properties)) { - if (!PROPERTY_NAME_REGEX.test(propertyName)) { - return false; + const buffer2 = get_raycast_buffer2(); + const ext1 = paged ? (_o = (_n = this.paged) == null ? void 0 : _n.pager) == null ? void 0 : _o.packedTexture.value.image.data : indices ? (_q = (_p = this.extSplats) == null ? void 0 : _p.lodSplats) == null ? void 0 : _q.extArrays[0] : (_r = this.extSplats) == null ? void 0 : _r.extArrays[0]; + const ext2 = paged ? (_t = (_s = this.paged) == null ? void 0 : _s.pager) == null ? void 0 : _t.extTexture.value.image.data : indices ? (_v = (_u = this.extSplats) == null ? void 0 : _u.lodSplats) == null ? void 0 : _v.extArrays[1] : (_w = this.extSplats) == null ? void 0 : _w.extArrays[1]; + if (!ext1 || !ext2) { + return; + } + for (let base = 0; base < numSplats; base += bufferSize) { + const count = Math.min(bufferSize, numSplats - base); + if (!indices) { + buffer.set(ext1.subarray(base * 4, (base + count) * 4)); + buffer2.set(ext2.subarray(base * 4, (base + count) * 4)); + } else { + for (let i = 0; i < count; ++i) { + const index = indices[base + i]; + const i4 = i * 4; + const index4 = index * 4; + buffer[i4] = ext1[index4]; + buffer[i4 + 1] = ext1[index4 + 1]; + buffer[i4 + 2] = ext1[index4 + 2]; + buffer[i4 + 3] = ext1[index4 + 3]; + buffer2[i4] = ext2[index4]; + buffer2[i4 + 1] = ext2[index4 + 1]; + buffer2[i4 + 2] = ext2[index4 + 2]; + buffer2[i4 + 3] = ext2[index4 + 3]; + } + } + const newIntersections = raycast_ext_buffers( + origin.x, + origin.y, + origin.z, + direction.x, + direction.y, + direction.z, + this.minRaycastOpacity, + near, + far, + count + ); + intersections = this.appendRaycastBuffer( + intersections, + newIntersections + ); + } } - if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) { - return false; + for (const distance2 of _SplatMesh.raycastBuffer.subarray(0, intersections)) { + const point = ray.direction.clone().multiplyScalar(distance2).add(ray.origin); + intersects.push({ + distance: distance2, + point, + object: this + }); } - if (!PLY_PROPERTY_TYPES.includes(property.type)) { - return false; + } + appendRaycastBuffer(count, additional) { + const total = count + additional.length; + let capacity = _SplatMesh.raycastBuffer.length; + if (total > capacity) { + while (capacity < total) { + capacity *= 2; + } + const newBuffer = new Float32Array(capacity); + newBuffer.set(_SplatMesh.raycastBuffer.subarray(0, count)); + _SplatMesh.raycastBuffer = newBuffer; } + _SplatMesh.raycastBuffer.set(additional, count); + return count + additional.length; } - return true; -} -function createCompiledParserFn(properties, littleEndian) { - const parserSrc = ["let list;"]; - for (const [propertyName, property] of Object.entries(properties)) { - const fRestMatch = propertyName.match(F_REST_REGEX); - if (fRestMatch) { - const fRestIndex = +fRestMatch[1]; - parserSrc.push( - /*js*/ - ` - item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - ` - ); - } else if (!property.isList) { - parserSrc.push( - /*js*/ - ` - item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - ` - ); - } else { - parserSrc.push( - /*js*/ - ` - list = item['${propertyName}']; - list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.countType]}; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - } - ` - ); + async createLodSplats({ + rgbaArray, + quality + } = {}) { + if (this.packedSplats) { + await this.packedSplats.createLodSplats({ quality, rgbaArray }); + } else if (this.extSplats) { + await this.extSplats.createLodSplats({ quality, rgbaArray }); } } - parserSrc.push("return offset;"); - const fn = new Function( - "data", - "offset", - "item", - "PARSE_FIELD", - parserSrc.join("\n") - ); - return (data, offset, item) => fn(data, offset, item, PARSE_FIELD); -} -function createDynamicParserFn(properties, littleEndian) { - const parsers = []; - for (const [propertyName, property] of Object.entries(properties)) { - const fRestMatch = propertyName.match(F_REST_REGEX); - if (fRestMatch) { - const fRestIndex = +fRestMatch[1]; - parsers.push( - (data, offset, item) => { - item.f_rest[fRestIndex] = PARSE_FIELD[property.type]( - data, - offset, - littleEndian - ); - return offset + FIELD_BYTES[property.type]; - } - ); - } else if (!property.isList) { - parsers.push( - (data, offset, item) => { - item[propertyName] = PARSE_FIELD[property.type]( - data, - offset, - littleEndian - ); - return offset + FIELD_BYTES[property.type]; - } - ); - } else { - parsers.push( - (data, offset, item) => { - const list = item[propertyName]; - list.length = PARSE_FIELD[property.countType]( - data, - offset, - littleEndian - ); - let currentOffset = offset + FIELD_BYTES[property.countType]; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD[property.type]( - data, - currentOffset, - littleEndian - ); - currentOffset += FIELD_BYTES[property.type]; +}; +_SplatMesh.dynoTime = new DynoFloat({ value: 0 }); +_SplatMesh.raycastBuffer = new Float32Array(1024); +let SplatMesh = _SplatMesh; +function maybeLookupIndex(lodIndices, index, numSplats, enableLod, showLodPage) { + return dyno$1({ + inTypes: { + lodIndices: "usampler2D", + index: "int", + numSplats: "int", + enableLod: "bool", + showLodPage: "int" + }, + outTypes: { + index: "int" + }, + inputs: { + lodIndices, + index, + numSplats, + enableLod, + showLodPage + }, + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + if (${inputs.showLodPage} < 0) { + if (index >= ${inputs.numSplats}) { + return; } - return currentOffset; + if (${inputs.enableLod}) { + ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); + uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3]; + ${outputs.index} = int(splatIndex); + } else { + ${outputs.index} = index; + } + } else { + int start = ${inputs.showLodPage} << 16; + if (index >= 65536) { + return; + } + ${outputs.index} = start + index; + } + `) + }).outputs.index; +} +function maybeInjectSplatRgba(gsplat, rgba, index, enableLod) { + return dyno$1({ + inTypes: { + gsplat: Gsplat, + rgba: TRgbaArray, + index: "int", + enableLod: "bool" + }, + outTypes: { gsplat: Gsplat }, + inputs: { gsplat, rgba, index, enableLod }, + statements: ({ inputs, outputs }) => unindentLines(` + ${outputs.gsplat} = ${inputs.gsplat}; + if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { + ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); } - ); + `) + }).outputs.gsplat; +} +const emptyLodIndices = (() => { + const texture2 = new THREE__namespace.DataTexture( + new Uint32Array(16384), + 4096, + 1, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType + ); + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +const _SplatAccumulator = class _SplatAccumulator { + constructor({ + extSplats, + covSplats + } = {}) { + this.time = 0; + this.deltaTime = 0; + this.viewToWorld = new THREE__namespace.Matrix4(); + this.viewOrigin = new THREE__namespace.Vector3(); + this.viewDirection = new THREE__namespace.Vector3(); + this.maxSplats = 0; + this.numSplats = 0; + this.target = null; + this.mapping = []; + this.version = -1; + this.mappingVersion = -1; + this.readback = null; + this.readbackSplats = []; + if (!threeMrtArray) { + throw new Error("Spark requires THREE.js r179 or above"); } + this.extSplats = extSplats ?? true; + this.covSplats = covSplats ?? false; } - return (data, offset, item) => { - let currentOffset = offset; - for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) { - currentOffset = parsers[parserIndex](data, currentOffset, item); + dispose() { + if (this.target) { + this.target.dispose(); + this.target = null; } - return currentOffset; - }; -} -function getNumSh(properties) { - let num_f_rest = 0; - while (properties[`f_rest_${num_f_rest}`]) { - num_f_rest += 1; } - const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest]; - if (numSh == null) { - throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`); + // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator + // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) + getTextures() { + if (this.target) { + return this.target.textures; + } + return _SplatAccumulator.emptyTextures; } - return numSh; -} -class SplatLoader extends THREE.Loader { - constructor(manager) { - super(manager); - this.fileLoader = new THREE.FileLoader(manager); + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(splatCounts) { + let maxSplats = 0; + const mapping = splatCounts.map((numSplats) => { + const base = maxSplats; + const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + maxSplats += rounded; + return { base, count: numSplats }; + }); + return { maxSplats, mapping }; } - load(url, onLoad, onProgress, onError) { - return this.loadInternal({ - url, - onLoad, - onProgress, - onError + // Ensures our NewSplatAccumulator.target render target has enough space + // to generate maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate({ maxSplats }) { + if (this.target && (maxSplats ?? 1) <= this.maxSplats) { + return false; + } + this.dispose(); + const textureSize2 = getTextureSize(maxSplats ?? 1); + const { width, height, depth } = textureSize2; + this.maxSplats = textureSize2.maxSplats; + this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, { + depthBuffer: false, + stencilBuffer: false, + generateMipmaps: false, + magFilter: THREE__namespace.NearestFilter, + minFilter: THREE__namespace.NearestFilter, + format: THREE__namespace.RGBAIntegerFormat, + type: THREE__namespace.UnsignedIntType }); + this.target.scissorTest = true; + if (this.extSplats) { + const target2 = this.target.texture.clone(); + const target3 = this.target.texture.clone(); + target3.format = THREE__namespace.RGBAFormat; + target3.type = THREE__namespace.UnsignedByteType; + target3.internalFormat = "RGBA8"; + this.target.textures = [this.target.texture, target2, target3]; + } else { + const target3 = this.target.texture.clone(); + target3.format = THREE__namespace.RGBAFormat; + target3.type = THREE__namespace.UnsignedByteType; + target3.internalFormat = "RGBA8"; + this.target.textures = [this.target.texture, target3]; + } + return true; } - async loadAsync(url, onProgress) { - return new Promise((resolve, reject) => { - this.load( - url, - (decoded) => { - resolve(decoded); - }, - onProgress, - reject + saveRenderState(renderer) { + return { + target: renderer.getRenderTarget(), + activeCubeFace: renderer.getActiveCubeFace(), + activeMipmapLevel: renderer.getActiveMipmapLevel(), + xrEnabled: renderer.xr.enabled, + autoClear: renderer.autoClear + }; + } + resetRenderState(renderer, state) { + renderer.setRenderTarget( + state.target, + state.activeCubeFace, + state.activeMipmapLevel + ); + renderer.xr.enabled = state.xrEnabled; + renderer.autoClear = state.autoClear; + } + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(generator, covGenerator) { + const theGenerator = generator ?? covGenerator; + if (!theGenerator) { + throw new Error("Either generator or covGenerator must be provided"); + } + let program = _SplatAccumulator.generatorProgram.get(theGenerator); + if (!program) { + const graph = dynoBlock( + { index: "int" }, + {}, + ({ index }, _outputs, { roots }) => { + if (generator) { + generator.inputs.index = index; + } + if (covGenerator) { + covGenerator.inputs.index = index; + } + if (this.extSplats) { + if (!this.covSplats) { + if (generator) { + const output = outputExtendedSplat(generator.outputs.gsplat); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } else { + if (covGenerator) { + const output = outputExtCovSplat(covGenerator.outputs.covsplat); + roots.push(output); + } else if (generator) { + const covsplat = gsplatToCovSplat(generator.outputs.gsplat); + const output = outputExtCovSplat(covsplat); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } + } else { + if (!this.covSplats) { + if (generator) { + const centerSubView = sub( + splitGsplat(generator.outputs.gsplat).outputs.center, + _SplatAccumulator.viewCenterUniform + ); + const halfAlpha = mul( + splitGsplat(generator.outputs.gsplat).outputs.opacity, + dynoConst("float", 0.5) + ); + const gsplat = combineGsplat({ + gsplat: generator.outputs.gsplat, + center: centerSubView, + opacity: halfAlpha + }); + const output = outputPackedSplat( + gsplat, + dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) + ); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } else { + let covsplat; + if (covGenerator) { + covsplat = covGenerator.outputs.covsplat; + } else if (generator) { + covsplat = gsplatToCovSplat(generator.outputs.gsplat); + } else { + throw new Error("Generator must be provided"); + } + const centerSubView = sub( + splitCovSplat(covsplat).outputs.center, + _SplatAccumulator.viewCenterUniform + ); + const halfAlpha = mul( + splitCovSplat(covsplat).outputs.opacity, + dynoConst("float", 0.5) + ); + covsplat = combineCovSplat({ + covsplat, + center: centerSubView, + opacity: halfAlpha + }); + const output = outputCovSplat( + covsplat, + dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) + ); + roots.push(output); + } + if (!generator) { + throw new Error("Generator must be provided"); + } + } + if (generator) { + const outputDepth = outputSplatDepth( + generator.outputs.gsplat, + _SplatAccumulator.viewCenterUniform, + _SplatAccumulator.viewDirUniform, + _SplatAccumulator.sortRadialUniform + ); + roots.push(outputDepth); + } + if (covGenerator) { + const outputDepth = outputCovSplatDepth( + covGenerator.outputs.covsplat, + _SplatAccumulator.viewCenterUniform, + _SplatAccumulator.viewDirUniform, + _SplatAccumulator.sortRadialUniform + ); + roots.push(outputDepth); + } + return void 0; + } ); + program = new DynoProgram({ + graph, + inputs: { index: "_index" }, + outputs: {}, + template: this.extSplats ? _SplatAccumulator.programExtTemplate : _SplatAccumulator.programTemplate + // consoleLog: true, + }); + _SplatAccumulator.generatorProgram.set(theGenerator, program); + } + Object.assign(program.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } }); + const material = program.prepareMaterial(); + _SplatAccumulator.fullScreenQuad.material = material; + return { program, material }; } - parse(packedSplats) { - return new SplatMesh({ packedSplats }); - } - loadInternal({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onLoad, - onProgress, - onError, - lod, - nonLod, - lodAbove, - lodBase + generate({ + generator, + covGenerator, + base, + count, + renderer }) { - if (fileBytes instanceof ArrayBuffer) { - fileBytes = new Uint8Array(fileBytes); + if (!this.target) { + throw new Error("Target must be initialized with ensureGenerate"); } - const resolvedURL = fileBytes ? void 0 : this.manager.resolveURL((this.path ?? "") + (url ?? "")); - let readStream = stream == null ? void 0 : stream.getReader(); - this.manager.itemStart(resolvedURL ?? ""); - workerPool.withWorker(async (worker) => { - const splatsLod = (packedSplats == null ? void 0 : packedSplats.lod) ?? (extSplats == null ? void 0 : extSplats.lod); - if (splatsLod) { - lod = splatsLod; - } - const splatsNonLod = (packedSplats == null ? void 0 : packedSplats.nonLod) ?? (extSplats == null ? void 0 : extSplats.nonLod); - if (splatsNonLod !== void 0) { - nonLod = splatsNonLod; + if (base + count > this.maxSplats) { + throw new Error("Base + count exceeds maxSplats"); + } + const { program, material } = this.prepareProgramMaterial( + generator, + covGenerator + ); + program.update(); + const renderState = this.saveRenderState(renderer); + const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + material.uniforms.targetBase.value = base; + material.uniforms.targetCount.value = count; + while (base < nextBase) { + const layer = Math.floor(base / layerSize); + material.uniforms.targetLayer.value = layer; + const layerBase = layer * layerSize; + const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) + ); + this.target.scissor.set( + 0, + layerYStart, + SPLAT_TEX_WIDTH, + layerYEnd - layerYStart + ); + renderer.setRenderTarget(this.target, layer); + renderer.xr.enabled = false; + renderer.autoClear = false; + _SplatAccumulator.fullScreenQuad.render(renderer); + base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + } + this.resetRenderState(renderer, renderState); + return { nextBase }; + } + prepareGenerate({ + renderer, + scene, + time, + camera, + sortRadial, + renderSize, + previous, + lodInstances + }) { + var _a2; + this.viewToWorld.copy(camera.matrixWorld); + camera.getWorldPosition(this.viewOrigin); + camera.getWorldDirection(this.viewDirection); + _SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin); + _SplatAccumulator.viewDirUniform.value.copy(this.viewDirection); + _SplatAccumulator.sortRadialUniform.value = sortRadial; + this.time = time; + this.deltaTime = time - previous.time; + const allGenerators = []; + scene.traverse((node) => { + if (node instanceof SplatGenerator) { + if (!camera.layers || camera.layers.test(node.layers)) { + allGenerators.push(node); + } } - const onStatus = async (data) => { - const { loaded, total } = data; - if (loaded !== void 0 && onProgress) { - onProgress( - new ProgressEvent("progress", { - lengthComputable: total !== 0, - loaded, - total - }) - ); + }); + const globalEditsSet = /* @__PURE__ */ new Set(); + scene.traverseVisible((node) => { + if (node instanceof SplatEdit) { + let ancestor = node.parent; + while (ancestor != null && !(ancestor instanceof SplatMesh)) { + ancestor = ancestor.parent; } - if (data.nextChunk) { - let chunk; - if (!readStream) { - chunk = new Uint8Array(0); - } else { - const { done, value } = await readStream.read(); - if (done) { - readStream.releaseLock(); - readStream = void 0; - chunk = new Uint8Array(0); - } else { - chunk = value; - } - } - worker.call("nextChunk", { chunk }); + if (ancestor == null) { + globalEditsSet.add(node); } - }; - const basedUrl = resolvedURL ? new URL(resolvedURL, window.location.href).toString() : void 0; - const decoded = await worker.call( - extSplats ? "loadExtSplats" : "loadPackedSplats", - { - url: basedUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - fileBytes: fileBytes == null ? void 0 : fileBytes.slice(), - fileType, - pathName: resolvedURL || fileName, - chunked: stream !== void 0, - chunkedLength: streamLength, - encoding: packedSplats == null ? void 0 : packedSplats.splatEncoding, - lod, - lodBase, - nonLod, - lodAbove - }, - { onStatus } - ); - if (decoded.lodSplats) { - if (extSplats) { - decoded.lodSplats = new ExtSplats({ - ...decoded.lodSplats - }); - } else { - decoded.lodSplats = new PackedSplats({ - ...decoded.lodSplats, - maxSplats: packedSplats == null ? void 0 : packedSplats.maxSplats - }); + } + }); + const globalEdits = Array.from(globalEditsSet); + for (const object of allGenerators) { + try { + (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { + renderer, + object, + time: this.time, + deltaTime: this.deltaTime, + viewToWorld: this.viewToWorld, + camera, + renderSize, + globalEdits, + lodIndices: lodInstances && object instanceof SplatMesh ? lodInstances.get(object) : void 0 + }); + } catch (error) { + console.error("frameUpdate error", error); + object.generator = void 0; + object.covGenerator = void 0; + object.generatorError = error; + } + } + const visibleGenerators = []; + scene.traverseVisible((node) => { + if (node instanceof SplatGenerator) { + if (!camera.layers || camera.layers.test(node.layers)) { + visibleGenerators.push(node); + } + } + }); + const splatCounts = visibleGenerators.map( + (generator) => generator.numSplats + ); + const { maxSplats, mapping: baseCounts } = this.generateMapping(splatCounts); + const previousMappings = previous.mapping.reduce((mappings, mapping) => { + mappings.set(mapping.node, mapping); + return mappings; + }, /* @__PURE__ */ new Map()); + this.mapping = []; + this.numSplats = 0; + baseCounts.forEach(({ base, count }, index) => { + const node = visibleGenerators[index]; + const previousNode = previousMappings.get(node); + if (previousNode && previousNode.count !== node.numSplats) { + node.updateMappingVersion(); + } + const { generator, covGenerator } = node; + if ((generator || covGenerator) && count > 0) { + const { version, mappingVersion } = node; + this.mapping.push({ + node, + generator, + covGenerator, + version, + mappingVersion, + base, + count + }); + this.numSplats = Math.max(this.numSplats, base + count); + } + }); + const { splatsUpdated, mappingUpdated } = previous.checkVersions( + this.mapping + ); + this.version = previous.version + (splatsUpdated ? 1 : 0); + this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0); + return { + sameMapping: !mappingUpdated, + version: this.version, + mappingVersion: this.mappingVersion, + visibleGenerators, + generate: () => { + this.ensureGenerate({ maxSplats }); + for (const { node, base, count } of this.mapping) { + const { generator, covGenerator } = node; + if ((generator || covGenerator) && count > 0) { + this.generate({ generator, covGenerator, base, count, renderer }); + } } - } - if (extSplats) { - const initExtSplats = { - // ...(initExt ?? {}), - ...decoded - }; - extSplats.initialize(initExtSplats); - onLoad == null ? void 0 : onLoad(extSplats); - } else { - const initSplats = { - // ...(init ?? {}), - ...decoded - }; - if (packedSplats) { - packedSplats.initialize(initSplats); - onLoad == null ? void 0 : onLoad(packedSplats); - } else { - onLoad == null ? void 0 : onLoad(new PackedSplats(initSplats)); + }, + readback: async () => { + const textures = this.getTextures(); + if (this.readbackSplats.length === 0) { + this.readbackSplats = [ + new DynoUsampler2DArray({ value: textures[0], key: "extSplats" }), + new DynoUsampler2DArray({ value: textures[1], key: "extSplats" }) + ]; + } + this.readbackSplats[0].value = textures[0]; + this.readbackSplats[1].value = textures[1]; + if (!this.readback) { + this.readback = new Readback({ renderer }); } + const readback = this.readback; + const words = this.extSplats ? 8 : 4; + const array = readback.ensureBuffer( + this.numSplats * words, + new Uint32Array(0) + ); + const reader = dynoBlock( + { index: "int" }, + { rgba8: "vec4" }, + ({ index }) => { + const rgba8 = new Dyno({ + inTypes: { + index: "int", + extSplats1: "usampler2DArray", + extSplats2: "usampler2DArray" + }, + outTypes: { rgba8: "vec4" }, + inputs: { + index, + extSplats1: this.readbackSplats[0], + extSplats2: this.readbackSplats[1] + }, + statements: ({ inputs, outputs }) => { + if (this.extSplats) { + return unindentLines(` + int indexDiv8 = ${inputs.index} >> 3; + ivec3 coord = splatTexCoord(indexDiv8); + uvec4 packedData; + if ((${inputs.index} & 4) == 0) { + packedData = texelFetch(${inputs.extSplats1}, coord, 0); + } else { + packedData = texelFetch(${inputs.extSplats2}, coord, 0); + } + + int indexMod4 = ${inputs.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${outputs.rgba8} = uintToVec4(data); + `); + } + return unindentLines(` + int indexDiv4 = ${inputs.index} >> 2; + ivec3 coord = splatTexCoord(indexDiv4); + uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0); + + int indexMod4 = ${inputs.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${outputs.rgba8} = uintToVec4(data); + `); + } + }).outputs.rgba8; + return { rgba8 }; + } + ); + return await readback.renderReadback({ + reader, + count: this.numSplats * words, + renderer, + readback: array + }); } - }).catch((error) => { - this.manager.itemError(resolvedURL ?? ""); - onError == null ? void 0 : onError(error); - }).finally(() => { - this.manager.itemEnd(resolvedURL ?? ""); - }); - } - async loadInternalAsync({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress, - lod, - nonLod, - lodAbove, - lodBase - }) { - return new Promise((resolve, reject) => { - this.loadInternal({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onLoad: resolve, - onProgress, - onError: reject, - lod, - nonLod, - lodAbove, - lodBase - }); - }); - } -} -function getSplatFileType(fileBytes) { - const view = new DataView(fileBytes.buffer); - const magic = view.getUint32(0, true); - if ((magic & 16777215) === 7957616) { - return SplatFileType.PLY; + }; } - if ((magic & 16777215) === 559903) { - const header = decompressPartialGzip(fileBytes, 4); - const gView = new DataView(header.buffer); - if (gView.getUint32(0, true) === 1347635022) { - return SplatFileType.SPZ; + // Check if this accumulator has exactly the same generator mapping as + // the previous one. If so, we can reuse the Gsplat sort order. + checkVersions(otherMapping) { + if (this.mapping.length !== otherMapping.length) { + return { splatsUpdated: true, mappingUpdated: true }; } - return void 0; - } - if (magic === 67324752) { - if (tryPcSogsZip(fileBytes)) { - return SplatFileType.PCSOGSZIP; + const mappingUpdated = this.mapping.some((item, i) => { + const other = otherMapping[i]; + return item.node !== other.node || item.base !== other.base || item.count !== other.count || item.mappingVersion !== other.mappingVersion; + }); + if (mappingUpdated) { + return { splatsUpdated: true, mappingUpdated: true }; } - return void 0; - } - if (magic === 809779538) { - return SplatFileType.RAD; + const splatsUpdated = this.mapping.some((item, i) => { + return item.version !== otherMapping[i].version; + }); + return { splatsUpdated, mappingUpdated }; } - return void 0; -} -function getFileExtension(pathOrUrl) { - const noTrailing = pathOrUrl.split(/[?#]/, 1)[0]; - const lastSlash = Math.max( - noTrailing.lastIndexOf("/"), - noTrailing.lastIndexOf("\\") +}; +_SplatAccumulator.viewCenterUniform = new DynoVec3({ value: new THREE__namespace.Vector3() }); +_SplatAccumulator.viewDirUniform = new DynoVec3({ value: new THREE__namespace.Vector3() }); +_SplatAccumulator.sortRadialUniform = new DynoBool({ value: true }); +_SplatAccumulator.emptyTexture = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE__namespace.DataArrayTexture( + emptyArray, + width, + height, + depth ); - const filename = noTrailing.slice(lastSlash + 1); - const lastDot = filename.lastIndexOf("."); - if (lastDot <= 0 || lastDot === filename.length - 1) { - return ""; - } - return filename.slice(lastDot + 1).toLowerCase(); -} -function getSplatFileTypeFromPath(pathOrUrl) { - const extension = getFileExtension(pathOrUrl); - if (extension === "ply") { - return SplatFileType.PLY; - } - if (extension === "spz") { - return SplatFileType.SPZ; - } - if (extension === "splat") { - return SplatFileType.SPLAT; - } - if (extension === "ksplat") { - return SplatFileType.KSPLAT; - } - if (extension === "sog") { - return SplatFileType.PCSOGSZIP; - } - if (extension === "rad") { - return SplatFileType.RAD; - } - return void 0; -} -function isPcSogs(input) { - return tryPcSogs(input) !== void 0; + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatAccumulator.emptyTextures = (() => { + return [_SplatAccumulator.emptyTexture, _SplatAccumulator.emptyTexture]; +})(); +_SplatAccumulator.programExtTemplate = new DynoProgramTemplate( + getShaders().computeUvec4x2Vec4Template +); +_SplatAccumulator.programTemplate = new DynoProgramTemplate( + getShaders().computeUvec4Vec4Template +); +_SplatAccumulator.generatorProgram = /* @__PURE__ */ new WeakMap(); +_SplatAccumulator.fullScreenQuad = new Pass_js.FullScreenQuad( + new THREE__namespace.RawShaderMaterial({ visible: false }) +); +let SplatAccumulator = _SplatAccumulator; +class SplatGeometry extends THREE__namespace.InstancedBufferGeometry { + constructor() { + super(); + this.setAttribute("position", new THREE__namespace.BufferAttribute(QUAD_VERTICES, 3)); + this.setIndex(new THREE__namespace.BufferAttribute(QUAD_INDICES, 1)); + } } -function tryPcSogs(input) { - try { - let text; - if (typeof input === "string") { - text = input; - } else { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - if (fileBytes.length > 65536) { - return void 0; - } - text = new TextDecoder().decode(fileBytes); +const QUAD_VERTICES = new Float32Array([ + -1, + -1, + 0, + 1, + -1, + 0, + 1, + 1, + 0, + -1, + 1, + 0 +]); +const QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]); +const _SparkRenderer = class _SparkRenderer extends THREE__namespace.Mesh { + constructor(options) { + if (!options) { + throw new Error("SparkRenderer options are required"); } - const json = JSON.parse(text); - if (!json || typeof json !== "object" || Array.isArray(json)) { - return void 0; + if (!options.renderer) { + throw new Error("renderer is required in SparkRenderer options"); } - const isVersion2 = json.version === 2; - for (const key of ["means", "scales", "quats", "sh0"]) { - if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) { - return void 0; + const uniforms = _SparkRenderer.makeUniforms(); + Object.assign(uniforms, options.extraUniforms ?? {}); + const shaders2 = getShaders(); + const premultipliedAlpha = options.premultipliedAlpha ?? true; + const geometry = new SplatGeometry(); + const material = new THREE__namespace.ShaderMaterial({ + glslVersion: THREE__namespace.GLSL3, + vertexShader: options.vertexShader ?? shaders2.splatVertex, + fragmentShader: options.fragmentShader ?? shaders2.splatFragment, + uniforms, + premultipliedAlpha, + transparent: options.transparent ?? true, + depthTest: options.depthTest ?? true, + depthWrite: options.depthWrite ?? false, + side: THREE__namespace.DoubleSide, + allowOverride: false + }); + super(geometry, material); + this.renderSize = new THREE__namespace.Vector2(); + this.lastFrame = -1; + this.updateTimeoutId = -1; + this.orderingTexture = null; + this.maxSplats = 0; + this.activeSplats = 0; + this.accumulators = []; + this.sorting = false; + this.sortDirty = false; + this.lastSortTime = 0; + this.sortWorker = null; + this.sortTimeoutId = -1; + this.sortedCenter = new THREE__namespace.Vector3().setScalar(Number.NEGATIVE_INFINITY); + this.sortedDir = new THREE__namespace.Vector3().setScalar(0); + this.readback32 = new Uint32Array(0); + this.lastLodRaycastTime = 0; + this.lodWorker = null; + this.lodMeshes = []; + this.lodDirty = false; + this.lodIds = /* @__PURE__ */ new Map(); + this.lodIdToSplats = /* @__PURE__ */ new Map(); + this.lodInitQueue = []; + this.lodInstances = /* @__PURE__ */ new Map(); + this.lodUpdates = []; + this.lastTraverseTime = 0; + this.pagerId = 0; + this.superXY = 1; + this.flushAfterGenerate = false; + this.flushAfterRead = false; + this.readPause = 1; + this.sortPause = 0; + this.sortDelay = 0; + this.pageSizeWarning = false; + this.material = material; + this.uniforms = uniforms; + this.frustumCulled = false; + this.renderer = options.renderer; + this.onDirty = options.onDirty; + this.dirty = true; + this.autoUpdate = options.autoUpdate ?? true; + this.preUpdate = options.preUpdate ?? true; + this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); + this.gaussianK = options.gaussianK ?? 1; + this.minPixelRadius = options.minPixelRadius ?? 0; + this.maxPixelRadius = options.maxPixelRadius ?? 512; + this.accumExtSplats = options.accumExtSplats ?? false; + this.covSplats = options.covSplats ?? false; + this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); + this.enable2DGS = options.enable2DGS ?? false; + this.preBlurAmount = options.preBlurAmount ?? 0; + this.blurAmount = options.blurAmount ?? 0.3; + this.focalDistance = options.focalDistance ?? 0; + this.apertureAngle = options.apertureAngle ?? 0; + this.falloff = options.falloff ?? 1; + this.clipXY = options.clipXY ?? 1.4; + this.focalAdjustment = options.focalAdjustment ?? 1; + this.sortRadial = options.sortRadial ?? true; + this.minSortIntervalMs = options.minSortIntervalMs ?? 0; + this.enableLod = options.enableLod ?? true; + this.enableDriveLod = options.enableDriveLod ?? this.enableLod; + this.enableLodFetching = options.enableLodFetching ?? true; + this.lodSplatCount = options.lodSplatCount; + this.lodSplatScale = options.lodSplatScale ?? 1; + this.lodRenderScale = options.lodRenderScale ?? 1; + this.lodInflate = options.lodInflate ?? false; + this.lodTraverseMode = options.lodTraverseMode ?? "standard"; + this.pagedExtSplats = options.pagedExtSplats ?? false; + const defaultPages = isMobile() ? isIos() ? 96 : 128 : 256; + this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536; + this.numLodFetchers = options.numLodFetchers ?? 3; + this.behindFoveate = options.behindFoveate ?? 0.2; + this.coneFov0 = options.coneFov0 ?? 90; + this.coneFov = options.coneFov ?? 120; + this.coneFoveate = options.coneFoveate ?? 0.4; + this.lodRaycast = options.lodRaycast === void 0 ? isMobile() ? 1e4 : 25e3 : options.lodRaycast; + this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500; + this.clock = options.clock ? cloneClock(options.clock) : new THREE__namespace.Clock(); + const accumulatorOptions = { + extSplats: this.accumExtSplats, + covSplats: this.covSplats + }; + this.display = new SplatAccumulator(accumulatorOptions); + this.current = this.display; + this.accumulators.push(new SplatAccumulator(accumulatorOptions)); + this.accumulators.push(new SplatAccumulator(accumulatorOptions)); + const provokingVertexExt = this.renderer.getContext().getExtension("WEBGL_provoking_vertex"); + if (provokingVertexExt) { + provokingVertexExt.provokingVertexWEBGL( + provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL + ); + } + if (options.target) { + const { + width, + height, + doubleBuffer, + superXY: origSuperXY, + ...origTargetOptions + } = options.target; + const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1)); + if (width * superXY > 8192 || height * superXY > 8192) { + throw new Error("Target size too large"); } - if (isVersion2) { - if (!json[key].files) { - return void 0; - } - if ((key === "scales" || key === "sh0") && !json[key].codebook) { - return void 0; - } - if (key === "means" && (!json[key].mins || !json[key].maxs)) { - return void 0; - } - } else { - if (!json[key].shape || !json[key].files) { - return void 0; - } - if (key !== "quats" && (!json[key].mins || !json[key].maxs)) { - return void 0; - } + this.superXY = superXY; + const superWidth = width * superXY; + const superHeight = height * superXY; + const targetOptions = { + format: THREE__namespace.RGBAFormat, + type: THREE__namespace.UnsignedByteType, + colorSpace: THREE__namespace.SRGBColorSpace, + ...origTargetOptions + }; + this.target = new THREE__namespace.WebGLRenderTarget( + superWidth, + superHeight, + targetOptions + ); + if (doubleBuffer) { + this.backTarget = new THREE__namespace.WebGLRenderTarget( + superWidth, + superHeight, + targetOptions + ); } } - return json; - } catch { - return void 0; } -} -function tryPcSogsZip(input) { - try { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - let metaFilename = null; - const unzipped = unzipSync(fileBytes, { - filter: ({ name }) => { - const filename = name.split(/[\\/]/).pop(); - if (filename === "meta.json") { - metaFilename = name; - return true; - } - return false; - } - }); - if (!metaFilename) { - return void 0; + static makeUniforms() { + const uniforms = { + // // number of active splats to render + // numSplats: { value: 0 }, + // Size of render viewport in pixels + renderSize: { value: new THREE__namespace.Vector2() }, + // Near and far plane distances + near: { value: 0.1 }, + far: { value: 1e3 }, + // SplatAccumulator to view transformation quaternion + renderToViewQuat: { value: new THREE__namespace.Quaternion() }, + // SplatAccumulator to view transformation translation + renderToViewPos: { value: new THREE__namespace.Vector3() }, + renderToViewBasis: { value: new THREE__namespace.Matrix3() }, + renderToViewOffset: { value: new THREE__namespace.Vector3() }, + // Maximum distance (in stddevs) from Gsplat center to render + maxStdDev: { value: 1 }, + // Generalized Gaussian k. The radial exponent is 2 * gaussianK. + gaussianK: { value: 1 }, + // Minimum pixel radius for splat rendering + minPixelRadius: { value: 0 }, + // Maximum pixel radius for splat rendering + maxPixelRadius: { value: 512 }, + // Minimum alpha value for splat rendering + minAlpha: { value: 0.5 * (1 / 255) }, + // Enable interpreting 0-thickness Gsplats as 2DGS + enable2DGS: { value: false }, + // Enable ray-splat max response evaluation + // enableRayEval: { value: false }, + // Inflate LoD splats so that opacity <= 1.0 + lodInflate: { value: false }, + // Add to projected 2D splat covariance diagonal (thickens and brightens) + preBlurAmount: { value: 0 }, + // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) + blurAmount: { value: 0.3 }, + // Depth-of-field distance to focal plane + focalDistance: { value: 0 }, + // Full-width angle of aperture opening (in radians) + apertureAngle: { value: 0 }, + // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", + // 1 is normal e^-x^2 falloff. + falloff: { value: 1 }, + // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds + clipXY: { value: 1.4 }, + // Debug renderSize scale factor + focalAdjustment: { value: 1 }, + // Whether to encode Gsplat with linear RGB (for environment mapping) + encodeLinear: { value: false }, + // Back-to-front sort ordering of splat indices + ordering: { type: "t", value: _SparkRenderer.emptyOrdering }, + enableExtSplats: { value: false }, + enableCovSplats: { value: false }, + // Gsplat collection to render + extSplats: { type: "t", value: SplatAccumulator.emptyTexture }, + extSplats2: { type: "t", value: SplatAccumulator.emptyTexture }, + // Time in seconds for time-based effects + time: { value: 0 }, + // Delta time in seconds since last frame + deltaTime: { value: 0 }, + // Debug flag that alternates each frame + debugFlag: { value: false } + }; + return uniforms; + } + dispose() { + if (this.target) { + this.target.dispose(); + this.target = void 0; } - const json = tryPcSogs(unzipped[metaFilename]); - if (!json) { - return void 0; + if (this.backTarget) { + this.backTarget.dispose(); + this.backTarget = void 0; } - return { name: metaFilename, json }; - } catch { - return void 0; - } -} -async function unpackSplats({ - input, - extraFiles, - fileType, - pathOrUrl, - splatEncoding -}) { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - let splatFileType = fileType; - if (!fileType) { - splatFileType = getSplatFileType(fileBytes); - if (!splatFileType && pathOrUrl) { - splatFileType = getSplatFileTypeFromPath(pathOrUrl); - } - } - switch (splatFileType) { - case SplatFileType.PLY: { - const ply = new PlyReader({ fileBytes }); - await ply.parseHeader(); - const numSplats = ply.numSplats; - const maxSplats = getTextureSize(numSplats).maxSplats; - const args = { - fileBytes, - packedArray: new Uint32Array(maxSplats * 4), - splatEncoding - }; - return await withWorker(async (worker) => { - const { packedArray, numSplats: numSplats2, extra } = await worker.call( - "unpackPly", - args - ); - return { packedArray, numSplats: numSplats2, extra }; - }); + if (this.orderingTexture) { + this.orderingTexture.dispose(); + this.orderingTexture = null; } - case SplatFileType.SPZ: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodeSpz", - { - fileBytes, - splatEncoding - } - ); - return { packedArray, numSplats, extra }; - }); + const accumulators = /* @__PURE__ */ new Set(); + accumulators.add(this.display); + accumulators.add(this.current); + for (const accumulator of this.accumulators) { + accumulators.add(accumulator); } - case SplatFileType.SPLAT: { - return await withWorker(async (worker) => { - const { packedArray, numSplats } = await worker.call( - "decodeAntiSplat", - { - fileBytes, - splatEncoding - } - ); - return { packedArray, numSplats }; - }); + for (const accumulator of accumulators) { + accumulator.dispose(); } - case SplatFileType.KSPLAT: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodeKsplat", - { fileBytes, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + const instances = this.lodInstances.values(); + this.lodInstances.clear(); + for (const instance of instances) { + instance.texture.dispose(); } - case SplatFileType.PCSOGS: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodePcSogs", - { fileBytes, extraFiles, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + if (this.sortWorker) { + this.sortWorker.dispose(); + this.sortWorker = null; } - case SplatFileType.PCSOGSZIP: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodePcSogsZip", - { fileBytes, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + if (this.lodWorker) { + this.lodWorker.dispose(); + this.lodWorker = null; } - default: { - throw new Error(`Unknown splat file type: ${splatFileType}`); + if (this.pager) { + this.pager.dispose(); + this.pager = void 0; } } -} -class SplatData { - constructor({ maxSplats = 1 } = {}) { - this.numSplats = 0; - this.maxSplats = getTextureSize(maxSplats).maxSplats; - this.centers = new Float32Array(this.maxSplats * 3); - this.scales = new Float32Array(this.maxSplats * 3); - this.quaternions = new Float32Array(this.maxSplats * 4); - this.opacities = new Float32Array(this.maxSplats); - this.colors = new Float32Array(this.maxSplats * 3); - } - pushSplat() { - const index = this.numSplats; - this.ensureIndex(index); - this.numSplats += 1; - return index; + setDirty() { + var _a2; + if (!this.dirty) { + this.dirty = true; + (_a2 = this.onDirty) == null ? void 0 : _a2.call(this); + } } - unpushSplat(index) { - if (index === this.numSplats - 1) { - this.numSplats -= 1; + onBeforeRender(renderer, scene, camera) { + var _a2; + const spark = _SparkRenderer.sparkOverride ?? this; + const frame = renderer.info.render.frame; + const isNewFrame = frame !== spark.lastFrame; + spark.lastFrame = frame; + const currentRenderTarget = renderer.getRenderTarget(); + const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget); + if (currentRenderTarget) { + spark.renderSize.set( + currentRenderTarget.width, + currentRenderTarget.height + ); + if (isXRRenderTarget && spark.renderSize.x === 1 && spark.renderSize.y === 1) { + const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; + if (baseLayer) { + spark.renderSize.x = baseLayer.framebufferWidth; + spark.renderSize.y = baseLayer.framebufferHeight; + } + } } else { - throw new Error("Cannot unpush splat from non-last position"); + renderer.getDrawingBufferSize(spark.renderSize); } - } - ensureCapacity(numSplats) { - if (numSplats > this.maxSplats) { - const targetSplats = Math.max(numSplats, this.maxSplats * 2); - const newCenters = new Float32Array(targetSplats * 3); - const newScales = new Float32Array(targetSplats * 3); - const newQuaternions = new Float32Array(targetSplats * 4); - const newOpacities = new Float32Array(targetSplats); - const newColors = new Float32Array(targetSplats * 3); - newCenters.set(this.centers); - newScales.set(this.scales); - newQuaternions.set(this.quaternions); - newOpacities.set(this.opacities); - newColors.set(this.colors); - this.centers = newCenters; - this.scales = newScales; - this.quaternions = newQuaternions; - this.opacities = newOpacities; - this.colors = newColors; - if (this.sh1) { - const newSh1 = new Float32Array(targetSplats * 9); - newSh1.set(this.sh1); - this.sh1 = newSh1; + this.uniforms.renderSize.value.copy(spark.renderSize); + const typedCamera = camera; + this.uniforms.near.value = typedCamera.near; + this.uniforms.far.value = typedCamera.far; + const geometry = this.geometry; + geometry.instanceCount = spark.activeSplats; + const accumToWorld = new THREE__namespace.Matrix4(); + if (!this.display.extSplats) { + accumToWorld.makeTranslation(spark.display.viewOrigin); + } + const cameraToWorld = camera.matrixWorld.clone(); + const worldToCamera = cameraToWorld.invert(); + const accumToCamera = worldToCamera.multiply(accumToWorld); + accumToCamera.decompose( + this.uniforms.renderToViewPos.value, + this.uniforms.renderToViewQuat.value, + new THREE__namespace.Vector3() + ); + this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera); + this.uniforms.maxStdDev.value = spark.maxStdDev; + this.uniforms.gaussianK.value = spark.gaussianK; + this.uniforms.minPixelRadius.value = spark.minPixelRadius; + this.uniforms.maxPixelRadius.value = spark.maxPixelRadius; + this.uniforms.minAlpha.value = spark.minAlpha; + this.uniforms.enable2DGS.value = spark.enable2DGS; + this.uniforms.lodInflate.value = spark.lodInflate; + this.uniforms.preBlurAmount.value = spark.preBlurAmount; + this.uniforms.blurAmount.value = spark.blurAmount; + this.uniforms.focalDistance.value = spark.focalDistance; + this.uniforms.apertureAngle.value = spark.apertureAngle; + this.uniforms.falloff.value = spark.falloff; + this.uniforms.clipXY.value = spark.clipXY; + this.uniforms.focalAdjustment.value = spark.focalAdjustment; + const outputColorSpace = currentRenderTarget === null ? renderer.outputColorSpace : isXRRenderTarget ? currentRenderTarget.texture.colorSpace : THREE__namespace.ColorManagement.workingColorSpace; + this.uniforms.encodeLinear.value = outputColorSpace !== THREE__namespace.SRGBColorSpace; + this.uniforms.ordering.value = spark.orderingTexture ?? _SparkRenderer.emptyOrdering; + this.uniforms.enableExtSplats.value = this.display.extSplats; + this.uniforms.enableCovSplats.value = this.display.covSplats; + if (this.display.extSplats) { + const extSplats = spark.display.getTextures(); + this.uniforms.extSplats.value = extSplats[0]; + this.uniforms.extSplats2.value = extSplats[1]; + } else { + const packedSplats = spark.display.getTextures(); + this.uniforms.extSplats.value = packedSplats[0]; + this.uniforms.extSplats2.value = packedSplats[0]; + } + this.uniforms.time.value = spark.display.time; + this.uniforms.deltaTime.value = spark.display.deltaTime; + this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; + if (spark.autoUpdate && isNewFrame) { + const preUpdate = spark.preUpdate && !renderer.xr.isPresenting; + const useCamera = renderer.xr.isPresenting ? renderer.xr.getCamera() : camera; + if (preUpdate) { + spark.updateInternal({ + scene, + camera: useCamera, + autoUpdate: true + }); + } else { + if (spark.updateTimeoutId === -1) { + spark.updateTimeoutId = setTimeout(() => { + spark.updateTimeoutId = -1; + spark.updateInternal({ + scene, + camera: useCamera, + autoUpdate: true + }); + }, 1); + } } - if (this.sh2) { - const newSh2 = new Float32Array(targetSplats * 15); - newSh2.set(this.sh2); - this.sh2 = newSh2; + } + spark.dirty = false; + } + clearSplats() { + this.activeSplats = 0; + this.display.numSplats = 0; + this.setDirty(); + } + async update({ + scene, + camera + }) { + await this.updateInternal({ scene, camera, autoUpdate: false }); + } + // /** + // * Provide additional cameras to prefetch paged splat chunks without + // * affecting main LOD selection. + // */ + // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { + // const next = cameras?.filter(Boolean) ?? []; + // const sameCameras = + // this.prefetchCameras.length === next.length && + // this.prefetchCameras.every((camera, index) => camera === next[index]); + // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { + // return; + // } + // this.prefetchCameras = next; + // this.prefetchLodScale = lodScaleMultiplier; + // this.invalidatePrefetchCache(); + // } + // /** + // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are + // * added or removed from the scene. + // */ + // invalidatePrefetchCache() { + // this.prefetchMeshesCacheScene = undefined; + // } + async updateInternal({ + scene, + camera, + autoUpdate + }) { + const renderer = this.renderer; + const time = this.time ?? this.clock.getElapsedTime(); + const center = camera.getWorldPosition(new THREE__namespace.Vector3()); + const dir = camera.getWorldDirection(new THREE__namespace.Vector3()); + const viewChanged = center.distanceTo(this.sortedCenter) > 1e-3 || dir.dot(this.sortedDir) < 0.999; + const next = this.accumulators.pop(); + if (!next) { + throw new Error("No next accumulator"); + } + if (next === this.current) { + throw new Error( + "Next accumulator is the same as the current accumulator" + ); + } + const { version, mappingVersion, visibleGenerators, generate } = next.prepareGenerate({ + renderer, + scene, + time, + camera, + sortRadial: this.sortRadial ?? true, + renderSize: this.renderSize, + previous: this.current, + lodInstances: this.enableLod ? this.lodInstances : void 0 + }); + let doUpdate = true; + const needsUpdate = viewChanged || version !== this.current.version; + const mappingUpdated = mappingVersion !== this.display.mappingVersion; + if (autoUpdate && !needsUpdate) { + doUpdate = false; + } + if (mappingUpdated && this.sorting) { + doUpdate = false; + } + if (!doUpdate) { + this.accumulators.push(next); + } else { + generate(); + if (this.flushAfterGenerate) { + const gl = renderer.getContext(); + gl.flush(); } - if (this.sh3) { - const newSh3 = new Float32Array(targetSplats * 21); - newSh3.set(this.sh3); - this.sh3 = newSh3; + if (this.display.mappingVersion === next.mappingVersion) { + this.accumulators.push(this.display); + this.display = next; + } else { + if (this.display !== this.current) { + this.accumulators.push(this.current); + } } - this.maxSplats = targetSplats; - } - } - ensureIndex(index) { - this.ensureCapacity(index + 1); - } - setCenter(index, x, y, z) { - this.centers[index * 3] = x; - this.centers[index * 3 + 1] = y; - this.centers[index * 3 + 2] = z; - } - setScale(index, scaleX, scaleY, scaleZ) { - this.scales[index * 3] = scaleX; - this.scales[index * 3 + 1] = scaleY; - this.scales[index * 3 + 2] = scaleZ; - } - setQuaternion(index, x, y, z, w) { - this.quaternions[index * 4] = x; - this.quaternions[index * 4 + 1] = y; - this.quaternions[index * 4 + 2] = z; - this.quaternions[index * 4 + 3] = w; - } - setOpacity(index, opacity) { - this.opacities[index] = opacity; - } - setColor(index, r, g, b) { - this.colors[index * 3] = r; - this.colors[index * 3 + 1] = g; - this.colors[index * 3 + 2] = b; - } - setSh1(index, sh1) { - if (!this.sh1) { - this.sh1 = new Float32Array(this.maxSplats * 9); + this.current = next; + this.sortDirty = true; + this.setDirty(); } - for (let j = 0; j < 9; ++j) { - this.sh1[index * 9 + j] = sh1[j]; + if (this.enableDriveLod) { + this.driveLod({ visibleGenerators, camera, scene }); } + await this.driveSort(); } - setSh2(index, sh2) { - if (!this.sh2) { - this.sh2 = new Float32Array(this.maxSplats * 15); + async driveSort() { + if (this.sorting || !this.sortDirty) { + return; } - for (let j = 0; j < 15; ++j) { - this.sh2[index * 15 + j] = sh2[j]; + if (this.sortTimeoutId !== -1) { + clearTimeout(this.sortTimeoutId); + this.sortTimeoutId = -1; } - } - setSh3(index, sh3) { - if (!this.sh3) { - this.sh3 = new Float32Array(this.maxSplats * 21); + const now = performance.now(); + const nextSortTime = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : now; + if (now < nextSortTime) { + this.sortTimeoutId = setTimeout(() => { + this.sortTimeoutId = -1; + this.driveSort(); + }, nextSortTime - now); + return; } - for (let j = 0; j < 21; ++j) { - this.sh3[index * 21 + j] = sh3[j]; + this.sorting = true; + this.sortDirty = false; + this.lastSortTime = now; + if (this.readPause > 0) { + await new Promise((resolve) => setTimeout(resolve, this.readPause)); } - } -} -const _PackedSplats = class _PackedSplats { - constructor(options = {}) { - this.maxSplats = 0; - this.numSplats = 0; - this.packedArray = null; - this.maxSh = 3; - this.isInitialized = false; - this.target = null; - this.source = null; - this.needsUpdate = true; - this.extra = {}; - this.dyno = new DynoPackedSplats({ packedSplats: this }); - this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({ - key: "rgbMinMaxLnScaleMinMax", - value: new THREE__namespace.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX), - update: (value) => { - var _a2, _b2, _c, _d; - value.set( - ((_a2 = this.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, - ((_b2 = this.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, - ((_c = this.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, - ((_d = this.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX - ); - return value; - } - }); - this.dynoNumSh = new DynoInt({ - key: "numSh", - value: 0, - update: () => { - return Math.min(this.getNumSh(), this.maxSh); - } - }); - this.dynoShMax = new DynoVec3({ - key: "shMax", - value: new THREE__namespace.Vector3(), - update: (value) => { - var _a2, _b2, _c; - value.set( - ((_a2 = this.splatEncoding) == null ? void 0 : _a2.sh1Max) ?? 1, - ((_b2 = this.splatEncoding) == null ? void 0 : _b2.sh2Max) ?? 1, - ((_c = this.splatEncoding) == null ? void 0 : _c.sh3Max) ?? 1 - ); - return value; - } + const current = this.current; + this.sortedCenter.copy(current.viewOrigin); + this.sortedDir.copy(current.viewDirection); + const { numSplats, maxSplats } = current; + const rows = Math.max(1, Math.ceil(maxSplats / 16384)); + const orderingMaxSplats = rows * 16384; + this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats); + const ordering = new Uint32Array(this.maxSplats); + const readback = Readback.ensureBuffer(maxSplats, this.readback32); + this.readback32 = readback; + await this.readbackDepth({ + current, + renderer: this.renderer, + numSplats, + readback }); - this.initialized = Promise.resolve(this); - this.reinitialize(options); - } - reinitialize(options) { - this.isInitialized = false; - this.extra = {}; - this.maxSplats = options.maxSplats ?? 0; - this.splatEncoding = options.splatEncoding; - this.lod = options.lod; - this.nonLod = options.nonLod; - if (options.url || options.fileBytes || options.stream || options.construct) { - this.initialized = this.asyncInitialize(options).then(() => { - this.isInitialized = true; - return this; - }); - } else { - this.initialize(options); - this.isInitialized = true; - this.initialized = Promise.resolve(this); - } - } - initialize(options) { - this.extra = options.extra ?? {}; - this.splatEncoding = options.splatEncoding ?? this.splatEncoding; - this.lodSplats = options.lodSplats; - if (options.packedArray) { - this.packedArray = options.packedArray; - this.numSplats = options.numSplats ?? this.packedArray.length / 4; - this.maxSplats = Math.floor(this.packedArray.length / 4); - this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - this.numSplats = Math.min( - this.maxSplats, - options.numSplats ?? Number.POSITIVE_INFINITY - ); - } else { - this.maxSplats = options.maxSplats ?? 0; - this.numSplats = 0; + if (this.sortPause > 0) { + await new Promise((resolve) => setTimeout(resolve, this.sortPause)); } - } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - construct, - lod, - nonLod, - lodAbove - } = options; - this.lod = lod; - this.nonLod = nonLod; - const loader = new SplatLoader(); - if (fileBytes || url || stream) { - await loader.loadInternalAsync({ - packedSplats: this, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress: options.onProgress, - lodAbove - }); + if (!this.sortWorker) { + this.sortWorker = new SplatWorker(); } - if (construct) { - const maybePromise = construct(this); - if (maybePromise instanceof Promise) { - await maybePromise; - } + const result = await this.sortWorker.call("sortSplats32", { + numSplats, + readback, + ordering + }); + if (this.sortDelay > 0) { + await new Promise((resolve) => setTimeout(resolve, this.sortDelay)); } - } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. - dispose() { - if (this.target) { - this.target.dispose(); - this.target.texture.source.data = null; - this.target = null; + this.readback32 = result.readback; + this.activeSplats = result.activeSplats; + if (this.orderingTexture) { + if (rows > this.orderingTexture.image.height) { + this.orderingTexture.dispose(); + this.orderingTexture = null; + } } - if (this.source) { - this.source.dispose(); - this.source.source.data = null; - this.source = null; + if (!this.orderingTexture) { + const orderingTexture = new THREE__namespace.DataTexture( + result.ordering, + 4096, + rows, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType + ); + orderingTexture.internalFormat = "RGBA32UI"; + orderingTexture.needsUpdate = true; + this.orderingTexture = orderingTexture; + } else { + const renderer = this.renderer; + if (!renderer.properties.has(this.orderingTexture)) { + this.orderingTexture.needsUpdate = true; + } else { + uploadU32DataTextureRows( + renderer, + this.orderingTexture, + 4096, + rows, + result.ordering + ); + } } - this.packedArray = null; - for (const key in this.extra) { - const dyno2 = this.extra[key]; - if (dyno2 instanceof DynoUniform) { - const texture2 = dyno2.value; - if (texture2 == null ? void 0 : texture2.isTexture) { - texture2.dispose(); - texture2.source.data = null; - } + if (this.current.mappingVersion === current.mappingVersion) { + if (this.current.mappingVersion !== this.display.mappingVersion) { + this.accumulators.push(this.display); + this.display = this.current; } } - this.extra = {}; - this.disposeLodSplats(); - } - prepareFetchSplat() { - } - getNumSplats() { - return this.numSplats; - } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; + this.sorting = false; + this.setDirty(); + this.driveSort(); } - getNumSh() { - return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3; + ensureLodWorker() { + if (!this.lodWorker) { + this.lodWorker = new SplatWorker(); + } + return this.lodWorker; } - setMaxSh(maxSh) { - this.maxSh = maxSh; + defaultSplatTarget() { + return isOculus() ? 5e5 : isVisionPro() ? 75e4 : isAndroid() ? 1e6 : isIos() ? 15e5 : 25e5; } - fetchSplat({ - index, - viewOrigin + driveLod({ + visibleGenerators, + camera, + scene }) { - let gsplat = readPackedSplat(this.dyno, index); - if (this.hasRgbDir() && viewOrigin) { - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures(); - let { rgb } = evaluatePackedSH({ - coord: splatTexCoord(index), - viewDir, - numSh: this.dynoNumSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax: this.dynoShMax - }); - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - } - return gsplat; - } - ensureShTextures() { - if (!this.extra.sh1) { - return {}; - } - let sh1Texture = this.extra.sh1Texture; - if (!sh1Texture) { - let sh1 = this.extra.sh1; - const { width, height, depth, maxSplats } = getTextureSize( - sh1.length / 2 - ); - if (sh1.length < maxSplats * 2) { - const newSh1 = new Uint32Array(maxSplats * 2); - newSh1.set(sh1); - this.extra.sh1 = newSh1; - sh1 = newSh1; - } - const texture2 = new THREE__namespace.DataArrayTexture(sh1, width, height, depth); - texture2.format = THREE__namespace.RGIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - sh1Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh1" - }); - this.extra.sh1Texture = sh1Texture; - } - if (!this.extra.sh2) { - return { sh1Texture }; + var _a2, _b2; + const defaultSplatCount = this.defaultSplatTarget(); + const splatCount = this.lodSplatCount ?? defaultSplatCount; + const maxSplats = splatCount * this.lodSplatScale; + let pixelScaleLimit = 0; + if (camera instanceof THREE__namespace.PerspectiveCamera) { + const tanYfov = Math.tan(0.5 * camera.fov * Math.PI / 180); + pixelScaleLimit = 2 * tanYfov / this.renderSize.y; + } else if (camera instanceof THREE__namespace.OrthographicCamera) { + const viewHeight = (camera.top - camera.bottom) / camera.zoom; + const viewWidth = (camera.right - camera.left) / camera.zoom; + const pxY = viewHeight / Math.max(1, this.renderSize.y); + const pxX = viewWidth / Math.max(1, this.renderSize.x); + pixelScaleLimit = Math.min(pxX, pxY); } - let sh2Texture = this.extra.sh2Texture; - if (!sh2Texture) { - let sh2 = this.extra.sh2; - const { width, height, depth, maxSplats } = getTextureSize( - sh2.length / 4 - ); - if (sh2.length < maxSplats * 4) { - const newSh2 = new Uint32Array(maxSplats * 4); - newSh2.set(sh2); - this.extra.sh2 = newSh2; - sh2 = newSh2; - } - const texture2 = new THREE__namespace.DataArrayTexture(sh2, width, height, depth); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - sh2Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh2" - }); - this.extra.sh2Texture = sh2Texture; + pixelScaleLimit *= this.lodRenderScale; + const viewPos = new THREE__namespace.Vector3(); + const viewQuat = new THREE__namespace.Quaternion(); + this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE__namespace.Vector3()); + if (this.lodPosOverride) { + viewPos.copy(this.lodPosOverride); } - if (!this.extra.sh3) { - return { sh1Texture, sh2Texture }; + if (this.lodQuatOverride) { + viewQuat.copy(this.lodQuatOverride).normalize(); } - let sh3Texture = this.extra.sh3Texture; - if (!sh3Texture) { - let sh3 = this.extra.sh3; - const { width, height, depth, maxSplats } = getTextureSize( - sh3.length / 4 - ); - if (sh3.length < maxSplats * 4) { - const newSh3 = new Uint32Array(maxSplats * 4); - newSh3.set(sh3); - this.extra.sh3 = newSh3; - sh3 = newSh3; + if (this.lastLod) { + if (this.lastLod.pixelScaleLimit !== pixelScaleLimit || this.lastLod.maxSplats !== maxSplats) { + this.lodDirty = true; } - const texture2 = new THREE__namespace.DataArrayTexture(sh3, width, height, depth); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - sh3Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh3" - }); - this.extra.sh3Texture = sh3Texture; - } - return { sh1Texture, sh2Texture, sh3Texture }; - } - // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(numSplats) { - const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(numSplats, 2 * this.maxSplats) - ); - const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4; - if (!this.packedArray || targetSize > currentSize) { - this.maxSplats = getTextureSize(targetSize).maxSplats; - const newArray2 = new Uint32Array(this.maxSplats * 4); - if (this.packedArray) { - newArray2.set(this.packedArray); + const distance2 = viewPos.distanceTo(this.lastLod.pos); + const distanceRamp = Math.max(0, 1 - distance2 / 1); + const dot2 = viewQuat.dot(this.lastLod.quat); + const quatRamp = Math.max(0, 1 - (1 - dot2) / 0.01); + const similarity = distanceRamp * quatRamp; + if (similarity < 0.999) { + this.lodDirty = true; } - this.packedArray = newArray2; - } - return this.packedArray; - } - // Ensure the extra array for the given level is large enough to hold numSplats - ensureSplatsSh(level, numSplats) { - let wordsPerSplat; - let key; - if (level === 0) { - return this.ensureSplats(numSplats); } - if (level === 1) { - wordsPerSplat = 2; - key = "sh1"; - } else if (level === 2) { - wordsPerSplat = 4; - key = "sh2"; - } else if (level === 3) { - wordsPerSplat = 4; - key = "sh3"; + const lodMeshes = !this.enableLod ? [] : visibleGenerators.filter((generator) => { + var _a3, _b3; + return generator instanceof SplatMesh && (((_a3 = generator.packedSplats) == null ? void 0 : _a3.lodSplats) || ((_b3 = generator.extSplats) == null ? void 0 : _b3.lodSplats) || generator.paged) && generator.enableLod !== false; + }); + const hasPaged = lodMeshes.some((mesh) => mesh.paged); + if (this.lodMeshes.length !== lodMeshes.length) { + this.lodDirty = true; } else { - throw new Error(`Invalid level: ${level}`); + if (lodMeshes.some( + (m, i) => m !== this.lodMeshes[i].mesh || m.version > this.lodMeshes[i].version + )) { + this.lodDirty = true; + } } - let maxSplats = !this.extra[key] ? 0 : this.extra[key].length / wordsPerSplat; - const targetSize = numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats); - if (!this.extra[key] || targetSize > maxSplats) { - maxSplats = getTextureSize(targetSize).maxSplats; - const newArray2 = new Uint32Array(maxSplats * wordsPerSplat); - if (this.extra[key]) { - newArray2.set(this.extra[key]); + this.lodMeshes = lodMeshes.map((mesh) => ({ + mesh, + version: mesh.version + 1 + })); + this.lodInitQueue = []; + const now = performance.now(); + for (const mesh of lodMeshes) { + const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; + if (splats) { + const record = this.lodIds.get(splats); + if (record) { + record.lastTouched = now; + } else { + this.lodInitQueue.push(splats); + } } - this.extra[key] = newArray2; } - return this.extra[key]; + this.ensureLodWorker().tryExclusive(async (worker) => { + if (hasPaged && !this.pager) { + this.pager = new SplatPager({ + renderer: this.renderer, + extSplats: this.pagedExtSplats, + maxSplats: this.maxPagedSplats, + numFetchers: this.numLodFetchers + }); + const { lodId } = await worker.call("newLodTree", { + capacity: this.pager.maxSplats + }); + this.pagerId = lodId; + } + if (this.pager) { + for (const { mesh } of this.lodMeshes) { + if (mesh.paged && !mesh.paged.pager) { + mesh.paged.pager = this.pager; + } + } + } + if (this.lodInitQueue.length > 0) { + const lodInitQueue = this.lodInitQueue; + this.lodInitQueue = []; + while (lodInitQueue.length > 0) { + const splats = lodInitQueue.shift(); + if (splats) { + await this.initLodTree(worker, splats); + this.lodDirty = true; + } + } + } + if (this.pager) { + const updates = this.pager.consumeLodTreeUpdates(); + for (const { splats, page, chunk, numSplats, lodTree } of updates) { + const record = this.lodIds.get(splats); + if (record) { + if (lodTree && chunk === 0) { + record.rootPage = page; + } + this.lodUpdates.push({ + lodId: record.lodId, + pageBase: page * this.pager.pageSplats, + chunkBase: chunk * this.pager.pageSplats, + count: numSplats, + lodTreeData: lodTree + }); + } + } + } + if (this.lodUpdates.length > 0) { + const lodUpdates = this.lodUpdates; + this.lodUpdates = []; + await worker.call("updateLodTrees", { ranges: lodUpdates }); + this.lodDirty = true; + } + if (this.lodDirty) { + const now2 = performance.now(); + const deltaPred = new THREE__namespace.Vector3(); + if (this.lastLod) { + const deltaTime = Math.max(1, now2 - this.lastLod.timestamp); + deltaPred.copy(viewPos).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / deltaTime); + } + this.lastLod = { + pos: viewPos, + quat: viewQuat, + pixelScaleLimit, + maxSplats, + timestamp: now2 + }; + this.lodDirty = false; + await this.updateLodInstances( + worker, + deltaPred, + lodMeshes, + maxSplats, + viewPos, + viewQuat, + pixelScaleLimit + ); + this.currentLod = this.lastLod; + this.setDirty(); + } + await this.cleanupLodTrees(worker); + }); } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(index) { - if (!this.packedArray || index >= this.numSplats) { - throw new Error("Invalid index"); + async initLodTree(worker, splats) { + if (splats instanceof PackedSplats || splats instanceof ExtSplats) { + const { lodId } = await worker.call("initLodTree", { + numSplats: splats.numSplats ?? 0, + lodTree: splats.extra.lodTree.slice() + }); + this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); + this.lodIdToSplats.set(lodId, splats); + } else { + const { lodId } = await worker.call("newSharedLodTree", { + lodId: this.pagerId + }); + this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); + this.lodIdToSplats.set(lodId, splats); } - return unpackSplat(this.packedArray, index, this.splatEncoding); } - // Set all PackedSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(index, center, scales, quaternion, opacity, color) { - const packedSplats = this.ensureSplats(index + 1); - setPackedSplat( - packedSplats, - index, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b + async updateLodInstances(worker, deltaPred, lodMeshes, maxSplats, viewPos, viewQuat, pixelScaleLimit) { + const uuidToMesh = /* @__PURE__ */ new Map(); + const cameraToWorld = new THREE__namespace.Matrix4().compose( + viewPos, + viewQuat, + new THREE__namespace.Vector3().setScalar(1) ); - this.numSplats = Math.max(this.numSplats, index + 1); - } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(center, scales, quaternion, opacity, color) { - const packedSplats = this.ensureSplats(this.numSplats + 1); - setPackedSplat( - packedSplats, - this.numSplats, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b + const instances = lodMeshes.reduce( + (instances2, mesh) => { + var _a2, _b2; + uuidToMesh.set(mesh.uuid, mesh); + const viewToObject = mesh.matrixWorld.clone().invert().multiply(cameraToWorld); + const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; + if (!splats) { + return instances2; + } + const record = this.lodIds.get(splats); + if (!record) { + return instances2; + } + if (this.pager && mesh.paged && record.rootPage === void 0) { + return instances2; + } + instances2[mesh.uuid] = { + instanceId: mesh.uuid, + lodId: record.lodId, + rootPage: record.rootPage, + viewToObjectCols: viewToObject.elements, + lodScale: mesh.lodScale, + behindFoveate: mesh.behindFoveate ?? this.behindFoveate, + coneFov0: mesh.coneFov0 ?? this.coneFov0, + coneFov: mesh.coneFov ?? this.coneFov, + coneFoveate: mesh.coneFoveate ?? this.coneFoveate + }; + return instances2; + }, + {} ); - ++this.numSplats; - } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.packedArray || !this.numSplats) { - return; + const traverseStart = performance.now(); + const result = await worker.call("traverseLodTrees", { + maxSplats, + pixelScaleLimit, + lastPixelLimit: this.lastPixelLimit, + instances, + traverseMode: this.lodTraverseMode + }); + this.lastTraverseTime = performance.now() - traverseStart; + const { keyIndices, chunks, pixelLimit } = result; + this.lastPixelLimit = pixelLimit; + const totalLodSplats = Object.values(keyIndices).reduce( + (sum, { numSplats }) => sum + numSplats, + 0 + ); + this.updateLodIndices(uuidToMesh, keyIndices); + if (this.pager) { + this.pager.processUploads(); + const pagedMeshes = lodMeshes.map((mesh) => { + if (!mesh.paged || !this.pager) { + return null; + } + const meshPosition = mesh.getWorldPosition(new THREE__namespace.Vector3()); + return { + splats: mesh.paged, + distance: meshPosition.distanceTo(viewPos) + }; + }).filter((result2) => result2 !== null); + if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) { + this.pageSizeWarning = true; + console.warn( + `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}` + ); + } + pagedMeshes.sort((a, b) => a.distance - b.distance); + this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({ + splats, + chunk: 0 + })); + for (const [lodId, chunk] of chunks) { + const splats = this.lodIdToSplats.get(lodId); + if (splats instanceof PagedSplats) { + if (chunk !== 0) { + this.pager.fetchPriority.push({ splats, chunk }); + } + } + } + this.pager.autoDrive = this.enableLodFetching; + if (this.enableLodFetching) { + this.pager.driveFetchers(); + } } - for (let i = 0; i < this.numSplats; ++i) { - const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color + if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { + this.lastLodRaycastTime = performance.now(); + const traverseStart2 = performance.now(); + const result2 = await worker.call("traverseLodTrees", { + maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)), + pixelScaleLimit, + instances + }); + performance.now() - traverseStart2; + const { keyIndices: keyIndices2 } = result2; + Object.values(keyIndices2).reduce( + (sum, { numSplats }) => sum + numSplats, + 0 ); + for (const [uuid, countIndices] of Object.entries(keyIndices2)) { + const mesh = uuidToMesh.get(uuid); + mesh.raycastIndices = countIndices; + } } } - // Ensures our PackedSplats.target render target has enough space to generate - // maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate(maxSplats) { - if (this.target && (maxSplats ?? 1) <= this.maxSplats) { - return false; + async cleanupLodTrees(worker) { + var _a2; + const DISPOSE_TIMEOUT_MS = 3e3; + const now = performance.now(); + let oldest = null; + for (const [splats, record] of this.lodIds.entries()) { + if (oldest == null || record.lastTouched < oldest.lastTouched) { + oldest = { + splats, + lastTouched: record.lastTouched, + lodId: record.lodId + }; + } } - if (this.target) { - this.target.dispose(); + if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) { + return; } - const textureSize2 = getTextureSize(maxSplats ?? 1); - const { width, height, depth } = textureSize2; - this.maxSplats = textureSize2.maxSplats; - this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, { - depthBuffer: false, - stencilBuffer: false, - generateMipmaps: false, - magFilter: THREE__namespace.NearestFilter, - minFilter: THREE__namespace.NearestFilter - }); - this.target.texture.format = THREE__namespace.RGBAIntegerFormat; - this.target.texture.type = THREE__namespace.UnsignedIntType; - this.target.texture.internalFormat = "RGBA32UI"; - this.target.scissorTest = true; - return true; - } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(splatCounts) { - let maxSplats = 0; - const mapping = splatCounts.map((numSplats) => { - const base = maxSplats; - const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - maxSplats += rounded; - return { base, count: numSplats }; - }); - return { maxSplats, mapping }; - } - // Returns a THREE.DataArrayTexture representing the PackedSplats content as - // a Uint32x4 data array texture (2048 x 2048 x depth in size) - getTexture() { - if (this.target) { - return this.target.texture; + this.lodIds.delete(oldest.splats); + this.lodIdToSplats.delete(oldest.lodId); + for (const [mesh, instance] of this.lodInstances.entries()) { + if (instance.lodId === oldest.lodId) { + instance.texture.dispose(); + this.lodInstances.delete(mesh); + } } - if (this.source || this.packedArray) { - const source = this.maybeUpdateSource(); - return source; + if (oldest.splats instanceof PagedSplats) { + (_a2 = this.pager) == null ? void 0 : _a2.removeSplats(oldest.splats); } - return _PackedSplats.getEmptyArray; + await worker.call("disposeLodTree", { lodId: oldest.lodId }); } - // Check if source texture needs to be created/updated - maybeUpdateSource() { - if (!this.packedArray) { - throw new Error("No packed splats"); - } - if (this.needsUpdate || !this.source) { - this.needsUpdate = false; - if (this.source) { - const { width, height, depth } = this.source.image; - if (this.maxSplats !== width * height * depth) { - this.source.dispose(); - this.source = null; + updateLodIndices(uuidToMesh, keyIndices) { + for (const [uuid, countIndices] of Object.entries(keyIndices)) { + const { lodId, numSplats, indices } = countIndices; + const mesh = uuidToMesh.get(uuid); + if (mesh.paged) { + mesh.paged.update(numSplats, indices); + } else { + let instance = this.lodInstances.get(mesh); + if (instance) { + if (indices.length > instance.indices.length) { + instance.texture.dispose(); + instance = void 0; + } + } + const rows = Math.ceil(indices.length / 16384); + if (!instance) { + const capacity = rows * 16384; + if (indices.length !== capacity) { + throw new Error("Indices length != capacity"); + } + const texture2 = new THREE__namespace.DataTexture( + indices, + 4096, + rows, + THREE__namespace.RGBAIntegerFormat, + THREE__namespace.UnsignedIntType + ); + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + instance = { lodId, numSplats, indices, texture: texture2 }; + this.lodInstances.set(mesh, instance); + } else { + instance.numSplats = numSplats; + const renderer = this.renderer; + const gl = renderer.getContext(); + if (renderer.properties.has(instance.texture)) { + const props = renderer.properties.get(instance.texture); + const glTexture = props.__webglTexture; + if (!glTexture) { + throw new Error("lodIndices texture not found"); + } + renderer.state.activeTexture(gl.TEXTURE0); + renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, + 4096, + rows, + gl.RGBA_INTEGER, + gl.UNSIGNED_INT, + indices + ); + renderer.state.bindTexture(gl.TEXTURE_2D, null); + } } } - if (!this.source) { - const { width, height, depth } = getTextureSize(this.maxSplats); - this.source = new THREE__namespace.DataArrayTexture( - this.packedArray, - width, - height, - depth - ); - this.source.format = THREE__namespace.RGBAIntegerFormat; - this.source.type = THREE__namespace.UnsignedIntType; - this.source.internalFormat = "RGBA32UI"; - this.source.needsUpdate = true; - } else if (this.packedArray.buffer !== this.source.image.data.buffer) { - this.source.image.data = new Uint8Array(this.packedArray.buffer); - } - this.source.needsUpdate = true; + mesh.updateMappingVersion(); } - return this.source; } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(generator) { - let program = _PackedSplats.generatorProgram.get(generator); - if (!program) { - const graph = dynoBlock( - { index: "int" }, - {}, - ({ index }, _outputs, { roots }) => { - generator.inputs.index = index; - const gsplat = generator.outputs.gsplat; - const output = outputPackedSplat( - gsplat, - this.dynoRgbMinMaxLnScaleMinMax - ); - roots.push(output); - return void 0; - } + async readbackDepth({ + current, + renderer, + numSplats, + readback + }) { + if (!renderer) { + throw new Error("No renderer"); + } + if (!current.target) { + throw new Error("No target"); + } + const roundedCount = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + if (readback.byteLength < roundedCount * 4) { + throw new Error( + `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}` + ); + } + const readbackUint8 = new Uint8Array(readback.buffer); + const renderState = this.saveRenderState(renderer); + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + let baseIndex = 0; + const promises = []; + while (baseIndex < numSplats) { + const layer = Math.floor(baseIndex / layerSize); + const layerBase = layer * layerSize; + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH) + ); + const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4; + const subReadback = readbackUint8.subarray( + layerBase * 4, + layerBase * 4 + readbackSize + ); + renderer.setRenderTarget(current.target, layer); + const promise = renderer.readRenderTargetPixelsAsync( + current.target, + 0, + 0, + SPLAT_TEX_WIDTH, + layerYEnd, + subReadback, + void 0, + current.extSplats ? 2 : 1 ); - if (!_PackedSplats.programTemplate) { - _PackedSplats.programTemplate = new DynoProgramTemplate( - getShaders().computeUvec4Template - ); + promises.push(promise); + if (this.flushAfterRead) { + const gl = renderer.getContext(); + gl.flush(); } - program = new DynoProgram({ - graph, - inputs: { index: "_index" }, - outputs: { output: "target" }, - template: _PackedSplats.programTemplate - }); - Object.assign(program.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }); - _PackedSplats.generatorProgram.set(generator, program); + baseIndex += SPLAT_TEX_WIDTH * layerYEnd; } - const material = program.prepareMaterial(); - _PackedSplats.fullScreenQuad.material = material; - return { program, material }; + this.resetRenderState(renderer, renderState); + return Promise.all(promises).then(() => readback); } saveRenderState(renderer) { return { @@ -14741,1681 +14446,1036 @@ const _PackedSplats = class _PackedSplats { renderer.xr.enabled = state.xrEnabled; renderer.autoClear = state.autoClear; } - // Executes a dyno program specified by generator which is any DynoBlock that - // maps { index: "int" } to { gsplat: Gsplat }. This is called in - // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for - // SplatGenerator instances whose version is newer than what was generated - // for it last time. - generate({ - generator, - base, - count, - renderer - }) { - if (!this.target) { - throw new Error("Target must be initialized with ensureSplats"); + render(scene, camera) { + try { + _SparkRenderer.sparkOverride = this; + this.renderer.render(scene, camera); + } finally { + _SparkRenderer.sparkOverride = void 0; } - if (base + count > this.maxSplats) { - throw new Error("Base + count exceeds maxSplats"); + } + renderTarget({ + scene, + camera + }) { + const target = this.backTarget ?? this.target; + if (!target) { + throw new Error("No target"); } - const { program, material } = this.prepareProgramMaterial(generator); - program.update(); - const renderState = this.saveRenderState(renderer); - const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - material.uniforms.targetBase.value = base; - material.uniforms.targetCount.value = count; - while (base < nextBase) { - const layer = Math.floor(base / layerSize); - material.uniforms.targetLayer.value = layer; - const layerBase = layer * layerSize; - const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) - ); - this.target.scissor.set( - 0, - layerYStart, - SPLAT_TEX_WIDTH, - layerYEnd - layerYStart - ); - renderer.setRenderTarget(this.target, layer); - renderer.xr.enabled = false; - renderer.autoClear = false; - _PackedSplats.fullScreenQuad.render(renderer); - base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + const previousTarget = this.renderer.getRenderTarget(); + try { + this.renderer.setRenderTarget(target); + _SparkRenderer.sparkOverride = this; + this.renderer.render(scene, camera); + } finally { + _SparkRenderer.sparkOverride = void 0; + this.renderer.setRenderTarget(previousTarget); } - this.resetRenderState(renderer, renderState); - return { nextBase }; - } - disposeLodSplats() { - if (this.lodSplats) { - this.lodSplats.dispose(); - this.lodSplats = void 0; + if (target !== this.target) { + [this.target, this.backTarget] = [this.backTarget, this.target]; } + return target; } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; - const packedArray = this.packedArray.slice(); - const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; - const extra = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 - }; - const decoded = await workerPool.withWorker(async (worker) => { - return await worker.call( - quality ? "qualityLodPackedSplats" : "tinyLodPackedSplats", - { - numSplats: this.numSplats, - packedArray, - extra, - lodBase, - rgba, - encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING - } - ); - }); - const lodSplats = new _PackedSplats(decoded); - if (this.lodSplats) { - this.lodSplats.dispose(); + // Read back the previously rendered target image as a Uint8Array of packed + // RGBA values (in that order). Subsequent calls to this.readTarget() + // will reuse the same buffers to minimize memory allocations. + async readTarget() { + if (!this.target) { + throw new Error("Must initialize with target"); } - this.lodSplats = lodSplats; - this.nonLod = true; - this.lod = quality ? "quality" : true; - } - extractSplats(indices, pageColoring) { - const maxSplats = getTextureSize(indices.length).maxSplats; - const newSplats = new _PackedSplats({ maxSplats }); - for (let i = 0; i < indices.length; i++) { - const splat = this.getSplat(indices[i]); - if (pageColoring) { - let hue = (indices[i] >>> 16) * 0.61803398875; - hue = hue - Math.floor(hue); - const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); - const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); - const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); - splat.color.r *= r; - splat.color.g *= g; - splat.color.b *= b; - } - newSplats.pushSplat( - splat.center, - splat.scales, - splat.quaternion, - splat.opacity, - splat.color - ); + const { width, height } = this.target; + const byteSize = width * height * 4; + if (!this.superPixels || this.superPixels.length < byteSize) { + this.superPixels = new Uint8Array(byteSize); } - return newSplats; - } -}; -_PackedSplats.getEmptyArray = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_PackedSplats.programTemplate = null; -_PackedSplats.generatorProgram = /* @__PURE__ */ new WeakMap(); -_PackedSplats.fullScreenQuad = new Pass_js.FullScreenQuad( - new THREE__namespace.RawShaderMaterial({ visible: false }) -); -_PackedSplats.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGBAIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_PackedSplats.emptyUint32x2 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 2); - const texture2 = new THREE__namespace.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE__namespace.RGIntegerFormat; - texture2.type = THREE__namespace.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -let PackedSplats = _PackedSplats; -class DynoPackedSplats extends DynoUniform { - constructor({ packedSplats } = {}) { - super({ - key: "packedSplats", - type: TPackedSplats, - globals: () => [definePackedSplats], - value: { - textureArray: PackedSplats.getEmptyArray, - numSplats: 0, - rgbMinMaxLnScaleMinMax: new THREE__namespace.Vector4( - 0, - 1, - LN_SCALE_MIN, - LN_SCALE_MAX - ), - lodOpacity: false - }, - update: (value) => { - var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; - value.textureArray = ((_a2 = this.packedSplats) == null ? void 0 : _a2.getTexture()) ?? PackedSplats.getEmptyArray; - value.numSplats = ((_b2 = this.packedSplats) == null ? void 0 : _b2.numSplats) ?? 0; - value.rgbMinMaxLnScaleMinMax.set( - ((_d = (_c = this.packedSplats) == null ? void 0 : _c.splatEncoding) == null ? void 0 : _d.rgbMin) ?? 0, - ((_f = (_e = this.packedSplats) == null ? void 0 : _e.splatEncoding) == null ? void 0 : _f.rgbMax) ?? 1, - ((_h = (_g = this.packedSplats) == null ? void 0 : _g.splatEncoding) == null ? void 0 : _h.lnScaleMin) ?? LN_SCALE_MIN, - ((_j = (_i = this.packedSplats) == null ? void 0 : _i.splatEncoding) == null ? void 0 : _j.lnScaleMax) ?? LN_SCALE_MAX - ); - value.lodOpacity = ((_l = (_k = this.packedSplats) == null ? void 0 : _k.splatEncoding) == null ? void 0 : _l.lodOpacity) ?? false; - return value; + const superPixels = this.superPixels; + await this.renderer.readRenderTargetPixelsAsync( + this.target, + 0, + 0, + width, + height, + superPixels + ); + const { superXY } = this; + if (superXY === 1) { + return superPixels; + } + const subWidth = width / superXY; + const subHeight = height / superXY; + const subSize = subWidth * subHeight * 4; + if (!this.targetPixels || this.targetPixels.length < subSize) { + this.targetPixels = new Uint8Array(subSize); + } + const targetPixels = this.targetPixels; + const super2 = superXY * superXY; + for (let y = 0; y < subHeight; y++) { + const row = y * subWidth; + for (let x = 0; x < subWidth; x++) { + const superCol = x * superXY; + let r = 0; + let g = 0; + let b = 0; + let a = 0; + for (let sy = 0; sy < superXY; sy++) { + const superRow = (y * superXY + sy) * width; + for (let sx = 0; sx < superXY; sx++) { + const superIndex = (superRow + superCol + sx) * 4; + r += superPixels[superIndex]; + g += superPixels[superIndex + 1]; + b += superPixels[superIndex + 2]; + a += superPixels[superIndex + 3]; + } + } + const pixelIndex = (row + x) * 4; + targetPixels[pixelIndex] = r / super2; + targetPixels[pixelIndex + 1] = g / super2; + targetPixels[pixelIndex + 2] = b / super2; + targetPixels[pixelIndex + 3] = a / super2; } - }); - this.packedSplats = packedSplats; + } + return targetPixels; } -} -const defineEvalPackedSH1 = unindent(` - vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { - // Extract sint7 values packed into 2 x uint32 - vec3 sh1_0 = vec3(ivec3( - int(packedData.x << 25u) >> 25, - int(packedData.x << 18u) >> 25, - int(packedData.x << 11u) >> 25 - )); - vec3 sh1_1 = vec3(ivec3( - int(packedData.x << 4u) >> 25, - int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, - int(packedData.y << 22u) >> 25 - )); - vec3 sh1_2 = vec3(ivec3( - int(packedData.y << 15u) >> 25, - int(packedData.y << 8u) >> 25, - int(packedData.y << 1u) >> 25 - )); - - vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - return rgb * (sh1Max / 63.0); + async renderReadTarget({ + scene, + camera + }) { + this.renderTarget({ scene, camera }); + return this.readTarget(); } -`); -const defineEvalPackedSH2 = unindent(` - vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { - // Extract sint8 values packed into 4 x uint32 - vec3 sh2_0 = vec3(ivec3( - int(packedData.x << 24u) >> 24, - int(packedData.x << 16u) >> 24, - int(packedData.x << 8u) >> 24 - )); - vec3 sh2_1 = vec3(ivec3( - int(packedData.x) >> 24, - int(packedData.y << 24u) >> 24, - int(packedData.y << 16u) >> 24 - )); - vec3 sh2_2 = vec3(ivec3( - int(packedData.y << 8u) >> 24, - int(packedData.y) >> 24, - int(packedData.z << 24u) >> 24 - )); - vec3 sh2_3 = vec3(ivec3( - int(packedData.z << 16u) >> 24, - int(packedData.z << 8u) >> 24, - int(packedData.z) >> 24 - )); - vec3 sh2_4 = vec3(ivec3( - int(packedData.w << 24u) >> 24, - int(packedData.w << 16u) >> 24, - int(packedData.w << 8u) >> 24 - )); - - vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - return rgb * (sh2Max / 127.0); + // Renders out the scene to a cube map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces. + async renderCubeMap({ + scene, + worldCenter, + size = 256, + near = 0.1, + far = 1e3, + hideObjects = [], + update = true, + filter = false + }) { + if (!_SparkRenderer.cubeRender || _SparkRenderer.cubeRender.target.width !== size || _SparkRenderer.cubeRender.near !== near || _SparkRenderer.cubeRender.far !== far) { + if (_SparkRenderer.cubeRender) { + _SparkRenderer.cubeRender.target.dispose(); + } + const target2 = new THREE__namespace.WebGLCubeRenderTarget(size, { + format: THREE__namespace.RGBAFormat, + type: THREE__namespace.UnsignedByteType, + generateMipmaps: filter, + minFilter: filter ? THREE__namespace.LinearMipMapLinearFilter : THREE__namespace.LinearFilter, + magFilter: THREE__namespace.LinearFilter, + colorSpace: filter ? THREE__namespace.LinearSRGBColorSpace : THREE__namespace.SRGBColorSpace + }); + const cubeCamera2 = new THREE__namespace.CubeCamera(near, far, target2); + _SparkRenderer.cubeRender = { target: target2, cubeCamera: cubeCamera2, near, far }; + } + const { target, cubeCamera } = _SparkRenderer.cubeRender; + cubeCamera.position.copy(worldCenter); + const objectVisibility = /* @__PURE__ */ new Map(); + for (const object of hideObjects) { + objectVisibility.set(object, object.visible); + object.visible = false; + } + if (update) { + const tempCamera = new THREE__namespace.Camera(); + tempCamera.position.copy(worldCenter); + await this.update({ scene, camera: tempCamera }); + } + try { + _SparkRenderer.sparkOverride = this; + cubeCamera.update(this.renderer, scene); + } finally { + _SparkRenderer.sparkOverride = void 0; + } + for (const [object, visible] of objectVisibility.entries()) { + object.visible = visible; + } + return target.texture; } -`); -const defineEvalPackedSH3 = unindent(` - vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { - // Extract sint6 values packed into 4 x uint32 - vec3 sh3_0 = vec3(ivec3( - int(packedData.x << 26u) >> 26, - int(packedData.x << 20u) >> 26, - int(packedData.x << 14u) >> 26 - )); - vec3 sh3_1 = vec3(ivec3( - int(packedData.x << 8u) >> 26, - int(packedData.x << 2u) >> 26, - int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 - )); - vec3 sh3_2 = vec3(ivec3( - int(packedData.y << 22u) >> 26, - int(packedData.y << 16u) >> 26, - int(packedData.y << 10u) >> 26 - )); - vec3 sh3_3 = vec3(ivec3( - int(packedData.y << 4u) >> 26, - int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, - int(packedData.z << 24u) >> 26 - )); - vec3 sh3_4 = vec3(ivec3( - int(packedData.z << 18u) >> 26, - int(packedData.z << 12u) >> 26, - int(packedData.z << 6u) >> 26 - )); - vec3 sh3_5 = vec3(ivec3( - int(packedData.z) >> 26, - int(packedData.w << 26u) >> 26, - int(packedData.w << 20u) >> 26 - )); - vec3 sh3_6 = vec3(ivec3( - int(packedData.w << 14u) >> 26, - int(packedData.w << 8u) >> 26, - int(packedData.w << 2u) >> 26 - )); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); - return rgb * (sh3Max / 31.0); + async readCubeTargets() { + if (!_SparkRenderer.cubeRender) { + throw new Error("No cube render"); + } + const textures = _SparkRenderer.cubeRender.target.texture; + const promises = []; + const buffers = []; + for (let i = 0; i < textures.images.length; ++i) { + const { width, height } = textures.images[i]; + const byteSize = width * height * 4; + const readback = new Uint8Array(byteSize); + buffers.push(readback); + const promise = this.renderer.readRenderTargetPixelsAsync( + _SparkRenderer.cubeRender.target, + 0, + 0, + width, + height, + readback, + i + ); + promises.push(promise); + } + await Promise.all(promises); + return buffers; + } + // Renders out the scene to an environment map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces, + // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture + // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. + async renderEnvMap({ + scene, + worldCenter, + size = 256, + near = 0.1, + far = 1e3, + hideObjects = [], + update = true + }) { + var _a2; + const cubeTexture = await this.renderCubeMap({ + scene, + worldCenter, + size, + near, + far, + hideObjects, + update, + filter: true + }); + if (!_SparkRenderer.pmrem) { + _SparkRenderer.pmrem = new THREE__namespace.PMREMGenerator(this.renderer); + } + return (_a2 = _SparkRenderer.pmrem) == null ? void 0 : _a2.fromCubemap(cubeTexture).texture; } -`); -function evaluatePackedSH({ - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax -}) { - return new Dyno({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3Texture: "usampler2DArray", - shMax: "vec3" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax - }, - globals: () => [ - defineEvalPackedSH1, - defineEvalPackedSH2, - defineEvalPackedSH3 - ], - statements: ({ inputs, outputs }) => { - const lines = ["vec3 rgb = vec3(0.0);"]; - if (inputs.sh1Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 1) { - vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x); - rgb += sh1Rgb; - `) - ); - if (inputs.sh2Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 2) { - vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y); - rgb += sh2Rgb; - `) - ); - if (inputs.sh3Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 3) { - vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z); - rgb += sh3Rgb; - } - `) - ); + // Utility function to recursively set the envMap property for any + // THREE.MeshStandardMaterial within the subtree of root. + recurseSetEnvMap(root, envMap) { + root.traverse((node) => { + if (node instanceof THREE__namespace.Mesh) { + if (Array.isArray(node.material)) { + for (const material of node.material) { + if (material instanceof THREE__namespace.MeshStandardMaterial) { + material.envMap = envMap; + } + } + } else { + if (node.material instanceof THREE__namespace.MeshStandardMaterial) { + node.material.envMap = envMap; } - lines.push("}"); } - lines.push("}"); } - lines.push(`${outputs.rgb} = rgb;`); - return lines; + }); + } + async getLodTreeLevel(splats, level, pageColoring = false) { + var _a2, _b2; + const instance = this.lodInstances.get(splats); + if (!instance) { + return null; } - }).outputs; + const result = await this.ensureLodWorker().exclusive(async (worker) => { + return await worker.call("getLodTreeLevel", { + lodId: instance.lodId, + level + }); + }); + if ((_a2 = splats.packedSplats) == null ? void 0 : _a2.lodSplats) { + const newSplats = splats.packedSplats.lodSplats.extractSplats( + result.indices, + pageColoring + ); + return new SplatMesh({ packedSplats: newSplats }); + } + if ((_b2 = splats.extSplats) == null ? void 0 : _b2.lodSplats) { + const newSplats = splats.extSplats.lodSplats.extractSplats( + result.indices, + pageColoring + ); + return new SplatMesh({ extSplats: newSplats }); + } + throw new Error( + "Only LoD-enabled PackedSplats and ExtSplats are supported" + ); + } + get premultipliedAlpha() { + return this.material.premultipliedAlpha; + } + set premultipliedAlpha(value) { + if (this.material.premultipliedAlpha !== value) { + this.material.premultipliedAlpha = value; + this.material.needsUpdate = true; + } + } +}; +_SparkRenderer.emptyOrdering = (() => { + const numIndices = 4 * 4096 * 1; + const emptyArray = new Uint32Array(numIndices); + const texture2 = new THREE__namespace.DataTexture(emptyArray, 4096, 1); + texture2.format = THREE__namespace.RGBAIntegerFormat; + texture2.type = THREE__namespace.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SparkRenderer.cubeRender = null; +_SparkRenderer.pmrem = null; +let SparkRenderer = _SparkRenderer; +function checkIsXRRenderTarget(renderTarget) { + return renderTarget == null ? void 0 : renderTarget.isXRRenderTarget; } -const _OldSparkViewpoint = class _OldSparkViewpoint { - constructor(options) { - this.lastTime = null; - this.encodeLinear = false; - this.superXY = 1; - this.display = null; - this.sorting = null; - this.pending = null; - this.sortingCheck = false; - this.readback16 = new Uint16Array(0); - this.readback32 = new Uint32Array(0); - this.spark = options.spark; - this.camera = options.camera; - this.viewToWorld = options.viewToWorld ?? new THREE__namespace.Matrix4(); - if (options.target) { - const { width, height, doubleBuffer } = options.target; - const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1)); - this.superXY = superXY; - if (width * superXY > 8192 || height * superXY > 8192) { - throw new Error("Target size too large"); +const PLY_PROPERTY_TYPES = [ + "char", + "uchar", + "short", + "ushort", + "int", + "uint", + "float", + "double" +]; +const _PlyReader = class _PlyReader { + // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet + constructor({ fileBytes }) { + this.header = ""; + this.littleEndian = true; + this.elements = {}; + this.comments = []; + this.data = null; + this.numSplats = 0; + this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes; + } + // Identify and parse the PLY text header (assumed to be <64KB in size). + // this.elements will contain all the elements in the file, typically + // "vertex" contains the Gsplat data. + async parseHeader() { + const bufferStream = new ReadableStream({ + start: (controller) => { + controller.enqueue(this.fileBytes.slice(0, 65536)); + controller.close(); } - this.target = new THREE__namespace.WebGLRenderTarget( - width * superXY, - height * superXY, - { - format: THREE__namespace.RGBAFormat, - type: THREE__namespace.UnsignedByteType, - colorSpace: THREE__namespace.SRGBColorSpace + }); + const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader(); + this.header = ""; + const headerTerminator = "end_header\n"; + while (true) { + const { value, done } = await decoder.read(); + if (done) { + throw new Error("Failed to read header"); + } + this.header += value; + const endHeader = this.header.indexOf(headerTerminator); + if (endHeader >= 0) { + this.header = this.header.slice(0, endHeader + headerTerminator.length); + break; + } + } + const headerLen = new TextEncoder().encode(this.header).length; + this.data = new DataView(this.fileBytes.buffer, headerLen); + this.elements = {}; + let curElement = null; + this.comments = []; + this.header.trim().split("\n").forEach((line, lineIndex) => { + const trimmedLine = line.trim(); + if (lineIndex === 0) { + if (trimmedLine !== "ply") { + throw new Error("Invalid PLY header"); } - ); - if (doubleBuffer) { - this.back = new THREE__namespace.WebGLRenderTarget( - width * superXY, - height * superXY, - { - format: THREE__namespace.RGBAFormat, - type: THREE__namespace.UnsignedByteType, - colorSpace: THREE__namespace.SRGBColorSpace + return; + } + if (trimmedLine.length === 0) { + return; + } + const fields = trimmedLine.split(" "); + switch (fields[0]) { + case "format": + if (fields[1] === "binary_little_endian") { + this.littleEndian = true; + } else if (fields[1] === "binary_big_endian") { + this.littleEndian = false; + } else { + throw new Error(`Unsupported PLY format: ${fields[1]}`); + } + if (fields[2] !== "1.0") { + throw new Error(`Unsupported PLY version: ${fields[2]}`); + } + break; + case "end_header": + break; + case "comment": + this.comments.push(trimmedLine.slice("comment ".length)); + break; + case "element": { + const name = fields[1]; + curElement = { + name, + count: Number.parseInt(fields[2]), + properties: {} + }; + this.elements[name] = curElement; + break; + } + case "property": + if (curElement == null) { + throw new Error("Property must be inside an element"); } - ); + if (fields[1] === "list") { + curElement.properties[fields[4]] = { + isList: true, + type: fields[3], + countType: fields[2] + }; + } else { + curElement.properties[fields[2]] = { + isList: false, + type: fields[1] + }; + } + break; } - this.encodeLinear = true; - } - this.onTextureUpdated = options.onTextureUpdated; - this.sortRadial = options.sortRadial ?? true; - this.sortDistance = options.sortDistance; - this.sortCoorient = options.sortCoorient; - this.depthBias = options.depthBias; - this.sort360 = options.sort360; - this.sort32 = options.sort32; - this.stochastic = options.stochastic ?? false; - this.orderingFreelist = new FreeList({ - allocate: (maxSplats) => new Uint32Array(maxSplats), - valid: (ordering, maxSplats) => ordering.length === maxSplats }); - this.autoUpdate = false; - this.setAutoUpdate(options.autoUpdate ?? false); - } - // Call this when you are done with the SparkViewpoint and want to - // free up its resources (GPU targets, pixel buffers, etc.) - dispose() { - var _a2; - this.setAutoUpdate(false); - if (this.target) { - this.target.dispose(); - this.target = void 0; - } - if (this.back) { - this.back.dispose(); - this.back = void 0; - } - if (this.display) { - this.spark.releaseAccumulator(this.display.accumulator); - this.display.geometry.dispose(); - this.display = null; - } - if ((_a2 = this.pending) == null ? void 0 : _a2.accumulator) { - this.spark.releaseAccumulator(this.pending.accumulator); - this.pending = null; - } - } - // Use this function to change whether this viewpoint will auto-update - // its sort order whenever the attached SparkRenderer updates the Gsplats. - // Turn this on or off depending on whether you expect to do renders from - // this viewpoint most frames. - setAutoUpdate(autoUpdate) { - if (!this.autoUpdate && autoUpdate) { - this.spark.autoViewpoints.push(this); - } else if (this.autoUpdate && !autoUpdate) { - this.spark.autoViewpoints = this.spark.autoViewpoints.filter( - (v) => v !== this - ); + if (this.elements.vertex) { + this.numSplats = this.elements.vertex.count; } - this.autoUpdate = autoUpdate; } - // See below async prepareRenderPixels() for explanation of parameters. - // Awaiting this method updates the Gsplats in the scene and performs a sort of the - // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget() - // call in the same tick. - async prepare({ - scene, - camera, - viewToWorld, - update, - forceOrigin - }) { - if (viewToWorld) { - this.viewToWorld = viewToWorld; - } else { - this.camera = camera ?? this.camera; - if (this.camera) { - this.camera.updateMatrixWorld(); - this.viewToWorld = this.camera.matrixWorld.clone(); - } + parseData(elementCallback) { + let offset = 0; + const data = this.data; + if (data == null) { + throw new Error("No data to parse"); } - while (update ?? true) { - const originToWorld = forceOrigin ? this.viewToWorld : this.spark.matrixWorld; - const updated = this.spark.updateInternal({ scene, originToWorld }); - if (updated) { - break; + for (const elementName in this.elements) { + const element = this.elements[elementName]; + const { count, properties } = element; + const item = createEmptyItem(properties); + const parseFn = createParseFn(properties, this.littleEndian); + const callback = elementCallback(element) ?? (() => { + }); + for (let index = 0; index < count; index++) { + offset = parseFn(data, offset, item); + callback(index, item); } - await new Promise((resolve) => setTimeout(resolve, 10)); - } - const accumulator = this.spark.active; - accumulator.refCount += 1; - await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld }); - this.spark.releaseAccumulator(accumulator); - } - // Render out the viewpoint to the view target RGBA buffer. - // Swaps buffers if doubleBuffer: true was set. - // Calls onTextureUpdated(texture) with the resulting texture. - renderTarget({ - scene, - camera - }) { - var _a2; - const target = this.back ?? this.target; - if (!target) { - throw new Error("Must initialize SparkViewpoint with target"); - } - camera = camera ?? this.camera; - if (!camera) { - throw new Error("Must provide camera"); - } - if (camera instanceof THREE__namespace.PerspectiveCamera) { - const newCam = new THREE__namespace.PerspectiveCamera().copy(camera, false); - newCam.aspect = target.width / target.height; - newCam.updateProjectionMatrix(); - camera = newCam; - } - this.viewToWorld = camera.matrixWorld.clone(); - const previousTarget = this.spark.renderer.getRenderTarget(); - try { - this.spark.renderer.setRenderTarget(target); - this.spark.prepareViewpoint(this); - this.spark.renderer.render(scene, camera); - } finally { - this.spark.prepareViewpoint(this.spark.defaultView); - this.spark.renderer.setRenderTarget(previousTarget); } - if (target !== this.target) { - [this.target, this.back] = [this.back, this.target]; - } - (_a2 = this.onTextureUpdated) == null ? void 0 : _a2.call(this, target.texture); } - // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). If superXY was set greater than 1 then - // downsampling is performed in the target pixel array with simple averaging - // to derive the returned pixel values. Subsequent calls to this.readTarget() - // will reuse the same buffers to minimize memory allocations. - async readTarget() { - if (!this.target) { - throw new Error("Must initialize SparkViewpoint with target"); - } - const { width, height } = this.target; - const byteSize = width * height * 4; - if (!this.superPixels || this.superPixels.length < byteSize) { - this.superPixels = new Uint8Array(byteSize); - } - await this.spark.renderer.readRenderTargetPixelsAsync( - this.target, - 0, - 0, - width, - height, - this.superPixels - ); - const { superXY } = this; - if (superXY === 1) { - return this.superPixels; + // Parse all the Gsplat data in the PLY file in go, invoking the given + // callbacks for each Gsplat. + parseSplats(splatCallback, shCallback) { + if (this.elements.vertex == null) { + throw new Error("No vertex element found"); } - const subWidth = width / superXY; - const subHeight = height / superXY; - const subSize = subWidth * subHeight * 4; - if (!this.pixels || this.pixels.length < subSize) { - this.pixels = new Uint8Array(subSize); + let isSuperSplat = false; + const ssChunks = []; + let numSh = 0; + let sh1Props = []; + let sh2Props = []; + let sh3Props = []; + let sh1 = void 0; + let sh2 = void 0; + let sh3 = void 0; + function prepareSh() { + const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh]; + sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3)); + sh2Props = new Array(5).fill(null).flatMap( + (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3) + ); + sh3Props = new Array(7).fill(null).flatMap( + (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3) + ); + sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0; + sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0; + sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0; } - const { superPixels, pixels } = this; - const super2 = superXY * superXY; - for (let y = 0; y < subHeight; y++) { - const row = y * subWidth; - for (let x = 0; x < subWidth; x++) { - const superCol = x * superXY; - let r = 0; - let g = 0; - let b = 0; - let a = 0; - for (let sy = 0; sy < superXY; sy++) { - const superRow = (y * superXY + sy) * this.target.width; - for (let sx = 0; sx < superXY; sx++) { - const superIndex = (superRow + superCol + sx) * 4; - r += superPixels[superIndex]; - g += superPixels[superIndex + 1]; - b += superPixels[superIndex + 2]; - a += superPixels[superIndex + 3]; - } - } - const pixelIndex = (row + x) * 4; - pixels[pixelIndex] = r / super2; - pixels[pixelIndex + 1] = g / super2; - pixels[pixelIndex + 2] = b / super2; - pixels[pixelIndex + 3] = a / super2; - } - } - return pixels; - } - // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene - // and any camera/viewToWorld viewpoint overrides. By default update is true, - // which triggers its SparkRenderer to check and potentially update the Gsplats. - // Setting update to false disables this and sorts the Gsplats as they are. - // Setting forceOrigin (default: false) to true forces the view update to - // recalculate the splats with this view origin, potentially altering any - // view-dependent effects. If you expect view-dependent effects to play a role - // in the rendering quality, enable this. - // - // Underneath, prepareRenderPixels() simply calls await this.prepare(...), - // this.renderTarget(...), and finally returns the result this.readTarget(), - // a Promise to a Uint8Array with RGBA values for all the pixels (potentially - // downsampled if the superXY parameter was used). These steps can also be called - // manually, for example if you need to alter the scene before and after - // this.renderTarget(...) to hide UI elements from being rendered. - async prepareRenderPixels({ - scene, - camera, - viewToWorld, - update, - forceOrigin - }) { - await this.prepare({ scene, camera, viewToWorld, update, forceOrigin }); - this.renderTarget({ scene, camera }); - return this.readTarget(); - } - // This is called automatically by SparkRenderer, there is no need to call it! - // The method cannot be private because then SparkRenderer would - // not be able to call it. - autoPoll({ accumulator }) { - var _a2, _b2, _c; - if (this.camera) { - this.camera.updateMatrixWorld(); - this.viewToWorld = this.camera.matrixWorld.clone(); - } - let needsSort = false; - let displayed = false; - if (!this.display) { - needsSort = true; - } else if (accumulator) { - needsSort = true; - const { mappingVersion } = this.display.accumulator; - if (accumulator.mappingVersion === mappingVersion) { - accumulator.refCount += 1; - this.spark.releaseAccumulator(this.display.accumulator); - this.display.accumulator = accumulator; - this.display.viewToWorld.copy(this.viewToWorld); - displayed = true; - if (this.spark.viewpoint === this) { - this.spark.prepareViewpoint(this); - } + function ssShCallback(index, item) { + if (!sh1) { + throw new Error("Missing sh1"); } - } - const latestView = ((_a2 = this.sorting) == null ? void 0 : _a2.viewToWorld) ?? ((_b2 = this.display) == null ? void 0 : _b2.viewToWorld); - if (latestView && !withinCoorientDist({ - matrix1: this.viewToWorld, - matrix2: latestView, - // By default update sort each 1 cm - maxDistance: this.sortDistance ?? 0.01, - // By default for radial sort, update for intermittent movement so that - // we bring back splats culled by being behind the camera. - // For depth sort, small rotations can change sort order a lot, so - // update sort for even small rotations. - minCoorient: this.sortCoorient ?? this.sortRadial ? 0.99 : 0.999 - })) { - needsSort = true; - } - if (!needsSort) { - return; - } - if (accumulator) { - accumulator.refCount += 1; - } - if ((_c = this.pending) == null ? void 0 : _c.accumulator) { - this.spark.releaseAccumulator(this.pending.accumulator); - } - this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed }; - this.driveSort(); - } - async driveSort() { - var _a2; - while (true) { - if (this.sorting || !this.pending) { - return; + const sh = item.f_rest; + for (let i = 0; i < sh1Props.length; i++) { + sh1[i] = sh[sh1Props[i]] * 8 / 255 - 4; } - const { viewToWorld, displayed } = this.pending; - let accumulator = this.pending.accumulator; - if (!accumulator) { - accumulator = ((_a2 = this.display) == null ? void 0 : _a2.accumulator) ?? this.spark.active; - accumulator.refCount += 1; + if (sh2) { + for (let i = 0; i < sh2Props.length; i++) { + sh2[i] = sh[sh2Props[i]] * 8 / 255 - 4; + } } - this.pending = null; - if (!accumulator) { - throw new Error("No accumulator to sort"); + if (sh3) { + for (let i = 0; i < sh3Props.length; i++) { + sh3[i] = sh[sh3Props[i]] * 8 / 255 - 4; + } } - this.sorting = { viewToWorld }; - await this.sortUpdate({ accumulator, viewToWorld, displayed }); - this.sorting = null; - this.spark.releaseAccumulator(accumulator); + shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3); } - } - async sortUpdate({ - accumulator, - viewToWorld, - displayed = false - }) { - if (this.sortingCheck) { - throw new Error("Only one sort at a time"); - } - this.sortingCheck = true; - accumulator = accumulator ?? this.spark.active; - const { numSplats, maxSplats } = accumulator.splats; - let activeSplats = 0; - let ordering = this.orderingFreelist.alloc(maxSplats); - if (this.stochastic) { - activeSplats = numSplats; - for (let i = 0; i < numSplats; ++i) { - ordering[i] = i; - } - } else if (numSplats > 0) { + function initSuperSplat(element) { const { - reader, - doubleSortReader, - sort32Reader, - dynoSortRadial, - dynoOrigin, - dynoDirection, - dynoDepthBias, - dynoSort360, - dynoSplats - } = _OldSparkViewpoint.makeSorter(); - const sort32 = this.sort32 ?? false; - let readback; - if (sort32) { - this.readback32 = reader.ensureBuffer(maxSplats, this.readback32); - readback = this.readback32; - } else { - const halfMaxSplats = Math.ceil(maxSplats / 2); - this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16); - readback = this.readback16; - } - const worldToOrigin = accumulator.toWorld.clone().invert(); - const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin); - dynoSortRadial.value = this.sort360 ? true : this.sortRadial; - dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin); - dynoDirection.value.set(0, 0, -1).applyMatrix4(viewToOrigin).sub(dynoOrigin.value).normalize(); - dynoDepthBias.value = this.depthBias ?? 1; - dynoSort360.value = this.sort360 ?? false; - dynoSplats.packedSplats = accumulator.splats; - const sortReader = sort32 ? sort32Reader : doubleSortReader; - const count = sort32 ? numSplats : Math.ceil(numSplats / 2); - await reader.renderReadback({ - renderer: this.spark.renderer, - reader: sortReader, - count, - readback - }); - const result = await withWorker(async (worker) => { - const rpcName = sort32 ? "sort32Splats" : "sortDoubleSplats"; - return worker.call(rpcName, { - maxSplats, - numSplats, - readback, - ordering - }); - }); - if (sort32) { - this.readback32 = result.readback; - } else { - this.readback16 = result.readback; + min_x, + min_y, + min_z, + max_x, + max_y, + max_z, + min_scale_x, + min_scale_y, + min_scale_z, + max_scale_x, + max_scale_y, + max_scale_z + } = element.properties; + if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) { + throw new Error("Missing PLY chunk properties"); } - ordering = result.ordering; - activeSplats = result.activeSplats; - } - this.updateDisplay({ - accumulator, - viewToWorld, - ordering, - activeSplats, - displayed - }); - this.sortingCheck = false; - } - updateDisplay({ - accumulator, - viewToWorld, - ordering, - activeSplats, - displayed = false - }) { - if (!this.display) { - accumulator.refCount += 1; - this.display = { - accumulator, - viewToWorld, - geometry: new OldSplatGeometry(ordering, activeSplats) + isSuperSplat = true; + return (index, item) => { + const { + min_x: min_x2, + min_y: min_y2, + min_z: min_z2, + max_x: max_x2, + max_y: max_y2, + max_z: max_z2, + min_scale_x: min_scale_x2, + min_scale_y: min_scale_y2, + min_scale_z: min_scale_z2, + max_scale_x: max_scale_x2, + max_scale_y: max_scale_y2, + max_scale_z: max_scale_z2, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + } = item; + ssChunks.push({ + min_x: min_x2, + min_y: min_y2, + min_z: min_z2, + max_x: max_x2, + max_y: max_y2, + max_z: max_z2, + min_scale_x: min_scale_x2, + min_scale_y: min_scale_y2, + min_scale_z: min_scale_z2, + max_scale_x: max_scale_x2, + max_scale_y: max_scale_y2, + max_scale_z: max_scale_z2, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + }); }; - } else { - if (!displayed && accumulator !== this.display.accumulator) { - accumulator.refCount += 1; - this.spark.releaseAccumulator(this.display.accumulator); - this.display.accumulator = accumulator; - } - this.display.viewToWorld = viewToWorld; - const oldOrdering = this.display.geometry.ordering; - if (oldOrdering.length === ordering.length) { - this.display.geometry.update(ordering, activeSplats); - } else { - this.display.geometry.dispose(); - this.display.geometry = new OldSplatGeometry(ordering, activeSplats); + } + function decodeSuperSplat(element) { + if (shCallback && element.name === "sh") { + numSh = getNumSh(element.properties); + prepareSh(); + return ssShCallback; + } + if (element.name !== "vertex") { + return null; + } + const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties; + if (!packed_position || !packed_rotation || !packed_scale || !packed_color) { + throw new Error( + "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" + ); } - this.orderingFreelist.free(oldOrdering); - } - if (this.spark.viewpoint === this) { - this.spark.prepareViewpoint(this); - } - } - static makeSorter() { - if (!_OldSparkViewpoint.dynos) { - const dynoSortRadial = new DynoBool({ value: true }); - const dynoOrigin = new DynoVec3({ value: new THREE__namespace.Vector3() }); - const dynoDirection = new DynoVec3({ value: new THREE__namespace.Vector3() }); - const dynoDepthBias = new DynoFloat({ value: 1 }); - const dynoSort360 = new DynoBool({ value: false }); - const dynoSplats = new DynoPackedSplats(); - const reader = new Readback(); - const doubleSortReader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("No index"); - } - const sortParams = { - sortRadial: dynoSortRadial, - sortOrigin: dynoOrigin, - sortDirection: dynoDirection, - sortDepthBias: dynoDepthBias, - sort360: dynoSort360 - }; - const index2 = mul(index, dynoConst("int", 2)); - const gsplat0 = readPackedSplat(dynoSplats, index2); - const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams }); - const gsplat1 = readPackedSplat( - dynoSplats, - add(index2, dynoConst("int", 1)) - ); - const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams }); - const combined = combine({ - vectorType: "vec2", - x: metric0, - y: metric1 - }); - const rgba8 = uintToRgba8(packHalf2x16(combined)); - return { rgba8 }; - } - ); - const sort32Reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("No index"); - } - const sortParams = { - sortRadial: dynoSortRadial, - sortOrigin: dynoOrigin, - sortDirection: dynoDirection, - sortDepthBias: dynoDepthBias, - sort360: dynoSort360 - }; - const gsplat = readPackedSplat(dynoSplats, index); - const metric = computeSortMetric({ gsplat, ...sortParams }); - const rgba8 = uintToRgba8(floatBitsToUint(metric)); - return { rgba8 }; + const SQRT2 = Math.sqrt(2); + return (index, item) => { + const chunk = ssChunks[index >>> 8]; + if (chunk == null) { + throw new Error("Missing PLY chunk"); } - ); - _OldSparkViewpoint.dynos = { - dynoSortRadial, - dynoOrigin, - dynoDirection, - dynoDepthBias, - dynoSort360, - dynoSplats, - reader, - doubleSortReader, - sort32Reader + const { + min_x, + min_y, + min_z, + max_x, + max_y, + max_z, + min_scale_x, + min_scale_y, + min_scale_z, + max_scale_x, + max_scale_y, + max_scale_z, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + } = chunk; + const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item; + const x = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x; + const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y; + const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z; + const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2; + const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2; + const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2; + const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2)); + const rOrder = packed_rotation2 >>> 30; + const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1; + const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2; + const quatZ = rOrder <= 2 ? r2 : rr; + const quatW = rOrder === 0 ? rr : r0; + const scaleX = Math.exp( + (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x + ); + const scaleY = Math.exp( + (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y + ); + const scaleZ = Math.exp( + (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z + ); + const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0); + const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0); + const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0); + const opacity = (packed_color2 & 255) / 255; + splatCallback( + index, + x, + y, + z, + scaleX, + scaleY, + scaleZ, + quatX, + quatY, + quatZ, + quatW, + opacity, + r, + g, + b + ); }; } - return _OldSparkViewpoint.dynos; - } -}; -_OldSparkViewpoint.EMPTY_TEXTURE = new THREE__namespace.Texture(); -_OldSparkViewpoint.dynos = null; -let OldSparkViewpoint = _OldSparkViewpoint; -const defineComputeSortMetric = unindent(` - float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) { - if (!isGsplatActive(gsplat.flags)) { - return INFINITY; - } - - vec3 center = gsplat.center - sortOrigin; - float biasedDepth = dot(center, sortDirection) + sortDepthBias; - if (!sort360 && (biasedDepth <= 0.0)) { - return INFINITY; - } - - return sortRadial ? length(center) : biasedDepth; - } -`); -function computeSortMetric({ - gsplat, - sortRadial, - sortOrigin, - sortDirection, - sortDepthBias, - sort360 -}) { - return dyno$1({ - inTypes: { - gsplat: Gsplat, - sortRadial: "bool", - sortOrigin: "vec3", - sortDirection: "vec3", - sortDepthBias: "float", - sort360: "bool" - }, - outTypes: { metric: "float" }, - globals: () => [defineGsplat, defineComputeSortMetric], - inputs: { - gsplat, - sortRadial, - sortOrigin, - sortDirection, - sortDepthBias, - sort360 - }, - statements: ({ inputs, outputs }) => { - const { - gsplat: gsplat2, - sortRadial: sortRadial2, - sortOrigin: sortOrigin2, - sortDirection: sortDirection2, - sortDepthBias: sortDepthBias2, - sort360: sort3602 - } = inputs; - return unindentLines(` - ${outputs.metric} = computeSort(${gsplat2}, ${sortRadial2}, ${sortOrigin2}, ${sortDirection2}, ${sortDepthBias2}, ${sort3602}); - `); - } - }).outputs.metric; -} -class OldSplatAccumulator { - constructor() { - this.splats = new PackedSplats(); - this.toWorld = new THREE__namespace.Matrix4(); - this.mapping = []; - this.refCount = 0; - this.splatsVersion = -1; - this.mappingVersion = -1; - } - ensureGenerate(maxSplats) { - if (this.splats.ensureGenerate(maxSplats)) { - this.mapping = []; - } - } - // Generate all Gsplats from an array of generators - generateSplats({ - renderer, - modifier, - generators: generators2, - forceUpdate, - originToWorld - }) { - const mapping = this.mapping.reduce((map, record) => { - map.set(record.node, record); - return map; - }, /* @__PURE__ */ new Map()); - let updated = 0; - let numSplats = 0; - for (const { node, generator, version, base, count } of generators2) { - const current = mapping.get(node); - if (forceUpdate || generator !== (current == null ? void 0 : current.generator) || version !== (current == null ? void 0 : current.version) || base !== (current == null ? void 0 : current.base) || count !== (current == null ? void 0 : current.count)) { - if (generator && count > 0) { - const modGenerator = modifier.apply(generator); - try { - this.splats.generate({ - generator: modGenerator, - base, - count, - renderer - }); - } catch (error) { - node.generator = void 0; - node.generatorError = error; - } - updated += 1; - } + const elementCallback = (element) => { + if (element.name === "chunk") { + return initSuperSplat(element); + } + if (isSuperSplat) { + return decodeSuperSplat(element); + } + if (element.name !== "vertex") { + return null; } - numSplats = Math.max(numSplats, base + count); - } - this.splats.numSplats = numSplats; - this.toWorld.copy(originToWorld); - this.mapping = generators2; - return updated !== 0; - } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - hasCorrespondence(other) { - if (this.mapping.length !== other.mapping.length) { - return false; - } - return this.mapping.every(({ node, base, count }, i) => { const { - node: otherNode, - base: otherBase, - count: otherCount - } = other.mapping[i]; - return node === otherNode && base === otherBase && count === otherCount; - }); - } -} -const MAX_ACCUMULATORS = 5; -const _OldSparkRenderer = class _OldSparkRenderer extends THREE__namespace.Mesh { - constructor(options) { - const uniforms = _OldSparkRenderer.makeUniforms(); - const shaders2 = getShaders(); - const premultipliedAlpha = options.premultipliedAlpha ?? true; - const material = new THREE__namespace.ShaderMaterial({ - glslVersion: THREE__namespace.GLSL3, - vertexShader: shaders2.oldSplatVertex, - fragmentShader: shaders2.oldSplatFragment, - uniforms, - premultipliedAlpha, - transparent: true, - depthTest: true, - depthWrite: false, - side: THREE__namespace.DoubleSide - }); - super(EMPTY_GEOMETRY, material); - this.splatTexture = null; - this.autoViewpoints = []; - this.rotateToAccumulator = new DynoVec4({ value: new THREE__namespace.Quaternion() }); - this.translateToAccumulator = new DynoVec3({ value: new THREE__namespace.Vector3() }); - this.lastFrame = -1; - this.lastUpdateTime = null; - this.defaultCameras = []; - this.lastStochastic = null; - this.pendingUpdate = { - scene: null, - originToWorld: new THREE__namespace.Matrix4(), - timeoutId: -1 - }; - this.envViewpoint = null; - this.frustumCulled = false; - this.renderer = options.renderer; - this.material = material; - this.uniforms = uniforms; - const modifier = dynoBlock( - { gsplat: Gsplat }, - { gsplat: Gsplat }, - ({ gsplat }) => { - if (!gsplat) { - throw new Error("gsplat not defined"); - } - gsplat = transformGsplat(gsplat, { - rotate: this.rotateToAccumulator, - translate: this.translateToAccumulator - }); - return { gsplat }; + x, + y, + z, + scale_0, + scale_1, + scale_2, + rot_0, + rot_1, + rot_2, + rot_3, + opacity, + f_dc_0, + f_dc_1, + f_dc_2, + red, + green, + blue, + alpha + } = element.properties; + if (!x || !y || !z) { + throw new Error("Missing PLY properties: x, y, z"); } - ); - this.modifier = new SplatModifier(modifier); - this.premultipliedAlpha = premultipliedAlpha; - this.autoUpdate = options.autoUpdate ?? true; - this.preUpdate = options.preUpdate ?? false; - this.needsUpdate = false; - this.originDistance = options.originDistance ?? 1; - this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); - this.minPixelRadius = options.minPixelRadius ?? 0; - this.maxPixelRadius = options.maxPixelRadius ?? 512; - this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); - this.enable2DGS = options.enable2DGS ?? false; - this.preBlurAmount = options.preBlurAmount ?? 0; - this.blurAmount = options.blurAmount ?? 0.3; - this.focalDistance = options.focalDistance ?? 0; - this.apertureAngle = options.apertureAngle ?? 0; - this.falloff = options.falloff ?? 1; - this.clipXY = options.clipXY ?? 1.4; - this.focalAdjustment = options.focalAdjustment ?? 1; - this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING }; - this.active = new OldSplatAccumulator(); - this.active.refCount = 1; - this.accumulatorCount = 1; - this.freeAccumulators = []; - for (let count = 0; count < 1; ++count) { - this.freeAccumulators.push(new OldSplatAccumulator()); - this.accumulatorCount += 1; - } - this.defaultView = new OldSparkViewpoint({ - ...options.view, - autoUpdate: true, - spark: this - }); - this.viewpoint = this.defaultView; - this.prepareViewpoint(this.viewpoint); - this.clock = options.clock ? cloneClock(options.clock) : new THREE__namespace.Clock(); - } - static makeUniforms() { - const uniforms = { - // Size of render viewport in pixels - renderSize: { value: new THREE__namespace.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // Total number of Gsplats in packedSplats to render - numSplats: { value: 0 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new THREE__namespace.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new THREE__namespace.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.5 * (1 / 255) }, - // Enable stochastic splat rendering - stochastic: { value: false }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: false }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Enable splat texture rendering - splatTexEnable: { value: false }, - // Splat texture to render - splatTexture: { type: "t", value: _OldSparkRenderer.EMPTY_SPLAT_TEXTURE }, - // Splat texture UV transform (multiply) - splatTexMul: { value: new THREE__namespace.Matrix2() }, - // Splat texture UV transform (add) - splatTexAdd: { value: new THREE__namespace.Vector2() }, - // Splat texture near plane distance - splatTexNear: { value: 0.1 }, - // Splat texture far plane distance - splatTexFar: { value: 1e3 }, - // Splat texture mid plane distance, or 0.0 to disable - splatTexMid: { value: 0 }, - // Gsplat collection to render - packedSplats: { type: "t", value: PackedSplats.getEmptyArray }, - // Splat encoding ranges - rgbMinMaxLnScaleMinMax: { value: new THREE__namespace.Vector4() }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: false }, - // Debug flag that alternates each frame - debugFlag: { value: false } + const hasScales = scale_0 && scale_1 && scale_2; + const hasRots = rot_0 && rot_1 && rot_2 && rot_3; + const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1; + const redDiv = red != null ? FIELD_SCALE[red.type] : 1; + const greenDiv = green != null ? FIELD_SCALE[green.type] : 1; + const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1; + numSh = getNumSh(element.properties); + prepareSh(); + return (index, item) => { + const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale; + const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale; + const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale; + const quatX = hasRots ? item.rot_1 : 0; + const quatY = hasRots ? item.rot_2 : 0; + const quatZ = hasRots ? item.rot_3 : 0; + const quatW = hasRots ? item.rot_0 : 1; + const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1; + const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1; + const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1; + const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1; + splatCallback( + index, + item.x, + item.y, + item.z, + scaleX, + scaleY, + scaleZ, + quatX, + quatY, + quatZ, + quatW, + op, + r, + g, + b + ); + if (shCallback && sh1) { + const sh = item.f_rest; + if (sh1) { + for (let i = 0; i < sh1Props.length; i++) { + sh1[i] = sh[sh1Props[i]]; + } + } + if (sh2) { + for (let i = 0; i < sh2Props.length; i++) { + sh2[i] = sh[sh2Props[i]]; + } + } + if (sh3) { + for (let i = 0; i < sh3Props.length; i++) { + sh3[i] = sh[sh3Props[i]]; + } + } + shCallback(index, sh1, sh2, sh3); + } + }; }; - return uniforms; - } - canAllocAccumulator() { - return this.freeAccumulators.length > 0 || this.accumulatorCount < MAX_ACCUMULATORS; + this.parseData(elementCallback); } - maybeAllocAccumulator() { - let accumulator = this.freeAccumulators.pop(); - if (accumulator === void 0) { - if (this.accumulatorCount >= MAX_ACCUMULATORS) { - return null; - } - accumulator = new OldSplatAccumulator(); - this.accumulatorCount += 1; + // Inject RGBA values into original PLY file, which can be used to modify + // the color/opacity of the Gsplats and write out the modified PLY file. + injectRgba(rgba) { + let offset = 0; + const data = this.data; + if (data == null) { + throw new Error("No parsed data"); } - accumulator.refCount = 1; - return accumulator; - } - releaseAccumulator(accumulator) { - accumulator.refCount -= 1; - if (accumulator.refCount === 0) { - this.freeAccumulators.push(accumulator); + if (rgba.length !== this.numSplats * 4) { + throw new Error("Invalid RGBA array length"); } - } - newViewpoint(options) { - return new OldSparkViewpoint({ ...options, spark: this }); - } - onBeforeRender(renderer, scene, camera) { - var _a2, _b2; - const time = this.time ?? this.clock.getElapsedTime(); - const deltaTime = time - (this.viewpoint.lastTime ?? time); - this.viewpoint.lastTime = time; - const frame = renderer.info.render.frame; - const isNewFrame = frame !== this.lastFrame; - this.lastFrame = frame; - const viewpoint = this.viewpoint; - if (viewpoint === this.defaultView) { - if (isNewFrame) { - if (!renderer.xr.isPresenting) { - this.defaultView.viewToWorld = camera.matrixWorld.clone(); - this.defaultCameras = [this.defaultView.viewToWorld]; - } else { - const cameras = renderer.xr.getCamera().cameras; - this.defaultCameras = cameras.map((camera2) => camera2.matrixWorld); - this.defaultView.viewToWorld = averageOriginToWorlds(this.defaultCameras) ?? new THREE__namespace.Matrix4(); + for (const elementName in this.elements) { + const element = this.elements[elementName]; + const { count, properties } = element; + const parsers = []; + let rgbaOffset = 0; + const isVertex = elementName === "vertex"; + if (isVertex) { + for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) { + if (!properties[name] || properties[name].type !== "float") { + throw new Error(`Can't injectRgba due to property: ${name}`); + } } } - if (this.autoUpdate) { - this.update({ scene, viewToWorld: this.defaultView.viewToWorld }); - } - } - if (isNewFrame) { - if (this.material.premultipliedAlpha !== this.premultipliedAlpha) { - this.material.premultipliedAlpha = this.premultipliedAlpha; - this.material.needsUpdate = true; - } - this.uniforms.time.value = time; - this.uniforms.deltaTime.value = deltaTime; - this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; - if (viewpoint.display && viewpoint.stochastic) { - this.geometry.instanceCount = this.uniforms.numSplats.value; - } - } - if (viewpoint.target) { - this.uniforms.renderSize.value.set( - viewpoint.target.width, - viewpoint.target.height - ); - } else { - const renderSize = renderer.getDrawingBufferSize( - this.uniforms.renderSize.value - ); - if (renderSize.x === 1 && renderSize.y === 1) { - const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; - if (baseLayer) { - renderSize.x = baseLayer.framebufferWidth; - renderSize.y = baseLayer.framebufferHeight; + for (const [propertyName, property] of Object.entries(properties)) { + if (!property.isList) { + if (isVertex) { + if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") { + const component = Number.parseInt( + propertyName.slice("f_dc_".length) + ); + parsers.push(() => { + const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1; + SET_FIELD[property.type]( + data, + offset, + this.littleEndian, + value + ); + }); + } else if (propertyName === "opacity") { + parsers.push(() => { + const value = Math.max( + -100, + Math.min( + 100, + -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1) + ) + ); + SET_FIELD[property.type]( + data, + offset, + this.littleEndian, + value + ); + }); + } + } + parsers.push(() => { + offset += FIELD_BYTES[property.type]; + }); + } else { + parsers.push(() => { + const length2 = PARSE_FIELD[property.countType]( + data, + offset, + this.littleEndian + ); + offset += FIELD_BYTES[property.countType]; + offset += length2 * FIELD_BYTES[property.type]; + }); } } - } - const typedCamera = camera; - this.uniforms.near.value = typedCamera.near; - this.uniforms.far.value = typedCamera.far; - this.uniforms.encodeLinear.value = viewpoint.encodeLinear; - this.uniforms.maxStdDev.value = this.maxStdDev; - this.uniforms.minPixelRadius.value = this.minPixelRadius; - this.uniforms.maxPixelRadius.value = this.maxPixelRadius; - this.uniforms.minAlpha.value = this.minAlpha; - this.uniforms.stochastic.value = viewpoint.stochastic; - this.uniforms.enable2DGS.value = this.enable2DGS; - this.uniforms.preBlurAmount.value = this.preBlurAmount; - this.uniforms.blurAmount.value = this.blurAmount; - this.uniforms.focalDistance.value = this.focalDistance; - this.uniforms.apertureAngle.value = this.apertureAngle; - this.uniforms.falloff.value = this.falloff; - this.uniforms.clipXY.value = this.clipXY; - this.uniforms.focalAdjustment.value = this.focalAdjustment; - if (this.lastStochastic !== !viewpoint.stochastic) { - this.lastStochastic = !viewpoint.stochastic; - this.material.transparent = !viewpoint.stochastic; - this.material.depthWrite = viewpoint.stochastic; - this.material.needsUpdate = true; - } - if (this.splatTexture) { - const { enable, texture: texture2, multiply, add: add2, near, far, mid } = this.splatTexture; - if (enable && texture2) { - this.uniforms.splatTexEnable.value = true; - this.uniforms.splatTexture.value = texture2; - if (multiply) { - this.uniforms.splatTexMul.value.fromArray(multiply.elements); - } else { - this.uniforms.splatTexMul.value.set( - 0.5 / this.maxStdDev, - 0, - 0, - 0.5 / this.maxStdDev - ); + for (let index = 0; index < count; index++) { + for (const parser of parsers) { + parser(); + } + if (isVertex) { + rgbaOffset += 4; } - this.uniforms.splatTexAdd.value.set((add2 == null ? void 0 : add2.x) ?? 0.5, (add2 == null ? void 0 : add2.y) ?? 0.5); - this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value; - this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value; - this.uniforms.splatTexMid.value = mid ?? 0; - } else { - this.uniforms.splatTexEnable.value = false; - this.uniforms.splatTexture.value = _OldSparkRenderer.EMPTY_SPLAT_TEXTURE; } + } + } +}; +_PlyReader.defaultPointScale = 1e-3; +let PlyReader = _PlyReader; +const SH_C0$1 = 0.28209479177387814; +const PARSE_FIELD = { + char: (data, offset, littleEndian) => { + return data.getInt8(offset); + }, + uchar: (data, offset, littleEndian) => { + return data.getUint8(offset); + }, + short: (data, offset, littleEndian) => { + return data.getInt16(offset, littleEndian); + }, + ushort: (data, offset, littleEndian) => { + return data.getUint16(offset, littleEndian); + }, + int: (data, offset, littleEndian) => { + return data.getInt32(offset, littleEndian); + }, + uint: (data, offset, littleEndian) => { + return data.getUint32(offset, littleEndian); + }, + float: (data, offset, littleEndian) => { + return data.getFloat32(offset, littleEndian); + }, + double: (data, offset, littleEndian) => { + return data.getFloat64(offset, littleEndian); + } +}; +const SET_FIELD = { + char: (data, offset, littleEndian, value) => { + data.setInt8(offset, value); + }, + uchar: (data, offset, littleEndian, value) => { + data.setUint8(offset, value); + }, + short: (data, offset, littleEndian, value) => { + data.setInt16(offset, value, littleEndian); + }, + ushort: (data, offset, littleEndian, value) => { + data.setUint16(offset, value, littleEndian); + }, + int: (data, offset, littleEndian, value) => { + data.setInt32(offset, value, littleEndian); + }, + uint: (data, offset, littleEndian, value) => { + data.setUint32(offset, value, littleEndian); + }, + float: (data, offset, littleEndian, value) => { + data.setFloat32(offset, value, littleEndian); + }, + double: (data, offset, littleEndian, value) => { + data.setFloat64(offset, value, littleEndian); + } +}; +const FIELD_BYTES = { + char: 1, + uchar: 1, + short: 2, + ushort: 2, + int: 4, + uint: 4, + float: 4, + double: 8 +}; +const FIELD_SCALE = { + char: 127, + uchar: 255, + short: 32767, + ushort: 65535, + int: 2147483647, + uint: 4294967295, + float: 1, + double: 1 +}; +const NUM_F_REST_TO_NUM_SH = { + 0: 0, + 9: 1, + 24: 2, + 45: 3 +}; +const NUM_SH_TO_NUM_F_REST = { + 0: 0, + 1: 9, + 2: 24, + 3: 45 +}; +const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/; +function createEmptyItem(properties) { + const item = {}; + for (const [propertyName, property] of Object.entries(properties)) { + if (F_REST_REGEX.test(propertyName)) { + item.f_rest = new Array(getNumSh(properties)); } else { - this.uniforms.splatTexEnable.value = false; - this.uniforms.splatTexture.value = _OldSparkRenderer.EMPTY_SPLAT_TEXTURE; + item[propertyName] = property.isList ? [] : 0; } - const accumToWorld = ((_b2 = viewpoint.display) == null ? void 0 : _b2.accumulator.toWorld) ?? new THREE__namespace.Matrix4(); - const worldToCamera = camera.matrixWorld.clone().invert(); - const originToCamera = accumToWorld.clone().premultiply(worldToCamera); - originToCamera.decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new THREE__namespace.Vector3() - ); } - // Update the uniforms for the given viewpoint. - // Note that the client expects to be able to call render() at any point - // to update the canvas, so we must switch the viewpoint back to - // defaultView when we're finished. - prepareViewpoint(viewpoint) { - var _a2, _b2, _c, _d; - this.viewpoint = viewpoint ?? this.viewpoint; - if (this.viewpoint.display) { - const { accumulator, geometry } = this.viewpoint.display; - this.uniforms.numSplats.value = accumulator.splats.numSplats; - this.uniforms.packedSplats.value = accumulator.splats.getTexture(); - this.uniforms.rgbMinMaxLnScaleMinMax.value.set( - ((_a2 = accumulator.splats.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, - ((_b2 = accumulator.splats.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, - ((_c = accumulator.splats.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, - ((_d = accumulator.splats.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX - ); - this.geometry = geometry; - this.material.transparent = !this.viewpoint.stochastic; - this.material.depthWrite = this.viewpoint.stochastic; - this.material.needsUpdate = true; - } else { - this.uniforms.numSplats.value = 0; - this.uniforms.packedSplats.value = PackedSplats.getEmptyArray; - this.geometry = EMPTY_GEOMETRY; - } + return item; +} +function createParseFn(properties, littleEndian) { + if (safeToCompile(properties)) { + return createCompiledParserFn(properties, littleEndian); } - // If spark.autoUpdate is false then you must manually call - // spark.update({ scene }) to have the scene Gsplats be re-generated. - update({ - scene, - viewToWorld - }) { - const originToWorld = this.matrixWorld; - if (this.preUpdate) { - this.updateInternal({ - scene, - originToWorld: originToWorld.clone(), - viewToWorld - }); - } else { - this.pendingUpdate.scene = scene; - this.pendingUpdate.originToWorld.copy(originToWorld); - if (this.pendingUpdate.timeoutId === -1) { - this.pendingUpdate.timeoutId = setTimeout(() => { - const { scene: scene2, originToWorld: originToWorld2 } = this.pendingUpdate; - this.pendingUpdate.scene = null; - this.pendingUpdate.timeoutId = -1; - const updated = this.updateInternal({ - scene: scene2, - originToWorld: originToWorld2, - viewToWorld - }); - if (updated) { - const gl = this.renderer.getContext(); - gl.flush(); - } - }, 1); - } - } + return createDynamicParserFn(properties, littleEndian); +} +const UNSAFE_EVAL_ALLOWED = (() => { + try { + new Function("return 42;"); + } catch (e) { + return false; } - updateInternal({ - scene, - originToWorld, - viewToWorld - }) { - var _a2; - if (!this.canAllocAccumulator()) { + return true; +})(); +const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/; +function safeToCompile(properties) { + if (!UNSAFE_EVAL_ALLOWED) { + return false; + } + for (const [propertyName, property] of Object.entries(properties)) { + if (!PROPERTY_NAME_REGEX.test(propertyName)) { return false; } - if (!originToWorld) { - originToWorld = this.active.toWorld; - } - viewToWorld = viewToWorld ?? originToWorld.clone(); - const time = this.time ?? this.clock.getElapsedTime(); - const deltaTime = time - (this.lastUpdateTime ?? time); - this.lastUpdateTime = time; - const activeMapping = this.active.mapping.reduce((map, record) => { - map.set(record.node, record); - return map; - }, /* @__PURE__ */ new Map()); - const { generators: generators2, visibleGenerators, globalEdits } = this.compileScene(scene); - for (const object of generators2) { - (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { - renderer: this.renderer, - object, - time, - deltaTime, - viewToWorld, - globalEdits - }); + if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) { + return false; } - const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid)); - for (const object of generators2) { - const current = activeMapping.get(object); - const isVisible = object.generator && visibleGenHash.has(object.uuid); - const numSplats = isVisible ? object.numSplats : 0; - if (this.needsUpdate || object.generator !== (current == null ? void 0 : current.generator) || numSplats !== (current == null ? void 0 : current.count)) { - object.updateVersion(); - } + if (!PLY_PROPERTY_TYPES.includes(property.type)) { + return false; } - const originUpdate = !withinCoorientDist({ - matrix1: originToWorld, - matrix2: this.active.toWorld, - maxDistance: this.originDistance - }); - const needsUpdate = this.needsUpdate || originUpdate || generators2.length !== activeMapping.size || generators2.some((g) => { - var _a3; - return g.version !== ((_a3 = activeMapping.get(g)) == null ? void 0 : _a3.version); - }); - this.needsUpdate = false; - let accumulator = null; - if (needsUpdate) { - accumulator = this.maybeAllocAccumulator(); - if (!accumulator) { - throw new Error("Unreachable"); - } - const originChanged = !withinCoorientDist({ - matrix1: originToWorld, - matrix2: accumulator.toWorld, - maxDistance: 1e-5, - minCoorient: 0.99999 - }); - const sorted = visibleGenerators.map((g, gIndex) => { - const lastGen = activeMapping.get(g); - return !lastGen ? [Number.POSITIVE_INFINITY, g.version, g] : ( - // Sort by version deltas then by previous ordering in the mapping, - // attempting to keep unchanging generators near the front - // to improve our chances of avoiding a re-generation. - [g.version - lastGen.version, lastGen.base, g] - ); - }).sort((a, b) => { - if (a[0] !== b[0]) { - return a[0] - b[0]; + } + return true; +} +function createCompiledParserFn(properties, littleEndian) { + const parserSrc = ["let list;"]; + for (const [propertyName, property] of Object.entries(properties)) { + const fRestMatch = propertyName.match(F_REST_REGEX); + if (fRestMatch) { + const fRestIndex = +fRestMatch[1]; + parserSrc.push( + /*js*/ + ` + item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; + ` + ); + } else if (!property.isList) { + parserSrc.push( + /*js*/ + ` + item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; + ` + ); + } else { + parserSrc.push( + /*js*/ + ` + list = item['${propertyName}']; + list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.countType]}; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; } - return a[1] - b[1]; - }); - const genOrder = sorted.map(([_version, _seq, g]) => g); - const splatCounts = genOrder.map((g) => g.numSplats); - const { maxSplats, mapping } = accumulator.splats.generateMapping(splatCounts); - const newGenerators = genOrder.map((node, gIndex) => { - const { base, count } = mapping[gIndex]; - return { - node, - generator: node.generator, - version: node.version, - base, - count - }; - }); - originToWorld.clone().invert().decompose( - this.translateToAccumulator.value, - this.rotateToAccumulator.value, - new THREE__namespace.Vector3() + ` ); - accumulator.ensureGenerate(maxSplats); - accumulator.splats.splatEncoding = { ...this.splatEncoding }; - accumulator.generateSplats({ - renderer: this.renderer, - modifier: this.modifier, - generators: newGenerators, - forceUpdate: originChanged, - originToWorld - }); - accumulator.splatsVersion = this.active.splatsVersion + 1; - const hasCorrespondence = accumulator.hasCorrespondence(this.active); - accumulator.mappingVersion = this.active.mappingVersion + (hasCorrespondence ? 0 : 1); - this.releaseAccumulator(this.active); - this.active = accumulator; - this.prepareViewpoint(); - } - setTimeout(() => { - for (const view of this.autoViewpoints) { - view.autoPoll({ accumulator: accumulator ?? void 0 }); - } - }, 1); - return true; + } } - compileScene(scene) { - const generators2 = []; - scene.traverse((node) => { - if (node instanceof SplatGenerator) { - generators2.push(node); - } - }); - const visibleGenerators = []; - scene.traverseVisible((node) => { - if (node instanceof SplatGenerator) { - visibleGenerators.push(node); - } - }); - const globalEdits = /* @__PURE__ */ new Set(); - scene.traverseVisible((node) => { - if (node instanceof SplatEdit) { - let ancestor = node.parent; - while (ancestor != null && !(ancestor instanceof SplatMesh)) { - ancestor = ancestor.parent; + parserSrc.push("return offset;"); + const fn = new Function( + "data", + "offset", + "item", + "PARSE_FIELD", + parserSrc.join("\n") + ); + return (data, offset, item) => fn(data, offset, item, PARSE_FIELD); +} +function createDynamicParserFn(properties, littleEndian) { + const parsers = []; + for (const [propertyName, property] of Object.entries(properties)) { + const fRestMatch = propertyName.match(F_REST_REGEX); + if (fRestMatch) { + const fRestIndex = +fRestMatch[1]; + parsers.push( + (data, offset, item) => { + item.f_rest[fRestIndex] = PARSE_FIELD[property.type]( + data, + offset, + littleEndian + ); + return offset + FIELD_BYTES[property.type]; } - if (ancestor == null) { - globalEdits.add(node); + ); + } else if (!property.isList) { + parsers.push( + (data, offset, item) => { + item[propertyName] = PARSE_FIELD[property.type]( + data, + offset, + littleEndian + ); + return offset + FIELD_BYTES[property.type]; } - } - }); - return { - generators: generators2, - visibleGenerators, - globalEdits: Array.from(globalEdits) - }; - } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - renderer, - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = false - }) { - var _a2, _b2; - if (!this.envViewpoint) { - this.envViewpoint = this.newViewpoint({ sort360: true }); - } - if (!_OldSparkRenderer.cubeRender || _OldSparkRenderer.cubeRender.target.width !== size || _OldSparkRenderer.cubeRender.near !== near || _OldSparkRenderer.cubeRender.far !== far) { - if (_OldSparkRenderer.cubeRender) { - _OldSparkRenderer.cubeRender.target.dispose(); - } - const target2 = new THREE__namespace.WebGLCubeRenderTarget(size, { - format: THREE__namespace.RGBAFormat, - generateMipmaps: true, - minFilter: THREE__namespace.LinearMipMapLinearFilter - }); - const camera2 = new THREE__namespace.CubeCamera(near, far, target2); - _OldSparkRenderer.cubeRender = { target: target2, camera: camera2, near, far }; - } - if (!_OldSparkRenderer.pmrem) { - _OldSparkRenderer.pmrem = new THREE__namespace.PMREMGenerator( - renderer ?? this.renderer ); - } - const viewToWorld = new THREE__namespace.Matrix4().setPosition(worldCenter); - await ((_a2 = this.envViewpoint) == null ? void 0 : _a2.prepare({ scene, viewToWorld, update })); - const { target, camera } = _OldSparkRenderer.cubeRender; - camera.position.copy(worldCenter); - const objectVisibility = /* @__PURE__ */ new Map(); - for (const object of hideObjects) { - objectVisibility.set(object, object.visible); - object.visible = false; - } - this.prepareViewpoint(this.envViewpoint); - camera.update(renderer ?? this.renderer, scene); - this.prepareViewpoint(this.defaultView); - for (const [object, visible] of objectVisibility.entries()) { - object.visible = visible; - } - return (_b2 = _OldSparkRenderer.pmrem) == null ? void 0 : _b2.fromCubemap(target.texture).texture; - } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(root, envMap) { - root.traverse((node) => { - if (node instanceof THREE__namespace.Mesh) { - if (Array.isArray(node.material)) { - for (const material of node.material) { - if (material instanceof THREE__namespace.MeshStandardMaterial) { - material.envMap = envMap; - } - } - } else { - if (node.material instanceof THREE__namespace.MeshStandardMaterial) { - node.material.envMap = envMap; + } else { + parsers.push( + (data, offset, item) => { + const list = item[propertyName]; + list.length = PARSE_FIELD[property.countType]( + data, + offset, + littleEndian + ); + let currentOffset = offset + FIELD_BYTES[property.countType]; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD[property.type]( + data, + currentOffset, + littleEndian + ); + currentOffset += FIELD_BYTES[property.type]; } + return currentOffset; } - } - }); - } - // Utility function that helps extract the Gsplat RGBA values from a - // SplatGenerator, including the result of any real-time RGBA SDF edits applied - // to a SplatMesh. This effectively "bakes" any computed RGBA values, which can - // now be used as a pipeline input via SplatMesh.splatRgba to inject these - // baked values into the Gsplat data. - getRgba({ - generator, - rgba - }) { - const mapping = this.active.mapping.find(({ node }) => node === generator); - if (!mapping) { - throw new Error("Generator not found"); - } - rgba = rgba ?? new RgbaArray(); - rgba.fromPackedSplats({ - packedSplats: this.active.splats, - base: mapping.base, - count: mapping.count, - renderer: this.renderer - }); - return rgba; - } - // Utility function that builds on getRgba({ generator }) and additionally - // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA - // in that byte order. - async readRgba({ - generator, - rgba - }) { - rgba = this.getRgba({ generator, rgba }); - return rgba.read(); + ); + } } -}; -_OldSparkRenderer.cubeRender = null; -_OldSparkRenderer.pmrem = null; -_OldSparkRenderer.EMPTY_SPLAT_TEXTURE = new THREE__namespace.Data3DTexture(); -let OldSparkRenderer = _OldSparkRenderer; -const EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0); -dynoBlock( - { packedSplats: TPackedSplats, index: "int" }, - { gsplat: Gsplat }, - ({ packedSplats, index }) => { - if (!packedSplats || !index) { - throw new Error("Invalid input"); - } - const gsplat = readPackedSplat(packedSplats, index); - return { gsplat }; + return (data, offset, item) => { + let currentOffset = offset; + for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) { + currentOffset = parsers[parserIndex](data, currentOffset, item); + } + return currentOffset; + }; +} +function getNumSh(properties) { + let num_f_rest = 0; + while (properties[`f_rest_${num_f_rest}`]) { + num_f_rest += 1; } -); -function averageOriginToWorlds(originToWorlds) { - if (originToWorlds.length === 0) { - return null; + const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest]; + if (numSh == null) { + throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`); } - const position = new THREE__namespace.Vector3(); - const quaternion = new THREE__namespace.Quaternion(); - const scale = new THREE__namespace.Vector3(); - const positions = []; - const quaternions = []; - for (const matrix of originToWorlds) { - matrix.decompose(position, quaternion, scale); - positions.push(position); - quaternions.push(quaternion); - } - return new THREE__namespace.Matrix4().compose( - averagePositions(positions), - averageQuaternions(quaternions), - new THREE__namespace.Vector3(1, 1, 1) - ); + return numSh; } function decodeAntiSplat(fileBytes, initNumSplats, splatCallback) { const numSplats = Math.floor(fileBytes.length / 32); @@ -20166,6 +19226,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -20242,10 +19303,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; @@ -20629,9 +19694,6 @@ exports.JointSplats = JointSplats; exports.LN_SCALE_MAX = LN_SCALE_MAX; exports.LN_SCALE_MIN = LN_SCALE_MIN; exports.NUM_JOINTS = NUM_JOINTS; -exports.OldSparkRenderer = OldSparkRenderer; -exports.OldSparkViewpoint = OldSparkViewpoint; -exports.OldSplatAccumulator = OldSplatAccumulator; exports.PackedSplats = PackedSplats; exports.PagedSplats = PagedSplats; exports.PlyReader = PlyReader; @@ -20691,6 +19753,5 @@ exports.textSplats = textSplats; exports.toHalf = toHalf; exports.transcodeSpz = transcodeSpz; exports.unpackSplat = unpackSplat; -exports.unpackSplats = unpackSplats; exports.utils = utils; //# sourceMappingURL=spark.cjs.js.map diff --git a/dist/spark.cjs.js.map b/dist/spark.cjs.js.map index 75e32034..13be0651 100644 --- a/dist/spark.cjs.js.map +++ b/dist/spark.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"spark.cjs.js","sources":["../src/OldSplatGeometry.ts","../node_modules/fflate/esm/browser.js","../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/utils.ts","../src/OldSplatWorker.ts","../src/SplatWorker.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/ExtSplats.ts","../rust/spark-rs/pkg/spark_rs.js","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/oldSplatFragment.glsl","../src/shaders/oldSplatVertex.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/RgbaArray.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/ply.ts","../src/SplatLoader.ts","../src/PackedSplats.ts","../src/OldSparkViewpoint.ts","../src/OldSplatAccumulator.ts","../src/OldSparkRenderer.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by the instance attribute \"ordering\".\n\nexport class OldSplatGeometry extends THREE.InstancedBufferGeometry {\n ordering: Uint32Array;\n attribute: THREE.InstancedBufferAttribute;\n\n constructor(ordering: Uint32Array, activeSplats: number) {\n super();\n\n this.ordering = ordering;\n\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n\n // Hack to work around Three.js\n // @ts-ignore\n this._maxInstanceCount = ordering.length;\n this.instanceCount = activeSplats;\n\n this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1);\n this.attribute.setUsage(THREE.DynamicDrawUsage);\n this.setAttribute(\"splatIndex\", this.attribute);\n }\n\n update(ordering: Uint32Array, activeSplats: number) {\n this.ordering = ordering;\n this.attribute.array = ordering;\n this.instanceCount = activeSplats;\n this.attribute.addUpdateRange(0, activeSplats);\n this.attribute.needsUpdate = true;\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import BundledWorker from \"./oldWorker?worker&inline\";\nimport { getTransferable } from \"./utils.js\";\n\n// SplatWorker is an internal class that manages a WebWorker for executing\n// longer running CPU tasks such as Gsplat file decoding and sorting.\n// Although a SplatWorker can be created and used directly, the utility\n// function withWorker() is recommended to allocate from a managed\n// pool of SplatWorkers.\n\nexport class OldSplatWorker {\n worker: Worker;\n messages: Record<\n number,\n { resolve: (value: unknown) => void; reject: (reason?: unknown) => void }\n > = {};\n messageIdNext = 0;\n\n constructor() {\n // this.worker = new Worker(new URL(\"./worker\", import.meta.url), { type: \"module\" });\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n makeMessageId(): number {\n return ++this.messageIdNext;\n }\n\n makeMessagePromiseId(): { id: number; promise: Promise } {\n const id = this.makeMessageId();\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject };\n });\n return { id, promise };\n }\n\n onMessage(event: MessageEvent) {\n // console.log(\"SplatWorker.onMessage:\", event);\n const { id, result, error } = event.data;\n // console.log(`SplatWorker.onMessage(${id}):`, result, error);\n const handler = this.messages[id];\n if (handler) {\n delete this.messages[id];\n if (error) {\n handler.reject(error);\n } else {\n handler.resolve(result);\n }\n }\n }\n\n // Invoke an RPC on the worker with the given name and arguments.\n // The normal usage of a worker is to run one activity at a time,\n // but this function allows for concurrent calls, tagging each request\n // with a unique message Id and awaiting a response to that same Id.\n // The method will automatically transfer any ArrayBuffers in the\n // arguments to the worker. If you'd like to transfer a copy of a\n // buffer then you must clone it before passing to this function.\n async call(name: string, args: unknown): Promise {\n const { id, promise } = this.makeMessagePromiseId();\n // console.log(`SplatWorker.call(${name}):`, args);\n this.worker.postMessage(\n { name, args, id },\n { transfer: getTransferable(args) },\n );\n return promise;\n }\n}\n\nlet maxWorkers = 4;\n\nlet numWorkers = 0;\nconst freeWorkers: OldSplatWorker[] = [];\nconst workerQueue: ((worker: OldSplatWorker) => void)[] = [];\n\n// Set the maximum number of workers to allocate for the pool. (default: 4)\nexport function setWorkerPool(count = 4) {\n maxWorkers = count;\n}\n\n// Allocate a worker from the pool. If none are available and we are below the\n// maximum, create a new one. Otherwise, add the request to a queue and wait\n// for it to be fulfilled.\nexport async function allocWorker(): Promise {\n const worker = freeWorkers.shift();\n if (worker) {\n return worker;\n }\n\n if (numWorkers < maxWorkers) {\n const worker = new OldSplatWorker();\n numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n workerQueue.push(resolve);\n });\n}\n\n// Return a worker to the pool. Pass the worker to any pending waiter.\nexport function freeWorker(worker: OldSplatWorker) {\n if (numWorkers > maxWorkers) {\n // Worker no longer needed\n numWorkers -= 1;\n return;\n }\n\n const waiter = workerQueue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n freeWorkers.push(worker);\n}\n\n// Allocate a worker from the pool and invoke the callback with the worker.\n// When the callback completes, the worker will be returned to the pool.\nexport async function withWorker(\n callback: (worker: OldSplatWorker) => Promise,\n): Promise {\n const worker = await allocWorker();\n try {\n return await callback(worker);\n } finally {\n freeWorker(worker);\n }\n}\n","import { getTransferable } from \"./utils\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n // Keeping below because we may need it in the future\n // for skinning deformations.\n // mat3 W = transpose(mat3(viewMatrix));\n // mat3 T = W * J;\n // mat3 cov2D = transpose(T) * cov3D * T;\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport oldSplatFragment from \"./shaders/oldSplatFragment.glsl\";\nimport oldSplatVertex from \"./shaders/oldSplatVertex.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n oldSplatVertex,\n oldSplatFragment,\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Whether to encode Gsplat with linear RGB (for environment mapping)\n * @default false\n */\n encodeLinear?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n encodeLinear: boolean;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.encodeLinear = options.encodeLinear ?? false;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n this.encodeLinear = options.encodeLinear ?? true;\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n if (spark.target) {\n spark.renderSize.set(spark.target.width, spark.target.height);\n } else {\n const renderSize = renderer.getDrawingBufferSize(spark.renderSize);\n if (renderer.xr.isPresenting) {\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n this.uniforms.encodeLinear.value = spark.encodeLinear;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n const props = renderer.properties.get(this.orderingTexture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"ordering texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n // data,\n result.ordering,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { pagedSplatTexCoord } from \"./dyno\";\nimport { decodeExtSplat, getTextureSize, unpackSplat } from \"./utils\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasmInitialized;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n const gl = renderer.getContext() as WebGL2RenderingContext;\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(\n gl.TEXTURE_2D,\n getGlTexture(renderer, indicesTexture),\n );\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\nexport class SplatPager {\n renderer: THREE.WebGLRenderer;\n\n extSplats: boolean;\n maxPages: number;\n maxSplats: number;\n pageSplats: number;\n\n maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n readyUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n sh1Texture: dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture: dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture: dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB: dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = 65536;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / this.pageSplats);\n this.maxSplats = this.maxPages * this.pageSplats;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n ),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n )\n : SplatPager.emptyExtTexture,\n });\n this.sh1Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh1Texture\n : SplatPager.emptySh1Texture,\n });\n this.sh2Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh2Texture\n : SplatPager.emptySh2Texture,\n });\n this.sh3Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh3Texture\n : SplatPager.emptySh3Texture,\n });\n this.sh3TextureB = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyExtSh3BTexture,\n });\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3Texture: this.sh3Texture,\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3TextureA: this.sh3Texture,\n sh3TextureB: this.sh3TextureB,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n } else {\n if (this.sh1Texture.value !== SplatPager.emptyExtSh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptyExtSh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n if (this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value.dispose();\n this.sh3TextureB.value.source.data = null;\n }\n }\n }\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n if (!this.extSplats) {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptySh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 2),\n 256,\n 256,\n this.maxPages,\n THREE.RGIntegerFormat,\n THREE.UnsignedIntType,\n \"RG32UI\",\n );\n }\n } else {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptyExtSh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n if (\n this.curSh >= 2 &&\n this.sh2Texture.value ===\n (!this.extSplats\n ? SplatPager.emptySh2Texture\n : SplatPager.emptyExtSh2Texture)\n ) {\n this.sh2Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (!this.extSplats) {\n if (\n this.curSh >= 3 &&\n this.sh3Texture.value === SplatPager.emptySh3Texture\n ) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n } else {\n if (this.curSh >= 3) {\n if (this.sh3Texture.value === SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (this.sh3TextureB.value === SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n private freePage(page: number) {\n this.pageFreelist.push(page);\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n extra: Record,\n extArray?: Uint32Array,\n ) {\n const pageBase = page * this.pageSplats;\n\n // const gl = this.renderer.getContext() as WebGL2RenderingContext;\n\n // this.renderer.state.activeTexture(gl.TEXTURE0);\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.packedTexture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // packedArray,\n // );\n\n const array = this.packedTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + packedArray.length)\n .set(packedArray);\n this.packedTexture.value.addLayerUpdate(page);\n this.packedTexture.value.needsUpdate = true;\n\n if (extArray) {\n const array = this.extTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + extArray.length)\n .set(extArray);\n this.extTexture.value.addLayerUpdate(page);\n this.extTexture.value.needsUpdate = true;\n }\n\n const numSh = this.extSplats\n ? extra.sh3a && extra.sh3b\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0\n : extra.sh3\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0;\n this.ensureShTextures(numSh);\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture && extra.sh1) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh1Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RG_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh1 as Uint32Array,\n // );\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh1Texture.value !== SplatPager.emptyExtSh1Texture &&\n extra.sh1\n ) {\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n }\n\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture && extra.sh2) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh2Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh2 as Uint32Array,\n // );\n const sh2 = extra.sh2 as Uint32Array;\n const array = this.sh2Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2);\n this.sh2Texture.value.addLayerUpdate(page);\n this.sh2Texture.value.needsUpdate = true;\n }\n\n if (!this.extSplats) {\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture && extra.sh3) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh3Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh3 as Uint32Array,\n // );\n const sh3 = extra.sh3 as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh3Texture.value !== SplatPager.emptyExtSh3Texture &&\n extra.sh3a\n ) {\n const sh3a = extra.sh3a as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n if (\n this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture &&\n extra.sh3b\n ) {\n const sh3b = extra.sh3b as Uint32Array;\n const array = this.sh3TextureB.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b);\n this.sh3TextureB.value.addLayerUpdate(page);\n this.sh3TextureB.value.needsUpdate = true;\n }\n }\n\n // this.renderer.state.bindTexture(gl.TEXTURE_2D_ARRAY, null);\n }\n\n private getGlTexture(texture: THREE.Texture): WebGLTexture {\n return getGlTexture(this.renderer, texture);\n }\n\n private newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: this.pageSplats,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (!this.extSplats) {\n const packedArray = (data as PackedResult).packedArray;\n this.newUploads.push({ page, numSplats, packedArray, extra });\n } else {\n const extArrays = (data as ExtResult).extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n this.newUploads.push({ page, numSplats, packedArray, extArray, extra });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, extra } = upload;\n this.uploadPage(page, packedArray, extra, extArray);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptySh1Texture = this.emptyUint32x2;\n static emptySh2Texture = this.emptyUint32x4;\n static emptySh3Texture = this.emptyUint32x4;\n static emptyExtSh1Texture = this.emptyUint32x4;\n static emptyExtSh2Texture = this.emptyUint32x4;\n static emptyExtSh3Texture = this.emptyUint32x4;\n static emptyExtSh3BTexture = this.emptyUint32x4;\n}\n\nfunction getGlTexture(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n): WebGLTexture {\n if (!renderer.properties.has(texture)) {\n throw new Error(\"texture not found\");\n }\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n return glTexture;\n}\n\nconst wasmInitialized = init_wasm();\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SparkRenderer } from \"./SparkRenderer\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n\n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static staticInitialized = SplatMesh.staticInitialize();\n static isStaticInitialized = false;\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n static async staticInitialize() {\n await init_wasm();\n SplatMesh.isStaticInitialized = true;\n }\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !SplatMesh.isStaticInitialized ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n\nconst EMPTY_GEOMETRY = new THREE.BufferGeometry();\nconst EMPTY_MATERIAL = new THREE.ShaderMaterial();\n\n// Creates an empty mesh to hook into Three.js rendering.\n// This is used to detect if a SparkRenderer is present in the scene.\n// If not, one will be injected automatically.\nfunction createRendererDetectionMesh(): THREE.Mesh {\n const mesh = new THREE.Mesh(EMPTY_GEOMETRY, EMPTY_MATERIAL);\n mesh.frustumCulled = false;\n mesh.onBeforeRender = function (renderer, scene) {\n if (!scene.isScene) {\n // The SplatMesh is part of render call that doesn't have a Scene at its root\n // Don't auto-inject a renderer.\n this.removeFromParent();\n return;\n }\n\n // Check if the scene has a SparkRenderer instance\n let hasSparkRenderer = false;\n scene.traverse((c) => {\n if (c instanceof SparkRenderer || c instanceof OldSparkRenderer) {\n hasSparkRenderer = true;\n }\n });\n\n if (!hasSparkRenderer) {\n // No spark renderer present in the scene, inject one.\n scene.add(new SparkRenderer({ renderer }));\n }\n\n // Remove mesh to stop checking\n this.removeFromParent();\n };\n return mesh;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import * as THREE from \"three\";\n\nimport type { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport type { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { DynoPackedSplats } from \"./PackedSplats\";\nimport { Readback } from \"./Readback\";\nimport {\n type DynoBlock,\n DynoBool,\n DynoFloat,\n type DynoVal,\n DynoVec3,\n Gsplat,\n add,\n combine,\n defineGsplat,\n dyno,\n dynoBlock,\n dynoConst,\n floatBitsToUint,\n mul,\n packHalf2x16,\n readPackedSplat,\n uintToRgba8,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { FreeList, withinCoorientDist } from \"./utils\";\n\nexport type OldSparkViewpointOptions = {\n /**\n * Controls whether to auto-update its sort order whenever the SparkRenderer\n * updates the Gsplats. If you expect to render/display from this viewpoint\n * most frames, set this to true.\n * @default false\n */\n autoUpdate?: boolean;\n /**\n * Set a THREE.Camera for this viewpoint to follow.\n * @default undefined\n */\n camera?: THREE.Camera;\n /**\n * Set an explicit view-to-world transformation matrix for this viewpoint (equivalent\n * to camera.matrixWorld), overrides any camera setting.\n * @default undefined\n */\n viewToWorld?: THREE.Matrix4;\n /**\n * Configure viewpoint with an off-screen render target.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n };\n /**\n * Callback function that is called when the render target texture is updated.\n * Receives the texture as a parameter. Use this to update a viewport with\n * the latest viewpoint render each frame.\n * @default undefined\n */\n onTextureUpdated?: (texture: THREE.Texture) => void;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth sort metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Distance threshold for re-sorting splats. If the viewpoint moves more than\n * this distance, splats will be re-sorted.\n * @default 0.01 units\n */\n sortDistance?: number;\n /**\n * View direction dot product threshold for re-sorting splats. For\n * sortRadial: true we use 0.99 while sortRadial: false uses 0.999 because it is\n * more sensitive to view direction.\n * @default 0.99 if sortRadial else 0.999\n */\n sortCoorient?: boolean;\n /**\n * Constant added to Z-depth to bias values into the positive range for\n * sortRadial: false, but also used for culling Gsplats \"well behind\"\n * the viewpoint origin\n * @default 1.0\n */\n depthBias?: number;\n /**\n * Set this to true if rendering a 360 to disable \"behind the viewpoint\"\n * culling during sorting. This is set automatically when rendering 360 envMaps\n * using the SparkRenderer.renderEnvMap() utility function.\n * @default false\n */\n sort360?: boolean;\n /*\n * Set this to true to sort with float32 precision with two-pass sort.\n * @default true\n */\n sort32?: boolean;\n /*\n * Set this to true to enable sort-free stochastic splat rendering.\n * @default false\n */\n stochastic?: boolean;\n};\n\n// A SparkViewpoint is created from and tied to a SparkRenderer, and represents\n// an independent viewpoint of all the scene Gsplats and their sort order. Making\n// these viewpoints explicit allows us to have multiple, simultaneous viewpoint\n// renders, for example for camera preview panes or overhead map views.\n//\n// When creating a SparkRenderer it automatically creates a default viewpoint\n// .defaultView that is used in the normal render loop when drawing to the canvas,\n// and is automatically updated whenever the camera moves. Additional viewpoints\n// can be created and configured separately.\n\nexport class OldSparkViewpoint {\n spark: OldSparkRenderer;\n autoUpdate: boolean;\n camera?: THREE.Camera;\n viewToWorld: THREE.Matrix4;\n lastTime: number | null = null;\n\n target?: THREE.WebGLRenderTarget;\n private back?: THREE.WebGLRenderTarget;\n onTextureUpdated?: (texture: THREE.Texture) => void;\n encodeLinear = false;\n superXY = 1;\n private superPixels?: Uint8Array;\n private pixels?: Uint8Array;\n\n sortRadial: boolean;\n sortDistance?: number;\n sortCoorient?: boolean;\n depthBias?: number;\n sort360?: boolean;\n sort32?: boolean;\n stochastic: boolean;\n\n display: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n geometry: OldSplatGeometry;\n } | null = null;\n\n private sorting: { viewToWorld: THREE.Matrix4 } | null = null;\n private pending: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed: boolean;\n } | null = null;\n private sortingCheck = false;\n\n private readback16: Uint16Array = new Uint16Array(0);\n private readback32: Uint32Array = new Uint32Array(0);\n private orderingFreelist: FreeList;\n\n constructor(options: OldSparkViewpointOptions & { spark: OldSparkRenderer }) {\n this.spark = options.spark;\n this.camera = options.camera;\n this.viewToWorld = options.viewToWorld ?? new THREE.Matrix4();\n\n if (options.target) {\n const { width, height, doubleBuffer } = options.target;\n const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1));\n this.superXY = superXY;\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n\n this.target = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n if (doubleBuffer) {\n this.back = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n }\n this.encodeLinear = true;\n }\n this.onTextureUpdated = options.onTextureUpdated;\n\n this.sortRadial = options.sortRadial ?? true;\n this.sortDistance = options.sortDistance;\n this.sortCoorient = options.sortCoorient;\n this.depthBias = options.depthBias;\n this.sort360 = options.sort360;\n this.sort32 = options.sort32;\n this.stochastic = options.stochastic ?? false;\n\n this.orderingFreelist = new FreeList({\n allocate: (maxSplats) =>\n new Uint32Array(maxSplats) as Uint32Array,\n valid: (ordering, maxSplats) => ordering.length === maxSplats,\n });\n\n this.autoUpdate = false;\n this.setAutoUpdate(options.autoUpdate ?? false);\n }\n\n // Call this when you are done with the SparkViewpoint and want to\n // free up its resources (GPU targets, pixel buffers, etc.)\n dispose() {\n this.setAutoUpdate(false);\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.back) {\n this.back.dispose();\n this.back = undefined;\n }\n if (this.display) {\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.geometry.dispose();\n this.display = null;\n }\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n this.pending = null;\n }\n }\n\n // Use this function to change whether this viewpoint will auto-update\n // its sort order whenever the attached SparkRenderer updates the Gsplats.\n // Turn this on or off depending on whether you expect to do renders from\n // this viewpoint most frames.\n setAutoUpdate(autoUpdate: boolean) {\n if (!this.autoUpdate && autoUpdate) {\n this.spark.autoViewpoints.push(this);\n } else if (this.autoUpdate && !autoUpdate) {\n this.spark.autoViewpoints = this.spark.autoViewpoints.filter(\n (v) => v !== this,\n );\n }\n this.autoUpdate = autoUpdate;\n }\n\n // See below async prepareRenderPixels() for explanation of parameters.\n // Awaiting this method updates the Gsplats in the scene and performs a sort of the\n // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget()\n // call in the same tick.\n async prepare({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n if (viewToWorld) {\n this.viewToWorld = viewToWorld;\n } else {\n this.camera = camera ?? this.camera;\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n }\n while (update ?? true) {\n // Force an update, possibly with origin centered at this camera\n // to yield the best quality output.\n const originToWorld = forceOrigin\n ? this.viewToWorld\n : this.spark.matrixWorld;\n const updated = this.spark.updateInternal({ scene, originToWorld });\n if (updated) {\n break;\n }\n // A bit of a hack, but try again. We shouldn't be starved for long.\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n\n const accumulator = this.spark.active;\n // Hold reference to accumulator while sorting\n accumulator.refCount += 1;\n await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld });\n // Release accumulator reference\n this.spark.releaseAccumulator(accumulator);\n }\n\n // Render out the viewpoint to the view target RGBA buffer.\n // Swaps buffers if doubleBuffer: true was set.\n // Calls onTextureUpdated(texture) with the resulting texture.\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera?: THREE.Camera }) {\n const target = this.back ?? this.target;\n if (!target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n\n camera = camera ?? this.camera;\n if (!camera) {\n throw new Error(\"Must provide camera\");\n }\n if (camera instanceof THREE.PerspectiveCamera) {\n const newCam = new THREE.PerspectiveCamera().copy(camera, false);\n newCam.aspect = target.width / target.height;\n newCam.updateProjectionMatrix();\n camera = newCam;\n }\n this.viewToWorld = camera.matrixWorld.clone();\n\n const previousTarget = this.spark.renderer.getRenderTarget();\n try {\n this.spark.renderer.setRenderTarget(target);\n this.spark.prepareViewpoint(this);\n\n this.spark.renderer.render(scene, camera);\n } finally {\n this.spark.prepareViewpoint(this.spark.defaultView);\n this.spark.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.back] = [this.back, this.target];\n }\n this.onTextureUpdated?.(target.texture);\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). If superXY was set greater than 1 then\n // downsampling is performed in the target pixel array with simple averaging\n // to derive the returned pixel values. Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n }\n await this.spark.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n this.superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return this.superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.pixels || this.pixels.length < subSize) {\n this.pixels = new Uint8Array(subSize);\n }\n\n const { superPixels, pixels } = this;\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * this.target.width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n pixels[pixelIndex] = r / super2;\n pixels[pixelIndex + 1] = g / super2;\n pixels[pixelIndex + 2] = b / super2;\n pixels[pixelIndex + 3] = a / super2;\n }\n }\n return pixels;\n }\n\n // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene\n // and any camera/viewToWorld viewpoint overrides. By default update is true,\n // which triggers its SparkRenderer to check and potentially update the Gsplats.\n // Setting update to false disables this and sorts the Gsplats as they are.\n // Setting forceOrigin (default: false) to true forces the view update to\n // recalculate the splats with this view origin, potentially altering any\n // view-dependent effects. If you expect view-dependent effects to play a role\n // in the rendering quality, enable this.\n //\n // Underneath, prepareRenderPixels() simply calls await this.prepare(...),\n // this.renderTarget(...), and finally returns the result this.readTarget(),\n // a Promise to a Uint8Array with RGBA values for all the pixels (potentially\n // downsampled if the superXY parameter was used). These steps can also be called\n // manually, for example if you need to alter the scene before and after\n // this.renderTarget(...) to hide UI elements from being rendered.\n async prepareRenderPixels({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n await this.prepare({ scene, camera, viewToWorld, update, forceOrigin });\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // This is called automatically by SparkRenderer, there is no need to call it!\n // The method cannot be private because then SparkRenderer would\n // not be able to call it.\n autoPoll({ accumulator }: { accumulator?: OldSplatAccumulator }) {\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n\n let needsSort = false;\n let displayed = false;\n\n if (!this.display) {\n // Need to do first sort\n needsSort = true;\n } else if (accumulator) {\n needsSort = true;\n const { mappingVersion } = this.display.accumulator;\n if (accumulator.mappingVersion === mappingVersion) {\n // Splat mapping has not changed, so reuse the existing sorted\n // geometry to show updates faster. We will still fire off\n // a re-sort if necessary. First release old accumulator.\n accumulator.refCount += 1;\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n this.display.viewToWorld.copy(this.viewToWorld);\n displayed = true;\n\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n }\n\n const latestView = this.sorting?.viewToWorld ?? this.display?.viewToWorld;\n if (\n latestView &&\n !withinCoorientDist({\n matrix1: this.viewToWorld,\n matrix2: latestView,\n // By default update sort each 1 cm\n maxDistance: this.sortDistance ?? 0.01,\n // By default for radial sort, update for intermittent movement so that\n // we bring back splats culled by being behind the camera.\n // For depth sort, small rotations can change sort order a lot, so\n // update sort for even small rotations.\n minCoorient: (this.sortCoorient ?? this.sortRadial) ? 0.99 : 0.999,\n })\n ) {\n needsSort = true;\n }\n\n if (!needsSort) {\n // Stop here, no sort necessary\n return;\n }\n\n if (accumulator) {\n // Hold a reference to the accumulator for sorting\n accumulator.refCount += 1;\n }\n\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n }\n this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed };\n\n // Don't await this, just trigger the sort if necessary\n this.driveSort();\n }\n\n private async driveSort() {\n while (true) {\n if (this.sorting || !this.pending) {\n return; // Sort already in process or nothing to sort\n }\n\n const { viewToWorld, displayed } = this.pending;\n let accumulator = this.pending.accumulator;\n if (!accumulator) {\n // Hold a reference to the accumulator while sorting\n accumulator = this.display?.accumulator ?? this.spark.active;\n accumulator.refCount += 1;\n }\n this.pending = null;\n if (!accumulator) {\n throw new Error(\"No accumulator to sort\");\n }\n\n this.sorting = { viewToWorld };\n await this.sortUpdate({ accumulator, viewToWorld, displayed });\n this.sorting = null;\n\n // Release the reference to the accumulator\n this.spark.releaseAccumulator(accumulator);\n\n // Continue in loop with any queued sort\n }\n }\n\n private async sortUpdate({\n accumulator,\n viewToWorld,\n displayed = false,\n }: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed?: boolean;\n }) {\n if (this.sortingCheck) {\n throw new Error(\"Only one sort at a time\");\n }\n this.sortingCheck = true;\n\n accumulator = accumulator ?? this.spark.active;\n const { numSplats, maxSplats } = accumulator.splats;\n let activeSplats = 0;\n let ordering = this.orderingFreelist.alloc(maxSplats);\n\n if (this.stochastic) {\n activeSplats = numSplats;\n // Render all splats in order since the Z-buffer\n // will handle ordering.\n for (let i = 0; i < numSplats; ++i) {\n ordering[i] = i;\n }\n } else if (numSplats > 0) {\n const {\n reader,\n doubleSortReader,\n sort32Reader,\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n } = OldSparkViewpoint.makeSorter();\n const sort32 = this.sort32 ?? false;\n let readback: Uint16Array | Uint32Array;\n if (sort32) {\n this.readback32 = reader.ensureBuffer(maxSplats, this.readback32);\n readback = this.readback32;\n } else {\n const halfMaxSplats = Math.ceil(maxSplats / 2);\n this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16);\n readback = this.readback16;\n }\n\n const worldToOrigin = accumulator.toWorld.clone().invert();\n const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin);\n\n dynoSortRadial.value = this.sort360 ? true : this.sortRadial;\n dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin);\n dynoDirection.value\n .set(0, 0, -1)\n .applyMatrix4(viewToOrigin)\n .sub(dynoOrigin.value)\n .normalize();\n dynoDepthBias.value = this.depthBias ?? 1.0;\n dynoSort360.value = this.sort360 ?? false;\n dynoSplats.packedSplats = accumulator.splats;\n\n const sortReader = sort32 ? sort32Reader : doubleSortReader;\n const count = sort32 ? numSplats : Math.ceil(numSplats / 2);\n await reader.renderReadback({\n renderer: this.spark.renderer,\n reader: sortReader,\n count,\n readback,\n });\n\n const result = (await withWorker(async (worker) => {\n const rpcName = sort32 ? \"sort32Splats\" : \"sortDoubleSplats\";\n return worker.call(rpcName, {\n maxSplats,\n numSplats,\n readback,\n ordering,\n });\n })) as {\n readback: Uint16Array | Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n if (sort32) {\n this.readback32 = result.readback as Uint32Array;\n } else {\n this.readback16 = result.readback as Uint16Array;\n }\n ordering = result.ordering;\n activeSplats = result.activeSplats;\n }\n\n this.updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed,\n });\n this.sortingCheck = false;\n }\n\n private updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed = false,\n }: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n ordering: Uint32Array;\n activeSplats: number;\n displayed?: boolean;\n }) {\n if (!this.display) {\n // Hold a reference to the accumulator while part of display\n accumulator.refCount += 1;\n this.display = {\n accumulator,\n viewToWorld,\n geometry: new OldSplatGeometry(ordering, activeSplats),\n };\n } else {\n if (!displayed && accumulator !== this.display.accumulator) {\n // Hold a reference to the new accumulator being displayed\n accumulator.refCount += 1;\n // Release the reference to the previously displayed accumulator\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n }\n\n this.display.viewToWorld = viewToWorld;\n\n const oldOrdering = this.display.geometry.ordering;\n if (oldOrdering.length === ordering.length) {\n this.display.geometry.update(ordering, activeSplats);\n } else {\n this.display.geometry.dispose();\n // console.log(\"*** alloc SplatGeometry\", ordering.length);\n this.display.geometry = new OldSplatGeometry(ordering, activeSplats);\n }\n this.orderingFreelist.free(oldOrdering);\n }\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n\n // If you need an empty THREE.Texture to use to initialize a uniform that is\n // updated via onTextureUpdated(texture), this static texture can be handy.\n static EMPTY_TEXTURE = new THREE.Texture();\n\n private static dynos: {\n dynoSortRadial: DynoBool;\n dynoOrigin: DynoVec3;\n dynoDirection: DynoVec3;\n dynoDepthBias: DynoFloat;\n dynoSort360: DynoBool;\n dynoSplats: DynoPackedSplats;\n reader: Readback;\n doubleSortReader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n sort32Reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n private static makeSorter() {\n if (!OldSparkViewpoint.dynos) {\n const dynoSortRadial = new DynoBool({ value: true });\n const dynoOrigin = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDirection = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDepthBias = new DynoFloat({ value: 1.0 });\n const dynoSort360 = new DynoBool({ value: false });\n const dynoSplats = new DynoPackedSplats();\n\n const reader = new Readback();\n const doubleSortReader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n const index2 = mul(index, dynoConst(\"int\", 2));\n\n const gsplat0 = readPackedSplat(dynoSplats, index2);\n const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams });\n\n const gsplat1 = readPackedSplat(\n dynoSplats,\n add(index2, dynoConst(\"int\", 1)),\n );\n const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams });\n\n const combined = combine({\n vectorType: \"vec2\",\n x: metric0,\n y: metric1,\n });\n const rgba8 = uintToRgba8(packHalf2x16(combined));\n return { rgba8 };\n },\n );\n\n const sort32Reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n\n const gsplat = readPackedSplat(dynoSplats, index);\n const metric = computeSortMetric({ gsplat, ...sortParams });\n const rgba8 = uintToRgba8(floatBitsToUint(metric));\n return { rgba8 };\n },\n );\n\n OldSparkViewpoint.dynos = {\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n reader,\n doubleSortReader,\n sort32Reader,\n };\n }\n return OldSparkViewpoint.dynos;\n }\n}\n\nconst defineComputeSortMetric = unindent(`\n float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {\n if (!isGsplatActive(gsplat.flags)) {\n return INFINITY;\n }\n\n vec3 center = gsplat.center - sortOrigin;\n float biasedDepth = dot(center, sortDirection) + sortDepthBias;\n if (!sort360 && (biasedDepth <= 0.0)) {\n return INFINITY;\n }\n\n return sortRadial ? length(center) : biasedDepth;\n }\n`);\n\nfunction computeSortMetric({\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n}: {\n gsplat: DynoVal;\n sortRadial: DynoVal<\"bool\">;\n sortOrigin: DynoVal<\"vec3\">;\n sortDirection: DynoVal<\"vec3\">;\n sortDepthBias: DynoVal<\"float\">;\n sort360: DynoVal<\"bool\">;\n}) {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n sortRadial: \"bool\",\n sortOrigin: \"vec3\",\n sortDirection: \"vec3\",\n sortDepthBias: \"float\",\n sort360: \"bool\",\n },\n outTypes: { metric: \"float\" },\n globals: () => [defineGsplat, defineComputeSortMetric],\n inputs: {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n },\n statements: ({ inputs, outputs }) => {\n const {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n } = inputs;\n return unindentLines(`\n ${outputs.metric} = computeSort(${gsplat}, ${sortRadial}, ${sortOrigin}, ${sortDirection}, ${sortDepthBias}, ${sort360});\n `);\n },\n }).outputs.metric;\n}\n","import * as THREE from \"three\";\n\nimport { PackedSplats } from \"./PackedSplats\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport type { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\n\n// SplatAccumulator helps manage the generation of splats from multiple\n// SplatGenerators, keeping track of the splat mapping, coordinate system,\n// and reference count.\n\nexport class OldSplatAccumulator {\n splats = new PackedSplats();\n // The transform from Accumulator coordinate system to world coordinates.\n toWorld = new THREE.Matrix4();\n // An array of all Gsplat mappings that were used for generation\n mapping: GeneratorMapping[] = [];\n // Number of SparkViewpoints (or other) that reference this accumulator, used\n // to figure out when it can be recycled for use\n refCount = 0;\n\n // Incremented every time the splats are updated/generated.\n splatsVersion = -1;\n // Incremented every time the splat mapping/layout is updated.\n // Splat sort order can be reused between equivalent mapping versions.\n mappingVersion = -1;\n\n ensureGenerate(maxSplats: number) {\n if (this.splats.ensureGenerate(maxSplats)) {\n // If we had to resize our PackedSplats then clear all previous mappings\n this.mapping = [];\n }\n }\n\n // Generate all Gsplats from an array of generators\n generateSplats({\n renderer,\n modifier,\n generators,\n forceUpdate,\n originToWorld,\n }: {\n renderer: THREE.WebGLRenderer;\n modifier: SplatModifier;\n generators: GeneratorMapping[];\n forceUpdate?: boolean;\n originToWorld: THREE.Matrix4;\n }) {\n // Create a lookup from last SplatGenerator\n const mapping = this.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Run generators that are different from existing mapping\n let updated = 0;\n let numSplats = 0;\n for (const { node, generator, version, base, count } of generators) {\n const current = mapping.get(node);\n if (\n forceUpdate ||\n generator !== current?.generator ||\n version !== current?.version ||\n base !== current?.base ||\n count !== current?.count\n ) {\n // Something is different from before so we should generate these Gsplats\n if (generator && count > 0) {\n const modGenerator = modifier.apply(generator);\n try {\n this.splats.generate({\n generator: modGenerator,\n base,\n count,\n renderer,\n });\n } catch (error) {\n node.generator = undefined;\n node.generatorError = error;\n }\n updated += 1;\n }\n }\n numSplats = Math.max(numSplats, base + count);\n }\n\n this.splats.numSplats = numSplats;\n this.toWorld.copy(originToWorld);\n this.mapping = generators;\n return updated !== 0;\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n hasCorrespondence(other: OldSplatAccumulator) {\n if (this.mapping.length !== other.mapping.length) {\n return false;\n }\n return this.mapping.every(({ node, base, count }, i) => {\n const {\n node: otherNode,\n base: otherBase,\n count: otherCount,\n } = other.mapping[i];\n return node === otherNode && base === otherBase && count === otherCount;\n });\n }\n}\n","import * as THREE from \"three\";\n\nimport {\n OldSparkViewpoint,\n type OldSparkViewpointOptions,\n} from \"./OldSparkViewpoint\";\nimport { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { RgbaArray } from \"./RgbaArray\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n} from \"./defines\";\nimport {\n DynoVec3,\n DynoVec4,\n Gsplat,\n TPackedSplats,\n dynoBlock,\n readPackedSplat,\n transformGsplat,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport {\n averagePositions,\n averageQuaternions,\n cloneClock,\n withinCoorientDist,\n} from \"./utils\";\n\n// SparkRenderer aggregates splats from multiple generators into a single\n// accumulated collection per frame. In normal operation we only need a\n// maximum of 3 accumulators: One currently being viewed, one currently\n// being sorted, and one more for generating the next frame. Accumulators\n// must be \"released\" by each viewpoint using it, so in unusual cases\n// such as slow render-outs, we may want to allow more than 3 so the\n// pipeline can continue generating new frames, but we limit to a maximum\n// of 5 to avoid excessive memory usage.\nconst MAX_ACCUMULATORS = 5;\n\nexport type OldSparkRendererOptions = {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the SparkRenderer properties time and\n * deltaTime directly. (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection after\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this must be false in order to complete rendering as soon as possible.\n * @default false\n */\n preUpdate?: boolean;\n /**\n * Distance threshold for SparkRenderer movement triggering a Gsplat update at\n * the new origin.\n * @default 1.0\n */\n originDistance?: number;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(5)..Math.sqrt(8) produce good results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Configures the SparkViewpointOptions for the default SparkViewpoint\n * associated with this SparkRenderer. Notable option: sortRadial (sort by\n * radial distance or Z-depth)\n */\n view?: OldSparkViewpointOptions;\n /**\n * Override the default splat encoding ranges for the PackedSplats.\n * (default: undefined)\n */\n splatEncoding?: SplatEncoding;\n};\n\nexport class OldSparkRenderer extends THREE.Mesh {\n renderer: THREE.WebGLRenderer;\n premultipliedAlpha: boolean;\n material: THREE.ShaderMaterial;\n uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n needsUpdate: boolean;\n originDistance: number;\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n minAlpha: number;\n enable2DGS: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n splatEncoding: SplatEncoding;\n\n splatTexture: null | {\n enable?: boolean;\n texture?: THREE.Data3DTexture;\n multiply?: THREE.Matrix2;\n add?: THREE.Vector2;\n near?: number;\n far?: number;\n mid?: number;\n } = null;\n\n time?: number;\n deltaTime?: number;\n clock: THREE.Clock;\n\n // Latest Gsplat collection being displayed\n active: OldSplatAccumulator;\n // Free list of accumulators for reuse\n private freeAccumulators: OldSplatAccumulator[];\n // Total number of accumulators currently allocated\n private accumulatorCount: number;\n // Default SparkViewpoint used for rendering to the canvas\n defaultView: OldSparkViewpoint;\n // List of SparkViewpoints with autoUpdate enabled\n autoViewpoints: OldSparkViewpoint[] = [];\n\n // Dynos used to transform Gsplats to the accumulator coordinate system\n private rotateToAccumulator = new DynoVec4({ value: new THREE.Quaternion() });\n private translateToAccumulator = new DynoVec3({ value: new THREE.Vector3() });\n private modifier: SplatModifier;\n\n // Last rendered frame number so we know when we're rendering a new frame\n private lastFrame = -1;\n // Last update timestamp to compute deltaTime\n private lastUpdateTime: number | null = null;\n // List of cameras used for the current viewpoint (for WebXR)\n private defaultCameras: THREE.Matrix4[] = [];\n private lastStochastic: boolean | null = null;\n\n // Should be set to the defaultView, but can be temporarily changed to another\n // viewpoint using prepareViewpoint() for rendering from a different viewpoint.\n viewpoint: OldSparkViewpoint;\n\n // Holds data needed to perform a scheduled Gsplat update.\n private pendingUpdate = {\n scene: null as THREE.Scene | null,\n originToWorld: new THREE.Matrix4(),\n timeoutId: -1,\n };\n\n // Internal SparkViewpoint used for environment map rendering.\n private envViewpoint: OldSparkViewpoint | null = null;\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n camera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n static EMPTY_SPLAT_TEXTURE = new THREE.Data3DTexture();\n\n constructor(options: OldSparkRendererOptions) {\n const uniforms = OldSparkRenderer.makeUniforms();\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: shaders.oldSplatVertex,\n fragmentShader: shaders.oldSplatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: true,\n depthTest: true,\n depthWrite: false,\n side: THREE.DoubleSide,\n });\n\n super(EMPTY_GEOMETRY, material);\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n this.renderer = options.renderer;\n this.material = material;\n this.uniforms = uniforms;\n\n // Create a Gsplat modifier that takes the output of any SplatGenerator\n // and transforms them into the accumulator's coordinate system\n const modifier = dynoBlock(\n { gsplat: Gsplat },\n { gsplat: Gsplat },\n ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"gsplat not defined\");\n }\n gsplat = transformGsplat(gsplat, {\n rotate: this.rotateToAccumulator,\n translate: this.translateToAccumulator,\n });\n return { gsplat };\n },\n );\n this.modifier = new SplatModifier(modifier);\n\n this.premultipliedAlpha = premultipliedAlpha;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? false;\n this.needsUpdate = false;\n this.originDistance = options.originDistance ?? 1;\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING };\n\n this.active = new OldSplatAccumulator();\n this.active.refCount = 1;\n this.accumulatorCount = 1;\n this.freeAccumulators = [];\n // Start with the minimum of 2 total accumulators\n for (let count = 0; count < 1; ++count) {\n this.freeAccumulators.push(new OldSplatAccumulator());\n this.accumulatorCount += 1;\n }\n\n // Create a default SparkViewpoint that is used when we call render()\n // on the scene and has the sorted Gsplat collection from that viewpoint.\n this.defaultView = new OldSparkViewpoint({\n ...options.view,\n autoUpdate: true,\n spark: this,\n });\n this.viewpoint = this.defaultView;\n this.prepareViewpoint(this.viewpoint);\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n }\n\n static makeUniforms() {\n // Create uniforms used for Gsplat vertex and fragment shaders\n const uniforms = {\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // Total number of Gsplats in packedSplats to render\n numSplats: { value: 0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable stochastic splat rendering\n stochastic: { value: false },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Enable splat texture rendering\n splatTexEnable: { value: false },\n // Splat texture to render\n splatTexture: { type: \"t\", value: OldSparkRenderer.EMPTY_SPLAT_TEXTURE },\n // Splat texture UV transform (multiply)\n splatTexMul: { value: new THREE.Matrix2() },\n // Splat texture UV transform (add)\n splatTexAdd: { value: new THREE.Vector2() },\n // Splat texture near plane distance\n splatTexNear: { value: 0.1 },\n // Splat texture far plane distance\n splatTexFar: { value: 1000.0 },\n // Splat texture mid plane distance, or 0.0 to disable\n splatTexMid: { value: 0.0 },\n // Gsplat collection to render\n packedSplats: { type: \"t\", value: PackedSplats.getEmptyArray },\n // Splat encoding ranges\n rgbMinMaxLnScaleMinMax: { value: new THREE.Vector4() },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n private canAllocAccumulator(): boolean {\n // Returns true if can allocate an accumulator immediately\n return (\n this.freeAccumulators.length > 0 ||\n this.accumulatorCount < MAX_ACCUMULATORS\n );\n }\n\n private maybeAllocAccumulator(): OldSplatAccumulator | null {\n // Allocate an accumulator immediately if possible, else return null\n let accumulator = this.freeAccumulators.pop();\n if (accumulator === undefined) {\n if (this.accumulatorCount >= MAX_ACCUMULATORS) {\n return null;\n }\n accumulator = new OldSplatAccumulator();\n this.accumulatorCount += 1;\n }\n accumulator.refCount = 1;\n return accumulator;\n }\n\n releaseAccumulator(accumulator: OldSplatAccumulator) {\n // Decrement reference count and recycle if no longer in use\n accumulator.refCount -= 1;\n if (accumulator.refCount === 0) {\n this.freeAccumulators.push(accumulator);\n }\n }\n\n newViewpoint(options: OldSparkViewpointOptions) {\n // Create a new SparkViewpoint for this SparkRenderer.\n // Note that every SparkRenderer has an initial spark.defaultView: SparkViewpoint\n // from construction, which is used for the default canvas render loop.\n // Calling this method allows you to create additional viewpoints, which can be\n // updated automatically each frame (performing Gsplat sorting every time there\n // is an update), or updated on-demand for controlled rendering for video render\n // or similar applications.\n return new OldSparkViewpoint({ ...options, spark: this });\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n // throw new Error(\"onBeforeRender disabled in SparkRenderer\");\n\n // Called by Three.js before rendering this SparkRenderer.\n // At this point we can't modify the geometry or material, all these must\n // be set in the scene already before this is called. Update the uniforms\n // to render the Gsplats from the current active viewpoint.\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.viewpoint.lastTime ?? time);\n this.viewpoint.lastTime = time;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== this.lastFrame;\n this.lastFrame = frame;\n\n const viewpoint = this.viewpoint;\n if (viewpoint === this.defaultView) {\n // When rendering is triggered on the default viewpoint,\n // perform automatic updates.\n if (isNewFrame) {\n if (!renderer.xr.isPresenting) {\n // Non-WebXR mode, just a single camera\n this.defaultView.viewToWorld = camera.matrixWorld.clone();\n this.defaultCameras = [this.defaultView.viewToWorld];\n } else {\n // In WebXR mode we are called multiple times, once for each eye,\n // so use their average to compute the sort center.\n const cameras = renderer.xr.getCamera().cameras;\n this.defaultCameras = cameras.map((camera) => camera.matrixWorld);\n this.defaultView.viewToWorld =\n averageOriginToWorlds(this.defaultCameras) ?? new THREE.Matrix4();\n }\n }\n\n if (this.autoUpdate) {\n this.update({ scene, viewToWorld: this.defaultView.viewToWorld });\n }\n }\n\n // Update uniforms for rendering\n\n if (isNewFrame) {\n // Keep these uniforms the same for both eyes if in WebXR\n if (this.material.premultipliedAlpha !== this.premultipliedAlpha) {\n this.material.premultipliedAlpha = this.premultipliedAlpha;\n this.material.needsUpdate = true;\n }\n this.uniforms.time.value = time;\n this.uniforms.deltaTime.value = deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (viewpoint.display && viewpoint.stochastic) {\n (this.geometry as OldSplatGeometry).instanceCount =\n this.uniforms.numSplats.value;\n }\n }\n\n if (viewpoint.target) {\n // Rendering to a texture target, so its dimensions\n this.uniforms.renderSize.value.set(\n viewpoint.target.width,\n viewpoint.target.height,\n );\n } else {\n // Rendering to the canvas or WebXR\n const renderSize = renderer.getDrawingBufferSize(\n this.uniforms.renderSize.value,\n );\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n\n // Update uniforms from instance properties\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n this.uniforms.encodeLinear.value = viewpoint.encodeLinear;\n this.uniforms.maxStdDev.value = this.maxStdDev;\n this.uniforms.minPixelRadius.value = this.minPixelRadius;\n this.uniforms.maxPixelRadius.value = this.maxPixelRadius;\n this.uniforms.minAlpha.value = this.minAlpha;\n this.uniforms.stochastic.value = viewpoint.stochastic;\n this.uniforms.enable2DGS.value = this.enable2DGS;\n this.uniforms.preBlurAmount.value = this.preBlurAmount;\n this.uniforms.blurAmount.value = this.blurAmount;\n this.uniforms.focalDistance.value = this.focalDistance;\n this.uniforms.apertureAngle.value = this.apertureAngle;\n this.uniforms.falloff.value = this.falloff;\n this.uniforms.clipXY.value = this.clipXY;\n this.uniforms.focalAdjustment.value = this.focalAdjustment;\n\n if (this.lastStochastic !== !viewpoint.stochastic) {\n this.lastStochastic = !viewpoint.stochastic;\n this.material.transparent = !viewpoint.stochastic;\n this.material.depthWrite = viewpoint.stochastic;\n this.material.needsUpdate = true;\n }\n\n if (this.splatTexture) {\n const { enable, texture, multiply, add, near, far, mid } =\n this.splatTexture;\n if (enable && texture) {\n this.uniforms.splatTexEnable.value = true;\n this.uniforms.splatTexture.value = texture;\n if (multiply) {\n this.uniforms.splatTexMul.value.fromArray(multiply.elements);\n } else {\n this.uniforms.splatTexMul.value.set(\n 0.5 / this.maxStdDev,\n 0,\n 0,\n 0.5 / this.maxStdDev,\n );\n }\n this.uniforms.splatTexAdd.value.set(add?.x ?? 0.5, add?.y ?? 0.5);\n this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value;\n this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value;\n this.uniforms.splatTexMid.value = mid ?? 0.0;\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n\n // Calculate the transform from the accumulator to the current camera\n const accumToWorld =\n viewpoint.display?.accumulator.toWorld ?? new THREE.Matrix4();\n const worldToCamera = camera.matrixWorld.clone().invert();\n const originToCamera = accumToWorld.clone().premultiply(worldToCamera);\n originToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n }\n\n // Update the uniforms for the given viewpoint.\n // Note that the client expects to be able to call render() at any point\n // to update the canvas, so we must switch the viewpoint back to\n // defaultView when we're finished.\n prepareViewpoint(viewpoint?: OldSparkViewpoint) {\n this.viewpoint = viewpoint ?? this.viewpoint;\n\n if (this.viewpoint.display) {\n const { accumulator, geometry } = this.viewpoint.display;\n this.uniforms.numSplats.value = accumulator.splats.numSplats;\n this.uniforms.packedSplats.value = accumulator.splats.getTexture();\n this.uniforms.rgbMinMaxLnScaleMinMax.value.set(\n accumulator.splats.splatEncoding?.rgbMin ?? 0.0,\n accumulator.splats.splatEncoding?.rgbMax ?? 1.0,\n accumulator.splats.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n accumulator.splats.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n this.geometry = geometry;\n this.material.transparent = !this.viewpoint.stochastic;\n this.material.depthWrite = this.viewpoint.stochastic;\n this.material.needsUpdate = true;\n } else {\n // No Gsplats to display for this viewpoint yet\n this.uniforms.numSplats.value = 0;\n this.uniforms.packedSplats.value = PackedSplats.getEmptyArray;\n this.geometry = EMPTY_GEOMETRY;\n }\n }\n\n // If spark.autoUpdate is false then you must manually call\n // spark.update({ scene }) to have the scene Gsplats be re-generated.\n update({\n scene,\n viewToWorld,\n }: { scene: THREE.Scene; viewToWorld?: THREE.Matrix4 }) {\n // Compute the transform for the SparkRenderer to use as origin\n // for Gsplat generation and accumulation.\n const originToWorld = this.matrixWorld;\n\n // Either do the update now, or in the next \"tick\" depending on preUpdate\n if (this.preUpdate) {\n this.updateInternal({\n scene,\n originToWorld: originToWorld.clone(),\n viewToWorld,\n });\n } else {\n // Pass the update parameters to be performed on the next tick\n this.pendingUpdate.scene = scene;\n this.pendingUpdate.originToWorld.copy(originToWorld);\n\n // Schedule a timeout if there isn't one already\n if (this.pendingUpdate.timeoutId === -1) {\n this.pendingUpdate.timeoutId = setTimeout(() => {\n const { scene, originToWorld } = this.pendingUpdate;\n this.pendingUpdate.scene = null;\n this.pendingUpdate.timeoutId = -1;\n const updated = this.updateInternal({\n scene: scene as THREE.Scene,\n originToWorld,\n viewToWorld,\n });\n\n if (updated) {\n // Flush to encourage eager execution\n const gl = this.renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n }, 1);\n }\n }\n }\n\n updateInternal({\n scene,\n originToWorld,\n viewToWorld,\n }: {\n scene: THREE.Scene;\n originToWorld?: THREE.Matrix4;\n viewToWorld?: THREE.Matrix4;\n }): boolean {\n if (!this.canAllocAccumulator()) {\n // We don't have any available accumulators because of sorting\n // back pressure, so don't update this time but try again next time.\n // Signal update not attempted.\n return false;\n }\n\n // Figure out the frame of the SparkRenderer and current view\n if (!originToWorld) {\n originToWorld = this.active.toWorld;\n }\n viewToWorld = viewToWorld ?? originToWorld.clone();\n\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.lastUpdateTime ?? time);\n this.lastUpdateTime = time;\n\n // Create a lookup from last active SplatGenerator to Gsplat mapping record\n const activeMapping = this.active.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Traverse visible scene to find all SplatGenerators and global SplatEdits\n const { generators, visibleGenerators, globalEdits } =\n this.compileScene(scene);\n\n // Let all SplatGenerators run their frameUpdate() method\n for (const object of generators) {\n object.frameUpdate?.({\n renderer: this.renderer,\n object,\n time,\n deltaTime,\n viewToWorld,\n globalEdits,\n });\n }\n\n const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid));\n\n // Make sure we have new version numbers for any objects with either\n // generator or numSplats that have changed since the last frame.\n for (const object of generators) {\n const current = activeMapping.get(object);\n const isVisible = object.generator && visibleGenHash.has(object.uuid);\n const numSplats = isVisible ? object.numSplats : 0;\n if (\n this.needsUpdate ||\n object.generator !== current?.generator ||\n numSplats !== current?.count\n ) {\n object.updateVersion();\n }\n }\n\n // Check if the origin is within the maximum allowed distance before\n // we trigger an update.\n const originUpdate = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: this.active.toWorld,\n maxDistance: this.originDistance,\n });\n\n // Check if we need any update at all\n const needsUpdate =\n this.needsUpdate ||\n originUpdate ||\n generators.length !== activeMapping.size ||\n generators.some((g) => g.version !== activeMapping.get(g)?.version);\n this.needsUpdate = false;\n\n let accumulator: OldSplatAccumulator | null = null;\n if (needsUpdate) {\n // Need to update, so allocate an accumulator\n accumulator = this.maybeAllocAccumulator();\n if (!accumulator) {\n // This should never happen since we checked canAllocAccumulator() above\n throw new Error(\"Unreachable\");\n }\n\n // Compute whether our view frame has changed enough to warrant\n // doing a Gsplat sort. Check both distance epsilon and\n // minimum co-orientation (dot product of quaternions)\n const originChanged = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: accumulator.toWorld,\n maxDistance: 0.00001,\n minCoorient: 0.99999,\n });\n\n // Compute an ordering of the generators with the rough goal\n // of keeping unchanging generators near the front to minimize\n // the number of Gsplats that need to be regenerated.\n const sorted = visibleGenerators\n .map((g, gIndex): [number, number, SplatGenerator] => {\n const lastGen = activeMapping.get(g);\n // If no previous generator, sort by absolute version, which will\n // tend to push frequently updated generators toward the end\n return !lastGen\n ? [Number.POSITIVE_INFINITY, g.version, g]\n : // Sort by version deltas then by previous ordering in the mapping,\n // attempting to keep unchanging generators near the front\n // to improve our chances of avoiding a re-generation.\n [g.version - lastGen.version, lastGen.base, g];\n })\n .sort((a, b) => {\n // Sort by first then second element of the tuple\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return a[1] - b[1];\n });\n const genOrder = sorted.map(([_version, _seq, g]) => g);\n\n // Compute sequential layout of generated splats\n const splatCounts = genOrder.map((g) => g.numSplats);\n const { maxSplats, mapping } =\n accumulator.splats.generateMapping(splatCounts);\n const newGenerators = genOrder.map((node, gIndex) => {\n const { base, count } = mapping[gIndex];\n return {\n node,\n generator: node.generator,\n version: node.version,\n base,\n count,\n };\n });\n\n // Compute worldToAccumulator origin transform (no scale)\n originToWorld\n .clone()\n .invert()\n .decompose(\n this.translateToAccumulator.value,\n this.rotateToAccumulator.value,\n new THREE.Vector3(),\n );\n\n // Generate the Gsplats according to the mapping that need updating\n accumulator.ensureGenerate(maxSplats);\n accumulator.splats.splatEncoding = { ...this.splatEncoding };\n const generated = accumulator.generateSplats({\n renderer: this.renderer,\n modifier: this.modifier,\n generators: newGenerators,\n forceUpdate: originChanged,\n originToWorld,\n });\n\n // Update splat version number\n accumulator.splatsVersion = this.active.splatsVersion + 1;\n // Increment the mapping version if the mapping isn't identical to before\n const hasCorrespondence = accumulator.hasCorrespondence(this.active);\n accumulator.mappingVersion =\n this.active.mappingVersion + (hasCorrespondence ? 0 : 1);\n\n // Release the old accumulator and make the new one active\n this.releaseAccumulator(this.active);\n this.active = accumulator;\n this.prepareViewpoint();\n }\n\n // Let the system breath before potentially triggering sorts\n setTimeout(() => {\n // Notify all auto-updating viewpoints that we updated the Gsplats\n for (const view of this.autoViewpoints) {\n view.autoPoll({ accumulator: accumulator ?? undefined });\n }\n }, 1);\n\n // Signal update was performed\n return true;\n }\n\n private compileScene(scene: THREE.Scene): {\n generators: SplatGenerator[];\n visibleGenerators: SplatGenerator[];\n globalEdits: SplatEdit[];\n } {\n // Take a snapshot of the SplatGenerators and SplatEdits in the scene\n // to be used to run an update.\n const generators: SplatGenerator[] = [];\n // Collect all SplatGenerators, even if not visible, because we want to\n // be able to call their update functions every frame.\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n generators.push(node);\n }\n });\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n visibleGenerators.push(node);\n }\n });\n\n const globalEdits = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEdits.add(node);\n }\n }\n });\n return {\n generators,\n visibleGenerators,\n globalEdits: Array.from(globalEdits),\n };\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n renderer,\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = false,\n }: {\n renderer?: THREE.WebGLRenderer;\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects?: THREE.Object3D[];\n update?: boolean;\n }): Promise {\n if (!this.envViewpoint) {\n this.envViewpoint = this.newViewpoint({ sort360: true });\n }\n if (\n !OldSparkRenderer.cubeRender ||\n OldSparkRenderer.cubeRender.target.width !== size ||\n OldSparkRenderer.cubeRender.near !== near ||\n OldSparkRenderer.cubeRender.far !== far\n ) {\n if (OldSparkRenderer.cubeRender) {\n OldSparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n generateMipmaps: true,\n minFilter: THREE.LinearMipMapLinearFilter,\n });\n const camera = new THREE.CubeCamera(near, far, target);\n OldSparkRenderer.cubeRender = { target, camera, near, far };\n }\n\n if (!OldSparkRenderer.pmrem) {\n OldSparkRenderer.pmrem = new THREE.PMREMGenerator(\n renderer ?? this.renderer,\n );\n }\n\n // Prepare the viewpoint, sorting Gsplats for this view origin.\n const viewToWorld = new THREE.Matrix4().setPosition(worldCenter);\n await this.envViewpoint?.prepare({ scene, viewToWorld, update });\n\n const { target, camera } = OldSparkRenderer.cubeRender;\n camera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n // Update the CubeCamera, which performs 6 cube face renders\n this.prepareViewpoint(this.envViewpoint);\n camera.update(renderer ?? this.renderer, scene);\n\n // Restore viewpoint to default and object visibility\n this.prepareViewpoint(this.defaultView);\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n // Pre-filter the cube map using THREE.PMREMGenerator\n return OldSparkRenderer.pmrem?.fromCubemap(target.texture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n // Utility function that helps extract the Gsplat RGBA values from a\n // SplatGenerator, including the result of any real-time RGBA SDF edits applied\n // to a SplatMesh. This effectively \"bakes\" any computed RGBA values, which can\n // now be used as a pipeline input via SplatMesh.splatRgba to inject these\n // baked values into the Gsplat data.\n getRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): RgbaArray {\n const mapping = this.active.mapping.find(({ node }) => node === generator);\n if (!mapping) {\n throw new Error(\"Generator not found\");\n }\n\n rgba = rgba ?? new RgbaArray();\n rgba.fromPackedSplats({\n packedSplats: this.active.splats,\n base: mapping.base,\n count: mapping.count,\n renderer: this.renderer,\n });\n return rgba;\n }\n\n // Utility function that builds on getRgba({ generator }) and additionally\n // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA\n // in that byte order.\n async readRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): Promise {\n rgba = this.getRgba({ generator, rgba });\n return rgba.read();\n }\n}\n\nconst EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0);\n\nconst reorderSplats = dynoBlock(\n { packedSplats: TPackedSplats, index: \"int\" },\n { gsplat: Gsplat },\n ({ packedSplats, index }) => {\n if (!packedSplats || !index) {\n throw new Error(\"Invalid input\");\n }\n const gsplat = readPackedSplat(packedSplats, index);\n return { gsplat };\n },\n);\n\nfunction averageOriginToWorlds(\n originToWorlds: THREE.Matrix4[],\n): THREE.Matrix4 | null {\n if (originToWorlds.length === 0) {\n return null;\n }\n\n const position = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n\n const positions: THREE.Vector3[] = [];\n const quaternions: THREE.Quaternion[] = [];\n for (const matrix of originToWorlds) {\n matrix.decompose(position, quaternion, scale);\n positions.push(position);\n quaternions.push(quaternion);\n }\n\n return new THREE.Matrix4().compose(\n averagePositions(positions),\n averageQuaternions(quaternions),\n new THREE.Vector3(1, 1, 1),\n );\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n rgba.a = min(1.0, a) * exp(exponent);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["THREE","QUAD_VERTICES","QUAD_INDICES","max","l","add","Inflate","Gunzip","_a","SplatFileType","dyno","inputs","_b","outputs","step","normalize","floatBitsToUint","uintBitsToFloat","bits","sign","exp","distance","b2","offset","BundledWorker","worker","maxWorkers","packedSplats","index","base","count","extSplats","covSplats","gsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","b","scale","rotate","translate","recolor","covsplat","rgbMinMaxLnScaleMinMax","viewCenter","viewDir","sortRadial","value","min","a","t","edge","edge0","edge1","cond","f","select","vector","w","swizzle","position","dir","texture","degrees","radians","sin","cos","tan","ptr","module","splatDefines","oldSplatVertex","oldSplatFragment","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","FullScreenQuad","newArray","SplatEditSdfType","SplatEditRgbaBlendMode","uniform","sdfArray","numEdits","rgbaDisplaceEdits","textureSize","shaders","dot","now","instances","result","traverseStart","keyIndices","target","cubeCamera","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","lodSplats","dyno.DynoUsampler2DArray","dyno.dynoBlock","dyno.Dyno","dyno.unindentLines","dyno.Gsplat","dyno.defineGsplat","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","array","init_wasm","edits","_","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","packed_position","packed_rotation","packed_scale","packed_color","SH_C0","length","Loader","FileLoader","numSplats","sortOrigin","sortDirection","sortDepthBias","sort360","generators","camera","scene","originToWorld","i32","section","i","input","transformPos","spz","SplatSkinningMode","skinning","color","metrics","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","Vector3","Quaternion","Color","Matrix4","gamepad"],"mappings":"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","x_google_ignoreList":[1]} \ No newline at end of file +{"version":3,"file":"spark.cjs.js","sources":["../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../node_modules/fflate/esm/browser.js","../src/utils.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../rust/spark-rs/pkg/spark_rs.js","../virtual:decode-64","../src/wasm.ts","../src/SplatWorker.ts","../src/PackedSplats.ts","../src/SplatLoader.ts","../src/ExtSplats.ts","../src/RgbaArray.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/ply.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n\nexport function uploadU32DataTextureRows(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n width: number,\n rows: number,\n data: Uint32Array,\n) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props?.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n // Note: instead of saving and restoring the pixelStorei parameters\n // renderer.state.pixelStorei can be used with Three.js >= r184\n const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);\n const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n width,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n data,\n );\n renderer.state.unbindTexture();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply);\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","function b64ToUint6(nChr) {\n return nChr > 64 && nChr < 91\n ? nChr - 65\n : nChr > 96 && nChr < 123\n ? nChr - 71\n : nChr > 47 && nChr < 58\n ? nChr + 4\n : nChr === 43\n ? 62\n : nChr === 47\n ? 63\n : 0\n}\n\nfunction base64ToUint8(sBase64, nBlocksSize) {\n const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, \"\")\n const nInLen = sB64Enc.length\n const nOutLen = nBlocksSize\n ? Math.ceil(((nInLen * 3 + 1) >> 2) / nBlocksSize) * nBlocksSize\n : (nInLen * 3 + 1) >> 2\n const taBytes = new Uint8Array(nOutLen)\n\n let nMod3\n let nMod4\n let nUint24 = 0\n let nOutIdx = 0\n for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4))\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n nMod3 = 0\n while (nMod3 < 3 && nOutIdx < nOutLen) {\n taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255\n nMod3++\n nOutIdx++\n }\n nUint24 = 0\n }\n }\n\n return taBytes\n}\nfunction toUint8(b64) {\n if (typeof Uint8Array.fromBase64 === \"function\") return Uint8Array.fromBase64(b64)\n let bin = atob(b64)\n let len = bin.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = bin.charCodeAt(i)\n }\n return bytes\n}\n\nconst decode64 = typeof atob === \"function\" ? toUint8 : base64ToUint8\n\nexport default decode64\n","import init_wasm from \"spark-rs\";\nimport WASM from \"spark-rs/spark_rs_bg.wasm?arraybuffer&base64\";\n\nexport const WASM_MODULE = WebAssembly.compile(WASM);\n\n// Flag indicating if the spark-rs project has been initialized\nlet initialized = false;\n\n/**\n * Promise for module instantiation, ensuring calls to\n * imports from the spark-rs project can be used.\n */\nexport const initialization = init_wasm({ module_or_path: WASM_MODULE }).then(\n (_) => {\n initialized = true;\n },\n);\n\n/**\n * Indicates if the wasm module instantiation has completed or not.\n */\nexport function isInitialized() {\n return initialized;\n}\n","import { getTransferable } from \"./utils\";\nimport { WASM_MODULE } from \"./wasm\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n WASM_MODULE.then((module) => {\n this.worker.postMessage({ name: \"init-wasm\", module });\n });\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\n\nexport const randomColourFromID = unindent(`\nprecision highp float;\nprecision highp int;\n\n// Blazing fast HSL to RGB conversion\nvec3 hsl2rgb(vec3 c) {\n vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0));\n}\n\nvec4 getDeterministicColor(uint id) {\n float hue = fract(float(id) * 0.618033988749895);\n vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6));\n return vec4(rgb, 1.0);\n}\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH, randomColourFromID } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { type DynoUsampler2DArray, pagedSplatTexCoord } from \"./dyno\";\nimport {\n decodeExtSplat,\n getTextureSize,\n unpackSplat,\n uploadU32DataTextureRows,\n} from \"./utils\";\nimport * as wasm from \"./wasm\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nconst PAGE_WIDTH = 256;\nconst PAGE_HEIGHT = 256;\nconst PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; // 65536\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasm.initialization;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult }; \n const lodSplats = result.lodSplats;\n\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n uploadU32DataTextureRows(\n renderer,\n indicesTexture,\n 4096,\n rows,\n textureIndices,\n );\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\ninterface PageUpload {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n shArrays: Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n}\n\nexport class SplatPager {\n readonly renderer: THREE.WebGLRenderer;\n\n readonly extSplats: boolean;\n readonly maxPages: number;\n readonly maxSplats: number;\n readonly pageSplats: number;\n\n readonly maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: PageUpload[];\n readyUploads: PageUpload[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n highlightLabel: dyno.DynoInt<\"highlightLabel\">;\n lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>;\n labelTexture: dyno.DynoUsampler2DArray<\"label\", THREE.DataArrayTexture>;\n instanceTexture: dyno.DynoUsampler2DArray<\"instance\", THREE.DataArrayTexture>;\n labelLookupModifier: dyno.Dyno<\n {\n gsplat: typeof dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray', \n instance: 'usampler2DArray', \n highlightLabel: 'int'\n },\n { gsplat: typeof dyno.Gsplat }\n >\n\n readonly shTextures: [\n dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>,\n ];\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = PAGE_SPLATS;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS);\n this.maxSplats = this.maxPages * PAGE_SPLATS;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(4),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(4)\n : SplatPager.emptyExtTexture,\n });\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n this.shTextures = emptyShTextures.map(\n (texture) =>\n new dyno.DynoUsampler2DArray({\n value: texture,\n }),\n ) as typeof this.shTextures;\n\n this.highlightLabel = new dyno.DynoInt({ key: 'highlightLabel', value: -1 }); \n this.lookUpTexture = new dyno.DynoUsampler2D({\n value: new THREE.DataTexture(\n new Uint32Array(256), \n 256, 1,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n )\n });\n this.lookUpTexture.value.image.data.fill(1);\n this.lookUpTexture.value.needsUpdate = true;\n this.renderer.initTexture(this.lookUpTexture.value);\n\n this.labelTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.instanceTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.labelLookupModifier = new dyno.Dyno({\n inTypes: { \n gsplat: dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray',\n instance: 'usampler2DArray',\n highlightLabel: 'int'\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: { \n lookup: this.lookUpTexture, \n label: this.labelTexture,\n instance: this.instanceTexture,\n highlightLabel: this.highlightLabel\n },\n globals: () => [\n randomColourFromID,\n dyno.defineGsplat],\n statements: ({ inputs, outputs }) => \n dyno.unindentLines(`\n Gsplat g = ${inputs.gsplat};\n \n ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16);\n uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0);\n uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r;\n if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; }\n\n if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) {\n uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0);\n vec4 splatColour = getDeterministicColor(instanceTexel.r);\n g.rgba = mix(g.rgba, splatColour, 0.6);\n }\n\n ${outputs.gsplat} = g;\n `), \n }); //DynoUniform\n\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3Texture: this.shTextures[2],\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3TextureA: this.shTextures[2],\n sh3TextureB: this.shTextures[3],\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (this.labelTexture.value !== SplatPager.emptyLabelTexture) {\n this.labelTexture.value.dispose();\n this.labelTexture.value.source.data = null;\n }\n if (this.instanceTexture.value !== SplatPager.emptyLabelTexture) {\n this.instanceTexture.value.dispose();\n this.instanceTexture.value.source.data = null;\n }\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < emptyShTextures.length; i++) {\n const texture = this.shTextures[i].value;\n if (texture !== emptyShTextures[i]) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n\n\n public updateLabelLookup(categories: Set) {\n const array = this.lookUpTexture.value.image.data;\n array.fill(0);\n categories.forEach(id => {\n if (id >= 0 && id < 256) array[id] = 1;\n });\n this.lookUpTexture.value.needsUpdate = true;\n }\n\n private newUintArrayTex(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n private ensureLabelTextures() {\n if (this.labelTexture.value === SplatPager.emptyLabelTexture) {\n this.labelTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n public updateLabelHighlight(id: number) {\n this.highlightLabel.value = id\n }\n\n private ensureInstanceTextures() {\n if (this.instanceTexture.value === SplatPager.emptyLabelTexture) {\n this.instanceTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < this.curSh; i++) {\n if (this.shTextures[i].value === emptyShTextures[i]) {\n const elementsPerSplat =\n this.shTextures[i].value === SplatPager.emptyUint32x2 ? 2 : 4;\n this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat);\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n removeSplats(splats: PagedSplats) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return;\n }\n\n const freedPages = new Set();\n\n while (chunks.length > 0) {\n const chunk = chunks.pop();\n if (chunk) {\n const { page } = chunk;\n this.pageToSplatsChunk[page] = undefined;\n freedPages.add(page);\n this.pageFreelist.push(page);\n this.pageLru.delete(chunk);\n }\n }\n this.splatsChunkToPage.delete(splats);\n this.freeablePages = this.freeablePages.filter(\n (page) => !freedPages.has(page),\n );\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n shArrays: Array,\n extArray?: Uint32Array,\n labels?: Uint32Array,\n instances?: Uint32Array\n ) {\n const pageBase = page * PAGE_SPLATS;\n\n uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray);\n\n if (extArray) {\n uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray);\n }\n\n // In case of extSplats there can be 4 shArrays for 3 sh degrees\n const numSh = Math.min(shArrays.length, 3);\n this.ensureShTextures(numSh);\n\n if ( labels !== undefined ) {\n this.ensureLabelTextures();\n const labels_arr = labels as Uint32Array;\n const array = this.labelTexture.value.image.data;\n array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr);\n this.labelTexture.value.addLayerUpdate(page);\n this.labelTexture.value.needsUpdate = true;\n }\n\n if ( instances !== undefined ) {\n this.ensureInstanceTextures();\n const instances_arr = instances as Uint32Array;\n const array = this.instanceTexture.value.image.data;\n array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr);\n this.instanceTexture.value.addLayerUpdate(page);\n this.instanceTexture.value.needsUpdate = true;\n }\n\n for (let i = 0; i < shArrays.length; i++) {\n const array = shArrays[i];\n const elementsPerSplat =\n this.shTextures[i].value.format === THREE.RGIntegerFormat ? 2 : 4;\n uploadTextureLayer(\n this.shTextures[i],\n page,\n pageBase * elementsPerSplat,\n array,\n );\n }\n }\n\n private newUint32ArrayTexture(\n elementsPerSplat: 2 | 4,\n ): THREE.DataArrayTexture {\n const data = new Uint32Array(\n this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat,\n );\n const texture = new THREE.DataArrayTexture(\n data,\n PAGE_WIDTH,\n PAGE_HEIGHT,\n this.maxPages,\n );\n texture.format =\n elementsPerSplat === 2 ? THREE.RGIntegerFormat : THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = elementsPerSplat === 2 ? \"RG32UI\" : \"RGBA32UI\";\n texture.needsUpdate = true;\n // Avoid initial upload of empty/null data\n texture.source.dataReady = false;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: PAGE_SPLATS,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (isExtResult(data, this.extSplats)) {\n const extArrays = data.extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3a as Uint32Array,\n data.extra.sh3b as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n extArray,\n shArrays,\n labels: extra?.labels,\n instances: extra?.instances\n });\n } else {\n const packedArray = data.packedArray;\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3 as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n shArrays,\n });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload;\n this.uploadPage(page, packedArray, shArrays, extArray, labels, instances);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptyLabelTexture = this.emptyUint32x4;\n static emptyShTextures = [\n this.emptyUint32x2,\n this.emptyUint32x4,\n this.emptyUint32x4,\n ] as const;\n static emptyExtShTextures = [\n this.emptyUint32x4,\n this.emptyUint32x4,\n this.emptyUint32x4, // SH3A\n this.emptyUint32x4, // SH3B\n ] as const;\n}\n\n// Convenience function to distinguish ExtResult and PackedResult\nfunction isExtResult(\n data: ExtResult | PackedResult,\n extSplats: boolean,\n): data is ExtResult {\n return extSplats;\n}\n\nfunction uploadTextureLayer(\n texture: DynoUsampler2DArray,\n layer: number,\n dstOffset: number,\n data: Uint32Array,\n) {\n const array = texture.value.image.data;\n array.subarray(dstOffset, dstOffset + data.length).set(data);\n\n texture.value.addLayerUpdate(layer);\n texture.value.needsUpdate = true;\n texture.value.source.dataReady = true;\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\nimport * as wasm from \"./wasm\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n \n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n public updateLabelLookup(categories: Set) {\n if (this.paged) {\n this.paged.pager?.updateLabelLookup(categories);\n }\n }\n\n public updateLabelHighlight(id: number) {\n if (this.paged) {\n this.paged.pager?.updateLabelHighlight(id);\n }\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n \n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n if (this.paged?.pager?.labelLookupModifier) {\n gsplat = this.paged?.pager?.labelLookupModifier.apply({ gsplat }).gsplat;\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !wasm.isInitialized() ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n activeCubeFace: renderer.getActiveCubeFace(),\n activeMipmapLevel: renderer.getActiveMipmapLevel(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n activeCubeFace: number;\n activeMipmapLevel: number;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(\n state.target,\n state.activeCubeFace,\n state.activeMipmapLevel,\n );\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n uploadU32DataTextureRows,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Generalized Gaussian exponent parameter. The kernel is\n * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0`\n * uses a quartic radial falloff.\n * @default 1.0\n */\n gaussianK?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n lodTraverseMode?: \"dynamic\" | \"standard\";\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n gaussianK: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n lodTraverseMode: \"dynamic\" | \"standard\";\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.gaussianK = options.gaussianK ?? 1.0;\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.lodTraverseMode = options.lodTraverseMode ?? \"standard\";\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n // Check if the provoking vertex convention should be changed\n const provokingVertexExt = this.renderer\n .getContext()\n .getExtension(\"WEBGL_provoking_vertex\");\n if (provokingVertexExt) {\n provokingVertexExt.provokingVertexWEBGL(\n provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL,\n );\n }\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Generalized Gaussian k. The radial exponent is 2 * gaussianK.\n gaussianK: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n // Determine render target\n const currentRenderTarget = renderer.getRenderTarget();\n const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget);\n if (currentRenderTarget) {\n spark.renderSize.set(\n currentRenderTarget.width,\n currentRenderTarget.height,\n );\n\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n if (\n isXRRenderTarget &&\n spark.renderSize.x === 1 &&\n spark.renderSize.y === 1\n ) {\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n spark.renderSize.x = baseLayer.framebufferWidth;\n spark.renderSize.y = baseLayer.framebufferHeight;\n }\n }\n } else {\n renderer.getDrawingBufferSize(spark.renderSize);\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.gaussianK.value = spark.gaussianK;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n\n const outputColorSpace =\n currentRenderTarget === null\n ? renderer.outputColorSpace\n : isXRRenderTarget\n ? currentRenderTarget.texture.colorSpace\n : THREE.ColorManagement.workingColorSpace;\n this.uniforms.encodeLinear.value =\n outputColorSpace !== THREE.SRGBColorSpace;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n uploadU32DataTextureRows(\n renderer,\n this.orderingTexture,\n 4096,\n rows,\n result.ordering,\n );\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n traverseMode: this.lodTraverseMode,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n if (oldest.splats instanceof PagedSplats) {\n this.pager?.removeSplats(oldest.splats);\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n\nfunction checkIsXRRenderTarget(renderTarget: THREE.RenderTarget | null) {\n return (renderTarget as unknown as Record)?.isXRRenderTarget;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["SplatFileType","dyno","THREE","inputs","_a","_b","outputs","step","packedSplats","index","base","count","extSplats","covSplats","gsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","b","scale","rotate","translate","recolor","covsplat","rgbMinMaxLnScaleMinMax","viewCenter","viewDir","sortRadial","value","max","l","add","Inflate","Gunzip","normalize","floatBitsToUint","uintBitsToFloat","bits","sign","exp","distance","b2","offset","texture","min","a","t","edge","edge0","edge1","cond","f","select","vector","w","swizzle","position","dir","degrees","radians","sin","cos","tan","splatDefines","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","FullScreenQuad","SplatEditSdfType","SplatEditRgbaBlendMode","uniform","sdfArray","numEdits","rgbaDisplaceEdits","length","ptr","module","init_wasm","BundledWorker","worker","newArray","textureSize","Loader","FileLoader","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","wasm.initialization","result","lodSplats","dyno.DynoUsampler2DArray","dyno.Dyno","dyno.Gsplat","dyno.defineGsplat","dyno.unindentLines","dyno.dynoBlock","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","edits","wasm.isInitialized","shaders","dot","now","instances","traverseStart","keyIndices","target","cubeCamera","_","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","packed_position","packed_rotation","packed_scale","packed_color","SH_C0","i32","section","i","input","transformPos","spz","SplatSkinningMode","skinning","color","metrics","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","Vector3","Quaternion","Color","Matrix4","gamepad"],"mappings":"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","x_google_ignoreList":[7]} \ No newline at end of file diff --git a/dist/spark.cjs.min.js b/dist/spark.cjs.min.js index cd43bad2..6de0ce39 100644 --- a/dist/spark.cjs.min.js +++ b/dist/spark.cjs.min.js @@ -1,14 +1,6 @@ -"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const MA=require("three"),AB=require("three/addons/postprocessing/Pass.js");var UQ=typeof document<"u"?document.currentScript:null;function Ho(Q){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(Q){for(const I in Q)if(I!=="default"){const g=Object.getOwnPropertyDescriptor(Q,I);Object.defineProperty(A,I,g.get?g:{enumerable:!0,get:()=>Q[I]})}}return A.default=Q,Object.freeze(A)}const G=Ho(MA);class qQ extends G.InstancedBufferGeometry{constructor(A,I){super(),this.ordering=A,this.setAttribute("position",new G.BufferAttribute(Lo,3)),this.setIndex(new G.BufferAttribute(Yo,1)),this._maxInstanceCount=A.length,this.instanceCount=I,this.attribute=new G.InstancedBufferAttribute(A,1,!1,1),this.attribute.setUsage(G.DynamicDrawUsage),this.setAttribute("splatIndex",this.attribute)}update(A,I){this.ordering=A,this.attribute.array=A,this.instanceCount=I,this.attribute.addUpdateRange(0,I),this.attribute.needsUpdate=!0}}const Lo=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),Yo=new Uint16Array([0,1,2,0,2,3]),zB='(function(){"use strict";class gI{static __wrap(A){A=A>>>0;const I=Object.create(gI.prototype);return I.__wbg_ptr=A,Ug.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,Ug.unregister(this),A}free(){const A=this.__destroy_into_raw();L.__wbg_csplatarray_free(A,0)}bhatt_lod(A){L.csplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return L.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){L.csplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return L.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){L.csplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=L.csplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_extsplats_lod(){const A=L.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats(){const A=L.csplatarray_to_packedsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats_lod(){const A=L.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}get maxShDegree(){return L.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return L.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(A){L.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){L.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(gI.prototype[Symbol.dispose]=gI.prototype.free);class QI{static __wrap(A){A=A>>>0;const I=Object.create(QI.prototype);return I.__wbg_ptr=A,cg.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,cg.unregister(this),A}free(){const A=this.__destroy_into_raw();L.__wbg_gsplatarray_free(A,0)}get maxShDegree(){return L.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return L.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(A){L.gsplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return L.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){L.gsplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return L.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){L.gsplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=L.gsplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_extsplats_lod(){const A=L.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats(A){const I=L.gsplatarray_to_packedsplats(this.__wbg_ptr,A);if(I[2])throw QA(I[1]);return QA(I[0])}to_packedsplats_lod(A){const I=L.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,A);if(I[2])throw QA(I[1]);return QA(I[0])}set maxShDegree(A){L.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){L.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(QI.prototype[Symbol.dispose]=QI.prototype.free);function UQ(Q,A,I){return L.sort32_splats(Q,A,I)>>>0}function cQ(Q,A,I){return L.sort_splats(Q,A,I)>>>0}function HQ(){return{__proto__:null,"./spark_worker_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,I){return Error(sI(A,I))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(A){const I=A,g=typeof I=="boolean"?I:void 0;return NI(g)?16777215:g?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(A,I){const g=OI(I),B=ZI(g,L.__wbindgen_malloc,L.__wbindgen_realloc),C=wI;dA().setInt32(A+4,C,!0),dA().setInt32(A+0,B,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(A,I){return A in I},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(A){return!A},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(A){const I=A;return typeof I=="object"&&I!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(A){return A===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(A,I){return A==I},__wbg___wbindgen_number_get_7579aab02a8a620c:function(A,I){const g=I,B=typeof g=="number"?g:void 0;dA().setFloat64(A+8,NI(B)?0:B,!0),dA().setInt32(A+0,!NI(B),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(A,I){const g=I,B=typeof g=="string"?g:void 0;var C=NI(B)?0:ZI(B,L.__wbindgen_malloc,L.__wbindgen_realloc),E=wI;dA().setInt32(A+4,E,!0),dA().setInt32(A+0,C,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,I){throw new Error(sI(A,I))},__wbg_csplatarray_new:function(A){return gI.__wrap(A)},__wbg_error_a6fa202b58aa1cd3:function(A,I){let g,B;try{g=A,B=I,console.error(sI(A,I))}finally{L.__wbindgen_free(g,B,1)}},__wbg_get_4848e350b40afc16:function(A,I){return A[I>>>0]},__wbg_get_f96702c6245e4ef9:function(){return Lg(function(A,I){return Reflect.get(A,I)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(A,I){return A[I>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(A,I){return A[I]},__wbg_gsplatarray_new:function(A){return QI.__wrap(A)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(A){let I;try{I=A instanceof ArrayBuffer}catch{I=!1}return I},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(A){let I;try{I=A instanceof Uint8Array}catch{I=!1}return I},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_6e821edde497a532:function(A){return A.length},__wbg_length_a4ca9e78359b5f1f:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_a560378ea1240b14:function(A){return new Uint8Array(A)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_41a22191b9bdfd66:function(A){return new Uint32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,I,g){Uint8Array.prototype.set.call(YQ(A,I),g)},__wbg_prototypesetcall_64c287a27cc24d27:function(A,I,g){Uint16Array.prototype.set.call(aQ(A,I),g)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,I,g){Uint32Array.prototype.set.call(Hg(A,I),g)},__wbg_push_6bdbc990be5ac37b:function(A,I){return A.push(I)},__wbg_set_448126769bf7c181:function(A,I,g){A.set(Hg(I,g))},__wbg_set_6be42768c690e380:function(A,I,g){A[I]=g},__wbg_set_81b4174352e6a095:function(A,I,g){A.set(I,g>>>0)},__wbg_set_8ee2d34facb8466e:function(){return Lg(function(A,I,g){return Reflect.set(A,I,g)},arguments)},__wbg_set_index_338a66e40fc45dee:function(A,I,g){A[I>>>0]=g>>>0},__wbg_stack_3b0d974bbf31e44f:function(A,I){const g=I.stack,B=ZI(g,L.__wbindgen_malloc,L.__wbindgen_realloc),C=wI;dA().setInt32(A+4,C,!0),dA().setInt32(A+0,B,!0)},__wbg_subarray_0f98d3fb634508ad:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_517cd0f1811ab872:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,I){return sI(A,I)},__wbindgen_init_externref_table:function(){const A=L.__wbindgen_externrefs,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)}}}}typeof FinalizationRegistry>"u"||new FinalizationRegistry(Q=>L.__wbg_chunkdecoder_free(Q>>>0,1));const Ug=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>L.__wbg_csplatarray_free(Q>>>0,1)),cg=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>L.__wbg_gsplatarray_free(Q>>>0,1));function LQ(Q){const A=L.__externref_table_alloc();return L.__wbindgen_externrefs.set(A,Q),A}function OI(Q){const A=typeof Q;if(A=="number"||A=="boolean"||Q==null)return`${Q}`;if(A=="string")return`"${Q}"`;if(A=="symbol"){const B=Q.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=Q.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(Q)){const B=Q.length;let C="[";B>0&&(C+=OI(Q[0]));for(let E=1;E1)g=I[1];else return toString.call(Q);if(g=="Object")try{return"Object("+JSON.stringify(Q)+")"}catch{return"Object"}return Q instanceof Error?`${Q.name}: ${Q.message}\n${Q.stack}`:g}function aQ(Q,A){return Q=Q>>>0,KQ().subarray(Q/2,Q/2+A)}function Hg(Q,A){return Q=Q>>>0,tQ().subarray(Q/4,Q/4+A)}function YQ(Q,A){return Q=Q>>>0,DI().subarray(Q/1,Q/1+A)}let OA=null;function dA(){return(OA===null||OA.buffer.detached===!0||OA.buffer.detached===void 0&&OA.buffer!==L.memory.buffer)&&(OA=new DataView(L.memory.buffer)),OA}function sI(Q,A){return Q=Q>>>0,dQ(Q,A)}let BI=null;function KQ(){return(BI===null||BI.byteLength===0)&&(BI=new Uint16Array(L.memory.buffer)),BI}let CI=null;function tQ(){return(CI===null||CI.byteLength===0)&&(CI=new Uint32Array(L.memory.buffer)),CI}let EI=null;function DI(){return(EI===null||EI.byteLength===0)&&(EI=new Uint8Array(L.memory.buffer)),EI}function Lg(Q,A){try{return Q.apply(this,A)}catch(I){const g=LQ(I);L.__wbindgen_exn_store(g)}}function NI(Q){return Q==null}function ZI(Q,A,I){if(I===void 0){const D=iI.encode(Q),i=A(D.length,1)>>>0;return DI().subarray(i,i+D.length).set(D),wI=D.length,i}let g=Q.length,B=A(g,1)>>>0;const C=DI();let E=0;for(;E127)break;C[B+E]=D}if(E!==g){E!==0&&(Q=Q.slice(E)),B=I(B,g,g=E+Q.length*3,1)>>>0;const D=DI().subarray(B+E,B+g),i=iI.encodeInto(Q,D);E+=i.written,B=I(B,g,E,1)>>>0}return wI=E,B}function QA(Q){const A=L.__wbindgen_externrefs.get(Q);return L.__externref_table_dealloc(Q),A}let JI=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});JI.decode();const qQ=2146435072;let TI=0;function dQ(Q,A){return TI+=A,TI>=qQ&&(JI=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),JI.decode(),TI=A),JI.decode(DI().subarray(Q,Q+A))}const iI=new TextEncoder;"encodeInto"in iI||(iI.encodeInto=function(Q,A){const I=iI.encode(Q);return A.set(I),{read:Q.length,written:I.length}});let wI=0,L;function xQ(Q,A){return L=Q.exports,OA=null,BI=null,CI=null,EI=null,L.__wbindgen_start(),L}async function rQ(Q,A){if(typeof Response=="function"&&Q instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(Q,A)}catch(B){if(Q.ok&&I(Q.type)&&Q.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",B);else throw B}const g=await Q.arrayBuffer();return await WebAssembly.instantiate(g,A)}else{const g=await WebAssembly.instantiate(Q,A);return g instanceof WebAssembly.Instance?{instance:g,module:Q}:g}function I(g){switch(g){case"basic":case"cors":case"default":return!0}return!1}}async function nQ(Q){if(L!==void 0)return L;Q!==void 0&&(Object.getPrototypeOf(Q)===Object.prototype?{module_or_path:Q}=Q:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),Q===void 0&&(Q=new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIcQjiGIBxCgP4Dg0IohoQgHEKAgPwHg0IYhiAcQoCAgPgPg0IIhoSEIBxCCIhCgICA+A+DIBxCGIhCgID8B4OEIBxCKIhCgP4DgyAcQjiIhISEIBogG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhH6FIBqJIhpCGYgiHEL/AINCgYKEiJCgwIABfiErIAMoAuABIgVBCGshEUEAIQogAygC5AEiByAapyITcSIJIQQCfwJAA0AgBCAFaikAACIbICuFIhpCf4UgGkKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIaUEUEQANAIBEgGnqnQQN2IARqIAdxIhBBA3RrKAIAIAxGDQMgGkIBfSAagyIaUEUNAAsLIBsgG0IBhoNCgIGChIiQoMCAf4NQBEAgBCAKQQhqIgpqIAdxIQQMAQsLIAMoAugBRQRAIANB4AFqIANB8AFqEJwBIAMoAuQBIgcgE3EhCSADKALgASEFCyAFIAlqKQAAQoCBgoSIkKDAgH+DIhpQBEBBCCEEA0AgBCAJaiEJIARBCGohBCAFIAcgCXEiCWopAABCgIGChIiQoMCAf4MiGlANAAsLIAUgGnqnQQN2IAlqIAdxIgRqLAAAIglBAE4EQCAFIAUpAwBCgIGChIiQoMCAf4N6p0EDdiIEai0AACEJCyAEIAVqIBynQf8AcSIKOgAAIAUgBEEIayAHcWpBCGogCjoAACAFIARBA3RrIgVBBGtBADYCACAFQQhrIAw2AgAgAyADKALsAUEBajYC7AEgAyADKALoASAJQQFxazYC6AFBAQwBCyAFQQAgEGtBA3RqIgVBBGsoAgBBAWoLIQQgBUEEayAENgIAAkACQAJAAkACQAJAIAxBAU0EQCACIAMoAjwiB08NASAGKAIAIQQgAygCWCICIAMoAlBGBEAgA0HQAGpBsOXBABCLBgsgAygCVCACQQJ0aiAENgIAIAMgAkEBajYCWAwGCyADKgJMIQEgAy0AJyEUQQAhBCADQQA2ArgBIANBADYCzAFBBCEHAn8gDEEAIAggDE8bIgVBBUkEQCANIREgDwwBCwJAIAVBAWtnIgQEQCADQRhqIANBuAFqQX8gBHZBAWoQ6QMgAygCGCIEQYGAgIB4Rg0BIAQNFAtB2JXHAEERQdTMxwAQ6wcACyADKALMASIHQQVJBEAgByEEIA0hEUEEIQcgDwwBCyADKAK8ASEEIAMoAsABIREgDQshCiAEIAdPDQIgByAEQX9zaiIFIAIgAygCPCIMIAIgDEsbIhMgAmsiCSAFIAlJGyIFIAIgCCACIAhLGyIVIAJrIgkgBSAJSRsiCUEBaiIQQQxNDQEgESAEQQJ0aiIFIBYgAiAJakEFdGpBBGpJIAYgESAEIAlqQQJ0akEEaklxDQEgECAQQQNxIglBBCAJG2siECEJA0AgBSAGQeAAaiAGQUBrIAZBIGogBv1cAgD9VgIAAf1WAgAC/VYCAAP9CwIAIAZBgAFqIQYgBUEQaiEFIAlBBGsiCQ0ACyACIBBqIQIgBCAQaiEEDAELIAIgB0Gg5cEAEIwHAAsgFiACQQV0aiEGIBEgBEECdGohBQJAA0AgAiAVRg0BIAIgE0YEQCATIAxB4OXBABCMBwALIAUgBigCADYCACAGQSBqIQYgBUEEaiEFIAJBAWohAiAHIARBAWoiBEcNAAsgByEEDAELIAogBDYCAAwBCyAKIAQ2AgAgAiALSw0AIAtBAWohCSACQQV0IQYDQCACIAMoAjwiBE8NAiADKAI4IAZqAn8gAygCzAEiB0EFSQRAIAchBSANIQxBBCEHIA8MAQsgAygCvAEhBSADKALAASEMIA0LIQQoAgAhCiAFIAdGBEAgA0G4AWoQzgYgAygCvAEhBSADKALAASEMIA0hBAsgDCAFQQJ0aiAKNgIAIAQgBCgCAEEBajYCACAGQSBqIQYgCSACQQFqIgJHDQALCyADQfAAaiIFIANByAFqIgcpAgA3AwAgAyAD/QACuAH9CwNgIAAgAygCdCIGQQVPBH8gAygCZCEGIAMoAmgFIBILIAYgAUMAAAAAIBQbEEMhAiADKAJYIgQgAygCUEYEQCADQdAAakHA5cEAEIsGCyADKAJUIARBAnRqIAI2AgAgAyAEQQFqNgJYIAcgBSkDADcDACADIAP9AANg/QsDuAEgAygCjAEiBCADKAKEAUYEQCADQYQBahCVBgsgAygCiAEgBEEcbGoiBiACNgIAIAYgAykDuAE3AgQgBkEMaiADQcABav0AAwD9CwIAIAMgBEEBajYCjAEgAyADKAJcQQFqNgJcIAMoAjwhBwwBCyACIARB4OXBABCMBwALIAcgCCICSw0ACwwDCwwOCyAEIAZB3LvHABCMBwALDAwLIAMgKTcDmAEgAyAqNwOQAUEWEHEiAkUNBiADQQA2AvgCIAMgAjYC9AIgA0EWNgLwAiADQgI3AsQBIANBAjYCvAEgA0G45MEANgK4ASADIANBkAFqNgLAAQJAAkAgA0HwAmpBjO/BACADQbgBahDBA0UEQCADKALwAiICBEAgAygC9AIiBEEEaygCACIGQXhxIgVBBEEIIAZBA3EiBhsgAmpJDQ0gBkEAIAUgAkEnaksbDQ4gBBCiAgsgAygC7AEhCiADQegBakH4msgAKQMANwMAIAMoAuQBIQsgAygC4AEhCCADQfCayAApAwA3A+ABAkACQAJAIAoEQCAIQQhqIQUCQCAIKQMAQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1IEQCAFIQIgCCEGDAELIAghBgNAIAZBQGohBiAFKQMAIAVBCGoiAiEFQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1ENAAsLIApB/////wFLDQNBBCAKIApBBE0bIgRBA3QiBUH9////B08NAyAGIBpCgIGChIiQoMCAf4UiGnqnQfgAcWsiB0EEaygCACEMIAdBCGsoAgAhByAFEHEiCUUNDSAJIAw2AgQgCSAHNgIAQQEhBSADQQE2AsABIAMgCTYCvAEgAyAENgK4ASAKQQFrIgcEQCAaQgF9IBqDIRpBASEEA0AgGlAEQANAIAZBQGohBiACKQMAIAJBCGohAkKAgYKEiJCgwIB/gyIaQoCBgoSIkKDAgH9RDQALIBpCgIGChIiQoMCAf4UhGgsgBiAaeqdB+ABxayIFQQRrKAIAIQwgBUEIaygCACEFIBpCAX0gGoMhGiADKAK4ASAERgRAIANBuAFqIAQgB0EEQQgQpAUgAygCvAEhCQsgCSAEQQN0aiIRIAw2AgQgESAFNgIAIAMgBEEBaiIENgLAASAHQQFrIgcNAAsgCiEFCwJAIAtFDQAgC0EJaiICRQ0AIAhB/wEgAvwLAAsgA0EANgLsASADIAg2AuABIAMgCzYC5AEgAyALIAtBAWpBA3ZBB2wgC0EISRs2AugBIAMoArgBIQwgAygCvAEhCiAFQQJJDQIgBUEVSQ0BIAogBRDOBAwCCwJAIAtFDQAgC0EJaiICRQ0AIAhB/wEgAvwLAAtBACEMIANBADYC7AEgAyAINgLgASADIAs2AuQBIAMgCyALQQFqQQN2QQdsIAtBCEkbNgLoAUEEIQoMAQsgCkEIaiEEIAogBUEDdGohBUEAIQcDQCAEKAIAIgYgBEEIaygCAEkEQCAENQIEIRogByECAn8DQCACIApqIghBCGogCCkCADcCACAKIAJFDQEaIAYgAkEIayICIApqIggoAgBJDQALIAhBCGoLIAatIBpCIIaENwIACyAHQQhqIQcgBEEIaiIEIAVHDQALCyADKAJIIgcgAygCQEYEQCADQUBrQcjkwQAQogYLIAMoAkQiFiAHQQxsaiICIAMpAoQBNwIAIAJBCGogA0GMAWooAgA2AgAgA0EANgI8IAMgB0EBaiIINgJIIAMoAlQhBCADKAJQIQkCQAJAIAMoAlgiAiADKAI0SwRAIANBNGpBACACQQhBIBCkBSADKAI4IREgAygCPCEFDAELQQAhBSADKAI4IREgAkUNAQsgAkECdCILQQRrIhNBBHEEfyAEBSAEKAIAIQYgDUEQakIANwIAIA39DAAAAAAAAAAAAAAAAAAAAAD9CwIAIBEgBUEFdGoiAiAGNgIAIAIgAykCuAE3AgQgAkEMaiADQcABav0AAgD9CwIAIAJBHGogA0HQAWooAgA2AgAgBUEBaiEFIARBBGoLIQYgE0UNACAEIAtqIQsgESAFQQV0aiECA0AgAiAGKAIANgIAIA1BEGoiE0IANwIAIA39DAAAAAAAAAAAAAAAAAAAAAAiLP0LAgAgAkEEaiADKQK4ATcCACACQQxqIANBwAFqIhD9AAIA/QsCACACQRxqIANB0AFqIhQoAgA2AgAgBkEEaigCACEVIBNCADcCACAN/QwAAAAAAAAAAAAAAAAAAAAA/QsCACACQSBqIBU2AgAgAkEkaiADKQK4ATcCACACQSxqIBD9AAIA/QsCACACQTxqIBQoAgA2AgAgAkFAayECIAVBAmohBSAGQQhqIgYgC0cNAAsLIAMgBTYCPAJAIAkEQCAEQQRrKAIAIgJBeHEiBiAJQQJ0IglBBEEIIAJBA3EiAhtqSQ0BIAJBACAGIAlBJ2pLGw0QIAQQogILIAMgAy8BKkEBajsBKiADKAIwIAMoAixJDQQgAygCgAFBAUcNAwJAIAwEQCAKQQRrKAIAIgJBeHEiBCAMQQN0IgZBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAZBJ2pLGw0RIAoQogILIAMgBTYCfCAFQQFGBEAgAyARKAIANgKAAUEcEHEiAkUNDSACQv////8PNwIAIAJBATYCGCACIAMoAoABNgIIIAMoAkAgCEYEQCADQUBrQdzkwQAQogYgAygCRCEWCyAWIAhBDGxqIgRBATYCCCAEIAI2AgQgBEEBNgIAIAMgB0ECaiILNgJIIAMgKEKAgICAEIQ3A/ACIANCATcCxAEgA0EBNgK8ASADQfjkwQA2ArgBIAMgA0HwAmo2AsABIANBkAFqIANBuAFqEOwDAkAgAygCkAEiAgRAIAMoApQBIgRBBGsoAgAiBkF4cSIFQQRBCCAGQQNxIgYbIAJqSQ0BIAZBACAFIAJBJ2pLGw0TIAQQogILIAMoAoABIgIgACgCCCIESQRAIAMgAEE8ajYC9AIgAyAAKAIEIAJBGGxqNgLwAiADIANB8AJqrUKAgICAgAKENwNQIANCATcCxAEgA0EBNgK8ASADQYjlwQA2ArgBIAMgA0HQAGo2AsABIANBkAFqIANBuAFqEOwDAkAgAygCkAEiAgRAIAMoApQBIgRBBGsoAgAiBkF4cSIFQQRBCCAGQQNxIgYbIAJqSQ0BIAZBACAFIAJBJ2pLGw0VIAQQogILQQAhAiADQQA2ApgBIANCgICAgMAANwKQAUEAIQkgC0UNDiADQbwBaiIPQRBqIRhBBCEMQQAhCAJAA0AgAyALQQFrIhI2AkggFiASQQxsaiIKKAIAIhBBgICAgHhGBEAgEiELDA4LAkACQCAKKQIEIhqnIg0gGkIgiKciDkEcbGoiEwJ/IBpCgICAgBBaBEAgEyANayIGQRxuIgVBAXFBACEEQQAhByAGQRxrQRxPBEAgBUH+////AHEhFSANIQYDQCAGQRhqKAIAIgVBBU8EfyAGQQhqKAIABSAFCyAEaiAGQTRqKAIAIgVBBU8EQCAGQSRqKAIAIQULIAZBOGohBiAFaiEEIBUgB0ECaiIHRw0ACwsEfyANIAdBHGxqIgYoAhgiBUEFTwR/IAYoAggFIAULIARqBSAECyAJakGAgARLDQIgDSEGAkADQCAGQRxqIgQgBigCBCIFQQJGDQMaIAYoAgAhFCAYIAZBGGooAgA2AgAgDyAG/QACCP0LAgAgAyAFNgK4ASAPIQYgAygCzAEiFSEKIBVBBUkiGUUEQCADKAK8ASEKIAMoAsABIQYLAkAgFEF/Rg0AAkACQCAKQQAgCiAIIApqIhdNGyIOQf////8DSw0AIA5BAnQiBUH9////B08NAEEAIQcCQCAFRQRAQQQhC0EAIQ4MAQsgBRBxIgtFDRwLAkAgCCAXTw0AQQAhCSAIIQUgCkEETwRAIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEsIAshBSAKQXxxIgkhBwNAIAUgLP0LAgAgBUEQaiEFICz9DAQAAAAEAAAABAAAAAQAAAD9rgEhLCAHQQRrIgcNAAsgCSAKIgdGDQEgCCAJaiEFCyALIAlBAnRqIQcDQCAHIAU2AgAgB0EEaiEHIBcgBUEBaiIFRw0ACyAKIQcLIAAoAhAgACgCFCAUIAsgBxDUAiAIIQkgDkUNAiALQQRrKAIAIgVBeHEiByAOQQJ0IglBBEEIIAVBA3EiBRtqSQ0eIAVBACAHIAlBJ2pLGw0BIAsQogIgCCEJDAILQeD/xgAQ/wcACwwdCyAKBEAgCkECdCEHIAhBAnQhBSAIIQIDQCAGKAIAIQggBkEEaiEGIAMoApABIAJGBEAgA0GQAWpBrOLBABCLBiADKAKUASEMCyAFIAxqIAg2AgAgAyACQQFqIgI2ApgBIAVBBGohBSACIQggAiEJIAdBBGsiBw0ACwsCQCAZRQRAIAMoAsABIgZBBGsoAgAiBUF4cSIHIBVBAnQiCkEEQQggBUEDcSIFG2pJDQEgBUEAIAcgCkEnaksbDQMgBhCiAgsgEyAEIgZHDQEMBgsLDBoLDBoLIAJBgIAESw0BIAIhCCACIQkgDQsiBGtBHG4hBiAEIBNGDQEDQCAEQRhqKAIAIgVBBU8EQCAEQQxqKAIAIgdBBGsoAgAiCkF4cSILIAVBAnQiBUEEQQggCkEDcSIKG2pJDRkgCkEAIAsgBUEnaksbDRogBxCiAgsgBEEcaiEEIAZBAWsiBg0ACwwBCyAKIA42AgggCiANNgIEDA4LAkAgEARAIA1BBGsoAgAiBEF4cSIGIBBBHGwiBUEEQQggBEEDcSIEG2pJDQEgBEEAIAYgBUEnaksbDQMgDRCiAgsgEiILDQEMDwsLDBQLDBQLDBILIAIgBEHcu8cAEIwHAAsMEAsgA0EANgK4AUEAIANB/ABqQdjkwQAgA0G4AWpBkOXBABD1BwALDA4LDA0LQeD/xgAQ/wcACwwNCwJAIAwEQCAKQQRrKAIAIgJBeHEiBCAMQQN0IgZBBEEIIAJBA3EiAhtqSQ0MIAJBACAEIAZBJ2pLGw0BIAoQogILICAgIn0iGiAeICF9IhsgHyAdfSIcIBsgHFUbIhsgGiAbVRtCAlMgDnIhDgwCCwwLCyAMRQ0AIApBBGsoAgAiAkF4cSIEIAxBA3QiBkEEQQggAkEDcSICG2pPBEAgAkEAIAQgBkEnaksbDQsgChCiAgwBCwsMCAsgCw0BC0EAIQkMAQsgA0G8AWoiEkEQaiEVAkADQCADIAtBAWsiCzYCSCAWIAtBDGxqIgQoAgAiDkGAgICAeEYEQCALIQkMAwsgBCkCBCIapyIKIBpCIIinQRxsaiEPAkACQAJAIBpCgICAgBBUBEAgCiEEDAELIAohBgNAIAZBHGohBCAGKAIEIgVBAkYNASAGKAIAIRMgFSAGQRhqKAIANgIAIBIgBv0AAgj9CwIAIAMgBTYCuAEgEiEGIAMoAswBIhAhCCAQQQVJIhdFBEAgAygCvAEhCCADKALAASEGCwJAIBNBf0YNAAJAIAhBACAIIAIgCGoiFE0bIgxB/////wNLDQAgDEECdCIFQf3///8HTw0AQQAhBwJAIAVFBEBBBCENQQAhDAwBCyAFEHEiDUUNCwsCQCACIBRPDQBBACEJIAIhBSAIQQRPBEAgAv0R/QwAAAAAAQAAAAIAAAADAAAA/a4BISwgDSEFIAhBfHEiCSEHA0AgBSAs/QsCACAFQRBqIQUgLP0MBAAAAAQAAAAEAAAABAAAAP2uASEsIAdBBGsiBw0ACyAJIAgiB0YNASACIAlqIQULIA0gCUECdGohBwNAIAcgBTYCACAHQQRqIQcgFCAFQQFqIgVHDQALIAghBwsgACgCECAAKAIUIBMgDSAHENQCIAxFDQEgDSAMQQJ0QQQQogcMAQtB4P/GABD/BwALIAgEQCAIQQJ0IQcgAkECdCEFA0AgBigCACEIIAMoApABIAJGBEAgA0GQAWpBrOLBABCLBgsgBkEEaiEGIAMoApQBIAVqIAg2AgAgAyACQQFqIgI2ApgBIAVBBGohBSAHQQRrIgcNAAsLIBdFBEAgAygCwAEgEEECdEEEEKIHCyAPIAQiBkcNAAsMAQsgDyAEa0EcbiEGIAQgD0YNAANAIARBGGooAgAiBUEFTwRAIARBDGooAgAiB0EEaygCACIIQXhxIgkgBUECdCIFQQRBCCAIQQNxIggbakkNAyAIQQAgCSAFQSdqSxsNBSAHEKICCyAEQRxqIQQgBkEBayIGDQALCyAOBEAgCiAOQRxsQQQQogcLQQAhCSALRQ0DDAELCwwGCwwGCyAAIAMoApQBIgQgAhCJAiADKAKQASICBEAgBEEEaygCACIGQXhxIgUgAkECdCICQQRBCCAGQQNxIgYbakkNBSAGQQAgBSACQSdqSxsNBiAEEKICCwJAIAMoAuQBIgJFDQAgAiACQQN0IgRqQRFqIgJFDQAgAygC4AEgBGtBCGsgAkEIEKIHCyAJBEBBACEMA0AgFiAMQQxsaiIFKAIEIQQgBSgCCCIGBEAgBCECA0AgAkEYaigCACIHQQVPBEAgAkEMaigCACIIQQRrKAIAIgpBeHEiCyAHQQJ0IgdBBEEIIApBA3EiChtqSQ0JIApBACALIAdBJ2pLGw0KIAgQogILIAJBHGohAiAGQQFrIgYNAAsLIAUoAgAiAgRAIARBBGsoAgAiBkF4cSIFIAJBHGwiAkEEQQggBkEDcSIGG2pJDQcgBkEAIAUgAkEnaksbDQggBBCiAgsgDEEBaiIMIAlHDQALCyADKAJAIgIEQCAWQQRrKAIAIgRBeHEiBiACQQxsIgJBBEEIIARBA3EiBBtqSQ0FIARBACAGIAJBJ2pLGw0GIBYQogILIAMoAjQiAkUNACARQQRrKAIAIgRBeHEiBiACQQV0IgJBBEEIIARBA3EiBBtySQ0EIARBACAGIAJBJ2pLGw0FIBEQogILIAAoAggiCgRAQQwhBUEAIQYDQAJAAn8CQAJAAn8CQAJAIAAoAggiAiAGSwRAIAAoAgQgBWoiCy8BACIEQf//AXEiDEUNASAEQf8HcSECIARBgIACcSEHIARBgPgBcSIIQYD4AUciDUUEQCAHQRB0IglBgICA/AdyIAJFDQQaIAkgAkENdHJBgICA/gdyDAQLIAdBEHQhCSAIRQ0CIAhBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAJcgwDCyAGIAJB7LvHABCMBwALIARBEHS+QwAAgD9eDQIMBQsgAiACZ0EQayIRQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIBFBF3Rrcgu+QwAAgD9eRQ0DIAwNAQsgBEEQdAwBCyANRQRAIAdBEHQiBEGAgID8B3IgAkUNARogBCACQQ10ckGAgID+B3IMAQsgB0EQdCIEIAhBDXRBgICA/ABxIAJBDXRyQYCAgMADanIgCA0AGiACIAJnQRBrIgJB//8DcUEIanRB////A3EgBEGAgIDYA3IgAkEXdGtyC0MAAIA/IQG+IjBDAACAP14EQCAwEMYFQ1T4LUCUQwAAgD+SkUMAAIC/kkMAAIA+lEMAAIA/kiEBC0MAAABAQwAAgD8gASABQwAAgD9dGyIBIAFDAAAAQF4bvCIHQf///wNxIQggB0GAgICAeHEhBAJAIAdBgICA/AdxIgJBgICA/AdGBEAgCEENdiAEQRB2ckGABEEAIAgbckGA+AFyIQQMAQsgBEEQdiEEIAJBgICAuARNBEAgAkGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgAkENdiAIQQ12akGAgAFqIARyaiEEDAILIAJBgICAmANJDQEgCEGAgIAEciIHQf4AIAJBF3YiCGt2IQIgB0EdIAhrIgh2QQFxBH8gAkEDIAh0QQFrIAdxQQBHagUgAgsgBHIhBAwBCyAEQYD4AXIhBAsgCyAEOwEACyAFQRhqIQUgCiAGQQFqIgZHDQALCyADQQA2AowBIANCgICAgMAANwKEASADQYQBakGowcEAEIsGIAMoAogBQQA2AgBBASEGIANBATYCjAEgA0KAgICAwAA3AmAgA0IANwJoQQQQcSICRQ0AIAJBADYCACADQeAAakG4wcEAEKQGIAMoAmQgAygCbCIFIAMoAmhqIgQgAygCYCIHQQAgBCAHTxtrQQxsaiIEQQE2AgggBCACNgIEIARBATYCACADIAVBAWo2AmwgAygCbCICRQ0CIANB0ABqrUKAgICAEIQhHSADQUBrrSIaQoCAgIAQhCEfIANBNGqtQoCAgIDQAYQhHiAaQoCAgIDQAYQhICADQbgBaq1CgICAgJAChCEhIANBkAFqrUKAgICAoAKEISIgA0GAAWqtQoCAgICwAoQhIyADQZwCaiEWIANB6AFqIQwgA0HkAWohCyADQZgBaiENIANBvAFqIRMgA0GEAmohEQJAA0AgAyACQQFrNgJsIAMgAygCaCICQQFqIgQgAygCYCIGQQAgBCAGTxtrNgJoIAMoAmQgAkEMbGoiAigCACISQYCAgIB4Rg0DIAIpAgQhGiADQQA2AvgCIANCgICAgMAANwLwAiAapyEGIBpCHoinQfz///8HcSICBEAgAiAGaiEPQQAhCkEEIQUgBiEJA0AgCiECQwAAgD8hAQJ/AkAgCSgCACIHIAAoAggiBEkEQCAAKAIEIAdBGGxqIgQtABMiCCAELQASIgogBC0AESIOIAogDksbIgogCCAKSxsiCAR9QwAAQMEgACoCRCAALQBYQQJGIgobIjBDAAAQQSAAKgJIIAobIDCTQwAAfkOVIAhBAWtB/wFxs5SSEIkEIjAgMJIFQwAAAAALITAgBEEMai8BACIIQf//AXFFBEAgCEEQdAwDCyAIQf8HcSEEIAhBgIACcSEKIAhBgPgBcSIIQYD4AUYEQCAKQRB0IghBgICA/AdyIARFDQMaIAggBEENdHJBgICA/gdyDAMLIApBEHQhCiAIRQ0BIAhBDXRBgICA/ABxIARBDXRyQYCAgMADaiAKcgwCCyAHIARB3LvHABCMBwALIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAKQYCAgNgDciAEQRd0a3ILviIxQwAAgD9eBEAgMRDGBUNU+C1AlEMAAIA/kpEhAQsgAygC8AIgAkYEQCADQfACakHIlcEAEPkFIAMoAvQCIQULIAUgAkEDdGoiBCAHNgIEIAQgMCABlCIBOAIAIAMgAkEBaiIKNgL4AgJAIAJFBEBBACEEDAELIAEgAVwEQANAAkAgBSACQQFrIg5BAXYiBEEDdGoiCCoCACIwIDBbIAEgMF9FcQ0AIAcgCEEEaigCAEsNACACIQQMAwsgBSACQQN0aiAIKQIANwIAIAQhAiAOQQJPDQAMAgsACwNAIAUgAkEBayIOQQF2IgRBA3RqIggqAgAiMCAwWyABIDBfRXFBfyABIDBgGyIQQQBMIAcgCEEEaigCAE0gEBsEQCACIQQMAgsgBSACQQN0aiAIKQIANwIAIAQhAiAOQQFLDQALCyAFIARBA3RqIgIgBzYCBCACIAE4AgAgCUEEaiIJIA9HDQALCyASBEAgBkEEaygCACICQXhxIgQgEkECdCIFQQRBCCACQQNxIgIbakkNBiACQQAgBCAFQSdqSxsNByAGEKICCwJAAkACQCADKAL4AiIJRQ0AIAMoAowBQf+/BGpBgID8/wNxIRIDQCADIAlBAWsiBDYC+AIgAygC9AIiByAEQQN0aiICKAIEIQYgAioCACEBAkAgBEUEQCABITAgBiEKDAELIAcoAgQhCiAHIAY2AgQgByoCACEwIAcgATgCAEEAIQJBASEFIAlBBE8EQCAEQQJrIgJBACACIARNGyEIQQAhBANAIAcgBEEDdGogByAFIAcgBUEDdGoiAkEIaioCACIxIDFbIDEgAioCACIzYEVxIgQgBEF/IDEgM18bIDMgM1wbIgRBAEwgAkEEaigCACACQQxqKAIATSAEG2oiAkEDdGopAgA3AgAgAkEBdCIPQQFyIQUgAiEEIAggD0sNAAsLAkACQCAJQQJrIAVGBEAgByACQQN0aiAHIAVBA3RqIgIpAgA3AgAgAiAGNgIEIAIgATgCACAFIQIMAQsgByACQQN0aiIEIAY2AgQgBCABOAIAIAINAEEAIQQMAQsgASABXARAA0ACQCAHIAJBAWsiCEEBdiIEQQN0aiIFKgIAIjEgMVsgASAxX0VxDQAgBiAFQQRqKAIASw0AIAIhBAwDCyAHIAJBA3RqIAUpAgA3AgAgBCECIAhBAk8NAAwCCwALA0AgByACQQFrIghBAXYiBEEDdGoiBSoCACIxIDFbIAEgMV9FcUF/IAEgMWAbIglBAEwgBiAFQQRqKAIATSAJGwRAIAIhBAwCCyAHIAJBA3RqIAUpAgA3AgAgBCECIAhBAUsNAAsLIAcgBEEDdGoiAiAGNgIEIAIgATgCAAsgA0GQAWogACgCECAAKAIUIAoQ5wIgAygCjAEhAgJAAkAgAygCtAEiBEEJSSIGRQRAIAMoApQBIAJqIgggEksNAQwCCyACIARqIgggEk0NAQsgA0HwAmogMCAKEPEEIAMgIDcDUCADIAKzQwAAgDeUOAJAIANCATcC7AEgA0EBNgLkASADQfjBwQA2AuABIAMgA0HQAGo2AugBIANBuAFqIANB4AFqEOwDIAMoArgBIgIEQCADKAK8ASIFQQRrKAIAIgdBeHEiCEEEQQggB0EDcSIHGyACakkNCyAHQQAgCCACQSdqSxsNDCAFEKICCyAGRQRAIAMoApgBIgJBBGsoAgAiBkF4cSIFIARBAnQiBEEEQQggBkEDcSIGG2pJDQsgBkEAIAUgBEEnaksbDQwgAhCiAgsgAygC+AIiAkUNAkMAABBBIAAqAkggAC0AWEECRiIEG0MAAEDBIAAqAkQgBBsiMJNDAAB+Q5UhMSADKAL0AiIEIAJBA3QiBWohEiAAKAIEIQ8gACgCCCEH/QwAAID/AACA/wAAgP8AAID/IS39DAAAgH8AAIB/AACAfwAAgH8hLkEAIQYCQAJAAkACQAJAA0AgBCAGakEEaigCACICIAdPDQEgDyACQRhsaiICQRFqLwAAIAJBE2otAAAiCEEQdHIiCUEIdiEKQwAAAAAhMkMAAAAAITQgCUH/AXEEQCAwIDEgCUEBa0H/AXGzlJIQiQQhNAsgCkH/AXEEQCAwIDEgCkEBa0H/AXGzlJIQiQQhMgsgCAR9IDAgMSAIQQFrQf8BcbOUkhCJBAVDAAAAAAshOEMAAIA/IAJBFGovAQAiCEEIdrP9EyAIIAJBFmotAAAiCUEQdHJB/wFxs/0gAf0MAAB/QwAAf0MAAH9DAAB/Q/3nASIsICz95AH9DAAAgL8AAIC/AACAvwAAgL/95AEiLP0fASI3i5MgLP0fACI5i5MiM4xDAAAAABDgCCEBIAmzQwAAf0OVQwAAAD+UQ9sPSUCUIjUQmQIhNiA1EJsCITUgLSAC/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIi8gOP0TIDT9IAAgMv0gAf0MbxKDOm8SgzpvEoM6bxKDOv3rAf0MAADAPwAAwD8AAMA/AADAP/3mASItICz9DQgJCgsICQoLCAkKCwABAgNDAACAPyA2IDcgASABjCI0ICz9DAAAAAAAAAAAAAAAAAAAAAD9Rv1NIiz9xwH9GwJBAXEbkiIyIDMgM5QgMiAylCA5IAEgNCAs/RsAQQFxG5IiMiAylJKSkSI0lZQiASABIAGSIjeUIjkgNiAyIDSVlCIyIDIgMpIiOJQiOpKT/RMgASA2IDMgNJWUIjYgNpIiM5QiNCA1IDiUIjuS/SAAIDIgM5QiMiA1IDeUIjeT/SAB/eAB/eYBIC0gLP0NBAUGBwQFBgcEBQYHAAECAyAyIDeS/RMgASA4lCIBIDUgM5QiNZP9IABDAACAPyA5IDYgM5QiM5KT/SAB/eAB/eYBIC0gLP0NAAECAwABAgMAAQIDAAECAyA0IDuT/RNDAACAPyA6IDOSk/0gACABIDWS/SAB/eAB/eYB/eQB/eQBIiz95AH96wEhLSAuIC8gLP3lAf3qASEuIAUgBkEIaiIGRw0ACyAtIC795QEiLCAsICz9DQgJCgsICQoLAAECAwABAgP96wEiLyAvICz9DQQFBgcAAQIDAAECAwABAgP96wH9HwAgLCAsICz9DQgJCgsICQoLBAUGBwQFBgf96gEiLyAvICz9DQQFBgcAAQIDAAECAwABAgP96gH9HwBDAABAQJRgRQRAIANCBDcC6AIgA0IANwLgAiADQoCAgIDAADcC2AIgA0IENwLQAiADQgA3AsgCIANCgICAgMAANwLAAiADQgQ3ArgCIANCADcCsAIgA0KAgICAwAA3AqgCIANCBDcCoAIgA0IANwKYAiADQoCAgIDAADcCkAIgLiAt/eQB/QwAAAA/AAAAPwAAAD8AAAA//eYBIiz9HwAhASAs/R8CITAgLP0fASExQQAhAiADKALwAiEHA0AgAiAEakEEaigCACIGIAAoAggiCE8NAyADQZACaiAWIAAoAgQgBkEYbGoiCCoCACABXRtBAEEYIAgqAgQgMV0baiIJQQhBOCAIKgIIIDBdIggbaiISKAIAIgogCUEAQTAgCBtqIg8oAgBGBEAgD0GwwsEAEIsGCyAJQQRBNCAIG2ooAgAgEiAKQQFqNgIAIApBAnRqIAY2AgAgBSACQQhqIgJHDQALIAcEQCAEQQRrKAIAIgJBeHEiBiAHQQN0IgVBBEEIIAJBA3EiAhtqSQ0RIAJBACAGIAVBJ2pLGw0SIAQQogILQSAQcSICRQ0NIAIgAygCmAI2AgAgAiADKAKkAjYCBCACIAMoArACNgIIIAIgAygCvAI2AgwgAiADKALIAjYCECACIAMoAtQCNgIUIAIgAygC4AI2AhggAiADKALsAjYCHCADQQg2AsABIAMgAjYCvAEgA0EINgK4ASADICE3A5ABIANCATcC7AEgA0ECNgLkASADQZDCwQA2AuABIAMgA0GQAWo2AugBIANB4AFqEOsCIAMoArgBIgIEQCADKAK8ASIEQQRrKAIAIgZBeHEiBSACQQJ0IgJBBEEIIAZBA3EiBhtqSQ0RIAZBACAFIAJBJ2pLGw0EIAQQogILQeAAEHEiAkUNDSACIANBkAJqQeAA/AoAACACKAIAIQQgAkGAgICAeDYCACAEQYCAgIB4Rg0EIAJBBGoiECkCACEaIAIoAgwhByACQYCAgIB4NgIMIAdBgICAgHhGDQQgAikCECEbIAIoAiQhCCACQYCAgIB4NgIkIAhBgICAgHhGDQQgAikCKCEcIAIoAhghCSACQYCAgIB4NgIYIAlBgICAgHhGDQQgAikCHCEkIAIoAkghCiACQYCAgIB4NgJIIApBgICAgHhGDQQgAikCTCElIAIoAlQhEiACQYCAgIB4NgJUIBJBgICAgHhGDQQgAikCWCEmIAIoAjwhDyACQYCAgIB4NgI8IA9BgICAgHhGDQQgAikCQCEnIAIoAjAhDiACQYCAgIB4NgIwIA5BgICAgHhGDQQgAikCNCEoIAMoAmwiBiADKAJgIgVGBEAgA0HgAGpBoMLBABCkBiADKAJgIQUgAygCbCEGCyADKAJkIAMoAmggBmoiFCAFQQAgBSAUTRtrQQxsaiIFIBo3AgQgBSAENgIAIAMgBkEBaiIGNgJsIAMoAmAiBSAGRgRAIANB4ABqQaDCwQAQpAYgAygCYCEFIAMoAmwhBgsgAygCZCADKAJoIAZqIgQgBUEAIAQgBU8ba0EMbGoiBCAbNwIEIAQgBzYCACADIAZBAWoiBjYCbCADKAJgIgUgBkYEQCADQeAAakGgwsEAEKQGIAMoAmAhBSADKAJsIQYLIAMoAmQgAygCaCAGaiIEIAVBACAEIAVPG2tBDGxqIgQgHDcCBCAEIAg2AgAgAyAGQQFqIgY2AmwgAygCYCIFIAZGBEAgA0HgAGpBoMLBABCkBiADKAJgIQUgAygCbCEGCyADKAJkIAMoAmggBmoiBCAFQQAgBCAFTxtrQQxsaiIEICQ3AgQgBCAJNgIAIAMgBkEBaiIGNgJsIAMoAmAiBSAGRgRAIANB4ABqQaDCwQAQpAYgAygCYCEFIAMoAmwhBgsgAygCZCADKAJoIAZqIgQgBUEAIAQgBU8ba0EMbGoiBCAlNwIEIAQgCjYCACADIAZBAWoiBjYCbCADKAJgIgUgBkYEQCADQeAAakGgwsEAEKQGIAMoAmAhBSADKAJsIQYLIAMoAmQgAygCaCAGaiIEIAVBACAEIAVPG2tBDGxqIgQgJjcCBCAEIBI2AgAgAyAGQQFqIgY2AmwgAygCYCIFIAZGBEAgA0HgAGpBoMLBABCkBiADKAJgIQUgAygCbCEGCyADKAJkIAMoAmggBmoiBCAFQQAgBCAFTxtrQQxsaiIEICc3AgQgBCAPNgIAIAMgBkEBaiIGNgJsIAMoAmAiBSAGRgRAIANB4ABqQaDCwQAQpAYgAygCYCEFIAMoAmwhBgsgAygCZCADKAJoIAZqIgQgBUEAIAQgBU8ba0EMbGoiBCAoNwIEIAQgDjYCACADIAZBAWo2AmwgAigCACIEQYCAgIB4ckGAgICAeEcEQCAQKAIAIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCDCIEQYCAgIB4ckGAgICAeEcEQCACKAIQIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCGCIEQYCAgIB4ckGAgICAeEcEQCACKAIcIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCJCIEQYCAgIB4ckGAgICAeEcEQCACKAIoIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCMCIEQYCAgIB4ckGAgICAeEcEQCACKAI0IgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCPCIEQYCAgIB4ckGAgICAeEcEQCACKAJAIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCSCIEQYCAgIB4ckGAgICAeEcEQCACKAJMIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAigCVCIEQYCAgIB4ckGAgICAeEcEQCACKAJYIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDREgBUEAIAcgBEEnaksbDRIgBhCiAgsgAkEEaygCACIEQXhxQeQAQegAIARBA3EiBhtJDRAgBkEAIARBiAFPGw0FIAIQogIMCQsgAyAuIC395AH9DAAAAD8AAAA/AAAAPwAAAD/95gH9CwQAIANBAEEBQQIgLP0fASIBICz9HwIiMGAbIgIgMCAs/R8AIjFfGyACIAEgMV8bIgI6AIABIAMgAyACQQJ0cioCADgCNCADIBI2AsQBIAMgAygC8AI2AsABIAMgBDYCvAEgAyAENgK4ASADIAA2ApQBIAMgA0E0ajYCmAEgAyADQYABajYCkAEgA0HgAWoiBiADQbgBaiIFIANBkAFqEJcEIAMpA+ABIRwgAykC7AEhGiADKAL0ASECIAMoAugBIQQgAyAs/QsEkAEgAyAENgJAIAMgAjYCUCADQQY2ArwBIANB7MLBADYCuAEgA0IFNwLEASADIB03A4ACIAMgHzcD+AEgAyAeNwPwASADICI3A+gBIAMgIzcD4AEgAyAGNgLAASAFEOsCAkAgAiAETQRAIBohGyACIQUgHCEaIAQhAgwBCyAcIRsgBCEFCyADIAI2AvABIANBAjYC5AEgAyAFNgL8ASADIBo3AugBIAMgGzcC9AFBASECAkAgGqciBEGAgICAeEYNACADKQLsASEaIAMoAmwiAiADKAJgIgZGBEAgA0HgAGpBnMPBABCkBiADKAJgIQYgAygCbCECCyADKAJkIAMoAmggAmoiBSAGQQAgBSAGTxtrQQxsaiIGIBo3AgQgBiAENgIAIAMgAkEBajYCbEECIQIgG6ciBEGAgICAeEYNACADKQL4ASEaIAMoAmwiBiADKAJgIgVGBEAgA0HgAGpBnMPBABCkBiADKAJgIQUgAygCbCEGCyADKAJkIAMoAmggBmoiByAFQQAgBSAHTRtrQQxsaiIFIBo3AgQgBSAENgIAIAMgBkEBajYCbAsgAyACNgLgASADQeABahCWBgwICyACIAdB3LvHABCMBwALIAYgCEHcu8cAEIwHAAtBjI3IAEEuQbyNyAAQ6wcMCQtBvMPBABDdCQALDAsLQQAhBSADQQA2AuABIANBADYChAJBCCEHAkACQAJ/IAggAmsiBEEAIAQgCE0bIgRBCUkEQCALIQkgEQwBCyADQRBqIANB4AFqQX8gBEEBa2d2QQFqEOgDIAMoAhAiBEGBgICAeEcEQCAEDQpB2JXHAEERQdTMxwAQ6wcACyADKAKEAiIHQQlJBEAgByEFIAshCUEIIQcgEQwBCyADKALkASEFIAMoAugBIQkgCwsiDiAFIAdJBH8gByAFQX9zaiIEIAggAiACIAhJGyIQIAJrIgYgBCAGSRtBAWoiBEEESwRAIAkgBUECdGohBiAC/RH9DAAAAAABAAAAAgAAAAMAAAD9rgEhLCAEIARBA3EiBEEEIAQbayIPIQQDQCAGICz9CwIAIAZBEGohBiAs/QwEAAAABAAAAAQAAAAEAAAA/a4BISwgBEEEayIEDQALIAUgD2ohBSACIA9qIQILIAkgBUECdGohBgNAIAIgEEYNAiAGIAI2AgAgBkEEaiEGIAJBAWohAiAHIAVBAWoiBUcNAAsgBwUgBQs2AgAgAiAITw0BA0ACfyADKAKEAiIEQQlPBEAgAygC5AEhBiADKALoASEHIAsMAQsgBCEGIAshB0EIIQQgEQshBSAEIAZGBH8gA0HgAWoQzQYgAygC6AEhByALIQUgAygC5AEFIAYLQQJ0IAdqIAI2AgAgBSAFKAIAQQFqNgIAIAJBAWoiAiAIRw0ACwwBCyAOIAU2AgALIANB2AFqIANBgAJqKQIANwMAIANByAFqIANB8AFq/QACAP0LAwAgAyAD/QAC4AH9CwO4ASADKALcASIIIQYgACgCECAAKAIUIAogCEEJSSIQBH8gEwUgAygCvAEhBiADKALAAQsgBhDUAiADKAKUASEEIAMoApABIQIgDEEYaiANQRhqKAIANgIAIAxBEGogDUEQaikCADcCACAMIA39AAIA/QsCACADIAI2AuABIAMgBCADKAK0ASIHIAdBCEsiAhsiDzYCjAIgAyAHQQAgAhs2AoQCIANBACAEIAIbNgLkASAPBEAgAygC6AEgCyACGyEUQQAhCiADKAKMASEJA0AgAyAKIgJBAWoiCjYCiAIgFCACQQJ0aigCACEGIAMoAoQBIAlGBEAgA0GEAWpByMHBABCLBgsgAygCiAEgCUECdGogBjYCACADIAlBAWoiCTYCjAFDAACAPyEBAn8CQCAAKAIIIgIgBksEQCAAKAIEIAZBGGxqIgItABMiBCACLQASIgUgAi0AESIOIAUgDksbIgUgBCAFSxsiBAR9QwAAQMEgACoCRCAALQBYQQJGIgUbIjBDAAAQQSAAKgJIIAUbIDCTQwAAfkOVIARBAWtB/wFxs5SSEIkEIjAgMJIFQwAAAAALITAgAkEMai8BACIEQf//AXFFBEAgBEEQdAwDCyAEQf8HcSECIARBgIACcSEFIARBgPgBcSIEQYD4AUYEQCAFQRB0IgRBgICA/AdyIAJFDQMaIAQgAkENdHJBgICA/gdyDAMLIAVBEHQhBSAERQ0BIARBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAFcgwCCyAGIAJB3LvHABCMBwALIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAFQYCAgNgDciACQRd0a3ILviIxQwAAgD9eBEAgMRDGBUNU+C1AlEMAAIA/kpEhAQsgAygC+AIiAiADKALwAkYEQCADQfACakHIlcEAEPkFCyADKAL0AiIFIAJBA3RqIgQgBjYCBCAEIDAgAZQiATgCACADIAJBAWo2AvgCAkAgAkUEQEEAIQQMAQsgASABXARAA0ACQCAFIAJBAWsiFUEBdiIEQQN0aiIOKgIAIjAgMFsgASAwX0VxDQAgBiAOQQRqKAIASw0AIAIhBAwDCyAFIAJBA3RqIA4pAgA3AgAgBCECIBVBAk8NAAwCCwALA0AgBSACQQFrIhVBAXYiBEEDdGoiDioCACIwIDBbIAEgMF9FcUF/IAEgMGAbIhdBAEwgBiAOQQRqKAIATSAXGwRAIAIhBAwCCyAFIAJBA3RqIA4pAgA3AgAgBCECIBVBAUsNAAsLIAUgBEEDdGoiAiAGNgIEIAIgATgCACAKIA9HDQALCyAHQQlPBEAgAygC6AEiAkEEaygCACIEQXhxIgYgB0ECdCIFQQRBCCAEQQNxIgQbakkNBCAEQQAgBiAFQSdqSxsNCyACEKICCyAQRQRAIAMoAsABIgJBBGsoAgAiBEF4cSIGIAhBAnQiBUEEQQggBEEDcSIEG2pJDQogBEEAIAYgBUEnaksbDQsgAhCiAgsgAygC+AIiCQ0ACwsgAygC8AIiAkUNACADKAL0AiIEQQRrKAIAIgZBeHEiBSACQQN0IgJBBEEIIAZBA3EiBhtqSQ0HIAZBACAFIAJBJ2pLGw0DIAQQogILIAMoAmwiAg0BDAQLCwwECwwECwALIAMoAowBIQYLIAMgACgCCCICNgK4ASADIAY2ApABIAIgBkcEQCADQQA2AuABQQAgA0GQAWogA0G4AWogA0HgAWpBrMPBABD1BwALIAAgAygCiAEiACAGEIkCIANB4ABqEOsDAkAgAygChAEiAgRAIABBBGsoAgAiBEF4cSIGIAJBAnQiAkEEQQggBEEDcSIEG2pJDQIgBEEAIAYgAkEnaksbDQEgABCiAgsgA0GAA2okAA8LDAELQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0GY+scAQdYAIANB/ABqQaTuwQBBtO7BABDgBgAL3MwBA0R/E34EeyMAQcAGayIEJAAgASABNQIEIlc3AwhBqJDIACkDACJGQgiIIkmnIhxBCHQgRqciCkH/AXEiJHIhLCBGQv8BgyFMQuSRwYCwAiFVIApBCHYhNCAEQbAGaq1CgICAgCCEIVYgBEGQBmqtQoCAgIAghCFYIEZCIIinIhNBBGshQyBGQhCIpyElIARB1wRqITwgBEH4BWohRCAEQfQBaiFFIARB2AJqIT0gBEG4A2pBAXIhNyAEQYACaiE+IARB4AFqQQlyIT8gBEHDA2ohQEGGgICAeCEtIFchTgJAAkACQAJAAkADQAJAIAQCfgJAAkACQAJAAkBBgBAQcSIiRQ0AICJBBGsiOS0AAEEDcQRAICJBAEGAEPwLAAtBACEFQQMhDEEBIRZBBCEGAkACQAJAAkACQANAIAYgBUF/cyIDaiIQQQNLDQIgAyAMIgJqIgxBBE8NAQJAIAwtAKCOQSIIIBAtAKCOQSIDTwRAIAMgCE8EQEEAIAVBAWoiAyADIBZGIgMbIQUgAiAWQQAgAxtrIQwMAgsgBiAMayEWQQAhBQwBCyACQQFrIQxBASEWQQAhBSACIQYLIAUgDEkNAAtBACEFQQMhDEEBIQdBBCECAkACQAJAAkACQAJAAkACQANAIAwhAyACIAVBf3MiCGoiD0EDSw0BIAMgCGoiDEEDSw0CAkAgDC0AoI5BIhAgDy0AoI5BIghNBEAgCCAQTQRAQQAgBUEBaiIMIAcgDEYiDBshBSADIAdBACAMG2shDAwCCyACIAxrIQdBACEFDAELIANBAWshDEEBIQdBACEFIAMhAgsgBSAMSQ0AC0EEIAYgAiACIAZLIgIbIhJrIgZB/v///wdxDQQgEkEFTw0HIBIgFiAHIAIbIhprIQIgEiAaSQ0GIAYgGksNBEEAIR8gBkEDSw0FIBJBoI7BAGohAyACQaCOwQBqIQUgBkECSQ0CIAUvAAAgAy8AAEcNBCADQQJqIQMgBUECaiEFDAMLIA9BBEGQ/MQAEIwHAAsgDEEEQaD8xAAQjAcACyASQQRGDQILIAUtAAAgAy0AAEYNAQsgBiASIAYgEksbIRpBASEfCyBOQoAQfSJGQgAgRiBOWBshS0EEIBIgEkEETRshLyAiQQVrISkgEkEDaiELQQEhBSASQQFqITogEkEEayEbIBJBA2shHSASQQJrIRggEkEBayEgIBJBf3MhQSAEQQI2ApADIBJBAmohFEGGgICAeCEPA0AgAyEHIAghDiANIRAgASgCACEJIAEoAgQiFa0hTQNAIEsgTloNBkJ/IEtCgBB8IkYgRiBLVBsiRiBLWA0GAkACQAJAIE4gRiBGIE5WGyBLfSJGpyICQYAQTQRAAkACQCAFQQFxBEAgAQJ+AkAgAiAVIEsgTSBLIE1UG6ciA2tNBEAgAyAJaiEDIAJBAUcEQCACBEAgIiADIAL8CgAAC0EEIQUMAgsgIiADLQAAOgAAQQQhBQwBCyAKIQUgTSBMQgRSDQEaCyBGQv8fgyBLfAs3AwggBUH/AXEiA0EERgRAIAIhAwwCCyBJQhiIpyEIIEmnIQwCQAJAAkAgA0EBaw4DAQACEQsgCC0ACCEMCyAMQf8BcUElRg0ODA8LIAgtAAhBJUcNDiAIKAIAIQogCEEEaigCACICKAIAIgEEQCAKIAERAwALIAIoAgQiAwRAIApBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIANqSQ0dIAFBACACIANBJ2pLGw0cIAoQogILIAhBBGsoAgAiAUF4cSICQRBBFCABQQNxIgEbSQ0cIAFBACACQTRPGw0bIAgQogIMDQsgAiAQIgNJDQELIANBBEkNAyADQRBJDQICQAJAIB8EQCADIQwDQAJ/AkAgAyAMQQRrIg1LBEBCASANICJqLQAAIgJBP3GthkLgkASDQgBSDQEgDQwCCyANIANB+JjIABCMBwALAkACQCAgQQNNBEACQCAMQQVrIgUgEmoiBiADTw0AIBIhCCAgQaCOwQBqLQAAIAYgImotAABHDQMgIEUNAiAFICBqIgYgA08NACAgIQggGEGgjsEAai0AACAGICJqLQAARw0DIBhFDQIgBSAYaiIGIANPDQAgGCEIIB1BoI7BAGotAAAgBiAiai0AAEcNAyAdRQ0CIAUgHWoiBiADTw0AIB0hCCAbQaCOwQBqLQAAIAYgImotAABHDQMgG0UNAiAFIBsiCGoiBiADSQ0DCyAGIANBmJnIABCMBwALIBINBQtBACEIIAJB0ABHDQAgEkEETw0KIA0gEmoiAiADTw0FAkAgEkGgjsEAai0AACACICJqLQAARw0AIDpBBEYNCyANIDpqIgIgA08NBiA6QaCOwQBqLQAAIAIgImotAABHDQAgFEEERg0LIA0gFGoiAiADTw0GIBQiBUGgjsEAai0AACACICJqLQAARgRAIAtBBEYNDCALIA1qIgIgA08NByALIgVBoI7BAGotAAAgAiAiai0AAEYNDAsgBUEERg0LCyAMIBprDAELIAwgQWogCGoLIgxBBE8NAAsMBgtBBCEWIAMhAgNAAn8CQCADIAJBBGsiDUsEQEIBIA0gImotAAAiI0E/ca2GQuCQBINCAFINAUEEIRYgDQwCCyANIANBuJnIABCMBwALIAIgImohJiAWIBIgEiAWSxtBAWohDAJAAkACQAJAAkADQCAMQQFGDQEgDEEBayIFQQRLDQIgAyACIAxqQQZrIghLBEAgDEGejsEAaiAMICZqIQggBSEMLQAAIAhBBmstAABGDQEMBgsLIAggA0HYmcgAEIwHAAtBACEFICNB0ABHDQMgEiAWTw0MIAIgOWohCCASIQwDQCAMIC9GDQIgDCANaiADTw0DIAxBoI7BAGotAAAgCCAMai0AAEYEQCAWIAxBAWoiDEYNDgwBCwsgAiAaIhZrDAQLIAxBAmtBBEHImcgAEIwHAAsgL0EEQeiZyAAQjAcACyADIAIgEmpBBGsiACAAIANJGyADQfiZyAAQjAcAC0EEIRYgAiBBaiAFagsiAkEETw0ACwwFCyAgQQRBiJnIABCMBwALIAMgDCASakEEayIAIAAgA0kbIANBqJnIABCMBwALQQAgECACQfCbyAAQ6gcAC0EAIAJBgBBBvIrBABDqBwALIAMgImohAkEAIQxBASEFA0AgAiAFakECay0AACAMQQF0aiEMIAVBAWsiBUF9Sg0ACyADIClqIQUDQCAFQQFqIQICQCAMQaoCRw0AIAJBoI7BAEEEELsGRQ0AIAIgImshDQwDCyACICJNDQEgBS0AACAMQQF0IAVBBGotAABBBHRraiEMIAVBAWshBQwACwALIEtQDQdCfyBLQgN8IkYgRiBLVBsiR0KAEH0iRkIAIEYgR1gbIkYgTiBGIE5UGyFLQQEhBQwBCwsCQCABAn4CQAJAAn8CQAJAAkAgFSBLIA2tfCJGIE0gRiBNVBunIgJrQRVNBEACQAJAAkACQCBMQgRRBEAgASBGQhZ8NwMIIBwhDCAkQQFrDgQCAQEGAwsgASBNNwMIIBwhDCAkQQFrDgQBAAAFAgsgEy0ACCEMCyAMQf8BcUElRg0BCyAEIBM2AsADIAQgLDYCvAMgBEGBgICAeDYCuAMMAwsgBCBWNwOQBiAEQRg2ArQGIARBiI7BADYCsAYgBEIBNwLcBCAEQQE2AtQEIARBuJ7HADYC0AQgBCAEQZAGajYC2AQgBEG4A2ogBEHQBGoQ7AMgJEEDRw0CIBMoAgAhBiATQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCIIBEAgBkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgCGpJDR4gAkEAIAMgCEEnaksbDR0gBhCiAgsgQygCACICQXhxIgNBEEEUIAJBA3EiAhtJDR0gAkEAIANBNE8bDRwgExCiAgwCCyABIEZCFnwiSDcDCCACIAlqIgIoAABB0JaVMEYNAgsgBEHAA2pBzI7BACgCADYCACAEQcSOwQApAgA3A7gDCyAELwC5A0EIdCEDIAQtALsDQRh0IQggBC8AwQMgQC0AAEEQdHIhAiAELQDAAyEFIAQtAL8DISogBC8AvQMhFiAELQC8AyEGIAQtALgDISMMBQsgNyACKQAENwAAIDdBCGoiQiACQQxqKAAANgAAIAIoABAhCCAELwC5AyEjIAQvALsDISYgBC8AvQMhFiAELwC/AyERIAQoAMEDIQUgAi8AFCIMrSFKIAwEQCAMEHEiGUUNDiAZQQRrLQAAQQNxRSAMRXJFBEAgGUEAIAz8CwALIAwgFSBIIE0gSCBNVBunIgJrTQRAIAIgCWoiAiAMQQFHDQIaIBkgAi0AADoAAAwDCyAKIQYgSSFHIE0gTEIEUg0EGgwDC0EBIRkgCSBIIE0gSCBNVBunagshAiAMRQ0AIBkgAiAM/AoAAAtCACFHQQQhBgsgSCBKfAs3AwgCfwJAIAZB/wFxIgJBBEcEQCBHQhiIpyEFIEenIQgCQAJAAkACQCACQQFrDgMBAAIDCyAFLQAIIQgLIAhB/wFxQSVHDQEMAwsgBS0ACEElRw0AIAUoAgAhCCAFQQRqKAIAIgMoAgAiAgRAIAggAhEDAAsgAygCBCICBEAgCCACIAMoAggQogcLIAVBBGsoAgAiAkF4cSIDQRBBFCACQQNxIgIbSQ0ZIAJBACADQTRPGw0YIAUQogIMAgsgR0IQiKchKiBHpyEWQQEhIyAFQQh2DAILAkACQAJAAkACQAJAAkACQAJAAkACQAJAIFcgSCBKfFoEQCARQf//A0cgCEF/R3EgRkITWHINBiAVIEZCFH0iUiBNIE0gUlYbpyICa0ETSw0DIExCBFINASABIEY3AwggJEEERw0CDAQLQRshCCAPQYaAgIB4RgRAQcmRwQAhAwwLC0HJkcEAIQMCQAJAQQEgD0H/////B2ogD0GAgICAeE0bDgIAAQwLIAdB/wFxQQNHDQsgDigCACEGIA5BBGooAgAiAygCACICBEAgBiACEQMACyADKAIEIgIEQCAGIAIgAygCCBCiBwsgDkEMQQQQogdByZHBACEDDAsLIA9BgICAgHhyQYCAgIB4Rg0KIAdB/wFxIChBCHRyIA9BARCiBwwKCyABIE03AwggJEEERg0CCyAcIQYCQAJAAkACQCAkQQFrDgMBAAACCyATLQAIIQYLIAZB/wFxQSVGDQELIAQgEzYCwAMgBCAsNgK8AyAEQYGAgIB4NgK4AwwDCyAEIFg3A/AFIARBHzYClAYgBEHQjsEANgKQBiAEQgE3AtwEIARBATYC1AQgBEG4nscANgLQBCAEIARB8AVqNgLYBCAEQbgDaiAEQdAEahDsAyAkQQNHDQIgEygCACEGIBNBBGooAgAiAygCACICBEAgBiACEQMACyADKAIEIgIEQCAGIAIgAygCCBCiBwsgE0EMQQQQogcMAgsgASBGNwMIIAIgCWoiAigAAEHQlpk4Rg0DCyAEQcADakGoj8EAKAIANgIAIARBoI/BACkCADcDuAMLIAQgBDUAvQMiRz4CtAYgBCAEKAC5AyICNgKwBiAEKACzBiEDIAQtALgDIAJBCHRyIgJBgYCAgHhPBEAgAkGBgICAeEcgA0H/AXFBA0dyDQEgRyBAMQAAQjCGIARBwQNqMwAAQiCGhIRCGIinIhAoAgAhBiAQQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCICBEAgBiACIAMoAggQogcLIBBBDEEEEKIHDAELIAJBgICAgHhyQYCAgIB4Rg0AIAMgAkEBEKIHCyAIrSFHIBENASBGIEd9IkdCACBGIEdaGyFRDAULIDcgAikABDcAACBCIAJBDGooAAA2AAAgUiAEKQC9AyJPWARAQSAhCAJAIA9BhoCAgHhGDQBBgZHBACEDAkACQEEBIA9B/////wdqIA9BgICAgHhNGw4CAAEHCyAHQf8BcUEDRw0GIA4oAgAhBiAOQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCICBEAgBiACIAMoAggQogcLIA5BDEEEEKIHDAELIA9BgICAgHhyQYCAgIB4Rg0FIAdB/wFxIChBCHRyIA9BARCiBwtBgZHBACEDDAQLIAIoABBBAUsNAiAEKAC5AyEGAkAgBCgCkANBAkcEQCAEKALwAiAEQdAEakHEj8EAENACRQ0BIAQoAvgCIgJFDQEgBCgC9AIgAkEBEKIHDAELQYAQEHEiA0UNESADQQRrLQAAQQNxBEAgA0EAQYAQ/AsACyA8/QwAAAAAAAAAAAAAAAAAAAAA/QsAACAEQQI6AOgBID8gBEHQBGoiAkHHAPwKAAAgBEKAEDcCjAMgBCADNgKIAyAEQgA3A4ADIARBADYC+AIgBEKAgICAEDcD8AIgBEEZNgLoAiAEQoCAgIAQNwPgAiAEQRo2ArACIAJBxI/BABDQAgsgPiAEQdAEakGAAfwKAAAgBCBPNwOAAyAEQQA2ApADIAQgUjcD+AEgBCBPNwPwASAEQQA6AOgBIAQgTzcD4AFBhoCAgHghAiAhIQMgHiEQA0AgECEeIAMhISACIQkgBEHQBGogBEHgAWogARD1ASAEKQPYBCFKIAQoAtAEQQFGBEAgBCgC1AQhAyACQYaAgIB4Rg0DAkACQEEBIAJB/////wdqIAJBgICAgHhNGw4CAAEFCyAeQf8BcUEDRw0EICEoAgAhBiAhQQRqKAIAIggoAgAiAgRAIAYgAhEDAAsgCCgCBCICBEAgBiACIAgoAggQogcLICFBDEEEEKIHDAQLIAlBgICAgHhyQYCAgIB4Rg0DIB4gCUEBEKIHDAMLAkACQAJAAkACQAJ/AkACQCBKp0EBcQRAIAEoAgQiA60hRwJAAkACQCADQv////8PIAEpAwgiSiBKQv////8PWhunayICQQAgAiADTRtBN00EQAJAAkACQAJAIExCBFEEQCABIEpCOHw3AwggHCEDICRBAWsOBAIBAQYDCyABIEc3AwggHCEDICRBAWsOBAEAAAUCCyATLQAIIQMLIANB/wFxQSVGDQELIAQgEzYCwAMgBCAsNgK8AyAEQYGAgIB4NgK4AwwDCyAEIFY3A5AGIARBGDYCtAYgBEGsj8EANgKwBiAEQgE3AtwEIARBATYC1AQgBEG4nscANgLQBCAEIARBkAZqNgLYBCAEQbgDaiAEQdAEahDsAyAkQQNHDQIgEygCACEQIBNBBGooAgAiAygCACICBEAgECACEQMACyADKAIEIgIEQCAQIAIgAygCCBCiBwsgE0EMQQQQogcMAgsgBCkD4AQhUCABIEpCOHwiUzcDCCABKAIAIiogSiBHIEcgSlYbp2oiECgAAEHQlpkwRg0CCyAEQcADakHMjsEAKAIANgIAIARBxI7BACkCADcDuAMLIAQtALsDQRh0IAQvALkDQQh0ciErIAQoAsADIQMgBCgCvAMhECAELQC4AyECDAgLIDcgECkABDcAACBCIBBBDGooAAA2AABBACECQYCAgIB4ISsgBCkAuQMiSEIsVARAQRYhA0GDk8EAIRAMCAsgUiBQfSJKQgAgSiBSWBsiVEJ/IEhCDHwiSiBIIEpWG1QEQEEkIQNB35LBACEQDAgLIEinQSxrIhVBAEgNASAQ/QAAKCFaIBD9AAAYIVsgECgAECECIBAoABQhECAENQC5AyFNIAQ1AL0DIUggFUUNAiAVEHEiEUUNGiARQQRrLQAAQQNxRSAVRXJFBEAgEUEAIBX8CwALIAMgUyBHIEcgU1YbpyIDayAVTwRAIAMgKmoiAyAVQQFHDQQaIBEgAy0AADoAAAwFCyAKIQMgSSFKIExCBFINBgwFC0HGkMEAIB4gCUGGgICAeEYiBRshAwJAIA9BhoCAgHhGDQACQAJAQQEgD0H/////B2ogD0GAgICAeE0bDgIAAQILIAdB/wFxQQNHDQEgDigCACEGIA5BBGooAgAiCCgCACICBEAgBiACEQMACyAIKAIEIgIEQCAGIAIgCCgCCBCiBwsgDkEMQQQQogcMAQsgD0GAgICAeHJBgICAgHhGDQAgB0H/AXEgKEEIdHIgD0EBEKIHC0EVICEgBRshCEGAgICAeCAJIAUbIQ8gA0EIdiEoQQAhBSAMRQ0RIBkgDEEBEKIHDBELQZySwQAQ/wcAC0EBIREgKiBTIEcgRyBTVhunagshAyAVRQ0AIBEgAyAV/AoAAAtCACFKQQQhAwsgUyAVrXwhRwsgASBHNwMIAn8CQCADQf8BcSIqQQRHBEAgSkIYiKchAyBKpyICIRACQAJAAkACQCAqQQFrDgMBAAIDCyADLQAIIRALIBBB/wFxQSVHDQEMAwsgAy0ACEElRw0AIAMoAgAhKiADQQRqKAIAIhAoAgAiAgRAICogAhEDAAsgECgCBCICBEAgKiACIBAoAggQogcLIANBDEEEEKIHDAILIAJBCHQgKnIhEEEBDAILAkACfyAGIBBHBEBB64/BACEQQS8MAQsgSEIghiBNhEIMfCBUUQ0BQciPwQAhEEEjCyEDQYCAgIB4IQIgFUUNBCARIBVBARCiBwwECyAEQSBqIFv9HQFCLhDdBgJAQn9CfyAEKQMgIkogWv0dAXwiRyBHIEpUGyAEKQMoQgBSGyBQWARAIFAgT30hUSAJQYaAgIB4Rg0BIA0hECAGIRcgAiE4IBUhNSARITMgRiFOIBYhMiAmIS4gIyEwIFshXCBaIVkCQAJAQQEgCUH/////B2ogCUGAgICAeE0bDgIAARgLIB5B/wFxQQNHDQIgISgCACEXICFBBGooAgAiECgCACIDBEAgFyADEQMACyAQKAIEIgMEQCAXIAMgECgCCBCiBwsgIUEMQQQQogcMAgsgCUGAgICAeHJBgICAgHhGDQEgHiAJQQEQogcMAQsCQCAJQYaAgIB4Rg0AAkACQEEBIAlB/////wdqIAlBgICAgHhNGw4CAAECCyAeQf8BcUEDRw0BICEoAgAhECAhQQRqKAIAIgMoAgAiAgRAIBAgAhEDAAsgAygCBCICBEAgECACIAMoAggQogcLICFBDEEEEKIHDAELIAlBgICAgHhyQYCAgIB4Rg0AIB4gCUEBEKIHC0GakMEAIRBBLCEDQYCAgIB4IQIgFUUNBSARIBVBARCiBwwFCyANIRAgBiEXIAIhOCAVITUgESEzIEYhTiAWITIgJiEuICMhMCBbIVwgWiFZDBQLQaySwQAhEEEzIQNBAAshAiAVRQ0AIBEgFUEBEKIHCyArIAJB/wFxciECCyAJQYaAgIB4Rg0AAkACQEEBIAlB/////wdqIAlBgICAgHhNGw4CAAECCyAeQf8BcUEDRw0BICEoAgAhFSAhQQRqKAIAIh4oAgAiEQRAIBUgEREDAAsgHigCBCIRBEAgFSARIB4oAggQogcLICFBDEEEEKIHDAELIAlBgICAgHhyQYCAgIB4Rg0AIB4gCUEBEKIHDAALAAsCQCBGIEdWBEACQCAEKAKQA0ECRwRAIAQoAvACIARB0ARqQeSNwQAQ0AJFDQEgBCgC+AIiAkUNASAEKAL0AiACQQEQogcMAQtBgBAQcSIDRQ0SIANBBGstAABBA3EEQCADQQBBgBD8CwALIDz9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIARBAjoA6AEgPyAEQdAEaiICQccA/AoAACAEQoAQNwKMAyAEIAM2AogDIARCADcDgAMgBEEANgL4AiAEQoCAgIAQNwPwAiAEQRk2AugCIARCgICAgBA3A+ACIARBGjYCsAIgAkHkjcEAENACCyA+IARB0ARqIgJBgAH8CgAAIAQgRzcDgAMgBEEANgKQAyAEIEY3A/gBIAQgRzcD8AEgBEEAOgDoASAEIEc3A+ABIAIgBEHgAWogARD1ASAEKQPYBCFKIAQoAtAERQ0BIAQoAtQEIQMMAgtBGyEIIA9BhoCAgHhGBEBBrpHBACEDDAQLQa6RwQAhAwJAAkBBASAPQf////8HaiAPQYCAgIB4TRsOAgABBQsgB0H/AXFBA0cNBCAOKAIAIQYgDkEEaigCACIDKAIAIgIEQCAGIAIRAwALIAMoAgQiAgRAIAYgAiADKAIIEKIHCyAOQQxBBBCiB0GukcEAIQMMBAsgD0GAgICAeHJBgICAgHhGDQMgB0H/AXEgKEEIdHIgD0EBEKIHDAMLIEqnQQFxBEAgBCkD4AQgR30hUQwEC0ENIQggD0GGgICAeEYEQEGhkcEAIQMMAwtBoZHBACEDAkACQEEBIA9B/////wdqIA9BgICAgHhNGw4CAAEECyAHQf8BcUEDRw0DIA4oAgAhBiAOQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCICBEAgBiACIAMoAggQogcLIA5BDEEEEKIHQaGRwQAhAwwDCyAPQYCAgIB4ckGAgICAeEYNAiAHQf8BcSAoQQh0ciAPQQEQogcMAgsgSkIgiKchCCBKpyEFIAwEQCAZIAxBARCiBwtBACEZIA0hECADIQwMDQtBJiEIIA9BhoCAgHhGBEBB25DBACEDDAELQduQwQAhAwJAAkBBASAPQf////8HaiAPQYCAgIB4TRsOAgABAgsgB0H/AXFBA0cNASAOKAIAIQYgDkEEaigCACIDKAIAIgIEQCAGIAIRAwALIAMoAgQiAgRAIAYgAiADKAIIEKIHCyAOQQxBBBCiB0HbkMEAIQMMAQsgD0GAgICAeHJBgICAgHhGDQAgB0H/AXEgKEEIdHIgD0EBEKIHCyADQQh2IShBgICAgHghD0EAIQUgDEUNBAJAIBlBBGsoAgAiAkF4cSIGQQRBCCACQQNxIgIbIAxqTwRAIAJBACAGIAxBJ2pLGw0BIBkQogIMBgsMGQsMFwtBACEzIA0hECBGIU4gFiEyICYhLiAjITAMCgtBIiEFQQAhI0H3kcEAIQZBACEqQcggIRZBAAshAkGAgICAeCEIQQAhAyAMRQ0AIBlBBGsoAgAiEEF4cSImQQRBCCAQQQNxIhAbIAxqSQ0VIBBBACAmIAxBJ2pLGw0UIBkQogILIAVB/wFxIAJBCHRyIQwgFkH//wNxICpB/wFxQRB0ciECIAMgI0H/AXFyIAhyIRACQCAPQYaAgIB4RwRAQQAhBSAOIQggByEDAkACQEEBIBBB/////wdqIBBBgICAgHhNGw4CAAEECyAGQf8BcUEDRw0DIAwoAgAhBiAMQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCIIBEAgBkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgCGpJDRggAkEAIAMgCEEnaksbDRcgBhCiAgsgDEEEaygCACICQXhxIgNBEEEUIAJBA3EiAhtJDRcgAkEAIANBNE8bDRYgDBCiAgwCCyAQQYCAgIB4ckGAgICAeEYNAiAGQf8BcSACQQh0ciIIQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAQakkNFiACQQAgAyAQQSdqSxsNFSAIEKICDAELQQAhBSAQIQ8gDCEIIAYhAyACISgMAQsgDiEIIAchAwwACwALIAIgEiASQYD8xAAQ6gcACyAEQQA2AvABIARBATYC5AEgBEGIgsgANgLgASAEQgQ3AugBIARB4AFqQfD7xAAQjQgACyAMQQRBoPzEABCMBwALIBBBBEGQ/MQAEIwHAAtBgICAgHghDCAPQYaAgIB4RwRAIAetQv8BgyAorUL///8Hg0IIhoQgDq1CIIaEIVUgDyEMCwJAIAQoApADQQJGDQAgBCgCjAMiCgRAIAQoAogDIgNBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIApqSQ0QIAFBACACIApBJ2pLGw0PIAMQogILIAQoAvACRQ0AIAQoAvgCIgpFDQAgBCgC9AIiA0EEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgCmpJDQ8gAUEAIAIgCkEnaksbDQ4gAxCiAgsgOSgCACICQXhxQYQQQYgQIAJBA3EiARtJDQ4gAUEAIAJBqBBPG0UEQCBVQiCIpyEIIFWnIQUgIhCiAgwLCwwNCyAFrUL/AYMgSUL//////////wCDQgiGhKchBUEAIRlBgYCAgHghDAsCQCAPQYaAgIB4Rg0AAkACQEEBIA9B/////wdqIA9BgICAgHhNGw4CAAECCyAHQf8BcUEDRw0BIA4oAgAhBiAOQQRqKAIAIgMoAgAiAgRAIAYgAhEDAAsgAygCBCICBEAgBiACIAMoAggQogcLIA5BBGsoAgAiAkF4cSIDQRBBFCACQQNxIgIbSQ0OIAJBACADQTRPGw0NIA4QogIMAQsgD0GAgICAeHJBgICAgHhGDQAgB0H/AXEgKEEIdHIgD0EBEKIHCwJAIAQoApADQQJGDQAgBCgCjAMiDQRAIAQoAogDIgZBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIA1qSQ0OIAJBACADIA1BJ2pLGw0NIAYQogILIAQoAvACRQ0AIAQoAvgCIg1FDQAgBCgC9AIiBkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgDWpJDQ0gAkEAIAMgDUEnaksbDQwgBhCiAgsCQCA5KAIAIgNBeHFBhBBBiBAgA0EDcSICG08EQCACQQAgA0GoEE8bRQRAICIQogIgGUUNCwJ/AkAgMwRAIFz9HQEiRiBc/R0AWg0BQYCAgIB4IQVBkI/IACEDQcgAIQgMDAsgLkH//wNxIQUgMkH//wNxIQYgCK0hSyAwQf//A3EMAQsgRqchBiBZ/R0BIUsgFyEFIDgLIFEgSyBRfCJPVgRAQYCAgIB4IQVB2I/IACEDQSghCAwKCyAFRgRAQYOAgIB4IQVB+IzBACEDQRshCCAGQQAgBiBPp00bIgetQqgBfiJGQiCIpw0KIEanIgJBAEgNCiACQfn///8HSQRAAkAgAkUEQEEIISpBACEHDAELIAIQcSIqRQ0GCyABIE83AwggBEEANgK0AyAEICo2ArADIAQgBzYCrAMCQCAGBEBBACEIA0AgASgCBCIDrSFGIANC/////w8gASkDCCJIIEhC/////w9aG6drIgJBACACIANNG0EtTQRAAkAgTEIEUQRAIAEgSEIufDcDCCAkQQRHDQEMDgsgASBGNwMIICRBBEYNDQtBgYCAgHghBSAcIQIgEyEDICwhBgJAAkAgJEEBaw4DAQAADwsgEy0ACCECCyACQf8BcUElRw0NIAQgVjcDkAYgBEEgNgK0BiAEQcKNwQA2ArAGIARCATcC7AEgBEEBNgLkASAEQbiexwA2AuABIAQgBEGQBmo2AugBIARB0ARqIARB4AFqEOwDIAQoAtgEIQMgBCgC1AQhBiAEKALQBCEFICRBA0cNDSATKAIAIQcgE0EEaigCACINKAIAIgIEQCAHIAIRAwALIA0oAgQiAgRAIAcgAiANKAIIEKIHCyATQQxBBBCiBwwNCyABIEhCLnw3AwggASgCACBIIEYgRiBIVhunaiICKAAAQdCWhRBHDQsgAjUAKiFKIAIoACYhDiACLwAgIQcgAi8AHiENIAI1ABghRyACNQAUIUYgAigAECEPIAIvAAQhFCACLwAcIQMgAigAByERIAIoAAshFSAEIAItAA86AOgBIAQgFTYC5AEgBCARNgLgASAELwDnASEaIAQvAOMBIR0gBEHgAWoiAiABIAMQ9AIgBCgC6AEhAyAEKALkASEWIAQoAuABIgVBhoCAgHhHDQogAiABIA0Q9AIgBCgC6AEhGyAEKALkASESIAQoAuABIgVBhoCAgHhHBEAgEiEmIBshIwwKCyAEQeABaiABIAcQ9AIgBCgC6AEhIyAEKALkASEmIAQoAuABIgVBhoCAgHhHBEAgG0UNCiASIBtBARCiBwwKCwJAAkACQAJAIBFBCHYiGEGAEHEiIEUEQCADQQBIDQECfyADRQRAIARBEGpBAUEAEPACIAQoAhAhESAEKAIUDAELIAMQcSICRQ0OIAMEQCACIBYgA/wKAAALIARBGGogAiADEPACIAQoAhghESAEKAIcCyECIARBCGogJiAjEPACIAQoAgwhKyAEKAIIIR8MBAsgBEHgAWogFiADEMQDIAQoAugBIQIgBCgC5AEhBQJAIAQoAuABIhFBgICAgHhHBEAgAiARTwRAIAUhEQwCCyACRQRAIAVBBGsoAgAiB0F4cSINQQRBCCAHQQNxIi8bIBFqSQ0bIC9BACANIBFBJ2pLGw0aIAUQogJBASERDAILIAUgEUEBIAIQuwIiEQ0BDA4LIAJBAEgNAgJAIAJFBEBBASERDAELIAIQcSIRRQ0OCyACRQ0AIBEgBSAC/AoAAAsgBEHgAWogJiAjEMQDIAQoAugBISsgBCgC5AEhByAEKALgASILQYCAgIB4RwRAIAsgK00EQCAHIR8MBQsgK0UEQCAHQQRrKAIAIg1BeHEiBUEEQQggDUEDcSIvGyALakkNGiAvQQAgBSALQSdqSxsNGSAHEKICQQEhHwwFCyAHIAtBASArELsCIh8NBAwNCyArQQBIDQICQCArRQRAQQEhHwwBCyArEHEiH0UNDQsgK0UNAyAfIAcgK/wKAAAMAwtB2JrIABD/BwALQazWwAAQ/wcAC0Gs1sAAEP8HAAsCf0EBIBpBH3EiCUUNABpBASAaQQV2QQ9xIgVBDWtBdEkNABpBASAVQQh2IgtBgA9xQYAPRg0AGkEBIAtBgPADcUELdkEXSw0AGkEBIAtBAXRBPnEiDUE8Sw0AGiAaQYD8A3FBCXZBvA9qIRVBHiEoQQEgBXQiB0GqK3FFBEACQCAHQdAUcQ0AQRwhKCAaQYAMcQ0AQR1BHEEdIBVBDHEbIBVBGXAbISgLQQEgCSAoSw0BGgsgGkH/A3EgFUEJdHJBgPABayEvIAtB4P//B3FBOiANIA1BOk8bQQF2ciEHQQALIRUCQAJ/AkACfwJAAkAgG0EATgRAAkAgG0UEQEEBIQ0MAQsgGxBxIg1FDRALIBsEQCANIBIgG/wKAAALQRQQcSILRQ0PIAsgGzYCECALIA02AgwgCyAbNgIIIAtCgYCAgBA3AgAgBCAUOgCFAyAEQQNBBCAUQQh2IgVBA0YbQQAgBRs6AIQDIAQgIEELdjoAgQMgBCAdOwHmAiAEQQFBAiAdQQhGG0EAIB0bOwHkAiAEIAc7AfwCIAQgLzsB+gIgBCAVQQFzOwH4AiAEQgA3A+ABIAQgDzYC6AIgBCBHNwOoAiAEIEY3A6ACIARBADYC8AIgBCALNgLsAiAEIAM2ApQCIAQgFjYCkAIgBCACNgKMAiAEIBE2AogCIAQgGDsB/gIgBCAYQQFxOgCAAyAEIBhBA3ZBAXE6AIIDIAQgSjcDsAIgBCArNgKcAiAEIB82ApgCIARCADcD8AEgBCBINwO4AiAEIA42AvQCIARBADoAgwMgBEEAOgDIAiAEQgA3A9ACIARBADYC4AIgBEKAgICAgAE3A9gCIARBADsBgAIgCyALKAIAIgJBAWo2AgAgAkEASA0PIAhBAWohFSAEIAs2AugFQQAhBSAEQQA2AuwFIARBAjYC9AUgBCAEQewFajYC/AUgBCAEQegFajYC+AUDQCAFQQFqIQICQCBEIAVBAnRqKAIAIi8oAgAiBQRAIAIhFgwBC0ECIRYgAkECRg0IIARB7AVqIS8gBCgC7AUiBUUNCAsgBEEANgKMBiAEQoCAgIAQNwKEBiAEIBY2AvAFIAU1AhAhVCAEIAVBCGo2ApgGAkAgVFANAEEAIQ1CACFHQQEhK0EAIR1CACFKA0AgBCgCmAYiKUEIaiIUKAIAIgOtIUggBAJ+AkAgA0L/////DyBHIEdC/////w9aG6drIgJBACACIANNG0ECTwRAQQQhAiApQQRqKAIAIEcgSCBHIEhUG6dqLwAAIQdCACFGDAELQQAhByBJIUYgCiECIEggTEIEUg0BGgsgR0ICfAsiRzcDkAYCQAJ/AkACQAJAAkACfgJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkH/AXEiBUEERwRAIEZCGIinIQMgRqciByELAkACQAJAIAVBAWsOAwEAAiQLIAMtAAghCwsgC0H/AXFBJUYNFQwiCyADLQAIQSVGDQFBAyECDCELIAQCfgJAIAMgRyBIIEcgSFQbpyIFa0ECTwRAQQQhAiApQQRqKAIAIAVqLwAAIRpCACFGDAELQQAhGiBJIUYgCiECIEggTEIEUg0BGgsgR0ICfAsiSzcDkAYCQAJAIAJB/wFxIgVBBEcEQCBGQhiIpyEDIEanIgchBgJAAkAgBUEBaw4DAQADBAsgAy0ACCEGCyAGQf8BcUElRw0CDCILAkACQAJAAkACQAJAAkACQAJAAkAgB0H//wNxIgJB9MYBTQRAIAJBAWsOCgUfHx8fHx8fHwEDCyACQfXGAUYNCCACQfXgAUYNAyACQYGyAkYNAQweC0GDgICAeCEFIBpB//8DcUEgRwRAQSohA0HIksgAIQJBEiEGQYkkIQcMLgtBgYCAgHghBSADIEsgSCBIIEtWG6drQQNLIgIgJEEERnJFBEAgJSEGIBwhByAKIQIgEyEDDC4LIAMgS0IEfCJGIEYgSCBMQgRRGyACGyJHIEggRyBIVBunIgJrQQFNBEAgTEIEUg0FIAQgR0ICfDcDkAYgJSEGIBwhByAKIQIgEyEDICRBBEcNLgwdCyApQQRqKAIAIgcgAmovAABBAUcNHAJAAkACQCADIEdCAnwiRiBIIEYgSFQbpyICa0EBTQRAIExCBFINASAEIEdCBHw3A5AGICUhBiAcIQcgCiECIBMhAyAkQQRHDTEMAgsgAiAHai8AAEEYRw0BAn4CQCADIEdCBHwiRiBIIEYgSFQbpyICa0EITwRAIAIgB2opAAAhRkEEIQJCACFNDAELQgAhRiBJIU0gCiECIEggTEIEUg0BGgsgR0IMfAshRyACQf8BcUEERg0CIE1CCIinIQYgTUIYiKchAyBNpyEHDDALIAQgSDcDkAYgJSEGIBwhByAKIQIgEyEDICRBBEcNLwtBMiEDQeWRyAAhAkESIQZBiCQhB0GDgICAeCEFDC4LAn4CQCADIEcgSCBHIEhUG6ciAmtBCE8EQCACIAdqKQAAIU1BBCECQgAhSwwBC0IAIU0gSSFLIAohAiBIIExCBFINARoLIEdCCHwLIVAgAkH/AXFBBEcEQCBLQgiIpyEGIEtCGIinIQMgS6chBwwuCwJAAkAgAyBQIEggSCBQVhunIgJrQQhPBEAgAiAHaikAACFHQQQhAkIAIUsMAQtCACFHIEkhSyAKIQIgTEIEUg0BCyBQQgh8IUgLIAQgSDcDkAYgAkH/AXFBBEYNBSBLQgiIpyEGIEtCGIinIQMgS6chBwwtCyAaQf//A3FBB0YNBUGDgICAeCEFQfyUyAAhAkEuIQNBiiQhB0ESIQYMLAsgAkHVqAFHDRsgGkH//wNxIgdFBEBBgICAgHghBUEhIQNB/JDIACECQYgkIgdBCHYhBgwsCyApQQRqKAIAIRQgBAJ+AkAgSyBIIEggS1YbpyICIANHBEAgAiAUai0AACELQQQhAkIAIUYMAQtBACELIEkhRiAKIQIgSCBMQgRSDQEaCyBLQgF8CyJHNwOQBiACQf8BcUEERw0ZIAdBBUcNFgwXCyAEQbAGaiAEQZAGaiAaENoCIAQoArwGIQMgBCgCuAYhCyAEKAK0BiEUIAQoArAGRQ0FDBQLIARBAToAgwMgBAJ+AkACQAJAAkACQAJAIBpB//8DcSILQRdNBEBBACEFIAQpA6gCQv////8PUQ0BIEshSgwECwJ+AkAgAyBLIEggSCBLVhunIgVrQQhPBEBBBCECIClBBGooAgAgBWopAAAhSkIAIUYMAQtCACFKIEkhRiAKIQIgSCBMQgRSDQEaCyBLQgh8CyFLIAJB/wFxQQRHDQEgBCBKNwOoAiADIEsgSCBIIEtWG6ciBWtBCEkNBEEEIQIgKUEEaigCACAFaikAACFHQgAhRgwFCyAEAn4CQCADIEsgSCBIIEtWG6ciBWtBCE8EQEEEIQIgKUEEaigCACAFaikAACFHQgAhRgwBC0IAIUcgSSFGIAohAiBIIExCBFINARoLIEtCCHwLIko3A5AGIAJB/wFxQQRGDQELIAKtQv8BgyBGQgiGhKchDSBGQhiIpyEDQYGAgIB4IQUCQAJ/AkACQCACQf8BcUEBaw4DAAEBAwsgRqcMAQsgAy0ACAtB/wFxQSVHDQAgDUH/AXFBgICAgHghBUHAk8gAIQ1BA0YEQCADKAIAIQcgA0EEaigCACIGKAIAIgIEQCAHIAIRAwALIAYoAgQiAgRAIAcgAiAGKAIIEKIHCyADQQxBBBCiBwtBwJPIACECQRshAwsgDUEQdiEGIA1BCHYhBwwuCyAEIEc3A6gCQQghBQsgBCkDoAJC/////w9RBEACfgJAIAMgSiBIIEggSlYbpyIHa0EITwRAQQQhAiApQQRqKAIAIAdqKQAAIUdCACFGDAELQgAhRyBJIUYgCiECIEggTEIEUg0BGgsgSkIIfAshSiACQf8BcUEERw0WIAQgRzcDoAIgBUEIaiEFIAQpA7ACQv////8PUg0VDBQLIAQpA7ACQv////8PUQ0TDBQLQgAhRyBJIUYgCiECIEggTEIEUg0BGgsgS0IIfAsiSjcDkAYgAkH/AXFBBEcNEiAEIEc3A6ACQRAhBQwQCyAEIEg3A5AGICUhBiAcIQcgCiECIBMhAyAkQQRHDSgMFwsgBCgC4AIiAiAEKALYAkYEQCA9QYiUyAAQ+wULIAQoAtwCIAJBBXRqIgMgRzcCGCADIE03AhAgAyBGQiCIPgIMIAMgRj4CCCADQQA2AgAgBCACQQFqNgLgAgwYCwJ+AkAgAyBLIEggSCBLVhunIgVrQQJPBEBBBCECIClBBGooAgAgBWovAAAhB0IAIUYMAQtBACEHIEkhRiAKIQIgSCBMQgRSDQEaCyBLQgJ8CyFHIAJB/wFxQQRHBEAgRkIYiKchAyBGpyEHIEZCCIinDCYLAn4CQCADIEcgSCBHIEhUG6ciBWtBAk8EQEEEIQIgKUEEaigCACAFai8AAEHBigFGIRpCACFGDAELQQAhGiBJIUYgCiECIEggTEIEUg0BGgsgR0ICfAshRyACQf8BcUEERwRAIEZCGIinIQMgRqchByBGQgiIpwwmCwJ+AkAgRyBIIEcgSFQbpyIFIANHBEBBBCECIClBBGooAgAgBWotAABBAWshFEIAIUYMAQtB/wEhFCBJIUYgCiECIEggTEIEUg0BGgsgR0IBfAshSwJAAkACQCACQf8BcSIFQQRHBEAgRkIYiKchAwJ/AkACQCAFQQFrDgMAAQQFCyBGpwwBCyADLQAIC0H/AXFBJUcNAgwQCwJAAkAgAyBLIEggSCBLVhunIgNrQQJPBEBBBCECIClBBGooAgAgA2ovAAAhA0IAIUcMAQtBACEDIEkhRyAKIQIgTEIEUg0BCyBLQgJ8IUgLIAQgSDcDkAYgAkH/AXFBBEYNAiBHQhiIpyEDIEenIQcgR0IIiKcMKAsgAy0ACEElRg0NCyBGpyEHIEZCCIinDCYLQYCAgIB4IQUgGkUEQEHqlMgAIQJBEiEDQYokIQdBEiEGDCcLIAdBAWtB//8DcUEBSwRAQdCUyAAhAkEaIQNBiiQhB0ESIQYMJwsgFEH/AXFBAk0NBUGxlMgAIQJBHyEDQYokIQdBEiEGDCYLIARBsAZqIgIgBEGQBmogGhDaAiAEKAK8BiEDIAQoArgGIQsgBCgCtAYhFCAEKAKwBg0PIAQoApwCIRggBCgCmAIhByAEQQA2ArgGIARCADcDsAYgAiAHIBgQ3gEgBCgCuAYgA0cEQCALBEAgFCALQQEQogcLQYCAgIB4IQVBsJDIACECQSwhAwwICyAEIAs2AqgGIAQgFDYCpAYgBCALNgKgBiAEQbAGaiAUIAsQ+wIgBCgCsAZFBEAgBCkDoAYhSAwKC0GAgICAeCEFIAQpAqQGIUggC0GAgICAeEYEQCAEKAK0BiELDAoLQYCcyAAhAkENIQMgC0UNCCBIpyALQQEQogcMCAsgBCgClAIhBSAEKAKQAiECIARBADYCuAYgBEIANwOwBiAEQbAGaiACIAUQ3gEgBCgCuAYgA0cEQEGAgICAeCEFQbCQyAAhAkEsIQMgC0UNByAUIAtBARCiBwwHCyAFBEAgAiAFQQEQogcLIAQgFDYCkAIgBCALNgKUAiALQQBIDQQCQCALRQRAQQEhBQwBCyALEHEiBUUNMAsgCwRAIAUgFCAL/AoAAAsgBCALNgKoBiAEIAU2AqQGIAQgCzYCoAYgBEGwBmogBSALEPsCAkACQCAEKAKwBkUEQCAEKQOgBiJGQiCIpyECIAsgRqciBUkNASACIQMMAgtBgICAgHghBUGAnMgAIQJBDSEDIAtFDQkgBCkCpAanIAtBARCiBwwJCyALRQRAQQEhAyACIAVBARCiBwwBCyACIAVBASALELsCIgNFDTALIAQoAowCIgIEQCAEKAKIAiACQQEQogcLIARBAToAgQMgBCALNgKMAiAEIAM2AogCDBULIAMtAAhBJUYNBAsgRkIIiKcMIQsgAygCACEUIANBBGooAgAiBSgCACICBEAgFCACEQMACyAFKAIEIgcEQCAUQQRrKAIAIgJBeHEiBUEEQQggAkEDcSICGyAHakkNOSACQQAgBSAHQSdqSxsNOCAUEKICCyADQQRrKAIAIgJBeHEiBUEQQRQgAkEDcSICG0kNOCACQQAgBUE0TxsNNyADEKICDBILIAQgSjcD0AIgBCADOwHmAiAEQQFBAiADQf//A3EiAkEIRhtBACACGyICOwHkAiAEIAetQv//A4MgAq1CIIYgA61CMIaEhCAUrUL/AYNCEIaEQoCABHw3A4ACDBELQdiayAAQ/wcACyADKAIAIQUgA0EEaigCACIGKAIAIgIEQCAFIAIRAwALIAYoAgQiAgRAIAUgAiAGKAIIEKIHCyADQQxBBBCiBwwbC0GIJCEHQRIhBgwdC0GOJCEHQRIhBgwcCyBIQiCIpyEFAkACQCALIEinIhRPDQAgC0UEQCAFQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAUakkNNSACQQAgAyAUQSdqSxsNAiAFEKICQQEhBQwBCyAFIBRBASALELsCIgVFDSgLIBgEQCAHIBhBARCiBwsgBCALNgKcAiAEIAU2ApgCDA0LDDELIAMoAgAhBSADQQRqKAIAIgYoAgAiAgRAIAUgAhEDAAsgBigCBCICBEAgBSACIAYoAggQogcLIANBDEEEEKIHC0GAgICAeCEFQZiUyAAhAkEZIQNBiiQhB0ESIQYMGQsCfgJAIAMgSiBIIEggSlYbpyIHa0EITwRAQQQhAiApQQRqKAIAIAdqKQAAIUdCACFGDAELQgAhRyBJIUYgCiECIEggTEIEUg0BGgsgSkIIfAshSiACQf8BcSIHQQRHBEAgAq1C/wGDIEZCCIaEpyENIEZCGIinIQNBgYCAgHghBQJAAn8CQAJAIAdBAWsOAwABAQMLIEanDAELIAMtAAgLQf8BcUElRw0AIA1B/wFxQYCAgIB4IQVBwJPIACENQQNGBEAgAygCACEHIANBBGooAgAiBigCACICBEAgByACEQMACyAGKAIEIgIEQCAHIAIgBigCCBCiBwsgA0EMQQQQogcLQcCTyAAhAkEbIQMLIA1BEHYhBiANQQh2IQcMGQsgBCBHNwOwAiAFQQhqIQULIAUgC0sEQEGAgICAeCEFQduTyAAhAkEqIQNBiSQhB0ESIQYMGAsgCyAFayEYQQEhESAFIAtGIgdFBEAgGBBxIhFFDSMgEUEEay0AAEEDcUUgGEVyRQRAIBFBACAY/AsACyAUKAIAIgOtIUgLAkACQCADIEogSCBIIEpWG6ciAmsgGE8EQCApQQRqKAIAIAJqIQIgGEEBRwRAIBgEQCARIAIgGPwKAAALQQQhAgwCCyARIAItAAA6AABBBCECDAELIBMhDyAKIQIgNCEOIExCBFINAQsgSiAYrXwhSAsgBCBINwOQBgJAAn8CQCACQf8BcSIDQQRHBEACfwJAAkAgA0EBaw4DAAEBBAsgDgwBCyAPLQAIC0H/AXFBJUcNASACQf8BcUEDRgRAIA8oAgAhBSAPQQRqKAIAIgMoAgAiAgRAIAUgAhEDAAsgAygCBCIGBEAgBUEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgBmpJDTQgAkEAIAMgBkEnaksbDTMgBRCiAgsgD0EEaygCACICQXhxIgNBEEEUIAJBA3EiAhtJDTMgAkEAIANBNE8bDTIgDxCiAgtBgICAgHghBUEbIQ9BwJPIACECQYkkIQ5BEgwCC0EBIR0gBw0CIBFBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIBhqSQ0xIAJBACADIBhBJ2pLGw0wIBEQogIMAgtBgYCAgHghBSAOQf///wdxQQh2CyEGIAdFBEAgESAYQQEQogcLIA8hAyAOIQcMGAsgSCFKIEghRwwPCyACrUL/AYMgRkIIhoSnIQ0gRkIYiKchA0GBgICAeCEFAkACfwJAAkAgAkH/AXFBAWsOAwABAQMLIEanDAELIAMtAAgLQf8BcUElRw0AIA1B/wFxQYCAgIB4IQVBwJPIACENQQNGBEAgAygCACEHIANBBGooAgAiBigCACICBEAgByACEQMACyAGKAIEIgIEQCAHIAIgBigCCBCiBwsgA0EMQQQQogcLQcCTyAAhAkEbIQMLIA1BEHYhBiANQQh2IQcMFgsgFEGGgICAeEcEQCALQRB2IQYgC0EIdiEHIAshAiAUIQUMFgsgBCkDkAYiRyALQQFxRQ0HGiBHIUpBASEdDA0LIAtB/wFxaUECdEEBciAHRwRAQYOAgIB4IQVBNSEDQbCRyAAhAkGIJCIHQQh2IQYMFQsgC0EBcQ0AQQAhHyAHQQFrDAELIAQCfgJAIAMgRyBIIEcgSFQbpyICa0EETwRAIAIgFGooAAAhEUEEIQJCACFGDAELQQAhESBJIUYgCiECIEggTEIEUg0BGgsgR0IEfAsiRzcDkAYgAkH/AXFBBEcNAUEBIR8gB0EFawshBUEAIRogB0EGSSIHIAtBAnFFckUEQCAEAn4CQCADIEcgSCBHIEhUG6ciAmtBBE8EQCACIBRqKAAAIQlBBCECQgAhRgwBC0EAIQkgSSFGIAohAiBIIExCBFINARoLIEdCBHwLIkc3A5AGIAJB/wFxQQRHDQFBASEaIAVBBGshBQtCACFGAkAgByALQQRxRXJFBEAgBAJ+AkAgAyBHIEggRyBIVBunIgJrQQRPBEAgAiAUajUAAEIghiFNQQQhAgwBC0IAIU0gSSFGIAohAiBIIExCBFINARoLIEdCBHwLIkc3A5AGIAJB/wFxQQRHDQIgBUEEayEFQgEhRgwBC0IAIU0LAkAgBUUNACAFQQBOBEAgBCBHIAWtfCJLIEsgSCBMQgRRGyAFIAMgRyBIIEcgSFQbp2tNIgIbNwOQBiACICRBBEZyDQFBgYCAgHghBSAKIQIgEyEDIBwiB0EIdiEGDBQLQaCRyAAQ/wcACyAEKALgAiICIAQoAtgCRgRAID1BrJXIABD7BQsgBCgC3AIgAkEFdGoiAyBGIE2ENwIUIAMgCTYCECADIBo2AgwgAyARNgIIIAMgHzYCBCADQQE2AgAgBCACQQFqNgLgAgwDCyBGQhiIpyEDQYGAgIB4IQUgRqciB0EIdiEGDBELQTEhA0GXksgAIQJBEiEGQYkkIQdBg4CAgHghBQwQCwJAIBpB//8DcSIRRQRAQQEhHwwBCyAREHEiH0UNGyAfQQRrLQAAQQNxRSARRXJFBEAgH0EAIBH8CwALIBQoAgAiA60hSAsCQAJAAkAgESADIEsgSCBIIEtWG6ciAmtNBEAgKUEEaigCACACaiECIBFBAUcEQCARRQ0CIB8gAiAR/AoAAAwCCyAfIAItAAA6AAAMAQsgSSFHIAohAiBMQgRSDQIMAQtBBCECQgAhRwsgSyAarUL//wODfCFICyAEIEg3A5AGAkACQCACQf8BcSIFQQRHBEAgR0IYiKchAwJ/AkACQCAFQQFrDgMAAQQFCyBHpwwBCyADLQAIC0H/AXFBJUcNAgwICyARRQ0CIB9BBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIBFqSQ0oIAJBACADIBFBJ2pLGw0nIB8QogIMAgsgAy0ACEElRg0FCyBHpyEHQYGAgIB4IQUgR0IIiKcMBgsgBCkDkAYLIkYgSn0iR6ciC0EATgRAAkAgC0UEQEEBIQMMAQsgCxBxIgNFDRogA0EEay0AAEEDcUUgC0VyDQAgA0EAIAv8CwALIAQoAoQGIA0iAmsgC0kEQCAEQYQGaiACIAsQ7wUgBCgCiAYhKyAEKAKMBiECCyALRSIURQRAIAIgK2ogAyAL/AoAAAsgBCACIAtqIgI2AowGIAsEQCADQQRrKAIAIgVBeHEiB0EEQQggBUEDcSIFGyALakkNJiAFQQAgByALQSdqSxsNJSADEKICCyALIA1qIgMgAksNASAEKAKYBiIFQQhqKAIAIgetIUgCQAJAIAsgB0L/////DyBKIEpC/////w9aG6drIgNBACADIAdNG00EQCAFQQRqKAIAIEogSCBIIEpWG6dqIQUgDSAraiEDIAtBAUcEQCAURQRAIAMgBSAL/AoAAAtBBCEFDAILIAMgBS0AADoAAEEEIQUMAQsgCiEFIExCBFINAQsgR0L/////B4MgSnwhSAsgBCBINwOQBiAFQf8BcSINQQRGBEAgRiFKIAIhDSBIIUcMBwsgSUIYiKchAyBJpyICIQYCQAJAAkACQCANQQFrDgMBAAIDCyADLQAIIQYLIAZB/wFxQSVHDQEMBAsgAy0ACEElRw0AIAMoAgAhBSADQQRqKAIAIgYoAgAiAgRAIAUgAhEDAAsgBigCBCICBEAgBSACIAYoAggQogcLIANBDEEEEKIHDAMLQYGAgIB4IQUgAkEIdCANcgwPC0H0ksgAEP8HAAsgDSADIAJBsJPIABDqBwALQSshA0GAgICAeCEFQYSTyAAMDAsgAygCACEFIANBBGooAgAiBigCACICBEAgBSACEQMACyAGKAIEIgIEQCAFIAIgBigCCBCiBwsgA0EMQQQQogcLQYCAgIB4IQVBHSEDQbyVyAAhAkGKJCEHQRILIQYgEUUNCCAfIBFBARCiBwwICyBKIFRUDQALAkAgHUUEQCAEKAKEBiINRQ0CIAQoAogGIgVBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIA1qSQ0fIAJBACADIA1BJ2pLGw0BIAUQogIMAgtBFBBxIgNFDRIgAyAEKQKEBjcCCCADQoGAgIAQNwIAIANBEGogBEGMBmooAgA2AgACQCAvKAIAIgJFDQAgAiACKAIAIgJBAWs2AgAgAkEBRw0AIC8oAgAQ3QULIC8gAzYCAAwBCwwcC0EBIQUgFkECRw0ACwwGC0HYmsgAEP8HAAtBgICAgHghBUHZlcgAIQJBHCEDQYokIQdBEiEGDAILIEZCCIinCyEGQYGAgIB4IQULIAJB/wFxIAdB/wFxQQh0ciAGQRB0cgshFgJAIAQoAoQGIgcEQCAEKAKIBiINQQRrKAIAIgJBeHEiBkEEQQggAkEDcSICGyAHakkNFyACQQAgBiAHQSdqSxsNASANEKICCwJAIAQoAuwFIgJFDQAgAiACKAIAIgJBAWs2AgAgAkEBRw0AIAQoAuwFEN0FCyAEKALoBSICRQ0JIAIgAigCACICQQFrNgIAIAJBAUcNCSAEKALoBRDdBQwJCwwUCyAEKALoBSEDAkAgBCgC7AIiAkUNACACIAIoAgAiAkEBazYCACACQQFHDQAgBCgC7AIQ3QULIAQgAzYC7AIgBCgC7AUhAwJAIAQoAvACIgJFDQAgAiACKAIAIgJBAWs2AgAgAkEBRw0AIAQoAvACEN0FCyAEIAM2AvACQYCAgIB4IQUCQCAELwHkAkECRw0AIAQvAeYCQeMARw0AIAQvAYACDQBBKyEDQZGMwQAhFgwICyAEKQOwAiJHIFF8IkYgR1QEQEEbIQNBvIzBACEWDAgLIAQgRjcDsAIgBCkD4AEhRiAEKALoASEFIAQoAuwBIRYgBCgC8AEhAyAEQdAEaiBFQZQB/AoAAAJAICBFICNFcg0AAkAgJkEEaygCACICQXhxIg1BBEEIIAJBA3EiAhsgI2pPBEAgAkEAIA0gI0EnaksbDQEgJhCiAgwCCwwWCwwUCyAbBEAgEkEEaygCACICQXhxIg1BBEEIIAJBA3EiAhsgG2pJDRUgAkEAIA0gG0EnaksbDQMgEhCiAgsgRkICUQ0KIARBuANqIARB0ARqQZQB/AoAACAEKAKsAyAIRgRAIwBBIGsiDiQAAkAgBEGsA2oiDygCACIHQZiMhgNLBH9BAAVBBCAHQQF0IgIgAkEETRsiDUGoAWwhAiAOIAcEfyAOIAdBqAFsNgIcIA4gDygCBDYCFEEIBUEACzYCGCAOQQhqQQggAiAOQRRqEIUHIA4oAghBAUcNASAOKAIQIQ8gDigCDAsgD0HojMEAEJMJAAsgDigCDCECIA8gDTYCACAPIAI2AgQgDkEgaiQAIAQoArADISoLICogCEGoAWxqIgIgFq0gA61CIIaENwIMIAIgBTYCCCACIEY3AwAgAkEUaiAEQbgDakGUAfwKAAAgBCAVNgK0AyAVIgggBkcNAAsLIARB2AFqIARBtANqKAIANgIAIAQgUTcCpAEgBEHEAWogBEGoAWooAgA2AgAgBCAEKQKsAzcD0AEgBCAnNgK4ASAEQgA3A7ABIAQgTzcDyAEgBCAEKQOgATcCvAEgBEFAayEYIBkhEEEAIR0jAEHQA2siCSQAIARBsAFqIhQoAighBkHIu8kAAn5BwLvJAC0AAARAQdC7yQApAwAhRkHIu8kAKQMADAELIAlBOGoQvwZBwLvJAEEBOgAAQdC7yQAgCSkDQCJGNwMAIAkpAzgLIklCAXw3AwACQCAGRQRAIAlCgICAgIABNwMYIAkgRjcDECAJIEk3AwggCUEANgIgIAlB8JrIAP0AAwD9CwIkIBQoAiQhDyAUKAIgISYMAQsCQCAGQQ9PBH9BfyAGQQN0QQduQQFrZ3ZBAWoFQQQgBkEIcUEIaiAGQQRJGwsiHEECdEEHakH4////B3EiAyAcQQhqIghqEHEiAkUNACACIANqIQogCARAIApB/wEgCPwLAAsgBkHDrMgFSQRAIAZBuAFsEHEiAkUNASAJQQA2AjAgCSAcQQFrIgMgHEEDdkEHbCADQQhJGzYCLCAJIAM2AiggCSAKNgIkIAlBADYCICAJIAI2AhwgCSBGNwMQIAkgSTcDCCAJIAY2AhggFCgCJCIPIAZBqAFsaiE4IAlBsANqIREgFCgCICEmIAlBGGohBSAJQSRqIRwgDyEDA0AgCUE4aiADQagB/AoAACAJQeACaiIjIANBCGr9AAMA/QsDACAJQfACaiIWIANBGGr9AAMA/QsDACAJIAMpAwA3A9gCIAMoAighFSADKAIsIRkgCUHgAWogA0EwakH4APwKAAAgGUEATgRAAkAgGUUEQEEBISEMAQsgGRBxIiFFDQQLIBkEQCAhIBUgGfwKAAALIAkpAwghRiAJKQMQIUkgEf0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgCSBJNwOoAyAJIEY3A6ADIAkgSULzytHLp4zZsvQAhTcDmAMgCSBJQu3ekfOWzNy35ACFNwOQAyAJIEZC4eSV89bs2bzsAIU3A4gDIAkgRkL1ys2D16zbt/MAhTcDgAMgCUGAA2oiAiAhIBkQggMgCUH/AToAxAMgAiAJQcQDakEBEIIDIAkpA7ADIAk1ArgDQjiGhCJIIAkpA5gDhSJJQhCJIEkgCSkDiAN8Ik6FIkZCFYkgRiAJKQOQAyJHIAkpA4ADfCJJQiCJfCJKhSJGQhCJIEYgTiBHQg2JIEmFIkd8IklCIIlC/wGFfCJOhSJGQhWJIEYgSSBHQhGJhSJHIEggSoV8IklCIIl8IkqFIkZCEIkgRiBJIEdCDYmFIkcgTnwiSUIgiXwiToUiRkIViSBGIEkgR0IRiYUiRyBKfCJJQiCJfCJKhSJGQhCJIEYgR0INiSBJhSJHIE58IklCIIl8IkaFQhWJIEdCEYkgSYUiSUINiSBJIEp8hSJJQhGJhSBGIEl8IklCIIiFIEmFpyEoIAkoAiAhDSAJKAIcIRMgCSgCLEUEQAJAQQAhFyMAQSBrIiAkAAJAAkACQAJAAkACQAJAAn8CQCAcKAIMIiVBAWoiCgRAIBwoAgQiLCAsQQFqIgtBA3YiAkEHbCAsQQhJGyIeQQF2IApJBEAgHkEBaiICIAogAiAKSxsiAkEPSQ0CIAJB/////wFNBEBBfyACQQN0QQduQQFrZ3YiAkH9////A0sNBSACQQFqDAQLDAoLIAsEQCAcKAIAIQ4CQAJAIAIgC0EHcUEAR2oiB0ECSQRAIAchCgwBCyAHQQFxIQogB0H+////A3EiBkEDdCEXIAYhCCAOIQIDQCACIAL9AAMAIln9TUEH/c0B/QwBAQEBAQEBAQEBAQEBAQEB/U4gWf0Mf39/f39/f39/f39/f39/f/1Q/c4B/QsDACACQRBqIQIgCEECayIIDQALIAYgB0YNAQsgDiAXaiECA0AgAiACKQMAIklCf4VCB4hCgYKEiJCgwIABgyBJQv/+/fv379+//wCEfDcDACACQQhqIQIgCkEBayIKDQALCyAOQQhqITQCQCALQQhPBEAgCyAOaiAOKQAANwAADAELIAtFDQAgNCAOIAv8CgAACyAOQQRrITBBASEIQQAhAgNAIAIhCiAIIQICQCAKIA5qIi4tAABBgAFHDQACQAJAIA0gMCAKQQJ0IgZrIgcoAgAiCEsEQCAOIAZrQQRrIRIDQCATIAhBuAFsaigCsAEiMiAscSIGIRcgBiAOaikAAEKAgYKEiJCgwIB/gyJGUARAQQghGwNAIBcgG2ohCCAbQQhqIRsgDiAIICxxIhdqKQAAQoCBgoSIkKDAgH+DIkZQDQALCyAOIEZ6p0EDdiAXaiAscSIXaiwAAEEATgRAIA4pAwBCgIGChIiQoMCAf4N6p0EDdiEXCyAXIAZrIAogBmtzICxxQQhJDQIgDiAXaiIILQAAIAggMkEZdiIIOgAAIDQgF0EIayAscWogCDoAACAOIBdBAnRrQQRrIRdB/wFGDQMgEigAACEIIBIgFygAADYAACAXIAg2AAAgBygCACIIIA1JDQALCyAIIA1B0JvIABCMBwALIC4gMkEZdiIIOgAAIDQgCkEIayAscWogCDoAAAwBCyAuQf8BOgAAIDQgCkEIayAscWpB/wE6AAAgFyASKAAANgAACyACIAIgC0kiCmohCCAKDQALCyAcIB4gJWs2AggMBQsMCAtBBCACQQhxQQhqIAJBBEkbCyIuQQJ0QQdqQXhxIgggLkEIaiIKaiICIAhJIAJB+P///wdLcg0AIAIQcSICRQ0BIAIgCGohEiAKBEAgEkH/ASAK/AsACyAuQQFrIR4gHCgCACEGICUEQCASQQhqITIgBkEEayEwIAYpAwBCf4VCgIGChIiQoMCAf4MhRiAGIQpBACECICUhFwNAIEZQBEADQCACQQhqIQIgCkEIaiIKKQMAQoCBgoSIkKDAgH+DIklCgIGChIiQoMCAf1ENAAsgSUKAgYKEiJCgwIB/hSFGCyAwIEZ6p0EDdiACakECdCIOaygCACIIIA1PDQUgEiATIAhBuAFsaigCsAEiByAecSIIaikAAEKAgYKEiJCgwIB/gyJJUARAQQghGwNAIAggG2ohCCAbQQhqIRsgEiAIIB5xIghqKQAAQoCBgoSIkKDAgH+DIklQDQALCyBGQgF9IEaDIUYgEiBJeqdBA3YgCGogHnEiCGosAABBAE4EQCASKQMAQoCBgoSIkKDAgH+DeqdBA3YhCAsgCCASaiAHQRl2Igc6AAAgMiAIQQhrIB5xaiAHOgAAIBIgCEECdGtBBGsgBiAOa0EEaygAADYAACAXQQFrIhcNAAsLIBwgHjYCBCAcIBI2AgAgHCAeIC5BA3ZBB2wgHkEISRsgJWs2AgggLEUNAiAGIAtBAnRBB2pBeHEiCmsiBkEEaygCACICQXhxIgggCiAsakEJaiIKQQRBCCACQQNxIgIbakkNBCACQQAgCCAKQSdqSxsNBSAGEKICDAILICBBADYCGCAgQQE2AgwgIEHEtcQANgIIICBCBDcCECAgQQhqQcy1xAAQjQgLAAsgIEEgaiQADAQLIAggDUHQm8gAEIwHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALICBBADYCGCAgQQE2AgwgIEHEtcQANgIIICBCBDcCECAgQQhqQcy1xAAQjQgACwsgA0GoAWohAyAJKAIkIhdBBGshCCAJKAIoIg4gKHEhJyAoQRl2IgetQoGChIiQoMCAAX4hRkEAIS5BACEGA0ACQAJAAkACQAJAAkACQAJAAkAgFyAnaikAACJHIEaFIklCf4UgSUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyJJUEUEQANAIAggSXqnQQN2ICdqIA5xQQJ0aygCACIlIA1PDQMgEyAlQbgBbCIKaiICQawBaigCACAZRgRAICEgAkGoAWooAgAgGRDbB0UNAwsgSUIBfSBJgyJJUEUNAAsLIEdCgIGChIiQoMCAf4MhSSAuRQRAIElQDQMgSXqnQQN2ICdqIA5xIR0LIEkgR0IBhoNQBEBBASEuDAkLIBcgHWosAAAiJ0EATgRAIBcgFykDAEKAgYKEiJCgwIB/g3qnQQN2Ih1qLQAAIScLIBcgHWogBzoAACAXIB1BCGsgDnFqQQhqIAc6AAAgFyAdQQJ0a0EEayAJKAIgIhM2AgAgCSAJKAIwQQFqIgo2AjAgCSAJKAIsICdBAXFrIgI2AiwgEyAJKAIYIgZHDQZBwqzIBSACIApqIicgJ0HCrMgFTxsiBiATa0EBTSATICdLcg0EQQAhJyATBEAgCSAJKAIcNgKAAyAJIBNBuAFsNgKIA0EIIScLIAkgJzYChAMgCUHEA2pBCCAGQbgBbCAJQYADahCFByAJKALEA0EBRg0EDAULICUgCSgCICICTw0CIAkoAhwgCmoiAikDACACIAkpA9gCNwMAIAJBCGogI/0AAwD9CwMAIAJBGGogFv0AAwD9CwMAIAIoApABITAgAigCjAEhFyACKAJ8IQcgAigCeCENIAIoAjwhHSACKAI4IRMgAigCNCEOIAIoAjAhBiACKAIsISUgAigCKCEIIAIgGTYCLCACIBU2AiggAkEwaiAJQeABakH4APwKAAAgGQRAICFBBGsoAgAiAkF4cSIKQQRBCCACQQNxIgIbIBlqSQ0hIAJBACAKIBlBJ2pLGw0gICEQogILQgJRDQYgJQRAIAhBBGsoAgAiAkF4cSIKQQRBCCACQQNxIgIbICVqSQ0hIAJBACAKICVBJ2pLGw0gIAgQogILIA4EQCAGQQRrKAIAIgJBeHEiCkEEQQggAkEDcSICGyAOakkNISACQQAgCiAOQSdqSxsNICAGEKICCwJAIBdFDQAgFyAXKAIAIgJBAWs2AgAgAkEBRw0AIBcQ3QULAkAgMEUNACAwIDAoAgAiAkEBazYCACACQQFHDQAgMBDdBQsgHQRAIBNBBGsoAgAiAkF4cSIKQQRBCCACQQNxIgIbIB1qSQ0hIAJBACAKIB1BJ2pLGw0gIBMQogILIA1FDQYgB0EEaygCACICQXhxIgggDUEFdCIKQQRBCCACQQNxIgIbckkNICACQQAgCCAKQSdqSxsNHyAHEKICDAYLICUgDUGQm8gAEIwHAAtBACEuDAULICUgAkGwm8gAEIwHAAsgE0HBrMgFTQR/IBNBAWoiBkG4AWwhAiAJIBMEfyAJIAkoAhw2AoADIAkgE0G4AWw2AogDQQgFQQALNgKEAyAJQcQDakEIIAIgCUGAA2oQhQcgCSgCxANBAUcNASAJKALMAyEnIAkoAsgDBUEACyAnQcCbyAAQkwkACyAJKALIAyECIAkgBjYCGCAJIAI2AhwLIAYgE0YEQCMAQSBrIgYkAAJAIAUoAgAiCEGhluQCSwR/QQAFQQQgCEEBdCICIAJBBE0bIgpBuAFsIQIgBiAIBH8gBiAIQbgBbDYCHCAGIAUoAgQ2AhRBCAVBAAs2AhggBkEIakEIIAIgBkEUahCFByAGKAIIQQFHDQEgBigCECEFIAYoAgwLIAVBoJvIABCTCQALIAYoAgwhAiAFIAo2AgAgBSACNgIEIAZBIGokAAsgCSgCHCATQbgBbGoiAiAJQThqQagB/AoAACACICg2ArABIAIgGTYCrAEgAiAhNgKoASAJIBNBAWo2AiALIAMgOEcNAwwGCyAGQQhqIgYgJ2ogDnEhJwwACwALC0GE7sEAEP8HAAtBgJvIABD/BwALAAsCQCAmBEAgD0EEaygCACICQXhxIgogJkGoAWwiA0EEQQggAkEDcSICG2pJDRQgAkEAIAogA0EnaksbDRMgDxCiAgsgGCAJ/QADCP0LAxAgGCA1NgJcIBggMzYCWCAYIAw2AkQgGCAQNgJAIBggFP0AAxD9CwNIIBggFP0AAwD9CwMAIBhBMGogCUEoav0AAwD9CwMAIBhBIGogCUEYav0AAwD9CwMAIAlB0ANqJAAMAAsCQCAtQYaAgIB4Rg0AAkACQEEBIC1B/////wdqIC1BgICAgHhNGw4CAAECCyA2Qf8BcUEDRw0BIDEoAgAhCiAxQQRqKAIAIgMoAgAiAgRAIAogAhEDAAsgAygCBCICBEAgCiACIAMoAggQogcLIDFBDEEEEKIHDAELIC1BgICAgHhyQYCAgIB4Rg0AIDZB/wFxIDtBCHRyIC1BARCiBwsgBCkDQCJJQgNRDQ8gBEE4aiIKIARB0ABqKAIANgIAIAQgBCkDSDcDMCAEQeABaiIDIARB1ABqQcwA/AoAACAEQdgEaiICIAooAgA2AgAgBCAEKQMwNwPQBEHoABBxIgpFDQYgCiBJNwMIIApCgYCAgBA3AwAgCiAEKQPQBDcDECAKQRhqIAIoAgA2AgAgCkEcaiADQcwA/AoAACAAIAo2AhAgACAB/QADAP0LAwAMEAsMEAtB2IzBABD/BwALQZONwQAhAyAEQZONwQA2AqABQYOAgIB4IQVBLyEIDAkLDA0LDA0LIARB4AFqEOoDICBFICNFckUEQCAmICNBARCiBwsgG0UNAiASIBtBARCiBwwCCwALIAMEQCAWIANBARCiBwsgIyEDICYhFgsgFq0gA61CIIaEDAILQeiNwQAhBkEgIQNBgICAgHghBQsgBCADNgLUBCAEIAY2AtAEIAZB////B3GtIAQzANMEQhiGhCADQQh2Qf//A3GtQiiGhCADQRh2rUI4hoQLIkY3A6ABIAQoArADIQIgCARAIAIhAwNAIAMQ6gMgA0GoAWohAyAIQQFrIggNAAsLAkAgBCgCrAMiCARAIAJBBGsoAgAiA0F4cSIGIAhBqAFsIghBBEEIIANBA3EiAxtqSQ0IIANBACAGIAhBJ2pLGw0BIAIQogILIEZCIIinIQggRqchAwwBCwwFCwJAAkAgLUGGgICAeEYNAAJAAkACQEEBIC1B/////wdqIC1BgICAgHhNGw4CAAEDCyA2Qf8BcUEDRw0CIDEoAgAhByAxQQRqKAIAIgYoAgAiAgRAIAcgAhEDAAsgBigCBCINBEAgB0EEaygCACICQXhxIgZBBEEIIAJBA3EiAhsgDWpJDQQgAkEAIAYgDUEnaksbDQkgBxCiAgsgMUEEaygCACICQXhxIgZBEEEUIAJBA3EiAhtJDQkgAkUgBkE0SXINAQwICyAtQYCAgIB4ckGAgICAeEYNASA2Qf8BcSA7QQh0ciIxQQRrKAIAIgJBeHEiBkEEQQggAkEDcSICGyAtakkNCCACRQ0AIAYgLUEnaksNBwsgMRCiAgsgDARAIBlBBGsoAgAiAkF4cSIGQQRBCCACQQNxIgIbIAxqSQ0HIAJBACAGIAxBJ2pLGw0GIBkQogILIANBCHYhOyAQIQ0gBSEnIAMhNiAIITEgBSEtIDNFIDVFcg0BIDNBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIDVqSQ0GIAJBACADIDVBJ2pLGw0FIDMQogIMAQsLDAQLAkAgLUGGgICAeEYEQCAMIS0gBSEDIAghMQwBCyA2Qf8BcSA7QQh0ciEDAkACQEEBIAxB/////wdqIAxBgICAgHhNGw4CAAECCyAFQf8BcUEDRw0BIAgoAgAhCiAIQQRqKAIAIgIoAgAiAQRAIAogAREDAAsgAigCBCIBBEAgCiABIAIoAggQogcLIAhBBGsoAgAiAUF4cSICQRBBFCABQQNxIgEbSQ0FIAFBACACQTRPGw0EIAgQogIMAQsgDEGAgICAeHJBgICAgHhGDQAgBSAMQQEQogcLIAQgMTYCUCAEIAM2AkwgBCAtNgJICyAEQThqIARB0ABqKAIAIgE2AgAgBCAEKQNIIkk3AzAgAEEMaiABNgIAIAAgSTcCBCAAQQA2AgALIARBwAZqJAAPC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvpigECHH8HfSMAQSBrIh0kAAJAAkAgAUEhSQRAIAAhCCABIQcMAQsgAkEEayEhIAJBEGshIgNAIARFBEAgACABIAIgA0EBIAYQVAwDCyAAIAFBA3YiCEEcbGohDiAAIAhBBHRqIQ8CQCABQcAATwRAIAAgDyAOIAggBhDBASERIAYoAgAhHgwBC0MAAIA/ISQCfwJAIAAoAgAiCCAGKAIAIh5BBGooAgAiB0EIaigCACISSQRAIA8oAgAhCyAHQQRqKAIAIgkgCEEkbGoiChCKBCEjIAovARQiCEH//wFxIhBFBEAgCEEQdAwDCyAIQf8HcSEHIAhBgIACcSERIAhBgPgBcSINQYD4AUYEQCARQRB0IhFBgICA/AdyIAdFDQMaIBEgB0ENdHJBgICA/gdyDAMLIBFBEHQhESANRQ0BIA1BDXRBgICA/ABxIAdBDXRyQYCAgMADaiARcgwCCyAIIBJB1MDHABCMBwALIBFBgICA2ANyIAdnQRBrIhFBF3RrIAcgEUH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhJAtDAACAPyElAn8CQCALIBJJBEAgCSALQSRsaiINEIoEISYgDS8BFCIHQf//AXEiFEUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIREgB0GA+AFxIgxBgPgBRgRAIBFBEHQiEUGAgID8B3IgC0UNAxogESALQQ10ckGAgID+B3IMAwsgEUEQdCERIAxFDQEgDEENdEGAgID8AHEgC0ENdHJBgICAwANqIBFyDAILIAsgEkHUwMcAEIwHAAsgEUGAgIDYA3IgC2dBEGsiEUEXdGsgCyARQf//A3FBCGp0Qf///wNxcgu+IidDAACAP14EQCAnEMYFQ1T4LUCUQwAAgD+SkSElCyAOKAIAIREgChCKBCEnQwAAgD8hKAJ/IAhBEHQgEEUNABogCEH/B3EhCyAIQYCAAnEhCiAIQYD4AXEiCEGA+AFGBEAgCkEQdCIIQYCAgPwHciALRQ0BGiAIIAtBDXRyQYCAgP4HcgwBCyAKQRB0IgogCEENdEGAgID8AHEgC0ENdHJBgICAwANqciAIDQAaIApBgICA2ANyIAtnQRBrIghBF3RrIAsgCEH//wNxQQhqdEH///8DcXILviIpQwAAgD9eBEAgKRDGBUNU+C1AlEMAAIA/kpEhKAsCfwJAIBEgEkkEQCAjICOSICSUIiMgJiAmkiAllGBFIQogIyAjWyEMIAkgEUEkbGoiCxCKBCEjIAsvARQiCEH//wFxIhBFBEAgCEEQdAwDCyAIQf8HcSESIAhBgIACcSERIAhBgPgBcSIJQYD4AUYEQCARQRB0IhFBgICA/AdyIBJFDQMaIBEgEkENdHJBgICA/gdyDAMLIBFBEHQhESAJRQ0BIAlBDXRBgICA/ABxIBJBDXRyQYCAgMADaiARcgwCCyARIBJB1MDHABCMBwALIBFBgICA2ANyIBJnQRBrIhFBF3RrIBIgEUH//wNxQQhqdEH///8DcXILQwAAgD8hJL4iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISQLIAogDHEiCSAnICeSICiUIiUgJVsgJSAjICOSICSUYEVxRwRAIAAhEQwBC0MAAIA/ISMgDiAPIAkgDRCKBCIkICSSAn8gB0EQdCAURQ0AGiAHQf8HcSESIAdBgIACcSERIAdBgPgBcSIHQYD4AUYEQCARQRB0IgdBgICA/AdyIBJFDQEaIAcgEkENdHJBgICA/gdyDAELIBFBEHQiESAHQQ10QYCAgPwAcSASQQ10ckGAgIDAA2pyIAcNABogEUGAgIDYA3IgEmdBEGsiB0EXdGsgEiAHQf//A3FBCGp0Qf///wNxcgu+IiVDAACAP14EfSAlEMYFQ1T4LUCUQwAAgD+SkQUgIwuUIiMgI1sgIyALEIoEIiQgJJICfyAIQRB0IBBFDQAaIAhB/wdxIQcgCEGAgAJxIRIgCEGA+AFxIghBgPgBRgRAIBJBEHQiCEGAgID8B3IgB0UNARogCCAHQQ10ckGAgID+B3IMAQsgEkEQdCISIAhBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCA0AGiASQYCAgNgDciAHZ0EQayIIQRd0ayAHIAhB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXFzGyERCyAEQQFrIQQgHSARKAIAIgs2AgQgESAAa0ECdiESAkACQAJAIAUEQEMAAIA/ISMCfwJAIAUoAgAiCCAeQQRqKAIAIgdBCGooAgAiDkkEQCAHQQRqKAIAIgkgCEEkbGoiCBCKBCElIAgvARQiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCCAHQYCAAnEhDyAHQYD4AXEiB0GA+AFGBEAgD0EQdCIHQYCAgPwHciAIRQ0DGiAHIAhBDXRyQYCAgP4HcgwDCyAPQRB0IQ8gB0UNASAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogD3IMAgsgCCAOQdTAxwAQjAcACyAPQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgRAICQQxgVDVPgtQJRDAACAP5KRISMLQwAAgD8hJAJ/AkAgCyAOSQRAIAkgC0EkbGoiCBCKBCEmIAgvARQiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0DGiAHIAhBDXRyQYCAgP4HcgwDCyALQRB0IQsgB0UNASAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogC3IMAgsgCyAOQdTAxwAQjAcACyALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJ0MAAIA/XgRAICcQxgVDVPgtQJRDAACAP5KRISQLICUgJZIgI5QiIyAjXCAjICYgJpIgJJRgcg0BCyABIANLDQEgAiABQQJ0IhhqIQ9BACEHIAAhDiASIQsDQCAAIAtBA2siCEEAIAggC00bQQJ0aiIcIA5LBEAgESgCACENIB5BBGoiHygCACIbIQgDQAJ/AkAgDigCACIUIBtBCGooAgAiCUkEQCAbQQRqKAIAIBRBJGxqIhAvARwhCkEAIQlBACAQLwEeIgxB//8BcSITQYD4AUsNAhpBACAKQf//AXEiFUGA+AFLDQIaIAzBQQBIDQEgCiAMSSAKwUEATg0CGiAMIBVyQQBHDAILIBQgCUHUwMcAEIwHAAsgCsFBAEggCiAMS3ELIRUgDCAKIBUbIAogE0GB+AFJGyEKAkAgEC8BICIMQf//AXEiE0GA+AFLDQAgCkH//wFxIhVBgPgBSw0AIAzBQQBOBEAgCsFBAE4EQCAMIApB//8DcUshCQwCCyAMIBVyQQBHIQkMAQsgCsFBAEggDCAKQf//A3FJcSEJCyAQLwEUIRACfyAMIAogCRsgCiATQYH4AUkbIgpB//8BcUUEQCAKQRB0DAELIApB/wdxIQkgCkGAgAJxIQwgCkGA+AFxIgpBgPgBRgRAIAxBEHQiCkGAgID8B3IgCUUNARogCiAJQQ10ckGAgID+B3IMAQsgDEEQdCIMIApBDXRBgICA/ABxIAlBDXRyQYCAgMADanIgCg0AGiAMQYCAgNgDciAJZ0EQayIKQRd0ayAJIApB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAQQRB0IBBB//8BcUUNABogEEH/B3EhCSAQQYCAAnEhCiAQQYD4AXEiDEGA+AFGBEAgCkEQdCIKQYCAgPwHciAJRQ0BGiAKIAlBDXRyQYCAgP4HcgwBCyAKQRB0IgogDEENdEGAgID8AHEgCUENdHJBgICAwANqciAMDQAaIApBgICA2ANyIAlnQRBrIgpBF3RrIAkgCkH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIAhBCGoiFSgCACIJIA1LBEAgDUEkbCIQIAhBBGoiGigCAGoiDC8BHCEJQQAhCEEAIAwvAR4iCkH//wFxIhNBgPgBSw0CGkEAIAlB//8BcSIWQYD4AUsNAhogCsFBAEgNASAJIApJIAnBQQBODQIaIAogFnJBAEcMAgsgDSAJQdTAxwAQjAcACyAJwUEASCAJIApLcQshFiAKIAkgFhsgCSATQYH4AUkbIQkCQCAMLwEgIgpB//8BcSITQYD4AUsNACAJQf//AXEiFkGA+AFLDQAgCsFBAE4EQCAJwUEATgRAIAogCUH//wNxSyEIDAILIAogFnJBAEchCAwBCyAJwUEASCAKIAlB//8DcUlxIQgLIAwvARQhDCAHQQJ0IAIgD0EEayAkICSSICOUIiMgI1sgIwJ/IAogCSAIGyAJIBNBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhCCAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIJQYCAgPwHciAIRQ0BGiAJIAhBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAhnQRBrIglBF3RrIAggCUH//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQggDEGAgAJxIQkgDEGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiFhtqIBQ2AgACfwJAIA5BBGooAgAiFCAVKAIAIhNJBEAgGigCACIXIBRBJGxqIgwvARwhCUEAIQhBACAMLwEeIgpB//8BcSIZQYD4AUsNAhpBACAJQf//AXEiIEGA+AFLDQIaIArBQQBIDQEgCSAKSSAJwUEATg0CGiAKICByQQBHDAILIBQgE0HUwMcAEIwHAAsgCcFBAEggCSAKS3ELISAgCiAJICAbIAkgGUGB+AFJGyEJAkAgDC8BICIKQf//AXEiGUGA+AFLDQAgCUH//wFxIiBBgPgBSw0AIArBQQBOBEAgCcFBAE4EQCAKIAlB//8DcUshCAwCCyAKICByQQBHIQgMAQsgCcFBAEggCiAJQf//A3FJcSEICyAMLwEUIQwCfyAKIAkgCBsgCSAZQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQggCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhCCAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAIRQ0BGiAJIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgCEENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAhnQRBrIglBF3RrIAggCUH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gE0kEQCAQIBdqIgwvARwhCUEAIQhBACAMLwEeIgpB//8BcSITQYD4AUsNAhpBACAJQf//AXEiF0GA+AFLDQIaIArBQQBIDQEgCSAKSSAJwUEATg0CGiAKIBdyQQBHDAILIA0gE0HUwMcAEIwHAAsgCcFBAEggCSAKS3ELIRcgCiAJIBcbIAkgE0GB+AFJGyEJAkAgDC8BICIKQf//AXEiE0GA+AFLDQAgCUH//wFxIhdBgPgBSw0AIArBQQBOBEAgCcFBAE4EQCAKIAlB//8DcUshCAwCCyAKIBdyQQBHIQgMAQsgCcFBAEggCiAJQf//A3FJcSEICyAMLwEUIQwgByAWaiIWQQJ0IAIgD0EIayAkICSSICOUIiMgI1sgIwJ/IAogCSAIGyAJIBNBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQggDEGAgAJxIQcgDEGA+AFxIglBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiExtqIBQ2AgACfwJAIA5BCGooAgAiFCAVKAIAIghJBEAgGigCACAUQSRsaiIKLwEcIQhBACEJQQAgCi8BHiIHQf//AXEiDEGA+AFLDQIaQQAgCEH//wFxIhVBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAVckEARwwCCyAUIAhB1MDHABCMBwALIAjBQQBIIAcgCElxCyEVIAcgCCAVGyAIIAxBgfgBSRshCAJAIAovASAiB0H//wFxIgxBgPgBSw0AIAhB//8BcSIVQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAVckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgCi8BFCEKAn8gByAIIAkbIAggDEGB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCUGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gCkEQdCAKQf//AXFFDQAaIApB/wdxIQggCkGAgAJxIQcgCkGA+AFxIglBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAfKAIAIghBCGoiFSgCACIHIA1LBEAgCEEEaiIaKAIAIBBqIgwvARwhB0EAIQpBACAMLwEeIglB//8BcSIXQYD4AUsNAhpBACAHQf//AXEiGUGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBlyQQBHDAILIA0gB0HUwMcAEIwHAAsgB8FBAEggByAJS3ELIRkgCSAHIBkbIAcgF0GB+AFJGyEHAkAgDC8BICIJQf//AXEiF0GA+AFLDQAgB0H//wFxIhlBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCgwCCyAJIBlyQQBHIQoMAQsgB8FBAEggCSAHQf//A3FJcSEKCyAMLwEUIQwgEyAWaiIWQQJ0IAIgD0EMayAkICSSICOUIiMgI1sgIwJ/IAkgByAKGyAHIBdBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhByAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgB0ENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQcgDEGAgAJxIQkgDEGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiFxtqIBQ2AgACfwJAIA5BDGooAgAiFCAVKAIAIhNJBEAgGigCACIVIBRBJGxqIgwvARwhB0EAIQpBACAMLwEeIglB//8BcSIaQYD4AUsNAhpBACAHQf//AXEiGUGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBlyQQBHDAILIBQgE0HUwMcAEIwHAAsgB8FBAEggByAJS3ELIRkgCSAHIBkbIAcgGkGB+AFJGyEHAkAgDC8BICIJQf//AXEiGkGA+AFLDQAgB0H//wFxIhlBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCgwCCyAJIBlyQQBHIQoMAQsgB8FBAEggCSAHQf//A3FJcSEKCyAMLwEUIQwCfyAJIAcgChsgByAaQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74QiQQhJUMAAIA/ISMCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhByAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgB0ENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILviIkQwAAgD9eBEAgJBDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gE0kEQCAQIBVqIgwvARwhB0EAIQlBACAMLwEeIgpB//8BcSIQQYD4AUsNAhpBACAHQf//AXEiE0GA+AFLDQIaIArBQQBIDQEgByAKSSAHwUEATg0CGiAKIBNyQQBHDAILIA0gE0HUwMcAEIwHAAsgB8FBAEggByAKS3ELIRMgCiAHIBMbIAcgEEGB+AFJGyEHAkAgDC8BICIKQf//AXEiEEGA+AFLDQAgB0H//wFxIhNBgPgBSw0AIArBQQBOBEAgB8FBAE4EQCAKIAdB//8DcUshCQwCCyAKIBNyQQBHIQkMAQsgB8FBAEggCiAHQf//A3FJcSEJCyAMLwEUIQwCfyAKIAcgCRsgByAQQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74QiQQhJkMAAIA/ISQCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhByAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgB0ENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILviInQwAAgD9eBEAgJxDGBUNU+C1AlEMAAIA/kpEhJAsgFiAXaiIHQQJ0IAIgD0EQayIPICUgJZIgI5QiIyAjWyAjICYgJpIgJJRgRXEiCRtqIBQ2AgAgByAJaiEHIA5BEGoiDiAcSQ0ACwsgACALQQJ0aiIbIA5LBEAgHkEEaigCACETIBEoAgAhDANAAn8CQCAOKAIAIhAgE0EIaigCACIUSQRAIBNBBGooAgAiFSAQQSRsaiINLwEcIQhBACEJQQAgDS8BHiIKQf//AXEiGkGA+AFLDQIaQQAgCEH//wFxIhxBgPgBSw0CGiAKwUEASA0BIAggCkkgCMFBAE4NAhogCiAcckEARwwCCyAQIBRB1MDHABCMBwALIAjBQQBIIAggCktxCyEcIAogCCAcGyAIIBpBgfgBSRshCAJAIA0vASAiCkH//wFxIhpBgPgBSw0AIAhB//8BcSIcQYD4AUsNACAKwUEATgRAIAjBQQBOBEAgCiAIQf//A3FLIQkMAgsgCiAcckEARyEJDAELIAjBQQBIIAogCEH//wNxSXEhCQsgDS8BFCENAn8gCiAIIAkbIAggGkGB+AFJGyIJQf//AXFFBEAgCUEQdAwBCyAJQf8HcSEIIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAhFDQEaIAkgCEENdHJBgICA/gdyDAELIApBEHQiCiAJQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAkNABogCkGAgIDYA3IgCGdBEGsiCUEXdGsgCCAJQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gDUEQdCANQf//AXFFDQAaIA1B/wdxIQggDUGAgAJxIQkgDUGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAMIBRJBEAgFSAMQSRsaiINLwEcIQhBACEJQQAgDS8BHiIKQf//AXEiFEGA+AFLDQIaQQAgCEH//wFxIhVBgPgBSw0CGiAKwUEASA0BIAggCkkgCMFBAE4NAhogCiAVckEARwwCCyAMIBRB1MDHABCMBwALIAjBQQBIIAggCktxCyEVIAogCCAVGyAIIBRBgfgBSRshCAJAIA0vASAiCkH//wFxIhRBgPgBSw0AIAhB//8BcSIVQYD4AUsNACAKwUEATgRAIAjBQQBOBEAgCiAIQf//A3FLIQkMAgsgCiAVckEARyEJDAELIAjBQQBIIAogCEH//wNxSXEhCQsgDS8BFCENIAdBAnQgAiAPQQRrIg8gJCAkkiAjlCIjICNbICMCfyAKIAggCRsgCCAUQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQggCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IA1BEHQgDUH//wFxRQ0AGiANQf8HcSEIIA1BgIACcSEJIA1BgPgBcSIKQYD4AUYEQCAJQRB0IglBgICA/AdyIAhFDQEaIAkgCEENdHJBgICA/gdyDAELIAlBEHQiCSAKQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAoNABogCUGAgIDYA3IgCGdBEGsiCUEXdGsgCCAJQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYEVxIggbaiAQNgIAIAcgCGohByAOQQRqIg4gG0kNAAsLIAEgC0cEQCAPQQRrIg8gB0ECdGogDigCADYCACAOQQRqIQ4gASELDAELCyAHQQJ0IggEQCAAIAIgCPwKAAALIAEgB2shCQJAIAEgB0YNAEEAIQogCUEETwRAIAAgCGohDiAYICJqIQ8gCUF8cSIKIQsDQCAOIA/9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAPQRBrIQ8gDkEQaiEOIAtBBGsiCw0ACyAJIApGDQELICEgGCAKQQJ0IgtraiEOIAAgC2ogCGohDyAKIAFrIAdqIQsDQCAPIA4oAgA2AgAgDkEEayEOIA9BBGohDyALQQFqIgsNAAsLIAdFDQAgASAHTw0CIB1BADYCGCAdQQE2AgwgHUGIgsgANgIIIB1CBDcCECAdQQhqQfSUwQAQjQgACyABIANLDQAgAiABQQJ0Ih5qIQ8gBigCACEUQQAhCyAAIQ4DQCAAIBJBA2siBUEAIAUgEk0bQQJ0aiIVIA5LBEAgFEEEaiIaKAIAIRMgESgCACEFIAYoAgBBBGohHANAAn8CQCATQQhqKAIAIgggBUsEQCAFQSRsIgwgE0EEaigCAGoiCi8BHCEIQQAhCUEAIAovAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIQQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgEHJBAEcMAgsgBSAIQdTAxwAQjAcACyAIwUEASCAHIAhJcQshECAHIAggEBsgCCANQYH4AUkbIQgCQCAKLwEgIgdB//8BcSIQQYD4AUsNACAIQf//AXEiDUGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEJDAILIAcgDXJBAEchCQwBCyAIwUEASCAHIAhB//8DcUlxIQkLIA4oAgAhDSAKLwEUIQoCfyAHIAggCRsgCCAQQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiAJQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAKQRB0IApB//8BcUUNABogCkH/B3EhCCAKQYCAAnEhByAKQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIBooAgAiCEEIaigCACIHIA1LBEAgCEEEaigCACANQSRsaiIKLwEcIQhBACEJQQAgCi8BHiIHQf//AXEiEEGA+AFLDQIaQQAgCEH//wFxIhhBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAYckEARwwCCyANIAdB1MDHABCMBwALIAjBQQBIIAcgCElxCyEYIAcgCCAYGyAIIBBBgfgBSRshCAJAIAovASAiB0H//wFxIhBBgPgBSw0AIAhB//8BcSIYQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAYckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgCi8BFCEKIAtBAnQgAiAPQQRrICQgJJIgI5QiIyAjXCAjAn8gByAIIAkbIAggEEGB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCUGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEIiQgJJICfyAKQRB0IApB//8BcUUNABogCkH/B3EhCCAKQYCAAnEhByAKQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIkQwAAgD9eBH0gJBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGByIh8baiANNgIAAn8CQCAcKAIAIghBCGoiGCgCACIQIAVLBEAgCEEEaiIbKAIAIhYgDGoiCS8BHCEIQQAhCkEAIAkvAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIXQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgF3JBAEcMAgsgBSAQQdTAxwAQjAcACyAIwUEASCAHIAhJcQshFyAHIAggFxsgCCANQYH4AUkbIQgCQCAJLwEgIgdB//8BcSIXQYD4AUsNACAIQf//AXEiDUGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEKDAILIAcgDXJBAEchCgwBCyAIwUEASCAHIAhB//8DcUlxIQoLIA5BBGooAgAhDSAJLwEUIQkCfyAHIAggChsgCCAXQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQogB0GA+AFxIgdBgPgBRgRAIApBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiAKQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAJQRB0IAlB//8BcUUNABogCUH/B3EhCCAJQYCAAnEhByAJQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gEEkEQCAWIA1BJGxqIgovARwhB0EAIQhBACAKLwEeIglB//8BcSIQQYD4AUsNAhpBACAHQf//AXEiFkGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBZyQQBHDAILIA0gEEHUwMcAEIwHAAsgB8FBAEggByAJS3ELIRYgCSAHIBYbIAcgEEGB+AFJGyEHAkAgCi8BICIJQf//AXEiEEGA+AFLDQAgB0H//wFxIhZBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCAwCCyAJIBZyQQBHIQgMAQsgB8FBAEggCSAHQf//A3FJcSEICyAKLwEUIQogCyAfaiIfQQJ0IAIgD0EIayAkICSSICOUIiMgI1wgIwJ/IAkgByAIGyAHIBBBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyALQRB0IgsgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAtBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gCkEQdCAKQf//AXFFDQAaIApB/wdxIQggCkGAgAJxIQcgCkGA+AFxIgtBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgciIQG2ogDTYCAAJ/AkAgGCgCACIJIAVLBEAgGygCACIWIAxqIgsvARwhCEEAIQpBACALLwEeIgdB//8BcSINQYD4AUsNAhpBACAIQf//AXEiF0GA+AFLDQIaIAfBQQBIDQEgByAISyAIwUEATg0CGiAHIBdyQQBHDAILIAUgCUHUwMcAEIwHAAsgCMFBAEggByAISXELIRcgByAIIBcbIAggDUGB+AFJGyEIAkAgCy8BICIHQf//AXEiF0GA+AFLDQAgCEH//wFxIg1BgPgBSw0AIAfBQQBOBEAgCMFBAE4EQCAHIAhB//8DcUshCgwCCyAHIA1yQQBHIQoMAQsgCMFBAEggByAIQf//A3FJcSEKCyAOQQhqKAIAIQ0gCy8BFCELAn8gByAIIAobIAggF0GB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEKIAdBgPgBcSIHQYD4AUYEQCAKQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIApBEHQiCiAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCkGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gC0EQdCALQf//AXFFDQAaIAtB/wdxIQggC0GAgAJxIQcgC0GA+AFxIgtBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAJIA1LBEAgFiANQSRsaiIJLwEcIQdBACEIQQAgCS8BHiILQf//AXEiCkGA+AFLDQIaQQAgB0H//wFxIhZBgPgBSw0CGiALwUEASA0BIAcgC0kgB8FBAE4NAhogCyAWckEARwwCCyANIAlB1MDHABCMBwALIAfBQQBIIAcgC0txCyEWIAsgByAWGyAHIApBgfgBSRshBwJAIAkvASAiC0H//wFxIgpBgPgBSw0AIAdB//8BcSIWQYD4AUsNACALwUEATgRAIAfBQQBOBEAgCyAHQf//A3FLIQgMAgsgCyAWckEARyEIDAELIAfBQQBIIAsgB0H//wNxSXEhCAsgCS8BFCEJIBAgH2oiEEECdCACIA9BDGsgJCAkkiAjlCIjICNcICMCfyALIAcgCBsgByAKQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQsgB0GA+AFxIgdBgPgBRgRAIAtBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgC0EQdCILIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IAlBEHQgCUH//wFxRQ0AGiAJQf8HcSEIIAlBgIACcSEHIAlBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYHIiHxtqIA02AgACfwJAIBgoAgAiDSAFSwRAIAwgGygCACIYaiILLwEcIQhBACEJQQAgCy8BHiIHQf//AXEiCkGA+AFLDQIaQQAgCEH//wFxIgxBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAMckEARwwCCyAFIA1B1MDHABCMBwALIAjBQQBIIAcgCElxCyEMIAcgCCAMGyAIIApBgfgBSRshCAJAIAsvASAiB0H//wFxIgxBgPgBSw0AIAhB//8BcSIKQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAKckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgDkEMaigCACEKIAsvARQhCwJ/IAcgCCAJGyAIIAxBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCElQwAAgD8hIwJ/IAtBEHQgC0H//wFxRQ0AGiALQf8HcSEIIAtBgIACcSEHIAtBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EQCAkEMYFQ1T4LUCUQwAAgD+SkSEjCwJ/AkAgCiANSQRAIBggCkEkbGoiCy8BHCEIQQAhCUEAIAsvAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIMQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgDHJBAEcMAgsgCiANQdTAxwAQjAcACyAIwUEASCAHIAhJcQshDCAHIAggDBsgCCANQYH4AUkbIQgCQCALLwEgIgdB//8BcSINQYD4AUsNACAIQf//AXEiDEGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEJDAILIAcgDHJBAEchCQwBCyAIwUEASCAHIAhB//8DcUlxIQkLIAsvARQhCwJ/IAcgCCAJGyAIIA1BgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCEmQwAAgD8hJAJ/IAtBEHQgC0H//wFxRQ0AGiALQf8HcSEIIAtBgIACcSEHIAtBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IidDAACAP14EQCAnEMYFQ1T4LUCUQwAAgD+SkSEkCyAQIB9qIghBAnQgAiAPQRBrIg8gJSAlkiAjlCIjICNcICMgJiAmkiAklGByIgcbaiAKNgIAIAcgCGohCyAOQRBqIg4gFUkNAAsLIAAgEkECdGoiEyAOSwRAIBRBBGooAgAhECARKAIAIQ0DQAJ/AkAgEEEIaigCACIMIA1LBEAgEEEEaigCACIYIA1BJGxqIgkvARwhBUEAIQdBACAJLwEeIghB//8BcSIKQYD4AUsNAhpBACAFQf//AXEiG0GA+AFLDQIaIAjBQQBIDQEgBSAISSAFwUEATg0CGiAIIBtyQQBHDAILIA0gDEHUwMcAEIwHAAsgBcFBAEggBSAIS3ELIRsgCCAFIBsbIAUgCkGB+AFJGyEFAkAgCS8BICIIQf//AXEiG0GA+AFLDQAgBUH//wFxIgpBgPgBSw0AIAjBQQBOBEAgBcFBAE4EQCAIIAVB//8DcUshBwwCCyAIIApyQQBHIQcMAQsgBcFBAEggCCAFQf//A3FJcSEHCyAOKAIAIQogCS8BFCEJAn8gCCAFIAcbIAUgG0GB+AFJGyIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSEHIAhBgPgBcSIIQYD4AUYEQCAHQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAdBEHQiByAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogB0GAgIDYA3IgBWdBEGsiCEEXdGsgBSAIQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gCUEQdCAJQf//AXFFDQAaIAlB/wdxIQUgCUGAgAJxIQggCUGA+AFxIgdBgPgBRgRAIAhBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgBw0AGiAIQYCAgNgDciAFZ0EQayIIQRd0ayAFIAhB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAKIAxJBEAgGCAKQSRsaiIHLwEcIQVBACEJQQAgBy8BHiIIQf//AXEiDEGA+AFLDQIaQQAgBUH//wFxIhhBgPgBSw0CGiAIwUEASA0BIAUgCEkgBcFBAE4NAhogCCAYckEARwwCCyAKIAxB1MDHABCMBwALIAXBQQBIIAUgCEtxCyEYIAggBSAYGyAFIAxBgfgBSRshBQJAIAcvASAiCEH//wFxIgxBgPgBSw0AIAVB//8BcSIYQYD4AUsNACAIwUEATgRAIAXBQQBOBEAgCCAFQf//A3FLIQkMAgsgCCAYckEARyEJDAELIAXBQQBIIAggBUH//wNxSXEhCQsgBy8BFCEHIAtBAnQgAiAPQQRrIg8gJCAkkiAjlCIjICNcICMCfyAIIAUgCRsgBSAMQYH4AUkbIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAJQYCAgNgDciAFZ0EQayIIQRd0ayAFIAhB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IAdBEHQgB0H//wFxRQ0AGiAHQf8HcSEFIAdBgIACcSEIIAdBgPgBcSIHQYD4AUYEQCAIQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAcNABogCEGAgIDYA3IgBWdBEGsiCEEXdGsgBSAIQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYHIiBRtqIAo2AgAgBSALaiELIA5BBGoiDiATSQ0ACwsgASASRwRAIAIgC0ECdGogDigCADYCACAOQQRqIQ4gC0EBaiELIA9BBGshDyABIRIMAQsLIAtBAnQiBQRAIAAgAiAF/AoAAAsgASALRg0EIAAgBWohCEEAIQoCQCABIAtrIgdBBE8EQCAeICJqIQ4gCCEPIAdBfHEiCiEJA0AgDyAO/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDkEQayEOIA9BEGohDyAJQQRrIgkNAAsgByAKRg0BCyAhIApBAnQiEmsgHmohDiAAIBJqIAVqIQ8gCiABayALaiEJA0AgDyAOKAIANgIAIA5BBGshDiAPQQRqIQ8gCUEBaiIJDQALCyABIAtPBEBBACEFIAghACAHIQEgB0EhSQ0EDAMLIAsgASABQYSVwQAQ6gcACwALIAAgCGogCSACIAMgBCAdQQRqIAYQMiAHIQEgB0EhTw0ACyAAIQgLIAdBAkkNACAGKAIAIQEgB0EBdiEAIAACfyAHQQ9NBEAgB0EHSwRAIAggAiABQQRqIgMoAgAQhgEgCCAAQQJ0IgRqIAIgBGogAygCABCGAUEEDAILIAIgCCgCADYCACACIABBAnQiA2ogAyAIaigCADYCAEEBDAELIAggAiAHQQJ0aiIDIAFBBGoiBCgCABCGASAIQRBqIANBEGogBCgCABCGASADQQggAiABEOQBIAggAEECdCIFaiIGIANBIGoiEiAEKAIAEIYBIAZBEGogA0EwaiAEKAIAEIYBIBJBCCACIAVqIAEQ5AFBCAsiA0sEQCAAIANrIQ8gA0ECdCEOA0AgAiAOaiIEIAggDmooAgA2AgAgAiAEIAEQ+gEgDkEEaiEOIA9BAWsiDw0ACwsgByAAayADSwRAIAIgAEECdCIEaiEFIAggA0ECdCAEaiIEaiEPIAIgBGohDiAAIANqIAdrIQkDQCAOIA8oAgA2AgAgBSAOIAEQ+gEgD0EEaiEPIA5BBGohDiAJQQFqIgkNAAsLIAIgByAIIAEQ5AELIB1BIGokAAvpigECHH8HfSMAQSBrIh0kAAJAAkAgAUEhSQRAIAAhCCABIQcMAQsgAkEEayEhIAJBEGshIgNAIARFBEAgACABIAIgA0EBIAYQVQwDCyAAIAFBA3YiCEEcbGohDiAAIAhBBHRqIQ8CQCABQcAATwRAIAAgDyAOIAggBhDBASERIAYoAgAhHgwBC0MAAIA/ISQCfwJAIAAoAgAiCCAGKAIAIh5BBGooAgAiB0EIaigCACISSQRAIA8oAgAhCyAHQQRqKAIAIgkgCEEkbGoiChCKBCEjIAovARQiCEH//wFxIhBFBEAgCEEQdAwDCyAIQf8HcSEHIAhBgIACcSERIAhBgPgBcSINQYD4AUYEQCARQRB0IhFBgICA/AdyIAdFDQMaIBEgB0ENdHJBgICA/gdyDAMLIBFBEHQhESANRQ0BIA1BDXRBgICA/ABxIAdBDXRyQYCAgMADaiARcgwCCyAIIBJB1MDHABCMBwALIBFBgICA2ANyIAdnQRBrIhFBF3RrIAcgEUH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhJAtDAACAPyElAn8CQCALIBJJBEAgCSALQSRsaiINEIoEISYgDS8BFCIHQf//AXEiFEUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIREgB0GA+AFxIgxBgPgBRgRAIBFBEHQiEUGAgID8B3IgC0UNAxogESALQQ10ckGAgID+B3IMAwsgEUEQdCERIAxFDQEgDEENdEGAgID8AHEgC0ENdHJBgICAwANqIBFyDAILIAsgEkHUwMcAEIwHAAsgEUGAgIDYA3IgC2dBEGsiEUEXdGsgCyARQf//A3FBCGp0Qf///wNxcgu+IidDAACAP14EQCAnEMYFQ1T4LUCUQwAAgD+SkSElCyAOKAIAIREgChCKBCEnQwAAgD8hKAJ/IAhBEHQgEEUNABogCEH/B3EhCyAIQYCAAnEhCiAIQYD4AXEiCEGA+AFGBEAgCkEQdCIIQYCAgPwHciALRQ0BGiAIIAtBDXRyQYCAgP4HcgwBCyAKQRB0IgogCEENdEGAgID8AHEgC0ENdHJBgICAwANqciAIDQAaIApBgICA2ANyIAtnQRBrIghBF3RrIAsgCEH//wNxQQhqdEH///8DcXILviIpQwAAgD9eBEAgKRDGBUNU+C1AlEMAAIA/kpEhKAsCfwJAIBEgEkkEQCAjICOSICSUIiMgJiAmkiAllGBFIQogIyAjWyEMIAkgEUEkbGoiCxCKBCEjIAsvARQiCEH//wFxIhBFBEAgCEEQdAwDCyAIQf8HcSESIAhBgIACcSERIAhBgPgBcSIJQYD4AUYEQCARQRB0IhFBgICA/AdyIBJFDQMaIBEgEkENdHJBgICA/gdyDAMLIBFBEHQhESAJRQ0BIAlBDXRBgICA/ABxIBJBDXRyQYCAgMADaiARcgwCCyARIBJB1MDHABCMBwALIBFBgICA2ANyIBJnQRBrIhFBF3RrIBIgEUH//wNxQQhqdEH///8DcXILQwAAgD8hJL4iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISQLIAogDHEiCSAnICeSICiUIiUgJVsgJSAjICOSICSUYEVxRwRAIAAhEQwBC0MAAIA/ISMgDiAPIAkgDRCKBCIkICSSAn8gB0EQdCAURQ0AGiAHQf8HcSESIAdBgIACcSERIAdBgPgBcSIHQYD4AUYEQCARQRB0IgdBgICA/AdyIBJFDQEaIAcgEkENdHJBgICA/gdyDAELIBFBEHQiESAHQQ10QYCAgPwAcSASQQ10ckGAgIDAA2pyIAcNABogEUGAgIDYA3IgEmdBEGsiB0EXdGsgEiAHQf//A3FBCGp0Qf///wNxcgu+IiVDAACAP14EfSAlEMYFQ1T4LUCUQwAAgD+SkQUgIwuUIiMgI1sgIyALEIoEIiQgJJICfyAIQRB0IBBFDQAaIAhB/wdxIQcgCEGAgAJxIRIgCEGA+AFxIghBgPgBRgRAIBJBEHQiCEGAgID8B3IgB0UNARogCCAHQQ10ckGAgID+B3IMAQsgEkEQdCISIAhBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCA0AGiASQYCAgNgDciAHZ0EQayIIQRd0ayAHIAhB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXFzGyERCyAEQQFrIQQgHSARKAIAIgs2AgQgESAAa0ECdiESAkACQAJAIAUEQEMAAIA/ISMCfwJAIAUoAgAiCCAeQQRqKAIAIgdBCGooAgAiDkkEQCAHQQRqKAIAIgkgCEEkbGoiCBCKBCElIAgvARQiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCCAHQYCAAnEhDyAHQYD4AXEiB0GA+AFGBEAgD0EQdCIHQYCAgPwHciAIRQ0DGiAHIAhBDXRyQYCAgP4HcgwDCyAPQRB0IQ8gB0UNASAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogD3IMAgsgCCAOQdTAxwAQjAcACyAPQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgRAICQQxgVDVPgtQJRDAACAP5KRISMLQwAAgD8hJAJ/AkAgCyAOSQRAIAkgC0EkbGoiCBCKBCEmIAgvARQiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0DGiAHIAhBDXRyQYCAgP4HcgwDCyALQRB0IQsgB0UNASAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogC3IMAgsgCyAOQdTAxwAQjAcACyALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJ0MAAIA/XgRAICcQxgVDVPgtQJRDAACAP5KRISQLICUgJZIgI5QiIyAjXCAjICYgJpIgJJRgcg0BCyABIANLDQEgAiABQQJ0IhhqIQ9BACEHIAAhDiASIQsDQCAAIAtBA2siCEEAIAggC00bQQJ0aiIcIA5LBEAgESgCACENIB5BBGoiHygCACIbIQgDQAJ/AkAgDigCACIUIBtBCGooAgAiCUkEQCAbQQRqKAIAIBRBJGxqIhAvARwhCkEAIQlBACAQLwEeIgxB//8BcSITQYD4AUsNAhpBACAKQf//AXEiFUGA+AFLDQIaIAzBQQBIDQEgCiAMSSAKwUEATg0CGiAMIBVyQQBHDAILIBQgCUHUwMcAEIwHAAsgCsFBAEggCiAMS3ELIRUgDCAKIBUbIAogE0GB+AFJGyEKAkAgEC8BICIMQf//AXEiE0GA+AFLDQAgCkH//wFxIhVBgPgBSw0AIAzBQQBOBEAgCsFBAE4EQCAMIApB//8DcUshCQwCCyAMIBVyQQBHIQkMAQsgCsFBAEggDCAKQf//A3FJcSEJCyAQLwEUIRACfyAMIAogCRsgCiATQYH4AUkbIgpB//8BcUUEQCAKQRB0DAELIApB/wdxIQkgCkGAgAJxIQwgCkGA+AFxIgpBgPgBRgRAIAxBEHQiCkGAgID8B3IgCUUNARogCiAJQQ10ckGAgID+B3IMAQsgDEEQdCIMIApBDXRBgICA/ABxIAlBDXRyQYCAgMADanIgCg0AGiAMQYCAgNgDciAJZ0EQayIKQRd0ayAJIApB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAQQRB0IBBB//8BcUUNABogEEH/B3EhCSAQQYCAAnEhCiAQQYD4AXEiDEGA+AFGBEAgCkEQdCIKQYCAgPwHciAJRQ0BGiAKIAlBDXRyQYCAgP4HcgwBCyAKQRB0IgogDEENdEGAgID8AHEgCUENdHJBgICAwANqciAMDQAaIApBgICA2ANyIAlnQRBrIgpBF3RrIAkgCkH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIAhBCGoiFSgCACIJIA1LBEAgDUEkbCIQIAhBBGoiGigCAGoiDC8BHCEJQQAhCEEAIAwvAR4iCkH//wFxIhNBgPgBSw0CGkEAIAlB//8BcSIWQYD4AUsNAhogCsFBAEgNASAJIApJIAnBQQBODQIaIAogFnJBAEcMAgsgDSAJQdTAxwAQjAcACyAJwUEASCAJIApLcQshFiAKIAkgFhsgCSATQYH4AUkbIQkCQCAMLwEgIgpB//8BcSITQYD4AUsNACAJQf//AXEiFkGA+AFLDQAgCsFBAE4EQCAJwUEATgRAIAogCUH//wNxSyEIDAILIAogFnJBAEchCAwBCyAJwUEASCAKIAlB//8DcUlxIQgLIAwvARQhDCAHQQJ0IAIgD0EEayAkICSSICOUIiMgI1sgIwJ/IAogCSAIGyAJIBNBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhCCAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIJQYCAgPwHciAIRQ0BGiAJIAhBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAhnQRBrIglBF3RrIAggCUH//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQggDEGAgAJxIQkgDEGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiFhtqIBQ2AgACfwJAIA5BBGooAgAiFCAVKAIAIhNJBEAgGigCACIXIBRBJGxqIgwvARwhCUEAIQhBACAMLwEeIgpB//8BcSIZQYD4AUsNAhpBACAJQf//AXEiIEGA+AFLDQIaIArBQQBIDQEgCSAKSSAJwUEATg0CGiAKICByQQBHDAILIBQgE0HUwMcAEIwHAAsgCcFBAEggCSAKS3ELISAgCiAJICAbIAkgGUGB+AFJGyEJAkAgDC8BICIKQf//AXEiGUGA+AFLDQAgCUH//wFxIiBBgPgBSw0AIArBQQBOBEAgCcFBAE4EQCAKIAlB//8DcUshCAwCCyAKICByQQBHIQgMAQsgCcFBAEggCiAJQf//A3FJcSEICyAMLwEUIQwCfyAKIAkgCBsgCSAZQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQggCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhCCAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAIRQ0BGiAJIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgCEENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAhnQRBrIglBF3RrIAggCUH//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gE0kEQCAQIBdqIgwvARwhCUEAIQhBACAMLwEeIgpB//8BcSITQYD4AUsNAhpBACAJQf//AXEiF0GA+AFLDQIaIArBQQBIDQEgCSAKSSAJwUEATg0CGiAKIBdyQQBHDAILIA0gE0HUwMcAEIwHAAsgCcFBAEggCSAKS3ELIRcgCiAJIBcbIAkgE0GB+AFJGyEJAkAgDC8BICIKQf//AXEiE0GA+AFLDQAgCUH//wFxIhdBgPgBSw0AIArBQQBOBEAgCcFBAE4EQCAKIAlB//8DcUshCAwCCyAKIBdyQQBHIQgMAQsgCcFBAEggCiAJQf//A3FJcSEICyAMLwEUIQwgByAWaiIWQQJ0IAIgD0EIayAkICSSICOUIiMgI1sgIwJ/IAogCSAIGyAJIBNBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQggDEGAgAJxIQcgDEGA+AFxIglBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiExtqIBQ2AgACfwJAIA5BCGooAgAiFCAVKAIAIghJBEAgGigCACAUQSRsaiIKLwEcIQhBACEJQQAgCi8BHiIHQf//AXEiDEGA+AFLDQIaQQAgCEH//wFxIhVBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAVckEARwwCCyAUIAhB1MDHABCMBwALIAjBQQBIIAcgCElxCyEVIAcgCCAVGyAIIAxBgfgBSRshCAJAIAovASAiB0H//wFxIgxBgPgBSw0AIAhB//8BcSIVQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAVckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgCi8BFCEKAn8gByAIIAkbIAggDEGB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCUGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gCkEQdCAKQf//AXFFDQAaIApB/wdxIQggCkGAgAJxIQcgCkGA+AFxIglBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAfKAIAIghBCGoiFSgCACIHIA1LBEAgCEEEaiIaKAIAIBBqIgwvARwhB0EAIQpBACAMLwEeIglB//8BcSIXQYD4AUsNAhpBACAHQf//AXEiGUGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBlyQQBHDAILIA0gB0HUwMcAEIwHAAsgB8FBAEggByAJS3ELIRkgCSAHIBkbIAcgF0GB+AFJGyEHAkAgDC8BICIJQf//AXEiF0GA+AFLDQAgB0H//wFxIhlBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCgwCCyAJIBlyQQBHIQoMAQsgB8FBAEggCSAHQf//A3FJcSEKCyAMLwEUIQwgEyAWaiIWQQJ0IAIgD0EMayAkICSSICOUIiMgI1sgIwJ/IAkgByAKGyAHIBdBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhByAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgB0ENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQcgDEGAgAJxIQkgDEGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiFxtqIBQ2AgACfwJAIA5BDGooAgAiFCAVKAIAIhNJBEAgGigCACIVIBRBJGxqIgwvARwhB0EAIQpBACAMLwEeIglB//8BcSIaQYD4AUsNAhpBACAHQf//AXEiGUGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBlyQQBHDAILIBQgE0HUwMcAEIwHAAsgB8FBAEggByAJS3ELIRkgCSAHIBkbIAcgGkGB+AFJGyEHAkAgDC8BICIJQf//AXEiGkGA+AFLDQAgB0H//wFxIhlBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCgwCCyAJIBlyQQBHIQoMAQsgB8FBAEggCSAHQf//A3FJcSEKCyAMLwEUIQwCfyAJIAcgChsgByAaQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74QiQQhJUMAAIA/ISMCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhByAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgB0ENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILviIkQwAAgD9eBEAgJBDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gE0kEQCAQIBVqIgwvARwhB0EAIQlBACAMLwEeIgpB//8BcSIQQYD4AUsNAhpBACAHQf//AXEiE0GA+AFLDQIaIArBQQBIDQEgByAKSSAHwUEATg0CGiAKIBNyQQBHDAILIA0gE0HUwMcAEIwHAAsgB8FBAEggByAKS3ELIRMgCiAHIBMbIAcgEEGB+AFJGyEHAkAgDC8BICIKQf//AXEiEEGA+AFLDQAgB0H//wFxIhNBgPgBSw0AIArBQQBOBEAgB8FBAE4EQCAKIAdB//8DcUshCQwCCyAKIBNyQQBHIQkMAQsgB8FBAEggCiAHQf//A3FJcSEJCyAMLwEUIQwCfyAKIAcgCRsgByAQQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAHZ0EQayIJQRd0ayAHIAlB//8DcUEIanRB////A3FyC74QiQQhJkMAAIA/ISQCfyAMQRB0IAxB//8BcUUNABogDEH/B3EhByAMQYCAAnEhCSAMQYD4AXEiCkGA+AFGBEAgCUEQdCIJQYCAgPwHciAHRQ0BGiAJIAdBDXRyQYCAgP4HcgwBCyAJQRB0IgkgCkENdEGAgID8AHEgB0ENdHJBgICAwANqciAKDQAaIAlBgICA2ANyIAdnQRBrIglBF3RrIAcgCUH//wNxQQhqdEH///8DcXILviInQwAAgD9eBEAgJxDGBUNU+C1AlEMAAIA/kpEhJAsgFiAXaiIHQQJ0IAIgD0EQayIPICUgJZIgI5QiIyAjWyAjICYgJpIgJJRgRXEiCRtqIBQ2AgAgByAJaiEHIA5BEGoiDiAcSQ0ACwsgACALQQJ0aiIbIA5LBEAgHkEEaigCACETIBEoAgAhDANAAn8CQCAOKAIAIhAgE0EIaigCACIUSQRAIBNBBGooAgAiFSAQQSRsaiINLwEcIQhBACEJQQAgDS8BHiIKQf//AXEiGkGA+AFLDQIaQQAgCEH//wFxIhxBgPgBSw0CGiAKwUEASA0BIAggCkkgCMFBAE4NAhogCiAcckEARwwCCyAQIBRB1MDHABCMBwALIAjBQQBIIAggCktxCyEcIAogCCAcGyAIIBpBgfgBSRshCAJAIA0vASAiCkH//wFxIhpBgPgBSw0AIAhB//8BcSIcQYD4AUsNACAKwUEATgRAIAjBQQBOBEAgCiAIQf//A3FLIQkMAgsgCiAcckEARyEJDAELIAjBQQBIIAogCEH//wNxSXEhCQsgDS8BFCENAn8gCiAIIAkbIAggGkGB+AFJGyIJQf//AXFFBEAgCUEQdAwBCyAJQf8HcSEIIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAhFDQEaIAkgCEENdHJBgICA/gdyDAELIApBEHQiCiAJQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAkNABogCkGAgIDYA3IgCGdBEGsiCUEXdGsgCCAJQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gDUEQdCANQf//AXFFDQAaIA1B/wdxIQggDUGAgAJxIQkgDUGA+AFxIgpBgPgBRgRAIAlBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIApBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCg0AGiAJQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAMIBRJBEAgFSAMQSRsaiINLwEcIQhBACEJQQAgDS8BHiIKQf//AXEiFEGA+AFLDQIaQQAgCEH//wFxIhVBgPgBSw0CGiAKwUEASA0BIAggCkkgCMFBAE4NAhogCiAVckEARwwCCyAMIBRB1MDHABCMBwALIAjBQQBIIAggCktxCyEVIAogCCAVGyAIIBRBgfgBSRshCAJAIA0vASAiCkH//wFxIhRBgPgBSw0AIAhB//8BcSIVQYD4AUsNACAKwUEATgRAIAjBQQBOBEAgCiAIQf//A3FLIQkMAgsgCiAVckEARyEJDAELIAjBQQBIIAogCEH//wNxSXEhCQsgDS8BFCENIAdBAnQgAiAPQQRrIg8gJCAkkiAjlCIjICNbICMCfyAKIAggCRsgCCAUQYH4AUkbIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQggCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgCEUNARogCSAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCQ0AGiAKQYCAgNgDciAIZ0EQayIJQRd0ayAIIAlB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IA1BEHQgDUH//wFxRQ0AGiANQf8HcSEIIA1BgIACcSEJIA1BgPgBcSIKQYD4AUYEQCAJQRB0IglBgICA/AdyIAhFDQEaIAkgCEENdHJBgICA/gdyDAELIAlBEHQiCSAKQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAoNABogCUGAgIDYA3IgCGdBEGsiCUEXdGsgCCAJQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYEVxIggbaiAQNgIAIAcgCGohByAOQQRqIg4gG0kNAAsLIAEgC0cEQCAPQQRrIg8gB0ECdGogDigCADYCACAOQQRqIQ4gASELDAELCyAHQQJ0IggEQCAAIAIgCPwKAAALIAEgB2shCQJAIAEgB0YNAEEAIQogCUEETwRAIAAgCGohDiAYICJqIQ8gCUF8cSIKIQsDQCAOIA/9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAPQRBrIQ8gDkEQaiEOIAtBBGsiCw0ACyAJIApGDQELICEgGCAKQQJ0IgtraiEOIAAgC2ogCGohDyAKIAFrIAdqIQsDQCAPIA4oAgA2AgAgDkEEayEOIA9BBGohDyALQQFqIgsNAAsLIAdFDQAgASAHTw0CIB1BADYCGCAdQQE2AgwgHUGIgsgANgIIIB1CBDcCECAdQQhqQfSUwQAQjQgACyABIANLDQAgAiABQQJ0Ih5qIQ8gBigCACEUQQAhCyAAIQ4DQCAAIBJBA2siBUEAIAUgEk0bQQJ0aiIVIA5LBEAgFEEEaiIaKAIAIRMgESgCACEFIAYoAgBBBGohHANAAn8CQCATQQhqKAIAIgggBUsEQCAFQSRsIgwgE0EEaigCAGoiCi8BHCEIQQAhCUEAIAovAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIQQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgEHJBAEcMAgsgBSAIQdTAxwAQjAcACyAIwUEASCAHIAhJcQshECAHIAggEBsgCCANQYH4AUkbIQgCQCAKLwEgIgdB//8BcSIQQYD4AUsNACAIQf//AXEiDUGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEJDAILIAcgDXJBAEchCQwBCyAIwUEASCAHIAhB//8DcUlxIQkLIA4oAgAhDSAKLwEUIQoCfyAHIAggCRsgCCAQQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiAJQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAKQRB0IApB//8BcUUNABogCkH/B3EhCCAKQYCAAnEhByAKQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIBooAgAiCEEIaigCACIHIA1LBEAgCEEEaigCACANQSRsaiIKLwEcIQhBACEJQQAgCi8BHiIHQf//AXEiEEGA+AFLDQIaQQAgCEH//wFxIhhBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAYckEARwwCCyANIAdB1MDHABCMBwALIAjBQQBIIAcgCElxCyEYIAcgCCAYGyAIIBBBgfgBSRshCAJAIAovASAiB0H//wFxIhBBgPgBSw0AIAhB//8BcSIYQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAYckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgCi8BFCEKIAtBAnQgAiAPQQRrICQgJJIgI5QiIyAjXCAjAn8gByAIIAkbIAggEEGB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCUGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEIiQgJJICfyAKQRB0IApB//8BcUUNABogCkH/B3EhCCAKQYCAAnEhByAKQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIkQwAAgD9eBH0gJBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGByIh8baiANNgIAAn8CQCAcKAIAIghBCGoiGCgCACIQIAVLBEAgCEEEaiIbKAIAIhYgDGoiCS8BHCEIQQAhCkEAIAkvAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIXQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgF3JBAEcMAgsgBSAQQdTAxwAQjAcACyAIwUEASCAHIAhJcQshFyAHIAggFxsgCCANQYH4AUkbIQgCQCAJLwEgIgdB//8BcSIXQYD4AUsNACAIQf//AXEiDUGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEKDAILIAcgDXJBAEchCgwBCyAIwUEASCAHIAhB//8DcUlxIQoLIA5BBGooAgAhDSAJLwEUIQkCfyAHIAggChsgCCAXQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQogB0GA+AFxIgdBgPgBRgRAIApBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgCkEQdCIKIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiAKQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQhJEMAAIA/ISMCfyAJQRB0IAlB//8BcUUNABogCUH/B3EhCCAJQYCAAnEhByAJQYD4AXEiCUGA+AFGBEAgB0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCUENdEGAgID8AHEgCEENdHJBgICAwANqciAJDQAaIAdBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILviIlQwAAgD9eBEAgJRDGBUNU+C1AlEMAAIA/kpEhIwsCfwJAIA0gEEkEQCAWIA1BJGxqIgovARwhB0EAIQhBACAKLwEeIglB//8BcSIQQYD4AUsNAhpBACAHQf//AXEiFkGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiAJIBZyQQBHDAILIA0gEEHUwMcAEIwHAAsgB8FBAEggByAJS3ELIRYgCSAHIBYbIAcgEEGB+AFJGyEHAkAgCi8BICIJQf//AXEiEEGA+AFLDQAgB0H//wFxIhZBgPgBSw0AIAnBQQBOBEAgB8FBAE4EQCAJIAdB//8DcUshCAwCCyAJIBZyQQBHIQgMAQsgB8FBAEggCSAHQf//A3FJcSEICyAKLwEUIQogCyAfaiIfQQJ0IAIgD0EIayAkICSSICOUIiMgI1wgIwJ/IAkgByAIGyAHIBBBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyALQRB0IgsgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAtBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCIkICSSAn8gCkEQdCAKQf//AXFFDQAaIApB/wdxIQggCkGAgAJxIQcgCkGA+AFxIgtBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJEMAAIA/XgR9ICQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgciIQG2ogDTYCAAJ/AkAgGCgCACIJIAVLBEAgGygCACIWIAxqIgsvARwhCEEAIQpBACALLwEeIgdB//8BcSINQYD4AUsNAhpBACAIQf//AXEiF0GA+AFLDQIaIAfBQQBIDQEgByAISyAIwUEATg0CGiAHIBdyQQBHDAILIAUgCUHUwMcAEIwHAAsgCMFBAEggByAISXELIRcgByAIIBcbIAggDUGB+AFJGyEIAkAgCy8BICIHQf//AXEiF0GA+AFLDQAgCEH//wFxIg1BgPgBSw0AIAfBQQBOBEAgCMFBAE4EQCAHIAhB//8DcUshCgwCCyAHIA1yQQBHIQoMAQsgCMFBAEggByAIQf//A3FJcSEKCyAOQQhqKAIAIQ0gCy8BFCELAn8gByAIIAobIAggF0GB+AFJGyIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEIIAdBgIACcSEKIAdBgPgBcSIHQYD4AUYEQCAKQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIApBEHQiCiAHQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAcNABogCkGAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gC0EQdCALQf//AXFFDQAaIAtB/wdxIQggC0GAgAJxIQcgC0GA+AFxIgtBgPgBRgRAIAdBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgB0EQdCIHIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAHQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAJIA1LBEAgFiANQSRsaiIJLwEcIQdBACEIQQAgCS8BHiILQf//AXEiCkGA+AFLDQIaQQAgB0H//wFxIhZBgPgBSw0CGiALwUEASA0BIAcgC0kgB8FBAE4NAhogCyAWckEARwwCCyANIAlB1MDHABCMBwALIAfBQQBIIAcgC0txCyEWIAsgByAWGyAHIApBgfgBSRshBwJAIAkvASAiC0H//wFxIgpBgPgBSw0AIAdB//8BcSIWQYD4AUsNACALwUEATgRAIAfBQQBOBEAgCyAHQf//A3FLIQgMAgsgCyAWckEARyEIDAELIAfBQQBIIAsgB0H//wNxSXEhCAsgCS8BFCEJIBAgH2oiEEECdCACIA9BDGsgJCAkkiAjlCIjICNcICMCfyALIAcgCBsgByAKQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQsgB0GA+AFxIgdBgPgBRgRAIAtBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgC0EQdCILIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IAlBEHQgCUH//wFxRQ0AGiAJQf8HcSEIIAlBgIACcSEHIAlBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYHIiHxtqIA02AgACfwJAIBgoAgAiDSAFSwRAIAwgGygCACIYaiILLwEcIQhBACEJQQAgCy8BHiIHQf//AXEiCkGA+AFLDQIaQQAgCEH//wFxIgxBgPgBSw0CGiAHwUEASA0BIAcgCEsgCMFBAE4NAhogByAMckEARwwCCyAFIA1B1MDHABCMBwALIAjBQQBIIAcgCElxCyEMIAcgCCAMGyAIIApBgfgBSRshCAJAIAsvASAiB0H//wFxIgxBgPgBSw0AIAhB//8BcSIKQYD4AUsNACAHwUEATgRAIAjBQQBOBEAgByAIQf//A3FLIQkMAgsgByAKckEARyEJDAELIAjBQQBIIAcgCEH//wNxSXEhCQsgDkEMaigCACEKIAsvARQhCwJ/IAcgCCAJGyAIIAxBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCElQwAAgD8hIwJ/IAtBEHQgC0H//wFxRQ0AGiALQf8HcSEIIAtBgIACcSEHIAtBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EQCAkEMYFQ1T4LUCUQwAAgD+SkSEjCwJ/AkAgCiANSQRAIBggCkEkbGoiCy8BHCEIQQAhCUEAIAsvAR4iB0H//wFxIg1BgPgBSw0CGkEAIAhB//8BcSIMQYD4AUsNAhogB8FBAEgNASAHIAhLIAjBQQBODQIaIAcgDHJBAEcMAgsgCiANQdTAxwAQjAcACyAIwUEASCAHIAhJcQshDCAHIAggDBsgCCANQYH4AUkbIQgCQCALLwEgIgdB//8BcSINQYD4AUsNACAIQf//AXEiDEGA+AFLDQAgB8FBAE4EQCAIwUEATgRAIAcgCEH//wNxSyEJDAILIAcgDHJBAEchCQwBCyAIwUEASCAHIAhB//8DcUlxIQkLIAsvARQhCwJ/IAcgCCAJGyAIIA1BgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCSAHQYD4AXEiB0GA+AFGBEAgCUEQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyAJQRB0IgkgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAlBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCJBCEmQwAAgD8hJAJ/IAtBEHQgC0H//wFxRQ0AGiALQf8HcSEIIAtBgIACcSEHIAtBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IidDAACAP14EQCAnEMYFQ1T4LUCUQwAAgD+SkSEkCyAQIB9qIghBAnQgAiAPQRBrIg8gJSAlkiAjlCIjICNcICMgJiAmkiAklGByIgcbaiAKNgIAIAcgCGohCyAOQRBqIg4gFUkNAAsLIAAgEkECdGoiEyAOSwRAIBRBBGooAgAhECARKAIAIQ0DQAJ/AkAgEEEIaigCACIMIA1LBEAgEEEEaigCACIYIA1BJGxqIgkvARwhBUEAIQdBACAJLwEeIghB//8BcSIKQYD4AUsNAhpBACAFQf//AXEiG0GA+AFLDQIaIAjBQQBIDQEgBSAISSAFwUEATg0CGiAIIBtyQQBHDAILIA0gDEHUwMcAEIwHAAsgBcFBAEggBSAIS3ELIRsgCCAFIBsbIAUgCkGB+AFJGyEFAkAgCS8BICIIQf//AXEiG0GA+AFLDQAgBUH//wFxIgpBgPgBSw0AIAjBQQBOBEAgBcFBAE4EQCAIIAVB//8DcUshBwwCCyAIIApyQQBHIQcMAQsgBcFBAEggCCAFQf//A3FJcSEHCyAOKAIAIQogCS8BFCEJAn8gCCAFIAcbIAUgG0GB+AFJGyIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSEHIAhBgPgBcSIIQYD4AUYEQCAHQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAdBEHQiByAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogB0GAgIDYA3IgBWdBEGsiCEEXdGsgBSAIQf//A3FBCGp0Qf///wNxcgu+EIkEISRDAACAPyEjAn8gCUEQdCAJQf//AXFFDQAaIAlB/wdxIQUgCUGAgAJxIQggCUGA+AFxIgdBgPgBRgRAIAhBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgBw0AGiAIQYCAgNgDciAFZ0EQayIIQRd0ayAFIAhB//8DcUEIanRB////A3FyC74iJUMAAIA/XgRAICUQxgVDVPgtQJRDAACAP5KRISMLAn8CQCAKIAxJBEAgGCAKQSRsaiIHLwEcIQVBACEJQQAgBy8BHiIIQf//AXEiDEGA+AFLDQIaQQAgBUH//wFxIhhBgPgBSw0CGiAIwUEASA0BIAUgCEkgBcFBAE4NAhogCCAYckEARwwCCyAKIAxB1MDHABCMBwALIAXBQQBIIAUgCEtxCyEYIAggBSAYGyAFIAxBgfgBSRshBQJAIAcvASAiCEH//wFxIgxBgPgBSw0AIAVB//8BcSIYQYD4AUsNACAIwUEATgRAIAXBQQBOBEAgCCAFQf//A3FLIQkMAgsgCCAYckEARyEJDAELIAXBQQBIIAggBUH//wNxSXEhCQsgBy8BFCEHIAtBAnQgAiAPQQRrIg8gJCAkkiAjlCIjICNcICMCfyAIIAUgCRsgBSAMQYH4AUkbIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAJQYCAgNgDciAFZ0EQayIIQRd0ayAFIAhB//8DcUEIanRB////A3FyC74QiQQiJCAkkgJ/IAdBEHQgB0H//wFxRQ0AGiAHQf8HcSEFIAdBgIACcSEIIAdBgPgBcSIHQYD4AUYEQCAIQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAcNABogCEGAgIDYA3IgBWdBEGsiCEEXdGsgBSAIQf//A3FBCGp0Qf///wNxcgu+IiRDAACAP14EfSAkEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUYHIiBRtqIAo2AgAgBSALaiELIA5BBGoiDiATSQ0ACwsgASASRwRAIAIgC0ECdGogDigCADYCACAOQQRqIQ4gC0EBaiELIA9BBGshDyABIRIMAQsLIAtBAnQiBQRAIAAgAiAF/AoAAAsgASALRg0EIAAgBWohCEEAIQoCQCABIAtrIgdBBE8EQCAeICJqIQ4gCCEPIAdBfHEiCiEJA0AgDyAO/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDkEQayEOIA9BEGohDyAJQQRrIgkNAAsgByAKRg0BCyAhIApBAnQiEmsgHmohDiAAIBJqIAVqIQ8gCiABayALaiEJA0AgDyAOKAIANgIAIA5BBGshDiAPQQRqIQ8gCUEBaiIJDQALCyABIAtPBEBBACEFIAghACAHIQEgB0EhSQ0EDAMLIAsgASABQYSVwQAQ6gcACwALIAAgCGogCSACIAMgBCAdQQRqIAYQMyAHIQEgB0EhTw0ACyAAIQgLIAdBAkkNACAGKAIAIQEgB0EBdiEAIAACfyAHQQ9NBEAgB0EHSwRAIAggAiABQQRqIgMoAgAQhgEgCCAAQQJ0IgRqIAIgBGogAygCABCGAUEEDAILIAIgCCgCADYCACACIABBAnQiA2ogAyAIaigCADYCAEEBDAELIAggAiAHQQJ0aiIDIAFBBGoiBCgCABCGASAIQRBqIANBEGogBCgCABCGASADQQggAiABEOQBIAggAEECdCIFaiIGIANBIGoiEiAEKAIAEIYBIAZBEGogA0EwaiAEKAIAEIYBIBJBCCACIAVqIAEQ5AFBCAsiA0sEQCAAIANrIQ8gA0ECdCEOA0AgAiAOaiIEIAggDmooAgA2AgAgAiAEIAEQ+gEgDkEEaiEOIA9BAWsiDw0ACwsgByAAayADSwRAIAIgAEECdCIEaiEFIAggA0ECdCAEaiIEaiEPIAIgBGohDiAAIANqIAdrIQkDQCAOIA8oAgA2AgAgBSAOIAEQ+gEgD0EEaiEPIA5BBGohDiAJQQFqIgkNAAsLIAIgByAIIAEQ5AELIB1BIGokAAv5vAICd38EfiMAQbAZayIEJAAgBEEAOgDKDCAEQQA7AcgMIAEpA+ADIXkgASgC6AMhC0EDIRUgBEHIDGohCAJAAkACQAJAAkACfwJAA0ACQCB5UARAQgAheQwBCyALKQMIInogCygCBCIHrSJ7IHoge1QbpyICIAsoAgBqIQkCQCAHQv////8PIHogekL/////D1obp2siA0EAIAMgB00bIgMgeSAVrSJ7IHkge1QbpyIOIAMgDkkbIgNBAUYEQCAIIAktAAA6AAAMAQsgA0UNACAIIAkgA/wKAAALIAEgeSADrSJ7fSJ5NwPgAyALIHoge3w3AwggAiAHRg0AIAMgCGohCCAVIANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyB6QgiIpyEIIHpCIIinIRJBACELDAoLQaiQyAApAwAieUL/AYNCBFENACB5QhCIpyIVIHmnIgNB/wFxQQRGDQEaIHlCCIinIQggeUIgiKchEkEAIQsMCQsgBC8ByAwLQf//AHE7ASYgASARQf//AHEiCDsBJCAIQQ9qQQR2IQICfyAIRQRAQQEhFUEADAELIAJBHmwQcSIVRQ0CIBUhAwJAIAhBEUkNACACQQFrIhBBB3EhCyACQQJrQQdPBEAgEEF4cSEHA0AgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EQakIANwAAIANBFmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBJmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBNGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQdIAav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HiAGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANB8ABqQgA3AAAgA0GIAWpCADcAACADQY4BakIANwAAIANB+ABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQaYBakIANwAAIANBrAFqQgA3AAAgA0GWAWr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxAFqQgA3AAAgA0HKAWpCADcAACADQbQBav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HoAWpCADcAACADQeIBakIANwAAIANB0gFq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQfABaiEDIAdBCGsiBw0ACwsgC0UNAANAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBFmpCADcAACADQRBqQgA3AAAgA0EeaiEDIAtBAWsiCw0ACwsgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EWakIANwAAIANBEGpCADcAACACCyEDIAEoApwEIgsEQCABKAKgBCIOQQRrKAIAIhBBeHEiESALQR5sIgtBBEEIIBBBA3EiEBtqSQ0LIBBBACARIAtBJ2pLGw0MIA4QogILIAEgAjYCpAQgASAVNgKgBCABIAM2ApwEAn8CQCAIRQ0AIBUtAAAiA0ECRg0AIARBMGogFUEcai0AADoAACAEIBX9AAAE/QsDyAwgBCAVKQAUNwMoIBUtAAEhCyAVLQACIQcgFS0AAyEIIBUtAB0MAQsgBEEwakEAOgAAIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwPIDCAEQgA3AyhBACEIQQAhB0EAIQtBACEDQQALIRUgASAIOgCFBSABIAc6AIQFIAEgCzoAgwUgASADOgCCBSABIAT9AAPIDP0LAIYFIAEgBCkDKDcAlgUgASAVOgCfBSABQZ4FaiAEQTBqLQAAOgAAIAEgAS8BJCIDQQR2IANBD3FBAEdqIgM7AaAFIAEgAS8BJiILQQR2IAtBD3FBAEdqIgs7AaIFAkACQCADIAtsQQh0IgNBAE4EQAJAIANFBEBBASELDAELIAMQcSILRQ0FIAtBBGstAABBA3FFIANFcg0AIAtBACAD/AsACyABKAIAIhUEQCABKAIEIghBBGsoAgAiEEF4cSICQQRBCCAQQQNxIhAbIBVqSQ0OIBBBACACIBVBJ2pLGw0PIAgQogILIAEgAzYCCCABIAs2AgQgASADNgIAIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQECQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCDCIVBEAgASgCECAVQQEQogcLIAEgAzYCFCABIAs2AhAgASADNgIMIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQICQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCGCIVBEAgASgCHCAVQQEQogcLIAEgAzYCICABIAs2AhwgASADNgIYIAEvASRBFGoiAxBxIgtFDQQgAwRAIAtB/wAgA/wLAAsgASgCqAQiFQRAIAEoAqwEIBVBARCiBwsgASADNgKwBCABIAs2AqwEIAEgAzYCqARBERBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBEGpBgQE6AAAgA0EIakKBg4aMmLDgwIF/NwAAIAEoArQEIgsEQCABKAK4BCALQQEQogcLIAFBETYCvAQgASADNgK4BCABQRE2ArQEIAEvAaAFIgtBA3QhAwJAIAtFBEBBASELDAELIAMQcSILRQ0FCyADBEAgC0H/ACAD/AsACyABKALABCIVBEAgASgCxAQgFUEBEKIHCyABIAM2AsgEIAEgCzYCxAQgASADNgLABEEJEHEiA0UNBCADQoGDhoyYsODAgX83AAAgA0EIakGBAToAACABKALMBCILBEAgASgC0AQgC0EBEKIHCyABQQk2AtQEIAEgAzYC0AQgAUEJNgLMBCABLwGgBSILQQN0IQMCQCALRQRAQQEhCwwBCyADEHEiC0UNBQsgAwRAIAtB/wAgA/wLAAsgASgC2AQiBwRAIAEoAtwEIAdBARCiBwsgASADNgLgBCABIAs2AtwEIAEgAzYC2ARBCRBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQMAwtB7KzGABD/BwALQfysxgAQ/wcAC0GMrcYAEP8HAAsgEkEHdiASQeAAcUEAR2oiCkECdCERAkAgCkUNACAREHEiCUUNASAJQQRrLQAAQQNxRSARRXINACAJQQAgEfwLAAsCQAJAAkACQCARIBJBBXYiEE8EQCASQSBJDQIgASkD4AMheSABKALoAyELIAkhCCAQIRUDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEgJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEi0AADoAAAwBCyADRQ0AIAggEiAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCC0EAIBAgEUGwrcYAEOoHAAtBACELQaiQyAApAwAieaciA0H/AXFBBEYNACB5QiCIpyESIHlCEIinIRUgeUIIiKchCCAKDQEMCQsgBCAKNgIwIAQgCTYCLCAEIAo2AiggBEHIDGogAUHwAGoiFSAEQShqIBAQsgMgBC0AyAwiC0EdRg0BIAQ1AM0MInkgBEHTDGoxAABCMIYgBEHRDGozAABCIIaEhCJ6QhiIpyESIHpCCIinIRUgBCgC1AwhDiAELQDMDCEDIAQvAcoMIQIgBC0AyQwhByB5pyEIDAgLIAlBBGsoAgAiBkF4cSICQQRBCCAGQQNxIgcbIBFqSQ0KIAdBACACIBFBJ2pLGw0LIAkQogIMBwsCQCABLQAoRQ0AIBVBARC5ASEHIAEgFUEBELkBOgAsIAdB/wFxRQ0AQRMhCwwHCyABIBUQqgUiAzoApAUCQCADRQ0AIAEgFRCqBToApQUgFRCqBQRAIAEgFRCqBUEBcyIDOgBuIAEgAzoAXiABIAM6AE4gASADOgA+IAEgFUEHEK8BOgA8IAEgFUEHEK8BOgBMIAEgFUEHEK8BOgBcIAEgFUEHEK8BOgBsIAEgFUEGEK8BOgA9IAEgFUEGEK8BOgBNIAEgFUEGEK8BOgBdIAEgFUEGEK8BOgBtCyABLQClBUEBRgRAQf8BIQMgASAVEKoFBH8gFUEIELkBBUH/AQs6APYEIAEgFRCqBQR/IBVBCBC5AQVB/wELOgD6BCAVEKoFBEAgFUEIELkBIQMLIAEgAzoA/gQLIAEtAJMBQfIBRw0AQQ8hCwwGCyABIBUQqgU6ACogASAVQQYQuQE6AC0gASAVQQMQuQE6AC4gASAVEKoFIgM6AKYFAkACQAJAIANFDQAgFRCqBQRAIAEgFUEGEK8BNgLwAyABIBVBBhCvATYC9AMgASAVQQYQrwE2AvgDIAEgFUEGEK8BNgL8AyABIBVBBhCvATYCgAQgASAVQQYQrwE2AoQEIAEgFUEGEK8BNgKIBCABIBVBBhCvATYCjAQLIAEtAJMBQfIBRw0AQQ8hCwwBCyAVQQIQuQEhA0EPIQsgAS0AkwFB8gFGDQcgAUEBIAN0Ihg6AKcFAkAgA0EfcSIPRQ0AAkACQEEDIA90QQNrIgNBAE4EQCADEHEiEUUNBiARQQRrLQAAQQNxRSADRXJFBEAgEUEAIAP8CwALIAEpA+ADIXkgASgC6AMhByARIQ4gAyECAkADQCB5UA0BIAcpAwgieiAHKAIEIgitInsgeiB7VBunIgogBygCAGohEAJAIAhC/////w8geiB6Qv////8PWhunayIJQQAgCCAJTxsiCSB5IAKtInsgeSB7VBunIg0gCSANSRsiCUEBRgRAIA4gEC0AADoAAAwBCyAJRQ0AIA4gECAJ/AoAAAsgASB5IAmtInt9Ink3A+ADIAcgeiB7fDcDCCAIIApGDQEgCSAOaiEOIAIgCWsiAg0AC0GokMgAKQMAInpC/wGDQgRRIQwMAgtBASEMQaiQyAApAwAiekL/AYNCBFENAUEAIQsMAgtBuKnGABD/BwALIAFBmAFqISYgESEZIAMhDQJAA0ACQCANQQJNBEAgDARAQQEhCUEAIQpBACEIQQAhEAwCCyAEIHo3A8gMQaiqxgBBNyAEQcgMakGYqsYAQeCqxgAQ4AYACyAZLwAAIBlBAmotAABBEHRyIghBA2oiCUECdiEKAn8gCUH8//8PcSIURQRAQQEhCUEADAELIBQQcSIJRQ0IIAlBBGstAABBA3FFIBRFckUEQCAJQQAgFPwLAAsgCgshECAIIBRNBEAgCEUEQEEAIQpBACEIDAILIAEpA+ADIXkgASgC6AMhByAJIQ4gCCECA0ACQCB5UA0AIAcpAwgieyAHKAIEIhKtInwgeyB8VBunIiIgBygCAGohFgJAIBJC/////w8geyB7Qv////8PWhunayIUQQAgEiAUTxsiFCB5IAKtInwgeSB8VBunIhsgFCAbSRsiFEEBRgRAIA4gFi0AADoAAAwBCyAURQ0AIA4gFiAU/AoAAAsgASB5IBStInx9Ink3A+ADIAcgeyB8fDcDCCASICJGDQAgDiAUaiEOIAIgFGsiAg0BDAMLCyAMDQFBACELIBBFDQQgCSAQQQJ0QQEQogcMBAtBACAIIBRBiKrGABDqBwALIAVBCEYNASAEIAo2AuAYIAQgCTYC3BggBCAQNgLYGCAEQcgMaiAmIAVBKGxqIARB2BhqIAgQsgMgBC0AyAwiCUEdRwRAIAQoAtQMIQ4gBCkCzAwheiAELwHKDCECIAQtAMkMIQcgCSELDAMLIAVBAWohBSAZQQMgDSANQQNPGyIJaiEZIA0gCWsiDQ0ACyARIANBARCiBwwCC0EIQQhB+KnGABCMBwALIBEgA0EBEKIHIHqnIQMMBwsgBEEANgLgGCAEQoCAgIAQNwLYGCAEQcgMaiABQdgDaiAEQdgYahDzAQJAAkACQAJAAkACfwJAIAQtAMgMQQRGDQAgBCkDyAwieqciA0H/AXFBBEYNAEEADAELIAQoAuAYIgNBA2oiCUEASA0CIAlBAnYhAgJ/IAlBfHEiCUUEQEEBIQdBAAwBCyAJEHEiB0UNCSAHQQRrLQAAQQNxRSAJRXJFBEAgB0EAIAn8CwALIAILIQggBCACNgIwIAQgBzYCLCAEIAg2AiggAyAJSw0DIAQoAtwYIQkgAwRAIAcgCSAD/AoAAAsgGEEBayECIA9BBE8NBCAEQcgMaiABQZgBaiJdIAJBKGxqIARBKGogAxCyAyAELQDIDCIIQR1GDQEgBCgC1AwhDiAELwHKDCECIAQtAMkMIQcgBCkCzAwieqchAyAICyELIAQoAtgYIgZFDQsgBCgC3BggBkEBEKIHDAsLIAQoAtgYIgMEQCAJIANBARCiBwsgFUEHELkBIQMgFUEEEK8BIQggFUEEEK8BIQIgFUEEEK8BIQ4gFUEEEK8BIRIgFUEEEK8BIQkgAUH/ACABLAA8IANB/wFxIgdBACABLQA+G2ogByABLQCkBSIQGyIDQQAgA0EAShsiESARQf8AThtBAXQvAbjkRDsBMiABQf8AIAMgCWoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45EQ7ATogAUH/ACADIBJqIhFBACARQQBKGyIRIBFB/wBOG0EBdC4BuOZEIhE7ATggAUH/ACADIAhqIgpBACAKQQBKGyIKIApB/wBOG0EBdC8BuOZEOwEwIAFB/wAgAiADaiIKQQAgCkEAShsiCiAKQf8AThtBAXQvAbjmREEBdDsBNCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwE2IAPBQQdMBEAgAUEIOwE2CyARQYQBTA0DIAFBhAE7ATgMAwtByKnGABD/BwALQQAgAyAJQeipxgAQ6gcACyACQQhB2KnGABCMBwALAkAgEEUNACABQf8AIAEsAEwgB0EAIAEtAE4baiAHIAEtAKQFGyIDQQAgA0EAShsiECAQQf8AThtBAXQvAbjkRDsBQiABQf8AIAMgCWoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LwG45EQ7AUogAUH/ACADIBJqIhBBACAQQQBKGyIQIBBB/wBOG0EBdC4BuOZEIhA7AUggAUH/ACADIAhqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEOwFAIAFB/wAgAiADaiIRQQAgEUEAShsiESARQf8AThtBAXQvAbjmREEBdDsBRCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwFGIAPBQQdMBEAgAUEIOwFGCyAQQYUBTgRAIAFBhAE7AUgLIAFB/wAgASwAXCAHQQAgAS0AXhtqIAcgAS0ApAUbIgNBACADQQBKGyIQIBBB/wBOG0EBdC8BuOREOwFSIAFB/wAgAyAJaiIQQQAgEEEAShsiECAQQf8AThtBAXQvAbjkRDsBWiABQf8AIAMgEmoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LgG45kQiEDsBWCABQf8AIAMgCGoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45kQ7AVAgAUH/ACACIANqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEQQF0OwFUIAFB/wAgAyAOaiIDQQAgA0EAShsiAyADQf8AThtBAXQuAbjkREGbAWxB5ABtIgM7AVYgA8FBB0wEQCABQQg7AVYLIBBBhQFOBEAgAUGEATsBWAsgAUH/ACABLABsIAdBACABLQBuG2ogByABLQCkBRsiA0EAIANBAEobIhAgEEH/AE4bQQF0LwG45EQ7AWIgAUH/ACADIAlqIglBACAJQQBKGyIJIAlB/wBOG0EBdC8BuOREOwFqIAFB/wAgAyASaiIJQQAgCUEAShsiCSAJQf8AThtBAXQuAbjmRCIHOwFoIAFB/wAgAyAIaiIJQQAgCUEAShsiCSAJQf8AThtBAXQvAbjmRDsBYCABQf8AIAIgA2oiCUEAIAlBAEobIgggCEH/AE4bQQF0LwG45kRBAXQ7AWQgAUH/ACADIA5qIgNBACADQQBKGyIDIANB/wBOG0EBdC4BuOREQZsBbEHkAG0iAzsBZiADwUEHTARAIAFBCDsBZgsgB0GFAUgNACABQYQBOwFoCyABLQCTAUHyAUcNAQtBACEVQQAhEgwHCwJAAn8gAS0AKEUEQEETIQ5BExBxIgZFDQMgBkEPakGrrcYAKAAANgAAIAZBnK3GAP0AAAD9CwAAIAQgBjYCzAwgBEETNgLIDCAENQDJDCJ5IAQxAM8MQjCGIAQzAM0MQiCGhIQiekIYiKchEiB5pyEIIHpCCIinDAELIBVBARC5ARogBEHIDGpBACEKIAFB8ABqIQ1BoM/GACEJQZjNxgAhEANAIAkhESAKIQcgECEJQSEhFANAQfx+IRkDQCANIAktAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGGAWogBToAAAsgDSAJQQFqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBigFqIAU6AAALIA0gCUECai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQY4BaiAFOgAACyANIAlBA2otAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGSAWogBToAAAsgDSAJQQRqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBlgFqIAU6AAALIA0gCUEFai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQZoBaiAFOgAACyANIAlBBmotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGeAWogBToAAAsgDSAJQQdqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBogFqIAU6AAALIA0gCUEIai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQaYBaiAFOgAACyANIAlBCWotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGqAWogBToAAAsgDSAJQQpqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBrgFqIAU6AAALIAlBC2ohCSAZQSxqIhkNAAsgB0GEAWohByAQIBRqIQkgFEEhakGIAiAUQYgCRyIZGyEUIBkNAAsgCkGgCGohCiARQYgCaiEJIBEiEEG41cYARw0AC0EPQR0gAS0AkwFB8gFGGzoAACAELQDIDCIJQR1HBEAgBDUAzQwieSAEQdMMajEAAEIwhiAEQdEMajMAAEIghoSEInpCGIinIRIgekIIiKchFSAEKALUDCEOIAQtAMwMIQMgBC8BygwhAiAELQDJDCEHIHmnIQggCSELDAkLIBVBARC5AUH/AXEiB0EBRgRAIBVBCBC5ASEDCyABIAM6AIEFIAEgB0EBRjoAgAUgAS0AkwFB8gFGDQcgAS0AKA0BIAFBADoAqAVBEyEOQRMQcSIGRQ0CIAZBD2pBq63GACgAADYAACAGQZytxgD9AAAA/QsAACAEIAY2AswMIARBEzYCyAwgBDUAyQwieSAEMQDPDEIwhiAEMwDNDEIghoSEInpCGIinIRIgeachCCB6QgiIpwshFUEYIQtBEyEDDAcLIAEvAaIFIkpFDQMgAUEwaiE6IAFBkARqIRkgAUH0BGohFyABQZYFaiEcIAFBhgVqIUcgAUGCBWohJyAEQZENaiFLIARBiA1qIRggBEH/DGohTCAEQfYMaiFNIARB7QxqIU4gBEHkDGohTyAEQdsMaiEoIARBoRlqIVAgBEGYGWohUSAEQY8ZaiFSIARBhhlqIVMgBEH9GGohVCAEQfQYaiFVIARB6xhqIVYgBEGZD2ohKSAEQYQPaiEqIARB7w5qISsgBEHaDmohLCAEQcUOaiEtIARBsA5qIRMgBEGbDmohLiAEQYYOaiEvIARB8Q1qITAgBEHcDWohMSAEQccNaiEyIARBsg1qITMgBEGdDWohNCAEQfMMaiE1IARB0gxqIVcgBEHiGGohWCAEQegLaiFZIARB6AlqIVogBEGoC2ohICAEQagJaiEhIARB6ApqIV4gBEHoCGohXyAEQagKaiFgIARBqAhqIWEgBEHeDGohNiAEQegHaiFiIARBqAdqIWMgBEHoBmohZCAEQagGaiFlIARB6AVqIWYgBEGoBWohZyAEQegEaiFoIARBqARqIWkgBEHoA2ohaiAEQagDaiFrIARB6AJqIWwgBEGoAmohbSAEQegBaiFuIARBqAFqIW8gBEHoAGohcCAEQThqIXEgBEEoakECciFIIARB2AxqITwgBEHIDGpBAnIhPSAEQR1qIT4gBEEOaiEUIARBzwxqIQwgBEHMDGohciAEQckMaiI/QRVqIXMgBEGIGWohdEEBIQNBACEQA0AgAS0ApwUiC0UNAiADIREgJ/0MAAAAAAAAAAAAAAAAAAAAAP0LAQAgJ0EWakIANwEAICdBEGpCADcBACAQIAtwIQ8CQCABLwGgBSJ1RQ0AQQEhN0EAISZBACEKAkACQAJAAkACQAJAAkACQANAIHNCADcAACA/QRBqQgA3AAAgP/0MAAAAAAAAAAAAAAAAAAAAAP0LAAACQCABLQCkBUEBRw0AIAEtAKUFQQFxRQ0AIAQgFSAXQQMgFygCABDIBDoA5QwLIAQgAS0AgAUEfyAVIAEtAIEFEJkFBUEACzoAyAwCQAJAAkACQAJ/AkACQCABLQAoDQAgFSABLQCoBRCZBUUEQEEAIQlBACELIAEtACgNAQwCC0EUIThBFBBxIhpFDRIgGkEQakGYsMYAKAAANgAAIBpBiLDGAP0AAAD9CwAAQRQhOUEYDAILIBVBnLDGAEEEQYSDxAQQyAQhAyAEQRQ6ACggBCADQf8BcSIJOgApIAlBBU8EQCAJIQZBFAwCCyAEQShqEKsEIAQgCToAywxBAiEDAkACQAJAAkACQAJAAkACQCAJQQFrDgQDAAEEAgtBAyEDDAILQQEhAwwBC0EAIQMLIEcgA0GBgoQIbCIDNgEAIDwgAzYAAAwBC0EAIQ4gCkEebCEIIAwhCwNAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQAQQegCbCAOIEdqIgctAABBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBA2tBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABAgByADOgAAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQARQegCbCADQSRsaiIDQbywxgBqQQkgAygAvLBGEMgEIQMgBEEVOgAoIAQgA0H/AXEiAzoAKSADQQlLBEAgAyEGQRUMBgsgBEEoahCrBCALQQJrQQogAyADQQpPGyIDOgAAIAogASgCpAQiAk8NAyABKAKgBCAIaiADOgARIAcgAzoAACAKIAEoAqQEIgJPDQIgFSABKAKgBCAIai0AEkHoAmwgA0EkbGoiA0G8sMYAakEJIAMoALywRhDIBCEDIARBFToAKCAEIANB/wFxIgM6ACkgA0EJSwRAIAMhBkEVDAYLIARBKGoQqwQgC0EBa0EKIAMgA0EKTxsiAzoAACAKIAEoAqQEIgJPDQMgASgCoAQgCGogAzoAEiAHIAM6AAAgCiABKAKkBCICTw0CIBUgASgCoAQgCGotABNB6AJsIANBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABMgByADOgAAIAtBBGohCyAOQQFqIg5BBEkNAAsLIBVB3MzGAEEDQYCDuAQQyAQhAyAEQRY6ACggBCADQf8BcSILOgApIAtBA0sEQCALIQZBFgwECyAEQShqEKsEIAQgCzoAygwMAgsgCiACQaywxgAQjAcACyAKIAJBzMzGABCMBwwRCyAKIAEoAqQEIgNPDQEgCkEebCIFIAEoAqAEaiALOgACIAogASgCpAQiA08NAiABKAKgBCAFaiAJOgADIAogASgCpAQiA08NAyABKAKgBCAFaiBy/QAAAP0LAAQgAS0AkwFB8gFHDQRBDwshAyAAIDg2AhAgACAaNgIMIAAgOTYCCCAAIEA7AQYgACAGOgAFIAAgAzoABCAAQYCAgIB4NgIADBYLIAogA0HozMYAEIwHAAsgCiADQfjMxgAQjAcACyAKIANBiM3GABCMBwALIARBDGogBEHKDGotAAA6AAAgBCAELwDIDDsBCiAEICgpAAA3A9gYIAQgKEEHaigAADYA3xggBEHPDGooAAAhOSAELQDMDCEGIAQvAM0MIUAgBCgA0wwhGiAEKADXDCE4ID5BB2ogBCgA3xg2AAAgPiAEKQPYGDcAACAEIDg2ABkgBCAaNgAVIAQgOTYAESAEIEA7AA8gBCAGOgAOIAQgCToADQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0ACkEBcUUEQCAELQAnIQsgBEHIDGpBAEGADPwLAAJAAkACQAJAIAlBBEcEQCAKIAEoAqQEIgNPDQEgASgCoAQgBWotABQhAyABLQCWBSECIHT9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIARB+Bhq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAEQegYav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LA9gYIAtBBE8NAiAEQcgYaiABIARB2BhqIA9BASACIANqQf8BcSA6IAtBBHRqIgMvAQQgAy8BBhDqASAELQDJGCEHIAQtAMgYIgJBHUYNAyAEIAQpAcoYNwO4DCAEIARB0BhqKQEANwG+DAwcC0EDIQ4gC0EDSw0DDAULIAogA0GgrsYAEIwHAAsgC0EEQbCuxgAQjAcACyABIAc6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFaiAHOgAUIARB2BhqIgMgAygCACICIAMoAjAiCGsiDiADKAIQIgcgAygCICINayISazYCMCADIAIgCGoiAiAHIA1qIghrNgIgIAMgDiASajYCECADIAIgCGo2AgAgAyADKAIkIgIgAygCFCIIaiIOIAMoAjQiByADKAIEIg1qIhJqNgIEIAMgDSAHayIHIAggAmsiAms2AjQgAyACIAdqNgIUIAMgEiAOazYCJCADIAMoAigiCCADKAIYIg5qIgcgAygCOCINIAMoAggiEmoiFmoiAjYCCCADIBIgDWsiDSAOIAhrIghrNgI4IAMgFiAHazYCKCADIAggDWo2AhggAyADKAIsIg4gAygCHCIHaiINIAMoAjwiEiADKAIMIhZqIiJqIgg2AgwgAyAHIA5rIgcgFiASayISaiIONgIcIAMgEiAHazYCPCADICIgDWsiBzYCLCADIAggAygCACINakEDaiISIAIgAygCBCIWaiIia0EDdTYCCCADIA0gCGtBA2oiCCAWIAJrIgJrQQN1NgIMIAMgAiAIakEDdTYCBCADIBIgImpBA3U2AgAgAyADKAIQIgIgDmtBA2oiCCADKAIUIg0gAygCGCISayIWa0EDdTYCHCADIAIgDmpBA2oiAiANIBJqIg5rQQN1NgIYIAMgCCAWakEDdTYCFCADIAIgDmpBA3U2AhAgAyADKAIgIgIgB2tBA2oiCCADKAIkIg4gAygCKCINayISa0EDdTYCLCADIAIgB2pBA2oiAiANIA5qIg5rQQN1NgIoIAMgCCASakEDdTYCJCADIAIgDmpBA3U2AiAgAyADKAIwIgIgAygCPCIIa0EDaiIOIAMoAjQiByADKAI4Ig1rIhJrQQN1NgI8IAMgAiAIakEDaiICIAcgDWoiCGtBA3U2AjggAyAOIBJqQQN1NgI0IAMgAiAIakEDdTYCMCAEIAQoAtgYNgLIDCAEIAQoAtwYNgKIDSAEIAQoAuAYNgLIDSAEIAQoAuQYNgKIDiAEIAQoAugYNgLIDiAEIAQoAuwYNgKIDyAEIAQoAvAYNgLIDyAEIAQoAvQYNgKIECAEIAQoAvgYNgLIECAEIAQoAvwYNgKIESAEIAQoAoAZNgLIESAEIAQoAoQZNgKIEiAEIAQoAogZNgLIEiAEIAQoAowZNgKIEyAEIAQoApAZNgLIEyAEIAQoApQZNgKIFEEAIQ4MAwsgCiADQcCuxgAQjAcACyAKIAEoAqQEIgJPDQ0gC0EEQaivxgAQjAcACwJAIAlBBEYNACABQQA6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFakEAOgAUDAELIAogA0GIqcYAEIwHAAsgAUEAOgCXBQJAIAogASgCpAQiC08NACABKAKgBCAFakEAOgAVIAFBADoAmAUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABYgAUEAOgCZBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAFyABQQA6AJoFIAogASgCpAQiC08NACABKAKgBCAFakEAOgAYIAFBADoAmwUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABkgAUEAOgCcBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAGiABQQA6AJ0FIAogASgCpAQiC08NACABKAKgBCAFakEAOgAbIAFBADoAngUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABwgBEEoakEAQYAM/AsADAILIAogC0GoqcYAEIwHAAsgOiALQQR0aiEDQQAhDUGXBSESIAQtAAshCANAIAogASgCpAQiAk8NDCAEQdgYaiABIARByAxqIA1qIgsgDyAOIAEoAqAEIAVqLQAVIAEgEmoiIi0AAGpB/wFxIAMvAQAgAy8BAhDqASAELQDYGCICQR1HDRUgBC0A2RghAgJ/AkAgCygCAARAIAsQmgJBASEIIAJBAXENAUEADAILQQAgAkEBcUUNARogCxCaAgtBASEIQQELIRYgCiABKAKkBCICTw0FIAEoAqAEIAVqIBY6ABUgCiABKAKkBCICTw0MIARB2BhqIAEgC0FAayIHIA8gDiABKAKgBCAFai0AFiAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshFiAKIAEoAqQEIgJPDQUgASgCoAQgBWogFjoAFiAKIAEoAqQEIgJPDQwgBEHYGGogASALQYABaiIHIA8gDiABKAKgBCAFai0AFyAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshByAKIAEoAqQEIgJPDQUgASgCoAQgBWogBzoAFyAKIAEoAqQEIgJPDQwgBEHYGGogASALQcABaiILIA8gDiABKAKgBCAFai0AGCAHakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQUgASgCoAQgBWogCzoAGCAiIAs6AAAgDUGAAmohDSASQZYFayASQQFqIRJBBEkNAAtBeCENA0ACQCANQdiuxgBqKAIAIgtBCE0EfyAKIAEoAqQEIgJPDQQgBEHYGGogASAEQcgMakGACEGACiALQQVGIgcbaiIOIA9BAiABKAKgBCAFaiALai0AFCALIBxqIiItAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0XIAQtANkYIQICfwJAIA4oAgAEQCAOEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIA4QmgILQQEhCEEBCyEWIAogASgCpAQiAk8NBiABKAKgBCAFaiALaiAWOgAUIAogASgCpAQiAk8NBCALQQFqIQ5BCSALayICQQAgAkEJTRtBAUYNBSAEQdgYaiABIARByAxqQcAIQcAKIAcbaiISIA9BAiABKAKgBCAFaiAOai0AFCAWakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFyAELQDZGCECAn8CQCASKAIABEAgEhCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiASEJoCC0EBIQhBAQshEiAKIAEoAqQEIgJPDQYgASgCoAQgBWogDmogEjoAFCAiIBI6AAAgC0EIRw0BQQkFIAsLQQlB2K7GABCMBwALIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQYAJQYALIAcbaiISIA9BAiABKAKgBCAFaiALai0AFCAOIBxqIhYtAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0VIAQtANkYIQICfwJAIBIoAgAEQCASEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIBIQmgILQQEhCEEBCyESIAogASgCpAQiAk8NBCABKAKgBCAFaiALaiASOgAUIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQcAJQcALIAcbaiILIA9BAiABKAKgBCAFaiAOai0AFCASakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQQgASgCoAQgBWogDmogCzoAFCAWIAs6AAAgDUEEaiINDQALIAQgCDoACyAEID0pAQA3A7gMIAQgPUEGaikBADcBvgwgBC8ByAwhAyBxIDxB8Av8CgAAIAQgBCkDuAw3A6gMIAQgBCkBvgw3Aa4MIEhBBmogBCkBrgw3AQAgSCAEKQOoDDcBACAEIAM7ASgLIARByAxqIQcgAS8BoAUiJCEFIAEoAqwEInYhDiABKAKwBCIiIQIgASgCuAQiDSELIAEoArwEIkEhEiMAQfACayIDJAAgA0EIakEAQeQC/AsAAkAgEEUEQCADQRhqQf/+/fsHNgIAIANBEGpC//79+/fv37//ADcDACADQv/+/fv379+//wA3AwgMAQsgCkEEdCIIIAJNBEACQCACIAhGDQBBECACIAhrIhYgFkEQTxsiFkUNACADQQhqIAggDmogFvwKAAALAkAgBUEBayAKRgRAIAhBD3IiCCACTw0BIAMgCCAOai0AAEGBgoQIbDYAGAwDCyAIQRBqIgggAk0EQCACIAhGDQNBBCACIAhrIgIgAkEETxsiAkUNAyADQRhqIAggDmogAvwKAAAMAwsgCCACIAJB+OPEABDqBwALIAggAkGY5MQAEIwHAAsgCCACIAJBqOTEABDqBwALIAMgAy0AGCICOgCUAiADIAI6AMABIAMgAjoAbCADIAMtABkiAjoAlQIgAyACOgDBASADIAI6AG0gAyADLQAaIgI6AJYCIAMgAjoAwgEgAyACOgBuIAMgAy0AGyICOgCXAiADIAI6AMMBIAMgAjoAbyAHAn8gCkUEQCADQYEBOgDXAiADQYEBOgDCAiADQYEBOgCtAiADQYEBOgCYAiADQYEBOgCDAiADQYEBOgDuASADQYEBOgDZASADQYEBOgDEASADQYEBOgCvASADQYEBOgCaASADQYEBOgCFASADQYEBOgBwIANBgQE6AFsgA0GBAToARiADQYEBOgAxIANBgQE6ABxBgX9B/wAgEBsMAQsCQCASBEAgEkEBayICRQ0BIAMgCy0AAToAHCACQQFGDQEgAyALLQACOgAxIAJBAkYNASADIAstAAM6AEYgAkEDRg0BIAMgCy0ABDoAWyACQQRGDQEgAyALLQAFOgBwIAJBBUYNASADIAstAAY6AIUBIAJBBkYNASADIAstAAc6AJoBIAJBB0YNASADIAstAAg6AK8BIAJBCEYNASADIAstAAk6AMQBIAJBCUYNASADIAstAAo6ANkBIAJBCkYNASADIAstAAs6AO4BIAJBC0YNASADIAstAAw6AIMCIAJBDEYNASADIAstAA06AJgCIAJBDUYNASADIAstAA46AK0CIAJBDkYNASADIAstAA86AMICIAJBD0YNASADIAstABA6ANcCDAELQQFBAEEAQYjkxAAQ6gcAC0GBf0H/ACAQGyAQRQ0AGiALLQAACzoAACAHQQFqIANBCGpB5AL8CgAAIANB8AJqJAAgCUEBaw4EBAUGBwgLIAogAkHorsYAEIwHAAsgDkEJQfiuxgAQjAcACyAKIAJBiK/GABCMBwALIAogAkG4r8YAEIwHAAtBsH0hCwNAIARByAxqIAtqIgNB5gJqIAQtAMkMOgAAIANB5wJqIAQtAMoMOgAAIANB6AJqIAQtAMsMOgAAIANB6QJqIAQtAMwMOgAAIANB6gJqIAQtAM0MOgAAIANB6wJqIAQtAM4MOgAAIANB7AJqIAQtAM8MOgAAIANB7QJqIAQtANAMOgAAIANB7gJqIAQtANEMOgAAIANB7wJqIAQtANIMOgAAIANB8AJqIAQtANMMOgAAIANB8QJqIAQtANQMOgAAIANB8gJqIAQtANUMOgAAIANB8wJqIAQtANYMOgAAIANB9AJqIAQtANcMOgAAIANB9QJqIAQtANgMOgAAIANB9gJqIAQtANkMOgAAIANB9wJqIAQtANoMOgAAIANB+AJqIAQtANsMOgAAIANB+QJqIAQtANwMOgAAIAtBFWoiCw0ACwwECyA2QRBqIAQtAN0MIgNBgYKECGw2AAAgNUEQaiAELQDyDCILQYGChAhsNgAAIBhBEGogBC0Ahw0iCUGBgoQIbDYAACA0QRBqIAQtAJwNIgJBgYKECGw2AAAgM0EQaiAELQCxDSIIQYGChAhsNgAAIDYgA61CgYKEiJCgwIABfiJ5NwAAIDZBCGogeTcAACA1IAutQoGChIiQoMCAAX4ieTcAACA1QQhqIHk3AAAgGCAJrUKBgoSIkKDAgAF+Ink3AAAgGEEIaiB5NwAAIDQgAq1CgYKEiJCgwIABfiJ5NwAAIDRBCGogeTcAACAzQQhqIAitQoGChIiQoMCAAX4ieTcAACAzIHk3AAAgMkEQaiAELQDGDSIDQYGChAhsNgAAIDFBEGogBC0A2w0iC0GBgoQIbDYAACAwQRBqIAQtAPANIglBgYKECGw2AAAgL0EQaiAELQCFDiICQYGChAhsNgAAIC5BEGogBC0Amg4iCEGBgoQIbDYAACAyIAOtQoGChIiQoMCAAX4ieTcAACAyQQhqIHk3AAAgMSALrUKBgoSIkKDAgAF+Ink3AAAgMUEIaiB5NwAAIDAgCa1CgYKEiJCgwIABfiJ5NwAAIDBBCGogeTcAACAvIAKtQoGChIiQoMCAAX4ieTcAACAvQQhqIHk3AAAgLiAIrUKBgoSIkKDAgAF+Ink3AAAgLkEIaiB5NwAAIBNBEGogBC0Arw4iA0GBgoQIbDYAACAtQRBqIAQtAMQOIgtBgYKECGw2AAAgLEEQaiAELQDZDiIJQYGChAhsNgAAICtBEGogBC0A7g4iAkGBgoQIbDYAACAqQRBqIAQtAIMPIghBgYKECGw2AAAgE0EIaiADrUKBgoSIkKDAgAF+Ink3AAAgEyB5NwAAIC1BCGogC61CgYKEiJCgwIABfiJ5NwAAIC0geTcAACAsQQhqIAmtQoGChIiQoMCAAX4ieTcAACAsIHk3AAAgK0EIaiACrUKBgoSIkKDAgAF+Ink3AAAgKyB5NwAAICpBCGogCK1CgYKEiJCgwIABfiJ5NwAAICogeTcAACApQRBqIAQtAJgPIgNBgYKECGw2AAAgKUEIaiADrUKBgoSIkKDAgAF+Ink3AAAgKSB5NwAADAMLIARByAxqQeUCQRBBAUEBQRUQ4gIMAgsgFCEDIARBKGohC0EAIQkjAEEQayIOJAAgBEHIDGoiQiEFA0AgCSICQQFqIQkgAkECdEEBciFDQXAhEiADIQIgCyEIA0AgEkERaiFEAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgkBAgMEBQYHCAkACyAFIBJqIgdB5QBqIAdB5ABqLQAAIAdBzwBqLQAAIAdBOmotAAAgB0Elai0AACAHQRRqLQAAIAdBE2otAAAgB0ERai0AACAHQRJqLQAAampqampqakEEakH4/wNxQQN2QYGChAhsIhY2AAAgB0HQAGogFjYAACAHQTtqIBY2AAAgB0EmaiAWNgAADAkLIEJB5QJBBCBEIENBFRDiAgwICyAFIBJqIgdB5QBqIAdBFWotAAAgB0ETai0AACIWQQJqIhsgB0EUai0AACIdQQF0ampBFnRBgICAeHEgHSAHQRJqLQAAIh5BAmoiIyAWQQF0ampBDnRBgID8D3FqIBsgB0ERai0AACIWakEGdCAeQQd0akGA/gNxciAHQRBqLQAAIBZBAXRqICNqQQJ2aiIWNgAAIAdB0ABqIBY2AAAgB0E7aiAWNgAAIAdBJmogFjYAAAwHCyAFIBJqIgdB5QBqIAdBzwBqLQAAIhtBAmoiHSAHQeQAai0AACIWIBZBAXRqakECdkGBgoQIbDYAACAHQdAAaiAWIAdBOmotAAAiHkECaiIjaiAbQQF0akECdkGBgoQIbDYAACAHQTtqIB0gB0Elai0AACIWaiAeQQF0akECdkGBgoQIbDYAACAHQSZqICMgB0EQai0AAGogFkEBdGpBAnZBgYKECGw2AAAMBgsgBSASaiIHQRhqLQAAIRYgB0EXai0AACEbIAdBEWotAAAhOyAHQRJqLQAAIR0gB0ETai0AACEeIA4gB0EWai0AACIjIAdBFGotAAAiRkECaiJbIAdBFWotAAAiJUEBdGpqQQJ2OgADIA4gJSAeQQJqIlwgRkEBdGpqQQJ2OgACIA4gHSAeQQF0aiBbakECdjoAASAOIDsgHUEBdGogXGpBAnY6AAAgB0EmaiAOKAIANgAAIA4gJSAbQQJqIh1qICNBAXRqQQJ2OgAEIAdBO2ogDigAATYAACAOIBYgI2ogG0EBdGpBAmpBAnY6AAUgB0HQAGogDigBAjYAACAOIBYgHWogFkEBdGpBAnY6AAYgB0HlAGogDigAAzYAAAwFCyAFIBJqIgdBFGotAAAhOyAHQRNqLQAAIRYgB0HkAGotAAAhRiAHQc8Aai0AACEbIAdBOmotAAAhHSAHQSVqLQAAIR4gDiAHQRJqLQAAIltBAmoiXCAHQRBqLQAAIiNqIAdBEWotAAAiJUEBdGpBAnY6AAwgDiAlIB5BAmoidyAjQQF0ampBAnY6AAsgDiAjIB1BAmoieCAeQQF0ampBAnY6AAogDiAbIB1BAXRqIHdqQQJ2OgAJIAdB0ABqIA4oAAk2AAAgDiBGIBtBAXRqIHhqQQJ2OgAIIAdB5QBqIA4oAgg2AAAgDiA7IFwgFkEBdGpqQQJ2OgAOIA4gFiAlIFtBAXRqakECakECdjoADSAHQSZqIA4oAAs2AAAgB0E7aiAOKAEKNgAADAQLIAUgEmoiB0HRAGogB0EQai0AACIdIAdBEWotAAAiFmpBAWpBAXYiGzoAACAHQSZqIBs6AAAgB0HSAGogFiAHQRJqLQAAIhtqQQFqQQF2Ih46AAAgB0EnaiAeOgAAIAdB5QBqIAdBJWotAAAiHiAHQc8Aai0AACAHQTpqLQAAIiNBAXRqakECakECdjoAACAHQeYAaiAWIB4gHUEBdGpqQQJqQQJ2IiU6AAAgB0HQAGogHSAjIB5BAXRqakECakECdjoAACAHQTtqICU6AAAgB0HnAGogGyAdIBZBAXRqakECakECdiIdOgAAIAdBPGogHToAACAHQegAaiAHQRNqLQAAIh0gFiAbQQF0ampBAmpBAnYiHjoAACAHQRRqLQAAIRYgB0HTAGogGyAdakEBakEBdiIjOgAAIAdBPWogHjoAACAHQShqICM6AAAgB0E+aiAWIBsgHUEBdGpqQQJqQQJ2OgAAIAdBKWogFiAdakEBakEBdjoAAAwDCyAFIBJqIgdB0ABqIAdBEmotAAAiHSAHQRNqLQAAIhZqQQFqQQF2Ihs6AAAgB0EmaiAdIAdBEWotAAAiI2pBAWpBAXY6AAAgB0EnaiAbOgAAIAdB0QBqIBYgB0EUai0AACIbakEBakEBdiIeOgAAIAdBKGogHjoAACAHQdIAaiAbIAdBFWotAAAiHmpBAWpBAXYiJToAACAHQeUAaiAbIB1qIBZBAXRqQQJqQQJ2Ijs6AAAgB0E8aiA7OgAAIAdB5gBqIBYgHkECaiI7IBtBAXRqakECdiJGOgAAIAdBPWogRjoAACAHQTtqICMgFiAdQQF0ampBAmpBAnY6AAAgB0EYai0AACEjIAdBF2otAAAhFiAHQecAaiAHQRZqLQAAIh0gGyAeQQF0ampBAmpBAnYiGzoAACAHQSlqICU6AAAgB0HoAGogIyAdIBZBAXRqakECakECdjoAACAHQdMAaiAWIB1BAXQgO2pqQQJ2OgAAIAdBPmogGzoAAAwCCyAFIBJqIgdB5QBqIAdB5ABqLQAAIiMgB0HPAGotAAAiHWpBAWpBAXY6AAAgB0HnAGogHSAHQTpqLQAAIhZqQQFqQQF2Ihs6AAAgB0HQAGogGzoAACAHQdIAaiAWIAdBJWotAAAiG2pBAWpBAXYiHjoAACAHQTtqIB46AAAgB0E9aiAbIAdBEGotAAAiHmpBAWpBAXYiJToAACAHQeYAaiAWICMgHUEBdGpqQQJqQQJ2OgAAIAdB6ABqIBsgHSAWQQF0ampBAmpBAnYiHToAACAHQdEAaiAdOgAAIAdB0wBqIB4gFiAbQQF0ampBAmpBAnYiFjoAACAHQTxqIBY6AAAgB0ETai0AACEjIAdBEmotAAAhFiAHQT5qIAdBEWotAAAiHSAbIB5BAXRqakECakECdiIbOgAAIAdBJmogJToAACAHQSlqICMgHSAWQQF0ampBAmpBAnY6AAAgB0EoaiAWIB4gHUEBdGpqQQJqQQJ2OgAAIAdBJ2ogGzoAAAwBCyAFIBJqIgdB6ABqIAdB5ABqLQAAIhY6AAAgB0HnAGogFjoAACAHQeYAaiAWOgAAIAdB5QBqIBY6AAAgB0HTAGogFjoAACAHQdIAaiAWOgAAIAdBO2ogB0E6ai0AACIbIAdBzwBqLQAAIh1qQQFqQQF2Ih46AAAgB0EoaiAeOgAAIAdBJmogGyAHQSVqLQAAIh5qQQFqQQF2OgAAIAdB0ABqIBYgHWoiI0EBakEBdiIlOgAAIAdBPWogJToAACAHQTxqIBYgG2ogHUEBdGpBAmpBAnYiJToAACAHQSlqICU6AAAgB0HRAGogIyAWQQF0akECakECdiIWOgAAIAdBPmogFjoAACAHQSdqIB0gHiAbQQF0ampBAmpBAnY6AAALIEJB5QIgCCBDIERBFRDXAiACQQFqIQIgCEFAayEIIBJBBGoiEg0ACyADQQRqIQMgC0GAAmohCyAFQdQAaiEFIAlBBEcNAAsgDkEQaiQADAMLIARByAxqQeUCQRBBFSAQQQBHIApBAEcQgwQLIARByAxqIgNB5QIgBEEoakEBQQFBFRDXAiADQeUCIHBBAUEFQRUQ1wIgA0HlAiBvQQFBCUEVENcCIANB5QIgbkEBQQ1BFRDXAiADQeUCIG1BBUEBQRUQ1wIgA0HlAiBsQQVBBUEVENcCIANB5QIga0EFQQlBFRDXAiADQeUCIGpBBUENQRUQ1wIgA0HlAiBpQQlBAUEVENcCIANB5QIgaEEJQQVBFRDXAiADQeUCIGdBCUEJQRUQ1wIgA0HlAiBmQQlBDUEVENcCIANB5QIgZUENQQFBFRDXAiADQeUCIGRBDUEFQRUQ1wIgA0HlAiBjQQ1BCUEVENcCIANB5QIgYkENQQ1BFRDXAgwBCyAKIAJBmK/GABCMBwALAkAgQQRAIA0gBC0A2Aw6AAAgQUEBayIDQQ9NBEBBAEEQIANB0K3GABDqBwALIA0gBC0A7Qw6AAEgDSAELQCCDToAAiANIAQtAJcNOgADIA0gBC0ArA06AAQgDSAELQDBDToABSANIAQtANYNOgAGIA0gBC0A6w06AAcgDSAELQCADjoACCANIAQtAJUOOgAJIA0gBC0Aqg46AAogDSAELQC/DjoACyANIAQtANQOOgAMIA0gBC0A6Q46AA0gDSAELQD+DjoADiANIAQtAJMPOgAPIA0gBC0AqA86ABAgIiAKQQR0IgNJDQggIiADayILQQ9LDQFBAEEQIAtB4K3GABDqBwALQQBBAEHArcYAEIwHAAsgAyB2aiIDIAQtAJkPOgAAIAMgBC0Amg86AAEgAyAELQCbDzoAAiADIAQtAJwPOgADIAMgBC0AnQ86AAQgAyAELQCeDzoABSADIAQtAJ8POgAGIAMgBC0AoA86AAcgAyAELQChDzoACCADIAQtAKIPOgAJIAMgBC0Aow86AAogAyAELQCkDzoACyADIAQtAKUPOgAMIAMgBC0Apg86AA0gAyAELQCnDzoADiADIAQtAKgPOgAPICRBBHQhDiABKAIIIgkgCiAkIEVsakEEdCIHayEIIAEoAgQhDUEAIRJBACECAkADQCAHIAlLDQEgCEEPTQ0DIAcgDWoiAyAEQcgMaiIFIAJqIgtBFmotAAA6AAAgA0EBaiALQRdqLQAAOgAAIANBAmogC0EYai0AADoAACADQQNqIAtBGWotAAA6AAAgA0EEaiALQRpqLQAAOgAAIANBBWogC0Ebai0AADoAACADQQZqIAtBHGotAAA6AAAgA0EHaiALQR1qLQAAOgAAIANBCGogC0Eeai0AADoAACADQQlqIAtBH2otAAA6AAAgA0EKaiALQSBqLQAAOgAAIANBC2ogC0Ehai0AADoAACADQQxqIAtBImotAAA6AAAgA0ENaiALQSNqLQAAOgAAIANBDmogC0Ekai0AADoAACADQQ9qIAtBJWotAAA6AAAgCCAOayEIIAcgDmohByACQRVqIQIgEkEBaiISQRBJDQALIAEvAaAFIQkgBC0ADCEDIARB2BhqIAogECABKALEBCICIAEoAsgEIgggASgC0AQiDiABKALUBCIHELoEIAUgCiAQIAEoAtwEIg0gASgC4AQiEiABKALoBCIFIAEoAuwEIhYQugQCQAJAAkACQAJAIANBAWsOAwECAwALIARB2BhqQdEAQQhBCSAQQQBHIgMgCkEARyILEIMEIARByAxqQdEAQQhBCSADIAsQgwQMAwsgBCAELQDZGCIDOgDiGCAEIAQtANoYIgs6AOMYIAQgBC8A2xg7AOQYIAQgBCgA3Rg2AOYYIAQgAzoA6xggBCAEKADaGDYA7BggBCAELwDeGDsA8BggBCAELQDgGDoA8hggBCADOgD0GCAEIAs6APUYIAQgBC0A2xg6APYYIAQgBC0A3Bg6APcYIAQgBC8A3RgiAzsA+BggBCAELQDfGCILOgD6GCAEIAQtAOAYIiI6APsYIAQgBCkA2Rg3AP0YIAQgBCgA2Rg2AIYZIAQgAzsAihkgBCALOgCMGSAEICI6AI0ZIAQgBC0A2Rg6AI8ZIAQgBC0A2hg6AJAZIAQgBC0A2xgiAzoAkRkgBCAELQDcGDoAkhkgBCAEKADdGDYAkxkgBCAELQDZGCILOgCYGSAEIAQoANoYNgCZGSAEIAQvAN4YOwCdGSAEIAQtAOAYOgCfGSAEIAs6AKEZIAQgBC0A2hg6AKIZIAQgAzoAoxkgBCAELQDcGDoApBkgBCAELQDdGDoApRkgBCAELQDeGDoAphkgBCAELQDfGDoApxkgBCAELQDgGDoAqBkgBCAELQDJDDoA0gwgBCAELQDKDDoA0wwgBCAELQDLDDoA1AwgBCAELQDMDDoA1QwgBCAELQDNDDoA1gwgBCAELQDODDoA1wwgBCAELQDPDDoA2AwgBCAELQDQDDoA2QwgBCAELQDJDDoA2wwgBCAELQDKDDoA3AwgBCAELQDLDDoA3QwgBCAELQDMDDoA3gwgBCAELQDNDDoA3wwgBCAELQDODDoA4AwgBCAELQDPDDoA4QwgBCAELQDQDDoA4gwgBCAELQDJDDoA5AwgBCAELQDKDDoA5QwgBCAELQDLDDoA5gwgBCAELQDMDDoA5wwgBCAELQDNDDoA6AwgBCAELQDODDoA6QwgBCAELQDPDDoA6gwgBCAELQDQDDoA6wwgBCAELQDJDDoA7QwgBCAELQDKDDoA7gwgBCAELQDLDDoA7wwgBCAELQDMDDoA8AwgBCAELQDNDDoA8QwgBCAELQDODDoA8gwgBCAELQDPDDoA8wwgBCAELQDQDDoA9AwgBCAELQDJDDoA9gwgBCAELQDKDDoA9wwgBCAELQDLDDoA+AwgBCAELQDMDDoA+QwgBCAELQDNDDoA+gwgBCAELQDODDoA+wwgBCAELQDPDDoA/AwgBCAELQDQDDoA/QwgBCAELQDJDDoA/wwgBCAELQDKDDoAgA0gBCAELQDLDDoAgQ0gBCAELQDMDDoAgg0gBCAELQDNDDoAgw0gBCAELQDODDoAhA0gBCAELQDPDDoAhQ0gBCAELQDQDDoAhg0gBCAELQDJDDoAiA0gBCAELQDKDDoAiQ0gBCAELQDLDDoAig0gBCAELQDMDDoAiw0gBCAELQDNDDoAjA0gBCAELQDODDoAjQ0gBCAELQDPDDoAjg0gBCAELQDQDDoAjw0gBCAELQDJDDoAkQ0gBCAELQDKDDoAkg0gBCAELQDLDDoAkw0gBCAELQDMDDoAlA0gBCAELQDNDDoAlQ0gBCAELQDODDoAlg0gBCAELQDPDDoAlw0gBCAELQDQDDoAmA0MAgsgWCAEMQDhGEKBgoSIkKDAgAF+NwAAIFYgBDEA6hhCgYKEiJCgwIABfjcAACBVIAQxAPMYQoGChIiQoMCAAX43AAAgVCAEMQD8GEKBgoSIkKDAgAF+NwAAIFMgBDEAhRlCgYKEiJCgwIABfjcAACBSIAQxAI4ZQoGChIiQoMCAAX43AAAgUSAEMQCXGUKBgoSIkKDAgAF+NwAAIFAgBDEAoBlCgYKEiJCgwIABfjcAACBXIAQxANEMQoGChIiQoMCAAX43AAAgKCAEMQDaDEKBgoSIkKDAgAF+NwAAIE8gBDEA4wxCgYKEiJCgwIABfjcAACBOIAQxAOwMQoGChIiQoMCAAX43AAAgTSAEMQD1DEKBgoSIkKDAgAF+NwAAIEwgBDEA/gxCgYKEiJCgwIABfjcAACAYIAQxAIcNQoGChIiQoMCAAX43AAAgSyAEMQCQDUKBgoSIkKDAgAF+NwAADAELIARB2BhqQdEAQQhBAUEBQQkQ4gIgBEHIDGpB0QBBCEEBQQFBCRDiAgsgBEHYGGoiA0HRACBhQQFBAUEJENcCIARByAxqIgtB0QAgYEEBQQFBCRDXAiADQdEAIF9BAUEFQQkQ1wIgC0HRACBeQQFBBUEJENcCIANB0QAgIUEFQQFBCRDXAiALQdEAICBBBUEBQQkQ1wIgA0HRACBaQQVBBUEJENcCIAtB0QAgWUEFQQVBCRDXAiAOIAcgAiAIIAMgChCOBiAFIBYgDSASIAsgChCOBiAJIB9sIQ4gCUEDdCEWIAogCSBJbGpBA3QhAiABKAIUIgcgJmohIiABKAIgIg0gJmohGyABKAIcIR0gASgCECEeQQAhBUEAIRIDQCACIAdLDQQgDiAiaiIDQQdNDQUgAiANSw0GIA4gG2oiA0EHTQ0HIARByAxqIBJqIgNBCmotAAAhJCACIB5qIgsgBEHYGGogEmoiCUEKai0AADoAACACIB1qIgggJDoAACADQQtqLQAAISQgC0EBaiAJQQtqLQAAOgAAIAhBAWogJDoAACADQQxqLQAAISQgC0ECaiAJQQxqLQAAOgAAIAhBAmogJDoAACADQQ1qLQAAISQgC0EDaiAJQQ1qLQAAOgAAIAhBA2ogJDoAACADQQ5qLQAAISQgC0EEaiAJQQ5qLQAAOgAAIAhBBGogJDoAACADQQ9qLQAAISQgC0EFaiAJQQ9qLQAAOgAAIAhBBWogJDoAACADQRBqLQAAISQgC0EGaiAJQRBqLQAAOgAAIAhBBmogJDoAACADQRFqLQAAIQMgC0EHaiAJQRFqLQAAOgAAIAhBB2ogAzoAACAOIBZrIQ4gAiAWaiECIBJBCWohEiAFQQFqIgVBCEkNAAsgASgCmAQiAiABKAKQBEYEQEEAIQgjAEEgayILJAACQAJAQQQgGSIDKAIAIg5BAXQiCSAJQQRNGyIHrUIefiJ5QiCIUEUNACB5pyINQQBIDQAgCyAOBH8gCyAOQR5sNgIcIAsgAygCBDYCFEEBBUEACzYCGCALQQhqQQEgDSALQRRqEIUHIAsoAghBAUcNASALKAIQIQkgCygCDCEICyAIIAlBmKnGABCTCQALIAsoAgwhCSADIAc2AgAgAyAJNgIEIAtBIGokAAsgASgClAQgAkEebGoiAyAE/QABCv0LAAAgA0EWaiAEQSBqKQEANwAAIANBEGogBEEaaikBADcAACABIAJBAWo2ApgEICZBCGshJiAKQQFqIQogNyA3IHVJIgNqITcgAw0BDAoLCyAHIAkgCUGArsYAEOoHAAtBAEEQIAhB8K3GABDqBwALIAIgByAHQfivxgAQ6gcAC0EAQQggA0HIr8YAEOoHAAsgAiANIA1B6K/GABDqBwALQQBBCCADQdivxgAQ6gcACyADICIgIkGQrsYAEOoHAAsgBCAEKQHaGDcDuAwgBCAEQeAYaikBADcBvgwgBC0A2RghBwsgBCAEKQO4DDcDqAwgBCAEKQG+DDcBrgwgAEEMaiAEKQGuDDcBACAAIAQpA6gMNwEGIAAgBzoABSAAIAI6AAQgAEGAgICAeDYCAAwJC0EREHEiA0UNASADQoGDhoyYsODAgX83AAAgA0EQakGBAToAACADQQhqQoGDhoyYsODAgX83AAAgASgCtAQiCwRAIAEoArgEIAtBARCiBwsgAUERNgK8BCABIAM2ArgEIAFBETYCtARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgCzAQiCwRAIAEoAtAEIAtBARCiBwsgAUEJNgLUBCABIAM2AtAEIAFBCTYCzARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQgH0FAaiEfIElBCGohSSBFQRBqIUUgESARIEpJIgtqIQMgESEQIAsNAAsMAgsAC0H4qMYAEIIIAAsgAS8BogUiR0UNAEEAIQdBASEDA0AgAyELAkAgAS8BoAUiSEUNAEEAIQMDQCADIAcgAS8BoAVsaiIGIAEoApgEIglJBEAgBEHQDGogASgClAQgBkEebGoiBkEIav0AAAD9CwMAIARB3gxqIAZBFmopAAA3AQAgBCAGKQAANwPIDAJAAkAgBEHIDGoiCi0AHSIGQQNNBEAgAS0ALSIJRQ0CIAotAAMhDUE/IAlBACABIAZBBHRqIgYtAD4bIAYsAD1qIgZBACAGQQBKGyAJIAEtAKQFGyIGIAZBP08bIQIgAS0ApgVFDQEgASgC8AMgAmohAiANQQRHDQEgASgCgAQgAmohAgwBCyAGQQRBuNXGABCMBwALQT8gAkEAIAJBAEobIgYgBkE/ThshBiABLQAuIgkEfyAGQf8BcUECQQEgCUEESxt2IghBCSAJa0H/AXEiCSAIIAlJGwUgBgshCSABLwGgBSESAn8CQAJAIAEtAChFBEAgAkEnTA0BQQMMAwsgAkEnTA0BQQIMAgsgAkETTA0AQQIMAQsgAkEATA0BIAJBDkoLIQggEkEDdCEZIBJBBHQhDkEBIRZBASAJQf8BcSIJIAlBAU0bIgkgBkEBdGoiEEEEaiERAkACQAJAAkACQAJAAkAgDUEERgRAIANFDQMMAQsgCi0AAEUEQCAKLQABIRYgAw0BDAILQQAhFiADRQ0DCyADQQR0QQRrIg0gB0EEdCIUIA5saiECIAEoAgQhCiABKAIIIQYCQAJAAkACQAJAAkACQAJAAkAgAS0AKkUEQCACIAZLDQMgBiACayIMQQdLDQEMDwsgAiAGSw0DIAYgAmsiDEEHSw0BDA0LIAggCSARIAIgCmoQ+AIgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEECciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQNyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEFciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQZyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEIciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQlyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEELciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQxyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEOciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQ9yIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgASgCFCIKIANBA3RBBGsiDCAHQQN0IgUgGWxqIgJPDQMMBAsgEUH/AXEiBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBA3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBC3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBD3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgYtAAIgBi0ABWsiAiACQR91IgpzIAprQQF2IAYtAAMiCiAGLQAEIg1rIhQgFEEfdSIUcyAUa0EBdGpPBEAgBkH/AEGAfyAKQfwAQYB/IA0gCmtBA2xB/wBBgH8gAiACQYB/TBsiAiACQf8AThtqIgIgAkGAf0wbIgIgAkH8AE4bQQNqQQN1akGAAWsiCiAKQYB/TBsiCiAKQf8AThtBgAFzOgADIAZB/wBBgH8gDUH7ACACIAJB+wBOG0EEakEDdWtBgAFrIgYgBkGAf0wbIgYgBkH/AE4bQYABczoABAsMBwsgAiAGIAZBuKfGABDqBwALIAIgBiAGQdioxgAQ6gcACyAKIAJrIhRBB00NASABKAIcIQ0gASgCICEGIAggCSARIAEoAhAiDyACahD4AiACIAZLDQMgBiACayIUQQdNDQIgCCAJIBEgAiANahD4AiAKIAwgBUEBciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQJyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBA3IgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEEciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQVyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBBnIgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEHciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCDAQLIAIgCiAKQZinxgAQ6gcAC0EAQQggFEHopsYAEOoHAAtBAEEIIBRB+KbGABDqBwALIAIgBiAGQYinxgAQ6gcACyAWQQFxDQBBACEWDAELIANBBHQhCiAHQQR0Ig0gDmwhFCABKAIEIQYgASgCCCECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAqRQRAIAYgCiAUaiIPaiETQQAhBkEAIAcgEmxBCHQgCmprIQVBACANQQFqIBJsIi5BBHQgCmoiL2shGkEAIA1BAmogEmwiMEEEdCAKaiIxayEMQQAgDUEDaiASbCIyQQR0IApqIjNrIRRBACANQQRqIBJsIjRBBHQgCmoiNWshFkEAIA1BBWogEmwiNkEEdCAKaiI3ayEYQQAgDUEGaiASbCI4QQR0IApqIjlrISZBACANQQdqIBJsIh1BBHQgCmoiHmshIkEAIA1BCGogEmwiOkEEdCAKaiIXayEbQQAgDUEJaiASbCIcQQR0IApqIjxrISdBACANQQpqIBJsIj1BBHQgCmoiPmshKEEAIA1BC2ogEmwiP0EEdCAKaiJAayEpQQAgDUEMaiASbCIkQQR0IApqIkFrISpBACANQQ1qIBJsIkJBBHQgCmoiQ2shK0EAIA1BDmogEmwiREEEdCAKaiIjayEsQQAgDUEPaiASbCIlQQR0IApqIkVrIS0DQCAGIA9qIg0gAksNESACIAVqIg1BB00NFCAIIAkgECAGIBNqIh8QlAQgBiAvaiACSw0QIAIgGmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDFqIAJLDQ8gAiAMaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgM2ogAksNDiACIBRqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA1aiACSw0NIAIgFmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDdqIAJLDQwgAiAYaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgOWogAksNCyACICZqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiAeaiACSw0KIAIgImoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIBdqIAJLDQkgAiAbaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgPGogAksNCCACICdqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA+aiACSw0HIAIgKGoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIEBqIAJLDQYgAiApaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgQWogAksNBSACICpqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiBDaiACSw0EIAIgK2oiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGICNqIAJLDQMgAiAsaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgRWogAksNAiACIC1qIg1BCEkNFCAIIAkgECAOIB9qEJQEIAVBBGshBSAaQQRrIRogDEEEayEMIBRBBGshFCAWQQRrIRYgGEEEayEYICZBBGshJiAiQQRrISIgG0EEayEbICdBBGshJyAoQQRrISggKUEEayEpICpBBGshKiArQQRrISsgLEEEayEsIC1BBGshLSAGQQRqIgZBDEcNAAsMEQsgEEH/AXEhDyAGIAogFGoiPGohPUEAIAcgEmxBCHQgCmprIRogBiANQQFqIBJsIj5BBHQgCmoiLmohP0EAIC5rIQwgBiANQQJqIBJsIkBBBHQgCmoiL2ohJEEAIC9rIRQgBiANQQNqIBJsIkFBBHQgCmoiMGohQkEAIDBrIRYgBiANQQRqIBJsIkNBBHQgCmoiMWohREEAIDFrIRggBiANQQVqIBJsIiNBBHQgCmoiMmohJUEAIDJrISYgBiANQQZqIBJsIkVBBHQgCmoiM2ohH0EAIDNrISIgBiANQQdqIBJsIklBBHQgCmoiNGohSkEAIDRrIRsgBiANQQhqIBJsIktBBHQgCmoiNWohTEEAIDVrIScgBiANQQlqIBJsIk1BBHQgCmoiNmohTkEAIDZrISggBiANQQpqIBJsIk9BBHQgCmoiN2ohUEEAIDdrISkgBiANQQtqIBJsIlFBBHQgCmoiOGohUkEAIDhrISogBiANQQxqIBJsIlNBBHQgCmoiOWohVEEAIDlrISsgBiANQQ1qIBJsIlVBBHQgCmoiHWohVkEAIB1rISwgBiANQQ5qIBJsIldBBHQgCmoiHmohWEEAIB5rIS0gBiANQQ9qIBJsIllBBHQgCmoiOmohWkEAIDprIQ1BdCEGAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAAkAgAiAGIDxqIgVBDGpPBEAgAiAaaiIFQQdLDQEMEwsgBUEMagwRCyAPIAYgPWoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAuakEMaiACSw0PIAIgDGoiBUEISQ0RIA8gBiA/aiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIC9qQQxqIAJLDQ4gAiAUaiIFQQhJDREgDyAGICRqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgMGpBDGogAksNDSACIBZqIgVBCEkNESAPIAYgQmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAxakEMaiACSw0MIAIgGGoiBUEISQ0RIA8gBiBEaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDJqQQxqIAJLDQsgAiAmaiIFQQhJDREgDyAGICVqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgM2pBDGogAksNCiACICJqIgVBCEkNESAPIAYgH2oiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA0akEMaiACSw0JIAIgG2oiBUEISQ0RIA8gBiBKaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDVqQQxqIAJLDQggAiAnaiIFQQhJDREgDyAGIExqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgNmpBDGogAksNByACIChqIgVBCEkNESAPIAYgTmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA3akEMaiACSw0GIAIgKWoiBUEISQ0RIA8gBiBQaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDhqQQxqIAJLDQUgAiAqaiIFQQhJDREgDyAGIFJqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOWpBDGogAksNBCACICtqIgVBCEkNESAPIAYgVGoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAdakEMaiACSw0DIAIgLGoiBUEISQ0RIA8gBiBWaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIB5qQQxqIAJLDQIgAiAtaiIFQQhJDREgDyAGIFhqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOmpBDGogAksNASACIA1qIgVBCEkNESAPIAYgWmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgGkEEayEaIAxBBGshDCAUQQRrIRQgFkEEayEWIBhBBGshGCAmQQRrISYgIkEEayEiIBtBBGshGyAnQQRrIScgKEEEayEoIClBBGshKSAqQQRrISogK0EEayErICxBBGshLCAtQQRrIS0gDUEEayENIAZBBGoiBg0AC0EBIRYMIgsgWUEEdCAKaiAGakEMagwOCyBXQQR0IApqIAZqQQxqDA0LIFVBBHQgCmogBmpBDGoMDAsgU0EEdCAKaiAGakEMagwLCyBRQQR0IApqIAZqQQxqDAoLIE9BBHQgCmogBmpBDGoMCQsgTUEEdCAKaiAGakEMagwICyBLQQR0IApqIAZqQQxqDAcLIElBBHQgCmogBmpBDGoMBgsgRUEEdCAKaiAGakEMagwFCyAjQQR0IApqIAZqQQxqDAQLIENBBHQgCmogBmpBDGoMAwsgQUEEdCAKaiAGakEMagwCCyBAQQR0IApqIAZqQQxqDAELID5BBHQgCmogBmpBDGoLIAIgAkG4qMYAEOoHAAtBAEEIIAVBqKjGABDqBwALICVBBHQgCmogBmohDQwOCyBEQQR0IApqIAZqIQ0MDQsgQkEEdCAKaiAGaiENDAwLICRBBHQgCmogBmohDQwLCyA/QQR0IApqIAZqIQ0MCgsgPUEEdCAKaiAGaiENDAkLIBxBBHQgCmogBmohDQwICyA6QQR0IApqIAZqIQ0MBwsgHUEEdCAKaiAGaiENDAYLIDhBBHQgCmogBmohDQwFCyA2QQR0IApqIAZqIQ0MBAsgNEEEdCAKaiAGaiENDAMLIDJBBHQgCmogBmohDQwCCyAwQQR0IApqIAZqIQ0MAQsgLkEEdCAKaiAGaiENCyANIAIgAkGYqMYAEOoHAAsCQAJAIAEoAhQiCiADQQN0IgwgB0EDdCIFIBlsaiICSQ0AAkACQCAKIAJrIhRBB00NACABKAIcIQ0gASgCICEGIAggCSAQIAEoAhAiDyACahCUBCACIAZLDQMgBiACayIUQQdNDQEgCCAJIBAgAiANahCUBCAKIAVBAXIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUECciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQNyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBBHIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUEFciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQZyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBB3IgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEQQEhFgwEC0EAQQggFEHIp8YAEOoHAAtBAEEIIBRB2KfGABDqBwALIAIgCiAKQfinxgAQ6gcACyACIAYgBkHop8YAEOoHAAsCQCAHRQ0AIAcgDmxBBHQgA0EEdGoiCkEPciENIApBDnIhFCAKQQ1yIQwgCkEMciEFIApBC3IhDyAKQQpyIRogCkEJciEYIApBCHIhJiAKQQdyISIgCkEGciEbIApBBXIhJyAKQQRyISggCkEDciEpIApBAnIhKiAKQQFyISsgASgCCCEGIAEoAgQhAiABLQAqRQRAIAggCSARIAIgBiAKIA4Q+gIgCCAJIBEgAiAGICsgDhD6AiAIIAkgESACIAYgKiAOEPoCIAggCSARIAIgBiApIA4Q+gIgCCAJIBEgAiAGICggDhD6AiAIIAkgESACIAYgJyAOEPoCIAggCSARIAIgBiAbIA4Q+gIgCCAJIBEgAiAGICIgDhD6AiAIIAkgESACIAYgJiAOEPoCIAggCSARIAIgBiAYIA4Q+gIgCCAJIBEgAiAGIBogDhD6AiAIIAkgESACIAYgDyAOEPoCIAggCSARIAIgBiAFIA4Q+gIgCCAJIBEgAiAGIAwgDhD6AiAIIAkgESACIAYgFCAOEPoCIAggCSARIAIgBiANIA4Q+gIgASgCICEGIAEoAhwhAiAIIAkgESABKAIQIg0gASgCFCIUIAcgGWxBA3QgA0EDdGoiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIgCCAJIBEgDSAUIApBAXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBAnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBA3IiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBHIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBB3IiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIMAQsgESACIAYgCiAOEOEFIBEgAiAGICsgDhDhBSARIAIgBiAqIA4Q4QUgESACIAYgKSAOEOEFIBEgAiAGICggDhDhBSARIAIgBiAnIA4Q4QUgESACIAYgGyAOEOEFIBEgAiAGICIgDhDhBSARIAIgBiAmIA4Q4QUgESACIAYgGCAOEOEFIBEgAiAGIBogDhDhBSARIAIgBiAPIA4Q4QUgESACIAYgBSAOEOEFIBEgAiAGIAwgDhDhBSARIAIgBiAUIA4Q4QUgESACIAYgDSAOEOEFCyAWRQ0DIANBBHQhESAHQQR0IQogASgCCCEGIAEoAgQhAiABLQAqRQRAIBJBBnQhFCAKQQRqIBJsQQR0IBFqQQ9qIQ1BfSEFA0AgCCAJIBAgAiAGIA1BD2sgDhDgBCAIIAkgECACIAYgDUEOayAOEOAEIAggCSAQIAIgBiANQQ1rIA4Q4AQgCCAJIBAgAiAGIA1BDGsgDhDgBCAIIAkgECACIAYgDUELayAOEOAEIAggCSAQIAIgBiANQQprIA4Q4AQgCCAJIBAgAiAGIA1BCWsgDhDgBCAIIAkgECACIAYgDUEIayAOEOAEIAggCSAQIAIgBiANQQdrIA4Q4AQgCCAJIBAgAiAGIA1BBmsgDhDgBCAIIAkgECACIAYgDUEFayAOEOAEIAggCSAQIAIgBiANQQRrIA4Q4AQgCCAJIBAgAiAGIA1BA2sgDhDgBCAIIAkgECACIAYgDUECayAOEOAEIAggCSAQIAIgBiANQQFrIA4Q4AQgCCAJIBAgAiAGIA0gDhDgBCANIBRqIQ0gBUEBaiIFDQALIAEoAiAhBiABKAIcIQIgCCAJIBAgASgCECIRIAEoAhQiCiAZIAdBA3RBBHJsIANBA3RqIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEIAggCSAQIBEgCiAOQQFyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQJyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQNyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQRyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQVyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQZyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQdyIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEDAQLIBJBBnQhDSAKQQRqIBJsQQR0IBFqQQ9qIQlBfSEIA0AgECACIAYgCUEPayAOEOEFIBAgAiAGIAlBDmsgDhDhBSAQIAIgBiAJQQ1rIA4Q4QUgECACIAYgCUEMayAOEOEFIBAgAiAGIAlBC2sgDhDhBSAQIAIgBiAJQQprIA4Q4QUgECACIAYgCUEJayAOEOEFIBAgAiAGIAlBCGsgDhDhBSAQIAIgBiAJQQdrIA4Q4QUgECACIAYgCUEGayAOEOEFIBAgAiAGIAlBBWsgDhDhBSAQIAIgBiAJQQRrIA4Q4QUgECACIAYgCUEDayAOEOEFIBAgAiAGIAlBAmsgDhDhBSAQIAIgBiAJQQFrIA4Q4QUgECACIAYgCSAOEOEFIAkgDWohCSAIQQFqIggNAAsMAwtBAEEIIA1BiKjGABDqBwALQQBBCCAMQcioxgAQ6gcAC0EAQQggDEGop8YAEOoHAAsgA0EBaiIDIEhHDQEMAgsLIAYgCUHoqMYAEIwHAAsgB0EBaiEHIAsgCyBHSSIGaiEDIAYNAAsLIAAgAf0AAgD9CwIAIABBIGogAUEgav0AAgD9CwIAIABBEGogAUEQav0AAgD9CwIAIAEoAnQiAARAIBUoAgAgAEECdEEBEKIHCyABKAKQBCIABEAgASgClAQgAEEebEEBEKIHCyBdEL8CIAEoAvAEQYAhQQEQogcgASgCnAQiAARAIAEoAqAEIABBHmxBARCiBwsgASgCqAQiAARAIAEoAqwEIABBARCiBwsgASgCtAQiAARAIAEoArgEIABBARCiBwsgASgCwAQiAARAIAEoAsQEIABBARCiBwsgASgCzAQiAARAIAEoAtAEIABBARCiBwsgASgC2AQiAEUNBCABKALcBCAAQQEQogcMBAsgekIgiKchEiB6QhCIpyEVIHpCCIinIQgLCyAAIA42AhAgACADOgAIIAAgAjsBBiAAIAc6AAUgACALOgAEIABBgICAgHg2AgAgAEEPaiASQRh2rTwAACAAQQ1qIBJBCHatPQAAIAAgEkEYdK0gCEH/AXEgFUEIdHKtQv///weDhD4ACQsgASgCdCIABEAgASgCcCIGQQRrKAIAIgNBeHEiCyAAQQJ0IgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoApAEIgAEQCABKAKUBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAgAiAARAIAEoAgQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCDCIABEAgASgCECIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAIYIgAEQCABKAIcIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAFBmAFqEL8CIAEoAvAEIgZBBGsoAgAiAEF4cUGEIUGIISAAQQNxIgMbSQ0BIANBACAAQaghTxsNAiAGEKICIAEoApwEIgAEQCABKAKgBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAqgEIgAEQCABKAKsBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAK0BCIABEAgASgCuAQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCwAQiAARAIAEoAsQEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAswEIgAEQCABKALQBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKALYBCIARQ0AIAEoAtwEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0BIANBACALIABBJ2pLGw0CIAYQogILAkAgASgC5AQiAARAIAEoAugEIgFBBGsoAgAiBkF4cSIDQQRBCCAGQQNxIgYbIABqSQ0CIAZBACADIABBJ2pLGw0BIAEQogILIARBsBlqJAAPCwwBC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu6pAECEX8BfiMAQbABayIGJAAgAy0AACIPQRh0IAMtAAMiB0EYdCINIA9yIAMtAAEiCkEIdCIRIAMtAAIiCUEQdCIMcnIiCEGA/gNxQQh0ciAMQQh2IAdyciEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACQAJAAkACQCAGAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AAEEBaw4FBAABAgwDCyABQgA3A4ADIAEgAzYC/AIgAUEDOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxLCyACKAIEIQsgASgCCEECRiAPIBFyIAwgDXJyIgNByZCRkgVHcQ0DIAMgASgC2AIiCEcNBAxJCyACKAABIREgAS0AkQMNBCABKALQAiICIANGDQQgAS0AlANBAUZBACARQSBxGw0FIAAgETYCECAAIAI2AgwgACADNgIIIABBADoABCAAQQE2AgAMSQsgCEGJobm6BEcEQCAAQQE2AgAgAEEBOgAEDEkLIAFCADcDgAMgAUEBOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxICyAIQY2U6NAARwRAIABBATYCACAAQQE6AAQMSAsgAUIANwOAAyABQQI6APgCIABBADoACCAAIAU2AgQgAEEANgIADEcLIAAgAzYABSAAQQQ6AAQgAEEBNgIADEYLIAhB5siFogVHIAhByYiFogVHcQ1EAkAgBARAIAZBQGshCCABKALwAiENIAEtAPQCIQwjAEEQayILJAACQAJAIAxBAXFFDQAgDS0AowdBB0YNAAJAIAQoAgwiECgCACISIAQoAgQiDEcEQCAMIAQoAggiESgCACIOSQ0BIAtBBGogDUEBQQAgBCgCACAOaiAMIA5rIBIgDmtBABBCIAstAAQEQCAIIAstAAU6AAEgCEEcOgAADAQLIBAgECgCACALKAIMaiIENgIAIA0tAKMHQQdGBEAgESAENgIAIAhBqAI7AQAMBAsgBCAMRwRAIAhBnAI7AQAMBAsgCEEoOwEAIBEgDEGAgAJrIgRBACAEIAxNGyIEIBEoAgAiCCAEIAhLGzYCAAwDCyAIQagCOwEADAILIA4gDCAMQeCQxQAQ6gcACyAIQagCOwEACyALQRBqJAAgBi0AQSEEIAYtAEAiCEEoRg0BIAAgBikBQjcBBiAAQQxqIAZByABqKQEANwEAIAAgBDoABSAAIAg6AAQgAEEBNgIADEcLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCDEQLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIARBAXENQyAAQQU6AAggAEIANwIADEULIAEtAOwCQQFrDgICAwELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQwsgBiARNgIkIBFBGHYhByARQRB2IQIgEUEIdiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBFB/wFxQckAaw4yAG9vb29vbwFvb29vb29vb29vb29vb29vBwoIbwsCBm8Mb29vCW9vBW9vAwRvb29vbw1vCyAEQf8BcUHEAGsOBQ8Obm4NbgsgBEH/AXFBzABHIAJB/wFxQdQAR3IgB0HFAEdyDW0gASgCCEECRg0zIAEoAuABQYGAgIB4Rg0QIAZB0JjRqgQ2AClBCSECIAZBCToAKAxkCyAEQf8BcUHjAGsOAhEQbAsgBEH/AXFBwgBrIgRFDREgBEEQRg0SDGsLIARB/wFxQcUAayIERQ0VIARBDUYNFAxqCyAHQfMARyAEQf8BcUHIAEdyIAJB/wFxQdkAR3INaSABKAIIQQJGDTogAS0AjAMNOyABLQCcAkECRg0XIAZB8JDlmgc2AClBCSECIAZBCToAKAxgCyAHQcEARyAEQf8BcUHBAEdyIAJB/wFxQc0AR3INaCABKAIIIgJBAkYNOyABLQCMAw08IAJBAUcNFyAGQeeCtYoENgApQQkhAiAGQQk6ACgMXwsgB0HMAEcgBEH/AXFB4wBHciACQf8BcUHUAEdyDWcgASgCCEECRg08IAEtAIwDDT0gASgCNEUNFyAGQeHG0eIENgApQQkhAiAGQQk6ACgMXgsgBEH/AXFByABrDgUXGGZmGWYLIAdB1gBHIARB/wFxQcQAR3IgAkH/AXFBwwBHcg1lIAEoAghBAkYNQCABKAJsRQ0cIAZB7YiNsgU2AClBCSECIAZBCToAKAxcCyAHQcQARyAEQf8BcUHLAEdyIAJB/wFxQccAR3INZCABKAIIQQJGDUEgASgC7AFBgYCAgHhGDRwgBkHilp2iBDYAKUEJIQIgBkEJOgAoDFsLIAdB5gBHIARB/wFxQdgAR3IgAkH/AXFByQBHcg1jIAEoAghBAkYNQSABKAKEAkGBgICAeEYNHCAGQeWwpbIGNgApQQkhAiAGQQk6ACgMWgsgBEH/AXFBwwBrIgRFDRwgBEERRg1HDGILIAdB9ABHIARB/wFxQdQAR3INYSACQf8BcUHYAEYNHAxhCyACQf8BcUHEAEcgB0HSAEdyDWAgASgCCEECRg0CIAZByZCRkgU2AClBCQxaCyACQf8BcUHOAEcgB0HEAEdyDV8MXQsgAkH/AXFBwQBHIAdB1ABHcg1eDFwLAkACQCABKALoAiIEQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMSgsgBEF8cUEERgRAQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEoLIAEoAuQCIgIoAAAiD0UNACACKAAEIggNAQtBEQxYCwJAIARBCEYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJCyACLQAIIgNBAWsiCUH/AXEiB0EPS0GLgQIgB3ZBAXFFcg0AAkACQAJAAkACfyAEQQlGBEBBACEHQaiQyAApAwAiF6ciBEH/AXFBBEcNJCACQQlqIQpBACEMQQAMAQsgAkEJai0AACIMQQZLDQEgBEEKayEHIAJBCmohCkEAQQEgDHRB1QBxDQAaIAxBA0cNAUEBCyECIANBAWsOEAEBAwEDAwMDAwMDAwMDAwIDCyAGIAw6AClBEwxbCyAMQQZNQQBBASAMdEHUAHEbDVkgAkGAgAIgCXZxQQFHDQEMWQsgAg1YCwJAIAdFBEBBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMSgsgCi0AACICDSMgB0EBRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEoLIAotAAEiAg0kIAdBAkYEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxKC0EAIQcCQAJAIAotAAIiAg4CAgEACyAGIAI6AClBGgxaC0EBIQcLAkAgAUEIaiIJKAIAQQJGDQACQCAJKALAASICQYKAgIB4SCACRXJFBEAgCSgCxAEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCzAEiAkGCgICAeEggAkVyRQRAIAkoAtABIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAtgBIgJBgoCAgHhIIAJFckUEQCAJKALcASIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKALkASICQYKAgIB4SCACRXJFBEAgCSgC6AEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgC8AEiAkGCgICAeEggAkVyRQRAIAkoAvQBIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAvwBIgJBgoCAgHhIIAJFckUEQCAJKAKAAiIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKAKgASEEIAkoAqQBIgoEQCAEIQIDQCACKAIAIgsEQCACQQRqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBDGooAgAiCwRAIAJBEGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEYaiECIApBAWsiCg0ACwsgCSgCnAEiAgRAIARBBGsoAgAiCkF4cSILIAJBGGwiAkEEQQggCkEDcSIKG2pJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCrAEhBCAJKAKwASIKBEAgBEEUaiECA0AgAkEEaygCACILBEAgAigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQRBrKAIAIgsEQCACQQxrKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBHGohAiAKQQFrIgoNAAsLIAkoAqgBIgIEQCAEQQRrKAIAIgpBeHEiCyACQRxsIgJBBEEIIApBA3EiChtqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoArgBIQQgCSgCvAEiCgRAIAQhAgNAIAJBEGooAgAiCwRAIAJBFGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEcaigCACILBEAgAkEgaigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQShqKAIAIgsEQCACQSxqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBBGooAgAiCwRAIAJBCGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkE4aiECIApBAWsiCg0ACwsgCSgCtAEiAkUNASAEQQRrKAIAIglBeHEiCiACQThsIgJBBEEIIAlBA3EiCRtqSQ1kIAlBACAKIAJBJ2pLGw0AIAQQogIMAQsMZAsgASADOgDHAiABIAw6AMYCIAFBBDoAxQIgASAHOgDEAiABIAhBGHQgCEGA/gNxQQh0ciAIQQh2QYD+A3EgCEEYdnJyNgLAAiABIA9BGHQgD0GA/gNxQQh0ciAPQQh2QYD+A3EgD0EYdnJyNgK8AiABQQI6ALkCIAFBAjoAnAIgAUECNgKQAiABQYGAgIB4NgKEAiABQYGAgIB4NgL4ASABQYGAgIB4NgLsASABQYGAgIB4NgLgASABQYGAgIB4NgLUASABQoCAgICQgICAgH83AsQBIAFCgICAgMAANwK8ASABQgQ3ArQBIAFCADcCrAEgAUKAgICAwAA3AqQBIAFBADYCmAEgAUEANgJsIAFBADYCSCABQQA2AkAgAUEANgI0IAFBADYCECABQQA2AggMXAsgBiADOgApQRIMVwsgASgC6AIiB0EASA1iIAEoAuQCIQQCQCAHRQRAQQEhAgwBCyAHEHEiAkUNGQsgBwRAIAIgBCAH/AoAAAsgASAHNgLoASABIAI2AuQBIAEgBzYC4AEMTwsgB0HUAEcgAkH/AXFBwQBHcg1bDFkLIAdBzABHIAJB/wFxQdQAR3INWiABKALkAiEEAkACQAJAAkACQAJAAkACQAJAAkACQCABAn8CQAJAAkAgASgC6AIiA0EDTQRAQQAhCUGokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxUCyAEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgA0EEayEDIARBBGohByABKAIARQ0CIAMhDAwBCyADIARqIQdBACEMQQAhA0EAIAEoAgBBAUcNAhoLIAkgASgCBEEBaiIIRw0DIAwhAyAJDAELIAINAUEACzYCBCABQQE2AgAjAEEQayIEJAAgAUHwAmoiAkEAOgAEAkACQEGAgAEQcSIIRQ0AIAhBAEGAgAH8CwBBgBAQcSIMRQ0AIAxBAEGAEPwLACAEQQxqQQA7AQAgBEEANgIIIAIoAgAiAigC+AYiD0EEaygCACIKQXhxQYSAAUGIgAEgCkEDcSILG0kNayALQQAgCkGogAFPGw1sIA8QogIgAigC4AYiCgRAIAIoAuQGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAigC/AYiD0EEaygCACIKQXhxQYQQQYgQIApBA3EiCxtJDWsgC0EAIApBqBBPGw1sIA8QogIgAigC7AYiCgRAIAIoAvAGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAkEAQdgG/AsAIAJBADYClAcgAkEANgKIByACQQA6AIQHIAJBADYCgAcgAiAMNgL8BiACIAg2AvgGIAJCAjcD8AYgAkIANwPoBiACQoCAgIAgNwPgBiACQQE2AtwGIAJBJDYC2AYgAkEAOgCmByACIAQpAwA3A5gHIAJBngdqIAQpAQY3AQAgBEEQaiQADAELAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEPQaiQyAApAwAiF6ciAkH/AXFBBEcNAkEAIQhBACEMQQAhBEEAIQsMBAtBACEICyAGIAg2AjAgBiAJNgIsQQohAiAGQQo6ACgMWgsgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxMCyAHKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQggA0F8cSIKQQRGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQxBACEEQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhDCAKQQhGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQRBACELDAILIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMTAsgBygACCICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEEIApBDEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERgRAQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhCyADQX5xIgJBEEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERg0BIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMTAsgBy8AECIKQQh0IApBCHZyIQ4gAkESRw0CQQAhD0GokMgAKQMAIhenIgJB/wFxQQRHDQELQQAhCkEAIQMMAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAxJCyAHLwASIgJBCHQgAkEIdnIhCiADQRRGBEBBACEPQQAhA0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEkLIActABQiD0ECSw0BIANBFUYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJC0EAIQMCQCAHLQAVIgIOAgEAJgtBASEDCyABKAIIQQJHBEBBESECIAhFIAxFcg0CQRshAiABKALAAiIHIAtJIAwgByALa0tyDQIgASgCvAIiDSAESSAIIA0gBGtLcg0CIBBBAXEgBCALciAHIAxHckUgCCANRnFyDQMgBkEbOgAoDFULQaCSxQAQ3QkACyAGIA86AClBFCECCyAGIAI6ACgMUgsgASADOgC5AiABIA86ALgCIAEgCjsBtgIgASAOOwG0AiABIAs2ArACIAEgBDYCrAIgASAMNgKoAiABIAg2AqQCIAEgCTYCoAIMTQsgB0HUAEcgAkH/AXFByQBHcg1ZIAEoAghBAkYNISABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDE8LIAdBwgBHIAJB/wFxQccAR3INWCABKAIIQQJGDSIgAS0AjAMNIyABLQDFAkEERg0BIAZB86SdkgQ2AClBCSECIAZBCToAKAxPCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSECIAZBCToAKAxQCyAGQfOEpaIFNgApDE0LIAEoAugCIghBAEgNXSABLQDGAiECIAEtAMcCIQMgASgC5AIhBAJAIAhFBEBBASEJDAELIAgQcSIJRQ0UCyAIBEAgCSAEIAj8CgAACyAGAn8CQCAIIAJBAnQoApiPSSIERgRAQQggAyACQQNGGyECQQAhBwwBCyAGIAg2AjAgBiAENgIsIAYgAjoAKUEMDAELA0AgByAJai0AACIDQQFrQf8BcSACQf8BcUkEQCAHQQFqIgcgCEcNAQwjCwsgBiACOgAqIAYgAzoAKUENCyICOgAoIAgNFkEAIQgMTgsCQCABKALoAkUEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxCCyABKALkAi0AACIHQQRJDQAgBiAHOgApQRchAiAGQRc6ACgMTgsgASAHOgDFAgxJCyAHQdMARyACQf8BcUHOAEdyDVUgASgCCEECRg0hIAEoAtQBQYGAgIB4Rg0BIAZB0JjRqgQ2AClBCSECIAZBCToAKAxMCyAHQfQARyACQf8BcUHYAEdyDVQgASgCiAMiBCABKALoAiICTw0BDEgLIAEoAugCIghBAEgNWSABKALkAiEEIAEtAMcCIQMgAS0AxgIhAgJAIAhFBEBBASEHDAELIAgQcSIHRQ0QCyAIBEAgByAEIAj8CgAACwJAAkACQAJAIAIOBAEAAgMACyAGIAI6AClBECECIAZBEDoAKCAIRQ1NIAcgCEEBEKIHDE0LIAhBAk8EQCAIIQIgA0H/AXFBEEkNIwxHCyAGIAg2AjAgBkECNgIsDEQLIAhBBkkNIiADQf8BcUEQTwRAIAEgCDYC3AEMRwsgByAHLQABOgAAIAcgBy0AAzoAASAHIActAAU6AAIgAUEDNgLcAQxGCyABKALgAUGBgICAeEYNIiABLQCMA0UEQCABIAg2AtwBDEYLIAZB9KS5mgU2AClBCAxDCyABIAQgAms2AogDQZ4EIQgCQAJAIAJFDQAgASgC5AIhCUEAIQcDQCAHIAlqIgMtAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhCCAHQdAAa0Gwf0sNAQsgBiAINgIoQR4hBwxLCyABKAIIQQJGDSIgB0F/cyACaiEPIANBAWohCiACIAdBAWoiDmshDUEAIQwgBkEANgKAASAGQoCAgIAQNwJ4IAZB+ABqQQAgBxDvBSAGKAKAASEDA0BBAUECIAkgDGosAAAiCEEATiIQGyILIAYoAnggA2tLBH8gBkH4AGogAyALEO8FIAYoAoABBSADCyAGKAJ8IgRqIhIgEEUEQCASIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiADIAtqIgM2AoABIAcgDEEBaiIMRw0AC0EAIQkgBkEANgJIIAZCgICAgBA3A0AgAiAORwRAIAZBQGtBACANEO8FIAYoAkghCQNAQQFBAiAKLAAAIgJBAE4iCBsiAyAGKAJAIAlrSwR/IAZBQGsgCSADEO8FIAYoAkgFIAkLIAYoAkRqIgcgCAR/IAIFIAcgAkG/AXE6AAEgAkHAAXFBBnZBQHILOgAAIAYgAyAJaiIJNgJIIApBAWohCiAPQQFrIg8NAAsLIAZBPGoiAiAGQYIBai8BADsBACAGIAYoAX42AjggBigCeCIPQYCAgIB4Rg1AIARBCHYhAyAGKQNAIRcgBkGkAWogAi8BADsBACAGIAYoAjg2AqABIAEoAqwBIgogASgCpAFGBEAjAEEgayICJAACQCABQaQBaiIHKAIAIgxBqtWqFUsEf0EABUEEIAxBAXQiCyALQQRNGyILQRhsIQ4gAiAMBH8gAiAMQRhsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0GAlMUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABIApBAWo2AqwBIAEoAqgBIApBGGxqIgIgAzoABSACIAQ6AAQgAiAPNgIAIAIgBigCoAE2AQYgAiAJNgIUIAIgFzcBDCACQQpqIAZBpAFqLwEAOwEADD8LAkAgASgC6AIiBEEDTQRAQQAhCUEAIQNBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDD0LIAEoAuQCIggoAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAyAEQXxxQQRGBEBBACEJQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw9CyAIKAAEIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgBEEIRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDD0LQQAhBwJAAkAgCC0ACCICDgICAQALIAYgAjoAKUEWIQIgBkEWOgAoDEoLQQEhBwsgASAHOgCcAiABIAk2ApgCIAEgAzYClAIMRAsCQAJAIAEoAugCQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMPQsgASgC5AIoAAAiBw0BC0EjIQIgBkEjOgAoDEgLIAFBATYCCCABIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyNgIMDEMLIAEoAugCIgJBA00EQEGokMgAKQMAIhenIgdB/wFxQQRGDUMgBkEvaiAHQRh2OgAAIAYgBzoALCAGQSQ6ACggBiAHQQh2OwAtIAYgF0IgiKciCDYCMAw6CyABKALkAiIEKAAAIQcgAkF8cUEERwRAIAQoAAQhAgw8C0EAIQJBqJDIACkDACIXpyIEQf8BcUEERg07IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMOQsgB0HNAEcgAkH/AXFB0gBHcg1OIAEoAghBAkYNJSABLQCMAw0mIAEoAhBFDQIgBkHjkMnqBDYAKUEJIQIgBkEJOgAoDEULIAdB0ABHIAJB/wFxQcMAR3INTSABKAIIQQJGDSYgAS0AkAJBAkYNAiAGQeOSjYIFNgApQQkhAiAGQQk6ACgMRAsgB0HJAEcgAkH/AXFBzABHcg1MIAEoAghBAkYNJiABKAKYAUUNAiAGQeOYscoENgApQQkhAiAGQQk6ACgMQwsgASgC6AIiA0EDTQRAQQAhB0EAIQJBACEJQQAhA0EAIQhBACEMQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyABKALkAiIEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQIgA0F8cSIHQQRGBEBBACEHQQAhCUEAIQNBACEIQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgABCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciEJIAdBCEYEQEEAIQdBACEDQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAgiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnIhAyAHQQxGBEBBACEHQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAwiCEEYdCAIQYD+A3FBCHRyIAhBCHZBgP4DcSAIQRh2cnIhCCAHQRBGBEBBACEHQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgAECIMQRh0IAxBgP4DcUEIdHIgDEEIdkGA/gNxIAxBGHZyciEMIAdBFEYEQEEAIQdBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoABQiCkEYdCAKQYD+A3FBCHRyIApBCHZBgP4DcSAKQRh2cnIhCyAHQRhGBEBBACEHQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEKAAYIgpBGHQgCkGA/gNxQQh0ciAKQQh2QYD+A3EgCkEYdnJyIQogB0EcRwRAIAQoABwhBww3C0EAIQdBqJDIACkDACIXpyIEQf8BcUEERg02IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNQsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxBCwJAAkACQAJAAkACQCABLQCMA0UEQCABKALoAiIHDQJBACEDQaiQyAApAwAiF6ciAkH/AXFBBEcNAUEBIQJBACEIDAMLIAZB45KNggU2ACkMRQsgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLQQEhAiABKALkAiIELQAAIQggB0EBRgRAQQAhA0GokMgAKQMAIhenIgRB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLIAQtAAEhAyAHQQJGBEBBqJDIACkDACIXpyICQf8BcUEERgRAQQEhAgwCCyAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMOQsgBC0AAiECIAdBA0cNASACRSECQaiQyAApAwAhFwsgF6ciB0H/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiAHOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMNwsCQAJAAkAgBC0AAyIJDgICAQALIAZCgSo3AiwgBkEkOgAoQQAhCAw4C0EBIQkLIAINNSAHQQRGDQEgBkKBKjcCLCAGQSQ6AChBACEIDDYLQQAhCSACRQ00CyABIAkgA0H/AXFBEHRyIAhB/wFxQQh0cjYCkAIMPQsCQAJ/IAEoAugCIgRBA00EQEEAIQlBAEGokMgAKQMAIhenIgJB/wFxQQRGDQEaIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMNgsgASgC5AIiAygAACICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEJIARBfHFBBEYEQEEAQaiQyAApAwAiF6ciAkH/AXFBBEYNARogBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEQQhHDQEgAygABAshByABIAk2ApwBIAFBATYCmAEgASAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZycjYCoAEMPQsgBkKBKjcCLCAGQSQ6AChBACEIDDMLIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMPwsCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AjANFBEAgASgC5AIhAiABKALoAiIHQQFLDQJBACEJQaiQyAApAwAiF6ciA0H/AXFBBEcNAUEAIQMMAwsgBkHtiI2yBTYAKQxMCyAGIAM6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDEALIAIvAAAiA0EIdCADQQh2ciEJIAdBAmsiA0EBSw0BQaiQyAApAwAhF0ECIQcLIBenIgRB/wFxQQRGBEAgAiAHaiADaiEHQQAhCEEAIQMMAgsgBiAEOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw+CyACLwACIgNBCHQgA0EIdnIhCCAHQQRrIgNBAUsNASACQQRqIQdBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgB2ohB0EAIQxBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMPAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQEgAkEGaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMOgsgAi8ABiIDQQh0IANBCHZyIQsgB0EIayIDQQFLDQEgAkEIaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEKQQAhAwwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDgLIAIvAAgiA0EIdCADQQh2ciEKIAdBCmsiA0EBSw0BIAJBCmohB0GokMgAKQMAIRcLIBenIgJB/wFxQQRGBEAgAyAHaiEDQQAhBEEAIQ8MAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw2CyACLwAKIgNBCHQgA0EIdnIhBCACQQxqIQMgB0EMayIPQQFLDQFBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgD2ohD0EAIQNBAAwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDQLIAMvAAAiA0EIdCADQQh2ciEOIAdBfnFBDkcEQCAHQRBrIQMgAkEQaiEPIAIvAA4MAQtBACEDQaiQyAApAwAiF6ciD0H/AXFBBEcNJSACIAdqIQ9BAAshBwJAIAECfyADQQNNBEBBACECQQBBqJDIACkDACIXpyIDQf8BcUEERg0BGiAGQS9qIANBGHY6AAAgBiADOgAsIAZBJDoAKCAGIANBCHY7AC0gBiAXQiCIpyIINgIwDDULIA8oAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAiADQXxxQQRGBEBBAEGokMgAKQMAIhenIgNB/wFxQQRGDQEaIAZBL2ogA0EYdjoAACAGIAM6ACwgBkEkOgAoIAYgA0EIdjsALSAGIBdCIIinIgg2AjAMNQsgA0EIRw0BIA8oAAQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnILIgM2ApQBIAEgAjYCkAEgASAEQf//A3FBAXQ2AowBIAEgCkH//wNxQQF0NgKIASABIAtB//8DcUEBdDYChAEgASAMQf//A3FBAXQ2AoABIAEgDv0QIAdBCHQgB0GA/gNxQQh2cv0aASAJ/RoCIAj9GgP9qQFBAf2rAf0LA3AgAUEBNgJsDDwLIAZCgSo3AiwgBkEkOgAoQQAhCAwyCwJAAkACQCABLQCMA0UEQEECIQIgAS0AxgJBAWsOBgcCAQMHAgMLIAZB4padogQ2ACkMPwsgASgC4AFBgYCAgHhHBEBBASECDAILIAZCgSo3AiwgBkEkOgAoQQAhCAwzC0EGIQILIAEoAugCIgdBAEgNTQJAIAcEQCABKALkAiEDIAcQcSIERQ0FIAcEQCAEIAMgB/wKAAALIAIgB0cNASABIAI2AvQBIAEgBDYC8AEgASACNgLsAQw8CyAGQeKWnaIENgApQSEhAiAGQSE6ACgMPwsgBkHilp2iBDYAKUEhIQIgBkEhOgAoIAQgB0EBEKIHDD4LIAEoAugCIgdBAEgNTCABKALkAiEEAkAgB0UEQEEBIQIMAQsgBxBxIgJFDQMLIAcEQCACIAQgB/wKAAALIAEgBzYCjAIgASACNgKIAiABIAc2AoQCDDkLIAdB0ABHIAJB/wFxQcMAR3INRSABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0mIAEoAugCIgxBAWshDyAMQQJrIQsgASgC5AIiCiAMaiEEQQAhByAMIQMDQCAHIAxGDS0gByAKaiIJQQFqIQggCS0AAEUEQCAHRQ07IANBAWshByAIIQQgAwwsCyAHIA9GDS0gByAKaiECIAgtAABFDSogByALRg0tIAJBAmotAABFDSkgA0EDayEDIAdBA2oiB0HRAEcNAAsMOQsgBkHpho2CBTYAKUEJIQIgBkEJOgAoDDwLIAEoAogDIgMgASgC6AIiAkkEQEEnIQIgBkEnOgAoDDwLIAEgAyACazYCiANBngQhAwJAAkAgAkUNACABKALkAiEEQQAhBwNAIAQgB2otAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhAyAHQdAAa0Gwf0sNAQsgBiADNgIoQR4hAgw8CyAHQQFqIgMgAkYEQCAGQQA2AiwgBkGeCjsBKEEeIQIMPAsgASgCCEECRiIMDQEgAiAHa0ECayEIIAMgBGoiAi0AAA0CQQAgAUEIaiAMGyEJIAJBAWohD0EAIQwgBkEANgJIIAZCgICAgBA3AkAgBkFAa0EAIAcQ7wUgBigCSCECA0BBAUECIAQgDGosAAAiA0EATiILGyIKIAYoAkAgAmtLBH8gBkFAayACIAoQ7wUgBigCSAUgAgsgBigCRGoiDiALBH8gAwUgDiADQb8BcToAASADQcABcUEGdkFAcgs6AAAgBiACIApqIgI2AkggByAMQQFqIgxHDQALIAhBAEgNSiAIRQRAQQEhAgwmCyAIEHEiAg0lCwALQaCUxQAQ3QkACyAGIAg2AjAgBkGeCjsBKEEeIQIMOAsgCSAIQQEQogcMNwsgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDCkLIAFCADcDgAMgAUECOgD4AiAAQQQ6AAggACAFNgIEIABBADYCACAAIAEoAtgCNgAJDEELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQAsgASABKALcAkEEazYC3AIgASgCAEUEQCAAQQE2AgAgAEECOgAEDEALIAEoAgRBAWoiAiADRwRAIAAgAjYCDCAAIAM2AgggAEEKOgAEIABBATYCAAxACyABIAM2AgQgAUEBNgIAIAEtAJEDRQRAIAEgASkDyAJCBHw3A8gCIAEgByAJIAogDyABKALQAkF/cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2c0F/czYC0AILIAFB5siFogU2APkCIAFBBzoA+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMPwsgBiACOgApQRgMNQsgBiACOgApQRkMNAtBwJPFABDdCQALIAYgAjoAKUEVIQIgBkEVOgAoDC8LQdCTxQAQ3QkACyABIAg2AtABIAEgCTYCzAEgASAINgLIAQwpC0Hgk8UAEN0JAAsgBkHzpJ2SBDYAKQwpC0GQlMUAEN0JAAsgByAHLQABOgAAQQEhAgwjCyAGIAg2AjAgBkEGNgIsDCALIAZB9KS5mgU2AClBBgwgC0Hwk8UAEN0JAAtBsJPFABDdCQALIAZB8JDlmgc2ACkMIgtBsJLFABDdCQALIAZB54K1igQ2ACkMIAtBwJHFABDdCQALIAZB4cbR4gQ2ACkMHgtB4JHFABDdCQALIAZB45DJ6gQ2ACkMHAtB8JHFABDdCQALQYCSxQAQ3QkAC0Ggk8UAEN0JAAsgBiAPOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAwNC0HQkcUAEN0JAAtBkJLFABDdCQALIAZB6YaNggU2ACkMFQtB1JXFABDdCQALIAgEQCACIA8gCPwKAAALIAhBCHYhAyAGKQJEIRcgBigCQCEPIAkoArABIgogCSgCqAFGBEAjAEEgayIEJAACQCAJQagBaiIHKAIAIgxBksmkEksEf0EABUEEIAxBAXQiCyALQQRNGyILQRxsIQ4gBCAMBH8gBCAMQRxsNgIcIAQgBygCBDYCFEEEBUEACzYCGCAEQQhqQQQgDiAEQRRqEIUHIAQoAghBAUcNASAEKAIQIQcgBCgCDAsgB0GwlMUAEJMJAAsgBCgCDCEMIAcgCzYCACAHIAw2AgQgBEEgaiQACyABKAK0ASAJIApBAWo2ArABIApBHGxqIgcgFzcCFCAHIA82ARAgByAINgEMIAcgAjYBCCAHIAhBEHY7AQYgByADOgAFIAcgCDoABCAHQQA2AgAMEQsgA0EDayEHIAJBAmohCSACQQNqIQQgA0ECawwBCyADQQJrIQcgAkEBaiEJIAJBAmohBCADQQFrCyAHRQRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQQMAwsgBC0AAA0OQQJrIQcgCUECaiEEDAMLIAdB9ABHIAJB/wFxQdgAR3INGiABKAKIAyIEIAEoAugCIghJDQ4gASgC5AIhAiABIAQgCGs2AogDQZ4EIQwCQAJAIAhFDQAgAiAIaiEJQQAhB0EAIAhrIQMDQCACIAdqIg8tAAAEQCADIAdBAWoiB2oNAQwCCwtBngIhDCAHQdAAa0Gwf0sNAQsgBiAMNgIoQR4hBwwTCyAHQQFqIgMgCEYEQCAGQQA2AiwgBkGeDjsBKEEeIQcMEwsgCCADayIOQQFNBEAgBkEANgIsIAZBngo7AShBHiEHDBMLAkAgCSACIANqIhBBAmoiBEcEQCAQLQAAIQwgEC0AASEKIAcgCGshC0EAIQMDQCADIA9qQQNqLQAARQ0CIAMgC2ogA0EBaiEDQXxHDQALCyAGQZ4EOwEoQR4hBwwTCwJAAkACQAJAIANBAmoiDyAOSyADQX1LckUEQCADQQNqIgsgDksNAQJAIAkgCyAQaiIPRwRAIAMgB2ohCSAIQQRrIQ1BACEIA0AgAiAJakEEai0AAEUNAiAIQQFqIQggDSAJQQFqIglHDQALCyAGQZ4EOwEoQR4hBwwYCyAIIAtqIgkgCEkgCSAOS3INAiAJQQFqIRIgCSAOTw0DIAEoAghBAkYNBCAGQUBrIQ0gAiEJIAwhCyAQIBJqIRMgDiASayECIwBBIGsiDiQAAkAgB0HQAGtBsH9NBEAgDUECNgIAIA1BAToABAwBCyAOQQA2AhwgDkKAgICAEDcCFCAOQRRqQQAgBxDvBSAOKAIcIQwDQEEBQQIgCSwAACIQQQBOIhQbIhIgDigCFCAMa0sEfyAOQRRqIAwgEhDvBSAOKAIcBSAMCyAOKAIYIhVqIhYgFAR/IBAFIBYgEEG/AXE6AAEgEEHAAXFBBnZBQHILOgAAIA4gDCASaiIMNgIcIAlBAWohCSAHQQFrIgcNAAsgDigCFCEQQQAhBwJAAkACQAJAAkACQAJAAkACQAJAAkAgC0H/AXEOAgEABAsgCkH/AXENAUEBIQcLAkAgA0EETwRAIAQoAABBgIGChHhxDQlBBCAEQQNqQXxxIgkgBGsgBCAJRhsiCSADQQRrIgpJBEADQCAEIAlqKAIAQYCBgoR4cQ0LIAlBBGoiCSAKSQ0ACwsgBCAKaigAAEGAgYKEeHFFDQEMCQsgA0UNACAEIANBAWsiCWosAABBAEgNCCAJRQ0AIAQgA0ECayIJaiwAAEEASA0IIAlFDQAgBCADQQNrIglqLAAAQQBIIAlyDQgLIA5BFGogBCADEPsCIA4oAhRBAUcNASAOIA4pAhg3AwhB3IzFAEELIA5BCGpBzIzFAEHojMUAEOAGAAsgDUECNgIAIA1BBToABAwHCyAOKAIcIgpBAEgNASAOKAIYIQQCQCAKRQRAQQEhCwwBCyAKEHEiC0UNAwsgCgRAIAsgBCAK/AoAAAsgDkEUaiAPIAgQ+wIgDigCFEEBRgRAIA1BAjYCACANQQA6AAQMBQsgDigCHCIPQQBIDS0gDigCGCEEAkAgD0UEQEEBIRIMAQsgDxBxIhJFDQMLIA8EQCASIAQgD/wKAAALAn8CQCAHRQRAIAJBAEgNMAJAIAJFBEBBASEJDAELIAIQcSIJRQ0GCyACBEAgCSATIAL8CgAACyAOIAI2AhAgDiAJNgIMIA4gAjYCCCAOQRRqIAkgAhD7AiAOKAIURQ0BQQAhCSACRQ0GIA4pAgynIAJBARCiBwwGCyACQQBIDS8CQCACRQRAQQEhCQwBCyACEHEiCUUNBQsgAgRAIAkgEyAC/AoAAAsgCUEIdiETIAIhBEEADAELIA4pAwgiF0IgiKchCSAXpyIEQYCAgIB4Rg0EIBdCKIinIRNBAQshFCANIBM7AAkgDSAHOgA0IA0gDzYCMCANIBI2AiwgDSAPNgIoIA0gCjYCJCANIAs2AiAgDSAKNgIcIA0gDDYCGCANIBU2AhQgDSAQNgIQIA0gAjYCDCANIAk6AAggDSAENgIEIA0gFDYCACANQQtqIBNBEHY6AAAMBwsgDUECNgIAIA1BBjoABAwFC0HYmsgAEP8HCwALIA1BAjYCACANIAk6AAQgD0UNACASIA9BARCiBwsgCkUNASALIApBARCiBwwBCyANQQI2AgAgDUEAOgAECyAQRQ0AAkAgFUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgEGpPBEAgAkEAIAQgEEEnaksbDQEgFRCiAgwCCwwlCwwlCyAOQSBqJAAgBi0ARCEEIAYoAkAiCUECRg0NIAZBiAFqIgggBkHkAGr9AAIA/QsDACAGQZgBaiIKIAZB9ABqKAIANgIAIAYgBikBRjcDoAEgBiAG/QACVP0LA3ggBiAGQcwAaikBADcBpgEgBi0ARSEPIAEoAsQBIgMgASgCvAFGBEAjAEEgayICJAACQCABQbwBaiIHKAIAIgxByaSSCUsEf0EABUEEIAxBAXQiCyALQQRNGyILQThsIQ4gAiAMBH8gAiAMQThsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0HQksUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABKALAASADQThsaiICQSRqIAj9AAMA/QsCACACIA86AAUgAiAEOgAEIAIgCTYCACACIAYpA6ABNwEGIAIgBv0AA3j9CwIUIAJBDGogBikBpgE3AQAgAkE0aiAKKAIANgIAIAEgA0EBajYCxAEMDAtBAiAPIA5BkJPFABDqBwALIAsgDiAOQYCTxQAQ6gcACyALIAkgDkHwksUAEOoHAAsgEiAOIA5B4JLFABDqBwALQcCSxQAQ3QkAC0EAIQdBqJDIACkDACIXpyICQf8BcUEERw0AIAwNAQwMCyACQf8BcUEDRw0LIBdCIIinIgcoAgAhAiAHQQRqKAIAIgQoAgAiAwRAIAIgAxEDAAsgBCgCBCIDBEAgAiADIAQoAggQogcLIAdBDEEEEKIHDAsLIAZBQGsgBCAHIAEoAogDIgIQ3wEgBigCRCEHAkACQCAGKAJAQQFGBEAgB0GAgICAeHJBgICAgHhGDQ0gBigCSCEJDAELIAYoAkghCSACIAYoAkwiA08NASAHRQ0MCyAJIAdBARCiBwwLCyABIAIgA2s2AogDIAEoAvgBIgJBgoCAgHhIIAJFckUEQCABKAL8ASACQQEQogcLIAEgAzYCgAIgASAJNgL8ASABIAc2AvgBDAoLIAZCgSo3AiwgBkEkOgAoQQAhCAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQlBJCECIAYoAiQhBwJ/AkACQAJAIAYtAENBAWsOAwABAhULIAZBxABqDAILIAhBCGoMAQsgCEEIagstAABBJUcNEUEhIQIgBi0AQ0EDTwRAIAgoAgAhAyAIQQRqKAIAIgQoAgAiDARAIAMgDBEDAAsgBCgCBCIMBEAgAyAMIAQoAggQogcLIAhBDEEEEKIHCwwSCyABIAo2AiwgASALNgIoIAEgDDYCJCABIAg2AiAgASADNgIcIAEgCTYCGCABIAI2AhQgAUEBNgIQIAEgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnI2AjAMBwsgB0UNBiACQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciICIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyIgdyQQBIDQYgASACNgI8IAEgBzYCOCABQQE2AjQMBgtBKCEHIAZBKDoAKAwKCyAGIAQ6AClBHiEHIAZBHjoAKAwJC0ELCyICOgAoIAhFBEBBACEIDAcLIAcgCEEBEKIHDAYLIAEgAjYC3AELIAEgBzYC2AEgASAINgLUAQsgBkEoakEBciEJQSghAgwLC0EnIQcgBkEnOgAoDAMLQQUhAiAGQQU6ACgMAQtBByECIAZBBzoAKAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQkMBAsgBiAGKAApNgJ4IAYgBkEsaigAADYAe0EoIQIgBkEoakEBciEJIAdBKEYNBiAGKAIwIQggByECDAILIAYgDDoAKiAGIAM6AClBDwsiAjoAKCAGIAYoACk2AnggBiAGQSxqKAAANgB7IAZBKGpBAXIhCQsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBkE2aiAGQcYAai0AADoAACAGIAYvAUQ7ATQgBigCQCEHCyAHQRh2IQMMAQsgBkEoakEBciEJQSghAgsgBiADOgAsIAkgBi8BNDsABEECIQMgCUEGaiAGQTZqLQAAOgAAIAYgBzsAKSAGIAdBEHY6ACsgBiAINgIwIAYgAjoAKAJAIAJBKEcEQAJAIAJBI0sNACAGKAIkIgdB5sbR4gRGDQBBAyEDIAdBIHENAgsgBkEaaiICIAYtACs6AAAgBkESaiAGQTNqLQAAOgAAIAYgBi8AKTsBGCAGIAYvADE7ARAgBi0ALCEDIAYoAC0hByAGLQAoIgRBKEYNASAAIAYvARg7AAUgAEEHaiACLQAAOgAAIAYgBigBEDYCCCAGIAZBE2ooAAA2AAsgAEEQaiAGKAALNgAAIAAgBigCCDYADSAAIAc2AAkgACADOgAIIAAgBDoABCAAQQE2AgAMBQsgBigCJCEHCyAGIAYoARA2AgggBiAGQRNqKAAANgALIAYgBigCCDYCHCAGIAYoAAs2AB8gEUHJirmiBEcEQCABQgA3A4ADIAFBAjoA+AILIAAgBzYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAQQA2AgAgAEEQaiAGKAAfNgAADAMLIAZBAjYCRCAGQaSVxQA2AkAgBkIBNwJMIAYgBkEkaq1CgICAgJANhDcDeCAGIAZB+ABqNgJIIAZBQGtBtJXFABCNCAALIAFBADsAjQMgASADNgLYAiAAQQY6AAggAEIANwIADAELIAEgAzYC2AIgAS0AkQNFBEAgAUIENwPIAiABIAcgCSAKIA9B/wFzQQJ0KAKYjUNB////B3MiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnNBf3M2AtACCyABQQA2AugCIAEgCzYC3AICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HJAEcEQCAPQeYARwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HQAGsOKwEAAAAAAAAAAAAAAAAAAAAABgkHAAoABQALAAAACAAABAAAAgMAAAAAAAwACyAPQSBxDRhBIiECDCgLQSIhAiAHQcUARyAKQcwAR3IgCUHUAEdyDSdBAyEMQYAGIQIMIgtBBiEIQQEhAiAKQcIAayIERQ0KIARBEEYNCwwkC0EGIQhBASECIApBxQBrIgRFDQwgBEENRg0LDCMLQQYhCEEBIQIgB0HzAEcgCkHIAEdyIAlB2QBHcg0iQQkhAkEJIQwMHwtBBiEIQQEhAiAHQcEARyAKQcEAR3IgCUHNAEdyDSEMHQtBBiEIQQEhAiAHQcwARyAKQeMAR3IgCUHUAEdyDSAMGwtBBiEIQQEhAiAKQcgAaw4FCQofHwsfC0EGIQhBASECIAdB1gBHIApBxABHciAJQcMAR3INHkEYIQJBGCEMDBsLQQYhCEEBIQwgB0HEAEcgCkHLAEdyIAlBxwBHcg0QQQYhAgwaC0EGIQhBASECIAdB5gBHIApB2ABHciAJQckAR3INHEH/////ByECDBoLQQYhCEEBIQIgCkHDAGsiBEUNCCAEQRFGDQkMGwtBBiEIQQEhAiAHQfQARyAKQdQAR3IgCUHYAEdyDRogAS0AkgNBAXENGkH/////ByECDBgLQQEhDCAHQdQARyAJQckAR3INDEEEIQIMFgsgB0HCAEcNGEEBIQwgCUHHAEYNFQwYC0EBIQwgB0HTAEcgCUHOAEdyDQpBgAIhAgwUCyAHQfQARyAJQdgAR3INFiABLQCSA0EBcQ0WQf////8HIQIMFAsgB0HNAEcgCUHSAEdyDRVBICECQSAhDAwSCyAHQdAARw0UIAlBwwBGDRAMFAsgB0HJAEcNEyAJQcwARg0ODBMLIAdB0ABHIAlBwwBHcg0SIAEtAJMDQQFxDRJB/////wchAgwQCyAHQfQARyAJQdgAR3INESABLQCSA0EBcQ0RQf////8HIQIMDwsgCkHkAEcgCUHBAEdyRSAHQdQARnENAUEBIQJBBiEIIApB4wBrDgIGBRALIApBxABHIAlBwQBHckUgB0HUAEZxDQNBIiECIApBxABrDgUGCBERCRELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAwSCyALQQNLBEBBBSEIQQAhAgwPCyAAQQE2AgAgAEEfOgAEDBELQQYhCAtBASECDAwLIAEtAI0DRQRAIABByYiFogU2AAUgAEEgOgAEIABBATYCAAwPCyABQQE6AIwDQQchCEEAIQIMCwsgB0HUAEcNCiAJQcEARg0CDAoLIAdBzABHIAlB1ABHcg0JQRohAkEaIQwMBgsgB0HUAEcgCUHBAEdyDQoLQaT4xgBBKEHElcUAEOsHAAsgB0HEAEcgCUHOAEdyDQhBACECDAQLIAdB0gBHIAlBxABHcg0HQQ0hAkENIQwMAgtBCCECQQghDAwBC0EEIQJBBCEMCyALIAxJDQELIAIgC0kNAEEGIQhBACECDAELQQYhCEECIQICQAJAAkACQAJAIA9ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAKQcUAaw4EAwQEAgQLIAdBxQBHIApBzABHciAJQdQAR3INAwwECyAHQcwARyAKQeMAR3INAiAJQdQARg0DDAILIAdB0gBHDQEgCUHEAEYNAgwBCyAHQcQARw0AIAlBzgBGDQELIAFCADcDgAMgASADNgD5AiABIAg6APgCIAEgAjoA7AIgACADNgIQIAAgCzYCDCAAQQE6AAggACAFNgIEIABBADYCAAwCC0EhIQILIAAgAzYABSAAIAI6AAQgAEEBNgIACyAGQbABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQdiayAAQ/wcAC4J7AyJ/B30BfiMAQcABayIEJAACQAJAAkACQAJAIAEoAgBBAkcEQCABKAKkAiICIAEoAmRJBEAgAUH0A2ohFiABQbwCaiETIAFB8ABqIRwgAUGwA2ohHSABQYADaiEeIAFBjANqIR8gAUGYA2ohICABQaQDaiEhA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCYCACQShsaiINKQMQIAEpA4ABfCIrIAEpA3BRBEAgASgCuAIiAyANKAIYIgJBB2pBeHFJDQEgAiADSw0CIAEoArQCIQMgDS0AICIbQQFGBEAgBEEYaiADIAIQ+QIgBCgCGCIDQYCAgIB4RwRAIAQoAhwgBEEANgK4ASAEQQE2AqwBIARBuMnBADYCqAEgBEIENwKwASAEQagBahCSByEZIANFDR4gA0EBEKIHDB4LIAQoAiAhGSAEKAIcIhpBgICAgHhGDR0gBCgCJCECIBkhAwtBCSEFAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBAWsODQECAxofHR4bHB8dHgQACyANLQAhDgQEBQYHCQsgDS0AIQ4FCwoJCQwJCyANLQAhIgUOBg4NEBAPDxALIA0tACEOChIRERERERERFBMRCyANLQAhQQtrDgIcHRsLIARBGGogAyACQQMgASgCrAIQ+AQMAwsgBEEYaiADIAJBAyABKAKsAhDmAwwCCyAEQRhqIAMgAiABKAKsAhCgAgwBCyAEQRhqIAMgAiABKAKsAhD+AQsgEyABKAKoAiABKAKsAiAEKAIcIgMgBCgCIBDCBSAEKAIYIgJFDTIgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbakkNOCAIQQAgBSACQSdqSxsNOSADEKICDDILIARBATYCrAEgBEHgycEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQShqIgEgBEGoAWoQsQYgARCOByEBDDALIARBATYCrAEgBEG8ysEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQTRqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEBIAEoAqwCEOYDDC0LIARBGGogAyACQQEgASgCrAIQ+AQMLAsgDSgCAEUEQCAEQQA2ArgBIARBATYCrAEgBEGYysEANgKoASAEQgQ3ArABIARBqAFqEJIHDAELIA0oAggNKiAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHCyEBDCsLIARBGGogAyACQQMgASgCrAIQ5gMMJwsgBEEYaiADIAJBAyABKAKsAhD4BAwmCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgcMAgsgDSgCCEUEQCAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHDAILIA0qAgQhJCABKAKsAiEIIA0qAgwhJyAFQQRGDSQgBEEYaiADIAJBAyAIICQgJxD/AwwlCyAEQQE2AqwBIARB4MrBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEFAayIBIARBqAFqELEGIAEQjgcLIQEMJgsgBEEBNgKsASAEQYjLwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARBzABqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEDIAEoAqwCEPgEDB8LIARBGGogAyACIAEoAqwCEP0BDB4LIA0oAgBFBEAgBEEANgK4ASAEQQE2AqwBIARBmMrBADYCqAEgBEIENwKwASAEQagBahCSBwwBCyANKAIIDRwgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSBwshAQwhCwJAAkACQAJAIA0tACEiCEEKRwRAIAgOAgIDAQsgBEHYAGogAyACIAEoAqwCEMUDDB0LIARBATYCrAEgBEHEy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDcCAEIARB8ABqNgKwASAEQeQAaiIBIARBqAFqELEGIAEQjgchAQwjCyAEQRhqIAMgAkEDIAEoAqwCEPgEDAELIARBGGogAyACQQMgASgCrAIQ5gMLIAEoAqwCIgdBAnQiAkH/////A0sNDCAHQQR0IgNB/f///wdPDQwCQCADRQRAQQQhC0EAIQIMAQsgAxBxIgtFDQ4gASgCrAIhBwsgBEEANgKwASAEIAs2AqwBIAQgAjYCqAEgBwRAQQAhA0EBIQYgBCgCICEIIAQoAhwhAgNAIAZBAWsiDCIFIAhPBEAgDCEGDBsLIAggBWsiBUEAIAUgCE0bIgVBAUYNGiAFQQJGDRlDAACAPyACKgIAIiQgJJSTIAJBBGoqAgAiJyAnlJMgAkEIaioCACIoICiUk0MAAAAAEOAIkSElIAQoAqgBIANrQQNNBEAgBEGoAWogA0EEQQRBBBCkBSAEKAKsASELIAQoArABIQMLIAsgA0ECdGoiBSAlOAIMIAUgKDgCCCAFICc4AgQgBSAkOAIAIAQgA0EEaiIDNgKwASAGQQNqIQYgAkEMaiECIAdBAWsiBw0ACwsgBEHgAGogBEGwAWooAgA2AgAgBCAEKQKoATcDWCAEKAIYIgNFDRkgBCgCHCICQQRrKAIAIghBeHEiBSADQQJ0IgNBBEEIIAhBA3EiCBtqSQ0nIAhBACAFIANBJ2pLGw0oIAIQogIMGQsgDS0AIUELRg0VIARBATYCrAEgBEHwy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDGCAEIARBGGo2ArABIARBkAFqIgEgBEGoAWoQsQYgARCOByEBDB8LIA0tACFBDEYNEyAEQQE2AqwBIARBnMzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3AxggBCAEQRhqNgKwASAEQZwBaiIBIARBqAFqELEGIAEQjgchAQweC0EPIQUMAQtBFSEFCwJAAkACQAJAAkAgDS0AISIIDggBAAMDAgIEBAMLIARBGGogAyACIAUgASgCrAIQ5gMMEwsgBEEYaiADIAIgBSABKAKsAhD4BAwSCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKAIIRQRAIARBADYCuAEgBEEBNgKsASAEQfzJwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKgIEISQgASgCrAIhByANKgIMIScgCEEERg0QIARBGGogAyACIAUgByAkICcQ/wMMEQsgBEEBNgKsASAEQdDMwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARB+ABqIgEgBEGoAWoQsQYgARCOByEBDBwLIA0oAghFBEAgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSByEBDBwLIAEoAqwCIQcgDSoCDCEkIAhBBkYNDSAEQRhqIAMgAiAFIAcgJBCQBAwPCyAEQQE2AqwBIARB+MzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEGEAWoiASAEQagBahCxBiABEI4HIQEMGgsgBEEYaiADIAIgASgCrAIQjgUMAQsgBEEYaiADIAIgASgCrAIQ0wQLIAQoAhwhECABKALoA0UNByABKAKsAiEOIAEoAqgCIRQgBCgCICEPIBMQowUgFkEIakEAOgAAIBZCADcCACATIA4Q0AQgEygCAEEBRw0HIA5BAnQiCSABKAK4AyIDSw0FIAEoArQDIQogDkUNBkEAIQcgCiEFQQAhAgJAAkACQANAAkAgByAPSQRAIAIgEGooAgBBAnQiAyABKAKIAyIGTw0OIAIgCU8NBSAFIAEoAoQDIANBAnRqKAIANgIAIANBAXIiCCABKAKIAyIGSQ0BIAghAwwOCyAPIA9BiLnBABCMBwALIAJBAWogCU8NAiAFQQRqIAEoAoQDIAhBAnRqKAIANgIAIANBAnIiCCABKAKIAyIGTwRAIAghAwwNCyACQQJqIAlPDQEgBUEIaiABKAKEAyAIQQJ0aigCADYCACADQQNyIgMgASgCiAMiBk8NDCAJIAJBA2pLBEAgBUEMaiABKAKEAyADQQJ0aigCADYCACAFQRBqIQUgAkEEaiECIAdBAWoiByAOSQ0BDAsLCyACQQNqIQIMAgsgAkECaiECDAELIAJBAWohAgsgAiAJQai5wQAQjAcACyAEICs3A1ggBEECNgKsASAEQbTNwQA2AqgBIARCAjcCtAEgBEKAgICAoAUiKyAEQdgAaq2ENwMgIAQgKyAcrYQ3AxggBCAEQRhqNgKwASAEQQxqIgEgBEGoAWoQsQYgARCOByEBIABBAToAACAAIAE2AgQMHAsgAEEAOwEADBsLQQAgAiADQYDNwQAQ6gcAC0GQy8EAEP8HCwALQQAgCSADQbi5wQAQ6gcACwJAAkACQAJAAkAgASgC6ANBAUYEQCAEIAEoAsACIBRBAnQgDiAUakECdBDhCCICELgKIgM2AnAgBCAJNgJYIAMgCUcNHyACIAogCRDgCSACQYMISw0DDAYLIAEoAsQCQQFHDQUgCSABKALEAyIDSw0AIAEoAsADIQwgDkUNASAKQQxqIQtBACEHIAwhA0EAIQUDQAJAAkACQCAHIA9JBEAgBSAQaigCAEECdCICIAEoApQDIghPDQEgBUEDaiIIIAlPDQIgCyACQQJ0IgggASgCkANqKAIANgIAIAIgASgClAMiBk8NCSADIAEoApADIAhqKAIANgIAIAJBAXIiCCABKAKUAyIGSQ0DIAghAgwJCyAPIA9BuLjBABCMBwALIAIgCEHIuMEAEIwHAAsgCCAJQdi4wQAQjAcACyADQQRqIAEoApADIAhBAnRqKAIANgIAIAJBAnIiCCABKAKUAyIGTwRAIAghAgwGCyADQQhqIAEoApADIAhBAnRqKAIANgIAIAJBA3IiAiABKAKUAyIGTw0FIANBDGogASgCkAMgAkECdGooAgA2AgAgC0EQaiELIANBEGohAyAFQQRqIQUgB0EBaiIHIA5JDQALDAELQQAgCSADQfi4wQAQ6gcACyAEIAEoAsACIBRBAnQiFSAOIBRqQQJ0IhQQ4QgiAxC4CiICNgJwIAQgCTYCWAJAIAIgCUYEQCADIAogCRDgCSADQYQITwRAIAMQmwcLIAQgASgCyAIgFSAUEOEIIgMQuAoiAjYCcCAEIAk2AlggAiAJRgRAIAMgDCAJEOAJIANBhAhPBEAgAxCbBwsgASgC6ANBAkYNBiABKALMAkUNBiABKALUAkUNBiAORQ0CQQAhEkEAIAlrIRdBAyEDQQAhBQJAAn8CQANAAkACQAJAAkACQAJAAkAgDyASSwRAIANBA2siCCAQaigCAEECdCICIAEoAqADIgZPDRAgCCAJTw0CIAUgCmoiESACQQJ0IiIgASgCnANqKAIANgIAIAJBAXIiCCABKAKgAyIGSQ0BIAghAgwQCyAPIA9B6LfBABCMBwALIANBAmsgCU8NAiARQQRqIAhBAnQiIyABKAKcA2ooAgA2AgAgAkECciIHIAEoAqADIgZPBEAgByECDA8LIANBAWsgCU8NASARQQhqIAdBAnQiGCABKAKcA2ooAgA2AgAgAkEDciILIAEoAqADIgZPBEAgCyECDA8LIAMgCU8NAyARQQxqIAEoApwDIAtBAnRqKAIANgIAIAIgASgCrAMiBk8NCSADIBdqIgtBA0YNBCAFIAxqIhEgASgCqAMgImooAgA2AgAgASgCrAMiBiAIIgJLDQUMCQsgA0EDayEDDAILIANBAWshAwwBCyADQQJrIQMLIAMgCUGouMEAEIwHAAsgA0EDawwDCyALQQJGDQEgEUEEaiABKAKoAyAjaigCADYCACABKAKsAyIGIAciAk0NAyALQQFHBEAgEUEIaiABKAKoAyAYaigCADYCACAFQRBqIQUgA0EEaiEDIBJBAWoiEiAOSQ0BDAcLCyADQQFrDAELIANBAmsLIAlBiLjBABCMBwALIAIgBkH4t8EAEIwHAAsMHgsMHQsgASgC0AIgFSAUEOEIIgMgCiAJELUHIANBhAhPBEAgAxCbBwsgASgC2AIgFSAUEOEIIgIgDCAJELUHIAJBgwhNDQMLIAIQmwcMAgsgAiAGQZi4wQAQjAcACyACIAZB6LjBABCMBwALIAQoAhgiA0UNEAJAIBBBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgEBCiAgwSCwwXCwwXCyADIAZBmLnBABCMBwALIARBGGogAyACIAUgByAkEIIFDAELIARBGGogAyACIAUgByAkICcQ+QQLAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBBWsOCAYBAgAAAwQFAAtBpPjGAEEoQaTMwQAQ6wcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEKcBDBQLIBMgASgCqAIgASgCrAIgBCgCHCIIIAQoAiAQlAEMEwsgASgCrAIiDiABKAKoAiIPaiIUQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAtwCQQFGBEAgASgC4AIQuAogCU8NEyAJELYJIgIgASgC4AIQ3AkgASgC4AIiA0GECEkNASADEJsHDAELIAlFDRIgCRC2CSECCyABIAI2AuACIAFBATYC3AIMEQsgASgCrAIiECABKAKoAiIUaiISQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAuQCQQFGBEAgASgC6AIQuAogCU8NESAJELYJIgIgASgC6AIQ3AkgASgC6AIiA0GECEkNASADEJsHDAELIAlFDRAgCRC2CSECCyABIAI2AugCIAFBATYC5AIMDwsgASgCrAIiDyABKAKoAiIJaiIVQQJ0IQwgBCgCICEFIAQoAhwhCCABKALsAiIHQQFHBH9BAAUgASgC8AIQuAoLIAxJBEAgDBC2CSEDIAwQtgkhAgJAIAdFBEAgA60gAq1CIIaEISsMAQsgAyABKALwAhDcCSACIAEoAvQCENwJIAEoAvACIgdBhAhPBEAgBxCbBwsgA60gAq1CIIaEISsgASgC9AIiA0GECEkNACADEJsHCyABICs3A/ACIAFBATYC7AILIBMQowUgFkEIakEAOgAAIBZCADcCACATIA8Q0AQgASgC7AJFDRAgD0ECdCIKIAEoArgDIgNNBEAgASgCxAMiAyAKTwRAIAEoArQDIRAgASgCwAMhFCAPRQ0PQQAhB0EAIAprIRFBAyEGQQohAkEBIQ4gCCEDAn8CQANAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgBSACQQprSwRAIAJBCWsgBU8NASACQQhrIAVPDQIgBkEDayIYIApJDQMgGCEGDAQLIAJBCmsMDgsgAkEJayECDAkLIAJBCGsMBQtDAAB/QyADQQRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgAyoCACIoiyIlICQgA0EIaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACISQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBBqIgtDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBB2sgBU8NCCACQQZrIAVPDQUgAkEFayAFTw0BIAogBkECa0sEQEMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBGsgBU8NCiACQQNrIAVPDQcgAkECayAFTw0DIAogBkEBa0sEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NDCACIAVPDQkgAkEBaiAFTw0FIAYgCk8NAkMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBDGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NHSACQQNqIAVPDRkgAkEEaiAFTw0VIAYgEWoiC0EDRw0OIAZBA2sMEQsgBkEBayEGDAELIAZBAmshBgsgBiAKQbi3wQAQjAcACyACQQVrDAILIAJBAmsMAQsgAkEBagsgBUGot8EAEIwHAAsgAkEGayECDAELIAJBA2shAgsgAiAFQZi3wQAQjAcACyACQQdrDAILIAJBBGsMAQsgAkEBawsgBUGIt8EAEIwHAAtDAAB/QyADQTRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EwaioCACIoiyIlICQgA0E4aioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBRqIhJDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAXQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBWogBU8NDyACQQZqIAVPDQsgAkEHaiAFTw0HIAtBAkYNAUMAAH9DIANBQGsqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQTxqKgIAIiiLIiUgJCADQcQAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgF0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQhqIAVPDRAgAkEJaiAFTw0MIAJBCmogBU8NCCALQQFHBEBDAAB/QyADQcwAaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANByABqKgIAIiiLIiUgJCADQdAAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACILQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQhqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgC0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACAHQRBqIQcgAkEVaiECIANB1ABqIQMgBkEEaiEGIA4gD0kgDkEBaiEODQEMEwsLIAZBAWsMAQsgBkECawsgCkH4tsEAEIwHAAtBACAKIANByLfBABDqBwALQQAgCiADQdi3wQAQ6gcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEOYBDA8LIAJBBGoMAgsgAkEHagwBCyACQQpqCyAFQei2wQAQjAcACyACQQNqDAILIAJBBmoMAQsgAkEJagsgBUHYtsEAEIwHAAsgAkECagwCCyACQQVqDAELIAJBCGoLIAVByLbBABCMBwALIAQgASgC8AIgCUECdCIOIAwQ4QgiAxC4CiICNgJwIAQgCjYCWAJ/AkACQAJAIAIgCkYEQCADIBAgChDgCSADQYQITwRAIAMQmwcLIAQgASgC9AIgDiAMEOEIIgMQuAoiAjYCcCAEIAo2AlggAiAKRgRAIAMgFCAKEOAJIANBhAhPBEAgAxCbBwsgASgCoAMiAiAMSQRAIAwgAiIDayIHIAEoApgDIAJrSwRAICAgAiAHQQRBBBCkBSABKAKgAyEDCyABKAKcAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCISBEAgBUEAIBL8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2AqADIAEgASgCrAMiAiAMSQR/IAwgAiIDayIHIAEoAqQDIAJrSwRAICEgAiAHQQRBBBCkBSABKAKsAyEDCyABKAKoAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCIMBEAgBUEAIAz8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACADQQFqBSAMCzYCrAMLIA9FDQggCUEEdCEFQQAhAkEAIAprIRVBAyEDQQEhCwJ/AkADQAJAAkACQAJAAn8CQCAKIANBA2siB0sEQCAHIA5qIhIgASgCoAMiBkkNASAJQQJ0IANqQQNrDAILIANBA2shAwwECyABKAKcAyAFaiACaiACIBBqIgcoAgA2AgAgA0ECayAKTw0BIAMgDmoiDEECayIRIAEoAqADIgZJBEAgASgCnAMgBWogAmpBBGogB0EEaigCADYCACADQQFrIApPDQMgDEEBayIXIAEoAqADIgZJBEAgASgCnAMgBWogAmpBCGogB0EIaigCADYCACADIApPDQUgASgCoAMiBiAMSwRAIAEoApwDIAVqIAJqQQxqIAdBDGooAgA2AgAgAyAVaiIMQQNGDQ8gEiABKAKsAyIHSQ0HIAlBAnQgA2pBA2sMCgsgCUECdCADagwCCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAZBuLbBABCMBwALIANBAmshAwwBCyADQQFrIQMLIAMgCkGotsEAEIwHAAsgASgCqAMgBWogAmogAiAUaiIGKAIANgIAIAxBAkYNBSARIAEoAqwDIgdPDQEgASgCqAMgBWogAmpBBGogBkEEaigCADYCACAMQQFGDQYgASgCrAMiByAXSwRAIAEoAqgDIAVqIAJqQQhqIAZBCGooAgA2AgAgAkEQaiECIANBBGohAyALIA9JIAtBAWohCw0BDAwLCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAdBmLbBABCMBwALDB0LDBwLIANBAmsMAgsgA0EBawwBCyADQQNrCyAKQYi2wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgEyAQENAEIAEoAtwCQQFHDQEgASgC5AJFDQECQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAIBBBAnQiBiABKAK4AyIDTQRAIAYgASgCxAMiA0sNASABKAK0AyEVIAEoAsADIQwgBCABKALgAiAUQQJ0Ig8gCRDhCCIDELgKIgI2AnAgBCAGNgJYIAIgBkcNJiAVIAYgAxDhCSADQYQITwRAIAMQmwcLIBBFDQ4gFUEMaiELQQAhAkEDIQdBASEOIAwhCiAIIQMDQAJAAkACQAJAAkACQCACIAVJBEAgAkEBaiIRIAVPDQEgAkECaiIRIAVPDQIgBiAHTQ0DQwAAf0MgA0EEaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIAMqAgAiKIsiJSAkIANBCGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgC0MAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEDaiAFTw0EIAJBBGogBU8NBSACQQVqIhggBUkNBiAYDA0LIAIgBUH4tMEAEIwHAAsgESAFQYi1wQAQjAcACyARIAVBmLXBABCMBwALIAcgBkGotcEAEIwHAAsgAkEDagwQCyACQQRqDAsLQwAAf0MgA0EQaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBDGoqAgAiKIsiJSAkIANBFGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEGaiAFTw0LIAJBB2ogBU8NByACQQhqIAVPDQNDAAB/QyADQRxqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EYaioCACIoiyIlICQgA0EgaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIRQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAKQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgEUEbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQlqIAVPDQwgAkEKaiAFTw0IIAJBC2ogBU8NBEMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhFBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIApBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASARQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBDGogBU8NDSACQQ1qIAVPDQkgAkEOaiAFTw0FQwAAf0MgA0E0aioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBMGoqAgAiKIsiJSAkIANBOGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkEMakMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgC0EQaiELIAdBBGohByAKQRBqIQogA0E8aiEDIAJBD2ohAiAOIBBJIA5BAWohDg0ACwwOC0EAIAYgA0H4tcEAEOoHAAtBACAGIANB6LXBABDqBwALIAJBCGoMAgsgAkELagwBCyACQQ5qCyAFQdi1wQAQjAcACyACQQdqDAILIAJBCmoMAQsgAkENagsgBUHItcEAEIwHAAsgAkEGagwCCyACQQlqDAELIAJBDGoLIAVBuLXBABCMBwALIAQgASgC4AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlgCQAJAIAIgBkYEQCADIBUgBhDgCSADQYQITwRAIAMQmwcLIAQgASgC6AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlggAiAGRw0aIAMgDCAGEOAJIANBhAhPBEAgAxCbBwsgASgClAMiAiAJSQRAIAkgAiIDayIHIAEoAowDIAJrSwRAIB8gAiAHQQRBBBCkBSABKAKUAyEDCyABKAKQAyIKIANBAnQiC2ohBSAHQQJPBEAgCSACQX9zakECdCIJBEAgBUEAIAn8CwALIBJBBHQgAkECdGsgCmogC2pBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2ApQDCyAQRQ0EIBVBDGohCSAUQQR0QQxyIQ5BACEDQQEhB0EAIQICQAJAAkADQCADQQNqIgUgBk8NBSADIA9qQQNqIgUgASgCiAMiCk8NBiABKAKEAyAOaiACaiACIAlqKAIANgIAIAMgFGoiCiABKAKUAyIFTw0DIAEoApADIA9qIAJqIAIgDGoiCygCADYCACABKAKUAyIFIApBAWpLBEAgASgCkAMgD2ogAmpBBGogC0EEaigCADYCACABKAKUAyIFIApBAmpNDQIgASgCkAMgD2ogAmpBCGogC0EIaigCADYCACABKAKUAyIFIApBA2pNDQMgASgCkAMgD2ogAmpBDGogC0EMaigCADYCACADQQRqIQMgAkEQaiECIAcgEEkgB0EBaiEHDQEMCQsLIApBAWohCgwCCyAKQQJqIQoMAQsgCkEDaiEKCyAKIAVB6LTBABCMBwALDBkLIAUgBkHItMEAEIwHAAsgBSAKQdi0wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgDkECdCIMIQIgASgCuAMiAyAMSQRAIAwgAyICayIHIAEoArADIAJrSwRAIB0gAiAHQQRBBBCkBSABKAK4AyECCyABKAK0AyIKIAJBAnQiC2ohBiAHQQJPBEAgDCADQX9zakECdCIQBEAgBkEAIBD8CwALIA5BBHQgA0ECdGsgCmogC2pBBGshBiACIAdqQQFrIQILIAZBADYCACACQQFqIQILIAEgAjYCuAMgASgC3AJFDQACQAJ/AkACQAJAAkACfwJAAkAgAiAMTwRAIAEoArQDIQogDkUNCUEEIQJBASELQQEhBiAKIQcgCCEDAkADQAJAAkACQCAFIAJBBGtLBEAgAkEDayAFTw0BIAJBAmsgBU8NAiAGQQFrIhggDEkNAyAYIQYMBQsgAkEEawwNCyACQQNrIQIMCQsgAkECawwGC0MAAH9DIANBBGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADKgIAIiiLIiUgJCADQQhqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NCCACIAVPDQcgAkEBaiAFTw0DIAYgDE8NAUMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NCSACQQNqIAVPDQYgAkEEaiAFTw0EIAwgBkEBaksEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAZBBGohBiAHQRBqIQcgAkEJaiECIANBJGohAyALIA5JIAtBAWohCw0BDAwLCyAGQQFqIQYLIAYgDEGotMEAEIwHAAtBACAMIAJBuLTBABDqBwALIAJBAWoMAQsgAkEEagsgBUGYtMEAEIwHAAsgAkEDaiECCyACIAVBiLTBABCMBwALIAJBAWsMAQsgAkECagsgBUH4s8EAEIwHAAsgBCABKALgAiAPQQJ0IhAgCRDhCCIDELgKIgI2AnAgBCAMNgJYIAIgDEcNFiADIAogDBDgCSADQYQITwRAIAMQmwcLIAEoAogDIgIgCUkEQCAJIAIiA2siByABKAKAAyACa0sEQCAeIAIgB0EEQQQQpAUgASgCiAMhAwsgASgChAMiCyADQQJ0IgZqIQUgB0ECTwRAIAkgAkF/c2pBAnQiCQRAIAVBACAJ/AsACyAUQQR0IAJBAnRrIAtqIAZqQQRrIQUgAyAHakEBayEDCyAFQQA2AgAgASADQQFqNgKIAwsgDkUNACAPQQR0IQVBACEDQQEhC0EBIQICfwJAAkACQAJAAkACQAJAA0AgDCACQQFrIgdLBEAgASgCiAMiBiAHIBBqTQ0FIAEoAoQDIAVqIANqIAMgCmoiBygCADYCACACIAxPDQQgAiAQaiIJIAEoAogDIgZPDQggASgChAMgBWogA2pBBGogB0EEaigCADYCACACQQFqIAxPDQMgASgCiAMiBiAJQQFqTQ0HIAEoAoQDIAVqIANqQQhqIAdBCGooAgA2AgAgAkECaiAMTw0CIAEoAogDIgYgCUECak0NBiABKAKEAyAFaiADakEMaiAHQQxqKAIANgIAIAJBBGohAiADQRBqIQMgCyAOSSALQQFqIQsNAQwKCwsgAkEBayECDAILIAJBAmohAgwBCyACQQFqIQILIAIgDEHYs8EAEIwHAAsgD0ECdCACakEBawwDCyAPQQJ0IAJqQQJqDAILIA9BAnQgAmpBAWoMAQsgD0ECdCACagsgBkHos8EAEIwHAAsgBCgCGCIDRQ0NIAhBBGsoAgAiAkF4cSIFIANBAnQiA0EEQQggAkEDcSICG2pJDRMgAkEAIAUgA0EnaksbDQAgCBCiAgwNCwwTCyAEQagBaiADIAIgASgCrAIQ1AQgEyABKAKoAiABKAKsAiAEKAKsASIDIAQoArABELcEIAQoAqgBIgJFDQsCQCADQQRrKAIAIghBeHEiBSACQQJ0IgJBBEEIIAhBA3EiCBtqTwRAIAhBACAFIAJBJ2pLGw0BIAMQogIMDQsMEgsMEgsgBEGoAWogAyACIAEoAqwCEJwFIBMgASgCqAIgASgCrAIgBCgCrAEiAyAEKAKwARC2BCAEKAKoASICRQ0KAkAgA0EEaygCACIIQXhxIgUgAkEBdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAwLDBELDBELIAZBAWohBgsgBiAIQcTNwQAQjAcACyATIAEoAqgCIAEoAqwCIAQoAlwiAyAEKAJgEKAFIAQoAlgiAkUNBwJAIANBBGsoAgAiCEF4cSIFIAJBAnQiAkEEQQggCEEDcSIIG2pPBEAgCEEAIAUgAkEnaksbDQEgAxCiAgwJCwwOCwwOCyAEQRhqIAMgAiABKAKsAiANKgIEIA0qAgwQqgMLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQngIgBCgCGCICRQ0FAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAcLDAwLDAwLIARBGGogAyACQQMgCCAkICcQ+QQLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQpAIgBCgCGCICRQ0DAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAULDAoLDAoLIARBGGogAyACQQEgASgCrAIgDSoCBCANKgIMEPkECyAEKAIgIQggBCgCHCEJIBMgASgCqAIgASgCrAIiCxDpBCALBEBBACECQQwhCiAIIQUDQAJAAkACQCABKAK4AyIDIAJBA2pLBEAgBUUNAiACIAlqKAIAIgdB////A3EhDCAHQYCAgIB4cSEGIAdBgICA/AdxIgNBgICA/AdGBEAgBkEQdiAMQQ12ckGABEEAIAwbckGA+AFyIQYMBAsgBkEQdiEGIANBgICAuARLDQEgA0GAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgA0ENdiAMQQ12akGAgAFqIAZyaiEGDAQLIANBgICAmANJDQMgDEGAgIAEciIHQf4AIANBF3YiDGt2IQMgB0EdIAxrIgx2QQFxBH8gA0EDIAx0QQFrIAdxQQBHagUgAwsgBnIhBgwDCyACIAJBBGogA0HIs8EAEOoHAAsgBkGA+AFyIQYMAQsgCCAIQbizwQAQjAcACyABKAK0AyAKaiAGQf//A3E2AgAgCkEQaiEKIAVBAWshBSACQQRqIQIgC0EBayILDQALCyABQQE6APwDIAQoAhgiA0UNAQJAIAlBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgCRCiAgwDCwwICwwICyAAQQE6AAAgACABNgIEIBtFIBpFcg0FIBkgGkEBEKIHDAULAkACQAJAIAEoArgCIgIgDSgCGEEHakF4cSIDTwRAIAFBADYCuAIgAiADayEIIANFDQEgAiADRg0DIAhFDQIgASgCtAIiAiACIANqIAj8CgAADAILQQAgAyACQYSkxwAQ6gcACyACIANGDQELIAEgCDYCuAILIA0pAxghKyABIAEoAqQCQQFqIgI2AqQCIAEgASkDcCArQgd8Qvj///8Pg3w3A3ACQCAbRSAaRXINAAJAIBlBBGsoAgAiA0F4cSICQQRBCCADQQNxIgMbIBpqTwRAIANBACACIBpBJ2pLGw0BIBkQogIgASgCpAIhAgwCCwwHCwwHCyACIAEoAmRJDQALCyAAQYACOwEADAILQYzJwQAQ3QkACyAAQQE6AAAgACAZNgIECyAEQcABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIARBADYCqAFBACAEQfAAaiAEQdgAaiAEQagBakHg+cQAEPUHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGEMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQNyAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGAMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQOCAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvgawMRfwd+AXsjAEGw1QBrIgMkACAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD8EggAq0hFAJAAkACQAJAAkACQAJAAn8CQAJ+AkACQAJAAkACQAJAAkACQEG4nMcAKQMAIhhC/wGDQgRSBEBCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQJBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLIgcbIgYEQCADQfDIAGogBWogA0EYaiAG/AoAAAsgBw0DIBUgBK0iGnwhFSAEIApqIQogFiAGrXwhFiAXIBp9IhdCAFINAAsMAQtCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQFBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLGyIGBEAgA0HwyABqIAVqIANBGGogBvwKAAALIBYgBq18IRYgBCAKaiEKIBUgBK0iGHwhFSAXIBh9IhdQRQ0ACwtB+LbJACgCACINQQBIDQJB+LbJACANQQFqNgIAIApBEUkEQANAIAwoAuy3RCEFIAwoAui3RCEEAkAgDCgC9LdEIgdFBEAgBSAKSw0BIAQgA0HwyABqIAUQ2wcNAQwFCyAFIApLDQAgDCgC8LdEIgYgB2ohDiADQfDIAGohBwNAIAVFDQUgBUEBayEFQaSkxwAgBiAGRSAGIA5GciIIGyEPIActAAAhCSAELQAAIQsgB0EBaiEHIARBAWohBEEAIAZBAWogCBshBiALIAkgDy0AAHFGDQALCyAMQRRqIgxBuANHDQALQfi2yQAgDTYCAEEDIQRBBCEBQQMhCQwLC0EAIApBEEGUpMcAEOoHAAsgGBDSByEBIABBgICAgHg2AgAgACABNgIEDAoLQfi2yQAgDTYCAAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAxB+LfEAGotAAAiBA4EAAMDAQMLQYCAARBxIgZFDRUgBkEAQYCAAfwLAEGAEBBxIgVFDRUgBUEAQYAQ/AsAIANBJGpBADsBACADQQA2AiBBqAcQcSIERQ0VIARBAEHYBvwLACAEQQA2ApQHIARBADYCiAcgBEEAOgCEByAEQQA2AoAHIAQgBTYC/AYgBCAGNgL4BiAEQgI3A/AGIARCADcD6AYgBEKAgICAIDcD4AYgBEEBNgLcBiAEQSQ2AtgGIARBADoApgcgBCADKQMYNwOYByAEQZ4HaiADKQEeNwEAQYABEHEiBkUNFSADQeQCakIANwIAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwLUAiADQQI2ArhFIANBADYCsEUgA0G8xQBqIANBGGoiBUHUAvwKAAAgA0GAAjsAw0ggA0EBOwHASCADQoCAgICCIDcDuEggA0IANwOwSCADQQA6AKhIIANBgAI7AaRIIAMgBDYCoEggA0EAOgCcSCADQQA2AphIIAMgBjYClEggA0GAATYCkEggAyABNgLISCADIAI2AsxIIANCADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQkgchAgsgAUEgaiQAIAILTQEDfwJAAkAgAARAIABBCGsiASABKAIAIgJBAWoiAzYCACADRQ0BIAAoAgBB/////wdPDQIgACgCDCABIAI2AgAPCxCOCgsACxCQCgALSAEBfyMAQRBrIgIkACACIAA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC0wBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAJBAUEBEKQFIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALYwECfgJ/IAEpAgAiAkLa/Zb/6ejo+sEAhSABKQIIIgNC1vuGkcjA4r/+AIWEUEUEQEEAIAJC7bqtts2F1PXjAIUgA0L4gpm9le7Gxbl/hYRCAFINARogAEEcag8LIABBJGoLC2ABAn4CfyABKQIAIgJC96nT7vKhs5V7hSABKQIIIgNClrmj2vbEh9QnhYRQRQRAQQAgAkL117zJyMzWszqFIANC/tvLm/Plucb1AIWEQgBSDQEaIABBHGoPCyAAQShqCwtAAAJAIAFpQQFHIABBgICAgHggAWtLcg0AIAAEQAJ/IAFBCU8EQCABIAAQwQQMAQsgABBxCyIBRQ0BCyABDwsAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLpzsEIX8DfgJ7B30jAEEQayImJAAjAEHgAGsiGiQAIBogATgCCCAaIAQ2AhAgGiAANgIMAn8CfwJAAkACQAJAIARBBHQgCEYEQCAEIApHDQEgBCAMRw0CIAQgDkcNAyAEIBBHDQQgBCASRgRAIBogBjYCVCAaIAU2AlAgGiAENgJIIBogETYCRCAaIAQ2AkAgGiAPNgI8IBogBDYCOCAaIA02AjQgGiAENgIwIBogCzYCLCAaIAQ2AiggGiAJNgIkIBogCDYCICAaIAc2AhwgGiAENgIYIBogAzYCFCAaIBpBEGo2AlwgGiAaQQhqNgJYIBogGkEMajYCTCAaQRRqIQAjAEFAaiIWJABBsLXJACgCAEUEQBBWCwJAAkACQAJAAkACQEG4tckAKAIARQRAIAAoAkghMiAAKAJEISsgACgCQCEsIAAoAjwhGCAAKAI4ITMgACgCNCEtIAAoAjAhJCAAKAIsIS4gACgCKCEcIAAoAiQhLyAAKAIgIR0gACgCHCEwIAAoAhghGyAAKAIUITEgACgCECEXIAAoAgwhKiAAKAIIISEgACgCBCEgIAAoAgAhGUG4tckAQX82AgACQCAgQZqz5gxJBEACQCAgQdAAbCInRQRAQRAhIwwBCyAgIShBECAnEMEEIiNFDQILAkAgIARAA0ACQAJAQcy1yQAoAgBFDQBBACElQcS1yQAoAgAiHkHYtckAKQMAIjQgGSATQQJ0IilqKAIAIiKthSI1QjiGIDVCgP4Dg0IohoQgNUKAgPwHg0IYhiA1QoCAgPgPg0IIhoSEIDRCCIhCgICA+A+DIDRCGIhCgID8B4OEIDRCKIhCgP4DgyA0QjiIhISEQtKBqpur+oLXp39+IjRCOIYgNEKA/gODQiiGhCA0QoCA/AeDQhiGIDRCgICA+A+DQgiGhIQgNEIIiEKAgID4D4MgNEIYiEKAgPwHg4QgNEIoiEKA/gODIDRCOIiEhIQgNULYotHvwqnlvy1+hSI2QjiGIDZCgP4Dg0IohoQgNkKAgPwHg0IYhiA2QoCAgPgPg0IIhoSEIDZCCIhCgICA+A+DIDZCGIhCgID8B4OEIDZCKIhCgP4DgyA2QjiIhISEQdC1yQApAwAiNEJ/hX4iNUI4hiA1QoD+A4NCKIaEIDVCgID8B4NCGIYgNUKAgID4D4NCCIaEhCA1QgiIQoCAgPgPgyA1QhiIQoCA/AeDhCA1QiiIQoD+A4MgNUI4iISEhCA2IDRCOIYgNEKA/gODQiiGhCA0QoCA/AeDQhiGIDRCgICA+A+DQgiGhIQgNEIIiEKAgID4D4MgNEIYiEKAgPwHg4QgNEIoiEKA/gODIDRCOIiEhIR+hSA2iSI1p3EhFSA1QhmIQv8Ag0KBgoSIkKDAgAF+ITRBwLXJACgCACIfQSBrIQADQCAVIB9qKQAAIjYgNIUiNUJ/hSA1QoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIjVQRQRAA0AgIiAAIDV6p0EDdiAVaiAecSIUQQV0aygCAEYNBCA1QgF9IDWDIjVQRQ0ACwsgNiA2QgGGg0KAgYKEiJCgwIB/g1BFDQEgFSAlQQhqIiVqIB5xIRUMAAsAC0HU+sAAEN0JAAsgE0EEdCIlQQhyIR4CQAJAAkACQAJAAkACQCAqICVBC3IiAE8EQCAlQQxyIRUgJUEPciIAICpLDQEgEyAxRg0CIBMgMEYNAyATIC9GDQQgEyAuRg0FICEgHkECdGoiACoCCCE8IAD9XQIAITggISAVQQJ0aiIAKgIIIT0gAP1dAgAhNyAXIClqKgIAIT8gGyApaioCACE6IB0gKWoqAgAhAUMAAIA/ITkgHCApaioCACI7QwAAAABeDQYMBwsgHiAAICpB1PvAABDqBwALIBUgACAqQcT7wAAQ6gcACyAxIDFB5PrAABCMBwALIDAgMEH0+sAAEIwHAAsgLyAvQYT7wAAQjAcACyAuIC5BlPvAABCMBwALQwAANEMgOyA7QwAANENeG0MAAAA/lEM1+o48lBCbAiE5CwJAAkAgEyAtRwRAIB9BACAUa0EFdGohFUMAAIA/IT4gJCApaioCACI7QwAAAABeDQEMAgsgLSAtQaT7wAAQjAcAC0MAADRDIDsgO0MAADRDXhtDAAAAP5RDNfqOPJQQmwIhPgsgFUEEaygCACIUKAIIIgBB/////wdPDQIgFCAAQQFqNgIIICMgE0HQAGxqIgAgPiA5EN8IOAJEIAAgOTgCQCAAIAE4AjwgACA6OAI4IAAgPzgCNCAAICI2AjAgACAVQRBrNgIsIAAgFUEcazYCKCAAIBRBCGo2AiQgACAUQQxqNgIgIAAgNyA9/SACID39IAP9CwQAIAAgOCA8/SACIjf94QEgN/0NAAECAwQFBgcICQoLCAkKCyA3IDz9IAMiNyA3/eYBIjcgN/0NCAkKCwABAgMAAQIDAAECAyA3IDcgN/0NBAUGBwABAgMAAQIDAAECA/3kAf3kAf3jASA3/Q0AAQIDAAECAwABAgMAAQID/ecB/QsEECATQQFqIhMgIEcNAAsLQbi2yQBBADYCAEGstskAQQA2AgAgMygCACIAQbC2yQAoAgBLBEBBsLbJAEEAIABBBEEIEKQFC0HEtskAQQA2AgBB/LXJACgCAARAQfi1yQBB9LXJACgCACIUBH8gFEEJaiIABEBB8LXJACgCAEH/ASAA/AsACyAUIBRBAWpBA3ZBB2wgFEEISRsFQQALNgIAQfy1yQBBADYCAAtBACEZQQAhGyAgBEAgIyAnaiEdICNB0ABqIRcgIEEBa0H/////AHFBAWohGyAjIQBBACETA0AgEyAsRg0HIBgoAgAiFEEQdEEAIBRBf0cbIhwgACgCICIVKAIIIhRPDQYgFSgCBCAcQQR0aiAAEJwCIQEgFiAcNgIwIBYgATgCKCAWIBM2AiwgFkEoahCTBCAAKAIwQQAQkgJFBEAgACgCMCEUQcS2yQAoAgAiFUG8tskAKAIARgRAQby2yQBBxPrAABD5BQtBwLbJACgCACAVQQN0aiIAQQA2AgQgACAUNgIAQcS2yQAgFUEBajYCAAsgGEEEaiEYQdAAQQAgFyIAIB1HGyAAaiEXIBsgE0EBaiITRw0ACwsCQEGstskAKAIAIhVFBEBDAACAfyE5QQAhJwwBC0MAAIB/ITlBACEnA0ACQCArKgIAITogOUGotskAKAIAIgAqAgAiARDfCCE5IAEgOl8NAANAAkACQAJAAkAgICAAKAIEIh5LBEAgACgCCCIkICMgHkHQAGxqIh8oAiAiFCgCCCIATw0BIBQoAgQgJEEEdGoiAC8BDCIYRQRAIBZBKGoQsgJBuLbJACgCACIUQbC2yQAoAgBGBEBBsLbJAEHE9sAAEPkFC0G0tskAKAIAIBRBA3RqIgAgJDYCBCAAIB42AgBBuLbJACAUQQFqNgIAICdBAWohJwwECyAYIBtqQQFrIhQgMygCAEsNBiAAKAIAIQAgFkEoahCyAiAfKAIwIABBEHYiHBCSAkUEQCAfKAIwIRlBxLbJACgCACIXQby2yQAoAgBGBEBBvLbJAEHU9sAAEPkFC0HAtskAKAIAIBdBA3RqIhMgHDYCBCATIBk2AgBBxLbJACAXQQFqNgIACyAAIBhqIhdBAWtBEHYiHSAcRg0CIB8oAjAgHRCSAg0CIB8oAjAhGUHEtskAKAIAIhVBvLbJACgCAEYEQEG8tskAQeT2wAAQ+QULQcC2yQAoAgAgFUEDdGoiEyAdNgIEIBMgGTYCAEHEtskAIBVBAWo2AgAMAgsgHiAgQaT2wAAQjAcACyAkIABBtPbAABCMBwALAkACQAJAIB8oAiwiEygCCCIZIB1LBEAgGSAcTQRAIBwgGUH09sAAEIwHAAsgEygCBCITIBxBAnRqKAIAQX9GDQMgEyAdQQJ0aigCAEF/Rg0DIAAgF08NBQNAIABBEHYiFyAfKAIsIhkoAggiE08NAiAAQf//A3EgGSgCBCAXQQJ0aigCAEEQdHIiFyAfKAIgIhkoAggiE08NAwJAIBkoAgQgF0EEdGogHxCcAiIBICsqAgBfRQRAIBYgFzYCMCAWIB42AiwgFiABOAIoIBZBKGoQkwQMAQtBuLbJACgCACIZQbC2yQAoAgBGBEBBsLbJAEG098AAEPkFC0G0tskAKAIAIBlBA3RqIhMgFzYCBCATIB42AgBBuLbJACAZQQFqNgIACyAAQQFqIQAgGEEBayIYDQALDAULQbi2yQAoAgAiFEGwtskAKAIARgRAQbC2yQBBxPfAABD5BQtBtLbJACgCACAUQQN0aiIAICQ2AgQgACAeNgIAQbi2yQAgFEEBajYCAAwDCyAXIBNBlPfAABCMBwALIBcgE0Gk98AAEIwHAAtBuLbJACgCACIUQbC2yQAoAgBGBEBBsLbJAEGE98AAEPkFC0G0tskAKAIAIBRBA3RqIgAgJDYCBCAAIB42AgBBuLbJACAUQQFqNgIAC0EAIRlBrLbJACgCACIVDQMMBAtBACEZQay2yQAoAgAiFUUNAyArKgIAITogOUGotskAKAIAIgAqAgAiARDfCCE5IBQhGyABIDpfRQ0ACwsLIBUhGQtBACEbQay2yQBBADYCAEG4tskAKAIAIiQhEyAZBEAgGUEMbCEYQai2yQAoAgBBCGohACAkQQN0IRUDQCAAQQRrKAIAIR0gACgCACEXQbC2yQAoAgAgE0YEQEGwtskAQZT6wAAQ+QULQbS2yQAoAgAgFWoiFCAdNgIAIBRBBGogFzYCAEG4tskAIBNBAWoiEzYCACAAQQxqIQAgFUEIaiEVIBhBDGsiGA0ACwsgFkEANgIQIBZCgICAgMAANwIIQQQhGCAyKAIAIhcEQCAWQQhqQQAgF0EEQQQQpAUgFigCDCIYIBYoAhAiE0ECdGohFCAXQQFHBH8gF0ECdEEEayIABEAgFEEAIAD8CwALIBMgF2oiAEEBayETIBggAEECdGpBBGsFIBQLQQA2AgAgE0EBaiEbQbi2yQAoAgAhEwsgFiAbNgIQAkACQAJAAkACQAJAIBMEQCATQQN0IRNBtLbJACgCACEAA0AgACgCACIUIBtPDQIgGCAUQQJ0aiIUIBQoAgBBAWo2AgAgAEEIaiEAIBNBCGsiEw0ACwsgMigCACIAQavVqtUATw0BQQAhFwJAIABBDGwiFEUEQEEEIRVBACEADAELIBQQcSIVRQ0JCyAWQQA2AhwgFiAVNgIYIBYgADYCFCAWKAIIIRwgGwRAIBtBAnQhG0EIIR8gGCEAA0AgACgCACITQf////8DSw0EIBNBAnQiFEH9////B08NBAJAIBRFBEBBBCEdQQAhEwwBCyAUEHEiHUUNCwsgAEEEaiEAIBYoAhQgF0YEQCMAQSBrIiEkAAJAIBZBFGoiIigCACIeQdWq1SpLBH9BAAVBBCAeQQF0IhQgFEEETRsiFUEMbCEUICEgHgR/ICEgHkEMbDYCHCAhICIoAgQ2AhRBBAVBAAs2AhggIUEIakEEIBQgIUEUahCFByAhKAIIQQFHDQEgISgCECEiICEoAgwLICJB9PnAABCTCQALICEoAgwhFCAiIBU2AgAgIiAUNgIEICFBIGokACAWKAIYIRULIBUgH2oiFEEANgIAIBRBBGsgHTYCACAUQQhrIBM2AgAgFiAXQQFqIhc2AhwgH0EMaiEfIBtBBGsiGw0ACwsgHARAIBhBBGsoAgAiAEF4cSITIBxBAnQiFEEEQQggAEEDcSIAG2pJDQ4gAEEAIBMgFEEnaksbDQ8gGBCiAgsgFigCGCEUAkBBuLbJACgCACIABEAgAEEDdCEYQbS2yQAoAgAhEwNAIBMoAgAiGyAXTw0CIBNBBGooAgAhACAUIBtBDGxqIhUoAggiGyAVKAIARgRAIBVB1PnAABD6BQsgFSgCBCAbQQJ0aiAANgIAIBUgG0EBajYCCCATQQhqIRMgGEEIayIYDQALCxDBCSEiIBdFDQ0gFCAXQQxsaiEYICNBMGohGyAUQQxqIQBBfyElIBQhEwNAIBMoAghB//8AakGAgP//A3EQtgkiHkEAIBMoAggQ4QghHyATKAIEIRUgEygCCCEcIB8QuAohHSAWIBw2AiQgFiAdNgIgIBwgHUcNBSAfIBUgHBDgCSAfQYQITwRAIB8QmwcLEL8JIRwCQCAlQQFqIiUgIEcEQCAbKAIAIRUgHEGw8sAAQQUQ7AgiHSAVuBC3CSIVEMAJQbS7yQAtAABFDQFBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgFiAANgIoQdjmyABBKyAWQShqQdjowABBtPnAABDgBgALICAgIEGE+cAAEIwHAAtBuLvJAEEANgIAQbS7yQBBADoAACAVQYQITwRAIBUQmwcLIB1BhAhPBEAgHRCbBwsgHEG56MAAQQkQ7AgiFSATKAIIuBC3CSITEMAJQbS7yQAtAAANBkG4u8kAQQA2AgBBtLvJAEEAOgAAIBNBhAhPBEAgExCbBwsgFUGECE8EQCAVEJsHCyAcQaj0wABBBxDsCCITIB4QwAlBtLvJAC0AAA0HQbi7yQBBADYCAEG0u8kAQQA6AAAgHkGECE8EQCAeEJsHCyATQYQITwRAIBMQmwcLICIgHBDiCSAcQYQITwRAIBwQmwcLIAAiEyAYRiIADQ4gG0HQAGohGyATQQBBDCAAG2ohACATDQALDA0LIBsgF0HE+cAAEIwHAAsgFCAbQYT6wAAQjAcAC0HU98AAEP8HAAtB5PnAABD/BwALIBZBADYCKEEAIBZBIGogFkEkaiAWQShqQeD5xAAQ9QcAC0G0u8kAQQA6AABBuLvJACgCACEAQbi7yQBBADYCACAWIAA2AihB2ObIAEErIBZBKGpB2OjAAEGk+cAAEOAGAAtBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgFiAANgIoQdjmyABBKyAWQShqQdjowABBlPnAABDgBgALQbT7wAAQsQoAC0Hg/8YAEP8HCwALQayKwQAQsAoACyAcIBRBtPrAABCMBwALICwgLEGk+sAAEIwHAAsQwQkhHUHEtskAKAIAIgAEQCAAQQN0IRhBwLbJACgCACETA0AgE0EEaigCACEbIBMoAgAhABDBCSIVIAC4ELcJIgAQ4gkgAEGECE8EQCAAEJsHCyAVIBu4ELcJIgAQ4gkgAEGECE8EQCAAEJsHCyAdIBUQ4gkgFUGECE8EQCAVEJsHCyATQQhqIRMgGEEIayIYDQALCxC/CSIYQeT3wABBChDsCCITIDm7ELcJIgAQwAkCQAJAAkACQAJAAkBBtLvJAC0AAEUEQEG4u8kAQQA2AgBBtLvJAEEAOgAAIABBhAhPBEAgABCbBwsgE0GECE8EQCATEJsHCyAYQe73wABBDxDsCCIAICIQwAlBtLvJAC0AAA0BQbi7yQBBADYCAEG0u8kAQQA6AAAgIkGECE8EQCAiEJsHCyAAQYQITwRAIAAQmwcLIBhB/ffAAEEGEOwIIgAgHRDACUG0u8kALQAADQJBuLvJAEEANgIAQbS7yQBBADoAACAdQYQITwRAIB0QmwcLIABBhAhPBEAgABCbBwsgGEGD+MAAQQoQ7AgiEyAkuBC3CSIAEMAJQbS7yQAtAAANA0G4u8kAQQA2AgBBtLvJAEEAOgAAIABBhAhPBEAgABCbBwsgE0GECE8EQCATEJsHCyAYQY34wABBDBDsCCITIBm4ELcJIgAQwAlBtLvJAC0AAA0EQbi7yQBBADYCAEG0u8kAQQA6AAAgAEGECE8EQCAAEJsHCyATQYQITwRAIBMQmwcLIBhBmfjAAEEJEOwIIhMgJ7cQtwkiABDACUG0u8kALQAADQVBuLvJAEEANgIAQbS7yQBBADoAACAAQYQITwRAIAAQmwcLIBNBhAhPBEAgExCbBwsgFwRAIBQhAANAIAAoAgAiGQRAIABBBGooAgAiFUEEaygCACITQXhxIhsgGUECdCIZQQRBCCATQQNxIhMbakkNCiATQQAgGyAZQSdqSxsNCyAVEKICCyAAQQxqIQAgF0EBayIXDQALCyAWKAIUIhMEQCAUQQRrKAIAIgBBeHEiGSATQQxsIhNBBEEIIABBA3EiABtqSQ0IIABBACAZIBNBJ2pLGw0JIBQQogILAkAgIEUNACAgQQNxIRNBACEVICBBBE8EQCAjQZQCaiEAICBB/P//D3EhGQNAIABB8AFrKAIAIhQgFCgCAEEBazYCACAAQaABaygCACIUIBQoAgBBAWs2AgAgAEHQAGsoAgAiFCAUKAIAQQFrNgIAIAAoAgAiFCAUKAIAQQFrNgIAIABBwAJqIQAgGSAVQQRqIhVHDQALCyATRQ0AIBVB0ABsICNqQSRqIQADQCAAKAIAIhQgFCgCAEEBazYCACAAQdAAaiEAIBNBAWsiEw0ACwsgKARAICNBBGsoAgAiAEF4cSITIChB0ABsIhRBBEEIIABBA3EiABtySQ0IIABBACATIBRBJ2pLGw0HICMQogILQbi1yQBBuLXJACgCAEEBajYCACAaIBg2AgQgGkEANgIAIBZBQGskAAwJC0G0u8kAQQA6AABBuLvJACgCACEAQbi7yQBBADYCACAWIAA2AihB2ObIAEErIBZBKGpB2OjAAEH0+MAAEOAGAAtBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgFiAANgIoQdjmyABBKyAWQShqQdjowABB5PjAABDgBgALQbS7yQBBADoAAEG4u8kAKAIAIQBBuLvJAEEANgIAIBYgADYCKEHY5sgAQSsgFkEoakHY6MAAQdT4wAAQ4AYAC0G0u8kAQQA6AABBuLvJACgCACEAQbi7yQBBADYCACAWIAA2AihB2ObIAEErIBZBKGpB2OjAAEHE+MAAEOAGAAtBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgFiAANgIoQdjmyABBKyAWQShqQdjowABBtPjAABDgBgALQbS7yQBBADoAAEG4u8kAKAIAIQBBuLvJAEEANgIAIBYgADYCKEHY5sgAQSsgFkEoakHY6MAAQaT4wAAQ4AYACwwBC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgGigCBCEAIBooAgAMBwtBgPXAAEEYEOwIDAULQYT2wABBHhDsCAwEC0Hr9cAAQRkQ7AgMAwtBzfXAAEEeEOwIDAILQbH1wABBHBDsCAwBC0GY9cAAQRkQ7AgLIQBBAQshGQJAAkACQCASBEAgEUEEaygCACIoQXhxIhMgEkECdCIUQQRBCCAoQQNxIhIbakkNASASQQAgEyAUQSdqSxsNAiAREKICCyAQBEAgD0EEaygCACIUQXhxIhIgEEECdCIRQQRBCCAUQQNxIhAbakkNASAQQQAgEiARQSdqSxsNAiAPEKICCyAOBEAgDUEEaygCACIRQXhxIhAgDkECdCIPQQRBCCARQQNxIg4bakkNASAOQQAgECAPQSdqSxsNAiANEKICCyAMBEAgC0EEaygCACIPQXhxIg4gDEECdCINQQRBCCAPQQNxIgwbakkNASAMQQAgDiANQSdqSxsNAiALEKICCyAKBEAgCUEEaygCACINQXhxIgwgCkECdCILQQRBCCANQQNxIgobakkNASAKQQAgDCALQSdqSxsNAiAJEKICCyAIBEAgB0EEaygCACILQXhxIgogCEECdCIJQQRBCCALQQNxIggbakkNASAIQQAgCiAJQSdqSxsNAiAHEKICCyAGBEAgBUEEaygCACIJQXhxIgggBkECdCIHQQRBCCAJQQNxIgYbakkNASAGQQAgCCAHQSdqSxsNAiAFEKICCyAEBEAgA0EEaygCACIHQXhxIgYgBEECdCIFQQRBCCAHQQNxIgQbakkNASAEQQAgBiAFQSdqSxsNAiADEKICCyAmIBlBAXEiAzYCCCAmIABBACADGzYCBCAmQQAgACADGzYCACAaQeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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",self.location.href));const A=HQ();(typeof Q=="string"||typeof Request=="function"&&Q instanceof Request||typeof URL=="function"&&Q instanceof URL)&&(Q=fetch(Q));const{instance:I}=await rQ(await Q,A);return xQ(I)}var ag={},PQ=function(Q,A,I,g,B){var C=new Worker(ag[A]||(ag[A]=URL.createObjectURL(new Blob([Q+\';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'],{type:"text/javascript"}))));return C.onmessage=function(E){var D=E.data,i=D.$e$;if(i){var o=new Error(i[0]);o.code=i[1],o.stack=i[2],B(o,null)}else B(null,D)},C.postMessage(I,g),C},v=Uint8Array,ZA=Uint16Array,Yg=Int32Array,XI=new v([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),VI=new v([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Kg=new v([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),tg=function(Q,A){for(var I=new ZA(31),g=0;g<31;++g)I[g]=A+=1<>1|(m&21845)<<1;xA=(xA&52428)>>2|(xA&13107)<<2,xA=(xA&61680)>>4|(xA&3855)<<4,MI[m]=((xA&65280)>>8|(xA&255)<<8)>>1}for(var WA=function(Q,A,I){for(var g=Q.length,B=0,C=new ZA(A);B>i]=o}else for(D=new ZA(g),B=0;B>15-Q[B]);return D},GI=new v(288),m=0;m<144;++m)GI[m]=8;for(var m=144;m<256;++m)GI[m]=9;for(var m=256;m<280;++m)GI[m]=7;for(var m=280;m<288;++m)GI[m]=8;for(var xg=new v(32),m=0;m<32;++m)xg[m]=5;var rg=WA(GI,9,1),ng=WA(xg,5,1),UI=function(Q){for(var A=Q[0],I=1;IA&&(A=Q[I]);return A},hA=function(Q,A,I){var g=A/8|0;return(Q[g]|Q[g+1]<<8)>>(A&7)&I},cI=function(Q,A){var I=A/8|0;return(Q[I]|Q[I+1]<<8|Q[I+2]<<16)>>(A&7)},jI=function(Q){return(Q+7)/8|0},rA=function(Q,A,I){return(A==null||A<0)&&(A=0),(I==null||I>Q.length)&&(I=Q.length),new v(Q.subarray(A,I))},Pg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],_=function(Q,A,I){var g=new Error(A||Pg[Q]);if(g.code=Q,Error.captureStackTrace&&Error.captureStackTrace(g,_),!I)throw g;return g},mI=function(Q,A,I,g){var B=Q.length,C=g?g.length:0;if(!B||A.f&&!A.l)return I||new v(0);var E=!I,D=E||A.i!=2,i=A.i;E&&(I=new v(B*3));var o=function(GA){var RA=I.length;if(GA>RA){var kA=new v(Math.max(RA*2,GA));kA.set(I),I=kA}},w=A.f||0,G=A.p||0,R=A.b||0,y=A.l,k=A.d,F=A.m,s=A.n,h=B*8;do{if(!y){w=hA(Q,G,1);var J=hA(Q,G+1,3);if(G+=3,J)if(J==1)y=rg,k=ng,F=9,s=5;else if(J==2){var K=hA(Q,G,31)+257,p=hA(Q,G+10,15)+4,c=K+hA(Q,G+5,31)+1;G+=14;for(var U=new v(c),r=new v(19),a=0;a>4;if(S<16)U[a++]=S;else{var n=0,T=0;for(S==16?(T=3+hA(Q,G,3),G+=2,n=U[a-1]):S==17?(T=3+hA(Q,G,7),G+=3):S==18&&(T=11+hA(Q,G,127),G+=7);T--;)U[a++]=n}}var W=U.subarray(0,K),X=U.subarray(K);F=UI(W),s=UI(X),y=WA(W,F,1),k=WA(X,s,1)}else _(1);else{var S=jI(G)+4,N=Q[S-4]|Q[S-3]<<8,M=S+N;if(M>B){i&&_(0);break}D&&o(R+N),I.set(Q.subarray(S,M),R),A.b=R+=N,A.p=G=M*8,A.f=w;continue}if(G>h){i&&_(0);break}}D&&o(R+131072);for(var z=(1<>4;if(G+=n&15,G>h){i&&_(0);break}if(n||_(2),O<256)I[R++]=O;else if(O==256){u=G,y=null;break}else{var V=O-254;if(O>264){var a=O-257,b=XI[a];V=hA(Q,G,(1<>4;e||_(3),G+=e&15;var X=dg[d];if(d>3){var b=VI[d];X+=cI(Q,G)&(1<h){i&&_(0);break}D&&o(R+131072);var CA=R+V;if(R>>0},uI=function(Q,A){return gA(Q,A)+gA(Q,A+4)*4294967296},XQ=function(Q){(Q[0]!=31||Q[1]!=139||Q[2]!=8)&&_(6,"invalid gzip data");var A=Q[3],I=10;A&4&&(I+=(Q[10]|Q[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!Q[I++]);return I+(A&2)},zI=function(){function Q(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new v(32768),this.p=new v(0),g&&this.o.set(g)}return Q.prototype.e=function(A){if(this.ondata||_(5),this.d&&_(4),!this.p.length)this.p=A;else if(A.length){var I=new v(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},Q.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=mI(this.p,this.s,this.o);this.ondata(rA(g,I,this.s.b),this.d),this.o=rA(g,this.s.b-32768),this.s.b=this.o.length,this.p=rA(this.p,this.s.p/8|0),this.s.p&=7},Q.prototype.push=function(A,I){this.e(A),this.c(I)},Q}();function VQ(Q,A,I){return I||(I=A,A={}),typeof I!="function"&&_(7),TQ(Q,A,[ZQ],function(g){return pg(LI(g.data[0],eg(g.data[1])))},1,I)}function LI(Q,A){return mI(Q,{i:2},A&&A.out,A&&A.dictionary)}var WQ=function(){function Q(A,I){this.v=1,this.r=0,zI.call(this,A,I)}return Q.prototype.push=function(A,I){if(zI.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?XQ(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}zI.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=jI(this.s.p)+9,this.s={i:0},this.o=new v(0),this.push(new v(0),I))},Q}(),vI=typeof TextDecoder<"u"&&new TextDecoder;try{vI.decode(eQ,{stream:!0})}catch{}var jQ=function(Q){for(var A="",I=0;;){var g=Q[I++],B=(g>127)+(g>223)+(g>239);if(I+B>Q.length)return{s:A,r:rA(Q,I-1)};B?B==3?(g=((g&15)<<18|(Q[I++]&63)<<12|(Q[I++]&63)<<6|Q[I++]&63)-65536,A+=String.fromCharCode(55296|g>>10,56320|g&1023)):B&1?A+=String.fromCharCode((g&31)<<6|Q[I++]&63):A+=String.fromCharCode((g&15)<<12|(Q[I++]&63)<<6|Q[I++]&63):A+=String.fromCharCode(g)}};function mQ(Q,A){if(A){for(var I="",g=0;g65558)return E(_(13,0,1),null),B;var i=MA(Q,D+8);if(i){var o=i,w=gA(Q,D+16),G=w==4294967295||o==65535;if(G){var R=gA(Q,D-12);G=gA(Q,R)==101075792,G&&(o=i=gA(Q,R+32),w=gA(Q,R+48))}for(var y=A&&A.filter,k=function(s){var h=lg(Q,w,G),J=h[0],S=h[1],N=h[2],M=h[3],K=h[4],p=h[5],c=bg(Q,p);w=K;var U=function(a,H){a?(B(),E(a,null)):(H&&(C[M]=H),--i||E(null,C))};if(!y||y({name:M,size:S,originalSize:N,compression:J}))if(!J)U(null,rA(Q,c,c+S));else if(J==8){var r=Q.subarray(c,c+S);if(N<524288||S>.8*N)try{U(null,LI(r,{out:new v(N)}))}catch(a){U(a,null)}else g.push(VQ(r,{size:N},U))}else U(_(14,"unknown compression type "+J,1),null);else U(null,null)},F=0;F65558)&&_(13);var B=MA(Q,g+8);if(!B)return{};var C=gA(Q,g+16),E=C==4294967295||B==65535;if(E){var D=gA(Q,g-12);E=gA(Q,D)==101075792,E&&(B=gA(Q,D+32),C=gA(Q,D+48))}for(var i=A&&A.filter,o=0;o=0?1:-1,S=1-h*h;if(S>Number.EPSILON){const M=Math.sqrt(S),K=Math.atan2(M,h*J);s=Math.sin(s*K)/M,D=Math.sin(D*K)/M}const N=D*J;if(i=i*s+R*N,o=o*s+y*N,w=w*s+k*N,G=G*s+F*N,s===1-D){const M=1/Math.sqrt(i*i+o*o+w*w+G*G);i*=M,o*=M,w*=M,G*=M}}A[I]=i,A[I+1]=o,A[I+2]=w,A[I+3]=G}static multiplyQuaternionsFlat(A,I,g,B,C,E){const D=g[B],i=g[B+1],o=g[B+2],w=g[B+3],G=C[E],R=C[E+1],y=C[E+2],k=C[E+3];return A[I]=D*k+w*G+i*y-o*R,A[I+1]=i*k+w*R+o*G-D*y,A[I+2]=o*k+w*y+D*R-i*G,A[I+3]=w*k-D*G-i*R-o*y,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,I,g,B){return this._x=A,this._y=I,this._z=g,this._w=B,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,I=!0){const g=A._x,B=A._y,C=A._z,E=A._order,D=Math.cos,i=Math.sin,o=D(g/2),w=D(B/2),G=D(C/2),R=i(g/2),y=i(B/2),k=i(C/2);switch(E){case"XYZ":this._x=R*w*G+o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G-R*y*k;break;case"YXZ":this._x=R*w*G+o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G+R*y*k;break;case"ZXY":this._x=R*w*G-o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G-R*y*k;break;case"ZYX":this._x=R*w*G-o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G+R*y*k;break;case"YZX":this._x=R*w*G+o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G-R*y*k;break;case"XZY":this._x=R*w*G-o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G+R*y*k;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+E)}return I===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,I){const g=I/2,B=Math.sin(g);return this._x=A.x*B,this._y=A.y*B,this._z=A.z*B,this._w=Math.cos(g),this._onChangeCallback(),this}setFromRotationMatrix(A){const I=A.elements,g=I[0],B=I[4],C=I[8],E=I[1],D=I[5],i=I[9],o=I[2],w=I[6],G=I[10],R=g+D+G;if(R>0){const y=.5/Math.sqrt(R+1);this._w=.25/y,this._x=(w-i)*y,this._y=(C-o)*y,this._z=(E-B)*y}else if(g>D&&g>G){const y=2*Math.sqrt(1+g-D-G);this._w=(w-i)/y,this._x=.25*y,this._y=(B+E)/y,this._z=(C+o)/y}else if(D>G){const y=2*Math.sqrt(1+D-g-G);this._w=(C-o)/y,this._x=(B+E)/y,this._y=.25*y,this._z=(i+w)/y}else{const y=2*Math.sqrt(1+G-g-D);this._w=(E-B)/y,this._x=(C+o)/y,this._y=(i+w)/y,this._z=.25*y}return this._onChangeCallback(),this}setFromUnitVectors(A,I){let g=A.dot(I)+1;return g<1e-8?(g=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=g):(this._x=0,this._y=-A.z,this._z=A.y,this._w=g)):(this._x=A.y*I.z-A.z*I.y,this._y=A.z*I.x-A.x*I.z,this._z=A.x*I.y-A.y*I.x,this._w=g),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(oA(this.dot(A),-1,1)))}rotateTowards(A,I){const g=this.angleTo(A);if(g===0)return this;const B=Math.min(1,I/g);return this.slerp(A,B),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,I){const g=A._x,B=A._y,C=A._z,E=A._w,D=I._x,i=I._y,o=I._z,w=I._w;return this._x=g*w+E*D+B*o-C*i,this._y=B*w+E*i+C*D-g*o,this._z=C*w+E*o+g*i-B*D,this._w=E*w-g*D-B*i-C*o,this._onChangeCallback(),this}slerp(A,I){if(I===0)return this;if(I===1)return this.copy(A);const g=this._x,B=this._y,C=this._z,E=this._w;let D=E*A._w+g*A._x+B*A._y+C*A._z;if(D<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,D=-D):this.copy(A),D>=1)return this._w=E,this._x=g,this._y=B,this._z=C,this;const i=1-D*D;if(i<=Number.EPSILON){const y=1-I;return this._w=y*E+I*this._w,this._x=y*g+I*this._x,this._y=y*B+I*this._y,this._z=y*C+I*this._z,this.normalize(),this}const o=Math.sqrt(i),w=Math.atan2(o,D),G=Math.sin((1-I)*w)/o,R=Math.sin(I*w)/o;return this._w=E*G+this._w*R,this._x=g*G+this._x*R,this._y=B*G+this._y*R,this._z=C*G+this._z*R,this._onChangeCallback(),this}slerpQuaternions(A,I,g){return this.copy(A).slerp(I,g)}random(){const A=2*Math.PI*Math.random(),I=2*Math.PI*Math.random(),g=Math.random(),B=Math.sqrt(1-g),C=Math.sqrt(g);return this.set(B*Math.sin(A),B*Math.cos(A),C*Math.sin(I),C*Math.cos(I))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,I=0){return this._x=A[I],this._y=A[I+1],this._z=A[I+2],this._w=A[I+3],this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._w,A}fromBufferAttribute(A,I){return this._x=A.getX(I),this._y=A.getY(I),this._z=A.getZ(I),this._w=A.getW(I),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class x{constructor(A=0,I=0,g=0){x.prototype.isVector3=!0,this.x=A,this.y=I,this.z=g}set(A,I,g){return g===void 0&&(g=this.z),this.x=A,this.y=I,this.z=g,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,I){return this.x=A.x*I.x,this.y=A.y*I.y,this.z=A.z*I.z,this}applyEuler(A){return this.applyQuaternion(Vg.setFromEuler(A))}applyAxisAngle(A,I){return this.applyQuaternion(Vg.setFromAxisAngle(A,I))}applyMatrix3(A){const I=this.x,g=this.y,B=this.z,C=A.elements;return this.x=C[0]*I+C[3]*g+C[6]*B,this.y=C[1]*I+C[4]*g+C[7]*B,this.z=C[2]*I+C[5]*g+C[8]*B,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const I=this.x,g=this.y,B=this.z,C=A.elements,E=1/(C[3]*I+C[7]*g+C[11]*B+C[15]);return this.x=(C[0]*I+C[4]*g+C[8]*B+C[12])*E,this.y=(C[1]*I+C[5]*g+C[9]*B+C[13])*E,this.z=(C[2]*I+C[6]*g+C[10]*B+C[14])*E,this}applyQuaternion(A){const I=this.x,g=this.y,B=this.z,C=A.x,E=A.y,D=A.z,i=A.w,o=2*(E*B-D*g),w=2*(D*I-C*B),G=2*(C*g-E*I);return this.x=I+i*o+E*G-D*w,this.y=g+i*w+D*o-C*G,this.z=B+i*G+C*w-E*o,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const I=this.x,g=this.y,B=this.z,C=A.elements;return this.x=C[0]*I+C[4]*g+C[8]*B,this.y=C[1]*I+C[5]*g+C[9]*B,this.z=C[2]*I+C[6]*g+C[10]*B,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,I){return this.x=oA(this.x,A.x,I.x),this.y=oA(this.y,A.y,I.y),this.z=oA(this.z,A.z,I.z),this}clampScalar(A,I){return this.x=oA(this.x,A,I),this.y=oA(this.y,A,I),this.z=oA(this.z,A,I),this}clampLength(A,I){const g=this.length();return this.divideScalar(g||1).multiplyScalar(oA(g,A,I))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this}lerpVectors(A,I,g){return this.x=A.x+(I.x-A.x)*g,this.y=A.y+(I.y-A.y)*g,this.z=A.z+(I.z-A.z)*g,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,I){const g=A.x,B=A.y,C=A.z,E=I.x,D=I.y,i=I.z;return this.x=B*i-C*D,this.y=C*E-g*i,this.z=g*D-B*E,this}projectOnVector(A){const I=A.lengthSq();if(I===0)return this.set(0,0,0);const g=A.dot(this)/I;return this.copy(A).multiplyScalar(g)}projectOnPlane(A){return Ag.copy(this).projectOnVector(A),this.sub(Ag)}reflect(A){return this.sub(Ag.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;const g=this.dot(A)/I;return Math.acos(oA(g,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const I=this.x-A.x,g=this.y-A.y,B=this.z-A.z;return I*I+g*g+B*B}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,I,g){const B=Math.sin(I)*A;return this.x=B*Math.sin(g),this.y=Math.cos(I)*A,this.z=B*Math.cos(g),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,I,g){return this.x=A*Math.sin(I),this.y=g,this.z=A*Math.cos(I),this}setFromMatrixPosition(A){const I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this}setFromMatrixScale(A){const I=this.setFromMatrixColumn(A,0).length(),g=this.setFromMatrixColumn(A,1).length(),B=this.setFromMatrixColumn(A,2).length();return this.x=I,this.y=g,this.z=B,this}setFromMatrixColumn(A,I){return this.fromArray(A.elements,I*4)}setFromMatrix3Column(A,I){return this.fromArray(A.elements,I*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,I=Math.random()*2-1,g=Math.sqrt(1-I*I);return this.x=g*Math.cos(A),this.y=I,this.z=g*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ag=new x,Vg=new nA;class oI{constructor(A,I,g,B,C,E,D,i,o){oI.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,I,g,B,C,E,D,i,o)}set(A,I,g,B,C,E,D,i,o){const w=this.elements;return w[0]=A,w[1]=B,w[2]=D,w[3]=I,w[4]=C,w[5]=i,w[6]=g,w[7]=E,w[8]=o,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const I=this.elements,g=A.elements;return I[0]=g[0],I[1]=g[1],I[2]=g[2],I[3]=g[3],I[4]=g[4],I[5]=g[5],I[6]=g[6],I[7]=g[7],I[8]=g[8],this}extractBasis(A,I,g){return A.setFromMatrix3Column(this,0),I.setFromMatrix3Column(this,1),g.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const I=A.elements;return this.set(I[0],I[4],I[8],I[1],I[5],I[9],I[2],I[6],I[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){const g=A.elements,B=I.elements,C=this.elements,E=g[0],D=g[3],i=g[6],o=g[1],w=g[4],G=g[7],R=g[2],y=g[5],k=g[8],F=B[0],s=B[3],h=B[6],J=B[1],S=B[4],N=B[7],M=B[2],K=B[5],p=B[8];return C[0]=E*F+D*J+i*M,C[3]=E*s+D*S+i*K,C[6]=E*h+D*N+i*p,C[1]=o*F+w*J+G*M,C[4]=o*s+w*S+G*K,C[7]=o*h+w*N+G*p,C[2]=R*F+y*J+k*M,C[5]=R*s+y*S+k*K,C[8]=R*h+y*N+k*p,this}multiplyScalar(A){const I=this.elements;return I[0]*=A,I[3]*=A,I[6]*=A,I[1]*=A,I[4]*=A,I[7]*=A,I[2]*=A,I[5]*=A,I[8]*=A,this}determinant(){const A=this.elements,I=A[0],g=A[1],B=A[2],C=A[3],E=A[4],D=A[5],i=A[6],o=A[7],w=A[8];return I*E*w-I*D*o-g*C*w+g*D*i+B*C*o-B*E*i}invert(){const A=this.elements,I=A[0],g=A[1],B=A[2],C=A[3],E=A[4],D=A[5],i=A[6],o=A[7],w=A[8],G=w*E-D*o,R=D*i-w*C,y=o*C-E*i,k=I*G+g*R+B*y;if(k===0)return this.set(0,0,0,0,0,0,0,0,0);const F=1/k;return A[0]=G*F,A[1]=(B*o-w*g)*F,A[2]=(D*g-B*E)*F,A[3]=R*F,A[4]=(w*I-B*i)*F,A[5]=(B*C-D*I)*F,A[6]=y*F,A[7]=(g*i-o*I)*F,A[8]=(E*I-g*C)*F,this}transpose(){let A;const I=this.elements;return A=I[1],I[1]=I[3],I[3]=A,A=I[2],I[2]=I[6],I[6]=A,A=I[5],I[5]=I[7],I[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const I=this.elements;return A[0]=I[0],A[1]=I[3],A[2]=I[6],A[3]=I[1],A[4]=I[4],A[5]=I[7],A[6]=I[2],A[7]=I[5],A[8]=I[8],this}setUvTransform(A,I,g,B,C,E,D){const i=Math.cos(C),o=Math.sin(C);return this.set(g*i,g*o,-g*(i*E+o*D)+E+A,-B*o,B*i,-B*(-o*E+i*D)+D+I,0,0,1),this}scale(A,I){return this.premultiply(Ig.makeScale(A,I)),this}rotate(A){return this.premultiply(Ig.makeRotation(-A)),this}translate(A,I){return this.premultiply(Ig.makeTranslation(A,I)),this}makeTranslation(A,I){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,I,0,0,1),this}makeRotation(A){const I=Math.cos(A),g=Math.sin(A);return this.set(I,-g,0,g,I,0,0,0,1),this}makeScale(A,I){return this.set(A,0,0,0,I,0,0,0,1),this}equals(A){const I=this.elements,g=A.elements;for(let B=0;B<9;B++)if(I[B]!==g[B])return!1;return!0}fromArray(A,I=0){for(let g=0;g<9;g++)this.elements[g]=A[g+I];return this}toArray(A=[],I=0){const g=this.elements;return A[I]=g[0],A[I+1]=g[1],A[I+2]=g[2],A[I+3]=g[3],A[I+4]=g[4],A[I+5]=g[5],A[I+6]=g[6],A[I+7]=g[7],A[I+8]=g[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Ig=new oI,Wg={};function jg(Q){Q in Wg||(Wg[Q]=!0,console.warn(Q))}const mg=new oI().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),ug=new oI().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function AB(){const Q={enabled:!0,workingColorSpace:Tg,spaces:{},convert:function(B,C,E){return this.enabled===!1||C===E||!C||!E||(this.spaces[C].transfer===_I&&(B.r=jA(B.r),B.g=jA(B.g),B.b=jA(B.b)),this.spaces[C].primaries!==this.spaces[E].primaries&&(B.applyMatrix3(this.spaces[C].toXYZ),B.applyMatrix3(this.spaces[E].fromXYZ)),this.spaces[E].transfer===_I&&(B.r=mA(B.r),B.g=mA(B.g),B.b=mA(B.b))),B},workingToColorSpace:function(B,C){return this.convert(B,this.workingColorSpace,C)},colorSpaceToWorking:function(B,C){return this.convert(B,C,this.workingColorSpace)},getPrimaries:function(B){return this.spaces[B].primaries},getTransfer:function(B){return B===_Q?Xg:this.spaces[B].transfer},getToneMappingMode:function(B){return this.spaces[B].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(B,C=this.workingColorSpace){return B.fromArray(this.spaces[C].luminanceCoefficients)},define:function(B){Object.assign(this.spaces,B)},_getMatrix:function(B,C,E){return B.copy(this.spaces[C].toXYZ).multiply(this.spaces[E].fromXYZ)},_getDrawingBufferColorSpace:function(B){return this.spaces[B].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(B=this.workingColorSpace){return this.spaces[B].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(B,C){return jg("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),Q.workingToColorSpace(B,C)},toWorkingColorSpace:function(B,C){return jg("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),Q.colorSpaceToWorking(B,C)}},A=[.64,.33,.3,.6,.15,.06],I=[.2126,.7152,.0722],g=[.3127,.329];return Q.define({[Tg]:{primaries:A,whitePoint:g,transfer:Xg,toXYZ:mg,fromXYZ:ug,luminanceCoefficients:I,workingColorSpaceConfig:{unpackColorSpace:UA},outputColorSpaceConfig:{drawingBufferColorSpace:UA}},[UA]:{primaries:A,whitePoint:g,transfer:_I,toXYZ:mg,fromXYZ:ug,luminanceCoefficients:I,outputColorSpaceConfig:{drawingBufferColorSpace:UA}}}),Q}const cA=AB();function jA(Q){return Q<.04045?Q*.0773993808:Math.pow(Q*.9478672986+.0521327014,2.4)}function mA(Q){return Q<.0031308?Q*12.92:1.055*Math.pow(Q,.41666)-.055}class zg{constructor(A=new x(1/0,1/0,1/0),I=new x(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=I}set(A,I){return this.min.copy(A),this.max.copy(I),this}setFromArray(A){this.makeEmpty();for(let I=0,g=A.length;I=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,I){return I.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,HA),HA.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let I,g;return A.normal.x>0?(I=A.normal.x*this.min.x,g=A.normal.x*this.max.x):(I=A.normal.x*this.max.x,g=A.normal.x*this.min.x),A.normal.y>0?(I+=A.normal.y*this.min.y,g+=A.normal.y*this.max.y):(I+=A.normal.y*this.max.y,g+=A.normal.y*this.min.y),A.normal.z>0?(I+=A.normal.z*this.min.z,g+=A.normal.z*this.max.z):(I+=A.normal.z*this.max.z,g+=A.normal.z*this.min.z),I<=-A.constant&&g>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(yI),YI.subVectors(this.max,yI),uA.subVectors(A.a,yI),zA.subVectors(A.b,yI),vA.subVectors(A.c,yI),PA.subVectors(zA,uA),fA.subVectors(vA,zA),TA.subVectors(uA,vA);let I=[0,-PA.z,PA.y,0,-fA.z,fA.y,0,-TA.z,TA.y,PA.z,0,-PA.x,fA.z,0,-fA.x,TA.z,0,-TA.x,-PA.y,PA.x,0,-fA.y,fA.x,0,-TA.y,TA.x,0];return!gg(I,uA,zA,vA,YI)||(I=[1,0,0,0,1,0,0,0,1],!gg(I,uA,zA,vA,YI))?!1:(KI.crossVectors(PA,fA),I=[KI.x,KI.y,KI.z],gg(I,uA,zA,vA,YI))}clampPoint(A,I){return I.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,HA).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(HA).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(tA[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),tA[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),tA[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),tA[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),tA[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),tA[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),tA[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),tA[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(tA),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(A){return this.min.fromArray(A.min),this.max.fromArray(A.max),this}}const tA=[new x,new x,new x,new x,new x,new x,new x,new x],HA=new x,aI=new zg,uA=new x,zA=new x,vA=new x,PA=new x,fA=new x,TA=new x,yI=new x,YI=new x,KI=new x,XA=new x;function gg(Q,A,I,g,B){for(let C=0,E=Q.length-3;C<=E;C+=3){XA.fromArray(Q,C);const D=B.x*Math.abs(XA.x)+B.y*Math.abs(XA.y)+B.z*Math.abs(XA.z),i=A.dot(XA),o=I.dot(XA),w=g.dot(XA);if(Math.max(-Math.max(i,o,w),Math.min(i,o,w))>D)return!1}return!0}const vg={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},pA={h:0,s:0,l:0},tI={h:0,s:0,l:0};function Qg(Q,A,I){return I<0&&(I+=1),I>1&&(I-=1),I<1/6?Q+(A-Q)*6*I:I<1/2?A:I<2/3?Q+(A-Q)*6*(2/3-I):Q}class Bg{constructor(A,I,g){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,I,g)}set(A,I,g){if(I===void 0&&g===void 0){const B=A;B&&B.isColor?this.copy(B):typeof B=="number"?this.setHex(B):typeof B=="string"&&this.setStyle(B)}else this.setRGB(A,I,g);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,I=UA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,cA.colorSpaceToWorking(this,I),this}setRGB(A,I,g,B=cA.workingColorSpace){return this.r=A,this.g=I,this.b=g,cA.colorSpaceToWorking(this,B),this}setHSL(A,I,g,B=cA.workingColorSpace){if(A=$Q(A,1),I=oA(I,0,1),g=oA(g,0,1),I===0)this.r=this.g=this.b=g;else{const C=g<=.5?g*(1+I):g+I-g*I,E=2*g-C;this.r=Qg(E,C,A+1/3),this.g=Qg(E,C,A),this.b=Qg(E,C,A-1/3)}return cA.colorSpaceToWorking(this,B),this}setStyle(A,I=UA){function g(C){C!==void 0&&parseFloat(C)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let B;if(B=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let C;const E=B[1],D=B[2];switch(E){case"rgb":case"rgba":if(C=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setRGB(Math.min(255,parseInt(C[1],10))/255,Math.min(255,parseInt(C[2],10))/255,Math.min(255,parseInt(C[3],10))/255,I);if(C=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setRGB(Math.min(100,parseInt(C[1],10))/100,Math.min(100,parseInt(C[2],10))/100,Math.min(100,parseInt(C[3],10))/100,I);break;case"hsl":case"hsla":if(C=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setHSL(parseFloat(C[1])/360,parseFloat(C[2])/100,parseFloat(C[3])/100,I);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(B=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const C=B[1],E=C.length;if(E===3)return this.setRGB(parseInt(C.charAt(0),16)/15,parseInt(C.charAt(1),16)/15,parseInt(C.charAt(2),16)/15,I);if(E===6)return this.setHex(parseInt(C,16),I);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,I);return this}setColorName(A,I=UA){const g=vg[A.toLowerCase()];return g!==void 0?this.setHex(g,I):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=jA(A.r),this.g=jA(A.g),this.b=jA(A.b),this}copyLinearToSRGB(A){return this.r=mA(A.r),this.g=mA(A.g),this.b=mA(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=UA){return cA.workingToColorSpace(BA.copy(this),A),Math.round(oA(BA.r*255,0,255))*65536+Math.round(oA(BA.g*255,0,255))*256+Math.round(oA(BA.b*255,0,255))}getHexString(A=UA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,I=cA.workingColorSpace){cA.workingToColorSpace(BA.copy(this),I);const g=BA.r,B=BA.g,C=BA.b,E=Math.max(g,B,C),D=Math.min(g,B,C);let i,o;const w=(D+E)/2;if(D===E)i=0,o=0;else{const G=E-D;switch(o=w<=.5?G/(E+D):G/(2-E-D),E){case g:i=(B-C)/G+(B(Q.PLY="ply",Q.SPZ="spz",Q.SPLAT="splat",Q.KSPLAT="ksplat",Q.PCSOGS="pcsogs",Q.PCSOGSZIP="pcsogszip",Q.RAD="rad",Q))(wA||{});function QB(Q){var C;let A=!1;const I=Q.split(`\n`).map(E=>{const D=E.trimEnd();return A?D:D.length>0?(A=!0,D):null}).filter(E=>E!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(C=I[0].match(/^\\s*/))==null?void 0:C[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(E=>E.replace(B,""))}function BB(Q){return QB(Q).join(`\n`)}const Cg=new Float32Array(1),QQ=new Uint32Array(Cg.buffer),Eg="Float16Array"in globalThis,RI=Eg?new globalThis.Float16Array(1):null,BQ=new Uint16Array(RI==null?void 0:RI.buffer);function CB(Q){const A=Math.sqrt(Q.reduce((I,g)=>I+g*g,0));return Q.map(I=>I/A)}const $A=Eg?EB:DB,AA=Eg?iB:wB;function EB(Q){return RI[0]=Q,BQ[0]}function DB(Q){Cg[0]=Q;const A=QQ[0],I=A>>31&1,g=A>>23&255,B=A&8388607,C=I<<15;if(g===255)return B!==0?C|32767:C|31744;const E=g-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const i=(B|8388608)>>1-E+13;return C|i}const D=B>>13;return C|E<<10|D}function iB(Q){return BQ[0]=Q,RI[0]}function wB(Q){const A=Q>>15&1,I=Q>>10&31,g=Q&1023;let B;if(I===0)if(g===0)B=A<<31;else{let C=g,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const D=E+127,i=C<<13;B=A<<31|D<<23|i}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=I-15+127,E=g<<13;B=A<<31|C<<23|E}return QQ[0]=B,Cg[0]}function SA(Q){return Math.max(0,Math.min(255,Math.round(Q*255)))}function GB(Q){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(Q),A}function Dg(Q,A,I,g,B,C,E,D,i,o,w,G,R,y,k,F,s){const h=(s==null?void 0:s.rgbMin)??0,S=((s==null?void 0:s.rgbMax)??1)-h,N=SA((y-h)/S),M=SA((k-h)/S),K=SA((F-h)/S),p=SA(s!=null&&s.lodOpacity?.5*R:R),c=GQ(DQ.set(i,o,w,G)),U=c&255,r=c>>>8&255,a=c>>>16&255,H=(s==null?void 0:s.lnScaleMin)??_g,t=254/(((s==null?void 0:s.lnScaleMax)??$g)-H),Y=C<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(C)-H)*t)+1)),n=E<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(E)-H)*t)+1)),T=D<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(D)-H)*t)+1)),W=$A(I),X=$A(g),z=$A(B),j=A*4;Q[j]=N|M<<8|K<<16|p<<24,Q[j+1]=W|X<<16,Q[j+2]=z|U<<16|r<<24,Q[j+3]=Y|n<<8|T<<16|a<<24}function CQ(Q,A,I,g,B){const C=$A(I),E=$A(g),D=$A(B),i=A*4;Q[i+1]=C|E<<16,Q[i+2]=D|Q[i+2]&4294901760}function EQ(Q,A,I,g,B,C){const E=(C==null?void 0:C.lnScaleMin)??_g,i=254/(((C==null?void 0:C.lnScaleMax)??$g)-E),o=I<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(I)-E)*i)+1)),w=g<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(g)-E)*i)+1)),G=B<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(B)-E)*i)+1)),R=A*4;Q[R+3]=o|w<<8|G<<16|Q[R+3]&4278190080}const DQ=new nA;function iQ(Q,A,I,g,B,C){const E=GQ(DQ.set(I,g,B,C)),D=E&255,i=E>>>8&255,o=E>>>16&255,w=A*4;Q[w+2]=Q[w+2]&65535|D<<16|i<<24,Q[w+3]=Q[w+3]&16777215|o<<24}function oB(Q,A,I,g,B,C,E){const D=(E==null?void 0:E.rgbMin)??0,o=((E==null?void 0:E.rgbMax)??1)-D,w=SA((I-D)/o),G=SA((g-D)/o),R=SA((B-D)/o),y=SA(E!=null&&E.lodOpacity?.5*C:C),k=A*4;Q[k]=w|G<<8|R<<16|y<<24}function yB(Q,A,I,g,B,C){const E=(C==null?void 0:C.rgbMin)??0,i=((C==null?void 0:C.rgbMax)??1)-E,o=SA((I-E)/i),w=SA((g-E)/i),G=SA((B-E)/i),R=A*4;Q[R]=o|w<<8|G<<16|Q[R]&4278190080}function RB(Q,A,I){const g=SA(I),B=A*4;Q[B]=Q[B]&16777215|g<<24}new x,new x,new Bg;function kB(Q){const A=AQ,I=Math.max(gQ,Math.min(IQ,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function qI(Q){const A=AQ,I=Math.max(gQ,Math.min(IQ,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I));return A*I*g}BB(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);const FB=new nA,wQ=new x;function GQ(Q){const A=FB.copy(Q).normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?wQ.set(1,0,0):wQ.set(A.x,A.y,A.z).divideScalar(g),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,D=B.y/C;if(B.z<0){const y=E;E=(1-Math.abs(D))*(E>=0?1:-1),D=(1-Math.abs(y))*(D>=0?1:-1)}const i=E*.5+.5,o=D*.5+.5,w=Math.round(i*255),G=Math.round(o*255);return Math.round(I*(255/Math.PI))<<16|G<<8|w}function dI(Q,A,I,g){const B=Math.round(Math.max(-127,Math.min(127,Q*127))),C=Math.round(Math.max(-127,Math.min(127,A*127))),E=Math.round(Math.max(-127,Math.min(127,I*127))),D=Math.round(Math.max(-127,Math.min(127,g*127)));return B&255|(C&255)<<8|(E&255)<<16|(D&255)<<24}function xI(Q,A,I,g){const C=63/((g==null?void 0:g.sh1Max)??1),E=A*2;for(let D=0;D<9;++D){const i=I[D]*C,o=Math.round(Math.max(-63,Math.min(63,i)))&127,w=D*7,G=w+7,R=Math.floor(w/32),y=w-R*32,k=o<R*32+32){const F=o>>>32-y&4294967295;Q[E+R+1]|=F}}}function rI(Q,A,I,g){const C=1/((g==null?void 0:g.sh2Max)??1);Q[A*4+0]=dI(I[0]*C,I[1]*C,I[2]*C,I[3]*C),Q[A*4+1]=dI(I[4]*C,I[5]*C,I[6]*C,I[7]*C),Q[A*4+2]=dI(I[8]*C,I[9]*C,I[10]*C,I[11]*C),Q[A*4+3]=dI(I[12]*C,I[13]*C,I[14]*C,0)}function nI(Q,A,I,g){const C=31/((g==null?void 0:g.sh3Max)??1),E=A*4;for(let D=0;D<21;++D){const i=I[D]*C,o=Math.round(Math.max(-31,Math.min(31,i)))&63,w=D*6,G=w+6,R=Math.floor(w/32),y=w-R*32,k=o<R*32+32){const F=o>>>32-y&4294967295;Q[E+R+1]|=F}}}function hB(Q,A){const I=[];let g=0,B=null;const C=new WQ((i,o)=>{if(I.push(i),g+=i.length,o||g>=A){const w=new Uint8Array(g);let G=0;for(const R of I)w.set(R,G),G+=R.length;B=w.slice(0,A)}}),E=1024;let D=0;for(;B==null&&D{I=C,g=qI(I),B=new Uint32Array(g*4)},(C,E,D,i,o,w,G,R,y,k,F,s,h,J,S)=>{Dg(B,C,E,D,i,o,w,G,R,y,k,F,s,h,J,S,A)}),{packedArray:B,numSplats:I}}const PI={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},yQ={0:0,1:9,2:24,3:45};function NB(Q,A,I,g){var F;let E=0;const D=new DataView(Q.buffer,E,4096);E+=4096;const i=D.getUint8(0),o=D.getUint8(1);if(i!==0||o<1)throw new Error(`Unsupported .ksplat version: ${i}.${o}`);const w=D.getUint32(4,!0);D.getUint32(16,!0);const G=D.getUint16(20,!0);if(G<0||G>2)throw new Error(`Invalid .ksplat compression level: ${G}`);const R=D.getFloat32(36,!0)||-1.5,y=D.getFloat32(40,!0)||1.5;let k=4096+w*1024;for(let s=0;s=1?new Float32Array(3*3):void 0,kA=Y>=2?new Float32Array(5*3):void 0,qA=Y>=3?new Float32Array(7*3):void 0,FA=p/2/U,sA=k+q,NA=k+t,P=new DataView(Q.buffer,NA,d),DA=new Float32Array(Q.buffer,sA,K*3),$=new Uint32Array(Q.buffer,k,H);let Z=r,bA=a;for(let iA=0;iA=bA+KA&&(Z+=1,bA+=KA),JA=Z}const IA=G===0?P.getFloat32(f+0,!0):(P.getUint16(f+0,!0)-U)*FA+DA[3*JA+0],l=G===0?P.getFloat32(f+4,!0):(P.getUint16(f+2,!0)-U)*FA+DA[3*JA+1],aA=G===0?P.getFloat32(f+8,!0):(P.getUint16(f+4,!0)-U)*FA+DA[3*JA+2],FI=G===0?P.getFloat32(f+u+0,!0):AA(P.getUint16(f+u+0,!0)),hI=G===0?P.getFloat32(f+u+4,!0):AA(P.getUint16(f+u+2,!0)),Rg=G===0?P.getFloat32(f+u+8,!0):AA(P.getUint16(f+u+4,!0)),kg=G===0?P.getFloat32(f+O+0,!0):AA(P.getUint16(f+O+0,!0)),Fg=G===0?P.getFloat32(f+O+4,!0):AA(P.getUint16(f+O+2,!0)),hg=G===0?P.getFloat32(f+O+8,!0):AA(P.getUint16(f+O+4,!0)),Sg=G===0?P.getFloat32(f+O+12,!0):AA(P.getUint16(f+O+6,!0)),sg=P.getUint8(f+V+0)/255,Ng=P.getUint8(f+V+1)/255,Jg=P.getUint8(f+V+2)/255,Mg=P.getUint8(f+V+3)/255;if(I(iA,IA,l,aA,FI,hI,Rg,Fg,hg,Sg,kg,Mg,sg,Ng,Jg),Y>=1&&RA){for(const[KA,VA]of EA.entries())RA[KA]=h(f,VA);if(kA)for(const[KA,VA]of yA.entries())kA[KA]=h(f,VA);if(qA)for(const[KA,VA]of GA.entries())qA[KA]=h(f,VA);g==null||g(iA,RA,kA,qA)}}k+=CA}}function JB(Q,A){var J;let B=0;const C=new DataView(Q.buffer,B,4096);B+=4096;const E=C.getUint8(0),D=C.getUint8(1);if(E!==0||D<1)throw new Error(`Unsupported .ksplat version: ${E}.${D}`);const i=C.getUint32(4,!0),o=C.getUint32(16,!0),w=C.getUint16(20,!0);if(w<0||w>2)throw new Error(`Invalid .ksplat compression level: ${w}`);const G=C.getFloat32(36,!0)||-1.5,R=C.getFloat32(40,!0)||1.5,y=o,k=qI(y),F=new Uint32Array(k*4),s={};let h=4096+i*1024;for(let S=0;S=1?new Float32Array(3*3):void 0,sA=W>=2?new Float32Array(5*3):void 0,NA=W>=3?new Float32Array(7*3):void 0,P=r/2/H,DA=h+n,$=h+T,Z=new DataView(Q.buffer,$,yA),bA=new Float32Array(Q.buffer,DA,U*3),iA=new Uint32Array(Q.buffer,h,Y);let f=q,JA=t;for(let IA=0;IA=JA+lA&&(f+=1,JA+=lA),aA=f}const FI=w===0?Z.getFloat32(l+0,!0):(Z.getUint16(l+0,!0)-H)*P+bA[3*aA+0],hI=w===0?Z.getFloat32(l+4,!0):(Z.getUint16(l+2,!0)-H)*P+bA[3*aA+1],Rg=w===0?Z.getFloat32(l+8,!0):(Z.getUint16(l+4,!0)-H)*P+bA[3*aA+2],kg=w===0?Z.getFloat32(l+b+0,!0):AA(Z.getUint16(l+b+0,!0)),Fg=w===0?Z.getFloat32(l+b+4,!0):AA(Z.getUint16(l+b+2,!0)),hg=w===0?Z.getFloat32(l+b+8,!0):AA(Z.getUint16(l+b+4,!0)),Sg=w===0?Z.getFloat32(l+e+0,!0):AA(Z.getUint16(l+e+0,!0)),sg=w===0?Z.getFloat32(l+e+4,!0):AA(Z.getUint16(l+e+2,!0)),Ng=w===0?Z.getFloat32(l+e+8,!0):AA(Z.getUint16(l+e+4,!0)),Jg=w===0?Z.getFloat32(l+e+12,!0):AA(Z.getUint16(l+e+6,!0)),Mg=Z.getUint8(l+d+0)/255,KA=Z.getUint8(l+d+1)/255,VA=Z.getUint8(l+d+2)/255,XB=Z.getUint8(l+d+3)/255;if(Dg(F,IA,FI,hI,Rg,kg,Fg,hg,sg,Ng,Jg,Sg,XB,Mg,KA,VA,A),W>=1){if(FA){s.sh1||(s.sh1=new Uint32Array(y*2));for(const[lA,SI]of RA.entries())FA[lA]=N(l,SI);xI(s.sh1,IA,FA,A)}if(sA){s.sh2||(s.sh2=new Uint32Array(y*4));for(const[lA,SI]of kA.entries())sA[lA]=N(l,SI);rI(s.sh2,IA,sA,A)}if(NA){s.sh3||(s.sh3=new Uint32Array(y*4));for(const[lA,SI]of qA.entries())NA[lA]=N(l,SI);nI(s.sh3,IA,NA,A)}}}h+=GA}return{packedArray:F,numSplats:y,extra:s}}const RQ=["char","uchar","short","ushort","int","uint","float","double"],II=class II{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:E=>{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header\n`;for(;;){const{value:E,done:D}=await I.read();if(D)throw new Error("Failed to read header");this.header+=E;const i=this.header.indexOf(g);if(i>=0){this.header=this.header.slice(0,i+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(`\n`).forEach((E,D)=>{const i=E.trim();if(D===0){if(i!=="ply")throw new Error("Invalid PLY header");return}if(i.length===0)return;const o=i.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(i.slice(8));break;case"element":{const w=o[1];C={name:w,count:Number.parseInt(o[2]),properties:{}},this.elements[w]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");o[1]==="list"?C.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:C.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:D}=C,i=cB(D),o=HB(D,this.littleEndian),w=A(C)??(()=>{});for(let G=0;G[0,1,2].map((N,M)=>S+M*h/3)),D=new Array(5).fill(null).flatMap((J,S)=>[0,1,2].map((N,M)=>3+S+M*h/3)),i=new Array(7).fill(null).flatMap((J,S)=>[0,1,2].map((N,M)=>8+S+M*h/3)),o=C>=1?new Float32Array(3*3):void 0,w=C>=2?new Float32Array(5*3):void 0,G=C>=3?new Float32Array(7*3):void 0}function y(h,J){if(!o)throw new Error("Missing sh1");const S=J.f_rest;for(let N=0;N{const{min_x:n,min_y:T,min_z:W,max_x:X,max_y:z,max_z:j,min_scale_x:u,min_scale_y:O,min_scale_z:V,max_scale_x:b,max_scale_y:e,max_scale_z:d,min_r:CA,min_g:EA,min_b:yA,max_r:GA,max_g:RA,max_b:kA}=Y;B.push({min_x:n,min_y:T,min_z:W,max_x:X,max_y:z,max_z:j,min_scale_x:u,min_scale_y:O,min_scale_z:V,max_scale_x:b,max_scale_y:e,max_scale_z:d,min_r:CA,min_g:EA,min_b:yA,max_r:GA,max_g:RA,max_b:kA})}}function F(h){if(I&&h.name==="sh")return C=wg(h.properties),R(),y;if(h.name!=="vertex")return null;const{packed_position:J,packed_rotation:S,packed_scale:N,packed_color:M}=h.properties;if(!J||!S||!N||!M)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const K=Math.sqrt(2);return(p,c)=>{const U=B[p>>>8];if(U==null)throw new Error("Missing PLY chunk");const{min_x:r,min_y:a,min_z:H,max_x:q,max_y:t,max_z:Y,min_scale_x:n,min_scale_y:T,min_scale_z:W,max_scale_x:X,max_scale_y:z,max_scale_z:j,min_r:u,min_g:O,min_b:V,max_r:b,max_g:e,max_b:d}=U,{packed_position:CA,packed_rotation:EA,packed_scale:yA,packed_color:GA}=c,RA=(CA>>>21&2047)/2047*(q-r)+r,kA=(CA>>>11&1023)/1023*(t-a)+a,qA=(CA&2047)/2047*(Y-H)+H,FA=((EA>>>20&1023)/1023-.5)*K,sA=((EA>>>10&1023)/1023-.5)*K,NA=((EA&1023)/1023-.5)*K,P=Math.sqrt(Math.max(0,1-FA*FA-sA*sA-NA*NA)),DA=EA>>>30,$=DA===0?FA:DA===1?P:sA,Z=DA<=1?sA:DA===2?P:NA,bA=DA<=2?NA:P,iA=DA===0?P:FA,f=Math.exp((yA>>>21&2047)/2047*(X-n)+n),JA=Math.exp((yA>>>11&1023)/1023*(z-T)+T),IA=Math.exp((yA&2047)/2047*(j-W)+W),l=(GA>>>24&255)/255*((b??1)-(u??0))+(u??0),aA=(GA>>>16&255)/255*((e??1)-(O??0))+(O??0),FI=(GA>>>8&255)/255*((d??1)-(V??0))+(V??0),hI=(GA&255)/255;A(p,RA,kA,qA,f,JA,IA,$,Z,bA,iA,hI,l,aA,FI)}}const s=h=>{if(h.name==="chunk")return k(h);if(g)return F(h);if(h.name!=="vertex")return null;const{x:J,y:S,z:N,scale_0:M,scale_1:K,scale_2:p,rot_0:c,rot_1:U,rot_2:r,rot_3:a,opacity:H,f_dc_0:q,f_dc_1:t,f_dc_2:Y,red:n,green:T,blue:W,alpha:X}=h.properties;if(!J||!S||!N)throw new Error("Missing PLY properties: x, y, z");const z=M&&K&&p,j=c&&U&&r&&a,u=X!=null?eI[X.type]:1,O=n!=null?eI[n.type]:1,V=T!=null?eI[T.type]:1,b=W!=null?eI[W.type]:1;return C=wg(h.properties),R(),(e,d)=>{const CA=z?Math.exp(d.scale_0):II.defaultPointScale,EA=z?Math.exp(d.scale_1):II.defaultPointScale,yA=z?Math.exp(d.scale_2):II.defaultPointScale,GA=j?d.rot_1:0,RA=j?d.rot_2:0,kA=j?d.rot_3:0,qA=j?d.rot_0:1,FA=H!=null?1/(1+Math.exp(-d.opacity)):X!=null?d.alpha/u:1,sA=q!=null?d.f_dc_0*pI+.5:n!=null?d.red/O:1,NA=t!=null?d.f_dc_1*pI+.5:T!=null?d.green/V:1,P=Y!=null?d.f_dc_2*pI+.5:W!=null?d.blue/b:1;if(A(e,d.x,d.y,d.z,CA,EA,yA,GA,RA,kA,qA,FA,sA,NA,P),I&&o){const DA=d.f_rest;if(o)for(let $=0;${const y=AI[R.countType](g,I,this.littleEndian);I+=LA[R.countType],I+=y*LA[R.type]});else{if(w)if(G==="f_dc_0"||G==="f_dc_1"||G==="f_dc_2"){const y=Number.parseInt(G.slice(5));i.push(()=>{const k=(A[o+y]/255-.5)/pI;kQ[R.type](g,I,this.littleEndian,k)})}else G==="opacity"&&i.push(()=>{const y=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));kQ[R.type](g,I,this.littleEndian,y)});i.push(()=>{I+=LA[R.type]})}for(let G=0;GQ.getInt8(A),uchar:(Q,A,I)=>Q.getUint8(A),short:(Q,A,I)=>Q.getInt16(A,I),ushort:(Q,A,I)=>Q.getUint16(A,I),int:(Q,A,I)=>Q.getInt32(A,I),uint:(Q,A,I)=>Q.getUint32(A,I),float:(Q,A,I)=>Q.getFloat32(A,I),double:(Q,A,I)=>Q.getFloat64(A,I)},kQ={char:(Q,A,I,g)=>{Q.setInt8(A,g)},uchar:(Q,A,I,g)=>{Q.setUint8(A,g)},short:(Q,A,I,g)=>{Q.setInt16(A,g,I)},ushort:(Q,A,I,g)=>{Q.setUint16(A,g,I)},int:(Q,A,I,g)=>{Q.setInt32(A,g,I)},uint:(Q,A,I,g)=>{Q.setUint32(A,g,I)},float:(Q,A,I,g)=>{Q.setFloat32(A,g,I)},double:(Q,A,I,g)=>{Q.setFloat64(A,g,I)}},LA={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},eI={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},MB={0:0,9:1,24:2,45:3},UB={0:0,1:9,2:24,3:45},ig=/^f_rest_([0-9]{1,2})$/;function cB(Q){const A={};for(const[I,g]of Object.entries(Q))ig.test(I)?A.f_rest=new Array(wg(Q)):A[I]=g.isList?[]:0;return A}function HB(Q,A){return YB(Q)?KB(Q,A):tB(Q,A)}const LB=(()=>{try{new Function("return 42;")}catch{return!1}return!0})(),aB=/^[a-zA-Z0-9_]+$/;function YB(Q){if(!LB)return!1;for(const[A,I]of Object.entries(Q))if(!aB.test(A)||I.isList&&!RQ.includes(I.countType)||!RQ.includes(I.type))return!1;return!0}function KB(Q,A){const I=["let list;"];for(const[B,C]of Object.entries(Q)){const E=B.match(ig);if(E){const D=+E[1];I.push(`\n item.f_rest[${D}] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n `)}else C.isList?I.push(`\n list = item[\'${B}\'];\n list.length = PARSE_FIELD[\'${C.countType}\'](data, offset, ${A});\n offset += ${LA[C.countType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n }\n `):I.push(`\n item[\'${B}\'] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n `)}I.push("return offset;");const g=new Function("data","offset","item","PARSE_FIELD",I.join(`\n`));return(B,C,E)=>g(B,C,E,AI)}function tB(Q,A){const I=[];for(const[g,B]of Object.entries(Q)){const C=g.match(ig);if(C){const E=+C[1];I.push((D,i,o)=>(o.f_rest[E]=AI[B.type](D,i,A),i+LA[B.type]))}else B.isList?I.push((E,D,i)=>{const o=i[g];o.length=AI[B.countType](E,D,A);let w=D+LA[B.countType];for(let G=0;G(i[g]=AI[B.type](E,D,A),D+LA[B.type]))}return(g,B,C)=>{let E=B;for(let D=0;D3)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=A.getUint32(8,!0),this.shDegree=A.getUint8(12),this.fractionalBits=A.getUint8(13),this.flags=A.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.flagLod=(this.flags&128)!==0,this.reserved=A.getUint8(15),this.headerParsed=!0,this.parsed=!1}async parseSplats(A,I,g,B,C,E,{childCounts:D,childStarts:i}={}){if(!this.headerParsed)throw new Error("SPZ file header must be parsed first");if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const o=await this.reader.read(this.numSplats*3*2),w=new Uint16Array(o.buffer);for(let G=0;G>8)/o,k=((w[R+5]<<24|w[R+4]<<16|w[R+3]<<8)>>8)/o,F=((w[R+8]<<24|w[R+7]<<16|w[R+6]<<8)>>8)/o;A==null||A(G,y,k,F)}}else throw new Error("Unreachable");{const o=await this.reader.read(this.numSplats);for(let w=0;w>>30;let J=F,S=0;for(let M=3;M>=0;--M)if(M!==h){const K=J&s,p=J>>>9&1;J=J>>>10,y[M]=o*(K/s),y[M]=p===0?y[M]:-y[M],S+=y[M]*y[M]}const N=1-S;y[h]=Math.sqrt(Math.max(N,0)),C==null||C(G,y[0],y[1],y[2],y[3])}}else{const o=await this.reader.read(this.numSplats*3);for(let w=0;w=1){const o=new Float32Array(9),w=this.shDegree>=2?new Float32Array(5*3):void 0,G=this.shDegree>=3?new Float32Array(7*3):void 0,R=await this.reader.read(this.numSplats*hQ[this.shDegree]*3);let y=0;for(let k=0;k=1?9:0)+(I>=2?15:0)+(I>=3?21:0),E=16+A*C;this.buffer=new ArrayBuffer(E),this.view=new DataView(this.buffer),this.view.setUint32(0,qB,!0),this.view.setUint32(4,dB,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?xB:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<>8&255),this.view.setUint8(y+2,E>>16&255),this.view.setUint8(y+3,i&255),this.view.setUint8(y+4,i>>8&255),this.view.setUint8(y+5,i>>16&255),this.view.setUint8(y+6,w&255),this.view.setUint8(y+7,w>>8&255),this.view.setUint8(y+8,w>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/(SQ/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const C=16+this.numSplats*10+A*3;this.view.setUint8(C,eA.scaleRgb(I)),this.view.setUint8(C+1,eA.scaleRgb(g)),this.view.setUint8(C+2,eA.scaleRgb(B))}setScale(A,I,g,B){const C=16+this.numSplats*13+A*3;this.view.setUint8(C,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(C+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(C+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,...I){const g=16+this.numSplats*16+A*4,B=CB(I);let C=0;for(let i=1;i<4;++i)Math.abs(B[i])>Math.abs(B[C])&&(C=i);const E=B[C]<0?1:0;let D=C;for(let i=0;i<4;++i)if(i!==C){const o=(B[i]<0?1:0)^E,w=Math.floor(511*(Math.abs(B[i])/Math.SQRT1_2)+.5);D=D<<10|o<<9|w}this.view.setUint8(g,D&255),this.view.setUint8(g+1,D>>8&255),this.view.setUint8(g+2,D>>16&255),this.view.setUint8(g+3,D>>>24&255)}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,C=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,C))}setSh(A,I,g,B){const C=hQ[this.shDegree]||0,E=16+this.numSplats*20+A*C*3;for(let D=0;D<9;++D)this.view.setUint8(E+D,eA.quantizeSh(I[D],5));if(g){const D=E+9;for(let i=0;i<15;++i)this.view.setUint8(D+i,eA.quantizeSh(g[i],4));if(B){const i=D+15;for(let o=0;o<21;++o)this.view.setUint8(i+o,eA.quantizeSh(B[o],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(E){E.enqueue(A),E.close()}}).pipeThrough(new CompressionStream("gzip")),C=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",C.byteLength,"bytes"),new Uint8Array(C)}}async function rB(Q){var w,G,R;const A=new eB,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:C=12,opacityThreshold:E}=Q;for(const y of I){let k=function(c){return c.multiplyScalar(S),c.applyQuaternion(N),c.add(M),c},F=function(c){return c.multiplyScalar(S),c},s=function(c){return c.premultiply(N),c},h=function(c){return!K||K.containsPoint(c)},J=function(c){return E!==void 0?c>=E:!0};const S=((w=y.transform)==null?void 0:w.scale)??1,N=new nA().fromArray(((G=y.transform)==null?void 0:G.quaternion)??[0,0,0,1]),M=new x().fromArray(((R=y.transform)==null?void 0:R.translate)??[0,0,0]),K=g?new zg(new x().fromArray(g.min),new x().fromArray(g.max)):void 0;let p=y.fileType;switch(p||(p=nB(y.fileBytes),!p&&y.pathOrUrl&&(p=fB(y.pathOrUrl))),p){case wA.PLY:{const c=new fI({fileBytes:y.fileBytes});await c.parseHeader();let U=null;c.parseSplats((r,a,H,q,t,Y,n,T,W,X,z,j,u,O,V)=>{const b=k(new x(a,H,q));if(h(b)&&J(j)){U=A.pushSplat(),A.setCenter(U,b.x,b.y,b.z);const e=F(new x(t,Y,n));A.setScale(U,e.x,e.y,e.z);const d=s(new nA(T,W,X,z));A.setQuaternion(U,d.x,d.y,d.z,d.w),A.setOpacity(U,j),A.setColor(U,u,O,V)}else U=null},(r,a,H,q)=>{a&&U!==null&&A.setSh1(U,a),H&&U!==null&&A.setSh2(U,H),q&&U!==null&&A.setSh3(U,q)});break}case wA.SPZ:{const c=new FQ({fileBytes:y.fileBytes});await c.parseHeader();const U=new Int32Array(c.numSplats);U.fill(-1);const r=new Float32Array(c.numSplats*3),a=new x;c.parseSplats((H,q,t,Y)=>{const n=k(new x(q,t,Y));r[H*3]=n.x,r[H*3+1]=n.y,r[H*3+2]=n.z},(H,q)=>{a.fromArray(r,H*3),h(a)&&J(q)&&(U[H]=A.pushSplat(),A.setCenter(U[H],a.x,a.y,a.z),A.setOpacity(U[H],q))},(H,q,t,Y)=>{U[H]>=0&&A.setColor(U[H],q,t,Y)},(H,q,t,Y)=>{if(U[H]>=0){const n=F(new x(q,t,Y));A.setScale(U[H],n.x,n.y,n.z)}},(H,q,t,Y,n)=>{if(U[H]>=0){const T=s(new nA(q,t,Y,n));A.setQuaternion(U[H],T.x,T.y,T.z,T.w)}},(H,q,t,Y)=>{U[H]>=0&&(A.setSh1(U[H],q),t&&A.setSh2(U[H],t),Y&&A.setSh3(U[H],Y))});break}case wA.SPLAT:oQ(y.fileBytes,c=>{},(c,U,r,a,H,q,t,Y,n,T,W,X,z,j,u)=>{const O=k(new x(U,r,a));if(h(O)&&J(X)){const V=A.pushSplat();A.setCenter(V,O.x,O.y,O.z);const b=F(new x(H,q,t));A.setScale(V,b.x,b.y,b.z);const e=s(new nA(Y,n,T,W));A.setQuaternion(V,e.x,e.y,e.z,e.w),A.setOpacity(V,X),A.setColor(V,z,j,u)}});break;case wA.KSPLAT:{let c=null;NB(y.fileBytes,U=>{},(U,r,a,H,q,t,Y,n,T,W,X,z,j,u,O)=>{const V=k(new x(r,a,H));if(h(V)&&J(z)){c=A.pushSplat(),A.setCenter(c,V.x,V.y,V.z);const b=F(new x(q,t,Y));A.setScale(c,b.x,b.y,b.z);const e=s(new nA(n,T,W,X));A.setQuaternion(c,e.x,e.y,e.z,e.w),A.setOpacity(c,z),A.setColor(c,j,u,O)}else c=null},(U,r,a,H)=>{c!==null&&(A.setSh1(c,r),a&&A.setSh2(c,a),H&&A.setSh3(c,H))});break}default:throw new Error(`transcodeSpz not implemented for ${p}`)}}const D=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),i=new eA({numSplats:A.numSplats,shDegree:D,fractionalBits:C,flagAntiAlias:!0});for(let y=0;y=1&&i.setSh(y,A.sh1.slice(y*9,(y+1)*9),D>=2&&A.sh2?A.sh2.slice(y*15,(y+1)*15):void 0,D>=3&&A.sh3?A.sh3.slice(y*21,(y+1)*21):void 0)}return{fileBytes:await i.finalize(),clippedCount:i.clippedCount}}function nB(Q){const I=new DataView(Q.buffer).getUint32(0,!0);if((I&16777215)===7957616)return wA.PLY;if((I&16777215)===559903){const g=hB(Q,4);return new DataView(g.buffer).getUint32(0,!0)===1347635022?wA.SPZ:void 0}if(I===67324752)return sQ(Q)?wA.PCSOGSZIP:void 0;if(I===809779538)return wA.RAD}function PB(Q){const A=Q.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function fB(Q){const A=PB(Q);if(A==="ply")return wA.PLY;if(A==="spz")return wA.SPZ;if(A==="splat")return wA.SPLAT;if(A==="ksplat")return wA.KSPLAT;if(A==="sog")return wA.PCSOGSZIP;if(A==="rad")return wA.RAD}function pB(Q){try{let A;if(typeof Q=="string")A=Q;else{const B=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;if(B.length>65536)return;A=new TextDecoder().decode(B)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;const g=I.version===2;for(const B of["means","scales","quats","sh0"]){if(!I[B]||typeof I[B]!="object"||Array.isArray(I[B]))return;if(g){if(!I[B].files||(B==="scales"||B==="sh0")&&!I[B].codebook||B==="means"&&(!I[B].mins||!I[B].maxs))return}else if(!I[B].shape||!I[B].files||B!=="quats"&&(!I[B].mins||!I[B].maxs))return}return I}catch{return}}function sQ(Q){try{const A=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let I=null;const g=vQ(A,{filter:({name:C})=>C.split(/[\\\\/]/).pop()==="meta.json"?(I=C,!0):!1});if(!I)return;const B=pB(g[I]);return B?{name:I,json:B}:void 0}catch{return}}class eB{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=kB(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),C=new Float32Array(I*4),E=new Float32Array(I),D=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),C.set(this.quaternions),E.set(this.opacities),D.set(this.colors),this.centers=g,this.scales=B,this.quaternions=C,this.opacities=E,this.colors=D,this.sh1){const i=new Float32Array(I*9);i.set(this.sh1),this.sh1=i}if(this.sh2){const i=new Float32Array(I*15);i.set(this.sh2),this.sh2=i}if(this.sh3){const i=new Float32Array(I*21);i.set(this.sh3),this.sh3=i}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,C){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=C}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}async function NQ(Q,A,I){const g="version"in Q;if(!g&&Q.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const B=g?Q.count:Q.means.shape[0],C=qI(B),E=new Uint32Array(C*4),D={},i=Promise.all([kI(A[Q.means.files[0]]),kI(A[Q.means.files[1]])]).then(y=>{for(let k=0;k{let k,F,s;g?k=F=s=Q.scales.codebook.map(h=>Math.exp(h)):(k=new Array(256).fill(0).map((h,J)=>Q.scales.mins[0]+(Q.scales.maxs[0]-Q.scales.mins[0])*(J/255)).map(h=>Math.exp(h)),F=new Array(256).fill(0).map((h,J)=>Q.scales.mins[1]+(Q.scales.maxs[1]-Q.scales.mins[1])*(J/255)).map(h=>Math.exp(h)),s=new Array(256).fill(0).map((h,J)=>Q.scales.mins[2]+(Q.scales.maxs[2]-Q.scales.mins[2])*(J/255)).map(h=>Math.exp(h)));for(let h=0;h{const k=Math.sqrt(2),F=new Array(256).fill(0).map((s,h)=>(h/255-.5)*k);for(let s=0;s{const k=.28209479177387814;let F,s,h,J;g?(F=s=h=Q.sh0.codebook.map(S=>k*S+.5),J=new Array(256).fill(0).map((S,N)=>N/255)):(F=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[0]+(Q.sh0.maxs[0]-Q.sh0.mins[0])*(N/255)).map(S=>k*S+.5),s=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[1]+(Q.sh0.maxs[1]-Q.sh0.mins[1])*(N/255)).map(S=>k*S+.5),h=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[2]+(Q.sh0.maxs[2]-Q.sh0.mins[2])*(N/255)).map(S=>k*S+.5),J=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[3]+(Q.sh0.maxs[3]-Q.sh0.mins[3])*(N/255)).map(S=>1/(1+Math.exp(-S))));for(let S=0;S=3:Q.shN.shape[1]>=45,k=g?Q.shN.bands>=2:Q.shN.shape[1]>=24,F=g?Q.shN.bands>=1:Q.shN.shape[1]>=9;F&&(D.sh1=new Uint32Array(B*2)),k&&(D.sh2=new Uint32Array(B*4)),y&&(D.sh3=new Uint32Array(B*4));const s=new Float32Array(9),h=new Float32Array(15),J=new Float32Array(21),S=Q.shN,N=Promise.all([Gg(A[Q.shN.files[0]]),Gg(A[Q.shN.files[1]])]).then(([M,K])=>{const p="codebook"in S?S.codebook:new Array(256).fill(0).map((c,U)=>S.mins+(S.maxs-S.mins)*(U/255));for(let c=0;c>>6)*M.width+a;for(let t=0;t<3;++t){if(F)for(let Y=0;Y<3;++Y)s[Y*3+t]=p[M.rgba[(q+Y)*4+t]];if(k)for(let Y=0;Y<5;++Y)h[Y*3+t]=p[M.rgba[(q+3+Y)*4+t]];if(y)for(let Y=0;Y<7;++Y)J[Y*3+t]=p[M.rgba[(q+8+Y)*4+t]]}F&&xI(D.sh1,c,s,I),k&&rI(D.sh2,c,h,I),y&&nI(D.sh3,c,J,I)}});R.push(N)}return await Promise.all(R),{packedArray:E,numSplats:B,extra:D}}let bI=null;async function Gg(Q){if(!bI&&(bI=new OffscreenCanvas(1,1).getContext("webgl2"),!bI))throw new Error("Failed to create WebGL2 context");const A=new Blob([Q]),I=await createImageBitmap(A,{premultiplyAlpha:"none"}),g=bI,B=g.createTexture();g.bindTexture(g.TEXTURE_2D,B),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,!0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,I),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST);const C=g.createFramebuffer();g.bindFramebuffer(g.FRAMEBUFFER,C),g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.TEXTURE_2D,B,0);const E=new Uint8Array(I.width*I.height*4);return g.readPixels(0,0,I.width,I.height,g.RGBA,g.UNSIGNED_BYTE,E),g.deleteTexture(B),g.deleteFramebuffer(C),{rgba:E,width:I.width,height:I.height}}async function kI(Q){const{rgba:A}=await Gg(Q);return A}async function bB(Q,A){var R;const I=sQ(Q);if(!I)throw new Error("Invalid PC SOGS zip file");const{name:g,json:B}=I,C=g.lastIndexOf("/"),E=g.lastIndexOf("\\\\"),D=g.slice(0,Math.max(C,E)+1),i=new Map,o=[...B.means.files,...B.scales.files,...B.quats.files,...B.sh0.files,...((R=B.shN)==null?void 0:R.files)??[]];for(const y of o)i.set(D+y,y);const w=await new Promise((y,k)=>{zQ(Q,{filter:({name:F})=>i.has(F)},(F,s)=>{F?k(F):y(s)})}),G={};for(const[y,k]of i.entries())G[k]=w[y];return await NQ(B,G,A)}async function JQ(Q){const{name:A,args:I,id:g}=Q.data;let B,C;try{switch(A){case"unpackPly":{const{packedArray:E,fileBytes:D,splatEncoding:i}=I,o=await lB({packedArray:E,fileBytes:D,splatEncoding:i});B={id:g,numSplats:o.numSplats,packedArray:o.packedArray,extra:o.extra};break}case"decodeSpz":{const{fileBytes:E,splatEncoding:D}=I,i=await OB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodeAntiSplat":{const{fileBytes:E,splatEncoding:D}=I,i=sB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray};break}case"decodeKsplat":{const{fileBytes:E,splatEncoding:D}=I,i=JB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodePcSogs":{const{fileBytes:E,extraFiles:D,splatEncoding:i}=I,o=JSON.parse(new TextDecoder().decode(E)),w=await NQ(o,D,i);B={id:g,numSplats:w.numSplats,packedArray:w.packedArray,extra:w.extra};break}case"decodePcSogsZip":{const{fileBytes:E,splatEncoding:D}=I,i=await bB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"sortSplats":{const{totalSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,...ZB({totalSplats:E,readback:D,ordering:i})};break}case"sortDoubleSplats":{const{numSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,ordering:i,activeSplats:cQ(E,D,i)};break}case"sort32Splats":{const{numSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,ordering:i,activeSplats:UQ(E,D,i)};break}case"transcodeSpz":{const E=I,D=await rB(E);B={id:g,fileBytes:D,input:E};break}default:throw new Error(`Unknown name: ${A}`)}}catch(E){C=E,console.error(C)}self.postMessage({id:g,result:B,error:C},{transfer:GB(B)})}async function lB({packedArray:Q,fileBytes:A,splatEncoding:I}){const g=new fI({fileBytes:A});await g.parseHeader();const B=g.numSplats,C={};return g.parseSplats((E,D,i,o,w,G,R,y,k,F,s,h,J,S,N)=>{Dg(Q,E,D,i,o,w,G,R,y,k,F,s,h,J,S,N,I)},(E,D,i,o)=>{D&&(C.sh1||(C.sh1=new Uint32Array(B*2)),xI(C.sh1,E,D,I)),i&&(C.sh2||(C.sh2=new Uint32Array(B*4)),rI(C.sh2,E,i,I)),o&&(C.sh3||(C.sh3=new Uint32Array(B*4)),nI(C.sh3,E,o,I))}),{packedArray:Q,numSplats:B,extra:C}}async function OB(Q,A){const I=new FQ({fileBytes:Q});await I.parseHeader();const g=I.numSplats,B=qI(g),C=new Uint32Array(B*4),E={};let D={};if(I.flagLod){const i=new Uint16Array(g),o=new Uint32Array(g);E.childCounts=i,E.childStarts=o,D={childCounts:(w,G)=>{i[w]=G},childStarts:(w,G)=>{o[w]=G}}}return await I.parseSplats((i,o,w,G)=>{CQ(C,i,o,w,G)},(i,o)=>{RB(C,i,o)},(i,o,w,G)=>{yB(C,i,o,w,G,A)},(i,o,w,G)=>{EQ(C,i,o,w,G,A)},(i,o,w,G,R)=>{iQ(C,i,o,w,G,R)},(i,o,w,G)=>{o&&(E.sh1||(E.sh1=new Uint32Array(g*2)),xI(E.sh1,i,o,A)),w&&(E.sh2||(E.sh2=new Uint32Array(g*4)),rI(E.sh2,i,w,A)),G&&(E.sh3||(E.sh3=new Uint32Array(g*4)),nI(E.sh3,i,G,A))},D),{packedArray:C,numSplats:g,extra:E}}const og=31744,lI=og+1;let YA=null;function ZB({totalSplats:Q,readback:A,ordering:I}){YA||(YA=new Uint32Array(lI)),YA.fill(0);const g=A.map(i=>new Uint32Array(i.buffer)),B=g[0].length,C=Math.ceil(Q/B);let E=0;for(let i=0;i{(self.URL||self.webkitURL).revokeObjectURL(A)}),I}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(zB),{name:Q==null?void 0:Q.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}var eA=Uint8Array,WI=Uint16Array,eo=Int32Array,_B=new eA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),$B=new eA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ro=new eA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),AC=function(Q,A){for(var I=new WI(31),g=0;g<31;++g)I[g]=A+=1<>1|(hA&21845)<<1;MI=(MI&52428)>>2|(MI&13107)<<2,MI=(MI&61680)>>4|(MI&3855)<<4,xQ[hA]=((MI&65280)>>8|(MI&255)<<8)>>1}var hg=function(Q,A,I){for(var g=Q.length,B=0,C=new WI(A);B>i]=w}else for(D=new WI(g),B=0;B>15-Q[B]);return D},Kg=new eA(288);for(var hA=0;hA<144;++hA)Kg[hA]=8;for(var hA=144;hA<256;++hA)Kg[hA]=9;for(var hA=256;hA<280;++hA)Kg[hA]=7;for(var hA=280;hA<288;++hA)Kg[hA]=8;var QC=new eA(32);for(var hA=0;hA<32;++hA)QC[hA]=5;var lo=hg(Kg,9,1),po=hg(QC,5,1),tQ=function(Q){for(var A=Q[0],I=1;IA&&(A=Q[I]);return A},gI=function(Q,A,I){var g=A/8|0;return(Q[g]|Q[g+1]<<8)>>(A&7)&I},HQ=function(Q,A){var I=A/8|0;return(Q[I]|Q[I+1]<<8|Q[I+2]<<16)>>(A&7)},BC=function(Q){return(Q+7)/8|0},zI=function(Q,A,I){return(A==null||A<0)&&(A=0),(I==null||I>Q.length)&&(I=Q.length),new eA(Q.subarray(A,I))},fo=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],uA=function(Q,A,I){var g=new Error(A||fo[Q]);if(g.code=Q,Error.captureStackTrace&&Error.captureStackTrace(g,uA),!I)throw g;return g},CC=function(Q,A,I,g){var B=Q.length,C=g?g.length:0;if(!B||A.f&&!A.l)return I||new eA(0);var E=!I,D=E||A.i!=2,i=A.i;E&&(I=new eA(B*3));var w=function(NA){var wA=I.length;if(NA>wA){var GA=new eA(Math.max(wA*2,NA));GA.set(I),I=GA}},s=A.f||0,o=A.p||0,y=A.b||0,h=A.l,k=A.d,R=A.m,F=A.n,a=B*8;do{if(!h){s=gI(Q,o,1);var S=gI(Q,o+1,3);if(o+=3,S)if(S==1)h=lo,k=po,R=9,F=5;else if(S==2){var U=gI(Q,o,31)+257,J=gI(Q,o+10,15)+4,t=U+gI(Q,o+5,31)+1;o+=14;for(var H=new eA(t),K=new eA(19),Y=0;Y>4;if(M<16)H[Y++]=M;else{var p=0,m=0;for(M==16?(m=3+gI(Q,o,3),o+=2,p=H[Y-1]):M==17?(m=3+gI(Q,o,7),o+=3):M==18&&(m=11+gI(Q,o,127),o+=7);m--;)H[Y++]=p}}var IA=H.subarray(0,U),X=H.subarray(U);R=tQ(IA),F=tQ(X),h=hg(IA,R,1),k=hg(X,F,1)}else uA(1);else{var M=BC(o)+4,c=Q[M-4]|Q[M-3]<<8,N=M+c;if(N>B){i&&uA(0);break}D&&w(y+c),I.set(Q.subarray(M,N),y),A.b=y+=c,A.p=o=N*8,A.f=s;continue}if(o>a){i&&uA(0);break}}D&&w(y+131072);for(var EA=(1<>4;if(o+=p&15,o>a){i&&uA(0);break}if(p||uA(2),W<256)I[y++]=W;else if(W==256){gA=o,h=null;break}else{var u=W-254;if(W>264){var Y=W-257,b=_B[Y];u=gI(Q,o,(1<>4;T||uA(3),o+=T&15;var X=xo[f];if(f>3){var b=$B[f];X+=HQ(Q,o)&(1<a){i&&uA(0);break}D&&w(y+131072);var aA=y+u;if(y>>0},LQ=function(Q,A){return QI(Q,A)+QI(Q,A+4)*4294967296},Po=function(Q){(Q[0]!=31||Q[1]!=139||Q[2]!=8)&&uA(6,"invalid gzip data");var A=Q[3],I=10;A&4&&(I+=(Q[10]|Q[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!Q[I++]);return I+(A&2)},YQ=function(){function Q(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new eA(32768),this.p=new eA(0),g&&this.o.set(g)}return Q.prototype.e=function(A){if(this.ondata||uA(5),this.d&&uA(4),!this.p.length)this.p=A;else if(A.length){var I=new eA(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},Q.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=CC(this.p,this.s,this.o);this.ondata(zI(g,I,this.s.b),this.d),this.o=zI(g,this.s.b-32768),this.s.b=this.o.length,this.p=zI(this.p,this.s.p/8|0),this.s.p&=7},Q.prototype.push=function(A,I){this.e(A),this.c(I)},Q}();function uo(Q,A){return CC(Q,{i:2},A&&A.out,A&&A.dictionary)}var To=function(){function Q(A,I){this.v=1,this.r=0,YQ.call(this,A,I)}return Q.prototype.push=function(A,I){if(YQ.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?Po(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}YQ.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=BC(this.s.p)+9,this.s={i:0},this.o=new eA(0),this.push(new eA(0),I))},Q}(),lQ=typeof TextDecoder<"u"&&new TextDecoder,Oo=0;try{lQ.decode(bo,{stream:!0}),Oo=1}catch{}var mo=function(Q){for(var A="",I=0;;){var g=Q[I++],B=(g>127)+(g>223)+(g>239);if(I+B>Q.length)return{s:A,r:zI(Q,I-1)};B?B==3?(g=((g&15)<<18|(Q[I++]&63)<<12|(Q[I++]&63)<<6|Q[I++]&63)-65536,A+=String.fromCharCode(55296|g>>10,56320|g&1023)):B&1?A+=String.fromCharCode((g&31)<<6|Q[I++]&63):A+=String.fromCharCode((g&15)<<12|(Q[I++]&63)<<6|Q[I++]&63):A+=String.fromCharCode(g)}};function Zo(Q,A){if(A){for(var I="",g=0;g65558)&&uA(13);var B=GI(Q,g+8);if(!B)return{};var C=QI(Q,g+16),E=C==4294967295||B==65535;if(E){var D=QI(Q,g-12);E=QI(Q,D)==101075792,E&&(B=QI(Q,D+32),C=QI(Q,D+48))}for(var i=A&&A.filter,w=0;w(Q.PLY="ply",Q.SPZ="spz",Q.SPLAT="splat",Q.KSPLAT="ksplat",Q.PCSOGS="pcsogs",Q.PCSOGSZIP="pcsogszip",Q.RAD="rad",Q))(yA||{});const eg={rgbMin:0,rgbMax:1,lnScaleMin:fA,lnScaleMax:bA,sh1Max:1,sh2Max:1,sh3Max:1,lodOpacity:!1},Bs=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_SPLAT_ENCODING:eg,LN_SCALE_MAX:bA,LN_SCALE_MIN:fA,LN_SCALE_ZERO:EC,SCALE_MAX:zo,SCALE_MIN:vo,SCALE_ZERO:pI,SPLAT_TEX_DEPTH:iC,SPLAT_TEX_DEPTH_BITS:DC,SPLAT_TEX_DEPTH_MASK:Is,SPLAT_TEX_HEIGHT:WA,SPLAT_TEX_HEIGHT_BITS:gB,SPLAT_TEX_HEIGHT_MASK:As,SPLAT_TEX_LAYER_BITS:_o,SPLAT_TEX_MIN_HEIGHT:QB,SPLAT_TEX_WIDTH:P,SPLAT_TEX_WIDTH_BITS:IB,SPLAT_TEX_WIDTH_MASK:$o,SplatFileType:yA,USE_COMPILED_PARSER_FUNCTION:Qs,WASM_SPLAT_SORT:gs},Symbol.toStringTag,{value:"Module"}));function OI(Q){return Q==="bool"||Q==="bvec2"||Q==="bvec3"||Q==="bvec4"}function mI(Q){return Q==="int"||Q==="uint"||Q==="float"}function lA(Q){return Q==="int"||Q==="ivec2"||Q==="ivec3"||Q==="ivec4"}function pA(Q){return Q==="uint"||Q==="uvec2"||Q==="uvec3"||Q==="uvec4"}function rg(Q){return Q==="float"||Q==="vec2"||Q==="vec3"||Q==="vec4"}function wC(Q){return Q==="mat2"||Q==="mat2x2"||Q==="mat2x3"||Q==="mat2x4"||Q==="mat3"||Q==="mat3x2"||Q==="mat3x3"||Q==="mat3x4"||Q==="mat4"||Q==="mat4x2"||Q==="mat4x3"||Q==="mat4x4"}function LI(Q){return rg(Q)||wC(Q)}function Bg(Q){return Q==="vec2"||Q==="ivec2"||Q==="uvec2"}function Cg(Q){return Q==="vec3"||Q==="ivec3"||Q==="uvec3"}function ng(Q){return Q==="vec4"||Q==="ivec4"||Q==="uvec4"}function Cs(Q){return Bg(Q)||Cg(Q)||ng(Q)}function rI(Q){return Q==="mat2"||Q==="mat2x2"}function nI(Q){return Q==="mat3"||Q==="mat3x3"}function dI(Q){return Q==="mat4"||Q==="mat4x4"}function oC(Q){switch(Q){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${Q}`)}}function sC(Q){switch(Q){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${Q}`)}}function Es(Q){if(mI(Q))return"float";if(Bg(Q))return"vec2";if(Cg(Q))return"vec3";if(ng(Q))return"vec4";throw new Error(`Invalid vector type: ${Q}`)}function GC(Q){if(mI(Q))return"uint";if(Bg(Q))return"uvec2";if(Cg(Q))return"uvec3";if(ng(Q))return"uvec4";throw new Error(`Invalid vector type: ${Q}`)}function Ds(Q){if(mI(Q))return"int";if(Bg(Q))return"ivec2";if(Cg(Q))return"ivec3";if(ng(Q))return"ivec4";throw new Error(`Invalid vector type: ${Q}`)}function yC(Q){if(typeof Q=="string")return Q;if(typeof Q=="object"&&Q.type)return Q.type;throw new Error(`Invalid DynoType: ${String(Q)}`)}function JA(Q){return Math.trunc(Q).toString()}function UA(Q){return`${Math.max(0,Math.trunc(Q)).toString()}u`}function AA(Q){return Q===Number.POSITIVE_INFINITY?"INFINITY":Q===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(Q)?Q.toFixed(1):Q.toString()}function CA(Q){return Q instanceof HI?Q.type:Q.dynoOut().type}class HI{constructor(A){this.__isDynoValue=!0,this.type=A}}class V extends HI{constructor(A,I){super(A.outTypes[I]),this.dyno=A,this.key=I}}class _I extends HI{constructor(A,I){super(A),this.literal=I}getLiteral(){return this.literal}}function Wg(Q,A){return new _I(Q,A)}class hC extends _I{constructor(A,I){super(A,""),this.value=I}getLiteral(){const{type:A,value:I}=this;switch(A){case"bool":return I?"true":"false";case"uint":return UA(I);case"int":return JA(I);case"float":return AA(I);case"bvec2":{const g=I;return`bvec2(${g[0]}, ${g[1]})`}case"uvec2":{if(I instanceof G.Vector2)return`uvec2(${UA(I.x)}, ${UA(I.y)})`;const g=I;return`uvec2(${UA(g[0])}, ${UA(g[1])})`}case"ivec2":{if(I instanceof G.Vector2)return`ivec2(${JA(I.x)}, ${JA(I.y)})`;const g=I;return`ivec2(${JA(g[0])}, ${JA(g[1])})`}case"vec2":{if(I instanceof G.Vector2)return`vec2(${AA(I.x)}, ${AA(I.y)})`;const g=I;return`vec2(${AA(g[0])}, ${AA(g[1])})`}case"bvec3":{const g=I;return`bvec3(${g[0]}, ${g[1]}, ${g[2]})`}case"uvec3":{if(I instanceof G.Vector3)return`uvec3(${UA(I.x)}, ${UA(I.y)}, ${UA(I.z)})`;const g=I;return`uvec3(${UA(g[0])}, ${UA(g[1])}, ${UA(g[2])})`}case"ivec3":{if(I instanceof G.Vector3)return`ivec3(${JA(I.x)}, ${JA(I.y)}, ${JA(I.z)})`;const g=I;return`ivec3(${JA(g[0])}, ${JA(g[1])}, ${JA(g[2])})`}case"vec3":{if(I instanceof G.Vector3)return`vec3(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)})`;const g=I;return`vec3(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])})`}case"bvec4":{const g=I;return`bvec4(${g[0]}, ${g[1]}, ${g[2]}, ${g[3]})`}case"uvec4":{if(I instanceof G.Vector4)return`uvec4(${UA(I.x)}, ${UA(I.y)}, ${UA(I.z)}, ${UA(I.w)})`;const g=I;return`uvec4(${UA(g[0])}, ${UA(g[1])}, ${UA(g[2])}, ${UA(g[3])})`}case"ivec4":{if(I instanceof G.Vector4)return`ivec4(${JA(I.x)}, ${JA(I.y)}, ${JA(I.z)}, ${JA(I.w)})`;const g=I;return`ivec4(${JA(g[0])}, ${JA(g[1])}, ${JA(g[2])}, ${JA(g[3])})`}case"vec4":{if(I instanceof G.Vector4)return`vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`;if(I instanceof G.Quaternion)return`vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`;const g=I;return`vec4(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])}, ${AA(g[3])})`}case"mat2":case"mat2x2":{const g=I,B=g instanceof G.Matrix2?g.elements:I,C=new Array(4).fill(0).map((E,D)=>AA(B[D]));return`${A}(${C.join(", ")})`}case"mat2x3":{const g=I,B=new Array(6).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat2x4":{const g=I,B=new Array(8).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat3":case"mat3x3":{const g=I,B=g instanceof G.Matrix3?g.elements:I,C=new Array(9).fill(0).map((E,D)=>AA(B[D]));return`${A}(${C.join(", ")})`}case"mat3x2":{const g=I,B=new Array(6).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat3x4":{const g=I,B=new Array(12).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat4":case"mat4x4":{const g=I,B=g instanceof G.Matrix4?g.elements:I,C=new Array(16).fill(0).map((E,D)=>AA(B[D]));return`${A}(${C.join(", ")})`}case"mat4x2":{const g=I,B=new Array(8).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat4x3":{const g=I,B=new Array(12).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function v(Q,A){return new hC(Q,A)}function wg(Q){const A=String(Q);if(OI(Q))return`${A}(false)`;if(LI(Q))return`${A}(0.0)`;if(lA(Q))return`${A}(0)`;if(pA(Q))return`${A}(0u)`;throw new Error(`Type not implemented: ${A}`)}function is(Q){const A=String(Q);if(OI(Q))return`${A}(true)`;if(LI(Q))return`${A}(1.0)`;if(lA(Q))return`${A}(1)`;if(pA(Q))return`${A}(1u)`;throw new Error(`Type not implemented: ${A}`)}function ws(Q){const A=String(Q);if(OI(Q))return`${A}(true)`;if(LI(Q))return`${A}(-1.0)`;if(lA(Q))return`${A}(-1)`;if(pA(Q))return`${A}(0xFFFFFFFFu)`;throw new Error(`Type not implemented: ${A}`)}const qB=" ";class RC{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=qB,this.indent=A??qB}nextSequence(){return this.sequence++}}class d{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,statements:E,generate:D}){this.inTypes=A??{},this.outTypes=I??{},this.inputs=g??{},this.update=B,this.globals=C,this.statements=E,this.generate=D??(({inputs:i,outputs:w,compile:s})=>{var o,y;return{globals:(o=this.globals)==null?void 0:o.call(this,{inputs:i,outputs:w,compile:s}),statements:(y=this.statements)==null?void 0:y.call(this,{inputs:i,outputs:w,compile:s})}})}get outputs(){const A={};for(const I in this.outTypes)A[I]=new V(this,I);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:I,compile:g}){const B=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})`],C=[];for(const w in I){const s=I[w];s&&!g.declares.has(s)&&(g.declares.add(s),C.push(w))}const{globals:E,statements:D,uniforms:i}=this.generate({inputs:A,outputs:I,compile:g});for(const w of E??[])g.globals.add(w);for(const w in i)g.uniforms[w]=i[w];this.update&&g.updaters.push(this.update);for(const w of C){const s=I[w];s&&(g.uniforms[s]||B.push(`${BB(s,this.outTypes[w])};`))}return D!=null&&D.length&&(B.push("{"),B.push(...D.map(w=>g.indent+w)),B.push("}")),B}}class hI extends d{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,construct:E}){super({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,generate:D=>this.generateBlock(D)}),this.construct=E}generateBlock({inputs:A,outputs:I,compile:g}){var k,R;const B={},C={};for(const F in A)A[F]!=null&&(B[F]=new _I(this.inTypes[F],A[F]));for(const F in I)I[F]!=null&&(C[F]=new HI(this.outTypes[F]));const E={roots:[]},D=this.construct(B,C,E);for(const F of((k=this.globals)==null?void 0:k.call(this,{inputs:A,outputs:I,compile:g}))??[])g.globals.add(F);const i=[],w=new Map;function s(F,a,S){let M=w.get(F);if(!M){M={sequence:g.nextSequence(),outNames:new Map,newOuts:new Set},w.set(F,M);for(const c in F.inputs){let N=F.inputs[c];for(;N;){if(N instanceof HI){N instanceof V&&s(N.dyno,N.key);break}if(typeof N.dynoOut!="function")throw new Error(`dynoOut is not a function for ${N.constructor.name}`);N=N.dynoOut()}}i.push(F)}a&&(S||M.newOuts.add(a),M.outNames.set(a,S??`${a}_${M.sequence}`))}for(const F of E.roots)s(F);for(const F in C){let a=(D==null?void 0:D[F])??C[F];for(;a;){if(a instanceof HI){a instanceof V&&s(a.dyno,a.key,I[F]);break}a=a.dynoOut()}C[F]=a}const o=[];for(const F of i){const a={},S={};for(const N in F.inputs){let U=F.inputs[N];for(;U;){if(U instanceof HI){if(U instanceof _I)a[N]=U.getLiteral();else if(U instanceof V){const J=(R=w.get(U.dyno))==null?void 0:R.outNames.get(U.key);if(!J)throw new Error(`Source not found for ${U.dyno.constructor.name}.${U.key}`);a[N]=J}break}U=U.dynoOut()}}const M=w.get(F)??{outNames:new Map};for(const[N,U]of M.outNames.entries())S[N]=U;const c=F.compile({inputs:a,outputs:S,compile:g});o.push(c)}const y=[];for(const F in I)C[F]instanceof _I&&y.push(`${I[F]} = ${C[F].getLiteral()};`);return y.length>0&&o.push(y),{statements:o.flatMap((F,a)=>a===0?F:["",...F])}}}function cA(Q,A,I,{update:g,globals:B}={}){return new hI({inTypes:Q,outTypes:A,construct:I,update:g,globals:B})}function EQ({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E}){return new d({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E})}function BB(Q,A,I){const g=typeof A=="string"?A:A.type;if(!g)throw new Error(`Invalid DynoType: ${String(A)}`);return`${g} ${Q}${I!=null?`[${I}]`:""}`}function z(Q){var C;let A=!1;const I=Q.split(` -`).map(E=>{const D=E.trimEnd();return A?D:D.length>0?(A=!0,D):null}).filter(E=>E!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(C=I[0].match(/^\s*/))==null?void 0:C[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(E=>E.replace(B,""))}function oA(Q){return z(Q).join(` -`)}class e extends d{constructor({a:A,outKey:I,outTypeFunc:g}){const B={a:CA(A)},C=g(CA(A)),E={[I]:C};super({inTypes:B,outTypes:E,inputs:{a:A}}),this.outKey=I}dynoOut(){return new V(this,this.outKey)}}class DA extends d{constructor({a:A,b:I,outKey:g,outTypeFunc:B}){const C={a:CA(A),b:CA(I)},E=B(CA(A),CA(I)),D={[g]:E};super({inTypes:C,outTypes:D,inputs:{a:A,b:I}}),this.outKey=g}dynoOut(){return new V(this,this.outKey)}}class ZI extends d{constructor({a:A,b:I,c:g,outKey:B,outTypeFunc:C}){const E={a:CA(A),b:CA(I),c:CA(g)},D=C(CA(A),CA(I),CA(g)),i={[B]:D};super({inTypes:E,outTypes:i,inputs:{a:A,b:I,c:g}}),this.outKey=B}dynoOut(){return new V(this,this.outKey)}}const kC=Number.parseInt(G.REVISION),FC=kC>=179,dg=new Float32Array(1),DQ=new Uint32Array(dg.buffer),CB="Float16Array"in globalThis,Rg=CB?new globalThis.Float16Array(1):null,aC=new Uint16Array(Rg==null?void 0:Rg.buffer);function SC(Q){const A=Math.sqrt(Q.reduce((I,g)=>I+g*g,0));return Q.map(I=>I/A)}function Tg(Q){return dg[0]=Q,DQ[0]}function Og(Q){return DQ[0]=Q,dg[0]}const TA=CB?os:ss,FA=CB?Gs:ys;function os(Q){return Rg[0]=Q,aC[0]}function ss(Q){dg[0]=Q;const A=DQ[0],I=A>>31&1,g=A>>23&255,B=A&8388607,C=I<<15;if(g===255)return B!==0?C|32767:C|31744;const E=g-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const i=(B|8388608)>>1-E+13;return C|i}const D=B>>13;return C|E<<10|D}function Gs(Q){return aC[0]=Q,Rg[0]}function ys(Q){const A=Q>>15&1,I=Q>>10&31,g=Q&1023;let B;if(I===0)if(g===0)B=A<<31;else{let C=g,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const D=E+127,i=C<<13;B=A<<31|D<<23|i}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=I-15+127,E=g<<13;B=A<<31|C<<23|E}return DQ[0]=B,dg[0]}function jA(Q){return Math.max(0,Math.min(255,Math.round(Q*255)))}function kg(Q){return Math.max(-127,Math.min(127,Math.round(Q*127)))}function NC(Q){return Q/255}function cC(Q){return Q/127}class hs{constructor({asyncFetch:A,dispose:I,maxItems:g=5}){this.asyncFetch=A,this.dispose=I,this.maxItems=g,this.items=[],this.pending=new Map}has(A){return this.items.some(I=>I.key===A)}getImmediate(A){const I=this.items.findIndex(g=>g.key===A);if(I>=0){const g=this.items.splice(I,1)[0];return this.items.push(g),g.data}}async getFetch(A){const I=this.getImmediate(A);if(I!==void 0)return I;let g=this.pending.get(A);return g||(g=this.asyncFetch(A).then(B=>{for(this.pending.delete(A),this.items.push({key:A,data:B});this.items.length>this.maxItems;){const C=this.items.shift();C&&this.dispose&&this.dispose(C.data)}return B}),this.pending.set(A,g),g)}}function Rs(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]);return Object.fromEntries(I)}function ks(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]).filter(([g,B])=>B!==void 0);return Object.fromEntries(I)}function EB(Q){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(Q),A}function pQ(Q,A){return new Array(Q).fill(null).map((I,g)=>A(g))}class MC{constructor({allocate:A,dispose:I,valid:g}){this.items=[],this.allocate=A,this.dispose=I,this.valid=g}alloc(A){for(;;){const I=this.items.pop();if(!I)break;if(this.valid(I,A))return I;this.dispose&&this.dispose(I)}return this.allocate(A)}free(A){this.items.push(A)}disposeAll(){let A;for(A=this.items.pop();A;)this.dispose&&this.dispose(A),A=this.items.pop()}}function fQ(Q,A,I,g,B,C,E,D,i,w,s,o,y,h,k,R){const F=A*4,[a,S]=Q;a[F]=Tg(I),a[F+1]=Tg(g),a[F+2]=Tg(B),a[F+3]=TA(y),S[F]=TA(h)|TA(k)<<16,S[F+1]=TA(R)|TA(Math.log(C))<<16,S[F+2]=TA(Math.log(E))|TA(Math.log(D))<<16,S[F+3]=dC(i,w,s,o)}function jg(Q,A){const I=DB,g=A*4,[B,C]=Q;return I.center.x=Og(B[g]),I.center.y=Og(B[g+1]),I.center.z=Og(B[g+2]),I.opacity=FA(B[g+3]&65535),I.color.r=FA(C[g]&65535),I.color.g=FA(C[g]>>>16),I.color.b=FA(C[g+1]&65535),I.scales.x=Math.exp(FA(C[g+1]>>>16)),I.scales.y=Math.exp(FA(C[g+2]&65535)),I.scales.z=Math.exp(FA(C[g+2]>>>16)),qC(C[g+3],I.quaternion),I}function vg(Q,A,I,g,B,C,E,D,i,w,s,o,y,h,k,R,F){const a=(F==null?void 0:F.rgbMin)??0,M=((F==null?void 0:F.rgbMax)??1)-a,c=jA((h-a)/M),N=jA((k-a)/M),U=jA((R-a)/M),J=jA(F!=null&&F.lodOpacity?.5*y:y),t=oB(JC.set(i,w,s,o)),H=t&255,K=t>>>8&255,Y=t>>>16&255,L=(F==null?void 0:F.lnScaleMin)??fA,n=254/(((F==null?void 0:F.lnScaleMax)??bA)-L),r=C>>8&255,w=E>>>16&255,s=A*4;Q[s+2]=Q[s+2]&65535|D<<16|i<<24,Q[s+3]=Q[s+3]&16777215|w<<24}function Ns(Q,A,I,g,B,C,E){const D=(E==null?void 0:E.rgbMin)??0,w=((E==null?void 0:E.rgbMax)??1)-D,s=jA((I-D)/w),o=jA((g-D)/w),y=jA((B-D)/w),h=jA(E!=null&&E.lodOpacity?.5*C:C),k=A*4;Q[k]=s|o<<8|y<<16|h<<24}function cs(Q,A,I,g,B,C){const E=(C==null?void 0:C.rgbMin)??0,i=((C==null?void 0:C.rgbMax)??1)-E,w=jA((I-E)/i),s=jA((g-E)/i),o=jA((B-E)/i),y=A*4;Q[y]=w|s<<8|o<<16|Q[y]&4278190080}function Ms(Q,A,I){const g=jA(I),B=A*4;Q[B]=Q[B]&16777215|g<<24}const Js=new G.Vector3,Us=new G.Vector3,ts=new G.Quaternion,Hs=new G.Color,DB={center:Js,scales:Us,quaternion:ts,color:Hs,opacity:0};function Ng(Q,A,I){const g=DB,B=A*4,C=Q[B],E=Q[B+1],D=Q[B+2],i=Q[B+3],w=(I==null?void 0:I.rgbMin)??0,o=((I==null?void 0:I.rgbMax)??1)-w;g.color.set(w+(C&255)/255*o,w+(C>>>8&255)/255*o,w+(C>>>16&255)/255*o),g.opacity=(C>>>24&255)/255,I!=null&&I.lodOpacity&&(g.opacity=2*g.opacity),g.center.set(FA(E&65535),FA(E>>>16&65535),FA(D&65535));const y=(I==null?void 0:I.lnScaleMin)??fA,k=(((I==null?void 0:I.lnScaleMax)??bA)-y)/254,R=i&255;g.scales.x=R===0?0:Math.exp(y+(R-1)*k);const F=i>>>8&255;g.scales.y=F===0?0:Math.exp(y+(F-1)*k);const a=i>>>16&255;g.scales.z=a===0?0:Math.exp(y+(a-1)*k);const S=D>>>16&65535|i>>>8&16711680;return nC(S,g.quaternion),g}function BA(Q){const A=P,I=Math.max(QB,Math.min(WA,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function Ls(Q){const A=P,I=Math.max(QB,Math.min(WA,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I));return A*I*g}function cg(){return navigator.platform.toLowerCase().startsWith("win")?!1:navigator.maxTouchPoints>0?!0:/Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(navigator.userAgent)}function iQ(){return/Android/.test(navigator.userAgent)||/Tizen/.test(navigator.userAgent)}function wQ(){return!!navigator.xr&&/Oculus/.test(navigator.userAgent)}function UC(){return wQ()&&/Quest 2/.test(navigator.userAgent)}function Ig(){return/iPhone|iPad/.test(navigator.userAgent)}function iB(){return!!navigator.xr&&Ig()&&/Safari/.test(navigator.userAgent)&&cg()}function tC(Q,A,I){const g=new Uint8Array(A*4);for(let B=0;BI!==void 0))}const LC=oA(` - precision highp float; - - in vec3 position; - - void main() { - gl_Position = vec4(position.xy, 0.0, 1.0); - } -`);function YC(Q){const A=new G.Vector3;for(const I of Q)A.add(I);return A.divideScalar(Q.length)}function KC(Q){if(Q.length===0)return new G.Quaternion;const A=Q[0].clone();for(let I=1;I=g)}function rC(Q,A){const[I,g]=[new G.Vector3,new G.Quaternion],[B,C]=[new G.Vector3,new G.Quaternion];Q.decompose(I,g,new G.Vector3),A.decompose(B,C,new G.Vector3);const E=I.distanceTo(B),D=Math.abs(g.dot(C));return{distance:E,coorient:D}}function zg({matrix1:Q,matrix2:A,maxDistance:I,minCoorient:g}){const{distance:B,coorient:C}=rC(Q,A);return B<=I&&(g==null||C>=g)}function rs(Q,A=.001){return Math.abs(Q)>24,g=Q<<16>>24,B=Q<<8>>24;A.set(I/127,g/127,B/127,0);const C=A.x*A.x+A.y*A.y+A.z*A.z;return A.w=Math.sqrt(Math.max(0,1-C)),A}const qs=new G.Quaternion,bQ=new G.Vector3;function oB(Q){const A=qs.copy(Q).normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?bQ.set(1,0,0):bQ.set(A.x,A.y,A.z).divideScalar(g),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,D=B.y/C;if(B.z<0){const h=E;E=(1-Math.abs(D))*(E>=0?1:-1),D=(1-Math.abs(h))*(D>=0?1:-1)}const i=E*.5+.5,w=D*.5+.5,s=Math.round(i*255),o=Math.round(w*255);return Math.round(I*(255/Math.PI))<<16|o<<8|s}function nC(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255;let D=(C-.5)*2,i=(E-.5)*2;const w=1-(Math.abs(D)+Math.abs(i)),s=Math.max(-w,0);D+=D>=0?-s:s,i+=i>=0?-s:s;const o=bQ.set(D,i,w).normalize(),h=B/255*Math.PI*.5,k=Math.sin(h),R=Math.cos(h);return A.set(o.x*k,o.y*k,o.z*k,R),A}function xs(Q){const A=Q.clone().normalize(),I=2*(A.w*A.x+A.y*A.z),g=1-2*(A.x*A.x+A.y*A.y),B=Math.atan2(I,g),C=2*(A.w*A.y-A.z*A.x),E=Math.abs(C)>=1?Math.sign(C)*(Math.PI/2):Math.asin(C),D=2*(A.w*A.z+A.x*A.y),i=1-2*(A.y*A.y+A.z*A.z),w=Math.atan2(D,i),s=(B+Math.PI)/(2*Math.PI),o=(E+Math.PI)/(2*Math.PI),y=(w+Math.PI)/(2*Math.PI),h=Math.round(s*255),k=Math.round(o*255);return Math.round(y*255)<<16|k<<8|h}function ls(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255,D=B/255,i=C*(2*Math.PI)-Math.PI,w=E*(2*Math.PI)-Math.PI,s=D*(2*Math.PI)-Math.PI,o=Math.cos(i*.5),y=Math.sin(i*.5),h=Math.cos(w*.5),k=Math.sin(w*.5),R=Math.cos(s*.5),F=Math.sin(s*.5);return A.w=o*h*R+y*k*F,A.x=y*h*R-o*k*F,A.y=o*k*R+y*h*F,A.z=o*h*F-y*k*R,A.normalize(),A}function dC(Q,A,I,g){const B=Math.sqrt(Q*Q+A*A+I*I+g*g),C=(g<0?-Q:Q)/B,E=(g<0?-A:A)/B,D=(g<0?-I:I)/B,i=(g<0?-g:g)/B,w=2*Math.acos(i),s=Math.sqrt(C*C+E*E+D*D),o=s<1e-6?1:C/s,y=s<1e-6?0:E/s,h=s<1e-6?0:D/s,k=Math.abs(o)+Math.abs(y)+Math.abs(h);let R=o/k,F=y/k;if(h<0){const U=R;R=(1-Math.abs(F))*(R>=0?1:-1),F=(1-Math.abs(U))*(F>=0?1:-1)}const a=R*.5+.5,S=F*.5+.5,M=Math.round(a*1023),c=Math.round(S*1023);return Math.round(w*(4095/Math.PI))<<20|c<<10|M}function qC(Q,A){const I=Q&1023,g=Q>>>10&1023,B=Q>>>20&4095,C=I/1023,E=g/1023;let D=(C-.5)*2,i=(E-.5)*2;const w=1-(Math.abs(D)+Math.abs(i)),s=Math.max(-w,0);D+=D>=0?-s:s,i+=i>=0?-s:s;const o=Math.sqrt(D*D+i*i+w*w),y=o<1e-6?0:D/o,h=o<1e-6?0:i/o,k=o<1e-6?0:w/o,F=B/4095*Math.PI*.5,a=Math.sin(F),S=Math.cos(F);return A.set(y*a,h*a,k*a,S),A}function lg(Q,A,I,g){const B=Math.round(Math.max(-127,Math.min(127,Q*127))),C=Math.round(Math.max(-127,Math.min(127,A*127))),E=Math.round(Math.max(-127,Math.min(127,I*127))),D=Math.round(Math.max(-127,Math.min(127,g*127)));return B&255|(C&255)<<8|(E&255)<<16|(D&255)<<24}function ps(Q,A,I,g){const C=63/((g==null?void 0:g.sh1Max)??1),E=A*2;for(let D=0;D<9;++D){const i=I[D]*C,w=Math.round(Math.max(-63,Math.min(63,i)))&127,s=D*7,o=s+7,y=Math.floor(s/32),h=s-y*32,k=w<y*32+32){const R=w>>>32-h&4294967295;Q[E+y+1]|=R}}}function fs(Q,A,I,g){const C=1/((g==null?void 0:g.sh2Max)??1);Q[A*4+0]=lg(I[0]*C,I[1]*C,I[2]*C,I[3]*C),Q[A*4+1]=lg(I[4]*C,I[5]*C,I[6]*C,I[7]*C),Q[A*4+2]=lg(I[8]*C,I[9]*C,I[10]*C,I[11]*C),Q[A*4+3]=lg(I[12]*C,I[13]*C,I[14]*C,0)}function bs(Q,A,I,g){const C=31/((g==null?void 0:g.sh3Max)??1),E=A*4;for(let D=0;D<21;++D){const i=I[D]*C,w=Math.round(Math.max(-31,Math.min(31,i)))&63,s=D*6,o=s+6,y=Math.floor(s/32),h=s-y*32,k=w<y*32+32){const R=w>>>32-h&4294967295;Q[E+y+1]|=R}}}function fI(Q,A,I){const g=Math.abs(Q),B=Math.abs(A),C=Math.abs(I),E=Math.max(g,B,C),D=Math.floor(Math.log2(E)),i=Math.max(0,Math.min(31,D+15)),w=2**(i-15)/255,s=Math.round(Math.max(0,Math.min(255,g/w))),o=Math.round(Math.max(0,Math.min(255,B/w))),y=Math.round(Math.max(0,Math.min(255,C/w))),h=i<<3|((Q<0?1:0)|(A<0?2:0)|(I<0?4:0));return s|o<<8|y<<16|h<<24}function Ps(Q){const A=DB.color,g=2**((Q>>>27&31)-15)/255,B=(Q&255)*g,C=(Q>>>8&255)*g,E=(Q>>>16&255)*g;return A.r=Q&16777216?-B:B,A.g=Q&33554432?-C:C,A.b=Q&67108864?-E:E,A}function us(Q,A,I){const g=A*4;for(let B=0;B<3;++B){const C=B*3;Q[g+B]=fI(I[C],I[C+1],I[C+2])}}function Ts(Q,A,I,g,B){const C=I*4;for(let E=0;E<3;++E){const D=E*3;Q[C+E]=fI(g[D],g[D+1],g[D+2])}Q[C+3]=fI(B[0],B[1],B[2]);for(let E=1;E<5;++E){const D=E*5;A[C+(E-1)]=fI(B[D],B[D+1],B[D+2])}}function Os(Q,A,I,g){const B=I*4;for(let C=0;C<4;++C){const E=C*3;Q[B+C]=fI(g[E],g[E+1],g[E+2])}for(let C=4;C<7;++C){const E=C*3;A[B+(C-4)]=fI(g[E],g[E+1],g[E+2])}}function xC(Q,A){const I=[];let g=0,B=null;const C=new To((i,w)=>{if(I.push(i),g+=i.length,w||g>=A){const s=new Uint8Array(g);let o=0;for(const y of I)s.set(y,o),o+=y.length;B=s.slice(0,A)}}),E=1024;let D=0;for(;B==null&&Dthis.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),I=new Promise((g,B)=>{this.messages[A]={resolve:g,reject:B}});return{id:A,promise:I}}onMessage(A){const{id:I,result:g,error:B}=A.data,C=this.messages[I];C&&(delete this.messages[I],B?C.reject(B):C.resolve(g))}async call(A,I){const{id:g,promise:B}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:I,id:g},{transfer:EB(I)}),B}}let pC=4,_g=0;const fC=[],bC=[];async function Vs(){const Q=fC.shift();if(Q)return Q;if(_g{bC.push(A)})}function Xs(Q){if(_g>pC){_g-=1;return}const A=bC.shift();if(A){A(Q);return}fC.push(Q)}async function qI(Q){const A=await Vs();try{return await Q(A)}finally{Xs(A)}}const PC='(function(){"use strict";class a{static __wrap(A){A=A>>>0;const g=Object.create(a.prototype);return g.__wbg_ptr=A,IA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,IA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_chunkdecoder_free(A,0)}finish(){const A=this.__destroy_into_raw(),g=C.chunkdecoder_finish(A);if(g[2])throw w(g[1]);return w(g[0])}push(A){const g=C.chunkdecoder_push(this.__wbg_ptr,A);if(g[1])throw w(g[0])}}Symbol.dispose&&(a.prototype[Symbol.dispose]=a.prototype.free);class Z{static __wrap(A){A=A>>>0;const g=Object.create(Z.prototype);return g.__wbg_ptr=A,gA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,gA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_csplatarray_free(A,0)}bhatt_lod(A){C.csplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return C.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){C.csplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return C.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,g){C.csplatarray_tiny_lod(this.__wbg_ptr,A,g)}to_extsplats(){const A=C.csplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_extsplats_lod(){const A=C.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats(){const A=C.csplatarray_to_packedsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats_lod(){const A=C.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}get maxShDegree(){return C.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return C.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(A){C.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){C.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(Z.prototype[Symbol.dispose]=Z.prototype.free);class T{static __wrap(A){A=A>>>0;const g=Object.create(T.prototype);return g.__wbg_ptr=A,QA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,QA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_gsplatarray_free(A,0)}get maxShDegree(){return C.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return C.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(A){C.gsplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return C.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){C.gsplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return C.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,g){C.gsplatarray_tiny_lod(this.__wbg_ptr,A,g)}to_extsplats(){const A=C.gsplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_extsplats_lod(){const A=C.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats(A){const g=C.gsplatarray_to_packedsplats(this.__wbg_ptr,A);if(g[2])throw w(g[1]);return w(g[0])}to_packedsplats_lod(A){const g=C.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,A);if(g[2])throw w(g[1]);return w(g[0])}set maxShDegree(A){C.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){C.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(T.prototype[Symbol.dispose]=T.prototype.free);function wA(I,A,g,Q,B,D){const E=C.bhatt_lod_extsplats(I,A,g,R(Q)?0:M(Q),B,R(D)?0:M(D));if(E[2])throw w(E[1]);return w(E[0])}function GA(I,A,g,Q,B,D){const E=C.bhatt_lod_packedsplats(I,A,R(g)?0:M(g),Q,R(B)?0:M(B),D);if(E[2])throw w(E[1]);return w(E[0])}function oA(I,A,g){var Q=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),B=k,D=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k;const i=C.decode_to_csplatarray(Q,B,D,E,g);if(i[2])throw w(i[1]);return a.__wrap(i[0])}function yA(I,A,g,Q,B){var D=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k,i=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),y=k;const o=C.decode_to_extsplats(D,E,i,y,R(g)?0:M(g),R(Q)?0:M(Q),R(B)?0:M(B));if(o[2])throw w(o[1]);return a.__wrap(o[0])}function RA(I,A){var g=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),Q=k,B=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;const E=C.decode_to_gsplatarray(g,Q,B,D);if(E[2])throw w(E[1]);return a.__wrap(E[0])}function kA(I,A,g,Q,B,D){var E=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),i=k,y=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),o=k;const G=C.decode_to_packedsplats(E,i,y,o,g,R(Q)?0:M(Q),R(B)?0:M(B),R(D)?0:M(D));if(G[2])throw w(G[1]);return a.__wrap(G[0])}function FA(I){C.dispose_lod_tree(I)}function NA(I,A){const g=C.get_lod_tree_level(I,A);if(g[2])throw w(g[1]);return w(g[0])}function SA(I,A){const g=C.init_lod_tree(I,A);if(g[2])throw w(g[1]);return w(g[0])}function JA(I){const A=C.new_lod_tree(I);if(A[2])throw w(A[1]);return w(A[0])}function MA(I){const A=C.new_shared_lod_tree(I);if(A[2])throw w(A[1]);return w(A[0])}function hA(I,A,g){return C.sort32_splats(I,A,g)>>>0}function sA(I,A,g){return C.sort_splats(I,A,g)>>>0}function UA(I,A,g,Q,B,D,E){const i=C.tiny_lod_extsplats(I,A,g,R(Q)?0:M(Q),B,D,R(E)?0:M(E));if(i[2])throw w(i[1]);return w(i[0])}function HA(I,A,g,Q,B,D,E){const i=C.tiny_lod_packedsplats(I,A,R(g)?0:M(g),Q,B,R(D)?0:M(D),E);if(i[2])throw w(i[1]);return w(i[0])}function LA(I,A,g,Q,B,D,E,i,y,o,G){const S=O(Q,C.__wbindgen_malloc),J=k,h=O(B,C.__wbindgen_malloc),L=k,c=r(D,C.__wbindgen_malloc),H=k,s=r(E,C.__wbindgen_malloc),F=k,N=r(i,C.__wbindgen_malloc),d=k,x=r(y,C.__wbindgen_malloc),m=k,e=r(o,C.__wbindgen_malloc),K=k,Y=r(G,C.__wbindgen_malloc),f=k,p=C.traverse_lod_trees(I,A,R(g)?4294967297:Math.fround(g),S,J,h,L,c,H,s,F,N,d,x,m,e,K,Y,f);if(p[2])throw w(p[1]);return w(p[0])}function cA(I,A,g,Q,B){const D=O(I,C.__wbindgen_malloc),E=k,i=O(A,C.__wbindgen_malloc),y=k,o=O(g,C.__wbindgen_malloc),G=k,S=O(Q,C.__wbindgen_malloc),J=k,h=C.update_lod_trees(D,E,i,y,o,G,S,J,B);if(h[2])throw w(h[1]);return w(h[0])}function YA(){return{__proto__:null,"./spark_worker_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(z(A,g))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(A){const g=A,Q=typeof g=="boolean"?g:void 0;return R(Q)?16777215:Q?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(A,g){const Q=_(g),B=U(Q,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;q().setInt32(A+4,D,!0),q().setInt32(A+0,B,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(A,g){return A in g},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(A){return!A},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(A){const g=A;return typeof g=="object"&&g!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(A){return A===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(A,g){return A==g},__wbg___wbindgen_number_get_7579aab02a8a620c:function(A,g){const Q=g,B=typeof Q=="number"?Q:void 0;q().setFloat64(A+8,R(B)?0:B,!0),q().setInt32(A+0,!R(B),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(A,g){const Q=g,B=typeof Q=="string"?Q:void 0;var D=R(B)?0:U(B,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k;q().setInt32(A+4,E,!0),q().setInt32(A+0,D,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(z(A,g))},__wbg_csplatarray_new:function(A){return Z.__wrap(A)},__wbg_error_a6fa202b58aa1cd3:function(A,g){let Q,B;try{Q=A,B=g,console.error(z(A,g))}finally{C.__wbindgen_free(Q,B,1)}},__wbg_get_4848e350b40afc16:function(A,g){return A[g>>>0]},__wbg_get_f96702c6245e4ef9:function(){return EA(function(A,g){return Reflect.get(A,g)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(A,g){return A[g>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(A,g){return A[g]},__wbg_gsplatarray_new:function(A){return T.__wrap(A)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(A){let g;try{g=A instanceof ArrayBuffer}catch{g=!1}return g},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(A){let g;try{g=A instanceof Uint8Array}catch{g=!1}return g},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_6e821edde497a532:function(A){return A.length},__wbg_length_a4ca9e78359b5f1f:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_a560378ea1240b14:function(A){return new Uint8Array(A)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_41a22191b9bdfd66:function(A){return new Uint32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,g,Q){Uint8Array.prototype.set.call(aA(A,g),Q)},__wbg_prototypesetcall_64c287a27cc24d27:function(A,g,Q){Uint16Array.prototype.set.call(KA(A,g),Q)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,g,Q){Uint32Array.prototype.set.call(BA(A,g),Q)},__wbg_push_6bdbc990be5ac37b:function(A,g){return A.push(g)},__wbg_set_448126769bf7c181:function(A,g,Q){A.set(BA(g,Q))},__wbg_set_6be42768c690e380:function(A,g,Q){A[g]=Q},__wbg_set_81b4174352e6a095:function(A,g,Q){A.set(g,Q>>>0)},__wbg_set_8ee2d34facb8466e:function(){return EA(function(A,g,Q){return Reflect.set(A,g,Q)},arguments)},__wbg_set_index_338a66e40fc45dee:function(A,g,Q){A[g>>>0]=Q>>>0},__wbg_stack_3b0d974bbf31e44f:function(A,g){const Q=g.stack,B=U(Q,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;q().setInt32(A+4,D,!0),q().setInt32(A+0,B,!0)},__wbg_subarray_0f98d3fb634508ad:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbg_subarray_517cd0f1811ab872:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return z(A,g)},__wbindgen_init_externref_table:function(){const A=C.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}const IA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_chunkdecoder_free(I>>>0,1)),gA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_csplatarray_free(I>>>0,1)),QA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_gsplatarray_free(I>>>0,1));function M(I){const A=C.__externref_table_alloc();return C.__wbindgen_externrefs.set(A,I),A}function _(I){const A=typeof I;if(A=="number"||A=="boolean"||I==null)return`${I}`;if(A=="string")return`"${I}"`;if(A=="symbol"){const B=I.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=I.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(I)){const B=I.length;let D="[";B>0&&(D+=_(I[0]));for(let E=1;E1)Q=g[1];else return toString.call(I);if(Q=="Object")try{return"Object("+JSON.stringify(I)+")"}catch{return"Object"}return I instanceof Error?`${I.name}: ${I.message}\n${I.stack}`:Q}function KA(I,A){return I=I>>>0,dA().subarray(I/2,I/2+A)}function BA(I,A){return I=I>>>0,CA().subarray(I/4,I/4+A)}function aA(I,A){return I=I>>>0,l().subarray(I/1,I/1+A)}let t=null;function q(){return(t===null||t.buffer.detached===!0||t.buffer.detached===void 0&&t.buffer!==C.memory.buffer)&&(t=new DataView(C.memory.buffer)),t}let n=null;function qA(){return(n===null||n.byteLength===0)&&(n=new Float32Array(C.memory.buffer)),n}function z(I,A){return I=I>>>0,tA(I,A)}let X=null;function dA(){return(X===null||X.byteLength===0)&&(X=new Uint16Array(C.memory.buffer)),X}let V=null;function CA(){return(V===null||V.byteLength===0)&&(V=new Uint32Array(C.memory.buffer)),V}let W=null;function l(){return(W===null||W.byteLength===0)&&(W=new Uint8Array(C.memory.buffer)),W}function EA(I,A){try{return I.apply(this,A)}catch(g){const Q=M(g);C.__wbindgen_exn_store(Q)}}function R(I){return I==null}function O(I,A){const g=A(I.length*4,4)>>>0;return CA().set(I,g/4),k=I.length,g}function r(I,A){const g=A(I.length*4,4)>>>0;return qA().set(I,g/4),k=I.length,g}function U(I,A,g){if(g===void 0){const i=j.encode(I),y=A(i.length,1)>>>0;return l().subarray(y,y+i.length).set(i),k=i.length,y}let Q=I.length,B=A(Q,1)>>>0;const D=l();let E=0;for(;E127)break;D[B+E]=i}if(E!==Q){E!==0&&(I=I.slice(E)),B=g(B,Q,Q=E+I.length*3,1)>>>0;const i=l().subarray(B+E,B+Q),y=j.encodeInto(I,i);E+=y.written,B=g(B,Q,E,1)>>>0}return k=E,B}function w(I){const A=C.__wbindgen_externrefs.get(I);return C.__externref_table_dealloc(I),A}let v=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});v.decode();const xA=2146435072;let $=0;function tA(I,A){return $+=A,$>=xA&&(v=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),v.decode(),$=A),v.decode(l().subarray(I,I+A))}const j=new TextEncoder;"encodeInto"in j||(j.encodeInto=function(I,A){const g=j.encode(I);return A.set(g),{read:I.length,written:g.length}});let k=0,C;function PA(I,A){return C=I.exports,t=null,n=null,X=null,V=null,W=null,C.__wbindgen_start(),C}async function bA(I,A){if(typeof Response=="function"&&I instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(I,A)}catch(B){if(I.ok&&g(I.type)&&I.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",B);else throw B}const Q=await I.arrayBuffer();return await WebAssembly.instantiate(Q,A)}else{const Q=await WebAssembly.instantiate(I,A);return Q instanceof WebAssembly.Instance?{instance:Q,module:I}:Q}function g(Q){switch(Q){case"basic":case"cors":case"default":return!0}return!1}}async function fA(I){if(C!==void 0)return C;I!==void 0&&(Object.getPrototypeOf(I)===Object.prototype?{module_or_path:I}=I:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),I===void 0&&(I=new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyB6QgiIpyEIIHpCIIinIRJBACELDAoLQaiQyAApAwAieUL/AYNCBFENACB5QhCIpyIVIHmnIgNB/wFxQQRGDQEaIHlCCIinIQggeUIgiKchEkEAIQsMCQsgBC8ByAwLQf//AHE7ASYgASARQf//AHEiCDsBJCAIQQ9qQQR2IQICfyAIRQRAQQEhFUEADAELIAJBHmwQcSIVRQ0CIBUhAwJAIAhBEUkNACACQQFrIhBBB3EhCyACQQJrQQdPBEAgEEF4cSEHA0AgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EQakIANwAAIANBFmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBJmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBNGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQdIAav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HiAGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANB8ABqQgA3AAAgA0GIAWpCADcAACADQY4BakIANwAAIANB+ABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQaYBakIANwAAIANBrAFqQgA3AAAgA0GWAWr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxAFqQgA3AAAgA0HKAWpCADcAACADQbQBav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HoAWpCADcAACADQeIBakIANwAAIANB0gFq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQfABaiEDIAdBCGsiBw0ACwsgC0UNAANAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBFmpCADcAACADQRBqQgA3AAAgA0EeaiEDIAtBAWsiCw0ACwsgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EWakIANwAAIANBEGpCADcAACACCyEDIAEoApwEIgsEQCABKAKgBCIOQQRrKAIAIhBBeHEiESALQR5sIgtBBEEIIBBBA3EiEBtqSQ0LIBBBACARIAtBJ2pLGw0MIA4QogILIAEgAjYCpAQgASAVNgKgBCABIAM2ApwEAn8CQCAIRQ0AIBUtAAAiA0ECRg0AIARBMGogFUEcai0AADoAACAEIBX9AAAE/QsDyAwgBCAVKQAUNwMoIBUtAAEhCyAVLQACIQcgFS0AAyEIIBUtAB0MAQsgBEEwakEAOgAAIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwPIDCAEQgA3AyhBACEIQQAhB0EAIQtBACEDQQALIRUgASAIOgCFBSABIAc6AIQFIAEgCzoAgwUgASADOgCCBSABIAT9AAPIDP0LAIYFIAEgBCkDKDcAlgUgASAVOgCfBSABQZ4FaiAEQTBqLQAAOgAAIAEgAS8BJCIDQQR2IANBD3FBAEdqIgM7AaAFIAEgAS8BJiILQQR2IAtBD3FBAEdqIgs7AaIFAkACQCADIAtsQQh0IgNBAE4EQAJAIANFBEBBASELDAELIAMQcSILRQ0FIAtBBGstAABBA3FFIANFcg0AIAtBACAD/AsACyABKAIAIhUEQCABKAIEIghBBGsoAgAiEEF4cSICQQRBCCAQQQNxIhAbIBVqSQ0OIBBBACACIBVBJ2pLGw0PIAgQogILIAEgAzYCCCABIAs2AgQgASADNgIAIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQECQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCDCIVBEAgASgCECAVQQEQogcLIAEgAzYCFCABIAs2AhAgASADNgIMIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQICQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCGCIVBEAgASgCHCAVQQEQogcLIAEgAzYCICABIAs2AhwgASADNgIYIAEvASRBFGoiAxBxIgtFDQQgAwRAIAtB/wAgA/wLAAsgASgCqAQiFQRAIAEoAqwEIBVBARCiBwsgASADNgKwBCABIAs2AqwEIAEgAzYCqARBERBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBEGpBgQE6AAAgA0EIakKBg4aMmLDgwIF/NwAAIAEoArQEIgsEQCABKAK4BCALQQEQogcLIAFBETYCvAQgASADNgK4BCABQRE2ArQEIAEvAaAFIgtBA3QhAwJAIAtFBEBBASELDAELIAMQcSILRQ0FCyADBEAgC0H/ACAD/AsACyABKALABCIVBEAgASgCxAQgFUEBEKIHCyABIAM2AsgEIAEgCzYCxAQgASADNgLABEEJEHEiA0UNBCADQoGDhoyYsODAgX83AAAgA0EIakGBAToAACABKALMBCILBEAgASgC0AQgC0EBEKIHCyABQQk2AtQEIAEgAzYC0AQgAUEJNgLMBCABLwGgBSILQQN0IQMCQCALRQRAQQEhCwwBCyADEHEiC0UNBQsgAwRAIAtB/wAgA/wLAAsgASgC2AQiBwRAIAEoAtwEIAdBARCiBwsgASADNgLgBCABIAs2AtwEIAEgAzYC2ARBCRBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQMAwtB7KzGABD/BwALQfysxgAQ/wcAC0GMrcYAEP8HAAsgEkEHdiASQeAAcUEAR2oiCkECdCERAkAgCkUNACAREHEiCUUNASAJQQRrLQAAQQNxRSARRXINACAJQQAgEfwLAAsCQAJAAkACQCARIBJBBXYiEE8EQCASQSBJDQIgASkD4AMheSABKALoAyELIAkhCCAQIRUDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEgJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEi0AADoAAAwBCyADRQ0AIAggEiAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCC0EAIBAgEUGwrcYAEOoHAAtBACELQaiQyAApAwAieaciA0H/AXFBBEYNACB5QiCIpyESIHlCEIinIRUgeUIIiKchCCAKDQEMCQsgBCAKNgIwIAQgCTYCLCAEIAo2AiggBEHIDGogAUHwAGoiFSAEQShqIBAQsgMgBC0AyAwiC0EdRg0BIAQ1AM0MInkgBEHTDGoxAABCMIYgBEHRDGozAABCIIaEhCJ6QhiIpyESIHpCCIinIRUgBCgC1AwhDiAELQDMDCEDIAQvAcoMIQIgBC0AyQwhByB5pyEIDAgLIAlBBGsoAgAiBkF4cSICQQRBCCAGQQNxIgcbIBFqSQ0KIAdBACACIBFBJ2pLGw0LIAkQogIMBwsCQCABLQAoRQ0AIBVBARC5ASEHIAEgFUEBELkBOgAsIAdB/wFxRQ0AQRMhCwwHCyABIBUQqgUiAzoApAUCQCADRQ0AIAEgFRCqBToApQUgFRCqBQRAIAEgFRCqBUEBcyIDOgBuIAEgAzoAXiABIAM6AE4gASADOgA+IAEgFUEHEK8BOgA8IAEgFUEHEK8BOgBMIAEgFUEHEK8BOgBcIAEgFUEHEK8BOgBsIAEgFUEGEK8BOgA9IAEgFUEGEK8BOgBNIAEgFUEGEK8BOgBdIAEgFUEGEK8BOgBtCyABLQClBUEBRgRAQf8BIQMgASAVEKoFBH8gFUEIELkBBUH/AQs6APYEIAEgFRCqBQR/IBVBCBC5AQVB/wELOgD6BCAVEKoFBEAgFUEIELkBIQMLIAEgAzoA/gQLIAEtAJMBQfIBRw0AQQ8hCwwGCyABIBUQqgU6ACogASAVQQYQuQE6AC0gASAVQQMQuQE6AC4gASAVEKoFIgM6AKYFAkACQAJAIANFDQAgFRCqBQRAIAEgFUEGEK8BNgLwAyABIBVBBhCvATYC9AMgASAVQQYQrwE2AvgDIAEgFUEGEK8BNgL8AyABIBVBBhCvATYCgAQgASAVQQYQrwE2AoQEIAEgFUEGEK8BNgKIBCABIBVBBhCvATYCjAQLIAEtAJMBQfIBRw0AQQ8hCwwBCyAVQQIQuQEhA0EPIQsgAS0AkwFB8gFGDQcgAUEBIAN0Ihg6AKcFAkAgA0EfcSIPRQ0AAkACQEEDIA90QQNrIgNBAE4EQCADEHEiEUUNBiARQQRrLQAAQQNxRSADRXJFBEAgEUEAIAP8CwALIAEpA+ADIXkgASgC6AMhByARIQ4gAyECAkADQCB5UA0BIAcpAwgieiAHKAIEIgitInsgeiB7VBunIgogBygCAGohEAJAIAhC/////w8geiB6Qv////8PWhunayIJQQAgCCAJTxsiCSB5IAKtInsgeSB7VBunIg0gCSANSRsiCUEBRgRAIA4gEC0AADoAAAwBCyAJRQ0AIA4gECAJ/AoAAAsgASB5IAmtInt9Ink3A+ADIAcgeiB7fDcDCCAIIApGDQEgCSAOaiEOIAIgCWsiAg0AC0GokMgAKQMAInpC/wGDQgRRIQwMAgtBASEMQaiQyAApAwAiekL/AYNCBFENAUEAIQsMAgtBuKnGABD/BwALIAFBmAFqISYgESEZIAMhDQJAA0ACQCANQQJNBEAgDARAQQEhCUEAIQpBACEIQQAhEAwCCyAEIHo3A8gMQaiqxgBBNyAEQcgMakGYqsYAQeCqxgAQ4AYACyAZLwAAIBlBAmotAABBEHRyIghBA2oiCUECdiEKAn8gCUH8//8PcSIURQRAQQEhCUEADAELIBQQcSIJRQ0IIAlBBGstAABBA3FFIBRFckUEQCAJQQAgFPwLAAsgCgshECAIIBRNBEAgCEUEQEEAIQpBACEIDAILIAEpA+ADIXkgASgC6AMhByAJIQ4gCCECA0ACQCB5UA0AIAcpAwgieyAHKAIEIhKtInwgeyB8VBunIiIgBygCAGohFgJAIBJC/////w8geyB7Qv////8PWhunayIUQQAgEiAUTxsiFCB5IAKtInwgeSB8VBunIhsgFCAbSRsiFEEBRgRAIA4gFi0AADoAAAwBCyAURQ0AIA4gFiAU/AoAAAsgASB5IBStInx9Ink3A+ADIAcgeyB8fDcDCCASICJGDQAgDiAUaiEOIAIgFGsiAg0BDAMLCyAMDQFBACELIBBFDQQgCSAQQQJ0QQEQogcMBAtBACAIIBRBiKrGABDqBwALIAVBCEYNASAEIAo2AuAYIAQgCTYC3BggBCAQNgLYGCAEQcgMaiAmIAVBKGxqIARB2BhqIAgQsgMgBC0AyAwiCUEdRwRAIAQoAtQMIQ4gBCkCzAwheiAELwHKDCECIAQtAMkMIQcgCSELDAMLIAVBAWohBSAZQQMgDSANQQNPGyIJaiEZIA0gCWsiDQ0ACyARIANBARCiBwwCC0EIQQhB+KnGABCMBwALIBEgA0EBEKIHIHqnIQMMBwsgBEEANgLgGCAEQoCAgIAQNwLYGCAEQcgMaiABQdgDaiAEQdgYahDzAQJAAkACQAJAAkACfwJAIAQtAMgMQQRGDQAgBCkDyAwieqciA0H/AXFBBEYNAEEADAELIAQoAuAYIgNBA2oiCUEASA0CIAlBAnYhAgJ/IAlBfHEiCUUEQEEBIQdBAAwBCyAJEHEiB0UNCSAHQQRrLQAAQQNxRSAJRXJFBEAgB0EAIAn8CwALIAILIQggBCACNgIwIAQgBzYCLCAEIAg2AiggAyAJSw0DIAQoAtwYIQkgAwRAIAcgCSAD/AoAAAsgGEEBayECIA9BBE8NBCAEQcgMaiABQZgBaiJdIAJBKGxqIARBKGogAxCyAyAELQDIDCIIQR1GDQEgBCgC1AwhDiAELwHKDCECIAQtAMkMIQcgBCkCzAwieqchAyAICyELIAQoAtgYIgZFDQsgBCgC3BggBkEBEKIHDAsLIAQoAtgYIgMEQCAJIANBARCiBwsgFUEHELkBIQMgFUEEEK8BIQggFUEEEK8BIQIgFUEEEK8BIQ4gFUEEEK8BIRIgFUEEEK8BIQkgAUH/ACABLAA8IANB/wFxIgdBACABLQA+G2ogByABLQCkBSIQGyIDQQAgA0EAShsiESARQf8AThtBAXQvAbjkRDsBMiABQf8AIAMgCWoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45EQ7ATogAUH/ACADIBJqIhFBACARQQBKGyIRIBFB/wBOG0EBdC4BuOZEIhE7ATggAUH/ACADIAhqIgpBACAKQQBKGyIKIApB/wBOG0EBdC8BuOZEOwEwIAFB/wAgAiADaiIKQQAgCkEAShsiCiAKQf8AThtBAXQvAbjmREEBdDsBNCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwE2IAPBQQdMBEAgAUEIOwE2CyARQYQBTA0DIAFBhAE7ATgMAwtByKnGABD/BwALQQAgAyAJQeipxgAQ6gcACyACQQhB2KnGABCMBwALAkAgEEUNACABQf8AIAEsAEwgB0EAIAEtAE4baiAHIAEtAKQFGyIDQQAgA0EAShsiECAQQf8AThtBAXQvAbjkRDsBQiABQf8AIAMgCWoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LwG45EQ7AUogAUH/ACADIBJqIhBBACAQQQBKGyIQIBBB/wBOG0EBdC4BuOZEIhA7AUggAUH/ACADIAhqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEOwFAIAFB/wAgAiADaiIRQQAgEUEAShsiESARQf8AThtBAXQvAbjmREEBdDsBRCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwFGIAPBQQdMBEAgAUEIOwFGCyAQQYUBTgRAIAFBhAE7AUgLIAFB/wAgASwAXCAHQQAgAS0AXhtqIAcgAS0ApAUbIgNBACADQQBKGyIQIBBB/wBOG0EBdC8BuOREOwFSIAFB/wAgAyAJaiIQQQAgEEEAShsiECAQQf8AThtBAXQvAbjkRDsBWiABQf8AIAMgEmoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LgG45kQiEDsBWCABQf8AIAMgCGoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45kQ7AVAgAUH/ACACIANqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEQQF0OwFUIAFB/wAgAyAOaiIDQQAgA0EAShsiAyADQf8AThtBAXQuAbjkREGbAWxB5ABtIgM7AVYgA8FBB0wEQCABQQg7AVYLIBBBhQFOBEAgAUGEATsBWAsgAUH/ACABLABsIAdBACABLQBuG2ogByABLQCkBRsiA0EAIANBAEobIhAgEEH/AE4bQQF0LwG45EQ7AWIgAUH/ACADIAlqIglBACAJQQBKGyIJIAlB/wBOG0EBdC8BuOREOwFqIAFB/wAgAyASaiIJQQAgCUEAShsiCSAJQf8AThtBAXQuAbjmRCIHOwFoIAFB/wAgAyAIaiIJQQAgCUEAShsiCSAJQf8AThtBAXQvAbjmRDsBYCABQf8AIAIgA2oiCUEAIAlBAEobIgggCEH/AE4bQQF0LwG45kRBAXQ7AWQgAUH/ACADIA5qIgNBACADQQBKGyIDIANB/wBOG0EBdC4BuOREQZsBbEHkAG0iAzsBZiADwUEHTARAIAFBCDsBZgsgB0GFAUgNACABQYQBOwFoCyABLQCTAUHyAUcNAQtBACEVQQAhEgwHCwJAAn8gAS0AKEUEQEETIQ5BExBxIgZFDQMgBkEPakGrrcYAKAAANgAAIAZBnK3GAP0AAAD9CwAAIAQgBjYCzAwgBEETNgLIDCAENQDJDCJ5IAQxAM8MQjCGIAQzAM0MQiCGhIQiekIYiKchEiB5pyEIIHpCCIinDAELIBVBARC5ARogBEHIDGpBACEKIAFB8ABqIQ1BoM/GACEJQZjNxgAhEANAIAkhESAKIQcgECEJQSEhFANAQfx+IRkDQCANIAktAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGGAWogBToAAAsgDSAJQQFqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBigFqIAU6AAALIA0gCUECai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQY4BaiAFOgAACyANIAlBA2otAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGSAWogBToAAAsgDSAJQQRqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBlgFqIAU6AAALIA0gCUEFai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQZoBaiAFOgAACyANIAlBBmotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGeAWogBToAAAsgDSAJQQdqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBogFqIAU6AAALIA0gCUEIai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQaYBaiAFOgAACyANIAlBCWotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGqAWogBToAAAsgDSAJQQpqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBrgFqIAU6AAALIAlBC2ohCSAZQSxqIhkNAAsgB0GEAWohByAQIBRqIQkgFEEhakGIAiAUQYgCRyIZGyEUIBkNAAsgCkGgCGohCiARQYgCaiEJIBEiEEG41cYARw0AC0EPQR0gAS0AkwFB8gFGGzoAACAELQDIDCIJQR1HBEAgBDUAzQwieSAEQdMMajEAAEIwhiAEQdEMajMAAEIghoSEInpCGIinIRIgekIIiKchFSAEKALUDCEOIAQtAMwMIQMgBC8BygwhAiAELQDJDCEHIHmnIQggCSELDAkLIBVBARC5AUH/AXEiB0EBRgRAIBVBCBC5ASEDCyABIAM6AIEFIAEgB0EBRjoAgAUgAS0AkwFB8gFGDQcgAS0AKA0BIAFBADoAqAVBEyEOQRMQcSIGRQ0CIAZBD2pBq63GACgAADYAACAGQZytxgD9AAAA/QsAACAEIAY2AswMIARBEzYCyAwgBDUAyQwieSAEMQDPDEIwhiAEMwDNDEIghoSEInpCGIinIRIgeachCCB6QgiIpwshFUEYIQtBEyEDDAcLIAEvAaIFIkpFDQMgAUEwaiE6IAFBkARqIRkgAUH0BGohFyABQZYFaiEcIAFBhgVqIUcgAUGCBWohJyAEQZENaiFLIARBiA1qIRggBEH/DGohTCAEQfYMaiFNIARB7QxqIU4gBEHkDGohTyAEQdsMaiEoIARBoRlqIVAgBEGYGWohUSAEQY8ZaiFSIARBhhlqIVMgBEH9GGohVCAEQfQYaiFVIARB6xhqIVYgBEGZD2ohKSAEQYQPaiEqIARB7w5qISsgBEHaDmohLCAEQcUOaiEtIARBsA5qIRMgBEGbDmohLiAEQYYOaiEvIARB8Q1qITAgBEHcDWohMSAEQccNaiEyIARBsg1qITMgBEGdDWohNCAEQfMMaiE1IARB0gxqIVcgBEHiGGohWCAEQegLaiFZIARB6AlqIVogBEGoC2ohICAEQagJaiEhIARB6ApqIV4gBEHoCGohXyAEQagKaiFgIARBqAhqIWEgBEHeDGohNiAEQegHaiFiIARBqAdqIWMgBEHoBmohZCAEQagGaiFlIARB6AVqIWYgBEGoBWohZyAEQegEaiFoIARBqARqIWkgBEHoA2ohaiAEQagDaiFrIARB6AJqIWwgBEGoAmohbSAEQegBaiFuIARBqAFqIW8gBEHoAGohcCAEQThqIXEgBEEoakECciFIIARB2AxqITwgBEHIDGpBAnIhPSAEQR1qIT4gBEEOaiEUIARBzwxqIQwgBEHMDGohciAEQckMaiI/QRVqIXMgBEGIGWohdEEBIQNBACEQA0AgAS0ApwUiC0UNAiADIREgJ/0MAAAAAAAAAAAAAAAAAAAAAP0LAQAgJ0EWakIANwEAICdBEGpCADcBACAQIAtwIQ8CQCABLwGgBSJ1RQ0AQQEhN0EAISZBACEKAkACQAJAAkACQAJAAkACQANAIHNCADcAACA/QRBqQgA3AAAgP/0MAAAAAAAAAAAAAAAAAAAAAP0LAAACQCABLQCkBUEBRw0AIAEtAKUFQQFxRQ0AIAQgFSAXQQMgFygCABDIBDoA5QwLIAQgAS0AgAUEfyAVIAEtAIEFEJkFBUEACzoAyAwCQAJAAkACQAJ/AkACQCABLQAoDQAgFSABLQCoBRCZBUUEQEEAIQlBACELIAEtACgNAQwCC0EUIThBFBBxIhpFDRIgGkEQakGYsMYAKAAANgAAIBpBiLDGAP0AAAD9CwAAQRQhOUEYDAILIBVBnLDGAEEEQYSDxAQQyAQhAyAEQRQ6ACggBCADQf8BcSIJOgApIAlBBU8EQCAJIQZBFAwCCyAEQShqEKsEIAQgCToAywxBAiEDAkACQAJAAkACQAJAAkACQCAJQQFrDgQDAAEEAgtBAyEDDAILQQEhAwwBC0EAIQMLIEcgA0GBgoQIbCIDNgEAIDwgAzYAAAwBC0EAIQ4gCkEebCEIIAwhCwNAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQAQQegCbCAOIEdqIgctAABBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBA2tBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABAgByADOgAAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQARQegCbCADQSRsaiIDQbywxgBqQQkgAygAvLBGEMgEIQMgBEEVOgAoIAQgA0H/AXEiAzoAKSADQQlLBEAgAyEGQRUMBgsgBEEoahCrBCALQQJrQQogAyADQQpPGyIDOgAAIAogASgCpAQiAk8NAyABKAKgBCAIaiADOgARIAcgAzoAACAKIAEoAqQEIgJPDQIgFSABKAKgBCAIai0AEkHoAmwgA0EkbGoiA0G8sMYAakEJIAMoALywRhDIBCEDIARBFToAKCAEIANB/wFxIgM6ACkgA0EJSwRAIAMhBkEVDAYLIARBKGoQqwQgC0EBa0EKIAMgA0EKTxsiAzoAACAKIAEoAqQEIgJPDQMgASgCoAQgCGogAzoAEiAHIAM6AAAgCiABKAKkBCICTw0CIBUgASgCoAQgCGotABNB6AJsIANBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABMgByADOgAAIAtBBGohCyAOQQFqIg5BBEkNAAsLIBVB3MzGAEEDQYCDuAQQyAQhAyAEQRY6ACggBCADQf8BcSILOgApIAtBA0sEQCALIQZBFgwECyAEQShqEKsEIAQgCzoAygwMAgsgCiACQaywxgAQjAcACyAKIAJBzMzGABCMBwwRCyAKIAEoAqQEIgNPDQEgCkEebCIFIAEoAqAEaiALOgACIAogASgCpAQiA08NAiABKAKgBCAFaiAJOgADIAogASgCpAQiA08NAyABKAKgBCAFaiBy/QAAAP0LAAQgAS0AkwFB8gFHDQRBDwshAyAAIDg2AhAgACAaNgIMIAAgOTYCCCAAIEA7AQYgACAGOgAFIAAgAzoABCAAQYCAgIB4NgIADBYLIAogA0HozMYAEIwHAAsgCiADQfjMxgAQjAcACyAKIANBiM3GABCMBwALIARBDGogBEHKDGotAAA6AAAgBCAELwDIDDsBCiAEICgpAAA3A9gYIAQgKEEHaigAADYA3xggBEHPDGooAAAhOSAELQDMDCEGIAQvAM0MIUAgBCgA0wwhGiAEKADXDCE4ID5BB2ogBCgA3xg2AAAgPiAEKQPYGDcAACAEIDg2ABkgBCAaNgAVIAQgOTYAESAEIEA7AA8gBCAGOgAOIAQgCToADQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0ACkEBcUUEQCAELQAnIQsgBEHIDGpBAEGADPwLAAJAAkACQAJAIAlBBEcEQCAKIAEoAqQEIgNPDQEgASgCoAQgBWotABQhAyABLQCWBSECIHT9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIARB+Bhq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAEQegYav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LA9gYIAtBBE8NAiAEQcgYaiABIARB2BhqIA9BASACIANqQf8BcSA6IAtBBHRqIgMvAQQgAy8BBhDqASAELQDJGCEHIAQtAMgYIgJBHUYNAyAEIAQpAcoYNwO4DCAEIARB0BhqKQEANwG+DAwcC0EDIQ4gC0EDSw0DDAULIAogA0GgrsYAEIwHAAsgC0EEQbCuxgAQjAcACyABIAc6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFaiAHOgAUIARB2BhqIgMgAygCACICIAMoAjAiCGsiDiADKAIQIgcgAygCICINayISazYCMCADIAIgCGoiAiAHIA1qIghrNgIgIAMgDiASajYCECADIAIgCGo2AgAgAyADKAIkIgIgAygCFCIIaiIOIAMoAjQiByADKAIEIg1qIhJqNgIEIAMgDSAHayIHIAggAmsiAms2AjQgAyACIAdqNgIUIAMgEiAOazYCJCADIAMoAigiCCADKAIYIg5qIgcgAygCOCINIAMoAggiEmoiFmoiAjYCCCADIBIgDWsiDSAOIAhrIghrNgI4IAMgFiAHazYCKCADIAggDWo2AhggAyADKAIsIg4gAygCHCIHaiINIAMoAjwiEiADKAIMIhZqIiJqIgg2AgwgAyAHIA5rIgcgFiASayISaiIONgIcIAMgEiAHazYCPCADICIgDWsiBzYCLCADIAggAygCACINakEDaiISIAIgAygCBCIWaiIia0EDdTYCCCADIA0gCGtBA2oiCCAWIAJrIgJrQQN1NgIMIAMgAiAIakEDdTYCBCADIBIgImpBA3U2AgAgAyADKAIQIgIgDmtBA2oiCCADKAIUIg0gAygCGCISayIWa0EDdTYCHCADIAIgDmpBA2oiAiANIBJqIg5rQQN1NgIYIAMgCCAWakEDdTYCFCADIAIgDmpBA3U2AhAgAyADKAIgIgIgB2tBA2oiCCADKAIkIg4gAygCKCINayISa0EDdTYCLCADIAIgB2pBA2oiAiANIA5qIg5rQQN1NgIoIAMgCCASakEDdTYCJCADIAIgDmpBA3U2AiAgAyADKAIwIgIgAygCPCIIa0EDaiIOIAMoAjQiByADKAI4Ig1rIhJrQQN1NgI8IAMgAiAIakEDaiICIAcgDWoiCGtBA3U2AjggAyAOIBJqQQN1NgI0IAMgAiAIakEDdTYCMCAEIAQoAtgYNgLIDCAEIAQoAtwYNgKIDSAEIAQoAuAYNgLIDSAEIAQoAuQYNgKIDiAEIAQoAugYNgLIDiAEIAQoAuwYNgKIDyAEIAQoAvAYNgLIDyAEIAQoAvQYNgKIECAEIAQoAvgYNgLIECAEIAQoAvwYNgKIESAEIAQoAoAZNgLIESAEIAQoAoQZNgKIEiAEIAQoAogZNgLIEiAEIAQoAowZNgKIEyAEIAQoApAZNgLIEyAEIAQoApQZNgKIFEEAIQ4MAwsgCiADQcCuxgAQjAcACyAKIAEoAqQEIgJPDQ0gC0EEQaivxgAQjAcACwJAIAlBBEYNACABQQA6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFakEAOgAUDAELIAogA0GIqcYAEIwHAAsgAUEAOgCXBQJAIAogASgCpAQiC08NACABKAKgBCAFakEAOgAVIAFBADoAmAUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABYgAUEAOgCZBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAFyABQQA6AJoFIAogASgCpAQiC08NACABKAKgBCAFakEAOgAYIAFBADoAmwUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABkgAUEAOgCcBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAGiABQQA6AJ0FIAogASgCpAQiC08NACABKAKgBCAFakEAOgAbIAFBADoAngUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABwgBEEoakEAQYAM/AsADAILIAogC0GoqcYAEIwHAAsgOiALQQR0aiEDQQAhDUGXBSESIAQtAAshCANAIAogASgCpAQiAk8NDCAEQdgYaiABIARByAxqIA1qIgsgDyAOIAEoAqAEIAVqLQAVIAEgEmoiIi0AAGpB/wFxIAMvAQAgAy8BAhDqASAELQDYGCICQR1HDRUgBC0A2RghAgJ/AkAgCygCAARAIAsQmgJBASEIIAJBAXENAUEADAILQQAgAkEBcUUNARogCxCaAgtBASEIQQELIRYgCiABKAKkBCICTw0FIAEoAqAEIAVqIBY6ABUgCiABKAKkBCICTw0MIARB2BhqIAEgC0FAayIHIA8gDiABKAKgBCAFai0AFiAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshFiAKIAEoAqQEIgJPDQUgASgCoAQgBWogFjoAFiAKIAEoAqQEIgJPDQwgBEHYGGogASALQYABaiIHIA8gDiABKAKgBCAFai0AFyAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshByAKIAEoAqQEIgJPDQUgASgCoAQgBWogBzoAFyAKIAEoAqQEIgJPDQwgBEHYGGogASALQcABaiILIA8gDiABKAKgBCAFai0AGCAHakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQUgASgCoAQgBWogCzoAGCAiIAs6AAAgDUGAAmohDSASQZYFayASQQFqIRJBBEkNAAtBeCENA0ACQCANQdiuxgBqKAIAIgtBCE0EfyAKIAEoAqQEIgJPDQQgBEHYGGogASAEQcgMakGACEGACiALQQVGIgcbaiIOIA9BAiABKAKgBCAFaiALai0AFCALIBxqIiItAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0XIAQtANkYIQICfwJAIA4oAgAEQCAOEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIA4QmgILQQEhCEEBCyEWIAogASgCpAQiAk8NBiABKAKgBCAFaiALaiAWOgAUIAogASgCpAQiAk8NBCALQQFqIQ5BCSALayICQQAgAkEJTRtBAUYNBSAEQdgYaiABIARByAxqQcAIQcAKIAcbaiISIA9BAiABKAKgBCAFaiAOai0AFCAWakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFyAELQDZGCECAn8CQCASKAIABEAgEhCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiASEJoCC0EBIQhBAQshEiAKIAEoAqQEIgJPDQYgASgCoAQgBWogDmogEjoAFCAiIBI6AAAgC0EIRw0BQQkFIAsLQQlB2K7GABCMBwALIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQYAJQYALIAcbaiISIA9BAiABKAKgBCAFaiALai0AFCAOIBxqIhYtAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0VIAQtANkYIQICfwJAIBIoAgAEQCASEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIBIQmgILQQEhCEEBCyESIAogASgCpAQiAk8NBCABKAKgBCAFaiALaiASOgAUIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQcAJQcALIAcbaiILIA9BAiABKAKgBCAFaiAOai0AFCASakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQQgASgCoAQgBWogDmogCzoAFCAWIAs6AAAgDUEEaiINDQALIAQgCDoACyAEID0pAQA3A7gMIAQgPUEGaikBADcBvgwgBC8ByAwhAyBxIDxB8Av8CgAAIAQgBCkDuAw3A6gMIAQgBCkBvgw3Aa4MIEhBBmogBCkBrgw3AQAgSCAEKQOoDDcBACAEIAM7ASgLIARByAxqIQcgAS8BoAUiJCEFIAEoAqwEInYhDiABKAKwBCIiIQIgASgCuAQiDSELIAEoArwEIkEhEiMAQfACayIDJAAgA0EIakEAQeQC/AsAAkAgEEUEQCADQRhqQf/+/fsHNgIAIANBEGpC//79+/fv37//ADcDACADQv/+/fv379+//wA3AwgMAQsgCkEEdCIIIAJNBEACQCACIAhGDQBBECACIAhrIhYgFkEQTxsiFkUNACADQQhqIAggDmogFvwKAAALAkAgBUEBayAKRgRAIAhBD3IiCCACTw0BIAMgCCAOai0AAEGBgoQIbDYAGAwDCyAIQRBqIgggAk0EQCACIAhGDQNBBCACIAhrIgIgAkEETxsiAkUNAyADQRhqIAggDmogAvwKAAAMAwsgCCACIAJB+OPEABDqBwALIAggAkGY5MQAEIwHAAsgCCACIAJBqOTEABDqBwALIAMgAy0AGCICOgCUAiADIAI6AMABIAMgAjoAbCADIAMtABkiAjoAlQIgAyACOgDBASADIAI6AG0gAyADLQAaIgI6AJYCIAMgAjoAwgEgAyACOgBuIAMgAy0AGyICOgCXAiADIAI6AMMBIAMgAjoAbyAHAn8gCkUEQCADQYEBOgDXAiADQYEBOgDCAiADQYEBOgCtAiADQYEBOgCYAiADQYEBOgCDAiADQYEBOgDuASADQYEBOgDZASADQYEBOgDEASADQYEBOgCvASADQYEBOgCaASADQYEBOgCFASADQYEBOgBwIANBgQE6AFsgA0GBAToARiADQYEBOgAxIANBgQE6ABxBgX9B/wAgEBsMAQsCQCASBEAgEkEBayICRQ0BIAMgCy0AAToAHCACQQFGDQEgAyALLQACOgAxIAJBAkYNASADIAstAAM6AEYgAkEDRg0BIAMgCy0ABDoAWyACQQRGDQEgAyALLQAFOgBwIAJBBUYNASADIAstAAY6AIUBIAJBBkYNASADIAstAAc6AJoBIAJBB0YNASADIAstAAg6AK8BIAJBCEYNASADIAstAAk6AMQBIAJBCUYNASADIAstAAo6ANkBIAJBCkYNASADIAstAAs6AO4BIAJBC0YNASADIAstAAw6AIMCIAJBDEYNASADIAstAA06AJgCIAJBDUYNASADIAstAA46AK0CIAJBDkYNASADIAstAA86AMICIAJBD0YNASADIAstABA6ANcCDAELQQFBAEEAQYjkxAAQ6gcAC0GBf0H/ACAQGyAQRQ0AGiALLQAACzoAACAHQQFqIANBCGpB5AL8CgAAIANB8AJqJAAgCUEBaw4EBAUGBwgLIAogAkHorsYAEIwHAAsgDkEJQfiuxgAQjAcACyAKIAJBiK/GABCMBwALIAogAkG4r8YAEIwHAAtBsH0hCwNAIARByAxqIAtqIgNB5gJqIAQtAMkMOgAAIANB5wJqIAQtAMoMOgAAIANB6AJqIAQtAMsMOgAAIANB6QJqIAQtAMwMOgAAIANB6gJqIAQtAM0MOgAAIANB6wJqIAQtAM4MOgAAIANB7AJqIAQtAM8MOgAAIANB7QJqIAQtANAMOgAAIANB7gJqIAQtANEMOgAAIANB7wJqIAQtANIMOgAAIANB8AJqIAQtANMMOgAAIANB8QJqIAQtANQMOgAAIANB8gJqIAQtANUMOgAAIANB8wJqIAQtANYMOgAAIANB9AJqIAQtANcMOgAAIANB9QJqIAQtANgMOgAAIANB9gJqIAQtANkMOgAAIANB9wJqIAQtANoMOgAAIANB+AJqIAQtANsMOgAAIANB+QJqIAQtANwMOgAAIAtBFWoiCw0ACwwECyA2QRBqIAQtAN0MIgNBgYKECGw2AAAgNUEQaiAELQDyDCILQYGChAhsNgAAIBhBEGogBC0Ahw0iCUGBgoQIbDYAACA0QRBqIAQtAJwNIgJBgYKECGw2AAAgM0EQaiAELQCxDSIIQYGChAhsNgAAIDYgA61CgYKEiJCgwIABfiJ5NwAAIDZBCGogeTcAACA1IAutQoGChIiQoMCAAX4ieTcAACA1QQhqIHk3AAAgGCAJrUKBgoSIkKDAgAF+Ink3AAAgGEEIaiB5NwAAIDQgAq1CgYKEiJCgwIABfiJ5NwAAIDRBCGogeTcAACAzQQhqIAitQoGChIiQoMCAAX4ieTcAACAzIHk3AAAgMkEQaiAELQDGDSIDQYGChAhsNgAAIDFBEGogBC0A2w0iC0GBgoQIbDYAACAwQRBqIAQtAPANIglBgYKECGw2AAAgL0EQaiAELQCFDiICQYGChAhsNgAAIC5BEGogBC0Amg4iCEGBgoQIbDYAACAyIAOtQoGChIiQoMCAAX4ieTcAACAyQQhqIHk3AAAgMSALrUKBgoSIkKDAgAF+Ink3AAAgMUEIaiB5NwAAIDAgCa1CgYKEiJCgwIABfiJ5NwAAIDBBCGogeTcAACAvIAKtQoGChIiQoMCAAX4ieTcAACAvQQhqIHk3AAAgLiAIrUKBgoSIkKDAgAF+Ink3AAAgLkEIaiB5NwAAIBNBEGogBC0Arw4iA0GBgoQIbDYAACAtQRBqIAQtAMQOIgtBgYKECGw2AAAgLEEQaiAELQDZDiIJQYGChAhsNgAAICtBEGogBC0A7g4iAkGBgoQIbDYAACAqQRBqIAQtAIMPIghBgYKECGw2AAAgE0EIaiADrUKBgoSIkKDAgAF+Ink3AAAgEyB5NwAAIC1BCGogC61CgYKEiJCgwIABfiJ5NwAAIC0geTcAACAsQQhqIAmtQoGChIiQoMCAAX4ieTcAACAsIHk3AAAgK0EIaiACrUKBgoSIkKDAgAF+Ink3AAAgKyB5NwAAICpBCGogCK1CgYKEiJCgwIABfiJ5NwAAICogeTcAACApQRBqIAQtAJgPIgNBgYKECGw2AAAgKUEIaiADrUKBgoSIkKDAgAF+Ink3AAAgKSB5NwAADAMLIARByAxqQeUCQRBBAUEBQRUQ4gIMAgsgFCEDIARBKGohC0EAIQkjAEEQayIOJAAgBEHIDGoiQiEFA0AgCSICQQFqIQkgAkECdEEBciFDQXAhEiADIQIgCyEIA0AgEkERaiFEAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgkBAgMEBQYHCAkACyAFIBJqIgdB5QBqIAdB5ABqLQAAIAdBzwBqLQAAIAdBOmotAAAgB0Elai0AACAHQRRqLQAAIAdBE2otAAAgB0ERai0AACAHQRJqLQAAampqampqakEEakH4/wNxQQN2QYGChAhsIhY2AAAgB0HQAGogFjYAACAHQTtqIBY2AAAgB0EmaiAWNgAADAkLIEJB5QJBBCBEIENBFRDiAgwICyAFIBJqIgdB5QBqIAdBFWotAAAgB0ETai0AACIWQQJqIhsgB0EUai0AACIdQQF0ampBFnRBgICAeHEgHSAHQRJqLQAAIh5BAmoiIyAWQQF0ampBDnRBgID8D3FqIBsgB0ERai0AACIWakEGdCAeQQd0akGA/gNxciAHQRBqLQAAIBZBAXRqICNqQQJ2aiIWNgAAIAdB0ABqIBY2AAAgB0E7aiAWNgAAIAdBJmogFjYAAAwHCyAFIBJqIgdB5QBqIAdBzwBqLQAAIhtBAmoiHSAHQeQAai0AACIWIBZBAXRqakECdkGBgoQIbDYAACAHQdAAaiAWIAdBOmotAAAiHkECaiIjaiAbQQF0akECdkGBgoQIbDYAACAHQTtqIB0gB0Elai0AACIWaiAeQQF0akECdkGBgoQIbDYAACAHQSZqICMgB0EQai0AAGogFkEBdGpBAnZBgYKECGw2AAAMBgsgBSASaiIHQRhqLQAAIRYgB0EXai0AACEbIAdBEWotAAAhOyAHQRJqLQAAIR0gB0ETai0AACEeIA4gB0EWai0AACIjIAdBFGotAAAiRkECaiJbIAdBFWotAAAiJUEBdGpqQQJ2OgADIA4gJSAeQQJqIlwgRkEBdGpqQQJ2OgACIA4gHSAeQQF0aiBbakECdjoAASAOIDsgHUEBdGogXGpBAnY6AAAgB0EmaiAOKAIANgAAIA4gJSAbQQJqIh1qICNBAXRqQQJ2OgAEIAdBO2ogDigAATYAACAOIBYgI2ogG0EBdGpBAmpBAnY6AAUgB0HQAGogDigBAjYAACAOIBYgHWogFkEBdGpBAnY6AAYgB0HlAGogDigAAzYAAAwFCyAFIBJqIgdBFGotAAAhOyAHQRNqLQAAIRYgB0HkAGotAAAhRiAHQc8Aai0AACEbIAdBOmotAAAhHSAHQSVqLQAAIR4gDiAHQRJqLQAAIltBAmoiXCAHQRBqLQAAIiNqIAdBEWotAAAiJUEBdGpBAnY6AAwgDiAlIB5BAmoidyAjQQF0ampBAnY6AAsgDiAjIB1BAmoieCAeQQF0ampBAnY6AAogDiAbIB1BAXRqIHdqQQJ2OgAJIAdB0ABqIA4oAAk2AAAgDiBGIBtBAXRqIHhqQQJ2OgAIIAdB5QBqIA4oAgg2AAAgDiA7IFwgFkEBdGpqQQJ2OgAOIA4gFiAlIFtBAXRqakECakECdjoADSAHQSZqIA4oAAs2AAAgB0E7aiAOKAEKNgAADAQLIAUgEmoiB0HRAGogB0EQai0AACIdIAdBEWotAAAiFmpBAWpBAXYiGzoAACAHQSZqIBs6AAAgB0HSAGogFiAHQRJqLQAAIhtqQQFqQQF2Ih46AAAgB0EnaiAeOgAAIAdB5QBqIAdBJWotAAAiHiAHQc8Aai0AACAHQTpqLQAAIiNBAXRqakECakECdjoAACAHQeYAaiAWIB4gHUEBdGpqQQJqQQJ2IiU6AAAgB0HQAGogHSAjIB5BAXRqakECakECdjoAACAHQTtqICU6AAAgB0HnAGogGyAdIBZBAXRqakECakECdiIdOgAAIAdBPGogHToAACAHQegAaiAHQRNqLQAAIh0gFiAbQQF0ampBAmpBAnYiHjoAACAHQRRqLQAAIRYgB0HTAGogGyAdakEBakEBdiIjOgAAIAdBPWogHjoAACAHQShqICM6AAAgB0E+aiAWIBsgHUEBdGpqQQJqQQJ2OgAAIAdBKWogFiAdakEBakEBdjoAAAwDCyAFIBJqIgdB0ABqIAdBEmotAAAiHSAHQRNqLQAAIhZqQQFqQQF2Ihs6AAAgB0EmaiAdIAdBEWotAAAiI2pBAWpBAXY6AAAgB0EnaiAbOgAAIAdB0QBqIBYgB0EUai0AACIbakEBakEBdiIeOgAAIAdBKGogHjoAACAHQdIAaiAbIAdBFWotAAAiHmpBAWpBAXYiJToAACAHQeUAaiAbIB1qIBZBAXRqQQJqQQJ2Ijs6AAAgB0E8aiA7OgAAIAdB5gBqIBYgHkECaiI7IBtBAXRqakECdiJGOgAAIAdBPWogRjoAACAHQTtqICMgFiAdQQF0ampBAmpBAnY6AAAgB0EYai0AACEjIAdBF2otAAAhFiAHQecAaiAHQRZqLQAAIh0gGyAeQQF0ampBAmpBAnYiGzoAACAHQSlqICU6AAAgB0HoAGogIyAdIBZBAXRqakECakECdjoAACAHQdMAaiAWIB1BAXQgO2pqQQJ2OgAAIAdBPmogGzoAAAwCCyAFIBJqIgdB5QBqIAdB5ABqLQAAIiMgB0HPAGotAAAiHWpBAWpBAXY6AAAgB0HnAGogHSAHQTpqLQAAIhZqQQFqQQF2Ihs6AAAgB0HQAGogGzoAACAHQdIAaiAWIAdBJWotAAAiG2pBAWpBAXYiHjoAACAHQTtqIB46AAAgB0E9aiAbIAdBEGotAAAiHmpBAWpBAXYiJToAACAHQeYAaiAWICMgHUEBdGpqQQJqQQJ2OgAAIAdB6ABqIBsgHSAWQQF0ampBAmpBAnYiHToAACAHQdEAaiAdOgAAIAdB0wBqIB4gFiAbQQF0ampBAmpBAnYiFjoAACAHQTxqIBY6AAAgB0ETai0AACEjIAdBEmotAAAhFiAHQT5qIAdBEWotAAAiHSAbIB5BAXRqakECakECdiIbOgAAIAdBJmogJToAACAHQSlqICMgHSAWQQF0ampBAmpBAnY6AAAgB0EoaiAWIB4gHUEBdGpqQQJqQQJ2OgAAIAdBJ2ogGzoAAAwBCyAFIBJqIgdB6ABqIAdB5ABqLQAAIhY6AAAgB0HnAGogFjoAACAHQeYAaiAWOgAAIAdB5QBqIBY6AAAgB0HTAGogFjoAACAHQdIAaiAWOgAAIAdBO2ogB0E6ai0AACIbIAdBzwBqLQAAIh1qQQFqQQF2Ih46AAAgB0EoaiAeOgAAIAdBJmogGyAHQSVqLQAAIh5qQQFqQQF2OgAAIAdB0ABqIBYgHWoiI0EBakEBdiIlOgAAIAdBPWogJToAACAHQTxqIBYgG2ogHUEBdGpBAmpBAnYiJToAACAHQSlqICU6AAAgB0HRAGogIyAWQQF0akECakECdiIWOgAAIAdBPmogFjoAACAHQSdqIB0gHiAbQQF0ampBAmpBAnY6AAALIEJB5QIgCCBDIERBFRDXAiACQQFqIQIgCEFAayEIIBJBBGoiEg0ACyADQQRqIQMgC0GAAmohCyAFQdQAaiEFIAlBBEcNAAsgDkEQaiQADAMLIARByAxqQeUCQRBBFSAQQQBHIApBAEcQgwQLIARByAxqIgNB5QIgBEEoakEBQQFBFRDXAiADQeUCIHBBAUEFQRUQ1wIgA0HlAiBvQQFBCUEVENcCIANB5QIgbkEBQQ1BFRDXAiADQeUCIG1BBUEBQRUQ1wIgA0HlAiBsQQVBBUEVENcCIANB5QIga0EFQQlBFRDXAiADQeUCIGpBBUENQRUQ1wIgA0HlAiBpQQlBAUEVENcCIANB5QIgaEEJQQVBFRDXAiADQeUCIGdBCUEJQRUQ1wIgA0HlAiBmQQlBDUEVENcCIANB5QIgZUENQQFBFRDXAiADQeUCIGRBDUEFQRUQ1wIgA0HlAiBjQQ1BCUEVENcCIANB5QIgYkENQQ1BFRDXAgwBCyAKIAJBmK/GABCMBwALAkAgQQRAIA0gBC0A2Aw6AAAgQUEBayIDQQ9NBEBBAEEQIANB0K3GABDqBwALIA0gBC0A7Qw6AAEgDSAELQCCDToAAiANIAQtAJcNOgADIA0gBC0ArA06AAQgDSAELQDBDToABSANIAQtANYNOgAGIA0gBC0A6w06AAcgDSAELQCADjoACCANIAQtAJUOOgAJIA0gBC0Aqg46AAogDSAELQC/DjoACyANIAQtANQOOgAMIA0gBC0A6Q46AA0gDSAELQD+DjoADiANIAQtAJMPOgAPIA0gBC0AqA86ABAgIiAKQQR0IgNJDQggIiADayILQQ9LDQFBAEEQIAtB4K3GABDqBwALQQBBAEHArcYAEIwHAAsgAyB2aiIDIAQtAJkPOgAAIAMgBC0Amg86AAEgAyAELQCbDzoAAiADIAQtAJwPOgADIAMgBC0AnQ86AAQgAyAELQCeDzoABSADIAQtAJ8POgAGIAMgBC0AoA86AAcgAyAELQChDzoACCADIAQtAKIPOgAJIAMgBC0Aow86AAogAyAELQCkDzoACyADIAQtAKUPOgAMIAMgBC0Apg86AA0gAyAELQCnDzoADiADIAQtAKgPOgAPICRBBHQhDiABKAIIIgkgCiAkIEVsakEEdCIHayEIIAEoAgQhDUEAIRJBACECAkADQCAHIAlLDQEgCEEPTQ0DIAcgDWoiAyAEQcgMaiIFIAJqIgtBFmotAAA6AAAgA0EBaiALQRdqLQAAOgAAIANBAmogC0EYai0AADoAACADQQNqIAtBGWotAAA6AAAgA0EEaiALQRpqLQAAOgAAIANBBWogC0Ebai0AADoAACADQQZqIAtBHGotAAA6AAAgA0EHaiALQR1qLQAAOgAAIANBCGogC0Eeai0AADoAACADQQlqIAtBH2otAAA6AAAgA0EKaiALQSBqLQAAOgAAIANBC2ogC0Ehai0AADoAACADQQxqIAtBImotAAA6AAAgA0ENaiALQSNqLQAAOgAAIANBDmogC0Ekai0AADoAACADQQ9qIAtBJWotAAA6AAAgCCAOayEIIAcgDmohByACQRVqIQIgEkEBaiISQRBJDQALIAEvAaAFIQkgBC0ADCEDIARB2BhqIAogECABKALEBCICIAEoAsgEIgggASgC0AQiDiABKALUBCIHELoEIAUgCiAQIAEoAtwEIg0gASgC4AQiEiABKALoBCIFIAEoAuwEIhYQugQCQAJAAkACQAJAIANBAWsOAwECAwALIARB2BhqQdEAQQhBCSAQQQBHIgMgCkEARyILEIMEIARByAxqQdEAQQhBCSADIAsQgwQMAwsgBCAELQDZGCIDOgDiGCAEIAQtANoYIgs6AOMYIAQgBC8A2xg7AOQYIAQgBCgA3Rg2AOYYIAQgAzoA6xggBCAEKADaGDYA7BggBCAELwDeGDsA8BggBCAELQDgGDoA8hggBCADOgD0GCAEIAs6APUYIAQgBC0A2xg6APYYIAQgBC0A3Bg6APcYIAQgBC8A3RgiAzsA+BggBCAELQDfGCILOgD6GCAEIAQtAOAYIiI6APsYIAQgBCkA2Rg3AP0YIAQgBCgA2Rg2AIYZIAQgAzsAihkgBCALOgCMGSAEICI6AI0ZIAQgBC0A2Rg6AI8ZIAQgBC0A2hg6AJAZIAQgBC0A2xgiAzoAkRkgBCAELQDcGDoAkhkgBCAEKADdGDYAkxkgBCAELQDZGCILOgCYGSAEIAQoANoYNgCZGSAEIAQvAN4YOwCdGSAEIAQtAOAYOgCfGSAEIAs6AKEZIAQgBC0A2hg6AKIZIAQgAzoAoxkgBCAELQDcGDoApBkgBCAELQDdGDoApRkgBCAELQDeGDoAphkgBCAELQDfGDoApxkgBCAELQDgGDoAqBkgBCAELQDJDDoA0gwgBCAELQDKDDoA0wwgBCAELQDLDDoA1AwgBCAELQDMDDoA1QwgBCAELQDNDDoA1gwgBCAELQDODDoA1wwgBCAELQDPDDoA2AwgBCAELQDQDDoA2QwgBCAELQDJDDoA2wwgBCAELQDKDDoA3AwgBCAELQDLDDoA3QwgBCAELQDMDDoA3gwgBCAELQDNDDoA3wwgBCAELQDODDoA4AwgBCAELQDPDDoA4QwgBCAELQDQDDoA4gwgBCAELQDJDDoA5AwgBCAELQDKDDoA5QwgBCAELQDLDDoA5gwgBCAELQDMDDoA5wwgBCAELQDNDDoA6AwgBCAELQDODDoA6QwgBCAELQDPDDoA6gwgBCAELQDQDDoA6wwgBCAELQDJDDoA7QwgBCAELQDKDDoA7gwgBCAELQDLDDoA7wwgBCAELQDMDDoA8AwgBCAELQDNDDoA8QwgBCAELQDODDoA8gwgBCAELQDPDDoA8wwgBCAELQDQDDoA9AwgBCAELQDJDDoA9gwgBCAELQDKDDoA9wwgBCAELQDLDDoA+AwgBCAELQDMDDoA+QwgBCAELQDNDDoA+gwgBCAELQDODDoA+wwgBCAELQDPDDoA/AwgBCAELQDQDDoA/QwgBCAELQDJDDoA/wwgBCAELQDKDDoAgA0gBCAELQDLDDoAgQ0gBCAELQDMDDoAgg0gBCAELQDNDDoAgw0gBCAELQDODDoAhA0gBCAELQDPDDoAhQ0gBCAELQDQDDoAhg0gBCAELQDJDDoAiA0gBCAELQDKDDoAiQ0gBCAELQDLDDoAig0gBCAELQDMDDoAiw0gBCAELQDNDDoAjA0gBCAELQDODDoAjQ0gBCAELQDPDDoAjg0gBCAELQDQDDoAjw0gBCAELQDJDDoAkQ0gBCAELQDKDDoAkg0gBCAELQDLDDoAkw0gBCAELQDMDDoAlA0gBCAELQDNDDoAlQ0gBCAELQDODDoAlg0gBCAELQDPDDoAlw0gBCAELQDQDDoAmA0MAgsgWCAEMQDhGEKBgoSIkKDAgAF+NwAAIFYgBDEA6hhCgYKEiJCgwIABfjcAACBVIAQxAPMYQoGChIiQoMCAAX43AAAgVCAEMQD8GEKBgoSIkKDAgAF+NwAAIFMgBDEAhRlCgYKEiJCgwIABfjcAACBSIAQxAI4ZQoGChIiQoMCAAX43AAAgUSAEMQCXGUKBgoSIkKDAgAF+NwAAIFAgBDEAoBlCgYKEiJCgwIABfjcAACBXIAQxANEMQoGChIiQoMCAAX43AAAgKCAEMQDaDEKBgoSIkKDAgAF+NwAAIE8gBDEA4wxCgYKEiJCgwIABfjcAACBOIAQxAOwMQoGChIiQoMCAAX43AAAgTSAEMQD1DEKBgoSIkKDAgAF+NwAAIEwgBDEA/gxCgYKEiJCgwIABfjcAACAYIAQxAIcNQoGChIiQoMCAAX43AAAgSyAEMQCQDUKBgoSIkKDAgAF+NwAADAELIARB2BhqQdEAQQhBAUEBQQkQ4gIgBEHIDGpB0QBBCEEBQQFBCRDiAgsgBEHYGGoiA0HRACBhQQFBAUEJENcCIARByAxqIgtB0QAgYEEBQQFBCRDXAiADQdEAIF9BAUEFQQkQ1wIgC0HRACBeQQFBBUEJENcCIANB0QAgIUEFQQFBCRDXAiALQdEAICBBBUEBQQkQ1wIgA0HRACBaQQVBBUEJENcCIAtB0QAgWUEFQQVBCRDXAiAOIAcgAiAIIAMgChCOBiAFIBYgDSASIAsgChCOBiAJIB9sIQ4gCUEDdCEWIAogCSBJbGpBA3QhAiABKAIUIgcgJmohIiABKAIgIg0gJmohGyABKAIcIR0gASgCECEeQQAhBUEAIRIDQCACIAdLDQQgDiAiaiIDQQdNDQUgAiANSw0GIA4gG2oiA0EHTQ0HIARByAxqIBJqIgNBCmotAAAhJCACIB5qIgsgBEHYGGogEmoiCUEKai0AADoAACACIB1qIgggJDoAACADQQtqLQAAISQgC0EBaiAJQQtqLQAAOgAAIAhBAWogJDoAACADQQxqLQAAISQgC0ECaiAJQQxqLQAAOgAAIAhBAmogJDoAACADQQ1qLQAAISQgC0EDaiAJQQ1qLQAAOgAAIAhBA2ogJDoAACADQQ5qLQAAISQgC0EEaiAJQQ5qLQAAOgAAIAhBBGogJDoAACADQQ9qLQAAISQgC0EFaiAJQQ9qLQAAOgAAIAhBBWogJDoAACADQRBqLQAAISQgC0EGaiAJQRBqLQAAOgAAIAhBBmogJDoAACADQRFqLQAAIQMgC0EHaiAJQRFqLQAAOgAAIAhBB2ogAzoAACAOIBZrIQ4gAiAWaiECIBJBCWohEiAFQQFqIgVBCEkNAAsgASgCmAQiAiABKAKQBEYEQEEAIQgjAEEgayILJAACQAJAQQQgGSIDKAIAIg5BAXQiCSAJQQRNGyIHrUIefiJ5QiCIUEUNACB5pyINQQBIDQAgCyAOBH8gCyAOQR5sNgIcIAsgAygCBDYCFEEBBUEACzYCGCALQQhqQQEgDSALQRRqEIUHIAsoAghBAUcNASALKAIQIQkgCygCDCEICyAIIAlBmKnGABCTCQALIAsoAgwhCSADIAc2AgAgAyAJNgIEIAtBIGokAAsgASgClAQgAkEebGoiAyAE/QABCv0LAAAgA0EWaiAEQSBqKQEANwAAIANBEGogBEEaaikBADcAACABIAJBAWo2ApgEICZBCGshJiAKQQFqIQogNyA3IHVJIgNqITcgAw0BDAoLCyAHIAkgCUGArsYAEOoHAAtBAEEQIAhB8K3GABDqBwALIAIgByAHQfivxgAQ6gcAC0EAQQggA0HIr8YAEOoHAAsgAiANIA1B6K/GABDqBwALQQBBCCADQdivxgAQ6gcACyADICIgIkGQrsYAEOoHAAsgBCAEKQHaGDcDuAwgBCAEQeAYaikBADcBvgwgBC0A2RghBwsgBCAEKQO4DDcDqAwgBCAEKQG+DDcBrgwgAEEMaiAEKQGuDDcBACAAIAQpA6gMNwEGIAAgBzoABSAAIAI6AAQgAEGAgICAeDYCAAwJC0EREHEiA0UNASADQoGDhoyYsODAgX83AAAgA0EQakGBAToAACADQQhqQoGDhoyYsODAgX83AAAgASgCtAQiCwRAIAEoArgEIAtBARCiBwsgAUERNgK8BCABIAM2ArgEIAFBETYCtARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgCzAQiCwRAIAEoAtAEIAtBARCiBwsgAUEJNgLUBCABIAM2AtAEIAFBCTYCzARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQgH0FAaiEfIElBCGohSSBFQRBqIUUgESARIEpJIgtqIQMgESEQIAsNAAsMAgsAC0H4qMYAEIIIAAsgAS8BogUiR0UNAEEAIQdBASEDA0AgAyELAkAgAS8BoAUiSEUNAEEAIQMDQCADIAcgAS8BoAVsaiIGIAEoApgEIglJBEAgBEHQDGogASgClAQgBkEebGoiBkEIav0AAAD9CwMAIARB3gxqIAZBFmopAAA3AQAgBCAGKQAANwPIDAJAAkAgBEHIDGoiCi0AHSIGQQNNBEAgAS0ALSIJRQ0CIAotAAMhDUE/IAlBACABIAZBBHRqIgYtAD4bIAYsAD1qIgZBACAGQQBKGyAJIAEtAKQFGyIGIAZBP08bIQIgAS0ApgVFDQEgASgC8AMgAmohAiANQQRHDQEgASgCgAQgAmohAgwBCyAGQQRBuNXGABCMBwALQT8gAkEAIAJBAEobIgYgBkE/ThshBiABLQAuIgkEfyAGQf8BcUECQQEgCUEESxt2IghBCSAJa0H/AXEiCSAIIAlJGwUgBgshCSABLwGgBSESAn8CQAJAIAEtAChFBEAgAkEnTA0BQQMMAwsgAkEnTA0BQQIMAgsgAkETTA0AQQIMAQsgAkEATA0BIAJBDkoLIQggEkEDdCEZIBJBBHQhDkEBIRZBASAJQf8BcSIJIAlBAU0bIgkgBkEBdGoiEEEEaiERAkACQAJAAkACQAJAAkAgDUEERgRAIANFDQMMAQsgCi0AAEUEQCAKLQABIRYgAw0BDAILQQAhFiADRQ0DCyADQQR0QQRrIg0gB0EEdCIUIA5saiECIAEoAgQhCiABKAIIIQYCQAJAAkACQAJAAkACQAJAAkAgAS0AKkUEQCACIAZLDQMgBiACayIMQQdLDQEMDwsgAiAGSw0DIAYgAmsiDEEHSw0BDA0LIAggCSARIAIgCmoQ+AIgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEECciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQNyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEFciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQZyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEIciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQlyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEELciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQxyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEOciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQ9yIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgASgCFCIKIANBA3RBBGsiDCAHQQN0IgUgGWxqIgJPDQMMBAsgEUH/AXEiBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBA3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBC3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBD3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgYtAAIgBi0ABWsiAiACQR91IgpzIAprQQF2IAYtAAMiCiAGLQAEIg1rIhQgFEEfdSIUcyAUa0EBdGpPBEAgBkH/AEGAfyAKQfwAQYB/IA0gCmtBA2xB/wBBgH8gAiACQYB/TBsiAiACQf8AThtqIgIgAkGAf0wbIgIgAkH8AE4bQQNqQQN1akGAAWsiCiAKQYB/TBsiCiAKQf8AThtBgAFzOgADIAZB/wBBgH8gDUH7ACACIAJB+wBOG0EEakEDdWtBgAFrIgYgBkGAf0wbIgYgBkH/AE4bQYABczoABAsMBwsgAiAGIAZBuKfGABDqBwALIAIgBiAGQdioxgAQ6gcACyAKIAJrIhRBB00NASABKAIcIQ0gASgCICEGIAggCSARIAEoAhAiDyACahD4AiACIAZLDQMgBiACayIUQQdNDQIgCCAJIBEgAiANahD4AiAKIAwgBUEBciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQJyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBA3IgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEEciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQVyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBBnIgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEHciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCDAQLIAIgCiAKQZinxgAQ6gcAC0EAQQggFEHopsYAEOoHAAtBAEEIIBRB+KbGABDqBwALIAIgBiAGQYinxgAQ6gcACyAWQQFxDQBBACEWDAELIANBBHQhCiAHQQR0Ig0gDmwhFCABKAIEIQYgASgCCCECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAqRQRAIAYgCiAUaiIPaiETQQAhBkEAIAcgEmxBCHQgCmprIQVBACANQQFqIBJsIi5BBHQgCmoiL2shGkEAIA1BAmogEmwiMEEEdCAKaiIxayEMQQAgDUEDaiASbCIyQQR0IApqIjNrIRRBACANQQRqIBJsIjRBBHQgCmoiNWshFkEAIA1BBWogEmwiNkEEdCAKaiI3ayEYQQAgDUEGaiASbCI4QQR0IApqIjlrISZBACANQQdqIBJsIh1BBHQgCmoiHmshIkEAIA1BCGogEmwiOkEEdCAKaiIXayEbQQAgDUEJaiASbCIcQQR0IApqIjxrISdBACANQQpqIBJsIj1BBHQgCmoiPmshKEEAIA1BC2ogEmwiP0EEdCAKaiJAayEpQQAgDUEMaiASbCIkQQR0IApqIkFrISpBACANQQ1qIBJsIkJBBHQgCmoiQ2shK0EAIA1BDmogEmwiREEEdCAKaiIjayEsQQAgDUEPaiASbCIlQQR0IApqIkVrIS0DQCAGIA9qIg0gAksNESACIAVqIg1BB00NFCAIIAkgECAGIBNqIh8QlAQgBiAvaiACSw0QIAIgGmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDFqIAJLDQ8gAiAMaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgM2ogAksNDiACIBRqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA1aiACSw0NIAIgFmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDdqIAJLDQwgAiAYaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgOWogAksNCyACICZqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiAeaiACSw0KIAIgImoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIBdqIAJLDQkgAiAbaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgPGogAksNCCACICdqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA+aiACSw0HIAIgKGoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIEBqIAJLDQYgAiApaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgQWogAksNBSACICpqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiBDaiACSw0EIAIgK2oiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGICNqIAJLDQMgAiAsaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgRWogAksNAiACIC1qIg1BCEkNFCAIIAkgECAOIB9qEJQEIAVBBGshBSAaQQRrIRogDEEEayEMIBRBBGshFCAWQQRrIRYgGEEEayEYICZBBGshJiAiQQRrISIgG0EEayEbICdBBGshJyAoQQRrISggKUEEayEpICpBBGshKiArQQRrISsgLEEEayEsIC1BBGshLSAGQQRqIgZBDEcNAAsMEQsgEEH/AXEhDyAGIAogFGoiPGohPUEAIAcgEmxBCHQgCmprIRogBiANQQFqIBJsIj5BBHQgCmoiLmohP0EAIC5rIQwgBiANQQJqIBJsIkBBBHQgCmoiL2ohJEEAIC9rIRQgBiANQQNqIBJsIkFBBHQgCmoiMGohQkEAIDBrIRYgBiANQQRqIBJsIkNBBHQgCmoiMWohREEAIDFrIRggBiANQQVqIBJsIiNBBHQgCmoiMmohJUEAIDJrISYgBiANQQZqIBJsIkVBBHQgCmoiM2ohH0EAIDNrISIgBiANQQdqIBJsIklBBHQgCmoiNGohSkEAIDRrIRsgBiANQQhqIBJsIktBBHQgCmoiNWohTEEAIDVrIScgBiANQQlqIBJsIk1BBHQgCmoiNmohTkEAIDZrISggBiANQQpqIBJsIk9BBHQgCmoiN2ohUEEAIDdrISkgBiANQQtqIBJsIlFBBHQgCmoiOGohUkEAIDhrISogBiANQQxqIBJsIlNBBHQgCmoiOWohVEEAIDlrISsgBiANQQ1qIBJsIlVBBHQgCmoiHWohVkEAIB1rISwgBiANQQ5qIBJsIldBBHQgCmoiHmohWEEAIB5rIS0gBiANQQ9qIBJsIllBBHQgCmoiOmohWkEAIDprIQ1BdCEGAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAAkAgAiAGIDxqIgVBDGpPBEAgAiAaaiIFQQdLDQEMEwsgBUEMagwRCyAPIAYgPWoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAuakEMaiACSw0PIAIgDGoiBUEISQ0RIA8gBiA/aiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIC9qQQxqIAJLDQ4gAiAUaiIFQQhJDREgDyAGICRqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgMGpBDGogAksNDSACIBZqIgVBCEkNESAPIAYgQmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAxakEMaiACSw0MIAIgGGoiBUEISQ0RIA8gBiBEaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDJqQQxqIAJLDQsgAiAmaiIFQQhJDREgDyAGICVqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgM2pBDGogAksNCiACICJqIgVBCEkNESAPIAYgH2oiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA0akEMaiACSw0JIAIgG2oiBUEISQ0RIA8gBiBKaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDVqQQxqIAJLDQggAiAnaiIFQQhJDREgDyAGIExqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgNmpBDGogAksNByACIChqIgVBCEkNESAPIAYgTmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA3akEMaiACSw0GIAIgKWoiBUEISQ0RIA8gBiBQaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDhqQQxqIAJLDQUgAiAqaiIFQQhJDREgDyAGIFJqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOWpBDGogAksNBCACICtqIgVBCEkNESAPIAYgVGoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAdakEMaiACSw0DIAIgLGoiBUEISQ0RIA8gBiBWaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIB5qQQxqIAJLDQIgAiAtaiIFQQhJDREgDyAGIFhqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOmpBDGogAksNASACIA1qIgVBCEkNESAPIAYgWmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgGkEEayEaIAxBBGshDCAUQQRrIRQgFkEEayEWIBhBBGshGCAmQQRrISYgIkEEayEiIBtBBGshGyAnQQRrIScgKEEEayEoIClBBGshKSAqQQRrISogK0EEayErICxBBGshLCAtQQRrIS0gDUEEayENIAZBBGoiBg0AC0EBIRYMIgsgWUEEdCAKaiAGakEMagwOCyBXQQR0IApqIAZqQQxqDA0LIFVBBHQgCmogBmpBDGoMDAsgU0EEdCAKaiAGakEMagwLCyBRQQR0IApqIAZqQQxqDAoLIE9BBHQgCmogBmpBDGoMCQsgTUEEdCAKaiAGakEMagwICyBLQQR0IApqIAZqQQxqDAcLIElBBHQgCmogBmpBDGoMBgsgRUEEdCAKaiAGakEMagwFCyAjQQR0IApqIAZqQQxqDAQLIENBBHQgCmogBmpBDGoMAwsgQUEEdCAKaiAGakEMagwCCyBAQQR0IApqIAZqQQxqDAELID5BBHQgCmogBmpBDGoLIAIgAkG4qMYAEOoHAAtBAEEIIAVBqKjGABDqBwALICVBBHQgCmogBmohDQwOCyBEQQR0IApqIAZqIQ0MDQsgQkEEdCAKaiAGaiENDAwLICRBBHQgCmogBmohDQwLCyA/QQR0IApqIAZqIQ0MCgsgPUEEdCAKaiAGaiENDAkLIBxBBHQgCmogBmohDQwICyA6QQR0IApqIAZqIQ0MBwsgHUEEdCAKaiAGaiENDAYLIDhBBHQgCmogBmohDQwFCyA2QQR0IApqIAZqIQ0MBAsgNEEEdCAKaiAGaiENDAMLIDJBBHQgCmogBmohDQwCCyAwQQR0IApqIAZqIQ0MAQsgLkEEdCAKaiAGaiENCyANIAIgAkGYqMYAEOoHAAsCQAJAIAEoAhQiCiADQQN0IgwgB0EDdCIFIBlsaiICSQ0AAkACQCAKIAJrIhRBB00NACABKAIcIQ0gASgCICEGIAggCSAQIAEoAhAiDyACahCUBCACIAZLDQMgBiACayIUQQdNDQEgCCAJIBAgAiANahCUBCAKIAVBAXIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUECciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQNyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBBHIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUEFciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQZyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBB3IgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEQQEhFgwEC0EAQQggFEHIp8YAEOoHAAtBAEEIIBRB2KfGABDqBwALIAIgCiAKQfinxgAQ6gcACyACIAYgBkHop8YAEOoHAAsCQCAHRQ0AIAcgDmxBBHQgA0EEdGoiCkEPciENIApBDnIhFCAKQQ1yIQwgCkEMciEFIApBC3IhDyAKQQpyIRogCkEJciEYIApBCHIhJiAKQQdyISIgCkEGciEbIApBBXIhJyAKQQRyISggCkEDciEpIApBAnIhKiAKQQFyISsgASgCCCEGIAEoAgQhAiABLQAqRQRAIAggCSARIAIgBiAKIA4Q+gIgCCAJIBEgAiAGICsgDhD6AiAIIAkgESACIAYgKiAOEPoCIAggCSARIAIgBiApIA4Q+gIgCCAJIBEgAiAGICggDhD6AiAIIAkgESACIAYgJyAOEPoCIAggCSARIAIgBiAbIA4Q+gIgCCAJIBEgAiAGICIgDhD6AiAIIAkgESACIAYgJiAOEPoCIAggCSARIAIgBiAYIA4Q+gIgCCAJIBEgAiAGIBogDhD6AiAIIAkgESACIAYgDyAOEPoCIAggCSARIAIgBiAFIA4Q+gIgCCAJIBEgAiAGIAwgDhD6AiAIIAkgESACIAYgFCAOEPoCIAggCSARIAIgBiANIA4Q+gIgASgCICEGIAEoAhwhAiAIIAkgESABKAIQIg0gASgCFCIUIAcgGWxBA3QgA0EDdGoiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIgCCAJIBEgDSAUIApBAXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBAnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBA3IiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBHIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBB3IiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIMAQsgESACIAYgCiAOEOEFIBEgAiAGICsgDhDhBSARIAIgBiAqIA4Q4QUgESACIAYgKSAOEOEFIBEgAiAGICggDhDhBSARIAIgBiAnIA4Q4QUgESACIAYgGyAOEOEFIBEgAiAGICIgDhDhBSARIAIgBiAmIA4Q4QUgESACIAYgGCAOEOEFIBEgAiAGIBogDhDhBSARIAIgBiAPIA4Q4QUgESACIAYgBSAOEOEFIBEgAiAGIAwgDhDhBSARIAIgBiAUIA4Q4QUgESACIAYgDSAOEOEFCyAWRQ0DIANBBHQhESAHQQR0IQogASgCCCEGIAEoAgQhAiABLQAqRQRAIBJBBnQhFCAKQQRqIBJsQQR0IBFqQQ9qIQ1BfSEFA0AgCCAJIBAgAiAGIA1BD2sgDhDgBCAIIAkgECACIAYgDUEOayAOEOAEIAggCSAQIAIgBiANQQ1rIA4Q4AQgCCAJIBAgAiAGIA1BDGsgDhDgBCAIIAkgECACIAYgDUELayAOEOAEIAggCSAQIAIgBiANQQprIA4Q4AQgCCAJIBAgAiAGIA1BCWsgDhDgBCAIIAkgECACIAYgDUEIayAOEOAEIAggCSAQIAIgBiANQQdrIA4Q4AQgCCAJIBAgAiAGIA1BBmsgDhDgBCAIIAkgECACIAYgDUEFayAOEOAEIAggCSAQIAIgBiANQQRrIA4Q4AQgCCAJIBAgAiAGIA1BA2sgDhDgBCAIIAkgECACIAYgDUECayAOEOAEIAggCSAQIAIgBiANQQFrIA4Q4AQgCCAJIBAgAiAGIA0gDhDgBCANIBRqIQ0gBUEBaiIFDQALIAEoAiAhBiABKAIcIQIgCCAJIBAgASgCECIRIAEoAhQiCiAZIAdBA3RBBHJsIANBA3RqIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEIAggCSAQIBEgCiAOQQFyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQJyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQNyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQRyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQVyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQZyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQdyIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEDAQLIBJBBnQhDSAKQQRqIBJsQQR0IBFqQQ9qIQlBfSEIA0AgECACIAYgCUEPayAOEOEFIBAgAiAGIAlBDmsgDhDhBSAQIAIgBiAJQQ1rIA4Q4QUgECACIAYgCUEMayAOEOEFIBAgAiAGIAlBC2sgDhDhBSAQIAIgBiAJQQprIA4Q4QUgECACIAYgCUEJayAOEOEFIBAgAiAGIAlBCGsgDhDhBSAQIAIgBiAJQQdrIA4Q4QUgECACIAYgCUEGayAOEOEFIBAgAiAGIAlBBWsgDhDhBSAQIAIgBiAJQQRrIA4Q4QUgECACIAYgCUEDayAOEOEFIBAgAiAGIAlBAmsgDhDhBSAQIAIgBiAJQQFrIA4Q4QUgECACIAYgCSAOEOEFIAkgDWohCSAIQQFqIggNAAsMAwtBAEEIIA1BiKjGABDqBwALQQBBCCAMQcioxgAQ6gcAC0EAQQggDEGop8YAEOoHAAsgA0EBaiIDIEhHDQEMAgsLIAYgCUHoqMYAEIwHAAsgB0EBaiEHIAsgCyBHSSIGaiEDIAYNAAsLIAAgAf0AAgD9CwIAIABBIGogAUEgav0AAgD9CwIAIABBEGogAUEQav0AAgD9CwIAIAEoAnQiAARAIBUoAgAgAEECdEEBEKIHCyABKAKQBCIABEAgASgClAQgAEEebEEBEKIHCyBdEL8CIAEoAvAEQYAhQQEQogcgASgCnAQiAARAIAEoAqAEIABBHmxBARCiBwsgASgCqAQiAARAIAEoAqwEIABBARCiBwsgASgCtAQiAARAIAEoArgEIABBARCiBwsgASgCwAQiAARAIAEoAsQEIABBARCiBwsgASgCzAQiAARAIAEoAtAEIABBARCiBwsgASgC2AQiAEUNBCABKALcBCAAQQEQogcMBAsgekIgiKchEiB6QhCIpyEVIHpCCIinIQgLCyAAIA42AhAgACADOgAIIAAgAjsBBiAAIAc6AAUgACALOgAEIABBgICAgHg2AgAgAEEPaiASQRh2rTwAACAAQQ1qIBJBCHatPQAAIAAgEkEYdK0gCEH/AXEgFUEIdHKtQv///weDhD4ACQsgASgCdCIABEAgASgCcCIGQQRrKAIAIgNBeHEiCyAAQQJ0IgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoApAEIgAEQCABKAKUBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAgAiAARAIAEoAgQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCDCIABEAgASgCECIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAIYIgAEQCABKAIcIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAFBmAFqEL8CIAEoAvAEIgZBBGsoAgAiAEF4cUGEIUGIISAAQQNxIgMbSQ0BIANBACAAQaghTxsNAiAGEKICIAEoApwEIgAEQCABKAKgBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAqgEIgAEQCABKAKsBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAK0BCIABEAgASgCuAQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCwAQiAARAIAEoAsQEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAswEIgAEQCABKALQBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKALYBCIARQ0AIAEoAtwEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0BIANBACALIABBJ2pLGw0CIAYQogILAkAgASgC5AQiAARAIAEoAugEIgFBBGsoAgAiBkF4cSIDQQRBCCAGQQNxIgYbIABqSQ0CIAZBACADIABBJ2pLGw0BIAEQogILIARBsBlqJAAPCwwBC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu6pAECEX8BfiMAQbABayIGJAAgAy0AACIPQRh0IAMtAAMiB0EYdCINIA9yIAMtAAEiCkEIdCIRIAMtAAIiCUEQdCIMcnIiCEGA/gNxQQh0ciAMQQh2IAdyciEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACQAJAAkACQCAGAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AAEEBaw4FBAABAgwDCyABQgA3A4ADIAEgAzYC/AIgAUEDOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxLCyACKAIEIQsgASgCCEECRiAPIBFyIAwgDXJyIgNByZCRkgVHcQ0DIAMgASgC2AIiCEcNBAxJCyACKAABIREgAS0AkQMNBCABKALQAiICIANGDQQgAS0AlANBAUZBACARQSBxGw0FIAAgETYCECAAIAI2AgwgACADNgIIIABBADoABCAAQQE2AgAMSQsgCEGJobm6BEcEQCAAQQE2AgAgAEEBOgAEDEkLIAFCADcDgAMgAUEBOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxICyAIQY2U6NAARwRAIABBATYCACAAQQE6AAQMSAsgAUIANwOAAyABQQI6APgCIABBADoACCAAIAU2AgQgAEEANgIADEcLIAAgAzYABSAAQQQ6AAQgAEEBNgIADEYLIAhB5siFogVHIAhByYiFogVHcQ1EAkAgBARAIAZBQGshCCABKALwAiENIAEtAPQCIQwjAEEQayILJAACQAJAIAxBAXFFDQAgDS0AowdBB0YNAAJAIAQoAgwiECgCACISIAQoAgQiDEcEQCAMIAQoAggiESgCACIOSQ0BIAtBBGogDUEBQQAgBCgCACAOaiAMIA5rIBIgDmtBABBCIAstAAQEQCAIIAstAAU6AAEgCEEcOgAADAQLIBAgECgCACALKAIMaiIENgIAIA0tAKMHQQdGBEAgESAENgIAIAhBqAI7AQAMBAsgBCAMRwRAIAhBnAI7AQAMBAsgCEEoOwEAIBEgDEGAgAJrIgRBACAEIAxNGyIEIBEoAgAiCCAEIAhLGzYCAAwDCyAIQagCOwEADAILIA4gDCAMQeCQxQAQ6gcACyAIQagCOwEACyALQRBqJAAgBi0AQSEEIAYtAEAiCEEoRg0BIAAgBikBQjcBBiAAQQxqIAZByABqKQEANwEAIAAgBDoABSAAIAg6AAQgAEEBNgIADEcLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCDEQLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIARBAXENQyAAQQU6AAggAEIANwIADEULIAEtAOwCQQFrDgICAwELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQwsgBiARNgIkIBFBGHYhByARQRB2IQIgEUEIdiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBFB/wFxQckAaw4yAG9vb29vbwFvb29vb29vb29vb29vb29vBwoIbwsCBm8Mb29vCW9vBW9vAwRvb29vbw1vCyAEQf8BcUHEAGsOBQ8Obm4NbgsgBEH/AXFBzABHIAJB/wFxQdQAR3IgB0HFAEdyDW0gASgCCEECRg0zIAEoAuABQYGAgIB4Rg0QIAZB0JjRqgQ2AClBCSECIAZBCToAKAxkCyAEQf8BcUHjAGsOAhEQbAsgBEH/AXFBwgBrIgRFDREgBEEQRg0SDGsLIARB/wFxQcUAayIERQ0VIARBDUYNFAxqCyAHQfMARyAEQf8BcUHIAEdyIAJB/wFxQdkAR3INaSABKAIIQQJGDTogAS0AjAMNOyABLQCcAkECRg0XIAZB8JDlmgc2AClBCSECIAZBCToAKAxgCyAHQcEARyAEQf8BcUHBAEdyIAJB/wFxQc0AR3INaCABKAIIIgJBAkYNOyABLQCMAw08IAJBAUcNFyAGQeeCtYoENgApQQkhAiAGQQk6ACgMXwsgB0HMAEcgBEH/AXFB4wBHciACQf8BcUHUAEdyDWcgASgCCEECRg08IAEtAIwDDT0gASgCNEUNFyAGQeHG0eIENgApQQkhAiAGQQk6ACgMXgsgBEH/AXFByABrDgUXGGZmGWYLIAdB1gBHIARB/wFxQcQAR3IgAkH/AXFBwwBHcg1lIAEoAghBAkYNQCABKAJsRQ0cIAZB7YiNsgU2AClBCSECIAZBCToAKAxcCyAHQcQARyAEQf8BcUHLAEdyIAJB/wFxQccAR3INZCABKAIIQQJGDUEgASgC7AFBgYCAgHhGDRwgBkHilp2iBDYAKUEJIQIgBkEJOgAoDFsLIAdB5gBHIARB/wFxQdgAR3IgAkH/AXFByQBHcg1jIAEoAghBAkYNQSABKAKEAkGBgICAeEYNHCAGQeWwpbIGNgApQQkhAiAGQQk6ACgMWgsgBEH/AXFBwwBrIgRFDRwgBEERRg1HDGILIAdB9ABHIARB/wFxQdQAR3INYSACQf8BcUHYAEYNHAxhCyACQf8BcUHEAEcgB0HSAEdyDWAgASgCCEECRg0CIAZByZCRkgU2AClBCQxaCyACQf8BcUHOAEcgB0HEAEdyDV8MXQsgAkH/AXFBwQBHIAdB1ABHcg1eDFwLAkACQCABKALoAiIEQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMSgsgBEF8cUEERgRAQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEoLIAEoAuQCIgIoAAAiD0UNACACKAAEIggNAQtBEQxYCwJAIARBCEYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJCyACLQAIIgNBAWsiCUH/AXEiB0EPS0GLgQIgB3ZBAXFFcg0AAkACQAJAAkACfyAEQQlGBEBBACEHQaiQyAApAwAiF6ciBEH/AXFBBEcNJCACQQlqIQpBACEMQQAMAQsgAkEJai0AACIMQQZLDQEgBEEKayEHIAJBCmohCkEAQQEgDHRB1QBxDQAaIAxBA0cNAUEBCyECIANBAWsOEAEBAwEDAwMDAwMDAwMDAwIDCyAGIAw6AClBEwxbCyAMQQZNQQBBASAMdEHUAHEbDVkgAkGAgAIgCXZxQQFHDQEMWQsgAg1YCwJAIAdFBEBBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMSgsgCi0AACICDSMgB0EBRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEoLIAotAAEiAg0kIAdBAkYEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxKC0EAIQcCQAJAIAotAAIiAg4CAgEACyAGIAI6AClBGgxaC0EBIQcLAkAgAUEIaiIJKAIAQQJGDQACQCAJKALAASICQYKAgIB4SCACRXJFBEAgCSgCxAEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCzAEiAkGCgICAeEggAkVyRQRAIAkoAtABIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAtgBIgJBgoCAgHhIIAJFckUEQCAJKALcASIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKALkASICQYKAgIB4SCACRXJFBEAgCSgC6AEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgC8AEiAkGCgICAeEggAkVyRQRAIAkoAvQBIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAvwBIgJBgoCAgHhIIAJFckUEQCAJKAKAAiIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKAKgASEEIAkoAqQBIgoEQCAEIQIDQCACKAIAIgsEQCACQQRqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBDGooAgAiCwRAIAJBEGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEYaiECIApBAWsiCg0ACwsgCSgCnAEiAgRAIARBBGsoAgAiCkF4cSILIAJBGGwiAkEEQQggCkEDcSIKG2pJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCrAEhBCAJKAKwASIKBEAgBEEUaiECA0AgAkEEaygCACILBEAgAigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQRBrKAIAIgsEQCACQQxrKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBHGohAiAKQQFrIgoNAAsLIAkoAqgBIgIEQCAEQQRrKAIAIgpBeHEiCyACQRxsIgJBBEEIIApBA3EiChtqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoArgBIQQgCSgCvAEiCgRAIAQhAgNAIAJBEGooAgAiCwRAIAJBFGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEcaigCACILBEAgAkEgaigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQShqKAIAIgsEQCACQSxqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBBGooAgAiCwRAIAJBCGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkE4aiECIApBAWsiCg0ACwsgCSgCtAEiAkUNASAEQQRrKAIAIglBeHEiCiACQThsIgJBBEEIIAlBA3EiCRtqSQ1kIAlBACAKIAJBJ2pLGw0AIAQQogIMAQsMZAsgASADOgDHAiABIAw6AMYCIAFBBDoAxQIgASAHOgDEAiABIAhBGHQgCEGA/gNxQQh0ciAIQQh2QYD+A3EgCEEYdnJyNgLAAiABIA9BGHQgD0GA/gNxQQh0ciAPQQh2QYD+A3EgD0EYdnJyNgK8AiABQQI6ALkCIAFBAjoAnAIgAUECNgKQAiABQYGAgIB4NgKEAiABQYGAgIB4NgL4ASABQYGAgIB4NgLsASABQYGAgIB4NgLgASABQYGAgIB4NgLUASABQoCAgICQgICAgH83AsQBIAFCgICAgMAANwK8ASABQgQ3ArQBIAFCADcCrAEgAUKAgICAwAA3AqQBIAFBADYCmAEgAUEANgJsIAFBADYCSCABQQA2AkAgAUEANgI0IAFBADYCECABQQA2AggMXAsgBiADOgApQRIMVwsgASgC6AIiB0EASA1iIAEoAuQCIQQCQCAHRQRAQQEhAgwBCyAHEHEiAkUNGQsgBwRAIAIgBCAH/AoAAAsgASAHNgLoASABIAI2AuQBIAEgBzYC4AEMTwsgB0HUAEcgAkH/AXFBwQBHcg1bDFkLIAdBzABHIAJB/wFxQdQAR3INWiABKALkAiEEAkACQAJAAkACQAJAAkACQAJAAkACQCABAn8CQAJAAkAgASgC6AIiA0EDTQRAQQAhCUGokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxUCyAEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgA0EEayEDIARBBGohByABKAIARQ0CIAMhDAwBCyADIARqIQdBACEMQQAhA0EAIAEoAgBBAUcNAhoLIAkgASgCBEEBaiIIRw0DIAwhAyAJDAELIAINAUEACzYCBCABQQE2AgAjAEEQayIEJAAgAUHwAmoiAkEAOgAEAkACQEGAgAEQcSIIRQ0AIAhBAEGAgAH8CwBBgBAQcSIMRQ0AIAxBAEGAEPwLACAEQQxqQQA7AQAgBEEANgIIIAIoAgAiAigC+AYiD0EEaygCACIKQXhxQYSAAUGIgAEgCkEDcSILG0kNayALQQAgCkGogAFPGw1sIA8QogIgAigC4AYiCgRAIAIoAuQGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAigC/AYiD0EEaygCACIKQXhxQYQQQYgQIApBA3EiCxtJDWsgC0EAIApBqBBPGw1sIA8QogIgAigC7AYiCgRAIAIoAvAGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAkEAQdgG/AsAIAJBADYClAcgAkEANgKIByACQQA6AIQHIAJBADYCgAcgAiAMNgL8BiACIAg2AvgGIAJCAjcD8AYgAkIANwPoBiACQoCAgIAgNwPgBiACQQE2AtwGIAJBJDYC2AYgAkEAOgCmByACIAQpAwA3A5gHIAJBngdqIAQpAQY3AQAgBEEQaiQADAELAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEPQaiQyAApAwAiF6ciAkH/AXFBBEcNAkEAIQhBACEMQQAhBEEAIQsMBAtBACEICyAGIAg2AjAgBiAJNgIsQQohAiAGQQo6ACgMWgsgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxMCyAHKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQggA0F8cSIKQQRGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQxBACEEQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhDCAKQQhGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQRBACELDAILIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMTAsgBygACCICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEEIApBDEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERgRAQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhCyADQX5xIgJBEEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERg0BIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMTAsgBy8AECIKQQh0IApBCHZyIQ4gAkESRw0CQQAhD0GokMgAKQMAIhenIgJB/wFxQQRHDQELQQAhCkEAIQMMAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAxJCyAHLwASIgJBCHQgAkEIdnIhCiADQRRGBEBBACEPQQAhA0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEkLIActABQiD0ECSw0BIANBFUYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJC0EAIQMCQCAHLQAVIgIOAgEAJgtBASEDCyABKAIIQQJHBEBBESECIAhFIAxFcg0CQRshAiABKALAAiIHIAtJIAwgByALa0tyDQIgASgCvAIiDSAESSAIIA0gBGtLcg0CIBBBAXEgBCALciAHIAxHckUgCCANRnFyDQMgBkEbOgAoDFULQaCSxQAQ3QkACyAGIA86AClBFCECCyAGIAI6ACgMUgsgASADOgC5AiABIA86ALgCIAEgCjsBtgIgASAOOwG0AiABIAs2ArACIAEgBDYCrAIgASAMNgKoAiABIAg2AqQCIAEgCTYCoAIMTQsgB0HUAEcgAkH/AXFByQBHcg1ZIAEoAghBAkYNISABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDE8LIAdBwgBHIAJB/wFxQccAR3INWCABKAIIQQJGDSIgAS0AjAMNIyABLQDFAkEERg0BIAZB86SdkgQ2AClBCSECIAZBCToAKAxPCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSECIAZBCToAKAxQCyAGQfOEpaIFNgApDE0LIAEoAugCIghBAEgNXSABLQDGAiECIAEtAMcCIQMgASgC5AIhBAJAIAhFBEBBASEJDAELIAgQcSIJRQ0UCyAIBEAgCSAEIAj8CgAACyAGAn8CQCAIIAJBAnQoApiPSSIERgRAQQggAyACQQNGGyECQQAhBwwBCyAGIAg2AjAgBiAENgIsIAYgAjoAKUEMDAELA0AgByAJai0AACIDQQFrQf8BcSACQf8BcUkEQCAHQQFqIgcgCEcNAQwjCwsgBiACOgAqIAYgAzoAKUENCyICOgAoIAgNFkEAIQgMTgsCQCABKALoAkUEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxCCyABKALkAi0AACIHQQRJDQAgBiAHOgApQRchAiAGQRc6ACgMTgsgASAHOgDFAgxJCyAHQdMARyACQf8BcUHOAEdyDVUgASgCCEECRg0hIAEoAtQBQYGAgIB4Rg0BIAZB0JjRqgQ2AClBCSECIAZBCToAKAxMCyAHQfQARyACQf8BcUHYAEdyDVQgASgCiAMiBCABKALoAiICTw0BDEgLIAEoAugCIghBAEgNWSABKALkAiEEIAEtAMcCIQMgAS0AxgIhAgJAIAhFBEBBASEHDAELIAgQcSIHRQ0QCyAIBEAgByAEIAj8CgAACwJAAkACQAJAIAIOBAEAAgMACyAGIAI6AClBECECIAZBEDoAKCAIRQ1NIAcgCEEBEKIHDE0LIAhBAk8EQCAIIQIgA0H/AXFBEEkNIwxHCyAGIAg2AjAgBkECNgIsDEQLIAhBBkkNIiADQf8BcUEQTwRAIAEgCDYC3AEMRwsgByAHLQABOgAAIAcgBy0AAzoAASAHIActAAU6AAIgAUEDNgLcAQxGCyABKALgAUGBgICAeEYNIiABLQCMA0UEQCABIAg2AtwBDEYLIAZB9KS5mgU2AClBCAxDCyABIAQgAms2AogDQZ4EIQgCQAJAIAJFDQAgASgC5AIhCUEAIQcDQCAHIAlqIgMtAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhCCAHQdAAa0Gwf0sNAQsgBiAINgIoQR4hBwxLCyABKAIIQQJGDSIgB0F/cyACaiEPIANBAWohCiACIAdBAWoiDmshDUEAIQwgBkEANgKAASAGQoCAgIAQNwJ4IAZB+ABqQQAgBxDvBSAGKAKAASEDA0BBAUECIAkgDGosAAAiCEEATiIQGyILIAYoAnggA2tLBH8gBkH4AGogAyALEO8FIAYoAoABBSADCyAGKAJ8IgRqIhIgEEUEQCASIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiADIAtqIgM2AoABIAcgDEEBaiIMRw0AC0EAIQkgBkEANgJIIAZCgICAgBA3A0AgAiAORwRAIAZBQGtBACANEO8FIAYoAkghCQNAQQFBAiAKLAAAIgJBAE4iCBsiAyAGKAJAIAlrSwR/IAZBQGsgCSADEO8FIAYoAkgFIAkLIAYoAkRqIgcgCAR/IAIFIAcgAkG/AXE6AAEgAkHAAXFBBnZBQHILOgAAIAYgAyAJaiIJNgJIIApBAWohCiAPQQFrIg8NAAsLIAZBPGoiAiAGQYIBai8BADsBACAGIAYoAX42AjggBigCeCIPQYCAgIB4Rg1AIARBCHYhAyAGKQNAIRcgBkGkAWogAi8BADsBACAGIAYoAjg2AqABIAEoAqwBIgogASgCpAFGBEAjAEEgayICJAACQCABQaQBaiIHKAIAIgxBqtWqFUsEf0EABUEEIAxBAXQiCyALQQRNGyILQRhsIQ4gAiAMBH8gAiAMQRhsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0GAlMUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABIApBAWo2AqwBIAEoAqgBIApBGGxqIgIgAzoABSACIAQ6AAQgAiAPNgIAIAIgBigCoAE2AQYgAiAJNgIUIAIgFzcBDCACQQpqIAZBpAFqLwEAOwEADD8LAkAgASgC6AIiBEEDTQRAQQAhCUEAIQNBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDD0LIAEoAuQCIggoAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAyAEQXxxQQRGBEBBACEJQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw9CyAIKAAEIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgBEEIRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDD0LQQAhBwJAAkAgCC0ACCICDgICAQALIAYgAjoAKUEWIQIgBkEWOgAoDEoLQQEhBwsgASAHOgCcAiABIAk2ApgCIAEgAzYClAIMRAsCQAJAIAEoAugCQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMPQsgASgC5AIoAAAiBw0BC0EjIQIgBkEjOgAoDEgLIAFBATYCCCABIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyNgIMDEMLIAEoAugCIgJBA00EQEGokMgAKQMAIhenIgdB/wFxQQRGDUMgBkEvaiAHQRh2OgAAIAYgBzoALCAGQSQ6ACggBiAHQQh2OwAtIAYgF0IgiKciCDYCMAw6CyABKALkAiIEKAAAIQcgAkF8cUEERwRAIAQoAAQhAgw8C0EAIQJBqJDIACkDACIXpyIEQf8BcUEERg07IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMOQsgB0HNAEcgAkH/AXFB0gBHcg1OIAEoAghBAkYNJSABLQCMAw0mIAEoAhBFDQIgBkHjkMnqBDYAKUEJIQIgBkEJOgAoDEULIAdB0ABHIAJB/wFxQcMAR3INTSABKAIIQQJGDSYgAS0AkAJBAkYNAiAGQeOSjYIFNgApQQkhAiAGQQk6ACgMRAsgB0HJAEcgAkH/AXFBzABHcg1MIAEoAghBAkYNJiABKAKYAUUNAiAGQeOYscoENgApQQkhAiAGQQk6ACgMQwsgASgC6AIiA0EDTQRAQQAhB0EAIQJBACEJQQAhA0EAIQhBACEMQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyABKALkAiIEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQIgA0F8cSIHQQRGBEBBACEHQQAhCUEAIQNBACEIQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgABCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciEJIAdBCEYEQEEAIQdBACEDQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAgiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnIhAyAHQQxGBEBBACEHQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAwiCEEYdCAIQYD+A3FBCHRyIAhBCHZBgP4DcSAIQRh2cnIhCCAHQRBGBEBBACEHQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgAECIMQRh0IAxBgP4DcUEIdHIgDEEIdkGA/gNxIAxBGHZyciEMIAdBFEYEQEEAIQdBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoABQiCkEYdCAKQYD+A3FBCHRyIApBCHZBgP4DcSAKQRh2cnIhCyAHQRhGBEBBACEHQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEKAAYIgpBGHQgCkGA/gNxQQh0ciAKQQh2QYD+A3EgCkEYdnJyIQogB0EcRwRAIAQoABwhBww3C0EAIQdBqJDIACkDACIXpyIEQf8BcUEERg02IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNQsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxBCwJAAkACQAJAAkACQCABLQCMA0UEQCABKALoAiIHDQJBACEDQaiQyAApAwAiF6ciAkH/AXFBBEcNAUEBIQJBACEIDAMLIAZB45KNggU2ACkMRQsgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLQQEhAiABKALkAiIELQAAIQggB0EBRgRAQQAhA0GokMgAKQMAIhenIgRB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLIAQtAAEhAyAHQQJGBEBBqJDIACkDACIXpyICQf8BcUEERgRAQQEhAgwCCyAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMOQsgBC0AAiECIAdBA0cNASACRSECQaiQyAApAwAhFwsgF6ciB0H/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiAHOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMNwsCQAJAAkAgBC0AAyIJDgICAQALIAZCgSo3AiwgBkEkOgAoQQAhCAw4C0EBIQkLIAINNSAHQQRGDQEgBkKBKjcCLCAGQSQ6AChBACEIDDYLQQAhCSACRQ00CyABIAkgA0H/AXFBEHRyIAhB/wFxQQh0cjYCkAIMPQsCQAJ/IAEoAugCIgRBA00EQEEAIQlBAEGokMgAKQMAIhenIgJB/wFxQQRGDQEaIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMNgsgASgC5AIiAygAACICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEJIARBfHFBBEYEQEEAQaiQyAApAwAiF6ciAkH/AXFBBEYNARogBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEQQhHDQEgAygABAshByABIAk2ApwBIAFBATYCmAEgASAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZycjYCoAEMPQsgBkKBKjcCLCAGQSQ6AChBACEIDDMLIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMPwsCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AjANFBEAgASgC5AIhAiABKALoAiIHQQFLDQJBACEJQaiQyAApAwAiF6ciA0H/AXFBBEcNAUEAIQMMAwsgBkHtiI2yBTYAKQxMCyAGIAM6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDEALIAIvAAAiA0EIdCADQQh2ciEJIAdBAmsiA0EBSw0BQaiQyAApAwAhF0ECIQcLIBenIgRB/wFxQQRGBEAgAiAHaiADaiEHQQAhCEEAIQMMAgsgBiAEOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw+CyACLwACIgNBCHQgA0EIdnIhCCAHQQRrIgNBAUsNASACQQRqIQdBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgB2ohB0EAIQxBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMPAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQEgAkEGaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMOgsgAi8ABiIDQQh0IANBCHZyIQsgB0EIayIDQQFLDQEgAkEIaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEKQQAhAwwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDgLIAIvAAgiA0EIdCADQQh2ciEKIAdBCmsiA0EBSw0BIAJBCmohB0GokMgAKQMAIRcLIBenIgJB/wFxQQRGBEAgAyAHaiEDQQAhBEEAIQ8MAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw2CyACLwAKIgNBCHQgA0EIdnIhBCACQQxqIQMgB0EMayIPQQFLDQFBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgD2ohD0EAIQNBAAwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDQLIAMvAAAiA0EIdCADQQh2ciEOIAdBfnFBDkcEQCAHQRBrIQMgAkEQaiEPIAIvAA4MAQtBACEDQaiQyAApAwAiF6ciD0H/AXFBBEcNJSACIAdqIQ9BAAshBwJAIAECfyADQQNNBEBBACECQQBBqJDIACkDACIXpyIDQf8BcUEERg0BGiAGQS9qIANBGHY6AAAgBiADOgAsIAZBJDoAKCAGIANBCHY7AC0gBiAXQiCIpyIINgIwDDULIA8oAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAiADQXxxQQRGBEBBAEGokMgAKQMAIhenIgNB/wFxQQRGDQEaIAZBL2ogA0EYdjoAACAGIAM6ACwgBkEkOgAoIAYgA0EIdjsALSAGIBdCIIinIgg2AjAMNQsgA0EIRw0BIA8oAAQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnILIgM2ApQBIAEgAjYCkAEgASAEQf//A3FBAXQ2AowBIAEgCkH//wNxQQF0NgKIASABIAtB//8DcUEBdDYChAEgASAMQf//A3FBAXQ2AoABIAEgDv0QIAdBCHQgB0GA/gNxQQh2cv0aASAJ/RoCIAj9GgP9qQFBAf2rAf0LA3AgAUEBNgJsDDwLIAZCgSo3AiwgBkEkOgAoQQAhCAwyCwJAAkACQCABLQCMA0UEQEECIQIgAS0AxgJBAWsOBgcCAQMHAgMLIAZB4padogQ2ACkMPwsgASgC4AFBgYCAgHhHBEBBASECDAILIAZCgSo3AiwgBkEkOgAoQQAhCAwzC0EGIQILIAEoAugCIgdBAEgNTQJAIAcEQCABKALkAiEDIAcQcSIERQ0FIAcEQCAEIAMgB/wKAAALIAIgB0cNASABIAI2AvQBIAEgBDYC8AEgASACNgLsAQw8CyAGQeKWnaIENgApQSEhAiAGQSE6ACgMPwsgBkHilp2iBDYAKUEhIQIgBkEhOgAoIAQgB0EBEKIHDD4LIAEoAugCIgdBAEgNTCABKALkAiEEAkAgB0UEQEEBIQIMAQsgBxBxIgJFDQMLIAcEQCACIAQgB/wKAAALIAEgBzYCjAIgASACNgKIAiABIAc2AoQCDDkLIAdB0ABHIAJB/wFxQcMAR3INRSABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0mIAEoAugCIgxBAWshDyAMQQJrIQsgASgC5AIiCiAMaiEEQQAhByAMIQMDQCAHIAxGDS0gByAKaiIJQQFqIQggCS0AAEUEQCAHRQ07IANBAWshByAIIQQgAwwsCyAHIA9GDS0gByAKaiECIAgtAABFDSogByALRg0tIAJBAmotAABFDSkgA0EDayEDIAdBA2oiB0HRAEcNAAsMOQsgBkHpho2CBTYAKUEJIQIgBkEJOgAoDDwLIAEoAogDIgMgASgC6AIiAkkEQEEnIQIgBkEnOgAoDDwLIAEgAyACazYCiANBngQhAwJAAkAgAkUNACABKALkAiEEQQAhBwNAIAQgB2otAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhAyAHQdAAa0Gwf0sNAQsgBiADNgIoQR4hAgw8CyAHQQFqIgMgAkYEQCAGQQA2AiwgBkGeCjsBKEEeIQIMPAsgASgCCEECRiIMDQEgAiAHa0ECayEIIAMgBGoiAi0AAA0CQQAgAUEIaiAMGyEJIAJBAWohD0EAIQwgBkEANgJIIAZCgICAgBA3AkAgBkFAa0EAIAcQ7wUgBigCSCECA0BBAUECIAQgDGosAAAiA0EATiILGyIKIAYoAkAgAmtLBH8gBkFAayACIAoQ7wUgBigCSAUgAgsgBigCRGoiDiALBH8gAwUgDiADQb8BcToAASADQcABcUEGdkFAcgs6AAAgBiACIApqIgI2AkggByAMQQFqIgxHDQALIAhBAEgNSiAIRQRAQQEhAgwmCyAIEHEiAg0lCwALQaCUxQAQ3QkACyAGIAg2AjAgBkGeCjsBKEEeIQIMOAsgCSAIQQEQogcMNwsgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDCkLIAFCADcDgAMgAUECOgD4AiAAQQQ6AAggACAFNgIEIABBADYCACAAIAEoAtgCNgAJDEELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQAsgASABKALcAkEEazYC3AIgASgCAEUEQCAAQQE2AgAgAEECOgAEDEALIAEoAgRBAWoiAiADRwRAIAAgAjYCDCAAIAM2AgggAEEKOgAEIABBATYCAAxACyABIAM2AgQgAUEBNgIAIAEtAJEDRQRAIAEgASkDyAJCBHw3A8gCIAEgByAJIAogDyABKALQAkF/cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2c0F/czYC0AILIAFB5siFogU2APkCIAFBBzoA+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMPwsgBiACOgApQRgMNQsgBiACOgApQRkMNAtBwJPFABDdCQALIAYgAjoAKUEVIQIgBkEVOgAoDC8LQdCTxQAQ3QkACyABIAg2AtABIAEgCTYCzAEgASAINgLIAQwpC0Hgk8UAEN0JAAsgBkHzpJ2SBDYAKQwpC0GQlMUAEN0JAAsgByAHLQABOgAAQQEhAgwjCyAGIAg2AjAgBkEGNgIsDCALIAZB9KS5mgU2AClBBgwgC0Hwk8UAEN0JAAtBsJPFABDdCQALIAZB8JDlmgc2ACkMIgtBsJLFABDdCQALIAZB54K1igQ2ACkMIAtBwJHFABDdCQALIAZB4cbR4gQ2ACkMHgtB4JHFABDdCQALIAZB45DJ6gQ2ACkMHAtB8JHFABDdCQALQYCSxQAQ3QkAC0Ggk8UAEN0JAAsgBiAPOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAwNC0HQkcUAEN0JAAtBkJLFABDdCQALIAZB6YaNggU2ACkMFQtB1JXFABDdCQALIAgEQCACIA8gCPwKAAALIAhBCHYhAyAGKQJEIRcgBigCQCEPIAkoArABIgogCSgCqAFGBEAjAEEgayIEJAACQCAJQagBaiIHKAIAIgxBksmkEksEf0EABUEEIAxBAXQiCyALQQRNGyILQRxsIQ4gBCAMBH8gBCAMQRxsNgIcIAQgBygCBDYCFEEEBUEACzYCGCAEQQhqQQQgDiAEQRRqEIUHIAQoAghBAUcNASAEKAIQIQcgBCgCDAsgB0GwlMUAEJMJAAsgBCgCDCEMIAcgCzYCACAHIAw2AgQgBEEgaiQACyABKAK0ASAJIApBAWo2ArABIApBHGxqIgcgFzcCFCAHIA82ARAgByAINgEMIAcgAjYBCCAHIAhBEHY7AQYgByADOgAFIAcgCDoABCAHQQA2AgAMEQsgA0EDayEHIAJBAmohCSACQQNqIQQgA0ECawwBCyADQQJrIQcgAkEBaiEJIAJBAmohBCADQQFrCyAHRQRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQQMAwsgBC0AAA0OQQJrIQcgCUECaiEEDAMLIAdB9ABHIAJB/wFxQdgAR3INGiABKAKIAyIEIAEoAugCIghJDQ4gASgC5AIhAiABIAQgCGs2AogDQZ4EIQwCQAJAIAhFDQAgAiAIaiEJQQAhB0EAIAhrIQMDQCACIAdqIg8tAAAEQCADIAdBAWoiB2oNAQwCCwtBngIhDCAHQdAAa0Gwf0sNAQsgBiAMNgIoQR4hBwwTCyAHQQFqIgMgCEYEQCAGQQA2AiwgBkGeDjsBKEEeIQcMEwsgCCADayIOQQFNBEAgBkEANgIsIAZBngo7AShBHiEHDBMLAkAgCSACIANqIhBBAmoiBEcEQCAQLQAAIQwgEC0AASEKIAcgCGshC0EAIQMDQCADIA9qQQNqLQAARQ0CIAMgC2ogA0EBaiEDQXxHDQALCyAGQZ4EOwEoQR4hBwwTCwJAAkACQAJAIANBAmoiDyAOSyADQX1LckUEQCADQQNqIgsgDksNAQJAIAkgCyAQaiIPRwRAIAMgB2ohCSAIQQRrIQ1BACEIA0AgAiAJakEEai0AAEUNAiAIQQFqIQggDSAJQQFqIglHDQALCyAGQZ4EOwEoQR4hBwwYCyAIIAtqIgkgCEkgCSAOS3INAiAJQQFqIRIgCSAOTw0DIAEoAghBAkYNBCAGQUBrIQ0gAiEJIAwhCyAQIBJqIRMgDiASayECIwBBIGsiDiQAAkAgB0HQAGtBsH9NBEAgDUECNgIAIA1BAToABAwBCyAOQQA2AhwgDkKAgICAEDcCFCAOQRRqQQAgBxDvBSAOKAIcIQwDQEEBQQIgCSwAACIQQQBOIhQbIhIgDigCFCAMa0sEfyAOQRRqIAwgEhDvBSAOKAIcBSAMCyAOKAIYIhVqIhYgFAR/IBAFIBYgEEG/AXE6AAEgEEHAAXFBBnZBQHILOgAAIA4gDCASaiIMNgIcIAlBAWohCSAHQQFrIgcNAAsgDigCFCEQQQAhBwJAAkACQAJAAkACQAJAAkACQAJAAkAgC0H/AXEOAgEABAsgCkH/AXENAUEBIQcLAkAgA0EETwRAIAQoAABBgIGChHhxDQlBBCAEQQNqQXxxIgkgBGsgBCAJRhsiCSADQQRrIgpJBEADQCAEIAlqKAIAQYCBgoR4cQ0LIAlBBGoiCSAKSQ0ACwsgBCAKaigAAEGAgYKEeHFFDQEMCQsgA0UNACAEIANBAWsiCWosAABBAEgNCCAJRQ0AIAQgA0ECayIJaiwAAEEASA0IIAlFDQAgBCADQQNrIglqLAAAQQBIIAlyDQgLIA5BFGogBCADEPsCIA4oAhRBAUcNASAOIA4pAhg3AwhB3IzFAEELIA5BCGpBzIzFAEHojMUAEOAGAAsgDUECNgIAIA1BBToABAwHCyAOKAIcIgpBAEgNASAOKAIYIQQCQCAKRQRAQQEhCwwBCyAKEHEiC0UNAwsgCgRAIAsgBCAK/AoAAAsgDkEUaiAPIAgQ+wIgDigCFEEBRgRAIA1BAjYCACANQQA6AAQMBQsgDigCHCIPQQBIDS0gDigCGCEEAkAgD0UEQEEBIRIMAQsgDxBxIhJFDQMLIA8EQCASIAQgD/wKAAALAn8CQCAHRQRAIAJBAEgNMAJAIAJFBEBBASEJDAELIAIQcSIJRQ0GCyACBEAgCSATIAL8CgAACyAOIAI2AhAgDiAJNgIMIA4gAjYCCCAOQRRqIAkgAhD7AiAOKAIURQ0BQQAhCSACRQ0GIA4pAgynIAJBARCiBwwGCyACQQBIDS8CQCACRQRAQQEhCQwBCyACEHEiCUUNBQsgAgRAIAkgEyAC/AoAAAsgCUEIdiETIAIhBEEADAELIA4pAwgiF0IgiKchCSAXpyIEQYCAgIB4Rg0EIBdCKIinIRNBAQshFCANIBM7AAkgDSAHOgA0IA0gDzYCMCANIBI2AiwgDSAPNgIoIA0gCjYCJCANIAs2AiAgDSAKNgIcIA0gDDYCGCANIBU2AhQgDSAQNgIQIA0gAjYCDCANIAk6AAggDSAENgIEIA0gFDYCACANQQtqIBNBEHY6AAAMBwsgDUECNgIAIA1BBjoABAwFC0HYmsgAEP8HCwALIA1BAjYCACANIAk6AAQgD0UNACASIA9BARCiBwsgCkUNASALIApBARCiBwwBCyANQQI2AgAgDUEAOgAECyAQRQ0AAkAgFUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgEGpPBEAgAkEAIAQgEEEnaksbDQEgFRCiAgwCCwwlCwwlCyAOQSBqJAAgBi0ARCEEIAYoAkAiCUECRg0NIAZBiAFqIgggBkHkAGr9AAIA/QsDACAGQZgBaiIKIAZB9ABqKAIANgIAIAYgBikBRjcDoAEgBiAG/QACVP0LA3ggBiAGQcwAaikBADcBpgEgBi0ARSEPIAEoAsQBIgMgASgCvAFGBEAjAEEgayICJAACQCABQbwBaiIHKAIAIgxByaSSCUsEf0EABUEEIAxBAXQiCyALQQRNGyILQThsIQ4gAiAMBH8gAiAMQThsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0HQksUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABKALAASADQThsaiICQSRqIAj9AAMA/QsCACACIA86AAUgAiAEOgAEIAIgCTYCACACIAYpA6ABNwEGIAIgBv0AA3j9CwIUIAJBDGogBikBpgE3AQAgAkE0aiAKKAIANgIAIAEgA0EBajYCxAEMDAtBAiAPIA5BkJPFABDqBwALIAsgDiAOQYCTxQAQ6gcACyALIAkgDkHwksUAEOoHAAsgEiAOIA5B4JLFABDqBwALQcCSxQAQ3QkAC0EAIQdBqJDIACkDACIXpyICQf8BcUEERw0AIAwNAQwMCyACQf8BcUEDRw0LIBdCIIinIgcoAgAhAiAHQQRqKAIAIgQoAgAiAwRAIAIgAxEDAAsgBCgCBCIDBEAgAiADIAQoAggQogcLIAdBDEEEEKIHDAsLIAZBQGsgBCAHIAEoAogDIgIQ3wEgBigCRCEHAkACQCAGKAJAQQFGBEAgB0GAgICAeHJBgICAgHhGDQ0gBigCSCEJDAELIAYoAkghCSACIAYoAkwiA08NASAHRQ0MCyAJIAdBARCiBwwLCyABIAIgA2s2AogDIAEoAvgBIgJBgoCAgHhIIAJFckUEQCABKAL8ASACQQEQogcLIAEgAzYCgAIgASAJNgL8ASABIAc2AvgBDAoLIAZCgSo3AiwgBkEkOgAoQQAhCAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQlBJCECIAYoAiQhBwJ/AkACQAJAIAYtAENBAWsOAwABAhULIAZBxABqDAILIAhBCGoMAQsgCEEIagstAABBJUcNEUEhIQIgBi0AQ0EDTwRAIAgoAgAhAyAIQQRqKAIAIgQoAgAiDARAIAMgDBEDAAsgBCgCBCIMBEAgAyAMIAQoAggQogcLIAhBDEEEEKIHCwwSCyABIAo2AiwgASALNgIoIAEgDDYCJCABIAg2AiAgASADNgIcIAEgCTYCGCABIAI2AhQgAUEBNgIQIAEgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnI2AjAMBwsgB0UNBiACQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciICIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyIgdyQQBIDQYgASACNgI8IAEgBzYCOCABQQE2AjQMBgtBKCEHIAZBKDoAKAwKCyAGIAQ6AClBHiEHIAZBHjoAKAwJC0ELCyICOgAoIAhFBEBBACEIDAcLIAcgCEEBEKIHDAYLIAEgAjYC3AELIAEgBzYC2AEgASAINgLUAQsgBkEoakEBciEJQSghAgwLC0EnIQcgBkEnOgAoDAMLQQUhAiAGQQU6ACgMAQtBByECIAZBBzoAKAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQkMBAsgBiAGKAApNgJ4IAYgBkEsaigAADYAe0EoIQIgBkEoakEBciEJIAdBKEYNBiAGKAIwIQggByECDAILIAYgDDoAKiAGIAM6AClBDwsiAjoAKCAGIAYoACk2AnggBiAGQSxqKAAANgB7IAZBKGpBAXIhCQsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBkE2aiAGQcYAai0AADoAACAGIAYvAUQ7ATQgBigCQCEHCyAHQRh2IQMMAQsgBkEoakEBciEJQSghAgsgBiADOgAsIAkgBi8BNDsABEECIQMgCUEGaiAGQTZqLQAAOgAAIAYgBzsAKSAGIAdBEHY6ACsgBiAINgIwIAYgAjoAKAJAIAJBKEcEQAJAIAJBI0sNACAGKAIkIgdB5sbR4gRGDQBBAyEDIAdBIHENAgsgBkEaaiICIAYtACs6AAAgBkESaiAGQTNqLQAAOgAAIAYgBi8AKTsBGCAGIAYvADE7ARAgBi0ALCEDIAYoAC0hByAGLQAoIgRBKEYNASAAIAYvARg7AAUgAEEHaiACLQAAOgAAIAYgBigBEDYCCCAGIAZBE2ooAAA2AAsgAEEQaiAGKAALNgAAIAAgBigCCDYADSAAIAc2AAkgACADOgAIIAAgBDoABCAAQQE2AgAMBQsgBigCJCEHCyAGIAYoARA2AgggBiAGQRNqKAAANgALIAYgBigCCDYCHCAGIAYoAAs2AB8gEUHJirmiBEcEQCABQgA3A4ADIAFBAjoA+AILIAAgBzYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAQQA2AgAgAEEQaiAGKAAfNgAADAMLIAZBAjYCRCAGQaSVxQA2AkAgBkIBNwJMIAYgBkEkaq1CgICAgJANhDcDeCAGIAZB+ABqNgJIIAZBQGtBtJXFABCNCAALIAFBADsAjQMgASADNgLYAiAAQQY6AAggAEIANwIADAELIAEgAzYC2AIgAS0AkQNFBEAgAUIENwPIAiABIAcgCSAKIA9B/wFzQQJ0KAKYjUNB////B3MiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnNBf3M2AtACCyABQQA2AugCIAEgCzYC3AICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HJAEcEQCAPQeYARwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HQAGsOKwEAAAAAAAAAAAAAAAAAAAAABgkHAAoABQALAAAACAAABAAAAgMAAAAAAAwACyAPQSBxDRhBIiECDCgLQSIhAiAHQcUARyAKQcwAR3IgCUHUAEdyDSdBAyEMQYAGIQIMIgtBBiEIQQEhAiAKQcIAayIERQ0KIARBEEYNCwwkC0EGIQhBASECIApBxQBrIgRFDQwgBEENRg0LDCMLQQYhCEEBIQIgB0HzAEcgCkHIAEdyIAlB2QBHcg0iQQkhAkEJIQwMHwtBBiEIQQEhAiAHQcEARyAKQcEAR3IgCUHNAEdyDSEMHQtBBiEIQQEhAiAHQcwARyAKQeMAR3IgCUHUAEdyDSAMGwtBBiEIQQEhAiAKQcgAaw4FCQofHwsfC0EGIQhBASECIAdB1gBHIApBxABHciAJQcMAR3INHkEYIQJBGCEMDBsLQQYhCEEBIQwgB0HEAEcgCkHLAEdyIAlBxwBHcg0QQQYhAgwaC0EGIQhBASECIAdB5gBHIApB2ABHciAJQckAR3INHEH/////ByECDBoLQQYhCEEBIQIgCkHDAGsiBEUNCCAEQRFGDQkMGwtBBiEIQQEhAiAHQfQARyAKQdQAR3IgCUHYAEdyDRogAS0AkgNBAXENGkH/////ByECDBgLQQEhDCAHQdQARyAJQckAR3INDEEEIQIMFgsgB0HCAEcNGEEBIQwgCUHHAEYNFQwYC0EBIQwgB0HTAEcgCUHOAEdyDQpBgAIhAgwUCyAHQfQARyAJQdgAR3INFiABLQCSA0EBcQ0WQf////8HIQIMFAsgB0HNAEcgCUHSAEdyDRVBICECQSAhDAwSCyAHQdAARw0UIAlBwwBGDRAMFAsgB0HJAEcNEyAJQcwARg0ODBMLIAdB0ABHIAlBwwBHcg0SIAEtAJMDQQFxDRJB/////wchAgwQCyAHQfQARyAJQdgAR3INESABLQCSA0EBcQ0RQf////8HIQIMDwsgCkHkAEcgCUHBAEdyRSAHQdQARnENAUEBIQJBBiEIIApB4wBrDgIGBRALIApBxABHIAlBwQBHckUgB0HUAEZxDQNBIiECIApBxABrDgUGCBERCRELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAwSCyALQQNLBEBBBSEIQQAhAgwPCyAAQQE2AgAgAEEfOgAEDBELQQYhCAtBASECDAwLIAEtAI0DRQRAIABByYiFogU2AAUgAEEgOgAEIABBATYCAAwPCyABQQE6AIwDQQchCEEAIQIMCwsgB0HUAEcNCiAJQcEARg0CDAoLIAdBzABHIAlB1ABHcg0JQRohAkEaIQwMBgsgB0HUAEcgCUHBAEdyDQoLQaT4xgBBKEHElcUAEOsHAAsgB0HEAEcgCUHOAEdyDQhBACECDAQLIAdB0gBHIAlBxABHcg0HQQ0hAkENIQwMAgtBCCECQQghDAwBC0EEIQJBBCEMCyALIAxJDQELIAIgC0kNAEEGIQhBACECDAELQQYhCEECIQICQAJAAkACQAJAIA9ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAKQcUAaw4EAwQEAgQLIAdBxQBHIApBzABHciAJQdQAR3INAwwECyAHQcwARyAKQeMAR3INAiAJQdQARg0DDAILIAdB0gBHDQEgCUHEAEYNAgwBCyAHQcQARw0AIAlBzgBGDQELIAFCADcDgAMgASADNgD5AiABIAg6APgCIAEgAjoA7AIgACADNgIQIAAgCzYCDCAAQQE6AAggACAFNgIEIABBADYCAAwCC0EhIQILIAAgAzYABSAAIAI6AAQgAEEBNgIACyAGQbABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQdiayAAQ/wcAC4J7AyJ/B30BfiMAQcABayIEJAACQAJAAkACQAJAIAEoAgBBAkcEQCABKAKkAiICIAEoAmRJBEAgAUH0A2ohFiABQbwCaiETIAFB8ABqIRwgAUGwA2ohHSABQYADaiEeIAFBjANqIR8gAUGYA2ohICABQaQDaiEhA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCYCACQShsaiINKQMQIAEpA4ABfCIrIAEpA3BRBEAgASgCuAIiAyANKAIYIgJBB2pBeHFJDQEgAiADSw0CIAEoArQCIQMgDS0AICIbQQFGBEAgBEEYaiADIAIQ+QIgBCgCGCIDQYCAgIB4RwRAIAQoAhwgBEEANgK4ASAEQQE2AqwBIARBuMnBADYCqAEgBEIENwKwASAEQagBahCSByEZIANFDR4gA0EBEKIHDB4LIAQoAiAhGSAEKAIcIhpBgICAgHhGDR0gBCgCJCECIBkhAwtBCSEFAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBAWsODQECAxofHR4bHB8dHgQACyANLQAhDgQEBQYHCQsgDS0AIQ4FCwoJCQwJCyANLQAhIgUOBg4NEBAPDxALIA0tACEOChIRERERERERFBMRCyANLQAhQQtrDgIcHRsLIARBGGogAyACQQMgASgCrAIQ+AQMAwsgBEEYaiADIAJBAyABKAKsAhDmAwwCCyAEQRhqIAMgAiABKAKsAhCgAgwBCyAEQRhqIAMgAiABKAKsAhD+AQsgEyABKAKoAiABKAKsAiAEKAIcIgMgBCgCIBDCBSAEKAIYIgJFDTIgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbakkNOCAIQQAgBSACQSdqSxsNOSADEKICDDILIARBATYCrAEgBEHgycEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQShqIgEgBEGoAWoQsQYgARCOByEBDDALIARBATYCrAEgBEG8ysEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQTRqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEBIAEoAqwCEOYDDC0LIARBGGogAyACQQEgASgCrAIQ+AQMLAsgDSgCAEUEQCAEQQA2ArgBIARBATYCrAEgBEGYysEANgKoASAEQgQ3ArABIARBqAFqEJIHDAELIA0oAggNKiAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHCyEBDCsLIARBGGogAyACQQMgASgCrAIQ5gMMJwsgBEEYaiADIAJBAyABKAKsAhD4BAwmCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgcMAgsgDSgCCEUEQCAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHDAILIA0qAgQhJCABKAKsAiEIIA0qAgwhJyAFQQRGDSQgBEEYaiADIAJBAyAIICQgJxD/AwwlCyAEQQE2AqwBIARB4MrBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEFAayIBIARBqAFqELEGIAEQjgcLIQEMJgsgBEEBNgKsASAEQYjLwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARBzABqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEDIAEoAqwCEPgEDB8LIARBGGogAyACIAEoAqwCEP0BDB4LIA0oAgBFBEAgBEEANgK4ASAEQQE2AqwBIARBmMrBADYCqAEgBEIENwKwASAEQagBahCSBwwBCyANKAIIDRwgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSBwshAQwhCwJAAkACQAJAIA0tACEiCEEKRwRAIAgOAgIDAQsgBEHYAGogAyACIAEoAqwCEMUDDB0LIARBATYCrAEgBEHEy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDcCAEIARB8ABqNgKwASAEQeQAaiIBIARBqAFqELEGIAEQjgchAQwjCyAEQRhqIAMgAkEDIAEoAqwCEPgEDAELIARBGGogAyACQQMgASgCrAIQ5gMLIAEoAqwCIgdBAnQiAkH/////A0sNDCAHQQR0IgNB/f///wdPDQwCQCADRQRAQQQhC0EAIQIMAQsgAxBxIgtFDQ4gASgCrAIhBwsgBEEANgKwASAEIAs2AqwBIAQgAjYCqAEgBwRAQQAhA0EBIQYgBCgCICEIIAQoAhwhAgNAIAZBAWsiDCIFIAhPBEAgDCEGDBsLIAggBWsiBUEAIAUgCE0bIgVBAUYNGiAFQQJGDRlDAACAPyACKgIAIiQgJJSTIAJBBGoqAgAiJyAnlJMgAkEIaioCACIoICiUk0MAAAAAEOAIkSElIAQoAqgBIANrQQNNBEAgBEGoAWogA0EEQQRBBBCkBSAEKAKsASELIAQoArABIQMLIAsgA0ECdGoiBSAlOAIMIAUgKDgCCCAFICc4AgQgBSAkOAIAIAQgA0EEaiIDNgKwASAGQQNqIQYgAkEMaiECIAdBAWsiBw0ACwsgBEHgAGogBEGwAWooAgA2AgAgBCAEKQKoATcDWCAEKAIYIgNFDRkgBCgCHCICQQRrKAIAIghBeHEiBSADQQJ0IgNBBEEIIAhBA3EiCBtqSQ0nIAhBACAFIANBJ2pLGw0oIAIQogIMGQsgDS0AIUELRg0VIARBATYCrAEgBEHwy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDGCAEIARBGGo2ArABIARBkAFqIgEgBEGoAWoQsQYgARCOByEBDB8LIA0tACFBDEYNEyAEQQE2AqwBIARBnMzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3AxggBCAEQRhqNgKwASAEQZwBaiIBIARBqAFqELEGIAEQjgchAQweC0EPIQUMAQtBFSEFCwJAAkACQAJAAkAgDS0AISIIDggBAAMDAgIEBAMLIARBGGogAyACIAUgASgCrAIQ5gMMEwsgBEEYaiADIAIgBSABKAKsAhD4BAwSCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKAIIRQRAIARBADYCuAEgBEEBNgKsASAEQfzJwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKgIEISQgASgCrAIhByANKgIMIScgCEEERg0QIARBGGogAyACIAUgByAkICcQ/wMMEQsgBEEBNgKsASAEQdDMwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARB+ABqIgEgBEGoAWoQsQYgARCOByEBDBwLIA0oAghFBEAgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSByEBDBwLIAEoAqwCIQcgDSoCDCEkIAhBBkYNDSAEQRhqIAMgAiAFIAcgJBCQBAwPCyAEQQE2AqwBIARB+MzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEGEAWoiASAEQagBahCxBiABEI4HIQEMGgsgBEEYaiADIAIgASgCrAIQjgUMAQsgBEEYaiADIAIgASgCrAIQ0wQLIAQoAhwhECABKALoA0UNByABKAKsAiEOIAEoAqgCIRQgBCgCICEPIBMQowUgFkEIakEAOgAAIBZCADcCACATIA4Q0AQgEygCAEEBRw0HIA5BAnQiCSABKAK4AyIDSw0FIAEoArQDIQogDkUNBkEAIQcgCiEFQQAhAgJAAkACQANAAkAgByAPSQRAIAIgEGooAgBBAnQiAyABKAKIAyIGTw0OIAIgCU8NBSAFIAEoAoQDIANBAnRqKAIANgIAIANBAXIiCCABKAKIAyIGSQ0BIAghAwwOCyAPIA9BiLnBABCMBwALIAJBAWogCU8NAiAFQQRqIAEoAoQDIAhBAnRqKAIANgIAIANBAnIiCCABKAKIAyIGTwRAIAghAwwNCyACQQJqIAlPDQEgBUEIaiABKAKEAyAIQQJ0aigCADYCACADQQNyIgMgASgCiAMiBk8NDCAJIAJBA2pLBEAgBUEMaiABKAKEAyADQQJ0aigCADYCACAFQRBqIQUgAkEEaiECIAdBAWoiByAOSQ0BDAsLCyACQQNqIQIMAgsgAkECaiECDAELIAJBAWohAgsgAiAJQai5wQAQjAcACyAEICs3A1ggBEECNgKsASAEQbTNwQA2AqgBIARCAjcCtAEgBEKAgICAoAUiKyAEQdgAaq2ENwMgIAQgKyAcrYQ3AxggBCAEQRhqNgKwASAEQQxqIgEgBEGoAWoQsQYgARCOByEBIABBAToAACAAIAE2AgQMHAsgAEEAOwEADBsLQQAgAiADQYDNwQAQ6gcAC0GQy8EAEP8HCwALQQAgCSADQbi5wQAQ6gcACwJAAkACQAJAAkAgASgC6ANBAUYEQCAEIAEoAsACIBRBAnQgDiAUakECdBDhCCICELgKIgM2AnAgBCAJNgJYIAMgCUcNHyACIAogCRDgCSACQYMISw0DDAYLIAEoAsQCQQFHDQUgCSABKALEAyIDSw0AIAEoAsADIQwgDkUNASAKQQxqIQtBACEHIAwhA0EAIQUDQAJAAkACQCAHIA9JBEAgBSAQaigCAEECdCICIAEoApQDIghPDQEgBUEDaiIIIAlPDQIgCyACQQJ0IgggASgCkANqKAIANgIAIAIgASgClAMiBk8NCSADIAEoApADIAhqKAIANgIAIAJBAXIiCCABKAKUAyIGSQ0DIAghAgwJCyAPIA9BuLjBABCMBwALIAIgCEHIuMEAEIwHAAsgCCAJQdi4wQAQjAcACyADQQRqIAEoApADIAhBAnRqKAIANgIAIAJBAnIiCCABKAKUAyIGTwRAIAghAgwGCyADQQhqIAEoApADIAhBAnRqKAIANgIAIAJBA3IiAiABKAKUAyIGTw0FIANBDGogASgCkAMgAkECdGooAgA2AgAgC0EQaiELIANBEGohAyAFQQRqIQUgB0EBaiIHIA5JDQALDAELQQAgCSADQfi4wQAQ6gcACyAEIAEoAsACIBRBAnQiFSAOIBRqQQJ0IhQQ4QgiAxC4CiICNgJwIAQgCTYCWAJAIAIgCUYEQCADIAogCRDgCSADQYQITwRAIAMQmwcLIAQgASgCyAIgFSAUEOEIIgMQuAoiAjYCcCAEIAk2AlggAiAJRgRAIAMgDCAJEOAJIANBhAhPBEAgAxCbBwsgASgC6ANBAkYNBiABKALMAkUNBiABKALUAkUNBiAORQ0CQQAhEkEAIAlrIRdBAyEDQQAhBQJAAn8CQANAAkACQAJAAkACQAJAAkAgDyASSwRAIANBA2siCCAQaigCAEECdCICIAEoAqADIgZPDRAgCCAJTw0CIAUgCmoiESACQQJ0IiIgASgCnANqKAIANgIAIAJBAXIiCCABKAKgAyIGSQ0BIAghAgwQCyAPIA9B6LfBABCMBwALIANBAmsgCU8NAiARQQRqIAhBAnQiIyABKAKcA2ooAgA2AgAgAkECciIHIAEoAqADIgZPBEAgByECDA8LIANBAWsgCU8NASARQQhqIAdBAnQiGCABKAKcA2ooAgA2AgAgAkEDciILIAEoAqADIgZPBEAgCyECDA8LIAMgCU8NAyARQQxqIAEoApwDIAtBAnRqKAIANgIAIAIgASgCrAMiBk8NCSADIBdqIgtBA0YNBCAFIAxqIhEgASgCqAMgImooAgA2AgAgASgCrAMiBiAIIgJLDQUMCQsgA0EDayEDDAILIANBAWshAwwBCyADQQJrIQMLIAMgCUGouMEAEIwHAAsgA0EDawwDCyALQQJGDQEgEUEEaiABKAKoAyAjaigCADYCACABKAKsAyIGIAciAk0NAyALQQFHBEAgEUEIaiABKAKoAyAYaigCADYCACAFQRBqIQUgA0EEaiEDIBJBAWoiEiAOSQ0BDAcLCyADQQFrDAELIANBAmsLIAlBiLjBABCMBwALIAIgBkH4t8EAEIwHAAsMHgsMHQsgASgC0AIgFSAUEOEIIgMgCiAJELUHIANBhAhPBEAgAxCbBwsgASgC2AIgFSAUEOEIIgIgDCAJELUHIAJBgwhNDQMLIAIQmwcMAgsgAiAGQZi4wQAQjAcACyACIAZB6LjBABCMBwALIAQoAhgiA0UNEAJAIBBBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgEBCiAgwSCwwXCwwXCyADIAZBmLnBABCMBwALIARBGGogAyACIAUgByAkEIIFDAELIARBGGogAyACIAUgByAkICcQ+QQLAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBBWsOCAYBAgAAAwQFAAtBpPjGAEEoQaTMwQAQ6wcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEKcBDBQLIBMgASgCqAIgASgCrAIgBCgCHCIIIAQoAiAQlAEMEwsgASgCrAIiDiABKAKoAiIPaiIUQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAtwCQQFGBEAgASgC4AIQuAogCU8NEyAJELYJIgIgASgC4AIQ3AkgASgC4AIiA0GECEkNASADEJsHDAELIAlFDRIgCRC2CSECCyABIAI2AuACIAFBATYC3AIMEQsgASgCrAIiECABKAKoAiIUaiISQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAuQCQQFGBEAgASgC6AIQuAogCU8NESAJELYJIgIgASgC6AIQ3AkgASgC6AIiA0GECEkNASADEJsHDAELIAlFDRAgCRC2CSECCyABIAI2AugCIAFBATYC5AIMDwsgASgCrAIiDyABKAKoAiIJaiIVQQJ0IQwgBCgCICEFIAQoAhwhCCABKALsAiIHQQFHBH9BAAUgASgC8AIQuAoLIAxJBEAgDBC2CSEDIAwQtgkhAgJAIAdFBEAgA60gAq1CIIaEISsMAQsgAyABKALwAhDcCSACIAEoAvQCENwJIAEoAvACIgdBhAhPBEAgBxCbBwsgA60gAq1CIIaEISsgASgC9AIiA0GECEkNACADEJsHCyABICs3A/ACIAFBATYC7AILIBMQowUgFkEIakEAOgAAIBZCADcCACATIA8Q0AQgASgC7AJFDRAgD0ECdCIKIAEoArgDIgNNBEAgASgCxAMiAyAKTwRAIAEoArQDIRAgASgCwAMhFCAPRQ0PQQAhB0EAIAprIRFBAyEGQQohAkEBIQ4gCCEDAn8CQANAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgBSACQQprSwRAIAJBCWsgBU8NASACQQhrIAVPDQIgBkEDayIYIApJDQMgGCEGDAQLIAJBCmsMDgsgAkEJayECDAkLIAJBCGsMBQtDAAB/QyADQQRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgAyoCACIoiyIlICQgA0EIaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACISQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBBqIgtDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBB2sgBU8NCCACQQZrIAVPDQUgAkEFayAFTw0BIAogBkECa0sEQEMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBGsgBU8NCiACQQNrIAVPDQcgAkECayAFTw0DIAogBkEBa0sEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NDCACIAVPDQkgAkEBaiAFTw0FIAYgCk8NAkMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBDGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NHSACQQNqIAVPDRkgAkEEaiAFTw0VIAYgEWoiC0EDRw0OIAZBA2sMEQsgBkEBayEGDAELIAZBAmshBgsgBiAKQbi3wQAQjAcACyACQQVrDAILIAJBAmsMAQsgAkEBagsgBUGot8EAEIwHAAsgAkEGayECDAELIAJBA2shAgsgAiAFQZi3wQAQjAcACyACQQdrDAILIAJBBGsMAQsgAkEBawsgBUGIt8EAEIwHAAtDAAB/QyADQTRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EwaioCACIoiyIlICQgA0E4aioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBRqIhJDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAXQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBWogBU8NDyACQQZqIAVPDQsgAkEHaiAFTw0HIAtBAkYNAUMAAH9DIANBQGsqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQTxqKgIAIiiLIiUgJCADQcQAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgF0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQhqIAVPDRAgAkEJaiAFTw0MIAJBCmogBU8NCCALQQFHBEBDAAB/QyADQcwAaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANByABqKgIAIiiLIiUgJCADQdAAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACILQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQhqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgC0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACAHQRBqIQcgAkEVaiECIANB1ABqIQMgBkEEaiEGIA4gD0kgDkEBaiEODQEMEwsLIAZBAWsMAQsgBkECawsgCkH4tsEAEIwHAAtBACAKIANByLfBABDqBwALQQAgCiADQdi3wQAQ6gcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEOYBDA8LIAJBBGoMAgsgAkEHagwBCyACQQpqCyAFQei2wQAQjAcACyACQQNqDAILIAJBBmoMAQsgAkEJagsgBUHYtsEAEIwHAAsgAkECagwCCyACQQVqDAELIAJBCGoLIAVByLbBABCMBwALIAQgASgC8AIgCUECdCIOIAwQ4QgiAxC4CiICNgJwIAQgCjYCWAJ/AkACQAJAIAIgCkYEQCADIBAgChDgCSADQYQITwRAIAMQmwcLIAQgASgC9AIgDiAMEOEIIgMQuAoiAjYCcCAEIAo2AlggAiAKRgRAIAMgFCAKEOAJIANBhAhPBEAgAxCbBwsgASgCoAMiAiAMSQRAIAwgAiIDayIHIAEoApgDIAJrSwRAICAgAiAHQQRBBBCkBSABKAKgAyEDCyABKAKcAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCISBEAgBUEAIBL8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2AqADIAEgASgCrAMiAiAMSQR/IAwgAiIDayIHIAEoAqQDIAJrSwRAICEgAiAHQQRBBBCkBSABKAKsAyEDCyABKAKoAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCIMBEAgBUEAIAz8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACADQQFqBSAMCzYCrAMLIA9FDQggCUEEdCEFQQAhAkEAIAprIRVBAyEDQQEhCwJ/AkADQAJAAkACQAJAAn8CQCAKIANBA2siB0sEQCAHIA5qIhIgASgCoAMiBkkNASAJQQJ0IANqQQNrDAILIANBA2shAwwECyABKAKcAyAFaiACaiACIBBqIgcoAgA2AgAgA0ECayAKTw0BIAMgDmoiDEECayIRIAEoAqADIgZJBEAgASgCnAMgBWogAmpBBGogB0EEaigCADYCACADQQFrIApPDQMgDEEBayIXIAEoAqADIgZJBEAgASgCnAMgBWogAmpBCGogB0EIaigCADYCACADIApPDQUgASgCoAMiBiAMSwRAIAEoApwDIAVqIAJqQQxqIAdBDGooAgA2AgAgAyAVaiIMQQNGDQ8gEiABKAKsAyIHSQ0HIAlBAnQgA2pBA2sMCgsgCUECdCADagwCCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAZBuLbBABCMBwALIANBAmshAwwBCyADQQFrIQMLIAMgCkGotsEAEIwHAAsgASgCqAMgBWogAmogAiAUaiIGKAIANgIAIAxBAkYNBSARIAEoAqwDIgdPDQEgASgCqAMgBWogAmpBBGogBkEEaigCADYCACAMQQFGDQYgASgCrAMiByAXSwRAIAEoAqgDIAVqIAJqQQhqIAZBCGooAgA2AgAgAkEQaiECIANBBGohAyALIA9JIAtBAWohCw0BDAwLCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAdBmLbBABCMBwALDB0LDBwLIANBAmsMAgsgA0EBawwBCyADQQNrCyAKQYi2wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgEyAQENAEIAEoAtwCQQFHDQEgASgC5AJFDQECQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAIBBBAnQiBiABKAK4AyIDTQRAIAYgASgCxAMiA0sNASABKAK0AyEVIAEoAsADIQwgBCABKALgAiAUQQJ0Ig8gCRDhCCIDELgKIgI2AnAgBCAGNgJYIAIgBkcNJiAVIAYgAxDhCSADQYQITwRAIAMQmwcLIBBFDQ4gFUEMaiELQQAhAkEDIQdBASEOIAwhCiAIIQMDQAJAAkACQAJAAkACQCACIAVJBEAgAkEBaiIRIAVPDQEgAkECaiIRIAVPDQIgBiAHTQ0DQwAAf0MgA0EEaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIAMqAgAiKIsiJSAkIANBCGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgC0MAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEDaiAFTw0EIAJBBGogBU8NBSACQQVqIhggBUkNBiAYDA0LIAIgBUH4tMEAEIwHAAsgESAFQYi1wQAQjAcACyARIAVBmLXBABCMBwALIAcgBkGotcEAEIwHAAsgAkEDagwQCyACQQRqDAsLQwAAf0MgA0EQaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBDGoqAgAiKIsiJSAkIANBFGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEGaiAFTw0LIAJBB2ogBU8NByACQQhqIAVPDQNDAAB/QyADQRxqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EYaioCACIoiyIlICQgA0EgaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIRQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAKQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgEUEbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQlqIAVPDQwgAkEKaiAFTw0IIAJBC2ogBU8NBEMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhFBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIApBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASARQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBDGogBU8NDSACQQ1qIAVPDQkgAkEOaiAFTw0FQwAAf0MgA0E0aioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBMGoqAgAiKIsiJSAkIANBOGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkEMakMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgC0EQaiELIAdBBGohByAKQRBqIQogA0E8aiEDIAJBD2ohAiAOIBBJIA5BAWohDg0ACwwOC0EAIAYgA0H4tcEAEOoHAAtBACAGIANB6LXBABDqBwALIAJBCGoMAgsgAkELagwBCyACQQ5qCyAFQdi1wQAQjAcACyACQQdqDAILIAJBCmoMAQsgAkENagsgBUHItcEAEIwHAAsgAkEGagwCCyACQQlqDAELIAJBDGoLIAVBuLXBABCMBwALIAQgASgC4AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlgCQAJAIAIgBkYEQCADIBUgBhDgCSADQYQITwRAIAMQmwcLIAQgASgC6AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlggAiAGRw0aIAMgDCAGEOAJIANBhAhPBEAgAxCbBwsgASgClAMiAiAJSQRAIAkgAiIDayIHIAEoAowDIAJrSwRAIB8gAiAHQQRBBBCkBSABKAKUAyEDCyABKAKQAyIKIANBAnQiC2ohBSAHQQJPBEAgCSACQX9zakECdCIJBEAgBUEAIAn8CwALIBJBBHQgAkECdGsgCmogC2pBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2ApQDCyAQRQ0EIBVBDGohCSAUQQR0QQxyIQ5BACEDQQEhB0EAIQICQAJAAkADQCADQQNqIgUgBk8NBSADIA9qQQNqIgUgASgCiAMiCk8NBiABKAKEAyAOaiACaiACIAlqKAIANgIAIAMgFGoiCiABKAKUAyIFTw0DIAEoApADIA9qIAJqIAIgDGoiCygCADYCACABKAKUAyIFIApBAWpLBEAgASgCkAMgD2ogAmpBBGogC0EEaigCADYCACABKAKUAyIFIApBAmpNDQIgASgCkAMgD2ogAmpBCGogC0EIaigCADYCACABKAKUAyIFIApBA2pNDQMgASgCkAMgD2ogAmpBDGogC0EMaigCADYCACADQQRqIQMgAkEQaiECIAcgEEkgB0EBaiEHDQEMCQsLIApBAWohCgwCCyAKQQJqIQoMAQsgCkEDaiEKCyAKIAVB6LTBABCMBwALDBkLIAUgBkHItMEAEIwHAAsgBSAKQdi0wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgDkECdCIMIQIgASgCuAMiAyAMSQRAIAwgAyICayIHIAEoArADIAJrSwRAIB0gAiAHQQRBBBCkBSABKAK4AyECCyABKAK0AyIKIAJBAnQiC2ohBiAHQQJPBEAgDCADQX9zakECdCIQBEAgBkEAIBD8CwALIA5BBHQgA0ECdGsgCmogC2pBBGshBiACIAdqQQFrIQILIAZBADYCACACQQFqIQILIAEgAjYCuAMgASgC3AJFDQACQAJ/AkACQAJAAkACfwJAAkAgAiAMTwRAIAEoArQDIQogDkUNCUEEIQJBASELQQEhBiAKIQcgCCEDAkADQAJAAkACQCAFIAJBBGtLBEAgAkEDayAFTw0BIAJBAmsgBU8NAiAGQQFrIhggDEkNAyAYIQYMBQsgAkEEawwNCyACQQNrIQIMCQsgAkECawwGC0MAAH9DIANBBGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADKgIAIiiLIiUgJCADQQhqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NCCACIAVPDQcgAkEBaiAFTw0DIAYgDE8NAUMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NCSACQQNqIAVPDQYgAkEEaiAFTw0EIAwgBkEBaksEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAZBBGohBiAHQRBqIQcgAkEJaiECIANBJGohAyALIA5JIAtBAWohCw0BDAwLCyAGQQFqIQYLIAYgDEGotMEAEIwHAAtBACAMIAJBuLTBABDqBwALIAJBAWoMAQsgAkEEagsgBUGYtMEAEIwHAAsgAkEDaiECCyACIAVBiLTBABCMBwALIAJBAWsMAQsgAkECagsgBUH4s8EAEIwHAAsgBCABKALgAiAPQQJ0IhAgCRDhCCIDELgKIgI2AnAgBCAMNgJYIAIgDEcNFiADIAogDBDgCSADQYQITwRAIAMQmwcLIAEoAogDIgIgCUkEQCAJIAIiA2siByABKAKAAyACa0sEQCAeIAIgB0EEQQQQpAUgASgCiAMhAwsgASgChAMiCyADQQJ0IgZqIQUgB0ECTwRAIAkgAkF/c2pBAnQiCQRAIAVBACAJ/AsACyAUQQR0IAJBAnRrIAtqIAZqQQRrIQUgAyAHakEBayEDCyAFQQA2AgAgASADQQFqNgKIAwsgDkUNACAPQQR0IQVBACEDQQEhC0EBIQICfwJAAkACQAJAAkACQAJAA0AgDCACQQFrIgdLBEAgASgCiAMiBiAHIBBqTQ0FIAEoAoQDIAVqIANqIAMgCmoiBygCADYCACACIAxPDQQgAiAQaiIJIAEoAogDIgZPDQggASgChAMgBWogA2pBBGogB0EEaigCADYCACACQQFqIAxPDQMgASgCiAMiBiAJQQFqTQ0HIAEoAoQDIAVqIANqQQhqIAdBCGooAgA2AgAgAkECaiAMTw0CIAEoAogDIgYgCUECak0NBiABKAKEAyAFaiADakEMaiAHQQxqKAIANgIAIAJBBGohAiADQRBqIQMgCyAOSSALQQFqIQsNAQwKCwsgAkEBayECDAILIAJBAmohAgwBCyACQQFqIQILIAIgDEHYs8EAEIwHAAsgD0ECdCACakEBawwDCyAPQQJ0IAJqQQJqDAILIA9BAnQgAmpBAWoMAQsgD0ECdCACagsgBkHos8EAEIwHAAsgBCgCGCIDRQ0NIAhBBGsoAgAiAkF4cSIFIANBAnQiA0EEQQggAkEDcSICG2pJDRMgAkEAIAUgA0EnaksbDQAgCBCiAgwNCwwTCyAEQagBaiADIAIgASgCrAIQ1AQgEyABKAKoAiABKAKsAiAEKAKsASIDIAQoArABELcEIAQoAqgBIgJFDQsCQCADQQRrKAIAIghBeHEiBSACQQJ0IgJBBEEIIAhBA3EiCBtqTwRAIAhBACAFIAJBJ2pLGw0BIAMQogIMDQsMEgsMEgsgBEGoAWogAyACIAEoAqwCEJwFIBMgASgCqAIgASgCrAIgBCgCrAEiAyAEKAKwARC2BCAEKAKoASICRQ0KAkAgA0EEaygCACIIQXhxIgUgAkEBdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAwLDBELDBELIAZBAWohBgsgBiAIQcTNwQAQjAcACyATIAEoAqgCIAEoAqwCIAQoAlwiAyAEKAJgEKAFIAQoAlgiAkUNBwJAIANBBGsoAgAiCEF4cSIFIAJBAnQiAkEEQQggCEEDcSIIG2pPBEAgCEEAIAUgAkEnaksbDQEgAxCiAgwJCwwOCwwOCyAEQRhqIAMgAiABKAKsAiANKgIEIA0qAgwQqgMLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQngIgBCgCGCICRQ0FAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAcLDAwLDAwLIARBGGogAyACQQMgCCAkICcQ+QQLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQpAIgBCgCGCICRQ0DAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAULDAoLDAoLIARBGGogAyACQQEgASgCrAIgDSoCBCANKgIMEPkECyAEKAIgIQggBCgCHCEJIBMgASgCqAIgASgCrAIiCxDpBCALBEBBACECQQwhCiAIIQUDQAJAAkACQCABKAK4AyIDIAJBA2pLBEAgBUUNAiACIAlqKAIAIgdB////A3EhDCAHQYCAgIB4cSEGIAdBgICA/AdxIgNBgICA/AdGBEAgBkEQdiAMQQ12ckGABEEAIAwbckGA+AFyIQYMBAsgBkEQdiEGIANBgICAuARLDQEgA0GAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgA0ENdiAMQQ12akGAgAFqIAZyaiEGDAQLIANBgICAmANJDQMgDEGAgIAEciIHQf4AIANBF3YiDGt2IQMgB0EdIAxrIgx2QQFxBH8gA0EDIAx0QQFrIAdxQQBHagUgAwsgBnIhBgwDCyACIAJBBGogA0HIs8EAEOoHAAsgBkGA+AFyIQYMAQsgCCAIQbizwQAQjAcACyABKAK0AyAKaiAGQf//A3E2AgAgCkEQaiEKIAVBAWshBSACQQRqIQIgC0EBayILDQALCyABQQE6APwDIAQoAhgiA0UNAQJAIAlBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgCRCiAgwDCwwICwwICyAAQQE6AAAgACABNgIEIBtFIBpFcg0FIBkgGkEBEKIHDAULAkACQAJAIAEoArgCIgIgDSgCGEEHakF4cSIDTwRAIAFBADYCuAIgAiADayEIIANFDQEgAiADRg0DIAhFDQIgASgCtAIiAiACIANqIAj8CgAADAILQQAgAyACQYSkxwAQ6gcACyACIANGDQELIAEgCDYCuAILIA0pAxghKyABIAEoAqQCQQFqIgI2AqQCIAEgASkDcCArQgd8Qvj///8Pg3w3A3ACQCAbRSAaRXINAAJAIBlBBGsoAgAiA0F4cSICQQRBCCADQQNxIgMbIBpqTwRAIANBACACIBpBJ2pLGw0BIBkQogIgASgCpAIhAgwCCwwHCwwHCyACIAEoAmRJDQALCyAAQYACOwEADAILQYzJwQAQ3QkACyAAQQE6AAAgACAZNgIECyAEQcABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIARBADYCqAFBACAEQfAAaiAEQdgAaiAEQagBakHg+cQAEPUHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGEMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQNyAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGAMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQOCAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvgawMRfwd+AXsjAEGw1QBrIgMkACAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD8EggAq0hFAJAAkACQAJAAkACQAJAAn8CQAJ+AkACQAJAAkACQAJAAkACQEG4nMcAKQMAIhhC/wGDQgRSBEBCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQJBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLIgcbIgYEQCADQfDIAGogBWogA0EYaiAG/AoAAAsgBw0DIBUgBK0iGnwhFSAEIApqIQogFiAGrXwhFiAXIBp9IhdCAFINAAsMAQtCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQFBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLGyIGBEAgA0HwyABqIAVqIANBGGogBvwKAAALIBYgBq18IRYgBCAKaiEKIBUgBK0iGHwhFSAXIBh9IhdQRQ0ACwtB+LbJACgCACINQQBIDQJB+LbJACANQQFqNgIAIApBEUkEQANAIAwoAuy3RCEFIAwoAui3RCEEAkAgDCgC9LdEIgdFBEAgBSAKSw0BIAQgA0HwyABqIAUQ2wcNAQwFCyAFIApLDQAgDCgC8LdEIgYgB2ohDiADQfDIAGohBwNAIAVFDQUgBUEBayEFQaSkxwAgBiAGRSAGIA5GciIIGyEPIActAAAhCSAELQAAIQsgB0EBaiEHIARBAWohBEEAIAZBAWogCBshBiALIAkgDy0AAHFGDQALCyAMQRRqIgxBuANHDQALQfi2yQAgDTYCAEEDIQRBBCEBQQMhCQwLC0EAIApBEEGUpMcAEOoHAAsgGBDSByEBIABBgICAgHg2AgAgACABNgIEDAoLQfi2yQAgDTYCAAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAxB+LfEAGotAAAiBA4EAAMDAQMLQYCAARBxIgZFDRUgBkEAQYCAAfwLAEGAEBBxIgVFDRUgBUEAQYAQ/AsAIANBJGpBADsBACADQQA2AiBBqAcQcSIERQ0VIARBAEHYBvwLACAEQQA2ApQHIARBADYCiAcgBEEAOgCEByAEQQA2AoAHIAQgBTYC/AYgBCAGNgL4BiAEQgI3A/AGIARCADcD6AYgBEKAgICAIDcD4AYgBEEBNgLcBiAEQSQ2AtgGIARBADoApgcgBCADKQMYNwOYByAEQZ4HaiADKQEeNwEAQYABEHEiBkUNFSADQeQCakIANwIAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwLUAiADQQI2ArhFIANBADYCsEUgA0G8xQBqIANBGGoiBUHUAvwKAAAgA0GAAjsAw0ggA0EBOwHASCADQoCAgICCIDcDuEggA0IANwOwSCADQQA6AKhIIANBgAI7AaRIIAMgBDYCoEggA0EAOgCcSCADQQA2AphIIAMgBjYClEggA0GAATYCkEggAyABNgLISCADIAI2AsxIIANCADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyADQgA3A9ADIANCADcDyAMgA0IANwPAAyADQgA3A7gDIANCADcDsAMgA0IANwOoAyADQgA3A6ADIANCADcDmAMgA0IANwOQAyADQgA3A4gDIANCADcDgAMgA0IANwP4AiADQgA3A/ACIANCADcD6AIgA0IANwPgAiADQgA3A9gCIANCADcD0AIgA0IANwPIAiADQgA3A8ACIANB4ANqQQBB0AD8CwBBrLHJACgCACIJIQYgAkEDa0EYbSIFQQAgBUEAShsiCyEFIAtBAnRBvLHJAGohBwNAIAMgBEEDdGogBUEASAR8RAAAAAAAAAAABSAHKAIAtws5AwAgBCAGSSIKBEAgB0EEaiEHIAVBAWohBSAEIApqIgQgBk0NAQsLQQAhBQNAQQAhBCADQcACaiAFQQN0aiAdIAAgBEEDdGorAwAgAyAFIARrQQN0aisDAKKgOQMAIAUgCUkiBgRAIAUgBmoiBSAJTQ0BCwtEAAAAAAAA8H9EAAAAAAAA4H8gAiALQWhsaiIKQRhrIgJB/g9LIhAbRAAAAAAAAAAARAAAAAAAAGADIAJBuXBJIhEbRAAAAAAAAPA/IAJBgnhIIhIbIAJB/wdKIhMbQf0XIAIgAkH9F08bQf4PayAKQZcIayAQGyIVQfBoIAIgAkHwaE0bQZIPaiAKQbEHaiARGyIWIAIgEhsgExtB/wdqrUI0hr+iIR4gA0HcA2oiDiAJQQJ0aiEPQS8gCmtBH3EhF0EwIAprQR9xIRQgA0G4AmohGCACQQBKIRkgAkEBayEaIAkhBQJAA0AgA0HAAmogBSIGQQN0aisDACEdAkAgBkUNACADQeADaiEIIAYhBANAIAggHSAdRAAAAAAAAHA+ovwCtyIdRAAAAAAAAHDBoqD8AjYCACAYIARBA3RqKwMAIB2gIR0gBEEBRiIFDQEgCEEEaiEIQQEgBEEBayAFGyIEDQALCwJ/AkAgE0UEQCASDQEgAgwCCyAdRAAAAAAAAOB/oiIdRAAAAAAAAOB/oiAdIBAbIR0gFQwBCyAdRAAAAAAAAGADoiIdRAAAAAAAAGADoiAdIBEbIR0gFgshBSAdIAVB/wdqrUI0hr+iIh0gHUQAAAAAAADAP6KcRAAAAAAAACDAoqAiHSAd/AIiDLehIR0CfwJAAkACQAJ/IBlFBEAgAkUEQCAOIAZBAnRqKAIAQRd1DAILQQIhDUEAIB1EAAAAAAAA4D9mRQ0FGgwCCyAOIAZBAnRqIgUgBSgCACIFIAUgFHUiBSAUdGsiBDYCACAFIAxqIQwgBCAXdQsiDUEATA0BC0EBIQgCQCAGRQ0AQQAhBSAGQQFHBEAgBkEecSEbQQAhByADQeADaiEEA0AgBCgCACEIAn8CQCAEIAcEf0H///8HBSAIRQ0BQYCAgAgLIAhrNgIAQQAMAQtBAQshCCAEQQRqIhwoAgAhBwJ/AkAgHCAIBH8gB0UNAUGAgIAIBUH///8HCyAHazYCAEEAIQhBAQwBC0EBIQhBAAshByAEQQhqIQQgGyAFQQJqIgVHDQALCyAGQQFxRQ0AIANB4ANqIAVBAnRqIgQoAgAhBQJAIAQgCAR/IAVFDQFBgICACAVB////BwsgBWs2AgBBACEIDAELQQEhCAsCQCACQQBMDQBB////AyEEAkACQCAaDgIBAAILQf///wEhBAsgDiAGQQJ0aiIFIAUoAgAgBHE2AgALIAxBAWohDCANQQJGDQELIA0MAQtEAAAAAAAA8D8gHaEiHSAdIB6hIAhBAXEbIR1BAgshDSAdRAAAAAAAAAAAYQRAIA8hBCAGIQUCQCAJIAZBAWsiCEsNAEEAIQcDQAJAIANB4ANqIAhBAnRqKAIAIAdyIQcgCCAJTQ0AIAkgCCAIIAlLayIITQ0BCwsgBiEFIAdFDQAgBkECdCADakHcA2ohBANAIAZBAWshBiACQRhrIQIgBCgCACAEQQRrIQRFDQALDAMLA0AgBUEBaiEFIAQoAgAgBEEEayEERQ0ACyAFIAZNDQEgBkEBaiEHA0AgAyAHQQN0aiAHIAtqQQJ0KAK8sUm3OQMAQQAhBEQAAAAAAAAAACEdIANBwAJqIAdBA3RqIB0gACAEQQN0aisDACADIAcgBGtBA3RqKwMAoqA5AwAgBSAHTQ0CIAcgBSAHS2oiBiEHIAUgBk8NAAsMAQsLAkACQAJAQQAgAmsiBEH/B0wEQCAEQYJ4Tg0DIB1EAAAAAAAAYAOiIR0gBEG4cE0NAUHJByACayEEDAMLIB1EAAAAAAAA4H+iIR0gBEH+D0sNAUGBeCACayEEDAILIB1EAAAAAAAAYAOiIR1B8GggBCAEQfBoTRtBkg9qIQQMAQsgHUQAAAAAAADgf6IhHUH9FyAEIARB/RdPG0H+D2shBAsgHSAEQf8Haq1CNIa/oiIdRAAAAAAAAHBBZgRAIANB4ANqIAZBAnRqIB0gHUQAAAAAAABwPqL8ArciHUQAAAAAAABwwaKg/AI2AgAgBkEBaiEGIAohAgsgA0HgA2ogBkECdGogHfwCNgIACwJ8AkACQCACQf8HTARAIAJBgnhIDQFEAAAAAAAA8D8MAwsgAkH+D0sNASACQf8HayECRAAAAAAAAOB/DAILIAJBuHBLBEAgAkHJB2ohAkQAAAAAAABgAwwCC0HwaCACIAJB8GhNG0GSD2ohAkQAAAAAAAAAAAwBC0H9FyACIAJB/RdPG0H+D2shAkQAAAAAAADwfwsgAkH/B2qtQjSGv6IhHSAGQQFxBH8gBgUgA0HAAmogBkEDdGogHSADQeADaiAGQQJ0aigCALeiOQMAIB1EAAAAAAAAcD6iIR0gBkEBawshACAGBEAgAEEDdCADakG4AmohBCAAQQJ0IANqQdwDaiECA0AgBCAdRAAAAAAAAHA+oiIeIAIoAgC3ojkDACAEQQhqIB0gAkEEaigCALeiOQMAIARBEGshBCACQQhrIQIgHkQAAAAAAABwPqIhHSAAQQFHIABBAmshAA0ACwsgBkEBaiEKIANBwAJqIAZBA3RqIQggBiEEA0ACQCAJIAYgBCIAayIFIAUgCUsbIgdFBEBBACECRAAAAAAAAAAAIR0MAQsgB0EBakF+cSEPRAAAAAAAAAAAIR1BACEEQQAhAgNAIB0gBEHIs8kAaisDACAEIAhqIgsrAwCioCAEQdCzyQBqKwMAIAtBCGorAwCioCEdIARBEGohBCAPIAJBAmoiAkcNAAsLIANBoAFqIAVBA3RqIAdBAXEEfCAdBSAdIAJBA3QrA8izSSADQcACaiAAIAJqQQN0aisDAKKgCzkDACAIQQhrIQggAEEBayEEIAANAAsCQCAKQQNxIgBFBEBEAAAAAAAAAAAhHSAGIQIMAQsgA0GgAWogBkEDdGohBEQAAAAAAAAAACEdIAYhAgNAIAJBAWshAiAdIAQrAwCgIR0gBEEIayEEIABBAWsiAA0ACwsgBkEDTwRAIAJBA3QgA2pBiAFqIQQDQCAdIARBGGorAwCgIARBEGorAwCgIARBCGorAwCgIAQrAwCgIR0gBEEgayEEIAJBA0cgAkEEayECDQALCyABIB2aIB0gDRs5AwAgA0GwBGokACAMQQdxC/cYAxx/BHsBfSMAQSBrIg8kACAPQRRqIAEoAgAgACgCBCIbIAAoAggQowQgDygCGCEOAkACQAJAAkACQCAPKAIUIgpBgICAgHhGBEAgDiEXDAELIA8gDiAPKAIcEDkgDygCBCEXAkACQAJAAkAgDygCACIYQYCAgIB4RgRAIApFDQUgDkEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgCmpJDQkgAUEAIAIgCkEnaksbDQggDhCiAgwFCyAPKAIMIRMgDygCCCEQAkAgCgRAIA5BBGsoAgAiDUF4cSIMQQRBCCANQQNxIg0bIApqSQ0BIA1BACAMIApBJ2pLGw0JIA4QogILIA9BFGogASgCACAAKAIQIhwgACgCFBCjBCAPKAIYIQ4CQAJAAkACQAJAIA8oAhQiCkGAgICAeEYEQCAOIQEMAQsgDyAOIA8oAhwQOSAPKAIEIQEgDygCACIdQYCAgIB4Rw0BIApFDQAgDkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgCmpJDQQgAkEAIAMgCkEnaksbDQ0gDhCiAgsgGARAIBdBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIBhqSQ0OIAJBACADIBhBJ2pLGw0NIBcQogILIAEhFwwJCyAPKAIIIRkgCgRAIA5BBGsoAgAiDUF4cSIMQQRBCCANQQNxIg0bIApqSQ0NIA1BACAMIApBJ2pLGw0BIA4QogILQYAIEHEiEUUNASAAKgIcIAAqAhgiKpP9EyEnICr9EyEo/QwAAAAAAQAAAAIAAAADAAAAISZBACEKA0AgCiARaiIOICggJv37Af0MAAB/QwAAf0MAAH9DAAB/QyIp/ecBICf95gH95AH9CwIAIA5BEGogKCAm/QwEAAAABAAAAAQAAAAEAAAA/a4B/fsBICn95wEgJ/3mAf3kAf0LAgAgJv0MCAAAAAgAAAAIAAAACAAAAP2uASEmIApBIGoiCkGACEcNAAsgAkUNBwJAIAMEQEEPQQhBAyADQQJGGyADQQNGIiEbIhRBAnQhIiATQQJ0ISNBASEKQQAhDQwBC0EAIQpBASEDA0AgCiAZTw0IIApBAWogGU8NBiAKQQRqIQogAiADSyADQQFqIQMNAAsMCAsDQCAKIQ4gDUECdCIKIBlPDQcgCkEBciINIBlPDQYgIyABIApqLQAAIgwgASANai0AACINQQh0ckHA/wNxQQZ2IgpsICIgDEE/cSIVbGohJCAXIAogE2wgFCAVbGpBAnRqISVBACEaQQAhCgJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkADQAJAAkACQAJ/AkACfyATIA1BCHQgDHJBwP8DcUEGdmxBAnQgFCAMQT9xbEECdGogCmogECAKICRqIhVNDQAaAkACQAJAIAogIGoiCyISIAVPDQAgBCAaaiIWIBEgCiAlaiISLQAAQQJ0aioCADgCACAVQQRqIBBPDQICQCAFIAtBA2pLBEAgFkEMaiARIBJBBGotAABBAnRqKgIAOAIAIBVBCGogEE8NAyALQQZqIAVPDQEgFkEYaiARIBJBCGotAABBAnRqKgIAOAIAIANBAUYNCSAVQQxqIBBJDQYgEyANQQh0IAxyQcD/A3FBBnZsQQJ0IBQgDEE/cWxBAnRqIApqQQxqDAcLIAtBA2ohEgwBCyALQQZqIRILIBIgBUGQ88cAEIwHAAsgEyANQQh0IAxyQcD/A3FBBnZsQQJ0IBQgDEE/cWxBAnRqIApqQQhqDAELIBMgDUEIdCAMckHA/wNxQQZ2bEECdCAUIAxBP3FsQQJ0aiAKakEEagsgEEGA88cAEIwHAAsCQAJAAkACQAJAIAogH2oiCyAHTw0AIAYgGmoiFiARIBJBDGotAABBAnRqKgIAOAIAIBVBEGogEE8NBAJAAkAgByALQQNqSwRAIBZBDGogESASQRBqLQAAQQJ0aioCADgCACAVQRRqIBBPDQYgByALQQZqSwRAIBZBGGogESASQRRqLQAAQQJ0aioCADgCACAVQRhqIBBPDQYgC0EJaiAHTw0CIBZBJGogESASQRhqLQAAQQJ0aioCADgCACAVQRxqIBBPDQUgC0EMaiAHTw0DIBZBMGogESASQRxqLQAAQQJ0aioCADgCACAhRQ0LIBVBIGogEEkNCiATIA1BCHQgDHJBwP8DcUEGdmxBAnQgFCAMQT9xbEECdGogCmpBIGoMGgsgC0EGaiELDAMLIAtBA2ohCwwCCyALQQlqIQsMAQsgC0EMaiELCyALIAdB8PLHABCMBwALIBMgDUEIdCAMckHA/wNxQQZ2bEECdCAUIAxBP3FsQQJ0aiAKakEcagwDCyATIA1BCHQgDHJBwP8DcUEGdmxBAnQgFCAMQT9xbEECdGogCmpBGGoMAgsgEyANQQh0IAxyQcD/A3FBBnZsQQJ0IBQgDEE/cWxBAnRqIApqQRRqDAELIBMgDUEIdCAMckHA/wNxQQZ2bEECdCAUIAxBP3FsQQJ0aiAKakEQagsgEEHg8scAEIwHAAsgCiAeaiILIAlPDQggCCAaaiIWIBEgEkEgai0AAEECdGoqAgA4AgAgFUEkaiAQTw0OIAtBA2ogCU8NByAWQQxqIBEgEkEkai0AAEECdGoqAgA4AgAgFUEoaiAQTw0NIAtBBmogCU8NBiAWQRhqIBEgEkEoai0AAEECdGoqAgA4AgAgFUEsaiAQTw0MIAtBCWogCU8NBSAWQSRqIBEgEkEsai0AAEECdGoqAgA4AgAgFUEwaiAQTw0LIAtBDGogCU8NBCAWQTBqIBEgEkEwai0AAEECdGoqAgA4AgAgFUE0aiAQTw0KIAtBD2ogCU8NAyAWQTxqIBEgEkE0ai0AAEECdGoqAgA4AgAgFUE4aiAQTw0JIAtBEmogCU8NASAWQcgAaiARIBJBOGotAABBAnRqKgIAOAIACyAaQQRqIRogCkEBaiIKQQNJDQEMDwsLIAtBEmohCwwFCyALQQ9qIQsMBAsgC0EMaiELDAMLIAtBCWohCwwCCyALQQZqIQsMAQsgC0EDaiELCyALIAlB0PLHABCMBwALIBMgDUEIdCAMckHA/wNxQQZ2bEECdCAUIAxBP3FsQQJ0aiAKakE4agwFCyATIA1BCHQgDHJBwP8DcUEGdmxBAnQgFCAMQT9xbEECdGogCmpBNGoMBAsgEyANQQh0IAxyQcD/A3FBBnZsQQJ0IBQgDEE/cWxBAnRqIApqQTBqDAMLIBMgDUEIdCAMckHA/wNxQQZ2bEECdCAUIAxBP3FsQQJ0aiAKakEsagwCCyATIA1BCHQgDHJBwP8DcUEGdmxBAnQgFCAMQT9xbEECdGogCmpBKGoMAQsgEyANQQh0IAxyQcD/A3FBBnZsQQJ0IBQgDEE/cWxBAnRqIApqQSRqCyAQQcDyxwAQjAcACyAeQRVqIR4gCEHUAGohCCAGQTxqIQYgH0EPaiEfIARBJGohBCAgQQlqISAgDiACIA5LIgtqIQogDiENIAsNAAsMBwtBjI3IAEEuQbyNyAAQ6wcLAAsMCQsMCAsgCkEBaiENCyANIBlBsPLHABCMBwALIAogGUGg8scAEIwHAAsCQCARQQRrKAIAIgJBeHFBhAhBiAggAkEDcSIDG08EQCADQQAgAkGoCE8bDQUgERCiAiAdBEAgAUEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgHWpJDQcgAkEAIAMgHUEnaksbDQYgARCiAgsgGARAIBdBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIBhqSQ0HIAFBACACIBhBJ2pLGw0GIBcQogILIAAoAgAiAQRAIBtBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0HIAJBACADIAFBJ2pLGw0GIBsQogILIAAoAgwiAEUEQEEAIRcMBQsgHEEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgAGpJDQZBACEXIAFFDQMgAiAAQSdqSw0BDAMLDAULDAMLIAAoAgAiAQRAIBtBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0EIAJBACADIAFBJ2pLGw0DIBsQogILIAAoAgwiAUUNASAAKAIQIhxBBGsoAgAiAEF4cSICQQRBCCAAQQNxIgAbIAFqSQ0DIABFIAIgAUEnak1yDQAMAgsgHBCiAgsgD0EgaiQAIBcPC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvBHAMpfwN7C30jAEGwAmsiBCQAQQAQtgkhAyAEQQAQtgk2AsABIAQgAzYCvAEgBEEANgK4ASAEQgA3ArABIARCBDcCeCAEQgA3AnAgBEKAgICAwAA3AmggBEIENwJgIARCADcCWCAEQoCAgIDAADcCUCAEQQA2AjwgBEEANgI0IARBADYCLCAEQQA2AiQgBEEANgIcIARBADYCFCAEQQA2AgwgBEEANgJIIARBgICAgHg2ApgBIARBgICAgHg2AqQBIARBzAFqQQA6AAAgBEIENwKQASAEQgA3AogBIARCgICAgMAANwKAASAEQgA3AsQBIAEoAlwhFiAEIAI6ANgBIAQgFjYC1AEgBCABKAIIIgc2AtABIARBDGogBEHQAWoQ4QMCQAJAAkACQEGAgDAQcSIRRQ0AIBFBBGsiIS0AAEEDcQRAIBFBAEGAgDD8CwALQYCAEBBxIgtFDQAgC0EEayIiLQAAQQNxBEAgC0EAQYCAEPwLAAtBgIAwEHEiEkUNACASQQRrIiMtAABBA3EEQCASQQBBgIAw/AsAC0GAgDAQcSITRQ0AIBNBBGsiJC0AAEEDcQRAIBNBAEGAgDD8CwALQYCAwAAQcSIORQ0AIA5BBGsiJS0AAEEDcQRAIA5BAEGAgMAA/AsAC0GAgAgQcSIPRQ0AIA9BBGsiJi0AAEEDcQRAIA9BAEGAgAj8CwALQYCAEBBxIgxFDQAgDEEEayInKAIAIgNBA3EiBQRAIAxBAEGAgBD8CwALIAcEQCAPQQIgAhshKCAMQQQgAhshKUGAgARBACACGyEeQwAAgD8gASoCQCABLQBYQQJGIgMbQwAAAAAgASoCPCADGyIzkyE0QwAAEEEgASoCSCADG0MAAEDBIAEqAkQgAxsiNZNDAAB+Q5UhNiABKAIQISogASgCFCEfIAEoAgQhKwNAQYCABCAHIBBrIgMgA0GAgARPGyEZIAcgEEcEQCAQQRhsISBBACEIICshCSAqIRQgCyEaQQAhAyAMIRsgDiEKIA8hHANAIBoCfwJAIAcgCCAQaiIdSwRAIAkgIGoiBUERai8AACAFQRNqLQAAIgZBEHRyIg1BCHYhFSAFQQ5qLwEAIhcgBUEQai0AACIYQRB0ckH/AXGzQwAAf0OVITIgBf0AAgAhLEMAAAAAITFDAAAAACEvIA1B/wFxBEAgNSA2IA1BAWtB/wFxs5SSEIkEIS8LIBVB/wFxBEAgNSA2IBVBAWtB/wFxs5SSEIkEITELIDMgMiA0lJIhMiAzIBizQwAAf0OVIDSUkiEwIDMgF0EIdrNDAAB/Q5UgNJSSITcgBgR9IDUgNiAGQQFrQf8BcbOUkhCJBAVDAAAAAAshOCAFQRRqLwEAIQYgBUEWai0AACENIAMgEWoiFSAs/R8AOAIAIAMgEmoiFyAyOAIAIAMgE2oiGCAvOAIAIBVBBGogLP0fATgCACAXQQRqIDc4AgAgGEEEaiAxOAIAIBVBCGogLP0fAjgCACAXQQhqIDA4AgAgGEEIaiA4OAIAQwAAgD8gBkEIdrP9EyAGIA1BEHRyQf8BcbP9IAH9DAAAf0MAAH9DAAB/QwAAf0P95wEiLCAs/eQB/QwAAIC/AACAvwAAgL8AAIC//eQBIiz9HwEiMIuTICz9HwAiN4uTIjGMQwAAAAAQ4AghLyAKIA2zQwAAf0OVQwAAAD+UQ9sPSUCUIjgQmQIiMiAwIC8gL4wiOSAs/QwAAAAAAAAAAAAAAAAAAAAA/Ub9TSIs/ccB/RsCQQFxG5IiMCAxIDGUIDAgMJQgNyAvIDkgLP0bAEEBcRuSIi8gL5SSkpEiMJWU/RMgMiAvIDCVlP0gASAyIDEgMJWU/SACIDgQmwL9IAP9CwIAIAVBDGovAQAiBkH//wFxRQRAIAZBEHQMAwsgBkH/B3EhBSAGQYCAAnEhDSAGQYD4AXEiBkGA+AFGBEAgDUEQdCIGQYCAgPwHciAFRQ0DGiAGIAVBDXRyQYCAgP4HcgwDCyANQRB0IQ0gBkUNASAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2ogDXIMAgsgHSAHQdy7xwAQjAcACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgDUGAgIDYA3IgBUEXdGtyCzYCACACBEACfwJAIB0gH0kEQAJ/IBQgIGoiBkEUaigCACIFQQRLBEAgBkEEaigCACEFIAZBCGooAgAMAQsgBkEEagshBiAFDQFBACEFQQAMAgsgHSAfQcy7xwAQjAcMBwsgBigCAAshBiAcIAU7AQAgGyAGNgIACyAJQRhqIQkgFEEYaiEUIBpBBGohGiADQQxqIQMgG0EEaiEbIApBEGohCiAcQQJqIRwgCEEBaiIIIBlJDQALCyAEIB42ApwCIAQgKTYCmAIgBCAeNgKUAiAEICg2ApACIARBADYCjAIgBEKAgICAwAA3AoQCIARCgICAgMAANwL8ASAEQoCAkIDAADcC9AEgBCAONgLwASAEQYCADDYC7AEgBCATNgLoASAEQYCADDYC5AEgBCASNgLgASAEQYCABDYC3AEgBCALNgLYASAEQYCADDYC1AEgBCARNgLQASAEQQxqIBAgGSAEQdABahB+IBAgGWoiECAHSQ0ACyAnKAIAIgNBA3EhBQsCQAJAIANBeHFBhIAQQYiAECAFG08EQCAFQQAgA0GogBBPGw0GIAwQogIgJigCACICQXhxQYSACEGIgAggAkEDcSIDG0kNBSADQQAgAkGogAhPGw0GIA8QogIgJSgCACICQXhxQYSAwABBiIDAACACQQNxIgMbSQ0FIANBACACQaiAwABPGw0GIA4QogIgJCgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBMQogIgIygCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBIQogIgIigCACICQXhxQYSAEEGIgBAgAkEDcSIDG0kNBSADQQAgAkGogBBPGw0GIAsQogIgISgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBEQogIgFkUNBEGAgJABEHEiAkUNAyACQQRrIg4oAgAiA0EDcSIFBEAgAkEAQYCAkAH8CwALIAdFDQIgASgCICELIAEoAhwhD0EAIQkDQEGAgAQgByAJayIDIANBgIAETxshCiAHIAlHBEAgDyAJQQlsaiEFQQAhCCACIQMDQCALIAggCWoiDE0EQCAMIAtB/LvHABCMBwALIAVBBGr9XAAAISwgBf1cAAAhLSADQSBqIAVBCGosAACyQwAA/kKVOAIAIAMgLf2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgA0EQaiAs/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACADQSRqIQMgBUEJaiEFIAhBAWoiCCAKSQ0ACwsgBEEMaiAJIAogAkGAgCQQ5gEgByAJIApqIglLDQALDAELDAQLIA4oAgAiA0EDcSEFCwJAAkAgA0F4cUGEgJABQYiAkAEgBRtPBEAgBUEAIANBqICQAU8bDQYgAhCiAiAWQQFGDQRBgIDwARBxIgJFDQMgAkEEayIOKAIAIgNBA3EiBQRAIAJBAEGAgPAB/AsACyAHRQ0CIAEoAiwhCyABKAIoIQ9BACEKA0BBgIAEIAcgCmsiAyADQYCABE8bIQkgByAKRwRAIA8gCkEPbGohBUEAIQggAiEDA0AgCyAIIApqIgxNBEAgDCALQYy8xwAQjAcACyAFQQRq/VwAACEsIAVBCGr9XAAAIS0gBUEMaiwAACEMIAVBDWosAAAhFCAF/VwAACEuIANBOGogBUEOaiwAALJDAAD+QpU4AgAgA0E0aiAUskMAAP5ClTgCACADQTBqIAyyQwAA/kKVOAIAIAMgLv2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgA0EgaiAt/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACADQRBqICz9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIANBPGohAyAFQQ9qIQUgCEEBaiIIIAlJDQALCyAEQQxqIAogCSACQYCAPBCnASAHIAkgCmoiCksNAAsMAQsMBAsgDigCACIDQQNxIQULAkAgA0F4cUGEgPABQYiA8AEgBRtPBEAgBUEAIANBqIDwAU8bDQUgAhCiAiAWQQJNDQNBgIDQAhBxIgJFDQIgAkEEayIJKAIAIgNBA3EiBQRAIAJBAEGAgNAC/AsACyAHBEAgASgCOCEKIAEoAjQhC0EAIQgDQEGAgAQgByAIayIBIAFBgIAETxshASAHIAhHBEBBACEDIAIhBQNAIARB0AFqIAsgCiADIAhqELoGIAUgBP0ABNAB/QsCACAFQRBqIAT9AATgAf0LAgAgBUEgaiAE/QAE8AH9CwIAIAVBMGogBP0ABIAC/QsCACAFQUBrIAT9AASQAv0LAgAgBUHQAGogBCoCoAI4AgAgBUHUAGohBSADQQFqIgMgAUkNAAsLIARBDGogCCABIAJBgIDUABCUASABIAhqIgggB0kNAAsgCSgCACIDQQNxIQULIANBeHFBhIDQAkGIgNACIAUbSQ0EIAVBACADQaiA0AJPGw0BIAIQogIMAwsMAwsMAwsACwJAIARBDGoiARDUASICBEAgAEECNgIAIAAgAjYCBCABEIoCDAELIAAgBEEMakHEAfwKAAALIARBsAJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu+HQIQfwR+IwBB4AFrIgIkACABKAIMIQYCQAJAAkACQAJAAkACfwJAAkACQCABKAIUIgQgASgCECIDSQRAA0AgBCAGai0AACIIQQlrIgVBF0tBASAFdEGTgIAEcUVyDQIgASAEQQFqIgQ2AhQgAyAERw0ACyADIQQLIAJBCGogBiADIARBAWoiASADIAEgA0kbEPkBIAIoAgwhAyACKAIIIQFBFBBxIgVFDQEgBSABNgIMIAVBBTYCACAAIAU2AgQgAEGAgICAeDYCACAFIAM2AhAMBwsCQAJAAkACQCAIQdsARgRAIAEgAS0AGEEBayIFOgAYIARBAWohBCAFQf8BcUUNBCABIAQ2AhQgAkEBOgA4IAIgATYCNCACQQA2AkQgAkKAgICAgAE3AjwgAkHIAWohECACQaABaiEPIAJB4ABqIRFBCCEJA0AgAkGYAWogAkE0ahCfAyACLQCYAUEBRgRAIAIoApwBIQkMCAsCQAJAIAItAJkBQQFGBEAgAigCNCIHKAIMIQYCQCAHKAIUIgQgBygCECIDSQRAA0AgBCAGai0AACIIQQlrIgVBF0tBASAFdEGTgIAEcUVyDQIgByAEQQFqIgQ2AhQgAyAERw0ACyADIQQLIAJBKGogBiADIARBAWoiBSADIAMgBUsbEPkBIAIoAiwhBSACKAIoIQNBFBBxIglFDQogCSADNgIMIAlBBTYCACAJIAU2AhAMCwsCQAJAIAhB2wBHBEAgCEH7AEYNASAHIAJB3wFqQfjAwQAQ7gEhBQwKCyAHIActABhBAWsiBToAGCAEQQFqIQQgBUH/AXFFDQcgByAENgIUIAIgBzYC1AEgAkEBOgDYASACQZgBaiACQdQBahCfAwJAAn8gAi0AmAFBAUYEQCACKAKcAQwBCwJAAkACQAJAAkACQAJAIAItAJkBQQFGBEAgAkGYAWogAigC1AEQuwMgAigCmAFBAUYEQCACKAKcAQwJCyACKQOgASESIAJBmAFqIAJB1AFqEJ8DIAItAJgBQQFGBEAgAigCnAEMCQsgAi0AmQFBAUcNAiACQZgBaiACKALUARC7AyACKAKYAUEBRw0BIAIoApwBDAgLQQBBgILBAEGA/cAAENsGDAcLIAIpA6ABIRMgAkGYAWogAkHUAWoQnwMgAi0AmAFBAUYEQCACKAKcAQwHCyACLQCZAUEBRw0CIAJBmAFqIAIoAtQBEKUCIAIoApgBIgRBAkcNASACKAKcAQwGC0EBQYCCwQBBgP3AABDbBgwFCyACKAKcASEFIAJBmAFqIAJB1AFqEJ8DIAItAJgBQQFGBEAgAigCnAEMBQsgAi0AmQFBAUcNAiACQZgBaiACKALUARClAiACKAKYASIKQQJHDQEgAigCnAEMBAtBAkGAgsEAQYD9wAAQ2wYMAwsgAigCnAEhCyACQZgBaiACQdQBahCfAyACLQCYAUEBRgRAIAIoApwBDAMLIAItAJkBQQFHDQEgAkGYAWogAigC1AEQ3AIgAigCnAEiAyACKAKYASIGQYGAgIB4Rg0CGiACKAKgASEOIAMhCCAFIQMMAwtBA0GAgsEAQYD9wAAQ2wYMAQtBBEGAgsEAQYD9wAAQ2wYLIQNBAiEECyAHIActABhBAWo6ABggAiAHELoDIgU2AsgBIAIgDjYCwAEgAiAINgK8ASACIAY2ArgBIAIgEzcDsAEgAiASNwOoASACIAs2AqQBIAIgCjYCoAEgAiADNgKcASACIAQ2ApgBAkAgBEECRwRAIAUNASACQZABaiAPQSBqKQMANwMAIAJBgAFqIA9BEGr9AAMA/QsDACACIA/9AAMA/QsDcCADIQUMBgtBAiEEIAUEQCAQELEECyADIQUMBQtBAiEEIAZBgICAgHhyQYCAgIB4Rg0EIAhBBGsoAgAiA0F4cSIKQQRBCCADQQNxIgMbIAZqSQ0BIANBACAKIAZBJ2pLGw0TIAgQogIMBAsgByAHLQAYQQFrIgU6ABggBEEBaiEEIAVB/wFxRQ0CIAcgBDYCFCACQQE6ANgBIAIgBzYC1AFCACEUQQIhDkGBgICAeCEFQQIhC0IAIRUCQANAAkAgAkGYAWogAkHUAWoQ0QIgAi0AmAFBAUYEQCACKAKcASEDDAELAkAgAi0AmQFBAUYEQCACKALUASIEQQA2AgggBCAEKAIUQQFqNgIUIAJBmAFqIARBDGogBBCCAiACKAKcASEDIAIoApgBQQJGDQICQAJAAkACQAJAAkACQAJAAkAgAigCoAFBBGsOBQIAAQoDCgsgA0G1mMgAQQUQ2wdFDQQgA0Gr/MAAQQUQ2wcNCSAOQQJGDQZBq/zAAEEFEJ8HIQMMCgsgA0HMgcEAQQYQ2wdFDQIMCAsgAygAAEHiws2rBkcNByALQQJGDQNB9IDBAEEEEJ8HIQMMCAsgAykAAELm0rGr5q3YtuUAUg0GIAVBgYCAgHhGDQRBAiEEQdKBwQBBCBCfByEDIAVBgICAgHhyQYCAgIB4Rg0JIAYgBUEBEKIHDAkLIBVQRQRAQcyBwQBBBhCfByEDDAcLIAJBmAFqIAQQqwUgAigCmAFBAUYEQCACKAKcASEDDAcLIAIpA6ABIRNCASEVDAcLIBRQRQRAQbWYyABBBRCfByEDDAYLIAJBmAFqIAQQqwUgAigCmAFBAUYEQCACKAKcASEDDAYLIAIpA6ABIRJCASEUDAYLIAJBmAFqIAQQrgUgAigCnAEhDSACKAKYASILQQJHDQUgDSEDDAQLIAJBmAFqIAQQrgUgAigCnAEhCiACKAKYASIOQQJHDQQgCiEDDAMLIAJBmAFqIAQQrQUgAigCoAEhCCACKAKcASEGIAIoApgBIgVBgYCAgHhHDQNBAiEEIAYhAwwECyAVUARAQcyBwQBBBhCcByEDDAILIBRQBEBBtZjIAEEFEJwHIQMMAgsgC0EAIAtBAkcbIQRBgICAgHggBSAFQYGAgIB4RhshCyAOQQAgDkECRxshDiANIQMMAwsgBBCgASIDRQ0BCwtBAiEEIAVFIAVBgoCAgHhIcg0AIAZBBGsoAgAiCEF4cSIKQQRBCCAIQQNxIggbIAVqSQ0SIAhBACAKIAVBJ2pLGw0TIAYQogILIAcgBy0AGEEBajoAGCACIAcQ4gQiBTYCyAEgAiAINgLAASACIAY2ArwBIAIgCzYCuAEgAiASNwOwASACIBM3A6gBIAIgCjYCpAEgAiAONgKgASACIAM2ApwBIAIgBDYCmAECQAJAAkAgBEECRwRAIAUNASACQZABaiAPQSBqKQMANwMAIAJBgAFqIA9BEGr9AAMA/QsDACACIA/9AAMA/QsDcCADIQUMBwtBAiEEIAUNASADIQUMBgtBAiEEIAtBgICAgHhyQYCAgIB4Rg0FIAZBBGsoAgAiA0F4cSIIQQRBCCADQQNxIgMbIAtqSQ0TIANBACAIIAtBJ2pLGw0BIAYQogIMBQsgEBCxBCADIQUMBAsMEgsMEAsgAigCPCEIDAsLIAJBIGogBiADIAQgAyADIARLGxD5ASACKAIkIQQgAigCICEDQRQQcSIJDQQMBwsgBEECRg0EIAJB6ABqIAJBkAFqKQMANwMAIAJB2ABqIAJBgAFq/QADAP0LAwAgAiAC/QADcP0LA0ggAigCPCAMRgRAIwBBIGsiByQAAkAgAkE8aiIJKAIAIgZB1arVCksEf0EABUEEIAZBAXQiAyADQQRNGyIIQTBsIQMgByAGBH8gByAGQTBsNgIcIAcgCSgCBDYCFEEIBUEACzYCGCAHQQhqQQggAyAHQRRqEIUHIAcoAghBAUcNASAHKAIQIQkgBygCDAsgCUHUgsEAEJMJAAsgBygCDCEDIAkgCDYCACAJIAM2AgQgB0EgaiQAIAIoAkAhCQsgCSAMQTBsaiIDIAU2AgQgAyAENgIAIAMgAikDSDcCCCADQRBqIAJB0ABq/QADAP0LAgAgA0EgaiAR/QADAP0LAgAgAiAMQQFqIgw2AkQMAAsACyABIAJB3wFqQfi/wQAQ7gEhCQwICyACQRhqIAYgAyAEIAMgAyAESxsQ+QEgAigCHCEEIAIoAhghA0EUEHEiCUUNAwsgCSADNgIMIAlBGDYCACAJIAQ2AhAMAwsgBSAHEOsFIQkgAigCRAwDCyACQRBqIAYgAyAEIAMgAyAESxsQ+QEgAigCFCEDIAIoAhAhAUEUEHEiBUUNACAFIAE2AgwgBUEYNgIAIAAgBTYCBCAAQYCAgIB4NgIAIAUgAzYCEAwGCwALIAwLIQMgAigCQCEGIAMEQCAGQSRqIQQDQCAEQQRrKAIAIghBgICAgHhyQYCAgIB4RwRAIAQoAgAiCkEEaygCACIFQXhxIg1BBEEIIAVBA3EiBRsgCGpJDQcgBUEAIA0gCEEnaksbDQggChCiAgsgBEEwaiEEIANBAWsiAw0ACwtBgICAgHghCCACKAI8IgVFDQAgBkEEaygCACIDQXhxIg0gBUEwbCIFQQRBCCADQQNxIgMbckkNBCADQQAgDSAFQSdqSxsNBSAGEKICCyABIAEtABhBAWo6ABggAiABELoDIgM2AqQBIAIgDDYCoAEgAiAJNgKcASACIAg2ApgBIAhBgICAgHhHBEAgA0UNAiAMBEAgCUEkaiEEA0AgBEEEaygCACIGQYCAgIB4ckGAgICAeEcEQCAEKAIAIgpBBGsoAgAiBUF4cSINQQRBCCAFQQNxIgUbIAZqSQ0HIAVBACANIAZBJ2pLGw0IIAoQogILIARBMGohBCAMQQFrIgwNAAsLIAgEQCAJQQRrKAIAIgVBeHEiBCAIQTBsIg1BBEEIIAVBA3EiBRtySQ0FIAVBACAEIA1BJ2pLGw0GIAkQogILIAMhCQwBCyADRQ0AIAJBpAFqELEECyAJIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIAw2AgggACAJNgIEIAAgCDYCAAsgAkHgAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC8EZAhh/AXsjAEHgCmsiCyQAIAtBOGoiDf0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgC0EoaiIQICP9CwMAIAtBGGoiFCAj/QsDACALICP9CwMIAn8CQCABRQ0AIAtBxABqIQ8gASEOIAAhDAJAA0AgDC0AACITQRBJBEAgC0EIaiATQQJ0aiITIBMoAgBBAWo2AgAgDEEBaiEMIA5BAWsiDg0BDAILCyATQRBBwLTEABCMBwALQQEhDkEAIQxBDyALKAJEDQEaIAsoAkBFDQAgC0FAayEPQQ4MAQtBASEOIAsoAjwEQCALQTxqIQ9BDQwBCyALKAI4BEAgDSEPQQwMAQsgCygCNARAIAtBNGohD0ELDAELIAsoAjAEQCALQTBqIQ9BCgwBCyALKAIsBEAgC0EsaiEPQQkMAQsgCygCKARAIBAhD0EIDAELIAsoAiQEQCALQSRqIQ9BBwwBCyALKAIgBEAgC0EgaiEPQQYMAQsgCygCHARAIAtBHGohD0EFDAELIAsoAhgEQCAUIQ9BBAwBCyALKAIUBEAgC0EUaiEPQQMMAQsgCygCEARAIAtBEGohD0ECDAELIAtBCGpBBHIhD0EBIQxBACEOQQELIRYCfwJAIAlFDQAgDCALKAIMQQFGcUUNAAJAIAEEQEEAIQwDQCAAIAxqLQAAQQFGDQIgASAMQQFqIgxHDQALC0HQscQAEN0JAAsgBSAMSwRAIAQgDEEBdGpBADsBACADIAxLIgAEfyACIAxBAnRqKAIABSAOCyAMQRB0IAAbQQFyIQACQANAIAYgADYCACAHQQFGDQEgBkEANgIEIAZBAiAHIAdBAk8bIgFBAnRqIQYgByABayIHDQALQQEMAwtBAUEBQfCxxAAQjAcACyAMIAVB4LHEABCMBwALIAtB+ABqICP9CwMAIAtB6ABqICP9CwMAIAtB2ABqICP9CwMAIAsgI/0LA0ggCyALKAIIIhE2AkxBACEMAkAgDgR/IAsgESALKAIMIgxqIg02AlACQCAWQQFqIg5BA0YNACALIA0gCygCECIJaiINNgJUIAkgDEEBdGohDCAOQQRGDQAgCyANIAsoAhQiCWoiDTYCWCAJIAxBAXRqIQwgDkEFRg0AIAsgDSALKAIYIglqIg02AlwgCSAMQQF0aiEMIA5BBkYNACALIA0gCygCHCIJaiINNgJgIAkgDEEBdGohDCAOQQdGDQAgCyANIAsoAiAiCWoiDTYCZCAJIAxBAXRqIQwgDkEIRg0AIAsgDSALKAIkIglqIg02AmggCSAMQQF0aiEMIA5BCUYNACALIA0gCygCKCIJaiINNgJsIAkgDEEBdGohDCAOQQpGDQAgCyANIAsoAiwiCWoiDTYCcCAJIAxBAXRqIQwgDkELRg0AIAsgDSALKAIwIglqIg02AnQgCSAMQQF0aiEMIA5BDEYNACALIA0gCygCNCIJaiINNgJ4IAkgDEEBdGohDCAOQQ1GDQAgCyANIAsoAjgiCWoiDTYCfCAJIAxBAXRqIQwgDkEORg0AIAsgDSALKAI8IglqIg02AoABIAkgDEEBdGohDCAOQQ9GDQAgCyANIAsoAkAiDmo2AoQBIA4gDEEBdGohDAsgDEEBdAUgDAsgDygCAGoiHUEBIBZ0Ih5HDQAgC0G4AWogC0H4AGr9AAMA/QsDACALQagBaiALQegAav0AAwD9CwMAIAtBmAFqIAtB2ABq/QADAP0LAwAgCyAL/QADSP0LA4gBIAtByAFqQQBBgAn8CwACQAJAIAEEQEEAIQwDQCAAIAxqLQAAIg5BD0sNAiALQYgBaiAOQQJ0aiINKAIAIg5BoAJPDQMgDSAOQQFqNgIAIAtByAFqIA5BAnRqIAw2AgAgASAMQQFqIgxHDQALC0F/IAdnIh9BH3MiF3RBf3MhGkEAIQBBASESA0ACQAJAAkACQAJAIBJBEEkEQEEBIBJ0IRUgC0EIaiASQQJ0aigCACIPBEBBoAIgESARQaACTRshECAVQQFrIQEgC0HIAWogEUECdGohDSAAIQ4DQCAQIBFGDQYgDSgCACIAIANJIhQEQCACIABBAnRqKAIAIQkLIAcgDkH//wNxIgxNDQUgBiAMQQJ0aiAJIABBEHQgFBsgEnI2AgAgACAFTw0EIAQgAEEBdGogDjsBACARQQFqIREgDUEEaiENIAEiAEH//wNxIAxHBEBBASABIA5zQRB0Z0EPc3QiAEEBayAOcSAAciEACyAAIQ4gD0EBayIPDQALCyAKDQEMBQsgEkEQQeCyxAAQjAcACyASQQFrIhlBAkkNAyASQYCEAnIhIEEBIQFBAiEMA0AgASETIAwhAQJAIBNBEEkEQCATQQJ0IgwgC0HIAGoiDmooAgAiDSALQYgBaiAMaigCACIbTw0BIBIgE2siDEEPTQRAIA4gDEECdCIMaigCACIPIAtBiAFqIAxqKAIAIhxPDQIgDSANIBtJaiEMIAtByAFqIA9BAnRqIRQDQCAMIRACQAJAAkACQAJAAkAgDUGgAkkEQCAPIQwgFCEOIAUgC0HIAWogDUECdGooAgAiDU0EQANAIAxBnwJLDQMgDigCACANckGAAkkNBSAOQQRqIQ4gHCAMQQFqIgxHDQAMCAsACyAEIA1BAXRqISEgDUEQdCAgciEiA0AgDEGfAksNAyAOKAIAIhggDXJB/wFNBEAgBSAYTQ0GIAcgIS8BACAEIBhBAXRqLwEAIBN0Qf//A3FyIglNDQcgBiAJQQJ0aiAYQRh0ICJyNgIACyAOQQRqIQ4gDEEBaiIMIBxHDQALDAYLIA1BoAJBoLPEABCMBwALQaACIA8gD0GgAk0bIQwLIAxBoAJBsLPEABCMBwALIA0gBUHAs8QAEIwHAAsgGCAFQdCzxAAQjAcACyAJIAdB4LPEABCMBwALIBAgECAbSSIOaiEMIBAhDSAODQALDAILIAxBEEGQs8QAEIwHAAsgE0EQQYCzxAAQjAcACyABIAEgGUkiDmohDCAODQALDAMLIAAgBUGQtMQAEIwHAAsgDCAHQYC0xAAQjAcACyARQaACQfCzxAAQjAcACwJAIBIgF0kiAUUNAAJAIAcgFU8EQCAVIAcgFWtLDQFBBCASdCIMRQ0CIAYgFUECdGogBiAM/AoAAAwCC0EAIBUgB0HwssQAEOoHAAsgC0EANgLYCiALQQE2AswKIAtB1JzIADYCyAogC0IENwLQCiALQcgKakHwssQAEI0IAAsgEiAXSQRAIAEgEmoiEiAXTQ0BCwsgCEEANgIIIBYgF00NAkEgIB9rIhAgFksNAkEAIQFBACENQQAhAkH//wMhAwNAAkAgC0EIaiAQQQJ0aigCACIJRQ0AQaACIBEgEUGgAk0bIRJBASAQIBdrIgp0IhRBAWsiFUGAwAFyIRhBAiAKQR9xIhl0QQJrIRNBfyAQdEF/cyEKIAtByAFqIBFBAnRqIQ4gACEMAkACQAJAA0ACQCAMIBpxIgBB//8DcSIPIANB//8DcUcEQCAHIA9NDQEgBiAPQQJ0aiANQRB0IBhyNgIAIAgoAgAgDSIBayAUSQRAIAggDSAUQQJBAhCkBSAIKAIIIQELIAgoAgQiAyABQQF0aiEPIBkEfyATBEAgD0EAIBP8CwALIAMgASAUakEBdGpBAmshDyABIBVqBSABCyECIA9BADsBACAIIAJBAWoiATYCCCAAIQMgDSECCyARIBJGDQIgDigCACIAIAVPDQMgBCAAQQF0aiAMOwEAIAIgDEH//wNxIg8gF3ZqIg0gAU8NBCAIKAIEIA1BAXRqIABBBHQgEGo7AQAgEUEBaiERIA5BBGohDiABIQ0gCiIAQf//A3EgD0cEQEEBIAAgDHNBEHRnQQ9zdCIAQQFrIAxxIAByIQALIAAhDCAJQQFrIgkNAQwFCwsgDyAHQaCyxAAQjAcACyARQaACQbCyxAAQjAcACyAAIAVBwLLEABCMBwALIA0gAUHQssQAEIwHAAsCQCAQIBZPIgwNACADQf//A3EiCSAAIBpxQf//A3FHDQAgASACTwRAIAEgAmsiCiAIKAIAIAFrSwRAIAggASAKQQJBAhCkBSAIKAIIIQELIApBAXQiDgRAIAgoAgQiDSABQQF0aiANIAJBAXRqIA78CgAACyAIIAEgCmoiATYCCCAHIAlLBEAgBiAJQQJ0aiABIAJBf3NqIAJBEHRyQYDAAXI2AgAgASENDAILIAkgB0GQssQAEIwHAAsgAiABIAFBgLLEABDqBwALIAwNAyAQIBAgFklqIhAgFk0NAAsMAgsgDkEQQaC0xAAQjAcACyAOQaACQbC0xAAQjAcACyAdIB5GCyALQeAKaiQAC9AjAiZ7E38CQAJAAkACQAJAAkAgAUECSwRAIANFDQEgBUUNAiAHRQ0DIABB/wEgAi0AAEGFlQFsQQh2IjEgBC0AACIvQZqCAmxBCHZqQZWKAWtBBnUiNEEAIDRBAEobIjQgNEH/AU4bOgACIABB/wEgMSAGLQAAIjVBpcwBbEEIdmpBmu8Aa0EGdSI0QQAgNEEAShsiNCA0Qf8BThs6AAAgAEH/ASAxIC9BkzJsQQh2IDVBiOgAbEEIdmprQYTEAGpBBnUiMUEAIDFBAEobIjEgMUH/AU4bOgABIAJBAWohNCADQQFrIgNBfnEhOyAAQQNqITEgA0EBcSE+IAFBA2siASABQQZwIjxrIjlBBkkNBiADQQF2IgMiASA5QQZrIi5BBm4iMiABIDJJGyIBIAdBAWsiMCIyIAEgMkkbIgEgBUEBayIzIjIgASAySRsiAUEQSQ0EIDEgAiADIC5BBm4iLiADIC5JGyIDIDAiLiADIC5JGyIDIDMiLiADIC5JGyIDQQF0akEDakkgNCAAIANBBmxqQQlqIgBJcQ0EIDEgBCADQQJqIgJqSSAAIARLcSAxIAIgBmpJIAAgBktxcg0EIAFBAWoiAEEPcSICQRAgAhsiAiABQX9zaiE2IAcgACACayIwayE6IAYgMGohLiAFIDBrIQMgBCAwaiEyIDQgMEEBdCIAaiECIDsgAGshASAxIDBBBmxqIQAgOSAwQXpsaiE9IC/9DyEZIDX9DyEUIAQhNSAGITAgMSEvIDQhMwNAIC8gM/0AAAAiGiAU/Q0AAgQGAAAAAAAAAAAAAAAA/YkB/akB/QyFSgAAhUoAAIVKAACFSgAAIgz9tQFBCP2tASIkIBQgMEEBav0AAAAiFP0NDxAREhMUFRYXGBkaGxwdHv2JASII/QwJAAkACQAJAAkACQAJAAkAIg39lQEgFP2JASIT/Y4BIBMgCP2OAf0MAwADAAMAAwADAAMAAwADACIO/ZUB/Y4B/QwIAAgACAAIAAgACAAIAAgAIg/9jgFBBP2NASIJ/akBIhH9DCVmAAAlZgAAJWYAACVmAAAiFf21AUEI/a0B/a4B/QxmyP//Zsj//2bI//9myP//Ihb9rgFBBv2sAf0MAAAAAAAAAAAAAAAAAAAAACII/bgB/Qz/AAAA/wAAAP8AAAD/AAAAIgr9tgEgGiAI/Q0ICgwOAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASIlIAn9qgEiCyAV/bUBQQj9rQH9rgEgFv2uAUEG/awBIAj9uAEgCv22Af0NAAQIDBAUGBwAAAAAAAAAACAz/QAAECIhIAj9DQACBAYAAAAAAAAAAAAAAAD9iQH9qQEgDP21AUEI/a0BIiYgFCAI/Q0HCAkKCwwNDgAAAAAAAAAA/YkBIgkgDf2VASAU/YoBIhv9jgEgGyAJ/Y4BIA79lQH9jgEgD/2OAUEE/Y0BIhL9qQEiFyAV/bUBQQj9rQH9rgEgFv2uAUEG/awBIAj9uAEgCv22ASIJ/RsA/RcIIAn9GwH9FwkgCf0bAv0XCiAJ/RsD/RcLICEgCP0NCAoMDgAAAAAAAAAAAAAAAP2JAf2pASAM/bUBQQj9rQEiECAS/aoBIiAgFf21AUEI/a0B/a4BIBb9rgFBBv2sASAI/bgBIAr9tgEiCf0bAP0XDCAJ/RsB/RcNIAn9GwL9Fw4gCf0bA/0XDyIcICQgGSA1QQFq/QAAACIZ/Q0PEBESExQVFhcYGRobHB0e/YkBIgkgDf2VASAZ/YkBIhj9jgEgGCAJ/Y4BIA79lQH9jgEgD/2OAUEE/Y0BIh39qQEiJ/0MExkAABMZAAATGQAAExkAACIJ/bUBQQj9rQEgEf0MCDQAAAg0AAAINAAACDQAACIR/bUBQQj9rQH9rgH9sQH9DAQiAAAEIgAABCIAAAQiAAAiEv2uAUEG/awBIAj9uAEgCv22ASAlIB39qgEiKCAJ/bUBQQj9rQEgCyAR/bUBQQj9rQH9rgH9sQEgEv2uAUEG/awBIAj9uAEgCv22Af0NAAQIDBAUGBwAAAAAAAAAACAmIBkgCP0NBwgJCgsMDQ4AAAAAAAAAAP2JASILIA39lQEgGf2KASId/Y4BIB0gC/2OASAO/ZUB/Y4BIA/9jgFBBP2NASIe/akBIikgCf21AUEI/a0BIBcgEf21AUEI/a0B/a4B/bEBIBL9rgFBBv2sASAI/bgBIAr9tgEiC/0bAP0XCCAL/RsB/RcJIAv9GwL9FwogC/0bA/0XCyAQIB79qgEiHiAJ/bUBQQj9rQEgICAR/bUBQQj9rQH9rgH9sQEgEv2uAUEG/awBIAj9uAEgCv22ASIL/RsA/RcMIAv9GwH9Fw0gC/0bAv0XDiAL/RsD/RcPIhf9DQAAAAAOHgAAAAAPHwAAAAAgECAe/QwagQAAGoEAABqBAAAagQAAIgv9tQFBCP2tAf2uAf0M67r//+u6///ruv//67r//yIQ/a4BQQb9rAEgCP24ASAK/bYBIh4gISAI/Q0JCw0PAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASIgIBsgDf2VASAw/QAAACIf/YoBIiL9jgEgIiAb/Y4BIA79lQH9jgEgD/2OAUEE/Y0BIiL9qgEiKiAV/bUBQQj9rQH9rgEgFv2uAUEG/awBIAj9uAEgCv22ASIr/Q0EFAAAAAAIGAAAAAAMHAAA/Q0QEQAABAUWFwAACgscHQAAIBogCP0NAQMFBwAAAAAAAAAAAAAAAP2JAf2pASAM/bUBQQj9rQEiGyAYIA39lQEgNf0AAAAiLP2JASIj/Y4BICMgGP2OASAO/ZUB/Y4BIA/9jgFBBP2NASIY/akBIiMgCf21AUEI/a0BIBMgDf2VASAf/YkBIh/9jgEgHyAT/Y4BIA79lQH9jgEgD/2OAUEE/Y0BIhP9qQEiHyAR/bUBQQj9rQH9rgH9sQEgEv2uAUEG/awBIAj9uAEgCv22ASAaIAj9DQkLDQ8AAAAAAAAAAAAAAAD9iQH9qQEgDP21AUEI/a0BIhogGP2qASIYIAn9tQFBCP2tASAT/aoBIi0gEf21AUEI/a0B/a4B/bEBIBL9rgFBBv2sASAI/bgBIAr9tgH9hgEgISAI/Q0BAwUHAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASITIB0gDf2VASAs/YoBIgz9jgEgDCAd/Y4BIA79lQH9jgEgD/2OAUEE/Y0BIgz9qQEiDSAJ/bUBQQj9rQEgIv2pASIOIBH9tQFBCP2tAf2uAf2xASAS/a4BQQb9rAEgCP24ASAK/bYBICAgDP2qASIPIAn9tQFBCP2tASAqIBH9tQFBCP2tAf2uAf2xASAS/a4BQQb9rAEgCP24ASAK/bYB/YYB/WYiDP0NAAEdAAQFBgceAAoLDA0fACAbICMgC/21AUEI/a0B/a4BIBD9rgFBBv2sASAI/bgBIAr9tgEgGiAYIAv9tQFBCP2tAf2uASAQ/a4BQQb9rAEgCP24ASAK/bYB/YYBIBMgDSAL/bUBQQj9rQH9rgEgEP2uAUEG/awBIAj9uAEgCv22ASAgIA8gC/21AUEI/a0B/a4BIBD9rgFBBv2sASAI/bgBIAr9tgH9hgH9ZiIN/Q0AAQIdBAUGBwgeCgsMDQ4f/QsAUCAvIBwgF/0NAAALGwAAAAAMHAAAAAANHSAmICkgC/21AUEI/a0B/a4BIBD9rgFBBv2sASAI/bgBIAr9tgEiDyATIA4gFf21AUEI/a0B/a4BIBb9rgFBBv2sASAI/bgBIAr9tgEiDv0NAAAAAAwcAAAAAAAAAAAAACAe/RsA/RcKICv9GwD9Fwv9DQAAAgMUFQAACAkaGwAADg8gDP0NGgACAwQFGwAICQoLHAAODyAN/Q0AGgIDBAUGGwgJCgsMHA4P/QsAQCAvIBwgF/0NCBgAAAAACRkAAAAAChoAACAPIA79DQAAABAAAAAABBQAAAAACBj9DQABEhMAAAYHGBkAAAwNHh8gDP0NAAECAxgABgcICRkADA0ODyAN/Q0AAQIDBBgGBwgJChkMDQ4P/QsAMCAvIBwgF/0NAAAAAAYWAAAAAAcXAAAAACAlICggC/21AUEI/a0B/a4BIBD9rgFBBv2sASAI/bgBIAr9tgEiDiAaIC0gFf21AUEI/a0B/a4BIBb9rgFBBv2sASAI/bgBIAr9tgEiD/0NBBQAAAAACBgAAAAADBwAAP0NEBEAAAQFFhcAAAoLHB0AACAM/Q0AARUABAUGBxYACgsMDRcAIA39DQABAhUEBQYHCBYKCwwNDhf9CwAgIC8gHCAX/Q0AAAMTAAAAAAQUAAAAAAUVICQgJyAL/bUBQQj9rQH9rgEgEP2uAUEG/awBIAj9uAEgCv22ASIJIBsgHyAV/bUBQQj9rQH9rgEgFv2uAUEG/awBIAj9uAEgCv22ASII/Q0AAAAADBwAAAAAAAAAAAAAIA79GwD9FwogD/0bAP0XC/0NAAACAxQVAAAICRobAAAODyAM/Q0SAAIDBAUTAAgJCgsUAA4PIA39DQASAgMEBQYTCAkKCwwUDg/9CwAQIC8gHCAX/Q0AEAAAAAABEQAAAAACEgAAIAkgCP0NAAAAEAAAAAAEFAAAAAAIGP0NAAESEwAABgcYGQAADA0eHyAM/Q0AAQIDEAAGBwgJEQAMDQ4PIA39DQABAgMEEAYHCAkKEQwNDg/9CwAAIDVBEGohNSAwQRBqITAgL0HgAGohLyAzQSBqITMgNkEQaiI2DQALIBn9Fg8hLyAU/RYPITUMBQtBAEEDIAFBmOvEABDqBwALQQBBAEGo68QAEIwHAAtBAEEAQbjrxAAQjAcAC0EAQQBByOvEABCMBwALIAQhMiAFIQMgBiEuIAchOiA5IT0gMSEAIDshASA0IQILA0AgAUUgA0ECSXIgOkEBTXINASAAQQJqQf8BIAItAABBhZUBbEEIdiI2IC9B/wFxIjNBCWwgMkEBaiIwLQAAIi9qIC8gM2pBA2xqQQhqQQR2Ij9BmoICbEEIdmpBlYoBa0EGdSIzQQAgM0EAShsiMyAzQf8BThs6AAAgAEH/ASA2IDVB/wFxIjdBCWwgLkEBaiIzLQAAIjVqIDUgN2pBA2xqQQhqQQR2IkBBpcwBbEEIdmpBmu8Aa0EGdSI3QQAgN0EAShsiNyA3Qf8BThs6AAAgAEEFakH/ASACQQFqLQAAQYWVAWxBCHYiNyAyLQAAIjIgL0EJbGogLyAyakEDbGpBCGpBBHYiMkGaggJsQQh2akGVigFrQQZ1IjhBACA4QQBKGyI4IDhB/wFOGzoAACAAQQNqQf8BIDcgLi0AACIuIDVBCWxqIC4gNWpBA2xqQQhqQQR2Ii5BpcwBbEEIdmpBmu8Aa0EGdSI4QQAgOEEAShsiOCA4Qf8BThs6AAAgAEEBakH/ASA2ID9BkzJsQQh2IEBBiOgAbEEIdmprQYTEAGpBBnUiNkEAIDZBAEobIjYgNkH/AU4bOgAAIABBBGpB/wEgNyAyQZMybEEIdiAuQYjoAGxBCHZqa0GExABqQQZ1Ii5BACAuQQBKGyIuIC5B/wFOGzoAACAAQQZqIQAgAkECaiECIDpBAWshOiADQQFrIQMgAUECayEBIDAhMiAzIS4gPUEGayI9QQZPDQALCwJAAkACQAJAAkAgPgRAIAQgBWpBAWsiAEUNAiAGIAdqQQFrIgNFDQEgPEUNAyAALQAAIQAgMSA5aiIBQf8BIDQgO2otAABBhZUBbEEIdiICIAMtAAAiA0GlzAFsQQh2akGa7wBrQQZ1IgRBACAEQQBKGyIEIARB/wFOGzoAACA8QQFGDQQgAUH/ASACIABBkzJsQQh2IANBiOgAbEEIdmprQYTEAGpBBnUiA0EAIANBAEobIgMgA0H/AU4bOgABIDxBAk0NBSABQf8BIABBmoICbEEIdiACakGVigFrQQZ1IgBBACAAQQBKGyIAIABB/wFOGzoAAgsPC0Ho68QAEN0JAAtB2OvEABDdCQALQQBBAEHI7cQAEIwHAAtBAUEBQdjtxAAQjAcAC0ECQQJB6O3EABCMBwAL5CACE38CfiMAQeAAayIHJAACQAJAAkACQAJAAkACQAJ/AkACQAJAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCnAQiBiABKAKUBCIMayIIQQAgBiAITxsgAk8NACABQZwEaiERIAFB6ANqIQggAUGYBGohFSABQfADaiEOAkACQAJAAn8CQAJAA0ACQAJAAkACQCABLQDkA0UEQCAIKQMAUA0BIAhBJEEsIAEoAogEQYGAgIB4RhtqKAIAIgUgBiAFIAZJGyIJIAEoAqAESSABKAKYBCILIAEoAvgDIgVBAXZJcg0EIAEoAvQDIQoCQCAFIAtrQQ9LIAUgC09xRQRAIAUgCUkNBCAFIAlrIgUEQCAKIAkgCmogBfwKAAALIAsgCWshCwwBCyAJIAtLDQQgCyAJayILRQ0AIAogCSAKaiAL/AoAAAsgASALNgKYBCABIAYgCWs2ApwEIAEgDCAJazYClAQgASgCiARBgYCAgHhGBEAgASABKAKMBCAJazYCjAQLIAEoAvgDIQUMBAsgB0EdOgAYDA0LQYiaxwBBP0HImscAEOsHAAsgCSAFIAVBgJDFABDqBwALIAkgCyAFQfCPxQAQ6gcACyAFIAtBgEBrIgZJBEAgBiAFayIKIAEoAvADIAVrSwRAIA4gBSAKQQFBARCkBSABKAL4AyEFCyABKAL0AyIGIAVqIQkgCkECTwR/IApBAWsiCgRAIAlBACAK/AsACyAGIAUgCmoiBWoFIAkLQQA6AAAgASAFQQFqIgU2AvgDIAEoApgEIQsLAkAgCCkDACIYQv7///8PVg0AQX8gCyAYp2oiBiAGIAtJGyAFTw0AIAUgBk8EQCABIAYiBTYC+AMMAQsgBiAFayIKIAEoAvADIAVrSwRAIA4gBSAKQQFBARCkBSABKAL4AyEFCyABKAL0AyIGIAVqIQkgCkECTwR/IApBAWsiCgRAIAlBACAK/AsACyAGIAUgCmoiBWoFIAkLQQA6AAAgFSgCACELIAEgBUEBaiIFNgL4AwsgByAVNgJEIAcgETYCQCAHIAU2AjwgByABKAL0AzYCOAJ/AkACfiABKAKcAyIFIAEpA6ADIhkgBa0iGCAYIBlWG6ciBkYEQEEBIQ1BJCEFQiUMAQsgB0HIAGogASABKAKYAyAGaiAFIAZrIAdBOGoQ1gEgBykCUCEYIAcoAkwhBSAHKAJIRQRAIAEgASkDoAMgBa18NwOgAyAYpyENDAILIBinIQ0gBUH/AXFBKEYNASAHKAJYIQ8gGEIIiAshGCAHIA06ADAgByAYPgAxIAcgGEIwiDwANyAHIBhCIIg9ADUgBUEQdiEUIAVBCHYMAQtBKCEFIA1B/wFxQQZGCyEMIAsgFSgCACIKSwRAQfiaxwBBK0Gkm8cAEOsHAAsgCCAIKQMAIhkgCiALa60iGH03AwAgGCAZUQRAIBEgCjYCAAsCQCAFQf8BcSIGQShHBEAgBkEkRw0HIA1B/wFxQQFrDgMBAwQHCyAMQQFxBEAgASgCvAQiBkUNBiABQQE6AOQDIAEgBkEBazYCvAQLIAEoApwEIgYgASgClAQiDGsiBUEAIAUgBk0bIAJJDQEMCAsLIActADEMAgsgBygCNC0ACAwBCyAHKAI0LQAIC0H/AXFBJUcNASAKIAEoApQEayACSQ0BIAcoAjQhFyAHLQAwIAdBGGohCyABLQDFBCEPIwBBEGsiECQAAkACQAJAIAgoAiwiEyAIKAIQIhVJBEACQCAIKAIMIhEgE2otAAAiDkEFTwRAIAsgDjoAASALQRk6AAAMAQsgCCkCFCEYIAhCgICAgBA3AhQgEEEIaiAIQRxqIgYoAgAiCTYCACAGQQA2AgAgECAYNwMAIBACfyAJIAJBAWsiEk8EQCAQKAIEIRYgEgwBCyASIAlrIgYgECgCACAJa0sEQCAQIAkgBhDvBSAQKAIIIQkLIBAoAgQiFiAJaiEFIAZBAk8EfyAGQQFrIgYEQCAFQQAgBvwLAAsgFiAGIAlqIglqBSAFC0EAOgAAIAlBAWoLIgk2AgggEiAVIBNBAWoiBWsiBksNAiAJIBJHDQMgEgRAIBYgBSARaiAS/AoAAAtBASEJAkACQAJAIAgoAiAiBkGAgICAeHNBAiAGQQBIIgYbIgVBAWsOAgABAgsgCCgCJCIFIBNNBEAgBSARaiEJIBMgBWshBQwCCyAFIBMgE0HQkMUAEOoHAAsgCCgCKCEFIAgoAiQhCQsgCEEgaiERIA4gDyAJIAUgFiASEFogBkUEQCAIQRRqIgYgESkCADcCACAGQQhqIBFBCGooAgA2AgALIBEgECkDADcCACALQSg6AAAgCCACIBNqNgIsIBFBCGogEEEIaigCADYCAAsgEEEQaiQADAMLIBMgFUHgj8UAEIwHAAtBACASIAZBsJDFABDqBwALIAkgEkGgkMUAEN4JAAtBA0cNAiAXKAIAIQUgF0EEaigCACIIKAIAIgYEQCAFIAYRAwALIAgoAgQiBgRAIAUgBiAIKAIIEKIHCyAXQQxBBBCiBwwCC0GsmccAQStB2JnHABDrBwALIAcgDzYCJCAHIAcpAzA3AhwgByAFOgAYIAcgFEEIdjoAGyAHIAxB/wFxIBRBCHRyOwAZCyAHLQAYQShHDQIgASgClAQhCwwBCyABKAL4AyIJIAxNDQUgASgC9AMiBiAMaiIFLQAAIgpBBU8EQCAHIAo6ABkgB0EZOgAYDAILIAEtAMUEIRRBASENAkACQAJAQQIgASgCiAQiD0GAgICAeHMgD0EAThsiDkEBaw4CAAECCyABKAKMBCIIIAxNBEAgBiAIaiENIAwgCGshDgwCCyAIIAwgDEHQkMUAEOoHAAsgASgCkAQhDiABKAKMBCENCyACQQFrIgggCSAMayIGSQRAIAogFCANIA4gBUEBaiAIEFogD0EATgRAIAdB0ABqIgUgAUGIBGoiBkEIaigCADYCACABQQA2ApAEIAcgBikCADcDSCABKAL8AyIPBEAgASgCgAQiCEEEaygCACIGQXhxIg1BBEEIIAZBA3EiBhsgD2pJDQkgBkEAIA0gD0EnaksbDQogCBCiAgsgAUH8A2oiBiAHKQNINwIAIAZBCGogBSgCADYCAAsgAUGBgICAeDYCiAQgASACIAxqIgs2ApQEIAEgDEEBajYCjAQMAQtBASACIAZBkJDFABDqBwALIAsgASgC+AMiBksNB0EBIQ5BAiABKAKIBCIGQYCAgIB4cyAGQQBOGyIFQQFrDgIBAgMLIAAgB/0AAhj9CwIADB0LIAEoAowEIgYgC00EQCABKAL0AyAGaiEOIAsgBmshBQwCCyAGIAsgC0HQkMUAEOoHAAsgASgCkAQhBSABKAKMBCEOCyAHIAJBAWsiDzYCLCAHIAU2AiggBSAPRw0EIAEoAqgEIgUNGSABKAIIQQJHBEAgAS0AxgIhCCABKALABCEGIAcgAS0AxwIiBToAOCAGQYCABHEiDEEQdiICIAEoAtQBQYGAgIB4R3IhCgJAAkACQCAGQRBxBEACQAJAIAVBEEYEQAJAIAhBAWsOBhkSAwIZAAULQQEhBSAGQQFxRQ0fQYSYxQAMIAtBACEGIAhBAWsOBhcQGQUXHgQLQQEhBSAGQQFxRQ0dQYSYxQAMHgsgASgC4AFBgYCAgHhHDRhBDgwZCyAFQRBGDQwCQAJAAkAgCEEBaw4GFwEYAhceAAsgDEEAIAVBB00bDQsgAiAKcQ0NDB0LIAwNDAwcCyAMRQ0bIAVBB00NCQwbC0EBIQIgBkEBcSEGDA8LIAVBCE8NCAwHCyAFQQhJDQYMGAtBrJjHABDdCQALIAwgCUHgj8UAEIwHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQQAgCyAGQcCQxQAQ6gcACyAHQQA2AkhBACAHQShqIAdBLGogB0HIAGpB2JrHABD1BwALQQQQcSIFRQ0KIAVB9QBB9gAgChs2AgBBsJjFAAwSCyAKRQ0QC0EAIQYMBQsCQCAIQQFrDgYIAAkDCA4ECyAMRQ0BCyAKDQMLQQEhBSAGQQFxRQ0MQYSYxQAMDQtBASEFIAZBAXFFDQtBhJjFAAwMCyACIApxDQFBASEFIAZBAXFFDQpBhJjFAAwLC0H3AEH4ACAFQQhGIgIbIQ0gAiAGQQFxcg0BQfkAIQ0gBUEQRg0BIAdBADYCSEEAIAdBOGpBnJjFACAHQcgAakGgmMUAEPkHAAtB+ABB+QAgBkEBcRshDQtBBBBxIgVFDQAgBSANNgIAQbCYxQAMCAsACyAMRQ0FC0EOIAEoAuABQYGAgIB4Rg0BGiAFQRBHDQILQQ8LOgAAIABBkAY7AAEMBQsgAUEIaiECIApFBEAgB0EQaiEGIwBBgAhrIggkACAIIAIQrQIgAi0AvwIhAkGACBBxIQUCQAJAAn8gAkEIRgRAIAVFDQJBtJrFAAwBCyAFRQ0BQcyaxQALIQIgBSAIQYAI/AoAACAGIAI2AgQgBiAFNgIAIAhBgAhqJAAMAQsACyAHKAIQIQUgBygCFAwDCyAHQQhqIQYjAEGACGsiCCQAIAggAhCtAgJAQYAIEHEiAgRAIAIgCEGACPwKAAAgBkHkmsUANgIEIAYgAjYCACAIQYAIaiQADAELAAsgBygCCCEFQeSaxQAMAgtBASEFIAZBAXFFDQBBhJjFAAwBC0EBIQVByJjFAAshDQJAIAEoAqgEIgpFDQAgASgCrAQiAigCACIMBEAgCiAMEQMACyACKAIEIghFDQAgCkEEaygCACIGQXhxIgJBBEEIIAZBA3EiDBsgCGpJDQMgDEEAIAIgCEEnaksbDQQgChCiAgsgASANNgKsBCABIAU2AqgECyABKAIIQQJGDQUgBSAOIA8gAyAEIAFBCGogASgCrAQoAhQRCQACQAJAIAEoAqgDQQFGBEACQCABKAKsAyICIAEoArADTw0AIAEoArQDIgxFDQAgASgCuAMhDSABLQDAAyEUQQEhBgwCC0EHIAEtAMADIgUgBUEHTRshCEECIQMgBUECdEGYjsUAaiEOIAEoArwDIQogASgCuAMhDQNAIAUgCEYNAyABIAVBAWoiBSIUOgDAAyAOKAAAIglB/wFxIgZFDQcgASANIAlBCHZB/wFxayICQQAgAiANTRsiBCAGbiICIAQgAiAGbEdqIgw2ArQDIAlBEHZB/wFxIg9FDQhBACECIAFBADYCrAMgASAKIAlBGHZrIgRBACAEIApNGyIGIA9uIgQgBiAEIA9sR2oiBDYCsANBASEGIA5BBGohDiAERSAMRXINAAsMAQtBAiEDQQAhBiABKAKsAyICIAEoArADTw0BCyABIAJBAWo2AqwDIAYhAwsgASAUOgDUAyABIAw2AtADIAEgDTYCzAMgASACNgLIAyABIAM2AsQDIABBKDoAAAsgB0HgAGokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HEjsUAEIEIAAtBtI7FABCBCAALQayYxwAQ3QkAC44aBB5/AnsBfQF+IwBBsMAAayIHJAACQAJAAkAgAiADQf8BcUECdCIEKALQhElwRQRAQQEhBSACIAQoAuCESW5BAnQiBARAQQAhBQJAIARBAE4EQCAHQQA2ArQgIAdBMGpBASAEIAdBsCBqEIUHIAcoAjBBAUcNASAHKAI4IQYgBygCNCEFCyAHIAY2ArQgIAcgBTYCsCBB4L7EAEE2IAdBsCBqQdC+xABBmL/EABDgBgALIAcoAjQhBQsgB0EANgIsIAcgBTYCKCAHIAQ2AiQCQAJAIANB/wFxQQFrDgMDAQEACyACQQNuIgNBAnQiAgRAIAIgBEsEQCAHQSRqQQAgAhDvBSAHKAIsIQYgBygCKCEFCyAFIAZqIQQgAkEBayILBEAgBEEAIAv8CwALIAQgC2pBADoAACACIAZqIQYLIAcgBjYCLCAGQQJ2IgIgAyACIANJGyIERQ0DA0AgBUEDakH/AToAACAFIAEvAQBBgAFqQYECbjoAACAFQQJqIAFBBGovAQBBgAFqQYECbjoAACAFQQFqIAFBAmovAQBBgAFqQYECbjoAACABQQZqIQEgBUEEaiEFIARBAWsiBA0ACwwDCyAHQRBqIAdBLGooAgA2AgAgByAHKQIkNwMIIAdBsCBqEO4CIAcoArAgRQRAIAdBJGpBARDRCQsCQCACIANB/wFxQQJ0KALwhEluQQJ0IhEgBygCECIFTQRAIAcoAgwhEgwBCyARIAVrIgQgBygCCCAFa0sEQCAHQQhqIAUgBBDvBSAHKAIQIQULIAcoAgwiEiAFaiELIARBAk8EfyAEQQFrIgQEQCALQQAgBPwLAAsgEiAEIAVqIgVqBSALC0EAOgAAIAVBAWohEQsgByARNgIQAn8CfwJAAkACQAJAIANB/wFxQQFrDgMBAgMACyAHQTBqQQBBgCD8CwAgB0GwIGpBAEGAIPwLACACQQNuIQ9BASEcQQMMBAsgB0EwakEAQYAg/AsAIAdBsCBqQQBBgCD8CwAgAkECdgwCCyAHQTBqQQBBgCD8CwAgB0GwIGpBAEGAIPwLAEEBIRwgAiEPQQMMAgsgB0EwakEAQYAg/AsAIAdBsCBqQQBBgCD8CwAgAkEBdgshD0EECyEUAkACQAJAIA8EQCAPQQh2IA9B/wFxQQBHaiIEQQFrIgtBACAEIAtPGyEFIAEhCyABIRUgASEWIAEhGUGAAiEXA0AgBSEdIBQgDyAXIA8gF0kbIgQgE0EIdGsiBmwiBUH//wNxQQNuIQkgFCAEIB5qbEH//wNxQQNuIQoCQAJAAkACQCAPIAxBgAJqIgggCCAPSxsiECAMayIYIBRsIg1BgQhJBEAgBEECdCEaIBQgBCAfaiIbbCEIAkACQAJAAkACQAJAAkAgA0H/AXFBAWsOAwEFAgALIBBBA2wiBiAMQQNsIglPIAIgBk9xDQIgCSAGIAJB+LzEABDqBwALIBBBAnQiBCAMQQJ0IgZPIAIgBE9xDQIgBiAEIAJBiL3EABDqBwALIBBBAXQiBiAMQQF0IglPIAIgBk9xDQMgCSAGIAJB2L3EABDqBwALIA0gBiAJayIGIAYgDUsbRQ0HIAggICAEQQNsIgRqIgYgBiAISxshCUEAIQggBSATQYB6bCAEaiIEIAQgBUsbIgpBBE8EQCAJQXxxIQYgCkF8cSEIIAdBMGohBSALIQQDQCAFIAT9BAEA/fsB/QyAAIA3gACAN4AAgDeAAIA3/eYB/QsCACAEQQhqIQQgBUEQaiEFIAZBBGsiBg0ACyAIIApGDQgLIAggCWshBiALIAhBAXRqIQUgB0EwaiAIQQJ0aiEEA0AgBCAFLwEAs0OAAIA3lDgCACAFQQJqIQUgBEEEaiEEIAZBAWoiBg0ACwwHCyANIAQgBmsiBCAEIA1LG0UNBiAIIA4gGmoiBCAEIAhLGyEJQQAhCCAFIBogE0EKdGsiBCAEIAVLGyIKQQRPBEAgCUF8cSEGIApBfHEhCCAHQTBqIQUgFSEEA0AgBSAE/QQBAP37Af0MgACAN4AAgDeAAIA3gACAN/3mAf0LAgAgBEEIaiEEIAVBEGohBSAGQQRrIgYNAAsgCCAKRg0HCyAIIAlrIQYgFSAIQQF0aiEFIAdBMGogCEECdGohBANAIAQgBS8BALNDgACAN5Q4AgAgBUECaiEFIARBBGohBCAGQQFqIgYNAAsMBgsgDCAQSw0CIA1B//8DcUEDbiIEIBggBCAYSRtFDQUgCiAbIAogG0kbIQpBACEIIAkgBiAGIAlLGyIJQQRPBEAgCkH8/wFxIQYgCUH8/wFxIQggB0EwaiEFIBYhBANAIAUgBP0EAQD9+wH9DIAAgDeAAIA3gACAN4AAgDf95gEiIiAi/Q0ICQoLDA0ODwwNDg8MDQ4P/QsCICAFICIgIv0NBAUGBwQFBgcICQoLCAkKC/0LAhAgBSAiICL9DQABAgMAAQIDAAECAwQFBgf9CwIAIARBCGohBCAFQTBqIQUgBkEEayIGDQALIAggCUYNBgsgCCAKayEGIBYgCEEBdGohBCAHQTBqIAhBDGxqIQUDQCAFQQhqIAQvAQCzQ4AAgDeUIiQ4AgAgBUEEaiAkOAIAIAUgJDgCACAEQQJqIQQgBUEMaiEFIAZBAWoiBg0ACwwFCyANQQJ2IgogBiAJa0EBdiIGIAYgCksbRQ0EQQAhBiAFQQJ2IgUgBEEBdCIEIBNBCXRrQQF2IgogBSAKSRsiBUEBRg0DIAhBAnYiBiAEICFqQQF2IgQgBCAGSxtB/v///wNxIQggBUEBcSEKQQAhBiAHQTBqIQUgGSEEA0AgBSAE/QQBAP37Af0MgACAN4AAgDeAAIA3gACAN/3mASIiICL9DQgJCgsICQoLCAkKCwwNDg/9CwIQIAUgIiAi/Q0AAQIDAAECAwABAgMEBQYH/QsCACAEQQhqIQQgBUEgaiEFIAggBkECaiIGRw0ACwwCC0EAIA1BgAhB6L3EABDqBwALIAwgECACQZi9xAAQ6gcACyAKRQ0BCyAHQTBqIAZBBHRqIgQgASAJQQF0aiAGQQJ0aiIFLwEAs0OAAIA3lCIkOAIIIAQgJDgCBCAEICQ4AgAgBCAFLwECs0OAAIA3lDgCDAsCfyAcRQRAIBhBAnQiBCANSw0FIAdBMGoMAQsgDUH//wNxQQNuIQQCQCANQQNJDQBBgAIgBCAEQYACTxshCEEBIQYgB0GwIGohBSAHQTBqIQQDQCAFIAQqAgA4AgAgBUEMakGAgID8AzYCACAFQQRqIARBBGopAgA3AgAgBiAbRg0BIARBDGohBCAFQRBqIQUgBiAISSAGQQFqIQYNAAsLIBhBAnQiBEGBCE8NAyAHQbAgagshBSAQQQJ0IgYgEUsgBiAMQQJ0IgxJcg0EIAYgDGsiDCAEIAQgDEsbBEBBACAaayEGIBIhBANAIARB/wEgBSoCAEMAAH9DlBC5ByIk/AFBACAkQwAAAABgGyAkQwAAf0NeGzoAACAEQQFqQf8BIAVBBGoqAgBDAAB/Q5QQuQciJPwBQQAgJEMAAAAAYBsgJEMAAH9DXhs6AAAgBEECaiEEIAVBCGohBSAOIAZBAmoiBkcNAAsLIBJBgAhqIRIgC0GADGohCyAgQYAGayEgIBVBgBBqIRUgDkGACGshDiAWQYAEaiEWIB5BgAJrIR4gIUGABGshISAfQYACayEfIBlBgAhqIRkgE0EBaiETIB1BAWshBSAXIgxBgAJqIRcgHQ0ACwsgACAHKQMINwIAIABBCGogB0EQaigCADYCAAwGC0EAIARBgAhBqL3EABDqBwALQQAgBCANQci9xAAQ6gcACyAMIAYgEUG4vcQAEOoHAAtB+L3EAEHFAEHAvsQAEOsHAAsCQAJAIAIgBEsEQCAHQSRqQQAgAhDvBSAHKAIoIQUgBygCLCEEDAELQQAhBCACRQ0BC0EAIQMgAkEITwRAIAQgBWohBiAEIAJBeHEiA2ohBCABIQ4gAyELA0AgBiAO/QABACIj/akB/QyAAAAAgAAAAIAAAACAAAAA/a4BIiL9GwBBgQJu/REgIv0bAUGBAm79HAEgIv0bAkGBAm79HAIgIv0bA0GBAm79HAMgI/2qAf0MgAAAAIAAAACAAAAAgAAAAP2uASIi/RsAQYECbv0RICL9GwFBgQJu/RwBICL9GwJBgQJu/RwCICL9GwNBgQJu/RwD/Q0ABAgMEBQYHAAAAAAAAAAA/VsAAAAgDkEQaiEOIAZBCGohBiALQQhrIgsNAAsgAiADRg0BCyACIANrIQ4gASADQQF0aiEGA0AgBCAFaiAGLwEAQYABakGBAm46AAAgBkECaiEGIARBAWohBCAOQQFrIg4NAAsLIAcgBDYCLAsgB0EgaiAHQSxqKAIAIgE2AgAgByAHKQIkIiU3AxggAEEIaiABNgIAIAAgJTcCAAsgB0GwwABqJAAL1BkCDn8CeyMAQUBqIgMkACADIAE2AhwgA0EANgIYIAMgATYCFCADIAA2AhAgA0EBOgAkIANBPzYCDCADQT82AiAgA0E0aiICIANBDGoiBhD9AiADIAMoAjggASADKAI0GyIBNgIcIANBADYCGCADIAE2AhQgAyAANgIQIANBAToAJCADQSM2AgwgA0EjNgIgIAIgBhD9AiADKAI4IQIgAygCNCEHIANBATsBMCADIAIgASAHGyIBNgIsIANBADYCKCADQQE6ACQgA0EuNgIgIAMgATYCHCADQQA2AhggAyABNgIUIAMgADYCECADQS42AgwCQAJAAkACQAJAA0ACQCADKAIQIQEgA0E0aiADQQxqEP0CIAMoAjRFBEACQCADLQAxDQACQCADLQAwQQFGBEAgAygCLCEAIAMoAighAQwBCyADKAIsIgAgAygCKCIBRg0BCyADKAIQIAFqIQggACABayEHDAILIAgNAUEGIQEMAwsgAygCKCEAIAMgAygCPDYCKCAAIAFqIQggAygCOCAAayEHIAMtADFBAUcNAQsLAkACQCAHQQBOBEACQCAHRQRAQQAhBkEBIQQMAQsgBxBxIgRFDQIgCCEBIAQhAAJAIAciAkEQSQ0AIAJB8P///wdxIQpBACEGA0AgBCAGaiEAIAYgCGoiAf0AAAAiEf0M//////////////////////0nIhD9FgFBAXEgEP0WAEEBcWogEP0WAkEBcWogEP0WA0EBcWogEP0WBEEBcWogEP0WBUEBcWogEP0WBkEBcWogEP0WB0EBcWogEP0WCEEBcWogEP0WCUEBcWogEP0WCkEBcWogEP0WC0EBcWogEP0WDEEBcWogEP0WDUEBcWogEP0WDkEBcWogEP0WD0EBcWpB/wFxQRBHBEAgBiEKDAILIAAgEf0Mv7+/v7+/v7+/v7+/v7+/v/1u/QwaGhoaGhoaGhoaGhoaGhoa/Sb9DCAgICAgICAgICAgICAgICD9TiAR/VD9CwAAIAZBEGohBiACQRBrIgJBD0sNAAsgAkUEQCAKIQYMAgsgBiAIaiEBIAQgBmohAAsgAiAKaiEGA0AgASwAACILQQBOBEAgAEEgQQAgC0HBAGtB/wFxQRpJGyALcjoAACAAQQFqIQAgAUEBaiEBIApBAWohCiACQQFrIgINAQwCCwsgAyAKNgIUIAMgBDYCECABIAJqIQ4gAyAHNgIMIAcgCGohDyAKIQZBACECA0ACfwJAAkACfwJAAkACQAJAIAEsAAAiAEEASARAIAEtAAFBP3EhDCAAQR9xIQsCfyAAQV9NBEAgC0EGdCAMciEAIAFBAmoMAQsgAS0AAkE/cSAMQQZ0ciEMIABBcEkEQCAMIAtBDHRyIQAgAUEDagwBCyALQRJ0QYCA8ABxIAEtAANBP3EgDEEGdHJyIQAgAUEEagsiCyACIAFraiEMIABBowdHDQECQCACIApqIgRFDQAgBCAHTwRAIAQgB0YNAQwUCyAEIAhqLAAAQUBIDRMLIAQgCGohAUEAIQUDQEGDASEJIAEgCEYNCCABQQFrIgIsAAAiAEEASARAIABBP3ECfyABQQJrIgItAAAiDcAiAEFATgRAIA1BH3EMAQsgAEE/cQJ/IAFBA2siAi0AACINwCIAQb9/SgRAIA1BD3EMAQsgAEE/cSABQQRrIgItAABBB3FBBnRyC0EGdHILQQZ0ciIAQYCAxABGDQkLIAIhAQJAAkAgBQ0AIABBgAFPBEAgAEGnAU0NASAAEOYERQ0BQYCAxAAhAkEAIQUMAgtBgIDEACECQQAhBSAAQSdrIg1BE01BAEEBIA10QYGBIHEbDQEgAEHeAGsOAwEAAQALQQEhBSAAIQILIAJBgIDEAEYNAAsCQCACQYABTwRAIAJBqQFNDQkgAhD6BA0BDAkLIAJB3wBxQcEAa0EaTw0ICwJAIARBAmoiAEUNACAAIAdPBEAgACAHRg0BDBMLIAAgCGosAABBQEgNEgsgACAIaiEBQQAhBQNAQYIBIQkgASAPRg0IAn8gASwAACIAQQBOBEAgAEH/AXEhACABQQFqDAELIAEtAAFBP3EhBCAAQR9xIQIgAEFfTQRAIAJBBnQgBHIhACABQQJqDAELIAEtAAJBP3EgBEEGdHIhBCAAQXBJBEAgBCACQQx0ciEAIAFBA2oMAQsgAkESdEGAgPAAcSABLQADQT9xIARBBnRyciIAQYCAxABGDQkgAUEEagshAQJAAkAgBQ0AIABBgAFPBEAgAEGnAU0NASAAEOYERQ0BQYCAxAAhAkEAIQUMAgtBgIDEACECQQAhBSAAQSdrIgRBE01BAEEBIAR0QYGBIHEbDQEgAEHeAGsOAwEAAQALQQEhBSAAIQILIAJBgIDEAEYNAAsgAkGAAU8EQCACQakBTQ0IIAIQ+gRFDQgMBwsgAkHfAHFBwQBrQRpJDQYMBwsgAEH/AXEhACABQQFqIgsgAiABa2ohDAwBCyAAQYABSQ0AQc0FQQAgAEHSPU8bIgEgAUHmAmoiASABQQN0KALYnkIgAEsbIgEgAUGzAWoiASABQQN0KALYnkIgAEsbIgEgAUHaAGoiASABQQN0KALYnkIgAEsbIgEgAUEtaiIBIAFBA3QoAtieQiAASxsiASABQRZqIgEgAUEDdCgC2J5CIABLGyIBIAFBC2oiASABQQN0KALYnkIgAEsbIgEgAUEGaiIBIAFBA3QoAtieQiAASxsiASABQQNqIgEgAUEDdCgC2J5CIABLGyIBIAFBAWoiASABQQN0KALYnkIgAEsbIgEgAUEBaiIBIAFBA3QoAtieQiAASxsiAUEDdCgC2J5CIgIgAEYNAQwCC0EgQQAgAEHBAGtBGkkbIAByIQBBASEFQQEMAgsCQCABIAAgAktqIgBBmQtNBEBB6QAgAEEDdCgC3J5CIgAgAEGAsANzQYCAxABrQYCQvH9JIgEbIQAgAQ0BQQEhBSAAQYABTw0CQQEMAwtBmgtBmgtBqPjCABCMBwALAn9BASAAQYABSSIFDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIgEgAygCDCAGIgJrSwR/IANBDGogAiABEPcFIAMoAhAhBCADKAIUBSACCyAEaiECAkAgBUUEQCAAQT9xQYB/ciEEIABBBnYhBSAAQYAQSQRAIAIgBDoAASACIAVBwAFyOgAADAILIABBDHYhCSAFQT9xQYB/ciEFIABB//8DTQRAIAIgBDoAAiACIAU6AAEgAiAJQeABcjoAAAwCCyACIAQ6AAMgAiAFOgACIAIgCUE/cUGAf3I6AAEgAiAAQRJ2QXByOgAADAELIAIgADoAAAsgAyABIAZqIgE2AhQgAygCDCABIgBrQQFNBH8gA0EMaiAAQQIQ9wUgAygCFAUgAAsgAygCECIEakHMjwI7AAAgAUECagwEC0EAIQVBAiAAQYAQSQ0AGkEDQQQgAEGAgARJGwsiASADKAIMIAYiAmtLBH8gA0EMaiACIAEQ9wUgAygCECEEIAMoAhQFIAILIARqIQICQAJAIAVFBEAgAEE/cUGAf3IhBSAAQQZ2IQkgAEGAEE8NASACIAU6AAEgAiAJQcABcjoAAAwCCyACIAA6AAAMAQsgAEEMdiENIAlBP3FBgH9yIQkgAEH//wNNBEAgAiAFOgACIAIgCToAASACIA1B4AFyOgAADAELIAIgBToAAyACIAk6AAIgAiANQT9xQYB/cjoAASACIABBEnZBcHI6AAALIAEgBmoMAgtBgwEhCQsgAygCDCAGIgFrQQFNBH8gA0EMaiABQQIQ9wUgAygCFAUgAQsgAygCECIEaiIAIAk6AAEgAEHPAToAACAGQQJqCyEGIAwhAiADIAY2AhQgCyIBIA5HDQALIAMoAhAhBCADKAIMIQcLQQYhAQJAAkACQAJAAkAgBkEDaw4EAAQBAgcLIARBkNDHAEEDENsHRQRAQQAhAQwHCyAEQaD3xwBBAxDbBw0CQQEhAQwGC0EGQQIgBEGj98cAQQUQ2wcbIQEMBQtBBkEDIARBqPfHAEEGENsHGyEBDAQLQQQhASAEQdj3xwBBAxDbB0UNAyAEQdv3xwBBAxDbB0UNA0EGQQUgBEG398cAQQMQ2wcbIQEMAwtBBEEGIAQoAABB896dmwdGGyEBDAILQcTuwQAQ/wcLAAsgB0UNACAEQQRrKAIAIgBBeHEiAkEEQQggAEEDcSIAGyAHakkNASAAQQAgAiAHQSdqSxsNAiAEEKICCyADQUBrJAAgAQ8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAIIAcgACAHQeTuwQAQuwkACyAIIAdBACAEQdTuwQAQuwkAC8sYAhN/AX4jAEEwayILJAACQAJAAkACQCAAKAIAIgYoAgAiAEUEQCALQQA2AiggCyABNgIkIAtCADcCHCALIAYpAgQ3AhQgC0EUakEBEMwBIQcMAQsgBigCCCESIAYoAgQhDgJAA0AgEiAUIgZNBEBBACEHDAMLAkACQCAORQ0AIAZBAWoiCCAGIAYgEkkbIRQgDkEBayEHQQAhAiAALQAAIhAhBCAOIQUCQAJAA0ACQAJAIATAQQBIBEAgBEEfcSEPIAAgAmoiCkEBai0AAEE/cSEJIARB/wFxIgNB3wFLDQEgD0EGdCAJciEDDAILIARB/wFxIQMMAQsgCkECai0AAEE/cSAJQQZ0ciEJIANB8AFJBEAgCSAPQQx0ciEDDAELIA9BEnRBgIDwAHEgCkEDai0AAEE/cSAJQQZ0cnIiA0GAgMQARg0ECyAAIAJqIQkgA0Ewa0EKSQRAIAIgB0YNBCAJQQFqLAAAIgRBv39MDQIgAkEBaiECIAVBAWshBQwBCwsgDiAFayICDQFBACEDDAkLIAkgBUEBIAVBqLjFABC7CQALIAAgAmosAABBv39KDQEgACAOQQAgAkG4uMUAELsJAAtBmLjFABDdCQALAkACQAJAIAJBAUYEQEEBIQMgEEEraw4DCQEJAQsgEEErRgRAIAJBAWshAyAAQQFqIQAgAkEKSQ0BDAILIAIiA0EJTw0BC0EAIQIDQCAALQAAQTBrIgdBCUsNByAAQQFqIQAgByACQQpsaiECIANBAWsiAw0ACwwBC0EAIQIgAyEHA0AgB0UNASAALQAAQTBrIgpBCUsNBkECIQMgAq1CCn4iFUIgiKcNByAAQQFqIQAgB0EBayEHIAogFadqIgIgCk8NAAsMBgsCQCACRQ0AIAIgBU8EQCACIAVGDQEMBQsgAiAJaiwAAEG/f0wNBAsgAiAJaiEAAkAgCCASRw0AIAJFIAEoAghBgICABHFFIARB/wFxQegAR3JyDQACQCACQQFHBEAgCSwAAUFASA0BCyAJQQFqIQQDQEEAIQcgACAERg0FAn8gBCwAACIKQQBOBEAgCkH/AXEhAyAEQQFqDAELIAQtAAFBP3EhAyAKQR9xIQggCkFfTQRAIAhBBnQgA3IhAyAEQQJqDAELIAQtAAJBP3EgA0EGdHIhAyAKQXBJBEAgAyAIQQx0ciEDIARBA2oMAQsgCEESdEGAgPAAcSAELQADQT9xIANBBnRyciIDQYCAxABGDQYgBEEEagshBCADQcEAa0FecUEKaiADQTBrIANBOUsbQQ9NDQALDAELIAkgAkEBIAJB4LXFABC7CQALIAYEQCABKAIAQZSzxQBBAiABKAIEKAIMEQAADQILAn8CQCACQQJJDQAgCS8AAEHfyABHDQAgCSwAAUG/f0oEQCAJQQFqIQkgAkEBawwCCyAJIAJBASACQdi4xQAQuwkACyACCyEEIAUgAmshDiABKAIEIQ0gASgCACEMA0ACQCAJIQYCQAJAAkACQCAEIghFDQACQAJAAkACQAJAAkACfwJAAkACQCAGLQAAIgRBJEcEQCAEQS5HDQsgCEEBRg0BIAYsAAEiAkG/f0wNAiACQQBIDQMgAkH/AXEMBAsgCEEBRwRAIAYsAAFBv39MDQgLIAZBAWohBSAIQQFrIQdBACEDA0AgAyAFaiEJAkAgByADayIEQQdNBEAgAyAHRg0OQQAhAgNAIAIgCWotAABBJEYNAiAEIAJBAWoiAkcNAAsMDgsgC0EIakEkIAkgBBCHBSALKAIIQQFxRQ0NIAsoAgwhAgsCQCACIANqIgIgB08NACACIAVqLQAAQSRHDQAgAkEBaiEEAkACQAJAAkAgBS0AACIHwCIDQUBIDQACQCAEIAhPBEAgBCAIRw0CIAJBAmoiBA0BQX4hAiAIIQQgBiEJDAULIAJBAmohBAsCQCAEIAhPBEAgBCAIRg0BDAQLIAQgBmosAABBQEgNAwsgBCAGaiEJIAggBGshBAJAAkACQCACDgMUAQAGCyAFLwAAQdOgAUYEQEG4ucUAIQIMBAsgBS8AAEHCoAFGBEBBsrPFACECDAQLIAUvAABB0owBRgRAQayzxQAhAgwECyAFLwAAQcyoAUYEQEGms8UAIQIMBAsgBS8AAEHHqAFGBEBBq7PFACECDAQLIAUvAABBzKABRgRAQbuzxQAhAgwECyAFLwAAQdKgAUcNAUHejsgAIQIMAwsgB0HDAEcND0G8s8UAIQIMAgtBAiECDAMLIAYgCEEBIARBmLnFABC7CQALQQEhByAMIAJBASANKAIMEQAARQ0TDBYLIAYgCCAEIAhBqLnFABC7CQALIANB9QBHDQ0gBiwAAkG/f0oNCyAFIAJBASACQby5xQAQuwkACyAHIAJBAWoiA08NAAsMCwtBASEHIAxB7LnFAEEBIA0oAgwRAABFDQMMEQsgBiAIQQEgCEHMucUAELsJAAsgBi0AAkE/cSEEIAJBH3EhAyADQQZ0IARyIAJBX00NABogBi0AA0E/cSAEQQZ0ciEEIAQgA0EMdHIgAkFwSQ0AGiADQRJ0QYCA8ABxIAYtAARBP3EgBEEGdHJyCyANKAIMIQRBLkYNAUEBIQcgDEHsucUAQQEgBBEAAA0OIAYsAAFBQEgNAgsgBkEBaiEJIAhBAWshBAwKCyAMQZSzxQBBAiAEEQAADQsCQCAIQQNPBEAgBiwAAkFASA0BCyAGQQJqIQkgCEECayEEDAoLIAYgCEECIAhB3LnFABC7CQALIAYgCEEBIAhB8LnFABC7CQALIAYgCEEBIAhBiLnFABC7CQALIAdB9QBHDQJBASECCyACIAVqIRAgAkEBayEKIAZBAmoiByEFAkADQEEAIQ8gBSAQRg0BAn8gBSwAACIRQQBOBEAgEUH/AXEhAyAFQQFqDAELIAUtAAFBP3EhAyARQR9xIRMgEUFfTQRAIBNBBnQgA3IhAyAFQQJqDAELIAUtAAJBP3EgA0EGdHIhAyARQXBJBEAgAyATQQx0ciEDIAVBA2oMAQsgE0ESdEGAgPAAcSAFLQADQT9xIANBBnRyciIDQYCAxABGDQIgBUEEagshBSADQTprQXVLIANB5wBrQXlLcg0AC0EBIQ8LQQEhAwJAAkACQAJAAkACQCACQQFrDgIFAAELIActAABBK2sOAwQBBAELAkAgBy0AAEErRgRAIAJBAmshAyAGQQNqIQcgAkELTw0BDAILIAohAyACQQpJDQELQQAhBQNAIAVB/////wBLDQMgBy0AACICQcEAa0FfcUEKaiACQTBrIAJBOUsbIgJBEE8NAyAHQQFqIQcgAiAFQQR0ciEFIANBAWsiAw0ACwwBC0EAIQUDQCAHLQAAIgJBwQBrQV9xQQpqIAJBMGsgAkE5SxsiAkEPSw0CIAdBAWohByACIAVBBHRyIQUgA0EBayIDDQALC0EAIQMMAQtBASEDCyAPQYCAxABBgIDEACAFIAVBgLADc0GAgMQAa0GAkLx/SRsgA0EBcRsiA0GAgMQARnINASALIAM2AhQgA0EgSSADQf8Aa0EhSXINASALQRRqIAEQqAVFDQUMBwsgBiAIaiEJQQAhByAGIQIDQCAHIQMgAiAJRg0BAn8gAiwAACIKQQBOBEAgAkEBaiEFIApB/wFxDAELIAItAAFBP3EhBCAKQR9xIQcgCkFfTQRAIAJBAmohBSAHQQZ0IARyDAELIAItAAJBP3EgBEEGdHIhBCAKQXBJBEAgAkEDaiEFIAQgB0EMdHIMAQsgAkEEaiEFIAdBEnRBgIDwAHEgAi0AA0E/cSAEQQZ0cnILIgRBLkcEQCADIAJrIAVqIQcgBSECIARBJEcNAQsLAkACQCADBEAgAyAISQ0BIAMgCEcNAiAMIAYgCCANKAIMEQAADQkMBQsgDCAGQQAgDSgCDBEAAA0IDAQLIAMgBmoiBCwAAEG/f0oNAgsgBiAIQQAgA0HouMUAELsJAAsgDCAGIAggDSgCDBEAAEUNBAwFCyAMIAYgAyANKAIMEQAADQQgBCwAAEFASA0BCyADIAZqIQkgCCADayEEDAELCwsgBiAIIAMgCEH4uMUAELsJAAtBASEHCyALQTBqJAAgBw8LIAkgBSACIAVByLjFABC7CQALQQEhAwsgCyADOgAvQdjmyABBKyALQS9qQYC6xQBBkLrFABDgBgALxhgDH38FfQF+IwBBEGsiEyQAIAAgASACEOkEAkACQCADKAIEIhRFBEAgAygCDCEMDAELAkAgAygCDCIMRQ0AIAMoAhQiHEUNACADKAIcIh1FDQAgAygCJCIZRQ0AIAJFDQIgAkEEdCEgIAAoAoQBISEgACgCiAEhHiAAKAJ4ISIgACgCfCEfIAMoAiAhESADKAIYIRIgAygCECEVIAMoAgghECADKAIAIRogDCEPAkACQAJAA0AgHyANIgRBBGoiDUkEQCAEIA0gH0GIv8EAEOoHAAsCQAJAAkAgDSAeTQRAAkACQCAIIBRPDQAgFCAIayIFQQAgBSAUTRsiBUEBRwRAIAVBAkcNAiAIQQJqIQgMAQsgCEEBaiEICyAIIBRBmL/BABCMBwALIA8EQAJAAkAgCCAcTw0AAkACQCAbIBxqQQFrDgIAAQMLIAhBAWohCAwBCyAIQQJqIQgLIAggHEG4v8EAEIwHAAsCQAJAIAggHU8NAAJAAkAgGyAdakEBaw4CAAEDCyAIQQFqIQgMAQsgCEECaiEICyAIIB1BqL/BABCMBwALIAQgGU8NCAJAIBkgBGsiBUEAIAUgGU0bQQFrDgMFBwgACyAXIBpqIgtBCGooAgAhBiALQQRqKAIAIQUgBCAQaigCACEOIBUgF2oiBCgCACEJIARBCGooAgAhGCAEQQRqKAIAIQogEiAXaiIEKgIAISMgBEEIaioCACEkIARBBGoqAgAhJSARIBZqIgQqAgAhJiAEQQRqKgIAIScgBEEIaikCACEoIBYgImoiByALKAIANgIAIAdBCGogBjYCACAHQQRqIAU2AgAgEyAnOAIEIBMgJjgCACATICg3AgggDkH///8DcSEFIA5BgICAgHhxIQQgDkGAgID8B3EiBkGAgID8B0YEQCAEQRB2IAVBDXZyQYAEQQAgBRtyQYD4AXIhCwwECyAEQRB2IQsgBkGAgIC4BEsNAiAGQYCAgMQDTwRAIA5BDHYgDkH/3wBxQQBHcSAGQQ12IAVBDXZqQYCAAWogC3JqIQsMBAsgBkGAgICYA0kNAyAFQYCAgARyIgVB/gAgBkEXdiIEa3YhDiAFQR0gBGsiBHZBAXEEfyAOQQMgBHRBAWsgBXFBAEdqBSAOCyALciELDAMLIAwgDEH4vsEAEIwHAAsgBCANIB5B6L7BABDqBwALIAtBgPgBciELCyAHQQxqIAtB//8DcTYCACAJQf///wNxIQUgCUGAgICAeHEhBAJAIAlBgICA/AdxIgZBgICA/AdGBEAgBEEQdiAFQQ12ckGABEEAIAUbckGA+AFyIQcMAQsgBEEQdiEHIAZBgICAuARNBEAgBkGAgIDEA08EQCAJQQx2IAlB/98AcUEAR3EgBkENdiAFQQ12akGAgAFqIAdyaiEHDAILIAZBgICAmANJDQEgBUGAgIAEciIFQf4AIAZBF3YiBGt2IQ4gBUEdIARrIgR2QQFxBH8gDkEDIAR0QQFrIAVxQQBHagUgDgsgB3IhBwwBCyAHQYD4AXIhBwsgCkH///8DcSEFIApBgICAgHhxIQQCQCAKQYCAgPwHcSILQYCAgPwHRgRAIARBEHYgBUENdnJBgARBACAFG3JBgPgBciEEDAELIARBEHYhBCALQYCAgLgETQRAIAtBgICAxANPBEAgCkEMdiAKQf/fAHFBAEdxIAtBDXYgBUENdmpBgIABaiAEcmohBAwCCyALQYCAgJgDSQ0BIAVBgICABHIiBkH+ACALQRd2IgVrdiEOIAZBHSAFayIFdkEBcQR/IA5BAyAFdEEBayAGcUEAR2oFIA4LIARyIQQMAQsgBEGA+AFyIQQLIBYgIWoiCyAHQf//A3EgBEEQdHI2AgAgGEH///8DcSEFIBhBgICAgHhxIQQCQCAYQYCAgPwHcSIHQYCAgPwHRgRAIARBEHYgBUENdnJBgARBACAFG3JBgPgBciEJDAELIARBEHYhCSAHQYCAgLgETQRAIAdBgICAxANPBEAgGEEMdiAYQf/fAHFBAEdxIAdBDXYgBUENdmpBgIABaiAJcmohCQwCCyAHQYCAgJgDSQ0BIAVBgICABHIiBkH+ACAHQRd2IgVrdiEEIAZBHSAFayIFdkEBcQR/IARBAyAFdEEBayAGcUEAR2oFIAQLIAlyIQkMAQsgCUGA+AFyIQkLICMQxgW8IgZB////A3EhBSAGQYCAgIB4cSEEAkAgBkGAgID8B3EiB0GAgID8B0YEQCAEQRB2IAVBDXZyQYAEQQAgBRtyQYD4AXIhCgwBCyAEQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAZBDHYgBkH/3wBxQQBHcSAHQQ12IAVBDXZqQYCAAWogCnJqIQoMAgsgB0GAgICYA0kNASAFQYCAgARyIgZB/gAgB0EXdiIFa3YhBCAGQR0gBWsiBXZBAXEEfyAEQQMgBXRBAWsgBnFBAEdqBSAECyAKciEKDAELIApBgPgBciEKCyALQQRqIAlB//8DcSAKQRB0cjYCACAlEMYFvCIGQf///wNxIQUgBkGAgICAeHEhBAJAIAZBgICA/AdxIgdBgICA/AdGBEAgBEEQdiAFQQ12ckGABEEAIAUbckGA+AFyIQoMAQsgBEEQdiEKIAdBgICAuARNBEAgB0GAgIDEA08EQCAGQQx2IAZB/98AcUEAR3EgB0ENdiAFQQ12akGAgAFqIApyaiEKDAILIAdBgICAmANJDQEgBUGAgIAEciIGQf4AIAdBF3YiBWt2IQQgBkEdIAVrIgV2QQFxBH8gBEEDIAV0QQFrIAZxQQBHagUgBAsgCnIhCgwBCyAKQYD4AXIhCgsgJBDGBbwiBkH///8DcSEFIAZBgICAgHhxIQQCQCAGQYCAgPwHcSIHQYCAgPwHRgRAIARBEHYgBUENdnJBgARBACAFG3JBgPgBciEJDAELIARBEHYhCSAHQYCAgLgETQRAIAdBgICAxANPBEAgBkEMdiAGQf/fAHFBAEdxIAdBDXYgBUENdmpBgIABaiAJcmohCQwCCyAHQYCAgJgDSQ0BIAVBgICABHIiBkH+ACAHQRd2IgVrdiEEIAZBHSAFayIFdkEBcQR/IARBAyAFdEEBayAGcUEAR2oFIAQLIAlyIQkMAQsgCUGA+AFyIQkLIAtBCGogCkH//wNxIAlBEHRyNgIAIAtBDGogExDNBDYCACAXQQxqIRcgG0EDayEbIAhBA2ohCCAPQQFrIQ8gICAWQRBqIhZHDQEMBwsLIARBAWohBAwCCyAEQQJqIQQMAQsgBEEDaiEECyAEIBlByL/BABCMBwALIAAgASACIAMoAgAgFBDCBQsgDARAIAMoAgghBSAAIAEgAhDpBCACBEAgAkECdCEEIAAoAnhBDGohFSAAKAJ8IRogDCEIA0ACQAJAAkAgGiARQQNqSwRAIAhFDQIgBSARaigCACIQQf///wNxIQYgEEGAgICAeHEhDyAQQYCAgPwHcSISQYCAgPwHRgRAIA9BEHYgBkENdnJBgARBACAGG3JBgPgBciENDAQLIA9BEHYhDSASQYCAgLgESw0BIBJBgICAxANPBEAgEEEMdiAQQf/fAHFBAEdxIBJBDXYgBkENdmpBgIABaiANcmohDQwECyASQYCAgJgDSQ0DIAZBgICABHIiBkH+ACASQRd2Ig9rdiEQIAZBHSAPayIPdkEBcQR/IBBBAyAPdEEBayAGcUEAR2oFIBALIA1yIQ0MAwsgESARQQRqIBpByLPBABDqBwALIA1BgPgBciENDAELIAwgDEG4s8EAEIwHAAsgFSANQf//A3E2AgAgFUEQaiEVIAhBAWshCCAEIBFBBGoiEUcNAAsLIABBAToAwAELIAMoAhQiDARAIAAgASACIAMoAhAgDBCkAgsgAygCHCIMBEAgACABIAIgAygCGCAMEJ4CCyADKAIkIgxFDQAgACABIAIgAygCICAMEKAFCyAAQQE6AMABIAMoAjwhBCADKAI4IQ0gAygCNCEIIAMoAjAhDyADKAIsIgwEQCAAIAEgAiADKAIoIAwQ5gELIAgEQCAAIAEgAiAPIAgQpwELIAQEQCAAIAEgAiANIAQQlAELIAMoAkQiDARAIAAgASACIAMoAkAgDBC2BAsgAygCTCIMBEAgACABIAIgAygCSCAMELcECyATQRBqJAALuB0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAEEBaw4cAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHAALQQEhAyABKAIAIgRB86XHAEEHIAEoAgQiBigCDCIFEQAADRwgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0eIAAgARCuAkUNAQweCyAEQduBwgBBAiAFEQAADR0gAkEBOgAMIAIgBjYCGCACIAQ2AhQgAkHggcIANgIkIAIgASkCCDcCKCACIAJBDGo2AhwgAiACQRRqNgIgIAAgAkEgahCuAg0dIAIoAiBB2YHCAEECIAIoAiQoAgwRAAANHQsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDBwLQQEhAyABKAIAIgRB58nEAEEUIAEoAgQiBigCDCIFEQAADRsgAEEBaiEAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0dIAAgARDZAkUNAQwdCyAEQduBwgBBAiAFEQAADRwgAkEBOgAMIAIgBjYCGCACIAQ2AhQgAkHggcIANgIkIAIgASkCCDcCKCACIAJBDGo2AhwgAiACQRRqNgIgIAAgAkEgahDZAg0cIAIoAiBB2YHCAEECIAIoAiQoAgwRAAANHAsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDBsLQQEhAyABKAIAIgRB+8nEAEEUIAEoAgQiBigCDCIFEQAADRogAEEBaiEAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0cIAAgARDZAkUNAQwcCyAEQduBwgBBAiAFEQAADRsgAkEBOgAMIAIgBjYCGCACIAQ2AhQgAkHggcIANgIkIAIgASkCCDcCKCACIAJBDGo2AhwgAiACQRRqNgIgIAAgAkEgahDZAg0bIAIoAiBB2YHCAEECIAIoAiQoAgwRAAANGwsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDBoLIAEoAgBBj8rEAEEMIAEoAgQoAgwRAAAhAwwZC0EBIQMgASgCACIEQZvKxABBEiABKAIEIgYoAgwiBREAAA0YIABBAWohAAJAIAEtAApBgAFxRQRAIARBu7PFAEEBIAURAAANGiAAIAEQ2QJFDQEMGgsgBEHbgcIAQQIgBREAAA0ZIAJBAToADCACIAY2AhggAiAENgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQ2QINGSACKAIgQdmBwgBBAiACKAIkKAIMEQAADRkLIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwYCyABKAIAQa3KxABBDiABKAIEKAIMEQAAIQMMFwsgASgCAEG7ysQAQRkgASgCBCgCDBEAACEDDBYLIAEoAgBB1MrEAEEYIAEoAgQoAgwRAAAhAwwVCyABKAIAQezKxABBFiABKAIEKAIMEQAAIQMMFAsgASgCAEGCy8QAQQ0gASgCBCgCDBEAACEDDBMLIAEoAgBBj8vEAEERIAEoAgQoAgwRAAAhAwwSC0EBIQMgAiAAQQFqNgIMIAEoAgAiAEGgy8QAQRggASgCBCIFKAIMIgQRAAANEQJAIAEtAApBgAFxRQRAIABBu7PFAEEBIAQRAAANEyACQQxqIAEQxARFDQEMEwsgAEHbgcIAQQIgBBEAAA0SIAJBAToAEyACIAU2AhggAiAANgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQRNqNgIcIAIgAkEUajYCICACQQxqIAJBIGoQxAQNEiACKAIgQdmBwgBBAiACKAIkKAIMEQAADRILIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwRC0EBIQMgAiAAQQFqNgIMIAEoAgAiAEG4y8QAQRQgASgCBCIFKAIMIgQRAAANEAJAIAEtAApBgAFxRQRAIABBu7PFAEEBIAQRAAANEiACQQxqIAEQxARFDQEMEgsgAEHbgcIAQQIgBBEAAA0RIAJBAToAEyACIAU2AhggAiAANgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQRNqNgIcIAIgAkEUajYCICACQQxqIAJBIGoQxAQNESACKAIgQdmBwgBBAiACKAIkKAIMEQAADRELIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwQC0EBIQMgAiAAQQFqNgIMIAEoAgAiAEHMy8QAQRUgASgCBCIFKAIMIgQRAAANDwJAIAEtAApBgAFxRQRAIABBu7PFAEEBIAQRAAANESACQQxqIAEQxARFDQEMEQsgAEHbgcIAQQIgBBEAAA0QIAJBAToAEyACIAU2AhggAiAANgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQRNqNgIcIAIgAkEUajYCICACQQxqIAJBIGoQxAQNECACKAIgQdmBwgBBAiACKAIkKAIMEQAADRALIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwPCyABKAIAQeHLxABBDCABKAIEKAIMEQAAIQMMDgsgASgCAEHty8QAQQ4gASgCBCgCDBEAACEDDA0LIAEoAgBB+8vEAEEOIAEoAgQoAgwRAAAhAwwMC0EBIQMgASgCACIEQYnMxABBDyABKAIEIgYoAgwiBREAAA0LIABBAWohAAJAIAEtAApBgAFxRQRAIARBu7PFAEEBIAURAAANDSAAIAEQqwNFDQEMDQsgBEHbgcIAQQIgBREAAA0MIAJBAToADCACIAY2AhggAiAENgIUIAJB4IHCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQqwMNDCACKAIgQdmBwgBBAiACKAIkKAIMEQAADQwLIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAMLzgQCB38BfiMAQdAAayIBJAACQCAAEF4iAg0AIAAoApwFIgNBgYCAgHhGIgJFBEACQCADQYCAgIB4RgRAQQAgAEFAayACGyEFIAAoAkgiBkEGdCEEIAAoAkQiB0E8aiEDAkADQCADIQIgBEUNASAEQUBqIQQgAkFAayEDIAItAABBAUcNAAsgAkE8ayIDKAI4IAMoAiAiAkcNAiACIAAoAqwDRw0CCyAGQQZ0IQQgB0E8aiEDA0AgAyEAQQAhAiAERQ0EIARBQGohBCAAQUBrIQMgAC0AAEECRw0ACyAAQTxrIgAoAjggACgCIEYNAyABQQI2AiwgAUGIo8EANgIoIAFCAjcCNCABQoCAgIAQIgggAEE4aq2ENwNIIAEgCCAAQSBqrYQ3A0AgASABQUBrNgIwIAFBHGoiACABQShqELEGIAAQjgchAgwDC0EAIQIgACgCwAQgACgCuARGDQIgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBwARqrYQ3A0ggASAIIABBuARqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAgwCCyABQQI2AiwgAUHkosEANgIoIAFCAjcCNCABQoCAgIAQIgggA0E4aq2ENwNIIAEgCCAFQewCaq2ENwNAIAEgAUFAazYCMCABQRBqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQaijwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUHQAGokACACC88EAgd/AX4jAEHQAGsiASQAAkAgABBfIgINACAAKAK8BSIDQYGAgIB4RiICRQRAAkAgA0GAgICAeEYEQEEAIABB4ABqIAIbIQUgACgCaCIGQQZ0IQQgACgCZCIHQTxqIQMCQANAIAMhAiAERQ0BIARBQGohBCACQUBrIQMgAi0AAEEBRw0ACyACQTxrIgMoAjggAygCICICRw0CIAIgACgCzANHDQILIAZBBnQhBCAHQTxqIQMDQCADIQBBACECIARFDQQgBEFAaiEEIABBQGshAyAALQAAQQJHDQALIABBPGsiACgCOCAAKAIgRg0DIAFBAjYCLCABQYijwQA2AiggAUICNwI0IAFCgICAgBAiCCAAQThqrYQ3A0ggASAIIABBIGqthDcDQCABIAFBQGs2AjAgAUEcaiIAIAFBKGoQsQYgABCOByECDAMLQQAhAiAAKALgBCAAKALYBEYNAiABQQI2AiwgAUHkosEANgIoIAFCAjcCNCABQoCAgIAQIgggAEHgBGqthDcDSCABIAggAEHYBGqthDcDQCABIAFBQGs2AjAgAUEEaiIAIAFBKGoQsQYgABCOByECDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCADQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAgwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByECCyABQdAAaiQAIAILtgQBCn8CQAJAIAFBgApJBEAgAUEFdiEHAkACQCAAKAKgASIEBEAgBEEBayECIARBAnQgAGpBBGshBSAEIAdqQQJ0IABqQQRrIQMgBEEpSSEEA0AgBEUNAiACIAdqIgZBKE8NAyADIAUoAgA2AgAgA0EEayEDIAVBBGshBSACQQFrIgJBf0cNAAsLIAFBH3EhBgJAIAFBIEkNACAHQQJ0IgFFDQAgAEEAIAH8CwALIAAoAqABIgUgB2ohASAGRQRAIAAgATYCoAEgAA8LIAFBAWsiA0EnSw0DIAEhBCAAIANBAnRqKAIAQSAgBmsiCHYiA0UNBCABQSdNBEAgACABQQJ0aiADNgIAIAFBAWohBAwFCyABQShBjIPCABCMBwALIAJBKEGMg8IAEIwHAAsgBkEoQYyDwgAQjAcAC0Gcg8IAQR1BjIPCABDrBwALIANBKEGMg8IAEIwHAAsCQCAHQQFqIgogAU8NAAJAIAVBAWsiCUEESQRAIAEhAwwBCyABIAlBfHEiBWshAyABQQJ0IABqQRRrIQIgBSEBA0AgAkEEaiILIAL9AAIAIAj9rQEgC/0AAgAgBv2rAf1Q/QsCACACQRBrIQIgAUEEayIBDQALIAUgCUYNAQsgA0ECdCAAakEIayECA0AgAkEEaiIBIAEoAgAgBnQgAigCACAIdnI2AgAgAkEEayECIAogA0EBayIDSQ0ACwsgACAHQQJ0aiIBIAEoAgAgBnQ2AgAgACAENgKgASAAC+YEAgZ/AX4jAEEwayIDJAAgACgCDCEEAkACQAJAAkACQAJAIAAoAhQiASAAKAIQIgJJBEADQAJAIAEgBGotAAAiBUEJaw4kAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQGAwsgACABQQFqIgE2AhQgASACRw0ACyACIQELIANBEGogBCACIAFBAWoiACACIAAgAkkbEPkBIAMoAhQhAiADKAIQIQBBFBBxIgFFDQUgASAANgIMIAFBAjYCACABIAI2AhAMBAsgBUHdAEYNAQsgA0EIaiAEIAIgAUEBaiIAIAIgACACSRsQ+QEgAygCDCECIAMoAgghAEEUEHEiAUUNAyABIAA2AgwgAUEWNgIAIAEgAjYCEAwCCyAAIAFBAWo2AhRBACEBDAELIAAgAUEBaiIBNgIUAkAgASACSQRAAn4CQANAIAEgBGotAAAiBkEJayIFQRdLQQEgBXRBk4CABHFFcg0BIAAgAUEBaiIBNgIUIAEgAkcNAAsgAiEBQgAMAQtCgAILIQcgAyAHIAatQhCGhCIHNwMoIAdCgIL0AlINASADQRhqIAQgAiABQQFqIgAgAiAAIAJJGxD5ASADKAIcIQIgAygCGCEAQRQQcSIBRQ0DIAEgADYCDCABQRU2AgAgASACNgIQDAILIANCADcDKAsgA0EgaiAEIAIgAUEBaiIAIAIgACACSRsQ+QEgAygCJCECIAMoAiAhAEEUEHEiAUUNASABIAA2AgwgAUEWNgIAIAEgAjYCECAHQv8Bg1ANACADQShqQQRyELEECyADQTBqJAAgAQ8LAAuVBQIFfwJ+IwBBMGsiAiQAIAEoAgwhBQJAAkACQAJAAkAgASgCFCIDIAEoAhAiBEkEQANAAkAgAyAFai0AACIGQQlrDiUAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQDBAsgASADQQFqIgM2AhQgAyAERw0ACyAEIQMLIAIgBSAEIANBAWoiASAEIAEgBEkbEPkBIAIoAgQhAyACKAIAIQRBFBBxIgFFDQIgASAENgIMIAFBBTYCACAAIAE2AgQgAEEBNgIAIAEgAzYCEAwECyABIANBAWo2AhQgAkEIaiABQQAQxwMgAikDCCIIQgNRDQIgAikDECEHAkACfwJAAkAgCKdBAWsOAgMAAQsgB0IAWQ0CIAJBAjoAGCACIAc3AyAgAkEYaiACQS9qQYjnwAAQ3gYMAQsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBiOfAABDfBgsgARDrBSEBIABBATYCACAAIAE2AgQMBAsgAEEANgIAIAAgBzcDCAwDCyAGQTBrQf8BcUEKTwRAIAEgAkEvakGI58AAEO4BIAEQ6wUhASAAQQE2AgAgACABNgIEDAMLIAJBCGogAUEBEMcDIAIpAwgiCEIDUQRAIAAgAigCEDYCBCAAQQE2AgAMAwsgAikDECEHAkACfwJAAkAgCKdBAWsOAgMAAQsgB0IAWQ0CIAJBAjoAGCACIAc3AyAgAkEYaiACQS9qQYjnwAAQ3gYMAQsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBiOfAABDfBgsgARDrBSEBIABBATYCACAAIAE2AgQMAwsgAEEANgIAIAAgBzcDCAwCCwALIAAgAigCEDYCBCAAQQE2AgALIAJBMGokAAuJBAACQAJAAkACQAJAAkACQAJAIANB/wFxQQFrDgMBAAMGCyAAIAFyDQEMBAsgAEUNAiAFIAEgAmwgAGpBAnRBAWsiAEsNBSAAIAVByPHEABCMBwALIAFFBEAgBSAAQQJ0QQFrIgBLDQUgACAFQdjxxAAQjAcACyABQQFrIAJsIABqQQJ0QQNyIgAgBUkNBCAAIAVB6PHEABCMBwALAkACQAJ/IAAEQCABRQRAIAUgAEECdEEBayIASwRAIAAgBGotAAAMAwsgACAFQYjyxAAQjAcACwJAIAUgASACbCAAakECdEEBayIDSwRAIAFBAWsgAmwgAGpBAnQiAEEDciIBIAVPDQEgBSAAQQFrIgBLBEAgAyAEai0AACEDIAAgBGotAAAhACABIARqLQAAIQEMBgsgACAFQbjyxAAQjAcACyADIAVBmPLEABCMBwALIAEgBUGo8sQAEIwHAAsgAUUEQEEAIQNBACEBQQAhAAwDCyACIAFBAWtsQQJ0QQNyIgAgBU8NASAAIARqLQAACyIDIgEhAAwBCyAAIAVB+PHEABCMBwALQf8BIAFB/wFxIANB/wFxaiAAQf8BcWsiAEEAIABBAEobIgAgAEH/AU4bDwsgAUUNACAFIAIgAUEBa2xBAnRBA3IiAEsNAiAAIAVBuPHEABCMBwALQQAhAwsgAw8LIAAgBGotAAALrgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2AiggA0EUaiIBIANBIGoQ7AMgACABEJAHNgIEQQEMAQsgAEEFOgABQQALOgAAIANBQGskAAuNAgEGfyAAKAIIIgQhAgJ/QQEgAUGAAUkNABpBAiABQYAQSQ0AGkEDQQQgAUGAgARJGwsiBiAAKAIAIARrSwR/IAAgBCAGQQFBARCkBSAAKAIIBSACCyAAKAIEaiECAkAgAUGAAU8EQCABQT9xQYB/ciEFIAFBBnYhAyABQYAQSQRAIAIgBToAASACIANBwAFyOgAADAILIAFBDHYhByADQT9xQYB/ciEDIAFB//8DTQRAIAIgBToAAiACIAM6AAEgAiAHQeABcjoAAAwCCyACIAU6AAMgAiADOgACIAIgB0E/cUGAf3I6AAEgAiABQRJ2QXByOgAADAELIAIgAToAAAsgACAEIAZqNgIIQQALrQIBBn8CQAJAAkACQAJAQQQQcSIBRQ0AIAFBmJXBADYCAEEIEHEiAEUNACAAIAE2AgAgAEG4lcEANgIEQdi2yQBB2LbJACgCACIBIAAgARs2AgAgAUUEQCAADwsgACgCACECIAAoAgQiAygCACIEBEAgAiAEEQMACyADKAIEIgMEQCACQQRrKAIAIgRBeHEiBUEEQQggBEEDcSIEGyADakkNAiAEQQAgBSADQSdqSxsNAyACEKICCyAAQQRrKAIAIgJBeHFBDEEQIAJBA3EiAxtJDQMgA0EAIAJBME8bDQQgABCiAiABDwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALoQIBBn8CQAJAAkACQAJAIAAoAgQiBCAAKAIIIgVrIgggAyACayIGQRBqSQRAIAEoAggiByABKAIEIglLDQUgAiADSyADIAdLcg0BIAQgBUkNAiAGIAhNDQNBACAGIAhBjP/IABDqBwALIAIgA0YNAyAAKAIAIAVqIgQgASgCACIBIAJqIgL9AAAA/QsAACACQRBqIgIgASADaiIBTw0DIARBEGohAwNAIAMgAv0AAAD9CwAAIANBEGohAyACQRBqIgIgAUkNAAsMAwsgAiADIAdBrP/IABDqBwALIAUgBCAEQZz/yAAQ6gcACyAGRQ0AIAAoAgAgBWogASgCACACaiAG/AoAAAsgACAFIAZqNgIIDwtBACAHIAlBgP7IABDqBwALrgICBX8BfiMAQUBqIgIkACABKAIAQYCAgIB4RgRAIAEoAgwgAkEANgIkIAJCgICAgBA3AhwoAgAiAykCECEHIAMoAgwhBCADKAIIIQUgAygCACEGIAMoAgQhAyACIAc3AjggAiAENgI0IAIgBTYCMCACIAM2AiwgAiAGNgIoIAJBHGpBzIXIACACQShqEMEDGiACQRhqIAJBJGooAgAiAzYCACACIAIpAhwiBzcDECABQQhqIAM2AgAgASAHNwIACyABKQIAIQcgAUKAgICAEDcCACACQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCACACIAc3AwBBDBBxIgFFBEAACyABIAIpAwA3AgAgAUEIaiADKAIANgIAIABB3I3IADYCBCAAIAE2AgAgAkFAayQAC4kCAQZ/IAAoAggiBCECAn9BASABQYABSQ0AGkECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIGIAAoAgAgBGtLBH8gACAEIAYQ9wUgACgCCAUgAgsgACgCBGohAgJAIAFBgAFPBEAgAUE/cUGAf3IhBSABQQZ2IQMgAUGAEEkEQCACIAU6AAEgAiADQcABcjoAAAwCCyABQQx2IQcgA0E/cUGAf3IhAyABQf//A00EQCACIAU6AAIgAiADOgABIAIgB0HgAXI6AAAMAgsgAiAFOgADIAIgAzoAAiACIAdBP3FBgH9yOgABIAIgAUESdkFwcjoAAAwBCyACIAE6AAALIAAgBCAGajYCCEEAC4kCAQZ/IAAoAggiBCECAn9BASABQYABSQ0AGkECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIGIAAoAgAgBGtLBH8gACAEIAYQ+AUgACgCCAUgAgsgACgCBGohAgJAIAFBgAFPBEAgAUE/cUGAf3IhBSABQQZ2IQMgAUGAEEkEQCACIAU6AAEgAiADQcABcjoAAAwCCyABQQx2IQcgA0E/cUGAf3IhAyABQf//A00EQCACIAU6AAIgAiADOgABIAIgB0HgAXI6AAAMAgsgAiAFOgADIAIgAzoAAiACIAdBP3FBgH9yOgABIAIgAUESdkFwcjoAAAwBCyACIAE6AAALIAAgBCAGajYCCEEAC4kCAQZ/IAAoAggiBCECAn9BASABQYABSQ0AGkECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIGIAAoAgAgBGtLBH8gACAEIAYQ7wUgACgCCAUgAgsgACgCBGohAgJAIAFBgAFPBEAgAUE/cUGAf3IhBSABQQZ2IQMgAUGAEEkEQCACIAU6AAEgAiADQcABcjoAAAwCCyABQQx2IQcgA0E/cUGAf3IhAyABQf//A00EQCACIAU6AAIgAiADOgABIAIgB0HgAXI6AAAMAgsgAiAFOgADIAIgAzoAAiACIAdBP3FBgH9yOgABIAIgAUESdkFwcjoAAAwBCyACIAE6AAALIAAgBCAGajYCCEEAC/gBAgR/An4gACgCECECIAApAwghBiAAKAIEIQUgACgCGCIEQQBIBEAgAiAFSQRAIAAoAgAgAkECdGooAAAhAwsgA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnKtIAZCIIaEIQYgBEEgaiEEIAJBAWohAgsgAiAFTQRAIAAoAhQhAyAAIAI2AhAgACAGIANBAWsgAUH/AXFsQQh2QQFqIgGtIARBP3GthiIHQgAgBiAHWiICG303AwggACAEIAMgAWsgASACGyIBZyIEQRhrIgNBACADIARNGyIEazYCGCAAIAEgBHQ2AhQgAg8LIAAgARDRBAuUAgEEfyMAQRBrIgIkACACQQA2AgwCfyABQYABTwRAIAFBP3FBgH9yIQMgAUEGdiEEIAFBgBBJBEAgAiADOgANIAIgBEHAAXI6AAxBAgwCCyABQQx2IQUgBEE/cUGAf3IhBCABQf//A00EQCACIAM6AA4gAiAEOgANIAIgBUHgAXI6AAxBAwwCCyACIAM6AA8gAiAEOgAOIAIgBUE/cUGAf3I6AA0gAiABQRJ2QXByOgAMQQQMAQsgAiABOgAMQQELIQEgACAAKAIEIgMgAWs2AgQgACAAKAIAIAEgA0tyIgQ2AgBBASEDIARFBEAgACgCCCIAKAIAIAJBDGogASAAKAIEKAIMEQAAIQMLIAJBEGokACADC4ICAQV/IwBBEGsiAyQAAkAgAC4BACIFIAXBQQ91IgBzIABrIgJB//8DcSIEQegHTwRAQQEhACADIAIgBEGQzgBuIgJBkM4AbGsiBEH//wNxQeQAbiIGQQF0LwC4ukU7AAwgAyAEIAZB5ABsa0H//wNxQQF0LwC4ukU7AA4MAQtBBSEAIARBCkkNACADIAIgAkH//wNxQeQAbiICQeQAbGtB//8DcUEBdC8AuLpFOwAOQQMhAAtBACAFIAJB//8DcSICG0UEQCAAQQFrIgAgA0ELamogAkEBdC0AubpFOgAACyABIAVBAE5BAUEAIANBC2ogAGpBBSAAaxDIAyADQRBqJAALugMBDH8jAEEQayIFJAACQAJAIANBAEgNACADQQF0IgRB/////wdPDQACQCAERQRAQQIhBAwBCyADIQcgBBBxIgRFDQILIAVBADYCDCAFIAQ2AgggBSAHNgIEAkACQCADBEBBACEHA0AgAiAGTQ0CIAZBAWoiCCACTw0DIAEgBmovAAAhDSAFKAIEIAdGBEBBACEJIwBBIGsiBCQAAkACQEEEIAVBBGoiCCgCACIOQQF0IgsgC0EETRsiDEEASA0AIAxBAXQiD0H+////B0sNACAEIA4EfyAEIAs2AhwgBCAIKAIENgIUQQIFQQALNgIYIARBCGpBAiAPIARBFGoQhQcgBCgCCEEBRw0BIAQoAhAhCiAEKAIMIQkLIAkgCkGs58cAEJMJAAsgBCgCDCEJIAggDDYCACAIIAk2AgQgBEEgaiQAIAUoAgghBAsgBCAGaiANOwEAIAUgB0EBaiIHNgIMIAZBAmohBiADIAdHDQALCyAAIAUpAgQ3AgAgAEEIaiAFQQxqKAIANgIAIAVBEGokAA8LIAYgAkGM58cAEIwHAAsgCCACQZznxwAQjAcAC0H85scAEP8HCwALuwIBBX8jAEEgayICJAACQCAAKAIAIgQoAgAEQEEBIQAgASgCACIDQcOYyABBBCABKAIEIgYoAgwiBREAAA0BAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0DIAQoAgAgASAEQQRqKAIAKAIMEQIADQMgASgCACEDIAEoAgQoAgwhBQwBCyADQduBwgBBAiAFEQAADQIgAkEBOgAPIAIgBjYCBCACIAM2AgAgAkHggcIANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAQoAgAgAkEQaiAEQQRqKAIAKAIMEQIADQIgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0CCyADQd6OyABBASAFEQAAIQAMAQsgASgCAEG/mMgAQQQgASgCBCgCDBEAACEACyACQSBqJAAgAAuhAgICfwJ9AkACQCAAvCIBQYCAgAROBEAgAUH////7B0sNAUGBfyECQwAAAAAhACABQYCAgPwDRg0BDAILIABDAAAAAFsEQEMAAIC/IAAgAJSVDwsgAUEATgRAIABDAAAATJS8IQFB6H4hAgwCCyAAIACTQwAAAACVIQALIAAPCyABQY32qwJqIgFB////A3FB84nU+QNqvkMAAIC/kiIAIAAgAEMAAAA/lJQiA5O8QYBgcb4iBEMAsLg/lCAAIASTIAOTIAAgAEMAAABAkpUiACADIAAgAJQiACAAIACUIgBD7umRPpRDqqoqP5KUIAAgAEMmnng+lEMTzsw+kpSSkpSSIgBDALC4P5QgACAEkkPUmji5lJKSIAFBF3YgAmqykguaAgEEfyMAQSBrIgIkAAJAIAACfwJAIAEoAgBBlICAgHhGBEAgASgCDCIERQRADAILIAJBEGogASgCCCIFEKkEQQEhAyACKAIUIgEgAigCEEEBcQ0CGiAEQQFGDQEgAkEIaiAFQRBqEKkEIAIoAgwhAyADIAIoAghBAXENAhogBEECRwRAIAJBAjYCHCAEQf7///8AakH/////AHFBAmogAkEcakHolcEAENsGIQEgAEEBNgIAIAAgATYCBAwECyAAIAM2AgggACABNgIEIABBADYCAAwDCyABIAJBHGpBlOLAABCVCCEBIABBATYCACAAIAE2AgQMAgsgAyACQRxqQZTiwAAQ2wYLNgIEIABBATYCAAsgAkEgaiQAC4sCAQV/IwBBEGsiBiQAIAAgASACEOkEAkAgAgRAIAAoAoQBQQxqIQkgACgCiAEhCEEAIQEDQCABQQNqIAhPDQICQAJAIAEgBE8NACAEIAFrIgVBACAEIAVPGyIFQQFHBEACQAJAIAVBAmsOAgEABAsgAUEDaiEBDAILIAFBAmohAQwBCyABQQFqIQELIAEgBEHYvsEAEIwHAAsgBiADIAdqIgUqAgA4AgAgBiAFQQxqKgIAOAIMIAYgBUEEaikCADcCBCAHIAlqIAYQzQQ2AgAgB0EQaiEHIAFBBGohASACQQFrIgINAAsLIABBAToAwAEgBkEQaiQADwsgASABQQRqIAhByL7BABDqBwALwQICA38BfiMAQRBrIgIkAAJAAkACQAJAQQIgACgCACIAKQMAIgWnQQJrIAVCAVgbQQFrDgIBAgALIAEoAgBBranHAEEOIAEoAgQoAgwRAAAhAQwCCyABKAIAQbupxwBBEiABKAIEKAIMEQAAIQEMAQsgAiAAQSBqNgIEIAEoAgBBjYvIAEELIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQfCpxwBBBiAAQdCpxwAQjAVB9qnHAEEJIAJBBGpB4KnHABCMBSACLQANIgMgAi0ADCIEciEBIARBAXEgA0EBR3INACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQuwBgEKfyMAQRBrIggkAAJAAkACQAJAIAIEQCAAIAEgAhDMAyACQQNsIQxBAiAEIARBAk0bQQNuQQNsIQ0gACgCYCEBIAAoAmQhCkEAIQBBACECA0AgAEEEaiILIApLDQMgCEEEaiEJAn8gASgCBCIAQf//AXFFBEAgAEEQdAwBCyAAQf8HcSEFIABBgIACcSEGIABBgPgBcSIHQYD4AUYEQCAGQRB0IgZBgICA/AdyIAVFDQEaIAYgBUENdHJBgICA/gdyDAELIAZBEHQiBiAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAcNABogBkGAgIDYA3IgBWdBEGsiBkEXdGsgBSAGQf//A3FBCGp0Qf///wNxcgshDgJ/IABBgIB8cSAAQRB2IgBB//8BcUUNABogAEH/B3EhBSAAQYCAAnEhBiAAQYD4AXEiB0GA+AFGBEAgBkEQdCIGQYCAgPwHciAFRQ0BGiAGIABBDXRyQYCAgP4HcgwBCyAGQRB0IgAgB0ENdEGAgID8AHEgBUENdHJBgICAwANqciAHDQAaIABBgICA2ANyIAVnQRBrIgBBF3RrIAUgAEH//wNxQQhqdEH///8DcXILIQcgCQJ/IAEoAggiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhACAFQYCAAnEhBiAFQYD4AXEiBUGA+AFGBEAgBkEQdCIFQYCAgPwHciAARQ0BGiAFIABBDXRyQYCAgP4HcgwBCyAGQRB0IgYgBUENdEGAgID8AHEgAEENdHJBgICAwANqciAFDQAaIAZBgICA2ANyIABnQRBrIgVBF3RrIAAgBUH//wNxQQhqdEH///8DcXILNgIIIAkgBzYCBCAJIA42AgAgAiAETw0EIAMgCCoCBDgCACACQQFqIgAgBE8NBSADQQRqIAgqAgg4AgAgAiANRg0CIANBCGogCCoCDDgCACABQRBqIQEgA0EMaiEDIAshACAMIAJBA2oiAkcNAAsLIAhBEGokAA8LIAJBAmogBEG80cAAEIwHAAsgACALIApBzNHAABDqBwALIAIgBEGc0cAAEIwHAAsgACAEQazRwAAQjAcAC4ACAQd/IwBBIGsiASQAAkAgAC0AwAEEQCAAKAKwASAAKAK4ASICQQJ0IgUgACgCvAEgAmpBAnQiBhDhCCECIAAoAnghByAAKAJ8IQMgAhC4CiEEIAEgAzYCBCABIAQ2AgAgAyAERw0BIAIgByADEOAJIAJBhAhPBEAgAhCbBwsgACgCtAEgBSAGEOEIIQIgACgChAEhBSAAKAKIASEDIAIQuAohBCABIAM2AgQgASAENgIAIAMgBEcNASACIAUgAxDgCSACQYQITwRAIAIQmwcLIABBADoAwAELIAFBIGokAA8LIAFBADYCCEEAIAEgAUEEaiABQQhqQeD5xAAQ9QcAC/oBAgR/AX4jAEEgayIFJAACQAJAIAIgASACaiIGSwRAQQAhAQwBC0EAIQEgAyAEakEBa0EAIANrca0gBiAAKAIAIgdBAXQiAiACIAZJGyICQQhBBCAEQQFGGyIGIAIgBksbIgatfiIJQiCIUEUNACAJpyIIQYCAgIB4IANrSw0AQQAhAiAFIAcEfyAFIAQgB2w2AhwgBSAAKAIENgIUIAMFIAILNgIYIAVBCGogAyAIIAVBFGoQhQcgBSgCCEEBRw0BIAUoAhAhAiAFKAIMIQELIAEgAkGclsgAEJMJAAsgBSgCDCEBIAAgBjYCACAAIAE2AgQgBUEgaiQAC6ECAAJ/AkACQAJAAkAgAkEDaw4EAgMAAQMLAkACQAJAIAEtAABB7QBrDgUBBQUFAAULIAEtAAFB9QBGDQEMBAsgAS0AAUHlAEcNAyABLQACQeEARw0DIAEtAANB7gBHDQMgAS0ABEHzAEcNA0EADAQLIAEtAAJB4QBHDQIgAS0AA0H0AEcNAiABLQAEQfMARw0CQQIMAwsgAS0AAEHzAEcNASABLQABQeMARw0BIAEtAAJB4QBHDQEgAS0AA0HsAEcNASABLQAEQeUARw0BIAEtAAVB8wBHDQFBAQwCCyABLQAAQfMARw0AIAEtAAFB6ABHDQBBA0EEQQUgAS0AAiIBQc4ARhsgAUEwRhsMAQtBBQshASAAQQA6AAAgACABOgABC5oCAQJ/IwBBQGoiASQAAkAgABBBIgINACAALQChVEUEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELAkAgACgC4AFBgICAgHhHBEAgAC0AlAIiAkEJRg0BIAJBBUYEQCAAKAKMAkUNAgsgAUECNgIsIAFBnKTBADYCKCABQgI3AjQgASAAQYwCaq1CgICAgBCENwMgIAEgAEGUAmqtQoCAgICwBIQ3AxggASABQRhqNgIwIAFBDGoiACABQShqELEGIAAQjgchAgwCCyABQQA2AjggAUEBNgIsIAFBwKTBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAQowEhAgsgAUFAayQAIAILmgIBAn8jAEFAaiIBJAACQCAAEEAiAg0AIAAtAKlURQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcCMCABQShqEJIHIQIMAQsCQCAAKALoAUGAgICAeEcEQCAALQCcAiICQQlGDQEgAkEFRgRAIAAoApQCRQ0CCyABQQI2AiwgAUGcpMEANgIoIAFCAjcCNCABIABBlAJqrUKAgICAEIQ3AyAgASAAQZwCaq1CgICAgLAEhDcDGCABIAFBGGo2AjAgAUEMaiIAIAFBKGoQsQYgABCOByECDAILIAFBADYCOCABQQE2AiwgAUHApMEANgIoIAFCBDcCMCABQShqEJIHIQIMAQsgABDUASECCyABQUBrJAAgAgv7AQEDfyMAQRBrIgIkACAAKAIAIQACfyABLQALQRhxRQRAIAEoAgAgACABKAIEKAIQEQIADAELIAJBADYCDCABIAJBDGoCfyAAQYABTwRAIABBP3FBgH9yIQMgAEEGdiEBIABBgBBJBEAgAiADOgANIAIgAUHAAXI6AAxBAgwCCyAAQQx2IQQgAUE/cUGAf3IhASAAQf//A00EQCACIAM6AA4gAiABOgANIAIgBEHgAXI6AAxBAwwCCyACIAM6AA8gAiABOgAOIAIgBEE/cUGAf3I6AA0gAiAAQRJ2QXByOgAMQQQMAQsgAiAAOgAMQQELEJcDCyACQRBqJAAL7QEBA38jAEEQayIDJAAgACgCACEAAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BIAAgARCLBQwCCyAAKAIAIQBBCSECA0AgAiADakEGaiAAQQ9xLQDctkU6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGEtMUAQQIgAiADakEHakEJIAJrEMgDDAELIAAoAgAhAEEJIQIDQCACIANqQQZqIABBD3EtAMmBQjoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQYS0xQBBAiACIANqQQdqQQkgAmsQyAMLIANBEGokAAvrAQIEfwJ+IAAoAhAhAiAAKQMIIQUgACgCBCEEIAAoAhgiA0EASARAIAIgBEkEQCAAKAIAIAJBAnRqKAAAIQELIAFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyrSAFQiCGhCEFIANBIGohAyACQQFqIQILIAIgBE0EQCAAKAIUIQEgACACNgIQIAAgBSABIAFBAXYiAWsiBK0gA0E/ca2GIgZCACAFIAZaIgIbfTcDCCAAIAMgASAEIAIbIgFnIgNBGGsiBEEAIAMgBE8bIgNrNgIYIAAgASADdDYCFCACDwsgABC0Cgu7AgEEfyMAQRBrIgQkACABKAIMIQUCQAJAAkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQQgAkEDNgIADAELIAQgBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgQhASAEKAIAIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgACACNgIEIABBATYCACACIAE2AhAMAQsgASACQQFqNgIUIAAgARC7AwsgBEEQaiQADwsAC7sCAQR/IwBBEGsiBCQAIAEoAgwhBQJAAkACQAJAAkAgASgCFCICIAEoAhAiA0kEQANAAkAgAiAFai0AAEEJaw4yAAADAwADAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwUDCyABIAJBAWoiAjYCFCACIANHDQALIAMhAgsgBEEIaiAFIAMgAkEBaiIBIAMgASADSRsQ+QEgBCgCDCEBIAQoAgghA0EUEHEiAkUNBCACQQM2AgAMAQsgBCAFIAMgAkEBaiIBIAMgASADSRsQ+QEgBCgCBCEBIAQoAgAhA0EUEHEiAkUNAyACQQY2AgALIAIgAzYCDCAAIAI2AgQgAEEBOgAAIAIgATYCEAwBCyABIAJBAWo2AhQgACABEIECCyAEQRBqJAAPCwALvwIBBH8jAEEQayIEJAAgASgCDCEFAkACQAJAAkACQCABKAIUIgIgASgCECIDSQRAA0ACQCACIAVqLQAAQQlrDjIAAAMDAAMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBQMLIAEgAkEBaiICNgIUIAIgA0cNAAsgAyECCyAEQQhqIAUgAyACQQFqIgEgAyABIANJGxD5ASAEKAIMIQEgBCgCCCEDQRQQcSICRQ0EIAJBAzYCAAwBCyAEIAUgAyACQQFqIgEgAyABIANJGxD5ASAEKAIEIQEgBCgCACEDQRQQcSICRQ0DIAJBBjYCAAsgAiADNgIMIAAgAjYCBCAAQYGAgIB4NgIAIAIgATYCEAwBCyABIAJBAWo2AhQgACABENwCCyAEQRBqJAAPCwALuwIBBH8jAEEQayIEJAAgASgCDCEFAkACQAJAAkACQCABKAIUIgIgASgCECIDSQRAA0ACQCACIAVqLQAAQQlrDjIAAAMDAAMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBQMLIAEgAkEBaiICNgIUIAIgA0cNAAsgAyECCyAEQQhqIAUgAyACQQFqIgEgAyABIANJGxD5ASAEKAIMIQEgBCgCCCEDQRQQcSICRQ0EIAJBAzYCAAwBCyAEIAUgAyACQQFqIgEgAyABIANJGxD5ASAEKAIEIQEgBCgCACEDQRQQcSICRQ0DIAJBBjYCAAsgAiADNgIMIAAgAjYCBCAAQQI2AgAgAiABNgIQDAELIAEgAkEBajYCFCAAIAEQpQILIARBEGokAA8LAAu7AgEEfyMAQRBrIgQkACABKAIMIQUCQAJAAkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQQgAkEDNgIADAELIAQgBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgQhASAEKAIAIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgACACNgIEIABBAzYCACACIAE2AhAMAQsgASACQQFqNgIUIAAgARCDAQsgBEEQaiQADwsAC7sCAQR/IwBBEGsiBCQAIAEoAgwhBQJAAkACQAJAAkAgASgCFCICIAEoAhAiA0kEQANAAkAgAiAFai0AAEEJaw4yAAADAwADAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwUDCyABIAJBAWoiAjYCFCACIANHDQALIAMhAgsgBEEIaiAFIAMgAkEBaiIBIAMgASADSRsQ+QEgBCgCDCEBIAQoAgghA0EUEHEiAkUNBCACQQM2AgAMAQsgBCAFIAMgAkEBaiIBIAMgASADSRsQ+QEgBCgCBCEBIAQoAgAhA0EUEHEiAkUNAyACQQY2AgALIAIgAzYCDCAAIAI2AgQgAEECNgIAIAIgATYCEAwBCyABIAJBAWo2AhQgACABENICCyAEQRBqJAAPCwALqQIBBX8jAEEgayICJABBASEDAkAgACgCACIELQAAQQFGBEAgASgCACIAQcOYyABBBCABKAIEIgYoAgwiBREAAA0BIARBAWohBAJAIAEtAApBgAFxRQRAIABBu7PFAEEBIAURAAANAyAEIAEQygQNAyABKAIAIQAgASgCBCgCDCEFDAELIABB24HCAEECIAURAAANAiACQQE6AA8gAiAGNgIEIAIgADYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEMoEDQIgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0CCyAAQd6OyABBASAFEQAAIQMMAQsgASgCAEG/mMgAQQQgASgCBCgCDBEAACEDCyACQSBqJAAgAwutAgEDfyMAQRBrIgIkACABKAIIIQMgAUEANgIIAkACQCADBEAgAygCAEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQgbm90IGZpbmQgRU9DREVPQ0QgY29tbWVudCBleGNlZWRzIGZpbGUgYm91bmRhcnkAAABTIhAAWQAAABACAAAkAAAARU9DRDY0IGV4dGVuc2libGUgZGF0YSBzZWN0b3IgZXhjZWVkcyBmaWxlIGJvdW5kYXJ5RU9DRDY0IGV4dGVuZHMgYmV5b25kIEVPQ0Q2NCBsb2NhdG9yTG93IEVPQ0Q2NCByZWNvcmQgc2l6ZQAAALQAAAAMAAAABAAAALUAAAC2AAAAtwBBvJPBAAu5LAEAAAC4AAAAiggQAFgAAACtCAAAGwAAAIoIEABYAAAAqwgAABoAAADavuWfRqP1Qda9IYIEin9+bSFxc5z+Wz98T9PqHwhx/v/RdU8UjvBwCSevxkboy2vj/HVWg7aPELisF+ETauo3Bro1G72r6e53M2YWY4Y3fVerifDxfVD/AOsyEUOUJRdr73nJEJIZqhTGMt1wo/d9s9Z0rBITht2/xAQ7FZjtPv983P/+/w1gGQswk0k0V9UqAxAAXwAAAEoAAAAfAAAAKgMQAF8AAABEAAAAFwAAAAAAAADTCKOFiGo/JERzcAMuihkT0DGfKSI4CaSJbE7smPouCAAAAAAEAAAABAAAALkAAAD4HBAAYAAAAK4CAAATAAAAExsQAEoAAABfAwAACQAAAAAAAAAEAAAABAAAALoAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAD4ShAAvQAAAL4AAACyAAAAvwAAALMAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwQAAAAAAAAAEAAAABAAAAMIAAABYWVoAAAAAAAQAAAAEAAAAwwAAAENlbnRlcnNBbHBoYXNTY2FsZXNRdWF0c1NoRXh0ZW5zaW9uQ2hpbGRDb3VudHNDaGlsZFN0YXJ0cwAAAAAAAAAIAAAABAAAAMQAAAAAAAAACAAAAAQAAADFAAAAxAAAALRLEACwAAAAxgAAALIAAACwAAAAswAAAAAAAAAIAAAABAAAAMcAAAAAAAAACAAAAAQAAABwAAAAxwAAAPBLEACwAAAAyAAAALIAAACwAAAAswAAAMkAAAAMAAAABAAAAMoAAADJAAAADAAAAAQAAADLAAAAygAAACxMEADMAAAAzQAAALIAAADOAAAAswAAAK0AAAAMAAAABAAAAM8AAACtAAAADAAAAAQAAADQAAAAzwAAAGhMEACwAAAA0QAAALIAAACwAAAAswAAANIAAAAMAAAABAAAANMAAADSAAAADAAAAAQAAADUAAAA0wAAAKRMEADVAAAA1gAAALIAAADXAAAAswAAANgAAAAEAAAABAAAANkAAADYAAAABAAAAAQAAADaAAAA2QAAAOBMEADbAAAA3AAAALIAAADdAAAAswAAAN4AAAAMAAAABAAAANMAAADeAAAADAAAAAQAAADfAAAA0wAAABxNEADgAAAA4QAAALIAAADgAAAAswAAAOIAAAAoAAAABAAAAOMAAADiAAAAKAAAAAQAAADkAAAA4wAAAFhNEADlAAAA5gAAAOcAAADoAAAA6QAAAOoAAAAgAAAABAAAAOMAAADqAAAAIAAAAAQAAADkAAAA4wAAAJRNEADlAAAA6wAAAOcAAADoAAAA6QAAAOwAAAAoAAAABAAAAOMAAADsAAAAKAAAAAQAAADkAAAA4wAAANBNEADlAAAA7QAAAOcAAADoAAAA6QAAAO4AAAAkAAAABAAAAOQAAADjAAAAdE4QAOUAAADvAAAA5wAAAOgAAADpAAAA8AAAACQAAAAEAAAA4wAAAPAAAAAkAAAABAAAAOQAAADjAAAAOE4QAOUAAADxAAAA5wAAAOgAAADpAAAA7gAAACQAAAAEAAAA4wAAAO4AAAAkAAAABAAAAOQAAADjAAAAdE4QAOUAAADyAAAA5wAAAOgAAADpAAAA8wAAACgAAAAEAAAA4wAAAPMAAAAoAAAABAAAAOQAAADjAAAAsE4QAOUAAAD0AAAA5wAAAOgAAADpAAAA9QAAACgAAAAEAAAA4wAAAPUAAAAoAAAABAAAAOQAAADjAAAA7E4QAOUAAAD2AAAA5wAAAOgAAADpAAAA9wAAAPgAAAD5AAAA+gAAAPsAAAD8AAAA/QAAAP4AAAD/AAAAAAEAAAEBAAACAQAA/AAAAP0AAAADAQAABAEAAAUBAAAGAQAABwEAAAgBAAD9AAAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAA/QAAAA8BAAAQAQAAEQEAABIBAAATAQAADgEAAP0AAAD3AAAAFAEAABUBAAAWAQAAFwEAAPwAAAD9AAAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAA/QAAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAAAAAAABAAAAAQAAAAlAQAAJgEAAAQAAAAEAAAAJwEAANgAAAAEAAAABAAAANoAAAAAAAAABAAAAAQAAAAoAQAAKQEAACoBAABGMzJGMTZGMzJMZUJ5dGVzRjE2TGVCeXRlc1I4UjhEZWx0YVM4UzhEZWx0YUxuMFI4TG5GMTZPY3Q4OFI4VTE2VTMyAIwFEAA9AAAASQEAADIAAACMBRAAPQAAAEwBAAA7AAAAjAUQAD0AAABUAQAAMQAAAIwFEAA9AAAAWAEAADEAAACMBRAAPQAAAFABAAAxAAAATgUQAD0AAADzAQAAMQAAAE4FEAA9AAAA6AEAADIAAABOBRAAPQAAAO8BAAAxAAAATgUQAD0AAAD3AQAAMQAAAE4FEAA9AAAA6wEAADsAAAD6GRAAYwAAAPMBAAAVAAAA+hkQAGMAAADjAQAAFQAAACBzcGxhdHMsIGdvdCAAAABQOBAACQAAAFRREAANAAAAIFNIIHJlY29yZHMsIGdvdCAAAABQOBAACQAAAHRREAARAAAASW52YWxpZCBQTFkgZmlsZZhREAAQAAAASW5jb21wbGV0ZSBSQUQgY2h1bmuwURAAFAAAAFRydW5jYXRlZCBnemlwIHN0cmVhbQAAAMxREAAVAAAASW5jb21wbGV0ZSBTUFogc3RyZWFtOiBzdGFnZSA9ICwgc2hfZGVncmVlID0gAAAA7FEQAB8AAAALUhAADgAAAEludmFsaWQgU1BaIHN0cmVhbQAALFIQABIAAAAAAAAACAAAAAQAAAArAQAAiiQQAF4AAAD4BQAAHAAAAIokEABeAAAA+wUAABYAAABOb3QgYSBaSVAvU09HUyBmaWxlAHhSEAATAAAAU09HUyBmaWxlIHRvbyBzbWFsbACUUhAAEwAAAMoFEAAhAAAAnQMAAA0AAADKBRAAIQAAAJ8DAAANAAAAygUQACEAAACcAwAAQAAAAMoFEAAhAAAAqAMAAA0AAADKBRAAIQAAAKgDAAA9AAAAygUQACEAAAAwBAAAIwAAAMoFEAAhAAAAMAQAAA0AAADKBRAAIQAAAC4EAAAnAAAAygUQACEAAAA+BAAAIwAAAMoFEAAhAAAAPgQAAA0AAADKBRAAIQAAADwEAAAnAAAAygUQACEAAACyAwAADQAAAMoFEAAhAAAAsQMAADoAAADKBRAAIQAAAN4DAAA3AAAAygUQACEAAADfAwAAEQAAAMoFEAAhAAAA2QMAACcAAADKBRAAIQAAAPMDAAAoAAAAygUQACEAAAD3AwAAMwAAAMoFEAAhAAAA+AMAAA0AAADKBRAAIQAAAP0DAAA3AAAAygUQACEAAAD+AwAAEQAAAMoFEAAhAAAA/wMAABEAAADKBRAAIQAAAAAEAAARAAAAygUQACEAAADyAwAAKAAAAMoFEAAhAAAAEgQAACgAAADKBRAAIQAAAB4EAAA3AAAAygUQACEAAAAfBAAAEQAAAMoFEAAhAAAAIAQAABEAAADKBRAAIQAAACEEAAARAAAAygUQACEAAAAXBAAANwAAAMoFEAAhAAAAGAQAABEAAADKBRAAIQAAABEEAAAoAAAAygUQACEAAADKAwAADQAAAMoFEAAhAAAAyQMAADwAAADKBRAAIQAAAL4DAAANAAAAygUQACEAAAC9AwAAPgAAAKwOEAA+AAAABQIAACEAAABVbmtub3duIGZpbGUgdHlwZQAAAABVEAARAAAArA4QAD4AAAANAgAAHQAAAAwAAAAMAAAAEAAAAAQAAAAEAAAADAAAABgAAAAoAAAALAAAAAEAAAAGAAAABgAAAAgAAAAEAAAAAgAAAAYAAAAMAAAAFAAAABgAAAD/fwAABgAAAAYAAAAIAAAABAAAAAEAAAAGAAAADAAAABQAAAAYAAAA/38AAAAAAAAJAAAAGAAAAC0AAABTZWN0aW9uIGRhdGEgc2l6ZSBvdmVyZmxvdwAAtFUQABoAAADPBBAAPQAAAOAAAAAoAAAAzwQQAD0AAADiAAAAJgAAAM8EEAA9AAAA5AAAACkAAADPBBAAPQAAAOUAAAA5AAAAzwQQAD0AAADmAAAAOQAAAM8EEAA9AAAA5wAAADkAAADPBBAAPQAAAGkBAABZAAAAzwQQAD0AAABpAQAANgAAAM8EEAA9AAAAaAEAAFkAAADPBBAAPQAAAGgBAAA2AAAAzwQQAD0AAABnAQAAWAAAAM8EEAA9AAAAZwEAADYAAADPBBAAPQAAAGYBAABGAAAAzwQQAD0AAABmAQAAJAAAAM8EEAA9AAAAYwEAAEgAAADPBBAAPQAAAGMBAAAqAAAAzwQQAD0AAABiAQAASgAAAM8EEAA9AAAAYgEAACgAAADPBBAAPQAAAPYAAAAVAAAAzwQQAD0AAAALAQAAFwAAAM8EEAA9AAAAEQEAABcAAADPBBAAPQAAABcBAAAXAAAAzwQQAD0AAAAqAQAAFQAAAM8EEAA9AAAAKwEAABUAAADPBBAAPQAAACwBAAAVAAAAzwQQAD0AAAAtAQAAFQAAAM8EEAA9AAAAMQEAAB8AAADPBBAAPQAAADIBAAAfAAAAzwQQAD0AAAAzAQAAHwAAAM8EEAA9AAAANAEAAB4AAADPBBAAPQAAADQBAAAYAAAAGAAAAB8AAAAmAAAAGQAAACAAAAAnAAAAGgAAACEAAAAoAAAAGwAAACIAAAApAAAAHAAAACMAAAAqAAAAHQAAACQAAAArAAAAHgAAACUAAAAsAAAAzwQQAD0AAABTAQAAIAAAAM8EEAA9AAAATQEAACAAAADPBBAAPQAAAEgBAAAcAAAAzwQQAD0AAADdAAAAJAAAAEJ1Y2tldCBhcnJheSBvdXQgb2YgYm91bmRzAABcWBAAGgAAAFRydW5jYXRlZCBrc3BsYXQgZmlsZQAAAIBYEAAVAAAAVW5leHBlY3RlZCBlbmQgb2YgZmlsZSB3aGlsZSByZWFkaW5nIHNlY3Rpb24gaGVhZGVyc6BYEAA0AAAAU2VjdGlvbiBzaXplIG92ZXJmbG93AAAA3FgQABUAAABJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIAAA/FgQABoAAABVbnN1cHBvcnRlZCAua3NwbGF0IHZlcnNpb246IAAAACBZEAAdAAAA7FwRAAEAAABGaWxlIHRvbyBzbWFsbCBmb3Iga3NwbGF0IGhlYWRlclBZEAAgAAAAU0ggYnl0ZSBvdXQgb2YgYm91bmRzAAAAeFkQABUAAADKBRAAIQAAAPgBAAA3AAAAygUQACEAAAD4AQAAWAAAAMoFEAAhAAAAAQIAAEYAAADKBRAAIQAAAAECAAA4AAAAygUQACEAAACUAgAANgAAAMoFEAAhAAAAlAIAACMAAADKBRAAIQAAAIgCAAA2AAAAygUQACEAAACIAgAARQAAAMoFEAAhAAAAiAIAAFgAAADKBRAAIQAAAIgCAAAVAAAAygUQACEAAACDAgAALAAAAMoFEAAhAAAAvgIAADYAAADKBRAAIQAAAL4CAAAjAAAAygUQACEAAADAAgAAJwAAAMoFEAAhAAAArwIAADgAAADKBRAAIQAAAK8CAABHAAAAygUQACEAAACvAgAAWgAAAMoFEAAhAAAArwIAABUAAADKBRAAIQAAALICAABCAAAAygUQACEAAACyAgAAUQAAAMoFEAAhAAAAsgIAAGQAAADKBRAAIQAAAKoCAAAyAAAAygUQACEAAACpAgAAMgAAAMoFEAAhAAAA9AIAAD8AAADKBRAAIQAAAPQCAAAmAAAAygUQACEAAADxAgAAOQAAAMoFEAAhAAAA8QIAACYAAADKBRAAIQAAAOMCAAA+AAAAygUQACEAAADjAgAATQAAAMoFEAAhAAAA4wIAAGAAAADKBRAAIQAAAOMCAAAVAAAAygUQACEAAADfAgAAOAAAAMoFEAAhAAAA3wIAAEcAAADKBRAAIQAAAN8CAABaAAAAygUQACEAAADfAgAAFQAAAMoFEAAhAAAA2gIAAC4AAADKBRAAIQAAANkCAAAuAAAAygUQACEAAAAnAwAAKQAAAMoFEAAhAAAALgMAAEsAAADKBRAAIQAAAC4DAAAhAAAAygUQACEAAAArAwAARQAAAMoFEAAhAAAAKwMAACEAAADKBRAAIQAAABQDAAAhAAAAygUQACEAAAAXAwAANgAAAMoFEAAhAAAAFwMAABUAAADKBRAAIQAAABkDAABAAAAAygUQACEAAAASAwAAMgAAAMoFEAAhAAAABAMAAB0AAADKBRAAIQAAAAgDAAA2AAAAygUQACEAAAAIAwAAFQAAAMoFEAAhAAAAAgMAAC4AAADKBRAAIQAAADsDAAAmAAAAygUQACEAAAA/AwAAIAAAAMoFEAAhAAAAPwMAABMAAADKBRAAIQAAAEUDAAAmAAAAygUQACEAAABJAwAAIAAAAMoFEAAhAAAASQMAABMAAADKBRAAIQAAAJ8BAAA2AAAAygUQACEAAACgAQAANgAAAMoFEAAhAAAArwEAADMAAADKBRAAIQAAALABAAAzAAAAygUQACEAAACsAQAAQwAAAMoFEAAhAAAApgEAAC0AAADKBRAAIQAAAKUBAAAtAAAAygUQACEAAAAKAgAANAAAAMoFEAAhAAAACgIAAFUAAADKBRAAIQAAAD8CAAA2AAAAygUQACEAAAA/AgAAPwAAAMoFEAAhAAAAPwIAAEwAAADKBRAAIQAAAD8CAAAVAAAAygUQACEAAAA6AgAALAAAAMoFEAAhAAAATAIAADIAAADKBRAAIQAAAFECAAA4AAAAygUQACEAAABRAgAAQQAAAMoFEAAhAAAAUQIAAE4AAADKBRAAIQAAAFECAAAVAAAAygUQACEAAABUAgAAQgAAAMoFEAAhAAAAVAIAAEsAAADKBRAAIQAAAFQCAABYAAAAygUQACEAAABUAgAAGQAAAMoFEAAhAAAASwIAADIAAADKBRAAIQAAAGMCAAAyAAAAygUQACEAAABsAgAAQgAAAMoFEAAhAAAAbAIAAEsAAADKBRAAIQAAAGwCAABYAAAAygUQACEAAABsAgAAGQAAAMoFEAAhAAAAaAIAADwAAADKBRAAIQAAAGgCAABFAAAAygUQACEAAABoAgAAUgAAAMoFEAAhAAAAaAIAABkAAADKBRAAIQAAAGICAAAyAAAAygUQACEAAAAlAgAANQAAAMoFEAAhAAAAJQIAAFYAAADKBRAAIQAAAM8BAAAnAAAAygUQACEAAADRAQAAFQAAAMoFEAAhAAAAzgEAACcAAADKBRAAIQAAANABAAAoAAAAygUQACEAAADTAQAAKAAAAMoFEAAhAAAA0gEAACgAAADKBRAAIQAAANQBAAAoAAAAygUQACEAAAAcAgAANgAAAMoFEAAhAAAAHAIAAFcAQYDAwQALBgEAAAAsAQBBkMDBAAsGAQAAAC0BAEGgwMEACwYBAAAALQEAQbDAwQALBgEAAAAtAQBBwMDBAAsGAQAAAC0BAEHQwMEACwYBAAAALgEAQeDAwQALBgEAAAAvAQBB8MDBAAsGAQAAADABAEGAwcEACwYBAAAAMQEAQZDBwQALBgEAAAAyAQBBoMHBAAutBwEAAAAzAQAAehkQAEEAAACaAQAADQAAAHoZEABBAAAAnQEAAA0AAAB6GRAAQQAAALMBAAAZAAAAb3V0cHV0IGJhdGNoIGNodW5rLCBjaHVua19yZWwgPSDYYBAAIAAAAG9jdGFudCBsZW5ndGhzOiAAYRAAEAAAAFz8EQABAAAAehkQAEEAAADjAQAAGQAAAHoZEABBAAAA2gEAACEAAABzcGxpdCBheGlzPSwgZXh0ZW50PSwgc3BsaXQ9LCBhLmxlbj0sIGIubGVuPUBhEAALAAAAS2EQAAkAAABUYRAACAAAAFxhEAAIAAAAZGEQAAgAAABc/BEAAQAAAHoZEABBAAAAzQEAAB0AAAB6GRAAQQAAAOgBAAAFAAAAehkQAEEAAADhAQAATgAAANcAEAA6AAAAPQAAADYAAABQTFkgaGVhZGVyIHRvbyBsYXJnZdxhEAAUAAAAZW5kX2hlYWRlcgoA1wAQADoAAABjAAAAHQAAANcAEAA6AAAAnQAAACQAAADXABAAOgAAAJwAAAAkAAAA1wAQADoAAACbAAAAJAAAANcAEAA6AAAAmgAAACYAAADXABAAOgAAAJkAAAAoAAAA1wAQADoAAACYAAAAJAAAANcAEAA6AAAAlwAAACwAAADXABAAOgAAAJYAAAAqAAAA1wAQADoAAAB0AAAAIgAAANcAEAA6AAAAhAAAACYAAADXABAAOgAAAIoAAAAmAAAA1wAQADoAAACQAAAAJgAAANcAEAA6AAAAfgAAACMAAADXABAAOgAAAHkAAAAkAAAA1wAQADoAAAB2AAAAIgAAANcAEAA6AAAAcQAAACUAAADXABAAOgAAALkAAAAdAAAA1wAQADoAAADOAAAALgAAANcAEAA6AAAAzQAAADAAAADXABAAOgAAAMwAAAAsAAAA1wAQADoAAADLAAAANAAAANcAEAA6AAAAygAAADIAAADXABAAOgAAANoAAABJAAAA1wAQADoAAADZAAAASQAAANcAEAA6AAAA2AAAACsAAADXABAAOgAAAOQAAAAvAAAAMCEQADoAAADvBQAAKwAAAEludmFsaWQgY2h1bmsgY291bnQ6IGV4cGVjdGVkICwgZ290IMRjEAAeAAAA4mMQAAYAAABVbnN1cHBvcnRlZCBSQUQgdmVyc2lvbjogAAAA+GMQABkAAAAwIRAAOgAAANcFAABAAAAASW52YWxpZCBSQUQgbWFnaWM6IDB4AAAALGQQABUAAAACAEHWyMEACwEIAEHgyMEAC8ElIAAA6VVuc3VwcG9ydGVkIFJBRCBjaHVuayB2ZXJzaW9uOiAAZGQQAB8AAAAwIRAAOgAAAEQGAAAvAAAARmFpbGVkIHRvIGRlY29tcHJlc3MgZ3ogZGF0YZxkEAAcAAAAVW5zdXBwb3J0ZWQgY2VudGVyIGVuY29kaW5nOiAAAADAZBAAHQAAAFByb3BlcnR5IG1pc3NpbmcgbWF46GQQABQAAABQcm9wZXJ0eSBtaXNzaW5nIG1pbgRlEAAUAAAAVW5zdXBwb3J0ZWQgYWxwaGEgZW5jb2Rpbmc6ICBlEAAcAAAAVW5zdXBwb3J0ZWQgcmdiIGVuY29kaW5nOiAAAERlEAAaAAAAVW5zdXBwb3J0ZWQgc2NhbGVzIGVuY29kaW5nOiAAAABoZRAAHQAAADAhEAA6AAAAqAYAAC8AAABVbnN1cHBvcnRlZCBvcmllbnRhdGlvbiBlbmNvZGluZzogAACgZRAAIgAAAFVuc3VwcG9ydGVkIGNoaWxkIGNvdW50IGVuY29kaW5nOiAAAMxlEAAiAAAAVW5zdXBwb3J0ZWQgY2hpbGQgc3RhcnQgZW5jb2Rpbmc6IAAA+GUQACIAAAAwIRAAOgAAAN0GAAAeAAAAVW5zdXBwb3J0ZWQgc2ggZW5jb2Rpbmc6IAAAADRmEAAZAAAAVW5zdXBwb3J0ZWQgc2ggbGFiZWwgZW5jb2Rpbmc6IABYZhAAHwAAADAhEAA6AAAAUwYAACQAAABQcm9wZXJ0eSBvZmZzZXQgbWlzbWF0Y2g6IGV4cGVjdGVkIACQZhAAIwAAAOJjEAAGAAAAMCEQADoAAACqBgAASAAAADAhEAA6AAAAOAYAADsAAAAwIRAAOgAAADcGAABFAAAASW52YWxpZCBSQUQgY2h1bmsgbWFnaWM6IDB4APRmEAAbAAAAVW5zdXBwb3J0ZWQgU1BaIHZlcnNpb246IAAAABhnEAAZAAAASW52YWxpZCBTUFogbWFnaWM6IDB4AAAAPGcQABUAAAB+ABAAOgAAAHkAAAApAAAAfgAQADoAAAB6AAAAKQAAAH4AEAA6AAAAewAAACkAAAB+ABAAOgAAAHsAAABPAAAAfgAQADoAAAB6AAAATwAAAH4AEAA6AAAAeQAAAE8AAAB+ABAAOgAAAIEAAAApAAAAfgAQADoAAACCAAAAKQAAAH4AEAA6AAAAgwAAACkAAAB+ABAAOgAAAIMAAABPAAAAfgAQADoAAACCAAAATwAAAH4AEAA6AAAAgQAAAE8AAAB+ABAAOgAAAJ4AAAA2AAAAfgAQADoAAACeAAAAJQAAAH4AEAA6AAAAuQAAADsAAAB+ABAAOgAAALkAAAAlAAAAfgAQADoAAAC6AAAAOwAAAH4AEAA6AAAAugAAACUAAAB+ABAAOgAAALsAAAA7AAAAfgAQADoAAAC7AAAAJQAAAH4AEAA6AAAA1QAAADwAAAB+ABAAOgAAANUAAAAlAAAAfgAQADoAAADWAAAAPAAAAH4AEAA6AAAA1gAAACUAAAB+ABAAOgAAANcAAAA8AAAAfgAQADoAAADXAAAAJQAAAH4AEAA6AAAA8wAAADQAAAB+ABAAOgAAAPQAAAAwAAAAfgAQADoAAAD1AAAAMAAAAH4AEAA6AAAA9gAAADAAAAB+ABAAOgAAAA4BAAApAAAAfgAQADoAAAAPAQAAKQAAAH4AEAA6AAAAEAEAACkAAAB+ABAAOgAAABEBAAApAAAAfgAQADoAAAAXAQAAMQAAAH4AEAA6AAAAGAEAADEAAAB+ABAAOgAAABkBAAAxAAAAfgAQADoAAAAcAQAAKQAAAH4AEAA6AAAAHQEAACkAAAB+ABAAOgAAAB4BAAApAAAAfgAQADoAAAAfAQAAKQAAAH4AEAA6AAAAMgEAACsAAAB+ABAAOgAAAFoBAABEAAAAfgAQADoAAABZAQAARAAAAH4AEAA6AAAAWAEAACoAAAB+ABAAOgAAAE8BAABlAAAAfgAQADoAAABPAQAANQAAAH4AEAA6AAAASAEAAGQAAAB+ABAAOgAAAEgBAAA1AAAAfgAQADoAAABCAQAAUwAAAH4AEAA6AAAAQgEAADEAAAB+ABAAOgAAAHsBAAApAAAAfgAQADoAAAB7AQAARwAAAH4AEAA6AAAAlQEAACsAAAB+ABAAOgAAAJUBAABJAAAAfgAQADoAAAC6AQAAJwAAAH4AEAA6AAAAyAEAAEEAAAB+ABAAOgAAAMEBAAAhAAAAbWV0YS5qc29ubWV0YS5qc29uIG5vdCBmb3VuZCBpbiBTT0dTIHppcAVrEAAfAAAAAQAAAAAAAABMUhEAAQAAAEZhaWxlZCB0byBwYXJzZSBtZXRhLmpzb24gZm9yIFNPR1MgaW4gY2FjaGUA5PcRAA0AAABeaxAACQAAAEIHEAA7AAAAMwIAADIAAABCBxAAOwAAADICAAAyAAAAQgcQADsAAAAxAgAAMgAAAEIHEAA7AAAAMAIAABwAAABCBxAAOwAAAC8CAAAeAAAAQgcQADsAAAAuAgAAGgAAAEIHEAA7AAAALQIAACIAAABCBxAAOwAAACwCAAAgAAAAZGF0YSBkaWQgbm90IG1hdGNoIGFueSB2YXJpYW50IG9mIHVudGFnZ2VkIGVudW0gUGNTb2dzUm9vdHF1YXRlcm5pb25fcGFja2VkZGVjb2RlIG1lYW5zWzBdZGVjb2RlIG1lYW5zWzFdZGVjb2RlIHNjYWxlc2RlY29kZSBxdWF0c2RlY29kZSBzaDBCBxAAOwAAABwBAAAWAAAAQgcQADsAAAAdAQAAFQAAAEIHEAA7AAAAHgEAABQAAABCBxAAOwAAAB8BAAATAAAAQgcQADsAAAAgAQAAFwAAAEIHEAA7AAAAIQEAADUAAABCBxAAOwAAACIBAAA1AAAAQgcQADsAAAAjAQAANQAAAFVuc3VwcG9ydGVkIHF1YXRlcm5pb24gZW5jb2RpbmcgaW4gU09HUyB2MQAABG0QACoAAABCBxAAOwAAAM0AAAAWAAAAQgcQADsAAADOAAAAFQAAAEIHEAA7AAAAzwAAABQAAABCBxAAOwAAANAAAAATAAAAQgcQADsAAADRAAAAFwAAAEIHEAA7AAAA0gAAADUAAABCBxAAOwAAANMAAAA1AAAAQgcQADsAAADUAAAANQAAAFVuZXhwZWN0ZWQgRU9GAAC4bRAADgAAAJEEEAA9AAAAdQAAABsAAACRBBAAPQAAAHYAAABBAAAANAEAANgCAAAIAAAANQEAADYBAAA3AQAAOAEAAMgpAAAEAAAAOQEAADoBAAA7AQAAPAEAAGwAAAAEAAAAPQEAAD4BAAA/AQAAPAEAAGwAAAAEAAAAQAEAAD4BAABBAQAAPAEAAGwAAAAEAAAAQgEAAD4BAABDAQAARAEAAKABAAAIAAAARQEAAEYBAABHAQAASAEAADADAAAIAAAASQEAAEoBAABLAQAATAEAACQqAAAEAAAATQEAAE4BAABPAQAAUAEAAMgAAAAEAAAAUQEAAFIBAABTAQAAUAEAAMgAAAAEAAAAVAEAAFIBAABVAQAAUAEAAMgAAAAEAAAAVgEAAFIBAABXAQAAWAEAAAACAAAIAAAAWQEAAFoBAABbAQAAXAEAALgCAAAIAAAAXQEAAF4BAABfAQAAYAEAAKgpAAAEAAAAYQEAAGIBAABjAQAAZAEAAEwAAAAEAAAAZQEAAGYBAABnAQAAZAEAAEwAAAAEAAAAaAEAAGYBAABpAQAAZAEAAEwAAAAEAAAAagEAAGYBAABrAQAAbAEAAIABAAAIAAAAbQEAAG4BAABvAQAAcAEAADgDAAAIAAAAcQEAAHIBAABzAQAAdAEAACwqAAAEAAAAdQEAAHYBAAB3AQAAeAEAANAAAAAEAAAAeQEAAHoBAAB7AQAAeAEAANAAAAAEAAAAfAEAAHoBAAB9AQAAeAEAANAAAAAEAAAAfgEAAHoBAAB/AQAAgAEAAAgCAAAIAAAAgQEAAIIBAACDAQAArA4QAD4AAACkAQAAJAAAAEludmFsaWQgZGVjb2RlciB0eXBlQHAQABQAAACsDhAAPgAAAL4BAAAJAAAArA4QAD4AAADDAQAAKQAAAKwOEAA+AAAAwAIAABwAAACsDhAAPgAAALsCAABBAAAArA4QAD4AAAC5AgAAQQAAAKwOEAA+AAAArQIAADUAAACsDhAAPgAAAKgCAAA1AAAArA4QAD4AAACkAgAAMQAAAKwOEAA+AAAAoAIAAC8AAACsDhAAPgAAAJ8CAAAxAAAArA4QAD4AAACeAgAALQAAAKwOEAA+AAAAnQIAADUAAACsDhAAPgAAAJwCAAAzAAAAhh8QAD8AAACYAAAAFQAAAHRpbnlfbG9kOjpjb21wdXRlX2xvZF90cmVlOiBzcGxhdHMubGVuPSwgbG9kX2Jhc2U9LCBtZXJnZV9maWx0ZXI9AAAAPHEQACcAAABjcRAACwAAAG5xEAAPAAAAbGV2ZWxfbWluOiAsIGZlYXR1cmVfc2l6ZVswXTogAACYcRAACwAAAKNxEAATAAAAhh8QAD8AAAA0AAAAFAAAAExldmVsOiAsIHN0ZXA6ICwgZnJvbnRpZXI6ICAvIAAA2HEQAAcAAADfcRAACAAAAOdxEAAMAAAA83EQAAMAAABTb3J0ZWQgYWN0aXZlOiAAGHIQAA8AAABNZXJnZWQ6IDByEAAIAAAA83EQAAMAAACGHxAAPwAAAHIAAAAXAAAAAQAAAIYfEAA/AAAAiQAAABMAAABSb290IGluZGV4OiBschAADAAAAFJvb3Q6IAAAgHIQAAYAAACGHxAAPwAAAIcAAAAFAAAAhh8QAD8AAABnAAAAKAAAAIYfEAA/AAAAZwAAAB0AAACGHxAAPwAAAGMAAAAdAAAAhh8QAD8AAABkAAAAGAAAAIYfEAA/AAAAYQAAAFAAAAANBRAAQAAAAM8AAAAdAAAAxh8QAEAAAADYAAAAFQAAAMYfEABAAAAAygAAABYAAABiaGF0dF9sb2Q6OmNvbXB1dGVfbG9kX3RyZWU6IGluaXRpYWxfbGVuPQAAACBzEAApAAAAxh8QAEAAAAAYAAAAGQAAACwgIyBhY3RpdmU6ICwgIyBzcGxhdHM6INhxEAAHAAAA33EQAAgAAADncRAADAAAAPNxEAADAAAAZHMQAAwAAABwcxAADAAAAMYfEABAAAAARQAAABoAAADGHxAAQAAAAHwAAAAdAAAAxh8QAEAAAABoAAAANwAAAMYfEABAAAAAawAAABoAAADGHxAAQAAAAGwAAABBAAAAxh8QAEAAAABvAAAAGwAAAMYfEABAAAAAcwAAACEAAADGHxAAQAAAAFQAAAAtAAAAUm9vdCBzcGxhdDogLHQQAAwAAADGHxAAQAAAAJEAAAAZAAAAxh8QAEAAAACVAAAADgAAAE91dHB1dCBzZXQ6IGB0EAAMAAAA83EQAAMAAABMb0QgZ3Jvd3RoIGZhY3RvcjogAHx0EAATAAAAxh8QAEAAAADgAAAADQAAAFBydW5pbmcgZnJvbSBsaW1pdF9zaXplPSwgIyBmcm9udGllcj0AAACodBAAGAAAAMB0EAANAAAAxh8QAEAAAADyAAAABQAAAFRydW5jYXRlZCB0byBvdXRwdXRfY291bnQ9AADwdBAAGgAAAEF2ZXJhZ2UgY2hpbGRyZW4gcGVyIGludGVyaW9yIHNwbGF0OiAAAAAUdRAAJQAAAFJvb3QgI2NoaWxkcmVuOiBEdRAAEAAAAMYfEABAAAAA9gAAABUAAADGHxAAQAAAAK8AAAAaAAAAxh8QAEAAAACyAAAAGQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jaGlsZHJlbi5sZW4oKSA8PSA2NTUzNQAAAMYfEABAAAAAswAAABEAAAAKAACABAAAgAgAAIAQ6BEAoPsRAKP7EQCo+xEArvsRALf7EQADAAAAAwAAAAUAAAAGAAAACQAAAAMAAABkSxAAZUsQAGZLEAAHAAAABgAAAAMAAAAGAAAABQAAAAIAAAAJAAAACwAAAAsAAAAEAAAAeEsQAH9LEAD6TREAhUsQAItLEACQSxAAkksQAJtLEACmSxAAk9sRABgAAAAIAAAADwAAAAYAAAAEAAAADgAAAA0AAABe2xEAdtsRAH7bEQCN2xEAk9sRAJfbEQCl2xEAAwAAAAMAAAAKAAAACgAAAAIAAAAHAAAAAgAAAAcAAAAFAAAABQAAAAcAAAADAAAAAwAAAFBQEABTUBAAVlAQAGBQEABqUBAAbFAQAHNQEAB1UBAAfFAQAIFQEACGUBAAjVAQAJBQEADWAxAAIgAAAFIAAAATAAAA8hUQABsAAADoAQAAFwBBrO7BAAueAQEAAACEAQAA+QMQABgAAACKAgAADgAAAHEIEAAYAAAAggIAABMAAABxCBAAGAAAAJ8BAAA/AAAAcQgQABgAAACgAQAAMwAAANjKEQARAAAA9B4QACAAAAAqAgAAEQAAAIUBAAAMAAAABAAAAIYBAACHAQAAiAEAAEMbEAAaAAAAvQEAAB0AAAC0AAAADAAAAAQAAACJAQAAigEAAIsBAEHU78EACzUBAAAAuAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKQAAAgBBkvDBAAsBBQBBnPDBAAvOASAAAKggICAgICAgCgpDYXVzZWQgYnk6CgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgoAAEV4EAARAAAAEgQQAFwAAAA2AAAAHwAAABIEEABcAAAAPAAAABsAAABd/BEAAgAAAGJhY2t0cmFjZSBjYXB0dXJlIGZhaWxlZOMIEABeAAAAZwQAAA4AAAAAAAAAEAAAAAQAAACMAQAAjQEAAI4BAAAKClN0YWNrOgoKAAC0AAAADAAAAAQAAACJAQAAigEAAI8BAEH08cEAC4AYAQAAALgAAACoAQQBAQEEAQICAMAEAgQBCQIBAfsHzwEFATEtAQEBAgECAQEsAQsGCgsBASMBChUQAWUIAQoBBCEBAQEeG1sLOgsEAQIBGBgrAywBBwIFCSk6NwEBAQQIBAEDBwoCDQEPAToBBAQIARQCGgECAjkBBAIEAgIDAwEeAgMBCwI5AQQFAQIEARQCFgYBAToBAgEBBAgBBwILAh4BPQEMATIBAwE3AQEDBQMBBAcCCwIdAToBAgEGAQUCFAIcAjkCBAQIARQCHQFIAQcDAQFaAQIHCwliAQIJCQEBB0kCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAV4BAAMAAx0CHgIeAkACAQcIAQILAwEFAS0FMwFBAiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEnAQgfMQQwAQEFAQEFASgJDAIgBAICAQM4AQECAwEBAzoIAgJABlIDAQ0BBwQBBgEDAjI/DQEiZQABAQMLAw0DDQMNAgwFCAIKAQIBAgUxBQEKAQENARANMyEAAnEDfQEPAWAgLwEAASQEAwUFAV0GXQMAAQAGAAFiBAEKAQEcBFACDiJOARcDZwMDAggBAwEEARkCBQGXAhoSDQEmCBkLLgMwAQIEAgIRARUCQgYCAgICDAEIASMBCwEzAQEDAgIFAgEBGwEOAgUCAQFkBQkDeQECAQQBAAGTEQAQAwEMECIBAgGpAQcBBgELASMBAQEvAS0CQwEVAwAB4gGVBQAGASoBCQADAQIFBCgDBAGlAgAEJgEaBQEBAAJPBEYLMQR7ATYPKQECAgoDMQQCAgIBBAEKATIDJAUBCD4BDAI0CQoEAgFfAwIBAQIGAQIBnQEDCBUCOQIDASUHAwVGBg0BAQEBAQ4CVQgCAwEBFwFUBgEBBAIBAu4EBgIBAhsCVQgCAQECagEBAQIGAQFlAQEBAgQBBQAJAQIAAgEBBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQEBARcBABEGDwAMAwMABTsHCQQAAygCAAE/EUACAQIABAEHAQIAAgEEAC4CFwADCRACBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFBT4hAaAOAAE9BAAF/gIAB20IAAUAAR5ggPAAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJPBEYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AgAHbQcAYIDwAKoBCgEEAQUXAR8BwwEEBNABJAcCHgVgASoEAgICBAEBBgEBAwEBARQBUwGLCKYBJgkpACYBAQUBAisBBABWAgYACwUrAgNAwEAAAgYCJgIGAggBAQEBAQEBHwI1AQcBAQMDAQcDBAIGBA0FAwEHdAENARANZQEEAQIKAQEDBQYBAQEBAQEEAQYEAQIEBQUEAREgAwIANADlBgQDAgwmAQEFAQAuEh6EZgMEAT4CAgEBAQgVBQEDACsBDgZQAAcMBQAaBhoAUGAkBCR0CwEPAQcBAgELAQ8BBwECAAECAwEqAQkAMw0zXRYKFgBAAEAAVQFHAQICAQICAgQBDAEBAQcBQQEEAggBBwEcAQQBBQEBAwcBAAIZARkBHwEZAR8BGQEfARkBHwEZAQgACgEUBgYAPgBEABoGGgYaAEFueQocEAAbAAAArwoAACYAAAAKHBAAGwAAALgKAAAaAAAAKzAxMjM0NTY3ODlBQkNERUYsCigKAAAAAAAAAAwAAAAEAAAAkAEAAJEBAACSAQAAIHsKIHsgLi4gfTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAocEAAbAAAANQcAAB8AAABhc3NlcnRpb24gZmFpbGVkOiBvdGhlciA+IDBhc3NlcnRpb24gZmFpbGVkOiBub2JvcnJvdwAAAOoSEAAeAAAAqwEAAAEAAABhc3NlcnRpb24gZmFpbGVkOiBkaWdpdHMgPCA0MDAuMGUwYXNzZXJ0aW9uIGZhaWxlZDogIWJ1Zi5pc19lbXB0eSgpAGIfEAAjAAAAtwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBidWZbMF0gPiBiJzAnAGIfEAAjAAAAuAAAAAUAAABiHxAAIwAAAAYBAAAFAAAAYh8QACMAAAAHAQAABQAAAGVlLWFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBtYXhsZW5iHxAAIwAAAHoCAAANAAAAYh8QACMAAACZAAAADgAAAN9FGj0DzxrmwfvM/gAAAADKxprHF/5wq9z71P4AAAAAT9y8vvyxd//2+9z+AAAAAAzWa0HvkVa+Efzk/gAAAAA8/H+QrR/QjSz87P4AAAAAg5pVMShcUdNG/PT+AAAAALXJpq2PrHGdYfz8/gAAAADLi+4jdyKc6nv8BP8AAAAAbVN4QJFJzK6W/Az/AAAAAFfOtl15EjyCsfwU/wAAAAA3VvtNNpQQwsv8HP8AAAAAT5hIOG/qlpDm/CT/AAAAAMc6giXLhXTXAP0s/wAAAAD0l7+Xzc+GoBv9NP8AAAAA5awqF5gKNO81/Tz/AAAAAI6yNSr7ZziyUP1E/wAAAAA7P8bS39TIhGv9TP8AAAAAus3TGidE3cWF/VT/AAAAAJbJJbvOn2uToP1c/wAAAACEpWJ9JGys27r9ZP8AAAAA9tpfDVhmq6PV/Wz/AAAAACbxw96T+OLz7/10/wAAAAC4gP+qqK21tQr+fP8AAAAAi0p8bAVfYocl/oT/AAAAAFMwwTRg/7zJP/6M/wAAAABVJrqRjIVOllr+lP8AAAAAvX4pcCR3+d90/pz/AAAAAI+45bifvd+mj/6k/wAAAACUfXSIz1+p+Kn+rP8AAAAAz5uoj5NwRLnE/rT/AAAAAGsVD7/48AiK3/68/wAAAAC2MTFlVSWwzfn+xP8AAAAArH970MbiP5kU/8z/AAAAAAY7KyrEEFzkLv/U/wAAAADTknNpmSQkqkn/3P8AAAAADsoAg/K1h/1j/+T/AAAAAOsaEZJkCOW8fv/s/wAAAADMiFBvCcy8jJn/9P8AAAAALGUZ4lgXt9Gz//z/AEH+icIACwVAnM7/BABBjIrCAAvoDRCl1Ojo/wwAAAAAAAAAYqzF63itAwAUAAAAAACECZT4eDk/gR4AHAAAAAAAsxUHyXvOl8A4ACQAAAAAAHBc6nvOMn6PUwAsAAAAAABogOmrpDjS1W0ANAAAAAAARSKaFyYnT5+IADwAAAAAACf7xNQxomPtogBEAAAAAACorciMOGXesL0ATAAAAAAA22WrGo4Ix4PYAFQAAAAAAJodcUL5HV3E8gBcAAAAAABY5xumLGlNkg0BZAAAAAAA6o1wGmTuAdonAWwAAAAAAEp375qZo22iQgF0AAAAAACFa320e3gJ8lwBfAAAAAAAdxjdeaHkVLR3AYQAAAAAAMLFm1uShluGkgGMAAAAAAA9XZbIxVM1yKwBlAAAAAAAs6CX+ly0KpXHAZwAAAAAAONfoJm9n0be4QGkAAAAAAAljDnbNMKbpfwBrAAAAAAAXJ+Yo3KaxvYWArQAAAAAAM6+6VRTv9y3MQK8AAAAAADiQSLyF/P8iEwCxAAAAAAApXhc05vOIMxmAswAAAAAAN9TIXvzWhaYgQLUAAAAAAA6MB+X3LWg4psC3AAAAAAAlrPjXFPR2ai2AuQAAAAAADxEp6TZfJv70ALsAAAAAAAQRKSnTEx2u+sC9AAAAAAAGpxAtu+Oq4sGA/wAAAAAACyEV6YQ7x/QIAMEAQAAAAApMZHp5aQQmzsDDAEAAAAAnQycofubEOdVAxQBAAAAACn0O2LZICiscAMcAQAAAACFz6d6XktEgIsDJAEAAAAALd2sA0DkIb+lAywBAAAAAI//RF4vnGeOwAM0AQAAAABBuIycnRcz1NoDPAEAAAAAqRvjtJLbGZ71A0QBAAAAANl337puv5brDwRMAQAAAADLAhAALgAAAH0AAAAVAAAAywIQAC4AAADvAgAAJgAAAMsCEAAuAAAA4wIAACYAAADLAhAALgAAAMwCAAAmAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ID4gMMsCEAAuAAAA3AEAAAUAAADLAhAALgAAADMCAAARAAAAywIQAC4AAABsAgAACQAAAMsCEAAuAAAAqQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1pbnVzID4gMAAAAMsCEAAuAAAAqgAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLnBsdXMgPiAwywIQAC4AAACrAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCArIGQucGx1cyA8ICgxIDw8IDYxKQAAAMsCEAAuAAAArwAAAAUAAADLAhAALgAAAAoBAAARAAAAywIQAC4AAABAAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX3N1YihkLm1pbnVzKS5pc19zb21lKCkAywIQAC4AAACtAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX2FkZChkLnBsdXMpLmlzX3NvbWUoKQAAywIQAC4AAACsAAAABQAAAPQREAAvAAAACwEAAAUAAAD0ERAALwAAAAwBAAAFAAAA9BEQAC8AAAANAQAABQAAAPQREAAvAAAAcgEAACQAAAD0ERAALwAAAHcBAAAvAAAA9BEQAC8AAACEAQAAEgAAAPQREAAvAAAAZgEAAA0AAAD0ERAALwAAAEwBAAAiAAAA9BEQAC8AAAAPAQAABQAAAPQREAAvAAAADgEAAAUAAAD0ERAALwAAAHYAAAAFAAAA9BEQAC8AAAB3AAAABQAAAPQREAAvAAAAeAAAAAUAAAD0ERAALwAAAMIAAAAJAAAA9BEQAC8AAAD7AAAADQAAAPQREAAvAAAAAgEAABIAAAD0ERAALwAAAHoAAAAFAAAA9BEQAC8AAAB5AAAABQAAAAEAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjvBb/KGIwAAAIHvrIVbQW0t7gQAAAEfar9k7Thu7Zen2vT5P+kDTxgAAT6VLgmZ3wP9OBUPL+R0I+z1z9MI3ATE2rDNvBl/M6YDJh/pTgIAAAF8Lphbh9O+cp/Z2IcvFRLGUN5rcG5Kzw/YldVucbImsGbGrSQ2FR1a00I8DlT/Y8BzVcwX7/ll8ii8VffH3IDc7W70zu/cX/dTBQBvBBAAIQAAAC4AAAAJAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQbaYwgALMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMEBAQEBABB9JjCAAv1cFsuLi5dYmVnaW4gPD0gZW5kICggPD0gKSB3aGVuIHNsaWNpbmcgYAB5jBAADgAAAIeMEAAEAAAAi4wQABAAAADokhEAAQAAAGJ5dGUgaW5kZXggIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSAgKGJ5dGVzICkgb2YgYAC8jBAACwAAAMeMEAAmAAAA7YwQAAgAAAD1jBAABgAAAOiSEQABAAAAIGlzIG91dCBvZiBib3VuZHMgb2YgYAAAvIwQAAsAAAAkjRAAFgAAAOiSEQABAAAAJhEQAB8AAABnBgAAFQAAACYREAAfAAAAlQYAABUAAAAmERAAHwAAAJYGAAAVAAAAJhEQAB8AAAB0BQAAKAAAACYREAAfAAAAdAUAABIAAABjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKCkgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICgAAACkjRAAJgAAAMqNEAArAAAAXgcSAAEAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyEI4QAEwAAAD6AhAALwAAAFwDAAAFAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHSOEAASAAAAho4QACIAAAByYW5nZSBlbmQgaW5kZXgguI4QABAAAACGjhAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgANiOEAAWAAAA7o4QAA0AAAB1ChAAIAAAAIQAAAAeAAAAdQoQACAAAACgAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAwAAAAOAAAADBAAAA4QAAAMIAAADiAAAAwwAAAOMAAADEAAAA5AAAAMUAAADlAAAAxgAAAOYAAADHAAAA5wAAAMgAAADoAAAAyQAAAOkAAADKAAAA6gAAAMsAAADrAAAAzAAAAOwAAADNAAAA7QAAAM4AAADuAAAAzwAAAO8AAADQAAAA8AAAANEAAADxAAAA0gAAAPIAAADTAAAA8wAAANQAAAD0AAAA1QAAAPUAAADWAAAA9gAAANgAAAD4AAAA2QAAAPkAAADaAAAA+gAAANsAAAD7AAAA3AAAAPwAAADdAAAA/QAAAN4AAAD+AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAIAQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMBAAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAAAAAQAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA5AQAAOgEAADsBAAA8AQAAPQEAAD4BAAA/AQAAQAEAAEEBAABCAQAAQwEAAEQBAABFAQAARgEAAEcBAABIAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAAFEBAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFoBAABbAQAAXAEAAF0BAABeAQAAXwEAAGABAABhAQAAYgEAAGMBAABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAG8BAABwAQAAcQEAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAD/AAAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAAgQEAAFMCAACCAQAAgwEAAIQBAACFAQAAhgEAAFQCAACHAQAAiAEAAIkBAABWAgAAigEAAFcCAACLAQAAjAEAAI4BAADdAQAAjwEAAFkCAACQAQAAWwIAAJEBAACSAQAAkwEAAGACAACUAQAAYwIAAJYBAABpAgAAlwEAAGgCAACYAQAAmQEAAJwBAABvAgAAnQEAAHICAACfAQAAdQIAAKABAAChAQAAogEAAKMBAACkAQAApQEAAKYBAACAAgAApwEAAKgBAACpAQAAgwIAAKwBAACtAQAArgEAAIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEAADEAAAABJxAAKgAAADQBAABHAAAAAScQACoAAAAxAQAAFgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHN0cjo6ZnJvbV91dGY4KCkgPSAgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgIGNoYXJzIHdlcmUgZm91bmRMWBEAOQAAAIVYEQAEAAAAiVgRACIAAACrWBEAEQAAAAEnEAAqAAAAXAEAABoAAABib29sc3RyaThpMTZpMzJpNjRpMTI4aXNpemV1MTZ1MTI4ZjY0IV8uLi4AAAEnEAAqAAAAigAAAA0AAAABJxAAKgAAAL8BAAAfAAAAAScQACoAAAAeAgAAHgAAAAEnEAAqAAAAIwIAACIAAAABJxAAKgAAACQCAAAlAAAAW117aW52YWxpZCBzeW50YXh9e3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkfT86Ojo6e2Nsb3N1cmVzaGltI308IGFzID4mIG11dCAqY29uc3QgOyAoLGR5biAgaXMgQ3Vuc2FmZSBleHRlcm4gIgAAAAEnEAAqAAAA1AMAAC0AAAAiIC1mbiggLT4gZmFsc2V0cnVleyB7ICB9ID0gMHgAAAEnEAAqAAAA7QQAAC0AQaC0xQAL4AcBAAAAxwEAAGBmbXQ6OkVycm9yYHMgc2hvdWxkIGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAAABJxAAKgAAAIcCAAARAAAAJ2Zvcjw+IC4uPSB8ICFudWxsX19SAAAAAScQACoAAAAyAAAAEwAAAAEnEAAqAAAALwAAABMAAAABJxAAKgAAACsAAAATAAAAAScQACoAAABLAAAADgAAAAEnEAAqAAAAWgAAACgAAAASARAALgAAAGYAAAAcAAAAX1pOABIBEAAuAAAAPQAAAAsAAAASARAALgAAADoAAAALAAAAEgEQAC4AAAA2AAAACwAAAC5sbHZtLgAAmSMQACsAAABiAAAAGwAAAJkjEAArAAAAaQAAABMAAACjERAAUAAAAKYAAAAFAAAAMDEyMzQ1Njc4OWFiY2RlZgAAAAAAAAAAAQAAAMgBAAB7c2l6ZSBsaW1pdCByZWFjaGVkfQAAAAAAAAAAAQAAAMkBAABgZm10OjpFcnJvcmAgZnJvbSBgU2l6ZUxpbWl0ZWRGbXRBZGFwdGVyYCB3YXMgZGlzY2FyZGVkAJkjEAArAAAAUwEAAB4AAABwdW55Y29kZXsAAAAAAAAABAAAAAQAAADKAQAAU2l6ZUxpbWl0RXhoYXVzdGVkAAASARAALgAAAG8AAAAnAAAAEgEQAC4AAABwAAAAHQAAABIBEAAuAAAAcgAAACEAAAASARAALgAAAHMAAAAaAAAAEgEQAC4AAAB+AAAAHQAAABIBEAAuAAAAtAAAACYAAAASARAALgAAALUAAAAhAAAAEgEQAC4AAACKAAAASQAAABIBEAAuAAAAiwAAAB8AAAASARAALgAAAIsAAAAvAAAAQAAAABIBEAAuAAAAnQAAADUAAAASARAALgAAAIIAAAAsAAAAEgEQAC4AAACEAAAAJQAAAC4AAAASARAALgAAAIcAAAAlAAAAAAAAAAEAAAABAAAAywEAABIBEAAuAAAAcgAAAEgAAAAAAAAADAAAAAQAAADMAQAAzQEAAM4BAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQBBj7zFAAsBEABBn7zFAAsBFABBr7zFAAsBGQBBvrzFAAsCQB8AQc68xQALAogTAEHevMUACwJqGABB7bzFAAsDgIQeAEH9vMUACwPQEhMAQY29xQALA4TXFwBBnb3FAAsDZc0dAEGsvcUACwQgX6ASAEG8vcUACwTodkgXAEHMvcUACwSilBodAEHbvcUACwVA5ZwwEgBB673FAAsFkB7EvBYAQfu9xQALBTQm9WscAEGKvsUACwaA4Dd5wxEAQZq+xQALBqDYhVc0FgBBqr7FAAsGyE5nbcEbAEG6vsUACwY9kWDkWBEAQcm+xQALB0CMtXgdrxUAQdm+xQALB1Dv4tbkGhsAQem+xQAL+CWS1U0Gz/AQAAAAAAAAAACA9krhxwItFQAAAAAAAAAAILSd2XlDeBoAAAAAAAAAAJSQAigsKosQAAAAAAAAAAC5NAMyt/StFAAAAAAAAABA5wGE/uRx2RkAAAAAAAAAiDCBEh8v5ycQAAAAAAAAAKp8Idfm+uAxFAAAAAAAAIDU2+mMoDlZPhkAAAAAAACgyVIksAiI740fAAAAAAAABL6zFm4FtbW4EwAAAAAAAIWtYJzJRiLjphgAAAAAAEDm2HgDfNjqm9AeAAAAAADoj4crgk3HcmFCEwAAAAAA4nNptuIgec/5EhgAAAAAgNrQA2QbaVdDuBceAAAAAJCIYoIesaEWKtPOEgAAAAC0KvsiZh1KnPSHghcAAAAAYfW5q7+kXMPxKWMdAAAAoFw5VMv35hkaN/pdEgAAAMizRym+tWCg4MR49RYAAAC6oJmzLeN4yBj21rIcAABAdARAkPyNS33PWcbvEQAAUJEFULR7cZ5cQ/C3axYAAKT1BmSh2g3GM1TspQYcAICGWYTepKjIW6C0syeEEQAg6G8lFs7SunLIoaAx5RUAKOLLrpuBh2mPOsoIfl4bAFltP00BsfShmWR+xQ4bEUCvSI+gQd1xCsD93XbSYRUQ2xqzCJJUDg0wfZUUR7oa6sjwb0Xb9CgIPm7dbGy0ECT77MsWEjIzis3JFIiH4RTtOeh+nJb+v+xA/Blq6RkaNCRRzyEe//eTqD1Q4jFQEEFtJUOq5f71uBJN5Fo+ZBSSyO7TFJ9+M2dXYJ3xTX0ZtnrqCNpGXgBBbbgEbqHcH7KMkkVI7DqgSETzwuTk6RPeL/dWWqdJyFoVsPMdXuQY1vu07DARXHqxGpxwpXUdH2Ud8ZO+innsrpBhZodpchO/ZO04bu2Xp9r0+T/pA08Y770ox8nofVERcviP48RiHrV2eRx+se7SSkf7OQ67/RJi1Jej3V2qhx0ZesjRKb0Xe8l9DFX1lOlkn5g6RnSsHe2dzidVGf0Rn2Of5KvIixJoRcJxql981oY8x93Wui4XwtYyDpV3G4yoCzmVjGn6HDnG3yi9KpFXSadD3feBHBLItxdzbHV1rRuRlNR1oqMWuqXdj8fS0phitblJE4tMHJSH6rm8w4OfXREUDuzWrxF5KWXoq7RkB7UVmRGnzBsW13N+4tbhPUkiW//V0L+iG2YIj00mrcZt9Zi/heK3RRGAyvLgb1g4yTJ/LyfbJZcVIH0v2Ytuhnv/XvvwUe/8GjSuvWcXBTStXxudNpMV3hDBGa1BXQaBmDdiRAT4mhUVMmAYkvRHoX7FelUFtgFbGh88T9v4zCRvu2xVwxHheBAnCyMSNwDuSurHKjRWGZcU8M2r1kSAqd3keTXBq9+8GbZgKwYr8IkKL2zBWMsLFhDkOLbHNWwszTrH8S6+jhsUHcejOUOHd4AJOa66bXIiGeS4DAgUaZXgS8dZKQkPax+O8weFrGFdbI8c2Lll6aITcvBJphe6dEezI04ov6OLGI9s3I+d6FEZoKxh8q6Mrh7Zw+l5YjHTD+QLfVftFy0TzzRkGLv9xxPdTlyt6F34FwNCfd4p/blYlGKz2GJ19h1CSQ4rOj50t5wdcMddCboSktvRtchNUeUDJUw5tYtoF3dSRuM6oaXeRC6fh6KuQh2K8wvOxIQnC+t8w5QlrUkSbfCOAfZl8c0lXPT5bhjcFois8oFzv21BL3NxuIoekxzVqzcxqJfkiP3nRrMW89sRypaFPZK9Hev8oRhg3O9SFn385sz2LOUlfMoeeNOr5xvOXRBAGjyvl40+Eytky3ARQnUU0CALm/0wDtg1Pf7MFZKSGQTpzQE9vRFOg8w9QBub+4+isSAhRhbLENKfJggRgvozC95oqdfb/ZTGRzBKFSP5AI4Vw5PNUj06uFm8nBq2m8B47Vl8wFNmJBO49aEQo8Lw1mhwm7Dof+0XJnPKFEzzrAyDTMLc4t/one8P/RkPGOzn0W/5ye2LscL1KT4QEx7nYcbLdzzp7l0zc7RNFJjlYPq3vpWLo2o1AJAhYRn+Hvn4ZS57bkzFQgD0abkfX7Obu//8DMVPuymAOOLTEzeggqo/PFC2Iyo0oMbayBhESCOVT0vko6w0QUh4EfseKw02vRGvbubrwCgt6+pcE3WQgyzWWgrgJvFy+KUlNBiTdKS3i/EMmHCtj3YPL0Ee3MjGUvcWCF9mzBmqab3oEhN7eCe1HMr2fz+gFMTsohfXmVZx4qN89F9PyBn1p4sdJiDWhm3mzfibMR0w+Uh3EjCoi+gIYAH3An4kfDcbFRc8kq4iC7jBtIOdLVsFYtocZRut9QYT+VBygvxYQ30IEj9iGLPIVzflDqM7L5ScihbPet7fui2FntKLCju5Qy0cwQzry5Q8E6Njl+bEU0qcEfHP5f65C9iLPD0gtuhcAxbuQ59+qA7OrotMqOMiNIQbdYojTynJQE3XL0nOlaAyERJt7KJz+5AgzXvbQbtIfxVWiKeLUDq1aMBaUhLqGt8aNrVIV3JEcUG4eHNL0nDLEIPiGu2Olc1R5lZQ3gZN/hQkm2Go8vpA5p9s5JVI4D0a9wA9qdec6O/jw65dLaxmEDRBjJMNxOLr3HQatThXgBSBUW/4EHXbJhQSYeIGbaAZ8ZJFmyopSZhMq3xNJEQEEK33FkJ1c1u+H9bbYC1VBRSYtZySUlDyrafLErl4qgYZ/+JDN2fkbpmRflfnFlVIH99tioLATuX/Gq+WUC41jRNXCS2jcKLev+FavOR5gnAYrUv4ywxL1i+acetdGKOMHkwve//n7uVdACezOu/lFxMf+1n/oWpfdcDwXwlr390X53kwf0pFt5Lw7LfLRVfVHTBMfo9Oi7JbFvRSn4tWpRI8310zIi6f8huxJ4curE4XC1c1wKr5Ru9infEoOlciHWdWIbgKXIzVXQKXWYR2NRIBrClmDXPvSvXC/G8l1MIWARe0v9BPq52y8/vLLolzHGCO0HfiEYuiT3h9P701yBH5scQVW9Yti2PWXI8sQzoWd9412/FL+W38CzSz99PIGwqrASl3z7vEfYcA0HqEXRHNFULzVMPqNV2pAISZ5bQVQJsSMCp0ZYO00wDl/x4iGwihC16aaB/SUIQg719T9RBKiY71wEKnBmWl6Oo3qDIVnSvyMnETUUi+zqLlRVJ/GkJb178mrDLtNsGFr2uTjxASMs1vMFd/qIQxZ5tGeLMUl37Ai/wsn9Ll/UBCWFbgGR5PWNcdfKOjr55oKfc1LBDmYi5NJVuMjFvGwvN0QzcUn/t5oO5xr2/yd7MwUhRFGYd6mEhqTpsL71XgvGZZlh+UTF9tAhFBZ7U1DDbg970Tuh+3CENVEcEiQ49D2HWtGKjn5MqTqlVx6xNzVE7T2B7JEM9enIrVJnPsx/QQhEcT+9SCdkPtivCP5/kxFWUZGDqKI1SUqK3sc2F4flq+Hx5kNpa0XInsc+g8C4/41tMS/cO74bOr55AiDM6ytsyIF/20KtqgliE1K4+BX+T/ah0esVqIJP40AXv5sLvu32ISZV1xqq09gsHZN51q6pf7Fr+0DRUZzeIx0IVEBeV9uhz3kCitL8AtH6LTSiOvjvQRNbVymDsw+aaKiB3sWrJxFoJij35KfLdQreokp/EeDhyRnRmPrq1yUqwSdwhX04gR9gTgMhpZD2dX15TKLAjrFTMGmL9gL9NALQ06/TfKZRvgA793nP2DSDxIRP5inh8R2MSulQP9pFpLWtW9+4VnFQ52GntEPE4x3rBKrXpnwRrJifDMquXQ3oquTqys4LgQO6wsgBUfhZYtWmLX1xjnFErXN+DaZib8uPA6zQ3fIBqO5iLMSACYnXPWRKBoi1QQMqAr/1oA/oQQDFbIQq5pFD6I9r5xgD2mFI9retMZhBlOKrQujuDMz9lyBllIIOUfcJow3VgM4CHIB6Q3LTTvEw3BfBRvD1gqugmNhTgB6xhQ8ZvZShPutChM8KaGwSUf0nYByA7MFHGZL1Yo9Jh3E4bUAXoS/1nNf7trMjF/VRioSYIY136wwF+qBn/93moeCW5Rb0ZPbth7KmRvXssCE4vJJQsY44nOGjU9CzZ+wxfuO+8N3lssgmGCDI7DXbQddYW1yGq5W/F80cc4mrqQEtLm4nrFp7It3MX5xkDpNBeGoJvZtlEfOVM3uPiQIwIdVEQBSBKTswOUInObOlYhEmmVAdrWd6AEOetPQsmrqRbD+oGQzJXIRQfm45K7FlQcujxR2p9dnYvEb847NY60EeiL5dAHtYSutQvCisKxIRbj7h7FSeIlGqOOci0zHqobTVUzG26tV/AlmWf831JKEaEqAKLJmG1sb3+B+5fnnBVJNYAK/P6IR0vfYfp9IQQbTiGQhl2ftQyPK3287pTiEKEpNOg0B+PPcnacayo6GxUKNEEiAsnbgw+Ugwa1CGIahsBoVaFdabKJPBIkcUV9EKfwwqoJtQMfrMsWbc2WnBTRrHMVTKLEJpd+XMiAvMMZA0xojW/lOngezzl90FUaEANfwnDLnkkW5kKInETrIBTE9vJMfgbcm59TqsMVJikZdrQv4B0I04KH6JQ0m29zH8nQHawS5cOxVBHdAMElqBP8RCVXV9403qlVFEExL5IYO5buLO0VwlUUa1mR/bq2HuUdFTy0TZm17OLXet40MhNeZRpLIaH/4qfbjRkWwv4Xtv7gnWmJv9uRUvGfm3L+HTGfrALitVcpm9P2Q6EHvxL+xleDWqOt84GI9JSJyW4XvbgtJDEMmXCiqjH663tKHXaTnLaep1+GpQpffHONThJUuENkhpH3507NdlvQMOIWaaZU/ed19aGigFRyBL2aHAHoVP6waTmlZdB0xyK24BECIuo9HcSHDn8EUnmr41gWgqpkjSS1KdKehaZXlhzvG5HqXtg2EVpDgxPI9t1xdRE2pXaOhJUwFGQYenRVztIVg04UsuW6PBl9npjR6oFHGxKxTI/P9MUvDmP/wjKxDBFW3R9zA3K3u9E7v3N/3U8VrNTnT4ROpSrGCq9Q39SjGuvk8LESUafau2ZtkgtlphAmHm1eVyVR0WrACHdO/s8UsGUINq1upYWF8MoU4v0DGo4/xUEsZYdzU9b+TK1+QhBxjzZSdz5pUOiLPqBYHlMUTjPEJhWOg2TiLk7I7uVnGSJAdXCacaT9mrphemrfwR8VSEmGAMeG3qAUfYyiK9kTGprbp8B4KBbJWZwvi3bPGKGA0tHwlrJbO3CD+y1UAx9kkCODVp5PGSUmMr2cFGITfnTsI+yFo1+ur37sw5k6GJ2R5yxnZ4z3mVue5zRASR4CuxB8oMC3OkD5whAhyO0Sw+kUm8iwZUmQt/NUKTqpFzMk2sH6HL9bdKUwqrOIkx2gVii5HHJXuWhnXkpwNXwSSGxy56NOredCAfZczEIbF1oHT+FMopihk4EzdH8T4hyYZNEMcGX/RPwwoKgvTA0Svr0FEMw+P1Y7PciSO5+QFi4tBxR/Ds8rikx6dwrHNBw9fIRsD2lhW9ZvrIpm/KARTJulR1PDOfLLi1ctgDsJFh8CjxkoNMjuvm6tOGCKixtTYfkPmSA9VTdlbCN8NjcRqLn3U79ojCqFfkcsGwSFFRKo9Sjvgi91Jl5Z9yFF5hoLiZl51bE9Cdjalzo1688QTuv/10oejQuO0T2JAuYDFSLm/43dZXCO8UWNK4PfRBrV7794qj8G+bZLOPuxC2sQyuvvFpXPR7ekXgZ6ns6FFL3mq1x6wxnlTfaHGEZCpxk2cOt5LBowr/D5VM9riQgQQ0xmmLcg/NpsOCrDxqsKFFTff37lKLsRiMb0c7hWDRkq1x/eHvMpFir48ZBmrFAfeubTSvM32k0aO5cawGuSExngiB3wxVDh4Ak9IbAGdxgfGOskbPekGVlMjClcyJQeE+8Sl6MaB7C3r/eZOf0cE9iq13xM4QicpZt1AIg85BeOlQ2cnxkLA48CkwCqS90deX2IwQPw5mGZ4VtASk+qEtec6rEErGC6/9ly0BzjVBcNRGXeBdf4qH+QjwTkGyodiEr/qmOGm8lPutmCblE6Eiodv5X8ZwK84yiQI8rlyBZ05C67+wEDqxwzdKw8H3scyU79VD3h4erxn8jrhfPMEXuiPKqMWZpl7se6ZmcwQBYay8vU7+8A/+l5aUCBPNAb8F7/5PWVYD8y7EHI0CViEaw2P15zuzjPPmdS+kSvuhVXBM81UOoGgw4B5zgWWykbtmKhIXJS5BGpYJDj7dj5EGS7CaoOZ11W03h0XClPOBU9KoxU0sD0KwiXkbPzYoYaZprXdIP4eBtl/jpQ2P2TEACBDVKkNldi/r1JZE79uBRA4ZBmTQTt+n0tXP2hPOcZyIwaYLAi1LxunFk+5YUwEPovIXhcKwlsigPwjV6nPBT4eymWM3YLB20EbDE20UsZ9tqze8BTzkiIBce9g8WeH9poUE1Y9IAtdWOcVnI7wxMQg6RgbjHheFJ8Q+xOCrQYAQBB7+TFAAufOSCamZmZmZmZmZmZmZmZmZkZFa5H4XoUrkfhehSuR+F6FN4kBoGVQ4ts5/up8dJNYhCW1AloImx4eqUsQxzr4jYaq0Nuhhvw+WGE8GjjiLX4FCI2WDhJ88e0No3ttaD3xhBqI43ADlKmh1dIr7ya8tcaiE/XZqVBuJ/fOYww4o55FQemEh9RAS3mspTWJugLLhGkCVHLgWiu1re6vdfZ33wb6jqnojTt8d5flWR54X/9FbvIhej28Cd/GRHqLYGZlxH4DdZAvrQMZcKBdklowiUck3HeM5iQcOoBmyuhhpuEFkPBfingpvMhmxVW556vAxI3NTEPzdeFaSu8idiXstIc+ZBaP9ffNyGJltRGRvUOF/pzSMxF5l/noKtD0tFdchJdhg16PD1mpTSs0rZPyYMdsZ7XlGOXHlFdI0KSDKGcF8FLed2C337afU+bDgq04xJorFti0ZhkKpblXhcQIDkeU/Digafgtu5EUbISQLMtGKkmT85STZJYaqeOqJnCVxNBpH6wt3tQJ6rYfdr10PIeNFBlwF/JplK7E8uuxEDCGJCm6plM1OsOyQ888jaazhOAChHDrVN5sUEZYFC+9rAfZwh0AovcLcFnR7Om/l5aGVKgKTVvsCQ0hp/C6/5LSBTbGe6Q8lkdkJ5/aIll1jkQXymwtB3D+0yXMqeo1SP2GbK6WV2xNZY9rFsfunfpxBQoYuF9J16rl1ZJTPuSh50QDZ1oydjJq/LwDnr4t6WVGj4Xujp6obxbWnIuLZOERBXLRfsuyBrKr66Oi4pCnQMRRQmSsab33LJK5Hiqnfs4GwShQcHrkn31boMtVbEvxxUDtGdniXVkxFicV3cnJmwR0uyl2NuIbW30xiXyCz3gG9sj60YWB76KwzgeKKP9TBZJtlXSEWz+bpxgS1NPMdcRDorvtk8Tl7FgZ0WFGIKLHKWhv/hyD6wnGrlqN60B1hYeTplgwnJWueFgVSwkzkQSlRbCzQMeV/U1zrsTbeM6HaurAQsDGKwqK9gvdopPYhdWiTRvAuC8u1UT88RuDLUSiajtsdDMx5LvHrjUSnruHQe6V45ACtPb8kuTEG/78RcGyN9xANWofPVvD9pY/CcT1gxm6TO7p/q7TLIpjmCmHhHXhIcp/FKVyaOOVAsahRgOrNDSusmoqgeD2HZvrp0T46waHl7c2t2l0cBXsrBiH0+KSEtLsEh+UUGarI7AGxnZodPV1Vlty9rN4ValMxYUe4HcdxF7Vzzi1+er6sIRECrPYFmCXvLGNiamrKoEthm7pYBHaBj1a8VR61ZVnZEUloQABu15KiPRpyLf3X10EFYHNKPhj93RgQzRMZb8UxpFbPboGnPkpzQ9p/RE/Q8Vnlb4U+IoHVNdl1JdapfZEGJXjbkD22HrLvJQlRC/9RroRaTHz0hOvFhb2t2mZZEVIGuDbNnTcWOt4uEXHx5BEc0Rn60ohhyfSAQD82RjmxsL2xi+U2uw5QadNY8d6RUWohVHyw+J8+prSpFy5CCrETe8cXhM27hERqobhG0BRRxfY8HG1hXHAwVVSQO+mp0WGenNa0XeODY3dwdp/q4XEsFBFkaiY8FWWFhyDpex8hzOZ6vRgRwB33kT9XESjigXpexVQc4WNH9h3JDBDtiGEm5HVjV9JCBlAsfnaOSMpB0lOXj3MB2A6gFsuSAd17YXhPos+fOwmbs0I2FNF6z4Ejn3RyhTTlxfVDhoFfKsWh4uLNO5dQt9f0NgU0RbikgYWCPcx/fVMJnPGak2fDttEybS+XKMibSOso8O8fkrFR+4QS6PowcqciimC/THvN0Y+pq+pU85u8GGHtZcBpfkE/b3MAkZwl6c1zDw+tYk1B/4X1oHFGjlSXmNJi/fg3YZYObhBRAgUW7HClK/5c9eFBqFgdEMgNrxBW8OmYTZSxD11GiCFADET9bk4/Sg9RIaK3ftAaqZadkRtxz3s/fbFLzFigGIFO6tdJKwxVz5rxAsCd5opu18SVTqgG+UKLMaJNTkU7hXyjoQVZq/diBcFYN2HUNgeTtic6qu/16AFhGevcjRZvUrnbgQsTLLM1cbf2RtQVLEvH1gDfSOolzfFcy2imfbaf3K5j3D2E59fxHfindyxQ8vq9cvBY7kLv8bgNWSWwRz8oisjGo+Hb9lFmZEQknQKPXTVj1VmEr/6hGjoANCTUGIuVeVu/MQMqsc6eYCaNfNOWF5d/zCQFvvFlRSAiB5cWHnLfnJaM0VWRKGUJ2ZjrVopXxbdnQVVlsd0qZK4T6RIFH9FcX23UR8Fw4fohr/QE2nykQ3krHQyRJKy2n3ZM6uCxFuWFBPtA8eOzzuxVDYizyn8XlzP5AMGMnJ8TfaeQnKhfTHwjJAPRPbQum/9sKoqW+6DJ63Zsge45u6zCvPUyEmlXB+LFKgGIJJlXCJcqkauN0mZfB0sxOddYgaD4R194wvPgjnh4UfF16ge3I2kV8KJpgG7J83Gd/kGZZb+EAZ1YRGBfB/LBRM6kerr8YA4RA3BdGMmSMQR90/RUykZ87nJNW0R4/SGQaxzJ3W6VLYH7fdw59yqBQ4JwpLRe7beRksfmkZwoYQWdipEaLjXymPRjAPjzZxGnoTu6eBHLO6pWvz2NheJxUvqZXsmuMoYlGJj63gS+wQF3Xv4Pc4Dp3oDkyvmqwTG3kqWRqTLdiwU3LWJeJWqRUuVUdID755jdzB3reBRVQRfLsL2n6WjxWUnJeMzwi6G5cv1hT/EaZ3drDf1nJtLhZ5jN5D/6dR+ZHzsnj1vb4Rjq390v4/HMIc7LdaImNkHNiKZEIyM7ABF/BfFbW1thZGooObjsJZAaxZ5t2QxCsSowM5XxcE9s6swqP8GtQSHYOcLUysaV5yvZscykhDQhec44rWiVQY9f3iFggHaZsSxgWrvQ9Uje4va/EM2HTFHQVrIv5ydte+jCLBcEYq0RcEvE7LKMUS/9ZOZ41ruw0ToPl9eHQ7Ucskfth7El98Hk1h/vkpyQ0JtzGt/EF/YxgKgcuUIdTXoMUnJMo0zIITd854VM+5v2dvDG1DIa03H/lxLd2llMwfWXCKz01X+RjH9L19Ud3Wf3rzoT8+rPoTC+4vyeguvv/DuJwy/Xn3H9Yk86AgvzFmNvoWwv3Hkhl4HVwaGswnuF77qwHLbHUUYOR8e64JU5MYybxnovBdEJmglMWwQuse9HSUP2rnLxrh5nYEJwKJ5Vwq3TKIH/MU5+srnYXOoLew7rAooH/CENjf32FvSgFZtEpOdDPM0BqtTObnJdXN4CmiPpCP1nMV8dZRhlF3cU3utMvZcngpEehX6dbovuh7sFSsj4SNdRsgEyHfUzK6/FndiQxqpPcVgELnGEMoyGOuSm5w7umSEWZq2Cc4DQ0GFxFKGhdDHhzrIa3sLKQ9axJ0bnsSnH4WVk5XvfAc/ojbXFj8QeP+ESNKJWK0lJZBX2GNYDYFyxzp1B3oKaqrZ3/nPU340AgXh90XILshVrkyuWTX+XNtEqWVjGYraSPC6sE68sLsex0d3tYeibqCzrs0YlsCV5YXGBjfSwdiNaX89rTiAazeElnzZHnYnIg7lPGHNzYTMR7h9YPHRkpt/NxaBsaRQicYGisDBp9uVzAXr57Rp5tSE5De0TzLfSUaJRgxHKaS6h5A5acwPP4dSLd5WuOEqLsYAFGGwMkxS9PFx66CnVPJE820o81C6RFSCaYX0ciFqB+kkBw+AiHbdAe430A6nlMZUA1KywG0FfcFYBln++RCFKcKCAmbKd74N7N6UvyDNRDX3QyokUIwjlm4KreTOe8ZE0sKIA4CjT7h+e74QmG/FA88CIA+mz1l58dY+psamRDkLA0AZPjIbqUMjpD5kI4a6iOkmen504u3o3FAYdo+FbscUOG6lKk8+YL0mRoV/xArYbObxLp1x47RIMNduzEbiRopFmqVxNILDudosWLBFaF7uhGId9Dbbz4fhyeCZxGbkl0cQL+ALOZjmD4/0NgbSXXkSTPMM71RtkZl/wxHFtRdUG6P1o/Kp14FUcxw0hFTybPjS1cZRNn9bk6t54McqTr2ggl5RwPhlyWliuzPFrr7xGjUYGzPgHmE6m7wPxIq+QcOhzR65Zr10xBLGjMdIpQ5C2yQLlHiKkPaCBVcF7Wpx9W8povagVXP4dMQsBKHD9kiLnHfkJxV5QJTgeYdbAwUT4taTNoW3h3PqJrrF4qjqaWie6OueH6xpSDiIhOpBamial/SfSeXtaKaNp4eVNEggoh/25cfrPdOFZJ+GHengM4GZnx5TCPG2N10mBPxCwHkCnAtj61royeWVFofWtYAUKJZJAy+77UfeBAVGRVFmtmBFB1w/vL3svnZEBR3ansUm0MXwP5bxiguew0Q8kOS7cQF8szKLAoOfSuvGcKcDr7QN1sKb72hccoijBTO4z7Lc/lICIyXtCfVG3AQsJ9keOxbDtqsJVQMVflMGsB/UGDwrz57vbep1hBhChUzZkCA87/LlZcs7t5zGtUQUnDNZlJmrO9YR7BkuZDuGttZpLgOhSMmR2zztvqmixVJrraT2NCCHmwjKV+VhTwRdbCKH/Qanv2sOKj+7giUG/dZ1bIpr7GXvZOGmCUHEBYse3f1uiWOrJfcnhMebKYRE8VYIisJfXq/Lf64yXk9HHZqrU7voP1hzFfLYKGUlxbF7r0LWRr+5wkTCedN3RISOrH8RVtdY6bchA7Yr/vqHMiNMGuvShyFsNA+E/NiIhfU1ya88m7j0Cbay3XC6IEShoykxuoXn7TXKUaJnaecHWtwUAXv3xgqRu4EoReGsBeJ89mdJbPgVGuLnU15nvMSdFL2Ym/rzYd4RS98KJdSHl2oXoK/IgvTxmq/yYYSQhjkuUtozBs8D5+I/zrSDmgTbSl5QHosYBiY2piRg+QMHyQhlDPIVrNGE+ITDjYd1xi2TUMpoHiPONy03KSRSt8Tiq9rqGYnf1pgIWGhgqrLH6K/77nrhTIVTbRNtJu7bxlOmYxhidGOqj2QpPbiYlkUDOHWGqGn2O7K2bYrT4JHEEWbJF6bcid+EfaK37EDDBoESR0YSfWF/g34OxlbadYU0KBKE9Rdnsuk+S8UfIerEE0BEVJTyWPfOlzmufkLrBpxZ9p0D6EcGS+wHvv6b1YVwVJIKtmAsK0lwEsvL/MRETRRDaqONOcVCc0Ssn7rTxvEDXHuPl0fq20KDygyidkVnaSNi2UXGbxXCAwgKNR6EZQ6fBI88vQsWQ3gzNm59xtDlZbb/PTD8OA9s3Dhx18WAxESFpddNloay/UmgTnmEQToHPAk/FaQkN4iCzWPoxzQ7OOMHTDf2aZLgqJdP+kW2iODPbFZf+Hros5OsTJUElw5OC+1wstoedF95E6EUx3jLWC/XTXWU5SnZFByA3YXHIvmZbEqeKl27Lamjs/EEvpE12+1qiYP8ROL132yBx5iat+/KiJSPydDb6xkKAYYToh/mYhO22UfnPKJUCA4E0oNzCh0SsVvZZPqD7QzwB47pAmH9qFqWYQPInP2wpkYlrYHbPjn7q022bT1kTWuE1ZXDODzP35JJPW6IoMifR9FrNZM9v9k1OmQleho6DAZ0Yl4Pfj/g0Puc0TtUyAnFHShk5fGzJzP8Y8D8Q9NHxBSArklpEdhfxyzBeh/rssZDzXHt+nSTcwWXNHs//GiFNmQ0l8hDws9ErDaIzNbghDB51CZaEurYVCzKgaFK2oaZ7lAFLqiIk5AXFVrarwhFVOUAN2U6E4LzUlEvO7J5xBR7QDIh9oXEkip08ZKdgwb2r0AoGxIRttsh9xr1ZGjFa9kzUy9BgVJip/j792nTxGxOuJ6yAoIqEP/OOYvprIb9C7o+zmiOVNp/5Me84QoFl3y7C/7tMd1h/8PsvUDuhEu6kfmkSHZIj//f7Yi01wc8lQGhUGBerVl//+R6KiwFvVDODcBAWLEtzIz24btJhLun/PxAWg2OlmE65GkFQsdixn2J5u5Xvvgabx0UBE8F9Z6Xobi+n4v54djXUB0lhJWkf3W0PeX5XHZOGLNhr0dq9rKeA2TeYTBei3oPdLKF1YVby1xQmHQmsiKhjGoCBMiIhivTmpoTZHaqj1PQHQe6LR58j6IU6TarohkPwBdGIddYSj/bNzprlhtUMyZfROklWgNZa5gqeSNSBp6XC8fg0TtPbe+s7qDcaCuYbDyGDadijEsMvYuNsHmvudZ9RPwYXeCEx295Imb15c/9u4fWk4sNal9yoOhr9/fMviLGRWlVvcg/qGc5/KyTML5bxSqHRL5szEbSrkoj3CblFkQ3ZW2wey1XkP1DeWAxe0oGkreXgFXXuU1xKQdZwSL7RTVsRgBrH63xGkdflLQCL4QIrZam3mXJaEPLzC3s6fJGoFeFUlhrLdN2Vjz+MIfbhWbS0QHgSPG163g9ZM15iQRK6zTPpsFPVlJNFaGIj1uG7yJ3MsVnv3gbcMRBYLK8RVjoeNvERj+syRpQTebO44R0ZvSf7VZY4YHdTUlxcUWHA7jDjORFOnR0pD3UDeeeBYLHD+P2na6dHUNxkAsGPoReMYx5ZAk9+27SKNn4FnDHC0FW7dAHSyLydO1H02uAhckBHxfzX1Wb9QPK+Zwi2gSBm3GmEjJ8H7tshE9ThJ0HZ+9nuAGocCYV8Kn/aQOkBfmyktN0oAAR3mb7MpQpdkSokR5SB3OANiOxa1EgQgpHoLQLW0X2DMTP9FXnZrTIBjOpiQkeUb2qGWnrEoVdk0TfaQ6oI49vXRvpXp3iFbiHmRQleY+MWRdjLf7xQYStRi3pqrry422SnAsltFrDsQTV6SqEhMWJBEaR/DoEhegH9/p7g7cRIPaFGzzU0LfTBmAIb/YfJ0C4kMjKUNofz0UM4Eyev19aE42HFTPuTIxELjOUJCVyUBKvca5SylR6BnGC6emd9QzCDHSx2+H2rkUawnsHsZ2KaCNDtO/0q6UEN/brGSjV0IASRe4/x1+hxoZ4yPqtd8BzaASYJmxMTkVrrUciJFMznBNdeatJ476EOJVlKa1reMar7twSQx9Khvod0OFxFfpe/JijQc9l7sVh/k1BGp5h8mOtQoGZN9iEXHCvAYQj6V15Ih31mxl0RsnNcprpqW39+nTkqvwHUEWH8ShvB4exl/uDw9WjbHNEWXTAmFkY6P/FrOxiUhPfBxR3JtNUBzpMt8ojtQG2ckWDn1JcXPjII+yINh2BRQ7EnwuD4KFBZt+6s1Z8TtTKx3KvqUBnjevy+7XR/Qv3FUXoZiENEv5WAm/rGzDjBarEjAuMDEgZWxlbWVudCBpbiBzZXF1ZW5jZSBlbGVtZW50cyBpbiBzZXF1ZW5jZQAAAAEAAAAAAAAA2IcRABUAAAB1OGYzMnUzMnU2NHVzaXplZXhwbGljaXQgcGFuaWMAAEEeEABkAAAAJAkAABIAAADokhEAAQAAAOiSEQABAAAAYCBvciBgAADokhEAAQAAAECIEQAGAAAA6JIRAAEAAABvbmUgb2YgLCBib29sZWFuIGAAAGmIEQAJAAAA6JIRAAEAAABpbnRlZ2VyIGAAAACEiBEACQAAAOiSEQABAAAAY2hhcmFjdGVyIGAAoIgRAAsAAADokhEAAQAAAHN0cmluZyAAvIgRAAcAAABieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50LjAAAAAAAAAACAAAAAQAAADPAQAA0AEAANEBAABhIGJvb2xlYW51bml0YSBzdHJpbmdudWxsAAAAayEQAGIAAAByAwAAGQAAAGshEABiAAAAcwMAABoAAABrIRAAYgAAAHQDAAAZAAAAayEQAGIAAAB1AwAAGQAAAGshEABiAAAAdgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAIAAAA/gEAAP0BAAAoAAAACAAAAP8BAAD+AQAA3NcRAAACAAABAgAAAgIAAAMCAAAEAgAAAAAAAAEAAAABAAAABQIAAAAAAAABAAAAAQAAAAYCAAAFAgAAGNgRAAcCAAAIAgAACQIAAAcCAAAKAgAAlQEAAAwAAAAEAAAACwIAAJUBAAAMAAAABAAAANAAAAALAgAAVNgRALAAAADRAAAAsgAAALAAAACzAAAADAIAABgAAAAEAAAADQIAAAwCAAAYAAAABAAAAA4CAAANAgAAkNgRAA8CAAAQAgAAsgAAAA8CAACzAAAAEQIAACgAAAAEAAAA4wAAABECAAAoAAAABAAAAOQAAADjAAAAzNgRAOUAAADtAAAA5wAAAOgAAADpAAAA8AAAACQAAAAEAAAA4wAAAPAAAAAkAAAABAAAAOQAAADjAAAACNkRAOUAAADxAAAA5wAAAOgAAADpAAAAEgIAAEgAAAAIAAAAEwIAABICAABIAAAACAAAABQCAAATAgAARNkRABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAADQAAAAEAAAA4wAAABoCAAA0AAAABAAAAOQAAADjAAAAgNkRAOUAAAAbAgAA5wAAAOgAAADpAAAAHAIAACAAAAAEAAAA4wAAABwCAAAgAAAABAAAAOQAAADjAAAAvNkRAOUAAAAdAgAA5wAAAOgAAADpAAAA7gAAACQAAAAEAAAA4wAAAO4AAAAkAAAABAAAAOQAAADjAAAA+NkRAOUAAADvAAAA5wAAAOgAAADpAAAAHgIAAB8CAAAgAgAAIQIAACICAAAIAQAA/QAAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIAAP0AAAD+AAAAKQIAACoCAAArAgAAAgEAAPwAAAD9AAAA9wAAACwCAAAtAgAALgIAABcBAAD8AAAA/QAAAC8CAAAwAgAAMQIAADICAAATAQAADgEAAP0AAAAzAgAANAIAADUCAAA2AgAANwIAADgCAAD9AAAAAAAAAAQAAAAEAAAAOQIAAGNvbnRleHQAOgIAAAwAAAAEAAAAywAAAHNvdXJjZQAAOgIAAAwAAAAEAAAAygAAADoCAAAMAAAABAAAAMsAAADKAAAADNsRADsCAADNAAAAsgAAADwCAACzAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbUZhaWxlZENhbm5vdE1ha2VQcm9ncmVzc0JhZFBhcmFtQWRsZXIzMk1pc21hdGNoRmFpbGVkRG9uZU5lZWRzTW9yZUlucHV0SGFzTW9yZU91dHB1dENvbG9yQ29sb3JMYXlvdXRDb2xvcnNwYWNlQ2ljcEZvcm1hdEdlbmVyaWNGZWF0dXJlAAAAAAQAAAAEAAAAKAEAACkBAAA9AgAAU1JnYlVuc3BlY2lmaWVkUmdiTVJnYkJCdDYwMVJnYjI0MG1HZW5lcmljRmlsbVJnYjIwMjBYeXpTbXB0ZVJwNDMxU21wdGVScDQzMkluZHVzdHJ5MjIAAPYQEABPAAAAaQQAACQAAAD2EBAATwAAAM4BAAA3AAAAYXNzZXJ0aW9uIGZhaWxlZDogc2NhbGVzLnguaXNfZmluaXRlKCkgJiYgc2NhbGVzLnkuaXNfZmluaXRlKCkgJiYgc2NhbGVzLnouaXNfZmluaXRlKCkAALIFEAAXAAAA8AAAAAkAAACyBRAAFwAAAPcAAAAVAAAAsgUQABcAAAD4AAAAFwAAALIFEAAXAAAABQEAABYAAACyBRAAFwAAABIBAAAWAAAAsgUQABcAAAAfAQAAFgAAALIFEAAXAAAAGAEAACUAAACyBRAAFwAAABkBAAAkAAAAsgUQABcAAAALAQAAJQAAALIFEAAXAAAADAEAACQAAACyBRAAFwAAAP0AAAAlAAAAsgUQABcAAAD+AAAAJAAAALIFEAAXAAAA4gAAACEAAACyBRAAFwAAANgAAAAhAAAAsgUQABcAAAAqAQAAFgAAALIFEAAXAAAAJgEAABYAAACyBRAAFwAAAC4BAAAXAAAAsgUQABcAAAC6AAAAKAAAALIFEAAXAAAAvgAAAC8AAACyBRAAFwAAADYBAAARAAAAsgUQABcAAAA6AQAAEQAAALIFEAAXAAAAPgEAABEAAACyBRAAFwAAAH4BAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogdG90YWxfY292Lnh4KCkuaXNfZmluaXRlKCkgJiYgdG90YWxfY292Lnl5KCkuaXNfZmluaXRlKCkgJiYKICAgIHRvdGFsX2Nvdi56eigpLmlzX2Zpbml0ZSgpdAUQABcAAABjAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHRvdGFsX2Nvdi54eSgpLmlzX2Zpbml0ZSgpICYmIHRvdGFsX2Nvdi54eigpLmlzX2Zpbml0ZSgpICYmCiAgICB0b3RhbF9jb3YueXooKS5pc19maW5pdGUoKXQFEAAXAAAAZAEAAAkAAAB0BRAAFwAAAGgBAAAJAAAAdAUQABcAAACXAQAAFQAAAHQFEAAXAAAAmAEAABcAAAB0BRAAFwAAAKQBAAAWAAAAdAUQABcAAACxAQAAFgAAAHQFEAAXAAAAvgEAABYAAAB0BRAAFwAAALcBAAAlAAAAdAUQABcAAAC4AQAAJAAAAHQFEAAXAAAAqgEAACUAAAB0BRAAFwAAAKsBAAAkAAAAdAUQABcAAACdAQAAJQAAAHQFEAAXAAAAngEAACQAAAB0BRAAFwAAAEsBAAAlAAAAdAUQABcAAABMAQAAIQAAAHQFEAAXAAAAQgEAACEAAAB0BRAAFwAAAMkBAAAWAAAAdAUQABcAAADFAQAAFgAAAHQFEAAXAAAAzQEAABcAAAB0BRAAFwAAABQBAAAVAAAAdAUQABcAAAAYAQAAGQAAAHQFEAAXAAAA1gEAABEAAAB0BRAAFwAAANoBAAARAAAAdAUQABcAAADeAQAAEQAAAHQFEAAXAAAAGgIAAAkAAABJZGVudGl0eUJ0NzA5VXNGQ0NCdDQ3MEJHU21wdGUxNzBtU21wdGUyNDBtWUNnQ29CdDIwMjBOb25Db25zdGFudEJ0MjAyMENvbnN0YW50U21wdGUyMDg1Q2hyb21hdGljaXR5RGVyaXZlZE5vbkNvbnN0YW50Q2hyb21hdGljaXR5RGVyaXZlZENvbnN0YW50QnQyMTAwSXB0UHFDMllDZ0NvUmVZQ2dDb1JvTmFycm93UmFuZ2VGdWxsUmFuZ2WyBRAAFwAAABUCAABIAAAAsgUQABcAAAAbAgAAMAAAALIFEAAXAAAAcQIAADEAAACyBRAAFwAAAHMCAAAxAAAAsgUQABcAAAB9AgAAIwAAALIFEAAXAAAAfwIAAB4AAACyBRAAFwAAAIECAAAqAAAAsgUQABcAAAAiAgAAQgAAALIFEAAXAAAATwIAAC4AAACyBRAAFwAAAE8CAAAdAAAAsgUQABcAAABcAgAALgAAALIFEAAXAAAAXAIAAB0AAACyBRAAFwAAAGkCAAAuAAAAsgUQABcAAABpAgAAHQAAALIFEAAXAAAAOAIAAEkAAACyBRAAFwAAAAQCAAAfAAAAsgUQABcAAAAGAgAAPAAAALIFEAAXAAAABwIAAD4AAACyBRAAFwAAAAUCAAA3AAAAsgUQABcAAAADAgAAPQAAALIFEAAXAAAAMQIAAEcAAAB0BRAAFwAAABwDAABIAAAAdAUQABcAAAAiAwAAMAAAAHQFEAAXAAAAbQMAADEAAAB0BRAAFwAAAG8DAAAxAAAAdAUQABcAAAB5AwAAIwAAAHQFEAAXAAAAewMAAB4AAAB0BRAAFwAAAH0DAAAqAAAAdAUQABcAAAApAwAAQgAAAHQFEAAXAAAAVAMAABkAAAB0BRAAFwAAAFQDAAA3AAAAdAUQABcAAABdAwAAGQAAAHQFEAAXAAAAXQMAADcAAAB0BRAAFwAAAGYDAAAZAAAAdAUQABcAAABmAwAANwAAAHQFEAAXAAAAQAMAAEkAAABjZW50ZXIgYXJyYXkgdG9vIHNtYWxsOiAgPCAAtOMRABgAAADM4xEAAwAAAHQFEAAXAAAAAAMAAAkAAABvcGFjaXR5IGFycmF5IHRvbyBzbWFsbDogAAAA8OMRABkAAADM4xEAAwAAAHQFEAAXAAAAAQMAAAkAAAByZ2IgYXJyYXkgdG9vIHNtYWxsOiAAAAAs5BEAFQAAAMzjEQADAAAAdAUQABcAAAACAwAACQAAAHNjYWxlIGFycmF5IHRvbyBzbWFsbDogAGTkEQAXAAAAzOMRAAMAAAB0BRAAFwAAAAMDAAAJAAAAcXVhdCBhcnJheSB0b28gc21hbGw6IAAAnOQRABYAAADM4xEAAwAAAHQFEAAXAAAABAMAAAkAAABiYXNlICsgY291bnQgb3V0IG9mIGJvdW5kczogICsgID4gAADU5BEAHAAAAPDkEQADAAAA8+QRAAMAAAB0BRAAFwAAAAUDAAAJAAAAdAUQABcAAAALAwAAHwAAAHQFEAAXAAAADgMAAD4AAAB0BRAAFwAAAA0DAAA8AAAAdAUQABcAAAAMAwAANwAAAHQFEAAXAAAACgMAAD0AAAB0BRAAFwAAADkDAABHAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRlgOURADwAAAAVCBAAWwAAADUAAAASAAAAQnQ0NzBNTGluZWFyTG9nMTAwTG9nU3FydEllYzYxOTY2XzJfNEJ0MTM2MUJ0MjAyMF8xMGJpdEJ0MjAyMF8xMmJpdFNtcHRlMjA4NFNtcHRlNDI4QnQyMTAwSGxnAAAAAAAAAAgAAAAEAAAAPgIAAIokEABeAAAAVgEAAC4AAACKJBAAXgAAAEUBAAA2AAAAiiQQAF4AAADSBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jYXAgPj0gbGVuiiQQAF4AAACdBAAADQAAAF4VEABjAAAA8gAAAAkAAABeFRAAYwAAAP8AAAASAAAAWE1MOmNvbS5hZG9iZS54bXBSYXcgcHJvZmlsZSB0eXBlIGlwdGNSYXcgcHJvZmlsZSB0eXBlIDhiaW0AZgsQAE4AAACDBwAAEQAAANwZEAAdAAAATwEAAAkAAADcGRAAHQAAAFABAAAJAAAA3BkQAB0AAABOAQAALwAAANwZEAAdAAAAbwEAAAkAAADcGRAAHQAAAHABAAAJAAAA3BkQAB0AAABxAQAACQAAANwZEAAdAAAAcgEAAAkAAADcGRAAHQAAAG4BAAAvAAAA3BkQAB0AAACMAQAACQAAANwZEAAdAAAAjQEAAAkAAADcGRAAHQAAAI4BAAAJAAAA3BkQAB0AAACPAQAACQAAANwZEAAdAAAAiwEAAC8AAADcGRAAHQAAAJ4BAAANAAAA3BkQAB0AAADYAQAAFQAAAGZfcmVzdF8AAOgRAAcAAABwbHlJbnZhbGlkIFBMWSBoZWFkZXIAAAAT6BEAEgAAAP0AEAAUAAAAdgEAABUAAABiaW5hcnlfbGl0dGxlX2VuZGlhbjEuMFVuc3VwcG9ydGVkIFBMWSB2ZXJzaW9uOiBX6BEAGQAAAFVuc3VwcG9ydGVkIFBMWSBmb3JtYXQ6IHjoEQAYAAAAZWxlbWVudAD9ABAAFAAAAIUBAAAeAAAAcHJvcGVydHlQTFkgbGlzdCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkAAAAuOgRACUAAABQcm9wZXJ0eSBvdXRzaWRlIG9mIGVsZW1lbnQA6OgRABsAAABJbnZhbGlkIHByb3BlcnR5IGxpbmU6IAAM6REAFwAAAGVuZF9oZWFkZXIAAP0AEAAUAAAAngEAABIAAABNaXNzaW5nIFBMWSBmb3JtYXQgbGluZQBI6REAFwAAAHZlcnRleE1pc3NpbmcgdmVydGV4IGVsZW1lbnRu6REAFgAAAGNodW5rVW5zdXBwb3J0ZWQgUExZIGhlYWRlciBsaW5lOiAAAJHpEQAdAAAAeE1pc3NpbmcgeCBwcm9wZXJ0eQC56REAEgAAAHlNaXNzaW5nIHkgcHJvcGVydHkA1ekRABIAAAB6TWlzc2luZyB6IHByb3BlcnR5APHpEQASAAAAc2NhbGVfME1pc3Npbmcgc2NhbGVfMCBwcm9wZXJ0eQAT6hEAGAAAAHNjYWxlXzFNaXNzaW5nIHNjYWxlXzEgcHJvcGVydHkAO+oRABgAAABzY2FsZV8yTWlzc2luZyBzY2FsZV8yIHByb3BlcnR5AGPqEQAYAAAAcm90XzFNaXNzaW5nIHJvdF8wIHByb3BlcnR5AInqEQAWAAAAcm90XzJNaXNzaW5nIHJvdF8xIHByb3BlcnR5AK3qEQAWAAAAcm90XzNNaXNzaW5nIHJvdF8yIHByb3BlcnR5ANHqEQAWAAAAcm90XzBNaXNzaW5nIHJvdF8zIHByb3BlcnR5APXqEQAWAAAAb3BhY2l0eU1pc3Npbmcgb3BhY2l0eSBwcm9wZXJ0eQAb6xEAGAAAAGZfZGNfME1pc3NpbmcgZl9kY18wIHByb3BlcnR5AAAAQusRABcAAABmX2RjXzFNaXNzaW5nIGZfZGNfMSBwcm9wZXJ0eQAAAGrrEQAXAAAAZl9kY18yTWlzc2luZyBmX2RjXzIgcHJvcGVydHkAAACS6xEAFwAAAEludmFsaWQgbnVtYmVyIG9mIGZfcmVzdCBwcm9wZXJ0aWVzOiAAAAC06xEAJQAAAP0AEAAUAAAAggMAACgAAAD9ABAAFAAAAHADAAAoAAAA/QAQABQAAAB5AwAAKAAAAP0AEAAUAAAA/QMAACYAAAD9ABAAFAAAAP4DAAAnAAAA/QAQABQAAAAABAAAKgAAAP0AEAAUAAAABAQAACoAAAD9ABAAFAAAAAgEAAAqAAAA/QAQABQAAAAMBAAAKgAAAP0AEAAUAAAA9gMAACoAAAD9ABAAFAAAAPoDAAAqAAAA/QAQABQAAADeAwAAJgAAAP0AEAAUAAAA3wMAACcAAAD9ABAAFAAAAOEDAAAqAAAA/QAQABQAAADlAwAAKgAAAP0AEAAUAAAA6QMAACoAAAD9ABAAFAAAAO0DAAAqAAAA/QAQABQAAADXAwAAKQAAAP0AEAAUAAAA2wMAACkAAAD9ABAAFAAAACYEAAAmAAAA/QAQABQAAAAlBAAAJwAAAP0AEAAUAAAAIgQAACoAAAD9ABAAFAAAAB4EAAAqAAAA/QAQABQAAAAVBAAAKgAAAP0AEAAUAAAAKAQAACoAAAD9ABAAFAAAALcCAAAZAAAA/QAQABQAAADkAgAAHAAAAP0AEAAUAAAA5QIAABwAAAD9ABAAFAAAAOYCAAAcAAAA/QAQABQAAADnAgAAGwAAAP0AEAAUAAAA6AIAABsAAAD9ABAAFAAAAOkCAAAbAAAA/QAQABQAAADqAgAAGQAAAP0AEAAUAAAA6wIAABkAAAD9ABAAFAAAAOwCAAAZAAAA/QAQABQAAADtAgAAHQAAAP0AEAAUAAAA7gIAABoAAAD9ABAAFAAAAO8CAAAaAAAA/QAQABQAAADwAgAAGgAAAP0AEAAUAAAA8QIAABoAAABNaXNzaW5nIFBMWSBjaHVuayBmb3Igc3BsYXQgZO4RABwAAABNaXNzaW5nIGNodW5rIGVsZW1lbnQgZm9yIFN1cGVyU3BsYXQgUExZiO4RACgAAABtaW5feE1pc3NpbmcgbWluX3ggcHJvcGVydHkAve4RABYAAABtaW5feU1pc3NpbmcgbWluX3kgcHJvcGVydHkA4e4RABYAAABtaW5fek1pc3NpbmcgbWluX3ogcHJvcGVydHkABe8RABYAAABtYXhfeE1pc3NpbmcgbWF4X3ggcHJvcGVydHkAKe8RABYAAABtYXhfeU1pc3NpbmcgbWF4X3kgcHJvcGVydHkATe8RABYAAABtYXhfek1pc3NpbmcgbWF4X3ogcHJvcGVydHkAce8RABYAAABtaW5fc2NhbGVfeE1pc3NpbmcgbWluX3NjYWxlX3ggcHJvcGVydHkAm+8RABwAAABtaW5fc2NhbGVfeU1pc3NpbmcgbWluX3NjYWxlX3kgcHJvcGVydHkAy+8RABwAAABtaW5fc2NhbGVfek1pc3NpbmcgbWluX3NjYWxlX3ogcHJvcGVydHkA++8RABwAAABtYXhfc2NhbGVfeE1pc3NpbmcgbWF4X3NjYWxlX3ggcHJvcGVydHkAK/ARABwAAABtYXhfc2NhbGVfeU1pc3NpbmcgbWF4X3NjYWxlX3kgcHJvcGVydHkAW/ARABwAAABtYXhfc2NhbGVfek1pc3NpbmcgbWF4X3NjYWxlX3ogcHJvcGVydHkAi/ARABwAAABtaW5fcm1pbl9nbWluX2JtYXhfcm1heF9nbWF4X2JwYWNrZWRfcG9zaXRpb25NaXNzaW5nIHBhY2tlZF9wb3NpdGlvbiBwcm9wZXJ0eQAAAN3wEQAgAAAAcGFja2VkX3JvdGF0aW9uTWlzc2luZyBwYWNrZWRfcm90YXRpb24gcHJvcGVydHkAF/ERACAAAABwYWNrZWRfc2NhbGVNaXNzaW5nIHBhY2tlZF9zY2FsZSBwcm9wZXJ0eQAAAEzxEQAdAAAAcGFja2VkX2NvbG9yTWlzc2luZyBwYWNrZWRfY29sb3IgcHJvcGVydHkAAACA8REAHQAAAP0AEAAUAAAAPgIAADAAAAD9ABAAFAAAAEICAAAfAAAAU0ggZWxlbWVudCBjb3VudCAoKSBtdXN0IG1hdGNoIHZlcnRleCBjb3VudCAoAAAAyPERABIAAADa8REAGwAAAF4HEgABAAAATm90IGVub3VnaCBjaHVuayByZWNvcmRzOiBoYXZlICwgbmVlZCBhdCBsZWFzdCAAEPIRAB8AAAAv8hEAEAAAAP0AEAAUAAAAFgMAAD0AAAD9ABAAFAAAABYDAAAhAAAA/QAQABQAAAAQAwAAPQAAAP0AEAAUAAAAEAMAACEAAAD9ABAAFAAAAAoDAAA9AAAA/QAQABQAAAAKAwAAIQAAAP0AEAAUAAAABAMAAB8AAAD9ABAAFAAAAD8BAAAZAAAAY2hhcnVjaGFyc2hvcnR1c2hvcnRpbnRmbG9hdGRvdWJsZVVuc3VwcG9ydGVkIFBMWSBwcm9wZXJ0eSB0eXBlOiAAAADy8hEAHwAAAFYhEAAUAAAA4QMAABYAAABWIRAAFAAAAOUDAAAUAAAAViEQABQAAADlAwAAMAAAAFYhEAAUAAAAyQMAABYAAABWIRAAFAAAAM0DAAAUAAAAViEQABQAAADNAwAAMAAAAFYhEAAUAAAA6gQAABYAAABWIRAAFAAAAO4EAAAtAAAAViEQABQAAADuBAAAOgAAAFYhEAAUAAAA7gQAABQAAABWIRAAFAAAAA8FAAAWAAAAViEQABQAAAATBQAALQAAAFYhEAAUAAAAEwUAADoAAABWIRAAFAAAABMFAABLAAAAViEQABQAAAATBQAAXAAAAFYhEAAUAAAAEwUAABQAAABWIRAAFAAAAKgEAAAWAAAAViEQABQAAACsBAAAJwAAAFYhEAAUAAAArAQAABQAAABWIRAAFAAAAMAEAAAWAAAAViEQABQAAADEBAAALQAAAFYhEAAUAAAAxAQAADoAAABWIRAAFAAAAMQEAAAUAAAAViEQABQAAABvBAAAFgAAAFYhEAAUAAAAdAQAAC4AAABWIRAAFAAAAHYEAAAUAAAAViEQABQAAACNBAAAFgAAAFYhEAAUAAAAkgQAAC4AAABWIRAAFAAAAJQEAAAUAAAAViEQABQAAAD2BAAAFgAAAFYhEAAUAAAA+gQAAC0AAABWIRAAFAAAAPoEAAA6AAAAViEQABQAAAD6BAAAFAAAAFYhEAAUAAAAFQQAABYAAABWIRAAFAAAABoEAAAUAAAAViEQABQAAAAaBAAAPwAAAFYhEAAUAAAA+wMAABYAAABWIRAAFAAAAAAEAAAUAAAAViEQABQAAAAABAAAPwAAAFYhEAAUAAAA1QQAABYAAABWIRAAFAAAANgEAAA5AAAAViEQABQAAADYBAAARgAAAFYhEAAUAAAA2AQAAFcAAABWIRAAFAAAACcFAAAWAAAAViEQABQAAAArBQAALQAAAFYhEAAUAAAAKwUAADoAAABWIRAAFAAAACsFAABLAAAAViEQABQAAAArBQAAXAAAAFYhEAAUAAAAKwUAABQAAABWIRAAFAAAADsEAAAWAAAAViEQABQAAAA/BAAAGgAAAFYhEAAUAAAAPwQAABQAAABWIRAAFAAAAFQEAAAWAAAAViEQABQAAABYBAAAGwAAAFYhEAAUAAAAWAQAABQAAABJbnZhbGlkIFNIIGRlZ3JlZTogAIz2EQATAAAASW52YWxpZCBnemlwIGhlYWRlcgCo9hEAEwAAAGgHEAAVAAAATwEAABwAAABoBxAAFQAAAE8BAAA1AAAAaAcQABUAAABQAQAAHAAAAGgHEAAVAAAAUAEAADkAAABoBxAAFQAAAFEBAAAcAAAAaAcQABUAAABRAQAAOQAAAGgHEAAVAAAAWQEAAAkAAABoBxAAFQAAAFoBAAAJAAAAaAcQABUAAABbAQAACQAAAGgHEAAVAAAAiAEAACEAAABoBxAAFQAAAIkBAAAhAAAAaAcQABUAAACKAQAAIQAAAGgHEAAVAAAAjAEAAB8AAABoBxAAFQAAAJIBAAAJAAAAaAcQABUAAACTAQAACQAAAGgHEAAVAAAAlAEAAAkAAABoBxAAFQAAAJUBAAAJAAAAAQAAAAAAAAABAAAAAAAAAE1pc3NpbmcgZmlsZSAgaW4gU09HUyB6aXAAAADk9xEADQAAAPH3EQAMAAAAaAcQABUAAAC4AQAAIgAAAGgHEAAVAAAAuAEAAAkAAABoBxAAFQAAALkBAAAmAAAAaAcQABUAAAC5AQAACQAAAGgHEAAVAAAAugEAACYAAABoBxAAFQAAALoBAAAJAAAAaAcQABUAAAC7AQAAJQAAAGgHEAAVAAAAoQEAACoAAABoBxAAFQAAAKEBAAAhAAAAaAcQABUAAAChAQAACQAAAGgHEAAVAAAAogEAAC4AAABoBxAAFQAAAKIBAAAlAAAAaAcQABUAAACiAQAACQAAAGgHEAAVAAAAowEAAC4AAABoBxAAFQAAAKMBAAAlAAAAaAcQABUAAACjAQAACQAAAGgHEAAVAAAApAEAACsAAABoBxAAFQAAAPwBAAAgAAAAaAcQABUAAAD8AQAAOwAAAGgHEAAVAAAADgIAAEQAAABoBxAAFQAAAA4CAAAVAAAAaAcQABUAAAAJAgAARAAAAGgHEAAVAAAACQIAABUAAABoBxAAFQAAAAQCAABDAAAAaAcQABUAAAAEAgAAFQAAAGgHEAAVAAAA0QEAACAAAABoBxAAFQAAANEBAAA7AAAAaAcQABUAAADjAQAARAAAAGgHEAAVAAAA4wEAADUAAABoBxAAFQAAAOMBAAAVAAAAaAcQABUAAADeAQAARAAAAGgHEAAVAAAA3gEAADUAAABoBxAAFQAAAN4BAAAVAAAAaAcQABUAAADZAQAAQwAAAGgHEAAVAAAA2QEAADQAAABoBxAAFQAAANkBAAAVAAAAaAcQABUAAAB7AQAAJAAAAGgHEAAVAAAAewEAAAkAAABoBxAAFQAAAHwBAAAoAAAAaAcQABUAAAB8AQAACQAAAGgHEAAVAAAAfQEAACgAAABoBxAAFQAAAH0BAAAJAAAAaAcQABUAAABmAQAAKAAAAGgHEAAVAAAAZgEAAB8AAABoBxAAFQAAAGYBAAAJAAAAaAcQABUAAABnAQAALAAAAGgHEAAVAAAAZwEAACMAAABoBxAAFQAAAGcBAAAJAAAAaAcQABUAAABoAQAALAAAAGgHEAAVAAAAaAEAACMAAABoBxAAFQAAAGgBAAAJAAAAtwQQABcAAACgAAAADgAAALcEEAAXAAAAkAAAABQAAAC3BBAAFwAAAJcAAAATAAAAtwQQABcAAACYAAAAGQAAAERlY29tcHJlc3Npb24gZmFpbGVkOiAAAID7EQAWAAAAc3B6c3BsYXRrc3BsYXRwY3NvZ3N6aXByYWRJbnZhbGlkIGZpbGUgdHlwZTogAAAAuvsRABMAAABzb2d6aXAAAI0mEAAYAAAA9gAAABwAAACNJhAAGAAAAPYAAAAqAAAAbV3L1ixQ62N4QaZXcRuLufUrL4lkWmc6/u1yMy/njHUBAAAAAAAAAAIAAAAAAAAAAQAAAAEAAAAAAAAAIAAA6CAgICAgICAgICAgICBhdCA6AAAAUPwRAAEAAAAKOiAAAQAAAAAAAABd/BEAAgAAAAIAQfr4xwALAQQAQYT5xwALMSAAAOggLSAAAQAAAAAAAACI/BEAAwAAACAgICAgIDx1bmtub3duPgACAAAAAAAAAAIAQcD5xwALxRwgAIDg77+9AKMdEAA0AAAAZwEAADAAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt2PwRACgAAAAkAAAAAAAAAAIAAAAA/REAYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGRpZCBub3QAABj9EQBWAAAAiR0QABkAAACIAgAAEQAAAD8CAAAMAAAABAAAAEACAABBAgAAQgIAAE9zAAAAAAAABAAAAAQAAABDAgAAY29kZQAAAAABAAAAAQAAAEQCAABraW5khQEAAAwAAAAEAAAARQIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAABGAgAAAAAAAAQAAAAEAAAARwIAAEN1c3RvbWVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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",self.location.href));const A=YA();(typeof I=="string"||typeof Request=="function"&&I instanceof Request||typeof URL=="function"&&I instanceof URL)&&(I=fetch(I));const{instance:g}=await bA(await I,A);return PA(g)}const pA={sortSplats16:OA,sortSplats32:rA,loadPackedSplats:ZA,loadExtSplats:TA,tinyLodPackedSplats:nA,qualityLodPackedSplats:XA,tinyLodExtSplats:VA,qualityLodExtSplats:WA,newLodTree:lA,newSharedLodTree:jA,initLodTree:mA,disposeLodTree:eA,updateLodTrees:zA,traverseLodTrees:vA,getLodTreeLevel:uA,nextChunk:_A};async function DA(I){const{id:A,name:g,args:Q}=I.data;try{const B=pA[g];if(!B)throw new Error(`Unknown worker RPC: ${g}`);const E=await B(Q,{sendStatus:i=>{self.postMessage({id:A,status:i},{transfer:AA(i)})}});self.postMessage({id:A,result:E},{transfer:AA(E)})}catch(B){console.warn(`Worker error: ${B}`),self.postMessage({id:A,error:B},{transfer:AA(B)})}}function OA({numSplats:I,readback:A,ordering:g}){return{activeSplats:sA(I,A,g),readback:A,ordering:g}}function rA({numSplats:I,readback:A,ordering:g}){return{activeSplats:hA(I,A,g),readback:A,ordering:g}}async function u({decoder:I,fileBytes:A,url:g,requestHeader:Q,withCredentials:B,chunked:D,chunkedLength:E,sendStatus:i}){if(A)for(let G=0;G{iA=h});i({nextChunk:!0});const J=await S;if(J.length===0)break;I.push(J),o+=J.length,i({progress:{loaded:o,total:G}})}G===0&&i({progress:{loaded:o,total:o}})}else throw new Error("No url or fileBytes provided");return I.finish()}function P(I){return{numSplats:I.numSplats,packedArray:I.packed,extra:{sh1:I.sh1,sh2:I.sh2,sh3:I.sh3,sh1Codes:I.sh1Codes,sh2Codes:I.sh2Codes,sh3Codes:I.sh3Codes,lodTree:I.lodTree},splatEncoding:I.splatEncoding}}async function ZA({url:I,requestHeader:A,withCredentials:g,fileBytes:Q,fileType:B,pathName:D,chunked:E,chunkedLength:i,encoding:y,lod:o,lodBase:G,lodAbove:S,nonLod:J,sh1Codes:h,sh2Codes:L,sh3Codes:c},{sendStatus:H}){if(!o){const Y=kA(B,D??I,y,h,L,c),f=await u({decoder:Y,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:H}),p=P(f);return p.splatEncoding.lodOpacity?{lodSplats:p}:p}const s=oA(B,D??I,y),F=await u({decoder:s,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:H});if(F.has_lod())return{lodSplats:P(F.to_packedsplats_lod())};if(S!==void 0&&F.len() ${F.len()} (${e} ms)`);const K=F.to_packedsplats_lod();return N.lodSplats=P(K),N}function b(I){return{numSplats:I.numSplats,extArrays:[I.ext0,I.ext1],extra:{sh1:I.sh1,sh2:I.sh2,sh3a:I.sh3a,sh3b:I.sh3b,sh1Codes:I.sh1Codes,sh2Codes:I.sh2Codes,sh3Codes:I.sh3Codes,lodTree:I.lodTree}}}async function TA({url:I,requestHeader:A,withCredentials:g,fileBytes:Q,fileType:B,pathName:D,chunked:E,chunkedLength:i,lod:y,lodBase:o,lodAbove:G,nonLod:S,sh1Codes:J,sh2Codes:h,sh3Codes:L},{sendStatus:c}){if(!y){const K=yA(B,D??I,J,h,L),Y=await u({decoder:K,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:c}),f=b(Y);return f.extra.lodTree?{lodSplats:f}:f}const H=RA(B,D??I),s=await u({decoder:H,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:c});if(s.has_lod())return{lodSplats:b(s.to_extsplats_lod())};if(G!==void 0&&s.len() ${s.len()} (${m} ms)`);const e=s.to_extsplats_lod();return F.lodSplats=b(e),F}async function nA({numSplats:I,packedArray:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.5)),i=performance.now(),o=HA(I,A,g,E,!1,B,D),G=performance.now()-i,S=P(o);return console.log(`Tiny LoD: ${I} -> ${S.numSplats} (${G} ms)`),S}async function XA({numSplats:I,packedArray:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.75)),i=performance.now(),y=GA(I,A,g,E,B,D),o=performance.now()-i,G=P(y);return console.log(`Bhatt LoD: ${I} -> ${G.numSplats} (${o} ms)`),G}async function VA({numSplats:I,extArrays:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.5)),i=performance.now(),o=UA(I,A[0],A[1],g,E,!1,B),G=performance.now()-i,S=b(o);return console.log(`Tiny LoD: ${I} -> ${S.numSplats} (${G} ms)`),S}async function WA({numSplats:I,extArrays:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.75)),i=performance.now(),y=wA(I,A[0],A[1],g,E,B),o=performance.now()-i,G=b(y);return console.log(`Bhatt LoD: ${I} -> ${G.numSplats} (${o} ms)`),G}function lA({capacity:I}){const{lodId:A}=JA(I);return{lodId:A}}function jA({lodId:I}){const{lodId:A}=MA(I);return{lodId:A}}function mA({numSplats:I,lodTree:A}){const{lodId:g,chunkToPage:Q}=SA(I,A);return{lodId:g,chunkToPage:Q}}function eA({lodId:I}){FA(I)}function zA({ranges:I}){const A=new Uint32Array(I.map(({lodId:E})=>E)),g=new Uint32Array(I.map(({pageBase:E})=>E)),Q=new Uint32Array(I.map(({chunkBase:E})=>E)),B=new Uint32Array(I.map(({count:E})=>E)),D=I.map(({lodTreeData:E})=>E);cA(A,g,Q,B,D)}function vA({maxSplats:I,pixelScaleLimit:A,lastPixelLimit:g,instances:Q}){const B=Object.entries(Q),D=new Uint32Array(B.map(([F,N])=>N.lodId)),E=new Uint32Array(B.map(([F,N])=>N.rootPage??4294967295)),i=new Float32Array(B.flatMap(([F,N])=>{if(N.viewToObjectCols.length!==16)throw new Error("Incorrect array size for viewToObjectCols");return N.viewToObjectCols})),y=new Float32Array(B.map(([F,N])=>N.lodScale)),o=new Float32Array(B.map(([F,N])=>N.behindFoveate)),G=new Float32Array(B.map(([F,N])=>N.coneFov0)),S=new Float32Array(B.map(([F,N])=>N.coneFov)),J=new Float32Array(B.map(([F,N])=>N.coneFoveate)),h=LA(I,A,g,D,E,i,y,o,J,G,S),{instanceIndices:L,chunks:c,pixelLimit:H}=h;return{keyIndices:B.reduce((F,[N,d],x)=>(F[N]=L[x],F),{}),chunks:c,pixelLimit:H}}function uA({lodId:I,level:A}){return NA(I,A)}let iA=I=>{};async function _A({chunk:I}){iA(I)}function AA(I){const A=[],g=new Set;function Q(B){B&&typeof B=="object"&&!g.has(B)&&(g.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(Q):Object.values(B).forEach(Q))}return Q(I),A}async function $A(){const I=[],A=g=>{I.push(g)};self.addEventListener("message",A),await fA(),self.removeEventListener("message",A),self.addEventListener("message",DA);for(const g of I)DA(g);I.length=0}$A().catch(console.error)})();\n//# sourceMappingURL=worker-C9LcsNvD.js.map\n',xB=typeof self<"u"&&self.Blob&&new Blob([PC],{type:"text/javascript;charset=utf-8"});function Ws(Q){let A;try{if(A=xB&&(self.URL||self.webkitURL).createObjectURL(xB),!A)throw"";const I=new Worker(A,{name:Q==null?void 0:Q.name});return I.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),I}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(PC),{name:Q==null?void 0:Q.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}const BQ=class BQ{constructor(){this.queue=null,this.messages={},this.worker=new Ws,this.worker.onmessage=A=>this.onMessage(A)}onMessage(A){var D;const{id:I,result:g,error:B,status:C}=A.data,E=this.messages[I];E&&(B!==void 0?(delete this.messages[I],E.reject(B)):C!==void 0?(D=E.onStatus)==null||D.call(E,C):(delete this.messages[I],E.resolve(g)))}tryExclusive(A){return this.queue==null?this.exclusive(A):null}async exclusive(A){const I=this.queue;I!=null?await new Promise(g=>{I.push(()=>g(void 0))}):this.queue=[];try{return await A(this)}finally{this.queue!=null&&(this.queue.length===0?this.queue=null:this.queue.shift()())}}async call(A,I,g={}){const B=++BQ.currentId,C=new Promise((E,D)=>{this.messages[B]={resolve:E,reject:D,onStatus:g.onStatus}});return this.worker.postMessage({id:B,name:A,args:I},{transfer:EB(I)}),await C}dispose(){this.worker.terminate();const A=Object.values(this.messages);this.messages={};for(const I of A)I.reject(new Error("Worker terminate"))}};BQ.currentId=0;let Mg=BQ;class js{constructor(A=4){this.numWorkers=0,this.freelist=[],this.queue=[],this.maxWorkers=A}async withWorker(A){const I=await this.allocWorker();try{return await A(I)}finally{this.freeWorker(I)}}async allocWorker(){const A=this.freelist.pop();if(A)return A;if(this.numWorkers{this.queue.push(I)})}freeWorker(A){if(this.numWorkers>this.maxWorkers){this.numWorkers-=1;return}const I=this.queue.shift();if(I){I(A);return}this.freelist.push(A)}}const oQ=new js,Z={type:"Gsplat"},rA={type:"CovSplat"},qg={type:"PackedSplats"},sB={type:"ExtSplats"},uC={type:"CovSplats"},vs=Q=>new mC({packedSplats:Q}),$I=(Q,A)=>new VC({packedSplats:Q,index:A}),TC=(Q,A,I,g)=>new XC({packedSplats:Q,index:A,base:I,count:g}),zs=Q=>new WC({extSplats:Q}),OC=(Q,A)=>new jC({extSplats:Q,index:A}),_s=Q=>new vC({covsplats:Q}),$s=(Q,A)=>new zC({covSplats:Q,index:A}),$g=Q=>new _C({gsplat:Q}),OA=Q=>new $C({gsplat:Q}),EI=({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:D,opacity:i,x:w,y:s,z:o,r:y,g:h,b:k})=>new AE({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:D,opacity:i,x:w,y:s,z:o,r:y,g:h,b:k}),PQ=Q=>new gE({gsplat:Q}),GB=(Q,{scale:A,rotate:I,translate:g,recolor:B})=>new QE({gsplat:Q,scale:A,rotate:I,translate:g,recolor:B}),yB=Q=>new EE({index:Q}),uQ=Q=>new DE({index:Q}),LA=oA(` +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const RA=require("three"),_Q=require("three/addons/postprocessing/Pass.js");function ys(Q){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(Q){for(const I in Q)if(I!=="default"){const g=Object.getOwnPropertyDescriptor(Q,I);Object.defineProperty(A,I,g.get?g:{enumerable:!0,get:()=>Q[I]})}}return A.default=Q,Object.freeze(A)}const a=ys(RA),fA=-12,uA=9,cs=Math.exp(fA),Ss=Math.exp(uA),OB=-30,xI=Math.exp(OB),$Q=11,AB=11,ZB=11,Fs=$Q+AB,b=1<<$Q,XA=1<(Q.PLY="ply",Q.SPZ="spz",Q.SPLAT="splat",Q.KSPLAT="ksplat",Q.PCSOGS="pcsogs",Q.PCSOGSZIP="pcsogszip",Q.RAD="rad",Q))(MA||{});const BQ={rgbMin:0,rgbMax:1,lnScaleMin:fA,lnScaleMax:uA,sh1Max:1,sh2Max:1,sh3Max:1,lodOpacity:!1},Js=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_SPLAT_ENCODING:BQ,LN_SCALE_MAX:uA,LN_SCALE_MIN:fA,LN_SCALE_ZERO:OB,SCALE_MAX:Ss,SCALE_MIN:cs,SCALE_ZERO:xI,SPLAT_TEX_DEPTH:vB,SPLAT_TEX_DEPTH_BITS:ZB,SPLAT_TEX_DEPTH_MASK:es,SPLAT_TEX_HEIGHT:XA,SPLAT_TEX_HEIGHT_BITS:AB,SPLAT_TEX_HEIGHT_MASK:ks,SPLAT_TEX_LAYER_BITS:Fs,SPLAT_TEX_MIN_HEIGHT:IB,SPLAT_TEX_WIDTH:b,SPLAT_TEX_WIDTH_BITS:$Q,SPLAT_TEX_WIDTH_MASK:Rs,SplatFileType:MA,USE_COMPILED_PARSER_FUNCTION:Ms,WASM_SPLAT_SORT:Ns},Symbol.toStringTag,{value:"Module"}));function fI(Q){return Q==="bool"||Q==="bvec2"||Q==="bvec3"||Q==="bvec4"}function uI(Q){return Q==="int"||Q==="uint"||Q==="float"}function lA(Q){return Q==="int"||Q==="ivec2"||Q==="ivec3"||Q==="ivec4"}function xA(Q){return Q==="uint"||Q==="uvec2"||Q==="uvec3"||Q==="uvec4"}function Hg(Q){return Q==="float"||Q==="vec2"||Q==="vec3"||Q==="vec4"}function XB(Q){return Q==="mat2"||Q==="mat2x2"||Q==="mat2x3"||Q==="mat2x4"||Q==="mat3"||Q==="mat3x2"||Q==="mat3x3"||Q==="mat3x4"||Q==="mat4"||Q==="mat4x2"||Q==="mat4x3"||Q==="mat4x4"}function UI(Q){return Hg(Q)||XB(Q)}function $I(Q){return Q==="vec2"||Q==="ivec2"||Q==="uvec2"}function Ag(Q){return Q==="vec3"||Q==="ivec3"||Q==="uvec3"}function Kg(Q){return Q==="vec4"||Q==="ivec4"||Q==="uvec4"}function Us(Q){return $I(Q)||Ag(Q)||Kg(Q)}function KI(Q){return Q==="mat2"||Q==="mat2x2"}function rI(Q){return Q==="mat3"||Q==="mat3x3"}function YI(Q){return Q==="mat4"||Q==="mat4x4"}function VB(Q){switch(Q){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${Q}`)}}function WB(Q){switch(Q){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${Q}`)}}function Ls(Q){if(uI(Q))return"float";if($I(Q))return"vec2";if(Ag(Q))return"vec3";if(Kg(Q))return"vec4";throw new Error(`Invalid vector type: ${Q}`)}function jB(Q){if(uI(Q))return"uint";if($I(Q))return"uvec2";if(Ag(Q))return"uvec3";if(Kg(Q))return"uvec4";throw new Error(`Invalid vector type: ${Q}`)}function ns(Q){if(uI(Q))return"int";if($I(Q))return"ivec2";if(Ag(Q))return"ivec3";if(Kg(Q))return"ivec4";throw new Error(`Invalid vector type: ${Q}`)}function zB(Q){if(typeof Q=="string")return Q;if(typeof Q=="object"&&Q.type)return Q.type;throw new Error(`Invalid DynoType: ${String(Q)}`)}function kA(Q){return Math.trunc(Q).toString()}function eA(Q){return`${Math.max(0,Math.trunc(Q)).toString()}u`}function AA(Q){return Q===Number.POSITIVE_INFINITY?"INFINITY":Q===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(Q)?Q.toFixed(1):Q.toString()}function CA(Q){return Q instanceof JI?Q.type:Q.dynoOut().type}class JI{constructor(A){this.__isDynoValue=!0,this.type=A}}class Z extends JI{constructor(A,I){super(A.outTypes[I]),this.dyno=A,this.key=I}}class ZI extends JI{constructor(A,I){super(A),this.literal=I}getLiteral(){return this.literal}}function Vg(Q,A){return new ZI(Q,A)}class _B extends ZI{constructor(A,I){super(A,""),this.value=I}getLiteral(){const{type:A,value:I}=this;switch(A){case"bool":return I?"true":"false";case"uint":return eA(I);case"int":return kA(I);case"float":return AA(I);case"bvec2":{const g=I;return`bvec2(${g[0]}, ${g[1]})`}case"uvec2":{if(I instanceof a.Vector2)return`uvec2(${eA(I.x)}, ${eA(I.y)})`;const g=I;return`uvec2(${eA(g[0])}, ${eA(g[1])})`}case"ivec2":{if(I instanceof a.Vector2)return`ivec2(${kA(I.x)}, ${kA(I.y)})`;const g=I;return`ivec2(${kA(g[0])}, ${kA(g[1])})`}case"vec2":{if(I instanceof a.Vector2)return`vec2(${AA(I.x)}, ${AA(I.y)})`;const g=I;return`vec2(${AA(g[0])}, ${AA(g[1])})`}case"bvec3":{const g=I;return`bvec3(${g[0]}, ${g[1]}, ${g[2]})`}case"uvec3":{if(I instanceof a.Vector3)return`uvec3(${eA(I.x)}, ${eA(I.y)}, ${eA(I.z)})`;const g=I;return`uvec3(${eA(g[0])}, ${eA(g[1])}, ${eA(g[2])})`}case"ivec3":{if(I instanceof a.Vector3)return`ivec3(${kA(I.x)}, ${kA(I.y)}, ${kA(I.z)})`;const g=I;return`ivec3(${kA(g[0])}, ${kA(g[1])}, ${kA(g[2])})`}case"vec3":{if(I instanceof a.Vector3)return`vec3(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)})`;const g=I;return`vec3(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])})`}case"bvec4":{const g=I;return`bvec4(${g[0]}, ${g[1]}, ${g[2]}, ${g[3]})`}case"uvec4":{if(I instanceof a.Vector4)return`uvec4(${eA(I.x)}, ${eA(I.y)}, ${eA(I.z)}, ${eA(I.w)})`;const g=I;return`uvec4(${eA(g[0])}, ${eA(g[1])}, ${eA(g[2])}, ${eA(g[3])})`}case"ivec4":{if(I instanceof a.Vector4)return`ivec4(${kA(I.x)}, ${kA(I.y)}, ${kA(I.z)}, ${kA(I.w)})`;const g=I;return`ivec4(${kA(g[0])}, ${kA(g[1])}, ${kA(g[2])}, ${kA(g[3])})`}case"vec4":{if(I instanceof a.Vector4)return`vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`;if(I instanceof a.Quaternion)return`vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`;const g=I;return`vec4(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])}, ${AA(g[3])})`}case"mat2":case"mat2x2":{const g=I,B=g instanceof a.Matrix2?g.elements:I,C=new Array(4).fill(0).map((E,i)=>AA(B[i]));return`${A}(${C.join(", ")})`}case"mat2x3":{const g=I,B=new Array(6).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat2x4":{const g=I,B=new Array(8).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat3":case"mat3x3":{const g=I,B=g instanceof a.Matrix3?g.elements:I,C=new Array(9).fill(0).map((E,i)=>AA(B[i]));return`${A}(${C.join(", ")})`}case"mat3x2":{const g=I,B=new Array(6).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat3x4":{const g=I,B=new Array(12).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat4":case"mat4x4":{const g=I,B=g instanceof a.Matrix4?g.elements:I,C=new Array(16).fill(0).map((E,i)=>AA(B[i]));return`${A}(${C.join(", ")})`}case"mat4x2":{const g=I,B=new Array(8).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}case"mat4x3":{const g=I,B=new Array(12).fill(0).map((C,E)=>AA(g[E]));return`${A}(${B.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function IA(Q,A){return new _B(Q,A)}function Eg(Q){const A=String(Q);if(fI(Q))return`${A}(false)`;if(UI(Q))return`${A}(0.0)`;if(lA(Q))return`${A}(0)`;if(xA(Q))return`${A}(0u)`;throw new Error(`Type not implemented: ${A}`)}function Hs(Q){const A=String(Q);if(fI(Q))return`${A}(true)`;if(UI(Q))return`${A}(1.0)`;if(lA(Q))return`${A}(1)`;if(xA(Q))return`${A}(1u)`;throw new Error(`Type not implemented: ${A}`)}function Ks(Q){const A=String(Q);if(fI(Q))return`${A}(true)`;if(UI(Q))return`${A}(-1.0)`;if(lA(Q))return`${A}(-1)`;if(xA(Q))return`${A}(0xFFFFFFFFu)`;throw new Error(`Type not implemented: ${A}`)}const HB=" ";class $B{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=HB,this.indent=A??HB}nextSequence(){return this.sequence++}}class l{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,statements:E,generate:i}){this.inTypes=A??{},this.outTypes=I??{},this.inputs=g??{},this.update=B,this.globals=C,this.statements=E,this.generate=i??(({inputs:o,outputs:D,compile:w})=>{var s,t;return{globals:(s=this.globals)==null?void 0:s.call(this,{inputs:o,outputs:D,compile:w}),statements:(t=this.statements)==null?void 0:t.call(this,{inputs:o,outputs:D,compile:w})}})}get outputs(){const A={};for(const I in this.outTypes)A[I]=new Z(this,I);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:I,compile:g}){const B=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})`],C=[];for(const D in I){const w=I[D];w&&!g.declares.has(w)&&(g.declares.add(w),C.push(D))}const{globals:E,statements:i,uniforms:o}=this.generate({inputs:A,outputs:I,compile:g});for(const D of E??[])g.globals.add(D);for(const D in o)g.uniforms[D]=o[D];this.update&&g.updaters.push(this.update);for(const D of C){const w=I[D];w&&(g.uniforms[w]||B.push(`${QB(w,this.outTypes[D])};`))}return i!=null&&i.length&&(B.push("{"),B.push(...i.map(D=>g.indent+D)),B.push("}")),B}}class aI extends l{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,construct:E}){super({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,generate:i=>this.generateBlock(i)}),this.construct=E}generateBlock({inputs:A,outputs:I,compile:g}){var c,h;const B={},C={};for(const y in A)A[y]!=null&&(B[y]=new ZI(this.inTypes[y],A[y]));for(const y in I)I[y]!=null&&(C[y]=new JI(this.outTypes[y]));const E={roots:[]},i=this.construct(B,C,E);for(const y of((c=this.globals)==null?void 0:c.call(this,{inputs:A,outputs:I,compile:g}))??[])g.globals.add(y);const o=[],D=new Map;function w(y,S,F){let e=D.get(y);if(!e){e={sequence:g.nextSequence(),outNames:new Map,newOuts:new Set},D.set(y,e);for(const k in y.inputs){let R=y.inputs[k];for(;R;){if(R instanceof JI){R instanceof Z&&w(R.dyno,R.key);break}if(typeof R.dynoOut!="function")throw new Error(`dynoOut is not a function for ${R.constructor.name}`);R=R.dynoOut()}}o.push(y)}S&&(F||e.newOuts.add(S),e.outNames.set(S,F??`${S}_${e.sequence}`))}for(const y of E.roots)w(y);for(const y in C){let S=(i==null?void 0:i[y])??C[y];for(;S;){if(S instanceof JI){S instanceof Z&&w(S.dyno,S.key,I[y]);break}S=S.dynoOut()}C[y]=S}const s=[];for(const y of o){const S={},F={};for(const R in y.inputs){let N=y.inputs[R];for(;N;){if(N instanceof JI){if(N instanceof ZI)S[R]=N.getLiteral();else if(N instanceof Z){const U=(h=D.get(N.dyno))==null?void 0:h.outNames.get(N.key);if(!U)throw new Error(`Source not found for ${N.dyno.constructor.name}.${N.key}`);S[R]=U}break}N=N.dynoOut()}}const e=D.get(y)??{outNames:new Map};for(const[R,N]of e.outNames.entries())F[R]=N;const k=y.compile({inputs:S,outputs:F,compile:g});s.push(k)}const t=[];for(const y in I)C[y]instanceof ZI&&t.push(`${I[y]} = ${C[y].getLiteral()};`);return t.length>0&&s.push(t),{statements:s.flatMap((y,S)=>S===0?y:["",...y])}}}function HA(Q,A,I,{update:g,globals:B}={}){return new aI({inTypes:Q,outTypes:A,construct:I,update:g,globals:B})}function gB({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E}){return new l({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E})}function QB(Q,A,I){const g=typeof A=="string"?A:A.type;if(!g)throw new Error(`Invalid DynoType: ${String(A)}`);return`${g} ${Q}${I!=null?`[${I}]`:""}`}function z(Q){var C;let A=!1;const I=Q.split(` +`).map(E=>{const i=E.trimEnd();return A?i:i.length>0?(A=!0,i):null}).filter(E=>E!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(C=I[0].match(/^\s*/))==null?void 0:C[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(E=>E.replace(B,""))}function wA(Q){return z(Q).join(` +`)}class r extends l{constructor({a:A,outKey:I,outTypeFunc:g}){const B={a:CA(A)},C=g(CA(A)),E={[I]:C};super({inTypes:B,outTypes:E,inputs:{a:A}}),this.outKey=I}dynoOut(){return new Z(this,this.outKey)}}class DA extends l{constructor({a:A,b:I,outKey:g,outTypeFunc:B}){const C={a:CA(A),b:CA(I)},E=B(CA(A),CA(I)),i={[g]:E};super({inTypes:C,outTypes:i,inputs:{a:A,b:I}}),this.outKey=g}dynoOut(){return new Z(this,this.outKey)}}class bI extends l{constructor({a:A,b:I,c:g,outKey:B,outTypeFunc:C}){const E={a:CA(A),b:CA(I),c:CA(g)},i=C(CA(A),CA(I),CA(g)),o={[B]:i};super({inTypes:E,outTypes:o,inputs:{a:A,b:I,c:g}}),this.outKey=B}dynoOut(){return new Z(this,this.outKey)}}const V={type:"Gsplat"},rA={type:"CovSplat"},CQ={type:"PackedSplats"},BB={type:"ExtSplats"},AC={type:"CovSplats"},rs=Q=>new CC({packedSplats:Q}),IC=(Q,A)=>new iC({packedSplats:Q,index:A}),gC=(Q,A,I,g)=>new DC({packedSplats:Q,index:A,base:I,count:g}),Ys=Q=>new oC({extSplats:Q}),QC=(Q,A)=>new sC({extSplats:Q,index:A}),ds=Q=>new wC({covsplats:Q}),ls=(Q,A)=>new aC({covSplats:Q,index:A}),Wg=Q=>new tC({gsplat:Q}),mA=Q=>new GC({gsplat:Q}),CI=({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:i,opacity:o,x:D,y:w,z:s,r:t,g:G,b:c})=>new hC({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:i,opacity:o,x:D,y:w,z:s,r:t,g:G,b:c}),YQ=Q=>new cC({gsplat:Q}),BC=(Q,{scale:A,rotate:I,translate:g,recolor:B})=>new SC({gsplat:Q,scale:A,rotate:I,translate:g,recolor:B}),CB=Q=>new kC({index:Q}),dQ=Q=>new eC({index:Q}),JA=wA(` struct Gsplat { vec3 center; uint flags; @@ -22,7 +14,7 @@ bool isGsplatActive(uint flags) { return (flags & GSPLAT_FLAG_ACTIVE) != 0u; } -`),KI=oA(` +`),nI=wA(` struct CovSplat { vec3 center; uint flags; @@ -35,14 +27,14 @@ bool isCovSplatActive(uint flags) { return (flags & GSPLAT_FLAG_ACTIVE) != 0u; } -`),sQ=oA(` +`),EQ=wA(` struct PackedSplats { usampler2DArray textureArray; int numSplats; vec4 rgbMinMaxLnScaleMinMax; bool lodOpacity; }; -`);class mC extends e{constructor({packedSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const ZC=oA(` +`);class CC extends r{constructor({packedSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const EC=wA(` bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { if ((index >= 0) && (index < numSplats)) { uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); @@ -52,31 +44,31 @@ return false; } } -`);class VC extends d{constructor({packedSplats:A,index:I}){super({inTypes:{packedSplats:qg,index:"int"},outTypes:{gsplat:Z},inputs:{packedSplats:A,index:I},globals:()=>[LA,sQ,ZC],statements:({inputs:g,outputs:B})=>{const{gsplat:C}=B;if(!C)return[];const{packedSplats:E,index:D}=g;let i;return E&&D?i=z(` +`);class iC extends l{constructor({packedSplats:A,index:I}){super({inTypes:{packedSplats:CQ,index:"int"},outTypes:{gsplat:V},inputs:{packedSplats:A,index:I},globals:()=>[JA,EQ,EC],statements:({inputs:g,outputs:B})=>{const{gsplat:C}=B;if(!C)return[];const{packedSplats:E,index:i}=g;let o;return E&&i?o=z(` ${C}.flags = 0u; - if (readPackedArray(${E}.textureArray, ${E}.numSplats, ${E}.rgbMinMaxLnScaleMinMax, ${D}, ${C})) { + if (readPackedArray(${E}.textureArray, ${E}.numSplats, ${E}.rgbMinMaxLnScaleMinMax, ${i}, ${C})) { if (${E}.lodOpacity) { ${C}.rgba.a = 2.0 * ${C}.rgba.a; } bool zeroSize = all(equal(${C}.scales, vec3(0.0, 0.0, 0.0))); ${C}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; } - `):i=[`${C}.flags = 0u;`],i.push(`${C}.index = ${D??"0"};`),i}})}dynoOut(){return new V(this,"gsplat")}}class XC extends d{constructor({packedSplats:A,index:I,base:g,count:B}){super({inTypes:{packedSplats:qg,index:"int",base:"int",count:"int"},outTypes:{gsplat:Z},inputs:{packedSplats:A,index:I,base:g,count:B},globals:()=>[LA,sQ,ZC],statements:({inputs:C,outputs:E})=>{const{gsplat:D}=E;if(!D)return[];const{packedSplats:i,index:w,base:s,count:o}=C;let y;return i&&w&&s&&o?y=z(` - ${D}.flags = 0u; - if (readPackedArray(${i}.textureArray, ${i}.numSplats, ${i}.rgbMinMaxLnScaleMinMax, ${w}, ${D})) { - if (${i}.lodOpacity) { - ${D}.rgba.a = 2.0 * ${D}.rgba.a; + `):o=[`${C}.flags = 0u;`],o.push(`${C}.index = ${i??"0"};`),o}})}dynoOut(){return new Z(this,"gsplat")}}class DC extends l{constructor({packedSplats:A,index:I,base:g,count:B}){super({inTypes:{packedSplats:CQ,index:"int",base:"int",count:"int"},outTypes:{gsplat:V},inputs:{packedSplats:A,index:I,base:g,count:B},globals:()=>[JA,EQ,EC],statements:({inputs:C,outputs:E})=>{const{gsplat:i}=E;if(!i)return[];const{packedSplats:o,index:D,base:w,count:s}=C;let t;return o&&D&&w&&s?t=z(` + ${i}.flags = 0u; + if (readPackedArray(${o}.textureArray, ${o}.numSplats, ${o}.rgbMinMaxLnScaleMinMax, ${D}, ${i})) { + if (${o}.lodOpacity) { + ${i}.rgba.a = 2.0 * ${i}.rgba.a; } - bool zeroSize = all(equal(${D}.scales, vec3(0.0, 0.0, 0.0))); - ${D}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + bool zeroSize = all(equal(${i}.scales, vec3(0.0, 0.0, 0.0))); + ${i}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; } - `):y=[`${D}.flags = 0u;`],y.push(`${D}.index = ${w??"0"};`),y}})}dynoOut(){return new V(this,"gsplat")}}const hB=oA(` + `):t=[`${i}.flags = 0u;`],t.push(`${i}.index = ${D??"0"};`),t}})}dynoOut(){return new Z(this,"gsplat")}}const EB=wA(` struct ExtSplats { usampler2DArray textureArray1; usampler2DArray textureArray2; int numSplats; }; -`);class WC extends e{constructor({extSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const AG=oA(` +`);class oC extends r{constructor({extSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const xs=wA(` void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { gsplat.flags = 0u; if ((index >= 0) && (index < numSplats)) { @@ -88,9 +80,9 @@ gsplat.index = index; } } -`);class jC extends d{constructor({extSplats:A,index:I}){super({inTypes:{extSplats:sB,index:"int"},outTypes:{gsplat:Z},inputs:{extSplats:A,index:I},globals:()=>[LA,hB,AG],statements:({inputs:g,outputs:B})=>{const{gsplat:C}=B;if(!C)return[`${C}.flags = 0u;`];const{extSplats:E,index:D}=g;return E&&D?z(` - readExtArrays(${E}.textureArray1, ${E}.textureArray2, ${E}.numSplats, ${D}, ${C}); - `):[`${C}.flags = 0u;`]}})}dynoOut(){return new V(this,"gsplat")}}class vC extends e{constructor({covsplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const IG=oA(` +`);class sC extends l{constructor({extSplats:A,index:I}){super({inTypes:{extSplats:BB,index:"int"},outTypes:{gsplat:V},inputs:{extSplats:A,index:I},globals:()=>[JA,EB,xs],statements:({inputs:g,outputs:B})=>{const{gsplat:C}=B;if(!C)return[`${C}.flags = 0u;`];const{extSplats:E,index:i}=g;return E&&i?z(` + readExtArrays(${E}.textureArray1, ${E}.textureArray2, ${E}.numSplats, ${i}, ${C}); + `):[`${C}.flags = 0u;`]}})}dynoOut(){return new Z(this,"gsplat")}}class wC extends r{constructor({covsplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const qs=wA(` void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { covsplat.flags = 0u; if ((index >= 0) && (index < numSplats)) { @@ -102,9 +94,9 @@ gsplat.index = index; } } -`);class zC extends d{constructor({covSplats:A,index:I}){super({inTypes:{covSplats:uC,index:"int"},outTypes:{covsplat:rA},inputs:{covSplats:A,index:I},globals:()=>[LA,KI,IG],statements:({inputs:g,outputs:B})=>{const{covsplat:C}=B;if(!C)return[`${C}.flags = 0u;`];const{covSplats:E,index:D}=g;return E&&D?z(` - readCovArrays(${E}.textureArray, ${E}.numSplats, ${D}, ${C}); - `):[`${C}.flags = 0u;`]}})}dynoOut(){return new V(this,"covsplat")}}class _C extends d{constructor({gsplat:A}){super({inTypes:{gsplat:Z},outTypes:{covsplat:rA},inputs:{gsplat:A},globals:()=>[LA,KI],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{covsplat:C}=g;return B?z(` +`);class aC extends l{constructor({covSplats:A,index:I}){super({inTypes:{covSplats:AC,index:"int"},outTypes:{covsplat:rA},inputs:{covSplats:A,index:I},globals:()=>[JA,nI,qs],statements:({inputs:g,outputs:B})=>{const{covsplat:C}=B;if(!C)return[`${C}.flags = 0u;`];const{covSplats:E,index:i}=g;return E&&i?z(` + readCovArrays(${E}.textureArray, ${E}.numSplats, ${i}, ${C}); + `):[`${C}.flags = 0u;`]}})}dynoOut(){return new Z(this,"covsplat")}}class tC extends l{constructor({gsplat:A}){super({inTypes:{gsplat:V},outTypes:{covsplat:rA},inputs:{gsplat:A},globals:()=>[JA,nI],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{covsplat:C}=g;return B?z(` ${C}.flags = 0u; if (isGsplatActive(${B}.flags)) { ${C}.flags = ${B}.flags; @@ -116,7 +108,7 @@ ${C}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); ${C}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); } - `):[`${C}.flags = 0u;`]}})}dynoOut(){return new V(this,"covsplat")}}class $C extends d{constructor({gsplat:A}){super({inTypes:{gsplat:Z},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[LA],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{flags:C,active:E,index:D,center:i,scales:w,quaternion:s,rgba:o,rgb:y,opacity:h,x:k,y:R,z:F,r:a,g:S,b:M}=g;return[C?`${C} = ${B?`${B}.flags`:"0u"};`:null,E?`${E} = isGsplatActive(${B?`${B}.flags`:"0u"});`:null,D?`${D} = ${B?`${B}.index`:"0"};`:null,i?`${i} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,w?`${w} = ${B?`${B}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,s?`${s} = ${B?`${B}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,o?`${o} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,y?`${y} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,h?`${h} = ${B?`${B}.rgba.a`:"0.0"};`:null,k?`${k} = ${B?`${B}.center.x`:"0.0"};`:null,R?`${R} = ${B?`${B}.center.y`:"0.0"};`:null,F?`${F} = ${B?`${B}.center.z`:"0.0"};`:null,a?`${a} = ${B?`${B}.rgba.r`:"0.0"};`:null,S?`${S} = ${B?`${B}.rgba.g`:"0.0"};`:null,M?`${M} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class AE extends d{constructor({gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:D,rgb:i,opacity:w,x:s,y:o,z:y,r:h,g:k,b:R}){super({inTypes:{gsplat:Z,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:Z},inputs:{gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:D,rgb:i,opacity:w,x:s,y:o,z:y,r:h,g:k,b:R},globals:()=>[LA],statements:({inputs:F,outputs:a})=>{const{gsplat:S}=a;if(!S)return[];const{gsplat:M,flags:c,index:N,center:U,scales:J,quaternion:t,rgba:H,rgb:K,opacity:Y,x:L,y:q,z:n,r,g:p,b:m}=F;return[`${S}.flags = ${c??(M?`${M}.flags`:"0u")};`,`${S}.index = ${N??(M?`${M}.index`:"0")};`,`${S}.center = ${U??(M?`${M}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${S}.scales = ${J??(M?`${M}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${S}.quaternion = ${t??(M?`${M}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${S}.rgba = ${H??(M?`${M}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,K?`${S}.rgba.rgb = ${K};`:null,Y?`${S}.rgba.a = ${Y};`:null,L?`${S}.center.x = ${L};`:null,q?`${S}.center.y = ${q};`:null,n?`${S}.center.z = ${n};`:null,r?`${S}.rgba.r = ${r};`:null,p?`${S}.rgba.g = ${p};`:null,m?`${S}.rgba.b = ${m};`:null].filter(Boolean)}})}dynoOut(){return new V(this,"gsplat")}}const IE=oA(` + `):[`${C}.flags = 0u;`]}})}dynoOut(){return new Z(this,"covsplat")}}class GC extends l{constructor({gsplat:A}){super({inTypes:{gsplat:V},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[JA],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{flags:C,active:E,index:i,center:o,scales:D,quaternion:w,rgba:s,rgb:t,opacity:G,x:c,y:h,z:y,r:S,g:F,b:e}=g;return[C?`${C} = ${B?`${B}.flags`:"0u"};`:null,E?`${E} = isGsplatActive(${B?`${B}.flags`:"0u"});`:null,i?`${i} = ${B?`${B}.index`:"0"};`:null,o?`${o} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,D?`${D} = ${B?`${B}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,w?`${w} = ${B?`${B}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,s?`${s} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,t?`${t} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,G?`${G} = ${B?`${B}.rgba.a`:"0.0"};`:null,c?`${c} = ${B?`${B}.center.x`:"0.0"};`:null,h?`${h} = ${B?`${B}.center.y`:"0.0"};`:null,y?`${y} = ${B?`${B}.center.z`:"0.0"};`:null,S?`${S} = ${B?`${B}.rgba.r`:"0.0"};`:null,F?`${F} = ${B?`${B}.rgba.g`:"0.0"};`:null,e?`${e} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class hC extends l{constructor({gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:i,rgb:o,opacity:D,x:w,y:s,z:t,r:G,g:c,b:h}){super({inTypes:{gsplat:V,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:V},inputs:{gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:i,rgb:o,opacity:D,x:w,y:s,z:t,r:G,g:c,b:h},globals:()=>[JA],statements:({inputs:y,outputs:S})=>{const{gsplat:F}=S;if(!F)return[];const{gsplat:e,flags:k,index:R,center:N,scales:U,quaternion:M,rgba:J,rgb:H,opacity:n,x:L,y:x,z:d,r:Y,g:p,b:O}=y;return[`${F}.flags = ${k??(e?`${e}.flags`:"0u")};`,`${F}.index = ${R??(e?`${e}.index`:"0")};`,`${F}.center = ${N??(e?`${e}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${F}.scales = ${U??(e?`${e}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${F}.quaternion = ${M??(e?`${e}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${F}.rgba = ${J??(e?`${e}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,H?`${F}.rgba.rgb = ${H};`:null,n?`${F}.rgba.a = ${n};`:null,L?`${F}.center.x = ${L};`:null,x?`${F}.center.y = ${x};`:null,d?`${F}.center.z = ${d};`:null,Y?`${F}.rgba.r = ${Y};`:null,p?`${F}.rgba.g = ${p};`:null,O?`${F}.rgba.b = ${O};`:null].filter(Boolean)}})}dynoOut(){return new Z(this,"gsplat")}}const yC=wA(` vec3 gsplatNormal(vec3 scales, vec4 quaternion) { float minScale = min(scales.x, min(scales.y, scales.z)); vec3 normal; @@ -129,69 +121,77 @@ } return quatVec(quaternion, normal); } -`);class gE extends e{constructor({gsplat:A}){super({a:A,outKey:"normal",outTypeFunc:()=>"vec3"}),this.globals=()=>[LA,IE],this.statements=({inputs:I,outputs:g})=>[`${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);`]}}class QE extends d{constructor({gsplat:A,scale:I,rotate:g,translate:B,recolor:C}){super({inTypes:{gsplat:Z,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:Z},inputs:{gsplat:A,scale:I,rotate:g,translate:B,recolor:C},globals:()=>[LA],statements:({inputs:E,outputs:D,compile:i})=>{const{gsplat:w}=D;if(!w||!E.gsplat)return[];const{scale:s,rotate:o,translate:y,recolor:h}=E,k=i.indent;return[`${w} = ${E.gsplat};`,`if (isGsplatActive(${w}.flags)) {`,s?`${k}${w}.center *= ${s};`:null,o?`${k}${w}.center = quatVec(${o}, ${w}.center);`:null,y?`${k}${w}.center += ${y};`:null,s?`${k}${w}.scales *= ${s};`:null,o?`${k}${w}.quaternion = quatQuat(${o}, ${w}.quaternion);`:null,h?`${k}${w}.rgba *= ${h};`:null,"}"].filter(Boolean)}})}dynoOut(){return new V(this,"gsplat")}}const AQ=Q=>new BE({covsplat:Q}),RB=({covsplat:Q,flags:A,index:I,center:g,rgba:B,rgb:C,opacity:E,x:D,y:i,z:w,r:s,g:o,b:y})=>new CE({covsplat:Q,flags:A,index:I,center:g,rgba:B,rgb:C,opacity:E,x:D,y:i,z:w,r:s,g:o,b:y});class BE extends d{constructor({covsplat:A}){super({inTypes:{covsplat:rA},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{covsplat:A},globals:()=>[KI],statements:({inputs:I,outputs:g})=>{const{covsplat:B}=I,{flags:C,active:E,index:D,center:i,rgba:w,rgb:s,opacity:o,x:y,y:h,z:k,r:R,g:F,b:a}=g;return[C?`${C} = ${B?`${B}.flags`:"0u"};`:null,E?`${E} = isCovSplatActive(${B?`${B}.flags`:"0u"});`:null,D?`${D} = ${B?`${B}.index`:"0"};`:null,i?`${i} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,w?`${w} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,s?`${s} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,o?`${o} = ${B?`${B}.rgba.a`:"0.0"};`:null,y?`${y} = ${B?`${B}.center.x`:"0.0"};`:null,h?`${h} = ${B?`${B}.center.y`:"0.0"};`:null,k?`${k} = ${B?`${B}.center.z`:"0.0"};`:null,R?`${R} = ${B?`${B}.rgba.r`:"0.0"};`:null,F?`${F} = ${B?`${B}.rgba.g`:"0.0"};`:null,a?`${a} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class CE extends d{constructor({covsplat:A,flags:I,index:g,center:B,rgba:C,rgb:E,opacity:D,x:i,y:w,z:s,r:o,g:y,b:h}){super({inTypes:{covsplat:rA,flags:"uint",index:"int",center:"vec3",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{covsplat:rA},inputs:{covsplat:A,flags:I,index:g,center:B,rgba:C,rgb:E,opacity:D,x:i,y:w,z:s,r:o,g:y,b:h},globals:()=>[KI],statements:({inputs:k,outputs:R})=>{const{covsplat:F}=R;if(!F)return[];const{covsplat:a,flags:S,index:M,center:c,rgba:N,rgb:U,opacity:J,x:t,y:H,z:K,r:Y,g:L,b:q}=k;return[`${F}.flags = ${S??(a?`${a}.flags`:"0u")};`,`${F}.index = ${M??(a?`${a}.index`:"0")};`,`${F}.center = ${c??(a?`${a}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${F}.rgba = ${N??(a?`${a}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,U?`${F}.rgba.rgb = ${U};`:null,J?`${F}.rgba.a = ${J};`:null,t?`${F}.center.x = ${t};`:null,H?`${F}.center.y = ${H};`:null,K?`${F}.center.z = ${K};`:null,Y?`${F}.rgba.r = ${Y};`:null,L?`${F}.rgba.g = ${L};`:null,q?`${F}.rgba.b = ${q};`:null,`${F}.xxyyzz = ${a?`${a}.xxyyzz`:"vec3(0.0, 0.0, 0.0)"};`,`${F}.xyxzyz = ${a?`${a}.xyxzyz`:"vec3(0.0, 0.0, 0.0)"};`].filter(Boolean)}})}dynoOut(){return new V(this,"covsplat")}}class EE extends d{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{coord:"ivec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>{const{index:B}=I,{coord:C}=g;return!B||!C?[]:[`${C} = splatTexCoord(${B});`]}})}dynoOut(){return new V(this,"coord")}}class DE extends d{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{coord:"ivec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>{const{index:B}=I,{coord:C}=g;return!B||!C?[]:[`${C} = pagedSplatTexCoord(${B});`]}})}dynoOut(){return new V(this,"coord")}}const kB=(Q,A)=>new GE({gsplat:Q,rgbMinMaxLnScaleMinMax:A}),iE=(Q,A)=>new yE({covsplat:Q,rgbMinMaxLnScaleMinMax:A}),wE=Q=>new hE({gsplat:Q}),TQ=Q=>new RE({covsplat:Q}),oE=(Q,A,I,g)=>new QG({gsplat:Q,viewCenter:A,viewDir:I,sortRadial:g}),sE=(Q,A,I,g)=>new BG({covsplat:Q,viewCenter:A,viewDir:I,sortRadial:g}),gG=Q=>new FB({rgba8:Q});class GE extends d{constructor({gsplat:A,rgbMinMaxLnScaleMinMax:I}){super({inTypes:{gsplat:Z,rgbMinMaxLnScaleMinMax:"vec4"},inputs:{gsplat:A,rgbMinMaxLnScaleMinMax:I},globals:()=>[LA],statements:({inputs:g,outputs:B})=>{const{gsplat:C,rgbMinMaxLnScaleMinMax:E}=g;return C&&E?z(` +`);class cC extends r{constructor({gsplat:A}){super({a:A,outKey:"normal",outTypeFunc:()=>"vec3"}),this.globals=()=>[JA,yC],this.statements=({inputs:I,outputs:g})=>[`${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);`]}}class SC extends l{constructor({gsplat:A,scale:I,rotate:g,translate:B,recolor:C}){super({inTypes:{gsplat:V,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:V},inputs:{gsplat:A,scale:I,rotate:g,translate:B,recolor:C},globals:()=>[JA],statements:({inputs:E,outputs:i,compile:o})=>{const{gsplat:D}=i;if(!D||!E.gsplat)return[];const{scale:w,rotate:s,translate:t,recolor:G}=E,c=o.indent;return[`${D} = ${E.gsplat};`,`if (isGsplatActive(${D}.flags)) {`,w?`${c}${D}.center *= ${w};`:null,s?`${c}${D}.center = quatVec(${s}, ${D}.center);`:null,t?`${c}${D}.center += ${t};`:null,w?`${c}${D}.scales *= ${w};`:null,s?`${c}${D}.quaternion = quatQuat(${s}, ${D}.quaternion);`:null,G?`${c}${D}.rgba *= ${G};`:null,"}"].filter(Boolean)}})}dynoOut(){return new Z(this,"gsplat")}}const jg=Q=>new FC({covsplat:Q}),iB=({covsplat:Q,flags:A,index:I,center:g,rgba:B,rgb:C,opacity:E,x:i,y:o,z:D,r:w,g:s,b:t})=>new RC({covsplat:Q,flags:A,index:I,center:g,rgba:B,rgb:C,opacity:E,x:i,y:o,z:D,r:w,g:s,b:t});class FC extends l{constructor({covsplat:A}){super({inTypes:{covsplat:rA},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{covsplat:A},globals:()=>[nI],statements:({inputs:I,outputs:g})=>{const{covsplat:B}=I,{flags:C,active:E,index:i,center:o,rgba:D,rgb:w,opacity:s,x:t,y:G,z:c,r:h,g:y,b:S}=g;return[C?`${C} = ${B?`${B}.flags`:"0u"};`:null,E?`${E} = isCovSplatActive(${B?`${B}.flags`:"0u"});`:null,i?`${i} = ${B?`${B}.index`:"0"};`:null,o?`${o} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,D?`${D} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,w?`${w} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,s?`${s} = ${B?`${B}.rgba.a`:"0.0"};`:null,t?`${t} = ${B?`${B}.center.x`:"0.0"};`:null,G?`${G} = ${B?`${B}.center.y`:"0.0"};`:null,c?`${c} = ${B?`${B}.center.z`:"0.0"};`:null,h?`${h} = ${B?`${B}.rgba.r`:"0.0"};`:null,y?`${y} = ${B?`${B}.rgba.g`:"0.0"};`:null,S?`${S} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class RC extends l{constructor({covsplat:A,flags:I,index:g,center:B,rgba:C,rgb:E,opacity:i,x:o,y:D,z:w,r:s,g:t,b:G}){super({inTypes:{covsplat:rA,flags:"uint",index:"int",center:"vec3",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{covsplat:rA},inputs:{covsplat:A,flags:I,index:g,center:B,rgba:C,rgb:E,opacity:i,x:o,y:D,z:w,r:s,g:t,b:G},globals:()=>[nI],statements:({inputs:c,outputs:h})=>{const{covsplat:y}=h;if(!y)return[];const{covsplat:S,flags:F,index:e,center:k,rgba:R,rgb:N,opacity:U,x:M,y:J,z:H,r:n,g:L,b:x}=c;return[`${y}.flags = ${F??(S?`${S}.flags`:"0u")};`,`${y}.index = ${e??(S?`${S}.index`:"0")};`,`${y}.center = ${k??(S?`${S}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${y}.rgba = ${R??(S?`${S}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,N?`${y}.rgba.rgb = ${N};`:null,U?`${y}.rgba.a = ${U};`:null,M?`${y}.center.x = ${M};`:null,J?`${y}.center.y = ${J};`:null,H?`${y}.center.z = ${H};`:null,n?`${y}.rgba.r = ${n};`:null,L?`${y}.rgba.g = ${L};`:null,x?`${y}.rgba.b = ${x};`:null,`${y}.xxyyzz = ${S?`${S}.xxyyzz`:"vec3(0.0, 0.0, 0.0)"};`,`${y}.xyxzyz = ${S?`${S}.xyxzyz`:"vec3(0.0, 0.0, 0.0)"};`].filter(Boolean)}})}dynoOut(){return new Z(this,"covsplat")}}class kC extends l{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{coord:"ivec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>{const{index:B}=I,{coord:C}=g;return!B||!C?[]:[`${C} = splatTexCoord(${B});`]}})}dynoOut(){return new Z(this,"coord")}}class eC extends l{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{coord:"ivec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>{const{index:B}=I,{coord:C}=g;return!B||!C?[]:[`${C} = pagedSplatTexCoord(${B});`]}})}dynoOut(){return new Z(this,"coord")}}const DB=(Q,A)=>new LC({gsplat:Q,rgbMinMaxLnScaleMinMax:A}),NC=(Q,A)=>new nC({covsplat:Q,rgbMinMaxLnScaleMinMax:A}),MC=Q=>new HC({gsplat:Q}),lQ=Q=>new KC({covsplat:Q}),JC=(Q,A,I,g)=>new fs({gsplat:Q,viewCenter:A,viewDir:I,sortRadial:g}),UC=(Q,A,I,g)=>new us({covsplat:Q,viewCenter:A,viewDir:I,sortRadial:g}),ps=Q=>new oB({rgba8:Q});class LC extends l{constructor({gsplat:A,rgbMinMaxLnScaleMinMax:I}){super({inTypes:{gsplat:V,rgbMinMaxLnScaleMinMax:"vec4"},inputs:{gsplat:A,rgbMinMaxLnScaleMinMax:I},globals:()=>[JA],statements:({inputs:g,outputs:B})=>{const{gsplat:C,rgbMinMaxLnScaleMinMax:E}=g;return C&&E?z(` if (isGsplatActive(${C}.flags)) { target = packSplatEncoding(${C}.center, ${C}.scales, ${C}.quaternion, ${C}.rgba, ${E}); } else { target = uvec4(0u, 0u, 0u, 0u); } - `):["target = uvec4(0u, 0u, 0u, 0u);"]}})}}class yE extends d{constructor({covsplat:A,rgbMinMaxLnScaleMinMax:I}){super({inTypes:{covsplat:rA,rgbMinMaxLnScaleMinMax:"vec4"},inputs:{covsplat:A,rgbMinMaxLnScaleMinMax:I},globals:()=>[KI],statements:({inputs:g})=>{const{covsplat:B,rgbMinMaxLnScaleMinMax:C}=g;return B&&C?z(` + `):["target = uvec4(0u, 0u, 0u, 0u);"]}})}}class nC extends l{constructor({covsplat:A,rgbMinMaxLnScaleMinMax:I}){super({inTypes:{covsplat:rA,rgbMinMaxLnScaleMinMax:"vec4"},inputs:{covsplat:A,rgbMinMaxLnScaleMinMax:I},globals:()=>[nI],statements:({inputs:g})=>{const{covsplat:B,rgbMinMaxLnScaleMinMax:C}=g;return B&&C?z(` if (isCovSplatActive(${B}.flags)) { target = packSplatCovEncoding(${B}.center, ${B}.rgba, ${B}.xxyyzz, ${B}.xyxzyz, ${C}); } else { target = uvec4(0u); } - `):["target = uvec4(0u);"]}})}}class hE extends d{constructor({gsplat:A}){super({inTypes:{gsplat:Z},inputs:{gsplat:A},globals:()=>[LA],statements:({inputs:I})=>{const{gsplat:g}=I;return g?z(` + `):["target = uvec4(0u);"]}})}}class HC extends l{constructor({gsplat:A}){super({inTypes:{gsplat:V},inputs:{gsplat:A},globals:()=>[JA],statements:({inputs:I})=>{const{gsplat:g}=I;return g?z(` if (isGsplatActive(${g}.flags)) { packSplatExt(target, target2, ${g}.center, ${g}.scales, ${g}.quaternion, ${g}.rgba); } else { target = uvec4(0u); target2 = uvec4(0u); } - `):["target = uvec4(0u);","target2 = uvec4(0u);"]}})}}class RE extends d{constructor({covsplat:A}){super({inTypes:{covsplat:rA},inputs:{covsplat:A},globals:()=>[KI],statements:({inputs:I})=>{const{covsplat:g}=I;return g?z(` + `):["target = uvec4(0u);","target2 = uvec4(0u);"]}})}}class KC extends l{constructor({covsplat:A}){super({inTypes:{covsplat:rA},inputs:{covsplat:A},globals:()=>[nI],statements:({inputs:I})=>{const{covsplat:g}=I;return g?z(` if (isCovSplatActive(${g}.flags)) { packSplatExtCov(target, target2, ${g}.center, ${g}.rgba, ${g}.xxyyzz, ${g}.xyxzyz); } else { target = uvec4(0u); target2 = uvec4(0u); } - `):["target = uvec4(0u);","target2 = uvec4(0u);"]}})}}class QG extends d{constructor({gsplat:A,viewCenter:I,viewDir:g,sortRadial:B}){super({inTypes:{gsplat:Z,viewCenter:"vec3",viewDir:"vec3",sortRadial:"bool"},inputs:{gsplat:A,viewCenter:I,viewDir:g,sortRadial:B},globals:()=>[LA],statements:({inputs:C})=>{const{gsplat:E,viewCenter:D,viewDir:i,sortRadial:w}=C;return E&&D&&i&&w?z(` + `):["target = uvec4(0u);","target2 = uvec4(0u);"]}})}}class fs extends l{constructor({gsplat:A,viewCenter:I,viewDir:g,sortRadial:B}){super({inTypes:{gsplat:V,viewCenter:"vec3",viewDir:"vec3",sortRadial:"bool"},inputs:{gsplat:A,viewCenter:I,viewDir:g,sortRadial:B},globals:()=>[JA],statements:({inputs:C})=>{const{gsplat:E,viewCenter:i,viewDir:o,sortRadial:D}=C;return E&&i&&o&&D?z(` float metric = 1.0 / 0.0; if (isGsplatActive(${E}.flags)) { - vec3 center = ${E}.center - ${D}; - if (${w}) { + vec3 center = ${E}.center - ${i}; + if (${D}) { metric = length(center); } else { float bias = 100.0; // reduce popping - metric = dot(center, ${i}) + bias; + metric = dot(center, ${o}) + bias; } } target3 = floatToVec4(metric); - `):[]}})}}class BG extends d{constructor({covsplat:A,viewCenter:I,viewDir:g,sortRadial:B}){super({inTypes:{covsplat:rA,viewCenter:"vec3",viewDir:"vec3",sortRadial:"bool"},inputs:{covsplat:A,viewCenter:I,viewDir:g,sortRadial:B},globals:()=>[KI],statements:({inputs:C})=>{const{covsplat:E,viewCenter:D,viewDir:i,sortRadial:w}=C;return E&&D&&i&&w?z(` + `):[]}})}}class us extends l{constructor({covsplat:A,viewCenter:I,viewDir:g,sortRadial:B}){super({inTypes:{covsplat:rA,viewCenter:"vec3",viewDir:"vec3",sortRadial:"bool"},inputs:{covsplat:A,viewCenter:I,viewDir:g,sortRadial:B},globals:()=>[nI],statements:({inputs:C})=>{const{covsplat:E,viewCenter:i,viewDir:o,sortRadial:D}=C;return E&&i&&o&&D?z(` float metric = 1.0 / 0.0; if (isCovSplatActive(${E}.flags)) { - vec3 center = ${E}.center - ${D}; - if (${w}) { + vec3 center = ${E}.center - ${i}; + if (${D}) { metric = length(center); } else { float bias = 100.0; // reduce popping - metric = dot(center, ${i}) + bias; + metric = dot(center, ${o}) + bias; } } target3 = floatToVec4(metric); - `):[]}})}}class FB extends d{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:I,outputs:g})=>[`target = ${I.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new V(this,"rgba8")}}const CG=(Q,A,I)=>new x({key:Q,type:A,value:I}),EG=(Q=!1,A)=>new uI({key:A,value:Q}),DG=(Q=0,A)=>new kE({key:A,value:Q}),iG=(Q=0,A)=>new DI({key:A,value:Q}),oI=(Q=0,A)=>new bI({key:A,value:Q}),wG=(Q,A)=>new FE({key:A,value:Q}),oG=(Q,A)=>new aE({key:A,value:Q}),sG=(Q,A)=>new SE({key:A,value:Q}),GG=(Q,A)=>new NE({key:A,value:Q}),yG=(Q,A)=>new cE({key:A,value:Q}),hG=(Q,A)=>new ME({key:A,value:Q}),RG=(Q,A)=>new JE({key:A,value:Q}),JI=(Q,A)=>new iI({key:A,value:Q}),kG=(Q,A)=>new UE({key:A,value:Q}),FG=(Q,A)=>new tE({key:A,value:Q}),aG=(Q,A)=>new HE({key:A,value:Q}),SG=(Q,A)=>new VI({key:A,value:Q}),NG=(Q,A)=>new LE({key:A,value:Q}),cG=(Q,A)=>new YE({key:A,value:Q}),MG=(Q,A)=>new KE({key:A,value:Q}),JG=(Q,A)=>new eE({key:A,value:Q}),UG=(Q,A)=>new aB({key:A,value:Q}),tG=(Q,A)=>new rE({key:A,value:Q}),HG=(Q,A)=>new nE({key:A,value:Q}),LG=(Q,A)=>new dE({key:A,value:Q}),YG=(Q,A)=>new qE({key:A,value:Q}),KG=(Q,A)=>new xE({key:A,value:Q}),eG=(Q,A)=>new lE({key:A,value:Q}),rG=(Q,A)=>new pE({key:A,value:Q}),nG=(Q,A)=>new GQ({key:A,value:Q}),dG=(Q,A)=>new fE({key:A,value:Q}),qG=(Q,A)=>new bE({key:A,value:Q}),xG=(Q,A)=>new qA({key:A,value:Q}),lG=(Q,A)=>new PE({key:Q,value:A}),pG=(Q,A)=>new uE({key:A,value:Q}),fG=(Q,A)=>new TE({key:A,value:Q}),bG=(Q,A)=>new OE({key:A,value:Q}),PG=(Q,A)=>new mE({key:A,value:Q}),uG=(Q,A)=>new ZE({key:A,value:Q}),TG=(Q,A)=>new VE({key:A,value:Q}),OG=(Q,A)=>new XE({key:A,value:Q}),mG=(Q,A)=>new WE({key:A,value:Q}),ZG=(Q,A)=>new jE({key:A,value:Q}),VG=(Q,A)=>new vE({key:A,value:Q});class x extends d{constructor({key:A,type:I,count:g,value:B,update:C,globals:E}){A=A??"value",super({outTypes:{[A]:I},update:()=>{if(C){const D=C(this.value);D!==void 0&&(this.value=D)}this.uniform.value=this.value},generate:({inputs:D,outputs:i})=>{const w=(E==null?void 0:E({inputs:D,outputs:i}))??[],s={},o=i[A];return o&&(w.push(`uniform ${BB(o,I,g)};`),s[o]=this.uniform),{globals:w,uniforms:s}}}),this.type=I,this.count=g,this.value=B,this.uniform={value:B},this.outKey=A}dynoOut(){return new V(this,this.outKey)}}class uI extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"bool",value:I,update:g})}}class kE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"uint",value:I,update:g})}}class DI extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"int",value:I,update:g})}}class bI extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"float",value:I,update:g})}}class FE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec2",value:I,update:g})}}class aE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec2",value:I,update:g})}}class SE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec2",value:I,update:g})}}class NE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"vec2",value:I,update:g})}}class cE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec3",value:I,update:g})}}class ME extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec3",value:I,update:g})}}class JE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec3",value:I,update:g})}}class iI extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"vec3",value:I,update:g})}}class UE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec4",value:I,update:g})}}class tE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec4",value:I,update:g})}}class HE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec4",value:I,update:g})}}class VI extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"vec4",value:I,update:g})}}class LE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2",value:I,update:g})}}class YE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x2",value:I,update:g})}}class KE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x3",value:I,update:g})}}class eE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x4",value:I,update:g})}}class aB extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3",value:I,update:g})}}class rE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x2",value:I,update:g})}}class nE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x3",value:I,update:g})}}class dE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x4",value:I,update:g})}}class qE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4",value:I,update:g})}}class xE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x2",value:I,update:g})}}class lE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x3",value:I,update:g})}}class pE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x4",value:I,update:g})}}class GQ extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2D",value:I,update:g})}}class fE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2D",value:I,update:g})}}class bE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2D",value:I,update:g})}}class qA extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2DArray",value:I,update:g})}}class PE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2DArray",value:I,update:g})}}class uE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArray",value:I,update:g})}}class TE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler3D",value:I,update:g})}}class OE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler3D",value:I,update:g})}}class mE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler3D",value:I,update:g})}}class ZE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"usamplerCube",value:I,update:g})}}class VE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"isamplerCube",value:I,update:g})}}class XE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCube",value:I,update:g})}}class WE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DShadow",value:I,update:g})}}class jE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArrayShadow",value:I,update:g})}}class vE extends x{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCubeShadow",value:I,update:g})}}class yQ{constructor({graph:A,inputs:I,outputs:g,template:B,consoleLog:C}){this.graph=A,this.template=B,this.inputs=I??{},this.outputs=g??{};const E=new RC({indent:this.template.indent});for(const i in this.outputs)this.outputs[i]&&E.declares.add(this.outputs[i]);const D=A.compile({inputs:this.inputs,outputs:this.outputs,compile:E});this.shader=B.generate({globals:E.globals,statements:D}),this.uniforms=E.uniforms,this.updaters=E.updaters,C&&(console.log("*** COMPILED SHADER",this.shader),console.log("*** UNIFORMS",this.uniforms))}prepareMaterial(){return XG(this)}update(){for(const A of this.updaters)A()}}class Jg{constructor(A){const I=A.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m),g=A.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m);if(!I||!g)throw new Error("Template must contain {{ GLOBALS }} and {{ STATEMENTS }}");this.before=A.substring(0,I.index),this.between=A.substring(I.index+I[0].length,g.index),this.after=A.substring(g.index+g[0].length),this.indent=g[1]}generate({globals:A,statements:I}){return this.before+Array.from(A).join(` + `):[]}})}}class oB extends l{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:I,outputs:g})=>[`target = ${I.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new Z(this,"rgba8")}}const bs=(Q,A,I)=>new q({key:Q,type:A,value:I}),Ps=(Q=!1,A)=>new rg({key:A,value:Q}),ms=(Q=0,A)=>new rC({key:A,value:Q}),Ts=(Q=0,A)=>new $A({key:A,value:Q}),iI=(Q=0,A)=>new vI({key:A,value:Q}),Os=(Q,A)=>new YC({key:A,value:Q}),Zs=(Q,A)=>new dC({key:A,value:Q}),vs=(Q,A)=>new lC({key:A,value:Q}),Xs=(Q,A)=>new xC({key:A,value:Q}),Vs=(Q,A)=>new qC({key:A,value:Q}),Ws=(Q,A)=>new pC({key:A,value:Q}),js=(Q,A)=>new fC({key:A,value:Q}),NI=(Q,A)=>new LI({key:A,value:Q}),zs=(Q,A)=>new uC({key:A,value:Q}),_s=(Q,A)=>new bC({key:A,value:Q}),$s=(Q,A)=>new PC({key:A,value:Q}),Aw=(Q,A)=>new Ig({key:A,value:Q}),Iw=(Q,A)=>new mC({key:A,value:Q}),gw=(Q,A)=>new TC({key:A,value:Q}),Qw=(Q,A)=>new OC({key:A,value:Q}),Bw=(Q,A)=>new ZC({key:A,value:Q}),Cw=(Q,A)=>new sB({key:A,value:Q}),Ew=(Q,A)=>new vC({key:A,value:Q}),iw=(Q,A)=>new XC({key:A,value:Q}),Dw=(Q,A)=>new VC({key:A,value:Q}),ow=(Q,A)=>new WC({key:A,value:Q}),sw=(Q,A)=>new jC({key:A,value:Q}),ww=(Q,A)=>new zC({key:A,value:Q}),aw=(Q,A)=>new _C({key:A,value:Q}),tw=(Q,A)=>new Yg({key:A,value:Q}),Gw=(Q,A)=>new $C({key:A,value:Q}),hw=(Q,A)=>new AE({key:A,value:Q}),yw=(Q,A)=>new pA({key:A,value:Q}),cw=(Q,A)=>new IE({key:Q,value:A}),Sw=(Q,A)=>new gE({key:A,value:Q}),Fw=(Q,A)=>new QE({key:A,value:Q}),Rw=(Q,A)=>new BE({key:A,value:Q}),kw=(Q,A)=>new CE({key:A,value:Q}),ew=(Q,A)=>new EE({key:A,value:Q}),Nw=(Q,A)=>new iE({key:A,value:Q}),Mw=(Q,A)=>new DE({key:A,value:Q}),Jw=(Q,A)=>new oE({key:A,value:Q}),Uw=(Q,A)=>new sE({key:A,value:Q}),Lw=(Q,A)=>new wE({key:A,value:Q});class q extends l{constructor({key:A,type:I,count:g,value:B,update:C,globals:E}){A=A??"value",super({outTypes:{[A]:I},update:()=>{if(C){const i=C(this.value);i!==void 0&&(this.value=i)}this.uniform.value=this.value},generate:({inputs:i,outputs:o})=>{const D=(E==null?void 0:E({inputs:i,outputs:o}))??[],w={},s=o[A];return s&&(D.push(`uniform ${QB(s,I,g)};`),w[s]=this.uniform),{globals:D,uniforms:w}}}),this.type=I,this.count=g,this.value=B,this.uniform={value:B},this.outKey=A}dynoOut(){return new Z(this,this.outKey)}}class rg extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"bool",value:I,update:g})}}class rC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"uint",value:I,update:g})}}class $A extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"int",value:I,update:g})}}class vI extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"float",value:I,update:g})}}class YC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec2",value:I,update:g})}}class dC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec2",value:I,update:g})}}class lC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec2",value:I,update:g})}}class xC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"vec2",value:I,update:g})}}class qC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec3",value:I,update:g})}}class pC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec3",value:I,update:g})}}class fC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec3",value:I,update:g})}}class LI extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"vec3",value:I,update:g})}}class uC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec4",value:I,update:g})}}class bC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec4",value:I,update:g})}}class PC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec4",value:I,update:g})}}class Ig extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"vec4",value:I,update:g})}}class mC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2",value:I,update:g})}}class TC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x2",value:I,update:g})}}class OC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x3",value:I,update:g})}}class ZC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x4",value:I,update:g})}}class sB extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3",value:I,update:g})}}class vC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x2",value:I,update:g})}}class XC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x3",value:I,update:g})}}class VC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x4",value:I,update:g})}}class WC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4",value:I,update:g})}}class jC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x2",value:I,update:g})}}class zC extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x3",value:I,update:g})}}class _C extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x4",value:I,update:g})}}class Yg extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2D",value:I,update:g})}}class $C extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2D",value:I,update:g})}}class AE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2D",value:I,update:g})}}class pA extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2DArray",value:I,update:g})}}class IE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2DArray",value:I,update:g})}}class gE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArray",value:I,update:g})}}class QE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler3D",value:I,update:g})}}class BE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler3D",value:I,update:g})}}class CE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler3D",value:I,update:g})}}class EE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"usamplerCube",value:I,update:g})}}class iE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"isamplerCube",value:I,update:g})}}class DE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCube",value:I,update:g})}}class oE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DShadow",value:I,update:g})}}class sE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArrayShadow",value:I,update:g})}}class wE extends q{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCubeShadow",value:I,update:g})}}var KA=Uint8Array,mI=Uint16Array,nw=Int32Array,aE=new KA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),tE=new KA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Hw=new KA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),GE=function(Q,A){for(var I=new mI(31),g=0;g<31;++g)I[g]=A+=1<>1|(GA&21845)<<1;kI=(kI&52428)>>2|(kI&13107)<<2,kI=(kI&61680)>>4|(kI&3855)<<4,xQ[GA]=((kI&65280)>>8|(kI&255)<<8)>>1}var ag=function(Q,A,I){for(var g=Q.length,B=0,C=new mI(A);B>o]=D}else for(i=new mI(g),B=0;B>15-Q[B]);return i},dg=new KA(288);for(var GA=0;GA<144;++GA)dg[GA]=8;for(var GA=144;GA<256;++GA)dg[GA]=9;for(var GA=256;GA<280;++GA)dg[GA]=7;for(var GA=280;GA<288;++GA)dg[GA]=8;var cE=new KA(32);for(var GA=0;GA<32;++GA)cE[GA]=5;var dw=ag(dg,9,1),lw=ag(cE,5,1),kQ=function(Q){for(var A=Q[0],I=1;IA&&(A=Q[I]);return A},II=function(Q,A,I){var g=A/8|0;return(Q[g]|Q[g+1]<<8)>>(A&7)&I},eQ=function(Q,A){var I=A/8|0;return(Q[I]|Q[I+1]<<8|Q[I+2]<<16)>>(A&7)},SE=function(Q){return(Q+7)/8|0},XI=function(Q,A,I){return(A==null||A<0)&&(A=0),(I==null||I>Q.length)&&(I=Q.length),new KA(Q.subarray(A,I))},xw=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],bA=function(Q,A,I){var g=new Error(A||xw[Q]);if(g.code=Q,Error.captureStackTrace&&Error.captureStackTrace(g,bA),!I)throw g;return g},FE=function(Q,A,I,g){var B=Q.length,C=g?g.length:0;if(!B||A.f&&!A.l)return I||new KA(0);var E=!I,i=E||A.i!=2,o=A.i;E&&(I=new KA(B*3));var D=function(SA){var sA=I.length;if(SA>sA){var tA=new KA(Math.max(sA*2,SA));tA.set(I),I=tA}},w=A.f||0,s=A.p||0,t=A.b||0,G=A.l,c=A.d,h=A.m,y=A.n,S=B*8;do{if(!G){w=II(Q,s,1);var F=II(Q,s+1,3);if(s+=3,F)if(F==1)G=dw,c=lw,h=9,y=5;else if(F==2){var N=II(Q,s,31)+257,U=II(Q,s+10,15)+4,M=N+II(Q,s+5,31)+1;s+=14;for(var J=new KA(M),H=new KA(19),n=0;n>4;if(e<16)J[n++]=e;else{var p=0,O=0;for(e==16?(O=3+II(Q,s,3),s+=2,p=J[n-1]):e==17?(O=3+II(Q,s,7),s+=3):e==18&&(O=11+II(Q,s,127),s+=7);O--;)J[n++]=p}}var gA=J.subarray(0,N),v=J.subarray(N);h=kQ(gA),y=kQ(v),G=ag(gA,h,1),c=ag(v,y,1)}else bA(1);else{var e=SE(s)+4,k=Q[e-4]|Q[e-3]<<8,R=e+k;if(R>B){o&&bA(0);break}i&&D(t+k),I.set(Q.subarray(e,R),t),A.b=t+=k,A.p=s=R*8,A.f=w;continue}if(s>S){o&&bA(0);break}}i&&D(t+131072);for(var EA=(1<>4;if(s+=p&15,s>S){o&&bA(0);break}if(p||bA(2),X<256)I[t++]=X;else if(X==256){QA=s,G=null;break}else{var P=X-254;if(X>264){var n=X-257,u=aE[n];P=II(Q,s,(1<>4;m||bA(3),s+=m&15;var v=Yw[f];if(f>3){var u=tE[f];v+=eQ(Q,s)&(1<S){o&&bA(0);break}i&&D(t+131072);var yA=t+P;if(t>>0},NQ=function(Q,A){return gI(Q,A)+gI(Q,A+4)*4294967296},pw=function(Q){(Q[0]!=31||Q[1]!=139||Q[2]!=8)&&bA(6,"invalid gzip data");var A=Q[3],I=10;A&4&&(I+=(Q[10]|Q[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!Q[I++]);return I+(A&2)},MQ=function(){function Q(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new KA(32768),this.p=new KA(0),g&&this.o.set(g)}return Q.prototype.e=function(A){if(this.ondata||bA(5),this.d&&bA(4),!this.p.length)this.p=A;else if(A.length){var I=new KA(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},Q.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=FE(this.p,this.s,this.o);this.ondata(XI(g,I,this.s.b),this.d),this.o=XI(g,this.s.b-32768),this.s.b=this.o.length,this.p=XI(this.p,this.s.p/8|0),this.s.p&=7},Q.prototype.push=function(A,I){this.e(A),this.c(I)},Q}();function fw(Q,A){return FE(Q,{i:2},A&&A.out,A&&A.dictionary)}var uw=function(){function Q(A,I){this.v=1,this.r=0,MQ.call(this,A,I)}return Q.prototype.push=function(A,I){if(MQ.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?pw(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}MQ.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=SE(this.s.p)+9,this.s={i:0},this.o=new KA(0),this.push(new KA(0),I))},Q}(),qQ=typeof TextDecoder<"u"&&new TextDecoder,bw=0;try{qQ.decode(qw,{stream:!0}),bw=1}catch{}var Pw=function(Q){for(var A="",I=0;;){var g=Q[I++],B=(g>127)+(g>223)+(g>239);if(I+B>Q.length)return{s:A,r:XI(Q,I-1)};B?B==3?(g=((g&15)<<18|(Q[I++]&63)<<12|(Q[I++]&63)<<6|Q[I++]&63)-65536,A+=String.fromCharCode(55296|g>>10,56320|g&1023)):B&1?A+=String.fromCharCode((g&31)<<6|Q[I++]&63):A+=String.fromCharCode((g&15)<<12|(Q[I++]&63)<<6|Q[I++]&63):A+=String.fromCharCode(g)}};function mw(Q,A){if(A){for(var I="",g=0;g65558)&&bA(13);var B=sI(Q,g+8);if(!B)return{};var C=gI(Q,g+16),E=C==4294967295||B==65535;if(E){var i=gI(Q,g-12);E=gI(Q,i)==101075792,E&&(B=gI(Q,i+32),C=gI(Q,i+48))}for(var o=A&&A.filter,D=0;D=179,lg=new Float32Array(1),iQ=new Uint32Array(lg.buffer),wB="Float16Array"in globalThis,tg=wB?new globalThis.Float16Array(1):null,eE=new Uint16Array(tg==null?void 0:tg.buffer);function NE(Q){const A=Math.sqrt(Q.reduce((I,g)=>I+g*g,0));return Q.map(I=>I/A)}function Tg(Q){return lg[0]=Q,iQ[0]}function Og(Q){return iQ[0]=Q,lg[0]}const PA=wB?Xw:Vw,hA=wB?Ww:jw;function Xw(Q){return tg[0]=Q,eE[0]}function Vw(Q){lg[0]=Q;const A=iQ[0],I=A>>31&1,g=A>>23&255,B=A&8388607,C=I<<15;if(g===255)return B!==0?C|32767:C|31744;const E=g-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const o=(B|8388608)>>1-E+13;return C|o}const i=B>>13;return C|E<<10|i}function Ww(Q){return eE[0]=Q,tg[0]}function jw(Q){const A=Q>>15&1,I=Q>>10&31,g=Q&1023;let B;if(I===0)if(g===0)B=A<<31;else{let C=g,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const i=E+127,o=C<<13;B=A<<31|i<<23|o}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=I-15+127,E=g<<13;B=A<<31|C<<23|E}return iQ[0]=B,lg[0]}function VA(Q){return Math.max(0,Math.min(255,Math.round(Q*255)))}function Gg(Q){return Math.max(-127,Math.min(127,Math.round(Q*127)))}function ME(Q){return Q/255}function JE(Q){return Q/127}class zw{constructor({asyncFetch:A,dispose:I,maxItems:g=5}){this.asyncFetch=A,this.dispose=I,this.maxItems=g,this.items=[],this.pending=new Map}has(A){return this.items.some(I=>I.key===A)}getImmediate(A){const I=this.items.findIndex(g=>g.key===A);if(I>=0){const g=this.items.splice(I,1)[0];return this.items.push(g),g.data}}async getFetch(A){const I=this.getImmediate(A);if(I!==void 0)return I;let g=this.pending.get(A);return g||(g=this.asyncFetch(A).then(B=>{for(this.pending.delete(A),this.items.push({key:A,data:B});this.items.length>this.maxItems;){const C=this.items.shift();C&&this.dispose&&this.dispose(C.data)}return B}),this.pending.set(A,g),g)}}function _w(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]);return Object.fromEntries(I)}function $w(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]).filter(([g,B])=>B!==void 0);return Object.fromEntries(I)}function UE(Q){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(Q),A}function pQ(Q,A){return new Array(Q).fill(null).map((I,g)=>A(g))}class Aa{constructor({allocate:A,dispose:I,valid:g}){this.items=[],this.allocate=A,this.dispose=I,this.valid=g}alloc(A){for(;;){const I=this.items.pop();if(!I)break;if(this.valid(I,A))return I;this.dispose&&this.dispose(I)}return this.allocate(A)}free(A){this.items.push(A)}disposeAll(){let A;for(A=this.items.pop();A;)this.dispose&&this.dispose(A),A=this.items.pop()}}function fQ(Q,A,I,g,B,C,E,i,o,D,w,s,t,G,c,h){const y=A*4,[S,F]=Q;S[y]=Tg(I),S[y+1]=Tg(g),S[y+2]=Tg(B),S[y+3]=PA(t),F[y]=PA(G)|PA(c)<<16,F[y+1]=PA(h)|PA(Math.log(C))<<16,F[y+2]=PA(Math.log(E))|PA(Math.log(i))<<16,F[y+3]=qE(o,D,w,s)}function zg(Q,A){const I=aB,g=A*4,[B,C]=Q;return I.center.x=Og(B[g]),I.center.y=Og(B[g+1]),I.center.z=Og(B[g+2]),I.opacity=hA(B[g+3]&65535),I.color.r=hA(C[g]&65535),I.color.g=hA(C[g]>>>16),I.color.b=hA(C[g+1]&65535),I.scales.x=Math.exp(hA(C[g+1]>>>16)),I.scales.y=Math.exp(hA(C[g+2]&65535)),I.scales.z=Math.exp(hA(C[g+2]>>>16)),pE(C[g+3],I.quaternion),I}function _g(Q,A,I,g,B,C,E,i,o,D,w,s,t,G,c,h,y){const S=(y==null?void 0:y.rgbMin)??0,e=((y==null?void 0:y.rgbMax)??1)-S,k=VA((G-S)/e),R=VA((c-S)/e),N=VA((h-S)/e),U=VA(y!=null&&y.lodOpacity?.5*t:t),M=GB(LE.set(o,D,w,s)),J=M&255,H=M>>>8&255,n=M>>>16&255,L=(y==null?void 0:y.lnScaleMin)??fA,d=254/(((y==null?void 0:y.lnScaleMax)??uA)-L),Y=C>>8&255,D=E>>>16&255,w=A*4;Q[w+2]=Q[w+2]&65535|i<<16|o<<24,Q[w+3]=Q[w+3]&16777215|D<<24}function Ba(Q,A,I,g,B,C,E){const i=(E==null?void 0:E.rgbMin)??0,D=((E==null?void 0:E.rgbMax)??1)-i,w=VA((I-i)/D),s=VA((g-i)/D),t=VA((B-i)/D),G=VA(E!=null&&E.lodOpacity?.5*C:C),c=A*4;Q[c]=w|s<<8|t<<16|G<<24}function Ca(Q,A,I,g,B,C){const E=(C==null?void 0:C.rgbMin)??0,o=((C==null?void 0:C.rgbMax)??1)-E,D=VA((I-E)/o),w=VA((g-E)/o),s=VA((B-E)/o),t=A*4;Q[t]=D|w<<8|s<<16|Q[t]&4278190080}function Ea(Q,A,I){const g=VA(I),B=A*4;Q[B]=Q[B]&16777215|g<<24}const ia=new a.Vector3,Da=new a.Vector3,oa=new a.Quaternion,sa=new a.Color,aB={center:ia,scales:Da,quaternion:oa,color:sa,opacity:0};function Sg(Q,A,I){const g=aB,B=A*4,C=Q[B],E=Q[B+1],i=Q[B+2],o=Q[B+3],D=(I==null?void 0:I.rgbMin)??0,s=((I==null?void 0:I.rgbMax)??1)-D;g.color.set(D+(C&255)/255*s,D+(C>>>8&255)/255*s,D+(C>>>16&255)/255*s),g.opacity=(C>>>24&255)/255,I!=null&&I.lodOpacity&&(g.opacity=2*g.opacity),g.center.set(hA(E&65535),hA(E>>>16&65535),hA(i&65535));const t=(I==null?void 0:I.lnScaleMin)??fA,c=(((I==null?void 0:I.lnScaleMax)??uA)-t)/254,h=o&255;g.scales.x=h===0?0:Math.exp(t+(h-1)*c);const y=o>>>8&255;g.scales.y=y===0?0:Math.exp(t+(y-1)*c);const S=o>>>16&255;g.scales.z=S===0?0:Math.exp(t+(S-1)*c);const F=i>>>16&65535|o>>>8&16711680;return xE(F,g.quaternion),g}function iA(Q){const A=b,I=Math.max(IB,Math.min(XA,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function wa(Q){const A=b,I=Math.max(IB,Math.min(XA,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I));return A*I*g}function Fg(){return navigator.platform.toLowerCase().startsWith("win")?!1:navigator.maxTouchPoints>0?!0:/Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(navigator.userAgent)}function DQ(){return/Android/.test(navigator.userAgent)||/Tizen/.test(navigator.userAgent)}function oQ(){return!!navigator.xr&&/Oculus/.test(navigator.userAgent)}function nE(){return oQ()&&/Quest 2/.test(navigator.userAgent)}function jI(){return/iPhone|iPad/.test(navigator.userAgent)}function tB(){return!!navigator.xr&&jI()&&/Safari/.test(navigator.userAgent)&&Fg()}function HE(Q,A,I){const g=new Uint8Array(A*4);for(let B=0;BI!==void 0))}const YE=wA(` + precision highp float; + + in vec3 position; + + void main() { + gl_Position = vec4(position.xy, 0.0, 1.0); + } +`);function ta(Q){const A=new a.Vector3;for(const I of Q)A.add(I);return A.divideScalar(Q.length)}function Ga(Q){if(Q.length===0)return new a.Quaternion;const A=Q[0].clone();for(let I=1;I=g)}function lE(Q,A){const[I,g]=[new a.Vector3,new a.Quaternion],[B,C]=[new a.Vector3,new a.Quaternion];Q.decompose(I,g,new a.Vector3),A.decompose(B,C,new a.Vector3);const E=I.distanceTo(B),i=Math.abs(g.dot(C));return{distance:E,coorient:i}}function ca({matrix1:Q,matrix2:A,maxDistance:I,minCoorient:g}){const{distance:B,coorient:C}=lE(Q,A);return B<=I&&(g==null||C>=g)}function Sa(Q,A=.001){return Math.abs(Q)>24,g=Q<<16>>24,B=Q<<8>>24;A.set(I/127,g/127,B/127,0);const C=A.x*A.x+A.y*A.y+A.z*A.z;return A.w=Math.sqrt(Math.max(0,1-C)),A}const ka=new a.Quaternion,uQ=new a.Vector3;function GB(Q){const A=ka.copy(Q).normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?uQ.set(1,0,0):uQ.set(A.x,A.y,A.z).divideScalar(g),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,i=B.y/C;if(B.z<0){const G=E;E=(1-Math.abs(i))*(E>=0?1:-1),i=(1-Math.abs(G))*(i>=0?1:-1)}const o=E*.5+.5,D=i*.5+.5,w=Math.round(o*255),s=Math.round(D*255);return Math.round(I*(255/Math.PI))<<16|s<<8|w}function xE(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255;let i=(C-.5)*2,o=(E-.5)*2;const D=1-(Math.abs(i)+Math.abs(o)),w=Math.max(-D,0);i+=i>=0?-w:w,o+=o>=0?-w:w;const s=uQ.set(i,o,D).normalize(),G=B/255*Math.PI*.5,c=Math.sin(G),h=Math.cos(G);return A.set(s.x*c,s.y*c,s.z*c,h),A}function ea(Q){const A=Q.clone().normalize(),I=2*(A.w*A.x+A.y*A.z),g=1-2*(A.x*A.x+A.y*A.y),B=Math.atan2(I,g),C=2*(A.w*A.y-A.z*A.x),E=Math.abs(C)>=1?Math.sign(C)*(Math.PI/2):Math.asin(C),i=2*(A.w*A.z+A.x*A.y),o=1-2*(A.y*A.y+A.z*A.z),D=Math.atan2(i,o),w=(B+Math.PI)/(2*Math.PI),s=(E+Math.PI)/(2*Math.PI),t=(D+Math.PI)/(2*Math.PI),G=Math.round(w*255),c=Math.round(s*255);return Math.round(t*255)<<16|c<<8|G}function Na(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255,i=B/255,o=C*(2*Math.PI)-Math.PI,D=E*(2*Math.PI)-Math.PI,w=i*(2*Math.PI)-Math.PI,s=Math.cos(o*.5),t=Math.sin(o*.5),G=Math.cos(D*.5),c=Math.sin(D*.5),h=Math.cos(w*.5),y=Math.sin(w*.5);return A.w=s*G*h+t*c*y,A.x=t*G*h-s*c*y,A.y=s*c*h+t*G*y,A.z=s*G*y-t*c*h,A.normalize(),A}function qE(Q,A,I,g){const B=Math.sqrt(Q*Q+A*A+I*I+g*g),C=(g<0?-Q:Q)/B,E=(g<0?-A:A)/B,i=(g<0?-I:I)/B,o=(g<0?-g:g)/B,D=2*Math.acos(o),w=Math.sqrt(C*C+E*E+i*i),s=w<1e-6?1:C/w,t=w<1e-6?0:E/w,G=w<1e-6?0:i/w,c=Math.abs(s)+Math.abs(t)+Math.abs(G);let h=s/c,y=t/c;if(G<0){const N=h;h=(1-Math.abs(y))*(h>=0?1:-1),y=(1-Math.abs(N))*(y>=0?1:-1)}const S=h*.5+.5,F=y*.5+.5,e=Math.round(S*1023),k=Math.round(F*1023);return Math.round(D*(4095/Math.PI))<<20|k<<10|e}function pE(Q,A){const I=Q&1023,g=Q>>>10&1023,B=Q>>>20&4095,C=I/1023,E=g/1023;let i=(C-.5)*2,o=(E-.5)*2;const D=1-(Math.abs(i)+Math.abs(o)),w=Math.max(-D,0);i+=i>=0?-w:w,o+=o>=0?-w:w;const s=Math.sqrt(i*i+o*o+D*D),t=s<1e-6?0:i/s,G=s<1e-6?0:o/s,c=s<1e-6?0:D/s,y=B/4095*Math.PI*.5,S=Math.sin(y),F=Math.cos(y);return A.set(t*S,G*S,c*S,F),A}function qg(Q,A,I,g){const B=Math.round(Math.max(-127,Math.min(127,Q*127))),C=Math.round(Math.max(-127,Math.min(127,A*127))),E=Math.round(Math.max(-127,Math.min(127,I*127))),i=Math.round(Math.max(-127,Math.min(127,g*127)));return B&255|(C&255)<<8|(E&255)<<16|(i&255)<<24}function Ma(Q,A,I,g){const C=63/((g==null?void 0:g.sh1Max)??1),E=A*2;for(let i=0;i<9;++i){const o=I[i]*C,D=Math.round(Math.max(-63,Math.min(63,o)))&127,w=i*7,s=w+7,t=Math.floor(w/32),G=w-t*32,c=D<t*32+32){const h=D>>>32-G&4294967295;Q[E+t+1]|=h}}}function Ja(Q,A,I,g){const C=1/((g==null?void 0:g.sh2Max)??1);Q[A*4+0]=qg(I[0]*C,I[1]*C,I[2]*C,I[3]*C),Q[A*4+1]=qg(I[4]*C,I[5]*C,I[6]*C,I[7]*C),Q[A*4+2]=qg(I[8]*C,I[9]*C,I[10]*C,I[11]*C),Q[A*4+3]=qg(I[12]*C,I[13]*C,I[14]*C,0)}function Ua(Q,A,I,g){const C=31/((g==null?void 0:g.sh3Max)??1),E=A*4;for(let i=0;i<21;++i){const o=I[i]*C,D=Math.round(Math.max(-31,Math.min(31,o)))&63,w=i*6,s=w+6,t=Math.floor(w/32),G=w-t*32,c=D<t*32+32){const h=D>>>32-G&4294967295;Q[E+t+1]|=h}}}function qI(Q,A,I){const g=Math.abs(Q),B=Math.abs(A),C=Math.abs(I),E=Math.max(g,B,C),i=Math.floor(Math.log2(E)),o=Math.max(0,Math.min(31,i+15)),D=2**(o-15)/255,w=Math.round(Math.max(0,Math.min(255,g/D))),s=Math.round(Math.max(0,Math.min(255,B/D))),t=Math.round(Math.max(0,Math.min(255,C/D))),G=o<<3|((Q<0?1:0)|(A<0?2:0)|(I<0?4:0));return w|s<<8|t<<16|G<<24}function La(Q){const A=aB.color,g=2**((Q>>>27&31)-15)/255,B=(Q&255)*g,C=(Q>>>8&255)*g,E=(Q>>>16&255)*g;return A.r=Q&16777216?-B:B,A.g=Q&33554432?-C:C,A.b=Q&67108864?-E:E,A}function na(Q,A,I){const g=A*4;for(let B=0;B<3;++B){const C=B*3;Q[g+B]=qI(I[C],I[C+1],I[C+2])}}function Ha(Q,A,I,g,B){const C=I*4;for(let E=0;E<3;++E){const i=E*3;Q[C+E]=qI(g[i],g[i+1],g[i+2])}Q[C+3]=qI(B[0],B[1],B[2]);for(let E=1;E<5;++E){const i=E*5;A[C+(E-1)]=qI(B[i],B[i+1],B[i+2])}}function Ka(Q,A,I,g){const B=I*4;for(let C=0;C<4;++C){const E=C*3;Q[B+C]=qI(g[E],g[E+1],g[E+2])}for(let C=4;C<7;++C){const E=C*3;A[B+(C-4)]=qI(g[E],g[E+1],g[E+2])}}function fE(Q,A){const I=[];let g=0,B=null;const C=new uw((o,D)=>{if(I.push(o),g+=o.length,D||g>=A){const w=new Uint8Array(g);let s=0;for(const t of I)w.set(t,s),s+=t.length;B=w.slice(0,A)}}),E=1024;let i=0;for(;B==null&&ithis.indent+g).join(` -`)+this.after}}const lB=new WeakMap;function XG(Q){let A=lB.get(Q);return A||(A=new G.RawShaderMaterial({glslVersion:G.GLSL3,vertexShader:LC,fragmentShader:Q.shader,uniforms:Q.uniforms}),lB.set(Q,A),A)}function SB(Q,A,I="add"){const g=()=>{throw new Error(`Invalid ${I} types: ${Q}, ${A}`)};if(Q===A)return Q;if(Q==="int"){if(lA(A))return A;g()}if(A==="int"){if(lA(Q))return Q;g()}if(Q==="uint"){if(pA(A))return A;g()}if(A==="uint"){if(pA(Q))return Q;g()}if(Q==="float"){if(LI(A))return A;g()}if(A==="float"){if(LI(Q))return Q;g()}throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function WG(Q,A){return SB(Q,A,"sub")}function jG(Q,A){const I=()=>{throw new Error(`Invalid mul types: ${Q}, ${A}`)},g=B=>B;if(Q==="int"){if(lA(A))return g(A);I()}if(A==="int"){if(lA(Q))return g(Q);I()}if(Q==="uint"){if(pA(A))return g(A);I()}if(A==="uint"){if(pA(Q))return g(Q);I()}if(Q==="float"){if(LI(A))return g(A);I()}if(A==="float"){if(LI(Q))return g(Q);I()}if(lA(Q)||pA(Q)||lA(A)||pA(A)){if(Q===A)return g(Q);I()}if(Q==="vec2"){if(A==="vec2"||rI(A))return g("vec2");if(A==="mat3x2")return g("vec3");if(A==="mat4x2")return g("vec4");I()}if(Q==="vec3"){if(A==="mat2x3")return g("vec2");if(A==="vec3"||nI(A))return g("vec3");if(A==="mat4x3")return g("vec4");I()}if(Q==="vec4"){if(A==="mat2x4")return g("vec2");if(A==="mat3x4")return g("vec3");if(A==="vec4"||dI(A))return g("vec4");I()}if(A==="vec2"){if(rI(Q))return g("vec2");if(Q==="mat2x3")return g("vec3");if(Q==="mat2x4")return g("vec4");I()}if(A==="vec3"){if(Q==="mat3x2")return g("vec2");if(nI(Q))return g("vec3");if(Q==="mat3x4")return g("vec4");I()}if(A==="vec4"){if(Q==="mat4x2")return g("vec2");if(Q==="mat4x3")return g("vec3");if(dI(Q))return g("vec4");I()}if(rI(Q)){if(rI(A))return g("mat2");if(A==="mat3x2")return g("mat3x2");if(A==="mat4x2")return g("mat4x2");I()}if(Q==="mat2x3"){if(rI(A))return g("mat2x3");if(A==="mat3x2")return g("mat3");if(A==="mat4x2")return g("mat4x3");I()}if(Q==="mat2x4"){if(rI(A))return g("mat2x4");if(A==="mat3x2")return g("mat3x4");if(A==="mat4x2")return g("mat4");I()}if(Q==="mat3x2"){if(A==="mat2x3")return g("mat2");if(nI(A))return g("mat3x2");if(A==="mat4x3")return g("mat4x2");I()}if(nI(Q)){if(A==="mat2x3")return g("mat2x3");if(nI(A))return g("mat3");if(A==="mat4x3")return g("mat4x3");I()}if(Q==="mat3x4"){if(A==="mat2x3")return g("mat2x4");if(nI(A))return g("mat3x4");if(A==="mat4x3")return g("mat4");I()}if(Q==="mat4x2"){if(A==="mat2x4")return g("mat2");if(A==="mat3x4")return g("mat3x2");if(dI(A))return g("mat4x2");I()}if(Q==="mat4x3"){if(A==="mat2x4")return g("mat2x3");if(A==="mat3x4")return g("mat3");if(dI(A))return g("mat4x3");I()}if(dI(Q)){if(A==="mat2x4")return g("mat2x4");if(A==="mat3x4")return g("mat3x4");if(dI(A))return g("mat4");I()}throw new Error(`Invalid mul types: ${Q}, ${A}`)}function vG(Q,A){return SB(Q,A,"div")}function zG(Q,A){if(Q===A)return Q;if(Q==="int"){if(lA(A))return A}else if(A==="int"){if(lA(Q))return Q}else if(Q==="uint"){if(pA(A))return A}else if(A==="uint"&&pA(Q))return Q;throw new Error(`Invalid imod types: ${Q}, ${A}`)}function _G(Q,A){if(Q===A||A==="float")return Q;throw new Error(`Invalid mod types: ${Q}, ${A}`)}function $G(Q){return Q}function A0(Q){return Q}function I0(Q){return Q}function g0(Q){return Q}function Q0(Q){return Q}function B0(Q){return Q}function C0(Q){return Q}function E0(Q){return Q}function D0(Q){return Q}function i0(Q){return Q}function w0(Q){return Q}function o0(Q){return Q}function s0(Q){return Q}function G0(Q){return Q}function y0(Q){return Q}function h0(Q){return Q}function zE(Q,A,I="min"){if(Q===A)return Q;if(A==="float"){if(rg(Q))return Q}else if(A==="int"){if(lA(Q))return Q}else if(A==="uint"&&pA(Q))return Q;throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function R0(Q,A){return zE(Q,A,"max")}function k0(Q,A,I){if(A==="float"){if(rg(Q))return Q}else if(A==="int"){if(lA(Q))return Q}else if(A==="uint"&&pA(Q))return Q;throw new Error(`Invalid clamp types: ${Q}, ${A}`)}function F0(Q,A,I){if(I===Q||I==="float"||I==="bool"&&Q==="float"||I==="bvec2"&&Q==="vec2"||I==="bvec3"&&Q==="vec3"||I==="bvec4"&&Q==="vec4")return Q;throw new Error(`Invalid mix types: ${Q}, ${A}, ${I}`)}function a0(Q,A){if(Q===A||A==="float")return A;throw new Error(`Invalid step types: ${Q}, ${A}`)}function S0(Q,A,I){if(Q===A&&(Q===I||Q==="float"))return I;throw new Error(`Invalid smoothstep types: ${Q}, ${A}, ${I}`)}function _E(Q,A="isNan"){if(Q==="float")return"bool";if(Q==="vec2")return"bvec2";if(Q==="vec3")return"bvec3";if(Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} types: ${Q}`)}function N0(Q){return _E(Q,"isInf")}const xA=(Q,A)=>new gD({a:Q,b:A}),wI=(Q,A)=>new QD({a:Q,b:A}),kA=(Q,A)=>new BD({a:Q,b:A}),mg=(Q,A)=>new CD({a:Q,b:A}),OQ=(Q,A)=>new ED({a:Q,b:A}),$E=(Q,A)=>new DD({a:Q,b:A}),c0=Q=>new iD({a:Q}).outputs,NB=Q=>new wD({a:Q}),M0=Q=>new oD({a:Q}),J0=Q=>new sD({a:Q}),U0=Q=>new GD({a:Q}),t0=Q=>new yD({a:Q}),H0=Q=>new hD({a:Q}),L0=Q=>new RD({a:Q}),Zg=Q=>new kD({a:Q}),Y0=(Q,A)=>new FD({a:Q,b:A}),K0=Q=>new aD({a:Q}),e0=Q=>new SD({a:Q}),r0=Q=>new ND({a:Q}),n0=Q=>new cD({a:Q}),d0=Q=>new MD({a:Q}),q0=Q=>new JD({a:Q}),x0=Q=>new UD({a:Q}),l0=(Q,A)=>new tD({a:Q,b:A}),AD=(Q,A)=>new HD({a:Q,b:A}),p0=(Q,A,I)=>new LD({a:Q,min:A,max:I}),ID=(Q,A,I)=>new YD({a:Q,b:A,t:I}),f0=(Q,A)=>new KD({edge:Q,x:A}),b0=(Q,A,I)=>new eD({edge0:Q,edge1:A,x:I}),P0=Q=>new rD({a:Q}),u0=Q=>new nD({a:Q});class gD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"sum",outTypeFunc:SB}),this.statements=({inputs:g,outputs:B})=>[`${B.sum} = ${g.a} + ${g.b};`]}}class QD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"difference",outTypeFunc:WG}),this.statements=({inputs:g,outputs:B})=>[`${B.difference} = ${g.a} - ${g.b};`]}}class BD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:jG}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = ${g.a} * ${g.b};`]}}class CD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"quotient",outTypeFunc:vG}),this.statements=({inputs:g,outputs:B})=>[`${B.quotient} = ${g.a} / ${g.b};`]}}class ED extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:zG}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = ${g.a} % ${g.b};`]}}class DD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:_G}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = mod(${g.a}, ${g.b});`]}}class iD extends d{constructor({a:A}){const I={a:CA(A)},g=I.a,B={fract:g,integer:g};super({inTypes:I,outTypes:B,inputs:{a:A}}),this.statements=({inputs:C,outputs:E})=>[`${E.fract} = modf(${C.a}, ${E.integer});`]}}class wD extends e{constructor({a:A}){super({a:A,outKey:"neg",outTypeFunc:$G}),this.statements=({inputs:I,outputs:g})=>[`${g.neg} = -${I.a};`]}}class oD extends e{constructor({a:A}){super({a:A,outKey:"abs",outTypeFunc:A0}),this.statements=({inputs:I,outputs:g})=>[`${g.abs} = abs(${I.a});`]}}class sD extends e{constructor({a:A}){super({a:A,outKey:"sign",outTypeFunc:I0}),this.statements=({inputs:I,outputs:g})=>[`${g.sign} = sign(${I.a});`]}}class GD extends e{constructor({a:A}){super({a:A,outKey:"floor",outTypeFunc:g0}),this.statements=({inputs:I,outputs:g})=>[`${g.floor} = floor(${I.a});`]}}class yD extends e{constructor({a:A}){super({a:A,outKey:"ceil",outTypeFunc:Q0}),this.statements=({inputs:I,outputs:g})=>[`${g.ceil} = ceil(${I.a});`]}}class hD extends e{constructor({a:A}){super({a:A,outKey:"trunc",outTypeFunc:B0}),this.statements=({inputs:I,outputs:g})=>[`${g.trunc} = trunc(${I.a});`]}}class RD extends e{constructor({a:A}){super({a:A,outKey:"round",outTypeFunc:C0}),this.statements=({inputs:I,outputs:g})=>[`${g.round} = round(${I.a});`]}}class kD extends e{constructor({a:A}){super({a:A,outKey:"fract",outTypeFunc:E0}),this.statements=({inputs:I,outputs:g})=>[`${g.fract} = fract(${I.a});`]}}class FD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"power",outTypeFunc:D0}),this.statements=({inputs:g,outputs:B})=>[`${B.power} = pow(${g.a}, ${g.b});`]}}class aD extends e{constructor({a:A}){super({a:A,outKey:"exp",outTypeFunc:i0}),this.statements=({inputs:I,outputs:g})=>[`${g.exp} = exp(${I.a});`]}}class SD extends e{constructor({a:A}){super({a:A,outKey:"exp2",outTypeFunc:w0}),this.statements=({inputs:I,outputs:g})=>[`${g.exp2} = exp2(${I.a});`]}}class ND extends e{constructor({a:A}){super({a:A,outKey:"log",outTypeFunc:o0}),this.statements=({inputs:I,outputs:g})=>[`${g.log} = log(${I.a});`]}}class cD extends e{constructor({a:A}){super({a:A,outKey:"log2",outTypeFunc:s0}),this.statements=({inputs:I,outputs:g})=>[`${g.log2} = log2(${I.a});`]}}class MD extends e{constructor({a:A}){super({a:A,outKey:"sqr",outTypeFunc:G0}),this.statements=({inputs:I,outputs:g})=>[`${g.sqr} = ${I.a} * ${I.a};`]}}class JD extends e{constructor({a:A}){super({a:A,outKey:"sqrt",outTypeFunc:y0}),this.statements=({inputs:I,outputs:g})=>[`${g.sqrt} = sqrt(${I.a});`]}}class UD extends e{constructor({a:A}){super({a:A,outKey:"inversesqrt",outTypeFunc:h0}),this.statements=({inputs:I,outputs:g})=>[`${g.inversesqrt} = inversesqrt(${I.a});`]}}class tD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"min",outTypeFunc:zE}),this.statements=({inputs:g,outputs:B})=>[`${B.min} = min(${g.a}, ${g.b});`]}}class HD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"max",outTypeFunc:R0}),this.statements=({inputs:g,outputs:B})=>[`${B.max} = max(${g.a}, ${g.b});`]}}class LD extends ZI{constructor({a:A,min:I,max:g}){super({a:A,b:I,c:g,outKey:"clamp",outTypeFunc:k0}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:D,c:i}=B;return[`${C.clamp} = clamp(${E}, ${D}, ${i});`]}}}class YD extends ZI{constructor({a:A,b:I,t:g}){super({a:A,b:I,c:g,outKey:"mix",outTypeFunc:F0}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:D,c:i}=B;return[`${C.mix} = mix(${E}, ${D}, ${i});`]}}}class KD extends DA{constructor({edge:A,x:I}){super({a:A,b:I,outKey:"step",outTypeFunc:a0}),this.statements=({inputs:g,outputs:B})=>{const{a:C,b:E}=g;return[`${B.step} = step(${C}, ${E});`]}}}class eD extends ZI{constructor({edge0:A,edge1:I,x:g}){super({a:A,b:I,c:g,outKey:"smoothstep",outTypeFunc:S0}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:D,c:i}=B;return[`${C.smoothstep} = smoothstep(${E}, ${D}, ${i});`]}}}class rD extends e{constructor({a:A}){super({a:A,outKey:"isNan",outTypeFunc:_E}),this.statements=({inputs:I,outputs:g})=>[`${g.isNan} = isNan(${I.a});`]}}class nD extends e{constructor({a:A}){super({a:A,outKey:"isInf",outTypeFunc:N0}),this.statements=({inputs:I,outputs:g})=>[`${g.isInf} = isInf(${I.a});`]}}const T0=(Q,A)=>new qD({a:Q,b:A}),O0=(Q,A)=>new xD({a:Q,b:A}),m0=(Q,A)=>new lD({a:Q,b:A}),Z0=Q=>new pD({a:Q}),V0=(Q,A)=>new jD({a:Q,b:A}),X0=(Q,A)=>new vD({a:Q,b:A}),W0=(Q,A)=>new fD({a:Q,b:A}),j0=(Q,A)=>new bD({a:Q,b:A}),v0=(Q,A)=>new PD({a:Q,b:A}),dD=(Q,A)=>new uD({a:Q,b:A}),z0=(Q,A)=>new TD({a:Q,b:A}),_0=(Q,A)=>new OD({a:Q,b:A}),$0=Q=>new mD({a:Q}),Ay=Q=>new ZD({a:Q}),cB=(Q,A,I)=>new VD({cond:Q,t:A,f:I}),Iy=Q=>new WD({a:Q});class qD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"and"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.and==="bool"?[`${B.and} = ${g.a} && ${g.b};`]:[`${B.and} = ${g.a} & ${g.b};`]}}class xD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"or"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.or==="bool"?[`${B.or} = ${g.a} || ${g.b};`]:[`${B.or} = ${g.a} | ${g.b};`]}}class lD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"xor"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.xor==="bool"?[`${B.xor} = ${g.a} ^^ ${g.b};`]:[`${B.xor} = ${g.a} ^ ${g.b};`]}}class pD extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"not"}),this.statements=({inputs:I,outputs:g})=>this.outTypes.not==="bool"?[`${g.not} = !${I.a};`]:[`${g.not} = not(${I.a});`]}}class fD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>hQ(g,"lessThan"),outKey:"lessThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThan==="bool"?[`${B.lessThan} = ${g.a} < ${g.b};`]:[`${B.lessThan} = lessThan(${g.a}, ${g.b});`]}}class bD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>hQ(g,"lessThanEqual"),outKey:"lessThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThanEqual==="bool"?[`${B.lessThanEqual} = ${g.a} <= ${g.b};`]:[`${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});`]}}class PD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>hQ(g,"greaterThan"),outKey:"greaterThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThan==="bool"?[`${B.greaterThan} = ${g.a} > ${g.b};`]:[`${B.greaterThan} = greaterThan(${g.a}, ${g.b});`]}}class uD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>hQ(g,"greaterThanEqual"),outKey:"greaterThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThanEqual==="bool"?[`${B.greaterThanEqual} = ${g.a} >= ${g.b};`]:[`${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});`]}}class TD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:XD,outKey:"equal"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.equal==="bool"?[`${B.equal} = ${g.a} == ${g.b};`]:[`${B.equal} = equal(${g.a}, ${g.b});`]}}class OD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:gy,outKey:"notEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.notEqual==="bool"?[`${B.notEqual} = ${g.a} != ${g.b};`]:[`${B.notEqual} = notEqual(${g.a}, ${g.b});`]}}class mD extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"any"}),this.statements=({inputs:I,outputs:g})=>[`${g.any} = any(${I.a});`]}}class ZD extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"all"}),this.statements=({inputs:I,outputs:g})=>[`${g.all} = all(${I.a});`]}}class VD extends ZI{constructor({cond:A,t:I,f:g}){super({a:A,b:I,c:g,outKey:"select",outTypeFunc:(B,C,E)=>C}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:D,c:i}=B;return[`${C.select} = (${E}) ? (${D}) : (${i});`]}}}function hQ(Q,A){if(mI(Q))return"bool";if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function XD(Q,A="equal"){if(mI(Q))return"bool";if(OI(Q))return Q;if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function gy(Q){return XD(Q,"notEqual")}function Qy(Q){if(OI(Q))return"bool";if(lA(Q))return"int";if(pA(Q))return"uint";throw new Error(`Invalid compXor type: ${Q}`)}class WD extends e{constructor({a:A}){const I=Qy(CA(A));super({a:A,outTypeFunc:g=>I,outKey:"compXor"}),this.statements=({inputs:g,outputs:B})=>{if(mI(this.outTypes.compXor))return[`${B.compXor} = ${g.a};`];const E=(Bg(I)?["x","y"]:Cg(I)?["x","y","z"]:["x","y","z","w"]).map(i=>`${g.a}.${i}`),D=OI(I)?"^^":"^";return[`${B.compXor} = ${E.join(` ${D} `)};`]}}}class jD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"shr"}),this.statements=({inputs:g,outputs:B})=>[`${B.shr} = ${g.a} >> ${g.b};`]}}class vD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"shl"}),this.statements=({inputs:g,outputs:B})=>[`${B.shl} = ${g.a} << ${g.b};`]}}const By=Q=>new Qi({value:Q}),Cy=Q=>new Bi({value:Q}),Ey=Q=>new Ci({value:Q}),zD=Q=>new Ei({value:Q}),Dy=Q=>new Di({value:Q}),iy=Q=>new ii({value:Q}),wy=Q=>new wi({value:Q}),oy=Q=>new oi({value:Q}),sy=Q=>new si({value:Q}),Gy=Q=>new Gi({value:Q}),yy=Q=>new yi({value:Q}),hy=Q=>new hi({value:Q}),Ry=Q=>new Ri({value:Q}),_D=Q=>new ki({value:Q}),PI=Q=>new Fi({value:Q}),$D=Q=>new ai({value:Q}),ky=Q=>new Si({value:Q}),Fy=Q=>new Ni({value:Q}),ay=Q=>new ci({value:Q}),Ai=Q=>new Mi({value:Q}),Ii=Q=>new Ji({value:Q}),Sy=Q=>new Ui({value:Q}),Ny=Q=>new ti({value:Q}),cy=Q=>new Hi({value:Q}),My=Q=>new Li({value:Q}),Jy=Q=>new Yi({value:Q}),Uy=Q=>new Ki({value:Q}),gi=Q=>new ei({value:Q}),ty=Q=>new ri({value:Q}),mQ=Q=>new ni({value:Q});class HA extends e{constructor({value:A,outType:I,outKey:g}){super({a:A,outTypeFunc:()=>I,outKey:g}),this.statements=({inputs:B,outputs:C})=>[`${C[g]} = ${yC(I)}(${B.a});`]}}class Qi extends HA{constructor({value:A}){super({value:A,outType:"bool",outKey:"bool"})}}class Bi extends HA{constructor({value:A}){super({value:A,outType:"int",outKey:"int"})}}class Ci extends HA{constructor({value:A}){super({value:A,outType:"uint",outKey:"uint"})}}class Ei extends HA{constructor({value:A}){super({value:A,outType:"float",outKey:"float"})}}class Di extends HA{constructor({value:A}){super({value:A,outType:"bvec2",outKey:"bvec2"})}}class ii extends HA{constructor({value:A}){super({value:A,outType:"bvec3",outKey:"bvec3"})}}class wi extends HA{constructor({value:A}){super({value:A,outType:"bvec4",outKey:"bvec4"})}}class oi extends HA{constructor({value:A}){super({value:A,outType:"ivec2",outKey:"ivec2"})}}class si extends HA{constructor({value:A}){super({value:A,outType:"ivec3",outKey:"ivec3"})}}class Gi extends HA{constructor({value:A}){super({value:A,outType:"ivec4",outKey:"ivec4"})}}class yi extends HA{constructor({value:A}){super({value:A,outType:"uvec2",outKey:"uvec2"})}}class hi extends HA{constructor({value:A}){super({value:A,outType:"uvec3",outKey:"uvec3"})}}class Ri extends HA{constructor({value:A}){super({value:A,outType:"uvec4",outKey:"uvec4"})}}class ki extends HA{constructor({value:A}){super({value:A,outType:"vec2",outKey:"vec2"})}}class Fi extends HA{constructor({value:A}){super({value:A,outType:"vec3",outKey:"vec3"})}}class ai extends HA{constructor({value:A}){super({value:A,outType:"vec4",outKey:"vec4"})}}class Si extends HA{constructor({value:A}){super({value:A,outType:"mat2",outKey:"mat2"})}}class Ni extends HA{constructor({value:A}){super({value:A,outType:"mat3",outKey:"mat3"})}}class ci extends HA{constructor({value:A}){super({value:A,outType:"mat4",outKey:"mat4"})}}class Mi extends e{constructor({value:A}){super({a:A,outKey:"int",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.int} = floatBitsToInt(${I.a});`]}}class Ji extends e{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = floatBitsToUint(${I.a});`]}}class Ui extends e{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = intBitsToFloat(${I.a});`]}}class ti extends e{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = uintBitsToFloat(${I.a});`]}}class Hi extends e{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packSnorm2x16(${I.a});`]}}class Li extends e{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackSnorm2x16(${I.a});`]}}class Yi extends e{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packUnorm2x16(${I.a});`]}}class Ki extends e{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackUnorm2x16(${I.a});`]}}class ei extends e{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packHalf2x16(${I.a});`]}}class ri extends e{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackHalf2x16(${I.a});`]}}class ni extends e{constructor({value:A}){super({a:A,outKey:"rgba8",outTypeFunc:()=>"vec4"}),this.statements=({inputs:I,outputs:g})=>[`uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`,`${g.rgba8} = vec4(uRgba) / 255.0;`]}}const Hy=Q=>new qi({a:Q}),Ly=(Q,A)=>new xi({a:Q,b:A}),di=(Q,A)=>new li({a:Q,b:A}),Yy=(Q,A)=>new pi({a:Q,b:A}),Ug=Q=>new fi({a:Q}),Ky=(Q,A,I)=>new ui({a:Q,b:A,c:I}),ey=(Q,A)=>new Ti({incident:Q,normal:A}),ry=(Q,A,I)=>new Oi({incident:Q,normal:A,eta:I}),Ag=Q=>new ji({vector:Q}),yI=({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:D,b:i,a:w})=>new vi({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:D,b:i,a:w}),ny=Q=>new bi({a:Q}),dy=(Q,A)=>new Pi({a:Q,b:A}),qy=(Q,A)=>new zi({vector:Q,select:A}),xy=(Q,A)=>new mi({a:Q,b:A}),ly=(Q,A)=>new Zi({a:Q,b:A}),py=Q=>new Vi({a:Q}),fy=Q=>new Xi({a:Q}),by=Q=>new Wi({a:Q});class qi extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>"float",outKey:"length"}),this.statements=({inputs:I,outputs:g})=>[`${g.length} = length(${I.a});`]}}class xi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"distance",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.distance} = distance(${g.a}, ${g.b});`]}}class li extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"dot",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.dot} = dot(${g.a}, ${g.b});`]}}class pi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"cross",outTypeFunc:(g,B)=>"vec3"}),this.statements=({inputs:g,outputs:B})=>[`${B.cross} = cross(${g.a}, ${g.b});`]}}class fi extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"normalize"}),this.statements=({inputs:I,outputs:g})=>[`${g.normalize} = normalize(${I.a});`]}}function Py(Q){if(Q==="vec3")return"vec2";if(Q==="vec4")return"vec3";throw new Error("Invalid type")}class bi extends e{constructor({a:A}){super({a:A,outTypeFunc:I=>Py(I),outKey:"projected"}),this.statements=({inputs:I,outputs:g})=>{if(this.inTypes.a==="vec3")return[`${g.projected} = ${I.a}.xy / ${I.a}.z;`];if(this.inTypes.a==="vec4")return[`${g.projected} = ${I.a}.xyz / ${I.a}.w;`];throw new Error("Invalid type")}}}function uy(Q){if(Q==="float")return"vec2";if(Q==="vec2")return"vec3";if(Q==="vec3")return"vec4";throw new Error("Invalid type")}class Pi extends DA{constructor({a:A,b:I}){const g=CA(A),B=uy(g);super({a:A,b:I,outKey:"extend",outTypeFunc:()=>B}),this.statements=({inputs:C,outputs:E})=>[`${E.extend} = ${B}(${C.a}, ${C.b});`]}}class ui extends ZI{constructor({a:A,b:I,c:g}){super({a:A,b:I,c:g,outKey:"forward",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.forward} = faceforward(${B.a}, ${B.b}, ${B.c});`]}}class Ti extends DA{constructor({incident:A,normal:I}){super({a:A,b:I,outKey:"reflection",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.reflection} = reflect(${g.a}, ${g.b});`]}}class Oi extends ZI{constructor({incident:A,normal:I,eta:g}){super({a:A,b:I,c:g,outKey:"refraction",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.refraction} = refract(${B.a}, ${B.b}, ${B.c});`]}}class mi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = matrixCompMult(${A}, ${I});`]}}function Ty(Q,A){if(Q==="vec2"){if(A==="vec2")return"mat2";if(A==="vec3")return"mat3x2";if(A==="vec4")return"mat4x2"}if(Q==="vec3"){if(A==="vec2")return"mat2x3";if(A==="vec3")return"mat3";if(A==="vec4")return"mat4x3"}if(Q==="vec4"){if(A==="vec2")return"mat2x4";if(A==="vec3")return"mat3x4";if(A==="vec4")return"mat4"}throw new Error(`Invalid outer type: ${Q}, ${A}`)}class Zi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"outer",outTypeFunc:Ty}),this.statements=({inputs:g,outputs:B})=>[`${B.outer} = outerProduct(${g.a}, ${g.b});`]}}function Oy(Q){if(Q==="mat2")return"mat2";if(Q==="mat3")return"mat3";if(Q==="mat4")return"mat4";if(Q==="mat2x2")return"mat2x2";if(Q==="mat2x3")return"mat3x2";if(Q==="mat2x4")return"mat4x2";if(Q==="mat3x2")return"mat2x3";if(Q==="mat3x3")return"mat3x3";if(Q==="mat3x4")return"mat4x3";if(Q==="mat4x2")return"mat2x4";if(Q==="mat4x3")return"mat3x4";if(Q==="mat4x4")return"mat4x4";throw new Error(`Invalid transpose type: ${Q}`)}class Vi extends e{constructor({a:A}){super({a:A,outKey:"transpose",outTypeFunc:Oy}),this.statements=({inputs:I,outputs:g})=>[`${g.transpose} = transpose(${I.a});`]}}class Xi extends e{constructor({a:A}){super({a:A,outKey:"det",outTypeFunc:I=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.det} = determinant(${I.a});`]}}class Wi extends e{constructor({a:A}){super({a:A,outKey:"inverse",outTypeFunc:I=>I}),this.statements=({inputs:I,outputs:g})=>[`${g.inverse} = inverse(${A});`]}}function my(Q){const A=I=>I;switch(Q){case"vec2":return A({x:"float",y:"float",r:"float",g:"float"});case"vec3":return A({x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"});case"vec4":return A({x:"float",y:"float",z:"float",w:"float",r:"float",g:"float",b:"float",a:"float"});case"ivec2":return A({x:"int",y:"int",r:"int",g:"int"});case"ivec3":return A({x:"int",y:"int",z:"int",r:"int",g:"int",b:"int"});case"ivec4":return A({x:"int",y:"int",z:"int",w:"int",r:"int",g:"int",b:"int",a:"int"});case"uvec2":return A({x:"uint",y:"uint",r:"uint",g:"uint"});case"uvec3":return A({x:"uint",y:"uint",z:"uint",r:"uint",g:"uint",b:"uint"});case"uvec4":return A({x:"uint",y:"uint",z:"uint",w:"uint",r:"uint",g:"uint",b:"uint",a:"uint"});default:throw new Error(`Invalid vector type: ${Q}`)}}class ji extends d{constructor({vector:A}){const g={vector:CA(A)},B=my(g.vector);super({inTypes:g,outTypes:B,inputs:{vector:A}}),this.statements=({inputs:C,outputs:E})=>{const{x:D,y:i,z:w,w:s,r:o,g:y,b:h,a:k}=E,{vector:R}=C;return[D?`${D} = ${R}.x;`:null,i?`${i} = ${R}.y;`:null,w?`${w} = ${R}.z;`:null,s?`${s} = ${R}.w;`:null,o?`${o} = ${R}.r;`:null,y?`${y} = ${R}.g;`:null,h?`${h} = ${R}.b;`:null,k?`${k} = ${R}.a;`:null].filter(Boolean)}}}class vi extends d{constructor({vector:A,vectorType:I,x:g,y:B,z:C,w:E,r:D,g:i,b:w,a:s}){if(!A&&!I)throw new Error("Either vector or vectorType must be provided");const o=I??CA(A),y=oC(o),h=sC(o),k={vector:o,x:y,y,r:y,g:y},R={vector:A,x:g,y:B,r:D,g:i};h>=3&&(Object.assign(k,{z:y,b:y}),Object.assign(R,{z:C,b:w})),h>=4&&(Object.assign(k,{w:y,a:y}),Object.assign(R,{w:E,a:s})),super({inTypes:k,outTypes:{vector:o},inputs:R}),this.statements=({inputs:F,outputs:a})=>{const{vector:S}=a,{vector:M,x:c,y:N,z:U,w:J,r:t,g:H,b:K,a:Y}=F,L=[`${S}.x = ${c??t??(M?`${M}.x`:wg(y))};`,`${S}.y = ${N??H??(M?`${M}.y`:wg(y))};`];return h>=3&&L.push(`${S}.z = ${U??K??(M?`${M}.z`:wg(y))};`),h>=4&&L.push(`${S}.w = ${J??Y??(M?`${M}.w`:wg(y))};`),L}}dynoOut(){return new V(this,"vector")}}function Zy(Q,A){let I=null;if(rg(Q)?I=A.length===1?"float":A.length===2?"vec2":A.length===3?"vec3":A.length===4?"vec4":null:lA(Q)?I=A.length===1?"int":A.length===2?"ivec2":A.length===3?"ivec3":A.length===4?"ivec4":null:pA(Q)&&(I=A.length===1?"uint":A.length===2?"uvec2":A.length===3?"uvec3":A.length===4?"uvec4":null),I==null)throw new Error(`Invalid swizzle: ${A}`);return I}class zi extends e{constructor({vector:A,select:I}){super({a:A,outKey:"swizzle",outTypeFunc:g=>Zy(g,I)}),this.statements=({inputs:g,outputs:B})=>[`${B.swizzle} = ${g.a}.${I};`]}}const Vy=(Q,A,I)=>new Bw({index:Q,from:A,to:I}),Xy=Q=>new Eg({value:Q}),Wy=Q=>new $A({state:Q}),jy=Q=>new AI({state:Q}),_i=Q=>new Cw({value:Q}),$i=Q=>new Ew({value:Q}),Aw=Q=>new Dw({value:Q}),Iw=Q=>new iw({value:Q}),vy=Q=>new ww({value:Q}),zy=Q=>new ow({value:Q}),gw=Q=>new sw({value:Q}),ZQ=Q=>new Gw({value:Q}),Qw=(Q,A,I)=>new yw({z:Q,zNear:A,zFar:I}).outputs.depth,_y=Q=>new hw({index:Q});class Bw extends d{constructor({from:A,to:I,index:g}){super({inTypes:{from:"int",to:"int",index:"int"},outTypes:{index:"int"},inputs:{from:A,to:I,index:g},statements:({inputs:B,outputs:C})=>[`${C.index} = ${B.index} - ${B.from} + ${B.to};`]})}dynoOut(){return new V(this,"index")}}class $A extends d{constructor({state:A}){const I=CA(A);super({inTypes:{state:I},outTypes:{state:"uint"},inputs:{state:A},globals:()=>[oA(` +`)+this.after}}const KB=new WeakMap;function Ya(Q){let A=KB.get(Q);return A||(A=new a.RawShaderMaterial({glslVersion:a.GLSL3,vertexShader:YE,fragmentShader:Q.shader,uniforms:Q.uniforms}),KB.set(Q,A),A)}function yB(Q,A,I="add"){const g=()=>{throw new Error(`Invalid ${I} types: ${Q}, ${A}`)};if(Q===A)return Q;if(Q==="int"){if(lA(A))return A;g()}if(A==="int"){if(lA(Q))return Q;g()}if(Q==="uint"){if(xA(A))return A;g()}if(A==="uint"){if(xA(Q))return Q;g()}if(Q==="float"){if(UI(A))return A;g()}if(A==="float"){if(UI(Q))return Q;g()}throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function da(Q,A){return yB(Q,A,"sub")}function la(Q,A){const I=()=>{throw new Error(`Invalid mul types: ${Q}, ${A}`)},g=B=>B;if(Q==="int"){if(lA(A))return g(A);I()}if(A==="int"){if(lA(Q))return g(Q);I()}if(Q==="uint"){if(xA(A))return g(A);I()}if(A==="uint"){if(xA(Q))return g(Q);I()}if(Q==="float"){if(UI(A))return g(A);I()}if(A==="float"){if(UI(Q))return g(Q);I()}if(lA(Q)||xA(Q)||lA(A)||xA(A)){if(Q===A)return g(Q);I()}if(Q==="vec2"){if(A==="vec2"||KI(A))return g("vec2");if(A==="mat3x2")return g("vec3");if(A==="mat4x2")return g("vec4");I()}if(Q==="vec3"){if(A==="mat2x3")return g("vec2");if(A==="vec3"||rI(A))return g("vec3");if(A==="mat4x3")return g("vec4");I()}if(Q==="vec4"){if(A==="mat2x4")return g("vec2");if(A==="mat3x4")return g("vec3");if(A==="vec4"||YI(A))return g("vec4");I()}if(A==="vec2"){if(KI(Q))return g("vec2");if(Q==="mat2x3")return g("vec3");if(Q==="mat2x4")return g("vec4");I()}if(A==="vec3"){if(Q==="mat3x2")return g("vec2");if(rI(Q))return g("vec3");if(Q==="mat3x4")return g("vec4");I()}if(A==="vec4"){if(Q==="mat4x2")return g("vec2");if(Q==="mat4x3")return g("vec3");if(YI(Q))return g("vec4");I()}if(KI(Q)){if(KI(A))return g("mat2");if(A==="mat3x2")return g("mat3x2");if(A==="mat4x2")return g("mat4x2");I()}if(Q==="mat2x3"){if(KI(A))return g("mat2x3");if(A==="mat3x2")return g("mat3");if(A==="mat4x2")return g("mat4x3");I()}if(Q==="mat2x4"){if(KI(A))return g("mat2x4");if(A==="mat3x2")return g("mat3x4");if(A==="mat4x2")return g("mat4");I()}if(Q==="mat3x2"){if(A==="mat2x3")return g("mat2");if(rI(A))return g("mat3x2");if(A==="mat4x3")return g("mat4x2");I()}if(rI(Q)){if(A==="mat2x3")return g("mat2x3");if(rI(A))return g("mat3");if(A==="mat4x3")return g("mat4x3");I()}if(Q==="mat3x4"){if(A==="mat2x3")return g("mat2x4");if(rI(A))return g("mat3x4");if(A==="mat4x3")return g("mat4");I()}if(Q==="mat4x2"){if(A==="mat2x4")return g("mat2");if(A==="mat3x4")return g("mat3x2");if(YI(A))return g("mat4x2");I()}if(Q==="mat4x3"){if(A==="mat2x4")return g("mat2x3");if(A==="mat3x4")return g("mat3");if(YI(A))return g("mat4x3");I()}if(YI(Q)){if(A==="mat2x4")return g("mat2x4");if(A==="mat3x4")return g("mat3x4");if(YI(A))return g("mat4");I()}throw new Error(`Invalid mul types: ${Q}, ${A}`)}function xa(Q,A){return yB(Q,A,"div")}function qa(Q,A){if(Q===A)return Q;if(Q==="int"){if(lA(A))return A}else if(A==="int"){if(lA(Q))return Q}else if(Q==="uint"){if(xA(A))return A}else if(A==="uint"&&xA(Q))return Q;throw new Error(`Invalid imod types: ${Q}, ${A}`)}function pa(Q,A){if(Q===A||A==="float")return Q;throw new Error(`Invalid mod types: ${Q}, ${A}`)}function fa(Q){return Q}function ua(Q){return Q}function ba(Q){return Q}function Pa(Q){return Q}function ma(Q){return Q}function Ta(Q){return Q}function Oa(Q){return Q}function Za(Q){return Q}function va(Q){return Q}function Xa(Q){return Q}function Va(Q){return Q}function Wa(Q){return Q}function ja(Q){return Q}function za(Q){return Q}function _a(Q){return Q}function $a(Q){return Q}function bE(Q,A,I="min"){if(Q===A)return Q;if(A==="float"){if(Hg(Q))return Q}else if(A==="int"){if(lA(Q))return Q}else if(A==="uint"&&xA(Q))return Q;throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function At(Q,A){return bE(Q,A,"max")}function It(Q,A,I){if(A==="float"){if(Hg(Q))return Q}else if(A==="int"){if(lA(Q))return Q}else if(A==="uint"&&xA(Q))return Q;throw new Error(`Invalid clamp types: ${Q}, ${A}`)}function gt(Q,A,I){if(I===Q||I==="float"||I==="bool"&&Q==="float"||I==="bvec2"&&Q==="vec2"||I==="bvec3"&&Q==="vec3"||I==="bvec4"&&Q==="vec4")return Q;throw new Error(`Invalid mix types: ${Q}, ${A}, ${I}`)}function Qt(Q,A){if(Q===A||A==="float")return A;throw new Error(`Invalid step types: ${Q}, ${A}`)}function Bt(Q,A,I){if(Q===A&&(Q===I||Q==="float"))return I;throw new Error(`Invalid smoothstep types: ${Q}, ${A}, ${I}`)}function PE(Q,A="isNan"){if(Q==="float")return"bool";if(Q==="vec2")return"bvec2";if(Q==="vec3")return"bvec3";if(Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} types: ${Q}`)}function Ct(Q){return PE(Q,"isInf")}const qA=(Q,A)=>new ZE({a:Q,b:A}),EI=(Q,A)=>new vE({a:Q,b:A}),FA=(Q,A)=>new XE({a:Q,b:A}),Zg=(Q,A)=>new VE({a:Q,b:A}),bQ=(Q,A)=>new WE({a:Q,b:A}),mE=(Q,A)=>new jE({a:Q,b:A}),Et=Q=>new zE({a:Q}).outputs,cB=Q=>new _E({a:Q}),it=Q=>new $E({a:Q}),Dt=Q=>new Ai({a:Q}),ot=Q=>new Ii({a:Q}),st=Q=>new gi({a:Q}),wt=Q=>new Qi({a:Q}),at=Q=>new Bi({a:Q}),vg=Q=>new Ci({a:Q}),tt=(Q,A)=>new Ei({a:Q,b:A}),Gt=Q=>new ii({a:Q}),ht=Q=>new Di({a:Q}),yt=Q=>new oi({a:Q}),ct=Q=>new si({a:Q}),St=Q=>new wi({a:Q}),Ft=Q=>new ai({a:Q}),Rt=Q=>new ti({a:Q}),kt=(Q,A)=>new Gi({a:Q,b:A}),TE=(Q,A)=>new hi({a:Q,b:A}),et=(Q,A,I)=>new yi({a:Q,min:A,max:I}),OE=(Q,A,I)=>new ci({a:Q,b:A,t:I}),Nt=(Q,A)=>new Si({edge:Q,x:A}),Mt=(Q,A,I)=>new Fi({edge0:Q,edge1:A,x:I}),Jt=Q=>new Ri({a:Q}),Ut=Q=>new ki({a:Q});class ZE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"sum",outTypeFunc:yB}),this.statements=({inputs:g,outputs:B})=>[`${B.sum} = ${g.a} + ${g.b};`]}}class vE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"difference",outTypeFunc:da}),this.statements=({inputs:g,outputs:B})=>[`${B.difference} = ${g.a} - ${g.b};`]}}class XE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:la}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = ${g.a} * ${g.b};`]}}class VE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"quotient",outTypeFunc:xa}),this.statements=({inputs:g,outputs:B})=>[`${B.quotient} = ${g.a} / ${g.b};`]}}class WE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:qa}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = ${g.a} % ${g.b};`]}}class jE extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:pa}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = mod(${g.a}, ${g.b});`]}}class zE extends l{constructor({a:A}){const I={a:CA(A)},g=I.a,B={fract:g,integer:g};super({inTypes:I,outTypes:B,inputs:{a:A}}),this.statements=({inputs:C,outputs:E})=>[`${E.fract} = modf(${C.a}, ${E.integer});`]}}class _E extends r{constructor({a:A}){super({a:A,outKey:"neg",outTypeFunc:fa}),this.statements=({inputs:I,outputs:g})=>[`${g.neg} = -${I.a};`]}}class $E extends r{constructor({a:A}){super({a:A,outKey:"abs",outTypeFunc:ua}),this.statements=({inputs:I,outputs:g})=>[`${g.abs} = abs(${I.a});`]}}class Ai extends r{constructor({a:A}){super({a:A,outKey:"sign",outTypeFunc:ba}),this.statements=({inputs:I,outputs:g})=>[`${g.sign} = sign(${I.a});`]}}class Ii extends r{constructor({a:A}){super({a:A,outKey:"floor",outTypeFunc:Pa}),this.statements=({inputs:I,outputs:g})=>[`${g.floor} = floor(${I.a});`]}}class gi extends r{constructor({a:A}){super({a:A,outKey:"ceil",outTypeFunc:ma}),this.statements=({inputs:I,outputs:g})=>[`${g.ceil} = ceil(${I.a});`]}}class Qi extends r{constructor({a:A}){super({a:A,outKey:"trunc",outTypeFunc:Ta}),this.statements=({inputs:I,outputs:g})=>[`${g.trunc} = trunc(${I.a});`]}}class Bi extends r{constructor({a:A}){super({a:A,outKey:"round",outTypeFunc:Oa}),this.statements=({inputs:I,outputs:g})=>[`${g.round} = round(${I.a});`]}}class Ci extends r{constructor({a:A}){super({a:A,outKey:"fract",outTypeFunc:Za}),this.statements=({inputs:I,outputs:g})=>[`${g.fract} = fract(${I.a});`]}}class Ei extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"power",outTypeFunc:va}),this.statements=({inputs:g,outputs:B})=>[`${B.power} = pow(${g.a}, ${g.b});`]}}class ii extends r{constructor({a:A}){super({a:A,outKey:"exp",outTypeFunc:Xa}),this.statements=({inputs:I,outputs:g})=>[`${g.exp} = exp(${I.a});`]}}class Di extends r{constructor({a:A}){super({a:A,outKey:"exp2",outTypeFunc:Va}),this.statements=({inputs:I,outputs:g})=>[`${g.exp2} = exp2(${I.a});`]}}class oi extends r{constructor({a:A}){super({a:A,outKey:"log",outTypeFunc:Wa}),this.statements=({inputs:I,outputs:g})=>[`${g.log} = log(${I.a});`]}}class si extends r{constructor({a:A}){super({a:A,outKey:"log2",outTypeFunc:ja}),this.statements=({inputs:I,outputs:g})=>[`${g.log2} = log2(${I.a});`]}}class wi extends r{constructor({a:A}){super({a:A,outKey:"sqr",outTypeFunc:za}),this.statements=({inputs:I,outputs:g})=>[`${g.sqr} = ${I.a} * ${I.a};`]}}class ai extends r{constructor({a:A}){super({a:A,outKey:"sqrt",outTypeFunc:_a}),this.statements=({inputs:I,outputs:g})=>[`${g.sqrt} = sqrt(${I.a});`]}}class ti extends r{constructor({a:A}){super({a:A,outKey:"inversesqrt",outTypeFunc:$a}),this.statements=({inputs:I,outputs:g})=>[`${g.inversesqrt} = inversesqrt(${I.a});`]}}class Gi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"min",outTypeFunc:bE}),this.statements=({inputs:g,outputs:B})=>[`${B.min} = min(${g.a}, ${g.b});`]}}class hi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"max",outTypeFunc:At}),this.statements=({inputs:g,outputs:B})=>[`${B.max} = max(${g.a}, ${g.b});`]}}class yi extends bI{constructor({a:A,min:I,max:g}){super({a:A,b:I,c:g,outKey:"clamp",outTypeFunc:It}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:i,c:o}=B;return[`${C.clamp} = clamp(${E}, ${i}, ${o});`]}}}class ci extends bI{constructor({a:A,b:I,t:g}){super({a:A,b:I,c:g,outKey:"mix",outTypeFunc:gt}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:i,c:o}=B;return[`${C.mix} = mix(${E}, ${i}, ${o});`]}}}class Si extends DA{constructor({edge:A,x:I}){super({a:A,b:I,outKey:"step",outTypeFunc:Qt}),this.statements=({inputs:g,outputs:B})=>{const{a:C,b:E}=g;return[`${B.step} = step(${C}, ${E});`]}}}class Fi extends bI{constructor({edge0:A,edge1:I,x:g}){super({a:A,b:I,c:g,outKey:"smoothstep",outTypeFunc:Bt}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:i,c:o}=B;return[`${C.smoothstep} = smoothstep(${E}, ${i}, ${o});`]}}}class Ri extends r{constructor({a:A}){super({a:A,outKey:"isNan",outTypeFunc:PE}),this.statements=({inputs:I,outputs:g})=>[`${g.isNan} = isNan(${I.a});`]}}class ki extends r{constructor({a:A}){super({a:A,outKey:"isInf",outTypeFunc:Ct}),this.statements=({inputs:I,outputs:g})=>[`${g.isInf} = isInf(${I.a});`]}}const Lt=(Q,A)=>new Ni({a:Q,b:A}),nt=(Q,A)=>new Mi({a:Q,b:A}),Ht=(Q,A)=>new Ji({a:Q,b:A}),Kt=Q=>new Ui({a:Q}),rt=(Q,A)=>new fi({a:Q,b:A}),Yt=(Q,A)=>new ui({a:Q,b:A}),dt=(Q,A)=>new Li({a:Q,b:A}),lt=(Q,A)=>new ni({a:Q,b:A}),xt=(Q,A)=>new Hi({a:Q,b:A}),ei=(Q,A)=>new Ki({a:Q,b:A}),qt=(Q,A)=>new ri({a:Q,b:A}),pt=(Q,A)=>new Yi({a:Q,b:A}),ft=Q=>new di({a:Q}),ut=Q=>new li({a:Q}),SB=(Q,A,I)=>new xi({cond:Q,t:A,f:I}),bt=Q=>new pi({a:Q});class Ni extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"and"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.and==="bool"?[`${B.and} = ${g.a} && ${g.b};`]:[`${B.and} = ${g.a} & ${g.b};`]}}class Mi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"or"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.or==="bool"?[`${B.or} = ${g.a} || ${g.b};`]:[`${B.or} = ${g.a} | ${g.b};`]}}class Ji extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"xor"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.xor==="bool"?[`${B.xor} = ${g.a} ^^ ${g.b};`]:[`${B.xor} = ${g.a} ^ ${g.b};`]}}class Ui extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"not"}),this.statements=({inputs:I,outputs:g})=>this.outTypes.not==="bool"?[`${g.not} = !${I.a};`]:[`${g.not} = not(${I.a});`]}}class Li extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>wQ(g,"lessThan"),outKey:"lessThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThan==="bool"?[`${B.lessThan} = ${g.a} < ${g.b};`]:[`${B.lessThan} = lessThan(${g.a}, ${g.b});`]}}class ni extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>wQ(g,"lessThanEqual"),outKey:"lessThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThanEqual==="bool"?[`${B.lessThanEqual} = ${g.a} <= ${g.b};`]:[`${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});`]}}class Hi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>wQ(g,"greaterThan"),outKey:"greaterThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThan==="bool"?[`${B.greaterThan} = ${g.a} > ${g.b};`]:[`${B.greaterThan} = greaterThan(${g.a}, ${g.b});`]}}class Ki extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>wQ(g,"greaterThanEqual"),outKey:"greaterThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThanEqual==="bool"?[`${B.greaterThanEqual} = ${g.a} >= ${g.b};`]:[`${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});`]}}class ri extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:qi,outKey:"equal"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.equal==="bool"?[`${B.equal} = ${g.a} == ${g.b};`]:[`${B.equal} = equal(${g.a}, ${g.b});`]}}class Yi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:Pt,outKey:"notEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.notEqual==="bool"?[`${B.notEqual} = ${g.a} != ${g.b};`]:[`${B.notEqual} = notEqual(${g.a}, ${g.b});`]}}class di extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"any"}),this.statements=({inputs:I,outputs:g})=>[`${g.any} = any(${I.a});`]}}class li extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"all"}),this.statements=({inputs:I,outputs:g})=>[`${g.all} = all(${I.a});`]}}class xi extends bI{constructor({cond:A,t:I,f:g}){super({a:A,b:I,c:g,outKey:"select",outTypeFunc:(B,C,E)=>C}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:i,c:o}=B;return[`${C.select} = (${E}) ? (${i}) : (${o});`]}}}function wQ(Q,A){if(uI(Q))return"bool";if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function qi(Q,A="equal"){if(uI(Q))return"bool";if(fI(Q))return Q;if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function Pt(Q){return qi(Q,"notEqual")}function mt(Q){if(fI(Q))return"bool";if(lA(Q))return"int";if(xA(Q))return"uint";throw new Error(`Invalid compXor type: ${Q}`)}class pi extends r{constructor({a:A}){const I=mt(CA(A));super({a:A,outTypeFunc:g=>I,outKey:"compXor"}),this.statements=({inputs:g,outputs:B})=>{if(uI(this.outTypes.compXor))return[`${B.compXor} = ${g.a};`];const E=($I(I)?["x","y"]:Ag(I)?["x","y","z"]:["x","y","z","w"]).map(o=>`${g.a}.${o}`),i=fI(I)?"^^":"^";return[`${B.compXor} = ${E.join(` ${i} `)};`]}}}class fi extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"shr"}),this.statements=({inputs:g,outputs:B})=>[`${B.shr} = ${g.a} >> ${g.b};`]}}class ui extends DA{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"shl"}),this.statements=({inputs:g,outputs:B})=>[`${B.shl} = ${g.a} << ${g.b};`]}}const Tt=Q=>new Oi({value:Q}),Ot=Q=>new Zi({value:Q}),Zt=Q=>new vi({value:Q}),bi=Q=>new Xi({value:Q}),vt=Q=>new Vi({value:Q}),Xt=Q=>new Wi({value:Q}),Vt=Q=>new ji({value:Q}),Wt=Q=>new zi({value:Q}),jt=Q=>new _i({value:Q}),zt=Q=>new $i({value:Q}),_t=Q=>new AD({value:Q}),$t=Q=>new ID({value:Q}),A0=Q=>new gD({value:Q}),Pi=Q=>new QD({value:Q}),pI=Q=>new BD({value:Q}),mi=Q=>new CD({value:Q}),I0=Q=>new ED({value:Q}),g0=Q=>new iD({value:Q}),Q0=Q=>new DD({value:Q}),Ti=Q=>new oD({value:Q}),B0=Q=>new sD({value:Q}),C0=Q=>new wD({value:Q}),E0=Q=>new aD({value:Q}),i0=Q=>new tD({value:Q}),D0=Q=>new GD({value:Q}),o0=Q=>new hD({value:Q}),s0=Q=>new yD({value:Q}),w0=Q=>new cD({value:Q}),a0=Q=>new SD({value:Q}),t0=Q=>new FD({value:Q});class NA extends r{constructor({value:A,outType:I,outKey:g}){super({a:A,outTypeFunc:()=>I,outKey:g}),this.statements=({inputs:B,outputs:C})=>[`${C[g]} = ${zB(I)}(${B.a});`]}}class Oi extends NA{constructor({value:A}){super({value:A,outType:"bool",outKey:"bool"})}}class Zi extends NA{constructor({value:A}){super({value:A,outType:"int",outKey:"int"})}}class vi extends NA{constructor({value:A}){super({value:A,outType:"uint",outKey:"uint"})}}class Xi extends NA{constructor({value:A}){super({value:A,outType:"float",outKey:"float"})}}class Vi extends NA{constructor({value:A}){super({value:A,outType:"bvec2",outKey:"bvec2"})}}class Wi extends NA{constructor({value:A}){super({value:A,outType:"bvec3",outKey:"bvec3"})}}class ji extends NA{constructor({value:A}){super({value:A,outType:"bvec4",outKey:"bvec4"})}}class zi extends NA{constructor({value:A}){super({value:A,outType:"ivec2",outKey:"ivec2"})}}class _i extends NA{constructor({value:A}){super({value:A,outType:"ivec3",outKey:"ivec3"})}}class $i extends NA{constructor({value:A}){super({value:A,outType:"ivec4",outKey:"ivec4"})}}class AD extends NA{constructor({value:A}){super({value:A,outType:"uvec2",outKey:"uvec2"})}}class ID extends NA{constructor({value:A}){super({value:A,outType:"uvec3",outKey:"uvec3"})}}class gD extends NA{constructor({value:A}){super({value:A,outType:"uvec4",outKey:"uvec4"})}}class QD extends NA{constructor({value:A}){super({value:A,outType:"vec2",outKey:"vec2"})}}class BD extends NA{constructor({value:A}){super({value:A,outType:"vec3",outKey:"vec3"})}}class CD extends NA{constructor({value:A}){super({value:A,outType:"vec4",outKey:"vec4"})}}class ED extends NA{constructor({value:A}){super({value:A,outType:"mat2",outKey:"mat2"})}}class iD extends NA{constructor({value:A}){super({value:A,outType:"mat3",outKey:"mat3"})}}class DD extends NA{constructor({value:A}){super({value:A,outType:"mat4",outKey:"mat4"})}}class oD extends r{constructor({value:A}){super({a:A,outKey:"int",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.int} = floatBitsToInt(${I.a});`]}}class sD extends r{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = floatBitsToUint(${I.a});`]}}class wD extends r{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = intBitsToFloat(${I.a});`]}}class aD extends r{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = uintBitsToFloat(${I.a});`]}}class tD extends r{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packSnorm2x16(${I.a});`]}}class GD extends r{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackSnorm2x16(${I.a});`]}}class hD extends r{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packUnorm2x16(${I.a});`]}}class yD extends r{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackUnorm2x16(${I.a});`]}}class cD extends r{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packHalf2x16(${I.a});`]}}class SD extends r{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackHalf2x16(${I.a});`]}}class FD extends r{constructor({value:A}){super({a:A,outKey:"rgba8",outTypeFunc:()=>"vec4"}),this.statements=({inputs:I,outputs:g})=>[`uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`,`${g.rgba8} = vec4(uRgba) / 255.0;`]}}const G0=Q=>new kD({a:Q}),h0=(Q,A)=>new eD({a:Q,b:A}),RD=(Q,A)=>new ND({a:Q,b:A}),y0=(Q,A)=>new MD({a:Q,b:A}),kg=Q=>new JD({a:Q}),c0=(Q,A,I)=>new nD({a:Q,b:A,c:I}),S0=(Q,A)=>new HD({incident:Q,normal:A}),F0=(Q,A,I)=>new KD({incident:Q,normal:A,eta:I}),VI=Q=>new qD({vector:Q}),yI=({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:i,b:o,a:D})=>new pD({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:i,b:o,a:D}),R0=Q=>new UD({a:Q}),k0=(Q,A)=>new LD({a:Q,b:A}),e0=(Q,A)=>new fD({vector:Q,select:A}),N0=(Q,A)=>new rD({a:Q,b:A}),M0=(Q,A)=>new YD({a:Q,b:A}),J0=Q=>new dD({a:Q}),U0=Q=>new lD({a:Q}),L0=Q=>new xD({a:Q});class kD extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>"float",outKey:"length"}),this.statements=({inputs:I,outputs:g})=>[`${g.length} = length(${I.a});`]}}class eD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"distance",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.distance} = distance(${g.a}, ${g.b});`]}}class ND extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"dot",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.dot} = dot(${g.a}, ${g.b});`]}}class MD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"cross",outTypeFunc:(g,B)=>"vec3"}),this.statements=({inputs:g,outputs:B})=>[`${B.cross} = cross(${g.a}, ${g.b});`]}}class JD extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"normalize"}),this.statements=({inputs:I,outputs:g})=>[`${g.normalize} = normalize(${I.a});`]}}function n0(Q){if(Q==="vec3")return"vec2";if(Q==="vec4")return"vec3";throw new Error("Invalid type")}class UD extends r{constructor({a:A}){super({a:A,outTypeFunc:I=>n0(I),outKey:"projected"}),this.statements=({inputs:I,outputs:g})=>{if(this.inTypes.a==="vec3")return[`${g.projected} = ${I.a}.xy / ${I.a}.z;`];if(this.inTypes.a==="vec4")return[`${g.projected} = ${I.a}.xyz / ${I.a}.w;`];throw new Error("Invalid type")}}}function H0(Q){if(Q==="float")return"vec2";if(Q==="vec2")return"vec3";if(Q==="vec3")return"vec4";throw new Error("Invalid type")}class LD extends DA{constructor({a:A,b:I}){const g=CA(A),B=H0(g);super({a:A,b:I,outKey:"extend",outTypeFunc:()=>B}),this.statements=({inputs:C,outputs:E})=>[`${E.extend} = ${B}(${C.a}, ${C.b});`]}}class nD extends bI{constructor({a:A,b:I,c:g}){super({a:A,b:I,c:g,outKey:"forward",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.forward} = faceforward(${B.a}, ${B.b}, ${B.c});`]}}class HD extends DA{constructor({incident:A,normal:I}){super({a:A,b:I,outKey:"reflection",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.reflection} = reflect(${g.a}, ${g.b});`]}}class KD extends bI{constructor({incident:A,normal:I,eta:g}){super({a:A,b:I,c:g,outKey:"refraction",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.refraction} = refract(${B.a}, ${B.b}, ${B.c});`]}}class rD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = matrixCompMult(${A}, ${I});`]}}function K0(Q,A){if(Q==="vec2"){if(A==="vec2")return"mat2";if(A==="vec3")return"mat3x2";if(A==="vec4")return"mat4x2"}if(Q==="vec3"){if(A==="vec2")return"mat2x3";if(A==="vec3")return"mat3";if(A==="vec4")return"mat4x3"}if(Q==="vec4"){if(A==="vec2")return"mat2x4";if(A==="vec3")return"mat3x4";if(A==="vec4")return"mat4"}throw new Error(`Invalid outer type: ${Q}, ${A}`)}class YD extends DA{constructor({a:A,b:I}){super({a:A,b:I,outKey:"outer",outTypeFunc:K0}),this.statements=({inputs:g,outputs:B})=>[`${B.outer} = outerProduct(${g.a}, ${g.b});`]}}function r0(Q){if(Q==="mat2")return"mat2";if(Q==="mat3")return"mat3";if(Q==="mat4")return"mat4";if(Q==="mat2x2")return"mat2x2";if(Q==="mat2x3")return"mat3x2";if(Q==="mat2x4")return"mat4x2";if(Q==="mat3x2")return"mat2x3";if(Q==="mat3x3")return"mat3x3";if(Q==="mat3x4")return"mat4x3";if(Q==="mat4x2")return"mat2x4";if(Q==="mat4x3")return"mat3x4";if(Q==="mat4x4")return"mat4x4";throw new Error(`Invalid transpose type: ${Q}`)}class dD extends r{constructor({a:A}){super({a:A,outKey:"transpose",outTypeFunc:r0}),this.statements=({inputs:I,outputs:g})=>[`${g.transpose} = transpose(${I.a});`]}}class lD extends r{constructor({a:A}){super({a:A,outKey:"det",outTypeFunc:I=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.det} = determinant(${I.a});`]}}class xD extends r{constructor({a:A}){super({a:A,outKey:"inverse",outTypeFunc:I=>I}),this.statements=({inputs:I,outputs:g})=>[`${g.inverse} = inverse(${A});`]}}function Y0(Q){const A=I=>I;switch(Q){case"vec2":return A({x:"float",y:"float",r:"float",g:"float"});case"vec3":return A({x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"});case"vec4":return A({x:"float",y:"float",z:"float",w:"float",r:"float",g:"float",b:"float",a:"float"});case"ivec2":return A({x:"int",y:"int",r:"int",g:"int"});case"ivec3":return A({x:"int",y:"int",z:"int",r:"int",g:"int",b:"int"});case"ivec4":return A({x:"int",y:"int",z:"int",w:"int",r:"int",g:"int",b:"int",a:"int"});case"uvec2":return A({x:"uint",y:"uint",r:"uint",g:"uint"});case"uvec3":return A({x:"uint",y:"uint",z:"uint",r:"uint",g:"uint",b:"uint"});case"uvec4":return A({x:"uint",y:"uint",z:"uint",w:"uint",r:"uint",g:"uint",b:"uint",a:"uint"});default:throw new Error(`Invalid vector type: ${Q}`)}}class qD extends l{constructor({vector:A}){const g={vector:CA(A)},B=Y0(g.vector);super({inTypes:g,outTypes:B,inputs:{vector:A}}),this.statements=({inputs:C,outputs:E})=>{const{x:i,y:o,z:D,w,r:s,g:t,b:G,a:c}=E,{vector:h}=C;return[i?`${i} = ${h}.x;`:null,o?`${o} = ${h}.y;`:null,D?`${D} = ${h}.z;`:null,w?`${w} = ${h}.w;`:null,s?`${s} = ${h}.r;`:null,t?`${t} = ${h}.g;`:null,G?`${G} = ${h}.b;`:null,c?`${c} = ${h}.a;`:null].filter(Boolean)}}}class pD extends l{constructor({vector:A,vectorType:I,x:g,y:B,z:C,w:E,r:i,g:o,b:D,a:w}){if(!A&&!I)throw new Error("Either vector or vectorType must be provided");const s=I??CA(A),t=VB(s),G=WB(s),c={vector:s,x:t,y:t,r:t,g:t},h={vector:A,x:g,y:B,r:i,g:o};G>=3&&(Object.assign(c,{z:t,b:t}),Object.assign(h,{z:C,b:D})),G>=4&&(Object.assign(c,{w:t,a:t}),Object.assign(h,{w:E,a:w})),super({inTypes:c,outTypes:{vector:s},inputs:h}),this.statements=({inputs:y,outputs:S})=>{const{vector:F}=S,{vector:e,x:k,y:R,z:N,w:U,r:M,g:J,b:H,a:n}=y,L=[`${F}.x = ${k??M??(e?`${e}.x`:Eg(t))};`,`${F}.y = ${R??J??(e?`${e}.y`:Eg(t))};`];return G>=3&&L.push(`${F}.z = ${N??H??(e?`${e}.z`:Eg(t))};`),G>=4&&L.push(`${F}.w = ${U??n??(e?`${e}.w`:Eg(t))};`),L}}dynoOut(){return new Z(this,"vector")}}function d0(Q,A){let I=null;if(Hg(Q)?I=A.length===1?"float":A.length===2?"vec2":A.length===3?"vec3":A.length===4?"vec4":null:lA(Q)?I=A.length===1?"int":A.length===2?"ivec2":A.length===3?"ivec3":A.length===4?"ivec4":null:xA(Q)&&(I=A.length===1?"uint":A.length===2?"uvec2":A.length===3?"uvec3":A.length===4?"uvec4":null),I==null)throw new Error(`Invalid swizzle: ${A}`);return I}class fD extends r{constructor({vector:A,select:I}){super({a:A,outKey:"swizzle",outTypeFunc:g=>d0(g,I)}),this.statements=({inputs:g,outputs:B})=>[`${B.swizzle} = ${g.a}.${I};`]}}const l0=(Q,A,I)=>new ZD({index:Q,from:A,to:I}),x0=Q=>new gg({value:Q}),q0=Q=>new zA({state:Q}),p0=Q=>new _A({state:Q}),uD=Q=>new vD({value:Q}),bD=Q=>new XD({value:Q}),PD=Q=>new VD({value:Q}),mD=Q=>new WD({value:Q}),f0=Q=>new jD({value:Q}),u0=Q=>new zD({value:Q}),TD=Q=>new _D({value:Q}),PQ=Q=>new $D({value:Q}),OD=(Q,A,I)=>new Ao({z:Q,zNear:A,zFar:I}).outputs.depth,b0=Q=>new Io({index:Q});class ZD extends l{constructor({from:A,to:I,index:g}){super({inTypes:{from:"int",to:"int",index:"int"},outTypes:{index:"int"},inputs:{from:A,to:I,index:g},statements:({inputs:B,outputs:C})=>[`${C.index} = ${B.index} - ${B.from} + ${B.to};`]})}dynoOut(){return new Z(this,"index")}}class zA extends l{constructor({state:A}){const I=CA(A);super({inTypes:{state:I},outTypes:{state:"uint"},inputs:{state:A},globals:()=>[wA(` uint pcg_next(uint state) { return state * 747796405u + 2891336453u; } - `)],statements:({inputs:g,outputs:B})=>{const C=I==="uint"?`${g.state}`:I==="int"?`uint(${g.state})`:`floatBitsToUint(${g.state})`;return[`${B.state} = pcg_next(${C});`]}})}dynoOut(){return new V(this,"state")}}class AI extends d{constructor({state:A}){super({inTypes:{state:"uint"},outTypes:{hash:"uint"},inputs:{state:A},globals:()=>[oA(` + `)],statements:({inputs:g,outputs:B})=>{const C=I==="uint"?`${g.state}`:I==="int"?`uint(${g.state})`:`floatBitsToUint(${g.state})`;return[`${B.state} = pcg_next(${C});`]}})}dynoOut(){return new Z(this,"state")}}class _A extends l{constructor({state:A}){super({inTypes:{state:"uint"},outTypes:{hash:"uint"},inputs:{state:A},globals:()=>[wA(` uint pcg_hash(uint state) { uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; return (hash >> 22u) ^ hash; } - `)],statements:({inputs:I,outputs:g})=>[`${g.hash} = pcg_hash(${I.state});`]})}dynoOut(){return new V(this,"hash")}}class Eg extends d{constructor({value:A}){const I=CA(A),g=GC(I);super({inTypes:{value:I},outTypes:{state:"uint"},inputs:{value:A},globals:()=>[oA(` + `)],statements:({inputs:I,outputs:g})=>[`${g.hash} = pcg_hash(${I.state});`]})}dynoOut(){return new Z(this,"hash")}}class gg extends l{constructor({value:A}){const I=CA(A),g=jB(I);super({inTypes:{value:I},outTypes:{state:"uint"},inputs:{value:A},globals:()=>[wA(` uint pcg_mix(uint value) { return value; } @@ -204,79 +204,7 @@ uint pcg_mix(uvec4 value) { return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; } - `)],statements:({inputs:B,outputs:C})=>{const E=pA(I)?`${B.value}`:lA(I)?`${g}(${B.value})`:`floatBitsToUint(${B.value})`;return[`${g} bits = ${E};`,`${C.state} = pcg_mix(bits);`]}})}dynoOut(){return new V(this,"state")}}class Cw extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uint"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new Eg({value:I}).outputs.state;return g=new $A({state:g}).outputs.state,new AI({state:g}).outputs}})}dynoOut(){return new V(this,"hash")}}class Ew extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new Eg({value:I}).outputs.state;g=new $A({state:g}).outputs.state;const B=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const C=new AI({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec2",x:B,y:C})}}})}dynoOut(){return new V(this,"hash")}}class Dw extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new Eg({value:I}).outputs.state;g=new $A({state:g}).outputs.state;const B=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const C=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const E=new AI({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec3",x:B,y:C,z:E})}}})}dynoOut(){return new V(this,"hash")}}class iw extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new Eg({value:I}).outputs.state;g=new $A({state:g}).outputs.state;const B=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const C=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const E=new AI({state:g}).outputs.hash;g=new $A({state:g}).outputs.state;const D=new AI({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec4",x:B,y:C,z:E,w:D})}}})}dynoOut(){return new V(this,"hash")}}class ww extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"float"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=_i(I);return{hash:kA(zD(g),v("float",1/2**32))}}})}dynoOut(){return new V(this,"hash")}}class ow extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=$i(I);return{hash:kA(_D(g),v("float",1/2**32))}}})}dynoOut(){return new V(this,"hash")}}class sw extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=Aw(I);return{hash:kA(PI(g),v("float",1/2**32))}}})}dynoOut(){return new V(this,"hash")}}class Gw extends hI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=Iw(I);return{hash:kA($D(g),v("float",1/2**32))}}})}dynoOut(){return new V(this,"hash")}}class yw extends d{constructor({z:A,zNear:I,zFar:g}){super({inTypes:{z:"float",zNear:"float",zFar:"float"},outTypes:{depth:"float"},inputs:{z:A,zNear:I,zFar:g},statements:({inputs:B,outputs:C})=>[`float clamped = clamp(${B.z}, ${B.zNear}, ${B.zFar});`,`${C.depth} = (log2(clamped + 1.0) - log2(${B.zNear} + 1.0)) / (log2(${B.zFar} + 1.0) - log2(${B.zNear} + 1.0));`]})}dynoOut(){return new V(this,"depth")}}class hw extends d{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{color:"vec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>[`${g.color} = debugColorHue(uint(${I.index}));`]})}dynoOut(){return new V(this,"color")}}const Rw=(Q,{scale:A,scales:I,rotate:g,translate:B})=>new Fw({position:Q,scale:A,scales:I,rotate:g,translate:B}).outputs.position,kw=(Q,{scale:A,scales:I,rotate:g})=>new aw({dir:Q,scale:A,scales:I,rotate:g}).outputs.dir,$y=(Q,{rotate:A})=>new Sw({quaternion:Q,rotate:A}).outputs.quaternion;class Fw extends d{constructor({position:A,scale:I,scales:g,rotate:B,translate:C}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:I,scales:g,rotate:B,translate:C},statements:({inputs:E,outputs:D})=>{const{position:i}=D;if(!i)return[];const{scale:w,scales:s,rotate:o,translate:y}=E;return[`${i} = ${E.position??"vec3(0.0, 0.0, 0.0)"};`,w?`${i} *= ${w};`:null,s?`${i} *= ${s};`:null,o?`${i} = quatVec(${o}, ${i});`:null,y?`${i} += ${y};`:null].filter(Boolean)}})}}class aw extends d{constructor({dir:A,scale:I,scales:g,rotate:B}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:I,scales:g,rotate:B},statements:({inputs:C,outputs:E})=>{const{dir:D}=E;if(!D)return[];const{scale:i,scales:w,rotate:s}=C;return[`${D} = ${C.dir??"vec3(0.0, 0.0, 0.0)"};`,i?`${D} *= ${i};`:null,w?`${D} *= ${w};`:null,s?`${D} = quatVec(${s}, ${D});`:null].filter(Boolean)}})}}class Sw extends d{constructor({quaternion:A,rotate:I}){super({inTypes:{quaternion:"vec4",rotate:"vec4"},outTypes:{quaternion:"vec4"},inputs:{quaternion:A,rotate:I},statements:({inputs:g,outputs:B})=>{const{quaternion:C}=B;return C?[`${C} = ${g.quaternion??"vec4(0.0, 0.0, 0.0, 1.0)"};`,I?`${C} = quatQuat(${g.rotate}, ${C});`:null].filter(Boolean):[]}})}}const Ah=()=>{throw new Error("Not implemented")},Ih=()=>{throw new Error("Not implemented")},gh=()=>{throw new Error("Not implemented")},Qh=()=>{throw new Error("Not implemented")},Bh=()=>{throw new Error("Not implemented")},Ch=()=>{throw new Error("Not implemented")},Eh=(Q,A)=>new Nw({texture:Q,lod:A}),Dh=(Q,A,I)=>new cw({texture:Q,coord:A,bias:I}),ih=(Q,A,I)=>new Mw({texture:Q,coord:A,lod:I});class Nw extends d{constructor({texture:A,lod:I}){const g=CA(A);super({inTypes:{texture:g,lod:"int"},outTypes:{size:Jw(g)},inputs:{texture:A,lod:I},statements:({inputs:B,outputs:C})=>[`${C.size} = textureSize(${B.texture}, ${B.lod??"0"});`]})}dynoOut(){return new V(this,"size")}}class cw extends d{constructor({texture:A,coord:I,bias:g}){const B=CA(A);super({inTypes:{texture:B,coord:wh(B),bias:"float"},outTypes:{sample:Uw(B)},inputs:{texture:A,coord:I,bias:g},statements:({inputs:C,outputs:E})=>[`${E.sample} = texture(${C.texture}, ${C.coord}${C.bias?`, ${C.bias}`:""});`]})}dynoOut(){return new V(this,"sample")}}class Mw extends d{constructor({texture:A,coord:I,lod:g}){const B=CA(A);super({inTypes:{texture:B,coord:Jw(B),lod:"int"},outTypes:{texel:Uw(B)},inputs:{texture:A,coord:I,lod:g},statements:({inputs:C,outputs:E})=>[`${E.texel} = texelFetch(${C.texture}, ${C.coord}, ${C.lod??"0"});`]})}dynoOut(){return new V(this,"texel")}}function Jw(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DShadow":case"samplerCubeShadow":return"ivec2";case"sampler3D":case"usampler3D":case"isampler3D":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DArrayShadow":return"ivec3";default:throw new Error(`Invalid texture type: ${Q}`)}}function wh(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":return"vec2";case"sampler3D":case"usampler3D":case"isampler3D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DShadow":return"vec3";case"samplerCubeShadow":case"sampler2DArrayShadow":return"vec4";default:throw new Error(`Invalid texture type: ${Q}`)}}function Uw(Q){switch(Q){case"sampler2D":case"sampler2DArray":case"sampler3D":case"samplerCube":case"sampler2DShadow":return"vec4";case"usampler2D":case"usampler2DArray":case"usampler3D":case"usamplerCube":return"uvec4";case"isampler2D":case"isampler2DArray":case"isampler3D":case"isamplerCube":return"ivec4";case"samplerCubeShadow":case"sampler2DArrayShadow":return"float";default:throw new Error(`Invalid texture type: ${Q}`)}}const oh=Q=>new tw({degrees:Q}),sh=Q=>new Hw({radians:Q}),VQ=Q=>new Lw({radians:Q}),Gh=Q=>new Yw({radians:Q}),yh=Q=>new Kw({radians:Q}),hh=Q=>new ew({sin:Q}),Rh=Q=>new rw({cos:Q}),kh=Q=>new nw({tan:Q}),Fh=(Q,A)=>new dw({y:Q,x:A}),ah=Q=>new qw({x:Q}),Sh=Q=>new xw({x:Q}),Nh=Q=>new lw({x:Q}),ch=Q=>new pw({x:Q}),Mh=Q=>new fw({x:Q}),Jh=Q=>new bw({x:Q});class tw extends e{constructor({degrees:A}){super({a:A,outTypeFunc:I=>I,outKey:"radians"}),this.statements=({inputs:I,outputs:g})=>[`${g.radians} = radians(${I.a});`]}}class Hw extends e{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"degrees"}),this.statements=({inputs:I,outputs:g})=>[`${g.degrees} = degrees(${I.a});`]}}class Lw extends e{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"sin"}),this.statements=({inputs:I,outputs:g})=>[`${g.sin} = sin(${I.a});`]}}class Yw extends e{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"cos"}),this.statements=({inputs:I,outputs:g})=>[`${g.cos} = cos(${I.a});`]}}class Kw extends e{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"tan"}),this.statements=({inputs:I,outputs:g})=>[`${g.tan} = tan(${I.a});`]}}class ew extends e{constructor({sin:A}){super({a:A,outTypeFunc:I=>I,outKey:"asin"}),this.statements=({inputs:I,outputs:g})=>[`${g.asin} = asin(${I.a});`]}}class rw extends e{constructor({cos:A}){super({a:A,outTypeFunc:I=>I,outKey:"acos"}),this.statements=({inputs:I,outputs:g})=>[`${g.acos} = acos(${I.a});`]}}class nw extends e{constructor({tan:A}){super({a:A,outTypeFunc:I=>I,outKey:"atan"}),this.statements=({inputs:I,outputs:g})=>[`${g.atan} = atan(${I.a});`]}}class dw extends DA{constructor({y:A,x:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"atan2"}),this.statements=({inputs:g,outputs:B})=>[`${B.atan2} = atan2(${g.a}, ${g.b});`]}}class qw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"sinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.sinh} = sinh(${I.a});`]}}class xw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"cosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.cosh} = cosh(${I.a});`]}}class lw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"tanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.tanh} = tanh(${I.a});`]}}class pw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"asinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.asinh} = asinh(${I.a});`]}}class fw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"acosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.acosh} = acosh(${I.a});`]}}class bw extends e{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"atanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.atanh} = atanh(${I.a});`]}}const Uh=Object.freeze(Object.defineProperty({__proto__:null,Abs:oD,Acos:rw,Acosh:fw,Add:gD,All:ZD,And:qD,Any:mD,Asin:ew,Asinh:pw,Atan:nw,Atan2:dw,Atanh:bw,BVec2:Di,BVec3:ii,BVec4:wi,BinaryOp:DA,Bool:Qi,Ceil:yD,Clamp:LD,Combine:vi,CombineCovSplat:CE,CombineGsplat:AE,CompMult:mi,CompXor:WD,Compilation:RC,Cos:Yw,Cosh:xw,CovSplat:rA,Cross:pi,DebugColorHue:hw,Degrees:Hw,Determinant:Xi,Distance:xi,Div:CD,Dot:li,Dyno:d,DynoBlock:hI,DynoBool:uI,DynoBvec2:FE,DynoBvec3:cE,DynoBvec4:UE,DynoConst:hC,DynoFloat:bI,DynoInt:DI,DynoIsampler2D:fE,DynoIsampler2DArray:PE,DynoIsampler3D:OE,DynoIsamplerCube:VE,DynoIvec2:SE,DynoIvec3:JE,DynoIvec4:HE,DynoLiteral:_I,DynoMat2:LE,DynoMat2x2:YE,DynoMat2x3:KE,DynoMat2x4:eE,DynoMat3:aB,DynoMat3x2:rE,DynoMat3x3:nE,DynoMat3x4:dE,DynoMat4:qE,DynoMat4x2:xE,DynoMat4x3:lE,DynoMat4x4:pE,DynoOutput:V,DynoProgram:yQ,DynoProgramTemplate:Jg,DynoRemapIndex:Bw,DynoSampler2D:bE,DynoSampler2DArray:uE,DynoSampler2DArrayShadow:jE,DynoSampler2DShadow:WE,DynoSampler3D:mE,DynoSamplerCube:XE,DynoSamplerCubeShadow:vE,DynoUint:kE,DynoUniform:x,DynoUsampler2D:GQ,DynoUsampler2DArray:qA,DynoUsampler3D:TE,DynoUsamplerCube:ZE,DynoUvec2:aE,DynoUvec3:ME,DynoUvec4:tE,DynoValue:HI,DynoVec2:NE,DynoVec3:iI,DynoVec4:VI,Equal:TD,Exp:aD,Exp2:SD,ExtendVec:Pi,FaceForward:ui,Float:Ei,FloatBitsToInt:Mi,FloatBitsToUint:Ji,Floor:GD,Fract:kD,GreaterThan:PD,GreaterThanEqual:uD,Gsplat:Z,GsplatNormal:gE,GsplatToCovSplat:_C,Hash:Cw,Hash2:Ew,Hash3:Dw,Hash4:iw,HashFloat:ww,HashVec2:ow,HashVec3:sw,HashVec4:Gw,IMod:ED,IVec2:oi,IVec3:si,IVec4:Gi,Int:Bi,IntBitsToFloat:Ui,Inverse:Wi,InverseSqrt:UD,IsInf:nD,IsNan:rD,Length:qi,LessThan:fD,LessThanEqual:bD,Log:ND,Log2:cD,Mat2:Si,Mat3:Ni,Mat4:ci,Max:HD,Min:tD,Mix:YD,Mod:DD,Modf:iD,Mul:BD,Neg:wD,Normalize:fi,NormalizedDepth:yw,Not:pD,NotEqual:OD,NumCovSplats:vC,NumExtSplats:WC,NumPackedSplats:mC,Or:xD,Outer:Zi,OutputCovSplat:yE,OutputExtCovSplat:RE,OutputExtendedSplat:hE,OutputPackedSplat:GE,OutputRgba8:FB,PackHalf2x16:ei,PackSnorm2x16:Hi,PackUnorm2x16:Yi,PagedSplatTexCoord:DE,PcgHash:AI,PcgMix:Eg,PcgNext:$A,Pow:FD,ProjectH:bi,Radians:tw,ReadCovSplat:zC,ReadExtSplat:jC,ReadPackedSplat:VC,ReadPackedSplatRange:XC,ReflectVec:Ti,RefractVec:Oi,Round:RD,Select:VD,Shl:vD,Shr:jD,Sign:sD,SimpleCast:HA,Sin:Lw,Sinh:qw,Smoothstep:eD,SplatTexCoord:EE,Split:ji,SplitCovSplat:BE,SplitGsplat:$C,Sqr:MD,Sqrt:JD,Step:KD,Sub:QD,Swizzle:zi,TCovSplats:uC,TExtSplats:sB,TPackedSplats:qg,Tan:Kw,Tanh:lw,TexelFetch:Mw,Texture:cw,TextureSize:Nw,TransformDir:aw,TransformGsplat:QE,TransformPosition:Fw,TransformQuaternion:Sw,Transpose:Vi,TrinaryOp:ZI,Trunc:hD,UVec2:yi,UVec3:hi,UVec4:Ri,Uint:Ci,UintBitsToFloat:ti,UintToRgba8:ni,UnaryOp:e,UnpackHalf2x16:ri,UnpackSnorm2x16:Li,UnpackUnorm2x16:Ki,Vec2:ki,Vec3:Fi,Vec4:ai,Xor:lD,abs:M0,acos:Rh,acosh:Mh,add:xA,all:Ay,and:T0,any:$0,arrayIndex:Bh,arrayLength:Ch,asin:hh,asinh:ch,atan:kh,atan2:Fh,atanh:Jh,bool:By,bvec2:Dy,bvec3:iy,bvec4:wy,ceil:t0,clamp:p0,combine:yI,combineCovSplat:RB,combineGsplat:EI,comment:Qh,compMult:xy,compXor:Iy,cos:Gh,cosh:Sh,cross:Yy,debugColorHue:_y,defineCovSplat:KI,defineExtSplats:hB,defineGsplat:LA,defineGsplatNormal:IE,definePackedSplats:sQ,degrees:sh,determinant:fy,distance:Ly,div:mg,dot:di,dyno:EQ,dynoBlock:cA,dynoBool:EG,dynoBvec2:wG,dynoBvec3:yG,dynoBvec4:kG,dynoConst:v,dynoDeclare:BB,dynoFloat:oI,dynoFor:gh,dynoIf:Ah,dynoInt:iG,dynoIsampler2D:dG,dynoIsampler2DArray:lG,dynoIsampler3D:bG,dynoIsamplerCube:TG,dynoIvec2:sG,dynoIvec3:RG,dynoIvec4:aG,dynoLiteral:Wg,dynoMat2:NG,dynoMat2x2:cG,dynoMat2x3:MG,dynoMat2x4:JG,dynoMat3:UG,dynoMat3x2:tG,dynoMat3x3:HG,dynoMat3x4:LG,dynoMat4:YG,dynoMat4x2:KG,dynoMat4x3:eG,dynoMat4x4:rG,dynoSampler2D:qG,dynoSampler2DArray:pG,dynoSampler2DArrayShadow:ZG,dynoSampler2DShadow:mG,dynoSampler3D:PG,dynoSamplerCube:OG,dynoSamplerCubeShadow:VG,dynoSwitch:Ih,dynoUint:DG,dynoUsampler2D:nG,dynoUsampler2DArray:xG,dynoUsampler3D:fG,dynoUsamplerCube:uG,dynoUvec2:oG,dynoUvec3:hG,dynoUvec4:FG,dynoVec2:GG,dynoVec3:JI,dynoVec4:SG,equal:z0,exp:K0,exp2:e0,extendVec:dy,faceforward:Ky,float:zD,floatBitsToInt:Ai,floatBitsToUint:Ii,floor:U0,fract:Zg,greaterThan:v0,greaterThanEqual:dD,gsplatNormal:PQ,gsplatToCovSplat:$g,hash:_i,hash2:$i,hash3:Aw,hash4:Iw,hashFloat:vy,hashVec2:zy,hashVec3:gw,hashVec4:ZQ,imod:OQ,int:Cy,intBitsToFloat:Sy,inverse:by,inversesqrt:x0,isAllFloatType:LI,isBoolType:OI,isFloatType:rg,isInf:u0,isIntType:lA,isMat2:rI,isMat3:nI,isMat4:dI,isMatFloatType:wC,isNan:P0,isScalarType:mI,isUintType:pA,isVector2Type:Bg,isVector3Type:Cg,isVector4Type:ng,isVectorType:Cs,ivec2:oy,ivec3:sy,ivec4:Gy,length:Hy,lessThan:W0,lessThanEqual:j0,literalNegOne:ws,literalOne:is,literalZero:wg,log:r0,log2:n0,mat2:ky,mat3:Fy,mat4:ay,max:AD,min:l0,mix:ID,mod:$E,modf:c0,mul:kA,neg:NB,normalize:Ug,normalizedDepth:Qw,not:Z0,notEqual:_0,numCovSplats:_s,numExtSplats:zs,numPackedSplats:vs,numberAsFloat:AA,numberAsInt:JA,numberAsUint:UA,or:O0,outer:ly,outputCovSplat:iE,outputCovSplatDepth:sE,outputExtCovSplat:TQ,outputExtendedSplat:wE,outputPackedSplat:kB,outputRgba8:gG,outputSplatDepth:oE,packHalf2x16:gi,packSnorm2x16:cy,packUnorm2x16:Jy,pagedSplatTexCoord:uQ,pcgHash:jy,pcgMix:Xy,pcgNext:Wy,pow:Y0,projectH:ny,radians:oh,readCovSplat:$s,readExtSplat:OC,readPackedSplat:$I,readPackedSplatRange:TC,reflectVec:ey,refractVec:ry,remapIndex:Vy,round:L0,sameSizeIvec:Ds,sameSizeUvec:GC,sameSizeVec:Es,select:cB,shl:X0,shr:V0,sign:J0,sin:VQ,sinh:ah,smoothstep:b0,splatTexCoord:yB,split:Ag,splitCovSplat:AQ,splitGsplat:OA,sqr:d0,sqrt:q0,step:f0,sub:wI,swizzle:qy,tan:yh,tanh:Nh,texelFetch:ih,texture:Dh,textureSize:Eh,transformDir:kw,transformGsplat:GB,transformPos:Rw,transformQuat:$y,transpose:py,trunc:H0,typeLiteral:yC,uint:Ey,uintBitsToFloat:Ny,uintToRgba8:mQ,uniform:CG,unindent:oA,unindentLines:z,unpackHalf2x16:ty,unpackSnorm2x16:My,unpackUnorm2x16:Uy,uvec2:yy,uvec3:hy,uvec4:Ry,valType:CA,vec2:_D,vec3:PI,vec4:$D,vectorDim:sC,vectorElementType:oC,xor:m0},Symbol.toStringTag,{value:"Module"})),nA=class nA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.extra={},this.maxSh=3,this.isInitialized=!1,this.extArrays=[new Uint32Array(0),new Uint32Array(0)],this.textures=[nA.emptyTexture,nA.emptyTexture],this.extra={},this.dyno=new th({extSplats:this}),this.dynoNumSh=new DI({key:"numSh",value:0,update:()=>Math.min(this.getNumSh(),this.maxSh)}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,this.extra={},this.maxSplats=A.maxSplats??0,this.lod=A.lod,this.nonLod=A.nonLod,A.url||A.fileBytes||A.stream||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){this.extra=A.extra??{},this.lodSplats=A.lodSplats,A.extArrays?(this.extArrays=A.extArrays,this.maxSplats=Math.floor(Math.min(this.extArrays[0].length/4,this.extArrays[1].length/4)),this.numSplats=A.numSplats??this.maxSplats,this.maxSplats=Math.floor(this.maxSplats/P)*P,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY),this.updateTextures()):(this.maxSplats=A.maxSplats??0,this.numSplats=0,this.extArrays=[new Uint32Array(0),new Uint32Array(0)])}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,construct:i,lod:w,nonLod:s,lodAbove:o}=A;this.lod=w,this.nonLod=s;const y=new LB;if((g||I||E)&&await y.loadInternalAsync({extSplats:this,url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,onProgress:A.onProgress,lodAbove:o}),i){const h=i(this);h instanceof Promise&&await h}}dispose(){this.textures[0]!==nA.emptyTexture&&(this.textures[0].dispose(),this.textures[0].source.data=null,this.textures[0]=nA.emptyTexture),this.textures[1]!==nA.emptyTexture&&(this.textures[1].dispose(),this.textures[1].source.data=null,this.textures[1]=nA.emptyTexture),this.extArrays=[new Uint32Array(0),new Uint32Array(0)];for(const A in this.extra){const I=this.extra[A];if(I instanceof x){const g=I.value;g!=null&&g.isTexture&&(g.dispose(),g.source.data=null)}}this.extra={},this.disposeLodSplats()}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return Math.min(this.getNumSh(),this.maxSh)>0}getNumSh(){return this.extra.sh1?this.extra.sh2?!this.extra.sh3a||!this.extra.sh3b?2:3:1:0}setMaxSh(A){this.maxSh=A}fetchSplat({index:A,viewOrigin:I}){let g=OC(this.dyno,A);if(this.hasRgbDir()&&I){const B=OA(g).outputs.center,C=Ug(wI(B,I)),{sh1Texture:E,sh2Texture:D,sh3TextureA:i,sh3TextureB:w}=this.ensureShTextures();let{rgb:s}=Pw({coord:yB(A),viewDir:C,numSh:this.dynoNumSh,sh1Texture:E,sh2Texture:D,sh3TextureA:i,sh3TextureB:w});s=xA(s,OA(g).outputs.rgb),g=EI({gsplat:g,rgb:s})}return g}ensureShTextures(){if(!this.extra.sh1)return{};let A=this.extra.sh1Texture;if(!A){let C=this.extra.sh1;const{width:E,height:D,depth:i,maxSplats:w}=BA(C.length/4);if(C.lengthg){this.maxSplats=BA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4),C=new Uint32Array(this.maxSplats*4);this.extArrays[0]&&(B.set(this.extArrays[0]),C.set(this.extArrays[1])),this.extArrays[0]=B,this.extArrays[1]=C}return this.extArrays}getSplat(A){if(A>=this.numSplats)throw new Error("Invalid index");return jg(this.extArrays,A)}setSplat(A,I,g,B,C,E){const D=this.ensureSplats(A+1);fQ(D,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,C,E.r,E.g,E.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,C){const E=this.ensureSplats(this.numSplats+1);fQ(E,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,C.r,C.g,C.b),++this.numSplats}forEachSplat(A){if(this.numSplats)for(let I=0;I>>16)*.61803398875;D=D-Math.floor(D);const i=Math.max(0,Math.min(1,Math.abs(D*6-3)-1)),w=Math.max(0,Math.min(1,Math.abs(D*6+1)-1)),s=Math.max(0,Math.min(1,Math.abs(D*6-1)-1));E.color.r*=i,E.color.g*=w,E.color.b*=s}B.pushSplat(E.center,E.scales,E.quaternion,E.opacity,E.color)}return B}disposeLodSplats(){this.lodSplats&&(this.lodSplats.dispose(),this.lodSplats=void 0)}async createLodSplats({rgbaArray:A,quality:I}={}){const g=typeof this.lod=="number"?Math.max(1.1,Math.min(2,this.lod)):I?1.75:1.5,B=[this.extArrays[0].slice(),this.extArrays[1].slice()],C=A?(await A.getArray()).slice():void 0,E={sh1:this.extra.sh1?this.extra.sh1.slice():void 0,sh2:this.extra.sh2?this.extra.sh2.slice():void 0,sh3:this.extra.sh3?this.extra.sh3.slice():void 0},D=await oQ.withWorker(async w=>await w.call(I?"qualityLodExtSplats":"tinyLodExtSplats",{numSplats:this.numSplats,extArrays:B,extra:E,lodBase:g,rgba:C})),i=new nA(D);this.lodSplats&&this.lodSplats.dispose(),this.lodSplats=i,this.nonLod=!0,this.lod=I?"quality":!0}};nA.emptyArray=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),nA.emptyTexture=eI(null,1,1,1,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI"),nA.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})();let BI=nA;class th extends x{constructor({extSplats:A}={}){super({key:"extSplats",type:sB,globals:()=>[hB],value:{textureArray1:BI.emptyTexture,textureArray2:BI.emptyTexture,numSplats:0},update:I=>{var g,B,C;return I.textureArray1=((g=this.extSplats)==null?void 0:g.textures[0])??BI.emptyTexture,I.textureArray2=((B=this.extSplats)==null?void 0:B.textures[1])??BI.emptyTexture,I.numSplats=((C=this.extSplats)==null?void 0:C.numSplats)??0,I}}),this.extSplats=A}}const Hh=oA(` - vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packedData.x); - vec3 sh1_1 = decodeExtRgb(packedData.y); - vec3 sh1_2 = decodeExtRgb(packedData.z); - - return sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - } -`),Lh=oA(` - vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packed1.x); - vec3 sh1_1 = decodeExtRgb(packed1.y); - vec3 sh1_2 = decodeExtRgb(packed1.z); - - vec3 sh2_0 = decodeExtRgb(packed1.w); - vec3 sh2_1 = decodeExtRgb(packed2.x); - vec3 sh2_2 = decodeExtRgb(packed2.y); - vec3 sh2_3 = decodeExtRgb(packed2.z); - vec3 sh2_4 = decodeExtRgb(packed2.w); - - vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - - vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - - return sh1Rgb + sh2Rgb; - } -`),Yh=oA(` - vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { - vec3 sh3_0 = decodeExtRgb(packedA.x); - vec3 sh3_1 = decodeExtRgb(packedA.y); - vec3 sh3_2 = decodeExtRgb(packedA.z); - vec3 sh3_3 = decodeExtRgb(packedA.w); - vec3 sh3_4 = decodeExtRgb(packedB.x); - vec3 sh3_5 = decodeExtRgb(packedB.y); - vec3 sh3_6 = decodeExtRgb(packedB.z); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); - } -`);function Pw({coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3TextureA:C,sh3TextureB:E}){return new d({inTypes:{coord:"ivec3",viewDir:"vec3",numSh:"int",sh1Texture:"usampler2DArray",sh2Texture:"usampler2DArray",sh3TextureA:"usampler2DArray",sh3TextureB:"usampler2DArray"},outTypes:{rgb:"vec3"},inputs:{coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3TextureA:C,sh3TextureB:E},globals:()=>[Hh,Lh,Yh],statements:({inputs:D,outputs:i})=>{const w=["vec3 rgb = vec3(0.0);"];return D.sh1Texture&&(D.sh2Texture?(w.push(...z(` - if (${D.numSh} == 1) { - rgb = evaluateExtSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0), ${D.viewDir}); - } else if (${D.numSh} >= 2) { - rgb = evaluateExtSH12(texelFetch(${D.sh1Texture}, ${D.coord}, 0), texelFetch(${D.sh2Texture}, ${D.coord}, 0), ${D.viewDir}); - `)),D.sh3TextureA&&D.sh3TextureB&&w.push(...z(` - if (${D.numSh} >= 3) { - rgb += evaluateExtSH3(texelFetch(${D.sh3TextureA}, ${D.coord}, 0), texelFetch(${D.sh3TextureB}, ${D.coord}, 0), ${D.viewDir}); - } - `)),w.push("}")):w.push(...z(` - if (${D.numSh} >= 1) { - rgb = evaluateExtSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0), ${D.viewDir}); - } - `))),w.push(`${i.rgb} = rgb;`),w}}).outputs}function eI(Q,A,I,g,B,C,E){const D=new G.DataArrayTexture(Q,A,I,g);return D.format=B,D.type=C,D.internalFormat=E,D.needsUpdate=!0,D}function pB(Q){const A=RA.decode_rad_header(Q);if(A[2])throw uB(A[1]);return uB(A[0])}function Kh(){return RA.get_raycast_buffer()}function eh(){return RA.get_raycast_buffer2()}function rh(Q,A,I,g,B,C,E,D,i,w){return RA.raycast_ext_buffers(Q,A,I,g,B,C,E,D,i,w)}function nh(Q,A,I,g,B,C,E,D,i,w,s,o,y){return RA.raycast_packed_buffer(Q,A,I,g,B,C,E,D,i,w,s,o,y)}function dh(){return{__proto__:null,"./spark_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,I){return Error(pg(A,I))},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,I){throw new Error(pg(A,I))},__wbg_error_a6fa202b58aa1cd3:function(A,I){let g,B;try{g=A,B=I,console.error(pg(A,I))}finally{RA.__wbindgen_free(g,B,1)}},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_fd4646b401926788:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_26bffbe236bf73f9:function(A){return new Float32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,I,g){Uint8Array.prototype.set.call(xh(A,I),g)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,I,g){Uint32Array.prototype.set.call(bB(A,I),g)},__wbg_set_6be42768c690e380:function(A,I,g){A[I]=g},__wbg_set_6c60b2e8ad0e9383:function(A,I,g){A[I>>>0]=g},__wbg_set_8ee2d34facb8466e:function(){return fh(function(A,I,g){return Reflect.set(A,I,g)},arguments)},__wbg_set_a98c8da6557e63de:function(A,I,g){A.set(fB(I,g))},__wbg_stack_3b0d974bbf31e44f:function(A,I){const g=I.stack,B=bh(g,RA.__wbindgen_malloc,RA.__wbindgen_realloc),C=XQ;PB().setInt32(A+4,C,!0),PB().setInt32(A+0,B,!0)},__wbg_subarray_d51e89458b3fdbf6:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,I){return fB(A,I)},__wbindgen_cast_0000000000000003:function(A,I){return bB(A,I)},__wbindgen_cast_0000000000000004:function(A,I){return pg(A,I)},__wbindgen_cast_0000000000000005:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=RA.__wbindgen_externrefs,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)}}}}function qh(Q){const A=RA.__externref_table_alloc();return RA.__wbindgen_externrefs.set(A,Q),A}function fB(Q,A){return Q=Q>>>0,lh().subarray(Q/4,Q/4+A)}function bB(Q,A){return Q=Q>>>0,ph().subarray(Q/4,Q/4+A)}function xh(Q,A){return Q=Q>>>0,Fg().subarray(Q/1,Q/1+A)}let xI=null;function PB(){return(xI===null||xI.buffer.detached===!0||xI.buffer.detached===void 0&&xI.buffer!==RA.memory.buffer)&&(xI=new DataView(RA.memory.buffer)),xI}let og=null;function lh(){return(og===null||og.byteLength===0)&&(og=new Float32Array(RA.memory.buffer)),og}function pg(Q,A){return Q=Q>>>0,uh(Q,A)}let sg=null;function ph(){return(sg===null||sg.byteLength===0)&&(sg=new Uint32Array(RA.memory.buffer)),sg}let Gg=null;function Fg(){return(Gg===null||Gg.byteLength===0)&&(Gg=new Uint8Array(RA.memory.buffer)),Gg}function fh(Q,A){try{return Q.apply(this,A)}catch(I){const g=qh(I);RA.__wbindgen_exn_store(g)}}function bh(Q,A,I){if(I===void 0){const D=ag.encode(Q),i=A(D.length,1)>>>0;return Fg().subarray(i,i+D.length).set(D),XQ=D.length,i}let g=Q.length,B=A(g,1)>>>0;const C=Fg();let E=0;for(;E127)break;C[B+E]=D}if(E!==g){E!==0&&(Q=Q.slice(E)),B=I(B,g,g=E+Q.length*3,1)>>>0;const D=Fg().subarray(B+E,B+g),i=ag.encodeInto(Q,D);E+=i.written,B=I(B,g,E,1)>>>0}return XQ=E,B}function uB(Q){const A=RA.__wbindgen_externrefs.get(Q);return RA.__externref_table_dealloc(Q),A}let Vg=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Vg.decode();const Ph=2146435072;let KQ=0;function uh(Q,A){return KQ+=A,KQ>=Ph&&(Vg=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Vg.decode(),KQ=A),Vg.decode(Fg().subarray(Q,Q+A))}const ag=new TextEncoder;"encodeInto"in ag||(ag.encodeInto=function(Q,A){const I=ag.encode(Q);return A.set(I),{read:Q.length,written:I.length}});let XQ=0,RA;function Th(Q,A){return RA=Q.exports,xI=null,og=null,sg=null,Gg=null,RA.__wbindgen_start(),RA}async function Oh(Q,A){if(typeof Response=="function"&&Q instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(Q,A)}catch(B){if(Q.ok&&I(Q.type)&&Q.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const g=await Q.arrayBuffer();return await WebAssembly.instantiate(g,A)}else{const g=await WebAssembly.instantiate(Q,A);return g instanceof WebAssembly.Instance?{instance:g,module:Q}:g}function I(g){switch(g){case"basic":case"cors":case"default":return!0}return!1}}async function uw(Q){if(RA!==void 0)return RA;Q!==void 0&&(Object.getPrototypeOf(Q)===Object.prototype?{module_or_path:Q}=Q:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),Q===void 0&&(Q=new URL("data:application/wasm;base64,AGFzbQEAAAABlwM3YAN/f38Bf2ACf38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgBH9/f38AYAABb2AAAGACf38Bb2AEf39/fwF/YAZ/f39/f38AYAFvAX9gAX0BfWAFf39/fn8AYAABf2AFf39/f38Bf2ADf39vAGAGf39/f39/AX9gB39/f39/f38AYAV/f35/fwBgBX9/fH9/AGAFf399f38AYAADf39/YANvb28AYANvf28AYANvb28Bf2ADb39/AW9gAX8Bb2ADb39/AGACf28AYAF8AW9gAX4Bb2AKf39/f3t9fX19fwBgB39/f39/f38Bf2AIf397fX1/f38AYAJ+fwBgA39/fgBgAn9+AX9gA39+fgBgBH9+fn8AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAZ/f39/f30AYA59fX19fX19fX1/b319fwFvYA19fX19fX19fX1/fX1/AW9gAW8Df39/YAp9fX19fX19fX1/AW9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAn19AX1gAXwBfwK7CRgQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAIEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACBAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABkQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAaEC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADRAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgASEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAGxAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5X2Q1MWU4OTQ1OGIzZmRiZjYAHBAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AA0QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5AB0QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAANEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxAAgQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmAB8QLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAIQLi9zcGFya19yc19iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAAoQLi9zcGFya19yc19iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhAuL3NwYXJrX3JzX2JnLmpzH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUACRAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAxACAQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAKEC4vc3BhcmtfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDMAChAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDA0AAoQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwNQAhA54CnAIFAAECAQIFAQEGBQAiIwcCAwUBAg4OBAECBQMACwUBBQICAAIFAgQkAgMDAgACAAUCABMBAQkBFAACDwEFBRQOAg8ABQIEJQEDAQICBRAFBQEEBQEPAQEMAgEBBwUBAgEBASYBAQICAgICAQIFBAIBDAYBAgMDJwECBAYCAgMBAQICAQUCASgGAAABBAMDAwMEBgYHAwQABwEDAgADDAQEAQEG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NgIEDAELIAAPCyAAQQhqC98XAhp/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEHQ38EAKAIAIgkhBiACQQNrQRhtIgVBACAFQQBKGyILIQUgC0ECdEHg38EAaiEHA0AgAyAEQQN0aiAFQQBIBHxEAAAAAAAAAAAFIAcoAgC3CzkDACAEIAZJIgoEQCAHQQRqIQcgBUEBaiEFIAQgCmoiBCAGTQ0BCwtBACEFA0BBACEEIANBwAJqIAVBA3RqIB0gACAEQQN0aisDACADIAUgBGtBA3RqKwMAoqA5AwAgBSAJSSIGBEAgBSAGaiIFIAlNDQELC0QAAAAAAADwf0QAAAAAAADgfyACIAtBaGxqIgpBGGsiAkH+D0siEBtEAAAAAAAAAABEAAAAAAAAYAMgAkG5cEkiERtEAAAAAAAA8D8gAkGCeEgiEhsgAkH/B0oiExtB/RcgAiACQf0XTxtB/g9rIApBlwhrIBAbIhVB8GggAiACQfBoTRtBkg9qIApBsQdqIBEbIhYgAiASGyATG0H/B2qtQjSGv6IhHiADQdwDaiIOIAlBAnRqIQ9BLyAKa0EfcSEXQTAgCmtBH3EhFCADQbgCaiEYIAJBAEohGSACQQFrIRogCSEFAkADQCADQcACaiAFIgZBA3RqKwMAIR0CQCAGRQ0AIANB4ANqIQggBiEEA0AgCCAdIB1EAAAAAAAAcD6i/AK3Ih1EAAAAAAAAcMGioPwCNgIAIBggBEEDdGorAwAgHaAhHSAEQQFGIgUNASAIQQRqIQhBASAEQQFrIAUbIgQNAAsLAn8CQCATRQRAIBINASACDAILIB1EAAAAAAAA4H+iIh1EAAAAAAAA4H+iIB0gEBshHSAVDAELIB1EAAAAAAAAYAOiIh1EAAAAAAAAYAOiIB0gERshHSAWCyEFIB0gBUH/B2qtQjSGv6IiHSAdRAAAAAAAAMA/opxEAAAAAAAAIMCioCIdIB38AiIMt6EhHQJ/AkACQAJAAn8gGUUEQCACRQRAIA4gBkECdGooAgBBF3UMAgtBAiENQQAgHUQAAAAAAADgP2ZFDQUaDAILIA4gBkECdGoiBSAFKAIAIgUgBSAUdSIFIBR0ayIENgIAIAUgDGohDCAEIBd1CyINQQBMDQELQQEhCAJAIAZFDQBBACEFIAZBAUcEQCAGQR5xIRtBACEHIANB4ANqIQQDQCAEKAIAIQgCfwJAIAQgBwR/Qf///wcFIAhFDQFBgICACAsgCGs2AgBBAAwBC0EBCyEIIARBBGoiHCgCACEHAn8CQCAcIAgEfyAHRQ0BQYCAgAgFQf///wcLIAdrNgIAQQAhCEEBDAELQQEhCEEACyEHIARBCGohBCAbIAVBAmoiBUcNAAsLIAZBAXFFDQAgA0HgA2ogBUECdGoiBCgCACEFAkAgBCAIBH8gBUUNAUGAgIAIBUH///8HCyAFazYCAEEAIQgMAQtBASEICwJAIAJBAEwNAEH///8DIQQCQAJAIBoOAgEAAgtB////ASEECyAOIAZBAnRqIgUgBSgCACAEcTYCAAsgDEEBaiEMIA1BAkYNAQsgDQwBC0QAAAAAAADwPyAdoSIdIB0gHqEgCEEBcRshHUECCyENIB1EAAAAAAAAAABhBEAgDyEEIAYhBQJAIAkgBkEBayIISw0AQQAhBwNAAkAgA0HgA2ogCEECdGooAgAgB3IhByAIIAlNDQAgCSAIIAggCUtrIghNDQELCyAGIQUgB0UNACAGQQJ0IANqQdwDaiEEA0AgBkEBayEGIAJBGGshAiAEKAIAIARBBGshBEUNAAsMAwsDQCAFQQFqIQUgBCgCACAEQQRrIQRFDQALIAUgBk0NASAGQQFqIQcDQCADIAdBA3RqIAcgC2pBAnQoAuDfQbc5AwBBACEERAAAAAAAAAAAIR0gA0HAAmogB0EDdGogHSAAIARBA3RqKwMAIAMgByAEa0EDdGorAwCioDkDACAFIAdNDQIgByAFIAdLaiIGIQcgBSAGTw0ACwwBCwsCQAJAAkBBACACayIEQf8HTARAIARBgnhODQMgHUQAAAAAAABgA6IhHSAEQbhwTQ0BQckHIAJrIQQMAwsgHUQAAAAAAADgf6IhHSAEQf4PSw0BQYF4IAJrIQQMAgsgHUQAAAAAAABgA6IhHUHwaCAEIARB8GhNG0GSD2ohBAwBCyAdRAAAAAAAAOB/oiEdQf0XIAQgBEH9F08bQf4PayEECyAdIARB/wdqrUI0hr+iIh1EAAAAAAAAcEFmBEAgA0HgA2ogBkECdGogHSAdRAAAAAAAAHA+ovwCtyIdRAAAAAAAAHDBoqD8AjYCACAGQQFqIQYgCiECCyADQeADaiAGQQJ0aiAd/AI2AgALAnwCQAJAIAJB/wdMBEAgAkGCeEgNAUQAAAAAAADwPwwDCyACQf4PSw0BIAJB/wdrIQJEAAAAAAAA4H8MAgsgAkG4cEsEQCACQckHaiECRAAAAAAAAGADDAILQfBoIAIgAkHwaE0bQZIPaiECRAAAAAAAAAAADAELQf0XIAIgAkH9F08bQf4PayECRAAAAAAAAPB/CyACQf8Haq1CNIa/oiEdIAZBAXEEfyAGBSADQcACaiAGQQN0aiAdIANB4ANqIAZBAnRqKAIAt6I5AwAgHUQAAAAAAABwPqIhHSAGQQFrCyEAIAYEQCAAQQN0IANqQbgCaiEEIABBAnQgA2pB3ANqIQIDQCAEIB1EAAAAAAAAcD6iIh4gAigCALeiOQMAIARBCGogHSACQQRqKAIAt6I5AwAgBEEQayEEIAJBCGshAiAeRAAAAAAAAHA+oiEdIABBAUcgAEECayEADQALCyAGQQFqIQogA0HAAmogBkEDdGohCCAGIQQDQAJAIAkgBiAEIgBrIgUgBSAJSxsiB0UEQEEAIQJEAAAAAAAAAAAhHQwBCyAHQQFqQX5xIQ9EAAAAAAAAAAAhHUEAIQRBACECA0AgHSAEQejhwQBqKwMAIAQgCGoiCysDAKKgIARB8OHBAGorAwAgC0EIaisDAKKgIR0gBEEQaiEEIA8gAkECaiICRw0ACwsgA0GgAWogBUEDdGogB0EBcQR8IB0FIB0gAkEDdCsD6OFBIANBwAJqIAAgAmpBA3RqKwMAoqALOQMAIAhBCGshCCAAQQFrIQQgAA0ACwJAIApBA3EiAEUEQEQAAAAAAAAAACEdIAYhAgwBCyADQaABaiAGQQN0aiEERAAAAAAAAAAAIR0gBiECA0AgAkEBayECIB0gBCsDAKAhHSAEQQhrIQQgAEEBayIADQALCyAGQQNPBEAgAkEDdCADakGIAWohBANAIB0gBEEYaisDAKAgBEEQaisDAKAgBEEIaisDAKAgBCsDAKAhHSAEQSBrIQQgAkEDRyACQQRrIQINAAsLIAEgHZogHSANGzkDACADQbAEaiQAIAxBB3EL5hsCB38HfiMAQeACayICJAACfwJAAn8CQAJAAkACQCAALQAAIgNBA2sOBQEAAAACAAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOEQIDAAQFBgAHCAkKCwwNDg8QAQsACyACIAAtAAE6AMACIAIgAkHAAmqtQoCAgICwBoQ3A6gCIAEoAgAgASgCBCACQgE3AtQCIAJBAjYCzAIgAkGElsEANgLIAiACIAJBqAJqNgLQAiACQcgCahBJDBQLIAIgACkDCDcDwAIgAiACQcACaq1CgICAgCCENwOoAiABKAIAIAEoAgQgAkIBNwLUAiACQQI2AswCIAJBoJbBADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwTCyACIAApAwg3A8ACIAIgAkHAAmqtQoCAgIDABoQ3A6gCIAEoAgAgASgCBCACQgE3AtQCIAJBAjYCzAIgAkGglsEANgLIAiACIAJBqAJqNgLQAiACQcgCahBJDBILIAIgACgCBDYCwAIgAiACQcACaq1CgICAgNAGhDcDqAIgASgCACABKAIEIAJCATcC1AIgAkECNgLMAiACQbyWwQA2AsgCIAIgAkGoAmo2AtACIAJByAJqEEkMEQsgAiAAKQIENwLAAiACIAJBwAJqrUKAgICA4AaENwOoAiABKAIAIAEoAgQgAkIBNwLUAiACQQE2AswCIAJB1JbBADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwQCyABKAIAQdyWwQBBCiABKAIEKAIMEQAADA8LIAEoAgBB5pbBAEEMIAEoAgQoAgwRAAAMDgsgASgCAEHylsEAQQ4gASgCBCgCDBEAAAwNCyABKAIAQYCXwQBBCCABKAIEKAIMEQAADAwLIAEoAgBBiJfBAEEDIAEoAgQoAgwRAAAMCwsgASgCAEGLl8EAQQQgASgCBCgCDBEAAAwKCyABKAIAQY+XwQBBDCABKAIEKAIMEQAADAkLIAEoAgBBm5fBAEEPIAEoAgQoAgwRAAAMCAsgASgCAEGql8EAQQ0gASgCBCgCDBEAAAwHCyABKAIAQbeXwQBBDiABKAIEKAIMEQAADAYLIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAMBQsgACkDCCIJQv////////8HgyEKIAlC////////////AINC//////////f/AFgEQCAJQjSIpyEAIAlCAFMNAiACQagCagwDC0HUosEAQdeiwQAgCUIAWSIAG0HbosEAIApQIgQbIQNBA0EEIAAbQQMgBBshAAwDCyABKAIAQdqXwQBBBCABKAIEKAIMEQAADAMLIAJBLToAqAJBASEIIAJBqQJqCyEGAn8CQAJAAkACQAJAAkACQAJAIABB/w9xIgBFIApQcUUEQCAAQQJJIApCAFJyIQMgCkKAgICAgICACIQgCiAAGyIJQgKGIQogCUIBgyEPAkACQAJAIABBtQhrQcx3IAAbIgBBAEgEQCACQZACakHQwcAAIAAgAEGFolNsQRR2IABBf0drIgBqIgdBBHQiBGspAwAiCSAKQgKEIgsQngEgAkGAAmpB2MHAACAEaykDACINIAsQngEgAkHwAWogAikDmAIiCyACKQOAAnwiDCACKQOIAiALIAxWrXwgACAHQbHZtR9sQRN2a0H8AGpB/wBxQcAAcyIEELsBIAJBsAFqIAkgCiADQX9zrHwiCxCeASACQaABaiANIAsQngEgAkGQAWogAikDuAEiCyACKQOgAXwiDCACKQOoASALIAxWrXwgBBC7ASACQeABaiAJIAoQngEgAkHQAWogDSAKEJ4BIAJBwAFqIAIpA+gBIgkgAikD0AF8Ig0gAikD2AEgCSANVq18IAQQuwEgAikDwAEhCyACKQOQASEJIAIpA/ABIQwg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QYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAkHgmMEAEJQBCyACIANBAWo2AgggAigCBCADaiAGOgAAQQAhAwwDCyAGIAMgA0GcqsEAEM8BAAsgBEEUNgIUIAEgBEEUahCwASEDDAELIAggAyADQZyqwQAQzwEACyAEQSBqJAAgA0UNDgwNCyACKAIAIANGBEAgAkHgl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpBIjoAAAwLCyACKAIAIANGBEAgAkHwl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpB3AA6AAAMCgsgAigCACADRgRAIAJBgJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQS86AAAMCQsgAigCACADRgRAIAJBkJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQg6AAAMCAsgAigCACADRgRAIAJBoJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQw6AAAMBwsgAigCACADRgRAIAJBsJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQo6AAAMBgsgAigCACADRgRAIAJBwJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQ06AAAMBQsgAigCACADRgRAIAJB0JjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQk6AAAMBAsgAyAEIAZBsKHBABDPAQALIAcoAgwhAwwDCyAHQQQ2AhQgACABIAdBFGoQpAEMBgsgBCAGQYChwQAQsQEACwwBCwsgAEECNgIAIAAgAzYCBAwCCyAAIAM2AgggACABNgIEIABBADYCAAwBCyAAIAM2AgggACABNgIEIABBATYCAAsgB0EgaiQAC68QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQbu3wABBARBEIQIMAgsCQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIGTwRAIAAoAhAiAkUNASACQZK3wABBEBBERQ0BDAcLIAAgBEEBaiIBNgIIIAVBCGogAiAEai0AACIDEM0BIAUoAggiBwRAIAAoAhAiAEUNCCAAIAcgBSgCDBBEIQIMCQsgACAAKAIMQQFqIgc2AgwgB0H1A08EQCAAKAIQIgIEQCAC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AgBBlObBAEGU5sEAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LAn9BjObBACgCACICQQEgAEEDdnQiA3FFBEBBjObBACACIANyNgIAIABB+AFxQYTkwQBqIgAMAQsgAEH4AXEiAkGE5MEAaiEAIAJBjOTBAGooAgALIQIgACABNgIIIAIgATYCDCABIAA2AgwgASACNgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQbTmwQBBtObBACgCAEEBayIANgIAIAANAUH848EAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbTmwQBB/x8gASABQf8fTRs2AgAPC0H848EAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQbTmwQBB/x8gBCAEQf8fTRs2AgAgAiADTw0AQazmwQBBfzYCAAsL2AkBBH8jAEFAaiICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOGAECAwQFBgcICQoLDA0ODxAREhMUFRYXGAALIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAhAQwYCwJAAkACQAJAIAAtAARBAWsOAwECAwALIAIgACgCCDYCBEEUEBgiAEUNGyAAQRBqQc3UwQAoAAA2AAAgAEG91MEA/QAAAP0LAAAgAkEUNgIQIAIgADYCDCACQRQ2AgggAiACQQRqrUKAgICAgAeENwMgIAIgAkEIaq1CgICAgJAHhDcDGCABKAIAIAEoAgQgAkICNwI0IAJBAzYCLCACQYDYwQA2AiggAiACQRhqNgIwIAJBKGoQSSEBIAIoAggiAEUNGiACKAIMIgRBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0cIANBACAFIABBJ2pLGw0dIAQQLgwaCyACIAAtAAVBAnQiACgC+NxB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/AoAAAsgACACIANqNgIIQQALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBECACACIAIoAgggAigCDCgCGBECACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALTwECfyAAKAIEIQIgACgCACEDAkAgACgCCCIALQAARQ0AIANBurPAAEEEIAIoAgwRAABFDQBBAQ8LIAAgAUEKRjoAACADIAEgAigCEBEBAAtKAQJ/IAAgACgCBCIDIAJrNgIEIAAgACgCACACIANLciIENgIAQQEhAyAEBH8gAwUgACgCCCIAKAIAIAEgAiAAKAIEKAIMEQAACwtIAQF/AkAgAUHhAGsiAUH/AXFBGUsEQEEAIQEMAQsgAUECdEH8B3EiAigCwNtBIQEgAigC2NpBIQILIAAgAjYCBCAAIAE2AgALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQ2QEAC8kCAAJAIAAgAk0EQCAAIAFNIAEgAktyDQEjAEEwayICJAAgAiABNgIEIAIgADYCACACQQI2AgwgAkG0pMAANgIIIAJCAjcCFCACIAJBBGqtQoCAgIAQhDcDKCACIAKtQoCAgIAQhDcDICACIAJBIGo2AhAgAkEIaiADENkBAAsjAEEwayIBJAAgASACNgIEIAEgADYCACABQQI2AgwgAUHgo8AANgIIIAFCAjcCFCABIAFBBGqtQoCAgIAQhDcDKCABIAGtQoCAgIAQhDcDICABIAFBIGo2AhAgAUEIaiADENkBAAsjAEEwayIAJAAgACACNgIEIAAgATYCACAAQQI2AgwgAEGApMAANgIIIABCAjcCFCAAIABBBGqtQoCAgIAQhDcDKCAAIACtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIaiADENkBAAs3AAJ/IARBAXEEQCAFuxCOAgwBC0GBCEGACCABLQAAGwshBCACIANBBhBLIAQQ6gEgAEEANgIACzgBAX8jAEEQayICJAAgAkEIaiAAIAAoAgAoAgQRAgAgAigCCCABIAIoAgwoAhARAQAgAkEQaiQACzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQEARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQAACzwBAn8gASgCBCECIAEoAgAhA0EIEBgiAUUEQAALIAEgAjYCBCABIAM2AgAgAEGI2cEANgIEIAAgATYCAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakHEscAAIANBDGpBxLHAACACQai0wAAQbwALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBxJXAADYCCCABQgQ3AhAgAUEIaiAAENkBAAuUBQIHfwF7EGUiEiAKJgECfyMAQdAAayIOJAAgDkKAgICAwAA3AgQgDkEANgIMIA4gDUEARzoALCAOQYCAgPwDNgIoIA5CgICA/IOAgMA/NwIgIA4gDDgCHCAOIAs4AhggDkKAgICAgICAwD83AhBBrOLBACgCAEUEQBBNCwJAAkACQAJAQbDiwQAoAgBFBEBBsOLBAEF/NgIAAn8gCUUEQEEAIQ1BBAwBC0G84sEAKAIAIRFBuOLBACgCACETIAP9EyAE/SABIRVBACENA0AgEiUBIA1BAnQgDUGAgAQgCSANayIPIA9BgIAETxsiD2oiDUECdBAHIQoQZSIQIAomASAPQQJ0Ig8gEUsNAyAOIBAlARAIIhQ2AjAgDiAPNgI0IA8gFEcNBiATIA8gECUBEAkgDiACOAJAIA4gATgCPCAOIAA4AjggEyAPIA5BBGogDkE4aiAVIAUgBiAHIAggDkEQahAkIBBBhAhPBEAgEBC3AQsgCSANSw0AC0Gw4sEAKAIAQQFqIQ8gDigCDCENIA4oAggLIQlBsOLBACAPNgIAIA0QCiEKEGUiDyAKJgEgDyUBEAshECAOIA02AjQgDiAQNgIwIA0gEEcNBCAPJQEgCSANEAwgDigCBCINBEAgCUEEaygCACIQQXhxIhEgDUECdCINQQRBCCAQQQNxIhAbakkNAyAQQQAgESANQSdqSxsNBCAJEC4LIBJBhAhPBEAgEhC3AQsgDkHQAGokACAPDAULQfCSwAAQqwIAC0EAIA8gEUH4k8AAEM8BAAtBqNnBAEEuQdjZwQAQzgEAC0Ho2cEAQS5BmNrBABDOAQALIA5BADYCOCAOQTBqIA5BNGogDkE4ahDUAQALIgklASAJELcBC8ECAQR/IwBBEGsiASQAQdjiwQAtAABBA0cEQCABQQE6AA8gAUEPaiECIwBBIGsiACQAAkACQAJAAkACQAJAAkACQAJAQdjiwQAtAABBAWsOAwQDAQALQdjiwQBBAjoAACACLQAAIAJBADoAAEUNBEHE5sEAKAIAQf////8HcQRAQbzmwQAoAgANBgtByObBACgCAA0BQdjiwQBBAzoAAEHM5sEAQQE2AgALIABBIGokAAwGCwALIABBADYCGCAAQQE2AgwgAEGM1cEANgIIDAMLIABBADYCGCAAQQE2AgwgAEGsgMAANgIIDAILQeCSwAAQngIACyAAQQA2AhggAEEBNgIMIABBvNfBADYCCCAAQgQ3AhAgAEEIakHE18EAENkBAAsgAEIENwIQIABBCGpBqJPAABDZAQALCyABQRBqJAALLQACQCADaUEBRyABQYCAgIB4IANrS3JFBEAgACABIAMgAhA0IgANAQsACyAAC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABB7NbBACABKAIEIAEoAggiAC0ACCAALQAJEJIBAAsgACADNgIEIAAgAjYCACAAQdDWwQAgASgCBCABKAIIIgAtAAggAC0ACRCSAQALqQICAX8BbwJ/IwBBMGsiDSQAQaziwQAoAgBFBEAQTQsCQEGw4sEAKAIARQRAQbDiwQBBfzYCAEHU4sEAQQA2AgAgDSAMQQBHOgAgIA1BgICA/AM2AhwgDUKAgID8g4CAwD83AhQgDSALOAIQIA0gCjgCDCANQoCAgICAgIDAPzcCBCAJQQJ0IglBvOLBACgCACIMSw0BQbjiwQAoAgAgDSACOAIsIA0gATgCKCANIAA4AiQgCUHM4sEAIA1BJGogA/0TIAT9IAEgBSAGIAcgCCANQQRqECRB0OLBACgCAEHU4sEAKAIAEO8BQbDiwQBBsOLBACgCAEEBajYCACANQTBqJAAMAgtB8JLAABCrAgALQQAgCSAMQeiTwAAQzwEACyIJJQEgCRC3AQvUVQMefwR+AXwjAEEQayIaJAAQZSIbIAAmASMAQYAIayIBJAACQAJAAkACQAJA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CyABQZ+4wABBBBBECx4AIABFBEAQrwIACyAAIAIgAyAEIAUgASgCEBERAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQEQsACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARBwALHAAgAEUEQBCvAgALIAAgAiADIAQgASgCEBEyAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQETMACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARNAALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAwALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAAALFAAgASABIAAgACABXRsgACAAXBsLHAEBbyAAJQEgASUBIAEQtwEgAiUBIAIQtwEQAgsYACAARQRAEK8CAAsgACACIAEoAhARAQALHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsfAEG55sEALQAARQRAQbnmwQBBAToAAAsgAEEBNgIACxcAIAAoAgAgASAAKAIEQQxqKAIAEQEACxYBAW8gACABEBQhAhBlIgAgAiYBIAALFgEBbyAAIAEQFSECEGUiACACJgEgAAsWAQFvIAAgARAWIQIQZSIAIAImASAACxkAIAEoAgBBkKTBAEEFIAEoAgQoAgwRAAALDgAgAARAAAsgARDVAQALEwAgASgCBBogAEHclcAAIAEQSQsQACACKAIEGiAAIAEgAhBJCxMAIAEoAgQaIABB8JfAACABEEkLEwAgASgCBBogAEH0lcAAIAEQSQsTACABKAIEGiAAQZSYwAAgARBJCxMAIAEoAgQaIABB4J7AACABEEkLEwAgASgCBBogAEHMv8AAIAEQSQsZACABKAIAQbG9wABBEiABKAIEKAIMEQAACxUAIAEgACgCACIAKAIAIAAoAgQQRAsTACABKAIEGiAAQeCiwQAgARBJCxYAIABBgMjBADYCBCAAIAFBHGo2AgALFgAgAEHEx8EANgIEIAAgAUEcajYCAAsQACAAQQRqED4gAEEcahBdCxkAIAEoAgBB0pfBAEEIIAEoAgQoAgwRAAALGQAgASgCAEGTlcEAQQMgASgCBCgCDBEAAAsZACABKAIAQcjDwQBBFyABKAIEKAIMEQAACxkAIAEoAgBB1MLBAEEUIAEoAgQoAgwRAAALGQAgASgCAEGsw8EAQQog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EGsiASQAIAFB3ZLAADYCDCABIABBB2o2AgggAUEIakHU18EAIAFBDGpB1NfBACAAQQhqQbzVwQAQbwALIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEGc1sEANgIIIABCBDcCECAAQQhqQaTWwQAQ2QEAC0Hc1cEAEJ4CAAsgAEEANgIYIABBATYCDCAAQYzVwQA2AgggAEIENwIQIABBCGpBzNXBABDZAQALQbjmwQBBADoAACAEQQM6AAALIABBIGokACAJKAIMIQMgAigCUEGAgIAEcSIEDQELIAMgCSgCECIASQ0CIAMgAGshAyAJKAIIIABBDGxqDAELIAkoAggLIQ8gAkGAgICAeDYCWCACQcjOwQApAwAiHzcCXCACIARBF3YiADoAZCACIAA6AHggAkEANgJ0IAJB0NjBADYCcCACIAJByABqNgJoIAIgAkHYAGo2AmwgA0UEQCAfpyEDIB9CIIinDAgLIA8gA0EMbGohGCACQZgBaiEVIAJBlwFqIRkDQAJAIA8oAggiAEUEQCACQQA2AogBIAIgAkHoAGo2AoQBIAJBAzYCkAEgAkECNgLQASACQYQBaiACQZABaiACQdABakEAIAJBACACECUgAigChAEiASABKAIMQQFqNgIMRQ0BDA4LIA8oAgQiCSAAQSxsaiEaA0AgAkEANgKAASACIAJB6ABqNgJ8AkACQAJAAkAgCSgCIEGAgICAeEcEQCACQZABaiIAIAkoAiQiGyAJKAIoIhwQQUECIRcgAigCkAENAyAAIAIoApQBIgggAigCmAEiAUHMusAAQQYQIQJAAkAgAigCkAEEQCACKALMASEAIAIoAsgBIQQgAigCxAEhBiACKALAASEDIAIoArQBQX9GDQEgAkGEAWogFSADIAYgBCAAQQAQVgwCCwNAIAJB0AFqIAJBkAFqECsgAigC0AEiAEEBRg0ACwJAAkAgAEEBaw4CGQEACyACIAIpAtQBNwKIASACQQE2AoQBDAILIAJBADYChAEMAQsgAkGEAWogFSADIAYgBCAAQQEQVgsgAigChAFBAUcNAiACKAKIASIAQQZqIgRFDQECQCABIARNBEAgASAERw0BDAMLIAQgCGosAABBv39KDQILIAggASAEIAFB1LrAABCQAgALIAJBAzYCkAEMAwsgASAIaiEHIAQgCGohAwNAAkAg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IAMMBgsCQCACKAJYIgBBgICAgHhHBEAgAEUNAiACKAJcIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIABqSQ0FIAFFIAQgAEEnak1yDQEMBgsgAi0AXEEDRw0BIAIoAmAiAygCACEAIANBBGooAgAiASgCACIEBEAgACAEEQQACyABKAIEIgEEQCAAQQRrKAIAIgRBeHEiBkEEQQggBEEDcSIEGyABakkNBSAEQQAgBiABQSdqSxsNBiAAEC4LIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0EIABFDQAgAUE0Tw0FCyADEC4LQYijwQBBNyACQd8BakGMlsAAQcCjwQAQnwEACwALQdC4wABBPSACQd8BakHAuMAAQei5wAAQnwEAC0Go2cEAQS5B2NnBABDOAQALQejZwQBBLkGY2sEAEM4BAAsLCAAgACUBEAQLDABB9LPAAEEyEBEACwcAEBIQ1wELBABBAQsEAEEACwIACwub3wE+AEGAgMAAC5UTT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAAABAAKgAAAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9sZWdhY3kucnMAc3BhcmstcnMvc3JjL3JheWNhc3QucnMAbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9pbXBscy5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2Vycm9yLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9sYXp5X2xvY2sucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExNy9zcmMvZXh0ZXJucmVmLnJzAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9zcGxhdF9lbmNvZGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2RlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAGxpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS41L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL3JlYWQucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNi9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu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//////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MgcQAGIAAACzAQAAGgAAADIHEABiAAAAAAIAABMAAAAyBxAAYgAAAAUCAAAzAAAAMgcQAGIAAAAJAgAAPgAAADIHEABiAAAADwIAADoAAAAyBxAAYgAAAKsBAAA9AAAAMgcQAGIAAACmAQAARQAAACBhdCBsaW5lIAAAAEACEABjAAAA9wEAACEAAABAAhAAYwAAAPsBAAAMAAAAIGNvbHVtbiBAAhAAYwAAAAICAAAhAAAAQAIQAGMAAAALAgAAKgAAAEACEABjAAAADwIAACwAAABAAhAAYwAAABQCAAAJAAAAaW5mLWluZk5hTgAAPgAAAAwAAAAEAAAAPwAAAEAAAABYAEGAo8EAC/sHAQAAAEIAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5ALcDEABLAAAABQsAAA4AAACkAhAATwAAADwGAAAUAAAApAIQAE8AAAA8BgAAIQAAAKQCEABPAAAAMAYAABQAAACkAhAATwAAADAGAAAhAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAAAABFUhAABgAAAEtSEAAIAAAAU1IQAAoAAAD/axAAAQAAAGludmFsaWQgdHlwZTogAACAUhAADgAAABtWEAALAAAAaW52YWxpZCB2YWx1ZTogAKBSEAAPAAAAG1YQAAsAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlk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aWQgUkFEIG1hZ2ljOiAweAAAAABmEAAVAAAAAgBBqszBAAsBCABBtMzBAAt1IAAA6W1dy9YsUOtjeEGmV3Ebi7n1Ky+JZFpnOv7tcjMv54x1AQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAACAAAOggICAgICAgICAgICAgYXQgOgAAAIhmEAABAAAACjogAAEAAAAAAAAAlWYQAAIAAAACAEGyzcEACwEEAEG8zcEACzEgAADoIC0gAAEAAAAAAAAAwGYQAAMAAAAgICAgICA8dW5rbm93bj4AAgAAAAAAAAACAEH4zcEAC50NIACA4O+/vQAyBhAANAAAAGcBAAAwAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybRBnEAAoAAAAJAAAAAAAAAACAAAAOGcQAGVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2Ug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",typeof document>"u"?require("url").pathToFileURL(__filename).href:UQ&&UQ.tagName.toUpperCase()==="SCRIPT"&&UQ.src||new URL("spark.cjs.min.js",document.baseURI).href));const A=dh();(typeof Q=="string"||typeof Request=="function"&&Q instanceof Request||typeof URL=="function"&&Q instanceof URL)&&(Q=fetch(Q));const{instance:I,module:g}=await Oh(await Q,A);return Th(I)}var mh=`precision highp float; + `)],statements:({inputs:B,outputs:C})=>{const E=xA(I)?`${B.value}`:lA(I)?`${g}(${B.value})`:`floatBitsToUint(${B.value})`;return[`${g} bits = ${E};`,`${C.state} = pcg_mix(bits);`]}})}dynoOut(){return new Z(this,"state")}}class vD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uint"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new gg({value:I}).outputs.state;return g=new zA({state:g}).outputs.state,new _A({state:g}).outputs}})}dynoOut(){return new Z(this,"hash")}}class XD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new gg({value:I}).outputs.state;g=new zA({state:g}).outputs.state;const B=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const C=new _A({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec2",x:B,y:C})}}})}dynoOut(){return new Z(this,"hash")}}class VD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new gg({value:I}).outputs.state;g=new zA({state:g}).outputs.state;const B=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const C=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const E=new _A({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec3",x:B,y:C,z:E})}}})}dynoOut(){return new Z(this,"hash")}}class WD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"uvec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new gg({value:I}).outputs.state;g=new zA({state:g}).outputs.state;const B=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const C=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const E=new _A({state:g}).outputs.hash;g=new zA({state:g}).outputs.state;const i=new _A({state:g}).outputs.hash;return{hash:yI({vectorType:"uvec4",x:B,y:C,z:E,w:i})}}})}dynoOut(){return new Z(this,"hash")}}class jD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"float"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=uD(I);return{hash:FA(bi(g),IA("float",1/2**32))}}})}dynoOut(){return new Z(this,"hash")}}class zD extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=bD(I);return{hash:FA(Pi(g),IA("float",1/2**32))}}})}dynoOut(){return new Z(this,"hash")}}class _D extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=PD(I);return{hash:FA(pI(g),IA("float",1/2**32))}}})}dynoOut(){return new Z(this,"hash")}}class $D extends aI{constructor({value:A}){super({inTypes:{value:CA(A)},outTypes:{hash:"vec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=mD(I);return{hash:FA(mi(g),IA("float",1/2**32))}}})}dynoOut(){return new Z(this,"hash")}}class Ao extends l{constructor({z:A,zNear:I,zFar:g}){super({inTypes:{z:"float",zNear:"float",zFar:"float"},outTypes:{depth:"float"},inputs:{z:A,zNear:I,zFar:g},statements:({inputs:B,outputs:C})=>[`float clamped = clamp(${B.z}, ${B.zNear}, ${B.zFar});`,`${C.depth} = (log2(clamped + 1.0) - log2(${B.zNear} + 1.0)) / (log2(${B.zFar} + 1.0) - log2(${B.zNear} + 1.0));`]})}dynoOut(){return new Z(this,"depth")}}class Io extends l{constructor({index:A}){super({inTypes:{index:"int"},outTypes:{color:"vec3"},inputs:{index:A},statements:({inputs:I,outputs:g})=>[`${g.color} = debugColorHue(uint(${I.index}));`]})}dynoOut(){return new Z(this,"color")}}const go=(Q,{scale:A,scales:I,rotate:g,translate:B})=>new Bo({position:Q,scale:A,scales:I,rotate:g,translate:B}).outputs.position,Qo=(Q,{scale:A,scales:I,rotate:g})=>new Co({dir:Q,scale:A,scales:I,rotate:g}).outputs.dir,P0=(Q,{rotate:A})=>new Eo({quaternion:Q,rotate:A}).outputs.quaternion;class Bo extends l{constructor({position:A,scale:I,scales:g,rotate:B,translate:C}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:I,scales:g,rotate:B,translate:C},statements:({inputs:E,outputs:i})=>{const{position:o}=i;if(!o)return[];const{scale:D,scales:w,rotate:s,translate:t}=E;return[`${o} = ${E.position??"vec3(0.0, 0.0, 0.0)"};`,D?`${o} *= ${D};`:null,w?`${o} *= ${w};`:null,s?`${o} = quatVec(${s}, ${o});`:null,t?`${o} += ${t};`:null].filter(Boolean)}})}}class Co extends l{constructor({dir:A,scale:I,scales:g,rotate:B}){super({inTypes:{dir:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{dir:"vec3"},inputs:{dir:A,scale:I,scales:g,rotate:B},statements:({inputs:C,outputs:E})=>{const{dir:i}=E;if(!i)return[];const{scale:o,scales:D,rotate:w}=C;return[`${i} = ${C.dir??"vec3(0.0, 0.0, 0.0)"};`,o?`${i} *= ${o};`:null,D?`${i} *= ${D};`:null,w?`${i} = quatVec(${w}, ${i});`:null].filter(Boolean)}})}}class Eo extends l{constructor({quaternion:A,rotate:I}){super({inTypes:{quaternion:"vec4",rotate:"vec4"},outTypes:{quaternion:"vec4"},inputs:{quaternion:A,rotate:I},statements:({inputs:g,outputs:B})=>{const{quaternion:C}=B;return C?[`${C} = ${g.quaternion??"vec4(0.0, 0.0, 0.0, 1.0)"};`,I?`${C} = quatQuat(${g.rotate}, ${C});`:null].filter(Boolean):[]}})}}const m0=()=>{throw new Error("Not implemented")},T0=()=>{throw new Error("Not implemented")},O0=()=>{throw new Error("Not implemented")},Z0=()=>{throw new Error("Not implemented")},v0=()=>{throw new Error("Not implemented")},X0=()=>{throw new Error("Not implemented")},V0=(Q,A)=>new io({texture:Q,lod:A}),W0=(Q,A,I)=>new Do({texture:Q,coord:A,bias:I}),j0=(Q,A,I)=>new oo({texture:Q,coord:A,lod:I});class io extends l{constructor({texture:A,lod:I}){const g=CA(A);super({inTypes:{texture:g,lod:"int"},outTypes:{size:so(g)},inputs:{texture:A,lod:I},statements:({inputs:B,outputs:C})=>[`${C.size} = textureSize(${B.texture}, ${B.lod??"0"});`]})}dynoOut(){return new Z(this,"size")}}class Do extends l{constructor({texture:A,coord:I,bias:g}){const B=CA(A);super({inTypes:{texture:B,coord:z0(B),bias:"float"},outTypes:{sample:wo(B)},inputs:{texture:A,coord:I,bias:g},statements:({inputs:C,outputs:E})=>[`${E.sample} = texture(${C.texture}, ${C.coord}${C.bias?`, ${C.bias}`:""});`]})}dynoOut(){return new Z(this,"sample")}}class oo extends l{constructor({texture:A,coord:I,lod:g}){const B=CA(A);super({inTypes:{texture:B,coord:so(B),lod:"int"},outTypes:{texel:wo(B)},inputs:{texture:A,coord:I,lod:g},statements:({inputs:C,outputs:E})=>[`${E.texel} = texelFetch(${C.texture}, ${C.coord}, ${C.lod??"0"});`]})}dynoOut(){return new Z(this,"texel")}}function so(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DShadow":case"samplerCubeShadow":return"ivec2";case"sampler3D":case"usampler3D":case"isampler3D":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DArrayShadow":return"ivec3";default:throw new Error(`Invalid texture type: ${Q}`)}}function z0(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":return"vec2";case"sampler3D":case"usampler3D":case"isampler3D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DShadow":return"vec3";case"samplerCubeShadow":case"sampler2DArrayShadow":return"vec4";default:throw new Error(`Invalid texture type: ${Q}`)}}function wo(Q){switch(Q){case"sampler2D":case"sampler2DArray":case"sampler3D":case"samplerCube":case"sampler2DShadow":return"vec4";case"usampler2D":case"usampler2DArray":case"usampler3D":case"usamplerCube":return"uvec4";case"isampler2D":case"isampler2DArray":case"isampler3D":case"isamplerCube":return"ivec4";case"samplerCubeShadow":case"sampler2DArrayShadow":return"float";default:throw new Error(`Invalid texture type: ${Q}`)}}const _0=Q=>new ao({degrees:Q}),$0=Q=>new to({radians:Q}),mQ=Q=>new Go({radians:Q}),AG=Q=>new ho({radians:Q}),IG=Q=>new yo({radians:Q}),gG=Q=>new co({sin:Q}),QG=Q=>new So({cos:Q}),BG=Q=>new Fo({tan:Q}),CG=(Q,A)=>new Ro({y:Q,x:A}),EG=Q=>new ko({x:Q}),iG=Q=>new eo({x:Q}),DG=Q=>new No({x:Q}),oG=Q=>new Mo({x:Q}),sG=Q=>new Jo({x:Q}),wG=Q=>new Uo({x:Q});class ao extends r{constructor({degrees:A}){super({a:A,outTypeFunc:I=>I,outKey:"radians"}),this.statements=({inputs:I,outputs:g})=>[`${g.radians} = radians(${I.a});`]}}class to extends r{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"degrees"}),this.statements=({inputs:I,outputs:g})=>[`${g.degrees} = degrees(${I.a});`]}}class Go extends r{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"sin"}),this.statements=({inputs:I,outputs:g})=>[`${g.sin} = sin(${I.a});`]}}class ho extends r{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"cos"}),this.statements=({inputs:I,outputs:g})=>[`${g.cos} = cos(${I.a});`]}}class yo extends r{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"tan"}),this.statements=({inputs:I,outputs:g})=>[`${g.tan} = tan(${I.a});`]}}class co extends r{constructor({sin:A}){super({a:A,outTypeFunc:I=>I,outKey:"asin"}),this.statements=({inputs:I,outputs:g})=>[`${g.asin} = asin(${I.a});`]}}class So extends r{constructor({cos:A}){super({a:A,outTypeFunc:I=>I,outKey:"acos"}),this.statements=({inputs:I,outputs:g})=>[`${g.acos} = acos(${I.a});`]}}class Fo extends r{constructor({tan:A}){super({a:A,outTypeFunc:I=>I,outKey:"atan"}),this.statements=({inputs:I,outputs:g})=>[`${g.atan} = atan(${I.a});`]}}class Ro extends DA{constructor({y:A,x:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"atan2"}),this.statements=({inputs:g,outputs:B})=>[`${B.atan2} = atan2(${g.a}, ${g.b});`]}}class ko extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"sinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.sinh} = sinh(${I.a});`]}}class eo extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"cosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.cosh} = cosh(${I.a});`]}}class No extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"tanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.tanh} = tanh(${I.a});`]}}class Mo extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"asinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.asinh} = asinh(${I.a});`]}}class Jo extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"acosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.acosh} = acosh(${I.a});`]}}class Uo extends r{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"atanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.atanh} = atanh(${I.a});`]}}const aG=Object.freeze(Object.defineProperty({__proto__:null,Abs:$E,Acos:So,Acosh:Jo,Add:ZE,All:li,And:Ni,Any:di,Asin:co,Asinh:Mo,Atan:Fo,Atan2:Ro,Atanh:Uo,BVec2:Vi,BVec3:Wi,BVec4:ji,BinaryOp:DA,Bool:Oi,Ceil:gi,Clamp:yi,Combine:pD,CombineCovSplat:RC,CombineGsplat:hC,CompMult:rD,CompXor:pi,Compilation:$B,Cos:ho,Cosh:eo,CovSplat:rA,Cross:MD,DebugColorHue:Io,Degrees:to,Determinant:lD,Distance:eD,Div:VE,Dot:ND,Dyno:l,DynoBlock:aI,DynoBool:rg,DynoBvec2:YC,DynoBvec3:qC,DynoBvec4:uC,DynoConst:_B,DynoFloat:vI,DynoInt:$A,DynoIsampler2D:$C,DynoIsampler2DArray:IE,DynoIsampler3D:BE,DynoIsamplerCube:iE,DynoIvec2:lC,DynoIvec3:fC,DynoIvec4:PC,DynoLiteral:ZI,DynoMat2:mC,DynoMat2x2:TC,DynoMat2x3:OC,DynoMat2x4:ZC,DynoMat3:sB,DynoMat3x2:vC,DynoMat3x3:XC,DynoMat3x4:VC,DynoMat4:WC,DynoMat4x2:jC,DynoMat4x3:zC,DynoMat4x4:_C,DynoOutput:Z,DynoProgram:sQ,DynoProgramTemplate:Rg,DynoRemapIndex:ZD,DynoSampler2D:AE,DynoSampler2DArray:gE,DynoSampler2DArrayShadow:sE,DynoSampler2DShadow:oE,DynoSampler3D:CE,DynoSamplerCube:DE,DynoSamplerCubeShadow:wE,DynoUint:rC,DynoUniform:q,DynoUsampler2D:Yg,DynoUsampler2DArray:pA,DynoUsampler3D:QE,DynoUsamplerCube:EE,DynoUvec2:dC,DynoUvec3:pC,DynoUvec4:bC,DynoValue:JI,DynoVec2:xC,DynoVec3:LI,DynoVec4:Ig,Equal:ri,Exp:ii,Exp2:Di,ExtendVec:LD,FaceForward:nD,Float:Xi,FloatBitsToInt:oD,FloatBitsToUint:sD,Floor:Ii,Fract:Ci,GreaterThan:Hi,GreaterThanEqual:Ki,Gsplat:V,GsplatNormal:cC,GsplatToCovSplat:tC,Hash:vD,Hash2:XD,Hash3:VD,Hash4:WD,HashFloat:jD,HashVec2:zD,HashVec3:_D,HashVec4:$D,IMod:WE,IVec2:zi,IVec3:_i,IVec4:$i,Int:Zi,IntBitsToFloat:wD,Inverse:xD,InverseSqrt:ti,IsInf:ki,IsNan:Ri,Length:kD,LessThan:Li,LessThanEqual:ni,Log:oi,Log2:si,Mat2:ED,Mat3:iD,Mat4:DD,Max:hi,Min:Gi,Mix:ci,Mod:jE,Modf:zE,Mul:XE,Neg:_E,Normalize:JD,NormalizedDepth:Ao,Not:Ui,NotEqual:Yi,NumCovSplats:wC,NumExtSplats:oC,NumPackedSplats:CC,Or:Mi,Outer:YD,OutputCovSplat:nC,OutputExtCovSplat:KC,OutputExtendedSplat:HC,OutputPackedSplat:LC,OutputRgba8:oB,PackHalf2x16:cD,PackSnorm2x16:tD,PackUnorm2x16:hD,PagedSplatTexCoord:eC,PcgHash:_A,PcgMix:gg,PcgNext:zA,Pow:Ei,ProjectH:UD,Radians:ao,ReadCovSplat:aC,ReadExtSplat:sC,ReadPackedSplat:iC,ReadPackedSplatRange:DC,ReflectVec:HD,RefractVec:KD,Round:Bi,Select:xi,Shl:ui,Shr:fi,Sign:Ai,SimpleCast:NA,Sin:Go,Sinh:ko,Smoothstep:Fi,SplatTexCoord:kC,Split:qD,SplitCovSplat:FC,SplitGsplat:GC,Sqr:wi,Sqrt:ai,Step:Si,Sub:vE,Swizzle:fD,TCovSplats:AC,TExtSplats:BB,TPackedSplats:CQ,Tan:yo,Tanh:No,TexelFetch:oo,Texture:Do,TextureSize:io,TransformDir:Co,TransformGsplat:SC,TransformPosition:Bo,TransformQuaternion:Eo,Transpose:dD,TrinaryOp:bI,Trunc:Qi,UVec2:AD,UVec3:ID,UVec4:gD,Uint:vi,UintBitsToFloat:aD,UintToRgba8:FD,UnaryOp:r,UnpackHalf2x16:SD,UnpackSnorm2x16:GD,UnpackUnorm2x16:yD,Vec2:QD,Vec3:BD,Vec4:CD,Xor:Ji,abs:it,acos:QG,acosh:sG,add:qA,all:ut,and:Lt,any:ft,arrayIndex:v0,arrayLength:X0,asin:gG,asinh:oG,atan:BG,atan2:CG,atanh:wG,bool:Tt,bvec2:vt,bvec3:Xt,bvec4:Vt,ceil:st,clamp:et,combine:yI,combineCovSplat:iB,combineGsplat:CI,comment:Z0,compMult:N0,compXor:bt,cos:AG,cosh:iG,cross:y0,debugColorHue:b0,defineCovSplat:nI,defineExtSplats:EB,defineGsplat:JA,defineGsplatNormal:yC,definePackedSplats:EQ,degrees:$0,determinant:U0,distance:h0,div:Zg,dot:RD,dyno:gB,dynoBlock:HA,dynoBool:Ps,dynoBvec2:Os,dynoBvec3:Vs,dynoBvec4:zs,dynoConst:IA,dynoDeclare:QB,dynoFloat:iI,dynoFor:O0,dynoIf:m0,dynoInt:Ts,dynoIsampler2D:Gw,dynoIsampler2DArray:cw,dynoIsampler3D:Rw,dynoIsamplerCube:Nw,dynoIvec2:vs,dynoIvec3:js,dynoIvec4:$s,dynoLiteral:Vg,dynoMat2:Iw,dynoMat2x2:gw,dynoMat2x3:Qw,dynoMat2x4:Bw,dynoMat3:Cw,dynoMat3x2:Ew,dynoMat3x3:iw,dynoMat3x4:Dw,dynoMat4:ow,dynoMat4x2:sw,dynoMat4x3:ww,dynoMat4x4:aw,dynoSampler2D:hw,dynoSampler2DArray:Sw,dynoSampler2DArrayShadow:Uw,dynoSampler2DShadow:Jw,dynoSampler3D:kw,dynoSamplerCube:Mw,dynoSamplerCubeShadow:Lw,dynoSwitch:T0,dynoUint:ms,dynoUsampler2D:tw,dynoUsampler2DArray:yw,dynoUsampler3D:Fw,dynoUsamplerCube:ew,dynoUvec2:Zs,dynoUvec3:Ws,dynoUvec4:_s,dynoVec2:Xs,dynoVec3:NI,dynoVec4:Aw,equal:qt,exp:Gt,exp2:ht,extendVec:k0,faceforward:c0,float:bi,floatBitsToInt:Ti,floatBitsToUint:B0,floor:ot,fract:vg,greaterThan:xt,greaterThanEqual:ei,gsplatNormal:YQ,gsplatToCovSplat:Wg,hash:uD,hash2:bD,hash3:PD,hash4:mD,hashFloat:f0,hashVec2:u0,hashVec3:TD,hashVec4:PQ,imod:bQ,int:Ot,intBitsToFloat:C0,inverse:L0,inversesqrt:Rt,isAllFloatType:UI,isBoolType:fI,isFloatType:Hg,isInf:Ut,isIntType:lA,isMat2:KI,isMat3:rI,isMat4:YI,isMatFloatType:XB,isNan:Jt,isScalarType:uI,isUintType:xA,isVector2Type:$I,isVector3Type:Ag,isVector4Type:Kg,isVectorType:Us,ivec2:Wt,ivec3:jt,ivec4:zt,length:G0,lessThan:dt,lessThanEqual:lt,literalNegOne:Ks,literalOne:Hs,literalZero:Eg,log:yt,log2:ct,mat2:I0,mat3:g0,mat4:Q0,max:TE,min:kt,mix:OE,mod:mE,modf:Et,mul:FA,neg:cB,normalize:kg,normalizedDepth:OD,not:Kt,notEqual:pt,numCovSplats:ds,numExtSplats:Ys,numPackedSplats:rs,numberAsFloat:AA,numberAsInt:kA,numberAsUint:eA,or:nt,outer:M0,outputCovSplat:NC,outputCovSplatDepth:UC,outputExtCovSplat:lQ,outputExtendedSplat:MC,outputPackedSplat:DB,outputRgba8:ps,outputSplatDepth:JC,packHalf2x16:w0,packSnorm2x16:i0,packUnorm2x16:o0,pagedSplatTexCoord:dQ,pcgHash:p0,pcgMix:x0,pcgNext:q0,pow:tt,projectH:R0,radians:_0,readCovSplat:ls,readExtSplat:QC,readPackedSplat:IC,readPackedSplatRange:gC,reflectVec:S0,refractVec:F0,remapIndex:l0,round:at,sameSizeIvec:ns,sameSizeUvec:jB,sameSizeVec:Ls,select:SB,shl:Yt,shr:rt,sign:Dt,sin:mQ,sinh:EG,smoothstep:Mt,splatTexCoord:CB,split:VI,splitCovSplat:jg,splitGsplat:mA,sqr:St,sqrt:Ft,step:Nt,sub:EI,swizzle:e0,tan:IG,tanh:DG,texelFetch:j0,texture:W0,textureSize:V0,transformDir:Qo,transformGsplat:BC,transformPos:go,transformQuat:P0,transpose:J0,trunc:wt,typeLiteral:zB,uint:Zt,uintBitsToFloat:E0,uintToRgba8:t0,uniform:bs,unindent:wA,unindentLines:z,unpackHalf2x16:a0,unpackSnorm2x16:D0,unpackUnorm2x16:s0,uvec2:_t,uvec3:$t,uvec4:A0,valType:CA,vec2:Pi,vec3:pI,vec4:mi,vectorDim:WB,vectorElementType:VB,xor:Ht},Symbol.toStringTag,{value:"Module"}));var tG=`precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -310,7 +238,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`,Zh=`precision highp float; +}`,GG=`precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -350,7 +278,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`,Vh=`precision highp float; +}`,hG=`precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -392,7 +320,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`,Xh=`precision highp float; +}`,yG=`precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -412,332 +340,22 @@ uniform int targetCount; out vec4 target; -{{ GLOBALS }} - -void computeReadback(int _index) { - {{ STATEMENTS }} -} - -void main() { - int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x); - int index = targetIndex - targetBase; - - if ((index >= 0) && (index < targetCount)) { - computeReadback(index); - } else { - target = vec4(0.0, 0.0, 0.0, 0.0); - } -}`,Wh=`precision highp float; -precision highp int; - -#include - -uniform float near; -uniform float far; -uniform bool encodeLinear; -uniform float time; -uniform bool debugFlag; -uniform float maxStdDev; -uniform float minAlpha; -uniform bool stochastic; -uniform bool disableFalloff; -uniform float falloff; - -uniform bool splatTexEnable; -uniform sampler3D splatTexture; -uniform mat2 splatTexMul; -uniform vec2 splatTexAdd; -uniform float splatTexNear; -uniform float splatTexFar; -uniform float splatTexMid; - -out vec4 fragColor; - -in vec4 vRgba; -in vec2 vSplatUv; -in vec3 vNdc; -flat in uint vSplatIndex; - -void main() { - vec4 rgba = vRgba; - - float z = dot(vSplatUv, vSplatUv); - if (!splatTexEnable) { - if (z > (maxStdDev * maxStdDev)) { - discard; - } - } else { - vec2 uv = splatTexMul * vSplatUv + splatTexAdd; - float ndcZ = vNdc.z; - float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near)); - float clampedFar = max(splatTexFar, splatTexNear); - float clampedDepth = clamp(depth, splatTexNear, clampedFar); - float logDepth = log2(clampedDepth + 1.0); - float logNear = log2(splatTexNear + 1.0); - float logFar = log2(clampedFar + 1.0); - - float texZ; - if (splatTexMid > 0.0) { - float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar); - float logMid = log2(clampedMid + 1.0); - texZ = (clampedDepth <= clampedMid) ? - (0.5 * ((logDepth - logNear) / (logMid - logNear))) : - (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5); - } else { - texZ = (logDepth - logNear) / (logFar - logNear); - } - - vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ)); - rgba *= modulate; - } - - rgba.a *= mix(1.0, exp(-0.5 * z), falloff); - - if (rgba.a < minAlpha) { - discard; - } - if (encodeLinear) { - rgba.rgb = srgbToLinear(rgba.rgb); - } - - if (stochastic) { - const bool STEADY = false; - uint uTime = STEADY ? 0u : floatBitsToUint(time); - uvec2 coord = uvec2(gl_FragCoord.xy); - uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex); - state = state * 747796405u + 2891336453u; - uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; - hash = (hash >> 22u) ^ hash; - float rand = float(hash) / 4294967296.0; - if (rand < rgba.a) { - fragColor = vec4(rgba.rgb, 1.0); - } else { - discard; - } - } else { - #ifdef PREMULTIPLIED_ALPHA - fragColor = vec4(rgba.rgb * rgba.a, rgba.a); - #else - fragColor = rgba; - #endif - } -}`,jh=`precision highp float; -precision highp int; -precision highp usampler2DArray; - -#include - -attribute uint splatIndex; - -out vec4 vRgba; -out vec2 vSplatUv; -out vec3 vNdc; -flat out uint vSplatIndex; - -uniform vec2 renderSize; -uniform uint numSplats; -uniform vec4 renderToViewQuat; -uniform vec3 renderToViewPos; -uniform float maxStdDev; -uniform float minPixelRadius; -uniform float maxPixelRadius; -uniform float time; -uniform float deltaTime; -uniform bool debugFlag; -uniform float minAlpha; -uniform bool stochastic; -uniform bool enable2DGS; -uniform float blurAmount; -uniform float preBlurAmount; -uniform float focalDistance; -uniform float apertureAngle; -uniform float clipXY; -uniform float focalAdjustment; - -uniform usampler2DArray packedSplats; -uniform vec4 rgbMinMaxLnScaleMinMax; - -void main() { - - gl_Position = vec4(0.0, 0.0, 2.0, 1.0); - - if (uint(gl_InstanceID) >= numSplats) { - return; - } - - ivec3 texCoord; - if (stochastic) { - texCoord = ivec3( - uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK, - (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK, - (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS) - ); - } else { - if (splatIndex == 0xffffffffu) { - - return; - } - texCoord = ivec3( - splatIndex & SPLAT_TEX_WIDTH_MASK, - (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK, - splatIndex >> SPLAT_TEX_LAYER_BITS - ); - } - uvec4 packedData = texelFetch(packedSplats, texCoord, 0); - - vec3 center, scales; - vec4 quaternion, rgba; - unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax); - - if (rgba.a < minAlpha) { - return; - } - bvec3 zeroScales = equal(scales, vec3(0.0)); - if (all(zeroScales)) { - return; - } - - - vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos; - - - if (viewCenter.z >= 0.0) { - return; - } - - - vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0); - - - if (abs(clipCenter.z) >= clipCenter.w) { - return; - } - - - float clip = clipXY * clipCenter.w; - if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) { - return; - } - - - vSplatIndex = splatIndex; - - - vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion); - - if (enable2DGS && any(zeroScales)) { - vRgba = rgba; - vSplatUv = position.xy * maxStdDev; - - vec3 offset; - if (zeroScales.z) { - offset = vec3(vSplatUv.xy * scales.xy, 0.0); - } else if (zeroScales.y) { - offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z); - } else { - offset = vec3(0.0, vSplatUv.xy * scales.yz); - } - - vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset); - gl_Position = projectionMatrix * vec4(viewPos, 1.0); - vNdc = gl_Position.xyz / gl_Position.w; - return; - } - - - vec3 ndcCenter = clipCenter.xyz / clipCenter.w; - - - mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion); - mat3 cov3D = RS * transpose(RS); - - - vec2 scaledRenderSize = renderSize * focalAdjustment; - vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]); - - mat3 J; - if(isOrthographic) { - J = mat3( - focal.x, 0.0, 0.0, - 0.0, focal.y, 0.0, - 0.0, 0.0, 0.0 - ); - } else { - float invZ = 1.0 / viewCenter.z; - vec2 J1 = focal * invZ; - vec2 J2 = -(J1 * viewCenter.xy) * invZ; - J = mat3( - J1.x, 0.0, J2.x, - 0.0, J1.y, J2.y, - 0.0, 0.0, 0.0 - ); - } - - - - - - - - - mat3 cov2D = transpose(J) * cov3D * J; - float a = cov2D[0][0]; - float d = cov2D[1][1]; - float b = cov2D[0][1]; - - - a += preBlurAmount; - d += preBlurAmount; - - float fullBlurAmount = blurAmount; - if ((focalDistance > 0.0) && (apertureAngle > 0.0)) { - float focusRadius = maxPixelRadius; - if (viewCenter.z < 0.0) { - float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z); - float apertureRadius = focal.x * tan(0.5 * apertureAngle); - focusRadius = focusBlur * apertureRadius; - } - fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius)); - } - - - float detOrig = a * d - b * b; - a += fullBlurAmount; - d += fullBlurAmount; - float det = a * d - b * b; - - - float blurAdjust = sqrt(max(0.0, detOrig / det)); - rgba.a *= blurAdjust; - if (rgba.a < minAlpha) { - return; - } - - - float eigenAvg = 0.5 * (a + d); - float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det)); - float eigen1 = eigenAvg + eigenDelta; - float eigen2 = eigenAvg - eigenDelta; - - vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a)); - vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x); +{{ GLOBALS }} - float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1)); - float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2)); - if (scale1 < minPixelRadius && scale2 < minPixelRadius) { - return; - } +void computeReadback(int _index) { + {{ STATEMENTS }} +} - - vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2; - vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset; - vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z); +void main() { + int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x); + int index = targetIndex - targetBase; - vRgba = rgba; - vSplatUv = position.xy * maxStdDev; - vNdc = ndc; - gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw); -}`,vh=`const float LN_SCALE_MIN = -12.0; + if ((index >= 0) && (index < targetCount)) { + computeReadback(index); + } else { + target = vec4(0.0, 0.0, 0.0, 0.0); + } +}`,cG=`const float LN_SCALE_MIN = -12.0; const float LN_SCALE_MAX = 9.0; const uint SPLAT_TEX_WIDTH_BITS = 11u; @@ -773,6 +391,28 @@ float pow8(float x) { return x4 * x4; } +float gaussianKernelPower(float z2, float k) { + if (k == 1.0) { + return z2; + } else if (k == 2.0) { + return z2 * z2; + } + return pow(max(0.0, z2), k); +} + +float gaussianKernelScale(float maxStdDev, float k) { + if (k == 1.0) { + return maxStdDev; + } else if (k == 2.0) { + return sqrt(maxStdDev); + } + return pow(max(0.0, maxStdDev), 1.0 / k); +} + +float gaussianKernel(float z2, float k) { + return exp(-0.5 * gaussianKernelPower(z2, k)); +} + vec3 srgbToLinear(vec3 rgb) { return pow(rgb, vec3(2.2)); } @@ -1261,7 +901,7 @@ vec3 debugColorHue(uint i) { vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); return mix(vec3(1.0), rgb, 0.85); -}`,zh=`precision highp float; +}`,SG=`precision highp float; precision highp int; #include @@ -1272,6 +912,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -1303,11 +944,12 @@ void main() { rgba.a = mix(min1a, min1a * exp(exponent), falloff); } else { + float kernel = gaussianKernel(z2, gaussianK); if (rgba.a <= 1.0) { - rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff); + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); } else { float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); - float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a); + float alpha = 1.0 - pow(1.0 - kernel, a); rgba.a = mix(1.0, alpha, falloff); } } @@ -1326,7 +968,7 @@ void main() { #endif #include -}`,_h=`precision highp float; +}`,FG=`precision highp float; precision highp int; precision highp usampler2DArray; @@ -1343,6 +985,7 @@ uniform vec4 renderToViewQuat; uniform vec3 renderToViewPos; uniform mat3 renderToViewBasis; uniform float maxStdDev; +uniform float gaussianK; uniform float minPixelRadius; uniform float maxPixelRadius; uniform bool enableExtSplats; @@ -1428,7 +1071,7 @@ void main() { } } - adjustedStdDev = maxStdDev; + float adjustedMaxStdDev = maxStdDev; if (rgba.a > 1.0) { rgba.a = min(rgba.a * 4.0 - 3.0, 5.0); @@ -1442,8 +1085,9 @@ void main() { } - adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); + adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); } + adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK); vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos; @@ -1593,18 +1237,7 @@ void main() { gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw); #include -}`;let eQ=null;function gg(){return eQ||(G.ShaderChunk.splatDefines=vh,eQ={oldSplatVertex:jh,oldSplatFragment:Wh,splatVertex:_h,splatFragment:zh,computeVec4Template:Xh,computeUvec4Vec4Template:Zh,computeUvec4x2Vec4Template:Vh,computeUvec4Template:mh}),eQ}const zA=class zA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}static ensureBuffer(A,I){const B=Math.ceil(Math.max(1,A)/P)*P*4;if(I.byteLength>=B)return I;const C=new ArrayBuffer(B);if(I instanceof ArrayBuffer)return C;const E=I.constructor;return new E(C)}ensureBuffer(A,I){return zA.ensureBuffer(A,I)}ensureCapacity(A){const{width:I,height:g,depth:B,maxSplats:C}=BA(A);(!this.target||C>this.capacity)&&(this.dispose(),this.capacity=C,this.target=new G.WebGLArrayRenderTarget(I,g,B,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:G.NearestFilter,minFilter:G.NearestFilter}),this.target.texture.format=G.RGBAFormat,this.target.texture.type=G.UnsignedByteType,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let I=zA.readbackProgram.get(A);if(!I){const B=cA({index:"int"},{rgba8:"vec4"},({index:C})=>(A.inputs.index=C,{rgba8:new FB({rgba8:A.outputs.rgba8})}));zA.programTemplate||(zA.programTemplate=new Jg(gg().computeVec4Template)),I=new yQ({graph:B,inputs:{index:"_index"},outputs:{rgba8:"target"},template:zA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),zA.readbackProgram.set(A,I)}const g=I.prepareMaterial();return zA.fullScreenQuad.material=g,{program:I,material:g}}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}process({count:A,material:I}){const g=this.renderer;if(!g)throw new Error("No renderer");if(!this.target)throw new Error("No target");const B=P*WA;I.uniforms.targetBase.value=0,I.uniforms.targetCount.value=A;let C=0;for(;CA)}render({reader:A,count:I,renderer:g}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:B,material:C}=this.prepareProgramMaterial(A);B.update();const E=this.saveRenderState(this.renderer);this.process({count:I,material:C}),this.resetRenderState(this.renderer,E)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const I=this.saveRenderState(this.renderer),g=this.read({readback:A});return this.resetRenderState(this.renderer,I),g}async renderReadback({reader:A,count:I,renderer:g,readback:B}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const D=this.saveRenderState(this.renderer);this.process({count:I,material:E});const i=this.read({readback:B});return this.resetRenderState(this.renderer,D),i}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};zA.programTemplate=null,zA.readbackProgram=new WeakMap,zA.fullScreenQuad=new AB.FullScreenQuad(new G.RawShaderMaterial({visible:!1}));let TI=zA;const dA=class dA{constructor(A={}){if(this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new x({key:"rgbaArray",type:MB,globals:()=>[Tw],value:{texture:dA.getEmpty(),count:0},update:I=>(I.texture=this.getTexture(),I.count=this.count,I)}),A.array){this.array=A.array;const I=Math.floor(this.array.length/4);this.capacity=Math.ceil(I/P)*P,this.capacity>I&&(this.array=new Uint8Array(this.capacity*4),this.array.set(A.array)),this.count=Math.min(I,A.count??Number.POSITIVE_INFINITY)}else this.capacity=A.capacity??0,this.count=0}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var I;if(!this.array||A>(((I=this.array)==null?void 0:I.length)??0)/4){this.capacity=BA(A).maxSplats;const g=new Uint8Array(this.capacity*4);this.array&&g.set(this.array),this.array=g}return this.array}getTexture(){var I;let A=(I=this.readback)==null?void 0:I.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??dA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.capacity!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:I,depth:g}=BA(this.capacity);this.source=new G.DataArrayTexture(this.array,A,I,g),this.source.format=G.RGBAFormat,this.source.type=G.UnsignedByteType,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:I,renderer:g}){this.readback||(this.readback=new TI({renderer:g})),this.readback.render({reader:A,count:I,renderer:g}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:I,count:g,renderer:B}){const{dynoSplats:C,dynoBase:E,dynoCount:D,reader:i}=dA.makeDynos();return C.packedSplats=A,E.value=I,D.value=g,this.render({reader:i,count:g,renderer:B}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length{if(!C)throw new Error("index is undefined");C=xA(C,I);const E=TC(A,C,I,g);return{rgba8:OA(E).outputs.rgba}});dA.dynos={dynoSplats:A,dynoBase:I,dynoCount:g,reader:B}}return dA.dynos}};dA.emptySource=null,dA.dynos=null;let IQ=dA;const MB={type:"RgbaArray"},Tw=oA(` - struct RgbaArray { - sampler2DArray texture; - int count; - }; -`);function $h(Q,A){return new d({inTypes:{rgba:MB,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:Q,index:A},globals:()=>[Tw],statements:({inputs:g,outputs:B})=>z(` - if ((${g.index} >= 0) && (${g.index} < ${g.rgba}.count)) { - ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(${g.index}), 0); - } else { - ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0); - } - `)}).outputs.rgba}var Ow=(Q=>(Q.ALL="all",Q.PLANE="plane",Q.SPHERE="sphere",Q.BOX="box",Q.ELLIPSOID="ellipsoid",Q.CYLINDER="cylinder",Q.CAPSULE="capsule",Q.INFINITE_CONE="infinite_cone",Q))(Ow||{});function AR(Q){switch(Q){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${Q}`)}}var mw=(Q=>(Q.MULTIPLY="multiply",Q.SET_RGB="set_rgb",Q.ADD_RGBA="add_rgba",Q))(mw||{});function IR(Q){switch(Q){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${Q}`)}}class Zw extends G.Object3D{constructor(A={}){super();const{type:I,invert:g,opacity:B,color:C,displace:E,radius:D}=A;this.type=I??"sphere",this.invert=g??!1,this.opacity=B??1,this.color=C??new G.Color(1,1,1),this.displace=E??new G.Vector3(0,0,0),this.radius=D??0}}const CQ=class CQ extends G.Object3D{constructor(A={}){const{name:I,rgbaBlendMode:g="multiply",sdfSmooth:B=0,softEdge:C=0,invert:E=!1,sdfs:D=null}=A;super(),this.rgbaBlendMode=g,this.sdfSmooth=B,this.softEdge=C,this.invert=E,this.sdfs=D,this.ordering=CQ.nextOrdering++,this.name=I??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(I=>I!==A))}};CQ.nextOrdering=1;let Qg=CQ;class Vw{constructor({maxSdfs:A,maxEdits:I}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new x({key:"sdfArray",type:JB,globals:()=>[UB],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:g=>(g.numSdfs=this.numSdfs,g.sdfTexture=this.sdfTexture,g)}),this.maxEdits=Math.max(16,I??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new DI({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,I){const g=new G.DataTexture(A,8,I,G.RGBAIntegerFormat,G.UnsignedIntType);return g.internalFormat="RGBA32UI",g.needsUpdate=!0,g}newEdits(A,I){return new x({key:"edits",type:"uvec4",count:I,globals:()=>[tB],value:A})}ensureCapacity({maxSdfs:A,maxEdits:I}){let g=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),I>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,I),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),g=!0),g}updateEditData(A,I){const g=this.editData[A]!==I;return this.editData[A]=I,g}updateEditFloatData(A,I){XI[0]=I;const g=this.editFloatData[A]!==XI[0];return g&&(this.editFloatData[A]=XI[0]),g}encodeEdit(A,{sdfFirst:I,sdfCount:g,invert:B,rgbaBlendMode:C,softEdge:E,sdfSmooth:D}){const i=A*4;let w=!1;return w=this.updateEditData(i+0,C|(B?256:0))||w,w=this.updateEditData(i+1,I|g<<16)||w,w=this.updateEditFloatData(i+2,E)||w,w=this.updateEditFloatData(i+3,D)||w,w}updateSdfData(A,I){const g=this.sdfData[A]!==I;return this.sdfData[A]=I,g}updateSdfFloatData(A,I){XI[0]=I;const g=this.sdfFloatData[A]!==XI[0];return g&&(this.sdfFloatData[A]=XI[0]),g}encodeSdf(A,{sdfType:I,invert:g,center:B,quaternion:C,scale:E,sizes:D},i){const w=A*32,s=I|(g?256:0);let o=!1;o=this.updateSdfFloatData(w+0,(B==null?void 0:B.x)??0)||o,o=this.updateSdfFloatData(w+1,(B==null?void 0:B.y)??0)||o,o=this.updateSdfFloatData(w+2,(B==null?void 0:B.z)??0)||o,o=this.updateSdfData(w+3,s)||o,o=this.updateSdfFloatData(w+4,(C==null?void 0:C.x)??0)||o,o=this.updateSdfFloatData(w+5,(C==null?void 0:C.y)??0)||o,o=this.updateSdfFloatData(w+6,(C==null?void 0:C.z)??0)||o,o=this.updateSdfFloatData(w+7,(C==null?void 0:C.w)??0)||o,o=this.updateSdfFloatData(w+8,(E==null?void 0:E.x)??0)||o,o=this.updateSdfFloatData(w+9,(E==null?void 0:E.y)??0)||o,o=this.updateSdfFloatData(w+10,(E==null?void 0:E.z)??0)||o,o=this.updateSdfData(w+11,0)||o,o=this.updateSdfFloatData(w+12,(D==null?void 0:D.x)??0)||o,o=this.updateSdfFloatData(w+13,(D==null?void 0:D.y)??0)||o,o=this.updateSdfFloatData(w+14,(D==null?void 0:D.z)??0)||o,o=this.updateSdfFloatData(w+15,(D==null?void 0:D.w)??0)||o;const y=Math.min(4,i.length);for(let h=0;ho+y.length,0),g=this.ensureCapacity({maxEdits:A.length,maxSdfs:I}),B=[new G.Vector4,new G.Vector4],C=new G.Vector3,E=new G.Quaternion,D=new G.Vector3,i=new G.Vector4;let w=0,s=g;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,s=!0);for(const[o,{edit:y,sdfs:h}]of A.entries()){s=this.encodeEdit(o,{sdfFirst:w,sdfCount:h.length,invert:y.invert,rgbaBlendMode:IR(y.rgbaBlendMode),softEdge:y.softEdge,sdfSmooth:y.sdfSmooth})||s;let k=!1;for(const R of h)i.set(R.scale.x,R.scale.y,R.scale.z,R.radius),R.scale.setScalar(1),R.updateMatrixWorld(),R.matrixWorld.clone().invert().decompose(C,E,D),R.scale.set(i.x,i.y,i.z),R.updateMatrixWorld(),B[0].set(R.color.r,R.color.g,R.color.b,R.opacity),B[1].set(R.displace.x,R.displace.y,R.displace.z,1),k=this.encodeSdf(w,{sdfType:AR(R.type),invert:R.invert,center:C,quaternion:E,scale:D,sizes:i},B)||k,w+=1;this.numSdfs=w,k&&(this.sdfTexture.needsUpdate=!0),s||(s=k)}return{updated:s,dynoUpdated:g}}modify(A){return gR(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}modifyCov(A){return QR(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const JB={type:"SdfArray"},UB=oA(` +}`;let JQ=null;function eg(){return JQ||(a.ShaderChunk.splatDefines=cG,JQ={splatVertex:FG,splatFragment:SG,computeVec4Template:yG,computeUvec4Vec4Template:GG,computeUvec4x2Vec4Template:hG,computeUvec4Template:tG}),JQ}const WA=class WA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}static ensureBuffer(A,I){const B=Math.ceil(Math.max(1,A)/b)*b*4;if(I.byteLength>=B)return I;const C=new ArrayBuffer(B);if(I instanceof ArrayBuffer)return C;const E=I.constructor;return new E(C)}ensureBuffer(A,I){return WA.ensureBuffer(A,I)}ensureCapacity(A){const{width:I,height:g,depth:B,maxSplats:C}=iA(A);(!this.target||C>this.capacity)&&(this.dispose(),this.capacity=C,this.target=new a.WebGLArrayRenderTarget(I,g,B,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:a.NearestFilter,minFilter:a.NearestFilter}),this.target.texture.format=a.RGBAFormat,this.target.texture.type=a.UnsignedByteType,this.target.texture.internalFormat="RGBA8",this.target.scissorTest=!0)}prepareProgramMaterial(A){let I=WA.readbackProgram.get(A);if(!I){const B=HA({index:"int"},{rgba8:"vec4"},({index:C})=>(A.inputs.index=C,{rgba8:new oB({rgba8:A.outputs.rgba8})}));WA.programTemplate||(WA.programTemplate=new Rg(eg().computeVec4Template)),I=new sQ({graph:B,inputs:{index:"_index"},outputs:{rgba8:"target"},template:WA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),WA.readbackProgram.set(A,I)}const g=I.prepareMaterial();return WA.fullScreenQuad.material=g,{program:I,material:g}}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}process({count:A,material:I}){const g=this.renderer;if(!g)throw new Error("No renderer");if(!this.target)throw new Error("No target");const B=b*XA;I.uniforms.targetBase.value=0,I.uniforms.targetCount.value=A;let C=0;for(;CA)}render({reader:A,count:I,renderer:g}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:B,material:C}=this.prepareProgramMaterial(A);B.update();const E=this.saveRenderState(this.renderer);this.process({count:I,material:C}),this.resetRenderState(this.renderer,E)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const I=this.saveRenderState(this.renderer),g=this.read({readback:A});return this.resetRenderState(this.renderer,I),g}async renderReadback({reader:A,count:I,renderer:g,readback:B}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const i=this.saveRenderState(this.renderer);this.process({count:I,material:E});const o=this.read({readback:B});return this.resetRenderState(this.renderer,i),o}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};WA.programTemplate=null,WA.readbackProgram=new WeakMap,WA.fullScreenQuad=new _Q.FullScreenQuad(new a.RawShaderMaterial({visible:!1}));let zI=WA;var Lo=(Q=>(Q.ALL="all",Q.PLANE="plane",Q.SPHERE="sphere",Q.BOX="box",Q.ELLIPSOID="ellipsoid",Q.CYLINDER="cylinder",Q.CAPSULE="capsule",Q.INFINITE_CONE="infinite_cone",Q))(Lo||{});function RG(Q){switch(Q){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${Q}`)}}var no=(Q=>(Q.MULTIPLY="multiply",Q.SET_RGB="set_rgb",Q.ADD_RGBA="add_rgba",Q))(no||{});function kG(Q){switch(Q){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${Q}`)}}class Ho extends a.Object3D{constructor(A={}){super();const{type:I,invert:g,opacity:B,color:C,displace:E,radius:i}=A;this.type=I??"sphere",this.invert=g??!1,this.opacity=B??1,this.color=C??new a.Color(1,1,1),this.displace=E??new a.Vector3(0,0,0),this.radius=i??0}}const gQ=class gQ extends a.Object3D{constructor(A={}){const{name:I,rgbaBlendMode:g="multiply",sdfSmooth:B=0,softEdge:C=0,invert:E=!1,sdfs:i=null}=A;super(),this.rgbaBlendMode=g,this.sdfSmooth=B,this.softEdge=C,this.invert=E,this.sdfs=i,this.ordering=gQ.nextOrdering++,this.name=I??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.includes(A)||this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(I=>I!==A))}};gQ.nextOrdering=1;let Ng=gQ;class Ko{constructor({maxSdfs:A,maxEdits:I}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new q({key:"sdfArray",type:FB,globals:()=>[RB],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:g=>(g.numSdfs=this.numSdfs,g.sdfTexture=this.sdfTexture,g)}),this.maxEdits=Math.max(16,I??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new $A({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,I){const g=new a.DataTexture(A,8,I,a.RGBAIntegerFormat,a.UnsignedIntType);return g.internalFormat="RGBA32UI",g.needsUpdate=!0,g}newEdits(A,I){return new q({key:"edits",type:"uvec4",count:I,globals:()=>[kB],value:A})}ensureCapacity({maxSdfs:A,maxEdits:I}){let g=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),I>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,I),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),g=!0),g}updateEditData(A,I){const g=this.editData[A]!==I;return this.editData[A]=I,g}updateEditFloatData(A,I){PI[0]=I;const g=this.editFloatData[A]!==PI[0];return g&&(this.editFloatData[A]=PI[0]),g}encodeEdit(A,{sdfFirst:I,sdfCount:g,invert:B,rgbaBlendMode:C,softEdge:E,sdfSmooth:i}){const o=A*4;let D=!1;return D=this.updateEditData(o+0,C|(B?256:0))||D,D=this.updateEditData(o+1,I|g<<16)||D,D=this.updateEditFloatData(o+2,E)||D,D=this.updateEditFloatData(o+3,i)||D,D}updateSdfData(A,I){const g=this.sdfData[A]!==I;return this.sdfData[A]=I,g}updateSdfFloatData(A,I){PI[0]=I;const g=this.sdfFloatData[A]!==PI[0];return g&&(this.sdfFloatData[A]=PI[0]),g}encodeSdf(A,{sdfType:I,invert:g,center:B,quaternion:C,scale:E,sizes:i},o){const D=A*32,w=I|(g?256:0);let s=!1;s=this.updateSdfFloatData(D+0,(B==null?void 0:B.x)??0)||s,s=this.updateSdfFloatData(D+1,(B==null?void 0:B.y)??0)||s,s=this.updateSdfFloatData(D+2,(B==null?void 0:B.z)??0)||s,s=this.updateSdfData(D+3,w)||s,s=this.updateSdfFloatData(D+4,(C==null?void 0:C.x)??0)||s,s=this.updateSdfFloatData(D+5,(C==null?void 0:C.y)??0)||s,s=this.updateSdfFloatData(D+6,(C==null?void 0:C.z)??0)||s,s=this.updateSdfFloatData(D+7,(C==null?void 0:C.w)??0)||s,s=this.updateSdfFloatData(D+8,(E==null?void 0:E.x)??0)||s,s=this.updateSdfFloatData(D+9,(E==null?void 0:E.y)??0)||s,s=this.updateSdfFloatData(D+10,(E==null?void 0:E.z)??0)||s,s=this.updateSdfData(D+11,0)||s,s=this.updateSdfFloatData(D+12,(i==null?void 0:i.x)??0)||s,s=this.updateSdfFloatData(D+13,(i==null?void 0:i.y)??0)||s,s=this.updateSdfFloatData(D+14,(i==null?void 0:i.z)??0)||s,s=this.updateSdfFloatData(D+15,(i==null?void 0:i.w)??0)||s;const t=Math.min(4,o.length);for(let G=0;Gs+t.length,0),g=this.ensureCapacity({maxEdits:A.length,maxSdfs:I}),B=[new a.Vector4,new a.Vector4],C=new a.Vector3,E=new a.Quaternion,i=new a.Vector3,o=new a.Vector4;let D=0,w=g;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,w=!0);for(const[s,{edit:t,sdfs:G}]of A.entries()){w=this.encodeEdit(s,{sdfFirst:D,sdfCount:G.length,invert:t.invert,rgbaBlendMode:kG(t.rgbaBlendMode),softEdge:t.softEdge,sdfSmooth:t.sdfSmooth})||w;let c=!1;for(const h of G)o.set(h.scale.x,h.scale.y,h.scale.z,h.radius),h.scale.setScalar(1),h.updateMatrixWorld(),h.matrixWorld.clone().invert().decompose(C,E,i),h.scale.set(o.x,o.y,o.z),h.updateMatrixWorld(),B[0].set(h.color.r,h.color.g,h.color.b,h.opacity),B[1].set(h.displace.x,h.displace.y,h.displace.z,1),c=this.encodeSdf(D,{sdfType:RG(h.type),invert:h.invert,center:C,quaternion:E,scale:i,sizes:o},B)||c,D+=1;this.numSdfs=D,c&&(this.sdfTexture.needsUpdate=!0),w||(w=c)}return{updated:w,dynoUpdated:g}}modify(A){return eG(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}modifyCov(A){return NG(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const FB={type:"SdfArray"},RB=wA(` struct SdfArray { int numSdfs; usampler2D sdfTexture; @@ -1769,7 +1402,7 @@ void main() { return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0) : clamp(-distance / softEdge + 0.5, 0.0, 1.0); } -`),tB=oA(` +`),kB=wA(` const uint EDIT_FLAG_BLEND = 0xFFu; const uint EDIT_BLEND_MULTIPLY = 0u; const uint EDIT_BLEND_SET_RGB = 1u; @@ -1827,27 +1460,27 @@ void main() { decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth); applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba); } -`);function gR(Q,A,I,g){return new d({inTypes:{gsplat:Z,sdfArray:JB,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:Z},globals:()=>[UB,tB],inputs:{gsplat:Q,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:C,outputs:E})=>{const{sdfArray:D,numEdits:i,rgbaDisplaceEdits:w}=C,{gsplat:s}=E;return z(` - ${s} = ${C.gsplat}; - if (isGsplatActive(${s}.flags)) { - for (int editIndex = 0; editIndex < ${i}; ++editIndex) { +`);function eG(Q,A,I,g){return new l({inTypes:{gsplat:V,sdfArray:FB,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:V},globals:()=>[RB,kB],inputs:{gsplat:Q,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:C,outputs:E})=>{const{sdfArray:i,numEdits:o,rgbaDisplaceEdits:D}=C,{gsplat:w}=E;return z(` + ${w} = ${C.gsplat}; + if (isGsplatActive(${w}.flags)) { + for (int editIndex = 0; editIndex < ${o}; ++editIndex) { applyPackedRgbaDisplaceEdit( - ${w}[editIndex], ${D}.sdfTexture, ${D}.numSdfs, - ${s}.center, ${s}.rgba + ${D}[editIndex], ${i}.sdfTexture, ${i}.numSdfs, + ${w}.center, ${w}.rgba ); } } - `)}}).outputs.gsplat}function QR(Q,A,I,g){return new d({inTypes:{covsplat:rA,sdfArray:JB,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{covsplat:rA},globals:()=>[UB,tB],inputs:{covsplat:Q,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:C,outputs:E})=>{const{sdfArray:D,numEdits:i,rgbaDisplaceEdits:w}=C,{covsplat:s}=E;return z(` - ${s} = ${C.covsplat}; - if (isCovSplatActive(${s}.flags)) { - for (int editIndex = 0; editIndex < ${i}; ++editIndex) { + `)}}).outputs.gsplat}function NG(Q,A,I,g){return new l({inTypes:{covsplat:rA,sdfArray:FB,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{covsplat:rA},globals:()=>[RB,kB],inputs:{covsplat:Q,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:C,outputs:E})=>{const{sdfArray:i,numEdits:o,rgbaDisplaceEdits:D}=C,{covsplat:w}=E;return z(` + ${w} = ${C.covsplat}; + if (isCovSplatActive(${w}.flags)) { + for (int editIndex = 0; editIndex < ${o}; ++editIndex) { applyPackedRgbaDisplaceEdit( - ${w}[editIndex], ${D}.sdfTexture, ${D}.numSdfs, - ${s}.center, ${s}.rgba + ${D}[editIndex], ${i}.sdfTexture, ${i}.numSdfs, + ${w}.center, ${w}.rgba ); } } - `)}}).outputs.covsplat}const XI=new Float32Array(1);class Xw{constructor(A){this.modifier=A,this.cache=new Map}apply(A){let I=this.cache.get(A);return I||(I=cA({index:"int"},{gsplat:Z},({index:g})=>{const{gsplat:B}=A.apply({index:g});return this.modifier.apply({gsplat:B})}),this.cache.set(A,I)),I}}class lI{constructor(){this.scale=new bI({value:Number.NEGATIVE_INFINITY}),this.rotate=new VI({value:new G.Quaternion(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new iI({value:new G.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return Rw(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return kw(A,{rotate:this.rotate})}applyGsplat(A){return GB(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const I=new G.Vector3,g=new G.Quaternion,B=new G.Vector3;A.decompose(B,g,I);const C=(I.x+I.y+I.z)/3;let E=!1;return C!==this.scale.value&&(this.scale.value=C,E=!0),B.equals(this.translate.value)||(this.translate.value.copy(B),E=!0),g.equals(this.rotate.value)||(this.rotate.value.copy(g),E=!0),E}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class fg{constructor(){this.basis=new aB({value:new G.Matrix3}),this.offset=new iI({value:new G.Vector3})}apply(A){const I=kA(this.basis,A);return xA(I,this.offset)}applyDir(A){return kA(this.basis,A)}applyCovSplat(A){return new d({inTypes:{covsplat:rA,basis:"mat3",offset:"vec3"},outTypes:{covsplat:rA},inputs:{covsplat:A,basis:this.basis,offset:this.offset},statements:({inputs:I,outputs:g})=>{const{covsplat:B,basis:C,offset:E}=I;return!B||!C||!E?[`${g.covsplat}.flags = 0u;`]:z(` + `)}}).outputs.covsplat}const PI=new Float32Array(1);class MG{constructor(A){this.modifier=A,this.cache=new Map}apply(A){let I=this.cache.get(A);return I||(I=HA({index:"int"},{gsplat:V},({index:g})=>{const{gsplat:B}=A.apply({index:g});return this.modifier.apply({gsplat:B})}),this.cache.set(A,I)),I}}class lI{constructor(){this.scale=new vI({value:Number.NEGATIVE_INFINITY}),this.rotate=new Ig({value:new a.Quaternion(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new LI({value:new a.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}apply(A){return go(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}applyDir(A){return Qo(A,{rotate:this.rotate})}applyGsplat(A){return BC(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const I=new a.Vector3,g=new a.Quaternion,B=new a.Vector3;A.decompose(B,g,I);const C=(I.x+I.y+I.z)/3;let E=!1;return C!==this.scale.value&&(this.scale.value=C,E=!0),B.equals(this.translate.value)||(this.translate.value.copy(B),E=!0),g.equals(this.rotate.value)||(this.rotate.value.copy(g),E=!0),E}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class pg{constructor(){this.basis=new sB({value:new a.Matrix3}),this.offset=new LI({value:new a.Vector3})}apply(A){const I=FA(this.basis,A);return qA(I,this.offset)}applyDir(A){return FA(this.basis,A)}applyCovSplat(A){return new l({inTypes:{covsplat:rA,basis:"mat3",offset:"vec3"},outTypes:{covsplat:rA},inputs:{covsplat:A,basis:this.basis,offset:this.offset},statements:({inputs:I,outputs:g})=>{const{covsplat:B,basis:C,offset:E}=I;return!B||!C||!E?[`${g.covsplat}.flags = 0u;`]:z(` ${g.covsplat}.flags = 0u; if (isCovSplatActive(${B}.flags)) { ${g.covsplat}.flags = ${B}.flags; @@ -1865,119 +1498,8 @@ void main() { ${g.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]); ${g.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]); } - `)}}).outputs.covsplat}updateFromMatrix(A){const I=new G.Matrix3().setFromMatrix4(A),g=new G.Vector3().setFromMatrixColumn(A,3),B=!I.equals(this.basis.value)||!g.equals(this.offset.value);return B&&(this.basis.value.copy(I),this.offset.value.copy(g)),B}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class YI extends G.Object3D{constructor({numSplats:A,generator:I,covGenerator:g,construct:B,update:C}){if(super(),this.numSplats=A??0,this.generator=I,this.covGenerator=g,this.frameUpdate=C,this.version=0,this.mappingVersion=0,B){const E=B(this);Object.assign(this,E)}}updateVersion(){this.version+=1}updateMappingVersion(){this.mappingVersion+=1,this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const QA=class QA{constructor({extSplats:A,covSplats:I}={}){if(this.time=0,this.deltaTime=0,this.viewToWorld=new G.Matrix4,this.viewOrigin=new G.Vector3,this.viewDirection=new G.Vector3,this.maxSplats=0,this.numSplats=0,this.target=null,this.mapping=[],this.version=-1,this.mappingVersion=-1,this.readback=null,this.readbackSplats=[],!FC)throw new Error("Spark requires THREE.js r179 or above");this.extSplats=A??!0,this.covSplats=I??!1}dispose(){this.target&&(this.target.dispose(),this.target=null)}getTextures(){return this.target?this.target.textures:QA.emptyTextures}generateMapping(A){let I=0;const g=A.map(B=>{const C=I,E=Math.ceil(B/P)*P;return I+=E,{base:C,count:B}});return{maxSplats:I,mapping:g}}ensureGenerate({maxSplats:A}){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const I=BA(A??1),{width:g,height:B,depth:C}=I;if(this.maxSplats=I.maxSplats,this.target=new G.WebGLArrayRenderTarget(g,B,C,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:G.NearestFilter,minFilter:G.NearestFilter,format:G.RGBAIntegerFormat,type:G.UnsignedIntType}),this.target.scissorTest=!0,this.extSplats){const E=this.target.texture.clone(),D=this.target.texture.clone();D.format=G.RGBAFormat,D.type=G.UnsignedByteType,D.internalFormat="RGBA8",this.target.textures=[this.target.texture,E,D]}else{const E=this.target.texture.clone();E.format=G.RGBAFormat,E.type=G.UnsignedByteType,E.internalFormat="RGBA8",this.target.textures=[this.target.texture,E]}return!0}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}prepareProgramMaterial(A,I){const g=A??I;if(!g)throw new Error("Either generator or covGenerator must be provided");let B=QA.generatorProgram.get(g);if(!B){const E=cA({index:"int"},{},({index:D},i,{roots:w})=>{if(A&&(A.inputs.index=D),I&&(I.inputs.index=D),this.extSplats)if(this.covSplats)if(I){const s=TQ(I.outputs.covsplat);w.push(s)}else if(A){const s=$g(A.outputs.gsplat),o=TQ(s);w.push(o)}else throw new Error("Generator must be provided");else if(A){const s=wE(A.outputs.gsplat);w.push(s)}else throw new Error("Generator must be provided");else{if(this.covSplats){let s;if(I)s=I.outputs.covsplat;else if(A)s=$g(A.outputs.gsplat);else throw new Error("Generator must be provided");const o=wI(AQ(s).outputs.center,QA.viewCenterUniform),y=kA(AQ(s).outputs.opacity,v("float",.5));s=RB({covsplat:s,center:o,opacity:y});const h=iE(s,v("vec4",[0,1,fA,bA]));w.push(h)}else if(A){const s=wI(OA(A.outputs.gsplat).outputs.center,QA.viewCenterUniform),o=kA(OA(A.outputs.gsplat).outputs.opacity,v("float",.5)),y=EI({gsplat:A.outputs.gsplat,center:s,opacity:o}),h=kB(y,v("vec4",[0,1,fA,bA]));w.push(h)}else throw new Error("Generator must be provided");if(!A)throw new Error("Generator must be provided")}if(A){const s=oE(A.outputs.gsplat,QA.viewCenterUniform,QA.viewDirUniform,QA.sortRadialUniform);w.push(s)}if(I){const s=sE(I.outputs.covsplat,QA.viewCenterUniform,QA.viewDirUniform,QA.sortRadialUniform);w.push(s)}});B=new yQ({graph:E,inputs:{index:"_index"},outputs:{},template:this.extSplats?QA.programExtTemplate:QA.programTemplate}),QA.generatorProgram.set(g,B)}Object.assign(B.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}});const C=B.prepareMaterial();return QA.fullScreenQuad.material=C,{program:B,material:C}}generate({generator:A,covGenerator:I,base:g,count:B,renderer:C}){if(!this.target)throw new Error("Target must be initialized with ensureGenerate");if(g+B>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:E,material:D}=this.prepareProgramMaterial(A,I);E.update();const i=this.saveRenderState(C),w=Math.ceil((g+B)/P)*P,s=P*WA;for(D.uniforms.targetBase.value=g,D.uniforms.targetCount.value=B;g{c instanceof YI&&(!B.layers||B.layers.test(c.layers))&&w.push(c)});const s=new Set;I.traverseVisible(c=>{if(c instanceof Qg){let N=c.parent;for(;N!=null&&!(N instanceof vA);)N=N.parent;N==null&&s.add(c)}});const o=Array.from(s);for(const c of w)try{(M=c.frameUpdate)==null||M.call(c,{renderer:A,object:c,time:this.time,deltaTime:this.deltaTime,viewToWorld:this.viewToWorld,camera:B,renderSize:E,globalEdits:o,lodIndices:i&&c instanceof vA?i.get(c):void 0})}catch(N){console.error("frameUpdate error",N),c.generator=void 0,c.covGenerator=void 0,c.generatorError=N}const y=[];I.traverseVisible(c=>{c instanceof YI&&(!B.layers||B.layers.test(c.layers))&&y.push(c)});const h=y.map(c=>c.numSplats),{maxSplats:k,mapping:R}=this.generateMapping(h),F=D.mapping.reduce((c,N)=>(c.set(N.node,N),c),new Map);this.mapping=[],this.numSplats=0,R.forEach(({base:c,count:N},U)=>{const J=y[U],t=F.get(J);t&&t.count!==J.numSplats&&J.updateMappingVersion();const{generator:H,covGenerator:K}=J;if((H||K)&&N>0){const{version:Y,mappingVersion:L}=J;this.mapping.push({node:J,generator:H,covGenerator:K,version:Y,mappingVersion:L,base:c,count:N}),this.numSplats=Math.max(this.numSplats,c+N)}});const{splatsUpdated:a,mappingUpdated:S}=D.checkVersions(this.mapping);return this.version=D.version+(a?1:0),this.mappingVersion=D.mappingVersion+(S?1:0),{sameMapping:!S,version:this.version,mappingVersion:this.mappingVersion,visibleGenerators:y,generate:()=>{this.ensureGenerate({maxSplats:k});for(const{node:c,base:N,count:U}of this.mapping){const{generator:J,covGenerator:t}=c;(J||t)&&U>0&&this.generate({generator:J,covGenerator:t,base:N,count:U,renderer:A})}},readback:async()=>{const c=this.getTextures();this.readbackSplats.length===0&&(this.readbackSplats=[new qA({value:c[0],key:"extSplats"}),new qA({value:c[1],key:"extSplats"})]),this.readbackSplats[0].value=c[0],this.readbackSplats[1].value=c[1],this.readback||(this.readback=new TI({renderer:A}));const N=this.readback,U=this.extSplats?8:4,J=N.ensureBuffer(this.numSplats*U,new Uint32Array(0)),t=cA({index:"int"},{rgba8:"vec4"},({index:H})=>({rgba8:new d({inTypes:{index:"int",extSplats1:"usampler2DArray",extSplats2:"usampler2DArray"},outTypes:{rgba8:"vec4"},inputs:{index:H,extSplats1:this.readbackSplats[0],extSplats2:this.readbackSplats[1]},statements:({inputs:Y,outputs:L})=>this.extSplats?z(` - int indexDiv8 = ${Y.index} >> 3; - ivec3 coord = splatTexCoord(indexDiv8); - uvec4 packedData; - if ((${Y.index} & 4) == 0) { - packedData = texelFetch(${Y.extSplats1}, coord, 0); - } else { - packedData = texelFetch(${Y.extSplats2}, coord, 0); - } - - int indexMod4 = ${Y.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${L.rgba8} = uintToVec4(data); - `):z(` - int indexDiv4 = ${Y.index} >> 2; - ivec3 coord = splatTexCoord(indexDiv4); - uvec4 packedData = texelFetch(${Y.extSplats1}, coord, 0); - - int indexMod4 = ${Y.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${L.rgba8} = uintToVec4(data); - `)}).outputs.rgba8}));return await N.renderReadback({reader:t,count:this.numSplats*U,renderer:A,readback:J})}}}checkVersions(A){if(this.mapping.length!==A.length)return{splatsUpdated:!0,mappingUpdated:!0};const I=this.mapping.some((B,C)=>{const E=A[C];return B.node!==E.node||B.base!==E.base||B.count!==E.count||B.mappingVersion!==E.mappingVersion});return I?{splatsUpdated:!0,mappingUpdated:!0}:{splatsUpdated:this.mapping.some((B,C)=>B.version!==A[C].version),mappingUpdated:I}}};QA.viewCenterUniform=new iI({value:new G.Vector3}),QA.viewDirUniform=new iI({value:new G.Vector3}),QA.sortRadialUniform=new uI({value:!0}),QA.emptyTexture=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),QA.emptyTextures=[QA.emptyTexture,QA.emptyTexture],QA.programExtTemplate=new Jg(gg().computeUvec4x2Vec4Template),QA.programTemplate=new Jg(gg().computeUvec4Vec4Template),QA.generatorProgram=new WeakMap,QA.fullScreenQuad=new AB.FullScreenQuad(new G.RawShaderMaterial({visible:!1}));let tI=QA;class BR extends G.InstancedBufferGeometry{constructor(){super(),this.setAttribute("position",new G.BufferAttribute(CR,3)),this.setIndex(new G.BufferAttribute(ER,1))}}const CR=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),ER=new Uint16Array([0,1,2,0,2,3]),iA=class iA extends G.Mesh{constructor(A){if(!A)throw new Error("SparkRenderer options are required");if(!A.renderer)throw new Error("renderer is required in SparkRenderer options");const I=iA.makeUniforms();Object.assign(I,A.extraUniforms??{});const g=gg(),B=A.premultipliedAlpha??!0,C=new BR,E=new G.ShaderMaterial({glslVersion:G.GLSL3,vertexShader:A.vertexShader??g.splatVertex,fragmentShader:A.fragmentShader??g.splatFragment,uniforms:I,premultipliedAlpha:B,transparent:A.transparent??!0,depthTest:A.depthTest??!0,depthWrite:A.depthWrite??!1,side:G.DoubleSide,allowOverride:!1});super(C,E),this.renderSize=new G.Vector2,this.lastFrame=-1,this.updateTimeoutId=-1,this.orderingTexture=null,this.maxSplats=0,this.activeSplats=0,this.accumulators=[],this.sorting=!1,this.sortDirty=!1,this.lastSortTime=0,this.sortWorker=null,this.sortTimeoutId=-1,this.sortedCenter=new G.Vector3().setScalar(Number.NEGATIVE_INFINITY),this.sortedDir=new G.Vector3().setScalar(0),this.readback32=new Uint32Array(0),this.lastLodRaycastTime=0,this.lodWorker=null,this.lodMeshes=[],this.lodDirty=!1,this.lodIds=new Map,this.lodIdToSplats=new Map,this.lodInitQueue=[],this.lodInstances=new Map,this.lodUpdates=[],this.lastTraverseTime=0,this.pagerId=0,this.superXY=1,this.flushAfterGenerate=!1,this.flushAfterRead=!1,this.readPause=1,this.sortPause=0,this.sortDelay=0,this.pageSizeWarning=!1,this.material=E,this.uniforms=I,this.frustumCulled=!1,this.renderer=A.renderer,this.onDirty=A.onDirty,this.dirty=!0,this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!0,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.minPixelRadius=A.minPixelRadius??0,this.maxPixelRadius=A.maxPixelRadius??512,this.accumExtSplats=A.accumExtSplats??!1,this.covSplats=A.covSplats??!1,this.minAlpha=A.minAlpha??.5*(1/255),this.enable2DGS=A.enable2DGS??!1,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.focalDistance=A.focalDistance??0,this.apertureAngle=A.apertureAngle??0,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.focalAdjustment=A.focalAdjustment??1,this.encodeLinear=A.encodeLinear??!1,this.sortRadial=A.sortRadial??!0,this.minSortIntervalMs=A.minSortIntervalMs??0,this.enableLod=A.enableLod??!0,this.enableDriveLod=A.enableDriveLod??this.enableLod,this.enableLodFetching=A.enableLodFetching??!0,this.lodSplatCount=A.lodSplatCount,this.lodSplatScale=A.lodSplatScale??1,this.lodRenderScale=A.lodRenderScale??1,this.lodInflate=A.lodInflate??!1,this.pagedExtSplats=A.pagedExtSplats??!1;const D=cg()?Ig()?96:128:256;this.maxPagedSplats=A.maxPagedSplats??D*65536,this.numLodFetchers=A.numLodFetchers??3,this.behindFoveate=A.behindFoveate??.2,this.coneFov0=A.coneFov0??90,this.coneFov=A.coneFov??120,this.coneFoveate=A.coneFoveate??.4,this.lodRaycast=A.lodRaycast===void 0?cg()?1e4:25e3:A.lodRaycast,this.lodRaycastIntervalMs=A.lodRaycastIntervalMs??500,this.clock=A.clock?wB(A.clock):new G.Clock;const i={extSplats:this.accumExtSplats,covSplats:this.covSplats};if(this.display=new tI(i),this.current=this.display,this.accumulators.push(new tI(i)),this.accumulators.push(new tI(i)),A.target){const{width:w,height:s,doubleBuffer:o,superXY:y,...h}=A.target,k=Math.max(1,Math.min(4,y??1));if(w*k>8192||s*k>8192)throw new Error("Target size too large");this.superXY=k;const R=w*k,F=s*k,a={format:G.RGBAFormat,type:G.UnsignedByteType,colorSpace:G.SRGBColorSpace,...h};this.target=new G.WebGLRenderTarget(R,F,a),o&&(this.backTarget=new G.WebGLRenderTarget(R,F,a)),this.encodeLinear=A.encodeLinear??!0}}static makeUniforms(){return{renderSize:{value:new G.Vector2},near:{value:.1},far:{value:1e3},renderToViewQuat:{value:new G.Quaternion},renderToViewPos:{value:new G.Vector3},renderToViewBasis:{value:new G.Matrix3},renderToViewOffset:{value:new G.Vector3},maxStdDev:{value:1},minPixelRadius:{value:0},maxPixelRadius:{value:512},minAlpha:{value:.00196078431372549},enable2DGS:{value:!1},lodInflate:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},focalDistance:{value:0},apertureAngle:{value:0},falloff:{value:1},clipXY:{value:1.4},focalAdjustment:{value:1},encodeLinear:{value:!1},ordering:{type:"t",value:iA.emptyOrdering},enableExtSplats:{value:!1},enableCovSplats:{value:!1},extSplats:{type:"t",value:tI.emptyTexture},extSplats2:{type:"t",value:tI.emptyTexture},time:{value:0},deltaTime:{value:0},debugFlag:{value:!1}}}dispose(){this.target&&(this.target.dispose(),this.target=void 0),this.backTarget&&(this.backTarget.dispose(),this.backTarget=void 0),this.orderingTexture&&(this.orderingTexture.dispose(),this.orderingTexture=null);const A=new Set;A.add(this.display),A.add(this.current);for(const g of this.accumulators)A.add(g);for(const g of A)g.dispose();const I=this.lodInstances.values();this.lodInstances.clear();for(const g of I)g.texture.dispose();this.sortWorker&&(this.sortWorker.dispose(),this.sortWorker=null),this.lodWorker&&(this.lodWorker.dispose(),this.lodWorker=null),this.pager&&(this.pager.dispose(),this.pager=void 0)}setDirty(){var A;this.dirty||(this.dirty=!0,(A=this.onDirty)==null||A.call(this))}onBeforeRender(A,I,g){var h;const B=iA.sparkOverride??this,C=A.info.render.frame,E=C!==B.lastFrame;if(B.lastFrame=C,B.target)B.renderSize.set(B.target.width,B.target.height);else{const k=A.getDrawingBufferSize(B.renderSize);if(A.xr.isPresenting&&k.x===1&&k.y===1){const R=(h=A.xr.getSession())==null?void 0:h.renderState.baseLayer;R&&(k.x=R.framebufferWidth,k.y=R.framebufferHeight)}}this.uniforms.renderSize.value.copy(B.renderSize);const D=g;this.uniforms.near.value=D.near,this.uniforms.far.value=D.far;const i=this.geometry;i.instanceCount=B.activeSplats;const w=new G.Matrix4;this.display.extSplats||w.makeTranslation(B.display.viewOrigin);const y=g.matrixWorld.clone().invert().multiply(w);if(y.decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new G.Vector3),this.uniforms.renderToViewBasis.value.setFromMatrix4(y),this.uniforms.maxStdDev.value=B.maxStdDev,this.uniforms.minPixelRadius.value=B.minPixelRadius,this.uniforms.maxPixelRadius.value=B.maxPixelRadius,this.uniforms.minAlpha.value=B.minAlpha,this.uniforms.enable2DGS.value=B.enable2DGS,this.uniforms.lodInflate.value=B.lodInflate,this.uniforms.preBlurAmount.value=B.preBlurAmount,this.uniforms.blurAmount.value=B.blurAmount,this.uniforms.focalDistance.value=B.focalDistance,this.uniforms.apertureAngle.value=B.apertureAngle,this.uniforms.falloff.value=B.falloff,this.uniforms.clipXY.value=B.clipXY,this.uniforms.focalAdjustment.value=B.focalAdjustment,this.uniforms.encodeLinear.value=B.encodeLinear,this.uniforms.ordering.value=B.orderingTexture??iA.emptyOrdering,this.uniforms.enableExtSplats.value=this.display.extSplats,this.uniforms.enableCovSplats.value=this.display.covSplats,this.display.extSplats){const k=B.display.getTextures();this.uniforms.extSplats.value=k[0],this.uniforms.extSplats2.value=k[1]}else{const k=B.display.getTextures();this.uniforms.extSplats.value=k[0],this.uniforms.extSplats2.value=k[0]}if(this.uniforms.time.value=B.display.time,this.uniforms.deltaTime.value=B.display.deltaTime,this.uniforms.debugFlag.value=performance.now()/1e3%2<1,B.autoUpdate&&E){const k=B.preUpdate&&!A.xr.isPresenting,R=A.xr.isPresenting?A.xr.getCamera():g;k?B.updateInternal({scene:I,camera:R,autoUpdate:!0}):B.updateTimeoutId===-1&&(B.updateTimeoutId=setTimeout(()=>{B.updateTimeoutId=-1,B.updateInternal({scene:I,camera:R,autoUpdate:!0})},1))}B.dirty=!1}clearSplats(){this.activeSplats=0,this.display.numSplats=0,this.setDirty()}async update({scene:A,camera:I}){await this.updateInternal({scene:A,camera:I,autoUpdate:!1})}async updateInternal({scene:A,camera:I,autoUpdate:g}){const B=this.renderer,C=this.time??this.clock.getElapsedTime(),E=I.getWorldPosition(new G.Vector3),D=I.getWorldDirection(new G.Vector3),i=E.distanceTo(this.sortedCenter)>.001||D.dot(this.sortedDir)<.999,w=this.accumulators.pop();if(!w)throw new Error("No next accumulator");if(w===this.current)throw new Error("Next accumulator is the same as the current accumulator");const{version:s,mappingVersion:o,visibleGenerators:y,generate:h}=w.prepareGenerate({renderer:B,scene:A,time:C,camera:I,sortRadial:this.sortRadial??!0,renderSize:this.renderSize,previous:this.current,lodInstances:this.enableLod?this.lodInstances:void 0});let k=!0;const R=i||s!==this.current.version,F=o!==this.display.mappingVersion;g&&!R&&(k=!1),F&&this.sorting&&(k=!1),k?(h(),this.flushAfterGenerate&&B.getContext().flush(),this.display.mappingVersion===w.mappingVersion?(this.accumulators.push(this.display),this.display=w):this.display!==this.current&&this.accumulators.push(this.current),this.current=w,this.sortDirty=!0,this.setDirty()):this.accumulators.push(w),this.enableDriveLod&&this.driveLod({visibleGenerators:y,camera:I,scene:A}),await this.driveSort()}async driveSort(){if(this.sorting||!this.sortDirty)return;this.sortTimeoutId!==-1&&(clearTimeout(this.sortTimeoutId),this.sortTimeoutId=-1);const A=performance.now(),I=this.lastSortTime?this.lastSortTime+this.minSortIntervalMs:A;if(A{this.sortTimeoutId=-1,this.driveSort()},I-A);return}this.sorting=!0,this.sortDirty=!1,this.lastSortTime=A,this.readPause>0&&await new Promise(o=>setTimeout(o,this.readPause));const g=this.current;this.sortedCenter.copy(g.viewOrigin),this.sortedDir.copy(g.viewDirection);const{numSplats:B,maxSplats:C}=g,E=Math.max(1,Math.ceil(C/16384)),D=E*16384;this.maxSplats=Math.max(this.maxSplats,D);const i=new Uint32Array(this.maxSplats),w=TI.ensureBuffer(C,this.readback32);this.readback32=w,await this.readbackDepth({current:g,renderer:this.renderer,numSplats:B,readback:w}),this.sortPause>0&&await new Promise(o=>setTimeout(o,this.sortPause)),this.sortWorker||(this.sortWorker=new Mg);const s=await this.sortWorker.call("sortSplats32",{numSplats:B,readback:w,ordering:i});if(this.sortDelay>0&&await new Promise(o=>setTimeout(o,this.sortDelay)),this.readback32=s.readback,this.activeSplats=s.activeSplats,this.orderingTexture&&E>this.orderingTexture.image.height&&(this.orderingTexture.dispose(),this.orderingTexture=null),this.orderingTexture){const o=this.renderer,y=o.getContext();if(!o.properties.has(this.orderingTexture))this.orderingTexture.needsUpdate=!0;else{const k=o.properties.get(this.orderingTexture).__webglTexture;if(!k)throw new Error("ordering texture not found");o.state.activeTexture(y.TEXTURE0),o.state.bindTexture(y.TEXTURE_2D,k),y.bindBuffer(y.PIXEL_UNPACK_BUFFER,null),y.pixelStorei(y.UNPACK_FLIP_Y_WEBGL,!1),y.texSubImage2D(y.TEXTURE_2D,0,0,0,4096,E,y.RGBA_INTEGER,y.UNSIGNED_INT,s.ordering),o.state.bindTexture(y.TEXTURE_2D,null)}}else{const o=new G.DataTexture(s.ordering,4096,E,G.RGBAIntegerFormat,G.UnsignedIntType);o.internalFormat="RGBA32UI",o.needsUpdate=!0,this.orderingTexture=o}this.current.mappingVersion===g.mappingVersion&&this.current.mappingVersion!==this.display.mappingVersion&&(this.accumulators.push(this.display),this.display=this.current),this.sorting=!1,this.setDirty(),this.driveSort()}ensureLodWorker(){return this.lodWorker||(this.lodWorker=new Mg),this.lodWorker}defaultSplatTarget(){return wQ()?5e5:iB()?75e4:iQ()?1e6:Ig()?15e5:25e5}driveLod({visibleGenerators:A,camera:I,scene:g}){var h,k;const B=this.defaultSplatTarget(),E=(this.lodSplatCount??B)*this.lodSplatScale;let D=0;if(I instanceof G.PerspectiveCamera)D=2*Math.tan(.5*I.fov*Math.PI/180)/this.renderSize.y;else if(I instanceof G.OrthographicCamera){const R=(I.top-I.bottom)/I.zoom,F=(I.right-I.left)/I.zoom,a=R/Math.max(1,this.renderSize.y),S=F/Math.max(1,this.renderSize.x);D=Math.min(S,a)}D*=this.lodRenderScale;const i=new G.Vector3,w=new G.Quaternion;if(this.current.viewToWorld.decompose(i,w,new G.Vector3),this.lodPosOverride&&i.copy(this.lodPosOverride),this.lodQuatOverride&&w.copy(this.lodQuatOverride).normalize(),this.lastLod){(this.lastLod.pixelScaleLimit!==D||this.lastLod.maxSplats!==E)&&(this.lodDirty=!0);const R=i.distanceTo(this.lastLod.pos),F=Math.max(0,1-R/1),a=w.dot(this.lastLod.quat),S=Math.max(0,1-(1-a)/.01);F*S<.999&&(this.lodDirty=!0)}const s=this.enableLod?A.filter(R=>{var F,a;return R instanceof vA&&(((F=R.packedSplats)==null?void 0:F.lodSplats)||((a=R.extSplats)==null?void 0:a.lodSplats)||R.paged)&&R.enableLod!==!1}):[],o=s.some(R=>R.paged);this.lodMeshes.length!==s.length?this.lodDirty=!0:s.some((R,F)=>R!==this.lodMeshes[F].mesh||R.version>this.lodMeshes[F].version)&&(this.lodDirty=!0),this.lodMeshes=s.map(R=>({mesh:R,version:R.version+1})),this.lodInitQueue=[];const y=performance.now();for(const R of s){const F=((h=R.packedSplats)==null?void 0:h.lodSplats)??((k=R.extSplats)==null?void 0:k.lodSplats)??R.paged;if(F){const a=this.lodIds.get(F);a?a.lastTouched=y:this.lodInitQueue.push(F)}}this.ensureLodWorker().tryExclusive(async R=>{if(o&&!this.pager){this.pager=new FI({renderer:this.renderer,extSplats:this.pagedExtSplats,maxSplats:this.maxPagedSplats,numFetchers:this.numLodFetchers});const{lodId:F}=await R.call("newLodTree",{capacity:this.pager.maxSplats});this.pagerId=F}if(this.pager)for(const{mesh:F}of this.lodMeshes)F.paged&&!F.paged.pager&&(F.paged.pager=this.pager);if(this.lodInitQueue.length>0){const F=this.lodInitQueue;for(this.lodInitQueue=[];F.length>0;){const a=F.shift();a&&(await this.initLodTree(R,a),this.lodDirty=!0)}}if(this.pager){const F=this.pager.consumeLodTreeUpdates();for(const{splats:a,page:S,chunk:M,numSplats:c,lodTree:N}of F){const U=this.lodIds.get(a);U&&(N&&M===0&&(U.rootPage=S),this.lodUpdates.push({lodId:U.lodId,pageBase:S*this.pager.pageSplats,chunkBase:M*this.pager.pageSplats,count:c,lodTreeData:N}))}}if(this.lodUpdates.length>0){const F=this.lodUpdates;this.lodUpdates=[],await R.call("updateLodTrees",{ranges:F}),this.lodDirty=!0}if(this.lodDirty){const F=performance.now(),a=new G.Vector3;if(this.lastLod){const S=Math.max(1,F-this.lastLod.timestamp);a.copy(i).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime/S)}this.lastLod={pos:i,quat:w,pixelScaleLimit:D,maxSplats:E,timestamp:F},this.lodDirty=!1,await this.updateLodInstances(R,a,s,E,i,w,D),this.currentLod=this.lastLod,this.setDirty()}await this.cleanupLodTrees(R)})}async initLodTree(A,I){if(I instanceof _A||I instanceof BI){const{lodId:g}=await A.call("initLodTree",{numSplats:I.numSplats??0,lodTree:I.extra.lodTree.slice()});this.lodIds.set(I,{lodId:g,lastTouched:performance.now()}),this.lodIdToSplats.set(g,I)}else{const{lodId:g}=await A.call("newSharedLodTree",{lodId:this.pagerId});this.lodIds.set(I,{lodId:g,lastTouched:performance.now()}),this.lodIdToSplats.set(g,I)}}async updateLodInstances(A,I,g,B,C,E,D){const i=new Map,w=new G.Matrix4().compose(C,E,new G.Vector3().setScalar(1)),s=g.reduce((a,S)=>{var U,J;i.set(S.uuid,S);const M=S.matrixWorld.clone().invert().multiply(w),c=((U=S.packedSplats)==null?void 0:U.lodSplats)??((J=S.extSplats)==null?void 0:J.lodSplats)??S.paged;if(!c)return a;const N=this.lodIds.get(c);return!N||this.pager&&S.paged&&N.rootPage===void 0||(a[S.uuid]={instanceId:S.uuid,lodId:N.lodId,rootPage:N.rootPage,viewToObjectCols:M.elements,lodScale:S.lodScale,behindFoveate:S.behindFoveate??this.behindFoveate,coneFov0:S.coneFov0??this.coneFov0,coneFov:S.coneFov??this.coneFov,coneFoveate:S.coneFoveate??this.coneFoveate}),a},{}),o=performance.now(),y=await A.call("traverseLodTrees",{maxSplats:B,pixelScaleLimit:D,lastPixelLimit:this.lastPixelLimit,instances:s});this.lastTraverseTime=performance.now()-o;const{keyIndices:h,chunks:k,pixelLimit:R}=y;this.lastPixelLimit=R;const F=Object.values(h).reduce((a,{numSplats:S})=>a+S,0);if(this.updateLodIndices(i,h),this.pager){this.pager.processUploads();const a=g.map(S=>{if(!S.paged||!this.pager)return null;const M=S.getWorldPosition(new G.Vector3);return{splats:S.paged,distance:M.distanceTo(C)}}).filter(S=>S!==null);!this.pageSizeWarning&&a.length>this.pager.maxPages&&(this.pageSizeWarning=!0,console.warn(`# paged SplatMeshes exceeds maxPages: ${a.length} > ${this.pager.maxPages}`)),a.sort((S,M)=>S.distance-M.distance),this.pager.fetchPriority=a.map(({splats:S})=>({splats:S,chunk:0}));for(const[S,M]of k){const c=this.lodIdToSplats.get(S);c instanceof Sg&&M!==0&&this.pager.fetchPriority.push({splats:c,chunk:M})}this.pager.autoDrive=this.enableLodFetching,this.enableLodFetching&&this.pager.driveFetchers()}if(this.lodRaycast&&performance.now()-this.lastLodRaycastTime>=this.lodRaycastIntervalMs){this.lastLodRaycastTime=performance.now();const a=performance.now(),S=await A.call("traverseLodTrees",{maxSplats:Math.min(this.lodRaycast,Math.round(F*.1)),pixelScaleLimit:D,instances:s});performance.now()-a;const{keyIndices:M}=S;Object.values(M).reduce((c,{numSplats:N})=>c+N,0);for(const[c,N]of Object.entries(M)){const U=i.get(c);U.raycastIndices=N}}}async cleanupLodTrees(A){const g=performance.now();let B=null;for(const[C,E]of this.lodIds.entries())(B==null||E.lastTouchedg-3e3)){this.lodIds.delete(B.splats),this.lodIdToSplats.delete(B.lodId);for(const[C,E]of this.lodInstances.entries())E.lodId===B.lodId&&(E.texture.dispose(),this.lodInstances.delete(C));await A.call("disposeLodTree",{lodId:B.lodId})}}updateLodIndices(A,I){for(const[g,B]of Object.entries(I)){const{lodId:C,numSplats:E,indices:D}=B,i=A.get(g);if(i.paged)i.paged.update(E,D);else{let w=this.lodInstances.get(i);w&&D.length>w.indices.length&&(w.texture.dispose(),w=void 0);const s=Math.ceil(D.length/16384);if(w){w.numSplats=E;const o=this.renderer,y=o.getContext();if(o.properties.has(w.texture)){const k=o.properties.get(w.texture).__webglTexture;if(!k)throw new Error("lodIndices texture not found");o.state.activeTexture(y.TEXTURE0),o.state.bindTexture(y.TEXTURE_2D,k),y.bindBuffer(y.PIXEL_UNPACK_BUFFER,null),y.pixelStorei(y.UNPACK_FLIP_Y_WEBGL,!1),y.texSubImage2D(y.TEXTURE_2D,0,0,0,4096,s,y.RGBA_INTEGER,y.UNSIGNED_INT,D),o.state.bindTexture(y.TEXTURE_2D,null)}}else{const o=s*16384;if(D.length!==o)throw new Error("Indices length != capacity");const y=new G.DataTexture(D,4096,s,G.RGBAIntegerFormat,G.UnsignedIntType);y.internalFormat="RGBA32UI",y.needsUpdate=!0,w={lodId:C,numSplats:E,indices:D,texture:y},this.lodInstances.set(i,w)}}i.updateMappingVersion()}}async readbackDepth({current:A,renderer:I,numSplats:g,readback:B}){if(!I)throw new Error("No renderer");if(!A.target)throw new Error("No target");const C=Math.ceil(g/P)*P;if(B.byteLengthB)}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}render(A,I){try{iA.sparkOverride=this,this.renderer.render(A,I)}finally{iA.sparkOverride=void 0}}renderTarget({scene:A,camera:I}){const g=this.backTarget??this.target;if(!g)throw new Error("No target");const B=this.renderer.getRenderTarget();try{this.renderer.setRenderTarget(g),iA.sparkOverride=this,this.renderer.render(A,I)}finally{iA.sparkOverride=void 0,this.renderer.setRenderTarget(B)}return g!==this.target&&([this.target,this.backTarget]=[this.backTarget,this.target]),g}async readTarget(){if(!this.target)throw new Error("Must initialize with target");const{width:A,height:I}=this.target,g=A*I*4;(!this.superPixels||this.superPixels.length{if(g instanceof G.Mesh)if(Array.isArray(g.material))for(const B of g.material)B instanceof G.MeshStandardMaterial&&(B.envMap=I);else g.material instanceof G.MeshStandardMaterial&&(g.material.envMap=I)})}async getLodTreeLevel(A,I,g=!1){var E,D;const B=this.lodInstances.get(A);if(!B)return null;const C=await this.ensureLodWorker().exclusive(async i=>await i.call("getLodTreeLevel",{lodId:B.lodId,level:I}));if((E=A.packedSplats)!=null&&E.lodSplats){const i=A.packedSplats.lodSplats.extractSplats(C.indices,g);return new vA({packedSplats:i})}if((D=A.extSplats)!=null&&D.lodSplats){const i=A.extSplats.lodSplats.extractSplats(C.indices,g);return new vA({extSplats:i})}throw new Error("Only LoD-enabled PackedSplats and ExtSplats are supported")}get premultipliedAlpha(){return this.material.premultipliedAlpha}set premultipliedAlpha(A){this.material.premultipliedAlpha!==A&&(this.material.premultipliedAlpha=A,this.material.needsUpdate=!0)}};iA.emptyOrdering=(()=>{const I=new Uint32Array(16384),g=new G.DataTexture(I,4096,1);return g.format=G.RGBAIntegerFormat,g.type=G.UnsignedIntType,g.internalFormat="RGBA32UI",g.needsUpdate=!0,g})(),iA.cubeRender=null,iA.pmrem=null;let tg=iA;class Sg{constructor(A){var I;if(this.pager=A.pager,this.rootUrl=A.rootUrl??"",this.requestHeader=A.requestHeader,this.withCredentials=A.withCredentials,this.numSh=0,this.maxSh=((I=A.pager)==null?void 0:I.maxSh)??3,this.numSplats=0,this.dynoNumSplats=new DI({value:0}),this.dynoIndices=new GQ({value:FI.emptyIndicesTexture}),this.rgbMinMaxLnScaleMinMax=new VI({value:new G.Vector4(0,1,fA,bA)}),this.lodOpacity=new uI({value:!1}),this.dynoNumSh=new DI({value:0}),this.shMax=new iI({value:new G.Vector3}),this.fileBytes=A.fileBytes,this.fileType=A.fileType,!this.fileType&&this.fileBytes&&(this.fileType=RQ(this.fileBytes)),!this.fileType&&this.rootUrl&&(this.fileType=YB(this.rootUrl)),!this.fileType)throw new Error("Unable to determine file type");this.fileType===yA.RAD&&(this.radMetaPromise=this.getRadMeta())}dispose(){this.dynoIndices.value!==FI.emptyIndicesTexture&&(this.dynoIndices.value.dispose(),this.dynoIndices.value=FI.emptyIndicesTexture)}setMaxSh(A){this.maxSh=A}getRadMeta(){return this.radMetaPromise?this.radMetaPromise:(this.radMetaPromise=(async()=>{if(await DR,this.fileBytes){const A=pB(this.fileBytes.slice(0,1048576));if(A)return A;throw new Error("Failed to decode RAD header")}if(!this.rootUrl)throw new Error("No url or fileBytes provided");for(const A of[65536,256*1024,1024*1024]){const I=await rQ({url:this.rootUrl,requestHeader:this.requestHeader,withCredentials:this.withCredentials,offset:0,bytes:A}),g=pB(I);if(g)return g}throw new Error("Failed to decode RAD header")})().then(A=>A),this.radMetaPromise.catch(A=>{console.error(A)}),this.radMetaPromise)}chunkUrl(A){return this.rootUrl.replace(/-lod-0\./,`-lod-${A}.`)}async fetchDecodeChunk(A){let I;if(this.fileType===yA.RAD){const{meta:g,chunksStart:B}=await this.getRadMeta();if(A<0||A>=g.chunks.length)throw new Error(`Chunk index out of range: ${A} (max: ${g.chunks.length-1})`);let{offset:C,bytes:E,filename:D}=g.chunks[A];if(D){if(this.fileBytes)throw new Error("Chunked RAD file not supported with fileBytes");const i=new URL(this.rootUrl,window.location.href).toString(),w=new URL(D,i).toString();I=await rQ({url:w,requestHeader:this.requestHeader,withCredentials:this.withCredentials})}else if(C+=B,this.fileBytes){if(C<0||C+E>this.fileBytes.length)throw new Error(`Invalid chunk offset or bytes: ${C} + ${E} > ${this.fileBytes.length}`);I=this.fileBytes.slice(C,C+E)}else if(this.rootUrl)I=await rQ({url:this.rootUrl,requestHeader:this.requestHeader,withCredentials:this.withCredentials,offset:C,bytes:E});else throw new Error("No url or fileBytes provided")}else if(!this.fileBytes)if(this.rootUrl){const g=this.chunkUrl(A),B=new Request(g,{headers:this.requestHeader?new Headers(this.requestHeader):void 0,credentials:this.withCredentials?"include":"same-origin"}),C=await fetch(B);if(!C.ok||!C.body)throw new Error(`Failed to fetch "${g}": ${C.status} ${C.statusText}`);I=new Uint8Array(await C.arrayBuffer())}else throw new Error("No url or fileBytes provided");return await oQ.withWorker(async g=>{var D,i,w,s,o;if(!this.pager)throw new Error("PagedSplats.pager not set");if(!this.pager.extSplats){const h=(await g.call("loadPackedSplats",{fileBytes:I,pathName:this.chunkUrl(A),sh1Codes:(D=this.sh1Codes)==null?void 0:D.slice(),sh2Codes:(i=this.sh2Codes)==null?void 0:i.slice(),sh3Codes:(w=this.sh3Codes)==null?void 0:w.slice()})).lodSplats;return this.splatEncoding||(this.splatEncoding=h.splatEncoding,this.numSh=h.extra.sh3?3:h.extra.sh2?2:h.extra.sh1?1:0,this.rgbMinMaxLnScaleMinMax.value.set(this.splatEncoding.rgbMin??0,this.splatEncoding.rgbMax??1,this.splatEncoding.lnScaleMin??fA,this.splatEncoding.lnScaleMax??bA),this.lodOpacity.value=this.splatEncoding.lodOpacity??!1,this.shMax.value.set(this.splatEncoding.sh1Max??1,this.splatEncoding.sh2Max??1,this.splatEncoding.sh3Max??1)),this.sh1Codes=h.extra.sh1Codes??this.sh1Codes,this.sh2Codes=h.extra.sh2Codes??this.sh2Codes,this.sh3Codes=h.extra.sh3Codes??this.sh3Codes,h}const B=this.sh3Codes,E=(await g.call("loadExtSplats",{fileBytes:I,pathName:this.chunkUrl(A),sh1Codes:(s=this.sh1Codes)==null?void 0:s.slice(),sh2Codes:(o=this.sh2Codes)==null?void 0:o.slice(),sh3Codes:B?[B[0].slice(),B[1].slice()]:void 0})).lodSplats;return this.splatEncoding||(this.splatEncoding=eg,this.numSh=E.extra.sh3a&&E.extra.sh3b?3:E.extra.sh2?2:E.extra.sh1?1:0),this.sh1Codes=E.extra.sh1Codes??this.sh1Codes,this.sh2Codes=E.extra.sh2Codes??this.sh2Codes,this.sh3Codes=E.extra.sh3Codes??this.sh3Codes,E})}update(A,I){if(!this.pager)throw new Error("PagedSplats.pager not set");const g=this.pager.renderer;this.numSplats=A,this.dynoNumSplats.value=this.numSplats;const B=Math.ceil(A/16384);let C=this.dynoIndices.value===FI.emptyIndicesTexture?void 0:this.dynoIndices.value;if(C&&B>C.image.height&&(C.dispose(),C=void 0),!C)C=new G.DataTexture(I,4096,B,G.RGBAIntegerFormat,G.UnsignedIntType),C.internalFormat="RGBA32UI",C.needsUpdate=!0,g.initTexture(C),this.dynoIndices.value=C;else{C.image.data.set(I.subarray(0,A));const D=g.getContext();g.state.activeTexture(D.TEXTURE0),g.state.bindTexture(D.TEXTURE_2D,Ww(g,C)),D.bindBuffer(D.PIXEL_UNPACK_BUFFER,null),D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,!1),D.texSubImage2D(D.TEXTURE_2D,0,0,0,4096,B,D.RGBA_INTEGER,D.UNSIGNED_INT,I),g.state.bindTexture(D.TEXTURE_2D,null)}}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return this.pager?Math.min(this.numSh,this.pager.maxSh)>0:!1}getNumSh(){return this.numSh}fetchSplat({index:A,viewOrigin:I}){if(!this.pager)throw new Error("PagedSplats.pager not set");const g=this.pager.readIndex.apply({index:A,numSplats:this.dynoNumSplats,indices:this.dynoIndices}).index;return this.pager.extSplats?this.hasRgbDir()&&I?(this.dynoNumSh.value=Math.min(this.numSh,this.maxSh,this.pager.maxSh),this.pager.readSplatExtDir.apply({index:g,viewOrigin:I,numSh:this.dynoNumSh}).gsplat):this.pager.readSplatExt.apply({index:g}).gsplat:this.hasRgbDir()&&I?(this.dynoNumSh.value=Math.min(this.numSh,this.maxSh,this.pager.maxSh),this.pager.readSplatDir.apply({index:g,rgbMinMaxLnScaleMinMax:this.rgbMinMaxLnScaleMinMax,lodOpacity:this.lodOpacity,viewOrigin:I,numSh:this.dynoNumSh,shMax:this.shMax}).gsplat):this.pager.readSplat.apply({index:g,rgbMinMaxLnScaleMinMax:this.rgbMinMaxLnScaleMinMax,lodOpacity:this.lodOpacity}).gsplat}forEachSplat(A){if(!this.pager||!this.numSplats)return;const I=this.pager.extSplats,g=this.dynoIndices.value.image.data,B=this.pager.packedTexture.value.image.data,C=this.pager.extTexture.value.image.data,E=[B,C];for(let D=0;Dg),this.pageLru=new Set,this.freeablePages=[],this.newUploads=[],this.readyUploads=[],this.lodTreeUpdates=[],this.fetchers=[],this.fetched=[],this.fetchPriority=[],this.packedTexture=new qA({value:this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI")}),this.extTexture=new qA({value:this.extSplats?this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI"):l.emptyExtTexture}),this.sh1Texture=new qA({value:this.extSplats?l.emptyExtSh1Texture:l.emptySh1Texture}),this.sh2Texture=new qA({value:this.extSplats?l.emptyExtSh2Texture:l.emptySh2Texture}),this.sh3Texture=new qA({value:this.extSplats?l.emptyExtSh3Texture:l.emptySh3Texture}),this.sh3TextureB=new qA({value:l.emptyExtSh3BTexture}),this.readIndex=cA({index:"int",numSplats:"int",indices:"usampler2D"},{index:"int"},({index:I,numSplats:g,indices:B})=>new d({inTypes:{index:"int",numSplats:"int",indices:"usampler2D"},outTypes:{index:"int"},inputs:{index:I,numSplats:g,indices:B},statements:({inputs:C,outputs:E})=>z(` - if (${C.index} >= ${C.numSplats}) { - return; - } - - ivec2 indexCoord = ivec2((${C.index} >> 2) & 4095, ${C.index} >> 14); - uint index = texelFetch(${C.indices}, indexCoord, 0)[${C.index} & 3]; - ${E.index} = int(index); - `)}).outputs),this.readSplat=cA({index:"int",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool"},{gsplat:Z},({index:I,rgbMinMaxLnScaleMinMax:g,lodOpacity:B})=>new d({inTypes:{index:"int",packedTexture:"usampler2DArray",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool"},outTypes:{gsplat:Z},inputs:{index:I,packedTexture:this.packedTexture,rgbMinMaxLnScaleMinMax:g,lodOpacity:B},globals:()=>[LA],statements:({inputs:C,outputs:E})=>z(` - int index = ${C.index}; - ivec3 splatCoord = pagedSplatTexCoord(index); - uvec4 packedData = texelFetch(${C.packedTexture}, splatCoord, 0); - - unpackSplatEncoding(packedData, ${E.gsplat}.center, ${E.gsplat}.scales, ${E.gsplat}.quaternion, ${E.gsplat}.rgba, ${C.rgbMinMaxLnScaleMinMax}); - if ((${E.gsplat}.rgba.a == 0.0) || all(equal(${E.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${E.gsplat}.index = index; - ${E.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - if (${C.lodOpacity}) { - ${E.gsplat}.rgba.a *= 2.0; - } - `)}).outputs),this.readSplatDir=cA({index:"int",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool",viewOrigin:"vec3",numSh:"int",shMax:"vec3"},{gsplat:Z},({index:I,rgbMinMaxLnScaleMinMax:g,lodOpacity:B,viewOrigin:C,numSh:E,shMax:D})=>{if(!I||!g||!B||!C||!E||!D)throw new Error("index and viewOrigin are required");let i=this.readSplat.apply({index:I,rgbMinMaxLnScaleMinMax:g,lodOpacity:B}).gsplat;const w=OA(i).outputs.center,s=Ug(wI(w,C));let o=vw({coord:uQ(I),viewDir:s,numSh:E,sh1Texture:this.sh1Texture,sh2Texture:this.sh2Texture,sh3Texture:this.sh3Texture,shMax:D}).rgb;return o=xA(o,OA(i).outputs.rgb),i=EI({gsplat:i,rgb:o}),{gsplat:i}}),this.readSplatExt=cA({index:"int"},{gsplat:Z},({index:I})=>new d({inTypes:{index:"int",extTexture1:"usampler2DArray",extTexture2:"usampler2DArray"},outTypes:{gsplat:Z},inputs:{index:I,extTexture1:this.packedTexture,extTexture2:this.extTexture},globals:()=>[LA],statements:({inputs:g,outputs:B})=>z(` - int index = ${g.index}; - ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); - uvec4 ext1 = texelFetch(${g.extTexture1}, splatCoord, 0); - float alpha = unpackSplatExtAlpha(ext1); - if (alpha == 0.0) { - return; - } - - uvec4 ext2 = texelFetch(${g.extTexture2}, splatCoord, 0); - unpackSplatExt(ext1, ext2, ${B.gsplat}.center, ${B.gsplat}.scales, ${B.gsplat}.quaternion, ${B.gsplat}.rgba); - if (all(equal(${B.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${B.gsplat}.index = index; - ${B.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - `)}).outputs),this.readSplatExtDir=cA({index:"int",viewOrigin:"vec3",numSh:"int"},{gsplat:Z},({index:I,viewOrigin:g,numSh:B})=>{if(!I||!g||!B)throw new Error("index and viewOrigin are required");let C=this.readSplatExt.apply({index:I}).gsplat;const E=OA(C).outputs.center,D=Ug(wI(E,g));let i=Pw({coord:uQ(I),viewDir:D,numSh:B,sh1Texture:this.sh1Texture,sh2Texture:this.sh2Texture,sh3TextureA:this.sh3Texture,sh3TextureB:this.sh3TextureB}).rgb;return i=xA(i,OA(C).outputs.rgb),C=EI({gsplat:C,rgb:i}),{gsplat:C}})}dispose(){this.autoDrive=!1,this.numFetchers=0,this.packedTexture.value.dispose(),this.packedTexture.value.source.data=null,this.extTexture.value!==l.emptyExtTexture&&(this.extTexture.value.dispose(),this.extTexture.value.source.data=null),this.extSplats?(this.sh1Texture.value!==l.emptyExtSh1Texture&&(this.sh1Texture.value.dispose(),this.sh1Texture.value.source.data=null),this.sh2Texture.value!==l.emptyExtSh2Texture&&(this.sh2Texture.value.dispose(),this.sh2Texture.value.source.data=null),this.sh3Texture.value!==l.emptyExtSh3Texture&&(this.sh3Texture.value.dispose(),this.sh3Texture.value.source.data=null),this.sh3TextureB.value!==l.emptyExtSh3BTexture&&(this.sh3TextureB.value.dispose(),this.sh3TextureB.value.source.data=null)):(this.sh1Texture.value!==l.emptySh1Texture&&(this.sh1Texture.value.dispose(),this.sh1Texture.value.source.data=null),this.sh2Texture.value!==l.emptySh2Texture&&(this.sh2Texture.value.dispose(),this.sh2Texture.value.source.data=null),this.sh3Texture.value!==l.emptySh3Texture&&(this.sh3Texture.value.dispose(),this.sh3Texture.value.source.data=null))}ensureShTextures(A){this.curSh=Math.max(this.curSh,A),this.extSplats?this.curSh>=1&&this.sh1Texture.value===l.emptyExtSh1Texture&&(this.sh1Texture.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI")):this.curSh>=1&&this.sh1Texture.value===l.emptySh1Texture&&(this.sh1Texture.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*2),256,256,this.maxPages,G.RGIntegerFormat,G.UnsignedIntType,"RG32UI")),this.curSh>=2&&this.sh2Texture.value===(this.extSplats?l.emptyExtSh2Texture:l.emptySh2Texture)&&(this.sh2Texture.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI")),this.extSplats?this.curSh>=3&&(this.sh3Texture.value===l.emptyExtSh3Texture&&(this.sh3Texture.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI")),this.sh3TextureB.value===l.emptyExtSh3BTexture&&(this.sh3TextureB.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI"))):this.curSh>=3&&this.sh3Texture.value===l.emptySh3Texture&&(this.sh3Texture.value=this.newUint32ArrayTexture(new Uint32Array(this.maxPages*256*256*4),256,256,this.maxPages,G.RGBAIntegerFormat,G.UnsignedIntType,"RGBA32UI"))}allocatePage(){return this.pageFreelist.shift()}freePage(A){this.pageFreelist.push(A)}getSplatsChunk(A,I){const g=this.splatsChunkToPage.get(A);if(g)return g[I]}insertSplatsChunkPage(A,I,g,B){this.splatsChunkToPage.has(A)||this.splatsChunkToPage.set(A,[]);const C=this.splatsChunkToPage.get(A);if(!C)throw new Error("impossible");I>=C.length&&(C.length=I+1);const E={page:g,lru:B};return C[I]=E,this.pageLru.add(E),this.pageToSplatsChunk[g]={splats:A,chunk:I,time:performance.now()},this.pageToSplatsChunk[g]}removeSplatsChunkPage(A,I,g){const B=this.splatsChunkToPage.get(A);if(!B)throw new Error("impossible");const C=B[I];if(!C)throw new Error(`pageLru not found for splats: ${A}, chunk: ${I}, page: ${g}`);for(this.pageLru.delete(C),B[I]=void 0;B.length>0&&B[B.length-1]===void 0;)B.pop();for(B.length===0&&this.splatsChunkToPage.delete(A),this.pageToSplatsChunk[g]=void 0;this.pageToSplatsChunk.length>0&&this.pageToSplatsChunk[this.pageToSplatsChunk.length-1]===void 0;)this.pageToSplatsChunk.pop()}uploadPage(A,I,g,B){const C=A*this.pageSplats;this.packedTexture.value.image.data.subarray(C*4,C*4+I.length).set(I),this.packedTexture.value.addLayerUpdate(A),this.packedTexture.value.needsUpdate=!0,B&&(this.extTexture.value.image.data.subarray(C*4,C*4+B.length).set(B),this.extTexture.value.addLayerUpdate(A),this.extTexture.value.needsUpdate=!0);const D=this.extSplats?g.sh3a&&g.sh3b?3:g.sh2?2:g.sh1?1:0:g.sh3?3:g.sh2?2:g.sh1?1:0;if(this.ensureShTextures(D),this.extSplats){if(this.sh1Texture.value!==l.emptyExtSh1Texture&&g.sh1){const i=g.sh1;this.sh1Texture.value.image.data.subarray(C*4,C*4+i.length).set(i),this.sh1Texture.value.addLayerUpdate(A),this.sh1Texture.value.needsUpdate=!0}}else if(this.sh1Texture.value!==l.emptySh1Texture&&g.sh1){const i=g.sh1;this.sh1Texture.value.image.data.subarray(C*2,C*2+i.length).set(i),this.sh1Texture.value.addLayerUpdate(A),this.sh1Texture.value.needsUpdate=!0}if(this.sh2Texture.value!==l.emptySh2Texture&&g.sh2){const i=g.sh2;this.sh2Texture.value.image.data.subarray(C*4,C*4+i.length).set(i),this.sh2Texture.value.addLayerUpdate(A),this.sh2Texture.value.needsUpdate=!0}if(this.extSplats){if(this.sh3Texture.value!==l.emptyExtSh3Texture&&g.sh3a){const i=g.sh3a;this.sh3Texture.value.image.data.subarray(C*4,C*4+i.length).set(i),this.sh3Texture.value.addLayerUpdate(A),this.sh3Texture.value.needsUpdate=!0}if(this.sh3TextureB.value!==l.emptyExtSh3BTexture&&g.sh3b){const i=g.sh3b;this.sh3TextureB.value.image.data.subarray(C*4,C*4+i.length).set(i),this.sh3TextureB.value.addLayerUpdate(A),this.sh3TextureB.value.needsUpdate=!0}}else if(this.sh3Texture.value!==l.emptySh3Texture&&g.sh3){const i=g.sh3;this.sh3Texture.value.image.data.subarray(C*4,C*4+i.length).set(i),this.sh3Texture.value.addLayerUpdate(A),this.sh3Texture.value.needsUpdate=!0}}getGlTexture(A){return Ww(this.renderer,A)}newUint32ArrayTexture(A,I,g,B,C,E,D){const i=new G.DataArrayTexture(A,I,g,B);return i.format=C,i.type=E,i.internalFormat=D,i.needsUpdate=!0,this.renderer.initTexture(i),i}driveFetchers(){const A=[],I=[];let g=0;for(const{splats:E,chunk:D}of this.fetchPriority){const i=this.getSplatsChunk(E,D);if(i){g>=this.maxPages?I.push(i):A.push(i),g+=1;continue}if(this.fetched.some(({splats:w,chunk:s})=>E===w&&D===s)||this.fetchers.some(({splats:w,chunk:s})=>E===w&&D===s)){g+=1;continue}if(g{this.fetched.push({splats:E,chunk:D,data:s}),this.fetchPause>0&&await new Promise(o=>setTimeout(o,this.fetchPause))},async s=>{console.warn(s);const o=250+500*Math.random();await new Promise(y=>setTimeout(y,o))}).finally(()=>{this.fetchers=this.fetchers.filter(({splats:s,chunk:o})=>E!==s||D!==o),this.processFetched()});this.fetchers.push({splats:E,chunk:D,promise:w}),w.then(s=>{this.autoDrive&&this.driveFetchers()})}}const B=performance.now();for(const E of I.reverse())E.lru=B,this.pageLru.delete(E),this.pageLru.add(E);const C=new Set(this.pageLru);for(const E of A.reverse())C.delete(E),E.lru=B,this.pageLru.delete(E),this.pageLru.add(E);this.freeablePages=Array.from(C).map(({page:E})=>E)}allocateFreeable(){const A=this.freeablePages.shift();if(A===void 0)return;const I=this.pageToSplatsChunk[A];if(!I)throw new Error(`splatsChunk not found for page: ${A}`);const{splats:g,chunk:B}=I;return this.removeSplatsChunkPage(g,B,A),this.lodTreeUpdates.push({splats:g,page:A,chunk:B,numSplats:this.pageSplats}),A}processFetched(){const A=performance.now();for(;;){const I=this.fetched.shift();if(!I)break;const{splats:g,chunk:B,data:C}=I;let E=this.allocatePage();if(E===void 0&&(E=this.allocateFreeable(),E===void 0))return;this.insertSplatsChunkPage(g,B,E,A);const{numSplats:D,extra:i}=C;if(this.lodTreeUpdates.push({splats:g,page:E,chunk:B,numSplats:D,lodTree:i.lodTree}),this.extSplats){const w=C.extArrays,s=w[0],o=w[1];this.newUploads.push({page:E,numSplats:D,packedArray:s,extArray:o,extra:i})}else{const w=C.packedArray;this.newUploads.push({page:E,numSplats:D,packedArray:w,extra:i})}}}processUploads(){for(;;){const A=this.readyUploads.shift();if(!A)break;const{page:I,numSplats:g,packedArray:B,extArray:C,extra:E}=A;this.uploadPage(I,B,E,C)}}consumeLodTreeUpdates(){const A=this.lodTreeUpdates;return this.lodTreeUpdates=[],this.readyUploads.push(...this.newUploads),this.newUploads=[],A}};l.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),l.emptyUint32x2=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*2),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RG32UI",E.needsUpdate=!0,E})(),l.emptyIndicesTexture=(()=>{const A=new Uint32Array(16384),I=new G.DataTexture(A,4096,1);return I.format=G.RGBAIntegerFormat,I.type=G.UnsignedIntType,I.internalFormat="RGBA32UI",I.needsUpdate=!0,I})(),l.emptyPackedTexture=l.emptyUint32x4,l.emptyExtTexture=l.emptyUint32x4,l.emptySh1Texture=l.emptyUint32x2,l.emptySh2Texture=l.emptyUint32x4,l.emptySh3Texture=l.emptyUint32x4,l.emptyExtSh1Texture=l.emptyUint32x4,l.emptyExtSh2Texture=l.emptyUint32x4,l.emptyExtSh3Texture=l.emptyUint32x4,l.emptyExtSh3BTexture=l.emptyUint32x4;let FI=l;function Ww(Q,A){if(!Q.properties.has(A))throw new Error("texture not found");const g=Q.properties.get(A).__webglTexture;if(!g)throw new Error("texture not found");return g}const DR=uw();async function rQ({url:Q,requestHeader:A,withCredentials:I,offset:g,bytes:B}){const C=new Request(Q,{headers:A?new Headers(A):void 0,credentials:I?"include":"same-origin"});g!==void 0&&B!==void 0&&C.headers.set("Range",`bytes=${g}-${g+B-1}`);const E=await fetch(C);if(!E.ok||!E.body)throw new Error(`Failed to fetch "${Q}": ${E.status} ${E.statusText}`);return new Uint8Array(await E.arrayBuffer())}class iR{constructor(){this.fetchDyno=new d({inTypes:{},outTypes:{gsplat:Z},globals:()=>[LA],statements:({outputs:A})=>z(` - ${A.gsplat}.flags = 0u; - return; - `)}).outputs.gsplat}prepareFetchSplat(){}dispose(){}getNumSplats(){return 0}hasRgbDir(){return!1}getNumSh(){return 0}setMaxSh(A){}fetchSplat({index:A}){return this.fetchDyno}forEachSplat(){}}const PA=class PA extends YI{constructor(A={}){if(super({update:I=>this.update(I)}),this.isInitialized=!1,this.recolor=new G.Color(1,1,1),this.opacity=1,this.generatorDirty=!0,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.showLodPageDyno=new DI({value:0}),A.splats)this.splats=A.splats,this.numSplats=A.splats.getNumSplats();else if(A.paged){A.extSplats&&console.warn("To set extSplats with the paged option, set SparkRenderer.pagedExtSplats");const I=A.url??"";if(A.paged===!0)this.paged=new Sg({rootUrl:I});else if(A.paged instanceof Sg)this.paged=A.paged;else if(A.paged instanceof FI)this.paged=new Sg({rootUrl:I,pager:A.paged});else throw new Error("Invalid paged option");this.splats=this.paged}else A.extSplats?(this.extSplats=A.extSplats instanceof BI?A.extSplats:new BI,A.extSplats=this.extSplats,this.numSplats=this.extSplats.numSplats,this.splats=this.extSplats):A.packedSplats?(this.packedSplats=A.packedSplats,this.packedSplats.splatEncoding=A.splatEncoding??{...eg},this.splats=this.packedSplats):this.packedSplats=new _A;if(this.editable=A.editable??!0,this.raycastable=A.raycastable??!0,this.minRaycastOpacity=A.minRaycastOpacity??.2,this.onFrame=A.onFrame,this.context={transform:new lI,viewToWorld:new lI,worldToView:new lI,viewToObject:new lI,covTransform:new fg,covViewToWorld:new fg,covWorldToView:new fg,covViewToObject:new fg,recolor:new VI({value:new G.Vector4().setScalar(Number.NEGATIVE_INFINITY)}),time:new bI({value:0}),deltaTime:new bI({value:0}),numSplats:new DI({value:0}),splats:new iR,enableLod:new uI({value:!1}),lodIndices:new GQ({value:mB,key:"lodIndices"})},this.covSplats=A.covSplats??!1,this.covSplats&&!this.extSplats)throw new Error("CovSplats requires ExtSplats");if(this.objectModifiers=A.objectModifier?[A.objectModifier]:void 0,this.worldModifiers=A.worldModifier?[A.worldModifier]:void 0,A.objectModifiers&&(this.objectModifiers=A.objectModifiers),A.worldModifiers&&(this.worldModifiers=A.worldModifiers),this.enableLod=A.enableLod,this.lodScale=A.lodScale??1,this.behindFoveate=A.behindFoveate,this.coneFov0=A.coneFov0,this.coneFov=A.coneFov,this.coneFoveate=A.coneFoveate,this.updateGenerator(),A.url||A.fileBytes||A.stream||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized||this.extSplats&&!this.extSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const I=A.onLoad(this);I instanceof Promise&&await I}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const I=A.onLoad(this);I instanceof Promise&&(this.initialized=I.then(()=>this))}}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,maxSplats:i,constructSplats:w,onProgress:s,splatEncoding:o,lod:y,nonLod:h,lodAbove:k}=A;if(this.packedSplats){if(I||g||E||w){const R={url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,maxSplats:i,construct:w,onProgress:s,splatEncoding:o,lod:y,nonLod:h,lodAbove:k};this.packedSplats.reinitialize(R)}await this.packedSplats.initialized,this.splats=this.packedSplats}else if(this.extSplats&&(I||g||E||w)){const R=w;this.extSplats.reinitialize({url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,maxSplats:i,construct:R,onProgress:s,lod:y,nonLod:h,lodAbove:k}),await this.extSplats.initialized,this.splats=this.extSplats}this.splats&&(this.numSplats=this.splats.getNumSplats(),this.updateGenerator())}static async staticInitialize(){await uw(),PA.isStaticInitialized=!0}pushSplat(A,I,g,B,C){this.packedSplats?this.packedSplats.pushSplat(A,I,g,B,C):this.extSplats&&this.extSplats.pushSplat(A,I,g,B,C)}forEachSplat(A){var I;(I=this.splats)==null||I.forEachSplat(A)}dispose(){this.splats&&this.splats!==this.packedSplats&&this.splats!==this.extSplats&&(this.splats.dispose(),this.splats=void 0),this.packedSplats&&(this.packedSplats.dispose(),this.packedSplats=void 0),this.extSplats&&(this.extSplats.dispose(),this.extSplats=void 0)}getBoundingBox(A=!0){var i;if(!this.initialized)throw new Error("Cannot get bounding box before SplatMesh is initialized");const I=new G.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new G.Vector3(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),B=new G.Vector3,C=[-1,1];function E(w,s,o,y,h,k){if(A)I.min(s),g.max(s);else for(const R of C)for(const F of C)for(const a of C)B.set(R*o.x,F*o.y,a*o.z),B.applyQuaternion(y),B.add(s),I.min(B),g.max(B)}return(i=this.splats)==null||i.forEachSplat(E),new G.Box3(I,g)}set objectModifier(A){A?this.objectModifiers=[A]:this.objectModifiers=void 0}set worldModifier(A){A?this.worldModifiers=[A]:this.worldModifiers=void 0}constructGenerator(A){if(this.covSplats)return this.constructCovGenerator(A);const{transform:I,viewToObject:g,recolor:B}=A,C=cA({index:"int"},{gsplat:Z},({index:E})=>{if(!E)throw new Error("index is undefined");E=TB(A.lodIndices,E,A.numSplats,A.enableLod,this.showLodPageDyno),A.splats.setMaxSh(this.maxSh),A.splats.prepareFetchSplat();let D=A.splats.fetchSplat({index:E,viewOrigin:g.translate});if(this.splatRgba&&(D=OB(D,this.splatRgba.dyno,E,A.enableLod)),this.skinning&&(D=this.skinning.modify(D)),this.objectModifiers)for(const w of this.objectModifiers)D=w.apply({gsplat:D}).gsplat;D=I.applyGsplat(D);const i=kA(B,OA(D).outputs.rgba);if(D=EI({gsplat:D,rgba:i}),this.rgbaDisplaceEdits&&(D=this.rgbaDisplaceEdits.modify(D)),this.worldModifiers)for(const w of this.worldModifiers)D=w.apply({gsplat:D}).gsplat;return{gsplat:D}});this.generator=C,this.covGenerator=void 0}constructCovGenerator(A){const{covTransform:I,covViewToObject:g,recolor:B}=A,C=cA({index:"int"},{covsplat:rA},({index:E})=>{if(!E)throw new Error("index is undefined");E=TB(A.lodIndices,E,A.numSplats,A.enableLod,this.showLodPageDyno),A.splats.prepareFetchSplat();let D=A.splats.fetchSplat({index:E,viewOrigin:g.offset});if(this.splatRgba&&(D=OB(D,this.splatRgba.dyno,E,A.enableLod)),this.objectModifiers)for(const s of this.objectModifiers)D=s.apply({gsplat:D}).gsplat;let i=$g(D);if(this.skinning&&(i=this.skinning.modifyCov(i)),this.covObjectModifiers)for(const s of this.covObjectModifiers)i=s.apply({covsplat:i}).covsplat;i=I.applyCovSplat(i);const w=kA(B,AQ(i).outputs.rgba);if(i=RB({covsplat:i,rgba:w}),this.rgbaDisplaceEdits&&(i=this.rgbaDisplaceEdits.modifyCov(i)),this.covWorldModifiers)for(const s of this.covWorldModifiers)i=s.apply({covsplat:i}).covsplat;return{covsplat:i}});this.generator=void 0,this.covGenerator=C}updateGenerator(){this.generatorDirty=!0}update({renderer:A,time:I,deltaTime:g,viewToWorld:B,camera:C,renderSize:E,globalEdits:D,lodIndices:i}){var R,F,a;this.context.time.value=I,this.context.deltaTime.value=g,PA.dynoTime.value=I,this.showLodPageDyno.value=this.showLodPage??-1;const w=this.splats??this.packedSplats??this.extSplats;w&&(this.context.splats=w),this.numSplats=this.context.splats.getNumSplats();let s=!1;const o=((R=this.packedSplats)==null?void 0:R.lodSplats)??((F=this.extSplats)==null?void 0:F.lodSplats);if(this.context.enableLod.value=o!=null&&i!=null,this.enableLod===!1&&(this.context.enableLod.value=!1),this.context.lodIndices.value=(i==null?void 0:i.texture)??mB,this.context.enableLod.value&&o&&(this.context.splats=o,this.numSplats=(i==null?void 0:i.numSplats)??0),this.context.numSplats.value=this.numSplats,this.context.splats!==this.lastSplats&&(this.lastSplats=this.context.splats,this.generatorDirty=!0),this.covSplats){this.context.covTransform.update(this)&&(s=!0),this.context.covViewToWorld.updateFromMatrix(B)&&this.enableViewToWorld&&(s=!0);const S=B.clone().invert();this.context.covWorldToView.updateFromMatrix(S)&&this.enableWorldToView&&(s=!0);const c=this.matrixWorld.clone().invert().multiply(B);this.context.covViewToObject.updateFromMatrix(c)&&(this.enableViewToObject||this.context.splats.hasRgbDir())&&(s=!0)}else{this.context.transform.update(this)&&(s=!0),this.context.viewToWorld.updateFromMatrix(B)&&this.enableViewToWorld&&(s=!0);const S=B.clone().invert();this.context.worldToView.updateFromMatrix(S)&&this.enableWorldToView&&(s=!0);const N=new G.Matrix4().compose(this.context.transform.translate.value,this.context.transform.rotate.value,new G.Vector3().setScalar(this.context.transform.scale.value)).invert().multiply(B);this.context.viewToObject.updateFromMatrix(N)&&(this.enableViewToObject||this.context.splats.hasRgbDir())&&(s=!0)}const y=new G.Vector4(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);y.equals(this.context.recolor.value)||(this.context.recolor.value.copy(y),s=!0);const h=this.editable?(this.edits??[]).concat(D):[];this.editable&&!this.edits&&this.traverseVisible(S=>{S instanceof Qg&&h.push(S)}),h.sort((S,M)=>S.ordering-M.ordering);const k=h.map(S=>{if(S.sdfs!=null)return{edit:S,sdfs:S.sdfs};const M=[];return S.traverseVisible(c=>{c instanceof Zw&&M.push(c)}),{edit:S,sdfs:M}});if(k.length>0&&!this.rgbaDisplaceEdits){const S=k.length,M=k.reduce((c,N)=>c+N.sdfs.length,0);this.rgbaDisplaceEdits=new Vw({maxEdits:S,maxSdfs:M}),this.generatorDirty=!0}if(this.rgbaDisplaceEdits){const S=this.rgbaDisplaceEdits.update(k);s||(s=S.updated),S.dynoUpdated&&(this.generatorDirty=!0)}this.generatorDirty&&(this.constructGenerator(this.context),this.generatorDirty=!1,s=!0),s&&this.updateVersion(),(a=this.onFrame)==null||a.call(this,{mesh:this,time:I,deltaTime:g})}raycast(A,I){var a,S,M,c,N,U,J,t,H,K,Y,L,q,n,r,p,m,IA,X,EA,j,gA,W;if(!PA.isStaticInitialized||!this.raycastable||!this.packedSplats&&!this.extSplats&&!this.paged)return;const g=this.paged!=null,B=g?((S=(a=this.paged)==null?void 0:a.pager)==null?void 0:S.extSplats)??!1:this.extSplats!=null,{near:C,far:E,ray:D}=A,i=this.matrixWorld.clone().invert(),w=new G.Matrix3().setFromMatrix4(i),s=D.origin.clone().applyMatrix4(i),o=D.direction.clone().applyMatrix3(w),y=Kh(),h=y.length/4;let k=0;const R=((M=this.raycastIndices)==null?void 0:M.numSplats)??(g?(c=this.paged)==null?void 0:c.numSplats:this.context.numSplats.value)??0,F=((N=this.raycastIndices)==null?void 0:N.indices)??(g?(U=this.paged)==null?void 0:U.dynoIndices.value.image.data:this.context.enableLod.value?this.context.lodIndices.value.image.data:null)??null;if(B){const u=eh(),b=g?(r=(n=this.paged)==null?void 0:n.pager)==null?void 0:r.packedTexture.value.image.data:F?(m=(p=this.extSplats)==null?void 0:p.lodSplats)==null?void 0:m.extArrays[0]:(IA=this.extSplats)==null?void 0:IA.extArrays[0],T=g?(EA=(X=this.paged)==null?void 0:X.pager)==null?void 0:EA.extTexture.value.image.data:F?(gA=(j=this.extSplats)==null?void 0:j.lodSplats)==null?void 0:gA.extArrays[1]:(W=this.extSplats)==null?void 0:W.extArrays[1];if(!b||!T)return;for(let f=0;fB){for(;Bz(` - int index = ${C.index}; - if (${C.showLodPage} < 0) { - if (index >= ${C.numSplats}) { - return; - } - if (${C.enableLod}) { - ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); - uint splatIndex = texelFetch(${C.lodIndices}, lodIndexCoord, 0)[index & 3]; - ${E.index} = int(splatIndex); - } else { - ${E.index} = index; - } - } else { - int start = ${C.showLodPage} << 16; - if (index >= 65536) { - return; - } - ${E.index} = start + index; - } - `)}).outputs.index}function OB(Q,A,I,g){return EQ({inTypes:{gsplat:Z,rgba:MB,index:"int",enableLod:"bool"},outTypes:{gsplat:Z},inputs:{gsplat:Q,rgba:A,index:I,enableLod:g},statements:({inputs:B,outputs:C})=>z(` - ${C.gsplat} = ${B.gsplat}; - if (!${B.enableLod} && (${B.index} >= 0) && (${B.index} < ${B.rgba}.count)) { - ${C.gsplat}.rgba = texelFetch(${B.rgba}.texture, splatTexCoord(${B.index}), 0); - } - `)}).outputs.gsplat}const mB=(()=>{const Q=new G.DataTexture(new Uint32Array(16384),4096,1,G.RGBAIntegerFormat,G.UnsignedIntType);return Q.internalFormat="RGBA32UI",Q.needsUpdate=!0,Q})();new G.BufferGeometry;new G.ShaderMaterial;const ZB=["char","uchar","short","ushort","int","uint","float","double"],vI=class vI{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:E=>{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header -`;for(;;){const{value:E,done:D}=await I.read();if(D)throw new Error("Failed to read header");this.header+=E;const i=this.header.indexOf(g);if(i>=0){this.header=this.header.slice(0,i+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(` -`).forEach((E,D)=>{const i=E.trim();if(D===0){if(i!=="ply")throw new Error("Invalid PLY header");return}if(i.length===0)return;const w=i.split(" ");switch(w[0]){case"format":if(w[1]==="binary_little_endian")this.littleEndian=!0;else if(w[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${w[1]}`);if(w[2]!=="1.0")throw new Error(`Unsupported PLY version: ${w[2]}`);break;case"end_header":break;case"comment":this.comments.push(i.slice(8));break;case"element":{const s=w[1];C={name:s,count:Number.parseInt(w[2]),properties:{}},this.elements[s]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");w[1]==="list"?C.properties[w[4]]={isList:!0,type:w[3],countType:w[2]}:C.properties[w[2]]={isList:!1,type:w[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:D}=C,i=sR(D),w=GR(D,this.littleEndian),s=A(C)??(()=>{});for(let o=0;o[0,1,2].map((c,N)=>M+N*a/3)),D=new Array(5).fill(null).flatMap((S,M)=>[0,1,2].map((c,N)=>3+M+N*a/3)),i=new Array(7).fill(null).flatMap((S,M)=>[0,1,2].map((c,N)=>8+M+N*a/3)),w=C>=1?new Float32Array(3*3):void 0,s=C>=2?new Float32Array(5*3):void 0,o=C>=3?new Float32Array(7*3):void 0}function h(a,S){if(!w)throw new Error("Missing sh1");const M=S.f_rest;for(let c=0;c{const{min_x:p,min_y:m,min_z:IA,max_x:X,max_y:EA,max_z:j,min_scale_x:gA,min_scale_y:W,min_scale_z:u,max_scale_x:b,max_scale_y:T,max_scale_z:f,min_r:aA,min_g:sA,min_b:SA,max_r:NA,max_g:wA,max_b:GA}=r;B.push({min_x:p,min_y:m,min_z:IA,max_x:X,max_y:EA,max_z:j,min_scale_x:gA,min_scale_y:W,min_scale_z:u,max_scale_x:b,max_scale_y:T,max_scale_z:f,min_r:aA,min_g:sA,min_b:SA,max_r:NA,max_g:wA,max_b:GA})}}function R(a){if(I&&a.name==="sh")return C=WQ(a.properties),y(),h;if(a.name!=="vertex")return null;const{packed_position:S,packed_rotation:M,packed_scale:c,packed_color:N}=a.properties;if(!S||!M||!c||!N)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const U=Math.sqrt(2);return(J,t)=>{const H=B[J>>>8];if(H==null)throw new Error("Missing PLY chunk");const{min_x:K,min_y:Y,min_z:L,max_x:q,max_y:n,max_z:r,min_scale_x:p,min_scale_y:m,min_scale_z:IA,max_scale_x:X,max_scale_y:EA,max_scale_z:j,min_r:gA,min_g:W,min_b:u,max_r:b,max_g:T,max_b:f}=H,{packed_position:aA,packed_rotation:sA,packed_scale:SA,packed_color:NA}=t,wA=(aA>>>21&2047)/2047*(q-K)+K,GA=(aA>>>11&1023)/1023*(n-Y)+Y,II=(aA&2047)/2047*(r-L)+L,mA=((sA>>>20&1023)/1023-.5)*U,SI=((sA>>>10&1023)/1023-.5)*U,NI=((sA&1023)/1023-.5)*U,_=Math.sqrt(Math.max(0,1-mA*mA-SI*SI-NI*NI)),ZA=sA>>>30,YA=ZA===0?mA:ZA===1?_:SI,Dg=ZA<=1?SI:ZA===2?_:NI,xg=ZA<=2?NI:_,VA=ZA===0?_:mA,$=Math.exp((SA>>>21&2047)/2047*(X-p)+p),RI=Math.exp((SA>>>11&1023)/1023*(EA-m)+m),SQ=Math.exp((SA&2047)/2047*(j-IA)+IA),NQ=(NA>>>24&255)/255*((b??1)-(gA??0))+(gA??0),cQ=(NA>>>16&255)/255*((T??1)-(W??0))+(W??0),MQ=(NA>>>8&255)/255*((f??1)-(u??0))+(u??0),JQ=(NA&255)/255;A(J,wA,GA,II,$,RI,SQ,YA,Dg,xg,VA,JQ,NQ,cQ,MQ)}}const F=a=>{if(a.name==="chunk")return k(a);if(g)return R(a);if(a.name!=="vertex")return null;const{x:S,y:M,z:c,scale_0:N,scale_1:U,scale_2:J,rot_0:t,rot_1:H,rot_2:K,rot_3:Y,opacity:L,f_dc_0:q,f_dc_1:n,f_dc_2:r,red:p,green:m,blue:IA,alpha:X}=a.properties;if(!S||!M||!c)throw new Error("Missing PLY properties: x, y, z");const EA=N&&U&&J,j=t&&H&&K&&Y,gA=X!=null?Pg[X.type]:1,W=p!=null?Pg[p.type]:1,u=m!=null?Pg[m.type]:1,b=IA!=null?Pg[IA.type]:1;return C=WQ(a.properties),y(),(T,f)=>{const aA=EA?Math.exp(f.scale_0):vI.defaultPointScale,sA=EA?Math.exp(f.scale_1):vI.defaultPointScale,SA=EA?Math.exp(f.scale_2):vI.defaultPointScale,NA=j?f.rot_1:0,wA=j?f.rot_2:0,GA=j?f.rot_3:0,II=j?f.rot_0:1,mA=L!=null?1/(1+Math.exp(-f.opacity)):X!=null?f.alpha/gA:1,SI=q!=null?f.f_dc_0*bg+.5:p!=null?f.red/W:1,NI=n!=null?f.f_dc_1*bg+.5:m!=null?f.green/u:1,_=r!=null?f.f_dc_2*bg+.5:IA!=null?f.blue/b:1;if(A(T,f.x,f.y,f.z,aA,sA,SA,NA,wA,GA,II,mA,SI,NI,_),I&&w){const ZA=f.f_rest;if(w)for(let YA=0;YA{const h=jI[y.countType](g,I,this.littleEndian);I+=CI[y.countType],I+=h*CI[y.type]});else{if(s)if(o==="f_dc_0"||o==="f_dc_1"||o==="f_dc_2"){const h=Number.parseInt(o.slice(5));i.push(()=>{const k=(A[w+h]/255-.5)/bg;VB[y.type](g,I,this.littleEndian,k)})}else o==="opacity"&&i.push(()=>{const h=Math.max(-100,Math.min(100,-Math.log(1/(A[w+3]/255)-1)));VB[y.type](g,I,this.littleEndian,h)});i.push(()=>{I+=CI[y.type]})}for(let o=0;oQ.getInt8(A),uchar:(Q,A,I)=>Q.getUint8(A),short:(Q,A,I)=>Q.getInt16(A,I),ushort:(Q,A,I)=>Q.getUint16(A,I),int:(Q,A,I)=>Q.getInt32(A,I),uint:(Q,A,I)=>Q.getUint32(A,I),float:(Q,A,I)=>Q.getFloat32(A,I),double:(Q,A,I)=>Q.getFloat64(A,I)},VB={char:(Q,A,I,g)=>{Q.setInt8(A,g)},uchar:(Q,A,I,g)=>{Q.setUint8(A,g)},short:(Q,A,I,g)=>{Q.setInt16(A,g,I)},ushort:(Q,A,I,g)=>{Q.setUint16(A,g,I)},int:(Q,A,I,g)=>{Q.setInt32(A,g,I)},uint:(Q,A,I,g)=>{Q.setUint32(A,g,I)},float:(Q,A,I,g)=>{Q.setFloat32(A,g,I)},double:(Q,A,I,g)=>{Q.setFloat64(A,g,I)}},CI={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},Pg={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},wR={0:0,9:1,24:2,45:3},oR={0:0,1:9,2:24,3:45},HB=/^f_rest_([0-9]{1,2})$/;function sR(Q){const A={};for(const[I,g]of Object.entries(Q))HB.test(I)?A.f_rest=new Array(WQ(Q)):A[I]=g.isList?[]:0;return A}function GR(Q,A){return RR(Q)?kR(Q,A):FR(Q,A)}const yR=(()=>{try{new Function("return 42;")}catch{return!1}return!0})(),hR=/^[a-zA-Z0-9_]+$/;function RR(Q){if(!yR)return!1;for(const[A,I]of Object.entries(Q))if(!hR.test(A)||I.isList&&!ZB.includes(I.countType)||!ZB.includes(I.type))return!1;return!0}function kR(Q,A){const I=["let list;"];for(const[B,C]of Object.entries(Q)){const E=B.match(HB);if(E){const D=+E[1];I.push(` - item.f_rest[${D}] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${CI[C.type]}; - `)}else C.isList?I.push(` - list = item['${B}']; - list.length = PARSE_FIELD['${C.countType}'](data, offset, ${A}); - offset += ${CI[C.countType]}; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${CI[C.type]}; - } - `):I.push(` - item['${B}'] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${CI[C.type]}; - `)}I.push("return offset;");const g=new Function("data","offset","item","PARSE_FIELD",I.join(` -`));return(B,C,E)=>g(B,C,E,jI)}function FR(Q,A){const I=[];for(const[g,B]of Object.entries(Q)){const C=g.match(HB);if(C){const E=+C[1];I.push((D,i,w)=>(w.f_rest[E]=jI[B.type](D,i,A),i+CI[B.type]))}else B.isList?I.push((E,D,i)=>{const w=i[g];w.length=jI[B.countType](E,D,A);let s=D+CI[B.countType];for(let o=0;o(i[g]=jI[B.type](E,D,A),D+CI[B.type]))}return(g,B,C)=>{let E=B;for(let D=0;D{this.load(A,C=>{g(C)},I,B)})}parse(A){return new vA({packedSplats:A})}loadInternal({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:D,streamLength:i,onLoad:w,onProgress:s,onError:o,lod:y,nonLod:h,lodAbove:k,lodBase:R}){B instanceof ArrayBuffer&&(B=new Uint8Array(B));const F=B?void 0:this.manager.resolveURL((this.path??"")+(g??""));let a=D==null?void 0:D.getReader();this.manager.itemStart(F??""),oQ.withWorker(async S=>{const M=(A==null?void 0:A.lod)??(I==null?void 0:I.lod);M&&(y=M);const c=(A==null?void 0:A.nonLod)??(I==null?void 0:I.nonLod);c!==void 0&&(h=c);const N=async t=>{const{loaded:H,total:K}=t;if(H!==void 0&&s&&s(new ProgressEvent("progress",{lengthComputable:K!==0,loaded:H,total:K})),t.nextChunk){let Y;if(!a)Y=new Uint8Array(0);else{const{done:L,value:q}=await a.read();L?(a.releaseLock(),a=void 0,Y=new Uint8Array(0)):Y=q}S.call("nextChunk",{chunk:Y})}},U=F?new URL(F,window.location.href).toString():void 0,J=await S.call(I?"loadExtSplats":"loadPackedSplats",{url:U,requestHeader:this.requestHeader,withCredentials:this.withCredentials,fileBytes:B==null?void 0:B.slice(),fileType:C,pathName:F||E,chunked:D!==void 0,chunkedLength:i,encoding:A==null?void 0:A.splatEncoding,lod:y,lodBase:R,nonLod:h,lodAbove:k},{onStatus:N});if(J.lodSplats&&(I?J.lodSplats=new BI({...J.lodSplats}):J.lodSplats=new _A({...J.lodSplats,maxSplats:A==null?void 0:A.maxSplats})),I){const t={...J};I.initialize(t),w==null||w(I)}else{const t={...J};A?(A.initialize(t),w==null||w(A)):w==null||w(new _A(t))}}).catch(S=>{this.manager.itemError(F??""),o==null||o(S)}).finally(()=>{this.manager.itemEnd(F??"")})}async loadInternalAsync({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:D,streamLength:i,onProgress:w,lod:s,nonLod:o,lodAbove:y,lodBase:h}){return new Promise((k,R)=>{this.loadInternal({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:D,streamLength:i,onLoad:k,onProgress:w,onError:R,lod:s,nonLod:o,lodAbove:y,lodBase:h})})}}function RQ(Q){const I=new DataView(Q.buffer).getUint32(0,!0);if((I&16777215)===7957616)return yA.PLY;if((I&16777215)===559903){const g=xC(Q,4);return new DataView(g.buffer).getUint32(0,!0)===1347635022?yA.SPZ:void 0}if(I===67324752)return NR(Q)?yA.PCSOGSZIP:void 0;if(I===809779538)return yA.RAD}function aR(Q){const A=Q.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function YB(Q){const A=aR(Q);if(A==="ply")return yA.PLY;if(A==="spz")return yA.SPZ;if(A==="splat")return yA.SPLAT;if(A==="ksplat")return yA.KSPLAT;if(A==="sog")return yA.PCSOGSZIP;if(A==="rad")return yA.RAD}function SR(Q){return jw(Q)!==void 0}function jw(Q){try{let A;if(typeof Q=="string")A=Q;else{const B=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;if(B.length>65536)return;A=new TextDecoder().decode(B)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;const g=I.version===2;for(const B of["means","scales","quats","sh0"]){if(!I[B]||typeof I[B]!="object"||Array.isArray(I[B]))return;if(g){if(!I[B].files||(B==="scales"||B==="sh0")&&!I[B].codebook||B==="means"&&(!I[B].mins||!I[B].maxs))return}else if(!I[B].shape||!I[B].files||B!=="quats"&&(!I[B].mins||!I[B].maxs))return}return I}catch{return}}function NR(Q){try{const A=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let I=null;const g=jo(A,{filter:({name:C})=>C.split(/[\\/]/).pop()==="meta.json"?(I=C,!0):!1});if(!I)return;const B=jw(g[I]);return B?{name:I,json:B}:void 0}catch{return}}async function cR({input:Q,extraFiles:A,fileType:I,pathOrUrl:g,splatEncoding:B}){const C=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let E=I;switch(I||(E=RQ(C),!E&&g&&(E=YB(g))),E){case yA.PLY:{const D=new Hg({fileBytes:C});await D.parseHeader();const i=D.numSplats,w=BA(i).maxSplats,s={fileBytes:C,packedArray:new Uint32Array(w*4),splatEncoding:B};return await qI(async o=>{const{packedArray:y,numSplats:h,extra:k}=await o.call("unpackPly",s);return{packedArray:y,numSplats:h,extra:k}})}case yA.SPZ:return await qI(async D=>{const{packedArray:i,numSplats:w,extra:s}=await D.call("decodeSpz",{fileBytes:C,splatEncoding:B});return{packedArray:i,numSplats:w,extra:s}});case yA.SPLAT:return await qI(async D=>{const{packedArray:i,numSplats:w}=await D.call("decodeAntiSplat",{fileBytes:C,splatEncoding:B});return{packedArray:i,numSplats:w}});case yA.KSPLAT:return await qI(async D=>{const{packedArray:i,numSplats:w,extra:s}=await D.call("decodeKsplat",{fileBytes:C,splatEncoding:B});return{packedArray:i,numSplats:w,extra:s}});case yA.PCSOGS:return await qI(async D=>{const{packedArray:i,numSplats:w,extra:s}=await D.call("decodePcSogs",{fileBytes:C,extraFiles:A,splatEncoding:B});return{packedArray:i,numSplats:w,extra:s}});case yA.PCSOGSZIP:return await qI(async D=>{const{packedArray:i,numSplats:w,extra:s}=await D.call("decodePcSogsZip",{fileBytes:C,splatEncoding:B});return{packedArray:i,numSplats:w,extra:s}});default:throw new Error(`Unknown splat file type: ${E}`)}}class MR{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=BA(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),C=new Float32Array(I*4),E=new Float32Array(I),D=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),C.set(this.quaternions),E.set(this.opacities),D.set(this.colors),this.centers=g,this.scales=B,this.quaternions=C,this.opacities=E,this.colors=D,this.sh1){const i=new Float32Array(I*9);i.set(this.sh1),this.sh1=i}if(this.sh2){const i=new Float32Array(I*15);i.set(this.sh2),this.sh2=i}if(this.sh3){const i=new Float32Array(I*21);i.set(this.sh3),this.sh3=i}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,C){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=C}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}const KA=class KA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.maxSh=3,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new KB({packedSplats:this}),this.dynoRgbMinMaxLnScaleMinMax=new VI({key:"rgbMinMaxLnScaleMinMax",value:new G.Vector4(0,1,fA,bA),update:I=>{var g,B,C,E;return I.set(((g=this.splatEncoding)==null?void 0:g.rgbMin)??0,((B=this.splatEncoding)==null?void 0:B.rgbMax)??1,((C=this.splatEncoding)==null?void 0:C.lnScaleMin)??fA,((E=this.splatEncoding)==null?void 0:E.lnScaleMax)??bA),I}}),this.dynoNumSh=new DI({key:"numSh",value:0,update:()=>Math.min(this.getNumSh(),this.maxSh)}),this.dynoShMax=new iI({key:"shMax",value:new G.Vector3,update:I=>{var g,B,C;return I.set(((g=this.splatEncoding)==null?void 0:g.sh1Max)??1,((B=this.splatEncoding)==null?void 0:B.sh2Max)??1,((C=this.splatEncoding)==null?void 0:C.sh3Max)??1),I}}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,this.extra={},this.maxSplats=A.maxSplats??0,this.splatEncoding=A.splatEncoding,this.lod=A.lod,this.nonLod=A.nonLod,A.url||A.fileBytes||A.stream||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){this.extra=A.extra??{},this.splatEncoding=A.splatEncoding??this.splatEncoding,this.lodSplats=A.lodSplats,A.packedArray?(this.packedArray=A.packedArray,this.numSplats=A.numSplats??this.packedArray.length/4,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/P)*P,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0)}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,construct:i,lod:w,nonLod:s,lodAbove:o}=A;this.lod=w,this.nonLod=s;const y=new LB;if((g||I||E)&&await y.loadInternalAsync({packedSplats:this,url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:D,onProgress:A.onProgress,lodAbove:o}),i){const h=i(this);h instanceof Promise&&await h}}dispose(){this.target&&(this.target.dispose(),this.target.texture.source.data=null,this.target=null),this.source&&(this.source.dispose(),this.source.source.data=null,this.source=null),this.packedArray=null;for(const A in this.extra){const I=this.extra[A];if(I instanceof x){const g=I.value;g!=null&&g.isTexture&&(g.dispose(),g.source.data=null)}}this.extra={},this.disposeLodSplats()}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return Math.min(this.getNumSh(),this.maxSh)>0}getNumSh(){return this.extra.sh1?this.extra.sh2?this.extra.sh3?3:2:1:0}setMaxSh(A){this.maxSh=A}fetchSplat({index:A,viewOrigin:I}){let g=$I(this.dyno,A);if(this.hasRgbDir()&&I){const B=OA(g).outputs.center,C=Ug(wI(B,I)),{sh1Texture:E,sh2Texture:D,sh3Texture:i}=this.ensureShTextures();let{rgb:w}=vw({coord:yB(A),viewDir:C,numSh:this.dynoNumSh,sh1Texture:E,sh2Texture:D,sh3Texture:i,shMax:this.dynoShMax});w=xA(w,OA(g).outputs.rgb),g=EI({gsplat:g,rgb:w})}return g}ensureShTextures(){if(!this.extra.sh1)return{};let A=this.extra.sh1Texture;if(!A){let B=this.extra.sh1;const{width:C,height:E,depth:D,maxSplats:i}=BA(B.length/2);if(B.lengthg){this.maxSplats=BA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4);this.packedArray&&B.set(this.packedArray),this.packedArray=B}return this.packedArray}ensureSplatsSh(A,I){let g,B;if(A===0)return this.ensureSplats(I);if(A===1)g=2,B="sh1";else if(A===2)g=4,B="sh2";else if(A===3)g=4,B="sh3";else throw new Error(`Invalid level: ${A}`);let C=this.extra[B]?this.extra[B].length/g:0;const E=I<=C?C:Math.max(I,2*C);if(!this.extra[B]||E>C){C=BA(E).maxSplats;const D=new Uint32Array(C*g);this.extra[B]&&D.set(this.extra[B]),this.extra[B]=D}return this.extra[B]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return Ng(this.packedArray,A,this.splatEncoding)}setSplat(A,I,g,B,C,E){const D=this.ensureSplats(A+1);vg(D,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,C,E.r,E.g,E.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,C){const E=this.ensureSplats(this.numSplats+1);vg(E,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,C.r,C.g,C.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let I=0;I{const C=I,E=Math.ceil(B/P)*P;return I+=E,{base:C,count:B}});return{maxSplats:I,mapping:g}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():KA.getEmptyArray}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.maxSplats!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:I,depth:g}=BA(this.maxSplats);this.source=new G.DataArrayTexture(this.packedArray,A,I,g),this.source.format=G.RGBAIntegerFormat,this.source.type=G.UnsignedIntType,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}prepareProgramMaterial(A){let I=KA.generatorProgram.get(A);if(!I){const B=cA({index:"int"},{},({index:C},E,{roots:D})=>{A.inputs.index=C;const i=A.outputs.gsplat,w=kB(i,this.dynoRgbMinMaxLnScaleMinMax);D.push(w)});KA.programTemplate||(KA.programTemplate=new Jg(gg().computeUvec4Template)),I=new yQ({graph:B,inputs:{index:"_index"},outputs:{output:"target"},template:KA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),KA.generatorProgram.set(A,I)}const g=I.prepareMaterial();return KA.fullScreenQuad.material=g,{program:I,material:g}}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}generate({generator:A,base:I,count:g,renderer:B}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(I+g>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const D=this.saveRenderState(B),i=Math.ceil((I+g)/P)*P,w=P*WA;for(E.uniforms.targetBase.value=I,E.uniforms.targetCount.value=g;Iawait w.call(I?"qualityLodPackedSplats":"tinyLodPackedSplats",{numSplats:this.numSplats,packedArray:B,extra:E,lodBase:g,rgba:C,encoding:this.splatEncoding??eg})),i=new KA(D);this.lodSplats&&this.lodSplats.dispose(),this.lodSplats=i,this.nonLod=!0,this.lod=I?"quality":!0}extractSplats(A,I){const g=BA(A.length).maxSplats,B=new KA({maxSplats:g});for(let C=0;C>>16)*.61803398875;D=D-Math.floor(D);const i=Math.max(0,Math.min(1,Math.abs(D*6-3)-1)),w=Math.max(0,Math.min(1,Math.abs(D*6+1)-1)),s=Math.max(0,Math.min(1,Math.abs(D*6-1)-1));E.color.r*=i,E.color.g*=w,E.color.b*=s}B.pushSplat(E.center,E.scales,E.quaternion,E.opacity,E.color)}return B}};KA.getEmptyArray=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),KA.programTemplate=null,KA.generatorProgram=new WeakMap,KA.fullScreenQuad=new AB.FullScreenQuad(new G.RawShaderMaterial({visible:!1})),KA.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*4),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGBAIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),KA.emptyUint32x2=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=BA(1),C=new Uint32Array(B*2),E=new G.DataArrayTexture(C,A,I,g);return E.format=G.RGIntegerFormat,E.type=G.UnsignedIntType,E.internalFormat="RG32UI",E.needsUpdate=!0,E})();let _A=KA;class KB extends x{constructor({packedSplats:A}={}){super({key:"packedSplats",type:qg,globals:()=>[sQ],value:{textureArray:_A.getEmptyArray,numSplats:0,rgbMinMaxLnScaleMinMax:new G.Vector4(0,1,fA,bA),lodOpacity:!1},update:I=>{var g,B,C,E,D,i,w,s,o,y,h,k;return I.textureArray=((g=this.packedSplats)==null?void 0:g.getTexture())??_A.getEmptyArray,I.numSplats=((B=this.packedSplats)==null?void 0:B.numSplats)??0,I.rgbMinMaxLnScaleMinMax.set(((E=(C=this.packedSplats)==null?void 0:C.splatEncoding)==null?void 0:E.rgbMin)??0,((i=(D=this.packedSplats)==null?void 0:D.splatEncoding)==null?void 0:i.rgbMax)??1,((s=(w=this.packedSplats)==null?void 0:w.splatEncoding)==null?void 0:s.lnScaleMin)??fA,((y=(o=this.packedSplats)==null?void 0:o.splatEncoding)==null?void 0:y.lnScaleMax)??bA),I.lodOpacity=((k=(h=this.packedSplats)==null?void 0:h.splatEncoding)==null?void 0:k.lodOpacity)??!1,I}}),this.packedSplats=A}}const JR=oA(` + `)}}).outputs.covsplat}updateFromMatrix(A){const I=new a.Matrix3().setFromMatrix4(A),g=new a.Vector3().setFromMatrixColumn(A,3),B=!I.equals(this.basis.value)||!g.equals(this.offset.value);return B&&(this.basis.value.copy(I),this.offset.value.copy(g)),B}update(A){return A.updateMatrixWorld(),this.updateFromMatrix(A.matrixWorld)}}class _I extends a.Object3D{constructor({numSplats:A,generator:I,covGenerator:g,construct:B,update:C}){if(super(),this.numSplats=A??0,this.generator=I,this.covGenerator=g,this.frameUpdate=C,this.version=0,this.mappingVersion=0,B){const E=B(this);Object.assign(this,E)}}updateVersion(){this.version+=1}updateMappingVersion(){this.mappingVersion+=1,this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}class Mg{static __wrap(A){A=A>>>0;const I=Object.create(Mg.prototype);return I.__wbg_ptr=A,YB.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,YB.unregister(this),A}free(){const A=this.__destroy_into_raw();K.__wbg_csplatarray_free(A,0)}bhatt_lod(A){K.csplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return K.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){K.csplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return K.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){K.csplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=K.csplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}to_extsplats_lod(){const A=K.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}to_packedsplats(){const A=K.csplatarray_to_packedsplats(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}to_packedsplats_lod(){const A=K.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}get maxShDegree(){return K.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return K.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(A){K.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){K.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(Mg.prototype[Symbol.dispose]=Mg.prototype.free);class Jg{static __wrap(A){A=A>>>0;const I=Object.create(Jg.prototype);return I.__wbg_ptr=A,dB.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,dB.unregister(this),A}free(){const A=this.__destroy_into_raw();K.__wbg_gsplatarray_free(A,0)}get maxShDegree(){return K.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return K.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(A){K.gsplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return K.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){K.gsplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return K.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){K.gsplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=K.gsplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}to_extsplats_lod(){const A=K.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw nA(A[1]);return nA(A[0])}to_packedsplats(A){const I=K.gsplatarray_to_packedsplats(this.__wbg_ptr,A);if(I[2])throw nA(I[1]);return nA(I[0])}to_packedsplats_lod(A){const I=K.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,A);if(I[2])throw nA(I[1]);return nA(I[0])}set maxShDegree(A){K.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){K.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(Jg.prototype[Symbol.dispose]=Jg.prototype.free);function rB(Q){const A=K.decode_rad_header(Q);if(A[2])throw nA(A[1]);return nA(A[0])}function JG(){return K.get_raycast_buffer()}function UG(){return K.get_raycast_buffer2()}function LG(Q,A,I,g,B,C,E,i,o,D){return K.raycast_ext_buffers(Q,A,I,g,B,C,E,i,o,D)}function nG(Q,A,I,g,B,C,E,i,o,D,w,s,t){return K.raycast_packed_buffer(Q,A,I,g,B,C,E,i,o,D,w,s,t)}function HG(){return{__proto__:null,"./spark_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,I){return Error(fg(A,I))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(A){const I=A,g=typeof I=="boolean"?I:void 0;return ug(g)?16777215:g?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(A,I){const g=TQ(I),B=LQ(g,K.__wbindgen_malloc,K.__wbindgen_realloc),C=cg;eI().setInt32(A+4,C,!0),eI().setInt32(A+0,B,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(A,I){return A in I},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(A){return!A},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(A){const I=A;return typeof I=="object"&&I!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(A){return A===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(A,I){return A==I},__wbg___wbindgen_number_get_7579aab02a8a620c:function(A,I){const g=I,B=typeof g=="number"?g:void 0;eI().setFloat64(A+8,ug(B)?0:B,!0),eI().setInt32(A+0,!ug(B),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(A,I){const g=I,B=typeof g=="string"?g:void 0;var C=ug(B)?0:LQ(B,K.__wbindgen_malloc,K.__wbindgen_realloc),E=cg;eI().setInt32(A+4,E,!0),eI().setInt32(A+0,C,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,I){throw new Error(fg(A,I))},__wbg_csplatarray_new:function(A){return Mg.__wrap(A)},__wbg_error_a6fa202b58aa1cd3:function(A,I){let g,B;try{g=A,B=I,console.error(fg(A,I))}finally{K.__wbindgen_free(g,B,1)}},__wbg_get_4848e350b40afc16:function(A,I){return A[I>>>0]},__wbg_get_f96702c6245e4ef9:function(){return xB(function(A,I){return Reflect.get(A,I)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(A,I){return A[I>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(A,I){return A[I]},__wbg_gsplatarray_new:function(A){return Jg.__wrap(A)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(A){let I;try{I=A instanceof ArrayBuffer}catch{I=!1}return I},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(A){let I;try{I=A instanceof Uint8Array}catch{I=!1}return I},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_6e821edde497a532:function(A){return A.length},__wbg_length_a4ca9e78359b5f1f:function(A){return A.length},__wbg_length_fd4646b401926788:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_a560378ea1240b14:function(A){return new Uint8Array(A)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_26bffbe236bf73f9:function(A){return new Float32Array(A>>>0)},__wbg_new_with_length_41a22191b9bdfd66:function(A){return new Uint32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,I,g){Uint8Array.prototype.set.call(YG(A,I),g)},__wbg_prototypesetcall_64c287a27cc24d27:function(A,I,g){Uint16Array.prototype.set.call(rG(A,I),g)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,I,g){Uint32Array.prototype.set.call(UQ(A,I),g)},__wbg_push_6bdbc990be5ac37b:function(A,I){return A.push(I)},__wbg_set_08463b1df38a7e29:function(A,I,g){return A.set(I,g)},__wbg_set_448126769bf7c181:function(A,I,g){A.set(UQ(I,g))},__wbg_set_6be42768c690e380:function(A,I,g){A[I]=g},__wbg_set_6c60b2e8ad0e9383:function(A,I,g){A[I>>>0]=g},__wbg_set_81b4174352e6a095:function(A,I,g){A.set(I,g>>>0)},__wbg_set_8ee2d34facb8466e:function(){return xB(function(A,I,g){return Reflect.set(A,I,g)},arguments)},__wbg_set_a98c8da6557e63de:function(A,I,g){A.set(lB(I,g))},__wbg_set_index_338a66e40fc45dee:function(A,I,g){A[I>>>0]=g>>>0},__wbg_stack_3b0d974bbf31e44f:function(A,I){const g=I.stack,B=LQ(g,K.__wbindgen_malloc,K.__wbindgen_realloc),C=cg;eI().setInt32(A+4,C,!0),eI().setInt32(A+0,B,!0)},__wbg_subarray_0f98d3fb634508ad:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_517cd0f1811ab872:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,I){return lB(A,I)},__wbindgen_cast_0000000000000003:function(A,I){return UQ(A,I)},__wbindgen_cast_0000000000000004:function(A,I){return fg(A,I)},__wbindgen_cast_0000000000000005:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=K.__wbindgen_externrefs,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)}}}}typeof FinalizationRegistry>"u"||new FinalizationRegistry(Q=>K.__wbg_chunkdecoder_free(Q>>>0,1));const YB=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>K.__wbg_csplatarray_free(Q>>>0,1)),dB=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>K.__wbg_gsplatarray_free(Q>>>0,1));function KG(Q){const A=K.__externref_table_alloc();return K.__wbindgen_externrefs.set(A,Q),A}function TQ(Q){const A=typeof Q;if(A=="number"||A=="boolean"||Q==null)return`${Q}`;if(A=="string")return`"${Q}"`;if(A=="symbol"){const B=Q.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=Q.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(Q)){const B=Q.length;let C="[";B>0&&(C+=TQ(Q[0]));for(let E=1;E1)g=I[1];else return toString.call(Q);if(g=="Object")try{return"Object("+JSON.stringify(Q)+")"}catch{return"Object"}return Q instanceof Error?`${Q.name}: ${Q.message} +${Q.stack}`:g}function lB(Q,A){return Q=Q>>>0,dG().subarray(Q/4,Q/4+A)}function rG(Q,A){return Q=Q>>>0,lG().subarray(Q/2,Q/2+A)}function UQ(Q,A){return Q=Q>>>0,xG().subarray(Q/4,Q/4+A)}function YG(Q,A){return Q=Q>>>0,hg().subarray(Q/1,Q/1+A)}let dI=null;function eI(){return(dI===null||dI.buffer.detached===!0||dI.buffer.detached===void 0&&dI.buffer!==K.memory.buffer)&&(dI=new DataView(K.memory.buffer)),dI}let ig=null;function dG(){return(ig===null||ig.byteLength===0)&&(ig=new Float32Array(K.memory.buffer)),ig}function fg(Q,A){return Q=Q>>>0,pG(Q,A)}let Dg=null;function lG(){return(Dg===null||Dg.byteLength===0)&&(Dg=new Uint16Array(K.memory.buffer)),Dg}let og=null;function xG(){return(og===null||og.byteLength===0)&&(og=new Uint32Array(K.memory.buffer)),og}let sg=null;function hg(){return(sg===null||sg.byteLength===0)&&(sg=new Uint8Array(K.memory.buffer)),sg}function xB(Q,A){try{return Q.apply(this,A)}catch(I){const g=KG(I);K.__wbindgen_exn_store(g)}}function ug(Q){return Q==null}function LQ(Q,A,I){if(I===void 0){const i=yg.encode(Q),o=A(i.length,1)>>>0;return hg().subarray(o,o+i.length).set(i),cg=i.length,o}let g=Q.length,B=A(g,1)>>>0;const C=hg();let E=0;for(;E127)break;C[B+E]=i}if(E!==g){E!==0&&(Q=Q.slice(E)),B=I(B,g,g=E+Q.length*3,1)>>>0;const i=hg().subarray(B+E,B+g),o=yg.encodeInto(Q,i);E+=o.written,B=I(B,g,E,1)>>>0}return cg=E,B}function nA(Q){const A=K.__wbindgen_externrefs.get(Q);return K.__externref_table_dealloc(Q),A}let Xg=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Xg.decode();const qG=2146435072;let nQ=0;function pG(Q,A){return nQ+=A,nQ>=qG&&(Xg=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Xg.decode(),nQ=A),Xg.decode(hg().subarray(Q,Q+A))}const yg=new TextEncoder;"encodeInto"in yg||(yg.encodeInto=function(Q,A){const I=yg.encode(Q);return A.set(I),{read:Q.length,written:I.length}});let cg=0,K;function fG(Q,A){return K=Q.exports,dI=null,ig=null,Dg=null,og=null,sg=null,K.__wbindgen_start(),K}async function uG(Q,A){if(typeof Response=="function"&&Q instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(Q,A)}catch(B){if(Q.ok&&I(Q.type)&&Q.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const g=await Q.arrayBuffer();return await WebAssembly.instantiate(g,A)}else{const g=await WebAssembly.instantiate(Q,A);return g instanceof WebAssembly.Instance?{instance:g,module:Q}:g}function I(g){switch(g){case"basic":case"cors":case"default":return!0}return!1}}async function bG(Q){if(K!==void 0)return K;Q!==void 0&&(Object.getPrototypeOf(Q)===Object.prototype?{module_or_path:Q}=Q:console.warn("using deprecated parameters for the initialization function; pass a single object instead"));const A=HG();(typeof Q=="string"||typeof Request=="function"&&Q instanceof Request||typeof URL=="function"&&Q instanceof URL)&&(Q=fetch(Q));const{instance:I,module:g}=await uG(await Q,A);return fG(I)}function PG(Q){return Q>64&&Q<91?Q-65:Q>96&&Q<123?Q-71:Q>47&&Q<58?Q+4:Q===43?62:Q===47?63:0}function mG(Q,A){const I=Q.replace(/[^A-Za-z0-9+/]/g,""),g=I.length,B=A?Math.ceil((g*3+1>>2)/A)*A:g*3+1>>2,C=new Uint8Array(B);let E,i,o=0,D=0;for(let w=0;w>>(16>>>E&24)&255,E++,D++;o=0}return C}function TG(Q){if(typeof Uint8Array.fromBase64=="function")return Uint8Array.fromBase64(Q);let A=atob(Q),I=A.length,g=new Uint8Array(I);for(let B=0;B{Yo=!0});function XG(){return Yo}const lo='(function(){"use strict";class I{static __wrap(t){t=t>>>0;const e=Object.create(I.prototype);return e.__wbg_ptr=t,nt.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,nt.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_chunkdecoder_free(t,0)}finish(){const t=this.__destroy_into_raw(),e=s.chunkdecoder_finish(t);if(e[2])throw i(e[1]);return i(e[0])}push(t){const e=s.chunkdecoder_push(this.__wbg_ptr,t);if(e[1])throw i(e[0])}}Symbol.dispose&&(I.prototype[Symbol.dispose]=I.prototype.free);class z{static __wrap(t){t=t>>>0;const e=Object.create(z.prototype);return e.__wbg_ptr=t,rt.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,rt.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_csplatarray_free(t,0)}bhatt_lod(t){s.csplatarray_bhatt_lod(this.__wbg_ptr,t)}has_lod(){return s.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(t){s.csplatarray_inject_rgba8(this.__wbg_ptr,t)}len(){return s.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(t,e){s.csplatarray_tiny_lod(this.__wbg_ptr,t,e)}to_extsplats(){const t=s.csplatarray_to_extsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_extsplats_lod(){const t=s.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats(){const t=s.csplatarray_to_packedsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats_lod(){const t=s.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}get maxShDegree(){return s.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return s.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(t){s.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,t)}set numSplats(t){s.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,t)}}Symbol.dispose&&(z.prototype[Symbol.dispose]=z.prototype.free);class P{static __wrap(t){t=t>>>0;const e=Object.create(P.prototype);return e.__wbg_ptr=t,ot.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,ot.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_gsplatarray_free(t,0)}get maxShDegree(){return s.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return s.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(t){s.gsplatarray_bhatt_lod(this.__wbg_ptr,t)}has_lod(){return s.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(t){s.gsplatarray_inject_rgba8(this.__wbg_ptr,t)}len(){return s.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(t,e){s.gsplatarray_tiny_lod(this.__wbg_ptr,t,e)}to_extsplats(){const t=s.gsplatarray_to_extsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_extsplats_lod(){const t=s.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats(t){const e=s.gsplatarray_to_packedsplats(this.__wbg_ptr,t);if(e[2])throw i(e[1]);return i(e[0])}to_packedsplats_lod(t){const e=s.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,t);if(e[2])throw i(e[1]);return i(e[0])}set maxShDegree(t){s.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,t)}set numSplats(t){s.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,t)}}Symbol.dispose&&(P.prototype[Symbol.dispose]=P.prototype.free);function ut(n,t,e,r,o,a){const _=s.bhatt_lod_extsplats(n,t,e,b(r)?0:x(r),o,b(a)?0:x(a));if(_[2])throw i(_[1]);return i(_[0])}function dt(n,t,e,r,o,a){const _=s.bhatt_lod_packedsplats(n,t,b(e)?0:x(e),r,b(o)?0:x(o),a);if(_[2])throw i(_[1]);return i(_[0])}function ft(n,t,e){var r=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),o=d,a=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d;const c=s.decode_to_csplatarray(r,o,a,_,e);if(c[2])throw i(c[1]);return I.__wrap(c[0])}function bt(n,t,e,r,o){var a=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d,c=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),f=d;const u=s.decode_to_extsplats(a,_,c,f,b(e)?0:x(e),b(r)?0:x(r),b(o)?0:x(o));if(u[2])throw i(u[1]);return I.__wrap(u[0])}function wt(n,t){var e=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),r=d,o=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;const _=s.decode_to_gsplatarray(e,r,o,a);if(_[2])throw i(_[1]);return I.__wrap(_[0])}function gt(n,t,e,r,o,a){var _=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),c=d,f=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),u=d;const l=s.decode_to_packedsplats(_,c,f,u,e,b(r)?0:x(r),b(o)?0:x(o),b(a)?0:x(a));if(l[2])throw i(l[1]);return I.__wrap(l[0])}function pt(n){s.dispose_lod_tree(n)}function yt(n,t,e,r,o,a,_,c,f,u,l){const g=R(r,s.__wbindgen_malloc),h=d,S=R(o,s.__wbindgen_malloc),T=d,M=F(a,s.__wbindgen_malloc),A=d,m=F(_,s.__wbindgen_malloc),p=d,L=F(c,s.__wbindgen_malloc),y=d,w=F(f,s.__wbindgen_malloc),O=d,D=F(u,s.__wbindgen_malloc),$=d,v=F(l,s.__wbindgen_malloc),U=d,E=s.dynamic_traverse_lod_trees(n,t,b(e)?4294967297:Math.fround(e),g,h,S,T,M,A,m,p,L,y,w,O,D,$,v,U);if(E[2])throw i(E[1]);return i(E[0])}function ht(n,t){const e=s.get_lod_tree_level(n,t);if(e[2])throw i(e[1]);return i(e[0])}function mt(n,t){const e=s.init_lod_tree(n,t);if(e[2])throw i(e[1]);return i(e[0])}function St(n){const t=s.new_lod_tree(n);if(t[2])throw i(t[1]);return i(t[0])}function xt(n){const t=s.new_shared_lod_tree(n);if(t[2])throw i(t[1]);return i(t[0])}function At(n,t,e){return s.sort32_splats(n,t,e)>>>0}function Ft(n,t,e){return s.sort_splats(n,t,e)>>>0}function Mt(n,t,e,r,o,a,_){const c=s.tiny_lod_extsplats(n,t,e,b(r)?0:x(r),o,a,b(_)?0:x(_));if(c[2])throw i(c[1]);return i(c[0])}function vt(n,t,e,r,o,a,_){const c=s.tiny_lod_packedsplats(n,t,b(e)?0:x(e),r,o,b(a)?0:x(a),_);if(c[2])throw i(c[1]);return i(c[0])}function kt(n,t,e,r,o,a,_,c,f,u,l){const g=R(r,s.__wbindgen_malloc),h=d,S=R(o,s.__wbindgen_malloc),T=d,M=F(a,s.__wbindgen_malloc),A=d,m=F(_,s.__wbindgen_malloc),p=d,L=F(c,s.__wbindgen_malloc),y=d,w=F(f,s.__wbindgen_malloc),O=d,D=F(u,s.__wbindgen_malloc),$=d,v=F(l,s.__wbindgen_malloc),U=d,E=s.traverse_lod_trees(n,t,b(e)?4294967297:Math.fround(e),g,h,S,T,M,A,m,p,L,y,w,O,D,$,v,U);if(E[2])throw i(E[1]);return i(E[0])}function Tt(n,t,e,r,o){const a=R(n,s.__wbindgen_malloc),_=d,c=R(t,s.__wbindgen_malloc),f=d,u=R(e,s.__wbindgen_malloc),l=d,g=R(r,s.__wbindgen_malloc),h=d,S=s.update_lod_trees(a,_,c,f,u,l,g,h,o);if(S[2])throw i(S[1]);return i(S[0])}function Lt(){return{__proto__:null,"./spark_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(t,e){return Error(G(t,e))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(t){const e=t,r=typeof e=="boolean"?e:void 0;return b(r)?16777215:r?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(t,e){const r=Y(e),o=k(r,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;C().setInt32(t+4,a,!0),C().setInt32(t+0,o,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(t,e){return t in e},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(t){return!t},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(t){const e=t;return typeof e=="object"&&e!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(t){return t===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(t,e){return t==e},__wbg___wbindgen_number_get_7579aab02a8a620c:function(t,e){const r=e,o=typeof r=="number"?r:void 0;C().setFloat64(t+8,b(o)?0:o,!0),C().setInt32(t+0,!b(o),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(t,e){const r=e,o=typeof r=="string"?r:void 0;var a=b(o)?0:k(o,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d;C().setInt32(t+4,_,!0),C().setInt32(t+0,a,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(t,e){throw new Error(G(t,e))},__wbg_csplatarray_new:function(t){return z.__wrap(t)},__wbg_error_a6fa202b58aa1cd3:function(t,e){let r,o;try{r=t,o=e,console.error(G(t,e))}finally{s.__wbindgen_free(r,o,1)}},__wbg_get_4848e350b40afc16:function(t,e){return t[e>>>0]},__wbg_get_f96702c6245e4ef9:function(){return ct(function(t,e){return Reflect.get(t,e)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(t,e){return t[e>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(t,e){return t[e]},__wbg_gsplatarray_new:function(t){return P.__wrap(t)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(t){let e;try{e=t instanceof ArrayBuffer}catch{e=!1}return e},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(t){let e;try{e=t instanceof Uint8Array}catch{e=!1}return e},__wbg_length_0c32cb8543c8e4c8:function(t){return t.length},__wbg_length_1e701798fdcaa3b4:function(t){return t.length},__wbg_length_6e821edde497a532:function(t){return t.length},__wbg_length_a4ca9e78359b5f1f:function(t){return t.length},__wbg_length_fd4646b401926788:function(t){return t.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_a560378ea1240b14:function(t){return new Uint8Array(t)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_26bffbe236bf73f9:function(t){return new Float32Array(t>>>0)},__wbg_new_with_length_41a22191b9bdfd66:function(t){return new Uint32Array(t>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(t,e,r){Uint8Array.prototype.set.call(Et(t,e),r)},__wbg_prototypesetcall_64c287a27cc24d27:function(t,e,r){Uint16Array.prototype.set.call($t(t,e),r)},__wbg_prototypesetcall_e42275e601e14eeb:function(t,e,r){Uint32Array.prototype.set.call(Q(t,e),r)},__wbg_push_6bdbc990be5ac37b:function(t,e){return t.push(e)},__wbg_set_08463b1df38a7e29:function(t,e,r){return t.set(e,r)},__wbg_set_448126769bf7c181:function(t,e,r){t.set(Q(e,r))},__wbg_set_6be42768c690e380:function(t,e,r){t[e]=r},__wbg_set_6c60b2e8ad0e9383:function(t,e,r){t[e>>>0]=r},__wbg_set_81b4174352e6a095:function(t,e,r){t.set(e,r>>>0)},__wbg_set_8ee2d34facb8466e:function(){return ct(function(t,e,r){return Reflect.set(t,e,r)},arguments)},__wbg_set_a98c8da6557e63de:function(t,e,r){t.set(st(e,r))},__wbg_set_index_338a66e40fc45dee:function(t,e,r){t[e>>>0]=r>>>0},__wbg_stack_3b0d974bbf31e44f:function(t,e){const r=e.stack,o=k(r,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;C().setInt32(t+4,a,!0),C().setInt32(t+0,o,!0)},__wbg_subarray_0f98d3fb634508ad:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbg_subarray_517cd0f1811ab872:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbindgen_cast_0000000000000001:function(t){return t},__wbindgen_cast_0000000000000002:function(t,e){return st(t,e)},__wbindgen_cast_0000000000000003:function(t,e){return Q(t,e)},__wbindgen_cast_0000000000000004:function(t,e){return G(t,e)},__wbindgen_cast_0000000000000005:function(t){return BigInt.asUintN(64,t)},__wbindgen_init_externref_table:function(){const t=s.__wbindgen_externrefs,e=t.grow(4);t.set(0,void 0),t.set(e+0,void 0),t.set(e+1,null),t.set(e+2,!0),t.set(e+3,!1)}}}}const nt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_chunkdecoder_free(n>>>0,1)),rt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_csplatarray_free(n>>>0,1)),ot=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_gsplatarray_free(n>>>0,1));function x(n){const t=s.__externref_table_alloc();return s.__wbindgen_externrefs.set(t,n),t}function Y(n){const t=typeof n;if(t=="number"||t=="boolean"||n==null)return`${n}`;if(t=="string")return`"${n}"`;if(t=="symbol"){const o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(t=="function"){const o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){const o=n.length;let a="[";o>0&&(a+=Y(n[0]));for(let _=1;_1)r=e[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message}\n${n.stack}`:r}function st(n,t){return n=n>>>0,_t().subarray(n/4,n/4+t)}function $t(n,t){return n=n>>>0,Dt().subarray(n/2,n/2+t)}function Q(n,t){return n=n>>>0,at().subarray(n/4,n/4+t)}function Et(n,t){return n=n>>>0,Z().subarray(n/1,n/1+t)}let j=null;function C(){return(j===null||j.buffer.detached===!0||j.buffer.detached===void 0&&j.buffer!==s.memory.buffer)&&(j=new DataView(s.memory.buffer)),j}let B=null;function _t(){return(B===null||B.byteLength===0)&&(B=new Float32Array(s.memory.buffer)),B}function G(n,t){return n=n>>>0,It(n,t)}let q=null;function Dt(){return(q===null||q.byteLength===0)&&(q=new Uint16Array(s.memory.buffer)),q}let V=null;function at(){return(V===null||V.byteLength===0)&&(V=new Uint32Array(s.memory.buffer)),V}let K=null;function Z(){return(K===null||K.byteLength===0)&&(K=new Uint8Array(s.memory.buffer)),K}function ct(n,t){try{return n.apply(this,t)}catch(e){const r=x(e);s.__wbindgen_exn_store(r)}}function b(n){return n==null}function R(n,t){const e=t(n.length*4,4)>>>0;return at().set(n,e/4),d=n.length,e}function F(n,t){const e=t(n.length*4,4)>>>0;return _t().set(n,e/4),d=n.length,e}function k(n,t,e){if(e===void 0){const c=H.encode(n),f=t(c.length,1)>>>0;return Z().subarray(f,f+c.length).set(c),d=c.length,f}let r=n.length,o=t(r,1)>>>0;const a=Z();let _=0;for(;_127)break;a[o+_]=c}if(_!==r){_!==0&&(n=n.slice(_)),o=e(o,r,r=_+n.length*3,1)>>>0;const c=Z().subarray(o+_,o+r),f=H.encodeInto(n,c);_+=f.written,o=e(o,r,_,1)>>>0}return d=_,o}function i(n){const t=s.__wbindgen_externrefs.get(n);return s.__externref_table_dealloc(n),t}let J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});J.decode();const Ut=2146435072;let tt=0;function It(n,t){return tt+=t,tt>=Ut&&(J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),J.decode(),tt=t),J.decode(Z().subarray(n,n+t))}const H=new TextEncoder;"encodeInto"in H||(H.encodeInto=function(n,t){const e=H.encode(n);return t.set(e),{read:n.length,written:e.length}});let d=0,s;function Ct(n,t){return s=n.exports,j=null,B=null,q=null,V=null,K=null,s.__wbindgen_start(),s}async function Rt(n,t){if(typeof Response=="function"&&n instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(n,t)}catch(o){if(n.ok&&e(n.type)&&n.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",o);else throw o}const r=await n.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{const r=await WebAssembly.instantiate(n,t);return r instanceof WebAssembly.Instance?{instance:r,module:n}:r}function e(r){switch(r){case"basic":case"cors":case"default":return!0}return!1}}async function Ot(n){if(s!==void 0)return s;n!==void 0&&(Object.getPrototypeOf(n)===Object.prototype?{module_or_path:n}=n:console.warn("using deprecated parameters for the initialization function; pass a single object instead"));const t=Lt();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));const{instance:e}=await Rt(await n,t);return Ct(e)}const jt={sortSplats16:Wt,sortSplats32:Nt,loadPackedSplats:zt,loadExtSplats:Pt,tinyLodPackedSplats:Bt,qualityLodPackedSplats:qt,tinyLodExtSplats:Vt,qualityLodExtSplats:Kt,newLodTree:Zt,newSharedLodTree:Ht,initLodTree:Gt,disposeLodTree:Jt,updateLodTrees:Xt,traverseLodTrees:Yt,getLodTreeLevel:Qt,nextChunk:te};async function it(n){const{id:t,name:e,args:r}=n.data;try{const o=jt[e];if(!o)throw new Error(`Unknown worker RPC: ${e}`);const _=await o(r,{sendStatus:c=>{self.postMessage({id:t,status:c},{transfer:et(c)})}});self.postMessage({id:t,result:_},{transfer:et(_)})}catch(o){console.warn(`Worker error: ${o}`),self.postMessage({id:t,error:o},{transfer:et(o)})}}function Wt({numSplats:n,readback:t,ordering:e}){return{activeSplats:Ft(n,t,e),readback:t,ordering:e}}function Nt({numSplats:n,readback:t,ordering:e}){return{activeSplats:At(n,t,e),readback:t,ordering:e}}async function X({decoder:n,fileBytes:t,url:e,requestHeader:r,withCredentials:o,chunked:a,chunkedLength:_,sendStatus:c}){if(t)for(let l=0;l{lt=S});c({nextChunk:!0});const h=await g;if(h.length===0)break;n.push(h),u+=h.length,c({progress:{loaded:u,total:l}})}l===0&&c({progress:{loaded:u,total:u}})}else throw new Error("No url or fileBytes provided");return n.finish()}function W(n){return{numSplats:n.numSplats,packedArray:n.packed,extra:{sh1:n.sh1,sh2:n.sh2,sh3:n.sh3,sh1Codes:n.sh1Codes,sh2Codes:n.sh2Codes,sh3Codes:n.sh3Codes,lodTree:n.lodTree},splatEncoding:n.splatEncoding}}async function zt({url:n,requestHeader:t,withCredentials:e,fileBytes:r,fileType:o,pathName:a,chunked:_,chunkedLength:c,encoding:f,lod:u,lodBase:l,lodAbove:g,nonLod:h,sh1Codes:S,sh2Codes:T,sh3Codes:M},{sendStatus:A}){if(!u){const v=gt(o,a??n,f,S,T,M),U=await X({decoder:v,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:A}),E=W(U);return E.splatEncoding.lodOpacity?{lodSplats:E}:E}const m=ft(o,a??n,f),p=await X({decoder:m,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:A});if(p.has_lod())return{lodSplats:W(p.to_packedsplats_lod())};if(g!==void 0&&p.len() ${p.len()} (${D} ms)`);const $=p.to_packedsplats_lod();return L.lodSplats=W($),L}function N(n){return{numSplats:n.numSplats,extArrays:[n.ext0,n.ext1],extra:{labels:n.labels,instances:n.instances,sh1:n.sh1,sh2:n.sh2,sh3a:n.sh3a,sh3b:n.sh3b,sh1Codes:n.sh1Codes,sh2Codes:n.sh2Codes,sh3Codes:n.sh3Codes,lodTree:n.lodTree}}}async function Pt({url:n,requestHeader:t,withCredentials:e,fileBytes:r,fileType:o,pathName:a,chunked:_,chunkedLength:c,lod:f,lodBase:u,lodAbove:l,nonLod:g,sh1Codes:h,sh2Codes:S,sh3Codes:T},{sendStatus:M}){if(!f){const $=bt(o,a??n,h,S,T),v=await X({decoder:$,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:M}),U=N(v);return U.extra.lodTree?{lodSplats:U}:U}const A=wt(o,a??n),m=await X({decoder:A,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:M});if(m.has_lod())return{lodSplats:N(m.to_extsplats_lod())};if(l!==void 0&&m.len() ${m.len()} (${O} ms)`);const D=m.to_extsplats_lod();return p.lodSplats=N(D),p}async function Bt({numSplats:n,packedArray:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.5)),c=performance.now(),u=vt(n,t,e,_,!1,o,a),l=performance.now()-c,g=W(u);return console.log(`Tiny LoD: ${n} -> ${g.numSplats} (${l} ms)`),g}async function qt({numSplats:n,packedArray:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.75)),c=performance.now(),f=dt(n,t,e,_,o,a),u=performance.now()-c,l=W(f);return console.log(`Bhatt LoD: ${n} -> ${l.numSplats} (${u} ms)`),l}async function Vt({numSplats:n,extArrays:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.5)),c=performance.now(),u=Mt(n,t[0],t[1],e,_,!1,o),l=performance.now()-c,g=N(u);return console.log(`Tiny LoD: ${n} -> ${g.numSplats} (${l} ms)`),g}async function Kt({numSplats:n,extArrays:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.75)),c=performance.now(),f=ut(n,t[0],t[1],e,_,o),u=performance.now()-c,l=N(f);return console.log(`Bhatt LoD: ${n} -> ${l.numSplats} (${u} ms)`),l}function Zt({capacity:n}){const{lodId:t}=St(n);return{lodId:t}}function Ht({lodId:n}){const{lodId:t}=xt(n);return{lodId:t}}function Gt({numSplats:n,lodTree:t}){const{lodId:e,chunkToPage:r}=mt(n,t);return{lodId:e,chunkToPage:r}}function Jt({lodId:n}){pt(n)}function Xt({ranges:n}){const t=new Uint32Array(n.map(({lodId:_})=>_)),e=new Uint32Array(n.map(({pageBase:_})=>_)),r=new Uint32Array(n.map(({chunkBase:_})=>_)),o=new Uint32Array(n.map(({count:_})=>_)),a=n.map(({lodTreeData:_})=>_);Tt(t,e,r,o,a)}function Yt({maxSplats:n,pixelScaleLimit:t,lastPixelLimit:e,instances:r,traverseMode:o}){const a=Object.entries(r),_=new Uint32Array(a.map(([y,w])=>w.lodId)),c=new Uint32Array(a.map(([y,w])=>w.rootPage??4294967295)),f=new Float32Array(a.flatMap(([y,w])=>{if(w.viewToObjectCols.length!==16)throw new Error("Incorrect array size for viewToObjectCols");return w.viewToObjectCols})),u=new Float32Array(a.map(([y,w])=>w.lodScale)),l=new Float32Array(a.map(([y,w])=>w.behindFoveate)),g=new Float32Array(a.map(([y,w])=>w.coneFov0)),h=new Float32Array(a.map(([y,w])=>w.coneFov)),S=new Float32Array(a.map(([y,w])=>w.coneFoveate)),M=(o==="dynamic"?yt:kt)(n,t,e,_,c,f,u,l,S,g,h),{instanceIndices:A,chunks:m,pixelLimit:p}=M;return{keyIndices:a.reduce((y,[w,O],D)=>(y[w]=A[D],y),{}),chunks:m,pixelLimit:p}}function Qt({lodId:n,level:t}){return ht(n,t)}let lt=n=>{};async function te({chunk:n}){lt(n)}function et(n){const t=[],e=new Set;function r(o){o&&typeof o=="object"&&!e.has(o)&&(e.add(o),o instanceof ArrayBuffer?t.push(o):ArrayBuffer.isView(o)?t.push(o.buffer):Array.isArray(o)?o.forEach(r):Object.values(o).forEach(r))}return r(n),t}async function ee(){let n;const t=new Promise(o=>{n=o}),e=[],r=o=>{if(o.data.name==="init-wasm"){n(o.data.module);return}e.push(o)};self.addEventListener("message",r),await Ot({module_or_path:await t}),self.removeEventListener("message",r),self.addEventListener("message",it);for(const o of e)it(o);e.length=0}ee().catch(console.error)})();\n//# sourceMappingURL=worker-o12t87OT.js.map\n',qB=typeof self<"u"&&self.Blob&&new Blob([lo],{type:"text/javascript;charset=utf-8"});function VG(Q){let A;try{if(A=qB&&(self.URL||self.webkitURL).createObjectURL(qB),!A)throw"";const I=new Worker(A,{name:Q==null?void 0:Q.name});return I.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),I}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(lo),{name:Q==null?void 0:Q.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}const QQ=class QQ{constructor(){this.queue=null,this.messages={},this.worker=new VG,this.worker.onmessage=A=>this.onMessage(A),ro.then(A=>{this.worker.postMessage({name:"init-wasm",module:A})})}onMessage(A){var i;const{id:I,result:g,error:B,status:C}=A.data,E=this.messages[I];E&&(B!==void 0?(delete this.messages[I],E.reject(B)):C!==void 0?(i=E.onStatus)==null||i.call(E,C):(delete this.messages[I],E.resolve(g)))}tryExclusive(A){return this.queue==null?this.exclusive(A):null}async exclusive(A){const I=this.queue;I!=null?await new Promise(g=>{I.push(()=>g(void 0))}):this.queue=[];try{return await A(this)}finally{this.queue!=null&&(this.queue.length===0?this.queue=null:this.queue.shift()())}}async call(A,I,g={}){const B=++QQ.currentId,C=new Promise((E,i)=>{this.messages[B]={resolve:E,reject:i,onStatus:g.onStatus}});return this.worker.postMessage({id:B,name:A,args:I},{transfer:UE(I)}),await C}dispose(){this.worker.terminate();const A=Object.values(this.messages);this.messages={};for(const I of A)I.reject(new Error("Worker terminate"))}};QQ.currentId=0;let Ug=QQ;class WG{constructor(A=4){this.numWorkers=0,this.freelist=[],this.queue=[],this.maxWorkers=A}async withWorker(A){const I=await this.allocWorker();try{return await A(I)}finally{this.freeWorker(I)}}async allocWorker(){const A=this.freelist.pop();if(A)return A;if(this.numWorkers{this.queue.push(I)})}freeWorker(A){if(this.numWorkers>this.maxWorkers){this.numWorkers-=1;return}const I=this.queue.shift();if(I){I(A);return}this.freelist.push(A)}}const aQ=new WG,LA=class LA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.maxSh=3,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new xo({packedSplats:this}),this.dynoRgbMinMaxLnScaleMinMax=new Ig({key:"rgbMinMaxLnScaleMinMax",value:new a.Vector4(0,1,fA,uA),update:I=>{var g,B,C,E;return I.set(((g=this.splatEncoding)==null?void 0:g.rgbMin)??0,((B=this.splatEncoding)==null?void 0:B.rgbMax)??1,((C=this.splatEncoding)==null?void 0:C.lnScaleMin)??fA,((E=this.splatEncoding)==null?void 0:E.lnScaleMax)??uA),I}}),this.dynoNumSh=new $A({key:"numSh",value:0,update:()=>Math.min(this.getNumSh(),this.maxSh)}),this.dynoShMax=new LI({key:"shMax",value:new a.Vector3,update:I=>{var g,B,C;return I.set(((g=this.splatEncoding)==null?void 0:g.sh1Max)??1,((B=this.splatEncoding)==null?void 0:B.sh2Max)??1,((C=this.splatEncoding)==null?void 0:C.sh3Max)??1),I}}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,this.extra={},this.maxSplats=A.maxSplats??0,this.splatEncoding=A.splatEncoding,this.lod=A.lod,this.nonLod=A.nonLod,A.url||A.fileBytes||A.stream||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){this.extra=A.extra??{},this.splatEncoding=A.splatEncoding??this.splatEncoding,this.lodSplats=A.lodSplats,A.packedArray?(this.packedArray=A.packedArray,this.numSplats=A.numSplats??this.packedArray.length/4,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/b)*b,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0)}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,construct:o,lod:D,nonLod:w,lodAbove:s}=A;this.lod=D,this.nonLod=w;const t=new eB;if((g||I||E)&&await t.loadInternalAsync({packedSplats:this,url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,onProgress:A.onProgress,lodAbove:s}),o){const G=o(this);G instanceof Promise&&await G}}dispose(){this.target&&(this.target.dispose(),this.target.texture.source.data=null,this.target=null),this.source&&(this.source.dispose(),this.source.source.data=null,this.source=null),this.packedArray=null;for(const A in this.extra){const I=this.extra[A];if(I instanceof q){const g=I.value;g!=null&&g.isTexture&&(g.dispose(),g.source.data=null)}}this.extra={},this.disposeLodSplats()}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return Math.min(this.getNumSh(),this.maxSh)>0}getNumSh(){return this.extra.sh1?this.extra.sh2?this.extra.sh3?3:2:1:0}setMaxSh(A){this.maxSh=A}fetchSplat({index:A,viewOrigin:I}){let g=IC(this.dyno,A);if(this.hasRgbDir()&&I){const B=mA(g).outputs.center,C=kg(EI(B,I)),{sh1Texture:E,sh2Texture:i,sh3Texture:o}=this.ensureShTextures();let{rgb:D}=qo({coord:CB(A),viewDir:C,numSh:this.dynoNumSh,sh1Texture:E,sh2Texture:i,sh3Texture:o,shMax:this.dynoShMax});D=qA(D,mA(g).outputs.rgb),g=CI({gsplat:g,rgb:D})}return g}ensureShTextures(){if(!this.extra.sh1)return{};let A=this.extra.sh1Texture;if(!A){let B=this.extra.sh1;const{width:C,height:E,depth:i,maxSplats:o}=iA(B.length/2);if(B.lengthg){this.maxSplats=iA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4);this.packedArray&&B.set(this.packedArray),this.packedArray=B}return this.packedArray}ensureSplatsSh(A,I){let g,B;if(A===0)return this.ensureSplats(I);if(A===1)g=2,B="sh1";else if(A===2)g=4,B="sh2";else if(A===3)g=4,B="sh3";else throw new Error(`Invalid level: ${A}`);let C=this.extra[B]?this.extra[B].length/g:0;const E=I<=C?C:Math.max(I,2*C);if(!this.extra[B]||E>C){C=iA(E).maxSplats;const i=new Uint32Array(C*g);this.extra[B]&&i.set(this.extra[B]),this.extra[B]=i}return this.extra[B]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return Sg(this.packedArray,A,this.splatEncoding)}setSplat(A,I,g,B,C,E){const i=this.ensureSplats(A+1);_g(i,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,C,E.r,E.g,E.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,C){const E=this.ensureSplats(this.numSplats+1);_g(E,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,C.r,C.g,C.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let I=0;I{const C=I,E=Math.ceil(B/b)*b;return I+=E,{base:C,count:B}});return{maxSplats:I,mapping:g}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():LA.getEmptyArray}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.maxSplats!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:I,depth:g}=iA(this.maxSplats);this.source=new a.DataArrayTexture(this.packedArray,A,I,g),this.source.format=a.RGBAIntegerFormat,this.source.type=a.UnsignedIntType,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}prepareProgramMaterial(A){let I=LA.generatorProgram.get(A);if(!I){const B=HA({index:"int"},{},({index:C},E,{roots:i})=>{A.inputs.index=C;const o=A.outputs.gsplat,D=DB(o,this.dynoRgbMinMaxLnScaleMinMax);i.push(D)});LA.programTemplate||(LA.programTemplate=new Rg(eg().computeUvec4Template)),I=new sQ({graph:B,inputs:{index:"_index"},outputs:{output:"target"},template:LA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),LA.generatorProgram.set(A,I)}const g=I.prepareMaterial();return LA.fullScreenQuad.material=g,{program:I,material:g}}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}generate({generator:A,base:I,count:g,renderer:B}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(I+g>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const i=this.saveRenderState(B),o=Math.ceil((I+g)/b)*b,D=b*XA;for(E.uniforms.targetBase.value=I,E.uniforms.targetCount.value=g;Iawait D.call(I?"qualityLodPackedSplats":"tinyLodPackedSplats",{numSplats:this.numSplats,packedArray:B,extra:E,lodBase:g,rgba:C,encoding:this.splatEncoding??BQ})),o=new LA(i);this.lodSplats&&this.lodSplats.dispose(),this.lodSplats=o,this.nonLod=!0,this.lod=I?"quality":!0}extractSplats(A,I){const g=iA(A.length).maxSplats,B=new LA({maxSplats:g});for(let C=0;C>>16)*.61803398875;i=i-Math.floor(i);const o=Math.max(0,Math.min(1,Math.abs(i*6-3)-1)),D=Math.max(0,Math.min(1,Math.abs(i*6+1)-1)),w=Math.max(0,Math.min(1,Math.abs(i*6-1)-1));E.color.r*=o,E.color.g*=D,E.color.b*=w}B.pushSplat(E.center,E.scales,E.quaternion,E.opacity,E.color)}return B}};LA.getEmptyArray=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),LA.programTemplate=null,LA.generatorProgram=new WeakMap,LA.fullScreenQuad=new _Q.FullScreenQuad(new a.RawShaderMaterial({visible:!1})),LA.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),LA.emptyUint32x2=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*2),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RG32UI",E.needsUpdate=!0,E})();let wI=LA;class xo extends q{constructor({packedSplats:A}={}){super({key:"packedSplats",type:CQ,globals:()=>[EQ],value:{textureArray:wI.getEmptyArray,numSplats:0,rgbMinMaxLnScaleMinMax:new a.Vector4(0,1,fA,uA),lodOpacity:!1},update:I=>{var g,B,C,E,i,o,D,w,s,t,G,c;return I.textureArray=((g=this.packedSplats)==null?void 0:g.getTexture())??wI.getEmptyArray,I.numSplats=((B=this.packedSplats)==null?void 0:B.numSplats)??0,I.rgbMinMaxLnScaleMinMax.set(((E=(C=this.packedSplats)==null?void 0:C.splatEncoding)==null?void 0:E.rgbMin)??0,((o=(i=this.packedSplats)==null?void 0:i.splatEncoding)==null?void 0:o.rgbMax)??1,((w=(D=this.packedSplats)==null?void 0:D.splatEncoding)==null?void 0:w.lnScaleMin)??fA,((t=(s=this.packedSplats)==null?void 0:s.splatEncoding)==null?void 0:t.lnScaleMax)??uA),I.lodOpacity=((c=(G=this.packedSplats)==null?void 0:G.splatEncoding)==null?void 0:c.lodOpacity)??!1,I}}),this.packedSplats=A}}const jG=wA(` vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { // Extract sint7 values packed into 2 x uint32 vec3 sh1_0 = vec3(ivec3( @@ -2001,7 +1523,7 @@ void main() { + sh1_2 * (-0.4886025 * viewDir.x); return rgb * (sh1Max / 63.0); } -`),UR=oA(` +`),zG=wA(` vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { // Extract sint8 values packed into 4 x uint32 vec3 sh2_0 = vec3(ivec3( @@ -2037,7 +1559,7 @@ void main() { + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); return rgb * (sh2Max / 127.0); } -`),tR=oA(` +`),_G=wA(` vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { // Extract sint6 values packed into 4 x uint32 vec3 sh3_0 = vec3(ivec3( @@ -2092,43 +1614,252 @@ void main() { + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); return rgb * (sh3Max / 31.0); } -`);function vw({coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3Texture:C,shMax:E}){return new d({inTypes:{coord:"ivec3",viewDir:"vec3",numSh:"int",sh1Texture:"usampler2DArray",sh2Texture:"usampler2DArray",sh3Texture:"usampler2DArray",shMax:"vec3"},outTypes:{rgb:"vec3"},inputs:{coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3Texture:C,shMax:E},globals:()=>[JR,UR,tR],statements:({inputs:D,outputs:i})=>{const w=["vec3 rgb = vec3(0.0);"];return D.sh1Texture&&(w.push(...z(` - if (${D.numSh} >= 1) { - vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0).rg, ${D.viewDir}, ${D.shMax}.x); +`);function qo({coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3Texture:C,shMax:E}){return new l({inTypes:{coord:"ivec3",viewDir:"vec3",numSh:"int",sh1Texture:"usampler2DArray",sh2Texture:"usampler2DArray",sh3Texture:"usampler2DArray",shMax:"vec3"},outTypes:{rgb:"vec3"},inputs:{coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3Texture:C,shMax:E},globals:()=>[jG,zG,_G],statements:({inputs:i,outputs:o})=>{const D=["vec3 rgb = vec3(0.0);"];return i.sh1Texture&&(D.push(...z(` + if (${i.numSh} >= 1) { + vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0).rg, ${i.viewDir}, ${i.shMax}.x); rgb += sh1Rgb; - `)),D.sh2Texture&&(w.push(...z(` - if (${D.numSh} >= 2) { - vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${D.sh2Texture}, ${D.coord}, 0), ${D.viewDir}, ${D.shMax}.y); + `)),i.sh2Texture&&(D.push(...z(` + if (${i.numSh} >= 2) { + vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${i.sh2Texture}, ${i.coord}, 0), ${i.viewDir}, ${i.shMax}.y); rgb += sh2Rgb; - `)),D.sh3Texture&&w.push(...z(` - if (${D.numSh} >= 3) { - vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${D.sh3Texture}, ${D.coord}, 0), ${D.viewDir}, ${D.shMax}.z); + `)),i.sh3Texture&&D.push(...z(` + if (${i.numSh} >= 3) { + vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${i.sh3Texture}, ${i.coord}, 0), ${i.viewDir}, ${i.shMax}.z); rgb += sh3Rgb; } - `)),w.push("}")),w.push("}")),w.push(`${i.rgb} = rgb;`),w}}).outputs}const UI=class UI{constructor(A){if(this.lastTime=null,this.encodeLinear=!1,this.superXY=1,this.display=null,this.sorting=null,this.pending=null,this.sortingCheck=!1,this.readback16=new Uint16Array(0),this.readback32=new Uint32Array(0),this.spark=A.spark,this.camera=A.camera,this.viewToWorld=A.viewToWorld??new G.Matrix4,A.target){const{width:I,height:g,doubleBuffer:B}=A.target,C=Math.max(1,Math.min(4,A.target.superXY??1));if(this.superXY=C,I*C>8192||g*C>8192)throw new Error("Target size too large");this.target=new G.WebGLRenderTarget(I*C,g*C,{format:G.RGBAFormat,type:G.UnsignedByteType,colorSpace:G.SRGBColorSpace}),B&&(this.back=new G.WebGLRenderTarget(I*C,g*C,{format:G.RGBAFormat,type:G.UnsignedByteType,colorSpace:G.SRGBColorSpace})),this.encodeLinear=!0}this.onTextureUpdated=A.onTextureUpdated,this.sortRadial=A.sortRadial??!0,this.sortDistance=A.sortDistance,this.sortCoorient=A.sortCoorient,this.depthBias=A.depthBias,this.sort360=A.sort360,this.sort32=A.sort32,this.stochastic=A.stochastic??!1,this.orderingFreelist=new MC({allocate:I=>new Uint32Array(I),valid:(I,g)=>I.length===g}),this.autoUpdate=!1,this.setAutoUpdate(A.autoUpdate??!1)}dispose(){var A;this.setAutoUpdate(!1),this.target&&(this.target.dispose(),this.target=void 0),this.back&&(this.back.dispose(),this.back=void 0),this.display&&(this.spark.releaseAccumulator(this.display.accumulator),this.display.geometry.dispose(),this.display=null),(A=this.pending)!=null&&A.accumulator&&(this.spark.releaseAccumulator(this.pending.accumulator),this.pending=null)}setAutoUpdate(A){!this.autoUpdate&&A?this.spark.autoViewpoints.push(this):this.autoUpdate&&!A&&(this.spark.autoViewpoints=this.spark.autoViewpoints.filter(I=>I!==this)),this.autoUpdate=A}async prepare({scene:A,camera:I,viewToWorld:g,update:B,forceOrigin:C}){for(g?this.viewToWorld=g:(this.camera=I??this.camera,this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone()));B??!0;){const D=C?this.viewToWorld:this.spark.matrixWorld;if(this.spark.updateInternal({scene:A,originToWorld:D}))break;await new Promise(w=>setTimeout(w,10))}const E=this.spark.active;E.refCount+=1,await this.sortUpdate({accumulator:E,viewToWorld:this.viewToWorld}),this.spark.releaseAccumulator(E)}renderTarget({scene:A,camera:I}){var C;const g=this.back??this.target;if(!g)throw new Error("Must initialize SparkViewpoint with target");if(I=I??this.camera,!I)throw new Error("Must provide camera");if(I instanceof G.PerspectiveCamera){const E=new G.PerspectiveCamera().copy(I,!1);E.aspect=g.width/g.height,E.updateProjectionMatrix(),I=E}this.viewToWorld=I.matrixWorld.clone();const B=this.spark.renderer.getRenderTarget();try{this.spark.renderer.setRenderTarget(g),this.spark.prepareViewpoint(this),this.spark.renderer.render(A,I)}finally{this.spark.prepareViewpoint(this.spark.defaultView),this.spark.renderer.setRenderTarget(B)}g!==this.target&&([this.target,this.back]=[this.back,this.target]),(C=this.onTextureUpdated)==null||C.call(this,g.texture)}async readTarget(){if(!this.target)throw new Error("Must initialize SparkViewpoint with target");const{width:A,height:I}=this.target,g=A*I*4;(!this.superPixels||this.superPixels.length0){const{reader:i,doubleSortReader:w,sort32Reader:s,dynoSortRadial:o,dynoOrigin:y,dynoDirection:h,dynoDepthBias:k,dynoSort360:R,dynoSplats:F}=UI.makeSorter(),a=this.sort32??!1;let S;if(a)this.readback32=i.ensureBuffer(C,this.readback32),S=this.readback32;else{const t=Math.ceil(C/2);this.readback16=i.ensureBuffer(t,this.readback16),S=this.readback16}const M=A.toWorld.clone().invert(),c=I.clone().premultiply(M);o.value=this.sort360?!0:this.sortRadial,y.value.set(0,0,0).applyMatrix4(c),h.value.set(0,0,-1).applyMatrix4(c).sub(y.value).normalize(),k.value=this.depthBias??1,R.value=this.sort360??!1,F.packedSplats=A.splats;const N=a?s:w,U=a?B:Math.ceil(B/2);await i.renderReadback({renderer:this.spark.renderer,reader:N,count:U,readback:S});const J=await qI(async t=>{const H=a?"sort32Splats":"sortDoubleSplats";return t.call(H,{maxSplats:C,numSplats:B,readback:S,ordering:D})});a?this.readback32=J.readback:this.readback16=J.readback,D=J.ordering,E=J.activeSplats}this.updateDisplay({accumulator:A,viewToWorld:I,ordering:D,activeSplats:E,displayed:g}),this.sortingCheck=!1}updateDisplay({accumulator:A,viewToWorld:I,ordering:g,activeSplats:B,displayed:C=!1}){if(!this.display)A.refCount+=1,this.display={accumulator:A,viewToWorld:I,geometry:new qQ(g,B)};else{!C&&A!==this.display.accumulator&&(A.refCount+=1,this.spark.releaseAccumulator(this.display.accumulator),this.display.accumulator=A),this.display.viewToWorld=I;const E=this.display.geometry.ordering;E.length===g.length?this.display.geometry.update(g,B):(this.display.geometry.dispose(),this.display.geometry=new qQ(g,B)),this.orderingFreelist.free(E)}this.spark.viewpoint===this&&this.spark.prepareViewpoint(this)}static makeSorter(){if(!UI.dynos){const A=new uI({value:!0}),I=new iI({value:new G.Vector3}),g=new iI({value:new G.Vector3}),B=new bI({value:1}),C=new uI({value:!1}),E=new KB,D=new TI,i=cA({index:"int"},{rgba8:"vec4"},({index:s})=>{if(!s)throw new Error("No index");const o={sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C},y=kA(s,v("int",2)),h=$I(E,y),k=nQ({gsplat:h,...o}),R=$I(E,xA(y,v("int",1))),F=nQ({gsplat:R,...o}),a=yI({vectorType:"vec2",x:k,y:F});return{rgba8:mQ(gi(a))}}),w=cA({index:"int"},{rgba8:"vec4"},({index:s})=>{if(!s)throw new Error("No index");const o={sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C},y=$I(E,s),h=nQ({gsplat:y,...o});return{rgba8:mQ(Ii(h))}});UI.dynos={dynoSortRadial:A,dynoOrigin:I,dynoDirection:g,dynoDepthBias:B,dynoSort360:C,dynoSplats:E,reader:D,doubleSortReader:i,sort32Reader:w}}return UI.dynos}};UI.EMPTY_TEXTURE=new G.Texture,UI.dynos=null;let Lg=UI;const HR=oA(` - float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) { - if (!isGsplatActive(gsplat.flags)) { - return INFINITY; - } + `)),D.push("}")),D.push("}")),D.push(`${o.rgb} = rgb;`),D}}).outputs}class eB extends RA.Loader{constructor(A){super(A),this.fileLoader=new RA.FileLoader(A)}load(A,I,g,B){return this.loadInternal({url:A,onLoad:I,onProgress:g,onError:B})}async loadAsync(A,I){return new Promise((g,B)=>{this.load(A,C=>{g(C)},I,B)})}parse(A){return new jA({packedSplats:A})}loadInternal({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:i,streamLength:o,onLoad:D,onProgress:w,onError:s,lod:t,nonLod:G,lodAbove:c,lodBase:h}){B instanceof ArrayBuffer&&(B=new Uint8Array(B));const y=B?void 0:this.manager.resolveURL((this.path??"")+(g??""));let S=i==null?void 0:i.getReader();this.manager.itemStart(y??""),aQ.withWorker(async F=>{const e=(A==null?void 0:A.lod)??(I==null?void 0:I.lod);e&&(t=e);const k=(A==null?void 0:A.nonLod)??(I==null?void 0:I.nonLod);k!==void 0&&(G=k);const R=async M=>{const{loaded:J,total:H}=M;if(J!==void 0&&w&&w(new ProgressEvent("progress",{lengthComputable:H!==0,loaded:J,total:H})),M.nextChunk){let n;if(!S)n=new Uint8Array(0);else{const{done:L,value:x}=await S.read();L?(S.releaseLock(),S=void 0,n=new Uint8Array(0)):n=x}F.call("nextChunk",{chunk:n})}},N=y?new URL(y,window.location.href).toString():void 0,U=await F.call(I?"loadExtSplats":"loadPackedSplats",{url:N,requestHeader:this.requestHeader,withCredentials:this.withCredentials,fileBytes:B==null?void 0:B.slice(),fileType:C,pathName:y||E,chunked:i!==void 0,chunkedLength:o,encoding:A==null?void 0:A.splatEncoding,lod:t,lodBase:h,nonLod:G,lodAbove:c},{onStatus:R});if(U.lodSplats&&(I?U.lodSplats=new QI({...U.lodSplats}):U.lodSplats=new wI({...U.lodSplats,maxSplats:A==null?void 0:A.maxSplats})),I){const M={...U};I.initialize(M),D==null||D(I)}else{const M={...U};A?(A.initialize(M),D==null||D(A)):D==null||D(new wI(M))}}).catch(F=>{this.manager.itemError(y??""),s==null||s(F)}).finally(()=>{this.manager.itemEnd(y??"")})}async loadInternalAsync({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:i,streamLength:o,onProgress:D,lod:w,nonLod:s,lodAbove:t,lodBase:G}){return new Promise((c,h)=>{this.loadInternal({packedSplats:A,extSplats:I,url:g,fileBytes:B,fileType:C,fileName:E,stream:i,streamLength:o,onLoad:c,onProgress:D,onError:h,lod:w,nonLod:s,lodAbove:t,lodBase:G})})}}function NB(Q){const I=new DataView(Q.buffer).getUint32(0,!0);if((I&16777215)===7957616)return MA.PLY;if((I&16777215)===559903){const g=fE(Q,4);return new DataView(g.buffer).getUint32(0,!0)===1347635022?MA.SPZ:void 0}if(I===67324752)return Ih(Q)?MA.PCSOGSZIP:void 0;if(I===809779538)return MA.RAD}function $G(Q){const A=Q.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function po(Q){const A=$G(Q);if(A==="ply")return MA.PLY;if(A==="spz")return MA.SPZ;if(A==="splat")return MA.SPLAT;if(A==="ksplat")return MA.KSPLAT;if(A==="sog")return MA.PCSOGSZIP;if(A==="rad")return MA.RAD}function Ah(Q){return fo(Q)!==void 0}function fo(Q){try{let A;if(typeof Q=="string")A=Q;else{const B=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;if(B.length>65536)return;A=new TextDecoder().decode(B)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;const g=I.version===2;for(const B of["means","scales","quats","sh0"]){if(!I[B]||typeof I[B]!="object"||Array.isArray(I[B]))return;if(g){if(!I[B].files||(B==="scales"||B==="sh0")&&!I[B].codebook||B==="means"&&(!I[B].mins||!I[B].maxs))return}else if(!I[B].shape||!I[B].files||B!=="quats"&&(!I[B].mins||!I[B].maxs))return}return I}catch{return}}function Ih(Q){try{const A=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let I=null;const g=vw(A,{filter:({name:C})=>C.split(/[\\/]/).pop()==="meta.json"?(I=C,!0):!1});if(!I)return;const B=fo(g[I]);return B?{name:I,json:B}:void 0}catch{return}}class gh{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=iA(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),C=new Float32Array(I*4),E=new Float32Array(I),i=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),C.set(this.quaternions),E.set(this.opacities),i.set(this.colors),this.centers=g,this.scales=B,this.quaternions=C,this.opacities=E,this.colors=i,this.sh1){const o=new Float32Array(I*9);o.set(this.sh1),this.sh1=o}if(this.sh2){const o=new Float32Array(I*15);o.set(this.sh2),this.sh2=o}if(this.sh3){const o=new Float32Array(I*21);o.set(this.sh3),this.sh3=o}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,C){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=C}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}const YA=class YA{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.extra={},this.maxSh=3,this.isInitialized=!1,this.extArrays=[new Uint32Array(0),new Uint32Array(0)],this.textures=[YA.emptyTexture,YA.emptyTexture],this.extra={},this.dyno=new Qh({extSplats:this}),this.dynoNumSh=new $A({key:"numSh",value:0,update:()=>Math.min(this.getNumSh(),this.maxSh)}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,this.extra={},this.maxSplats=A.maxSplats??0,this.lod=A.lod,this.nonLod=A.nonLod,A.url||A.fileBytes||A.stream||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){this.extra=A.extra??{},this.lodSplats=A.lodSplats,A.extArrays?(this.extArrays=A.extArrays,this.maxSplats=Math.floor(Math.min(this.extArrays[0].length/4,this.extArrays[1].length/4)),this.numSplats=A.numSplats??this.maxSplats,this.maxSplats=Math.floor(this.maxSplats/b)*b,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY),this.updateTextures()):(this.maxSplats=A.maxSplats??0,this.numSplats=0,this.extArrays=[new Uint32Array(0),new Uint32Array(0)])}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,construct:o,lod:D,nonLod:w,lodAbove:s}=A;this.lod=D,this.nonLod=w;const t=new eB;if((g||I||E)&&await t.loadInternalAsync({extSplats:this,url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,onProgress:A.onProgress,lodAbove:s}),o){const G=o(this);G instanceof Promise&&await G}}dispose(){this.textures[0]!==YA.emptyTexture&&(this.textures[0].dispose(),this.textures[0].source.data=null,this.textures[0]=YA.emptyTexture),this.textures[1]!==YA.emptyTexture&&(this.textures[1].dispose(),this.textures[1].source.data=null,this.textures[1]=YA.emptyTexture),this.extArrays=[new Uint32Array(0),new Uint32Array(0)];for(const A in this.extra){const I=this.extra[A];if(I instanceof q){const g=I.value;g!=null&&g.isTexture&&(g.dispose(),g.source.data=null)}}this.extra={},this.disposeLodSplats()}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return Math.min(this.getNumSh(),this.maxSh)>0}getNumSh(){return this.extra.sh1?this.extra.sh2?!this.extra.sh3a||!this.extra.sh3b?2:3:1:0}setMaxSh(A){this.maxSh=A}fetchSplat({index:A,viewOrigin:I}){let g=QC(this.dyno,A);if(this.hasRgbDir()&&I){const B=mA(g).outputs.center,C=kg(EI(B,I)),{sh1Texture:E,sh2Texture:i,sh3TextureA:o,sh3TextureB:D}=this.ensureShTextures();let{rgb:w}=uo({coord:CB(A),viewDir:C,numSh:this.dynoNumSh,sh1Texture:E,sh2Texture:i,sh3TextureA:o,sh3TextureB:D});w=qA(w,mA(g).outputs.rgb),g=CI({gsplat:g,rgb:w})}return g}ensureShTextures(){if(!this.extra.sh1)return{};let A=this.extra.sh1Texture;if(!A){let C=this.extra.sh1;const{width:E,height:i,depth:o,maxSplats:D}=iA(C.length/4);if(C.lengthg){this.maxSplats=iA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4),C=new Uint32Array(this.maxSplats*4);this.extArrays[0]&&(B.set(this.extArrays[0]),C.set(this.extArrays[1])),this.extArrays[0]=B,this.extArrays[1]=C}return this.extArrays}getSplat(A){if(A>=this.numSplats)throw new Error("Invalid index");return zg(this.extArrays,A)}setSplat(A,I,g,B,C,E){const i=this.ensureSplats(A+1);fQ(i,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,C,E.r,E.g,E.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,C){const E=this.ensureSplats(this.numSplats+1);fQ(E,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,C.r,C.g,C.b),++this.numSplats}forEachSplat(A){if(this.numSplats)for(let I=0;I>>16)*.61803398875;i=i-Math.floor(i);const o=Math.max(0,Math.min(1,Math.abs(i*6-3)-1)),D=Math.max(0,Math.min(1,Math.abs(i*6+1)-1)),w=Math.max(0,Math.min(1,Math.abs(i*6-1)-1));E.color.r*=o,E.color.g*=D,E.color.b*=w}B.pushSplat(E.center,E.scales,E.quaternion,E.opacity,E.color)}return B}disposeLodSplats(){this.lodSplats&&(this.lodSplats.dispose(),this.lodSplats=void 0)}async createLodSplats({rgbaArray:A,quality:I}={}){const g=typeof this.lod=="number"?Math.max(1.1,Math.min(2,this.lod)):I?1.75:1.5,B=[this.extArrays[0].slice(),this.extArrays[1].slice()],C=A?(await A.getArray()).slice():void 0,E={sh1:this.extra.sh1?this.extra.sh1.slice():void 0,sh2:this.extra.sh2?this.extra.sh2.slice():void 0,sh3:this.extra.sh3?this.extra.sh3.slice():void 0},i=await aQ.withWorker(async D=>await D.call(I?"qualityLodExtSplats":"tinyLodExtSplats",{numSplats:this.numSplats,extArrays:B,extra:E,lodBase:g,rgba:C})),o=new YA(i);this.lodSplats&&this.lodSplats.dispose(),this.lodSplats=o,this.nonLod=!0,this.lod=I?"quality":!0}};YA.emptyArray=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),YA.emptyTexture=HI(null,1,1,1,a.RGBAIntegerFormat,a.UnsignedIntType,"RGBA32UI"),YA.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})();let QI=YA;class Qh extends q{constructor({extSplats:A}={}){super({key:"extSplats",type:BB,globals:()=>[EB],value:{textureArray1:QI.emptyTexture,textureArray2:QI.emptyTexture,numSplats:0},update:I=>{var g,B,C;return I.textureArray1=((g=this.extSplats)==null?void 0:g.textures[0])??QI.emptyTexture,I.textureArray2=((B=this.extSplats)==null?void 0:B.textures[1])??QI.emptyTexture,I.numSplats=((C=this.extSplats)==null?void 0:C.numSplats)??0,I}}),this.extSplats=A}}const Bh=wA(` + vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packedData.x); + vec3 sh1_1 = decodeExtRgb(packedData.y); + vec3 sh1_2 = decodeExtRgb(packedData.z); - vec3 center = gsplat.center - sortOrigin; - float biasedDepth = dot(center, sortDirection) + sortDepthBias; - if (!sort360 && (biasedDepth <= 0.0)) { - return INFINITY; - } + return sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + } +`),Ch=wA(` + vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packed1.x); + vec3 sh1_1 = decodeExtRgb(packed1.y); + vec3 sh1_2 = decodeExtRgb(packed1.z); + + vec3 sh2_0 = decodeExtRgb(packed1.w); + vec3 sh2_1 = decodeExtRgb(packed2.x); + vec3 sh2_2 = decodeExtRgb(packed2.y); + vec3 sh2_3 = decodeExtRgb(packed2.z); + vec3 sh2_4 = decodeExtRgb(packed2.w); + + vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + + vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + + return sh1Rgb + sh2Rgb; + } +`),Eh=wA(` + vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { + vec3 sh3_0 = decodeExtRgb(packedA.x); + vec3 sh3_1 = decodeExtRgb(packedA.y); + vec3 sh3_2 = decodeExtRgb(packedA.z); + vec3 sh3_3 = decodeExtRgb(packedA.w); + vec3 sh3_4 = decodeExtRgb(packedB.x); + vec3 sh3_5 = decodeExtRgb(packedB.y); + vec3 sh3_6 = decodeExtRgb(packedB.z); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; - return sortRadial ? length(center) : biasedDepth; + return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); } -`);function nQ({gsplat:Q,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C}){return EQ({inTypes:{gsplat:Z,sortRadial:"bool",sortOrigin:"vec3",sortDirection:"vec3",sortDepthBias:"float",sort360:"bool"},outTypes:{metric:"float"},globals:()=>[LA,HR],inputs:{gsplat:Q,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C},statements:({inputs:E,outputs:D})=>{const{gsplat:i,sortRadial:w,sortOrigin:s,sortDirection:o,sortDepthBias:y,sort360:h}=E;return z(` - ${D.metric} = computeSort(${i}, ${w}, ${s}, ${o}, ${y}, ${h}); - `)}}).outputs.metric}class Xg{constructor(){this.splats=new _A,this.toWorld=new G.Matrix4,this.mapping=[],this.refCount=0,this.splatsVersion=-1,this.mappingVersion=-1}ensureGenerate(A){this.splats.ensureGenerate(A)&&(this.mapping=[])}generateSplats({renderer:A,modifier:I,generators:g,forceUpdate:B,originToWorld:C}){const E=this.mapping.reduce((w,s)=>(w.set(s.node,s),w),new Map);let D=0,i=0;for(const{node:w,generator:s,version:o,base:y,count:h}of g){const k=E.get(w);if((B||s!==(k==null?void 0:k.generator)||o!==(k==null?void 0:k.version)||y!==(k==null?void 0:k.base)||h!==(k==null?void 0:k.count))&&s&&h>0){const R=I.apply(s);try{this.splats.generate({generator:R,base:y,count:h,renderer:A})}catch(F){w.generator=void 0,w.generatorError=F}D+=1}i=Math.max(i,y+h)}return this.splats.numSplats=i,this.toWorld.copy(C),this.mapping=g,D!==0}hasCorrespondence(A){return this.mapping.length!==A.mapping.length?!1:this.mapping.every(({node:I,base:g,count:B},C)=>{const{node:E,base:D,count:i}=A.mapping[C];return I===E&&g===D&&B===i})}}const XB=5,tA=class tA extends G.Mesh{constructor(A){const I=tA.makeUniforms(),g=gg(),B=A.premultipliedAlpha??!0,C=new G.ShaderMaterial({glslVersion:G.GLSL3,vertexShader:g.oldSplatVertex,fragmentShader:g.oldSplatFragment,uniforms:I,premultipliedAlpha:B,transparent:!0,depthTest:!0,depthWrite:!1,side:G.DoubleSide});super(WB,C),this.splatTexture=null,this.autoViewpoints=[],this.rotateToAccumulator=new VI({value:new G.Quaternion}),this.translateToAccumulator=new iI({value:new G.Vector3}),this.lastFrame=-1,this.lastUpdateTime=null,this.defaultCameras=[],this.lastStochastic=null,this.pendingUpdate={scene:null,originToWorld:new G.Matrix4,timeoutId:-1},this.envViewpoint=null,this.frustumCulled=!1,this.renderer=A.renderer,this.material=C,this.uniforms=I;const E=cA({gsplat:Z},{gsplat:Z},({gsplat:D})=>{if(!D)throw new Error("gsplat not defined");return D=GB(D,{rotate:this.rotateToAccumulator,translate:this.translateToAccumulator}),{gsplat:D}});this.modifier=new Xw(E),this.premultipliedAlpha=B,this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!1,this.needsUpdate=!1,this.originDistance=A.originDistance??1,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.minPixelRadius=A.minPixelRadius??0,this.maxPixelRadius=A.maxPixelRadius??512,this.minAlpha=A.minAlpha??.5*(1/255),this.enable2DGS=A.enable2DGS??!1,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.focalDistance=A.focalDistance??0,this.apertureAngle=A.apertureAngle??0,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.focalAdjustment=A.focalAdjustment??1,this.splatEncoding=A.splatEncoding??{...eg},this.active=new Xg,this.active.refCount=1,this.accumulatorCount=1,this.freeAccumulators=[];for(let D=0;D<1;++D)this.freeAccumulators.push(new Xg),this.accumulatorCount+=1;this.defaultView=new Lg({...A.view,autoUpdate:!0,spark:this}),this.viewpoint=this.defaultView,this.prepareViewpoint(this.viewpoint),this.clock=A.clock?wB(A.clock):new G.Clock}static makeUniforms(){return{renderSize:{value:new G.Vector2},near:{value:.1},far:{value:1e3},numSplats:{value:0},renderToViewQuat:{value:new G.Quaternion},renderToViewPos:{value:new G.Vector3},maxStdDev:{value:1},minPixelRadius:{value:0},maxPixelRadius:{value:512},minAlpha:{value:.00196078431372549},stochastic:{value:!1},enable2DGS:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},focalDistance:{value:0},apertureAngle:{value:0},falloff:{value:1},clipXY:{value:1.4},focalAdjustment:{value:1},splatTexEnable:{value:!1},splatTexture:{type:"t",value:tA.EMPTY_SPLAT_TEXTURE},splatTexMul:{value:new G.Matrix2},splatTexAdd:{value:new G.Vector2},splatTexNear:{value:.1},splatTexFar:{value:1e3},splatTexMid:{value:0},packedSplats:{type:"t",value:_A.getEmptyArray},rgbMinMaxLnScaleMinMax:{value:new G.Vector4},time:{value:0},deltaTime:{value:0},encodeLinear:{value:!1},debugFlag:{value:!1}}}canAllocAccumulator(){return this.freeAccumulators.length>0||this.accumulatorCount=XB)return null;A=new Xg,this.accumulatorCount+=1}return A.refCount=1,A}releaseAccumulator(A){A.refCount-=1,A.refCount===0&&this.freeAccumulators.push(A)}newViewpoint(A){return new Lg({...A,spark:this})}onBeforeRender(A,I,g){var h,k;const B=this.time??this.clock.getElapsedTime(),C=B-(this.viewpoint.lastTime??B);this.viewpoint.lastTime=B;const E=A.info.render.frame,D=E!==this.lastFrame;this.lastFrame=E;const i=this.viewpoint;if(i===this.defaultView){if(D)if(!A.xr.isPresenting)this.defaultView.viewToWorld=g.matrixWorld.clone(),this.defaultCameras=[this.defaultView.viewToWorld];else{const R=A.xr.getCamera().cameras;this.defaultCameras=R.map(F=>F.matrixWorld),this.defaultView.viewToWorld=LR(this.defaultCameras)??new G.Matrix4}this.autoUpdate&&this.update({scene:I,viewToWorld:this.defaultView.viewToWorld})}if(D&&(this.material.premultipliedAlpha!==this.premultipliedAlpha&&(this.material.premultipliedAlpha=this.premultipliedAlpha,this.material.needsUpdate=!0),this.uniforms.time.value=B,this.uniforms.deltaTime.value=C,this.uniforms.debugFlag.value=performance.now()/1e3%2<1,i.display&&i.stochastic&&(this.geometry.instanceCount=this.uniforms.numSplats.value)),i.target)this.uniforms.renderSize.value.set(i.target.width,i.target.height);else{const R=A.getDrawingBufferSize(this.uniforms.renderSize.value);if(R.x===1&&R.y===1){const F=(h=A.xr.getSession())==null?void 0:h.renderState.baseLayer;F&&(R.x=F.framebufferWidth,R.y=F.framebufferHeight)}}const w=g;if(this.uniforms.near.value=w.near,this.uniforms.far.value=w.far,this.uniforms.encodeLinear.value=i.encodeLinear,this.uniforms.maxStdDev.value=this.maxStdDev,this.uniforms.minPixelRadius.value=this.minPixelRadius,this.uniforms.maxPixelRadius.value=this.maxPixelRadius,this.uniforms.minAlpha.value=this.minAlpha,this.uniforms.stochastic.value=i.stochastic,this.uniforms.enable2DGS.value=this.enable2DGS,this.uniforms.preBlurAmount.value=this.preBlurAmount,this.uniforms.blurAmount.value=this.blurAmount,this.uniforms.focalDistance.value=this.focalDistance,this.uniforms.apertureAngle.value=this.apertureAngle,this.uniforms.falloff.value=this.falloff,this.uniforms.clipXY.value=this.clipXY,this.uniforms.focalAdjustment.value=this.focalAdjustment,this.lastStochastic!==!i.stochastic&&(this.lastStochastic=!i.stochastic,this.material.transparent=!i.stochastic,this.material.depthWrite=i.stochastic,this.material.needsUpdate=!0),this.splatTexture){const{enable:R,texture:F,multiply:a,add:S,near:M,far:c,mid:N}=this.splatTexture;R&&F?(this.uniforms.splatTexEnable.value=!0,this.uniforms.splatTexture.value=F,a?this.uniforms.splatTexMul.value.fromArray(a.elements):this.uniforms.splatTexMul.value.set(.5/this.maxStdDev,0,0,.5/this.maxStdDev),this.uniforms.splatTexAdd.value.set((S==null?void 0:S.x)??.5,(S==null?void 0:S.y)??.5),this.uniforms.splatTexNear.value=M??this.uniforms.near.value,this.uniforms.splatTexFar.value=c??this.uniforms.far.value,this.uniforms.splatTexMid.value=N??0):(this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=tA.EMPTY_SPLAT_TEXTURE)}else this.uniforms.splatTexEnable.value=!1,this.uniforms.splatTexture.value=tA.EMPTY_SPLAT_TEXTURE;const s=((k=i.display)==null?void 0:k.accumulator.toWorld)??new G.Matrix4,o=g.matrixWorld.clone().invert();s.clone().premultiply(o).decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new G.Vector3)}prepareViewpoint(A){var I,g,B,C;if(this.viewpoint=A??this.viewpoint,this.viewpoint.display){const{accumulator:E,geometry:D}=this.viewpoint.display;this.uniforms.numSplats.value=E.splats.numSplats,this.uniforms.packedSplats.value=E.splats.getTexture(),this.uniforms.rgbMinMaxLnScaleMinMax.value.set(((I=E.splats.splatEncoding)==null?void 0:I.rgbMin)??0,((g=E.splats.splatEncoding)==null?void 0:g.rgbMax)??1,((B=E.splats.splatEncoding)==null?void 0:B.lnScaleMin)??fA,((C=E.splats.splatEncoding)==null?void 0:C.lnScaleMax)??bA),this.geometry=D,this.material.transparent=!this.viewpoint.stochastic,this.material.depthWrite=this.viewpoint.stochastic,this.material.needsUpdate=!0}else this.uniforms.numSplats.value=0,this.uniforms.packedSplats.value=_A.getEmptyArray,this.geometry=WB}update({scene:A,viewToWorld:I}){const g=this.matrixWorld;this.preUpdate?this.updateInternal({scene:A,originToWorld:g.clone(),viewToWorld:I}):(this.pendingUpdate.scene=A,this.pendingUpdate.originToWorld.copy(g),this.pendingUpdate.timeoutId===-1&&(this.pendingUpdate.timeoutId=setTimeout(()=>{const{scene:B,originToWorld:C}=this.pendingUpdate;this.pendingUpdate.scene=null,this.pendingUpdate.timeoutId=-1,this.updateInternal({scene:B,originToWorld:C,viewToWorld:I})&&this.renderer.getContext().flush()},1)))}updateInternal({scene:A,originToWorld:I,viewToWorld:g}){var k;if(!this.canAllocAccumulator())return!1;I||(I=this.active.toWorld),g=g??I.clone();const B=this.time??this.clock.getElapsedTime(),C=B-(this.lastUpdateTime??B);this.lastUpdateTime=B;const E=this.active.mapping.reduce((R,F)=>(R.set(F.node,F),R),new Map),{generators:D,visibleGenerators:i,globalEdits:w}=this.compileScene(A);for(const R of D)(k=R.frameUpdate)==null||k.call(R,{renderer:this.renderer,object:R,time:B,deltaTime:C,viewToWorld:g,globalEdits:w});const s=new Set(i.map(R=>R.uuid));for(const R of D){const F=E.get(R),S=R.generator&&s.has(R.uuid)?R.numSplats:0;(this.needsUpdate||R.generator!==(F==null?void 0:F.generator)||S!==(F==null?void 0:F.count))&&R.updateVersion()}const o=!zg({matrix1:I,matrix2:this.active.toWorld,maxDistance:this.originDistance}),y=this.needsUpdate||o||D.length!==E.size||D.some(R=>{var F;return R.version!==((F=E.get(R))==null?void 0:F.version)});this.needsUpdate=!1;let h=null;if(y){if(h=this.maybeAllocAccumulator(),!h)throw new Error("Unreachable");const R=!zg({matrix1:I,matrix2:h.toWorld,maxDistance:1e-5,minCoorient:.99999}),a=i.map((J,t)=>{const H=E.get(J);return H?[J.version-H.version,H.base,J]:[Number.POSITIVE_INFINITY,J.version,J]}).sort((J,t)=>J[0]!==t[0]?J[0]-t[0]:J[1]-t[1]).map(([J,t,H])=>H),S=a.map(J=>J.numSplats),{maxSplats:M,mapping:c}=h.splats.generateMapping(S),N=a.map((J,t)=>{const{base:H,count:K}=c[t];return{node:J,generator:J.generator,version:J.version,base:H,count:K}});I.clone().invert().decompose(this.translateToAccumulator.value,this.rotateToAccumulator.value,new G.Vector3),h.ensureGenerate(M),h.splats.splatEncoding={...this.splatEncoding},h.generateSplats({renderer:this.renderer,modifier:this.modifier,generators:N,forceUpdate:R,originToWorld:I}),h.splatsVersion=this.active.splatsVersion+1;const U=h.hasCorrespondence(this.active);h.mappingVersion=this.active.mappingVersion+(U?0:1),this.releaseAccumulator(this.active),this.active=h,this.prepareViewpoint()}return setTimeout(()=>{for(const R of this.autoViewpoints)R.autoPoll({accumulator:h??void 0})},1),!0}compileScene(A){const I=[];A.traverse(C=>{C instanceof YI&&I.push(C)});const g=[];A.traverseVisible(C=>{C instanceof YI&&g.push(C)});const B=new Set;return A.traverseVisible(C=>{if(C instanceof Qg){let E=C.parent;for(;E!=null&&!(E instanceof vA);)E=E.parent;E==null&&B.add(C)}}),{generators:I,visibleGenerators:g,globalEdits:Array.from(B)}}async renderEnvMap({renderer:A,scene:I,worldCenter:g,size:B=256,near:C=.1,far:E=1e3,hideObjects:D=[],update:i=!1}){var h,k;if(this.envViewpoint||(this.envViewpoint=this.newViewpoint({sort360:!0})),!tA.cubeRender||tA.cubeRender.target.width!==B||tA.cubeRender.near!==C||tA.cubeRender.far!==E){tA.cubeRender&&tA.cubeRender.target.dispose();const R=new G.WebGLCubeRenderTarget(B,{format:G.RGBAFormat,generateMipmaps:!0,minFilter:G.LinearMipMapLinearFilter}),F=new G.CubeCamera(C,E,R);tA.cubeRender={target:R,camera:F,near:C,far:E}}tA.pmrem||(tA.pmrem=new G.PMREMGenerator(A??this.renderer));const w=new G.Matrix4().setPosition(g);await((h=this.envViewpoint)==null?void 0:h.prepare({scene:I,viewToWorld:w,update:i}));const{target:s,camera:o}=tA.cubeRender;o.position.copy(g);const y=new Map;for(const R of D)y.set(R,R.visible),R.visible=!1;this.prepareViewpoint(this.envViewpoint),o.update(A??this.renderer,I),this.prepareViewpoint(this.defaultView);for(const[R,F]of y.entries())R.visible=F;return(k=tA.pmrem)==null?void 0:k.fromCubemap(s.texture).texture}recurseSetEnvMap(A,I){A.traverse(g=>{if(g instanceof G.Mesh)if(Array.isArray(g.material))for(const B of g.material)B instanceof G.MeshStandardMaterial&&(B.envMap=I);else g.material instanceof G.MeshStandardMaterial&&(g.material.envMap=I)})}getRgba({generator:A,rgba:I}){const g=this.active.mapping.find(({node:B})=>B===A);if(!g)throw new Error("Generator not found");return I=I??new IQ,I.fromPackedSplats({packedSplats:this.active.splats,base:g.base,count:g.count,renderer:this.renderer}),I}async readRgba({generator:A,rgba:I}){return I=this.getRgba({generator:A,rgba:I}),I.read()}};tA.cubeRender=null,tA.pmrem=null,tA.EMPTY_SPLAT_TEXTURE=new G.Data3DTexture;let jQ=tA;const WB=new qQ(new Uint32Array(1),0);cA({packedSplats:qg,index:"int"},{gsplat:Z},({packedSplats:Q,index:A})=>{if(!Q||!A)throw new Error("Invalid input");return{gsplat:$I(Q,A)}});function LR(Q){if(Q.length===0)return null;const A=new G.Vector3,I=new G.Quaternion,g=new G.Vector3,B=[],C=[];for(const E of Q)E.decompose(A,I,g),B.push(A),C.push(I);return new G.Matrix4().compose(YC(B),KC(C),new G.Vector3(1,1,1))}function YR(Q,A,I){const g=Math.floor(Q.length/32);if(g*32!==Q.length)throw new Error("Invalid .splat file size");const B=new Float32Array(Q.buffer);for(let C=0;C2)throw new Error(`Invalid .ksplat compression level: ${o}`);const y=D.getFloat32(36,!0)||-1.5,h=D.getFloat32(40,!0)||1.5;let k=4096+s*1024;for(let F=0;F=1?new Float32Array(3*3):void 0,GA=r>=2?new Float32Array(5*3):void 0,II=r>=3?new Float32Array(7*3):void 0,mA=J/2/H,SI=k+q,NI=k+n,_=new DataView(Q.buffer,NI,f),ZA=new Float32Array(Q.buffer,SI,U*3),YA=new Uint32Array(Q.buffer,k,L);let Dg=K,xg=Y;for(let VA=0;VA=xg+cI&&(Dg+=1,xg+=cI),RI=Dg}const SQ=o===0?_.getFloat32($+0,!0):(_.getUint16($+0,!0)-H)*mA+ZA[3*RI+0],NQ=o===0?_.getFloat32($+4,!0):(_.getUint16($+2,!0)-H)*mA+ZA[3*RI+1],cQ=o===0?_.getFloat32($+8,!0):(_.getUint16($+4,!0)-H)*mA+ZA[3*RI+2],MQ=o===0?_.getFloat32($+gA+0,!0):FA(_.getUint16($+gA+0,!0)),JQ=o===0?_.getFloat32($+gA+4,!0):FA(_.getUint16($+gA+2,!0)),Fo=o===0?_.getFloat32($+gA+8,!0):FA(_.getUint16($+gA+4,!0)),ao=o===0?_.getFloat32($+W+0,!0):FA(_.getUint16($+W+0,!0)),So=o===0?_.getFloat32($+W+4,!0):FA(_.getUint16($+W+2,!0)),No=o===0?_.getFloat32($+W+8,!0):FA(_.getUint16($+W+4,!0)),co=o===0?_.getFloat32($+W+12,!0):FA(_.getUint16($+W+6,!0)),Mo=_.getUint8($+u+0)/255,Jo=_.getUint8($+u+1)/255,Uo=_.getUint8($+u+2)/255,to=_.getUint8($+u+3)/255;if(I(VA,SQ,NQ,cQ,MQ,JQ,Fo,So,No,co,ao,to,Mo,Jo,Uo),r>=1&&wA){for(const[cI,ig]of sA.entries())wA[cI]=a($,ig);if(GA)for(const[cI,ig]of SA.entries())GA[cI]=a($,ig);if(II)for(const[cI,ig]of NA.entries())II[cI]=a($,ig);g==null||g(VA,wA,GA,II)}}k+=aA}}class zw{constructor({fileBytes:A}){this.version=-1,this.numSplats=0,this.shDegree=0,this.fractionalBits=0,this.flags=0,this.flagAntiAlias=!1,this.flagLod=!1,this.reserved=0,this.headerParsed=!1,this.parsed=!1,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new lC({fileBytes:this.fileBytes})}async parseHeader(){if(this.headerParsed)throw new Error("SPZ file header already parsed");const A=new DataView((await this.reader.read(16)).buffer);if(A.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=A.getUint32(4,!0),this.version<1||this.version>3)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=A.getUint32(8,!0),this.shDegree=A.getUint8(12),this.fractionalBits=A.getUint8(13),this.flags=A.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.flagLod=(this.flags&128)!==0,this.reserved=A.getUint8(15),this.headerParsed=!0,this.parsed=!1}async parseSplats(A,I,g,B,C,E,{childCounts:D,childStarts:i}={}){if(!this.headerParsed)throw new Error("SPZ file header must be parsed first");if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const w=await this.reader.read(this.numSplats*3*2),s=new Uint16Array(w.buffer);for(let o=0;o>8)/w,k=((s[y+5]<<24|s[y+4]<<16|s[y+3]<<8)>>8)/w,R=((s[y+8]<<24|s[y+7]<<16|s[y+6]<<8)>>8)/w;A==null||A(o,h,k,R)}}else throw new Error("Unreachable");{const w=await this.reader.read(this.numSplats);for(let s=0;s>>30;let S=R,M=0;for(let N=3;N>=0;--N)if(N!==a){const U=S&F,J=S>>>9&1;S=S>>>10,h[N]=w*(U/F),h[N]=J===0?h[N]:-h[N],M+=h[N]*h[N]}const c=1-M;h[a]=Math.sqrt(Math.max(c,0)),C==null||C(o,h[0],h[1],h[2],h[3])}}else{const w=await this.reader.read(this.numSplats*3);for(let s=0;s=1){const w=new Float32Array(9),s=this.shDegree>=2?new Float32Array(5*3):void 0,o=this.shDegree>=3?new Float32Array(7*3):void 0,y=await this.reader.read(this.numSplats*_w[this.shDegree]*3);let h=0;for(let k=0;k=1?9:0)+(I>=2?15:0)+(I>=3?21:0),E=16+A*C;this.buffer=new ArrayBuffer(E),this.view=new DataView(this.buffer),this.view.setUint32(0,rR,!0),this.view.setUint32(4,nR,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?dR:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<>8&255),this.view.setUint8(h+2,E>>16&255),this.view.setUint8(h+3,i&255),this.view.setUint8(h+4,i>>8&255),this.view.setUint8(h+5,i>>16&255),this.view.setUint8(h+6,s&255),this.view.setUint8(h+7,s>>8&255),this.view.setUint8(h+8,s>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/($w/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const C=16+this.numSplats*10+A*3;this.view.setUint8(C,kI.scaleRgb(I)),this.view.setUint8(C+1,kI.scaleRgb(g)),this.view.setUint8(C+2,kI.scaleRgb(B))}setScale(A,I,g,B){const C=16+this.numSplats*13+A*3;this.view.setUint8(C,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(C+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(C+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,...I){const g=16+this.numSplats*16+A*4,B=SC(I);let C=0;for(let i=1;i<4;++i)Math.abs(B[i])>Math.abs(B[C])&&(C=i);const E=B[C]<0?1:0;let D=C;for(let i=0;i<4;++i)if(i!==C){const w=(B[i]<0?1:0)^E,s=Math.floor(511*(Math.abs(B[i])/Math.SQRT1_2)+.5);D=D<<10|w<<9|s}this.view.setUint8(g,D&255),this.view.setUint8(g+1,D>>8&255),this.view.setUint8(g+2,D>>16&255),this.view.setUint8(g+3,D>>>24&255)}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,C=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,C))}setSh(A,I,g,B){const C=_w[this.shDegree]||0,E=16+this.numSplats*20+A*C*3;for(let D=0;D<9;++D)this.view.setUint8(E+D,kI.quantizeSh(I[D],5));if(g){const D=E+9;for(let i=0;i<15;++i)this.view.setUint8(D+i,kI.quantizeSh(g[i],4));if(B){const i=D+15;for(let w=0;w<21;++w)this.view.setUint8(i+w,kI.quantizeSh(B[w],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(E){E.enqueue(A),E.close()}}).pipeThrough(new CompressionStream("gzip")),C=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",C.byteLength,"bytes"),new Uint8Array(C)}}async function qR(Q){var s,o,y;const A=new MR,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:C=12,opacityThreshold:E}=Q;for(const h of I){let k=function(t){return t.multiplyScalar(M),t.applyQuaternion(c),t.add(N),t},R=function(t){return t.multiplyScalar(M),t},F=function(t){return t.premultiply(c),t},a=function(t){return!U||U.containsPoint(t)},S=function(t){return E!==void 0?t>=E:!0};const M=((s=h.transform)==null?void 0:s.scale)??1,c=new G.Quaternion().fromArray(((o=h.transform)==null?void 0:o.quaternion)??[0,0,0,1]),N=new G.Vector3().fromArray(((y=h.transform)==null?void 0:y.translate)??[0,0,0]),U=g?new G.Box3(new G.Vector3().fromArray(g.min),new G.Vector3().fromArray(g.max)):void 0;let J=h.fileType;switch(J||(J=RQ(h.fileBytes),!J&&h.pathOrUrl&&(J=YB(h.pathOrUrl))),J){case yA.PLY:{const t=new Hg({fileBytes:h.fileBytes});await t.parseHeader();let H=null;t.parseSplats((K,Y,L,q,n,r,p,m,IA,X,EA,j,gA,W,u)=>{const b=k(new G.Vector3(Y,L,q));if(a(b)&&S(j)){H=A.pushSplat(),A.setCenter(H,b.x,b.y,b.z);const T=R(new G.Vector3(n,r,p));A.setScale(H,T.x,T.y,T.z);const f=F(new G.Quaternion(m,IA,X,EA));A.setQuaternion(H,f.x,f.y,f.z,f.w),A.setOpacity(H,j),A.setColor(H,gA,W,u)}else H=null},(K,Y,L,q)=>{Y&&H!==null&&A.setSh1(H,Y),L&&H!==null&&A.setSh2(H,L),q&&H!==null&&A.setSh3(H,q)});break}case yA.SPZ:{const t=new zw({fileBytes:h.fileBytes});await t.parseHeader();const H=new Int32Array(t.numSplats);H.fill(-1);const K=new Float32Array(t.numSplats*3),Y=new G.Vector3;t.parseSplats((L,q,n,r)=>{const p=k(new G.Vector3(q,n,r));K[L*3]=p.x,K[L*3+1]=p.y,K[L*3+2]=p.z},(L,q)=>{Y.fromArray(K,L*3),a(Y)&&S(q)&&(H[L]=A.pushSplat(),A.setCenter(H[L],Y.x,Y.y,Y.z),A.setOpacity(H[L],q))},(L,q,n,r)=>{H[L]>=0&&A.setColor(H[L],q,n,r)},(L,q,n,r)=>{if(H[L]>=0){const p=R(new G.Vector3(q,n,r));A.setScale(H[L],p.x,p.y,p.z)}},(L,q,n,r,p)=>{if(H[L]>=0){const m=F(new G.Quaternion(q,n,r,p));A.setQuaternion(H[L],m.x,m.y,m.z,m.w)}},(L,q,n,r)=>{H[L]>=0&&(A.setSh1(H[L],q),n&&A.setSh2(H[L],n),r&&A.setSh3(H[L],r))});break}case yA.SPLAT:YR(h.fileBytes,t=>{},(t,H,K,Y,L,q,n,r,p,m,IA,X,EA,j,gA)=>{const W=k(new G.Vector3(H,K,Y));if(a(W)&&S(X)){const u=A.pushSplat();A.setCenter(u,W.x,W.y,W.z);const b=R(new G.Vector3(L,q,n));A.setScale(u,b.x,b.y,b.z);const T=F(new G.Quaternion(r,p,m,IA));A.setQuaternion(u,T.x,T.y,T.z,T.w),A.setOpacity(u,X),A.setColor(u,EA,j,gA)}});break;case yA.KSPLAT:{let t=null;eR(h.fileBytes,H=>{},(H,K,Y,L,q,n,r,p,m,IA,X,EA,j,gA,W)=>{const u=k(new G.Vector3(K,Y,L));if(a(u)&&S(EA)){t=A.pushSplat(),A.setCenter(t,u.x,u.y,u.z);const b=R(new G.Vector3(q,n,r));A.setScale(t,b.x,b.y,b.z);const T=F(new G.Quaternion(p,m,IA,X));A.setQuaternion(t,T.x,T.y,T.z,T.w),A.setOpacity(t,EA),A.setColor(t,j,gA,W)}else t=null},(H,K,Y,L)=>{t!==null&&(A.setSh1(t,K),Y&&A.setSh2(t,Y),L&&A.setSh3(t,L))});break}default:throw new Error(`transcodeSpz not implemented for ${J}`)}}const D=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),i=new kI({numSplats:A.numSplats,shDegree:D,fractionalBits:C,flagAntiAlias:!0});for(let h=0;h=1&&i.setSh(h,A.sh1.slice(h*9,(h+1)*9),D>=2&&A.sh2?A.sh2.slice(h*15,(h+1)*15):void 0,D>=3&&A.sh3?A.sh3.slice(h*21,(h+1)*21):void 0)}return{fileBytes:await i.finalize(),clippedCount:i.clippedCount}}var Ao=(Q=>(Q.DUAL_QUATERNION="dual_quaternion",Q.LINEAR_BLEND="linear_blend",Q))(Ao||{});const O=class O{constructor(A){this.mesh=A.mesh,this.numSplats=A.numSplats??this.mesh.numSplats,this.mode=A.mode??"dual_quaternion";const{width:I,height:g,depth:B,maxSplats:C}=BA(this.numSplats);this.skinData=new Uint16Array(C*4),this.skinTexture=new G.DataArrayTexture(this.skinData,I,g,B),this.skinTexture.format=G.RGBAIntegerFormat,this.skinTexture.type=G.UnsignedShortType,this.skinTexture.internalFormat="RGBA16UI",this.skinTexture.needsUpdate=!0,this.numBones=A.numBones??256,this.boneData=new Float32Array(this.numBones*16),this.boneTexture=new G.DataTexture(this.boneData,4,this.numBones,G.RGBAFormat,G.FloatType),this.boneTexture.internalFormat="RGBA32F",this.boneTexture.needsUpdate=!0,this.boneRestQuatPosScale=pQ(this.numBones,()=>({quat:new G.Quaternion,pos:new G.Vector3,scale:new G.Vector3})),this.mode==="linear_blend"?this.boneRestInvMats=pQ(this.numBones,()=>new G.Matrix4):this.boneRestInvMats=[],this.uniform=new x({key:"skinning",type:kQ,globals:()=>[FQ],value:{numSplats:this.numSplats,numBones:this.numBones,skinTexture:this.skinTexture,boneTexture:this.boneTexture}})}modify(A){if(this.mode==="linear_blend")throw new Error("Linear blend skinning requires covSplats=true");return lR(A,this.uniform)}modifyCov(A){return this.mode==="dual_quaternion"?bR(A,this.uniform):PR(A,this.uniform)}setRestQuatPos(A,I,g){this.boneRestQuatPosScale[A].quat.copy(I),this.boneRestQuatPosScale[A].pos.copy(g),this.boneRestQuatPosScale[A].scale.copy(O.UNIT_SCALE),this.mode==="linear_blend"&&this.boneRestInvMats[A].compose(g,I,O.UNIT_SCALE).invert(),this.setBoneQuatPos(A,I,g)}getRestQuatPos(A,I,g){I.copy(this.boneRestQuatPosScale[A].quat),g.copy(this.boneRestQuatPosScale[A].pos)}setRestQuatPosScale(A,I,g,B){this.boneRestQuatPosScale[A].quat.copy(I),this.boneRestQuatPosScale[A].pos.copy(g),this.boneRestQuatPosScale[A].scale.copy(B),this.mode==="linear_blend"&&this.boneRestInvMats[A].compose(g,I,B).invert(),this.setBoneQuatPosScale(A,I,g,B)}getRestQuatPosScale(A,I,g,B){I.copy(this.boneRestQuatPosScale[A].quat),g.copy(this.boneRestQuatPosScale[A].pos),B.copy(this.boneRestQuatPosScale[A].scale)}setRestMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("setRestMat only supported for linear blend skinning");this.boneRestInvMats[A].copy(I).invert(),this.setBoneMatrix(A,I)}getRestMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("getRestMat only supported for linear blend skinning");I.copy(this.boneRestInvMats[A]).invert()}setBoneQuatPos(A,I,g){if(this.mode==="dual_quaternion"){O.relQuat.copy(this.boneRestQuatPosScale[A].quat).invert(),O.relPos.copy(g).sub(this.boneRestQuatPosScale[A].pos),O.relQuat.multiply(I),O.dual.set(O.relPos.x,O.relPos.y,O.relPos.z,0).multiply(O.relQuat);const B=A*16;this.boneData[B+0]=O.relQuat.x,this.boneData[B+1]=O.relQuat.y,this.boneData[B+2]=O.relQuat.z,this.boneData[B+3]=O.relQuat.w,this.boneData[B+4]=.5*O.dual.x,this.boneData[B+5]=.5*O.dual.y,this.boneData[B+6]=.5*O.dual.z,this.boneData[B+7]=.5*O.dual.w}else this.setBoneQuatPosScale(A,I,g,O.UNIT_SCALE)}setBoneQuatPosScale(A,I,g,B){if(this.mode==="dual_quaternion")throw new Error("setBoneQuatPosScale only supported for linear blend skinning");O.skinMat.compose(g,I,B),this.setBoneMatrix(A,O.skinMat)}setBoneMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("setBoneMatrix only supported for linear blend skinning");O.skinMat.multiplyMatrices(this.boneRestInvMats[A],I);const g=A*16;this.boneData[g+0]=O.skinMat.elements[0],this.boneData[g+1]=O.skinMat.elements[1],this.boneData[g+2]=O.skinMat.elements[2],this.boneData[g+3]=O.skinMat.elements[4],this.boneData[g+4]=O.skinMat.elements[5],this.boneData[g+5]=O.skinMat.elements[6],this.boneData[g+6]=O.skinMat.elements[8],this.boneData[g+7]=O.skinMat.elements[9],this.boneData[g+8]=O.skinMat.elements[10],this.boneData[g+9]=O.skinMat.elements[12],this.boneData[g+10]=O.skinMat.elements[13],this.boneData[g+11]=O.skinMat.elements[14]}setSplatBones(A,I,g){const B=A*4;this.skinData[B+0]=Math.min(255,Math.max(0,Math.round(g.x*255)))+(I.x<<8),this.skinData[B+1]=Math.min(255,Math.max(0,Math.round(g.y*255)))+(I.y<<8),this.skinData[B+2]=Math.min(255,Math.max(0,Math.round(g.z*255)))+(I.z<<8),this.skinData[B+3]=Math.min(255,Math.max(0,Math.round(g.w*255)))+(I.w<<8)}updateBones(){this.boneTexture.needsUpdate=!0,this.mesh.needsUpdate=!0}};O.UNIT_SCALE=new G.Vector3(1,1,1),O.relQuat=new G.Quaternion,O.relPos=new G.Vector3,O.dual=new G.Quaternion,O.skinMat=new G.Matrix4;let vQ=O;const kQ={type:"GsplatSkinning"},FQ=oA(` +`),ih=wA(` +precision highp float; +precision highp int; + +// Blazing fast HSL to RGB conversion +vec3 hsl2rgb(vec3 c) { + vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); + return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0)); +} + +vec4 getDeterministicColor(uint id) { + float hue = fract(float(id) * 0.618033988749895); + vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6)); + return vec4(rgb, 1.0); +} +`);function uo({coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3TextureA:C,sh3TextureB:E}){return new l({inTypes:{coord:"ivec3",viewDir:"vec3",numSh:"int",sh1Texture:"usampler2DArray",sh2Texture:"usampler2DArray",sh3TextureA:"usampler2DArray",sh3TextureB:"usampler2DArray"},outTypes:{rgb:"vec3"},inputs:{coord:Q,viewDir:A,numSh:I,sh1Texture:g,sh2Texture:B,sh3TextureA:C,sh3TextureB:E},globals:()=>[Bh,Ch,Eh],statements:({inputs:i,outputs:o})=>{const D=["vec3 rgb = vec3(0.0);"];return i.sh1Texture&&(i.sh2Texture?(D.push(...z(` + if (${i.numSh} == 1) { + rgb = evaluateExtSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0), ${i.viewDir}); + } else if (${i.numSh} >= 2) { + rgb = evaluateExtSH12(texelFetch(${i.sh1Texture}, ${i.coord}, 0), texelFetch(${i.sh2Texture}, ${i.coord}, 0), ${i.viewDir}); + `)),i.sh3TextureA&&i.sh3TextureB&&D.push(...z(` + if (${i.numSh} >= 3) { + rgb += evaluateExtSH3(texelFetch(${i.sh3TextureA}, ${i.coord}, 0), texelFetch(${i.sh3TextureB}, ${i.coord}, 0), ${i.viewDir}); + } + `)),D.push("}")):D.push(...z(` + if (${i.numSh} >= 1) { + rgb = evaluateExtSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0), ${i.viewDir}); + } + `))),D.push(`${o.rgb} = rgb;`),D}}).outputs}function HI(Q,A,I,g,B,C,E){const i=new a.DataArrayTexture(Q,A,I,g);return i.format=B,i.type=C,i.internalFormat=E,i.needsUpdate=!0,i}const dA=class dA{constructor(A={}){if(this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new q({key:"rgbaArray",type:MB,globals:()=>[bo],value:{texture:dA.getEmpty(),count:0},update:I=>(I.texture=this.getTexture(),I.count=this.count,I)}),A.array){this.array=A.array;const I=Math.floor(this.array.length/4);this.capacity=Math.ceil(I/b)*b,this.capacity>I&&(this.array=new Uint8Array(this.capacity*4),this.array.set(A.array)),this.count=Math.min(I,A.count??Number.POSITIVE_INFINITY)}else this.capacity=A.capacity??0,this.count=0}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var I;if(!this.array||A>(((I=this.array)==null?void 0:I.length)??0)/4){this.capacity=iA(A).maxSplats;const g=new Uint8Array(this.capacity*4);this.array&&g.set(this.array),this.array=g}return this.array}getTexture(){var I;let A=(I=this.readback)==null?void 0:I.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??dA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.capacity!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:I,depth:g}=iA(this.capacity);this.source=new a.DataArrayTexture(this.array,A,I,g),this.source.format=a.RGBAFormat,this.source.type=a.UnsignedByteType,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:I,renderer:g}){this.readback||(this.readback=new zI({renderer:g})),this.readback.render({reader:A,count:I,renderer:g}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:I,count:g,renderer:B}){const{dynoSplats:C,dynoBase:E,dynoCount:i,reader:o}=dA.makeDynos();return C.packedSplats=A,E.value=I,i.value=g,this.render({reader:o,count:g,renderer:B}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length{if(!C)throw new Error("index is undefined");C=qA(C,I);const E=gC(A,C,I,g);return{rgba8:mA(E).outputs.rgba}});dA.dynos={dynoSplats:A,dynoBase:I,dynoCount:g,reader:B}}return dA.dynos}};dA.emptySource=null,dA.dynos=null;let OQ=dA;const MB={type:"RgbaArray"},bo=wA(` + struct RgbaArray { + sampler2DArray texture; + int count; + }; +`);function Dh(Q,A){return new l({inTypes:{rgba:MB,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:Q,index:A},globals:()=>[bo],statements:({inputs:g,outputs:B})=>z(` + if ((${g.index} >= 0) && (${g.index} < ${g.rgba}.count)) { + ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(${g.index}), 0); + } else { + ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0); + } + `)}).outputs.rgba}const ZQ=256,vQ=256,Cg=ZQ*vQ;class WI{constructor(A){var I;if(this.pager=A.pager,this.rootUrl=A.rootUrl??"",this.requestHeader=A.requestHeader,this.withCredentials=A.withCredentials,this.numSh=0,this.maxSh=((I=A.pager)==null?void 0:I.maxSh)??3,this.numSplats=0,this.dynoNumSplats=new $A({value:0}),this.dynoIndices=new Yg({value:hI.emptyIndicesTexture}),this.rgbMinMaxLnScaleMinMax=new Ig({value:new a.Vector4(0,1,fA,uA)}),this.lodOpacity=new rg({value:!1}),this.dynoNumSh=new $A({value:0}),this.shMax=new LI({value:new a.Vector3}),this.fileBytes=A.fileBytes,this.fileType=A.fileType,!this.fileType&&this.fileBytes&&(this.fileType=NB(this.fileBytes)),!this.fileType&&this.rootUrl&&(this.fileType=po(this.rootUrl)),!this.fileType)throw new Error("Unable to determine file type");this.fileType===MA.RAD&&(this.radMetaPromise=this.getRadMeta())}dispose(){this.dynoIndices.value!==hI.emptyIndicesTexture&&(this.dynoIndices.value.dispose(),this.dynoIndices.value=hI.emptyIndicesTexture)}setMaxSh(A){this.maxSh=A}getRadMeta(){return this.radMetaPromise?this.radMetaPromise:(this.radMetaPromise=(async()=>{if(await vG,this.fileBytes){const A=rB(this.fileBytes.slice(0,1048576));if(A)return A;throw new Error("Failed to decode RAD header")}if(!this.rootUrl)throw new Error("No url or fileBytes provided");for(const A of[65536,256*1024,1024*1024]){const I=await KQ({url:this.rootUrl,requestHeader:this.requestHeader,withCredentials:this.withCredentials,offset:0,bytes:A}),g=rB(I);if(g)return g}throw new Error("Failed to decode RAD header")})().then(A=>A),this.radMetaPromise.catch(A=>{console.error(A)}),this.radMetaPromise)}chunkUrl(A){return this.rootUrl.replace(/-lod-0\./,`-lod-${A}.`)}async fetchDecodeChunk(A){let I;if(this.fileType===MA.RAD){const{meta:g,chunksStart:B}=await this.getRadMeta();if(A<0||A>=g.chunks.length)throw new Error(`Chunk index out of range: ${A} (max: ${g.chunks.length-1})`);let{offset:C,bytes:E,filename:i}=g.chunks[A];if(i){if(this.fileBytes)throw new Error("Chunked RAD file not supported with fileBytes");const o=new URL(this.rootUrl,window.location.href).toString(),D=new URL(i,o).toString();I=await KQ({url:D,requestHeader:this.requestHeader,withCredentials:this.withCredentials})}else if(C+=B,this.fileBytes){if(C<0||C+E>this.fileBytes.length)throw new Error(`Invalid chunk offset or bytes: ${C} + ${E} > ${this.fileBytes.length}`);I=this.fileBytes.slice(C,C+E)}else if(this.rootUrl)I=await KQ({url:this.rootUrl,requestHeader:this.requestHeader,withCredentials:this.withCredentials,offset:C,bytes:E});else throw new Error("No url or fileBytes provided")}else if(!this.fileBytes)if(this.rootUrl){const g=this.chunkUrl(A),B=new Request(g,{headers:this.requestHeader?new Headers(this.requestHeader):void 0,credentials:this.withCredentials?"include":"same-origin"}),C=await fetch(B);if(!C.ok||!C.body)throw new Error(`Failed to fetch "${g}": ${C.status} ${C.statusText}`);I=new Uint8Array(await C.arrayBuffer())}else throw new Error("No url or fileBytes provided");return await aQ.withWorker(async g=>{var i,o,D,w,s;if(!this.pager)throw new Error("PagedSplats.pager not set");if(!this.pager.extSplats){const G=(await g.call("loadPackedSplats",{fileBytes:I,pathName:this.chunkUrl(A),sh1Codes:(i=this.sh1Codes)==null?void 0:i.slice(),sh2Codes:(o=this.sh2Codes)==null?void 0:o.slice(),sh3Codes:(D=this.sh3Codes)==null?void 0:D.slice()})).lodSplats;return this.splatEncoding||(this.splatEncoding=G.splatEncoding,this.numSh=G.extra.sh3?3:G.extra.sh2?2:G.extra.sh1?1:0,this.rgbMinMaxLnScaleMinMax.value.set(this.splatEncoding.rgbMin??0,this.splatEncoding.rgbMax??1,this.splatEncoding.lnScaleMin??fA,this.splatEncoding.lnScaleMax??uA),this.lodOpacity.value=this.splatEncoding.lodOpacity??!1,this.shMax.value.set(this.splatEncoding.sh1Max??1,this.splatEncoding.sh2Max??1,this.splatEncoding.sh3Max??1)),this.sh1Codes=G.extra.sh1Codes??this.sh1Codes,this.sh2Codes=G.extra.sh2Codes??this.sh2Codes,this.sh3Codes=G.extra.sh3Codes??this.sh3Codes,G}const B=this.sh3Codes,E=(await g.call("loadExtSplats",{fileBytes:I,pathName:this.chunkUrl(A),sh1Codes:(w=this.sh1Codes)==null?void 0:w.slice(),sh2Codes:(s=this.sh2Codes)==null?void 0:s.slice(),sh3Codes:B?[B[0].slice(),B[1].slice()]:void 0})).lodSplats;return this.splatEncoding||(this.splatEncoding=BQ,this.numSh=E.extra.sh3a&&E.extra.sh3b?3:E.extra.sh2?2:E.extra.sh1?1:0),this.sh1Codes=E.extra.sh1Codes??this.sh1Codes,this.sh2Codes=E.extra.sh2Codes??this.sh2Codes,this.sh3Codes=E.extra.sh3Codes??this.sh3Codes,E})}update(A,I){if(!this.pager)throw new Error("PagedSplats.pager not set");const g=this.pager.renderer;this.numSplats=A,this.dynoNumSplats.value=this.numSplats;const B=Math.ceil(A/16384);let C=this.dynoIndices.value===hI.emptyIndicesTexture?void 0:this.dynoIndices.value;if(C&&B>C.image.height&&(C.dispose(),C=void 0),!C)C=new a.DataTexture(I,4096,B,a.RGBAIntegerFormat,a.UnsignedIntType),C.internalFormat="RGBA32UI",C.needsUpdate=!0,g.initTexture(C),this.dynoIndices.value=C;else{const E=C.image.data;E.set(I.subarray(0,A)),hB(g,C,4096,B,E)}}prepareFetchSplat(){}getNumSplats(){return this.numSplats}hasRgbDir(){return this.pager?Math.min(this.numSh,this.pager.maxSh)>0:!1}getNumSh(){return this.numSh}fetchSplat({index:A,viewOrigin:I}){if(!this.pager)throw new Error("PagedSplats.pager not set");const g=this.pager.readIndex.apply({index:A,numSplats:this.dynoNumSplats,indices:this.dynoIndices}).index;return this.pager.extSplats?this.hasRgbDir()&&I?(this.dynoNumSh.value=Math.min(this.numSh,this.maxSh,this.pager.maxSh),this.pager.readSplatExtDir.apply({index:g,viewOrigin:I,numSh:this.dynoNumSh}).gsplat):this.pager.readSplatExt.apply({index:g}).gsplat:this.hasRgbDir()&&I?(this.dynoNumSh.value=Math.min(this.numSh,this.maxSh,this.pager.maxSh),this.pager.readSplatDir.apply({index:g,rgbMinMaxLnScaleMinMax:this.rgbMinMaxLnScaleMinMax,lodOpacity:this.lodOpacity,viewOrigin:I,numSh:this.dynoNumSh,shMax:this.shMax}).gsplat):this.pager.readSplat.apply({index:g,rgbMinMaxLnScaleMinMax:this.rgbMinMaxLnScaleMinMax,lodOpacity:this.lodOpacity}).gsplat}forEachSplat(A){if(!this.pager||!this.numSplats)return;const I=this.pager.extSplats,g=this.dynoIndices.value.image.data,B=this.pager.packedTexture.value.image.data,C=this.pager.extTexture.value.image.data,E=[B,C];for(let i=0;iB),this.pageLru=new Set,this.freeablePages=[],this.newUploads=[],this.readyUploads=[],this.lodTreeUpdates=[],this.fetchers=[],this.fetched=[],this.fetchPriority=[],this.packedTexture=new pA({value:this.newUint32ArrayTexture(4)}),this.extTexture=new pA({value:this.extSplats?this.newUint32ArrayTexture(4):j.emptyExtTexture});const I=this.extSplats?j.emptyExtShTextures:j.emptyShTextures;this.shTextures=I.map(g=>new pA({value:g})),this.highlightLabel=new $A({key:"highlightLabel",value:-1}),this.lookUpTexture=new Yg({value:new a.DataTexture(new Uint32Array(256),256,1,a.RedIntegerFormat,a.UnsignedIntType)}),this.lookUpTexture.value.image.data.fill(1),this.lookUpTexture.value.needsUpdate=!0,this.renderer.initTexture(this.lookUpTexture.value),this.labelTexture=new pA({value:j.emptyLabelTexture}),this.instanceTexture=new pA({value:j.emptyLabelTexture}),this.labelLookupModifier=new l({inTypes:{gsplat:V,lookup:"usampler2D",label:"usampler2DArray",instance:"usampler2DArray",highlightLabel:"int"},outTypes:{gsplat:V},inputs:{lookup:this.lookUpTexture,label:this.labelTexture,instance:this.instanceTexture,highlightLabel:this.highlightLabel},globals:()=>[ih,JA],statements:({inputs:g,outputs:B})=>z(` + Gsplat g = ${g.gsplat}; + + ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16); + uvec4 labelTexel = texelFetch(${g.label}, splatCoord, 0); + uint visible = texelFetch(${g.lookup}, ivec2(labelTexel.r, 0), 0).r; + if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; } + + if (${g.highlightLabel} >= 0 && labelTexel.r == uint(${g.highlightLabel})) { + uvec4 instanceTexel = texelFetch(${g.instance}, splatCoord, 0); + vec4 splatColour = getDeterministicColor(instanceTexel.r); + g.rgba = mix(g.rgba, splatColour, 0.6); + } + + ${B.gsplat} = g; + `)}),this.readIndex=HA({index:"int",numSplats:"int",indices:"usampler2D"},{index:"int"},({index:g,numSplats:B,indices:C})=>new l({inTypes:{index:"int",numSplats:"int",indices:"usampler2D"},outTypes:{index:"int"},inputs:{index:g,numSplats:B,indices:C},statements:({inputs:E,outputs:i})=>z(` + if (${E.index} >= ${E.numSplats}) { + return; + } + + ivec2 indexCoord = ivec2((${E.index} >> 2) & 4095, ${E.index} >> 14); + uint index = texelFetch(${E.indices}, indexCoord, 0)[${E.index} & 3]; + ${i.index} = int(index); + `)}).outputs),this.readSplat=HA({index:"int",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool"},{gsplat:V},({index:g,rgbMinMaxLnScaleMinMax:B,lodOpacity:C})=>new l({inTypes:{index:"int",packedTexture:"usampler2DArray",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool"},outTypes:{gsplat:V},inputs:{index:g,packedTexture:this.packedTexture,rgbMinMaxLnScaleMinMax:B,lodOpacity:C},globals:()=>[JA],statements:({inputs:E,outputs:i})=>z(` + int index = ${E.index}; + ivec3 splatCoord = pagedSplatTexCoord(index); + uvec4 packedData = texelFetch(${E.packedTexture}, splatCoord, 0); + + unpackSplatEncoding(packedData, ${i.gsplat}.center, ${i.gsplat}.scales, ${i.gsplat}.quaternion, ${i.gsplat}.rgba, ${E.rgbMinMaxLnScaleMinMax}); + if ((${i.gsplat}.rgba.a == 0.0) || all(equal(${i.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${i.gsplat}.index = index; + ${i.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + if (${E.lodOpacity}) { + ${i.gsplat}.rgba.a *= 2.0; + } + `)}).outputs),this.readSplatDir=HA({index:"int",rgbMinMaxLnScaleMinMax:"vec4",lodOpacity:"bool",viewOrigin:"vec3",numSh:"int",shMax:"vec3"},{gsplat:V},({index:g,rgbMinMaxLnScaleMinMax:B,lodOpacity:C,viewOrigin:E,numSh:i,shMax:o})=>{if(!g||!B||!C||!E||!i||!o)throw new Error("index and viewOrigin are required");let D=this.readSplat.apply({index:g,rgbMinMaxLnScaleMinMax:B,lodOpacity:C}).gsplat;const w=mA(D).outputs.center,s=kg(EI(w,E));let t=qo({coord:dQ(g),viewDir:s,numSh:i,sh1Texture:this.shTextures[0],sh2Texture:this.shTextures[1],sh3Texture:this.shTextures[2],shMax:o}).rgb;return t=qA(t,mA(D).outputs.rgb),D=CI({gsplat:D,rgb:t}),{gsplat:D}}),this.readSplatExt=HA({index:"int"},{gsplat:V},({index:g})=>new l({inTypes:{index:"int",extTexture1:"usampler2DArray",extTexture2:"usampler2DArray"},outTypes:{gsplat:V},inputs:{index:g,extTexture1:this.packedTexture,extTexture2:this.extTexture},globals:()=>[JA],statements:({inputs:B,outputs:C})=>z(` + int index = ${B.index}; + ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); + uvec4 ext1 = texelFetch(${B.extTexture1}, splatCoord, 0); + float alpha = unpackSplatExtAlpha(ext1); + if (alpha == 0.0) { + return; + } + + uvec4 ext2 = texelFetch(${B.extTexture2}, splatCoord, 0); + unpackSplatExt(ext1, ext2, ${C.gsplat}.center, ${C.gsplat}.scales, ${C.gsplat}.quaternion, ${C.gsplat}.rgba); + if (all(equal(${C.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${C.gsplat}.index = index; + ${C.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + `)}).outputs),this.readSplatExtDir=HA({index:"int",viewOrigin:"vec3",numSh:"int"},{gsplat:V},({index:g,viewOrigin:B,numSh:C})=>{if(!g||!B||!C)throw new Error("index and viewOrigin are required");let E=this.readSplatExt.apply({index:g}).gsplat;const i=mA(E).outputs.center,o=kg(EI(i,B));let D=uo({coord:dQ(g),viewDir:o,numSh:C,sh1Texture:this.shTextures[0],sh2Texture:this.shTextures[1],sh3TextureA:this.shTextures[2],sh3TextureB:this.shTextures[3]}).rgb;return D=qA(D,mA(E).outputs.rgb),E=CI({gsplat:E,rgb:D}),{gsplat:E}})}dispose(){this.autoDrive=!1,this.numFetchers=0,this.packedTexture.value.dispose(),this.packedTexture.value.source.data=null,this.extTexture.value!==j.emptyExtTexture&&(this.extTexture.value.dispose(),this.extTexture.value.source.data=null),this.labelTexture.value!==j.emptyLabelTexture&&(this.labelTexture.value.dispose(),this.labelTexture.value.source.data=null),this.instanceTexture.value!==j.emptyLabelTexture&&(this.instanceTexture.value.dispose(),this.instanceTexture.value.source.data=null);const A=this.extSplats?j.emptyExtShTextures:j.emptyShTextures;for(let I=0;I{g>=0&&g<256&&(I[g]=1)}),this.lookUpTexture.value.needsUpdate=!0}newUintArrayTex(A,I,g,B,C,E,i){const o=new a.DataArrayTexture(A,I,g,B);return o.format=C,o.type=E,o.internalFormat=i,o.needsUpdate=!0,this.renderer.initTexture(o),o}ensureLabelTextures(){this.labelTexture.value===j.emptyLabelTexture&&(this.labelTexture.value=this.newUintArrayTex(new Uint32Array(this.maxPages*256*256*1),256,256,this.maxPages,a.RedIntegerFormat,a.UnsignedIntType,"R32UI"))}updateLabelHighlight(A){this.highlightLabel.value=A}ensureInstanceTextures(){this.instanceTexture.value===j.emptyLabelTexture&&(this.instanceTexture.value=this.newUintArrayTex(new Uint32Array(this.maxPages*256*256*1),256,256,this.maxPages,a.RedIntegerFormat,a.UnsignedIntType,"R32UI"))}ensureShTextures(A){this.curSh=Math.max(this.curSh,A);const I=this.extSplats?j.emptyExtShTextures:j.emptyShTextures;for(let g=0;g=C.length&&(C.length=I+1);const E={page:g,lru:B};return C[I]=E,this.pageLru.add(E),this.pageToSplatsChunk[g]={splats:A,chunk:I,time:performance.now()},this.pageToSplatsChunk[g]}removeSplatsChunkPage(A,I,g){const B=this.splatsChunkToPage.get(A);if(!B)throw new Error("impossible");const C=B[I];if(!C)throw new Error(`pageLru not found for splats: ${A}, chunk: ${I}, page: ${g}`);for(this.pageLru.delete(C),B[I]=void 0;B.length>0&&B[B.length-1]===void 0;)B.pop();for(B.length===0&&this.splatsChunkToPage.delete(A),this.pageToSplatsChunk[g]=void 0;this.pageToSplatsChunk.length>0&&this.pageToSplatsChunk[this.pageToSplatsChunk.length-1]===void 0;)this.pageToSplatsChunk.pop()}removeSplats(A){const I=this.splatsChunkToPage.get(A);if(!I)return;const g=new Set;for(;I.length>0;){const B=I.pop();if(B){const{page:C}=B;this.pageToSplatsChunk[C]=void 0,g.add(C),this.pageFreelist.push(C),this.pageLru.delete(B)}}this.splatsChunkToPage.delete(A),this.freeablePages=this.freeablePages.filter(B=>!g.has(B))}uploadPage(A,I,g,B,C,E){const i=A*Cg;HQ(this.packedTexture,A,i*4,I),B&&HQ(this.extTexture,A,i*4,B);const o=Math.min(g.length,3);if(this.ensureShTextures(o),C!==void 0){this.ensureLabelTextures();const D=C;this.labelTexture.value.image.data.subarray(i,i+D.length).set(D),this.labelTexture.value.addLayerUpdate(A),this.labelTexture.value.needsUpdate=!0}if(E!==void 0){this.ensureInstanceTextures();const D=E;this.instanceTexture.value.image.data.subarray(i,i+D.length).set(D),this.instanceTexture.value.addLayerUpdate(A),this.instanceTexture.value.needsUpdate=!0}for(let D=0;D=this.maxPages?I.push(o):A.push(o),g+=1;continue}if(this.fetched.some(({splats:D,chunk:w})=>E===D&&i===w)||this.fetchers.some(({splats:D,chunk:w})=>E===D&&i===w)){g+=1;continue}if(g{this.fetched.push({splats:E,chunk:i,data:w}),this.fetchPause>0&&await new Promise(s=>setTimeout(s,this.fetchPause))},async w=>{console.warn(w);const s=250+500*Math.random();await new Promise(t=>setTimeout(t,s))}).finally(()=>{this.fetchers=this.fetchers.filter(({splats:w,chunk:s})=>E!==w||i!==s),this.processFetched()});this.fetchers.push({splats:E,chunk:i,promise:D}),D.then(w=>{this.autoDrive&&this.driveFetchers()})}}const B=performance.now();for(const E of I.reverse())E.lru=B,this.pageLru.delete(E),this.pageLru.add(E);const C=new Set(this.pageLru);for(const E of A.reverse())C.delete(E),E.lru=B,this.pageLru.delete(E),this.pageLru.add(E);this.freeablePages=Array.from(C).map(({page:E})=>E)}allocateFreeable(){const A=this.freeablePages.shift();if(A===void 0)return;const I=this.pageToSplatsChunk[A];if(!I)throw new Error(`splatsChunk not found for page: ${A}`);const{splats:g,chunk:B}=I;return this.removeSplatsChunkPage(g,B,A),this.lodTreeUpdates.push({splats:g,page:A,chunk:B,numSplats:Cg}),A}processFetched(){const A=performance.now();for(;;){const I=this.fetched.shift();if(!I)break;const{splats:g,chunk:B,data:C}=I;let E=this.allocatePage();if(E===void 0&&(E=this.allocateFreeable(),E===void 0))return;this.insertSplatsChunkPage(g,B,E,A);const{numSplats:i,extra:o}=C;if(this.lodTreeUpdates.push({splats:g,page:E,chunk:B,numSplats:i,lodTree:o.lodTree}),oh(C,this.extSplats)){const D=C.extArrays,w=D[0],s=D[1],t=[C.extra.sh1,C.extra.sh2,C.extra.sh3a,C.extra.sh3b];t.length=t.findIndex(G=>!G),this.newUploads.push({page:E,numSplats:i,packedArray:w,extArray:s,shArrays:t,labels:o==null?void 0:o.labels,instances:o==null?void 0:o.instances})}else{const D=C.packedArray,w=[C.extra.sh1,C.extra.sh2,C.extra.sh3];w.length=w.findIndex(s=>!s),this.newUploads.push({page:E,numSplats:i,packedArray:D,shArrays:w})}}}processUploads(){for(;;){const A=this.readyUploads.shift();if(!A)break;const{page:I,numSplats:g,packedArray:B,extArray:C,shArrays:E,labels:i,instances:o}=A;this.uploadPage(I,B,E,C,i,o)}}consumeLodTreeUpdates(){const A=this.lodTreeUpdates;return this.lodTreeUpdates=[],this.readyUploads.push(...this.newUploads),this.newUploads=[],A}};j.emptyUint32x4=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),j.emptyUint32x2=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*2),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RG32UI",E.needsUpdate=!0,E})(),j.emptyIndicesTexture=(()=>{const A=new Uint32Array(16384),I=new a.DataTexture(A,4096,1);return I.format=a.RGBAIntegerFormat,I.type=a.UnsignedIntType,I.internalFormat="RGBA32UI",I.needsUpdate=!0,I})(),j.emptyPackedTexture=j.emptyUint32x4,j.emptyExtTexture=j.emptyUint32x4,j.emptyLabelTexture=j.emptyUint32x4,j.emptyShTextures=[j.emptyUint32x2,j.emptyUint32x4,j.emptyUint32x4],j.emptyExtShTextures=[j.emptyUint32x4,j.emptyUint32x4,j.emptyUint32x4,j.emptyUint32x4];let hI=j;function oh(Q,A){return A}function HQ(Q,A,I,g){Q.value.image.data.subarray(I,I+g.length).set(g),Q.value.addLayerUpdate(A),Q.value.needsUpdate=!0,Q.value.source.dataReady=!0}async function KQ({url:Q,requestHeader:A,withCredentials:I,offset:g,bytes:B}){const C=new Request(Q,{headers:A?new Headers(A):void 0,credentials:I?"include":"same-origin"});g!==void 0&&B!==void 0&&C.headers.set("Range",`bytes=${g}-${g+B-1}`);const E=await fetch(C);if(!E.ok||!E.body)throw new Error(`Failed to fetch "${Q}": ${E.status} ${E.statusText}`);return new Uint8Array(await E.arrayBuffer())}class sh{constructor(){this.fetchDyno=new l({inTypes:{},outTypes:{gsplat:V},globals:()=>[JA],statements:({outputs:A})=>z(` + ${A.gsplat}.flags = 0u; + return; + `)}).outputs.gsplat}prepareFetchSplat(){}dispose(){}getNumSplats(){return 0}hasRgbDir(){return!1}getNumSh(){return 0}setMaxSh(A){}fetchSplat({index:A}){return this.fetchDyno}forEachSplat(){}}const oI=class oI extends _I{constructor(A={}){if(super({update:I=>this.update(I)}),this.isInitialized=!1,this.recolor=new a.Color(1,1,1),this.opacity=1,this.generatorDirty=!0,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.showLodPageDyno=new $A({value:0}),A.splats)this.splats=A.splats,this.numSplats=A.splats.getNumSplats();else if(A.paged){A.extSplats&&console.warn("To set extSplats with the paged option, set SparkRenderer.pagedExtSplats");const I=A.url??"";if(A.paged===!0)this.paged=new WI({rootUrl:I});else if(A.paged instanceof WI)this.paged=A.paged;else if(A.paged instanceof hI)this.paged=new WI({rootUrl:I,pager:A.paged});else throw new Error("Invalid paged option");this.splats=this.paged}else A.extSplats?(this.extSplats=A.extSplats instanceof QI?A.extSplats:new QI,A.extSplats=this.extSplats,this.numSplats=this.extSplats.numSplats,this.splats=this.extSplats):A.packedSplats?(this.packedSplats=A.packedSplats,this.packedSplats.splatEncoding=A.splatEncoding??{...BQ},this.splats=this.packedSplats):this.packedSplats=new wI;if(this.editable=A.editable??!0,this.raycastable=A.raycastable??!0,this.minRaycastOpacity=A.minRaycastOpacity??.2,this.onFrame=A.onFrame,this.context={transform:new lI,viewToWorld:new lI,worldToView:new lI,viewToObject:new lI,covTransform:new pg,covViewToWorld:new pg,covWorldToView:new pg,covViewToObject:new pg,recolor:new Ig({value:new a.Vector4().setScalar(Number.NEGATIVE_INFINITY)}),time:new vI({value:0}),deltaTime:new vI({value:0}),numSplats:new $A({value:0}),splats:new sh,enableLod:new rg({value:!1}),lodIndices:new Yg({value:uB,key:"lodIndices"})},this.covSplats=A.covSplats??!1,this.covSplats&&!this.extSplats)throw new Error("CovSplats requires ExtSplats");if(this.objectModifiers=A.objectModifier?[A.objectModifier]:void 0,this.worldModifiers=A.worldModifier?[A.worldModifier]:void 0,A.objectModifiers&&(this.objectModifiers=A.objectModifiers),A.worldModifiers&&(this.worldModifiers=A.worldModifiers),this.enableLod=A.enableLod,this.lodScale=A.lodScale??1,this.behindFoveate=A.behindFoveate,this.coneFov0=A.coneFov0,this.coneFov=A.coneFov,this.coneFoveate=A.coneFoveate,this.updateGenerator(),A.url||A.fileBytes||A.stream||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized||this.extSplats&&!this.extSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const I=A.onLoad(this);I instanceof Promise&&await I}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const I=A.onLoad(this);I instanceof Promise&&(this.initialized=I.then(()=>this))}}updateLabelLookup(A){var I;this.paged&&((I=this.paged.pager)==null||I.updateLabelLookup(A))}updateLabelHighlight(A){var I;this.paged&&((I=this.paged.pager)==null||I.updateLabelHighlight(A))}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,maxSplats:o,constructSplats:D,onProgress:w,splatEncoding:s,lod:t,nonLod:G,lodAbove:c}=A;if(this.packedSplats){if(I||g||E||D){const h={url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,maxSplats:o,construct:D,onProgress:w,splatEncoding:s,lod:t,nonLod:G,lodAbove:c};this.packedSplats.reinitialize(h)}await this.packedSplats.initialized,this.splats=this.packedSplats}else if(this.extSplats&&(I||g||E||D)){const h=D;this.extSplats.reinitialize({url:I,fileBytes:g,fileType:B,fileName:C,stream:E,streamLength:i,maxSplats:o,construct:h,onProgress:w,lod:t,nonLod:G,lodAbove:c}),await this.extSplats.initialized,this.splats=this.extSplats}this.splats&&(this.numSplats=this.splats.getNumSplats(),this.updateGenerator())}pushSplat(A,I,g,B,C){this.packedSplats?this.packedSplats.pushSplat(A,I,g,B,C):this.extSplats&&this.extSplats.pushSplat(A,I,g,B,C)}forEachSplat(A){var I;(I=this.splats)==null||I.forEachSplat(A)}dispose(){this.splats&&this.splats!==this.packedSplats&&this.splats!==this.extSplats&&(this.splats.dispose(),this.splats=void 0),this.packedSplats&&(this.packedSplats.dispose(),this.packedSplats=void 0),this.extSplats&&(this.extSplats.dispose(),this.extSplats=void 0)}getBoundingBox(A=!0){var o;if(!this.initialized)throw new Error("Cannot get bounding box before SplatMesh is initialized");const I=new a.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new a.Vector3(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),B=new a.Vector3,C=[-1,1];function E(D,w,s,t,G,c){if(A)I.min(w),g.max(w);else for(const h of C)for(const y of C)for(const S of C)B.set(h*s.x,y*s.y,S*s.z),B.applyQuaternion(t),B.add(w),I.min(B),g.max(B)}return(o=this.splats)==null||o.forEachSplat(E),new a.Box3(I,g)}set objectModifier(A){A?this.objectModifiers=[A]:this.objectModifiers=void 0}set worldModifier(A){A?this.worldModifiers=[A]:this.worldModifiers=void 0}constructGenerator(A){if(this.covSplats)return this.constructCovGenerator(A);const{transform:I,viewToObject:g,recolor:B}=A,C=HA({index:"int"},{gsplat:V},({index:E})=>{var D,w,s,t;if(!E)throw new Error("index is undefined");E=pB(A.lodIndices,E,A.numSplats,A.enableLod,this.showLodPageDyno),A.splats.setMaxSh(this.maxSh),A.splats.prepareFetchSplat();let i=A.splats.fetchSplat({index:E,viewOrigin:g.translate});if(this.splatRgba&&(i=fB(i,this.splatRgba.dyno,E,A.enableLod)),this.skinning&&(i=this.skinning.modify(i)),this.objectModifiers)for(const G of this.objectModifiers)i=G.apply({gsplat:i}).gsplat;i=I.applyGsplat(i);const o=FA(B,mA(i).outputs.rgba);if(i=CI({gsplat:i,rgba:o}),this.rgbaDisplaceEdits&&(i=this.rgbaDisplaceEdits.modify(i)),this.worldModifiers)for(const G of this.worldModifiers)i=G.apply({gsplat:i}).gsplat;return(w=(D=this.paged)==null?void 0:D.pager)!=null&&w.labelLookupModifier&&(i=(t=(s=this.paged)==null?void 0:s.pager)==null?void 0:t.labelLookupModifier.apply({gsplat:i}).gsplat),{gsplat:i}});this.generator=C,this.covGenerator=void 0}constructCovGenerator(A){const{covTransform:I,covViewToObject:g,recolor:B}=A,C=HA({index:"int"},{covsplat:rA},({index:E})=>{if(!E)throw new Error("index is undefined");E=pB(A.lodIndices,E,A.numSplats,A.enableLod,this.showLodPageDyno),A.splats.prepareFetchSplat();let i=A.splats.fetchSplat({index:E,viewOrigin:g.offset});if(this.splatRgba&&(i=fB(i,this.splatRgba.dyno,E,A.enableLod)),this.objectModifiers)for(const w of this.objectModifiers)i=w.apply({gsplat:i}).gsplat;let o=Wg(i);if(this.skinning&&(o=this.skinning.modifyCov(o)),this.covObjectModifiers)for(const w of this.covObjectModifiers)o=w.apply({covsplat:o}).covsplat;o=I.applyCovSplat(o);const D=FA(B,jg(o).outputs.rgba);if(o=iB({covsplat:o,rgba:D}),this.rgbaDisplaceEdits&&(o=this.rgbaDisplaceEdits.modifyCov(o)),this.covWorldModifiers)for(const w of this.covWorldModifiers)o=w.apply({covsplat:o}).covsplat;return{covsplat:o}});this.generator=void 0,this.covGenerator=C}updateGenerator(){this.generatorDirty=!0}update({renderer:A,time:I,deltaTime:g,viewToWorld:B,camera:C,renderSize:E,globalEdits:i,lodIndices:o}){var h,y,S;this.context.time.value=I,this.context.deltaTime.value=g,oI.dynoTime.value=I,this.showLodPageDyno.value=this.showLodPage??-1;const D=this.splats??this.packedSplats??this.extSplats;D&&(this.context.splats=D),this.numSplats=this.context.splats.getNumSplats();let w=!1;const s=((h=this.packedSplats)==null?void 0:h.lodSplats)??((y=this.extSplats)==null?void 0:y.lodSplats);if(this.context.enableLod.value=s!=null&&o!=null,this.enableLod===!1&&(this.context.enableLod.value=!1),this.context.lodIndices.value=(o==null?void 0:o.texture)??uB,this.context.enableLod.value&&s&&(this.context.splats=s,this.numSplats=(o==null?void 0:o.numSplats)??0),this.context.numSplats.value=this.numSplats,this.context.splats!==this.lastSplats&&(this.lastSplats=this.context.splats,this.generatorDirty=!0),this.covSplats){this.context.covTransform.update(this)&&(w=!0),this.context.covViewToWorld.updateFromMatrix(B)&&this.enableViewToWorld&&(w=!0);const F=B.clone().invert();this.context.covWorldToView.updateFromMatrix(F)&&this.enableWorldToView&&(w=!0);const k=this.matrixWorld.clone().invert().multiply(B);this.context.covViewToObject.updateFromMatrix(k)&&(this.enableViewToObject||this.context.splats.hasRgbDir())&&(w=!0)}else{this.context.transform.update(this)&&(w=!0),this.context.viewToWorld.updateFromMatrix(B)&&this.enableViewToWorld&&(w=!0);const F=B.clone().invert();this.context.worldToView.updateFromMatrix(F)&&this.enableWorldToView&&(w=!0);const R=new a.Matrix4().compose(this.context.transform.translate.value,this.context.transform.rotate.value,new a.Vector3().setScalar(this.context.transform.scale.value)).invert().multiply(B);this.context.viewToObject.updateFromMatrix(R)&&(this.enableViewToObject||this.context.splats.hasRgbDir())&&(w=!0)}const t=new a.Vector4(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);t.equals(this.context.recolor.value)||(this.context.recolor.value.copy(t),w=!0);const G=this.editable?(this.edits??[]).concat(i):[];this.editable&&!this.edits&&this.traverseVisible(F=>{F instanceof Ng&&G.push(F)}),G.sort((F,e)=>F.ordering-e.ordering);const c=G.map(F=>{if(F.sdfs!=null)return{edit:F,sdfs:F.sdfs};const e=[];return F.traverseVisible(k=>{k instanceof Ho&&e.push(k)}),{edit:F,sdfs:e}});if(c.length>0&&!this.rgbaDisplaceEdits){const F=c.length,e=c.reduce((k,R)=>k+R.sdfs.length,0);this.rgbaDisplaceEdits=new Ko({maxEdits:F,maxSdfs:e}),this.generatorDirty=!0}if(this.rgbaDisplaceEdits){const F=this.rgbaDisplaceEdits.update(c);w||(w=F.updated),F.dynoUpdated&&(this.generatorDirty=!0)}this.generatorDirty&&(this.constructGenerator(this.context),this.generatorDirty=!1,w=!0),w&&this.updateVersion(),(S=this.onFrame)==null||S.call(this,{mesh:this,time:I,deltaTime:g})}raycast(A,I){var S,F,e,k,R,N,U,M,J,H,n,L,x,d,Y,p,O,gA,v,EA,W,QA,X;if(!XG()||!this.raycastable||!this.packedSplats&&!this.extSplats&&!this.paged)return;const g=this.paged!=null,B=g?((F=(S=this.paged)==null?void 0:S.pager)==null?void 0:F.extSplats)??!1:this.extSplats!=null,{near:C,far:E,ray:i}=A,o=this.matrixWorld.clone().invert(),D=new a.Matrix3().setFromMatrix4(o),w=i.origin.clone().applyMatrix4(o),s=i.direction.clone().applyMatrix3(D),t=JG(),G=t.length/4;let c=0;const h=((e=this.raycastIndices)==null?void 0:e.numSplats)??(g?(k=this.paged)==null?void 0:k.numSplats:this.context.numSplats.value)??0,y=((R=this.raycastIndices)==null?void 0:R.indices)??(g?(N=this.paged)==null?void 0:N.dynoIndices.value.image.data:this.context.enableLod.value?this.context.lodIndices.value.image.data:null)??null;if(B){const P=UG(),u=g?(Y=(d=this.paged)==null?void 0:d.pager)==null?void 0:Y.packedTexture.value.image.data:y?(O=(p=this.extSplats)==null?void 0:p.lodSplats)==null?void 0:O.extArrays[0]:(gA=this.extSplats)==null?void 0:gA.extArrays[0],m=g?(EA=(v=this.paged)==null?void 0:v.pager)==null?void 0:EA.extTexture.value.image.data:y?(QA=(W=this.extSplats)==null?void 0:W.lodSplats)==null?void 0:QA.extArrays[1]:(X=this.extSplats)==null?void 0:X.extArrays[1];if(!u||!m)return;for(let f=0;fB){for(;Bz(` + int index = ${C.index}; + if (${C.showLodPage} < 0) { + if (index >= ${C.numSplats}) { + return; + } + if (${C.enableLod}) { + ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); + uint splatIndex = texelFetch(${C.lodIndices}, lodIndexCoord, 0)[index & 3]; + ${E.index} = int(splatIndex); + } else { + ${E.index} = index; + } + } else { + int start = ${C.showLodPage} << 16; + if (index >= 65536) { + return; + } + ${E.index} = start + index; + } + `)}).outputs.index}function fB(Q,A,I,g){return gB({inTypes:{gsplat:V,rgba:MB,index:"int",enableLod:"bool"},outTypes:{gsplat:V},inputs:{gsplat:Q,rgba:A,index:I,enableLod:g},statements:({inputs:B,outputs:C})=>z(` + ${C.gsplat} = ${B.gsplat}; + if (!${B.enableLod} && (${B.index} >= 0) && (${B.index} < ${B.rgba}.count)) { + ${C.gsplat}.rgba = texelFetch(${B.rgba}.texture, splatTexCoord(${B.index}), 0); + } + `)}).outputs.gsplat}const uB=(()=>{const Q=new a.DataTexture(new Uint32Array(16384),4096,1,a.RGBAIntegerFormat,a.UnsignedIntType);return Q.internalFormat="RGBA32UI",Q.needsUpdate=!0,Q})(),BA=class BA{constructor({extSplats:A,covSplats:I}={}){if(this.time=0,this.deltaTime=0,this.viewToWorld=new a.Matrix4,this.viewOrigin=new a.Vector3,this.viewDirection=new a.Vector3,this.maxSplats=0,this.numSplats=0,this.target=null,this.mapping=[],this.version=-1,this.mappingVersion=-1,this.readback=null,this.readbackSplats=[],!kE)throw new Error("Spark requires THREE.js r179 or above");this.extSplats=A??!0,this.covSplats=I??!1}dispose(){this.target&&(this.target.dispose(),this.target=null)}getTextures(){return this.target?this.target.textures:BA.emptyTextures}generateMapping(A){let I=0;const g=A.map(B=>{const C=I,E=Math.ceil(B/b)*b;return I+=E,{base:C,count:B}});return{maxSplats:I,mapping:g}}ensureGenerate({maxSplats:A}){if(this.target&&(A??1)<=this.maxSplats)return!1;this.dispose();const I=iA(A??1),{width:g,height:B,depth:C}=I;if(this.maxSplats=I.maxSplats,this.target=new a.WebGLArrayRenderTarget(g,B,C,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:a.NearestFilter,minFilter:a.NearestFilter,format:a.RGBAIntegerFormat,type:a.UnsignedIntType}),this.target.scissorTest=!0,this.extSplats){const E=this.target.texture.clone(),i=this.target.texture.clone();i.format=a.RGBAFormat,i.type=a.UnsignedByteType,i.internalFormat="RGBA8",this.target.textures=[this.target.texture,E,i]}else{const E=this.target.texture.clone();E.format=a.RGBAFormat,E.type=a.UnsignedByteType,E.internalFormat="RGBA8",this.target.textures=[this.target.texture,E]}return!0}saveRenderState(A){return{target:A.getRenderTarget(),activeCubeFace:A.getActiveCubeFace(),activeMipmapLevel:A.getActiveMipmapLevel(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target,I.activeCubeFace,I.activeMipmapLevel),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}prepareProgramMaterial(A,I){const g=A??I;if(!g)throw new Error("Either generator or covGenerator must be provided");let B=BA.generatorProgram.get(g);if(!B){const E=HA({index:"int"},{},({index:i},o,{roots:D})=>{if(A&&(A.inputs.index=i),I&&(I.inputs.index=i),this.extSplats)if(this.covSplats)if(I){const w=lQ(I.outputs.covsplat);D.push(w)}else if(A){const w=Wg(A.outputs.gsplat),s=lQ(w);D.push(s)}else throw new Error("Generator must be provided");else if(A){const w=MC(A.outputs.gsplat);D.push(w)}else throw new Error("Generator must be provided");else{if(this.covSplats){let w;if(I)w=I.outputs.covsplat;else if(A)w=Wg(A.outputs.gsplat);else throw new Error("Generator must be provided");const s=EI(jg(w).outputs.center,BA.viewCenterUniform),t=FA(jg(w).outputs.opacity,IA("float",.5));w=iB({covsplat:w,center:s,opacity:t});const G=NC(w,IA("vec4",[0,1,fA,uA]));D.push(G)}else if(A){const w=EI(mA(A.outputs.gsplat).outputs.center,BA.viewCenterUniform),s=FA(mA(A.outputs.gsplat).outputs.opacity,IA("float",.5)),t=CI({gsplat:A.outputs.gsplat,center:w,opacity:s}),G=DB(t,IA("vec4",[0,1,fA,uA]));D.push(G)}else throw new Error("Generator must be provided");if(!A)throw new Error("Generator must be provided")}if(A){const w=JC(A.outputs.gsplat,BA.viewCenterUniform,BA.viewDirUniform,BA.sortRadialUniform);D.push(w)}if(I){const w=UC(I.outputs.covsplat,BA.viewCenterUniform,BA.viewDirUniform,BA.sortRadialUniform);D.push(w)}});B=new sQ({graph:E,inputs:{index:"_index"},outputs:{},template:this.extSplats?BA.programExtTemplate:BA.programTemplate}),BA.generatorProgram.set(g,B)}Object.assign(B.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}});const C=B.prepareMaterial();return BA.fullScreenQuad.material=C,{program:B,material:C}}generate({generator:A,covGenerator:I,base:g,count:B,renderer:C}){if(!this.target)throw new Error("Target must be initialized with ensureGenerate");if(g+B>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:E,material:i}=this.prepareProgramMaterial(A,I);E.update();const o=this.saveRenderState(C),D=Math.ceil((g+B)/b)*b,w=b*XA;for(i.uniforms.targetBase.value=g,i.uniforms.targetCount.value=B;g{k instanceof _I&&(!B.layers||B.layers.test(k.layers))&&D.push(k)});const w=new Set;I.traverseVisible(k=>{if(k instanceof Ng){let R=k.parent;for(;R!=null&&!(R instanceof jA);)R=R.parent;R==null&&w.add(k)}});const s=Array.from(w);for(const k of D)try{(e=k.frameUpdate)==null||e.call(k,{renderer:A,object:k,time:this.time,deltaTime:this.deltaTime,viewToWorld:this.viewToWorld,camera:B,renderSize:E,globalEdits:s,lodIndices:o&&k instanceof jA?o.get(k):void 0})}catch(R){console.error("frameUpdate error",R),k.generator=void 0,k.covGenerator=void 0,k.generatorError=R}const t=[];I.traverseVisible(k=>{k instanceof _I&&(!B.layers||B.layers.test(k.layers))&&t.push(k)});const G=t.map(k=>k.numSplats),{maxSplats:c,mapping:h}=this.generateMapping(G),y=i.mapping.reduce((k,R)=>(k.set(R.node,R),k),new Map);this.mapping=[],this.numSplats=0,h.forEach(({base:k,count:R},N)=>{const U=t[N],M=y.get(U);M&&M.count!==U.numSplats&&U.updateMappingVersion();const{generator:J,covGenerator:H}=U;if((J||H)&&R>0){const{version:n,mappingVersion:L}=U;this.mapping.push({node:U,generator:J,covGenerator:H,version:n,mappingVersion:L,base:k,count:R}),this.numSplats=Math.max(this.numSplats,k+R)}});const{splatsUpdated:S,mappingUpdated:F}=i.checkVersions(this.mapping);return this.version=i.version+(S?1:0),this.mappingVersion=i.mappingVersion+(F?1:0),{sameMapping:!F,version:this.version,mappingVersion:this.mappingVersion,visibleGenerators:t,generate:()=>{this.ensureGenerate({maxSplats:c});for(const{node:k,base:R,count:N}of this.mapping){const{generator:U,covGenerator:M}=k;(U||M)&&N>0&&this.generate({generator:U,covGenerator:M,base:R,count:N,renderer:A})}},readback:async()=>{const k=this.getTextures();this.readbackSplats.length===0&&(this.readbackSplats=[new pA({value:k[0],key:"extSplats"}),new pA({value:k[1],key:"extSplats"})]),this.readbackSplats[0].value=k[0],this.readbackSplats[1].value=k[1],this.readback||(this.readback=new zI({renderer:A}));const R=this.readback,N=this.extSplats?8:4,U=R.ensureBuffer(this.numSplats*N,new Uint32Array(0)),M=HA({index:"int"},{rgba8:"vec4"},({index:J})=>({rgba8:new l({inTypes:{index:"int",extSplats1:"usampler2DArray",extSplats2:"usampler2DArray"},outTypes:{rgba8:"vec4"},inputs:{index:J,extSplats1:this.readbackSplats[0],extSplats2:this.readbackSplats[1]},statements:({inputs:n,outputs:L})=>this.extSplats?z(` + int indexDiv8 = ${n.index} >> 3; + ivec3 coord = splatTexCoord(indexDiv8); + uvec4 packedData; + if ((${n.index} & 4) == 0) { + packedData = texelFetch(${n.extSplats1}, coord, 0); + } else { + packedData = texelFetch(${n.extSplats2}, coord, 0); + } + + int indexMod4 = ${n.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${L.rgba8} = uintToVec4(data); + `):z(` + int indexDiv4 = ${n.index} >> 2; + ivec3 coord = splatTexCoord(indexDiv4); + uvec4 packedData = texelFetch(${n.extSplats1}, coord, 0); + + int indexMod4 = ${n.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${L.rgba8} = uintToVec4(data); + `)}).outputs.rgba8}));return await R.renderReadback({reader:M,count:this.numSplats*N,renderer:A,readback:U})}}}checkVersions(A){if(this.mapping.length!==A.length)return{splatsUpdated:!0,mappingUpdated:!0};const I=this.mapping.some((B,C)=>{const E=A[C];return B.node!==E.node||B.base!==E.base||B.count!==E.count||B.mappingVersion!==E.mappingVersion});return I?{splatsUpdated:!0,mappingUpdated:!0}:{splatsUpdated:this.mapping.some((B,C)=>B.version!==A[C].version),mappingUpdated:I}}};BA.viewCenterUniform=new LI({value:new a.Vector3}),BA.viewDirUniform=new LI({value:new a.Vector3}),BA.sortRadialUniform=new rg({value:!0}),BA.emptyTexture=(()=>{const{width:A,height:I,depth:g,maxSplats:B}=iA(1),C=new Uint32Array(B*4),E=new a.DataArrayTexture(C,A,I,g);return E.format=a.RGBAIntegerFormat,E.type=a.UnsignedIntType,E.internalFormat="RGBA32UI",E.needsUpdate=!0,E})(),BA.emptyTextures=[BA.emptyTexture,BA.emptyTexture],BA.programExtTemplate=new Rg(eg().computeUvec4x2Vec4Template),BA.programTemplate=new Rg(eg().computeUvec4Vec4Template),BA.generatorProgram=new WeakMap,BA.fullScreenQuad=new _Q.FullScreenQuad(new a.RawShaderMaterial({visible:!1}));let MI=BA;class wh extends a.InstancedBufferGeometry{constructor(){super(),this.setAttribute("position",new a.BufferAttribute(ah,3)),this.setIndex(new a.BufferAttribute(th,1))}}const ah=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),th=new Uint16Array([0,1,2,0,2,3]),oA=class oA extends a.Mesh{constructor(A){if(!A)throw new Error("SparkRenderer options are required");if(!A.renderer)throw new Error("renderer is required in SparkRenderer options");const I=oA.makeUniforms();Object.assign(I,A.extraUniforms??{});const g=eg(),B=A.premultipliedAlpha??!0,C=new wh,E=new a.ShaderMaterial({glslVersion:a.GLSL3,vertexShader:A.vertexShader??g.splatVertex,fragmentShader:A.fragmentShader??g.splatFragment,uniforms:I,premultipliedAlpha:B,transparent:A.transparent??!0,depthTest:A.depthTest??!0,depthWrite:A.depthWrite??!1,side:a.DoubleSide,allowOverride:!1});super(C,E),this.renderSize=new a.Vector2,this.lastFrame=-1,this.updateTimeoutId=-1,this.orderingTexture=null,this.maxSplats=0,this.activeSplats=0,this.accumulators=[],this.sorting=!1,this.sortDirty=!1,this.lastSortTime=0,this.sortWorker=null,this.sortTimeoutId=-1,this.sortedCenter=new a.Vector3().setScalar(Number.NEGATIVE_INFINITY),this.sortedDir=new a.Vector3().setScalar(0),this.readback32=new Uint32Array(0),this.lastLodRaycastTime=0,this.lodWorker=null,this.lodMeshes=[],this.lodDirty=!1,this.lodIds=new Map,this.lodIdToSplats=new Map,this.lodInitQueue=[],this.lodInstances=new Map,this.lodUpdates=[],this.lastTraverseTime=0,this.pagerId=0,this.superXY=1,this.flushAfterGenerate=!1,this.flushAfterRead=!1,this.readPause=1,this.sortPause=0,this.sortDelay=0,this.pageSizeWarning=!1,this.material=E,this.uniforms=I,this.frustumCulled=!1,this.renderer=A.renderer,this.onDirty=A.onDirty,this.dirty=!0,this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!0,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.gaussianK=A.gaussianK??1,this.minPixelRadius=A.minPixelRadius??0,this.maxPixelRadius=A.maxPixelRadius??512,this.accumExtSplats=A.accumExtSplats??!1,this.covSplats=A.covSplats??!1,this.minAlpha=A.minAlpha??.5*(1/255),this.enable2DGS=A.enable2DGS??!1,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.focalDistance=A.focalDistance??0,this.apertureAngle=A.apertureAngle??0,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.focalAdjustment=A.focalAdjustment??1,this.sortRadial=A.sortRadial??!0,this.minSortIntervalMs=A.minSortIntervalMs??0,this.enableLod=A.enableLod??!0,this.enableDriveLod=A.enableDriveLod??this.enableLod,this.enableLodFetching=A.enableLodFetching??!0,this.lodSplatCount=A.lodSplatCount,this.lodSplatScale=A.lodSplatScale??1,this.lodRenderScale=A.lodRenderScale??1,this.lodInflate=A.lodInflate??!1,this.lodTraverseMode=A.lodTraverseMode??"standard",this.pagedExtSplats=A.pagedExtSplats??!1;const i=Fg()?jI()?96:128:256;this.maxPagedSplats=A.maxPagedSplats??i*65536,this.numLodFetchers=A.numLodFetchers??3,this.behindFoveate=A.behindFoveate??.2,this.coneFov0=A.coneFov0??90,this.coneFov=A.coneFov??120,this.coneFoveate=A.coneFoveate??.4,this.lodRaycast=A.lodRaycast===void 0?Fg()?1e4:25e3:A.lodRaycast,this.lodRaycastIntervalMs=A.lodRaycastIntervalMs??500,this.clock=A.clock?rE(A.clock):new a.Clock;const o={extSplats:this.accumExtSplats,covSplats:this.covSplats};this.display=new MI(o),this.current=this.display,this.accumulators.push(new MI(o)),this.accumulators.push(new MI(o));const D=this.renderer.getContext().getExtension("WEBGL_provoking_vertex");if(D&&D.provokingVertexWEBGL(D.FIRST_VERTEX_CONVENTION_WEBGL),A.target){const{width:w,height:s,doubleBuffer:t,superXY:G,...c}=A.target,h=Math.max(1,Math.min(4,G??1));if(w*h>8192||s*h>8192)throw new Error("Target size too large");this.superXY=h;const y=w*h,S=s*h,F={format:a.RGBAFormat,type:a.UnsignedByteType,colorSpace:a.SRGBColorSpace,...c};this.target=new a.WebGLRenderTarget(y,S,F),t&&(this.backTarget=new a.WebGLRenderTarget(y,S,F))}}static makeUniforms(){return{renderSize:{value:new a.Vector2},near:{value:.1},far:{value:1e3},renderToViewQuat:{value:new a.Quaternion},renderToViewPos:{value:new a.Vector3},renderToViewBasis:{value:new a.Matrix3},renderToViewOffset:{value:new a.Vector3},maxStdDev:{value:1},gaussianK:{value:1},minPixelRadius:{value:0},maxPixelRadius:{value:512},minAlpha:{value:.00196078431372549},enable2DGS:{value:!1},lodInflate:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},focalDistance:{value:0},apertureAngle:{value:0},falloff:{value:1},clipXY:{value:1.4},focalAdjustment:{value:1},encodeLinear:{value:!1},ordering:{type:"t",value:oA.emptyOrdering},enableExtSplats:{value:!1},enableCovSplats:{value:!1},extSplats:{type:"t",value:MI.emptyTexture},extSplats2:{type:"t",value:MI.emptyTexture},time:{value:0},deltaTime:{value:0},debugFlag:{value:!1}}}dispose(){this.target&&(this.target.dispose(),this.target=void 0),this.backTarget&&(this.backTarget.dispose(),this.backTarget=void 0),this.orderingTexture&&(this.orderingTexture.dispose(),this.orderingTexture=null);const A=new Set;A.add(this.display),A.add(this.current);for(const g of this.accumulators)A.add(g);for(const g of A)g.dispose();const I=this.lodInstances.values();this.lodInstances.clear();for(const g of I)g.texture.dispose();this.sortWorker&&(this.sortWorker.dispose(),this.sortWorker=null),this.lodWorker&&(this.lodWorker.dispose(),this.lodWorker=null),this.pager&&(this.pager.dispose(),this.pager=void 0)}setDirty(){var A;this.dirty||(this.dirty=!0,(A=this.onDirty)==null||A.call(this))}onBeforeRender(A,I,g){var y;const B=oA.sparkOverride??this,C=A.info.render.frame,E=C!==B.lastFrame;B.lastFrame=C;const i=A.getRenderTarget(),o=Gh(i);if(i){if(B.renderSize.set(i.width,i.height),o&&B.renderSize.x===1&&B.renderSize.y===1){const S=(y=A.xr.getSession())==null?void 0:y.renderState.baseLayer;S&&(B.renderSize.x=S.framebufferWidth,B.renderSize.y=S.framebufferHeight)}}else A.getDrawingBufferSize(B.renderSize);this.uniforms.renderSize.value.copy(B.renderSize);const D=g;this.uniforms.near.value=D.near,this.uniforms.far.value=D.far;const w=this.geometry;w.instanceCount=B.activeSplats;const s=new a.Matrix4;this.display.extSplats||s.makeTranslation(B.display.viewOrigin);const c=g.matrixWorld.clone().invert().multiply(s);c.decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new a.Vector3),this.uniforms.renderToViewBasis.value.setFromMatrix4(c),this.uniforms.maxStdDev.value=B.maxStdDev,this.uniforms.gaussianK.value=B.gaussianK,this.uniforms.minPixelRadius.value=B.minPixelRadius,this.uniforms.maxPixelRadius.value=B.maxPixelRadius,this.uniforms.minAlpha.value=B.minAlpha,this.uniforms.enable2DGS.value=B.enable2DGS,this.uniforms.lodInflate.value=B.lodInflate,this.uniforms.preBlurAmount.value=B.preBlurAmount,this.uniforms.blurAmount.value=B.blurAmount,this.uniforms.focalDistance.value=B.focalDistance,this.uniforms.apertureAngle.value=B.apertureAngle,this.uniforms.falloff.value=B.falloff,this.uniforms.clipXY.value=B.clipXY,this.uniforms.focalAdjustment.value=B.focalAdjustment;const h=i===null?A.outputColorSpace:o?i.texture.colorSpace:a.ColorManagement.workingColorSpace;if(this.uniforms.encodeLinear.value=h!==a.SRGBColorSpace,this.uniforms.ordering.value=B.orderingTexture??oA.emptyOrdering,this.uniforms.enableExtSplats.value=this.display.extSplats,this.uniforms.enableCovSplats.value=this.display.covSplats,this.display.extSplats){const S=B.display.getTextures();this.uniforms.extSplats.value=S[0],this.uniforms.extSplats2.value=S[1]}else{const S=B.display.getTextures();this.uniforms.extSplats.value=S[0],this.uniforms.extSplats2.value=S[0]}if(this.uniforms.time.value=B.display.time,this.uniforms.deltaTime.value=B.display.deltaTime,this.uniforms.debugFlag.value=performance.now()/1e3%2<1,B.autoUpdate&&E){const S=B.preUpdate&&!A.xr.isPresenting,F=A.xr.isPresenting?A.xr.getCamera():g;S?B.updateInternal({scene:I,camera:F,autoUpdate:!0}):B.updateTimeoutId===-1&&(B.updateTimeoutId=setTimeout(()=>{B.updateTimeoutId=-1,B.updateInternal({scene:I,camera:F,autoUpdate:!0})},1))}B.dirty=!1}clearSplats(){this.activeSplats=0,this.display.numSplats=0,this.setDirty()}async update({scene:A,camera:I}){await this.updateInternal({scene:A,camera:I,autoUpdate:!1})}async updateInternal({scene:A,camera:I,autoUpdate:g}){const B=this.renderer,C=this.time??this.clock.getElapsedTime(),E=I.getWorldPosition(new a.Vector3),i=I.getWorldDirection(new a.Vector3),o=E.distanceTo(this.sortedCenter)>.001||i.dot(this.sortedDir)<.999,D=this.accumulators.pop();if(!D)throw new Error("No next accumulator");if(D===this.current)throw new Error("Next accumulator is the same as the current accumulator");const{version:w,mappingVersion:s,visibleGenerators:t,generate:G}=D.prepareGenerate({renderer:B,scene:A,time:C,camera:I,sortRadial:this.sortRadial??!0,renderSize:this.renderSize,previous:this.current,lodInstances:this.enableLod?this.lodInstances:void 0});let c=!0;const h=o||w!==this.current.version,y=s!==this.display.mappingVersion;g&&!h&&(c=!1),y&&this.sorting&&(c=!1),c?(G(),this.flushAfterGenerate&&B.getContext().flush(),this.display.mappingVersion===D.mappingVersion?(this.accumulators.push(this.display),this.display=D):this.display!==this.current&&this.accumulators.push(this.current),this.current=D,this.sortDirty=!0,this.setDirty()):this.accumulators.push(D),this.enableDriveLod&&this.driveLod({visibleGenerators:t,camera:I,scene:A}),await this.driveSort()}async driveSort(){if(this.sorting||!this.sortDirty)return;this.sortTimeoutId!==-1&&(clearTimeout(this.sortTimeoutId),this.sortTimeoutId=-1);const A=performance.now(),I=this.lastSortTime?this.lastSortTime+this.minSortIntervalMs:A;if(A{this.sortTimeoutId=-1,this.driveSort()},I-A);return}this.sorting=!0,this.sortDirty=!1,this.lastSortTime=A,this.readPause>0&&await new Promise(s=>setTimeout(s,this.readPause));const g=this.current;this.sortedCenter.copy(g.viewOrigin),this.sortedDir.copy(g.viewDirection);const{numSplats:B,maxSplats:C}=g,E=Math.max(1,Math.ceil(C/16384)),i=E*16384;this.maxSplats=Math.max(this.maxSplats,i);const o=new Uint32Array(this.maxSplats),D=zI.ensureBuffer(C,this.readback32);this.readback32=D,await this.readbackDepth({current:g,renderer:this.renderer,numSplats:B,readback:D}),this.sortPause>0&&await new Promise(s=>setTimeout(s,this.sortPause)),this.sortWorker||(this.sortWorker=new Ug);const w=await this.sortWorker.call("sortSplats32",{numSplats:B,readback:D,ordering:o});if(this.sortDelay>0&&await new Promise(s=>setTimeout(s,this.sortDelay)),this.readback32=w.readback,this.activeSplats=w.activeSplats,this.orderingTexture&&E>this.orderingTexture.image.height&&(this.orderingTexture.dispose(),this.orderingTexture=null),this.orderingTexture){const s=this.renderer;s.properties.has(this.orderingTexture)?hB(s,this.orderingTexture,4096,E,w.ordering):this.orderingTexture.needsUpdate=!0}else{const s=new a.DataTexture(w.ordering,4096,E,a.RGBAIntegerFormat,a.UnsignedIntType);s.internalFormat="RGBA32UI",s.needsUpdate=!0,this.orderingTexture=s}this.current.mappingVersion===g.mappingVersion&&this.current.mappingVersion!==this.display.mappingVersion&&(this.accumulators.push(this.display),this.display=this.current),this.sorting=!1,this.setDirty(),this.driveSort()}ensureLodWorker(){return this.lodWorker||(this.lodWorker=new Ug),this.lodWorker}defaultSplatTarget(){return oQ()?5e5:tB()?75e4:DQ()?1e6:jI()?15e5:25e5}driveLod({visibleGenerators:A,camera:I,scene:g}){var G,c;const B=this.defaultSplatTarget(),E=(this.lodSplatCount??B)*this.lodSplatScale;let i=0;if(I instanceof a.PerspectiveCamera)i=2*Math.tan(.5*I.fov*Math.PI/180)/this.renderSize.y;else if(I instanceof a.OrthographicCamera){const h=(I.top-I.bottom)/I.zoom,y=(I.right-I.left)/I.zoom,S=h/Math.max(1,this.renderSize.y),F=y/Math.max(1,this.renderSize.x);i=Math.min(F,S)}i*=this.lodRenderScale;const o=new a.Vector3,D=new a.Quaternion;if(this.current.viewToWorld.decompose(o,D,new a.Vector3),this.lodPosOverride&&o.copy(this.lodPosOverride),this.lodQuatOverride&&D.copy(this.lodQuatOverride).normalize(),this.lastLod){(this.lastLod.pixelScaleLimit!==i||this.lastLod.maxSplats!==E)&&(this.lodDirty=!0);const h=o.distanceTo(this.lastLod.pos),y=Math.max(0,1-h/1),S=D.dot(this.lastLod.quat),F=Math.max(0,1-(1-S)/.01);y*F<.999&&(this.lodDirty=!0)}const w=this.enableLod?A.filter(h=>{var y,S;return h instanceof jA&&(((y=h.packedSplats)==null?void 0:y.lodSplats)||((S=h.extSplats)==null?void 0:S.lodSplats)||h.paged)&&h.enableLod!==!1}):[],s=w.some(h=>h.paged);this.lodMeshes.length!==w.length?this.lodDirty=!0:w.some((h,y)=>h!==this.lodMeshes[y].mesh||h.version>this.lodMeshes[y].version)&&(this.lodDirty=!0),this.lodMeshes=w.map(h=>({mesh:h,version:h.version+1})),this.lodInitQueue=[];const t=performance.now();for(const h of w){const y=((G=h.packedSplats)==null?void 0:G.lodSplats)??((c=h.extSplats)==null?void 0:c.lodSplats)??h.paged;if(y){const S=this.lodIds.get(y);S?S.lastTouched=t:this.lodInitQueue.push(y)}}this.ensureLodWorker().tryExclusive(async h=>{if(s&&!this.pager){this.pager=new hI({renderer:this.renderer,extSplats:this.pagedExtSplats,maxSplats:this.maxPagedSplats,numFetchers:this.numLodFetchers});const{lodId:y}=await h.call("newLodTree",{capacity:this.pager.maxSplats});this.pagerId=y}if(this.pager)for(const{mesh:y}of this.lodMeshes)y.paged&&!y.paged.pager&&(y.paged.pager=this.pager);if(this.lodInitQueue.length>0){const y=this.lodInitQueue;for(this.lodInitQueue=[];y.length>0;){const S=y.shift();S&&(await this.initLodTree(h,S),this.lodDirty=!0)}}if(this.pager){const y=this.pager.consumeLodTreeUpdates();for(const{splats:S,page:F,chunk:e,numSplats:k,lodTree:R}of y){const N=this.lodIds.get(S);N&&(R&&e===0&&(N.rootPage=F),this.lodUpdates.push({lodId:N.lodId,pageBase:F*this.pager.pageSplats,chunkBase:e*this.pager.pageSplats,count:k,lodTreeData:R}))}}if(this.lodUpdates.length>0){const y=this.lodUpdates;this.lodUpdates=[],await h.call("updateLodTrees",{ranges:y}),this.lodDirty=!0}if(this.lodDirty){const y=performance.now(),S=new a.Vector3;if(this.lastLod){const F=Math.max(1,y-this.lastLod.timestamp);S.copy(o).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime/F)}this.lastLod={pos:o,quat:D,pixelScaleLimit:i,maxSplats:E,timestamp:y},this.lodDirty=!1,await this.updateLodInstances(h,S,w,E,o,D,i),this.currentLod=this.lastLod,this.setDirty()}await this.cleanupLodTrees(h)})}async initLodTree(A,I){if(I instanceof wI||I instanceof QI){const{lodId:g}=await A.call("initLodTree",{numSplats:I.numSplats??0,lodTree:I.extra.lodTree.slice()});this.lodIds.set(I,{lodId:g,lastTouched:performance.now()}),this.lodIdToSplats.set(g,I)}else{const{lodId:g}=await A.call("newSharedLodTree",{lodId:this.pagerId});this.lodIds.set(I,{lodId:g,lastTouched:performance.now()}),this.lodIdToSplats.set(g,I)}}async updateLodInstances(A,I,g,B,C,E,i){const o=new Map,D=new a.Matrix4().compose(C,E,new a.Vector3().setScalar(1)),w=g.reduce((S,F)=>{var N,U;o.set(F.uuid,F);const e=F.matrixWorld.clone().invert().multiply(D),k=((N=F.packedSplats)==null?void 0:N.lodSplats)??((U=F.extSplats)==null?void 0:U.lodSplats)??F.paged;if(!k)return S;const R=this.lodIds.get(k);return!R||this.pager&&F.paged&&R.rootPage===void 0||(S[F.uuid]={instanceId:F.uuid,lodId:R.lodId,rootPage:R.rootPage,viewToObjectCols:e.elements,lodScale:F.lodScale,behindFoveate:F.behindFoveate??this.behindFoveate,coneFov0:F.coneFov0??this.coneFov0,coneFov:F.coneFov??this.coneFov,coneFoveate:F.coneFoveate??this.coneFoveate}),S},{}),s=performance.now(),t=await A.call("traverseLodTrees",{maxSplats:B,pixelScaleLimit:i,lastPixelLimit:this.lastPixelLimit,instances:w,traverseMode:this.lodTraverseMode});this.lastTraverseTime=performance.now()-s;const{keyIndices:G,chunks:c,pixelLimit:h}=t;this.lastPixelLimit=h;const y=Object.values(G).reduce((S,{numSplats:F})=>S+F,0);if(this.updateLodIndices(o,G),this.pager){this.pager.processUploads();const S=g.map(F=>{if(!F.paged||!this.pager)return null;const e=F.getWorldPosition(new a.Vector3);return{splats:F.paged,distance:e.distanceTo(C)}}).filter(F=>F!==null);!this.pageSizeWarning&&S.length>this.pager.maxPages&&(this.pageSizeWarning=!0,console.warn(`# paged SplatMeshes exceeds maxPages: ${S.length} > ${this.pager.maxPages}`)),S.sort((F,e)=>F.distance-e.distance),this.pager.fetchPriority=S.map(({splats:F})=>({splats:F,chunk:0}));for(const[F,e]of c){const k=this.lodIdToSplats.get(F);k instanceof WI&&e!==0&&this.pager.fetchPriority.push({splats:k,chunk:e})}this.pager.autoDrive=this.enableLodFetching,this.enableLodFetching&&this.pager.driveFetchers()}if(this.lodRaycast&&performance.now()-this.lastLodRaycastTime>=this.lodRaycastIntervalMs){this.lastLodRaycastTime=performance.now();const S=performance.now(),F=await A.call("traverseLodTrees",{maxSplats:Math.min(this.lodRaycast,Math.round(y*.1)),pixelScaleLimit:i,instances:w});performance.now()-S;const{keyIndices:e}=F;Object.values(e).reduce((k,{numSplats:R})=>k+R,0);for(const[k,R]of Object.entries(e)){const N=o.get(k);N.raycastIndices=R}}}async cleanupLodTrees(A){var C;const g=performance.now();let B=null;for(const[E,i]of this.lodIds.entries())(B==null||i.lastTouchedg-3e3)){this.lodIds.delete(B.splats),this.lodIdToSplats.delete(B.lodId);for(const[E,i]of this.lodInstances.entries())i.lodId===B.lodId&&(i.texture.dispose(),this.lodInstances.delete(E));B.splats instanceof WI&&((C=this.pager)==null||C.removeSplats(B.splats)),await A.call("disposeLodTree",{lodId:B.lodId})}}updateLodIndices(A,I){for(const[g,B]of Object.entries(I)){const{lodId:C,numSplats:E,indices:i}=B,o=A.get(g);if(o.paged)o.paged.update(E,i);else{let D=this.lodInstances.get(o);D&&i.length>D.indices.length&&(D.texture.dispose(),D=void 0);const w=Math.ceil(i.length/16384);if(D){D.numSplats=E;const s=this.renderer,t=s.getContext();if(s.properties.has(D.texture)){const c=s.properties.get(D.texture).__webglTexture;if(!c)throw new Error("lodIndices texture not found");s.state.activeTexture(t.TEXTURE0),s.state.bindTexture(t.TEXTURE_2D,c),t.bindBuffer(t.PIXEL_UNPACK_BUFFER,null),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.texSubImage2D(t.TEXTURE_2D,0,0,0,4096,w,t.RGBA_INTEGER,t.UNSIGNED_INT,i),s.state.bindTexture(t.TEXTURE_2D,null)}}else{const s=w*16384;if(i.length!==s)throw new Error("Indices length != capacity");const t=new a.DataTexture(i,4096,w,a.RGBAIntegerFormat,a.UnsignedIntType);t.internalFormat="RGBA32UI",t.needsUpdate=!0,D={lodId:C,numSplats:E,indices:i,texture:t},this.lodInstances.set(o,D)}}o.updateMappingVersion()}}async readbackDepth({current:A,renderer:I,numSplats:g,readback:B}){if(!I)throw new Error("No renderer");if(!A.target)throw new Error("No target");const C=Math.ceil(g/b)*b;if(B.byteLengthB)}saveRenderState(A){return{target:A.getRenderTarget(),xrEnabled:A.xr.enabled,autoClear:A.autoClear}}resetRenderState(A,I){A.setRenderTarget(I.target),A.xr.enabled=I.xrEnabled,A.autoClear=I.autoClear}render(A,I){try{oA.sparkOverride=this,this.renderer.render(A,I)}finally{oA.sparkOverride=void 0}}renderTarget({scene:A,camera:I}){const g=this.backTarget??this.target;if(!g)throw new Error("No target");const B=this.renderer.getRenderTarget();try{this.renderer.setRenderTarget(g),oA.sparkOverride=this,this.renderer.render(A,I)}finally{oA.sparkOverride=void 0,this.renderer.setRenderTarget(B)}return g!==this.target&&([this.target,this.backTarget]=[this.backTarget,this.target]),g}async readTarget(){if(!this.target)throw new Error("Must initialize with target");const{width:A,height:I}=this.target,g=A*I*4;(!this.superPixels||this.superPixels.length{if(g instanceof a.Mesh)if(Array.isArray(g.material))for(const B of g.material)B instanceof a.MeshStandardMaterial&&(B.envMap=I);else g.material instanceof a.MeshStandardMaterial&&(g.material.envMap=I)})}async getLodTreeLevel(A,I,g=!1){var E,i;const B=this.lodInstances.get(A);if(!B)return null;const C=await this.ensureLodWorker().exclusive(async o=>await o.call("getLodTreeLevel",{lodId:B.lodId,level:I}));if((E=A.packedSplats)!=null&&E.lodSplats){const o=A.packedSplats.lodSplats.extractSplats(C.indices,g);return new jA({packedSplats:o})}if((i=A.extSplats)!=null&&i.lodSplats){const o=A.extSplats.lodSplats.extractSplats(C.indices,g);return new jA({extSplats:o})}throw new Error("Only LoD-enabled PackedSplats and ExtSplats are supported")}get premultipliedAlpha(){return this.material.premultipliedAlpha}set premultipliedAlpha(A){this.material.premultipliedAlpha!==A&&(this.material.premultipliedAlpha=A,this.material.needsUpdate=!0)}};oA.emptyOrdering=(()=>{const I=new Uint32Array(16384),g=new a.DataTexture(I,4096,1);return g.format=a.RGBAIntegerFormat,g.type=a.UnsignedIntType,g.internalFormat="RGBA32UI",g.needsUpdate=!0,g})(),oA.cubeRender=null,oA.pmrem=null;let Lg=oA;function Gh(Q){return Q==null?void 0:Q.isXRRenderTarget}const bB=["char","uchar","short","ushort","int","uint","float","double"],OI=class OI{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:E=>{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header +`;for(;;){const{value:E,done:i}=await I.read();if(i)throw new Error("Failed to read header");this.header+=E;const o=this.header.indexOf(g);if(o>=0){this.header=this.header.slice(0,o+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(` +`).forEach((E,i)=>{const o=E.trim();if(i===0){if(o!=="ply")throw new Error("Invalid PLY header");return}if(o.length===0)return;const D=o.split(" ");switch(D[0]){case"format":if(D[1]==="binary_little_endian")this.littleEndian=!0;else if(D[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${D[1]}`);if(D[2]!=="1.0")throw new Error(`Unsupported PLY version: ${D[2]}`);break;case"end_header":break;case"comment":this.comments.push(o.slice(8));break;case"element":{const w=D[1];C={name:w,count:Number.parseInt(D[2]),properties:{}},this.elements[w]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");D[1]==="list"?C.properties[D[4]]={isList:!0,type:D[3],countType:D[2]}:C.properties[D[2]]={isList:!1,type:D[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:i}=C,o=ch(i),D=Sh(i,this.littleEndian),w=A(C)??(()=>{});for(let s=0;s[0,1,2].map((k,R)=>e+R*S/3)),i=new Array(5).fill(null).flatMap((F,e)=>[0,1,2].map((k,R)=>3+e+R*S/3)),o=new Array(7).fill(null).flatMap((F,e)=>[0,1,2].map((k,R)=>8+e+R*S/3)),D=C>=1?new Float32Array(3*3):void 0,w=C>=2?new Float32Array(5*3):void 0,s=C>=3?new Float32Array(7*3):void 0}function G(S,F){if(!D)throw new Error("Missing sh1");const e=F.f_rest;for(let k=0;k{const{min_x:p,min_y:O,min_z:gA,max_x:v,max_y:EA,max_z:W,min_scale_x:QA,min_scale_y:X,min_scale_z:P,max_scale_x:u,max_scale_y:m,max_scale_z:f,min_r:yA,min_g:aA,min_b:cA,max_r:SA,max_g:sA,max_b:tA}=Y;B.push({min_x:p,min_y:O,min_z:gA,max_x:v,max_y:EA,max_z:W,min_scale_x:QA,min_scale_y:X,min_scale_z:P,max_scale_x:u,max_scale_y:m,max_scale_z:f,min_r:yA,min_g:aA,min_b:cA,max_r:SA,max_g:sA,max_b:tA})}}function h(S){if(I&&S.name==="sh")return C=XQ(S.properties),t(),G;if(S.name!=="vertex")return null;const{packed_position:F,packed_rotation:e,packed_scale:k,packed_color:R}=S.properties;if(!F||!e||!k||!R)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const N=Math.sqrt(2);return(U,M)=>{const J=B[U>>>8];if(J==null)throw new Error("Missing PLY chunk");const{min_x:H,min_y:n,min_z:L,max_x:x,max_y:d,max_z:Y,min_scale_x:p,min_scale_y:O,min_scale_z:gA,max_scale_x:v,max_scale_y:EA,max_scale_z:W,min_r:QA,min_g:X,min_b:P,max_r:u,max_g:m,max_b:f}=J,{packed_position:yA,packed_rotation:aA,packed_scale:cA,packed_color:SA}=M,sA=(yA>>>21&2047)/2047*(x-H)+H,tA=(yA>>>11&1023)/1023*(d-n)+n,AI=(yA&2047)/2047*(Y-L)+L,TA=((aA>>>20&1023)/1023-.5)*N,SI=((aA>>>10&1023)/1023-.5)*N,FI=((aA&1023)/1023-.5)*N,_=Math.sqrt(Math.max(0,1-TA*TA-SI*SI-FI*FI)),OA=aA>>>30,UA=OA===0?TA:OA===1?_:SI,Qg=OA<=1?SI:OA===2?_:FI,xg=OA<=2?FI:_,ZA=OA===0?_:TA,$=Math.exp((cA>>>21&2047)/2047*(v-p)+p),tI=Math.exp((cA>>>11&1023)/1023*(EA-O)+O),yQ=Math.exp((cA&2047)/2047*(W-gA)+gA),cQ=(SA>>>24&255)/255*((u??1)-(QA??0))+(QA??0),SQ=(SA>>>16&255)/255*((m??1)-(X??0))+(X??0),FQ=(SA>>>8&255)/255*((f??1)-(P??0))+(P??0),RQ=(SA&255)/255;A(U,sA,tA,AI,$,tI,yQ,UA,Qg,xg,ZA,RQ,cQ,SQ,FQ)}}const y=S=>{if(S.name==="chunk")return c(S);if(g)return h(S);if(S.name!=="vertex")return null;const{x:F,y:e,z:k,scale_0:R,scale_1:N,scale_2:U,rot_0:M,rot_1:J,rot_2:H,rot_3:n,opacity:L,f_dc_0:x,f_dc_1:d,f_dc_2:Y,red:p,green:O,blue:gA,alpha:v}=S.properties;if(!F||!e||!k)throw new Error("Missing PLY properties: x, y, z");const EA=R&&N&&U,W=M&&J&&H&&n,QA=v!=null?Pg[v.type]:1,X=p!=null?Pg[p.type]:1,P=O!=null?Pg[O.type]:1,u=gA!=null?Pg[gA.type]:1;return C=XQ(S.properties),t(),(m,f)=>{const yA=EA?Math.exp(f.scale_0):OI.defaultPointScale,aA=EA?Math.exp(f.scale_1):OI.defaultPointScale,cA=EA?Math.exp(f.scale_2):OI.defaultPointScale,SA=W?f.rot_1:0,sA=W?f.rot_2:0,tA=W?f.rot_3:0,AI=W?f.rot_0:1,TA=L!=null?1/(1+Math.exp(-f.opacity)):v!=null?f.alpha/QA:1,SI=x!=null?f.f_dc_0*bg+.5:p!=null?f.red/X:1,FI=d!=null?f.f_dc_1*bg+.5:O!=null?f.green/P:1,_=Y!=null?f.f_dc_2*bg+.5:gA!=null?f.blue/u:1;if(A(m,f.x,f.y,f.z,yA,aA,cA,SA,sA,tA,AI,TA,SI,FI,_),I&&D){const OA=f.f_rest;if(D)for(let UA=0;UA{const G=TI[t.countType](g,I,this.littleEndian);I+=BI[t.countType],I+=G*BI[t.type]});else{if(w)if(s==="f_dc_0"||s==="f_dc_1"||s==="f_dc_2"){const G=Number.parseInt(s.slice(5));o.push(()=>{const c=(A[D+G]/255-.5)/bg;PB[t.type](g,I,this.littleEndian,c)})}else s==="opacity"&&o.push(()=>{const G=Math.max(-100,Math.min(100,-Math.log(1/(A[D+3]/255)-1)));PB[t.type](g,I,this.littleEndian,G)});o.push(()=>{I+=BI[t.type]})}for(let s=0;sQ.getInt8(A),uchar:(Q,A,I)=>Q.getUint8(A),short:(Q,A,I)=>Q.getInt16(A,I),ushort:(Q,A,I)=>Q.getUint16(A,I),int:(Q,A,I)=>Q.getInt32(A,I),uint:(Q,A,I)=>Q.getUint32(A,I),float:(Q,A,I)=>Q.getFloat32(A,I),double:(Q,A,I)=>Q.getFloat64(A,I)},PB={char:(Q,A,I,g)=>{Q.setInt8(A,g)},uchar:(Q,A,I,g)=>{Q.setUint8(A,g)},short:(Q,A,I,g)=>{Q.setInt16(A,g,I)},ushort:(Q,A,I,g)=>{Q.setUint16(A,g,I)},int:(Q,A,I,g)=>{Q.setInt32(A,g,I)},uint:(Q,A,I,g)=>{Q.setUint32(A,g,I)},float:(Q,A,I,g)=>{Q.setFloat32(A,g,I)},double:(Q,A,I,g)=>{Q.setFloat64(A,g,I)}},BI={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},Pg={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},hh={0:0,9:1,24:2,45:3},yh={0:0,1:9,2:24,3:45},JB=/^f_rest_([0-9]{1,2})$/;function ch(Q){const A={};for(const[I,g]of Object.entries(Q))JB.test(I)?A.f_rest=new Array(XQ(Q)):A[I]=g.isList?[]:0;return A}function Sh(Q,A){return kh(Q)?eh(Q,A):Nh(Q,A)}const Fh=(()=>{try{new Function("return 42;")}catch{return!1}return!0})(),Rh=/^[a-zA-Z0-9_]+$/;function kh(Q){if(!Fh)return!1;for(const[A,I]of Object.entries(Q))if(!Rh.test(A)||I.isList&&!bB.includes(I.countType)||!bB.includes(I.type))return!1;return!0}function eh(Q,A){const I=["let list;"];for(const[B,C]of Object.entries(Q)){const E=B.match(JB);if(E){const i=+E[1];I.push(` + item.f_rest[${i}] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${BI[C.type]}; + `)}else C.isList?I.push(` + list = item['${B}']; + list.length = PARSE_FIELD['${C.countType}'](data, offset, ${A}); + offset += ${BI[C.countType]}; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${BI[C.type]}; + } + `):I.push(` + item['${B}'] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${BI[C.type]}; + `)}I.push("return offset;");const g=new Function("data","offset","item","PARSE_FIELD",I.join(` +`));return(B,C,E)=>g(B,C,E,TI)}function Nh(Q,A){const I=[];for(const[g,B]of Object.entries(Q)){const C=g.match(JB);if(C){const E=+C[1];I.push((i,o,D)=>(D.f_rest[E]=TI[B.type](i,o,A),o+BI[B.type]))}else B.isList?I.push((E,i,o)=>{const D=o[g];D.length=TI[B.countType](E,i,A);let w=i+BI[B.countType];for(let s=0;s(o[g]=TI[B.type](E,i,A),i+BI[B.type]))}return(g,B,C)=>{let E=B;for(let i=0;i2)throw new Error(`Invalid .ksplat compression level: ${s}`);const t=i.getFloat32(36,!0)||-1.5,G=i.getFloat32(40,!0)||1.5;let c=4096+w*1024;for(let y=0;y=1?new Float32Array(3*3):void 0,tA=Y>=2?new Float32Array(5*3):void 0,AI=Y>=3?new Float32Array(7*3):void 0,TA=U/2/J,SI=c+x,FI=c+d,_=new DataView(Q.buffer,FI,f),OA=new Float32Array(Q.buffer,SI,N*3),UA=new Uint32Array(Q.buffer,c,L);let Qg=H,xg=n;for(let ZA=0;ZA=xg+RI&&(Qg+=1,xg+=RI),tI=Qg}const yQ=s===0?_.getFloat32($+0,!0):(_.getUint16($+0,!0)-J)*TA+OA[3*tI+0],cQ=s===0?_.getFloat32($+4,!0):(_.getUint16($+2,!0)-J)*TA+OA[3*tI+1],SQ=s===0?_.getFloat32($+8,!0):(_.getUint16($+4,!0)-J)*TA+OA[3*tI+2],FQ=s===0?_.getFloat32($+QA+0,!0):hA(_.getUint16($+QA+0,!0)),RQ=s===0?_.getFloat32($+QA+4,!0):hA(_.getUint16($+QA+2,!0)),is=s===0?_.getFloat32($+QA+8,!0):hA(_.getUint16($+QA+4,!0)),Ds=s===0?_.getFloat32($+X+0,!0):hA(_.getUint16($+X+0,!0)),os=s===0?_.getFloat32($+X+4,!0):hA(_.getUint16($+X+2,!0)),ss=s===0?_.getFloat32($+X+8,!0):hA(_.getUint16($+X+4,!0)),ws=s===0?_.getFloat32($+X+12,!0):hA(_.getUint16($+X+6,!0)),as=_.getUint8($+P+0)/255,ts=_.getUint8($+P+1)/255,Gs=_.getUint8($+P+2)/255,hs=_.getUint8($+P+3)/255;if(I(ZA,yQ,cQ,SQ,FQ,RQ,is,os,ss,ws,Ds,hs,as,ts,Gs),Y>=1&&sA){for(const[RI,Bg]of aA.entries())sA[RI]=S($,Bg);if(tA)for(const[RI,Bg]of cA.entries())tA[RI]=S($,Bg);if(AI)for(const[RI,Bg]of SA.entries())AI[RI]=S($,Bg);g==null||g(ZA,sA,tA,AI)}}c+=yA}}class Po{constructor({fileBytes:A}){this.version=-1,this.numSplats=0,this.shDegree=0,this.fractionalBits=0,this.flags=0,this.flagAntiAlias=!1,this.flagLod=!1,this.reserved=0,this.headerParsed=!1,this.parsed=!1,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new uE({fileBytes:this.fileBytes})}async parseHeader(){if(this.headerParsed)throw new Error("SPZ file header already parsed");const A=new DataView((await this.reader.read(16)).buffer);if(A.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=A.getUint32(4,!0),this.version<1||this.version>3)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=A.getUint32(8,!0),this.shDegree=A.getUint8(12),this.fractionalBits=A.getUint8(13),this.flags=A.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.flagLod=(this.flags&128)!==0,this.reserved=A.getUint8(15),this.headerParsed=!0,this.parsed=!1}async parseSplats(A,I,g,B,C,E,{childCounts:i,childStarts:o}={}){if(!this.headerParsed)throw new Error("SPZ file header must be parsed first");if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const D=await this.reader.read(this.numSplats*3*2),w=new Uint16Array(D.buffer);for(let s=0;s>8)/D,c=((w[t+5]<<24|w[t+4]<<16|w[t+3]<<8)>>8)/D,h=((w[t+8]<<24|w[t+7]<<16|w[t+6]<<8)>>8)/D;A==null||A(s,G,c,h)}}else throw new Error("Unreachable");{const D=await this.reader.read(this.numSplats);for(let w=0;w>>30;let F=h,e=0;for(let R=3;R>=0;--R)if(R!==S){const N=F&y,U=F>>>9&1;F=F>>>10,G[R]=D*(N/y),G[R]=U===0?G[R]:-G[R],e+=G[R]*G[R]}const k=1-e;G[S]=Math.sqrt(Math.max(k,0)),C==null||C(s,G[0],G[1],G[2],G[3])}}else{const D=await this.reader.read(this.numSplats*3);for(let w=0;w=1){const D=new Float32Array(9),w=this.shDegree>=2?new Float32Array(5*3):void 0,s=this.shDegree>=3?new Float32Array(7*3):void 0,t=await this.reader.read(this.numSplats*mo[this.shDegree]*3);let G=0;for(let c=0;c=1?9:0)+(I>=2?15:0)+(I>=3?21:0),E=16+A*C;this.buffer=new ArrayBuffer(E),this.view=new DataView(this.buffer),this.view.setUint32(0,Lh,!0),this.view.setUint32(4,nh,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?Hh:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<>8&255),this.view.setUint8(G+2,E>>16&255),this.view.setUint8(G+3,o&255),this.view.setUint8(G+4,o>>8&255),this.view.setUint8(G+5,o>>16&255),this.view.setUint8(G+6,w&255),this.view.setUint8(G+7,w>>8&255),this.view.setUint8(G+8,w>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/(To/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const C=16+this.numSplats*10+A*3;this.view.setUint8(C,GI.scaleRgb(I)),this.view.setUint8(C+1,GI.scaleRgb(g)),this.view.setUint8(C+2,GI.scaleRgb(B))}setScale(A,I,g,B){const C=16+this.numSplats*13+A*3;this.view.setUint8(C,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(C+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(C+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,...I){const g=16+this.numSplats*16+A*4,B=NE(I);let C=0;for(let o=1;o<4;++o)Math.abs(B[o])>Math.abs(B[C])&&(C=o);const E=B[C]<0?1:0;let i=C;for(let o=0;o<4;++o)if(o!==C){const D=(B[o]<0?1:0)^E,w=Math.floor(511*(Math.abs(B[o])/Math.SQRT1_2)+.5);i=i<<10|D<<9|w}this.view.setUint8(g,i&255),this.view.setUint8(g+1,i>>8&255),this.view.setUint8(g+2,i>>16&255),this.view.setUint8(g+3,i>>>24&255)}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,C=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,C))}setSh(A,I,g,B){const C=mo[this.shDegree]||0,E=16+this.numSplats*20+A*C*3;for(let i=0;i<9;++i)this.view.setUint8(E+i,GI.quantizeSh(I[i],5));if(g){const i=E+9;for(let o=0;o<15;++o)this.view.setUint8(i+o,GI.quantizeSh(g[o],4));if(B){const o=i+15;for(let D=0;D<21;++D)this.view.setUint8(o+D,GI.quantizeSh(B[D],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(E){E.enqueue(A),E.close()}}).pipeThrough(new CompressionStream("gzip")),C=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",C.byteLength,"bytes"),new Uint8Array(C)}}async function Kh(Q){var w,s,t;const A=new gh,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:C=12,opacityThreshold:E}=Q;for(const G of I){let c=function(M){return M.multiplyScalar(e),M.applyQuaternion(k),M.add(R),M},h=function(M){return M.multiplyScalar(e),M},y=function(M){return M.premultiply(k),M},S=function(M){return!N||N.containsPoint(M)},F=function(M){return E!==void 0?M>=E:!0};const e=((w=G.transform)==null?void 0:w.scale)??1,k=new a.Quaternion().fromArray(((s=G.transform)==null?void 0:s.quaternion)??[0,0,0,1]),R=new a.Vector3().fromArray(((t=G.transform)==null?void 0:t.translate)??[0,0,0]),N=g?new a.Box3(new a.Vector3().fromArray(g.min),new a.Vector3().fromArray(g.max)):void 0;let U=G.fileType;switch(U||(U=NB(G.fileBytes),!U&&G.pathOrUrl&&(U=po(G.pathOrUrl))),U){case MA.PLY:{const M=new $g({fileBytes:G.fileBytes});await M.parseHeader();let J=null;M.parseSplats((H,n,L,x,d,Y,p,O,gA,v,EA,W,QA,X,P)=>{const u=c(new a.Vector3(n,L,x));if(S(u)&&F(W)){J=A.pushSplat(),A.setCenter(J,u.x,u.y,u.z);const m=h(new a.Vector3(d,Y,p));A.setScale(J,m.x,m.y,m.z);const f=y(new a.Quaternion(O,gA,v,EA));A.setQuaternion(J,f.x,f.y,f.z,f.w),A.setOpacity(J,W),A.setColor(J,QA,X,P)}else J=null},(H,n,L,x)=>{n&&J!==null&&A.setSh1(J,n),L&&J!==null&&A.setSh2(J,L),x&&J!==null&&A.setSh3(J,x)});break}case MA.SPZ:{const M=new Po({fileBytes:G.fileBytes});await M.parseHeader();const J=new Int32Array(M.numSplats);J.fill(-1);const H=new Float32Array(M.numSplats*3),n=new a.Vector3;M.parseSplats((L,x,d,Y)=>{const p=c(new a.Vector3(x,d,Y));H[L*3]=p.x,H[L*3+1]=p.y,H[L*3+2]=p.z},(L,x)=>{n.fromArray(H,L*3),S(n)&&F(x)&&(J[L]=A.pushSplat(),A.setCenter(J[L],n.x,n.y,n.z),A.setOpacity(J[L],x))},(L,x,d,Y)=>{J[L]>=0&&A.setColor(J[L],x,d,Y)},(L,x,d,Y)=>{if(J[L]>=0){const p=h(new a.Vector3(x,d,Y));A.setScale(J[L],p.x,p.y,p.z)}},(L,x,d,Y,p)=>{if(J[L]>=0){const O=y(new a.Quaternion(x,d,Y,p));A.setQuaternion(J[L],O.x,O.y,O.z,O.w)}},(L,x,d,Y)=>{J[L]>=0&&(A.setSh1(J[L],x),d&&A.setSh2(J[L],d),Y&&A.setSh3(J[L],Y))});break}case MA.SPLAT:Mh(G.fileBytes,M=>{},(M,J,H,n,L,x,d,Y,p,O,gA,v,EA,W,QA)=>{const X=c(new a.Vector3(J,H,n));if(S(X)&&F(v)){const P=A.pushSplat();A.setCenter(P,X.x,X.y,X.z);const u=h(new a.Vector3(L,x,d));A.setScale(P,u.x,u.y,u.z);const m=y(new a.Quaternion(Y,p,O,gA));A.setQuaternion(P,m.x,m.y,m.z,m.w),A.setOpacity(P,v),A.setColor(P,EA,W,QA)}});break;case MA.KSPLAT:{let M=null;Uh(G.fileBytes,J=>{},(J,H,n,L,x,d,Y,p,O,gA,v,EA,W,QA,X)=>{const P=c(new a.Vector3(H,n,L));if(S(P)&&F(EA)){M=A.pushSplat(),A.setCenter(M,P.x,P.y,P.z);const u=h(new a.Vector3(x,d,Y));A.setScale(M,u.x,u.y,u.z);const m=y(new a.Quaternion(p,O,gA,v));A.setQuaternion(M,m.x,m.y,m.z,m.w),A.setOpacity(M,EA),A.setColor(M,W,QA,X)}else M=null},(J,H,n,L)=>{M!==null&&(A.setSh1(M,H),n&&A.setSh2(M,n),L&&A.setSh3(M,L))});break}default:throw new Error(`transcodeSpz not implemented for ${U}`)}}const i=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),o=new GI({numSplats:A.numSplats,shDegree:i,fractionalBits:C,flagAntiAlias:!0});for(let G=0;G=1&&o.setSh(G,A.sh1.slice(G*9,(G+1)*9),i>=2&&A.sh2?A.sh2.slice(G*15,(G+1)*15):void 0,i>=3&&A.sh3?A.sh3.slice(G*21,(G+1)*21):void 0)}return{fileBytes:await o.finalize(),clippedCount:o.clippedCount}}var Oo=(Q=>(Q.DUAL_QUATERNION="dual_quaternion",Q.LINEAR_BLEND="linear_blend",Q))(Oo||{});const T=class T{constructor(A){this.mesh=A.mesh,this.numSplats=A.numSplats??this.mesh.numSplats,this.mode=A.mode??"dual_quaternion";const{width:I,height:g,depth:B,maxSplats:C}=iA(this.numSplats);this.skinData=new Uint16Array(C*4),this.skinTexture=new a.DataArrayTexture(this.skinData,I,g,B),this.skinTexture.format=a.RGBAIntegerFormat,this.skinTexture.type=a.UnsignedShortType,this.skinTexture.internalFormat="RGBA16UI",this.skinTexture.needsUpdate=!0,this.numBones=A.numBones??256,this.boneData=new Float32Array(this.numBones*16),this.boneTexture=new a.DataTexture(this.boneData,4,this.numBones,a.RGBAFormat,a.FloatType),this.boneTexture.internalFormat="RGBA32F",this.boneTexture.needsUpdate=!0,this.boneRestQuatPosScale=pQ(this.numBones,()=>({quat:new a.Quaternion,pos:new a.Vector3,scale:new a.Vector3})),this.mode==="linear_blend"?this.boneRestInvMats=pQ(this.numBones,()=>new a.Matrix4):this.boneRestInvMats=[],this.uniform=new q({key:"skinning",type:tQ,globals:()=>[GQ],value:{numSplats:this.numSplats,numBones:this.numBones,skinTexture:this.skinTexture,boneTexture:this.boneTexture}})}modify(A){if(this.mode==="linear_blend")throw new Error("Linear blend skinning requires covSplats=true");return Yh(A,this.uniform)}modifyCov(A){return this.mode==="dual_quaternion"?xh(A,this.uniform):qh(A,this.uniform)}setRestQuatPos(A,I,g){this.boneRestQuatPosScale[A].quat.copy(I),this.boneRestQuatPosScale[A].pos.copy(g),this.boneRestQuatPosScale[A].scale.copy(T.UNIT_SCALE),this.mode==="linear_blend"&&this.boneRestInvMats[A].compose(g,I,T.UNIT_SCALE).invert(),this.setBoneQuatPos(A,I,g)}getRestQuatPos(A,I,g){I.copy(this.boneRestQuatPosScale[A].quat),g.copy(this.boneRestQuatPosScale[A].pos)}setRestQuatPosScale(A,I,g,B){this.boneRestQuatPosScale[A].quat.copy(I),this.boneRestQuatPosScale[A].pos.copy(g),this.boneRestQuatPosScale[A].scale.copy(B),this.mode==="linear_blend"&&this.boneRestInvMats[A].compose(g,I,B).invert(),this.setBoneQuatPosScale(A,I,g,B)}getRestQuatPosScale(A,I,g,B){I.copy(this.boneRestQuatPosScale[A].quat),g.copy(this.boneRestQuatPosScale[A].pos),B.copy(this.boneRestQuatPosScale[A].scale)}setRestMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("setRestMat only supported for linear blend skinning");this.boneRestInvMats[A].copy(I).invert(),this.setBoneMatrix(A,I)}getRestMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("getRestMat only supported for linear blend skinning");I.copy(this.boneRestInvMats[A]).invert()}setBoneQuatPos(A,I,g){if(this.mode==="dual_quaternion"){T.relQuat.copy(this.boneRestQuatPosScale[A].quat).invert(),T.relPos.copy(g).sub(this.boneRestQuatPosScale[A].pos),T.relQuat.multiply(I),T.dual.set(T.relPos.x,T.relPos.y,T.relPos.z,0).multiply(T.relQuat);const B=A*16;this.boneData[B+0]=T.relQuat.x,this.boneData[B+1]=T.relQuat.y,this.boneData[B+2]=T.relQuat.z,this.boneData[B+3]=T.relQuat.w,this.boneData[B+4]=.5*T.dual.x,this.boneData[B+5]=.5*T.dual.y,this.boneData[B+6]=.5*T.dual.z,this.boneData[B+7]=.5*T.dual.w}else this.setBoneQuatPosScale(A,I,g,T.UNIT_SCALE)}setBoneQuatPosScale(A,I,g,B){if(this.mode==="dual_quaternion")throw new Error("setBoneQuatPosScale only supported for linear blend skinning");T.skinMat.compose(g,I,B),this.setBoneMatrix(A,T.skinMat)}setBoneMatrix(A,I){if(this.mode!=="linear_blend")throw new Error("setBoneMatrix only supported for linear blend skinning");T.skinMat.multiplyMatrices(this.boneRestInvMats[A],I);const g=A*16;this.boneData[g+0]=T.skinMat.elements[0],this.boneData[g+1]=T.skinMat.elements[1],this.boneData[g+2]=T.skinMat.elements[2],this.boneData[g+3]=T.skinMat.elements[4],this.boneData[g+4]=T.skinMat.elements[5],this.boneData[g+5]=T.skinMat.elements[6],this.boneData[g+6]=T.skinMat.elements[8],this.boneData[g+7]=T.skinMat.elements[9],this.boneData[g+8]=T.skinMat.elements[10],this.boneData[g+9]=T.skinMat.elements[12],this.boneData[g+10]=T.skinMat.elements[13],this.boneData[g+11]=T.skinMat.elements[14]}setSplatBones(A,I,g){const B=A*4;this.skinData[B+0]=Math.min(255,Math.max(0,Math.round(g.x*255)))+(I.x<<8),this.skinData[B+1]=Math.min(255,Math.max(0,Math.round(g.y*255)))+(I.y<<8),this.skinData[B+2]=Math.min(255,Math.max(0,Math.round(g.z*255)))+(I.z<<8),this.skinData[B+3]=Math.min(255,Math.max(0,Math.round(g.w*255)))+(I.w<<8)}updateBones(){this.boneTexture.needsUpdate=!0,this.mesh.needsUpdate=!0}};T.UNIT_SCALE=new a.Vector3(1,1,1),T.relQuat=new a.Quaternion,T.relPos=new a.Vector3,T.dual=new a.Quaternion,T.skinMat=new a.Matrix4;let VQ=T;const tQ={type:"GsplatSkinning"},GQ=wA(` struct GsplatSkinning { int numSplats; int numBones; usampler2DArray skinTexture; sampler2D boneTexture; }; -`),xR=oA(` +`),rh=wA(` void applyGsplatSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -2187,7 +1918,7 @@ void main() { center = quatVec(quat, center) + translate; quaternion = quatQuat(quat, quaternion); } -`);function lR(Q,A){return new d({inTypes:{gsplat:Z,skinning:kQ},outTypes:{gsplat:Z},globals:()=>[FQ,xR],inputs:{gsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{gsplat:E}=B;return z(` +`);function Yh(Q,A){return new l({inTypes:{gsplat:V,skinning:tQ},outTypes:{gsplat:V},globals:()=>[GQ,rh],inputs:{gsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{gsplat:E}=B;return z(` ${E} = ${g.gsplat}; if (isGsplatActive(${E}.flags)) { applyGsplatSkinning( @@ -2196,7 +1927,7 @@ void main() { ${E}.index, ${E}.center, ${E}.quaternion ); } - `)}}).outputs.gsplat}const pR=oA(` + `)}}).outputs.gsplat}const dh=wA(` void applyCovSplatDQSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -2260,7 +1991,7 @@ void main() { xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]); xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]); } -`),fR=oA(` +`),lh=wA(` void applyCovSplatLBSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -2307,7 +2038,7 @@ void main() { xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]); xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]); } -`);function bR(Q,A){return new d({inTypes:{covsplat:rA,skinning:kQ},outTypes:{covsplat:rA},globals:()=>[FQ,pR],inputs:{covsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{covsplat:E}=B;return z(` +`);function xh(Q,A){return new l({inTypes:{covsplat:rA,skinning:tQ},outTypes:{covsplat:rA},globals:()=>[GQ,dh],inputs:{covsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{covsplat:E}=B;return z(` ${E} = ${g.covsplat}; if (isCovSplatActive(${E}.flags)) { applyCovSplatDQSkinning( @@ -2316,7 +2047,7 @@ void main() { ${E}.index, ${E}.center, ${E}.xxyyzz, ${E}.xyxzyz ); } - `)}}).outputs.covsplat}function PR(Q,A){return new d({inTypes:{covsplat:rA,skinning:kQ},outTypes:{covsplat:rA},globals:()=>[FQ,fR],inputs:{covsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{covsplat:E}=B;return z(` + `)}}).outputs.covsplat}function qh(Q,A){return new l({inTypes:{covsplat:rA,skinning:tQ},outTypes:{covsplat:rA},globals:()=>[GQ,lh],inputs:{covsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{covsplat:E}=B;return z(` ${E} = ${g.covsplat}; if (isCovSplatActive(${E}.flags)) { applyCovSplatLBSkinning( @@ -2325,8 +2056,8 @@ void main() { ${E}.index, ${E}.center, ${E}.xxyyzz, ${E}.xyxzyz ); } - `)}}).outputs.covsplat}function uR({splats:Q,extents:A,stepSize:I=1,pointRadius:g=.01,pointShadowScale:B=2,opacity:C=1,color:E}){const i=new G.Vector3,w=new G.Vector3,s=new G.Quaternion(0,0,0,1);E==null&&(E=(y,h)=>y.set(.55+.45*Math.cos(h.x*1),.55+.45*Math.cos(h.y*1),.55+.45*Math.cos(h.z*1)));const o=new G.Color;for(let y=A.min.z;y=g)return;const M=new G.Vector3().addVectors(F,a).normalize(),c=new G.Vector3().addVectors(a,S).normalize(),N=new G.Vector3().addVectors(S,F).normalize();s(R+1,F,M,N),s(R+1,M,a,c),s(R+1,N,c,S),s(R+1,M,c,N)}for(const R of[-1,1])for(const F of[-1,1])for(const a of[-1,1]){const S=new G.Vector3(R,0,0),M=new G.Vector3(0,F,0),c=new G.Vector3(0,0,a);s(0,S,M,c)}const o=Object.values(i),y=new G.Vector3(C,C,E),h=new G.Quaternion,k=typeof D=="function"?new G.Color:D;for(const R of o)h.setFromUnitVectors(new G.Vector3(0,0,-1),R),typeof D=="function"&&D(k,R),R.multiplyScalar(I),R.add(A),Q.pushSplat(R,y,h,1,k)}function mR({text:Q,font:A,fontSize:I,color:g,rgb:B,dotRadius:C,textAlign:E,lineHeight:D,objectScale:i}){A=A??"Arial",I=I??32,g=g??new G.Color(1,1,1),C=C??.8,E=E??"start",D=D??1,i=i??1;const w=Q.split(` -`),s=document.createElement("canvas"),o=s.getContext("2d");if(!o)throw new Error("Failed to create canvas context");o.font=`${I}px ${A}`,o.textAlign=E;const y=o.measureText(""),h=y.fontBoundingBoxAscent+y.fontBoundingBoxDescent;let k=Number.POSITIVE_INFINITY,R=Number.NEGATIVE_INFINITY,F=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;for(let n=0;n0){const m=p/255;H.set(r-.5*(c-1),.5*(N-1)-n,0),H.multiplyScalar(i),t.pushSplat(H,K,Y,m,B)}L+=4}const q=new vA({packedSplats:t});return q.recolor=g,q}function ZR({url:Q,dotRadius:A,subXY:I,forEachSplat:g}){return A=A??.8,I=Math.max(1,Math.floor(I??1)),new vA({constructSplats:async B=>new Promise((C,E)=>{const D=new Image;D.crossOrigin="anonymous",D.onerror=E,D.onload=()=>{const{width:i,height:w}=D,s=document.createElement("canvas");s.width=i,s.height=w;const o=s.getContext("2d");if(!o){E(new Error("Failed to create canvas context"));return}o.imageSmoothingEnabled=!0,o.imageSmoothingQuality="high";const y=Math.round(i/I),h=Math.round(w/I);o.drawImage(D,0,0,y,h);try{const k=o.getImageData(0,0,y,h),R=new Uint8Array(k.data.buffer),F=new G.Vector3,a=new G.Vector3().setScalar(A),S=new G.Quaternion(0,0,0,1),M=new G.Color;let c=0;for(let N=0;N0){let H=t/255;M.set(R[J+0]/255,R[J+1]/255,R[J+2]/255),F.set(U-.5*(y-1),.5*(h-1)-N,0),a.setScalar(A),S.set(0,0,0,1);let K=!0;if(g){const Y=g(y,h,c,F,a,S,H,M);H=Y??H,K=Y!==null}K&&B.pushSplat(F,a,S,H,M)}c+=1}C()}catch(k){E(k)}},D.src=Q})})}function VR({box:Q,cells:A,dotScale:I,color:g,opacity:B}){A.x=Math.max(1,Math.round(A.x)),A.y=Math.max(1,Math.round(A.y)),A.z=Math.max(1,Math.round(A.z)),B=B??1;const C=A.x*A.y*A.z,E=v("int",A.x),D=v("int",A.y);v("int",A.z);const i=oI(0),w=new YI({numSplats:C,generator:cA({index:"int"},{gsplat:Z},({index:o})=>{if(!o)throw new Error("index is undefined");const y=OQ(o,E),h=mg(o,E),k=OQ(h,D),R=mg(h,D),F=yI({vectorType:"ivec3",x:y,y:k,z:R}),a=Ai(i),S=yI({vectorType:"ivec2",x:o,y:a}),M=gw(S),c=v("vec3",Q.min),N=v("vec3",Q.max),U=wI(N,c),J=mg(xA(PI(F),M),v("vec3",A));let t,H,K;g?(t=v("float",g.r),H=v("float",g.g),K=v("float",g.b)):{r:t,g:H,b:K}=Ag(J).outputs;const Y=yI({vectorType:"vec4",r:t,g:H,b:K,a:v("float",B)}),L=xA(c,kA(U,J)),q=PI(v("float",I)),n=v("vec4",new G.Quaternion(0,0,0,1));let r=EI({flags:Wg("uint","GSPLAT_FLAG_ACTIVE"),index:o,center:L,scales:q,quaternion:n,rgba:Y});return r=s.applyGsplat(r),{gsplat:r}},{globals:()=>[LA]}),update:({time:o})=>{i.value=o,s.update(w),w.updateVersion()}}),s=new lI;return w}const XR={box:new G.Box3(new G.Vector3(-1,-1,-1),new G.Vector3(1,1,1)),density:100,fallDirection:new G.Vector3(-1,-3,1).normalize(),fallVelocity:.02,wanderScale:.04,wanderVariance:2,color1:new G.Color(1,1,1),color2:new G.Color(.5,.5,1),minScale:.001,maxScale:.005,anisoScale:new G.Vector3(1,1,1)},WR={box:new G.Box3(new G.Vector3(-2,-1,-2),new G.Vector3(2,5,2)),density:10,fallDirection:new G.Vector3(0,-1,0),fallVelocity:2,wanderScale:.1,wanderVariance:1,color1:new G.Color(1,1,1),color2:new G.Color(.25,.25,.5),minScale:.005,maxScale:.01,anisoScale:new G.Vector3(.1,1,.1)};function jR({box:Q,minY:A,numSplats:I,density:g,anisoScale:B,minScale:C,maxScale:E,fallDirection:D,fallVelocity:i,wanderScale:w,wanderVariance:s,color1:o,color2:y,opacity:h,onFrame:k}){Q=Q??new G.Box3(new G.Vector3(-1,-1,-1),new G.Vector3(1,1,1));const R=(Q.max.x-Q.min.x)*(Q.max.y-Q.min.y)*(Q.max.z-Q.min.z);g=g??100,I=I??Math.max(1,Math.min(1e6,Math.round(R*g)));const F=oI(C??.001),a=oI(E??.005),S=JI(((B==null?void 0:B.clone())??new G.Vector3(1,1,1)).normalize()),M=JI((D??new G.Vector3(0,-1,0)).normalize()),c=oI(i??.02),N=oI(w??.01),U=oI(s??2),J=JI(o??new G.Color(1,1,1)),t=JI(y??new G.Color(.5,.5,1)),H=oI(h??1),K=oI(0),Y=JI(new G.Vector3(0,0,0)),L=JI(Q.min),q=JI(Q.max),n=oI(A??Number.NEGATIVE_INFINITY),r=wI(q,L),p=new YI({numSplats:I,generator:cA({index:"int"},{gsplat:Z},({index:IA})=>{if(!IA)throw new Error("index not defined");const X=ZQ(IA),EA=Ag(X).outputs.w;let j=PI(X),gA=Zg(kA(EA,v("float",100)));gA=VQ(kA(Wg("float","PI"),gA)),gA=xA(F,kA(gA,wI(a,F)));const W=kA(gA,S),u=Zg(kA(EA,v("float",10))),b=Zg(EA),T=ID(J,t,b),f=kA(T,u),aA=ZQ(yI({vectorType:"ivec2",x:IA,y:v("int",6837)}));let sA=PI(aA),SA=kA(Ag(aA).outputs.w,U);SA=xA(K,SA),j=xA(j,Y);const NA=$E(j,v("vec3",new G.Vector3(1,1,1)));j=xA(L,kA(r,NA));const wA=v("vec4",new G.Quaternion(0,0,0,1));sA=VQ(xA(PI(SA),sA)),sA=kA(sA,N);let GA=xA(j,sA),II=Ag(GA).outputs.y;II=AD(n,II),GA=yI({vector:GA,y:II});let mA=EI({flags:Wg("uint","GSPLAT_FLAG_ACTIVE"),index:IA,center:GA,scales:W,quaternion:wA,rgb:f,opacity:H});return mA=m.applyGsplat(mA),{gsplat:mA}},{globals:()=>[LA]}),update:({object:IA,time:X,deltaTime:EA})=>{K.value=X,m.update(p);const j=M.value.clone().multiplyScalar(c.value*EA);Y.value.add(j),IA.visible=H.value>0,k==null||k({object:IA,time:X,deltaTime:EA}),p.updateVersion()}}),m=new lI;return{snow:p,min:L,max:q,minY:n,color1:J,color2:t,opacity:H,fallVelocity:c,wanderVariance:U,wanderScale:N,fallDirection:M,minScale:F,maxScale:a,anisoScale:S}}const vR=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_RAIN:WR,DEFAULT_SNOW:XR,snowBox:jR,staticBox:VR},Symbol.toStringTag,{value:"Module"}));function Io(Q){return cA({gsplat:Z},{gsplat:Z},({gsplat:A})=>{if(!A)throw new Error("No gsplat input");let I=PQ(A);const g=Q.applyGsplat(A),B=OA(g).outputs.center,C=PQ(g),E=di(B,C),D=dD(E,v("float",0));I=cB(D,NB(I),I);const i=xA(kA(I,v("float",.5)),v("float",.5));return A=EI({gsplat:A,rgb:i}),{gsplat:A}})}function zR(Q){Q.enableWorldToView=!0,Q.worldModifier=Io(Q.context.worldToView),Q.updateGenerator()}function go(Q,A,I,g){return cA({gsplat:Z},{gsplat:Z},({gsplat:B})=>{if(!B)throw new Error("No gsplat input");let{center:C}=OA(B).outputs;C=Q.apply(C);const{z:E}=Ag(C).outputs;let D=Qw(NB(E),A,I);return D=cB(g,wI(v("float",1),D),D),B=EI({gsplat:B,r:D,g:D,b:D}),{gsplat:B}})}function _R(Q,A,I,g){Q.enableWorldToView=!0;const B=v("float",A),C=v("float",I),E=v("bool",g??!1);return Q.worldModifier=go(Q.context.worldToView,B,C,E),Q.updateGenerator(),{minDepth:B,maxDepth:C,reverse:E}}const $R=Object.freeze(Object.defineProperty({__proto__:null,makeDepthColorModifier:go,makeNormalColorModifier:Io,setDepthColor:_R,setWorldNormalColor:zR},Symbol.toStringTag,{value:"Module"})),Qo=1,zQ=4,Bo=2,Co=5,Eo=1/5,Ak=!1,Do=(Q,A)=>{var I,g,B,C;return Q.leftIsHand?new G.Vector3:new G.Vector3(((I=Q.left)==null?void 0:I.axes[2])??0,(((g=Q.left)==null?void 0:g.buttons[0].value)??0)-(((B=Q.left)==null?void 0:B.buttons[1].value)??0),((C=Q.left)==null?void 0:C.axes[3])??0)},io=(Q,A)=>{var I;return Q.rightIsHand?new G.Vector3:new G.Vector3(((I=Q.right)==null?void 0:I.axes[2])??0,0,0)},wo=(Q,A)=>{var I,g;return Q.rightIsHand?!1:((g=(I=Q.right)==null?void 0:I.buttons[0])==null?void 0:g.pressed)??!1},oo=(Q,A)=>{var I,g;return Q.rightIsHand?!1:((g=(I=Q.right)==null?void 0:I.buttons[1])==null?void 0:g.pressed)??!1};var gQ=(Q=>(Q.w="wrist",Q.t0="thumb-metacarpal",Q.t1="thumb-phalanx-proximal",Q.t2="thumb-phalanx-distal",Q.t3="thumb-tip",Q.i0="index-finger-metacarpal",Q.i1="index-finger-phalanx-proximal",Q.i2="index-finger-phalanx-intermediate",Q.i3="index-finger-phalanx-distal",Q.i4="index-finger-tip",Q.m0="middle-finger-metacarpal",Q.m1="middle-finger-phalanx-proximal",Q.m2="middle-finger-phalanx-intermediate",Q.m3="middle-finger-phalanx-distal",Q.m4="middle-finger-tip",Q.r0="ring-finger-metacarpal",Q.r1="ring-finger-phalanx-proximal",Q.r2="ring-finger-phalanx-intermediate",Q.r3="ring-finger-phalanx-distal",Q.r4="ring-finger-tip",Q.p0="pinky-finger-metacarpal",Q.p1="pinky-finger-phalanx-proximal",Q.p2="pinky-finger-phalanx-intermediate",Q.p3="pinky-finger-phalanx-distal",Q.p4="pinky-finger-tip",Q))(gQ||{});const aI=Object.keys(gQ),Ik=aI.length,gk={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},vB={w:.02,t0:.015,t1:.012,t2:.0105,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},Qk=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Bk=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],Ck=["t3","i4","m4","r4","p4"],Ek=["i4","m4","r4","p4"];var eB=(Q=>(Q.left="left",Q.right="right",Q))(eB||{});const Dk=Object.keys(eB),ik=/Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;function wk(){const Q=navigator.userAgent??"";if(ik.test(Q))return!1;if(/Android/i.test(Q)||/Mobile/i.test(Q))return!0;const I=navigator.userAgentData;return I&&typeof I.mobile=="boolean"?I.mobile:!1}const XA=class XA{constructor(A){this.lastControllersUpdate=0,this.hands=[],this.renderer=A.renderer,this.xr=navigator.xr,this.mode="initializing",this.onEnterXr=A.onEnterXr,this.onExitXr=A.onExitXr,this.enableHands=A.enableHands??!1,this.controllers=A.controllers,Promise.resolve().then(()=>{var C;if(!this.xr){this.mode="not_supported";return}if(!A.allowMobileXr&&wk()){this.mode="not_supported";return}this.enableHands&&(this.hands=[new Yg("left"),new Yg("right")]);let I,g;if(A.element?I=A.element:A.elementId?I=document.getElementById(A.elementId)??void 0:(I=XA.createButton(),g=A.button==null||typeof A.button=="boolean"?{}:A.button),!I)throw new Error("No element or button provided");I.style.display="none",I.classList.add("hidden"),this.button=g,this.element=I;const B=(C=A.onMouseLeaveOpacity)==null?void 0:C.toString();return B!==void 0&&(I.addEventListener("mouseleave",()=>{I.style.opacity=B}),I.addEventListener("mouseenter",()=>{I.style.opacity=""})),this.initializeXr(A)}).then(()=>{var I;return(I=A.onReady)==null?void 0:I.call(A,this.mode!=="not_supported")}).catch(I=>{alert(`Error initializing SparkXr: ${I}`)})}async initializeXr(A){var w,s;if(!this.xr||!this.element)return;const I=this.element,g={vr:["immersive-vr"],ar:["immersive-ar"],arvr:["immersive-ar","immersive-vr"],vrar:["immersive-vr","immersive-ar"]}[A.mode??"vrar"];if(!g)throw new Error(`Invalid mode: ${A.mode}`);let B=null;for(const o of g)if(await this.xr.isSessionSupported(o)){B=o;break}if(!B){this.mode="not_supported";return}this.mode=B;const C=A.referenceSpaceType??"local";this.renderer.xr.enabled=!0,this.renderer.xr.setReferenceSpaceType(C),A.fixedFoveation!==void 0&&this.renderer.xr.setFoveation(A.fixedFoveation);const E=A.frameBufferScaleFactor??.5;this.renderer.xr.setFramebufferScaleFactor(E);const D=((w=A.sessionInit)==null?void 0:w.optionalFeatures)??[];A.enableHands&&D.push("hand-tracking");const i=((s=A.sessionInit)==null?void 0:s.requiredFeatures)??[];i.push(C),this.sessionInit={...A.sessionInit,optionalFeatures:D,requiredFeatures:i},I.addEventListener("click",()=>{this.toggleXr()}),this.updateElement()}async toggleXr(){var A,I,g;if(!(!this.xr||!this.sessionInit))if(this.session)this.session.end();else try{const B=this.mode,C=await this.xr.requestSession(B,this.sessionInit);this.session=C;const E=()=>{var w;C==null||C.removeEventListener("end",E),C==null||C.removeEventListener("visibilitychange",i),this.session=void 0,this.updateElement(),(w=this.onExitXr)==null||w.call(this)};let D=C.visibilityState;const i=()=>{(C==null?void 0:C.visibilityState)==="visible-blurred"&&D==="visible"&&(C==null||C.end()),D=C==null?void 0:C.visibilityState};return(A=this.session)==null||A.addEventListener("end",E),(I=this.session)==null||I.addEventListener("visibilitychange",i),await this.renderer.xr.setSession(this.session),(g=this.onEnterXr)==null?void 0:g.call(this)}catch(B){console.error("Error requesting XR session",B);return}}updateElement(){const A=this.mode,I=this.element;if(I){I.style.display="",I.classList.remove("hidden");const g=typeof this.button=="boolean"?{}:this.button;if(g){if(this.session){const B=(A==="immersive-vr"?g.exitVrHtml:g.exitArHtml)??g.exitXrHtml,C=(A==="immersive-vr"?g.exitVrText:g.exitArText)??g.exitXrText;B?I.innerHTML=B:C?I.textContent=C:I.textContent=A==="immersive-vr"?"EXIT VR":"EXIT AR"}else{const B=(A==="immersive-vr"?g.enterVrHtml:g.enterArHtml)??g.enterXrHtml,C=(A==="immersive-vr"?g.enterVrText:g.enterArText)??g.enterXrText;B?I.innerHTML=B:C?I.textContent=C:I.textContent=A==="immersive-vr"?"ENTER VR":"ENTER AR"}I.style.display=""}}}static createButton(){const A=document.createElement("button");return Object.assign(A.style,{position:"absolute",bottom:"20px",left:"50%",transform:"translateX(-50%)",padding:"40px 40px",border:"2px solid #fff",borderRadius:"16px",background:"rgba(0,0,0,0.1)",color:"#fff",font:"bold 28px sans-serif",textAlign:"center",userSelect:"none",zIndex:"999"}),document.body.appendChild(A),A}xrSupported(){return!!this.xr}left(){return this.hands[0]}right(){return this.hands[1]}updateControllers(A){var w,s,o,y,h,k,R,F,a,S,M,c;const I=A.parent,g=performance.now(),B=(g-(this.lastControllersUpdate||g))/1e3;this.lastControllersUpdate=g;const C={};for(const N of((w=this.renderer.xr.getSession())==null?void 0:w.inputSources)??[]){const U=N.gamepad;U&&(N.handedness==="left"||N.handedness==="right")&&(C[N.handedness]=U,N.handedness==="left"?C.leftIsHand=!!N.hand:N.handedness==="right"&&(C.rightIsHand=!!N.hand))}const E=(((s=this.controllers)==null?void 0:s.getRotate)??io)(C,this);if(E.multiply(new G.Vector3(((o=this.controllers)==null?void 0:o.rotateSpeed)??zQ,((y=this.controllers)==null?void 0:y.rotateSpeed)??zQ,((h=this.controllers)==null?void 0:h.rollSpeed)??Bo)),E.manhattanLength()>0){E.multiplyScalar(B);const N=new G.Euler(-E.y,-E.x,E.z,"YXZ"),U=new G.Quaternion().setFromEuler(N),J=A.getWorldPosition(new G.Vector3);(k=I.parent)==null||k.worldToLocal(J),I.position.sub(J),I.position.applyQuaternion(U),I.position.add(J),I.quaternion.premultiply(U)}const D=(((R=this.controllers)==null?void 0:R.getMove)??Do)(C,this);let i=((F=this.controllers)==null?void 0:F.moveSpeed)??Qo;(((a=this.controllers)==null?void 0:a.getFast)??wo)(C,this)&&(i*=Co),(((S=this.controllers)==null?void 0:S.getSlow)??oo)(C,this)&&(i*=Eo),(M=this.controllers)!=null&&M.moveHeading?D.applyQuaternion(A.quaternion):(c=this.controllers)!=null&&c.moveDirection&&(ug.setFromQuaternion(A.quaternion,"YXZ"),ug.x=0,ug.z=0,$Q.setFromEuler(ug),D.applyQuaternion($Q)),D.applyQuaternion(I.quaternion),D.multiplyScalar(B*i),I.position.add(D)}updateHands({xrFrame:A}){const I=this.renderer.xr.getSession();if(!I)return;const g=this.renderer.xr.getReferenceSpace();if(g&&A.getJointPose){for(const B of this.hands)B&&(B.lastJoints=B.joints,B.joints=void 0);for(const B of I.inputSources){if(!B.hand)continue;const C=B.handedness,E=this.hands[C==="left"?0:1];if(E)for(const D of aI){const i=B.hand.get(gQ[D]);if(i){const w=A.getJointPose(i,g);if(w){const{position:s,orientation:o}=w.transform;E.joints||(E.joints={}),E.joints[D]={position:new G.Vector3(s.x,s.y,s.z),quaternion:new G.Quaternion(o.x,o.y,o.z,o.w),radius:vB[D]}}}}}}}makeJointSplats(A){const I=new so(A);return I.onFrame=()=>{const g=this.hands[A==="left"?0:1],B=g==null?void 0:g.joints;I.updateJoints(B)},I}snapshotHands(A){var g,B;const I=[(g=this.hands[0])==null?void 0:g.snapshotJoints(),(B=this.hands[1])==null?void 0:B.snapshotJoints()];return{time:A,hands:I}}};XA.JointEnum=gQ,XA.JOINT_IDS=aI,XA.NUM_JOINTS=Ik,XA.JOINT_INDEX=gk,XA.JOINT_RADIUS=vB,XA.JOINT_SEGMENTS=Qk,XA.JOINT_SEGMENT_STEPS=Bk,XA.JOINT_TIPS=Ck,XA.FINGER_TIPS=Ek,XA.Hand=eB,XA.HANDS=Dk;let _Q=XA;const dQ=Q=>Math.round(Q*1e4)/1e4,ug=new G.Euler(0,0,0,"YXZ"),$Q=new G.Quaternion,ok=new G.Quaternion;function sk(Q,A){if(!Q.length)return null;const I=Q[0],g=Q[Q.length-1];if(Ag.time)return null;const B=hk(Q,A);if(B===-1)return null;const C=Q[B],E=Q[B+1];if(!E)return yk(C,A);const D=E.time-C.time,i=D>0?(A-C.time)/D:0;return Gk(C,E,i,A)}function Gk(Q,A,I,g){const B=Math.max(Q.hands.length,A.hands.length),C=Array.from({length:B},(E,D)=>Rk(Q.hands[D],A.hands[D],I));return{time:g,hands:C}}function yk(Q,A){return{time:A,hands:Q.hands.map(I=>Fk(I))}}class Yg{constructor(A){this.hand=A}static newFromSnapshot(A,I){const g=new Yg(A);g.joints={};for(const B of aI){const C=I[B];C&&(g.joints[B]={position:new G.Vector3(C.pos[0],C.pos[1],C.pos[2]),quaternion:new G.Quaternion(C.quat[0],C.quat[1],C.quat[2],C.quat[3]),radius:C.radius})}return g}valid(){return!!this.joints}snapshotJoints(){if(!this.joints)return;const A={};for(const I of aI){const g=this.joints[I];g&&(A[I]={pos:g.position.toArray().map(dQ),quat:g.quaternion.toArray().map(dQ),radius:dQ(g.radius)})}return A}toFlatArray(){if(!this.joints)return;const A=new Float32Array(1+25*7);A[0]=this.hand==="left"?0:1;let I=1;for(const g of aI){const B=this.joints[g];B&&(A[I]=B.position.x,A[I+1]=B.position.y,A[I+2]=B.position.z,A[I+3]=B.quaternion.x,A[I+4]=B.quaternion.y,A[I+5]=B.quaternion.z,A[I+6]=B.quaternion.w),I+=7}return A}}function hk(Q,A){let I=0,g=Q.length-1;for(;I<=g;){const B=I+g>>1;Q[B].time<=A?I=B+1:g=B-1}return g}function Rk(Q,A,I=0){if(!Q||!A)return;const g={};for(const B of aI){const C=kk(Q[B],A[B],I);C&&(g[B]=C)}return g}function kk(Q,A,I=0){if(!Q||!A)return;const g=Q.pos.map((E,D)=>E+(A.pos[D]-E)*I),B=$Q.fromArray(Q.quat).slerp(ok.fromArray(A.quat),I).toArray(),C=Q.radius+(A.radius-Q.radius)*I;return{pos:g,quat:B,radius:C}}function Fk(Q){if(!Q)return;const A={};for(const I of aI){const g=Q[I];g&&(A[I]=ak(g))}return A}function ak(Q){return{pos:[...Q.pos],quat:[...Q.quat],radius:Q.radius}}class so extends vA{constructor(A){super({}),this.scratchCenter=new G.Vector3,this.scratchQuat=new G.Quaternion(0,0,0,1),this.scratchScales=new G.Vector3().setScalar(.01),this.scratchColor=new G.Color(1,1,1),this.hand=A}updateJoints(A){if(this.visible=!1,!A||!this.packedSplats)return;this.visible=!0;let I=0;for(const g of aI){const B=A[g];if(!B)continue;this.scratchCenter.copy(B.position),this.scratchQuat.copy(B.quaternion),this.scratchScales.set(B.radius,.75*B.radius,1.5*B.radius),this.packedSplats.setSplat(I,this.scratchCenter,this.scratchScales,this.scratchQuat,.75,this.scratchColor),I+=1}this.packedSplats.numSplats=I,this.packedSplats.needsUpdate=!0,this.numSplats=I,this.updateVersion()}}const Sk=.5,Nk=.5,ck=0;var aQ=(Q=>(Q.w="wrist",Q.t0="thumb-metacarpal",Q.t1="thumb-phalanx-proximal",Q.t2="thumb-phalanx-distal",Q.t3="thumb-tip",Q.i0="index-finger-metacarpal",Q.i1="index-finger-phalanx-proximal",Q.i2="index-finger-phalanx-intermediate",Q.i3="index-finger-phalanx-distal",Q.i4="index-finger-tip",Q.m0="middle-finger-metacarpal",Q.m1="middle-finger-phalanx-proximal",Q.m2="middle-finger-phalanx-intermediate",Q.m3="middle-finger-phalanx-distal",Q.m4="middle-finger-tip",Q.r0="ring-finger-metacarpal",Q.r1="ring-finger-phalanx-proximal",Q.r2="ring-finger-phalanx-intermediate",Q.r3="ring-finger-phalanx-distal",Q.r4="ring-finger-tip",Q.p0="pinky-finger-metacarpal",Q.p1="pinky-finger-phalanx-proximal",Q.p2="pinky-finger-phalanx-intermediate",Q.p3="pinky-finger-phalanx-distal",Q.p4="pinky-finger-tip",Q))(aQ||{});const rB=Object.keys(aQ),Mk=rB.length,Jk={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},yg={w:.02,t0:.02,t1:.014,t2:.0115,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},Go=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],yo=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],Uk=["t3","i4","m4","r4","p4"],tk=["i4","m4","r4","p4"];var nB=(Q=>(Q.left="left",Q.right="right",Q))(nB||{});const QQ=Object.keys(nB);class Hk{constructor(){this.hands={},this.last={},this.values={},this.tests={},this.lastTests={},this.updated=!1}update({xr:A,xrFrame:I}){const g=A.getSession();if(!g)return;const B=A.getReferenceSpace();if(B&&I.getJointPose){this.last=this.hands,this.lastTests=this.tests,this.hands={},this.values={},this.tests={};for(const C of g.inputSources){if(!C.hand)continue;const E=C.handedness;this.hands[E]={};for(const D of rB){const i=C.hand.get(aQ[D]);if(i){const w=I.getJointPose(i,B);if(w){const{position:s,orientation:o}=w.transform;this.hands[E][D]={position:new MA.Vector3(s.x,s.y,s.z),quaternion:new MA.Quaternion(o.x,o.y,o.z,o.w),radius:w.radius||.001}}}}}for(const C of QQ)for(const{key:E,value:D}of[{key:`${C}AllTips`,value:this.allTipsTouching(C)},{key:`${C}IndexThumb`,value:this.touching(C,"i4",C,"t3")},{key:`${C}MiddleThumb`,value:this.touching(C,"m4",C,"t3")},{key:`${C}RingThumb`,value:this.touching(C,"r4",C,"t3")},{key:`${C}PinkyThumb`,value:this.touching(C,"p4",C,"t3")},{key:`${C}TriTips`,value:this.triTipsTouching(C)}])this.values[E]=D,this.tests[E]=D===1?!0:D===0?!1:this.lastTests[E]??!1}}makeGhostMesh(){const A=new MA.Vector3,I=new MA.Vector3(.01,.01,.01),g=new MA.Quaternion(0,0,0,1),B=new MA.Color(1,1,1),C=Math.PI*3;new MA.Color(1,1,1);let E=1;const D=new vA({onFrame:()=>{if(!D.packedSplats)return;let i=0;for(const w of QQ){const s=this.hands[w];for(const[o,y]of Go.entries())for(let h=1;h.8&&(U*=Math.sqrt(1-((M-.8)/.2)**2)),I.set(.65*U,.5*U,.003),B.set(.55+.45*Math.sin(A.x*C),.55+.45*Math.sin(A.y*C),.55+.45*Math.sin(A.z*C)),w==="right"&&B.set(1-B.r,1-B.g,1-B.b),E=.75}D.packedSplats.setSplat(i,A,I,g,E,B),i+=1}}}D.packedSplats.numSplats=i,D.packedSplats.needsUpdate=!0,D.numSplats=i,D.updateVersion()}});return D}distance(A,I,g,B,C=!1){const E=C?this.last[A]:this.hands[A],D=C?this.last[g]:this.hands[g],i=E==null?void 0:E[I],w=D==null?void 0:D[B];return!i||!w?Number.POSITIVE_INFINITY:i.position.distanceTo(w.position)}separation(A,I,g,B,C=!1){const E=this.distance(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:E-yg[I]-yg[B]}touching(A,I,g,B,C=!1){const E=this.separation(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:1-Math.max(0,Math.min(1,E/.01-ck))}allTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"r4",I),this.touching(A,"r4",A,"p4",I))}triTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"t3",I))}}class Lk{constructor({xrHands:A,control:I,moveInertia:g,rotateInertia:B}){this.lastGrip={},this.lastPivot=new MA.Vector3,this.rotateVelocity=0,this.velocity=new MA.Vector3,this.xrHands=A,this.control=I,this.moveInertia=g??Sk,this.rotateInertia=B??Nk}update(A){var C,E,D,i,w;const I={};for(const s of QQ){const o=this.xrHands.hands[s];o&&this.xrHands.tests[`${s}MiddleThumb`]&&(I[s]=new MA.Vector3().add(((C=o.t3)==null?void 0:C.position)??new MA.Vector3).add(((E=o.i4)==null?void 0:E.position)??new MA.Vector3).add(((D=o.m4)==null?void 0:D.position)??new MA.Vector3).add(((i=o.r4)==null?void 0:i.position)??new MA.Vector3).add(((w=o.p4)==null?void 0:w.position)??new MA.Vector3).multiplyScalar(1/5))}if(I.left&&I.right&&this.lastGrip.left&&this.lastGrip.right){const s=I.left.clone().add(I.right).multiplyScalar(.5),o=this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(.5);this.lastPivot=s;const y=s.clone().applyMatrix4(this.control.matrix);y.sub(o.clone().applyMatrix4(this.control.matrix)),y.multiplyScalar(1/A),this.velocity.lerp(y,1-Math.exp(-20*A));const h=Math.atan2(I.left.z-s.z,I.left.x-s.x),k=Math.atan2(this.lastGrip.left.z-o.z,this.lastGrip.left.x-o.x);let R=h-k;R>Math.PI?R-=Math.PI*2:R<-Math.PI&&(R+=Math.PI*2);const F=R/A,a=Math.exp(-20*A);this.rotateVelocity=this.rotateVelocity*a+F*(1-a)}else if(this.rotateVelocity*=Math.exp(-A/this.rotateInertia),I.left&&this.lastGrip.left){const s=I.left.clone().applyMatrix4(this.control.matrix);s.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)),s.multiplyScalar(1/A),this.velocity.lerp(s,1-Math.exp(-20*A))}else if(I.right&&this.lastGrip.right){const s=I.right.clone().applyMatrix4(this.control.matrix);s.sub(this.lastGrip.right.clone().applyMatrix4(this.control.matrix)),s.multiplyScalar(1/A),this.velocity.lerp(s,1-Math.exp(-20*A))}else this.velocity.multiplyScalar(Math.exp(-A/this.moveInertia));const g=this.lastPivot.clone().negate(),B=new MA.Matrix4().makeTranslation(g).premultiply(new MA.Matrix4().makeRotationY(this.rotateVelocity*A)).premultiply(new MA.Matrix4().makeTranslation(this.lastPivot));this.control.matrix.multiply(B),this.control.matrix.decompose(this.control.position,this.control.quaternion,this.control.scale),this.control.updateMatrixWorld(!0),this.control.position.sub(this.velocity.clone().multiplyScalar(A)),this.lastGrip=I}}const Yk=1,Kk=2,ek=.002,rk=.006,nk=.0015,dk=.15,qk=.15,xk=.1,lk=2,pk=0,fk=500,bk=500,Pk=200,uk=400,Tk=25,sI=1e-4,Ok={KeyW:new G.Vector3(0,0,-1),KeyS:new G.Vector3(0,0,1),KeyA:new G.Vector3(-1,0,0),KeyD:new G.Vector3(1,0,0),KeyE:new G.Vector3(0,1,0),KeyQ:new G.Vector3(0,-1,0)},mk={ArrowUp:new G.Vector3(0,0,-1),ArrowDown:new G.Vector3(0,0,1),ArrowLeft:new G.Vector3(-1,0,0),ArrowRight:new G.Vector3(1,0,0),PageUp:new G.Vector3(0,1,0),PageDown:new G.Vector3(0,-1,0)};new G.Vector3(0,0,1),new G.Vector3(0,0,-1);const Zk={Home:new G.Vector3(0,-1,0),End:new G.Vector3(0,1,0),Insert:new G.Vector3(-1,0,0),Delete:new G.Vector3(1,0,0)};class Vk{constructor({canvas:A}){this.lastTime=0,this.fpsMovement=new ho({}),this.pointerControls=new Ro({canvas:A})}update(A,I){const g=performance.now(),B=(g-(this.lastTime||g))/1e3;this.lastTime=g;let C=this.fpsMovement.update(B,A);return this.pointerControls.update(B,A,I)&&(C=!0),C}}class ho{constructor({moveSpeed:A,rollSpeed:I,stickThreshold:g,rotateSpeed:B,keycodeMoveMapping:C,keycodeRotateMapping:E,gamepadMapping:D,capsMultiplier:i,shiftMultiplier:w,ctrlMultiplier:s,xr:o}={}){this.enable=!0,this.extraMove=new G.Vector3,this.moveSpeed=A??Yk,this.rollSpeed=I??Kk,this.stickThreshold=g??xk,this.rotateSpeed=B??lk,this.keycodeMoveMapping=C??{...Ok,...mk},this.keycodeRotateMapping=E??{...Zk},this.gamepadMapping=D??{4:"rollLeft",5:"rollRight",6:"ctrl",7:"shift"},this.capsMultiplier=i??10,this.shiftMultiplier=w??5,this.ctrlMultiplier=s??1/5,this.xr=o,this.keydown={},this.keycode={},document.addEventListener("keydown",y=>{this.keydown[y.key]=!0,this.keycode[y.code]=!0}),document.addEventListener("keyup",y=>{this.keydown[y.key]=!1,this.keycode[y.code]=!1}),window.addEventListener("blur",()=>{this.keydown={},this.keycode={}})}update(A,I){var o,y;if(!this.enable)return!1;const g=[new G.Vector2,new G.Vector2],B=navigator.getGamepads()[0];B&&(g[0].set(B.axes[0],B.axes[1]),g[1].set(B.axes[2],B.axes[3]));const C=(B==null?void 0:B.buttons.map(h=>h.pressed))||[],E=Array.from(((y=(o=this.xr)==null?void 0:o.getSession())==null?void 0:y.inputSources)??[]);for(const h of E){const k=h.gamepad;if(k)switch(h.handedness){case"none":{g[0].x+=k.axes[0],g[0].y+=k.axes[1],g[1].x+=k.axes[2],g[1].y+=k.axes[3];break}case"left":{g[0].x+=k.axes[2],g[0].y+=k.axes[3];break}case"right":{g[1].x+=k.axes[2],g[1].y+=k.axes[3];break}}}for(const h of g)h.x=Math.abs(h.x)>=this.stickThreshold?h.x:0,h.y=Math.abs(h.y)>=this.stickThreshold?h.y:0;const D=new G.Vector3(g[1].x,g[1].y,0).multiplyScalar(this.rotateSpeed);for(const[h,k]of Object.entries(this.keycodeRotateMapping))this.keycode[h]&&D.add(k);for(const h in this.gamepadMapping)if(C[Number.parseInt(h)])switch(this.gamepadMapping[h]){case"rollLeft":D.z+=1;break;case"rollRight":D.z-=1;break}D.multiply(new G.Vector3(this.rotateSpeed,this.rotateSpeed,this.rollSpeed));let i=D.length()>sI;if(D.manhattanLength()>0){D.multiplyScalar(A);const h=new G.Euler().setFromQuaternion(I.quaternion,"YXZ");h.y-=D.x,h.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,h.x-D.y)),h.z=Math.max(-Math.PI,Math.min(Math.PI,h.z+D.z)),I.quaternion.setFromEuler(h)}const w=new G.Vector3(g[0].x,0,g[0].y);w.add(this.extraMove);for(const[h,k]of Object.entries(this.keycodeMoveMapping))this.keycode[h]&&w.add(k);let s=1;this.keydown.CapsLock&&(s*=this.capsMultiplier),(this.keycode.ShiftLeft||this.keycode.ShiftRight)&&(s*=this.shiftMultiplier),(this.keycode.ControlLeft||this.keycode.ControlRight)&&(s*=this.ctrlMultiplier);for(const h in this.gamepadMapping)if(C[Number.parseInt(h)])switch(this.gamepadMapping[h]){case"shift":s*=this.shiftMultiplier;break;case"ctrl":s*=this.ctrlMultiplier;break}return w.length()>sI&&(i=!0),w.applyQuaternion(I.quaternion),I.position.add(w.multiplyScalar(this.moveSpeed*s*A)),i}}class Ro{constructor({canvas:A,rotateSpeed:I,slideSpeed:g,scrollSpeed:B,swapRotateSlide:C,reverseRotate:E,reverseSlide:D,reverseSwipe:i,reverseScroll:w,moveInertia:s,rotateInertia:o,pointerRollScale:y,doublePress:h,pressMoveDelayMs:k,pressMoveAccelMs:R,pressMoveSpeed:F,doublePressMoveSpeed:a,triplePressMoveSpeed:S,pressMoveCenter:M}){this.enable=!0,this.canvas=A,this.rotateSpeed=I??ek,this.slideSpeed=g??rk,this.scrollSpeed=B??nk,this.swapRotateSlide=C??!1,this.reverseRotate=E??(iQ()||Ig()),this.reverseSlide=D??!1,this.reverseSwipe=i??!1,this.reverseScroll=w??!1,this.moveInertia=s??qk,this.rotateInertia=o??dk,this.pointerRollScale=y??pk,this.doublePress=h??(()=>{}),this.doublePressLimitMs=uk,this.doublePressDistance=Tk,this.pressMoveDelayMs=k??fk,this.pressMoveAccelMs=R??bk,this.pressMoveSpeed=F??0,this.doublePressMoveSpeed=a??this.pressMoveSpeed*5,this.triplePressMoveSpeed=S??this.doublePressMoveSpeed*5,this.pressMoveCenter=M??!0,this.doublePressed=void 0,this.triplePressed=!1,this.lastUp=null,this.lastLastUp=null,this.rotating=null,this.sliding=null,this.lastDown=null,this.dualPress=!1,this.scroll=new G.Vector3,this.rotateVelocity=new G.Vector3,this.moveVelocity=new G.Vector3,A.addEventListener("pointerdown",N=>{const U=this.getPointerPosition(N),J=U.clone(),t=U.clone(),H=!this.swapRotateSlide&&!this.rotating&&(N.pointerType!=="mouse"||N.button===0)||this.swapRotateSlide&&this.sliding&&!this.rotating&&(N.pointerType!=="mouse"||N.button===1),{pointerId:K}=N,Y=performance.now();if(H)this.rotating={initial:J,last:t,position:U,pointerId:K,timeStamp:Y},this.lastDown=this.rotating,A.setPointerCapture(N.pointerId),this.dualPress=!1;else if(!this.sliding){const L=N.pointerType==="mouse"?N.button:void 0;this.sliding={initial:J,last:t,position:U,pointerId:K,button:L,timeStamp:Y},this.lastDown=this.sliding,A.setPointerCapture(N.pointerId),this.dualPress=this.rotating!=null&&Y-this.rotating.timeStamp{var H,K;((H=this.rotating)==null?void 0:H.pointerId)===N.pointerId?(this.rotating=null,A.releasePointerCapture(N.pointerId),this.dualPress&&this.sliding&&(A.releasePointerCapture(this.sliding.pointerId),this.sliding=null)):((K=this.sliding)==null?void 0:K.pointerId)===N.pointerId&&(this.sliding=null,A.releasePointerCapture(N.pointerId),this.dualPress&&this.rotating&&(A.releasePointerCapture(this.rotating.pointerId),this.rotating=null)),this.doublePressed=void 0,this.triplePressed=!1;const U=this.getPointerPosition(N),J=this.lastUp;this.lastLastUp=this.lastUp;const t=performance.now();if(this.lastUp={position:U,timeStamp:t},J&&J.position.distanceTo(U){var U,J;((U=this.rotating)==null?void 0:U.pointerId)===N.pointerId?this.rotating.position=this.getPointerPosition(N):((J=this.sliding)==null?void 0:J.pointerId)===N.pointerId&&(this.sliding.position=this.getPointerPosition(N))}),A.addEventListener("contextmenu",N=>{N.preventDefault()}),A.addEventListener("wheel",N=>{this.scroll.add(new G.Vector3(N.deltaX,N.deltaY,N.deltaZ)),N.preventDefault()})}getPointerPosition(A){const I=this.canvas.getBoundingClientRect();return new G.Vector2(A.clientX-I.left,A.clientY-I.top)}update(A,I,g){var D,i;if(!this.enable)return!1;const B=performance.now();let C=!1;if(this.dualPress&&this.rotating&&this.sliding){const w=[this.rotating.position.clone().sub(this.rotating.last),this.sliding.position.clone().sub(this.sliding.last)],s=w[0].dot(w[1]);if(s>=.2){const o=w[0].clone().add(w[1]),y=new G.Vector3(o.x,-o.y,0);y.multiplyScalar(this.slideSpeed*(this.reverseSwipe?1:-1)),y.applyQuaternion(I.quaternion),I.position.add(y),this.moveVelocity=y.clone().multiplyScalar(1/A),y.length()>sI&&(C=!0)}else if(s<=-.2){const o=this.sliding.last.clone().sub(this.rotating.last),y=o.length();o.multiplyScalar(1/y).normalize();const h=new G.Vector2(-o.y,o.x),k=[w[0].dot(o),w[1].dot(o)],R=[w[0].dot(h),w[1].dot(h)],F=this.rotating.last.clone().add(this.sliding.last).multiplyScalar(.5);let a=new G.Vector3;const S=g??(I instanceof G.Camera?I:void 0);if(S){const t=new G.Vector2(F.x/this.canvas.clientWidth*2-1,-(F.y/this.canvas.clientHeight)*2+1),H=new G.Raycaster;H.setFromCamera(t,S),a=H.ray.direction}const M=k[1]-k[0],c=a.multiplyScalar(M*this.slideSpeed);I.position.add(c),this.moveVelocity=c.clone().multiplyScalar(1/A),c.length()>sI&&(C=!0);const N=[Math.atan(R[0]/(-.5*y)),Math.atan(R[1]/(.5*y))],U=.5*(N[0]+N[1])*this.pointerRollScale,J=new G.Euler().setFromQuaternion(I.quaternion,"YXZ");J.z=Math.max(-Math.PI,Math.min(Math.PI,J.z+.5*U)),I.quaternion.setFromEuler(J),Math.abs(U)>sI&&(C=!0)}this.rotating.last.copy(this.rotating.position),this.sliding.last.copy(this.sliding.position)}else{const w=new G.Vector3;if(this.rotating&&!this.dualPress){const o=this.rotating.position.clone().sub(this.rotating.last);this.rotating.last.copy(this.rotating.position),w.set(o.x,o.y,0),w.multiplyScalar(this.rotateSpeed*(this.reverseRotate?-1:1)),this.rotateVelocity=w.clone().multiplyScalar(1/A),w.length()>sI&&(C=!0)}else this.rotateVelocity.multiplyScalar(Math.exp(-A/this.rotateInertia)),w.addScaledVector(this.rotateVelocity,A),this.rotateVelocity.length()*.1>sI&&(C=!0);const s=new G.Euler().setFromQuaternion(I.quaternion,"YXZ");if(s.y-=w.x,s.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,s.x-w.y)),s.z*=Math.exp(-0*A),I.quaternion.setFromEuler(s),this.sliding&&!this.dualPress){const o=this.sliding.position.clone().sub(this.sliding.last);this.sliding.last.copy(this.sliding.position);const y=this.sliding.button!==2?new G.Vector3(o.x,0,o.y):new G.Vector3(o.x,-o.y,0);y.multiplyScalar(this.slideSpeed*(this.reverseSlide?-1:1)),y.applyQuaternion(I.quaternion),I.position.add(y),this.moveVelocity=y.clone().multiplyScalar(1/A),y.length()>sI&&(C=!0)}else{const o=new G.Vector3;if(this.sliding||this.rotating){const h=((D=this.lastDown)==null?void 0:D.last)??new G.Vector2,k=g??(I instanceof G.Camera?I:void 0);if(k){const R=this.pressMoveCenter?new G.Vector2(0,0):new G.Vector2(h.x/this.canvas.clientWidth*2-1,-(h.y/this.canvas.clientHeight)*2+1),F=new G.Raycaster;F.setFromCamera(R,k),o.copy(F.ray.direction).normalize()}if(this.doublePressed){this.pressHeld=!1;let R=(performance.now()-this.doublePressed)/this.pressMoveAccelMs;R=Math.max(0,Math.min(1,R)),o.multiplyScalar((this.triplePressed?this.triplePressMoveSpeed:this.doublePressMoveSpeed)*R)}else{let R=0;this.lastDown&&(R=(B-(((i=this.lastDown)==null?void 0:i.timeStamp)??B)-this.pressMoveDelayMs)/this.pressMoveAccelMs,this.lastDown.position.distanceTo(this.lastDown.initial)0&&(this.pressHeld=!0):this.pressHeld===void 0&&(this.pressHeld=!1)),this.pressHeld?o.multiplyScalar(this.pressMoveSpeed*Math.max(0,Math.min(1,R))):o.set(0,0,0)}}else this.pressHeld=void 0;const y=Math.exp(-A/this.moveInertia);this.moveVelocity.lerpVectors(o,this.moveVelocity,y),I.position.addScaledVector(this.moveVelocity,A),this.moveVelocity.length()*.1>sI&&(C=!0)}}const E=this.scroll.multiplyScalar(this.scrollSpeed);return E.set(E.x,E.z,E.y),this.reverseScroll&&E.multiplyScalar(-1),E.applyQuaternion(I.quaternion),I.position.add(E),E.length()>sI&&(C=!0),this.scroll.set(0,0,0),C}}const ko=` + `)}}).outputs.covsplat}function ph({splats:Q,extents:A,stepSize:I=1,pointRadius:g=.01,pointShadowScale:B=2,opacity:C=1,color:E}){const o=new a.Vector3,D=new a.Vector3,w=new a.Quaternion(0,0,0,1);E==null&&(E=(t,G)=>t.set(.55+.45*Math.cos(G.x*1),.55+.45*Math.cos(G.y*1),.55+.45*Math.cos(G.z*1)));const s=new a.Color;for(let t=A.min.z;t=g)return;const e=new a.Vector3().addVectors(y,S).normalize(),k=new a.Vector3().addVectors(S,F).normalize(),R=new a.Vector3().addVectors(F,y).normalize();w(h+1,y,e,R),w(h+1,e,S,k),w(h+1,R,k,F),w(h+1,e,k,R)}for(const h of[-1,1])for(const y of[-1,1])for(const S of[-1,1]){const F=new a.Vector3(h,0,0),e=new a.Vector3(0,y,0),k=new a.Vector3(0,0,S);w(0,F,e,k)}const s=Object.values(o),t=new a.Vector3(C,C,E),G=new a.Quaternion,c=typeof i=="function"?new a.Color:i;for(const h of s)G.setFromUnitVectors(new a.Vector3(0,0,-1),h),typeof i=="function"&&i(c,h),h.multiplyScalar(I),h.add(A),Q.pushSplat(h,t,G,1,c)}function bh({text:Q,font:A,fontSize:I,color:g,rgb:B,dotRadius:C,textAlign:E,lineHeight:i,objectScale:o}){A=A??"Arial",I=I??32,g=g??new a.Color(1,1,1),C=C??.8,E=E??"start",i=i??1,o=o??1;const D=Q.split(` +`),w=document.createElement("canvas"),s=w.getContext("2d");if(!s)throw new Error("Failed to create canvas context");s.font=`${I}px ${A}`,s.textAlign=E;const t=s.measureText(""),G=t.fontBoundingBoxAscent+t.fontBoundingBoxDescent;let c=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,y=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY;for(let d=0;d0){const O=p/255;J.set(Y-.5*(k-1),.5*(R-1)-d,0),J.multiplyScalar(o),M.pushSplat(J,H,n,O,B)}L+=4}const x=new jA({packedSplats:M});return x.recolor=g,x}function Ph({url:Q,dotRadius:A,subXY:I,forEachSplat:g}){return A=A??.8,I=Math.max(1,Math.floor(I??1)),new jA({constructSplats:async B=>new Promise((C,E)=>{const i=new Image;i.crossOrigin="anonymous",i.onerror=E,i.onload=()=>{const{width:o,height:D}=i,w=document.createElement("canvas");w.width=o,w.height=D;const s=w.getContext("2d");if(!s){E(new Error("Failed to create canvas context"));return}s.imageSmoothingEnabled=!0,s.imageSmoothingQuality="high";const t=Math.round(o/I),G=Math.round(D/I);s.drawImage(i,0,0,t,G);try{const c=s.getImageData(0,0,t,G),h=new Uint8Array(c.data.buffer),y=new a.Vector3,S=new a.Vector3().setScalar(A),F=new a.Quaternion(0,0,0,1),e=new a.Color;let k=0;for(let R=0;R0){let J=M/255;e.set(h[U+0]/255,h[U+1]/255,h[U+2]/255),y.set(N-.5*(t-1),.5*(G-1)-R,0),S.setScalar(A),F.set(0,0,0,1);let H=!0;if(g){const n=g(t,G,k,y,S,F,J,e);J=n??J,H=n!==null}H&&B.pushSplat(y,S,F,J,e)}k+=1}C()}catch(c){E(c)}},i.src=Q})})}function mh({box:Q,cells:A,dotScale:I,color:g,opacity:B}){A.x=Math.max(1,Math.round(A.x)),A.y=Math.max(1,Math.round(A.y)),A.z=Math.max(1,Math.round(A.z)),B=B??1;const C=A.x*A.y*A.z,E=IA("int",A.x),i=IA("int",A.y);IA("int",A.z);const o=iI(0),D=new _I({numSplats:C,generator:HA({index:"int"},{gsplat:V},({index:s})=>{if(!s)throw new Error("index is undefined");const t=bQ(s,E),G=Zg(s,E),c=bQ(G,i),h=Zg(G,i),y=yI({vectorType:"ivec3",x:t,y:c,z:h}),S=Ti(o),F=yI({vectorType:"ivec2",x:s,y:S}),e=TD(F),k=IA("vec3",Q.min),R=IA("vec3",Q.max),N=EI(R,k),U=Zg(qA(pI(y),e),IA("vec3",A));let M,J,H;g?(M=IA("float",g.r),J=IA("float",g.g),H=IA("float",g.b)):{r:M,g:J,b:H}=VI(U).outputs;const n=yI({vectorType:"vec4",r:M,g:J,b:H,a:IA("float",B)}),L=qA(k,FA(N,U)),x=pI(IA("float",I)),d=IA("vec4",new a.Quaternion(0,0,0,1));let Y=CI({flags:Vg("uint","GSPLAT_FLAG_ACTIVE"),index:s,center:L,scales:x,quaternion:d,rgba:n});return Y=w.applyGsplat(Y),{gsplat:Y}},{globals:()=>[JA]}),update:({time:s})=>{o.value=s,w.update(D),D.updateVersion()}}),w=new lI;return D}const Th={box:new a.Box3(new a.Vector3(-1,-1,-1),new a.Vector3(1,1,1)),density:100,fallDirection:new a.Vector3(-1,-3,1).normalize(),fallVelocity:.02,wanderScale:.04,wanderVariance:2,color1:new a.Color(1,1,1),color2:new a.Color(.5,.5,1),minScale:.001,maxScale:.005,anisoScale:new a.Vector3(1,1,1)},Oh={box:new a.Box3(new a.Vector3(-2,-1,-2),new a.Vector3(2,5,2)),density:10,fallDirection:new a.Vector3(0,-1,0),fallVelocity:2,wanderScale:.1,wanderVariance:1,color1:new a.Color(1,1,1),color2:new a.Color(.25,.25,.5),minScale:.005,maxScale:.01,anisoScale:new a.Vector3(.1,1,.1)};function Zh({box:Q,minY:A,numSplats:I,density:g,anisoScale:B,minScale:C,maxScale:E,fallDirection:i,fallVelocity:o,wanderScale:D,wanderVariance:w,color1:s,color2:t,opacity:G,onFrame:c}){Q=Q??new a.Box3(new a.Vector3(-1,-1,-1),new a.Vector3(1,1,1));const h=(Q.max.x-Q.min.x)*(Q.max.y-Q.min.y)*(Q.max.z-Q.min.z);g=g??100,I=I??Math.max(1,Math.min(1e6,Math.round(h*g)));const y=iI(C??.001),S=iI(E??.005),F=NI(((B==null?void 0:B.clone())??new a.Vector3(1,1,1)).normalize()),e=NI((i??new a.Vector3(0,-1,0)).normalize()),k=iI(o??.02),R=iI(D??.01),N=iI(w??2),U=NI(s??new a.Color(1,1,1)),M=NI(t??new a.Color(.5,.5,1)),J=iI(G??1),H=iI(0),n=NI(new a.Vector3(0,0,0)),L=NI(Q.min),x=NI(Q.max),d=iI(A??Number.NEGATIVE_INFINITY),Y=EI(x,L),p=new _I({numSplats:I,generator:HA({index:"int"},{gsplat:V},({index:gA})=>{if(!gA)throw new Error("index not defined");const v=PQ(gA),EA=VI(v).outputs.w;let W=pI(v),QA=vg(FA(EA,IA("float",100)));QA=mQ(FA(Vg("float","PI"),QA)),QA=qA(y,FA(QA,EI(S,y)));const X=FA(QA,F),P=vg(FA(EA,IA("float",10))),u=vg(EA),m=OE(U,M,u),f=FA(m,P),yA=PQ(yI({vectorType:"ivec2",x:gA,y:IA("int",6837)}));let aA=pI(yA),cA=FA(VI(yA).outputs.w,N);cA=qA(H,cA),W=qA(W,n);const SA=mE(W,IA("vec3",new a.Vector3(1,1,1)));W=qA(L,FA(Y,SA));const sA=IA("vec4",new a.Quaternion(0,0,0,1));aA=mQ(qA(pI(cA),aA)),aA=FA(aA,R);let tA=qA(W,aA),AI=VI(tA).outputs.y;AI=TE(d,AI),tA=yI({vector:tA,y:AI});let TA=CI({flags:Vg("uint","GSPLAT_FLAG_ACTIVE"),index:gA,center:tA,scales:X,quaternion:sA,rgb:f,opacity:J});return TA=O.applyGsplat(TA),{gsplat:TA}},{globals:()=>[JA]}),update:({object:gA,time:v,deltaTime:EA})=>{H.value=v,O.update(p);const W=e.value.clone().multiplyScalar(k.value*EA);n.value.add(W),gA.visible=J.value>0,c==null||c({object:gA,time:v,deltaTime:EA}),p.updateVersion()}}),O=new lI;return{snow:p,min:L,max:x,minY:d,color1:U,color2:M,opacity:J,fallVelocity:k,wanderVariance:N,wanderScale:R,fallDirection:e,minScale:y,maxScale:S,anisoScale:F}}const vh=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_RAIN:Oh,DEFAULT_SNOW:Th,snowBox:Zh,staticBox:mh},Symbol.toStringTag,{value:"Module"}));function Zo(Q){return HA({gsplat:V},{gsplat:V},({gsplat:A})=>{if(!A)throw new Error("No gsplat input");let I=YQ(A);const g=Q.applyGsplat(A),B=mA(g).outputs.center,C=YQ(g),E=RD(B,C),i=ei(E,IA("float",0));I=SB(i,cB(I),I);const o=qA(FA(I,IA("float",.5)),IA("float",.5));return A=CI({gsplat:A,rgb:o}),{gsplat:A}})}function Xh(Q){Q.enableWorldToView=!0,Q.worldModifier=Zo(Q.context.worldToView),Q.updateGenerator()}function vo(Q,A,I,g){return HA({gsplat:V},{gsplat:V},({gsplat:B})=>{if(!B)throw new Error("No gsplat input");let{center:C}=mA(B).outputs;C=Q.apply(C);const{z:E}=VI(C).outputs;let i=OD(cB(E),A,I);return i=SB(g,EI(IA("float",1),i),i),B=CI({gsplat:B,r:i,g:i,b:i}),{gsplat:B}})}function Vh(Q,A,I,g){Q.enableWorldToView=!0;const B=IA("float",A),C=IA("float",I),E=IA("bool",g??!1);return Q.worldModifier=vo(Q.context.worldToView,B,C,E),Q.updateGenerator(),{minDepth:B,maxDepth:C,reverse:E}}const Wh=Object.freeze(Object.defineProperty({__proto__:null,makeDepthColorModifier:vo,makeNormalColorModifier:Zo,setDepthColor:Vh,setWorldNormalColor:Xh},Symbol.toStringTag,{value:"Module"})),Xo=1,WQ=4,Vo=2,Wo=5,jo=1/5,jh=!1,zo=(Q,A)=>{var I,g,B,C;return Q.leftIsHand?new a.Vector3:new a.Vector3(((I=Q.left)==null?void 0:I.axes[2])??0,(((g=Q.left)==null?void 0:g.buttons[0].value)??0)-(((B=Q.left)==null?void 0:B.buttons[1].value)??0),((C=Q.left)==null?void 0:C.axes[3])??0)},_o=(Q,A)=>{var I;return Q.rightIsHand?new a.Vector3:new a.Vector3(((I=Q.right)==null?void 0:I.axes[2])??0,0,0)},$o=(Q,A)=>{var I,g;return Q.rightIsHand?!1:((g=(I=Q.right)==null?void 0:I.buttons[0])==null?void 0:g.pressed)??!1},As=(Q,A)=>{var I,g;return Q.rightIsHand?!1:((g=(I=Q.right)==null?void 0:I.buttons[1])==null?void 0:g.pressed)??!1};var AQ=(Q=>(Q.w="wrist",Q.t0="thumb-metacarpal",Q.t1="thumb-phalanx-proximal",Q.t2="thumb-phalanx-distal",Q.t3="thumb-tip",Q.i0="index-finger-metacarpal",Q.i1="index-finger-phalanx-proximal",Q.i2="index-finger-phalanx-intermediate",Q.i3="index-finger-phalanx-distal",Q.i4="index-finger-tip",Q.m0="middle-finger-metacarpal",Q.m1="middle-finger-phalanx-proximal",Q.m2="middle-finger-phalanx-intermediate",Q.m3="middle-finger-phalanx-distal",Q.m4="middle-finger-tip",Q.r0="ring-finger-metacarpal",Q.r1="ring-finger-phalanx-proximal",Q.r2="ring-finger-phalanx-intermediate",Q.r3="ring-finger-phalanx-distal",Q.r4="ring-finger-tip",Q.p0="pinky-finger-metacarpal",Q.p1="pinky-finger-phalanx-proximal",Q.p2="pinky-finger-phalanx-intermediate",Q.p3="pinky-finger-phalanx-distal",Q.p4="pinky-finger-tip",Q))(AQ||{});const cI=Object.keys(AQ),zh=cI.length,_h={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},TB={w:.02,t0:.015,t1:.012,t2:.0105,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},$h=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Ay=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],Iy=["t3","i4","m4","r4","p4"],gy=["i4","m4","r4","p4"];var UB=(Q=>(Q.left="left",Q.right="right",Q))(UB||{});const Qy=Object.keys(UB),By=/Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;function Cy(){const Q=navigator.userAgent??"";if(By.test(Q))return!1;if(/Android/i.test(Q)||/Mobile/i.test(Q))return!0;const I=navigator.userAgentData;return I&&typeof I.mobile=="boolean"?I.mobile:!1}const vA=class vA{constructor(A){this.lastControllersUpdate=0,this.hands=[],this.renderer=A.renderer,this.xr=navigator.xr,this.mode="initializing",this.onEnterXr=A.onEnterXr,this.onExitXr=A.onExitXr,this.enableHands=A.enableHands??!1,this.controllers=A.controllers,Promise.resolve().then(()=>{var C;if(!this.xr){this.mode="not_supported";return}if(!A.allowMobileXr&&Cy()){this.mode="not_supported";return}this.enableHands&&(this.hands=[new ng("left"),new ng("right")]);let I,g;if(A.element?I=A.element:A.elementId?I=document.getElementById(A.elementId)??void 0:(I=vA.createButton(),g=A.button==null||typeof A.button=="boolean"?{}:A.button),!I)throw new Error("No element or button provided");I.style.display="none",I.classList.add("hidden"),this.button=g,this.element=I;const B=(C=A.onMouseLeaveOpacity)==null?void 0:C.toString();return B!==void 0&&(I.addEventListener("mouseleave",()=>{I.style.opacity=B}),I.addEventListener("mouseenter",()=>{I.style.opacity=""})),this.initializeXr(A)}).then(()=>{var I;return(I=A.onReady)==null?void 0:I.call(A,this.mode!=="not_supported")}).catch(I=>{alert(`Error initializing SparkXr: ${I}`)})}async initializeXr(A){var D,w;if(!this.xr||!this.element)return;const I=this.element,g={vr:["immersive-vr"],ar:["immersive-ar"],arvr:["immersive-ar","immersive-vr"],vrar:["immersive-vr","immersive-ar"]}[A.mode??"vrar"];if(!g)throw new Error(`Invalid mode: ${A.mode}`);let B=null;for(const s of g)if(await this.xr.isSessionSupported(s)){B=s;break}if(!B){this.mode="not_supported";return}this.mode=B;const C=A.referenceSpaceType??"local";this.renderer.xr.enabled=!0,this.renderer.xr.setReferenceSpaceType(C),A.fixedFoveation!==void 0&&this.renderer.xr.setFoveation(A.fixedFoveation);const E=A.frameBufferScaleFactor??.5;this.renderer.xr.setFramebufferScaleFactor(E);const i=((D=A.sessionInit)==null?void 0:D.optionalFeatures)??[];A.enableHands&&i.push("hand-tracking");const o=((w=A.sessionInit)==null?void 0:w.requiredFeatures)??[];o.push(C),this.sessionInit={...A.sessionInit,optionalFeatures:i,requiredFeatures:o},I.addEventListener("click",()=>{this.toggleXr()}),this.updateElement()}async toggleXr(){var A,I,g;if(!(!this.xr||!this.sessionInit))if(this.session)this.session.end();else try{const B=this.mode,C=await this.xr.requestSession(B,this.sessionInit);this.session=C;const E=()=>{var D;C==null||C.removeEventListener("end",E),C==null||C.removeEventListener("visibilitychange",o),this.session=void 0,this.updateElement(),(D=this.onExitXr)==null||D.call(this)};let i=C.visibilityState;const o=()=>{(C==null?void 0:C.visibilityState)==="visible-blurred"&&i==="visible"&&(C==null||C.end()),i=C==null?void 0:C.visibilityState};return(A=this.session)==null||A.addEventListener("end",E),(I=this.session)==null||I.addEventListener("visibilitychange",o),await this.renderer.xr.setSession(this.session),(g=this.onEnterXr)==null?void 0:g.call(this)}catch(B){console.error("Error requesting XR session",B);return}}updateElement(){const A=this.mode,I=this.element;if(I){I.style.display="",I.classList.remove("hidden");const g=typeof this.button=="boolean"?{}:this.button;if(g){if(this.session){const B=(A==="immersive-vr"?g.exitVrHtml:g.exitArHtml)??g.exitXrHtml,C=(A==="immersive-vr"?g.exitVrText:g.exitArText)??g.exitXrText;B?I.innerHTML=B:C?I.textContent=C:I.textContent=A==="immersive-vr"?"EXIT VR":"EXIT AR"}else{const B=(A==="immersive-vr"?g.enterVrHtml:g.enterArHtml)??g.enterXrHtml,C=(A==="immersive-vr"?g.enterVrText:g.enterArText)??g.enterXrText;B?I.innerHTML=B:C?I.textContent=C:I.textContent=A==="immersive-vr"?"ENTER VR":"ENTER AR"}I.style.display=""}}}static createButton(){const A=document.createElement("button");return Object.assign(A.style,{position:"absolute",bottom:"20px",left:"50%",transform:"translateX(-50%)",padding:"40px 40px",border:"2px solid #fff",borderRadius:"16px",background:"rgba(0,0,0,0.1)",color:"#fff",font:"bold 28px sans-serif",textAlign:"center",userSelect:"none",zIndex:"999"}),document.body.appendChild(A),A}xrSupported(){return!!this.xr}left(){return this.hands[0]}right(){return this.hands[1]}updateControllers(A){var D,w,s,t,G,c,h,y,S,F,e,k;const I=A.parent,g=performance.now(),B=(g-(this.lastControllersUpdate||g))/1e3;this.lastControllersUpdate=g;const C={};for(const R of((D=this.renderer.xr.getSession())==null?void 0:D.inputSources)??[]){const N=R.gamepad;N&&(R.handedness==="left"||R.handedness==="right")&&(C[R.handedness]=N,R.handedness==="left"?C.leftIsHand=!!R.hand:R.handedness==="right"&&(C.rightIsHand=!!R.hand))}const E=(((w=this.controllers)==null?void 0:w.getRotate)??_o)(C,this);if(E.multiply(new a.Vector3(((s=this.controllers)==null?void 0:s.rotateSpeed)??WQ,((t=this.controllers)==null?void 0:t.rotateSpeed)??WQ,((G=this.controllers)==null?void 0:G.rollSpeed)??Vo)),E.manhattanLength()>0){E.multiplyScalar(B);const R=new a.Euler(-E.y,-E.x,E.z,"YXZ"),N=new a.Quaternion().setFromEuler(R),U=A.getWorldPosition(new a.Vector3);(c=I.parent)==null||c.worldToLocal(U),I.position.sub(U),I.position.applyQuaternion(N),I.position.add(U),I.quaternion.premultiply(N)}const i=(((h=this.controllers)==null?void 0:h.getMove)??zo)(C,this);let o=((y=this.controllers)==null?void 0:y.moveSpeed)??Xo;(((S=this.controllers)==null?void 0:S.getFast)??$o)(C,this)&&(o*=Wo),(((F=this.controllers)==null?void 0:F.getSlow)??As)(C,this)&&(o*=jo),(e=this.controllers)!=null&&e.moveHeading?i.applyQuaternion(A.quaternion):(k=this.controllers)!=null&&k.moveDirection&&(mg.setFromQuaternion(A.quaternion,"YXZ"),mg.x=0,mg.z=0,zQ.setFromEuler(mg),i.applyQuaternion(zQ)),i.applyQuaternion(I.quaternion),i.multiplyScalar(B*o),I.position.add(i)}updateHands({xrFrame:A}){const I=this.renderer.xr.getSession();if(!I)return;const g=this.renderer.xr.getReferenceSpace();if(g&&A.getJointPose){for(const B of this.hands)B&&(B.lastJoints=B.joints,B.joints=void 0);for(const B of I.inputSources){if(!B.hand)continue;const C=B.handedness,E=this.hands[C==="left"?0:1];if(E)for(const i of cI){const o=B.hand.get(AQ[i]);if(o){const D=A.getJointPose(o,g);if(D){const{position:w,orientation:s}=D.transform;E.joints||(E.joints={}),E.joints[i]={position:new a.Vector3(w.x,w.y,w.z),quaternion:new a.Quaternion(s.x,s.y,s.z,s.w),radius:TB[i]}}}}}}}makeJointSplats(A){const I=new Is(A);return I.onFrame=()=>{const g=this.hands[A==="left"?0:1],B=g==null?void 0:g.joints;I.updateJoints(B)},I}snapshotHands(A){var g,B;const I=[(g=this.hands[0])==null?void 0:g.snapshotJoints(),(B=this.hands[1])==null?void 0:B.snapshotJoints()];return{time:A,hands:I}}};vA.JointEnum=AQ,vA.JOINT_IDS=cI,vA.NUM_JOINTS=zh,vA.JOINT_INDEX=_h,vA.JOINT_RADIUS=TB,vA.JOINT_SEGMENTS=$h,vA.JOINT_SEGMENT_STEPS=Ay,vA.JOINT_TIPS=Iy,vA.FINGER_TIPS=gy,vA.Hand=UB,vA.HANDS=Qy;let jQ=vA;const rQ=Q=>Math.round(Q*1e4)/1e4,mg=new a.Euler(0,0,0,"YXZ"),zQ=new a.Quaternion,Ey=new a.Quaternion;function iy(Q,A){if(!Q.length)return null;const I=Q[0],g=Q[Q.length-1];if(Ag.time)return null;const B=sy(Q,A);if(B===-1)return null;const C=Q[B],E=Q[B+1];if(!E)return oy(C,A);const i=E.time-C.time,o=i>0?(A-C.time)/i:0;return Dy(C,E,o,A)}function Dy(Q,A,I,g){const B=Math.max(Q.hands.length,A.hands.length),C=Array.from({length:B},(E,i)=>wy(Q.hands[i],A.hands[i],I));return{time:g,hands:C}}function oy(Q,A){return{time:A,hands:Q.hands.map(I=>ty(I))}}class ng{constructor(A){this.hand=A}static newFromSnapshot(A,I){const g=new ng(A);g.joints={};for(const B of cI){const C=I[B];C&&(g.joints[B]={position:new a.Vector3(C.pos[0],C.pos[1],C.pos[2]),quaternion:new a.Quaternion(C.quat[0],C.quat[1],C.quat[2],C.quat[3]),radius:C.radius})}return g}valid(){return!!this.joints}snapshotJoints(){if(!this.joints)return;const A={};for(const I of cI){const g=this.joints[I];g&&(A[I]={pos:g.position.toArray().map(rQ),quat:g.quaternion.toArray().map(rQ),radius:rQ(g.radius)})}return A}toFlatArray(){if(!this.joints)return;const A=new Float32Array(1+25*7);A[0]=this.hand==="left"?0:1;let I=1;for(const g of cI){const B=this.joints[g];B&&(A[I]=B.position.x,A[I+1]=B.position.y,A[I+2]=B.position.z,A[I+3]=B.quaternion.x,A[I+4]=B.quaternion.y,A[I+5]=B.quaternion.z,A[I+6]=B.quaternion.w),I+=7}return A}}function sy(Q,A){let I=0,g=Q.length-1;for(;I<=g;){const B=I+g>>1;Q[B].time<=A?I=B+1:g=B-1}return g}function wy(Q,A,I=0){if(!Q||!A)return;const g={};for(const B of cI){const C=ay(Q[B],A[B],I);C&&(g[B]=C)}return g}function ay(Q,A,I=0){if(!Q||!A)return;const g=Q.pos.map((E,i)=>E+(A.pos[i]-E)*I),B=zQ.fromArray(Q.quat).slerp(Ey.fromArray(A.quat),I).toArray(),C=Q.radius+(A.radius-Q.radius)*I;return{pos:g,quat:B,radius:C}}function ty(Q){if(!Q)return;const A={};for(const I of cI){const g=Q[I];g&&(A[I]=Gy(g))}return A}function Gy(Q){return{pos:[...Q.pos],quat:[...Q.quat],radius:Q.radius}}class Is extends jA{constructor(A){super({}),this.scratchCenter=new a.Vector3,this.scratchQuat=new a.Quaternion(0,0,0,1),this.scratchScales=new a.Vector3().setScalar(.01),this.scratchColor=new a.Color(1,1,1),this.hand=A}updateJoints(A){if(this.visible=!1,!A||!this.packedSplats)return;this.visible=!0;let I=0;for(const g of cI){const B=A[g];if(!B)continue;this.scratchCenter.copy(B.position),this.scratchQuat.copy(B.quaternion),this.scratchScales.set(B.radius,.75*B.radius,1.5*B.radius),this.packedSplats.setSplat(I,this.scratchCenter,this.scratchScales,this.scratchQuat,.75,this.scratchColor),I+=1}this.packedSplats.numSplats=I,this.packedSplats.needsUpdate=!0,this.numSplats=I,this.updateVersion()}}const hy=.5,yy=.5,cy=0;var hQ=(Q=>(Q.w="wrist",Q.t0="thumb-metacarpal",Q.t1="thumb-phalanx-proximal",Q.t2="thumb-phalanx-distal",Q.t3="thumb-tip",Q.i0="index-finger-metacarpal",Q.i1="index-finger-phalanx-proximal",Q.i2="index-finger-phalanx-intermediate",Q.i3="index-finger-phalanx-distal",Q.i4="index-finger-tip",Q.m0="middle-finger-metacarpal",Q.m1="middle-finger-phalanx-proximal",Q.m2="middle-finger-phalanx-intermediate",Q.m3="middle-finger-phalanx-distal",Q.m4="middle-finger-tip",Q.r0="ring-finger-metacarpal",Q.r1="ring-finger-phalanx-proximal",Q.r2="ring-finger-phalanx-intermediate",Q.r3="ring-finger-phalanx-distal",Q.r4="ring-finger-tip",Q.p0="pinky-finger-metacarpal",Q.p1="pinky-finger-phalanx-proximal",Q.p2="pinky-finger-phalanx-intermediate",Q.p3="pinky-finger-phalanx-distal",Q.p4="pinky-finger-tip",Q))(hQ||{});const LB=Object.keys(hQ),Sy=LB.length,Fy={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},wg={w:.02,t0:.02,t1:.014,t2:.0115,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},gs=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Qs=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],Ry=["t3","i4","m4","r4","p4"],ky=["i4","m4","r4","p4"];var nB=(Q=>(Q.left="left",Q.right="right",Q))(nB||{});const IQ=Object.keys(nB);class ey{constructor(){this.hands={},this.last={},this.values={},this.tests={},this.lastTests={},this.updated=!1}update({xr:A,xrFrame:I}){const g=A.getSession();if(!g)return;const B=A.getReferenceSpace();if(B&&I.getJointPose){this.last=this.hands,this.lastTests=this.tests,this.hands={},this.values={},this.tests={};for(const C of g.inputSources){if(!C.hand)continue;const E=C.handedness;this.hands[E]={};for(const i of LB){const o=C.hand.get(hQ[i]);if(o){const D=I.getJointPose(o,B);if(D){const{position:w,orientation:s}=D.transform;this.hands[E][i]={position:new RA.Vector3(w.x,w.y,w.z),quaternion:new RA.Quaternion(s.x,s.y,s.z,s.w),radius:D.radius||.001}}}}}for(const C of IQ)for(const{key:E,value:i}of[{key:`${C}AllTips`,value:this.allTipsTouching(C)},{key:`${C}IndexThumb`,value:this.touching(C,"i4",C,"t3")},{key:`${C}MiddleThumb`,value:this.touching(C,"m4",C,"t3")},{key:`${C}RingThumb`,value:this.touching(C,"r4",C,"t3")},{key:`${C}PinkyThumb`,value:this.touching(C,"p4",C,"t3")},{key:`${C}TriTips`,value:this.triTipsTouching(C)}])this.values[E]=i,this.tests[E]=i===1?!0:i===0?!1:this.lastTests[E]??!1}}makeGhostMesh(){const A=new RA.Vector3,I=new RA.Vector3(.01,.01,.01),g=new RA.Quaternion(0,0,0,1),B=new RA.Color(1,1,1),C=Math.PI*3;new RA.Color(1,1,1);let E=1;const i=new jA({onFrame:()=>{if(!i.packedSplats)return;let o=0;for(const D of IQ){const w=this.hands[D];for(const[s,t]of gs.entries())for(let G=1;G.8&&(N*=Math.sqrt(1-((e-.8)/.2)**2)),I.set(.65*N,.5*N,.003),B.set(.55+.45*Math.sin(A.x*C),.55+.45*Math.sin(A.y*C),.55+.45*Math.sin(A.z*C)),D==="right"&&B.set(1-B.r,1-B.g,1-B.b),E=.75}i.packedSplats.setSplat(o,A,I,g,E,B),o+=1}}}i.packedSplats.numSplats=o,i.packedSplats.needsUpdate=!0,i.numSplats=o,i.updateVersion()}});return i}distance(A,I,g,B,C=!1){const E=C?this.last[A]:this.hands[A],i=C?this.last[g]:this.hands[g],o=E==null?void 0:E[I],D=i==null?void 0:i[B];return!o||!D?Number.POSITIVE_INFINITY:o.position.distanceTo(D.position)}separation(A,I,g,B,C=!1){const E=this.distance(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:E-wg[I]-wg[B]}touching(A,I,g,B,C=!1){const E=this.separation(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:1-Math.max(0,Math.min(1,E/.01-cy))}allTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"r4",I),this.touching(A,"r4",A,"p4",I))}triTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"t3",I))}}class Ny{constructor({xrHands:A,control:I,moveInertia:g,rotateInertia:B}){this.lastGrip={},this.lastPivot=new RA.Vector3,this.rotateVelocity=0,this.velocity=new RA.Vector3,this.xrHands=A,this.control=I,this.moveInertia=g??hy,this.rotateInertia=B??yy}update(A){var C,E,i,o,D;const I={};for(const w of IQ){const s=this.xrHands.hands[w];s&&this.xrHands.tests[`${w}MiddleThumb`]&&(I[w]=new RA.Vector3().add(((C=s.t3)==null?void 0:C.position)??new RA.Vector3).add(((E=s.i4)==null?void 0:E.position)??new RA.Vector3).add(((i=s.m4)==null?void 0:i.position)??new RA.Vector3).add(((o=s.r4)==null?void 0:o.position)??new RA.Vector3).add(((D=s.p4)==null?void 0:D.position)??new RA.Vector3).multiplyScalar(1/5))}if(I.left&&I.right&&this.lastGrip.left&&this.lastGrip.right){const w=I.left.clone().add(I.right).multiplyScalar(.5),s=this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(.5);this.lastPivot=w;const t=w.clone().applyMatrix4(this.control.matrix);t.sub(s.clone().applyMatrix4(this.control.matrix)),t.multiplyScalar(1/A),this.velocity.lerp(t,1-Math.exp(-20*A));const G=Math.atan2(I.left.z-w.z,I.left.x-w.x),c=Math.atan2(this.lastGrip.left.z-s.z,this.lastGrip.left.x-s.x);let h=G-c;h>Math.PI?h-=Math.PI*2:h<-Math.PI&&(h+=Math.PI*2);const y=h/A,S=Math.exp(-20*A);this.rotateVelocity=this.rotateVelocity*S+y*(1-S)}else if(this.rotateVelocity*=Math.exp(-A/this.rotateInertia),I.left&&this.lastGrip.left){const w=I.left.clone().applyMatrix4(this.control.matrix);w.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)),w.multiplyScalar(1/A),this.velocity.lerp(w,1-Math.exp(-20*A))}else if(I.right&&this.lastGrip.right){const w=I.right.clone().applyMatrix4(this.control.matrix);w.sub(this.lastGrip.right.clone().applyMatrix4(this.control.matrix)),w.multiplyScalar(1/A),this.velocity.lerp(w,1-Math.exp(-20*A))}else this.velocity.multiplyScalar(Math.exp(-A/this.moveInertia));const g=this.lastPivot.clone().negate(),B=new RA.Matrix4().makeTranslation(g).premultiply(new RA.Matrix4().makeRotationY(this.rotateVelocity*A)).premultiply(new RA.Matrix4().makeTranslation(this.lastPivot));this.control.matrix.multiply(B),this.control.matrix.decompose(this.control.position,this.control.quaternion,this.control.scale),this.control.updateMatrixWorld(!0),this.control.position.sub(this.velocity.clone().multiplyScalar(A)),this.lastGrip=I}}const My=1,Jy=2,Uy=.002,Ly=.006,ny=.0015,Hy=.15,Ky=.15,ry=.1,Yy=2,dy=0,ly=500,xy=500,qy=200,py=400,fy=25,DI=1e-4,uy={KeyW:new a.Vector3(0,0,-1),KeyS:new a.Vector3(0,0,1),KeyA:new a.Vector3(-1,0,0),KeyD:new a.Vector3(1,0,0),KeyE:new a.Vector3(0,1,0),KeyQ:new a.Vector3(0,-1,0)},by={ArrowUp:new a.Vector3(0,0,-1),ArrowDown:new a.Vector3(0,0,1),ArrowLeft:new a.Vector3(-1,0,0),ArrowRight:new a.Vector3(1,0,0),PageUp:new a.Vector3(0,1,0),PageDown:new a.Vector3(0,-1,0)};new a.Vector3(0,0,1),new a.Vector3(0,0,-1);const Py={Home:new a.Vector3(0,-1,0),End:new a.Vector3(0,1,0),Insert:new a.Vector3(-1,0,0),Delete:new a.Vector3(1,0,0)};class my{constructor({canvas:A}){this.lastTime=0,this.fpsMovement=new Bs({}),this.pointerControls=new Cs({canvas:A})}update(A,I){const g=performance.now(),B=(g-(this.lastTime||g))/1e3;this.lastTime=g;let C=this.fpsMovement.update(B,A);return this.pointerControls.update(B,A,I)&&(C=!0),C}}class Bs{constructor({moveSpeed:A,rollSpeed:I,stickThreshold:g,rotateSpeed:B,keycodeMoveMapping:C,keycodeRotateMapping:E,gamepadMapping:i,capsMultiplier:o,shiftMultiplier:D,ctrlMultiplier:w,xr:s}={}){this.enable=!0,this.extraMove=new a.Vector3,this.moveSpeed=A??My,this.rollSpeed=I??Jy,this.stickThreshold=g??ry,this.rotateSpeed=B??Yy,this.keycodeMoveMapping=C??{...uy,...by},this.keycodeRotateMapping=E??{...Py},this.gamepadMapping=i??{4:"rollLeft",5:"rollRight",6:"ctrl",7:"shift"},this.capsMultiplier=o??10,this.shiftMultiplier=D??5,this.ctrlMultiplier=w??1/5,this.xr=s,this.keydown={},this.keycode={},document.addEventListener("keydown",t=>{this.keydown[t.key]=!0,this.keycode[t.code]=!0}),document.addEventListener("keyup",t=>{this.keydown[t.key]=!1,this.keycode[t.code]=!1}),window.addEventListener("blur",()=>{this.keydown={},this.keycode={}})}update(A,I){var s,t;if(!this.enable)return!1;const g=[new a.Vector2,new a.Vector2],B=navigator.getGamepads()[0];B&&(g[0].set(B.axes[0],B.axes[1]),g[1].set(B.axes[2],B.axes[3]));const C=(B==null?void 0:B.buttons.map(G=>G.pressed))||[],E=Array.from(((t=(s=this.xr)==null?void 0:s.getSession())==null?void 0:t.inputSources)??[]);for(const G of E){const c=G.gamepad;if(c)switch(G.handedness){case"none":{g[0].x+=c.axes[0],g[0].y+=c.axes[1],g[1].x+=c.axes[2],g[1].y+=c.axes[3];break}case"left":{g[0].x+=c.axes[2],g[0].y+=c.axes[3];break}case"right":{g[1].x+=c.axes[2],g[1].y+=c.axes[3];break}}}for(const G of g)G.x=Math.abs(G.x)>=this.stickThreshold?G.x:0,G.y=Math.abs(G.y)>=this.stickThreshold?G.y:0;const i=new a.Vector3(g[1].x,g[1].y,0).multiplyScalar(this.rotateSpeed);for(const[G,c]of Object.entries(this.keycodeRotateMapping))this.keycode[G]&&i.add(c);for(const G in this.gamepadMapping)if(C[Number.parseInt(G)])switch(this.gamepadMapping[G]){case"rollLeft":i.z+=1;break;case"rollRight":i.z-=1;break}i.multiply(new a.Vector3(this.rotateSpeed,this.rotateSpeed,this.rollSpeed));let o=i.length()>DI;if(i.manhattanLength()>0){i.multiplyScalar(A);const G=new a.Euler().setFromQuaternion(I.quaternion,"YXZ");G.y-=i.x,G.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,G.x-i.y)),G.z=Math.max(-Math.PI,Math.min(Math.PI,G.z+i.z)),I.quaternion.setFromEuler(G)}const D=new a.Vector3(g[0].x,0,g[0].y);D.add(this.extraMove);for(const[G,c]of Object.entries(this.keycodeMoveMapping))this.keycode[G]&&D.add(c);let w=1;this.keydown.CapsLock&&(w*=this.capsMultiplier),(this.keycode.ShiftLeft||this.keycode.ShiftRight)&&(w*=this.shiftMultiplier),(this.keycode.ControlLeft||this.keycode.ControlRight)&&(w*=this.ctrlMultiplier);for(const G in this.gamepadMapping)if(C[Number.parseInt(G)])switch(this.gamepadMapping[G]){case"shift":w*=this.shiftMultiplier;break;case"ctrl":w*=this.ctrlMultiplier;break}return D.length()>DI&&(o=!0),D.applyQuaternion(I.quaternion),I.position.add(D.multiplyScalar(this.moveSpeed*w*A)),o}}class Cs{constructor({canvas:A,rotateSpeed:I,slideSpeed:g,scrollSpeed:B,swapRotateSlide:C,reverseRotate:E,reverseSlide:i,reverseSwipe:o,reverseScroll:D,moveInertia:w,rotateInertia:s,pointerRollScale:t,doublePress:G,pressMoveDelayMs:c,pressMoveAccelMs:h,pressMoveSpeed:y,doublePressMoveSpeed:S,triplePressMoveSpeed:F,pressMoveCenter:e}){this.enable=!0,this.canvas=A,this.rotateSpeed=I??Uy,this.slideSpeed=g??Ly,this.scrollSpeed=B??ny,this.swapRotateSlide=C??!1,this.reverseRotate=E??(DQ()||jI()),this.reverseSlide=i??!1,this.reverseSwipe=o??!1,this.reverseScroll=D??!1,this.moveInertia=w??Ky,this.rotateInertia=s??Hy,this.pointerRollScale=t??dy,this.doublePress=G??(()=>{}),this.doublePressLimitMs=py,this.doublePressDistance=fy,this.pressMoveDelayMs=c??ly,this.pressMoveAccelMs=h??xy,this.pressMoveSpeed=y??0,this.doublePressMoveSpeed=S??this.pressMoveSpeed*5,this.triplePressMoveSpeed=F??this.doublePressMoveSpeed*5,this.pressMoveCenter=e??!0,this.doublePressed=void 0,this.triplePressed=!1,this.lastUp=null,this.lastLastUp=null,this.rotating=null,this.sliding=null,this.lastDown=null,this.dualPress=!1,this.scroll=new a.Vector3,this.rotateVelocity=new a.Vector3,this.moveVelocity=new a.Vector3,A.addEventListener("pointerdown",R=>{const N=this.getPointerPosition(R),U=N.clone(),M=N.clone(),J=!this.swapRotateSlide&&!this.rotating&&(R.pointerType!=="mouse"||R.button===0)||this.swapRotateSlide&&this.sliding&&!this.rotating&&(R.pointerType!=="mouse"||R.button===1),{pointerId:H}=R,n=performance.now();if(J)this.rotating={initial:U,last:M,position:N,pointerId:H,timeStamp:n},this.lastDown=this.rotating,A.setPointerCapture(R.pointerId),this.dualPress=!1;else if(!this.sliding){const L=R.pointerType==="mouse"?R.button:void 0;this.sliding={initial:U,last:M,position:N,pointerId:H,button:L,timeStamp:n},this.lastDown=this.sliding,A.setPointerCapture(R.pointerId),this.dualPress=this.rotating!=null&&n-this.rotating.timeStamp{var J,H;((J=this.rotating)==null?void 0:J.pointerId)===R.pointerId?(this.rotating=null,A.releasePointerCapture(R.pointerId),this.dualPress&&this.sliding&&(A.releasePointerCapture(this.sliding.pointerId),this.sliding=null)):((H=this.sliding)==null?void 0:H.pointerId)===R.pointerId&&(this.sliding=null,A.releasePointerCapture(R.pointerId),this.dualPress&&this.rotating&&(A.releasePointerCapture(this.rotating.pointerId),this.rotating=null)),this.doublePressed=void 0,this.triplePressed=!1;const N=this.getPointerPosition(R),U=this.lastUp;this.lastLastUp=this.lastUp;const M=performance.now();if(this.lastUp={position:N,timeStamp:M},U&&U.position.distanceTo(N){var N,U;((N=this.rotating)==null?void 0:N.pointerId)===R.pointerId?this.rotating.position=this.getPointerPosition(R):((U=this.sliding)==null?void 0:U.pointerId)===R.pointerId&&(this.sliding.position=this.getPointerPosition(R))}),A.addEventListener("contextmenu",R=>{R.preventDefault()}),A.addEventListener("wheel",R=>{this.scroll.add(new a.Vector3(R.deltaX,R.deltaY,R.deltaZ)),R.preventDefault()})}getPointerPosition(A){const I=this.canvas.getBoundingClientRect();return new a.Vector2(A.clientX-I.left,A.clientY-I.top)}update(A,I,g){var i,o;if(!this.enable)return!1;const B=performance.now();let C=!1;if(this.dualPress&&this.rotating&&this.sliding){const D=[this.rotating.position.clone().sub(this.rotating.last),this.sliding.position.clone().sub(this.sliding.last)],w=D[0].dot(D[1]);if(w>=.2){const s=D[0].clone().add(D[1]),t=new a.Vector3(s.x,-s.y,0);t.multiplyScalar(this.slideSpeed*(this.reverseSwipe?1:-1)),t.applyQuaternion(I.quaternion),I.position.add(t),this.moveVelocity=t.clone().multiplyScalar(1/A),t.length()>DI&&(C=!0)}else if(w<=-.2){const s=this.sliding.last.clone().sub(this.rotating.last),t=s.length();s.multiplyScalar(1/t).normalize();const G=new a.Vector2(-s.y,s.x),c=[D[0].dot(s),D[1].dot(s)],h=[D[0].dot(G),D[1].dot(G)],y=this.rotating.last.clone().add(this.sliding.last).multiplyScalar(.5);let S=new a.Vector3;const F=g??(I instanceof a.Camera?I:void 0);if(F){const M=new a.Vector2(y.x/this.canvas.clientWidth*2-1,-(y.y/this.canvas.clientHeight)*2+1),J=new a.Raycaster;J.setFromCamera(M,F),S=J.ray.direction}const e=c[1]-c[0],k=S.multiplyScalar(e*this.slideSpeed);I.position.add(k),this.moveVelocity=k.clone().multiplyScalar(1/A),k.length()>DI&&(C=!0);const R=[Math.atan(h[0]/(-.5*t)),Math.atan(h[1]/(.5*t))],N=.5*(R[0]+R[1])*this.pointerRollScale,U=new a.Euler().setFromQuaternion(I.quaternion,"YXZ");U.z=Math.max(-Math.PI,Math.min(Math.PI,U.z+.5*N)),I.quaternion.setFromEuler(U),Math.abs(N)>DI&&(C=!0)}this.rotating.last.copy(this.rotating.position),this.sliding.last.copy(this.sliding.position)}else{const D=new a.Vector3;if(this.rotating&&!this.dualPress){const s=this.rotating.position.clone().sub(this.rotating.last);this.rotating.last.copy(this.rotating.position),D.set(s.x,s.y,0),D.multiplyScalar(this.rotateSpeed*(this.reverseRotate?-1:1)),this.rotateVelocity=D.clone().multiplyScalar(1/A),D.length()>DI&&(C=!0)}else this.rotateVelocity.multiplyScalar(Math.exp(-A/this.rotateInertia)),D.addScaledVector(this.rotateVelocity,A),this.rotateVelocity.length()*.1>DI&&(C=!0);const w=new a.Euler().setFromQuaternion(I.quaternion,"YXZ");if(w.y-=D.x,w.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,w.x-D.y)),w.z*=Math.exp(-0*A),I.quaternion.setFromEuler(w),this.sliding&&!this.dualPress){const s=this.sliding.position.clone().sub(this.sliding.last);this.sliding.last.copy(this.sliding.position);const t=this.sliding.button!==2?new a.Vector3(s.x,0,s.y):new a.Vector3(s.x,-s.y,0);t.multiplyScalar(this.slideSpeed*(this.reverseSlide?-1:1)),t.applyQuaternion(I.quaternion),I.position.add(t),this.moveVelocity=t.clone().multiplyScalar(1/A),t.length()>DI&&(C=!0)}else{const s=new a.Vector3;if(this.sliding||this.rotating){const G=((i=this.lastDown)==null?void 0:i.last)??new a.Vector2,c=g??(I instanceof a.Camera?I:void 0);if(c){const h=this.pressMoveCenter?new a.Vector2(0,0):new a.Vector2(G.x/this.canvas.clientWidth*2-1,-(G.y/this.canvas.clientHeight)*2+1),y=new a.Raycaster;y.setFromCamera(h,c),s.copy(y.ray.direction).normalize()}if(this.doublePressed){this.pressHeld=!1;let h=(performance.now()-this.doublePressed)/this.pressMoveAccelMs;h=Math.max(0,Math.min(1,h)),s.multiplyScalar((this.triplePressed?this.triplePressMoveSpeed:this.doublePressMoveSpeed)*h)}else{let h=0;this.lastDown&&(h=(B-(((o=this.lastDown)==null?void 0:o.timeStamp)??B)-this.pressMoveDelayMs)/this.pressMoveAccelMs,this.lastDown.position.distanceTo(this.lastDown.initial)0&&(this.pressHeld=!0):this.pressHeld===void 0&&(this.pressHeld=!1)),this.pressHeld?s.multiplyScalar(this.pressMoveSpeed*Math.max(0,Math.min(1,h))):s.set(0,0,0)}}else this.pressHeld=void 0;const t=Math.exp(-A/this.moveInertia);this.moveVelocity.lerpVectors(s,this.moveVelocity,t),I.position.addScaledVector(this.moveVelocity,A),this.moveVelocity.length()*.1>DI&&(C=!0)}}const E=this.scroll.multiplyScalar(this.scrollSpeed);return E.set(E.x,E.z,E.y),this.reverseScroll&&E.multiplyScalar(-1),E.applyQuaternion(I.quaternion),I.position.add(E),E.length()>DI&&(C=!0),this.scroll.set(0,0,0),C}}const Es=` precision highp float; precision highp int; @@ -2339,6 +2070,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -2415,10 +2147,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; @@ -2433,5 +2169,5 @@ void main() { fragColor = rgba; #endif } -`;class Xk{constructor(A){this.portalPairs=[],this.lastCameraWorld=new G.Vector3().setScalar(Number.NaN),this.prefetchActive=!1,this.scratch={quat:new G.Quaternion,scale:new G.Vector3,center0:new G.Vector3,center1:new G.Vector3,normal0:new G.Vector3,normal1:new G.Vector3,centerT:new G.Vector3,normalT:new G.Vector3,prevCameraWorld:new G.Vector3,currCameraWorld:new G.Vector3,hit:new G.Vector3,offset:new G.Vector3,camWorld:new G.Matrix4,newCamWorld:new G.Matrix4,invCamLocal:new G.Matrix4,newLocalFrame:new G.Matrix4,cameraWorldPos:new G.Vector3,viewDir:new G.Vector3,portalCenter:new G.Vector3,toPortal:new G.Vector3},this.renderer=A.renderer,this.scene=A.scene,this.camera=A.camera,this.localFrame=A.localFrame,this.defaultPortalRadius=A.defaultPortalRadius??1,this.portalCrossEps=A.portalCrossEps??1e-6;const I=A.sparkOptions??{};this.portalRenderer=new tg({renderer:this.renderer,extraUniforms:{diskCenter:{value:new G.Vector3},diskNormal:{value:new G.Vector3},diskRadius:{value:0},diskTwoSided:{value:!1}},fragmentShader:ko,...I}),this.scene.add(this.portalRenderer),this.behindRenderer=new tg({renderer:this.renderer,enableDriveLod:!1,...I}),this.camera2=this.camera.clone(),this.scene.add(this.camera2)}addPortalPair(A){const I={entryPortal:new G.Object3D,exitPortal:new G.Object3D,radius:(A==null?void 0:A.radius)??this.defaultPortalRadius,onCross:A==null?void 0:A.onCross,_entryBefore:new G.Matrix4,_exitBefore:new G.Matrix4};return this.scene.add(I.entryPortal),this.scene.add(I.exitPortal),this.portalPairs.push(I),I}removePortalPair(A){const I=this.portalPairs.indexOf(A);I!==-1&&(this.scene.remove(A.entryPortal),this.scene.remove(A.exitPortal),this.portalPairs.splice(I,1))}getEntryToExitTransform(A){return A.entryPortal.matrixWorld.clone().invert().premultiply(A.exitPortal.matrixWorld)}getExitToEntryTransform(A){return A.exitPortal.matrixWorld.clone().invert().premultiply(A.entryPortal.matrixWorld)}setPortalDiskUniforms(A,I,g,B){A.updateMatrixWorld(!0),I.updateMatrixWorld(!0);const C=A.matrixWorld.clone().invert(),E=I.matrixWorld.clone().premultiply(C),D=new G.Quaternion,i=this.portalRenderer.uniforms;E.decompose(i.diskCenter.value,D,new G.Vector3),i.diskNormal.value.set(0,0,1).applyQuaternion(D),i.diskRadius.value=g,i.diskTwoSided.value=B}getPortalPlane(A,I,g){A.decompose(I,this.scratch.quat,this.scratch.scale),g.set(0,0,1).applyQuaternion(this.scratch.quat).normalize()}getSegmentDiskCrossing(A,I,g,B,C){this.getPortalPlane(g,this.scratch.center0,this.scratch.normal0),this.getPortalPlane(B,this.scratch.center1,this.scratch.normal1);const E=this.scratch.offset.copy(A).sub(this.scratch.center0).dot(this.scratch.normal0),D=this.scratch.offset.copy(I).sub(this.scratch.center1).dot(this.scratch.normal1);if(E>this.portalCrossEps&&D>this.portalCrossEps||E<-this.portalCrossEps&&D<-this.portalCrossEps)return null;const i=E-D;if(Math.abs(i)1||(this.scratch.hit.lerpVectors(A,I,w),this.scratch.centerT.copy(this.scratch.center0).lerp(this.scratch.center1,w),this.scratch.normalT.copy(this.scratch.normal0).lerp(this.scratch.normal1,w).normalize(),this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT),this.scratch.offset.addScaledVector(this.scratch.normalT,-this.scratch.offset.dot(this.scratch.normalT)),this.scratch.offset.lengthSq()>C*C)?null:w}teleport(A){this.scratch.camWorld.copy(this.camera.matrixWorld),this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(A),this.scratch.invCamLocal.copy(this.camera.matrix).invert(),this.scratch.newLocalFrame.copy(this.scratch.newCamWorld).multiply(this.scratch.invCamLocal),this.scratch.newLocalFrame.decompose(this.localFrame.position,this.localFrame.quaternion,this.localFrame.scale),this.localFrame.updateMatrixWorld(!0),this.camera.updateMatrixWorld(!0)}updateTeleportation(){if(this.portalPairs.length===0)return;if(this.camera.getWorldPosition(this.scratch.currCameraWorld),!Number.isFinite(this.lastCameraWorld.x)){this.lastCameraWorld.copy(this.scratch.currCameraWorld);return}this.scratch.prevCameraWorld.copy(this.lastCameraWorld);let A=null,I=null,g=!0;for(const B of this.portalPairs){B.entryPortal.updateMatrixWorld(!0),B.exitPortal.updateMatrixWorld(!0),B._entryBefore.copy(B.entryPortal.matrixWorld),B._exitBefore.copy(B.exitPortal.matrixWorld);const C=this.getSegmentDiskCrossing(this.scratch.prevCameraWorld,this.scratch.currCameraWorld,B._entryBefore,B.entryPortal.matrixWorld,B.radius);C!==null&&(A===null||C{console.error("Error in portal onCross callback:",B)})}findPrimaryPortal(){if(this.portalPairs.length===0)return null;this.camera.getWorldPosition(this.scratch.cameraWorldPos),this.camera.getWorldDirection(this.scratch.viewDir);let A=Number.NEGATIVE_INFINITY,I=null,g=!0;for(const B of this.portalPairs){B.entryPortal.getWorldPosition(this.scratch.portalCenter),this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos);const C=this.scratch.toPortal.length(),E=this.scratch.toPortal.normalize().dot(this.scratch.viewDir)/C;E>A&&(A=E,I=B,g=!0),B.exitPortal.getWorldPosition(this.scratch.portalCenter),this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos);const D=this.scratch.toPortal.length(),i=this.scratch.toPortal.normalize().dot(this.scratch.viewDir)/D;i>A&&(A=i,I=B,g=!1)}return I?{pair:I,primaryIsEntry:g,primaryPortal:g?I.entryPortal:I.exitPortal,otherPortal:g?I.exitPortal:I.entryPortal}:null}render(){const A=this.findPrimaryPortal();if(!A){this.prefetchActive&&(this.prefetchActive=!1),this.renderer.autoClear=!0,this.renderer.render(this.scene,this.camera);return}this.prefetchActive||(this.prefetchActive=!0);const{pair:I,primaryIsEntry:g,primaryPortal:B,otherPortal:C}=A;(g?this.camera.matrixWorld.clone().premultiply(this.getEntryToExitTransform(I)):this.camera.matrixWorld.clone().premultiply(this.getExitToEntryTransform(I))).decompose(this.camera2.position,this.camera2.quaternion,this.camera2.scale),this.camera2.updateMatrixWorld(!0),this.shareLodInstances(),this.setPortalDiskUniforms(this.camera2,C,I.radius,!0),this.renderer.autoClear=!0,this.behindRenderer.render(this.scene,this.camera2),this.setPortalDiskUniforms(this.camera,B,-I.radius,!0),this.renderer.autoClear=!1,this.portalRenderer.render(this.scene,this.camera)}shareLodInstances(){this.behindRenderer.lodInstances.clear();for(const[A,I]of this.portalRenderer.lodInstances)this.behindRenderer.lodInstances.set(A,I)}animateLoopHook(){this.updateTeleportation(),this.render()}updateAspect(A){this.camera2.aspect=A,this.camera2.updateProjectionMatrix()}dispose(){this.scene.remove(this.portalRenderer),this.scene.remove(this.camera2);for(const A of this.portalPairs)this.scene.remove(A.entryPortal),this.scene.remove(A.exitPortal);this.portalPairs=[],this.portalRenderer.dispose(),this.behindRenderer.dispose()}}exports.DEFAULT_CONTROLLER_FAST_MULTIPLIER=Co;exports.DEFAULT_CONTROLLER_GETFAST=wo;exports.DEFAULT_CONTROLLER_GETMOVE=Do;exports.DEFAULT_CONTROLLER_GETROTATE=io;exports.DEFAULT_CONTROLLER_GETSLOW=oo;exports.DEFAULT_CONTROLLER_MOVE_HEADING=Ak;exports.DEFAULT_CONTROLLER_MOVE_SPEED=Qo;exports.DEFAULT_CONTROLLER_ROLL_SPEED=Bo;exports.DEFAULT_CONTROLLER_ROTATE_SPEED=zQ;exports.DEFAULT_CONTROLLER_SLOW_MULTIPLIER=Eo;exports.DISK_PORTAL_FRAGMENT_SHADER=ko;exports.ExtSplats=BI;exports.FINGER_TIPS=tk;exports.FpsMovement=ho;exports.HANDS=QQ;exports.Hand=nB;exports.HandMovement=Lk;exports.JOINT_IDS=rB;exports.JOINT_INDEX=Jk;exports.JOINT_RADIUS=yg;exports.JOINT_SEGMENTS=Go;exports.JOINT_SEGMENT_STEPS=yo;exports.JOINT_TIPS=Uk;exports.JointEnum=aQ;exports.JointSplats=so;exports.LN_SCALE_MAX=bA;exports.LN_SCALE_MIN=fA;exports.NUM_JOINTS=Mk;exports.OldSparkRenderer=jQ;exports.OldSparkViewpoint=Lg;exports.OldSplatAccumulator=Xg;exports.PackedSplats=_A;exports.PagedSplats=Sg;exports.PlyReader=Hg;exports.PointerControls=Ro;exports.Readback=TI;exports.RgbaArray=IQ;exports.Sint8ToFloat=cC;exports.SparkControls=Vk;exports.SparkPortals=Xk;exports.SparkRenderer=tg;exports.SparkXr=_Q;exports.SplatAccumulator=tI;exports.SplatEdit=Qg;exports.SplatEditRgbaBlendMode=mw;exports.SplatEditSdf=Zw;exports.SplatEditSdfType=Ow;exports.SplatEdits=Vw;exports.SplatFileType=yA;exports.SplatGenerator=YI;exports.SplatLoader=LB;exports.SplatMesh=vA;exports.SplatModifier=Xw;exports.SplatPager=FI;exports.SplatSkinning=vQ;exports.SplatSkinningMode=Ao;exports.SplatTransformer=lI;exports.SpzReader=zw;exports.SpzWriter=kI;exports.Uint8ToFloat=NC;exports.XrHand=Yg;exports.XrHands=Hk;exports.constructAxes=TR;exports.constructGrid=uR;exports.constructSpherePoints=OR;exports.defines=Bs;exports.dyno=Uh;exports.flipPixels=tC;exports.floatToSint8=kg;exports.floatToUint8=jA;exports.fromHalf=FA;exports.generators=vR;exports.getSplatFileType=RQ;exports.imageSplats=ZR;exports.isAndroid=iQ;exports.isIos=Ig;exports.isMobile=cg;exports.isOculus=wQ;exports.isPcSogs=SR;exports.isQuest2=UC;exports.isVisionPro=iB;exports.lerpHandsSnapshots=sk;exports.modifiers=$R;exports.pixelsToPngUrl=HC;exports.readRgbaArray=$h;exports.setPackedSplat=vg;exports.textSplats=mR;exports.toHalf=TA;exports.transcodeSpz=qR;exports.unpackSplat=Ng;exports.unpackSplats=cR;exports.utils=ms; +`;class Ty{constructor(A){this.portalPairs=[],this.lastCameraWorld=new a.Vector3().setScalar(Number.NaN),this.prefetchActive=!1,this.scratch={quat:new a.Quaternion,scale:new a.Vector3,center0:new a.Vector3,center1:new a.Vector3,normal0:new a.Vector3,normal1:new a.Vector3,centerT:new a.Vector3,normalT:new a.Vector3,prevCameraWorld:new a.Vector3,currCameraWorld:new a.Vector3,hit:new a.Vector3,offset:new a.Vector3,camWorld:new a.Matrix4,newCamWorld:new a.Matrix4,invCamLocal:new a.Matrix4,newLocalFrame:new a.Matrix4,cameraWorldPos:new a.Vector3,viewDir:new a.Vector3,portalCenter:new a.Vector3,toPortal:new a.Vector3},this.renderer=A.renderer,this.scene=A.scene,this.camera=A.camera,this.localFrame=A.localFrame,this.defaultPortalRadius=A.defaultPortalRadius??1,this.portalCrossEps=A.portalCrossEps??1e-6;const I=A.sparkOptions??{};this.portalRenderer=new Lg({renderer:this.renderer,extraUniforms:{diskCenter:{value:new a.Vector3},diskNormal:{value:new a.Vector3},diskRadius:{value:0},diskTwoSided:{value:!1}},fragmentShader:Es,...I}),this.scene.add(this.portalRenderer),this.behindRenderer=new Lg({renderer:this.renderer,enableDriveLod:!1,...I}),this.camera2=this.camera.clone(),this.scene.add(this.camera2)}addPortalPair(A){const I={entryPortal:new a.Object3D,exitPortal:new a.Object3D,radius:(A==null?void 0:A.radius)??this.defaultPortalRadius,onCross:A==null?void 0:A.onCross,_entryBefore:new a.Matrix4,_exitBefore:new a.Matrix4};return this.scene.add(I.entryPortal),this.scene.add(I.exitPortal),this.portalPairs.push(I),I}removePortalPair(A){const I=this.portalPairs.indexOf(A);I!==-1&&(this.scene.remove(A.entryPortal),this.scene.remove(A.exitPortal),this.portalPairs.splice(I,1))}getEntryToExitTransform(A){return A.entryPortal.matrixWorld.clone().invert().premultiply(A.exitPortal.matrixWorld)}getExitToEntryTransform(A){return A.exitPortal.matrixWorld.clone().invert().premultiply(A.entryPortal.matrixWorld)}setPortalDiskUniforms(A,I,g,B){A.updateMatrixWorld(!0),I.updateMatrixWorld(!0);const C=A.matrixWorld.clone().invert(),E=I.matrixWorld.clone().premultiply(C),i=new a.Quaternion,o=this.portalRenderer.uniforms;E.decompose(o.diskCenter.value,i,new a.Vector3),o.diskNormal.value.set(0,0,1).applyQuaternion(i),o.diskRadius.value=g,o.diskTwoSided.value=B}getPortalPlane(A,I,g){A.decompose(I,this.scratch.quat,this.scratch.scale),g.set(0,0,1).applyQuaternion(this.scratch.quat).normalize()}getSegmentDiskCrossing(A,I,g,B,C){this.getPortalPlane(g,this.scratch.center0,this.scratch.normal0),this.getPortalPlane(B,this.scratch.center1,this.scratch.normal1);const E=this.scratch.offset.copy(A).sub(this.scratch.center0).dot(this.scratch.normal0),i=this.scratch.offset.copy(I).sub(this.scratch.center1).dot(this.scratch.normal1);if(E>this.portalCrossEps&&i>this.portalCrossEps||E<-this.portalCrossEps&&i<-this.portalCrossEps)return null;const o=E-i;if(Math.abs(o)1||(this.scratch.hit.lerpVectors(A,I,D),this.scratch.centerT.copy(this.scratch.center0).lerp(this.scratch.center1,D),this.scratch.normalT.copy(this.scratch.normal0).lerp(this.scratch.normal1,D).normalize(),this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT),this.scratch.offset.addScaledVector(this.scratch.normalT,-this.scratch.offset.dot(this.scratch.normalT)),this.scratch.offset.lengthSq()>C*C)?null:D}teleport(A){this.scratch.camWorld.copy(this.camera.matrixWorld),this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(A),this.scratch.invCamLocal.copy(this.camera.matrix).invert(),this.scratch.newLocalFrame.copy(this.scratch.newCamWorld).multiply(this.scratch.invCamLocal),this.scratch.newLocalFrame.decompose(this.localFrame.position,this.localFrame.quaternion,this.localFrame.scale),this.localFrame.updateMatrixWorld(!0),this.camera.updateMatrixWorld(!0)}updateTeleportation(){if(this.portalPairs.length===0)return;if(this.camera.getWorldPosition(this.scratch.currCameraWorld),!Number.isFinite(this.lastCameraWorld.x)){this.lastCameraWorld.copy(this.scratch.currCameraWorld);return}this.scratch.prevCameraWorld.copy(this.lastCameraWorld);let A=null,I=null,g=!0;for(const B of this.portalPairs){B.entryPortal.updateMatrixWorld(!0),B.exitPortal.updateMatrixWorld(!0),B._entryBefore.copy(B.entryPortal.matrixWorld),B._exitBefore.copy(B.exitPortal.matrixWorld);const C=this.getSegmentDiskCrossing(this.scratch.prevCameraWorld,this.scratch.currCameraWorld,B._entryBefore,B.entryPortal.matrixWorld,B.radius);C!==null&&(A===null||C{console.error("Error in portal onCross callback:",B)})}findPrimaryPortal(){if(this.portalPairs.length===0)return null;this.camera.getWorldPosition(this.scratch.cameraWorldPos),this.camera.getWorldDirection(this.scratch.viewDir);let A=Number.NEGATIVE_INFINITY,I=null,g=!0;for(const B of this.portalPairs){B.entryPortal.getWorldPosition(this.scratch.portalCenter),this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos);const C=this.scratch.toPortal.length(),E=this.scratch.toPortal.normalize().dot(this.scratch.viewDir)/C;E>A&&(A=E,I=B,g=!0),B.exitPortal.getWorldPosition(this.scratch.portalCenter),this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos);const i=this.scratch.toPortal.length(),o=this.scratch.toPortal.normalize().dot(this.scratch.viewDir)/i;o>A&&(A=o,I=B,g=!1)}return I?{pair:I,primaryIsEntry:g,primaryPortal:g?I.entryPortal:I.exitPortal,otherPortal:g?I.exitPortal:I.entryPortal}:null}render(){const A=this.findPrimaryPortal();if(!A){this.prefetchActive&&(this.prefetchActive=!1),this.renderer.autoClear=!0,this.renderer.render(this.scene,this.camera);return}this.prefetchActive||(this.prefetchActive=!0);const{pair:I,primaryIsEntry:g,primaryPortal:B,otherPortal:C}=A;(g?this.camera.matrixWorld.clone().premultiply(this.getEntryToExitTransform(I)):this.camera.matrixWorld.clone().premultiply(this.getExitToEntryTransform(I))).decompose(this.camera2.position,this.camera2.quaternion,this.camera2.scale),this.camera2.updateMatrixWorld(!0),this.shareLodInstances(),this.setPortalDiskUniforms(this.camera2,C,I.radius,!0),this.renderer.autoClear=!0,this.behindRenderer.render(this.scene,this.camera2),this.setPortalDiskUniforms(this.camera,B,-I.radius,!0),this.renderer.autoClear=!1,this.portalRenderer.render(this.scene,this.camera)}shareLodInstances(){this.behindRenderer.lodInstances.clear();for(const[A,I]of this.portalRenderer.lodInstances)this.behindRenderer.lodInstances.set(A,I)}animateLoopHook(){this.updateTeleportation(),this.render()}updateAspect(A){this.camera2.aspect=A,this.camera2.updateProjectionMatrix()}dispose(){this.scene.remove(this.portalRenderer),this.scene.remove(this.camera2);for(const A of this.portalPairs)this.scene.remove(A.entryPortal),this.scene.remove(A.exitPortal);this.portalPairs=[],this.portalRenderer.dispose(),this.behindRenderer.dispose()}}exports.DEFAULT_CONTROLLER_FAST_MULTIPLIER=Wo;exports.DEFAULT_CONTROLLER_GETFAST=$o;exports.DEFAULT_CONTROLLER_GETMOVE=zo;exports.DEFAULT_CONTROLLER_GETROTATE=_o;exports.DEFAULT_CONTROLLER_GETSLOW=As;exports.DEFAULT_CONTROLLER_MOVE_HEADING=jh;exports.DEFAULT_CONTROLLER_MOVE_SPEED=Xo;exports.DEFAULT_CONTROLLER_ROLL_SPEED=Vo;exports.DEFAULT_CONTROLLER_ROTATE_SPEED=WQ;exports.DEFAULT_CONTROLLER_SLOW_MULTIPLIER=jo;exports.DISK_PORTAL_FRAGMENT_SHADER=Es;exports.ExtSplats=QI;exports.FINGER_TIPS=ky;exports.FpsMovement=Bs;exports.HANDS=IQ;exports.Hand=nB;exports.HandMovement=Ny;exports.JOINT_IDS=LB;exports.JOINT_INDEX=Fy;exports.JOINT_RADIUS=wg;exports.JOINT_SEGMENTS=gs;exports.JOINT_SEGMENT_STEPS=Qs;exports.JOINT_TIPS=Ry;exports.JointEnum=hQ;exports.JointSplats=Is;exports.LN_SCALE_MAX=uA;exports.LN_SCALE_MIN=fA;exports.NUM_JOINTS=Sy;exports.PackedSplats=wI;exports.PagedSplats=WI;exports.PlyReader=$g;exports.PointerControls=Cs;exports.Readback=zI;exports.RgbaArray=OQ;exports.Sint8ToFloat=JE;exports.SparkControls=my;exports.SparkPortals=Ty;exports.SparkRenderer=Lg;exports.SparkXr=jQ;exports.SplatAccumulator=MI;exports.SplatEdit=Ng;exports.SplatEditRgbaBlendMode=no;exports.SplatEditSdf=Ho;exports.SplatEditSdfType=Lo;exports.SplatEdits=Ko;exports.SplatFileType=MA;exports.SplatGenerator=_I;exports.SplatLoader=eB;exports.SplatMesh=jA;exports.SplatModifier=MG;exports.SplatPager=hI;exports.SplatSkinning=VQ;exports.SplatSkinningMode=Oo;exports.SplatTransformer=lI;exports.SpzReader=Po;exports.SpzWriter=GI;exports.Uint8ToFloat=ME;exports.XrHand=ng;exports.XrHands=ey;exports.constructAxes=fh;exports.constructGrid=ph;exports.constructSpherePoints=uh;exports.defines=Js;exports.dyno=aG;exports.flipPixels=HE;exports.floatToSint8=Gg;exports.floatToUint8=VA;exports.fromHalf=hA;exports.generators=vh;exports.getSplatFileType=NB;exports.imageSplats=Ph;exports.isAndroid=DQ;exports.isIos=jI;exports.isMobile=Fg;exports.isOculus=oQ;exports.isPcSogs=Ah;exports.isQuest2=nE;exports.isVisionPro=tB;exports.lerpHandsSnapshots=iy;exports.modifiers=Wh;exports.pixelsToPngUrl=KE;exports.readRgbaArray=Dh;exports.setPackedSplat=_g;exports.textSplats=bh;exports.toHalf=PA;exports.transcodeSpz=Kh;exports.unpackSplat=Sg;exports.utils=ra; //# sourceMappingURL=spark.cjs.min.js.map diff --git a/dist/spark.cjs.min.js.map b/dist/spark.cjs.min.js.map index 637c73da..c73a56b4 100644 --- a/dist/spark.cjs.min.js.map +++ b/dist/spark.cjs.min.js.map @@ -1 +1 @@ -{"version":3,"file":"spark.cjs.min.js","sources":["../src/OldSplatGeometry.ts","../node_modules/fflate/esm/browser.js","../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/utils.ts","../src/OldSplatWorker.ts","../src/SplatWorker.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/ExtSplats.ts","../rust/spark-rs/pkg/spark_rs.js","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/oldSplatFragment.glsl","../src/shaders/oldSplatVertex.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/RgbaArray.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/ply.ts","../src/SplatLoader.ts","../src/PackedSplats.ts","../src/OldSparkViewpoint.ts","../src/OldSplatAccumulator.ts","../src/OldSparkRenderer.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by the instance attribute \"ordering\".\n\nexport class OldSplatGeometry extends THREE.InstancedBufferGeometry {\n ordering: Uint32Array;\n attribute: THREE.InstancedBufferAttribute;\n\n constructor(ordering: Uint32Array, activeSplats: number) {\n super();\n\n this.ordering = ordering;\n\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n\n // Hack to work around Three.js\n // @ts-ignore\n this._maxInstanceCount = ordering.length;\n this.instanceCount = activeSplats;\n\n this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1);\n this.attribute.setUsage(THREE.DynamicDrawUsage);\n this.setAttribute(\"splatIndex\", this.attribute);\n }\n\n update(ordering: Uint32Array, activeSplats: number) {\n this.ordering = ordering;\n this.attribute.array = ordering;\n this.instanceCount = activeSplats;\n this.attribute.addUpdateRange(0, activeSplats);\n this.attribute.needsUpdate = true;\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import BundledWorker from \"./oldWorker?worker&inline\";\nimport { getTransferable } from \"./utils.js\";\n\n// SplatWorker is an internal class that manages a WebWorker for executing\n// longer running CPU tasks such as Gsplat file decoding and sorting.\n// Although a SplatWorker can be created and used directly, the utility\n// function withWorker() is recommended to allocate from a managed\n// pool of SplatWorkers.\n\nexport class OldSplatWorker {\n worker: Worker;\n messages: Record<\n number,\n { resolve: (value: unknown) => void; reject: (reason?: unknown) => void }\n > = {};\n messageIdNext = 0;\n\n constructor() {\n // this.worker = new Worker(new URL(\"./worker\", import.meta.url), { type: \"module\" });\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n makeMessageId(): number {\n return ++this.messageIdNext;\n }\n\n makeMessagePromiseId(): { id: number; promise: Promise } {\n const id = this.makeMessageId();\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject };\n });\n return { id, promise };\n }\n\n onMessage(event: MessageEvent) {\n // console.log(\"SplatWorker.onMessage:\", event);\n const { id, result, error } = event.data;\n // console.log(`SplatWorker.onMessage(${id}):`, result, error);\n const handler = this.messages[id];\n if (handler) {\n delete this.messages[id];\n if (error) {\n handler.reject(error);\n } else {\n handler.resolve(result);\n }\n }\n }\n\n // Invoke an RPC on the worker with the given name and arguments.\n // The normal usage of a worker is to run one activity at a time,\n // but this function allows for concurrent calls, tagging each request\n // with a unique message Id and awaiting a response to that same Id.\n // The method will automatically transfer any ArrayBuffers in the\n // arguments to the worker. If you'd like to transfer a copy of a\n // buffer then you must clone it before passing to this function.\n async call(name: string, args: unknown): Promise {\n const { id, promise } = this.makeMessagePromiseId();\n // console.log(`SplatWorker.call(${name}):`, args);\n this.worker.postMessage(\n { name, args, id },\n { transfer: getTransferable(args) },\n );\n return promise;\n }\n}\n\nlet maxWorkers = 4;\n\nlet numWorkers = 0;\nconst freeWorkers: OldSplatWorker[] = [];\nconst workerQueue: ((worker: OldSplatWorker) => void)[] = [];\n\n// Set the maximum number of workers to allocate for the pool. (default: 4)\nexport function setWorkerPool(count = 4) {\n maxWorkers = count;\n}\n\n// Allocate a worker from the pool. If none are available and we are below the\n// maximum, create a new one. Otherwise, add the request to a queue and wait\n// for it to be fulfilled.\nexport async function allocWorker(): Promise {\n const worker = freeWorkers.shift();\n if (worker) {\n return worker;\n }\n\n if (numWorkers < maxWorkers) {\n const worker = new OldSplatWorker();\n numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n workerQueue.push(resolve);\n });\n}\n\n// Return a worker to the pool. Pass the worker to any pending waiter.\nexport function freeWorker(worker: OldSplatWorker) {\n if (numWorkers > maxWorkers) {\n // Worker no longer needed\n numWorkers -= 1;\n return;\n }\n\n const waiter = workerQueue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n freeWorkers.push(worker);\n}\n\n// Allocate a worker from the pool and invoke the callback with the worker.\n// When the callback completes, the worker will be returned to the pool.\nexport async function withWorker(\n callback: (worker: OldSplatWorker) => Promise,\n): Promise {\n const worker = await allocWorker();\n try {\n return await callback(worker);\n } finally {\n freeWorker(worker);\n }\n}\n","import { getTransferable } from \"./utils\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n // Keeping below because we may need it in the future\n // for skinning deformations.\n // mat3 W = transpose(mat3(viewMatrix));\n // mat3 T = W * J;\n // mat3 cov2D = transpose(T) * cov3D * T;\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport oldSplatFragment from \"./shaders/oldSplatFragment.glsl\";\nimport oldSplatVertex from \"./shaders/oldSplatVertex.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n oldSplatVertex,\n oldSplatFragment,\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Whether to encode Gsplat with linear RGB (for environment mapping)\n * @default false\n */\n encodeLinear?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n encodeLinear: boolean;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.encodeLinear = options.encodeLinear ?? false;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n this.encodeLinear = options.encodeLinear ?? true;\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n if (spark.target) {\n spark.renderSize.set(spark.target.width, spark.target.height);\n } else {\n const renderSize = renderer.getDrawingBufferSize(spark.renderSize);\n if (renderer.xr.isPresenting) {\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n this.uniforms.encodeLinear.value = spark.encodeLinear;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n const props = renderer.properties.get(this.orderingTexture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"ordering texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n // data,\n result.ordering,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { pagedSplatTexCoord } from \"./dyno\";\nimport { decodeExtSplat, getTextureSize, unpackSplat } from \"./utils\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasmInitialized;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n const gl = renderer.getContext() as WebGL2RenderingContext;\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(\n gl.TEXTURE_2D,\n getGlTexture(renderer, indicesTexture),\n );\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\nexport class SplatPager {\n renderer: THREE.WebGLRenderer;\n\n extSplats: boolean;\n maxPages: number;\n maxSplats: number;\n pageSplats: number;\n\n maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n readyUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n sh1Texture: dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture: dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture: dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB: dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = 65536;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / this.pageSplats);\n this.maxSplats = this.maxPages * this.pageSplats;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n ),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n )\n : SplatPager.emptyExtTexture,\n });\n this.sh1Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh1Texture\n : SplatPager.emptySh1Texture,\n });\n this.sh2Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh2Texture\n : SplatPager.emptySh2Texture,\n });\n this.sh3Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh3Texture\n : SplatPager.emptySh3Texture,\n });\n this.sh3TextureB = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyExtSh3BTexture,\n });\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3Texture: this.sh3Texture,\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3TextureA: this.sh3Texture,\n sh3TextureB: this.sh3TextureB,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n } else {\n if (this.sh1Texture.value !== SplatPager.emptyExtSh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptyExtSh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n if (this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value.dispose();\n this.sh3TextureB.value.source.data = null;\n }\n }\n }\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n if (!this.extSplats) {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptySh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 2),\n 256,\n 256,\n this.maxPages,\n THREE.RGIntegerFormat,\n THREE.UnsignedIntType,\n \"RG32UI\",\n );\n }\n } else {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptyExtSh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n if (\n this.curSh >= 2 &&\n this.sh2Texture.value ===\n (!this.extSplats\n ? SplatPager.emptySh2Texture\n : SplatPager.emptyExtSh2Texture)\n ) {\n this.sh2Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (!this.extSplats) {\n if (\n this.curSh >= 3 &&\n this.sh3Texture.value === SplatPager.emptySh3Texture\n ) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n } else {\n if (this.curSh >= 3) {\n if (this.sh3Texture.value === SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (this.sh3TextureB.value === SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n private freePage(page: number) {\n this.pageFreelist.push(page);\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n extra: Record,\n extArray?: Uint32Array,\n ) {\n const pageBase = page * this.pageSplats;\n\n // const gl = this.renderer.getContext() as WebGL2RenderingContext;\n\n // this.renderer.state.activeTexture(gl.TEXTURE0);\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.packedTexture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // packedArray,\n // );\n\n const array = this.packedTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + packedArray.length)\n .set(packedArray);\n this.packedTexture.value.addLayerUpdate(page);\n this.packedTexture.value.needsUpdate = true;\n\n if (extArray) {\n const array = this.extTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + extArray.length)\n .set(extArray);\n this.extTexture.value.addLayerUpdate(page);\n this.extTexture.value.needsUpdate = true;\n }\n\n const numSh = this.extSplats\n ? extra.sh3a && extra.sh3b\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0\n : extra.sh3\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0;\n this.ensureShTextures(numSh);\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture && extra.sh1) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh1Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RG_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh1 as Uint32Array,\n // );\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh1Texture.value !== SplatPager.emptyExtSh1Texture &&\n extra.sh1\n ) {\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n }\n\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture && extra.sh2) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh2Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh2 as Uint32Array,\n // );\n const sh2 = extra.sh2 as Uint32Array;\n const array = this.sh2Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2);\n this.sh2Texture.value.addLayerUpdate(page);\n this.sh2Texture.value.needsUpdate = true;\n }\n\n if (!this.extSplats) {\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture && extra.sh3) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh3Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh3 as Uint32Array,\n // );\n const sh3 = extra.sh3 as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh3Texture.value !== SplatPager.emptyExtSh3Texture &&\n extra.sh3a\n ) {\n const sh3a = extra.sh3a as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n if (\n this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture &&\n extra.sh3b\n ) {\n const sh3b = extra.sh3b as Uint32Array;\n const array = this.sh3TextureB.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b);\n this.sh3TextureB.value.addLayerUpdate(page);\n this.sh3TextureB.value.needsUpdate = true;\n }\n }\n\n // this.renderer.state.bindTexture(gl.TEXTURE_2D_ARRAY, null);\n }\n\n private getGlTexture(texture: THREE.Texture): WebGLTexture {\n return getGlTexture(this.renderer, texture);\n }\n\n private newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: this.pageSplats,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (!this.extSplats) {\n const packedArray = (data as PackedResult).packedArray;\n this.newUploads.push({ page, numSplats, packedArray, extra });\n } else {\n const extArrays = (data as ExtResult).extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n this.newUploads.push({ page, numSplats, packedArray, extArray, extra });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, extra } = upload;\n this.uploadPage(page, packedArray, extra, extArray);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptySh1Texture = this.emptyUint32x2;\n static emptySh2Texture = this.emptyUint32x4;\n static emptySh3Texture = this.emptyUint32x4;\n static emptyExtSh1Texture = this.emptyUint32x4;\n static emptyExtSh2Texture = this.emptyUint32x4;\n static emptyExtSh3Texture = this.emptyUint32x4;\n static emptyExtSh3BTexture = this.emptyUint32x4;\n}\n\nfunction getGlTexture(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n): WebGLTexture {\n if (!renderer.properties.has(texture)) {\n throw new Error(\"texture not found\");\n }\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n return glTexture;\n}\n\nconst wasmInitialized = init_wasm();\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SparkRenderer } from \"./SparkRenderer\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n\n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static staticInitialized = SplatMesh.staticInitialize();\n static isStaticInitialized = false;\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n static async staticInitialize() {\n await init_wasm();\n SplatMesh.isStaticInitialized = true;\n }\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !SplatMesh.isStaticInitialized ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n\nconst EMPTY_GEOMETRY = new THREE.BufferGeometry();\nconst EMPTY_MATERIAL = new THREE.ShaderMaterial();\n\n// Creates an empty mesh to hook into Three.js rendering.\n// This is used to detect if a SparkRenderer is present in the scene.\n// If not, one will be injected automatically.\nfunction createRendererDetectionMesh(): THREE.Mesh {\n const mesh = new THREE.Mesh(EMPTY_GEOMETRY, EMPTY_MATERIAL);\n mesh.frustumCulled = false;\n mesh.onBeforeRender = function (renderer, scene) {\n if (!scene.isScene) {\n // The SplatMesh is part of render call that doesn't have a Scene at its root\n // Don't auto-inject a renderer.\n this.removeFromParent();\n return;\n }\n\n // Check if the scene has a SparkRenderer instance\n let hasSparkRenderer = false;\n scene.traverse((c) => {\n if (c instanceof SparkRenderer || c instanceof OldSparkRenderer) {\n hasSparkRenderer = true;\n }\n });\n\n if (!hasSparkRenderer) {\n // No spark renderer present in the scene, inject one.\n scene.add(new SparkRenderer({ renderer }));\n }\n\n // Remove mesh to stop checking\n this.removeFromParent();\n };\n return mesh;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import * as THREE from \"three\";\n\nimport type { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport type { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { DynoPackedSplats } from \"./PackedSplats\";\nimport { Readback } from \"./Readback\";\nimport {\n type DynoBlock,\n DynoBool,\n DynoFloat,\n type DynoVal,\n DynoVec3,\n Gsplat,\n add,\n combine,\n defineGsplat,\n dyno,\n dynoBlock,\n dynoConst,\n floatBitsToUint,\n mul,\n packHalf2x16,\n readPackedSplat,\n uintToRgba8,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { FreeList, withinCoorientDist } from \"./utils\";\n\nexport type OldSparkViewpointOptions = {\n /**\n * Controls whether to auto-update its sort order whenever the SparkRenderer\n * updates the Gsplats. If you expect to render/display from this viewpoint\n * most frames, set this to true.\n * @default false\n */\n autoUpdate?: boolean;\n /**\n * Set a THREE.Camera for this viewpoint to follow.\n * @default undefined\n */\n camera?: THREE.Camera;\n /**\n * Set an explicit view-to-world transformation matrix for this viewpoint (equivalent\n * to camera.matrixWorld), overrides any camera setting.\n * @default undefined\n */\n viewToWorld?: THREE.Matrix4;\n /**\n * Configure viewpoint with an off-screen render target.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n };\n /**\n * Callback function that is called when the render target texture is updated.\n * Receives the texture as a parameter. Use this to update a viewport with\n * the latest viewpoint render each frame.\n * @default undefined\n */\n onTextureUpdated?: (texture: THREE.Texture) => void;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth sort metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Distance threshold for re-sorting splats. If the viewpoint moves more than\n * this distance, splats will be re-sorted.\n * @default 0.01 units\n */\n sortDistance?: number;\n /**\n * View direction dot product threshold for re-sorting splats. For\n * sortRadial: true we use 0.99 while sortRadial: false uses 0.999 because it is\n * more sensitive to view direction.\n * @default 0.99 if sortRadial else 0.999\n */\n sortCoorient?: boolean;\n /**\n * Constant added to Z-depth to bias values into the positive range for\n * sortRadial: false, but also used for culling Gsplats \"well behind\"\n * the viewpoint origin\n * @default 1.0\n */\n depthBias?: number;\n /**\n * Set this to true if rendering a 360 to disable \"behind the viewpoint\"\n * culling during sorting. This is set automatically when rendering 360 envMaps\n * using the SparkRenderer.renderEnvMap() utility function.\n * @default false\n */\n sort360?: boolean;\n /*\n * Set this to true to sort with float32 precision with two-pass sort.\n * @default true\n */\n sort32?: boolean;\n /*\n * Set this to true to enable sort-free stochastic splat rendering.\n * @default false\n */\n stochastic?: boolean;\n};\n\n// A SparkViewpoint is created from and tied to a SparkRenderer, and represents\n// an independent viewpoint of all the scene Gsplats and their sort order. Making\n// these viewpoints explicit allows us to have multiple, simultaneous viewpoint\n// renders, for example for camera preview panes or overhead map views.\n//\n// When creating a SparkRenderer it automatically creates a default viewpoint\n// .defaultView that is used in the normal render loop when drawing to the canvas,\n// and is automatically updated whenever the camera moves. Additional viewpoints\n// can be created and configured separately.\n\nexport class OldSparkViewpoint {\n spark: OldSparkRenderer;\n autoUpdate: boolean;\n camera?: THREE.Camera;\n viewToWorld: THREE.Matrix4;\n lastTime: number | null = null;\n\n target?: THREE.WebGLRenderTarget;\n private back?: THREE.WebGLRenderTarget;\n onTextureUpdated?: (texture: THREE.Texture) => void;\n encodeLinear = false;\n superXY = 1;\n private superPixels?: Uint8Array;\n private pixels?: Uint8Array;\n\n sortRadial: boolean;\n sortDistance?: number;\n sortCoorient?: boolean;\n depthBias?: number;\n sort360?: boolean;\n sort32?: boolean;\n stochastic: boolean;\n\n display: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n geometry: OldSplatGeometry;\n } | null = null;\n\n private sorting: { viewToWorld: THREE.Matrix4 } | null = null;\n private pending: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed: boolean;\n } | null = null;\n private sortingCheck = false;\n\n private readback16: Uint16Array = new Uint16Array(0);\n private readback32: Uint32Array = new Uint32Array(0);\n private orderingFreelist: FreeList;\n\n constructor(options: OldSparkViewpointOptions & { spark: OldSparkRenderer }) {\n this.spark = options.spark;\n this.camera = options.camera;\n this.viewToWorld = options.viewToWorld ?? new THREE.Matrix4();\n\n if (options.target) {\n const { width, height, doubleBuffer } = options.target;\n const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1));\n this.superXY = superXY;\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n\n this.target = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n if (doubleBuffer) {\n this.back = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n }\n this.encodeLinear = true;\n }\n this.onTextureUpdated = options.onTextureUpdated;\n\n this.sortRadial = options.sortRadial ?? true;\n this.sortDistance = options.sortDistance;\n this.sortCoorient = options.sortCoorient;\n this.depthBias = options.depthBias;\n this.sort360 = options.sort360;\n this.sort32 = options.sort32;\n this.stochastic = options.stochastic ?? false;\n\n this.orderingFreelist = new FreeList({\n allocate: (maxSplats) =>\n new Uint32Array(maxSplats) as Uint32Array,\n valid: (ordering, maxSplats) => ordering.length === maxSplats,\n });\n\n this.autoUpdate = false;\n this.setAutoUpdate(options.autoUpdate ?? false);\n }\n\n // Call this when you are done with the SparkViewpoint and want to\n // free up its resources (GPU targets, pixel buffers, etc.)\n dispose() {\n this.setAutoUpdate(false);\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.back) {\n this.back.dispose();\n this.back = undefined;\n }\n if (this.display) {\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.geometry.dispose();\n this.display = null;\n }\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n this.pending = null;\n }\n }\n\n // Use this function to change whether this viewpoint will auto-update\n // its sort order whenever the attached SparkRenderer updates the Gsplats.\n // Turn this on or off depending on whether you expect to do renders from\n // this viewpoint most frames.\n setAutoUpdate(autoUpdate: boolean) {\n if (!this.autoUpdate && autoUpdate) {\n this.spark.autoViewpoints.push(this);\n } else if (this.autoUpdate && !autoUpdate) {\n this.spark.autoViewpoints = this.spark.autoViewpoints.filter(\n (v) => v !== this,\n );\n }\n this.autoUpdate = autoUpdate;\n }\n\n // See below async prepareRenderPixels() for explanation of parameters.\n // Awaiting this method updates the Gsplats in the scene and performs a sort of the\n // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget()\n // call in the same tick.\n async prepare({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n if (viewToWorld) {\n this.viewToWorld = viewToWorld;\n } else {\n this.camera = camera ?? this.camera;\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n }\n while (update ?? true) {\n // Force an update, possibly with origin centered at this camera\n // to yield the best quality output.\n const originToWorld = forceOrigin\n ? this.viewToWorld\n : this.spark.matrixWorld;\n const updated = this.spark.updateInternal({ scene, originToWorld });\n if (updated) {\n break;\n }\n // A bit of a hack, but try again. We shouldn't be starved for long.\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n\n const accumulator = this.spark.active;\n // Hold reference to accumulator while sorting\n accumulator.refCount += 1;\n await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld });\n // Release accumulator reference\n this.spark.releaseAccumulator(accumulator);\n }\n\n // Render out the viewpoint to the view target RGBA buffer.\n // Swaps buffers if doubleBuffer: true was set.\n // Calls onTextureUpdated(texture) with the resulting texture.\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera?: THREE.Camera }) {\n const target = this.back ?? this.target;\n if (!target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n\n camera = camera ?? this.camera;\n if (!camera) {\n throw new Error(\"Must provide camera\");\n }\n if (camera instanceof THREE.PerspectiveCamera) {\n const newCam = new THREE.PerspectiveCamera().copy(camera, false);\n newCam.aspect = target.width / target.height;\n newCam.updateProjectionMatrix();\n camera = newCam;\n }\n this.viewToWorld = camera.matrixWorld.clone();\n\n const previousTarget = this.spark.renderer.getRenderTarget();\n try {\n this.spark.renderer.setRenderTarget(target);\n this.spark.prepareViewpoint(this);\n\n this.spark.renderer.render(scene, camera);\n } finally {\n this.spark.prepareViewpoint(this.spark.defaultView);\n this.spark.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.back] = [this.back, this.target];\n }\n this.onTextureUpdated?.(target.texture);\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). If superXY was set greater than 1 then\n // downsampling is performed in the target pixel array with simple averaging\n // to derive the returned pixel values. Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n }\n await this.spark.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n this.superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return this.superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.pixels || this.pixels.length < subSize) {\n this.pixels = new Uint8Array(subSize);\n }\n\n const { superPixels, pixels } = this;\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * this.target.width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n pixels[pixelIndex] = r / super2;\n pixels[pixelIndex + 1] = g / super2;\n pixels[pixelIndex + 2] = b / super2;\n pixels[pixelIndex + 3] = a / super2;\n }\n }\n return pixels;\n }\n\n // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene\n // and any camera/viewToWorld viewpoint overrides. By default update is true,\n // which triggers its SparkRenderer to check and potentially update the Gsplats.\n // Setting update to false disables this and sorts the Gsplats as they are.\n // Setting forceOrigin (default: false) to true forces the view update to\n // recalculate the splats with this view origin, potentially altering any\n // view-dependent effects. If you expect view-dependent effects to play a role\n // in the rendering quality, enable this.\n //\n // Underneath, prepareRenderPixels() simply calls await this.prepare(...),\n // this.renderTarget(...), and finally returns the result this.readTarget(),\n // a Promise to a Uint8Array with RGBA values for all the pixels (potentially\n // downsampled if the superXY parameter was used). These steps can also be called\n // manually, for example if you need to alter the scene before and after\n // this.renderTarget(...) to hide UI elements from being rendered.\n async prepareRenderPixels({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n await this.prepare({ scene, camera, viewToWorld, update, forceOrigin });\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // This is called automatically by SparkRenderer, there is no need to call it!\n // The method cannot be private because then SparkRenderer would\n // not be able to call it.\n autoPoll({ accumulator }: { accumulator?: OldSplatAccumulator }) {\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n\n let needsSort = false;\n let displayed = false;\n\n if (!this.display) {\n // Need to do first sort\n needsSort = true;\n } else if (accumulator) {\n needsSort = true;\n const { mappingVersion } = this.display.accumulator;\n if (accumulator.mappingVersion === mappingVersion) {\n // Splat mapping has not changed, so reuse the existing sorted\n // geometry to show updates faster. We will still fire off\n // a re-sort if necessary. First release old accumulator.\n accumulator.refCount += 1;\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n this.display.viewToWorld.copy(this.viewToWorld);\n displayed = true;\n\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n }\n\n const latestView = this.sorting?.viewToWorld ?? this.display?.viewToWorld;\n if (\n latestView &&\n !withinCoorientDist({\n matrix1: this.viewToWorld,\n matrix2: latestView,\n // By default update sort each 1 cm\n maxDistance: this.sortDistance ?? 0.01,\n // By default for radial sort, update for intermittent movement so that\n // we bring back splats culled by being behind the camera.\n // For depth sort, small rotations can change sort order a lot, so\n // update sort for even small rotations.\n minCoorient: (this.sortCoorient ?? this.sortRadial) ? 0.99 : 0.999,\n })\n ) {\n needsSort = true;\n }\n\n if (!needsSort) {\n // Stop here, no sort necessary\n return;\n }\n\n if (accumulator) {\n // Hold a reference to the accumulator for sorting\n accumulator.refCount += 1;\n }\n\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n }\n this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed };\n\n // Don't await this, just trigger the sort if necessary\n this.driveSort();\n }\n\n private async driveSort() {\n while (true) {\n if (this.sorting || !this.pending) {\n return; // Sort already in process or nothing to sort\n }\n\n const { viewToWorld, displayed } = this.pending;\n let accumulator = this.pending.accumulator;\n if (!accumulator) {\n // Hold a reference to the accumulator while sorting\n accumulator = this.display?.accumulator ?? this.spark.active;\n accumulator.refCount += 1;\n }\n this.pending = null;\n if (!accumulator) {\n throw new Error(\"No accumulator to sort\");\n }\n\n this.sorting = { viewToWorld };\n await this.sortUpdate({ accumulator, viewToWorld, displayed });\n this.sorting = null;\n\n // Release the reference to the accumulator\n this.spark.releaseAccumulator(accumulator);\n\n // Continue in loop with any queued sort\n }\n }\n\n private async sortUpdate({\n accumulator,\n viewToWorld,\n displayed = false,\n }: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed?: boolean;\n }) {\n if (this.sortingCheck) {\n throw new Error(\"Only one sort at a time\");\n }\n this.sortingCheck = true;\n\n accumulator = accumulator ?? this.spark.active;\n const { numSplats, maxSplats } = accumulator.splats;\n let activeSplats = 0;\n let ordering = this.orderingFreelist.alloc(maxSplats);\n\n if (this.stochastic) {\n activeSplats = numSplats;\n // Render all splats in order since the Z-buffer\n // will handle ordering.\n for (let i = 0; i < numSplats; ++i) {\n ordering[i] = i;\n }\n } else if (numSplats > 0) {\n const {\n reader,\n doubleSortReader,\n sort32Reader,\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n } = OldSparkViewpoint.makeSorter();\n const sort32 = this.sort32 ?? false;\n let readback: Uint16Array | Uint32Array;\n if (sort32) {\n this.readback32 = reader.ensureBuffer(maxSplats, this.readback32);\n readback = this.readback32;\n } else {\n const halfMaxSplats = Math.ceil(maxSplats / 2);\n this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16);\n readback = this.readback16;\n }\n\n const worldToOrigin = accumulator.toWorld.clone().invert();\n const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin);\n\n dynoSortRadial.value = this.sort360 ? true : this.sortRadial;\n dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin);\n dynoDirection.value\n .set(0, 0, -1)\n .applyMatrix4(viewToOrigin)\n .sub(dynoOrigin.value)\n .normalize();\n dynoDepthBias.value = this.depthBias ?? 1.0;\n dynoSort360.value = this.sort360 ?? false;\n dynoSplats.packedSplats = accumulator.splats;\n\n const sortReader = sort32 ? sort32Reader : doubleSortReader;\n const count = sort32 ? numSplats : Math.ceil(numSplats / 2);\n await reader.renderReadback({\n renderer: this.spark.renderer,\n reader: sortReader,\n count,\n readback,\n });\n\n const result = (await withWorker(async (worker) => {\n const rpcName = sort32 ? \"sort32Splats\" : \"sortDoubleSplats\";\n return worker.call(rpcName, {\n maxSplats,\n numSplats,\n readback,\n ordering,\n });\n })) as {\n readback: Uint16Array | Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n if (sort32) {\n this.readback32 = result.readback as Uint32Array;\n } else {\n this.readback16 = result.readback as Uint16Array;\n }\n ordering = result.ordering;\n activeSplats = result.activeSplats;\n }\n\n this.updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed,\n });\n this.sortingCheck = false;\n }\n\n private updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed = false,\n }: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n ordering: Uint32Array;\n activeSplats: number;\n displayed?: boolean;\n }) {\n if (!this.display) {\n // Hold a reference to the accumulator while part of display\n accumulator.refCount += 1;\n this.display = {\n accumulator,\n viewToWorld,\n geometry: new OldSplatGeometry(ordering, activeSplats),\n };\n } else {\n if (!displayed && accumulator !== this.display.accumulator) {\n // Hold a reference to the new accumulator being displayed\n accumulator.refCount += 1;\n // Release the reference to the previously displayed accumulator\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n }\n\n this.display.viewToWorld = viewToWorld;\n\n const oldOrdering = this.display.geometry.ordering;\n if (oldOrdering.length === ordering.length) {\n this.display.geometry.update(ordering, activeSplats);\n } else {\n this.display.geometry.dispose();\n // console.log(\"*** alloc SplatGeometry\", ordering.length);\n this.display.geometry = new OldSplatGeometry(ordering, activeSplats);\n }\n this.orderingFreelist.free(oldOrdering);\n }\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n\n // If you need an empty THREE.Texture to use to initialize a uniform that is\n // updated via onTextureUpdated(texture), this static texture can be handy.\n static EMPTY_TEXTURE = new THREE.Texture();\n\n private static dynos: {\n dynoSortRadial: DynoBool;\n dynoOrigin: DynoVec3;\n dynoDirection: DynoVec3;\n dynoDepthBias: DynoFloat;\n dynoSort360: DynoBool;\n dynoSplats: DynoPackedSplats;\n reader: Readback;\n doubleSortReader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n sort32Reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n private static makeSorter() {\n if (!OldSparkViewpoint.dynos) {\n const dynoSortRadial = new DynoBool({ value: true });\n const dynoOrigin = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDirection = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDepthBias = new DynoFloat({ value: 1.0 });\n const dynoSort360 = new DynoBool({ value: false });\n const dynoSplats = new DynoPackedSplats();\n\n const reader = new Readback();\n const doubleSortReader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n const index2 = mul(index, dynoConst(\"int\", 2));\n\n const gsplat0 = readPackedSplat(dynoSplats, index2);\n const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams });\n\n const gsplat1 = readPackedSplat(\n dynoSplats,\n add(index2, dynoConst(\"int\", 1)),\n );\n const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams });\n\n const combined = combine({\n vectorType: \"vec2\",\n x: metric0,\n y: metric1,\n });\n const rgba8 = uintToRgba8(packHalf2x16(combined));\n return { rgba8 };\n },\n );\n\n const sort32Reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n\n const gsplat = readPackedSplat(dynoSplats, index);\n const metric = computeSortMetric({ gsplat, ...sortParams });\n const rgba8 = uintToRgba8(floatBitsToUint(metric));\n return { rgba8 };\n },\n );\n\n OldSparkViewpoint.dynos = {\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n reader,\n doubleSortReader,\n sort32Reader,\n };\n }\n return OldSparkViewpoint.dynos;\n }\n}\n\nconst defineComputeSortMetric = unindent(`\n float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {\n if (!isGsplatActive(gsplat.flags)) {\n return INFINITY;\n }\n\n vec3 center = gsplat.center - sortOrigin;\n float biasedDepth = dot(center, sortDirection) + sortDepthBias;\n if (!sort360 && (biasedDepth <= 0.0)) {\n return INFINITY;\n }\n\n return sortRadial ? length(center) : biasedDepth;\n }\n`);\n\nfunction computeSortMetric({\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n}: {\n gsplat: DynoVal;\n sortRadial: DynoVal<\"bool\">;\n sortOrigin: DynoVal<\"vec3\">;\n sortDirection: DynoVal<\"vec3\">;\n sortDepthBias: DynoVal<\"float\">;\n sort360: DynoVal<\"bool\">;\n}) {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n sortRadial: \"bool\",\n sortOrigin: \"vec3\",\n sortDirection: \"vec3\",\n sortDepthBias: \"float\",\n sort360: \"bool\",\n },\n outTypes: { metric: \"float\" },\n globals: () => [defineGsplat, defineComputeSortMetric],\n inputs: {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n },\n statements: ({ inputs, outputs }) => {\n const {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n } = inputs;\n return unindentLines(`\n ${outputs.metric} = computeSort(${gsplat}, ${sortRadial}, ${sortOrigin}, ${sortDirection}, ${sortDepthBias}, ${sort360});\n `);\n },\n }).outputs.metric;\n}\n","import * as THREE from \"three\";\n\nimport { PackedSplats } from \"./PackedSplats\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport type { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\n\n// SplatAccumulator helps manage the generation of splats from multiple\n// SplatGenerators, keeping track of the splat mapping, coordinate system,\n// and reference count.\n\nexport class OldSplatAccumulator {\n splats = new PackedSplats();\n // The transform from Accumulator coordinate system to world coordinates.\n toWorld = new THREE.Matrix4();\n // An array of all Gsplat mappings that were used for generation\n mapping: GeneratorMapping[] = [];\n // Number of SparkViewpoints (or other) that reference this accumulator, used\n // to figure out when it can be recycled for use\n refCount = 0;\n\n // Incremented every time the splats are updated/generated.\n splatsVersion = -1;\n // Incremented every time the splat mapping/layout is updated.\n // Splat sort order can be reused between equivalent mapping versions.\n mappingVersion = -1;\n\n ensureGenerate(maxSplats: number) {\n if (this.splats.ensureGenerate(maxSplats)) {\n // If we had to resize our PackedSplats then clear all previous mappings\n this.mapping = [];\n }\n }\n\n // Generate all Gsplats from an array of generators\n generateSplats({\n renderer,\n modifier,\n generators,\n forceUpdate,\n originToWorld,\n }: {\n renderer: THREE.WebGLRenderer;\n modifier: SplatModifier;\n generators: GeneratorMapping[];\n forceUpdate?: boolean;\n originToWorld: THREE.Matrix4;\n }) {\n // Create a lookup from last SplatGenerator\n const mapping = this.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Run generators that are different from existing mapping\n let updated = 0;\n let numSplats = 0;\n for (const { node, generator, version, base, count } of generators) {\n const current = mapping.get(node);\n if (\n forceUpdate ||\n generator !== current?.generator ||\n version !== current?.version ||\n base !== current?.base ||\n count !== current?.count\n ) {\n // Something is different from before so we should generate these Gsplats\n if (generator && count > 0) {\n const modGenerator = modifier.apply(generator);\n try {\n this.splats.generate({\n generator: modGenerator,\n base,\n count,\n renderer,\n });\n } catch (error) {\n node.generator = undefined;\n node.generatorError = error;\n }\n updated += 1;\n }\n }\n numSplats = Math.max(numSplats, base + count);\n }\n\n this.splats.numSplats = numSplats;\n this.toWorld.copy(originToWorld);\n this.mapping = generators;\n return updated !== 0;\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n hasCorrespondence(other: OldSplatAccumulator) {\n if (this.mapping.length !== other.mapping.length) {\n return false;\n }\n return this.mapping.every(({ node, base, count }, i) => {\n const {\n node: otherNode,\n base: otherBase,\n count: otherCount,\n } = other.mapping[i];\n return node === otherNode && base === otherBase && count === otherCount;\n });\n }\n}\n","import * as THREE from \"three\";\n\nimport {\n OldSparkViewpoint,\n type OldSparkViewpointOptions,\n} from \"./OldSparkViewpoint\";\nimport { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { RgbaArray } from \"./RgbaArray\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n} from \"./defines\";\nimport {\n DynoVec3,\n DynoVec4,\n Gsplat,\n TPackedSplats,\n dynoBlock,\n readPackedSplat,\n transformGsplat,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport {\n averagePositions,\n averageQuaternions,\n cloneClock,\n withinCoorientDist,\n} from \"./utils\";\n\n// SparkRenderer aggregates splats from multiple generators into a single\n// accumulated collection per frame. In normal operation we only need a\n// maximum of 3 accumulators: One currently being viewed, one currently\n// being sorted, and one more for generating the next frame. Accumulators\n// must be \"released\" by each viewpoint using it, so in unusual cases\n// such as slow render-outs, we may want to allow more than 3 so the\n// pipeline can continue generating new frames, but we limit to a maximum\n// of 5 to avoid excessive memory usage.\nconst MAX_ACCUMULATORS = 5;\n\nexport type OldSparkRendererOptions = {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the SparkRenderer properties time and\n * deltaTime directly. (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection after\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this must be false in order to complete rendering as soon as possible.\n * @default false\n */\n preUpdate?: boolean;\n /**\n * Distance threshold for SparkRenderer movement triggering a Gsplat update at\n * the new origin.\n * @default 1.0\n */\n originDistance?: number;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(5)..Math.sqrt(8) produce good results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Configures the SparkViewpointOptions for the default SparkViewpoint\n * associated with this SparkRenderer. Notable option: sortRadial (sort by\n * radial distance or Z-depth)\n */\n view?: OldSparkViewpointOptions;\n /**\n * Override the default splat encoding ranges for the PackedSplats.\n * (default: undefined)\n */\n splatEncoding?: SplatEncoding;\n};\n\nexport class OldSparkRenderer extends THREE.Mesh {\n renderer: THREE.WebGLRenderer;\n premultipliedAlpha: boolean;\n material: THREE.ShaderMaterial;\n uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n needsUpdate: boolean;\n originDistance: number;\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n minAlpha: number;\n enable2DGS: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n splatEncoding: SplatEncoding;\n\n splatTexture: null | {\n enable?: boolean;\n texture?: THREE.Data3DTexture;\n multiply?: THREE.Matrix2;\n add?: THREE.Vector2;\n near?: number;\n far?: number;\n mid?: number;\n } = null;\n\n time?: number;\n deltaTime?: number;\n clock: THREE.Clock;\n\n // Latest Gsplat collection being displayed\n active: OldSplatAccumulator;\n // Free list of accumulators for reuse\n private freeAccumulators: OldSplatAccumulator[];\n // Total number of accumulators currently allocated\n private accumulatorCount: number;\n // Default SparkViewpoint used for rendering to the canvas\n defaultView: OldSparkViewpoint;\n // List of SparkViewpoints with autoUpdate enabled\n autoViewpoints: OldSparkViewpoint[] = [];\n\n // Dynos used to transform Gsplats to the accumulator coordinate system\n private rotateToAccumulator = new DynoVec4({ value: new THREE.Quaternion() });\n private translateToAccumulator = new DynoVec3({ value: new THREE.Vector3() });\n private modifier: SplatModifier;\n\n // Last rendered frame number so we know when we're rendering a new frame\n private lastFrame = -1;\n // Last update timestamp to compute deltaTime\n private lastUpdateTime: number | null = null;\n // List of cameras used for the current viewpoint (for WebXR)\n private defaultCameras: THREE.Matrix4[] = [];\n private lastStochastic: boolean | null = null;\n\n // Should be set to the defaultView, but can be temporarily changed to another\n // viewpoint using prepareViewpoint() for rendering from a different viewpoint.\n viewpoint: OldSparkViewpoint;\n\n // Holds data needed to perform a scheduled Gsplat update.\n private pendingUpdate = {\n scene: null as THREE.Scene | null,\n originToWorld: new THREE.Matrix4(),\n timeoutId: -1,\n };\n\n // Internal SparkViewpoint used for environment map rendering.\n private envViewpoint: OldSparkViewpoint | null = null;\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n camera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n static EMPTY_SPLAT_TEXTURE = new THREE.Data3DTexture();\n\n constructor(options: OldSparkRendererOptions) {\n const uniforms = OldSparkRenderer.makeUniforms();\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: shaders.oldSplatVertex,\n fragmentShader: shaders.oldSplatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: true,\n depthTest: true,\n depthWrite: false,\n side: THREE.DoubleSide,\n });\n\n super(EMPTY_GEOMETRY, material);\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n this.renderer = options.renderer;\n this.material = material;\n this.uniforms = uniforms;\n\n // Create a Gsplat modifier that takes the output of any SplatGenerator\n // and transforms them into the accumulator's coordinate system\n const modifier = dynoBlock(\n { gsplat: Gsplat },\n { gsplat: Gsplat },\n ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"gsplat not defined\");\n }\n gsplat = transformGsplat(gsplat, {\n rotate: this.rotateToAccumulator,\n translate: this.translateToAccumulator,\n });\n return { gsplat };\n },\n );\n this.modifier = new SplatModifier(modifier);\n\n this.premultipliedAlpha = premultipliedAlpha;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? false;\n this.needsUpdate = false;\n this.originDistance = options.originDistance ?? 1;\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING };\n\n this.active = new OldSplatAccumulator();\n this.active.refCount = 1;\n this.accumulatorCount = 1;\n this.freeAccumulators = [];\n // Start with the minimum of 2 total accumulators\n for (let count = 0; count < 1; ++count) {\n this.freeAccumulators.push(new OldSplatAccumulator());\n this.accumulatorCount += 1;\n }\n\n // Create a default SparkViewpoint that is used when we call render()\n // on the scene and has the sorted Gsplat collection from that viewpoint.\n this.defaultView = new OldSparkViewpoint({\n ...options.view,\n autoUpdate: true,\n spark: this,\n });\n this.viewpoint = this.defaultView;\n this.prepareViewpoint(this.viewpoint);\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n }\n\n static makeUniforms() {\n // Create uniforms used for Gsplat vertex and fragment shaders\n const uniforms = {\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // Total number of Gsplats in packedSplats to render\n numSplats: { value: 0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable stochastic splat rendering\n stochastic: { value: false },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Enable splat texture rendering\n splatTexEnable: { value: false },\n // Splat texture to render\n splatTexture: { type: \"t\", value: OldSparkRenderer.EMPTY_SPLAT_TEXTURE },\n // Splat texture UV transform (multiply)\n splatTexMul: { value: new THREE.Matrix2() },\n // Splat texture UV transform (add)\n splatTexAdd: { value: new THREE.Vector2() },\n // Splat texture near plane distance\n splatTexNear: { value: 0.1 },\n // Splat texture far plane distance\n splatTexFar: { value: 1000.0 },\n // Splat texture mid plane distance, or 0.0 to disable\n splatTexMid: { value: 0.0 },\n // Gsplat collection to render\n packedSplats: { type: \"t\", value: PackedSplats.getEmptyArray },\n // Splat encoding ranges\n rgbMinMaxLnScaleMinMax: { value: new THREE.Vector4() },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n private canAllocAccumulator(): boolean {\n // Returns true if can allocate an accumulator immediately\n return (\n this.freeAccumulators.length > 0 ||\n this.accumulatorCount < MAX_ACCUMULATORS\n );\n }\n\n private maybeAllocAccumulator(): OldSplatAccumulator | null {\n // Allocate an accumulator immediately if possible, else return null\n let accumulator = this.freeAccumulators.pop();\n if (accumulator === undefined) {\n if (this.accumulatorCount >= MAX_ACCUMULATORS) {\n return null;\n }\n accumulator = new OldSplatAccumulator();\n this.accumulatorCount += 1;\n }\n accumulator.refCount = 1;\n return accumulator;\n }\n\n releaseAccumulator(accumulator: OldSplatAccumulator) {\n // Decrement reference count and recycle if no longer in use\n accumulator.refCount -= 1;\n if (accumulator.refCount === 0) {\n this.freeAccumulators.push(accumulator);\n }\n }\n\n newViewpoint(options: OldSparkViewpointOptions) {\n // Create a new SparkViewpoint for this SparkRenderer.\n // Note that every SparkRenderer has an initial spark.defaultView: SparkViewpoint\n // from construction, which is used for the default canvas render loop.\n // Calling this method allows you to create additional viewpoints, which can be\n // updated automatically each frame (performing Gsplat sorting every time there\n // is an update), or updated on-demand for controlled rendering for video render\n // or similar applications.\n return new OldSparkViewpoint({ ...options, spark: this });\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n // throw new Error(\"onBeforeRender disabled in SparkRenderer\");\n\n // Called by Three.js before rendering this SparkRenderer.\n // At this point we can't modify the geometry or material, all these must\n // be set in the scene already before this is called. Update the uniforms\n // to render the Gsplats from the current active viewpoint.\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.viewpoint.lastTime ?? time);\n this.viewpoint.lastTime = time;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== this.lastFrame;\n this.lastFrame = frame;\n\n const viewpoint = this.viewpoint;\n if (viewpoint === this.defaultView) {\n // When rendering is triggered on the default viewpoint,\n // perform automatic updates.\n if (isNewFrame) {\n if (!renderer.xr.isPresenting) {\n // Non-WebXR mode, just a single camera\n this.defaultView.viewToWorld = camera.matrixWorld.clone();\n this.defaultCameras = [this.defaultView.viewToWorld];\n } else {\n // In WebXR mode we are called multiple times, once for each eye,\n // so use their average to compute the sort center.\n const cameras = renderer.xr.getCamera().cameras;\n this.defaultCameras = cameras.map((camera) => camera.matrixWorld);\n this.defaultView.viewToWorld =\n averageOriginToWorlds(this.defaultCameras) ?? new THREE.Matrix4();\n }\n }\n\n if (this.autoUpdate) {\n this.update({ scene, viewToWorld: this.defaultView.viewToWorld });\n }\n }\n\n // Update uniforms for rendering\n\n if (isNewFrame) {\n // Keep these uniforms the same for both eyes if in WebXR\n if (this.material.premultipliedAlpha !== this.premultipliedAlpha) {\n this.material.premultipliedAlpha = this.premultipliedAlpha;\n this.material.needsUpdate = true;\n }\n this.uniforms.time.value = time;\n this.uniforms.deltaTime.value = deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (viewpoint.display && viewpoint.stochastic) {\n (this.geometry as OldSplatGeometry).instanceCount =\n this.uniforms.numSplats.value;\n }\n }\n\n if (viewpoint.target) {\n // Rendering to a texture target, so its dimensions\n this.uniforms.renderSize.value.set(\n viewpoint.target.width,\n viewpoint.target.height,\n );\n } else {\n // Rendering to the canvas or WebXR\n const renderSize = renderer.getDrawingBufferSize(\n this.uniforms.renderSize.value,\n );\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n\n // Update uniforms from instance properties\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n this.uniforms.encodeLinear.value = viewpoint.encodeLinear;\n this.uniforms.maxStdDev.value = this.maxStdDev;\n this.uniforms.minPixelRadius.value = this.minPixelRadius;\n this.uniforms.maxPixelRadius.value = this.maxPixelRadius;\n this.uniforms.minAlpha.value = this.minAlpha;\n this.uniforms.stochastic.value = viewpoint.stochastic;\n this.uniforms.enable2DGS.value = this.enable2DGS;\n this.uniforms.preBlurAmount.value = this.preBlurAmount;\n this.uniforms.blurAmount.value = this.blurAmount;\n this.uniforms.focalDistance.value = this.focalDistance;\n this.uniforms.apertureAngle.value = this.apertureAngle;\n this.uniforms.falloff.value = this.falloff;\n this.uniforms.clipXY.value = this.clipXY;\n this.uniforms.focalAdjustment.value = this.focalAdjustment;\n\n if (this.lastStochastic !== !viewpoint.stochastic) {\n this.lastStochastic = !viewpoint.stochastic;\n this.material.transparent = !viewpoint.stochastic;\n this.material.depthWrite = viewpoint.stochastic;\n this.material.needsUpdate = true;\n }\n\n if (this.splatTexture) {\n const { enable, texture, multiply, add, near, far, mid } =\n this.splatTexture;\n if (enable && texture) {\n this.uniforms.splatTexEnable.value = true;\n this.uniforms.splatTexture.value = texture;\n if (multiply) {\n this.uniforms.splatTexMul.value.fromArray(multiply.elements);\n } else {\n this.uniforms.splatTexMul.value.set(\n 0.5 / this.maxStdDev,\n 0,\n 0,\n 0.5 / this.maxStdDev,\n );\n }\n this.uniforms.splatTexAdd.value.set(add?.x ?? 0.5, add?.y ?? 0.5);\n this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value;\n this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value;\n this.uniforms.splatTexMid.value = mid ?? 0.0;\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n\n // Calculate the transform from the accumulator to the current camera\n const accumToWorld =\n viewpoint.display?.accumulator.toWorld ?? new THREE.Matrix4();\n const worldToCamera = camera.matrixWorld.clone().invert();\n const originToCamera = accumToWorld.clone().premultiply(worldToCamera);\n originToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n }\n\n // Update the uniforms for the given viewpoint.\n // Note that the client expects to be able to call render() at any point\n // to update the canvas, so we must switch the viewpoint back to\n // defaultView when we're finished.\n prepareViewpoint(viewpoint?: OldSparkViewpoint) {\n this.viewpoint = viewpoint ?? this.viewpoint;\n\n if (this.viewpoint.display) {\n const { accumulator, geometry } = this.viewpoint.display;\n this.uniforms.numSplats.value = accumulator.splats.numSplats;\n this.uniforms.packedSplats.value = accumulator.splats.getTexture();\n this.uniforms.rgbMinMaxLnScaleMinMax.value.set(\n accumulator.splats.splatEncoding?.rgbMin ?? 0.0,\n accumulator.splats.splatEncoding?.rgbMax ?? 1.0,\n accumulator.splats.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n accumulator.splats.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n this.geometry = geometry;\n this.material.transparent = !this.viewpoint.stochastic;\n this.material.depthWrite = this.viewpoint.stochastic;\n this.material.needsUpdate = true;\n } else {\n // No Gsplats to display for this viewpoint yet\n this.uniforms.numSplats.value = 0;\n this.uniforms.packedSplats.value = PackedSplats.getEmptyArray;\n this.geometry = EMPTY_GEOMETRY;\n }\n }\n\n // If spark.autoUpdate is false then you must manually call\n // spark.update({ scene }) to have the scene Gsplats be re-generated.\n update({\n scene,\n viewToWorld,\n }: { scene: THREE.Scene; viewToWorld?: THREE.Matrix4 }) {\n // Compute the transform for the SparkRenderer to use as origin\n // for Gsplat generation and accumulation.\n const originToWorld = this.matrixWorld;\n\n // Either do the update now, or in the next \"tick\" depending on preUpdate\n if (this.preUpdate) {\n this.updateInternal({\n scene,\n originToWorld: originToWorld.clone(),\n viewToWorld,\n });\n } else {\n // Pass the update parameters to be performed on the next tick\n this.pendingUpdate.scene = scene;\n this.pendingUpdate.originToWorld.copy(originToWorld);\n\n // Schedule a timeout if there isn't one already\n if (this.pendingUpdate.timeoutId === -1) {\n this.pendingUpdate.timeoutId = setTimeout(() => {\n const { scene, originToWorld } = this.pendingUpdate;\n this.pendingUpdate.scene = null;\n this.pendingUpdate.timeoutId = -1;\n const updated = this.updateInternal({\n scene: scene as THREE.Scene,\n originToWorld,\n viewToWorld,\n });\n\n if (updated) {\n // Flush to encourage eager execution\n const gl = this.renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n }, 1);\n }\n }\n }\n\n updateInternal({\n scene,\n originToWorld,\n viewToWorld,\n }: {\n scene: THREE.Scene;\n originToWorld?: THREE.Matrix4;\n viewToWorld?: THREE.Matrix4;\n }): boolean {\n if (!this.canAllocAccumulator()) {\n // We don't have any available accumulators because of sorting\n // back pressure, so don't update this time but try again next time.\n // Signal update not attempted.\n return false;\n }\n\n // Figure out the frame of the SparkRenderer and current view\n if (!originToWorld) {\n originToWorld = this.active.toWorld;\n }\n viewToWorld = viewToWorld ?? originToWorld.clone();\n\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.lastUpdateTime ?? time);\n this.lastUpdateTime = time;\n\n // Create a lookup from last active SplatGenerator to Gsplat mapping record\n const activeMapping = this.active.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Traverse visible scene to find all SplatGenerators and global SplatEdits\n const { generators, visibleGenerators, globalEdits } =\n this.compileScene(scene);\n\n // Let all SplatGenerators run their frameUpdate() method\n for (const object of generators) {\n object.frameUpdate?.({\n renderer: this.renderer,\n object,\n time,\n deltaTime,\n viewToWorld,\n globalEdits,\n });\n }\n\n const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid));\n\n // Make sure we have new version numbers for any objects with either\n // generator or numSplats that have changed since the last frame.\n for (const object of generators) {\n const current = activeMapping.get(object);\n const isVisible = object.generator && visibleGenHash.has(object.uuid);\n const numSplats = isVisible ? object.numSplats : 0;\n if (\n this.needsUpdate ||\n object.generator !== current?.generator ||\n numSplats !== current?.count\n ) {\n object.updateVersion();\n }\n }\n\n // Check if the origin is within the maximum allowed distance before\n // we trigger an update.\n const originUpdate = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: this.active.toWorld,\n maxDistance: this.originDistance,\n });\n\n // Check if we need any update at all\n const needsUpdate =\n this.needsUpdate ||\n originUpdate ||\n generators.length !== activeMapping.size ||\n generators.some((g) => g.version !== activeMapping.get(g)?.version);\n this.needsUpdate = false;\n\n let accumulator: OldSplatAccumulator | null = null;\n if (needsUpdate) {\n // Need to update, so allocate an accumulator\n accumulator = this.maybeAllocAccumulator();\n if (!accumulator) {\n // This should never happen since we checked canAllocAccumulator() above\n throw new Error(\"Unreachable\");\n }\n\n // Compute whether our view frame has changed enough to warrant\n // doing a Gsplat sort. Check both distance epsilon and\n // minimum co-orientation (dot product of quaternions)\n const originChanged = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: accumulator.toWorld,\n maxDistance: 0.00001,\n minCoorient: 0.99999,\n });\n\n // Compute an ordering of the generators with the rough goal\n // of keeping unchanging generators near the front to minimize\n // the number of Gsplats that need to be regenerated.\n const sorted = visibleGenerators\n .map((g, gIndex): [number, number, SplatGenerator] => {\n const lastGen = activeMapping.get(g);\n // If no previous generator, sort by absolute version, which will\n // tend to push frequently updated generators toward the end\n return !lastGen\n ? [Number.POSITIVE_INFINITY, g.version, g]\n : // Sort by version deltas then by previous ordering in the mapping,\n // attempting to keep unchanging generators near the front\n // to improve our chances of avoiding a re-generation.\n [g.version - lastGen.version, lastGen.base, g];\n })\n .sort((a, b) => {\n // Sort by first then second element of the tuple\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return a[1] - b[1];\n });\n const genOrder = sorted.map(([_version, _seq, g]) => g);\n\n // Compute sequential layout of generated splats\n const splatCounts = genOrder.map((g) => g.numSplats);\n const { maxSplats, mapping } =\n accumulator.splats.generateMapping(splatCounts);\n const newGenerators = genOrder.map((node, gIndex) => {\n const { base, count } = mapping[gIndex];\n return {\n node,\n generator: node.generator,\n version: node.version,\n base,\n count,\n };\n });\n\n // Compute worldToAccumulator origin transform (no scale)\n originToWorld\n .clone()\n .invert()\n .decompose(\n this.translateToAccumulator.value,\n this.rotateToAccumulator.value,\n new THREE.Vector3(),\n );\n\n // Generate the Gsplats according to the mapping that need updating\n accumulator.ensureGenerate(maxSplats);\n accumulator.splats.splatEncoding = { ...this.splatEncoding };\n const generated = accumulator.generateSplats({\n renderer: this.renderer,\n modifier: this.modifier,\n generators: newGenerators,\n forceUpdate: originChanged,\n originToWorld,\n });\n\n // Update splat version number\n accumulator.splatsVersion = this.active.splatsVersion + 1;\n // Increment the mapping version if the mapping isn't identical to before\n const hasCorrespondence = accumulator.hasCorrespondence(this.active);\n accumulator.mappingVersion =\n this.active.mappingVersion + (hasCorrespondence ? 0 : 1);\n\n // Release the old accumulator and make the new one active\n this.releaseAccumulator(this.active);\n this.active = accumulator;\n this.prepareViewpoint();\n }\n\n // Let the system breath before potentially triggering sorts\n setTimeout(() => {\n // Notify all auto-updating viewpoints that we updated the Gsplats\n for (const view of this.autoViewpoints) {\n view.autoPoll({ accumulator: accumulator ?? undefined });\n }\n }, 1);\n\n // Signal update was performed\n return true;\n }\n\n private compileScene(scene: THREE.Scene): {\n generators: SplatGenerator[];\n visibleGenerators: SplatGenerator[];\n globalEdits: SplatEdit[];\n } {\n // Take a snapshot of the SplatGenerators and SplatEdits in the scene\n // to be used to run an update.\n const generators: SplatGenerator[] = [];\n // Collect all SplatGenerators, even if not visible, because we want to\n // be able to call their update functions every frame.\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n generators.push(node);\n }\n });\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n visibleGenerators.push(node);\n }\n });\n\n const globalEdits = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEdits.add(node);\n }\n }\n });\n return {\n generators,\n visibleGenerators,\n globalEdits: Array.from(globalEdits),\n };\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n renderer,\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = false,\n }: {\n renderer?: THREE.WebGLRenderer;\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects?: THREE.Object3D[];\n update?: boolean;\n }): Promise {\n if (!this.envViewpoint) {\n this.envViewpoint = this.newViewpoint({ sort360: true });\n }\n if (\n !OldSparkRenderer.cubeRender ||\n OldSparkRenderer.cubeRender.target.width !== size ||\n OldSparkRenderer.cubeRender.near !== near ||\n OldSparkRenderer.cubeRender.far !== far\n ) {\n if (OldSparkRenderer.cubeRender) {\n OldSparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n generateMipmaps: true,\n minFilter: THREE.LinearMipMapLinearFilter,\n });\n const camera = new THREE.CubeCamera(near, far, target);\n OldSparkRenderer.cubeRender = { target, camera, near, far };\n }\n\n if (!OldSparkRenderer.pmrem) {\n OldSparkRenderer.pmrem = new THREE.PMREMGenerator(\n renderer ?? this.renderer,\n );\n }\n\n // Prepare the viewpoint, sorting Gsplats for this view origin.\n const viewToWorld = new THREE.Matrix4().setPosition(worldCenter);\n await this.envViewpoint?.prepare({ scene, viewToWorld, update });\n\n const { target, camera } = OldSparkRenderer.cubeRender;\n camera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n // Update the CubeCamera, which performs 6 cube face renders\n this.prepareViewpoint(this.envViewpoint);\n camera.update(renderer ?? this.renderer, scene);\n\n // Restore viewpoint to default and object visibility\n this.prepareViewpoint(this.defaultView);\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n // Pre-filter the cube map using THREE.PMREMGenerator\n return OldSparkRenderer.pmrem?.fromCubemap(target.texture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n // Utility function that helps extract the Gsplat RGBA values from a\n // SplatGenerator, including the result of any real-time RGBA SDF edits applied\n // to a SplatMesh. This effectively \"bakes\" any computed RGBA values, which can\n // now be used as a pipeline input via SplatMesh.splatRgba to inject these\n // baked values into the Gsplat data.\n getRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): RgbaArray {\n const mapping = this.active.mapping.find(({ node }) => node === generator);\n if (!mapping) {\n throw new Error(\"Generator not found\");\n }\n\n rgba = rgba ?? new RgbaArray();\n rgba.fromPackedSplats({\n packedSplats: this.active.splats,\n base: mapping.base,\n count: mapping.count,\n renderer: this.renderer,\n });\n return rgba;\n }\n\n // Utility function that builds on getRgba({ generator }) and additionally\n // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA\n // in that byte order.\n async readRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): Promise {\n rgba = this.getRgba({ generator, rgba });\n return rgba.read();\n }\n}\n\nconst EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0);\n\nconst reorderSplats = dynoBlock(\n { packedSplats: TPackedSplats, index: \"int\" },\n { gsplat: Gsplat },\n ({ packedSplats, index }) => {\n if (!packedSplats || !index) {\n throw new Error(\"Invalid input\");\n }\n const gsplat = readPackedSplat(packedSplats, index);\n return { gsplat };\n },\n);\n\nfunction averageOriginToWorlds(\n originToWorlds: THREE.Matrix4[],\n): THREE.Matrix4 | null {\n if (originToWorlds.length === 0) {\n return null;\n }\n\n const position = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n\n const positions: THREE.Vector3[] = [];\n const quaternions: THREE.Quaternion[] = [];\n for (const matrix of originToWorlds) {\n matrix.decompose(position, quaternion, scale);\n positions.push(position);\n quaternions.push(quaternion);\n }\n\n return new THREE.Matrix4().compose(\n averagePositions(positions),\n averageQuaternions(quaternions),\n new THREE.Vector3(1, 1, 1),\n );\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n rgba.a = min(1.0, a) * exp(exponent);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["OldSplatGeometry","THREE","ordering","activeSplats","QUAD_VERTICES","QUAD_INDICES","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","b","i","r","j","_a","fl","revfl","_b","fd","rev","x","hMap","cd","mb","s","l","le","co","rvb","sv","r_1","v","m","flt","fdt","flrm","fdrm","max","a","bits","d","p","o","bits16","shft","slc","e","ec","err","ind","msg","nt","inflt","dat","st","buf","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","type","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","c","n","lt","dt","t","lms","dms","lpos","sym","add","dsym","end","shift","dend","et","b2","b4","b8","gzs","flg","zs","Inflate","opts","cb","bts","chunk","inflateSync","data","Gunzip","td","tds","dutf8","strFromU8","latin1","slzh","zh","z","fnl","fn","es","bs","z64e","sc","su","off","unzipSync","files","ze","fltr","c_2","no","LN_SCALE_MIN","LN_SCALE_MAX","SCALE_MIN","SCALE_MAX","LN_SCALE_ZERO","SCALE_ZERO","SPLAT_TEX_WIDTH_BITS","SPLAT_TEX_HEIGHT_BITS","SPLAT_TEX_DEPTH_BITS","SPLAT_TEX_LAYER_BITS","SPLAT_TEX_WIDTH","SPLAT_TEX_HEIGHT","SPLAT_TEX_DEPTH","SPLAT_TEX_MIN_HEIGHT","SPLAT_TEX_WIDTH_MASK","SPLAT_TEX_HEIGHT_MASK","SPLAT_TEX_DEPTH_MASK","WASM_SPLAT_SORT","USE_COMPILED_PARSER_FUNCTION","SplatFileType","DEFAULT_SPLAT_ENCODING","isBoolType","isScalarType","isIntType","isUintType","isFloatType","isMatFloatType","isAllFloatType","isVector2Type","isVector3Type","isVector4Type","isVectorType","isMat2","isMat3","isMat4","vectorElementType","vectorDim","sameSizeVec","sameSizeUvec","sameSizeIvec","typeLiteral","numberAsInt","value","numberAsUint","numberAsFloat","valType","val","DynoValue","DynoOutput","dyno","key","DynoLiteral","literal","dynoLiteral","DynoConst","arg","_","dynoConst","literalZero","typeString","literalOne","literalNegOne","DEFAULT_INDENT","Compilation","indent","Dyno","inTypes","outTypes","inputs","update","globals","statements","generate","outputs","compile","result","declares","name","uniforms","global","dynoDeclare","line","DynoBlock","construct","args","blockInputs","blockOutputs","options","returned","nodeOuts","visit","node","outKey","outName","outs","input","root","steps","source","newSteps","literalOutputs","step","index","dynoBlock","count","typeStr","unindentLines","seenNonEmpty","lines","trimmedLine","regex","unindent","UnaryOp","outTypeFunc","outType","BinaryOp","TrinaryOp","threeRevision","threeMrtArray","f32buffer","u32buffer","supportsFloat16Array","f16buffer","u16buffer","normalize","vec","norm","acc","floatBitsToUint","f","uintBitsToFloat","u","toHalf","toHalfNative","toHalfJS","fromHalf","fromHalfNative","fromHalfJS","sign","exp","frac","halfSign","newExp","subFrac","halfFrac","h","f32bits","mant","newFrac","floatToUint8","floatToSint8","Uint8ToFloat","Sint8ToFloat","DataCache","asyncFetch","dispose","maxItems","item","immediate","pending","removed","mapObject","obj","entries","mapFilterObject","getTransferable","ctx","buffers","seen","traverse","newArray","initFunction","FreeList","allocate","valid","encodeExtSplat","extArrays","y","scaleX","scaleY","scaleZ","quatX","quatY","quatZ","quatW","opacity","g","i4","extA","extB","encodeQuatOctXy1010R12","decodeExtSplat","packedFields","decodeQuatOctXy1010R12","setPackedSplat","packedSplats","encoding","rgbMin","rgbRange","uR","uG","uB","uA","uQuat","encodeQuatOctXy88R8","tempQuaternion","uQuatX","uQuatY","uQuatZ","lnScaleMin","lnScaleScale","uScaleX","uScaleY","uScaleZ","uCenterX","uCenterY","uCenterZ","setPackedSplatCenter","setPackedSplatScales","setPackedSplatQuat","setPackedSplatRgba","setPackedSplatRgb","setPackedSplatOpacity","packedCenter","packedScales","packedQuaternion","packedColor","unpackSplat","word0","word1","word2","word3","uScalesX","uScalesY","uScalesZ","decodeQuatOctXy88R8","getTextureSize","numSplats","width","height","depth","maxSplats","computeMaxSplats","isMobile","isAndroid","isOculus","isQuest2","isIos","isVisionPro","flipPixels","pixels","tempLine","topOffset","bottomOffset","pixelsToPngUrl","canvas","imageData","cloneClock","clock","newClock","omitUndefined","IDENT_VERTEX_SHADER","averagePositions","positions","sum","position","averageQuaternions","quaternions","coinciDist","matrix1","matrix2","origin1","origin2","direction1","direction2","distance","coincidence","withinDist","maxDistance","withinCoinciDist","minCoincidence","coorientDist","rotate1","rotate2","coorient","withinCoorientDist","minCoorient","epsilonSign","epsilon","encodeQuatXyz888","q","negQuat","iQuatX","iQuatY","iQuatZ","decodeQuatXyz888","encoded","out","dotSelf","tempNormalizedQuaternion","tempAxis","qnorm","theta","xyz_norm","axis","p_x","p_y","tmp","u_f","v_f","quantU","quantV","angleInt","f_x","f_y","f_z","halfTheta","w","encodeQuatEulerXyz888","qNorm","sinr_cosp","cosr_cosp","roll","sinp","pitch","siny_cosp","cosy_cosp","yaw","normRoll","normPitch","normYaw","rollQ","pitchQ","decodeQuatEulerXyz888","yawQ","cr","sr","cp","sp","cy","sy","qx","qy","qz","qw","qlen","qnx","qny","qnz","qnw","axisX","axisY","axisZ","axisLen","packSint8Bytes","b0","b1","b3","clampedB0","clampedB1","clampedB2","clampedB3","encodeSh1Rgb","sh1Array","sh1Rgb","sh1Scale","base","bitStart","bitEnd","wordStart","bitOffset","firstWord","secondWord","encodeSh2Rgb","sh2Array","sh2Rgb","sh2Scale","encodeSh3Rgb","sh3Array","sh3Rgb","sh3Scale","encodeExtRgb","ar","ag","ab","maxAbs","biasedBase","divisor","expSigns","decodeExtRgb","color","encodeExtSh1Rgb","k","k3","encodeExtSh12Rgb","k5","encodeExt3Rgb","sh3ArrayA","sh3ArrayB","decompressPartialGzip","fileBytes","numBytes","chunks","totalBytes","gunzip","allBytes","offset","CHUNK_SIZE","GunzipReader","chunkBytes","ds","decompressionStream","readerDone","outOffset","OldSplatWorker","BundledWorker","event","id","promise","resolve","reject","error","handler","maxWorkers","numWorkers","freeWorkers","workerQueue","allocWorker","worker","freeWorker","waiter","withWorker","callback","_SplatWorker","status","queue","messages","message","SplatWorker","NewSplatWorkerPool","workerPool","Gsplat","CovSplat","TPackedSplats","TExtSplats","TCovSplats","numPackedSplats","NumPackedSplats","readPackedSplat","ReadPackedSplat","readPackedSplatRange","ReadPackedSplatRange","numExtSplats","extSplats","NumExtSplats","readExtSplat","ReadExtSplat","numCovSplats","covsplats","NumCovSplats","readCovSplat","covSplats","ReadCovSplat","gsplatToCovSplat","gsplat","GsplatToCovSplat","splitGsplat","SplitGsplat","combineGsplat","flags","center","scales","quaternion","rgba","rgb","CombineGsplat","gsplatNormal","GsplatNormal","transformGsplat","scale","rotate","translate","recolor","TransformGsplat","splatTexCoord","SplatTexCoord","pagedSplatTexCoord","PagedSplatTexCoord","defineGsplat","defineCovSplat","definePackedSplats","defineReadPackedArray","defineExtSplats","defineReadExtArrays","defineReadCovArrays","covsplat","active","outGsplat","r2","defineGsplatNormal","splitCovSplat","SplitCovSplat","combineCovSplat","CombineCovSplat","outCovSplat","coord","outputPackedSplat","rgbMinMaxLnScaleMinMax","OutputPackedSplat","outputCovSplat","OutputCovSplat","outputExtendedSplat","OutputExtendedSplat","outputExtCovSplat","OutputExtCovSplat","outputSplatDepth","viewCenter","viewDir","sortRadial","OutputSplatDepth","outputCovSplatDepth","OutputCovSplatDepth","outputRgba8","rgba8","OutputRgba8","uniform","DynoUniform","dynoBool","DynoBool","dynoUint","DynoUint","dynoInt","DynoInt","dynoFloat","DynoFloat","dynoBvec2","DynoBvec2","dynoUvec2","DynoUvec2","dynoIvec2","DynoIvec2","dynoVec2","DynoVec2","dynoBvec3","DynoBvec3","dynoUvec3","DynoUvec3","dynoIvec3","DynoIvec3","dynoVec3","DynoVec3","dynoBvec4","DynoBvec4","dynoUvec4","DynoUvec4","dynoIvec4","DynoIvec4","dynoVec4","DynoVec4","dynoMat2","DynoMat2","dynoMat2x2","DynoMat2x2","dynoMat2x3","DynoMat2x3","dynoMat2x4","DynoMat2x4","dynoMat3","DynoMat3","dynoMat3x2","DynoMat3x2","dynoMat3x3","DynoMat3x3","dynoMat3x4","DynoMat3x4","dynoMat4","DynoMat4","dynoMat4x2","DynoMat4x2","dynoMat4x3","DynoMat4x3","dynoMat4x4","DynoMat4x4","dynoUsampler2D","DynoUsampler2D","dynoIsampler2D","DynoIsampler2D","dynoSampler2D","DynoSampler2D","dynoUsampler2DArray","DynoUsampler2DArray","dynoIsampler2DArray","DynoIsampler2DArray","dynoSampler2DArray","DynoSampler2DArray","dynoUsampler3D","DynoUsampler3D","dynoIsampler3D","DynoIsampler3D","dynoSampler3D","DynoSampler3D","dynoUsamplerCube","DynoUsamplerCube","dynoIsamplerCube","DynoIsamplerCube","dynoSamplerCube","DynoSamplerCube","dynoSampler2DShadow","DynoSampler2DShadow","dynoSampler2DArrayShadow","DynoSampler2DArrayShadow","dynoSamplerCubeShadow","DynoSamplerCubeShadow","allGlobals","DynoProgram","graph","template","consoleLog","getMaterial","updater","DynoProgramTemplate","programMaterial","program","material","addOutputType","operation","subOutputType","mulOutputType","divOutputType","imodOutputType","modOutputType","negOutputType","absOutputType","signOutputType","floorOutputType","ceilOutputType","truncOutputType","roundOutputType","fractOutputType","powOutputType","expOutputType","exp2OutputType","logOutputType","log2OutputType","sqrOutputType","sqrtOutputType","inversesqrtOutputType","minOutputType","maxOutputType","clampOutputType","_c","mixOutputType","stepOutputType","smoothstepOutputType","isNanOutputType","isInfOutputType","Add","sub","Sub","mul","Mul","div","Div","imod","IMod","mod","Mod","modf","Modf","neg","Neg","abs","Abs","Sign","floor","Floor","ceil","Ceil","trunc","Trunc","round","Round","fract","Fract","pow","Pow","Exp","exp2","Exp2","log","Log","log2","Log2","sqr","Sqr","sqrt","Sqrt","inversesqrt","InverseSqrt","min","Min","Max","clamp","Clamp","mix","Mix","edge","Step","smoothstep","edge0","edge1","Smoothstep","isNan","IsNan","isInf","IsInf","and","And","or","Or","xor","Xor","not","Not","shr","Shr","shl","Shl","lessThan","LessThan","lessThanEqual","LessThanEqual","greaterThan","GreaterThan","greaterThanEqual","GreaterThanEqual","equal","Equal","notEqual","NotEqual","any","Any","all","All","select","cond","Select","compXor","CompXor","aType","bType","compareOutputType","equalOutputType","notEqualOutputType","cType","operator","compXorOutputType","operands","bool","Bool","int","Int","uint","Uint","float","Float","bvec2","BVec2","bvec3","BVec3","bvec4","BVec4","ivec2","IVec2","ivec3","IVec3","ivec4","IVec4","uvec2","UVec2","uvec3","UVec3","uvec4","UVec4","vec2","Vec2","vec3","Vec3","vec4","Vec4","mat2","Mat2","mat3","Mat3","mat4","Mat4","floatBitsToInt","FloatBitsToInt","FloatBitsToUint","intBitsToFloat","IntBitsToFloat","UintBitsToFloat","packSnorm2x16","PackSnorm2x16","unpackSnorm2x16","UnpackSnorm2x16","packUnorm2x16","PackUnorm2x16","unpackUnorm2x16","UnpackUnorm2x16","packHalf2x16","PackHalf2x16","unpackHalf2x16","UnpackHalf2x16","uintToRgba8","UintToRgba8","SimpleCast","length","Length","Distance","dot","Dot","cross","Cross","Normalize","faceforward","FaceForward","reflectVec","incident","normal","ReflectVec","refractVec","eta","RefractVec","split","vector","Split","combine","vectorType","Combine","projectH","ProjectH","extendVec","ExtendVec","swizzle","Swizzle","compMult","CompMult","outer","Outer","transpose","Transpose","determinant","Determinant","inverse","Inverse","projectHOutputType","extendVecOutputType","outerOutputType","transposeOutputType","splitOutTypes","vType","elType","dim","swizzleOutputType","remapIndex","from","to","DynoRemapIndex","pcgMix","PcgMix","pcgNext","state","PcgNext","pcgHash","PcgHash","hash","Hash","hash2","Hash2","hash3","Hash3","hash4","Hash4","hashFloat","HashFloat","hashVec2","HashVec2","hashVec3","HashVec3","hashVec4","HashVec4","normalizedDepth","zNear","zFar","NormalizedDepth","debugColorHue","DebugColorHue","toUint","tempType","toUvec","word","words","transformPos","TransformPosition","transformDir","dir","TransformDir","transformQuat","TransformQuaternion","dynoIf","dynoSwitch","dynoFor","comment","arrayIndex","arrayLength","textureSize","texture","lod","TextureSize","bias","Texture","texelFetch","TexelFetch","textureType","textureSizeType","textureCoordType","textureReturnType","radians","degrees","Radians","Degrees","sin","Sin","cos","Cos","tan","Tan","asin","Asin","acos","Acos","atan","Atan","atan2","Atan2","sinh","Sinh","cosh","Cosh","tanh","Tanh","asinh","Asinh","acosh","Acosh","atanh","Atanh","_ExtSplats","DynoExtSplats","url","fileType","fileName","stream","streamLength","nonLod","lodAbove","loader","SplatLoader","maybePromise","maxSh","viewOrigin","splatCenter","sh1Texture","sh2Texture","sh3TextureA","sh3TextureB","evaluateExtSH","sh1","newSh1","newUint32ArrayTexture","sh2","newSh2","sh3a","newSh3","sh3b","newSh3b","targetSize","currentSize","newArray0","newArray1","unpacked","indices","pageColoring","newSplats","splat","hue","rgbaArray","quality","lodBase","extra","decoded","lodSplats","emptyArray","ExtSplats","defineEvaluateExtSH1","defineEvaluateExtSH12","defineEvaluateExtSH3","numSh","format","internalFormat","decode_rad_header","bytes","ret","wasm","takeFromExternrefTable0","get_raycast_buffer","get_raycast_buffer2","raycast_ext_buffers","origin_x","origin_y","origin_z","dir_x","dir_y","dir_z","min_opacity","near","far","raycast_packed_buffer","ln_scale_min","ln_scale_max","lod_opacity","__wbg_get_imports","arg0","arg1","getStringFromWasm0","deferred0_0","deferred0_1","arg2","getArrayU8FromWasm0","getArrayU32FromWasm0","handleError","getArrayF32FromWasm0","ptr1","passStringToWasm0","len1","WASM_VECTOR_LEN","getDataViewMemory0","table","addToExternrefTable0","idx","ptr","len","getFloat32ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","malloc","realloc","cachedTextEncoder","mem","code","view","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","__wbg_init","module_or_path","computeUvec4_default","computeUvec4_Vec4_default","computeUvec4x2_Vec4_default","computeVec4_default","oldSplatFragment_default","oldSplatVertex_default","splatDefines_default","splatFragment_default","splatVertex_default","shaders","getShaders","splatDefines","oldSplatVertex","oldSplatFragment","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","_Readback","renderer","buffer","newBuffer","ctor","capacity","reader","layerSize","baseIndex","layer","layerBase","layerYEnd","readback","roundedCount","readbackUint8","promises","readbackSize","subReadback","renderState","FullScreenQuad","Readback","_RgbaArray","TRgbaArray","defineRgbaArray","splatCount","dynoSplats","dynoBase","dynoCount","DynoPackedSplats","RgbaArray","readRgbaArray","SplatEditSdfType","sdfTypeToNumber","SplatEditRgbaBlendMode","rgbaBlendModeToNumber","mode","SplatEditSdf","invert","displace","radius","_SplatEdit","rgbaBlendMode","sdfSmooth","softEdge","sdfs","sdf","SplatEdit","SplatEdits","maxSdfs","maxEdits","SdfArray","defineSdfArray","defineEdit","dynoUpdated","updated","tempFloat32","editIndex","sdfFirst","sdfCount","sdfIndex","sdfType","sizes","values","nValues","vBase","edits","total","edit","sdfUpdated","applyGsplatRgbaDisplaceEdits","applyCovSplatRgbaDisplaceEdits","sdfArray","numEdits","rgbaDisplaceEdits","SplatModifier","modifier","generator","modified","SplatTransformer","transform","newScale","object","CovSplatTransformer","rebased","basis","SplatGenerator","covGenerator","constructed","_SplatAccumulator","splatCounts","mapping","rounded","target2","target3","theGenerator","_outputs","roots","output","centerSubView","halfAlpha","outputDepth","nextBase","layerYStart","scene","time","camera","renderSize","previous","lodInstances","allGenerators","globalEditsSet","ancestor","SplatMesh","globalEdits","visibleGenerators","baseCounts","previousMappings","mappings","previousNode","version","mappingVersion","splatsUpdated","mappingUpdated","textures","array","otherMapping","other","SplatAccumulator","SplatGeometry","_SparkRenderer","premultipliedAlpha","geometry","defaultPages","accumulatorOptions","doubleBuffer","origSuperXY","origTargetOptions","superXY","superWidth","superHeight","targetOptions","accumulators","accumulator","instances","spark","frame","isNewFrame","baseLayer","typedCamera","accumToWorld","accumToCamera","preUpdate","useCamera","autoUpdate","viewChanged","next","doUpdate","needsUpdate","now","nextSortTime","current","rows","orderingMaxSplats","gl","glTexture","orderingTexture","defaultSplatCount","pixelScaleLimit","viewHeight","viewWidth","pxY","pxX","viewPos","viewQuat","distanceRamp","quatRamp","lodMeshes","hasPaged","mesh","splats","record","SplatPager","lodId","lodInitQueue","updates","page","lodTree","lodUpdates","deltaPred","deltaTime","PackedSplats","uuidToMesh","cameraToWorld","viewToObject","traverseStart","keyIndices","pixelLimit","totalLodSplats","pagedMeshes","meshPosition","PagedSplats","uuid","countIndices","oldest","target","previousTarget","byteSize","superPixels","subWidth","subHeight","subSize","targetPixels","super2","row","superCol","superRow","sx","superIndex","pixelIndex","worldCenter","size","hideObjects","filter","cubeCamera","objectVisibility","tempCamera","visible","cubeTexture","envMap","level","SparkRenderer","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","getSplatFileType","getSplatFileTypeFromPath","wasmInitialized","metaStart","tryBytes","fetchRange","decodeBytes","meta","chunksStart","filename","resolvedRoot","chunkUrl","request","response","sh3Codes","_d","_e","indicesTexture","getGlTexture","splatIndex","packedSplatArray","extPackedSplatArray","_SplatPager","dyno.DynoUsampler2DArray","dyno.dynoBlock","dyno.Dyno","dyno.unindentLines","dyno.Gsplat","lodOpacity","dyno.defineGsplat","shMax","dyno.splitGsplat","dyno.normalize","dyno.sub","evaluatePackedSH","dyno.add","dyno.combineGsplat","pageLru","packedArray","extArray","pageBase","sh3","needed","overflow","numPages","backoff","extraPages","splatsChunk","fetched","upload","init_wasm","requestHeader","withCredentials","EmptySplatSource","_SplatMesh","context","rootUrl","emptyLodIndices","constructSplats","onProgress","splatEncoding","packedSplatsOptions","centers_only","minVec","maxVec","corners","signs","_index","_opacity","_color","maybeLookupIndex","maybeInjectSplatRgba","recolorRgba","covTransform","covViewToObject","viewToWorld","lodIndices","worldToView","viewToObjectMatrix","newRecolor","editsSdfs","editResult","raycaster","intersects","paged","ext","ray","worldToMesh","worldToMeshRot","origin","direction","bufferSize","intersections","_f","buffer2","ext1","_o","_n","_q","_p","_r","ext2","_t","_s","_v","_u","_w","index4","newIntersections","packed","_h","_g","_j","_i","_k","_l","_m","point","additional","enableLod","showLodPage","PLY_PROPERTY_TYPES","_PlyReader","decoder","controller","headerTerminator","done","endHeader","headerLen","curElement","lineIndex","fields","elementCallback","elementName","element","properties","createEmptyItem","parseFn","createParseFn","splatCallback","shCallback","isSuperSplat","ssChunks","sh1Props","sh2Props","sh3Props","prepareSh","num_f_rest","NUM_SH_TO_NUM_F_REST","ssShCallback","sh","initSuperSplat","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","min_r","min_g","min_b","max_r","max_g","max_b","decodeSuperSplat","getNumSh","packed_position","packed_rotation","packed_scale","packed_color","SQRT2","r0","r1","rr","rOrder","scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","f_dc_0","f_dc_1","f_dc_2","red","green","blue","alpha","hasScales","hasRots","alphaDiv","FIELD_SCALE","redDiv","greenDiv","blueDiv","op","SH_C0","parsers","rgbaOffset","isVertex","propertyName","property","PARSE_FIELD","FIELD_BYTES","component","SET_FIELD","parser","PlyReader","littleEndian","NUM_F_REST_TO_NUM_SH","F_REST_REGEX","safeToCompile","createCompiledParserFn","createDynamicParserFn","UNSAFE_EVAL_ALLOWED","PROPERTY_NAME_REGEX","parserSrc","fRestMatch","fRestIndex","list","currentOffset","parserIndex","Loader","manager","FileLoader","onLoad","onError","resolvedURL","readStream","splatsLod","splatsNonLod","onStatus","loaded","basedUrl","initExtSplats","initSplats","magic","header","tryPcSogsZip","getFileExtension","pathOrUrl","noTrailing","lastSlash","lastDot","extension","isPcSogs","tryPcSogs","text","json","isVersion2","metaFilename","unzipped","unpackSplats","extraFiles","splatFileType","ply","SplatData","targetSplats","newCenters","newScales","newQuaternions","newOpacities","newColors","_PackedSplats","sh3Texture","wordsPerSplat","defineEvalPackedSH1","defineEvalPackedSH2","defineEvalPackedSH3","_OldSparkViewpoint","forceOrigin","originToWorld","newCam","needsSort","displayed","latestView","doubleSortReader","sort32Reader","dynoSortRadial","dynoOrigin","dynoDirection","dynoDepthBias","dynoSort360","sort32","halfMaxSplats","worldToOrigin","viewToOrigin","sortReader","rpcName","oldOrdering","sortParams","index2","gsplat0","metric0","computeSortMetric","gsplat1","metric1","combined","metric","OldSparkViewpoint","defineComputeSortMetric","sortOrigin","sortDirection","sortDepthBias","sort360","OldSplatAccumulator","generators","forceUpdate","map","modGenerator","otherNode","otherBase","otherCount","MAX_ACCUMULATORS","_OldSparkRenderer","EMPTY_GEOMETRY","viewpoint","cameras","averageOriginToWorlds","enable","multiply","mid","worldToCamera","activeMapping","visibleGenHash","originUpdate","originChanged","genOrder","gIndex","lastGen","_version","_seq","newGenerators","hasCorrespondence","OldSparkRenderer","originToWorlds","matrix","decodeAntiSplat","initNumSplats","f32","i8","KSPLAT_COMPRESSION","KSPLAT_SH_DEGREE_TO_COMPONENTS","decodeKsplat","headerOffset","versionMajor","versionMinor","maxSectionCount","compressionLevel","minSphericalHarmonicsCoeff","maxSphericalHarmonicsCoeff","sectionBase","section","getSh","splatOffset","sphericalHarmonicsOffsetBytes","sectionSplatCount","sectionMaxSplatCount","bucketSize","bucketCount","bucketBlockSize","bucketStorageSizeBytes","compressionScaleRange","fullBucketCount","fullBucketSplats","partiallyFilledBucketCount","bucketsMetaDataSizeBytes","bucketsStorageSizeBytes","sphericalHarmonicsDegree","shComponents","bytesPerCenter","bytesPerScale","bytesPerRotation","bytesPerColor","bytesPerSphericalHarmonicsComponent","scaleOffsetBytes","rotationOffsetBytes","colorOffsetBytes","bytesPerSplat","splatDataStorageSizeBytes","storageSizeBytes","sh1Index","sh2Index","sh3Index","compressionScaleFactor","bucketsBase","dataBase","bucketArray","partiallyFilledBucketLengths","partialBucketIndex","partialBucketBase","bucketIndex","bucketLength","SpzReader","centerCallback","alphaCallback","rgbCallback","scalesCallback","quatCallback","childCounts","childStarts","centerBytes","centerUint16","i3","fixed","i9","rgbBytes","scalesBytes","maxValue","quatBytes","combinedValues","valueMask","largestIndex","remainingValues","sumSquares","square","shBytes","SH_DEGREE_TO_VECS","i2","SPZ_MAGIC","SPZ_VERSION","FLAG_ANTIALIASED","SpzWriter","shDegree","fractionalBits","flagAntiAlias","splatSize","xRounded","xInt","yRounded","yInt","zRounded","zInt","quat","iLargest","negate","comp","negbit","mag","quantized","shVecs","base1","base2","base3","compressed","transcodeSpz","clipXyz","opacityThreshold","transformScales","transformQuaternion","withinClip","clip","withinOpacity","lastIndex","spz","centers","SplatSkinningMode","_SplatSkinning","GsplatSkinning","defineGsplatSkinning","applyGsplatSkinning","applyCovSplatDQSkinning","applyCovSplatLBSkinning","boneIndex","i16","boneIndices","weights","SplatSkinning","defineApplyGsplatSkinning","skinning","defineApplyCovSplatDQSkinning","defineApplyCovSplatLBSkinning","constructGrid","extents","stepSize","pointRadius","pointShadowScale","pointColor","constructAxes","axisRadius","axisShadowScale","origins","constructSpherePoints","maxDepth","pointThickness","pointsHash","addPoint","recurse","p0","p1","p2","p01","p12","p20","points","textSplats","font","fontSize","dotRadius","textAlign","lineHeight","objectScale","metrics","fontHeight","minLeft","maxRight","minTop","maxBottom","originLeft","originTop","imageSplats","subXY","forEachSplat","img","destWidth","destHeight","push","maybeOpacity","staticBox","box","cells","dotScale","dynoX","dynoY","dynoTime","cellX","cellY","cellZ","cell","intTime","random","transformer","DEFAULT_SNOW","DEFAULT_RAIN","snowBox","minY","density","anisoScale","minScale","maxScale","fallDirection","fallVelocity","wanderScale","wanderVariance","color1","color2","onFrame","volume","dynoMinScale","dynoMaxScale","dynoAnisoScale","dynoFallDirection","dynoFallVelocity","dynoWanderScale","dynoWanderVariance","dynoColor1","dynoColor2","dynoOpacity","globalOffset","dynoMin","dynoMax","dynoMinY","minMax","snow","randomW","intensity","random2","perturb","timeOffset","modulo","centerY","fallDelta","makeNormalColorModifier","splatToView","viewGsplat","viewNormal","splatDot","sameDir","setWorldNormalColor","makeDepthColorModifier","minDepth","reverse","setDepthColor","dynoMinDepth","dynoMaxDepth","dynoReverse","DEFAULT_CONTROLLER_MOVE_SPEED","DEFAULT_CONTROLLER_ROTATE_SPEED","DEFAULT_CONTROLLER_ROLL_SPEED","DEFAULT_CONTROLLER_FAST_MULTIPLIER","DEFAULT_CONTROLLER_SLOW_MULTIPLIER","DEFAULT_CONTROLLER_MOVE_HEADING","DEFAULT_CONTROLLER_GETMOVE","gamepads","sparkXr","DEFAULT_CONTROLLER_GETROTATE","DEFAULT_CONTROLLER_GETFAST","DEFAULT_CONTROLLER_GETSLOW","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","XR_HEADSET_HINTS","isLikelyMobilePhone","ua","uaData","_SparkXr","XrHand","button","modes","supported","referenceSpaceType","frameBufferScaleFactor","optionalFeatures","requiredFeatures","session","onSessionEnded","visibilityChanged","lastVisibilityState","exitHtml","exitText","enterHtml","enterText","cameraFrame","xrGamepads","gamepad","eulers","pivot","move","moveSpeed","SCRATCH_EULER","SCRATCH_QUAT_A","xrFrame","xrSession","referenceSpace","hand","inputSource","xrHand","jointId","jointSpace","jointPose","orientation","JointSplats","joints","hands","SparkXr","round4","SCRATCH_QUAT_B","lerpHandsSnapshots","snapshots","first","last","floorIndex","findSnapshotFloorIndex","cloneSnapshot","span","factor","interpolateSnapshots","maxHands","handIndex","lerpHandSnapshot","snapshot","cloneHandSnapshot","joint","low","high","fromHand","toHand","lerpJointSnapshot","fromJoint","toJoint","clone","cloneJointSnapshot","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","TOUCH_BIAS","XrHands","xr","Vector3","Quaternion","Color","CYCLE","handedness","segment","segmentSplats","lastSegment","jointA","jointB","radiusA","radiusB","handA","handB","hA","hB","jA","jB","HandMovement","xrHands","control","moveInertia","rotateInertia","grip","lastMid","delta","angle","lastAngle","closestAngle","rotateVelocity","blend","negPivot","Matrix4","DEFAULT_MOVEMENT_SPEED","DEFAULT_ROLL_SPEED","DEFAULT_ROTATE_SPEED","DEFAULT_SLIDE_SPEED","DEFAULT_SCROLL_SPEED","DEFAULT_STICK_THRESHOLD","DEFAULT_FPS_ROTATE_SPEED","DEFAULT_POINTER_ROLL_SCALE","DEFAULT_PRESS_MOVE_DELAY_MS","DEFAULT_PRESS_MOVE_ACCEL_MS","DUAL_PRESS_MS","DOUBLE_PRESS_LIMIT_MS","DOUBLE_PRESS_DISTANCE","MOVEMENT_THRESHOLD","WASD_KEYCODE_MOVE","ARROW_KEYCODE_MOVE","ARROW_KEYCODE_ROTATE","SparkControls","FpsMovement","PointerControls","rollSpeed","stickThreshold","rotateSpeed","keycodeMoveMapping","keycodeRotateMapping","gamepadMapping","capsMultiplier","shiftMultiplier","ctrlMultiplier","sticks","gamepadButtons","xrSources","stick","keycode","rot","moveVector","speedMultiplier","slideSpeed","scrollSpeed","swapRotateSlide","reverseRotate","reverseSlide","reverseSwipe","reverseScroll","pointerRollScale","doublePress","pressMoveDelayMs","pressMoveAccelMs","pressMoveSpeed","doublePressMoveSpeed","triplePressMoveSpeed","pressMoveCenter","initial","isRotate","pointerId","timeStamp","intervalMs","lastDistance","lastIntervalMs","pointerUp","lastUp","rect","motion","totalMotion","slide","deltaDir","deltaDist","orthoDir","motionDir","motionOrtho","midpoint","midpointDir","theCamera","ndcMidpoint","pinchOut","angles","ndcPoint","scroll","DISK_PORTAL_FRAGMENT_SHADER","SparkPortals","sparkOpts","pair","portal","twoSided","inverseCamera","portalInCamera","portalQuat","outCenter","outNormal","prevCam","currCam","beforeMatrix","afterMatrix","startPlaneDist","endPlaneDist","denom","earliestT","crossedPair","crossedEntry","entryT","exitT","bestScore","bestPair","bestIsEntry","entryDist","entryScore","exitDist","exitScore","primary","primaryIsEntry","primaryPortal","otherPortal","aspect"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","x_google_ignoreList":[1]} \ No newline at end of file +{"version":3,"file":"spark.cjs.min.js","sources":["../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../node_modules/fflate/esm/browser.js","../src/utils.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../rust/spark-rs/pkg/spark_rs.js","../virtual:decode-64","../src/wasm.ts","../src/SplatWorker.ts","../src/PackedSplats.ts","../src/SplatLoader.ts","../src/ExtSplats.ts","../src/RgbaArray.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/ply.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n\nexport function uploadU32DataTextureRows(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n width: number,\n rows: number,\n data: Uint32Array,\n) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props?.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n // Note: instead of saving and restoring the pixelStorei parameters\n // renderer.state.pixelStorei can be used with Three.js >= r184\n const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);\n const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n width,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n data,\n );\n renderer.state.unbindTexture();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply);\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","function b64ToUint6(nChr) {\n return nChr > 64 && nChr < 91\n ? nChr - 65\n : nChr > 96 && nChr < 123\n ? nChr - 71\n : nChr > 47 && nChr < 58\n ? nChr + 4\n : nChr === 43\n ? 62\n : nChr === 47\n ? 63\n : 0\n}\n\nfunction base64ToUint8(sBase64, nBlocksSize) {\n const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, \"\")\n const nInLen = sB64Enc.length\n const nOutLen = nBlocksSize\n ? Math.ceil(((nInLen * 3 + 1) >> 2) / nBlocksSize) * nBlocksSize\n : (nInLen * 3 + 1) >> 2\n const taBytes = new Uint8Array(nOutLen)\n\n let nMod3\n let nMod4\n let nUint24 = 0\n let nOutIdx = 0\n for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4))\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n nMod3 = 0\n while (nMod3 < 3 && nOutIdx < nOutLen) {\n taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255\n nMod3++\n nOutIdx++\n }\n nUint24 = 0\n }\n }\n\n return taBytes\n}\nfunction toUint8(b64) {\n if (typeof Uint8Array.fromBase64 === \"function\") return Uint8Array.fromBase64(b64)\n let bin = atob(b64)\n let len = bin.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = bin.charCodeAt(i)\n }\n return bytes\n}\n\nconst decode64 = typeof atob === \"function\" ? toUint8 : base64ToUint8\n\nexport default decode64\n","import init_wasm from \"spark-rs\";\nimport WASM from \"spark-rs/spark_rs_bg.wasm?arraybuffer&base64\";\n\nexport const WASM_MODULE = WebAssembly.compile(WASM);\n\n// Flag indicating if the spark-rs project has been initialized\nlet initialized = false;\n\n/**\n * Promise for module instantiation, ensuring calls to\n * imports from the spark-rs project can be used.\n */\nexport const initialization = init_wasm({ module_or_path: WASM_MODULE }).then(\n (_) => {\n initialized = true;\n },\n);\n\n/**\n * Indicates if the wasm module instantiation has completed or not.\n */\nexport function isInitialized() {\n return initialized;\n}\n","import { getTransferable } from \"./utils\";\nimport { WASM_MODULE } from \"./wasm\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n WASM_MODULE.then((module) => {\n this.worker.postMessage({ name: \"init-wasm\", module });\n });\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\n\nexport const randomColourFromID = unindent(`\nprecision highp float;\nprecision highp int;\n\n// Blazing fast HSL to RGB conversion\nvec3 hsl2rgb(vec3 c) {\n vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0));\n}\n\nvec4 getDeterministicColor(uint id) {\n float hue = fract(float(id) * 0.618033988749895);\n vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6));\n return vec4(rgb, 1.0);\n}\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH, randomColourFromID } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { type DynoUsampler2DArray, pagedSplatTexCoord } from \"./dyno\";\nimport {\n decodeExtSplat,\n getTextureSize,\n unpackSplat,\n uploadU32DataTextureRows,\n} from \"./utils\";\nimport * as wasm from \"./wasm\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nconst PAGE_WIDTH = 256;\nconst PAGE_HEIGHT = 256;\nconst PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; // 65536\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasm.initialization;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult }; \n const lodSplats = result.lodSplats;\n\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n uploadU32DataTextureRows(\n renderer,\n indicesTexture,\n 4096,\n rows,\n textureIndices,\n );\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\ninterface PageUpload {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n shArrays: Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n}\n\nexport class SplatPager {\n readonly renderer: THREE.WebGLRenderer;\n\n readonly extSplats: boolean;\n readonly maxPages: number;\n readonly maxSplats: number;\n readonly pageSplats: number;\n\n readonly maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: PageUpload[];\n readyUploads: PageUpload[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n highlightLabel: dyno.DynoInt<\"highlightLabel\">;\n lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>;\n labelTexture: dyno.DynoUsampler2DArray<\"label\", THREE.DataArrayTexture>;\n instanceTexture: dyno.DynoUsampler2DArray<\"instance\", THREE.DataArrayTexture>;\n labelLookupModifier: dyno.Dyno<\n {\n gsplat: typeof dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray', \n instance: 'usampler2DArray', \n highlightLabel: 'int'\n },\n { gsplat: typeof dyno.Gsplat }\n >\n\n readonly shTextures: [\n dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>,\n ];\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = PAGE_SPLATS;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS);\n this.maxSplats = this.maxPages * PAGE_SPLATS;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(4),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(4)\n : SplatPager.emptyExtTexture,\n });\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n this.shTextures = emptyShTextures.map(\n (texture) =>\n new dyno.DynoUsampler2DArray({\n value: texture,\n }),\n ) as typeof this.shTextures;\n\n this.highlightLabel = new dyno.DynoInt({ key: 'highlightLabel', value: -1 }); \n this.lookUpTexture = new dyno.DynoUsampler2D({\n value: new THREE.DataTexture(\n new Uint32Array(256), \n 256, 1,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n )\n });\n this.lookUpTexture.value.image.data.fill(1);\n this.lookUpTexture.value.needsUpdate = true;\n this.renderer.initTexture(this.lookUpTexture.value);\n\n this.labelTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.instanceTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.labelLookupModifier = new dyno.Dyno({\n inTypes: { \n gsplat: dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray',\n instance: 'usampler2DArray',\n highlightLabel: 'int'\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: { \n lookup: this.lookUpTexture, \n label: this.labelTexture,\n instance: this.instanceTexture,\n highlightLabel: this.highlightLabel\n },\n globals: () => [\n randomColourFromID,\n dyno.defineGsplat],\n statements: ({ inputs, outputs }) => \n dyno.unindentLines(`\n Gsplat g = ${inputs.gsplat};\n \n ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16);\n uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0);\n uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r;\n if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; }\n\n if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) {\n uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0);\n vec4 splatColour = getDeterministicColor(instanceTexel.r);\n g.rgba = mix(g.rgba, splatColour, 0.6);\n }\n\n ${outputs.gsplat} = g;\n `), \n }); //DynoUniform\n\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3Texture: this.shTextures[2],\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3TextureA: this.shTextures[2],\n sh3TextureB: this.shTextures[3],\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (this.labelTexture.value !== SplatPager.emptyLabelTexture) {\n this.labelTexture.value.dispose();\n this.labelTexture.value.source.data = null;\n }\n if (this.instanceTexture.value !== SplatPager.emptyLabelTexture) {\n this.instanceTexture.value.dispose();\n this.instanceTexture.value.source.data = null;\n }\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < emptyShTextures.length; i++) {\n const texture = this.shTextures[i].value;\n if (texture !== emptyShTextures[i]) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n\n\n public updateLabelLookup(categories: Set) {\n const array = this.lookUpTexture.value.image.data;\n array.fill(0);\n categories.forEach(id => {\n if (id >= 0 && id < 256) array[id] = 1;\n });\n this.lookUpTexture.value.needsUpdate = true;\n }\n\n private newUintArrayTex(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n private ensureLabelTextures() {\n if (this.labelTexture.value === SplatPager.emptyLabelTexture) {\n this.labelTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n public updateLabelHighlight(id: number) {\n this.highlightLabel.value = id\n }\n\n private ensureInstanceTextures() {\n if (this.instanceTexture.value === SplatPager.emptyLabelTexture) {\n this.instanceTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < this.curSh; i++) {\n if (this.shTextures[i].value === emptyShTextures[i]) {\n const elementsPerSplat =\n this.shTextures[i].value === SplatPager.emptyUint32x2 ? 2 : 4;\n this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat);\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n removeSplats(splats: PagedSplats) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return;\n }\n\n const freedPages = new Set();\n\n while (chunks.length > 0) {\n const chunk = chunks.pop();\n if (chunk) {\n const { page } = chunk;\n this.pageToSplatsChunk[page] = undefined;\n freedPages.add(page);\n this.pageFreelist.push(page);\n this.pageLru.delete(chunk);\n }\n }\n this.splatsChunkToPage.delete(splats);\n this.freeablePages = this.freeablePages.filter(\n (page) => !freedPages.has(page),\n );\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n shArrays: Array,\n extArray?: Uint32Array,\n labels?: Uint32Array,\n instances?: Uint32Array\n ) {\n const pageBase = page * PAGE_SPLATS;\n\n uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray);\n\n if (extArray) {\n uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray);\n }\n\n // In case of extSplats there can be 4 shArrays for 3 sh degrees\n const numSh = Math.min(shArrays.length, 3);\n this.ensureShTextures(numSh);\n\n if ( labels !== undefined ) {\n this.ensureLabelTextures();\n const labels_arr = labels as Uint32Array;\n const array = this.labelTexture.value.image.data;\n array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr);\n this.labelTexture.value.addLayerUpdate(page);\n this.labelTexture.value.needsUpdate = true;\n }\n\n if ( instances !== undefined ) {\n this.ensureInstanceTextures();\n const instances_arr = instances as Uint32Array;\n const array = this.instanceTexture.value.image.data;\n array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr);\n this.instanceTexture.value.addLayerUpdate(page);\n this.instanceTexture.value.needsUpdate = true;\n }\n\n for (let i = 0; i < shArrays.length; i++) {\n const array = shArrays[i];\n const elementsPerSplat =\n this.shTextures[i].value.format === THREE.RGIntegerFormat ? 2 : 4;\n uploadTextureLayer(\n this.shTextures[i],\n page,\n pageBase * elementsPerSplat,\n array,\n );\n }\n }\n\n private newUint32ArrayTexture(\n elementsPerSplat: 2 | 4,\n ): THREE.DataArrayTexture {\n const data = new Uint32Array(\n this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat,\n );\n const texture = new THREE.DataArrayTexture(\n data,\n PAGE_WIDTH,\n PAGE_HEIGHT,\n this.maxPages,\n );\n texture.format =\n elementsPerSplat === 2 ? THREE.RGIntegerFormat : THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = elementsPerSplat === 2 ? \"RG32UI\" : \"RGBA32UI\";\n texture.needsUpdate = true;\n // Avoid initial upload of empty/null data\n texture.source.dataReady = false;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: PAGE_SPLATS,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (isExtResult(data, this.extSplats)) {\n const extArrays = data.extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3a as Uint32Array,\n data.extra.sh3b as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n extArray,\n shArrays,\n labels: extra?.labels,\n instances: extra?.instances\n });\n } else {\n const packedArray = data.packedArray;\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3 as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n shArrays,\n });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload;\n this.uploadPage(page, packedArray, shArrays, extArray, labels, instances);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptyLabelTexture = this.emptyUint32x4;\n static emptyShTextures = [\n this.emptyUint32x2,\n this.emptyUint32x4,\n this.emptyUint32x4,\n ] as const;\n static emptyExtShTextures = [\n this.emptyUint32x4,\n this.emptyUint32x4,\n this.emptyUint32x4, // SH3A\n this.emptyUint32x4, // SH3B\n ] as const;\n}\n\n// Convenience function to distinguish ExtResult and PackedResult\nfunction isExtResult(\n data: ExtResult | PackedResult,\n extSplats: boolean,\n): data is ExtResult {\n return extSplats;\n}\n\nfunction uploadTextureLayer(\n texture: DynoUsampler2DArray,\n layer: number,\n dstOffset: number,\n data: Uint32Array,\n) {\n const array = texture.value.image.data;\n array.subarray(dstOffset, dstOffset + data.length).set(data);\n\n texture.value.addLayerUpdate(layer);\n texture.value.needsUpdate = true;\n texture.value.source.dataReady = true;\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\nimport * as wasm from \"./wasm\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n \n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n public updateLabelLookup(categories: Set) {\n if (this.paged) {\n this.paged.pager?.updateLabelLookup(categories);\n }\n }\n\n public updateLabelHighlight(id: number) {\n if (this.paged) {\n this.paged.pager?.updateLabelHighlight(id);\n }\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n \n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n if (this.paged?.pager?.labelLookupModifier) {\n gsplat = this.paged?.pager?.labelLookupModifier.apply({ gsplat }).gsplat;\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !wasm.isInitialized() ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n activeCubeFace: renderer.getActiveCubeFace(),\n activeMipmapLevel: renderer.getActiveMipmapLevel(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n activeCubeFace: number;\n activeMipmapLevel: number;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(\n state.target,\n state.activeCubeFace,\n state.activeMipmapLevel,\n );\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n uploadU32DataTextureRows,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Generalized Gaussian exponent parameter. The kernel is\n * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0`\n * uses a quartic radial falloff.\n * @default 1.0\n */\n gaussianK?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n lodTraverseMode?: \"dynamic\" | \"standard\";\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n gaussianK: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n lodTraverseMode: \"dynamic\" | \"standard\";\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.gaussianK = options.gaussianK ?? 1.0;\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.lodTraverseMode = options.lodTraverseMode ?? \"standard\";\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n // Check if the provoking vertex convention should be changed\n const provokingVertexExt = this.renderer\n .getContext()\n .getExtension(\"WEBGL_provoking_vertex\");\n if (provokingVertexExt) {\n provokingVertexExt.provokingVertexWEBGL(\n provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL,\n );\n }\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Generalized Gaussian k. The radial exponent is 2 * gaussianK.\n gaussianK: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n // Determine render target\n const currentRenderTarget = renderer.getRenderTarget();\n const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget);\n if (currentRenderTarget) {\n spark.renderSize.set(\n currentRenderTarget.width,\n currentRenderTarget.height,\n );\n\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n if (\n isXRRenderTarget &&\n spark.renderSize.x === 1 &&\n spark.renderSize.y === 1\n ) {\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n spark.renderSize.x = baseLayer.framebufferWidth;\n spark.renderSize.y = baseLayer.framebufferHeight;\n }\n }\n } else {\n renderer.getDrawingBufferSize(spark.renderSize);\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.gaussianK.value = spark.gaussianK;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n\n const outputColorSpace =\n currentRenderTarget === null\n ? renderer.outputColorSpace\n : isXRRenderTarget\n ? currentRenderTarget.texture.colorSpace\n : THREE.ColorManagement.workingColorSpace;\n this.uniforms.encodeLinear.value =\n outputColorSpace !== THREE.SRGBColorSpace;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n uploadU32DataTextureRows(\n renderer,\n this.orderingTexture,\n 4096,\n rows,\n result.ordering,\n );\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n traverseMode: this.lodTraverseMode,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n if (oldest.splats instanceof PagedSplats) {\n this.pager?.removeSplats(oldest.splats);\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n\nfunction checkIsXRRenderTarget(renderTarget: THREE.RenderTarget | null) {\n return (renderTarget as unknown as Record)?.isXRRenderTarget;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["LN_SCALE_MIN","LN_SCALE_MAX","SCALE_MIN","SCALE_MAX","LN_SCALE_ZERO","SCALE_ZERO","SPLAT_TEX_WIDTH_BITS","SPLAT_TEX_HEIGHT_BITS","SPLAT_TEX_DEPTH_BITS","SPLAT_TEX_LAYER_BITS","SPLAT_TEX_WIDTH","SPLAT_TEX_HEIGHT","SPLAT_TEX_DEPTH","SPLAT_TEX_MIN_HEIGHT","SPLAT_TEX_WIDTH_MASK","SPLAT_TEX_HEIGHT_MASK","SPLAT_TEX_DEPTH_MASK","WASM_SPLAT_SORT","USE_COMPILED_PARSER_FUNCTION","SplatFileType","DEFAULT_SPLAT_ENCODING","isBoolType","type","isScalarType","isIntType","isUintType","isFloatType","isMatFloatType","isAllFloatType","isVector2Type","isVector3Type","isVector4Type","isVectorType","isMat2","isMat3","isMat4","vectorElementType","vectorDim","sameSizeVec","sameSizeUvec","sameSizeIvec","typeLiteral","numberAsInt","value","numberAsUint","numberAsFloat","valType","val","DynoValue","DynoOutput","dyno","key","DynoLiteral","literal","dynoLiteral","DynoConst","v","THREE","m","e","arg","_","i","dynoConst","literalZero","typeString","literalOne","literalNegOne","DEFAULT_INDENT","Compilation","indent","Dyno","inTypes","outTypes","inputs","update","globals","statements","generate","outputs","compile","_a","_b","result","declares","name","uniforms","global","dynoDeclare","line","DynoBlock","construct","args","blockInputs","blockOutputs","options","returned","ordering","nodeOuts","visit","node","outKey","outName","outs","input","root","steps","source","newSteps","literalOutputs","step","index","dynoBlock","count","typeStr","unindentLines","s","seenNonEmpty","lines","trimmedLine","regex","unindent","UnaryOp","a","outTypeFunc","outType","BinaryOp","b","TrinaryOp","c","Gsplat","CovSplat","TPackedSplats","TExtSplats","TCovSplats","numPackedSplats","packedSplats","NumPackedSplats","readPackedSplat","ReadPackedSplat","readPackedSplatRange","base","ReadPackedSplatRange","numExtSplats","extSplats","NumExtSplats","readExtSplat","ReadExtSplat","numCovSplats","covsplats","NumCovSplats","readCovSplat","covSplats","ReadCovSplat","gsplatToCovSplat","gsplat","GsplatToCovSplat","splitGsplat","SplitGsplat","combineGsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","CombineGsplat","gsplatNormal","GsplatNormal","transformGsplat","scale","rotate","translate","recolor","TransformGsplat","splatTexCoord","SplatTexCoord","pagedSplatTexCoord","PagedSplatTexCoord","defineGsplat","defineCovSplat","definePackedSplats","defineReadPackedArray","defineExtSplats","defineReadExtArrays","defineReadCovArrays","covsplat","active","outGsplat","defineGsplatNormal","splitCovSplat","SplitCovSplat","combineCovSplat","CombineCovSplat","outCovSplat","coord","outputPackedSplat","rgbMinMaxLnScaleMinMax","OutputPackedSplat","outputCovSplat","OutputCovSplat","outputExtendedSplat","OutputExtendedSplat","outputExtCovSplat","OutputExtCovSplat","outputSplatDepth","viewCenter","viewDir","sortRadial","OutputSplatDepth","outputCovSplatDepth","OutputCovSplatDepth","outputRgba8","rgba8","OutputRgba8","uniform","DynoUniform","dynoBool","DynoBool","dynoUint","DynoUint","dynoInt","DynoInt","dynoFloat","DynoFloat","dynoBvec2","DynoBvec2","dynoUvec2","DynoUvec2","dynoIvec2","DynoIvec2","dynoVec2","DynoVec2","dynoBvec3","DynoBvec3","dynoUvec3","DynoUvec3","dynoIvec3","DynoIvec3","dynoVec3","DynoVec3","dynoBvec4","DynoBvec4","dynoUvec4","DynoUvec4","dynoIvec4","DynoIvec4","dynoVec4","DynoVec4","dynoMat2","DynoMat2","dynoMat2x2","DynoMat2x2","dynoMat2x3","DynoMat2x3","dynoMat2x4","DynoMat2x4","dynoMat3","DynoMat3","dynoMat3x2","DynoMat3x2","dynoMat3x3","DynoMat3x3","dynoMat3x4","DynoMat3x4","dynoMat4","DynoMat4","dynoMat4x2","DynoMat4x2","dynoMat4x3","DynoMat4x3","dynoMat4x4","DynoMat4x4","dynoUsampler2D","DynoUsampler2D","dynoIsampler2D","DynoIsampler2D","dynoSampler2D","DynoSampler2D","dynoUsampler2DArray","DynoUsampler2DArray","dynoIsampler2DArray","DynoIsampler2DArray","dynoSampler2DArray","DynoSampler2DArray","dynoUsampler3D","DynoUsampler3D","dynoIsampler3D","DynoIsampler3D","dynoSampler3D","DynoSampler3D","dynoUsamplerCube","DynoUsamplerCube","dynoIsamplerCube","DynoIsamplerCube","dynoSamplerCube","DynoSamplerCube","dynoSampler2DShadow","DynoSampler2DShadow","dynoSampler2DArrayShadow","DynoSampler2DArrayShadow","dynoSamplerCubeShadow","DynoSamplerCubeShadow","allGlobals","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","j","fl","revfl","fd","rev","hMap","cd","mb","l","le","co","rvb","sv","r_1","flt","fdt","flrm","fdrm","max","bits","d","p","o","bits16","shft","slc","ec","err","ind","msg","nt","inflt","dat","st","buf","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","n","lt","dt","t","lms","dms","lpos","sym","add","dsym","end","shift","dend","et","b2","b4","b8","gzs","flg","zs","Inflate","opts","cb","bts","chunk","inflateSync","data","Gunzip","td","tds","dutf8","strFromU8","latin1","slzh","zh","fnl","fn","es","bs","z64e","sc","su","off","unzipSync","files","ze","fltr","c_2","no","threeRevision","threeMrtArray","f32buffer","u32buffer","supportsFloat16Array","f16buffer","u16buffer","normalize","vec","norm","acc","floatBitsToUint","f","uintBitsToFloat","u","toHalf","toHalfNative","toHalfJS","fromHalf","fromHalfNative","fromHalfJS","sign","exp","frac","halfSign","newExp","subFrac","halfFrac","h","f32bits","mant","newFrac","floatToUint8","floatToSint8","Uint8ToFloat","Sint8ToFloat","DataCache","asyncFetch","dispose","maxItems","item","immediate","pending","removed","mapObject","obj","entries","mapFilterObject","getTransferable","ctx","buffers","seen","traverse","newArray","initFunction","FreeList","allocate","valid","encodeExtSplat","extArrays","scaleX","scaleY","scaleZ","quatX","quatY","quatZ","quatW","i4","extA","extB","encodeQuatOctXy1010R12","decodeExtSplat","packedFields","decodeQuatOctXy1010R12","setPackedSplat","encoding","rgbMin","rgbRange","uR","uG","uB","uA","uQuat","encodeQuatOctXy88R8","tempQuaternion","uQuatX","uQuatY","uQuatZ","lnScaleMin","lnScaleScale","uScaleX","uScaleY","uScaleZ","uCenterX","uCenterY","uCenterZ","setPackedSplatCenter","setPackedSplatScales","setPackedSplatQuat","setPackedSplatRgba","setPackedSplatRgb","setPackedSplatOpacity","packedCenter","packedScales","packedQuaternion","packedColor","unpackSplat","word0","word1","word2","word3","uScalesX","uScalesY","uScalesZ","decodeQuatOctXy88R8","getTextureSize","numSplats","width","height","depth","maxSplats","computeMaxSplats","isMobile","isAndroid","isOculus","isQuest2","isIos","isVisionPro","flipPixels","pixels","tempLine","topOffset","bottomOffset","pixelsToPngUrl","canvas","imageData","cloneClock","clock","newClock","omitUndefined","IDENT_VERTEX_SHADER","averagePositions","positions","sum","position","averageQuaternions","quaternions","coinciDist","matrix1","matrix2","origin1","origin2","direction1","direction2","distance","coincidence","withinDist","maxDistance","withinCoinciDist","minCoincidence","coorientDist","rotate1","rotate2","coorient","withinCoorientDist","minCoorient","epsilonSign","epsilon","encodeQuatXyz888","q","negQuat","iQuatX","iQuatY","iQuatZ","decodeQuatXyz888","encoded","out","dotSelf","tempNormalizedQuaternion","tempAxis","qnorm","theta","xyz_norm","axis","p_x","p_y","tmp","u_f","v_f","quantU","quantV","angleInt","f_x","f_y","f_z","halfTheta","w","encodeQuatEulerXyz888","qNorm","sinr_cosp","cosr_cosp","roll","sinp","pitch","siny_cosp","cosy_cosp","yaw","normRoll","normPitch","normYaw","rollQ","pitchQ","decodeQuatEulerXyz888","yawQ","cr","sr","cp","sp","cy","sy","qx","qy","qz","qw","qlen","qnx","qny","qnz","qnw","axisX","axisY","axisZ","axisLen","packSint8Bytes","b0","b1","b3","clampedB0","clampedB1","clampedB2","clampedB3","encodeSh1Rgb","sh1Array","sh1Rgb","sh1Scale","bitStart","bitEnd","wordStart","bitOffset","firstWord","secondWord","encodeSh2Rgb","sh2Array","sh2Rgb","sh2Scale","encodeSh3Rgb","sh3Array","sh3Rgb","sh3Scale","encodeExtRgb","ar","ag","ab","maxAbs","biasedBase","divisor","expSigns","decodeExtRgb","color","encodeExtSh1Rgb","k","k3","encodeExtSh12Rgb","k5","encodeExt3Rgb","sh3ArrayA","sh3ArrayB","decompressPartialGzip","fileBytes","numBytes","chunks","totalBytes","gunzip","allBytes","offset","CHUNK_SIZE","GunzipReader","chunkBytes","ds","decompressionStream","readerDone","outOffset","uploadU32DataTextureRows","renderer","texture","rows","gl","props","glTexture","currentFlipY","currentPremultiply","DynoProgram","graph","template","consoleLog","getMaterial","updater","DynoProgramTemplate","programMaterial","program","material","addOutputType","operation","error","subOutputType","mulOutputType","divOutputType","imodOutputType","modOutputType","negOutputType","absOutputType","signOutputType","floorOutputType","ceilOutputType","truncOutputType","roundOutputType","fractOutputType","powOutputType","expOutputType","exp2OutputType","logOutputType","log2OutputType","sqrOutputType","sqrtOutputType","inversesqrtOutputType","minOutputType","maxOutputType","clampOutputType","_c","mixOutputType","stepOutputType","smoothstepOutputType","isNanOutputType","isInfOutputType","Add","sub","Sub","mul","Mul","div","Div","imod","IMod","mod","Mod","modf","Modf","neg","Neg","abs","Abs","Sign","floor","Floor","ceil","Ceil","trunc","Trunc","round","Round","fract","Fract","pow","Pow","Exp","exp2","Exp2","log","Log","log2","Log2","sqr","Sqr","sqrt","Sqrt","inversesqrt","InverseSqrt","min","Min","Max","clamp","Clamp","mix","Mix","edge","Step","smoothstep","edge0","edge1","Smoothstep","isNan","IsNan","isInf","IsInf","and","And","or","Or","xor","Xor","not","Not","shr","Shr","shl","Shl","lessThan","LessThan","lessThanEqual","LessThanEqual","greaterThan","GreaterThan","greaterThanEqual","GreaterThanEqual","equal","Equal","notEqual","NotEqual","any","Any","all","All","select","cond","Select","compXor","CompXor","aType","bType","compareOutputType","equalOutputType","notEqualOutputType","cType","operator","compXorOutputType","operands","bool","Bool","int","Int","uint","Uint","float","Float","bvec2","BVec2","bvec3","BVec3","bvec4","BVec4","ivec2","IVec2","ivec3","IVec3","ivec4","IVec4","uvec2","UVec2","uvec3","UVec3","uvec4","UVec4","vec2","Vec2","vec3","Vec3","vec4","Vec4","mat2","Mat2","mat3","Mat3","mat4","Mat4","floatBitsToInt","FloatBitsToInt","FloatBitsToUint","intBitsToFloat","IntBitsToFloat","UintBitsToFloat","packSnorm2x16","PackSnorm2x16","unpackSnorm2x16","UnpackSnorm2x16","packUnorm2x16","PackUnorm2x16","unpackUnorm2x16","UnpackUnorm2x16","packHalf2x16","PackHalf2x16","unpackHalf2x16","UnpackHalf2x16","uintToRgba8","UintToRgba8","SimpleCast","length","Length","Distance","dot","Dot","cross","Cross","Normalize","faceforward","FaceForward","reflectVec","incident","normal","ReflectVec","refractVec","eta","RefractVec","split","vector","Split","combine","vectorType","Combine","projectH","ProjectH","extendVec","ExtendVec","swizzle","Swizzle","compMult","CompMult","outer","Outer","transpose","Transpose","determinant","Determinant","inverse","Inverse","projectHOutputType","extendVecOutputType","outerOutputType","transposeOutputType","splitOutTypes","vType","elType","dim","swizzleOutputType","remapIndex","from","to","DynoRemapIndex","pcgMix","PcgMix","pcgNext","state","PcgNext","pcgHash","PcgHash","hash","Hash","hash2","Hash2","hash3","Hash3","hash4","Hash4","hashFloat","HashFloat","hashVec2","HashVec2","hashVec3","HashVec3","hashVec4","HashVec4","normalizedDepth","zNear","zFar","NormalizedDepth","debugColorHue","DebugColorHue","toUint","tempType","toUvec","word","words","transformPos","TransformPosition","transformDir","dir","TransformDir","transformQuat","TransformQuaternion","dynoIf","dynoSwitch","dynoFor","comment","arrayIndex","arrayLength","textureSize","lod","TextureSize","bias","Texture","texelFetch","TexelFetch","textureType","textureSizeType","textureCoordType","textureReturnType","radians","degrees","Radians","Degrees","sin","Sin","cos","Cos","tan","Tan","asin","Asin","acos","Acos","atan","Atan","atan2","Atan2","sinh","Sinh","cosh","Cosh","tanh","Tanh","asinh","Asinh","acosh","Acosh","atanh","Atanh","computeUvec4_default","computeUvec4_Vec4_default","computeUvec4x2_Vec4_default","computeVec4_default","splatDefines_default","splatFragment_default","splatVertex_default","shaders","getShaders","splatDefines","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","_Readback","buffer","bytes","newBuffer","ctor","capacity","reader","layerSize","baseIndex","layer","layerBase","layerYEnd","readback","roundedCount","readbackUint8","promises","readbackSize","subReadback","promise","renderState","FullScreenQuad","Readback","SplatEditSdfType","sdfTypeToNumber","SplatEditRgbaBlendMode","rgbaBlendModeToNumber","mode","SplatEditSdf","invert","displace","radius","_SplatEdit","rgbaBlendMode","sdfSmooth","softEdge","sdfs","sdf","SplatEdit","SplatEdits","maxSdfs","maxEdits","SdfArray","defineSdfArray","defineEdit","dynoUpdated","updated","tempFloat32","editIndex","sdfFirst","sdfCount","sdfIndex","sdfType","sizes","values","nValues","vBase","edits","total","edit","sdfUpdated","applyGsplatRgbaDisplaceEdits","applyCovSplatRgbaDisplaceEdits","sdfArray","numEdits","rgbaDisplaceEdits","SplatModifier","modifier","generator","modified","SplatTransformer","transform","newScale","object","CovSplatTransformer","rebased","basis","SplatGenerator","covGenerator","constructed","CsplatArray","ptr","CsplatArrayFinalization","wasm","lod_base","merge_filter","ret","takeFromExternrefTable0","arg0","GsplatArray","GsplatArrayFinalization","decode_rad_header","get_raycast_buffer","get_raycast_buffer2","raycast_ext_buffers","origin_x","origin_y","origin_z","dir_x","dir_y","dir_z","min_opacity","near","far","raycast_packed_buffer","ln_scale_min","ln_scale_max","lod_opacity","__wbg_get_imports","arg1","getStringFromWasm0","isLikeNone","debugString","ptr1","passStringToWasm0","len1","WASM_VECTOR_LEN","getDataViewMemory0","deferred0_0","deferred0_1","handleError","arg2","getArrayU8FromWasm0","getArrayU16FromWasm0","getArrayU32FromWasm0","getArrayF32FromWasm0","table","addToExternrefTable0","idx","description","debug","builtInMatches","className","len","getFloat32ArrayMemory0","getUint16ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint16ArrayMemory0","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","malloc","realloc","cachedTextEncoder","mem","code","view","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","__wbg_init","module_or_path","b64ToUint6","nChr","base64ToUint8","sBase64","nBlocksSize","sB64Enc","nInLen","nOutLen","taBytes","nMod3","nMod4","nUint24","nOutIdx","nInIdx","toUint8","b64","bin","decode64","WASM_MODULE","WASM","initialized","initialization","init_wasm","isInitialized","_SplatWorker","BundledWorker","event","id","status","callback","queue","resolve","reject","messages","message","SplatWorker","NewSplatWorkerPool","maxWorkers","worker","waiter","workerPool","_PackedSplats","DynoPackedSplats","_d","url","fileType","fileName","stream","streamLength","nonLod","lodAbove","loader","SplatLoader","maybePromise","maxSh","viewOrigin","splatCenter","sh1Texture","sh2Texture","sh3Texture","evaluatePackedSH","sh1","newSh1","sh2","newSh2","sh3","newSh3","targetSize","currentSize","level","wordsPerSplat","unpacked","splatCounts","mapping","rounded","_outputs","roots","output","nextBase","layerYStart","rgbaArray","quality","lodBase","packedArray","extra","decoded","lodSplats","indices","pageColoring","newSplats","splat","hue","emptyArray","PackedSplats","_f","_e","_h","_g","_j","_i","_l","_k","defineEvalPackedSH1","defineEvalPackedSH2","defineEvalPackedSH3","numSh","shMax","Loader","manager","FileLoader","onLoad","onProgress","onError","SplatMesh","resolvedURL","readStream","splatsLod","splatsNonLod","onStatus","loaded","done","basedUrl","ExtSplats","initExtSplats","initSplats","getSplatFileType","magic","header","tryPcSogsZip","getFileExtension","pathOrUrl","noTrailing","lastSlash","filename","lastDot","getSplatFileTypeFromPath","extension","isPcSogs","tryPcSogs","text","json","isVersion2","metaFilename","unzipped","SplatData","targetSplats","newCenters","newScales","newQuaternions","newOpacities","newColors","_ExtSplats","DynoExtSplats","sh3TextureA","sh3TextureB","evaluateExtSH","newUint32ArrayTexture","sh3a","sh3b","newSh3b","newArray0","newArray1","defineEvaluateExtSH1","defineEvaluateExtSH12","defineEvaluateExtSH3","randomColourFromID","format","internalFormat","_RgbaArray","TRgbaArray","defineRgbaArray","splatCount","dynoSplats","dynoBase","dynoCount","RgbaArray","readRgbaArray","PAGE_WIDTH","PAGE_HEIGHT","PAGE_SPLATS","PagedSplats","dyno.DynoInt","dyno.DynoUsampler2D","SplatPager","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","wasm.initialization","metaStart","tryBytes","fetchRange","decodeBytes","meta","chunksStart","resolvedRoot","chunkUrl","request","response","sh3Codes","indicesTexture","textureIndices","splatIndex","packedSplatArray","extPackedSplatArray","_SplatPager","dyno.DynoUsampler2DArray","emptyShTextures","dyno.Dyno","dyno.Gsplat","dyno.defineGsplat","dyno.unindentLines","dyno.dynoBlock","lodOpacity","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","categories","array","elementsPerSplat","splats","page","now","pageLru","freedPages","shArrays","extArray","labels","instances","pageBase","uploadTextureLayer","labels_arr","instances_arr","needed","overflow","numPages","backoff","extraPages","splatsChunk","fetched","isExtResult","sh","upload","updates","dstOffset","requestHeader","withCredentials","EmptySplatSource","_SplatMesh","context","rootUrl","emptyLodIndices","constructSplats","splatEncoding","packedSplatsOptions","centers_only","minVec","maxVec","corners","signs","_index","_opacity","_color","viewToObject","maybeLookupIndex","maybeInjectSplatRgba","recolorRgba","covTransform","covViewToObject","time","deltaTime","viewToWorld","camera","renderSize","globalEdits","lodIndices","worldToView","viewToObjectMatrix","newRecolor","editsSdfs","editResult","raycaster","intersects","wasm.isInitialized","paged","ext","ray","worldToMesh","worldToMeshRot","origin","direction","bufferSize","intersections","buffer2","ext1","_o","_n","_q","_p","_r","ext2","_t","_s","_v","_u","_w","index4","newIntersections","packed","_m","point","additional","enableLod","showLodPage","_SplatAccumulator","target2","target3","theGenerator","centerSubView","halfAlpha","outputDepth","scene","previous","lodInstances","allGenerators","globalEditsSet","ancestor","visibleGenerators","baseCounts","previousMappings","mappings","previousNode","version","mappingVersion","splatsUpdated","mappingUpdated","textures","otherMapping","other","SplatAccumulator","SplatGeometry","QUAD_VERTICES","QUAD_INDICES","_SparkRenderer","premultipliedAlpha","geometry","defaultPages","accumulatorOptions","provokingVertexExt","doubleBuffer","origSuperXY","origTargetOptions","superXY","superWidth","superHeight","targetOptions","accumulators","accumulator","spark","frame","isNewFrame","currentRenderTarget","isXRRenderTarget","checkIsXRRenderTarget","baseLayer","typedCamera","accumToWorld","accumToCamera","outputColorSpace","preUpdate","useCamera","autoUpdate","viewChanged","next","doUpdate","needsUpdate","nextSortTime","current","orderingMaxSplats","orderingTexture","defaultSplatCount","pixelScaleLimit","viewHeight","viewWidth","pxY","pxX","viewPos","viewQuat","distanceRamp","quatRamp","lodMeshes","hasPaged","mesh","record","lodId","lodInitQueue","lodTree","lodUpdates","deltaPred","uuidToMesh","cameraToWorld","traverseStart","keyIndices","pixelLimit","totalLodSplats","pagedMeshes","meshPosition","uuid","countIndices","oldest","target","previousTarget","byteSize","superPixels","subWidth","subHeight","subSize","targetPixels","super2","row","superCol","superRow","sx","superIndex","pixelIndex","worldCenter","size","hideObjects","filter","cubeCamera","objectVisibility","tempCamera","visible","cubeTexture","envMap","SparkRenderer","renderTarget","PLY_PROPERTY_TYPES","_PlyReader","decoder","controller","headerTerminator","endHeader","headerLen","curElement","lineIndex","fields","elementCallback","elementName","element","properties","createEmptyItem","parseFn","createParseFn","splatCallback","shCallback","isSuperSplat","ssChunks","sh1Props","sh2Props","sh3Props","prepareSh","num_f_rest","NUM_SH_TO_NUM_F_REST","ssShCallback","initSuperSplat","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","min_r","min_g","min_b","max_r","max_g","max_b","decodeSuperSplat","getNumSh","packed_position","packed_rotation","packed_scale","packed_color","SQRT2","r0","r1","r2","rr","rOrder","scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","f_dc_0","f_dc_1","f_dc_2","red","green","blue","alpha","hasScales","hasRots","alphaDiv","FIELD_SCALE","redDiv","greenDiv","blueDiv","op","SH_C0","parsers","rgbaOffset","isVertex","propertyName","property","PARSE_FIELD","FIELD_BYTES","component","SET_FIELD","parser","PlyReader","littleEndian","NUM_F_REST_TO_NUM_SH","F_REST_REGEX","safeToCompile","createCompiledParserFn","createDynamicParserFn","UNSAFE_EVAL_ALLOWED","PROPERTY_NAME_REGEX","parserSrc","fRestMatch","fRestIndex","list","currentOffset","parserIndex","decodeAntiSplat","initNumSplats","f32","i8","KSPLAT_COMPRESSION","KSPLAT_SH_DEGREE_TO_COMPONENTS","decodeKsplat","headerOffset","versionMajor","versionMinor","maxSectionCount","compressionLevel","minSphericalHarmonicsCoeff","maxSphericalHarmonicsCoeff","sectionBase","section","getSh","splatOffset","sphericalHarmonicsOffsetBytes","sectionSplatCount","sectionMaxSplatCount","bucketSize","bucketCount","bucketBlockSize","bucketStorageSizeBytes","compressionScaleRange","fullBucketCount","fullBucketSplats","partiallyFilledBucketCount","bucketsMetaDataSizeBytes","bucketsStorageSizeBytes","sphericalHarmonicsDegree","shComponents","bytesPerCenter","bytesPerScale","bytesPerRotation","bytesPerColor","bytesPerSphericalHarmonicsComponent","scaleOffsetBytes","rotationOffsetBytes","colorOffsetBytes","bytesPerSplat","splatDataStorageSizeBytes","storageSizeBytes","sh1Index","sh2Index","sh3Index","compressionScaleFactor","bucketsBase","dataBase","bucketArray","partiallyFilledBucketLengths","partialBucketIndex","partialBucketBase","bucketIndex","bucketLength","SpzReader","centerCallback","alphaCallback","rgbCallback","scalesCallback","quatCallback","childCounts","childStarts","centerBytes","centerUint16","i3","fixed","i9","rgbBytes","scalesBytes","maxValue","quatBytes","combinedValues","valueMask","largestIndex","remainingValues","sumSquares","square","shBytes","SH_DEGREE_TO_VECS","i2","SPZ_MAGIC","SPZ_VERSION","FLAG_ANTIALIASED","SpzWriter","shDegree","fractionalBits","flagAntiAlias","splatSize","xRounded","xInt","yRounded","yInt","zRounded","zInt","quat","iLargest","negate","comp","negbit","mag","quantized","shVecs","base1","base2","base3","compressed","transcodeSpz","clipXyz","opacityThreshold","transformScales","transformQuaternion","withinClip","clip","withinOpacity","ply","lastIndex","spz","centers","SplatSkinningMode","_SplatSkinning","GsplatSkinning","defineGsplatSkinning","applyGsplatSkinning","applyCovSplatDQSkinning","applyCovSplatLBSkinning","boneIndex","matrix","i16","boneIndices","weights","SplatSkinning","defineApplyGsplatSkinning","skinning","defineApplyCovSplatDQSkinning","defineApplyCovSplatLBSkinning","constructGrid","extents","stepSize","pointRadius","pointShadowScale","pointColor","constructAxes","axisRadius","axisShadowScale","origins","constructSpherePoints","maxDepth","pointThickness","pointsHash","addPoint","recurse","p0","p1","p2","p01","p12","p20","points","textSplats","font","fontSize","dotRadius","textAlign","lineHeight","objectScale","metrics","fontHeight","minLeft","maxRight","minTop","maxBottom","originLeft","originTop","imageSplats","subXY","forEachSplat","img","destWidth","destHeight","push","maybeOpacity","staticBox","box","cells","dotScale","dynoX","dynoY","dynoTime","cellX","index2","cellY","cellZ","cell","intTime","random","transformer","DEFAULT_SNOW","DEFAULT_RAIN","snowBox","minY","density","anisoScale","minScale","maxScale","fallDirection","fallVelocity","wanderScale","wanderVariance","color1","color2","onFrame","volume","dynoMinScale","dynoMaxScale","dynoAnisoScale","dynoFallDirection","dynoFallVelocity","dynoWanderScale","dynoWanderVariance","dynoColor1","dynoColor2","dynoOpacity","globalOffset","dynoMin","dynoMax","dynoMinY","minMax","snow","randomW","intensity","random2","perturb","timeOffset","modulo","centerY","fallDelta","makeNormalColorModifier","splatToView","viewGsplat","viewNormal","splatDot","sameDir","setWorldNormalColor","makeDepthColorModifier","minDepth","reverse","setDepthColor","dynoMinDepth","dynoMaxDepth","dynoReverse","DEFAULT_CONTROLLER_MOVE_SPEED","DEFAULT_CONTROLLER_ROTATE_SPEED","DEFAULT_CONTROLLER_ROLL_SPEED","DEFAULT_CONTROLLER_FAST_MULTIPLIER","DEFAULT_CONTROLLER_SLOW_MULTIPLIER","DEFAULT_CONTROLLER_MOVE_HEADING","DEFAULT_CONTROLLER_GETMOVE","gamepads","sparkXr","DEFAULT_CONTROLLER_GETROTATE","DEFAULT_CONTROLLER_GETFAST","DEFAULT_CONTROLLER_GETSLOW","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","XR_HEADSET_HINTS","isLikelyMobilePhone","ua","uaData","_SparkXr","XrHand","button","modes","supported","referenceSpaceType","frameBufferScaleFactor","optionalFeatures","requiredFeatures","session","onSessionEnded","visibilityChanged","lastVisibilityState","exitHtml","exitText","enterHtml","enterText","cameraFrame","xrGamepads","gamepad","eulers","pivot","move","moveSpeed","SCRATCH_EULER","SCRATCH_QUAT_A","xrFrame","xrSession","referenceSpace","hand","inputSource","xrHand","jointId","jointSpace","jointPose","orientation","JointSplats","joints","hands","SparkXr","round4","SCRATCH_QUAT_B","lerpHandsSnapshots","snapshots","first","last","floorIndex","findSnapshotFloorIndex","cloneSnapshot","span","factor","interpolateSnapshots","maxHands","handIndex","lerpHandSnapshot","snapshot","cloneHandSnapshot","joint","low","high","mid","fromHand","toHand","lerpJointSnapshot","fromJoint","toJoint","clone","cloneJointSnapshot","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","TOUCH_BIAS","XrHands","xr","Vector3","Quaternion","Color","CYCLE","handedness","segment","segmentSplats","lastSegment","jointA","jointB","radiusA","radiusB","handA","handB","hA","hB","jA","jB","HandMovement","xrHands","control","moveInertia","rotateInertia","grip","lastMid","delta","angle","lastAngle","closestAngle","rotateVelocity","blend","negPivot","Matrix4","DEFAULT_MOVEMENT_SPEED","DEFAULT_ROLL_SPEED","DEFAULT_ROTATE_SPEED","DEFAULT_SLIDE_SPEED","DEFAULT_SCROLL_SPEED","DEFAULT_STICK_THRESHOLD","DEFAULT_FPS_ROTATE_SPEED","DEFAULT_POINTER_ROLL_SCALE","DEFAULT_PRESS_MOVE_DELAY_MS","DEFAULT_PRESS_MOVE_ACCEL_MS","DUAL_PRESS_MS","DOUBLE_PRESS_LIMIT_MS","DOUBLE_PRESS_DISTANCE","MOVEMENT_THRESHOLD","WASD_KEYCODE_MOVE","ARROW_KEYCODE_MOVE","ARROW_KEYCODE_ROTATE","SparkControls","FpsMovement","PointerControls","rollSpeed","stickThreshold","rotateSpeed","keycodeMoveMapping","keycodeRotateMapping","gamepadMapping","capsMultiplier","shiftMultiplier","ctrlMultiplier","sticks","gamepadButtons","xrSources","stick","keycode","rot","moveVector","speedMultiplier","slideSpeed","scrollSpeed","swapRotateSlide","reverseRotate","reverseSlide","reverseSwipe","reverseScroll","pointerRollScale","doublePress","pressMoveDelayMs","pressMoveAccelMs","pressMoveSpeed","doublePressMoveSpeed","triplePressMoveSpeed","pressMoveCenter","initial","isRotate","pointerId","timeStamp","intervalMs","lastDistance","lastIntervalMs","pointerUp","lastUp","rect","motion","totalMotion","slide","deltaDir","deltaDist","orthoDir","motionDir","motionOrtho","midpoint","midpointDir","theCamera","ndcMidpoint","pinchOut","angles","ndcPoint","scroll","DISK_PORTAL_FRAGMENT_SHADER","SparkPortals","sparkOpts","pair","portal","twoSided","inverseCamera","portalInCamera","portalQuat","outCenter","outNormal","prevCam","currCam","beforeMatrix","afterMatrix","startPlaneDist","endPlaneDist","denom","earliestT","crossedPair","crossedEntry","entryT","exitT","bestScore","bestPair","bestIsEntry","entryDist","entryScore","exitDist","exitScore","primary","primaryIsEntry","primaryPortal","otherPortal","aspect"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","x_google_ignoreList":[7]} \ No newline at end of file diff --git a/dist/spark.module.js b/dist/spark.module.js index aec3d559..9daa54d6 100644 --- a/dist/spark.module.js +++ b/dist/spark.module.js @@ -1,1049 +1,703 @@ import * as THREE from "three"; import { Loader, FileLoader, Quaternion, Vector3, Color, Matrix4 } from "three"; import { FullScreenQuad } from "three/addons/postprocessing/Pass.js"; -class OldSplatGeometry extends THREE.InstancedBufferGeometry { - constructor(ordering, activeSplats) { - super(); - this.ordering = ordering; - this.setAttribute("position", new THREE.BufferAttribute(QUAD_VERTICES$1, 3)); - this.setIndex(new THREE.BufferAttribute(QUAD_INDICES$1, 1)); - this._maxInstanceCount = ordering.length; - this.instanceCount = activeSplats; - this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1); - this.attribute.setUsage(THREE.DynamicDrawUsage); - this.setAttribute("splatIndex", this.attribute); - } - update(ordering, activeSplats) { - this.ordering = ordering; - this.attribute.array = ordering; - this.instanceCount = activeSplats; - this.attribute.addUpdateRange(0, activeSplats); - this.attribute.needsUpdate = true; - } -} -const QUAD_VERTICES$1 = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]); -const QUAD_INDICES$1 = new Uint16Array([0, 1, 2, 0, 2, 3]); -const jsContent$1 = '(function() {\n "use strict";\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_worker_rs_bg.js": import0\n };\n }\n typeof FinalizationRegistry === "undefined" ? {} : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i2 = 1; i2 < length; i2++) {\n debug += ", " + debugString(val[i2]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x2) {\n return x2 === void 0 || x2 === null;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (module_or_path === void 0) {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIcQjiGIBxCgP4Dg0IohoQgHEKAgPwHg0IYhiAcQoCAgPgPg0IIhoSEIBxCCIhCgICA+A+DIBxCGIhCgID8B4OEIBxCKIhCgP4DgyAcQjiIhISEIBogG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhH6FIBqJIhpCGYgiHEL/AINCgYKEiJCgwIABfiEsIAMoAuABIgZBCGshDEEAIREgAygC5AEiByAapyIOcSIJIQQCfwJAA0AgBCAGaikAACIbICyFIhpCf4UgGkKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIaUEUEQANAIAwgGnqnQQN2IARqIAdxIg9BA3RrKAIAIAtGDQMgGkIBfSAagyIaUEUNAAsLIBsgG0IBhoNCgIGChIiQoMCAf4NQBEAgBCARQQhqIhFqIAdxIQQMAQsLIAMoAugBRQRAIANB4AFqIANB8AFqEJwBIAMoAuQBIgcgDnEhCSADKALgASEGCyAGIAlqKQAAQoCBgoSIkKDAgH+DIhpQBEBBCCEEA0AgBCAJaiEJIARBCGohBCAGIAcgCXEiCWopAABCgIGChIiQoMCAf4MiGlANAAsLIAYgGnqnQQN2IAlqIAdxIgRqLAAAIglBAE4EQCAGIAYpAwBCgIGChIiQoMCAf4N6p0EDdiIEai0AACEJCyAEIAZqIBynQf8AcSIMOgAAIAYgBEEIayAHcWpBCGogDDoAACAGIARBA3RrIgZBBGtBADYCACAGQQhrIAs2AgAgAyADKALsAUEBajYC7AEgAyADKALoASAJQQFxazYC6AFBAQwBCyAGQQAgD2tBA3RqIgZBBGsoAgBBAWoLIQQgBkEEayAENgIAAkACQAJAAkACQAJAIAtBAU0EQCACIAMoAjwiB08NASAFKAIAIQQgAygCWCICIAMoAlBGBEAgA0HQAGpBsOXBABCLBgsgAygCVCACQQJ0aiAENgIAIAMgAkEBajYCWAwGCyADKgJMIQEgAy0AJyEWQQAhBCADQQA2ArgBIANBADYCzAFBBCEHAn8gC0EAIAggC08bIgZBBUkEQCAQIQwgFAwBCwJAIAZBAWtnIgQEQCADQRhqIANBuAFqQX8gBHZBAWoQ6QMgAygCGCIEQYGAgIB4Rg0BIAQNFAtB2JXHAEERQdTMxwAQ6wcACyADKALMASIHQQVJBEAgByEEIBAhDEEEIQcgFAwBCyADKAK8ASEEIAMoAsABIQwgEAshCyAEIAdPDQIgByAEQX9zaiIGIAIgAygCPCIRIAIgEUsbIg4gAmsiCSAGIAlJGyIGIAIgCCACIAhLGyIXIAJrIgkgBiAJSRsiCUEBaiIPQQxNDQEgDCAEQQJ0aiIGIA0gAiAJakEFdGpBBGpJIAUgDCAEIAlqQQJ0akEEaklxDQEgDyAPQQNxIglBBCAJG2siDyEJA0AgBiAFQeAAaiAFQUBrIAVBIGogBf1cAgD9VgIAAf1WAgAC/VYCAAP9CwIAIAVBgAFqIQUgBkEQaiEGIAlBBGsiCQ0ACyACIA9qIQIgBCAPaiEEDAELIAIgB0Gg5cEAEIwHAAsgDSACQQV0aiEFIAwgBEECdGohBgJAA0AgAiAXRg0BIAIgDkYEQCAOIBFB4OXBABCMBwALIAYgBSgCADYCACAFQSBqIQUgBkEEaiEGIAJBAWohAiAHIARBAWoiBEcNAAsgByEEDAELIAsgBDYCAAwBCyALIAQ2AgAgAiAKSw0AIApBAWohCiACQQV0IQUDQCACIAMoAjwiBE8NAiADKAI4IAVqAn8gAygCzAEiB0EFSQRAIAchBiAQIQtBBCEHIBQMAQsgAygCvAEhBiADKALAASELIBALIQQoAgAhCSAGIAdGBEAgA0G4AWoQzgYgAygCvAEhBiADKALAASELIBAhBAsgCyAGQQJ0aiAJNgIAIAQgBCgCAEEBajYCACAFQSBqIQUgCiACQQFqIgJHDQALCyADQfAAaiIGIANByAFqIgcpAgA3AwAgAyAD/QACuAH9CwNgIAAgAygCdCIFQQVPBH8gAygCZCEFIAMoAmgFIBMLIAUgAUMAAAAAIBYbED8hAiADKAJYIgQgAygCUEYEQCADQdAAakHA5cEAEIsGCyADKAJUIARBAnRqIAI2AgAgAyAEQQFqNgJYIAcgBikDADcDACADIAP9AANg/QsDuAEgAygCjAEiBCADKAKEAUYEQCADQYQBahCVBgsgAygCiAEgBEEcbGoiBSACNgIAIAUgAykDuAE3AgQgBUEMaiADQcABav0AAwD9CwIAIAMgBEEBajYCjAEgAyADKAJcQQFqNgJcIAMoAjwhBwwBCyACIARB4OXBABCMBwALIAcgCCICSw0ACwwDCwwOCyAEIAVB1MDHABCMBwALDAwLIAMgKjcDmAEgAyArNwOQAUEWEHEiAkUNBiADQQA2AvgCIAMgAjYC9AIgA0EWNgLwAiADQgI3AsQBIANBAjYCvAEgA0G45MEANgK4ASADIANBkAFqNgLAAQJAAkAgA0HwAmpBjO/BACADQbgBahDBA0UEQCADKALwAiICBEAgAygC9AIiBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgAmpJDQ0gBUEAIAYgAkEnaksbDQ4gBBCiAgsgAygC7AEhCiADQegBakH4msgAKQMANwMAIAMoAuQBIQsgAygC4AEhCCADQfCayAApAwA3A+ABAkACQAJAIAoEQCAIQQhqIQYCQCAIKQMAQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1IEQCAGIQIgCCEFDAELIAghBQNAIAVBQGohBSAGKQMAIAZBCGoiAiEGQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1ENAAsLIApB/////wFLDQNBBCAKIApBBE0bIgRBA3QiBkH9////B08NAyAFIBpCgIGChIiQoMCAf4UiGnqnQfgAcWsiB0EEaygCACEMIAdBCGsoAgAhByAGEHEiCUUNDSAJIAw2AgQgCSAHNgIAQQEhBiADQQE2AsABIAMgCTYCvAEgAyAENgK4ASAKQQFrIgcEQCAaQgF9IBqDIRpBASEEA0AgGlAEQANAIAVBQGohBSACKQMAIAJBCGohAkKAgYKEiJCgwIB/gyIaQoCBgoSIkKDAgH9RDQALIBpCgIGChIiQoMCAf4UhGgsgBSAaeqdB+ABxayIGQQRrKAIAIQwgBkEIaygCACEGIBpCAX0gGoMhGiADKAK4ASAERgRAIANBuAFqIAQgB0EEQQgQpAUgAygCvAEhCQsgCSAEQQN0aiINIAw2AgQgDSAGNgIAIAMgBEEBaiIENgLAASAHQQFrIgcNAAsgCiEGCwJAIAtFDQAgC0EJaiICRQ0AIAhB/wEgAvwLAAsgA0EANgLsASADIAg2AuABIAMgCzYC5AEgAyALIAtBAWpBA3ZBB2wgC0EISRs2AugBIAMoArgBIQ0gAygCvAEhCCAGQQJJDQIgBkEVSQ0BIAggBhDOBAwCCwJAIAtFDQAgC0EJaiICRQ0AIAhB/wEgAvwLAAtBACENIANBADYC7AEgAyAINgLgASADIAs2AuQBIAMgCyALQQFqQQN2QQdsIAtBCEkbNgLoAUEEIQgMAQsgCEEIaiEEIAggBkEDdGohBkEAIQcDQCAEKAIAIgUgBEEIaygCAEkEQCAENQIEIRogByECAn8DQCACIAhqIgpBCGogCikCADcCACAIIAJFDQEaIAUgAkEIayICIAhqIgooAgBJDQALIApBCGoLIAWtIBpCIIaENwIACyAHQQhqIQcgBEEIaiIEIAZHDQALCyADKAJIIgcgAygCQEYEQCADQUBrQcjkwQAQogYLIAMoAkQiDCAHQQxsaiICIAMpAoQBNwIAIAJBCGogA0GMAWooAgA2AgAgA0EANgI8IAMgB0EBaiIKNgJIIAMoAlQhBCADKAJQIQkCQAJAIAMoAlgiAiADKAI0SwRAIANBNGpBACACQQhBIBCkBSADKAI4IREgAygCPCEGDAELQQAhBiADKAI4IREgAkUNAQsgAkECdCILQQRrIg5BBHEEfyAEBSAEKAIAIQUgEEEQakIANwIAIBD9DAAAAAAAAAAAAAAAAAAAAAD9CwIAIBEgBkEFdGoiAiAFNgIAIAIgAykCuAE3AgQgAkEMaiADQcABav0AAgD9CwIAIAJBHGogEigCADYCACAGQQFqIQYgBEEEagshBSAORQ0AIAQgC2ohCyARIAZBBXRqIQIDQCACIAUoAgA2AgAgEEEQaiIOQgA3AgAgEP0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAkEEaiADKQK4ATcCACACQQxqIANBwAFqIg/9AAIA/QsCACACQRxqIBIoAgA2AgAgBUEEaigCACEWIA5CADcCACAQ/QwAAAAAAAAAAAAAAAAAAAAA/QsCACACQSBqIBY2AgAgAkEkaiADKQK4ATcCACACQSxqIA/9AAIA/QsCACACQTxqIBIoAgA2AgAgAkFAayECIAZBAmohBiAFQQhqIgUgC0cNAAsLIAMgBjYCPAJAIAkEQCAEQQRrKAIAIgJBeHEiBSAJQQJ0IglBBEEIIAJBA3EiAhtqSQ0BIAJBACAFIAlBJ2pLGw0QIAQQogILIAMgAy8BKkEBajsBKiADKAIwIAMoAixJDQQgAygCgAFBAUcNAwJAIA0EQCAIQQRrKAIAIgJBeHEiBCANQQN0IgVBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAVBJ2pLGw0RIAgQogILIAMgBjYCfCAGQQFGBEAgAyARKAIANgKAAUEcEHEiAkUNDSACQv////8PNwIAIAJBATYCGCACIAMoAoABNgIIIAMoAkAgCkYEQCADQUBrQdzkwQAQogYgAygCRCEMCyAMIApBDGxqIgRBATYCCCAEIAI2AgQgBEEBNgIAIAMgB0ECaiIKNgJIIAMgKUKAgICAEIQ3A/ACIANCATcCxAEgA0EBNgK8ASADQfjkwQA2ArgBIAMgA0HwAmo2AsABIANBkAFqIANBuAFqEOwDAkAgAygCkAEiAgRAIAMoApQBIgRBBGsoAgAiBUF4cSIGQQRBCCAFQQNxIgUbIAJqSQ0BIAVBACAGIAJBJ2pLGw0TIAQQogILIAMoAoABIgIgACgCCCIESQRAIAMgACgCBCACQSRsajYCUCADICNCgICAgIADhDcD8AIgA0IBNwLEASADQQE2ArwBIANBiOXBADYCuAEgAyADQfACajYCwAEgA0GQAWogA0G4AWoQ7AMCQCADKAKQASICBEAgAygClAEiBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgAmpJDQEgBUEAIAYgAkEnaksbDRUgBBCiAgtBACECIANBADYCmAEgA0KAgICAwAA3ApABQQAhCSAKRQ0OIANBvAFqIhRBEGohGEEEIQtBACEIAkADQCADIApBAWsiEzYCSCAMIBNBDGxqIhIoAgAiD0GAgICAeEYEQCATIQoMDgsCQAJAIBIpAgQiGqciECAaQiCIpyINQRxsaiIOAn8gGkKAgICAEFoEQCAOIBBrIgVBHG4iBkEBcUEAIQRBACEHIAVBHGtBHE8EQCAGQf7///8AcSEWIBAhBQNAIAVBGGooAgAiBkEFTwR/IAVBCGooAgAFIAYLIARqIAVBNGooAgAiBkEFTwRAIAVBJGooAgAhBgsgBUE4aiEFIAZqIQQgFiAHQQJqIgdHDQALCwR/IBAgB0EcbGoiBSgCGCIGQQVPBH8gBSgCCAUgBgsgBGoFIAQLIAlqQYCABEsNAiAQIQUCQANAIAVBHGoiEiAFKAIEIgRBAkYNAxogBSgCACEWIBggBUEYaigCADYCACAUIAX9AAII/QsCACADIAQ2ArgBIBQhBSADKALMASIXIQogF0EFSSIZRQRAIAMoArwBIQogAygCwAEhBQsCQCAWQX9GDQACQAJAIApBACAKIAggCmoiCU0bIhVB/////wNLDQAgFUECdCIEQf3///8HTw0AQQAhBwJAIARFBEBBBCEEQQAhFQwBCyAEEHEiBEUNHAsCQCAIIAlPDQBBACENIAghBiAKQQRPBEAgBv0R/QwAAAAAAQAAAAIAAAADAAAA/a4BIS0gBCEGIApBfHEiDSEHA0AgBiAt/QsCACAGQRBqIQYgLf0MBAAAAAQAAAAEAAAABAAAAP2uASEtIAdBBGsiBw0ACyANIAoiB0YNASAIIA1qIQYLIAQgDUECdGohBwNAIAcgBjYCACAHQQRqIQcgCSAGQQFqIgZHDQALIAohBwsgACgCECAAKAIUIBYgBCAHEOQFIAghCSAVRQ0CIARBBGsoAgAiBkF4cSIHIBVBAnQiCUEEQQggBkEDcSIGG2pJDR4gBkEAIAcgCUEnaksbDQEgBBCiAiAIIQkMAgtB4P/GABD/BwALDB0LIAoEQCAKQQJ0IQcgCEECdCEGIAghAgNAIAUoAgAhBCAFQQRqIQUgAygCkAEgAkYEQCADQZABakGs4sEAEIsGIAMoApQBIQsLIAYgC2ogBDYCACADIAJBAWoiAjYCmAEgBkEEaiEGIAIhCCACIQkgB0EEayIHDQALCwJAIBlFBEAgAygCwAEiBEEEaygCACIFQXhxIgYgF0ECdCIHQQRBCCAFQQNxIgUbakkNASAFQQAgBiAHQSdqSxsNAyAEEKICCyAOIBIiBUcNAQwGCwsMGgsMGgsgAkGAgARLDQEgAiEIIAIhCSAQCyIEa0EcbiEFIAQgDkYNAQNAIARBGGooAgAiBkEFTwRAIARBDGooAgAiB0EEaygCACIKQXhxIhIgBkECdCIGQQRBCCAKQQNxIgobakkNGSAKQQAgEiAGQSdqSxsNGiAHEKICCyAEQRxqIQQgBUEBayIFDQALDAELIBIgDTYCCCASIBA2AgQMDgsCQCAPBEAgEEEEaygCACIEQXhxIgUgD0EcbCIGQQRBCCAEQQNxIgQbakkNASAEQQAgBSAGQSdqSxsNAyAQEKICCyATIgoNAQwPCwsMFAsMFAsMEgsgAiAEQdTAxwAQjAcACwwQCyADQQA2ArgBQQAgA0H8AGpB2OTBACADQbgBakGQ5cEAEPUHAAsMDgsMDQtB4P/GABD/BwALDA0LAkAgDQRAIAhBBGsoAgAiAkF4cSIEIA1BA3QiBUEEQQggAkEDcSICG2pJDQwgAkEAIAQgBUEnaksbDQEgCBCiAgsgICAifSIaIB4gIX0iGyAfIB19IhwgGyAcVRsiGyAaIBtVG0ICUyAVciEVDAILDAsLIA1FDQAgCEEEaygCACICQXhxIgQgDUEDdCIFQQRBCCACQQNxIgIbak8EQCACQQAgBCAFQSdqSxsNCyAIEKICDAELCwwICyAKDQELQQAhCQwBCyADQbwBaiIQQRBqIRYCQANAIAMgCkEBayIKNgJIIAwgCkEMbGoiBCgCACISQYCAgIB4RgRAIAohCQwDCyAEKQIEIhqnIgkgGkIgiKdBHGxqIRQCQAJAAkAgGkKAgICAEFQEQCAJIQQMAQsgCSEFA0AgBUEcaiEEIAUoAgQiBkECRg0BIAUoAgAhFSAWIAVBGGooAgA2AgAgECAF/QACCP0LAgAgAyAGNgK4ASAQIQUgAygCzAEiDiEIIA5BBUkiF0UEQCADKAK8ASEIIAMoAsABIQULAkAgFUF/Rg0AAkAgCEEAIAggAiAIaiIPTRsiDUH/////A0sNACANQQJ0IgZB/f///wdPDQBBACEHAkAgBkUEQEEEIQtBACENDAELIAYQcSILRQ0LCwJAIAIgD08NAEEAIRMgAiEGIAhBBE8EQCAC/RH9DAAAAAABAAAAAgAAAAMAAAD9rgEhLSALIQYgCEF8cSITIQcDQCAGIC39CwIAIAZBEGohBiAt/QwEAAAABAAAAAQAAAAEAAAA/a4BIS0gB0EEayIHDQALIBMgCCIHRg0BIAIgE2ohBgsgCyATQQJ0aiEHA0AgByAGNgIAIAdBBGohByAPIAZBAWoiBkcNAAsgCCEHCyAAKAIQIAAoAhQgFSALIAcQ5AUgDUUNASALIA1BAnRBBBCiBwwBC0Hg/8YAEP8HAAsgCARAIAhBAnQhByACQQJ0IQYDQCAFKAIAIQggAygCkAEgAkYEQCADQZABakGs4sEAEIsGCyAFQQRqIQUgAygClAEgBmogCDYCACADIAJBAWoiAjYCmAEgBkEEaiEGIAdBBGsiBw0ACwsgF0UEQCADKALAASAOQQJ0QQQQogcLIBQgBCIFRw0ACwwBCyAUIARrQRxuIQUgBCAURg0AA0AgBEEYaigCACIGQQVPBEAgBEEMaigCACIHQQRrKAIAIghBeHEiCyAGQQJ0IgZBBEEIIAhBA3EiCBtqSQ0DIAhBACALIAZBJ2pLGw0FIAcQogILIARBHGohBCAFQQFrIgUNAAsLIBIEQCAJIBJBHGxBBBCiBwtBACEJIApFDQMMAQsLDAYLDAYLIAAgAygClAEiBCACEPABIAMoApABIgIEQCAEQQRrKAIAIgVBeHEiBiACQQJ0IgJBBEEIIAVBA3EiBRtqSQ0FIAVBACAGIAJBJ2pLGw0GIAQQogILAkAgAygC5AEiAkUNACACIAJBA3QiAmpBEWoiBEUNACADKALgASACa0EIayAEQQgQogcLIAkEQEEAIQsDQCAMIAtBDGxqIgYoAgQhBCAGKAIIIgUEQCAEIQIDQCACQRhqKAIAIgdBBU8EQCACQQxqKAIAIghBBGsoAgAiCkF4cSIQIAdBAnQiB0EEQQggCkEDcSIKG2pJDQkgCkEAIBAgB0EnaksbDQogCBCiAgsgAkEcaiECIAVBAWsiBQ0ACwsgBigCACICBEAgBEEEaygCACIFQXhxIgYgAkEcbCICQQRBCCAFQQNxIgUbakkNByAFQQAgBiACQSdqSxsNCCAEEKICCyALQQFqIgsgCUcNAAsLIAMoAkAiAgRAIAxBBGsoAgAiBEF4cSIFIAJBDGwiAkEEQQggBEEDcSIEG2pJDQUgBEEAIAUgAkEnaksbDQYgDBCiAgsgAygCNCICBEAgEUEEaygCACIEQXhxIgUgAkEFdCICQQRBCCAEQQNxIgQbckkNBSAEQQAgBSACQSdqSxsNBiAREKICCyAAKAIIIglFDQBBFCEGQQAhBQNAAkACfwJAAkACfwJAAkAgACgCCCICIAVLBEAgACgCBCAGaiILLwEAIgRB//8BcSIQRQ0BIARB/wdxIQIgBEGAgAJxIQcgBEGA+AFxIghBgPgBRyIMRQRAIAdBEHQiCkGAgID8B3IgAkUNBBogCiACQQ10ckGAgID+B3IMBAsgB0EQdCEKIAhFDQIgCEENdEGAgID8AHEgAkENdHJBgICAwANqIApyDAMLIAUgAkHkwMcAEIwHAAsgBEEQdL5DAACAP14NAgwFCyAKQYCAgNgDciACZ0EQayIKQRd0ayACIApB//8DcUEIanRB////A3FyC75DAACAP15FDQMgEA0BCyAEQRB0DAELIAxFBEAgB0EQdCIEQYCAgPwHciACRQ0BGiAEIAJBDXRyQYCAgP4HcgwBCyAHQRB0IgQgCEENdEGAgID8AHEgAkENdHJBgICAwANqciAIDQAaIARBgICA2ANyIAJnQRBrIgRBF3RrIAIgBEH//wNxQQhqdEH///8DcXILQwAAgD8hAb4iMUMAAIA/XgRAIDEQxgVDVPgtQJRDAACAP5KRQwAAgL+SQwAAgD6UQwAAgD+SIQELQwAAAEBDAACAPyABIAFDAACAP10bIgEgAUMAAABAXhu8IgdB////A3EhCCAHQYCAgIB4cSEEAkAgB0GAgID8B3EiAkGAgID8B0YEQCAIQQ12IARBEHZyQYAEQQAgCBtyQYD4AXIhBAwBCyAEQRB2IQQgAkGAgIC4BE0EQCACQYCAgMQDTwRAIAdBDHYgB0H/3wBxQQBHcSACQQ12IAhBDXZqQYCAAWogBHJqIQQMAgsgAkGAgICYA0kNASAIQYCAgARyIgdB/gAgAkEXdiIIa3YhAiAHQR0gCGsiCHZBAXEEfyACQQMgCHRBAWsgB3FBAEdqBSACCyAEciEEDAELIARBgPgBciEECyALIAQ7AQALIAZBJGohBiAJIAVBAWoiBUcNAAsLIANBADYCjAEgA0KAgICAwAA3AoQBIANBhAFqQajBwQAQiwYgAygCiAFBADYCAEEBIQUgA0EBNgKMASADQoCAgIDAADcCYCADQgA3AmhBBBBxIgJFDQAgAkEANgIAIANB4ABqQbjBwQAQpAYgAygCZCADKAJsIgYgAygCaGoiBCADKAJgIgdBACAEIAdPG2tBDGxqIgRBATYCCCAEIAI2AgQgBEEBNgIAIAMgBkEBajYCbCADKAJsIgJFDQIgA0HQAGqtQoCAgIAQhCEdIANBQGutIhpCgICAgBCEIR8gA0E0aq1CgICAgNABhCEeIBpCgICAgNABhCEgIANBuAFqrUKAgICAkAKEISEgA0GQAWqtQoCAgICgAoQhIiADQYABaq1CgICAgLAChCEjIANBnAJqIRUgA0HoAWohEyADQeQBaiELIANBmAFqIRQgA0G8AWohECADQYQCaiESAkADQCADIAJBAWs2AmwgAyADKAJoIgJBAWoiBCADKAJgIgVBACAEIAVPG2s2AmggAygCZCACQQxsaiICKAIAIg1BgICAgHhGDQMgAikCBCEaIANBADYC+AIgA0KAgICAwAA3AvACIBqnIQUgGkIeiKdB/P///wdxIgIEQCACIAVqIRFBACEKQQQhBiAFIQkDQCAKIQICfwJAIAkoAgAiByAAKAIIIgRJBEAgACgCBCAHQSRsaiIMLwEcIQRBACEKQQAgDC8BHiIIQf//AXEiDkGA+AFLDQIaQQAgBEH//wFxIg9BgPgBSw0CGiAIwUEASA0BIAQgCEkgBMFBAE4NAhogCCAPckEARwwCCyAHIARB1MDHABCMBwALIATBQQBIIAQgCEtxCyEPIAggBCAPGyAEIA5BgfgBSRshBAJAIAwvASAiCEH//wFxIg5BgPgBSw0AIARB//8BcSIPQYD4AUsNACAIwUEATgRAIATBQQBOBEAgCCAEQf//A3FLIQoMAgsgCCAPckEARyEKDAELIATBQQBIIAggBEH//wNxSXEhCgsgDC8BFCEMAn8gCCAEIAobIAQgDkGB+AFJGyIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEEIAhBgIACcSEKIAhBgPgBcSIIQYD4AUYEQCAKQRB0IghBgICA/AdyIARFDQEaIAggBEENdHJBgICA/gdyDAELIApBEHQiCiAIQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2pyIAgNABogCkGAgIDYA3IgBGdBEGsiCEEXdGsgBCAIQf//A3FBCGp0Qf///wNxcgu+EIkEITFDAACAPyEBAn8gDEEQdCAMQf//AXFFDQAaIAxB/wdxIQQgDEGAgAJxIQggDEGA+AFxIgpBgPgBRgRAIAhBEHQiCEGAgID8B3IgBEUNARogCCAEQQ10ckGAgID+B3IMAQsgCEEQdCIIIApBDXRBgICA/ABxIARBDXRyQYCAgMADanIgCg0AGiAIQYCAgNgDciAEZ0EQayIIQRd0ayAEIAhB//8DcUEIanRB////A3FyC74iMkMAAIA/XgRAIDIQxgVDVPgtQJRDAACAP5KRIQELIAMoAvACIAJGBEAgA0HwAmpByJXBABD5BSADKAL0AiEGCyAGIAJBA3RqIgQgBzYCBCAEIDEgMZIgAZQiATgCACADIAJBAWoiCjYC+AICQCACRQRAQQAhBAwBCyABIAFcBEADQAJAIAYgAkEBayIMQQF2IgRBA3RqIggqAgAiMSAxWyABIDFfRXENACAHIAhBBGooAgBLDQAgAiEEDAMLIAYgAkEDdGogCCkCADcCACAEIQIgDEECTw0ADAILAAsDQCAGIAJBAWsiDEEBdiIEQQN0aiIIKgIAIjEgMVsgASAxX0VxQX8gASAxYBsiDkEATCAHIAhBBGooAgBNIA4bBEAgAiEEDAILIAYgAkEDdGogCCkCADcCACAEIQIgDEEBSw0ACwsgBiAEQQN0aiICIAc2AgQgAiABOAIAIAlBBGoiCSARRw0ACwsgDQRAIAVBBGsoAgAiAkF4cSIEIA1BAnQiBkEEQQggAkEDcSICG2pJDQYgAkEAIAQgBkEnaksbDQcgBRCiAgsCQAJAAkAgAygC+AIiCUUNACADKAKMAUH/vwRqQYCA/P8DcSEMA0AgAyAJQQFrIgQ2AvgCIAMoAvQCIgcgBEEDdGoiAigCBCEFIAIqAgAhMQJAIARFBEAgMSEBIAUhCgwBCyAHKAIEIQogByAFNgIEIAcqAgAhASAHIDE4AgBBACECQQEhBiAJQQRPBEAgBEECayICQQAgAiAETRshCEEAIQQDQCAHIARBA3RqIAcgBiAHIAZBA3RqIgJBCGoqAgAiMiAyWyAyIAIqAgAiM2BFcSIEIARBfyAyIDNfGyAzIDNcGyIEQQBMIAJBBGooAgAgAkEMaigCAE0gBBtqIgJBA3RqKQIANwIAIAJBAXQiDUEBciEGIAIhBCAIIA1LDQALCwJAAkAgCUECayAGRgRAIAcgAkEDdGogByAGQQN0aiICKQIANwIAIAIgBTYCBCACIDE4AgAgBiECDAELIAcgAkEDdGoiBCAFNgIEIAQgMTgCACACDQBBACEEDAELIDEgMVwEQANAAkAgByACQQFrIghBAXYiBEEDdGoiBioCACIyIDJbIDEgMl9FcQ0AIAUgBkEEaigCAEsNACACIQQMAwsgByACQQN0aiAGKQIANwIAIAQhAiAIQQJPDQAMAgsACwNAIAcgAkEBayIIQQF2IgRBA3RqIgYqAgAiMiAyWyAxIDJfRXFBfyAxIDJgGyIJQQBMIAUgBkEEaigCAE0gCRsEQCACIQQMAgsgByACQQN0aiAGKQIANwIAIAQhAiAIQQFLDQALCyAHIARBA3RqIgIgBTYCBCACIDE4AgALIANBkAFqIAAoAhAgACgCFCAKEOgCIAMoAowBIQICQAJAIAMoArQBIgRBCUkiBUUEQCADKAKUASACaiIIIAxLDQEMAgsgAiAEaiIIIAxNDQELIANB8AJqIAEgChDxBCADICA3A1AgAyACs0MAAIA3lDgCQCADQgE3AuwBIANBATYC5AEgA0H4wcEANgLgASADIANB0ABqNgLoASADQbgBaiADQeABahDsAyADKAK4ASICBEAgAygCvAEiBkEEaygCACIHQXhxIghBBEEIIAdBA3EiBxsgAmpJDQsgB0EAIAggAkEnaksbDQwgBhCiAgsgBUUEQCADKAKYASICQQRrKAIAIgVBeHEiBiAEQQJ0IgRBBEEIIAVBA3EiBRtqSQ0LIAVBACAGIARBJ2pLGw0MIAIQogILIAMoAvgCIgJFDQIgAygC9AIiBCACQQN0IgZqIQggACgCBCEKIAAoAgghB/0MAACA/wAAgP8AAID/AACA/yEu/QwAAIB/AACAfwAAgH8AAIB/IS9BACEFAkACQAJAAkACQANAIAQgBWpBBGooAgAiAiAHTw0BIANB4AFqIgkgCiACQSRsaiICEJoDIAP9AATgASEtIAkgAikCABDLAiAuIAL9XQIIIAIqAhAiAf0gAiAB/SADIjAgLf0MbxKDOm8SgzpvEoM6bxKDOv3rAf0MAADAPwAAwD8AAMA/AADAP/3mASIuIC39DQgJCgsICQoLCAkKCwABAgNDAACAPyAD/QAE4AEiLf0fACIBIAEgAZIiNJQiNyAt/R8BIjEgMSAxkiIzlCI4kpP9EyABIC39HwIiNSA1kiIylCI5IC39HwMiNiAzlCI6kv0gACAxIDKUIjEgNiA0lCI0k/0gAf3gAf3mASAuIC39DQQFBgcEBQYHBAUGBwABAgMgMSA0kv0TIAEgM5QiASA2IDKUIjGT/SAAQwAAgD8gNyA1IDKUIjKSk/0gAf3gAf3mASAuIC39DQABAgMAAQIDAAECAwABAgMgOSA6k/0TQwAAgD8gOCAykpP9IAAgASAxkv0gAf3gAf3mAf3kAf3kASIt/eQB/esBIS4gLyAwIC395QH96gEhLyAGIAVBCGoiBUcNAAsgLiAv/eUBIi0gLSAt/Q0ICQoLCAkKCwABAgMAAQID/esBIjAgMCAt/Q0EBQYHAAECAwABAgMAAQID/esB/R8AIC0gLSAt/Q0ICQoLCAkKCwQFBgcEBQYH/eoBIjAgMCAt/Q0EBQYHAAECAwABAgMAAQID/eoB/R8AQwAAQECUYEUEQCADQgQ3AugCIANCADcC4AIgA0KAgICAwAA3AtgCIANCBDcC0AIgA0IANwLIAiADQoCAgIDAADcCwAIgA0IENwK4AiADQgA3ArACIANCgICAgMAANwKoAiADQgQ3AqACIANCADcCmAIgA0KAgICAwAA3ApACIC8gLv3kAf0MAAAAPwAAAD8AAAA/AAAAP/3mASIt/R8AIQEgLf0fAiExIC39HwEhMkEAIQIgAygC8AIhBwNAIAIgBGpBBGooAgAiBSAAKAIIIghPDQMgA0GQAmogFSAAKAIEIAVBJGxqIggqAgggAV0bQQBBGCAIKgIMIDJdG2oiCkEIQTggCCoCECAxXSIIG2oiDCgCACIJIApBAEEwIAgbaiINKAIARgRAIA1BsMLBABCLBgsgCkEEQTQgCBtqKAIAIAwgCUEBajYCACAJQQJ0aiAFNgIAIAYgAkEIaiICRw0ACyAHBEAgBEEEaygCACICQXhxIgUgB0EDdCIGQQRBCCACQQNxIgIbakkNESACQQAgBSAGQSdqSxsNEiAEEKICC0EgEHEiAkUNDSACIAMoApgCNgIAIAIgAygCpAI2AgQgAiADKAKwAjYCCCACIAMoArwCNgIMIAIgAygCyAI2AhAgAiADKALUAjYCFCACIAMoAuACNgIYIAIgAygC7AI2AhwgA0EINgLAASADIAI2ArwBIANBCDYCuAEgAyAhNwOQASADQgE3AuwBIANBAjYC5AEgA0GQwsEANgLgASADIANBkAFqNgLoASADQeABahDrAiADKAK4ASICBEAgAygCvAEiBEEEaygCACIFQXhxIgYgAkECdCICQQRBCCAFQQNxIgUbakkNESAFQQAgBiACQSdqSxsNBCAEEKICC0HgABBxIgJFDQ0gAiADQZACakHgAPwKAAAgAigCACEEIAJBgICAgHg2AgAgBEGAgICAeEYNBCACQQRqIg4pAgAhGiACKAIMIQcgAkGAgICAeDYCDCAHQYCAgIB4Rg0EIAIpAhAhGyACKAIkIQggAkGAgICAeDYCJCAIQYCAgIB4Rg0EIAIpAighHCACKAIYIQogAkGAgICAeDYCGCAKQYCAgIB4Rg0EIAIpAhwhJCACKAJIIQkgAkGAgICAeDYCSCAJQYCAgIB4Rg0EIAIpAkwhJSACKAJUIQwgAkGAgICAeDYCVCAMQYCAgIB4Rg0EIAIpAlghJiACKAI8IQ0gAkGAgICAeDYCPCANQYCAgIB4Rg0EIAIpAkAhJyACKAIwIREgAkGAgICAeDYCMCARQYCAgIB4Rg0EIAIpAjQhKCADKAJsIgUgAygCYCIGRgRAIANB4ABqQaDCwQAQpAYgAygCYCEGIAMoAmwhBQsgAygCZCADKAJoIAVqIg8gBkEAIAYgD00ba0EMbGoiBiAaNwIEIAYgBDYCACADIAVBAWoiBTYCbCADKAJgIgYgBUYEQCADQeAAakGgwsEAEKQGIAMoAmAhBiADKAJsIQULIAMoAmQgAygCaCAFaiIEIAZBACAEIAZPG2tBDGxqIgQgGzcCBCAEIAc2AgAgAyAFQQFqIgU2AmwgAygCYCIGIAVGBEAgA0HgAGpBoMLBABCkBiADKAJgIQYgAygCbCEFCyADKAJkIAMoAmggBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBw3AgQgBCAINgIAIAMgBUEBaiIFNgJsIAMoAmAiBiAFRgRAIANB4ABqQaDCwQAQpAYgAygCYCEGIAMoAmwhBQsgAygCZCADKAJoIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAkNwIEIAQgCjYCACADIAVBAWoiBTYCbCADKAJgIgYgBUYEQCADQeAAakGgwsEAEKQGIAMoAmAhBiADKAJsIQULIAMoAmQgAygCaCAFaiIEIAZBACAEIAZPG2tBDGxqIgQgJTcCBCAEIAk2AgAgAyAFQQFqIgU2AmwgAygCYCIGIAVGBEAgA0HgAGpBoMLBABCkBiADKAJgIQYgAygCbCEFCyADKAJkIAMoAmggBWoiBCAGQQAgBCAGTxtrQQxsaiIEICY3AgQgBCAMNgIAIAMgBUEBaiIFNgJsIAMoAmAiBiAFRgRAIANB4ABqQaDCwQAQpAYgAygCYCEGIAMoAmwhBQsgAygCZCADKAJoIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAnNwIEIAQgDTYCACADIAVBAWoiBTYCbCADKAJgIgYgBUYEQCADQeAAakGgwsEAEKQGIAMoAmAhBiADKAJsIQULIAMoAmQgAygCaCAFaiIEIAZBACAEIAZPG2tBDGxqIgQgKDcCBCAEIBE2AgAgAyAFQQFqNgJsIAIoAgAiBEGAgICAeHJBgICAgHhHBEAgDigCACIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAgwiBEGAgICAeHJBgICAgHhHBEAgAigCECIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAhgiBEGAgICAeHJBgICAgHhHBEAgAigCHCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAiQiBEGAgICAeHJBgICAgHhHBEAgAigCKCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAjAiBEGAgICAeHJBgICAgHhHBEAgAigCNCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAjwiBEGAgICAeHJBgICAgHhHBEAgAigCQCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAkgiBEGAgICAeHJBgICAgHhHBEAgAigCTCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAIoAlQiBEGAgICAeHJBgICAgHhHBEAgAigCWCIFQQRrKAIAIgZBeHEiByAEQQJ0IgRBBEEIIAZBA3EiBhtqSQ0RIAZBACAHIARBJ2pLGw0SIAUQogILIAJBBGsoAgAiBEF4cUHkAEHoACAEQQNxIgUbSQ0QIAVBACAEQYgBTxsNBSACEKICDAkLIAMgLyAu/eQB/QwAAAA/AAAAPwAAAD8AAAA//eYB/QsEACADQQBBAUECIC39HwEiASAt/R8CIjFgGyICIDEgLf0fACIyXxsgAiABIDJfGyICOgCAASADIAMgAkECdHIqAgA4AjQgAyAINgLEASADIAMoAvACNgLAASADIAQ2ArwBIAMgBDYCuAEgAyAANgKUASADIANBNGo2ApgBIAMgA0GAAWo2ApABIANB4AFqIgUgA0G4AWoiBiADQZABahCOBCADKQPgASEcIAMpAuwBIRogAygC9AEhAiADKALoASEEIAMgLf0LBJABIAMgBDYCQCADIAI2AlAgA0EGNgK8ASADQezCwQA2ArgBIANCBTcCxAEgAyAdNwOAAiADIB83A/gBIAMgHjcD8AEgAyAiNwPoASADICM3A+ABIAMgBTYCwAEgBhDrAgJAIAIgBE0EQCAaIRsgAiEGIBwhGiAEIQIMAQsgHCEbIAQhBgsgAyACNgLwASADQQI2AuQBIAMgBjYC/AEgAyAaNwLoASADIBs3AvQBQQEhAgJAIBqnIgRBgICAgHhGDQAgAykC7AEhGiADKAJsIgIgAygCYCIFRgRAIANB4ABqQZzDwQAQpAYgAygCYCEFIAMoAmwhAgsgAygCZCADKAJoIAJqIgYgBUEAIAUgBk0ba0EMbGoiBSAaNwIEIAUgBDYCACADIAJBAWo2AmxBAiECIBunIgRBgICAgHhGDQAgAykC+AEhGiADKAJsIgUgAygCYCIGRgRAIANB4ABqQZzDwQAQpAYgAygCYCEGIAMoAmwhBQsgAygCZCADKAJoIAVqIgcgBkEAIAYgB00ba0EMbGoiBiAaNwIEIAYgBDYCACADIAVBAWo2AmwLIAMgAjYC4AEgA0HgAWoQlgYMCAsgAiAHQdTAxwAQjAcACyAFIAhB1MDHABCMBwALQYyNyABBLkG8jcgAEOsHDAkLQbzDwQAQ3QkACwwLC0EAIQYgA0EANgLgASADQQA2AoQCQQghBwJAAkACfyAIIAJrIgRBACAEIAhNGyIEQQlJBEAgCyEJIBIMAQsgA0EQaiADQeABakF/IARBAWtndkEBahDoAyADKAIQIgRBgYCAgHhHBEAgBA0KQdiVxwBBEUHUzMcAEOsHAAsgAygChAIiB0EJSQRAIAchBiALIQlBCCEHIBIMAQsgAygC5AEhBiADKALoASEJIAsLIhEgBiAHSQR/IAcgBkF/c2oiBCAIIAIgAiAISRsiDiACayIFIAQgBUkbQQFqIgRBBEsEQCAJIAZBAnRqIQUgAv0R/QwAAAAAAQAAAAIAAAADAAAA/a4BIS0gBCAEQQNxIgRBBCAEG2siDSEEA0AgBSAt/QsCACAFQRBqIQUgLf0MBAAAAAQAAAAEAAAABAAAAP2uASEtIARBBGsiBA0ACyAGIA1qIQYgAiANaiECCyAJIAZBAnRqIQUDQCACIA5GDQIgBSACNgIAIAVBBGohBSACQQFqIQIgByAGQQFqIgZHDQALIAcFIAYLNgIAIAIgCE8NAQNAAn8gAygChAIiBEEJTwRAIAMoAuQBIQUgAygC6AEhByALDAELIAQhBSALIQdBCCEEIBILIQYgBCAFRgR/IANB4AFqEM0GIAMoAugBIQcgCyEGIAMoAuQBBSAFC0ECdCAHaiACNgIAIAYgBigCAEEBajYCACACQQFqIgIgCEcNAAsMAQsgESAGNgIACyADQdgBaiADQYACaikCADcDACADQcgBaiADQfABav0AAgD9CwMAIAMgA/0AAuAB/QsDuAEgACgCECAAKAIUIAogAygC3AEiBUEJTwR/IAMoArwBIQUgAygCwAEFIBALIAUQ5AUgAygClAEhBCADKAKQASECIBNBGGogFEEYaigCADYCACATQRBqIBRBEGopAgA3AgAgEyAU/QACAP0LAgAgAyACNgLgASADIAQgAygCtAEiCCAIQQhLIgIbIg02AowCIAMgCEEAIAIbNgKEAiADQQAgBCACGzYC5AEgDQRAIAMoAugBIAsgAhshEUEAIQogAygCjAEhCQNAIAMgCiICQQFqIgo2AogCIBEgAkECdGooAgAhBSADKAKEASAJRgRAIANBhAFqQcjBwQAQiwYLIAMoAogBIAlBAnRqIAU2AgAgAyAJQQFqIgk2AowBAn8CQCAAKAIIIgIgBUsEQCAAKAIEIAVBJGxqIgYvARwhAkEAIQdBACAGLwEeIgRB//8BcSIOQYD4AUsNAhpBACACQf//AXEiD0GA+AFLDQIaIATBQQBIDQEgAiAESSACwUEATg0CGiAEIA9yQQBHDAILIAUgAkHUwMcAEIwHAAsgAsFBAEggAiAES3ELIQ8gBCACIA8bIAIgDkGB+AFJGyECAkAgBi8BICIEQf//AXEiDkGA+AFLDQAgAkH//wFxIg9BgPgBSw0AIATBQQBOBEAgAsFBAE4EQCAEIAJB//8DcUshBwwCCyAEIA9yQQBHIQcMAQsgAsFBAEggBCACQf//A3FJcSEHCyAGLwEUIQYCfyAEIAIgBxsgAiAOQYH4AUkbIgRB//8BcUUEQCAEQRB0DAELIARB/wdxIQIgBEGAgAJxIQcgBEGA+AFxIgRBgPgBRgRAIAdBEHQiBEGAgID8B3IgAkUNARogBCACQQ10ckGAgID+B3IMAQsgB0EQdCIHIARBDXRBgICA/ABxIAJBDXRyQYCAgMADanIgBA0AGiAHQYCAgNgDciACZ0EQayIEQRd0ayACIARB//8DcUEIanRB////A3FyC74QiQQhMUMAAIA/IQECfyAGQRB0IAZB//8BcUUNABogBkH/B3EhAiAGQYCAAnEhBCAGQYD4AXEiBkGA+AFGBEAgBEEQdCIEQYCAgPwHciACRQ0BGiAEIAJBDXRyQYCAgP4HcgwBCyAEQRB0IgQgBkENdEGAgID8AHEgAkENdHJBgICAwANqciAGDQAaIARBgICA2ANyIAJnQRBrIgRBF3RrIAIgBEH//wNxQQhqdEH///8DcXILviIyQwAAgD9eBEAgMhDGBUNU+C1AlEMAAIA/kpEhAQsgAygC+AIiAiADKALwAkYEQCADQfACakHIlcEAEPkFCyADKAL0AiIGIAJBA3RqIgQgBTYCBCAEIDEgMZIgAZQiATgCACADIAJBAWo2AvgCAkAgAkUEQEEAIQQMAQsgASABXARAA0ACQCAGIAJBAWsiDkEBdiIEQQN0aiIHKgIAIjEgMVsgASAxX0VxDQAgBSAHQQRqKAIASw0AIAIhBAwDCyAGIAJBA3RqIAcpAgA3AgAgBCECIA5BAk8NAAwCCwALA0AgBiACQQFrIg5BAXYiBEEDdGoiByoCACIxIDFbIAEgMV9FcUF/IAEgMWAbIg9BAEwgBSAHQQRqKAIATSAPGwRAIAIhBAwCCyAGIAJBA3RqIAcpAgA3AgAgBCECIA5BAUsNAAsLIAYgBEEDdGoiAiAFNgIEIAIgATgCACAKIA1HDQALCyAIQQlPBEAgAygC6AEiAkEEaygCACIEQXhxIgUgCEECdCIGQQRBCCAEQQNxIgQbakkNBCAEQQAgBSAGQSdqSxsNCyACEKICCyADKALcASICQQlPBEAgAygCwAEiBEEEaygCACIFQXhxIgYgAkECdCICQQRBCCAFQQNxIgUbakkNCiAFQQAgBiACQSdqSxsNCyAEEKICCyADKAL4AiIJDQALCyADKALwAiICRQ0AIAMoAvQCIgRBBGsoAgAiBUF4cSIGIAJBA3QiAkEEQQggBUEDcSIFG2pJDQcgBUEAIAYgAkEnaksbDQMgBBCiAgsgAygCbCICDQEMBAsLDAQLDAQLAAsgAygCjAEhBQsgAyAAKAIIIgI2ArgBIAMgBTYCkAEgAiAFRwRAIANBADYC4AFBACADQZABaiADQbgBaiADQeABakGsw8EAEPUHAAsgACADKAKIASIAIAUQ8AEgA0HgAGoQ6wMCQCADKAKEASICBEAgAEEEaygCACIEQXhxIgUgAkECdCICQQRBCCAEQQNxIgQbakkNAiAEQQAgBSACQSdqSxsNASAAEKICCyADQYADaiQADwsMAQtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQZj6xwBB1gAgA0H/AmpBpO7BAEG07sEAEOAGAAuSvAEEF38SfgR7DH0jAEGAA2siAyQAIAAQogEgAyACOgAnIAMgATgCICADIAAoAggiBTYCYCADIANBJ2qtQoCAgIDAAYQ3A8gBIAMgA0Egaq1CgICAgNABhDcDwAEgAyADQeAAaq0iGkKAgICAEIQ3A7gBIANCAzcC7AEgA0EDNgLkASADQYDjwQA2AuABIAMgA0G4AWo2AugBIANBkAFqIANB4AFqEOwDAkACQAJAIAMoApABIgIEQCADKAKUASIEQQRrKAIAIgZBeHEiBUEEQQggBkEDcSIGGyACakkNASAGQQAgBSACQSdqSxsNAiAEEKICIAAoAgghBQsCQAJAAkACQCAFRQ0AIAVBAnQiCBBxIgdFDQFBACECAkACQAJAIAVBBE8EQP0MAAAAAAEAAAACAAAAAwAAACEsIAchBiAFQfz//z9xIgIhBANAIAYgLP0LAgAgBkEQaiEGICz9DAQAAAAEAAAABAAAAAQAAAD9rgEhLCAEQQRrIgQNAAsgAiAFRg0BCyAHIAJBAnRqIQYDQCAGIAI2AgAgBkEEaiEGIAUgAkEBaiICRw0ACyADIAA2AuQBIAMgA0H8AGo2AuABIAMgA0HgAWo2ArgBIAVBAUYNAgwBCyADIAA2AuQBIAMgA0H8AGo2AuABIAMgA0HgAWo2ArgBCyAFQRVPBEAgA0G4AWohBiMAQYAgayIJJAACQAJAAkACQAJAQYCJ+gAgBSAFQYCJ+gBPGyIEIAUgBUEBdmsiAiACIARJGyIEQYEITwRAIAJB/////wNLDQJBMCAEIARBME0bIgpBAnQiAkH9////B08NAiACEHEiBEUNAyAHIAUgBCAKIAVBwQBJIAYQYSAEQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyACakkNBCAGQQAgCiACQSdqSxsNBSAEEKICDAELIAcgBSAJQYAIIAVBwQBJIAYQYQsgCUGAIGokAAwFC0HYlcEAEP8HCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0EEIQIDQCAHIAIgB2ogA0HgAWoQygEgCCACQQRqIgJHDQALCyAAIAcgBRCJAgJ/AkACQCAHQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAIak8EQCACQQAgBCAIQSdqSxsNCSAHEKICIAAQmgQgACgCCEUNASAAKAIEIgQtABMiAiAELQASIgYgBC0AESIFIAUgBkkbIgYgAiAGSxsiBQR9QwAAQMEgACoCRCAALQBYQQJGIgIbIgFDAAAQQSAAKgJIIAIbIAGTQwAAfkOVIAVBAWtB/wFxs5SSEIkEIgEgAZIFQwAAAAALITAgBEEMai8BACIGQf//AXFFBEAgBkEQdAwECyAGQf8HcSECIAZBgIACcSEHIAZBgPgBcSIGQYD4AUYEQCAHQRB0IgZBgICA/AdyIAJFDQQaIAYgAkENdHJBgICA/gdyDAQLIAdBEHQhByAGRQ0CIAZBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAHcgwDCwwHC0EAQQBB3LvHABCMBwALIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAHQYCAgNgDciACQRd0a3ILQwAAgD8hAb4iMUMAAIA/XgRAIDEQxgVDVPgtQJRDAACAP5KRIQELIAMqAiAhMSADQf//ASAwIAGUQ703hjUQ4AgQxgUgMRDGBZWNIgH8AEGAgH4gAUMAAADHYBsgAUMA/v9GXhtBACABIAFbGzsBKCADIAUEfUMAAEDBIAAqAkQgAC0AWEECRiICGyIBQwAAEEEgACoCSCACGyABk0MAAH5DlSAFQQFrQf8BcbOUkhCJBCIBIAGSBUMAAAAACwJ/IARBDGovAQAiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAiAEQYCAAnEhBiAEQYD4AXEiBEGA+AFGBEAgBkEQdCIEQYCAgPwHciACRQ0BGiAEIAJBDXRyQYCAgP4HcgwBCyAGQRB0IgYgBEENdEGAgID8AHEgAkENdHJBgICAwANqciAEDQAaIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAGQYCAgNgDciACQRd0a3ILviIBQwAAgD9eBH0gARDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlDgCYCADIBpCgICAgNABhDcDwAEgAyADQShqrUKAgICA4AGENwO4ASADQgI3AuwBIANBAjYC5AEgA0G448EANgLgASADIANBuAFqNgLoASADQZABaiADQeABahDsAyADKAKQASICBEAgAygClAEiBEEEaygCACIGQXhxIgVBBEEIIAZBA3EiBhsgAmpJDQUgBkEAIAUgAkEnaksbDQYgBBCiAgsgAyADLwEoOwEqIAMgACgCCDYCLCADQQA2AjAgA0EANgI8IANCgICAgIABNwI0IANBADYCSCADQoCAgIDAADcCQEHYtskAKAIAIgJFBEAQkwUhAgsgAigCACACKAIEKAIMEQQAIQIgA0HwmsgA/QADAP0LA+ABIAMgAq1Cxs7rhrfq7a0ShSIbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEQpK23Z0FhELSgaqbq/qC16d/fiIaQoDoAoNCKIYgGkKAgJQDg0IYhiAaQoCAgKgKg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQoCAgICAgICARIQgG0LYotHvwqnlvy1+hSIcQu3cspuNpYnMywCFIhpC2KLR78Kp5b8tfiAaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQtKBqpur+oLXp39+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhISFQov9+pfHxteXhn+FIhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIRC0oGqm6v6gtenf34iG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhCAaQtii0e/CqeW/LX6FIhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIRCiKyRp/aIgJywf34iG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhCAaQs+O/8e788bUd36FIBqJNwOIAiADIBxC1oLNoZD9lI5LhSIaQtii0e/CqeW/LX4gGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEhUL8w7ynyZXV5OgAhSIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQtKBqpur+oLXp39+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIQgGkLYotHvwqnlvy1+hSIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQoiskaf2iICcsH9+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIQgGkLPjv/Hu/PG1Hd+hSAaiTcDgAIgAyAcQvzDvKfJldXk6ACFIhpC2KLR78Kp5b8tfiAaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQtKBqpur+oLXp39+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhISFQu3cspuNpYnMywCFIhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIRC0oGqm6v6gtenf34iG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhCAaQtii0e/CqeW/LX6FIhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIRCiKyRp/aIgJywf34iG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAbQgiIQoCAgPgPgyAbQhiIQoCA/AeDhCAbQiiIQoD+A4MgG0I4iISEhCAaQs+O/8e788bUd36FIBqJNwP4ASADIBxCi/36l8fG15eGf4UiGkLYotHvwqnlvy1+IBpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIRC0oGqm6v6gtenf34iGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhIVC1oLNoZD9lI5LhSIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQtKBqpur+oLXp39+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIQgGkLYotHvwqnlvy1+hSIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEQoiskaf2iICcsH9+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIQgGkLPjv/Hu/PG1Hd+hSAaiTcD8AEgA0HQAGqtQoCAgIAQhCEjIANBLGqtQoCAgIAQhCEkIANBMGqtQoCAgIAQhCElIANBzABqrUKAgICA0AGEISYgA0Eqaq1CgICAgOABhCEnIANBgAFqrSIoQoCAgIDwAYQhKSADQdwAaq1CgICAgPABhCEqIANBvAFqIQ0gA0HkAGohEiADQcwBaiEPAkACQAJAAkADQCADIAMqAiAgAy4BKrIQtwo4AkwCQCADKAIwIgIgAygCLE8NAANAQwAAgD8hAQJ/AkAgACgCCCIEIAJLBEAgACgCBCACQRhsaiIELQATIgYgBC0AEiIFIAQtABEiByAFIAdLGyIFIAUgBkkbIgYEfUMAAEDBIAAqAkQgAC0AWEECRiIFGyIwQwAAEEEgACoCSCAFGyAwk0MAAH5DlSAGQQFrQf8BcbOUkhCJBCIwIDCSBUMAAAAACyEwIARBDGovAQAiBkH//wFxRQRAIAZBEHQMAwsgBkH/B3EhBCAGQYCAAnEhBSAGQYD4AXEiBkGA+AFGBEAgBUEQdCIGQYCAgPwHciAERQ0DGiAGIARBDXRyQYCAgP4HcgwDCyAFQRB0IQUgBkUNASAGQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIMAgsgAiAEQdy7xwAQjAcACyAEIARnQRBrIgRB//8DcUEIanRB////A3EgBUGAgIDYA3IgBEEXdGtyC74iMUMAAIA/XgRAIDEQxgVDVPgtQJRDAACAP5KRIQELIAMqAkwgMCABlF0NASADKAI8IgQgAygCNEYEQCADQTRqEJMGCyADKAI4IARBBXRqIgYgAjYCACAGQgA3AgggBkEQav0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAyAEQQFqNgI8IAMgAygCMEEBaiICNgIwIAIgAygCLEkNAAsLIAMgJDcD0AEgAyAlNwPIASADICY3A8ABIAMgJzcDuAFBPBBxIgJFDQYgA0EANgL4AiADIAI2AvQCIANBPDYC8AIgA0IENwKcASADQQQ2ApQBIANB+OPBADYCkAEgAyADQbgBajYCmAECQCADQfACakGM78EAIANBkAFqEMEDRQRAIAMoAvACIgIEQCADKAL0AiIEQQRrKAIAIgZBeHEiBUEEQQggBkEDcSIGGyACakkNDCAGQQAgBSACQSdqSxsNDSAEEKICCwJAAkAgAygCPCIHRQ0AIAMoAjgiBSAHQQV0aiEIIAP9CQJMIS0gBSECA0AgAigCACIEIAAoAggiBk8NAiACQQhqIAAoAgQgBEEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgLf3nAf1oIiz9HwD8BCIbQv///wCDIhpCEIYgG0IghoQgGoRC/4GA+I+AwA+DQoECfkKP4IP4gJ7AhxCDQhF+QsPhsJiMhsPhEINCBX5CyaSSyaSSyaQSgyAbQhWIIh9CP4aEICz9HwH8BCIcQv///wCDIhpCEIYgHEIghoQgGoRC/4GA+I+AwA+DQoECfkKP4IP4gJ7AhxCDQhF+QsPhsJiMhsPhEINCCn5Cksmkksmkkskkg4QgLP0fAvwEIhpC////AIMiHUIQhiAaQiCGhCAdhEL/gYD4j4DAD4NCgQJ+Qo/gg/iAnsCHEINCEX5Cw+GwmIyGw+EQg0IUfkKkksmkksmkkskAg4Q3AwAgAkEYaiAcQiqIIh1CEIYgHUIghoQgHYRC/4GA+I+AwA+DQoECfkKP4IP4gJ7AhxCDQhF+QsPhsJiMhsPhEINCBX5CyKSSyaSSyaQSgyAcQoCAgICAgICAgH+DhEIBiCAbQiqIIh5CEIYgHkIghoQgHoRC/4GA+I+AwA+DQoECfkKP4IP4gJ7AhxCDQhF+QsPhsJiMhsPhEINCBX5CyaSSyaSSyaQSgyIeIBtCgICAgICAgICAf4OEQgKIhCAaQiqIIhtCEIYgG0IghoQgG4RC/4GA+I+AwA+DQoECfkKP4IP4gJ7AhxCDQhF+QsPhsJiMhsPhEINCBX4iG0LIpJLJpJLJpBKDIBpCgICAgICAgICAf4OEIBtCAYOEhDcDACACQRBqIBxCFYgiG0L///8AgyIcQhCGIBtCIIaEIByEQv+BgPiPgMAPg0KBAn5Cj+CD+ICewIcQg0IRfkLD4bCYjIbD4RCDQgV+QsikksmkksmkEoMgHUI/hoQgG0IBg4QgH0L///8AgyIbQhCGIB9CIIaEIBuEQv+BgPiPgMAPg0KBAn5Cj+CD+ICewIcQg0IRfkLD4bCYjIbD4RCDQgV+QgGIQqSSyaSSyaSSCYMgHkI+hoSEIBpCFYgiG0L///8AgyIcQhCGIBtCIIaEIByEQv+BgPiPgMAPg0KBAn5Cj+CD+ICewIcQg0IRfkLD4bCYjIbD4RCDQgp+QpDJpJLJpJLJJIMgGkIUiEICg4SENwMAIAJBIGoiAiAIRw0ACyAHQQFGDQAgB0EVTwRAIAUgBxD+AwwBCyAFQSBqIQZBACEJIAUhDANAIAwhAiAGIQwgAikDOCEcIAIpAygiHSEaAkACQCAdIAIpAwgiG1INACACKQMwIhogAikDECIbUg0AIAIpAxgiGyAcIhpRDQELIBogG1oNACACKQMwIR8gAikDICEeIAkhBgNAAkAgBSAGaiICQSBqIgQgAv0AAwD9CwMAIAJBMGogAkEQav0AAwD9CwMAIAZFBEAgAkEgaiEEIAUhAgwBCwJAIAJBGGspAwAiGyAdIhpSDQAgBSAGakEQaykDACIbIB8iGlINACACQQhrKQMAIhsgHCIaUQ0BCyAGQSBrIQYgGiAbVA0BCwsgAiAeNwMAIARBCGsgHDcDACAEQRBrIB83AwAgBEEYayAdNwMACyAJQSBqIQkgDEEgaiIGIAhHDQALCyADICM3A/ACIAMgBzYCUEEeEHEiAkUNCSADQQA2ApgBIAMgAjYClAEgA0EeNgKQASADQgE3AsQBIANBATYCvAEgA0Go5MEANgK4ASADIANB8AJqNgLAASADQZABakGM78EAIANBuAFqEMEDRQRAIAMoApABIgIEQCADKAKUASIEQQRrKAIAIgZBeHEiBUEEQQggBkEDcSIGGyACakkNDiAGQQAgBSACQSdqSxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyB6QgiIpyEIIHpCIIinIRJBACELDAoLQaiQyAApAwAieUL/AYNCBFENACB5QhCIpyIVIHmnIgNB/wFxQQRGDQEaIHlCCIinIQggeUIgiKchEkEAIQsMCQsgBC8ByAwLQf//AHE7ASYgASARQf//AHEiCDsBJCAIQQ9qQQR2IQICfyAIRQRAQQEhFUEADAELIAJBHmwQcSIVRQ0CIBUhAwJAIAhBEUkNACACQQFrIhBBB3EhCyACQQJrQQdPBEAgEEF4cSEHA0AgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EQakIANwAAIANBFmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBJmr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBNGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQdIAav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HiAGr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANB8ABqQgA3AAAgA0GIAWpCADcAACADQY4BakIANwAAIANB+ABq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQaYBakIANwAAIANBrAFqQgA3AAAgA0GWAWr9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBxAFqQgA3AAAgA0HKAWpCADcAACADQbQBav0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0HoAWpCADcAACADQeIBakIANwAAIANB0gFq/QwAAAAAAAAAAAAAAAAAAAAA/QsAACADQfABaiEDIAdBCGsiBw0ACwsgC0UNAANAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwAAIANBFmpCADcAACADQRBqQgA3AAAgA0EeaiEDIAtBAWsiCw0ACwsgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAAAgA0EWakIANwAAIANBEGpCADcAACACCyEDIAEoApwEIgsEQCABKAKgBCIOQQRrKAIAIhBBeHEiESALQR5sIgtBBEEIIBBBA3EiEBtqSQ0LIBBBACARIAtBJ2pLGw0MIA4QogILIAEgAjYCpAQgASAVNgKgBCABIAM2ApwEAn8CQCAIRQ0AIBUtAAAiA0ECRg0AIARBMGogFUEcai0AADoAACAEIBX9AAAE/QsDyAwgBCAVKQAUNwMoIBUtAAEhCyAVLQACIQcgFS0AAyEIIBUtAB0MAQsgBEEwakEAOgAAIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwPIDCAEQgA3AyhBACEIQQAhB0EAIQtBACEDQQALIRUgASAIOgCFBSABIAc6AIQFIAEgCzoAgwUgASADOgCCBSABIAT9AAPIDP0LAIYFIAEgBCkDKDcAlgUgASAVOgCfBSABQZ4FaiAEQTBqLQAAOgAAIAEgAS8BJCIDQQR2IANBD3FBAEdqIgM7AaAFIAEgAS8BJiILQQR2IAtBD3FBAEdqIgs7AaIFAkACQCADIAtsQQh0IgNBAE4EQAJAIANFBEBBASELDAELIAMQcSILRQ0FIAtBBGstAABBA3FFIANFcg0AIAtBACAD/AsACyABKAIAIhUEQCABKAIEIghBBGsoAgAiEEF4cSICQQRBCCAQQQNxIhAbIBVqSQ0OIBBBACACIBVBJ2pLGw0PIAgQogILIAEgAzYCCCABIAs2AgQgASADNgIAIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQECQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCDCIVBEAgASgCECAVQQEQogcLIAEgAzYCFCABIAs2AhAgASADNgIMIAEvAaAFIAEvAaIFbEEGdCIDQQBIDQICQCADRQRAQQEhCwwBCyADEHEiC0UNBSALQQRrLQAAQQNxRSADRXINACALQQAgA/wLAAsgASgCGCIVBEAgASgCHCAVQQEQogcLIAEgAzYCICABIAs2AhwgASADNgIYIAEvASRBFGoiAxBxIgtFDQQgAwRAIAtB/wAgA/wLAAsgASgCqAQiFQRAIAEoAqwEIBVBARCiBwsgASADNgKwBCABIAs2AqwEIAEgAzYCqARBERBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBEGpBgQE6AAAgA0EIakKBg4aMmLDgwIF/NwAAIAEoArQEIgsEQCABKAK4BCALQQEQogcLIAFBETYCvAQgASADNgK4BCABQRE2ArQEIAEvAaAFIgtBA3QhAwJAIAtFBEBBASELDAELIAMQcSILRQ0FCyADBEAgC0H/ACAD/AsACyABKALABCIVBEAgASgCxAQgFUEBEKIHCyABIAM2AsgEIAEgCzYCxAQgASADNgLABEEJEHEiA0UNBCADQoGDhoyYsODAgX83AAAgA0EIakGBAToAACABKALMBCILBEAgASgC0AQgC0EBEKIHCyABQQk2AtQEIAEgAzYC0AQgAUEJNgLMBCABLwGgBSILQQN0IQMCQCALRQRAQQEhCwwBCyADEHEiC0UNBQsgAwRAIAtB/wAgA/wLAAsgASgC2AQiBwRAIAEoAtwEIAdBARCiBwsgASADNgLgBCABIAs2AtwEIAEgAzYC2ARBCRBxIgNFDQQgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQMAwtB7KzGABD/BwALQfysxgAQ/wcAC0GMrcYAEP8HAAsgEkEHdiASQeAAcUEAR2oiCkECdCERAkAgCkUNACAREHEiCUUNASAJQQRrLQAAQQNxRSARRXINACAJQQAgEfwLAAsCQAJAAkACQCARIBJBBXYiEE8EQCASQSBJDQIgASkD4AMheSABKALoAyELIAkhCCAQIRUDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEgJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEi0AADoAAAwBCyADRQ0AIAggEiAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCC0EAIBAgEUGwrcYAEOoHAAtBACELQaiQyAApAwAieaciA0H/AXFBBEYNACB5QiCIpyESIHlCEIinIRUgeUIIiKchCCAKDQEMCQsgBCAKNgIwIAQgCTYCLCAEIAo2AiggBEHIDGogAUHwAGoiFSAEQShqIBAQsgMgBC0AyAwiC0EdRg0BIAQ1AM0MInkgBEHTDGoxAABCMIYgBEHRDGozAABCIIaEhCJ6QhiIpyESIHpCCIinIRUgBCgC1AwhDiAELQDMDCEDIAQvAcoMIQIgBC0AyQwhByB5pyEIDAgLIAlBBGsoAgAiBkF4cSICQQRBCCAGQQNxIgcbIBFqSQ0KIAdBACACIBFBJ2pLGw0LIAkQogIMBwsCQCABLQAoRQ0AIBVBARC5ASEHIAEgFUEBELkBOgAsIAdB/wFxRQ0AQRMhCwwHCyABIBUQqgUiAzoApAUCQCADRQ0AIAEgFRCqBToApQUgFRCqBQRAIAEgFRCqBUEBcyIDOgBuIAEgAzoAXiABIAM6AE4gASADOgA+IAEgFUEHEK8BOgA8IAEgFUEHEK8BOgBMIAEgFUEHEK8BOgBcIAEgFUEHEK8BOgBsIAEgFUEGEK8BOgA9IAEgFUEGEK8BOgBNIAEgFUEGEK8BOgBdIAEgFUEGEK8BOgBtCyABLQClBUEBRgRAQf8BIQMgASAVEKoFBH8gFUEIELkBBUH/AQs6APYEIAEgFRCqBQR/IBVBCBC5AQVB/wELOgD6BCAVEKoFBEAgFUEIELkBIQMLIAEgAzoA/gQLIAEtAJMBQfIBRw0AQQ8hCwwGCyABIBUQqgU6ACogASAVQQYQuQE6AC0gASAVQQMQuQE6AC4gASAVEKoFIgM6AKYFAkACQAJAIANFDQAgFRCqBQRAIAEgFUEGEK8BNgLwAyABIBVBBhCvATYC9AMgASAVQQYQrwE2AvgDIAEgFUEGEK8BNgL8AyABIBVBBhCvATYCgAQgASAVQQYQrwE2AoQEIAEgFUEGEK8BNgKIBCABIBVBBhCvATYCjAQLIAEtAJMBQfIBRw0AQQ8hCwwBCyAVQQIQuQEhA0EPIQsgAS0AkwFB8gFGDQcgAUEBIAN0Ihg6AKcFAkAgA0EfcSIPRQ0AAkACQEEDIA90QQNrIgNBAE4EQCADEHEiEUUNBiARQQRrLQAAQQNxRSADRXJFBEAgEUEAIAP8CwALIAEpA+ADIXkgASgC6AMhByARIQ4gAyECAkADQCB5UA0BIAcpAwgieiAHKAIEIgitInsgeiB7VBunIgogBygCAGohEAJAIAhC/////w8geiB6Qv////8PWhunayIJQQAgCCAJTxsiCSB5IAKtInsgeSB7VBunIg0gCSANSRsiCUEBRgRAIA4gEC0AADoAAAwBCyAJRQ0AIA4gECAJ/AoAAAsgASB5IAmtInt9Ink3A+ADIAcgeiB7fDcDCCAIIApGDQEgCSAOaiEOIAIgCWsiAg0AC0GokMgAKQMAInpC/wGDQgRRIQwMAgtBASEMQaiQyAApAwAiekL/AYNCBFENAUEAIQsMAgtBuKnGABD/BwALIAFBmAFqISYgESEZIAMhDQJAA0ACQCANQQJNBEAgDARAQQEhCUEAIQpBACEIQQAhEAwCCyAEIHo3A8gMQaiqxgBBNyAEQcgMakGYqsYAQeCqxgAQ4AYACyAZLwAAIBlBAmotAABBEHRyIghBA2oiCUECdiEKAn8gCUH8//8PcSIURQRAQQEhCUEADAELIBQQcSIJRQ0IIAlBBGstAABBA3FFIBRFckUEQCAJQQAgFPwLAAsgCgshECAIIBRNBEAgCEUEQEEAIQpBACEIDAILIAEpA+ADIXkgASgC6AMhByAJIQ4gCCECA0ACQCB5UA0AIAcpAwgieyAHKAIEIhKtInwgeyB8VBunIiIgBygCAGohFgJAIBJC/////w8geyB7Qv////8PWhunayIUQQAgEiAUTxsiFCB5IAKtInwgeSB8VBunIhsgFCAbSRsiFEEBRgRAIA4gFi0AADoAAAwBCyAURQ0AIA4gFiAU/AoAAAsgASB5IBStInx9Ink3A+ADIAcgeyB8fDcDCCASICJGDQAgDiAUaiEOIAIgFGsiAg0BDAMLCyAMDQFBACELIBBFDQQgCSAQQQJ0QQEQogcMBAtBACAIIBRBiKrGABDqBwALIAVBCEYNASAEIAo2AuAYIAQgCTYC3BggBCAQNgLYGCAEQcgMaiAmIAVBKGxqIARB2BhqIAgQsgMgBC0AyAwiCUEdRwRAIAQoAtQMIQ4gBCkCzAwheiAELwHKDCECIAQtAMkMIQcgCSELDAMLIAVBAWohBSAZQQMgDSANQQNPGyIJaiEZIA0gCWsiDQ0ACyARIANBARCiBwwCC0EIQQhB+KnGABCMBwALIBEgA0EBEKIHIHqnIQMMBwsgBEEANgLgGCAEQoCAgIAQNwLYGCAEQcgMaiABQdgDaiAEQdgYahDzAQJAAkACQAJAAkACfwJAIAQtAMgMQQRGDQAgBCkDyAwieqciA0H/AXFBBEYNAEEADAELIAQoAuAYIgNBA2oiCUEASA0CIAlBAnYhAgJ/IAlBfHEiCUUEQEEBIQdBAAwBCyAJEHEiB0UNCSAHQQRrLQAAQQNxRSAJRXJFBEAgB0EAIAn8CwALIAILIQggBCACNgIwIAQgBzYCLCAEIAg2AiggAyAJSw0DIAQoAtwYIQkgAwRAIAcgCSAD/AoAAAsgGEEBayECIA9BBE8NBCAEQcgMaiABQZgBaiJdIAJBKGxqIARBKGogAxCyAyAELQDIDCIIQR1GDQEgBCgC1AwhDiAELwHKDCECIAQtAMkMIQcgBCkCzAwieqchAyAICyELIAQoAtgYIgZFDQsgBCgC3BggBkEBEKIHDAsLIAQoAtgYIgMEQCAJIANBARCiBwsgFUEHELkBIQMgFUEEEK8BIQggFUEEEK8BIQIgFUEEEK8BIQ4gFUEEEK8BIRIgFUEEEK8BIQkgAUH/ACABLAA8IANB/wFxIgdBACABLQA+G2ogByABLQCkBSIQGyIDQQAgA0EAShsiESARQf8AThtBAXQvAbjkRDsBMiABQf8AIAMgCWoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45EQ7ATogAUH/ACADIBJqIhFBACARQQBKGyIRIBFB/wBOG0EBdC4BuOZEIhE7ATggAUH/ACADIAhqIgpBACAKQQBKGyIKIApB/wBOG0EBdC8BuOZEOwEwIAFB/wAgAiADaiIKQQAgCkEAShsiCiAKQf8AThtBAXQvAbjmREEBdDsBNCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwE2IAPBQQdMBEAgAUEIOwE2CyARQYQBTA0DIAFBhAE7ATgMAwtByKnGABD/BwALQQAgAyAJQeipxgAQ6gcACyACQQhB2KnGABCMBwALAkAgEEUNACABQf8AIAEsAEwgB0EAIAEtAE4baiAHIAEtAKQFGyIDQQAgA0EAShsiECAQQf8AThtBAXQvAbjkRDsBQiABQf8AIAMgCWoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LwG45EQ7AUogAUH/ACADIBJqIhBBACAQQQBKGyIQIBBB/wBOG0EBdC4BuOZEIhA7AUggAUH/ACADIAhqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEOwFAIAFB/wAgAiADaiIRQQAgEUEAShsiESARQf8AThtBAXQvAbjmREEBdDsBRCABQf8AIAMgDmoiA0EAIANBAEobIgMgA0H/AE4bQQF0LgG45ERBmwFsQeQAbSIDOwFGIAPBQQdMBEAgAUEIOwFGCyAQQYUBTgRAIAFBhAE7AUgLIAFB/wAgASwAXCAHQQAgAS0AXhtqIAcgAS0ApAUbIgNBACADQQBKGyIQIBBB/wBOG0EBdC8BuOREOwFSIAFB/wAgAyAJaiIQQQAgEEEAShsiECAQQf8AThtBAXQvAbjkRDsBWiABQf8AIAMgEmoiEEEAIBBBAEobIhAgEEH/AE4bQQF0LgG45kQiEDsBWCABQf8AIAMgCGoiEUEAIBFBAEobIhEgEUH/AE4bQQF0LwG45kQ7AVAgAUH/ACACIANqIhFBACARQQBKGyIRIBFB/wBOG0EBdC8BuOZEQQF0OwFUIAFB/wAgAyAOaiIDQQAgA0EAShsiAyADQf8AThtBAXQuAbjkREGbAWxB5ABtIgM7AVYgA8FBB0wEQCABQQg7AVYLIBBBhQFOBEAgAUGEATsBWAsgAUH/ACABLABsIAdBACABLQBuG2ogByABLQCkBRsiA0EAIANBAEobIhAgEEH/AE4bQQF0LwG45EQ7AWIgAUH/ACADIAlqIglBACAJQQBKGyIJIAlB/wBOG0EBdC8BuOREOwFqIAFB/wAgAyASaiIJQQAgCUEAShsiCSAJQf8AThtBAXQuAbjmRCIHOwFoIAFB/wAgAyAIaiIJQQAgCUEAShsiCSAJQf8AThtBAXQvAbjmRDsBYCABQf8AIAIgA2oiCUEAIAlBAEobIgggCEH/AE4bQQF0LwG45kRBAXQ7AWQgAUH/ACADIA5qIgNBACADQQBKGyIDIANB/wBOG0EBdC4BuOREQZsBbEHkAG0iAzsBZiADwUEHTARAIAFBCDsBZgsgB0GFAUgNACABQYQBOwFoCyABLQCTAUHyAUcNAQtBACEVQQAhEgwHCwJAAn8gAS0AKEUEQEETIQ5BExBxIgZFDQMgBkEPakGrrcYAKAAANgAAIAZBnK3GAP0AAAD9CwAAIAQgBjYCzAwgBEETNgLIDCAENQDJDCJ5IAQxAM8MQjCGIAQzAM0MQiCGhIQiekIYiKchEiB5pyEIIHpCCIinDAELIBVBARC5ARogBEHIDGpBACEKIAFB8ABqIQ1BoM/GACEJQZjNxgAhEANAIAkhESAKIQcgECEJQSEhFANAQfx+IRkDQCANIAktAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGGAWogBToAAAsgDSAJQQFqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBigFqIAU6AAALIA0gCUECai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQY4BaiAFOgAACyANIAlBA2otAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGSAWogBToAAAsgDSAJQQRqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBlgFqIAU6AAALIA0gCUEFai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQZoBaiAFOgAACyANIAlBBmotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGeAWogBToAAAsgDSAJQQdqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBogFqIAU6AAALIA0gCUEIai0AABCZBQRAIA1BCBC5ASEFIAEoAvAEIAdqIBlqQaYBaiAFOgAACyANIAlBCWotAAAQmQUEQCANQQgQuQEhBSABKALwBCAHaiAZakGqAWogBToAAAsgDSAJQQpqLQAAEJkFBEAgDUEIELkBIQUgASgC8AQgB2ogGWpBrgFqIAU6AAALIAlBC2ohCSAZQSxqIhkNAAsgB0GEAWohByAQIBRqIQkgFEEhakGIAiAUQYgCRyIZGyEUIBkNAAsgCkGgCGohCiARQYgCaiEJIBEiEEG41cYARw0AC0EPQR0gAS0AkwFB8gFGGzoAACAELQDIDCIJQR1HBEAgBDUAzQwieSAEQdMMajEAAEIwhiAEQdEMajMAAEIghoSEInpCGIinIRIgekIIiKchFSAEKALUDCEOIAQtAMwMIQMgBC8BygwhAiAELQDJDCEHIHmnIQggCSELDAkLIBVBARC5AUH/AXEiB0EBRgRAIBVBCBC5ASEDCyABIAM6AIEFIAEgB0EBRjoAgAUgAS0AkwFB8gFGDQcgAS0AKA0BIAFBADoAqAVBEyEOQRMQcSIGRQ0CIAZBD2pBq63GACgAADYAACAGQZytxgD9AAAA/QsAACAEIAY2AswMIARBEzYCyAwgBDUAyQwieSAEMQDPDEIwhiAEMwDNDEIghoSEInpCGIinIRIgeachCCB6QgiIpwshFUEYIQtBEyEDDAcLIAEvAaIFIkpFDQMgAUEwaiE6IAFBkARqIRkgAUH0BGohFyABQZYFaiEcIAFBhgVqIUcgAUGCBWohJyAEQZENaiFLIARBiA1qIRggBEH/DGohTCAEQfYMaiFNIARB7QxqIU4gBEHkDGohTyAEQdsMaiEoIARBoRlqIVAgBEGYGWohUSAEQY8ZaiFSIARBhhlqIVMgBEH9GGohVCAEQfQYaiFVIARB6xhqIVYgBEGZD2ohKSAEQYQPaiEqIARB7w5qISsgBEHaDmohLCAEQcUOaiEtIARBsA5qIRMgBEGbDmohLiAEQYYOaiEvIARB8Q1qITAgBEHcDWohMSAEQccNaiEyIARBsg1qITMgBEGdDWohNCAEQfMMaiE1IARB0gxqIVcgBEHiGGohWCAEQegLaiFZIARB6AlqIVogBEGoC2ohICAEQagJaiEhIARB6ApqIV4gBEHoCGohXyAEQagKaiFgIARBqAhqIWEgBEHeDGohNiAEQegHaiFiIARBqAdqIWMgBEHoBmohZCAEQagGaiFlIARB6AVqIWYgBEGoBWohZyAEQegEaiFoIARBqARqIWkgBEHoA2ohaiAEQagDaiFrIARB6AJqIWwgBEGoAmohbSAEQegBaiFuIARBqAFqIW8gBEHoAGohcCAEQThqIXEgBEEoakECciFIIARB2AxqITwgBEHIDGpBAnIhPSAEQR1qIT4gBEEOaiEUIARBzwxqIQwgBEHMDGohciAEQckMaiI/QRVqIXMgBEGIGWohdEEBIQNBACEQA0AgAS0ApwUiC0UNAiADIREgJ/0MAAAAAAAAAAAAAAAAAAAAAP0LAQAgJ0EWakIANwEAICdBEGpCADcBACAQIAtwIQ8CQCABLwGgBSJ1RQ0AQQEhN0EAISZBACEKAkACQAJAAkACQAJAAkACQANAIHNCADcAACA/QRBqQgA3AAAgP/0MAAAAAAAAAAAAAAAAAAAAAP0LAAACQCABLQCkBUEBRw0AIAEtAKUFQQFxRQ0AIAQgFSAXQQMgFygCABDIBDoA5QwLIAQgAS0AgAUEfyAVIAEtAIEFEJkFBUEACzoAyAwCQAJAAkACQAJ/AkACQCABLQAoDQAgFSABLQCoBRCZBUUEQEEAIQlBACELIAEtACgNAQwCC0EUIThBFBBxIhpFDRIgGkEQakGYsMYAKAAANgAAIBpBiLDGAP0AAAD9CwAAQRQhOUEYDAILIBVBnLDGAEEEQYSDxAQQyAQhAyAEQRQ6ACggBCADQf8BcSIJOgApIAlBBU8EQCAJIQZBFAwCCyAEQShqEKsEIAQgCToAywxBAiEDAkACQAJAAkACQAJAAkACQCAJQQFrDgQDAAEEAgtBAyEDDAILQQEhAwwBC0EAIQMLIEcgA0GBgoQIbCIDNgEAIDwgAzYAAAwBC0EAIQ4gCkEebCEIIAwhCwNAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQAQQegCbCAOIEdqIgctAABBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBA2tBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABAgByADOgAAIAogASgCpAQiAk8NAiAVIAEoAqAEIAhqLQARQegCbCADQSRsaiIDQbywxgBqQQkgAygAvLBGEMgEIQMgBEEVOgAoIAQgA0H/AXEiAzoAKSADQQlLBEAgAyEGQRUMBgsgBEEoahCrBCALQQJrQQogAyADQQpPGyIDOgAAIAogASgCpAQiAk8NAyABKAKgBCAIaiADOgARIAcgAzoAACAKIAEoAqQEIgJPDQIgFSABKAKgBCAIai0AEkHoAmwgA0EkbGoiA0G8sMYAakEJIAMoALywRhDIBCEDIARBFToAKCAEIANB/wFxIgM6ACkgA0EJSwRAIAMhBkEVDAYLIARBKGoQqwQgC0EBa0EKIAMgA0EKTxsiAzoAACAKIAEoAqQEIgJPDQMgASgCoAQgCGogAzoAEiAHIAM6AAAgCiABKAKkBCICTw0CIBUgASgCoAQgCGotABNB6AJsIANBJGxqIgNBvLDGAGpBCSADKAC8sEYQyAQhAyAEQRU6ACggBCADQf8BcSIDOgApIANBCUsEQCADIQZBFQwGCyAEQShqEKsEIAtBCiADIANBCk8bIgM6AAAgCiABKAKkBCICTw0DIAEoAqAEIAhqIAM6ABMgByADOgAAIAtBBGohCyAOQQFqIg5BBEkNAAsLIBVB3MzGAEEDQYCDuAQQyAQhAyAEQRY6ACggBCADQf8BcSILOgApIAtBA0sEQCALIQZBFgwECyAEQShqEKsEIAQgCzoAygwMAgsgCiACQaywxgAQjAcACyAKIAJBzMzGABCMBwwRCyAKIAEoAqQEIgNPDQEgCkEebCIFIAEoAqAEaiALOgACIAogASgCpAQiA08NAiABKAKgBCAFaiAJOgADIAogASgCpAQiA08NAyABKAKgBCAFaiBy/QAAAP0LAAQgAS0AkwFB8gFHDQRBDwshAyAAIDg2AhAgACAaNgIMIAAgOTYCCCAAIEA7AQYgACAGOgAFIAAgAzoABCAAQYCAgIB4NgIADBYLIAogA0HozMYAEIwHAAsgCiADQfjMxgAQjAcACyAKIANBiM3GABCMBwALIARBDGogBEHKDGotAAA6AAAgBCAELwDIDDsBCiAEICgpAAA3A9gYIAQgKEEHaigAADYA3xggBEHPDGooAAAhOSAELQDMDCEGIAQvAM0MIUAgBCgA0wwhGiAEKADXDCE4ID5BB2ogBCgA3xg2AAAgPiAEKQPYGDcAACAEIDg2ABkgBCAaNgAVIAQgOTYAESAEIEA7AA8gBCAGOgAOIAQgCToADQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0ACkEBcUUEQCAELQAnIQsgBEHIDGpBAEGADPwLAAJAAkACQAJAIAlBBEcEQCAKIAEoAqQEIgNPDQEgASgCoAQgBWotABQhAyABLQCWBSECIHT9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIARB+Bhq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAEQegYav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LA9gYIAtBBE8NAiAEQcgYaiABIARB2BhqIA9BASACIANqQf8BcSA6IAtBBHRqIgMvAQQgAy8BBhDqASAELQDJGCEHIAQtAMgYIgJBHUYNAyAEIAQpAcoYNwO4DCAEIARB0BhqKQEANwG+DAwcC0EDIQ4gC0EDSw0DDAULIAogA0GgrsYAEIwHAAsgC0EEQbCuxgAQjAcACyABIAc6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFaiAHOgAUIARB2BhqIgMgAygCACICIAMoAjAiCGsiDiADKAIQIgcgAygCICINayISazYCMCADIAIgCGoiAiAHIA1qIghrNgIgIAMgDiASajYCECADIAIgCGo2AgAgAyADKAIkIgIgAygCFCIIaiIOIAMoAjQiByADKAIEIg1qIhJqNgIEIAMgDSAHayIHIAggAmsiAms2AjQgAyACIAdqNgIUIAMgEiAOazYCJCADIAMoAigiCCADKAIYIg5qIgcgAygCOCINIAMoAggiEmoiFmoiAjYCCCADIBIgDWsiDSAOIAhrIghrNgI4IAMgFiAHazYCKCADIAggDWo2AhggAyADKAIsIg4gAygCHCIHaiINIAMoAjwiEiADKAIMIhZqIiJqIgg2AgwgAyAHIA5rIgcgFiASayISaiIONgIcIAMgEiAHazYCPCADICIgDWsiBzYCLCADIAggAygCACINakEDaiISIAIgAygCBCIWaiIia0EDdTYCCCADIA0gCGtBA2oiCCAWIAJrIgJrQQN1NgIMIAMgAiAIakEDdTYCBCADIBIgImpBA3U2AgAgAyADKAIQIgIgDmtBA2oiCCADKAIUIg0gAygCGCISayIWa0EDdTYCHCADIAIgDmpBA2oiAiANIBJqIg5rQQN1NgIYIAMgCCAWakEDdTYCFCADIAIgDmpBA3U2AhAgAyADKAIgIgIgB2tBA2oiCCADKAIkIg4gAygCKCINayISa0EDdTYCLCADIAIgB2pBA2oiAiANIA5qIg5rQQN1NgIoIAMgCCASakEDdTYCJCADIAIgDmpBA3U2AiAgAyADKAIwIgIgAygCPCIIa0EDaiIOIAMoAjQiByADKAI4Ig1rIhJrQQN1NgI8IAMgAiAIakEDaiICIAcgDWoiCGtBA3U2AjggAyAOIBJqQQN1NgI0IAMgAiAIakEDdTYCMCAEIAQoAtgYNgLIDCAEIAQoAtwYNgKIDSAEIAQoAuAYNgLIDSAEIAQoAuQYNgKIDiAEIAQoAugYNgLIDiAEIAQoAuwYNgKIDyAEIAQoAvAYNgLIDyAEIAQoAvQYNgKIECAEIAQoAvgYNgLIECAEIAQoAvwYNgKIESAEIAQoAoAZNgLIESAEIAQoAoQZNgKIEiAEIAQoAogZNgLIEiAEIAQoAowZNgKIEyAEIAQoApAZNgLIEyAEIAQoApQZNgKIFEEAIQ4MAwsgCiADQcCuxgAQjAcACyAKIAEoAqQEIgJPDQ0gC0EEQaivxgAQjAcACwJAIAlBBEYNACABQQA6AJYFIAEoAqQEIgMgCksEQCABKAKgBCAFakEAOgAUDAELIAogA0GIqcYAEIwHAAsgAUEAOgCXBQJAIAogASgCpAQiC08NACABKAKgBCAFakEAOgAVIAFBADoAmAUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABYgAUEAOgCZBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAFyABQQA6AJoFIAogASgCpAQiC08NACABKAKgBCAFakEAOgAYIAFBADoAmwUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABkgAUEAOgCcBSAKIAEoAqQEIgtPDQAgASgCoAQgBWpBADoAGiABQQA6AJ0FIAogASgCpAQiC08NACABKAKgBCAFakEAOgAbIAFBADoAngUgCiABKAKkBCILTw0AIAEoAqAEIAVqQQA6ABwgBEEoakEAQYAM/AsADAILIAogC0GoqcYAEIwHAAsgOiALQQR0aiEDQQAhDUGXBSESIAQtAAshCANAIAogASgCpAQiAk8NDCAEQdgYaiABIARByAxqIA1qIgsgDyAOIAEoAqAEIAVqLQAVIAEgEmoiIi0AAGpB/wFxIAMvAQAgAy8BAhDqASAELQDYGCICQR1HDRUgBC0A2RghAgJ/AkAgCygCAARAIAsQmgJBASEIIAJBAXENAUEADAILQQAgAkEBcUUNARogCxCaAgtBASEIQQELIRYgCiABKAKkBCICTw0FIAEoAqAEIAVqIBY6ABUgCiABKAKkBCICTw0MIARB2BhqIAEgC0FAayIHIA8gDiABKAKgBCAFai0AFiAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshFiAKIAEoAqQEIgJPDQUgASgCoAQgBWogFjoAFiAKIAEoAqQEIgJPDQwgBEHYGGogASALQYABaiIHIA8gDiABKAKgBCAFai0AFyAWakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCAHKAIABEAgBxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiAHEJoCC0EBIQhBAQshByAKIAEoAqQEIgJPDQUgASgCoAQgBWogBzoAFyAKIAEoAqQEIgJPDQwgBEHYGGogASALQcABaiILIA8gDiABKAKgBCAFai0AGCAHakH/AXEgAy8BACADLwECEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQUgASgCoAQgBWogCzoAGCAiIAs6AAAgDUGAAmohDSASQZYFayASQQFqIRJBBEkNAAtBeCENA0ACQCANQdiuxgBqKAIAIgtBCE0EfyAKIAEoAqQEIgJPDQQgBEHYGGogASAEQcgMakGACEGACiALQQVGIgcbaiIOIA9BAiABKAKgBCAFaiALai0AFCALIBxqIiItAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0XIAQtANkYIQICfwJAIA4oAgAEQCAOEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIA4QmgILQQEhCEEBCyEWIAogASgCpAQiAk8NBiABKAKgBCAFaiALaiAWOgAUIAogASgCpAQiAk8NBCALQQFqIQ5BCSALayICQQAgAkEJTRtBAUYNBSAEQdgYaiABIARByAxqQcAIQcAKIAcbaiISIA9BAiABKAKgBCAFaiAOai0AFCAWakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFyAELQDZGCECAn8CQCASKAIABEAgEhCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiASEJoCC0EBIQhBAQshEiAKIAEoAqQEIgJPDQYgASgCoAQgBWogDmogEjoAFCAiIBI6AAAgC0EIRw0BQQkFIAsLQQlB2K7GABCMBwALIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQYAJQYALIAcbaiISIA9BAiABKAKgBCAFaiALai0AFCAOIBxqIhYtAABqQf8BcSADLwEIIAMvAQoQ6gEgBC0A2BgiAkEdRw0VIAQtANkYIQICfwJAIBIoAgAEQCASEJoCQQEhCCACQQFxDQFBAAwCC0EAIAJBAXFFDQEaIBIQmgILQQEhCEEBCyESIAogASgCpAQiAk8NBCABKAKgBCAFaiALaiASOgAUIAogASgCpAQiAk8NAiAEQdgYaiABIARByAxqQcAJQcALIAcbaiILIA9BAiABKAKgBCAFaiAOai0AFCASakH/AXEgAy8BCCADLwEKEOoBIAQtANgYIgJBHUcNFSAELQDZGCECAn8CQCALKAIABEAgCxCaAkEBIQggAkEBcQ0BQQAMAgtBACACQQFxRQ0BGiALEJoCC0EBIQhBAQshCyAKIAEoAqQEIgJPDQQgASgCoAQgBWogDmogCzoAFCAWIAs6AAAgDUEEaiINDQALIAQgCDoACyAEID0pAQA3A7gMIAQgPUEGaikBADcBvgwgBC8ByAwhAyBxIDxB8Av8CgAAIAQgBCkDuAw3A6gMIAQgBCkBvgw3Aa4MIEhBBmogBCkBrgw3AQAgSCAEKQOoDDcBACAEIAM7ASgLIARByAxqIQcgAS8BoAUiJCEFIAEoAqwEInYhDiABKAKwBCIiIQIgASgCuAQiDSELIAEoArwEIkEhEiMAQfACayIDJAAgA0EIakEAQeQC/AsAAkAgEEUEQCADQRhqQf/+/fsHNgIAIANBEGpC//79+/fv37//ADcDACADQv/+/fv379+//wA3AwgMAQsgCkEEdCIIIAJNBEACQCACIAhGDQBBECACIAhrIhYgFkEQTxsiFkUNACADQQhqIAggDmogFvwKAAALAkAgBUEBayAKRgRAIAhBD3IiCCACTw0BIAMgCCAOai0AAEGBgoQIbDYAGAwDCyAIQRBqIgggAk0EQCACIAhGDQNBBCACIAhrIgIgAkEETxsiAkUNAyADQRhqIAggDmogAvwKAAAMAwsgCCACIAJB+OPEABDqBwALIAggAkGY5MQAEIwHAAsgCCACIAJBqOTEABDqBwALIAMgAy0AGCICOgCUAiADIAI6AMABIAMgAjoAbCADIAMtABkiAjoAlQIgAyACOgDBASADIAI6AG0gAyADLQAaIgI6AJYCIAMgAjoAwgEgAyACOgBuIAMgAy0AGyICOgCXAiADIAI6AMMBIAMgAjoAbyAHAn8gCkUEQCADQYEBOgDXAiADQYEBOgDCAiADQYEBOgCtAiADQYEBOgCYAiADQYEBOgCDAiADQYEBOgDuASADQYEBOgDZASADQYEBOgDEASADQYEBOgCvASADQYEBOgCaASADQYEBOgCFASADQYEBOgBwIANBgQE6AFsgA0GBAToARiADQYEBOgAxIANBgQE6ABxBgX9B/wAgEBsMAQsCQCASBEAgEkEBayICRQ0BIAMgCy0AAToAHCACQQFGDQEgAyALLQACOgAxIAJBAkYNASADIAstAAM6AEYgAkEDRg0BIAMgCy0ABDoAWyACQQRGDQEgAyALLQAFOgBwIAJBBUYNASADIAstAAY6AIUBIAJBBkYNASADIAstAAc6AJoBIAJBB0YNASADIAstAAg6AK8BIAJBCEYNASADIAstAAk6AMQBIAJBCUYNASADIAstAAo6ANkBIAJBCkYNASADIAstAAs6AO4BIAJBC0YNASADIAstAAw6AIMCIAJBDEYNASADIAstAA06AJgCIAJBDUYNASADIAstAA46AK0CIAJBDkYNASADIAstAA86AMICIAJBD0YNASADIAstABA6ANcCDAELQQFBAEEAQYjkxAAQ6gcAC0GBf0H/ACAQGyAQRQ0AGiALLQAACzoAACAHQQFqIANBCGpB5AL8CgAAIANB8AJqJAAgCUEBaw4EBAUGBwgLIAogAkHorsYAEIwHAAsgDkEJQfiuxgAQjAcACyAKIAJBiK/GABCMBwALIAogAkG4r8YAEIwHAAtBsH0hCwNAIARByAxqIAtqIgNB5gJqIAQtAMkMOgAAIANB5wJqIAQtAMoMOgAAIANB6AJqIAQtAMsMOgAAIANB6QJqIAQtAMwMOgAAIANB6gJqIAQtAM0MOgAAIANB6wJqIAQtAM4MOgAAIANB7AJqIAQtAM8MOgAAIANB7QJqIAQtANAMOgAAIANB7gJqIAQtANEMOgAAIANB7wJqIAQtANIMOgAAIANB8AJqIAQtANMMOgAAIANB8QJqIAQtANQMOgAAIANB8gJqIAQtANUMOgAAIANB8wJqIAQtANYMOgAAIANB9AJqIAQtANcMOgAAIANB9QJqIAQtANgMOgAAIANB9gJqIAQtANkMOgAAIANB9wJqIAQtANoMOgAAIANB+AJqIAQtANsMOgAAIANB+QJqIAQtANwMOgAAIAtBFWoiCw0ACwwECyA2QRBqIAQtAN0MIgNBgYKECGw2AAAgNUEQaiAELQDyDCILQYGChAhsNgAAIBhBEGogBC0Ahw0iCUGBgoQIbDYAACA0QRBqIAQtAJwNIgJBgYKECGw2AAAgM0EQaiAELQCxDSIIQYGChAhsNgAAIDYgA61CgYKEiJCgwIABfiJ5NwAAIDZBCGogeTcAACA1IAutQoGChIiQoMCAAX4ieTcAACA1QQhqIHk3AAAgGCAJrUKBgoSIkKDAgAF+Ink3AAAgGEEIaiB5NwAAIDQgAq1CgYKEiJCgwIABfiJ5NwAAIDRBCGogeTcAACAzQQhqIAitQoGChIiQoMCAAX4ieTcAACAzIHk3AAAgMkEQaiAELQDGDSIDQYGChAhsNgAAIDFBEGogBC0A2w0iC0GBgoQIbDYAACAwQRBqIAQtAPANIglBgYKECGw2AAAgL0EQaiAELQCFDiICQYGChAhsNgAAIC5BEGogBC0Amg4iCEGBgoQIbDYAACAyIAOtQoGChIiQoMCAAX4ieTcAACAyQQhqIHk3AAAgMSALrUKBgoSIkKDAgAF+Ink3AAAgMUEIaiB5NwAAIDAgCa1CgYKEiJCgwIABfiJ5NwAAIDBBCGogeTcAACAvIAKtQoGChIiQoMCAAX4ieTcAACAvQQhqIHk3AAAgLiAIrUKBgoSIkKDAgAF+Ink3AAAgLkEIaiB5NwAAIBNBEGogBC0Arw4iA0GBgoQIbDYAACAtQRBqIAQtAMQOIgtBgYKECGw2AAAgLEEQaiAELQDZDiIJQYGChAhsNgAAICtBEGogBC0A7g4iAkGBgoQIbDYAACAqQRBqIAQtAIMPIghBgYKECGw2AAAgE0EIaiADrUKBgoSIkKDAgAF+Ink3AAAgEyB5NwAAIC1BCGogC61CgYKEiJCgwIABfiJ5NwAAIC0geTcAACAsQQhqIAmtQoGChIiQoMCAAX4ieTcAACAsIHk3AAAgK0EIaiACrUKBgoSIkKDAgAF+Ink3AAAgKyB5NwAAICpBCGogCK1CgYKEiJCgwIABfiJ5NwAAICogeTcAACApQRBqIAQtAJgPIgNBgYKECGw2AAAgKUEIaiADrUKBgoSIkKDAgAF+Ink3AAAgKSB5NwAADAMLIARByAxqQeUCQRBBAUEBQRUQ4gIMAgsgFCEDIARBKGohC0EAIQkjAEEQayIOJAAgBEHIDGoiQiEFA0AgCSICQQFqIQkgAkECdEEBciFDQXAhEiADIQIgCyEIA0AgEkERaiFEAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgkBAgMEBQYHCAkACyAFIBJqIgdB5QBqIAdB5ABqLQAAIAdBzwBqLQAAIAdBOmotAAAgB0Elai0AACAHQRRqLQAAIAdBE2otAAAgB0ERai0AACAHQRJqLQAAampqampqakEEakH4/wNxQQN2QYGChAhsIhY2AAAgB0HQAGogFjYAACAHQTtqIBY2AAAgB0EmaiAWNgAADAkLIEJB5QJBBCBEIENBFRDiAgwICyAFIBJqIgdB5QBqIAdBFWotAAAgB0ETai0AACIWQQJqIhsgB0EUai0AACIdQQF0ampBFnRBgICAeHEgHSAHQRJqLQAAIh5BAmoiIyAWQQF0ampBDnRBgID8D3FqIBsgB0ERai0AACIWakEGdCAeQQd0akGA/gNxciAHQRBqLQAAIBZBAXRqICNqQQJ2aiIWNgAAIAdB0ABqIBY2AAAgB0E7aiAWNgAAIAdBJmogFjYAAAwHCyAFIBJqIgdB5QBqIAdBzwBqLQAAIhtBAmoiHSAHQeQAai0AACIWIBZBAXRqakECdkGBgoQIbDYAACAHQdAAaiAWIAdBOmotAAAiHkECaiIjaiAbQQF0akECdkGBgoQIbDYAACAHQTtqIB0gB0Elai0AACIWaiAeQQF0akECdkGBgoQIbDYAACAHQSZqICMgB0EQai0AAGogFkEBdGpBAnZBgYKECGw2AAAMBgsgBSASaiIHQRhqLQAAIRYgB0EXai0AACEbIAdBEWotAAAhOyAHQRJqLQAAIR0gB0ETai0AACEeIA4gB0EWai0AACIjIAdBFGotAAAiRkECaiJbIAdBFWotAAAiJUEBdGpqQQJ2OgADIA4gJSAeQQJqIlwgRkEBdGpqQQJ2OgACIA4gHSAeQQF0aiBbakECdjoAASAOIDsgHUEBdGogXGpBAnY6AAAgB0EmaiAOKAIANgAAIA4gJSAbQQJqIh1qICNBAXRqQQJ2OgAEIAdBO2ogDigAATYAACAOIBYgI2ogG0EBdGpBAmpBAnY6AAUgB0HQAGogDigBAjYAACAOIBYgHWogFkEBdGpBAnY6AAYgB0HlAGogDigAAzYAAAwFCyAFIBJqIgdBFGotAAAhOyAHQRNqLQAAIRYgB0HkAGotAAAhRiAHQc8Aai0AACEbIAdBOmotAAAhHSAHQSVqLQAAIR4gDiAHQRJqLQAAIltBAmoiXCAHQRBqLQAAIiNqIAdBEWotAAAiJUEBdGpBAnY6AAwgDiAlIB5BAmoidyAjQQF0ampBAnY6AAsgDiAjIB1BAmoieCAeQQF0ampBAnY6AAogDiAbIB1BAXRqIHdqQQJ2OgAJIAdB0ABqIA4oAAk2AAAgDiBGIBtBAXRqIHhqQQJ2OgAIIAdB5QBqIA4oAgg2AAAgDiA7IFwgFkEBdGpqQQJ2OgAOIA4gFiAlIFtBAXRqakECakECdjoADSAHQSZqIA4oAAs2AAAgB0E7aiAOKAEKNgAADAQLIAUgEmoiB0HRAGogB0EQai0AACIdIAdBEWotAAAiFmpBAWpBAXYiGzoAACAHQSZqIBs6AAAgB0HSAGogFiAHQRJqLQAAIhtqQQFqQQF2Ih46AAAgB0EnaiAeOgAAIAdB5QBqIAdBJWotAAAiHiAHQc8Aai0AACAHQTpqLQAAIiNBAXRqakECakECdjoAACAHQeYAaiAWIB4gHUEBdGpqQQJqQQJ2IiU6AAAgB0HQAGogHSAjIB5BAXRqakECakECdjoAACAHQTtqICU6AAAgB0HnAGogGyAdIBZBAXRqakECakECdiIdOgAAIAdBPGogHToAACAHQegAaiAHQRNqLQAAIh0gFiAbQQF0ampBAmpBAnYiHjoAACAHQRRqLQAAIRYgB0HTAGogGyAdakEBakEBdiIjOgAAIAdBPWogHjoAACAHQShqICM6AAAgB0E+aiAWIBsgHUEBdGpqQQJqQQJ2OgAAIAdBKWogFiAdakEBakEBdjoAAAwDCyAFIBJqIgdB0ABqIAdBEmotAAAiHSAHQRNqLQAAIhZqQQFqQQF2Ihs6AAAgB0EmaiAdIAdBEWotAAAiI2pBAWpBAXY6AAAgB0EnaiAbOgAAIAdB0QBqIBYgB0EUai0AACIbakEBakEBdiIeOgAAIAdBKGogHjoAACAHQdIAaiAbIAdBFWotAAAiHmpBAWpBAXYiJToAACAHQeUAaiAbIB1qIBZBAXRqQQJqQQJ2Ijs6AAAgB0E8aiA7OgAAIAdB5gBqIBYgHkECaiI7IBtBAXRqakECdiJGOgAAIAdBPWogRjoAACAHQTtqICMgFiAdQQF0ampBAmpBAnY6AAAgB0EYai0AACEjIAdBF2otAAAhFiAHQecAaiAHQRZqLQAAIh0gGyAeQQF0ampBAmpBAnYiGzoAACAHQSlqICU6AAAgB0HoAGogIyAdIBZBAXRqakECakECdjoAACAHQdMAaiAWIB1BAXQgO2pqQQJ2OgAAIAdBPmogGzoAAAwCCyAFIBJqIgdB5QBqIAdB5ABqLQAAIiMgB0HPAGotAAAiHWpBAWpBAXY6AAAgB0HnAGogHSAHQTpqLQAAIhZqQQFqQQF2Ihs6AAAgB0HQAGogGzoAACAHQdIAaiAWIAdBJWotAAAiG2pBAWpBAXYiHjoAACAHQTtqIB46AAAgB0E9aiAbIAdBEGotAAAiHmpBAWpBAXYiJToAACAHQeYAaiAWICMgHUEBdGpqQQJqQQJ2OgAAIAdB6ABqIBsgHSAWQQF0ampBAmpBAnYiHToAACAHQdEAaiAdOgAAIAdB0wBqIB4gFiAbQQF0ampBAmpBAnYiFjoAACAHQTxqIBY6AAAgB0ETai0AACEjIAdBEmotAAAhFiAHQT5qIAdBEWotAAAiHSAbIB5BAXRqakECakECdiIbOgAAIAdBJmogJToAACAHQSlqICMgHSAWQQF0ampBAmpBAnY6AAAgB0EoaiAWIB4gHUEBdGpqQQJqQQJ2OgAAIAdBJ2ogGzoAAAwBCyAFIBJqIgdB6ABqIAdB5ABqLQAAIhY6AAAgB0HnAGogFjoAACAHQeYAaiAWOgAAIAdB5QBqIBY6AAAgB0HTAGogFjoAACAHQdIAaiAWOgAAIAdBO2ogB0E6ai0AACIbIAdBzwBqLQAAIh1qQQFqQQF2Ih46AAAgB0EoaiAeOgAAIAdBJmogGyAHQSVqLQAAIh5qQQFqQQF2OgAAIAdB0ABqIBYgHWoiI0EBakEBdiIlOgAAIAdBPWogJToAACAHQTxqIBYgG2ogHUEBdGpBAmpBAnYiJToAACAHQSlqICU6AAAgB0HRAGogIyAWQQF0akECakECdiIWOgAAIAdBPmogFjoAACAHQSdqIB0gHiAbQQF0ampBAmpBAnY6AAALIEJB5QIgCCBDIERBFRDXAiACQQFqIQIgCEFAayEIIBJBBGoiEg0ACyADQQRqIQMgC0GAAmohCyAFQdQAaiEFIAlBBEcNAAsgDkEQaiQADAMLIARByAxqQeUCQRBBFSAQQQBHIApBAEcQgwQLIARByAxqIgNB5QIgBEEoakEBQQFBFRDXAiADQeUCIHBBAUEFQRUQ1wIgA0HlAiBvQQFBCUEVENcCIANB5QIgbkEBQQ1BFRDXAiADQeUCIG1BBUEBQRUQ1wIgA0HlAiBsQQVBBUEVENcCIANB5QIga0EFQQlBFRDXAiADQeUCIGpBBUENQRUQ1wIgA0HlAiBpQQlBAUEVENcCIANB5QIgaEEJQQVBFRDXAiADQeUCIGdBCUEJQRUQ1wIgA0HlAiBmQQlBDUEVENcCIANB5QIgZUENQQFBFRDXAiADQeUCIGRBDUEFQRUQ1wIgA0HlAiBjQQ1BCUEVENcCIANB5QIgYkENQQ1BFRDXAgwBCyAKIAJBmK/GABCMBwALAkAgQQRAIA0gBC0A2Aw6AAAgQUEBayIDQQ9NBEBBAEEQIANB0K3GABDqBwALIA0gBC0A7Qw6AAEgDSAELQCCDToAAiANIAQtAJcNOgADIA0gBC0ArA06AAQgDSAELQDBDToABSANIAQtANYNOgAGIA0gBC0A6w06AAcgDSAELQCADjoACCANIAQtAJUOOgAJIA0gBC0Aqg46AAogDSAELQC/DjoACyANIAQtANQOOgAMIA0gBC0A6Q46AA0gDSAELQD+DjoADiANIAQtAJMPOgAPIA0gBC0AqA86ABAgIiAKQQR0IgNJDQggIiADayILQQ9LDQFBAEEQIAtB4K3GABDqBwALQQBBAEHArcYAEIwHAAsgAyB2aiIDIAQtAJkPOgAAIAMgBC0Amg86AAEgAyAELQCbDzoAAiADIAQtAJwPOgADIAMgBC0AnQ86AAQgAyAELQCeDzoABSADIAQtAJ8POgAGIAMgBC0AoA86AAcgAyAELQChDzoACCADIAQtAKIPOgAJIAMgBC0Aow86AAogAyAELQCkDzoACyADIAQtAKUPOgAMIAMgBC0Apg86AA0gAyAELQCnDzoADiADIAQtAKgPOgAPICRBBHQhDiABKAIIIgkgCiAkIEVsakEEdCIHayEIIAEoAgQhDUEAIRJBACECAkADQCAHIAlLDQEgCEEPTQ0DIAcgDWoiAyAEQcgMaiIFIAJqIgtBFmotAAA6AAAgA0EBaiALQRdqLQAAOgAAIANBAmogC0EYai0AADoAACADQQNqIAtBGWotAAA6AAAgA0EEaiALQRpqLQAAOgAAIANBBWogC0Ebai0AADoAACADQQZqIAtBHGotAAA6AAAgA0EHaiALQR1qLQAAOgAAIANBCGogC0Eeai0AADoAACADQQlqIAtBH2otAAA6AAAgA0EKaiALQSBqLQAAOgAAIANBC2ogC0Ehai0AADoAACADQQxqIAtBImotAAA6AAAgA0ENaiALQSNqLQAAOgAAIANBDmogC0Ekai0AADoAACADQQ9qIAtBJWotAAA6AAAgCCAOayEIIAcgDmohByACQRVqIQIgEkEBaiISQRBJDQALIAEvAaAFIQkgBC0ADCEDIARB2BhqIAogECABKALEBCICIAEoAsgEIgggASgC0AQiDiABKALUBCIHELoEIAUgCiAQIAEoAtwEIg0gASgC4AQiEiABKALoBCIFIAEoAuwEIhYQugQCQAJAAkACQAJAIANBAWsOAwECAwALIARB2BhqQdEAQQhBCSAQQQBHIgMgCkEARyILEIMEIARByAxqQdEAQQhBCSADIAsQgwQMAwsgBCAELQDZGCIDOgDiGCAEIAQtANoYIgs6AOMYIAQgBC8A2xg7AOQYIAQgBCgA3Rg2AOYYIAQgAzoA6xggBCAEKADaGDYA7BggBCAELwDeGDsA8BggBCAELQDgGDoA8hggBCADOgD0GCAEIAs6APUYIAQgBC0A2xg6APYYIAQgBC0A3Bg6APcYIAQgBC8A3RgiAzsA+BggBCAELQDfGCILOgD6GCAEIAQtAOAYIiI6APsYIAQgBCkA2Rg3AP0YIAQgBCgA2Rg2AIYZIAQgAzsAihkgBCALOgCMGSAEICI6AI0ZIAQgBC0A2Rg6AI8ZIAQgBC0A2hg6AJAZIAQgBC0A2xgiAzoAkRkgBCAELQDcGDoAkhkgBCAEKADdGDYAkxkgBCAELQDZGCILOgCYGSAEIAQoANoYNgCZGSAEIAQvAN4YOwCdGSAEIAQtAOAYOgCfGSAEIAs6AKEZIAQgBC0A2hg6AKIZIAQgAzoAoxkgBCAELQDcGDoApBkgBCAELQDdGDoApRkgBCAELQDeGDoAphkgBCAELQDfGDoApxkgBCAELQDgGDoAqBkgBCAELQDJDDoA0gwgBCAELQDKDDoA0wwgBCAELQDLDDoA1AwgBCAELQDMDDoA1QwgBCAELQDNDDoA1gwgBCAELQDODDoA1wwgBCAELQDPDDoA2AwgBCAELQDQDDoA2QwgBCAELQDJDDoA2wwgBCAELQDKDDoA3AwgBCAELQDLDDoA3QwgBCAELQDMDDoA3gwgBCAELQDNDDoA3wwgBCAELQDODDoA4AwgBCAELQDPDDoA4QwgBCAELQDQDDoA4gwgBCAELQDJDDoA5AwgBCAELQDKDDoA5QwgBCAELQDLDDoA5gwgBCAELQDMDDoA5wwgBCAELQDNDDoA6AwgBCAELQDODDoA6QwgBCAELQDPDDoA6gwgBCAELQDQDDoA6wwgBCAELQDJDDoA7QwgBCAELQDKDDoA7gwgBCAELQDLDDoA7wwgBCAELQDMDDoA8AwgBCAELQDNDDoA8QwgBCAELQDODDoA8gwgBCAELQDPDDoA8wwgBCAELQDQDDoA9AwgBCAELQDJDDoA9gwgBCAELQDKDDoA9wwgBCAELQDLDDoA+AwgBCAELQDMDDoA+QwgBCAELQDNDDoA+gwgBCAELQDODDoA+wwgBCAELQDPDDoA/AwgBCAELQDQDDoA/QwgBCAELQDJDDoA/wwgBCAELQDKDDoAgA0gBCAELQDLDDoAgQ0gBCAELQDMDDoAgg0gBCAELQDNDDoAgw0gBCAELQDODDoAhA0gBCAELQDPDDoAhQ0gBCAELQDQDDoAhg0gBCAELQDJDDoAiA0gBCAELQDKDDoAiQ0gBCAELQDLDDoAig0gBCAELQDMDDoAiw0gBCAELQDNDDoAjA0gBCAELQDODDoAjQ0gBCAELQDPDDoAjg0gBCAELQDQDDoAjw0gBCAELQDJDDoAkQ0gBCAELQDKDDoAkg0gBCAELQDLDDoAkw0gBCAELQDMDDoAlA0gBCAELQDNDDoAlQ0gBCAELQDODDoAlg0gBCAELQDPDDoAlw0gBCAELQDQDDoAmA0MAgsgWCAEMQDhGEKBgoSIkKDAgAF+NwAAIFYgBDEA6hhCgYKEiJCgwIABfjcAACBVIAQxAPMYQoGChIiQoMCAAX43AAAgVCAEMQD8GEKBgoSIkKDAgAF+NwAAIFMgBDEAhRlCgYKEiJCgwIABfjcAACBSIAQxAI4ZQoGChIiQoMCAAX43AAAgUSAEMQCXGUKBgoSIkKDAgAF+NwAAIFAgBDEAoBlCgYKEiJCgwIABfjcAACBXIAQxANEMQoGChIiQoMCAAX43AAAgKCAEMQDaDEKBgoSIkKDAgAF+NwAAIE8gBDEA4wxCgYKEiJCgwIABfjcAACBOIAQxAOwMQoGChIiQoMCAAX43AAAgTSAEMQD1DEKBgoSIkKDAgAF+NwAAIEwgBDEA/gxCgYKEiJCgwIABfjcAACAYIAQxAIcNQoGChIiQoMCAAX43AAAgSyAEMQCQDUKBgoSIkKDAgAF+NwAADAELIARB2BhqQdEAQQhBAUEBQQkQ4gIgBEHIDGpB0QBBCEEBQQFBCRDiAgsgBEHYGGoiA0HRACBhQQFBAUEJENcCIARByAxqIgtB0QAgYEEBQQFBCRDXAiADQdEAIF9BAUEFQQkQ1wIgC0HRACBeQQFBBUEJENcCIANB0QAgIUEFQQFBCRDXAiALQdEAICBBBUEBQQkQ1wIgA0HRACBaQQVBBUEJENcCIAtB0QAgWUEFQQVBCRDXAiAOIAcgAiAIIAMgChCOBiAFIBYgDSASIAsgChCOBiAJIB9sIQ4gCUEDdCEWIAogCSBJbGpBA3QhAiABKAIUIgcgJmohIiABKAIgIg0gJmohGyABKAIcIR0gASgCECEeQQAhBUEAIRIDQCACIAdLDQQgDiAiaiIDQQdNDQUgAiANSw0GIA4gG2oiA0EHTQ0HIARByAxqIBJqIgNBCmotAAAhJCACIB5qIgsgBEHYGGogEmoiCUEKai0AADoAACACIB1qIgggJDoAACADQQtqLQAAISQgC0EBaiAJQQtqLQAAOgAAIAhBAWogJDoAACADQQxqLQAAISQgC0ECaiAJQQxqLQAAOgAAIAhBAmogJDoAACADQQ1qLQAAISQgC0EDaiAJQQ1qLQAAOgAAIAhBA2ogJDoAACADQQ5qLQAAISQgC0EEaiAJQQ5qLQAAOgAAIAhBBGogJDoAACADQQ9qLQAAISQgC0EFaiAJQQ9qLQAAOgAAIAhBBWogJDoAACADQRBqLQAAISQgC0EGaiAJQRBqLQAAOgAAIAhBBmogJDoAACADQRFqLQAAIQMgC0EHaiAJQRFqLQAAOgAAIAhBB2ogAzoAACAOIBZrIQ4gAiAWaiECIBJBCWohEiAFQQFqIgVBCEkNAAsgASgCmAQiAiABKAKQBEYEQEEAIQgjAEEgayILJAACQAJAQQQgGSIDKAIAIg5BAXQiCSAJQQRNGyIHrUIefiJ5QiCIUEUNACB5pyINQQBIDQAgCyAOBH8gCyAOQR5sNgIcIAsgAygCBDYCFEEBBUEACzYCGCALQQhqQQEgDSALQRRqEIUHIAsoAghBAUcNASALKAIQIQkgCygCDCEICyAIIAlBmKnGABCTCQALIAsoAgwhCSADIAc2AgAgAyAJNgIEIAtBIGokAAsgASgClAQgAkEebGoiAyAE/QABCv0LAAAgA0EWaiAEQSBqKQEANwAAIANBEGogBEEaaikBADcAACABIAJBAWo2ApgEICZBCGshJiAKQQFqIQogNyA3IHVJIgNqITcgAw0BDAoLCyAHIAkgCUGArsYAEOoHAAtBAEEQIAhB8K3GABDqBwALIAIgByAHQfivxgAQ6gcAC0EAQQggA0HIr8YAEOoHAAsgAiANIA1B6K/GABDqBwALQQBBCCADQdivxgAQ6gcACyADICIgIkGQrsYAEOoHAAsgBCAEKQHaGDcDuAwgBCAEQeAYaikBADcBvgwgBC0A2RghBwsgBCAEKQO4DDcDqAwgBCAEKQG+DDcBrgwgAEEMaiAEKQGuDDcBACAAIAQpA6gMNwEGIAAgBzoABSAAIAI6AAQgAEGAgICAeDYCAAwJC0EREHEiA0UNASADQoGDhoyYsODAgX83AAAgA0EQakGBAToAACADQQhqQoGDhoyYsODAgX83AAAgASgCtAQiCwRAIAEoArgEIAtBARCiBwsgAUERNgK8BCABIAM2ArgEIAFBETYCtARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgCzAQiCwRAIAEoAtAEIAtBARCiBwsgAUEJNgLUBCABIAM2AtAEIAFBCTYCzARBCRBxIgNFDQEgA0KBg4aMmLDgwIF/NwAAIANBCGpBgQE6AAAgASgC5AQiCwRAIAEoAugEIAtBARCiBwsgAUEJNgLsBCABIAM2AugEIAFBCTYC5AQgH0FAaiEfIElBCGohSSBFQRBqIUUgESARIEpJIgtqIQMgESEQIAsNAAsMAgsAC0H4qMYAEIIIAAsgAS8BogUiR0UNAEEAIQdBASEDA0AgAyELAkAgAS8BoAUiSEUNAEEAIQMDQCADIAcgAS8BoAVsaiIGIAEoApgEIglJBEAgBEHQDGogASgClAQgBkEebGoiBkEIav0AAAD9CwMAIARB3gxqIAZBFmopAAA3AQAgBCAGKQAANwPIDAJAAkAgBEHIDGoiCi0AHSIGQQNNBEAgAS0ALSIJRQ0CIAotAAMhDUE/IAlBACABIAZBBHRqIgYtAD4bIAYsAD1qIgZBACAGQQBKGyAJIAEtAKQFGyIGIAZBP08bIQIgAS0ApgVFDQEgASgC8AMgAmohAiANQQRHDQEgASgCgAQgAmohAgwBCyAGQQRBuNXGABCMBwALQT8gAkEAIAJBAEobIgYgBkE/ThshBiABLQAuIgkEfyAGQf8BcUECQQEgCUEESxt2IghBCSAJa0H/AXEiCSAIIAlJGwUgBgshCSABLwGgBSESAn8CQAJAIAEtAChFBEAgAkEnTA0BQQMMAwsgAkEnTA0BQQIMAgsgAkETTA0AQQIMAQsgAkEATA0BIAJBDkoLIQggEkEDdCEZIBJBBHQhDkEBIRZBASAJQf8BcSIJIAlBAU0bIgkgBkEBdGoiEEEEaiERAkACQAJAAkACQAJAAkAgDUEERgRAIANFDQMMAQsgCi0AAEUEQCAKLQABIRYgAw0BDAILQQAhFiADRQ0DCyADQQR0QQRrIg0gB0EEdCIUIA5saiECIAEoAgQhCiABKAIIIQYCQAJAAkACQAJAAkACQAJAAkAgAS0AKkUEQCACIAZLDQMgBiACayIMQQdLDQEMDwsgAiAGSw0DIAYgAmsiDEEHSw0BDA0LIAggCSARIAIgCmoQ+AIgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEECciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQNyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEFciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQZyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEIciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQlyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEELciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQxyIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQ0gCCAJIBEgAiAKahD4AiAGIA0gFEEOciAObGoiAkkNASAGIAJrIgxBCEkNDSAIIAkgESACIApqEPgCIAYgDSAUQQ9yIA5saiICSQ0BIAYgAmsiDEEISQ0NIAggCSARIAIgCmoQ+AIgASgCFCIKIANBA3RBBGsiDCAHQQN0IgUgGWxqIgJPDQMMBAsgEUH/AXEiBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBAnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBA3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBBnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBB3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBCnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBC3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDHIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDXIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBDnIgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgItAAIgAi0ABWsiDCAMQR91Ig9zIA9rQQF2IAItAAMiDyACLQAEIhprIhggGEEfdSIYcyAYa0EBdGpPBEAgAkH/AEGAfyAPQfwAQYB/IBogD2tBA2xB/wBBgH8gDCAMQYB/TBsiDCAMQf8AThtqIgwgDEGAf0wbIgwgDEH8AE4bQQNqQQN1akGAAWsiDyAPQYB/TBsiDyAPQf8AThtBgAFzOgADIAJB/wBBgH8gGkH7ACAMIAxB+wBOG0EEakEDdWtBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoABAsgBiANIBRBD3IgDmxqIgJJDQEgBiACayIMQQhJDQsgBSACIApqIgYtAAIgBi0ABWsiAiACQR91IgpzIAprQQF2IAYtAAMiCiAGLQAEIg1rIhQgFEEfdSIUcyAUa0EBdGpPBEAgBkH/AEGAfyAKQfwAQYB/IA0gCmtBA2xB/wBBgH8gAiACQYB/TBsiAiACQf8AThtqIgIgAkGAf0wbIgIgAkH8AE4bQQNqQQN1akGAAWsiCiAKQYB/TBsiCiAKQf8AThtBgAFzOgADIAZB/wBBgH8gDUH7ACACIAJB+wBOG0EEakEDdWtBgAFrIgYgBkGAf0wbIgYgBkH/AE4bQYABczoABAsMBwsgAiAGIAZBuKfGABDqBwALIAIgBiAGQdioxgAQ6gcACyAKIAJrIhRBB00NASABKAIcIQ0gASgCICEGIAggCSARIAEoAhAiDyACahD4AiACIAZLDQMgBiACayIUQQdNDQIgCCAJIBEgAiANahD4AiAKIAwgBUEBciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQJyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBA3IgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEEciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCIAogDCAFQQVyIBlsaiICSQ0AIAogAmsiFEEISQ0BIAggCSARIAIgD2oQ+AIgAiAGSw0DIAYgAmsiFEEISQ0CIAggCSARIAIgDWoQ+AIgCiAMIAVBBnIgGWxqIgJJDQAgCiACayIUQQhJDQEgCCAJIBEgAiAPahD4AiACIAZLDQMgBiACayIUQQhJDQIgCCAJIBEgAiANahD4AiAKIAwgBUEHciAZbGoiAkkNACAKIAJrIhRBCEkNASAIIAkgESACIA9qEPgCIAIgBksNAyAGIAJrIhRBCEkNAiAIIAkgESACIA1qEPgCDAQLIAIgCiAKQZinxgAQ6gcAC0EAQQggFEHopsYAEOoHAAtBAEEIIBRB+KbGABDqBwALIAIgBiAGQYinxgAQ6gcACyAWQQFxDQBBACEWDAELIANBBHQhCiAHQQR0Ig0gDmwhFCABKAIEIQYgASgCCCECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAqRQRAIAYgCiAUaiIPaiETQQAhBkEAIAcgEmxBCHQgCmprIQVBACANQQFqIBJsIi5BBHQgCmoiL2shGkEAIA1BAmogEmwiMEEEdCAKaiIxayEMQQAgDUEDaiASbCIyQQR0IApqIjNrIRRBACANQQRqIBJsIjRBBHQgCmoiNWshFkEAIA1BBWogEmwiNkEEdCAKaiI3ayEYQQAgDUEGaiASbCI4QQR0IApqIjlrISZBACANQQdqIBJsIh1BBHQgCmoiHmshIkEAIA1BCGogEmwiOkEEdCAKaiIXayEbQQAgDUEJaiASbCIcQQR0IApqIjxrISdBACANQQpqIBJsIj1BBHQgCmoiPmshKEEAIA1BC2ogEmwiP0EEdCAKaiJAayEpQQAgDUEMaiASbCIkQQR0IApqIkFrISpBACANQQ1qIBJsIkJBBHQgCmoiQ2shK0EAIA1BDmogEmwiREEEdCAKaiIjayEsQQAgDUEPaiASbCIlQQR0IApqIkVrIS0DQCAGIA9qIg0gAksNESACIAVqIg1BB00NFCAIIAkgECAGIBNqIh8QlAQgBiAvaiACSw0QIAIgGmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDFqIAJLDQ8gAiAMaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgM2ogAksNDiACIBRqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA1aiACSw0NIAIgFmoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIDdqIAJLDQwgAiAYaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgOWogAksNCyACICZqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiAeaiACSw0KIAIgImoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIBdqIAJLDQkgAiAbaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgPGogAksNCCACICdqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiA+aiACSw0HIAIgKGoiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGIEBqIAJLDQYgAiApaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgQWogAksNBSACICpqIg1BCEkNFCAIIAkgECAOIB9qIh8QlAQgBiBDaiACSw0EIAIgK2oiDUEISQ0UIAggCSAQIA4gH2oiHxCUBCAGICNqIAJLDQMgAiAsaiINQQhJDRQgCCAJIBAgDiAfaiIfEJQEIAYgRWogAksNAiACIC1qIg1BCEkNFCAIIAkgECAOIB9qEJQEIAVBBGshBSAaQQRrIRogDEEEayEMIBRBBGshFCAWQQRrIRYgGEEEayEYICZBBGshJiAiQQRrISIgG0EEayEbICdBBGshJyAoQQRrISggKUEEayEpICpBBGshKiArQQRrISsgLEEEayEsIC1BBGshLSAGQQRqIgZBDEcNAAsMEQsgEEH/AXEhDyAGIAogFGoiPGohPUEAIAcgEmxBCHQgCmprIRogBiANQQFqIBJsIj5BBHQgCmoiLmohP0EAIC5rIQwgBiANQQJqIBJsIkBBBHQgCmoiL2ohJEEAIC9rIRQgBiANQQNqIBJsIkFBBHQgCmoiMGohQkEAIDBrIRYgBiANQQRqIBJsIkNBBHQgCmoiMWohREEAIDFrIRggBiANQQVqIBJsIiNBBHQgCmoiMmohJUEAIDJrISYgBiANQQZqIBJsIkVBBHQgCmoiM2ohH0EAIDNrISIgBiANQQdqIBJsIklBBHQgCmoiNGohSkEAIDRrIRsgBiANQQhqIBJsIktBBHQgCmoiNWohTEEAIDVrIScgBiANQQlqIBJsIk1BBHQgCmoiNmohTkEAIDZrISggBiANQQpqIBJsIk9BBHQgCmoiN2ohUEEAIDdrISkgBiANQQtqIBJsIlFBBHQgCmoiOGohUkEAIDhrISogBiANQQxqIBJsIlNBBHQgCmoiOWohVEEAIDlrISsgBiANQQ1qIBJsIlVBBHQgCmoiHWohVkEAIB1rISwgBiANQQ5qIBJsIldBBHQgCmoiHmohWEEAIB5rIS0gBiANQQ9qIBJsIllBBHQgCmoiOmohWkEAIDprIQ1BdCEGAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAAkAgAiAGIDxqIgVBDGpPBEAgAiAaaiIFQQdLDQEMEwsgBUEMagwRCyAPIAYgPWoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAuakEMaiACSw0PIAIgDGoiBUEISQ0RIA8gBiA/aiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIC9qQQxqIAJLDQ4gAiAUaiIFQQhJDREgDyAGICRqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgMGpBDGogAksNDSACIBZqIgVBCEkNESAPIAYgQmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAxakEMaiACSw0MIAIgGGoiBUEISQ0RIA8gBiBEaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDJqQQxqIAJLDQsgAiAmaiIFQQhJDREgDyAGICVqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgM2pBDGogAksNCiACICJqIgVBCEkNESAPIAYgH2oiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA0akEMaiACSw0JIAIgG2oiBUEISQ0RIA8gBiBKaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDVqQQxqIAJLDQggAiAnaiIFQQhJDREgDyAGIExqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgNmpBDGogAksNByACIChqIgVBCEkNESAPIAYgTmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiA3akEMaiACSw0GIAIgKWoiBUEISQ0RIA8gBiBQaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIDhqQQxqIAJLDQUgAiAqaiIFQQhJDREgDyAGIFJqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOWpBDGogAksNBCACICtqIgVBCEkNESAPIAYgVGoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgBiAdakEMaiACSw0DIAIgLGoiBUEISQ0RIA8gBiBWaiIFQQ5qLQAAIAVBEWotAABrIhMgE0EfdSIXcyAXa0EBdiAFQQ9qIiAtAAAiFyAFQRBqIiEtAAAiHGsiBSAFQR91IgVzIAVrQQF0ak8EQCAgQf8AQYB/IBdB/ABBgH8gHCAXa0EDbEH/AEGAfyATIBNBgH9MGyIFIAVB/wBOG2oiBSAFQYB/TBsiBSAFQfwAThtBA2pBA3VqQYABayITIBNBgH9MGyITIBNB/wBOG0GAAXM6AAAgIUH/AEGAfyAcQfsAIAUgBUH7AE4bQQRqQQN1a0GAAWsiBSAFQYB/TBsiBSAFQf8AThtBgAFzOgAACyAGIB5qQQxqIAJLDQIgAiAtaiIFQQhJDREgDyAGIFhqIgVBDmotAAAgBUERai0AAGsiEyATQR91IhdzIBdrQQF2IAVBD2oiIC0AACIXIAVBEGoiIS0AACIcayIFIAVBH3UiBXMgBWtBAXRqTwRAICBB/wBBgH8gF0H8AEGAfyAcIBdrQQNsQf8AQYB/IBMgE0GAf0wbIgUgBUH/AE4baiIFIAVBgH9MGyIFIAVB/ABOG0EDakEDdWpBgAFrIhMgE0GAf0wbIhMgE0H/AE4bQYABczoAACAhQf8AQYB/IBxB+wAgBSAFQfsAThtBBGpBA3VrQYABayIFIAVBgH9MGyIFIAVB/wBOG0GAAXM6AAALIAYgOmpBDGogAksNASACIA1qIgVBCEkNESAPIAYgWmoiBUEOai0AACAFQRFqLQAAayITIBNBH3UiF3MgF2tBAXYgBUEPaiIgLQAAIhcgBUEQaiIhLQAAIhxrIgUgBUEfdSIFcyAFa0EBdGpPBEAgIEH/AEGAfyAXQfwAQYB/IBwgF2tBA2xB/wBBgH8gEyATQYB/TBsiBSAFQf8AThtqIgUgBUGAf0wbIgUgBUH8AE4bQQNqQQN1akGAAWsiEyATQYB/TBsiEyATQf8AThtBgAFzOgAAICFB/wBBgH8gHEH7ACAFIAVB+wBOG0EEakEDdWtBgAFrIgUgBUGAf0wbIgUgBUH/AE4bQYABczoAAAsgGkEEayEaIAxBBGshDCAUQQRrIRQgFkEEayEWIBhBBGshGCAmQQRrISYgIkEEayEiIBtBBGshGyAnQQRrIScgKEEEayEoIClBBGshKSAqQQRrISogK0EEayErICxBBGshLCAtQQRrIS0gDUEEayENIAZBBGoiBg0AC0EBIRYMIgsgWUEEdCAKaiAGakEMagwOCyBXQQR0IApqIAZqQQxqDA0LIFVBBHQgCmogBmpBDGoMDAsgU0EEdCAKaiAGakEMagwLCyBRQQR0IApqIAZqQQxqDAoLIE9BBHQgCmogBmpBDGoMCQsgTUEEdCAKaiAGakEMagwICyBLQQR0IApqIAZqQQxqDAcLIElBBHQgCmogBmpBDGoMBgsgRUEEdCAKaiAGakEMagwFCyAjQQR0IApqIAZqQQxqDAQLIENBBHQgCmogBmpBDGoMAwsgQUEEdCAKaiAGakEMagwCCyBAQQR0IApqIAZqQQxqDAELID5BBHQgCmogBmpBDGoLIAIgAkG4qMYAEOoHAAtBAEEIIAVBqKjGABDqBwALICVBBHQgCmogBmohDQwOCyBEQQR0IApqIAZqIQ0MDQsgQkEEdCAKaiAGaiENDAwLICRBBHQgCmogBmohDQwLCyA/QQR0IApqIAZqIQ0MCgsgPUEEdCAKaiAGaiENDAkLIBxBBHQgCmogBmohDQwICyA6QQR0IApqIAZqIQ0MBwsgHUEEdCAKaiAGaiENDAYLIDhBBHQgCmogBmohDQwFCyA2QQR0IApqIAZqIQ0MBAsgNEEEdCAKaiAGaiENDAMLIDJBBHQgCmogBmohDQwCCyAwQQR0IApqIAZqIQ0MAQsgLkEEdCAKaiAGaiENCyANIAIgAkGYqMYAEOoHAAsCQAJAIAEoAhQiCiADQQN0IgwgB0EDdCIFIBlsaiICSQ0AAkACQCAKIAJrIhRBB00NACABKAIcIQ0gASgCICEGIAggCSAQIAEoAhAiDyACahCUBCACIAZLDQMgBiACayIUQQdNDQEgCCAJIBAgAiANahCUBCAKIAVBAXIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUECciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQNyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBBHIgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEIAogBUEFciAZbCAMaiICSQ0CIAogAmsiFEEISQ0AIAggCSAQIAIgD2oQlAQgAiAGSw0DIAYgAmsiFEEISQ0BIAggCSAQIAIgDWoQlAQgCiAFQQZyIBlsIAxqIgJJDQIgCiACayIUQQhJDQAgCCAJIBAgAiAPahCUBCACIAZLDQMgBiACayIUQQhJDQEgCCAJIBAgAiANahCUBCAKIAVBB3IgGWwgDGoiAkkNAiAKIAJrIhRBCEkNACAIIAkgECACIA9qEJQEIAIgBksNAyAGIAJrIhRBCEkNASAIIAkgECACIA1qEJQEQQEhFgwEC0EAQQggFEHIp8YAEOoHAAtBAEEIIBRB2KfGABDqBwALIAIgCiAKQfinxgAQ6gcACyACIAYgBkHop8YAEOoHAAsCQCAHRQ0AIAcgDmxBBHQgA0EEdGoiCkEPciENIApBDnIhFCAKQQ1yIQwgCkEMciEFIApBC3IhDyAKQQpyIRogCkEJciEYIApBCHIhJiAKQQdyISIgCkEGciEbIApBBXIhJyAKQQRyISggCkEDciEpIApBAnIhKiAKQQFyISsgASgCCCEGIAEoAgQhAiABLQAqRQRAIAggCSARIAIgBiAKIA4Q+gIgCCAJIBEgAiAGICsgDhD6AiAIIAkgESACIAYgKiAOEPoCIAggCSARIAIgBiApIA4Q+gIgCCAJIBEgAiAGICggDhD6AiAIIAkgESACIAYgJyAOEPoCIAggCSARIAIgBiAbIA4Q+gIgCCAJIBEgAiAGICIgDhD6AiAIIAkgESACIAYgJiAOEPoCIAggCSARIAIgBiAYIA4Q+gIgCCAJIBEgAiAGIBogDhD6AiAIIAkgESACIAYgDyAOEPoCIAggCSARIAIgBiAFIA4Q+gIgCCAJIBEgAiAGIAwgDhD6AiAIIAkgESACIAYgFCAOEPoCIAggCSARIAIgBiANIA4Q+gIgASgCICEGIAEoAhwhAiAIIAkgESABKAIQIg0gASgCFCIUIAcgGWxBA3QgA0EDdGoiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIgCCAJIBEgDSAUIApBAXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBAnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBA3IiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBHIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBXIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBBnIiDCAZEPoCIAggCSARIAIgBiAMIBkQ+gIgCCAJIBEgDSAUIApBB3IiCiAZEPoCIAggCSARIAIgBiAKIBkQ+gIMAQsgESACIAYgCiAOEOEFIBEgAiAGICsgDhDhBSARIAIgBiAqIA4Q4QUgESACIAYgKSAOEOEFIBEgAiAGICggDhDhBSARIAIgBiAnIA4Q4QUgESACIAYgGyAOEOEFIBEgAiAGICIgDhDhBSARIAIgBiAmIA4Q4QUgESACIAYgGCAOEOEFIBEgAiAGIBogDhDhBSARIAIgBiAPIA4Q4QUgESACIAYgBSAOEOEFIBEgAiAGIAwgDhDhBSARIAIgBiAUIA4Q4QUgESACIAYgDSAOEOEFCyAWRQ0DIANBBHQhESAHQQR0IQogASgCCCEGIAEoAgQhAiABLQAqRQRAIBJBBnQhFCAKQQRqIBJsQQR0IBFqQQ9qIQ1BfSEFA0AgCCAJIBAgAiAGIA1BD2sgDhDgBCAIIAkgECACIAYgDUEOayAOEOAEIAggCSAQIAIgBiANQQ1rIA4Q4AQgCCAJIBAgAiAGIA1BDGsgDhDgBCAIIAkgECACIAYgDUELayAOEOAEIAggCSAQIAIgBiANQQprIA4Q4AQgCCAJIBAgAiAGIA1BCWsgDhDgBCAIIAkgECACIAYgDUEIayAOEOAEIAggCSAQIAIgBiANQQdrIA4Q4AQgCCAJIBAgAiAGIA1BBmsgDhDgBCAIIAkgECACIAYgDUEFayAOEOAEIAggCSAQIAIgBiANQQRrIA4Q4AQgCCAJIBAgAiAGIA1BA2sgDhDgBCAIIAkgECACIAYgDUECayAOEOAEIAggCSAQIAIgBiANQQFrIA4Q4AQgCCAJIBAgAiAGIA0gDhDgBCANIBRqIQ0gBUEBaiIFDQALIAEoAiAhBiABKAIcIQIgCCAJIBAgASgCECIRIAEoAhQiCiAZIAdBA3RBBHJsIANBA3RqIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEIAggCSAQIBEgCiAOQQFyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQJyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQNyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQRyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQVyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQZyIg0gGRDgBCAIIAkgECACIAYgDSAZEOAEIAggCSAQIBEgCiAOQQdyIg4gGRDgBCAIIAkgECACIAYgDiAZEOAEDAQLIBJBBnQhDSAKQQRqIBJsQQR0IBFqQQ9qIQlBfSEIA0AgECACIAYgCUEPayAOEOEFIBAgAiAGIAlBDmsgDhDhBSAQIAIgBiAJQQ1rIA4Q4QUgECACIAYgCUEMayAOEOEFIBAgAiAGIAlBC2sgDhDhBSAQIAIgBiAJQQprIA4Q4QUgECACIAYgCUEJayAOEOEFIBAgAiAGIAlBCGsgDhDhBSAQIAIgBiAJQQdrIA4Q4QUgECACIAYgCUEGayAOEOEFIBAgAiAGIAlBBWsgDhDhBSAQIAIgBiAJQQRrIA4Q4QUgECACIAYgCUEDayAOEOEFIBAgAiAGIAlBAmsgDhDhBSAQIAIgBiAJQQFrIA4Q4QUgECACIAYgCSAOEOEFIAkgDWohCSAIQQFqIggNAAsMAwtBAEEIIA1BiKjGABDqBwALQQBBCCAMQcioxgAQ6gcAC0EAQQggDEGop8YAEOoHAAsgA0EBaiIDIEhHDQEMAgsLIAYgCUHoqMYAEIwHAAsgB0EBaiEHIAsgCyBHSSIGaiEDIAYNAAsLIAAgAf0AAgD9CwIAIABBIGogAUEgav0AAgD9CwIAIABBEGogAUEQav0AAgD9CwIAIAEoAnQiAARAIBUoAgAgAEECdEEBEKIHCyABKAKQBCIABEAgASgClAQgAEEebEEBEKIHCyBdEL8CIAEoAvAEQYAhQQEQogcgASgCnAQiAARAIAEoAqAEIABBHmxBARCiBwsgASgCqAQiAARAIAEoAqwEIABBARCiBwsgASgCtAQiAARAIAEoArgEIABBARCiBwsgASgCwAQiAARAIAEoAsQEIABBARCiBwsgASgCzAQiAARAIAEoAtAEIABBARCiBwsgASgC2AQiAEUNBCABKALcBCAAQQEQogcMBAsgekIgiKchEiB6QhCIpyEVIHpCCIinIQgLCyAAIA42AhAgACADOgAIIAAgAjsBBiAAIAc6AAUgACALOgAEIABBgICAgHg2AgAgAEEPaiASQRh2rTwAACAAQQ1qIBJBCHatPQAAIAAgEkEYdK0gCEH/AXEgFUEIdHKtQv///weDhD4ACQsgASgCdCIABEAgASgCcCIGQQRrKAIAIgNBeHEiCyAAQQJ0IgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoApAEIgAEQCABKAKUBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAgAiAARAIAEoAgQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCDCIABEAgASgCECIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAIYIgAEQCABKAIcIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAFBmAFqEL8CIAEoAvAEIgZBBGsoAgAiAEF4cUGEIUGIISAAQQNxIgMbSQ0BIANBACAAQaghTxsNAiAGEKICIAEoApwEIgAEQCABKAKgBCIGQQRrKAIAIgNBeHEiCyAAQR5sIgBBBEEIIANBA3EiAxtqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAqgEIgAEQCABKAKsBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKAK0BCIABEAgASgCuAQiBkEEaygCACIDQXhxIgtBBEEIIANBA3EiAxsgAGpJDQIgA0EAIAsgAEEnaksbDQMgBhCiAgsgASgCwAQiAARAIAEoAsQEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0CIANBACALIABBJ2pLGw0DIAYQogILIAEoAswEIgAEQCABKALQBCIGQQRrKAIAIgNBeHEiC0EEQQggA0EDcSIDGyAAakkNAiADQQAgCyAAQSdqSxsNAyAGEKICCyABKALYBCIARQ0AIAEoAtwEIgZBBGsoAgAiA0F4cSILQQRBCCADQQNxIgMbIABqSQ0BIANBACALIABBJ2pLGw0CIAYQogILAkAgASgC5AQiAARAIAEoAugEIgFBBGsoAgAiBkF4cSIDQQRBCCAGQQNxIgYbIABqSQ0CIAZBACADIABBJ2pLGw0BIAEQogILIARBsBlqJAAPCwwBC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu6pAECEX8BfiMAQbABayIGJAAgAy0AACIPQRh0IAMtAAMiB0EYdCINIA9yIAMtAAEiCkEIdCIRIAMtAAIiCUEQdCIMcnIiCEGA/gNxQQh0ciAMQQh2IAdyciEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACQAJAAkACQCAGAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AAEEBaw4FBAABAgwDCyABQgA3A4ADIAEgAzYC/AIgAUEDOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxLCyACKAIEIQsgASgCCEECRiAPIBFyIAwgDXJyIgNByZCRkgVHcQ0DIAMgASgC2AIiCEcNBAxJCyACKAABIREgAS0AkQMNBCABKALQAiICIANGDQQgAS0AlANBAUZBACARQSBxGw0FIAAgETYCECAAIAI2AgwgACADNgIIIABBADoABCAAQQE2AgAMSQsgCEGJobm6BEcEQCAAQQE2AgAgAEEBOgAEDEkLIAFCADcDgAMgAUEBOgD4AiAAQQA6AAggACAFNgIEIABBADYCAAxICyAIQY2U6NAARwRAIABBATYCACAAQQE6AAQMSAsgAUIANwOAAyABQQI6APgCIABBADoACCAAIAU2AgQgAEEANgIADEcLIAAgAzYABSAAQQQ6AAQgAEEBNgIADEYLIAhB5siFogVHIAhByYiFogVHcQ1EAkAgBARAIAZBQGshCCABKALwAiENIAEtAPQCIQwjAEEQayILJAACQAJAIAxBAXFFDQAgDS0AowdBB0YNAAJAIAQoAgwiECgCACISIAQoAgQiDEcEQCAMIAQoAggiESgCACIOSQ0BIAtBBGogDUEBQQAgBCgCACAOaiAMIA5rIBIgDmtBABBCIAstAAQEQCAIIAstAAU6AAEgCEEcOgAADAQLIBAgECgCACALKAIMaiIENgIAIA0tAKMHQQdGBEAgESAENgIAIAhBqAI7AQAMBAsgBCAMRwRAIAhBnAI7AQAMBAsgCEEoOwEAIBEgDEGAgAJrIgRBACAEIAxNGyIEIBEoAgAiCCAEIAhLGzYCAAwDCyAIQagCOwEADAILIA4gDCAMQeCQxQAQ6gcACyAIQagCOwEACyALQRBqJAAgBi0AQSEEIAYtAEAiCEEoRg0BIAAgBikBQjcBBiAAQQxqIAZByABqKQEANwEAIAAgBDoABSAAIAg6AAQgAEEBNgIADEcLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCDEQLIAEgBzoAgwMgASAJOgCCAyABIAo6AIEDIAEgDzoAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIARBAXENQyAAQQU6AAggAEIANwIADEULIAEtAOwCQQFrDgICAwELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQwsgBiARNgIkIBFBGHYhByARQRB2IQIgEUEIdiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBFB/wFxQckAaw4yAG9vb29vbwFvb29vb29vb29vb29vb29vBwoIbwsCBm8Mb29vCW9vBW9vAwRvb29vbw1vCyAEQf8BcUHEAGsOBQ8Obm4NbgsgBEH/AXFBzABHIAJB/wFxQdQAR3IgB0HFAEdyDW0gASgCCEECRg0zIAEoAuABQYGAgIB4Rg0QIAZB0JjRqgQ2AClBCSECIAZBCToAKAxkCyAEQf8BcUHjAGsOAhEQbAsgBEH/AXFBwgBrIgRFDREgBEEQRg0SDGsLIARB/wFxQcUAayIERQ0VIARBDUYNFAxqCyAHQfMARyAEQf8BcUHIAEdyIAJB/wFxQdkAR3INaSABKAIIQQJGDTogAS0AjAMNOyABLQCcAkECRg0XIAZB8JDlmgc2AClBCSECIAZBCToAKAxgCyAHQcEARyAEQf8BcUHBAEdyIAJB/wFxQc0AR3INaCABKAIIIgJBAkYNOyABLQCMAw08IAJBAUcNFyAGQeeCtYoENgApQQkhAiAGQQk6ACgMXwsgB0HMAEcgBEH/AXFB4wBHciACQf8BcUHUAEdyDWcgASgCCEECRg08IAEtAIwDDT0gASgCNEUNFyAGQeHG0eIENgApQQkhAiAGQQk6ACgMXgsgBEH/AXFByABrDgUXGGZmGWYLIAdB1gBHIARB/wFxQcQAR3IgAkH/AXFBwwBHcg1lIAEoAghBAkYNQCABKAJsRQ0cIAZB7YiNsgU2AClBCSECIAZBCToAKAxcCyAHQcQARyAEQf8BcUHLAEdyIAJB/wFxQccAR3INZCABKAIIQQJGDUEgASgC7AFBgYCAgHhGDRwgBkHilp2iBDYAKUEJIQIgBkEJOgAoDFsLIAdB5gBHIARB/wFxQdgAR3IgAkH/AXFByQBHcg1jIAEoAghBAkYNQSABKAKEAkGBgICAeEYNHCAGQeWwpbIGNgApQQkhAiAGQQk6ACgMWgsgBEH/AXFBwwBrIgRFDRwgBEERRg1HDGILIAdB9ABHIARB/wFxQdQAR3INYSACQf8BcUHYAEYNHAxhCyACQf8BcUHEAEcgB0HSAEdyDWAgASgCCEECRg0CIAZByZCRkgU2AClBCQxaCyACQf8BcUHOAEcgB0HEAEdyDV8MXQsgAkH/AXFBwQBHIAdB1ABHcg1eDFwLAkACQCABKALoAiIEQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMSgsgBEF8cUEERgRAQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEoLIAEoAuQCIgIoAAAiD0UNACACKAAEIggNAQtBEQxYCwJAIARBCEYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJCyACLQAIIgNBAWsiCUH/AXEiB0EPS0GLgQIgB3ZBAXFFcg0AAkACQAJAAkACfyAEQQlGBEBBACEHQaiQyAApAwAiF6ciBEH/AXFBBEcNJCACQQlqIQpBACEMQQAMAQsgAkEJai0AACIMQQZLDQEgBEEKayEHIAJBCmohCkEAQQEgDHRB1QBxDQAaIAxBA0cNAUEBCyECIANBAWsOEAEBAwEDAwMDAwMDAwMDAwIDCyAGIAw6AClBEwxbCyAMQQZNQQBBASAMdEHUAHEbDVkgAkGAgAIgCXZxQQFHDQEMWQsgAg1YCwJAIAdFBEBBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMSgsgCi0AACICDSMgB0EBRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEoLIAotAAEiAg0kIAdBAkYEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxKC0EAIQcCQAJAIAotAAIiAg4CAgEACyAGIAI6AClBGgxaC0EBIQcLAkAgAUEIaiIJKAIAQQJGDQACQCAJKALAASICQYKAgIB4SCACRXJFBEAgCSgCxAEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCzAEiAkGCgICAeEggAkVyRQRAIAkoAtABIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAtgBIgJBgoCAgHhIIAJFckUEQCAJKALcASIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKALkASICQYKAgIB4SCACRXJFBEAgCSgC6AEiBEEEaygCACIKQXhxIgtBBEEIIApBA3EiChsgAmpJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgC8AEiAkGCgICAeEggAkVyRQRAIAkoAvQBIgRBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAJqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoAvwBIgJBgoCAgHhIIAJFckUEQCAJKAKAAiIEQQRrKAIAIgpBeHEiC0EEQQggCkEDcSIKGyACakkNZSAKQQAgCyACQSdqSxsNASAEEKICCyAJKAKgASEEIAkoAqQBIgoEQCAEIQIDQCACKAIAIgsEQCACQQRqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBDGooAgAiCwRAIAJBEGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEYaiECIApBAWsiCg0ACwsgCSgCnAEiAgRAIARBBGsoAgAiCkF4cSILIAJBGGwiAkEEQQggCkEDcSIKG2pJDWUgCkEAIAsgAkEnaksbDQEgBBCiAgsgCSgCrAEhBCAJKAKwASIKBEAgBEEUaiECA0AgAkEEaygCACILBEAgAigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQRBrKAIAIgsEQCACQQxrKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBHGohAiAKQQFrIgoNAAsLIAkoAqgBIgIEQCAEQQRrKAIAIgpBeHEiCyACQRxsIgJBBEEIIApBA3EiChtqSQ1lIApBACALIAJBJ2pLGw0BIAQQogILIAkoArgBIQQgCSgCvAEiCgRAIAQhAgNAIAJBEGooAgAiCwRAIAJBFGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkEcaigCACILBEAgAkEgaigCACIOQQRrKAIAIg1BeHEiEEEEQQggDUEDcSINGyALakkNZyANQQAgECALQSdqSxsNAyAOEKICCyACQShqKAIAIgsEQCACQSxqKAIAIg5BBGsoAgAiDUF4cSIQQQRBCCANQQNxIg0bIAtqSQ1nIA1BACAQIAtBJ2pLGw0DIA4QogILIAJBBGooAgAiCwRAIAJBCGooAgAiDkEEaygCACINQXhxIhBBBEEIIA1BA3EiDRsgC2pJDWcgDUEAIBAgC0EnaksbDQMgDhCiAgsgAkE4aiECIApBAWsiCg0ACwsgCSgCtAEiAkUNASAEQQRrKAIAIglBeHEiCiACQThsIgJBBEEIIAlBA3EiCRtqSQ1kIAlBACAKIAJBJ2pLGw0AIAQQogIMAQsMZAsgASADOgDHAiABIAw6AMYCIAFBBDoAxQIgASAHOgDEAiABIAhBGHQgCEGA/gNxQQh0ciAIQQh2QYD+A3EgCEEYdnJyNgLAAiABIA9BGHQgD0GA/gNxQQh0ciAPQQh2QYD+A3EgD0EYdnJyNgK8AiABQQI6ALkCIAFBAjoAnAIgAUECNgKQAiABQYGAgIB4NgKEAiABQYGAgIB4NgL4ASABQYGAgIB4NgLsASABQYGAgIB4NgLgASABQYGAgIB4NgLUASABQoCAgICQgICAgH83AsQBIAFCgICAgMAANwK8ASABQgQ3ArQBIAFCADcCrAEgAUKAgICAwAA3AqQBIAFBADYCmAEgAUEANgJsIAFBADYCSCABQQA2AkAgAUEANgI0IAFBADYCECABQQA2AggMXAsgBiADOgApQRIMVwsgASgC6AIiB0EASA1iIAEoAuQCIQQCQCAHRQRAQQEhAgwBCyAHEHEiAkUNGQsgBwRAIAIgBCAH/AoAAAsgASAHNgLoASABIAI2AuQBIAEgBzYC4AEMTwsgB0HUAEcgAkH/AXFBwQBHcg1bDFkLIAdBzABHIAJB/wFxQdQAR3INWiABKALkAiEEAkACQAJAAkACQAJAAkACQAJAAkACQCABAn8CQAJAAkAgASgC6AIiA0EDTQRAQQAhCUGokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxUCyAEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgA0EEayEDIARBBGohByABKAIARQ0CIAMhDAwBCyADIARqIQdBACEMQQAhA0EAIAEoAgBBAUcNAhoLIAkgASgCBEEBaiIIRw0DIAwhAyAJDAELIAINAUEACzYCBCABQQE2AgAjAEEQayIEJAAgAUHwAmoiAkEAOgAEAkACQEGAgAEQcSIIRQ0AIAhBAEGAgAH8CwBBgBAQcSIMRQ0AIAxBAEGAEPwLACAEQQxqQQA7AQAgBEEANgIIIAIoAgAiAigC+AYiD0EEaygCACIKQXhxQYSAAUGIgAEgCkEDcSILG0kNayALQQAgCkGogAFPGw1sIA8QogIgAigC4AYiCgRAIAIoAuQGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAigC/AYiD0EEaygCACIKQXhxQYQQQYgQIApBA3EiCxtJDWsgC0EAIApBqBBPGw1sIA8QogIgAigC7AYiCgRAIAIoAvAGIg9BBGsoAgAiC0F4cSINIApBAXQiCkEEQQggC0EDcSILG2pJDWwgC0EAIA0gCkEnaksbDW0gDxCiAgsgAkEAQdgG/AsAIAJBADYClAcgAkEANgKIByACQQA6AIQHIAJBADYCgAcgAiAMNgL8BiACIAg2AvgGIAJCAjcD8AYgAkIANwPoBiACQoCAgIAgNwPgBiACQQE2AtwGIAJBJDYC2AYgAkEAOgCmByACIAQpAwA3A5gHIAJBngdqIAQpAQY3AQAgBEEQaiQADAELAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEPQaiQyAApAwAiF6ciAkH/AXFBBEcNAkEAIQhBACEMQQAhBEEAIQsMBAtBACEICyAGIAg2AjAgBiAJNgIsQQohAiAGQQo6ACgMWgsgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAxMCyAHKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQggA0F8cSIKQQRGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQxBACEEQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhDCAKQQhGBEBBACEPQaiQyAApAwAiF6ciAkH/AXFBBEYEQEEAIQRBACELDAILIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMTAsgBygACCICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEEIApBDEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERgRAQQAhCwwCCyAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDEwLIAcoAAwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhCyADQX5xIgJBEEYEQEEAIQ9BqJDIACkDACIXpyICQf8BcUEERg0BIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMTAsgBy8AECIKQQh0IApBCHZyIQ4gAkESRw0CQQAhD0GokMgAKQMAIhenIgJB/wFxQQRHDQELQQAhCkEAIQMMAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAxJCyAHLwASIgJBCHQgAkEIdnIhCiADQRRGBEBBACEPQQAhA0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDEkLIActABQiD0ECSw0BIANBFUYEQEEAIQNBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxJC0EAIQMCQCAHLQAVIgIOAgEAJgtBASEDCyABKAIIQQJHBEBBESECIAhFIAxFcg0CQRshAiABKALAAiIHIAtJIAwgByALa0tyDQIgASgCvAIiDSAESSAIIA0gBGtLcg0CIBBBAXEgBCALciAHIAxHckUgCCANRnFyDQMgBkEbOgAoDFULQaCSxQAQ3QkACyAGIA86AClBFCECCyAGIAI6ACgMUgsgASADOgC5AiABIA86ALgCIAEgCjsBtgIgASAOOwG0AiABIAs2ArACIAEgBDYCrAIgASAMNgKoAiABIAg2AqQCIAEgCTYCoAIMTQsgB0HUAEcgAkH/AXFByQBHcg1ZIAEoAghBAkYNISABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDE8LIAdBwgBHIAJB/wFxQccAR3INWCABKAIIQQJGDSIgAS0AjAMNIyABLQDFAkEERg0BIAZB86SdkgQ2AClBCSECIAZBCToAKAxPCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSECIAZBCToAKAxQCyAGQfOEpaIFNgApDE0LIAEoAugCIghBAEgNXSABLQDGAiECIAEtAMcCIQMgASgC5AIhBAJAIAhFBEBBASEJDAELIAgQcSIJRQ0UCyAIBEAgCSAEIAj8CgAACyAGAn8CQCAIIAJBAnQoApiPSSIERgRAQQggAyACQQNGGyECQQAhBwwBCyAGIAg2AjAgBiAENgIsIAYgAjoAKUEMDAELA0AgByAJai0AACIDQQFrQf8BcSACQf8BcUkEQCAHQQFqIgcgCEcNAQwjCwsgBiACOgAqIAYgAzoAKUENCyICOgAoIAgNFkEAIQgMTgsCQCABKALoAkUEQEEAIQdBqJDIACkDACIXpyICQf8BcUEERg0BIAZBMmogF0IwiD0BACAGIAI6ACwgBkEkOgAoIAYgF0IQiD4BLiAGIBdCCIg8AC0gF0IgiKchCAxCCyABKALkAi0AACIHQQRJDQAgBiAHOgApQRchAiAGQRc6ACgMTgsgASAHOgDFAgxJCyAHQdMARyACQf8BcUHOAEdyDVUgASgCCEECRg0hIAEoAtQBQYGAgIB4Rg0BIAZB0JjRqgQ2AClBCSECIAZBCToAKAxMCyAHQfQARyACQf8BcUHYAEdyDVQgASgCiAMiBCABKALoAiICTw0BDEgLIAEoAugCIghBAEgNWSABKALkAiEEIAEtAMcCIQMgAS0AxgIhAgJAIAhFBEBBASEHDAELIAgQcSIHRQ0QCyAIBEAgByAEIAj8CgAACwJAAkACQAJAIAIOBAEAAgMACyAGIAI6AClBECECIAZBEDoAKCAIRQ1NIAcgCEEBEKIHDE0LIAhBAk8EQCAIIQIgA0H/AXFBEEkNIwxHCyAGIAg2AjAgBkECNgIsDEQLIAhBBkkNIiADQf8BcUEQTwRAIAEgCDYC3AEMRwsgByAHLQABOgAAIAcgBy0AAzoAASAHIActAAU6AAIgAUEDNgLcAQxGCyABKALgAUGBgICAeEYNIiABLQCMA0UEQCABIAg2AtwBDEYLIAZB9KS5mgU2AClBCAxDCyABIAQgAms2AogDQZ4EIQgCQAJAIAJFDQAgASgC5AIhCUEAIQcDQCAHIAlqIgMtAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhCCAHQdAAa0Gwf0sNAQsgBiAINgIoQR4hBwxLCyABKAIIQQJGDSIgB0F/cyACaiEPIANBAWohCiACIAdBAWoiDmshDUEAIQwgBkEANgKAASAGQoCAgIAQNwJ4IAZB+ABqQQAgBxDvBSAGKAKAASEDA0BBAUECIAkgDGosAAAiCEEATiIQGyILIAYoAnggA2tLBH8gBkH4AGogAyALEO8FIAYoAoABBSADCyAGKAJ8IgRqIhIgEEUEQCASIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiADIAtqIgM2AoABIAcgDEEBaiIMRw0AC0EAIQkgBkEANgJIIAZCgICAgBA3A0AgAiAORwRAIAZBQGtBACANEO8FIAYoAkghCQNAQQFBAiAKLAAAIgJBAE4iCBsiAyAGKAJAIAlrSwR/IAZBQGsgCSADEO8FIAYoAkgFIAkLIAYoAkRqIgcgCAR/IAIFIAcgAkG/AXE6AAEgAkHAAXFBBnZBQHILOgAAIAYgAyAJaiIJNgJIIApBAWohCiAPQQFrIg8NAAsLIAZBPGoiAiAGQYIBai8BADsBACAGIAYoAX42AjggBigCeCIPQYCAgIB4Rg1AIARBCHYhAyAGKQNAIRcgBkGkAWogAi8BADsBACAGIAYoAjg2AqABIAEoAqwBIgogASgCpAFGBEAjAEEgayICJAACQCABQaQBaiIHKAIAIgxBqtWqFUsEf0EABUEEIAxBAXQiCyALQQRNGyILQRhsIQ4gAiAMBH8gAiAMQRhsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0GAlMUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABIApBAWo2AqwBIAEoAqgBIApBGGxqIgIgAzoABSACIAQ6AAQgAiAPNgIAIAIgBigCoAE2AQYgAiAJNgIUIAIgFzcBDCACQQpqIAZBpAFqLwEAOwEADD8LAkAgASgC6AIiBEEDTQRAQQAhCUEAIQNBACEHQaiQyAApAwAiF6ciAkH/AXFBBEYNASAGQS9qIAJBGHY6AAAgBiACOgAsIAZBJDoAKCAGIAJBCHY7AC0gBiAXQiCIpyIINgIwDD0LIAEoAuQCIggoAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAyAEQXxxQQRGBEBBACEJQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw9CyAIKAAEIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQkgBEEIRgRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDD0LQQAhBwJAAkAgCC0ACCICDgICAQALIAYgAjoAKUEWIQIgBkEWOgAoDEoLQQEhBwsgASAHOgCcAiABIAk2ApgCIAEgAzYClAIMRAsCQAJAIAEoAugCQQNNBEBBqJDIACkDACIXpyICQf8BcUEERg0BIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMPQsgASgC5AIoAAAiBw0BC0EjIQIgBkEjOgAoDEgLIAFBATYCCCABIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyNgIMDEMLIAEoAugCIgJBA00EQEGokMgAKQMAIhenIgdB/wFxQQRGDUMgBkEvaiAHQRh2OgAAIAYgBzoALCAGQSQ6ACggBiAHQQh2OwAtIAYgF0IgiKciCDYCMAw6CyABKALkAiIEKAAAIQcgAkF8cUEERwRAIAQoAAQhAgw8C0EAIQJBqJDIACkDACIXpyIEQf8BcUEERg07IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMOQsgB0HNAEcgAkH/AXFB0gBHcg1OIAEoAghBAkYNJSABLQCMAw0mIAEoAhBFDQIgBkHjkMnqBDYAKUEJIQIgBkEJOgAoDEULIAdB0ABHIAJB/wFxQcMAR3INTSABKAIIQQJGDSYgAS0AkAJBAkYNAiAGQeOSjYIFNgApQQkhAiAGQQk6ACgMRAsgB0HJAEcgAkH/AXFBzABHcg1MIAEoAghBAkYNJiABKAKYAUUNAiAGQeOYscoENgApQQkhAiAGQQk6ACgMQwsgASgC6AIiA0EDTQRAQQAhB0EAIQJBACEJQQAhA0EAIQhBACEMQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyABKALkAiIEKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQIgA0F8cSIHQQRGBEBBACEHQQAhCUEAIQNBACEIQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgABCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciEJIAdBCEYEQEEAIQdBACEDQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAgiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnIhAyAHQQxGBEBBACEHQQAhCEEAIQxBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoAAwiCEEYdCAIQYD+A3FBCHRyIAhBCHZBgP4DcSAIQRh2cnIhCCAHQRBGBEBBACEHQQAhDEEAIQpBqJDIACkDACIXpyIEQf8BcUEERg03IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNgsgBCgAECIMQRh0IAxBgP4DcUEIdHIgDEEIdkGA/gNxIAxBGHZyciEMIAdBFEYEQEEAIQdBACEKQaiQyAApAwAiF6ciBEH/AXFBBEYNNyAGQS9qIARBGHY6AAAgBiAEOgAsIAZBJDoAKCAGIARBCHY7AC0gBiAXQiCIpyIINgIwDDYLIAQoABQiCkEYdCAKQYD+A3FBCHRyIApBCHZBgP4DcSAKQRh2cnIhCyAHQRhGBEBBACEHQQAhCkGokMgAKQMAIhenIgRB/wFxQQRGDTcgBkEvaiAEQRh2OgAAIAYgBDoALCAGQSQ6ACggBiAEQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEKAAYIgpBGHQgCkGA/gNxQQh0ciAKQQh2QYD+A3EgCkEYdnJyIQogB0EcRwRAIAQoABwhBww3C0EAIQdBqJDIACkDACIXpyIEQf8BcUEERg02IAZBL2ogBEEYdjoAACAGIAQ6ACwgBkEkOgAoIAYgBEEIdjsALSAGIBdCIIinIgg2AjAMNQsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxBCwJAAkACQAJAAkACQCABLQCMA0UEQCABKALoAiIHDQJBACEDQaiQyAApAwAiF6ciAkH/AXFBBEcNAUEBIQJBACEIDAMLIAZB45KNggU2ACkMRQsgBkEyaiAXQjCIPQEAIAYgAjoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLQQEhAiABKALkAiIELQAAIQggB0EBRgRAQQAhA0GokMgAKQMAIhenIgRB/wFxQQRGDQEgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDDkLIAQtAAEhAyAHQQJGBEBBqJDIACkDACIXpyICQf8BcUEERgRAQQEhAgwCCyAGQTJqIBdCMIg9AQAgBiACOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMOQsgBC0AAiECIAdBA0cNASACRSECQaiQyAApAwAhFwsgF6ciB0H/AXFBBEYNASAGQTJqIBdCMIg9AQAgBiAHOgAsIAZBJDoAKCAGIBdCEIg+AS4gBiAXQgiIPAAtIBdCIIinIQgMNwsCQAJAAkAgBC0AAyIJDgICAQALIAZCgSo3AiwgBkEkOgAoQQAhCAw4C0EBIQkLIAINNSAHQQRGDQEgBkKBKjcCLCAGQSQ6AChBACEIDDYLQQAhCSACRQ00CyABIAkgA0H/AXFBEHRyIAhB/wFxQQh0cjYCkAIMPQsCQAJ/IAEoAugCIgRBA00EQEEAIQlBAEGokMgAKQMAIhenIgJB/wFxQQRGDQEaIAZBL2ogAkEYdjoAACAGIAI6ACwgBkEkOgAoIAYgAkEIdjsALSAGIBdCIIinIgg2AjAMNgsgASgC5AIiAygAACICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciEJIARBfHFBBEYEQEEAQaiQyAApAwAiF6ciAkH/AXFBBEYNARogBkEvaiACQRh2OgAAIAYgAjoALCAGQSQ6ACggBiACQQh2OwAtIAYgF0IgiKciCDYCMAw2CyAEQQhHDQEgAygABAshByABIAk2ApwBIAFBATYCmAEgASAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZycjYCoAEMPQsgBkKBKjcCLCAGQSQ6AChBACEIDDMLIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMPwsCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AjANFBEAgASgC5AIhAiABKALoAiIHQQFLDQJBACEJQaiQyAApAwAiF6ciA0H/AXFBBEcNAUEAIQMMAwsgBkHtiI2yBTYAKQxMCyAGIAM6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDEALIAIvAAAiA0EIdCADQQh2ciEJIAdBAmsiA0EBSw0BQaiQyAApAwAhF0ECIQcLIBenIgRB/wFxQQRGBEAgAiAHaiADaiEHQQAhCEEAIQMMAgsgBiAEOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw+CyACLwACIgNBCHQgA0EIdnIhCCAHQQRrIgNBAUsNASACQQRqIQdBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgB2ohB0EAIQxBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMPAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQEgAkEGaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEDDAILIAYgAjoALCAGQSQ6ACggBiAXQhCIPQEuIAYgF0IIiDwALSAGIBdCIIinIgg2AjAMOgsgAi8ABiIDQQh0IANBCHZyIQsgB0EIayIDQQFLDQEgAkEIaiEHQaiQyAApAwAhFwsgF6ciAkH/AXFBBEYEQCADIAdqIQdBACEKQQAhAwwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDgLIAIvAAgiA0EIdCADQQh2ciEKIAdBCmsiA0EBSw0BIAJBCmohB0GokMgAKQMAIRcLIBenIgJB/wFxQQRGBEAgAyAHaiEDQQAhBEEAIQ8MAgsgBiACOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAw2CyACLwAKIgNBCHQgA0EIdnIhBCACQQxqIQMgB0EMayIPQQFLDQFBqJDIACkDACEXCyAXpyICQf8BcUEERgRAIAMgD2ohD0EAIQNBAAwCCyAGIAI6ACwgBkEkOgAoIAYgF0IQiD0BLiAGIBdCCIg8AC0gBiAXQiCIpyIINgIwDDQLIAMvAAAiA0EIdCADQQh2ciEOIAdBfnFBDkcEQCAHQRBrIQMgAkEQaiEPIAIvAA4MAQtBACEDQaiQyAApAwAiF6ciD0H/AXFBBEcNJSACIAdqIQ9BAAshBwJAIAECfyADQQNNBEBBACECQQBBqJDIACkDACIXpyIDQf8BcUEERg0BGiAGQS9qIANBGHY6AAAgBiADOgAsIAZBJDoAKCAGIANBCHY7AC0gBiAXQiCIpyIINgIwDDULIA8oAAAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIhAiADQXxxQQRGBEBBAEGokMgAKQMAIhenIgNB/wFxQQRGDQEaIAZBL2ogA0EYdjoAACAGIAM6ACwgBkEkOgAoIAYgA0EIdjsALSAGIBdCIIinIgg2AjAMNQsgA0EIRw0BIA8oAAQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnILIgM2ApQBIAEgAjYCkAEgASAEQf//A3FBAXQ2AowBIAEgCkH//wNxQQF0NgKIASABIAtB//8DcUEBdDYChAEgASAMQf//A3FBAXQ2AoABIAEgDv0QIAdBCHQgB0GA/gNxQQh2cv0aASAJ/RoCIAj9GgP9qQFBAf2rAf0LA3AgAUEBNgJsDDwLIAZCgSo3AiwgBkEkOgAoQQAhCAwyCwJAAkACQCABLQCMA0UEQEECIQIgAS0AxgJBAWsOBgcCAQMHAgMLIAZB4padogQ2ACkMPwsgASgC4AFBgYCAgHhHBEBBASECDAILIAZCgSo3AiwgBkEkOgAoQQAhCAwzC0EGIQILIAEoAugCIgdBAEgNTQJAIAcEQCABKALkAiEDIAcQcSIERQ0FIAcEQCAEIAMgB/wKAAALIAIgB0cNASABIAI2AvQBIAEgBDYC8AEgASACNgLsAQw8CyAGQeKWnaIENgApQSEhAiAGQSE6ACgMPwsgBkHilp2iBDYAKUEhIQIgBkEhOgAoIAQgB0EBEKIHDD4LIAEoAugCIgdBAEgNTCABKALkAiEEAkAgB0UEQEEBIQIMAQsgBxBxIgJFDQMLIAcEQCACIAQgB/wKAAALIAEgBzYCjAIgASACNgKIAiABIAc2AoQCDDkLIAdB0ABHIAJB/wFxQcMAR3INRSABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0mIAEoAugCIgxBAWshDyAMQQJrIQsgASgC5AIiCiAMaiEEQQAhByAMIQMDQCAHIAxGDS0gByAKaiIJQQFqIQggCS0AAEUEQCAHRQ07IANBAWshByAIIQQgAwwsCyAHIA9GDS0gByAKaiECIAgtAABFDSogByALRg0tIAJBAmotAABFDSkgA0EDayEDIAdBA2oiB0HRAEcNAAsMOQsgBkHpho2CBTYAKUEJIQIgBkEJOgAoDDwLIAEoAogDIgMgASgC6AIiAkkEQEEnIQIgBkEnOgAoDDwLIAEgAyACazYCiANBngQhAwJAAkAgAkUNACABKALkAiEEQQAhBwNAIAQgB2otAAAEQCACIAdBAWoiB0cNAQwCCwtBngIhAyAHQdAAa0Gwf0sNAQsgBiADNgIoQR4hAgw8CyAHQQFqIgMgAkYEQCAGQQA2AiwgBkGeCjsBKEEeIQIMPAsgASgCCEECRiIMDQEgAiAHa0ECayEIIAMgBGoiAi0AAA0CQQAgAUEIaiAMGyEJIAJBAWohD0EAIQwgBkEANgJIIAZCgICAgBA3AkAgBkFAa0EAIAcQ7wUgBigCSCECA0BBAUECIAQgDGosAAAiA0EATiILGyIKIAYoAkAgAmtLBH8gBkFAayACIAoQ7wUgBigCSAUgAgsgBigCRGoiDiALBH8gAwUgDiADQb8BcToAASADQcABcUEGdkFAcgs6AAAgBiACIApqIgI2AkggByAMQQFqIgxHDQALIAhBAEgNSiAIRQRAQQEhAgwmCyAIEHEiAg0lCwALQaCUxQAQ3QkACyAGIAg2AjAgBkGeCjsBKEEeIQIMOAsgCSAIQQEQogcMNwsgBkEyaiAXQjCIPQEAIAYgBDoALCAGQSQ6ACggBiAXQhCIPgEuIAYgF0IIiDwALSAXQiCIpyEIDCkLIAFCADcDgAMgAUECOgD4AiAAQQQ6AAggACAFNgIEIABBADYCACAAIAEoAtgCNgAJDEELIAFCADcDgAMgAUECOgD4AiAAIBE2AAkgAEEDOgAIIAAgBTYCBCAAQQA2AgAMQAsgASABKALcAkEEazYC3AIgASgCAEUEQCAAQQE2AgAgAEECOgAEDEALIAEoAgRBAWoiAiADRwRAIAAgAjYCDCAAIAM2AgggAEEKOgAEIABBATYCAAxACyABIAM2AgQgAUEBNgIAIAEtAJEDRQRAIAEgASkDyAJCBHw3A8gCIAEgByAJIAogDyABKALQAkF/cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2cyICc0H/AXFBAnQoApiNQyACQQh2c0F/czYC0AILIAFB5siFogU2APkCIAFBBzoA+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMPwsgBiACOgApQRgMNQsgBiACOgApQRkMNAtBwJPFABDdCQALIAYgAjoAKUEVIQIgBkEVOgAoDC8LQdCTxQAQ3QkACyABIAg2AtABIAEgCTYCzAEgASAINgLIAQwpC0Hgk8UAEN0JAAsgBkHzpJ2SBDYAKQwpC0GQlMUAEN0JAAsgByAHLQABOgAAQQEhAgwjCyAGIAg2AjAgBkEGNgIsDCALIAZB9KS5mgU2AClBBgwgC0Hwk8UAEN0JAAtBsJPFABDdCQALIAZB8JDlmgc2ACkMIgtBsJLFABDdCQALIAZB54K1igQ2ACkMIAtBwJHFABDdCQALIAZB4cbR4gQ2ACkMHgtB4JHFABDdCQALIAZB45DJ6gQ2ACkMHAtB8JHFABDdCQALQYCSxQAQ3QkAC0Ggk8UAEN0JAAsgBiAPOgAsIAZBJDoAKCAGIBdCEIg9AS4gBiAXQgiIPAAtIAYgF0IgiKciCDYCMAwNC0HQkcUAEN0JAAtBkJLFABDdCQALIAZB6YaNggU2ACkMFQtB1JXFABDdCQALIAgEQCACIA8gCPwKAAALIAhBCHYhAyAGKQJEIRcgBigCQCEPIAkoArABIgogCSgCqAFGBEAjAEEgayIEJAACQCAJQagBaiIHKAIAIgxBksmkEksEf0EABUEEIAxBAXQiCyALQQRNGyILQRxsIQ4gBCAMBH8gBCAMQRxsNgIcIAQgBygCBDYCFEEEBUEACzYCGCAEQQhqQQQgDiAEQRRqEIUHIAQoAghBAUcNASAEKAIQIQcgBCgCDAsgB0GwlMUAEJMJAAsgBCgCDCEMIAcgCzYCACAHIAw2AgQgBEEgaiQACyABKAK0ASAJIApBAWo2ArABIApBHGxqIgcgFzcCFCAHIA82ARAgByAINgEMIAcgAjYBCCAHIAhBEHY7AQYgByADOgAFIAcgCDoABCAHQQA2AgAMEQsgA0EDayEHIAJBAmohCSACQQNqIQQgA0ECawwBCyADQQJrIQcgAkEBaiEJIAJBAmohBCADQQFrCyAHRQRAQQAhB0GokMgAKQMAIhenIgJB/wFxQQRGDQQMAwsgBC0AAA0OQQJrIQcgCUECaiEEDAMLIAdB9ABHIAJB/wFxQdgAR3INGiABKAKIAyIEIAEoAugCIghJDQ4gASgC5AIhAiABIAQgCGs2AogDQZ4EIQwCQAJAIAhFDQAgAiAIaiEJQQAhB0EAIAhrIQMDQCACIAdqIg8tAAAEQCADIAdBAWoiB2oNAQwCCwtBngIhDCAHQdAAa0Gwf0sNAQsgBiAMNgIoQR4hBwwTCyAHQQFqIgMgCEYEQCAGQQA2AiwgBkGeDjsBKEEeIQcMEwsgCCADayIOQQFNBEAgBkEANgIsIAZBngo7AShBHiEHDBMLAkAgCSACIANqIhBBAmoiBEcEQCAQLQAAIQwgEC0AASEKIAcgCGshC0EAIQMDQCADIA9qQQNqLQAARQ0CIAMgC2ogA0EBaiEDQXxHDQALCyAGQZ4EOwEoQR4hBwwTCwJAAkACQAJAIANBAmoiDyAOSyADQX1LckUEQCADQQNqIgsgDksNAQJAIAkgCyAQaiIPRwRAIAMgB2ohCSAIQQRrIQ1BACEIA0AgAiAJakEEai0AAEUNAiAIQQFqIQggDSAJQQFqIglHDQALCyAGQZ4EOwEoQR4hBwwYCyAIIAtqIgkgCEkgCSAOS3INAiAJQQFqIRIgCSAOTw0DIAEoAghBAkYNBCAGQUBrIQ0gAiEJIAwhCyAQIBJqIRMgDiASayECIwBBIGsiDiQAAkAgB0HQAGtBsH9NBEAgDUECNgIAIA1BAToABAwBCyAOQQA2AhwgDkKAgICAEDcCFCAOQRRqQQAgBxDvBSAOKAIcIQwDQEEBQQIgCSwAACIQQQBOIhQbIhIgDigCFCAMa0sEfyAOQRRqIAwgEhDvBSAOKAIcBSAMCyAOKAIYIhVqIhYgFAR/IBAFIBYgEEG/AXE6AAEgEEHAAXFBBnZBQHILOgAAIA4gDCASaiIMNgIcIAlBAWohCSAHQQFrIgcNAAsgDigCFCEQQQAhBwJAAkACQAJAAkACQAJAAkACQAJAAkAgC0H/AXEOAgEABAsgCkH/AXENAUEBIQcLAkAgA0EETwRAIAQoAABBgIGChHhxDQlBBCAEQQNqQXxxIgkgBGsgBCAJRhsiCSADQQRrIgpJBEADQCAEIAlqKAIAQYCBgoR4cQ0LIAlBBGoiCSAKSQ0ACwsgBCAKaigAAEGAgYKEeHFFDQEMCQsgA0UNACAEIANBAWsiCWosAABBAEgNCCAJRQ0AIAQgA0ECayIJaiwAAEEASA0IIAlFDQAgBCADQQNrIglqLAAAQQBIIAlyDQgLIA5BFGogBCADEPsCIA4oAhRBAUcNASAOIA4pAhg3AwhB3IzFAEELIA5BCGpBzIzFAEHojMUAEOAGAAsgDUECNgIAIA1BBToABAwHCyAOKAIcIgpBAEgNASAOKAIYIQQCQCAKRQRAQQEhCwwBCyAKEHEiC0UNAwsgCgRAIAsgBCAK/AoAAAsgDkEUaiAPIAgQ+wIgDigCFEEBRgRAIA1BAjYCACANQQA6AAQMBQsgDigCHCIPQQBIDS0gDigCGCEEAkAgD0UEQEEBIRIMAQsgDxBxIhJFDQMLIA8EQCASIAQgD/wKAAALAn8CQCAHRQRAIAJBAEgNMAJAIAJFBEBBASEJDAELIAIQcSIJRQ0GCyACBEAgCSATIAL8CgAACyAOIAI2AhAgDiAJNgIMIA4gAjYCCCAOQRRqIAkgAhD7AiAOKAIURQ0BQQAhCSACRQ0GIA4pAgynIAJBARCiBwwGCyACQQBIDS8CQCACRQRAQQEhCQwBCyACEHEiCUUNBQsgAgRAIAkgEyAC/AoAAAsgCUEIdiETIAIhBEEADAELIA4pAwgiF0IgiKchCSAXpyIEQYCAgIB4Rg0EIBdCKIinIRNBAQshFCANIBM7AAkgDSAHOgA0IA0gDzYCMCANIBI2AiwgDSAPNgIoIA0gCjYCJCANIAs2AiAgDSAKNgIcIA0gDDYCGCANIBU2AhQgDSAQNgIQIA0gAjYCDCANIAk6AAggDSAENgIEIA0gFDYCACANQQtqIBNBEHY6AAAMBwsgDUECNgIAIA1BBjoABAwFC0HYmsgAEP8HCwALIA1BAjYCACANIAk6AAQgD0UNACASIA9BARCiBwsgCkUNASALIApBARCiBwwBCyANQQI2AgAgDUEAOgAECyAQRQ0AAkAgFUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgEGpPBEAgAkEAIAQgEEEnaksbDQEgFRCiAgwCCwwlCwwlCyAOQSBqJAAgBi0ARCEEIAYoAkAiCUECRg0NIAZBiAFqIgggBkHkAGr9AAIA/QsDACAGQZgBaiIKIAZB9ABqKAIANgIAIAYgBikBRjcDoAEgBiAG/QACVP0LA3ggBiAGQcwAaikBADcBpgEgBi0ARSEPIAEoAsQBIgMgASgCvAFGBEAjAEEgayICJAACQCABQbwBaiIHKAIAIgxByaSSCUsEf0EABUEEIAxBAXQiCyALQQRNGyILQThsIQ4gAiAMBH8gAiAMQThsNgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgDiACQRRqEIUHIAIoAghBAUcNASACKAIQIQcgAigCDAsgB0HQksUAEJMJAAsgAigCDCEMIAcgCzYCACAHIAw2AgQgAkEgaiQACyABKALAASADQThsaiICQSRqIAj9AAMA/QsCACACIA86AAUgAiAEOgAEIAIgCTYCACACIAYpA6ABNwEGIAIgBv0AA3j9CwIUIAJBDGogBikBpgE3AQAgAkE0aiAKKAIANgIAIAEgA0EBajYCxAEMDAtBAiAPIA5BkJPFABDqBwALIAsgDiAOQYCTxQAQ6gcACyALIAkgDkHwksUAEOoHAAsgEiAOIA5B4JLFABDqBwALQcCSxQAQ3QkAC0EAIQdBqJDIACkDACIXpyICQf8BcUEERw0AIAwNAQwMCyACQf8BcUEDRw0LIBdCIIinIgcoAgAhAiAHQQRqKAIAIgQoAgAiAwRAIAIgAxEDAAsgBCgCBCIDBEAgAiADIAQoAggQogcLIAdBDEEEEKIHDAsLIAZBQGsgBCAHIAEoAogDIgIQ3wEgBigCRCEHAkACQCAGKAJAQQFGBEAgB0GAgICAeHJBgICAgHhGDQ0gBigCSCEJDAELIAYoAkghCSACIAYoAkwiA08NASAHRQ0MCyAJIAdBARCiBwwLCyABIAIgA2s2AogDIAEoAvgBIgJBgoCAgHhIIAJFckUEQCABKAL8ASACQQEQogcLIAEgAzYCgAIgASAJNgL8ASABIAc2AvgBDAoLIAZCgSo3AiwgBkEkOgAoQQAhCAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQlBJCECIAYoAiQhBwJ/AkACQAJAIAYtAENBAWsOAwABAhULIAZBxABqDAILIAhBCGoMAQsgCEEIagstAABBJUcNEUEhIQIgBi0AQ0EDTwRAIAgoAgAhAyAIQQRqKAIAIgQoAgAiDARAIAMgDBEDAAsgBCgCBCIMBEAgAyAMIAQoAggQogcLIAhBDEEEEKIHCwwSCyABIAo2AiwgASALNgIoIAEgDDYCJCABIAg2AiAgASADNgIcIAEgCTYCGCABIAI2AhQgAUEBNgIQIAEgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnI2AjAMBwsgB0UNBiACQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciICIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyIgdyQQBIDQYgASACNgI8IAEgBzYCOCABQQE2AjQMBgtBKCEHIAZBKDoAKAwKCyAGIAQ6AClBHiEHIAZBHjoAKAwJC0ELCyICOgAoIAhFBEBBACEIDAcLIAcgCEEBEKIHDAYLIAEgAjYC3AELIAEgBzYC2AEgASAINgLUAQsgBkEoakEBciEJQSghAgwLC0EnIQcgBkEnOgAoDAMLQQUhAiAGQQU6ACgMAQtBByECIAZBBzoAKAsgBiAGKAApNgJAIAYgBkEsaigAADYAQyAGQShqQQFyIQkMBAsgBiAGKAApNgJ4IAYgBkEsaigAADYAe0EoIQIgBkEoakEBciEJIAdBKEYNBiAGKAIwIQggByECDAILIAYgDDoAKiAGIAM6AClBDwsiAjoAKCAGIAYoACk2AnggBiAGQSxqKAAANgB7IAZBKGpBAXIhCQsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBkE2aiAGQcYAai0AADoAACAGIAYvAUQ7ATQgBigCQCEHCyAHQRh2IQMMAQsgBkEoakEBciEJQSghAgsgBiADOgAsIAkgBi8BNDsABEECIQMgCUEGaiAGQTZqLQAAOgAAIAYgBzsAKSAGIAdBEHY6ACsgBiAINgIwIAYgAjoAKAJAIAJBKEcEQAJAIAJBI0sNACAGKAIkIgdB5sbR4gRGDQBBAyEDIAdBIHENAgsgBkEaaiICIAYtACs6AAAgBkESaiAGQTNqLQAAOgAAIAYgBi8AKTsBGCAGIAYvADE7ARAgBi0ALCEDIAYoAC0hByAGLQAoIgRBKEYNASAAIAYvARg7AAUgAEEHaiACLQAAOgAAIAYgBigBEDYCCCAGIAZBE2ooAAA2AAsgAEEQaiAGKAALNgAAIAAgBigCCDYADSAAIAc2AAkgACADOgAIIAAgBDoABCAAQQE2AgAMBQsgBigCJCEHCyAGIAYoARA2AgggBiAGQRNqKAAANgALIAYgBigCCDYCHCAGIAYoAAs2AB8gEUHJirmiBEcEQCABQgA3A4ADIAFBAjoA+AILIAAgBzYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAQQA2AgAgAEEQaiAGKAAfNgAADAMLIAZBAjYCRCAGQaSVxQA2AkAgBkIBNwJMIAYgBkEkaq1CgICAgJANhDcDeCAGIAZB+ABqNgJIIAZBQGtBtJXFABCNCAALIAFBADsAjQMgASADNgLYAiAAQQY6AAggAEIANwIADAELIAEgAzYC2AIgAS0AkQNFBEAgAUIENwPIAiABIAcgCSAKIA9B/wFzQQJ0KAKYjUNB////B3MiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnMiAnNB/wFxQQJ0KAKYjUMgAkEIdnNBf3M2AtACCyABQQA2AugCIAEgCzYC3AICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HJAEcEQCAPQeYARwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgD0HQAGsOKwEAAAAAAAAAAAAAAAAAAAAABgkHAAoABQALAAAACAAABAAAAgMAAAAAAAwACyAPQSBxDRhBIiECDCgLQSIhAiAHQcUARyAKQcwAR3IgCUHUAEdyDSdBAyEMQYAGIQIMIgtBBiEIQQEhAiAKQcIAayIERQ0KIARBEEYNCwwkC0EGIQhBASECIApBxQBrIgRFDQwgBEENRg0LDCMLQQYhCEEBIQIgB0HzAEcgCkHIAEdyIAlB2QBHcg0iQQkhAkEJIQwMHwtBBiEIQQEhAiAHQcEARyAKQcEAR3IgCUHNAEdyDSEMHQtBBiEIQQEhAiAHQcwARyAKQeMAR3IgCUHUAEdyDSAMGwtBBiEIQQEhAiAKQcgAaw4FCQofHwsfC0EGIQhBASECIAdB1gBHIApBxABHciAJQcMAR3INHkEYIQJBGCEMDBsLQQYhCEEBIQwgB0HEAEcgCkHLAEdyIAlBxwBHcg0QQQYhAgwaC0EGIQhBASECIAdB5gBHIApB2ABHciAJQckAR3INHEH/////ByECDBoLQQYhCEEBIQIgCkHDAGsiBEUNCCAEQRFGDQkMGwtBBiEIQQEhAiAHQfQARyAKQdQAR3IgCUHYAEdyDRogAS0AkgNBAXENGkH/////ByECDBgLQQEhDCAHQdQARyAJQckAR3INDEEEIQIMFgsgB0HCAEcNGEEBIQwgCUHHAEYNFQwYC0EBIQwgB0HTAEcgCUHOAEdyDQpBgAIhAgwUCyAHQfQARyAJQdgAR3INFiABLQCSA0EBcQ0WQf////8HIQIMFAsgB0HNAEcgCUHSAEdyDRVBICECQSAhDAwSCyAHQdAARw0UIAlBwwBGDRAMFAsgB0HJAEcNEyAJQcwARg0ODBMLIAdB0ABHIAlBwwBHcg0SIAEtAJMDQQFxDRJB/////wchAgwQCyAHQfQARyAJQdgAR3INESABLQCSA0EBcQ0RQf////8HIQIMDwsgCkHkAEcgCUHBAEdyRSAHQdQARnENAUEBIQJBBiEIIApB4wBrDgIGBRALIApBxABHIAlBwQBHckUgB0HUAEZxDQNBIiECIApBxABrDgUGCBERCRELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAwSCyALQQNLBEBBBSEIQQAhAgwPCyAAQQE2AgAgAEEfOgAEDBELQQYhCAtBASECDAwLIAEtAI0DRQRAIABByYiFogU2AAUgAEEgOgAEIABBATYCAAwPCyABQQE6AIwDQQchCEEAIQIMCwsgB0HUAEcNCiAJQcEARg0CDAoLIAdBzABHIAlB1ABHcg0JQRohAkEaIQwMBgsgB0HUAEcgCUHBAEdyDQoLQaT4xgBBKEHElcUAEOsHAAsgB0HEAEcgCUHOAEdyDQhBACECDAQLIAdB0gBHIAlBxABHcg0HQQ0hAkENIQwMAgtBCCECQQghDAwBC0EEIQJBBCEMCyALIAxJDQELIAIgC0kNAEEGIQhBACECDAELQQYhCEECIQICQAJAAkACQAJAIA9ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAKQcUAaw4EAwQEAgQLIAdBxQBHIApBzABHciAJQdQAR3INAwwECyAHQcwARyAKQeMAR3INAiAJQdQARg0DDAILIAdB0gBHDQEgCUHEAEYNAgwBCyAHQcQARw0AIAlBzgBGDQELIAFCADcDgAMgASADNgD5AiABIAg6APgCIAEgAjoA7AIgACADNgIQIAAgCzYCDCAAQQE6AAggACAFNgIEIABBADYCAAwCC0EhIQILIAAgAzYABSAAIAI6AAQgAEEBNgIACyAGQbABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQdiayAAQ/wcAC4J7AyJ/B30BfiMAQcABayIEJAACQAJAAkACQAJAIAEoAgBBAkcEQCABKAKkAiICIAEoAmRJBEAgAUH0A2ohFiABQbwCaiETIAFB8ABqIRwgAUGwA2ohHSABQYADaiEeIAFBjANqIR8gAUGYA2ohICABQaQDaiEhA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCYCACQShsaiINKQMQIAEpA4ABfCIrIAEpA3BRBEAgASgCuAIiAyANKAIYIgJBB2pBeHFJDQEgAiADSw0CIAEoArQCIQMgDS0AICIbQQFGBEAgBEEYaiADIAIQ+QIgBCgCGCIDQYCAgIB4RwRAIAQoAhwgBEEANgK4ASAEQQE2AqwBIARBuMnBADYCqAEgBEIENwKwASAEQagBahCSByEZIANFDR4gA0EBEKIHDB4LIAQoAiAhGSAEKAIcIhpBgICAgHhGDR0gBCgCJCECIBkhAwtBCSEFAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBAWsODQECAxofHR4bHB8dHgQACyANLQAhDgQEBQYHCQsgDS0AIQ4FCwoJCQwJCyANLQAhIgUOBg4NEBAPDxALIA0tACEOChIRERERERERFBMRCyANLQAhQQtrDgIcHRsLIARBGGogAyACQQMgASgCrAIQ+AQMAwsgBEEYaiADIAJBAyABKAKsAhDmAwwCCyAEQRhqIAMgAiABKAKsAhCgAgwBCyAEQRhqIAMgAiABKAKsAhD+AQsgEyABKAKoAiABKAKsAiAEKAIcIgMgBCgCIBDCBSAEKAIYIgJFDTIgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbakkNOCAIQQAgBSACQSdqSxsNOSADEKICDDILIARBATYCrAEgBEHgycEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQShqIgEgBEGoAWoQsQYgARCOByEBDDALIARBATYCrAEgBEG8ysEANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDWCAEIARB2ABqNgKwASAEQTRqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEBIAEoAqwCEOYDDC0LIARBGGogAyACQQEgASgCrAIQ+AQMLAsgDSgCAEUEQCAEQQA2ArgBIARBATYCrAEgBEGYysEANgKoASAEQgQ3ArABIARBqAFqEJIHDAELIA0oAggNKiAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHCyEBDCsLIARBGGogAyACQQMgASgCrAIQ5gMMJwsgBEEYaiADIAJBAyABKAKsAhD4BAwmCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgcMAgsgDSgCCEUEQCAEQQA2ArgBIARBATYCrAEgBEH8ycEANgKoASAEQgQ3ArABIARBqAFqEJIHDAILIA0qAgQhJCABKAKsAiEIIA0qAgwhJyAFQQRGDSQgBEEYaiADIAJBAyAIICQgJxD/AwwlCyAEQQE2AqwBIARB4MrBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEFAayIBIARBqAFqELEGIAEQjgcLIQEMJgsgBEEBNgKsASAEQYjLwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARBzABqIgEgBEGoAWoQsQYgARCOBwwDCyAEQRhqIAMgAkEDIAEoAqwCEPgEDB8LIARBGGogAyACIAEoAqwCEP0BDB4LIA0oAgBFBEAgBEEANgK4ASAEQQE2AqwBIARBmMrBADYCqAEgBEIENwKwASAEQagBahCSBwwBCyANKAIIDRwgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSBwshAQwhCwJAAkACQAJAIA0tACEiCEEKRwRAIAgOAgIDAQsgBEHYAGogAyACIAEoAqwCEMUDDB0LIARBATYCrAEgBEHEy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDcCAEIARB8ABqNgKwASAEQeQAaiIBIARBqAFqELEGIAEQjgchAQwjCyAEQRhqIAMgAkEDIAEoAqwCEPgEDAELIARBGGogAyACQQMgASgCrAIQ5gMLIAEoAqwCIgdBAnQiAkH/////A0sNDCAHQQR0IgNB/f///wdPDQwCQCADRQRAQQQhC0EAIQIMAQsgAxBxIgtFDQ4gASgCrAIhBwsgBEEANgKwASAEIAs2AqwBIAQgAjYCqAEgBwRAQQAhA0EBIQYgBCgCICEIIAQoAhwhAgNAIAZBAWsiDCIFIAhPBEAgDCEGDBsLIAggBWsiBUEAIAUgCE0bIgVBAUYNGiAFQQJGDRlDAACAPyACKgIAIiQgJJSTIAJBBGoqAgAiJyAnlJMgAkEIaioCACIoICiUk0MAAAAAEOAIkSElIAQoAqgBIANrQQNNBEAgBEGoAWogA0EEQQRBBBCkBSAEKAKsASELIAQoArABIQMLIAsgA0ECdGoiBSAlOAIMIAUgKDgCCCAFICc4AgQgBSAkOAIAIAQgA0EEaiIDNgKwASAGQQNqIQYgAkEMaiECIAdBAWsiBw0ACwsgBEHgAGogBEGwAWooAgA2AgAgBCAEKQKoATcDWCAEKAIYIgNFDRkgBCgCHCICQQRrKAIAIghBeHEiBSADQQJ0IgNBBEEIIAhBA3EiCBtqSQ0nIAhBACAFIANBJ2pLGw0oIAIQogIMGQsgDS0AIUELRg0VIARBATYCrAEgBEHwy8EANgKoASAEQgE3ArQBIAQgDUEhaq1CgICAgJAFhDcDGCAEIARBGGo2ArABIARBkAFqIgEgBEGoAWoQsQYgARCOByEBDB8LIA0tACFBDEYNEyAEQQE2AqwBIARBnMzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3AxggBCAEQRhqNgKwASAEQZwBaiIBIARBqAFqELEGIAEQjgchAQweC0EPIQUMAQtBFSEFCwJAAkACQAJAAkAgDS0AISIIDggBAAMDAgIEBAMLIARBGGogAyACIAUgASgCrAIQ5gMMEwsgBEEYaiADIAIgBSABKAKsAhD4BAwSCyANKAIARQRAIARBADYCuAEgBEEBNgKsASAEQZjKwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKAIIRQRAIARBADYCuAEgBEEBNgKsASAEQfzJwQA2AqgBIARCBDcCsAEgBEGoAWoQkgchAQweCyANKgIEISQgASgCrAIhByANKgIMIScgCEEERg0QIARBGGogAyACIAUgByAkICcQ/wMMEQsgBEEBNgKsASAEQdDMwQA2AqgBIARCATcCtAEgBCANQSFqrUKAgICAkAWENwNYIAQgBEHYAGo2ArABIARB+ABqIgEgBEGoAWoQsQYgARCOByEBDBwLIA0oAghFBEAgBEEANgK4ASAEQQE2AqwBIARB/MnBADYCqAEgBEIENwKwASAEQagBahCSByEBDBwLIAEoAqwCIQcgDSoCDCEkIAhBBkYNDSAEQRhqIAMgAiAFIAcgJBCQBAwPCyAEQQE2AqwBIARB+MzBADYCqAEgBEIBNwK0ASAEIA1BIWqtQoCAgICQBYQ3A1ggBCAEQdgAajYCsAEgBEGEAWoiASAEQagBahCxBiABEI4HIQEMGgsgBEEYaiADIAIgASgCrAIQjgUMAQsgBEEYaiADIAIgASgCrAIQ0wQLIAQoAhwhECABKALoA0UNByABKAKsAiEOIAEoAqgCIRQgBCgCICEPIBMQowUgFkEIakEAOgAAIBZCADcCACATIA4Q0AQgEygCAEEBRw0HIA5BAnQiCSABKAK4AyIDSw0FIAEoArQDIQogDkUNBkEAIQcgCiEFQQAhAgJAAkACQANAAkAgByAPSQRAIAIgEGooAgBBAnQiAyABKAKIAyIGTw0OIAIgCU8NBSAFIAEoAoQDIANBAnRqKAIANgIAIANBAXIiCCABKAKIAyIGSQ0BIAghAwwOCyAPIA9BiLnBABCMBwALIAJBAWogCU8NAiAFQQRqIAEoAoQDIAhBAnRqKAIANgIAIANBAnIiCCABKAKIAyIGTwRAIAghAwwNCyACQQJqIAlPDQEgBUEIaiABKAKEAyAIQQJ0aigCADYCACADQQNyIgMgASgCiAMiBk8NDCAJIAJBA2pLBEAgBUEMaiABKAKEAyADQQJ0aigCADYCACAFQRBqIQUgAkEEaiECIAdBAWoiByAOSQ0BDAsLCyACQQNqIQIMAgsgAkECaiECDAELIAJBAWohAgsgAiAJQai5wQAQjAcACyAEICs3A1ggBEECNgKsASAEQbTNwQA2AqgBIARCAjcCtAEgBEKAgICAoAUiKyAEQdgAaq2ENwMgIAQgKyAcrYQ3AxggBCAEQRhqNgKwASAEQQxqIgEgBEGoAWoQsQYgARCOByEBIABBAToAACAAIAE2AgQMHAsgAEEAOwEADBsLQQAgAiADQYDNwQAQ6gcAC0GQy8EAEP8HCwALQQAgCSADQbi5wQAQ6gcACwJAAkACQAJAAkAgASgC6ANBAUYEQCAEIAEoAsACIBRBAnQgDiAUakECdBDhCCICELgKIgM2AnAgBCAJNgJYIAMgCUcNHyACIAogCRDgCSACQYMISw0DDAYLIAEoAsQCQQFHDQUgCSABKALEAyIDSw0AIAEoAsADIQwgDkUNASAKQQxqIQtBACEHIAwhA0EAIQUDQAJAAkACQCAHIA9JBEAgBSAQaigCAEECdCICIAEoApQDIghPDQEgBUEDaiIIIAlPDQIgCyACQQJ0IgggASgCkANqKAIANgIAIAIgASgClAMiBk8NCSADIAEoApADIAhqKAIANgIAIAJBAXIiCCABKAKUAyIGSQ0DIAghAgwJCyAPIA9BuLjBABCMBwALIAIgCEHIuMEAEIwHAAsgCCAJQdi4wQAQjAcACyADQQRqIAEoApADIAhBAnRqKAIANgIAIAJBAnIiCCABKAKUAyIGTwRAIAghAgwGCyADQQhqIAEoApADIAhBAnRqKAIANgIAIAJBA3IiAiABKAKUAyIGTw0FIANBDGogASgCkAMgAkECdGooAgA2AgAgC0EQaiELIANBEGohAyAFQQRqIQUgB0EBaiIHIA5JDQALDAELQQAgCSADQfi4wQAQ6gcACyAEIAEoAsACIBRBAnQiFSAOIBRqQQJ0IhQQ4QgiAxC4CiICNgJwIAQgCTYCWAJAIAIgCUYEQCADIAogCRDgCSADQYQITwRAIAMQmwcLIAQgASgCyAIgFSAUEOEIIgMQuAoiAjYCcCAEIAk2AlggAiAJRgRAIAMgDCAJEOAJIANBhAhPBEAgAxCbBwsgASgC6ANBAkYNBiABKALMAkUNBiABKALUAkUNBiAORQ0CQQAhEkEAIAlrIRdBAyEDQQAhBQJAAn8CQANAAkACQAJAAkACQAJAAkAgDyASSwRAIANBA2siCCAQaigCAEECdCICIAEoAqADIgZPDRAgCCAJTw0CIAUgCmoiESACQQJ0IiIgASgCnANqKAIANgIAIAJBAXIiCCABKAKgAyIGSQ0BIAghAgwQCyAPIA9B6LfBABCMBwALIANBAmsgCU8NAiARQQRqIAhBAnQiIyABKAKcA2ooAgA2AgAgAkECciIHIAEoAqADIgZPBEAgByECDA8LIANBAWsgCU8NASARQQhqIAdBAnQiGCABKAKcA2ooAgA2AgAgAkEDciILIAEoAqADIgZPBEAgCyECDA8LIAMgCU8NAyARQQxqIAEoApwDIAtBAnRqKAIANgIAIAIgASgCrAMiBk8NCSADIBdqIgtBA0YNBCAFIAxqIhEgASgCqAMgImooAgA2AgAgASgCrAMiBiAIIgJLDQUMCQsgA0EDayEDDAILIANBAWshAwwBCyADQQJrIQMLIAMgCUGouMEAEIwHAAsgA0EDawwDCyALQQJGDQEgEUEEaiABKAKoAyAjaigCADYCACABKAKsAyIGIAciAk0NAyALQQFHBEAgEUEIaiABKAKoAyAYaigCADYCACAFQRBqIQUgA0EEaiEDIBJBAWoiEiAOSQ0BDAcLCyADQQFrDAELIANBAmsLIAlBiLjBABCMBwALIAIgBkH4t8EAEIwHAAsMHgsMHQsgASgC0AIgFSAUEOEIIgMgCiAJELUHIANBhAhPBEAgAxCbBwsgASgC2AIgFSAUEOEIIgIgDCAJELUHIAJBgwhNDQMLIAIQmwcMAgsgAiAGQZi4wQAQjAcACyACIAZB6LjBABCMBwALIAQoAhgiA0UNEAJAIBBBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgEBCiAgwSCwwXCwwXCyADIAZBmLnBABCMBwALIARBGGogAyACIAUgByAkEIIFDAELIARBGGogAyACIAUgByAkICcQ+QQLAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIA0tACJBBWsOCAYBAgAAAwQFAAtBpPjGAEEoQaTMwQAQ6wcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEKcBDBQLIBMgASgCqAIgASgCrAIgBCgCHCIIIAQoAiAQlAEMEwsgASgCrAIiDiABKAKoAiIPaiIUQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAtwCQQFGBEAgASgC4AIQuAogCU8NEyAJELYJIgIgASgC4AIQ3AkgASgC4AIiA0GECEkNASADEJsHDAELIAlFDRIgCRC2CSECCyABIAI2AuACIAFBATYC3AIMEQsgASgCrAIiECABKAKoAiIUaiISQQJ0IQkgBCgCICEFIAQoAhwhCAJAIAEoAuQCQQFGBEAgASgC6AIQuAogCU8NESAJELYJIgIgASgC6AIQ3AkgASgC6AIiA0GECEkNASADEJsHDAELIAlFDRAgCRC2CSECCyABIAI2AugCIAFBATYC5AIMDwsgASgCrAIiDyABKAKoAiIJaiIVQQJ0IQwgBCgCICEFIAQoAhwhCCABKALsAiIHQQFHBH9BAAUgASgC8AIQuAoLIAxJBEAgDBC2CSEDIAwQtgkhAgJAIAdFBEAgA60gAq1CIIaEISsMAQsgAyABKALwAhDcCSACIAEoAvQCENwJIAEoAvACIgdBhAhPBEAgBxCbBwsgA60gAq1CIIaEISsgASgC9AIiA0GECEkNACADEJsHCyABICs3A/ACIAFBATYC7AILIBMQowUgFkEIakEAOgAAIBZCADcCACATIA8Q0AQgASgC7AJFDRAgD0ECdCIKIAEoArgDIgNNBEAgASgCxAMiAyAKTwRAIAEoArQDIRAgASgCwAMhFCAPRQ0PQQAhB0EAIAprIRFBAyEGQQohAkEBIQ4gCCEDAn8CQANAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgBSACQQprSwRAIAJBCWsgBU8NASACQQhrIAVPDQIgBkEDayIYIApJDQMgGCEGDAQLIAJBCmsMDgsgAkEJayECDAkLIAJBCGsMBQtDAAB/QyADQQRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgAyoCACIoiyIlICQgA0EIaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACISQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBBqIgtDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBB2sgBU8NCCACQQZrIAVPDQUgAkEFayAFTw0BIAogBkECa0sEQEMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBGsgBU8NCiACQQNrIAVPDQcgAkECayAFTw0DIAogBkEBa0sEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NDCACIAVPDQkgAkEBaiAFTw0FIAYgCk8NAkMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhJBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAtBDGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASASQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NHSACQQNqIAVPDRkgAkEEaiAFTw0VIAYgEWoiC0EDRw0OIAZBA2sMEQsgBkEBayEGDAELIAZBAmshBgsgBiAKQbi3wQAQjAcACyACQQVrDAILIAJBAmsMAQsgAkEBagsgBUGot8EAEIwHAAsgAkEGayECDAELIAJBA2shAgsgAiAFQZi3wQAQjAcACyACQQdrDAILIAJBBGsMAQsgAkEBawsgBUGIt8EAEIwHAAtDAAB/QyADQTRqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EwaioCACIoiyIlICQgA0E4aioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAHIBRqIhJDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAXQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBBWogBU8NDyACQQZqIAVPDQsgAkEHaiAFTw0HIAtBAkYNAUMAAH9DIANBQGsqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQTxqKgIAIiiLIiUgJCADQcQAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIXQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgF0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQhqIAVPDRAgAkEJaiAFTw0MIAJBCmogBU8NCCALQQFHBEBDAAB/QyADQcwAaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANByABqKgIAIiiLIiUgJCADQdAAaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACILQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiASQQhqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgC0EbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACAHQRBqIQcgAkEVaiECIANB1ABqIQMgBkEEaiEGIA4gD0kgDkEBaiEODQEMEwsLIAZBAWsMAQsgBkECawsgCkH4tsEAEIwHAAtBACAKIANByLfBABDqBwALQQAgCiADQdi3wQAQ6gcACyATIAEoAqgCIAEoAqwCIAQoAhwiCCAEKAIgEOYBDA8LIAJBBGoMAgsgAkEHagwBCyACQQpqCyAFQei2wQAQjAcACyACQQNqDAILIAJBBmoMAQsgAkEJagsgBUHYtsEAEIwHAAsgAkECagwCCyACQQVqDAELIAJBCGoLIAVByLbBABCMBwALIAQgASgC8AIgCUECdCIOIAwQ4QgiAxC4CiICNgJwIAQgCjYCWAJ/AkACQAJAIAIgCkYEQCADIBAgChDgCSADQYQITwRAIAMQmwcLIAQgASgC9AIgDiAMEOEIIgMQuAoiAjYCcCAEIAo2AlggAiAKRgRAIAMgFCAKEOAJIANBhAhPBEAgAxCbBwsgASgCoAMiAiAMSQRAIAwgAiIDayIHIAEoApgDIAJrSwRAICAgAiAHQQRBBBCkBSABKAKgAyEDCyABKAKcAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCISBEAgBUEAIBL8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2AqADIAEgASgCrAMiAiAMSQR/IAwgAiIDayIHIAEoAqQDIAJrSwRAICEgAiAHQQRBBBCkBSABKAKsAyEDCyABKAKoAyILIANBAnQiBmohBSAHQQJPBEAgDCACQX9zakECdCIMBEAgBUEAIAz8CwALIBVBBHQgAkECdGsgC2ogBmpBBGshBSADIAdqQQFrIQMLIAVBADYCACADQQFqBSAMCzYCrAMLIA9FDQggCUEEdCEFQQAhAkEAIAprIRVBAyEDQQEhCwJ/AkADQAJAAkACQAJAAn8CQCAKIANBA2siB0sEQCAHIA5qIhIgASgCoAMiBkkNASAJQQJ0IANqQQNrDAILIANBA2shAwwECyABKAKcAyAFaiACaiACIBBqIgcoAgA2AgAgA0ECayAKTw0BIAMgDmoiDEECayIRIAEoAqADIgZJBEAgASgCnAMgBWogAmpBBGogB0EEaigCADYCACADQQFrIApPDQMgDEEBayIXIAEoAqADIgZJBEAgASgCnAMgBWogAmpBCGogB0EIaigCADYCACADIApPDQUgASgCoAMiBiAMSwRAIAEoApwDIAVqIAJqQQxqIAdBDGooAgA2AgAgAyAVaiIMQQNGDQ8gEiABKAKsAyIHSQ0HIAlBAnQgA2pBA2sMCgsgCUECdCADagwCCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAZBuLbBABCMBwALIANBAmshAwwBCyADQQFrIQMLIAMgCkGotsEAEIwHAAsgASgCqAMgBWogAmogAiAUaiIGKAIANgIAIAxBAkYNBSARIAEoAqwDIgdPDQEgASgCqAMgBWogAmpBBGogBkEEaigCADYCACAMQQFGDQYgASgCrAMiByAXSwRAIAEoAqgDIAVqIAJqQQhqIAZBCGooAgA2AgAgAkEQaiECIANBBGohAyALIA9JIAtBAWohCw0BDAwLCyAJQQJ0IANqQQFrDAELIAlBAnQgA2pBAmsLIAdBmLbBABCMBwALDB0LDBwLIANBAmsMAgsgA0EBawwBCyADQQNrCyAKQYi2wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgEyAQENAEIAEoAtwCQQFHDQEgASgC5AJFDQECQAJ/AkACQAJAAn8CQAJAAkACfwJAAkACQAJAIBBBAnQiBiABKAK4AyIDTQRAIAYgASgCxAMiA0sNASABKAK0AyEVIAEoAsADIQwgBCABKALgAiAUQQJ0Ig8gCRDhCCIDELgKIgI2AnAgBCAGNgJYIAIgBkcNJiAVIAYgAxDhCSADQYQITwRAIAMQmwcLIBBFDQ4gFUEMaiELQQAhAkEDIQdBASEOIAwhCiAIIQMDQAJAAkACQAJAAkACQCACIAVJBEAgAkEBaiIRIAVPDQEgAkECaiIRIAVPDQIgBiAHTQ0DQwAAf0MgA0EEaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIAMqAgAiKIsiJSAkIANBCGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgC0MAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEDaiAFTw0EIAJBBGogBU8NBSACQQVqIhggBUkNBiAYDA0LIAIgBUH4tMEAEIwHAAsgESAFQYi1wQAQjAcACyARIAVBmLXBABCMBwALIAcgBkGotcEAEIwHAAsgAkEDagwQCyACQQRqDAsLQwAAf0MgA0EQaioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBDGoqAgAiKIsiJSAkIANBFGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgAkEGaiAFTw0LIAJBB2ogBU8NByACQQhqIAVPDQNDAAB/QyADQRxqKgIAIieLIiRDAACAP0MAAPhBQwAAAAAgA0EYaioCACIoiyIlICQgA0EgaioCACIpiyIqEOAIEOAIEJ4FjkMAAHBBkiIkICRDAAAAAF0bIiQgJEMAAPhBXhsQuQf8ACIRQQ9rELAGQwAAf0OVIiSVIiYgJkMAAH9DXhsQuQchJiAKQQRqQwAAf0MgJSAklSIlICVDAAB/Q14bELkH/AEgEUEbdEGAgIAIQQAgKEMAAAAAXRtyQYCAgBBBACAnQwAAAABdG3JBgICAIEEAIClDAAAAAF0bcnIgJvwBQQh0ckMAAH9DICogJJUiJCAkQwAAf0NeGxC5B/wBQRB0cjYCACACQQlqIAVPDQwgAkEKaiAFTw0IIAJBC2ogBU8NBEMAAH9DIANBKGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQSRqKgIAIiiLIiUgJCADQSxqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhFBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIApBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASARQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBDGogBU8NDSACQQ1qIAVPDQkgAkEOaiAFTw0FQwAAf0MgA0E0aioCACIniyIkQwAAgD9DAAD4QUMAAAAAIANBMGoqAgAiKIsiJSAkIANBOGoqAgAiKYsiKhDgCBDgCBCeBY5DAABwQZIiJCAkQwAAAABdGyIkICRDAAD4QV4bELkH/AAiEUEPaxCwBkMAAH9DlSIklSImICZDAAB/Q14bELkHISYgCkEMakMAAH9DICUgJJUiJSAlQwAAf0NeGxC5B/wBIBFBG3RBgICACEEAIChDAAAAAF0bckGAgIAQQQAgJ0MAAAAAXRtyQYCAgCBBACApQwAAAABdG3JyICb8AUEIdHJDAAB/QyAqICSVIiQgJEMAAH9DXhsQuQf8AUEQdHI2AgAgC0EQaiELIAdBBGohByAKQRBqIQogA0E8aiEDIAJBD2ohAiAOIBBJIA5BAWohDg0ACwwOC0EAIAYgA0H4tcEAEOoHAAtBACAGIANB6LXBABDqBwALIAJBCGoMAgsgAkELagwBCyACQQ5qCyAFQdi1wQAQjAcACyACQQdqDAILIAJBCmoMAQsgAkENagsgBUHItcEAEIwHAAsgAkEGagwCCyACQQlqDAELIAJBDGoLIAVBuLXBABCMBwALIAQgASgC4AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlgCQAJAIAIgBkYEQCADIBUgBhDgCSADQYQITwRAIAMQmwcLIAQgASgC6AIgDyAJEOEIIgMQuAoiAjYCcCAEIAY2AlggAiAGRw0aIAMgDCAGEOAJIANBhAhPBEAgAxCbBwsgASgClAMiAiAJSQRAIAkgAiIDayIHIAEoAowDIAJrSwRAIB8gAiAHQQRBBBCkBSABKAKUAyEDCyABKAKQAyIKIANBAnQiC2ohBSAHQQJPBEAgCSACQX9zakECdCIJBEAgBUEAIAn8CwALIBJBBHQgAkECdGsgCmogC2pBBGshBSADIAdqQQFrIQMLIAVBADYCACABIANBAWo2ApQDCyAQRQ0EIBVBDGohCSAUQQR0QQxyIQ5BACEDQQEhB0EAIQICQAJAAkADQCADQQNqIgUgBk8NBSADIA9qQQNqIgUgASgCiAMiCk8NBiABKAKEAyAOaiACaiACIAlqKAIANgIAIAMgFGoiCiABKAKUAyIFTw0DIAEoApADIA9qIAJqIAIgDGoiCygCADYCACABKAKUAyIFIApBAWpLBEAgASgCkAMgD2ogAmpBBGogC0EEaigCADYCACABKAKUAyIFIApBAmpNDQIgASgCkAMgD2ogAmpBCGogC0EIaigCADYCACABKAKUAyIFIApBA2pNDQMgASgCkAMgD2ogAmpBDGogC0EMaigCADYCACADQQRqIQMgAkEQaiECIAcgEEkgB0EBaiEHDQEMCQsLIApBAWohCgwCCyAKQQJqIQoMAQsgCkEDaiEKCyAKIAVB6LTBABCMBwALDBkLIAUgBkHItMEAEIwHAAsgBSAKQdi0wQAQjAcACyATEKMFIBZBCGpBADoAACAWQgA3AgAgDkECdCIMIQIgASgCuAMiAyAMSQRAIAwgAyICayIHIAEoArADIAJrSwRAIB0gAiAHQQRBBBCkBSABKAK4AyECCyABKAK0AyIKIAJBAnQiC2ohBiAHQQJPBEAgDCADQX9zakECdCIQBEAgBkEAIBD8CwALIA5BBHQgA0ECdGsgCmogC2pBBGshBiACIAdqQQFrIQILIAZBADYCACACQQFqIQILIAEgAjYCuAMgASgC3AJFDQACQAJ/AkACQAJAAkACfwJAAkAgAiAMTwRAIAEoArQDIQogDkUNCUEEIQJBASELQQEhBiAKIQcgCCEDAkADQAJAAkACQCAFIAJBBGtLBEAgAkEDayAFTw0BIAJBAmsgBU8NAiAGQQFrIhggDEkNAyAYIQYMBQsgAkEEawwNCyACQQNrIQIMCQsgAkECawwGC0MAAH9DIANBBGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADKgIAIiiLIiUgJCADQQhqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAWsgBU8NCCACIAVPDQcgAkEBaiAFTw0DIAYgDE8NAUMAAH9DIANBEGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQQxqKgIAIiiLIiUgJCADQRRqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBBGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAJBAmogBU8NCSACQQNqIAVPDQYgAkEEaiAFTw0EIAwgBkEBaksEQEMAAH9DIANBHGoqAgAiJ4siJEMAAIA/QwAA+EFDAAAAACADQRhqKgIAIiiLIiUgJCADQSBqKgIAIimLIioQ4AgQ4AgQngWOQwAAcEGSIiQgJEMAAAAAXRsiJCAkQwAA+EFeGxC5B/wAIhBBD2sQsAZDAAB/Q5UiJJUiJiAmQwAAf0NeGxC5ByEmIAdBCGpDAAB/QyAlICSVIiUgJUMAAH9DXhsQuQf8ASAQQRt0QYCAgAhBACAoQwAAAABdG3JBgICAEEEAICdDAAAAAF0bckGAgIAgQQAgKUMAAAAAXRtyciAm/AFBCHRyQwAAf0MgKiAklSIkICRDAAB/Q14bELkH/AFBEHRyNgIAIAZBBGohBiAHQRBqIQcgAkEJaiECIANBJGohAyALIA5JIAtBAWohCw0BDAwLCyAGQQFqIQYLIAYgDEGotMEAEIwHAAtBACAMIAJBuLTBABDqBwALIAJBAWoMAQsgAkEEagsgBUGYtMEAEIwHAAsgAkEDaiECCyACIAVBiLTBABCMBwALIAJBAWsMAQsgAkECagsgBUH4s8EAEIwHAAsgBCABKALgAiAPQQJ0IhAgCRDhCCIDELgKIgI2AnAgBCAMNgJYIAIgDEcNFiADIAogDBDgCSADQYQITwRAIAMQmwcLIAEoAogDIgIgCUkEQCAJIAIiA2siByABKAKAAyACa0sEQCAeIAIgB0EEQQQQpAUgASgCiAMhAwsgASgChAMiCyADQQJ0IgZqIQUgB0ECTwRAIAkgAkF/c2pBAnQiCQRAIAVBACAJ/AsACyAUQQR0IAJBAnRrIAtqIAZqQQRrIQUgAyAHakEBayEDCyAFQQA2AgAgASADQQFqNgKIAwsgDkUNACAPQQR0IQVBACEDQQEhC0EBIQICfwJAAkACQAJAAkACQAJAA0AgDCACQQFrIgdLBEAgASgCiAMiBiAHIBBqTQ0FIAEoAoQDIAVqIANqIAMgCmoiBygCADYCACACIAxPDQQgAiAQaiIJIAEoAogDIgZPDQggASgChAMgBWogA2pBBGogB0EEaigCADYCACACQQFqIAxPDQMgASgCiAMiBiAJQQFqTQ0HIAEoAoQDIAVqIANqQQhqIAdBCGooAgA2AgAgAkECaiAMTw0CIAEoAogDIgYgCUECak0NBiABKAKEAyAFaiADakEMaiAHQQxqKAIANgIAIAJBBGohAiADQRBqIQMgCyAOSSALQQFqIQsNAQwKCwsgAkEBayECDAILIAJBAmohAgwBCyACQQFqIQILIAIgDEHYs8EAEIwHAAsgD0ECdCACakEBawwDCyAPQQJ0IAJqQQJqDAILIA9BAnQgAmpBAWoMAQsgD0ECdCACagsgBkHos8EAEIwHAAsgBCgCGCIDRQ0NIAhBBGsoAgAiAkF4cSIFIANBAnQiA0EEQQggAkEDcSICG2pJDRMgAkEAIAUgA0EnaksbDQAgCBCiAgwNCwwTCyAEQagBaiADIAIgASgCrAIQ1AQgEyABKAKoAiABKAKsAiAEKAKsASIDIAQoArABELcEIAQoAqgBIgJFDQsCQCADQQRrKAIAIghBeHEiBSACQQJ0IgJBBEEIIAhBA3EiCBtqTwRAIAhBACAFIAJBJ2pLGw0BIAMQogIMDQsMEgsMEgsgBEGoAWogAyACIAEoAqwCEJwFIBMgASgCqAIgASgCrAIgBCgCrAEiAyAEKAKwARC2BCAEKAKoASICRQ0KAkAgA0EEaygCACIIQXhxIgUgAkEBdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAwLDBELDBELIAZBAWohBgsgBiAIQcTNwQAQjAcACyATIAEoAqgCIAEoAqwCIAQoAlwiAyAEKAJgEKAFIAQoAlgiAkUNBwJAIANBBGsoAgAiCEF4cSIFIAJBAnQiAkEEQQggCEEDcSIIG2pPBEAgCEEAIAUgAkEnaksbDQEgAxCiAgwJCwwOCwwOCyAEQRhqIAMgAiABKAKsAiANKgIEIA0qAgwQqgMLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQngIgBCgCGCICRQ0FAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAcLDAwLDAwLIARBGGogAyACQQMgCCAkICcQ+QQLIBMgASgCqAIgASgCrAIgBCgCHCIDIAQoAiAQpAIgBCgCGCICRQ0DAkAgA0EEaygCACIIQXhxIgUgAkECdCICQQRBCCAIQQNxIggbak8EQCAIQQAgBSACQSdqSxsNASADEKICDAULDAoLDAoLIARBGGogAyACQQEgASgCrAIgDSoCBCANKgIMEPkECyAEKAIgIQggBCgCHCEJIBMgASgCqAIgASgCrAIiCxDpBCALBEBBACECQQwhCiAIIQUDQAJAAkACQCABKAK4AyIDIAJBA2pLBEAgBUUNAiACIAlqKAIAIgdB////A3EhDCAHQYCAgIB4cSEGIAdBgICA/AdxIgNBgICA/AdGBEAgBkEQdiAMQQ12ckGABEEAIAwbckGA+AFyIQYMBAsgBkEQdiEGIANBgICAuARLDQEgA0GAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgA0ENdiAMQQ12akGAgAFqIAZyaiEGDAQLIANBgICAmANJDQMgDEGAgIAEciIHQf4AIANBF3YiDGt2IQMgB0EdIAxrIgx2QQFxBH8gA0EDIAx0QQFrIAdxQQBHagUgAwsgBnIhBgwDCyACIAJBBGogA0HIs8EAEOoHAAsgBkGA+AFyIQYMAQsgCCAIQbizwQAQjAcACyABKAK0AyAKaiAGQf//A3E2AgAgCkEQaiEKIAVBAWshBSACQQRqIQIgC0EBayILDQALCyABQQE6APwDIAQoAhgiA0UNAQJAIAlBBGsoAgAiAkF4cSIIIANBAnQiA0EEQQggAkEDcSICG2pPBEAgAkEAIAggA0EnaksbDQEgCRCiAgwDCwwICwwICyAAQQE6AAAgACABNgIEIBtFIBpFcg0FIBkgGkEBEKIHDAULAkACQAJAIAEoArgCIgIgDSgCGEEHakF4cSIDTwRAIAFBADYCuAIgAiADayEIIANFDQEgAiADRg0DIAhFDQIgASgCtAIiAiACIANqIAj8CgAADAILQQAgAyACQYSkxwAQ6gcACyACIANGDQELIAEgCDYCuAILIA0pAxghKyABIAEoAqQCQQFqIgI2AqQCIAEgASkDcCArQgd8Qvj///8Pg3w3A3ACQCAbRSAaRXINAAJAIBlBBGsoAgAiA0F4cSICQQRBCCADQQNxIgMbIBpqTwRAIANBACACIBpBJ2pLGw0BIBkQogIgASgCpAIhAgwCCwwHCwwHCyACIAEoAmRJDQALCyAAQYACOwEADAILQYzJwQAQ3QkACyAAQQE6AAAgACAZNgIECyAEQcABaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIARBADYCqAFBACAEQfAAaiAEQdgAaiAEQagBakHg+cQAEPUHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGEMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQNyAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvlXgIZfwd9IwBBIGsiHSQAAkACQAJAIAFBIUkEQCAAIQcgASEIDAELIAJBBGshHiACQRBrIR8DQCAERQRAIAAgASACIANBASAGEGAMAwsgACABQQN2IgdBHGxqIRMgACAHQQR0aiENAkAgAUHAAE8EQCAAIA0gEyAHIAYQoQEhFiAGKAIAIRwMAQtDAACAPyEhAn8CQCAAKAIAIgcgBigCACIcQQRqKAIAIhEoAggiGkkEQCANKAIAIRYgESgCBCIJIAdBGGxqIgstABMiDyALLQASIgggCy0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISUgC0EMai8BACIQQf//AXEiC0UEQCAQQRB0DAMLIBBB/wdxIQ8gEEGAgAJxIQggEEGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIAcgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIBYgGkkEQCAJIBZBGGxqIhYtABMiDyAWLQASIgggFi0AESIHIAcgCEkbIgcgByAPSRsiDAR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIAxBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgFkEMai8BACIOQf//AXEiFkUEQCAOQRB0DAMLIA5B/wdxIQ8gDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgD0UNAxogByAPQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgD0ENdHJBgICAwANqIAhyDAILIBYgGkHcu8cAEIwHAAsgDyAPZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyATKAIAIQ8gCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISRDAACAPyEmAn8gEEEQdCALRQ0AGiAQQf8HcSELIBBBgIACcSEIIBBBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAtFDQEaIAcgC0ENdHJBgICA/gdyDAELIAhBEHQiCCAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNABogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEmCwJ/AkAgDyAaSQRAICUgIZQiJSAjICKUYCAJIA9BGGxqIgktABMiDyAJLQASIgggCS0AESIHIAcgCEkbIgcgByAPSRsiCgR9QwAAQMEgESoCRCARLQBYQQJGIgcbIiBDAAAQQSARKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISNFIQ8gJSAlWyEIIAlBDGovAQAiEEH//wFxIgtFBEAgEEEQdAwDCyAQQf8HcSEaIBBBgIACcSEJIBBBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIBpFDQMaIAcgGkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIBpBDXRyQYCAgMADaiAJcgwCCyAPIBpB3LvHABCMBwALIBogGmdBEGsiB0H//wNxQQhqdEH///8DcSAJQYCAgNgDciAHQRd0a3ILQwAAgD8hIr4iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggD3EiDyAkICaUIiAgIFsgICAjICKUYEVxRwRAIAAhFgwBCyATIA0gDyAMBH1DAABAwSARKgJEIBEtAFhBAkYiBxsiIEMAABBBIBEqAkggBxsgIJNDAAB+Q5UgDEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAsCfyAOQRB0IBZFDQAaIA5B/wdxIRYgDkGAgAJxIQggDkGA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgFkUNARogByAWQQ10ckGAgID+B3IMAQsgCEEQdCIIIAdBDXRBgICA/ABxIBZBDXRyQYCAgMADanIgBw0AGiAWIBZnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgR9ICAQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5QiIyAjWyAjIAoEfUMAAEDBIBEqAkQgES0AWEECRiIHGyIgQwAAEEEgESoCSCAHGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACwJ/IBBBEHQgC0UNABogEEH/B3EhCyAQQYCAAnEhCCAQQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0BGiAHIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgggB0ENdEGAgID8AHEgC0ENdHJBgICAwANqciAHDQAaIAsgC2dBEGsiB0H//wNxQQhqdEH///8DcSAIQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcXMbIRYLIARBAWshBCAdIBYoAgAiDTYCBCAWIABrQQJ2IQ8CQAJAAkAgBQRAQwAAgD8hIQJ/AkAgBSgCACIHIBxBBGooAgAiEygCCCIMSQRAIBMoAgQiCSAHQRhsaiIKLQATIgsgCi0AEiIIIAotABEiByAHIAhJGyIHIAcgC0kbIggEfUMAAEDBIBMqAkQgEy0AWEECRiIHGyIgQwAAEEEgEyoCSCAHGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkIApBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhCyAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciALRQ0DGiAHIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogCHIMAgsgByAMQdy7xwAQjAcACyALIAtnQRBrIgdB//8DcUEIanRB////A3EgCEGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISELQwAAgD8hIgJ/AkAgDCANSwRAIAkgDUEYbGoiCS0AEyILIAktABIiCCAJLQARIgcgByAISRsiByAHIAtJGyIIBH1DAABAwSATKgJEIBMtAFhBAkYiBxsiIEMAABBBIBMqAkggBxsgIJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshIyAJQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQsgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgC0UNAxogByALQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgC0ENdHJBgICAwANqIAhyDAILIA0gDEHcu8cAEIwHAAsgCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAdBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAkICGUIiAgIFwgICAjICKUYHINAQsgASADSw0BIAIgAUECdCIaaiEVQQAhCCAAIQsgDyEHA0AgACAHQQNrIglBACAHIAlPG0ECdGoiEyALSwRAIBxBBGooAgAiEigCCCEZIBYoAgAhFANAQwAAgD8hIQJ/AkAgGSALKAIAIhBLBEAgEigCBCIbIBBBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgEioCRCASLQBYQQJGIgkbIiBDAAAQQSASKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAQIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgGyAUQRhsaiIXLQATIgwgFy0AEiIKIBctABEiCSAJIApJGyIJIAkgDEkbIgoEfUMAAEDBIBIqAkQgEi0AWEECRiIJGyIgQwAAEEEgEioCSCAJGyAgk0MAAH5DlSAKQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBdBDGoiES8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAUIBlB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgCEECdCACIBVBBGsgJCAhlCIgICBbICAgIyAilGBFcSING2ogEDYCAEMAAIA/ISECfwJAIBkgC0EEaigCACIOSwRAIBsgDkEYbGoiEC0AEyIMIBAtABIiCiAQLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNAxogCSAMQQ10ckGAgID+B3IMAwsgCkEQdCEKIAlFDQEgCUENdEGAgID8AHEgDEENdHJBgICAwANqIApyDAILDAsLIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIMIBctABIiCiAXLQARIgkgCSAKSRsiCSAJIAxJGyIKBH1DAABAwSASKgJEIBItAFhBAkYiCRsiIEMAABBBIBIqAkggCRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQwgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQiCUGAgID8B3IgDEUNARogCSAMQQ10ckGAgID+B3IMAQsgCkEQdCIKIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADanIgCQ0AGiAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAggDWoiDUECdCACIBVBCGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EIaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiDUECdCACIBVBDGsgJCAhlCIgICBbICAgIyAilGBFcSIMG2ogDjYCAEMAAIA/ISECfwJAIBkgC0EMaigCACIOSwRAIBsgDkEYbGoiEC0AEyIKIBAtABIiCSAQLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAQQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNAxogCCAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAhFDQEgCEENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCEH//wNxQQhqdEH///8DcSAJQYCAgNgDciAIQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsgFy0AEyIKIBctABIiCSAXLQARIgggCCAJSRsiCCAIIApJGyIJBH1DAABAwSASKgJEIBItAFhBAkYiCBsiIEMAABBBIBIqAkggCBsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshI0MAAIA/ISICfyARLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQogCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQiCEGAgID8B3IgCkUNARogCCAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAhBDXRBgICA/ABxIApBDXRyQYCAgMADanIgCA0AGiAKIApnQRBrIghB//8DcUEIanRB////A3EgCUGAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAwgDWoiCUECdCACIBVBEGsiFSAkICGUIiAgIFsgICAjICKUYEVxIggbaiAONgIAIAggCWohCCALQRBqIgsgE0kNAAsLIAAgB0ECdGoiEyALSwRAIBxBBGooAgAiGygCCCEUIBYoAgAhEQNAQwAAgD8hIQJ/AkAgFCALKAIAIg5LBEAgGygCBCINIA5BGGxqIhAtABMiDCAQLQASIgogEC0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgEEEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyAOIBRB3LvHABCMBwALIAwgDGdBEGsiCUH//wNxQQhqdEH///8DcSAKQYCAgNgDciAJQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQsCfwJAIBEgFEkEQCANIBFBGGxqIg0tABMiDCANLQASIgogDS0AESIJIAkgCkkbIgkgCSAMSRsiCgR9QwAAQMEgGyoCRCAbLQBYQQJGIgkbIiBDAAAQQSAbKgJIIAkbICCTQwAAfkOVIApBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISAgDUEMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEMIAlBgIACcSEKIAlBgPgBcSIJQYD4AUYEQCAKQRB0IglBgICA/AdyIAxFDQMaIAkgDEENdHJBgICA/gdyDAMLIApBEHQhCiAJRQ0BIAlBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAKcgwCCyARIBRB3LvHABCMBwwGCyAMIAxnQRBrIglB//8DcUEIanRB////A3EgCkGAgIDYA3IgCUEXdGtyCyEJIAhBAnQgAiAVQQRrIhUgIyAhlCIjICNbICMgICAJviIgQwAAgD9eBH0gIBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcSIJG2ogDjYCACAIIAlqIQggC0EEaiILIBNJDQALCyABIAdHBEAgFUEEayIVIAhBAnRqIAsoAgA2AgAgC0EEaiELIAEhBwwBCwsgCEECdCIMBEAgACACIAz8CgAACyABIAhrIQoCQCABIAhGDQBBACEHIApBBE8EQCAAIAxqIQ0gGiAfaiEJIApBfHEiByELA0AgDSAJ/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCUEQayEJIA1BEGohDSALQQRrIgsNAAsgByAKRg0BCyAeIBogB0ECdCILa2ohDSAAIAtqIAxqIQkgByABayAIaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyAIRQ0AIAEgCE8NAiAdQQA2AhggHUEBNgIMIB1BiILIADYCCCAdQgQ3AhAgHUEIakH0lMEAEI0IAAsgASADSw0AIAIgAUECdCIQaiEVIAYoAgAhGkEAIRQgACELA0AgACAPQQNrIgVBACAFIA9NG0ECdGoiDSALSwRAIBpBBGooAgAiFygCCCEbIBYoAgAhHCAGKAIAQQRqIQwDQEMAAIA/ISECfwJAIBsgHEsEQCALKAIAIQ4gFygCBCIJIBxBGGwiCmoiEy0AEyIIIBMtABIiByATLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSAXKgJEIBctAFhBAkYiBRsiIEMAABBBIBcqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCATQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgG0Hcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gG0kEQCAJIA5BGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgFyoCRCAXLQBYQQJGIgUbIiBDAAAQQSAXKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyAOIBtB3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAQwAAgD8hIQJ/AkAgDCgCACIYKAIIIhkgHEsEQCALQQRqKAIAIQ4gCiAYKAIEIhFqIhItABMiCCASLQASIgcgEi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISQgEkEMaiITLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIBwgGUHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gGUkEQCARIA5BGGxqIgotABMiCCAKLQASIgcgCi0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgGCoCRCAYLQBYQQJGIgUbIiBDAAAQQSAYKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCkEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCwwKCyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgFGoiCkECdCACIBVBCGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAONgIAIAtBCGooAgAhFCASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAUIBlJBEAgESAUQRhsaiIOLQATIgggDi0AEiIHIA4tABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIA5BDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsgFCAZQdy7xwAQjAcACyAIIAhnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQxgVDVPgtQJRDAACAP5KRISILIAkgCmoiCkECdCACIBVBDGsgJCAhlCIgICBcICAgIyAilGByIgkbaiAUNgIAIAtBDGooAgAhDiASLQATIgggEi0AEiIHIBItABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEkQwAAgD8hIQJ/IBMvAQAiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0BGiAFIAhBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBUENdEGAgID8AHEgCEENdHJBgICAwANqciAFDQAaIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEiAn8CQCAOIBlJBEAgESAOQRhsaiITLQATIgggEy0AEiIHIBMtABEiBSAFIAdJGyIFIAUgCEkbIgcEfUMAAEDBIBgqAkQgGC0AWEECRiIFGyIgQwAAEEEgGCoCSCAFGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCJBCIgICCSBUMAAAAACyEjIBNBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhCCAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAIRQ0DGiAFIAhBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2ogB3IMAgsMCgsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEiCyAJIApqIgdBAnQgAiAVQRBrIhUgJCAhlCIgICBcICAgIyAilGByIgUbaiAONgIAIAUgB2ohFCALQRBqIgsgDUkNAAsLIAAgD0ECdGoiCiALSwRAIBpBBGooAgAiESgCCCEOIBYoAgAhDQNAQwAAgD8hIQJ/AkAgDSAOSQRAIAsoAgAhEyARKAIEIgkgDUEYbGoiDC0AEyIIIAwtABIiByAMLQARIgUgBSAHSRsiBSAFIAhJGyIHBH1DAABAwSARKgJEIBEtAFhBAkYiBRsiIEMAABBBIBEqAkggBRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiICAgkgVDAAAAAAshJCAMQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQggBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQiBUGAgID8B3IgCEUNAxogBSAIQQ10ckGAgID+B3IMAwsgB0EQdCEHIAVFDQEgBUENdEGAgID8AHEgCEENdHJBgICAwANqIAdyDAILIA0gDkHcu8cAEIwHAAsgCCAIZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEMYFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISICfwJAIA4gE0sEQCAJIBNBGGxqIgktABMiCCAJLQASIgcgCS0AESIFIAUgB0kbIgUgBSAISRsiBwR9QwAAQMEgESoCRCARLQBYQQJGIgUbIiBDAAAQQSARKgJIIAUbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIiAgIJIFQwAAAAALISMgCUEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEIIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIAhFDQMaIAUgCEENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIAhBDXRyQYCAgMADaiAHcgwCCyATIA5B3LvHABCMBwALIAggCGdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDGBUNU+C1AlEMAAIA/kpEhIgsgFEECdCACIBVBBGsiFSAkICGUIiAgIFwgICAjICKUYHIiBRtqIBM2AgAgBSAUaiEUIAtBBGoiCyAKSQ0ACwsgASAPRwRAIAIgFEECdGogCygCADYCACALQQRqIQsgFEEBaiEUIBVBBGshFSABIQ8MAQsLIBRBAnQiDwRAIAAgAiAP/AoAAAsgASAURg0EIAAgD2ohB0EAIRUCQCABIBRrIghBBE8EQCAQIB9qIQ0gByEJIAhBfHEiFSELA0AgCSAN/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDUEQayENIAlBEGohCSALQQRrIgsNAAsgCCAVRg0BCyAeIBVBAnQiBWsgEGohDSAAIAVqIA9qIQkgFSABayAUaiELA0AgCSANKAIANgIAIA1BBGshDSAJQQRqIQkgC0EBaiILDQALCyABIBRPBEBBACEFIAchACAIIQEgCEEhSQ0EDAMLIBQgASABQYSVwQAQ6gcACwALIAAgDGogCiACIAMgBCAdQQRqIAYQOCAIIQEgCEEhTw0ACyAAIQcLIAhBAkkNACAGKAIAIQYgCEEBdiEPIA8CfyAIQQ9NBEAgCEEHSwRAIAcgAiAGQQRqIgEoAgAQbSAHIA9BAnQiAGogACACaiABKAIAEG1BBAwCCyACIAcoAgA2AgAgAiAPQQJ0IgBqIAAgB2ooAgA2AgBBAQwBCyAHIAIgCEECdGoiBSAGQQRqIgQoAgAQbSAHQRBqIAVBEGogBCgCABBtIAVBCCACIAYQtgEgByAPQQJ0IgNqIgEgBUEgaiIAIAQoAgAQbSABQRBqIAVBMGogBCgCABBtIABBCCACIANqIAYQtgFBCAsiA0sEQCAPIANrIQkgA0ECdCENA0AgAiANaiIAIAcgDWooAgA2AgAgAiAAIAYQygEgDUEEaiENIAlBAWsiCQ0ACwsgCCAPayADSwRAIAIgD0ECdCIAaiEBIAcgA0ECdCAAaiIAaiEJIAAgAmohDSADIA9qIAhrIRUDQCANIAkoAgA2AgAgASANIAYQygEgCUEEaiEJIA1BBGohDSAVQQFqIhUNAAsLIAIgCCAHIAYQtgELIB1BIGokAA8LIA4gGUHcu8cAEIwHAAvgawMRfwd+AXsjAEGw1QBrIgMkACAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD8EggAq0hFAJAAkACQAJAAkACQAJAAn8CQAJ+AkACQAJAAkACQAJAAkACQEG4nMcAKQMAIhhC/wGDQgRSBEBCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQJBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLIgcbIgYEQCADQfDIAGogBWogA0EYaiAG/AoAAAsgBw0DIBUgBK0iGnwhFSAEIApqIQogFiAGrXwhFiAXIBp9IhdCAFINAAsMAQtCECEXA0AgAiAVIBQgFCAVVhunIgZrIgRCgMAAIBcgF0KAwABaG6ciBSAEIAVJGyIEBEAgA0EYaiABIAZqIAT8CgAACyACIAZGDQFBEEIQIBYgFkIQWhunIgVrIgYgBCAEIAZLGyIGBEAgA0HwyABqIAVqIANBGGogBvwKAAALIBYgBq18IRYgBCAKaiEKIBUgBK0iGHwhFSAXIBh9IhdQRQ0ACwtB+LbJACgCACINQQBIDQJB+LbJACANQQFqNgIAIApBEUkEQANAIAwoAuy3RCEFIAwoAui3RCEEAkAgDCgC9LdEIgdFBEAgBSAKSw0BIAQgA0HwyABqIAUQ2wcNAQwFCyAFIApLDQAgDCgC8LdEIgYgB2ohDiADQfDIAGohBwNAIAVFDQUgBUEBayEFQaSkxwAgBiAGRSAGIA5GciIIGyEPIActAAAhCSAELQAAIQsgB0EBaiEHIARBAWohBEEAIAZBAWogCBshBiALIAkgDy0AAHFGDQALCyAMQRRqIgxBuANHDQALQfi2yQAgDTYCAEEDIQRBBCEBQQMhCQwLC0EAIApBEEGUpMcAEOoHAAsgGBDSByEBIABBgICAgHg2AgAgACABNgIEDAoLQfi2yQAgDTYCAAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAxB+LfEAGotAAAiBA4EAAMDAQMLQYCAARBxIgZFDRUgBkEAQYCAAfwLAEGAEBBxIgVFDRUgBUEAQYAQ/AsAIANBJGpBADsBACADQQA2AiBBqAcQcSIERQ0VIARBAEHYBvwLACAEQQA2ApQHIARBADYCiAcgBEEAOgCEByAEQQA2AoAHIAQgBTYC/AYgBCAGNgL4BiAEQgI3A/AGIARCADcD6AYgBEKAgICAIDcD4AYgBEEBNgLcBiAEQSQ2AtgGIARBADoApgcgBCADKQMYNwOYByAEQZ4HaiADKQEeNwEAQYABEHEiBkUNFSADQeQCakIANwIAIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwLUAiADQQI2ArhFIANBADYCsEUgA0G8xQBqIANBGGoiBUHUAvwKAAAgA0GAAjsAw0ggA0EBOwHASCADQoCAgICCIDcDuEggA0IANwOwSCADQQA6AKhIIANBgAI7AaRIIAMgBDYCoEggA0EAOgCcSCADQQA2AphIIAMgBjYClEggA0GAATYCkEggAyABNgLISCADIAI2AsxIIANCADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAMLzgQCB38BfiMAQdAAayIBJAACQCAAEF4iAg0AIAAoApwFIgNBgYCAgHhGIgJFBEACQCADQYCAgIB4RgRAQQAgAEFAayACGyEFIAAoAkgiBkEGdCEEIAAoAkQiB0E8aiEDAkADQCADIQIgBEUNASAEQUBqIQQgAkFAayEDIAItAABBAUcNAAsgAkE8ayIDKAI4IAMoAiAiAkcNAiACIAAoAqwDRw0CCyAGQQZ0IQQgB0E8aiEDA0AgAyEAQQAhAiAERQ0EIARBQGohBCAAQUBrIQMgAC0AAEECRw0ACyAAQTxrIgAoAjggACgCIEYNAyABQQI2AiwgAUGIo8EANgIoIAFCAjcCNCABQoCAgIAQIgggAEE4aq2ENwNIIAEgCCAAQSBqrYQ3A0AgASABQUBrNgIwIAFBHGoiACABQShqELEGIAAQjgchAgwDC0EAIQIgACgCwAQgACgCuARGDQIgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBwARqrYQ3A0ggASAIIABBuARqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAgwCCyABQQI2AiwgAUHkosEANgIoIAFCAjcCNCABQoCAgIAQIgggA0E4aq2ENwNIIAEgCCAFQewCaq2ENwNAIAEgAUFAazYCMCABQRBqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQaijwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUHQAGokACACC88EAgd/AX4jAEHQAGsiASQAAkAgABBfIgINACAAKAK8BSIDQYGAgIB4RiICRQRAAkAgA0GAgICAeEYEQEEAIABB4ABqIAIbIQUgACgCaCIGQQZ0IQQgACgCZCIHQTxqIQMCQANAIAMhAiAERQ0BIARBQGohBCACQUBrIQMgAi0AAEEBRw0ACyACQTxrIgMoAjggAygCICICRw0CIAIgACgCzANHDQILIAZBBnQhBCAHQTxqIQMDQCADIQBBACECIARFDQQgBEFAaiEEIABBQGshAyAALQAAQQJHDQALIABBPGsiACgCOCAAKAIgRg0DIAFBAjYCLCABQYijwQA2AiggAUICNwI0IAFCgICAgBAiCCAAQThqrYQ3A0ggASAIIABBIGqthDcDQCABIAFBQGs2AjAgAUEcaiIAIAFBKGoQsQYgABCOByECDAMLQQAhAiAAKALgBCAAKALYBEYNAiABQQI2AiwgAUHkosEANgIoIAFCAjcCNCABQoCAgIAQIgggAEHgBGqthDcDSCABIAggAEHYBGqthDcDQCABIAFBQGs2AjAgAUEEaiIAIAFBKGoQsQYgABCOByECDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCADQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAgwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByECCyABQdAAaiQAIAILtgQBCn8CQAJAIAFBgApJBEAgAUEFdiEHAkACQCAAKAKgASIEBEAgBEEBayECIARBAnQgAGpBBGshBSAEIAdqQQJ0IABqQQRrIQMgBEEpSSEEA0AgBEUNAiACIAdqIgZBKE8NAyADIAUoAgA2AgAgA0EEayEDIAVBBGshBSACQQFrIgJBf0cNAAsLIAFBH3EhBgJAIAFBIEkNACAHQQJ0IgFFDQAgAEEAIAH8CwALIAAoAqABIgUgB2ohASAGRQRAIAAgATYCoAEgAA8LIAFBAWsiA0EnSw0DIAEhBCAAIANBAnRqKAIAQSAgBmsiCHYiA0UNBCABQSdNBEAgACABQQJ0aiADNgIAIAFBAWohBAwFCyABQShBjIPCABCMBwALIAJBKEGMg8IAEIwHAAsgBkEoQYyDwgAQjAcAC0Gcg8IAQR1BjIPCABDrBwALIANBKEGMg8IAEIwHAAsCQCAHQQFqIgogAU8NAAJAIAVBAWsiCUEESQRAIAEhAwwBCyABIAlBfHEiBWshAyABQQJ0IABqQRRrIQIgBSEBA0AgAkEEaiILIAL9AAIAIAj9rQEgC/0AAgAgBv2rAf1Q/QsCACACQRBrIQIgAUEEayIBDQALIAUgCUYNAQsgA0ECdCAAakEIayECA0AgAkEEaiIBIAEoAgAgBnQgAigCACAIdnI2AgAgAkEEayECIAogA0EBayIDSQ0ACwsgACAHQQJ0aiIBIAEoAgAgBnQ2AgAgACAENgKgASAAC+YEAgZ/AX4jAEEwayIDJAAgACgCDCEEAkACQAJAAkACQAJAIAAoAhQiASAAKAIQIgJJBEADQAJAIAEgBGotAAAiBUEJaw4kAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQGAwsgACABQQFqIgE2AhQgASACRw0ACyACIQELIANBEGogBCACIAFBAWoiACACIAAgAkkbEPkBIAMoAhQhAiADKAIQIQBBFBBxIgFFDQUgASAANgIMIAFBAjYCACABIAI2AhAMBAsgBUHdAEYNAQsgA0EIaiAEIAIgAUEBaiIAIAIgACACSRsQ+QEgAygCDCECIAMoAgghAEEUEHEiAUUNAyABIAA2AgwgAUEWNgIAIAEgAjYCEAwCCyAAIAFBAWo2AhRBACEBDAELIAAgAUEBaiIBNgIUAkAgASACSQRAAn4CQANAIAEgBGotAAAiBkEJayIFQRdLQQEgBXRBk4CABHFFcg0BIAAgAUEBaiIBNgIUIAEgAkcNAAsgAiEBQgAMAQtCgAILIQcgAyAHIAatQhCGhCIHNwMoIAdCgIL0AlINASADQRhqIAQgAiABQQFqIgAgAiAAIAJJGxD5ASADKAIcIQIgAygCGCEAQRQQcSIBRQ0DIAEgADYCDCABQRU2AgAgASACNgIQDAILIANCADcDKAsgA0EgaiAEIAIgAUEBaiIAIAIgACACSRsQ+QEgAygCJCECIAMoAiAhAEEUEHEiAUUNASABIAA2AgwgAUEWNgIAIAEgAjYCECAHQv8Bg1ANACADQShqQQRyELEECyADQTBqJAAgAQ8LAAuVBQIFfwJ+IwBBMGsiAiQAIAEoAgwhBQJAAkACQAJAAkAgASgCFCIDIAEoAhAiBEkEQANAAkAgAyAFai0AACIGQQlrDiUAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQDBAsgASADQQFqIgM2AhQgAyAERw0ACyAEIQMLIAIgBSAEIANBAWoiASAEIAEgBEkbEPkBIAIoAgQhAyACKAIAIQRBFBBxIgFFDQIgASAENgIMIAFBBTYCACAAIAE2AgQgAEEBNgIAIAEgAzYCEAwECyABIANBAWo2AhQgAkEIaiABQQAQxwMgAikDCCIIQgNRDQIgAikDECEHAkACfwJAAkAgCKdBAWsOAgMAAQsgB0IAWQ0CIAJBAjoAGCACIAc3AyAgAkEYaiACQS9qQYjnwAAQ3gYMAQsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBiOfAABDfBgsgARDrBSEBIABBATYCACAAIAE2AgQMBAsgAEEANgIAIAAgBzcDCAwDCyAGQTBrQf8BcUEKTwRAIAEgAkEvakGI58AAEO4BIAEQ6wUhASAAQQE2AgAgACABNgIEDAMLIAJBCGogAUEBEMcDIAIpAwgiCEIDUQRAIAAgAigCEDYCBCAAQQE2AgAMAwsgAikDECEHAkACfwJAAkAgCKdBAWsOAgMAAQsgB0IAWQ0CIAJBAjoAGCACIAc3AyAgAkEYaiACQS9qQYjnwAAQ3gYMAQsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBiOfAABDfBgsgARDrBSEBIABBATYCACAAIAE2AgQMAwsgAEEANgIAIAAgBzcDCAwCCwALIAAgAigCEDYCBCAAQQE2AgALIAJBMGokAAuJBAACQAJAAkACQAJAAkACQAJAIANB/wFxQQFrDgMBAAMGCyAAIAFyDQEMBAsgAEUNAiAFIAEgAmwgAGpBAnRBAWsiAEsNBSAAIAVByPHEABCMBwALIAFFBEAgBSAAQQJ0QQFrIgBLDQUgACAFQdjxxAAQjAcACyABQQFrIAJsIABqQQJ0QQNyIgAgBUkNBCAAIAVB6PHEABCMBwALAkACQAJ/IAAEQCABRQRAIAUgAEECdEEBayIASwRAIAAgBGotAAAMAwsgACAFQYjyxAAQjAcACwJAIAUgASACbCAAakECdEEBayIDSwRAIAFBAWsgAmwgAGpBAnQiAEEDciIBIAVPDQEgBSAAQQFrIgBLBEAgAyAEai0AACEDIAAgBGotAAAhACABIARqLQAAIQEMBgsgACAFQbjyxAAQjAcACyADIAVBmPLEABCMBwALIAEgBUGo8sQAEIwHAAsgAUUEQEEAIQNBACEBQQAhAAwDCyACIAFBAWtsQQJ0QQNyIgAgBU8NASAAIARqLQAACyIDIgEhAAwBCyAAIAVB+PHEABCMBwALQf8BIAFB/wFxIANB/wFxaiAAQf8BcWsiAEEAIABBAEobIgAgAEH/AU4bDwsgAUUNACAFIAIgAUEBa2xBAnRBA3IiAEsNAiAAIAVBuPHEABCMBwALQQAhAwsgAw8LIAAgBGotAAALrgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgBALYYAQDWGAEAtxgBANcYAQC4GAEA2BgBALkYAQDZGAEAuhgBANoYAQC7GAEA2xgBALwYAQDcGAEAvRgBAN0YAQC+GAEA3hgBAL8YAQDfGAEAQG4BAGBuAQBBbgEAYW4BAEJuAQBibgEAQ24BAGNuAQBEbgEAZG4BAEVuAQBlbgEARm4BAGZuAQBHbgEAZ24BAEhuAQBobgEASW4BAGluAQBKbgEAam4BAEtuAQBrbgEATG4BAGxuAQBNbgEAbW4BAE5uAQBubgEAT24BAG9uAQBQbgEAcG4BAFFuAQBxbgEAUm4BAHJuAQBTbgEAc24BAFRuAQB0bgEAVW4BAHVuAQBWbgEAdm4BAFduAQB3bgEAWG4BAHhuAQBZbgEAeW4BAFpuAQB6bgEAW24BAHtuAQBcbgEAfG4BAF1uAQB9bgEAXm4BAH5uAQBfbgEAf24BAADpAQAi6QEAAekBACPpAQAC6QEAJOkBAAPpAQAl6QEABOkBACbpAQAF6QEAJ+kBAAbpAQAo6QEAB+kBACnpAQAI6QEAKukBAAnpAQAr6QEACukBACzpAQAL6QEALekBAAzpAQAu6QEADekBAC/pAQAO6QEAMOkBAA/pAQAx6QEAEOkBADLpAQAR6QEAM+kBABLpAQA06QEAE+kBADXpAQAU6QEANukBABXpAQA36QEAFukBADjpAQAX6QEAOekBABjpAQA66QEAGekBADvpAQAa6QEAPOkBABvpAQA96QEAHOkBAD7pAQAd6QEAP+kBAB7pAQBA6QEAH+kBAEHpAQAg6QEAQukBACHpAQBD6QEATSUQACgAAAAAAwAAHQAAALACAABdE2ABEhfgIL0fICF8LOAuBTAgMxWgoDT4pCA2DKZgNh77oDYA/qBC/QEhQ4AH4UYBCqFHJA1hSKsO4UkvGOFKOxlhWjAc4VrzHmFeMDQhYh5hoWPwaiFkQG2hZE9vYWXwr+FlnbzhZgDPoWdn0SFoANqhaADg4Wmu4mFr6+RhbdDo4W3782FuAQDubvABP28AAwAAgwQgAJEFYABdE6AAEhcgHwwgYB/vLCArKjCgK2+mYCwCqOAsHvvgLQD+IDae/2A2/QHhNgEKITckDeE3qw5hOS8Y4TkwHOFK8x7hTkA0oVIeYeFT8GphVE9v4VSdvGFVAM9hVmXRoVYA2iFXAOChWK7iIVrs5OFb0OhhXCAA7lzwAX9doBAAAKATYAaAHKAHFh8gCLYkQAkALKASQKbgEjCrYBQA++AWIf+gFwAEIRiAB6EYgAxhG6AYYRxAbmEdANShHabW4R0A34EiMOBhJQDpISYw8WEmivGyJgAGAQEDAQQCBQcHAggICQIKBQsCDgQQARECEgUTHBQBFQIXAhkNHAUdCB8BJAFqBGsCrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5wToAu4g8AT4AvoE+wEMJzs+Tk+Pnp6fe4uTlqKyuoaxBgcJNj0+VvPQ0QQUGDY3Vld/qq6vvTXgEoeJjp4EDQ4REikxNDpFRklKTk9kZYqMjY+2wcPExsvWXLa3GxwHCAoLFBc2OTqoqdjZCTeQkagHCjs+ZmmPkhFvX7/u71pi9Pz/U1Samy4vJyhVnaCho6SnqK26vMQGCwwVHTo/RVGmp8zNoAcZGiIlPj/n7O//xcYEICMlJigzODpISkxQU1VWWFpcXmBjZWZrc3h9f4qkqq+wwNCur25v3d6TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsFRAQOKoCqBiQEJAQoCDQLTgM0DIE3CRYKCBg7RTkDYwgJMBYFIQMbBQFAOARLBS8ECgcJB0AgJwQMCTYDOgUaBwQMB1BJNzMNMwcuCAoGJgMdCAKA0FIQAzcsCCoWGiYcFBcJTgQkCUQNGQcKBkgIJwl1C0I+KgY7BQoGUQYBBRADBQtZCAIdYh5ICAqApl4iRQsKBg0TOgYKBhQcLAQXgLk8ZFMMSAkKRkUbSAhTDUkHCoC2Ig4KBkYKHQNHSTcDDggKBjkHCoE2GQc7Ax1VAQ8yDYObZnULgMSKTGMNhDAQFgqPmwWCR5q5OobGgjkHKgRcBiYKRgooBROBsDqAxltlSwQ5BxFABQsCDpf4CITWKQqi54EzDwEdBg4ECIGMiQRrBQ0DCQcQj2CA+gaBtExHCXQ8gPYKcwhwFUZ6FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqA1isEAYHggPcpTAQKBAKDEURMPYDCPAYBBFUFGzQCgQ4sBGQMVgqArjgdDSwECQcCDgaAmoPYBBEDDQN3BF8GDAQBDwwEOAgKBigILAQCPoFUDB0DCgU4BxwGCQeA+oQGAAEDBQUGBgIHBggHCREKHAsZDBoNEA4MDwQQAxISEwkWARcEGAEZAxoHGwEcAh8WIAMrAy0LLgEwBDECMgGnBKkCqgSrCPoC+wX9Av4D/wmteHmLjaIwV1iLjJAc3Q4PS0z7/C4vP1xdX+KEjY6RkqmxurvFxsnK3uTl/wAEERIpMTQ3Ojs9SUpdhI6SqbG0urvGys7P5OUABA0OERIpMTQ6O0VGSUpeZGWEkZudyc7PDREpOjtFSVdbXF5fZGWNkam0urvFyd/k5fANEUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc9vf+/4Btcd7fDh9ubxwdX31+rq9Nu7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHWWJi4vp6+3v8fP19+aAECXmDCPH87P0tTO/05PWlsHCA8QJy/u725vNz0/QkWQkVNndcjJ0NHY2ef+/wAgXyKC3wSCRAgbBAYRgawOgKsFHwiBHAMZCAEELwQ0BAcDAQcGBxEKUA8SB1UHAwQcCgkDCAMHAwIDAwMMBAUDCwYBDhUFTgcbB1cHAgYXDFAEQwMtAwEEEQYPDDoEHSVfIG0EaiWAyAWCsAMaBoL9A1kHFgkYCRQMFAxqBgoGGgZZBysFRgosBAwEAQMxCywEGgYLA4CsBgoGLzGA9Ag8Aw8DPgU4CCsFgv8RGAgvES0DIQ8hD4CMBIKaFgsViJQFLwU7BwIOGAmAviJ0DIDWGoEQBYDhCfKeAzcJgVwUgLgIgN0VOwMKBjgIRggMBnQLHgNaBFkJgIMYHAoWCUwEgIoGq6QMFwQxoQSB2iYHDAUFgKYQgfUHASAqBkwEgI0EgL4DGwMPDQAAAFQZEAAlAAAAGgAAADYAAABUGRAAJQAAAAoAAAArAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAHjDEAAZAAAAYXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvAAAAnMMQADkAAAAAAAAABAAAAAQAAACTAQAAAAAAAAQAAAAEAAAAlAEAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAAxBAAIAAAACDEEAASAAAAPT0hPWFzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IEjEEAAQAAAAWMQQABcAAABvxBAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAABIxBAAEAAAAJDEEAAQAAAAoMQQAAkAAABvxBAACQAAALkAEAAdAAAAhgAAACMAAABceAAA3MQQAAIAAAACAEHyicMACwECAEH8icMAC7mMASAAAOm5ABAAHQAAAH8AAAArAAAAUmVmQ2VsbCBhbHJlYWR5IG11dGFibHkgYm9ycm93ZWQuLlJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZGludmFsaWQgdXRmLTggc2VxdWVuY2Ugb2YgIGJ5dGVzIGZyb20gaW5kZXggAABKxRAAGgAAAGTFEAASAAAAaW5jb21wbGV0ZSB1dGYtOCBieXRlIHNlcXVlbmNlIGZyb20gaW5kZXggAACIxRAAKgAAACAgICAgKDEgPDwgAAEAAAAAAAAAwMUQAAcAAABeBxIAAQAAAGNhbm5vdCBwYXJzZSBpbnRlZ2VyIGZyb20gZW1wdHkgc3RyaW5naW52YWxpZCBkaWdpdCBmb3VuZCBpbiBzdHJpbmdudW1iZXIgdG9vIGxhcmdlIHRvIGZpdCBpbiB0YXJnZXQgdHlwZW51bWJlciB0b28gc21hbGwgdG8gZml0IGluIHRhcmdldCB0eXBlbnVtYmVyIHdvdWxkIGJlIHplcm8gZm9yIG5vbi16ZXJvIHR5cGUAAAAAAAAAljAHdyxhDu66UQmZGcRtB4/0anA1pWPpo5VknjKI2w6kuNx5HunV4IjZ0pcrTLYJvXyxfgctuOeRHb+QZBC3HfIgsGpIcbnz3kG+hH3U2hrr5N1tUbXU9MeF04NWmGwTwKhrZHr5Yv3syWWKT1wBFNlsBmNjPQ/69Q0IjcggbjteEGlM5EFg1XJxZ6LR5AM8R9QES/2FDdJrtQql+qi1NWyYskLWybvbQPm8rONs2DJ1XN9Fzw3W3Fk90ausMNkmOgDeUYBR18gWYdC/tfS0ISPEs1aZlbrPD6W9uJ64AigIiAVfstkMxiTpC7GHfG8vEUxoWKsdYcE9LWa2kEHcdgZx2wG8INKYKhDV74mFsXEftbYGpeS/nzPUuOiiyQd4NPkAD46oCZYYmA7huw1qfy09bQiXbGSRAVxj5vRRa2tiYWwc2DBlhU4AYvLtlQZse6UBG8H0CIJXxA/1xtmwZVDptxLquL6LfIi5/N8d3WJJLdoV83zTjGVM1PtYYbJNzlG1OnQAvKPiMLvUQaXfSteV2D1txNGk+/TW02rpaUP82W40RohnrdC4YNpzLQRE5R0DM19MCqrJfA3dPHEFUKpBAicQEAu+hiAMySW1aFezhW8gCdRmuZ/kYc4O+d5emMnZKSKY0LC0qNfHFz2zWYENtC47XL23rWy6wCCDuO22s7+aDOK2A5rSsXQ5R9Xqr3fSnRUm2wSDFtxzEgtj44Q7ZJQ+am0NqFpqegvPDuSd/wmTJ64ACrGeB31Ekw/w0qMIh2jyAR7+wgZpXVdi98tnZYBxNmwZ5wZrbnYb1P7gK9OJWnraEMxK3Wdv37n5+e++jkO+txfVjrBg6KPW1n6T0aHEwtg4UvLfT/Fnu9FnV7ym3Qa1P0s2skjaKw3YTBsKr/ZKAzZgegRBw+9g31XfZ6jvjm4xeb5pRoyzYcsag2a8oNJvJTbiaFKVdwzMA0cLu7kWAiIvJgVVvju6xSgLvbKSWrQrBGqzXKf/18Ixz9C1i57ZLB2u3luwwmSbJvJj7JyjanUKk20CqQYJnD82DuuFZwdyE1cABYJKv5UUerjiriuxezgbtgybjtKSDb7V5bfv3Hwh39sL1NLThkLi1PH4s91oboPaH80WvoFbJrn24Xewb3dHtxjmWgiIcGoP/8o7BmZcCwER/55lj2muYvjT/2thRc9sFnjiCqDu0g3XVIMETsKzAzlhJmen9xZg0E1HaUnbd24+SmrRrtxa1tlmC99A8DvYN1OuvKnFnrvef8+yR+n/tTAc8r29isK6yjCTs1Omo7QkBTbQupMG180pV95Uv2fZIy56ZrO4SmHEAhtoXZQrbyo3vgu0oY4MwxvfBVqN7wItAAAAAEExGxmCYjYyw1MtKwTFbGRF9Hd9hqdaVseWQU8IitnISbvC0Yro7/rL2fTjDE+1rE1+rrWOLYOezxyYh1ESwkoQI9lT03D0eJJB72FV164uFOa1N9e1mByWhIMFWZgbghipAJvb+i2wmss2qV1dd+YcbGz/3z9B1J4OWs2iJISV4xWfjCBGsqdhd6m+puHo8efQ8+gkg97DZbLF2qquXV3rn0ZEKMxrb2n9cHauazE571oqICwJBwttOBwS8zZG37IHXcZxVHDtMGVr9PfzKru2wjGidZEciTSgB5D7vJ8Xuo2EDnneqSU477I8/3nzc75I6Gp9G8VBPCreWAVPefBEfmLphy1PwsYcVNsBihWUQLsOjYPoI6bC2Ti/DcWgOEz0uyGPp5YKzpaNEwkAzFxIMddFi2L6bspT4XdUXbu6FWygo9Y/jYiXDpaRUJjX3hGpzMfS+uHsk8v69VzXYnId5nlr3rVUQJ+ET1lYEg4WGSMVD9pwOCSbQSM9p2v9ZeZa5nwlCctXZDjQTqOukQHin4oYIcynM2D9vCqv4SSt7tA/tC2DEp9ssgmGqyRIyeoVU9ApRn77aHdl4vZ5Py+3SCQ2dBsJHTUqEgTyvFNLs41IUnDeZXkx735g/vPm57/C/f58kdDVPaDLzPo2ioO7B5GaeFS8sTllp6hLmIM7CqmYIsn6tQmIy64QT13vXw5s9EbNP9ltjA7CdEMSWvMCI0HqwXBswYBBd9hH1zaXBuYtjsW1AKWEhBu8GopBcVu7WmiY6HdD2dlsWh5PLRVffjYMnC0bJ90cAD4SAJi5UzGDoJBirovRU7WSFsX03Vf078SUp8Lv1ZbZ9um8B66ojRy3a94xnCrvKoXteWvKrEhw028bXfguKkbh4TbeZqAHxX9jVOhUImXzTeXzsgKkwqkbZ5GEMCagnym4rsXk+Z/e/TrM89Z7/ejPvGupgP1aspk+CZ+yfziEq7AkHCzxFQc1MkYqHnN3MQe04XBI9dBrUTaDRnp3sl1jTtf6yw/m4dLMtcz5jYTX4EoSlq8LI422yHCgnYlBu4RGXSMDB2w4GsQ/FTGFDg4oQphPZwOpVH7A+nlVgctiTB/FOIFe9COYnacOs9yWFaobAFTlWjFP/JliYtfYU3nOF0/hSVZ++lCVLdd71BzMYhOKjS1Su5Y0kei7H9DZoAbs835ercJlR26RSGwvoFN16DYSOqkHCSNqVCQIK2U/EeR5p5alSLyPZhuRpCcqir3gvMvyoY3Q62Le/cAj7+bZveG8FPzQpw0/g4omfrKRP7kk0HD4FctpO0bmQnp3/Vu1a2Xc9Fp+xTcJU+52OEj3sa4JuPCfEqEzzD+Kcv0kkwAAAAA3asIBbtSEA1m+RgLcqAkH68LLBrJ8jQSFFk8FuFETDo870Q/WhZcN4e9VDGT5GglTk9gICi2eCj1HXAtwoyYcR8nkHR53oh8pHWAerAsvG5th7RrC36sY9bVpGcjyNRL/mPcTpiaxEZFMcxAUWjwVIzD+FHqOuBZN5HoX4EZNONcsjzmOksk7ufgLOjzuRD8LhIY+UjrAPGVQAj1YF142b32cNzbD2jUBqRg0hL9XMbPVlTDqa9My3QERM5DlaySnj6kl/jHvJ8lbLSZMTWIjeyegIiKZ5iAV8yQhKLR4Kh/euitGYPwpcQo+KPQccS3DdrMsmsj1Lq2iNy/AjZpw9+dYca5ZHnOZM9xyHCWTdytPUXZy8Rd0RZvVdXjciX5Ptkt/FggNfSFiz3ykdIB5kx5CeMqgBHr9ysZ7sC68bIdEfm3e+jhv6ZD6bmyGtWtb7HdqAlIxaDU482kIf69iPxVtY2arK2FRwelg1NemZeO9ZGS6AyJmjWngZyDL10gXoRVJTh9TS3l1kUr8Y95PywkcTpK3Wkyl3ZhNmJrERq/wBkf2TkBFwSSCREQyzUFzWA9AKuZJQh2Mi0NQaPFUZwIzVT68dVcJ1rdWjMD4U7uqOlLiFHxQ1X6+Ueg54lrfUyBbhu1mWbGHpFg0ketdA/spXFpFb15tL61fgBs14bdx9+Duz7Hi2aVz41yzPOZr2f7nMme45QUNeuQ4SibvDyDk7laeouxh9GDt5OIv6NOI7emKNqvrvVxp6vC4E/3H0tH8nmyX/qkGVf8sEBr6G3rY+0LEnvl1rlz4SOkA83+DwvImPYTwEVdG8ZRBCfSjK8v1+pWN983/T/ZgXXjZVze62A6J/No54z7bvPVx3oufs9/SIfXd5Us33NgMa9fvZqnWttjv1IGyLdUEpGLQM86g0Wpw5tNdGiTSEP5exSeUnMR+KtrGSUAYx8xWV8L7PJXDooLTwZXoEcCor03Ln8WPysZ7ycjxEQvJdAdEzENths0a08DPLbkCzkCWr5F3/G2QLkIrkhko6ZOcPqaWq1Rkl/LqIpXFgOCU+Me8n8+tfp6WEzicoXn6nSRvtZgTBXeZSrsxm33R85owNYmNB19LjF7hDY5pi8+P7J2Aitv3QouCSQSJtSPGiIhkmoO/DliC5rAegNHa3IFUzJOEY6ZRhToYF4cNctWGoNDiqZe6IKjOBGaq+W6kq3x4665LEimvEqxvrSXGrawYgfGnL+szpnZVdaRBP7elxCn4oPNDOqGq/XyjnZe+otBzxLXnGQa0vqdAtonNgrcM282yO7EPs2IPSbFVZYuwaCLXu19IFboG9lO4MZyRubSK3ryD4By92l5av+00mL4AAAAAZWe8uIvICarur7USV5dijzLw3jfcX2sluTjXne8otMWKTwh9ZOC9bwGHAde4v9ZK3dhq8jN33+BWEGNYn1cZUPowpegUnxD6cfisQsjAe9+tp8dnQwhydSZvzs1wf62VFRgRLfu3pD+e0BiHJ+jPGkKPc6KsIMawyUd6CD6vMqBbyI4YtWc7CtAAh7JpOFAvDF/sl+LwWYWHl+U90YeGZbTgOt1aT4/PPygzd4YQ5Orjd1hSDdjtQGi/Ufih+CvwxJ+XSCowIlpPV57i9m9Jf5MI9cd9p0DVGMD8bU7QnzUrtyONxRiWn6B/KicZR/26fCBBApKP9BD36EioPVgUm1g/qCO2kB0x0/ehiWrPdhQPqMqs4Qd/voRgwwbScKBetxcc5lm4qfQ83xVMhefC0eCAfmkOL8t7a0h3w6IPDcvHaLFzKccEYUyguNn1mG9EkP/T/H5QZu4bN9pWTSe5DihABbbG77Cko4gMHBqw24F/12c5kXjSK/QfbpMD9yY7ZpCag4g/L5HtWJMpVGBEtDEH+AzfqE0eus/xpuzfkv6JuC5GZxebVAJwJ+y7SPBx3i9MyTCA+dtV50VjnKA/a/nHg9MXaDbBcg+Kecs3XeSuUOFcQP9UTiWY6PZziIuuFu83FvhAggSdJz68JB/pIUF4VZmv1+CLyrBcMzu2We1e0eVVsH5QR9UZ7P9sITtiCUaH2ufpMsiCjo5w1J7tKLH5UZBfVuSCOjFYOoMJj6fmbjMfCMGGDW2mOrWk4UC9wYb8BS8pSRdKTvWv83YiMpYRnop4viuYHdmXIEvJ9HgurkjAwAH90qVmQWocXpb3eTkqT5eWn13y8SPlBRlrTWB+1/WO0WLn67beX1KOCcI36bV62UYAaLwhvNDqMd+Ij1ZjMGH51iIEnmqavaa9B9jBAb82brStUwkIFZpOch3/Kc6lEYZ7t3Thxw/N2RCSqL6sKkYRGTgjdqWAdWbG2BABemD+rs9ym8lzyiLxpFdHlhjvqTmt/cxeEUUG7k12Y4nxzo0mRNzoQfhkUXkv+TQek0HasSZTv9aa6+nG+bOMoUULYg7wGQdpTKG+UZs82zYnhDWZkpZQ/i4umblUJvze6J4ScV2MdxbhNM4uNqmrSYoRReY/AyCBg7t2keDjE/ZcW/1Z6UmYPlXxIQaCbERhPtSqzovGz6k3fjhBf9ZdJsNus4l2fNbuysRv1h1ZCrGh4eQeFPOBeahL12nLE7IOd6tcocK5OcZ+AYD+qZzlmRUkCzagNm5RHI6nFmaGwnHaPizebyxJudOU8IEECZXmuLF7SQ2jHi6xG0g+0kMtWW77w/bb6aaRZ1EfqbDMes4MdJRhuWbxBgXeAAAAALApYD1gU8B60HqgR8CmgPVwj+DIoPVAjxDcILLBS3AwcWIQDaEYsEoRMdB3Ae3wxbHEkPhhvjC/0ZdQgoKX4GAyvoBd4sQgGlLtQCdCMWCV8hgAqCJioO+SS8DSQ9yQUPP18G0jj1Aqk6YwF4N6EKUzU3CY4ynQ31MAsOIEL8HBtAah/GR8AbvUVWGGxIlBNHSgIQmk2oFOFPPhc8VksfF1TdHMpTdxixUeEbYFwjEEtetROWWR8X7VuJFDhrghoTaRQZzm6+HbVsKB5kYeoVT2N8FpJk1hLpZkARNH81GR99oxrCegkeuXifHWh1XRZDd8sVnnBhEeVy9xI0lY81j5cZNlKQszIpkiUx+J/nOtOdcTkOmts9dZhNPqiBODaDg641XoQEMSWGkjL0i1A534nGOgKObD55jPo9rLzxM4e+ZzBauc00IbtbN/C2mTzbtA8/BrOlO32xMzigqEYwi6rQM1atejctr+w0/KIuP9eguDwKpxI4caWEO6TXcymf1eUqQtJPLjnQ2S3o3Rsmw9+NJR7YJyFl2rEiuMPEKpPBUilOxvgtNcRuLuTJrCXPyzomEsyQImnOBiG8/g0vl/ybLEr7MSgx+acr4PRlIMv28yMW8VknbfPPJLDquiyb6CwvRu+GKz3tECjs4NIjx+JEIBrl7iRh53gnuSsOaxIpmGjPLjJstCykb2UhZmROI/BnkyRaY+gmzGA1P7loHj0va8M6hW+4OBNsaTXRZ0I3R2SfMO1g5DJ7YzECcG0aAOZuxwdMarwF2mltCBhiRgqOYZsNJGXgD7JmPRbHbhYUUW3LE/tpsBFtamEcr2FKHjlilxmTZuwbBWU5afJ3AmtkdN9sznCkblhzdWOaeF5hDHuDZqZ/+GQwfCV9RXQOf9N303h5c6h673B5dy17UnW7eI9yEXz0cId/IUCMcQpCGnLXRbB2rEcmdX1K5H5WSHJ9i0/YefBNTnotVDtyBlatcdtRB3WgU5F2cV5TfVpcxX6HW296/Fn5eS2+gV6WvBddS7u9WTC5K1rhtOlRyrZ/Uhex1VZss0NVsao2XZqooF5HrwpaPK2cWe2gXlLGoshRG6ViVWCn9Fa1l/9YnpVpW0OSw184kFVc6Z2XV8KfAVQfmKtQZJo9U7mDSFuSgd5YT4Z0XDSE4l/liSBUzou2VxOMHFNojopQvfx9Qob+60Fb+UFFIPvXRvH2FU3a9INOB/MpSnzxv0mh6MpBiupcQlft9kYs72BF/eKiTtbgNE0L555JcOUISqXVA0SO15VHU9A/QyjSqUD532tL0t39SA/aV0x02MFPqcG0R4LDIkRfxIhAJMYeQ/XL3EjeyUpLA87gT3jMdkygAAAACl01zLC6HITa5ylIYWQpGbs5HNUB3jWda4MAUdbYJT7MhRDydmI5uhw/DHanvAwnfeE568cGEKOtWyVvGbAtYDPtGKyJCjHk41cEKFjUBHmCiTG1OG4Y/VIzLTHvaAhe9TU9kk/SFNoljyEWngwhR0RRFIv+tj3DlOsIDyNgWsB5PW8Mw9pGRKmHc4gSBHPZyFlGFXK+b10Y41qRpbh//r/lSjIFAmN6b19WttTcVucOgWMrtGZKY947f69q0HegQI1CbPpqaySQN17oK7ReufHpa3VLDkI9IVN38ZwIUp6GVWdSPLJOGlbve9btbHuHNzFOS43WZwPni1LPVsClgPydkExGerkELCeMyJekjJlN+blV9x6QHZ1DpdEgGIC+OkW1coCinDrq/6n2UXypp4shnGsxxrUjW5uA7+9wiODFLb0sf8qUZBWXoaiuFKH5dEmUNc6uvX2k84ixGait3gP1mBK5ErFa00+ElmjMhMeykbELCHaYQ2IrrY/VoP9Aj/3KjDUa48RfR9YI5MTWWT6Z45WEfsrd7iP/EVN42n5JJe+y88LG+pmf8zYiHPNn+EHGq0Km7+Mo+9ovnBDSILZN5+wMqs6kZvf7aN10+zkHKc71vc7nvdeT0nFqyPcecJXC0spy65qgL95WG6zeB8Hx68t7FsKDEUv3T62BSwHn3H7NXTtXhTdmYkmM5WIYVrhX1OxffpyGAktQO1luPyEEW/Ob43K78b5Hd0o9RyaQYHLqKodbokDabm70MWZh3mxTrWSLeuUO1k8ptVVPeG8IerTV71P8v7JmMALpQ18YtHaTolNf28gOahdzjWpGqdBfihM3dsJ5akMOzuERwZS8JA0uWw1FRAY4if+FONgl2A0Unz8kXPViEZBIOTT/UmQBM+iDKHuC3h23OV0d5uMAKCpZ5wFiM7o0rodRPKGtDAltF+sgJX22FenGNRW4HGggdKaPCTzM0jzwcYkZn2vULFPRMwUbu24w1wDtMIbasAVKYFcsAgoKGc67Qe6BERzbTav78gXBpsfJeiXHmKB48lQan9sccMLu0M2Zy7/XxP5zbSPXOwd+4ve8/eKmZqDXatxH/iK2GsvuAvHD4Sis9i2SS99l+BbqqUOV6viZyN80Iy/2fElyw7D0Kebf7nTTE1ST+ls+zs+XhU3Pxl8Q+grl99NCj6rmjjghtEFifIGN2JuoxbLGnQkJRZ1Y0xiolGn/gdwDorQQvvmRf6SkpLMeQ437dB64N8+duGYVwI2qryek4sV6kS5xkZkhW8ys7eErhaWLdrBpMPWwOOqohfRQT6y8OhKZcIdJvB+dFInTJ/Ogm02ulVf2LZUGLHCgypaXiYL8yrxOQAAAAAtAt3pikRn5edGugxEyRP9KcvOFI6NdBjjj6nxWdO7zPTRZiVTl9wpPpUBwJ0aqDHwGHXYV17P1DpcEj2zpzeZ3qXqcHnjUHwU4Y2Vt24kZNps+Y19KkOBECieaKp0jFUHdlG8oDDrsM0yNlluvZ+oA79CQaT5+E3J+yWkZw5vc8oMspptSgiWAEjVf6PHfI7OxaFnaYMbawSBxoK+3dS/E98JVrSZs1rZm26zehTHQhcWGquwUKCn3VJ9TlSpWOo5q4UDnu0/D/Pv4uZQYEsXPWKW/pokLPL3JvEbTXrjJuB4Ps9HPoTDKjxZKomz8NvksS0yQ/eXPi71SteeXULRM1+fOJQZJTT5G/jdWpRRLDeWjMWQ0DbJ/dLrIEeO+R3qjCT0Tcqe+CDIQxGDR+rg7kU3CUkDjQUkAVDsrfp1SMD4qKFnvhKtCrzPRKkzZrXEMbtcY3cBUA513Lm0Kc6EGSsTbb5tqWHTb3SIcODdeR3iAJC6pLqc16ZndXlTLaLUUfBLcxdKRx4Vl669mj5f0JjjtnfeWboa3IRToICWbg2CS4eqxPGLx8YsYmRJhZMJS1h6rg3idsMPP59K9Bo7J/bH0oCwfd7tsqA3Tj0JxiM/1C+EeW4j6XuzylMnoff+JXweWWPGEjRhG/uX7rIK+uxv412q1e8wqAgGvLqFohG4WEu2/uJH2/w/rnhzll8VcUu2sjfxut81LFNlaT5uyGvjh28tWYsCL4RioaAtk8yi8Hpr5Ep2BuaXn48dsjviH2/SRVnV3ihbCDeL1KHG5tZ8L0GQxiMskhvKls4J9zvM1B6cim4S8Yiz+1IHGgo/BcfjmEN97/VBoAZbtOrR9rY3OFHwjTQ88lDdn335LPJ/JMVVOZ7JODtDIIJnUR0vZYz0iCM2+OUh6xFGrkLgK6yfCYzqJQXh6PjsaBPdSAURAKGiV7qtz1VnRGzazrUB2BNcpp6pUMucdLlxwGaE3MK7bXuEAWEWhtyItQl1edgLqJB/TRKcEk/PdaLnx3MP5RqaqKOglsWhfX9mLtSOCywJZ6xqs2vBaG6CezR8v9Y2oVZxcBtaHHLGs7/9b0LS/7KrdbkIpxi71U6RQPDq/EItA1sElw82BkrmlYnjF/iLPv5fzYTyMs9ZG4iTSyYlkZbPgtcsw+/V8SpMWljbIViFMoYePz7rHOLXRemoAOjrdelPrc/lIq8SDIEgu/3sImYUS2TcGCZmAfGcOhPMMTjOJZZ+dCn7fKnAWPMAMTXx3diSt2fU/7W6PXZOn5kbTEJwvAr4fNEIJZVyh4xkH4VRjbjD64HVwTZob50kVcKf+bxl2UOwCNueWatUN6jGVupBYRBQTQwSjaSAAAAAJ4Aqsx9ByVC4wePjvoOSoRkDuBIhwlvxhkJxQq1G+XTKxtPH8gcwJFWHGpdTxWvV9EVBZsyEooVrBIg2Ssxu3y1MRGwVjaePsg2NPLRP/H4Tz9bNKw41LoyOH52niperwAq9GPjLXvtfS3RIWQkFCv6JL7nGSMxaYcjm6VWYnb5yGLcNStlU7u1Zfl3rGw8fTJslrHRaxk/T2uz8+N5kyp9eTnmnn62aAB+HKQZd9muh3dzYmRw/Oz6cFYgfVPNheNTZ0kAVOjHnlRCC4ddhwEZXS3N+lqiQ2RaCI/ISChWVkiCmrVPDRQrT6fYMkZi0qxGyB5PQUeQ0UHtXO3CnSlzwjflkMW4aw7FEqcXzNeticx9YWrL8u/0y1gjWNl4+sbZ0jYl3l24u973dKLXMn4815iy39AXPEHQvfDG8yZVWPOMmbv0Axcl9KnbPP1s0aL9xh1B+kmT3/rjX3Pow4bt6GlKDu/mxJDvTAiJ5okCF+YjzvThrEBq4QaMu6Dr0CWgQRzGp86SWKdkXkGuoVTfrguYPKmEFqKpLtoOuw4DkLukz3O8K0HtvIGN9LVEh2q17kuJsmHFF7LLCZCRUKwOkfpg7ZZ17nOW3yJqnxoo9J+w5BeYP2qJmJWmJYq1f7uKH7NYjZA9xo068d+E//tBhFU3ooPauTyDcHXahTtTRIWRn6eCHhE5grTdIItx176L2xtdjFSVw4z+WW+e3oDxnnRMEpn7woyZUQ6VkJQEC5A+yOiXsUZ2lxuK8bSAL2+0KuOMs6VtErMPoQu6yquVumBndr3v6ei9RSVEr2X82q/PMDmoQL6nqOpyvqEveCChhbTDpgo6Xaag9oznTaoS5+dm8eBo6G/gwiR26Qcu6Omt4gvuImyV7oigOfyoeaf8ArVE+4072vsn98Py4v1d8kgxvvXHvyD1bXOn1vbWOdZcGtrR05RE0XlYXdi8UsPYFp4g35kQvt8z3BLNEwWMzbnJb8o2R/HKnIvow1mBdsPzTZXEfMMLxNYPN0emeqlHDLZKQIM41EAp9M1J7P5TSUYysE7JvC5OY3CCXEOpHFzpZf9bZuthW8wneFIJLeZSo+EFVSxvm1WGoxx2HQaCdrfKYXE4RP9xkojmeFeCeHj9Tpt/csAFf9gMqW341TdtUhnUat2XSmp3W1NjslHNYxidLmSXE7BkPd9hJdCD/yV6Txwi9cGCIl8NmyuaBwUrMMvmLL9FeCwVidQ+NVBKPp+cqTkQEjc5ut4uMH/UsDDVGFM3WpbNN/BaShRr/9QUwTM3E069qRPkcbAaIXsuGou3zR0EOVMdrvX/D44sYQ8k4IIIq24cCAGiBQHEqJsBbmR4BuHq5gZLJgAAAABDFHsXhij2LsU8jTkMUexdT0WXSop5GnPJbWFkGKLYu1u2o6yeii6V3Z5VghTzNOZX50/xktvCyNHPud9xQsCsMla7u/dqNoK0fk2VfRMs8T4HV+b7O9rfuC+hyGngGBcq9GMA78juOazclS5lsfRKJqWPXeOZAmSgjXlzo4LxguCWipUlqgesZr58u6/THd/sx2bIKfvr8WrvkOa7ICk5+DRSLj0I3xd+HKQAt3HFZPRlvnMxWTNKck1IXdLAMS6R1Eo5VOjHABf8vBfekd1znYWmZFi5K10brVBKymLplYl2koJMSh+7D15krMYzBciFJ37fQBvz5gMPiPEHA5LeRBfpyYErZPDCPx/nC1J+g0hGBZSNeoitzm7zuh+hSmVctTFymYm8S9qdx1wT8KY4UOTdL5XYUBbWzCsBdkFScjVVKWXwaaRcs33fS3oQvi85BMU4/DhIAb8sMxZu44rJLffx3ujLfOer3wfwYrJmlCGmHYPkmpC6p47rraSBY1znlRhLIqmVcmG97mWo0I8B68T0Fi74eS9t7AI4vCO75/83wPA6C03JeR823rByV7rzZiytNlqhlHVO2oPVw6PwltfY51PrVd4Q/y7J2ZJPrZqGNLpfurmDHK7ClM1he0uOdQBcS0mNZQhd9nLBMJcWgiTsAUcYYTgEDBovTwBVZgwULnHJKKNIijzYX0NRuTsARcIsxXlPFYZtNAJXoo3dFLb2ytGKe/OSngDkW/NhgBjnGpfd25euns/suT5Clcp9Vu7duGpj5Pt+GPMyE3mXcQcCgLQ7j7n3L/SuJuBNcWX0NmagyLtf49zASCqxoSxppdo7rJlXAu+NLBXsgqTkr5bf82qqUsopvind4NNIuaPHM65m+76XJe/FgPQgfF+3NAdIcgiKcTEc8Wb4cZACu2XrFX5ZZiw9TR07ncBkSN7UH18b6JJmWPzpcZGRiBXShfMCF7l+O1StBSyFYrzzxnbH5ANKSt1AXjHKiTNQrsonK7kPG6aATA/dl0gDx7gLF7yvzisxlo0/SoFEUivlB0ZQ8sJ63cuBbqbcUKEfAxO1ZBTWiektlZ2SOlzw814f5IhJ2tgFcJnMfmc5QQcUelV8A79p8Tr8fYotNRDrSXYEkF6zOB1n8CxmcCHj369i96S4p8spgeTfUpYtsjPybqZI5auaxdzojr7L64E2OqiVTS1tqcAULr27A+fQ2mekxKFwYfgsSSLsV17zI+6BsDeVlnULGK82H2O4/3IC3Lxmect5WvTyOk6P5ZrD9pbZ142BHOsAuF//e6+WkhrL1YZh3BC67OVTrpfygmEuLcF1VToESdgDR12jFI4wwnDNJLlnCBg0XksMT0kAAAAAPmvC7z3Q9QQDuzfreqDrCUTLKeZHcB4NeRvc4vRA1xPKKxX8yZAiF/f74PiO4DwasIv+9bMwyR6NWwvx6IGuJ9bqbMjVUVsj6zqZzJIhRS6sSofBr/GwKpGacsUcwXk0Iqq72yERjDAfek7fZmGSPVgKUNJbsWc5Zdql1tADXU/uaJ+g7dOoS9O4aqSqo7ZGlMh0qZdzQ0KpGIGtJEOKXBooSLMZk39YJ/i9t17jYVVgiKO6YzOUUV1YVr44gvNoBukxhwVSBmw7OcSDQiIYYXxJ2o5/8u1lQZkviszCJHvyqeaU8RLRf895E5C2Ys9yiAkNnYuyOna12fiZoAe6np5seHGd10+ao7yNddqnUZfkzJN453ekk9kcZnxUR22NaiyvYmmXmIlX/FpmLueGhBCMRGsTN3OALVyxb0iGFLl27dZWdVbhvUs9I1IyJv+wDE09Xw/2CrQxnchbvMbDqoKtAUWBFjauv330QcZmKKP4DepM+7bdp8XdH0hwBOfRTm8lPk3UEtVzv9A6CqQM2DTPzjc3dPncCR87M4REMMK6L/ItuZTFxof/Byn+5NvLwI8ZJMM0Ls/9X+wgmIVJ9qbuixmlVbzymz5+HeIlov/cTmAQ3/VX++GelRRsxZ7lUq5cClEVa+FvfqkOFmV17CgOtwMrtYDoFd5CBwEJBeY/YscJPNnw4gKyMg17qe7vRcIsAEZ5G+t4EtkE9UnS9csiEBrImSfx9vLlHo/pOfyxgvsTsjnM+IxSDhfpiKvB1+NpLtRYXsXqM5wqkyhAyK1Dgieu+LXMkJN3Ix3IfNIjo749IBiJ1h5zSzlnaJfbWQNVNFq4Yt9k06Aw0QpYqe9hmkbs2q2t0rFvQquqs6CVwXFPlnpGpKgRhEslSo+6GyFNVRiaer4m8bhRX+pks2GBplxiOpG3XFFTWDmL9o4H4DRhBFsDijowwWVDKx2HfUDfaH776INAkCpszcshnfOg43LwG9SZznAWdrdrypSJAAh7irs/kLTQ/X+hDr94n2V9l5zeSnyitYiT265UceXFlp7mfqF12BVjmlVOaGtrJaqEaJ6db1b1X4Av7oNiEYVBjRI+dmYsVbSJSY8RX3fk07B0X+RbSjQmtDMv+lYNRDi5Dv8PUjCUzb29z8ZMg6QEo4AfM0i+dPGnx28tRfkE76r6v9hBxNQarnEN4jdPZiDYTN0XM3K21dwLrQk+NcbL0TZ9/DoIFj7VhU01JLsm98u4ncAghvYCz//t3i3BhhzCwj0rKfxW6caZjEwQp+eO/6RcuRSaN3v74yynGd1HZfbe/FId4JeQ8m3MmwNTp1nsUBxuB253rOgXbHAKKQey5Sq8hQ4U10fhAAAAAMDfjsHBuWxYAWbimYJz2bBCrFdxQ8q16IMVOylF4cO6hT5Ne4RYr+JEhyEjx5IaCgdNlMsGK3ZSxvT4k8vE9q4LG3hvCn2a9sqiFDdJty8eiWih34gOQ0ZI0c2HjiU1FE76u9VPnFlMj0PXjQxW7KTMiWJlze+A/A0wDj3Xj5yGF1ASRxY28N7W6X4fVfxFNpUjy/eURSluVJqnr5JuXzxSsdH9U9czZJMIvaUQHYaM0MIITdGk6tQRe2QVHEtqKNyU5Ond8gZwHS2IsZ44s5he5z1ZX4HfwJ9eUQFZqqmSmXUnU5gTxcpYzEsL29lwIhsG/uMaYBx62r+Su+8ZSNYvxsYXLqAkju5/qk9tapFmrbUfp6zT/T5sDHP/qviLbGonBa1rQec0q55p9SiLUtzoVNwd6TI+hCntsEUk3b545AIwueVk0iAlu1zhpq5nyGZx6QlnFwuQp8iFUWE8fcKh4/MDoIURmmBan1vjT6RyI5AqsyL2yCriKUbrOJbUUPhJWpH5L7gIOfA2ybrlDeB6OoMhe1xhuLuD73l9dxfqvaiZK7zOe7J8EfVz/wTOWj/bQJs+vaIC/mIsw/NSIv4zjaw/MutOpvI0wGdxIftOsf51j7CYlxZwRxnXtrPhRHZsb4V3Co0ct9UD3TTAOPT0H7Y19XlUrDWm2m2fNeF3X+pvtl6MjS+eUwPuHUY4x92Ztgbc/1SfHCDaXtrUIs0aC6wMG21OlduywFRYp/t9mHh1vJkelyVZwRnkVPEX2ZQumRiVSHuBVZf1QNaCzmkWXUCoFzuiMdfkLPARENRj0c9aotCpuDsQdjb6k2MN01O8gxJS2mGLkgXvSki6ffGIZfMwiQMRqUncn2jKyaRBChYqgAtwyBnLr0bYDVu+S82EMIrM4tITDD1c0o8oZ/tP9+k6TpELo45OhWKDfotfQ6EFnkLH5weCGGnGAQ1S78HS3C7AtD63AGuwdsafSOUGQMYkByYkvcf5qnxE7JFVhDMflIVV/Q1FinPMcCypobDzJ2CxlcX5cUpLOPJfcBEygP7QM+YcSfM5kog1zWob9RLk2vR0BkM0q4iCt76zq3dhPWp2B9/ztthRMrvoXw97N9HOelEzV7qOvZY5m4a/+UQIfvgi6uc4/WQm/gmctT7WEnQ/sPDt/29+LHx6RQW8pcvEvcMpXX0cp5ynozUnZ3y75mYaWX+mxde+JdDsl+UPYlbkaYDPJLYODuJC9p0inXhcI/uaxeMkFARgMS8toO6h7KGIQ3VhV820bGfDiay4TUit3q/RbQEhEO4UGjkuy5T4L612Ye9y+KAphgAz6VmO8ug/bGso4OKqq/XZg2sqV0JqTLXbqpM7GgAAAABvTKWbn5477PDSnnd/OwYDEHejmOClPe+P6Zh0/nYMBpE6qZ1h6DfqDqSScYFNCgXuAa+eHtMx6XGflHL87RgMk6G9l2NzI+AMP4Z7g9YeD+yau5QcSCXjcwSAeAKbFApt17GRnQUv5vJJin19oBIJEuy3kuI+KeWNcox++NsxGJeXlINnRQr0CAmvb4fgNxvorJKAGH4M93cyqWwGrT0eaeGYhZkzBvL2f6NpeZY7HRbanobmCADxiUSlagQ2KRRreoyPm6gS+PTkt2N7DS8XFEGKjOSTFPuL37Fg+kAlEpUMgIll3h7+CpK7ZYV7IxHqN4aKGuUY/XWpvWbwt2Mwn/vGq28pWNwAZf1Hj4xlM+DAwKgQEl7ff177RA7BbzZhjcqtkV9U2v4T8UFx+mk1HrbMru5kUtmBKPdCDFp7PGMW3qeTxEDQ/IjlS3NhfT8cLdik7P9G04Oz40jyLHc6nWDSoW2yTNYC/ulNjRdxOeJb1KISiUrVfcXvTghsUihnIPezl/JpxPi+zF93V1QrGBvxsOjJb8eHhcpc9hpeLplW+7VphGXCBsjAWYkhWC3mbf22Fr9jwXnzxlr0gUokm83vv2sfccgEU9RTi7pMJ+T26bwUJHfLe2jSUAr3RiJlu+O5lWl9zvol2FV1zEAhGoDluupSe82FHt5W4G/HYI8jYvt/8fyMEL1ZF59UwWPwGGT4AMr6j2+GXxQeGctmcVVu/YGH8Iruy1URYSLNZQ5uaP7+vPaJkfBTEhyC32xzznr3gxzkgOxQQRtjudlvDPV89Pwn4oOTa0cY4vTTao24dvF9auiGEiZNHZ3P1Wnyg3DyAlHuhW0dSx4YtPZ4d/hT44cqzZToZmgPZ4/wewjDVeD4EcuXl11uDObC+n6Jjl/leVzBkhYQZAmZ+fx99rVZ5gZnx5FpK2IK5FnudIsVS+97x9WYFItwA5ti6Hf0Lk3sBPzTm2uwdgAaL+JydWNH6YWx2Z7q/XwFZRTkcQpYQer6it+dlcZ6BhDYpFB/lAHLj0afvOAKOidv46JTAK8HyPB9mb+fMTwk7q6oVoHiDc1xMJO6Hnw2IZGVrlX+2QvODguVuWFHMCLsNbxcg3kZx3Orh7Ac5yIrkw66X/xCH8QMkIGzY9wkKBJDsFp9DxXBjd2LtuKRLi1teLZZAjQTwvLmjbWdqigu6AOVSIdPMNN3na6kGNELP5c4k0v4dDbQCKaop2fqDTwWdZlOeTk81YnroqLmpwc5aU6fTQYCOtb20KShmZwBOhTujUR7oijfi3C2qOQ8EzNr1YtHBJku3PRLsKubBxUw6piBQoXUJNl1BrquGkofNZWjh0H67yLaCj28rWVxGTYAAAAAhdmW3Uu1XGDObMq9lmq5wBOzLx3d3+WgWAZzfW3TA1roCpWHJmZfOqO/yef7ubqafmAsR7AM5vo11XAn2qYHtF9/kWmRE1vUFMrNCUzMvnTJFSipB3niFIKgdMm3dQTuMqySM/zAWI55Gc5TIR+9LqTGK/NqquFO73N3k/VLfrNwkuhuvv4i0zsntA5jIcdz5vhRriiUmxOtTQ3OmJh96R1B6zTTLSGJVvS3VA7yxCmLK1L0RUeYScCeDpQv7XkHqjTv2mRYJWfhgbO6uYfAxzxeVhryMpynd+sKekI+el3H5+yACYsmPYxSsODUVMOdUY1VQJ/hn/0aOAkgq5GNvS5IG2DgJNHdZf1HAD37NH24IqKgdk5oHfOX/sDGQo7nQ5sYOo330ocILkRaUCg3J9XxofobnWtHnkT9mnE3ign07hzUOoLWab9bQLTnXTPJYoSlFKzob6kpMfl0HOSJU5k9H45XUdUz0ohD7oqOMJMPV6ZOwTts80Ti+i5e2vMO2wNl0xVvr26QtjmzyLBKzk1p3BODBRauBtyAczMJ8FS20GaJeLysNP1lOumlY0mUILrfSe7WFfRrD4MphHz0ugGlYmfPyajaShA+BxIWTXqXz9unWaMRGtx6h8fpr/fgbHZhPaIaq4Anwz1df8VOIPoc2P00cBJAsamEnRclaqCS/Px9XJA2wNlJoB2BT9NgBJZFvcr6jwBPIxndevZp+v8v/ycxQzWatJqjR+yc0DppRUbnpymMWiLwGofNg20USFr7yYY2MXQD76epW+nU1N4wQgkQXIi0lYUeaaBQbk4lifiT6+UyLm48pPM2OteOs+NBU32Pi+74Vh0z4m4UE2e3gs6p20hzLALernQErdPx3TsOP7Hxs7poZ26PvRdJCmSBlMQISylB0d30GdeuiZwOOFRSYvLp17tkNDjIE6e9EYV6c31Px/ak2RquoqpnK3s8uuUX9gdgzmDaVRsQ/dDChiAerkydm3faQMNxqT1GqD/giMT1XQ0dY4C8tOcdOW1xwPcBu31y2C2gKt5e3a8HyABhawK95LKUYNFn5EdUvnKamtK4Jx8LLvpHDV2HwtTLWgy4AeeJYZc6ZhLgqePLdnQtp7zJqH4qFPB4WWl1oc+0u80FCT4Uk9QLwePzjhh1LkB0v5PFrSlOnataMxhyzO7WHgZTU8eQjkn/ma7MJg9zAkrFzoeTUxPflSBuWky2s5QgfA4R+erTJCya9KH1DClvmcaU6kBQSbJGIzQ3n7Xp+fN/VHwq6YmTWZ4aFoAIx9jswnpdNVSnBTMn2oDqsQdOhnu6y1/tZ/6KnUB7UwudtT/BIDDmV/1o4CSA7TmyXSNVeOCmjO49AAAAAHbhD52txG7h2yVhfBuPrBltbqOEtkvC+MCqzWU2HlkzQP9WrpvaN9LtOzhPLZH1Kltw+reAVZvL9rSUVmw8smYa3b37wfjch7cZ0xp3sx5/AVIR4tp3cJ6sln8DWiLrVSzD5Mj35oW0gQeKKUGtR0w3TEjR7GkprZqIJjDYeGTNrplrUHW8CiwDXQWxw/fI1LUWx0luM6Y1GNKpqO5mPf6YhzJjQ6JTHzVDXIL16ZHngwieelgt/wYuzPCbtETWq8Kl2TYZgLhKb2G316/LerLZKnUvAg8UU3TuG86CWo+Y9LuABS+e4XlZf+7kmdUjge80LBw0EU1gQvBC/fH3uUGHFrbcXDPXoCrS2D3qeBVYnJkaxUe8e7kxXXQkx+ngcrEI7+9qLY6THMyBDtxmTGuqh0P2caIiigdDLRedywsn6yoEujAPZcZG7mpbhkSnPvClqKMrgMnfXWHGQqvVUhTdNF2JBhE89XDwM2iwWv4NxrvxkB2ekOxrf59xKY/djF9u0hGES7Nt8qq88DIAcZVE4X4In8QfdOklEOkfkYS/aXCLIrJV6l7EtOXDBB4opnL/Jzup2kZH3ztJ2kWzb+ozUmB36HcBC56WDpZePMPzKN3MbvP4rRKFGaKPc6022QVMOUTeaVg4qIhXpWgimsAew5Vdxeb0IbMH+7zi73ODlA58Hk8rHWI5yhL/+WDfmo+B0AdUpLF7IkW+5tTxKrCiECUteTVEUQ/US8zPfoapuZ+JNGK66EgUW+fVjtPB5fgyzngjF68EVfagmZVcbfzjvWJhOJgDHU55DIC4zZjWziyXSxUJ9jdj6Pmqo0I0z9WjO1IOhloueGdVszqXF05MdhjTl1N5r+GydjIhGLtXV/m0yozc1bb6PdorDIlOfXpoQeChTSCc16wvARcG4mRh5+35usKMhcwjgxhWq6UoIEqqtftvy8mNjsRUTSQJMTvFBqzg4GfQlgFoTWC1/BsWVPOGzXGS+ruQnWd7OlACDdtfn9b+PuOgHzF+ExjKwmX5xV++3KQjyD2rvgiXZtt+dmlGpVMIOtOyB6clBpPxU+ecbIjC/RD+I/KNPok/6EhoMHWTTVEJ5axelH8keKQJxXc50uAWRaQBGdhkq9S9EkrbIMlvuly/jrXBSTohlz/bLgrk/k92kh9A61K1jY4kVIIT/3Hjb4mQ7PLLYK4PvYGhkmakwO4QRc9z0O8CFqYODYt9K2z3C8pjav1+9zyLn/ihULqZ3SZblkDm8VslkBBUuEs1NcQ91DpZp1wcadG9E/QKmHKIfHl9FbzTsHDKMr/tERfekWf20QyRQkVa56NKxzyGK7tKZyQmis3pQ/ws5t4nCYeiUeiIPwAAAADo2/u5kbGGqHlqfRFjZXyKi76HM/LU+iIaDwGbh8yJz28XcnYWfQ9n/qb03uSp9UUMcg78dRhz7Z3DiFRPn2JEp0SZ/d4u5Ow29R9VLPoezsQh5Xe9S5hmVZBj38hT64sgiBAyWeJtI7E5lpqrNpcBQ+1suDqHEanSXOoQnj7FiHblPjEPj0Mg51S4mf1buQIVgEK7bOo/qoQxxBMZ8kxH8Sm3/ohDyu9gmDFWepcwzZJMy3TrJrZlA/1N3NGhp8w5elx1QBAhZKjL2t2yxNtGWh8g/yN1Xe7LrqZXVm0uA7621brH3KirLwdTEjUIUond06kwpLnUIUxiL5h9e/vKlaAAc+zKfWIEEYbbHh6HQPbFfPmPrwHoZ3T6Ufq3cgUSbIm8awb0rYPdDxSZ0g6PcQn1NghjiCfguHOeMuSZjto/YjejVR8mS47kn1GB5QS5Wh69wDBjrCjrmBW1KBBBXfPr+CSZlunMQm1Q1k1syz6Wl3JH/OpjrycR2uNFPkILnsX7cvS46povQ1OAIELIaPu5cRGRxGD5Sj/ZZIm3jYxSTDT1ODElHePKnAfsywfvNzC+ll1Nr36Gthas2lwGRAGnvz1r2q7VsCEXz78gjCdk2zVeDqYkttVdnSsW1cnDzS5wuqdTYVJ8qNhIc6lDoKhS+tnCL+sxGdRSu/CHTlMrfPcqQQHmwpr6X9iV+8QwTgB9SSR9bKH/htU8PA6B1Of1OK2NiClFVnOQX1lyC7eCibLO6PSjJjMPGvRv5QoctB6zZd5joo0FmBuXCpmAf9FiOQa7HyjuYOSRc6NsxZt4l3ziEuptCskR1BDGEE/4Hev2gXeW52msbV4lzkLGzRW5f7R/xG5cpD/XRqs+TK5wxfXXGrjkP8FDXaICywlK2TCwM7NNodtothjBZ7eDKbxMOlDWMSu4DcqSalEggoKK2zv74KYqEztdkwk0XAjh76exmIXaoHBeIRntnalNBUZS9HwsL+WU99RcjvjVx2YjLn4fSVNv95Ko1saLfIQuUIc9Vzr6LL/hAZWl7gAOTTX7tzRfhqbchH0fQUf1S6mcDvLQ9nPjOC2IWiIiicHK+XJ4s5MPaVtI9NCJFB7AYc/leRilmGjwfmPR6nFiSgKqmfN7wOTikxsfWw7Ylw/mA2y2n2kRp3ey6h5tveuFhWYQPPwMbS0U15aUWLW5DLBuQrXJBD+kId/EHTvQxYbTCz4/qmFDLkK6uJffeTDDN6LLek7ItmumE03SvBxMSVTHt/AtrcrhxXYxWBcq20j/8SDxhptd4G5Apll0T6fCnJRce+X+IWoNJdrTkOZSh3g9qT4BV9Qv6YwvlvODLg0bWNW0YjKopYrpUxwAAAAAkZFormMloIfytMgph0wx1BbdWXrkaZFTdfj5/U+fE3PeDnvdLLqz9L0r21rI0yKnWUJKCav2giA6Z+qOnj4n5g+vT0j9G4dhbIrvzxlyFjKI436cele2tevG3hvRoTSVQDBcO7KElBIjFfy8Vu0FQcd8be81yKXGpFnNaH17Pxfs6le5Hl6fkI/P9z76Nw7Da6ZmbZkSrkQIg8bqMuQsZKN1RMpRwYzjwFDkTbWoHbAkOXUe1o29N0cc1ZnjRRjxctRwX4BguHYR8dDYZAkpJfWYQYsHLImilr3hDKzaC4I9S2Msz/+rBV5uw6srljpWugdS+EizmtHZIvJ/+vZ+LmtnFoCZ096pCEK2B326T/rsKydUHp/vfY8Oh9O1aW1dJPgF89ZMzdpH3aV0MiVciaO0NCdRAPwOwJGUoGTIWcj1WTFmB+35T5Z8keHjhGgcchUAsoChyJsRMKA1K1dKu7rGIhVIcuo82eOCkqwbe289ihPBzz7b6F6vs0aHjUE5Fhwpl+So4b51OYkQAMFw7ZFQGENj5NBq8nW4xMgSUkpZgzrkqzfyzTqmmmNPXmOe3s8LMCx7wxm96qu3GbNm34giDnF6lsZY6weu9p7/VwsPbj+l/dr3jGxLnyJWLHWsx70dAjUJ1SukmL2F0WBEeEDxLNayReT/I9SMUfTt/VxlfJXyl8hd2wZZNXVzocyI4jCkJhCEbA+BFQShu3LuLyrjhoHYV06oScYmBjw+3/utr7dVXxt/fM6KF9Jq09q6+0KyFAn2ej2YZxKT7Z/rbnwOg8COukvpHysjRyVMycm03aFnRmlpTtf4AeCiAPgdM5GQs8ElWJpQtDA0iZbCSxgHquXqs2LMeyIKYg7a85+fS5sxbf9TGPxuO7bGCdE4V5i5lqUscb80vRkRQUXg7NDUiEIiYEBrs/EoxReo5a2GOY0DdI1FKuUcLYSQ5NR5AXW81/PBdP5iUBxQWDf23smmnnA7ElZZqoM+9997xwpO6q+kvF5njS3PDyMOG4Nyn4rr3G0+I/X8r0tbiVeyphjG2gjqchIhe+N6j0GEkAHQFfivIqEwhrMwWCjGyKHVV1nJe6XtAVI0fGn8kCWklAG0zDrzAAQTYpFsvRdplUCG+P3udEw1x+XdXWnfurfnTivfSbyfF2AtDn/OWPaGM8ln7p070ya0qkJOGnNgvGXi8dTLEEUc4oHUdEz0LI2xZb3lH5cJLTYGmEWYPP+vFq1ux7hf2g+RzktnP7uznsIqIvZs2JY+RUkHVuvtXpuDfM/zLY57OwQf6lOqahKqV/uDwvkJNwrQmKZifqLBiPAzUOBeweQod1B1QNkljbkktBzRikaoGaPXOXENEQYQAGQAAACgAAAAHAAAAACBAAAAgQEAAIECAACBAwAAgQQAAIEFAACBBgAAgQcAAIEIAACBCQAAgQoAAIELAACBDAAAgQ0AAIEOAACBDwAAgRAAAIERAACBEgAAgRMAAIEUAACBFQAAgRYAAIEXAACBGAAAgRkAAIEaAACBGwAAgRwAAIEdAACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEAADEAAAABJxAAKgAAADQBAABHAAAAAScQACoAAAAxAQAAFgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHN0cjo6ZnJvbV91dGY4KCkgPSAgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgIGNoYXJzIHdlcmUgZm91bmRMWBEAOQAAAIVYEQAEAAAAiVgRACIAAACrWBEAEQAAAAEnEAAqAAAAXAEAABoAAABib29sc3RyaThpMTZpMzJpNjRpMTI4aXNpemV1MTZ1MTI4ZjY0IV8uLi4AAAEnEAAqAAAAigAAAA0AAAABJxAAKgAAAL8BAAAfAAAAAScQACoAAAAeAgAAHgAAAAEnEAAqAAAAIwIAACIAAAABJxAAKgAAACQCAAAlAAAAW117aW52YWxpZCBzeW50YXh9e3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkfT86Ojo6e2Nsb3N1cmVzaGltI308IGFzID4mIG11dCAqY29uc3QgOyAoLGR5biAgaXMgQ3Vuc2FmZSBleHRlcm4gIgAAAAEnEAAqAAAA1AMAAC0AAAAiIC1mbiggLT4gZmFsc2V0cnVleyB7ICB9ID0gMHgAAAEnEAAqAAAA7QQAAC0AQaC0xQAL4AcBAAAAxwEAAGBmbXQ6OkVycm9yYHMgc2hvdWxkIGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAAABJxAAKgAAAIcCAAARAAAAJ2Zvcjw+IC4uPSB8ICFudWxsX19SAAAAAScQACoAAAAyAAAAEwAAAAEnEAAqAAAALwAAABMAAAABJxAAKgAAACsAAAATAAAAAScQACoAAABLAAAADgAAAAEnEAAqAAAAWgAAACgAAAASARAALgAAAGYAAAAcAAAAX1pOABIBEAAuAAAAPQAAAAsAAAASARAALgAAADoAAAALAAAAEgEQAC4AAAA2AAAACwAAAC5sbHZtLgAAmSMQACsAAABiAAAAGwAAAJkjEAArAAAAaQAAABMAAACjERAAUAAAAKYAAAAFAAAAMDEyMzQ1Njc4OWFiY2RlZgAAAAAAAAAAAQAAAMgBAAB7c2l6ZSBsaW1pdCByZWFjaGVkfQAAAAAAAAAAAQAAAMkBAABgZm10OjpFcnJvcmAgZnJvbSBgU2l6ZUxpbWl0ZWRGbXRBZGFwdGVyYCB3YXMgZGlzY2FyZGVkAJkjEAArAAAAUwEAAB4AAABwdW55Y29kZXsAAAAAAAAABAAAAAQAAADKAQAAU2l6ZUxpbWl0RXhoYXVzdGVkAAASARAALgAAAG8AAAAnAAAAEgEQAC4AAABwAAAAHQAAABIBEAAuAAAAcgAAACEAAAASARAALgAAAHMAAAAaAAAAEgEQAC4AAAB+AAAAHQAAABIBEAAuAAAAtAAAACYAAAASARAALgAAALUAAAAhAAAAEgEQAC4AAACKAAAASQAAABIBEAAuAAAAiwAAAB8AAAASARAALgAAAIsAAAAvAAAAQAAAABIBEAAuAAAAnQAAADUAAAASARAALgAAAIIAAAAsAAAAEgEQAC4AAACEAAAAJQAAAC4AAAASARAALgAAAIcAAAAlAAAAAAAAAAEAAAABAAAAywEAABIBEAAuAAAAcgAAAEgAAAAAAAAADAAAAAQAAADMAQAAzQEAAM4BAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQBBj7zFAAsBEABBn7zFAAsBFABBr7zFAAsBGQBBvrzFAAsCQB8AQc68xQALAogTAEHevMUACwJqGABB7bzFAAsDgIQeAEH9vMUACwPQEhMAQY29xQALA4TXFwBBnb3FAAsDZc0dAEGsvcUACwQgX6ASAEG8vcUACwTodkgXAEHMvcUACwSilBodAEHbvcUACwVA5ZwwEgBB673FAAsFkB7EvBYAQfu9xQALBTQm9WscAEGKvsUACwaA4Dd5wxEAQZq+xQALBqDYhVc0FgBBqr7FAAsGyE5nbcEbAEG6vsUACwY9kWDkWBEAQcm+xQALB0CMtXgdrxUAQdm+xQALB1Dv4tbkGhsAQem+xQAL+CWS1U0Gz/AQAAAAAAAAAACA9krhxwItFQAAAAAAAAAAILSd2XlDeBoAAAAAAAAAAJSQAigsKosQAAAAAAAAAAC5NAMyt/StFAAAAAAAAABA5wGE/uRx2RkAAAAAAAAAiDCBEh8v5ycQAAAAAAAAAKp8Idfm+uAxFAAAAAAAAIDU2+mMoDlZPhkAAAAAAACgyVIksAiI740fAAAAAAAABL6zFm4FtbW4EwAAAAAAAIWtYJzJRiLjphgAAAAAAEDm2HgDfNjqm9AeAAAAAADoj4crgk3HcmFCEwAAAAAA4nNptuIgec/5EhgAAAAAgNrQA2QbaVdDuBceAAAAAJCIYoIesaEWKtPOEgAAAAC0KvsiZh1KnPSHghcAAAAAYfW5q7+kXMPxKWMdAAAAoFw5VMv35hkaN/pdEgAAAMizRym+tWCg4MR49RYAAAC6oJmzLeN4yBj21rIcAABAdARAkPyNS33PWcbvEQAAUJEFULR7cZ5cQ/C3axYAAKT1BmSh2g3GM1TspQYcAICGWYTepKjIW6C0syeEEQAg6G8lFs7SunLIoaAx5RUAKOLLrpuBh2mPOsoIfl4bAFltP00BsfShmWR+xQ4bEUCvSI+gQd1xCsD93XbSYRUQ2xqzCJJUDg0wfZUUR7oa6sjwb0Xb9CgIPm7dbGy0ECT77MsWEjIzis3JFIiH4RTtOeh+nJb+v+xA/Blq6RkaNCRRzyEe//eTqD1Q4jFQEEFtJUOq5f71uBJN5Fo+ZBSSyO7TFJ9+M2dXYJ3xTX0ZtnrqCNpGXgBBbbgEbqHcH7KMkkVI7DqgSETzwuTk6RPeL/dWWqdJyFoVsPMdXuQY1vu07DARXHqxGpxwpXUdH2Ud8ZO+innsrpBhZodpchO/ZO04bu2Xp9r0+T/pA08Y770ox8nofVERcviP48RiHrV2eRx+se7SSkf7OQ67/RJi1Jej3V2qhx0ZesjRKb0Xe8l9DFX1lOlkn5g6RnSsHe2dzidVGf0Rn2Of5KvIixJoRcJxql981oY8x93Wui4XwtYyDpV3G4yoCzmVjGn6HDnG3yi9KpFXSadD3feBHBLItxdzbHV1rRuRlNR1oqMWuqXdj8fS0phitblJE4tMHJSH6rm8w4OfXREUDuzWrxF5KWXoq7RkB7UVmRGnzBsW13N+4tbhPUkiW//V0L+iG2YIj00mrcZt9Zi/heK3RRGAyvLgb1g4yTJ/LyfbJZcVIH0v2Ytuhnv/XvvwUe/8GjSuvWcXBTStXxudNpMV3hDBGa1BXQaBmDdiRAT4mhUVMmAYkvRHoX7FelUFtgFbGh88T9v4zCRvu2xVwxHheBAnCyMSNwDuSurHKjRWGZcU8M2r1kSAqd3keTXBq9+8GbZgKwYr8IkKL2zBWMsLFhDkOLbHNWwszTrH8S6+jhsUHcejOUOHd4AJOa66bXIiGeS4DAgUaZXgS8dZKQkPax+O8weFrGFdbI8c2Lll6aITcvBJphe6dEezI04ov6OLGI9s3I+d6FEZoKxh8q6Mrh7Zw+l5YjHTD+QLfVftFy0TzzRkGLv9xxPdTlyt6F34FwNCfd4p/blYlGKz2GJ19h1CSQ4rOj50t5wdcMddCboSktvRtchNUeUDJUw5tYtoF3dSRuM6oaXeRC6fh6KuQh2K8wvOxIQnC+t8w5QlrUkSbfCOAfZl8c0lXPT5bhjcFois8oFzv21BL3NxuIoekxzVqzcxqJfkiP3nRrMW89sRypaFPZK9Hev8oRhg3O9SFn385sz2LOUlfMoeeNOr5xvOXRBAGjyvl40+Eytky3ARQnUU0CALm/0wDtg1Pf7MFZKSGQTpzQE9vRFOg8w9QBub+4+isSAhRhbLENKfJggRgvozC95oqdfb/ZTGRzBKFSP5AI4Vw5PNUj06uFm8nBq2m8B47Vl8wFNmJBO49aEQo8Lw1mhwm7Dof+0XJnPKFEzzrAyDTMLc4t/one8P/RkPGOzn0W/5ye2LscL1KT4QEx7nYcbLdzzp7l0zc7RNFJjlYPq3vpWLo2o1AJAhYRn+Hvn4ZS57bkzFQgD0abkfX7Obu//8DMVPuymAOOLTEzeggqo/PFC2Iyo0oMbayBhESCOVT0vko6w0QUh4EfseKw02vRGvbubrwCgt6+pcE3WQgyzWWgrgJvFy+KUlNBiTdKS3i/EMmHCtj3YPL0Ee3MjGUvcWCF9mzBmqab3oEhN7eCe1HMr2fz+gFMTsohfXmVZx4qN89F9PyBn1p4sdJiDWhm3mzfibMR0w+Uh3EjCoi+gIYAH3An4kfDcbFRc8kq4iC7jBtIOdLVsFYtocZRut9QYT+VBygvxYQ30IEj9iGLPIVzflDqM7L5ScihbPet7fui2FntKLCju5Qy0cwQzry5Q8E6Njl+bEU0qcEfHP5f65C9iLPD0gtuhcAxbuQ59+qA7OrotMqOMiNIQbdYojTynJQE3XL0nOlaAyERJt7KJz+5AgzXvbQbtIfxVWiKeLUDq1aMBaUhLqGt8aNrVIV3JEcUG4eHNL0nDLEIPiGu2Olc1R5lZQ3gZN/hQkm2Go8vpA5p9s5JVI4D0a9wA9qdec6O/jw65dLaxmEDRBjJMNxOLr3HQatThXgBSBUW/4EHXbJhQSYeIGbaAZ8ZJFmyopSZhMq3xNJEQEEK33FkJ1c1u+H9bbYC1VBRSYtZySUlDyrafLErl4qgYZ/+JDN2fkbpmRflfnFlVIH99tioLATuX/Gq+WUC41jRNXCS2jcKLev+FavOR5gnAYrUv4ywxL1i+acetdGKOMHkwve//n7uVdACezOu/lFxMf+1n/oWpfdcDwXwlr390X53kwf0pFt5Lw7LfLRVfVHTBMfo9Oi7JbFvRSn4tWpRI8310zIi6f8huxJ4curE4XC1c1wKr5Ru9infEoOlciHWdWIbgKXIzVXQKXWYR2NRIBrClmDXPvSvXC/G8l1MIWARe0v9BPq52y8/vLLolzHGCO0HfiEYuiT3h9P701yBH5scQVW9Yti2PWXI8sQzoWd9412/FL+W38CzSz99PIGwqrASl3z7vEfYcA0HqEXRHNFULzVMPqNV2pAISZ5bQVQJsSMCp0ZYO00wDl/x4iGwihC16aaB/SUIQg719T9RBKiY71wEKnBmWl6Oo3qDIVnSvyMnETUUi+zqLlRVJ/GkJb178mrDLtNsGFr2uTjxASMs1vMFd/qIQxZ5tGeLMUl37Ai/wsn9Ll/UBCWFbgGR5PWNcdfKOjr55oKfc1LBDmYi5NJVuMjFvGwvN0QzcUn/t5oO5xr2/yd7MwUhRFGYd6mEhqTpsL71XgvGZZlh+UTF9tAhFBZ7U1DDbg970Tuh+3CENVEcEiQ49D2HWtGKjn5MqTqlVx6xNzVE7T2B7JEM9enIrVJnPsx/QQhEcT+9SCdkPtivCP5/kxFWUZGDqKI1SUqK3sc2F4flq+Hx5kNpa0XInsc+g8C4/41tMS/cO74bOr55AiDM6ytsyIF/20KtqgliE1K4+BX+T/ah0esVqIJP40AXv5sLvu32ISZV1xqq09gsHZN51q6pf7Fr+0DRUZzeIx0IVEBeV9uhz3kCitL8AtH6LTSiOvjvQRNbVymDsw+aaKiB3sWrJxFoJij35KfLdQreokp/EeDhyRnRmPrq1yUqwSdwhX04gR9gTgMhpZD2dX15TKLAjrFTMGmL9gL9NALQ06/TfKZRvgA793nP2DSDxIRP5inh8R2MSulQP9pFpLWtW9+4VnFQ52GntEPE4x3rBKrXpnwRrJifDMquXQ3oquTqys4LgQO6wsgBUfhZYtWmLX1xjnFErXN+DaZib8uPA6zQ3fIBqO5iLMSACYnXPWRKBoi1QQMqAr/1oA/oQQDFbIQq5pFD6I9r5xgD2mFI9retMZhBlOKrQujuDMz9lyBllIIOUfcJow3VgM4CHIB6Q3LTTvEw3BfBRvD1gqugmNhTgB6xhQ8ZvZShPutChM8KaGwSUf0nYByA7MFHGZL1Yo9Jh3E4bUAXoS/1nNf7trMjF/VRioSYIY136wwF+qBn/93moeCW5Rb0ZPbth7KmRvXssCE4vJJQsY44nOGjU9CzZ+wxfuO+8N3lssgmGCDI7DXbQddYW1yGq5W/F80cc4mrqQEtLm4nrFp7It3MX5xkDpNBeGoJvZtlEfOVM3uPiQIwIdVEQBSBKTswOUInObOlYhEmmVAdrWd6AEOetPQsmrqRbD+oGQzJXIRQfm45K7FlQcujxR2p9dnYvEb847NY60EeiL5dAHtYSutQvCisKxIRbj7h7FSeIlGqOOci0zHqobTVUzG26tV/AlmWf831JKEaEqAKLJmG1sb3+B+5fnnBVJNYAK/P6IR0vfYfp9IQQbTiGQhl2ftQyPK3287pTiEKEpNOg0B+PPcnacayo6GxUKNEEiAsnbgw+Ugwa1CGIahsBoVaFdabKJPBIkcUV9EKfwwqoJtQMfrMsWbc2WnBTRrHMVTKLEJpd+XMiAvMMZA0xojW/lOngezzl90FUaEANfwnDLnkkW5kKInETrIBTE9vJMfgbcm59TqsMVJikZdrQv4B0I04KH6JQ0m29zH8nQHawS5cOxVBHdAMElqBP8RCVXV9403qlVFEExL5IYO5buLO0VwlUUa1mR/bq2HuUdFTy0TZm17OLXet40MhNeZRpLIaH/4qfbjRkWwv4Xtv7gnWmJv9uRUvGfm3L+HTGfrALitVcpm9P2Q6EHvxL+xleDWqOt84GI9JSJyW4XvbgtJDEMmXCiqjH663tKHXaTnLaep1+GpQpffHONThJUuENkhpH3507NdlvQMOIWaaZU/ed19aGigFRyBL2aHAHoVP6waTmlZdB0xyK24BECIuo9HcSHDn8EUnmr41gWgqpkjSS1KdKehaZXlhzvG5HqXtg2EVpDgxPI9t1xdRE2pXaOhJUwFGQYenRVztIVg04UsuW6PBl9npjR6oFHGxKxTI/P9MUvDmP/wjKxDBFW3R9zA3K3u9E7v3N/3U8VrNTnT4ROpSrGCq9Q39SjGuvk8LESUafau2ZtkgtlphAmHm1eVyVR0WrACHdO/s8UsGUINq1upYWF8MoU4v0DGo4/xUEsZYdzU9b+TK1+QhBxjzZSdz5pUOiLPqBYHlMUTjPEJhWOg2TiLk7I7uVnGSJAdXCacaT9mrphemrfwR8VSEmGAMeG3qAUfYyiK9kTGprbp8B4KBbJWZwvi3bPGKGA0tHwlrJbO3CD+y1UAx9kkCODVp5PGSUmMr2cFGITfnTsI+yFo1+ur37sw5k6GJ2R5yxnZ4z3mVue5zRASR4CuxB8oMC3OkD5whAhyO0Sw+kUm8iwZUmQt/NUKTqpFzMk2sH6HL9bdKUwqrOIkx2gVii5HHJXuWhnXkpwNXwSSGxy56NOredCAfZczEIbF1oHT+FMopihk4EzdH8T4hyYZNEMcGX/RPwwoKgvTA0Svr0FEMw+P1Y7PciSO5+QFi4tBxR/Ds8rikx6dwrHNBw9fIRsD2lhW9ZvrIpm/KARTJulR1PDOfLLi1ctgDsJFh8CjxkoNMjuvm6tOGCKixtTYfkPmSA9VTdlbCN8NjcRqLn3U79ojCqFfkcsGwSFFRKo9Sjvgi91Jl5Z9yFF5hoLiZl51bE9Cdjalzo1688QTuv/10oejQuO0T2JAuYDFSLm/43dZXCO8UWNK4PfRBrV7794qj8G+bZLOPuxC2sQyuvvFpXPR7ekXgZ6ns6FFL3mq1x6wxnlTfaHGEZCpxk2cOt5LBowr/D5VM9riQgQQ0xmmLcg/NpsOCrDxqsKFFTff37lKLsRiMb0c7hWDRkq1x/eHvMpFir48ZBmrFAfeubTSvM32k0aO5cawGuSExngiB3wxVDh4Ak9IbAGdxgfGOskbPekGVlMjClcyJQeE+8Sl6MaB7C3r/eZOf0cE9iq13xM4QicpZt1AIg85BeOlQ2cnxkLA48CkwCqS90deX2IwQPw5mGZ4VtASk+qEtec6rEErGC6/9ly0BzjVBcNRGXeBdf4qH+QjwTkGyodiEr/qmOGm8lPutmCblE6Eiodv5X8ZwK84yiQI8rlyBZ05C67+wEDqxwzdKw8H3scyU79VD3h4erxn8jrhfPMEXuiPKqMWZpl7se6ZmcwQBYay8vU7+8A/+l5aUCBPNAb8F7/5PWVYD8y7EHI0CViEaw2P15zuzjPPmdS+kSvuhVXBM81UOoGgw4B5zgWWykbtmKhIXJS5BGpYJDj7dj5EGS7CaoOZ11W03h0XClPOBU9KoxU0sD0KwiXkbPzYoYaZprXdIP4eBtl/jpQ2P2TEACBDVKkNldi/r1JZE79uBRA4ZBmTQTt+n0tXP2hPOcZyIwaYLAi1LxunFk+5YUwEPovIXhcKwlsigPwjV6nPBT4eymWM3YLB20EbDE20UsZ9tqze8BTzkiIBce9g8WeH9poUE1Y9IAtdWOcVnI7wxMQg6RgbjHheFJ8Q+xOCrQYAQBB7+TFAAufOSCamZmZmZmZmZmZmZmZmZkZFa5H4XoUrkfhehSuR+F6FN4kBoGVQ4ts5/up8dJNYhCW1AloImx4eqUsQxzr4jYaq0Nuhhvw+WGE8GjjiLX4FCI2WDhJ88e0No3ttaD3xhBqI43ADlKmh1dIr7ya8tcaiE/XZqVBuJ/fOYww4o55FQemEh9RAS3mspTWJugLLhGkCVHLgWiu1re6vdfZ33wb6jqnojTt8d5flWR54X/9FbvIhej28Cd/GRHqLYGZlxH4DdZAvrQMZcKBdklowiUck3HeM5iQcOoBmyuhhpuEFkPBfingpvMhmxVW556vAxI3NTEPzdeFaSu8idiXstIc+ZBaP9ffNyGJltRGRvUOF/pzSMxF5l/noKtD0tFdchJdhg16PD1mpTSs0rZPyYMdsZ7XlGOXHlFdI0KSDKGcF8FLed2C337afU+bDgq04xJorFti0ZhkKpblXhcQIDkeU/Digafgtu5EUbISQLMtGKkmT85STZJYaqeOqJnCVxNBpH6wt3tQJ6rYfdr10PIeNFBlwF/JplK7E8uuxEDCGJCm6plM1OsOyQ888jaazhOAChHDrVN5sUEZYFC+9rAfZwh0AovcLcFnR7Om/l5aGVKgKTVvsCQ0hp/C6/5LSBTbGe6Q8lkdkJ5/aIll1jkQXymwtB3D+0yXMqeo1SP2GbK6WV2xNZY9rFsfunfpxBQoYuF9J16rl1ZJTPuSh50QDZ1oydjJq/LwDnr4t6WVGj4Xujp6obxbWnIuLZOERBXLRfsuyBrKr66Oi4pCnQMRRQmSsab33LJK5Hiqnfs4GwShQcHrkn31boMtVbEvxxUDtGdniXVkxFicV3cnJmwR0uyl2NuIbW30xiXyCz3gG9sj60YWB76KwzgeKKP9TBZJtlXSEWz+bpxgS1NPMdcRDorvtk8Tl7FgZ0WFGIKLHKWhv/hyD6wnGrlqN60B1hYeTplgwnJWueFgVSwkzkQSlRbCzQMeV/U1zrsTbeM6HaurAQsDGKwqK9gvdopPYhdWiTRvAuC8u1UT88RuDLUSiajtsdDMx5LvHrjUSnruHQe6V45ACtPb8kuTEG/78RcGyN9xANWofPVvD9pY/CcT1gxm6TO7p/q7TLIpjmCmHhHXhIcp/FKVyaOOVAsahRgOrNDSusmoqgeD2HZvrp0T46waHl7c2t2l0cBXsrBiH0+KSEtLsEh+UUGarI7AGxnZodPV1Vlty9rN4ValMxYUe4HcdxF7Vzzi1+er6sIRECrPYFmCXvLGNiamrKoEthm7pYBHaBj1a8VR61ZVnZEUloQABu15KiPRpyLf3X10EFYHNKPhj93RgQzRMZb8UxpFbPboGnPkpzQ9p/RE/Q8Vnlb4U+IoHVNdl1JdapfZEGJXjbkD22HrLvJQlRC/9RroRaTHz0hOvFhb2t2mZZEVIGuDbNnTcWOt4uEXHx5BEc0Rn60ohhyfSAQD82RjmxsL2xi+U2uw5QadNY8d6RUWohVHyw+J8+prSpFy5CCrETe8cXhM27hERqobhG0BRRxfY8HG1hXHAwVVSQO+mp0WGenNa0XeODY3dwdp/q4XEsFBFkaiY8FWWFhyDpex8hzOZ6vRgRwB33kT9XESjigXpexVQc4WNH9h3JDBDtiGEm5HVjV9JCBlAsfnaOSMpB0lOXj3MB2A6gFsuSAd17YXhPos+fOwmbs0I2FNF6z4Ejn3RyhTTlxfVDhoFfKsWh4uLNO5dQt9f0NgU0RbikgYWCPcx/fVMJnPGak2fDttEybS+XKMibSOso8O8fkrFR+4QS6PowcqciimC/THvN0Y+pq+pU85u8GGHtZcBpfkE/b3MAkZwl6c1zDw+tYk1B/4X1oHFGjlSXmNJi/fg3YZYObhBRAgUW7HClK/5c9eFBqFgdEMgNrxBW8OmYTZSxD11GiCFADET9bk4/Sg9RIaK3ftAaqZadkRtxz3s/fbFLzFigGIFO6tdJKwxVz5rxAsCd5opu18SVTqgG+UKLMaJNTkU7hXyjoQVZq/diBcFYN2HUNgeTtic6qu/16AFhGevcjRZvUrnbgQsTLLM1cbf2RtQVLEvH1gDfSOolzfFcy2imfbaf3K5j3D2E59fxHfindyxQ8vq9cvBY7kLv8bgNWSWwRz8oisjGo+Hb9lFmZEQknQKPXTVj1VmEr/6hGjoANCTUGIuVeVu/MQMqsc6eYCaNfNOWF5d/zCQFvvFlRSAiB5cWHnLfnJaM0VWRKGUJ2ZjrVopXxbdnQVVlsd0qZK4T6RIFH9FcX23UR8Fw4fohr/QE2nykQ3krHQyRJKy2n3ZM6uCxFuWFBPtA8eOzzuxVDYizyn8XlzP5AMGMnJ8TfaeQnKhfTHwjJAPRPbQum/9sKoqW+6DJ63Zsge45u6zCvPUyEmlXB+LFKgGIJJlXCJcqkauN0mZfB0sxOddYgaD4R194wvPgjnh4UfF16ge3I2kV8KJpgG7J83Gd/kGZZb+EAZ1YRGBfB/LBRM6kerr8YA4RA3BdGMmSMQR90/RUykZ87nJNW0R4/SGQaxzJ3W6VLYH7fdw59yqBQ4JwpLRe7beRksfmkZwoYQWdipEaLjXymPRjAPjzZxGnoTu6eBHLO6pWvz2NheJxUvqZXsmuMoYlGJj63gS+wQF3Xv4Pc4Dp3oDkyvmqwTG3kqWRqTLdiwU3LWJeJWqRUuVUdID755jdzB3reBRVQRfLsL2n6WjxWUnJeMzwi6G5cv1hT/EaZ3drDf1nJtLhZ5jN5D/6dR+ZHzsnj1vb4Rjq390v4/HMIc7LdaImNkHNiKZEIyM7ABF/BfFbW1thZGooObjsJZAaxZ5t2QxCsSowM5XxcE9s6swqP8GtQSHYOcLUysaV5yvZscykhDQhec44rWiVQY9f3iFggHaZsSxgWrvQ9Uje4va/EM2HTFHQVrIv5ydte+jCLBcEYq0RcEvE7LKMUS/9ZOZ41ruw0ToPl9eHQ7Ucskfth7El98Hk1h/vkpyQ0JtzGt/EF/YxgKgcuUIdTXoMUnJMo0zIITd854VM+5v2dvDG1DIa03H/lxLd2llMwfWXCKz01X+RjH9L19Ud3Wf3rzoT8+rPoTC+4vyeguvv/DuJwy/Xn3H9Yk86AgvzFmNvoWwv3Hkhl4HVwaGswnuF77qwHLbHUUYOR8e64JU5MYybxnovBdEJmglMWwQuse9HSUP2rnLxrh5nYEJwKJ5Vwq3TKIH/MU5+srnYXOoLew7rAooH/CENjf32FvSgFZtEpOdDPM0BqtTObnJdXN4CmiPpCP1nMV8dZRhlF3cU3utMvZcngpEehX6dbovuh7sFSsj4SNdRsgEyHfUzK6/FndiQxqpPcVgELnGEMoyGOuSm5w7umSEWZq2Cc4DQ0GFxFKGhdDHhzrIa3sLKQ9axJ0bnsSnH4WVk5XvfAc/ojbXFj8QeP+ESNKJWK0lJZBX2GNYDYFyxzp1B3oKaqrZ3/nPU340AgXh90XILshVrkyuWTX+XNtEqWVjGYraSPC6sE68sLsex0d3tYeibqCzrs0YlsCV5YXGBjfSwdiNaX89rTiAazeElnzZHnYnIg7lPGHNzYTMR7h9YPHRkpt/NxaBsaRQicYGisDBp9uVzAXr57Rp5tSE5De0TzLfSUaJRgxHKaS6h5A5acwPP4dSLd5WuOEqLsYAFGGwMkxS9PFx66CnVPJE820o81C6RFSCaYX0ciFqB+kkBw+AiHbdAe430A6nlMZUA1KywG0FfcFYBln++RCFKcKCAmbKd74N7N6UvyDNRDX3QyokUIwjlm4KreTOe8ZE0sKIA4CjT7h+e74QmG/FA88CIA+mz1l58dY+psamRDkLA0AZPjIbqUMjpD5kI4a6iOkmen504u3o3FAYdo+FbscUOG6lKk8+YL0mRoV/xArYbObxLp1x47RIMNduzEbiRopFmqVxNILDudosWLBFaF7uhGId9Dbbz4fhyeCZxGbkl0cQL+ALOZjmD4/0NgbSXXkSTPMM71RtkZl/wxHFtRdUG6P1o/Kp14FUcxw0hFTybPjS1cZRNn9bk6t54McqTr2ggl5RwPhlyWliuzPFrr7xGjUYGzPgHmE6m7wPxIq+QcOhzR65Zr10xBLGjMdIpQ5C2yQLlHiKkPaCBVcF7Wpx9W8povagVXP4dMQsBKHD9kiLnHfkJxV5QJTgeYdbAwUT4taTNoW3h3PqJrrF4qjqaWie6OueH6xpSDiIhOpBamial/SfSeXtaKaNp4eVNEggoh/25cfrPdOFZJ+GHengM4GZnx5TCPG2N10mBPxCwHkCnAtj61royeWVFofWtYAUKJZJAy+77UfeBAVGRVFmtmBFB1w/vL3svnZEBR3ansUm0MXwP5bxiguew0Q8kOS7cQF8szKLAoOfSuvGcKcDr7QN1sKb72hccoijBTO4z7Lc/lICIyXtCfVG3AQsJ9keOxbDtqsJVQMVflMGsB/UGDwrz57vbep1hBhChUzZkCA87/LlZcs7t5zGtUQUnDNZlJmrO9YR7BkuZDuGttZpLgOhSMmR2zztvqmixVJrraT2NCCHmwjKV+VhTwRdbCKH/Qanv2sOKj+7giUG/dZ1bIpr7GXvZOGmCUHEBYse3f1uiWOrJfcnhMebKYRE8VYIisJfXq/Lf64yXk9HHZqrU7voP1hzFfLYKGUlxbF7r0LWRr+5wkTCedN3RISOrH8RVtdY6bchA7Yr/vqHMiNMGuvShyFsNA+E/NiIhfU1ya88m7j0Cbay3XC6IEShoykxuoXn7TXKUaJnaecHWtwUAXv3xgqRu4EoReGsBeJ89mdJbPgVGuLnU15nvMSdFL2Ym/rzYd4RS98KJdSHl2oXoK/IgvTxmq/yYYSQhjkuUtozBs8D5+I/zrSDmgTbSl5QHosYBiY2piRg+QMHyQhlDPIVrNGE+ITDjYd1xi2TUMpoHiPONy03KSRSt8Tiq9rqGYnf1pgIWGhgqrLH6K/77nrhTIVTbRNtJu7bxlOmYxhidGOqj2QpPbiYlkUDOHWGqGn2O7K2bYrT4JHEEWbJF6bcid+EfaK37EDDBoESR0YSfWF/g34OxlbadYU0KBKE9Rdnsuk+S8UfIerEE0BEVJTyWPfOlzmufkLrBpxZ9p0D6EcGS+wHvv6b1YVwVJIKtmAsK0lwEsvL/MRETRRDaqONOcVCc0Ssn7rTxvEDXHuPl0fq20KDygyidkVnaSNi2UXGbxXCAwgKNR6EZQ6fBI88vQsWQ3gzNm59xtDlZbb/PTD8OA9s3Dhx18WAxESFpddNloay/UmgTnmEQToHPAk/FaQkN4iCzWPoxzQ7OOMHTDf2aZLgqJdP+kW2iODPbFZf+Hros5OsTJUElw5OC+1wstoedF95E6EUx3jLWC/XTXWU5SnZFByA3YXHIvmZbEqeKl27Lamjs/EEvpE12+1qiYP8ROL132yBx5iat+/KiJSPydDb6xkKAYYToh/mYhO22UfnPKJUCA4E0oNzCh0SsVvZZPqD7QzwB47pAmH9qFqWYQPInP2wpkYlrYHbPjn7q022bT1kTWuE1ZXDODzP35JJPW6IoMifR9FrNZM9v9k1OmQleho6DAZ0Yl4Pfj/g0Puc0TtUyAnFHShk5fGzJzP8Y8D8Q9NHxBSArklpEdhfxyzBeh/rssZDzXHt+nSTcwWXNHs//GiFNmQ0l8hDws9ErDaIzNbghDB51CZaEurYVCzKgaFK2oaZ7lAFLqiIk5AXFVrarwhFVOUAN2U6E4LzUlEvO7J5xBR7QDIh9oXEkip08ZKdgwb2r0AoGxIRttsh9xr1ZGjFa9kzUy9BgVJip/j792nTxGxOuJ6yAoIqEP/OOYvprIb9C7o+zmiOVNp/5Me84QoFl3y7C/7tMd1h/8PsvUDuhEu6kfmkSHZIj//f7Yi01wc8lQGhUGBerVl//+R6KiwFvVDODcBAWLEtzIz24btJhLun/PxAWg2OlmE65GkFQsdixn2J5u5Xvvgabx0UBE8F9Z6Xobi+n4v54djXUB0lhJWkf3W0PeX5XHZOGLNhr0dq9rKeA2TeYTBei3oPdLKF1YVby1xQmHQmsiKhjGoCBMiIhivTmpoTZHaqj1PQHQe6LR58j6IU6TarohkPwBdGIddYSj/bNzprlhtUMyZfROklWgNZa5gqeSNSBp6XC8fg0TtPbe+s7qDcaCuYbDyGDadijEsMvYuNsHmvudZ9RPwYXeCEx295Imb15c/9u4fWk4sNal9yoOhr9/fMviLGRWlVvcg/qGc5/KyTML5bxSqHRL5szEbSrkoj3CblFkQ3ZW2wey1XkP1DeWAxe0oGkreXgFXXuU1xKQdZwSL7RTVsRgBrH63xGkdflLQCL4QIrZam3mXJaEPLzC3s6fJGoFeFUlhrLdN2Vjz+MIfbhWbS0QHgSPG163g9ZM15iQRK6zTPpsFPVlJNFaGIj1uG7yJ3MsVnv3gbcMRBYLK8RVjoeNvERj+syRpQTebO44R0ZvSf7VZY4YHdTUlxcUWHA7jDjORFOnR0pD3UDeeeBYLHD+P2na6dHUNxkAsGPoReMYx5ZAk9+27SKNn4FnDHC0FW7dAHSyLydO1H02uAhckBHxfzX1Wb9QPK+Zwi2gSBm3GmEjJ8H7tshE9ThJ0HZ+9nuAGocCYV8Kn/aQOkBfmyktN0oAAR3mb7MpQpdkSokR5SB3OANiOxa1EgQgpHoLQLW0X2DMTP9FXnZrTIBjOpiQkeUb2qGWnrEoVdk0TfaQ6oI49vXRvpXp3iFbiHmRQleY+MWRdjLf7xQYStRi3pqrry422SnAsltFrDsQTV6SqEhMWJBEaR/DoEhegH9/p7g7cRIPaFGzzU0LfTBmAIb/YfJ0C4kMjKUNofz0UM4Eyev19aE42HFTPuTIxELjOUJCVyUBKvca5SylR6BnGC6emd9QzCDHSx2+H2rkUawnsHsZ2KaCNDtO/0q6UEN/brGSjV0IASRe4/x1+hxoZ4yPqtd8BzaASYJmxMTkVrrUciJFMznBNdeatJ476EOJVlKa1reMar7twSQx9Khvod0OFxFfpe/JijQc9l7sVh/k1BGp5h8mOtQoGZN9iEXHCvAYQj6V15Ih31mxl0RsnNcprpqW39+nTkqvwHUEWH8ShvB4exl/uDw9WjbHNEWXTAmFkY6P/FrOxiUhPfBxR3JtNUBzpMt8ojtQG2ckWDn1JcXPjII+yINh2BRQ7EnwuD4KFBZt+6s1Z8TtTKx3KvqUBnjevy+7XR/Qv3FUXoZiENEv5WAm/rGzDjBarEjAuMDEgZWxlbWVudCBpbiBzZXF1ZW5jZSBlbGVtZW50cyBpbiBzZXF1ZW5jZQAAAAEAAAAAAAAA2IcRABUAAAB1OGYzMnUzMnU2NHVzaXplZXhwbGljaXQgcGFuaWMAAEEeEABkAAAAJAkAABIAAADokhEAAQAAAOiSEQABAAAAYCBvciBgAADokhEAAQAAAECIEQAGAAAA6JIRAAEAAABvbmUgb2YgLCBib29sZWFuIGAAAGmIEQAJAAAA6JIRAAEAAABpbnRlZ2VyIGAAAACEiBEACQAAAOiSEQABAAAAY2hhcmFjdGVyIGAAoIgRAAsAAADokhEAAQAAAHN0cmluZyAAvIgRAAcAAABieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50LjAAAAAAAAAACAAAAAQAAADPAQAA0AEAANEBAABhIGJvb2xlYW51bml0YSBzdHJpbmdudWxsAAAAayEQAGIAAAByAwAAGQAAAGshEABiAAAAcwMAABoAAABrIRAAYgAAAHQDAAAZAAAAayEQAGIAAAB1AwAAGQAAAGshEABiAAAAdgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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", self.location.href);\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n var ch2 = {};\n var wk = function(c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + \';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'\n ], { type: "text/javascript" }))));\n w.onmessage = function(e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err2 = new Error(ed[0]);\n err2["code"] = ed[1];\n err2.stack = ed[2];\n cb(err2, null);\n } else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n };\n var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n var fleb = new u8([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 0,\n /* unused */\n 0,\n 0,\n /* impossible */\n 0\n ]);\n var fdeb = new u8([\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 4,\n 4,\n 5,\n 5,\n 6,\n 6,\n 7,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n /* unused */\n 0,\n 0\n ]);\n var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n var freb = function(eb, start) {\n var b = new u16(31);\n for (var i2 = 0; i2 < 31; ++i2) {\n b[i2] = start += 1 << eb[i2 - 1];\n }\n var r = new i32(b[30]);\n for (var i2 = 1; i2 < 30; ++i2) {\n for (var j = b[i2]; j < b[i2 + 1]; ++j) {\n r[j] = j - b[i2] << 5 | i2;\n }\n }\n return { b, r };\n };\n var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n fl[28] = 258, revfl[258] = 28;\n var _b = freb(fdeb, 0), fd = _b.b;\n var rev = new u16(32768);\n for (var i = 0; i < 32768; ++i) {\n var x = (i & 43690) >> 1 | (i & 21845) << 1;\n x = (x & 52428) >> 2 | (x & 13107) << 2;\n x = (x & 61680) >> 4 | (x & 3855) << 4;\n rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;\n }\n var hMap = function(cd, mb, r) {\n var s = cd.length;\n var i2 = 0;\n var l = new u16(mb);\n for (; i2 < s; ++i2) {\n if (cd[i2])\n ++l[cd[i2] - 1];\n }\n var le = new u16(mb);\n for (i2 = 1; i2 < mb; ++i2) {\n le[i2] = le[i2 - 1] + l[i2 - 1] << 1;\n }\n var co;\n if (r) {\n co = new u16(1 << mb);\n var rvb = 15 - mb;\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n var sv = i2 << 4 | cd[i2];\n var r_1 = mb - cd[i2];\n var v = le[cd[i2] - 1]++ << r_1;\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n co[i2] = rev[le[cd[i2] - 1]++] >> 15 - cd[i2];\n }\n }\n }\n return co;\n };\n var flt = new u8(288);\n for (var i = 0; i < 144; ++i)\n flt[i] = 8;\n for (var i = 144; i < 256; ++i)\n flt[i] = 9;\n for (var i = 256; i < 280; ++i)\n flt[i] = 7;\n for (var i = 280; i < 288; ++i)\n flt[i] = 8;\n var fdt = new u8(32);\n for (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n var flrm = /* @__PURE__ */ hMap(flt, 9, 1);\n var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\n var max = function(a) {\n var m = a[0];\n for (var i2 = 1; i2 < a.length; ++i2) {\n if (a[i2] > m)\n m = a[i2];\n }\n return m;\n };\n var bits = function(d, p, m) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8) >> (p & 7) & m;\n };\n var bits16 = function(d, p) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);\n };\n var shft = function(p) {\n return (p + 7) / 8 | 0;\n };\n var slc = function(v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n return new u8(v.subarray(s, e));\n };\n var ec = [\n "unexpected EOF",\n "invalid block type",\n "invalid length/literal",\n "invalid distance",\n "stream finished",\n "no stream handler",\n ,\n "no callback",\n "invalid UTF-8 data",\n "extra field too long",\n "date not in range 1980-2099",\n "filename too long",\n "stream finishing",\n "invalid zip data"\n // determined by unknown compression method\n ];\n var err = function(ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n };\n var inflt = function(dat, st, buf, dict) {\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n var resize = noBuf || st.i != 2;\n var noSt = st.i;\n if (noBuf)\n buf = new u8(sl * 3);\n var cbuf = function(l2) {\n var bl = buf.length;\n if (l2 > bl) {\n var nbuf = new u8(Math.max(bl * 2, l2));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n var tbts = sl * 8;\n do {\n if (!lm) {\n final = bits(dat, pos, 1);\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + l);\n buf.set(dat.subarray(s, t), bt);\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n } else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n var ldt = new u8(tl);\n var clt = new u8(19);\n for (var i2 = 0; i2 < hcLen; ++i2) {\n clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);\n }\n pos += hcLen * 3;\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n var clm = hMap(clt, clb, 1);\n for (var i2 = 0; i2 < tl; ) {\n var r = clm[bits(dat, pos, clbmsk)];\n pos += r & 15;\n var s = r >> 4;\n if (s < 16) {\n ldt[i2++] = s;\n } else {\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i2 - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i2++] = c;\n }\n }\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n lbt = max(lt);\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (; ; lpos = pos) {\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n } else {\n var add = sym - 254;\n if (sym > 264) {\n var i2 = sym - 257, b = fleb[i2];\n add = bits(dat, pos, (1 << b) - 1) + fl[i2];\n pos += b;\n }\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n };\n var et = /* @__PURE__ */ new u8(0);\n var mrg = function(a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n };\n var wcln = function(fn, fnStr, td2) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf("[") + 1, st.lastIndexOf("]")).replace(/\\s+/g, "").split(",");\n for (var i2 = 0; i2 < dt.length; ++i2) {\n var v = dt[i2], k = ks[i2];\n if (typeof v == "function") {\n fnStr += ";" + k + "=";\n var st_1 = v.toString();\n if (v.prototype) {\n if (st_1.indexOf("[native code]") != -1) {\n var spInd = st_1.indexOf(" ", 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf("(", spInd));\n } else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ";" + k + ".prototype." + t + "=" + v.prototype[t].toString();\n }\n } else\n fnStr += st_1;\n } else\n td2[k] = v;\n }\n return fnStr;\n };\n var ch = [];\n var cbfs = function(v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n };\n var wrkr = function(fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = "", td_1 = {}, m = fns.length - 1;\n for (var i2 = 0; i2 < m; ++i2)\n fnStr = wcln(fns[i2], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td2 = mrg({}, ch[id].e);\n return wk(ch[id].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init.toString() + "}", id, td2, cbfs(td2), cb);\n };\n var bInflt = function() {\n return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt];\n };\n var pbf = function(msg) {\n return postMessage(msg, [msg.buffer]);\n };\n var gopt = function(o) {\n return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n };\n };\n var cbify = function(dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function(err2, dat2) {\n w.terminate();\n cb(err2, dat2);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function() {\n w.terminate();\n };\n };\n var b2 = function(d, b) {\n return d[b] | d[b + 1] << 8;\n };\n var b4 = function(d, b) {\n return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0;\n };\n var b8 = function(d, b) {\n return b4(d, b) + b4(d, b + 4) * 4294967296;\n };\n var gzs = function(d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, "invalid gzip data");\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n };\n var Inflate = /* @__PURE__ */ function() {\n function Inflate2(opts, cb) {\n if (typeof opts == "function")\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate2.prototype.e = function(c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate2.prototype.c = function(final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;\n };\n Inflate2.prototype.push = function(chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate2;\n }();\n function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != "function")\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function(ev) {\n return pbf(inflateSync(ev.data[0], gopt(ev.data[1])));\n }, 1, cb);\n }\n function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n }\n var Gunzip = /* @__PURE__ */ function() {\n function Gunzip2(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n Gunzip2.prototype.push = function(chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n } else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n Inflate.prototype.c.call(this, final);\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip2;\n }();\n var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();\n try {\n td.decode(et, { stream: true });\n } catch (e) {\n }\n var dutf8 = function(d) {\n for (var r = "", i2 = 0; ; ) {\n var c = d[i2++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i2 + eb > d.length)\n return { s: r, r: slc(d, i2 - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i2++] & 63) << 12 | (d[i2++] & 63) << 6 | d[i2++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n } else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | d[i2++] & 63);\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i2++] & 63) << 6 | d[i2++] & 63);\n }\n };\n function strFromU8(dat, latin1) {\n if (latin1) {\n var r = "";\n for (var i2 = 0; i2 < dat.length; i2 += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i2, i2 + 16384));\n return r;\n } else if (td) {\n return td.decode(dat);\n } else {\n var _a2 = dutf8(dat), s = _a2.s, r = _a2.r;\n if (r.length)\n err(8);\n return s;\n }\n }\n var slzh = function(d, b) {\n return b + 30 + b2(d, b + 26) + b2(d, b + 28);\n };\n var zh = function(d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n };\n var z64e = function(d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n };\n var mt = typeof queueMicrotask == "function" ? queueMicrotask : typeof setTimeout == "function" ? setTimeout : function(fn) {\n fn();\n };\n function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != "function")\n err(7);\n var term = [];\n var tAll = function() {\n for (var i3 = 0; i3 < term.length; ++i3)\n term[i3]();\n };\n var files = {};\n var cbd = function(a, b) {\n mt(function() {\n cb(a, b);\n });\n };\n mt(function() {\n cbd = cb;\n });\n var e = data.length - 22;\n for (; b4(data, e) != 101010256; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 101075792;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function(i3) {\n var _a2 = zh(data, o, z), c_1 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off);\n o = no;\n var cbl = function(e2, d) {\n if (e2) {\n tAll();\n cbd(e2, null);\n } else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n } catch (e2) {\n cbl(e2, null);\n }\n } else\n term.push(inflate(infl, { size: su }, cbl));\n } else\n cbl(err(14, "unknown compression type " + c_1, 1), null);\n } else\n cbl(null, null);\n };\n for (var i2 = 0; i2 < c; ++i2) {\n _loop_3(i2);\n }\n } else\n cbd(null, {});\n return tAll;\n }\n function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 101010256; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 101075792;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i2 = 0; i2 < c; ++i2) {\n var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, "unknown compression type " + c_2);\n }\n }\n return files;\n }\n /**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\n const REVISION = "180";\n const NoColorSpace = "";\n const SRGBColorSpace = "srgb";\n const LinearSRGBColorSpace = "srgb-linear";\n const LinearTransfer = "linear";\n const SRGBTransfer = "srgb";\n function clamp(value, min, max2) {\n return Math.max(min, Math.min(max2, value));\n }\n function euclideanModulo(n, m) {\n return (n % m + m) % m;\n }\n function lerp(x2, y, t) {\n return (1 - t) * x2 + t * y;\n }\n class Quaternion {\n /**\n * Constructs a new quaternion.\n *\n * @param {number} [x=0] - The x value of this quaternion.\n * @param {number} [y=0] - The y value of this quaternion.\n * @param {number} [z=0] - The z value of this quaternion.\n * @param {number} [w=1] - The w value of this quaternion.\n */\n constructor(x2 = 0, y = 0, z = 0, w = 1) {\n this.isQuaternion = true;\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n /**\n * Interpolates between two quaternions via SLERP. This implementation assumes the\n * quaternion data are managed in flat arrays.\n *\n * @param {Array} dst - The destination array.\n * @param {number} dstOffset - An offset into the destination array.\n * @param {Array} src0 - The source array of the first quaternion.\n * @param {number} srcOffset0 - An offset into the first source array.\n * @param {Array} src1 - The source array of the second quaternion.\n * @param {number} srcOffset1 - An offset into the second source array.\n * @param {number} t - The interpolation factor in the range `[0,1]`.\n * @see {@link Quaternion#slerp}\n */\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n if (t === 0) {\n dst[dstOffset + 0] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n return;\n }\n if (t === 1) {\n dst[dstOffset + 0] = x1;\n dst[dstOffset + 1] = y1;\n dst[dstOffset + 2] = z1;\n dst[dstOffset + 3] = w1;\n return;\n }\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n let s = 1 - t;\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n if (sqrSin > Number.EPSILON) {\n const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n const tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n if (s === 1 - t) {\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n /**\n * Multiplies two quaternions. This implementation assumes the quaternion data are managed\n * in flat arrays.\n *\n * @param {Array} dst - The destination array.\n * @param {number} dstOffset - An offset into the destination array.\n * @param {Array} src0 - The source array of the first quaternion.\n * @param {number} srcOffset0 - An offset into the first source array.\n * @param {Array} src1 - The source array of the second quaternion.\n * @param {number} srcOffset1 - An offset into the second source array.\n * @return {Array} The destination array.\n * @see {@link Quaternion#multiplyQuaternions}.\n */\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n const x0 = src0[srcOffset0];\n const y0 = src0[srcOffset0 + 1];\n const z0 = src0[srcOffset0 + 2];\n const w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1];\n const y1 = src1[srcOffset1 + 1];\n const z1 = src1[srcOffset1 + 2];\n const w1 = src1[srcOffset1 + 3];\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n return dst;\n }\n /**\n * The x value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n /**\n * The y value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n /**\n * The z value of this quaternion.\n *\n * @type {number}\n * @default 0\n */\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n /**\n * The w value of this quaternion.\n *\n * @type {number}\n * @default 1\n */\n get w() {\n return this._w;\n }\n set w(value) {\n this._w = value;\n this._onChangeCallback();\n }\n /**\n * Sets the quaternion components.\n *\n * @param {number} x - The x value of this quaternion.\n * @param {number} y - The y value of this quaternion.\n * @param {number} z - The z value of this quaternion.\n * @param {number} w - The w value of this quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n set(x2, y, z, w) {\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onChangeCallback();\n return this;\n }\n /**\n * Returns a new quaternion with copied values from this instance.\n *\n * @return {Quaternion} A clone of this instance.\n */\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._w);\n }\n /**\n * Copies the values of the given quaternion to this instance.\n *\n * @param {Quaternion} quaternion - The quaternion to copy.\n * @return {Quaternion} A reference to this quaternion.\n */\n copy(quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the rotation specified by the given\n * Euler angles.\n *\n * @param {Euler} euler - The Euler angles.\n * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromEuler(euler, update = true) {\n const x2 = euler._x, y = euler._y, z = euler._z, order = euler._order;\n const cos = Math.cos;\n const sin = Math.sin;\n const c1 = cos(x2 / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n const s1 = sin(x2 / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n switch (order) {\n case "XYZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "YXZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "ZXY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "ZYX":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "YZX":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "XZY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n default:\n console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + order);\n }\n if (update === true) this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the given axis and angle.\n *\n * @param {Vector3} axis - The normalized axis.\n * @param {number} angle - The angle in radians.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromAxisAngle(axis, angle) {\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion from the given rotation matrix.\n *\n * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromRotationMatrix(m) {\n const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this._onChangeCallback();\n return this;\n }\n /**\n * Sets this quaternion to the rotation required to rotate the direction vector\n * `vFrom` to the direction vector `vTo`.\n *\n * @param {Vector3} vFrom - The first (normalized) direction vector.\n * @param {Vector3} vTo - The second (normalized) direction vector.\n * @return {Quaternion} A reference to this quaternion.\n */\n setFromUnitVectors(vFrom, vTo) {\n let r = vFrom.dot(vTo) + 1;\n if (r < 1e-8) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n }\n /**\n * Returns the angle between this quaternion and the given one in radians.\n *\n * @param {Quaternion} q - The quaternion to compute the angle with.\n * @return {number} The angle in radians.\n */\n angleTo(q) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n }\n /**\n * Rotates this quaternion by a given angular step to the given quaternion.\n * The method ensures that the final quaternion will not overshoot `q`.\n *\n * @param {Quaternion} q - The target quaternion.\n * @param {number} step - The angular step in radians.\n * @return {Quaternion} A reference to this quaternion.\n */\n rotateTowards(q, step) {\n const angle = this.angleTo(q);\n if (angle === 0) return this;\n const t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n }\n /**\n * Sets this quaternion to the identity quaternion; that is, to the\n * quaternion that represents "no rotation".\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n identity() {\n return this.set(0, 0, 0, 1);\n }\n /**\n * Inverts this quaternion via {@link Quaternion#conjugate}. The\n * quaternion is assumed to have unit length.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n invert() {\n return this.conjugate();\n }\n /**\n * Returns the rotational conjugate of this quaternion. The conjugate of a\n * quaternion represents the same rotation in the opposite direction about\n * the rotational axis.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onChangeCallback();\n return this;\n }\n /**\n * Calculates the dot product of this quaternion and the given one.\n *\n * @param {Quaternion} v - The quaternion to compute the dot product with.\n * @return {number} The result of the dot product.\n */\n dot(v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n }\n /**\n * Computes the squared Euclidean length (straight-line length) of this quaternion,\n * considered as a 4 dimensional vector. This can be useful if you are comparing the\n * lengths of two quaternions, as this is a slightly more efficient calculation than\n * {@link Quaternion#length}.\n *\n * @return {number} The squared Euclidean length.\n */\n lengthSq() {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n }\n /**\n * Computes the Euclidean length (straight-line length) of this quaternion,\n * considered as a 4 dimensional vector.\n *\n * @return {number} The Euclidean length.\n */\n length() {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n }\n /**\n * Normalizes this quaternion - that is, calculated the quaternion that performs\n * the same rotation as this one, but has a length equal to `1`.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n normalize() {\n let l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this._onChangeCallback();\n return this;\n }\n /**\n * Multiplies this quaternion by the given one.\n *\n * @param {Quaternion} q - The quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n multiply(q) {\n return this.multiplyQuaternions(this, q);\n }\n /**\n * Pre-multiplies this quaternion by the given one.\n *\n * @param {Quaternion} q - The quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n premultiply(q) {\n return this.multiplyQuaternions(q, this);\n }\n /**\n * Multiplies the given quaternions and stores the result in this instance.\n *\n * @param {Quaternion} a - The first quaternion.\n * @param {Quaternion} b - The second quaternion.\n * @return {Quaternion} A reference to this quaternion.\n */\n multiplyQuaternions(a, b) {\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this._onChangeCallback();\n return this;\n }\n /**\n * Performs a spherical linear interpolation between quaternions.\n *\n * @param {Quaternion} qb - The target quaternion.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {Quaternion} A reference to this quaternion.\n */\n slerp(qb, t) {\n if (t === 0) return this;\n if (t === 1) return this.copy(qb);\n const x2 = this._x, y = this._y, z = this._z, w = this._w;\n let cosHalfTheta = w * qb._w + x2 * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1) {\n this._w = w;\n this._x = x2;\n this._y = y;\n this._z = z;\n return this;\n }\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x2 + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n this.normalize();\n return this;\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x2 * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this._onChangeCallback();\n return this;\n }\n /**\n * Performs a spherical linear interpolation between the given quaternions\n * and stores the result in this quaternion.\n *\n * @param {Quaternion} qa - The source quaternion.\n * @param {Quaternion} qb - The target quaternion.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {Quaternion} A reference to this quaternion.\n */\n slerpQuaternions(qa, qb, t) {\n return this.copy(qa).slerp(qb, t);\n }\n /**\n * Sets this quaternion to a uniformly random, normalized quaternion.\n *\n * @return {Quaternion} A reference to this quaternion.\n */\n random() {\n const theta1 = 2 * Math.PI * Math.random();\n const theta2 = 2 * Math.PI * Math.random();\n const x0 = Math.random();\n const r1 = Math.sqrt(1 - x0);\n const r2 = Math.sqrt(x0);\n return this.set(\n r1 * Math.sin(theta1),\n r1 * Math.cos(theta1),\n r2 * Math.sin(theta2),\n r2 * Math.cos(theta2)\n );\n }\n /**\n * Returns `true` if this quaternion is equal with the given one.\n *\n * @param {Quaternion} quaternion - The quaternion to test for equality.\n * @return {boolean} Whether this quaternion is equal with the given one.\n */\n equals(quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n }\n /**\n * Sets this quaternion\'s components from the given array.\n *\n * @param {Array} array - An array holding the quaternion component values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Quaternion} A reference to this quaternion.\n */\n fromArray(array, offset = 0) {\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onChangeCallback();\n return this;\n }\n /**\n * Writes the components of this quaternion to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the quaternion components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The quaternion components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n }\n /**\n * Sets the components of this quaternion from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.\n * @param {number} index - The index into the attribute.\n * @return {Quaternion} A reference to this quaternion.\n */\n fromBufferAttribute(attribute, index) {\n this._x = attribute.getX(index);\n this._y = attribute.getY(index);\n this._z = attribute.getZ(index);\n this._w = attribute.getW(index);\n this._onChangeCallback();\n return this;\n }\n /**\n * This methods defines the serialization result of this class. Returns the\n * numerical elements of this quaternion in an array of format `[x, y, z, w]`.\n *\n * @return {Array} The serialized quaternion.\n */\n toJSON() {\n return this.toArray();\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n *[Symbol.iterator]() {\n yield this._x;\n yield this._y;\n yield this._z;\n yield this._w;\n }\n }\n class Vector3 {\n /**\n * Constructs a new 3D vector.\n *\n * @param {number} [x=0] - The x value of this vector.\n * @param {number} [y=0] - The y value of this vector.\n * @param {number} [z=0] - The z value of this vector.\n */\n constructor(x2 = 0, y = 0, z = 0) {\n Vector3.prototype.isVector3 = true;\n this.x = x2;\n this.y = y;\n this.z = z;\n }\n /**\n * Sets the vector components.\n *\n * @param {number} x - The value of the x component.\n * @param {number} y - The value of the y component.\n * @param {number} z - The value of the z component.\n * @return {Vector3} A reference to this vector.\n */\n set(x2, y, z) {\n if (z === void 0) z = this.z;\n this.x = x2;\n this.y = y;\n this.z = z;\n return this;\n }\n /**\n * Sets the vector components to the same value.\n *\n * @param {number} scalar - The value to set for all vector components.\n * @return {Vector3} A reference to this vector.\n */\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n }\n /**\n * Sets the vector\'s x component to the given value\n *\n * @param {number} x - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setX(x2) {\n this.x = x2;\n return this;\n }\n /**\n * Sets the vector\'s y component to the given value\n *\n * @param {number} y - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n /**\n * Sets the vector\'s z component to the given value\n *\n * @param {number} z - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setZ(z) {\n this.z = z;\n return this;\n }\n /**\n * Allows to set a vector component with an index.\n *\n * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n * @param {number} value - The value to set.\n * @return {Vector3} A reference to this vector.\n */\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error("index is out of range: " + index);\n }\n return this;\n }\n /**\n * Returns the value of the vector component which matches the given index.\n *\n * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n * @return {number} A vector component value.\n */\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error("index is out of range: " + index);\n }\n }\n /**\n * Returns a new vector with copied values from this instance.\n *\n * @return {Vector3} A clone of this instance.\n */\n clone() {\n return new this.constructor(this.x, this.y, this.z);\n }\n /**\n * Copies the values of the given vector to this instance.\n *\n * @param {Vector3} v - The vector to copy.\n * @return {Vector3} A reference to this vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n }\n /**\n * Adds the given vector to this instance.\n *\n * @param {Vector3} v - The vector to add.\n * @return {Vector3} A reference to this vector.\n */\n add(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n }\n /**\n * Adds the given scalar value to all components of this instance.\n *\n * @param {number} s - The scalar to add.\n * @return {Vector3} A reference to this vector.\n */\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n }\n /**\n * Adds the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n }\n /**\n * Adds the given vector scaled by the given factor to this instance.\n *\n * @param {Vector3|Vector4} v - The vector.\n * @param {number} s - The factor that scales `v`.\n * @return {Vector3} A reference to this vector.\n */\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n }\n /**\n * Subtracts the given vector from this instance.\n *\n * @param {Vector3} v - The vector to subtract.\n * @return {Vector3} A reference to this vector.\n */\n sub(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n }\n /**\n * Subtracts the given scalar value from all components of this instance.\n *\n * @param {number} s - The scalar to subtract.\n * @return {Vector3} A reference to this vector.\n */\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n }\n /**\n * Subtracts the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n }\n /**\n * Multiplies the given vector with this instance.\n *\n * @param {Vector3} v - The vector to multiply.\n * @return {Vector3} A reference to this vector.\n */\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n }\n /**\n * Multiplies the given scalar value with all components of this instance.\n *\n * @param {number} scalar - The scalar to multiply.\n * @return {Vector3} A reference to this vector.\n */\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n }\n /**\n * Multiplies the given vectors and stores the result in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n multiplyVectors(a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n }\n /**\n * Applies the given Euler rotation to this vector.\n *\n * @param {Euler} euler - The Euler angles.\n * @return {Vector3} A reference to this vector.\n */\n applyEuler(euler) {\n return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n }\n /**\n * Applies a rotation specified by an axis and an angle to this vector.\n *\n * @param {Vector3} axis - A normalized vector representing the rotation axis.\n * @param {number} angle - The angle in radians.\n * @return {Vector3} A reference to this vector.\n */\n applyAxisAngle(axis, angle) {\n return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n }\n /**\n * Multiplies this vector with the given 3x3 matrix.\n *\n * @param {Matrix3} m - The 3x3 matrix.\n * @return {Vector3} A reference to this vector.\n */\n applyMatrix3(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[3] * y + e[6] * z;\n this.y = e[1] * x2 + e[4] * y + e[7] * z;\n this.z = e[2] * x2 + e[5] * y + e[8] * z;\n return this;\n }\n /**\n * Multiplies this vector by the given normal matrix and normalizes\n * the result.\n *\n * @param {Matrix3} m - The normal matrix.\n * @return {Vector3} A reference to this vector.\n */\n applyNormalMatrix(m) {\n return this.applyMatrix3(m).normalize();\n }\n /**\n * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and\n * divides by perspective.\n *\n * @param {Matrix4} m - The matrix to apply.\n * @return {Vector3} A reference to this vector.\n */\n applyMatrix4(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n const w = 1 / (e[3] * x2 + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x2 + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x2 + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x2 + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n }\n /**\n * Applies the given Quaternion to this vector.\n *\n * @param {Quaternion} q - The Quaternion.\n * @return {Vector3} A reference to this vector.\n */\n applyQuaternion(q) {\n const vx = this.x, vy = this.y, vz = this.z;\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n const tx = 2 * (qy * vz - qz * vy);\n const ty = 2 * (qz * vx - qx * vz);\n const tz = 2 * (qx * vy - qy * vx);\n this.x = vx + qw * tx + qy * tz - qz * ty;\n this.y = vy + qw * ty + qz * tx - qx * tz;\n this.z = vz + qw * tz + qx * ty - qy * tx;\n return this;\n }\n /**\n * Projects this vector from world space into the camera\'s normalized\n * device coordinate (NDC) space.\n *\n * @param {Camera} camera - The camera.\n * @return {Vector3} A reference to this vector.\n */\n project(camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n }\n /**\n * Unprojects this vector from the camera\'s normalized device coordinate (NDC)\n * space into world space.\n *\n * @param {Camera} camera - The camera.\n * @return {Vector3} A reference to this vector.\n */\n unproject(camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n }\n /**\n * Transforms the direction of this vector by a matrix (the upper left 3 x 3\n * subset of the given 4x4 matrix and then normalizes the result.\n *\n * @param {Matrix4} m - The matrix.\n * @return {Vector3} A reference to this vector.\n */\n transformDirection(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[4] * y + e[8] * z;\n this.y = e[1] * x2 + e[5] * y + e[9] * z;\n this.z = e[2] * x2 + e[6] * y + e[10] * z;\n return this.normalize();\n }\n /**\n * Divides this instance by the given vector.\n *\n * @param {Vector3} v - The vector to divide.\n * @return {Vector3} A reference to this vector.\n */\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n }\n /**\n * Divides this vector by the given scalar.\n *\n * @param {number} scalar - The scalar to divide.\n * @return {Vector3} A reference to this vector.\n */\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n /**\n * If this vector\'s x, y or z value is greater than the given vector\'s x, y or z\n * value, replace that value with the corresponding min value.\n *\n * @param {Vector3} v - The vector.\n * @return {Vector3} A reference to this vector.\n */\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z value is less than the given vector\'s x, y or z\n * value, replace that value with the corresponding max value.\n *\n * @param {Vector3} v - The vector.\n * @return {Vector3} A reference to this vector.\n */\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z value is greater than the max vector\'s x, y or z\n * value, it is replaced by the corresponding value.\n * If this vector\'s x, y or z value is less than the min vector\'s x, y or z value,\n * it is replaced by the corresponding value.\n *\n * @param {Vector3} min - The minimum x, y and z values.\n * @param {Vector3} max - The maximum x, y and z values in the desired range.\n * @return {Vector3} A reference to this vector.\n */\n clamp(min, max2) {\n this.x = clamp(this.x, min.x, max2.x);\n this.y = clamp(this.y, min.y, max2.y);\n this.z = clamp(this.z, min.z, max2.z);\n return this;\n }\n /**\n * If this vector\'s x, y or z values are greater than the max value, they are\n * replaced by the max value.\n * If this vector\'s x, y or z values are less than the min value, they are\n * replaced by the min value.\n *\n * @param {number} minVal - The minimum value the components will be clamped to.\n * @param {number} maxVal - The maximum value the components will be clamped to.\n * @return {Vector3} A reference to this vector.\n */\n clampScalar(minVal, maxVal) {\n this.x = clamp(this.x, minVal, maxVal);\n this.y = clamp(this.y, minVal, maxVal);\n this.z = clamp(this.z, minVal, maxVal);\n return this;\n }\n /**\n * If this vector\'s length is greater than the max value, it is replaced by\n * the max value.\n * If this vector\'s length is less than the min value, it is replaced by the\n * min value.\n *\n * @param {number} min - The minimum value the vector length will be clamped to.\n * @param {number} max - The maximum value the vector length will be clamped to.\n * @return {Vector3} A reference to this vector.\n */\n clampLength(min, max2) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max2));\n }\n /**\n * The components of this vector are rounded down to the nearest integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded up to the nearest integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded to the nearest integer value\n *\n * @return {Vector3} A reference to this vector.\n */\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n }\n /**\n * The components of this vector are rounded towards zero (up if negative,\n * down if positive) to an integer value.\n *\n * @return {Vector3} A reference to this vector.\n */\n roundToZero() {\n this.x = Math.trunc(this.x);\n this.y = Math.trunc(this.y);\n this.z = Math.trunc(this.z);\n return this;\n }\n /**\n * Inverts this vector - i.e. sets x = -x, y = -y and z = -z.\n *\n * @return {Vector3} A reference to this vector.\n */\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n }\n /**\n * Calculates the dot product of the given vector with this instance.\n *\n * @param {Vector3} v - The vector to compute the dot product with.\n * @return {number} The result of the dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n // TODO lengthSquared?\n /**\n * Computes the square of the Euclidean length (straight-line length) from\n * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should\n * compare the length squared instead as it is slightly more efficient to calculate.\n *\n * @return {number} The square length of this vector.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n /**\n * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).\n *\n * @return {number} The length of this vector.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n /**\n * Computes the Manhattan length of this vector.\n *\n * @return {number} The length of this vector.\n */\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n }\n /**\n * Converts this vector to a unit vector - that is, sets it equal to a vector\n * with the same direction as this one, but with a vector length of `1`.\n *\n * @return {Vector3} A reference to this vector.\n */\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n /**\n * Sets this vector to a vector with the same direction as this one, but\n * with the specified length.\n *\n * @param {number} length - The new length of this vector.\n * @return {Vector3} A reference to this vector.\n */\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n /**\n * Linearly interpolates between the given vector and this instance, where\n * alpha is the percent distance along the line - alpha = 0 will be this\n * vector, and alpha = 1 will be the given one.\n *\n * @param {Vector3} v - The vector to interpolate towards.\n * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n * @return {Vector3} A reference to this vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n }\n /**\n * Linearly interpolates between the given vectors, where alpha is the percent\n * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n * be the second one. The result is stored in this instance.\n *\n * @param {Vector3} v1 - The first vector.\n * @param {Vector3} v2 - The second vector.\n * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n * @return {Vector3} A reference to this vector.\n */\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n }\n /**\n * Calculates the cross product of the given vector with this instance.\n *\n * @param {Vector3} v - The vector to compute the cross product with.\n * @return {Vector3} The result of the cross product.\n */\n cross(v) {\n return this.crossVectors(this, v);\n }\n /**\n * Calculates the cross product of the given vectors and stores the result\n * in this instance.\n *\n * @param {Vector3} a - The first vector.\n * @param {Vector3} b - The second vector.\n * @return {Vector3} A reference to this vector.\n */\n crossVectors(a, b) {\n const ax = a.x, ay = a.y, az = a.z;\n const bx = b.x, by = b.y, bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n /**\n * Projects this vector onto the given one.\n *\n * @param {Vector3} v - The vector to project to.\n * @return {Vector3} A reference to this vector.\n */\n projectOnVector(v) {\n const denominator = v.lengthSq();\n if (denominator === 0) return this.set(0, 0, 0);\n const scalar = v.dot(this) / denominator;\n return this.copy(v).multiplyScalar(scalar);\n }\n /**\n * Projects this vector onto a plane by subtracting this\n * vector projected onto the plane\'s normal from this vector.\n *\n * @param {Vector3} planeNormal - The plane normal.\n * @return {Vector3} A reference to this vector.\n */\n projectOnPlane(planeNormal) {\n _vector$c.copy(this).projectOnVector(planeNormal);\n return this.sub(_vector$c);\n }\n /**\n * Reflects this vector off a plane orthogonal to the given normal vector.\n *\n * @param {Vector3} normal - The (normalized) normal vector.\n * @return {Vector3} A reference to this vector.\n */\n reflect(normal) {\n return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n }\n /**\n * Returns the angle between the given vector and this instance in radians.\n *\n * @param {Vector3} v - The vector to compute the angle with.\n * @return {number} The angle in radians.\n */\n angleTo(v) {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n if (denominator === 0) return Math.PI / 2;\n const theta = this.dot(v) / denominator;\n return Math.acos(clamp(theta, -1, 1));\n }\n /**\n * Computes the distance from the given vector to this instance.\n *\n * @param {Vector3} v - The vector to compute the distance to.\n * @return {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n /**\n * Computes the squared distance from the given vector to this instance.\n * If you are just comparing the distance with another distance, you should compare\n * the distance squared instead as it is slightly more efficient to calculate.\n *\n * @param {Vector3} v - The vector to compute the squared distance to.\n * @return {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n }\n /**\n * Computes the Manhattan distance from the given vector to this instance.\n *\n * @param {Vector3} v - The vector to compute the Manhattan distance to.\n * @return {number} The Manhattan distance.\n */\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n }\n /**\n * Sets the vector components from the given spherical coordinates.\n *\n * @param {Spherical} s - The spherical coordinates.\n * @return {Vector3} A reference to this vector.\n */\n setFromSpherical(s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n }\n /**\n * Sets the vector components from the given spherical coordinates.\n *\n * @param {number} radius - The radius.\n * @param {number} phi - The phi angle in radians.\n * @param {number} theta - The theta angle in radians.\n * @return {Vector3} A reference to this vector.\n */\n setFromSphericalCoords(radius, phi, theta) {\n const sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n }\n /**\n * Sets the vector components from the given cylindrical coordinates.\n *\n * @param {Cylindrical} c - The cylindrical coordinates.\n * @return {Vector3} A reference to this vector.\n */\n setFromCylindrical(c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n }\n /**\n * Sets the vector components from the given cylindrical coordinates.\n *\n * @param {number} radius - The radius.\n * @param {number} theta - The theta angle in radians.\n * @param {number} y - The y value.\n * @return {Vector3} A reference to this vector.\n */\n setFromCylindricalCoords(radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n }\n /**\n * Sets the vector components to the position elements of the\n * given transformation matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixPosition(m) {\n const e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n }\n /**\n * Sets the vector components to the scale elements of the\n * given transformation matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixScale(m) {\n const sx = this.setFromMatrixColumn(m, 0).length();\n const sy = this.setFromMatrixColumn(m, 1).length();\n const sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n }\n /**\n * Sets the vector components from the specified matrix column.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @param {number} index - The column index.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrixColumn(m, index) {\n return this.fromArray(m.elements, index * 4);\n }\n /**\n * Sets the vector components from the specified matrix column.\n *\n * @param {Matrix3} m - The 3x3 matrix.\n * @param {number} index - The column index.\n * @return {Vector3} A reference to this vector.\n */\n setFromMatrix3Column(m, index) {\n return this.fromArray(m.elements, index * 3);\n }\n /**\n * Sets the vector components from the given Euler angles.\n *\n * @param {Euler} e - The Euler angles to set.\n * @return {Vector3} A reference to this vector.\n */\n setFromEuler(e) {\n this.x = e._x;\n this.y = e._y;\n this.z = e._z;\n return this;\n }\n /**\n * Sets the vector components from the RGB components of the\n * given color.\n *\n * @param {Color} c - The color to set.\n * @return {Vector3} A reference to this vector.\n */\n setFromColor(c) {\n this.x = c.r;\n this.y = c.g;\n this.z = c.b;\n return this;\n }\n /**\n * Returns `true` if this vector is equal with the given one.\n *\n * @param {Vector3} v - The vector to test for equality.\n * @return {boolean} Whether this vector is equal with the given one.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n }\n /**\n * Sets this vector\'s x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`\n * and z value to be `array[ offset + 2 ]`.\n *\n * @param {Array} array - An array holding the vector component values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Vector3} A reference to this vector.\n */\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n }\n /**\n * Writes the components of this vector to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the vector components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The vector components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n }\n /**\n * Sets the components of this vector from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n * @param {number} index - The index into the attribute.\n * @return {Vector3} A reference to this vector.\n */\n fromBufferAttribute(attribute, index) {\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n /**\n * Sets each component of this vector to a pseudo-random value between `0` and\n * `1`, excluding `1`.\n *\n * @return {Vector3} A reference to this vector.\n */\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n }\n /**\n * Sets this vector to a uniformly random point on a unit sphere.\n *\n * @return {Vector3} A reference to this vector.\n */\n randomDirection() {\n const theta = Math.random() * Math.PI * 2;\n const u = Math.random() * 2 - 1;\n const c = Math.sqrt(1 - u * u);\n this.x = c * Math.cos(theta);\n this.y = u;\n this.z = c * Math.sin(theta);\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n }\n const _vector$c = /* @__PURE__ */ new Vector3();\n const _quaternion$4 = /* @__PURE__ */ new Quaternion();\n class Matrix3 {\n /**\n * Constructs a new 3x3 matrix. The arguments are supposed to be\n * in row-major order. If no arguments are provided, the constructor\n * initializes the matrix as an identity matrix.\n *\n * @param {number} [n11] - 1-1 matrix element.\n * @param {number} [n12] - 1-2 matrix element.\n * @param {number} [n13] - 1-3 matrix element.\n * @param {number} [n21] - 2-1 matrix element.\n * @param {number} [n22] - 2-2 matrix element.\n * @param {number} [n23] - 2-3 matrix element.\n * @param {number} [n31] - 3-1 matrix element.\n * @param {number} [n32] - 3-2 matrix element.\n * @param {number} [n33] - 3-3 matrix element.\n */\n constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n Matrix3.prototype.isMatrix3 = true;\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ];\n if (n11 !== void 0) {\n this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33);\n }\n }\n /**\n * Sets the elements of the matrix.The arguments are supposed to be\n * in row-major order.\n *\n * @param {number} [n11] - 1-1 matrix element.\n * @param {number} [n12] - 1-2 matrix element.\n * @param {number} [n13] - 1-3 matrix element.\n * @param {number} [n21] - 2-1 matrix element.\n * @param {number} [n22] - 2-2 matrix element.\n * @param {number} [n23] - 2-3 matrix element.\n * @param {number} [n31] - 3-1 matrix element.\n * @param {number} [n32] - 3-2 matrix element.\n * @param {number} [n33] - 3-3 matrix element.\n * @return {Matrix3} A reference to this matrix.\n */\n set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n const te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n }\n /**\n * Sets this matrix to the 3x3 identity matrix.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n identity() {\n this.set(\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Copies the values of the given matrix to this instance.\n *\n * @param {Matrix3} m - The matrix to copy.\n * @return {Matrix3} A reference to this matrix.\n */\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n }\n /**\n * Extracts the basis of this matrix into the three axis vectors provided.\n *\n * @param {Vector3} xAxis - The basis\'s x axis.\n * @param {Vector3} yAxis - The basis\'s y axis.\n * @param {Vector3} zAxis - The basis\'s z axis.\n * @return {Matrix3} A reference to this matrix.\n */\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrix3Column(this, 0);\n yAxis.setFromMatrix3Column(this, 1);\n zAxis.setFromMatrix3Column(this, 2);\n return this;\n }\n /**\n * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix.\n *\n * @param {Matrix4} m - The 4x4 matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n setFromMatrix4(m) {\n const me = m.elements;\n this.set(\n me[0],\n me[4],\n me[8],\n me[1],\n me[5],\n me[9],\n me[2],\n me[6],\n me[10]\n );\n return this;\n }\n /**\n * Post-multiplies this matrix by the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix to multiply with.\n * @return {Matrix3} A reference to this matrix.\n */\n multiply(m) {\n return this.multiplyMatrices(this, m);\n }\n /**\n * Pre-multiplies this matrix by the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix to multiply with.\n * @return {Matrix3} A reference to this matrix.\n */\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n /**\n * Multiples the given 3x3 matrices and stores the result\n * in this matrix.\n *\n * @param {Matrix3} a - The first matrix.\n * @param {Matrix3} b - The second matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n const b11 = be[0], b12 = be[3], b13 = be[6];\n const b21 = be[1], b22 = be[4], b23 = be[7];\n const b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n }\n /**\n * Multiplies every component of the matrix by the given scalar.\n *\n * @param {number} s - The scalar.\n * @return {Matrix3} A reference to this matrix.\n */\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n }\n /**\n * Computes and returns the determinant of this matrix.\n *\n * @return {number} The determinant.\n */\n determinant() {\n const te = this.elements;\n const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i2 = te[8];\n return a * e * i2 - a * f * h - b * d * i2 + b * f * g + c * d * h - c * e * g;\n }\n /**\n * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n * You can not invert with a determinant of zero. If you attempt this, the method produces\n * a zero matrix instead.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n }\n /**\n * Transposes this matrix in place.\n *\n * @return {Matrix3} A reference to this matrix.\n */\n transpose() {\n let tmp;\n const m = this.elements;\n tmp = m[1];\n m[1] = m[3];\n m[3] = tmp;\n tmp = m[2];\n m[2] = m[6];\n m[6] = tmp;\n tmp = m[5];\n m[5] = m[7];\n m[7] = tmp;\n return this;\n }\n /**\n * Computes the normal matrix which is the inverse transpose of the upper\n * left 3x3 portion of the given 4x4 matrix.\n *\n * @param {Matrix4} matrix4 - The 4x4 matrix.\n * @return {Matrix3} A reference to this matrix.\n */\n getNormalMatrix(matrix4) {\n return this.setFromMatrix4(matrix4).invert().transpose();\n }\n /**\n * Transposes this matrix into the supplied array, and returns itself unchanged.\n *\n * @param {Array} r - An array to store the transposed matrix elements.\n * @return {Matrix3} A reference to this matrix.\n */\n transposeIntoArray(r) {\n const m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n }\n /**\n * Sets the UV transform matrix from offset, repeat, rotation, and center.\n *\n * @param {number} tx - Offset x.\n * @param {number} ty - Offset y.\n * @param {number} sx - Repeat x.\n * @param {number} sy - Repeat y.\n * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise.\n * @param {number} cx - Center x of rotation.\n * @param {number} cy - Center y of rotation\n * @return {Matrix3} A reference to this matrix.\n */\n setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n this.set(\n sx * c,\n sx * s,\n -sx * (c * cx + s * cy) + cx + tx,\n -sy * s,\n sy * c,\n -sy * (-s * cx + c * cy) + cy + ty,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Scales this matrix with the given scalar values.\n *\n * @param {number} sx - The amount to scale in the X axis.\n * @param {number} sy - The amount to scale in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n scale(sx, sy) {\n this.premultiply(_m3.makeScale(sx, sy));\n return this;\n }\n /**\n * Rotates this matrix by the given angle.\n *\n * @param {number} theta - The rotation in radians.\n * @return {Matrix3} A reference to this matrix.\n */\n rotate(theta) {\n this.premultiply(_m3.makeRotation(-theta));\n return this;\n }\n /**\n * Translates this matrix by the given scalar values.\n *\n * @param {number} tx - The amount to translate in the X axis.\n * @param {number} ty - The amount to translate in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n translate(tx, ty) {\n this.premultiply(_m3.makeTranslation(tx, ty));\n return this;\n }\n // for 2D Transforms\n /**\n * Sets this matrix as a 2D translation transform.\n *\n * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector.\n * @param {number} y - The amount to translate in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n makeTranslation(x2, y) {\n if (x2.isVector2) {\n this.set(\n 1,\n 0,\n x2.x,\n 0,\n 1,\n x2.y,\n 0,\n 0,\n 1\n );\n } else {\n this.set(\n 1,\n 0,\n x2,\n 0,\n 1,\n y,\n 0,\n 0,\n 1\n );\n }\n return this;\n }\n /**\n * Sets this matrix as a 2D rotational transformation.\n *\n * @param {number} theta - The rotation in radians.\n * @return {Matrix3} A reference to this matrix.\n */\n makeRotation(theta) {\n const c = Math.cos(theta);\n const s = Math.sin(theta);\n this.set(\n c,\n -s,\n 0,\n s,\n c,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Sets this matrix as a 2D scale transform.\n *\n * @param {number} x - The amount to scale in the X axis.\n * @param {number} y - The amount to scale in the Y axis.\n * @return {Matrix3} A reference to this matrix.\n */\n makeScale(x2, y) {\n this.set(\n x2,\n 0,\n 0,\n 0,\n y,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n /**\n * Returns `true` if this matrix is equal with the given one.\n *\n * @param {Matrix3} matrix - The matrix to test for equality.\n * @return {boolean} Whether this matrix is equal with the given one.\n */\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i2 = 0; i2 < 9; i2++) {\n if (te[i2] !== me[i2]) return false;\n }\n return true;\n }\n /**\n * Sets the elements of the matrix from the given array.\n *\n * @param {Array} array - The matrix elements in column-major order.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Matrix3} A reference to this matrix.\n */\n fromArray(array, offset = 0) {\n for (let i2 = 0; i2 < 9; i2++) {\n this.elements[i2] = array[i2 + offset];\n }\n return this;\n }\n /**\n * Writes the elements of this matrix to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The matrix elements in column-major order.\n */\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n /**\n * Returns a matrix with copied values from this instance.\n *\n * @return {Matrix3} A clone of this instance.\n */\n clone() {\n return new this.constructor().fromArray(this.elements);\n }\n }\n const _m3 = /* @__PURE__ */ new Matrix3();\n const _cache = {};\n function warnOnce(message) {\n if (message in _cache) return;\n _cache[message] = true;\n console.warn(message);\n }\n const LINEAR_REC709_TO_XYZ = /* @__PURE__ */ new Matrix3().set(\n 0.4123908,\n 0.3575843,\n 0.1804808,\n 0.212639,\n 0.7151687,\n 0.0721923,\n 0.0193308,\n 0.1191948,\n 0.9505322\n );\n const XYZ_TO_LINEAR_REC709 = /* @__PURE__ */ new Matrix3().set(\n 3.2409699,\n -1.5373832,\n -0.4986108,\n -0.9692436,\n 1.8759675,\n 0.0415551,\n 0.0556301,\n -0.203977,\n 1.0569715\n );\n function createColorManagement() {\n const ColorManagement2 = {\n enabled: true,\n workingColorSpace: LinearSRGBColorSpace,\n /**\n * Implementations of supported color spaces.\n *\n * Required:\n * - primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n * - whitePoint: reference white [ x y ]\n * - transfer: transfer function (pre-defined)\n * - toXYZ: Matrix3 RGB to XYZ transform\n * - fromXYZ: Matrix3 XYZ to RGB transform\n * - luminanceCoefficients: RGB luminance coefficients\n *\n * Optional:\n * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: \'extended\' | \'standard\' }\n * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n *\n * Reference:\n * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n spaces: {},\n convert: function(color, sourceColorSpace, targetColorSpace) {\n if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n return color;\n }\n if (this.spaces[sourceColorSpace].transfer === SRGBTransfer) {\n color.r = SRGBToLinear(color.r);\n color.g = SRGBToLinear(color.g);\n color.b = SRGBToLinear(color.b);\n }\n if (this.spaces[sourceColorSpace].primaries !== this.spaces[targetColorSpace].primaries) {\n color.applyMatrix3(this.spaces[sourceColorSpace].toXYZ);\n color.applyMatrix3(this.spaces[targetColorSpace].fromXYZ);\n }\n if (this.spaces[targetColorSpace].transfer === SRGBTransfer) {\n color.r = LinearToSRGB(color.r);\n color.g = LinearToSRGB(color.g);\n color.b = LinearToSRGB(color.b);\n }\n return color;\n },\n workingToColorSpace: function(color, targetColorSpace) {\n return this.convert(color, this.workingColorSpace, targetColorSpace);\n },\n colorSpaceToWorking: function(color, sourceColorSpace) {\n return this.convert(color, sourceColorSpace, this.workingColorSpace);\n },\n getPrimaries: function(colorSpace) {\n return this.spaces[colorSpace].primaries;\n },\n getTransfer: function(colorSpace) {\n if (colorSpace === NoColorSpace) return LinearTransfer;\n return this.spaces[colorSpace].transfer;\n },\n getToneMappingMode: function(colorSpace) {\n return this.spaces[colorSpace].outputColorSpaceConfig.toneMappingMode || "standard";\n },\n getLuminanceCoefficients: function(target, colorSpace = this.workingColorSpace) {\n return target.fromArray(this.spaces[colorSpace].luminanceCoefficients);\n },\n define: function(colorSpaces) {\n Object.assign(this.spaces, colorSpaces);\n },\n // Internal APIs\n _getMatrix: function(targetMatrix, sourceColorSpace, targetColorSpace) {\n return targetMatrix.copy(this.spaces[sourceColorSpace].toXYZ).multiply(this.spaces[targetColorSpace].fromXYZ);\n },\n _getDrawingBufferColorSpace: function(colorSpace) {\n return this.spaces[colorSpace].outputColorSpaceConfig.drawingBufferColorSpace;\n },\n _getUnpackColorSpace: function(colorSpace = this.workingColorSpace) {\n return this.spaces[colorSpace].workingColorSpaceConfig.unpackColorSpace;\n },\n // Deprecated\n fromWorkingColorSpace: function(color, targetColorSpace) {\n warnOnce("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().");\n return ColorManagement2.workingToColorSpace(color, targetColorSpace);\n },\n toWorkingColorSpace: function(color, sourceColorSpace) {\n warnOnce("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().");\n return ColorManagement2.colorSpaceToWorking(color, sourceColorSpace);\n }\n };\n const REC709_PRIMARIES = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06];\n const REC709_LUMINANCE_COEFFICIENTS = [0.2126, 0.7152, 0.0722];\n const D65 = [0.3127, 0.329];\n ColorManagement2.define({\n [LinearSRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: LinearTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n workingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n },\n [SRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: SRGBTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n }\n });\n return ColorManagement2;\n }\n const ColorManagement = /* @__PURE__ */ createColorManagement();\n function SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n }\n function LinearToSRGB(c) {\n return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n }\n class Box3 {\n /**\n * Constructs a new bounding box.\n *\n * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box.\n * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n */\n constructor(min = new Vector3(Infinity, Infinity, Infinity), max2 = new Vector3(-Infinity, -Infinity, -Infinity)) {\n this.isBox3 = true;\n this.min = min;\n this.max = max2;\n }\n /**\n * Sets the lower and upper boundaries of this box.\n * Please note that this method only copies the values from the given objects.\n *\n * @param {Vector3} min - The lower boundary of the box.\n * @param {Vector3} max - The upper boundary of the box.\n * @return {Box3} A reference to this bounding box.\n */\n set(min, max2) {\n this.min.copy(min);\n this.max.copy(max2);\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given array.\n *\n * @param {Array} array - An array holding 3D position data.\n * @return {Box3} A reference to this bounding box.\n */\n setFromArray(array) {\n this.makeEmpty();\n for (let i2 = 0, il = array.length; i2 < il; i2 += 3) {\n this.expandByPoint(_vector$b.fromArray(array, i2));\n }\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data.\n * @return {Box3} A reference to this bounding box.\n */\n setFromBufferAttribute(attribute) {\n this.makeEmpty();\n for (let i2 = 0, il = attribute.count; i2 < il; i2++) {\n this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i2));\n }\n return this;\n }\n /**\n * Sets the upper and lower bounds of this box so it encloses the position data\n * in the given array.\n *\n * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}.\n * @return {Box3} A reference to this bounding box.\n */\n setFromPoints(points) {\n this.makeEmpty();\n for (let i2 = 0, il = points.length; i2 < il; i2++) {\n this.expandByPoint(points[i2]);\n }\n return this;\n }\n /**\n * Centers this box on the given center vector and sets this box\'s width, height and\n * depth to the given size values.\n *\n * @param {Vector3} center - The center of the box.\n * @param {Vector3} size - The x, y and z dimensions of the box.\n * @return {Box3} A reference to this bounding box.\n */\n setFromCenterAndSize(center, size) {\n const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n /**\n * Computes the world-axis-aligned bounding box for the given 3D object\n * (including its children), accounting for the object\'s, and children\'s,\n * world transforms. The function may result in a larger box than strictly necessary.\n *\n * @param {Object3D} object - The 3D object to compute the bounding box for.\n * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest\n * world-axis-aligned bounding box at the expense of more computation.\n * @return {Box3} A reference to this bounding box.\n */\n setFromObject(object, precise = false) {\n this.makeEmpty();\n return this.expandByObject(object, precise);\n }\n /**\n * Returns a new box with copied values from this instance.\n *\n * @return {Box3} A clone of this instance.\n */\n clone() {\n return new this.constructor().copy(this);\n }\n /**\n * Copies the values of the given box to this instance.\n *\n * @param {Box3} box - The box to copy.\n * @return {Box3} A reference to this bounding box.\n */\n copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n /**\n * Makes this box empty which means in encloses a zero space in 3D.\n *\n * @return {Box3} A reference to this bounding box.\n */\n makeEmpty() {\n this.min.x = this.min.y = this.min.z = Infinity;\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n }\n /**\n * Returns true if this box includes zero points within its bounds.\n * Note that a box with equal lower and upper bounds still includes one\n * point, the one both bounds share.\n *\n * @return {boolean} Whether this box is empty or not.\n */\n isEmpty() {\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n }\n /**\n * Returns the center point of this box.\n *\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The center point.\n */\n getCenter(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n /**\n * Returns the dimensions of this box.\n *\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The size.\n */\n getSize(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n }\n /**\n * Expands the boundaries of this box to include the given point.\n *\n * @param {Vector3} point - The point that should be included by the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n /**\n * Expands this box equilaterally by the given vector. The width of this\n * box will be expanded by the x component of the vector in both\n * directions. The height of this box will be expanded by the y component of\n * the vector in both directions. The depth of this box will be\n * expanded by the z component of the vector in both directions.\n *\n * @param {Vector3} vector - The vector that should expand the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n /**\n * Expands each dimension of the box by the given scalar. If negative, the\n * dimensions of the box will be contracted.\n *\n * @param {number} scalar - The scalar value that should expand the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n /**\n * Expands the boundaries of this box to include the given 3D object and\n * its children, accounting for the object\'s, and children\'s, world\n * transforms. The function may result in a larger box than strictly\n * necessary (unless the precise parameter is set to true).\n *\n * @param {Object3D} object - The 3D object that should expand the bounding box.\n * @param {boolean} precise - If set to `true`, the method expands the bounding box\n * as little as necessary at the expense of more computation.\n * @return {Box3} A reference to this bounding box.\n */\n expandByObject(object, precise = false) {\n object.updateWorldMatrix(false, false);\n const geometry = object.geometry;\n if (geometry !== void 0) {\n const positionAttribute = geometry.getAttribute("position");\n if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) {\n for (let i2 = 0, l = positionAttribute.count; i2 < l; i2++) {\n if (object.isMesh === true) {\n object.getVertexPosition(i2, _vector$b);\n } else {\n _vector$b.fromBufferAttribute(positionAttribute, i2);\n }\n _vector$b.applyMatrix4(object.matrixWorld);\n this.expandByPoint(_vector$b);\n }\n } else {\n if (object.boundingBox !== void 0) {\n if (object.boundingBox === null) {\n object.computeBoundingBox();\n }\n _box$4.copy(object.boundingBox);\n } else {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n _box$4.copy(geometry.boundingBox);\n }\n _box$4.applyMatrix4(object.matrixWorld);\n this.union(_box$4);\n }\n }\n const children = object.children;\n for (let i2 = 0, l = children.length; i2 < l; i2++) {\n this.expandByObject(children[i2], precise);\n }\n return this;\n }\n /**\n * Returns `true` if the given point lies within or on the boundaries of this box.\n *\n * @param {Vector3} point - The point to test.\n * @return {boolean} Whether the bounding box contains the given point or not.\n */\n containsPoint(point) {\n return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y && point.z >= this.min.z && point.z <= this.max.z;\n }\n /**\n * Returns `true` if this bounding box includes the entirety of the given bounding box.\n * If this box and the given one are identical, this function also returns `true`.\n *\n * @param {Box3} box - The bounding box to test.\n * @return {boolean} Whether the bounding box contains the given bounding box or not.\n */\n containsBox(box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n }\n /**\n * Returns a point as a proportion of this box\'s width, height and depth.\n *\n * @param {Vector3} point - A point in 3D space.\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} A point as a proportion of this box\'s width, height and depth.\n */\n getParameter(point, target) {\n return target.set(\n (point.x - this.min.x) / (this.max.x - this.min.x),\n (point.y - this.min.y) / (this.max.y - this.min.y),\n (point.z - this.min.z) / (this.max.z - this.min.z)\n );\n }\n /**\n * Returns `true` if the given bounding box intersects with this bounding box.\n *\n * @param {Box3} box - The bounding box to test.\n * @return {boolean} Whether the given bounding box intersects with this bounding box.\n */\n intersectsBox(box) {\n return box.max.x >= this.min.x && box.min.x <= this.max.x && box.max.y >= this.min.y && box.min.y <= this.max.y && box.max.z >= this.min.z && box.min.z <= this.max.z;\n }\n /**\n * Returns `true` if the given bounding sphere intersects with this bounding box.\n *\n * @param {Sphere} sphere - The bounding sphere to test.\n * @return {boolean} Whether the given bounding sphere intersects with this bounding box.\n */\n intersectsSphere(sphere) {\n this.clampPoint(sphere.center, _vector$b);\n return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n }\n /**\n * Returns `true` if the given plane intersects with this bounding box.\n *\n * @param {Plane} plane - The plane to test.\n * @return {boolean} Whether the given plane intersects with this bounding box.\n */\n intersectsPlane(plane) {\n let min, max2;\n if (plane.normal.x > 0) {\n min = plane.normal.x * this.min.x;\n max2 = plane.normal.x * this.max.x;\n } else {\n min = plane.normal.x * this.max.x;\n max2 = plane.normal.x * this.min.x;\n }\n if (plane.normal.y > 0) {\n min += plane.normal.y * this.min.y;\n max2 += plane.normal.y * this.max.y;\n } else {\n min += plane.normal.y * this.max.y;\n max2 += plane.normal.y * this.min.y;\n }\n if (plane.normal.z > 0) {\n min += plane.normal.z * this.min.z;\n max2 += plane.normal.z * this.max.z;\n } else {\n min += plane.normal.z * this.max.z;\n max2 += plane.normal.z * this.min.z;\n }\n return min <= -plane.constant && max2 >= -plane.constant;\n }\n /**\n * Returns `true` if the given triangle intersects with this bounding box.\n *\n * @param {Triangle} triangle - The triangle to test.\n * @return {boolean} Whether the given triangle intersects with this bounding box.\n */\n intersectsTriangle(triangle) {\n if (this.isEmpty()) {\n return false;\n }\n this.getCenter(_center);\n _extents.subVectors(this.max, _center);\n _v0$2.subVectors(triangle.a, _center);\n _v1$7.subVectors(triangle.b, _center);\n _v2$4.subVectors(triangle.c, _center);\n _f0.subVectors(_v1$7, _v0$2);\n _f1.subVectors(_v2$4, _v1$7);\n _f2.subVectors(_v0$2, _v2$4);\n let axes = [\n 0,\n -_f0.z,\n _f0.y,\n 0,\n -_f1.z,\n _f1.y,\n 0,\n -_f2.z,\n _f2.y,\n _f0.z,\n 0,\n -_f0.x,\n _f1.z,\n 0,\n -_f1.x,\n _f2.z,\n 0,\n -_f2.x,\n -_f0.y,\n _f0.x,\n 0,\n -_f1.y,\n _f1.x,\n 0,\n -_f2.y,\n _f2.x,\n 0\n ];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n return false;\n }\n axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n return false;\n }\n _triangleNormal.crossVectors(_f0, _f1);\n axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents);\n }\n /**\n * Clamps the given point within the bounds of this box.\n *\n * @param {Vector3} point - The point to clamp.\n * @param {Vector3} target - The target vector that is used to store the method\'s result.\n * @return {Vector3} The clamped point.\n */\n clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n /**\n * Returns the euclidean distance from any edge of this box to the specified point. If\n * the given point lies inside of this box, the distance will be `0`.\n *\n * @param {Vector3} point - The point to compute the distance to.\n * @return {number} The euclidean distance.\n */\n distanceToPoint(point) {\n return this.clampPoint(point, _vector$b).distanceTo(point);\n }\n /**\n * Returns a bounding sphere that encloses this bounding box.\n *\n * @param {Sphere} target - The target sphere that is used to store the method\'s result.\n * @return {Sphere} The bounding sphere that encloses this bounding box.\n */\n getBoundingSphere(target) {\n if (this.isEmpty()) {\n target.makeEmpty();\n } else {\n this.getCenter(target.center);\n target.radius = this.getSize(_vector$b).length() * 0.5;\n }\n return target;\n }\n /**\n * Computes the intersection of this bounding box and the given one, setting the upper\n * bound of this box to the lesser of the two boxes\' upper bounds and the\n * lower bound of this box to the greater of the two boxes\' lower bounds. If\n * there\'s no overlap, makes this box empty.\n *\n * @param {Box3} box - The bounding box to intersect with.\n * @return {Box3} A reference to this bounding box.\n */\n intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n if (this.isEmpty()) this.makeEmpty();\n return this;\n }\n /**\n * Computes the union of this box and another and the given one, setting the upper\n * bound of this box to the greater of the two boxes\' upper bounds and the\n * lower bound of this box to the lesser of the two boxes\' lower bounds.\n *\n * @param {Box3} box - The bounding box that will be unioned with this instance.\n * @return {Box3} A reference to this bounding box.\n */\n union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n /**\n * Transforms this bounding box by the given 4x4 transformation matrix.\n *\n * @param {Matrix4} matrix - The transformation matrix.\n * @return {Box3} A reference to this bounding box.\n */\n applyMatrix4(matrix) {\n if (this.isEmpty()) return this;\n _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n this.setFromPoints(_points);\n return this;\n }\n /**\n * Adds the given offset to both the upper and lower bounds of this bounding box,\n * effectively moving it in 3D space.\n *\n * @param {Vector3} offset - The offset that should be used to translate the bounding box.\n * @return {Box3} A reference to this bounding box.\n */\n translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n /**\n * Returns `true` if this bounding box is equal with the given one.\n *\n * @param {Box3} box - The box to test for equality.\n * @return {boolean} Whether this bounding box is equal with the given one.\n */\n equals(box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n /**\n * Returns a serialized structure of the bounding box.\n *\n * @return {Object} Serialized structure with fields representing the object state.\n */\n toJSON() {\n return {\n min: this.min.toArray(),\n max: this.max.toArray()\n };\n }\n /**\n * Returns a serialized structure of the bounding box.\n *\n * @param {Object} json - The serialized json to set the box from.\n * @return {Box3} A reference to this bounding box.\n */\n fromJSON(json) {\n this.min.fromArray(json.min);\n this.max.fromArray(json.max);\n return this;\n }\n }\n const _points = [\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3(),\n /* @__PURE__ */ new Vector3()\n ];\n const _vector$b = /* @__PURE__ */ new Vector3();\n const _box$4 = /* @__PURE__ */ new Box3();\n const _v0$2 = /* @__PURE__ */ new Vector3();\n const _v1$7 = /* @__PURE__ */ new Vector3();\n const _v2$4 = /* @__PURE__ */ new Vector3();\n const _f0 = /* @__PURE__ */ new Vector3();\n const _f1 = /* @__PURE__ */ new Vector3();\n const _f2 = /* @__PURE__ */ new Vector3();\n const _center = /* @__PURE__ */ new Vector3();\n const _extents = /* @__PURE__ */ new Vector3();\n const _triangleNormal = /* @__PURE__ */ new Vector3();\n const _testAxis = /* @__PURE__ */ new Vector3();\n function satForAxes(axes, v0, v1, v2, extents) {\n for (let i2 = 0, j = axes.length - 3; i2 <= j; i2 += 3) {\n _testAxis.fromArray(axes, i2);\n const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n const p0 = v0.dot(_testAxis);\n const p1 = v1.dot(_testAxis);\n const p2 = v2.dot(_testAxis);\n if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n return false;\n }\n }\n return true;\n }\n const _colorKeywords = {\n "aliceblue": 15792383,\n "antiquewhite": 16444375,\n "aqua": 65535,\n "aquamarine": 8388564,\n "azure": 15794175,\n "beige": 16119260,\n "bisque": 16770244,\n "black": 0,\n "blanchedalmond": 16772045,\n "blue": 255,\n "blueviolet": 9055202,\n "brown": 10824234,\n "burlywood": 14596231,\n "cadetblue": 6266528,\n "chartreuse": 8388352,\n "chocolate": 13789470,\n "coral": 16744272,\n "cornflowerblue": 6591981,\n "cornsilk": 16775388,\n "crimson": 14423100,\n "cyan": 65535,\n "darkblue": 139,\n "darkcyan": 35723,\n "darkgoldenrod": 12092939,\n "darkgray": 11119017,\n "darkgreen": 25600,\n "darkgrey": 11119017,\n "darkkhaki": 12433259,\n "darkmagenta": 9109643,\n "darkolivegreen": 5597999,\n "darkorange": 16747520,\n "darkorchid": 10040012,\n "darkred": 9109504,\n "darksalmon": 15308410,\n "darkseagreen": 9419919,\n "darkslateblue": 4734347,\n "darkslategray": 3100495,\n "darkslategrey": 3100495,\n "darkturquoise": 52945,\n "darkviolet": 9699539,\n "deeppink": 16716947,\n "deepskyblue": 49151,\n "dimgray": 6908265,\n "dimgrey": 6908265,\n "dodgerblue": 2003199,\n "firebrick": 11674146,\n "floralwhite": 16775920,\n "forestgreen": 2263842,\n "fuchsia": 16711935,\n "gainsboro": 14474460,\n "ghostwhite": 16316671,\n "gold": 16766720,\n "goldenrod": 14329120,\n "gray": 8421504,\n "green": 32768,\n "greenyellow": 11403055,\n "grey": 8421504,\n "honeydew": 15794160,\n "hotpink": 16738740,\n "indianred": 13458524,\n "indigo": 4915330,\n "ivory": 16777200,\n "khaki": 15787660,\n "lavender": 15132410,\n "lavenderblush": 16773365,\n "lawngreen": 8190976,\n "lemonchiffon": 16775885,\n "lightblue": 11393254,\n "lightcoral": 15761536,\n "lightcyan": 14745599,\n "lightgoldenrodyellow": 16448210,\n "lightgray": 13882323,\n "lightgreen": 9498256,\n "lightgrey": 13882323,\n "lightpink": 16758465,\n "lightsalmon": 16752762,\n "lightseagreen": 2142890,\n "lightskyblue": 8900346,\n "lightslategray": 7833753,\n "lightslategrey": 7833753,\n "lightsteelblue": 11584734,\n "lightyellow": 16777184,\n "lime": 65280,\n "limegreen": 3329330,\n "linen": 16445670,\n "magenta": 16711935,\n "maroon": 8388608,\n "mediumaquamarine": 6737322,\n "mediumblue": 205,\n "mediumorchid": 12211667,\n "mediumpurple": 9662683,\n "mediumseagreen": 3978097,\n "mediumslateblue": 8087790,\n "mediumspringgreen": 64154,\n "mediumturquoise": 4772300,\n "mediumvioletred": 13047173,\n "midnightblue": 1644912,\n "mintcream": 16121850,\n "mistyrose": 16770273,\n "moccasin": 16770229,\n "navajowhite": 16768685,\n "navy": 128,\n "oldlace": 16643558,\n "olive": 8421376,\n "olivedrab": 7048739,\n "orange": 16753920,\n "orangered": 16729344,\n "orchid": 14315734,\n "palegoldenrod": 15657130,\n "palegreen": 10025880,\n "paleturquoise": 11529966,\n "palevioletred": 14381203,\n "papayawhip": 16773077,\n "peachpuff": 16767673,\n "peru": 13468991,\n "pink": 16761035,\n "plum": 14524637,\n "powderblue": 11591910,\n "purple": 8388736,\n "rebeccapurple": 6697881,\n "red": 16711680,\n "rosybrown": 12357519,\n "royalblue": 4286945,\n "saddlebrown": 9127187,\n "salmon": 16416882,\n "sandybrown": 16032864,\n "seagreen": 3050327,\n "seashell": 16774638,\n "sienna": 10506797,\n "silver": 12632256,\n "skyblue": 8900331,\n "slateblue": 6970061,\n "slategray": 7372944,\n "slategrey": 7372944,\n "snow": 16775930,\n "springgreen": 65407,\n "steelblue": 4620980,\n "tan": 13808780,\n "teal": 32896,\n "thistle": 14204888,\n "tomato": 16737095,\n "turquoise": 4251856,\n "violet": 15631086,\n "wheat": 16113331,\n "white": 16777215,\n "whitesmoke": 16119285,\n "yellow": 16776960,\n "yellowgreen": 10145074\n };\n const _hslA = { h: 0, s: 0, l: 0 };\n const _hslB = { h: 0, s: 0, l: 0 };\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n }\n class Color {\n /**\n * Constructs a new color.\n *\n * Note that standard method of specifying color in three.js is with a hexadecimal triplet,\n * and that method is used throughout the rest of the documentation.\n *\n * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n * @param {number} [g] - The green component.\n * @param {number} [b] - The blue component.\n */\n constructor(r, g, b) {\n this.isColor = true;\n this.r = 1;\n this.g = 1;\n this.b = 1;\n return this.set(r, g, b);\n }\n /**\n * Sets the colors\'s components from the given values.\n *\n * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n * @param {number} [g] - The green component.\n * @param {number} [b] - The blue component.\n * @return {Color} A reference to this color.\n */\n set(r, g, b) {\n if (g === void 0 && b === void 0) {\n const value = r;\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === "number") {\n this.setHex(value);\n } else if (typeof value === "string") {\n this.setStyle(value);\n }\n } else {\n this.setRGB(r, g, b);\n }\n return this;\n }\n /**\n * Sets the colors\'s components to the given scalar value.\n *\n * @param {number} scalar - The scalar value.\n * @return {Color} A reference to this color.\n */\n setScalar(scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n }\n /**\n * Sets this color from a hexadecimal value.\n *\n * @param {number} hex - The hexadecimal value.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setHex(hex, colorSpace = SRGBColorSpace) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from RGB values.\n *\n * @param {number} r - Red channel value between `0.0` and `1.0`.\n * @param {number} g - Green channel value between `0.0` and `1.0`.\n * @param {number} b - Blue channel value between `0.0` and `1.0`.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setRGB(r, g, b, colorSpace = ColorManagement.workingColorSpace) {\n this.r = r;\n this.g = g;\n this.b = b;\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from RGB values.\n *\n * @param {number} h - Hue value between `0.0` and `1.0`.\n * @param {number} s - Saturation value between `0.0` and `1.0`.\n * @param {number} l - Lightness value between `0.0` and `1.0`.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) {\n h = euclideanModulo(h, 1);\n s = clamp(s, 0, 1);\n l = clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n ColorManagement.colorSpaceToWorking(this, colorSpace);\n return this;\n }\n /**\n * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,\n * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or\n * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -\n * all 140 color names are supported).\n *\n * @param {string} style - Color as a CSS-style string.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setStyle(style, colorSpace = SRGBColorSpace) {\n function handleAlpha(string) {\n if (string === void 0) return;\n if (parseFloat(string) < 1) {\n console.warn("THREE.Color: Alpha component of " + style + " will be ignored.");\n }\n }\n let m;\n if (m = /^(\\w+)\\(([^\\)]*)\\)/.exec(style)) {\n let color;\n const name = m[1];\n const components = m[2];\n switch (name) {\n case "rgb":\n case "rgba":\n if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(255, parseInt(color[1], 10)) / 255,\n Math.min(255, parseInt(color[2], 10)) / 255,\n Math.min(255, parseInt(color[3], 10)) / 255,\n colorSpace\n );\n }\n if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(100, parseInt(color[1], 10)) / 100,\n Math.min(100, parseInt(color[2], 10)) / 100,\n Math.min(100, parseInt(color[3], 10)) / 100,\n colorSpace\n );\n }\n break;\n case "hsl":\n case "hsla":\n if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setHSL(\n parseFloat(color[1]) / 360,\n parseFloat(color[2]) / 100,\n parseFloat(color[3]) / 100,\n colorSpace\n );\n }\n break;\n default:\n console.warn("THREE.Color: Unknown color model " + style);\n }\n } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n const hex = m[1];\n const size = hex.length;\n if (size === 3) {\n return this.setRGB(\n parseInt(hex.charAt(0), 16) / 15,\n parseInt(hex.charAt(1), 16) / 15,\n parseInt(hex.charAt(2), 16) / 15,\n colorSpace\n );\n } else if (size === 6) {\n return this.setHex(parseInt(hex, 16), colorSpace);\n } else {\n console.warn("THREE.Color: Invalid hex color " + style);\n }\n } else if (style && style.length > 0) {\n return this.setColorName(style, colorSpace);\n }\n return this;\n }\n /**\n * Sets this color from a color name. Faster than {@link Color#setStyle} if\n * you don\'t need the other CSS-style formats.\n *\n * For convenience, the list of names is exposed in `Color.NAMES` as a hash.\n * ```js\n * Color.NAMES.aliceblue // returns 0xF0F8FF\n * ```\n *\n * @param {string} style - The color name.\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {Color} A reference to this color.\n */\n setColorName(style, colorSpace = SRGBColorSpace) {\n const hex = _colorKeywords[style.toLowerCase()];\n if (hex !== void 0) {\n this.setHex(hex, colorSpace);\n } else {\n console.warn("THREE.Color: Unknown color " + style);\n }\n return this;\n }\n /**\n * Returns a new color with copied values from this instance.\n *\n * @return {Color} A clone of this instance.\n */\n clone() {\n return new this.constructor(this.r, this.g, this.b);\n }\n /**\n * Copies the values of the given color to this instance.\n *\n * @param {Color} color - The color to copy.\n * @return {Color} A reference to this color.\n */\n copy(color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n }\n /**\n * Copies the given color into this color, and then converts this color from\n * `SRGBColorSpace` to `LinearSRGBColorSpace`.\n *\n * @param {Color} color - The color to copy/convert.\n * @return {Color} A reference to this color.\n */\n copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n }\n /**\n * Copies the given color into this color, and then converts this color from\n * `LinearSRGBColorSpace` to `SRGBColorSpace`.\n *\n * @param {Color} color - The color to copy/convert.\n * @return {Color} A reference to this color.\n */\n copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n }\n /**\n * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.\n *\n * @return {Color} A reference to this color.\n */\n convertSRGBToLinear() {\n this.copySRGBToLinear(this);\n return this;\n }\n /**\n * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.\n *\n * @return {Color} A reference to this color.\n */\n convertLinearToSRGB() {\n this.copyLinearToSRGB(this);\n return this;\n }\n /**\n * Returns the hexadecimal value of this color.\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {number} The hexadecimal value.\n */\n getHex(colorSpace = SRGBColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255));\n }\n /**\n * Returns the hexadecimal value of this color as a string (for example, \'FFFFFF\').\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {string} The hexadecimal value as a string.\n */\n getHexString(colorSpace = SRGBColorSpace) {\n return ("000000" + this.getHex(colorSpace).toString(16)).slice(-6);\n }\n /**\n * Converts the colors RGB values into the HSL format and stores them into the\n * given target object.\n *\n * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method\'s result.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {{h:number,s:number,l:number}} The HSL representation of this color.\n */\n getHSL(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n const max2 = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue, saturation;\n const lightness = (min + max2) / 2;\n if (min === max2) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max2 - min;\n saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min);\n switch (max2) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n }\n /**\n * Returns the RGB values of this color and stores them into the given target object.\n *\n * @param {Color} target - The target color that is used to store the method\'s result.\n * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n * @return {Color} The RGB representation of this color.\n */\n getRGB(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n target.r = _color.r;\n target.g = _color.g;\n target.b = _color.b;\n return target;\n }\n /**\n * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.\n *\n * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n * @return {string} The CSS representation of this color.\n */\n getStyle(colorSpace = SRGBColorSpace) {\n ColorManagement.workingToColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n if (colorSpace !== SRGBColorSpace) {\n return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`;\n }\n return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n }\n /**\n * Adds the given HSL values to this color\'s values.\n * Internally, this converts the color\'s RGB values to HSL, adds HSL\n * and then converts the color back to RGB.\n *\n * @param {number} h - Hue value between `0.0` and `1.0`.\n * @param {number} s - Saturation value between `0.0` and `1.0`.\n * @param {number} l - Lightness value between `0.0` and `1.0`.\n * @return {Color} A reference to this color.\n */\n offsetHSL(h, s, l) {\n this.getHSL(_hslA);\n return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l);\n }\n /**\n * Adds the RGB values of the given color to the RGB values of this color.\n *\n * @param {Color} color - The color to add.\n * @return {Color} A reference to this color.\n */\n add(color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n }\n /**\n * Adds the RGB values of the given colors and stores the result in this instance.\n *\n * @param {Color} color1 - The first color.\n * @param {Color} color2 - The second color.\n * @return {Color} A reference to this color.\n */\n addColors(color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n }\n /**\n * Adds the given scalar value to the RGB values of this color.\n *\n * @param {number} s - The scalar to add.\n * @return {Color} A reference to this color.\n */\n addScalar(s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n }\n /**\n * Subtracts the RGB values of the given color from the RGB values of this color.\n *\n * @param {Color} color - The color to subtract.\n * @return {Color} A reference to this color.\n */\n sub(color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n }\n /**\n * Multiplies the RGB values of the given color with the RGB values of this color.\n *\n * @param {Color} color - The color to multiply.\n * @return {Color} A reference to this color.\n */\n multiply(color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n }\n /**\n * Multiplies the given scalar value with the RGB values of this color.\n *\n * @param {number} s - The scalar to multiply.\n * @return {Color} A reference to this color.\n */\n multiplyScalar(s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n }\n /**\n * Linearly interpolates this color\'s RGB values toward the RGB values of the\n * given color. The alpha argument can be thought of as the ratio between\n * the two colors, where `0.0` is this color and `1.0` is the first argument.\n *\n * @param {Color} color - The color to converge on.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerp(color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n }\n /**\n * Linearly interpolates between the given colors and stores the result in this instance.\n * The alpha argument can be thought of as the ratio between the two colors, where `0.0`\n * is the first and `1.0` is the second color.\n *\n * @param {Color} color1 - The first color.\n * @param {Color} color2 - The second color.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerpColors(color1, color2, alpha) {\n this.r = color1.r + (color2.r - color1.r) * alpha;\n this.g = color1.g + (color2.g - color1.g) * alpha;\n this.b = color1.b + (color2.b - color1.b) * alpha;\n return this;\n }\n /**\n * Linearly interpolates this color\'s HSL values toward the HSL values of the\n * given color. It differs from {@link Color#lerp} by not interpolating straight\n * from one color to the other, but instead going through all the hues in between\n * those two colors. The alpha argument can be thought of as the ratio between\n * the two colors, where 0.0 is this color and 1.0 is the first argument.\n *\n * @param {Color} color - The color to converge on.\n * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n * @return {Color} A reference to this color.\n */\n lerpHSL(color, alpha) {\n this.getHSL(_hslA);\n color.getHSL(_hslB);\n const h = lerp(_hslA.h, _hslB.h, alpha);\n const s = lerp(_hslA.s, _hslB.s, alpha);\n const l = lerp(_hslA.l, _hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n }\n /**\n * Sets the color\'s RGB components from the given 3D vector.\n *\n * @param {Vector3} v - The vector to set.\n * @return {Color} A reference to this color.\n */\n setFromVector3(v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n return this;\n }\n /**\n * Transforms this color with the given 3x3 matrix.\n *\n * @param {Matrix3} m - The matrix.\n * @return {Color} A reference to this color.\n */\n applyMatrix3(m) {\n const r = this.r, g = this.g, b = this.b;\n const e = m.elements;\n this.r = e[0] * r + e[3] * g + e[6] * b;\n this.g = e[1] * r + e[4] * g + e[7] * b;\n this.b = e[2] * r + e[5] * g + e[8] * b;\n return this;\n }\n /**\n * Returns `true` if this color is equal with the given one.\n *\n * @param {Color} c - The color to test for equality.\n * @return {boolean} Whether this bounding color is equal with the given one.\n */\n equals(c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n }\n /**\n * Sets this color\'s RGB components from the given array.\n *\n * @param {Array} array - An array holding the RGB values.\n * @param {number} [offset=0] - The offset into the array.\n * @return {Color} A reference to this color.\n */\n fromArray(array, offset = 0) {\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n }\n /**\n * Writes the RGB components of this color to the given array. If no array is provided,\n * the method returns a new instance.\n *\n * @param {Array} [array=[]] - The target array holding the color components.\n * @param {number} [offset=0] - Index of the first element in the array.\n * @return {Array} The color components.\n */\n toArray(array = [], offset = 0) {\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n }\n /**\n * Sets the components of this color from the given buffer attribute.\n *\n * @param {BufferAttribute} attribute - The buffer attribute holding color data.\n * @param {number} index - The index into the attribute.\n * @return {Color} A reference to this color.\n */\n fromBufferAttribute(attribute, index) {\n this.r = attribute.getX(index);\n this.g = attribute.getY(index);\n this.b = attribute.getZ(index);\n return this;\n }\n /**\n * This methods defines the serialization result of this class. Returns the color\n * as a hexadecimal value.\n *\n * @return {number} The hexadecimal value.\n */\n toJSON() {\n return this.getHex();\n }\n *[Symbol.iterator]() {\n yield this.r;\n yield this.g;\n yield this.b;\n }\n }\n const _color = /* @__PURE__ */ new Color();\n Color.NAMES = _colorKeywords;\n if (typeof __THREE_DEVTOOLS__ !== "undefined") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: {\n revision: REVISION\n } }));\n }\n if (typeof window !== "undefined") {\n if (window.__THREE__) {\n console.warn("WARNING: Multiple instances of Three.js being imported.");\n } else {\n window.__THREE__ = REVISION;\n }\n }\n const LN_SCALE_MIN = -12;\n const LN_SCALE_MAX = 9;\n const LN_SCALE_ZERO = -30;\n const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n const SPLAT_TEX_WIDTH_BITS = 11;\n const SPLAT_TEX_HEIGHT_BITS = 11;\n const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS;\n const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS;\n const SPLAT_TEX_MIN_HEIGHT = 1;\n var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => {\n SplatFileType2["PLY"] = "ply";\n SplatFileType2["SPZ"] = "spz";\n SplatFileType2["SPLAT"] = "splat";\n SplatFileType2["KSPLAT"] = "ksplat";\n SplatFileType2["PCSOGS"] = "pcsogs";\n SplatFileType2["PCSOGSZIP"] = "pcsogszip";\n SplatFileType2["RAD"] = "rad";\n return SplatFileType2;\n })(SplatFileType || {});\n function unindentLines(s) {\n var _a2;\n let seenNonEmpty = false;\n const lines = s.split("\\n").map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n }).filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n const indent = (_a2 = lines[0].match(/^\\s*/)) == null ? void 0 : _a2[0];\n if (!indent) {\n return lines;\n }\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, ""));\n }\n function unindent(s) {\n return unindentLines(s).join("\\n");\n }\n const f32buffer = new Float32Array(1);\n const u32buffer = new Uint32Array(f32buffer.buffer);\n const supportsFloat16Array = "Float16Array" in globalThis;\n const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null;\n const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer);\n function normalize(vec) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n }\n const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\n const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n function toHalfNative(f) {\n f16buffer[0] = f;\n return u16buffer[0];\n }\n function toHalfJS(f) {\n f32buffer[0] = f;\n const bits2 = u32buffer[0];\n const sign = bits2 >> 31 & 1;\n const exp = bits2 >> 23 & 255;\n const frac = bits2 & 8388607;\n const halfSign = sign << 15;\n if (exp === 255) {\n if (frac !== 0) {\n return halfSign | 32767;\n }\n return halfSign | 31744;\n }\n const newExp = exp - 127 + 15;\n if (newExp >= 31) {\n return halfSign | 31744;\n }\n if (newExp <= 0) {\n if (newExp < -10) {\n return halfSign;\n }\n const subFrac = (frac | 8388608) >> 1 - newExp + 13;\n return halfSign | subFrac;\n }\n const halfFrac = frac >> 13;\n return halfSign | newExp << 10 | halfFrac;\n }\n function fromHalfNative(u) {\n u16buffer[0] = u;\n return f16buffer[0];\n }\n function fromHalfJS(h) {\n const sign = h >> 15 & 1;\n const exp = h >> 10 & 31;\n const frac = h & 1023;\n let f32bits;\n if (exp === 0) {\n if (frac === 0) {\n f32bits = sign << 31;\n } else {\n let mant = frac;\n let e = -14;\n while ((mant & 1024) === 0) {\n mant <<= 1;\n e--;\n }\n mant &= 1023;\n const newExp = e + 127;\n const newFrac = mant << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n } else if (exp === 31) {\n if (frac === 0) {\n f32bits = sign << 31 | 2139095040;\n } else {\n f32bits = sign << 31 | 2143289344;\n }\n } else {\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n u32buffer[0] = f32bits;\n return f32buffer[0];\n }\n function floatToUint8(v) {\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n function setPackedSplat(packedSplats, index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity);\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN;\n const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX;\n const lnScaleScale = 254 / (lnScaleMax - lnScaleMin);\n const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24;\n }\n function setPackedSplatCenter(packedSplats, index, x2, y, z) {\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760;\n }\n function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) {\n const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN;\n const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX;\n const lnScaleScale = 254 / (lnScaleMax - lnScaleMin);\n const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1\n )\n );\n const i4 = index * 4;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080;\n }\n const tempQuaternion = new Quaternion();\n function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const i4 = index * 4;\n packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24;\n }\n function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;\n }\n function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) {\n const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0;\n const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080;\n }\n function setPackedSplatOpacity(packedSplats, index, opacity) {\n const uA = floatToUint8(opacity);\n const i4 = index * 4;\n packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24;\n }\n new Vector3();\n new Vector3();\n new Color();\n function getTextureSize(numSplats) {\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n }\n function computeMaxSplats(numSplats) {\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n }\n unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n const tempNormalizedQuaternion = new Quaternion();\n const tempAxis = new Vector3();\n function encodeQuatOctXy88R8(q) {\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n const theta = 2 * Math.acos(qnorm.w);\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z\n );\n const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n const angleInt = Math.round(theta * (255 / Math.PI));\n return angleInt << 16 | quantV << 8 | quantU;\n }\n function packSint8Bytes(b0, b1, b22, b3) {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24;\n }\n function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) {\n const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1;\n const sh1Scale = 63 / sh1Max;\n const base = index * 2;\n for (let i2 = 0; i2 < 9; ++i2) {\n const s = sh1Rgb[i2] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 127;\n const bitStart = i2 * 7;\n const bitEnd = bitStart + 7;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh1Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) {\n const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1;\n const sh2Scale = 1 / sh2Max;\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0\n );\n }\n function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) {\n const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1;\n const sh3Scale = 31 / sh3Max;\n const base = index * 4;\n for (let i2 = 0; i2 < 21; ++i2) {\n const s = sh3Rgb[i2] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 63;\n const bitStart = i2 * 6;\n const bitEnd = bitStart + 6;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh3Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n function decompressPartialGzip(fileBytes, numBytes) {\n const chunks = [];\n let totalBytes = 0;\n let result = null;\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset2 = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset2);\n offset2 += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error("Failed to decompress partial gzip");\n }\n }\n return result;\n }\n class GunzipReader {\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024\n }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n const ds = new DecompressionStream("gzip");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n async read(numBytes) {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`\n );\n }\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n }\n function decodeAntiSplat(fileBytes, initNumSplats, splatCallback) {\n const numSplats = Math.floor(fileBytes.length / 32);\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error("Invalid .splat file size");\n }\n initNumSplats(numSplats);\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i322 = i2 * 32;\n const i8 = i2 * 8;\n const x2 = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i322 + 24] / 255;\n const g = fileBytes[i322 + 25] / 255;\n const b = fileBytes[i322 + 26] / 255;\n const opacity = fileBytes[i322 + 27] / 255;\n const quatW = (fileBytes[i322 + 28] - 128) / 128;\n const quatX = (fileBytes[i322 + 29] - 128) / 128;\n const quatY = (fileBytes[i322 + 30] - 128) / 128;\n const quatZ = (fileBytes[i322 + 31] - 128) / 128;\n splatCallback(\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n }\n }\n function unpackAntiSplat(fileBytes, splatEncoding) {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n setPackedSplat(\n packedArray,\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n }\n );\n return { packedArray, numSplats };\n }\n const KSPLAT_COMPRESSION = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n }\n };\n const KSPLAT_SH_DEGREE_TO_COMPONENTS = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n function decodeKsplat(fileBytes, initNumSplats, splatCallback, shCallback) {\n var _a2;\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n for (let section = 0; section < maxSectionCount; ++section) {\n let getSh = function(splatOffset, component) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true\n )\n );\n }\n const t = data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) / 255;\n return minSphericalHarmonicsCoeff + t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff);\n };\n const section2 = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n const sectionSplatCount = section2.getUint32(0, true);\n const sectionMaxSplatCount = section2.getUint32(4, true);\n const bucketSize = section2.getUint32(8, true);\n const bucketCount = section2.getUint32(12, true);\n const bucketBlockSize = section2.getFloat32(16, true);\n const bucketStorageSizeBytes = section2.getUint16(20, true);\n const compressionScaleRange = (section2.getUint32(24, true) || ((_a2 = KSPLAT_COMPRESSION[compressionLevel]) == null ? void 0 : _a2.scaleRange)) ?? 1;\n const fullBucketCount = section2.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section2.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes = bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section2.getUint16(40, true);\n const shComponents = KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat = bytesPerCenter + bytesPerScale + bytesPerRotation + bytesPerColor + shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes = splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9,\n 14,\n 19,\n 10,\n 15,\n 20,\n 11,\n 16,\n 21,\n 12,\n 17,\n 22,\n 13,\n 18,\n 23\n ];\n const sh3Index = [\n 24,\n 31,\n 38,\n 25,\n 32,\n 39,\n 26,\n 33,\n 40,\n 27,\n 34,\n 41,\n 28,\n 35,\n 42,\n 29,\n 36,\n 43,\n 30,\n 37,\n 44\n ];\n const sh1 = sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : void 0;\n const sh2 = sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount\n );\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n for (let i2 = 0; i2 < sectionSplatCount; ++i2) {\n const splatOffset = i2 * bytesPerSplat;\n let bucketIndex;\n if (i2 < fullBucketSplats) {\n bucketIndex = Math.floor(i2 / bucketSize);\n } else {\n const bucketLength = partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i2 >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n const x2 = compressionLevel === 0 ? data.getFloat32(splatOffset + 0, true) : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 0];\n const y = compressionLevel === 0 ? data.getFloat32(splatOffset + 4, true) : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 1];\n const z = compressionLevel === 0 ? data.getFloat32(splatOffset + 8, true) : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 2];\n const scaleX = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n const quatW = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true)\n );\n const quatX = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true)\n );\n const quatY = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true)\n );\n const quatZ = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true)\n );\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n splatCallback(\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i22, key] of sh1Index.entries()) {\n sh1[i22] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i22, key] of sh2Index.entries()) {\n sh2[i22] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i22, key] of sh3Index.entries()) {\n sh3[i22] = getSh(splatOffset, key);\n }\n }\n shCallback == null ? void 0 : shCallback(i2, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n }\n function unpackKsplat(fileBytes, splatEncoding) {\n var _a2;\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n for (let section = 0; section < maxSectionCount; ++section) {\n let getSh = function(splatOffset, component) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true\n )\n );\n }\n const t = data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) / 255;\n return minSphericalHarmonicsCoeff + t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff);\n };\n const section2 = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n const sectionSplatCount = section2.getUint32(0, true);\n const sectionMaxSplatCount = section2.getUint32(4, true);\n const bucketSize = section2.getUint32(8, true);\n const bucketCount = section2.getUint32(12, true);\n const bucketBlockSize = section2.getFloat32(16, true);\n const bucketStorageSizeBytes = section2.getUint16(20, true);\n const compressionScaleRange = (section2.getUint32(24, true) || ((_a2 = KSPLAT_COMPRESSION[compressionLevel]) == null ? void 0 : _a2.scaleRange)) ?? 1;\n const fullBucketCount = section2.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section2.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes = bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section2.getUint16(40, true);\n const shComponents = KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat = bytesPerCenter + bytesPerScale + bytesPerRotation + bytesPerColor + shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes = splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9,\n 14,\n 19,\n 10,\n 15,\n 20,\n 11,\n 16,\n 21,\n 12,\n 17,\n 22,\n 13,\n 18,\n 23\n ];\n const sh3Index = [\n 24,\n 31,\n 38,\n 25,\n 32,\n 39,\n 26,\n 33,\n 40,\n 27,\n 34,\n 41,\n 28,\n 35,\n 42,\n 29,\n 36,\n 43,\n 30,\n 37,\n 44\n ];\n const sh1 = sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : void 0;\n const sh2 = sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount\n );\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n for (let i2 = 0; i2 < sectionSplatCount; ++i2) {\n const splatOffset = i2 * bytesPerSplat;\n let bucketIndex;\n if (i2 < fullBucketSplats) {\n bucketIndex = Math.floor(i2 / bucketSize);\n } else {\n const bucketLength = partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i2 >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n const x2 = compressionLevel === 0 ? data.getFloat32(splatOffset + 0, true) : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 0];\n const y = compressionLevel === 0 ? data.getFloat32(splatOffset + 4, true) : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 1];\n const z = compressionLevel === 0 ? data.getFloat32(splatOffset + 8, true) : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 2];\n const scaleX = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n const quatW = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true)\n );\n const quatX = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true)\n );\n const quatY = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true)\n );\n const quatZ = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true)\n );\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n setPackedSplat(\n packedArray,\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i22, key] of sh1Index.entries()) {\n sh1[i22] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1, i2, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh2Index.entries()) {\n sh2[i22] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2, i2, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh3Index.entries()) {\n sh3[i22] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3, i2, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n }\n const PLY_PROPERTY_TYPES = [\n "char",\n "uchar",\n "short",\n "ushort",\n "int",\n "uint",\n "float",\n "double"\n ];\n const _PlyReader = class _PlyReader {\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }) {\n this.header = "";\n this.littleEndian = true;\n this.elements = {};\n this.comments = [];\n this.data = null;\n this.numSplats = 0;\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // "vertex" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (controller) => {\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n }\n });\n const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader();\n this.header = "";\n const headerTerminator = "end_header\\n";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error("Failed to read header");\n }\n this.header += value;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n this.elements = {};\n let curElement = null;\n this.comments = [];\n this.header.trim().split("\\n").forEach((line, lineIndex) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== "ply") {\n throw new Error("Invalid PLY header");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return;\n }\n const fields = trimmedLine.split(" ");\n switch (fields[0]) {\n case "format":\n if (fields[1] === "binary_little_endian") {\n this.littleEndian = true;\n } else if (fields[1] === "binary_big_endian") {\n this.littleEndian = false;\n } else {\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== "1.0") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case "end_header":\n break;\n case "comment":\n this.comments.push(trimmedLine.slice("comment ".length));\n break;\n case "element": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {}\n };\n this.elements[name] = curElement;\n break;\n }\n case "property":\n if (curElement == null) {\n throw new Error("Property must be inside an element");\n }\n if (fields[1] === "list") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3],\n countType: fields[2]\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1]\n };\n }\n break;\n }\n });\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n parseData(elementCallback) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No data to parse");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n const parseFn = createParseFn(properties, this.littleEndian);\n const callback = elementCallback(element) ?? (() => {\n });\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback, shCallback) {\n if (this.elements.vertex == null) {\n throw new Error("No vertex element found");\n }\n let isSuperSplat = false;\n const ssChunks = [];\n let numSh = 0;\n let sh1Props = [];\n let sh2Props = [];\n let sh3Props = [];\n let sh1 = void 0;\n let sh2 = void 0;\n let sh3 = void 0;\n function prepareSh() {\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3));\n sh2Props = new Array(5).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3)\n );\n sh3Props = new Array(7).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3)\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0;\n }\n function ssShCallback(index, item) {\n if (!sh1) {\n throw new Error("Missing sh1");\n }\n const sh = item.f_rest;\n for (let i2 = 0; i2 < sh1Props.length; i2++) {\n sh1[i2] = sh[sh1Props[i2]] * 8 / 255 - 4;\n }\n if (sh2) {\n for (let i2 = 0; i2 < sh2Props.length; i2++) {\n sh2[i2] = sh[sh2Props[i2]] * 8 / 255 - 4;\n }\n }\n if (sh3) {\n for (let i2 = 0; i2 < sh3Props.length; i2++) {\n sh3[i2] = sh[sh3Props[i2]] * 8 / 255 - 4;\n }\n }\n shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3);\n }\n function initSuperSplat(element) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z\n } = element.properties;\n if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) {\n throw new Error("Missing PLY chunk properties");\n }\n isSuperSplat = true;\n return (index, item) => {\n const {\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = item;\n ssChunks.push({\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n });\n };\n }\n function decodeSuperSplat(element) {\n if (shCallback && element.name === "sh") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== "vertex") {\n return null;\n }\n const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties;\n if (!packed_position || !packed_rotation || !packed_scale || !packed_color) {\n throw new Error(\n "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color"\n );\n }\n const SQRT2 = Math.sqrt(2);\n return (index, item) => {\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error("Missing PLY chunk");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = chunk;\n const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item;\n const x2 = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x;\n const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y;\n const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z;\n const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = packed_rotation2 >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n const scaleX = Math.exp(\n (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x\n );\n const scaleY = Math.exp(\n (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y\n );\n const scaleZ = Math.exp(\n (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z\n );\n const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0);\n const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0);\n const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0);\n const opacity = (packed_color2 & 255) / 255;\n splatCallback(\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n };\n }\n const elementCallback = (element) => {\n if (element.name === "chunk") {\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n if (element.name !== "vertex") {\n return null;\n }\n const {\n x: x2,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha\n } = element.properties;\n if (!x2 || !y || !z) {\n throw new Error("Missing PLY properties: x, y, z");\n }\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n numSh = getNumSh(element.properties);\n prepareSh();\n return (index, item) => {\n const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale;\n const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale;\n const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale;\n const quatX = hasRots ? item.rot_1 : 0;\n const quatY = hasRots ? item.rot_2 : 0;\n const quatZ = hasRots ? item.rot_3 : 0;\n const quatW = hasRots ? item.rot_0 : 1;\n const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1;\n const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1;\n const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1;\n const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1;\n splatCallback(\n index,\n item.x,\n item.y,\n item.z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b\n );\n if (shCallback && sh1) {\n const sh = item.f_rest;\n if (sh1) {\n for (let i2 = 0; i2 < sh1Props.length; i2++) {\n sh1[i2] = sh[sh1Props[i2]];\n }\n }\n if (sh2) {\n for (let i2 = 0; i2 < sh2Props.length; i2++) {\n sh2[i2] = sh[sh2Props[i2]];\n }\n }\n if (sh3) {\n for (let i2 = 0; i2 < sh3Props.length; i2++) {\n sh3[i2] = sh[sh3Props[i2]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n this.parseData(elementCallback);\n }\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No parsed data");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error("Invalid RGBA array length");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n let rgbaOffset = 0;\n const isVertex = elementName === "vertex";\n if (isVertex) {\n for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) {\n if (!properties[name] || properties[name].type !== "float") {\n throw new Error(`Can\'t injectRgba due to property: ${name}`);\n }\n }\n }\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") {\n const component = Number.parseInt(\n propertyName.slice("f_dc_".length)\n );\n parsers.push(() => {\n const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n } else if (propertyName === "opacity") {\n parsers.push(() => {\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1)\n )\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.countType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n for (let index = 0; index < count; index++) {\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n };\n _PlyReader.defaultPointScale = 1e-3;\n let PlyReader = _PlyReader;\n const SH_C0$1 = 0.28209479177387814;\n const PARSE_FIELD = {\n char: (data, offset, littleEndian) => {\n return data.getInt8(offset);\n },\n uchar: (data, offset, littleEndian) => {\n return data.getUint8(offset);\n },\n short: (data, offset, littleEndian) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data, offset, littleEndian) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data, offset, littleEndian) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data, offset, littleEndian) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data, offset, littleEndian) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data, offset, littleEndian) => {\n return data.getFloat64(offset, littleEndian);\n }\n };\n const SET_FIELD = {\n char: (data, offset, littleEndian, value) => {\n data.setInt8(offset, value);\n },\n uchar: (data, offset, littleEndian, value) => {\n data.setUint8(offset, value);\n },\n short: (data, offset, littleEndian, value) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (data, offset, littleEndian, value) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (data, offset, littleEndian, value) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (data, offset, littleEndian, value) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (data, offset, littleEndian, value) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (data, offset, littleEndian, value) => {\n data.setFloat64(offset, value, littleEndian);\n }\n };\n const FIELD_BYTES = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8\n };\n const FIELD_SCALE = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1\n };\n const NUM_F_REST_TO_NUM_SH = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3\n };\n const NUM_SH_TO_NUM_F_REST = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n function createEmptyItem(properties) {\n const item = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n }\n function createParseFn(properties, littleEndian) {\n if (safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n }\n const UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function("return 42;");\n } catch (e) {\n return false;\n }\n return true;\n })();\n const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n function safeToCompile(properties) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) {\n return false;\n }\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n }\n function createCompiledParserFn(properties, littleEndian) {\n const parserSrc = ["let list;"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(\n /*js*/\n `\n item.f_rest[${fRestIndex}] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `\n );\n } else if (!property.isList) {\n parserSrc.push(\n /*js*/\n `\n item[\'${propertyName}\'] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `\n );\n } else {\n parserSrc.push(\n /*js*/\n `\n list = item[\'${propertyName}\'];\n list.length = PARSE_FIELD[\'${property.countType}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[\'${property.type}\'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `\n );\n }\n }\n parserSrc.push("return offset;");\n const fn = new Function(\n "data",\n "offset",\n "item",\n "PARSE_FIELD",\n parserSrc.join("\\n")\n );\n return (data, offset, item) => fn(data, offset, item, PARSE_FIELD);\n }\n function createDynamicParserFn(properties, littleEndian) {\n const parsers = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (data, offset, item) => {\n item.f_rest[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian\n );\n return offset + FIELD_BYTES[property.type];\n }\n );\n } else if (!property.isList) {\n parsers.push(\n (data, offset, item) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian\n );\n return offset + FIELD_BYTES[property.type];\n }\n );\n } else {\n parsers.push(\n (data, offset, item) => {\n const list = item[propertyName];\n list.length = PARSE_FIELD[property.countType](\n data,\n offset,\n littleEndian\n );\n let currentOffset = offset + FIELD_BYTES[property.countType];\n for (let i2 = 0; i2 < list.length; i2++) {\n list[i2] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n }\n );\n }\n }\n return (data, offset, item) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n }\n function getNumSh(properties) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n }\n class SpzReader {\n constructor({ fileBytes }) {\n this.version = -1;\n this.numSplats = 0;\n this.shDegree = 0;\n this.fractionalBits = 0;\n this.flags = 0;\n this.flagAntiAlias = false;\n this.flagLod = false;\n this.reserved = 0;\n this.headerParsed = false;\n this.parsed = false;\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes\n });\n }\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error("SPZ file header already parsed");\n }\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 1347635022) {\n throw new Error("Invalid SPZ file");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 1) !== 0;\n this.flagLod = (this.flags & 128) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n async parseSplats(centerCallback, alphaCallback, rgbCallback, scalesCallback, quatCallback, shCallback, {\n childCounts,\n childStarts\n } = {}) {\n if (!this.headerParsed) {\n throw new Error("SPZ file header must be parsed first");\n }\n if (this.parsed) {\n throw new Error("SPZ file already parsed");\n }\n this.parsed = true;\n if (this.version === 1) {\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const x2 = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback == null ? void 0 : centerCallback(i2, x2, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i9 = i2 * 9;\n const x2 = ((centerBytes[i9 + 2] << 24 | centerBytes[i9 + 1] << 16 | centerBytes[i9] << 8) >> 8) / fixed;\n const y = ((centerBytes[i9 + 5] << 24 | centerBytes[i9 + 4] << 16 | centerBytes[i9 + 3] << 8) >> 8) / fixed;\n const z = ((centerBytes[i9 + 8] << 24 | centerBytes[i9 + 7] << 16 | centerBytes[i9 + 6] << 8) >> 8) / fixed;\n centerCallback == null ? void 0 : centerCallback(i2, x2, y, z);\n }\n } else {\n throw new Error("Unreachable");\n }\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n alphaCallback == null ? void 0 : alphaCallback(i2, bytes[i2] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback == null ? void 0 : rgbCallback(i2, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback == null ? void 0 : scalesCallback(i2, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n const maxValue = 1 / Math.sqrt(2);\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3]\n ];\n const combinedValues = values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n const valueMask = (1 << 9) - 1;\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n for (let i22 = 3; i22 >= 0; --i22) {\n if (i22 !== largestIndex) {\n const value = remainingValues & valueMask;\n const sign = remainingValues >>> 9 & 1;\n remainingValues = remainingValues >>> 10;\n quaternion[i22] = maxValue * (value / valueMask);\n quaternion[i22] = sign === 0 ? quaternion[i22] : -quaternion[i22];\n sumSquares += quaternion[i22] * quaternion[i22];\n }\n }\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n quatCallback == null ? void 0 : quatCallback(\n i2,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3]\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ)\n );\n quatCallback == null ? void 0 : quatCallback(i2, quatX, quatY, quatZ, quatW);\n }\n }\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3\n );\n let offset = 0;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback == null ? void 0 : shCallback(i2, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i22 = i2 * 2;\n const count = bytes[i22] + (bytes[i22 + 1] << 8);\n childCounts == null ? void 0 : childCounts(i2, count);\n }\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i4 = i2 * 4;\n const start = bytes[i4] + (bytes[i4 + 1] << 8) + (bytes[i4 + 2] << 16) + (bytes[i4 + 3] << 24);\n childStarts == null ? void 0 : childStarts(i2, start);\n }\n }\n }\n }\n const SH_DEGREE_TO_VECS = { 1: 3, 2: 8, 3: 15 };\n const SH_C0 = 0.28209479177387814;\n const SPZ_MAGIC = 1347635022;\n const SPZ_VERSION = 3;\n const FLAG_ANTIALIASED = 1;\n class SpzWriter {\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true\n }) {\n this.clippedCount = 0;\n const splatSize = 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) + (shDegree >= 2 ? 15 : 0) + (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n this.view.setUint32(0, SPZ_MAGIC, true);\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0);\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n setCenter(index, x2, y, z) {\n const xRounded = Math.round(x2 * this.fraction);\n const xInt = Math.max(-8388607, Math.min(8388607, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-8388607, Math.min(8388607, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-8388607, Math.min(8388607, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 255);\n this.view.setUint8(base + 1, xInt >> 8 & 255);\n this.view.setUint8(base + 2, xInt >> 16 & 255);\n this.view.setUint8(base + 3, yInt & 255);\n this.view.setUint8(base + 4, yInt >> 8 & 255);\n this.view.setUint8(base + 5, yInt >> 16 & 255);\n this.view.setUint8(base + 6, zInt & 255);\n this.view.setUint8(base + 7, zInt >> 8 & 255);\n this.view.setUint8(base + 8, zInt >> 16 & 255);\n }\n setAlpha(index, alpha) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255)))\n );\n }\n static scaleRgb(r) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n setRgb(index, r, g, b) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n setScale(index, scaleX, scaleY, scaleZ) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16)))\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16)))\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16)))\n );\n }\n setQuat(index, ...q) {\n const base = 16 + this.numSplats * 16 + index * 4;\n const quat = normalize(q);\n let iLargest = 0;\n for (let i2 = 1; i2 < 4; ++i2) {\n if (Math.abs(quat[i2]) > Math.abs(quat[iLargest])) {\n iLargest = i2;\n }\n }\n const negate = quat[iLargest] < 0 ? 1 : 0;\n let comp = iLargest;\n for (let i2 = 0; i2 < 4; ++i2) {\n if (i2 !== iLargest) {\n const negbit = (quat[i2] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i2]) / Math.SQRT1_2) + 0.5\n );\n comp = comp << 10 | negbit << 9 | mag;\n }\n }\n this.view.setUint8(base, comp & 255);\n this.view.setUint8(base + 1, comp >> 8 & 255);\n this.view.setUint8(base + 2, comp >> 16 & 255);\n this.view.setUint8(base + 3, comp >>> 24 & 255);\n }\n static quantizeSh(sh, bits2) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << 8 - bits2;\n const quantized = Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n setSh(index, sh1, sh2, sh3) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n async finalize() {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n }\n });\n const compressed = stream.pipeThrough(new CompressionStream("gzip"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n "Compressed",\n input.length,\n "bytes to",\n buffer.byteLength,\n "bytes"\n );\n return new Uint8Array(buffer);\n }\n }\n async function transcodeSpz(input) {\n var _a2, _b2, _c;\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold\n } = input;\n for (const input2 of inputs) {\n let transformPos = function(pos) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }, transformScales = function(scales) {\n scales.multiplyScalar(scale);\n return scales;\n }, transformQuaternion = function(quat) {\n quat.premultiply(quaternion);\n return quat;\n }, withinClip = function(p) {\n return !clip || clip.containsPoint(p);\n }, withinOpacity = function(opacity) {\n return opacityThreshold !== void 0 ? opacity >= opacityThreshold : true;\n };\n const scale = ((_a2 = input2.transform) == null ? void 0 : _a2.scale) ?? 1;\n const quaternion = new Quaternion().fromArray(\n ((_b2 = input2.transform) == null ? void 0 : _b2.quaternion) ?? [0, 0, 0, 1]\n );\n const translate = new Vector3().fromArray(\n ((_c = input2.transform) == null ? void 0 : _c.translate) ?? [0, 0, 0]\n );\n const clip = clipXyz ? new Box3(\n new Vector3().fromArray(clipXyz.min),\n new Vector3().fromArray(clipXyz.max)\n ) : void 0;\n let fileType = input2.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input2.fileBytes);\n if (!fileType && input2.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input2.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input2.fileBytes });\n await ply.parseHeader();\n let lastIndex = null;\n ply.parseSplats(\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n lastIndex,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz2 = new SpzReader({ fileBytes: input2.fileBytes });\n await spz2.parseHeader();\n const mapping = new Int32Array(spz2.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz2.numSplats * 3);\n const center = new Vector3();\n spz2.parseSplats(\n (index, x2, y, z) => {\n const center2 = transformPos(new Vector3(x2, y, z));\n centers[index * 3] = center2.x;\n centers[index * 3 + 1] = center2.y;\n centers[index * 3 + 2] = center2.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n mapping[index],\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n }\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input2.fileBytes,\n (numSplats) => {\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index2 = splats.pushSplat();\n splats.setCenter(index2, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(index2, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n index2,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(index2, opacity);\n splats.setColor(index2, r, g, b);\n }\n }\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex = null;\n decodeKsplat(\n input2.fileBytes,\n (numSplats) => {\n },\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n const center = transformPos(new Vector3(x2, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new Vector3(scaleX, scaleY, scaleZ)\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion2 = transformQuaternion(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n splats.setQuaternion(\n lastIndex,\n quaternion2.x,\n quaternion2.y,\n quaternion2.z,\n quaternion2.w\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n }\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true\n });\n for (let i2 = 0; i2 < splats.numSplats; ++i2) {\n const i3 = i2 * 3;\n const i4 = i2 * 4;\n spz.setCenter(\n i2,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2]\n );\n spz.setScale(\n i2,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2]\n );\n spz.setQuat(\n i2,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3]\n );\n spz.setAlpha(i2, splats.opacities[i2]);\n spz.setRgb(\n i2,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2]\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i2,\n splats.sh1.slice(i2 * 9, (i2 + 1) * 9),\n shDegree >= 2 && splats.sh2 ? splats.sh2.slice(i2 * 15, (i2 + 1) * 15) : void 0,\n shDegree >= 3 && splats.sh3 ? splats.sh3.slice(i2 * 21, (i2 + 1) * 21) : void 0\n );\n }\n }\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n }\n function getSplatFileType(fileBytes) {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 16777215) === 7957616) {\n return SplatFileType.PLY;\n }\n if ((magic & 16777215) === 559903) {\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 1347635022) {\n return SplatFileType.SPZ;\n }\n return void 0;\n }\n if (magic === 67324752) {\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n return void 0;\n }\n if (magic === 809779538) {\n return SplatFileType.RAD;\n }\n return void 0;\n }\n function getFileExtension(pathOrUrl) {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf("/"),\n noTrailing.lastIndexOf("\\\\")\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(".");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return "";\n }\n return filename.slice(lastDot + 1).toLowerCase();\n }\n function getSplatFileTypeFromPath(pathOrUrl) {\n const extension = getFileExtension(pathOrUrl);\n if (extension === "ply") {\n return SplatFileType.PLY;\n }\n if (extension === "spz") {\n return SplatFileType.SPZ;\n }\n if (extension === "splat") {\n return SplatFileType.SPLAT;\n }\n if (extension === "ksplat") {\n return SplatFileType.KSPLAT;\n }\n if (extension === "sog") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === "rad") {\n return SplatFileType.RAD;\n }\n return void 0;\n }\n function tryPcSogs(input) {\n try {\n let text;\n if (typeof input === "string") {\n text = input;\n } else {\n const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n return void 0;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n const json = JSON.parse(text);\n if (!json || typeof json !== "object" || Array.isArray(json)) {\n return void 0;\n }\n const isVersion2 = json.version === 2;\n for (const key of ["means", "scales", "quats", "sh0"]) {\n if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) {\n return void 0;\n }\n if (isVersion2) {\n if (!json[key].files) {\n return void 0;\n }\n if ((key === "scales" || key === "sh0") && !json[key].codebook) {\n return void 0;\n }\n if (key === "means" && (!json[key].mins || !json[key].maxs)) {\n return void 0;\n }\n } else {\n if (!json[key].shape || !json[key].files) {\n return void 0;\n }\n if (key !== "quats" && (!json[key].mins || !json[key].maxs)) {\n return void 0;\n }\n }\n }\n return json;\n } catch {\n return void 0;\n }\n }\n function tryPcSogsZip(input) {\n try {\n const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename = null;\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop();\n if (filename === "meta.json") {\n metaFilename = name;\n return true;\n }\n return false;\n }\n });\n if (!metaFilename) {\n return void 0;\n }\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return void 0;\n }\n return { name: metaFilename, json };\n } catch {\n return void 0;\n }\n }\n class SplatData {\n constructor({ maxSplats = 1 } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n pushSplat() {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n unpushSplat(index) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error("Cannot unpush splat from non-last position");\n }\n }\n ensureCapacity(numSplats) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n this.maxSplats = targetSplats;\n }\n }\n ensureIndex(index) {\n this.ensureCapacity(index + 1);\n }\n setCenter(index, x2, y, z) {\n this.centers[index * 3] = x2;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n setScale(index, scaleX, scaleY, scaleZ) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n setQuaternion(index, x2, y, z, w) {\n this.quaternions[index * 4] = x2;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n setOpacity(index, opacity) {\n this.opacities[index] = opacity;\n }\n setColor(index, r, g, b) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n setSh1(index, sh1) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n setSh2(index, sh2) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n setSh3(index, sh3) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n }\n async function unpackPcSogs(json, extraFiles, splatEncoding) {\n const isVersion2 = "version" in json;\n if (!isVersion2 && json.quats.encoding !== "quaternion_packed") {\n throw new Error("Unsupported quaternion encoding");\n }\n const numSplats = isVersion2 ? json.count : json.means.shape[0];\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n const meansPromise = Promise.all([\n decodeImageRgba(extraFiles[json.means.files[0]]),\n decodeImageRgba(extraFiles[json.means.files[1]])\n ]).then((means) => {\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const fx = (means[0][i4 + 0] + (means[1][i4 + 0] << 8)) / 65535;\n const fy = (means[0][i4 + 1] + (means[1][i4 + 1] << 8)) / 65535;\n const fz = (means[0][i4 + 2] + (means[1][i4 + 2] << 8)) / 65535;\n let x2 = json.means.mins[0] + (json.means.maxs[0] - json.means.mins[0]) * fx;\n let y = json.means.mins[1] + (json.means.maxs[1] - json.means.mins[1]) * fy;\n let z = json.means.mins[2] + (json.means.maxs[2] - json.means.mins[2]) * fz;\n x2 = Math.sign(x2) * (Math.exp(Math.abs(x2)) - 1);\n y = Math.sign(y) * (Math.exp(Math.abs(y)) - 1);\n z = Math.sign(z) * (Math.exp(Math.abs(z)) - 1);\n setPackedSplatCenter(packedArray, i2, x2, y, z);\n }\n });\n const scalesPromise = decodeImageRgba(extraFiles[json.scales.files[0]]).then(\n (scales) => {\n let xLookup;\n let yLookup;\n let zLookup;\n if (isVersion2) {\n xLookup = yLookup = zLookup = json.scales.codebook.map((x2) => Math.exp(x2));\n } else {\n xLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[0] + (json.scales.maxs[0] - json.scales.mins[0]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n yLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[1] + (json.scales.maxs[1] - json.scales.mins[1]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n zLookup = new Array(256).fill(0).map(\n (_, i2) => json.scales.mins[2] + (json.scales.maxs[2] - json.scales.mins[2]) * (i2 / 255)\n ).map((x2) => Math.exp(x2));\n }\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n setPackedSplatScales(\n packedArray,\n i2,\n xLookup[scales[i4 + 0]],\n yLookup[scales[i4 + 1]],\n zLookup[scales[i4 + 2]],\n splatEncoding\n );\n }\n }\n );\n const quatsPromise = decodeImageRgba(extraFiles[json.quats.files[0]]).then(\n (quats) => {\n const SQRT2 = Math.sqrt(2);\n const lookup = new Array(256).fill(0).map((_, i2) => (i2 / 255 - 0.5) * SQRT2);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const r0 = lookup[quats[i4 + 0]];\n const r1 = lookup[quats[i4 + 1]];\n const r2 = lookup[quats[i4 + 2]];\n const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = quats[i4 + 3] - 252;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n setPackedSplatQuat(packedArray, i2, quatX, quatY, quatZ, quatW);\n }\n }\n );\n const sh0Promise = decodeImageRgba(extraFiles[json.sh0.files[0]]).then(\n (sh0) => {\n const SH_C02 = 0.28209479177387814;\n let rLookup;\n let gLookup;\n let bLookup;\n let aLookup;\n if (isVersion2) {\n rLookup = gLookup = bLookup = json.sh0.codebook.map((x2) => SH_C02 * x2 + 0.5);\n aLookup = new Array(256).fill(0).map((_, i2) => i2 / 255);\n } else {\n rLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[0] + (json.sh0.maxs[0] - json.sh0.mins[0]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n gLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[1] + (json.sh0.maxs[1] - json.sh0.mins[1]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n bLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[2] + (json.sh0.maxs[2] - json.sh0.mins[2]) * (i2 / 255)\n ).map((x2) => SH_C02 * x2 + 0.5);\n aLookup = new Array(256).fill(0).map(\n (_, i2) => json.sh0.mins[3] + (json.sh0.maxs[3] - json.sh0.mins[3]) * (i2 / 255)\n ).map((x2) => 1 / (1 + Math.exp(-x2)));\n }\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n setPackedSplatRgba(\n packedArray,\n i2,\n rLookup[sh0[i4 + 0]],\n gLookup[sh0[i4 + 1]],\n bLookup[sh0[i4 + 2]],\n aLookup[sh0[i4 + 3]],\n splatEncoding\n );\n }\n }\n );\n const promises = [meansPromise, scalesPromise, quatsPromise, sh0Promise];\n if (json.shN) {\n const useSH3 = isVersion2 ? json.shN.bands >= 3 : json.shN.shape[1] >= 48 - 3;\n const useSH2 = isVersion2 ? json.shN.bands >= 2 : json.shN.shape[1] >= 27 - 3;\n const useSH1 = isVersion2 ? json.shN.bands >= 1 : json.shN.shape[1] >= 12 - 3;\n if (useSH1) extra.sh1 = new Uint32Array(numSplats * 2);\n if (useSH2) extra.sh2 = new Uint32Array(numSplats * 4);\n if (useSH3) extra.sh3 = new Uint32Array(numSplats * 4);\n const sh1 = new Float32Array(9);\n const sh2 = new Float32Array(15);\n const sh3 = new Float32Array(21);\n const shN = json.shN;\n const shNPromise = Promise.all([\n decodeImage(extraFiles[json.shN.files[0]]),\n decodeImage(extraFiles[json.shN.files[1]])\n ]).then(([centroids, labels]) => {\n const lookup = "codebook" in shN ? shN.codebook : new Array(256).fill(0).map((_, i2) => shN.mins + (shN.maxs - shN.mins) * (i2 / 255));\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i4 = i2 * 4;\n const label = labels.rgba[i4 + 0] + (labels.rgba[i4 + 1] << 8);\n const col = (label & 63) * 15;\n const row = label >>> 6;\n const offset = row * centroids.width + col;\n for (let d = 0; d < 3; ++d) {\n if (useSH1) {\n for (let k = 0; k < 3; ++k) {\n sh1[k * 3 + d] = lookup[centroids.rgba[(offset + k) * 4 + d]];\n }\n }\n if (useSH2) {\n for (let k = 0; k < 5; ++k) {\n sh2[k * 3 + d] = lookup[centroids.rgba[(offset + 3 + k) * 4 + d]];\n }\n }\n if (useSH3) {\n for (let k = 0; k < 7; ++k) {\n sh3[k * 3 + d] = lookup[centroids.rgba[(offset + 8 + k) * 4 + d]];\n }\n }\n }\n if (useSH1)\n encodeSh1Rgb(extra.sh1, i2, sh1, splatEncoding);\n if (useSH2)\n encodeSh2Rgb(extra.sh2, i2, sh2, splatEncoding);\n if (useSH3)\n encodeSh3Rgb(extra.sh3, i2, sh3, splatEncoding);\n }\n });\n promises.push(shNPromise);\n }\n await Promise.all(promises);\n return { packedArray, numSplats, extra };\n }\n let offscreenGlContext = null;\n async function decodeImage(fileBytes) {\n if (!offscreenGlContext) {\n const canvas = new OffscreenCanvas(1, 1);\n offscreenGlContext = canvas.getContext("webgl2");\n if (!offscreenGlContext) {\n throw new Error("Failed to create WebGL2 context");\n }\n }\n const imageBlob = new Blob([fileBytes]);\n const bitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: "none"\n });\n const gl = offscreenGlContext;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n );\n const data = new Uint8Array(bitmap.width * bitmap.height * 4);\n gl.readPixels(\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data\n );\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n return { rgba: data, width: bitmap.width, height: bitmap.height };\n }\n async function decodeImageRgba(fileBytes) {\n const { rgba } = await decodeImage(fileBytes);\n return rgba;\n }\n async function unpackPcSogsZip(fileBytes, splatEncoding) {\n var _a2;\n const nameJson = tryPcSogsZip(fileBytes);\n if (!nameJson) {\n throw new Error("Invalid PC SOGS zip file");\n }\n const { name, json } = nameJson;\n const lastSlash = name.lastIndexOf("/");\n const lastBackslash = name.lastIndexOf("\\\\");\n const prefix = name.slice(0, Math.max(lastSlash, lastBackslash) + 1);\n const fileMap = /* @__PURE__ */ new Map();\n const refFiles = [\n ...json.means.files,\n ...json.scales.files,\n ...json.quats.files,\n ...json.sh0.files,\n ...((_a2 = json.shN) == null ? void 0 : _a2.files) ?? []\n ];\n for (const file of refFiles) {\n fileMap.set(prefix + file, file);\n }\n const unzipped = await new Promise(\n (resolve, reject) => {\n unzip(\n fileBytes,\n {\n filter: ({ name: name2 }) => {\n return fileMap.has(name2);\n }\n },\n (err2, files) => {\n if (err2) {\n reject(err2);\n } else {\n resolve(files);\n }\n }\n );\n }\n );\n const extraFiles = {};\n for (const [full, name2] of fileMap.entries()) {\n extraFiles[name2] = unzipped[full];\n }\n return await unpackPcSogs(json, extraFiles, splatEncoding);\n }\n async function onMessage(event) {\n const { name, args, id } = event.data;\n let result = void 0;\n let error = void 0;\n try {\n switch (name) {\n case "unpackPly": {\n const { packedArray, fileBytes, splatEncoding } = args;\n const decoded = await unpackPly({\n packedArray,\n fileBytes,\n splatEncoding\n });\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeSpz": {\n const { fileBytes, splatEncoding } = args;\n const decoded = await unpackSpz(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeAntiSplat": {\n const { fileBytes, splatEncoding } = args;\n const decoded = unpackAntiSplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray\n };\n break;\n }\n case "decodeKsplat": {\n const { fileBytes, splatEncoding } = args;\n const decoded = unpackKsplat(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodePcSogs": {\n const { fileBytes, extraFiles, splatEncoding } = args;\n const json = JSON.parse(\n new TextDecoder().decode(fileBytes)\n );\n const decoded = await unpackPcSogs(json, extraFiles, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodePcSogsZip": {\n const { fileBytes, splatEncoding } = args;\n const decoded = await unpackPcSogsZip(fileBytes, splatEncoding);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "sortSplats": {\n const { totalSplats, readback, ordering } = args;\n result = {\n id,\n readback,\n ...sortSplats({ totalSplats, readback, ordering })\n };\n break;\n }\n case "sortDoubleSplats": {\n const { numSplats, readback, ordering } = args;\n {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort_splats(numSplats, readback, ordering)\n };\n }\n break;\n }\n case "sort32Splats": {\n const { numSplats, readback, ordering } = args;\n {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort32_splats(numSplats, readback, ordering)\n };\n }\n break;\n }\n case "transcodeSpz": {\n const input = args;\n const spzBytes = await transcodeSpz(input);\n result = {\n id,\n fileBytes: spzBytes,\n input\n };\n break;\n }\n default: {\n throw new Error(`Unknown name: ${name}`);\n }\n }\n } catch (e) {\n error = e;\n console.error(error);\n }\n self.postMessage(\n { id, result, error },\n { transfer: getTransferable(result) }\n );\n }\n async function unpackPly({\n packedArray,\n fileBytes,\n splatEncoding\n }) {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const extra = {};\n ply.parseSplats(\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n setPackedSplat(\n packedArray,\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding\n );\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3, splatEncoding);\n }\n }\n );\n return { packedArray, numSplats, extra };\n }\n async function unpackSpz(fileBytes, splatEncoding) {\n const spz = new SpzReader({ fileBytes });\n await spz.parseHeader();\n const numSplats = spz.numSplats;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n let extraCallbacks = {};\n if (spz.flagLod) {\n const childCounts = new Uint16Array(numSplats);\n const childStarts = new Uint32Array(numSplats);\n extra.childCounts = childCounts;\n extra.childStarts = childStarts;\n extraCallbacks = {\n childCounts: (index, count) => {\n childCounts[index] = count;\n },\n childStarts: (index, start) => {\n childStarts[index] = start;\n }\n };\n }\n await spz.parseSplats(\n (index, x2, y, z) => {\n setPackedSplatCenter(packedArray, index, x2, y, z);\n },\n (index, alpha) => {\n setPackedSplatOpacity(packedArray, index, alpha);\n },\n (index, r, g, b) => {\n setPackedSplatRgb(packedArray, index, r, g, b, splatEncoding);\n },\n (index, scaleX, scaleY, scaleZ) => {\n setPackedSplatScales(\n packedArray,\n index,\n scaleX,\n scaleY,\n scaleZ,\n splatEncoding\n );\n },\n (index, quatX, quatY, quatZ, quatW) => {\n setPackedSplatQuat(packedArray, index, quatX, quatY, quatZ, quatW);\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3, splatEncoding);\n }\n },\n extraCallbacks\n );\n return { packedArray, numSplats, extra };\n }\n const DEPTH_INFINITY_F16 = 31744;\n const DEPTH_SIZE_16 = DEPTH_INFINITY_F16 + 1;\n let depthArray16 = null;\n function sortSplats({\n totalSplats,\n readback,\n ordering\n }) {\n if (!depthArray16) {\n depthArray16 = new Uint32Array(DEPTH_SIZE_16);\n }\n depthArray16.fill(0);\n const readbackUint32 = readback.map((layer) => new Uint32Array(layer.buffer));\n const layerSize = readbackUint32[0].length;\n const numLayers = Math.ceil(totalSplats / layerSize);\n let layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY_F16) {\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n let activeSplats = 0;\n for (let j = 0; j < DEPTH_SIZE_16; ++j) {\n const nextIndex = activeSplats + depthArray16[j];\n depthArray16[j] = activeSplats;\n activeSplats = nextIndex;\n }\n layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY_F16) {\n ordering[depthArray16[pri]] = layerBase + i2;\n depthArray16[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n if (depthArray16[DEPTH_SIZE_16 - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray16[DEPTH_SIZE_16 - 1]}`\n );\n }\n return { activeSplats, ordering };\n }\n const messageBuffer = [];\n function bufferMessage(event) {\n messageBuffer.push(event);\n }\n async function initialize() {\n self.addEventListener("message", bufferMessage);\n await __wbg_init();\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of messageBuffer) {\n onMessage(event);\n }\n messageBuffer.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=oldWorker-DUF0ALOS.js.map\n'; -const blob$1 = typeof self !== "undefined" && self.Blob && new Blob([jsContent$1], { type: "text/javascript;charset=utf-8" }); -function WorkerWrapper$1(options) { - let objURL; - try { - objURL = blob$1 && (self.URL || self.webkitURL).createObjectURL(blob$1); - if (!objURL) throw ""; - const worker = new Worker(objURL, { - name: options == null ? void 0 : options.name - }); - worker.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(objURL); - }); - return worker; - } catch (e) { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent$1), - { - name: options == null ? void 0 : options.name - } - ); - } finally { - objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); - } +const LN_SCALE_MIN = -12; +const LN_SCALE_MAX = 9; +const SCALE_MIN = Math.exp(LN_SCALE_MIN); +const SCALE_MAX = Math.exp(LN_SCALE_MAX); +const LN_SCALE_ZERO = -30; +const SCALE_ZERO = Math.exp(LN_SCALE_ZERO); +const SPLAT_TEX_WIDTH_BITS = 11; +const SPLAT_TEX_HEIGHT_BITS = 11; +const SPLAT_TEX_DEPTH_BITS = 11; +const SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; +const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; +const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; +const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; +const SPLAT_TEX_MIN_HEIGHT = 1; +const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1; +const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1; +const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1; +const WASM_SPLAT_SORT = true; +const USE_COMPILED_PARSER_FUNCTION = true; +var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => { + SplatFileType2["PLY"] = "ply"; + SplatFileType2["SPZ"] = "spz"; + SplatFileType2["SPLAT"] = "splat"; + SplatFileType2["KSPLAT"] = "ksplat"; + SplatFileType2["PCSOGS"] = "pcsogs"; + SplatFileType2["PCSOGSZIP"] = "pcsogszip"; + SplatFileType2["RAD"] = "rad"; + return SplatFileType2; +})(SplatFileType || {}); +const DEFAULT_SPLAT_ENCODING = { + rgbMin: 0, + rgbMax: 1, + lnScaleMin: LN_SCALE_MIN, + lnScaleMax: LN_SCALE_MAX, + sh1Max: 1, + sh2Max: 1, + sh3Max: 1, + lodOpacity: false +}; +const defines = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + DEFAULT_SPLAT_ENCODING, + LN_SCALE_MAX, + LN_SCALE_MIN, + LN_SCALE_ZERO, + SCALE_MAX, + SCALE_MIN, + SCALE_ZERO, + SPLAT_TEX_DEPTH, + SPLAT_TEX_DEPTH_BITS, + SPLAT_TEX_DEPTH_MASK, + SPLAT_TEX_HEIGHT, + SPLAT_TEX_HEIGHT_BITS, + SPLAT_TEX_HEIGHT_MASK, + SPLAT_TEX_LAYER_BITS, + SPLAT_TEX_MIN_HEIGHT, + SPLAT_TEX_WIDTH, + SPLAT_TEX_WIDTH_BITS, + SPLAT_TEX_WIDTH_MASK, + SplatFileType, + USE_COMPILED_PARSER_FUNCTION, + WASM_SPLAT_SORT +}, Symbol.toStringTag, { value: "Module" })); +function isBoolType(type) { + return type === "bool" || type === "bvec2" || type === "bvec3" || type === "bvec4"; } -var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; -var fleb = new u8([ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - /* unused */ - 0, - 0, - /* impossible */ - 0 -]); -var fdeb = new u8([ - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13, - /* unused */ - 0, - 0 -]); -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -var freb = function(eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - var r = new i32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = j - b[i] << 5 | i; - } +function isScalarType(type) { + return type === "int" || type === "uint" || type === "float"; +} +function isIntType(type) { + return type === "int" || type === "ivec2" || type === "ivec3" || type === "ivec4"; +} +function isUintType(type) { + return type === "uint" || type === "uvec2" || type === "uvec3" || type === "uvec4"; +} +function isFloatType(type) { + return type === "float" || type === "vec2" || type === "vec3" || type === "vec4"; +} +function isMatFloatType(type) { + return type === "mat2" || type === "mat2x2" || type === "mat2x3" || type === "mat2x4" || type === "mat3" || type === "mat3x2" || type === "mat3x3" || type === "mat3x4" || type === "mat4" || type === "mat4x2" || type === "mat4x3" || type === "mat4x4"; +} +function isAllFloatType(type) { + return isFloatType(type) || isMatFloatType(type); +} +function isVector2Type(type) { + return type === "vec2" || type === "ivec2" || type === "uvec2"; +} +function isVector3Type(type) { + return type === "vec3" || type === "ivec3" || type === "uvec3"; +} +function isVector4Type(type) { + return type === "vec4" || type === "ivec4" || type === "uvec4"; +} +function isVectorType(type) { + return isVector2Type(type) || isVector3Type(type) || isVector4Type(type); +} +function isMat2(type) { + return type === "mat2" || type === "mat2x2"; +} +function isMat3(type) { + return type === "mat3" || type === "mat3x3"; +} +function isMat4(type) { + return type === "mat4" || type === "mat4x4"; +} +function vectorElementType(type) { + switch (type) { + case "vec2": + return "float"; + case "vec3": + return "float"; + case "vec4": + return "float"; + case "ivec2": + return "int"; + case "ivec3": + return "int"; + case "ivec4": + return "int"; + case "uvec2": + return "uint"; + case "uvec3": + return "uint"; + case "uvec4": + return "uint"; + default: + throw new Error(`Invalid vector type: ${type}`); } - return { b, r }; -}; -var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0), fd = _b.b; -var rev = new u16(32768); -for (var i = 0; i < 32768; ++i) { - var x = (i & 43690) >> 1 | (i & 21845) << 1; - x = (x & 52428) >> 2 | (x & 13107) << 2; - x = (x & 61680) >> 4 | (x & 3855) << 4; - rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; } -var hMap = function(cd, mb, r) { - var s = cd.length; - var i = 0; - var l = new u16(mb); - for (; i < s; ++i) { - if (cd[i]) - ++l[cd[i] - 1]; +function vectorDim(type) { + switch (type) { + case "vec2": + case "ivec2": + case "uvec2": + return 2; + case "vec3": + case "ivec3": + case "uvec3": + return 3; + case "vec4": + case "ivec4": + case "uvec4": + return 4; + default: + throw new Error(`Invalid vector type: ${type}`); } - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = le[i - 1] + l[i - 1] << 1; +} +function sameSizeVec(type) { + if (isScalarType(type)) { + return "float"; } - var co; - if (r) { - co = new u16(1 << mb); - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - if (cd[i]) { - var sv = i << 4 | cd[i]; - var r_1 = mb - cd[i]; - var v = le[cd[i] - 1]++ << r_1; - for (var m = v | (1 << r_1) - 1; v <= m; ++v) { - co[rev[v] >> rvb] = sv; + if (isVector2Type(type)) { + return "vec2"; + } + if (isVector3Type(type)) { + return "vec3"; + } + if (isVector4Type(type)) { + return "vec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function sameSizeUvec(type) { + if (isScalarType(type)) { + return "uint"; + } + if (isVector2Type(type)) { + return "uvec2"; + } + if (isVector3Type(type)) { + return "uvec3"; + } + if (isVector4Type(type)) { + return "uvec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function sameSizeIvec(type) { + if (isScalarType(type)) { + return "int"; + } + if (isVector2Type(type)) { + return "ivec2"; + } + if (isVector3Type(type)) { + return "ivec3"; + } + if (isVector4Type(type)) { + return "ivec4"; + } + throw new Error(`Invalid vector type: ${type}`); +} +function typeLiteral(type) { + if (typeof type === "string") { + return type; + } + if (typeof type === "object" && type.type) { + return type.type; + } + throw new Error(`Invalid DynoType: ${String(type)}`); +} +function numberAsInt(value) { + return Math.trunc(value).toString(); +} +function numberAsUint(value) { + const v = Math.max(0, Math.trunc(value)); + return `${v.toString()}u`; +} +function numberAsFloat(value) { + return value === Number.POSITIVE_INFINITY ? "INFINITY" : value === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(value) ? value.toFixed(1) : value.toString(); +} +function valType(val) { + if (val instanceof DynoValue) { + return val.type; + } + const value = val.dynoOut(); + return value.type; +} +class DynoValue { + constructor(type) { + this.__isDynoValue = true; + this.type = type; + } +} +class DynoOutput extends DynoValue { + constructor(dyno2, key) { + super(dyno2.outTypes[key]); + this.dyno = dyno2; + this.key = key; + } +} +class DynoLiteral extends DynoValue { + constructor(type, literal) { + super(type); + this.literal = literal; + } + getLiteral() { + return this.literal; + } +} +function dynoLiteral(type, literal) { + return new DynoLiteral(type, literal); +} +class DynoConst extends DynoLiteral { + constructor(type, value) { + super(type, ""); + this.value = value; + } + getLiteral() { + const { type, value } = this; + switch (type) { + case "bool": + return value ? "true" : "false"; + case "uint": + return numberAsUint(value); + case "int": + return numberAsInt(value); + case "float": + return numberAsFloat(value); + case "bvec2": { + const v = value; + return `bvec2(${v[0]}, ${v[1]})`; + } + case "uvec2": { + if (value instanceof THREE.Vector2) { + return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`; } + const v = value; + return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`; } - } - } else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + case "ivec2": { + if (value instanceof THREE.Vector2) { + return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`; + } + const v = value; + return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`; } - } - } - return co; -}; -var flt = new u8(288); -for (var i = 0; i < 144; ++i) - flt[i] = 8; -for (var i = 144; i < 256; ++i) - flt[i] = 9; -for (var i = 256; i < 280; ++i) - flt[i] = 7; -for (var i = 280; i < 288; ++i) - flt[i] = 8; -var fdt = new u8(32); -for (var i = 0; i < 32; ++i) - fdt[i] = 5; -var flrm = /* @__PURE__ */ hMap(flt, 9, 1); -var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); -var max$1 = function(a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; -}; -var bits = function(d, p, m) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8) >> (p & 7) & m; -}; -var bits16 = function(d, p) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); -}; -var shft = function(p) { - return (p + 7) / 8 | 0; -}; -var slc = function(v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - return new u8(v.subarray(s, e)); -}; -var ec = [ - "unexpected EOF", - "invalid block type", - "invalid length/literal", - "invalid distance", - "stream finished", - "no stream handler", - , - "no callback", - "invalid UTF-8 data", - "extra field too long", - "date not in range 1980-2099", - "filename too long", - "stream finishing", - "invalid zip data" - // determined by unknown compression method -]; -var err = function(ind, msg, nt) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err); - if (!nt) - throw e; - return e; -}; -var inflt = function(dat, st, buf, dict) { - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - var noBuf = !buf; - var resize = noBuf || st.i != 2; - var noSt = st.i; - if (noBuf) - buf = new u8(sl * 3); - var cbuf = function(l2) { - var bl = buf.length; - if (l2 > bl) { - var nbuf = new u8(Math.max(bl * 2, l2)); - nbuf.set(buf); - buf = nbuf; - } - }; - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - var tbts = sl * 8; - do { - if (!lm) { - final = bits(dat, pos, 1); - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; - if (t > sl) { - if (noSt) - err(0); - break; + case "vec2": { + if (value instanceof THREE.Vector2) { + return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`; } - if (resize) - cbuf(bt + l); - buf.set(dat.subarray(s, t), bt); - st.b = bt += l, st.p = pos = t * 8, st.f = final; - continue; - } else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - var ldt = new u8(tl); - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - clt[clim[i]] = bits(dat, pos + i * 3, 7); + const v = value; + return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`; + } + case "bvec3": { + const v = value; + return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`; + } + case "uvec3": { + if (value instanceof THREE.Vector3) { + return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`; } - pos += hcLen * 3; - var clb = max$1(clt), clbmsk = (1 << clb) - 1; - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl; ) { - var r = clm[bits(dat, pos, clbmsk)]; - pos += r & 15; - var s = r >> 4; - if (s < 16) { - ldt[i++] = s; - } else { - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } + const v = value; + return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`; + } + case "ivec3": { + if (value instanceof THREE.Vector3) { + return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`; } - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - lbt = max$1(lt); - dbt = max$1(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } else - err(1); - if (pos > tbts) { - if (noSt) - err(0); - break; + const v = value; + return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`; } - } - if (resize) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (; ; lpos = pos) { - var c = lm[bits16(dat, pos) & lms], sym = c >> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - err(0); - break; + case "vec3": { + if (value instanceof THREE.Vector3) { + return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`; + } + const v = value; + return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`; } - if (!c) - err(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } else { - var add2 = sym - 254; - if (sym > 264) { - var i = sym - 257, b = fleb[i]; - add2 = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; + case "bvec4": { + const v = value; + return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`; + } + case "uvec4": { + if (value instanceof THREE.Vector4) { + return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`; } - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err(3); - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + const v = value; + return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`; + } + case "ivec4": { + if (value instanceof THREE.Vector4) { + return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`; } - if (pos > tbts) { - if (noSt) - err(0); - break; + const v = value; + return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`; + } + case "vec4": { + if (value instanceof THREE.Vector4) { + return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; } - if (resize) - cbuf(bt + 131072); - var end = bt + add2; - if (bt < dt) { - var shift = dl - dt, dend = Math.min(dt, end); - if (shift + bt < 0) - err(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; + if (value instanceof THREE.Quaternion) { + return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; } - for (; bt < end; ++bt) - buf[bt] = buf[bt - dt]; + const v = value; + return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`; + } + case "mat2": + case "mat2x2": { + const m = value; + const e = m instanceof THREE.Matrix2 ? m.elements : value; + const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat2x3": { + const e = value; + const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat2x4": { + const e = value; + const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3": + case "mat3x3": { + const m = value; + const e = m instanceof THREE.Matrix3 ? m.elements : value; + const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3x2": { + const e = value; + const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat3x4": { + const e = value; + const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4": + case "mat4x4": { + const m = value; + const e = m instanceof THREE.Matrix4 ? m.elements : value; + const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4x2": { + const e = value; + const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; + } + case "mat4x3": { + const e = value; + const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); + return `${type}(${arg.join(", ")})`; } + default: + throw new Error(`Type not implemented: ${String(type)}`); } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); -}; -var et = /* @__PURE__ */ new u8(0); -var b2 = function(d, b) { - return d[b] | d[b + 1] << 8; -}; -var b4 = function(d, b) { - return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0; -}; -var b8 = function(d, b) { - return b4(d, b) + b4(d, b + 4) * 4294967296; -}; -var gzs = function(d) { - if (d[0] != 31 || d[1] != 139 || d[2] != 8) - err(6, "invalid gzip data"); - var flg = d[3]; - var st = 10; - if (flg & 4) - st += (d[10] | d[11] << 8) + 2; - for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) - ; - return st + (flg & 2); -}; -var Inflate = /* @__PURE__ */ function() { - function Inflate2(opts, cb) { - if (typeof opts == "function") - cb = opts, opts = {}; - this.ondata = cb; - var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); - this.s = { i: 0, b: dict ? dict.length : 0 }; - this.o = new u8(32768); - this.p = new u8(0); - if (dict) - this.o.set(dict); } - Inflate2.prototype.e = function(c) { - if (!this.ondata) - err(5); - if (this.d) - err(4); - if (!this.p.length) - this.p = c; - else if (c.length) { - var n = new u8(this.p.length + c.length); - n.set(this.p), n.set(c, this.p.length), this.p = n; - } - }; - Inflate2.prototype.c = function(final) { - this.s.i = +(this.d = final || false); - var bts = this.s.b; - var dt = inflt(this.p, this.s, this.o); - this.ondata(slc(dt, bts, this.s.b), this.d); - this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; - this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; - }; - Inflate2.prototype.push = function(chunk, final) { - this.e(chunk), this.c(final); - }; - return Inflate2; -}(); -function inflateSync(data, opts) { - return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); } -var Gunzip = /* @__PURE__ */ function() { - function Gunzip2(opts, cb) { - this.v = 1; - this.r = 0; - Inflate.call(this, opts, cb); - } - Gunzip2.prototype.push = function(chunk, final) { - Inflate.prototype.e.call(this, chunk); - this.r += chunk.length; - if (this.v) { - var p = this.p.subarray(this.v - 1); - var s = p.length > 3 ? gzs(p) : 4; - if (s > p.length) { - if (!final) - return; - } else if (this.v > 1 && this.onmember) { - this.onmember(this.r - p.length); - } - this.p = p.subarray(s), this.v = 0; - } - Inflate.prototype.c.call(this, final); - if (this.s.f && !this.s.l && !final) { - this.v = shft(this.s.p) + 9; - this.s = { i: 0 }; - this.o = new u8(0); - this.push(new u8(0), final); - } - }; - return Gunzip2; -}(); -var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} catch (e) { +function dynoConst(type, value) { + return new DynoConst(type, value); } -var dutf8 = function(d) { - for (var r = "", i = 0; ; ) { - var c = d[i++]; - var eb = (c > 127) + (c > 223) + (c > 239); - if (i + eb > d.length) - return { s: r, r: slc(d, i - 1) }; - if (!eb) - r += String.fromCharCode(c); - else if (eb == 3) { - c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); - } else if (eb & 1) - r += String.fromCharCode((c & 31) << 6 | d[i++] & 63); - else - r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); +function literalZero(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(false)`; } -}; -function strFromU8(dat, latin1) { - if (latin1) { - var r = ""; - for (var i = 0; i < dat.length; i += 16384) - r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); - return r; - } else if (td) { - return td.decode(dat); - } else { - var _a2 = dutf8(dat), s = _a2.s, r = _a2.r; - if (r.length) - err(8); - return s; + if (isAllFloatType(type)) { + return `${typeString}(0.0)`; + } + if (isIntType(type)) { + return `${typeString}(0)`; } + if (isUintType(type)) { + return `${typeString}(0u)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -var slzh = function(d, b) { - return b + 30 + b2(d, b + 26) + b2(d, b + 28); -}; -var zh = function(d, b, z) { - var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); - var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2]; - return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; -}; -var z64e = function(d, b) { - for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) - ; - return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; -}; -function unzipSync(data, opts) { - var files = {}; - var e = data.length - 22; - for (; b4(data, e) != 101010256; --e) { - if (!e || data.length - e > 65558) - err(13); +function literalOne(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(true)`; } - var c = b2(data, e + 8); - if (!c) - return {}; - var o = b4(data, e + 16); - var z = o == 4294967295 || c == 65535; - if (z) { - var ze = b4(data, e - 12); - z = b4(data, ze) == 101075792; - if (z) { - c = b4(data, ze + 32); - o = b4(data, ze + 48); - } + if (isAllFloatType(type)) { + return `${typeString}(1.0)`; } - var fltr = opts && opts.filter; - for (var i = 0; i < c; ++i) { - var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off); - o = no; - if (!fltr || fltr({ - name: fn, - size: sc, - originalSize: su, - compression: c_2 - })) { - if (!c_2) - files[fn] = slc(data, b, b + sc); - else if (c_2 == 8) - files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) }); - else - err(14, "unknown compression type " + c_2); - } + if (isIntType(type)) { + return `${typeString}(1)`; } - return files; + if (isUintType(type)) { + return `${typeString}(1u)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -const LN_SCALE_MIN = -12; -const LN_SCALE_MAX = 9; -const SCALE_MIN = Math.exp(LN_SCALE_MIN); -const SCALE_MAX = Math.exp(LN_SCALE_MAX); -const LN_SCALE_ZERO = -30; -const SCALE_ZERO = Math.exp(LN_SCALE_ZERO); -const SPLAT_TEX_WIDTH_BITS = 11; -const SPLAT_TEX_HEIGHT_BITS = 11; -const SPLAT_TEX_DEPTH_BITS = 11; -const SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; -const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; -const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; -const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; -const SPLAT_TEX_MIN_HEIGHT = 1; -const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1; -const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1; -const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1; -const WASM_SPLAT_SORT = true; -const USE_COMPILED_PARSER_FUNCTION = true; -var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => { - SplatFileType2["PLY"] = "ply"; - SplatFileType2["SPZ"] = "spz"; - SplatFileType2["SPLAT"] = "splat"; - SplatFileType2["KSPLAT"] = "ksplat"; - SplatFileType2["PCSOGS"] = "pcsogs"; - SplatFileType2["PCSOGSZIP"] = "pcsogszip"; - SplatFileType2["RAD"] = "rad"; - return SplatFileType2; -})(SplatFileType || {}); -const DEFAULT_SPLAT_ENCODING = { - rgbMin: 0, - rgbMax: 1, - lnScaleMin: LN_SCALE_MIN, - lnScaleMax: LN_SCALE_MAX, - sh1Max: 1, - sh2Max: 1, - sh3Max: 1, - lodOpacity: false -}; -const defines = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - DEFAULT_SPLAT_ENCODING, - LN_SCALE_MAX, - LN_SCALE_MIN, - LN_SCALE_ZERO, - SCALE_MAX, - SCALE_MIN, - SCALE_ZERO, - SPLAT_TEX_DEPTH, - SPLAT_TEX_DEPTH_BITS, - SPLAT_TEX_DEPTH_MASK, - SPLAT_TEX_HEIGHT, - SPLAT_TEX_HEIGHT_BITS, - SPLAT_TEX_HEIGHT_MASK, - SPLAT_TEX_LAYER_BITS, - SPLAT_TEX_MIN_HEIGHT, - SPLAT_TEX_WIDTH, - SPLAT_TEX_WIDTH_BITS, - SPLAT_TEX_WIDTH_MASK, - SplatFileType, - USE_COMPILED_PARSER_FUNCTION, - WASM_SPLAT_SORT -}, Symbol.toStringTag, { value: "Module" })); -function isBoolType(type) { - return type === "bool" || type === "bvec2" || type === "bvec3" || type === "bvec4"; +function literalNegOne(type) { + const typeString = String(type); + if (isBoolType(type)) { + return `${typeString}(true)`; + } + if (isAllFloatType(type)) { + return `${typeString}(-1.0)`; + } + if (isIntType(type)) { + return `${typeString}(-1)`; + } + if (isUintType(type)) { + return `${typeString}(0xFFFFFFFFu)`; + } + throw new Error(`Type not implemented: ${typeString}`); } -function isScalarType(type) { - return type === "int" || type === "uint" || type === "float"; +const DEFAULT_INDENT = " "; +class Compilation { + constructor({ indent } = {}) { + this.globals = /* @__PURE__ */ new Set(); + this.statements = []; + this.uniforms = {}; + this.declares = /* @__PURE__ */ new Set(); + this.updaters = []; + this.sequence = 0; + this.indent = DEFAULT_INDENT; + this.indent = indent ?? DEFAULT_INDENT; + } + nextSequence() { + return this.sequence++; + } } -function isIntType(type) { - return type === "int" || type === "ivec2" || type === "ivec3" || type === "ivec4"; -} -function isUintType(type) { - return type === "uint" || type === "uvec2" || type === "uvec3" || type === "uvec4"; -} -function isFloatType(type) { - return type === "float" || type === "vec2" || type === "vec3" || type === "vec4"; -} -function isMatFloatType(type) { - return type === "mat2" || type === "mat2x2" || type === "mat2x3" || type === "mat2x4" || type === "mat3" || type === "mat3x2" || type === "mat3x3" || type === "mat3x4" || type === "mat4" || type === "mat4x2" || type === "mat4x3" || type === "mat4x4"; -} -function isAllFloatType(type) { - return isFloatType(type) || isMatFloatType(type); -} -function isVector2Type(type) { - return type === "vec2" || type === "ivec2" || type === "uvec2"; -} -function isVector3Type(type) { - return type === "vec3" || type === "ivec3" || type === "uvec3"; -} -function isVector4Type(type) { - return type === "vec4" || type === "ivec4" || type === "uvec4"; -} -function isVectorType(type) { - return isVector2Type(type) || isVector3Type(type) || isVector4Type(type); -} -function isMat2(type) { - return type === "mat2" || type === "mat2x2"; -} -function isMat3(type) { - return type === "mat3" || type === "mat3x3"; -} -function isMat4(type) { - return type === "mat4" || type === "mat4x4"; -} -function vectorElementType(type) { - switch (type) { - case "vec2": - return "float"; - case "vec3": - return "float"; - case "vec4": - return "float"; - case "ivec2": - return "int"; - case "ivec3": - return "int"; - case "ivec4": - return "int"; - case "uvec2": - return "uint"; - case "uvec3": - return "uint"; - case "uvec4": - return "uint"; - default: - throw new Error(`Invalid vector type: ${type}`); - } -} -function vectorDim(type) { - switch (type) { - case "vec2": - case "ivec2": - case "uvec2": - return 2; - case "vec3": - case "ivec3": - case "uvec3": - return 3; - case "vec4": - case "ivec4": - case "uvec4": - return 4; - default: - throw new Error(`Invalid vector type: ${type}`); - } -} -function sameSizeVec(type) { - if (isScalarType(type)) { - return "float"; - } - if (isVector2Type(type)) { - return "vec2"; - } - if (isVector3Type(type)) { - return "vec3"; - } - if (isVector4Type(type)) { - return "vec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function sameSizeUvec(type) { - if (isScalarType(type)) { - return "uint"; - } - if (isVector2Type(type)) { - return "uvec2"; - } - if (isVector3Type(type)) { - return "uvec3"; - } - if (isVector4Type(type)) { - return "uvec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function sameSizeIvec(type) { - if (isScalarType(type)) { - return "int"; - } - if (isVector2Type(type)) { - return "ivec2"; - } - if (isVector3Type(type)) { - return "ivec3"; - } - if (isVector4Type(type)) { - return "ivec4"; - } - throw new Error(`Invalid vector type: ${type}`); -} -function typeLiteral(type) { - if (typeof type === "string") { - return type; - } - if (typeof type === "object" && type.type) { - return type.type; +class Dyno { + constructor({ + inTypes, + outTypes, + inputs, + update, + globals, + statements, + generate + }) { + this.inTypes = inTypes ?? {}; + this.outTypes = outTypes ?? {}; + this.inputs = inputs ?? {}; + this.update = update; + this.globals = globals; + this.statements = statements; + this.generate = generate ?? (({ inputs: inputs2, outputs, compile }) => { + var _a2, _b2; + return { + globals: (_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs: inputs2, outputs, compile }), + statements: (_b2 = this.statements) == null ? void 0 : _b2.call(this, { inputs: inputs2, outputs, compile }) + }; + }); } - throw new Error(`Invalid DynoType: ${String(type)}`); -} -function numberAsInt(value) { - return Math.trunc(value).toString(); -} -function numberAsUint(value) { - const v = Math.max(0, Math.trunc(value)); - return `${v.toString()}u`; -} -function numberAsFloat(value) { - return value === Number.POSITIVE_INFINITY ? "INFINITY" : value === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(value) ? value.toFixed(1) : value.toString(); -} -function valType(val) { - if (val instanceof DynoValue) { - return val.type; + get outputs() { + const outputs = {}; + for (const key in this.outTypes) { + outputs[key] = new DynoOutput(this, key); + } + return outputs; } - const value = val.dynoOut(); - return value.type; -} -class DynoValue { - constructor(type) { - this.__isDynoValue = true; - this.type = type; + apply(inputs) { + Object.assign(this.inputs, inputs); + return this.outputs; } -} -class DynoOutput extends DynoValue { - constructor(dyno2, key) { - super(dyno2.outTypes[key]); - this.dyno = dyno2; - this.key = key; + compile({ + inputs, + outputs, + compile + }) { + const result = [ + `// ${this.constructor.name}(${Object.values(inputs).join(", ")}) => (${Object.values(outputs).join(", ")})` + ]; + const declares = []; + for (const key in outputs) { + const name = outputs[key]; + if (name && !compile.declares.has(name)) { + compile.declares.add(name); + declares.push(key); + } + } + const { globals, statements, uniforms } = this.generate({ + inputs, + outputs, + compile + }); + for (const global of globals ?? []) { + compile.globals.add(global); + } + for (const key in uniforms) { + compile.uniforms[key] = uniforms[key]; + } + if (this.update) { + compile.updaters.push(this.update); + } + for (const key of declares) { + const name = outputs[key]; + if (name) { + if (!compile.uniforms[name]) { + result.push(`${dynoDeclare(name, this.outTypes[key])};`); + } + } + } + if (statements == null ? void 0 : statements.length) { + result.push("{"); + result.push(...statements.map((line) => compile.indent + line)); + result.push("}"); + } + return result; } } -class DynoLiteral extends DynoValue { - constructor(type, literal) { - super(type); - this.literal = literal; - } - getLiteral() { - return this.literal; +class DynoBlock extends Dyno { + constructor({ + inTypes, + outTypes, + inputs, + update, + globals, + construct + }) { + super({ + inTypes, + outTypes, + inputs, + update, + globals, + generate: (args) => this.generateBlock(args) + }); + this.construct = construct; } -} -function dynoLiteral(type, literal) { - return new DynoLiteral(type, literal); -} -class DynoConst extends DynoLiteral { - constructor(type, value) { - super(type, ""); - this.value = value; - } - getLiteral() { - const { type, value } = this; - switch (type) { - case "bool": - return value ? "true" : "false"; - case "uint": - return numberAsUint(value); - case "int": - return numberAsInt(value); - case "float": - return numberAsFloat(value); - case "bvec2": { - const v = value; - return `bvec2(${v[0]}, ${v[1]})`; - } - case "uvec2": { - if (value instanceof THREE.Vector2) { - return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`; - } - const v = value; - return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`; - } - case "ivec2": { - if (value instanceof THREE.Vector2) { - return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`; - } - const v = value; - return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`; - } - case "vec2": { - if (value instanceof THREE.Vector2) { - return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`; - } - const v = value; - return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`; - } - case "bvec3": { - const v = value; - return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`; - } - case "uvec3": { - if (value instanceof THREE.Vector3) { - return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`; - } - const v = value; - return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`; + generateBlock({ + inputs, + outputs, + compile + }) { + var _a2, _b2; + const blockInputs = {}; + const blockOutputs = {}; + for (const key in inputs) { + if (inputs[key] != null) { + blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]); } - case "ivec3": { - if (value instanceof THREE.Vector3) { - return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`; - } - const v = value; - return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`; + } + for (const key in outputs) { + if (outputs[key] != null) { + blockOutputs[key] = new DynoValue(this.outTypes[key]); } - case "vec3": { - if (value instanceof THREE.Vector3) { - return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`; + } + const options = { roots: [] }; + const returned = this.construct(blockInputs, blockOutputs, options); + for (const global of ((_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs, outputs, compile })) ?? []) { + compile.globals.add(global); + } + const ordering = []; + const nodeOuts = /* @__PURE__ */ new Map(); + function visit(node, outKey, outName) { + let outs = nodeOuts.get(node); + if (!outs) { + outs = { + sequence: compile.nextSequence(), + outNames: /* @__PURE__ */ new Map(), + newOuts: /* @__PURE__ */ new Set() + }; + nodeOuts.set(node, outs); + for (const key in node.inputs) { + let input = node.inputs[key]; + while (input) { + if (input instanceof DynoValue) { + if (input instanceof DynoOutput) { + visit(input.dyno, input.key); + } + break; + } + if (typeof input.dynoOut !== "function") { + throw new Error( + `dynoOut is not a function for ${input.constructor.name}` + ); + } + input = input.dynoOut(); + } } - const v = value; - return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`; - } - case "bvec4": { - const v = value; - return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`; + ordering.push(node); } - case "uvec4": { - if (value instanceof THREE.Vector4) { - return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`; + if (outKey) { + if (!outName) { + outs.newOuts.add(outKey); } - const v = value; - return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`; + outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`); } - case "ivec4": { - if (value instanceof THREE.Vector4) { - return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`; + } + for (const root of options.roots) { + visit(root); + } + for (const key in blockOutputs) { + let value = (returned == null ? void 0 : returned[key]) ?? blockOutputs[key]; + while (value) { + if (value instanceof DynoValue) { + if (value instanceof DynoOutput) { + visit(value.dyno, value.key, outputs[key]); + } + break; } - const v = value; - return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`; + value = value.dynoOut(); } - case "vec4": { - if (value instanceof THREE.Vector4) { - return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; - } - if (value instanceof THREE.Quaternion) { - return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`; + blockOutputs[key] = value; + } + const steps = []; + for (const dyno2 of ordering) { + const inputs2 = {}; + const outputs2 = {}; + for (const key in dyno2.inputs) { + let value = dyno2.inputs[key]; + while (value) { + if (value instanceof DynoValue) { + if (value instanceof DynoLiteral) { + inputs2[key] = value.getLiteral(); + } else if (value instanceof DynoOutput) { + const source = (_b2 = nodeOuts.get(value.dyno)) == null ? void 0 : _b2.outNames.get(value.key); + if (!source) { + throw new Error( + `Source not found for ${value.dyno.constructor.name}.${value.key}` + ); + } + inputs2[key] = source; + } + break; + } + value = value.dynoOut(); } - const v = value; - return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`; - } - case "mat2": - case "mat2x2": { - const m = value; - const e = m instanceof THREE.Matrix2 ? m.elements : value; - const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat2x3": { - const e = value; - const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat2x4": { - const e = value; - const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3": - case "mat3x3": { - const m = value; - const e = m instanceof THREE.Matrix3 ? m.elements : value; - const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3x2": { - const e = value; - const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat3x4": { - const e = value; - const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; - } - case "mat4": - case "mat4x4": { - const m = value; - const e = m instanceof THREE.Matrix4 ? m.elements : value; - const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; } - case "mat4x2": { - const e = value; - const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; + const outs = nodeOuts.get(dyno2) ?? { outNames: /* @__PURE__ */ new Map() }; + for (const [key, name] of outs.outNames.entries()) { + outputs2[key] = name; } - case "mat4x3": { - const e = value; - const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i])); - return `${type}(${arg.join(", ")})`; + const newSteps = dyno2.compile({ inputs: inputs2, outputs: outputs2, compile }); + steps.push(newSteps); + } + const literalOutputs = []; + for (const key in outputs) { + if (blockOutputs[key] instanceof DynoLiteral) { + literalOutputs.push( + `${outputs[key]} = ${blockOutputs[key].getLiteral()};` + ); } - default: - throw new Error(`Type not implemented: ${String(type)}`); } + if (literalOutputs.length > 0) { + steps.push(literalOutputs); + } + const statements = steps.flatMap((step2, index) => { + return index === 0 ? step2 : ["", ...step2]; + }); + return { statements }; } } -function dynoConst(type, value) { - return new DynoConst(type, value); +function dynoBlock(inTypes, outTypes, construct, { update, globals } = {}) { + return new DynoBlock({ inTypes, outTypes, construct, update, globals }); } -function literalZero(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(false)`; - } - if (isAllFloatType(type)) { - return `${typeString}(0.0)`; - } - if (isIntType(type)) { - return `${typeString}(0)`; - } - if (isUintType(type)) { - return `${typeString}(0u)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -function literalOne(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(true)`; - } - if (isAllFloatType(type)) { - return `${typeString}(1.0)`; - } - if (isIntType(type)) { - return `${typeString}(1)`; - } - if (isUintType(type)) { - return `${typeString}(1u)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -function literalNegOne(type) { - const typeString = String(type); - if (isBoolType(type)) { - return `${typeString}(true)`; - } - if (isAllFloatType(type)) { - return `${typeString}(-1.0)`; - } - if (isIntType(type)) { - return `${typeString}(-1)`; - } - if (isUintType(type)) { - return `${typeString}(0xFFFFFFFFu)`; - } - throw new Error(`Type not implemented: ${typeString}`); -} -const DEFAULT_INDENT = " "; -class Compilation { - constructor({ indent } = {}) { - this.globals = /* @__PURE__ */ new Set(); - this.statements = []; - this.uniforms = {}; - this.declares = /* @__PURE__ */ new Set(); - this.updaters = []; - this.sequence = 0; - this.indent = DEFAULT_INDENT; - this.indent = indent ?? DEFAULT_INDENT; - } - nextSequence() { - return this.sequence++; - } -} -class Dyno { - constructor({ +function dyno$1({ + inTypes, + outTypes, + inputs, + update, + globals, + statements, + generate +}) { + return new Dyno({ inTypes, outTypes, inputs, @@ -1051,320 +705,85 @@ class Dyno { globals, statements, generate - }) { - this.inTypes = inTypes ?? {}; - this.outTypes = outTypes ?? {}; - this.inputs = inputs ?? {}; - this.update = update; - this.globals = globals; - this.statements = statements; - this.generate = generate ?? (({ inputs: inputs2, outputs, compile }) => { - var _a2, _b2; - return { - globals: (_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs: inputs2, outputs, compile }), - statements: (_b2 = this.statements) == null ? void 0 : _b2.call(this, { inputs: inputs2, outputs, compile }) - }; - }); + }); +} +function dynoDeclare(name, type, count) { + const typeStr = typeof type === "string" ? type : type.type; + if (!typeStr) { + throw new Error(`Invalid DynoType: ${String(type)}`); } - get outputs() { - const outputs = {}; - for (const key in this.outTypes) { - outputs[key] = new DynoOutput(this, key); + return `${typeStr} ${name}${count != null ? `[${count}]` : ""}`; +} +function unindentLines(s) { + var _a2; + let seenNonEmpty = false; + const lines = s.split("\n").map((line) => { + const trimmedLine = line.trimEnd(); + if (seenNonEmpty) { + return trimmedLine; } - return outputs; + if (trimmedLine.length > 0) { + seenNonEmpty = true; + return trimmedLine; + } + return null; + }).filter((line) => line != null); + while (lines.length > 0 && lines[lines.length - 1].length === 0) { + lines.pop(); } - apply(inputs) { - Object.assign(this.inputs, inputs); - return this.outputs; + if (lines.length === 0) { + return []; } - compile({ - inputs, - outputs, - compile + const indent = (_a2 = lines[0].match(/^\s*/)) == null ? void 0 : _a2[0]; + if (!indent) { + return lines; + } + const regex = new RegExp(`^${indent}`); + return lines.map((line) => line.replace(regex, "")); +} +function unindent(s) { + return unindentLines(s).join("\n"); +} +class UnaryOp extends Dyno { + constructor({ + a, + outKey, + outTypeFunc }) { - const result = [ - `// ${this.constructor.name}(${Object.values(inputs).join(", ")}) => (${Object.values(outputs).join(", ")})` - ]; - const declares = []; - for (const key in outputs) { - const name = outputs[key]; - if (name && !compile.declares.has(name)) { - compile.declares.add(name); - declares.push(key); - } - } - const { globals, statements, uniforms } = this.generate({ - inputs, - outputs, - compile - }); - for (const global of globals ?? []) { - compile.globals.add(global); - } - for (const key in uniforms) { - compile.uniforms[key] = uniforms[key]; - } - if (this.update) { - compile.updaters.push(this.update); - } - for (const key of declares) { - const name = outputs[key]; - if (name) { - if (!compile.uniforms[name]) { - result.push(`${dynoDeclare(name, this.outTypes[key])};`); - } - } - } - if (statements == null ? void 0 : statements.length) { - result.push("{"); - result.push(...statements.map((line) => compile.indent + line)); - result.push("}"); - } - return result; + const inTypes = { a: valType(a) }; + const outType = outTypeFunc(valType(a)); + const outTypes = { [outKey]: outType }; + super({ inTypes, outTypes, inputs: { a } }); + this.outKey = outKey; + } + dynoOut() { + return new DynoOutput(this, this.outKey); } } -class DynoBlock extends Dyno { +class BinaryOp extends Dyno { constructor({ - inTypes, - outTypes, - inputs, - update, - globals, - construct + a, + b, + outKey, + outTypeFunc }) { - super({ - inTypes, - outTypes, - inputs, - update, - globals, - generate: (args) => this.generateBlock(args) - }); - this.construct = construct; + const inTypes = { a: valType(a), b: valType(b) }; + const outType = outTypeFunc(valType(a), valType(b)); + const outTypes = { [outKey]: outType }; + super({ inTypes, outTypes, inputs: { a, b } }); + this.outKey = outKey; } - generateBlock({ - inputs, - outputs, - compile - }) { - var _a2, _b2; - const blockInputs = {}; - const blockOutputs = {}; - for (const key in inputs) { - if (inputs[key] != null) { - blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]); - } - } - for (const key in outputs) { - if (outputs[key] != null) { - blockOutputs[key] = new DynoValue(this.outTypes[key]); - } - } - const options = { roots: [] }; - const returned = this.construct(blockInputs, blockOutputs, options); - for (const global of ((_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs, outputs, compile })) ?? []) { - compile.globals.add(global); - } - const ordering = []; - const nodeOuts = /* @__PURE__ */ new Map(); - function visit(node, outKey, outName) { - let outs = nodeOuts.get(node); - if (!outs) { - outs = { - sequence: compile.nextSequence(), - outNames: /* @__PURE__ */ new Map(), - newOuts: /* @__PURE__ */ new Set() - }; - nodeOuts.set(node, outs); - for (const key in node.inputs) { - let input = node.inputs[key]; - while (input) { - if (input instanceof DynoValue) { - if (input instanceof DynoOutput) { - visit(input.dyno, input.key); - } - break; - } - if (typeof input.dynoOut !== "function") { - throw new Error( - `dynoOut is not a function for ${input.constructor.name}` - ); - } - input = input.dynoOut(); - } - } - ordering.push(node); - } - if (outKey) { - if (!outName) { - outs.newOuts.add(outKey); - } - outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`); - } - } - for (const root of options.roots) { - visit(root); - } - for (const key in blockOutputs) { - let value = (returned == null ? void 0 : returned[key]) ?? blockOutputs[key]; - while (value) { - if (value instanceof DynoValue) { - if (value instanceof DynoOutput) { - visit(value.dyno, value.key, outputs[key]); - } - break; - } - value = value.dynoOut(); - } - blockOutputs[key] = value; - } - const steps = []; - for (const dyno2 of ordering) { - const inputs2 = {}; - const outputs2 = {}; - for (const key in dyno2.inputs) { - let value = dyno2.inputs[key]; - while (value) { - if (value instanceof DynoValue) { - if (value instanceof DynoLiteral) { - inputs2[key] = value.getLiteral(); - } else if (value instanceof DynoOutput) { - const source = (_b2 = nodeOuts.get(value.dyno)) == null ? void 0 : _b2.outNames.get(value.key); - if (!source) { - throw new Error( - `Source not found for ${value.dyno.constructor.name}.${value.key}` - ); - } - inputs2[key] = source; - } - break; - } - value = value.dynoOut(); - } - } - const outs = nodeOuts.get(dyno2) ?? { outNames: /* @__PURE__ */ new Map() }; - for (const [key, name] of outs.outNames.entries()) { - outputs2[key] = name; - } - const newSteps = dyno2.compile({ inputs: inputs2, outputs: outputs2, compile }); - steps.push(newSteps); - } - const literalOutputs = []; - for (const key in outputs) { - if (blockOutputs[key] instanceof DynoLiteral) { - literalOutputs.push( - `${outputs[key]} = ${blockOutputs[key].getLiteral()};` - ); - } - } - if (literalOutputs.length > 0) { - steps.push(literalOutputs); - } - const statements = steps.flatMap((step2, index) => { - return index === 0 ? step2 : ["", ...step2]; - }); - return { statements }; - } -} -function dynoBlock(inTypes, outTypes, construct, { update, globals } = {}) { - return new DynoBlock({ inTypes, outTypes, construct, update, globals }); -} -function dyno$1({ - inTypes, - outTypes, - inputs, - update, - globals, - statements, - generate -}) { - return new Dyno({ - inTypes, - outTypes, - inputs, - update, - globals, - statements, - generate - }); -} -function dynoDeclare(name, type, count) { - const typeStr = typeof type === "string" ? type : type.type; - if (!typeStr) { - throw new Error(`Invalid DynoType: ${String(type)}`); - } - return `${typeStr} ${name}${count != null ? `[${count}]` : ""}`; -} -function unindentLines(s) { - var _a2; - let seenNonEmpty = false; - const lines = s.split("\n").map((line) => { - const trimmedLine = line.trimEnd(); - if (seenNonEmpty) { - return trimmedLine; - } - if (trimmedLine.length > 0) { - seenNonEmpty = true; - return trimmedLine; - } - return null; - }).filter((line) => line != null); - while (lines.length > 0 && lines[lines.length - 1].length === 0) { - lines.pop(); - } - if (lines.length === 0) { - return []; - } - const indent = (_a2 = lines[0].match(/^\s*/)) == null ? void 0 : _a2[0]; - if (!indent) { - return lines; - } - const regex = new RegExp(`^${indent}`); - return lines.map((line) => line.replace(regex, "")); -} -function unindent(s) { - return unindentLines(s).join("\n"); -} -class UnaryOp extends Dyno { - constructor({ - a, - outKey, - outTypeFunc - }) { - const inTypes = { a: valType(a) }; - const outType = outTypeFunc(valType(a)); - const outTypes = { [outKey]: outType }; - super({ inTypes, outTypes, inputs: { a } }); - this.outKey = outKey; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class BinaryOp extends Dyno { - constructor({ - a, - b, - outKey, - outTypeFunc - }) { - const inTypes = { a: valType(a), b: valType(b) }; - const outType = outTypeFunc(valType(a), valType(b)); - const outTypes = { [outKey]: outType }; - super({ inTypes, outTypes, inputs: { a, b } }); - this.outKey = outKey; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class TrinaryOp extends Dyno { - constructor({ - a, - b, - c, - outKey, - outTypeFunc + dynoOut() { + return new DynoOutput(this, this.outKey); + } +} +class TrinaryOp extends Dyno { + constructor({ + a, + b, + c, + outKey, + outTypeFunc }) { const inTypes = { a: valType(a), b: valType(b), c: valType(c) }; const outType = outTypeFunc(valType(a), valType(b), valType(c)); @@ -1376,6603 +795,5920 @@ class TrinaryOp extends Dyno { return new DynoOutput(this, this.outKey); } } -const threeRevision = Number.parseInt(THREE.REVISION); -const threeMrtArray = threeRevision >= 179; -const f32buffer = new Float32Array(1); -const u32buffer = new Uint32Array(f32buffer.buffer); -const supportsFloat16Array = "Float16Array" in globalThis; -const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null; -const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer); -function normalize$1(vec) { - const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0)); - return vec.map((v) => v / norm); -} -function floatBitsToUint$1(f) { - f32buffer[0] = f; - return u32buffer[0]; -} -function uintBitsToFloat$1(u) { - u32buffer[0] = u; - return f32buffer[0]; -} -const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS; -const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS; -function toHalfNative(f) { - f16buffer[0] = f; - return u16buffer[0]; -} -function toHalfJS(f) { - f32buffer[0] = f; - const bits2 = u32buffer[0]; - const sign2 = bits2 >> 31 & 1; - const exp3 = bits2 >> 23 & 255; - const frac = bits2 & 8388607; - const halfSign = sign2 << 15; - if (exp3 === 255) { - if (frac !== 0) { - return halfSign | 32767; - } - return halfSign | 31744; - } - const newExp = exp3 - 127 + 15; - if (newExp >= 31) { - return halfSign | 31744; - } - if (newExp <= 0) { - if (newExp < -10) { - return halfSign; - } - const subFrac = (frac | 8388608) >> 1 - newExp + 13; - return halfSign | subFrac; - } - const halfFrac = frac >> 13; - return halfSign | newExp << 10 | halfFrac; -} -function fromHalfNative(u) { - u16buffer[0] = u; - return f16buffer[0]; -} -function fromHalfJS(h) { - const sign2 = h >> 15 & 1; - const exp3 = h >> 10 & 31; - const frac = h & 1023; - let f32bits; - if (exp3 === 0) { - if (frac === 0) { - f32bits = sign2 << 31; - } else { - let mant = frac; - let e = -14; - while ((mant & 1024) === 0) { - mant <<= 1; - e--; - } - mant &= 1023; - const newExp = e + 127; - const newFrac = mant << 13; - f32bits = sign2 << 31 | newExp << 23 | newFrac; - } - } else if (exp3 === 31) { - if (frac === 0) { - f32bits = sign2 << 31 | 2139095040; - } else { - f32bits = sign2 << 31 | 2143289344; - } - } else { - const newExp = exp3 - 15 + 127; - const newFrac = frac << 13; - f32bits = sign2 << 31 | newExp << 23 | newFrac; +const Gsplat = { type: "Gsplat" }; +const CovSplat = { type: "CovSplat" }; +const TPackedSplats = { type: "PackedSplats" }; +const TExtSplats = { type: "ExtSplats" }; +const TCovSplats = { type: "CovSplats" }; +const numPackedSplats = (packedSplats) => new NumPackedSplats({ packedSplats }); +const readPackedSplat = (packedSplats, index) => new ReadPackedSplat({ packedSplats, index }); +const readPackedSplatRange = (packedSplats, index, base, count) => new ReadPackedSplatRange({ packedSplats, index, base, count }); +const numExtSplats = (extSplats) => new NumExtSplats({ extSplats }); +const readExtSplat = (extSplats, index) => new ReadExtSplat({ extSplats, index }); +const numCovSplats = (covsplats) => new NumCovSplats({ covsplats }); +const readCovSplat = (covSplats, index) => new ReadCovSplat({ covSplats, index }); +const gsplatToCovSplat = (gsplat) => new GsplatToCovSplat({ gsplat }); +const splitGsplat = (gsplat) => new SplitGsplat({ gsplat }); +const combineGsplat = ({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b +}) => { + return new CombineGsplat({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }); +}; +const gsplatNormal = (gsplat) => new GsplatNormal({ gsplat }); +const transformGsplat = (gsplat, { + scale, + rotate, + translate, + recolor +}) => { + return new TransformGsplat({ gsplat, scale, rotate, translate, recolor }); +}; +const splatTexCoord = (index) => new SplatTexCoord({ index }); +const pagedSplatTexCoord = (index) => new PagedSplatTexCoord({ index }); +const defineGsplat = unindent(` + struct Gsplat { + vec3 center; + uint flags; + vec3 scales; + int index; + vec4 quaternion; + vec4 rgba; + }; + const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; + + bool isGsplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; } - u32buffer[0] = f32bits; - return f32buffer[0]; -} -function floatToUint8(v) { - return Math.max(0, Math.min(255, Math.round(v * 255))); -} -function floatToSint8(v) { - return Math.max(-127, Math.min(127, Math.round(v * 127))); -} -function Uint8ToFloat(v) { - return v / 255; -} -function Sint8ToFloat(v) { - return v / 127; -} -class DataCache { - // Create a DataCache with a given function that fetches data not in the cache. +`); +const defineCovSplat = unindent(` + struct CovSplat { + vec3 center; + uint flags; + vec4 rgba; + vec3 xxyyzz; + int index; + vec3 xyxzyz; + }; + + bool isCovSplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; + } +`); +const definePackedSplats = unindent(` + struct PackedSplats { + usampler2DArray textureArray; + int numSplats; + vec4 rgbMinMaxLnScaleMinMax; + bool lodOpacity; + }; +`); +class NumPackedSplats extends UnaryOp { constructor({ - asyncFetch, - dispose, - maxItems = 5 + packedSplats }) { - this.asyncFetch = asyncFetch; - this.dispose = dispose; - this.maxItems = maxItems; - this.items = []; - this.pending = /* @__PURE__ */ new Map(); - } - has(key) { - return this.items.some((item) => item.key === key); + super({ a: packedSplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; } - getImmediate(key) { - const index = this.items.findIndex((item) => item.key === key); - if (index >= 0) { - const item = this.items.splice(index, 1)[0]; - this.items.push(item); - return item.data; +} +const defineReadPackedArray = unindent(` + bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { + if ((index >= 0) && (index < numSplats)) { + uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); + unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); + return true; + } else { + return false; } - return void 0; } - // Fetch data for the key, returning cached data if available. - async getFetch(key) { - const immediate = this.getImmediate(key); - if (immediate !== void 0) { - return immediate; - } - let pending = this.pending.get(key); - if (pending) { - return pending; - } - pending = this.asyncFetch(key).then((data) => { - this.pending.delete(key); - this.items.push({ key, data }); - while (this.items.length > this.maxItems) { - const removed = this.items.shift(); - if (removed && this.dispose) { - this.dispose(removed.data); +`); +class ReadPackedSplat extends Dyno { + constructor({ + packedSplats, + index + }) { + super({ + inTypes: { packedSplats: TPackedSplats, index: "int" }, + outTypes: { gsplat: Gsplat }, + inputs: { packedSplats, index }, + globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return []; + } + const { packedSplats: packedSplats2, index: index2 } = inputs; + let statements; + if (packedSplats2 && index2) { + statements = unindentLines(` + ${gsplat}.flags = 0u; + if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { + if (${packedSplats2}.lodOpacity) { + ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; + } + bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); + ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `); + } else { + statements = [`${gsplat}.flags = 0u;`]; } + statements.push(`${gsplat}.index = ${index2 ?? "0"};`); + return statements; } - return data; }); - this.pending.set(key, pending); - return pending; } -} -function mapObject(obj, fn) { - const entries = Object.entries(obj).map(([key, value]) => [ - key, - fn(value, key) - ]); - return Object.fromEntries(entries); -} -function mapFilterObject(obj, fn) { - const entries = Object.entries(obj).map(([key, value]) => [key, fn(value, key)]).filter(([_, value]) => value !== void 0); - return Object.fromEntries(entries); -} -function getTransferable(ctx) { - const buffers = []; - const seen = /* @__PURE__ */ new Set(); - function traverse(obj) { - if (obj && typeof obj === "object" && !seen.has(obj)) { - seen.add(obj); - if (obj instanceof ArrayBuffer) { - buffers.push(obj); - } else if (ArrayBuffer.isView(obj)) { - buffers.push(obj.buffer); - } else if (Array.isArray(obj)) { - obj.forEach(traverse); - } else { - Object.values(obj).forEach(traverse); - } - } + dynoOut() { + return new DynoOutput(this, "gsplat"); } - traverse(ctx); - return buffers; -} -function newArray(n, initFunction) { - return new Array(n).fill(null).map((_, i) => initFunction(i)); } -class FreeList { +class ReadPackedSplatRange extends Dyno { constructor({ - // Allocate a new item with the given args - allocate, - // Dispose of an item (optional, if GC is enough) - dispose, - // Check if an existing item in the list is valid for the given args, - // allowing you to store heterogeneous items in the list. - valid + packedSplats, + index, + base, + count }) { - this.items = []; - this.allocate = allocate; - this.dispose = dispose; - this.valid = valid; - } - // Allocate a new item from the free list, first checking if a existing item - // on the freelist is valid for the given args. - alloc(args) { - while (true) { - const item = this.items.pop(); - if (!item) { - break; - } - if (this.valid(item, args)) { - return item; - } - if (this.dispose) { - this.dispose(item); + super({ + inTypes: { + packedSplats: TPackedSplats, + index: "int", + base: "int", + count: "int" + }, + outTypes: { gsplat: Gsplat }, + inputs: { packedSplats, index, base, count }, + globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return []; + } + const { packedSplats: packedSplats2, index: index2, base: base2, count: count2 } = inputs; + let statements; + if (packedSplats2 && index2 && base2 && count2) { + statements = unindentLines(` + ${gsplat}.flags = 0u; + if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { + if (${packedSplats2}.lodOpacity) { + ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; + } + bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); + ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `); + } else { + statements = [`${gsplat}.flags = 0u;`]; + } + statements.push(`${gsplat}.index = ${index2 ?? "0"};`); + return statements; } - } - return this.allocate(args); + }); } - free(item) { - this.items.push(item); + dynoOut() { + return new DynoOutput(this, "gsplat"); } - disposeAll() { - let item; - item = this.items.pop(); - while (item) { - if (this.dispose) { - this.dispose(item); - } - item = this.items.pop(); - } +} +const defineExtSplats = unindent(` + struct ExtSplats { + usampler2DArray textureArray1; + usampler2DArray textureArray2; + int numSplats; + }; +`); +class NumExtSplats extends UnaryOp { + constructor({ extSplats }) { + super({ a: extSplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; } } -function encodeExtSplat(extArrays, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) { - const i4 = index * 4; - const [extA, extB] = extArrays; - extA[i4] = floatBitsToUint$1(x); - extA[i4 + 1] = floatBitsToUint$1(y); - extA[i4 + 2] = floatBitsToUint$1(z); - extA[i4 + 3] = toHalf(opacity); - extB[i4] = toHalf(r) | toHalf(g) << 16; - extB[i4 + 1] = toHalf(b) | toHalf(Math.log(scaleX)) << 16; - extB[i4 + 2] = toHalf(Math.log(scaleY)) | toHalf(Math.log(scaleZ)) << 16; - extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW); +const defineReadExtArrays = unindent(` + void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { + gsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); + gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; + } + } +`); +class ReadExtSplat extends Dyno { + constructor({ + extSplats, + index + }) { + super({ + inTypes: { extSplats: TExtSplats, index: "int" }, + outTypes: { gsplat: Gsplat }, + inputs: { extSplats, index }, + globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays], + statements: ({ inputs, outputs }) => { + const { gsplat } = outputs; + if (!gsplat) { + return [`${gsplat}.flags = 0u;`]; + } + const { extSplats: extSplats2, index: index2 } = inputs; + if (extSplats2 && index2) { + return unindentLines(` + readExtArrays(${extSplats2}.textureArray1, ${extSplats2}.textureArray2, ${extSplats2}.numSplats, ${index2}, ${gsplat}); + `); + } + return [`${gsplat}.flags = 0u;`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "gsplat"); + } } -function decodeExtSplat(extArrays, index) { - const result = packedFields; - const i4 = index * 4; - const [extA, extB] = extArrays; - result.center.x = uintBitsToFloat$1(extA[i4]); - result.center.y = uintBitsToFloat$1(extA[i4 + 1]); - result.center.z = uintBitsToFloat$1(extA[i4 + 2]); - result.opacity = fromHalf(extA[i4 + 3] & 65535); - result.color.r = fromHalf(extB[i4] & 65535); - result.color.g = fromHalf(extB[i4] >>> 16); - result.color.b = fromHalf(extB[i4 + 1] & 65535); - result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16)); - result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 65535)); - result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16)); - decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion); - return result; +class NumCovSplats extends UnaryOp { + constructor({ covsplats }) { + super({ a: covsplats, outKey: "numSplats", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.numSplats} = ${inputs.a}.numSplats;` + ]; + } } -function setPackedSplat(packedSplats, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity); - const uQuat = encodeQuatOctXy88R8( - tempQuaternion.set(quatX, quatY, quatZ, quatW) - ); - const uQuatX = uQuat & 255; - const uQuatY = uQuat >>> 8 & 255; - const uQuatZ = uQuat >>> 16 & 255; - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); - const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uCenterX = toHalf(x); - const uCenterY = toHalf(y); - const uCenterZ = toHalf(z); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; - packedSplats[i4 + 1] = uCenterX | uCenterY << 16; - packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24; - packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24; +const defineReadCovArrays = unindent(` + void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { + covsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); + covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; + } + } +`); +class ReadCovSplat extends Dyno { + constructor({ + covSplats, + index + }) { + super({ + inTypes: { covSplats: TCovSplats, index: "int" }, + outTypes: { covsplat: CovSplat }, + inputs: { covSplats, index }, + globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays], + statements: ({ inputs, outputs }) => { + const { covsplat } = outputs; + if (!covsplat) { + return [`${covsplat}.flags = 0u;`]; + } + const { covSplats: covSplats2, index: index2 } = inputs; + if (covSplats2 && index2) { + return unindentLines(` + readCovArrays(${covSplats2}.textureArray, ${covSplats2}.numSplats, ${index2}, ${covsplat}); + `); + } + return [`${covsplat}.flags = 0u;`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "covsplat"); + } } -function setPackedSplatCenter(packedSplats, index, x, y, z) { - const uCenterX = toHalf(x); - const uCenterY = toHalf(y); - const uCenterZ = toHalf(z); - const i4 = index * 4; - packedSplats[i4 + 1] = uCenterX | uCenterY << 16; - packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760; -} -function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) { - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); - const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 - ) - ); - const i4 = index * 4; - packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080; -} -const tempQuaternion = new THREE.Quaternion(); -function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) { - const uQuat = encodeQuatOctXy88R8( - tempQuaternion.set(quatX, quatY, quatZ, quatW) - ); - const uQuatX = uQuat & 255; - const uQuatY = uQuat >>> 8 & 255; - const uQuatZ = uQuat >>> 16 & 255; - const i4 = index * 4; - packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24; - packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24; -} -function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; -} -function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) { - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - const uR = floatToUint8((r - rgbMin) / rgbRange); - const uG = floatToUint8((g - rgbMin) / rgbRange); - const uB = floatToUint8((b - rgbMin) / rgbRange); - const i4 = index * 4; - packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080; -} -function setPackedSplatOpacity(packedSplats, index, opacity) { - const uA = floatToUint8(opacity); - const i4 = index * 4; - packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24; -} -const packedCenter = new THREE.Vector3(); -const packedScales = new THREE.Vector3(); -const packedQuaternion = new THREE.Quaternion(); -const packedColor = new THREE.Color(); -const packedFields = { - center: packedCenter, - scales: packedScales, - quaternion: packedQuaternion, - color: packedColor, - opacity: 0 -}; -function unpackSplat(packedSplats, index, encoding) { - const result = packedFields; - const i4 = index * 4; - const word0 = packedSplats[i4]; - const word1 = packedSplats[i4 + 1]; - const word2 = packedSplats[i4 + 2]; - const word3 = packedSplats[i4 + 3]; - const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; - const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; - const rgbRange = rgbMax - rgbMin; - result.color.set( - rgbMin + (word0 & 255) / 255 * rgbRange, - rgbMin + (word0 >>> 8 & 255) / 255 * rgbRange, - rgbMin + (word0 >>> 16 & 255) / 255 * rgbRange - ); - result.opacity = (word0 >>> 24 & 255) / 255; - if (encoding == null ? void 0 : encoding.lodOpacity) { - result.opacity = 2 * result.opacity; - } - result.center.set( - fromHalf(word1 & 65535), - fromHalf(word1 >>> 16 & 65535), - fromHalf(word2 & 65535) - ); - const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; - const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; - const lnScaleScale = (lnScaleMax - lnScaleMin) / 254; - const uScalesX = word3 & 255; - result.scales.x = uScalesX === 0 ? 0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale); - const uScalesY = word3 >>> 8 & 255; - result.scales.y = uScalesY === 0 ? 0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale); - const uScalesZ = word3 >>> 16 & 255; - result.scales.z = uScalesZ === 0 ? 0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale); - const uQuat = word2 >>> 16 & 65535 | word3 >>> 8 & 16711680; - decodeQuatOctXy88R8(uQuat, result.quaternion); - return result; -} -function getTextureSize(numSplats) { - const width = SPLAT_TEX_WIDTH; - const height = Math.max( - SPLAT_TEX_MIN_HEIGHT, - Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) - ); - const depth = Math.ceil(numSplats / (width * height)); - const maxSplats = width * height * depth; - return { width, height, depth, maxSplats }; -} -function computeMaxSplats(numSplats) { - const width = SPLAT_TEX_WIDTH; - const height = Math.max( - SPLAT_TEX_MIN_HEIGHT, - Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) - ); - const depth = Math.ceil(numSplats / (width * height)); - return width * height * depth; -} -function isMobile() { - if (navigator.platform.toLowerCase().startsWith("win")) { - return false; +class GsplatToCovSplat extends Dyno { + constructor({ gsplat }) { + super({ + inTypes: { gsplat: Gsplat }, + outTypes: { covsplat: CovSplat }, + inputs: { gsplat }, + globals: () => [defineGsplat, defineCovSplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2 } = inputs; + const { covsplat } = outputs; + if (!gsplat2) { + return [`${covsplat}.flags = 0u;`]; + } + return unindentLines(` + ${covsplat}.flags = 0u; + if (isGsplatActive(${gsplat2}.flags)) { + ${covsplat}.flags = ${gsplat2}.flags; + ${covsplat}.index = ${gsplat2}.index; + ${covsplat}.rgba = ${gsplat2}.rgba; + ${covsplat}.center = ${gsplat2}.center; + mat3 m = scaleQuaternionToMatrix(${gsplat2}.scales, ${gsplat2}.quaternion); + m = m * transpose(m); + ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); + ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); + } + `); + } + }); } - if (navigator.maxTouchPoints > 0) { - return true; + dynoOut() { + return new DynoOutput(this, "covsplat"); } - return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( - navigator.userAgent - ); } -function isAndroid() { - return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); -} -function isOculus() { - return !!navigator.xr && /Oculus/.test(navigator.userAgent); -} -function isQuest2() { - return isOculus() && /Quest 2/.test(navigator.userAgent); -} -function isIos() { - return /iPhone|iPad/.test(navigator.userAgent); -} -function isVisionPro() { - return !!navigator.xr && isIos() && /Safari/.test(navigator.userAgent) && isMobile(); +class SplitGsplat extends Dyno { + constructor({ gsplat }) { + super({ + inTypes: { gsplat: Gsplat }, + outTypes: { + flags: "uint", + active: "bool", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + inputs: { gsplat }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2 } = inputs; + const { + flags, + active, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + } = outputs; + return [ + !flags ? null : `${flags} = ${gsplat2 ? `${gsplat2}.flags` : "0u"};`, + !active ? null : `${active} = isGsplatActive(${gsplat2 ? `${gsplat2}.flags` : "0u"});`, + !index ? null : `${index} = ${gsplat2 ? `${gsplat2}.index` : "0"};`, + !center ? null : `${center} = ${gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, + !scales ? null : `${scales} = ${gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)"};`, + !quaternion ? null : `${quaternion} = ${gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};`, + !rgba ? null : `${rgba} = ${gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, + !rgb ? null : `${rgb} = ${gsplat2 ? `${gsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, + !opacity ? null : `${opacity} = ${gsplat2 ? `${gsplat2}.rgba.a` : "0.0"};`, + !x ? null : `${x} = ${gsplat2 ? `${gsplat2}.center.x` : "0.0"};`, + !y ? null : `${y} = ${gsplat2 ? `${gsplat2}.center.y` : "0.0"};`, + !z ? null : `${z} = ${gsplat2 ? `${gsplat2}.center.z` : "0.0"};`, + !r ? null : `${r} = ${gsplat2 ? `${gsplat2}.rgba.r` : "0.0"};`, + !g ? null : `${g} = ${gsplat2 ? `${gsplat2}.rgba.g` : "0.0"};`, + !b ? null : `${b} = ${gsplat2 ? `${gsplat2}.rgba.b` : "0.0"};` + ].filter(Boolean); + } + }); + } } -function flipPixels(pixels, width, height) { - const tempLine = new Uint8Array(width * 4); - for (let y = 0; y < height / 2; y++) { - const topOffset = y * width * 4; - const bottomOffset = (height - 1 - y) * width * 4; - tempLine.set(pixels.subarray(topOffset, topOffset + width * 4)); - pixels.set( - pixels.subarray(bottomOffset, bottomOffset + width * 4), - topOffset - ); - pixels.set(tempLine, bottomOffset); +class CombineGsplat extends Dyno { + constructor({ + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }) { + super({ + inTypes: { + gsplat: Gsplat, + flags: "uint", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + gsplat, + flags, + index, + center, + scales, + quaternion, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: outGsplat } = outputs; + if (!outGsplat) { + return []; + } + const { + gsplat: gsplat2, + flags: flags2, + index: index2, + center: center2, + scales: scales2, + quaternion: quaternion2, + rgba: rgba2, + rgb: rgb2, + opacity: opacity2, + x: x2, + y: y2, + z: z2, + r: r2, + g: g2, + b: b22 + } = inputs; + return [ + `${outGsplat}.flags = ${flags2 ?? (gsplat2 ? `${gsplat2}.flags` : "0u")};`, + `${outGsplat}.index = ${index2 ?? (gsplat2 ? `${gsplat2}.index` : "0")};`, + `${outGsplat}.center = ${center2 ?? (gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${outGsplat}.scales = ${scales2 ?? (gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)")};`, + `${outGsplat}.quaternion = ${quaternion2 ?? (gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, + `${outGsplat}.rgba = ${rgba2 ?? (gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + !rgb2 ? null : `${outGsplat}.rgba.rgb = ${rgb2};`, + !opacity2 ? null : `${outGsplat}.rgba.a = ${opacity2};`, + !x2 ? null : `${outGsplat}.center.x = ${x2};`, + !y2 ? null : `${outGsplat}.center.y = ${y2};`, + !z2 ? null : `${outGsplat}.center.z = ${z2};`, + !r2 ? null : `${outGsplat}.rgba.r = ${r2};`, + !g2 ? null : `${outGsplat}.rgba.g = ${g2};`, + !b22 ? null : `${outGsplat}.rgba.b = ${b22};` + ].filter(Boolean); + } + }); } - return pixels; -} -function pixelsToPngUrl(pixels, width, height) { - const canvas = document.createElement("canvas"); - canvas.width = width; - canvas.height = height; - const ctx = canvas.getContext("2d"); - if (!ctx) { - throw new Error("Can't get 2d context"); + dynoOut() { + return new DynoOutput(this, "gsplat"); } - const imageData = ctx.createImageData(width, height); - imageData.data.set(pixels); - ctx.putImageData(imageData, 0, 0); - return canvas.toDataURL("image/png"); -} -function cloneClock(clock) { - const newClock = new THREE.Clock(clock.autoStart); - newClock.startTime = clock.startTime; - newClock.oldTime = clock.oldTime; - newClock.elapsedTime = clock.elapsedTime; - newClock.running = clock.running; - return newClock; -} -function omitUndefined(obj) { - return Object.fromEntries( - Object.entries(obj).filter(([_, value]) => value !== void 0) - ); } -const IDENT_VERTEX_SHADER = unindent(` - precision highp float; - - in vec3 position; - - void main() { - gl_Position = vec4(position.xy, 0.0, 1.0); +const defineGsplatNormal = unindent(` + vec3 gsplatNormal(vec3 scales, vec4 quaternion) { + float minScale = min(scales.x, min(scales.y, scales.z)); + vec3 normal; + if (scales.z == minScale) { + normal = vec3(0.0, 0.0, 1.0); + } else if (scales.y == minScale) { + normal = vec3(0.0, 1.0, 0.0); + } else { + normal = vec3(1.0, 0.0, 0.0); + } + return quatVec(quaternion, normal); } `); -function averagePositions(positions) { - const sum = new THREE.Vector3(); - for (const position of positions) { - sum.add(position); +class GsplatNormal extends UnaryOp { + constructor({ gsplat }) { + super({ a: gsplat, outKey: "normal", outTypeFunc: () => "vec3" }); + this.globals = () => [defineGsplat, defineGsplatNormal]; + this.statements = ({ inputs, outputs }) => [ + `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);` + ]; } - return sum.divideScalar(positions.length); } -function averageQuaternions(quaternions) { - if (quaternions.length === 0) { - return new THREE.Quaternion(); +class TransformGsplat extends Dyno { + constructor({ + gsplat, + scale, + rotate, + translate, + recolor + }) { + super({ + inTypes: { + gsplat: Gsplat, + scale: "float", + rotate: "vec4", + translate: "vec3", + recolor: "vec4" + }, + outTypes: { gsplat: Gsplat }, + inputs: { gsplat, scale, rotate, translate, recolor }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs, compile }) => { + const { gsplat: gsplat2 } = outputs; + if (!gsplat2 || !inputs.gsplat) { + return []; + } + const { scale: scale2, rotate: rotate2, translate: translate2, recolor: recolor2 } = inputs; + const indent = compile.indent; + const statements = [ + `${gsplat2} = ${inputs.gsplat};`, + `if (isGsplatActive(${gsplat2}.flags)) {`, + scale2 ? `${indent}${gsplat2}.center *= ${scale2};` : null, + rotate2 ? `${indent}${gsplat2}.center = quatVec(${rotate2}, ${gsplat2}.center);` : null, + translate2 ? `${indent}${gsplat2}.center += ${translate2};` : null, + scale2 ? `${indent}${gsplat2}.scales *= ${scale2};` : null, + rotate2 ? `${indent}${gsplat2}.quaternion = quatQuat(${rotate2}, ${gsplat2}.quaternion);` : null, + recolor2 ? `${indent}${gsplat2}.rgba *= ${recolor2};` : null, + "}" + ].filter(Boolean); + return statements; + } + }); } - const sum = quaternions[0].clone(); - for (let i = 1; i < quaternions.length; i++) { - if (quaternions[i].dot(quaternions[0]) < 0) { - sum.x -= quaternions[i].x; - sum.y -= quaternions[i].y; - sum.z -= quaternions[i].z; - sum.w -= quaternions[i].w; - } else { - sum.x += quaternions[i].x; - sum.y += quaternions[i].y; - sum.z += quaternions[i].z; - sum.w += quaternions[i].w; - } + dynoOut() { + return new DynoOutput(this, "gsplat"); } - return sum.normalize(); -} -function coinciDist(matrix1, matrix2) { - const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1); - const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2); - const direction1 = new THREE.Vector3(0, 0, -1).applyMatrix4(matrix1).sub(origin1).normalize(); - const direction2 = new THREE.Vector3(0, 0, -1).applyMatrix4(matrix2).sub(origin2).normalize(); - const distance2 = origin1.distanceTo(origin2); - const coincidence = direction1.dot(direction2); - return { distance: distance2, coincidence }; -} -function withinDist({ - matrix1, - matrix2, - maxDistance -}) { - const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1); - const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2); - return origin1.distanceTo(origin2) <= maxDistance; -} -function withinCoinciDist({ - matrix1, - matrix2, - maxDistance, - minCoincidence -}) { - const { distance: distance2, coincidence } = coinciDist(matrix1, matrix2); - return distance2 <= maxDistance && (minCoincidence == null || coincidence >= minCoincidence); -} -function coorientDist(matrix1, matrix2) { - const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()]; - const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()]; - matrix1.decompose(origin1, rotate1, new THREE.Vector3()); - matrix2.decompose(origin2, rotate2, new THREE.Vector3()); - const distance2 = origin1.distanceTo(origin2); - const coorient = Math.abs(rotate1.dot(rotate2)); - return { distance: distance2, coorient }; } -function withinCoorientDist({ - matrix1, - matrix2, - maxDistance, - minCoorient -}) { - const { distance: distance2, coorient } = coorientDist(matrix1, matrix2); - return distance2 <= maxDistance && (minCoorient == null || coorient >= minCoorient); -} -function epsilonSign(value, epsilon = 1e-3) { - if (Math.abs(value) < epsilon) { - return 0; +const splitCovSplat = (covsplat) => new SplitCovSplat({ covsplat }); +const combineCovSplat = ({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b +}) => { + return new CombineCovSplat({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }); +}; +class SplitCovSplat extends Dyno { + constructor({ covsplat }) { + super({ + inTypes: { covsplat: CovSplat }, + outTypes: { + flags: "uint", + active: "bool", + index: "int", + center: "vec3", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + inputs: { covsplat }, + globals: () => [defineCovSplat], + statements: ({ inputs, outputs }) => { + const { covsplat: covsplat2 } = inputs; + const { + flags, + active, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + } = outputs; + return [ + !flags ? null : `${flags} = ${covsplat2 ? `${covsplat2}.flags` : "0u"};`, + !active ? null : `${active} = isCovSplatActive(${covsplat2 ? `${covsplat2}.flags` : "0u"});`, + !index ? null : `${index} = ${covsplat2 ? `${covsplat2}.index` : "0"};`, + !center ? null : `${center} = ${covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, + !rgba ? null : `${rgba} = ${covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, + !rgb ? null : `${rgb} = ${covsplat2 ? `${covsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, + !opacity ? null : `${opacity} = ${covsplat2 ? `${covsplat2}.rgba.a` : "0.0"};`, + !x ? null : `${x} = ${covsplat2 ? `${covsplat2}.center.x` : "0.0"};`, + !y ? null : `${y} = ${covsplat2 ? `${covsplat2}.center.y` : "0.0"};`, + !z ? null : `${z} = ${covsplat2 ? `${covsplat2}.center.z` : "0.0"};`, + !r ? null : `${r} = ${covsplat2 ? `${covsplat2}.rgba.r` : "0.0"};`, + !g ? null : `${g} = ${covsplat2 ? `${covsplat2}.rgba.g` : "0.0"};`, + !b ? null : `${b} = ${covsplat2 ? `${covsplat2}.rgba.b` : "0.0"};` + ].filter(Boolean); + } + }); } - return Math.sign(value); -} -function encodeQuatXyz888(q) { - const negQuat = q.w < 0; - const iQuatX = floatToSint8(negQuat ? -q.x : q.x); - const iQuatY = floatToSint8(negQuat ? -q.y : q.y); - const iQuatZ = floatToSint8(negQuat ? -q.z : q.z); - const uQuatX = iQuatX & 255; - const uQuatY = iQuatY & 255; - const uQuatZ = iQuatZ & 255; - return uQuatX | uQuatY << 8 | uQuatZ << 16; } -function decodeQuatXyz888(encoded, out) { - const iQuatX = encoded << 24 >> 24; - const iQuatY = encoded << 16 >> 24; - const iQuatZ = encoded << 8 >> 24; - out.set(iQuatX / 127, iQuatY / 127, iQuatZ / 127, 0); - const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z; - out.w = Math.sqrt(Math.max(0, 1 - dotSelf)); - return out; +class CombineCovSplat extends Dyno { + constructor({ + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }) { + super({ + inTypes: { + covsplat: CovSplat, + flags: "uint", + index: "int", + center: "vec3", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + outTypes: { covsplat: CovSplat }, + inputs: { + covsplat, + flags, + index, + center, + rgba, + rgb, + opacity, + x, + y, + z, + r, + g, + b + }, + globals: () => [defineCovSplat], + statements: ({ inputs, outputs }) => { + const { covsplat: outCovSplat } = outputs; + if (!outCovSplat) { + return []; + } + const { + covsplat: covsplat2, + flags: flags2, + index: index2, + center: center2, + rgba: rgba2, + rgb: rgb2, + opacity: opacity2, + x: x2, + y: y2, + z: z2, + r: r2, + g: g2, + b: b22 + } = inputs; + return [ + `${outCovSplat}.flags = ${flags2 ?? (covsplat2 ? `${covsplat2}.flags` : "0u")};`, + `${outCovSplat}.index = ${index2 ?? (covsplat2 ? `${covsplat2}.index` : "0")};`, + `${outCovSplat}.center = ${center2 ?? (covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${outCovSplat}.rgba = ${rgba2 ?? (covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + !rgb2 ? null : `${outCovSplat}.rgba.rgb = ${rgb2};`, + !opacity2 ? null : `${outCovSplat}.rgba.a = ${opacity2};`, + !x2 ? null : `${outCovSplat}.center.x = ${x2};`, + !y2 ? null : `${outCovSplat}.center.y = ${y2};`, + !z2 ? null : `${outCovSplat}.center.z = ${z2};`, + !r2 ? null : `${outCovSplat}.rgba.r = ${r2};`, + !g2 ? null : `${outCovSplat}.rgba.g = ${g2};`, + !b22 ? null : `${outCovSplat}.rgba.b = ${b22};`, + `${outCovSplat}.xxyyzz = ${covsplat2 ? `${covsplat2}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, + `${outCovSplat}.xyxzyz = ${covsplat2 ? `${covsplat2}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` + ].filter(Boolean); + } + }); + } + dynoOut() { + return new DynoOutput(this, "covsplat"); + } } -const tempNormalizedQuaternion = new THREE.Quaternion(); -const tempAxis = new THREE.Vector3(); -function encodeQuatOctXy88R8(q) { - const qnorm = tempNormalizedQuaternion.copy(q).normalize(); - if (qnorm.w < 0) { - qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w); +class SplatTexCoord extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => { + const { index: index2 } = inputs; + const { coord } = outputs; + if (!index2 || !coord) { + return []; + } + return [`${coord} = splatTexCoord(${index2});`]; + } + }); } - const theta = 2 * Math.acos(qnorm.w); - const xyz_norm = Math.sqrt( - qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z - ); - const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm); - const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z); - let p_x = axis.x / sum; - let p_y = axis.y / sum; - if (axis.z < 0) { - const tmp = p_x; - p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); - p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + dynoOut() { + return new DynoOutput(this, "coord"); } - const u_f = p_x * 0.5 + 0.5; - const v_f = p_y * 0.5 + 0.5; - const quantU = Math.round(u_f * 255); - const quantV = Math.round(v_f * 255); - const angleInt = Math.round(theta * (255 / Math.PI)); - return angleInt << 16 | quantV << 8 | quantU; } -function decodeQuatOctXy88R8(encoded, out) { - const quantU = encoded & 255; - const quantV = encoded >>> 8 & 255; - const angleInt = encoded >>> 16 & 255; - const u_f = quantU / 255; - const v_f = quantV / 255; - let f_x = (u_f - 0.5) * 2; - let f_y = (v_f - 0.5) * 2; - const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); - const t = Math.max(-f_z, 0); - f_x += f_x >= 0 ? -t : t; - f_y += f_y >= 0 ? -t : t; - const axis = tempAxis.set(f_x, f_y, f_z).normalize(); - const theta = angleInt / 255 * Math.PI; - const halfTheta = theta * 0.5; - const s = Math.sin(halfTheta); - const w = Math.cos(halfTheta); - out.set(axis.x * s, axis.y * s, axis.z * s, w); - return out; -} -function encodeQuatEulerXyz888(q) { - const qNorm = q.clone().normalize(); - const sinr_cosp = 2 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z); - const cosr_cosp = 1 - 2 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y); - const roll = Math.atan2(sinr_cosp, cosr_cosp); - const sinp = 2 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x); - const pitch = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp); - const siny_cosp = 2 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y); - const cosy_cosp = 1 - 2 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z); - const yaw = Math.atan2(siny_cosp, cosy_cosp); - const normRoll = (roll + Math.PI) / (2 * Math.PI); - const normPitch = (pitch + Math.PI) / (2 * Math.PI); - const normYaw = (yaw + Math.PI) / (2 * Math.PI); - const rollQ = Math.round(normRoll * 255); - const pitchQ = Math.round(normPitch * 255); - const yawQ = Math.round(normYaw * 255); - return yawQ << 16 | pitchQ << 8 | rollQ; -} -function decodeQuatEulerXyz888(encoded, out) { - const rollQ = encoded & 255; - const pitchQ = encoded >>> 8 & 255; - const yawQ = encoded >>> 16 & 255; - const normRoll = rollQ / 255; - const normPitch = pitchQ / 255; - const normYaw = yawQ / 255; - const roll = normRoll * (2 * Math.PI) - Math.PI; - const pitch = normPitch * (2 * Math.PI) - Math.PI; - const yaw = normYaw * (2 * Math.PI) - Math.PI; - const cr = Math.cos(roll * 0.5); - const sr = Math.sin(roll * 0.5); - const cp = Math.cos(pitch * 0.5); - const sp = Math.sin(pitch * 0.5); - const cy = Math.cos(yaw * 0.5); - const sy = Math.sin(yaw * 0.5); - out.w = cr * cp * cy + sr * sp * sy; - out.x = sr * cp * cy - cr * sp * sy; - out.y = cr * sp * cy + sr * cp * sy; - out.z = cr * cp * sy - sr * sp * cy; - out.normalize(); - return out; +class PagedSplatTexCoord extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => { + const { index: index2 } = inputs; + const { coord } = outputs; + if (!index2 || !coord) { + return []; + } + return [`${coord} = pagedSplatTexCoord(${index2});`]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "coord"); + } } -function encodeQuatOctXy1010R12(qx, qy, qz, qw) { - const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw); - const qnx = (qw < 0 ? -qx : qx) / qlen; - const qny = (qw < 0 ? -qy : qy) / qlen; - const qnz = (qw < 0 ? -qz : qz) / qlen; - const qnw = (qw < 0 ? -qw : qw) / qlen; - const theta = 2 * Math.acos(qnw); - const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz); - const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm; - const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm; - const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm; - const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ); - let p_x = axisX / sum; - let p_y = axisY / sum; - if (axisZ < 0) { - const tmp = p_x; - p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); - p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); +const outputPackedSplat = (gsplat, rgbMinMaxLnScaleMinMax) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax }); +const outputCovSplat = (covsplat, rgbMinMaxLnScaleMinMax) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax }); +const outputExtendedSplat = (gsplat) => new OutputExtendedSplat({ gsplat }); +const outputExtCovSplat = (covsplat) => new OutputExtCovSplat({ covsplat }); +const outputSplatDepth = (gsplat, viewCenter, viewDir, sortRadial) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial }); +const outputCovSplatDepth = (covsplat, viewCenter, viewDir, sortRadial) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial }); +const outputRgba8 = (rgba8) => new OutputRgba8({ rgba8 }); +class OutputPackedSplat extends Dyno { + constructor({ + gsplat, + rgbMinMaxLnScaleMinMax + }) { + super({ + inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: "vec4" }, + inputs: { gsplat, rgbMinMaxLnScaleMinMax }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => { + const { gsplat: gsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; + if (gsplat2 && rgbMinMaxLnScaleMinMax2) { + return unindentLines(` + if (isGsplatActive(${gsplat2}.flags)) { + target = packSplatEncoding(${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba, ${rgbMinMaxLnScaleMinMax2}); + } else { + target = uvec4(0u, 0u, 0u, 0u); + } + `); + } + return ["target = uvec4(0u, 0u, 0u, 0u);"]; + } + }); } - const u_f = p_x * 0.5 + 0.5; - const v_f = p_y * 0.5 + 0.5; - const quantU = Math.round(u_f * 1023); - const quantV = Math.round(v_f * 1023); - const angleInt = Math.round(theta * (4095 / Math.PI)); - return angleInt << 20 | quantV << 10 | quantU; } -function decodeQuatOctXy1010R12(encoded, out) { - const quantU = encoded & 1023; - const quantV = encoded >>> 10 & 1023; - const angleInt = encoded >>> 20 & 4095; - const u_f = quantU / 1023; - const v_f = quantV / 1023; - let f_x = (u_f - 0.5) * 2; - let f_y = (v_f - 0.5) * 2; - const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); - const t = Math.max(-f_z, 0); - f_x += f_x >= 0 ? -t : t; - f_y += f_y >= 0 ? -t : t; - const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z); - const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen; - const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen; - const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen; - const theta = angleInt / 4095 * Math.PI; - const halfTheta = theta * 0.5; - const s = Math.sin(halfTheta); - const w = Math.cos(halfTheta); - out.set(axisX * s, axisY * s, axisZ * s, w); - return out; +class OutputCovSplat extends Dyno { + constructor({ + covsplat, + rgbMinMaxLnScaleMinMax + }) { + super({ + inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: "vec4" }, + inputs: { covsplat, rgbMinMaxLnScaleMinMax }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; + if (covsplat2 && rgbMinMaxLnScaleMinMax2) { + return unindentLines(` + if (isCovSplatActive(${covsplat2}.flags)) { + target = packSplatCovEncoding(${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz, ${rgbMinMaxLnScaleMinMax2}); + } else { + target = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);"]; + } + }); + } } -function packSint8Bytes(b0, b1, b22, b3) { - const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127))); - const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127))); - const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127))); - const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127))); - return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24; +class OutputExtendedSplat extends Dyno { + constructor({ + gsplat + }) { + super({ + inTypes: { gsplat: Gsplat }, + inputs: { gsplat }, + globals: () => [defineGsplat], + statements: ({ inputs }) => { + const { gsplat: gsplat2 } = inputs; + if (gsplat2) { + return unindentLines(` + if (isGsplatActive(${gsplat2}.flags)) { + packSplatExt(target, target2, ${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba); + } else { + target = uvec4(0u); + target2 = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; + } + }); + } } -function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) { - const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1; - const sh1Scale = 63 / sh1Max; - const base = index * 2; - for (let i = 0; i < 9; ++i) { - const s = sh1Rgb[i] * sh1Scale; - const value = Math.round(Math.max(-63, Math.min(63, s))) & 127; - const bitStart = i * 7; - const bitEnd = bitStart + 7; - const wordStart = Math.floor(bitStart / 32); - const bitOffset = bitStart - wordStart * 32; - const firstWord = value << bitOffset & 4294967295; - sh1Array[base + wordStart] |= firstWord; - if (bitEnd > wordStart * 32 + 32) { - const secondWord = value >>> 32 - bitOffset & 4294967295; - sh1Array[base + wordStart + 1] |= secondWord; - } +class OutputExtCovSplat extends Dyno { + constructor({ + covsplat + }) { + super({ + inTypes: { covsplat: CovSplat }, + inputs: { covsplat }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2 } = inputs; + if (covsplat2) { + return unindentLines(` + if (isCovSplatActive(${covsplat2}.flags)) { + packSplatExtCov(target, target2, ${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz); + } else { + target = uvec4(0u); + target2 = uvec4(0u); + } + `); + } + return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; + } + }); } } -function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) { - const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1; - const sh2Scale = 1 / sh2Max; - sh2Array[index * 4 + 0] = packSint8Bytes( - sh2Rgb[0] * sh2Scale, - sh2Rgb[1] * sh2Scale, - sh2Rgb[2] * sh2Scale, - sh2Rgb[3] * sh2Scale - ); - sh2Array[index * 4 + 1] = packSint8Bytes( - sh2Rgb[4] * sh2Scale, - sh2Rgb[5] * sh2Scale, - sh2Rgb[6] * sh2Scale, - sh2Rgb[7] * sh2Scale - ); - sh2Array[index * 4 + 2] = packSint8Bytes( - sh2Rgb[8] * sh2Scale, - sh2Rgb[9] * sh2Scale, - sh2Rgb[10] * sh2Scale, - sh2Rgb[11] * sh2Scale - ); - sh2Array[index * 4 + 3] = packSint8Bytes( - sh2Rgb[12] * sh2Scale, - sh2Rgb[13] * sh2Scale, - sh2Rgb[14] * sh2Scale, - 0 - ); -} -function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) { - const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1; - const sh3Scale = 31 / sh3Max; - const base = index * 4; - for (let i = 0; i < 21; ++i) { - const s = sh3Rgb[i] * sh3Scale; - const value = Math.round(Math.max(-31, Math.min(31, s))) & 63; - const bitStart = i * 6; - const bitEnd = bitStart + 6; - const wordStart = Math.floor(bitStart / 32); - const bitOffset = bitStart - wordStart * 32; - const firstWord = value << bitOffset & 4294967295; - sh3Array[base + wordStart] |= firstWord; - if (bitEnd > wordStart * 32 + 32) { - const secondWord = value >>> 32 - bitOffset & 4294967295; - sh3Array[base + wordStart + 1] |= secondWord; - } - } -} -function encodeExtRgb(r, g, b) { - const ar = Math.abs(r); - const ag = Math.abs(g); - const ab = Math.abs(b); - const maxAbs = Math.max(ar, ag, ab); - const base = Math.floor(Math.log2(maxAbs)); - const biasedBase = Math.max(0, Math.min(31, base + 15)); - const divisor = 2 ** (biasedBase - 15) / 255; - const uR = Math.round(Math.max(0, Math.min(255, ar / divisor))); - const uG = Math.round(Math.max(0, Math.min(255, ag / divisor))); - const uB = Math.round(Math.max(0, Math.min(255, ab / divisor))); - const expSigns = biasedBase << 3 | ((r < 0 ? 1 : 0) | (g < 0 ? 2 : 0) | (b < 0 ? 4 : 0)); - return uR | uG << 8 | uB << 16 | expSigns << 24; -} -function decodeExtRgb(encoded) { - const color = packedFields.color; - const biasedBase = encoded >>> 27 & 31; - const divisor = 2 ** (biasedBase - 15) / 255; - const r = (encoded & 255) * divisor; - const g = (encoded >>> 8 & 255) * divisor; - const b = (encoded >>> 16 & 255) * divisor; - color.r = encoded & 16777216 ? -r : r; - color.g = encoded & 33554432 ? -g : g; - color.b = encoded & 67108864 ? -b : b; - return color; -} -function encodeExtSh1Rgb(sh1Array, index, sh1Rgb) { - const i4 = index * 4; - for (let k = 0; k < 3; ++k) { - const k3 = k * 3; - sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); - } -} -function encodeExtSh12Rgb(sh1Array, sh2Array, index, sh1Rgb, sh2Rgb) { - const i4 = index * 4; - for (let k = 0; k < 3; ++k) { - const k3 = k * 3; - sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); - } - sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]); - for (let k = 1; k < 5; ++k) { - const k5 = k * 5; - sh2Array[i4 + (k - 1)] = encodeExtRgb( - sh2Rgb[k5], - sh2Rgb[k5 + 1], - sh2Rgb[k5 + 2] - ); - } -} -function encodeExt3Rgb(sh3ArrayA, sh3ArrayB, index, sh3Rgb) { - const i4 = index * 4; - for (let k = 0; k < 4; ++k) { - const k3 = k * 3; - sh3ArrayA[i4 + k] = encodeExtRgb( - sh3Rgb[k3], - sh3Rgb[k3 + 1], - sh3Rgb[k3 + 2] - ); - } - for (let k = 4; k < 7; ++k) { - const k3 = k * 3; - sh3ArrayB[i4 + (k - 4)] = encodeExtRgb( - sh3Rgb[k3], - sh3Rgb[k3 + 1], - sh3Rgb[k3 + 2] - ); - } -} -function decompressPartialGzip(fileBytes, numBytes) { - const chunks = []; - let totalBytes = 0; - let result = null; - const gunzip = new Gunzip((data, final) => { - chunks.push(data); - totalBytes += data.length; - if (final || totalBytes >= numBytes) { - const allBytes = new Uint8Array(totalBytes); - let offset2 = 0; - for (const chunk of chunks) { - allBytes.set(chunk, offset2); - offset2 += chunk.length; +class OutputSplatDepth extends Dyno { + constructor({ + gsplat, + viewCenter, + viewDir, + sortRadial + }) { + super({ + inTypes: { + gsplat: Gsplat, + viewCenter: "vec3", + viewDir: "vec3", + sortRadial: "bool" + }, + inputs: { gsplat, viewCenter, viewDir, sortRadial }, + globals: () => [defineGsplat], + statements: ({ inputs }) => { + const { gsplat: gsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; + if (gsplat2 && viewCenter2 && viewDir2 && sortRadial2) { + return unindentLines(` + float metric = 1.0 / 0.0; + if (isGsplatActive(${gsplat2}.flags)) { + vec3 center = ${gsplat2}.center - ${viewCenter2}; + if (${sortRadial2}) { + metric = length(center); + } else { + float bias = 100.0; // reduce popping + metric = dot(center, ${viewDir2}) + bias; + } + } + target3 = floatToVec4(metric); + `); + } + return []; } - result = allBytes.slice(0, numBytes); - } - }); - const CHUNK_SIZE = 1024; - let offset = 0; - while (result == null && offset < fileBytes.length) { - const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE); - gunzip.push(chunk, false); - offset += CHUNK_SIZE; - } - if (result == null) { - gunzip.push(new Uint8Array(), true); - if (result == null) { - throw new Error("Failed to decompress partial gzip"); - } + }); } - return result; } -class GunzipReader { +class OutputCovSplatDepth extends Dyno { constructor({ - fileBytes, - chunkBytes = 64 * 1024 + covsplat, + viewCenter, + viewDir, + sortRadial }) { - this.fileBytes = fileBytes; - this.chunkBytes = chunkBytes; - this.chunks = []; - this.totalBytes = 0; - const ds = new DecompressionStream("gzip"); - const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds); - this.reader = decompressionStream.getReader(); - } - async read(numBytes) { - while (this.totalBytes < numBytes) { - const { value: chunk, done: readerDone } = await this.reader.read(); - if (readerDone) { - break; + super({ + inTypes: { + covsplat: CovSplat, + viewCenter: "vec3", + viewDir: "vec3", + sortRadial: "bool" + }, + inputs: { covsplat, viewCenter, viewDir, sortRadial }, + globals: () => [defineCovSplat], + statements: ({ inputs }) => { + const { covsplat: covsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; + if (covsplat2 && viewCenter2 && viewDir2 && sortRadial2) { + return unindentLines(` + float metric = 1.0 / 0.0; + if (isCovSplatActive(${covsplat2}.flags)) { + vec3 center = ${covsplat2}.center - ${viewCenter2}; + if (${sortRadial2}) { + metric = length(center); + } else { + float bias = 100.0; // reduce popping + metric = dot(center, ${viewDir2}) + bias; + } + } + target3 = floatToVec4(metric); + `); + } + return []; } - this.chunks.push(chunk); - this.totalBytes += chunk.length; - } - if (this.totalBytes < numBytes) { - throw new Error( - `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}` - ); - } - const allBytes = new Uint8Array(this.totalBytes); - let outOffset = 0; - for (const chunk of this.chunks) { - allBytes.set(chunk, outOffset); - outOffset += chunk.length; - } - const result = allBytes.subarray(0, numBytes); - this.chunks = [allBytes.subarray(numBytes)]; - this.totalBytes -= numBytes; - return result; + }); } } -const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - DataCache, - FreeList, - GunzipReader, - IDENT_VERTEX_SHADER, - Sint8ToFloat, - Uint8ToFloat, - averagePositions, - averageQuaternions, - cloneClock, - coinciDist, - computeMaxSplats, - coorientDist, - decodeExtRgb, - decodeExtSplat, - decodeQuatEulerXyz888, - decodeQuatOctXy1010R12, - decodeQuatOctXy88R8, - decodeQuatXyz888, - decompressPartialGzip, - encodeExt3Rgb, - encodeExtRgb, - encodeExtSh12Rgb, - encodeExtSh1Rgb, - encodeExtSplat, - encodeQuatEulerXyz888, - encodeQuatOctXy1010R12, - encodeQuatOctXy88R8, - encodeQuatXyz888, - encodeSh1Rgb, - encodeSh2Rgb, - encodeSh3Rgb, - epsilonSign, - flipPixels, - floatBitsToUint: floatBitsToUint$1, - floatToSint8, - floatToUint8, - fromHalf, - getTextureSize, - getTransferable, - isAndroid, - isIos, - isMobile, - isOculus, - isQuest2, - isVisionPro, - mapFilterObject, - mapObject, - newArray, - normalize: normalize$1, - omitUndefined, - pixelsToPngUrl, - setPackedSplat, - setPackedSplatCenter, - setPackedSplatOpacity, - setPackedSplatQuat, - setPackedSplatRgb, - setPackedSplatRgba, - setPackedSplatScales, - threeMrtArray, - threeRevision, - toHalf, - uintBitsToFloat: uintBitsToFloat$1, - unpackSplat, - withinCoinciDist, - withinCoorientDist, - withinDist -}, Symbol.toStringTag, { value: "Module" })); -class OldSplatWorker { - constructor() { - this.messages = {}; - this.messageIdNext = 0; - this.worker = new WorkerWrapper$1(); - this.worker.onmessage = (event) => this.onMessage(event); +class OutputRgba8 extends Dyno { + constructor({ rgba8 }) { + super({ + inTypes: { rgba8: "vec4" }, + inputs: { rgba8 }, + statements: ({ inputs, outputs }) => [ + `target = ${inputs.rgba8 ?? "vec4(0.0, 0.0, 0.0, 0.0)"};` + ] + }); } - makeMessageId() { - return ++this.messageIdNext; + dynoOut() { + return new DynoOutput(this, "rgba8"); } - makeMessagePromiseId() { - const id = this.makeMessageId(); - const promise = new Promise((resolve, reject) => { - this.messages[id] = { resolve, reject }; +} +const uniform = (key, type, value) => new DynoUniform({ key, type, value }); +const dynoBool = (value = false, key) => new DynoBool({ key, value }); +const dynoUint = (value = 0, key) => new DynoUint({ key, value }); +const dynoInt = (value = 0, key) => new DynoInt({ key, value }); +const dynoFloat = (value = 0, key) => new DynoFloat({ key, value }); +const dynoBvec2 = (value, key) => new DynoBvec2({ key, value }); +const dynoUvec2 = (value, key) => new DynoUvec2({ key, value }); +const dynoIvec2 = (value, key) => new DynoIvec2({ key, value }); +const dynoVec2 = (value, key) => new DynoVec2({ key, value }); +const dynoBvec3 = (value, key) => new DynoBvec3({ key, value }); +const dynoUvec3 = (value, key) => new DynoUvec3({ key, value }); +const dynoIvec3 = (value, key) => new DynoIvec3({ key, value }); +const dynoVec3 = (value, key) => new DynoVec3({ key, value }); +const dynoBvec4 = (value, key) => new DynoBvec4({ key, value }); +const dynoUvec4 = (value, key) => new DynoUvec4({ key, value }); +const dynoIvec4 = (value, key) => new DynoIvec4({ key, value }); +const dynoVec4 = (value, key) => new DynoVec4({ key, value }); +const dynoMat2 = (value, key) => new DynoMat2({ key, value }); +const dynoMat2x2 = (value, key) => new DynoMat2x2({ key, value }); +const dynoMat2x3 = (value, key) => new DynoMat2x3({ key, value }); +const dynoMat2x4 = (value, key) => new DynoMat2x4({ key, value }); +const dynoMat3 = (value, key) => new DynoMat3({ key, value }); +const dynoMat3x2 = (value, key) => new DynoMat3x2({ key, value }); +const dynoMat3x3 = (value, key) => new DynoMat3x3({ key, value }); +const dynoMat3x4 = (value, key) => new DynoMat3x4({ key, value }); +const dynoMat4 = (value, key) => new DynoMat4({ key, value }); +const dynoMat4x2 = (value, key) => new DynoMat4x2({ key, value }); +const dynoMat4x3 = (value, key) => new DynoMat4x3({ key, value }); +const dynoMat4x4 = (value, key) => new DynoMat4x4({ key, value }); +const dynoUsampler2D = (value, key) => new DynoUsampler2D({ key, value }); +const dynoIsampler2D = (value, key) => new DynoIsampler2D({ key, value }); +const dynoSampler2D = (value, key) => new DynoSampler2D({ key, value }); +const dynoUsampler2DArray = (value, key) => new DynoUsampler2DArray({ key, value }); +const dynoIsampler2DArray = (key, value) => new DynoIsampler2DArray({ key, value }); +const dynoSampler2DArray = (value, key) => new DynoSampler2DArray({ key, value }); +const dynoUsampler3D = (value, key) => new DynoUsampler3D({ key, value }); +const dynoIsampler3D = (value, key) => new DynoIsampler3D({ key, value }); +const dynoSampler3D = (value, key) => new DynoSampler3D({ key, value }); +const dynoUsamplerCube = (value, key) => new DynoUsamplerCube({ key, value }); +const dynoIsamplerCube = (value, key) => new DynoIsamplerCube({ key, value }); +const dynoSamplerCube = (value, key) => new DynoSamplerCube({ key, value }); +const dynoSampler2DShadow = (value, key) => new DynoSampler2DShadow({ key, value }); +const dynoSampler2DArrayShadow = (value, key) => new DynoSampler2DArrayShadow({ key, value }); +const dynoSamplerCubeShadow = (value, key) => new DynoSamplerCubeShadow({ key, value }); +class DynoUniform extends Dyno { + constructor({ + key, + type, + count, + value, + update, + globals + }) { + key = key ?? "value"; + super({ + outTypes: { [key]: type }, + update: () => { + if (update) { + const value2 = update(this.value); + if (value2 !== void 0) { + this.value = value2; + } + } + this.uniform.value = this.value; + }, + generate: ({ inputs, outputs }) => { + const allGlobals = (globals == null ? void 0 : globals({ inputs, outputs })) ?? []; + const uniforms = {}; + const name = outputs[key]; + if (name) { + allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`); + uniforms[name] = this.uniform; + } + return { globals: allGlobals, uniforms }; + } }); - return { id, promise }; + this.type = type; + this.count = count; + this.value = value; + this.uniform = { value }; + this.outKey = key; } - onMessage(event) { - const { id, result, error } = event.data; - const handler = this.messages[id]; - if (handler) { - delete this.messages[id]; - if (error) { - handler.reject(error); - } else { - handler.resolve(result); - } - } + dynoOut() { + return new DynoOutput(this, this.outKey); } - // Invoke an RPC on the worker with the given name and arguments. - // The normal usage of a worker is to run one activity at a time, - // but this function allows for concurrent calls, tagging each request - // with a unique message Id and awaiting a response to that same Id. - // The method will automatically transfer any ArrayBuffers in the - // arguments to the worker. If you'd like to transfer a copy of a - // buffer then you must clone it before passing to this function. - async call(name, args) { - const { id, promise } = this.makeMessagePromiseId(); - this.worker.postMessage( - { name, args, id }, - { transfer: getTransferable(args) } - ); - return promise; +} +class DynoBool extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bool", value, update }); } } -let maxWorkers = 4; -let numWorkers = 0; -const freeWorkers = []; -const workerQueue = []; -async function allocWorker() { - const worker = freeWorkers.shift(); - if (worker) { - return worker; +class DynoUint extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uint", value, update }); } - if (numWorkers < maxWorkers) { - const worker2 = new OldSplatWorker(); - numWorkers += 1; - return worker2; +} +class DynoInt extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "int", value, update }); } - return new Promise((resolve) => { - workerQueue.push(resolve); - }); } -function freeWorker(worker) { - if (numWorkers > maxWorkers) { - numWorkers -= 1; - return; +class DynoFloat extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "float", value, update }); } - const waiter = workerQueue.shift(); - if (waiter) { - waiter(worker); - return; +} +class DynoBvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec2", value, update }); } - freeWorkers.push(worker); } -async function withWorker(callback) { - const worker = await allocWorker(); - try { - return await callback(worker); - } finally { - freeWorker(worker); +class DynoUvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec2", value, update }); } } -const jsContent = '(function() {\n "use strict";\n class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n }\n if (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n }\n function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_worker_rs_bg.js": import0\n };\n }\n const ChunkDecoderFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += ", " + debugString(val[i]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n let cachedFloat32ArrayMemory0 = null;\n function getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x) {\n return x === void 0 || x === null;\n }\n function passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (module_or_path === void 0) {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4g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ADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwYCyADKAIgIgVBAkYNAUEBIQYgAygCTARAIAMoAlAgAy0A0QJBAkZqIQYLIANBqtUAaiIBIAMtAB86AAAgAyAGNgLUBCADIAMvAB07AahVIAMtABwhBiADKQIkIRQgAygCLCECIAMoAjAhCCADLQA0IQcgAy0ANSEJIAMtADYhCyADLQA3IQogA/0AAzghGyADKAIYIQQgA0G4zQBqIgwgA0HIAGpBmAT8CgAAIARBAkYNGCADIAMvAahVOwD1SCADIAEtAAA6APdIIANBoMkAaiAMQZgE/AoAACADIBv9CwSQSSADIAo6AI9JIAMgCzoAjkkgAyAJOgCNSSADIAc6AIxJIAMgCDYCiEkgAyACNgKESSADIBQ3AvxIIAMgBTYC+EggAyAGOgD0SCADIAQ2AvBIIANBCGogA0HwyABqEIoFQRwhByADLQAJIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAy0ACEEBaw4GJAElAiQDAAtBACEFQQEhByAGaCIEQQFrDgQEAxMSJAtBAiEFQQMhByAGaCIEQQFrDgQEBRIGIwtBASEFQQIhByAGaCIEQQFrDgQGBxEIIgtBBCEHIAZoIgVBAWsOBAgJEAohC0EJIQcMIAtBBSEHDB8LQQchBwweC0ELIQcMHQtBBiEFDAsLQQYhBwwbC0EKIQcMGgtBBSEFDAgLQQghBwwYC0EMIQcMFwtBByEFDAULAn5BwLvJAC0AAARAQdC7yQApAwAhF0HIu8kAKQMADAELIANBuM0AahC/BkHAu8kAQQE6AABB0LvJACADKQPATSIXNwMAIAMpA7hNCyEVQQAhBiADQTxqQQA2AgAgAyAVNwOAAUHIu8kAIBVCAXw3AwAgA0IANwNoIAMgATYCYCADQQI6AF0gA0GAgICAeDYCICADQgA3AxggA/0MAAAAAAAAAAAAAAAAAAAAAP0LAiwgA0EBOgBAIANBATYCqAEgA/0M/////wAAAAAAAAAAAAAAAP0LA5gBIANCADcDkAEgA0EAOgCsASADIBc3A4gBIANB8JrIAP0AAwD9CwNwIAMgAjYCZAJAAkACQCACQQRPBEAgASgAACEGQgQhFwwBCyADQgQgFEGokMgAKQMAIhVC/wGDQgRRIgQbIhc3A2ggBEUNAQsgA0G4zQBqQQFyIAYQmAQgAyADLQC7TToA0lEgAyADLwC5TTsB0FEgAyADLwG8TTsA01FBBCEGIAMCfgJAIAIgFyAUIBQgF1YbpyIEa0EETwRAIAEgBGo1AAAhGUIAIRYMAQtBqJDIACkDACIVQgiIIRYgFachBiAUIBVC/wGDQgRSDQEaCyAXQgR8CyIVNwNoIAZB/wFxQQRGDQEgBq1C/wGDIBZCCIaEIRULIAMgFT0Ak1UgA0GZ1QBqIBVCMIg9AAAgAyAVQhCIPgCVVUEAIQVBEyEEDBELIAMtANBRRQRAQQQhBgJAAkAgAiAVIBQgFCAVVhunIgJrQQRPBEAgASACaigAACEFQgAhFgwBC0EAIQVBqJDIACkDACIXQgiIIRYgF6chBiAXQv8Bg0IEUg0BCyAVQgR8IRQLIAMgFDcDaCAGQf8BcUEERwRAIANBkNUAakEBciEEIAMgBq1C/wGDIBZCCIaENwK8TSADQZnVAGogA0HCzQBqLwEAOwAAIAMgAygBvk02AJVVIAMoAbpNIQZBACEFDAkLIANBuM0AakEBciAFEJgEQdKSmbIEIQYgA0GQ1QBqIQRBAiEFAkACQAJAAkACQAJAAkACQAJAAkAgAy0AuU1BAWsOCwkRAAECAwQFBgcIEgtB1qDh4QQhBgwRC0HWoOHBBSEGDBALQcGcpeoEIQYMDwtBwZy1sgQhBgwOC0HBmMHCBCEGDA0LQcmGjYIFIQYMDAtBxbClsgQhBgwLC0HYmsGCAiEGDAoLIAMoAbpNIQYMCQsgA0G4zQBqIANB4ABqIgEQvQMgAygCuE0NDyADQfAAaiEIIAMgAy0AzE06AKxVIAMgAygCyE0iAjYCqFUgAykDwE0hFkHSkpmyBCEEIAMpA2ghFwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJB/wFxQQFrDgsACQoLAQIDBAUGBwgLQdeKiYIFIQQMBwtBwZyl6gQhBAwGC0HBnLWyBCEEDAULQcGYwcIEIQQMBAtByYaNggUhBAwDC0HFsKWyBCEEDAILQdiawYICIQQMAQsgAygAqVUhBAsgAyAENgKQVUEEIQVBEyEEDBULIANBuM0AaiECQQAhBkIAIRkgASgCBCIErSEUAkACQCAEQv////8PIAEpAwgiFSAVQv////8PWhunayIFQQAgBCAFTxtBA08EQCABKAIAIBUgFCAUIBVWG6dqIgQvAAAgBEECai0AAEEQdHIhBkEEIQQMAQtBqJDIACkDACIYQgiIIRkgGKchBCAYQv8Bg0IEUg0BCyAVQgN8IRQLIAEgFDcDCAJAIARB/wFxQQRHBEAgAiAErUL/AYMgGUIIhoQ3AgAMAQsgAkEEOgAAIAIgBjYCBAsCQCADLQC4TUEERwRAIAMpA7hNIhRCIIinIQUgFKciAkH/AXFBBEYNASADIAU2AJdVIAMgAjoAk1UgAyACQRh2OgCWVSADIAJBCHY7AZRVQQAhBUETIQQMFgsgAygCvE0hBQsCQCAFQQFxRQRAIAMoAmQiAq0hFSACQv////8PIAMpA2giFCAUQv////8PWhunayIEQQAgAiAETxtBAksNAUGokMgAKQMAIhenIQECQCAXQv8Bg0IEUQRAIAMgFEIDfDcDaCABQf8BcUEERg0BDBULIAMgFTcDaCABQf8BcUEERw0UC0EAIQUMEgtBExBxIgFFDRkgAUGcrcYA/QAAAP0LAAAgAUEPakGrrcYAKAAANgAAIANBmdUAaiABQRB2rT0AACADQRM7AJNVIAMgAUEQdDYAlVVBGCEFQRMhBAwVCyADIBRCA3w3A2ggAygCYCAUIBUgFCAVVBunaiICLwAAIAJBAmotAABBEHRyIgVBnYOoAUcNECADQbjNAGogARCQBiADLQC4TUEERgRAIAMvAbpNIQUMDwsgAykDuE0iFEIQiKchBSAUpyICQf8BcUEERg0OIAMgBTsAlVUgAyACOgCTVSADIBRCIIg+AJdVIAMgFEIIiDwAlFVBACEFQRMhBAwUCyADQbjNAGogARCpBgJAIAMtALhNQQRHBEAgAykDuE0iFEIIiKchBSAUpyICQf8BcUEERg0BIANBmdUAaiAUQjCIPQAAIAMgBToAlFUgAyACOgCTVSADIBRCEIg+AJVVQQAhBUETIQQMFQsgAy0AuU0hBQsgBUH/AXFBL0cNASADQbjNAGogARCRBiADLQC4TUEERgRAIAMoArxNIQYMDQsgAykDuE0iFEIgiKchBiAUpyIBQf8BcUEERg0MIAMgBjYAl1UgAyABOgCTVSADIAFBGHY6AJZVIAMgAUEIdjsBlFVBACEFQRMhBAwTCyADKQPQTSEaIANBuM0AaiEFQgAhFUEAIQlBACEMQQAhBkEAIQRBACENIwBBEGshCyABAn4CQCABKAIEIgogASkDCCIWIAqtIhQgFCAWVhunIgJHBEAgASgCACACai0AACEJQQQhBwwBC0GokMgAKQMAIhhCCIghFSAYpyEHIBQgGEL/AYNCBFINARoLIBZCAXwLIhY3AwhBBCECAkACQCAHQf8BcUEERwRAIAUgFTwABSAFIAc6AAQgBUEAOgAAIAVBCmogFUIoiD0BACAFIBVCCIg+AQYMAQtCACEVIAECfiAKIBYgFCAUIBZWG6drQQJNBEBBqJDIACkDACIYQgiIIRUgGKchAiAUIBhC/wGDQgRSDQEaCyAWQgN8CyIWNwMIIAJB/wFxQQRHBEAgCyACrUL/AYMgFUIIhoQiFDcDACAFIAspAgQ3AgggBSAUPgIEIAVBADoAAAwBCyABAn4CQCAKIBYgFCAUIBZWG6ciAmtBA08EQCABKAIAIAJqIgYtAAFBCHQhAiAGLQACQRB0IQQgBi0AACEMQQQhB0IAIRUMAQtBqJDIACkDACIYQgiIIRUgGKchB0EAIQIgFCAYQv8Bg0IEUg0BGgsgAiEGIBZCA3wLIhY3AwggB0H/AXFBBEcEQCALIAetQv8BgyAVQgiGhCIUNwMAIAUgCykCBDcCCCAFIBQ+AgQgBUEAOgAADAELAn8CQCAKIBYgFCAUIBZWG6ciAmtBA08EQCABKAIAIAJqIgotAAFBCHQhByAKLQACQRB0IQIgCi0AACENQQQhCkIAIRUMAQtBqJDIACkDACIYQgiIIRUgGKchCkEAIQdBACECQQAgGEL/AYNCBFINARoLIBZCA3whFCAHCyEHIAEgFDcDCCAKQf8BcUEERwRAIAsgCq1C/wGDIBVCCIaEIhQ3AwAgBSALKQIENwIIIAUgFD4CBCAFQQA6AAAMAQsgBiAMciAEckEBaiIErSAHIA1yIAJyQQFqIgKtfkIgiFAEQCAFQQA6AAwgBUEANgIIIAUgAjYCBCAFIAQ2AgAgBSAJQQJ2QQFxOgAUIAUgCUEDdkEBcToAEyAFIAlBBXZBAXE6ABIgBSAJQQR2QQFxOgARIAUgCUEBdkEBcToAFQwCCyAFQQk6AAALIAVBAjoAFQsgAygCxE0hBCADKALATSELIAMoArxNIQYgAygCuE0hAiADLQDNTSIJQQJGDQcgAyAGNgKgASADIAI2ApwBIAMgFyAafCIUNwNoIAMvAc5NIRAgAy0AzE0hDCADLQDLTSENIAMtAMpNIREgAy0AyU0hDiADLQDITSESAkACQAJAIBQgFCAZQgx9IhVCACAVIBlYG3wiF1oNAANAIANB0NEAaiABEL0DAkACQAJAAn8CQAJAAkAgAygC0FEEQCADLQDUUSIFDQUgAy0A2FFBAWsOAwECAwULIAMpA+hRIhUgFEIIfCIWfCEUAkACQCADLQDgUSIFQQtHBEAgAykD2FEiGSAWfCEYIAMgAygA4VE2ALFFIAMgBToAsEUgA0G4zQBqIAggA0GwxQBqEIQEAkAgAy0AxE1BDEcEQCADQcDFAGogA0HIzQBqKQMANwMAIAMgA/0AA7hN/QsDsEUMAQsgA0EMOgC8RSADIAMpA7hNNwOwRQsgA0GwxQBqIBYgGBD+BCAFQQZGDQELIBVCAFMgFSADKQNoIhV8IhYgFVRzRQ0BIANCgICAgA4+ApRVIANBmtUAakIAPAAAIANBmNUAakLVIz0BACADQQI6AJNVQQAhBQweCyADIAMoAqQBQQFqNgKkASAZQhhUBEBBGyEFDB4LIAMpA2giFkJ0WgRAIANCgICAgA4+ApRVIANBmtUAakIAPAAAIANBmNUAakLVIz0BACADQQI6AJNVQQAhBQweCyADIBZCDHw3A2ggA0G4zQBqIAEQkQYgAy0AuE1BBEYEQCADKAK8TSEFDAgLIAMpA7hNIhZCIIinIQUgFqciB0H/AXFBBEYNByADQZbVAGogB0EYdjoAACADIAU2AJdVIAMgBzoAk1UgAyAHQQh2OwGUVUEAIQUMHQsgAyAWNwNoIBQgF1QNBwwICyADLQDZUQwCCyADKALcUS0ACAwBCyADKALcUS0ACAtBJUYNAQsgAyADKQDVUTcDkFUgAyADQdzRAGooAAA2AJdVIAMoAuBRIQQMFwsgAyADKQPYUTcDuE0gA0G4zQBqEM4FDAILIAMgAykDkAEgBUH///8Hca18NwOQAQJAIAMtAKoBRQRAIANBuM0AaiABEL0DIAMoArhNDRYCQAJAIAMtAMhNQQJrDgYAAQEBAQABCyADQQE6AKoBCyAVQhh9IhVCAFMgAykDaCIWIBV8IhUgFlRzRQ0BIANCgICAgA4+ApRVIANBmtUAakIAPAAAIANBmNUAakLVIz0BACADQQI6AJNVQQAhBQwXCyAVQhB9IhVCAFMgAykDaCIWIBV8IhUgFlRzDQMLIAMgFTcDaCAUIBdUDQALCyADIAMtAKoBBH9BAQUgCEHk+MYAEKgEQQBHCzoAqgEgCUEBcQ0BDAwLIANCgICAgA4+ApRVIANBmtUAakIAPAAAIANBmNUAakLVIz0BACADQQI6AJNVQQAhBQwSC0EDIQUgCEGo+cYAEKgERQ0NIAhBkPnGABCoBA0KDA0LIAMgBToAkFVBCyEFQRMhBAwRCyADQdKSmbIENgKQVUEEIQVBEyEEDBALQayYxwAQ3QkAC0EEIQFCACEUIARBCHQiCSEEQgAMFwsgAykDOCEUIAMpAzAhFyADLQAvIQkgAy0ALiEGIAMtAC0hByADLQAsIQogAygCKCELIAMoAhwhBCADKQMgIhVCIIinIQUgFachCCADQbDFAGoQnQEMFQtBBCEFCyAD/QAE8EghGyADQZjAAGoiASADQYDJAGpBuAT8CgAAQfAEEHEiBkUNDyAGQQA6AB8gBkEAOwAdIAZBgICAgAI2AgggBkIBNwMAIAb9DAAAAAAAAAAAAAAAAAAAAAD9CwIMIAYgG/0LAyAgBkEwaiABQbgE/AoAACAGIAU6AOgEQaikxwAMFgsgAyALNgCXVSADIAJBGHY6AJJVIAMgAkEIdjsBkFUgAyAGOwCTVSADIAZBEHY7AJVVIAIhBQwJC0HWoOGBAiEGCyAEIAY2AAAMAwsCQCANQQFxRQ0AIAhBrfnGABCoBA0AQQMhBUETIQQMCAsCQCAMQQFxRQ0AIAhBsvnGABCoBA0AQQMhBUETIQQMCAsCQAJAAkAgCUEBcUUEQCAIQeT4xgAQqARBAEcgCEHM+MYAEKgERXNFDQFBAyEFQRMhBAwLCyADQQU6ALhNIANB0NEAaiADQRhqIANBuM0AakEGEOQEAkACQAJAAkACQAJAAkACQCADLQDQUSIFQRprDgQBBgYABgsgAygC1FFBgICAgHhGBEBBAyEFDBELIANByM0AaiADQdTRAGoiB0EIaigCACIFNgIAIAMgBykCADcDwE0gBUEESQ0BIANCBDcDuE0gAygCxE0oAAAhCwwCCyADQdDRAGoQqwRBGyEFDA8LIANCBCAFrUGokMgAKQMAIhRC/wGDQgRRGzcDuE0gFKciBUH/AXFBBEcNAQsgA0GwxQBqIQVBACEPQgAhFyADQbjNAGoiBygCECIKrSEUAkACQCAKQv////8PIAcpAwAiFSAVQv////8PWhunayITQQAgCiATTxtBAk8EQCAHKAIMIBUgFCAUIBVWG6dqLwAAIQ9BBCEKDAELQaiQyAApAwAiFkIIiCEXIBanIQogFkL/AYNCBFINAQsgFUICfCEUCyAHIBQ3AwACQCAKQf8BcUEERwRAIAUgCq1C/wGDIBdCCIaENwIADAELIAVBBDoAACAFIA87AQILIAMtALBFQQRGBEAgAy8BskUhBQwECyADKQOwRSIUQhCIpyEFIBSnIgdB/wFxQQRGDQMgAyAFOwCVVSADIAc6AJNVIAMgFEIgiD4Al1UgAyAUQgiIPACUVQwBCyADQZrVAGogFEI4iDwAACADQZjVAGogFEIoiD0BACADIAU6AJNVIAMgFEIIiD4ClFULIAMoAsBNIgEEQCADKALETSABQQEQogcLQQAhBQwLCyADIAMpANFRNwOQVSADIANB2NEAaigAADYAl1UgAygC3FEhBAwKCyADIAU7AagBIAhBkPnGABCoBCIFRQ0BIAMgBSkDCEIIfTcDGCADKALATSIFRQ0AIAMoAsRNIAVBARCiBwsCQCAIQZD5xgAQqAQiBUUNACAFKQMQIRUgAyAFKQMIIhRCEHw3A2ggA0G4zQBqIgUgARC9AyADKAK4TQ0CIAMgAy0AzE06AIRVIAMgAygCyE02AoBVIAMpA9BNIRcgAykDwE0gBSAIIANBgNUAahCEBCAUQhh8Ihl8IRYCQCADLQDETUEMRwRAIANB4NEAaiADQcjNAGopAwA3AwAgAyAD/QADuE39CwPQUQwBCyADQQw6ANxRIAMgAykDuE03A9BRCyADQdDRAGogGSAWEP4EIBQgF3xCIHwiFCAVVg0AIANBuM0AaiIFIAEQvQMgAygCuE0NAiADIAMtAMxNOgCEVSADIAMoAshNNgKAVSADKQPATSEVIAUgCCADQYDVAGoQhAQgFCAVfCEVAkAgAy0AxE1BDEcEQCADQeDRAGogA0HIzQBqKQMANwMAIAMgA/0AA7hN/QsD0FEMAQsgA0EMOgDcUSADIAMpA7hNNwPQUQsgA0HQ0QBqIBQgFRD+BAsgAyAQOwFeIAMgCToAXSADIAw6AFwgAyANOgBbIAMgEToAWiADIA46AFkgAyASOgBYIAMgBDYCVCADIAs2AlAgAyAGNgJMIAMgAjYCSCADIA46AKsBDAoLQbj5xgAQ3QkACwwFCyAGQf////8BTQRAIAMgBkEBakH//wBxNgKcASADIAZBDnZBAWpB//8AcTYCoAEgA0EDOgDQUSADQbjNAGogCCADQdDRAGogFyAWIBd8EOYCIAMgBkH/////AEs6AKsBIANBAzoAXQwICyADIAZBHXY6AJBVQQwhBUETIQQMBgsgA0G4zQBqIAEQkAYCQCADLQC4TUEERgRAIAMvAbpNIQYMAQsgAykDuE0iFEIQiKchBiAUpyIBQf8BcUEERg0AIAMgBjsAlVUgAyABOgCTVSADIBRCIIg+AJdVIAMgFEIIiDwAlFVBACEFQRMhBAwGCyADIAZB//8AcSIBNgKgASADIAVB//8AcSICNgKcAUEXIQUgAkUgAUVyDQAgA0ECOgDQUSADQbjNAGogCCADQdDRAGogFyAWIBd8EOYCIANBAToAqgEgA0ECOgBdDAYLQRMhBAwECyADIAU7AZBVIAMgBUEQdjoAklVBESEFQRMhBAwDCyADIBdCCIgiFD4ClFUgA0Ga1QBqIBRCMIg8AAAgA0GY1QBqIBRCIIg9AQAgAyABOgCTVUEAIQVBEyEEDAILIANBmdUAaiADQcbNAGozAQA9AAAgAyADNQHCTT4AlVUgAyADLQC/TToAklUgAyADLwC9TTsBkFUgAyADLwHATTsAk1UgAygCyE0hBCADLQC8TSEFCyAFQf8BcUEdRg0BCyADQabVAGogAy0AklU6AAAgAyADLwGQVTsBpFUgA0GZ1QBqMwAAIRQgAzUAlVUhFSADLwCTVSEGIAMoAiAiAUGAgICAeHJBgICAgHhHBEAgAygCJCICQQRrKAIAIghBeHEiCUEEQQggCEEDcSIIGyABakkNDiAIQQAgCSABQSdqSxsNDyACEKICCwJAAkAgAygCdCIBRQ0AIAEgAUEYbCICakEhaiIBRQ0AIAMoAnAgAmsiAkEcaygCACIIQXhxIglBBEEIIAhBA3EiCBsgAWpJDQ8gCEEAIAkgAUEnaksbDQEgAkEYaxCiAgsgFSAUQiCGhAwCCwwOCyADQabVAGogA0Enai0AADoAACADIAMvACU7AaRVIAMpAxghFCADLQAkIQUgAygCMCEEIAMoAjQhCCADKAI4IQIgAygCPCEJIAP9AANAIRsgAygCICEBIAMpAyghFSADQfDIAGogA0HQAGpB4AD8CgAAIAFBgYCAgHhHDQEgFachBiAVQhCICyEUIAatQv//A4MgFEIQhoQhFCAFQf8BcQR/QRAQcSIJRQ0CIAkgBToAACAJIAMvAaRVOwABIAkgBDYCDCAJIBQ3AgQgCUEDaiADQabVAGotAAA6AABCgAYhFEEABUEFCyEBIBRCIIinIQggFKchBEHsu8QAIQdCAAwGCyADQdDEAGoiByADQfDIAGpB4AD8CgAAQaABEHEiBkUNACAGIAU6AAwgBiABNgIIIAYgFDcDACAGIAMvAaRVOwANIAYgG/0LAiggBiAJNgIkIAYgAjYCICAGIAg2AhwgBiAENgIYIAYgFTcCECAGQQ9qIANBptUAai0AADoAACAGQThqIAdB4AD8CgAAIAZBCDoAmAFB4KTHAAwHCwALIANB8MgAahDGA0EEIQpBACEEQQQhAQwCCyADQRhqEMYDCyADIAY6AIBVIAMgAy8BqFU7AIFVIAMgFDcCiFUgAyAFNgKEVSADIANBqtUAai0AADoAg1UgA0EYaiADQYDVAGoQ/AMgAykDOCEUIAMpAzAhFyADLQAvIQkgAy0ALiEGIAMtAC0hByADLQAsIQogAygCKCELIAMoAiQhBSADKAIgIQggAygCHCEEIAMoAhghAQsgAUEGRg0BIApB/wFxIAdB/wFxQQh0ciAGQf8BcUEQdHIgCUEYdHIhCSAXpyEHIBdCgICAgHCDCyAHrYQhFQwCCyAEIQYgCAshAgJAAn8gBiACKAIsERMAIhRCgICAgAJWBEBBACEFQQMhAUEDDAELIANBADYCiEkgA0EANgKASSADQoCAgIACIBR9NwP4SCADQgE3A/BIIANBGGogBiADQfDIAGogAigCMBEFACADKAIYIgFBBkYNASADKQM4IRQgAykDMCEVIAMoAiwhCSADKAIoIQsgAygCJCEFIAMoAhwhBCADKAIgCyEIIAIoAgAiBwRAIAYgBxEDAAsgAigCBCICRQ0BIAZBBGsoAgAiB0F4cSIKQQRBCCAHQQNxIgcbIAJqSQ0DIAdBACAKIAJBJ2pLGw0EIAYQogIMAQsgAyAGIAIoAgwRAQAgAygCBCEKIAMoAgAhCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGIAIoAhARBABB/wFxQQFrDgkBAgMEBQYHCAkACyADQRhqIAYgAhChBCADKAIkIQUgAygCICEIIAMoAhwhBCADKAIYIgFBBkcNHwJAIAqtIhUgCa1+IhRCIIhQBEAgFKciASAFTQ0BC0EAIQtBAiEBIARFDR8gCCAEQQEQogdBgICAgHghBAwhCyAEQYCAgIB4Rw0JDBwLIANBGGogBiACEKEEIAMoAiQhBSADKAIgIQggAygCHCEEIAMoAhgiAUEGRw0eQQAhCwJAIAlBAEgNACAKrSIUIAlBAXStfiIVQiCIpw0AIBWnIAVNDQoLQQIhASAERQ0dIAggBEEBEKIHQYCAgIB4IQQMHwsgA0EYaiAGIAIQoQQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDR0CQAJAIAmtIhdCA34iFEIgiKcNACAUp60gCq0iFH4iFUIgiKcNACAVpyAFTQ0BC0EAIQtBAiEBIARFDR0gCCAEQQEQogdBgICAgHghBAwfCyAEQYCAgIB4Rg0aIBdCA34iFUIgiKcNJCAVp60gFH4iFUIgiKcNJCAVpyIBIAVNDQkMIgsgA0EYaiAGIAIQoQQgAygCJCEFIAMoAiAhByADKAIcIQYgAygCGCIBQQZHBEAgAykDOCEUIAMpAzAhFSADKAIsIQkgAygCKCELIAYhBCAHIQgMHgsCQAJAIAlB/////wNLDQAgCUECdK0gCq1+IhRCIIinDQAgFKcgBU0NAQtBACELQYCAgIB4IQRBAiEBIAZFDR4gByAGQQEQogcMHgtBgICAgHghBCAGQYCAgIB4Rw0YQQAhC0ECIQEMHQsgA0EYaiAGIAIQjAQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDRsgCq0iFSAJrX4iFEIgiFAEQCAUpyIBIAVNDQkLQQAhCyAERQ0ZQQIhASAIIARBAXRBAhCiB0GAgICAeCEEDBwLIANBGGogBiACEIwEIAMoAiQhBSADKAIgIQggAygCHCEEIAMoAhgiAUEGRw0aQQAhCwJAIAlBAEgNACAKrSIUIAlBAXStfiIVQiCIpw0AIBWnIAVNDQkLIARFDRhBAiEBIAggBEEBdEECEKIHQYCAgIB4IQQMGwsgA0EYaiAGIAIQjAQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDRkCQAJAIAmtIhdCA34iFEIgiKcNACAUp60gCq0iFH4iFUIgiKcNACAVpyAFTQ0BC0EAIQsgBEUNGEECIQEgCCAEQQF0QQIQogdBgICAgHghBAwbCyAEQYCAgIB4Rg0WIBdCA34iFUIgiKcNICAVp60gFH4iFUIgiKcNICAVpyIBIAVNDQgMHgsgA0EYaiAGIAIQjAQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDRgCQCAJQf////8DSw0AIAqtIhUgCUECdK1+IhRCIIinDQAgFKcgBU0NCQtBACELIARFDRZBAiEBIAggBEEBdEECEKIHQYCAgIB4IQQMGQsgA0EYaiAGIAIQjQQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDRcCQAJAIAmtIhdCA34iFEIgiKcNACAUp60gCq0iFH4iFUIgiKcNACAVpyAFTQ0BC0EAIQsgBEUNFkECIQEgCCAEQQJ0QQQQogdBgICAgHghBAwZCyAEQYCAgIB4Rg0UIBdCA34iFUIgiKcNHiAVp60gFH4iFUIgiKcNHiAVpyIBIAVNDQgMHAsgA0EYaiAGIAIQjQQgAygCJCEFIAMoAiAhCCADKAIcIQQgAygCGCIBQQZHDRYCQCAJQf////8DSw0AIAqtIhUgCUECdK1+IhRCIIinDQAgFKcgBU0NCQtBACELIARFDRRBAiEBIAggBEECdEEEEKIHQYCAgIB4IQQMFwsgFEIgiKcNHCABIAVLDRogA0EYaiAIIAFBAhCBASADKAIcIQcCQAJAAkAgCUH/////A0sNACAJQQJ0rSAVfiIUQiCIpw0AIAMoAiAiBSAUp08NAQsgAygCGCIARQ0BIAcgAEEBEKIHDAELIAMoAhgiBkGAgICAeEcNCQsMGwsgBEGAgICAeEYNESAJQQF0rSAUfiIVQiCIpw0bIBWnIgEgBUsNGSADQRhqIAggAUEDEIEBIAMoAhwhBwJAAkACQCAJQf////8DSw0AIAlBAnStIBR+IhRCIIinDQAgAygCICIFIBSnTw0BCyADKAIYIgBFDQEgByAAQQEQogcMAQsgAygCGCIGQYCAgIB4Rw0JCwwaCyADQRhqIAggAUEAEIEBIAMoAhwhBwJAAkACQCAJQf////8DSw0AIAlBAnStIBR+IhRCIIinDQAgAygCICIFIBSnTw0BCyADKAIYIgBFDQEgByAAQQEQogcMAQsgAygCGCIGQYCAgIB4Rw0JCwwZCyAEQYCAgIB4Rg0PIBRCIIinDRkgASAFSw0XIANBGGogCCABQQIQeyADKAIcIQcCQAJAAkAgCUH/////A0sNACAJQQJ0rSAVfiIUQiCIpw0AIAMoAiAiBSAUp08NAQsgAygCGCIARQ0BIAcgAEEBEKIHDAELIAMoAhgiBkGAgICAeEcNCQsMGAsgBEGAgICAeEYNDiAJQQF0rSAUfiIVQiCIpw0YIBWnIgEgBUsNFiADQRhqIAggAUEDEHsgAygCHCEHAkACQAJAIAlB/////wNLDQAgCUECdK0gFH4iFEIgiKcNACADKAIgIgUgFKdPDQELIAMoAhgiAEUNASAHIABBARCiBwwBCyADKAIYIgZBgICAgHhHDQkLDBcLIANBGGogCCABQQAQeyADKAIcIQcCQAJAAkAgCUH/////A0sNACAJQQJ0rSAUfiIUQiCIpw0AIAMoAiAiBSAUp08NAQsgAygCGCIARQ0BIAcgAEEBEKIHDAELIAMoAhgiBkGAgICAeEcNCQsMFgsgBEGAgICAeEYNDCAJQQJ0rSAVfiIUQiCIpw0WIBSnIgEgBUsNFCADQRhqIAggAUEBEHsgAygCHCEHAkAgAygCICIFIAFJBEAgAygCGCIARQ0BIAcgAEEBEKIHDAELIAMoAhgiBkGAgICAeEcNCQsMFQsgA0EYaiAIIAFBABDNAiADKAIcIQcCQAJAAkAgCUH/////A0sNACAJQQJ0rSAUfiIUQiCIpw0AIAMoAiAiBSAUp08NAQsgAygCGCIARQ0BIAcgAEEBEKIHDAELIAMoAhgiBkGAgICAeEcNCQsMFAsgBEGAgICAeEYNCiAJQQJ0rSAVfiIUQiCIpw0UIBSnIgEgBUsNEiADQRhqIAggAUEBEM0CIAMoAhwhByADKAIgIgUgAUkEQCADKAIYIgBFDRQgByAAQQEQogcMFAsgAygCGCIGQYCAgIB4Rg0TIARFDQkgCEEEaygCACIBQXhxIgIgBEECdCIEQQRBCCABQQNxIgEbakkNECABRSACIARBJ2pNcg0IDBELIARFDQggCEEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQ8gAUUgAiAEQSdqTXINBwwQCyAERQ0HIAhBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIARqSQ0OIAFFIAIgBEEnak1yDQYMDwsgBEUNBiAIQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAEakkNDSABRSACIARBJ2pNcg0FDA4LIARFDQUgCEEEaygCACIBQXhxIgIgBEEBdCIEQQRBCCABQQNxIgEbakkNDCABRSACIARBJ2pNcg0EDA0LIARFDQQgCEEEaygCACIBQXhxIgIgBEEBdCIEQQRBCCABQQNxIgEbakkNCyABRSACIARBJ2pNcg0DDAwLIARFDQMgCEEEaygCACIBQXhxIgIgBEEBdCIEQQRBCCABQQNxIgEbakkNCiABRSACIARBJ2pNcg0CDAsLIARFDQIgCEEEaygCACIBQXhxIgIgBEEBdCIEQQRBCCABQQNxIgEbakkNCSABRSACIARBJ2pNcg0BDAoLIARFDQEgCEEEaygCACIBQXhxIgIgBEECdCIEQQRBCCABQQNxIgEbakkNCCABRQ0AIAIgBEEnaksNCQsgCBCiAgsgACAKNgIQIAAgCTYCDCAAIAU2AgggACAHNgIEIAAgBjYCAAwFC0EAIQsLQQIhAUGAgICAeCEEDAILQYCAgIB4IQQMAQsgAykDOCEUIAMpAzAhFSADKAIsIQkgAygCKCELCyADIBQ3AzggAyAVNwMwIAMgCTYCLCADIAs2AiggAyAFNgIkIAMgCDYCICADIAQ2AhwgAyABNgIYIwBB0ABrIgEkACABQQxqEOQIIAFByABqIANBGGoiAkEgaikCADcCACABQThqIAJBEGr9AAIA/QsCACABIAL9AAIA/QsCKEHIABBxIgJFBEAACyACQdC0xwA2AgAgAiABKQIMNwIEIAIgASkCJDcCHCACQQxqIAFBFGr9AAIA/QsCACACQSRqIAFBLGr9AAIA/QsCACACQTRqIAFBPGr9AAIA/QsCACACQcQAaiABQcwAaigCADYCACABQdAAaiQAIABBgICAgHg2AgAgACACNgIECyADQbDVAGokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0EAIAEgBUGovMQAEOoHAAtBuLzEAEEvQei8xAAQqwcAC0GYvMQAEN0JAAvvXQMvfwV+BnsjAEHQAmsiByQAIAFBQGshDwJAAkACQAJAAkACQAJAAkAgAS0AYCIIDQAgB0G0AmogDxCOAiAHLQC0AiIIQR1GBEAgAS0AYCIIDQEMAwsMAQsgASAIQQFrIgs6AGAgASABKQNAIjdCAYgiNjcDQAJAAkACQAJAAkACQAJAAkACQCA3QgGDUARAQYCAgIB4IR4MAQsgCEEETQRAIAdBtAJqIA8QjgIgBy0AtAIiCEEdRw0KIAEtAGAiC0EESQ0LIA8pAwAhNgsgASALQQRrOgBgIAEgNkIEiDcDQCA2p0EPcSIfQQFrQQtPBEBBDSEIDAwLQQQgH3QiDRBxIghFDQMgCEEEay0AAEEDcUUgDUVyRQRAIAhBACAN/AsACyAIrUEBIB90Ih6tQiCGhCE3CyA3pyEnQQEhHEECIRpBASEvIARFDQECQAJAAkAgAS0AYCIIRQRAIAdBtAJqIA8QjgIgBy0AtAIiCEEdRw0BIAEtAGAiCEUNBAsgASAIQQFrIgQ6AGAgASABKQNAIjZCAYgiODcDQCA2QgGDUA0EIAhBA00EQCAHQbQCaiAPEI4CIActALQCIghBHUcNASABLQBgIgRBA0kNBCAPKQMAITgLIAEgBEEDazoAYCABIDhCA4g3A0BBfyA4p0EHcUECaiIddEF/cyIEIAJB//8DcWogHXYiLyAEIANB//8DcWogHXYiBGwiIEECdCESICAEQCASEHEiDUUNBiANQQRrLQAAQQNxRSASRXJFBEAgDUEAIBL8CwALIAdBtAJqIAEgLyAEQQAgDSASEDogBy0AtAIiCEEdRg0DIAcpArwCITcgBygCuAIhCiAHLwG2AiEOIActALUCIQkgDSASQQEQogcMCwsgB0G0AmogASAvIARBAEEBIBIQOiAHLQC0AiIIQR1GDQELIAcpArwCITcgBygCuAIhCiAHLwG2AiEOIActALUCIQkMCQtBACEgDAILICBBAXQQcSIaRQ0CAn8gEkEEayIEQSBJBEAgEiELIA0hCEEBDAELIA0gEmpBAmsgGksEQCASIQtBASANIgggGiAEQQF2akECakkNARoLIA0gBEECdkEBaiIEIARBA3EiBEEEIAQbayIZQQJ0aiEIICAgGWtBAnQhCyAaIQQgGSEKIA0hCf0MAQAAAAEAAAABAAAAAQAAACI+ITsDQCAEIAn9AAAAIj0gO/0NAAAEAAgADAAAAAAAAAAAAEEI/YsBID0gO/0NAQUJDQAAAAAAAAAAAAAAAP2JAf1QIj39WwEAACA7ID39qQEgPv2uAf25ASE7IARBCGohBCAJQRBqIQkgCkEEayIKDQALIDsgOyA7/Q0ICQoLDA0ODwABAgMAAQID/bkBIjsgOyA7/Q0EBQYHAAECAwABAgMAAQID/bkB/RsACyEcIBogGUEBdGohBANAIAQgCC8AACIKQQh0IApBCHZyIgo7AQAgHCAKQf//A3FBAWoiCSAJIBxJGyEcIAhBBGohCCAEQQJqIQQgGUEBaiEZIAtBBGsiCw0ACyANIBJBARCiBwwBC0EPIQgMBgsgN0IgiKchISAHQQA2AhggB0KAgICAwAA3AxBBASAfQQ9xdCExIAdBuAJqISIgB0G0AmoiBEEBciEsIAdBsgFqISMgB0GxAWohLSAHQbQBaiEkIARBAnIhJUEBIQhBBCESQQAhCwNAIAghNEEAIQ0gB0EAOwGUASAHQYCAgIB4NgKQASAHQQA7AXggB0GAgICAeDYCdCAHQQA7AVwgB0GAgICAeDYCWCAHQQA7AUAgB0GAgICAeDYCPCAHQQA7ASQgB0GAgICAeDYCIEEBIQgCQAJ/AkACQAJAA0AgDSEbIAghDSAbQQF0LwGAgEcCQCABLQBgIggNACAHQbQCaiAPEI4CAkAgBy0AtAIiCEEdRgRAIAEtAGAiCA0CQQ8hCAwBCyAHICUpAQA3A8gBIAcgJUEGaikBADcBzgEgBy0AtQIhAQsgIyAHKQPIATcBACAjQQZqIAcpAc4BNwEAIAcgAToAsQEgByAIOgCwAQwEC0EAIDFBACAeQYCAgIB4RxsgGxtqIRYgASAIQQFrIgg6AGAgASABKQNAIjZCAYgiNzcDQAJAAkACfwJAAkACQAJAAkACQAJAAkAgNkIBg1BFBEAgCEH/AXENBCAHQbQCaiAPEI4CIActALQCIghBHUcNASABLQBgIggNA0EPIQgMAgtBJhBxIgpFDRIgCkEEayIMLQAAQQNxBEAgCv0MAAAAAAAAAAAAAAAAAAAAACI7/QsAACAKQR5qQgA3AAAgCkEQaiA7/QsAAAsgAS0AYCIIQQNLDQYgB0G0AmogDxCOAiAHLQC0AiIIQR1HDQQgAS0AYCIIQQRPDQZBDyEIDAULIAcgJSkBADcD2AEgByAlQQZqKQEANwHeASAHLQC1AiEBCyAjIAcpA9gBNwEAICNBBmogBykB3gE3AQAgByABOgCxASAHIAg6ALABIAdBgYCAgHg2AqwBDAwLIA8pAwAhNwsgASAIQQFrIgg6AGAgASA3QgGIIjY3A0AgCEH/AXFFBEAgB0G0AmogDxCOAgJAAkAgBy0AtAIiCEEdRgRAIAEtAGAiCA0CQQ8hCAwBCyAHICUpAQA3A+gBIAcgJUEGaikBADcB7gEgBy0AtQIhAQsgIyAHKQPoATcBACAjQQZqIAcpAe4BNwEAIAcgAToAsQEgByAIOgCwASAHQYGAgIB4NgKsAQwMCyAPKQMAITYLIAEgCEEBayIIOgBgIAEgNkIBiDcDQAJAAkBBCEEBIDanQQFxGyIEIAhB/wFxSwRAIAdBtAJqIA8QjgIgBy0AtAIiCEEdRwRAIAdBgAJqICJBCGooAgA2AgAgByAiKQIANwP4ASAHLwG2AiEBIActALUCIQQMAgsgAS0AYCEICyAIQf8BcSAETw0BQQ8hCAsgJCAHKQP4ATcCACAkQQhqIAdBgAJqKAIANgIAIAcgATsBsgEgByAEOgCxASAHIAg6ALABIAdBgYCAgHg2AqwBDAsLIAEgCCAEayIJOgBgIAEgASkDQCI4IAStIjmIIjY3A0AgFkH//wNxIgogOEJ/IDmGQn+Fg6ciCE0EQAwKCyA3QgGDUA0DIAlB/wFxQQdNBEAgB0G0AmogDxCOAgJAAn8gBy0AtAIiBEEdRgRAIAEtAGAiCUEITw0CQQ8MAQsgB0GgAmogIkEIaigCADYCACAHICIpAgA3A5gCIAcvAbYCISggBy0AtQIhASAECyEIICQgBykDmAI3AgAgJEEIaiAHQaACaigCADYCACAHICg7AbIBIAcgAToAsQEgByAIOgCwASAHQYGAgIB4NgKsAQwMCyAPKQMAITYLIAEgCUEIazoAYCABIDZCCIg3A0AgCiA2p0H/AXEiKEsEQEEYEHEiBEUNDyAEQQI7ARAgBCAoOwEKIARBATsBCCAEIAg7AQIgBEEBOwEAQQgQcSIKRQ0PIAogKEGAgARyNgIEIAogCEGAgARyNgIAIAdBATsBxAEgB0ECNgLAASAHIAo2ArwBIAdCg4CAgCA3ArQBIAcgBDYCsAEgB0EDNgKsASAEIQhBAwwFCwwJCyAHQYYCaiAsQQJqLQAAOgAAIAcgLC8AADsBhAIgBygCuAIhASAHKQK8AiE3CyAtIAcvAYQCOwAAIC1BAmogB0GGAmotAAA6AAAgByAIOgCwASAHIDc3ArgBIAcgATYCtAEMBgsgASAIQQRrIgg6AGAgASABKQNAIjZCBIgiNzcDQCA2p0EPcUECdCEOQXAhBANAIAhB/wFxQQJNBEAgB0G0AmogDxCOAgJAAkAgBy0AtAIiCEEdRgRAIAEtAGAiCEEDTw0CQQ8hCAwBCyAHQZACaiAiQQhqKAIANgIAIAcgIikCADcDiAIgBy8BtgIhCSAHLQC1AiEBCyAkIAcpA4gCNwIAICRBCGogB0GQAmooAgA2AgAgByAJOwGyASAHIAE6ALEBIAcgCDoAsAEMCAsgDykDACE3CyABIAhBA2siCDoAYCABIDdCA4giNjcDQCAEQZT/xgBqKAIAIglBEk0EQCAKIAlBAXRqIDenQQdxIgk7AQAgNiE3IA4gBEEEaiIERg0EDAELCyAJQRNB0P/GABCMBwALIAcgCDsBsAEgB0GAgICAeDYCrAFBgICAgHgLIQwgBykCuAEhNyAHKAK0ASEKIAcvAbIBIQ4gBy0AsQEhCQwBCyAHQRM2AqACIAcgCjYCnAIgB0ETNgKYAiAHQbQCaiAHQZgCahCYASAHKALEAiETIAcoAsACIRggBygCvAIhDiAHKAK4AiEKAkAgBygCtAIiFEGBgICAeEYEQCAKIQggEyEVIBghBAwBCyAHKQLIAiE3AkACQCAIQf8BcUUEQCAHQbQCaiAPEI4CAkAgBy0AtAIiCEEdRgRAIAEtAGAiCA0BQQ8hCAwECwwCCyAPKQMAITYLIAEgCEEBayIJOgBgIAEgNkIBiCI4NwNAIBYhDCA2QgGDUEUEQAJAAkAgCEH/AXFBA00EQCAHQbQCaiAPEI4CIActALQCIghBHUcNBEEPIQggAS0AYCIJQQNJDQUgDykDACE4CyABIAlBA2siCToAYCABIDhCA4g3A0AgOKdBAXRBDnFBAmoiDCAJQf8BcU0NASAHQbQCaiAPEI4CIActALQCIghBHUYNAAwDCyABLQBgIQkLQQ8hCCAJQf8BcSAMSQ0CIAEgCSAMazoAYCABIAEpA0AiNiAMrSI4iDcDQCAWQQJrQf//A3EgNkJ/IDiGQn+Fg6ciCUH//wNxSQ0CIAlBAmohDAsgFkH//wNxIhUEfyAVQQF0IikQcSIQRQ0MIBBBBGsiMi0AAEEDcUUgKUVyRQRAIBBBACAp/AsACwJAIAxB//8DcUUNACA3QiCIITYgN6chLkEAIQhBCCEqAkADQAJAIAdBtAJqIA8QjgICQAJAAkACQAJAAn8gBy0AtAIiBEEdRwRAIActALcCQRh0IAcvALUCQQh0ciAEcgwBCyAKIQQgFEGAgICAeEYNAiAPKQMAIjcgNoOnQf//A3EiBCAuTw0DAkAgEyAEQQJ0aigCACIEQYCABE8EQCABLQBgIhEgBEEQdiIJQf8BcU8NA0EPIQkgBy8BtgIhBAwBCyAHQbQCaiAKIA4gN6dBCnZBP3EgBEEBayAPEJwGIAcvAbYCIQQgBy0AtAIiCUEdRg0DCyAHLQC1AkEIdCAJciAEQRB0cgshCCAHKALAAiEVIAcoArwCIQQgBygCuAIhDgwHCyABIBEgCWs6AGAgASA3IAmtiDcDQAsCQCAEQf//A3EiEUEQTwRAIARBEGsiJkH//wNxQQNJDQEMBQsgECAIQf//A3FBAXRqIAQ7AQAgBCAqIBEbISogCEEBaiEIDAMLIAEtAGAiCUGChhwgJkEDdEH4/wNxdiIEQQdxSQRAIAdBtAJqIA8QjgIgBy0AtAIiCUEdRwRAIActALUCQQh0IAlyIQggBygCwAIhFSAHKAK8AiEEIAcoArgCIQ4gBy8BtgIhKwwDCyABLQBgIQkLIAlB/wFxIARB/wFxSQRAQQ8hCAwCCyABIAkgBGs6AGAgASABKQNAIjcgBK1CB4MiOIg3A0AgFkH//wNxIgRCg4CMgLABICZBBHStQvD/A4OIpyI1IDdCfyA4hkJ/hYOnIitqIgkgCGpB//8DcUkNAyAqQQAgEUEQRhshJiAIQf//A3EiCCAEIAQgCEkbIjAgCGsiBCArIDVqQQFrQf//A3EiESAEIBFJGyIEQQhPBEAgBEEBaiIRQQdxIhdBCCAXGyIXIARBf3NqIQQgCSARIBdrIhFrIQkgCCARaiAQIAhBAXRqIQggJv0QITsDQCAIIDv9CwEAIAhBEGohCCAEQQhqIgQNAAshCAsgECAIQQF0aiEEA0AgCCAwRwRAIAQgJjsBACAEQQJqIQQgCEEBaiEIIAlBAWsiCUH//wNxDQEMBAsLIDAgFUGMgscAEIwHAAsgBCAuQdj5xgAQjAcACyArQRB0IAhyIQgMAwsgCEH//wNxIBZB//8DcU8NAyAMQQFrIgxB//8DcQ0BDAMLC0EPIQgLAkAgMigCACIJQXhxIgxBBEEIIAlBA3EiCRsgKWpPBEAgCUEAIAwgKUEnaksbDQEgEBCiAgwFCwwYCwwYCyAQBUECCyEEQR0hCAJAAkAgFEGAgICAeEYNACAUBEAgCkEEaygCACIJQXhxIgwgFEEDdCIOQQRBCCAJQQNxIgkbakkNGCAJQQAgDCAOQSdqSxsNGSAKEKICCyAYRQ0AIBNBBGsoAgAiCkF4cSIJIBhBAnQiDEEEQQggCkEDcSIKG2pJDRcgCkEAIAkgDEEnaksbDQEgExCiAgsgFSEODAMLDBYLIActALUCQQh0IAhyIAcvAbYCQRB0ciEIIAcoAsACIRUgBygCvAIhBCAHKAK4AiEOCyAUQYCAgIB4Rg0AAkAgFARAIApBBGsoAgAiCUF4cSIMIBRBA3QiEEEEQQggCUEDcSIJG2pJDRUgCUEAIAwgEEEnaksbDRYgChCiAgsgGEUNASATQQRrKAIAIgpBeHEiCSAYQQJ0IgxBBEEIIApBA3EiChtqSQ0UIApBACAJIAxBJ2pLGw0AIBMQogIMAQsMFAsgCEH/AXFBHUcEQCAHQbMBaiAIQRh2OgAAIAcgFTYCvAEgByAENgK4ASAHIA42ArQBIAcgCDoAsAEgB0GBgICAeDYCrAEgByAIQQh2OwCxAQwFCyAHIBU2ArACIAcgBDYCrAIgByAONgKoAiAHQawBaiAHQagCahCYASAHLQCwASEIIAcpArgBITcgBy8BsgEhDiAHLQCxASEJIAcoArQBIgogBygCrAEiDEGBgICAeEYNBRoLIAcpAsABITYCQAJAIAdBIGogG0EcbGoiBCgCACIQQYCAgIB4Rg0AIBAEQCAEKAIEIhZBBGsoAgAiE0F4cSIYIBBBA3QiEEEEQQggE0EDcSITG2pJDQIgE0EAIBggEEEnaksbDRUgFhCiAgsgBCgCDCIQRQ0AIAQoAhAiFkEEaygCACITQXhxIhggEEECdCIQQQRBCCATQQNxIhMbakkNEyATQQAgGCAQQSdqSxsNFCAWEKICCyAEIDY3AhQgBCA3NwIMIAQgCjYCCCAEIA47AQYgBCAJOgAFIAQgCDoABCAEIAw2AgAgDSANQQVJIgRqIQggBEUNBgwBCwsMEAsCQCAMKAIAIgFBeHEiAkEqQS4gAUEDcSIBG08EQCABQQAgAkHOAE8bDQEgChCiAgwDCwwQC0GMjcgAQS5BvI3IABDrBwwFCyAHQYGAgIB4NgKsAUEPIQggB0EPOgCwAQsgBykCuAEhNyAHLwGyASEOIActALEBIQkgBygCtAELIQogB0EgahCNAiALBEAgEiEBA0AgARCNAiABQYwBaiEBIAtBAWsiCw0ACwsCQCAHKAIQIgEEQCASQQRrKAIAIgJBeHEiAyABQYwBbCIBQQRBCCACQQNxIgIbakkNDiACQQAgAyABQSdqSxsNDyASEKICCyAgRQ0IIBpBBGsoAgAiAUF4cSICICBBAXQiA0EEQQggAUEDcSIBG2pJDQ0gAUEAIAIgA0EnaksbDQAgGhCiAgwICwwNCyAHKAIQIAtGBEAgB0EQahCfBiAHKAIUIRILIBIgC0GMAWxqIAdBIGpBjAH8CgAAIAcgC0EBaiILNgIYIDRBAWohCCALIBxHDQALIAcpAxAhNyAHKAIQITACQAJ/IB1FBEBBACEIIDdCIIinDAELIBlFDQEgGi8BACIIIBxPDQYgN0IgiKcLIQQCQAJAAkACQCACQf//A3EiFiADQf//A3FsIhVFDQBBfyAddEF/c0H//wMgHRshNSAGQRBrIRMgBq1CAXwhN0EAIB9rQR9xIRggAkEBa0H//wNxITEgBCAIQYwBbGohDEEAIQ1BACEQA0ACQCACQf//A3FFBEAgB0G0AmogDxCOAiAHLQC0AiIIQR1HDQkgDSAQSQ0BQdj7xgAQgggACwJAA0AgB0G0AmogDxCOAiAHLQC0AiIIQR1HDQogDSAQSQ0CIA0gDSAWbiIEIBZsIghrIQMCQCAdRQRAQQAhCwwBCyAZIC8gBEH//wNxIB12bCADQf//A3EgHXZqIgRLBEAgGiAEQQF0ai8BACILIBxJDQEgCyAcQej7xgAQjAcACyAEIBlByPLEABCMBwALIAggAyA1ciIDIDEgAyAxSRtqQQFqIRAgEiALQYwBbGoiDCgCAEGAgICAeEcNAiAMKAIcQYCAgIB4Rw0CIAwoAjhBgICAgHhHDQIgDCgCVEGAgICAeEcNAiAMLwEEIgNBgAJPDQIgDC0AWCEEIAwtADwhCCAMLQAgIQsCQCAQIA1rIBUgHRsiGwRAQQAhCkEBIQ4CQCA3IA1BAnQiCa19IjZCACA2IDdYG0IDfEICiCI2IAZBACAJIAZrQQNqIhEgEUEDSyIUG2ogCWtBAnatIjggNiA4VBsiOSAbQQFrrSI4IDggOVYbIjlCIFQNACANIDYgBkEAIBEgFBtqIAlrQQJ2rSI6IDYgOlQbIjYgOCA2IDhUG6dqQQJ0IAlJDQAgOaciCkF/cyAKQQFqIgpBD3EiCUEQIAkbIglqITIgCiAJayIKQQFqIQ4gDf0RITv9DAwAAAANAAAADgAAAA8AAAAhPv0MCAAAAAkAAAAKAAAACwAAACE9/QwEAAAABQAAAAYAAAAHAAAAIT/9DAAAAAABAAAAAgAAAAMAAAAhQANAIAUgQCA7/a4BQQL9qwEiPP0bAGoiCSALOgAAIAUgPP0bAWoiESALOgAAIAUgPP0bAmoiFCALOgAAIAUgPP0bA2oiHyALOgAAIAUgPyA7/a4BQQL9qwEiPP0bAGoiIiALOgAAIAUgPP0bAWoiIyALOgAAIAUgPP0bAmoiJCALOgAAIAUgPP0bA2oiJSALOgAAIAUgPSA7/a4BQQL9qwEiPP0bAGoiKCALOgAAIAUgPP0bAWoiKSALOgAAIAUgPP0bAmoiKiALOgAAIAUgPP0bA2oiKyALOgAAIAUgPiA7/a4BQQL9qwEiPP0bAGoiLCALOgAAIAUgPP0bAWoiLSALOgAAIAUgPP0bAmoiLiALOgAAIAUgPP0bA2oiJiALOgAAIAkgAzoAASARIAM6AAEgFCADOgABIB8gAzoAASAiIAM6AAEgIyADOgABICQgAzoAASAlIAM6AAEgKCADOgABICkgAzoAASAqIAM6AAEgKyADOgABICwgAzoAASAtIAM6AAEgLiADOgABICYgAzoAASAJIAg6AAIgESAIOgACIBQgCDoAAiAfIAg6AAIgIiAIOgACICMgCDoAAiAkIAg6AAIgJSAIOgACICggCDoAAiApIAg6AAIgKiAIOgACICsgCDoAAiAsIAg6AAIgLSAIOgACIC4gCDoAAiAmIAg6AAIgCSAEOgADIBEgBDoAAyAUIAQ6AAMgHyAEOgADICIgBDoAAyAjIAQ6AAMgJCAEOgADICUgBDoAAyAoIAQ6AAMgKSAEOgADICogBDoAAyArIAQ6AAMgLCAEOgADIC0gBDoAAyAuIAQ6AAMgJiAEOgADIED9DBAAAAAQAAAAEAAAABAAAAAiPP2uASFAID8gPP2uASE/ID0gPP2uASE9ID4gPP2uASE+IDJBEGoiMg0ACwsgG0EBaiEJA0AgBiAKIA1qQQJ0IgpJDQIgBiAKayIRQQNNBEBBAEEEIBFB1P7GABDqBwALIAUgCmoiCiAEOgADIAogCDoAAiAKIAM6AAEgCiALOgAAIAkgDiIKQQFqIg5HDQALCyAeQYCAgIB4RwRAIANBCHRBgP4DcSALQRB0ciAEQRh0ciAIckG9z9bxAWwgGHYiCiAhTw0DICcgCkECdGoiCiAEOgADIAogCDoAAiAKIAM6AAEgCiALOgAACyANIBtqIg0gFUkNAQwFCwsgCiAGIAZB5P7GABDqBwALIAogIUGY+sYAEIwHAAsCQCAVAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDCgCAEGAgICAeEcEQCAMKAIUIgQgDykDACI2pyILIAwvARhxIgNNDSQCQCAMKAIQIANBAnRqKAIAIghBgIAETwRAIAEtAGAiBCAIQRB2IgNB/wFxSQRAQQ8hBCAHLwG2AiEIDAILIAEgBCADazoAYCABIDYgA62INwNADAMLIAdBtAJqIAwoAgQgDCgCCCALQYD4A3FBCnYgCEEBayAPEJwGIAcvAbYCIQggBy0AtAIiBEEdRg0CCyAAIAcpArgCNwIEIABBDGogB0HAAmooAgA2AgAgBy0AtQIhASAAIAg7AQIgACABOgABIAAgBDoAAAwaCyAMLwEEIQgLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhB//8DcSIDQYACTwRAIANBmAJJDQEgB0EPOgC0AiAeQYCAgIB4Rw0CIABBADYCBCAAQQ86AAAMJgsgDCgCHEGAgICAeEYNCiAMKAIwIgQgDykDACI2pyIKIAwvATRxIgNNDS4gDCgCLCADQQJ0aigCACILQYCABEkNCCABLQBgIgQgC0EQdiIDQf8BcUkEQEEPIQQgBy8BtgIhCwwKCyABIAQgA2s6AGAgASA2IAOtiDcDQAwLCyAIQfwDcUGAAkYEfyAIQf8Ba0H//wNxBSABLQBgIgQgCEH+AWpB/v8DcUEBdiIDQf8BcSILSQ0CIAEgBCADazoAYCABIAEpA0AiNiADrUL/AYMiOIg3A0AgNkJ/IDiGQn+Fg6cgCEEBcUECciALdGpBAWoLIRcgDCgCcEGAgICAeEYNBSAMKAKEASIEIA8pAwAiNqciCyAMLwGIAXEiA00NLSAMKAKAASADQQJ0aigCACIIQYCABEkNAyABLQBgIgQgCEEQdiIDQf8BcU8NAkEPIQQgBy8BtgIhCAwECyAHQbQCahCrBCAhIAhBmAJrQf//A3EiBE0NCiAGIA1BAnQiA0kNCyAGIANrIghBA00NDCADIAVqICcgBEECdGooAAA2AAAgECANQQFqIgNNBEAgAwwZCyAPKQMAITYgDCgCAEGAgICAeEYNDQJAIAwoAhQiCCAMLwEYIDancSIESwRAIAwoAhAgBEECdGooAgAiBEGAgARPDQEgAwwaCyAEIAhByPnGABCMBwALIARBEHYhCwwXCyAAIBc2AgQgAEEPOgAADCELIAEgBCADazoAYCABIDYgA62INwNADAMLIAdBtAJqIAwoAnQgDCgCeCALQYD4A3FBCnYgCEEBayAPEJwGIAcvAbYCIQggBy0AtAIiBEEdRg0CCyAAIAcpArgCNwIEIABBDGogB0HAAmooAgA2AgAgBy0AtQIhASAAIAg7AQIgACABOgABIAAgBDoAAAweCyAMLwF0IQgLIAhB//8DcUEESQ0IIAhBAmsiA0H//wNxQf8DSw0JIAEtAGAiBCADQQF2IgNB/wFxSQRAIAAgMzYCBCAAQQ86AAAMHQsgASAEIANB//8BcSIDazoAYCABIAEpA0AiNiADrSI4iDcDQCA2Qn8gOIZCf4WDpyAIQQFxQQJyIAN0akEBaiIzQfgATQ0PIDNB+ABrIQsMEAsgB0G0AmogDCgCICAMKAIkIApBgPgDcUEKdiALQQFrIA8QnAYgBy8BtgIhCyAHLQC0AiIEQR1GDQILIAAgBykCuAI3AgQgAEEMaiAHQcACaigCADYCACAHLQC1AiEBIAAgCzsBAiAAIAE6AAEgACAEOgAADBoLIAwtACAhCwsCQAJ/IAwoAjhBgICAgHhHBEAgDCgCTCIEIA8pAwAiNqciCiAMLwFQcSIDTQ0lAkAgDCgCSCADQQJ0aigCACIJQYCABE8EQCABLQBgIgQgCUEQdiIDQf8BcUkEQEEPIQQgBy8BtgIhCQwCCyABIAQgA2siBDoAYCABIDYgA62INwNADAQLIAdBtAJqIAwoAjwgDCgCQCAKQYD4A3FBCnYgCUEBayAPEJwGIAcvAbYCIgkgBy0AtAIiBEEdRg0CGgsgACAHKQK4AjcCBCAAQQxqIAdBwAJqKAIANgIAIActALUCIQEgACAJOwECIAAgAToAASAAIAQ6AAAMGwsgDC0APAshCSABLQBgIQQLAkAgBEH/AXFBDksNACAHQbQCaiAPEI4CIActALQCIgNBHUYNACAAIAcpALUCNwABIABBCGogB0G8AmopAAA3AAAgACADOgAADBkLAkAgDCgCVEGAgICAeEcEQCAMKAJoIgQgDykDACI2pyIOIAwvAWxxIgNNDSQCQCAMKAJkIANBAnRqKAIAIgpBgIAETwRAIAEtAGAiBCAKQRB2IgNB/wFxSQRAQQ8hBCAHLwG2AiEKDAILIAEgBCADazoAYCABIDYgA62INwNADAMLIAdBtAJqIAwoAlggDCgCXCAOQYD4A3FBCnYgCkEBayAPEJwGIAcvAbYCIQogBy0AtAIiBEEdRg0CCyAAIAcpArgCNwIEIABBDGogB0HAAmooAgA2AgAgBy0AtQIhASAAIAo7AQIgACABOgABIAAgBDoAAAwaCyAMLQBYIQoLIA1BAnQiAyAGTw0GIAMgBWogCzoAACADQQFyIgQgBk8NByAEIAVqIAg6AAAgA0ECciIEIAZPDQggBCAFaiAJOgAAIANBA3IiAyAGTw0JIAMgBWogCjoAACAeQYCAgIB4RwRAIAlB/wFxIAhBCHRBgP4DcSALQRB0ckGA/v8HcSAKQRh0cnJBvc/W8QFsIBh2IgMgIU8NCyAnIANBAnRqIgMgCjoAAyADIAk6AAIgAyAIOgABIAMgCzoAAAsgDUEBagwOCyAEICFB+PvGABCMBwALIAMgBiAGQbj8xgAQ6gcAC0EAQQQgCEGI/MYAEOoHAAsgDC8BBCEEQQAhCwwJCyAIQQFqQf//A3EhMwwGC0HY5sgAQSsgB0G0AmpBmPvGAEH0/sYAEOAGAAsgAyAGQZT+xgAQjAcACyAEIAZBpP7GABCMBwALIAQgBkG0/sYAEIwHAAsgAyAGQcT+xgAQjAcACyADICFBmPrGABCMBwALIDNBAWsiA0H4AEkEQEEBIANBAXQiAywAi4BHIBZsIAMsAIqAR2oiAyADQQFMGyELDAELQX9B+ABB/IHHABCMBwALAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgFSANayAXSSALIA1LckUEQCALQQFGBEAgBiANQQJ0IgNBBGsiBEkNAiAGIARrIghBA00NAyAEIAVqKAAAIQtBACEEAkAgF0EBa60iNiA3IAOtfSI4QgAgNyA4WhtCA3xCAogiOCAGIANrQQJ2Ig6tIjkgOCA5VBsiOCA2IDhUGyI2QhRUBEBBASEIDAELQQEhCCANIDanIgpqQQJ0IANJDQAgCkEBaiIEQQNxIghBBCAIGyIIIApBf3NqIQogAyAFaiEJIAQgCGsiBEEBaiEIIAv9ESE7A0AgCSA7/QsAACAJQRBqIQkgCkEEaiIKDQALCyAOQQFqIQogF0EBaiEJA0AgBiAEIA1qQQJ0IgNJDQUgCCAKRg0GIAMgBWogCzYAACAJIAgiBEEBaiIIRw0ACwwRCyANIBdqQQNqIBVLDQsgDSALa0ECdCIEQRBqIgMgBksNBSAEQW9LDQYgDUECdCIIIBNLDQcgBSAIaiAEIAVq/QAAAP0LAAAgF0EETSALQQRPcQ0MIAtBAnQiCkUNCCAXQQJ0IgMgA0H8/wNxQRAgCiAKQRBPGyIDQf//A3FuIgsgA2xrQf//A3FBAEcgC2oiC0ECSQ0MIAMgBGoiCUEQaiIOIAZLDQkgCUFvSw0KIBMgAyAIak8EQCALQQJrIQsgA0EBdCAKayEOIAMgBWohCSAFIAMgCmtqIQogAyEEA0AgCCAJaiAIIApq/QAAAP0LAAAgC0UNDgJAIAYgCCAOaiIbQRBqTwRAIBtBb00NASANQQJ0IA5qIglBEGohDgwOCyANQQJ0IA5qQRBqIQ4MDAsgC0EBayELIAMgDmohDiADIAlqIQkgAyAKaiEKIAggAyAEaiIEaiATTQ0ACwsgB0EANgLEAiAHQQE2ArgCIAdB1JzIADYCtAIgB0IENwK8AiAHQbQCakGE/sYAEI0IAAsgAEEPOgAADBsLIAQgBiAGQfj8xgAQ6gcAC0EAQQQgCEHI/MYAEOoHAAsgAyAGIAZB6PzGABDqBwALQQBBBCAGIANrQdj8xgAQ6gcAC0EAIAMgBkGo/cYAEOoHAAsgBCADIAZBqP3GABDqBwALIAdBADYCxAIgB0EBNgK4AiAHQdScyAA2ArQCIAdCBDcCvAIgB0G0AmpBqP3GABCNCAALQbj9xgBBG0HU/cYAEOsHAAtBACAOIAZBhP7GABDqBwALIAkgDiAGQYT+xgAQ6gcAC0EAIQQCQCAXQQJ0IhFBAWsiCCAGIA1BAnQiAyALQQJ0IgprIgsgBiALSxsgCmogA2siCyAGIANrIglBACAGIAlPGyIJIAkgC0sbIgsgCCALSRsiC0EBaiIbQRFJBEBBASEIDAELQQEhCCAKQQ9NDQAgG0EPcSIEQRAgBBsiBCALQX9zaiEOIAMgBWohC0EAIAprIRQgGyAEayIEQQFqIQgDQCALIAsgFGr9AAAA/QsAACALQRBqIQsgDkEQaiIODQALCyAJQQFqIQkgEUEBaiEOA0AgAyAEaiIEIAprIgsgBk8NAiAIIAlGDQMgBCAFaiAFIAtqLQAAOgAAIA4gCCIEQQFqIghHDQALCyAeQYCAgIB4Rw0CDAMLIAsgBkGI/cYAEIwHAAsgBCAGQZj9xgAQjAcACwJAAkAgDUECdCIDIAZNBEAgF0ECdCIEIAYgA2siCEsNASAERQ0DIAMgBWohC0EAIARrIQkDQCALKAAAIgNBgP6DeHEgA0EQdEGAgPwHcXIgA0EQdiIIQf8BcXJBvc/W8QFsIBh2IgQgIU8NAyAnIARBAnRqIgQgA0EYdjoAAyAEIAg6AAIgBCADQQh2OgABIAQgAzoAACALQQRqIQsgCUEEaiIJDQALDAMLIAMgBiAGQfT9xgAQ6gcAC0EAIAQgCEHk/cYAEOoHAAsgBCAhQZj6xgAQjAcACyANIBdqDAELIAMgBEH//wNxQZgCSQ0AGiABLQBgIgggC0H/AXFJDQQgASAIIAtrOgBgIAEgNiALrYg3A0AgBiADQQJ0IgNJDQUgBiADayIIQQNNDQYgISAEQZgCa0H//wNxIgRNDQEgAyAFaiAnIARBAnRqKAAANgAAIA1BAmoLIg1LDQEMAgsLIAQgIUH4+8YAEIwHAAsgAEEdOgAADAYLIABBDzoAAAwFCyADIAYgBkGo/MYAEOoHAAtBAEEEIAhBmPzGABDqBwALQQBBAEHI8sQAEIwHAAsACyAAIAcpALUCNwABIABBCGogB0G8AmopAAA3AAAgACAIOgAACyAeQYCAgIB4ckGAgICAeEYNACAnIB5BAnRBARCiBwsgIARAIBogIEEBdEECEKIHCyASIQEDQCABEI0CIAFBjAFqIQEgNEEBayI0DQALIDBFDQUgEiAwQYwBbEEEEKIHDAULIAggHEHI+8YAEIwHAAsCQCAeQYCAgIB4ckGAgICAeEcEQCAnQQRrKAIAIgFBeHEiAiAeQQJ0IgNBBEEIIAFBA3EiARtqSQ0GIAFBACACIANBJ2pLGw0BICcQogILIAAgNzcCCCAAIAo2AgQgACAOOwECIAAgCToAASAAIAg6AAAMBAsMBQsgByAHKQC3AjcDACAHIAdBvAJqKQAANwAFIActALYCIQEgBy0AtQIhHwwBC0EPIQgLIAAgAToAAiAAIB86AAEgACAIOgAAIAAgBykDADcAAyAAQQhqIAcpAAU3AAALIAdB0AJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAyAEQdj5xgAQjAcAC4xaBC5/B30BewF+IwBBkARrIgYkAEEAELYJIQdBABC2CSEJIAZBwANqQQA6AAAgBkIANwO4AyACELgKIQwgAxC4CiEWIAdBhAhPBEAgBxCbBwsgCUGECE8EQCAJEJsHCyACrSADrUIghoQhPAJAIARBAXFFDQAgBUH458AAQQMQ7AgiAhDiCCEHQbS7yQAtAAAhA0G0u8kAQQA6AABBuLvJACgCAEG4u8kAQQA2AgAgByADGyEIAkACQCADRQRAIAgQuQpFBEBBASEQDAMLIAhBgwhLDQEMAgsgCEGECEkNAQsgCBCbBwsgAkGECE8EQCACEJsHCyAFQfvnwABBAxDsCCICEOIIIQdBtLvJAC0AACEDQbS7yQBBADoAAEG4u8kAKAIAQbi7yQBBADYCACAHIAMbIQkCfwJAAkAgA0UEQCAJELkKRQRAQQEhDkECDAQLIAlBgwhLDQEMAgsgECAJQYQISQ0CGgsgCRCbBwsgEAshHyACQYQITwRAIAIQmwcLIAVB/ufAAEEEEOwIIgMQ4gghAkG0u8kALQAAIQdBtLvJAEEAOgAAQbi7yQAoAgBBuLvJAEEANgIAIAIgBxshAgJAAkAgB0UEQCACELkKRQRAQQMhH0EBIQsMAwsgAkGDCEsNAQwCCyACQYQISQ0BCyACEJsHCyADQYQITwRAIAMQmwcLIAVBgujAAEEEEOwIIgcQ4gghA0G0u8kALQAAIQ9BtLvJAEEAOgAAQbi7yQAoAgBBuLvJAEEANgIAIAMgDxshAwJAAkAgD0UEQCADELkKRQRAQQMhH0EBISAMAwsgA0GDCEsNAQwCCyADQYQISQ0BCyADEJsHCyAHQYQITwRAIAcQmwcLIAVBhujAAEEHEOwIIg8Q4gghB0G0u8kALQAAIQ1BtLvJAEEAOgAAQbi7yQAoAgBBuLvJAEEANgIAIAcgDRshBwJAAkAgDUUEQCAHELkKRQRAQQEhLAwDCyAHQYMISw0BDAILIAdBhAhJDQELIAcQmwcLIA9BhAhJDQAgDxCbBwsgBkHMAWogBkHAA2otAAA6AAAgBiAGKQO4AzcCxAEgBiA8NwK8ASAGIB82ArgBIAYgATYCtAEgBkGAgICAeDYCpAEgBkGAgICAeDYCmAEgBkIENwKQASAGQgA3AogBIAZCgICAgMAANwKAASAGQgQ3AnggBkIANwJwIAZCgICAgMAANwJoIAZCBDcCYCAGQgA3AlggBkKAgICAwAA3AlAgBiAHNgJMIAYgLDYCSCAGQQA2AjwgBkEANgI0IAZBADYCLCAGIAM2AiggBiAgNgIkIAYgAjYCICAGIAs2AhwgBiAJNgIYIAYgDjYCFCAGIAg2AhAgBiAQNgIMIAYgFiAMIAwgFksbQQJ2NgKwASAGQoCAgIAgNwKwAiAGQgI3AqgCIAZCADcCoAIgBkKAgICAIDcCmAIgBkIENwKQAiAGQgA3AogCIAZCgICAgMAANwKAAiAGQgA3ArgCIAYgLDoAwAMgBiAfNgK8AyAGIAE2ArgDIAZBgAJqIAZBuANqEIQCIAZBADYCyAIgBkKAgICAwAA3AsACIAZBADYC1AIgBkKAgICAwAA3AswCIAZBADYC4AIgBkKAgICAwAA3AtgCIAZBADYC7AIgBkKAgICAwAA3AuQCIAZBADYC+AIgBkKAgICAwAA3AvACIAZBADYChAMgBkKAgICAwAA3AvwCIAZBADYCkAMgBkKAgICAwAA3AogDIAZBADYCnAMgBkKAgICAwAA3ApQDIAZBADYCqAMgBkKAgICAIDcCoAMgBkEANgK0AyAGQoCAgIDAADcCrAMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABRQRAQQQhFkEEISBBBCEOQQQhKEEEISkMAQsgBkHEAWohISAGQYABaiEtQQQhFgNAIBdBgIAEIAEgFWsiAiACQYCABE8bIgxBA2wiEkkEQCASIBdrIgIgBigCwAIgF2tLBEAgBkHAAmogFyACQQRBBBCkBSAGKALIAiEXIAYoAsQCIRYLIBYgF0ECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAIgF2oiAkEBayEXIBYgAkECdGpBBGsFIAMLQQA2AgAgBiAXQQFqIhc2AsgCIAYoAtQCIRgLIAwgGEsEQCAMIBhrIgIgBigCzAIgGGtLBEAgBkHMAmogGCACQQRBBBCkBSAGKALUAiEYCyAGKALQAiIHIBhBAnRqIQMgAkECTwR/IAJBAnRBBGsiCQRAIANBACAJ/AsACyACIBhqIgJBAWshGCAHIAJBAnRqQQRrBSADC0EANgIAIAYgGEEBaiIYNgLUAgsgBigC4AIiDiASSQRAIBIgDmsiAiAGKALYAiAOa0sEQCAGQdgCaiAOIAJBBEEEEKQFIAYoAuACIQ4LIAYoAtwCIgcgDkECdGohAyACQQJPBH8gAkECdEEEayIJBEAgA0EAIAn8CwALIAIgDmoiAkEBayEOIAcgAkECdGpBBGsFIAMLQQA2AgAgBiAOQQFqIg42AuACCyAGKALsAiIRIBJJBEAgEiARayICIAYoAuQCIBFrSwRAIAZB5AJqIBEgAkEEQQQQpAUgBigC7AIhEQsgBigC6AIiByARQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgkEQCADQQAgCfwLAAsgAiARaiICQQFrIREgByACQQJ0akEEawUgAwtBADYCACAGIBFBAWoiETYC7AILIAxBAnQiCSAGKAL4AiITSwRAIAkgE2siAiAGKALwAiATa0sEQCAGQfACaiATIAJBBEEEEKQFIAYoAvgCIRMLIAYoAvQCIgcgE0ECdGohAyACQQJPBH8gAkECdEEEayIIBEAgA0EAIAj8CwALIAIgE2oiAkEBayETIAcgAkECdGpBBGsFIAMLQQA2AgAgBiATQQFqIhM2AvgCCwJAAkAgEiAXTQRAIAYoAsQCIRYgBkEMaiAVIAwQ6QQgDEEEdCEiQQIgEiASQQJNG0EDbkEEdCEPQQAhCCAGKAKEASENIAYoAogBIRAgFiECQQAhB0EAIQMCQAJAAkADQCAHQQRqIgsgEEsNAyADICJGDQIgAyANaiIHQQhqKgIAITQgByoCACE1IAJBBGogB0EEaioCADgCACACIDU4AgAgAyAPRg0BIAJBCGogNDgCACACQQxqIQIgCEEDaiEIIAshByAiIANBEGoiA0cNAAsgDCAYTQRAIAYoAtACISkgBkEMaiAVIAwQ6QQgDEECdCEmIAYoAoQBQQxqIQdBACEDIAYoAogBIRACQANAAn8CQCAQIANBBGoiAk8EQCAHKAIAIgtB//8BcUUEQCALQRB0DAMLIAtB/wdxIQggC0GAgAJxIQ8gC0GA+AFxIgtBgPgBRgRAIA9BEHQiC0GAgID8B3IgCEUNAxogCyAIQQ10ckGAgID+B3IMAwsgD0EQdCEPIAtFDQEgC0ENdEGAgID8AHEgCEENdHJBgICAwANqIA9yDAILIAMgAiAQQfClwQAQ6gcACyAPQYCAgNgDciAIZ0EQayILQRd0ayAIIAtB//8DcUEIanRB////A3FyCyEIIAMgJkYNASADIClqIAg2AgAgB0EQaiEHIAIiAyAmRw0ACyAOIBJPBEAgBigC3AIhKCAGQQxqIBUgDBDpBCAMQQxsIQ9BACELIAYoApABIQggBigClAEhDUEAIQNBACEQAkACQAJAAkACQAJAAkACQAJAAkADQAJ/AkAgDSADQQRqIgJPBEAgCCgCACIDQRB2IQcgA0EQdCADQf//AXFFDQIaIANB/wdxIQ4gA0GAgAJxIQogA0GA+AFxIhRBgPgBRgRAIApBEHQiCkGAgID8B3IgDkUNAxogCiAOQQ10ckGAgID+B3IMAwsgCkEQdCEKIBRFDQEgFEENdEGAgID8AHEgDkENdHJBgICAwANqIApyDAILIAMgAiANQfCmwQAQ6gcACyAOIA5nQRBrIg5B//8DcUEIanRB////A3EgCkGAgIDYA3IgDkEXdGtyCyEZIAhBBGooAgAhDgJ/IAdB//8BcQRAIAdB/wdxIQMgB0GAgAJxIQogB0GA+AFxIhRBgPgBRwRAIApBEHQiByAUQQ10QYCAgPwAcSADQQ10ckGAgIDAA2pyIBQNAhogAyADZ0EQayIDQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIANBF3RrcgwCCyAHQQ10IApBEHQiB3JBgICA/gdyIAMNARogB0GAgID8B3IMAQsgA0GAgHxxCyEKAn8gDkH//wFxBEAgDkH/B3EhAyAOQYCAAnEhByAOQYD4AXEiDkGA+AFHBEAgB0EQdCIHIA5BDXRBgICA/ABxIANBDXRyQYCAgMADanIgDg0CGiADIANnQRBrIgNB//8DcUEIanRB////A3EgB0GAgIDYA3IgA0EXdGtyDAILIAdBEHQiByADQQ10ckGAgID+B3IgAw0BGiAHQYCAgPwHcgwBCyAOQRB0CyEHIA8gEEYNASAQIChqIgMgGTYCACADQQhqIAc2AgAgA0EEaiAKNgIAIAtBA2ohCyAIQRBqIQggAiEDIA8gEEEMaiIQRw0ACyARIBJJDQEgBigC6AIhDiAGQQxqIBUgDBDpBEEAIQggBigCkAEhByAGKAKUASEQIA4hA0EAIQIDQCAIQQRqIgsgEEsNAyAGQbgDaiAHEJYDIAIgEkYNBCADIAYqArgDOAIAIANBBGogBikCvAM3AgAgA0EMaiEDIAdBEGohByALIQggEiACQQNqIgJHDQALIAkgE0sNBCAGKAL0AiEgIAZBDGogFSAMEOkEIAYoApABQQxqIQtBACECIAYoApQBIQhBACEDA0AgAkEEaiIHIAhLDQYgAyAiRg0HQwAAgD8gAyALaigCACICQQp2/REgAv0cAf0M/wMAAP8DAAD/AwAA/wMAAP1O/fsB/QwAwH9EAMB/RADAf0QAwH9E/ecBIjsgO/3kAf0MAACAvwAAgL8AAIC/AACAv/3kASI7/R8BIjaLkyA7/R8AIjiLkyI0jEMAAAAAEOAIITUgAyAgaiACQRR2s0MA8H9FlUMAAAA/lEPbD0lAlCI5EJkCIjcgNiA1IDWMIjogO/0MAAAAAAAAAAAAAAAAAAAAAP1G/U0iO/3HAf0bAkEBcRuSIjYgNCA0lCA2IDaUIDggNSA6IDv9GwBBAXEbkiI1IDWUkpKRIjaVlP0TIDcgNSA2lZT9IAEgNyA0IDaVlP0gAiA5EJsC/SAD/QsCACAHIQIgIiADQRBqIgNHDQALQQQhLkEAIQ9BACENQQQhFEEAIRlBBCEQQQAhJ0EEIS8gH0UNEiAMQQlsIicgBigChAMiA0sEQCAnIANrIgIgBigC/AIgA2tLBEAgBkH8AmogAyACQQRBBBCkBSAGKAKEAyEDCyAGKAKAAyIIIANBAnRqIQcgAkECTwR/IAJBAnRBBGsiCwRAIAdBACAL/AsACyACIANqIgJBAWshAyAIIAJBAnRqQQRrBSAHC0EANgIAIAYgA0EBaiIDNgKEAwsgAyAnSQ0HIAYoAoADIS8gBkEMahCjBSAhQQhqIh1BADoAACAhQgA3AgAgBigCDEUNESAGKAIQIBVBAnQgDCAVakECdBDhCCENAkAgBigCiAEiAyAJTwRAIAYgCTYCiAEgCSELDAELIAkgAyICayIIIAYoAoABIANrSwRAIC0gAyAIQQRBBBCkBSAGKAKIASECCyAGKAKEASILIAJBAnQiEGohByAIQQJPBEAgCSADQX9zakECdCIKBEAgB0EAIAr8CwALICIgA0ECdGsgC2ogEGpBBGshByACIAhqQQFrIQILIAdBADYCACAGIAJBAWoiCzYCiAEgCSALSw0JCyAGKAKEASEHIAYgDRC4CiICNgKIBCAGIAk2AowEIAIgCUcNCSAHIAkgDRDhCSAMQSRsIQpBACEUQQEhCEEAIRACQAJAAkACQANAIAhBAWsgC08NASAKIBBGDQQgECAvaiICQQhqQwAAgD8gBygCACIDQRt2QQ9rELAGQwAAf0OVIjQgA0EQdkH/AXGzlCI1jCA1IANBgICAIHEbOAIAIAJBBGogNCADQQh2Qf8BcbOUIjWMIDUgA0GAgIAQcRs4AgAgAiA0IANB/wFxs5QiNIwgNCADQYCAgAhxGzgCACAIIAtPDQMgAkEUakMAAIA/IAdBBGooAgAiA0EbdkEPaxCwBkMAAH9DlSI0IANBEHZB/wFxs5QiNYwgNSADQYCAgCBxGzgCACACQRBqIDQgA0EIdkH/AXGzlCI1jCA1IANBgICAEHEbOAIAIAJBDGogNCADQf8BcbOUIjSMIDQgA0GAgIAIcRs4AgAgCEEBaiALTw0CIAJBIGpDAACAPyAHQQhqKAIAIgNBG3ZBD2sQsAZDAAB/Q5UiNCADQRB2Qf8BcbOUIjWMIDUgA0GAgIAgcRs4AgAgAkEcaiA0IANBCHZB/wFxs5QiNYwgNSADQYCAgBBxGzgCACACQRhqIDQgA0H/AXGzlCI0jCA0IANBgICACHEbOAIAIAhBBGohCCAHQRBqIQcgFEEJaiEUIAogEEEkaiIQRw0ACyANQYQISQ0VIA0QmwcMFQsgCEEBayEIDAELIAhBAWohCAsgCCALQYCnwQAQjAcACyAUICdBkKfBABCMBwALIAsgEkHgpsEAEIwHAAtBACASIBFB7OHBABDqBwALIAggCyAQQeCpwQAQ6gcACyACIBJB0KnBABCMBwALQQAgCSATQdzhwQAQ6gcACyACIAcgCEHAqcEAEOoHAAsgAiAJQbCpwQAQjAcAC0EAICcgA0HM4cEAEOoHAAtBACAJIAtBoKfBABDqBwALDBQLQQAgEiAOQfzhwQAQ6gcACyAMIAxB4KXBABCMBwALQQAgDCAYQYziwQAQ6gcACyAIQQJqIBJBwKXBABCMBwALIAggEkGwpcEAEIwHAAsgByALIBBB0KXBABDqBwALQQAgEiAXQZziwQAQ6gcACyAfQQFGBEBBACENQQQhFEEEIRAMAQsgDEEPbCIZIAYoApADIgNLBEAgGSADayICIAYoAogDIANrSwRAIAZBiANqIAMgAkEEQQQQpAUgBigCkAMhAwsgBigCjAMiCCADQQJ0aiEHIAJBAk8EfyACQQJ0QQRrIgsEQCAHQQAgC/wLAAsgAiADaiICQQFrIQMgCCACQQJ0akEEawUgBwtBADYCACAGIANBAWoiAzYCkAMLAkACQAJAAkAgAyAZTwRAIAYoAowDIRAgBkEMahCjBSAdQQA6AAAgIUIANwIAIAYoAgxFDQQgBigCECAVQQJ0IgIgDCAVakECdCIDEOEIIREgBigCFEEBRwRAIBFBgwhNDQUMBAsgBigCGCACIAMQ4QghEyAGQQxqIAwQ0AQgCSAGKAKIASIaSw0BIAYoAoQBIQMgBiARELgKIgI2AogEIAYgCTYCjAQgAiAJRw0RIAMgCSAREOEJIAkgBigClAEiAksNAiAGKAKQASEjIAYgExC4CiIHNgKIBCAGIAk2AowEIAcgCUcNESAjIAkgExDhCSADQQxqISogGUEDayEHQQAhC0EBIQggECEDQQAhDUEAIRQCfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkADQCAHQQFqIiRBA24gB0ECaiIeQQNuIAhBAmoiGyAaTw0BIAwgFE0NAiADQQhqQwAAgD8gCyAqaigCACIKQRt2QQ9rELAGQwAAf0OVIjQgCkEQdkH/AXGzlCI1jCA1IApBgICAIHEbOAIAIANBBGogNCAKQQh2Qf8BcbOUIjWMIDUgCkGAgIAQcRs4AgAgAyA0IApB/wFxs5QiNIwgNCAKQYCAgAhxGzgCACAIQQFrIAJPDQRDAACAPyALICNqIhwoAgAiCkEbdkEPaxCwBiE0IB5BA0kNByADQQxqIDRDAAB/Q5UiNCAKQf8BcbOUIjWMIDUgCkGAgIAIcRs4AgAgJEEDSQ0MIANBEGogNCAKQQh2Qf8BcbOUIjWMIDUgCkGAgIAQcRs4AgAgB0EDSQ0RIANBFGogNCAKQRB2Qf8BcbOUIjSMIDQgCkGAgIAgcRs4AgAgAiAITQ0GQwAAgD8gHEEEaigCACIKQRt2QQ9rELAGITRBAmoiJEEDRg0IIANBGGogNEMAAH9DlSI0IApB/wFxs5QiNYwgNSAKQYCAgAhxGzgCAEECaiIlQQNGDQ0gA0EcaiA0IApBCHZB/wFxs5QiNYwgNSAKQYCAgBBxGzgCACAHQQNuQQJqIh5BA0YNEiADQSBqIDQgCkEQdkH/AXGzlCI0jCA0IApBgICAIHEbOAIAIAhBAWogAk8NBUMAAIA/IBxBCGooAgAiCkEbdkEPaxCwBiE0ICRBBEYNCSADQSRqIDRDAAB/Q5UiNCAKQf8BcbOUIjWMIDUgCkGAgIAIcRs4AgAgJUEERg0OIANBKGogNCAKQQh2Qf8BcbOUIjWMIDUgCkGAgIAQcRs4AgAgHkEERg0TIANBLGogNCAKQRB2Qf8BcbOUIjSMIDQgCkGAgIAgcRs4AgAgAiAbTQ0DQwAAgD8gHEEMaigCACIKQRt2QQ9rELAGITQgJEEFRg0KIANBMGogNEMAAH9DlSI0IApB/wFxs5QiNYwgNSAKQYCAgAhxGzgCACAlQQVGDQ8gA0E0aiA0IApBCHZB/wFxs5QiNYwgNSAKQYCAgBBxGzgCACAeQQVGDRQgA0E4aiA0IApBEHZB/wFxs5QiNIwgNCAKQYCAgCBxGzgCACAIQQRqIQggC0EQaiELIANBPGohAyANQQ9qIQ0gB0EPayEHIBRBAWoiFCAMSQ0ACyATQYQITwRAIBMQmwcLIBFBgwhLDRgMGQsgGyAaQcCnwQAQjAcACyANIBlB0KfBABCMBwALIAhBAmohCAwCCyAIQQFrIQgMAQsgCEEBaiEICyAIIAJB4KfBABCMBwALIA1BA2oMAwsgDUEGagwCCyANQQlqDAELIA1BDGoLIBlB8KfBABCMBwALIA1BBGoMAwsgDUEHagwCCyANQQpqDAELIA1BDWoLIBlBgKjBABCMBwALIA1BBWoMAwsgDUEIagwCCyANQQtqDAELIA1BDmoLIBlBkKjBABCMBwALQQAgGSADQbzhwQAQ6gcAC0EAIAkgGkGgqMEAEOoHAAtBACAJIAJBsKfBABDqBwALIBEQmwcLIB9BAk0EQEEAIQ1BBCEUDAELIAxBFWwiDSAGKAKcAyIDSwRAIA0gA2siAiAGKAKUAyADa0sEQCAGQZQDaiADIAJBBEEEEKQFIAYoApwDIQMLIAYoApgDIgggA0ECdGohByACQQJPBH8gAkECdEEEayILBEAgB0EAIAv8CwALIAIgA2oiAkEBayEDIAggAkECdGpBBGsFIAcLQQA2AgAgBiADQQFqIgM2ApwDCwJAAkACQAJAAkACQAJ/AkACQAJ/AkACQCADIA1PBEAgBigCmAMhFCAGQQxqIgIQowUgHUEAOgAAICFCADcCACAGKAIcQQFHDQ0gBigCICAVQQJ0IgMgDCAVakECdCIHEOEIIRwgBigCJEEBRw0LIAYoAiggAyAHEOEIISMgAiAMENAEAkACQCAGKAKIASIaIAlPBEAgBigChAEhJCAGIBwQuAoiAjYCiAQgBiAJNgKMBCACIAlHDQIgJCAJIBwQ4QkgCSAGKAKUASIdSw0BIAYoApABISUgBiAjELgKIgI2AogEIAYgCTYCjAQgAiAJRw0cICUgCSAjEOEJIA1BDGshCEEAIQJBACELQQAhE0EAIQdBACERAn8CQANAIAhBA24gCEEBaiIqQQNuIAhBAmoiMEEDbgJAAkAgAiAaTw0AAkAgDCARSwRAIBMgFGoiCkEIakMAAIA/IAsgJGoiGygCACIDQRt2QQ9rELAGQwAAf0OVIjQgA0EQdkH/AXGzlCI1jCA1IANBgICAIHEbOAIAIApBBGogNCADQQh2Qf8BcbOUIjWMIDUgA0GAgIAQcRs4AgAgCiA0IANB/wFxs5QiNIwgNCADQYCAgAhxGzgCACACQQFqIgMiMiAaSQ0BIAMhAgwCCyAHIA1BkKnBABCMBwALIApBFGpDAACAPyAbQQRqKAIAIgNBG3ZBD2sQsAZDAAB/Q5UiNCADQRB2Qf8BcbOUIjWMIDUgA0GAgIAgcRs4AgAgCkEQaiA0IANBCHZB/wFxs5QiNYwgNSADQYCAgBBxGzgCACAKQQxqIDQgA0H/AXGzlCI0jCA0IANBgICACHEbOAIAAkAgGiACQQJqIjNLBEAgCkEgakMAAIA/IBtBCGooAgAiA0EbdkEPaxCwBkMAAH9DlSI0IANBEHZB/wFxs5QiNYwgNSADQYCAgCBxGzgCACAKQRxqIDQgA0EIdkH/AXGzlCI1jCA1IANBgICAEHEbOAIAIApBGGogNCADQf8BcbOUIjSMIDQgA0GAgIAIcRs4AgAgAkEDaiAaTw0BIApBLGpDAACAPyAbQQxqKAIAIgNBG3ZBD2sQsAZDAAB/Q5UiNCADQRB2Qf8BcbOUIjWMIDUgA0GAgIAgcRs4AgAgCkEoaiA0IANBCHZB/wFxs5QiNYwgNSADQYCAgBBxGzgCACAKQSRqIDQgA0H/AXGzlCI0jCA0IANBgICACHEbOAIAIAIgHUkNAwwTCyACQQJqIQIMAQsgAkEDaiECCyACIBpBgKnBABCMBwALQwAAgD8gCyAlaiIbKAIAIgNBG3ZBD2sQsAYhNAJAAkAgMEEDTwRAIApBMGogNEMAAH9DlSI0IANB/wFxs5QiNYwgNSADQYCAgAhxGzgCACAqQQNJDQEgCkE0aiA0IANBCHZB/wFxs5QiNYwgNSADQYCAgBBxGzgCACAIQQNPDQIgB0EOagwFCyAHQQxqDA4LIAdBDWoMCgsgCkE4aiA0IANBEHZB/wFxs5QiNIwgNCADQYCAgCBxGzgCACAdIDJNDQ1DAACAPyAbQQRqKAIAIgNBG3ZBD2sQsAYhNEEFaiIqQQZGDQsgCkE8aiA0QwAAf0OVIjQgA0H/AXGzlCI1jCA1IANBgICACHEbOAIAQQVqIitBBkYNCCAKQUBrIDQgA0EIdkH/AXGzlCI1jCA1IANBgICAEHEbOAIAQQVqIh5BBkcEQCAKQcQAaiA0IANBEHZB/wFxs5QiNIwgNCADQYCAgCBxGzgCACAdIDNNDQ9DAACAPyAbQQhqKAIAIgNBG3ZBD2sQsAYhNCAqQQdGDQsgCkHIAGogNEMAAH9DlSI0IANB/wFxs5QiNYwgNSADQYCAgAhxGzgCACArQQdGDQggCkHMAGogNCADQQh2Qf8BcbOUIjWMIDUgA0GAgIAQcRs4AgAgHkEHRg0CIApB0ABqIDQgA0EQdkH/AXGzlCI0jCA0IANBgICAIHEbOAIAIAJBBGohAiALQRBqIQsgE0HUAGohEyAHQRVqIQcgCEEVayEIIBFBAWoiESAMTw0RDAELCyAHQRFqDAELIAdBFGoLIA1B8KjBABCMBwALQQAgCSAaQaCpwQAQ6gcAC0EAIAkgHUGwqMEAEOoHAAsMGQtBACANIANBrOHBABDqBwALIAdBE2oMAQsgB0EQagsgDUHgqMEAEIwHAAsgB0ESagwBCyAHQQ9qCyANQdCowQAQjAcACyACQQFqIQIMAQsgAkECaiECCyACIB1BwKjBABCMBwALICNBhAhPBEAgIxCbBwsgHEGDCEsNAQwCCyAcQYMITQ0BCyAcEJsHCwJAICxFBEBBAiELDAELIAYoAqgDIgMgDEkEQCAMIANrIgIgBigCoAMgA2tLBEAgBkGgA2ogAyACQQJBAhCkBSAGKAKoAyEDCyAGKAKkAyIIIANBAXRqIQcgAkECTwR/IAJBAXRBAmsiCwRAIAdBACAL/AsACyACIANqIgJBAWshAyAIIAJBAXRqQQJrBSAHC0EAOwEAIAYgA0EBaiIDNgKoAwsCQAJAAkAgAyAMTwRAIAYoAqQDIQsgBkEMahCjBSAhQQhqIgpBADoAACAhQgA3AgAgBigCSEUNAyAGKAJMIBVBAnQgDCAVakECdBDhCCEPAkAgBigCiAEiAyAJTwRAIAYgCTYCiAEgCSEIDAELIAkgAyICayIIIAYoAoABIANrSwRAIC0gAyAIQQRBBBCkBSAGKAKIASECCyAGKAKEASIRIAJBAnQiE2ohByAIQQJPBEAgCSADQX9zakECdCIaBEAgB0EAIBr8CwALICIgA0ECdGsgEWogE2pBBGshByACIAhqQQFrIQILIAdBADYCACAGIAJBAWoiCDYCiAEgCCAJSQ0CCyAGKAKEASECIAYgDxC4CiIDNgKIBCAGIAk2AowEIAMgCUcNECACIAkgDxDhCSACQQhqIQJBACEDIAshBwJAA0AgA0ECaiIRIAhPDQQgAyAmRg0BIAcgAigCADsBACACQRBqIQIgB0ECaiEHICYgA0EEaiIDRw0ACyAPQYQISQ0EIA8QmwcMBAsgDCAMQZCmwQAQjAcAC0EAIAwgA0Gc4cEAEOoHAAtBACAJIAhBoKbBABDqBwALIBEgCEGApsEAEIwHAAsgBigCtAMiAyAMSQRAIAwgA2siAiAGKAKsAyADa0sEQCAGQawDaiADIAJBBEEEEKQFIAYoArQDIQMLIAYoArADIgggA0ECdGohByACQQJPBH8gAkECdEEEayIPBEAgB0EAIA/8CwALIAIgA2oiAkEBayEDIAggAkECdGpBBGsFIAcLQQA2AgAgBiADQQFqIgM2ArQDCyADIAxJDQggBigCsAMhLiAGQQxqEKMFIApBADoAACAhQgA3AgACQCAGKAJIQQFHDQAgBigCTCAVQQJ0IAwgFWpBAnQQ4QghCAJAIAYoAogBIgMgCU8EQCAGIAk2AogBIAkhBwwBCyAJIAMiAmsiDyAGKAKAASADa0sEQCAtIAMgD0EEQQQQpAUgBigCiAEhAgsgBigChAEiCiACQQJ0IhFqIQcgD0ECTwRAIAkgA0F/c2pBAnQiEwRAIAdBACAT/AsACyAiIANBAnRrIApqIBFqQQRrIQcgAiAPakEBayECCyAHQQA2AgAgBiACQQFqIgc2AogBIAcgCUkNCwsgBigChAEhAiAGIAgQuAoiAzYCiAQgBiAJNgKMBCADIAlHDQ0gAiAJIAgQ4QkgAkEMaiECQQAhAwNAIANBA2oiDyAHTw0MIAMgJkYNBiADIC5qIAIoAgA2AgAgAkEQaiECICYgA0EEaiIDRw0ACyAIQYQISQ0AIAgQmwcLIAwhDwsgEiAXSw0CIAYgDzYChAQgBiAuNgKABCAGIA82AvwDIAYgCzYC+AMgBiANNgL0AyAGIBQ2AvADIAYgGTYC7AMgBiAQNgLoAyAGICc2AuQDIAYgLzYC4AMgBiAJNgLcAyAGICA2AtgDIAYgEjYC1AMgBiAONgLQAyAGIBI2AswDIAYgKDYCyAMgBiAMNgLEAyAGICk2AsADIAYgEjYCvAMgBiAWNgK4AyAGQYACaiAVIAwgBkG4A2oQ4gEgDCAVaiIVIAFJDQALIAYoAqwDIgFFDQAgBigCsAMiAkEEaygCACIDQXhxIgcgAUECdCIBQQRBCCADQQNxIgMbakkNCyADQQAgByABQSdqSxsNDCACEKICCyAGKAKgAyIBBEAgBigCpAMiAkEEaygCACIDQXhxIgcgAUEBdCIBQQRBCCADQQNxIgMbakkNCyADQQAgByABQSdqSxsNDCACEKICCyAGKAKUAyIBBEAgBigCmAMiAkEEaygCACIDQXhxIgcgAUECdCIBQQRBCCADQQNxIgMbakkNCyADQQAgByABQSdqSxsNDCACEKICCyAGKAKIAyIBBEAgBigCjAMiAkEEaygCACIDQXhxIgcgAUECdCIBQQRBCCADQQNxIgMbakkNCyADQQAgByABQSdqSxsNDCACEKICCyAGKAL8AiIBBEAgBigCgAMiAkEEaygCACIDQXhxIgcgAUECdCIBQQRBCCADQQNxIgMbakkNCyADQQAgByABQSdqSxsNDCACEKICCyAGKALwAiIBBEAgIEEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNCyACQQAgAyABQSdqSxsNDCAgEKICCyAGKALkAiIBBEAgDkEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNCyACQQAgAyABQSdqSxsNDCAOEKICCyAGKALYAiIBBEAgKEEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNCyACQQAgAyABQSdqSxsNDCAoEKICCyAGKALMAiIBBEAgKUEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNCyACQQAgAyABQSdqSxsNDCApEKICCyAGKALAAiIBBEAgFkEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNCyACQQAgAyABQSdqSxsNDCAWEKICCyAGQeABaiIHIAZBjAJqIgFBEGr9AAIA/QsDACAGQfABaiIJIAFBIGr9AAIA/QsDACAGIAH9AAIA/QsD0AEgBigChAIhASAGKAKAAiIIQYCAgIB4Rw0CIAZBADYCiAIgBkKAgICAEDcCgAIgBkGck8EANgK8AyAGQqCAgIAONwLAAyAGIAZBgAJqNgK4AyABIAZBuANqEK8EDQggBigCgAIhAiAGKAKEAiIDIAYoAogCEOwIIQcgAgRAIANBBGsoAgAiCUF4cSIIQQRBCCAJQQNxIgkbIAJqSQ0LIAlBACAIIAJBJ2pLGw0MIAMQogILIABBgICAgHg2AgAgACAHNgIEIAEgASgCACgCABEDACAGQQxqEIoCIARFDQQgBUGDCEsNAwwEC0EAIBIgF0H84MEAEOoHAAsgDCAMQcCmwQAQjAcACyAGKAKIAiECIAYoArwCIQMgACAG/QAD0AH9CwIMIABBLGogCf0AAwD9CwIAIABBHGogB/0AAwD9CwIAIAAgAzYCRCAAIAI2AkAgACADNgI8IAAgAjYCCCAAIAE2AgQgACAINgIAIAZBDGoQigIgBEUgBUGECElyDQELIAUQmwcLIAZBkARqJAAPC0EAIAwgA0GM4cEAEOoHAAtBACAJIAdB0KbBABDqBwALIA8gB0GwpsEAEIwHAAtBoJ7GAEE3IAZBrANqQbSTwQBB2J7GABDgBgALIAZBADYCuANBACAGQYgEaiAGQYwEaiAGQbgDakHg+cQAEPUHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALt10DMH8EfgZ7IwBB0AJrIgckACABQUBrIRACQAJAAkACQAJAAkACQAJAIAEtAEwiCA0AIAdBtAJqIBAQjwIgBy0AtAIiCEEdRgRAIAEtAEwiCA0BDAMLDAELIAEgCEEBayIKOgBMIAEgASkDQCI3QgGIIjg3A0ACQAJAAkACQAJAAkACQAJAAkAgN0IBg1AEQEGAgICAeCEdDAELIAhBBE0EQCAHQbQCaiAQEI8CIActALQCIghBHUcNCiABLQBMIgpBBEkNCyAQKQMAITgLIAEgCkEEazoATCABIDhCBIg3A0AgOKdBD3EiHkEBa0ELTwRAQQ0hCAwMC0EEIB50IgsQcSIIRQ0DIAhBBGstAABBA3FFIAtFckUEQCAIQQAgC/wLAAsgCK1BASAedCIdrUIghoQhNwsgN6chJkEBIRtBAiEZQQEhMSAERQ0BAkACQAJAIAEtAEwiCEUEQCAHQbQCaiAQEI8CIActALQCIghBHUcNASABLQBMIghFDQQLIAEgCEEBayIEOgBMIAEgASkDQCI4QgGIIjk3A0AgOEIBg1ANBCAIQQNNBEAgB0G0AmogEBCPAiAHLQC0AiIIQR1HDQEgAS0ATCIEQQNJDQQgECkDACE5CyABIARBA2s6AEwgASA5QgOINwNAQX8gOadBB3FBAmoiHHRBf3MiBCACQf//A3FqIBx2IjEgBCADQf//A3FqIBx2IgRsIh9BAnQhEyAfBEAgExBxIgtFDQYgC0EEay0AAEEDcUUgE0VyRQRAIAtBACAT/AsACyAHQbQCaiABIDEgBEEAIAsgExA8IActALQCIghBHUYNAyAHKQK8AiE3IAcoArgCIQwgBy8BtgIhDiAHLQC1AiEJIAsgE0EBEKIHDAsLIAdBtAJqIAEgMSAEQQBBASATEDwgBy0AtAIiCEEdRg0BCyAHKQK8AiE3IAcoArgCIQwgBy8BtgIhDiAHLQC1AiEJDAkLQQAhHwwCCyAfQQF0EHEiGUUNAgJ/IBNBBGsiBEEgSQRAIBMhCiALIQhBAQwBCyALIBNqQQJrIBlLBEAgEyEKQQEgCyIIIBkgBEEBdmpBAmpJDQEaCyALIARBAnZBAWoiBCAEQQNxIgRBBCAEG2siGEECdGohCCAfIBhrQQJ0IQogGSEEIBghDCALIQn9DAEAAAABAAAAAQAAAAEAAAAiPiE7A0AgBCAJ/QAAACI9IDv9DQAABAAIAAwAAAAAAAAAAABBCP2LASA9IDv9DQEFCQ0AAAAAAAAAAAAAAAD9iQH9UCI9/VsBAAAgOyA9/akBID79rgH9uQEhOyAEQQhqIQQgCUEQaiEJIAxBBGsiDA0ACyA7IDsgO/0NCAkKCwwNDg8AAQIDAAECA/25ASI7IDsgO/0NBAUGBwABAgMAAQIDAAECA/25Af0bAAshGyAZIBhBAXRqIQQDQCAEIAgvAAAiDEEIdCAMQQh2ciIMOwEAIBsgDEH//wNxQQFqIgkgCSAbSRshGyAIQQRqIQggBEECaiEEIBhBAWohGCAKQQRrIgoNAAsgCyATQQEQogcMAQtBDyEIDAYLIDdCIIinISAgB0EANgIYIAdCgICAgMAANwMQQQEgHkEPcXQhMiAHQbgCaiEhIAdBtAJqIgRBAXIhLSAHQbIBaiEiIAdBsQFqIS4gB0G0AWohIyAEQQJyISRBASEIQQQhE0EAIQoDQCAIITRBACELIAdBADsBlAEgB0GAgICAeDYCkAEgB0EAOwF4IAdBgICAgHg2AnQgB0EAOwFcIAdBgICAgHg2AlggB0EAOwFAIAdBgICAgHg2AjwgB0EAOwEkIAdBgICAgHg2AiBBASEIAkACfwJAAkACQANAIAshKiAIIQsgKkEBdC8BgIBHAkAgAS0ATCIIDQAgB0G0AmogEBCPAgJAIActALQCIghBHUYEQCABLQBMIggNAkEPIQgMAQsgByAkKQEANwPIASAHICRBBmopAQA3Ac4BIActALUCIQELICIgBykDyAE3AQAgIkEGaiAHKQHOATcBACAHIAE6ALEBIAcgCDoAsAEMBAtBACAyQQAgHUGAgICAeEcbICobaiEVIAEgCEEBayIIOgBMIAEgASkDQCI4QgGIIjc3A0ACQAJAAn8CQAJAAkACQAJAAkACQAJAIDhCAYNQRQRAIAhB/wFxDQQgB0G0AmogEBCPAiAHLQC0AiIIQR1HDQEgAS0ATCIIDQNBDyEIDAILQSYQcSIMRQ0SIAxBBGsiDi0AAEEDcQRAIAz9DAAAAAAAAAAAAAAAAAAAAAAiO/0LAAAgDEEeakIANwAAIAxBEGogO/0LAAALIAEtAEwiCEEDSw0GIAdBtAJqIBAQjwIgBy0AtAIiCEEdRw0EIAEtAEwiCEEETw0GQQ8hCAwFCyAHICQpAQA3A9gBIAcgJEEGaikBADcB3gEgBy0AtQIhAQsgIiAHKQPYATcBACAiQQZqIAcpAd4BNwEAIAcgAToAsQEgByAIOgCwASAHQYGAgIB4NgKsAQwMCyAQKQMAITcLIAEgCEEBayIIOgBMIAEgN0IBiCI4NwNAIAhB/wFxRQRAIAdBtAJqIBAQjwICQAJAIActALQCIghBHUYEQCABLQBMIggNAkEPIQgMAQsgByAkKQEANwPoASAHICRBBmopAQA3Ae4BIActALUCIQELICIgBykD6AE3AQAgIkEGaiAHKQHuATcBACAHIAE6ALEBIAcgCDoAsAEgB0GBgICAeDYCrAEMDAsgECkDACE4CyABIAhBAWsiCDoATCABIDhCAYg3A0ACQAJAQQhBASA4p0EBcRsiBCAIQf8BcUsEQCAHQbQCaiAQEI8CIActALQCIghBHUcEQCAHQYACaiAhQQhqKAIANgIAIAcgISkCADcD+AEgBy8BtgIhASAHLQC1AiEEDAILIAEtAEwhCAsgCEH/AXEgBE8NAUEPIQgLICMgBykD+AE3AgAgI0EIaiAHQYACaigCADYCACAHIAE7AbIBIAcgBDoAsQEgByAIOgCwASAHQYGAgIB4NgKsAQwLCyABIAggBGsiCToATCABIAEpA0AiOSAErSI6iCI4NwNAIBVB//8DcSIMIDlCfyA6hkJ/hYOnIghNBEAMCgsgN0IBg1ANAyAJQf8BcUEHTQRAIAdBtAJqIBAQjwICQAJ/IActALQCIgRBHUYEQCABLQBMIglBCE8NAkEPDAELIAdBoAJqICFBCGooAgA2AgAgByAhKQIANwOYAiAHLwG2AiEnIActALUCIQEgBAshCCAjIAcpA5gCNwIAICNBCGogB0GgAmooAgA2AgAgByAnOwGyASAHIAE6ALEBIAcgCDoAsAEgB0GBgICAeDYCrAEMDAsgECkDACE4CyABIAlBCGs6AEwgASA4QgiINwNAIAwgOKdB/wFxIidLBEBBGBBxIgRFDQ8gBEECOwEQIAQgJzsBCiAEQQE7AQggBCAIOwECIARBATsBAEEIEHEiDEUNDyAMICdBgIAEcjYCBCAMIAhBgIAEcjYCACAHQQE7AcQBIAdBAjYCwAEgByAMNgK8ASAHQoOAgIAgNwK0ASAHIAQ2ArABIAdBAzYCrAEgBCEIQQMMBQsMCQsgB0GGAmogLUECai0AADoAACAHIC0vAAA7AYQCIAcoArgCIQEgBykCvAIhNwsgLiAHLwGEAjsAACAuQQJqIAdBhgJqLQAAOgAAIAcgCDoAsAEgByA3NwK4ASAHIAE2ArQBDAYLIAEgCEEEayIIOgBMIAEgASkDQCI4QgSIIjc3A0AgOKdBD3FBAnQhD0FwIQQDQCAIQf8BcUECTQRAIAdBtAJqIBAQjwICQAJAIActALQCIghBHUYEQCABLQBMIghBA08NAkEPIQgMAQsgB0GQAmogIUEIaigCADYCACAHICEpAgA3A4gCIAcvAbYCIQkgBy0AtQIhAQsgIyAHKQOIAjcCACAjQQhqIAdBkAJqKAIANgIAIAcgCTsBsgEgByABOgCxASAHIAg6ALABDAgLIBApAwAhNwsgASAIQQNrIgg6AEwgASA3QgOIIjg3A0AgBEGU/8YAaigCACIJQRJNBEAgDCAJQQF0aiA3p0EHcSIJOwEAIDghNyAPIARBBGoiBEYNBAwBCwsgCUETQdD/xgAQjAcACyAHIAg7AbABIAdBgICAgHg2AqwBQYCAgIB4CyEPIAcpArgBITcgBygCtAEhDCAHLwGyASEOIActALEBIQkMAQsgB0ETNgKgAiAHIAw2ApwCIAdBEzYCmAIgB0G0AmogB0GYAmoQmAEgBygCxAIhFCAHKALAAiEXIAcoArwCIQ4gBygCuAIhDAJAIAcoArQCIhJBgYCAgHhGBEAgDCEIIBQhDSAXIQQMAQsgBykCyAIhNwJAAkAgCEH/AXFFBEAgB0G0AmogEBCPAgJAIActALQCIghBHUYEQCABLQBMIggNAUEPIQgMBAsMAgsgECkDACE4CyABIAhBAWsiCToATCABIDhCAYgiOTcDQCAVIQ8gOEIBg1BFBEACQAJAIAhB/wFxQQNNBEAgB0G0AmogEBCPAiAHLQC0AiIIQR1HDQRBDyEIIAEtAEwiCUEDSQ0FIBApAwAhOQsgASAJQQNrIgk6AEwgASA5QgOINwNAIDmnQQF0QQ5xQQJqIg8gCUH/AXFNDQEgB0G0AmogEBCPAiAHLQC0AiIIQR1GDQAMAwsgAS0ATCEJC0EPIQggCUH/AXEgD0kNAiABIAkgD2s6AEwgASABKQNAIjggD60iOYg3A0AgFUECa0H//wNxIDhCfyA5hkJ/hYOnIglB//8DcUkNAiAJQQJqIQ8LIBVB//8DcSINBH8gDUEBdCIoEHEiEUUNDCARQQRrIhotAABBA3FFIChFckUEQCARQQAgKPwLAAsCQCAPQf//A3FFDQAgN0IgiCE4IDenIS9BACEIQQghKwJAA0ACQCAHQbQCaiAQEI8CAkACQAJAAkACQAJ/IActALQCIgRBHUcEQCAHLQC3AkEYdCAHLwC1AkEIdHIgBHIMAQsgDCEEIBJBgICAgHhGDQIgECkDACI3IDiDp0H//wNxIgQgL08NAwJAIBQgBEECdGooAgAiBEGAgARPBEAgAS0ATCIWIARBEHYiCUH/AXFPDQNBDyEJIAcvAbYCIQQMAQsgB0G0AmogDCAOIDenQQp2QT9xIARBAWsgEBCdBiAHLwG2AiEEIActALQCIglBHUYNAwsgBy0AtQJBCHQgCXIgBEEQdHILIQggBygCwAIhDSAHKAK8AiEEIAcoArgCIQ4MBwsgASAWIAlrOgBMIAEgNyAJrYg3A0ALAkAgBEH//wNxIhZBEE8EQCAEQRBrIiVB//8DcUEDSQ0BDAULIBEgCEH//wNxQQF0aiAEOwEAIAQgKyAWGyErIAhBAWohCAwDCyABLQBMIglBgoYcICVBA3RB+P8DcXYiBEEHcUkEQCAHQbQCaiAQEI8CIActALQCIglBHUcEQCAHLQC1AkEIdCAJciEIIAcoAsACIQ0gBygCvAIhBCAHKAK4AiEOIAcvAbYCISwMAwsgAS0ATCEJCyAJQf8BcSAEQf8BcUkEQEEPIQgMAgsgASAJIARrOgBMIAEgASkDQCI3IAStQgeDIjmINwNAIBVB//8DcSIEQoOAjICwASAlQQR0rULw/wODiKciKSA3Qn8gOYZCf4WDpyIsaiIJIAhqQf//A3FJDQMgK0EAIBZBEEYbISUgCEH//wNxIgggBCAEIAhJGyIwIAhrIgQgKSAsakEBa0H//wNxIhYgBCAWSRsiBEEITwRAIARBAWoiFkEHcSIpQQggKRsiKSAEQX9zaiEEIAkgFiApayIWayEJIAggFmogESAIQQF0aiEIICX9ECE7A0AgCCA7/QsBACAIQRBqIQggBEEIaiIEDQALIQgLIBEgCEEBdGohBANAIAggMEcEQCAEICU7AQAgBEECaiEEIAhBAWohCCAJQQFrIglB//8DcQ0BDAQLCyAwIA1BjILHABCMBwALIAQgL0HY+cYAEIwHAAsgLEEQdCAIciEIDAMLIAhB//8DcSAVQf//A3FPDQMgD0EBayIPQf//A3ENAQwDCwtBDyEICwJAIBooAgAiCUF4cSIPQQRBCCAJQQNxIgkbIChqTwRAIAlBACAPIChBJ2pLGw0BIBEQogIMBQsMGAsMGAsgEQVBAgshBEEdIQgCQAJAIBJBgICAgHhGDQAgEgRAIAxBBGsoAgAiCUF4cSIOIBJBA3QiD0EEQQggCUEDcSIJG2pJDRggCUEAIA4gD0EnaksbDRkgDBCiAgsgF0UNACAUQQRrKAIAIgxBeHEiCSAXQQJ0Ig5BBEEIIAxBA3EiDBtqSQ0XIAxBACAJIA5BJ2pLGw0BIBQQogILIA0hDgwDCwwWCyAHLQC1AkEIdCAIciAHLwG2AkEQdHIhCCAHKALAAiENIAcoArwCIQQgBygCuAIhDgsgEkGAgICAeEYNAAJAIBIEQCAMQQRrKAIAIglBeHEiDyASQQN0IhFBBEEIIAlBA3EiCRtqSQ0VIAlBACAPIBFBJ2pLGw0WIAwQogILIBdFDQEgFEEEaygCACIMQXhxIgkgF0ECdCIPQQRBCCAMQQNxIgwbakkNFCAMQQAgCSAPQSdqSxsNACAUEKICDAELDBQLIAhB/wFxQR1HBEAgB0GzAWogCEEYdjoAACAHIA02ArwBIAcgBDYCuAEgByAONgK0ASAHIAg6ALABIAdBgYCAgHg2AqwBIAcgCEEIdjsAsQEMBQsgByANNgKwAiAHIAQ2AqwCIAcgDjYCqAIgB0GsAWogB0GoAmoQmAEgBy0AsAEhCCAHKQK4ASE3IAcvAbIBIQ4gBy0AsQEhCSAHKAK0ASIMIAcoAqwBIg9BgYCAgHhGDQUaCyAHKQLAASE4AkACQCAHQSBqICpBHGxqIgQoAgAiEUGAgICAeEYNACARBEAgBCgCBCIVQQRrKAIAIhRBeHEiFyARQQN0IhFBBEEIIBRBA3EiFBtqSQ0CIBRBACAXIBFBJ2pLGw0VIBUQogILIAQoAgwiEUUNACAEKAIQIhVBBGsoAgAiFEF4cSIXIBFBAnQiEUEEQQggFEEDcSIUG2pJDRMgFEEAIBcgEUEnaksbDRQgFRCiAgsgBCA4NwIUIAQgNzcCDCAEIAw2AgggBCAOOwEGIAQgCToABSAEIAg6AAQgBCAPNgIAIAsgC0EFSSIEaiEIIARFDQYMAQsLDBALAkAgDigCACIBQXhxIgJBKkEuIAFBA3EiARtPBEAgAUEAIAJBzgBPGw0BIAwQogIMAwsMEAtBjI3IAEEuQbyNyAAQ6wcMBQsgB0GBgICAeDYCrAFBDyEIIAdBDzoAsAELIAcpArgBITcgBy8BsgEhDiAHLQCxASEJIAcoArQBCyEMIAdBIGoQjQIgCgRAIBMhAQNAIAEQjQIgAUGMAWohASAKQQFrIgoNAAsLAkAgBygCECIBBEAgE0EEaygCACICQXhxIgMgAUGMAWwiAUEEQQggAkEDcSICG2pJDQ4gAkEAIAMgAUEnaksbDQ8gExCiAgsgH0UNCCAZQQRrKAIAIgFBeHEiAiAfQQF0IgNBBEEIIAFBA3EiARtqSQ0NIAFBACACIANBJ2pLGw0AIBkQogIMCAsMDQsgBygCECAKRgRAIAdBEGoQnwYgBygCFCETCyATIApBjAFsaiAHQSBqQYwB/AoAACAHIApBAWoiCjYCGCA0QQFqIQggCiAbRw0ACyAHKQMQITcgBygCECEpAkACfyAcRQRAQQAhCCA3QiCIpwwBCyAYRQ0BIBkvAQAiCCAbTw0GIDdCIIinCyEEAkACQAJAAkAgAkH//wNxIhcgA0H//wNxbCIRRQ0AQX8gHHRBf3NB//8DIBwbITYgBkEBaiEUIAZBEGshKkEAIB5rQR9xIRYgAkEBa0H//wNxITUgBCAIQYwBbGohDUEAIQNBACEVA0ACQCACQf//A3FFBEAgB0G0AmogEBCPAiAHLQC0AiIIQR1HDQkgAyAVSQ0BQdj7xgAQgggACwJAA0AgB0G0AmogEBCPAiAHLQC0AiIIQR1HDQogAyAVSQ0CIAMgAyAXbiIIIBdsIgtrIQQCQCAcRQRAQQAhCgwBCyAYIDEgCEH//wNxIBx2bCAEQf//A3EgHHZqIghLBEAgGSAIQQF0ai8BACIKIBtJDQEgCiAbQej7xgAQjAcACyAIIBhByPLEABCMBwALIAsgBCA2ciIEIDUgBCA1SRtqQQFqIRUgEyAKQYwBbGoiDSgCAEGAgICAeEcNAiANKAIcQYCAgIB4Rw0CIA0oAjhBgICAgHhHDQIgDSgCVEGAgICAeEcNAiANLwEEIgtBgAJPDQIgDS0AWCEKIA0tADwhDCANLQAgIQkCQCAVIANrIBEgHBsiDgRAQQAhCEEBIQQgBiADQQJ0Ig8gBmtBA2oiEkEAIBJBA00baiAPa0ECdiISIBQgD2siD0EAIA8gFE0bQQNqQQJ2Ig8gDyASSxsiDyAOQQFrIhIgDyASSRsiD0EQTwRAIA9BAWoiBEEPcSIIQRAgCBsiCCAPQX9zaiEPIAQgCGsiCEEBaiEEIAP9ESE7/QwMAAAADQAAAA4AAAAPAAAAIT79DAgAAAAJAAAACgAAAAsAAAAhPf0MBAAAAAUAAAAGAAAABwAAACE//QwAAAAAAQAAAAIAAAADAAAAIUADQCAFIEAgO/2uAUEC/asBIjz9GwBqIhIgCToAACAFIDz9GwFqIh4gCToAACAFIDz9GwJqIiEgCToAACAFIDz9GwNqIiIgCToAACAFID8gO/2uAUEC/asBIjz9GwBqIiMgCToAACAFIDz9GwFqIiQgCToAACAFIDz9GwJqIicgCToAACAFIDz9GwNqIiggCToAACAFID0gO/2uAUEC/asBIjz9GwBqIisgCToAACAFIDz9GwFqIiwgCToAACAFIDz9GwJqIi0gCToAACAFIDz9GwNqIi4gCToAACAFID4gO/2uAUEC/asBIjz9GwBqIi8gCToAACAFIDz9GwFqIiUgCToAACAFIDz9GwJqIjAgCToAACAFIDz9GwNqIjIgCToAACASIAs6AAEgHiALOgABICEgCzoAASAiIAs6AAEgIyALOgABICQgCzoAASAnIAs6AAEgKCALOgABICsgCzoAASAsIAs6AAEgLSALOgABIC4gCzoAASAvIAs6AAEgJSALOgABIDAgCzoAASAyIAs6AAEgEiAMOgACIB4gDDoAAiAhIAw6AAIgIiAMOgACICMgDDoAAiAkIAw6AAIgJyAMOgACICggDDoAAiArIAw6AAIgLCAMOgACIC0gDDoAAiAuIAw6AAIgLyAMOgACICUgDDoAAiAwIAw6AAIgMiAMOgACIBIgCjoAAyAeIAo6AAMgISAKOgADICIgCjoAAyAjIAo6AAMgJCAKOgADICcgCjoAAyAoIAo6AAMgKyAKOgADICwgCjoAAyAtIAo6AAMgLiAKOgADIC8gCjoAAyAlIAo6AAMgMCAKOgADIDIgCjoAAyBA/QwQAAAAEAAAABAAAAAQAAAAIjz9rgEhQCA/IDz9rgEhPyA9IDz9rgEhPSA+IDz9rgEhPiAPQRBqIg8NAAsLIA5BAWohDwNAIAYgAyAIakECdCIISQ0CIAYgCGsiEkEDTQRAQQBBBCASQdT+xgAQ6gcACyAFIAhqIgggCjoAAyAIIAw6AAIgCCALOgABIAggCToAACAEIQggDyAEQQFqIgRHDQALCyAdQYCAgIB4RwRAIAtBCHRBgP4DcSAJQRB0ciAKQRh0ciAMckG9z9bxAWwgFnYiBCAgTw0DICYgBEECdGoiBCAKOgADIAQgDDoAAiAEIAs6AAEgBCAJOgAACyADIA5qIgMgEUkNAQwFCwsgCCAGIAZB5P7GABDqBwALIAQgIEGY+sYAEIwHAAsCQCARAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0oAgBBgICAgHhHBEAgDSgCFCIIIBApAwAiN6ciCyANLwEYcSIETQ0CAkAgDSgCECAEQQJ0aigCACIIQYCABE8EQCABLQBMIgsgCEEQdiIEQf8BcUkEQEEPIQQgBy8BtgIhCAwCCyABIAsgBGs6AEwgASA3IAStiDcDQAwDCyAHQbQCaiANKAIEIA0oAgggC0GA+ANxQQp2IAhBAWsgEBCdBiAHLwG2AiEIIActALQCIgRBHUYNAgsgACAHKQK4AjcCBCAAQQxqIAdBwAJqKAIANgIAIActALUCIQEgACAIOwECIAAgAToAASAAIAQ6AAAMHAsgDS8BBCEICwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAIQf//A3EiBEGAAk8EQCAEQZgCSQ0BIAdBDzoAtAIgHUGAgICAeEcNAiAAQQA2AgQgAEEPOgAADCgLIA0oAhxBgICAgHhGDQogDSgCMCILIBApAwAiN6ciDCANLwE0cSIETQ0wIA0oAiwgBEECdGooAgAiCkGAgARJDQggAS0ATCILIApBEHYiBEH/AXFJBEBBDyEEIAcvAbYCIQoMCgsgASALIARrOgBMIAEgNyAErYg3A0AMCwsgCEH8A3FBgAJGBH8gCEH/AWtB//8DcQUgAS0ATCILIAhB/gFqQf7/A3FBAXYiBEH/AXEiCkkNAiABIAsgBGs6AEwgASABKQNAIjcgBK1C/wGDIjiINwNAIDdCfyA4hkJ/hYOnIAhBAXFBAnIgCnRqQQFqCyEaIA0oAnBBgICAgHhGDQUgDSgChAEiCCAQKQMAIjenIgsgDS8BiAFxIgRNDRAgDSgCgAEgBEECdGooAgAiCEGAgARJDQMgAS0ATCILIAhBEHYiBEH/AXFPDQJBDyEEIAcvAbYCIQgMBAsgB0G0AmoQqwQgICAIQZgCa0H//wNxIghNDQsgBiADQQJ0IgRJDQwgBiAEayILQQNNDQ0gBCAFaiAmIAhBAnRqKAAANgAAIBUgA0EBaiIITQRAIAgMGwsgECkDACE3IA0oAgBBgICAgHhGDQ4CQCANKAIUIgsgDS8BGCA3p3EiBEsEQCANKAIQIARBAnRqKAIAIgRBgIAETw0BIAgMHAsgBCALQcj5xgAQjAcACyAEQRB2IQoMGQsgACAaNgIEIABBDzoAAAwjCyABIAsgBGs6AEwgASA3IAStiDcDQAwDCyAHQbQCaiANKAJ0IA0oAnggC0GA+ANxQQp2IAhBAWsgEBCdBiAHLwG2AiEIIActALQCIgRBHUYNAgsgACAHKQK4AjcCBCAAQQxqIAdBwAJqKAIANgIAIActALUCIQEgACAIOwECIAAgAToAASAAIAQ6AAAMIAsgDS8BdCEICyAIQf//A3FBBEkNCiAIQQJrIgRB//8DcUH/A0sNCyABLQBMIgsgBEEBdiIEQf8BcUkEQCAAIDM2AgQgAEEPOgAADB8LIAEgCyAEQf//AXEiBGs6AEwgASABKQNAIjcgBK0iOIg3A0AgN0J/IDiGQn+Fg6cgCEEBcUECciAEdGpBAWoiM0H4AE0NESAzQfgAayEKDBILIAdBtAJqIA0oAiAgDSgCJCAMQYD4A3FBCnYgCkEBayAQEJ0GIAcvAbYCIQogBy0AtAIiBEEdRg0CCyAAIAcpArgCNwIEIABBDGogB0HAAmooAgA2AgAgBy0AtQIhASAAIAo7AQIgACABOgABIAAgBDoAAAwcCyANLQAgIQoLAkACfyANKAI4QYCAgIB4RwRAIA0oAkwiCyAQKQMAIjenIgwgDS8BUHEiBE0NJwJAIA0oAkggBEECdGooAgAiCUGAgARPBEAgAS0ATCIEIAlBEHYiC0H/AXFJBEBBDyEEIAcvAbYCIQkMAgsgASAEIAtrIgQ6AEwgASA3IAutiDcDQAwECyAHQbQCaiANKAI8IA0oAkAgDEGA+ANxQQp2IAlBAWsgEBCdBiAHLwG2AiIJIActALQCIgRBHUYNAhoLIAAgBykCuAI3AgQgAEEMaiAHQcACaigCADYCACAHLQC1AiEBIAAgCTsBAiAAIAE6AAEgACAEOgAADB0LIA0tADwLIQkgAS0ATCEECwJAIARB/wFxQQ5LDQAgB0G0AmogEBCPAiAHLQC0AiIEQR1GDQAgACAHKQC1AjcAASAAQQhqIAdBvAJqKQAANwAAIAAgBDoAAAwbCwJAIA0oAlRBgICAgHhHBEAgDSgCaCILIBApAwAiN6ciDiANLwFscSIETQ0mAkAgDSgCZCAEQQJ0aigCACIMQYCABE8EQCABLQBMIgsgDEEQdiIEQf8BcUkEQEEPIQQgBy8BtgIhDAwCCyABIAsgBGs6AEwgASA3IAStiDcDQAwDCyAHQbQCaiANKAJYIA0oAlwgDkGA+ANxQQp2IAxBAWsgEBCdBiAHLwG2AiEMIActALQCIgRBHUYNAgsgACAHKQK4AjcCBCAAQQxqIAdBwAJqKAIANgIAIActALUCIQEgACAMOwECIAAgAToAASAAIAQ6AAAMHAsgDS0AWCEMCyADQQJ0IgQgBk8NCCAEIAVqIAo6AAAgBEEBciILIAZPDQkgBSALaiAIOgAAIARBAnIiCyAGTw0KIAUgC2ogCToAACAEQQNyIgQgBk8NCyAEIAVqIAw6AAAgHUGAgICAeEcEQCAJQf8BcSAIQQh0QYD+A3EgCkEQdHJBgP7/B3EgDEEYdHJyQb3P1vEBbCAWdiIEICBPDQ0gJiAEQQJ0aiIEIAw6AAMgBCAJOgACIAQgCDoAASAEIAo6AAALIANBAWoMEAsgBCAIQdj5xgAQjAcACyAIICBB+PvGABCMBwALIAQgBiAGQbj8xgAQ6gcAC0EAQQQgC0GI/MYAEOoHAAsgDS8BBCEEQQAhCgwKCyAEIAhB2PnGABCMBwALIAhBAWpB//8DcSEzDAYLQdjmyABBKyAHQbQCakGY+8YAQfT+xgAQ4AYACyAEIAZBlP7GABCMBwALIAsgBkGk/sYAEIwHAAsgCyAGQbT+xgAQjAcACyAEIAZBxP7GABCMBwALIAQgIEGY+sYAEIwHAAsgM0EBayIEQfgASQRAQQEgBEEBdCIELACLgEcgF2wgBCwAioBHaiIEIARBAUwbIQoMAQtBf0H4AEH8gccAEIwHAAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADIApJIBEgA2sgGklyRQRAIApBAUYEQCAGIANBAnQiC0EEayIISQ0CIAYgCGsiBEEDTQ0DQQAhBCAFIAhqKAAAIQlBASEIIBpBAWsiCiAUIAtrIgxBACAMIBRNG0EDakECdiIMIAYgC2tBAnYiDiAMIA5JGyIMIAogDEkbIgpBBE8EQCAKQQFqIgRBA3EiCEEEIAgbIgggCkF/c2ohDCAEIAhrIgRBAWohCCAFIAtqIQogCf0RITsDQCAKIDv9CwAAIApBEGohCiAMQQRqIgwNAAsLIA5BAWohCyAaQQFqIQoDQCAGIAMgBGpBAnQiBEkNBSAIIAtGDQYgBCAFaiAJNgAAIAogCCIEQQFqIghHDQALDBELIAMgGmpBA2ogEUsNCyADIAprQQJ0IgtBEGoiBCAGSw0FIAtBb0sNBiADQQJ0IgggKksNByAFIAhqIAUgC2r9AAAA/QsAACAaQQRNIApBBE9xDQwgCkECdCIMRQ0IIBpBAnQiBCAEQfz/A3FBECAMIAxBEE8bIgRB//8DcW4iCiAEbGtB//8DcUEARyAKaiIKQQJJDQwgBCALaiIJQRBqIg4gBksNCSAJQW9LDQogKiAEIAhqTwRAIApBAmshCiAEQQF0IAxrIQ4gBCAFaiEJIAUgBCAMa2ohDCAEIQsDQCAIIAlqIAggDGr9AAAA/QsAACAKRQ0OAkAgBiAIIA5qIg9BEGpPBEAgD0FvTQ0BIANBAnQgDmoiCUEQaiEODA4LIANBAnQgDmpBEGohDgwMCyAKQQFrIQogBCAOaiEOIAQgCWohCSAEIAxqIQwgCCAEIAtqIgtqICpNDQALCyAHQQA2AsQCIAdBATYCuAIgB0HUnMgANgK0AiAHQgQ3ArwCIAdBtAJqQYT+xgAQjQgACyAAQQ86AAAMGwsgCCAGIAZB+PzGABDqBwALQQBBBCAEQcj8xgAQ6gcACyAEIAYgBkHo/MYAEOoHAAtBAEEEIAYgBGtB2PzGABDqBwALQQAgBCAGQaj9xgAQ6gcACyALIAQgBkGo/cYAEOoHAAsgB0EANgLEAiAHQQE2ArgCIAdB1JzIADYCtAIgB0IENwK8AiAHQbQCakGo/cYAEI0IAAtBuP3GAEEbQdT9xgAQ6wcAC0EAIA4gBkGE/sYAEOoHAAsgCSAOIAZBhP7GABDqBwALQQAhBAJAIBpBAnQiD0EBayIIIAYgA0ECdCILIApBAnQiDGsiCiAGIApLGyAMaiALayIKIAYgC2siCUEAIAYgCU8bIgkgCSAKSxsiCiAIIApJGyIKQRBJBEBBASEIDAELQQEhCCAMQQ9NDQAgCkEBaiIEQQ9xIghBECAIGyIIIApBf3NqIQ4gBCAIayIEQQFqIQggBSALaiEKQQAgDGshEgNAIAogCiASav0AAAD9CwAAIApBEGohCiAOQRBqIg4NAAsLIAlBAWohCSAPQQFqIQ4DQCAEIAtqIgQgDGsiCiAGTw0CIAggCUYNAyAEIAVqIAUgCmotAAA6AAAgDiAIIgRBAWoiCEcNAAsLIB1BgICAgHhHDQIMAwsgCiAGQYj9xgAQjAcACyAEIAZBmP3GABCMBwALAkACQCADQQJ0IgQgBk0EQCAaQQJ0IgggBiAEayILSw0BIAhFDQMgBCAFaiEKQQAgCGshCQNAIAooAAAiBEGA/oN4cSAEQRB0QYCA/AdxciAEQRB2IgtB/wFxckG9z9bxAWwgFnYiCCAgTw0DICYgCEECdGoiCCAEQRh2OgADIAggCzoAAiAIIARBCHY6AAEgCCAEOgAAIApBBGohCiAJQQRqIgkNAAsMAwsgBCAGIAZB9P3GABDqBwALQQAgCCALQeT9xgAQ6gcACyAIICBBmPrGABCMBwALIAMgGmoMAQsgCCAEQf//A3FBmAJJDQAaIAEtAEwiCyAKQf8BcUkNBCABIAsgCms6AEwgASA3IAqtiDcDQCAGIAhBAnQiCEkNBSAGIAhrIgtBA00NBiAgIARBmAJrQf//A3EiBE0NASAFIAhqICYgBEECdGooAAA2AAAgA0ECagsiA0sNAQwCCwsgBCAgQfj7xgAQjAcACyAAQR06AAAMBgsgAEEPOgAADAULIAggBiAGQaj8xgAQ6gcAC0EAQQQgC0GY/MYAEOoHAAtBAEEAQcjyxAAQjAcACwALIAAgBykAtQI3AAEgAEEIaiAHQbwCaikAADcAACAAIAg6AAALIB1BgICAgHhyQYCAgIB4Rg0AICYgHUECdEEBEKIHCyAfBEAgGSAfQQF0QQIQogcLIBMhAQNAIAEQjQIgAUGMAWohASA0QQFrIjQNAAsgKUUNBSATIClBjAFsQQQQogcMBQsgCCAbQcj7xgAQjAcACwJAIB1BgICAgHhyQYCAgIB4RwRAICZBBGsoAgAiAUF4cSICIB1BAnQiA0EEQQggAUEDcSIBG2pJDQYgAUEAIAIgA0EnaksbDQEgJhCiAgsgACA3NwIIIAAgDDYCBCAAIA47AQIgACAJOgABIAAgCDoAAAwECwwFCyAHIAcpALcCNwMAIAcgB0G8AmopAAA3AAUgBy0AtgIhASAHLQC1AiEeDAELQQ8hCAsgACABOgACIAAgHjoAASAAIAg6AAAgACAHKQMANwADIABBCGogBykABTcAAAsgB0HQAmokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAEIAtB2PnGABCMBwALi10EGX8EfQF+AXsjAEHwAGsiCCQAAkACQAJAAkACQAJAIAAtAKRTRQRAIAhB0ABqIABBQGsQuAQgCC0AUARAIAgoAlQhAQwDCyAILQBRQQFHDQEgAEEBOgCkUwsgACgCSCIDRQ0AIABBnAFqIRYgCEE8aq1CgICAgBCEIR4gAEHYAGohFyAAQeQAaiEUIABB8ABqIRggAEH8AGohGQNAAkAgACgCVCIFIAAoAqBTIgFrIgJBACACIAVNG0GAgARPBEAgASECDAELIAEgAUGAgAJrIgJBACABIAJPGyIEayECIAEgBEYEQCAAIAI2AqBTDAELIAEgBU0EQCACBEAgACgCUCIBIAEgBGogAvwKAAALIAAoAkghAyAAIAI2AqBTDAELQQAgASAFQczVwQAQ6gcACwJAAkAgAyAOTwRAIAhB0ABqIBYgACgCRCAOaiADIA5rIAAoAlAgACgCVCACQQYQRCAIIAgtAFQiAToADyAIKAJQIRUgCCgCWCITRQ0CIAAoAqBTIgQgE2oiAyAETyADIAAoAlQiAk1xDQEgBCADIAJB3NXBABDqBwALIA4gAyADQezVwQAQ6gcACyAAKAJQIQMgACgCWCAAKAJgIgJrIBNJBEAgFyACIBNBAUEBEKQFIAAoAmAhAgsgEwRAIAAoAlwgAmogAyAEaiAT/AoAAAsgACACIBNqIgc2AmAgACAAKAKgUyATajYCoFMCQAJAIAAoAmRBgICAgHhGBEAgB0EQTwRAIAggACgCXCINKAAAIgI2AhwgAkHOjs2CBUcEQCAIQQE2AmQgCEHMyMEANgJgIAhBATYCVCAIQdTOwQA2AlAgCEEBNgJcIAggCEEcaq1CgICAgJAEhDcDQCAIIAhBQGs2AlggCEEgaiIAIAhB0ABqELEGIAAQjgchAQwICyAIIA0oAAQiBjYCLCAGQQRrQX1JDQIgAEEANgJgIA0tAA4hBSANLQANIQMgDS0ADCEJIA0oAAghBCAHQRBrIgIEQCACBEAgDSANQRBqIAL8CgAACyAAIAI2AmALIAggCTYCPAJAIAlBA00EQEGAgMAAEHEiAg0BAAsgCEEBNgJUIAhBoO3HADYCUCAIQgE3AlwgCCAeNwNoIAggCEHoAGo2AlggCEFAayIAIAhB0ABqELEGIAAQkAchAQwICyAAIAU6AJoBIAAgAzoAmQEgAEEAOgCYASAAQQA2ApQBIAAgCTYCkAEgACAENgKMASAAIAY2AogBIABBADYChAEgAEKAgICAwAA3AnwgAEICNwJ0IABCADcCbCAAIAI2AmggAEGAgBA2AmQgCCAFQYABcUEHdjoAWCAIIAk2AlQgCCAENgJQIAAgCEHQAGoQhAILIAAoAmRBgICAgHhGDQMLA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AmAFBAWsOCQ0MCwoAAQYEFwILQQkhBUEGIQEgACgCkAEOBAQIBwYCCyAAQQlBByAALACaAUEAThs6AJgBDBMLIAAoAmBBBkEJIAAoAogBIgNBAUYbIg1uIgIgACgCjAEgACgClAFrIgRJBEAgAiIEQYCABEkNFQtBgIAEIAQgBEGAgARPGyIPQQNsIgIgACgCbCIBSwR/IAIgAWsiBiAAKAJkIAFrSwRAIBQgASAGQQRBBBCkBSAAKAJsIQELIAAoAmgiAyABQQJ0aiEFIAZBAk8EfyAGQQJ0QQRrIgIEQCAFQQAgAvwLAAsgASAGaiICQQFrIQEgAyACQQJ0akEEawUgBQtBADYCACAAIAFBAWo2AmwgACgCiAEFIAMLQQFHDQsgBEUNDUEAIQdBACEBQQAhAkEAIQMDQCABQQJqIQwgACgCYCIFIAFBAWpNBEAgASAMIAVBrM/BABDqBwALAn8gACgCXCABaiIFQQFqLQAAQQh0IgkgBS0AAHIiBUH//wFxRQRAIAVBEHQMAQsgBUH/B3EhCyAJQYCAAnEhBiAJQYD4AXEiBUGA+AFGBEAgBkEQdCIFQYCAgPwHciALRQ0BGiALQQ10IAVyQYCAgP4HcgwBCyAGQRB0IgYgBUENdEGAgID8AHEgC0ENdHJBgICAwANqciAFDQAaIAsgC2dBEGsiBUH//wNxQQhqdEH///8DcSAGQYCAgNgDciAFQRd0a3ILIQYCfwJAAkAgACgCbCIFIANLBEAgACgCaCACaiAGNgIAIAFBBGoiCyAAKAJgIgVLDQEgACgCXCABaiIFQQNqLQAAQQh0IgkgBUECai0AAHIiBUH//wFxRQRAIAVBEHQMBAsgBUH/B3EhDCAJQYCAAnEhBiAJQYD4AXEiBUGA+AFGBEAgBkEQdCIFQYCAgPwHciAMRQ0EGiAMQQ10IAVyQYCAgP4HcgwECyAGQRB0IQYgBUUNAiAFQQ10QYCAgPwAcSAMQQ10ckGAgIDAA2ogBnIMAwsgAyAFQdzOwQAQjAcACyAMIAsgBUGcz8EAEOoHAAsgDCAMZ0EQayIFQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAVBF3RrcgshCQJ/AkACQCADQQFqIgYgACgCbCIFSQRAIAAoAmggAmpBBGogCTYCACABQQZqIgUgACgCYCIGSw0BIAAoAlwgAWoiAUEFai0AAEEIdCIJIAFBBGotAAByIgFB//8BcUUEQCABQRB0DAQLIAFB/wdxIQsgCUGAgAJxIQYgCUGA+AFxIgFBgPgBRgRAIAZBEHQiAUGAgID8B3IgC0UNBBogC0ENdCABckGAgID+B3IMBAsgBkEQdCEGIAFFDQIgAUENdEGAgID8AHEgC0ENdHJBgICAwANqIAZyDAMLIAYgBUHszsEAEIwHAAsgCyAFIAZBjM/BABDqBwALIAsgC2dBEGsiAUH//wNxQQhqdEH///8DcSAGQYCAgNgDciABQRd0a3ILIQkgA0ECaiIGIAAoAmwiAUkEQCAAKAJoIAJqQQhqIAk2AgAgAkEMaiECIANBA2ohAyAFIQEgB0EBaiIHIA9JDQEMDgsLIAYgAUH8zsEAEIwHAAtB7NPBABCBCAALIAAoAmAiAUECdiICIAAoAowBIAAoApQBayIESQRAIAIhBCABQYCAEEkNEwtBgIAEIAQgBEGAgARPGyIHIAAoAoQBIgFLBEAgByABayIGIAAoAnwgAWtLBEAgGSABIAZBBEEEEKQFIAAoAoQBIQELIAAoAoABIgMgAUECdGohBSAGQQJPBH8gBkECdEEEayICBEAgBUEAIAL8CwALIAEgBmoiAkEBayEBIAMgAkECdGpBBGsFIAULQQA2AgAgACABQQFqIgE2AoQBCyAEBEBBACEBQQAhAwJAA0AgACgCYCICIAFBA2pNBEAgASABQQRqIAJBvNXBABDqBwALIAAoAoQBIgIgA0sEQCAAKAKAASABaiAAKAJcIAFqKAAANgIAIAFBBGohASAHIANBAWoiA0YNAgwBCwsgAyACQazVwQAQjAcACyAAKAKEASEBCyAAKAIQIAAoAhQgACgClAEgByAAKAKAASABEI4DAkACQAJAIAAoAmAiAyAHQQJ0IgFPBEAgAEEANgJgIAMgAWshBSAERQ0BIAEgA0YNAyAFRQ0CIAAoAlwiAiABIAJqIAX8CgAADAILDBoLIAEgA0YNAQsgACAFNgJgCyAAIAAoApQBIAdqIgI2ApQBIAIgACgCjAFHDRAgAEEANgKUAUEJIQELIAAgAToAmAEMDwsgACgCYCIBQQF2IgIgACgCjAEgACgClAFrIgRJBEAgAiEEIAFBgIAISQ0RC0GAgAQgBCAEQYCABE8bIgcgACgCeCIBSwRAIAcgAWsiBiAAKAJwIAFrSwRAIBggASAGQQJBAhCkBSAAKAJ4IQELIAAoAnQiAyABQQF0aiEFIAZBAk8EfyAGQQF0QQJrIgIEQCAFQQAgAvwLAAsgASAGaiICQQFrIQEgAyACQQF0akECawUgBQtBADsBACAAIAFBAWoiATYCeAsgBARAQQAhA0ECIQECQANAIAAoAmAiAiABSQRAIAFBAmsgASACQZzVwQAQ6gcACyAAKAJ4IgIgA0sEQCAAKAJ0IAFqQQJrIAAoAlwgAWpBAmsvAAA7AQAgAUECaiEBIAcgA0EBaiIDRg0CDAELCyADIAJBjNXBABCMBwALIAAoAnghAQsgACgCECAAKAIUIAAoApQBIAcgACgCdCABELQDAkACQAJAIAAoAmAiAyAHQQF0IgFPBEAgAEEANgJgIAMgAWshBSAERQ0BIAEgA0YNAyAFRQ0CIAAoAlwiAiABIAJqIAX8CgAADAILDBgLIAEgA0YNAQsgACAFNgJgCyAAIAAoApQBIAdqIgI2ApQBIAIgACgCjAFHDQ4gAEEANgKUASAAQQg6AJgBDA4LQS0hBQwBC0EYIQULIAAoAmAgBW4iAiAAKAKMASAAKAKUAWsiC0kEQCACIgtBgIAESQ0OC0GAgAQgCyALQYCABE8bIhAgBWwiESAAKAJsIgFLBEAgESABayIGIAAoAmQgAWtLBEAgFCABIAZBBEEEEKQFIAAoAmwhAQsgACgCaCIDIAFBAnRqIQQgBkECTwR/IAZBAnRBBGsiAgRAIARBACAC/AsACyABIAZqIgJBAWshASADIAJBAnRqQQRrBSAEC0EANgIAIAAgAUEBaiIBNgJsCyAQQQlsIQ8CQCALBEAgEEHgAGwhDCAQQRhsIQdBASEBQQAhEkEAIQYCQANAIAYhDSABIQYgBSANbCIBIAAoAmAiAk8NAwJAAkACQAJAIA1BCWwiAyAAKAJsIgJPDQAgACgCaCADQQJ0aiAAKAJcIAFqLQAAs0MAAADDkkMAAAA8lDgCACABQQNqIgkgACgCYCICTwRAIAkhAQwICyADQQNqIgQgACgCbCICTwRAIAQhAwwBCyAAKAJoIARBAnRqIAAoAlwgCWotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiCSAAKAJgIgJPBEAgCSEBDAgLIANBBmoiBCAAKAJsIgJPBEAgBCEDDAELIAAoAmggBEECdGogACgCXCAJai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEBaiIJIAAoAmAiAk8EQCAJIQEMCAsgA0EBaiIEIAAoAmwiAk8EQCAEIQMMAQsgACgCaCAEQQJ0aiAAKAJcIAlqLQAAs0MAAADDkkMAAAA8lDgCACABQQRqIgkgACgCYCICTwRAIAkhAQwICyADQQRqIgQgACgCbCICTwRAIAQhAwwBCyAAKAJoIARBAnRqIAAoAlwgCWotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiCSAAKAJgIgJPBEAgCSEBDAgLIANBB2oiBCAAKAJsIgJPBEAgBCEDDAELIAAoAmggBEECdGogACgCXCAJai0AALNDAAAAw5JDAAAAPJQ4AgAgAUECaiIJIAAoAmAiAk8EQCAJIQEMCAsgA0ECaiIEIAAoAmwiAk8EQCAEIQMMAQsgACgCaCAEQQJ0aiAAKAJcIAlqLQAAs0MAAADDkkMAAAA8lDgCACABQQVqIgkgACgCYCICTwRAIAkhAQwICyADQQVqIgQgACgCbCICTwRAIAQhAwwBCyAAKAJoIARBAnRqIAAoAlwgCWotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKAJgIgJPBEAgBCEBDAgLIANBCGoiAyAAKAJsIgJPDQAgACgCaCADQQJ0aiAAKAJcIARqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKQAUEBSw0BDAILIAMgAkH81MEAEIwHAAsCQAJAIAFBCWoiAyAAKAJgIgpPDQAgDUEPbCAPaiICIAAoAmwiCk8NAyAAKAJoIAJBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDGoiAyAAKAJgIgpPDQAgAkEDaiIEIAAoAmwiCk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgCYCIKTw0AIAJBBmoiBCAAKAJsIgpPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUESaiIDIAAoAmAiCk8NACACQQlqIgQgACgCbCIKTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFWoiAyAAKAJgIgpPDQAgAkEMaiIEIAAoAmwiCk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgCYCIKTw0AIAJBAWoiBCAAKAJsIgpPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUENaiIDIAAoAmAiCk8NACACQQRqIgQgACgCbCIKTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEGoiAyAAKAJgIgpPDQAgAkEHaiIEIAAoAmwiCk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgCYCIKTw0AIAJBCmoiBCAAKAJsIgpPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEWaiIDIAAoAmAiCk8NACACQQ1qIgQgACgCbCIKTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBC2oiAyAAKAJgIgpPDQAgAkECaiIEIAAoAmwiCk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgCYCIKTw0AIAJBBWoiBCAAKAJsIgpPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUERaiIDIAAoAmAiCk8NACACQQhqIgQgACgCbCIKTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFGoiAyAAKAJgIgpPDQAgAkELaiIEIAAoAmwiCk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgCYCIKTw0AIAJBDmoiAiAAKAJsIgpPDQMgACgCaCACQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKQAUECTQ0CQQAhCiAMIQMMAQsgAyAKQczUwQAQjAcACwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkADQCAAKAJgIgIgCiASaiIBQRhqSwRAIAcgCmoiBCAAKAJsIgJPDQ8gACgCaCADaiABIAAoAlxqQRhqLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEbak0NByAAKAJsIgIgBEEDak0NDiAAKAJoIANqQQxqIAEgACgCXGpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQR5qTQ0GIAAoAmwiAiAEQQZqTQ0NIAAoAmggA2pBGGogASAAKAJcakEeai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBIWpNDQUgACgCbCICIARBCWpNDQwgACgCaCADakEkaiABIAAoAlxqQSFqLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEkak0NBCAAKAJsIgIgBEEMak0NCyAAKAJoIANqQTBqIAEgACgCXGpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQSdqTQ0DIAAoAmwiAiAEQQ9qTQ0KIAAoAmggA2pBPGogASAAKAJcakEnai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBKmpNDQIgACgCbCICIARBEmpNDQkgACgCaCADakHIAGogACgCXCASaiAKakEqai0AALNDAAAAw5JDAAAAPJQ4AgAgA0EEaiEDIApBAWoiCkEDSQ0BDBALCyABQRhqDAYLIAFBKmoMBQsgAUEnagwECyABQSRqDAMLIAFBIWoMAgsgAUEeagwBCyABQRtqCyACQazUwQAQjAcACyAEQRJqIQQMBQsgBEEPaiEEDAQLIARBDGohBAwDCyAEQQlqIQQMAgsgBEEGaiEEDAELIARBA2ohBAsgBCACQbzUwQAQjAcACyAFIBJqIRIgB0EVaiEHIAxB1ABqIQwgBiAGIBBJIgJqIQEgAkUNAgwBCwsgAiAKQdzUwQAQjAcACyAAKAJsIQELAkACQAJAAkACQAJAIAEgD08EQCAAKAJoIQUgACgClAEhBEEAIQJBBCEKAkAgACgCkAEiA0ECSQRAQQQhB0EAIRIMAQsgEEEYbCIGIAFLDQIgEEEPbCESIAUgD0ECdGohByADQQJGDQAgASARSSAGIBFLcg0FIBEgBmshAiAFIAZBAnRqIQoLIAAgBCAQIAUgDyAHIBIgCiACENsDIAAoAmAiAiARSQ0CIABBADYCYCACIBFrIQEgC0UNAyACIBFGDQYgAUUNBSAAKAJcIgIgAiARaiAB/AoAAAwFC0EAIA8gAUGc1MEAEOoHAAsgDyAGIAFBjNTBABDqBwALQQAgESACQYSkxwAQ6gcACyACIBFHDQEMAgsgBiARIAFB/NPBABDqBwALIAAgATYCYAsgACAAKAKUASAQaiICNgKUASACIAAoAowBRw0MIABBADYClAEgAEEGOgCYAQwMCyABIAJB7NTBABCMBwALIAAoAmBBBEEDIAAoAogBIgNBA0YbIg1uIgIgACgCjAEgACgClAFrIgVJBEAgAiIFQYCABEkNDQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQYCABCAFIAVBgIAETxsiBkECdCICIAAoAmwiAUsEfyACIAFrIgcgACgCZCABa0sEQCAUIAEgB0EEQQQQpAUgACgCbCEBCyAAKAJoIgMgAUECdGohBCAHQQJPBH8gB0ECdEEEayICBEAgBEEAIAL8CwALIAEgB2oiAkEBayEBIAMgAkECdGpBBGsFIAQLQQA2AgAgACABQQFqNgJsIAAoAogBBSADC0EDRwRAIAVFDQxBACEEQQAhAUEAIQJBACEDA0AgASAAKAJgIglPDQIgAUEBaiIHIAlPDQMgAUECaiIHIAlPDQRDAACAPyAAKAJcIAFqIgctAACzQwAA/0KVQwAAgL+SIhwgHJQgB0EBai0AALNDAAD/QpVDAACAv5IiHSAdlJIgB0ECai0AALNDAAD/QpVDAACAv5IiGyAblJKTQwAAAAAQ4AghGiADIAAoAmwiB08NBSAAKAJoIAJqIBw4AgAgA0EBaiIJIAAoAmwiB08NBiAAKAJoIAJqQQRqIB04AgAgA0ECaiIJIAAoAmwiB08NByAAKAJoIAJqQQhqIBs4AgAgA0EDaiIJIAAoAmwiB08NCCAAKAJoIAJqQQxqIBqROAIAIAFBA2ohASACQRBqIQIgA0EEaiEDIARBAWoiBCAGSQ0ACwwLCyAFRQ0LQQAhAkEBIQdBACEDA0ACQAJAAkACQCAAKAJgIgEgA0sEQCADQQFqIhAgAU8NASADQQJqIhIgAU8NAiADQQNqIg8gAU8NAyAAKAJcIANqIgRBAmotAAAhCSAEQQNqLQAAIQwgBC0AACAEQQFqLQAAIQsgCP0MAAAAAAAAAAAAAAAAAAAAAP0LA1AgC0EIdHIiBCAJQRB0IAxBGHRyciEBQwAAAAAhGwJ/AkAgDEEGdiIJQQNHBEAgCCAEQf8DcbNDAID/Q5VD8wQ1P5QiGowgGiALQQJxGyIaOAJcIBogGpQhGyABQQp2IQEgCUECRg0BCyAIIAFB/wNxs0MAgP9DlUPzBDU/lCIajCAaIAFBgARxGyIaOAJYIBsgGiAalJIhGyABQQp2IgEgCUEBRg0BGgsgCCABQf8DcbNDAID/Q5VD8wQ1P5QiGowgGiABQYAEcRsiGjgCVCAbIBogGpSSIRsgAUEKdgshASAIQdAAaiAJQQJ0akMAAIA/IAxBwABPBH0gCCABQf8DcbNDAID/Q5VD8wQ1P5QiGowgGiABQYAEcRsiGjgCUCAbIBogGpSSBSAbC5MiGpFDAAAAACAaQwAAAABeGzgCACADIAAoAmwiAUkNBCADIAFBvNLBABCMBwALIAMgAUH80cEAEIwHAAsgECABQYzSwQAQjAcACyASIAFBnNLBABCMBwALIA8gAUGs0sEAEIwHAAsgACgCaCACaiAIKgJQOAIAIBAgACgCbCIBTw0KIAAoAmggAmpBBGogCCoCVDgCACASIAAoAmwiAU8NCSAAKAJoIAJqQQhqIAgqAlg4AgAgDyAAKAJsIgFPDQggACgCaCACakEMaiAIKgJcOAIAIAJBEGohAiADQQRqIQMgBiAHSyAHQQFqIQcNAAsMCgsgASAJQfzSwQAQjAcACyAHIAlBjNPBABCMBwALIAcgCUGc08EAEIwHAAsgAyAHQazTwQAQjAcACyAJIAdBvNPBABCMBwALIAkgB0HM08EAEIwHAAsgCSAHQdzTwQAQjAcACyAPIAFB7NLBABCMBwALIBIgAUHc0sEAEIwHAAsgECABQczSwQAQjAcACyAFRQ0AIAAoAmwhCyAAKAJoIQJBACEBIAAoAggiCSAAKAKUASIEayIDQQAgAyAJTRshAyAAKAIEIARBJGxqIQogBiEHA0AgA0UNAiABQQNqIAtPDQMgCCAC/QACAP0LBFAgAkEQaiECIAFBBGohASAEQQFqIQQgA0EBayEDIAogCEHQAGoQkAIgCkEkaiEKIAdBAWsiBw0ACwsgACgCYCIBIAYgDWwiAkkNFyAAQQA2AmAgASACayEDIAVFDQIgASACRg0EIANFDQMgACgCXCIBIAEgAmogA/wKAAAMAwsgBCAJQeTAxwAQjAcACyABIAFBBGogC0Gkx8cAEOoHAAsgASACRg0BCyAAIAM2AmALIAAgACgClAEgBmoiAjYClAEgAiAAKAKMAUcNCiAAQQA2ApQBIABBBToAmAEMCgsgACgCYCIBQQNuIgIgACgCjAEgACgClAFrIgVJBEAgAiEFIAFBgIAMSQ0MC0GAgAQgBSAFQYCABE8bIgtBA2wiBiAAKAJsIgFLBEAgBiABayIHIAAoAmQgAWtLBEAgFCABIAdBBEEEEKQFIAAoAmwhAQsgACgCaCIDIAFBAnRqIQQgB0ECTwR/IAdBAnRBBGsiAgRAIARBACAC/AsACyABIAdqIgJBAWshASADIAJBAnRqQQRrBSAEC0EANgIAIAAgAUEBajYCbAsCQAJAAkACQAJAAkACQAJAAkACQCAFBEBBACEDQQAhAQNAIAEgACgCYCICTw0CIAEgACgCbCICTw0DIAAoAmggA2ogACgCXCABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiIEIAAoAmAiAk8NBCAEIAAoAmwiAk8NBSAAKAJoIANqQQRqIAAoAlwgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiBCAAKAJgIgJPDQYgBCAAKAJsIgJPDQcgACgCaCADakEIaiAAKAJcIAFqQQJqLQAAs0MAAIA9lEMAACDBkhCJBDgCACADQQxqIQMgBiABQQNqIgFHDQALQQAhBCAAKAIIIgwgACgClAEiCmsiAkEAIAIgDE0bIQkgACgCBCAKQSRsaiECIAAoAmghAyAAKAJsIQ1BACEBA0AgASAJRg0eIARBA2oiByANSyABQdSq1aoFS3INCCAIIAP9XQIAIANBCGoqAgAiGv0gAiAa/SAD/QsEUCADQQxqIQMgAiAIQdAAahDdAiACQSRqIQIgByEEIAsgAUEBaiIBRw0ACwsgACgCYCICIAZJDR0gAEEANgJgIAIgBmshASAFRQ0HIAIgBkYNCSABRQ0IIAAoAlwiAiACIAZqIAH8CgAADAgLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyAEIAJBvNHBABCMBwALIAQgAkHM0cEAEIwHAAsgBCACQdzRwQAQjAcACyAEIAJB7NHBABCMBwALIAQgByANQfDKxwAQ6gcACyACIAZGDQELIAAgATYCYAsgACAAKAKUASALaiICNgKUASACIAAoAowBRw0JIABBADYClAEgAEEEOgCYAQwJCyAAKAJgIgFBA24iAiAAKAKMASAAKAKUAWsiBUkEQCACIQUgAUGAgAxJDQsLQYCABCAFIAVBgIAETxsiC0EDbCIGIAAoAmwiAUsEQCAGIAFrIgcgACgCZCABa0sEQCAUIAEgB0EEQQQQpAUgACgCbCEBCyAAKAJoIgMgAUECdGohBCAHQQJPBH8gB0ECdEEEayICBEAgBEEAIAL8CwALIAEgB2oiAkEBayEBIAMgAkECdGpBBGsFIAQLQQA2AgAgACABQQFqNgJsCwJAAkACQAJAAkACQAJAAkACQAJAIAUEQEEAIQNBACEBA0AgASAAKAJgIgJPDQIgASAAKAJsIgJPDQMgACgCaCADaiAAKAJcIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgQgACgCYCICTw0EIAQgACgCbCICTw0FIAAoAmggA2pBBGogACgCXCABakEBai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUECaiIEIAAoAmAiAk8NBiAEIAAoAmwiAk8NByAAKAJoIANqQQhqIAAoAlwgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAGIAFBA2oiAUcNAAtBACEEIAAoAggiDCAAKAKUASIKayICQQAgAiAMTRshCSAAKAIEIApBJGxqIQIgACgCaCEDIAAoAmwhDUEAIQEDQCABIAlGDR0gBEEDaiIHIA1LIAFB1KrVqgVLcg0IIAggA/1dAgAgA0EIaioCACIa/SACIBr9IAP9CwRQIANBDGohAyACIAhB0ABqEOUCIAJBJGohAiAHIQQgCyABQQFqIgFHDQALCyAAKAJgIgIgBkkNHCAAQQA2AmAgAiAGayEBIAVFDQcgAiAGRg0JIAFFDQggACgCXCICIAIgBmogAfwKAAAMCAsgASACQbzQwQAQjAcACyABIAJBzNDBABCMBwALIAQgAkHc0MEAEIwHAAsgBCACQezQwQAQjAcACyAEIAJB/NDBABCMBwALIAQgAkGM0cEAEIwHAAsgBCAHIA1BtMbHABDqBwALIAIgBkYNAQsgACABNgJgCyAAIAAoApQBIAtqIgI2ApQBIAIgACgCjAFHDQggAEEANgKUASAAQQM6AJgBDAgLIAAoAmAiAiAAKAKMASAAKAKUAWsiBEkEQCACIgRBgIAESQ0KC0GAgAQgBCAEQYCABE8bIgIgACgCbCIBSwRAIAIgAWsiByAAKAJkIAFrSwRAIBQgASAHQQRBBBCkBSAAKAJsIQELIAAoAmgiBSABQQJ0aiEGIAdBAk8EfyAHQQJ0QQRrIgMEQCAGQQAgA/wLAAsgASAHaiIDQQFrIQEgBSADQQJ0akEEawUgBgtBADYCACAAIAFBAWoiATYCbAsCQAJAAkACQAJAIAQEQEMAAIA/QwAAAEAgACwAmgFBAE4bIRpBACEDQQAhAQNAIAEgACgCYCIFTw0CIAEgACgCbCIFTw0DIAAoAmggA2ogGiAAKAJcIAFqLQAAs0MAAH9DlZQ4AgAgA0EEaiEDIAIgAUEBaiIBRw0ACyAAKAJsIQELIAAoAgQgACgCCCAAKAKUASACIAAoAmggARCrAiAAKAJgIgEgAkkNFCAAQQA2AmAgASACayEDIARFDQIgASACRg0EIANFDQMgACgCXCIBIAEgAmogA/wKAAAMAwsgASAFQZzQwQAQjAcACyABIAVBrNDBABCMBwALIAEgAkYNAQsgACADNgJgCyAAIAAoApQBIAJqIgI2ApQBIAIgACgCjAFHDQcgAEEANgKUASAAQQI6AJgBDAcLIARFDQFBASAALQCZAXSzIRpBACEHQQAhAUEAIQJBACEDAkACQAJAAkADQCABQQNqIgsgACgCYCIFSwRAIAEgCyAFQYzQwQAQ6gcACyADIAAoAmwiBU8NASAAKAJoIAJqIAAoAlwgAWoiBUECai0AACIGQRB0IAUtAAByIAVBAWotAABBCHRyIgVBgICAeHIgBSAGwEEASBuyIBqVOAIAIAFBBmoiCSAAKAJgIgVLDQIgA0EBaiIGIAAoAmwiBU8NAyAAKAJoIAJqQQRqIAAoAlwgAWoiBUEFai0AACIGQRB0IAVBA2otAAByIAVBBGotAABBCHRyIgVBgICAeHIgBSAGwEEASBuyIBqVOAIAIAFBCWoiBSAAKAJgIgZLDQQgA0ECaiIJIAAoAmwiBkkEQCAAKAJoIAJqQQhqIAAoAlwgAWoiAUEIai0AACIGQRB0IAFBBmotAAByIAFBB2otAABBCHRyIgFBgICAeHIgASAGwEEASBuyIBqVOAIAIAJBDGohAiADQQNqIQMgBSEBIAdBAWoiByAPSQ0BDAYLCyAJIAZB3M/BABCMBwALIAMgBUG8z8EAEIwHAAsgCyAJIAVB/M/BABDqBwALIAYgBUHMz8EAEIwHAAsgCSAFIAZB7M/BABDqBwALIARFDQAgACgCbCEJIAAoAmghA0EAIQcgACgCCCIMIAAoApQBIgprIgJBACACIAxNGyEGIAAoAgQgCkEkbGpBCGohAkEAIQEDQCABIAZGDQ8gB0EDaiIFIAlLIAFB1KrVqgVLcg0CIAIgA0EIaiAD/V0CAP1WAgACIh/9WgIIAiACIB/9WwIAACADQQxqIQMgAkEkaiECIAUhByAPIAFBAWoiAUcNAAsLIAAoAmAiASANIA9sIgJJDQwgAEEANgJgIAEgAmshAyAERQ0BIAEgAkYNAyADRQ0CIAAoAlwiASABIAJqIAP8CgAADAILIAcgBSAJQcTFxwAQ6gcACyABIAJGDQELIAAgAzYCYAsgACAAKAKUASAPaiICNgKUASACIAAoAowBRw0AIABBADYClAEgAEEBOgCYAQwACwALIAhBATYCVCAIQbTOwQA2AlAgCEIBNwJcIAggCEEsaq1CgICAgBCENwNAIAggCEFAazYCWCAIQTBqIgAgCEHQAGoQsQYgABCOByEBDAQLIAgtAA8hAQsgDiAVaiEOAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCEEBNgJUIAhBmPfHADYCUCAIQgE3AlwgCCAIQQ9qrUKAgICAoASENwNAIAggCEFAazYCWCAIQRBqIgAgCEHQAGoQsQYgABCOByEBDAYLIABBAToApVMgDkEIaiAOIAAoAkgiASAOayICQQAgASACTxtBB0sbIQ4MAgsgEyAVckUNAQsgDiAAKAJIIgNJDQELCyAORQ0AIA4gACgCSCICTQRAQQAhASAAQQA2AkggAiAORg0CIAIgDmsiAwRAIAAoAkQiAiACIA5qIAP8CgAACyAAIAM2AkgMAgtBACAOIAJBhKTHABDqBwALQQAhAQsgCEHwAGokACABDwtBACABIANBhKTHABDqBwALQQAgAiABQYSkxwAQ6gcACyABIApqIAxB5MDHABCMBwALQQAgBiACQYSkxwAQ6gcAC8pfBBt/BH0BewF+IwBB8ABrIgckAAJAAkACQAJAIAAtAMRTRQRAIAdB0ABqIABB4ABqELgEIActAFAEQCAHKAJUIQEMAwsgBy0AUUEBRw0BIABBAToAxFMLIAAoAmgiBEUNACAAQdkAaiEVIABBPGohFyAAQbwBaiEYIAdBPGqtQoCAgIAQhCEhIABB+ABqIRkgAEGEAWohFCAAQZABaiEaIABBnAFqIRsDQAJAIAAoAnQiAyAAKALAUyIBayICQQAgAiADTRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiCGshAiABIAhGBEAgACACNgLAUwwBCyABIANNBEAgAgRAIAAoAnAiASABIAhqIAL8CgAACyAAKAJoIQQgACACNgLAUwwBC0EAIAEgA0HM1cEAEOoHAAsCQAJAIAQgDk8EQCAHQdAAaiAYIAAoAmQgDmogBCAOayAAKAJwIAAoAnQgAkEGEEQgByAHLQBUIgE6AA8gBygCUCEWIAcoAlgiE0UNAiAAKALAUyIIIBNqIgQgCE8gBCAAKAJ0IgJNcQ0BIAggBCACQdzVwQAQ6gcACyAOIAQgBEHs1cEAEOoHAAsgACgCcCEEIAAoAnggACgCgAEiAmsgE0kEQCAZIAIgE0EBQQEQpAUgACgCgAEhAgsgEwRAIAAoAnwgAmogBCAIaiAT/AoAAAsgACACIBNqIgY2AoABIAAgACgCwFMgE2o2AsBTIAAoAoQBQYCAgIB4RgRAAkAgBkEQSQ0AIAcgACgCfCINKAAAIgI2AhwgAkHOjs2CBUcEQCAHQQE2AmQgB0HMyMEANgJgIAdBATYCVCAHQdTOwQA2AlAgB0EBNgJcIAcgB0Ecaq1CgICAgJAEhDcDQCAHIAdBQGs2AlggB0EgaiIAIAdB0ABqELEGIAAQjgchAQwGCyAHIA0oAAQiAzYCLCADQQRrQX1PBEAgAEEANgKAASANLAAOIQUgDS0ADSEEIA0tAAwhCSANKAAIIQggBkEQayICBEAgAgRAIA0gDUEQaiAC/AoAAAsgACACNgKAAQsgByAJNgI8AkAgCUEDTQRAQYCAwAAQcSICDQEACyAHQQE2AlQgB0Gg7ccANgJQIAdCATcCXCAHICE3A2ggByAHQegAajYCWCAHQUBrIgAgB0HQAGoQsQYgABCQByEBDAcLIAAgBToAugEgACAEOgC5ASAAQQA6ALgBIABBADYCtAEgACAJNgKwASAAIAg2AqwBIAAgAzYCqAEgAEEANgKkASAAQoCAgIDAADcCnAEgAEICNwKUASAAQgA3AowBIAAgAjYCiAEgAEGAgBA2AoQBIAcgBUGAAXFBB3Y6AFggByAJNgJUIAcgCDYCUCAAIAdB0ABqEOkBIAVBAE4NAQJ9IAAtAFhBAkYEQP0MAAAAAAAAgD8AAEDBAAAQQSEgQwAAgD8hHkMAAIA/IR1DAACAPwwBCyAHQdIAaiAVQQJqLQAAOgAAIAcgFS8AADsBUCAAKgJQIR4gACoCTCEdIAD9AAI8ISAgACoCVAshHCAAQQE6AFggACAcOAJUIAAgHjgCUCAAIB04AkwgACAg/QsCPCAVIAcvAVA7AAAgFUECaiAHQdIAai0AADoAAAwBCyAHQQE2AlQgB0G0zsEANgJQIAdCATcCXCAHIAdBLGqtQoCAgIAQhDcDQCAHIAdBQGs2AlggB0EwaiIAIAdB0ABqELEGIAAQjgchAQwFCyAAKAKEAUGAgICAeEYNAQsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AuAFBAWsOCQ0MCwoAAQYEFgILQQkhD0EGIQEgACgCsAEOBAQIBwYCCyAAQQlBByAALAC6AUEAThs6ALgBDBULIAAoAoABQQZBCSAAKAKoASIEQQFGGyINbiICIAAoAqwBIAAoArQBayIISQRAIAIiCEGAgARJDRQLQYCABCAIIAhBgIAETxsiD0EDbCICIAAoAowBIgFLBH8gAiABayIGIAAoAoQBIAFrSwRAIBQgASAGQQRBBBCkBSAAKAKMASEBCyAAKAKIASIEIAFBAnRqIQMgBkECTwR/IAZBAnRBBGsiAgRAIANBACAC/AsACyABIAZqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYCjAEgACgCqAEFIAQLQQFHDQsgCEUNDUEAIQZBACEBQQAhAkEAIQQDQCABQQJqIQwgACgCgAEiAyABQQFqTQRAIAEgDCADQazPwQAQ6gcACwJ/IAAoAnwgAWoiA0EBai0AAEEIdCIJIAMtAAByIgNB//8BcUUEQCADQRB0DAELIANB/wdxIQsgCUGAgAJxIQUgCUGA+AFxIgNBgPgBRgRAIAVBEHQiA0GAgID8B3IgC0UNARogC0ENdCADckGAgID+B3IMAQsgBUEQdCIFIANBDXRBgICA/ABxIAtBDXRyQYCAgMADanIgAw0AGiALIAtnQRBrIgNB//8DcUEIanRB////A3EgBUGAgIDYA3IgA0EXdGtyCyEFAn8CQAJAIAAoAowBIgMgBEsEQCAAKAKIASACaiAFNgIAIAFBBGoiCyAAKAKAASIDSw0BIAAoAnwgAWoiA0EDai0AAEEIdCIJIANBAmotAAByIgNB//8BcUUEQCADQRB0DAQLIANB/wdxIQwgCUGAgAJxIQUgCUGA+AFxIgNBgPgBRgRAIAVBEHQiA0GAgID8B3IgDEUNBBogDEENdCADckGAgID+B3IMBAsgBUEQdCEFIANFDQIgA0ENdEGAgID8AHEgDEENdHJBgICAwANqIAVyDAMLIAQgA0HczsEAEIwHAAsgDCALIANBnM/BABDqBwALIAwgDGdBEGsiA0H//wNxQQhqdEH///8DcSAFQYCAgNgDciADQRd0a3ILIQkCfwJAAkAgBEEBaiIFIAAoAowBIgNJBEAgACgCiAEgAmpBBGogCTYCACABQQZqIgMgACgCgAEiBUsNASAAKAJ8IAFqIgFBBWotAABBCHQiCSABQQRqLQAAciIBQf//AXFFBEAgAUEQdAwECyABQf8HcSELIAlBgIACcSEFIAlBgPgBcSIBQYD4AUYEQCAFQRB0IgFBgICA/AdyIAtFDQQaIAtBDXQgAXJBgICA/gdyDAQLIAVBEHQhBSABRQ0CIAFBDXRBgICA/ABxIAtBDXRyQYCAgMADaiAFcgwDCyAFIANB7M7BABCMBwALIAsgAyAFQYzPwQAQ6gcACyALIAtnQRBrIgFB//8DcUEIanRB////A3EgBUGAgIDYA3IgAUEXdGtyCyEJIARBAmoiBSAAKAKMASIBSQRAIAAoAogBIAJqQQhqIAk2AgAgAkEMaiECIARBA2ohBCADIQEgBkEBaiIGIA9JDQEMDgsLIAUgAUH8zsEAEIwHAAtB7NPBABCBCAALIAAoAoABIgFBAnYiAiAAKAKsASAAKAK0AWsiA0kEQCACIQMgAUGAgBBJDRILQYCABCADIANBgIAETxsiBSAAKAKkASIBSwRAIAUgAWsiBiAAKAKcASABa0sEQCAbIAEgBkEEQQQQpAUgACgCpAEhAQsgACgCoAEiBCABQQJ0aiEIIAZBAk8EfyAGQQJ0QQRrIgIEQCAIQQAgAvwLAAsgASAGaiICQQFrIQEgBCACQQJ0akEEawUgCAtBADYCACAAIAFBAWoiATYCpAELIAMEQEEAIQFBACEEAkADQCAAKAKAASICIAFBA2pNBEAgASABQQRqIAJBvNXBABDqBwALIAAoAqQBIgIgBEsEQCAAKAKgASABaiAAKAJ8IAFqKAAANgIAIAFBBGohASAFIARBAWoiBEYNAgwBCwsgBCACQazVwQAQjAcACyAAKAKkASEBCyAAKAIQIAAoAhQgACgCtAEgBSAAKAKgASABEI0DAkACQAJAIAAoAoABIgQgBUECdCIBTwRAIABBADYCgAEgBCABayEIIANFDQEgASAERg0DIAhFDQIgACgCfCICIAEgAmogCPwKAAAMAgsMGgsgASAERg0BCyAAIAg2AoABCyAAIAAoArQBIAVqIgI2ArQBIAIgACgCrAFHDRIgAEEANgK0AUEJIQELIAAgAToAuAEMEQsgACgCgAEiAUEBdiICIAAoAqwBIAAoArQBayIDSQRAIAIhAyABQYCACEkNEAtBgIAEIAMgA0GAgARPGyIFIAAoApgBIgFLBEAgBSABayIGIAAoApABIAFrSwRAIBogASAGQQJBAhCkBSAAKAKYASEBCyAAKAKUASIEIAFBAXRqIQggBkECTwR/IAZBAXRBAmsiAgRAIAhBACAC/AsACyABIAZqIgJBAWshASAEIAJBAXRqQQJrBSAIC0EAOwEAIAAgAUEBaiIBNgKYAQsgAwRAQQAhBEECIQECQANAIAAoAoABIgIgAUkEQCABQQJrIAEgAkGc1cEAEOoHAAsgACgCmAEiAiAESwRAIAAoApQBIAFqQQJrIAAoAnwgAWpBAmsvAAA7AQAgAUECaiEBIAUgBEEBaiIERg0CDAELCyAEIAJBjNXBABCMBwALIAAoApgBIQELIAAoAhAgACgCFCAAKAK0ASAFIAAoApQBIAEQswMCQAJAAkAgACgCgAEiBCAFQQF0IgFPBEAgAEEANgKAASAEIAFrIQggA0UNASABIARGDQMgCEUNAiAAKAJ8IgIgASACaiAI/AoAAAwCCwwYCyABIARGDQELIAAgCDYCgAELIAAgACgCtAEgBWoiAjYCtAEgAiAAKAKsAUcNECAAQQA2ArQBIABBCDoAuAEMEAtBLSEPDAELQRghDwsgACgCgAEgD24iAiAAKAKsASAAKAK0AWsiC0kEQCACIgtBgIAESQ0NC0GAgAQgCyALQYCABE8bIhAgD2wiESAAKAKMASIBSwRAIBEgAWsiAyAAKAKEASABa0sEQCAUIAEgA0EEQQQQpAUgACgCjAEhAQsgACgCiAEiBCABQQJ0aiEIIANBAk8EfyADQQJ0QQRrIgIEQCAIQQAgAvwLAAsgASADaiICQQFrIQEgBCACQQJ0akEEawUgCAtBADYCACAAIAFBAWoiATYCjAELIBBBCWwhDAJAIAsEQCAQQeAAbCENIBBBGGwhBkEBIQFBACESQQAhCAJAA0AgCCEJIAEhCCAJIA9sIgEgACgCgAEiAk8NAwJAAkACQAJAIAlBCWwiBCAAKAKMASICTw0AIAAoAogBIARBAnRqIAAoAnwgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBSAAKAKAASICTwRAIAUhAQwICyAEQQNqIgMgACgCjAEiAk8EQCADIQQMAQsgACgCiAEgA0ECdGogACgCfCAFai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEGaiIFIAAoAoABIgJPBEAgBSEBDAgLIARBBmoiAyAAKAKMASICTwRAIAMhBAwBCyAAKAKIASADQQJ0aiAAKAJ8IAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQFqIgUgACgCgAEiAk8EQCAFIQEMCAsgBEEBaiIDIAAoAowBIgJPBEAgAyEEDAELIAAoAogBIANBAnRqIAAoAnwgBWotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBSAAKAKAASICTwRAIAUhAQwICyAEQQRqIgMgACgCjAEiAk8EQCADIQQMAQsgACgCiAEgA0ECdGogACgCfCAFai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEHaiIFIAAoAoABIgJPBEAgBSEBDAgLIARBB2oiAyAAKAKMASICTwRAIAMhBAwBCyAAKAKIASADQQJ0aiAAKAJ8IAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQJqIgUgACgCgAEiAk8EQCAFIQEMCAsgBEECaiIDIAAoAowBIgJPBEAgAyEEDAELIAAoAogBIANBAnRqIAAoAnwgBWotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBSAAKAKAASICTwRAIAUhAQwICyAEQQVqIgMgACgCjAEiAk8EQCADIQQMAQsgACgCiAEgA0ECdGogACgCfCAFai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEIaiIDIAAoAoABIgJPBEAgAyEBDAgLIARBCGoiBCAAKAKMASICTw0AIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAAoArABQQFLDQEMAgsgBCACQfzUwQAQjAcACwJAAkAgAUEJaiIEIAAoAoABIgpPDQAgCUEPbCAMaiICIAAoAowBIgpPDQMgACgCiAEgAkECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIEIAAoAoABIgpPDQAgAkEDaiIDIAAoAowBIgpPBEAgAyECDAQLIAAoAogBIANBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBD2oiBCAAKAKAASIKTw0AIAJBBmoiAyAAKAKMASIKTwRAIAMhAgwECyAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQRJqIgQgACgCgAEiCk8NACACQQlqIgMgACgCjAEiCk8EQCADIQIMBAsgACgCiAEgA0ECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIEIAAoAoABIgpPDQAgAkEMaiIDIAAoAowBIgpPBEAgAyECDAQLIAAoAogBIANBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCmoiBCAAKAKAASIKTw0AIAJBAWoiAyAAKAKMASIKTwRAIAMhAgwECyAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQQ1qIgQgACgCgAEiCk8NACACQQRqIgMgACgCjAEiCk8EQCADIQIMBAsgACgCiAEgA0ECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIEIAAoAoABIgpPDQAgAkEHaiIDIAAoAowBIgpPBEAgAyECDAQLIAAoAogBIANBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBE2oiBCAAKAKAASIKTw0AIAJBCmoiAyAAKAKMASIKTwRAIAMhAgwECyAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQRZqIgQgACgCgAEiCk8NACACQQ1qIgMgACgCjAEiCk8EQCADIQIMBAsgACgCiAEgA0ECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIEIAAoAoABIgpPDQAgAkECaiIDIAAoAowBIgpPBEAgAyECDAQLIAAoAogBIANBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBDmoiBCAAKAKAASIKTw0AIAJBBWoiAyAAKAKMASIKTwRAIAMhAgwECyAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQRFqIgQgACgCgAEiCk8NACACQQhqIgMgACgCjAEiCk8EQCADIQIMBAsgACgCiAEgA0ECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIEIAAoAoABIgpPDQAgAkELaiIDIAAoAowBIgpPBEAgAyECDAQLIAAoAogBIANBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBF2oiBCAAKAKAASIKTw0AIAJBDmoiAiAAKAKMASIKTw0DIAAoAogBIAJBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAAoArABQQJNDQJBACEKIA0hBAwBCyAEIApBzNTBABCMBwALAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQANAIAAoAoABIgIgCiASaiIBQRhqSwRAIAYgCmoiAyAAKAKMASICTw0PIAAoAogBIARqIAEgACgCfGpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEbak0NByAAKAKMASICIANBA2pNDQ4gACgCiAEgBGpBDGogASAAKAJ8akEbai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQR5qTQ0GIAAoAowBIgIgA0EGak0NDSAAKAKIASAEakEYaiABIAAoAnxqQR5qLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBIWpNDQUgACgCjAEiAiADQQlqTQ0MIAAoAogBIARqQSRqIAEgACgCfGpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEkak0NBCAAKAKMASICIANBDGpNDQsgACgCiAEgBGpBMGogASAAKAJ8akEkai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQSdqTQ0DIAAoAowBIgIgA0EPak0NCiAAKAKIASAEakE8aiABIAAoAnxqQSdqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBKmpNDQIgACgCjAEiAiADQRJqTQ0JIAAoAogBIARqQcgAaiAAKAJ8IBJqIApqQSpqLQAAs0MAAADDkkMAAAA8lDgCACAEQQRqIQQgCkEBaiIKQQNJDQEMEAsLIAFBGGoMBgsgAUEqagwFCyABQSdqDAQLIAFBJGoMAwsgAUEhagwCCyABQR5qDAELIAFBG2oLIAJBrNTBABCMBwALIANBEmohAwwFCyADQQ9qIQMMBAsgA0EMaiEDDAMLIANBCWohAwwCCyADQQZqIQMMAQsgA0EDaiEDCyADIAJBvNTBABCMBwALIA8gEmohEiAGQRVqIQYgDUHUAGohDSAIIAggEEkiAmohASACRQ0CDAELCyACIApB3NTBABCMBwALIAAoAowBIQELAkACQAJAAkACQAJAIAEgDE8EQCAAKAKIASEDIAAoArQBIQhBACECQQQhCgJAIAAoArABIgRBAkkEQEEEIQZBACESDAELIBBBGGwiBSABSw0CIBBBD2whEiADIAxBAnRqIQYgBEECRg0AIAEgEUkgBSARS3INByARIAVrIQIgAyAFQQJ0aiEKCyAAIAggECADIAwgBiASIAogAhDqBCAAKAKAASICIBFJDQIgAEEANgKAASACIBFrIQEgC0UNAyACIBFGDQUgAUUNBCAAKAJ8IgIgAiARaiAB/AoAAAwEC0EAIAwgAUGc1MEAEOoHAAsgDCAFIAFBjNTBABDqBwALQQAgESACQYSkxwAQ6gcACyACIBFGDQELIAAgATYCgAELIAAgACgCtAEgEGoiAjYCtAEgAiAAKAKsAUcNDyAAQQA2ArQBIABBBjoAuAEMDwsgBSARIAFB/NPBABDqBwALIAEgAkHs1MEAEIwHAAsgACgCgAFBBEEDIAAoAqgBIgRBA0YbIg1uIgIgACgCrAEgACgCtAFrIghJBEAgAiIIQYCABEkNDAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQYCABCAIIAhBgIAETxsiBUECdCICIAAoAowBIgFLBH8gAiABayIGIAAoAoQBIAFrSwRAIBQgASAGQQRBBBCkBSAAKAKMASEBCyAAKAKIASIEIAFBAnRqIQMgBkECTwR/IAZBAnRBBGsiAgRAIANBACAC/AsACyABIAZqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYCjAEgACgCqAEFIAQLQQNHBEAgCEUNDEEAIQNBACEBQQAhAkEAIQQDQCABIAAoAoABIglPDQIgAUEBaiIGIAlPDQMgAUECaiIGIAlPDQRDAACAPyAAKAJ8IAFqIgYtAACzQwAA/0KVQwAAgL+SIh8gH5QgBkEBai0AALNDAAD/QpVDAACAv5IiHiAelJIgBkECai0AALNDAAD/QpVDAACAv5IiHSAdlJKTQwAAAAAQ4AghHCAEIAAoAowBIgZPDQUgACgCiAEgAmogHzgCACAEQQFqIgkgACgCjAEiBk8NBiAAKAKIASACakEEaiAeOAIAIARBAmoiCSAAKAKMASIGTw0HIAAoAogBIAJqQQhqIB04AgAgBEEDaiIJIAAoAowBIgZPDQggACgCiAEgAmpBDGogHJE4AgAgAUEDaiEBIAJBEGohAiAEQQRqIQQgA0EBaiIDIAVJDQALDAsLIAhFDQtBACECQQEhBkEAIQQDQAJAAkACQAJAIAAoAoABIgEgBEsEQCAEQQFqIhAgAU8NASAEQQJqIhIgAU8NAiAEQQNqIg8gAU8NAyAAKAJ8IARqIgNBAmotAAAhCSADQQNqLQAAIQwgAy0AACADQQFqLQAAIQsgB/0MAAAAAAAAAAAAAAAAAAAAAP0LA1AgC0EIdHIiAyAJQRB0IAxBGHRyciEBQwAAAAAhHQJ/AkAgDEEGdiIJQQNHBEAgByADQf8DcbNDAID/Q5VD8wQ1P5QiHIwgHCALQQJxGyIcOAJcIBwgHJQhHSABQQp2IQEgCUECRg0BCyAHIAFB/wNxs0MAgP9DlUPzBDU/lCIcjCAcIAFBgARxGyIcOAJYIB0gHCAclJIhHSABQQp2IgEgCUEBRg0BGgsgByABQf8DcbNDAID/Q5VD8wQ1P5QiHIwgHCABQYAEcRsiHDgCVCAdIBwgHJSSIR0gAUEKdgshASAHQdAAaiAJQQJ0akMAAIA/IAxBwABPBH0gByABQf8DcbNDAID/Q5VD8wQ1P5QiHIwgHCABQYAEcRsiHDgCUCAdIBwgHJSSBSAdC5MiHJFDAAAAACAcQwAAAABeGzgCACAEIAAoAowBIgFJDQQgBCABQbzSwQAQjAcACyAEIAFB/NHBABCMBwALIBAgAUGM0sEAEIwHAAsgEiABQZzSwQAQjAcACyAPIAFBrNLBABCMBwALIAAoAogBIAJqIAcqAlA4AgAgECAAKAKMASIBTw0KIAAoAogBIAJqQQRqIAcqAlQ4AgAgEiAAKAKMASIBTw0JIAAoAogBIAJqQQhqIAcqAlg4AgAgDyAAKAKMASIBTw0IIAAoAogBIAJqQQxqIAcqAlw4AgAgAkEQaiECIARBBGohBCAFIAZLIAZBAWohBg0ACwwKCyABIAlB/NLBABCMBwALIAYgCUGM08EAEIwHAAsgBiAJQZzTwQAQjAcACyAEIAZBrNPBABCMBwALIAkgBkG808EAEIwHAAsgCSAGQczTwQAQjAcACyAJIAZB3NPBABCMBwALIA8gAUHs0sEAEIwHAAsgEiABQdzSwQAQjAcACyAQIAFBzNLBABCMBwALIAhFDQAgACgCjAEhDCAAKAKIASEKQQAhBCAAKAIIIgsgACgCtAEiA2siAkEAIAIgC00bIQIgACgCBCADQRhsakEUaiEBIAUhBgNAIAJFDQIgBEEDaiAMTw0DIAcgCv0AAgD9CwRQIAFBAmogB0HQAGoQnQQiCUEQdjoAACABIAk7AQAgCkEQaiEKIARBBGohBCABQRhqIQEgA0EBaiEDIAJBAWshAiAGQQFrIgYNAAsLIAAoAoABIgEgBSANbCICSQ0XIABBADYCgAEgASACayEEIAhFDQIgASACRg0EIARFDQMgACgCfCIBIAEgAmogBPwKAAAMAwsgAyALQey7xwAQjAcACyAEIARBBGogDEHUxMcAEOoHAAsgASACRg0BCyAAIAQ2AoABCyAAIAAoArQBIAVqIgI2ArQBIAIgACgCrAFHDQwgAEEANgK0ASAAQQU6ALgBDAwLIAAoAoABIgFBA24iAiAAKAKsASAAKAK0AWsiCEkEQCACIQggAUGAgAxJDQsLQYCABCAIIAhBgIAETxsiC0EDbCIMIAAoAowBIgFLBEAgDCABayIGIAAoAoQBIAFrSwRAIBQgASAGQQRBBBCkBSAAKAKMASEBCyAAKAKIASIEIAFBAnRqIQMgBkECTwR/IAZBAnRBBGsiAgRAIANBACAC/AsACyABIAZqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYCjAELAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQRBACEBA0AgASAAKAKAASICTw0CIAEgACgCjAEiAk8NAyAAKAKIASAEaiAAKAJ8IAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgMgACgCgAEiAk8NBCADIAAoAowBIgJPDQUgACgCiAEgBGpBBGogACgCfCABakEBai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUECaiIDIAAoAoABIgJPDQYgAyAAKAKMASICTw0HIAAoAogBIARqQQhqIAAoAnwgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIARBDGohBCAMIAFBA2oiAUcNAAsgACgCtAEiCUEYbCECIAAoAogBIQQgACgCjAEhDUEAIQNBACEBA0AgASAJaiIFIAAoAggiBk8NCCADQQNqIgYgDUsgAUHUqtWqBUtyDQkgACgCBCACaiAXIAT9XQIAIARBCGoqAgAiHP0gAiAc/SADEN8EIARBDGohBCACQRhqIQIgBiEDIAsgAUEBaiIBRw0ACwsgACgCgAEiAiAMSQ0IIABBADYCgAEgAiAMayEBIAhFDQkgAiAMRg0LIAFFDQogACgCfCICIAIgDGogAfwKAAAMCgsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAMgAkG80cEAEIwHAAsgAyACQczRwQAQjAcACyADIAJB3NHBABCMBwALIAMgAkHs0cEAEIwHAAsgBSAGQey7xwAQjAcACyADIAYgDUG0xccAEOoHAAtBACAMIAJBhKTHABDqBwALIAIgDEYNAQsgACABNgKAAQsgACAAKAK0ASALaiICNgK0ASACIAAoAqwBRw0LIABBADYCtAEgAEEEOgC4AQwLCyAAKAKAASIBQQNuIgIgACgCrAEgACgCtAFrIgZJBEAgAiEGIAFBgIAMSQ0KC0GAgAQgBiAGQYCABE8bIgNBA2wiCSAAKAKMASIBSwRAIAkgAWsiBSAAKAKEASABa0sEQCAUIAEgBUEEQQQQpAUgACgCjAEhAQsgACgCiAEiBCABQQJ0aiEIIAVBAk8EfyAFQQJ0QQRrIgIEQCAIQQAgAvwLAAsgASAFaiICQQFrIQEgBCACQQJ0akEEawUgCAtBADYCACAAIAFBAWoiATYCjAELAkACQAJAAkACQAJAAkACQAJAAkAgBgRAQQAhBEEAIQEDQCABIAAoAoABIgJPDQIgASAAKAKMASICTw0DIAAoAogBIARqIAAoAnwgAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAWoiCCAAKAKAASICTw0EIAggACgCjAEiAk8NBSAAKAKIASAEakEEaiAAKAJ8IAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgggACgCgAEiAk8NBiAIIAAoAowBIgJPDQcgACgCiAEgBGpBCGogACgCfCABakECai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgBEEMaiEEIAkgAUEDaiIBRw0ACyAAKAKMASEBCyAAIAAoArQBIAMgACgCiAEgARCkBCAAKAKAASICIAlJDQYgAEEANgKAASACIAlrIQEgBkUNByACIAlGDQkgAUUNCCAAKAJ8IgIgAiAJaiAB/AoAAAwICyABIAJBvNDBABCMBwALIAEgAkHM0MEAEIwHAAsgCCACQdzQwQAQjAcACyAIIAJB7NDBABCMBwALIAggAkH80MEAEIwHAAsgCCACQYzRwQAQjAcAC0EAIAkgAkGEpMcAEOoHAAsgAiAJRg0BCyAAIAE2AoABCyAAIAAoArQBIANqIgI2ArQBIAIgACgCrAFHDQogAEEANgK0ASAAQQM6ALgBDAoLIAAoAoABIgIgACgCrAEgACgCtAFrIgNJBEAgAiIDQYCABEkNCQtBgIAEIAMgA0GAgARPGyICIAAoAowBIgFLBEAgAiABayIFIAAoAoQBIAFrSwRAIBQgASAFQQRBBBCkBSAAKAKMASEBCyAAKAKIASIIIAFBAnRqIQYgBUECTwR/IAVBAnRBBGsiBARAIAZBACAE/AsACyABIAVqIgRBAWshASAIIARBAnRqQQRrBSAGC0EANgIAIAAgAUEBaiIBNgKMAQsCQAJAAkACQAJAIAMEQEMAAIA/QwAAAEAgACwAugFBAE4bIRxBACEEQQAhAQNAIAEgACgCgAEiCE8NAiABIAAoAowBIghPDQMgACgCiAEgBGogHCAAKAJ8IAFqLQAAs0MAAH9DlZQ4AgAgBEEEaiEEIAIgAUEBaiIBRw0ACyAAKAKMASEBCyAAKAIEIAAoAgggACgCtAEgAiAAKAKIASABEKoCIAAoAoABIgEgAkkNFCAAQQA2AoABIAEgAmshBCADRQ0CIAEgAkYNBCAERQ0DIAAoAnwiASABIAJqIAT8CgAADAMLIAEgCEGc0MEAEIwHAAsgASAIQazQwQAQjAcACyABIAJGDQELIAAgBDYCgAELIAAgACgCtAEgAmoiAjYCtAEgAiAAKAKsAUcNCSAAQQA2ArQBIABBAjoAuAEMCQsgCEUNAUEBIAAtALkBdLMhHEEAIQZBACEBQQAhAkEAIQQCQAJAAkACQANAIAFBA2oiCyAAKAKAASIDSwRAIAEgCyADQYzQwQAQ6gcACyAEIAAoAowBIgNPDQEgACgCiAEgAmogACgCfCABaiIDQQJqLQAAIgVBEHQgAy0AAHIgA0EBai0AAEEIdHIiA0GAgIB4ciADIAXAQQBIG7IgHJU4AgAgAUEGaiIJIAAoAoABIgNLDQIgBEEBaiIFIAAoAowBIgNPDQMgACgCiAEgAmpBBGogACgCfCABaiIDQQVqLQAAIgVBEHQgA0EDai0AAHIgA0EEai0AAEEIdHIiA0GAgIB4ciADIAXAQQBIG7IgHJU4AgAgAUEJaiIDIAAoAoABIgVLDQQgBEECaiIJIAAoAowBIgVJBEAgACgCiAEgAmpBCGogACgCfCABaiIBQQhqLQAAIgVBEHQgAUEGai0AAHIgAUEHai0AAEEIdHIiAUGAgIB4ciABIAXAQQBIG7IgHJU4AgAgAkEMaiECIARBA2ohBCADIQEgBkEBaiIGIA9JDQEMBgsLIAkgBUHcz8EAEIwHAAsgBCADQbzPwQAQjAcACyALIAkgA0H8z8EAEOoHAAsgBSADQczPwQAQjAcACyAJIAMgBUHsz8EAEOoHAAsgCEUNACAAKAKMASEMIAAoAogBIQRBACEGIAAoAggiCyAAKAK0ASIJayICQQAgAiALTRshBSAAKAIEIAlBGGxqIQJBACEBA0AgASAFRg0CIAZBA2oiAyAMSyABQdSq1aoFS3INAyACIARBCGogBP1dAgD9VgIAAiIg/VoCCAIgAiAg/VsCAAAgBEEMaiEEIAJBGGohAiADIQYgDyABQQFqIgFHDQALCyAAKAKAASIBIA0gD2wiAkkNDCAAQQA2AoABIAEgAmshBCAIRQ0CIAEgAkYNBCAERQ0DIAAoAnwiASABIAJqIAT8CgAADAMLIAEgCWogC0Hsu8cAEIwHAAsgBiADIAxB9MLHABDqBwALIAEgAkYNAQsgACAENgKAAQsgACAAKAK0ASAPaiICNgK0ASACIAAoAqwBRw0BIABBADYCtAEgAEEBOgC4AQwBCwsgBy0ADyEBCyAOIBZqIQ4CQAJAAkACQAJAIAFB/wFxDgMBAgMACyAHQQE2AlQgB0GY98cANgJQIAdCATcCXCAHIAdBD2qtQoCAgICgBIQ3A0AgByAHQUBrNgJYIAdBEGoiACAHQdAAahCxBiAAEI4HIQEMBgsgAEEBOgDFUyAOQQhqIA4gACgCaCIBIA5rIgJBACABIAJPG0EHSxshDgwCCyATIBZyRQ0BCyAOIAAoAmgiBEkNAQsLIA5FDQAgDiAAKAJoIgJNBEBBACEBIABBADYCaCACIA5GDQIgAiAOayIEBEAgACgCZCICIAIgDmogBPwKAAALIAAgBDYCaAwCC0EAIA4gAkGEpMcAEOoHAAtBACEBCyAHQfAAaiQAIAEPC0EAIAEgBEGEpMcAEOoHAAtBACACIAFBhKTHABDqBwALzF8EE38SfQh7BH4jAEGQBWsiCiQAIAAoAgghFiAKQQA2AtADIApBADYC1AQgCiAANgKoASAKIAEgAkECdCIMaiIUNgKkASAKIAE2AqABIApB1ANqIQkgCkHUBGohBkEgIQcCQAJAAkACQAJAAn8gAkEhSQRAIAYhCCAJDAELIApBEGogCkHQA2pBfyACQQFrZ3ZBAWoQ9AMgCigCECIIQYGAgIB4RwRAIAgNAkHYlccAQRFB1MzHABDrBwALIAooAtQEIgdBIUkEQCAHIQQgBiEIQSAhByAJDAELIAooAtQDIQQgCSEIIAooAtgDCyEFAkACQCAIIAQgB0kEfyAFIARBAnRqIQUDQCAKQQhqIApBoAFqEMMEIAooAghBAXFFDQIgBSAKKgIMOAIAIAVBBGohBSAHIARBAWoiBEcNAAsgBwUgBAs2AgAgCkEgaiAKQagBaigCADYCACAKIAopAqABNwMYA0AgCiAKQRhqEMMEIAooAgBBAXFFDQICfyAKKALUBCIHQSFJBEAgByEFIAkhCEEgIQcgBgwBCyAKKALUAyEFIAooAtgDIQggCQshBCAKKgIEIRcgBSAHRgR/IApB0ANqENMGIAooAtgDIQggCSEEIAooAtQDBSAFC0ECdCAIaiAXOAIAIAQgBCgCAEEBajYCAAwACwALIAggBDYCAAsgCkEYaiAKQdADakGIAfwKAAACQAJ/IAooApwBIglBIU8EQCAKKAIgIQYgCigCHAwBCyAKQRxqIQYgCQsiCEUEQEMAAACAIRsMAQsgCEEDcSEEAkAgCEEESQRAQQAhB0MAAACAIRsMAQsgCEF8cSEIQQAhB0MAAACAIRsgBiEFA0AgGyAFKgIAkiAFQQRqKgIAkiAFQQhqKgIAkiAFQQxqKgIAkiEbIAVBEGohBSAIIAdBBGoiB0cNAAsLIARFDQAgBiAHQQJ0aiEFA0AgGyAFKgIAkiEbIAVBBGohBSAEQQFrIgQNAAsLIBtDYEKiDRDgCCEnIApBHGoiFSEIIAlBIU8EQCAKKAIcIQkgCigCICEICwJAIAlFDQAgCCEFIAlBAnQiC0EEayIEQQxPBEAgBSAEQQJ2QQFqIgZB/P///wdxIglBAnRqIQUgJ/0TISkgCSEHIAghBANAIAQgBP0AAgAgKf3nAf0LAgAgBEEQaiEEIAdBBGsiBw0ACyAGIAlGDQELIAggC2ohCANAIAUgBSoCACAnlTgCACAFQQRqIgUgCEcNAAsLIAJFBEAgCkIANwOwAUMAAAAAIRsMBQsgCigCHCAKKAKcASIIIAhBIEsiCBshDyAMQQRrQQJ2QQFqIQwgACgCBCELIAAoAgghDSAKKAIgIBUgCBsiCSEIQQAhByABQQRqIgUhBCABIQYDQCAGKAIAIgYgDU8NAiAHIA9PDQMgCyAGQSRsaiIGKgIMIRogBioCCCEYIAYqAhAgCCoCACEZIApB0ANqIAYQpAMgCv0ABNADIin9HwIgGSAt/R8CELQG/RMgKf0fACAZIC39HwAQtAb9IAAgKf0fASAZIC39HwEQtAb9IAEhLSAZIC79HwIQtAb9EyAYIBkgLv0fABC0Bv0gACAaIBkgLv0fARC0Bv0gASEuIAhBBGohCCAEQQRBACAEIgYgFEcbaiEEIAwgB0EBaiIHRw0ACyAKQgA3A7ABIANDAAAAP5QiAyADlCEoQQAhByABIQRDAAAAACEbA0AgDSAEKAIAIghNBEAgCCANQfS/xwAQjAcACyAHIA9PDQQgCyAIQSRsaiIEQRBqIAT9XQII/VYCAAIhKSAJKgIAISQgCkHQA2oiCCAEEJoDIAr9AATQAyEvIAggBCkCABDLAiAoICkgLv3lASIw/R8AIh8gH5QgLyAq/Q0ICQoLCAkKCwgJCgsAAQIDIAr9AATQAyIp/R8AIiYgKf0fAiIdIB2SIiCUIiEgKf0fAyIeICn9HwEiGCAYkiIXlCIikv0TIBggIJQiHCAeICYgJpIiA5QiGZP9IAFDAACAPyAmIAOUIgMgGCAXlCIakpP9IAL95gEiK/0fACIjICOUIC8gKv0NBAUGBwQFBgcEBQYHAAECAyAmIBeUIhggHiAglCIXk/0TQwAAgD8gAyAdICCUIgOSk/0gASAcIBmS/SAC/eYBIiz9HwAiHSAdlCAvICr9DQABAgMAAQIDAAECAwABAgNDAACAPyAaIAOSk/0TIBggF5L9IAEgISAik/0gAv3mASIp/R8AIh4gHpSSkpKSICQgKv0fABC0Bv0TICggMP0fASIhICGUICv9HwEiIiAilCAs/R8BIhwgHJQgKf0fASIZIBmUkpKSkiAkICr9HwEQtAb9IAEgKCAw/R8CIhogGpQgK/0fAiIYIBiUICz9HwIiFyAXlCAp/R8CIgMgA5SSkpKSICQgKv0fAhC0Bv0gAiAfICGUICMgIpQgHSAclCAeIBmUkpKSICQgKv0fAxC0Bv0gAyEqIAlBBGohCUEEQQAgBSIEIBRHGyAEaiEFICEgGpQgIiAYlCAcIBeUIBkgA5SSkpIgJCAbELQGIRsgHyAalCAjIBiUIB0gF5QgHiADlJKSkiAkICUQtAYhJSAHQQFqIgcgDEcNAAsMBAsACyAGIA1B1MDHABCMBwALIAcgD0GUwMcAEIwHAAsgByAPQYTAxwAQjAcACyAKIBs4ArQBIAogJTgCsAEgCiAq/QsEoAEgKv3gASIp/QwAAIB/AACAfwAAgH8AAIB//UQgKf0MAACAfwAAgH8AAIB/AACAf/1D/VD9TSIp/RsAQQFxICn9xwH9GwJBAXFyRSAq/R8CvEH/////B3FB////+wdNcUUEQEG8vMcAQewAQai9xwAQ6wcACwJ9AkACQCAq/R8DvEH/////B3FB////+wdLICW8Qf////8HcUH////7B0tyIBu8Qf////8HcUH////7B0tyRQRAIApB0ANqIApBoAFqEK4BIAr9AASABCErIAoqAvgDIR8gCioC8AMhICAKKgLkAyEjIAoqAvQDIRwgCioC4AMhGiAKKgLoAyEdIAoqAtADQwAAAAAQ4AggCioC1ANDAAAAABDgCCEXIAoqAtgDQwAAAAAQ4AghA/0TIBf9IAH94wEiLP0M////f////3////9/////f/1O/QwAAIB/AACAfwAAgH8AAIB//T8iKf0bAEEBcSAp/ccB/RsCQQFxcg0BIAORIgO8Qf////8HcUH////7B0sNASAsIAP9IAIgA/0gA/0MYEKiDWBCog1gQqINYEKiDf3rASEsICv94QEgK/0fAiIYjCID/SACIAP9IAMgKyAdICAgK/0fASIXlCAcICv9HwAiA5STlCAaIBwgGJQgHyAXlJOUICMgICAYlCAfIAOUk5STkkMAAAAAXRsiKf0fASEZICn9HwAhGCAp/R8CIgNDAAAAAF9FBEAgA0MAAIA/kiEXIBogHJIiA0MAAAAAX0UEQCADIBeSIgNDAAAAPyADkZUiA5QhHiAjICCTIAOUISEgGCAdkyADlCEiIB8gGZMgA5QMBQsgIyAgk0MAAAA/IBcgA5MiA5GVIheUIR4gAyAXlCEhIB8gGZIgF5QhIiAdIBiSIBeUDAQLQwAAgD8gA5MhFyAcIBqTIgNDAAAAAF9FDQIgHyAZk0MAAAA/IBcgA5MiA5GVIheUIR4gHSAYkiAXlCEhICMgIJIgF5QhIiADIBeUDAMLQbi9xwBB7ABBpL7HABDrBwALQfS4xwBB1gBBtL7HABDrBwALIBggHZNDAAAAPyADIBeSIgORlSIXlCEeIB8gGZIgF5QhISADIBeUISIgIyAgkiAXlAsgLP0fACIcICz9HwEiGZRDj8LNPxC3CiEXIBwgLP0fAiIalEOPws0/ELcKIQNDAAB6REO9N4Y1ICcgGSAalEOPws0/ELcKIBcgA5KSQwAAQECVQ+ZAHz8QtwpD2w9JQZSVIgMgA0O9N4Y1XRsiAyADQwAAekReG7wiBEH///8DcSEFIARBgICAgHhxIQgCQCAEQYCAgPwHcSIHQYCAgPwHRgRAIAVBDXYgCEEQdnJBgARBACAFG3JBgPgBciEODAELIAhBEHYhDiAHQYCAgLgETQRAIAdBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIAdBDXYgBUENdmpBgIABaiAOcmohDgwCCyAHQYCAgJgDSQ0BIAVBgICABHIiBEH+ACAHQRd2IghrdiEFIARBHSAIayIIdkEBcQR/IAVBAyAIdEEBayAEcUEAR2oFIAULIA5yIQ4MAQsgDkGA+AFyIQ4LIC39GwAiBEH///8DcSEFIARBgICAgHhxIQggLf0bASELAkAgBEGAgID8B3EiB0GAgID8B0YEQCAFQQ12IAhBEHZyQYAEQQAgBRtyQYD4AXIhEQwBCyAIQRB2IREgB0GAgIC4BE0EQCAHQYCAgMQDTwRAIARBDHYgBEH/3wBxQQBHcSAHQQ12IAVBDXZqQYCAAWogEXJqIREMAgsgB0GAgICYA0kNASAFQYCAgARyIgRB/gAgB0EXdiIIa3YhBSAEQR0gCGsiCHZBAXEEfyAFQQMgCHRBAWsgBHFBAEdqBSAFCyARciERDAELIBFBgPgBciERCyAt/RsCIQYgC0H///8DcSEFIAtBgICAgHhxIQgCQCALQYCAgPwHcSIJQYCAgPwHRwRAIAhBEHYhByAJQYCAgLgETQRAIAlBgICAxANPBEAgC0EMdiALQf/fAHFBAEdxIAlBDXYgBUENdmpBgIABaiAHcmohBwwDCyAJQYCAgJgDSQ0CIAVBgICABHIiBEH+ACAJQRd2IghrdiEFIARBHSAIayIIdkEBcQR/IAVBAyAIdEEBayAEcUEAR2oFIAULIAdyIQcMAgsgB0GA+AFyIQcMAQsgBUENdiAIQRB2ckGABEEAIAUbckGA+AFyIQcLIAZB////A3EhBSAGQYCAgIB4cSEIAkAgBkGAgID8B3EiBEGAgID8B0cEQCAIQRB2IQggBEGAgIC4BE0EQCAEQYCAgMQDTwRAIAZBDHYgBkH/3wBxQQBHcSAEQQ12IAVBDXZqQYCAAWogCHJqIQgMAwsgBEGAgICYA0kNAiAFQYCAgARyIglB/gAgBEEXdiIFa3YhBCAJQR0gBWsiBXZBAXEEfyAEQQMgBXRBAWsgCXFBAEdqBSAECyAIciEIDAILIAhBgPgBciEIDAELIAVBDXYgCEEQdnJBgARBACAFG3JBgPgBciEICyAcEMYFvCIJQf///wNxIQQgCUGAgICAeHEhBQJAIAlBgICA/AdxIgZBgICA/AdGBEAgBEENdiAFQRB2ckGABEEAIAQbckGA+AFyIRAMAQsgBUEQdiEQIAZBgICAuARNBEAgBkGAgIDEA08EQCAJQQx2IAlB/98AcUEAR3EgBkENdiAEQQ12akGAgAFqIBByaiEQDAILIAZBgICAmANJDQEgBEGAgIAEciIJQf4AIAZBF3YiBWt2IQQgCUEdIAVrIgV2QQFxBH8gBEEDIAV0QQFrIAlxQQBHagUgBAsgEHIhEAwBCyAQQYD4AXIhEAsgGRDGBbwiBkH///8DcSEEIAZBgICAgHhxIQUCQCAGQYCAgPwHcSILQYCAgPwHRwRAIAVBEHYhCSALQYCAgLgETQRAIAtBgICAxANPBEAgBkEMdiAGQf/fAHFBAEdxIAtBDXYgBEENdmpBgIABaiAJcmohCQwDCyALQYCAgJgDSQ0CIARBgICABHIiBkH+ACALQRd2IgVrdiEEIAZBHSAFayIFdkEBcQR/IARBAyAFdEEBayAGcUEAR2oFIAQLIAlyIQkMAgsgCUGA+AFyIQkMAQsgBEENdiAFQRB2ckGABEEAIAQbckGA+AFyIQkLIBoQxgW8IgtB////A3EhBCALQYCAgIB4cSEFAkAgC0GAgID8B3EiDEGAgID8B0cEQCAFQRB2IQYgDEGAgIC4BE0EQCAMQYCAgMQDTwRAIAtBDHYgC0H/3wBxQQBHcSAMQQ12IARBDXZqQYCAAWogBnJqIQYMAwsgDEGAgICYA0kNAiAEQYCAgARyIgtB/gAgDEEXdiIFa3YhBCALQR0gBWsiBXZBAXEEfyAEQQMgBXRBAWsgC3FBAEdqBSAECyAGciEGDAILIAZBgPgBciEGDAELIARBDXYgBUEQdnJBgARBACAEG3JBgPgBciEGC7wiC0H///8DcSEEICK8IQ8CfiAEQQ12IhIgC0GAgICAeHEiBUEQdnJBgARBACAEG3JBgPgBcq0gC0GAgID8B3EiDUGAgID8B0YNABogBUEQdiEMAkAgDUGAgIC4BE0EQCASIA1BDXZqQYCAAWogDHKtIAtBDHYgC0H/3wBxQQBHca18IA1BgICAxANPDQIaIA1BgICAmANJDQEgBEGAgIAEciILQf4AIA1BF3YiBWt2IQQgC0EdIAVrIgV2QQFxBH8gBEEDIAV0QQFrIAtxQQBHagUgBAsgDHKtDAILIAxBgPgBcq0MAQsgDK0LITEgIbwhEiAPQf///wNxIQQgD0GAgICAeHEhBQJ+IA9BgICA/AdxIg1BgICA/AdHBEAgBUEQdiEMIA1BgICAuARNBEAgDUENdiAEQQ12akGAgAFqIAxyrSAPQQx2IA9B/98AcUEAR3GtfCANQYCAgMQDTw0CGiANQYCAgJgDTwRAIARBgICABHIiC0H+ACANQRd2IgVrdiEEIAtBHSAFayIFdkEBcQR/IARBAyAFdEEBayALcUEAR2oFIAQLIAxyrQwDCyAMrQwCCyAMQYD4AXKtDAELIAVBEHYgBEENdnJBgARBACAEG3JBgPgBcq0LITIgHrwhDyASQf///wNxIQQgEkGAgICAeHEhBQJ+IBJBgICA/AdxIg1BgICA/AdHBEAgBUEQdiEMIA1BgICAuARNBEAgDUENdiAEQQ12akGAgAFqIAxyrSASQQx2IBJB/98AcUEAR3GtfCANQYCAgMQDTw0CGiANQYCAgJgDTwRAIARBgICABHIiC0H+ACANQRd2IgVrdiEEIAtBHSAFayIFdkEBcQR/IARBAyAFdEEBayALcUEAR2oFIAQLIAxyrQwDCyAMrQwCCyAMQYD4AXKtDAELIAVBEHYgBEENdnJBgARBACAEG3JBgPgBcq0LITMgD0H///8DcSEEIA9BgICAgHhxIQUCfiAPQYCAgPwHcSINQYCAgPwHRwRAIAVBEHYhDCANQYCAgLgETQRAIA1BDXYgBEENdmpBgIABaiAMcq0gD0EMdiAPQf/fAHFBAEdxrXwgDUGAgIDEA08NAhogDUGAgICYA08EQCAEQYCAgARyIgtB/gAgDUEXdiIFa3YhBCALQR0gBWsiBXZBAXEEfyAEQQMgBXRBAWsgC3FBAEdqBSAECyAMcq0MAwsgDK0MAgsgDEGA+AFyrQwBCyAFQRB2IARBDXZyQYAEQQAgBBtyQYD4AXKtCyE0IAAoAggiCyAAKAIARgRAIwBBIGsiDSQAAkAgACgCACIMQfG4nA5LBH9BAAVBBCAMQQF0IgUgBUEETRsiBEEkbCEFIA0gDAR/IA0gDEEkbDYCHCANIAAoAgQ2AhRBBAVBAAs2AhggDUEIakEEIAUgDUEUahCFByANKAIIQQFHDQEgDSgCECEAIA0oAgwLIABBxL7HABCTCQALIA0oAgwhBSAAIAQ2AgAgACAFNgIEIA1BIGokAAsgACgCBCALQSRsaiIFIC79WgIQAiAFIC79WwIIACAFIAY7ASAgBSAJOwEeIAUgEDsBHCAFIAg7ARogBSAHOwEYIAUgETsBFiAFIA47ARQgBSAxQv//A4MgMkIQhkKAgPz/D4MgM0IghkKAgICA8P8/gyA0QjCGhISENwIAIAAgC0EBajYCCCAKQdADaiABIBQQmQMgACgCFCIEIAAoAgxGBEAjAEEgayIGJAACQCAAQQxqIgkoAgAiB0Gq1aoVSwR/QQAFQQQgB0EBdCIIIAhBBE0bIgVBGGwhCCAGIAcEfyAGIAdBGGw2AhwgBiAJKAIENgIUQQQFQQALNgIYIAZBCGpBBCAIIAZBFGoQhQcgBigCCEEBRw0BIAYoAhAhCSAGKAIMCyAJQdS+xwAQkwkACyAGKAIMIQggCSAFNgIAIAkgCDYCBCAGQSBqJAALIAAoAhAgBEEYbGoiCCAK/QAC0AP9CwIAIAhBEGogCkHgA2opAgA3AgAgACAEQQFqNgIUAkAgACgCPEUNACAKQeABaiIS/QwAAAAAAAAAAAAAAAAAAAAA/QsEACAKQdABav0MAAAAAAAAAAAAAAAAAAAAAP0LBAAgCv0MAAAAAAAAAAAAAAAAAAAAAP0LBMABAkAgAkUEQCAAKAIgIRAMAQsgCigCICAVIAooApwBIgVBIEsiCBshDyAKKAIcIAUgCBshESABQQRqIQcgACgCHCENIAAoAiAhEEEBIQggASEJQQAhBQJAA0AgBSARSQRAIAkoAgAiBiAQTw0CIAchCSAIIQQgDyAFQQJ0aioCACEDIA0gBkESbGohBUEAIQgDQCAFQQJqLwEAIQ4CfyAFLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQsgB0GAgAJxIQYgB0GA+AFxIgdBgPgBRgRAIAZBEHQiB0GAgID8B3IgC0UNARogByALQQ10ckGAgID+B3IMAQsgBkEQdCIGIAdBDXRBgICA/ABxIAtBDXRyQYCAgMADanIgBw0AGiALIAtnQRBrIgdB//8DcUEIanRB////A3EgBkGAgIDYA3IgB0EXdGtyCyEMIAVBBGovAQAhEwJ/IA5B//8BcQRAIA5B/wdxIQsgDkGAgAJxIQYgDkGA+AFxIgdBgPgBRwRAIAZBEHQiBiAHQQ10QYCAgPwAcSALQQ10ckGAgIDAA2pyIAcNAhogCyALZ0EQayIHQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAdBF3RrcgwCCyAGQRB0IgcgC0ENdHJBgICA/gdyIAsNARogB0GAgID8B3IMAQsgDkEQdAshCyAKQdADaiAIagJ/IBNB//8BcQRAIBNB/wdxIQ4gE0GAgAJxIQYgE0GA+AFxIgdBgPgBRwRAIAZBEHQiBiAHQQ10QYCAgPwAcSAOQQ10ckGAgIDAA2pyIAcNAhogDiAOZ0EQayIHQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAdBF3RrcgwCCyAGQRB0IgcgDkENdHJBgICA/gdyIA4NARogB0GAgID8B3IMAQsgE0EQdAu+IAMgCkHAAWogCGoiB0EIaioCABC0Bv0TIAy+IAMgByoCABC0Bv0gACALviADIAdBBGoqAgAQtAb9IAH9CwQAIAVBBmohBSAIQRBqIghBMEcNAAsgEiAKQfADav0ABAD9CwQAIApB0AFqIApB4ANq/QAEAP0LBAAgCiAK/QAE0AP9CwTAASAEIAkgFEciBmohCCAJQQRBACAGG2ohByAEIQUgBg0BDAMLCyAFIBFB1L/HABCMBwALIAYgEEHkv8cAEIwHAAsgCkHAAWohBUEAIQgDQCAFKAIAIgZB////A3EhByAGQYCAgIB4cSEEIAVBBGooAgAhDwJAIAZBgICA/AdxIgtBgICA/AdGBEAgB0ENdiAEQRB2ckGABEEAIAcbckGA+AFyIQkMAQsgBEEQdiEJIAtBgICAuARNBEAgC0GAgIDEA08EQCAGQQx2IAZB/98AcUEAR3EgC0ENdiAHQQ12akGAgAFqIAlyaiEJDAILIAtBgICAmANJDQEgB0GAgIAEciIGQf4AIAtBF3YiBGt2IQcgBkEdIARrIgR2QQFxBH8gB0EDIAR0QQFrIAZxQQBHagUgBwsgCXIhCQwBCyAJQYD4AXIhCQsgBUEIaigCACENIA9B////A3EhByAPQYCAgIB4cSEEAkAgD0GAgID8B3EiDEGAgID8B0cEQCAEQRB2IQYgDEGAgIC4BE0EQCAMQYCAgMQDTwRAIA9BDHYgD0H/3wBxQQBHcSAMQQ12IAdBDXZqQYCAAWogBnJqIQYMAwsgDEGAgICYA0kNAiAHQYCAgARyIgtB/gAgDEEXdiIEa3YhByALQR0gBGsiBHZBAXEEfyAHQQMgBHRBAWsgC3FBAEdqBSAHCyAGciEGDAILIAZBgPgBciEGDAELIAdBDXYgBEEQdnJBgARBACAHG3JBgPgBciEGCyANQf///wNxIQcgDUGAgICAeHEhBAJAIA1BgICA/AdxIgxBgICA/AdHBEAgBEEQdiEOIAxBgICAuARNBEAgDEGAgIDEA08EQCANQQx2IA1B/98AcUEAR3EgDEENdiAHQQ12akGAgAFqIA5yaiEODAMLIAxBgICAmANJDQIgB0GAgIAEciILQf4AIAxBF3YiBGt2IQcgC0EdIARrIgR2QQFxBH8gB0EDIAR0QQFrIAtxQQBHagUgBwsgDnIhDgwCCyAOQYD4AXIhDgwBCyAHQQ12IARBEHZyQYAEQQAgBxtyQYD4AXIhDgsgCkHQA2ogCGoiBCAJOwEAIARBBGogDjsBACAEQQJqIAY7AQAgBUEQaiEFIAhBBmoiCEESRw0ACyAKQdACaiIEIApB4ANqLwEAOwEAIAogCv0AAdAD/QsDwAIgACgCGCAQRgRAIwBBIGsiBiQAAkAgAEEYaiIJKAIAIgdB4/G4HEsEf0EABUEEIAdBAXQiCCAIQQRNGyIFQRJsIQggBiAHBH8gBiAHQRJsNgIcIAYgCSgCBDYCFEECBUEACzYCGCAGQQhqQQIgCCAGQRRqEIUHIAYoAghBAUcNASAGKAIQIQkgBigCDAsgCUHkvscAEJMJAAsgBigCDCEIIAkgBTYCACAJIAg2AgQgBkEgaiQACyAAKAIcIBBBEmxqIgggCv0AA8AC/QsBACAIQRBqIAQvAQA7AQAgACAQQQFqNgIgIAAoAjxBAU0NACAKQfABakEAQdAA/AsAAkAgAkUEQCAAKAIsIRAMAQsgCigCICAVIAooApwBIgVBIEsiCBshEiAKKAIcIAUgCBshESABQQRqIQcgACgCKCEPIAAoAiwhEEEBIQggASEJQQAhBQJAA0AgBSARSQRAIAkoAgAiCSAQTw0CIAghBCASIAVBAnRqKgIAIQMgDyAJQR5saiEFQQAhCANAIAVBAmovAQAhDAJ/IAUvAQAiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhCyAJQYCAAnEhBiAJQYD4AXEiCUGA+AFGBEAgBkEQdCIJQYCAgPwHciALRQ0BGiAJIAtBDXRyQYCAgP4HcgwBCyAGQRB0IgYgCUENdEGAgID8AHEgC0ENdHJBgICAwANqciAJDQAaIAsgC2dBEGsiCUH//wNxQQhqdEH///8DcSAGQYCAgNgDciAJQRd0a3ILIQ0gBUEEai8BACETAn8gDEH//wFxBEAgDEH/B3EhCyAMQYCAAnEhBiAMQYD4AXEiCUGA+AFHBEAgBkEQdCIGIAlBDXRBgICA/ABxIAtBDXRyQYCAgMADanIgCQ0CGiALIAtnQRBrIglB//8DcUEIanRB////A3EgBkGAgIDYA3IgCUEXdGtyDAILIAZBEHQiCSALQQ10ckGAgID+B3IgCw0BGiAJQYCAgPwHcgwBCyAMQRB0CyEMIApB0ANqIgsgCGoCfyATQf//AXEEQCATQf8HcSEOIBNBgIACcSEGIBNBgPgBcSIJQYD4AUcEQCAGQRB0IgYgCUENdEGAgID8AHEgDkENdHJBgICAwANqciAJDQIaIA4gDmdBEGsiCUH//wNxQQhqdEH///8DcSAGQYCAgNgDciAJQRd0a3IMAgsgBkEQdCIJIA5BDXRyQYCAgP4HciAODQEaIAlBgICA/AdyDAELIBNBEHQLviADIApB8AFqIgkgCGoiBkEIaioCABC0Bv0TIA2+IAMgBioCABC0Bv0gACAMviADIAZBBGoqAgAQtAb9IAH9CwQAIAVBBmohBSAIQRBqIghB0ABHDQALIAkgC0HQAPwKAAAgBCAHIgkgFEciBmohCCAHQQRBACAGG2ohByAEIQUgBg0BDAMLCyAFIBFBtL/HABCMBwALIAkgEEHEv8cAEIwHAAsgCkHwAWohBUEAIQgDQCAFKAIAIgZB////A3EhByAGQYCAgIB4cSEEIAVBBGooAgAhDwJAIAZBgICA/AdxIgtBgICA/AdGBEAgB0ENdiAEQRB2ckGABEEAIAcbckGA+AFyIQkMAQsgBEEQdiEJIAtBgICAuARNBEAgC0GAgIDEA08EQCAGQQx2IAZB/98AcUEAR3EgC0ENdiAHQQ12akGAgAFqIAlyaiEJDAILIAtBgICAmANJDQEgB0GAgIAEciIGQf4AIAtBF3YiBGt2IQcgBkEdIARrIgR2QQFxBH8gB0EDIAR0QQFrIAZxQQBHagUgBwsgCXIhCQwBCyAJQYD4AXIhCQsgBUEIaigCACENIA9B////A3EhByAPQYCAgIB4cSEEAkAgD0GAgID8B3EiDEGAgID8B0cEQCAEQRB2IQYgDEGAgIC4BE0EQCAMQYCAgMQDTwRAIA9BDHYgD0H/3wBxQQBHcSAMQQ12IAdBDXZqQYCAAWogBnJqIQYMAwsgDEGAgICYA0kNAiAHQYCAgARyIgtB/gAgDEEXdiIEa3YhByALQR0gBGsiBHZBAXEEfyAHQQMgBHRBAWsgC3FBAEdqBSAHCyAGciEGDAILIAZBgPgBciEGDAELIAdBDXYgBEEQdnJBgARBACAHG3JBgPgBciEGCyANQf///wNxIQcgDUGAgICAeHEhBAJAIA1BgICA/AdxIgxBgICA/AdHBEAgBEEQdiEOIAxBgICAuARNBEAgDEGAgIDEA08EQCANQQx2IA1B/98AcUEAR3EgDEENdiAHQQ12akGAgAFqIA5yaiEODAMLIAxBgICAmANJDQIgB0GAgIAEciILQf4AIAxBF3YiBGt2IQcgC0EdIARrIgR2QQFxBH8gB0EDIAR0QQFrIAtxQQBHagUgBwsgDnIhDgwCCyAOQYD4AXIhDgwBCyAHQQ12IARBEHZyQYAEQQAgBxtyQYD4AXIhDgsgCkHQA2ogCGoiBCAJOwEAIARBBGogDjsBACAEQQJqIAY7AQAgBUEQaiEFIAhBBmoiCEEeRw0ACyAKQdYCaiIHIApB5gNqKQEANwEAIApB0AJqIgQgCkHgA2opAQA3AwAgCiAK/QAB0AP9CwPAAiAAKAIkIBBGBEAjAEEgayILJAACQCAAQSRqIgYoAgAiCUGixIgRSwR/QQAFQQQgCUEBdCIIIAhBBE0bIgVBHmwhCCALIAkEfyALIAlBHmw2AhwgCyAGKAIENgIUQQIFQQALNgIYIAtBCGpBAiAIIAtBFGoQhQcgCygCCEEBRw0BIAsoAhAhBiALKAIMCyAGQfS+xwAQkwkACyALKAIMIQggBiAFNgIAIAYgCDYCBCALQSBqJAALIAAoAiggEEEebGoiCCAK/QADwAL9CwEAIAhBFmogBykBADcBACAIQRBqIAQpAwA3AQAgACAQQQFqNgIsIAAoAjxBAk0NACAKQeACakEAQfAA/AsAAkAgAkUEQCAAKAI4IRAMAQsgCigCICAVIAooApwBIghBIEsiAhshDSAKKAIcIAggAhshDyABQQRqIQcgACgCNCEMIAAoAjghEEEBIQhBACEFAkADQCAFIA9JBEAgASgCACIBIBBPDQIgCCECIA0gBUECdGoqAgAhAyAMIAFBKmxqIQVBACEIA0AgBUECai8BACEGAn8gBS8BACIBQf//AXFFBEAgAUEQdAwBCyABQf8HcSEJIAFBgIACcSEEIAFBgPgBcSIBQYD4AUYEQCAEQRB0IgFBgICA/AdyIAlFDQEaIAEgCUENdHJBgICA/gdyDAELIARBEHQiBCABQQ10QYCAgPwAcSAJQQ10ckGAgIDAA2pyIAENABogCSAJZ0EQayIBQf//A3FBCGp0Qf///wNxIARBgICA2ANyIAFBF3RrcgshCyAFQQRqLwEAIRECfyAGQf//AXEEQCAGQf8HcSEJIAZBgIACcSEEIAZBgPgBcSIBQYD4AUcEQCAEQRB0IgQgAUENdEGAgID8AHEgCUENdHJBgICAwANqciABDQIaIAkgCWdBEGsiAUH//wNxQQhqdEH///8DcSAEQYCAgNgDciABQRd0a3IMAgsgBEEQdCIBIAlBDXRyQYCAgP4HciAJDQEaIAFBgICA/AdyDAELIAZBEHQLIQYgCkHQA2oiCSAIagJ/IBFB//8BcQRAIBFB/wdxIRIgEUGAgAJxIQQgEUGA+AFxIgFBgPgBRwRAIARBEHQiBCABQQ10QYCAgPwAcSASQQ10ckGAgIDAA2pyIAENAhogEiASZ0EQayIBQf//A3FBCGp0Qf///wNxIARBgICA2ANyIAFBF3RrcgwCCyAEQRB0IgEgEkENdHJBgICA/gdyIBINARogAUGAgID8B3IMAQsgEUEQdAu+IAMgCkHgAmoiASAIaiIEQQhqKgIAELQG/RMgC74gAyAEKgIAELQG/SAAIAa+IAMgBEEEaioCABC0Bv0gAf0LBAAgBUEGaiEFIAhBEGoiCEHwAEcNAAsgASAJQfAA/AoAACACIAciASAURyIEaiEIIAdBBEEAIAQbaiEHIAIhBSAEDQEMAwsLIAUgD0GUv8cAEIwHAAsgASAQQaS/xwAQjAcACyAKQeACaiEFQQAhCANAIAUoAgAiBEH///8DcSECIARBgICAgHhxIQEgBUEEaigCACEMAkAgBEGAgID8B3EiB0GAgID8B0YEQCACQQ12IAFBEHZyQYAEQQAgAhtyQYD4AXIhCQwBCyABQRB2IQkgB0GAgIC4BE0EQCAHQYCAgMQDTwRAIARBDHYgBEH/3wBxQQBHcSAHQQ12IAJBDXZqQYCAAWogCXJqIQkMAgsgB0GAgICYA0kNASACQYCAgARyIgRB/gAgB0EXdiIBa3YhAiAEQR0gAWsiAXZBAXEEfyACQQMgAXRBAWsgBHFBAEdqBSACCyAJciEJDAELIAlBgPgBciEJCyAFQQhqKAIAIQsgDEH///8DcSECIAxBgICAgHhxIQECQCAMQYCAgPwHcSIHQYCAgPwHRwRAIAFBEHYhBiAHQYCAgLgETQRAIAdBgICAxANPBEAgDEEMdiAMQf/fAHFBAEdxIAdBDXYgAkENdmpBgIABaiAGcmohBgwDCyAHQYCAgJgDSQ0CIAJBgICABHIiBEH+ACAHQRd2IgFrdiECIARBHSABayIBdkEBcQR/IAJBAyABdEEBayAEcUEAR2oFIAILIAZyIQYMAgsgBkGA+AFyIQYMAQsgAkENdiABQRB2ckGABEEAIAIbckGA+AFyIQYLIAtB////A3EhAiALQYCAgIB4cSEBAkAgC0GAgID8B3EiB0GAgID8B0cEQCABQRB2IQ4gB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAtBDHYgC0H/3wBxQQBHcSAHQQ12IAJBDXZqQYCAAWogDnJqIQ4MAwsgB0GAgICYA0kNAiACQYCAgARyIgRB/gAgB0EXdiIBa3YhAiAEQR0gAWsiAXZBAXEEfyACQQMgAXRBAWsgBHFBAEdqBSACCyAOciEODAILIA5BgPgBciEODAELIAJBDXYgAUEQdnJBgARBACACG3JBgPgBciEOCyAKQeYEaiAIaiIBIAk7AQAgAUEEaiAOOwEAIAFBAmogBjsBACAFQRBqIQUgCEEGaiIIQSpHDQALIAAoAjAgEEYEQCMAQSBrIgQkAAJAIABBMGoiBSgCACIIQeGwmAxLBH9BAAVBBCAIQQF0IgEgAUEETRsiAkEqbCEBIAQgCAR/IAQgCEEqbDYCHCAEIAUoAgQ2AhRBAgVBAAs2AhggBEEIakECIAEgBEEUahCFByAEKAIIQQFHDQEgBCgCECEFIAQoAgwLIAVBhL/HABCTCQALIAQoAgwhASAFIAI2AgAgBSABNgIEIARBIGokAAsgACgCNCAQQSpsaiIBIAr9AAHmBP0LAQAgAUEoaiAKQY4Fai8BADsBACABQSBqIApBhgVqKQEANwEAIAFBEGogCkH2BGr9AAEA/QsBACAAIBBBAWo2AjgLAkACQCAKKAKcASIBQSFPBEAgCigCICIIQQRrKAIAIgBBeHEiAiABQQJ0IgFBBEEIIABBA3EiABtqSQ0BIABBACACIAFBJ2pLGw0CIAgQogILIApBkAVqJAAgFg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9BdAxh/BH0BfiMAQfAAayIJJAACQAJAAkACQAJAIAAtAKhURQRAIAlB0ABqIABBxAFqELgEIAktAFAEQCAJKAJUIQEMAwsgCS0AUUEBRw0BIABBAToAqFQLIAAoAswBIgNFDQAgAEGgAmohFSAJQTxqrUKAgICAEIQhHSAAQdwBaiEWIABB6AFqIRIgAEH0AWohFyAAQYACaiEYA0ACQCAAKALYASIFIAAoAqRUIgFrIgJBACACIAVNG0GAgARPBEAgASECDAELIAEgAUGAgAJrIgJBACABIAJPGyILayECIAEgC0YEQCAAIAI2AqRUDAELIAEgBU0EQCACBEAgACgC1AEiASABIAtqIAL8CgAACyAAKALMASEDIAAgAjYCpFQMAQtBACABIAVBzNXBABDqBwALAkACQCADIA1PBEAgCUHQAGogFSAAKALIASANaiADIA1rIAAoAtQBIAAoAtgBIAJBBhBEIAkgCS0AVCIBOgAPIAkoAlAhFCAJKAJYIhFFDQIgACgCpFQiAyARaiICIANPIAIgACgC2AEiBU1xDQEgAyACIAVB3NXBABDqBwALIA0gAyADQezVwQAQ6gcACyAAKALUASEFIAAoAtwBIAAoAuQBIgJrIBFJBEAgFiACIBFBAUEBEKQFIAAoAuQBIQILIBEEQCAAKALgASACaiADIAVqIBH8CgAACyAAIAIgEWoiBTYC5AEgACAAKAKkVCARajYCpFQCQAJAIAAoAugBQYCAgIB4RgRAIAVBEE8EQCAJIAAoAuABIgIoAAAiAzYCHCADQc6OzYIFRwRAIAlBATYCZCAJQczIwQA2AmAgCUEBNgJUIAlB1M7BADYCUCAJQQE2AlwgCSAJQRxqrUKAgICAkASENwNAIAkgCUFAazYCWCAJQSBqIgAgCUHQAGoQsQYgABCOByEBDAgLIAkgAigABCILNgIsIAtBBGtBfUkNAiAAQQA2AuQBIAItAA4hBCACLQANIQcgAi0ADCEDIAIoAAghCCAFQRBrIgUEQCAFBEAgAiACQRBqIAX8CgAACyAAIAU2AuQBCyAJIAM2AjwCQCADQQNNBEBBgIDAABBxIgINAQALIAlBATYCVCAJQaDtxwA2AlAgCUIBNwJcIAkgHTcDaCAJIAlB6ABqNgJYIAlBQGsiACAJQdAAahCxBiAAEJAHIQEMCAsgACAEOgCeAiAAIAc6AJ0CIABBADoAnAIgAEEANgKYAiAAIAM2ApQCIAAgCDYCkAIgACALNgKMAiAAQQA2AogCIABCgICAgMAANwKAAiAAQgI3AvgBIABCADcC8AEgACACNgLsASAAQYCAEDYC6AEgCSAEQYABcUEHdjoAWCAJIAM2AlQgCSAINgJQIAAgCUHQAGoQ4QMLIAAoAugBQYCAgIB4Rg0DCwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AnAJBAWsOCQ0MCwoAAQYEEgILQQkhD0EGIQEgACgClAIOBAQIBwYCCyAAQQlBByAALACeAkEAThs6AJwCDA4LIAAoAuQBQQZBCSAAKAKMAiIDQQFGGyIMbiICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDRALQYCABCALIAtBgIAETxsiBEEDbCICIAAoAvABIgFLBH8gAiABayICIAAoAugBIAFrSwRAIBIgASACQQRBBBCkBSAAKALwASEBCyAAKALsASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiCARAIANBACAI/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYC8AEgACgCjAIFIAMLQQFHDQsgC0UNDEEAIQhBACEBQQAhAkEAIQMDQCABQQJqIQcgACgC5AEiBSABQQFqTQRAIAEgByAFQazPwQAQ6gcACwJ/IAAoAuABIAFqIgVBAWotAABBCHQiBiAFLQAAciIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSEFIAZBgIACcSEKIAZBgPgBcSIGQYD4AUYEQCAKQRB0IgZBgICA/AdyIAVFDQEaIAVBDXQgBnJBgICA/gdyDAELIApBEHQiCiAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAYNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIApBgICA2ANyIAVBF3RrcgshBQJ/AkACQCAAKALwASIGIANLBEAgACgC7AEgAmogBTYCACABQQRqIgYgACgC5AEiBUsNASAAKALgASABaiIFQQNqLQAAQQh0IgcgBUECai0AAHIiBUH//wFxRQRAIAVBEHQMBAsgBUH/B3EhBSAHQYCAAnEhCiAHQYD4AXEiB0GA+AFGBEAgCkEQdCIHQYCAgPwHciAFRQ0EGiAFQQ10IAdyQYCAgP4HcgwECyAKQRB0IQogB0UNAiAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2ogCnIMAwsgAyAGQdzOwQAQjAcACyAHIAYgBUGcz8EAEOoHAAsgBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIApBgICA2ANyIAVBF3RrcgshBQJ/AkACQCADQQFqIgcgACgC8AEiCkkEQCAAKALsASACakEEaiAFNgIAIAFBBmoiBSAAKALkASIHSw0BIAAoAuABIAFqIgFBBWotAABBCHQiByABQQRqLQAAciIBQf//AXFFBEAgAUEQdAwECyABQf8HcSEBIAdBgIACcSEGIAdBgPgBcSIHQYD4AUYEQCAGQRB0IgdBgICA/AdyIAFFDQQaIAFBDXQgB3JBgICA/gdyDAQLIAZBEHQhBiAHRQ0CIAdBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAGcgwDCyAHIApB7M7BABCMBwALIAYgBSAHQYzPwQAQ6gcACyABIAFnQRBrIgFB//8DcUEIanRB////A3EgBkGAgIDYA3IgAUEXdGtyCyEBIANBAmoiByAAKALwASIGSQRAIAAoAuwBIAJqQQhqIAE2AgAgAkEMaiECIANBA2ohAyAFIQEgCEEBaiIIIARJDQEMDgsLIAcgBkH8zsEAEIwHAAtB7NPBABCBCAALIAAoAuQBIgFBAnYiAiAAKAKQAiAAKAKYAmsiBEkEQCACIQQgAUGAgBBJDQ4LQYCABCAEIARBgIAETxsiAiAAKAKIAiIBSwRAIAIgAWsiAyAAKAKAAiABa0sEQCAYIAEgA0EEQQQQpAUgACgCiAIhAQsgACgChAIiCyABQQJ0aiEFIANBAk8EfyADQQJ0QQRrIggEQCAFQQAgCPwLAAsgASADaiIDQQFrIQEgCyADQQJ0akEEawUgBQtBADYCACAAIAFBAWoiATYCiAILIAQEQEEAIQFBACEDAkADQCAAKALkASIFIAFBA2pNBEAgASABQQRqIAVBvNXBABDqBwALIAAoAogCIgUgA0sEQCAAKAKEAiABaiAAKALgASABaigAADYCACABQQRqIQEgAiADQQFqIgNGDQIMAQsLIAMgBUGs1cEAEIwHAAsgACgCiAIhAQsgACAAKAKYAiACIAAoAoQCIAEQtwQCQAJAAkAgACgC5AEiAyACQQJ0IgFPBEAgAEEANgLkASADIAFrIQUgBEUNASABIANGDQMgBUUNAiAAKALgASIDIAEgA2ogBfwKAAAMAgsMFQsgASADRg0BCyAAIAU2AuQBCyAAIAAoApgCIAJqIgI2ApgCIAIgACgCkAJHDQsgAEEANgKYAkEJIQELIAAgAToAnAIMCgsgACgC5AEiAUEBdiICIAAoApACIAAoApgCayIESQRAIAIhBCABQYCACEkNDAtBgIAEIAQgBEGAgARPGyICIAAoAvwBIgFLBEAgAiABayIDIAAoAvQBIAFrSwRAIBcgASADQQJBAhCkBSAAKAL8ASEBCyAAKAL4ASILIAFBAXRqIQUgA0ECTwR/IANBAXRBAmsiCARAIAVBACAI/AsACyABIANqIgNBAWshASALIANBAXRqQQJrBSAFC0EAOwEAIAAgAUEBaiIBNgL8AQsgBARAQQAhA0ECIQECQANAIAAoAuQBIgUgAUkEQCABQQJrIAEgBUGc1cEAEOoHAAsgACgC/AEiBSADSwRAIAAoAvgBIAFqQQJrIAAoAuABIAFqQQJrLwAAOwEAIAFBAmohASACIANBAWoiA0YNAgwBCwsgAyAFQYzVwQAQjAcACyAAKAL8ASEBCyAAIAAoApgCIAIgACgC+AEgARC2BAJAAkACQCAAKALkASIDIAJBAXQiAU8EQCAAQQA2AuQBIAMgAWshBSAERQ0BIAEgA0YNAyAFRQ0CIAAoAuABIgMgASADaiAF/AoAAAwCCwwTCyABIANGDQELIAAgBTYC5AELIAAgACgCmAIgAmoiAjYCmAIgAiAAKAKQAkcNCSAAQQA2ApgCIABBCDoAnAIMCQtBLSEPDAELQRghDwsgACgC5AEgD24iAiAAKAKQAiAAKAKYAmsiC0kEQCACIgtBgIAESQ0JC0GAgAQgCyALQYCABE8bIg4gD2wiDCAAKALwASIBSwRAIAwgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELIA5BCWwhEwJAIAsEQCAOQeAAbCEHIA5BGGwhCEEBIQFBACEQQQAhBQJAA0AgBSEEIAEhBSAEIA9sIgEgACgC5AEiAk8NAwJAAkACQAJAIARBCWwiAyAAKALwASICTw0AIAAoAuwBIANBAnRqIAAoAuABIAFqLQAAs0MAAADDkkMAAAA8lDgCACABQQNqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EDaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQZqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EGaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQFqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EBaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQRqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EEaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQdqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EHaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQJqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0ECaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQVqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EFaiIKIAAoAvABIgJPBEAgCiEDDAELIAAoAuwBIApBAnRqIAAoAuABIAZqLQAAs0MAAADDkkMAAAA8lDgCACABQQhqIgYgACgC5AEiAk8EQCAGIQEMCAsgA0EIaiIDIAAoAvABIgJPDQAgACgC7AEgA0ECdGogACgC4AEgBmotAACzQwAAAMOSQwAAADyUOAIAIAAoApQCQQFLDQEMAgsgAyACQfzUwQAQjAcACwJAAkAgAUEJaiIDIAAoAuQBIgZPDQAgBEEPbCATaiICIAAoAvABIgZPDQMgACgC7AEgAkECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDGoiAyAAKALkASIGTw0AIAJBA2oiBCAAKALwASIGTwRAIAQhAgwECyAAKALsASAEQQJ0aiAAKALgASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEPaiIDIAAoAuQBIgZPDQAgAkEGaiIEIAAoAvABIgZPBEAgBCECDAQLIAAoAuwBIARBAnRqIAAoAuABIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRJqIgMgACgC5AEiBk8NACACQQlqIgQgACgC8AEiBk8EQCAEIQIMBAsgACgC7AEgBEECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFWoiAyAAKALkASIGTw0AIAJBDGoiBCAAKALwASIGTwRAIAQhAgwECyAAKALsASAEQQJ0aiAAKALgASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEKaiIDIAAoAuQBIgZPDQAgAkEBaiIEIAAoAvABIgZPBEAgBCECDAQLIAAoAuwBIARBAnRqIAAoAuABIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ1qIgMgACgC5AEiBk8NACACQQRqIgQgACgC8AEiBk8EQCAEIQIMBAsgACgC7AEgBEECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEGoiAyAAKALkASIGTw0AIAJBB2oiBCAAKALwASIGTwRAIAQhAgwECyAAKALsASAEQQJ0aiAAKALgASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUETaiIDIAAoAuQBIgZPDQAgAkEKaiIEIAAoAvABIgZPBEAgBCECDAQLIAAoAuwBIARBAnRqIAAoAuABIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRZqIgMgACgC5AEiBk8NACACQQ1qIgQgACgC8AEiBk8EQCAEIQIMBAsgACgC7AEgBEECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBC2oiAyAAKALkASIGTw0AIAJBAmoiBCAAKALwASIGTwRAIAQhAgwECyAAKALsASAEQQJ0aiAAKALgASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEOaiIDIAAoAuQBIgZPDQAgAkEFaiIEIAAoAvABIgZPBEAgBCECDAQLIAAoAuwBIARBAnRqIAAoAuABIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRFqIgMgACgC5AEiBk8NACACQQhqIgQgACgC8AEiBk8EQCAEIQIMBAsgACgC7AEgBEECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFGoiAyAAKALkASIGTw0AIAJBC2oiBCAAKALwASIGTwRAIAQhAgwECyAAKALsASAEQQJ0aiAAKALgASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEXaiIDIAAoAuQBIgZPDQAgAkEOaiICIAAoAvABIgZPDQMgACgC7AEgAkECdGogACgC4AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAAoApQCQQJNDQJBACEGIAchAwwBCyADIAZBzNTBABCMBwALAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQANAIAAoAuQBIgIgBiAQaiIBQRhqSwRAIAYgCGoiBCAAKALwASICTw0PIAAoAuwBIANqIAEgACgC4AFqQRhqLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBG2pNDQcgACgC8AEiAiAEQQNqTQ0OIAAoAuwBIANqQQxqIAEgACgC4AFqQRtqLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBHmpNDQYgACgC8AEiAiAEQQZqTQ0NIAAoAuwBIANqQRhqIAEgACgC4AFqQR5qLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBIWpNDQUgACgC8AEiAiAEQQlqTQ0MIAAoAuwBIANqQSRqIAEgACgC4AFqQSFqLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBJGpNDQQgACgC8AEiAiAEQQxqTQ0LIAAoAuwBIANqQTBqIAEgACgC4AFqQSRqLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBJ2pNDQMgACgC8AEiAiAEQQ9qTQ0KIAAoAuwBIANqQTxqIAEgACgC4AFqQSdqLQAAs0MAAADDkkMAAAA8lDgCACAAKALkASICIAFBKmpNDQIgACgC8AEiAiAEQRJqTQ0JIAAoAuwBIANqQcgAaiAAKALgASAQaiAGakEqai0AALNDAAAAw5JDAAAAPJQ4AgAgA0EEaiEDIAZBAWoiBkEDSQ0BDBALCyABQRhqDAYLIAFBKmoMBQsgAUEnagwECyABQSRqDAMLIAFBIWoMAgsgAUEeagwBCyABQRtqCyACQazUwQAQjAcACyAEQRJqIQQMBQsgBEEPaiEEDAQLIARBDGohBAwDCyAEQQlqIQQMAgsgBEEGaiEEDAELIARBA2ohBAsgBCACQbzUwQAQjAcACyAPIBBqIRAgCEEVaiEIIAdB1ABqIQcgBSAFIA5JIgJqIQEgAkUNAgwBCwsgAiAGQdzUwQAQjAcACyAAKALwASEBCwJAAkACQCABIBNPBEAgACgC7AEhBSAAKAKYAiEEQQAhAkEEIQggACgClAIiB0ECSQRAQQQhEEEAIQYMBAsgDkEYbCIDIAFLDQEgDkEPbCEGIAUgE0ECdGohECAHQQJGDQMgAyAMTSABIAxPcQ0CIAMgDCABQfzTwQAQ6gcAC0EAIBMgAUGc1MEAEOoHAAsgEyADIAFBjNTBABDqBwALIAwgA2shAiAFIANBAnRqIQgLIAsEQCAAIAQgDiAFIBMQ5gELIAYEQCAAIAQgDiAQIAYQpwELIAIEQCAAIAQgDiAIIAIQlAELAkACQAJAIAwgACgC5AEiAk0EQCAAQQA2AuQBIAIgDGshASALRQ0BIAIgDEYNAyABRQ0CIAAoAuABIgIgAiAMaiAB/AoAAAwCC0EAIAwgAkGEpMcAEOoHAAsgAiAMRg0BCyAAIAE2AuQBCyAAIAAoApgCIA5qIgI2ApgCIAIgACgCkAJHDQcgAEEANgKYAiAAQQY6AJwCDAcLIAEgAkHs1MEAEIwHAAsgACgC5AFBBEEDIAAoAowCIgNBA0YbIhBuIgIgACgCkAIgACgCmAJrIgVJBEAgAiIFQYCABEkNCAsCQAJAAkACQAJAAkACQAJAAkACQAJAQYCABCAFIAVBgIAETxsiC0ECdCICIAAoAvABIgFLBH8gAiABayICIAAoAugBIAFrSwRAIBIgASACQQRBBBCkBSAAKALwASEBCyAAKALsASIEIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiCARAIANBACAI/AsACyABIAJqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYC8AEgACgCjAIFIAMLQQNHBEAgBUUNC0EAIQRBACEBQQAhAkEAIQMDQCABIAAoAuQBIghPDQIgAUEBaiIHIAhPDQMgAUECaiIHIAhPDQRDAACAPyAAKALgASABaiIILQAAs0MAAP9ClUMAAIC/kiIZIBmUIAhBAWotAACzQwAA/0KVQwAAgL+SIhogGpSSIAhBAmotAACzQwAA/0KVQwAAgL+SIhsgG5SSk0MAAAAAEOAIIRwgAyAAKALwASIITw0FIAAoAuwBIAJqIBk4AgAgA0EBaiIIIAAoAvABIgdPDQYgACgC7AEgAmpBBGogGjgCACADQQJqIgggACgC8AEiB08NByAAKALsASACakEIaiAbOAIAIANBA2oiCCAAKALwASIHTw0IIAAoAuwBIAJqQQxqIByROAIAIAFBA2ohASACQRBqIQIgA0EEaiEDIARBAWoiBCALSQ0ACwwLCyAFRQ0KQQAhAkEBIQhBACEDA0ACQAJAAkACQCAAKALkASIBIANLBEAgA0EBaiIEIAFPDQEgA0ECaiIHIAFPDQIgA0EDaiIGIAFPDQMgACgC4AEgA2oiAUECai0AACEMIAFBA2otAAAhCiABLQAAIAFBAWotAAAhDiAJ/QwAAAAAAAAAAAAAAAAAAAAA/QsDUCAOQQh0ciIPIAxBEHQgCkEYdHJyIQFDAAAAACEZAn8CQCAKQQZ2IgxBA0cEQCAJIA9B/wNxs0MAgP9DlUPzBDU/lCIZjCAZIA5BAnEbIhk4AlwgGSAZlCEZIAFBCnYhASAMQQJGDQELIAkgAUH/A3GzQwCA/0OVQ/MENT+UIhqMIBogAUGABHEbIho4AlggGSAaIBqUkiEZIAFBCnYiASAMQQFGDQEaCyAJIAFB/wNxs0MAgP9DlUPzBDU/lCIajCAaIAFBgARxGyIaOAJUIBkgGiAalJIhGSABQQp2CyEBIAlB0ABqIAxBAnRqQwAAgD8gCkHAAE8EfSAJIAFB/wNxs0MAgP9DlUPzBDU/lCIajCAaIAFBgARxGyIaOAJQIBkgGiAalJIFIBkLkyIZkUMAAAAAIBlDAAAAAF4bOAIAIAMgACgC8AEiAUkNBCADIAFBvNLBABCMBwALIAMgAUH80cEAEIwHAAsgBCABQYzSwQAQjAcACyAHIAFBnNLBABCMBwALIAYgAUGs0sEAEIwHAAsgACgC7AEgAmogCSoCUDgCACAEIAAoAvABIgFPDQogACgC7AEgAmpBBGogCSoCVDgCACAHIAAoAvABIgFPDQkgACgC7AEgAmpBCGogCSoCWDgCACAGIAAoAvABIgFPDQggACgC7AEgAmpBDGogCSoCXDgCACACQRBqIQIgA0EEaiEDIAggC0kgCEEBaiEIDQALDAoLIAEgCEH80sEAEIwHAAsgByAIQYzTwQAQjAcACyAHIAhBnNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAACyAAIAQ2AvAECwJAAkACQCAAKALcBEGAgICAeGsOAgECAAsgABC+AgwBCyAAEL0BCyAAIAI2AgQgACAFNgIAIABBCGogA0GwA2pB5AL8CgAAIAAgBzYC8AIgACALNgLsAiAAQfQCaiADQaACakGQAfwKAAAgACAJNgKEBCAAQYgEaiADQcgBakHUAPwKAAAgACAsNwPgBCAAIA02AtwEIApBAXENACADQQhqEKADC0EAIQIgACgC3AQiAUGBgICAeEYNBQsgAUGAgICAeEcNASAAKALoAiICIAAoAghPBEAgACgC8AQhAUEAIQIgAEEANgLwBCABDQQMBQsgAEH0BGohDgJAA0ACQCAAKAIEIAJBBnRqIggoAiQiDwRAIA8gACgC8AQiByAMayICTQ0BDAYLQZTGwQAQgQgACyAILQA8IQVBgIAEIQEgAiAPbiIKIAgoAiAiBCAIKAI4IhBrIgJBACACIARNGyICIAIgCksbIgJBgIAETQRAIAIiAUUNBQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDgMCAQwACyAAIAEgDCAPIAAoAuwEIAcQkQMMCwsgACgChAFBgICAgHhHDQEMCgsgACABIBAgDCAPIAAoAuwEIAcQ5wEiAg0QIAFBA2wiCyAAKAIgIgJLDQEgASAAKAIsIgJLDQIgCyAAKAI4IgJLDQMgCyAAKAJEIgJLDQQgAUECdCIIIAAoAlAiAksNBSAAKAIcIQUgACgCKCEKIAAoAjQhBCAAKAJAIQIgA0IENwKgCCADQgI3ApgIIANCBDcCkAggA0IENwKICCADQgQ3AoAIIAMgCDYC/AcgAyALNgL0ByADIAI2AvAHIAMgCzYC7AcgAyAENgLoByADIAE2AuQHIAMgCjYC4AcgAyALNgLcByADIAU2AtgHIAMgACgCTDYC+AcgDiAQIAEgA0HYB2oQlwEMCQsgACABIAwgDyAAKALsBCAHEOgBIAFBCWwiByAAKAJcIgJLDQUgACgCWCELAkAgACgC8AIiCkECTwRAIAFBD2wiBSAAKAJoIgJNBEAgACgCZCEEIApBAkcNAkEAIQ1BBCEIDAoLQQAgBSACQYTHwQAQ6gcACyAOIBAgASALIAcQzgMMCQsgAUEVbCINIAAoAnQiAksNBiAAKAJwIQgMBwtBACALIAJB5MbBABDqBwALQQAgASACQdTGwQAQ6gcAC0EAIAsgAkHExsEAEOoHAAtBACALIAJBtMbBABDqBwALQQAgCCACQaTGwQAQ6gcAC0EAIAcgAkGUx8EAEOoHAAtBACANIAJB9MbBABDqBwALIA4gECABIAsgBxDOAyAOIBAgASAEIAUQ4gMgDUUNACAOIBAgASAIIA0Q4wMLIAAoAugCIgQgACgCCCICTw0BIAAoAgQgBEEGdGoiCiAKKAI4IAFqIgQ2AjggACgC6AIhAiAKKAIgIARGBEAgACACQQFqIgI2AugCCyABIA9sIAxqIQwgAiAAKAIISQ0ACyAAKALwBCEHDAMLIAQgAkGkx8EAEIwHAAtBACAIIARBhKTHABDqBwALAkACQAJAAkACQAJAAkACQAJAIAAoAvwDIgEEQCAAKALwBCEFIABB9ARqIRsgAEFAayEcIAAoAoAEIQIDQEGAgAQhBwJAAkACQAJAAkAgBSARayIIIAFuIgogACgC+AMiBCACayIBQQAgASAETRsiASABIApLGyIBQYCABEsNACABIgcNACAFIBFJDQFBACECIABBADYC8AQCQCARBEAgBSARRg0UIAhFDQEgACgC7AQiASABIBFqIAj8CgAAIAAgCDYC8AQMFAsgBSARRg0TCyAAIAg2AvAEDBILIAAgBxDsAUEBIQFBACEIQQAhC0EAIQUCQANAIAEhCiAAKAKoAyAALQCsAyAAKALsBCAAKALwBCAAKAL8AyAFbCARaiIGELAEISggBUEDbCIBIAAoApAEIglPDRAgAUECdCINIAAoAowEaiAoOAIAIAAoArADIAAtALQDIAAoAuwEIAAoAvAEIAYQsAQhKCABQQFqIgQgACgCkAQiCU8EQCAEIQEMEQsgBEECdCIPIAAoAowEaiAoOAIAIAAoArgDIAAtALwDIAAoAuwEIAAoAvAEIAYQsAQhKCABQQJqIgIgACgCkAQiCU8EQCACIQEMEQsgAkECdCIQIAAoAowEaiAoOAIAIAAoAvADIAAtAPQDIAAoAuwEIAAoAvAEIAYQsAQhKCAAKAKcBCIOIAVNBEAgBSAOQZTFwQAQjAcACyAAKAKYBCAFQQJ0akMAAIA/ICiMEIkEQwAAgD+SlTgCACAAKALYAyAALQDcAyAAKALsBCAAKALwBCAGELAEISggASAAKAKoBCIJTw0EIAAoAqQEIA1qIChDu26QPpRDAAAAP5I4AgAgACgC4AMgAC0A5AMgACgC7AQgACgC8AQgBhCwBCEoIAAoAqgEIgkgBE0EQCAEIQEMBQsgACgCpAQgD2ogKEO7bpA+lEMAAAA/kjgCACAAKALoAyAALQDsAyAAKALsBCAAKALwBCAGELAEISggACgCqAQiCSACTQRAIAIhAQwFCyAAKAKkBCAQaiAoQ7tukD6UQwAAAD+SOAIAIAAoAsADIAAtAMQDIAAoAuwEIAAoAvAEIAYQsAQhKAJAAkACQAJAAkAgASAAKAK0BCIJTw0AIAAoArAEIA1qICgQiQQ4AgAgACgCyAMgAC0AzAMgACgC7AQgACgC8AQgBhCwBCEoIAAoArQEIgkgBCIBTQ0AIAAoArAEIA9qICgQiQQ4AgAgACgC0AMgAC0A1AMgACgC7AQgACgC8AQgBhCwBCEoIAAoArQEIgkgAiIBTQ0AIAAoArAEIBBqICgQiQQ4AgAgACgCICAALQAkIAAoAuwEIAAoAvAEIAYQsAQhKCAAKAIoIAAtACwgACgC7AQgACgC8AQgBhCwBCEpIAAoAjAgAC0ANCAAKALsBCAAKALwBCAGELAEISogACgCOCAALQA8IAAoAuwEIAAoAvAEIAYQsAQhKyAFQQJ0IgEgACgCwAQiAkkNAQwCCyABIAlB5MXBABCMBwALIAAoArwEIAFBAnRqICggKCAolCApICmUkiAqICqUkiArICuUkpEiKJU4AgAgAUEBciIEIAAoAsAEIgJPBEAgBCEBDAELIAAoArwEIARBAnRqICkgKJU4AgAgAUECciIEIAAoAsAEIgJPBEAgBCEBDAELIAAoArwEIARBAnRqICogKJU4AgAgAUEDciIBIAAoAsAEIgJPDQAgACgCvAQgAUECdGogKyAolTgCACAALQDkAiIBQQhHDQEMAgsgASACQdTFwQAQjAcACyAALQCkAyESIAAoAqADIAAtAJwDIRQgACgCmAMgAC0AlAMhFiAAKAKQAyAALQCMAyEYIAAoAogDIAAtAIQDIRogACgCgAMgAC0A/AIhDCAAKAL4AiAALQD0AiEPIAAoAvACIAAtAOwCIQ4gACgC6AIgACgC4AIgASAAKALsBCAAKALwBCAGELAEISggBUEJbCIBIAAoAswEIgJPDQQgACgCyAQgAUECdGogKDgCACAOIAAoAuwEIAAoAvAEIAYQsAQhKCABQQFqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAPIAAoAuwEIAAoAvAEIAYQsAQhKCABQQJqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAMIAAoAuwEIAAoAvAEIAYQsAQhKCABQQNqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAaIAAoAuwEIAAoAvAEIAYQsAQhKCABQQRqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAYIAAoAuwEIAAoAvAEIAYQsAQhKCABQQVqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAWIAAoAuwEIAAoAvAEIAYQsAQhKCABQQZqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACAUIAAoAuwEIAAoAvAEIAYQsAQhKCABQQdqIgQgACgCzAQiAk8EQCAEIQEMBQsgACgCyAQgBEECdGogKDgCACASIAAoAuwEIAAoAvAEIAYQsAQhKCABQQhqIgEgACgCzAQiAk8NBCAAKALIBCABQQJ0aiAoOAIACyAALQDsASIBQQhHBEAgAC0A3AIhHSAAKALYAiAALQDUAiEfIAAoAtACIAAtAMwCISEgACgCyAIgAC0AxAIhIyAAKALAAiAALQC8AiElIAAoArgCIAAtALQCIScgACgCsAIgAC0ArAIhEyAAKAKoAiAALQCkAiEVIAAoAqACIAAtAJwCIRcgACgCmAIgAC0AlAIhGSAAKAKQAiAALQCMAiEJIAAoAogCIAAtAIQCIQ0gACgCgAIgAC0A/AEhECAAKAL4ASAALQD0ASEEIAAoAvABIAAoAugBIAEgACgC7AQgACgC8AQgBhCwBCEoIAVBD2wiASAAKALYBCIFTw0CIAAoAtQEIAFBAnRqICg4AgAgBCAAKALsBCAAKALwBCAGELAEISggAUEBaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgECAAKALsBCAAKALwBCAGELAEISggAUECaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgDSAAKALsBCAAKALwBCAGELAEISggAUEDaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgCSAAKALsBCAAKALwBCAGELAEISggAUEEaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgGSAAKALsBCAAKALwBCAGELAEISggAUEFaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgFyAAKALsBCAAKALwBCAGELAEISggAUEGaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgFSAAKALsBCAAKALwBCAGELAEISggAUEHaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgEyAAKALsBCAAKALwBCAGELAEISggAUEIaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgJyAAKALsBCAAKALwBCAGELAEISggAUEJaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgJSAAKALsBCAAKALwBCAGELAEISggAUEKaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgIyAAKALsBCAAKALwBCAGELAEISggAUELaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgISAAKALsBCAAKALwBCAGELAEISggAUEMaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgHyAAKALsBCAAKALwBCAGELAEISggAUENaiICIAAoAtgEIgVPBEAgAiEBDAMLIAAoAtQEIAJBAnRqICg4AgAgHSAAKALsBCAAKALwBCAGELAEISggAUEOaiIBIAAoAtgEIgVPDQIgACgC1AQgAUECdGogKDgCAAsCQCAALQBEQQhHBEAgA0HYB2ogHEGoAfwKAABBACEFIAghAiALIQEDQCADQdgHaiAFaiIEKAIAIARBBGotAAAgACgC7AQgACgC8AQgBhCwBCEoIAEgACgC5AQiBE8NAiAAKALgBCACaiAoOAIAIAJBBGohAiABQQFqIQEgBUEIaiIFQagBRw0ACwsgCEHUAGohCCALQRVqIQsgCiAHIApLIgJqIQEgCiEFIAJFDQYMAQsLIAEgBEHExcEAEIwHAAsgASAFQbTFwQAQjAcAC0EAIBEgBUGEpMcAEOoHAAsgASACQaTFwQAQjAcACyABIAlB9MXBABCMBwALIAdBA2wiCSAAKAKQBCIBSw0CIAcgACgCnAQiAUsNAyAJIAAoAqgEIgFLDQQgCSAAKAK0BCIBSw0FIAdBAnQiDCAAKALABCIBSw0GIAdBCWxBACAAKAKEBCICGyINIAAoAswEIgFLDQcgB0EPbEEAIAJBAUsbIg8gACgC2AQiAUsNCCAHQRVsQQAgAkECSxsiECAAKALkBCIBSw0JIAAoAoAEIQ4gACgCjAQhCyAAKAKYBCEIIAAoAqQEIQUgACgCsAQhCiAAKAK8BCEEIAAoAsgEIQIgACgC1AQhASADQgQ3AqAIIANCAjcCmAggAyAQNgKUCCADIA82AowIIAMgATYCiAggAyANNgKECCADIAI2AoAIIAMgDDYC/AcgAyAENgL4ByADIAk2AvQHIAMgCjYC8AcgAyAJNgLsByADIAU2AugHIAMgBzYC5AcgAyAINgLgByADIAk2AtwHIAMgCzYC2AcgAyAAKALgBDYCkAggGyAOIAcgA0HYB2oQlwEgACAAKAKABCAHaiICNgKABCAAKAL8AyIBIAdsIBFqIREgACgC8AQhBSABDQALC0GExMEAEIEIAAtBACAJIAFBhMXBABDqBwALQQAgByABQfTEwQAQ6gcAC0EAIAkgAUHkxMEAEOoHAAtBACAJIAFB1MTBABDqBwALQQAgDCABQcTEwQAQ6gcAC0EAIA0gAUG0xMEAEOoHAAtBACAPIAFBpMTBABDqBwALQQAgECABQZTEwQAQ6gcACyABIAlBhMbBABCMBwALIAcgDEkNAkEAIQIgAEEANgLwBCAHIAxrIQEgDARAIAcgDEYNAiABBEAgACgC7AQiBCAEIAxqIAH8CgAACyAAIAE2AvAEDAILIAcgDEYNAQsgACABNgLwBAsgA0HADGokACACDwtBACAMIAdBhKTHABDqBwALQQAgASAKQczDwQAQ6gcAC6EwAyd/BH0BfiMAQcAMayIDJAACQAJAAkACQAJAAkACQCAAKALcBCIBQYGAgIB4RgRAAkAgACgC8AQiCkEESQ0AAkAgACgC7AQiBC8AACAELQACQRB0ckHw2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToA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IAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAgAhshAiAJQj+IpyEGIABBIGogAEHgAGogAEEPahDPASAAKAIgRQ0BIABB2ABqIABBKGooAgA2AgAgACAAKQIgNwNQDAILIAJBAkYNAiAAQQI7ASBBASECQeqzxQBByIHCACAJQgBTIgQbQeqzxQBBASAEGyADGyEEIAlCP4inIANyIQMgBUH/AXFBBEYNAyAAQQM2AiggAEHsncYANgIkIABBIGoMBAsgAEHQAGogAEHgAGogAEEPahBXCyACIAUgAxshBCADIAZyIQMgACAAKAJQIAAoAlQgAC8BWEEAIABBIGoQ7AQgACgCBCECIAAoAgAMAgsgAEEDNgIoIABB853GADYCJCAAQQI7ASBBASEEQQAhA0EBIQIgAEEgagwBCyAAQQE2AiggAEGYsMUANgIkIABBIGoLIQUgACACNgJcIAAgBTYCWCAAIAM2AlQgACAENgJQIAEgAEHQAGoQvgMgAEGAAWokAA8LIAJBAEchBSABLwEOIQBBACEDIwBB8AhrIgIkACAOvSEJAn9BAyAOmUQAAAAAAADwf2ENABpBAiAJQoCAgICAgID4/wCDIgtCgICAgICAgPj/AFENABogCUL/////////B4MiDUKAgICAgICACIQgCUIBhkL+////////D4MgCUI0iKdB/w9xIgMbIgpCAYMhDCALUARAQQQgDVANARogA0GzCGshA0IBIQsgDFAMAQtCgICAgICAgCAgCkIBhiAKQoCAgICAgIAIUSIEGyEKQgJCASAEGyELQct3Qcx3IAQbIANqIQMgDFALIQQgAiADOwHoCCACIAs3A+AIIAJCATcD2AggAiAKNwPQCCACIAQ6AOoIAn8CQCAEQf8BcSIGQQFNBEBBdEEFIAPBIgRBAEgbIARsIgRBwP0ASQ0BQcOEwgBBJUHohMIAEOsHAAsCQAJAIAZBAkcEQEEBIQNB6rPFAEHIgcIAIAlCAFMiBhtB6rPFAEEBIAYbIAUbIQYgCUI/iKcgBXIhBSAEQf8BcUEERw0BQQIhAyACQQI7AZAIIAANAkEBIQMgAkEBNgKYCCACQZiwxQA2ApQIIAJBkAhqDAQLIAJBAzYCmAggAkHzncYANgKUCCACQQI7AZAIQQEhBkEAIQVBASEDIAJBkAhqDAMLIAJBAzYCmAggAkHsncYANgKUCCACQQI7AZAIIAJBkAhqDAILIAIgADYCoAggAkEAOwGcCCACQQI2ApgIIAJBuYPCADYClAggAkGQCGoMAQtB6rPFAEEBIAlCAFMiBhshB0Hqs8UAQciBwgAgBhsgCUI/iKchCCACQZAIaiAKIAMgAkEQaiAEQQR2QRVqIgRBgIB+QQAgAGsgAMFBAEgbIgMQ6QIgA8EhAwJAIAIoApAIBEAgAkHICGogAkGYCGooAgA2AgAgAiACKQKQCDcDwAgMAQsgAkHACGogAkHQCGogAkEQaiAEIAMQZQsgByAFGyEGIAUgCHIhBSADIAIuAcgIIgRIBEAgAkEIaiACKALACCACKALECCAEIAAgAkGQCGoQ7AQgAigCDCEDIAIoAggMAQtBAiEDIAJBAjsBkAggAEUEQEEBIQMgAkEBNgKYCCACQZiwxQA2ApQIIAJBkAhqDAELIAIgADYCoAggAkEAOwGcCCACQQI2ApgIIAJBuYPCADYClAggAkGQCGoLIQAgAiADNgLMCCACIAA2AsgIIAIgBTYCxAggAiAGNgLACCABIAJBwAhqEL4DIAJB8AhqJAALQwEBfyMAQRBrIgIkACACQQhqIAEoAggiASABKAIAKAIEEQEAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAtBAAJAIAAoAiQiACgCBEEDRwRAIABBBGohAAwBCyAAIAAoAgAoAhgRBAAiAA0AQYjxwQBBGEGg8cEAEKsHAAsgAAuhAQEDfyAAKAIAIQAgASgCCCIDQYCAgBBxRQRAIANBgICAIHFFBEAgACABELMGDwsgACABENkGDwsgAC0AACEAIwBBEGsiBCQAQQMhAgNAIAIgBGpBDGogAEEPcUHctsUAai0AADoAACAAIgNBBHYhACACQQFrIQIgA0EPSw0ACyABQQFBhLTFAEECIAIgBGpBDWpBAyACaxDIAyAEQRBqJAALMgECfyABQf8BcSEDQQAhAQNAIAAQtAogAkEBdHIhAiABQQFqIgFB/wFxIANJDQALIAILOAEBfyMAQRBrIgIkACACQQhqIAAgACgCACgCBBEBACACKAIIIAEgAigCDCgCEBECACACQRBqJAAL7g8CA34VfyMAQRBrIhMkACMBQQFrIhYkASAWIAgmASAAIRogAiEbQbC1yQAoAgBFBEAQVgsCQAJAAkBBuLXJACgCAEUEQEG4tckAQX82AgAgFiUBEB4hHgJAIAcgBSADIAEgASADSxsiACAAIAVLGyIAIAAgB0sbIh9FDQADQCAXIgAgHkYNASAWJQEgABAfIQgQ2gQiGCAIJgECQAJAQcy1yQAoAgBFDQAgAEEBaiEXIAYgAEECdCIAaigCACERIAAgBGooAgAhDyAAIBtqKAIAIRxBACEMQcS1yQAoAgAiAkHYtckAKQMAIgkgACAaaigCACIdrYUiCkI4hiAKQoD+A4NCKIaEIApCgID8B4NCGIYgCkKAgID4D4NCCIaEhCAJQgiIQoCAgPgPgyAJQhiIQoCA/AeDhCAJQiiIQoD+A4MgCUI4iISEhELSgaqbq/qC16d/fiIJQjiGIAlCgP4Dg0IohoQgCUKAgPwHg0IYhiAJQoCAgPgPg0IIhoSEIAlCCIhCgICA+A+DIAlCGIhCgID8B4OEIAlCKIhCgP4DgyAJQjiIhISEIApC2KLR78Kp5b8tfoUiCUI4hiAJQoD+A4NCKIaEIAlCgID8B4NCGIYgCUKAgID4D4NCCIaEhCAJQgiIQoCAgPgPgyAJQhiIQoCA/AeDhCAJQiiIQoD+A4MgCUI4iISEhEHQtckAKQMAIgpCf4V+IgtCOIYgC0KA/gODQiiGhCALQoCA/AeDQhiGIAtCgICA+A+DQgiGhIQgC0IIiEKAgID4D4MgC0IYiEKAgPwHg4QgC0IoiEKA/gODIAtCOIiEhIQgCSAKQjiGIApCgP4Dg0IohoQgCkKAgPwHg0IYhiAKQoCAgPgPg0IIhoSEIApCCIhCgICA+A+DIApCGIhCgID8B4OEIApCKIhCgP4DgyAKQjiIhISEfoUgCYkiCadxIQ0gCUIZiEL/AINCgYKEiJCgwIABfiELQcC1yQAoAgAiAEEgayEOA0AgACANaikAACIKIAuFIglCf4UgCUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIJUEUEQANAIB0gDiAJeqdBA3YgDWogAnEiFEEFdGsoAgBGDQQgCUIBfSAJgyIJUEUNAAsLIAogCkIBhoNCgIGChIiQoMCAf4NQRQ0BIA0gDEEIaiIMaiACcSENDAALAAtB6PLAABDdCQALIA9BEHYhDSARQRB2IBFB//8DcUEAR2oiGSAcQRB2Ig9qIhIgAEEAIBRrQQV0aiIOQRRrIhQoAgAiAksEQCASIAIiAGsiDCAOQRxrIhAoAgAgAGtLBEAgECAAIAxBBEEEEKQFIBQoAgAhAAsgDkEYaygCACIVIABBAnRqIRAgDEECTwR/IAJBf3MgEmpBAnQiAgRAIBBB/wEgAvwLAAsgACAMaiICQQFrIQAgFSACQQJ0akEEawUgEAtBfzYCACAUIABBAWo2AgALIA0gGWoiECAOQQhrIhIoAgAiAksEQCAQIAIiAGsiDCAOQRBrIhUoAgAgAGtLBEAgFSAAIAxBBEEEEKQFIBIoAgAhAAsgDkEMaygCACIgIABBAnRqIRUgDEECTwR/IAJBf3MgEGpBAnQiAgRAIBVB/wEgAvwLAAsgACAMaiICQQFrIQAgICACQQJ0akEEawUgFQtBfzYCACASIABBAWo2AgALAkACQAJAAkACQAJAAkAgGCICELkKRQRAIBENAUEAIREMBQsgEQRAIA9BAnQhDCANQQJ0IQAgDkEMayEYIA5BGGshDgNAIA8gFCgCACIRTw0DIA4oAgAgDGpBfzYCACANIBIoAgAiEU8NBCAYKAIAIABqQX82AgAgDEEEaiEMIA9BAWohDyAAQQRqIQAgDUEBaiENIBlBAWsiGQ0ACwsgAkGDCEsNBQwGCyAPQQJ0IQwgDUECdCEAIA5BDGshGCAOQRhrIQ4DQCAPIBQoAgAiEE8NAyAOKAIAIAxqIA02AgAgEigCACIQIA1LBEAgGCgCACAAaiAPNgIAIAxBBGohDCAPQQFqIQ8gAEEEaiEAIA1BAWohDSAZQQFrIhlFDQUMAQsLIA0gEEGI88AAEIwHAAsgDyARQZjzwAAQjAcACyANIBFBqPPAABCMBwALIA8gEEH48sAAEIwHAAsgHSAcIBEgAhDTASACQYQISQ0BCyACEJsHCyAXIB9HDQALCxC/CSEAQbi1yQBBuLXJACgCAEEBajYCACAHBEAgBkEEaygCACICQXhxIhcgB0ECdCIHQQRBCCACQQNxIgIbakkNAiACQQAgFyAHQSdqSxsNAyAGEKICCyAFBEAgBEEEaygCACICQXhxIgYgBUECdCIFQQRBCCACQQNxIgIbakkNAiACQQAgBiAFQSdqSxsNAyAEEKICCyADBEAgG0EEaygCACICQXhxIgQgA0ECdCIDQQRBCCACQQNxIgIbakkNAiACQQAgBCADQSdqSxsNAyAbEKICCwJAIAEEQCAaQQRrKAIAIgJBeHEiAyABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0DIAJBACADIAFBJ2pLGw0BIBoQogILIBNCADcCBCATIAA2AgAMBAsMAgtBrIrBABCwCgALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAW0G9BAfwRASAWQQFqJAEgEygCACATKAIEIBMoAgggE0EQaiQACzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQIARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQAAC+ACAgR/An4jAEEQayIJJAAQ2gQiCyAEJgEjAEEwayIIJABBgICAgHghCgJAIABFBEBBgICAgHghAQwBCyAArSABrUIghoQhDAsgAgRAIAKtIAOtQiCGhCENIAMhCgsgCCAMNwIcIAggATYCGCAIIA03AiggCCAKNgIkIAZBAEchACAFQQBHIQECQCAHRQRAIAhBCGogCEEYaiAIQSRqIAsgASAFIAAgBkEAQQAQvwEMAQsgCEEIaiAIQRhqIAhBJGogCyABIAUgACAGQQEgBxC/AQsCQAJAAn8gCCgCCEUEQEEBIQAgCCgCDAwBC0EcEHEiAUUNAUEAIQAgAUEANgIIIAFCgYCAgBA3AgAgASAI/QACCP0LAgwgAUEIagshASAJIAA2AgggCSABQQAgABs2AgQgCUEAIAEgABs2AgAgCEEwaiQADAELAAsgCSgCACAJKAIEIAkoAgggCUEQaiQACzkBAX8jAEEQayIFJAAgBSACNgIMIAUgATYCCCAAIAVBCGpB4IfDACAFQQxqQeCHwwAgAyAEEPIEAAtEACABKQIAQu26rbbNhdT14wCFIAEpAghC+IKZvZXuxsW5f4WEUEUEQCAAKAIkIgAgASAAKAIAKAIQEQIADwsgAEEcags5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQcS2xAAgBEEMakHEtsQAIAIgAxDyBAAL4AEBBH8jAEEQayICJAAgAiAANgIMIwBBEGsiACQAIAEoAgBBmK3HAEENIAEoAgQoAgwRAAAhAyAAQQA6AA0gACADOgAMIAAgATYCCCAAQQhqQcj7xwBBBCACQQxqQfS3xQAQjAUhAyAALQANIgQgAC0ADCIFciEBAkAgBUEBcSAEQQFHcg0AIAMoAgAiAS0ACkGAAXFFBEAgASgCAEH/s8UAQQIgASgCBCgCDBEAACEBDAELIAEoAgBBpbPFAEEBIAEoAgQoAgwRAAAhAQsgAEEQaiQAIAFBAXEgAkEQaiQACzkBAX8jAEEQayIFJAAgBSACNgIMIAUgATYCCCAAIAVBCGpB3JzIACAFQQxqQdycyAAgAyAEEPIEAAs8AQJ/IAEoAgQhAiABKAIAIQNBCBBxIgFFBEAACyABIAI2AgQgASADNgIAIABBvIzIADYCBCAAIAE2AgALPwEBfyMAQRBrIgIkACACQZvRwAA2AgwgAiAANgIIQQAgAkEIakHohsgAIAJBDGpB6IbIACABQciDyAAQ8gQAC5EDAQV/IwBBEGsiCCQAENoEIgogASYBIAAhCxDaBCIAIAYmASAFIQkjAEHgAWsiByQAIAJBAEchBQJAIAlFBEAgB0H4AGogCyAKIAUgAiAAEGcgBygCfCEFIAcoAngiAEGAgICAeEYEQEEBIQIMAgsgB0EYaiAHQYABakHgAPwKAAAgByAFNgIUIAcgADYCECAHQRBqIgAgAyAEQQBHEDAgByAAEPsDIAcoAgQhBSAHKAIAIQIgABD2AgwBCyAHQfgAaiALIAogBSACIAAQZyAHKAJ8IQUgBygCeCIAQYCAgIB4RgRAIAlBhAhPBEAgCRCbBwtBASECDAELIAdBGGogB0GAAWpB4AD8CgAAIAcgBTYCFCAHIAA2AhAgB0EQaiIAIAkQxAIgACADIARBAEcQMCAHQQhqIAAQ+wMgBygCDCEFIAcoAgghAiAAEPYCCyAIIAJBAXEiADYCCCAIIAVBACAAGzYCBCAIQQAgBSAAGzYCACAHQeABaiQAIAgoAgAgCCgCBCAIKAIIIAhBEGokAAv6AwEFfyMAQRBrIggkABDaBCIHIAEmARDaBCIJIAImASAHIQojAEGgAWsiByQAIANBAEchCwJAIAZFBEAgB0HYAGogACAKIAkgCyADEDsgBygCXCEAIAcoAlgiA0GAgICAeEYEQEEBIQMMAgsgB0HIAGogB0GQAWr9AAIA/QsCACAHQThqIAdBgAFq/QACAP0LAgAgB0EoaiAHQfAAav0AAgD9CwIAIAcgB/0AAmD9CwIYIAcgADYCFCAHIAM2AhAgB0EQaiIGIAQgBUEARxAvIAcgBhCDBSAHKAIEIQAgBygCACEDIAYQ9QIMAQsgB0HYAGogACAKIAkgCyADEDsgBygCXCEAIAcoAlgiA0GAgICAeEYEQCAGQYQITwRAIAYQmwcLQQEhAwwBCyAHQcgAaiAHQZABav0AAgD9CwIAIAdBOGogB0GAAWr9AAIA/QsCACAHQShqIAdB8ABq/QACAP0LAgAgByAH/QACYP0LAhggByAANgIUIAcgAzYCECAAIAcoAhggBhCtAyAHQRBqIgYgBCAFQQBHEC8gB0EIaiAGEIMFIAcoAgwhACAHKAIIIQMgBhD1AgsgCCADQQFxIgM2AgggCCAAQQAgAxs2AgQgCEEAIAAgAxs2AgAgB0GgAWokACAIKAIAIAgoAgQgCCgCCCAIQRBqJAAL0wICA38CfiMAQRBrIggkACMAQTBrIgckAEGAgICAeCEJAkAgAEUEQEGAgICAeCEBDAELIACtIAGtQiCGhCEKCyACBEAgAq0gA61CIIaEIQsgAyEJCyAHIAo3AhwgByABNgIYIAcgCzcCKCAHIAk2AiQgBUEARyEAIARBAEchAQJAIAZFBEAgB0EIaiAHQRhqIAdBJGogASAEIAAgBUEAQQAQ2AEMAQsgB0EIaiAHQRhqIAdBJGogASAEIAAgBUEBIAYQ2AELAkACQAJ/IAcoAghFBEBBASEAIAcoAgwMAQtBHBBxIgFFDQFBACEAIAFBADYCCCABQoGAgIAQNwIAIAEgB/0AAgj9CwIMIAFBCGoLIQEgCCAANgIIIAggAUEAIAAbNgIEIAhBACABIAAbNgIAIAdBMGokAAwBCwALIAgoAgAgCCgCBCAIKAIIIAhBEGokAAs3AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUH07sEANgIIIAFCBDcCECABQQhqIAAQjQgACzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQdycwgA2AgggAEIENwIQIABBCGpB5JzCABCNCAALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBlIfDADYCCCABQgQ3AhAgAUEIaiAAEI0IAAs3AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUHYh8MANgIIIAFCBDcCECABQQhqIAAQjQgAC/ADAQV/IwBBEGsiByQAENoEIgYgASYBENoEIgggAiYBIAYhCSMAQaABayIGJAAgA0EARyEKAkAgBUUEQCAGQdgAaiAAIAkgCCAKIAMQOyAGKAJcIQAgBigCWCIDQYCAgIB4RgRAQQEhAwwCCyAGQcgAaiAGQZABav0AAgD9CwIAIAZBOGogBkGAAWr9AAIA/QsCACAGQShqIAZB8ABq/QACAP0LAgAgBiAG/QACYP0LAhggBiAANgIUIAYgAzYCECAGQRBqIgUgBBAuIAYgBRCDBSAGKAIEIQAgBigCACEDIAUQ9QIMAQsgBkHYAGogACAJIAggCiADEDsgBigCXCEAIAYoAlgiA0GAgICAeEYEQCAFQYQITwRAIAUQmwcLQQEhAwwBCyAGQcgAaiAGQZABav0AAgD9CwIAIAZBOGogBkGAAWr9AAIA/QsCACAGQShqIAZB8ABq/QACAP0LAgAgBiAG/QACYP0LAhggBiAANgIUIAYgAzYCECAAIAYoAhggBRCtAyAGQRBqIgUgBBAuIAZBCGogBRCDBSAGKAIMIQAgBigCCCEDIAUQ9QILIAcgA0EBcSIDNgIIIAcgAEEAIAMbNgIEIAdBACAAIAMbNgIAIAZBoAFqJAAgBygCACAHKAIEIAcoAgggB0EQaiQAC4cDAQV/IwBBEGsiByQAENoEIgkgASYBIAAhChDaBCIAIAUmASAEIQgjAEHgAWsiBiQAIAJBAEchBAJAIAhFBEAgBkH4AGogCiAJIAQgAiAAEGcgBigCfCEEIAYoAngiAEGAgICAeEYEQEEBIQIMAgsgBkEYaiAGQYABakHgAPwKAAAgBiAENgIUIAYgADYCECAGQRBqIgAgAxAtIAYgABD7AyAGKAIEIQQgBigCACECIAAQ9gIMAQsgBkH4AGogCiAJIAQgAiAAEGcgBigCfCEEIAYoAngiAEGAgICAeEYEQCAIQYQITwRAIAgQmwcLQQEhAgwBCyAGQRhqIAZBgAFqQeAA/AoAACAGIAQ2AhQgBiAANgIQIAZBEGoiACAIEMQCIAAgAxAtIAZBCGogABD7AyAGKAIMIQQgBigCCCECIAAQ9gILIAcgAkEBcSIANgIIIAcgBEEAIAAbNgIEIAdBACAEIAAbNgIAIAZB4AFqJAAgBygCACAHKAIEIAcoAgggB0EQaiQAC8ECAQR/IwBBEGsiASQAQdy2yQAtAABBA0cEQCABQQE6AA8gAUEPaiECIwBBIGsiACQAAkACQAJAAkACQAJAAkACQAJAQdy2yQAtAABBAWsOAwQDAQALQdy2yQBBAjoAACACLQAAIAJBADoAAEUNBEGUu8kAKAIAQf////8HcQRAQYy7yQAoAgANBgtBmLvJACgCAA0BQdy2yQBBAzoAAEGcu8kAQQE2AgALIABBIGokAAwGCwALIABBADYCGCAAQQE2AgwgAEGYg8gANgIIDAMLIABBADYCGCAAQQE2AgwgAEGUisEANgIIDAILQZyKwQAQ3QkACyAAQQA2AhggAEEBNgIMIABB0IbIADYCCCAAQgQ3AhAgAEEIakHYhsgAEI0IAAsgAEIENwIQIABBCGpB0OrAABCNCAALCyABQRBqJAALLgACQCADaUEBRyABQYCAgIB4IANrS3JFBEAgACABIAMgAhC7AiIADQELAAsgAAvzCgIJfwJ+IwBBEGsiCSQAENoEIgogBCYBIAMhCCMAQeACayIFJABBgICAgHghAwJAIABFBEBBgICAgHghAQwBCyAArSABrUIghoQhDgsgAgRAIAKtIAitQiCGhCEPIAghAwsgD6chCEEGIQcCQAJAAkACQAJAIAkCfwJAAkACQAJAIAFBgICAgHhGDQAgBUEUaiAOpyIAIA5CIIinEJEFIAUtABRBAUYEQCAFKAIYIQYgBUEANgL8ASAFQoCAgIAQNwL0ASAFQZyTwQA2AoQCIAVCoICAgA43AogCIAUgBUH0AWo2AoACIAYgBUGAAmoQrwQNAiAFKAL0ASEHIAUoAvgBIgsgBSgC/AEQ7AghAiAHBEAgC0EEaygCACIMQXhxIg1BBEEIIAxBA3EiDBsgB2pJDQkgDEEAIA0gB0EnaksbDQogCxCiAgsgBiAGKAIAKAIAEQMAIAEEQCAAQQRrKAIAIgZBeHEiB0EEQQggBkEDcSIGGyABakkNCSAGQQAgByABQSdqSxsNCiAAEKICCyAKQYQISQ0EIAoQmwcMBAsgBS0AFSEHIAFFDQAgAEEEaygCACICQXhxIgZBBEEIIAJBA3EiAhsgAWpJDQcgAkEAIAYgAUEnaksbDQggABCiAgtBAiEBIAoQuQoiDEUEQCAFQYACaiAKELUBIAUoAoACIQIgBS0AnAIiAUECRg0DIAVBMGogBUGUAmopAgA3AwAgBUEeaiAFQZ8Cai0AADoAACAFIAX9AAKEAv0LAyAgBSAFLwCdAjsBHAsgBUGTAWogBUEeai0AADoAACAFQYgBaiAFQTBqKQMANwIAIAUgBS8BHDsAkQEgBSACNgJ0IAVBADYCcCAFQoCAgIAQNwJoIAVCATcCYCAFQgA3AlggBUKAgICAEDcCUCAFQgQ3AkggBUIANwJAIAVCgICAgMAANwI4IAUgBf0AAyD9CwJ4IAVBADYClAEgBSABOgCQAQJ/IAdBBkcEQCAFQQhqIAcgBUE4ahDZAyAFKAIMIQYgBSgCCCELQYCAgIB4DAELIAVBgAJqIAVBPGpB3AD8CgAAQQALIQ1BgICAgHghASADQYCAgIB4RwRAIA9CIIinIQFBASECIA9CgICAgBBaBEAgARBxIgJFDQcLIAEEQCACIAggAfwKAAALIAKtIA9CgICAgHCDhCEOCyAFQZgBaiICIAVBgAJqQdwA/AoAAEGQARBxIgBFDQUgACANNgIYIAAgDjcCECAAIAE2AgwgAEEANgIIIABCgICAgBA3AgAgAEEcaiACQdwA/AoAACAAIAc6AIwBIAAgBjYCiAEgACALNgKEASAAQYCAgIB4NgJ4IAxFIApBhAhJcg0BIAoQmwcMAQtBoJ7GAEE3IAVB3wJqQbSTwQBB2J7GABDgBgALAkAgA0GAgICAeHJBgICAgHhHBEAgCEEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgA2pJDQYgAUEAIAIgA0EnaksbDQEgCBCiAgtBHBBxIgFFDQQgAUGg78AANgIYIAFBATYCFCABQYjvwAA2AhAgASAANgIMIAFBADYCCCABQoGAgIAQNwIAIAFBCGohAkEADAILDAULIANBgICAgHhyQYCAgIB4RwRAIAhBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0EIABBACABIANBJ2pLGw0CIAgQogILQQELIgA2AgggCSACQQAgABs2AgQgCUEAIAIgABs2AgAgBUHgAmokAAwEC0GMjcgAQS5BvI3IABDrBwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgCSgCACAJKAIEIAkoAgggCUEQaiQACzcBAX9BASEAIAEoAgAiAkGlgcIAQQMgASgCBCgCDCIBEQAABH8gAAUgAkH7gcIAQQcgAREAAAsL9wEBBH8jAEEQayIFJAAQ2gQiBiABJgEQ2gQiBCADJgEgAiEHIAQhAiMAQdAAayIEJAACQCAHRQRAIARBCGogACAGQQBBACACEGkMAQsgBEEIaiAAIAZBASAHIAIQaQsCQAJAIAUCfyAEKAIIQYCAgIB4RgRAIAQoAgwhAEEBDAELQdQAEHEiAEUNASAAQQA2AgggAEKBgICAEDcCACAAQQxqIARBCGpByAD8CgAAIABBCGohAEEACyICNgIIIAUgAEEAIAIbNgIEIAVBACAAIAIbNgIAIARB0ABqJAAMAQsACyAFKAIAIAUoAgQgBSgCCCAFQRBqJAAL9QEBBH8jAEEQayIFJAAQ2gQiBCABJgEQ2gQiBiACJgEgBCEHIwBB0ABrIgQkAAJAIANFBEAgBEEIaiAAIAcgBkEAQQAQOwwBCyAEQQhqIAAgByAGQQEgAxA7CwJAAkACfyAEKAIIQYCAgIB4RgRAQQEhACAEKAIMDAELQdQAEHEiA0UNAUEAIQAgA0EANgIIIANCgYCAgBA3AgAgA0EMaiAEQQhqQcgA/AoAACADQQhqCyEDIAUgADYCCCAFIANBACAAGzYCBCAFQQAgAyAAGzYCACAEQdAAaiQADAELAAsgBSgCACAFKAIEIAUoAgggBUEQaiQAC5oLAgh/An4jAEEQayIIJAAgAiEHIwBB4AFrIgQkAEGAgICAeCECAkAgAEUEQEGAgICAeCEBDAELIACtIAGtQiCGhCEMCyAHBEAgB60gA61CIIaEIQ0gAyECC0GAgICAeCEDIA2nIQcCQAJAAkAgCAJ/AkACQAJAAkACQAJAIAFBgICAgHhHBEAgBEEQaiAMpyIAIAxCIIinEJEFIAQtABBBAUYEQCAEKAIUIQUgBEEANgKcASAEQoCAgIAQNwKUASAEQZyTwQA2AqQBIARCoICAgA43AqgBIAQgBEGUAWo2AqABIAUgBEGgAWoQrwQNBCAEKAKUASEGIAQoApgBIgogBCgCnAEQ7AghAyAGBEAgCkEEaygCACIJQXhxIgtBBEEIIAlBA3EiCRsgBmpJDQogCUEAIAsgBkEnaksbDQsgChCiAgsgBSAFKAIAKAIAEQMAIAEEQCAAQQRrKAIAIgVBeHEiBkEEQQggBUEDcSIFGyABakkNCiAFQQAgBiABQSdqSxsNCyAAEKICCyACQYCAgIB4ckGAgICAeEYNByAHQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyACakkNCSAAQQAgASACQSdqSxsNCiAHEKICQQEMCAsgBC0AESEFIAEEQCAAQQRrKAIAIgNBeHEiBkEEQQggA0EDcSIDGyABakkNCSADQQAgBiABQSdqSxsNBSAAEKICCyAEQoCAgIAgNwJIIARCAjcCQCAEQgA3AjggBEKAgICAIDcCMCAEQgQ3AiggBEIANwIgIARCgICAgMAANwIYIARCADcCUCAEQQhqIAUgBEEYahDgAkGAgICAeCEGIAQoAgwhCSAEKAIIIQpBgICAgHghAyACQYCAgIB4Rw0BDAILIARBLGoiAEIANwIAIARBPGoiAUKAgICAIDcCACAEQcwAakICNwIAIARCgICAgMAANwIkIARCBDcCHCAEQQA2AlQgBEICNwI0IARCADcCRCAEQdgBakEANgIAIARB0AFqQgI3AwAgBEHAAWogAf0AAgD9CwMAIARBsAFqIAD9AAIA/QsDACAEIAT9AAIc/QsDoAFBBiEFIAJBgICAgHhGDQELIA1CIIinIQNBASEBIA1CgICAgBBaBEAgAxBxIgFFDQQLIAMEQCABIAcgA/wKAAALIAGtIA1CgICAgHCDhCEMCyAEQZABaiIBIARB2AFqKAIANgIAIARBiAFqIARB0AFqKQMANwMAIARB+ABqIARBwAFq/QADAP0LAwAgBEHoAGogBEGwAWr9AAMA/QsDACAEIAT9AAOgAf0LA1hB8AAQcSIARQ0CIAAgBjYCGCAAIAw3AhAgACADNgIMIABBADYCCCAAQoCAgIAQNwIAIAAgBCkDWDcCHCAAIAU6AGwgACAJNgJoIAAgCjYCZCAAQYCAgIB4NgJYIABBJGogBEHgAGr9AAMA/QsCACAAQTRqIARB8ABq/QADAP0LAgAgAEHEAGogBEGAAWr9AAMA/QsCACAAQdQAaiABKAIANgIAIAJBgICAgHhyQYCAgIB4RwRAIAdBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0GIAFBACADIAJBJ2pLGw0HIAcQogILQRwQcSICRQ0CIAJB2O/AADYCGCACQQE2AhQgAkHA78AANgIQIAIgADYCDCACQQA2AgggAkKBgICAEDcCACACQQhqIQNBAAwEC0GgnsYAQTcgBEHfAWpBtJPBAEHYnsYAEOAGAAtBjI3IAEEuQbyNyAAQ6wcLAAtBAQsiATYCCCAIIANBACABGzYCBCAIQQAgAyABGzYCACAEQeABaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAIKAIAIAgoAgQgCCgCCCAIQRBqJAAL9wEBBH8jAEEQayIFJAAQ2gQiBiABJgEQ2gQiBCADJgEgAiEHIAQhAiMAQfAAayIEJAACQCAHRQRAIARBCGogACAGQQBBACACEGcMAQsgBEEIaiAAIAZBASAHIAIQZwsCQAJAIAUCfyAEKAIIQYCAgIB4RgRAIAQoAgwhAEEBDAELQfQAEHEiAEUNASAAQQA2AgggAEKBgICAEDcCACAAQQxqIARBCGpB6AD8CgAAIABBCGohAEEACyICNgIIIAUgAEEAIAIbNgIEIAVBACAAIAIbNgIAIARB8ABqJAAMAQsACyAFKAIAIAUoAgQgBSgCCCAFQRBqJAAL/AECAn8BfiMAQRBrIgIkACACQQE7AQwgAiABNgIIIAIgADYCBCMAQRBrIgEkACACQQRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEGAhsgAIAEoAgQgASgCCCIALQAIIAAtAAkQkgYACyAAIAM2AgQgACACNgIAIABB5IXIACABKAIEIAEoAggiAC0ACCAALQAJEJIGAAsnACACIARGBEAgBARAIAMgASAE/AoAAAsPCyAEIAJB/JrFABDeCQALJgEBfyMAQRBrIgIkACABKAIEGiAAQYj7xwAgARDBAyACQRBqJAALMwAgASgCACAAKAIAKAIAQQJ0IgBB2LDJAGooAgAgAEG0sMkAaigCACABKAIEKAIMEQAAC+AFAQt/IwBBEGsiBSQAENoEIgYgASYBIwBBsANrIgIkAAJAAkACQAJAAkACQCAABEAgAEEIayIHIAcoAgBBAWoiAzYCACADRQ0BIAAoAgAiBEH/////B08NAiAAIARBAWo2AgBBAiEDAkAgBhC5CiIKRQRAIAJB5AFqIAYQtQEgAigC5AEhBCACLQCAAiIDQQJGBEBBASEDDAILIAJBIGogAkH4AWopAgA3AwAgAkEOaiACQYMCai0AADoAACACIAL9AALoAf0LAxAgAiACLwCBAjsBDAsgAkHwAWogAkEYav0AAwD9CwIAIAJBgwJqIAJBDmotAAA6AAAgAiAENgLkASACIAIpAxA3AugBIAIgAzoAgAIgAiACLwEMOwCBAiACQShqIABBBGpBACACQeQBaiIEEIQBAkAgAigCKEECRgRAIAIoAiwhAyACQQA2AqgDIAJCgICAgBA3AqADIAJBnJPBADYC6AEgAkKggICADjcC7AEgAiACQaADajYC5AEgAyAEEK8EDQYgAigCoAMhCCACKAKkAyILIAIoAqgDEOwIIQQgCARAIAtBBGsoAgAiCUF4cSIMQQRBCCAJQQNxIgkbIAhqSQ0IIAlBACAMIAhBJ2pLGw0JIAsQogILIAMgAygCACgCABEDAEEBIQMgBkGECEkNAiAKDQEMAgsgAkHkAWoiAyACQShqQbwB/AoAACADENIBIQRBACEDIApFIAZBhAhJcg0BCyAGEJsHCyAAIAAoAgBBAWs2AgAgByAHKAIAQQFrIgA2AgAgAEUEQCAHEOMGCyAFIAM2AgggBSAEQQAgAxs2AgQgBUEAIAQgAxs2AgAgAkGwA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyACQa8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgBSgCACAFKAIEIAUoAgggBUEQaiQAC+AFAQt/IwBBEGsiBSQAENoEIgYgASYBIwBBsANrIgIkAAJAAkACQAJAAkACQCAABEAgAEEIayIHIAcoAgBBAWoiAzYCACADRQ0BIAAoAgAiBEH/////B08NAiAAIARBAWo2AgBBAiEDAkAgBhC5CiIKRQRAIAJB5AFqIAYQtQEgAigC5AEhBCACLQCAAiIDQQJGBEBBASEDDAILIAJBIGogAkH4AWopAgA3AwAgAkEOaiACQYMCai0AADoAACACIAL9AALoAf0LAxAgAiACLwCBAjsBDAsgAkHwAWogAkEYav0AAwD9CwIAIAJBgwJqIAJBDmotAAA6AAAgAiAENgLkASACIAIpAxA3AugBIAIgAzoAgAIgAiACLwEMOwCBAiACQShqIABBBGpBASACQeQBaiIEEIQBAkAgAigCKEECRgRAIAIoAiwhAyACQQA2AqgDIAJCgICAgBA3AqADIAJBnJPBADYC6AEgAkKggICADjcC7AEgAiACQaADajYC5AEgAyAEEK8EDQYgAigCoAMhCCACKAKkAyILIAIoAqgDEOwIIQQgCARAIAtBBGsoAgAiCUF4cSIMQQRBCCAJQQNxIgkbIAhqSQ0IIAlBACAMIAhBJ2pLGw0JIAsQogILIAMgAygCACgCABEDAEEBIQMgBkGECEkNAiAKDQEMAgsgAkHkAWoiAyACQShqQbwB/AoAACADENIBIQRBACEDIApFIAZBhAhJcg0BCyAGEJsHCyAAIAAoAgBBAWs2AgAgByAHKAIAQQFrIgA2AgAgAEUEQCAHEOMGCyAFIAM2AgggBSAEQQAgAxs2AgQgBUEAIAQgAxs2AgAgAkGwA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyACQa8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgBSgCACAFKAIEIAUoAgggBUEQaiQAC58RAwx/A34CfSMAQRBrIg0kACMAQSBrIgQkAEGwtckAKAIARQRAEFYLAkACQAJAAkACfwJAAkBBuLXJACgCAEUEQEG4tckAQX82AgACQAJAQcy1yQAoAgBFDQBBxLXJACgCACIJQdi1yQApAwAiDiAArYUiD0I4hiAPQoD+A4NCKIaEIA9CgID8B4NCGIYgD0KAgID4D4NCCIaEhCAOQgiIQoCAgPgPgyAOQhiIQoCA/AeDhCAOQiiIQoD+A4MgDkI4iISEhELSgaqbq/qC16d/fiIOQjiGIA5CgP4Dg0IohoQgDkKAgPwHg0IYhiAOQoCAgPgPg0IIhoSEIA5CCIhCgICA+A+DIA5CGIhCgID8B4OEIA5CKIhCgP4DgyAOQjiIhISEIA9C2KLR78Kp5b8tfoUiEEI4hiAQQoD+A4NCKIaEIBBCgID8B4NCGIYgEEKAgID4D4NCCIaEhCAQQgiIQoCAgPgPgyAQQhiIQoCA/AeDhCAQQiiIQoD+A4MgEEI4iISEhEHQtckAKQMAIg5Cf4V+Ig9COIYgD0KA/gODQiiGhCAPQoCA/AeDQhiGIA9CgICA+A+DQgiGhIQgD0IIiEKAgID4D4MgD0IYiEKAgPwHg4QgD0IoiEKA/gODIA9COIiEhIQgECAOQjiGIA5CgP4Dg0IohoQgDkKAgPwHg0IYhiAOQoCAgPgPg0IIhoSEIA5CCIhCgICA+A+DIA5CGIhCgID8B4OEIA5CKIhCgP4DgyAOQjiIhISEfoUgEIkiD6dxIQMgD0IZiEL/AINCgYKEiJCgwIABfiEOQcC1yQAoAgAiBkEgayECA0AgAyAGaikAACIQIA6FIg9Cf4UgD0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIPUEUEQANAIAAgAiAPeqdBA3YgA2ogCXEiBUEFdGsoAgBGDQQgD0IBfSAPgyIPUEUNAAsLIBAgEEIBhoNCgIGChIiQoMCAf4NQRQ0BIAMgCEEIaiIIaiAJcSEDDAALAAtBiPTAABDdCQALIAZBACAFa0EFdGpBBGsoAgAiCigCCCIAQf////8HTw0BIAogAEEBajYCCCAKKAIUBEAgCigCEEEKai8BACIAQf//AXFFBEAgAEEQdAwFCyAAQf8HcSECIABBgIACcSEFIABBgPgBcSIAQYD4AUYEQCAFQRB0IgBBgICA/AdyIAJFDQUaIAAgAkENdHJBgICA/gdyDAULIAVBEHQhBSAARQ0DIABBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAFcgwEC0EAQQBBmPTAABCMBwwEC0GsisEAELAKAAtB8PTAABCxCgALIAIgAmdBEGsiAEH//wNxQQhqdEH///8DcSAFQYCAgNgDciAAQRd0a3ILQwAAoD8hEUMAAKA/QwAAgD8gASABQR91IgBzIABrIgJBAXEbIRIgAkECTwRAA0AgEiARIBGUIhGUIBIgAkECcRshEiACQQNLIAJBAXYhAg0ACwtBBBBxIgVFDQC+QwAAgD8gEpUgEiABQQBIG5UhESAFQQA2AgAgBEEANgIQIARCgICAgMAANwIIQQQhC0EBIQhBASEDAkADQCAEQQA2AhwgBEKAgICAwAA3AhQgBSADQQJ0aiEGIAUhAANAIAAoAgAiByAKKAIUIgFPBEAgByABQcD0wAAQjAcACwJAIBECfyAKKAIQIAdBBHRqIglBCmovAQAiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhAyABQYCAAnEhAiABQYD4AXEiAUGA+AFGBEAgAkEQdCIBQYCAgPwHciADRQ0BGiABIANBDXRyQYCAgP4HcgwBCyACQRB0IgIgAUENdEGAgID8AHEgA0ENdHJBgICAwANqciABDQAaIAMgA2dBEGsiAUH//wNxQQhqdEH///8DcSACQYCAgNgDciABQRd0a3ILvmBFBEAgCSgCACIDIAMgCS8BDCIBak8NASAEKAIcIgJBAnQhBwNAIAQoAhQgAkYEQCAEQRRqQdD0wAAQ+gULIAQoAhggB2ogAzYCACAEIAJBAWoiAjYCHCADQQFqIQMgB0EEaiEHIAFBAWsiAQ0ACwwBCyAEKAIIIAxGBEAgBEEIakHg9MAAEPoFIAQoAgwhCwsgCyAMQQJ0aiAHNgIAIAQgDEEBaiIMNgIQCyAAQQRqIgAgBkcNAAsCQCAIBEAgBUEEaygCACIAQXhxIgIgCEECdCIBQQRBCCAAQQNxIgAbakkNASAAQQAgAiABQSdqSxsNBiAFEKICCyAEKAIYIQUgBCgCFCEIIAQoAhwiA0UNAgwBCwsMAgsgDBC2CSELIAQoAgwhACAEKAIIIQkgDARAIAxBAnQhB0EAIQMgACECA0AgCyUBIAMgAigCABAaIANBAWohAyACQQRqIQIgB0EEayIHDQALCyAJBEAgAEEEaygCACIBQXhxIgYgCUECdCICQQRBCCABQQNxIgEbakkNAiABQQAgBiACQSdqSxsNAyAAEKICCxC/CSIGQaj0wABBBxDsCCIAIAsQwAkCQEG0u8kALQAARQRAQbi7yQBBADYCAEG0u8kAQQA6AAAgC0GECE8EQCALEJsHCyAAQYQITwRAIAAQmwcLIAgEQCAFQQRrKAIAIgBBeHEiAiAIQQJ0IgFBBEEIIABBA3EiABtqSQ0EIABBACACIAFBJ2pLGw0CIAUQogILIAogCigCCEEBazYCCCANQgA3AgQgDSAGNgIAQbi1yQBBuLXJACgCAEEBajYCACAEQSBqJAAMBQtBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgBCAANgIUQdjmyABBKyAEQRRqQdjowABBsPTAABDgBgALDAILAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIA0oAgAgDSgCBCANKAIIIA1BEGokAAuWCQILfwF7IwBBEGsiCCQAENoEIgsgASYBIAAhBiMAQUBqIgQkAEGwtckAKAIARQRAEFYLAkACQAJAAkACQEG4tckAKAIARQRAQbi1yQBBfzYCACAGQf////8ASw0BIAZBBHQiAEH9////B08NAUGgtskAKAIAIQwCQAJAIABFBEBBBCEADAELIAYhBSAAEHEiAEUNAQtBGBBxIglFDQAgBkEQdiAGQf//A3FBAEdqIQMgCUEANgIUIAkgADYCECAJIAU2AgwgCUEANgIIIAlCgYCAgBA3AgAgBkUEQEEEIQpBBCEHDAcLIANBAnQiBxBxIgpFDQACQCADQQRPBED9DAAAAAABAAAAAgAAAAMAAAAhDSAKIQAgA0H8P3EiAiEFA0AgACAN/QsCACAAQRBqIQAgDf0MBAAAAAQAAAAEAAAABAAAAP2uASENIAVBBGsiBQ0ACyACIANGDQELIAogAkECdGohAANAIAAgAjYCACAAQQRqIQAgAyACQQFqIgJHDQALIAcQcSIHRQ0BQQAhAiADQQRJDQUMBAsgBxBxIgcNAwsAC0GsisEAELAKAAtByPLAABD/BwAL/QwAAAAAAQAAAAIAAAADAAAAIQ0gByEAIANB/D9xIgIhBQNAIAAgDf0LAgAgAEEQaiEAIA39DAQAAAAEAAAABAAAAAQAAAD9rgEhDSAFQQRrIgUNAAsgAiADRg0BCyAHIAJBAnRqIQADQCAAIAI2AgAgAEEEaiEAIAMgAkEBaiICRw0ACwsgAyECCyAEIAM2AjggBCAHNgI0IAQgAzYCMCAEIAM2AiwgBCAKNgIoIAQgAjYCJCAEIAk2AjwgBEEIaiAMIARBJGoQnwICQAJAAkACQAJAAkACQCAEKAIIIgBBgICAgHhGDQAgBCgCICICIAIoAgBBAWsiAzYCACADRQRAIAIQ0gULIAAEQCAEKAIMIgJBBGsoAgAiA0F4cSIFIABBAnQiAEEEQQggA0EDcSIDG2pJDQIgA0EAIAUgAEEnaksbDQMgAhCiAgsgBCgCFCIARQ0AIAQoAhgiAkEEaygCACIDQXhxIgUgAEECdCIAQQRBCCADQQNxIgMbakkNAyADQQAgBSAAQSdqSxsNBCACEKICC0GgtskAQaC2yQAoAgBBAWo2AgAgDEEAIAYgCxDTARC/CSICQbDywABBBRDsCCIAIAy4ELcJIgYQwAlBtLvJAC0AAA0EQbi7yQBBADYCAEG0u8kAQQA6AAAgBkGECE8EQCAGEJsHCyAAQYQITwRAIAAQmwcLQbi1yQBBuLXJACgCAEEBajYCACALQYQITwRAIAsQmwcLIAhCADcCBCAIIAI2AgAgBEFAayQADAULQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBtLvJAEEAOgAAQbi7yQAoAgAhAEG4u8kAQQA2AgAgBCAANgIkQdjmyABBKyAEQSRqQdjowABB2PLAABDgBgALIAgoAgAgCCgCBCAIKAIIIAhBEGokAAvLAwEDfyMAQRBrIgMkAEEIIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSAAKAIAIgVBgICAgHhzIAVBAE4bQQFrDhUBAgMEBQYHCAkKCwwNDg8UFBAREhMACyADIAAtAAQ6AAEgA0EAOgAADBYLIAMgADEABDcDCAwTCyADIAAzAQQ3AwgMEgsgAyAANQIENwMIDBELIAMgACkDCDcDCAwQCyADIAAwAAQ3AwgMEAsgAyAAMgEENwMIDA8LIAMgADQCBDcDCAwOCyADIAApAwg3AwgMDQsgAyAAKgIEuzkDCCADQQM6AAAMDQsgAyAAKwMIOQMIIANBAzoAAAwMCyADIAAoAgQ2AgQgA0EEOgAADAsLIAMgACkDCDcCBCADQQU6AAAMCgsgAyAAKQIENwIEIANBBToAAAwJCyADIAApAwg3AgQgA0EGOgAADAgLIAMgACkCBDcCBCADQQY6AAAMBwsgA0EHOgAADAYLIANBCToAAAwFCyADQQo6AAAMBAtBCyEECyADIAQ6AAAMAgsgA0EBOgAADAELIANBAjoAAAsgAyABIAIQ3wYgA0EQaiQACy8AIAEoAgAgAC0AAEEEakH/AXFBAnQiACgCgO1BIAAoAuTsQSABKAIEKAIMEQAACy8AIAEoAgAgAC0AAEEBa0H/AXFBAnQiACgCwItJIAAoAviKSSABKAIEKAIMEQAACy8AIAEoAgAgAC0AAEEBa0H/AXFBAnQiACgC4IxJIAAoAoiMSSABKAIEKAIMEQAACy8AIAEoAgAgAC0AAEEBa0H/AXFBAnQiACgCgJpJIAAoAriZSSABKAIEKAIMEQAACy8AIAEoAgAgAC0AAEEBa0H/AXFBAnQiACgCoJtJIAAoAsiaSSABKAIEKAIMEQAACy8AIAEoAgAgAC0AAEEEakH/AXFBAnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIENwIAQYC1yQAoAgAhA0H8tMkAQgA3AgBB+LTJACgCACEGQfS0yQAoAgAhDkH0tMkAQoCAgIDAADcCAEHstMkAKAIAIQVB7LTJAEIENwIAQei0yQAoAgAhDEHktMkAQgA3AgBB4LTJACgCACEKQdy0yQAoAgAhEEHctMkAQoCAgIDAADcCAEHUtMkAKAIAQdS0yQBCATcCAEGUtckAQQA2AgBFDQACQAJAIBAEQCAKQQRrKAIAIglBeHEiDyAQQQJ0IhBBBEEIIAlBA3EiCRtqSQ0BIAlBACAPIBBBJ2pLGw0CIAoQogILIAwEQCAFQQRrKAIAIgpBeHEiECAMQQJ0IgxBBEEIIApBA3EiChtqSQ0BIApBACAQIAxBJ2pLGw0CIAUQogILIA4EQCAGQQRrKAIAIgVBeHEiDCAOQQJ0Ig5BBEEIIAVBA3EiBRtqSQ0BIAVBACAMIA5BJ2pLGw0CIAYQogILIAMEQCAIQQRrKAIAIgZBeHEiDiADQQJ0IgNBBEEIIAZBA3EiBhtqSQ0BIAZBACAOIANBJ2pLGw0CIAgQogILIARFDQIgC0EEaygCACIIQXhxIgMgBEECdCIEQQRBCCAIQQNxIggbakkNACAIQQAgAyAEQSdqSxsNASALEKICDAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACwsCQAJAQdi0yQAoAgBFBEBB2LTJAEF/NgIAIAAQyQIgE0EAIA0Q4QghEEHktMkAKAIAIgsgDU8EQEHgtMkAKAIAIQsgByAQELgKIgQ2AgwgByANNgIYIAQgDUYEQCALIA0gEBDhCSAAEMkCQeS0yQAoAgAiACANTwRAQeC0yQAoAgAhC0H4tMkAKAIAIQQCQEH8tMkAKAIAIgpFDQAgCkECdCIARQ0AIARBACAA/AsAC0GEtckAKAIAIQ4CQEGItckAKAIAIgxFDQAgDEECdCIARQ0AIA5BACAA/AsACyANQQJ0IQggDQRAIAghAyALIQADQAJAIAAoAgAiBkGAgID8B08NACAKIAZBf3MiBUH//wNxIgZLBEAgBCAGQQJ0aiIGIAYoAgBBAWo2AgAgDCAFQRB2IgZLBEAgDiAGQQJ0aiIGIAYoAgBBAWo2AgAMAgsgBiAMQYDywAAQjAcACyAGIApB8PHAABCMBwALIABBBGohACADQQRrIgMNAAsLAkAgCkUEQEEAIQMMAQsgCkEBa0H/////A3EiAEEBaiIDQQdxIQUCQCAAQQdJBEBBACEDIAQhAAwBCyADQfj///8HcSEGQQAhAyAEIQADQCAAKAIAIQkgACADNgIAIABBBGoiDygCACERIA8gAyAJaiIDNgIAIABBCGoiCSgCACEPIAkgAyARaiIDNgIAIABBDGoiCSgCACERIAkgAyAPaiIDNgIAIABBEGoiCSgCACEPIAkgAyARaiIDNgIAIABBFGoiCSgCACERIAkgAyAPaiIDNgIAIABBGGoiCSgCACEPIAkgAyARaiIDNgIAIABBHGoiCSgCACERIAkgAyAPaiIDNgIAIAMgEWohAyAAQSBqIQAgBkEIayIGDQALCyAFRQ0AA0AgACgCACEGIAAgAzYCACAAQQRqIQAgAyAGaiEDIAVBAWsiBQ0ACwsgByADNgIAIA0EQCAIIAtqIQ8gC0EEaiEGIAhBBGtBAnZBAWohEUGQtckAKAIAIRRBlLXJACgCACEJQQAhBSALIQgDQCAGIQACQCAIKAIAIghBgICA/AdPDQACQCAKIAhBf3NB//8DcSIISwRAIAQgCEECdGoiCCgCACIGIAlPDQEgFCAGQQJ0aiAFNgIAIAggCCgCAEEBajYCAAwCCyAIIApB0PHAABCMBwALIAYgCUHg8cAAEIwHAAsgAEEEQQAgACAPRxtqIQYgACEIIBEgBUEBaiIFRw0ACwsCQCAMRQ0AIAxBAWtB/////wNxIgRBAWoiCEEHcSEGQQAhBSAOIQAgBEEHTwRAIAhB+P///wdxIQgDQCAAKAIAIQQgACAFNgIAIABBBGoiCigCACEJIAogBCAFaiIENgIAIABBCGoiBSgCACEKIAUgBCAJaiIENgIAIABBDGoiBSgCACEJIAUgBCAKaiIENgIAIABBEGoiBSgCACEKIAUgBCAJaiIENgIAIABBFGoiBSgCACEJIAUgBCAKaiIENgIAIABBGGoiBSgCACEKIAUgBCAJaiIENgIAIABBHGoiBSgCACEJIAUgBCAKaiIENgIAIAQgCWohBSAAQSBqIQAgCEEIayIIDQALCyAGRQ0AA0AgACgCACAAIAU2AgAgAEEEaiEAIAVqIQUgBkEBayIGDQALCyADRQ0EQZS1yQAoAgAiBEUNBEGQtckAKAIAIQAgA0EBayEGIARBAnRBBGshBEHstMkAKAIAIQ9B8LTJACgCACEFA0ACQAJAIA0gACgCACIISwRAIAsgCEECdGooAgBBf3NBEHYiCiAMTw0BIA4gCkECdGoiCigCACIJIAVJDQIgCSAFQcDxwAAQjAcACyAIIA1BoPHAABCMBwALIAogDEGw8cAAEIwHAAsgDyAJQQJ0aiAINgIAIAogCigCAEEBajYCACAGRQ0FIAZBAWshBiAAQQRqIQAgBCAEQQRrIQQNAAsMBAtBACANIABBkPLAABDqBwALDAMLQQAgDSALQYjuwAAQ6gcAC0GsisEAELAKAAsCQCAMQYCABE8EQCAOKAL8/w8gA0YNASAHIA5B/P8Paq1CgICAgBCENwMgIAcgB61CgICAgBCENwMYIAdCAjcCNCAHQQI2AiwgB0Hw8MAANgIoIAcgB0EYaiIANgIwIAdBDGoiCyAHQShqIgQQ7AMgBygCECEDIAcoAgwiCEGAgICAeEYNASAHIAcoAhQ2AhQgByADNgIQIAcgCDYCDCAHQQE2AiwgB0Gg+McANgIoIAdCATcCNCAHIAutQoCAgICwBYQ3AwAgByAHNgIwIAAgBBCxBiAHKAIcIAcoAiAQjwoAC0H//wMgDEGQ8cAAEIwHAAsCQCADRQ0AAkBB8LTJACgCACIAIANPBEBB7LTJACgCACEEIBJBACADEOEIIgAQuAohCyAHIAM2AhggByALNgIMIAMgC0cNASAAIAQgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB+O3AABDqBwALDAELIBBBhAhPBEAgEBCbBwtB2LTJAEHYtMkAKAIAQQFqNgIAIBJBhAhPBEAgEhCbBwsgE0GECE8EQCATEJsHCyAHQUBrJAAgAwwBCyAHQQA2AihBACAHQQxqIAdBGGogB0EoakHg+cQAEPUHAAsLjxEBDX8Q2gQiAyABJgECfyAAIQkQ2gQiDSACJgEgAyEOIwBBQGoiBCQAIAMQvAohB0GotMkAKAIARQRAAkBBzLTJACgCACEAQci0yQAoAgAhA0HItMkAQoCAgIDAADcCAEHAtMkAKAIAIQZBwLTJAEIENwIAQby0yQAoAgAhCEG4tMkAQgA3AgBBtLTJACgCACEFQbC0yQAoAgAhCkGwtMkAQoCAgIAgNwIAQai0yQAoAgBBqLTJAEIBNwIAQdC0yQBBADYCAEUNAAJAAkAgCgRAIAVBBGsoAgAiC0F4cSIMIApBAXQiCkEEQQggC0EDcSILG2pJDQEgC0EAIAwgCkEnaksbDQIgBRCiAgsgCARAIAZBBGsoAgAiBUF4cSIKIAhBAnQiCEEEQQggBUEDcSIFG2pJDQEgBUEAIAogCEEnaksbDQIgBhCiAgsgA0UNAiAAQQRrKAIAIgZBeHEiCCADQQJ0IgNBBEEIIAZBA3EiBhtqSQ0AIAZBACAIIANBJ2pLGw0BIAAQogIMAgtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALCwJAAkACQEGstMkAKAIARQRAQay0yQBBfzYCAEG4tMkAKAIAIgMgB0kEQCAHIANrIgBBsLTJACgCACADa0sEQEGwtMkAIAMgAEECQQIQpAVBuLTJACgCACEDC0G0tMkAKAIAIgggA0EBdGohBiAAQQJPBH8gAEEBdEECayIFBEAgBkEAIAX8CwALIAAgA2oiAEEBayEDIAggAEEBdGpBAmsFIAYLQQA7AQBBuLTJACADQQFqNgIAC0HEtMkAKAIAIgMgB0kEQCAHIAMiAGsiBkG8tMkAKAIAIABrSwRAQby0yQAgACAGQQRBBBCkBUHEtMkAKAIAIQALQcC0yQAoAgAiBSAAQQJ0aiEIIAZBAk8EfyAHIANBf3NqQQJ0IgMEQCAIQQAgA/wLAAsgACAGaiIDQQFrIQAgBSADQQJ0akEEawUgCAtBADYCAEHEtMkAIABBAWo2AgALQdC0yQAoAgAiA0GA+AFNBEBBgfgBIAMiAGsiB0HItMkAKAIAIABrSwRAQci0yQAgACAHQQRBBBCkBUHQtMkAKAIAIQALQcy0yQAoAgAiBiAAQQJ0aiEHIANBgPgBRwR/QYDgByADQQJ0ayIIBEAgB0EAIAj8CwALIAYgACADa0ECdGpBgOAHagUgBwtBADYCAAsgDiUBQQAgCRAcIQEQ2gQiCCABJgEgCUG4tMkAKAIAIgBLDQFBACEGQbS0yQAoAgAhByAEIAgQvAoiADYCDCAEIAk2AhggACAJRw0DIAcgCSAIJQEQHUHQtMkAQQA2AgBByLTJACgCAEGA+AFNBEBByLTJAEEAQYH4AUEEQQQQpAVB0LTJACgCACEGC0HMtMkAKAIAIgogBkECdGoiAEEAQYDgB/wLAEHQtMkAIAZBgfgBaiIPNgIAIABBgOAHakEANgIAIAcgCUEBdCILaiEMAkAgCUUNACAHQQJqIQACfyALQQJrIgNBAnEEQCAAIQMgBwwBCyAHLwEAIgVB//cBTQRAIAogBUECdGoiBSAFKAIAQQFqNgIACyADRQ0BIABBAkEAIAtBAkcbaiEDIAALIQUDQCAFLwEAIgBBgPgBSQRAIAogAEECdGoiACAAKAIAQQFqNgIACyADQQJBACADIAxHG2ohBSADLwEAIgBB//cBTQRAIAogAEECdGoiACAAKAIAQQFqNgIACyAFQQBBAiAFIAxGIgAbaiEDIABFDQALCyAKIA9BAnRqQQhrIgUoAgAhAyAFQQA2AgAgBkEDcUEBRwRAIAZBAWtBA3EhAANAIAVBBGsiBSgCACEGIAUgAzYCACAEIAMgBmoiAzYCACAAQQFrIgANAAsLIAVBEGshBQNAIAVBDGoiACgCACEGIAAgAzYCACAEIAMgBmoiADYCACAFQQhqIgMoAgAhBiADIAA2AgAgBCAAIAZqIgA2AgAgBUEEaiIDKAIAIQYgAyAANgIAIAQgACAGaiIANgIAIAUoAgAhAyAFIAA2AgAgBCAAIANqIgM2AgAgBSAKRyAFQRBrIQUNAAsgCUUNAiAHQQJqIQYgC0ECa0EBdkEBaiELQcC0yQAoAgAhD0HEtMkAKAIAIQlBACEAA0AgBy8BACIHQYD4AUkEQCAJIAogB0ECdGoiBygCACIFTQRAIAUgCUGA8cAAEIwHAAsgDyAFQQJ0aiAANgIAIAcgBygCAEEBajYCAAsgBkECQQAgBiIHIAxHG2ohBiALIABBAWoiAEcNAAsMAgtBrIrBABCwCgALQQAgCSAAQezrwAAQ6gcACwJAIAooAgAgA0YNACAEIAqtQoCAgIAQhDcDICAEIAStQoCAgIAQhDcDGCAEQgI3AjQgBEECNgIsIARB8PDAADYCKCAEIARBGGoiADYCMCAEQQxqIgkgBEEoaiIHEOwDIAQoAhAhAyAEKAIMIgZBgICAgHhGDQAgBCAEKAIUNgIUIAQgAzYCECAEIAY2AgwgBEEBNgIsIARBoPjHADYCKCAEQgE3AjQgBCAJrUKAgICAsAWENwMAIAQgBDYCMCAAIAcQsQYgBCgCHCAEKAIgEI8KAAsCQCADRQ0AAkBBxLTJACgCACIAIANPBEBBwLTJACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwRAAALGQAgASgCAEH+lccAQQwgASgCBCgCDBEAAAsZACABKAIAQbOXxwBBEiABKAIEKAIMEQAACxkAIAEoAgBBxZfHAEEUIAEoAgQoAgwRAAALGQAgASgCAEHylscAQQ8gASgCBCgCDBEAAAsZACABKAIAQciCwQBBCiABKAIEKAIMEQAACxkAIAEoAgBBhJjHAEEXIAEoAgQoAgwRAAALGQAgASgCAEHM5cAAQRQgASgCBCgCDBEAAAsZACABKAIAQYCQxgBBAiABKAIEKAIMEQAACxkAIAEoAgBBxpbHAEEOIAEoAgQoAgwRAAALGQAgASgCAEGLkMYAQQUgASgCBCgCDBEAAAsZACABKAIAQYKQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBBupbHAEEMIAEoAgQoAgwRAAALGQAgASgCAEG45cAAQRQgASgCBCgCDBEAAAsZACABKAIAQeOWxwBBDyABKAIEKAIMEQAACxkAIAEoAgBBgZfHAEEPIAEoAgQoAgwRAAALGQAgASgCAEHUlscAQQ8gASgCBCgCDBEAAAsZACABKAIAQYiQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB4OXAAEEUIAEoAgQoAgwRAAALGQAgASgCAEHcksYAQQkgASgCBCgCDBEAAAsZACABKAIAQemVxwBBDiABKAIEKAIMEQAACxkAIAEoAgBBlpbHAEEMIAEoAgQoAgwRAAALGQAgASgCAEGulscAQQwgASgCBCgCDBEAAAsZACABKAIAQYqWxwBBDCABKAIEKAIMEQAACxIAIABBBGoQ6gIgAEEkahCxBAsSACAAQQRqEOoCIABBHGoQ4wQLEgAgAEEEahDqAiAAQRxqELEECxYAIABB8JnBADYCBCAAIAFBCGo2AgALGQAgASgCAEHn+8cAQQUgASgCBCgCDBEAAAsOACAABEAACyACEP8HAAsWACAAQcSXwQA2AgQgACABQRxqNgIACxYAIABBgJjBADYCBCAAIAFBHGo2AgALFgAgAEG8mMEANgIEIAAgAUEcajYCAAsWACAAQfiYwQA2AgQgACABQRxqNgIACxYAIABBtJnBADYCBCAAIAFBHGo2AgALFgAgAEGIlsEANgIEIAAgAUEcajYCAAsWACAAQfCZwQA2AgQgACABQRxqNgIACxYAIABBrJrBADYCBCAAIAFBHGo2AgALEwAgACAAIAAoAgAiAGo2AgAgAAsUACABKAIEGiAAQYzvwQAgARDBAwsRACACKAIEGiAAIAEgAhDBAwsUACABKAIEGiAAQbDxwQAgARDBAwsUACABKAIEGiAAQbTvwQAgARDBAwsUACABKAIEGiAAQdTxwQAgARDBAwsUACABKAIEGiAAQeCBwgAgARDBAwsUACABKAIEGiAAQey1xAAgARDBAwsUACABIAIgAyAEIAUgACgCABEHAAsUACABKAIEGiAAQaC6xQAgARDBAwsZACABKAIAQYS4xQBBEiABKAIEKAIMEQAACxQAIAEoAgQaIABBxJLGACABEMEDCxQAIAEoAgQaIABB+J3GACABEMEDCxYAIABBqLDHADYCBCAAIAFBHGo2AgALFgAgAEHksMcANgIEIAAgAUEcajYCAAsWACAAQbCvxwA2AgQgACABQRxqNgIACxYAIABB7K/HADYCBCAAIAFBIGo2AgALGQAgASgCAEGYrscAQQwgASgCBCgCDBEAAAsSACAAQQRqEOoCIABBIGoQgwILFgAgAEGopccANgIEIAAgAUEcajYCAAsWACAAQaCxxwA2AgQgACABQRxqNgIACxYAIABBnLbHADYCBCAAIAFBDGo2AgALFAAgASgCBBogAEHkt8cAIAEQwQMLFAAgASgCBBogAEHMhcgAIAEQwQMLFgAgASAAKAIAIgAoAgQgACgCCBCXAwsZACABKAIAQcSdyABBCyABKAIEKAIMEQAACxUBAW8gABAEIQEQ2gQiACABJgEgAAsXAgFvAX8gABArIQEQ2gQiAiABJgEgAgsUACAAKAIAIgAgACgCACgCABEDAAsUACAAKAIIIgAgACgCACgCABEDAAsUACAAKAIAIAEgACgCBCgCEBECAAuTBwEDfyMAQfAAayIFJAAgBSADNgIMIAUgAjYCCAJ/AkACQAJAAkAgAUGBAk8EQEH9ASEGA0AgACAGaiIHQQNqLAAAQb9/Sg0DIAdBAmosAABBv39KDQIgB0EBaiwAAEG/f0oNBCAHLAAAQb9/Sg0FIAZBBGsiBkF9Rw0AC0EAIQYMBAsgBSABNgIUIAUgADYCEEEBDAQLIAZBAmohBgwCCyAGQQNqIQYMAQsgBkEBaiEGCyAFIAA2AhAgBSAGNgIUQQVBACABIAZLIgYbIQdB9JjCAEEBIAYbCyEGIAUgBzYCHCAFIAY2AhgCQAJAIAUgASACTwR/IAEgA08NASADBSACCzYCKCAFQQM2AjQgBUG8msIANgIwIAVCAzcCPCAFIAVBGGqtQoCAgICgAYQ3A1ggBSAFQRBqrUKAgICAoAGENwNQIAUgBUEoaq1CgICAgBCENwNIDAELIAIgA00EQCACRSABIAJNckUEQCADIAIgACACaiwAAEG/f0obIQMLIAUgAzYCIAJ/AkACQCABIANNDQBBACEHAkAgA0UNAANAIAAgA2osAABBv39KBEAgAyEHDAILIANBAWsiAw0ACwsgASAHRg0AAkACQCAAIAdqIgIsAAAiA0EASARAIAItAAFBP3EhACADQR9xIQEgA0FfSw0BIAFBBnQgAHIhBgwCCyAFIANB/wFxNgIkQQEMBAsgAi0AAkE/cSAAQQZ0ciEAIANBcEkEQCAAIAFBDHRyIQYMAQsgAUESdEGAgPAAcSACLQADQT9xIABBBnRyciIGQYCAxABGDQELIAUgBjYCJCAGQYABTw0BQQEMAgsgBBDdCQALQQIgBkGAEEkNABpBA0EEIAZBgIAESRsLIQAgBSAHNgIoIAUgACAHajYCLCAFQQU2AjQgBUH8mcIANgIwIAVCBTcCPCAFIAVBGGqtQoCAgICgAYQ3A2ggBSAFQRBqrUKAgICAoAGENwNgIAUgBUEoaq1CgICAgOAFhDcDWCAFIAVBJGqtQoCAgIDwBYQ3A1AgBSAFQSBqrUKAgICAEIQ3A0gMAQsgBUEENgI0IAVBnJnCADYCMCAFQgQ3AjwgBSAFQRhqrUKAgICAoAGENwNgIAUgBUEQaq1CgICAgKABhDcDWCAFIAVBDGqtQoCAgIAQhDcDUCAFIAVBCGqtQoCAgIAQhDcDSAsgBSAFQcgAajYCOCAFQTBqIAQQjQgACxQAIAAoAgAgASAAKAIEKAIMEQIACxEAIAAgASACIAMgBCAFENIECxIAIABBEUEQIAEtAJMBGzoAAAsVAgFvAX8QBSEAENoEIgEgACYBIAELEQAgACUBIAElASACJQEQBhoLFQIBbwF/EAchABDaBCIBIAAmASABC30BA38Q2gQiAyABJgECQAJAAkAgAARAIABBCGsiAiACKAIAQQFqIgQ2AgAgBEUNASAAKAIADQIgAEF/NgIAIABBBGogAxDEAiAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4hsEA/QACAP0LAgALEQAgAEHIhsEA/QACAP0LAgALEQAgAEHYhsEA/QACAP0LAgALEQAgAEHohsEA/QACAP0LAgALEQAgAEH4hsEA/QACAP0LAgALEQAgAEGIh8EA/QACAP0LAgALEQAgAEGYh8EA/QACAP0LAgALEQAgAEGoh8EA/QACAP0LAgALEQAgAEG4h8EA/QACAP0LAgALEQAgAEHIh8EA/QACAP0LAgALEQAgAEHYh8EA/QACAP0LAgALEQAgAEHoh8EA/QACAP0LAgALEQAgAEH4h8EA/QACAP0LAgALEQAgAEGIiMEA/QACAP0LAgALEQAgAEGYiMEA/QACAP0LAgALEQAgAEGoiMEA/QACAP0LAgALEQAgAEG4iMEA/QACAP0LAgALEQAgAEHIiMEA/QACAP0LAgALEQAgAEHYiMEA/QACAP0LAgALEQAgAEHoiMEA/QACAP0LAgALEQAgAEH4iMEA/QACAP0LAgALEQAgAEGIicEA/QACAP0LAgALEQAgAEGYicEA/QACAP0LAgALEQAgAEGoicEA/QACAP0LAgALEQAgAEG4icEA/QACAP0LAgALEQAgAEHIicEA/QACAP0LAgALEQAgAEHYicEA/QACAP0LAgALDgAgAEG4oMEAIAEQwQMLDgAgAEGck8EAIAEQwQMLCgAgAEEEahDqAgsKACAAQQhqELEECxEAIABB8KDHAP0AAgD9CwIACxEAIABB5JPBAP0AAgD9CwIACxEAIABB9JPBAP0AAgD9CwIACxEAIABBhJTBAP0AAgD9CwIACxEAIABBlJTBAP0AAgD9CwIACxEAIABBpJTBAP0AAgD9CwIACxEAIABBtJTBAP0AAgD9CwIACxEAIABBxJTBAP0AAgD9CwIACxEAIABB1JTBAP0AAgD9CwIACxEAIABB5JTBAP0AAgD9CwIACw0AQeyNyABBGxCPCgALCQAgACABECgACw4AQYeOyABBzwAQjwoACwsAIAAoAgAgARBoCw4AIAFBsorDAEEYEJcDCw4AIAFBkIrDAEEgEJcDCxEAIABBkKHHAP0AAgD9CwIACw4AIAFBmJbIAEECEJcDCxEAIABBtLbEAP0AAgD9CwIACwwAIAAoAgAgARD8BAsRACAAQaS2xAD9AAIA/QsCAAsMACAAKAIAIAEQpgILDAAgACgCACABEPQECwwAIAAoAgAgARCeBAsMACAAKAIAIAEQiwULEQAgAEHgn8cA/QACAP0LAgALEQAgAEHQn8cA/QACAP0LAgALEQAgAEHgoMcA/QACAP0LAgALEQAgAEGAoMcA/QACAP0LAgALEQAgAEGgoMcA/QACAP0LAgALEQAgAEHAn8cA/QACAP0LAgALEQAgAEHAoMcA/QACAP0LAgALDQAgACABKQKEATcDAAsLACAALQCTAUECcgsKACAAQSBqEMYDCxEAIABB8J/HAP0AAgD9CwIACxEAIABBsKDHAP0AAgD9CwIACxEAIABB0KDHAP0AAgD9CwIACxEAIABBkKDHAP0AAgD9CwIACxEAIABBgKHHAP0AAgD9CwIACxEAIABBgPjHAP0AAgD9CwIACwwAIAAgASkCADcDAAsRACAAQZD4xwD9AAIA/QsCAAsKACAAIAElARAUC00BAX8jAEEwayIBJAAgAUEBNgIMIAFBoPjHADYCCCABQgE3AhQgASABQS9qrUKAgICAkAaENwMgIAEgAUEgajYCECABQQhqIAAQjQgAC00BAX8jAEEwayIBJAAgAUEBNgIMIAFBoPjHADYCCCABQgE3AhQgASABQS9qrUKAgICAoAaENwMgIAEgAUEgajYCECABQQhqIAAQjQgACwkAIABCATcDAAsJACAAQQA2AgALCgAgAEGAARDRBAsIACAAIAEQaAsSACAAQoaAgICAgICAgH83AwAL2QsCBX0GfwJ9QwAAgD8hAgJAAkACQAJAIAC8IgpBgICA/ANGDQAgAbwiCUH/////B3EiCEUNAAJ/AkAgAIsiA7wiB0GAgID8B0sgCEGAgID8B0tyRQRAIApBAE4NAUECIAhB////2wRLDQIaIAhBgICA/ANJDQFBACAIQZYBIAhBF3ZrIgt2IgwgC3QgCEcNAhpBAiAMQQFxawwCCyAAIAGSDAYLQQALIQsCQAJAAkACQCAIQYCAgPwDRwRAIAhBgICA/AdHDQECQAJAIAdBgICA/ANKIAdBgICA/ANIa0H/AXEOAgcBAAtDAAAAACABjCAJQQBOGwwKCyABQwAAAAAgCUEAThsMCQsgCUEASA0BIAAMCAsCQCAJQYCAgPgDRwRAIAlBgICAgARHDQEgACAAlAwJCyAKQQBODQILAkACQAJAAkAgB0EAIAdB/////wNxQYCAgPwDRxtFBEBDAACAPyADlSADIAlBAEgbIQIgCkEATg0IIAcgC2pBgICA/ANHDQEgAiACkyIAIACVDAwLQwAAgD8hBSAKQQBODQMgCw4CAQIDCyACjCACIAtBAUYbDAoLIAAgAJMiACAAlQwJC0MAAIC/IQULIAhBgICA6ARNBEAgA0MAAIBLlLwgByAHQYCAgARJIggbIgdB////A3EiCkGAgID8A3IhCyAHQRd1Qel+QYF/IAgbaiEIQQAhBwJAIApB8ojzAEkNACAKQdfn9gJJBEBBASEHDAELIApBgICA+ANyIQsgCEEBaiEICyAHQQJ0IgoqApC0SUMAAIA/IAoqAoi0SSIAIAu+IgSSlSICIAQgAJMiAyALQQF2QYDg//8BcSAHQRV0akGAgICCAmq+IgYgAyAClCIDvEGAYHG+IgKUkyAAIAaTIASSIAKUk5QiACACIAKUIgRDAABAQJIgACADIAKSlCADIAOUIgAgAJQgACAAIAAgACAAQ0LxUz6UQ1UybD6SlEMFo4s+kpRDq6qqPpKUQ7dt2z6SlEOamRk/kpSSIgaSvEGAYHG+IgCUIAMgBiAAQwAAQMCSIASTk5SSIgMgAyACIACUIgKSvEGAYHG+IgAgApOTQ084dj+UIABDxiP2uJSSkiICIAoqApi0SSIEIAIgAEMAQHY/lCIAkpIgCLIiApK8QYBgcb4iAyACkyAEkyAAk5MhAgwDCyAHQfj///sDTwRAIAdBh4CA/ANNBEAgA0MAAIC/kiIAQ3Cl7DaUIAAgAJRDAAAAPyAAIABDAACAvpRDq6qqPpKUk5RDO6q4v5SSIgIgAiAAQwCquD+UIgCSvEGAYHG+IgMgAJOTIQIMBAsgCUEATA0GDAcLIAlBAE4NBQwGC0MAAIA/IACVDAYLIACRDAULAkACQCADIAlBgGBxviIElCIAIAEgApQgASAEkyADlJIiAZIiArwiCUGAgICYBEwEQCAJQYCAgJgERg0BIAK8Qf////8HcSIHQYCA2JgESw0EIAEgAiAAk19FIAlBgIDYmHxHcg0CDAULDAULIAFDPKo4M5IgAiAAk14NBCACvEH/////B3EhBwtBACEIIAUCfSAHQYCAgPgDSwR/QQBBgICABCAHQRd2QQJqdiAJaiIHQf///wNxQYCAgARyQRYgB0EXdiIKa3YiCGsgCCAJQQBIGyEIIAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAAQQAAAOwFEAAkAAAATwMAAA0AAADsBRAAJAAAAE8DAAA+AAAA7AUQACQAAAC4AwAAIQAAAOwFEAAkAAAAuAMAAA0AAADsBRAAJAAAALYDAAAlAAAA7AUQACQAAADGAwAAIQAAAOwFEAAkAAAAxgMAAA0AAADsBRAAJAAAAMQDAAAlAAAA7AUQACQAAABZAwAADQAAAOwFEAAkAAAAWgMAAA0AAADsBRAAJAAAAFsDAAANAAAA7AUQACQAAABYAwAAOwAAAOwFEAAkAAAAhAMAACUAAADsBRAAJAAAAIQDAAA2AAAA7AUQACQAAACGAwAAHQAAAOwFEAAkAAAAgAMAACUAAADsBRAAJAAAAJYDAAAlAAAA7AUQACQAAACWAwAANgAAAOwFEAAkAAAAlgMAAEsAAADsBRAAJAAAAJYDAABgAAAA7AUQACQAAACYAwAAHgAAAOwFEAAkAAAAkgMAACUAAADsBRAAJAAAAKgDAAAlAAAA7AUQACQAAACoAwAANgAAAOwFEAAkAAAAqAMAAEsAAADsBRAAJAAAAKgDAABgAAAA7AUQACQAAACqAwAAHgAAAOwFEAAkAAAApAMAACUAAADsBRAAJAAAAHEDAAANAAAA7AUQACQAAAByAwAADQAAAOwFEAAkAAAAcwMAAA0AAADsBRAAJAAAAHQDAAANAAAA7AUQACQAAABwAwAAPQAAAOwFEAAkAAAAZQMAAA0AAADsBRAAJAAAAGYDAAANAAAA7AUQACQAAABnAwAADQAAAOwFEAAkAAAAZAMAAD8AAACmAxAAUgAAAFIAAAATAAAADQUQAEAAAAB2AAAAIAAAAA0FEABAAAAAdQAAACIAAAANBRAAQAAAAHQAAAAeAAAADQUQAEAAAABzAAAAJgAAAA0FEABAAAAAcgAAACQAAAANBRAAQAAAAFQAAAAXAAAADQUQAEAAAABVAAAAFwAAAA0FEABAAAAAVgAAABcAAAANBRAAQAAAAFgAAAAWAAAADQUQAEAAAABZAAAAFgAAAA0FEABAAAAAWgAAABYAAAANBRAAQAAAAFwAAAAqAAAADQUQAEAAAABcAAAAFAAAAA0FEABAAAAAXQAAACoAAAANBRAAQAAAAF0AAAAUAAAADQUQAEAAAABeAAAAKgAAAA0FEABAAAAAXgAAABQAAAANBRAAQAAAAGAAAAApAAAADQUQAEAAAABgAAAAGAAAAA0FEABAAAAAYgAAACYAAAANBRAAQAAAAGMAAAAmAAAADQUQAEAAAABkAAAAJgAAAA0FEABAAAAAZQAAACYAAAANBRAAQAAAAGgAAAAVAAAADQUQAEAAAABpAAAAFQAAAA0FEABAAAAAagAAABUAAAANBRAAQAAAAGsAAAAVAAAASW52YWxpZCAuc3BsYXQgZmlsZSBzaXpl7CwQABgAAABhdHRlbXB0ZWQgdG8gdGFrZSBvd25lcnNoaXAgb2YgUnVzdCB2YWx1ZSB3aGlsZSBpdCB3YXMgYm9ycm93ZWRNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tleQD6GRAAYwAAAGYKAAAfAAAA7AUQACQAAADuAQAAOAAAAOwFEAAkAAAA7gEAAFkAAADsBRAAJAAAAPcBAABHAAAA7AUQACQAAAD3AQAAOQAAAOwFEAAkAAAAZAIAAC4AAADsBRAAJAAAAGQCAAAfAAAA7AUQACQAAABlAgAAHwAAAOwFEAAkAAAAWQIAACoAAADsBRAAJAAAAIQCAAA2AAAA7AUQACQAAACEAgAAIwAAAOwFEAAkAAAAeAIAACoAAADsBRAAJAAAAKQCAAA2AAAA7AUQACQAAACkAgAAIwAAAOwFEAAkAAAAmAIAACoAAADsBRAAJAAAANQCAAAlAAAA7AUQACQAAADYAgAAPAAAAOwFEAAkAAAA2AIAAB0AAADsBRAAJAAAANICAAAyAAAA7AUQACQAAADDAgAAIQAAAOwFEAAkAAAAxwIAADgAAADsBRAAJAAAAMcCAAAZAAAA7AUQACQAAADBAgAALgAAAOwFEAAkAAAAtAIAAB0AAADsBRAAJAAAALcCAAAsAAAA7AUQACQAAAC3AgAAEQAAAOwFEAAkAAAAuAIAADAAAADsBRAAJAAAALICAAAqAAAA7AUQACQAAADjAgAAJgAAAOwFEAAkAAAA5wIAACAAAADsBRAAJAAAAOcCAAATAAAA7AUQACQAAADtAgAAJgAAAOwFEAAkAAAA8QIAACAAAADsBRAAJAAAAPECAAATAAAA7AUQACQAAAB/AQAANgAAAOwFEAAkAAAAgAEAADYAAADsBRAAJAAAAI0BAAAzAAAA7AUQACQAAACOAQAAMwAAAOwFEAAkAAAAigEAAEQAAADsBRAAJAAAAIUBAAApAAAATWlzc2luZyBjaGlsZF9jb3VudHMgb3IgY2hpbGRfc3RhcnRz+C8QACQAAADsBRAAJAAAAAACAAA1AAAA7AUQACQAAAAAAgAAVgAAAOwFEAAkAAAAMAIAACoAAADsBRAAJAAAABsCAAA2AAAA7AUQACQAAAAbAgAAVwAAAOwFEAAkAAAAxgEAABUAAADsBRAAJAAAAMQBAAAlAAAA7AUQACQAAADIAQAAKAAAAOwFEAAkAAAAyQEAACgAAADsBRAAJAAAAMcBAAAoAAAA7AUQACQAAADFAQAAKAAAAOwFEAAkAAAAEgIAADcAAADsBRAAJAAAABICAABYAEH84cAACwUBAAAAfQBBjOLAAAsFAQAAAH4AQZziwAALBQEAAAB/AEGs4sAACwUBAAAAgABBvOLAAAsFAQAAAIEAQcziwAALBQEAAACCAEHc4sAACwUBAAAAgwBB7OLAAAsFAQAAAIQAQfziwAALBQEAAACFAEGM48AACwUBAAAAhgBBnOPAAAsFAQAAAIcAQazjwAALBQEAAACIAEG848AACwUBAAAAiQBBzOPAAAsFAQAAAIoAQdzjwAALBQEAAACLAEHs48AACwUBAAAAjABB/OPAAAsFAQAAAI0AQYzkwAALBQEAAACNAEGc5MAACwUBAAAAjQBBrOTAAAsFAQAAAI0AQbzkwAALBQEAAACNAEHM5MAACwUBAAAAjQBB3OTAAAsFAQAAAI0AQezkwAALBQEAAACNAEH85MAACwUBAAAAjQBBjOXAAAsFAQAAAI0AQZzlwAAL6QEBAAAAjQAAAGFuIGFycmF5IG9mIGxlbmd0aCAxYW4gYXJyYXkgb2YgbGVuZ3RoIDJhbiBhcnJheSBvZiBsZW5ndGggM2FuIGFycmF5IG9mIGxlbmd0aCA0bWlzc2luZyBmaWVsZCBgAPQyEAAPAAAA6JIRAAEAAABpbnZhbGlkIGxlbmd0aCAAFDMQAA8AAAAakxEACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAANDMQABEAAADokhEAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAAWDMQABEAAABpMxAADABBkOfAAAsFAQAAAI4AQaDnwAALBQEAAACPAEGw58AACyUBAAAAkAAAAF4aEABgAAAAoAQAACIAAABeGhAAYAAAAJYEAAAmAEHg58AACwUBAAAAkQBB8OfAAAu9BgEAAACSAAAAc2gxc2gyc2gzYXNoM2Jsb2RUcmVlAAAAygUQACEAAAC4AAAAMAAAAMoFEAAhAAAAtgAAADAAAABtYXhTcGxhdHNudW1TcGxhdHNtYXhTaERlZ3JlZWV4dDBleHQxAAAAkwAAAAQAAAAEAAAAIAAAAMoFEAAhAAAATAAAAFMAAADKBRAAIQAAAE8AAABTAAAAygUQACEAAABSAAAAVQAAAMoFEAAhAAAAVQAAAFUAAABzaDFDb2Rlc8oFEAAhAAAAWAAAAF4AAABzaDJDb2Rlc8oFEAAhAAAAWwAAAF4AAABzaDNDb2Rlc8oFEAAhAAAAYQAAAFkAAADKBRAAIQAAAGQAAABcAAAAygUQACEAAABKAAAAZwAAAMoFEAAhAAAASQAAAGcAAADKBRAAIQAAAEgAAABtAAAAygUQACEAAABHAAAAaAAAAMoFEAAhAAAARgAAAGgAAAArIxAAbQAAAJUAAAAOAAAAcmdiTWlucmdiTWF4bG5TY2FsZU1pbmxuU2NhbGVNYXhzaDFNYXhzaDJNYXhzaDNNYXhsb2RPcGFjaXR5YDUQAAYAAABmNRAABgAAAGw1EAAKAAAAdjUQAAoAAACANRAABgAAAIY1EAAGAAAAjDUQAAYAAACSNRAACgAAABAjEAAaAAAAOQAAAC0AAAAQIxAAGgAAAC4AAAAzAAAA7AUQACQAAACKAAAAJwAAAHNoMwDsBRAAJAAAAJsAAAAuAAAAcGFja2VkAADsBRAAJAAAAEUAAABTAAAA7AUQACQAAABIAAAAUwAAAOwFEAAkAAAASwAAAFMAAADsBRAAJAAAAE4AAABeAAAA7AUQACQAAABRAAAAXgAAAOwFEAAkAAAAVAAAAF4AAADsBRAAJAAAAFcAAABcAAAAc3BsYXRFbmNvZGluZwAAAOwFEAAkAAAAWQAAAHwAAADsBRAAJAAAAEMAAABLAAAA7AUQACQAAABCAAAAbQAAAOwFEAAkAAAAQQAAAGgAAADsBRAAJAAAAEAAAABoAAAAECMQABoAAABWAAAALQAAABAjEAAaAAAASwAAADMAAACUAAAA9AAAAAQAAACVAAAAlgAAAJcAQbjuwAALZQEAAACYAAAAECMQABoAAACXAAAAKwAAAGZpbGVUeXBlECMQABoAAACZAAAAaAAAAJkAAAAIAAAABAAAAJoAAAAQIxAAGgAAAJYAAABYAAAAmwAAAJAAAAAEAAAAnAAAAJ0AAACeAEGo78AACy0BAAAAnwAAABAjEAAaAAAAkAEAAFsAAACgAAAAcAAAAAQAAAChAAAAogAAAKMAQeDvwAALLQEAAACkAAAAECMQABoAAAARAQAAWwAAAKUAAADsAAAABAAAAKYAAACnAAAAqABBmPDAAAvhFQEAAACpAAAAECMQABoAAAB5AAAAKwAAABAjEAAaAAAAewAAAGgAAAAQIxAAGgAAAHgAAABbAAAARXhwZWN0ZWQgIGFjdGl2ZSBzcGxhdHMgYnV0IGdvdCBQOBAACQAAAFk4EAAXAAAAigMQABsAAAAzAAAAFQAAAIoDEAAbAAAApwAAABMAAACKAxAAGwAAAJ8AAAATAAAAigMQABsAAACiAAAAHQAAAIoDEAAbAAAAogAAABEAAACKAxAAGwAAAJAAAAAgAAAAigMQABsAAACQAAAAFAAAAIoDEAAbAAAAfAAAABgAAACKAxAAGwAAAH0AAAAYAAAAigMQABsAAAB0AAAAGQAAALwZEAAfAAAA4wAAABYAAABsb2RJZAAAALwZEAAfAAAA7AAAAFQAAAC8GRAAHwAAAAkBAAAWAAAAvBkQAB8AAAATAQAAVAAAALwZEAAfAAAAJAEAAD0AAAC8GRAAHwAAADcBAAArAAAAvBkQAB8AAAA4AQAAKwAAALwZEAAfAAAAMgEAACsAAAC8GRAAHwAAADMBAAArAAAAvBkQAB8AAAC7AAAAMQAAALwZEAAfAAAA2QAAABMAAAC8GRAAHwAAAMoAAAAnAAAAvBkQAB8AAAC8AAAAJgAAALwZEAAfAAAAzwAAADYAAAC8GRAAHwAAAHcBAAAvAAAAvBkQAB8AAAB6AQAAHwAAAGluZGljZXMAvBkQAB8AAACWAQAAVgAAALwZEAAfAAAAgwEAACQAAAC8GRAAHwAAAIkBAAAjAAAAvBkQAB8AAACGAQAAIgAAALwZEAAfAAAAeAEAACYAAABJbnZhbGlkIGNvbmVfZm92cyBsZW5ndGhJbnZhbGlkIGNvbmVfZm92MHMgbGVuZ3RoSW52YWxpZCBjb25lX2ZvdmVhdGVzIGxlbmd0aEludmFsaWQgYmVoaW5kX2ZvdmVhdGVzIGxlbmd0aEludmFsaWQgbG9kX3NjYWxlcyBsZW5ndGhJbnZhbGlkIHZpZXdfdG9fb2JqZWN0cyBsZW5ndGgAALwZEAAfAAAA5wEAACYAAAC8GRAAHwAAAOkBAABDAAAAvBkQAB8AAADtAQAAGAAAALwZEAAfAAAA+wEAABkAAAC8GRAAHwAAAAACAAAZAAAAvBkQAB8AAAAHAgAAKwAAALwZEAAfAAAACwIAABgAAAC8GRAAHwAAABECAAAvAAAAvBkQAB8AAAATAgAAPgAAALwZEAAfAAAAFQIAABwAAAC8GRAAHwAAAAQCAAAYAAAAvBkQAB8AAAArAgAAJAAAAHBpeGVsTGltaXRpbnN0YW5jZUluZGljZXNjaHVua3NvdXRwdXRTaXplZnJvbnRpZXJTaXplbGVhZkNvdW50AAC8GRAAHwAAAFQCAABcAAAAvBkQAB8AAABTAgAAYgAAALwZEAAfAAAAUgIAAF4AAAC8GRAAHwAAAFECAABZAAAAvBkQAB8AAABQAgAAaAAAALwZEAAfAAAATwIAAGIAAAC8GRAAHwAAAD4CAAAjAAAAvBkQAB8AAABBAgAAWgAAALwZEAAfAAAAQAIAAHIAAAC8GRAAHwAAAD8CAABYAAAAvBkQAB8AAAAxAgAAHQAAALwZEAAfAAAAMQIAADMAAAC8GRAAHwAAAC0CAAAjAAAAvBkQAB8AAAAtAgAAHgAAALwZEAAfAAAAKAIAABwAAAC8GRAAHwAAACICAAAUAAAAvBkQAB8AAADSAQAAHQAAALwZEAAfAAAA1QEAADoAAAC8GRAAHwAAANoBAAAZAAAAvBkQAB8AAAC7AQAAMwAAALwZEAAfAAAAwAEAAB0AAAC8GRAAHwAAAMEBAAAiAAAAvBkQAB8AAADCAQAAIAAAALwZEAAfAAAAwwEAACAAAAC8GRAAHwAAAMQBAAAfAAAAvBkQAB8AAADGAQAAHQAAALwZEAAfAAAAvwEAADwAAAC8GRAAHwAAAL4BAAA9AAAAvBkQAB8AAAD1AAAAOgAAALwZEAAfAAAA9wAAAB0AAAC8GRAAHwAAAPgAAAAdAAAAvBkQAB8AAAD/AAAAWAAAAHZlcnNpb25jb3VudG1heFNoY2h1bmtTaXplYWxsQ2h1bmtCeXRlc3NoQ29kZUNvdW50c3RydWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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", self.location.href);\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n const rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk\n };\n async function onMessage(event) {\n const {\n id,\n name,\n args\n } = event.data;\n try {\n const handler = rpcHandlers[name];\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n const sendStatus = (data) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) }\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n }\n function sortSplats16({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n function sortSplats32({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n async function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n }) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576;\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length))\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : void 0,\n credentials: withCredentials ? "include" : "same-origin"\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch "${url}": ${response.status} ${response.statusText}`\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get("Content-Length") || "0"\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk2 = await readNextChunk;\n if (nextChunk2.length === 0) {\n break;\n }\n decoder.push(nextChunk2);\n loaded += nextChunk2.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error("No url or fileBytes provided");\n }\n const decoded = decoder.finish();\n return decoded;\n }\n function toPackedResult(packed) {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n },\n splatEncoding: packed.splatEncoding\n };\n }\n async function loadPackedSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toPackedResult(decoded2);\n if (result2.splatEncoding.lodOpacity) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n const result2 = toPackedResult(\n decoded.to_packedsplats_lod()\n );\n return { lodSplats: result2 };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toPackedResult(decoded.to_packedsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked);\n return result;\n }\n function toExtResult(packed) {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n }\n };\n }\n async function loadExtSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toExtResult(decoded2);\n if (result2.extra.lodTree) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod())\n };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toExtResult(decoded.to_extsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked);\n return result;\n }\n async function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n filter,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n filter,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n function newLodTree({\n capacity\n }) {\n const { lodId } = new_lod_tree(capacity);\n return { lodId };\n }\n function newSharedLodTree({\n lodId\n }) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId);\n return { lodId: newLodId };\n }\n function initLodTree({\n numSplats,\n lodTree\n }) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree);\n return { lodId, chunkToPage };\n }\n function disposeLodTree({ lodId }) {\n dispose_lod_tree(lodId);\n }\n function updateLodTrees({\n ranges\n }) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData: lodTreeData2 }) => lodTreeData2);\n update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData\n );\n }\n function traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances\n }) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId)\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 4294967295)\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error("Incorrect array size for viewToObjectCols");\n }\n return instance.viewToObjectCols;\n })\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale)\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate)\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0)\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov)\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate)\n );\n const result = traverse_lod_trees(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs\n );\n const { instanceIndices, chunks, pixelLimit } = result;\n const indices = keyInstances.reduce(\n (indices2, [key, _instance], index) => {\n indices2[key] = instanceIndices[index];\n return indices2;\n },\n {}\n );\n return {\n keyIndices: indices,\n chunks,\n pixelLimit\n };\n }\n function getLodTreeLevel({\n lodId,\n level\n }) {\n return get_lod_tree_level(lodId, level);\n }\n let nextChunkWaiter = (_chunk) => {\n };\n async function nextChunk({ chunk }) {\n nextChunkWaiter(chunk);\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n async function initialize() {\n const pending = [];\n const bufferMessage = (event) => {\n pending.push(event);\n };\n self.addEventListener("message", bufferMessage);\n await __wbg_init();\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=worker-On-THXgb.js.map\n'; -const blob = typeof self !== "undefined" && self.Blob && new Blob([jsContent], { type: "text/javascript;charset=utf-8" }); -function WorkerWrapper(options) { - let objURL; - try { - objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob); - if (!objURL) throw ""; - const worker = new Worker(objURL, { - name: options == null ? void 0 : options.name - }); - worker.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(objURL); - }); - return worker; - } catch (e) { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent), - { - name: options == null ? void 0 : options.name - } - ); - } finally { - objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); +class DynoIvec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec2", value, update }); } } -const _SplatWorker = class _SplatWorker { - constructor() { - this.queue = null; - this.messages = {}; - this.worker = new WorkerWrapper(); - this.worker.onmessage = (event) => this.onMessage(event); +class DynoVec2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec2", value, update }); } - onMessage(event) { - var _a2; - const { id, result, error, status } = event.data; - const promise = this.messages[id]; - if (promise) { - if (error !== void 0) { - delete this.messages[id]; - promise.reject(error); - } else if (status !== void 0) { - (_a2 = promise.onStatus) == null ? void 0 : _a2.call(promise, status); - } else { - delete this.messages[id]; - promise.resolve(result); - } - } - } - tryExclusive(callback) { - return this.queue == null ? this.exclusive(callback) : null; - } - async exclusive(callback) { - const queue = this.queue; - if (queue != null) { - await new Promise((resolve) => { - queue.push(() => resolve(void 0)); - }); - } else { - this.queue = []; - } - try { - return await callback(this); - } finally { - if (this.queue != null) { - if (this.queue.length === 0) { - this.queue = null; - } else { - const waiter = this.queue.shift(); - waiter(); - } - } - } - } - async call(name, args, options = {}) { - const id = ++_SplatWorker.currentId; - const promise = new Promise((resolve, reject) => { - this.messages[id] = { resolve, reject, onStatus: options.onStatus }; - }); - this.worker.postMessage( - { id, name, args }, - { transfer: getTransferable(args) } - ); - return await promise; +} +class DynoBvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec3", value, update }); } - dispose() { - this.worker.terminate(); - const messages = Object.values(this.messages); - this.messages = {}; - for (const message of messages) { - message.reject(new Error("Worker terminate")); - } +} +class DynoUvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec3", value, update }); } -}; -_SplatWorker.currentId = 0; -let SplatWorker = _SplatWorker; -class NewSplatWorkerPool { - constructor(maxWorkers2 = 4) { - this.numWorkers = 0; - this.freelist = []; - this.queue = []; - this.maxWorkers = maxWorkers2; +} +class DynoIvec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec3", value, update }); } - async withWorker(callback) { - const worker = await this.allocWorker(); - try { - return await callback(worker); - } finally { - this.freeWorker(worker); - } +} +class DynoVec3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec3", value, update }); } - async allocWorker() { - const worker = this.freelist.pop(); - if (worker) { - return worker; - } - if (this.numWorkers < this.maxWorkers) { - const worker2 = new SplatWorker(); - this.numWorkers += 1; - return worker2; - } - return new Promise((resolve) => { - this.queue.push(resolve); - }); +} +class DynoBvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "bvec4", value, update }); } - freeWorker(worker) { - if (this.numWorkers > this.maxWorkers) { - this.numWorkers -= 1; - return; - } - const waiter = this.queue.shift(); - if (waiter) { - waiter(worker); - return; - } - this.freelist.push(worker); +} +class DynoUvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "uvec4", value, update }); } } -const workerPool = new NewSplatWorkerPool(); -const Gsplat = { type: "Gsplat" }; -const CovSplat = { type: "CovSplat" }; -const TPackedSplats = { type: "PackedSplats" }; -const TExtSplats = { type: "ExtSplats" }; -const TCovSplats = { type: "CovSplats" }; -const numPackedSplats = (packedSplats) => new NumPackedSplats({ packedSplats }); -const readPackedSplat = (packedSplats, index) => new ReadPackedSplat({ packedSplats, index }); -const readPackedSplatRange = (packedSplats, index, base, count) => new ReadPackedSplatRange({ packedSplats, index, base, count }); -const numExtSplats = (extSplats) => new NumExtSplats({ extSplats }); -const readExtSplat = (extSplats, index) => new ReadExtSplat({ extSplats, index }); -const numCovSplats = (covsplats) => new NumCovSplats({ covsplats }); -const readCovSplat = (covSplats, index) => new ReadCovSplat({ covSplats, index }); -const gsplatToCovSplat = (gsplat) => new GsplatToCovSplat({ gsplat }); -const splitGsplat = (gsplat) => new SplitGsplat({ gsplat }); -const combineGsplat = ({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b -}) => { - return new CombineGsplat({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }); -}; -const gsplatNormal = (gsplat) => new GsplatNormal({ gsplat }); -const transformGsplat = (gsplat, { - scale, - rotate, - translate, - recolor -}) => { - return new TransformGsplat({ gsplat, scale, rotate, translate, recolor }); -}; -const splatTexCoord = (index) => new SplatTexCoord({ index }); -const pagedSplatTexCoord = (index) => new PagedSplatTexCoord({ index }); -const defineGsplat = unindent(` - struct Gsplat { - vec3 center; - uint flags; - vec3 scales; - int index; - vec4 quaternion; - vec4 rgba; - }; - const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; - - bool isGsplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; +class DynoIvec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "ivec4", value, update }); } -`); -const defineCovSplat = unindent(` - struct CovSplat { - vec3 center; - uint flags; - vec4 rgba; - vec3 xxyyzz; - int index; - vec3 xyxzyz; - }; - - bool isCovSplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; +} +class DynoVec4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "vec4", value, update }); } -`); -const definePackedSplats = unindent(` - struct PackedSplats { - usampler2DArray textureArray; - int numSplats; - vec4 rgbMinMaxLnScaleMinMax; - bool lodOpacity; - }; -`); -class NumPackedSplats extends UnaryOp { +} +class DynoMat2 extends DynoUniform { constructor({ - packedSplats + key, + value, + update }) { - super({ a: packedSplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; + super({ key, type: "mat2", value, update }); } } -const defineReadPackedArray = unindent(` - bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { - if ((index >= 0) && (index < numSplats)) { - uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); - unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); - return true; - } else { - return false; - } - } -`); -class ReadPackedSplat extends Dyno { +class DynoMat2x2 extends DynoUniform { constructor({ - packedSplats, - index + key, + value, + update }) { - super({ - inTypes: { packedSplats: TPackedSplats, index: "int" }, - outTypes: { gsplat: Gsplat }, - inputs: { packedSplats, index }, - globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return []; - } - const { packedSplats: packedSplats2, index: index2 } = inputs; - let statements; - if (packedSplats2 && index2) { - statements = unindentLines(` - ${gsplat}.flags = 0u; - if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { - if (${packedSplats2}.lodOpacity) { - ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; - } - bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); - ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `); - } else { - statements = [`${gsplat}.flags = 0u;`]; - } - statements.push(`${gsplat}.index = ${index2 ?? "0"};`); - return statements; - } - }); - } - dynoOut() { - return new DynoOutput(this, "gsplat"); + super({ key, type: "mat2x2", value, update }); } } -class ReadPackedSplatRange extends Dyno { +class DynoMat2x3 extends DynoUniform { constructor({ - packedSplats, - index, - base, - count + key, + value, + update }) { - super({ - inTypes: { - packedSplats: TPackedSplats, - index: "int", - base: "int", - count: "int" - }, - outTypes: { gsplat: Gsplat }, - inputs: { packedSplats, index, base, count }, - globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return []; - } - const { packedSplats: packedSplats2, index: index2, base: base2, count: count2 } = inputs; - let statements; - if (packedSplats2 && index2 && base2 && count2) { - statements = unindentLines(` - ${gsplat}.flags = 0u; - if (readPackedArray(${packedSplats2}.textureArray, ${packedSplats2}.numSplats, ${packedSplats2}.rgbMinMaxLnScaleMinMax, ${index2}, ${gsplat})) { - if (${packedSplats2}.lodOpacity) { - ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a; - } - bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0))); - ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `); - } else { - statements = [`${gsplat}.flags = 0u;`]; - } - statements.push(`${gsplat}.index = ${index2 ?? "0"};`); - return statements; - } - }); + super({ key, type: "mat2x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoMat2x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat2x4", value, update }); } } -const defineExtSplats = unindent(` - struct ExtSplats { - usampler2DArray textureArray1; - usampler2DArray textureArray2; - int numSplats; - }; -`); -class NumExtSplats extends UnaryOp { - constructor({ extSplats }) { - super({ a: extSplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; +class DynoMat3 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3", value, update }); } } -const defineReadExtArrays = unindent(` - void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { - gsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); - gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } +class DynoMat3x2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3x2", value, update }); } -`); -class ReadExtSplat extends Dyno { +} +class DynoMat3x3 extends DynoUniform { constructor({ - extSplats, - index + key, + value, + update }) { - super({ - inTypes: { extSplats: TExtSplats, index: "int" }, - outTypes: { gsplat: Gsplat }, - inputs: { extSplats, index }, - globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays], - statements: ({ inputs, outputs }) => { - const { gsplat } = outputs; - if (!gsplat) { - return [`${gsplat}.flags = 0u;`]; - } - const { extSplats: extSplats2, index: index2 } = inputs; - if (extSplats2 && index2) { - return unindentLines(` - readExtArrays(${extSplats2}.textureArray1, ${extSplats2}.textureArray2, ${extSplats2}.numSplats, ${index2}, ${gsplat}); - `); - } - return [`${gsplat}.flags = 0u;`]; - } - }); + super({ key, type: "mat3x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoMat3x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat3x4", value, update }); } } -class NumCovSplats extends UnaryOp { - constructor({ covsplats }) { - super({ a: covsplats, outKey: "numSplats", outTypeFunc: () => "int" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.numSplats} = ${inputs.a}.numSplats;` - ]; +class DynoMat4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4", value, update }); } } -const defineReadCovArrays = unindent(` - void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { - covsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); - covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } +class DynoMat4x2 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4x2", value, update }); } -`); -class ReadCovSplat extends Dyno { +} +class DynoMat4x3 extends DynoUniform { constructor({ - covSplats, - index + key, + value, + update }) { - super({ - inTypes: { covSplats: TCovSplats, index: "int" }, - outTypes: { covsplat: CovSplat }, - inputs: { covSplats, index }, - globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays], - statements: ({ inputs, outputs }) => { - const { covsplat } = outputs; - if (!covsplat) { - return [`${covsplat}.flags = 0u;`]; - } - const { covSplats: covSplats2, index: index2 } = inputs; - if (covSplats2 && index2) { - return unindentLines(` - readCovArrays(${covSplats2}.textureArray, ${covSplats2}.numSplats, ${index2}, ${covsplat}); - `); - } - return [`${covsplat}.flags = 0u;`]; - } - }); + super({ key, type: "mat4x3", value, update }); } - dynoOut() { - return new DynoOutput(this, "covsplat"); +} +class DynoMat4x4 extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "mat4x4", value, update }); } } -class GsplatToCovSplat extends Dyno { - constructor({ gsplat }) { - super({ - inTypes: { gsplat: Gsplat }, - outTypes: { covsplat: CovSplat }, - inputs: { gsplat }, - globals: () => [defineGsplat, defineCovSplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2 } = inputs; - const { covsplat } = outputs; - if (!gsplat2) { - return [`${covsplat}.flags = 0u;`]; - } - return unindentLines(` - ${covsplat}.flags = 0u; - if (isGsplatActive(${gsplat2}.flags)) { - ${covsplat}.flags = ${gsplat2}.flags; - ${covsplat}.index = ${gsplat2}.index; - ${covsplat}.rgba = ${gsplat2}.rgba; - ${covsplat}.center = ${gsplat2}.center; - mat3 m = scaleQuaternionToMatrix(${gsplat2}.scales, ${gsplat2}.quaternion); - m = m * transpose(m); - ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); - ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); - } - `); - } - }); - } - dynoOut() { - return new DynoOutput(this, "covsplat"); +class DynoUsampler2D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usampler2D", value, update }); } } -class SplitGsplat extends Dyno { - constructor({ gsplat }) { - super({ - inTypes: { gsplat: Gsplat }, - outTypes: { - flags: "uint", - active: "bool", - index: "int", - center: "vec3", - scales: "vec3", - quaternion: "vec4", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - inputs: { gsplat }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2 } = inputs; - const { - flags, - active, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - } = outputs; - return [ - !flags ? null : `${flags} = ${gsplat2 ? `${gsplat2}.flags` : "0u"};`, - !active ? null : `${active} = isGsplatActive(${gsplat2 ? `${gsplat2}.flags` : "0u"});`, - !index ? null : `${index} = ${gsplat2 ? `${gsplat2}.index` : "0"};`, - !center ? null : `${center} = ${gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, - !scales ? null : `${scales} = ${gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)"};`, - !quaternion ? null : `${quaternion} = ${gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};`, - !rgba ? null : `${rgba} = ${gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, - !rgb ? null : `${rgb} = ${gsplat2 ? `${gsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, - !opacity ? null : `${opacity} = ${gsplat2 ? `${gsplat2}.rgba.a` : "0.0"};`, - !x ? null : `${x} = ${gsplat2 ? `${gsplat2}.center.x` : "0.0"};`, - !y ? null : `${y} = ${gsplat2 ? `${gsplat2}.center.y` : "0.0"};`, - !z ? null : `${z} = ${gsplat2 ? `${gsplat2}.center.z` : "0.0"};`, - !r ? null : `${r} = ${gsplat2 ? `${gsplat2}.rgba.r` : "0.0"};`, - !g ? null : `${g} = ${gsplat2 ? `${gsplat2}.rgba.g` : "0.0"};`, - !b ? null : `${b} = ${gsplat2 ? `${gsplat2}.rgba.b` : "0.0"};` - ].filter(Boolean); - } - }); +class DynoIsampler2D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler2D", value, update }); } } -class CombineGsplat extends Dyno { +class DynoSampler2D extends DynoUniform { constructor({ - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b + key, + value, + update }) { - super({ - inTypes: { - gsplat: Gsplat, - flags: "uint", - index: "int", - center: "vec3", - scales: "vec3", - quaternion: "vec4", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - gsplat, - flags, - index, - center, - scales, - quaternion, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: outGsplat } = outputs; - if (!outGsplat) { - return []; - } - const { - gsplat: gsplat2, - flags: flags2, - index: index2, - center: center2, - scales: scales2, - quaternion: quaternion2, - rgba: rgba2, - rgb: rgb2, - opacity: opacity2, - x: x2, - y: y2, - z: z2, - r: r2, - g: g2, - b: b22 - } = inputs; - return [ - `${outGsplat}.flags = ${flags2 ?? (gsplat2 ? `${gsplat2}.flags` : "0u")};`, - `${outGsplat}.index = ${index2 ?? (gsplat2 ? `${gsplat2}.index` : "0")};`, - `${outGsplat}.center = ${center2 ?? (gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${outGsplat}.scales = ${scales2 ?? (gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)")};`, - `${outGsplat}.quaternion = ${quaternion2 ?? (gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, - `${outGsplat}.rgba = ${rgba2 ?? (gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - !rgb2 ? null : `${outGsplat}.rgba.rgb = ${rgb2};`, - !opacity2 ? null : `${outGsplat}.rgba.a = ${opacity2};`, - !x2 ? null : `${outGsplat}.center.x = ${x2};`, - !y2 ? null : `${outGsplat}.center.y = ${y2};`, - !z2 ? null : `${outGsplat}.center.z = ${z2};`, - !r2 ? null : `${outGsplat}.rgba.r = ${r2};`, - !g2 ? null : `${outGsplat}.rgba.g = ${g2};`, - !b22 ? null : `${outGsplat}.rgba.b = ${b22};` - ].filter(Boolean); - } - }); + super({ key, type: "sampler2D", value, update }); } - dynoOut() { - return new DynoOutput(this, "gsplat"); +} +class DynoUsampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usampler2DArray", value, update }); } } -const defineGsplatNormal = unindent(` - vec3 gsplatNormal(vec3 scales, vec4 quaternion) { - float minScale = min(scales.x, min(scales.y, scales.z)); - vec3 normal; - if (scales.z == minScale) { - normal = vec3(0.0, 0.0, 1.0); - } else if (scales.y == minScale) { - normal = vec3(0.0, 1.0, 0.0); - } else { - normal = vec3(1.0, 0.0, 0.0); - } - return quatVec(quaternion, normal); +class DynoIsampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler2DArray", value, update }); } -`); -class GsplatNormal extends UnaryOp { - constructor({ gsplat }) { - super({ a: gsplat, outKey: "normal", outTypeFunc: () => "vec3" }); - this.globals = () => [defineGsplat, defineGsplatNormal]; - this.statements = ({ inputs, outputs }) => [ - `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);` - ]; +} +class DynoSampler2DArray extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "sampler2DArray", value, update }); } } -class TransformGsplat extends Dyno { +class DynoUsampler3D extends DynoUniform { constructor({ - gsplat, - scale, - rotate, - translate, - recolor + key, + value, + update }) { - super({ - inTypes: { - gsplat: Gsplat, - scale: "float", - rotate: "vec4", - translate: "vec3", - recolor: "vec4" - }, - outTypes: { gsplat: Gsplat }, - inputs: { gsplat, scale, rotate, translate, recolor }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs, compile }) => { - const { gsplat: gsplat2 } = outputs; - if (!gsplat2 || !inputs.gsplat) { - return []; - } - const { scale: scale2, rotate: rotate2, translate: translate2, recolor: recolor2 } = inputs; - const indent = compile.indent; - const statements = [ - `${gsplat2} = ${inputs.gsplat};`, - `if (isGsplatActive(${gsplat2}.flags)) {`, - scale2 ? `${indent}${gsplat2}.center *= ${scale2};` : null, - rotate2 ? `${indent}${gsplat2}.center = quatVec(${rotate2}, ${gsplat2}.center);` : null, - translate2 ? `${indent}${gsplat2}.center += ${translate2};` : null, - scale2 ? `${indent}${gsplat2}.scales *= ${scale2};` : null, - rotate2 ? `${indent}${gsplat2}.quaternion = quatQuat(${rotate2}, ${gsplat2}.quaternion);` : null, - recolor2 ? `${indent}${gsplat2}.rgba *= ${recolor2};` : null, - "}" - ].filter(Boolean); - return statements; - } - }); - } - dynoOut() { - return new DynoOutput(this, "gsplat"); + super({ key, type: "usampler3D", value, update }); } } -const splitCovSplat = (covsplat) => new SplitCovSplat({ covsplat }); -const combineCovSplat = ({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b -}) => { - return new CombineCovSplat({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }); -}; -class SplitCovSplat extends Dyno { - constructor({ covsplat }) { - super({ - inTypes: { covsplat: CovSplat }, - outTypes: { - flags: "uint", - active: "bool", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - inputs: { covsplat }, - globals: () => [defineCovSplat], - statements: ({ inputs, outputs }) => { - const { covsplat: covsplat2 } = inputs; - const { - flags, - active, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - } = outputs; - return [ - !flags ? null : `${flags} = ${covsplat2 ? `${covsplat2}.flags` : "0u"};`, - !active ? null : `${active} = isCovSplatActive(${covsplat2 ? `${covsplat2}.flags` : "0u"});`, - !index ? null : `${index} = ${covsplat2 ? `${covsplat2}.index` : "0"};`, - !center ? null : `${center} = ${covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`, - !rgba ? null : `${rgba} = ${covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`, - !rgb ? null : `${rgb} = ${covsplat2 ? `${covsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`, - !opacity ? null : `${opacity} = ${covsplat2 ? `${covsplat2}.rgba.a` : "0.0"};`, - !x ? null : `${x} = ${covsplat2 ? `${covsplat2}.center.x` : "0.0"};`, - !y ? null : `${y} = ${covsplat2 ? `${covsplat2}.center.y` : "0.0"};`, - !z ? null : `${z} = ${covsplat2 ? `${covsplat2}.center.z` : "0.0"};`, - !r ? null : `${r} = ${covsplat2 ? `${covsplat2}.rgba.r` : "0.0"};`, - !g ? null : `${g} = ${covsplat2 ? `${covsplat2}.rgba.g` : "0.0"};`, - !b ? null : `${b} = ${covsplat2 ? `${covsplat2}.rgba.b` : "0.0"};` - ].filter(Boolean); - } - }); +class DynoIsampler3D extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isampler3D", value, update }); } } -class CombineCovSplat extends Dyno { +class DynoSampler3D extends DynoUniform { constructor({ - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b + key, + value, + update }) { - super({ - inTypes: { - covsplat: CovSplat, - flags: "uint", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - outTypes: { covsplat: CovSplat }, - inputs: { - covsplat, - flags, - index, - center, - rgba, - rgb, - opacity, - x, - y, - z, - r, - g, - b - }, - globals: () => [defineCovSplat], - statements: ({ inputs, outputs }) => { - const { covsplat: outCovSplat } = outputs; - if (!outCovSplat) { - return []; - } - const { - covsplat: covsplat2, - flags: flags2, - index: index2, - center: center2, - rgba: rgba2, - rgb: rgb2, - opacity: opacity2, - x: x2, - y: y2, - z: z2, - r: r2, - g: g2, - b: b22 - } = inputs; - return [ - `${outCovSplat}.flags = ${flags2 ?? (covsplat2 ? `${covsplat2}.flags` : "0u")};`, - `${outCovSplat}.index = ${index2 ?? (covsplat2 ? `${covsplat2}.index` : "0")};`, - `${outCovSplat}.center = ${center2 ?? (covsplat2 ? `${covsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${outCovSplat}.rgba = ${rgba2 ?? (covsplat2 ? `${covsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - !rgb2 ? null : `${outCovSplat}.rgba.rgb = ${rgb2};`, - !opacity2 ? null : `${outCovSplat}.rgba.a = ${opacity2};`, - !x2 ? null : `${outCovSplat}.center.x = ${x2};`, - !y2 ? null : `${outCovSplat}.center.y = ${y2};`, - !z2 ? null : `${outCovSplat}.center.z = ${z2};`, - !r2 ? null : `${outCovSplat}.rgba.r = ${r2};`, - !g2 ? null : `${outCovSplat}.rgba.g = ${g2};`, - !b22 ? null : `${outCovSplat}.rgba.b = ${b22};`, - `${outCovSplat}.xxyyzz = ${covsplat2 ? `${covsplat2}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, - `${outCovSplat}.xyxzyz = ${covsplat2 ? `${covsplat2}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` - ].filter(Boolean); - } - }); - } - dynoOut() { - return new DynoOutput(this, "covsplat"); + super({ key, type: "sampler3D", value, update }); } } -class SplatTexCoord extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => { - const { index: index2 } = inputs; - const { coord } = outputs; - if (!index2 || !coord) { - return []; - } - return [`${coord} = splatTexCoord(${index2});`]; - } - }); +class DynoUsamplerCube extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "usamplerCube", value, update }); } - dynoOut() { - return new DynoOutput(this, "coord"); +} +class DynoIsamplerCube extends DynoUniform { + constructor({ + key, + value, + update + }) { + super({ key, type: "isamplerCube", value, update }); } } -class PagedSplatTexCoord extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => { - const { index: index2 } = inputs; - const { coord } = outputs; - if (!index2 || !coord) { - return []; - } - return [`${coord} = pagedSplatTexCoord(${index2});`]; - } - }); - } - dynoOut() { - return new DynoOutput(this, "coord"); - } -} -const outputPackedSplat = (gsplat, rgbMinMaxLnScaleMinMax) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax }); -const outputCovSplat = (covsplat, rgbMinMaxLnScaleMinMax) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax }); -const outputExtendedSplat = (gsplat) => new OutputExtendedSplat({ gsplat }); -const outputExtCovSplat = (covsplat) => new OutputExtCovSplat({ covsplat }); -const outputSplatDepth = (gsplat, viewCenter, viewDir, sortRadial) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial }); -const outputCovSplatDepth = (covsplat, viewCenter, viewDir, sortRadial) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial }); -const outputRgba8 = (rgba8) => new OutputRgba8({ rgba8 }); -class OutputPackedSplat extends Dyno { +class DynoSamplerCube extends DynoUniform { constructor({ - gsplat, - rgbMinMaxLnScaleMinMax + key, + value, + update }) { - super({ - inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: "vec4" }, - inputs: { gsplat, rgbMinMaxLnScaleMinMax }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => { - const { gsplat: gsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; - if (gsplat2 && rgbMinMaxLnScaleMinMax2) { - return unindentLines(` - if (isGsplatActive(${gsplat2}.flags)) { - target = packSplatEncoding(${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba, ${rgbMinMaxLnScaleMinMax2}); - } else { - target = uvec4(0u, 0u, 0u, 0u); - } - `); - } - return ["target = uvec4(0u, 0u, 0u, 0u);"]; - } - }); + super({ key, type: "samplerCube", value, update }); } } -class OutputCovSplat extends Dyno { +class DynoSampler2DShadow extends DynoUniform { constructor({ - covsplat, - rgbMinMaxLnScaleMinMax + key, + value, + update }) { - super({ - inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: "vec4" }, - inputs: { covsplat, rgbMinMaxLnScaleMinMax }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2, rgbMinMaxLnScaleMinMax: rgbMinMaxLnScaleMinMax2 } = inputs; - if (covsplat2 && rgbMinMaxLnScaleMinMax2) { - return unindentLines(` - if (isCovSplatActive(${covsplat2}.flags)) { - target = packSplatCovEncoding(${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz, ${rgbMinMaxLnScaleMinMax2}); - } else { - target = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);"]; - } - }); + super({ key, type: "sampler2DShadow", value, update }); } } -class OutputExtendedSplat extends Dyno { +class DynoSampler2DArrayShadow extends DynoUniform { constructor({ - gsplat + key, + value, + update }) { - super({ - inTypes: { gsplat: Gsplat }, - inputs: { gsplat }, - globals: () => [defineGsplat], - statements: ({ inputs }) => { - const { gsplat: gsplat2 } = inputs; - if (gsplat2) { - return unindentLines(` - if (isGsplatActive(${gsplat2}.flags)) { - packSplatExt(target, target2, ${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba); - } else { - target = uvec4(0u); - target2 = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; - } - }); + super({ key, type: "sampler2DArrayShadow", value, update }); } } -class OutputExtCovSplat extends Dyno { +class DynoSamplerCubeShadow extends DynoUniform { constructor({ - covsplat + key, + value, + update }) { - super({ - inTypes: { covsplat: CovSplat }, - inputs: { covsplat }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2 } = inputs; - if (covsplat2) { - return unindentLines(` - if (isCovSplatActive(${covsplat2}.flags)) { - packSplatExtCov(target, target2, ${covsplat2}.center, ${covsplat2}.rgba, ${covsplat2}.xxyyzz, ${covsplat2}.xyxzyz); - } else { - target = uvec4(0u); - target2 = uvec4(0u); - } - `); - } - return ["target = uvec4(0u);", "target2 = uvec4(0u);"]; - } - }); + super({ key, type: "samplerCubeShadow", value, update }); } } -class OutputSplatDepth extends Dyno { - constructor({ - gsplat, - viewCenter, - viewDir, - sortRadial - }) { - super({ - inTypes: { - gsplat: Gsplat, - viewCenter: "vec3", - viewDir: "vec3", - sortRadial: "bool" - }, - inputs: { gsplat, viewCenter, viewDir, sortRadial }, - globals: () => [defineGsplat], - statements: ({ inputs }) => { - const { gsplat: gsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; - if (gsplat2 && viewCenter2 && viewDir2 && sortRadial2) { - return unindentLines(` - float metric = 1.0 / 0.0; - if (isGsplatActive(${gsplat2}.flags)) { - vec3 center = ${gsplat2}.center - ${viewCenter2}; - if (${sortRadial2}) { - metric = length(center); - } else { - float bias = 100.0; // reduce popping - metric = dot(center, ${viewDir2}) + bias; - } - } - target3 = floatToVec4(metric); - `); - } - return []; - } - }); +var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; +var fleb = new u8([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + /* unused */ + 0, + 0, + /* impossible */ + 0 +]); +var fdeb = new u8([ + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + /* unused */ + 0, + 0 +]); +var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +var freb = function(eb, start) { + var b = new u16(31); + for (var i = 0; i < 31; ++i) { + b[i] = start += 1 << eb[i - 1]; } -} -class OutputCovSplatDepth extends Dyno { - constructor({ - covsplat, - viewCenter, - viewDir, - sortRadial - }) { - super({ - inTypes: { - covsplat: CovSplat, - viewCenter: "vec3", - viewDir: "vec3", - sortRadial: "bool" - }, - inputs: { covsplat, viewCenter, viewDir, sortRadial }, - globals: () => [defineCovSplat], - statements: ({ inputs }) => { - const { covsplat: covsplat2, viewCenter: viewCenter2, viewDir: viewDir2, sortRadial: sortRadial2 } = inputs; - if (covsplat2 && viewCenter2 && viewDir2 && sortRadial2) { - return unindentLines(` - float metric = 1.0 / 0.0; - if (isCovSplatActive(${covsplat2}.flags)) { - vec3 center = ${covsplat2}.center - ${viewCenter2}; - if (${sortRadial2}) { - metric = length(center); - } else { - float bias = 100.0; // reduce popping - metric = dot(center, ${viewDir2}) + bias; - } - } - target3 = floatToVec4(metric); - `); - } - return []; - } - }); + var r = new i32(b[30]); + for (var i = 1; i < 30; ++i) { + for (var j = b[i]; j < b[i + 1]; ++j) { + r[j] = j - b[i] << 5 | i; + } } + return { b, r }; +}; +var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; +fl[28] = 258, revfl[258] = 28; +var _b = freb(fdeb, 0), fd = _b.b; +var rev = new u16(32768); +for (var i = 0; i < 32768; ++i) { + var x = (i & 43690) >> 1 | (i & 21845) << 1; + x = (x & 52428) >> 2 | (x & 13107) << 2; + x = (x & 61680) >> 4 | (x & 3855) << 4; + rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; } -class OutputRgba8 extends Dyno { - constructor({ rgba8 }) { - super({ - inTypes: { rgba8: "vec4" }, - inputs: { rgba8 }, - statements: ({ inputs, outputs }) => [ - `target = ${inputs.rgba8 ?? "vec4(0.0, 0.0, 0.0, 0.0)"};` - ] - }); +var hMap = function(cd, mb, r) { + var s = cd.length; + var i = 0; + var l = new u16(mb); + for (; i < s; ++i) { + if (cd[i]) + ++l[cd[i] - 1]; } - dynoOut() { - return new DynoOutput(this, "rgba8"); + var le = new u16(mb); + for (i = 1; i < mb; ++i) { + le[i] = le[i - 1] + l[i - 1] << 1; } -} -const uniform = (key, type, value) => new DynoUniform({ key, type, value }); -const dynoBool = (value = false, key) => new DynoBool({ key, value }); -const dynoUint = (value = 0, key) => new DynoUint({ key, value }); -const dynoInt = (value = 0, key) => new DynoInt({ key, value }); -const dynoFloat = (value = 0, key) => new DynoFloat({ key, value }); -const dynoBvec2 = (value, key) => new DynoBvec2({ key, value }); -const dynoUvec2 = (value, key) => new DynoUvec2({ key, value }); -const dynoIvec2 = (value, key) => new DynoIvec2({ key, value }); -const dynoVec2 = (value, key) => new DynoVec2({ key, value }); -const dynoBvec3 = (value, key) => new DynoBvec3({ key, value }); -const dynoUvec3 = (value, key) => new DynoUvec3({ key, value }); -const dynoIvec3 = (value, key) => new DynoIvec3({ key, value }); -const dynoVec3 = (value, key) => new DynoVec3({ key, value }); -const dynoBvec4 = (value, key) => new DynoBvec4({ key, value }); -const dynoUvec4 = (value, key) => new DynoUvec4({ key, value }); -const dynoIvec4 = (value, key) => new DynoIvec4({ key, value }); -const dynoVec4 = (value, key) => new DynoVec4({ key, value }); -const dynoMat2 = (value, key) => new DynoMat2({ key, value }); -const dynoMat2x2 = (value, key) => new DynoMat2x2({ key, value }); -const dynoMat2x3 = (value, key) => new DynoMat2x3({ key, value }); -const dynoMat2x4 = (value, key) => new DynoMat2x4({ key, value }); -const dynoMat3 = (value, key) => new DynoMat3({ key, value }); -const dynoMat3x2 = (value, key) => new DynoMat3x2({ key, value }); -const dynoMat3x3 = (value, key) => new DynoMat3x3({ key, value }); -const dynoMat3x4 = (value, key) => new DynoMat3x4({ key, value }); -const dynoMat4 = (value, key) => new DynoMat4({ key, value }); -const dynoMat4x2 = (value, key) => new DynoMat4x2({ key, value }); -const dynoMat4x3 = (value, key) => new DynoMat4x3({ key, value }); -const dynoMat4x4 = (value, key) => new DynoMat4x4({ key, value }); -const dynoUsampler2D = (value, key) => new DynoUsampler2D({ key, value }); -const dynoIsampler2D = (value, key) => new DynoIsampler2D({ key, value }); -const dynoSampler2D = (value, key) => new DynoSampler2D({ key, value }); -const dynoUsampler2DArray = (value, key) => new DynoUsampler2DArray({ key, value }); -const dynoIsampler2DArray = (key, value) => new DynoIsampler2DArray({ key, value }); -const dynoSampler2DArray = (value, key) => new DynoSampler2DArray({ key, value }); -const dynoUsampler3D = (value, key) => new DynoUsampler3D({ key, value }); -const dynoIsampler3D = (value, key) => new DynoIsampler3D({ key, value }); -const dynoSampler3D = (value, key) => new DynoSampler3D({ key, value }); -const dynoUsamplerCube = (value, key) => new DynoUsamplerCube({ key, value }); -const dynoIsamplerCube = (value, key) => new DynoIsamplerCube({ key, value }); -const dynoSamplerCube = (value, key) => new DynoSamplerCube({ key, value }); -const dynoSampler2DShadow = (value, key) => new DynoSampler2DShadow({ key, value }); -const dynoSampler2DArrayShadow = (value, key) => new DynoSampler2DArrayShadow({ key, value }); -const dynoSamplerCubeShadow = (value, key) => new DynoSamplerCubeShadow({ key, value }); -class DynoUniform extends Dyno { - constructor({ - key, - type, - count, - value, - update, - globals - }) { - key = key ?? "value"; - super({ - outTypes: { [key]: type }, - update: () => { - if (update) { - const value2 = update(this.value); - if (value2 !== void 0) { - this.value = value2; - } - } - this.uniform.value = this.value; - }, - generate: ({ inputs, outputs }) => { - const allGlobals = (globals == null ? void 0 : globals({ inputs, outputs })) ?? []; - const uniforms = {}; - const name = outputs[key]; - if (name) { - allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`); - uniforms[name] = this.uniform; + var co; + if (r) { + co = new u16(1 << mb); + var rvb = 15 - mb; + for (i = 0; i < s; ++i) { + if (cd[i]) { + var sv = i << 4 | cd[i]; + var r_1 = mb - cd[i]; + var v = le[cd[i] - 1]++ << r_1; + for (var m = v | (1 << r_1) - 1; v <= m; ++v) { + co[rev[v] >> rvb] = sv; } - return { globals: allGlobals, uniforms }; } - }); - this.type = type; - this.count = count; - this.value = value; - this.uniform = { value }; - this.outKey = key; - } - dynoOut() { - return new DynoOutput(this, this.outKey); - } -} -class DynoBool extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bool", value, update }); - } -} -class DynoUint extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uint", value, update }); - } -} -class DynoInt extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "int", value, update }); - } -} -class DynoFloat extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "float", value, update }); - } -} -class DynoBvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec2", value, update }); - } -} -class DynoUvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec2", value, update }); - } -} -class DynoIvec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec2", value, update }); + } + } else { + co = new u16(s); + for (i = 0; i < s; ++i) { + if (cd[i]) { + co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + } + } } -} -class DynoVec2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec2", value, update }); + return co; +}; +var flt = new u8(288); +for (var i = 0; i < 144; ++i) + flt[i] = 8; +for (var i = 144; i < 256; ++i) + flt[i] = 9; +for (var i = 256; i < 280; ++i) + flt[i] = 7; +for (var i = 280; i < 288; ++i) + flt[i] = 8; +var fdt = new u8(32); +for (var i = 0; i < 32; ++i) + fdt[i] = 5; +var flrm = /* @__PURE__ */ hMap(flt, 9, 1); +var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); +var max$1 = function(a) { + var m = a[0]; + for (var i = 1; i < a.length; ++i) { + if (a[i] > m) + m = a[i]; } -} -class DynoBvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec3", value, update }); + return m; +}; +var bits = function(d, p, m) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8) >> (p & 7) & m; +}; +var bits16 = function(d, p) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); +}; +var shft = function(p) { + return (p + 7) / 8 | 0; +}; +var slc = function(v, s, e) { + if (s == null || s < 0) + s = 0; + if (e == null || e > v.length) + e = v.length; + return new u8(v.subarray(s, e)); +}; +var ec = [ + "unexpected EOF", + "invalid block type", + "invalid length/literal", + "invalid distance", + "stream finished", + "no stream handler", + , + "no callback", + "invalid UTF-8 data", + "extra field too long", + "date not in range 1980-2099", + "filename too long", + "stream finishing", + "invalid zip data" + // determined by unknown compression method +]; +var err = function(ind, msg, nt) { + var e = new Error(msg || ec[ind]); + e.code = ind; + if (Error.captureStackTrace) + Error.captureStackTrace(e, err); + if (!nt) + throw e; + return e; +}; +var inflt = function(dat, st, buf, dict) { + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) + return buf || new u8(0); + var noBuf = !buf; + var resize = noBuf || st.i != 2; + var noSt = st.i; + if (noBuf) + buf = new u8(sl * 3); + var cbuf = function(l2) { + var bl = buf.length; + if (l2 > bl) { + var nbuf = new u8(Math.max(bl * 2, l2)); + nbuf.set(buf); + buf = nbuf; + } + }; + var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; + var tbts = sl * 8; + do { + if (!lm) { + final = bits(dat, pos, 1); + var type = bits(dat, pos + 1, 3); + pos += 3; + if (!type) { + var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; + if (t > sl) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + l); + buf.set(dat.subarray(s, t), bt); + st.b = bt += l, st.p = pos = t * 8, st.f = final; + continue; + } else if (type == 1) + lm = flrm, dm = fdrm, lbt = 9, dbt = 5; + else if (type == 2) { + var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; + var tl = hLit + bits(dat, pos + 5, 31) + 1; + pos += 14; + var ldt = new u8(tl); + var clt = new u8(19); + for (var i = 0; i < hcLen; ++i) { + clt[clim[i]] = bits(dat, pos + i * 3, 7); + } + pos += hcLen * 3; + var clb = max$1(clt), clbmsk = (1 << clb) - 1; + var clm = hMap(clt, clb, 1); + for (var i = 0; i < tl; ) { + var r = clm[bits(dat, pos, clbmsk)]; + pos += r & 15; + var s = r >> 4; + if (s < 16) { + ldt[i++] = s; + } else { + var c = 0, n = 0; + if (s == 16) + n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; + else if (s == 17) + n = 3 + bits(dat, pos, 7), pos += 3; + else if (s == 18) + n = 11 + bits(dat, pos, 127), pos += 7; + while (n--) + ldt[i++] = c; + } + } + var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); + lbt = max$1(lt); + dbt = max$1(dt); + lm = hMap(lt, lbt, 1); + dm = hMap(dt, dbt, 1); + } else + err(1); + if (pos > tbts) { + if (noSt) + err(0); + break; + } + } + if (resize) + cbuf(bt + 131072); + var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; + var lpos = pos; + for (; ; lpos = pos) { + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; + pos += c & 15; + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (!c) + err(2); + if (sym < 256) + buf[bt++] = sym; + else if (sym == 256) { + lpos = pos, lm = null; + break; + } else { + var add2 = sym - 254; + if (sym > 264) { + var i = sym - 257, b = fleb[i]; + add2 = bits(dat, pos, (1 << b) - 1) + fl[i]; + pos += b; + } + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; + if (!d) + err(3); + pos += d & 15; + var dt = fd[dsym]; + if (dsym > 3) { + var b = fdeb[dsym]; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + } + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + 131072); + var end = bt + add2; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } + for (; bt < end; ++bt) + buf[bt] = buf[bt - dt]; + } + } + st.l = lm, st.p = lpos, st.b = bt, st.f = final; + if (lm) + final = 1, st.m = lbt, st.d = dm, st.n = dbt; + } while (!final); + return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); +}; +var et = /* @__PURE__ */ new u8(0); +var b2 = function(d, b) { + return d[b] | d[b + 1] << 8; +}; +var b4 = function(d, b) { + return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0; +}; +var b8 = function(d, b) { + return b4(d, b) + b4(d, b + 4) * 4294967296; +}; +var gzs = function(d) { + if (d[0] != 31 || d[1] != 139 || d[2] != 8) + err(6, "invalid gzip data"); + var flg = d[3]; + var st = 10; + if (flg & 4) + st += (d[10] | d[11] << 8) + 2; + for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) + ; + return st + (flg & 2); +}; +var Inflate = /* @__PURE__ */ function() { + function Inflate2(opts, cb) { + if (typeof opts == "function") + cb = opts, opts = {}; + this.ondata = cb; + var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); + this.s = { i: 0, b: dict ? dict.length : 0 }; + this.o = new u8(32768); + this.p = new u8(0); + if (dict) + this.o.set(dict); } + Inflate2.prototype.e = function(c) { + if (!this.ondata) + err(5); + if (this.d) + err(4); + if (!this.p.length) + this.p = c; + else if (c.length) { + var n = new u8(this.p.length + c.length); + n.set(this.p), n.set(c, this.p.length), this.p = n; + } + }; + Inflate2.prototype.c = function(final) { + this.s.i = +(this.d = final || false); + var bts = this.s.b; + var dt = inflt(this.p, this.s, this.o); + this.ondata(slc(dt, bts, this.s.b), this.d); + this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; + this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; + }; + Inflate2.prototype.push = function(chunk, final) { + this.e(chunk), this.c(final); + }; + return Inflate2; +}(); +function inflateSync(data, opts) { + return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); } -class DynoUvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec3", value, update }); +var Gunzip = /* @__PURE__ */ function() { + function Gunzip2(opts, cb) { + this.v = 1; + this.r = 0; + Inflate.call(this, opts, cb); } + Gunzip2.prototype.push = function(chunk, final) { + Inflate.prototype.e.call(this, chunk); + this.r += chunk.length; + if (this.v) { + var p = this.p.subarray(this.v - 1); + var s = p.length > 3 ? gzs(p) : 4; + if (s > p.length) { + if (!final) + return; + } else if (this.v > 1 && this.onmember) { + this.onmember(this.r - p.length); + } + this.p = p.subarray(s), this.v = 0; + } + Inflate.prototype.c.call(this, final); + if (this.s.f && !this.s.l && !final) { + this.v = shft(this.s.p) + 9; + this.s = { i: 0 }; + this.o = new u8(0); + this.push(new u8(0), final); + } + }; + return Gunzip2; +}(); +var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); +var tds = 0; +try { + td.decode(et, { stream: true }); + tds = 1; +} catch (e) { } -class DynoIvec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec3", value, update }); +var dutf8 = function(d) { + for (var r = "", i = 0; ; ) { + var c = d[i++]; + var eb = (c > 127) + (c > 223) + (c > 239); + if (i + eb > d.length) + return { s: r, r: slc(d, i - 1) }; + if (!eb) + r += String.fromCharCode(c); + else if (eb == 3) { + c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); + } else if (eb & 1) + r += String.fromCharCode((c & 31) << 6 | d[i++] & 63); + else + r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); } -} -class DynoVec3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec3", value, update }); +}; +function strFromU8(dat, latin1) { + if (latin1) { + var r = ""; + for (var i = 0; i < dat.length; i += 16384) + r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); + return r; + } else if (td) { + return td.decode(dat); + } else { + var _a2 = dutf8(dat), s = _a2.s, r = _a2.r; + if (r.length) + err(8); + return s; } } -class DynoBvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "bvec4", value, update }); +var slzh = function(d, b) { + return b + 30 + b2(d, b + 26) + b2(d, b + 28); +}; +var zh = function(d, b, z) { + var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); + var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2]; + return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; +}; +var z64e = function(d, b) { + for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) + ; + return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; +}; +function unzipSync(data, opts) { + var files = {}; + var e = data.length - 22; + for (; b4(data, e) != 101010256; --e) { + if (!e || data.length - e > 65558) + err(13); } -} -class DynoUvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "uvec4", value, update }); + var c = b2(data, e + 8); + if (!c) + return {}; + var o = b4(data, e + 16); + var z = o == 4294967295 || c == 65535; + if (z) { + var ze = b4(data, e - 12); + z = b4(data, ze) == 101075792; + if (z) { + c = b4(data, ze + 32); + o = b4(data, ze + 48); + } } -} -class DynoIvec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "ivec4", value, update }); + var fltr = opts && opts.filter; + for (var i = 0; i < c; ++i) { + var _a2 = zh(data, o, z), c_2 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off); + o = no; + if (!fltr || fltr({ + name: fn, + size: sc, + originalSize: su, + compression: c_2 + })) { + if (!c_2) + files[fn] = slc(data, b, b + sc); + else if (c_2 == 8) + files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) }); + else + err(14, "unknown compression type " + c_2); + } } + return files; } -class DynoVec4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "vec4", value, update }); - } +const threeRevision = Number.parseInt(THREE.REVISION); +const threeMrtArray = threeRevision >= 179; +const f32buffer = new Float32Array(1); +const u32buffer = new Uint32Array(f32buffer.buffer); +const supportsFloat16Array = "Float16Array" in globalThis; +const f16buffer = supportsFloat16Array ? new globalThis["Float16Array"](1) : null; +const u16buffer = new Uint16Array(f16buffer == null ? void 0 : f16buffer.buffer); +function normalize$1(vec) { + const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0)); + return vec.map((v) => v / norm); } -class DynoMat2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2", value, update }); - } +function floatBitsToUint$1(f) { + f32buffer[0] = f; + return u32buffer[0]; } -class DynoMat2x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x2", value, update }); - } +function uintBitsToFloat$1(u) { + u32buffer[0] = u; + return f32buffer[0]; } -class DynoMat2x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x3", value, update }); - } +const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS; +const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS; +function toHalfNative(f) { + f16buffer[0] = f; + return u16buffer[0]; } -class DynoMat2x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat2x4", value, update }); +function toHalfJS(f) { + f32buffer[0] = f; + const bits2 = u32buffer[0]; + const sign2 = bits2 >> 31 & 1; + const exp3 = bits2 >> 23 & 255; + const frac = bits2 & 8388607; + const halfSign = sign2 << 15; + if (exp3 === 255) { + if (frac !== 0) { + return halfSign | 32767; + } + return halfSign | 31744; } -} -class DynoMat3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3", value, update }); + const newExp = exp3 - 127 + 15; + if (newExp >= 31) { + return halfSign | 31744; } -} -class DynoMat3x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x2", value, update }); + if (newExp <= 0) { + if (newExp < -10) { + return halfSign; + } + const subFrac = (frac | 8388608) >> 1 - newExp + 13; + return halfSign | subFrac; } + const halfFrac = frac >> 13; + return halfSign | newExp << 10 | halfFrac; } -class DynoMat3x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x3", value, update }); - } -} -class DynoMat3x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat3x4", value, update }); - } -} -class DynoMat4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4", value, update }); - } +function fromHalfNative(u) { + u16buffer[0] = u; + return f16buffer[0]; } -class DynoMat4x2 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x2", value, update }); +function fromHalfJS(h) { + const sign2 = h >> 15 & 1; + const exp3 = h >> 10 & 31; + const frac = h & 1023; + let f32bits; + if (exp3 === 0) { + if (frac === 0) { + f32bits = sign2 << 31; + } else { + let mant = frac; + let e = -14; + while ((mant & 1024) === 0) { + mant <<= 1; + e--; + } + mant &= 1023; + const newExp = e + 127; + const newFrac = mant << 13; + f32bits = sign2 << 31 | newExp << 23 | newFrac; + } + } else if (exp3 === 31) { + if (frac === 0) { + f32bits = sign2 << 31 | 2139095040; + } else { + f32bits = sign2 << 31 | 2143289344; + } + } else { + const newExp = exp3 - 15 + 127; + const newFrac = frac << 13; + f32bits = sign2 << 31 | newExp << 23 | newFrac; } + u32buffer[0] = f32bits; + return f32buffer[0]; } -class DynoMat4x3 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x3", value, update }); - } +function floatToUint8(v) { + return Math.max(0, Math.min(255, Math.round(v * 255))); } -class DynoMat4x4 extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "mat4x4", value, update }); - } +function floatToSint8(v) { + return Math.max(-127, Math.min(127, Math.round(v * 127))); } -class DynoUsampler2D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usampler2D", value, update }); - } +function Uint8ToFloat(v) { + return v / 255; } -class DynoIsampler2D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler2D", value, update }); - } +function Sint8ToFloat(v) { + return v / 127; } -class DynoSampler2D extends DynoUniform { +class DataCache { + // Create a DataCache with a given function that fetches data not in the cache. constructor({ - key, - value, - update + asyncFetch, + dispose, + maxItems = 5 }) { - super({ key, type: "sampler2D", value, update }); + this.asyncFetch = asyncFetch; + this.dispose = dispose; + this.maxItems = maxItems; + this.items = []; + this.pending = /* @__PURE__ */ new Map(); } -} -class DynoUsampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usampler2DArray", value, update }); + has(key) { + return this.items.some((item) => item.key === key); } -} -class DynoIsampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler2DArray", value, update }); + getImmediate(key) { + const index = this.items.findIndex((item) => item.key === key); + if (index >= 0) { + const item = this.items.splice(index, 1)[0]; + this.items.push(item); + return item.data; + } + return void 0; } -} -class DynoSampler2DArray extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DArray", value, update }); + // Fetch data for the key, returning cached data if available. + async getFetch(key) { + const immediate = this.getImmediate(key); + if (immediate !== void 0) { + return immediate; + } + let pending = this.pending.get(key); + if (pending) { + return pending; + } + pending = this.asyncFetch(key).then((data) => { + this.pending.delete(key); + this.items.push({ key, data }); + while (this.items.length > this.maxItems) { + const removed = this.items.shift(); + if (removed && this.dispose) { + this.dispose(removed.data); + } + } + return data; + }); + this.pending.set(key, pending); + return pending; } } -class DynoUsampler3D extends DynoUniform { - constructor({ +function mapObject(obj, fn) { + const entries = Object.entries(obj).map(([key, value]) => [ key, - value, - update - }) { - super({ key, type: "usampler3D", value, update }); - } + fn(value, key) + ]); + return Object.fromEntries(entries); } -class DynoIsampler3D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "isampler3D", value, update }); - } +function mapFilterObject(obj, fn) { + const entries = Object.entries(obj).map(([key, value]) => [key, fn(value, key)]).filter(([_, value]) => value !== void 0); + return Object.fromEntries(entries); } -class DynoSampler3D extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler3D", value, update }); +function getTransferable(ctx) { + const buffers = []; + const seen = /* @__PURE__ */ new Set(); + function traverse(obj) { + if (obj && typeof obj === "object" && !seen.has(obj)) { + seen.add(obj); + if (obj instanceof ArrayBuffer) { + buffers.push(obj); + } else if (ArrayBuffer.isView(obj)) { + buffers.push(obj.buffer); + } else if (Array.isArray(obj)) { + obj.forEach(traverse); + } else { + Object.values(obj).forEach(traverse); + } + } } + traverse(ctx); + return buffers; } -class DynoUsamplerCube extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "usamplerCube", value, update }); - } +function newArray(n, initFunction) { + return new Array(n).fill(null).map((_, i) => initFunction(i)); } -class DynoIsamplerCube extends DynoUniform { +class FreeList { constructor({ - key, - value, - update + // Allocate a new item with the given args + allocate, + // Dispose of an item (optional, if GC is enough) + dispose, + // Check if an existing item in the list is valid for the given args, + // allowing you to store heterogeneous items in the list. + valid }) { - super({ key, type: "isamplerCube", value, update }); + this.items = []; + this.allocate = allocate; + this.dispose = dispose; + this.valid = valid; } -} -class DynoSamplerCube extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "samplerCube", value, update }); - } -} -class DynoSampler2DShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DShadow", value, update }); - } -} -class DynoSampler2DArrayShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "sampler2DArrayShadow", value, update }); - } -} -class DynoSamplerCubeShadow extends DynoUniform { - constructor({ - key, - value, - update - }) { - super({ key, type: "samplerCubeShadow", value, update }); - } -} -class DynoProgram { - constructor({ - graph, - inputs, - outputs, - template, - consoleLog - }) { - this.graph = graph; - this.template = template; - this.inputs = inputs ?? {}; - this.outputs = outputs ?? {}; - const compile = new Compilation({ indent: this.template.indent }); - for (const key in this.outputs) { - if (this.outputs[key]) { - compile.declares.add(this.outputs[key]); + // Allocate a new item from the free list, first checking if a existing item + // on the freelist is valid for the given args. + alloc(args) { + while (true) { + const item = this.items.pop(); + if (!item) { + break; + } + if (this.valid(item, args)) { + return item; + } + if (this.dispose) { + this.dispose(item); } } - const statements = graph.compile({ - inputs: this.inputs, - outputs: this.outputs, - compile - }); - this.shader = template.generate({ globals: compile.globals, statements }); - this.uniforms = compile.uniforms; - this.updaters = compile.updaters; - if (consoleLog) { - console.log("*** COMPILED SHADER", this.shader); - console.log("*** UNIFORMS", this.uniforms); - } + return this.allocate(args); } - prepareMaterial() { - return getMaterial(this); + free(item) { + this.items.push(item); } - update() { - for (const updater of this.updaters) { - updater(); + disposeAll() { + let item; + item = this.items.pop(); + while (item) { + if (this.dispose) { + this.dispose(item); + } + item = this.items.pop(); } } } -class DynoProgramTemplate { - constructor(template) { - const globals = template.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m); - const statements = template.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); - if (!globals || !statements) { - throw new Error( - "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" - ); - } - this.before = template.substring(0, globals.index); - this.between = template.substring( - globals.index + globals[0].length, - statements.index - ); - this.after = template.substring( - statements.index + statements[0].length - ); - this.indent = statements[1]; - } - generate({ - globals, - statements - }) { - return this.before + Array.from(globals).join("\n\n") + this.between + statements.map((s) => this.indent + s).join("\n") + this.after; - } +function encodeExtSplat(extArrays, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) { + const i4 = index * 4; + const [extA, extB] = extArrays; + extA[i4] = floatBitsToUint$1(x); + extA[i4 + 1] = floatBitsToUint$1(y); + extA[i4 + 2] = floatBitsToUint$1(z); + extA[i4 + 3] = toHalf(opacity); + extB[i4] = toHalf(r) | toHalf(g) << 16; + extB[i4 + 1] = toHalf(b) | toHalf(Math.log(scaleX)) << 16; + extB[i4 + 2] = toHalf(Math.log(scaleY)) | toHalf(Math.log(scaleZ)) << 16; + extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW); } -const programMaterial = /* @__PURE__ */ new WeakMap(); -function getMaterial(program) { - let material = programMaterial.get(program); - if (material) { - return material; - } - material = new THREE.RawShaderMaterial({ - glslVersion: THREE.GLSL3, - vertexShader: IDENT_VERTEX_SHADER, - fragmentShader: program.shader, - uniforms: program.uniforms - }); - programMaterial.set(program, material); - return material; +function decodeExtSplat(extArrays, index) { + const result = packedFields; + const i4 = index * 4; + const [extA, extB] = extArrays; + result.center.x = uintBitsToFloat$1(extA[i4]); + result.center.y = uintBitsToFloat$1(extA[i4 + 1]); + result.center.z = uintBitsToFloat$1(extA[i4 + 2]); + result.opacity = fromHalf(extA[i4 + 3] & 65535); + result.color.r = fromHalf(extB[i4] & 65535); + result.color.g = fromHalf(extB[i4] >>> 16); + result.color.b = fromHalf(extB[i4 + 1] & 65535); + result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16)); + result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 65535)); + result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16)); + decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion); + return result; } -function addOutputType(a, b, operation = "add") { - const error = () => { - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); - }; - if (a === b) return a; - if (a === "int") { - if (isIntType(b)) return b; - error(); - } - if (b === "int") { - if (isIntType(a)) return a; - error(); - } - if (a === "uint") { - if (isUintType(b)) return b; - error(); - } - if (b === "uint") { - if (isUintType(a)) return a; - error(); - } - if (a === "float") { - if (isAllFloatType(b)) return b; - error(); - } - if (b === "float") { - if (isAllFloatType(a)) return a; - error(); - } - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); +function setPackedSplat(packedSplats, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * opacity : opacity); + const uQuat = encodeQuatOctXy88R8( + tempQuaternion.set(quatX, quatY, quatZ, quatW) + ); + const uQuatX = uQuat & 255; + const uQuatY = uQuat >>> 8 & 255; + const uQuatZ = uQuat >>> 16 & 255; + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); + const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uCenterX = toHalf(x); + const uCenterY = toHalf(y); + const uCenterZ = toHalf(z); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; + packedSplats[i4 + 1] = uCenterX | uCenterY << 16; + packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24; + packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24; } -function subOutputType(a, b) { - return addOutputType(a, b, "sub"); +function setPackedSplatCenter(packedSplats, index, x, y, z) { + const uCenterX = toHalf(x); + const uCenterY = toHalf(y); + const uCenterZ = toHalf(z); + const i4 = index * 4; + packedSplats[i4 + 1] = uCenterX | uCenterY << 16; + packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760; } -function mulOutputType(a, b) { - const error = () => { - throw new Error(`Invalid mul types: ${a}, ${b}`); - }; - const result = (value) => value; - if (a === "int") { - if (isIntType(b)) return result(b); - error(); - } - if (b === "int") { - if (isIntType(a)) return result(a); - error(); - } - if (a === "uint") { - if (isUintType(b)) return result(b); - error(); +function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ, encoding) { + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = 254 / (lnScaleMax - lnScaleMin); + const uScaleX = scaleX < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleY = scaleY < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const uScaleZ = scaleZ < SCALE_ZERO ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1 + ) + ); + const i4 = index * 4; + packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080; +} +const tempQuaternion = new THREE.Quaternion(); +function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) { + const uQuat = encodeQuatOctXy88R8( + tempQuaternion.set(quatX, quatY, quatZ, quatW) + ); + const uQuatX = uQuat & 255; + const uQuatY = uQuat >>> 8 & 255; + const uQuatZ = uQuat >>> 16 & 255; + const i4 = index * 4; + packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24; + packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24; +} +function setPackedSplatRgba(packedSplats, index, r, g, b, a, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const uA = floatToUint8((encoding == null ? void 0 : encoding.lodOpacity) ? 0.5 * a : a); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24; +} +function setPackedSplatRgb(packedSplats, index, r, g, b, encoding) { + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + const uR = floatToUint8((r - rgbMin) / rgbRange); + const uG = floatToUint8((g - rgbMin) / rgbRange); + const uB = floatToUint8((b - rgbMin) / rgbRange); + const i4 = index * 4; + packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080; +} +function setPackedSplatOpacity(packedSplats, index, opacity) { + const uA = floatToUint8(opacity); + const i4 = index * 4; + packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24; +} +const packedCenter = new THREE.Vector3(); +const packedScales = new THREE.Vector3(); +const packedQuaternion = new THREE.Quaternion(); +const packedColor = new THREE.Color(); +const packedFields = { + center: packedCenter, + scales: packedScales, + quaternion: packedQuaternion, + color: packedColor, + opacity: 0 +}; +function unpackSplat(packedSplats, index, encoding) { + const result = packedFields; + const i4 = index * 4; + const word0 = packedSplats[i4]; + const word1 = packedSplats[i4 + 1]; + const word2 = packedSplats[i4 + 2]; + const word3 = packedSplats[i4 + 3]; + const rgbMin = (encoding == null ? void 0 : encoding.rgbMin) ?? 0; + const rgbMax = (encoding == null ? void 0 : encoding.rgbMax) ?? 1; + const rgbRange = rgbMax - rgbMin; + result.color.set( + rgbMin + (word0 & 255) / 255 * rgbRange, + rgbMin + (word0 >>> 8 & 255) / 255 * rgbRange, + rgbMin + (word0 >>> 16 & 255) / 255 * rgbRange + ); + result.opacity = (word0 >>> 24 & 255) / 255; + if (encoding == null ? void 0 : encoding.lodOpacity) { + result.opacity = 2 * result.opacity; } - if (b === "uint") { - if (isUintType(a)) return result(a); - error(); + result.center.set( + fromHalf(word1 & 65535), + fromHalf(word1 >>> 16 & 65535), + fromHalf(word2 & 65535) + ); + const lnScaleMin = (encoding == null ? void 0 : encoding.lnScaleMin) ?? LN_SCALE_MIN; + const lnScaleMax = (encoding == null ? void 0 : encoding.lnScaleMax) ?? LN_SCALE_MAX; + const lnScaleScale = (lnScaleMax - lnScaleMin) / 254; + const uScalesX = word3 & 255; + result.scales.x = uScalesX === 0 ? 0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale); + const uScalesY = word3 >>> 8 & 255; + result.scales.y = uScalesY === 0 ? 0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale); + const uScalesZ = word3 >>> 16 & 255; + result.scales.z = uScalesZ === 0 ? 0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale); + const uQuat = word2 >>> 16 & 65535 | word3 >>> 8 & 16711680; + decodeQuatOctXy88R8(uQuat, result.quaternion); + return result; +} +function getTextureSize(numSplats) { + const width = SPLAT_TEX_WIDTH; + const height = Math.max( + SPLAT_TEX_MIN_HEIGHT, + Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) + ); + const depth = Math.ceil(numSplats / (width * height)); + const maxSplats = width * height * depth; + return { width, height, depth, maxSplats }; +} +function computeMaxSplats(numSplats) { + const width = SPLAT_TEX_WIDTH; + const height = Math.max( + SPLAT_TEX_MIN_HEIGHT, + Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)) + ); + const depth = Math.ceil(numSplats / (width * height)); + return width * height * depth; +} +function isMobile() { + if (navigator.platform.toLowerCase().startsWith("win")) { + return false; } - if (a === "float") { - if (isAllFloatType(b)) return result(b); - error(); + if (navigator.maxTouchPoints > 0) { + return true; } - if (b === "float") { - if (isAllFloatType(a)) return result(a); - error(); + return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( + navigator.userAgent + ); +} +function isAndroid() { + return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); +} +function isOculus() { + return !!navigator.xr && /Oculus/.test(navigator.userAgent); +} +function isQuest2() { + return isOculus() && /Quest 2/.test(navigator.userAgent); +} +function isIos() { + return /iPhone|iPad/.test(navigator.userAgent); +} +function isVisionPro() { + return !!navigator.xr && isIos() && /Safari/.test(navigator.userAgent) && isMobile(); +} +function flipPixels(pixels, width, height) { + const tempLine = new Uint8Array(width * 4); + for (let y = 0; y < height / 2; y++) { + const topOffset = y * width * 4; + const bottomOffset = (height - 1 - y) * width * 4; + tempLine.set(pixels.subarray(topOffset, topOffset + width * 4)); + pixels.set( + pixels.subarray(bottomOffset, bottomOffset + width * 4), + topOffset + ); + pixels.set(tempLine, bottomOffset); } - if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) { - if (a === b) return result(a); - error(); + return pixels; +} +function pixelsToPngUrl(pixels, width, height) { + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext("2d"); + if (!ctx) { + throw new Error("Can't get 2d context"); } - if (a === "vec2") { - if (b === "vec2" || isMat2(b)) return result("vec2"); - if (b === "mat3x2") return result("vec3"); - if (b === "mat4x2") return result("vec4"); - error(); + const imageData = ctx.createImageData(width, height); + imageData.data.set(pixels); + ctx.putImageData(imageData, 0, 0); + return canvas.toDataURL("image/png"); +} +function cloneClock(clock) { + const newClock = new THREE.Clock(clock.autoStart); + newClock.startTime = clock.startTime; + newClock.oldTime = clock.oldTime; + newClock.elapsedTime = clock.elapsedTime; + newClock.running = clock.running; + return newClock; +} +function omitUndefined(obj) { + return Object.fromEntries( + Object.entries(obj).filter(([_, value]) => value !== void 0) + ); +} +const IDENT_VERTEX_SHADER = unindent(` + precision highp float; + + in vec3 position; + + void main() { + gl_Position = vec4(position.xy, 0.0, 1.0); } - if (a === "vec3") { - if (b === "mat2x3") return result("vec2"); - if (b === "vec3" || isMat3(b)) return result("vec3"); - if (b === "mat4x3") return result("vec4"); - error(); +`); +function averagePositions(positions) { + const sum = new THREE.Vector3(); + for (const position of positions) { + sum.add(position); } - if (a === "vec4") { - if (b === "mat2x4") return result("vec2"); - if (b === "mat3x4") return result("vec3"); - if (b === "vec4" || isMat4(b)) return result("vec4"); - error(); + return sum.divideScalar(positions.length); +} +function averageQuaternions(quaternions) { + if (quaternions.length === 0) { + return new THREE.Quaternion(); } - if (b === "vec2") { - if (isMat2(a)) return result("vec2"); - if (a === "mat2x3") return result("vec3"); - if (a === "mat2x4") return result("vec4"); - error(); + const sum = quaternions[0].clone(); + for (let i = 1; i < quaternions.length; i++) { + if (quaternions[i].dot(quaternions[0]) < 0) { + sum.x -= quaternions[i].x; + sum.y -= quaternions[i].y; + sum.z -= quaternions[i].z; + sum.w -= quaternions[i].w; + } else { + sum.x += quaternions[i].x; + sum.y += quaternions[i].y; + sum.z += quaternions[i].z; + sum.w += quaternions[i].w; + } } - if (b === "vec3") { - if (a === "mat3x2") return result("vec2"); - if (isMat3(a)) return result("vec3"); - if (a === "mat3x4") return result("vec4"); - error(); - } - if (b === "vec4") { - if (a === "mat4x2") return result("vec2"); - if (a === "mat4x3") return result("vec3"); - if (isMat4(a)) return result("vec4"); - error(); - } - if (isMat2(a)) { - if (isMat2(b)) return result("mat2"); - if (b === "mat3x2") return result("mat3x2"); - if (b === "mat4x2") return result("mat4x2"); - error(); - } - if (a === "mat2x3") { - if (isMat2(b)) return result("mat2x3"); - if (b === "mat3x2") return result("mat3"); - if (b === "mat4x2") return result("mat4x3"); - error(); - } - if (a === "mat2x4") { - if (isMat2(b)) return result("mat2x4"); - if (b === "mat3x2") return result("mat3x4"); - if (b === "mat4x2") return result("mat4"); - error(); - } - if (a === "mat3x2") { - if (b === "mat2x3") return result("mat2"); - if (isMat3(b)) return result("mat3x2"); - if (b === "mat4x3") return result("mat4x2"); - error(); - } - if (isMat3(a)) { - if (b === "mat2x3") return result("mat2x3"); - if (isMat3(b)) return result("mat3"); - if (b === "mat4x3") return result("mat4x3"); - error(); - } - if (a === "mat3x4") { - if (b === "mat2x3") return result("mat2x4"); - if (isMat3(b)) return result("mat3x4"); - if (b === "mat4x3") return result("mat4"); - error(); - } - if (a === "mat4x2") { - if (b === "mat2x4") return result("mat2"); - if (b === "mat3x4") return result("mat3x2"); - if (isMat4(b)) return result("mat4x2"); - error(); - } - if (a === "mat4x3") { - if (b === "mat2x4") return result("mat2x3"); - if (b === "mat3x4") return result("mat3"); - if (isMat4(b)) return result("mat4x3"); - error(); - } - if (isMat4(a)) { - if (b === "mat2x4") return result("mat2x4"); - if (b === "mat3x4") return result("mat3x4"); - if (isMat4(b)) return result("mat4"); - error(); - } - throw new Error(`Invalid mul types: ${a}, ${b}`); -} -function divOutputType(a, b) { - return addOutputType(a, b, "div"); -} -function imodOutputType(a, b) { - if (a === b) return a; - if (a === "int") { - if (isIntType(b)) return b; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (a === "uint") { - if (isUintType(b)) return b; - } else if (b === "uint") { - if (isUintType(a)) return a; - } - throw new Error(`Invalid imod types: ${a}, ${b}`); + return sum.normalize(); } -function modOutputType(a, b) { - if (a === b || b === "float") return a; - throw new Error(`Invalid mod types: ${a}, ${b}`); +function coinciDist(matrix1, matrix2) { + const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1); + const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2); + const direction1 = new THREE.Vector3(0, 0, -1).applyMatrix4(matrix1).sub(origin1).normalize(); + const direction2 = new THREE.Vector3(0, 0, -1).applyMatrix4(matrix2).sub(origin2).normalize(); + const distance2 = origin1.distanceTo(origin2); + const coincidence = direction1.dot(direction2); + return { distance: distance2, coincidence }; } -function modfOutputType(a) { - return a; +function withinDist({ + matrix1, + matrix2, + maxDistance +}) { + const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1); + const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2); + return origin1.distanceTo(origin2) <= maxDistance; } -function negOutputType(a) { - return a; +function withinCoinciDist({ + matrix1, + matrix2, + maxDistance, + minCoincidence +}) { + const { distance: distance2, coincidence } = coinciDist(matrix1, matrix2); + return distance2 <= maxDistance && (minCoincidence == null || coincidence >= minCoincidence); } -function absOutputType(a) { - return a; +function coorientDist(matrix1, matrix2) { + const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()]; + const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()]; + matrix1.decompose(origin1, rotate1, new THREE.Vector3()); + matrix2.decompose(origin2, rotate2, new THREE.Vector3()); + const distance2 = origin1.distanceTo(origin2); + const coorient = Math.abs(rotate1.dot(rotate2)); + return { distance: distance2, coorient }; } -function signOutputType(a) { - return a; +function withinCoorientDist({ + matrix1, + matrix2, + maxDistance, + minCoorient +}) { + const { distance: distance2, coorient } = coorientDist(matrix1, matrix2); + return distance2 <= maxDistance && (minCoorient == null || coorient >= minCoorient); } -function floorOutputType(a) { - return a; +function epsilonSign(value, epsilon = 1e-3) { + if (Math.abs(value) < epsilon) { + return 0; + } + return Math.sign(value); } -function ceilOutputType(a) { - return a; +function encodeQuatXyz888(q) { + const negQuat = q.w < 0; + const iQuatX = floatToSint8(negQuat ? -q.x : q.x); + const iQuatY = floatToSint8(negQuat ? -q.y : q.y); + const iQuatZ = floatToSint8(negQuat ? -q.z : q.z); + const uQuatX = iQuatX & 255; + const uQuatY = iQuatY & 255; + const uQuatZ = iQuatZ & 255; + return uQuatX | uQuatY << 8 | uQuatZ << 16; } -function truncOutputType(a) { - return a; +function decodeQuatXyz888(encoded, out) { + const iQuatX = encoded << 24 >> 24; + const iQuatY = encoded << 16 >> 24; + const iQuatZ = encoded << 8 >> 24; + out.set(iQuatX / 127, iQuatY / 127, iQuatZ / 127, 0); + const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z; + out.w = Math.sqrt(Math.max(0, 1 - dotSelf)); + return out; } -function roundOutputType(a) { - return a; +const tempNormalizedQuaternion = new THREE.Quaternion(); +const tempAxis = new THREE.Vector3(); +function encodeQuatOctXy88R8(q) { + const qnorm = tempNormalizedQuaternion.copy(q).normalize(); + if (qnorm.w < 0) { + qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w); + } + const theta = 2 * Math.acos(qnorm.w); + const xyz_norm = Math.sqrt( + qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z + ); + const axis = xyz_norm < 1e-6 ? tempAxis.set(1, 0, 0) : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm); + const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z); + let p_x = axis.x / sum; + let p_y = axis.y / sum; + if (axis.z < 0) { + const tmp = p_x; + p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); + p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + } + const u_f = p_x * 0.5 + 0.5; + const v_f = p_y * 0.5 + 0.5; + const quantU = Math.round(u_f * 255); + const quantV = Math.round(v_f * 255); + const angleInt = Math.round(theta * (255 / Math.PI)); + return angleInt << 16 | quantV << 8 | quantU; } -function fractOutputType(a) { - return a; +function decodeQuatOctXy88R8(encoded, out) { + const quantU = encoded & 255; + const quantV = encoded >>> 8 & 255; + const angleInt = encoded >>> 16 & 255; + const u_f = quantU / 255; + const v_f = quantV / 255; + let f_x = (u_f - 0.5) * 2; + let f_y = (v_f - 0.5) * 2; + const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); + const t = Math.max(-f_z, 0); + f_x += f_x >= 0 ? -t : t; + f_y += f_y >= 0 ? -t : t; + const axis = tempAxis.set(f_x, f_y, f_z).normalize(); + const theta = angleInt / 255 * Math.PI; + const halfTheta = theta * 0.5; + const s = Math.sin(halfTheta); + const w = Math.cos(halfTheta); + out.set(axis.x * s, axis.y * s, axis.z * s, w); + return out; } -function powOutputType(a) { - return a; +function encodeQuatEulerXyz888(q) { + const qNorm = q.clone().normalize(); + const sinr_cosp = 2 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z); + const cosr_cosp = 1 - 2 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y); + const roll = Math.atan2(sinr_cosp, cosr_cosp); + const sinp = 2 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x); + const pitch = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp); + const siny_cosp = 2 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y); + const cosy_cosp = 1 - 2 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z); + const yaw = Math.atan2(siny_cosp, cosy_cosp); + const normRoll = (roll + Math.PI) / (2 * Math.PI); + const normPitch = (pitch + Math.PI) / (2 * Math.PI); + const normYaw = (yaw + Math.PI) / (2 * Math.PI); + const rollQ = Math.round(normRoll * 255); + const pitchQ = Math.round(normPitch * 255); + const yawQ = Math.round(normYaw * 255); + return yawQ << 16 | pitchQ << 8 | rollQ; } -function expOutputType(a) { - return a; +function decodeQuatEulerXyz888(encoded, out) { + const rollQ = encoded & 255; + const pitchQ = encoded >>> 8 & 255; + const yawQ = encoded >>> 16 & 255; + const normRoll = rollQ / 255; + const normPitch = pitchQ / 255; + const normYaw = yawQ / 255; + const roll = normRoll * (2 * Math.PI) - Math.PI; + const pitch = normPitch * (2 * Math.PI) - Math.PI; + const yaw = normYaw * (2 * Math.PI) - Math.PI; + const cr = Math.cos(roll * 0.5); + const sr = Math.sin(roll * 0.5); + const cp = Math.cos(pitch * 0.5); + const sp = Math.sin(pitch * 0.5); + const cy = Math.cos(yaw * 0.5); + const sy = Math.sin(yaw * 0.5); + out.w = cr * cp * cy + sr * sp * sy; + out.x = sr * cp * cy - cr * sp * sy; + out.y = cr * sp * cy + sr * cp * sy; + out.z = cr * cp * sy - sr * sp * cy; + out.normalize(); + return out; } -function exp2OutputType(a) { - return a; -} -function logOutputType(a) { - return a; -} -function log2OutputType(a) { - return a; -} -function sqrOutputType(a) { - return a; +function encodeQuatOctXy1010R12(qx, qy, qz, qw) { + const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw); + const qnx = (qw < 0 ? -qx : qx) / qlen; + const qny = (qw < 0 ? -qy : qy) / qlen; + const qnz = (qw < 0 ? -qz : qz) / qlen; + const qnw = (qw < 0 ? -qw : qw) / qlen; + const theta = 2 * Math.acos(qnw); + const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz); + const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm; + const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm; + const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm; + const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ); + let p_x = axisX / sum; + let p_y = axisY / sum; + if (axisZ < 0) { + const tmp = p_x; + p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1); + p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1); + } + const u_f = p_x * 0.5 + 0.5; + const v_f = p_y * 0.5 + 0.5; + const quantU = Math.round(u_f * 1023); + const quantV = Math.round(v_f * 1023); + const angleInt = Math.round(theta * (4095 / Math.PI)); + return angleInt << 20 | quantV << 10 | quantU; } -function sqrtOutputType(a) { - return a; +function decodeQuatOctXy1010R12(encoded, out) { + const quantU = encoded & 1023; + const quantV = encoded >>> 10 & 1023; + const angleInt = encoded >>> 20 & 4095; + const u_f = quantU / 1023; + const v_f = quantV / 1023; + let f_x = (u_f - 0.5) * 2; + let f_y = (v_f - 0.5) * 2; + const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y)); + const t = Math.max(-f_z, 0); + f_x += f_x >= 0 ? -t : t; + f_y += f_y >= 0 ? -t : t; + const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z); + const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen; + const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen; + const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen; + const theta = angleInt / 4095 * Math.PI; + const halfTheta = theta * 0.5; + const s = Math.sin(halfTheta); + const w = Math.cos(halfTheta); + out.set(axisX * s, axisY * s, axisZ * s, w); + return out; } -function inversesqrtOutputType(a) { - return a; +function packSint8Bytes(b0, b1, b22, b3) { + const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127))); + const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127))); + const clampedB2 = Math.round(Math.max(-127, Math.min(127, b22 * 127))); + const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127))); + return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24; } -function minOutputType(a, b, operation = "min") { - if (a === b) return a; - if (b === "float") { - if (isFloatType(a)) return a; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (b === "uint") { - if (isUintType(a)) return a; +function encodeSh1Rgb(sh1Array, index, sh1Rgb, encoding) { + const sh1Max = (encoding == null ? void 0 : encoding.sh1Max) ?? 1; + const sh1Scale = 63 / sh1Max; + const base = index * 2; + for (let i = 0; i < 9; ++i) { + const s = sh1Rgb[i] * sh1Scale; + const value = Math.round(Math.max(-63, Math.min(63, s))) & 127; + const bitStart = i * 7; + const bitEnd = bitStart + 7; + const wordStart = Math.floor(bitStart / 32); + const bitOffset = bitStart - wordStart * 32; + const firstWord = value << bitOffset & 4294967295; + sh1Array[base + wordStart] |= firstWord; + if (bitEnd > wordStart * 32 + 32) { + const secondWord = value >>> 32 - bitOffset & 4294967295; + sh1Array[base + wordStart + 1] |= secondWord; + } } - throw new Error(`Invalid ${operation} types: ${a}, ${b}`); } -function maxOutputType(a, b) { - return minOutputType(a, b, "max"); +function encodeSh2Rgb(sh2Array, index, sh2Rgb, encoding) { + const sh2Max = (encoding == null ? void 0 : encoding.sh2Max) ?? 1; + const sh2Scale = 1 / sh2Max; + sh2Array[index * 4 + 0] = packSint8Bytes( + sh2Rgb[0] * sh2Scale, + sh2Rgb[1] * sh2Scale, + sh2Rgb[2] * sh2Scale, + sh2Rgb[3] * sh2Scale + ); + sh2Array[index * 4 + 1] = packSint8Bytes( + sh2Rgb[4] * sh2Scale, + sh2Rgb[5] * sh2Scale, + sh2Rgb[6] * sh2Scale, + sh2Rgb[7] * sh2Scale + ); + sh2Array[index * 4 + 2] = packSint8Bytes( + sh2Rgb[8] * sh2Scale, + sh2Rgb[9] * sh2Scale, + sh2Rgb[10] * sh2Scale, + sh2Rgb[11] * sh2Scale + ); + sh2Array[index * 4 + 3] = packSint8Bytes( + sh2Rgb[12] * sh2Scale, + sh2Rgb[13] * sh2Scale, + sh2Rgb[14] * sh2Scale, + 0 + ); } -function clampOutputType(a, b, _c) { - if (b === "float") { - if (isFloatType(a)) return a; - } else if (b === "int") { - if (isIntType(a)) return a; - } else if (b === "uint") { - if (isUintType(a)) return a; +function encodeSh3Rgb(sh3Array, index, sh3Rgb, encoding) { + const sh3Max = (encoding == null ? void 0 : encoding.sh3Max) ?? 1; + const sh3Scale = 31 / sh3Max; + const base = index * 4; + for (let i = 0; i < 21; ++i) { + const s = sh3Rgb[i] * sh3Scale; + const value = Math.round(Math.max(-31, Math.min(31, s))) & 63; + const bitStart = i * 6; + const bitEnd = bitStart + 6; + const wordStart = Math.floor(bitStart / 32); + const bitOffset = bitStart - wordStart * 32; + const firstWord = value << bitOffset & 4294967295; + sh3Array[base + wordStart] |= firstWord; + if (bitEnd > wordStart * 32 + 32) { + const secondWord = value >>> 32 - bitOffset & 4294967295; + sh3Array[base + wordStart + 1] |= secondWord; + } } - throw new Error(`Invalid clamp types: ${a}, ${b}`); } -function mixOutputType(a, b, c) { - if (c === a) return a; - if (c === "float") return a; - if (c === "bool" && a === "float") return a; - if (c === "bvec2" && a === "vec2") return a; - if (c === "bvec3" && a === "vec3") return a; - if (c === "bvec4" && a === "vec4") return a; - throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`); +function encodeExtRgb(r, g, b) { + const ar = Math.abs(r); + const ag = Math.abs(g); + const ab = Math.abs(b); + const maxAbs = Math.max(ar, ag, ab); + const base = Math.floor(Math.log2(maxAbs)); + const biasedBase = Math.max(0, Math.min(31, base + 15)); + const divisor = 2 ** (biasedBase - 15) / 255; + const uR = Math.round(Math.max(0, Math.min(255, ar / divisor))); + const uG = Math.round(Math.max(0, Math.min(255, ag / divisor))); + const uB = Math.round(Math.max(0, Math.min(255, ab / divisor))); + const expSigns = biasedBase << 3 | ((r < 0 ? 1 : 0) | (g < 0 ? 2 : 0) | (b < 0 ? 4 : 0)); + return uR | uG << 8 | uB << 16 | expSigns << 24; } -function stepOutputType(a, b) { - if (a === b || b === "float") return b; - throw new Error(`Invalid step types: ${a}, ${b}`); +function decodeExtRgb(encoded) { + const color = packedFields.color; + const biasedBase = encoded >>> 27 & 31; + const divisor = 2 ** (biasedBase - 15) / 255; + const r = (encoded & 255) * divisor; + const g = (encoded >>> 8 & 255) * divisor; + const b = (encoded >>> 16 & 255) * divisor; + color.r = encoded & 16777216 ? -r : r; + color.g = encoded & 33554432 ? -g : g; + color.b = encoded & 67108864 ? -b : b; + return color; } -function smoothstepOutputType(a, b, c) { - if (a === b) { - if (a === c || a === "float") return c; +function encodeExtSh1Rgb(sh1Array, index, sh1Rgb) { + const i4 = index * 4; + for (let k = 0; k < 3; ++k) { + const k3 = k * 3; + sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); } - throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`); -} -function isNanOutputType(a, operation = "isNan") { - if (a === "float") return "bool"; - if (a === "vec2") return "bvec2"; - if (a === "vec3") return "bvec3"; - if (a === "vec4") return "bvec4"; - throw new Error(`Invalid ${operation} types: ${a}`); -} -function isInfOutputType(a) { - return isNanOutputType(a, "isInf"); } -const add = (a, b) => new Add({ a, b }); -const sub = (a, b) => new Sub({ a, b }); -const mul = (a, b) => new Mul({ a, b }); -const div = (a, b) => new Div({ a, b }); -const imod = (a, b) => new IMod({ a, b }); -const mod = (a, b) => new Mod({ a, b }); -const modf = (a) => new Modf({ a }).outputs; -const neg = (a) => new Neg({ a }); -const abs = (a) => new Abs({ a }); -const sign = (a) => new Sign({ a }); -const floor = (a) => new Floor({ a }); -const ceil = (a) => new Ceil({ a }); -const trunc = (a) => new Trunc({ a }); -const round = (a) => new Round({ a }); -const fract = (a) => new Fract({ a }); -const pow = (a, b) => new Pow({ a, b }); -const exp = (a) => new Exp({ a }); -const exp2 = (a) => new Exp2({ a }); -const log = (a) => new Log({ a }); -const log2 = (a) => new Log2({ a }); -const sqr = (a) => new Sqr({ a }); -const sqrt = (a) => new Sqrt({ a }); -const inversesqrt = (a) => new InverseSqrt({ a }); -const min = (a, b) => new Min({ a, b }); -const max = (a, b) => new Max({ a, b }); -const clamp = (a, min2, max2) => new Clamp({ a, min: min2, max: max2 }); -const mix = (a, b, t) => new Mix({ a, b, t }); -const step = (edge, x) => new Step({ edge, x }); -const smoothstep = (edge0, edge1, x) => new Smoothstep({ edge0, edge1, x }); -const isNan = (a) => new IsNan({ a }); -const isInf = (a) => new IsInf({ a }); -class Add extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "sum", outTypeFunc: addOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`]; - }; +function encodeExtSh12Rgb(sh1Array, sh2Array, index, sh1Rgb, sh2Rgb) { + const i4 = index * 4; + for (let k = 0; k < 3; ++k) { + const k3 = k * 3; + sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]); + } + sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]); + for (let k = 1; k < 5; ++k) { + const k5 = k * 5; + sh2Array[i4 + (k - 1)] = encodeExtRgb( + sh2Rgb[k5], + sh2Rgb[k5 + 1], + sh2Rgb[k5 + 2] + ); } } -class Sub extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "difference", outTypeFunc: subOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`]; - }; +function encodeExt3Rgb(sh3ArrayA, sh3ArrayB, index, sh3Rgb) { + const i4 = index * 4; + for (let k = 0; k < 4; ++k) { + const k3 = k * 3; + sh3ArrayA[i4 + k] = encodeExtRgb( + sh3Rgb[k3], + sh3Rgb[k3 + 1], + sh3Rgb[k3 + 2] + ); } -} -class Mul extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "product", outTypeFunc: mulOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.product} = ${inputs.a} * ${inputs.b};`]; - }; + for (let k = 4; k < 7; ++k) { + const k3 = k * 3; + sh3ArrayB[i4 + (k - 4)] = encodeExtRgb( + sh3Rgb[k3], + sh3Rgb[k3 + 1], + sh3Rgb[k3 + 2] + ); } } -class Div extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "quotient", outTypeFunc: divOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`]; - }; +function decompressPartialGzip(fileBytes, numBytes) { + const chunks = []; + let totalBytes = 0; + let result = null; + const gunzip = new Gunzip((data, final) => { + chunks.push(data); + totalBytes += data.length; + if (final || totalBytes >= numBytes) { + const allBytes = new Uint8Array(totalBytes); + let offset2 = 0; + for (const chunk of chunks) { + allBytes.set(chunk, offset2); + offset2 += chunk.length; + } + result = allBytes.slice(0, numBytes); + } + }); + const CHUNK_SIZE = 1024; + let offset = 0; + while (result == null && offset < fileBytes.length) { + const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE); + gunzip.push(chunk, false); + offset += CHUNK_SIZE; } -} -class IMod extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "remainder", outTypeFunc: imodOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`]; - }; + if (result == null) { + gunzip.push(new Uint8Array(), true); + if (result == null) { + throw new Error("Failed to decompress partial gzip"); + } } + return result; } -class Mod extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "remainder", outTypeFunc: modOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`]; - }; +class GunzipReader { + constructor({ + fileBytes, + chunkBytes = 64 * 1024 + }) { + this.fileBytes = fileBytes; + this.chunkBytes = chunkBytes; + this.chunks = []; + this.totalBytes = 0; + const ds = new DecompressionStream("gzip"); + const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds); + this.reader = decompressionStream.getReader(); } -} -class Modf extends Dyno { - constructor({ a }) { - const inTypes = { a: valType(a) }; - const outType = modfOutputType(inTypes.a); - const outTypes = { - fract: outType, - integer: outType - }; - super({ inTypes, outTypes, inputs: { a } }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`]; - }; + async read(numBytes) { + while (this.totalBytes < numBytes) { + const { value: chunk, done: readerDone } = await this.reader.read(); + if (readerDone) { + break; + } + this.chunks.push(chunk); + this.totalBytes += chunk.length; + } + if (this.totalBytes < numBytes) { + throw new Error( + `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}` + ); + } + const allBytes = new Uint8Array(this.totalBytes); + let outOffset = 0; + for (const chunk of this.chunks) { + allBytes.set(chunk, outOffset); + outOffset += chunk.length; + } + const result = allBytes.subarray(0, numBytes); + this.chunks = [allBytes.subarray(numBytes)]; + this.totalBytes -= numBytes; + return result; } } -class Neg extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "neg", outTypeFunc: negOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.neg} = -${inputs.a};`]; - }; +function uploadU32DataTextureRows(renderer, texture2, width, rows, data) { + const gl = renderer.getContext(); + const props = renderer.properties.get(texture2); + const glTexture = props == null ? void 0 : props.__webglTexture; + if (!glTexture) { + throw new Error("texture not found"); } + const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL); + const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL); + renderer.state.activeTexture(gl.TEXTURE0); + renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, + width, + rows, + gl.RGBA_INTEGER, + gl.UNSIGNED_INT, + data + ); + renderer.state.unbindTexture(); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply); } -class Abs extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "abs", outTypeFunc: absOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.abs} = abs(${inputs.a});`]; - }; +const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + DataCache, + FreeList, + GunzipReader, + IDENT_VERTEX_SHADER, + Sint8ToFloat, + Uint8ToFloat, + averagePositions, + averageQuaternions, + cloneClock, + coinciDist, + computeMaxSplats, + coorientDist, + decodeExtRgb, + decodeExtSplat, + decodeQuatEulerXyz888, + decodeQuatOctXy1010R12, + decodeQuatOctXy88R8, + decodeQuatXyz888, + decompressPartialGzip, + encodeExt3Rgb, + encodeExtRgb, + encodeExtSh12Rgb, + encodeExtSh1Rgb, + encodeExtSplat, + encodeQuatEulerXyz888, + encodeQuatOctXy1010R12, + encodeQuatOctXy88R8, + encodeQuatXyz888, + encodeSh1Rgb, + encodeSh2Rgb, + encodeSh3Rgb, + epsilonSign, + flipPixels, + floatBitsToUint: floatBitsToUint$1, + floatToSint8, + floatToUint8, + fromHalf, + getTextureSize, + getTransferable, + isAndroid, + isIos, + isMobile, + isOculus, + isQuest2, + isVisionPro, + mapFilterObject, + mapObject, + newArray, + normalize: normalize$1, + omitUndefined, + pixelsToPngUrl, + setPackedSplat, + setPackedSplatCenter, + setPackedSplatOpacity, + setPackedSplatQuat, + setPackedSplatRgb, + setPackedSplatRgba, + setPackedSplatScales, + threeMrtArray, + threeRevision, + toHalf, + uintBitsToFloat: uintBitsToFloat$1, + unpackSplat, + uploadU32DataTextureRows, + withinCoinciDist, + withinCoorientDist, + withinDist +}, Symbol.toStringTag, { value: "Module" })); +class DynoProgram { + constructor({ + graph, + inputs, + outputs, + template, + consoleLog + }) { + this.graph = graph; + this.template = template; + this.inputs = inputs ?? {}; + this.outputs = outputs ?? {}; + const compile = new Compilation({ indent: this.template.indent }); + for (const key in this.outputs) { + if (this.outputs[key]) { + compile.declares.add(this.outputs[key]); + } + } + const statements = graph.compile({ + inputs: this.inputs, + outputs: this.outputs, + compile + }); + this.shader = template.generate({ globals: compile.globals, statements }); + this.uniforms = compile.uniforms; + this.updaters = compile.updaters; + if (consoleLog) { + console.log("*** COMPILED SHADER", this.shader); + console.log("*** UNIFORMS", this.uniforms); + } } -} -class Sign extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sign", outTypeFunc: signOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sign} = sign(${inputs.a});`]; - }; + prepareMaterial() { + return getMaterial(this); + } + update() { + for (const updater of this.updaters) { + updater(); + } } } -class Floor extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "floor", outTypeFunc: floorOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.floor} = floor(${inputs.a});`]; - }; +class DynoProgramTemplate { + constructor(template) { + const globals = template.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m); + const statements = template.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); + if (!globals || !statements) { + throw new Error( + "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" + ); + } + this.before = template.substring(0, globals.index); + this.between = template.substring( + globals.index + globals[0].length, + statements.index + ); + this.after = template.substring( + statements.index + statements[0].length + ); + this.indent = statements[1]; } -} -class Ceil extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "ceil", outTypeFunc: ceilOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.ceil} = ceil(${inputs.a});`]; - }; + generate({ + globals, + statements + }) { + return this.before + Array.from(globals).join("\n\n") + this.between + statements.map((s) => this.indent + s).join("\n") + this.after; } } -class Trunc extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "trunc", outTypeFunc: truncOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.trunc} = trunc(${inputs.a});`]; - }; +const programMaterial = /* @__PURE__ */ new WeakMap(); +function getMaterial(program) { + let material = programMaterial.get(program); + if (material) { + return material; } + material = new THREE.RawShaderMaterial({ + glslVersion: THREE.GLSL3, + vertexShader: IDENT_VERTEX_SHADER, + fragmentShader: program.shader, + uniforms: program.uniforms + }); + programMaterial.set(program, material); + return material; } -class Round extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "round", outTypeFunc: roundOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.round} = round(${inputs.a});`]; - }; +function addOutputType(a, b, operation = "add") { + const error = () => { + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); + }; + if (a === b) return a; + if (a === "int") { + if (isIntType(b)) return b; + error(); } -} -class Fract extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "fract", outTypeFunc: fractOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.fract} = fract(${inputs.a});`]; - }; + if (b === "int") { + if (isIntType(a)) return a; + error(); } -} -class Pow extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "power", outTypeFunc: powOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`]; - }; + if (a === "uint") { + if (isUintType(b)) return b; + error(); } -} -class Exp extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "exp", outTypeFunc: expOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.exp} = exp(${inputs.a});`]; - }; + if (b === "uint") { + if (isUintType(a)) return a; + error(); } -} -class Exp2 extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "exp2", outTypeFunc: exp2OutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.exp2} = exp2(${inputs.a});`]; - }; + if (a === "float") { + if (isAllFloatType(b)) return b; + error(); } -} -class Log extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "log", outTypeFunc: logOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.log} = log(${inputs.a});`]; - }; + if (b === "float") { + if (isAllFloatType(a)) return a; + error(); } + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); } -class Log2 extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "log2", outTypeFunc: log2OutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.log2} = log2(${inputs.a});`]; - }; - } +function subOutputType(a, b) { + return addOutputType(a, b, "sub"); } -class Sqr extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sqr", outTypeFunc: sqrOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`]; - }; +function mulOutputType(a, b) { + const error = () => { + throw new Error(`Invalid mul types: ${a}, ${b}`); + }; + const result = (value) => value; + if (a === "int") { + if (isIntType(b)) return result(b); + error(); } -} -class Sqrt extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "sqrt", outTypeFunc: sqrtOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.sqrt} = sqrt(${inputs.a});`]; - }; + if (b === "int") { + if (isIntType(a)) return result(a); + error(); } -} -class InverseSqrt extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "inversesqrt", outTypeFunc: inversesqrtOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`]; - }; + if (a === "uint") { + if (isUintType(b)) return result(b); + error(); } -} -class Min extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "min", outTypeFunc: minOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`]; - }; + if (b === "uint") { + if (isUintType(a)) return result(a); + error(); } -} -class Max extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "max", outTypeFunc: maxOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`]; - }; + if (a === "float") { + if (isAllFloatType(b)) return result(b); + error(); } -} -class Clamp extends TrinaryOp { - constructor({ - a, - min: min2, - max: max2 - }) { - super({ - a, - b: min2, - c: max2, - outKey: "clamp", - outTypeFunc: clampOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: a2, b: min3, c: max3 } = inputs; - return [`${outputs.clamp} = clamp(${a2}, ${min3}, ${max3});`]; - }; + if (b === "float") { + if (isAllFloatType(a)) return result(a); + error(); } -} -class Mix extends TrinaryOp { - constructor({ a, b, t }) { - super({ a, b, c: t, outKey: "mix", outTypeFunc: mixOutputType }); - this.statements = ({ inputs, outputs }) => { - const { a: a2, b: b22, c: t2 } = inputs; - return [`${outputs.mix} = mix(${a2}, ${b22}, ${t2});`]; - }; + if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) { + if (a === b) return result(a); + error(); } -} -class Step extends BinaryOp { - constructor({ edge, x }) { - super({ - a: edge, - b: x, - outKey: "step", - outTypeFunc: stepOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: edge2, b: x2 } = inputs; - return [`${outputs.step} = step(${edge2}, ${x2});`]; - }; + if (a === "vec2") { + if (b === "vec2" || isMat2(b)) return result("vec2"); + if (b === "mat3x2") return result("vec3"); + if (b === "mat4x2") return result("vec4"); + error(); } -} -class Smoothstep extends TrinaryOp { - constructor({ - edge0, - edge1, - x - }) { - super({ - a: edge0, - b: edge1, - c: x, - outKey: "smoothstep", - outTypeFunc: smoothstepOutputType - }); - this.statements = ({ inputs, outputs }) => { - const { a: edge02, b: edge12, c: x2 } = inputs; - return [`${outputs.smoothstep} = smoothstep(${edge02}, ${edge12}, ${x2});`]; - }; + if (a === "vec3") { + if (b === "mat2x3") return result("vec2"); + if (b === "vec3" || isMat3(b)) return result("vec3"); + if (b === "mat4x3") return result("vec4"); + error(); } -} -class IsNan extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "isNan", outTypeFunc: isNanOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.isNan} = isNan(${inputs.a});`]; - }; + if (a === "vec4") { + if (b === "mat2x4") return result("vec2"); + if (b === "mat3x4") return result("vec3"); + if (b === "vec4" || isMat4(b)) return result("vec4"); + error(); } -} -class IsInf extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "isInf", outTypeFunc: isInfOutputType }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.isInf} = isInf(${inputs.a});`]; - }; + if (b === "vec2") { + if (isMat2(a)) return result("vec2"); + if (a === "mat2x3") return result("vec3"); + if (a === "mat2x4") return result("vec4"); + error(); } -} -const and = (a, b) => new And({ a, b }); -const or = (a, b) => new Or({ a, b }); -const xor = (a, b) => new Xor({ a, b }); -const not = (a) => new Not({ a }); -const shr = (a, b) => new Shr({ a, b }); -const shl = (a, b) => new Shl({ a, b }); -const lessThan = (a, b) => new LessThan({ a, b }); -const lessThanEqual = (a, b) => new LessThanEqual({ a, b }); -const greaterThan = (a, b) => new GreaterThan({ a, b }); -const greaterThanEqual = (a, b) => new GreaterThanEqual({ a, b }); -const equal = (a, b) => new Equal({ a, b }); -const notEqual = (a, b) => new NotEqual({ a, b }); -const any = (a) => new Any({ a }); -const all = (a) => new All({ a }); -const select = (cond, t, f) => new Select({ cond, t, f }); -const compXor = (a) => new CompXor({ a }); -class And extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "and" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.and === "bool") { - return [`${outputs.and} = ${inputs.a} && ${inputs.b};`]; - } - return [`${outputs.and} = ${inputs.a} & ${inputs.b};`]; - }; + if (b === "vec3") { + if (a === "mat3x2") return result("vec2"); + if (isMat3(a)) return result("vec3"); + if (a === "mat3x4") return result("vec4"); + error(); } -} -class Or extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "or" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.or === "bool") { - return [`${outputs.or} = ${inputs.a} || ${inputs.b};`]; - } - return [`${outputs.or} = ${inputs.a} | ${inputs.b};`]; - }; + if (b === "vec4") { + if (a === "mat4x2") return result("vec2"); + if (a === "mat4x3") return result("vec3"); + if (isMat4(a)) return result("vec4"); + error(); } -} -class Xor extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "xor" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.xor === "bool") { - return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`]; - } - return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`]; - }; + if (isMat2(a)) { + if (isMat2(b)) return result("mat2"); + if (b === "mat3x2") return result("mat3x2"); + if (b === "mat4x2") return result("mat4x2"); + error(); } -} -class Not extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => aType, outKey: "not" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.not === "bool") { - return [`${outputs.not} = !${inputs.a};`]; - } - return [`${outputs.not} = not(${inputs.a});`]; - }; + if (a === "mat2x3") { + if (isMat2(b)) return result("mat2x3"); + if (b === "mat3x2") return result("mat3"); + if (b === "mat4x2") return result("mat4x3"); + error(); } -} -class LessThan extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThan"), - outKey: "lessThan" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.lessThan === "bool") { - return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`]; - } - return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat2x4") { + if (isMat2(b)) return result("mat2x4"); + if (b === "mat3x2") return result("mat3x4"); + if (b === "mat4x2") return result("mat4"); + error(); } -} -class LessThanEqual extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThanEqual"), - outKey: "lessThanEqual" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.lessThanEqual === "bool") { - return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`]; - } - return [ - `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});` - ]; - }; + if (a === "mat3x2") { + if (b === "mat2x3") return result("mat2"); + if (isMat3(b)) return result("mat3x2"); + if (b === "mat4x3") return result("mat4x2"); + error(); } -} -class GreaterThan extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThan"), - outKey: "greaterThan" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.greaterThan === "bool") { - return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`]; - } - return [ - `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});` - ]; - }; + if (isMat3(a)) { + if (b === "mat2x3") return result("mat2x3"); + if (isMat3(b)) return result("mat3"); + if (b === "mat4x3") return result("mat4x3"); + error(); } -} -class GreaterThanEqual extends BinaryOp { - constructor({ a, b }) { - super({ - a, - b, - outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThanEqual"), - outKey: "greaterThanEqual" - }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.greaterThanEqual === "bool") { - return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`]; - } - return [ - `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});` - ]; - }; + if (a === "mat3x4") { + if (b === "mat2x3") return result("mat2x4"); + if (isMat3(b)) return result("mat3x4"); + if (b === "mat4x3") return result("mat4"); + error(); } -} -class Equal extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: equalOutputType, outKey: "equal" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.equal === "bool") { - return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`]; - } - return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat4x2") { + if (b === "mat2x4") return result("mat2"); + if (b === "mat3x4") return result("mat3x2"); + if (isMat4(b)) return result("mat4x2"); + error(); } -} -class NotEqual extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: notEqualOutputType, outKey: "notEqual" }); - this.statements = ({ inputs, outputs }) => { - if (this.outTypes.notEqual === "bool") { - return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`]; - } - return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`]; - }; + if (a === "mat4x3") { + if (b === "mat2x4") return result("mat2x3"); + if (b === "mat3x4") return result("mat3"); + if (isMat4(b)) return result("mat4x3"); + error(); } -} -class Any extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => "bool", outKey: "any" }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.any} = any(${inputs.a});`]; - }; + if (isMat4(a)) { + if (b === "mat2x4") return result("mat2x4"); + if (b === "mat3x4") return result("mat3x4"); + if (isMat4(b)) return result("mat4"); + error(); } + throw new Error(`Invalid mul types: ${a}, ${b}`); } -class All extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => "bool", outKey: "all" }); - this.statements = ({ inputs, outputs }) => { - return [`${outputs.all} = all(${inputs.a});`]; - }; +function divOutputType(a, b) { + return addOutputType(a, b, "div"); +} +function imodOutputType(a, b) { + if (a === b) return a; + if (a === "int") { + if (isIntType(b)) return b; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (a === "uint") { + if (isUintType(b)) return b; + } else if (b === "uint") { + if (isUintType(a)) return a; } + throw new Error(`Invalid imod types: ${a}, ${b}`); } -class Select extends TrinaryOp { - constructor({ - cond, - t, - f - }) { - super({ - a: cond, - b: t, - c: f, - outKey: "select", - outTypeFunc: (aType, bType, cType) => bType - }); - this.statements = ({ inputs, outputs }) => { - const { a: cond2, b: t2, c: f2 } = inputs; - return [`${outputs.select} = (${cond2}) ? (${t2}) : (${f2});`]; - }; - } +function modOutputType(a, b) { + if (a === b || b === "float") return a; + throw new Error(`Invalid mod types: ${a}, ${b}`); } -function compareOutputType(type, operator) { - if (isScalarType(type)) { - return "bool"; - } - if (type === "ivec2" || type === "uvec2" || type === "vec2") { - return "bvec2"; - } - if (type === "ivec3" || type === "uvec3" || type === "vec3") { - return "bvec3"; - } - if (type === "ivec4" || type === "uvec4" || type === "vec4") { - return "bvec4"; - } - throw new Error(`Invalid ${operator} type: ${type}`); +function modfOutputType(a) { + return a; } -function equalOutputType(type, operator = "equal") { - if (isScalarType(type)) { - return "bool"; +function negOutputType(a) { + return a; +} +function absOutputType(a) { + return a; +} +function signOutputType(a) { + return a; +} +function floorOutputType(a) { + return a; +} +function ceilOutputType(a) { + return a; +} +function truncOutputType(a) { + return a; +} +function roundOutputType(a) { + return a; +} +function fractOutputType(a) { + return a; +} +function powOutputType(a) { + return a; +} +function expOutputType(a) { + return a; +} +function exp2OutputType(a) { + return a; +} +function logOutputType(a) { + return a; +} +function log2OutputType(a) { + return a; +} +function sqrOutputType(a) { + return a; +} +function sqrtOutputType(a) { + return a; +} +function inversesqrtOutputType(a) { + return a; +} +function minOutputType(a, b, operation = "min") { + if (a === b) return a; + if (b === "float") { + if (isFloatType(a)) return a; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (b === "uint") { + if (isUintType(a)) return a; } - if (isBoolType(type)) { - return type; + throw new Error(`Invalid ${operation} types: ${a}, ${b}`); +} +function maxOutputType(a, b) { + return minOutputType(a, b, "max"); +} +function clampOutputType(a, b, _c) { + if (b === "float") { + if (isFloatType(a)) return a; + } else if (b === "int") { + if (isIntType(a)) return a; + } else if (b === "uint") { + if (isUintType(a)) return a; } - if (type === "ivec2" || type === "uvec2" || type === "vec2") { - return "bvec2"; + throw new Error(`Invalid clamp types: ${a}, ${b}`); +} +function mixOutputType(a, b, c) { + if (c === a) return a; + if (c === "float") return a; + if (c === "bool" && a === "float") return a; + if (c === "bvec2" && a === "vec2") return a; + if (c === "bvec3" && a === "vec3") return a; + if (c === "bvec4" && a === "vec4") return a; + throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`); +} +function stepOutputType(a, b) { + if (a === b || b === "float") return b; + throw new Error(`Invalid step types: ${a}, ${b}`); +} +function smoothstepOutputType(a, b, c) { + if (a === b) { + if (a === c || a === "float") return c; } - if (type === "ivec3" || type === "uvec3" || type === "vec3") { - return "bvec3"; + throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`); +} +function isNanOutputType(a, operation = "isNan") { + if (a === "float") return "bool"; + if (a === "vec2") return "bvec2"; + if (a === "vec3") return "bvec3"; + if (a === "vec4") return "bvec4"; + throw new Error(`Invalid ${operation} types: ${a}`); +} +function isInfOutputType(a) { + return isNanOutputType(a, "isInf"); +} +const add = (a, b) => new Add({ a, b }); +const sub = (a, b) => new Sub({ a, b }); +const mul = (a, b) => new Mul({ a, b }); +const div = (a, b) => new Div({ a, b }); +const imod = (a, b) => new IMod({ a, b }); +const mod = (a, b) => new Mod({ a, b }); +const modf = (a) => new Modf({ a }).outputs; +const neg = (a) => new Neg({ a }); +const abs = (a) => new Abs({ a }); +const sign = (a) => new Sign({ a }); +const floor = (a) => new Floor({ a }); +const ceil = (a) => new Ceil({ a }); +const trunc = (a) => new Trunc({ a }); +const round = (a) => new Round({ a }); +const fract = (a) => new Fract({ a }); +const pow = (a, b) => new Pow({ a, b }); +const exp = (a) => new Exp({ a }); +const exp2 = (a) => new Exp2({ a }); +const log = (a) => new Log({ a }); +const log2 = (a) => new Log2({ a }); +const sqr = (a) => new Sqr({ a }); +const sqrt = (a) => new Sqrt({ a }); +const inversesqrt = (a) => new InverseSqrt({ a }); +const min = (a, b) => new Min({ a, b }); +const max = (a, b) => new Max({ a, b }); +const clamp = (a, min2, max2) => new Clamp({ a, min: min2, max: max2 }); +const mix = (a, b, t) => new Mix({ a, b, t }); +const step = (edge, x) => new Step({ edge, x }); +const smoothstep = (edge0, edge1, x) => new Smoothstep({ edge0, edge1, x }); +const isNan = (a) => new IsNan({ a }); +const isInf = (a) => new IsInf({ a }); +class Add extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "sum", outTypeFunc: addOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`]; + }; } - if (type === "ivec4" || type === "uvec4" || type === "vec4") { - return "bvec4"; +} +class Sub extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "difference", outTypeFunc: subOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`]; + }; } - throw new Error(`Invalid ${operator} type: ${type}`); } -function notEqualOutputType(type) { - return equalOutputType(type, "notEqual"); +class Mul extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "product", outTypeFunc: mulOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.product} = ${inputs.a} * ${inputs.b};`]; + }; + } } -function compXorOutputType(type) { - if (isBoolType(type)) { - return "bool"; +class Div extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "quotient", outTypeFunc: divOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`]; + }; } - if (isIntType(type)) { - return "int"; +} +class IMod extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "remainder", outTypeFunc: imodOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`]; + }; } - if (isUintType(type)) { - return "uint"; +} +class Mod extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "remainder", outTypeFunc: modOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`]; + }; } - throw new Error(`Invalid compXor type: ${type}`); } -class CompXor extends UnaryOp { +class Modf extends Dyno { constructor({ a }) { - const outType = compXorOutputType(valType(a)); - super({ a, outTypeFunc: (aType) => outType, outKey: "compXor" }); + const inTypes = { a: valType(a) }; + const outType = modfOutputType(inTypes.a); + const outTypes = { + fract: outType, + integer: outType + }; + super({ inTypes, outTypes, inputs: { a } }); this.statements = ({ inputs, outputs }) => { - if (isScalarType(this.outTypes.compXor)) { - return [`${outputs.compXor} = ${inputs.a};`]; - } - const components = isVector2Type(outType) ? ["x", "y"] : isVector3Type(outType) ? ["x", "y", "z"] : ["x", "y", "z", "w"]; - const operands = components.map((c) => `${inputs.a}.${c}`); - const operator = isBoolType(outType) ? "^^" : "^"; - return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`]; + return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`]; }; } } -class Shr extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shr" }); +class Neg extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "neg", outTypeFunc: negOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`]; + return [`${outputs.neg} = -${inputs.a};`]; }; } } -class Shl extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shl" }); +class Abs extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "abs", outTypeFunc: absOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`]; + return [`${outputs.abs} = abs(${inputs.a});`]; }; } } -const bool = (value) => new Bool({ value }); -const int = (value) => new Int({ value }); -const uint = (value) => new Uint({ value }); -const float = (value) => new Float({ value }); -const bvec2 = (value) => new BVec2({ value }); -const bvec3 = (value) => new BVec3({ value }); -const bvec4 = (value) => new BVec4({ value }); -const ivec2 = (value) => new IVec2({ value }); -const ivec3 = (value) => new IVec3({ value }); -const ivec4 = (value) => new IVec4({ value }); -const uvec2 = (value) => new UVec2({ value }); -const uvec3 = (value) => new UVec3({ value }); -const uvec4 = (value) => new UVec4({ value }); -const vec2 = (value) => new Vec2({ value }); -const vec3 = (value) => new Vec3({ value }); -const vec4 = (value) => new Vec4({ value }); -const mat2 = (value) => new Mat2({ value }); -const mat3 = (value) => new Mat3({ value }); -const mat4 = (value) => new Mat4({ value }); -const floatBitsToInt = (value) => new FloatBitsToInt({ value }); -const floatBitsToUint = (value) => new FloatBitsToUint({ value }); -const intBitsToFloat = (value) => new IntBitsToFloat({ value }); -const uintBitsToFloat = (value) => new UintBitsToFloat({ value }); -const packSnorm2x16 = (value) => new PackSnorm2x16({ value }); -const unpackSnorm2x16 = (value) => new UnpackSnorm2x16({ value }); -const packUnorm2x16 = (value) => new PackUnorm2x16({ value }); -const unpackUnorm2x16 = (value) => new UnpackUnorm2x16({ value }); -const packHalf2x16 = (value) => new PackHalf2x16({ value }); -const unpackHalf2x16 = (value) => new UnpackHalf2x16({ value }); -const uintToRgba8 = (value) => new UintToRgba8({ value }); -class SimpleCast extends UnaryOp { - constructor({ - value, - outType, - outKey - }) { - super({ a: value, outTypeFunc: () => outType, outKey }); - this.statements = ({ inputs, outputs }) => [ - `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});` - ]; - } -} -class Bool extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bool", outKey: "bool" }); - } -} -class Int extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "int", outKey: "int" }); - } -} -class Uint extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uint", outKey: "uint" }); - } -} -class Float extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "float", outKey: "float" }); - } -} -class BVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec2", outKey: "bvec2" }); - } -} -class BVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec3", outKey: "bvec3" }); - } -} -class BVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "bvec4", outKey: "bvec4" }); - } -} -class IVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec2", outKey: "ivec2" }); - } -} -class IVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec3", outKey: "ivec3" }); - } -} -class IVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "ivec4", outKey: "ivec4" }); - } -} -class UVec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec2", outKey: "uvec2" }); - } -} -class UVec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec3", outKey: "uvec3" }); - } -} -class UVec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "uvec4", outKey: "uvec4" }); - } -} -class Vec2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec2", outKey: "vec2" }); - } -} -class Vec3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec3", outKey: "vec3" }); - } -} -class Vec4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "vec4", outKey: "vec4" }); - } -} -class Mat2 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat2", outKey: "mat2" }); - } -} -class Mat3 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat3", outKey: "mat3" }); - } -} -class Mat4 extends SimpleCast { - constructor({ - value - }) { - super({ value, outType: "mat4", outKey: "mat4" }); +class Sign extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "sign", outTypeFunc: signOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sign} = sign(${inputs.a});`]; + }; } } -class FloatBitsToInt extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "int", outTypeFunc: () => "int" }); +class Floor extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "floor", outTypeFunc: floorOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.int} = floatBitsToInt(${inputs.a});`]; + return [`${outputs.floor} = floor(${inputs.a});`]; }; } } -class FloatBitsToUint extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Ceil extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "ceil", outTypeFunc: ceilOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = floatBitsToUint(${inputs.a});`]; + return [`${outputs.ceil} = ceil(${inputs.a});`]; }; } } -class IntBitsToFloat extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "float", outTypeFunc: () => "float" }); +class Trunc extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "trunc", outTypeFunc: truncOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.float} = intBitsToFloat(${inputs.a});`]; + return [`${outputs.trunc} = trunc(${inputs.a});`]; }; } } -class UintBitsToFloat extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "float", outTypeFunc: () => "float" }); +class Round extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "round", outTypeFunc: roundOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.float} = uintBitsToFloat(${inputs.a});`]; + return [`${outputs.round} = round(${inputs.a});`]; }; } } -class PackSnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Fract extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "fract", outTypeFunc: fractOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packSnorm2x16(${inputs.a});`]; + return [`${outputs.fract} = fract(${inputs.a});`]; }; } } -class UnpackSnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Pow extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "power", outTypeFunc: powOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`]; + return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`]; }; } } -class PackUnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Exp extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "exp", outTypeFunc: expOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packUnorm2x16(${inputs.a});`]; + return [`${outputs.exp} = exp(${inputs.a});`]; }; } } -class UnpackUnorm2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Exp2 extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "exp2", outTypeFunc: exp2OutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`]; + return [`${outputs.exp2} = exp2(${inputs.a});`]; }; } } -class PackHalf2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); +class Log extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "log", outTypeFunc: logOutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.uint} = packHalf2x16(${inputs.a});`]; + return [`${outputs.log} = log(${inputs.a});`]; }; } } -class UnpackHalf2x16 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); +class Log2 extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "log2", outTypeFunc: log2OutputType }); this.statements = ({ inputs, outputs }) => { - return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`]; + return [`${outputs.log2} = log2(${inputs.a});`]; }; } } -class UintToRgba8 extends UnaryOp { - constructor({ value }) { - super({ a: value, outKey: "rgba8", outTypeFunc: () => "vec4" }); +class Sqr extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "sqr", outTypeFunc: sqrOutputType }); this.statements = ({ inputs, outputs }) => { - return [ - `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`, - `${outputs.rgba8} = vec4(uRgba) / 255.0;` - ]; + return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`]; }; } } -const length = (a) => new Length({ a }); -const distance = (a, b) => new Distance({ a, b }); -const dot = (a, b) => new Dot({ a, b }); -const cross = (a, b) => new Cross({ a, b }); -const normalize = (a) => new Normalize({ a }); -const faceforward = (a, b, c) => new FaceForward({ a, b, c }); -const reflectVec = (incident, normal) => new ReflectVec({ incident, normal }); -const refractVec = (incident, normal, eta) => new RefractVec({ incident, normal, eta }); -const split = (vector) => new Split({ vector }); -const combine = ({ - vector, - vectorType, - x, - y, - z, - w, - r, - g, - b, - a -}) => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a }); -const projectH = (a) => new ProjectH({ a }); -const extendVec = (a, b) => new ExtendVec({ a, b }); -const swizzle = (a, select2) => new Swizzle({ vector: a, select: select2 }); -const compMult = (a, b) => new CompMult({ a, b }); -const outer = (a, b) => new Outer({ a, b }); -const transpose = (a) => new Transpose({ a }); -const determinant = (a) => new Determinant({ a }); -const inverse = (a) => new Inverse({ a }); -class Length extends UnaryOp { +class Sqrt extends UnaryOp { constructor({ a }) { - super({ a, outTypeFunc: (aType) => "float", outKey: "length" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.length} = length(${inputs.a});` - ]; + super({ a, outKey: "sqrt", outTypeFunc: sqrtOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.sqrt} = sqrt(${inputs.a});`]; + }; } } -class Distance extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "distance", outTypeFunc: (aType, bType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.distance} = distance(${inputs.a}, ${inputs.b});` - ]; +class InverseSqrt extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "inversesqrt", outTypeFunc: inversesqrtOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`]; + }; } } -class Dot extends BinaryOp { +class Min extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "dot", outTypeFunc: (aType, bType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.dot} = dot(${inputs.a}, ${inputs.b});` - ]; + super({ a, b, outKey: "min", outTypeFunc: minOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`]; + }; } } -class Cross extends BinaryOp { +class Max extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "cross", outTypeFunc: (aType, bType) => "vec3" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cross} = cross(${inputs.a}, ${inputs.b});` - ]; - } -} -class Normalize extends UnaryOp { - constructor({ a }) { - super({ a, outTypeFunc: (aType) => aType, outKey: "normalize" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.normalize} = normalize(${inputs.a});` - ]; - } -} -function projectHOutputType(type) { - if (type === "vec3") { - return "vec2"; - } - if (type === "vec4") { - return "vec3"; + super({ a, b, outKey: "max", outTypeFunc: maxOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`]; + }; } - throw new Error("Invalid type"); } -class ProjectH extends UnaryOp { - constructor({ a }) { +class Clamp extends TrinaryOp { + constructor({ + a, + min: min2, + max: max2 + }) { super({ a, - outTypeFunc: (aType) => projectHOutputType(aType), - outKey: "projected" + b: min2, + c: max2, + outKey: "clamp", + outTypeFunc: clampOutputType }); this.statements = ({ inputs, outputs }) => { - if (this.inTypes.a === "vec3") { - return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`]; - } - if (this.inTypes.a === "vec4") { - return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`]; - } - throw new Error("Invalid type"); + const { a: a2, b: min3, c: max3 } = inputs; + return [`${outputs.clamp} = clamp(${a2}, ${min3}, ${max3});`]; }; } } -function extendVecOutputType(type) { - if (type === "float") return "vec2"; - if (type === "vec2") return "vec3"; - if (type === "vec3") return "vec4"; - throw new Error("Invalid type"); -} -class ExtendVec extends BinaryOp { - constructor({ a, b }) { - const type = valType(a); - const outType = extendVecOutputType(type); - super({ a, b, outKey: "extend", outTypeFunc: () => outType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});` - ]; - } -} -class FaceForward extends TrinaryOp { - constructor({ a, b, c }) { - super({ - a, - b, - c, - outKey: "forward", - outTypeFunc: (aType, bType, cType) => aType - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});` - ]; +class Mix extends TrinaryOp { + constructor({ a, b, t }) { + super({ a, b, c: t, outKey: "mix", outTypeFunc: mixOutputType }); + this.statements = ({ inputs, outputs }) => { + const { a: a2, b: b22, c: t2 } = inputs; + return [`${outputs.mix} = mix(${a2}, ${b22}, ${t2});`]; + }; } } -class ReflectVec extends BinaryOp { - constructor({ - incident, - normal - }) { +class Step extends BinaryOp { + constructor({ edge, x }) { super({ - a: incident, - b: normal, - outKey: "reflection", - outTypeFunc: (aType, bType) => aType + a: edge, + b: x, + outKey: "step", + outTypeFunc: stepOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});` - ]; + this.statements = ({ inputs, outputs }) => { + const { a: edge2, b: x2 } = inputs; + return [`${outputs.step} = step(${edge2}, ${x2});`]; + }; } } -class RefractVec extends TrinaryOp { +class Smoothstep extends TrinaryOp { constructor({ - incident, - normal, - eta + edge0, + edge1, + x }) { super({ - a: incident, - b: normal, - c: eta, - outKey: "refraction", - outTypeFunc: (aType, bType, cType) => aType + a: edge0, + b: edge1, + c: x, + outKey: "smoothstep", + outTypeFunc: smoothstepOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});` - ]; + this.statements = ({ inputs, outputs }) => { + const { a: edge02, b: edge12, c: x2 } = inputs; + return [`${outputs.smoothstep} = smoothstep(${edge02}, ${edge12}, ${x2});`]; + }; } } -class CompMult extends BinaryOp { - constructor({ a, b }) { - super({ a, b, outKey: "product", outTypeFunc: (aType, bType) => aType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.product} = matrixCompMult(${a}, ${b});` - ]; +class IsNan extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "isNan", outTypeFunc: isNanOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.isNan} = isNan(${inputs.a});`]; + }; } } -function outerOutputType(aType, bType) { - if (aType === "vec2") { - if (bType === "vec2") return "mat2"; - if (bType === "vec3") return "mat3x2"; - if (bType === "vec4") return "mat4x2"; - } - if (aType === "vec3") { - if (bType === "vec2") return "mat2x3"; - if (bType === "vec3") return "mat3"; - if (bType === "vec4") return "mat4x3"; - } - if (aType === "vec4") { - if (bType === "vec2") return "mat2x4"; - if (bType === "vec3") return "mat3x4"; - if (bType === "vec4") return "mat4"; +class IsInf extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "isInf", outTypeFunc: isInfOutputType }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.isInf} = isInf(${inputs.a});`]; + }; } - throw new Error(`Invalid outer type: ${aType}, ${bType}`); } -class Outer extends BinaryOp { +const and = (a, b) => new And({ a, b }); +const or = (a, b) => new Or({ a, b }); +const xor = (a, b) => new Xor({ a, b }); +const not = (a) => new Not({ a }); +const shr = (a, b) => new Shr({ a, b }); +const shl = (a, b) => new Shl({ a, b }); +const lessThan = (a, b) => new LessThan({ a, b }); +const lessThanEqual = (a, b) => new LessThanEqual({ a, b }); +const greaterThan = (a, b) => new GreaterThan({ a, b }); +const greaterThanEqual = (a, b) => new GreaterThanEqual({ a, b }); +const equal = (a, b) => new Equal({ a, b }); +const notEqual = (a, b) => new NotEqual({ a, b }); +const any = (a) => new Any({ a }); +const all = (a) => new All({ a }); +const select = (cond, t, f) => new Select({ cond, t, f }); +const compXor = (a) => new CompXor({ a }); +class And extends BinaryOp { constructor({ a, b }) { - super({ a, b, outKey: "outer", outTypeFunc: outerOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});` - ]; + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "and" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.and === "bool") { + return [`${outputs.and} = ${inputs.a} && ${inputs.b};`]; + } + return [`${outputs.and} = ${inputs.a} & ${inputs.b};`]; + }; } } -function transposeOutputType(type) { - if (type === "mat2") return "mat2"; - if (type === "mat3") return "mat3"; - if (type === "mat4") return "mat4"; - if (type === "mat2x2") return "mat2x2"; - if (type === "mat2x3") return "mat3x2"; - if (type === "mat2x4") return "mat4x2"; - if (type === "mat3x2") return "mat2x3"; - if (type === "mat3x3") return "mat3x3"; - if (type === "mat3x4") return "mat4x3"; - if (type === "mat4x2") return "mat2x4"; - if (type === "mat4x3") return "mat3x4"; - if (type === "mat4x4") return "mat4x4"; - throw new Error(`Invalid transpose type: ${type}`); +class Or extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "or" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.or === "bool") { + return [`${outputs.or} = ${inputs.a} || ${inputs.b};`]; + } + return [`${outputs.or} = ${inputs.a} | ${inputs.b};`]; + }; + } } -class Transpose extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "transpose", outTypeFunc: transposeOutputType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.transpose} = transpose(${inputs.a});` - ]; +class Xor extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "xor" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.xor === "bool") { + return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`]; + } + return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`]; + }; } } -class Determinant extends UnaryOp { +class Not extends UnaryOp { constructor({ a }) { - super({ a, outKey: "det", outTypeFunc: (aType) => "float" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.det} = determinant(${inputs.a});` - ]; + super({ a, outTypeFunc: (aType) => aType, outKey: "not" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.not === "bool") { + return [`${outputs.not} = !${inputs.a};`]; + } + return [`${outputs.not} = not(${inputs.a});`]; + }; } } -class Inverse extends UnaryOp { - constructor({ a }) { - super({ a, outKey: "inverse", outTypeFunc: (aType) => aType }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.inverse} = inverse(${a});` - ]; +class LessThan extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThan"), + outKey: "lessThan" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.lessThan === "bool") { + return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`]; + } + return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`]; + }; } } -function splitOutTypes(type) { - const result = (value) => value; - switch (type) { - case "vec2": - return result({ x: "float", y: "float", r: "float", g: "float" }); - case "vec3": - return result({ - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }); - case "vec4": - return result({ - x: "float", - y: "float", - z: "float", - w: "float", - r: "float", - g: "float", - b: "float", - a: "float" - }); - case "ivec2": - return result({ x: "int", y: "int", r: "int", g: "int" }); - case "ivec3": - return result({ - x: "int", - y: "int", - z: "int", - r: "int", - g: "int", - b: "int" - }); - case "ivec4": - return result({ - x: "int", - y: "int", - z: "int", - w: "int", - r: "int", - g: "int", - b: "int", - a: "int" - }); - case "uvec2": - return result({ x: "uint", y: "uint", r: "uint", g: "uint" }); - case "uvec3": - return result({ - x: "uint", - y: "uint", - z: "uint", - r: "uint", - g: "uint", - b: "uint" - }); - case "uvec4": - return result({ - x: "uint", - y: "uint", - z: "uint", - w: "uint", - r: "uint", - g: "uint", - b: "uint", - a: "uint" - }); - default: - throw new Error(`Invalid vector type: ${type}`); +class LessThanEqual extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThanEqual"), + outKey: "lessThanEqual" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.lessThanEqual === "bool") { + return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`]; + } + return [ + `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});` + ]; + }; } } -class Split extends Dyno { - constructor({ vector }) { - const type = valType(vector); - const inTypes = { vector: type }; - const outTypes = splitOutTypes(inTypes.vector); - super({ inTypes, outTypes, inputs: { vector } }); +class GreaterThan extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThan"), + outKey: "greaterThan" + }); this.statements = ({ inputs, outputs }) => { - const { x, y, z, w, r, g, b, a } = outputs; - const { vector: vector2 } = inputs; + if (this.outTypes.greaterThan === "bool") { + return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`]; + } return [ - x ? `${x} = ${vector2}.x;` : null, - y ? `${y} = ${vector2}.y;` : null, - z ? `${z} = ${vector2}.z;` : null, - w ? `${w} = ${vector2}.w;` : null, - r ? `${r} = ${vector2}.r;` : null, - g ? `${g} = ${vector2}.g;` : null, - b ? `${b} = ${vector2}.b;` : null, - a ? `${a} = ${vector2}.a;` : null - ].filter(Boolean); + `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});` + ]; }; } } -class Combine extends Dyno { - constructor({ - vector, - vectorType, - x, - y, - z, - w, - r, - g, - b, - a - }) { - if (!vector && !vectorType) { - throw new Error("Either vector or vectorType must be provided"); - } - const vType = vectorType ?? valType(vector); - const elType = vectorElementType(vType); - const dim = vectorDim(vType); - const inTypes = { - vector: vType, - x: elType, - y: elType, - r: elType, - g: elType - }; - const inputs = { vector, x, y, r, g }; - if (dim >= 3) { - Object.assign(inTypes, { z: elType, b: elType }); - Object.assign(inputs, { z, b }); - } - if (dim >= 4) { - Object.assign(inTypes, { w: elType, a: elType }); - Object.assign(inputs, { w, a }); - } - super({ inTypes, outTypes: { vector: vType }, inputs }); - this.statements = ({ inputs: inputs2, outputs }) => { - const { vector: vector2 } = outputs; - const { - vector: input, - x: x2, - y: y2, - z: z2, - w: w2, - r: r2, - g: g2, - b: b22, - a: a2 - } = inputs2; - const statements = [ - `${vector2}.x = ${x2 ?? r2 ?? (input ? `${input}.x` : literalZero(elType))};`, - `${vector2}.y = ${y2 ?? g2 ?? (input ? `${input}.y` : literalZero(elType))};` - ]; - if (dim >= 3) - statements.push( - `${vector2}.z = ${z2 ?? b22 ?? (input ? `${input}.z` : literalZero(elType))};` - ); - if (dim >= 4) - statements.push( - `${vector2}.w = ${w2 ?? a2 ?? (input ? `${input}.w` : literalZero(elType))};` - ); - return statements; +class GreaterThanEqual extends BinaryOp { + constructor({ a, b }) { + super({ + a, + b, + outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThanEqual"), + outKey: "greaterThanEqual" + }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.greaterThanEqual === "bool") { + return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`]; + } + return [ + `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});` + ]; }; } - dynoOut() { - return new DynoOutput( - this, - "vector" - ); +} +class Equal extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: equalOutputType, outKey: "equal" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.equal === "bool") { + return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`]; + } + return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`]; + }; } } -function swizzleOutputType(type, swizzle2) { - let result = null; - if (isFloatType(type)) { - result = swizzle2.length === 1 ? "float" : swizzle2.length === 2 ? "vec2" : swizzle2.length === 3 ? "vec3" : swizzle2.length === 4 ? "vec4" : null; - } else if (isIntType(type)) { - result = swizzle2.length === 1 ? "int" : swizzle2.length === 2 ? "ivec2" : swizzle2.length === 3 ? "ivec3" : swizzle2.length === 4 ? "ivec4" : null; - } else if (isUintType(type)) { - result = swizzle2.length === 1 ? "uint" : swizzle2.length === 2 ? "uvec2" : swizzle2.length === 3 ? "uvec3" : swizzle2.length === 4 ? "uvec4" : null; +class NotEqual extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: notEqualOutputType, outKey: "notEqual" }); + this.statements = ({ inputs, outputs }) => { + if (this.outTypes.notEqual === "bool") { + return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`]; + } + return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`]; + }; } - if (result == null) { - throw new Error(`Invalid swizzle: ${swizzle2}`); +} +class Any extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "bool", outKey: "any" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.any} = any(${inputs.a});`]; + }; } - return result; } -class Swizzle extends UnaryOp { - constructor({ vector, select: select2 }) { - super({ - a: vector, - outKey: "swizzle", - outTypeFunc: (aType) => swizzleOutputType(aType, select2) - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.swizzle} = ${inputs.a}.${select2};` - ]; +class All extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "bool", outKey: "all" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.all} = all(${inputs.a});`]; + }; } } -const remapIndex = (index, from, to) => { - return new DynoRemapIndex({ index, from, to }); -}; -const pcgMix = (value) => { - return new PcgMix({ value }); -}; -const pcgNext = (state) => { - return new PcgNext({ state }); -}; -const pcgHash = (state) => { - return new PcgHash({ state }); -}; -const hash = (value) => { - return new Hash({ value }); -}; -const hash2 = (value) => { - return new Hash2({ value }); -}; -const hash3 = (value) => { - return new Hash3({ value }); -}; -const hash4 = (value) => { - return new Hash4({ value }); -}; -const hashFloat = (value) => { - return new HashFloat({ value }); -}; -const hashVec2 = (value) => { - return new HashVec2({ value }); -}; -const hashVec3 = (value) => { - return new HashVec3({ value }); -}; -const hashVec4 = (value) => { - return new HashVec4({ value }); -}; -const normalizedDepth = (z, zNear, zFar) => { - return new NormalizedDepth({ z, zNear, zFar }).outputs.depth; -}; -const debugColorHue = (index) => { - return new DebugColorHue({ index }); -}; -class DynoRemapIndex extends Dyno { +class Select extends TrinaryOp { constructor({ - from, - to, - index + cond, + t, + f }) { super({ - inTypes: { from: "int", to: "int", index: "int" }, - outTypes: { index: "int" }, - inputs: { from, to, index }, - statements: ({ inputs, outputs }) => { - return [ - `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};` - ]; - } + a: cond, + b: t, + c: f, + outKey: "select", + outTypeFunc: (aType, bType, cType) => bType }); - } - dynoOut() { - return new DynoOutput(this, "index"); + this.statements = ({ inputs, outputs }) => { + const { a: cond2, b: t2, c: f2 } = inputs; + return [`${outputs.select} = (${cond2}) ? (${t2}) : (${f2});`]; + }; } } -class PcgNext extends Dyno { - constructor({ state }) { - const type = valType(state); - super({ - inTypes: { state: type }, - outTypes: { state: "uint" }, - inputs: { state }, - globals: () => [ - unindent(` - uint pcg_next(uint state) { - return state * 747796405u + 2891336453u; - } - `) - ], - statements: ({ inputs, outputs }) => { - const toUint = type === "uint" ? `${inputs.state}` : type === "int" ? `uint(${inputs.state})` : `floatBitsToUint(${inputs.state})`; - return [`${outputs.state} = pcg_next(${toUint});`]; - } - }); +function compareOutputType(type, operator) { + if (isScalarType(type)) { + return "bool"; } - dynoOut() { - return new DynoOutput(this, "state"); + if (type === "ivec2" || type === "uvec2" || type === "vec2") { + return "bvec2"; } -} -class PcgHash extends Dyno { - constructor({ state }) { - super({ - inTypes: { state: "uint" }, - outTypes: { hash: "uint" }, - inputs: { state }, - globals: () => [ - unindent(` - uint pcg_hash(uint state) { - uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; - return (hash >> 22u) ^ hash; - } - `) - ], - statements: ({ inputs, outputs }) => [ - `${outputs.hash} = pcg_hash(${inputs.state});` - ] - }); + if (type === "ivec3" || type === "uvec3" || type === "vec3") { + return "bvec3"; } - dynoOut() { - return new DynoOutput(this, "hash"); + if (type === "ivec4" || type === "uvec4" || type === "vec4") { + return "bvec4"; } + throw new Error(`Invalid ${operator} type: ${type}`); } -class PcgMix extends Dyno { - constructor({ value }) { - const type = valType(value); - const tempType = sameSizeUvec(type); - super({ - inTypes: { value: type }, - outTypes: { state: "uint" }, - inputs: { value }, - globals: () => [ - unindent(` - uint pcg_mix(uint value) { - return value; - } - uint pcg_mix(uvec2 value) { - return value.x + 0x9e3779b9u * value.y; - } - uint pcg_mix(uvec3 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; - } - uint pcg_mix(uvec4 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; - } - `) - ], - statements: ({ inputs, outputs }) => { - const toUvec = isUintType(type) ? `${inputs.value}` : isIntType(type) ? `${tempType}(${inputs.value})` : `floatBitsToUint(${inputs.value})`; - return [ - `${tempType} bits = ${toUvec};`, - `${outputs.state} = pcg_mix(bits);` - ]; - } - }); +function equalOutputType(type, operator = "equal") { + if (isScalarType(type)) { + return "bool"; } - dynoOut() { - return new DynoOutput(this, "state"); + if (isBoolType(type)) { + return type; + } + if (type === "ivec2" || type === "uvec2" || type === "vec2") { + return "bvec2"; + } + if (type === "ivec3" || type === "uvec3" || type === "vec3") { + return "bvec3"; + } + if (type === "ivec4" || type === "uvec4" || type === "vec4") { + return "bvec4"; } + throw new Error(`Invalid ${operator} type: ${type}`); } -class Hash extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uint" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - return new PcgHash({ state }).outputs; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); - } +function notEqualOutputType(type) { + return equalOutputType(type, "notEqual"); } -class Hash2 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec2" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec2", x, y }) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +function compXorOutputType(type) { + if (isBoolType(type)) { + return "bool"; } -} -class Hash3 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec3" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const z = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec3", x, y, z }) }; - } - }); + if (isIntType(type)) { + return "int"; } - dynoOut() { - return new DynoOutput(this, "hash"); + if (isUintType(type)) { + return "uint"; } + throw new Error(`Invalid compXor type: ${type}`); } -class Hash4 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "uvec4" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - let state = new PcgMix({ value: value2 }).outputs.state; - state = new PcgNext({ state }).outputs.state; - const x = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const y = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const z = new PcgHash({ state }).outputs.hash; - state = new PcgNext({ state }).outputs.state; - const w = new PcgHash({ state }).outputs.hash; - return { hash: combine({ vectorType: "uvec4", x, y, z, w }) }; +class CompXor extends UnaryOp { + constructor({ a }) { + const outType = compXorOutputType(valType(a)); + super({ a, outTypeFunc: (aType) => outType, outKey: "compXor" }); + this.statements = ({ inputs, outputs }) => { + if (isScalarType(this.outTypes.compXor)) { + return [`${outputs.compXor} = ${inputs.a};`]; } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); + const components = isVector2Type(outType) ? ["x", "y"] : isVector3Type(outType) ? ["x", "y", "z"] : ["x", "y", "z", "w"]; + const operands = components.map((c) => `${inputs.a}.${c}`); + const operator = isBoolType(outType) ? "^^" : "^"; + return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`]; + }; } } -class HashFloat extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "float" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const word = hash(value2); - return { hash: mul(float(word), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +class Shr extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shr" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`]; + }; } } -class HashVec2 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec2" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash2(value2); - return { hash: mul(vec2(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +class Shl extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "shl" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`]; + }; } } -class HashVec3 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec3" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash3(value2); - return { hash: mul(vec3(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); - } - dynoOut() { - return new DynoOutput(this, "hash"); +const bool = (value) => new Bool({ value }); +const int = (value) => new Int({ value }); +const uint = (value) => new Uint({ value }); +const float = (value) => new Float({ value }); +const bvec2 = (value) => new BVec2({ value }); +const bvec3 = (value) => new BVec3({ value }); +const bvec4 = (value) => new BVec4({ value }); +const ivec2 = (value) => new IVec2({ value }); +const ivec3 = (value) => new IVec3({ value }); +const ivec4 = (value) => new IVec4({ value }); +const uvec2 = (value) => new UVec2({ value }); +const uvec3 = (value) => new UVec3({ value }); +const uvec4 = (value) => new UVec4({ value }); +const vec2 = (value) => new Vec2({ value }); +const vec3 = (value) => new Vec3({ value }); +const vec4 = (value) => new Vec4({ value }); +const mat2 = (value) => new Mat2({ value }); +const mat3 = (value) => new Mat3({ value }); +const mat4 = (value) => new Mat4({ value }); +const floatBitsToInt = (value) => new FloatBitsToInt({ value }); +const floatBitsToUint = (value) => new FloatBitsToUint({ value }); +const intBitsToFloat = (value) => new IntBitsToFloat({ value }); +const uintBitsToFloat = (value) => new UintBitsToFloat({ value }); +const packSnorm2x16 = (value) => new PackSnorm2x16({ value }); +const unpackSnorm2x16 = (value) => new UnpackSnorm2x16({ value }); +const packUnorm2x16 = (value) => new PackUnorm2x16({ value }); +const unpackUnorm2x16 = (value) => new UnpackUnorm2x16({ value }); +const packHalf2x16 = (value) => new PackHalf2x16({ value }); +const unpackHalf2x16 = (value) => new UnpackHalf2x16({ value }); +const uintToRgba8 = (value) => new UintToRgba8({ value }); +class SimpleCast extends UnaryOp { + constructor({ + value, + outType, + outKey + }) { + super({ a: value, outTypeFunc: () => outType, outKey }); + this.statements = ({ inputs, outputs }) => [ + `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});` + ]; } } -class HashVec4 extends DynoBlock { - constructor({ value }) { - super({ - inTypes: { value: valType(value) }, - outTypes: { hash: "vec4" }, - inputs: { value }, - construct: ({ value: value2 }) => { - if (!value2) { - throw new Error("value is required"); - } - const words = hash4(value2); - return { hash: mul(vec4(words), dynoConst("float", 1 / 2 ** 32)) }; - } - }); +class Bool extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bool", outKey: "bool" }); } - dynoOut() { - return new DynoOutput(this, "hash"); +} +class Int extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "int", outKey: "int" }); } } -class NormalizedDepth extends Dyno { +class Uint extends SimpleCast { constructor({ - z, - zNear, - zFar + value }) { - super({ - inTypes: { z: "float", zNear: "float", zFar: "float" }, - outTypes: { depth: "float" }, - inputs: { z, zNear, zFar }, - statements: ({ inputs, outputs }) => [ - `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`, - `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));` - ] - }); + super({ value, outType: "uint", outKey: "uint" }); } - dynoOut() { - return new DynoOutput(this, "depth"); +} +class Float extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "float", outKey: "float" }); } } -class DebugColorHue extends Dyno { - constructor({ index }) { - super({ - inTypes: { index: "int" }, - outTypes: { color: "vec3" }, - inputs: { index }, - statements: ({ inputs, outputs }) => [ - `${outputs.color} = debugColorHue(uint(${inputs.index}));` - ] - }); +class BVec2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bvec2", outKey: "bvec2" }); } - dynoOut() { - return new DynoOutput(this, "color"); +} +class BVec3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "bvec3", outKey: "bvec3" }); } } -const transformPos = (position, { - scale, - scales, - rotate, - translate -}) => { - return new TransformPosition({ position, scale, scales, rotate, translate }).outputs.position; -}; -const transformDir = (dir, { - scale, - scales, - rotate -}) => { - return new TransformDir({ dir, scale, scales, rotate }).outputs.dir; -}; -const transformQuat = (quaternion, { rotate }) => { - return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion; -}; -class TransformPosition extends Dyno { +class BVec4 extends SimpleCast { constructor({ - position, - scale, - scales, - rotate, - translate + value }) { - super({ - inTypes: { - position: "vec3", - scale: "float", - scales: "vec3", - rotate: "vec4", - translate: "vec3" - }, - outTypes: { position: "vec3" }, - inputs: { position, scale, scales, rotate, translate }, - statements: ({ inputs, outputs }) => { - const { position: position2 } = outputs; - if (!position2) { - return []; - } - const { scale: scale2, scales: scales2, rotate: rotate2, translate: translate2 } = inputs; - return [ - `${position2} = ${inputs.position ?? "vec3(0.0, 0.0, 0.0)"};`, - !scale2 ? null : `${position2} *= ${scale2};`, - !scales2 ? null : `${position2} *= ${scales2};`, - !rotate2 ? null : `${position2} = quatVec(${rotate2}, ${position2});`, - !translate2 ? null : `${position2} += ${translate2};` - ].filter(Boolean); - } - }); + super({ value, outType: "bvec4", outKey: "bvec4" }); } } -class TransformDir extends Dyno { +class IVec2 extends SimpleCast { constructor({ - dir, - scale, - scales, - rotate + value }) { - super({ - inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, - outTypes: { dir: "vec3" }, - inputs: { dir, scale, scales, rotate }, - statements: ({ inputs, outputs }) => { - const { dir: dir2 } = outputs; - if (!dir2) { - return []; - } - const { scale: scale2, scales: scales2, rotate: rotate2 } = inputs; - return [ - `${dir2} = ${inputs.dir ?? "vec3(0.0, 0.0, 0.0)"};`, - !scale2 ? null : `${dir2} *= ${scale2};`, - !scales2 ? null : `${dir2} *= ${scales2};`, - !rotate2 ? null : `${dir2} = quatVec(${rotate2}, ${dir2});` - ].filter(Boolean); - } - }); + super({ value, outType: "ivec2", outKey: "ivec2" }); } } -class TransformQuaternion extends Dyno { +class IVec3 extends SimpleCast { constructor({ - quaternion, - rotate + value }) { - super({ - inTypes: { quaternion: "vec4", rotate: "vec4" }, - outTypes: { quaternion: "vec4" }, - inputs: { quaternion, rotate }, - statements: ({ inputs, outputs }) => { - const { quaternion: quaternion2 } = outputs; - if (!quaternion2) { - return []; - } - return [ - `${quaternion2} = ${inputs.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, - !rotate ? null : `${quaternion2} = quatQuat(${inputs.rotate}, ${quaternion2});` - ].filter(Boolean); - } - }); + super({ value, outType: "ivec3", outKey: "ivec3" }); } } -const dynoIf = () => { - throw new Error("Not implemented"); -}; -const dynoSwitch = () => { - throw new Error("Not implemented"); -}; -const dynoFor = () => { - throw new Error("Not implemented"); -}; -const comment = () => { - throw new Error("Not implemented"); -}; -const arrayIndex = () => { - throw new Error("Not implemented"); -}; -const arrayLength = () => { - throw new Error("Not implemented"); -}; -const textureSize = (texture2, lod) => new TextureSize({ texture: texture2, lod }); -const texture = (texture2, coord, bias) => new Texture({ texture: texture2, coord, bias }); -const texelFetch = (texture2, coord, lod) => new TexelFetch({ texture: texture2, coord, lod }); -class TextureSize extends Dyno { - constructor({ texture: texture2, lod }) { - const textureType = valType(texture2); - super({ - inTypes: { texture: textureType, lod: "int" }, - outTypes: { size: textureSizeType(textureType) }, - inputs: { texture: texture2, lod }, - statements: ({ inputs, outputs }) => [ - `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? "0"});` - ] - }); +class IVec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "ivec4", outKey: "ivec4" }); } - dynoOut() { - return new DynoOutput(this, "size"); +} +class UVec2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "uvec2", outKey: "uvec2" }); } } -class Texture extends Dyno { +class UVec3 extends SimpleCast { constructor({ - texture: texture2, - coord, - bias + value }) { - const textureType = valType(texture2); - super({ - inTypes: { - texture: textureType, - coord: textureCoordType(textureType), - bias: "float" - }, - outTypes: { sample: textureReturnType(textureType) }, - inputs: { texture: texture2, coord, bias }, - statements: ({ inputs, outputs }) => [ - `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : ""});` - ] - }); + super({ value, outType: "uvec3", outKey: "uvec3" }); } - dynoOut() { - return new DynoOutput(this, "sample"); +} +class UVec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "uvec4", outKey: "uvec4" }); } } -class TexelFetch extends Dyno { +class Vec2 extends SimpleCast { constructor({ - texture: texture2, - coord, - lod + value }) { - const textureType = valType(texture2); - super({ - inTypes: { - texture: textureType, - coord: textureSizeType(textureType), - lod: "int" - }, - outTypes: { texel: textureReturnType(textureType) }, - inputs: { texture: texture2, coord, lod }, - statements: ({ inputs, outputs }) => [ - `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? "0"});` - ] - }); + super({ value, outType: "vec2", outKey: "vec2" }); } - dynoOut() { - return new DynoOutput(this, "texel"); +} +class Vec3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "vec3", outKey: "vec3" }); } } -function textureSizeType(textureType) { - switch (textureType) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DShadow": - case "samplerCubeShadow": - return "ivec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DArrayShadow": - return "ivec3"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Vec4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "vec4", outKey: "vec4" }); } } -function textureCoordType(textureType) { - switch (textureType) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - return "vec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DShadow": - return "vec3"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "vec4"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Mat2 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat2", outKey: "mat2" }); } } -function textureReturnType(textureType) { - switch (textureType) { - case "sampler2D": - case "sampler2DArray": - case "sampler3D": - case "samplerCube": - case "sampler2DShadow": - return "vec4"; - case "usampler2D": - case "usampler2DArray": - case "usampler3D": - case "usamplerCube": - return "uvec4"; - case "isampler2D": - case "isampler2DArray": - case "isampler3D": - case "isamplerCube": - return "ivec4"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "float"; - default: - throw new Error(`Invalid texture type: ${textureType}`); +class Mat3 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat3", outKey: "mat3" }); } } -const radians = (degrees2) => new Radians({ degrees: degrees2 }); -const degrees = (radians2) => new Degrees({ radians: radians2 }); -const sin = (radians2) => new Sin({ radians: radians2 }); -const cos = (radians2) => new Cos({ radians: radians2 }); -const tan = (radians2) => new Tan({ radians: radians2 }); -const asin = (sin2) => new Asin({ sin: sin2 }); -const acos = (cos2) => new Acos({ cos: cos2 }); -const atan = (tan2) => new Atan({ tan: tan2 }); -const atan2 = (y, x) => new Atan2({ y, x }); -const sinh = (x) => new Sinh({ x }); -const cosh = (x) => new Cosh({ x }); -const tanh = (x) => new Tanh({ x }); -const asinh = (x) => new Asinh({ x }); -const acosh = (x) => new Acosh({ x }); -const atanh = (x) => new Atanh({ x }); -class Radians extends UnaryOp { - constructor({ degrees: degrees2 }) { - super({ a: degrees2, outTypeFunc: (aType) => aType, outKey: "radians" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.radians} = radians(${inputs.a});` - ]; +class Mat4 extends SimpleCast { + constructor({ + value + }) { + super({ value, outType: "mat4", outKey: "mat4" }); } } -class Degrees extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "degrees" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.degrees} = degrees(${inputs.a});` - ]; +class FloatBitsToInt extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "int", outTypeFunc: () => "int" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.int} = floatBitsToInt(${inputs.a});`]; + }; } } -class Sin extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "sin" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.sin} = sin(${inputs.a});` - ]; +class FloatBitsToUint extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = floatBitsToUint(${inputs.a});`]; + }; } } -class Cos extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "cos" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cos} = cos(${inputs.a});` - ]; +class IntBitsToFloat extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "float", outTypeFunc: () => "float" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.float} = intBitsToFloat(${inputs.a});`]; + }; } } -class Tan extends UnaryOp { - constructor({ radians: radians2 }) { - super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "tan" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.tan} = tan(${inputs.a});` - ]; +class UintBitsToFloat extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "float", outTypeFunc: () => "float" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.float} = uintBitsToFloat(${inputs.a});`]; + }; } } -class Asin extends UnaryOp { - constructor({ sin: sin2 }) { - super({ a: sin2, outTypeFunc: (aType) => aType, outKey: "asin" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.asin} = asin(${inputs.a});` - ]; +class PackSnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packSnorm2x16(${inputs.a});`]; + }; } } -class Acos extends UnaryOp { - constructor({ cos: cos2 }) { - super({ a: cos2, outTypeFunc: (aType) => aType, outKey: "acos" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.acos} = acos(${inputs.a});` - ]; +class UnpackSnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`]; + }; } } -class Atan extends UnaryOp { - constructor({ tan: tan2 }) { - super({ a: tan2, outTypeFunc: (aType) => aType, outKey: "atan" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.atan} = atan(${inputs.a});` - ]; +class PackUnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packUnorm2x16(${inputs.a});`]; + }; } } -class Atan2 extends BinaryOp { - constructor({ y, x }) { - super({ - a: y, - b: x, - outTypeFunc: (aType, bType) => aType, - outKey: "atan2" - }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});` - ]; +class UnpackUnorm2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`]; + }; } } -class Sinh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "sinh" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.sinh} = sinh(${inputs.a});` - ]; +class PackHalf2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "uint", outTypeFunc: () => "uint" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.uint} = packHalf2x16(${inputs.a});`]; + }; } } -class Cosh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "cosh" }); - this.statements = ({ inputs, outputs }) => [ - `${outputs.cosh} = cosh(${inputs.a});` - ]; +class UnpackHalf2x16 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" }); + this.statements = ({ inputs, outputs }) => { + return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`]; + }; } } -class Tanh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "tanh" }); +class UintToRgba8 extends UnaryOp { + constructor({ value }) { + super({ a: value, outKey: "rgba8", outTypeFunc: () => "vec4" }); + this.statements = ({ inputs, outputs }) => { + return [ + `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`, + `${outputs.rgba8} = vec4(uRgba) / 255.0;` + ]; + }; + } +} +const length = (a) => new Length({ a }); +const distance = (a, b) => new Distance({ a, b }); +const dot = (a, b) => new Dot({ a, b }); +const cross = (a, b) => new Cross({ a, b }); +const normalize = (a) => new Normalize({ a }); +const faceforward = (a, b, c) => new FaceForward({ a, b, c }); +const reflectVec = (incident, normal) => new ReflectVec({ incident, normal }); +const refractVec = (incident, normal, eta) => new RefractVec({ incident, normal, eta }); +const split = (vector) => new Split({ vector }); +const combine = ({ + vector, + vectorType, + x, + y, + z, + w, + r, + g, + b, + a +}) => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a }); +const projectH = (a) => new ProjectH({ a }); +const extendVec = (a, b) => new ExtendVec({ a, b }); +const swizzle = (a, select2) => new Swizzle({ vector: a, select: select2 }); +const compMult = (a, b) => new CompMult({ a, b }); +const outer = (a, b) => new Outer({ a, b }); +const transpose = (a) => new Transpose({ a }); +const determinant = (a) => new Determinant({ a }); +const inverse = (a) => new Inverse({ a }); +class Length extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => "float", outKey: "length" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.tanh} = tanh(${inputs.a});` + `${outputs.length} = length(${inputs.a});` ]; } } -class Asinh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "asinh" }); +class Distance extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "distance", outTypeFunc: (aType, bType) => "float" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.asinh} = asinh(${inputs.a});` + `${outputs.distance} = distance(${inputs.a}, ${inputs.b});` ]; } } -class Acosh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "acosh" }); +class Dot extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "dot", outTypeFunc: (aType, bType) => "float" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.acosh} = acosh(${inputs.a});` + `${outputs.dot} = dot(${inputs.a}, ${inputs.b});` ]; } } -class Atanh extends UnaryOp { - constructor({ x }) { - super({ a: x, outTypeFunc: (aType) => aType, outKey: "atanh" }); +class Cross extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "cross", outTypeFunc: (aType, bType) => "vec3" }); this.statements = ({ inputs, outputs }) => [ - `${outputs.atanh} = atanh(${inputs.a});` + `${outputs.cross} = cross(${inputs.a}, ${inputs.b});` ]; } } -const dyno = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - Abs, - Acos, - Acosh, - Add, - All, - And, - Any, - Asin, - Asinh, - Atan, - Atan2, - Atanh, - BVec2, - BVec3, - BVec4, - BinaryOp, - Bool, - Ceil, - Clamp, - Combine, - CombineCovSplat, - CombineGsplat, - CompMult, - CompXor, - Compilation, - Cos, - Cosh, - CovSplat, - Cross, - DebugColorHue, - Degrees, - Determinant, - Distance, - Div, - Dot, - Dyno, - DynoBlock, - DynoBool, - DynoBvec2, - DynoBvec3, - DynoBvec4, - DynoConst, - DynoFloat, - DynoInt, - DynoIsampler2D, - DynoIsampler2DArray, - DynoIsampler3D, - DynoIsamplerCube, - DynoIvec2, - DynoIvec3, - DynoIvec4, - DynoLiteral, - DynoMat2, - DynoMat2x2, - DynoMat2x3, - DynoMat2x4, - DynoMat3, - DynoMat3x2, - DynoMat3x3, - DynoMat3x4, - DynoMat4, - DynoMat4x2, - DynoMat4x3, - DynoMat4x4, - DynoOutput, - DynoProgram, - DynoProgramTemplate, - DynoRemapIndex, - DynoSampler2D, - DynoSampler2DArray, - DynoSampler2DArrayShadow, - DynoSampler2DShadow, - DynoSampler3D, - DynoSamplerCube, - DynoSamplerCubeShadow, - DynoUint, - DynoUniform, - DynoUsampler2D, - DynoUsampler2DArray, - DynoUsampler3D, - DynoUsamplerCube, - DynoUvec2, - DynoUvec3, - DynoUvec4, - DynoValue, - DynoVec2, - DynoVec3, - DynoVec4, - Equal, - Exp, - Exp2, - ExtendVec, - FaceForward, - Float, - FloatBitsToInt, - FloatBitsToUint, - Floor, - Fract, - GreaterThan, - GreaterThanEqual, - Gsplat, - GsplatNormal, - GsplatToCovSplat, - Hash, - Hash2, - Hash3, - Hash4, - HashFloat, - HashVec2, - HashVec3, - HashVec4, - IMod, - IVec2, - IVec3, - IVec4, - Int, - IntBitsToFloat, - Inverse, - InverseSqrt, - IsInf, - IsNan, - Length, - LessThan, - LessThanEqual, - Log, - Log2, - Mat2, - Mat3, - Mat4, - Max, - Min, - Mix, - Mod, - Modf, - Mul, - Neg, - Normalize, - NormalizedDepth, - Not, - NotEqual, - NumCovSplats, - NumExtSplats, - NumPackedSplats, - Or, - Outer, - OutputCovSplat, - OutputExtCovSplat, - OutputExtendedSplat, - OutputPackedSplat, - OutputRgba8, - PackHalf2x16, - PackSnorm2x16, - PackUnorm2x16, - PagedSplatTexCoord, - PcgHash, - PcgMix, - PcgNext, - Pow, - ProjectH, - Radians, - ReadCovSplat, - ReadExtSplat, - ReadPackedSplat, - ReadPackedSplatRange, - ReflectVec, - RefractVec, - Round, - Select, - Shl, - Shr, - Sign, - SimpleCast, - Sin, - Sinh, - Smoothstep, - SplatTexCoord, - Split, - SplitCovSplat, - SplitGsplat, - Sqr, - Sqrt, - Step, - Sub, - Swizzle, - TCovSplats, - TExtSplats, - TPackedSplats, - Tan, - Tanh, - TexelFetch, - Texture, - TextureSize, - TransformDir, - TransformGsplat, - TransformPosition, - TransformQuaternion, - Transpose, - TrinaryOp, - Trunc, - UVec2, - UVec3, - UVec4, - Uint, - UintBitsToFloat, - UintToRgba8, - UnaryOp, - UnpackHalf2x16, - UnpackSnorm2x16, - UnpackUnorm2x16, - Vec2, - Vec3, - Vec4, - Xor, - abs, - acos, - acosh, - add, - all, - and, - any, - arrayIndex, - arrayLength, - asin, - asinh, - atan, - atan2, - atanh, - bool, - bvec2, - bvec3, - bvec4, - ceil, - clamp, - combine, - combineCovSplat, - combineGsplat, - comment, - compMult, - compXor, - cos, - cosh, - cross, - debugColorHue, - defineCovSplat, - defineExtSplats, - defineGsplat, - defineGsplatNormal, - definePackedSplats, - degrees, - determinant, - distance, - div, - dot, - dyno: dyno$1, - dynoBlock, - dynoBool, - dynoBvec2, - dynoBvec3, - dynoBvec4, - dynoConst, - dynoDeclare, - dynoFloat, - dynoFor, - dynoIf, - dynoInt, - dynoIsampler2D, - dynoIsampler2DArray, - dynoIsampler3D, - dynoIsamplerCube, - dynoIvec2, - dynoIvec3, - dynoIvec4, - dynoLiteral, - dynoMat2, - dynoMat2x2, - dynoMat2x3, - dynoMat2x4, - dynoMat3, - dynoMat3x2, - dynoMat3x3, - dynoMat3x4, - dynoMat4, - dynoMat4x2, - dynoMat4x3, - dynoMat4x4, - dynoSampler2D, - dynoSampler2DArray, - dynoSampler2DArrayShadow, - dynoSampler2DShadow, - dynoSampler3D, - dynoSamplerCube, - dynoSamplerCubeShadow, - dynoSwitch, - dynoUint, - dynoUsampler2D, - dynoUsampler2DArray, - dynoUsampler3D, - dynoUsamplerCube, - dynoUvec2, - dynoUvec3, - dynoUvec4, - dynoVec2, - dynoVec3, - dynoVec4, - equal, - exp, - exp2, - extendVec, - faceforward, - float, - floatBitsToInt, - floatBitsToUint, - floor, - fract, - greaterThan, - greaterThanEqual, - gsplatNormal, - gsplatToCovSplat, - hash, - hash2, - hash3, - hash4, - hashFloat, - hashVec2, - hashVec3, - hashVec4, - imod, - int, - intBitsToFloat, - inverse, - inversesqrt, - isAllFloatType, - isBoolType, - isFloatType, - isInf, - isIntType, - isMat2, - isMat3, - isMat4, - isMatFloatType, - isNan, - isScalarType, - isUintType, - isVector2Type, - isVector3Type, - isVector4Type, - isVectorType, - ivec2, - ivec3, - ivec4, - length, - lessThan, - lessThanEqual, - literalNegOne, - literalOne, - literalZero, - log, - log2, - mat2, - mat3, - mat4, - max, - min, - mix, - mod, - modf, - mul, - neg, - normalize, - normalizedDepth, - not, - notEqual, - numCovSplats, - numExtSplats, - numPackedSplats, - numberAsFloat, - numberAsInt, - numberAsUint, - or, - outer, - outputCovSplat, - outputCovSplatDepth, - outputExtCovSplat, - outputExtendedSplat, - outputPackedSplat, - outputRgba8, - outputSplatDepth, - packHalf2x16, - packSnorm2x16, - packUnorm2x16, - pagedSplatTexCoord, - pcgHash, - pcgMix, - pcgNext, - pow, - projectH, - radians, - readCovSplat, - readExtSplat, - readPackedSplat, - readPackedSplatRange, - reflectVec, - refractVec, - remapIndex, - round, - sameSizeIvec, - sameSizeUvec, - sameSizeVec, - select, - shl, - shr, - sign, - sin, - sinh, - smoothstep, - splatTexCoord, - split, - splitCovSplat, - splitGsplat, - sqr, - sqrt, - step, - sub, - swizzle, - tan, - tanh, - texelFetch, - texture, - textureSize, - transformDir, - transformGsplat, - transformPos, - transformQuat, - transpose, - trunc, - typeLiteral, - uint, - uintBitsToFloat, - uintToRgba8, - uniform, - unindent, - unindentLines, - unpackHalf2x16, - unpackSnorm2x16, - unpackUnorm2x16, - uvec2, - uvec3, - uvec4, - valType, - vec2, - vec3, - vec4, - vectorDim, - vectorElementType, - xor -}, Symbol.toStringTag, { value: "Module" })); -const _ExtSplats = class _ExtSplats { - constructor(options = {}) { - this.maxSplats = 0; - this.numSplats = 0; - this.extra = {}; - this.maxSh = 3; - this.isInitialized = false; - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - this.textures = [_ExtSplats.emptyTexture, _ExtSplats.emptyTexture]; - this.extra = {}; - this.dyno = new DynoExtSplats({ extSplats: this }); - this.dynoNumSh = new DynoInt({ - key: "numSh", - value: 0, - update: () => { - return Math.min(this.getNumSh(), this.maxSh); - } - }); - this.initialized = Promise.resolve(this); - this.reinitialize(options); +class Normalize extends UnaryOp { + constructor({ a }) { + super({ a, outTypeFunc: (aType) => aType, outKey: "normalize" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.normalize} = normalize(${inputs.a});` + ]; } - reinitialize(options) { - this.isInitialized = false; - this.extra = {}; - this.maxSplats = options.maxSplats ?? 0; - this.lod = options.lod; - this.nonLod = options.nonLod; - if (options.url || options.fileBytes || options.stream || options.construct) { - this.initialized = this.asyncInitialize(options).then(() => { - this.isInitialized = true; - return this; - }); - } else { - this.initialize(options); - this.isInitialized = true; - this.initialized = Promise.resolve(this); - } +} +function projectHOutputType(type) { + if (type === "vec3") { + return "vec2"; } - initialize(options) { - this.extra = options.extra ?? {}; - this.lodSplats = options.lodSplats; - if (options.extArrays) { - this.extArrays = options.extArrays; - this.maxSplats = Math.floor( - Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) - ); - this.numSplats = options.numSplats ?? this.maxSplats; - this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - this.numSplats = Math.min( - this.maxSplats, - options.numSplats ?? Number.POSITIVE_INFINITY - ); - this.updateTextures(); - } else { - this.maxSplats = options.maxSplats ?? 0; - this.numSplats = 0; - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - } + if (type === "vec4") { + return "vec3"; } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - construct, - lod, - nonLod, - lodAbove - } = options; - this.lod = lod; - this.nonLod = nonLod; - const loader = new SplatLoader(); - if (fileBytes || url || stream) { - await loader.loadInternalAsync({ - extSplats: this, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress: options.onProgress, - lodAbove - }); - } - if (construct) { - const maybePromise = construct(this); - if (maybePromise instanceof Promise) { - await maybePromise; + throw new Error("Invalid type"); +} +class ProjectH extends UnaryOp { + constructor({ a }) { + super({ + a, + outTypeFunc: (aType) => projectHOutputType(aType), + outKey: "projected" + }); + this.statements = ({ inputs, outputs }) => { + if (this.inTypes.a === "vec3") { + return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`]; } - } - } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. - dispose() { - if (this.textures[0] !== _ExtSplats.emptyTexture) { - this.textures[0].dispose(); - this.textures[0].source.data = null; - this.textures[0] = _ExtSplats.emptyTexture; - } - if (this.textures[1] !== _ExtSplats.emptyTexture) { - this.textures[1].dispose(); - this.textures[1].source.data = null; - this.textures[1] = _ExtSplats.emptyTexture; - } - this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - for (const key in this.extra) { - const dyno2 = this.extra[key]; - if (dyno2 instanceof DynoUniform) { - const texture2 = dyno2.value; - if (texture2 == null ? void 0 : texture2.isTexture) { - texture2.dispose(); - texture2.source.data = null; - } + if (this.inTypes.a === "vec4") { + return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`]; } - } - this.extra = {}; - this.disposeLodSplats(); + throw new Error("Invalid type"); + }; } - prepareFetchSplat() { +} +function extendVecOutputType(type) { + if (type === "float") return "vec2"; + if (type === "vec2") return "vec3"; + if (type === "vec3") return "vec4"; + throw new Error("Invalid type"); +} +class ExtendVec extends BinaryOp { + constructor({ a, b }) { + const type = valType(a); + const outType = extendVecOutputType(type); + super({ a, b, outKey: "extend", outTypeFunc: () => outType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});` + ]; } - getNumSplats() { - return this.numSplats; +} +class FaceForward extends TrinaryOp { + constructor({ a, b, c }) { + super({ + a, + b, + c, + outKey: "forward", + outTypeFunc: (aType, bType, cType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});` + ]; } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; +} +class ReflectVec extends BinaryOp { + constructor({ + incident, + normal + }) { + super({ + a: incident, + b: normal, + outKey: "reflection", + outTypeFunc: (aType, bType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});` + ]; } - getNumSh() { - return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3a || !this.extra.sh3b ? 2 : 3; +} +class RefractVec extends TrinaryOp { + constructor({ + incident, + normal, + eta + }) { + super({ + a: incident, + b: normal, + c: eta, + outKey: "refraction", + outTypeFunc: (aType, bType, cType) => aType + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});` + ]; } - setMaxSh(maxSh) { - this.maxSh = maxSh; +} +class CompMult extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "product", outTypeFunc: (aType, bType) => aType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.product} = matrixCompMult(${a}, ${b});` + ]; } - fetchSplat({ - index, - viewOrigin - }) { - let gsplat = readExtSplat(this.dyno, index); - if (this.hasRgbDir() && viewOrigin) { - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } = this.ensureShTextures(); - let { rgb } = evaluateExtSH({ - coord: splatTexCoord(index), - viewDir, - numSh: this.dynoNumSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB - }); - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - } - return gsplat; +} +function outerOutputType(aType, bType) { + if (aType === "vec2") { + if (bType === "vec2") return "mat2"; + if (bType === "vec3") return "mat3x2"; + if (bType === "vec4") return "mat4x2"; } - ensureShTextures() { - if (!this.extra.sh1) { - return {}; - } - let sh1Texture = this.extra.sh1Texture; - if (!sh1Texture) { - let sh1 = this.extra.sh1; - const { width, height, depth, maxSplats } = getTextureSize( - sh1.length / 4 - ); - if (sh1.length < maxSplats * 4) { - const newSh1 = new Uint32Array(maxSplats * 4); - newSh1.set(sh1); - this.extra.sh1 = newSh1; - sh1 = newSh1; - } - const texture2 = newUint32ArrayTexture( - sh1, - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - sh1Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh1" - }); - this.extra.sh1Texture = sh1Texture; - } - if (!this.extra.sh2) { - return { sh1Texture }; - } - let sh2Texture = this.extra.sh2Texture; - if (!sh2Texture) { - let sh2 = this.extra.sh2; - const { width, height, depth, maxSplats } = getTextureSize( - sh2.length / 4 - ); - if (sh2.length < maxSplats * 4) { - const newSh2 = new Uint32Array(maxSplats * 4); - newSh2.set(sh2); - this.extra.sh2 = newSh2; - sh2 = newSh2; - } - const texture2 = newUint32ArrayTexture( - sh2, - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - sh2Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh2" - }); - this.extra.sh2Texture = sh2Texture; - } - if (!this.extra.sh3a || !this.extra.sh3b) { - return { sh1Texture, sh2Texture }; - } - let sh3TextureA = this.extra.sh3TextureA; - if (!sh3TextureA) { - let sh3a = this.extra.sh3a; - const { width, height, depth, maxSplats } = getTextureSize( - sh3a.length / 4 - ); - if (sh3a.length < maxSplats * 4) { - const newSh3 = new Uint32Array(maxSplats * 4); - newSh3.set(sh3a); - this.extra.sh3a = newSh3; - sh3a = newSh3; - } - const texture2 = newUint32ArrayTexture( - sh3a, - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - sh3TextureA = new DynoUsampler2DArray({ - value: texture2, - key: "sh3" - }); - this.extra.sh3TextureA = sh3TextureA; - } - let sh3TextureB = this.extra.sh3TextureB; - if (!sh3TextureB) { - let sh3b = this.extra.sh3b; - const { width, height, depth, maxSplats } = getTextureSize( - sh3b.length / 4 - ); - if (sh3b.length < maxSplats * 4) { - const newSh3b = new Uint32Array(maxSplats * 4); - newSh3b.set(sh3b); - this.extra.sh3b = newSh3b; - sh3b = newSh3b; - } - const texture2 = newUint32ArrayTexture( - sh3b, - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - sh3TextureB = new DynoUsampler2DArray({ - value: texture2, - key: "sh3b" - }); - this.extra.sh3TextureB = sh3TextureB; - } - return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB }; + if (aType === "vec3") { + if (bType === "vec2") return "mat2x3"; + if (bType === "vec3") return "mat3"; + if (bType === "vec4") return "mat4x3"; } - // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(numSplats) { - const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(numSplats, 2 * this.maxSplats) - ); - const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4; - if (!this.extArrays[0] || targetSize > currentSize) { - this.maxSplats = getTextureSize(targetSize).maxSplats; - const newArray0 = new Uint32Array(this.maxSplats * 4); - const newArray1 = new Uint32Array(this.maxSplats * 4); - if (this.extArrays[0]) { - newArray0.set(this.extArrays[0]); - newArray1.set(this.extArrays[1]); - } - this.extArrays[0] = newArray0; - this.extArrays[1] = newArray1; - } - return this.extArrays; + if (aType === "vec4") { + if (bType === "vec2") return "mat2x4"; + if (bType === "vec3") return "mat3x4"; + if (bType === "vec4") return "mat4"; } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(index) { - if (index >= this.numSplats) { - throw new Error("Invalid index"); - } - return decodeExtSplat(this.extArrays, index); + throw new Error(`Invalid outer type: ${aType}, ${bType}`); +} +class Outer extends BinaryOp { + constructor({ a, b }) { + super({ a, b, outKey: "outer", outTypeFunc: outerOutputType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});` + ]; } - // Set all ExtSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(index, center, scales, quaternion, opacity, color) { - const extArrays = this.ensureSplats(index + 1); - encodeExtSplat( - extArrays, - index, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b - ); - this.numSplats = Math.max(this.numSplats, index + 1); +} +function transposeOutputType(type) { + if (type === "mat2") return "mat2"; + if (type === "mat3") return "mat3"; + if (type === "mat4") return "mat4"; + if (type === "mat2x2") return "mat2x2"; + if (type === "mat2x3") return "mat3x2"; + if (type === "mat2x4") return "mat4x2"; + if (type === "mat3x2") return "mat2x3"; + if (type === "mat3x3") return "mat3x3"; + if (type === "mat3x4") return "mat4x3"; + if (type === "mat4x2") return "mat2x4"; + if (type === "mat4x3") return "mat3x4"; + if (type === "mat4x4") return "mat4x4"; + throw new Error(`Invalid transpose type: ${type}`); +} +class Transpose extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "transpose", outTypeFunc: transposeOutputType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.transpose} = transpose(${inputs.a});` + ]; } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(center, scales, quaternion, opacity, color) { - const extArrays = this.ensureSplats(this.numSplats + 1); - encodeExtSplat( - extArrays, - this.numSplats, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b - ); - ++this.numSplats; +} +class Determinant extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "det", outTypeFunc: (aType) => "float" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.det} = determinant(${inputs.a});` + ]; } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.numSplats) { - return; - } - for (let i = 0; i < this.numSplats; ++i) { - const unpacked = decodeExtSplat(this.extArrays, i); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color - ); - } +} +class Inverse extends UnaryOp { + constructor({ a }) { + super({ a, outKey: "inverse", outTypeFunc: (aType) => aType }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.inverse} = inverse(${a});` + ]; } - // Check if source texture needs to be created/updated - updateTextures() { - if (this.textures[0] !== _ExtSplats.emptyTexture) { - const { width, height, depth } = this.textures[0].image; - if (this.maxSplats !== width * height * depth) { - this.textures[0].dispose(); - this.textures[0] = _ExtSplats.emptyTexture; - this.textures[1].dispose(); - this.textures[1] = _ExtSplats.emptyTexture; - } - } - if (this.textures[0] === _ExtSplats.emptyTexture) { - const { width, height, depth } = getTextureSize(this.maxSplats); - this.textures[0] = newUint32ArrayTexture( - this.extArrays[0], - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - this.textures[1] = newUint32ArrayTexture( - this.extArrays[1], - width, - height, - depth, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - } else if (this.extArrays[0].buffer !== this.textures[0].image.data.buffer) { - this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer); - this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer); - this.textures[0].needsUpdate = true; - this.textures[1].needsUpdate = true; - } +} +function splitOutTypes(type) { + const result = (value) => value; + switch (type) { + case "vec2": + return result({ x: "float", y: "float", r: "float", g: "float" }); + case "vec3": + return result({ + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }); + case "vec4": + return result({ + x: "float", + y: "float", + z: "float", + w: "float", + r: "float", + g: "float", + b: "float", + a: "float" + }); + case "ivec2": + return result({ x: "int", y: "int", r: "int", g: "int" }); + case "ivec3": + return result({ + x: "int", + y: "int", + z: "int", + r: "int", + g: "int", + b: "int" + }); + case "ivec4": + return result({ + x: "int", + y: "int", + z: "int", + w: "int", + r: "int", + g: "int", + b: "int", + a: "int" + }); + case "uvec2": + return result({ x: "uint", y: "uint", r: "uint", g: "uint" }); + case "uvec3": + return result({ + x: "uint", + y: "uint", + z: "uint", + r: "uint", + g: "uint", + b: "uint" + }); + case "uvec4": + return result({ + x: "uint", + y: "uint", + z: "uint", + w: "uint", + r: "uint", + g: "uint", + b: "uint", + a: "uint" + }); + default: + throw new Error(`Invalid vector type: ${type}`); } - extractSplats(indices, pageColoring) { - const maxSplats = getTextureSize(indices.length).maxSplats; - const newSplats = new _ExtSplats({ maxSplats }); - for (let i = 0; i < indices.length; i++) { - const splat = this.getSplat(indices[i]); - if (pageColoring) { - let hue = (indices[i] >>> 16) * 0.61803398875; - hue = hue - Math.floor(hue); - const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); - const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); - const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); - splat.color.r *= r; - splat.color.g *= g; - splat.color.b *= b; - } - newSplats.pushSplat( - splat.center, - splat.scales, - splat.quaternion, - splat.opacity, - splat.color - ); - } - return newSplats; +} +class Split extends Dyno { + constructor({ vector }) { + const type = valType(vector); + const inTypes = { vector: type }; + const outTypes = splitOutTypes(inTypes.vector); + super({ inTypes, outTypes, inputs: { vector } }); + this.statements = ({ inputs, outputs }) => { + const { x, y, z, w, r, g, b, a } = outputs; + const { vector: vector2 } = inputs; + return [ + x ? `${x} = ${vector2}.x;` : null, + y ? `${y} = ${vector2}.y;` : null, + z ? `${z} = ${vector2}.z;` : null, + w ? `${w} = ${vector2}.w;` : null, + r ? `${r} = ${vector2}.r;` : null, + g ? `${g} = ${vector2}.g;` : null, + b ? `${b} = ${vector2}.b;` : null, + a ? `${a} = ${vector2}.a;` : null + ].filter(Boolean); + }; } - disposeLodSplats() { - if (this.lodSplats) { - this.lodSplats.dispose(); - this.lodSplats = void 0; +} +class Combine extends Dyno { + constructor({ + vector, + vectorType, + x, + y, + z, + w, + r, + g, + b, + a + }) { + if (!vector && !vectorType) { + throw new Error("Either vector or vectorType must be provided"); } - } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; - const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()]; - const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; - const extra = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + const vType = vectorType ?? valType(vector); + const elType = vectorElementType(vType); + const dim = vectorDim(vType); + const inTypes = { + vector: vType, + x: elType, + y: elType, + r: elType, + g: elType }; - const decoded = await workerPool.withWorker(async (worker) => { - return await worker.call( - quality ? "qualityLodExtSplats" : "tinyLodExtSplats", - { - numSplats: this.numSplats, - extArrays, - extra, - lodBase, - rgba - } - ); - }); - const lodSplats = new _ExtSplats(decoded); - if (this.lodSplats) { - this.lodSplats.dispose(); + const inputs = { vector, x, y, r, g }; + if (dim >= 3) { + Object.assign(inTypes, { z: elType, b: elType }); + Object.assign(inputs, { z, b }); } - this.lodSplats = lodSplats; - this.nonLod = true; - this.lod = quality ? "quality" : true; + if (dim >= 4) { + Object.assign(inTypes, { w: elType, a: elType }); + Object.assign(inputs, { w, a }); + } + super({ inTypes, outTypes: { vector: vType }, inputs }); + this.statements = ({ inputs: inputs2, outputs }) => { + const { vector: vector2 } = outputs; + const { + vector: input, + x: x2, + y: y2, + z: z2, + w: w2, + r: r2, + g: g2, + b: b22, + a: a2 + } = inputs2; + const statements = [ + `${vector2}.x = ${x2 ?? r2 ?? (input ? `${input}.x` : literalZero(elType))};`, + `${vector2}.y = ${y2 ?? g2 ?? (input ? `${input}.y` : literalZero(elType))};` + ]; + if (dim >= 3) + statements.push( + `${vector2}.z = ${z2 ?? b22 ?? (input ? `${input}.z` : literalZero(elType))};` + ); + if (dim >= 4) + statements.push( + `${vector2}.w = ${w2 ?? a2 ?? (input ? `${input}.w` : literalZero(elType))};` + ); + return statements; + }; + } + dynoOut() { + return new DynoOutput( + this, + "vector" + ); + } +} +function swizzleOutputType(type, swizzle2) { + let result = null; + if (isFloatType(type)) { + result = swizzle2.length === 1 ? "float" : swizzle2.length === 2 ? "vec2" : swizzle2.length === 3 ? "vec3" : swizzle2.length === 4 ? "vec4" : null; + } else if (isIntType(type)) { + result = swizzle2.length === 1 ? "int" : swizzle2.length === 2 ? "ivec2" : swizzle2.length === 3 ? "ivec3" : swizzle2.length === 4 ? "ivec4" : null; + } else if (isUintType(type)) { + result = swizzle2.length === 1 ? "uint" : swizzle2.length === 2 ? "uvec2" : swizzle2.length === 3 ? "uvec3" : swizzle2.length === 4 ? "uvec4" : null; + } + if (result == null) { + throw new Error(`Invalid swizzle: ${swizzle2}`); + } + return result; +} +class Swizzle extends UnaryOp { + constructor({ vector, select: select2 }) { + super({ + a: vector, + outKey: "swizzle", + outTypeFunc: (aType) => swizzleOutputType(aType, select2) + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.swizzle} = ${inputs.a}.${select2};` + ]; } +} +const remapIndex = (index, from, to) => { + return new DynoRemapIndex({ index, from, to }); }; -_ExtSplats.emptyArray = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_ExtSplats.emptyTexture = newUint32ArrayTexture( - null, - 1, - 1, - 1, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" -); -_ExtSplats.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -let ExtSplats = _ExtSplats; -class DynoExtSplats extends DynoUniform { - constructor({ extSplats } = {}) { +const pcgMix = (value) => { + return new PcgMix({ value }); +}; +const pcgNext = (state) => { + return new PcgNext({ state }); +}; +const pcgHash = (state) => { + return new PcgHash({ state }); +}; +const hash = (value) => { + return new Hash({ value }); +}; +const hash2 = (value) => { + return new Hash2({ value }); +}; +const hash3 = (value) => { + return new Hash3({ value }); +}; +const hash4 = (value) => { + return new Hash4({ value }); +}; +const hashFloat = (value) => { + return new HashFloat({ value }); +}; +const hashVec2 = (value) => { + return new HashVec2({ value }); +}; +const hashVec3 = (value) => { + return new HashVec3({ value }); +}; +const hashVec4 = (value) => { + return new HashVec4({ value }); +}; +const normalizedDepth = (z, zNear, zFar) => { + return new NormalizedDepth({ z, zNear, zFar }).outputs.depth; +}; +const debugColorHue = (index) => { + return new DebugColorHue({ index }); +}; +class DynoRemapIndex extends Dyno { + constructor({ + from, + to, + index + }) { super({ - key: "extSplats", - type: TExtSplats, - globals: () => [defineExtSplats], - value: { - textureArray1: ExtSplats.emptyTexture, - textureArray2: ExtSplats.emptyTexture, - numSplats: 0 - }, - update: (value) => { - var _a2, _b2, _c; - value.textureArray1 = ((_a2 = this.extSplats) == null ? void 0 : _a2.textures[0]) ?? ExtSplats.emptyTexture; - value.textureArray2 = ((_b2 = this.extSplats) == null ? void 0 : _b2.textures[1]) ?? ExtSplats.emptyTexture; - value.numSplats = ((_c = this.extSplats) == null ? void 0 : _c.numSplats) ?? 0; - return value; + inTypes: { from: "int", to: "int", index: "int" }, + outTypes: { index: "int" }, + inputs: { from, to, index }, + statements: ({ inputs, outputs }) => { + return [ + `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};` + ]; } }); - this.extSplats = extSplats; - } -} -const defineEvaluateExtSH1 = unindent(` - vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packedData.x); - vec3 sh1_1 = decodeExtRgb(packedData.y); - vec3 sh1_2 = decodeExtRgb(packedData.z); - - return sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - } -`); -const defineEvaluateExtSH12 = unindent(` - vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packed1.x); - vec3 sh1_1 = decodeExtRgb(packed1.y); - vec3 sh1_2 = decodeExtRgb(packed1.z); - - vec3 sh2_0 = decodeExtRgb(packed1.w); - vec3 sh2_1 = decodeExtRgb(packed2.x); - vec3 sh2_2 = decodeExtRgb(packed2.y); - vec3 sh2_3 = decodeExtRgb(packed2.z); - vec3 sh2_4 = decodeExtRgb(packed2.w); - - vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - - vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - - return sh1Rgb + sh2Rgb; } -`); -const defineEvaluateExtSH3 = unindent(` - vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { - vec3 sh3_0 = decodeExtRgb(packedA.x); - vec3 sh3_1 = decodeExtRgb(packedA.y); - vec3 sh3_2 = decodeExtRgb(packedA.z); - vec3 sh3_3 = decodeExtRgb(packedA.w); - vec3 sh3_4 = decodeExtRgb(packedB.x); - vec3 sh3_5 = decodeExtRgb(packedB.y); - vec3 sh3_6 = decodeExtRgb(packedB.z); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + dynoOut() { + return new DynoOutput(this, "index"); } -`); -function evaluateExtSH({ - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB -}) { - return new Dyno({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3TextureA: "usampler2DArray", - sh3TextureB: "usampler2DArray" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3TextureA, - sh3TextureB - }, - globals: () => [ - defineEvaluateExtSH1, - defineEvaluateExtSH12, - defineEvaluateExtSH3 - ], - statements: ({ inputs, outputs }) => { - const lines = ["vec3 rgb = vec3(0.0);"]; - if (inputs.sh1Texture) { - if (!inputs.sh2Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 1) { - rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - } - `) - ); - } else { - lines.push( - ...unindentLines(` - if (${inputs.numSh} == 1) { - rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - } else if (${inputs.numSh} >= 2) { - rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); - `) - ); - if (inputs.sh3TextureA && inputs.sh3TextureB) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 3) { - rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir}); - } - `) - ); +} +class PcgNext extends Dyno { + constructor({ state }) { + const type = valType(state); + super({ + inTypes: { state: type }, + outTypes: { state: "uint" }, + inputs: { state }, + globals: () => [ + unindent(` + uint pcg_next(uint state) { + return state * 747796405u + 2891336453u; } - lines.push("}"); - } + `) + ], + statements: ({ inputs, outputs }) => { + const toUint = type === "uint" ? `${inputs.state}` : type === "int" ? `uint(${inputs.state})` : `floatBitsToUint(${inputs.state})`; + return [`${outputs.state} = pcg_next(${toUint});`]; } - lines.push(`${outputs.rgb} = rgb;`); - return lines; - } - }).outputs; + }); + } + dynoOut() { + return new DynoOutput(this, "state"); + } } -function newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { - const texture2 = new THREE.DataArrayTexture( - data, - width, - height, - depth - ); - texture2.format = format; - texture2.type = type; - texture2.internalFormat = internalFormat; - texture2.needsUpdate = true; - return texture2; +class PcgHash extends Dyno { + constructor({ state }) { + super({ + inTypes: { state: "uint" }, + outTypes: { hash: "uint" }, + inputs: { state }, + globals: () => [ + unindent(` + uint pcg_hash(uint state) { + uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (hash >> 22u) ^ hash; + } + `) + ], + statements: ({ inputs, outputs }) => [ + `${outputs.hash} = pcg_hash(${inputs.state});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function decode_rad_header(bytes) { - const ret = wasm.decode_rad_header(bytes); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); +class PcgMix extends Dyno { + constructor({ value }) { + const type = valType(value); + const tempType = sameSizeUvec(type); + super({ + inTypes: { value: type }, + outTypes: { state: "uint" }, + inputs: { value }, + globals: () => [ + unindent(` + uint pcg_mix(uint value) { + return value; + } + uint pcg_mix(uvec2 value) { + return value.x + 0x9e3779b9u * value.y; + } + uint pcg_mix(uvec3 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; + } + uint pcg_mix(uvec4 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; + } + `) + ], + statements: ({ inputs, outputs }) => { + const toUvec = isUintType(type) ? `${inputs.value}` : isIntType(type) ? `${tempType}(${inputs.value})` : `floatBitsToUint(${inputs.value})`; + return [ + `${tempType} bits = ${toUvec};`, + `${outputs.state} = pcg_mix(bits);` + ]; + } + }); + } + dynoOut() { + return new DynoOutput(this, "state"); } - return takeFromExternrefTable0(ret[0]); } -function get_raycast_buffer() { - const ret = wasm.get_raycast_buffer(); - return ret; +class Hash extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uint" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + return new PcgHash({ state }).outputs; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function get_raycast_buffer2() { - const ret = wasm.get_raycast_buffer2(); - return ret; +class Hash2 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec2" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec2", x, y }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) { - const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count); - return ret; +class Hash3 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec3" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const z = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec3", x, y, z }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) { - const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity); - return ret; +class Hash4 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "uvec4" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + let state = new PcgMix({ value: value2 }).outputs.state; + state = new PcgNext({ state }).outputs.state; + const x = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const y = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const z = new PcgHash({ state }).outputs.hash; + state = new PcgNext({ state }).outputs.state; + const w = new PcgHash({ state }).outputs.hash; + return { hash: combine({ vectorType: "uvec4", x, y, z, w }) }; + } + }); + } + dynoOut() { + return new DynoOutput(this, "hash"); + } } -function __wbg_get_imports() { - const import0 = { - __proto__: null, - __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) { - const ret = Error(getStringFromWasm0(arg0, arg1)); - return ret; - }, - __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }, - __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); +class HashFloat extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "float" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const word = hash(value2); + return { hash: mul(float(word), dynoConst("float", 1 / 2 ** 32)) }; } - }, - __wbg_length_0c32cb8543c8e4c8: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_length_1e701798fdcaa3b4: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_length_fd4646b401926788: function(arg0) { - const ret = arg0.length; - return ret; - }, - __wbg_new_227d7c05414eb861: function() { - const ret = new Error(); - return ret; - }, - __wbg_new_4f9fafbb3909af72: function() { - const ret = new Object(); - return ret; - }, - __wbg_new_f3c9df4f38f3f798: function() { - const ret = new Array(); - return ret; - }, - __wbg_new_with_length_26bffbe236bf73f9: function(arg0) { - const ret = new Float32Array(arg0 >>> 0); - return ret; - }, - __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) { - Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2); - }, - __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) { - Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2); - }, - __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) { - arg0[arg1] = arg2; - }, - __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) { - arg0[arg1 >>> 0] = arg2; - }, - __wbg_set_8ee2d34facb8466e: function() { - return handleError(function(arg0, arg1, arg2) { - const ret = Reflect.set(arg0, arg1, arg2); - return ret; - }, arguments); - }, - __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) { - arg0.set(getArrayF32FromWasm0(arg1, arg2)); - }, - __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, - __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) { - const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); - return ret; - }, - __wbindgen_cast_0000000000000001: function(arg0) { - const ret = arg0; - return ret; - }, - __wbindgen_cast_0000000000000002: function(arg0, arg1) { - const ret = getArrayF32FromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000003: function(arg0, arg1) { - const ret = getArrayU32FromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000004: function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }, - __wbindgen_cast_0000000000000005: function(arg0) { - const ret = BigInt.asUintN(64, arg0); - return ret; - }, - __wbindgen_init_externref_table: function() { - const table = wasm.__wbindgen_externrefs; - const offset = table.grow(4); - table.set(0, void 0); - table.set(offset + 0, void 0); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - } - }; - return { - __proto__: null, - "./spark_rs_bg.js": import0 - }; -} -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_externrefs.set(idx, obj); - return idx; -} -function getArrayF32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} -function getArrayU32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); -} -let cachedDataViewMemory0 = null; -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} -let cachedFloat32ArrayMemory0 = null; -function getFloat32ArrayMemory0() { - if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { - cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + }); } - return cachedFloat32ArrayMemory0; -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return decodeText(ptr, len); -} -let cachedUint32ArrayMemory0 = null; -function getUint32ArrayMemory0() { - if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { - cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + dynoOut() { + return new DynoOutput(this, "hash"); } - return cachedUint32ArrayMemory0; } -let cachedUint8ArrayMemory0 = null; -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); +class HashVec2 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec2" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const words = hash2(value2); + return { hash: mul(vec2(words), dynoConst("float", 1 / 2 ** 32)) }; + } + }); } - return cachedUint8ArrayMemory0; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); + dynoOut() { + return new DynoOutput(this, "hash"); } } -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8ArrayMemory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = cachedTextEncoder.encodeInto(arg, view); - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; +class HashVec3 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec3" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); + } + const words = hash3(value2); + return { hash: mul(vec3(words), dynoConst("float", 1 / 2 ** 32)) }; + } + }); } - WASM_VECTOR_LEN = offset; - return ptr; -} -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_externrefs.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} -let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); -cachedTextDecoder.decode(); -const MAX_SAFARI_DECODE_BYTES = 2146435072; -let numBytesDecoded = 0; -function decodeText(ptr, len) { - numBytesDecoded += len; - if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { - cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); - cachedTextDecoder.decode(); - numBytesDecoded = len; + dynoOut() { + return new DynoOutput(this, "hash"); } - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} -const cachedTextEncoder = new TextEncoder(); -if (!("encodeInto" in cachedTextEncoder)) { - cachedTextEncoder.encodeInto = function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; -} -let WASM_VECTOR_LEN = 0; -let wasm; -function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - cachedDataViewMemory0 = null; - cachedFloat32ArrayMemory0 = null; - cachedUint32ArrayMemory0 = null; - cachedUint8ArrayMemory0 = null; - wasm.__wbindgen_start(); - return wasm; } -async function __wbg_load(module, imports) { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - const validResponse = module.ok && expectedResponseType(module.type); - if (validResponse && module.headers.get("Content-Type") !== "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; +class HashVec4 extends DynoBlock { + constructor({ value }) { + super({ + inTypes: { value: valType(value) }, + outTypes: { hash: "vec4" }, + inputs: { value }, + construct: ({ value: value2 }) => { + if (!value2) { + throw new Error("value is required"); } + const words = hash4(value2); + return { hash: mul(vec4(words), dynoConst("float", 1 / 2 ** 32)) }; } - } - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } + }); } - function expectedResponseType(type) { - switch (type) { - case "basic": - case "cors": - case "default": - return true; - } - return false; + dynoOut() { + return new DynoOutput(this, "hash"); } } -async function __wbg_init(module_or_path) { - if (wasm !== void 0) return wasm; - if (module_or_path !== void 0) { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({ module_or_path } = module_or_path); - } else { - console.warn("using deprecated parameters for the initialization function; pass a single object instead"); - } - } - if (module_or_path === void 0) { - module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAABlwM3YAN/f38Bf2ACf38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgBH9/f38AYAABb2AAAGACf38Bb2AEf39/fwF/YAZ/f39/f38AYAFvAX9gAX0BfWAFf39/fn8AYAABf2AFf39/f38Bf2ADf39vAGAGf39/f39/AX9gB39/f39/f38AYAV/f35/fwBgBX9/fH9/AGAFf399f38AYAADf39/YANvb28AYANvf28AYANvb28Bf2ADb39/AW9gAX8Bb2ADb39/AGACf28AYAF8AW9gAX4Bb2AKf39/f3t9fX19fwBgB39/f39/f38Bf2AIf397fX1/f38AYAJ+fwBgA39/fgBgAn9+AX9gA39+fgBgBH9+fn8AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAZ/f39/f30AYA59fX19fX19fX1/b319fwFvYA19fX19fX19fX1/fX1/AW9gAW8Df39/YAp9fX19fX19fX1/AW9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAn19AX1gAXwBfwK7CRgQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAIEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACBAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABkQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAaEC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADRAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgASEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAGxAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5X2Q1MWU4OTQ1OGIzZmRiZjYAHBAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AA0QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5AB0QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAANEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxAAgQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmAB8QLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAIQLi9zcGFya19yc19iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAAoQLi9zcGFya19yc19iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhAuL3NwYXJrX3JzX2JnLmpzH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUACRAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAxACAQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAKEC4vc3BhcmtfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDMAChAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDA0AAoQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwNQAhA54CnAIFAAECAQIFAQEGBQAiIwcCAwUBAg4OBAECBQMACwUBBQICAAIFAgQkAgMDAgACAAUCABMBAQkBFAACDwEFBRQOAg8ABQIEJQEDAQICBRAFBQEEBQEPAQEMAgEBBwUBAgEBASYBAQICAgICAQIFBAIBDAYBAgMDJwECBAYCAgMBAQICAQUCASgGAAABBAMDAwMEBgYHAwQABwEDAgADDAQEAQEG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NgIEDAELIAAPCyAAQQhqC98XAhp/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEHQ38EAKAIAIgkhBiACQQNrQRhtIgVBACAFQQBKGyILIQUgC0ECdEHg38EAaiEHA0AgAyAEQQN0aiAFQQBIBHxEAAAAAAAAAAAFIAcoAgC3CzkDACAEIAZJIgoEQCAHQQRqIQcgBUEBaiEFIAQgCmoiBCAGTQ0BCwtBACEFA0BBACEEIANBwAJqIAVBA3RqIB0gACAEQQN0aisDACADIAUgBGtBA3RqKwMAoqA5AwAgBSAJSSIGBEAgBSAGaiIFIAlNDQELC0QAAAAAAADwf0QAAAAAAADgfyACIAtBaGxqIgpBGGsiAkH+D0siEBtEAAAAAAAAAABEAAAAAAAAYAMgAkG5cEkiERtEAAAAAAAA8D8gAkGCeEgiEhsgAkH/B0oiExtB/RcgAiACQf0XTxtB/g9rIApBlwhrIBAbIhVB8GggAiACQfBoTRtBkg9qIApBsQdqIBEbIhYgAiASGyATG0H/B2qtQjSGv6IhHiADQdwDaiIOIAlBAnRqIQ9BLyAKa0Ef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ADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwQCyABKAIAQdyWwQBBCiABKAIEKAIMEQAADA8LIAEoAgBB5pbBAEEMIAEoAgQoAgwRAAAMDgsgASgCAEHylsEAQQ4gASgCBCgCDBEAAAwNCyABKAIAQYCXwQBBCCABKAIEKAIMEQAADAwLIAEoAgBBiJfBAEEDIAEoAgQoAgwRAAAMCwsgASgCAEGLl8EAQQQgASgCBCgCDBEAAAwKCyABKAIAQY+XwQBBDCABKAIEKAIMEQAADAkLIAEoAgBBm5fBAEEPIAEoAgQoAgwRAAAMCAsgASgCAEGql8EAQQ0gASgCBCgCDBEAAAwHCyABKAIAQbeXwQBBDiABKAIEKAIMEQAADAYLIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAMBQsgACkDCCIJQv////////8HgyEKIAlC////////////AINC//////////f/AFgEQCAJQjSIpyEAIAlCAFMNAiACQagCagwDC0HUosEAQdeiwQAgCUIAWSIAG0HbosEAIApQIgQbIQNBA0EEIAAbQQMgBBshAAwDCyABKAIAQdqXwQBBBCABKAIEKAIMEQAADAMLIAJBLToAqAJBASEIIAJBqQJqCyEGAn8CQAJAAkACQAJAAkACQAJAIABB/w9xIgBFIApQcUUEQCAAQQJJIApCAFJyIQMgCkKAgICAgICACIQgCiAAGyIJQgKGIQogCUIBgyEPAkACQAJAIABBtQhrQcx3IAAbIgBBAEgEQCACQZACakHQwcAAIAAgAEGFolNsQRR2IABBf0drIgBqIgdBBHQiBGspAwAiCSAKQgKEIgsQngEgAkGAAmpB2MHAACAEaykDACINIAsQngEgAkHwAWogAikDmAIiCyACKQOAAnwiDCACKQOIAiALIAxWrXwgACAHQbHZtR9sQRN2a0H8AGpB/wBxQcAAcyIEELsBIAJBsAFqIAkgCiADQX9zrHwiCxCeASACQaABaiANIAsQngEgAkGQAWogAikDuAEiCyACKQOgAXwiDCACKQOoASALIAxWrXwgBBC7ASACQeABaiAJIAoQngEgAkHQAWogDSAKEJ4BIAJBwAFqIAIpA+gBIgkgAikD0AF8Ig0gAikD2AEgCSANVq18IAQQuwEgAikDwAEhCyACKQOQASEJIAIpA/ABIQwg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QYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAkHgmMEAEJQBCyACIANBAWo2AgggAigCBCADaiAGOgAAQQAhAwwDCyAGIAMgA0GcqsEAEM8BAAsgBEEUNgIUIAEgBEEUahCwASEDDAELIAggAyADQZyqwQAQzwEACyAEQSBqJAAgA0UNDgwNCyACKAIAIANGBEAgAkHgl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpBIjoAAAwLCyACKAIAIANGBEAgAkHwl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpB3AA6AAAMCgsgAigCACADRgRAIAJBgJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQS86AAAMCQsgAigCACADRgRAIAJBkJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQg6AAAMCAsgAigCACADRgRAIAJBoJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQw6AAAMBwsgAigCACADRgRAIAJBsJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQo6AAAMBgsgAigCACADRgRAIAJBwJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQ06AAAMBQsgAigCACADRgRAIAJB0JjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQk6AAAMBAsgAyAEIAZBsKHBABDPAQALIAcoAgwhAwwDCyAHQQQ2AhQgACABIAdBFGoQpAEMBgsgBCAGQYChwQAQsQEACwwBCwsgAEECNgIAIAAgAzYCBAwCCyAAIAM2AgggACABNgIEIABBADYCAAwBCyAAIAM2AgggACABNgIEIABBATYCAAsgB0EgaiQAC68QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQbu3wABBARBEIQIMAgsCQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIGTwRAIAAoAhAiAkUNASACQZK3wABBEBBERQ0BDAcLIAAgBEEBaiIBNgIIIAVBCGogAiAEai0AACIDEM0BIAUoAggiBwRAIAAoAhAiAEUNCCAAIAcgBSgCDBBEIQIMCQsgACAAKAIMQQFqIgc2AgwgB0H1A08EQCAAKAIQIgIEQCAC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AgBBlObBAEGU5sEAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LAn9BjObBACgCACICQQEgAEEDdnQiA3FFBEBBjObBACACIANyNgIAIABB+AFxQYTkwQBqIgAMAQsgAEH4AXEiAkGE5MEAaiEAIAJBjOTBAGooAgALIQIgACABNgIIIAIgATYCDCABIAA2AgwgASACNgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQbTmwQBBtObBACgCAEEBayIANgIAIAANAUH848EAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbTmwQBB/x8gASABQf8fTRs2AgAPC0H848EAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQbTmwQBB/x8gBCAEQf8fTRs2AgAgAiADTw0AQazmwQBBfzYCAAsL2AkBBH8jAEFAaiICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOGAECAwQFBgcICQoLDA0ODxAREhMUFRYXGAALIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAhAQwYCwJAAkACQAJAIAAtAARBAWsOAwECAwALIAIgACgCCDYCBEEUEBgiAEUNGyAAQRBqQc3UwQAoAAA2AAAgAEG91MEA/QAAAP0LAAAgAkEUNgIQIAIgADYCDCACQRQ2AgggAiACQQRqrUKAgICAgAeENwMgIAIgAkEIaq1CgICAgJAHhDcDGCABKAIAIAEoAgQgAkICNwI0IAJBAzYCLCACQYDYwQA2AiggAiACQRhqNgIwIAJBKGoQSSEBIAIoAggiAEUNGiACKAIMIgRBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0cIANBACAFIABBJ2pLGw0dIAQQLgwaCyACIAAtAAVBAnQiACgC+NxB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/AoAAAsgACACIANqNgIIQQALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBECACACIAIoAgggAigCDCgCGBECACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALTwECfyAAKAIEIQIgACgCACEDAkAgACgCCCIALQAARQ0AIANBurPAAEEEIAIoAgwRAABFDQBBAQ8LIAAgAUEKRjoAACADIAEgAigCEBEBAAtKAQJ/IAAgACgCBCIDIAJrNgIEIAAgACgCACACIANLciIENgIAQQEhAyAEBH8gAwUgACgCCCIAKAIAIAEgAiAAKAIEKAIMEQAACwtIAQF/AkAgAUHhAGsiAUH/AXFBGUsEQEEAIQEMAQsgAUECdEH8B3EiAigCwNtBIQEgAigC2NpBIQILIAAgAjYCBCAAIAE2AgALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQ2QEAC8kCAAJAIAAgAk0EQCAAIAFNIAEgAktyDQEjAEEwayICJAAgAiABNgIEIAIgADYCACACQQI2AgwgAkG0pMAANgIIIAJCAjcCFCACIAJBBGqtQoCAgIAQhDcDKCACIAKtQoCAgIAQhDcDICACIAJBIGo2AhAgAkEIaiADENkBAAsjAEEwayIBJAAgASACNgIEIAEgADYCACABQQI2AgwgAUHgo8AANgIIIAFCAjcCFCABIAFBBGqtQoCAgIAQhDcDKCABIAGtQoCAgIAQhDcDICABIAFBIGo2AhAgAUEIaiADENkBAAsjAEEwayIAJAAgACACNgIEIAAgATYCACAAQQI2AgwgAEGApMAANgIIIABCAjcCFCAAIABBBGqtQoCAgIAQhDcDKCAAIACtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIaiADENkBAAs3AAJ/IARBAXEEQCAFuxCOAgwBC0GBCEGACCABLQAAGwshBCACIANBBhBLIAQQ6gEgAEEANgIACzgBAX8jAEEQayICJAAgAkEIaiAAIAAoAgAoAgQRAgAgAigCCCABIAIoAgwoAhARAQAgAkEQaiQACzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQEARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQAACzwBAn8gASgCBCECIAEoAgAhA0EIEBgiAUUEQAALIAEgAjYCBCABIAM2AgAgAEGI2cEANgIEIAAgATYCAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakHEscAAIANBDGpBxLHAACACQai0wAAQbwALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBxJXAADYCCCABQgQ3AhAgAUEIaiAAENkBAAuUBQIHfwF7EGUiEiAKJgECfyMAQdAAayIOJAAgDkKAgICAwAA3AgQgDkEANgIMIA4gDUEARzoALCAOQYCAgPwDNgIoIA5CgICA/IOAgMA/NwIgIA4gDDgCHCAOIAs4AhggDkKAgICAgICAwD83AhBBrOLBACgCAEUEQBBNCwJAAkACQAJAQbDiwQAoAgBFBEBBsOLBAEF/NgIAAn8gCUUEQEEAIQ1BBAwBC0G84sEAKAIAIRFBuOLBACgCACETIAP9EyAE/SABIRVBACENA0AgEiUBIA1BAnQgDUGAgAQgCSANayIPIA9BgIAETxsiD2oiDUECdBAHIQoQZSIQIAomASAPQQJ0Ig8gEUsNAyAOIBAlARAIIhQ2AjAgDiAPNgI0IA8gFEcNBiATIA8gECUBEAkgDiACOAJAIA4gATgCPCAOIAA4AjggEyAPIA5BBGogDkE4aiAVIAUgBiAHIAggDkEQahAkIBBBhAhPBEAgEBC3AQsgCSANSw0AC0Gw4sEAKAIAQQFqIQ8gDigCDCENIA4oAggLIQlBsOLBACAPNgIAIA0QCiEKEGUiDyAKJgEgDyUBEAshECAOIA02AjQgDiAQNgIwIA0gEEcNBCAPJQEgCSANEAwgDigCBCINBEAgCUEEaygCACIQQXhxIhEgDUECdCINQQRBCCAQQQNxIhAbakkNAyAQQQAgESANQSdqSxsNBCAJEC4LIBJBhAhPBEAgEhC3AQsgDkHQAGokACAPDAULQfCSwAAQqwIAC0EAIA8gEUH4k8AAEM8BAAtBqNnBAEEuQdjZwQAQzgEAC0Ho2cEAQS5BmNrBABDOAQALIA5BADYCOCAOQTBqIA5BNGogDkE4ahDUAQALIgklASAJELcBC8ECAQR/IwBBEGsiASQAQdjiwQAtAABBA0cEQCABQQE6AA8gAUEPaiECIwBBIGsiACQAAkACQAJAAkACQAJAAkACQAJAQdjiwQAtAABBAWsOAwQDAQALQdjiwQBBAjoAACACLQAAIAJBADoAAEUNBEHE5sEAKAIAQf////8HcQRAQbzmwQAoAgANBgtByObBACgCAA0BQdjiwQBBAzoAAEHM5sEAQQE2AgALIABBIGokAAwGCwALIABBADYCGCAAQQE2AgwgAEGM1cEANgIIDAMLIABBADYCGCAAQQE2AgwgAEGsgMAANgIIDAILQeCSwAAQngIACyAAQQA2AhggAEEBNgIMIABBvNfBADYCCCAAQgQ3AhAgAEEIakHE18EAENkBAAsgAEIENwIQIABBCGpBqJPAABDZAQALCyABQRBqJAALLQACQCADaUEBRyABQYCAgIB4IANrS3JFBEAgACABIAMgAhA0IgANAQsACyAAC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABB7NbBACABKAIEIAEoAggiAC0ACCAALQAJEJIBAAsgACADNgIEIAAgAjYCACAAQdDWwQAgASgCBCABKAIIIgAtAAggAC0ACRCSAQALqQICAX8BbwJ/IwBBMGsiDSQAQaziwQAoAgBFBEAQTQsCQEGw4sEAKAIARQRAQbDiwQBBfzYCAEHU4sEAQQA2AgAgDSAMQQBHOgAgIA1BgICA/AM2AhwgDUKAgID8g4CAwD83AhQgDSALOAIQIA0gCjgCDCANQoCAgICAgIDAPzcCBCAJQQJ0IglBvOLBACgCACIMSw0BQbjiwQAoAgAgDSACOAIsIA0gATgCKCANIAA4AiQgCUHM4sEAIA1BJGogA/0TIAT9IAEgBSAGIAcgCCANQQRqECRB0OLBACgCAEHU4sEAKAIAEO8BQbDiwQBBsOLBACgCAEEBajYCACANQTBqJAAMAgtB8JLAABCrAgALQQAgCSAMQeiTwAAQzwEACyIJJQEgCRC3AQvUVQMefwR+AXwjAEEQayIaJAAQZSIbIAAmASMAQYAIayIBJAACQAJAAkACQAJA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CyABQZ+4wABBBBBECx4AIABFBEAQrwIACyAAIAIgAyAEIAUgASgCEBERAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQEQsACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARBwALHAAgAEUEQBCvAgALIAAgAiADIAQgASgCEBEyAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQETMACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARNAALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAwALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAAALFAAgASABIAAgACABXRsgACAAXBsLHAEBbyAAJQEgASUBIAEQtwEgAiUBIAIQtwEQAgsYACAARQRAEK8CAAsgACACIAEoAhARAQALHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsfAEG55sEALQAARQRAQbnmwQBBAToAAAsgAEEBNgIACxcAIAAoAgAgASAAKAIEQQxqKAIAEQEACxYBAW8gACABEBQhAhBlIgAgAiYBIAALFgEBbyAAIAEQFSECEGUiACACJgEgAAsWAQFvIAAgARAWIQIQZSIAIAImASAACxkAIAEoAgBBkKTBAEEFIAEoAgQoAgwRAAALDgAgAARAAAsgARDVAQALEwAgASgCBBogAEHclcAAIAEQSQsQACACKAIEGiAAIAEgAhBJCxMAIAEoAgQaIABB8JfAACABEEkLEwAgASgCBBogAEH0lcAAIAEQSQsTACABKAIEGiAAQZSYwAAgARBJCxMAIAEoAgQaIABB4J7AACABEEkLEwAgASgCBBogAEHMv8AAIAEQSQsZACABKAIAQbG9wABBEiABKAIEKAIMEQAACxUAIAEgACgCACIAKAIAIAAoAgQQRAsTACABKAIEGiAAQeCiwQAgARBJCxYAIABBgMjBADYCBCAAIAFBHGo2AgALFgAgAEHEx8EANgIEIAAgAUEcajYCAAsQACAAQQRqED4gAEEcahBdCxkAIAEoAgBB0pfBAEEIIAEoAgQoAgwRAAALGQAgASgCAEGTlcEAQQMgASgCBCgCDBEAAAsZACABKAIAQcjDwQBBFyABKAIEKAIMEQAACxkAIAEoAgBB1MLBAEEUIAEoAgQoAgwRAAALGQAgASgCAEGsw8EAQQog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EGsiASQAIAFB3ZLAADYCDCABIABBB2o2AgggAUEIakHU18EAIAFBDGpB1NfBACAAQQhqQbzVwQAQbwALIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEGc1sEANgIIIABCBDcCECAAQQhqQaTWwQAQ2QEAC0Hc1cEAEJ4CAAsgAEEANgIYIABBATYCDCAAQYzVwQA2AgggAEIENwIQIABBCGpBzNXBABDZAQALQbjmwQBBADoAACAEQQM6AAALIABBIGokACAJKAIMIQMgAigCUEGAgIAEcSIEDQELIAMgCSgCECIASQ0CIAMgAGshAyAJKAIIIABBDGxqDAELIAkoAggLIQ8gAkGAgICAeDYCWCACQcjOwQApAwAiHzcCXCACIARBF3YiADoAZCACIAA6AHggAkEANgJ0IAJB0NjBADYCcCACIAJByABqNgJoIAIgAkHYAGo2AmwgA0UEQCAfpyEDIB9CIIinDAgLIA8gA0EMbGohGCACQZgBaiEVIAJBlwFqIRkDQAJAIA8oAggiAEUEQCACQQA2AogBIAIgAkHoAGo2AoQBIAJBAzYCkAEgAkECNgLQASACQYQBaiACQZABaiACQdABakEAIAJBACACECUgAigChAEiASABKAIMQQFqNgIMRQ0BDA4LIA8oAgQiCSAAQSxsaiEaA0AgAkEANgKAASACIAJB6ABqNgJ8AkACQAJAAkAgCSgCIEGAgICAeEcEQCACQZABaiIAIAkoAiQiGyAJKAIoIhwQQUECIRcgAigCkAENAyAAIAIoApQBIgggAigCmAEiAUHMusAAQQYQIQJAAkAgAigCkAEEQCACKALMASEAIAIoAsgBIQQgAigCxAEhBiACKALAASEDIAIoArQBQX9GDQEgAkGEAWogFSADIAYgBCAAQQAQVgwCCwNAIAJB0AFqIAJBkAFqECsgAigC0AEiAEEBRg0ACwJAAkAgAEEBaw4CGQEACyACIAIpAtQBNwKIASACQQE2AoQBDAILIAJBADYChAEMAQsgAkGEAWogFSADIAYgBCAAQQEQVgsgAigChAFBAUcNAiACKAKIASIAQQZqIgRFDQECQCABIARNBEAgASAERw0BDAMLIAQgCGosAABBv39KDQILIAggASAEIAFB1LrAABCQAgALIAJBAzYCkAEMAwsgASAIaiEHIAQgCGohAwNAAkAg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IAMMBgsCQCACKAJYIgBBgICAgHhHBEAgAEUNAiACKAJcIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIABqSQ0FIAFFIAQgAEEnak1yDQEMBgsgAi0AXEEDRw0BIAIoAmAiAygCACEAIANBBGooAgAiASgCACIEBEAgACAEEQQACyABKAIEIgEEQCAAQQRrKAIAIgRBeHEiBkEEQQggBEEDcSIEGyABakkNBSAEQQAgBiABQSdqSxsNBiAAEC4LIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0EIABFDQAgAUE0Tw0FCyADEC4LQYijwQBBNyACQd8BakGMlsAAQcCjwQAQnwEACwALQdC4wABBPSACQd8BakHAuMAAQei5wAAQnwEAC0Go2cEAQS5B2NnBABDOAQALQejZwQBBLkGY2sEAEM4BAAsLCAAgACUBEAQLDABB9LPAAEEyEBEACwcAEBIQ1wELBABBAQsEAEEACwIACwub3wE+AEGAgMAAC5UTT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAAABAAKgAAAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9sZWdhY3kucnMAc3BhcmstcnMvc3JjL3JheWNhc3QucnMAbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9pbXBscy5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2Vycm9yLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9sYXp5X2xvY2sucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExNy9zcmMvZXh0ZXJucmVmLnJzAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9zcGxhdF9lbmNvZGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2RlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAGxpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS41L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL3JlYWQucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNi9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjk0L3NyYy9saWIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAAAALwUQAFMAAACcAAAAMgAAAEUDEABPAAAALwIAACYAAAA+AAAADAAAAAQAAAA/AAAAQAAAAEEAQaCTwAALlQEBAAAAQgAAANQHEABtAAAAlQAAAA4AAABtZXRhY2h1bmtzU3RhcnQAwAcQABMAAABPAAAAIgAAAMAHEAATAAAATgAAACAAAADABxAAEwAAADoAAAAgAAAAwAcQABMAAABvAAAAKAAAAGMAEAAXAAAALAAAABsAAABjABAAFwAAABYAAAAbAAAA5wMQABsAAADoAQAAFwBBwJTAAAvJAQEAAABDAAAAYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGRpZCBub3QAAHsAEAAYAAAAigIAAA4AAABjYXBhY2l0eSBvdmVyZmxvdwAAALAKEAARAAAA/AYQACAAAAAqAgAAEQAAAEQAAAAMAAAABAAAAEUAAABGAAAARwAAAD4AAAAMAAAABAAAAD8AAABAAAAASABBlJbAAAs1AQAAAEIAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobikAAAIAQdKWwAALAQUAQdyWwAALzQEgAACoICAgICAgIAoKQ2F1c2VkIGJ5OgCUZhAAAQAAAAoKc3RhY2sgYmFja3RyYWNlOlN0YWNrIGJhY2t0cmFjZToKAI4LEAARAAAAlAAQAFwAAAA2AAAAHwAAAJQAEABcAAAAPAAAABsAAABiYWNrdHJhY2UgY2FwdHVyZSBmYWlsZWThARAAXgAAAGcEAAAOAAAAAAAAABAAAAAEAAAASQAAAEoAAABLAAAACgpTdGFjazoKCgAAPgAAAAwAAAAEAAAAPwAAAEAAAABMAEG0mMAAC8cHAQAAAEIAAAAAcAAHAC0BAQECAQIBAUgLMBUQAWUHAgYCAgEEIwEeG1sLOgkJARgEAQkBAwEFKwM7CSoYASA3AQEBBAgEAQMHCgIdAToBAQECBAgBCQEKAhoBAgI5AQQCBAICAwMBHgIDAQsCOQEEBQECBAEUAhYGAQE6AQECAQQIAQcDCgIeATsBAQEMAQkBKAEDATcBAQMFAwEEBwILAh0BOgECAgEBAwMBBAcCCwIcAjkCAQECBAgBCQEKAh0BSAEEAQIDAQEIAVEBAgcMCGIBAgkLB0kCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAQADAAQcAx0CHgJAAgEHCAECCwkBLQMBAXUCIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCATAfMQQwCgQDJgkMAiAEAgY4AQECAwEBBTgIAgKYAwENAQcEAQYBAwLGQAABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCwEBLAMwAQIEAgICASQBQwYCAgICDAEIAS8BMwEBAwICBQIBASoCCAHuAQIBBAEAAQAQEBAAAgAB4gGVBQADAQIFBCgDBAGlAgAEQQUAAk8ERgsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkBAQgEAgFfAwIEBgECAZ0BAwgVAjkCAQEBAQwBCQEOBwMFQwECBgEBAgEBAwQDAQEOAlUIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECCGUBAQECBAEFAAkBAvUBCgQEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQIABwEGAQFSFgIHAQIBAnoGAwEBAgEHAQFIAgMBAQEAAgsCNAUFAxcBAAEGDwAMAwMABTsHAAE/BFEBCwIAAgAuAhcABQMGCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFZAGgBwABPQQABP4CAAdtBwBggPAAABYGEAAbAAAArwoAACYAAAAWBhAAGwAAALgKAAAaAAAAMDEyMzQ1Njc4OUFCQ0RFRiwKAAAAAAAADAAAAAQAAABNAAAATgAAAE8AAAAgewoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBvaDAAAszAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwQEBAQEAEH7oMAAC8IXWy4uLl1iZWdpbiA8PSBlbmQgKCA8PSApIHdoZW4gc2xpY2luZyBgAACAEBAADgAAAI4QEAAEAAAAkhAQABAAAAD7VRAAAQAAAGJ5dGUgaW5kZXggIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSAgKGJ5dGVzICkgb2YgYADEEBAACwAAAM8QEAAmAAAA9RAQAAgAAAD9EBAABgAAAPtVEAABAAAAIGlzIG91dCBvZiBib3VuZHMgb2YgYAAAxBAQAAsAAAAsERAAFgAAAPtVEAABAAAA1AIQAB8AAABnBgAAFQAAANQCEAAfAAAAlQYAABUAAADUAhAAHwAAAJYGAAAVAAAA1AIQAB8AAAB0BQAAKAAAANQCEAAfAAAAdAUAABIAAAByYW5nZSBzdGFydCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggrBEQABIAAAC+ERAAIgAAAHJhbmdlIGVuZCBpbmRleCDwERAAEAAAAL4REAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAEBIQABYAAAAmEhAADQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAAAMAAIMEIACRBWAAXROgABIXIB8MIGAf7ywgKyowoCtvpmAsAqjgLB774C0A/iA2nv9gNv0B4TYBCiE3JA3hN6sOYTkvGOE5MBzhSvMe4U5ANKFSHmHhU/BqYVRPb+FUnbxhVQDPYVZl0aFWANohVwDgoViu4iFa7OThW9DoYVwgAO5c8AF/XQAGAQEDAQQCBQcHAggICQIKBQsCDgQQARECEgUTHBQBFQIXAhkNHAUdCB8BJAFqBGsCrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5wToAu4g8AT4AvoE+wEMJzs+Tk+Pnp6fe4uTlqKyuoaxBgcJNj0+VvPQ0QQUGDY3Vld/qq6vvTXgEoeJjp4EDQ4REikxNDpFRklKTk9kZYqMjY+2wcPExsvWXLa3GxwHCAoLFBc2OTqoqdjZCTeQkagHCjs+ZmmPkhFvX7/u71pi9Pz/U1Samy4vJyhVnaCho6SnqK26vMQGCwwVHTo/RVGmp8zNoAcZGiIlPj/n7O//xcYEICMlJigzODpISkxQU1VWWFpcXmBjZWZrc3h9f4qkqq+wwNCur25v3d6TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsFRAQOKoCqBiQEJAQoCDQLTgM0DIE3CRYKCBg7RTkDYwgJMBYFIQMbBQFAOARLBS8ECgcJB0AgJwQMCTYDOgUaBwQMB1BJNzMNMwcuCAoGJgMdCAKA0FIQAzcsCCoWGiYcFBcJTgQkCUQNGQcKBkgIJwl1C0I+KgY7BQoGUQYBBRADBQtZCAIdYh5ICAqApl4iRQsKBg0TOgYKBhQcLAQXgLk8ZFMMSAkKRkUbSAhTDUkHCoC2Ig4KBkYKHQNHSTcDDggKBjkHCoE2GQc7Ax1VAQ8yDYObZnULgMSKTGMNhDAQFgqPmwWCR5q5OobGgjkHKgRcBiYKRgooBROBsDqAxltlSwQ5BxFABQsCDpf4CITWKQqi54EzDwEdBg4ECIGMiQRrBQ0DCQcQj2CA+gaBtExHCXQ8gPYKcwhwFUZ6FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqA1isEAYHggPcpTAQKBAKDEURMPYDCPAYBBFUFGzQCgQ4sBGQMVgqArjgdDSwECQcCDgaAmoPYBBEDDQN3BF8GDAQBDwwEOAgKBigILAQCPoFUDB0DCgU4BxwGCQeA+oQGAAEDBQUGBgIHBggHCREKHAsZDBoNEA4MDwQQAxISEwkWARcEGAEZAxoHGwEcAh8WIAMrAy0LLgEwBDECMgGnBKkCqgSrCPoC+wX9Av4D/wmteHmLjaIwV1iLjJAc3Q4PS0z7/C4vP1xdX+KEjY6RkqmxurvFxsnK3uTl/wAEERIpMTQ3Ojs9SUpdhI6SqbG0urvGys7P5OUABA0OERIpMTQ6O0VGSUpeZGWEkZudyc7PDREpOjtFSVdbXF5fZGWNkam0urvFyd/k5fANEUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc9vf+/4Btcd7fDh9ubxwdX31+rq9Nu7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHWWJi4vp6+3v8fP19+aAECXmDCPH87P0tTO/05PWlsHCA8QJy/u725vNz0/QkWQkVNndcjJ0NHY2ef+/wAgXyKC3wSCRAgbBAYRgawOgKsFHwiBHAMZCAEELwQ0BAcDAQcGBxEKUA8SB1UHAwQcCgkDCAMHAwIDAwMMBAUDCwYBDhUFTgcbB1cHAgYXDFAEQwMtAwEEEQYPDDoEHSVfIG0EaiWAyAWCsAMaBoL9A1kHFgkYCRQMFAxqBgoGGgZZBysFRgosBAwEAQMxCywEGgYLA4CsBgoGLzGA9Ag8Aw8DPgU4CCsFgv8RGAgvES0DIQ8hD4CMBIKaFgsViJQFLwU7BwIOGAmAviJ0DIDWGoEQBYDhCfKeAzcJgVwUgLgIgN0VOwMKBjgIRggMBnQLHgNaBFkJgIMYHAoWCUwEgIoGq6QMFwQxoQSB2iYHDAUFgKYQgfUHASAqBkwEgI0EgL4DGwMPDQAAAIoEEAAlAAAAGgAAADYAAACKBBAAJQAAAAoAAAArAAAAAAAAAAQAAAAEAAAAUAAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADUGBAAIAAAAPQYEAASAAAAPT1hc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAABoZEAAQAAAAKhkQABcAAABBGRAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAAAaGRAAEAAAAGQZEAAQAAAAdBkQAAkAAABBGRAACQAAAC4uUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkICAgIEhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3cAAL4ZEAAcAAAA6wUQACoAAAAlAAAAKAAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAADWCBAAXAAAAIU1AAABAAAAMAAAADMJEAAqAAAAHgEAADEAAAAzCRAAKgAAADQBAABHAAAAMwkQACoAAAAxAQAAFgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHN0cjo6ZnJvbV91dGY4KCkgPSAgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgIGNoYXJzIHdlcmUgZm91bmRsGhAAOQAAAKUaEAAEAAAAqRoQACIAAADLGhAAEQAAADMJEAAqAAAAXAEAABoAAABib29sY2hhcnN0cigpaThpMTZpMzJpNjRpMTI4aXNpemV1OHUxNnUxMjhmNjQhXy4uLgAAMwkQACoAAACKAAAADQAAADMJEAAqAAAAvwEAAB8AAAAzCRAAKgAAAB4CAAAeAAAAMwkQACoAAAAjAgAAIgAAADMJEAAqAAAAJAIAACUAAABbXXtpbnZhbGlkIHN5bnRheH17cmVjdXJzaW9uIGxpbWl0IHJlYWNoZWR9Pzo6Ojp7Y2xvc3VyZXNoaW0jfTwgYXMgPiYgbXV0ICpjb25zdCA7ICgsZHluICArICBpcyBDdW5zYWZlIGV4dGVybiAiMwkQACoAAADUAwAALQAAACIgLWZuKCAtPiBmYWxzZXRydWV7IHsgIH0gPSAweAAAMwkQACoAAADtBAAALQBByLjAAAvLAwEAAABRAAAAYGZtdDo6RXJyb3JgcyBzaG91bGQgYmUgaW1wb3NzaWJsZSB3aXRob3V0IGEgYGZtdDo6Rm9ybWF0dGVyYAAAADMJEAAqAAAAhwIAABEAAAAnZm9yPD4gLi49IHwgIW51bGxfX1IAAAAzCRAAKgAAADIAAAATAAAAMwkQACoAAAAvAAAAEwAAADMJEAAqAAAAKwAAABMAAAAzCRAAKgAAAEsAAAAOAAAAMwkQACoAAABaAAAAKAAAADQAEAAuAAAAZgAAABwAAABfWk4ANAAQAC4AAAA9AAAACwAAADQAEAAuAAAAOgAAAAsAAAA0ABAALgAAADYAAAALAAAALmxsdm0uAABCCBAAKwAAAGIAAAAbAAAAQggQACsAAABpAAAAEwAAAPQCEABQAAAApgAAAAUAAACkAhAATwAAAOUFAAAUAAAApAIQAE8AAADlBQAAIQAAAKQCEABPAAAA2QUAACEAAAAwMTIzNDU2Nzg5YWJjZGVmAAAAAAAAAAABAAAAUgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWV7c2l6ZSBsaW1pdCByZWFjaGVkfQBBnLzAAAuwBQEAAABTAAAAYGZtdDo6RXJyb3JgIGZyb20gYFNpemVMaW1pdGVkRm10QWRhcHRlcmAgd2FzIGRpc2NhcmRlZABCCBAAKwAAAFMBAAAeAAAAcHVueWNvZGV7RW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVyb1BhcnNlSW50RXJyb3JraW5kU2l6ZUxpbWl0RXhoYXVzdGVkADQAEAAuAAAAbwAAACcAAAA0ABAALgAAAHAAAAAdAAAANAAQAC4AAAByAAAAIQAAADQAEAAuAAAAcwAAABoAAAA0ABAALgAAAH4AAAAdAAAANAAQAC4AAAC0AAAAJgAAADQAEAAuAAAAtQAAACEAAAA0ABAALgAAAIoAAABJAAAANAAQAC4AAACLAAAAHwAAADQAEAAuAAAAiwAAAC8AAABAAAAANAAQAC4AAACdAAAANQAAADQAEAAuAAAAggAAACwAAAA0ABAALgAAAIQAAAAlAAAALgAAADQAEAAuAAAAhwAAACUAAAAAAAAAAQAAAAEAAABUAAAANAAQAC4AAAByAAAASAAAAAAAAAAMAAAABAAAAFUAAABWAAAAVwAAAKQCEABPAAAAaQQAACQAAACkAhAATwAAAM4BAAA3AAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAQd/BwAALARAAQe/BwAALARQAQf/BwAALARkAQY7CwAALAkAfAEGewsAACwKIEwBBrsLAAAsCahgAQb3CwAALA4CEHgBBzcLAAAsD0BITAEHdwsAACwOE1xcAQe3CwAALA2XNHQBB/MLAAAsEIF+gEgBBjMPAAAsE6HZIFwBBnMPAAAsEopQaHQBBq8PAAAsFQOWcMBIAQbvDwAALBZAexLwWAEHLw8AACwU0JvVrHABB2sPAAAsGgOA3ecMRAEHqw8AACwag2IVXNBYAQfrDwAALBshOZ23BGwBBisTAAAsGPZFg5FgRAEGZxMAACwdAjLV4Ha8VAEGpxMAACwdQ7+LW5BobAEG5xMAAC/glktVNBs/wEAAAAAAAAAAAgPZK4ccCLRUAAAAAAAAAACC0ndl5Q3gaAAAAAAAAAACUkAIoLCqLEAAAAAAAAAAAuTQDMrf0rRQAAAAAAAAAQOcBhP7kcdkZAAAAAAAAAIgwgRIfL+cnEAAAAAAAAACqfCHX5vrgMRQAAAAAAACA1NvpjKA5WT4ZAAAAAAAAoMlSJLAIiO+NHwAAAAAAAAS+sxZuBbW1uBMAAAAAAACFrWCcyUYi46YYAAAAAABA5th4A3zY6pvQHgAAAAAA6I+HK4JNx3JhQhMAAAAAAOJzabbiIHnP+RIYAAAAAIDa0ANkG2lXQ7gXHgAAAACQiGKCHrGhFirTzhIAAAAAtCr7ImYdSpz0h4IXAAAAAGH1uau/pFzD8SljHQAAAKBcOVTL9+YZGjf6XRIAAADIs0cpvrVgoODEePUWAAAAuqCZsy3jeMgY9tayHAAAQHQEQJD8jUt9z1nG7xEAAFCRBVC0e3GeXEPwt2sWAACk9QZkodoNxjNU7KUGHACAhlmE3qSoyFugtLMnhBEAIOhvJRbO0rpyyKGgMeUVACjiy66bgYdpjzrKCH5eGwBZbT9NAbH0oZlkfsUOGxFAr0iPoEHdcQrA/d120mEVENsaswiSVA4NMH2VFEe6GurI8G9F2/QoCD5u3WxstBAk++zLFhIyM4rNyRSIh+EU7TnofpyW/r/sQPwZaukZGjQkUc8hHv/3k6g9UOIxUBBBbSVDquX+9bgSTeRaPmQUksju0xSffjNnV2Cd8U19GbZ66gjaRl4AQW24BG6h3B+yjJJFSOw6oEhE88Lk5OkT3i/3VlqnSchaFbDzHV7kGNb7tOwwEVx6sRqccKV1HR9lHfGTvop57K6QYWaHaXITv2TtOG7tl6fa9Pk/6QNPGO+9KMfJ6H1REXL4j+PEYh61dnkcfrHu0kpH+zkOu/0SYtSXo91dqocdGXrI0Sm9F3vJfQxV9ZTpZJ+YOkZ0rB3tnc4nVRn9EZ9jn+SryIsSaEXCcapffNaGPMfd1rouF8LWMg6VdxuMqAs5lYxp+hw5xt8ovSqRV0mnQ933gRwSyLcXc2x1da0bkZTUdaKjFrql3Y/H0tKYYrW5SROLTByUh+q5vMODn10RFA7s1q8ReSll6Ku0ZAe1FZkRp8wbFtdzfuLW4T1JIlv/1dC/ohtmCI9NJq3GbfWYv4Xit0URgMry4G9YOMkyfy8n2yWXFSB9L9mLboZ7/1778FHv/Bo0rr1nFwU0rV8bnTaTFd4QwRmtQV0GgZg3YkQE+JoVFTJgGJL0R6F+xXpVBbYBWxofPE/b+Mwkb7tsVcMR4XgQJwsjEjcA7krqxyo0VhmXFPDNq9ZEgKnd5Hk1wavfvBm2YCsGK/CJCi9swVjLCxYQ5Di2xzVsLM06x/Euvo4bFB3HozlDh3eACTmuum1yIhnkuAwIFGmV4EvHWSkJD2sfjvMHhaxhXWyPHNi5ZemiE3LwSaYXunRHsyNOKL+jixiPbNyPnehRGaCsYfKujK4e2cPpeWIx0w/kC31X7RctE880ZBi7/ccT3U5crehd+BcDQn3eKf25WJRis9hidfYdQkkOKzo+dLecHXDHXQm6EpLb0bXITVHlAyVMObWLaBd3UkbjOqGl3kQun4eirkIdivMLzsSEJwvrfMOUJa1JEm3wjgH2ZfHNJVz0+W4Y3BaIrPKBc79tQS9zcbiKHpMc1as3MaiX5Ij950azFvPbEcqWhT2SvR3r/KEYYNzvUhZ9/ObM9izlJXzKHnjTq+cbzl0QQBo8r5eNPhMrZMtwEUJ1FNAgC5v9MA7YNT3+zBWSkhkE6c0BPb0RToPMPUAbm/uPorEgIUYWyxDSnyYIEYL6MwveaKnX2/2UxkcwShUj+QCOFcOTzVI9OrhZvJwatpvAeO1ZfMBTZiQTuPWhEKPC8NZocJuw6H/tFyZzyhRM86wMg0zC3OLf6J3vD/0ZDxjs59Fv+cnti7HC9Sk+EBMe52HGy3c86e5dM3O0TRSY5WD6t76Vi6NqNQCQIWEZ/h75+GUue25MxUIA9Gm5H1+zm7v//AzFT7spgDji0xM3oIKqPzxQtiMqNKDG2sgYREgjlU9L5KOsNEFIeBH7HisNNr0Rr27m68AoLevqXBN1kIMs1loK4CbxcvilJTQYk3Skt4vxDJhwrY92Dy9BHtzIxlL3FghfZswZqmm96BITe3gntRzK9n8/oBTE7KIX15lWceKjfPRfT8gZ9aeLHSYg1oZt5s34mzEdMPlIdxIwqIvoCGAB9wJ+JHw3GxUXPJKuIgu4wbSDnS1bBWLaHGUbrfUGE/lQcoL8WEN9CBI/YhizyFc35Q6jOy+UnIoWz3re37othZ7Siwo7uUMtHMEM68uUPBOjY5fmxFNKnBHxz+X+uQvYizw9ILboXAMW7kOffqgOzq6LTKjjIjSEG3WKI08pyUBN1y9JzpWgMhESbeyic/uQIM1720G7SH8VVoini1A6tWjAWlIS6hrfGja1SFdyRHFBuHhzS9JwyxCD4hrtjpXNUeZWUN4GTf4UJJthqPL6QOafbOSVSOA9GvcAPanXnOjv48OuXS2sZhA0QYyTDcTi69x0GrU4V4AUgVFv+BB12yYUEmHiBm2gGfGSRZsqKUmYTKt8TSREBBCt9xZCdXNbvh/W22AtVQUUmLWcklJQ8q2nyxK5eKoGGf/iQzdn5G6ZkX5X5xZVSB/fbYqCwE7l/xqvllAuNY0TVwkto3Ci3r/hWrzkeYJwGK1L+MsMS9YvmnHrXRijjB5ML3v/5+7lXQAnszrv5RcTH/tZ/6FqX3XA8F8Ja9/dF+d5MH9KRbeS8Oy3y0VX1R0wTH6PTouyWxb0Up+LVqUSPN9dMyIun/IbsSeHLqxOFwtXNcCq+UbvYp3xKDpXIh1nViG4ClyM1V0Cl1mEdjUSAawpZg1z70r1wvxvJdTCFgEXtL/QT6udsvP7yy6JcxxgjtB34hGLok94fT+9NcgR+bHEFVvWLYtj1lyPLEM6FnfeNdvxS/lt/As0s/fTyBsKqwEpd8+7xH2HANB6hF0RzRVC81TD6jVdqQCEmeW0FUCbEjAqdGWDtNMA5f8eIhsIoQtemmgf0lCEIO9fU/UQSomO9cBCpwZlpejqN6gyFZ0r8jJxE1FIvs6i5UVSfxpCW9e/Jqwy7TbBha9rk48QEjLNbzBXf6iEMWebRnizFJd+wIv8LJ/S5f1AQlhW4BkeT1jXHXyjo6+eaCn3NSwQ5mIuTSVbjIxbxsLzdEM3FJ/7eaDuca9v8nezMFIURRmHephIak6bC+9V4LxmWZYflExfbQIRQWe1NQw24Pe9E7oftwhDVRHBIkOPQ9h1rRio5+TKk6pVcesTc1RO09geyRDPXpyK1SZz7Mf0EIRHE/vUgnZD7Yrwj+f5MRVlGRg6iiNUlKit7HNheH5avh8eZDaWtFyJ7HPoPAuP+NbTEv3Du+Gzq+eQIgzOsrbMiBf9tCraoJYhNSuPgV/k/2odHrFaiCT+NAF7+bC77t9iEmVdcaqtPYLB2TedauqX+xa/tA0VGc3iMdCFRAXlfboc95AorS/ALR+i00ojr470ETW1cpg7MPmmiogd7FqycRaCYo9+Sny3UK3qJKfxHg4ckZ0Zj66tclKsEncIV9OIEfYE4DIaWQ9nV9eUyiwI6xUzBpi/YC/TQC0NOv03ymUb4AO/d5z9g0g8SET+Yp4fEdjErpUD/aRaS1rVvfuFZxUOdhp7RDxOMd6wSq16Z8EayYnwzKrl0N6Krk6srOC4EDusLIAVH4WWLVpi19cY5xRK1zfg2mYm/LjwOs0N3yAajuYizEgAmJ1z1kSgaItUEDKgK/9aAP6EEAxWyEKuaRQ+iPa+cYA9phSPa3rTGYQZTiq0Lo7gzM/ZcgZZSCDlH3CaMN1YDOAhyAekNy007xMNwXwUbw9YKroJjYU4AesYUPGb2UoT7rQoTPCmhsElH9J2AcgOzBRxmS9WKPSYdxOG1AF6Ev9ZzX+7azIxf1UYqEmCGNd+sMBfqgZ//d5qHgluUW9GT27Yeypkb17LAhOLySULGOOJzho1PQs2fsMX7jvvDd5bLIJhggyOw120HXWFtchquVvxfNHHOJq6kBLS5uJ6xaeyLdzF+cZA6TQXhqCb2bZRHzlTN7j4kCMCHVREAUgSk7MDlCJzmzpWIRJplQHa1negBDnrT0LJq6kWw/qBkMyVyEUH5uOSuxZUHLo8UdqfXZ2LxG/OOzWOtBHoi+XQB7WErrULworCsSEW4+4exUniJRqjjnItMx6qG01VMxturVfwJZln/N9SShGhKgCiyZhtbG9/gfuX55wVSTWACvz+iEdL32H6fSEEG04hkIZdn7UMjyt9vO6U4hChKTToNAfjz3J2nGsqOhsVCjRBIgLJ24MPlIMGtQhiGobAaFWhXWmyiTwSJHFFfRCn8MKqCbUDH6zLFm3NlpwU0axzFUyixCaXflzIgLzDGQNMaI1v5Tp4Hs85fdBVGhADX8Jwy55JFuZCiJxE6yAUxPbyTH4G3JufU6rDFSYpGXa0L+AdCNOCh+iUNJtvcx/J0B2sEuXDsVQR3QDBJagT/EQlV1feNN6pVRRBMS+SGDuW7iztFcJVFGtZkf26th7lHRU8tE2Ztezi13reNDITXmUaSyGh/+Kn240ZFsL+F7b+4J1pib/bkVLxn5ty/h0xn6wC4rVXKZvT9kOhB78S/sZXg1qjrfOBiPSUicluF724LSQxDJlwoqox+ut7Sh12k5y2nqdfhqUKX3xzjU4SVLhDZIaR9+dOzXZb0DDiFmmmVP3ndfWhooBUcgS9mhwB6FT+sGk5pWXQdMcituARAiLqPR3Ehw5/BFJ5q+NYFoKqZI0ktSnSnoWmV5Yc7xuR6l7YNhFaQ4MTyPbdcXURNqV2joSVMBRkGHp0Vc7SFYNOFLLlujwZfZ6Y0eqBRxsSsUyPz/TFLw5j/8IysQwRVt0fcwNyt7vRO79zf91PFazU50+ETqUqxgqvUN/Uoxrr5PCxElGn2rtmbZILZaYQJh5tXlclUdFqwAh3Tv7PFLBlCDatbqWFhfDKFOL9AxqOP8VBLGWHc1PW/kytfkIQcY82Unc+aVDoiz6gWB5TFE4zxCYVjoNk4i5OyO7lZxkiQHVwmnGk/Zq6YXpq38EfFUhJhgDHht6gFH2MoivZExqa26fAeCgWyVmcL4t2zxihgNLR8JayWztwg/stVAMfZJAjg1aeTxklJjK9nBRiE3507CPshaNfrq9+7MOZOhidkecsZ2eM95lbnuc0QEkeArsQfKDAtzpA+cIQIcjtEsPpFJvIsGVJkLfzVCk6qRczJNrB+hy/W3SlMKqziJMdoFYouRxyV7loZ15KcDV8EkhscuejTq3nQgH2XMxCGxdaB0/hTKKYoZOBM3R/E+IcmGTRDHBl/0T8MKCoL0wNEr69BRDMPj9WOz3IkjufkBYuLQcUfw7PK4pMencKxzQcPXyEbA9pYVvWb6yKZvygEUybpUdTwznyy4tXLYA7CRYfAo8ZKDTI7r5urThgiosbU2H5D5kgPVU3ZWwjfDY3Eai591O/aIwqhX5HLBsEhRUSqPUo74IvdSZeWfchReYaC4mZedWxPQnY2pc6NevPEE7r/9dKHo0LjtE9iQLmAxUi5v+N3WVwjvFFjSuD30Qa1e+/eKo/Bvm2Szj7sQtrEMrr7xaVz0e3pF4Gep7OhRS95qtcesMZ5U32hxhGQqcZNnDreSwaMK/w+VTPa4kIEENMZpi3IPzabDgqw8arChRU339+5Si7EYjG9HO4Vg0ZKtcf3h7zKRYq+PGQZqxQH3rm00rzN9pNGjuXGsBrkhMZ4Igd8MVQ4eAJPSGwBncYHxjrJGz3pBlZTIwpXMiUHhPvEpejGgewt6/3mTn9HBPYqtd8TOEInKWbdQCIPOQXjpUNnJ8ZCwOPApMAqkvdHXl9iMED8OZhmeFbQEpPqhLXnOqxBKxguv/ZctAc41QXDURl3gXX+Kh/kI8E5BsqHYhK/6pjhpvJT7rZgm5ROhIqHb+V/GcCvOMokCPK5cgWdOQuu/sBA6scM3SsPB97HMlO/VQ94eHq8Z/I64XzzBF7ojyqjFmaZe7HumZnMEAWGsvL1O/vAP/peWlAgTzQG/Be/+T1lWA/MuxByNAlYhGsNj9ec7s4zz5nUvpEr7oVVwTPNVDqBoMOAec4FlspG7ZioSFyUuQRqWCQ4+3Y+RBkuwmqDmddVtN4dFwpTzgVPSqMVNLA9CsIl5Gz82KGGmaa13SD+HgbZf46UNj9kxAAgQ1SpDZXYv69SWRO/bgUQOGQZk0E7fp9LVz9oTznGciMGmCwItS8bpxZPuWFMBD6LyF4XCsJbIoD8I1epzwU+HspljN2CwdtBGwxNtFLGfbas3vAU85IiAXHvYPFnh/aaFBNWPSALXVjnFZyO8MTEIOkYG4x4XhSfEPsTgq0GAEAQb/qwAALtjggmpmZmZmZmZmZmZmZmZmZGRWuR+F6FK5H4XoUrkfhehTeJAaBlUOLbOf7qfHSTWIQltQJaCJseHqlLEMc6+I2GqtDboYb8PlhhPBo44i1+BQiNlg4SfPHtDaN7bWg98YQaiONwA5SpodXSK+8mvLXGohP12alQbif3zmMMOKOeRUHphIfUQEt5rKU1iboCy4RpAlRy4Forta3ur3X2d98G+o6p6I07fHeX5VkeeF//RW7yIXo9vAnfxkR6i2BmZcR+A3WQL60DGXCgXZJaMIlHJNx3jOYkHDqAZsroYabhBZDwX4p4KbzIZsVVueerwMSNzUxD83XhWkrvInYl7LSHPmQWj/X3zchiZbURkb1Dhf6c0jMReZf56CrQ9LRXXISXYYNejw9ZqU0rNK2T8mDHbGe15Rjlx5RXSNCkgyhnBfBS3ndgt9+2n1Pmw4KtOMSaKxbYtGYZCqW5V4XECA5HlPw4oGn4LbuRFGyEkCzLRipJk/OUk2SWGqnjqiZwlcTQaR+sLd7UCeq2H3a9dDyHjRQZcBfyaZSuxPLrsRAwhiQpuqZTNTrDskPPPI2ms4TgAoRw61TebFBGWBQvvawH2cIdAKL3C3BZ0ezpv5eWhlSoCk1b7AkNIafwuv+S0gU2xnukPJZHZCef2iJZdY5EF8psLQdw/tMlzKnqNUj9hmyulldsTWWPaxbH7p36cQUKGLhfSdeq5dWSUz7koedEA2daMnYyavy8A56+LellRo+F7o6eqG8W1pyLi2ThEQVy0X7Lsgayq+ujouKQp0DEUUJkrGm99yySuR4qp37OBsEoUHB65J99W6DLVWxL8cVA7RnZ4l1ZMRYnFd3JyZsEdLspdjbiG1t9MYl8gs94BvbI+tGFge+isM4Hiij/UwWSbZV0hFs/m6cYEtTTzHXEQ6K77ZPE5exYGdFhRiCixylob/4cg+sJxq5ajetAdYWHk6ZYMJyVrnhYFUsJM5EEpUWws0DHlf1Nc67E23jOh2rqwELAxisKivYL3aKT2IXVok0bwLgvLtVE/PEbgy1Eomo7bHQzMeS7x641Ep67h0HuleOQArT2/JLkxBv+/EXBsjfcQDVqHz1bw/aWPwnE9YMZukzu6f6u0yyKY5gph4R14SHKfxSlcmjjlQLGoUYDqzQ0rrJqKoHg9h2b66dE+OsGh5e3NrdpdHAV7KwYh9PikhLS7BIflFBmqyOwBsZ2aHT1dVZbcvazeFWpTMWFHuB3HcRe1c84tfnq+rCERAqz2BZgl7yxjYmpqyqBLYZu6WAR2gY9WvFUetWVZ2RFJaEAAbteSoj0aci3919dBBWBzSj4Y/d0YEM0TGW/FMaRWz26Bpz5Kc0Paf0RP0PFZ5W+FPiKB1TXZdSXWqX2RBiV425A9th6y7yUJUQv/Ua6EWkx89ITrxYW9rdpmWRFSBrg2zZ03FjreLhFx8eQRHNEZ+tKIYcn0gEA/NkY5sbC9sYvlNrsOUGnTWPHekVFqIVR8sPifPqa0qRcuQgqxE3vHF4TNu4REaqG4RtAUUcX2PBxtYVxwMFVUkDvpqdFhnpzWtF3jg2N3cHaf6uFxLBQRZGomPBVlhYcg6XsfIczmer0YEcAd95E/VxEo4oF6XsVUHOFjR/YdyQwQ7YhhJuR1Y1fSQgZQLH52jkjKQdJTl49zAdgOoBbLkgHde2F4T6LPnzsJm7NCNhTRes+BI590coU05cX1Q4aBXyrFoeLizTuXULfX9DYFNEW4pIGFgj3Mf31TCZzxmpNnw7bRMm0vlyjIm0jrKPDvH5KxUfuEEuj6MHKnIopgv0x7zdGPqavqVPObvBhh7WXAaX5BP29zAJGcJenNcw8PrWJNQf+F9aBxRo5Ul5jSYv34N2GWDm4QUQIFFuxwpSv+XPXhQahYHRDIDa8QVvDpmE2UsQ9dRoghQAxE/W5OP0oPUSGit37QGqmWnZEbcc97P32xS8xYoBiBTurXSSsMVc+a8QLAneaKbtfElU6oBvlCizGiTU5FO4V8o6EFWav3YgXBWDdh1DYHk7YnOqrv9egBYRnr3I0Wb1K524ELEyyzNXG39kbUFSxLx9YA30jqJc3xXMtopn22n9yuY9w9hOfX8R34p3csUPL6vXLwWO5C7/G4DVklsEc/KIrIxqPh2/ZRZmREJJ0Cj101Y9VZhK/+oRo6ADQk1BiLlXlbvzEDKrHOnmAmjXzTlheXf8wkBb7xZUUgIgeXFh5y35yWjNFVkShlCdmY61aKV8W3Z0FVZbHdKmSuE+kSBR/RXF9t1EfBcOH6Ia/0BNp8pEN5Kx0MkSSstp92TOrgsRblhQT7QPHjs87sVQ2Is8p/F5cz+QDBjJyfE32nkJyoX0x8IyQD0T20Lpv/bCqKlvugyet2bIHuObuswrz1MhJpVwfixSoBiCSZVwiXKpGrjdJmXwdLMTnXWIGg+EdfeMLz4I54eFHxdeoHtyNpFfCiaYBuyfNxnf5BmWW/hAGdWERgXwfywUTOpHq6/GAOEQNwXRjJkjEEfdP0VMpGfO5yTVtEeP0hkGscyd1ulS2B+33cOfcqgUOCcKS0Xu23kZLH5pGcKGEFnYqRGi418pj0YwD482cRp6E7ungRyzuqVr89jYXicVL6mV7JrjKGJRiY+t4EvsEBd17+D3OA6d6A5Mr5qsExt5Klkaky3YsFNy1iXiVqkVLlVHSA++eY3cwd63gUVUEXy7C9p+lo8VlJyXjM8IuhuXL9YU/xGmd3aw39ZybS4WeYzeQ/+nUfmR87J49b2+EY6t/dL+PxzCHOy3WiJjZBzYimRCMjOwARfwXxW1tbYWRqKDm47CWQGsWebdkMQrEqMDOV8XBPbOrMKj/BrUEh2DnC1MrGlecr2bHMpIQ0IXnOOK1olUGPX94hYIB2mbEsYFq70PVI3uL2vxDNh0xR0FayL+cnbXvowiwXBGKtEXBLxOyyjFEv/WTmeNa7sNE6D5fXh0O1HLJH7YexJffB5NYf75KckNCbcxrfxBf2MYCoHLlCHU16DFJyTKNMyCE3fOeFTPub9nbwxtQyGtNx/5cS3dpZTMH1lwis9NV/kYx/S9fVHd1n9686E/Pqz6EwvuL8noLr7/w7icMv159x/WJPOgIL8xZjb6FsL9x5IZeB1cGhrMJ7he+6sBy2x1FGDkfHuuCVOTGMm8Z6LwXRCZoJTFsELrHvR0lD9q5y8a4eZ2BCcCieVcKt0yiB/zFOfrK52FzqC3sO6wKKB/whDY399hb0oBWbRKTnQzzNAarUzm5yXVzeApoj6Qj9ZzFfHWUYZRd3FN7rTL2XJ4KRHoV+nW6L7oe7BUrI+EjXUbIBMh31MyuvxZ3YkMaqT3FYBC5xhDKMhjrkpucO7pkhFmatgnOA0NBhcRShoXQx4c6yGt7CykPWsSdG57Epx+FlZOV73wHP6I21xY/EHj/hEjSiVitJSWQV9hjWA2Bcsc6dQd6Cmqq2d/5z1N+NAIF4fdFyC7IVa5Mrlk1/lzbRKllYxmK2kjwurBOvLC7HsdHd7WHom6gs67NGJbAleWFxgY30sHYjWl/Pa04gGs3hJZ82R52JyIO5Txhzc2EzEe4fWDx0ZKbfzcWgbGkUInGBorAwafblcwF6+e0aebUhOQ3tE8y30lGiUYMRymkuoeQOWnMDz+HUi3eVrjhKi7GABRhsDJMUvTxceugp1TyRPNtKPNQukRUgmmF9HIhagfpJAcPgIh23QHuN9AOp5TGVANSssBtBX3BWAZZ/vkQhSnCggJmyne+DezelL8gzUQ190MqJFCMI5ZuCq3kznvGRNLCiAOAo0+4fnu+EJhvxQPPAiAPps9ZefHWPqbGpkQ5CwNAGT4yG6lDI6Q+ZCOGuojpJnp+dOLt6NxQGHaPhW7HFDhupSpPPmC9JkaFf8QK2Gzm8S6dceO0SDDXbsxG4kaKRZqlcTSCw7naLFiwRWhe7oRiHfQ228+H4cngmcRm5JdHEC/gCzmY5g+P9DYG0l15EkzzDO9UbZGZf8MRxbUXVBuj9aPyqdeBVHMcNIRU8mz40tXGUTZ/W5OreeDHKk69oIJeUcD4ZclpYrszxa6+8Ro1GBsz4B5hOpu8D8SKvkHDoc0euWa9dMQSxozHSKUOQtskC5R4ipD2ggVXBe1qcfVvKaL2oFVz+HTELAShw/ZIi5x35CcVeUCU4HmHWwMFE+LWkzaFt4dz6ia6xeKo6mlonujrnh+saUg4iITqQWpompf0n0nl7WimjaeHlTRIIKIf9uXH6z3ThWSfhh3p4DOBmZ8eUwjxtjddJgT8QsB5ApwLY+ta6MnllRaH1rWAFCiWSQMvu+1H3gQFRkVRZrZgRQdcP7y97L52RAUd2p7FJtDF8D+W8YoLnsNEPJDku3EBfLMyiwKDn0rrxnCnA6+0DdbCm+9oXHKIowUzuM+y3P5SAiMl7Qn1RtwELCfZHjsWw7arCVUDFX5TBrAf1Bg8K8+e723qdYQYQoVM2ZAgPO/y5WXLO7ecxrVEFJwzWZSZqzvWEewZLmQ7hrbWaS4DoUjJkds87b6posVSa62k9jQgh5sIylflYU8EXWwih/0Gp79rDio/u4IlBv3WdWyKa+xl72ThpglBxAWLHt39boljqyX3J4THmymERPFWCIrCX16vy3+uMl5PRx2aq1O76D9YcxXy2ChlJcWxe69C1ka/ucJEwnnTd0SEjqx/EVbXWOm3IQO2K/76hzIjTBrr0ochbDQPhPzYiIX1NcmvPJu49Am2st1wuiBEoaMpMbqF5+01ylGiZ2nnB1rcFAF798YKkbuBKEXhrAXifPZnSWz4FRri51NeZ7zEnRS9mJv682HeEUvfCiXUh5dqF6CvyIL08Zqv8mGEkIY5LlLaMwbPA+fiP860g5oE20peUB6LGAYmNqYkYPkDB8kIZQzyFazRhPiEw42HdcYtk1DKaB4jzjctNykkUrfE4qva6hmJ39aYCFhoYKqyx+iv++564UyFU20TbSbu28ZTpmMYYnRjqo9kKT24mJZFAzh1hqhp9juytm2K0+CRxBFmyRem3InfhH2it+xAwwaBEkdGEn1hf4N+DsZW2nWFNCgShPUXZ7LpPkvFHyHqxBNARFSU8lj3zpc5rn5C6wacWfadA+hHBkvsB77+m9WFcFSSCrZgLCtJcBLLy/zERE0UQ2qjjTnFQnNErJ+608bxA1x7j5dH6ttCg8oMonZFZ2kjYtlFxm8VwgMICjUehGUOnwSPPL0LFkN4MzZufcbQ5WW2/z0w/DgPbNw4cdfFgMREhaXXTZaGsv1JoE55hEE6BzwJPxWkJDeIgs1j6Mc0OzjjB0w39mmS4KiXT/pFtojgz2xWX/h66LOTrEyVBJcOTgvtcLLaHnRfeROhFMd4y1gv1011lOUp2RQcgN2FxyL5mWxKnipduy2po7PxBL6RNdvtaomD/ETi9d9sgceYmrfvyoiUj8nQ2+sZCgGGE6If5mITttlH5zyiVAgOBNKDcwodErFb2WT6g+0M8AeO6QJh/ahalmEDyJz9sKZGJa2B2z45+6tNtm09ZE1rhNWVwzg8z9+SST1uiKDIn0fRazWTPb/ZNTpkJXoaOgwGdGJeD34/4ND7nNE7VMgJxR0oZOXxsycz/GPA/EPTR8QUgK5JaRHYX8cswXof67LGQ81x7fp0k3MFlzR7P/xohTZkNJfIQ8LPRKw2iMzW4IQwedQmWhLq2FQsyoGhStqGme5QBS6oiJOQFxVa2q8IRVTlADdlOhOC81JRLzuyecQUe0AyIfaFxJIqdPGSnYMG9q9AKBsSEbbbIfca9WRoxWvZM1MvQYFSYqf4+/dp08RsTriesgKCKhD/zjmL6ayG/Qu6Ps5ojlTaf+THvOEKBZd8uwv+7THdYf/D7L1A7oRLupH5pEh2SI//3+2ItNcHPJUBoVBgXq1Zf//keiosBb1Qzg3AQFixLcyM9uG7SYS7p/z8QFoNjpZhOuRpBULHYsZ9iebuV774Gm8dFARPBfWel6G4vp+L+eHY11AdJYSVpH91tD3l+Vx2ThizYa9HavayngNk3mEwXot6D3SyhdWFW8tcUJh0JrIioYxqAgTIiIYr05qaE2R2qo9T0B0Hui0efI+iFOk2q6IZD8AXRiHXWEo/2zc6a5YbVDMmX0TpJVoDWWuYKnkjUgaelwvH4NE7T23vrO6g3GgrmGw8hg2nYoxLDL2LjbB5r7nWfUT8GF3ghMdveSJm9eXP/buH1pOLDWpfcqDoa/f3zL4ixkVpVb3IP6hnOfyskzC+W8Uqh0S+bMxG0q5KI9wm5RZEN2VtsHstV5D9Q3lgMXtKBpK3l4BV17lNcSkHWcEi+0U1bEYAax+t8RpHX5S0Ai+ECK2Wpt5lyWhDy8wt7OnyRqBXhVJYay3TdlY8/jCH24Vm0tEB4Ejxtet4PWTNeYkESus0z6bBT1ZSTRWhiI9bhu8idzLFZ794G3DEQWCyvEVY6HjbxEY/rMkaUE3mzuOEdGb0n+1WWOGB3U1JcXFFhwO4w4zkRTp0dKQ91A3nngWCxw/j9p2unR1DcZALBj6EXjGMeWQJPftu0ijZ+BZwxwtBVu3QB0si8nTtR9NrgIXJAR8X819Vm/UDyvmcItoEgZtxphIyfB+7bIRPU4SdB2fvZ7gBqHAmFfCp/2kDpAX5spLTdKAAEd5m+zKUKXZEqJEeUgdzgDYjsWtRIEIKR6C0C1tF9gzEz/RV52a0yAYzqYkJHlG9qhlp6xKFXZNE32kOqCOPb10b6V6d4hW4h5kUJXmPjFkXYy3+8UGErUYt6aq68uNtkpwLJbRaw7EE1ekqhITFiQRGkfw6BIXoB/f6e4O3ESD2hRs81NC30wZgCG/2HydAuJDIylDaH89FDOBMnr9fWhONhxUz7kyMRC4zlCQlclASr3GuUspUegZxgunpnfUMwgx0sdvh9q5FGsJ7B7GdimgjQ7Tv9KulBDf26xko1dCAEkXuP8dfocaGeMj6rXfAc2gEmCZsTE5Fa61HIiRTM5wTXXmrSeO+hDiVZSmta3jGq+7cEkMfSob6HdDhcRX6XvyYo0HPZe7FYf5NQRqeYfJjrUKBmTfYhFxwrwGEI+ldeSId9ZsZdEbJzXKa6alt/fp05Kr8B1BFh/EobweHsZf7g8PVo2xzRFl0wJhZGOj/xazsYlIT3wcUdybTVAc6TLfKI7UBtnJFg59SXFz4yCPsiDYdgUUOxJ8Lg+ChQWbfurNWfE7Uysdyr6lAZ43r8vu10f0L9xVF6GYhDRL+VgJv6xsw4wWqxIwLjBmMzJ1MzJ1NjR1c2l6ZWV4cGxpY2l0IHBhbmljAGcGEABkAAAAJAkAABIAAAD7VRAAAQAAAPtVEAABAAAAYCBvciBgAAD7VRAAAQAAANBKEAAGAAAA+1UQAAEAAABvbmUgb2YgLCBib29sZWFuIGAAAPlKEAAJAAAA+1UQAAEAAABpbnRlZ2VyIGAAAAAUSxAACQAAAPtVEAABAAAAY2hhcmFjdGVyIGAAMEsQAAsAAAD7VRAAAQAAAHN0cmluZyAATEsQAAcAAABieXRlIGFycmF5T3B0aW9uIHZhbHVlbmV3dHlwZSBzdHJ1Y3RzZXF1ZW5jZW1hcGVudW11bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnRhIGJvb2xlYW51bml0YSBzdHJpbmdudWxsAAAyBxAAYgAAAHIDAAAZAAAAMgcQAGIAAABzAwAAGgAAADIHEABiAAAAdAMAABkAAAAyBxAAYgAAAHUDAAAZAAAAMgcQAGIAAAB2AwAAGQAAADIHEABiAAAAdwMAABkAAAAyBxAAYgAAAHgDAAAZAAAAMgcQAGIAAAB5AwAAGQAAADIHEABiAAAA1AMAABEAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MgcQAGIAAACzAQAAGgAAADIHEABiAAAAAAIAABMAAAAyBxAAYgAAAAUCAAAzAAAAMgcQAGIAAAAJAgAAPgAAADIHEABiAAAADwIAADoAAAAyBxAAYgAAAKsBAAA9AAAAMgcQAGIAAACmAQAARQAAACBhdCBsaW5lIAAAAEACEABjAAAA9wEAACEAAABAAhAAYwAAAPsBAAAMAAAAIGNvbHVtbiBAAhAAYwAAAAICAAAhAAAAQAIQAGMAAAALAgAAKgAAAEACEABjAAAADwIAACwAAABAAhAAYwAAABQCAAAJAAAAaW5mLWluZk5hTgAAPgAAAAwAAAAEAAAAPwAAAEAAAABYAEGAo8EAC/sHAQAAAEIAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5ALcDEABLAAAABQsAAA4AAACkAhAATwAAADwGAAAUAAAApAIQAE8AAAA8BgAAIQAAAKQCEABPAAAAMAYAABQAAACkAhAATwAAADAGAAAhAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAAAABFUhAABgAAAEtSEAAIAAAAU1IQAAoAAAD/axAAAQAAAGludmFsaWQgdHlwZTogAACAUhAADgAAABtWEAALAAAAaW52YWxpZCB2YWx1ZTogAKBSEAAPAAAAG1YQAAsAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFsaWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBhIG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8taW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJhaWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGltaXQgZXhjZWVkZWQBAAAAAAAAAOBQEAAJAAAADFEQAAgAAAAyBxAAYgAAAFwCAAATAAAAMgcQAGIAAABuAgAAGQAAAGZsb2F0aW5nIHBvaW50IGAsVRAAEAAAAPtVEAABAAAApAIQAE8AAAC9BAAAJAAAAG4IEABnAAAANQAAAA4AAAAAAAAA//////////9wVRAAQYirwQALgQIgY2FuJ3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBKYXZhU2NyaXB0IG51bWJlcgEAAAAAAAAAiFUQACwAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlbWlzc2luZyBmaWVsZCBgYOxVEAAPAAAA+1UQAAEAAABpbnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIAAADFYQAA8AAAAbVhAACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAAOFYQABEAAAD7VRAAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAAXFYQABEAAABtVhAADABBlK3BAAsFAQAAAFkAQaStwQALBQEAAABaAEG0rcEACyUBAAAAWwAAAM4EEABgAAAAoAQAACIAAADOBBAAYAAAAJYEAAAmAEHmrcEAC9kX8D8AAAAAAAAkQAAAAAAAAFlAAAAAAABAj0AAAAAAAIjDQAAAAAAAavhAAAAAAICELkEAAAAA0BJjQQAAAACE15dBAAAAAGXNzUEAAAAgX6ACQgAAAOh2SDdCAAAAopQabUIAAEDlnDCiQgAAkB7EvNZCAAA0JvVrDEMAgOA3ecNBQwCg2IVXNHZDAMhOZ23Bq0MAPZFg5FjhQ0CMtXgdrxVEUO/i1uQaS0SS1U0Gz/CARPZK4ccCLbVEtJ3ZeUN46kSRAigsKosgRTUDMrf0rVRFAoT+5HHZiUWBEh8v5yfARSHX5vrgMfRF6oygOVk+KUYksAiI741fRhduBbW1uJNGnMlGIuOmyEYDfNjqm9D+RoJNx3JhQjNH4yB5z/kSaEcbaVdDuBeeR7GhFirTztJHHUqc9IeCB0ilXMPxKWM9SOcZGjf6XXJIYaDgxHj1pkh5yBj21rLcSEx9z1nG7xFJnlxD8LdrRknGM1TspQZ8SVygtLMnhLFJc8ihoDHl5UmPOsoIfl4bSppkfsUOG1FKwP3ddtJhhUowfZUUR7q6Sj5u3WxstPBKzskUiIfhJEtB/Blq6RlaS6k9UOIxUJBLE03kWj5kxEtXYJ3xTX35S224BG6h3C9MRPPC5OTpY0wVsPMdXuSYTBuccKV1Hc9MkWFmh2lyA031+T/pA084TXL4j+PEYm5NR/s5Drv9ok0ZesjRKb3XTZ+YOkZ0rA1OZJ/kq8iLQk49x93Wui53Tgw5lYxp+qxOp0Pd94Ec4k6RlNR1oqMWT7W5SROLTExPERQO7NavgU8WmRGnzBu2T1v/1dC/outPmb+F4rdFIVB/LyfbJZdVUF/78FHv/IpQG502kxXewFBiRAT4mhX1UHtVBbYBWypRbVXDEeF4YFHIKjRWGZeUUXo1wavfvMlRbMFYywsWAFLH8S6+jhs0Ujmuum1yImlSx1kpCQ9rn1Id2Lll6aLTUiROKL+jiwhTrWHyroyuPlMMfVftFy1zU09crehd+KdTY7PYYnX23VMecMddCboSVCVMObWLaEdULp+Hoq5CfVR9w5QlrUmyVFz0+W4Y3OZUc3G4ih6THFXoRrMW89tRVaIYYNzvUoZVyh5406vnu1U/Eytky3DxVQ7YNT3+zCVWEk6DzD1AW1bLENKfJgiRVv6UxkcwSsVWPTq4Wbyc+lZmJBO49aEwV4DtFyZzymRX4Oid7w/9mVeMscL1KT7QV+9dM3O0TQRYazUAkCFhOVjFQgD0ablvWLspgDji06NYKjSgxtrI2Fg1QUh4EfsOWcEoLevqXENZ8XL4pSU0eFmtj3YPL0GuWcwZqmm96OJZP6AUxOyiF1pPyBn1p4tNWjIdMPlId4JafiR8NxsVt1qeLVsFYtrsWoL8WEN9CCJbozsvlJyKVluMCju5Qy2MW5fmxFNKnMFbPSC26FwD9ltNqOMiNIQrXDBJzpWgMmFcfNtBu0h/lVxbUhLqGt/KXHlzS9JwywBdV1DeBk3+NF1t5JVI4D1qXcSuXS2sZqBddRq1OFeA1F0SYeIGbaAJXqt8TSREBEBe1ttgLVUFdF7MErl4qgapXn9X5xZVSN9er5ZQLjWNE19bvOR5gnBIX3LrXRijjH5fJ7M67+UXs1/xXwlr393nX+23y0VX1R1g9FKfi1alUmCxJ4curE6HYJ3xKDpXIr1gApdZhHY18mDD/G8l1MImYfT7yy6Jc1xheH0/vTXIkWHWXI8sQzrGYQw0s/fTyPthhwDQeoRdMWKpAISZ5bRlYtQA5f8eIptihCDvX1P10GKl6Oo3qDIFY8+i5UVSfzpjwYWva5OPcGMyZ5tGeLOkY/5AQlhW4Nljn2gp9zUsEGTGwvN0QzdEZHizMFIURXlkVuC8ZlmWr2Q2DDbg973jZEOPQ9h1rRhlFHNUTtPYTmXsx/QQhEeDZej5MRVlGbhlYXh+Wr4f7mU9C4/41tMiZgzOsrbMiFdmj4Ff5P9qjWb5sLvu32LCZjidauqX+/ZmhkQF5X26LGfUSiOvjvRhZ4kd7FqycZZn6ySn8R4OzGcTdwhX04gBaNeUyiwI6zVoDTr9N8pla2hIRP5inh+haFrVvfuFZ9VosUqtemfBCmmvTqys4LhAaVpi19cY53Rp8TrNDd8gqmnWRKBoi1TgaQxWyEKuaRRqj2t60xmESWpzBllIIOV/agikNy0077NqCo2FOAHr6GpM8KaGwSUfazBWKPSYd1Nru2syMX9ViGuqBn/93mq+aypkb17LAvNrNT0LNn7DJ2yCDI7DXbRdbNHHOJq6kJJsxvnGQOk0x2w3uPiQIwL9bCNzmzpWITJt609CyaupZm3m45K7FlScbXDOOzWOtNFtDMKKwrEhBm6Pci0zHqo7bpln/N9SSnFuf4H7l+ecpW7fYfp9IQTbbix9vO6U4hBvdpxrKjobRW+Ugwa1CGJ6bz0SJHFFfbBvzBZtzZac5G9/XMiAvMMZcM85fdBVGlBwQ4icROsghHBUqsMVJim5cOmUNJtvc+9wEd0AwSWoI3FWFEExL5JYcWtZkf26to5x49d63jQyw3HcjRkWwv73cVPxn5ty/i1y1PZDoQe/YnKJ9JSJyW6Xcqsx+ut7Ss1yC198c41OAnPNdlvQMOI2c4FUcgS9mmxz0HTHIrbgoXMEUnmr41jWc4amV5Yc7wt0FMj23XF1QXQYenRVztJ1dJ6Y0eqBR6t0Y//CMrEM4XQ8v3N/3U8VdQuvUN/Uo0p1Z22SC2WmgHXACHdO/s+0dfHKFOL9A+p11v5MrX5CIHaMPqBYHlNUdi9OyO7lZ4l2u2F6at/Bv3YVfYyiK9nzdlqcL4t2zyh3cIP7LVQDX3cmMr2cFGKTd7B+7MOZOsh3XJ7nNEBJ/nf5whAhyO0yeLjzVCk6qWd4pTCqs4iTnXhnXkpwNXzSeAH2XMxCGwd5gjN0fxPiPHkxoKgvTA1yeT3IkjufkKZ5TXp3Csc03HlwrIpm/KAReoxXLYA7CUZ6b604YIqLe3plbCN8Njexen9HLBsEheV6Xln3IUXmGnvblzo1689Qe9I9iQLmA4V7Ro0rg99EuntMOPuxC2vwe18Gep7OhSR89ocYRkKnWXz6VM9riQiQfDgqw8arCsR8x/RzuFYN+Xz48ZBmrFAvfTuXGsBrkmN9Cj0hsAZ3mH1MjClcyJTOfbD3mTn9HAN+nHUAiDzkN34DkwCqS91tfuJbQEpPqqJ+2nLQHONU136QjwTkGyoNf7rZgm5ROkJ/KZAjyuXIdn8zdKw8H3usf6DI64XzzOF/AAAAAAAAAAABAAAAXAAAAHN0cnVjdCBSYWRNZXRhdmVyc2lvbnR5cGVjb3VudG1heFNobG9kVHJlZWNodW5rU2l6ZWFsbENodW5rQnl0ZXNjaHVua3NzcGxhdEVuY29kaW5nc2hDb2RlQ291bnRjb21tZW50c3RydWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50c/1gEAAfAAAAAAAAAAgAAAAEAAAAXQAAAHZhcmlhbnQgaWRlbnRpZmllcmdzcGxhdEZhEAAGAAAAc3RydWN0IFJhZENodW5rUmFuZ2VvZmZzZXRieXRlc2Jhc2VmaWxlbmFtZXN0cnVjdCBSYWRDaHVua1JhbmdlIHdpdGggNSBlbGVtZW50cwB/YRAAJAAAAGEgc2VxdWVuY2UAAPEAEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZ3JnYk1pbnJnYk1heGxuU2NhbGVNaW5sblNjYWxlTWF4c2gxTWF4c2gyTWF4c2gzTWF4bG9kT3BhY2l0eXN0cnVjdCBTZXRTcGxhdEVuY29kaW5nIHdpdGggOCBlbGVtZW50cwAAG2IQACcAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF52r7ln0aj9UHWvSGCBIp/fv/RdU8UjvBwCSevxkboy2u4q2M1b+Kp5RZJwg3YjwC9DMeBlfRG5Tdfwe0RkUxjSQICAgICAgICAgICAEHcxcEACwgCAgAAAAAAAgBBk8bBAAsBAgBBucbBAAsBAQBB1MbBAAsBAQBBtMfBAAv5Al4AAAAEAAAABAAAAF8AAABeAAAABAAAAAQAAABgAAAAXwAAALRjEABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAAAMAAAABAAAAGcAAABmAAAADAAAAAQAAABoAAAAZwAAAPBjEABpAAAAagAAAGMAAABpAAAAZQAAAGsAAAAgAAAABAAAAGwAAABrAAAAIAAAAAQAAABtAAAAbAAAACxkEABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAAoAAAABAAAAGwAAABzAAAAKAAAAAQAAABtAAAAbAAAAGhkEABuAAAAdAAAAHAAAABxAAAAcgAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAgAAAAIEAAAB7AAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRl3GQQADwAAACFARAAWwAAADUAAAASAEG4ysEACwUBAAAAggBByMrBAAsFAQAAAIMAQdjKwQALBQEAAACEAEHoysEACwUBAAAAhQBB+MrBAAsFAQAAAIYAQYjLwQALBQEAAACHAEGYy8EACwUBAAAAiABBqMvBAAt5AQAAAIkAAACwBBAAHQAAAJkAAAAUAAAAsAQQAB0AAABsAAAAFAAAALAEEAAdAAAAMwAAAB0AAACwBBAAHQAAADUAAAAdAAAAHQcQABQAAABgBQAANgAAAEludmFsaWQgUkFEIG1hZ2ljOiAweAAAAABmEAAVAAAAAgBBqszBAAsBCABBtMzBAAt1IAAA6W1dy9YsUOtjeEGmV3Ebi7n1Ky+JZFpnOv7tcjMv54x1AQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAACAAAOggICAgICAgICAgICAgYXQgOgAAAIhmEAABAAAACjogAAEAAAAAAAAAlWYQAAIAAAACAEGyzcEACwEEAEG8zcEACzEgAADoIC0gAAEAAAAAAAAAwGYQAAMAAAAgICAgICA8dW5rbm93bj4AAgAAAAAAAAACAEH4zcEAC50NIACA4O+/vQAyBhAANAAAAGcBAAAwAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybRBnEAAoAAAAJAAAAAAAAAACAAAAOGcQAGVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2Ug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"); - } - const imports = __wbg_get_imports(); - if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) { - module_or_path = fetch(module_or_path); +class NormalizedDepth extends Dyno { + constructor({ + z, + zNear, + zFar + }) { + super({ + inTypes: { z: "float", zNear: "float", zFar: "float" }, + outTypes: { depth: "float" }, + inputs: { z, zNear, zFar }, + statements: ({ inputs, outputs }) => [ + `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`, + `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "depth"); + } +} +class DebugColorHue extends Dyno { + constructor({ index }) { + super({ + inTypes: { index: "int" }, + outTypes: { color: "vec3" }, + inputs: { index }, + statements: ({ inputs, outputs }) => [ + `${outputs.color} = debugColorHue(uint(${inputs.index}));` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "color"); + } +} +const transformPos = (position, { + scale, + scales, + rotate, + translate +}) => { + return new TransformPosition({ position, scale, scales, rotate, translate }).outputs.position; +}; +const transformDir = (dir, { + scale, + scales, + rotate +}) => { + return new TransformDir({ dir, scale, scales, rotate }).outputs.dir; +}; +const transformQuat = (quaternion, { rotate }) => { + return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion; +}; +class TransformPosition extends Dyno { + constructor({ + position, + scale, + scales, + rotate, + translate + }) { + super({ + inTypes: { + position: "vec3", + scale: "float", + scales: "vec3", + rotate: "vec4", + translate: "vec3" + }, + outTypes: { position: "vec3" }, + inputs: { position, scale, scales, rotate, translate }, + statements: ({ inputs, outputs }) => { + const { position: position2 } = outputs; + if (!position2) { + return []; + } + const { scale: scale2, scales: scales2, rotate: rotate2, translate: translate2 } = inputs; + return [ + `${position2} = ${inputs.position ?? "vec3(0.0, 0.0, 0.0)"};`, + !scale2 ? null : `${position2} *= ${scale2};`, + !scales2 ? null : `${position2} *= ${scales2};`, + !rotate2 ? null : `${position2} = quatVec(${rotate2}, ${position2});`, + !translate2 ? null : `${position2} += ${translate2};` + ].filter(Boolean); + } + }); + } +} +class TransformDir extends Dyno { + constructor({ + dir, + scale, + scales, + rotate + }) { + super({ + inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, + outTypes: { dir: "vec3" }, + inputs: { dir, scale, scales, rotate }, + statements: ({ inputs, outputs }) => { + const { dir: dir2 } = outputs; + if (!dir2) { + return []; + } + const { scale: scale2, scales: scales2, rotate: rotate2 } = inputs; + return [ + `${dir2} = ${inputs.dir ?? "vec3(0.0, 0.0, 0.0)"};`, + !scale2 ? null : `${dir2} *= ${scale2};`, + !scales2 ? null : `${dir2} *= ${scales2};`, + !rotate2 ? null : `${dir2} = quatVec(${rotate2}, ${dir2});` + ].filter(Boolean); + } + }); + } +} +class TransformQuaternion extends Dyno { + constructor({ + quaternion, + rotate + }) { + super({ + inTypes: { quaternion: "vec4", rotate: "vec4" }, + outTypes: { quaternion: "vec4" }, + inputs: { quaternion, rotate }, + statements: ({ inputs, outputs }) => { + const { quaternion: quaternion2 } = outputs; + if (!quaternion2) { + return []; + } + return [ + `${quaternion2} = ${inputs.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, + !rotate ? null : `${quaternion2} = quatQuat(${inputs.rotate}, ${quaternion2});` + ].filter(Boolean); + } + }); + } +} +const dynoIf = () => { + throw new Error("Not implemented"); +}; +const dynoSwitch = () => { + throw new Error("Not implemented"); +}; +const dynoFor = () => { + throw new Error("Not implemented"); +}; +const comment = () => { + throw new Error("Not implemented"); +}; +const arrayIndex = () => { + throw new Error("Not implemented"); +}; +const arrayLength = () => { + throw new Error("Not implemented"); +}; +const textureSize = (texture2, lod) => new TextureSize({ texture: texture2, lod }); +const texture = (texture2, coord, bias) => new Texture({ texture: texture2, coord, bias }); +const texelFetch = (texture2, coord, lod) => new TexelFetch({ texture: texture2, coord, lod }); +class TextureSize extends Dyno { + constructor({ texture: texture2, lod }) { + const textureType = valType(texture2); + super({ + inTypes: { texture: textureType, lod: "int" }, + outTypes: { size: textureSizeType(textureType) }, + inputs: { texture: texture2, lod }, + statements: ({ inputs, outputs }) => [ + `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? "0"});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "size"); + } +} +class Texture extends Dyno { + constructor({ + texture: texture2, + coord, + bias + }) { + const textureType = valType(texture2); + super({ + inTypes: { + texture: textureType, + coord: textureCoordType(textureType), + bias: "float" + }, + outTypes: { sample: textureReturnType(textureType) }, + inputs: { texture: texture2, coord, bias }, + statements: ({ inputs, outputs }) => [ + `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : ""});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "sample"); + } +} +class TexelFetch extends Dyno { + constructor({ + texture: texture2, + coord, + lod + }) { + const textureType = valType(texture2); + super({ + inTypes: { + texture: textureType, + coord: textureSizeType(textureType), + lod: "int" + }, + outTypes: { texel: textureReturnType(textureType) }, + inputs: { texture: texture2, coord, lod }, + statements: ({ inputs, outputs }) => [ + `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? "0"});` + ] + }); + } + dynoOut() { + return new DynoOutput(this, "texel"); + } +} +function textureSizeType(textureType) { + switch (textureType) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DShadow": + case "samplerCubeShadow": + return "ivec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DArrayShadow": + return "ivec3"; + default: + throw new Error(`Invalid texture type: ${textureType}`); } - const { instance, module } = await __wbg_load(await module_or_path, imports); - return __wbg_finalize_init(instance); } +function textureCoordType(textureType) { + switch (textureType) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + return "vec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DShadow": + return "vec3"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "vec4"; + default: + throw new Error(`Invalid texture type: ${textureType}`); + } +} +function textureReturnType(textureType) { + switch (textureType) { + case "sampler2D": + case "sampler2DArray": + case "sampler3D": + case "samplerCube": + case "sampler2DShadow": + return "vec4"; + case "usampler2D": + case "usampler2DArray": + case "usampler3D": + case "usamplerCube": + return "uvec4"; + case "isampler2D": + case "isampler2DArray": + case "isampler3D": + case "isamplerCube": + return "ivec4"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "float"; + default: + throw new Error(`Invalid texture type: ${textureType}`); + } +} +const radians = (degrees2) => new Radians({ degrees: degrees2 }); +const degrees = (radians2) => new Degrees({ radians: radians2 }); +const sin = (radians2) => new Sin({ radians: radians2 }); +const cos = (radians2) => new Cos({ radians: radians2 }); +const tan = (radians2) => new Tan({ radians: radians2 }); +const asin = (sin2) => new Asin({ sin: sin2 }); +const acos = (cos2) => new Acos({ cos: cos2 }); +const atan = (tan2) => new Atan({ tan: tan2 }); +const atan2 = (y, x) => new Atan2({ y, x }); +const sinh = (x) => new Sinh({ x }); +const cosh = (x) => new Cosh({ x }); +const tanh = (x) => new Tanh({ x }); +const asinh = (x) => new Asinh({ x }); +const acosh = (x) => new Acosh({ x }); +const atanh = (x) => new Atanh({ x }); +class Radians extends UnaryOp { + constructor({ degrees: degrees2 }) { + super({ a: degrees2, outTypeFunc: (aType) => aType, outKey: "radians" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.radians} = radians(${inputs.a});` + ]; + } +} +class Degrees extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "degrees" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.degrees} = degrees(${inputs.a});` + ]; + } +} +class Sin extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "sin" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.sin} = sin(${inputs.a});` + ]; + } +} +class Cos extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "cos" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.cos} = cos(${inputs.a});` + ]; + } +} +class Tan extends UnaryOp { + constructor({ radians: radians2 }) { + super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "tan" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.tan} = tan(${inputs.a});` + ]; + } +} +class Asin extends UnaryOp { + constructor({ sin: sin2 }) { + super({ a: sin2, outTypeFunc: (aType) => aType, outKey: "asin" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.asin} = asin(${inputs.a});` + ]; + } +} +class Acos extends UnaryOp { + constructor({ cos: cos2 }) { + super({ a: cos2, outTypeFunc: (aType) => aType, outKey: "acos" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.acos} = acos(${inputs.a});` + ]; + } +} +class Atan extends UnaryOp { + constructor({ tan: tan2 }) { + super({ a: tan2, outTypeFunc: (aType) => aType, outKey: "atan" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atan} = atan(${inputs.a});` + ]; + } +} +class Atan2 extends BinaryOp { + constructor({ y, x }) { + super({ + a: y, + b: x, + outTypeFunc: (aType, bType) => aType, + outKey: "atan2" + }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});` + ]; + } +} +class Sinh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "sinh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.sinh} = sinh(${inputs.a});` + ]; + } +} +class Cosh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "cosh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.cosh} = cosh(${inputs.a});` + ]; + } +} +class Tanh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "tanh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.tanh} = tanh(${inputs.a});` + ]; + } +} +class Asinh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "asinh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.asinh} = asinh(${inputs.a});` + ]; + } +} +class Acosh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "acosh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.acosh} = acosh(${inputs.a});` + ]; + } +} +class Atanh extends UnaryOp { + constructor({ x }) { + super({ a: x, outTypeFunc: (aType) => aType, outKey: "atanh" }); + this.statements = ({ inputs, outputs }) => [ + `${outputs.atanh} = atanh(${inputs.a});` + ]; + } +} +const dyno = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Abs, + Acos, + Acosh, + Add, + All, + And, + Any, + Asin, + Asinh, + Atan, + Atan2, + Atanh, + BVec2, + BVec3, + BVec4, + BinaryOp, + Bool, + Ceil, + Clamp, + Combine, + CombineCovSplat, + CombineGsplat, + CompMult, + CompXor, + Compilation, + Cos, + Cosh, + CovSplat, + Cross, + DebugColorHue, + Degrees, + Determinant, + Distance, + Div, + Dot, + Dyno, + DynoBlock, + DynoBool, + DynoBvec2, + DynoBvec3, + DynoBvec4, + DynoConst, + DynoFloat, + DynoInt, + DynoIsampler2D, + DynoIsampler2DArray, + DynoIsampler3D, + DynoIsamplerCube, + DynoIvec2, + DynoIvec3, + DynoIvec4, + DynoLiteral, + DynoMat2, + DynoMat2x2, + DynoMat2x3, + DynoMat2x4, + DynoMat3, + DynoMat3x2, + DynoMat3x3, + DynoMat3x4, + DynoMat4, + DynoMat4x2, + DynoMat4x3, + DynoMat4x4, + DynoOutput, + DynoProgram, + DynoProgramTemplate, + DynoRemapIndex, + DynoSampler2D, + DynoSampler2DArray, + DynoSampler2DArrayShadow, + DynoSampler2DShadow, + DynoSampler3D, + DynoSamplerCube, + DynoSamplerCubeShadow, + DynoUint, + DynoUniform, + DynoUsampler2D, + DynoUsampler2DArray, + DynoUsampler3D, + DynoUsamplerCube, + DynoUvec2, + DynoUvec3, + DynoUvec4, + DynoValue, + DynoVec2, + DynoVec3, + DynoVec4, + Equal, + Exp, + Exp2, + ExtendVec, + FaceForward, + Float, + FloatBitsToInt, + FloatBitsToUint, + Floor, + Fract, + GreaterThan, + GreaterThanEqual, + Gsplat, + GsplatNormal, + GsplatToCovSplat, + Hash, + Hash2, + Hash3, + Hash4, + HashFloat, + HashVec2, + HashVec3, + HashVec4, + IMod, + IVec2, + IVec3, + IVec4, + Int, + IntBitsToFloat, + Inverse, + InverseSqrt, + IsInf, + IsNan, + Length, + LessThan, + LessThanEqual, + Log, + Log2, + Mat2, + Mat3, + Mat4, + Max, + Min, + Mix, + Mod, + Modf, + Mul, + Neg, + Normalize, + NormalizedDepth, + Not, + NotEqual, + NumCovSplats, + NumExtSplats, + NumPackedSplats, + Or, + Outer, + OutputCovSplat, + OutputExtCovSplat, + OutputExtendedSplat, + OutputPackedSplat, + OutputRgba8, + PackHalf2x16, + PackSnorm2x16, + PackUnorm2x16, + PagedSplatTexCoord, + PcgHash, + PcgMix, + PcgNext, + Pow, + ProjectH, + Radians, + ReadCovSplat, + ReadExtSplat, + ReadPackedSplat, + ReadPackedSplatRange, + ReflectVec, + RefractVec, + Round, + Select, + Shl, + Shr, + Sign, + SimpleCast, + Sin, + Sinh, + Smoothstep, + SplatTexCoord, + Split, + SplitCovSplat, + SplitGsplat, + Sqr, + Sqrt, + Step, + Sub, + Swizzle, + TCovSplats, + TExtSplats, + TPackedSplats, + Tan, + Tanh, + TexelFetch, + Texture, + TextureSize, + TransformDir, + TransformGsplat, + TransformPosition, + TransformQuaternion, + Transpose, + TrinaryOp, + Trunc, + UVec2, + UVec3, + UVec4, + Uint, + UintBitsToFloat, + UintToRgba8, + UnaryOp, + UnpackHalf2x16, + UnpackSnorm2x16, + UnpackUnorm2x16, + Vec2, + Vec3, + Vec4, + Xor, + abs, + acos, + acosh, + add, + all, + and, + any, + arrayIndex, + arrayLength, + asin, + asinh, + atan, + atan2, + atanh, + bool, + bvec2, + bvec3, + bvec4, + ceil, + clamp, + combine, + combineCovSplat, + combineGsplat, + comment, + compMult, + compXor, + cos, + cosh, + cross, + debugColorHue, + defineCovSplat, + defineExtSplats, + defineGsplat, + defineGsplatNormal, + definePackedSplats, + degrees, + determinant, + distance, + div, + dot, + dyno: dyno$1, + dynoBlock, + dynoBool, + dynoBvec2, + dynoBvec3, + dynoBvec4, + dynoConst, + dynoDeclare, + dynoFloat, + dynoFor, + dynoIf, + dynoInt, + dynoIsampler2D, + dynoIsampler2DArray, + dynoIsampler3D, + dynoIsamplerCube, + dynoIvec2, + dynoIvec3, + dynoIvec4, + dynoLiteral, + dynoMat2, + dynoMat2x2, + dynoMat2x3, + dynoMat2x4, + dynoMat3, + dynoMat3x2, + dynoMat3x3, + dynoMat3x4, + dynoMat4, + dynoMat4x2, + dynoMat4x3, + dynoMat4x4, + dynoSampler2D, + dynoSampler2DArray, + dynoSampler2DArrayShadow, + dynoSampler2DShadow, + dynoSampler3D, + dynoSamplerCube, + dynoSamplerCubeShadow, + dynoSwitch, + dynoUint, + dynoUsampler2D, + dynoUsampler2DArray, + dynoUsampler3D, + dynoUsamplerCube, + dynoUvec2, + dynoUvec3, + dynoUvec4, + dynoVec2, + dynoVec3, + dynoVec4, + equal, + exp, + exp2, + extendVec, + faceforward, + float, + floatBitsToInt, + floatBitsToUint, + floor, + fract, + greaterThan, + greaterThanEqual, + gsplatNormal, + gsplatToCovSplat, + hash, + hash2, + hash3, + hash4, + hashFloat, + hashVec2, + hashVec3, + hashVec4, + imod, + int, + intBitsToFloat, + inverse, + inversesqrt, + isAllFloatType, + isBoolType, + isFloatType, + isInf, + isIntType, + isMat2, + isMat3, + isMat4, + isMatFloatType, + isNan, + isScalarType, + isUintType, + isVector2Type, + isVector3Type, + isVector4Type, + isVectorType, + ivec2, + ivec3, + ivec4, + length, + lessThan, + lessThanEqual, + literalNegOne, + literalOne, + literalZero, + log, + log2, + mat2, + mat3, + mat4, + max, + min, + mix, + mod, + modf, + mul, + neg, + normalize, + normalizedDepth, + not, + notEqual, + numCovSplats, + numExtSplats, + numPackedSplats, + numberAsFloat, + numberAsInt, + numberAsUint, + or, + outer, + outputCovSplat, + outputCovSplatDepth, + outputExtCovSplat, + outputExtendedSplat, + outputPackedSplat, + outputRgba8, + outputSplatDepth, + packHalf2x16, + packSnorm2x16, + packUnorm2x16, + pagedSplatTexCoord, + pcgHash, + pcgMix, + pcgNext, + pow, + projectH, + radians, + readCovSplat, + readExtSplat, + readPackedSplat, + readPackedSplatRange, + reflectVec, + refractVec, + remapIndex, + round, + sameSizeIvec, + sameSizeUvec, + sameSizeVec, + select, + shl, + shr, + sign, + sin, + sinh, + smoothstep, + splatTexCoord, + split, + splitCovSplat, + splitGsplat, + sqr, + sqrt, + step, + sub, + swizzle, + tan, + tanh, + texelFetch, + texture, + textureSize, + transformDir, + transformGsplat, + transformPos, + transformQuat, + transpose, + trunc, + typeLiteral, + uint, + uintBitsToFloat, + uintToRgba8, + uniform, + unindent, + unindentLines, + unpackHalf2x16, + unpackSnorm2x16, + unpackUnorm2x16, + uvec2, + uvec3, + uvec4, + valType, + vec2, + vec3, + vec4, + vectorDim, + vectorElementType, + xor +}, Symbol.toStringTag, { value: "Module" })); var computeUvec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeUvec4_Vec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n \n target = uvec4(0u, 0u, 0u, 0u);\n\n \n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeUvec4x2_Vec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n \n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n \n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}"; var computeVec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}"; -var oldSplatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}"; -var oldSplatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n \n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n \n vSplatIndex = splatIndex;\n\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n \n \n \n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}"; -var splatDefines_default = "const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\nuint encodeQuatOctXy88R8(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n \n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\nvec4 decodeQuatOctXy88R8(uint encoded) {\n \n uint quantU = encoded & uint(0xFFu); \n uint quantV = (encoded >> 8u) & uint(0xFFu); \n uint angleInt = encoded >> 16u; \n\n \n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n \n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n \n uint quantU = encoded & uint(0x3FFu); \n uint quantV = (encoded >> 10u) & uint(0x3FFu); \n uint angleInt = encoded >> 20u; \n\n \n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n \n \n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n \n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n \n \n}\n\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\nvec3 quatVec(vec4 q, vec3 v) {\n \n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n \n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n \n float cosHalfTheta = dot(q1, q2);\n\n \n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n \n \n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n \n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n \n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n \n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n \n float hue = fract(float(i) * 0.61803398875);\n \n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); \n}"; -var splatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n \n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n \n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}"; -var splatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n \n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n \n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n \n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n \n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n \n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}"; +var splatDefines_default = "const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\nuint encodeQuatOctXy88R8(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n \n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\nvec4 decodeQuatOctXy88R8(uint encoded) {\n \n uint quantU = encoded & uint(0xFFu); \n uint quantV = (encoded >> 8u) & uint(0xFFu); \n uint angleInt = encoded >> 16u; \n\n \n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n \n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n \n uint quantU = encoded & uint(0x3FFu); \n uint quantV = (encoded >> 10u) & uint(0x3FFu); \n uint angleInt = encoded >> 20u; \n\n \n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n \n \n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n \n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n \n \n}\n\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\nvec3 quatVec(vec4 q, vec3 v) {\n \n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n \n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n \n float cosHalfTheta = dot(q1, q2);\n\n \n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n \n \n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n \n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n \n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n \n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n \n float hue = fract(float(i) * 0.61803398875);\n \n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); \n}"; +var splatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n \n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n \n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}"; +var splatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n \n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n \n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n \n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n \n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n \n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n \n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n \n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n \n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}"; let shaders = null; function getShaders() { if (!shaders) { THREE.ShaderChunk.splatDefines = splatDefines_default; shaders = { - oldSplatVertex: oldSplatVertex_default, - oldSplatFragment: oldSplatFragment_default, splatVertex: splatVertex_default, splatFragment: splatFragment_default, computeVec4Template: computeVec4_default, @@ -8161,287 +6897,68 @@ const _Readback = class _Readback { return Promise.all(promises).then(() => readback); } // Perform render operation to run the Rgba8Readback program - // but don't perform the readback yet. - render({ - reader, - count, - renderer - }) { - this.renderer = renderer || this.renderer; - if (!this.renderer) { - throw new Error("No renderer"); - } - this.ensureCapacity(count); - const { program, material } = this.prepareProgramMaterial(reader); - program.update(); - const renderState = this.saveRenderState(this.renderer); - this.process({ count, material }); - this.resetRenderState(this.renderer, renderState); - } - // Perform a readback of the render target, returning a buffer of the - // given type. - async readback({ - readback - }) { - if (!this.renderer) { - throw new Error("No renderer"); - } - const renderState = this.saveRenderState(this.renderer); - const promise = this.read({ readback }); - this.resetRenderState(this.renderer, renderState); - return promise; - } - // Perform a render and readback operation for the given Rgba8Readback, - // and readback buffer (call ensureBuffer first). - async renderReadback({ - reader, - count, - renderer, - readback - }) { - this.renderer = renderer || this.renderer; - if (!this.renderer) { - throw new Error("No renderer"); - } - this.ensureCapacity(count); - const { program, material } = this.prepareProgramMaterial(reader); - program.update(); - const renderState = this.saveRenderState(this.renderer); - this.process({ count, material }); - const promise = this.read({ readback }); - this.resetRenderState(this.renderer, renderState); - return promise; - } - getTexture() { - var _a2; - return (_a2 = this.target) == null ? void 0 : _a2.texture; - } -}; -_Readback.programTemplate = null; -_Readback.readbackProgram = /* @__PURE__ */ new WeakMap(); -_Readback.fullScreenQuad = new FullScreenQuad( - new THREE.RawShaderMaterial({ visible: false }) -); -let Readback = _Readback; -const _RgbaArray = class _RgbaArray { - constructor(options = {}) { - this.capacity = 0; - this.count = 0; - this.array = null; - this.readback = null; - this.source = null; - this.needsUpdate = true; - this.dyno = new DynoUniform({ - key: "rgbaArray", - type: TRgbaArray, - globals: () => [defineRgbaArray], - value: { - texture: _RgbaArray.getEmpty(), - count: 0 - }, - update: (value) => { - value.texture = this.getTexture(); - value.count = this.count; - return value; - } - }); - if (options.array) { - this.array = options.array; - const splatCount = Math.floor(this.array.length / 4); - this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - if (this.capacity > splatCount) { - this.array = new Uint8Array(this.capacity * 4); - this.array.set(options.array); - } - this.count = Math.min( - splatCount, - options.count ?? Number.POSITIVE_INFINITY - ); - } else { - this.capacity = options.capacity ?? 0; - this.count = 0; - } - } - // Free up resources - dispose() { - if (this.readback) { - this.readback.dispose(); - this.readback = null; - } - if (this.source) { - this.source.dispose(); - this.source = null; - } - } - // Ensure that our array is large enough to hold capacity RGBA8 values. - ensureCapacity(capacity) { - var _a2; - if (!this.array || capacity > (((_a2 = this.array) == null ? void 0 : _a2.length) ?? 0) / 4) { - this.capacity = getTextureSize(capacity).maxSplats; - const newArray2 = new Uint8Array(this.capacity * 4); - if (this.array) { - newArray2.set(this.array); - } - this.array = newArray2; - } - return this.array; - } - // Get the THREE.DataArrayTexture from either the readback or the source. - getTexture() { - var _a2; - let texture2 = (_a2 = this.readback) == null ? void 0 : _a2.getTexture(); - if (this.source || this.array) { - texture2 = this.maybeUpdateSource(); - } - return texture2 ?? _RgbaArray.getEmpty(); - } - // Create or get a THREE.DataArrayTexture from the data array. - maybeUpdateSource() { - if (!this.array) { - throw new Error("No array"); - } - if (this.needsUpdate || !this.source) { - this.needsUpdate = false; - if (this.source) { - const { width, height, depth } = this.source.image; - if (this.capacity !== width * height * depth) { - this.source.dispose(); - this.source = null; - } - } - if (!this.source) { - const { width, height, depth } = getTextureSize(this.capacity); - this.source = new THREE.DataArrayTexture( - this.array, - width, - height, - depth - ); - this.source.format = THREE.RGBAFormat; - this.source.type = THREE.UnsignedByteType; - this.source.internalFormat = "RGBA8"; - this.source.needsUpdate = true; - } else if (this.array.buffer !== this.source.image.data.buffer) { - this.source.image.data = new Uint8Array(this.array.buffer); - } - this.source.needsUpdate = true; - } - return this.source; - } - // Generate the RGBA8 values from a Rgba8Readback dyno program. + // but don't perform the readback yet. render({ reader, count, renderer }) { - if (!this.readback) { - this.readback = new Readback({ renderer }); + this.renderer = renderer || this.renderer; + if (!this.renderer) { + throw new Error("No renderer"); } - this.readback.render({ reader, count, renderer }); - this.capacity = this.readback.capacity; - this.count = this.readback.count; + this.ensureCapacity(count); + const { program, material } = this.prepareProgramMaterial(reader); + program.update(); + const renderState = this.saveRenderState(this.renderer); + this.process({ count, material }); + this.resetRenderState(this.renderer, renderState); } - // Extract the RGBA8 values from a PackedSplats collection. - fromPackedSplats({ - packedSplats, - base, - count, - renderer + // Perform a readback of the render target, returning a buffer of the + // given type. + async readback({ + readback }) { - const { dynoSplats, dynoBase, dynoCount, reader } = _RgbaArray.makeDynos(); - dynoSplats.packedSplats = packedSplats; - dynoBase.value = base; - dynoCount.value = count; - this.render({ reader, count, renderer }); - return this; - } - // Read back the RGBA8 values from the readback buffer. - async read() { - if (!this.readback) { - throw new Error("No readback"); - } - if (!this.array || this.array.length < this.count * 4) { - this.array = new Uint8Array(this.capacity * 4); - } - const result = await this.readback.readback({ readback: this.array }); - return result.subarray(0, this.count * 4); - } - async getArray() { - if (this.readback) { - return await this.read(); - } - if (this.array) { - return this.array; + if (!this.renderer) { + throw new Error("No renderer"); } - throw new Error("No array"); + const renderState = this.saveRenderState(this.renderer); + const promise = this.read({ readback }); + this.resetRenderState(this.renderer, renderState); + return promise; } - // Can be used where you need an uninitialized THREE.DataArrayTexture like - // a uniform you will update with the result of this.getTexture() later. - static getEmpty() { - if (!_RgbaArray.emptySource) { - const emptyArray = new Uint8Array(1 * 4); - _RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1); - _RgbaArray.emptySource.format = THREE.RGBAFormat; - _RgbaArray.emptySource.type = THREE.UnsignedByteType; - _RgbaArray.emptySource.internalFormat = "RGBA8"; - _RgbaArray.emptySource.needsUpdate = true; + // Perform a render and readback operation for the given Rgba8Readback, + // and readback buffer (call ensureBuffer first). + async renderReadback({ + reader, + count, + renderer, + readback + }) { + this.renderer = renderer || this.renderer; + if (!this.renderer) { + throw new Error("No renderer"); } - return _RgbaArray.emptySource; + this.ensureCapacity(count); + const { program, material } = this.prepareProgramMaterial(reader); + program.update(); + const renderState = this.saveRenderState(this.renderer); + this.process({ count, material }); + const promise = this.read({ readback }); + this.resetRenderState(this.renderer, renderState); + return promise; } - // Create a dyno program that can extract RGBA8 values from a PackedSplats - static makeDynos() { - if (!_RgbaArray.dynos) { - const dynoSplats = new DynoPackedSplats(); - const dynoBase = new DynoInt({ value: 0 }); - const dynoCount = new DynoInt({ value: 0 }); - const reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("index is undefined"); - } - index = add(index, dynoBase); - const gsplat = readPackedSplatRange( - dynoSplats, - index, - dynoBase, - dynoCount - ); - return { rgba8: splitGsplat(gsplat).outputs.rgba }; - } - ); - _RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader }; - } - return _RgbaArray.dynos; + getTexture() { + var _a2; + return (_a2 = this.target) == null ? void 0 : _a2.texture; } }; -_RgbaArray.emptySource = null; -_RgbaArray.dynos = null; -let RgbaArray = _RgbaArray; -const TRgbaArray = { type: "RgbaArray" }; -const defineRgbaArray = unindent(` - struct RgbaArray { - sampler2DArray texture; - int count; - }; -`); -function readRgbaArray(rgba, index) { - const dyno2 = new Dyno({ - inTypes: { rgba: TRgbaArray, index: "int" }, - outTypes: { rgba: "vec4" }, - inputs: { rgba, index }, - globals: () => [defineRgbaArray], - statements: ({ inputs, outputs }) => unindentLines(` - if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { - ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); - } else { - ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0); - } - `) - }); - return dyno2.outputs.rgba; -} +_Readback.programTemplate = null; +_Readback.readbackProgram = /* @__PURE__ */ new WeakMap(); +_Readback.fullScreenQuad = new FullScreenQuad( + new THREE.RawShaderMaterial({ visible: false }) +); +let Readback = _Readback; var SplatEditSdfType = /* @__PURE__ */ ((SplatEditSdfType2) => { SplatEditSdfType2["ALL"] = "all"; SplatEditSdfType2["PLANE"] = "plane"; @@ -9244,2092 +7761,2437 @@ class SplatGenerator extends THREE.Object3D { } } } -const _SplatAccumulator = class _SplatAccumulator { - constructor({ - extSplats, - covSplats - } = {}) { - this.time = 0; - this.deltaTime = 0; - this.viewToWorld = new THREE.Matrix4(); - this.viewOrigin = new THREE.Vector3(); - this.viewDirection = new THREE.Vector3(); - this.maxSplats = 0; - this.numSplats = 0; - this.target = null; - this.mapping = []; - this.version = -1; - this.mappingVersion = -1; - this.readback = null; - this.readbackSplats = []; - if (!threeMrtArray) { - throw new Error("Spark requires THREE.js r179 or above"); +class CsplatArray { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CsplatArray.prototype); + obj.__wbg_ptr = ptr; + CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CsplatArrayFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_csplatarray_free(ptr, 0); + } + /** + * @param {number} lod_base + */ + bhatt_lod(lod_base) { + wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base); + } + /** + * @returns {boolean} + */ + has_lod() { + const ret = wasm.csplatarray_has_lod(this.__wbg_ptr); + return ret !== 0; + } + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(rgba) { + wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba); + } + /** + * @returns {number} + */ + len() { + const ret = wasm.csplatarray_len(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(lod_base, merge_filter) { + wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter); + } + /** + * @returns {object} + */ + to_extsplats() { + const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } - this.extSplats = extSplats ?? true; - this.covSplats = covSplats ?? false; + return takeFromExternrefTable0(ret[0]); } - dispose() { - if (this.target) { - this.target.dispose(); - this.target = null; + /** + * @returns {object} + */ + to_extsplats_lod() { + const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_packedsplats() { + const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_packedsplats_lod() { + const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {number} + */ + get maxShDegree() { + const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {number} + */ + get numSplats() { + const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} arg0 + */ + set maxShDegree(arg0) { + wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0); + } + /** + * @param {number} arg0 + */ + set numSplats(arg0) { + wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0); + } +} +if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free; +class GsplatArray { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(GsplatArray.prototype); + obj.__wbg_ptr = ptr; + GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + GsplatArrayFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_gsplatarray_free(ptr, 0); + } + /** + * @returns {number} + */ + get maxShDegree() { + const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {number} + */ + get numSplats() { + const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + */ + bhatt_lod(lod_base) { + wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base); + } + /** + * @returns {boolean} + */ + has_lod() { + const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr); + return ret !== 0; + } + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(rgba) { + wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba); + } + /** + * @returns {number} + */ + len() { + const ret = wasm.gsplatarray_len(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(lod_base, merge_filter) { + wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter); + } + /** + * @returns {object} + */ + to_extsplats() { + const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {object} + */ + to_extsplats_lod() { + const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats(encoding) { + const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats_lod(encoding) { + const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } + return takeFromExternrefTable0(ret[0]); } - // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator - // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) - getTextures() { - if (this.target) { - return this.target.textures; - } - return _SplatAccumulator.emptyTextures; + /** + * @param {number} arg0 + */ + set maxShDegree(arg0) { + wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0); } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(splatCounts) { - let maxSplats = 0; - const mapping = splatCounts.map((numSplats) => { - const base = maxSplats; - const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - maxSplats += rounded; - return { base, count: numSplats }; - }); - return { maxSplats, mapping }; + /** + * @param {number} arg0 + */ + set numSplats(arg0) { + wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0); } - // Ensures our NewSplatAccumulator.target render target has enough space - // to generate maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate({ maxSplats }) { - if (this.target && (maxSplats ?? 1) <= this.maxSplats) { - return false; - } - this.dispose(); - const textureSize2 = getTextureSize(maxSplats ?? 1); - const { width, height, depth } = textureSize2; - this.maxSplats = textureSize2.maxSplats; - this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, { - depthBuffer: false, - stencilBuffer: false, - generateMipmaps: false, - magFilter: THREE.NearestFilter, - minFilter: THREE.NearestFilter, - format: THREE.RGBAIntegerFormat, - type: THREE.UnsignedIntType - }); - this.target.scissorTest = true; - if (this.extSplats) { - const target2 = this.target.texture.clone(); - const target3 = this.target.texture.clone(); - target3.format = THREE.RGBAFormat; - target3.type = THREE.UnsignedByteType; - target3.internalFormat = "RGBA8"; - this.target.textures = [this.target.texture, target2, target3]; - } else { - const target3 = this.target.texture.clone(); - target3.format = THREE.RGBAFormat; - target3.type = THREE.UnsignedByteType; - target3.internalFormat = "RGBA8"; - this.target.textures = [this.target.texture, target3]; +} +if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free; +function decode_rad_header(bytes) { + const ret = wasm.decode_rad_header(bytes); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} +function get_raycast_buffer() { + const ret = wasm.get_raycast_buffer(); + return ret; +} +function get_raycast_buffer2() { + const ret = wasm.get_raycast_buffer2(); + return ret; +} +function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) { + const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count); + return ret; +} +function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) { + const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity); + return ret; +} +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) { + const ret = Error(getStringFromWasm0(arg0, arg1)); + return ret; + }, + __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) { + const v = arg0; + const ret = typeof v === "boolean" ? v : void 0; + return isLikeNone(ret) ? 16777215 : ret ? 1 : 0; + }, + __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) { + const ret = arg0 in arg1; + return ret; + }, + __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) { + const ret = !arg0; + return ret; + }, + __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) { + const val = arg0; + const ret = typeof val === "object" && val !== null; + return ret; + }, + __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) { + const ret = arg0 === void 0; + return ret; + }, + __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) { + const ret = arg0 == arg1; + return ret; + }, + __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) { + const obj = arg1; + const ret = typeof obj === "number" ? obj : void 0; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }, + __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) { + const obj = arg1; + const ret = typeof obj === "string" ? obj : void 0; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_csplatarray_new: function(arg0) { + const ret = CsplatArray.__wrap(arg0); + return ret; + }, + __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }, + __wbg_get_4848e350b40afc16: function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; + }, + __wbg_get_f96702c6245e4ef9: function() { + return handleError(function(arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; + }, arguments); + }, + __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; + }, + __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) { + const ret = arg0[arg1]; + return ret; + }, + __wbg_gsplatarray_new: function(arg0) { + const ret = GsplatArray.__wrap(arg0); + return ret; + }, + __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) { + let result; + try { + result = arg0 instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) { + let result; + try { + result = arg0 instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_length_0c32cb8543c8e4c8: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_1e701798fdcaa3b4: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_6e821edde497a532: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_a4ca9e78359b5f1f: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_length_fd4646b401926788: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_new_227d7c05414eb861: function() { + const ret = new Error(); + return ret; + }, + __wbg_new_4f9fafbb3909af72: function() { + const ret = new Object(); + return ret; + }, + __wbg_new_99cabae501c0a8a0: function() { + const ret = /* @__PURE__ */ new Map(); + return ret; + }, + __wbg_new_a560378ea1240b14: function(arg0) { + const ret = new Uint8Array(arg0); + return ret; + }, + __wbg_new_f3c9df4f38f3f798: function() { + const ret = new Array(); + return ret; + }, + __wbg_new_with_length_26bffbe236bf73f9: function(arg0) { + const ret = new Float32Array(arg0 >>> 0); + return ret; + }, + __wbg_new_with_length_41a22191b9bdfd66: function(arg0) { + const ret = new Uint32Array(arg0 >>> 0); + return ret; + }, + __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) { + Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2); + }, + __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) { + Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2); + }, + __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) { + Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2); + }, + __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) { + const ret = arg0.push(arg1); + return ret; + }, + __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) { + const ret = arg0.set(arg1, arg2); + return ret; + }, + __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) { + arg0.set(getArrayU32FromWasm0(arg1, arg2)); + }, + __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) { + arg0[arg1] = arg2; + }, + __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) { + arg0[arg1 >>> 0] = arg2; + }, + __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); + }, + __wbg_set_8ee2d34facb8466e: function() { + return handleError(function(arg0, arg1, arg2) { + const ret = Reflect.set(arg0, arg1, arg2); + return ret; + }, arguments); + }, + __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) { + arg0.set(getArrayF32FromWasm0(arg1, arg2)); + }, + __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) { + arg0[arg1 >>> 0] = arg2 >>> 0; + }, + __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { + const ret = arg1.stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) { + const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbindgen_cast_0000000000000001: function(arg0) { + const ret = arg0; + return ret; + }, + __wbindgen_cast_0000000000000002: function(arg0, arg1) { + const ret = getArrayF32FromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000003: function(arg0, arg1) { + const ret = getArrayU32FromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000004: function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_cast_0000000000000005: function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return ret; + }, + __wbindgen_init_externref_table: function() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, void 0); + table.set(offset + 0, void 0); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); } - return true; - } - saveRenderState(renderer) { - return { - target: renderer.getRenderTarget(), - xrEnabled: renderer.xr.enabled, - autoClear: renderer.autoClear - }; + }; + return { + __proto__: null, + "./spark_rs_bg.js": import0 + }; +} +typeof FinalizationRegistry === "undefined" ? {} : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1)); +const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1)); +const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1)); +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_externrefs.set(idx, obj); + return idx; +} +function debugString(val) { + const type = typeof val; + if (type == "number" || type == "boolean" || val == null) { + return `${val}`; } - resetRenderState(renderer, state) { - renderer.setRenderTarget(state.target); - renderer.xr.enabled = state.xrEnabled; - renderer.autoClear = state.autoClear; + if (type == "string") { + return `"${val}"`; } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(generator, covGenerator) { - const theGenerator = generator ?? covGenerator; - if (!theGenerator) { - throw new Error("Either generator or covGenerator must be provided"); + if (type == "symbol") { + const description = val.description; + if (description == null) { + return "Symbol"; + } else { + return `Symbol(${description})`; } - let program = _SplatAccumulator.generatorProgram.get(theGenerator); - if (!program) { - const graph = dynoBlock( - { index: "int" }, - {}, - ({ index }, _outputs, { roots }) => { - if (generator) { - generator.inputs.index = index; - } - if (covGenerator) { - covGenerator.inputs.index = index; - } - if (this.extSplats) { - if (!this.covSplats) { - if (generator) { - const output = outputExtendedSplat(generator.outputs.gsplat); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } else { - if (covGenerator) { - const output = outputExtCovSplat(covGenerator.outputs.covsplat); - roots.push(output); - } else if (generator) { - const covsplat = gsplatToCovSplat(generator.outputs.gsplat); - const output = outputExtCovSplat(covsplat); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } - } else { - if (!this.covSplats) { - if (generator) { - const centerSubView = sub( - splitGsplat(generator.outputs.gsplat).outputs.center, - _SplatAccumulator.viewCenterUniform - ); - const halfAlpha = mul( - splitGsplat(generator.outputs.gsplat).outputs.opacity, - dynoConst("float", 0.5) - ); - const gsplat = combineGsplat({ - gsplat: generator.outputs.gsplat, - center: centerSubView, - opacity: halfAlpha - }); - const output = outputPackedSplat( - gsplat, - dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) - ); - roots.push(output); - } else { - throw new Error("Generator must be provided"); - } - } else { - let covsplat; - if (covGenerator) { - covsplat = covGenerator.outputs.covsplat; - } else if (generator) { - covsplat = gsplatToCovSplat(generator.outputs.gsplat); - } else { - throw new Error("Generator must be provided"); - } - const centerSubView = sub( - splitCovSplat(covsplat).outputs.center, - _SplatAccumulator.viewCenterUniform - ); - const halfAlpha = mul( - splitCovSplat(covsplat).outputs.opacity, - dynoConst("float", 0.5) - ); - covsplat = combineCovSplat({ - covsplat, - center: centerSubView, - opacity: halfAlpha - }); - const output = outputCovSplat( - covsplat, - dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) - ); - roots.push(output); - } - if (!generator) { - throw new Error("Generator must be provided"); - } - } - if (generator) { - const outputDepth = outputSplatDepth( - generator.outputs.gsplat, - _SplatAccumulator.viewCenterUniform, - _SplatAccumulator.viewDirUniform, - _SplatAccumulator.sortRadialUniform - ); - roots.push(outputDepth); - } - if (covGenerator) { - const outputDepth = outputCovSplatDepth( - covGenerator.outputs.covsplat, - _SplatAccumulator.viewCenterUniform, - _SplatAccumulator.viewDirUniform, - _SplatAccumulator.sortRadialUniform - ); - roots.push(outputDepth); - } - return void 0; - } - ); - program = new DynoProgram({ - graph, - inputs: { index: "_index" }, - outputs: {}, - template: this.extSplats ? _SplatAccumulator.programExtTemplate : _SplatAccumulator.programTemplate - // consoleLog: true, - }); - _SplatAccumulator.generatorProgram.set(theGenerator, program); + } + if (type == "function") { + const name = val.name; + if (typeof name == "string" && name.length > 0) { + return `Function(${name})`; + } else { + return "Function"; } - Object.assign(program.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }); - const material = program.prepareMaterial(); - _SplatAccumulator.fullScreenQuad.material = material; - return { program, material }; } - generate({ - generator, - covGenerator, - base, - count, - renderer - }) { - if (!this.target) { - throw new Error("Target must be initialized with ensureGenerate"); + if (Array.isArray(val)) { + const length2 = val.length; + let debug = "["; + if (length2 > 0) { + debug += debugString(val[0]); } - if (base + count > this.maxSplats) { - throw new Error("Base + count exceeds maxSplats"); + for (let i = 1; i < length2; i++) { + debug += ", " + debugString(val[i]); } - const { program, material } = this.prepareProgramMaterial( - generator, - covGenerator - ); - program.update(); - const renderState = this.saveRenderState(renderer); - const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - material.uniforms.targetBase.value = base; - material.uniforms.targetCount.value = count; - while (base < nextBase) { - const layer = Math.floor(base / layerSize); - material.uniforms.targetLayer.value = layer; - const layerBase = layer * layerSize; - const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) - ); - this.target.scissor.set( - 0, - layerYStart, - SPLAT_TEX_WIDTH, - layerYEnd - layerYStart - ); - renderer.setRenderTarget(this.target, layer); - renderer.xr.enabled = false; - renderer.autoClear = false; - _SplatAccumulator.fullScreenQuad.render(renderer); - base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + debug += "]"; + return debug; + } + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + return toString.call(val); + } + if (className == "Object") { + try { + return "Object(" + JSON.stringify(val) + ")"; + } catch (_) { + return "Object"; } - this.resetRenderState(renderer, renderState); - return { nextBase }; } - prepareGenerate({ - renderer, - scene, - time, - camera, - sortRadial, - renderSize, - previous, - lodInstances - }) { - var _a2; - this.viewToWorld.copy(camera.matrixWorld); - camera.getWorldPosition(this.viewOrigin); - camera.getWorldDirection(this.viewDirection); - _SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin); - _SplatAccumulator.viewDirUniform.value.copy(this.viewDirection); - _SplatAccumulator.sortRadialUniform.value = sortRadial; - this.time = time; - this.deltaTime = time - previous.time; - const allGenerators = []; - scene.traverse((node) => { - if (node instanceof SplatGenerator) { - if (!camera.layers || camera.layers.test(node.layers)) { - allGenerators.push(node); - } - } - }); - const globalEditsSet = /* @__PURE__ */ new Set(); - scene.traverseVisible((node) => { - if (node instanceof SplatEdit) { - let ancestor = node.parent; - while (ancestor != null && !(ancestor instanceof SplatMesh)) { - ancestor = ancestor.parent; - } - if (ancestor == null) { - globalEditsSet.add(node); - } - } - }); - const globalEdits = Array.from(globalEditsSet); - for (const object of allGenerators) { - try { - (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { - renderer, - object, - time: this.time, - deltaTime: this.deltaTime, - viewToWorld: this.viewToWorld, - camera, - renderSize, - globalEdits, - lodIndices: lodInstances && object instanceof SplatMesh ? lodInstances.get(object) : void 0 - }); - } catch (error) { - console.error("frameUpdate error", error); - object.generator = void 0; - object.covGenerator = void 0; - object.generatorError = error; - } + if (val instanceof Error) { + return `${val.name}: ${val.message} +${val.stack}`; + } + return className; +} +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} +function getArrayU16FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len); +} +function getArrayU32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); +} +let cachedUint16ArrayMemory0 = null; +function getUint16ArrayMemory0() { + if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) { + cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer); + } + return cachedUint16ArrayMemory0; +} +let cachedUint32ArrayMemory0 = null; +function getUint32ArrayMemory0() { + if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { + cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32ArrayMemory0; +} +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} +function isLikeNone(x) { + return x === void 0 || x === null; +} +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === void 0) { + const buf = cachedTextEncoder.encode(arg); + const ptr2 = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr2; + } + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + const mem = getUint8ArrayMemory0(); + let offset = 0; + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 127) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); } - const visibleGenerators = []; - scene.traverseVisible((node) => { - if (node instanceof SplatGenerator) { - if (!camera.layers || camera.layers.test(node.layers)) { - visibleGenerators.push(node); - } - } - }); - const splatCounts = visibleGenerators.map( - (generator) => generator.numSplats - ); - const { maxSplats, mapping: baseCounts } = this.generateMapping(splatCounts); - const previousMappings = previous.mapping.reduce((mappings, mapping) => { - mappings.set(mapping.node, mapping); - return mappings; - }, /* @__PURE__ */ new Map()); - this.mapping = []; - this.numSplats = 0; - baseCounts.forEach(({ base, count }, index) => { - const node = visibleGenerators[index]; - const previousNode = previousMappings.get(node); - if (previousNode && previousNode.count !== node.numSplats) { - node.updateMappingVersion(); - } - const { generator, covGenerator } = node; - if ((generator || covGenerator) && count > 0) { - const { version, mappingVersion } = node; - this.mapping.push({ - node, - generator, - covGenerator, - version, - mappingVersion, - base, - count - }); - this.numSplats = Math.max(this.numSplats, base + count); - } - }); - const { splatsUpdated, mappingUpdated } = previous.checkVersions( - this.mapping - ); - this.version = previous.version + (splatsUpdated ? 1 : 0); - this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0); + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + WASM_VECTOR_LEN = offset; + return ptr; +} +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_externrefs.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} +let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} +const cachedTextEncoder = new TextEncoder(); +if (!("encodeInto" in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function(arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); return { - sameMapping: !mappingUpdated, - version: this.version, - mappingVersion: this.mappingVersion, - visibleGenerators, - generate: () => { - this.ensureGenerate({ maxSplats }); - for (const { node, base, count } of this.mapping) { - const { generator, covGenerator } = node; - if ((generator || covGenerator) && count > 0) { - this.generate({ generator, covGenerator, base, count, renderer }); - } - } - }, - readback: async () => { - const textures = this.getTextures(); - if (this.readbackSplats.length === 0) { - this.readbackSplats = [ - new DynoUsampler2DArray({ value: textures[0], key: "extSplats" }), - new DynoUsampler2DArray({ value: textures[1], key: "extSplats" }) - ]; - } - this.readbackSplats[0].value = textures[0]; - this.readbackSplats[1].value = textures[1]; - if (!this.readback) { - this.readback = new Readback({ renderer }); - } - const readback = this.readback; - const words = this.extSplats ? 8 : 4; - const array = readback.ensureBuffer( - this.numSplats * words, - new Uint32Array(0) - ); - const reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - const rgba8 = new Dyno({ - inTypes: { - index: "int", - extSplats1: "usampler2DArray", - extSplats2: "usampler2DArray" - }, - outTypes: { rgba8: "vec4" }, - inputs: { - index, - extSplats1: this.readbackSplats[0], - extSplats2: this.readbackSplats[1] - }, - statements: ({ inputs, outputs }) => { - if (this.extSplats) { - return unindentLines(` - int indexDiv8 = ${inputs.index} >> 3; - ivec3 coord = splatTexCoord(indexDiv8); - uvec4 packedData; - if ((${inputs.index} & 4) == 0) { - packedData = texelFetch(${inputs.extSplats1}, coord, 0); - } else { - packedData = texelFetch(${inputs.extSplats2}, coord, 0); - } - - int indexMod4 = ${inputs.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${outputs.rgba8} = uintToVec4(data); - `); - } - return unindentLines(` - int indexDiv4 = ${inputs.index} >> 2; - ivec3 coord = splatTexCoord(indexDiv4); - uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0); - - int indexMod4 = ${inputs.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${outputs.rgba8} = uintToVec4(data); - `); - } - }).outputs.rgba8; - return { rgba8 }; - } - ); - return await readback.renderReadback({ - reader, - count: this.numSplats * words, - renderer, - readback: array - }); - } + read: arg.length, + written: buf.length }; - } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - checkVersions(otherMapping) { - if (this.mapping.length !== otherMapping.length) { - return { splatsUpdated: true, mappingUpdated: true }; + }; +} +let WASM_VECTOR_LEN = 0; +let wasm; +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + cachedDataViewMemory0 = null; + cachedFloat32ArrayMemory0 = null; + cachedUint16ArrayMemory0 = null; + cachedUint32ArrayMemory0 = null; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; +} +async function __wbg_load(module, imports) { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = module.ok && expectedResponseType(module.type); + if (validResponse && module.headers.get("Content-Type") !== "application/wasm") { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } } - const mappingUpdated = this.mapping.some((item, i) => { - const other = otherMapping[i]; - return item.node !== other.node || item.base !== other.base || item.count !== other.count || item.mappingVersion !== other.mappingVersion; - }); - if (mappingUpdated) { - return { splatsUpdated: true, mappingUpdated: true }; + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; } - const splatsUpdated = this.mapping.some((item, i) => { - return item.version !== otherMapping[i].version; - }); - return { splatsUpdated, mappingUpdated }; } -}; -_SplatAccumulator.viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() }); -_SplatAccumulator.viewDirUniform = new DynoVec3({ value: new THREE.Vector3() }); -_SplatAccumulator.sortRadialUniform = new DynoBool({ value: true }); -_SplatAccumulator.emptyTexture = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatAccumulator.emptyTextures = (() => { - return [_SplatAccumulator.emptyTexture, _SplatAccumulator.emptyTexture]; -})(); -_SplatAccumulator.programExtTemplate = new DynoProgramTemplate( - getShaders().computeUvec4x2Vec4Template -); -_SplatAccumulator.programTemplate = new DynoProgramTemplate( - getShaders().computeUvec4Vec4Template -); -_SplatAccumulator.generatorProgram = /* @__PURE__ */ new WeakMap(); -_SplatAccumulator.fullScreenQuad = new FullScreenQuad( - new THREE.RawShaderMaterial({ visible: false }) -); -let SplatAccumulator = _SplatAccumulator; -class SplatGeometry extends THREE.InstancedBufferGeometry { - constructor() { - super(); - this.setAttribute("position", new THREE.BufferAttribute(QUAD_VERTICES, 3)); - this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1)); + function expectedResponseType(type) { + switch (type) { + case "basic": + case "cors": + case "default": + return true; + } + return false; } } -const QUAD_VERTICES = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]); -const QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]); -const _SparkRenderer = class _SparkRenderer extends THREE.Mesh { - constructor(options) { - if (!options) { - throw new Error("SparkRenderer options are required"); - } - if (!options.renderer) { - throw new Error("renderer is required in SparkRenderer options"); +async function __wbg_init(module_or_path) { + if (wasm !== void 0) return wasm; + if (module_or_path !== void 0) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({ module_or_path } = module_or_path); + } else { + console.warn("using deprecated parameters for the initialization function; pass a single object instead"); } - const uniforms = _SparkRenderer.makeUniforms(); - Object.assign(uniforms, options.extraUniforms ?? {}); - const shaders2 = getShaders(); - const premultipliedAlpha = options.premultipliedAlpha ?? true; - const geometry = new SplatGeometry(); - const material = new THREE.ShaderMaterial({ - glslVersion: THREE.GLSL3, - vertexShader: options.vertexShader ?? shaders2.splatVertex, - fragmentShader: options.fragmentShader ?? shaders2.splatFragment, - uniforms, - premultipliedAlpha, - transparent: options.transparent ?? true, - depthTest: options.depthTest ?? true, - depthWrite: options.depthWrite ?? false, - side: THREE.DoubleSide, - allowOverride: false + } + const imports = __wbg_get_imports(); + if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) { + module_or_path = fetch(module_or_path); + } + const { instance, module } = await __wbg_load(await module_or_path, imports); + return __wbg_finalize_init(instance); +} +function b64ToUint6(nChr) { + return nChr > 64 && nChr < 91 ? nChr - 65 : nChr > 96 && nChr < 123 ? nChr - 71 : nChr > 47 && nChr < 58 ? nChr + 4 : nChr === 43 ? 62 : nChr === 47 ? 63 : 0; +} +function base64ToUint8(sBase64, nBlocksSize) { + const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, ""); + const nInLen = sB64Enc.length; + const nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2; + const taBytes = new Uint8Array(nOutLen); + let nMod3; + let nMod4; + let nUint24 = 0; + let nOutIdx = 0; + for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) { + nMod4 = nInIdx & 3; + nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 6 * (3 - nMod4); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + nMod3 = 0; + while (nMod3 < 3 && nOutIdx < nOutLen) { + taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; + nMod3++; + nOutIdx++; + } + nUint24 = 0; + } + } + return taBytes; +} +function toUint8(b64) { + if (typeof Uint8Array.fromBase64 === "function") return Uint8Array.fromBase64(b64); + let bin = atob(b64); + let len = bin.length; + let bytes = new Uint8Array(len); + for (let i = 0; i < len; i++) { + bytes[i] = bin.charCodeAt(i); + } + return bytes; +} +const decode64 = typeof atob === "function" ? toUint8 : base64ToUint8; +const WASM = decode64("AGFzbQEAAAAB0gdyYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGAAAGABfwN/f39gAX0BfWAFf39/f38Bf2AAAW9gAn9vAGABfwF+YAN/fX8AYAZ/f39/f38Bf2AGf39/f399AGAFf39/fn8AYAABf2ABfwFvYAJ/fwFvYAJ/fQBgAX4Bf2ADb39/AW9gA29/fwBgAm9vAX9gA39/bwBgCX9/f39/f39/fwBgAn9vA39/f2ACb28Bb2ACb38Bb2AJf39/f39/f39/AX9gDH9/f39/f39/f39/fwBgBX9/f31/AGAHf39/f39/fwF/YAV/f39/fQBgBH99f38Bf2AEf39/fgBgF39/f39/f39/f39/f39/f39/f39/f39/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AGADfn5/AX5gB39/f39/fX0AYAF/AX1gBX9/fn9/AGAFf398f38AYAV/f31/fwBgE399fH9/f39/f39/f39/f39/f38Df39/YAR/b39vA39/f2ADf29vAX9gAAJ/f2ADb29vAX9gA29vbwFvYANvb28AYANvf28AYANvb38AYAFvAW9gAXwBb2ABfgFvYAR/f399AX9gC39/f39/f39/f39/AX9gCn9/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gB39/f31/f38AYAJ/fgBgA399fwF/YAZ/fn9/f38AYAV/f39+fgBgCX9/f39/fX19fwBgBn9/f399fQBgBH5+f38BfmAFf39/f38BfWAEf39/fwF9YAJ+fwBgCX9/f39/f35+fgBgA39/ewBgA39+fwBgAn9+AX9gAn1/AX1gA319fQF9YAN/fn4AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAR/fn5/AGAJf39/f39/f39vA39/f2AIf39/f29/f38Df39/YAd/f39/f39/A39/f2AHf29vf31/fwN/f39gB39vf31/f28Df39/YA59fX19fX19fX1/b319fwFvYAZ/b399f28Df39/YAZ/b29/fX8Df39/YAV/f39/bwN/f39gBH9/f38Df39/YAR/b29/A39/f2ACf38Df39/YA19fX19fX19fX1/fX1/AW9gAW8Df39/YAJ/bwJ/f2AKfX19fX19fX19fwFvYAR/fn9/AGAEf31/fwBgBH98f38AYAF8AX9gAn19AX0CoRY2EC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF80MWEyMjE5MWI5YmRmZDY2ABoQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV9kNTFlODk0NThiM2ZkYmY2AB4QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfMWU3MDE3OThmZGNhYTNiNAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAHxAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyABIQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfOGVlMmQzNGZhY2I4NDY2ZQA5EC4vc3BhcmtfcnNfYmcuanMbX193YmdfcHVzaF82YmRiYzk5MGJlNWFjMzdiACAQLi9zcGFya19yc19iZy5qcxVfX3diZ19jc3BsYXRhcnJheV9uZXcAGhAuL3NwYXJrX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAaEC4vc3BhcmtfcnNfYmcuanMcX193YmdfRXJyb3JfMmU1OWIxYjM3YTlhMzRjMwAbEC4vc3BhcmtfcnNfYmcuanMrX193YmdfX193YmluZGdlbl9pc19vYmplY3RfNDBjNWE4MDU3MmU4ZjlkMwAMEC4vc3BhcmtfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF9jMGNjYTcyYjgyYjg2ZjRkAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19fX3diaW5kZ2VuX2luXzRiZDdhNTdlNTQzMzczNjYAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABMQLi9zcGFya19yc19iZy5qcy1fX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0X2E4NmMyMTY1NzVhNzVjMzAADBAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfZTQyMjc1ZTYwMWUxNGVlYgAhEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3Xzk5Y2FiYWU1MDFjMGE4YTAAEhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ADoQLi9zcGFya19yc19iZy5qcxpfX3diZ19nZXRfZjk2NzAyYzYyNDVlNGVmOQAkEC4vc3BhcmtfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmJlNDI3NjhjNjkwZTM4MAA7EC4vc3BhcmtfcnNfYmcuanMaX193YmdfZ2V0XzQ4NDhlMzUwYjQwYWZjMTYAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YzYwYjJlOGFkMGU5MzgzADwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfODFiNDE3NDM1MmU2YTA5NQA9EC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADBAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAHhAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgAhEC4vc3BhcmtfcnNfYmcuanMgX193Ymdfc2V0X2luZGV4XzMzOGE2NmU0MGZjNDVkZWUAHxAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5ABoQLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHxAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV81MTdjZDBmMTgxMWFiODcyAB4QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzY0YzI4N2EyN2NjMjRkMjcAIRAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19nZXRfdW5jaGVja2VkXzdkN2JhYmUzMmU5ZTZhNTQAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxABIQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABMQLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAEQLi9zcGFya19yc19iZy5qczBfX3diZ19fX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxXzNhNzJhZTc2NGQ0NmQ5NDQAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABMQLi9zcGFya19yc19iZy5qcyxfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfNGI4ZGE2ODNkZWIyNWQ3MgAMEC4vc3BhcmtfcnNfYmcuanMtX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9mZjdjMTMzN2E1ZTNiMzNhAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA+EC4vc3BhcmtfcnNfYmcuanMnX193YmdfX193YmluZGdlbl90aHJvd184MWZjNzc2NzlhZjgzYmM2AAEQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19kZDVkMmQwN2NlOWU2YzU3ABMQLi9zcGFya19yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4QLi9zcGFya19yc19iZy5qcyBf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bGF0YXJyYXlfbWF4U2hEZWdyZWUA4ggfX193YmdfZ2V0X2dzcGxhdGFycmF5X251bVNwbGF0cwDjCBZfX3diZ19nc3BsYXRhcnJheV9mcmVlANUFIV9fd2JnX3NldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDnCB9fX3diZ19zZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAOgIIV9fd2JnX3NldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDpCB9fX3diZ19zZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAOoIE2JoYXR0X2xvZF9leHRzcGxhdHMAsggWYmhhdHRfbG9kX3BhY2tlZHNwbGF0cwCxCBNjaHVua2RlY29kZXJfZmluaXNoANwIEWNodW5rZGVjb2Rlcl9wdXNoAOYIFWNzcGxhdGFycmF5X2JoYXR0X2xvZACVBxNjc3BsYXRhcnJheV9oYXNfbG9kAOkHGGNzcGxhdGFycmF5X2luamVjdF9yZ2JhOAD9CQ9jc3BsYXRhcnJheV9sZW4A8wcUY3NwbGF0YXJyYXlfdGlueV9sb2QAhgcYY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzANUIHGNzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QA1wgbY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzANYIH2NzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QA2AgRZGVjb2RlX3JhZF9oZWFkZXIA2wgVZGVjb2RlX3RvX2NzcGxhdGFycmF5ALMIE2RlY29kZV90b19leHRzcGxhdHMArAgVZGVjb2RlX3RvX2dzcGxhdGFycmF5ALoIFmRlY29kZV90b19wYWNrZWRzcGxhdHMApQgQZGlzcG9zZV9sb2RfdHJlZQCKAhpkeW5hbWljX3RyYXZlcnNlX2xvZF90cmVlcwD4BxhleHRzcGxhdHNfdG9fZ3NwbGF0YXJyYXkAuwgSZ2V0X2xvZF90cmVlX2xldmVsAMwIEmdldF9yYXljYXN0X2J1ZmZlcgCvChNnZXRfcmF5Y2FzdF9idWZmZXIyALAKFWdzcGxhdGFycmF5X2JoYXR0X2xvZACWBxhnc3BsYXRhcnJheV9pbmplY3RfcmdiYTgA/gkPZ3NwbGF0YXJyYXlfbGVuAPMHFGdzcGxhdGFycmF5X3RpbnlfbG9kAIcHGGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0cwDZCBxnc3BsYXRhcnJheV90b19leHRzcGxhdHNfbG9kANoIG2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0cwDJCB9nc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHNfbG9kAMoIDWluaXRfbG9kX3RyZWUAywgMbmV3X2xvZF90cmVlAN4IE25ld19zaGFyZWRfbG9kX3RyZWUA3QgbcGFja2Vkc3BsYXRzX3RvX2NzcGxhdGFycmF5ALwIG3BhY2tlZHNwbGF0c190b19nc3BsYXRhcnJheQC5CBNyYXljYXN0X2V4dF9idWZmZXJzAPgIFXJheWNhc3RfcGFja2VkX2J1ZmZlcgDUCBVyYXljYXN0X3BhY2tlZF9zcGxhdHMAsAgMc2ltZF9lbmFibGVkAIsLDXNvcnQzMl9zcGxhdHMAkgkLc29ydF9zcGxhdHMAkwkSdGlueV9sb2RfZXh0c3BsYXRzAK0IFXRpbnlfbG9kX3BhY2tlZHNwbGF0cwCuCBJ0cmF2ZXJzZV9sb2RfdHJlZXMA+QcQdXBkYXRlX2xvZF90cmVlcwCfCAp3YXNtX3N0YXJ0AP0GE2dzcGxhdGFycmF5X2hhc19sb2QA6QcRX193YmluZGdlbl9tYWxsb2MA9gcSX193YmluZGdlbl9yZWFsbG9jAK8ID19fd2JpbmRnZW5fZnJlZQC2BxRfX3diaW5kZ2VuX2V4bl9zdG9yZQCVChdfX2V4dGVybnJlZl90YWJsZV9hbGxvYwCfBRVfX3diaW5kZ2VuX2V4dGVybnJlZnMBARlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jAL4HEF9fd2JpbmRnZW5fc3RhcnQAiQsJ9AkBAEEBC/0EsgWACqkJkAWxCY8B4QrgCjQx9gmACv0K9QHtA8wG8geKCsYB7gGZB64G9An/Cc4F+gbIBvQDhwaUB84I+giJCYsIwAWcBbYCkgSNCY8I0gTQBKgFNdMI2gboBPsI5wKLCjMyrgajBKsJ/wPkBugF6Qq3AdAGhAeVCfgF7geQCcYC6AryCOcK/wnfAucE2Qa4A5IG0Qf/CNoF1wWACYAJgAncB90H5AeBCd4HignlB90HggnfB4MJ3Qe0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QQV0aiIEIAI2AgAgBEIANwIIIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwIQIAMgB0EBajYCQCADIAMoAjRBAWoiAjYCNCACIAMoAjBJDQALCyADIEs3A9gDIAMgTDcD0AMgAyBNNwPIAyADIE43A8ADIANB+AFqQb6awAAgA0HAA2oQ4AQgAygC+AEiBQRAIAMoAvwBIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAVqSQ0GIAJBACAEIAVBJ2pLGw0HIAcQogILAkACQAJAIAMoAkAiBUUNACADKAI8IgQgBUEFdGohBiAD/QkChAEhUSAEIQIDQCACKAIAIg0gACgCCCIHTw0CIAMgACgCBCANQRhsaiIH/V0CACAHKgIIIgH9IAIgAf0gAyBR/ecB/WgiUv0fAvwENwPQAyADIFL9HwH8BDcDyAMgAyBS/R8A/AQ3A8ADIANB+AFqIANBwANqELIDIAJBGGogAykDiAI3AwAgAkEIaiAD/QAD+AH9CwMAIAJBIGoiAiAGRw0ACyAFQQFGDQAgBUEVTwRAIAQgBRCQBAwBCyAEIAUQ+wQLIAMgBTYCgAMgAyBKNwP4ASADQcADakGklsAAIANB+AFqEOAEAkAgAygCwAMiBgRAIAMoAsQDIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAZqSQ0BIAJBACAEIAZBJ2pLGw0KIAcQogILQQAhBCADQQA2ApABIANCgICAgMAANwKIASADQQA2ApwBIANCgICAgMAANwKUASADQQA2AqABIANBADYCpAEgBUUEQEKAgICAgICAgIB/IUJC////////////ACFDQQQhCEL///////////8AIURC////////////ACFFQoCAgICAgICAgH8hRkKAgICAgICAgIB/IUcMAwtBACECQv///////////wAhRUKAgICAgICAgIB/IUdCgICAgICAgICAfyFGQoCAgICAgICAgH8hQkL///////////8AIURC////////////ACFDA0ACQAJAIAMoAjwiECACQQV0IgZqIgQoAgAiByAAKAIIIglJBEAgACgCBCINIAdBGGxqIgf9XQIAIAcqAggiAf0gAiAB/SADIAP9CQKEASJR/ecB/WgiUv0fAvwEIUEgUv0fAfwEIT8gUv0fAPwEIUAgBSACQQFqIhJNBEAg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//8DcSEFQQAhAkEAIQoCfwJAAkACQANAIAVFDQYgCiASaiIHIAEoApwBIgZJBEAgASgCmAEgA2ogAmogAiAMaiIJKAIANgIAIAEoApwBIgYgB0EBak0NBCABKAKYASADaiACakEEaiAJQQRqKAIANgIAIAEoApwBIgYgB0ECak0NAyABKAKYASADaiACakEIaiAJQQhqKAIANgIAIAEoApwBIgYgB0EDak0NAiABKAKYASADaiACakEMaiAJQQxqKAIANgIAIAJBEGohAiAKQQRqIQogBUEBayEFIAhBAWsiCA0BDAYLCyAPQQJ0IApqDAMLIA9BAnQgCmpBA2oMAgsgD0ECdCAKakECagwBCyAPQQJ0IApqQQFqCyAGQcyswQAQ8AcACyAEKAIYIgJFDQ8gDkEEaygCACIDQXhxIgUgAkECdCICQQRBCCADQQNxIgMbakkNFCADQQAgBSACQSdqSxsNFSAOEKICDA8LIAogDUG8rMEAEPAHAAtBACANIAJBnK3BABCgBQALIARBGGogBiADIAEoArAEEMwEIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQwAQgBCgCGCIDRQ0MAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA4LDBILDBILIARBGGogBiADIAEoArAEELEFIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQvwQgBCgCGCIDRQ0LAkAgAkEEaygCACIFQXhxIgggA0EBdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA0LDBELDBELIAdBAWohBwsgByAIQfTmwQAQ8AcACyAEIAQoAiA2AmAgBCAEKQIYNwNYIAQoAmgiAkUNAAJAIAQoAmwiA0EEaygCACIFQXhxIgggAkECdCICQQRBCCAFQQNxIgUbak8EQCAFQQAgCCACQSdqSxsNASADEKICDAILDA4LDA4LIAEgASgCrAQgASgCsAQgBCgCXCICIAQoAmAQvwUgBCgCWCIDRQ0HAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDAkLDA0LDA0LIARBGGogBiADIAEoArAEIAIq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AqACRw0LIABBADYCqAJBCSEBCyAAIAE6AKwCDAoLIAAoAtACIgFBAXYiAiAAKAKgAiAAKAKoAmsiBEkEQCACIQQgAUGAgAhJDQ0LQYCABCAEIARBgIAETxsiAiAAKAKMAiIBSwRAIAIgAWsiAyAAKAKEAiABa0sEQCAWIAEgA0ECQQIQ1gYgACgCjAIhAQsgACgCiAIiCSABQQF0aiEGIANBAk8EfyADQQF0QQJrIggEQCAGQQAgCPwLAAsgASADaiIDQQFrIQEgCSADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYCjAILIAQEQEEAIQNBAiEBAkADQCAAKALQAiIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAowCIgYgA0sEQCAAKAKIAiABakECayAAKALMAiABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgCjAIhAQsgACAAKAKoAiACIAAoAogCIAEQvwQCQAJAAkAgACgC0AIiAyACQQF0IgFPBEAgAEEANgLQAiADIAFrIQYgBEUNASABIANGDQMgBkUNAiAAKALMAiIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLQAgsgACAAKAKoAiACaiICNgKoAiACIAAoAqACRw0JIABBADYCqAIgAEEIOgCsAgwJC0EtIREMAQtBGCERCyAAKALQAiARbiICIAAoAqACIAAoAqgCayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDCARbCILIAAoAoACIgFLBEAgCyABayICIAAoAvgBIAFrSwRAIBIgASACQQRBBBDWBiAAKAKAAiEBCyAAKAL8ASIJIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAJIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgKAAgsgDEEJbCEPAkAgBgRAIAxB4ABsIQcgDEEYbCEJQQAhDkEAIQgCQANAIAggEWwiASAAKALQAiICTw0DAkACQAJAAkAgCEEJbCIDIAAoAoACIgJPDQAgACgC/AEgA0ECdGogACgCzAIgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALQAiICTwRAIAQhAQwICyADQQNqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALQAiICTwRAIAQhAQwICyADQQZqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALQAiICTwRAIAQhAQwICyADQQFqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALQAiICTwRAIAQhAQwICyADQQRqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALQAiICTwRAIAQhAQwICyADQQdqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALQAiICTwRAIAQhAQwICyADQQJqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALQAiICTwRAIAQhAQwICyADQQVqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALQAiICTwRAIAQhAQwICyADQQhqIgMgACgCgAIiAk8NACAAKAL8ASADQQJ0aiAAKALMAiAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCpAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC0AIiBU8NACAIQQ9sIA9qIgIgACgCgAIiBU8NAyAAKAL8ASACQQJ0aiAAKALMAiADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtACIgVPDQAgAkEDaiIEIAAoAoACIgVPBEAgBCECDAQLIAAoAvwBIARBAnRqIAAoAswCIANqLQAAs0MAAADDkkMAAAA8lDgCACAB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aiIDRg0CDAELCyADIARB1O7BABDwBwALIAAoAoACIQELIAAgACgCkAIgBiAAKAL8ASABEMIEAkACQAJAIAAoAtwBIgEgBkECdCICTwRAIABBADYC3AEgASACayEDIAhFDQEgASACRg0DIANFDQIgACgC2AEiASABIAJqIAP8CgAADAILDBYLIAEgAkYNAQsgACADNgLcAQsgACAAKAKQAiAGaiICNgKQAiACIAAoAogCRw0LIABBADYCkAJBCSEBCyAAIAE6AJQCDAoLIAAoAtwBIgFBAXYiAiAAKAKIAiAAKAKQAmsiBUkEQCACIQUgAUGAgAhJDQ0LQYCABCAFIAVBgIAETxsiAiAAKAL0ASIBSwRAIAIgAWsiAyAAKALsASABa0sEQCAWIAEgA0ECQQIQ1gYgACgC9AEhAQsgACgC8AEiCCABQQF0aiEGIANBAk8EfyADQQF0QQJrIgQEQCAGQQAgBPwLAAsgASADaiIDQQFrIQEgCCADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYC9AELIAUEQEEAIQNBAiEBAkADQCAAKALcASIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAvQBIgYgA0sEQCAAKALwASABakECayAAKALYASABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgC9AEhAQsgACAAKAKQAiACIAAoAvABIAEQwQQCQAJAAkAgACgC3AEiAyACQQF0IgFPBEAgAEEANgLcASADIAFrIQYgBUUNASABIANGDQMgBkUNAiAAKALYASIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLcAQsgACAAKAKQAiACaiICNgKQAiACIAAoAogCRw0JIABBADYCkAIgAEEIOgCUAgwJC0EtIREMAQtBGCERCyAAKALcASARbiICIAAoAogCIAAoApACayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDSARbCILIAAoAugBIgFLBEAgCyABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBDWBiAAKALoASEBCyAAKALkASIIIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAIIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsgDUEJbCEOAkAgBgRAIA1B4ABsIQkgDUEYbCEIQQAhD0EAIQcCQANAIAcgEWwiASAAKALcASICTw0DAkACQAJAAkAgB0EJbCIDIAAoAugBIgJPDQAgACgC5AEgA0ECdGogACgC2AEgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALcASICTwRAIAQhAQwICyADQQNqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALcASICTwRAIAQhAQwICyADQQZqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALcASICTwRAIAQhAQwICyADQQFqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALcASICTwRAIAQhAQwICyADQQRqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALcASICTwRAIAQhAQwICyADQQdqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALcASICTwRAIAQhAQwICyADQQJqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALcASICTwRAIAQhAQwICyADQQVqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALcASICTwRAIAQhAQwICyADQQhqIgMgACgC6AEiAk8NACAAKALkASADQQJ0aiAAKALYASAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC3AEiBE8NACAHQQ9sIA5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtwBIgRPDQAgAkEDaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgC3AEiBE8NACACQQZqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEmoiAyAAKALcASIETw0AIAJBCWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIDIAAoAtwBIgRPDQAgAkEMaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgC3AEiBE8NACACQQFqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDWoiAyAAKALcASIETw0AIAJBBGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIDIAAoAtwBIgRPDQAgAkEHaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgC3AEiBE8NACACQQpqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFmoiAyAAKALcASIETw0AIAJBDWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIDIAAoAtwBIgRPDQAgAkECaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgC3AEiBE8NACACQQVqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEWoiAyAAKALcASIETw0AIAJBCGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIDIAAoAtwBIgRPDQAgAkELaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgC3AEiBE8NACACQQ5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAk0NAkEAIQQgCSEDDAELIAMgBEH07cEAEPAHAAsCQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAA0AgACgC3AEiAiAEIA9qIgFBGGpLBEAgBCAIaiIFIAAoAugBIgJPDQ8gACgC5AEgA2ogASAAKALYAWpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEbak0NByAAKALoASICIAVBA2pNDQ4gACgC5AEgA2pBDGogASAAKALYAWpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEeak0NBiAAKALoASICIAVBBmpNDQ0gACgC5AEgA2pBGGogASAAKALYAWpBHmotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEhak0NBSAAKALoASICIAVBCWpNDQwgACgC5AEgA2pBJGogASAAKALYAWpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEkak0NBCAAKALoASICIAVBDGpNDQsgACgC5AEgA2pBMGogASAAKALYAWpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEnak0NAyAAKALoASICIAVBD2pNDQogACgC5AEgA2pBPGogASAAKALYAWpBJ2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEqak0NAiAAKALoASICIAVBEmpNDQkgACgC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xOvBABDwBwALIAkgAUHU68EAEPAHAAsgACgC5AEgAmogCioCMDgCACAFIAAoAugBIgFPDQogACgC5AEgAmpBBGogCioCNDgCACAHIAAoAugBIgFPDQkgACgC5AEgAmpBCGogCioCODgCACAJIAAoAugBIgFPDQggACgC5AEgAmpBDGogCioCPDgCACACQRBqIQIgA0EEaiEDIAggD0EBaiIPSw0ACwwKCyABIARBpOzBABDwBwALIAcgBEG07MEAEPAHAAsgByAEQcTswQAQ8AcACyADIARB1OzBABDwBwALIAQgC0Hk7MEAEPAHAAsgBCAHQfTswQAQ8AcACyAEIAdBhO3BABDwBwALIAkgAUGU7MEAEPAHAAsgByABQYTswQAQ8AcACyAFIAFB9OvBABDwBwALIAAgACgCkAIgCCAAKALkASAAKALoARCPBQJAAkACQCAAKALcASIBIAggDWwiAk8EQCAAQQA2AtwBIAEgAmshAyAGRQ0BIAEgAkYNAyADRQ0CIAAoAtgBIgEgASACaiAD/AoAAAwCCwwQCyABIAJGDQELIAAgAzYC3AELIAAgACgCkAIgCGoiAjYCkAIgAiAAKAKIAkcNBSAAQQA2ApACIABBBToAlAIMBQsgACgC3AEiAUEDbiICIAAoAogCIAAoApACayIISQRAIAIhCCABQYCADEkNCAtBgIAEIAggCEGAgARPGyIEQQNsIgYgACgC6AEiAUsEQCAGIAFrIgIgACgC4AEgAWtLBEAgEiABIAJBBEEEENYGIAAoAugBIQELIAAoAuQBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AugBCwJAAkACQAJAAkACQAJAAkACQCAIBEBBACEDQQAhAQNAIAEgACgC3AEiAk8NAiABIAAoAugBIgJPDQMgACgC5AEgA2ogACgC2AEgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKALcASIFTw0EIAIgACgC6AEiBU8NBSAAKALkASADakEEaiAAKALYASABakEBai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgAUECaiICIAAoAtwBIgVPDQYgAiAAKALoASIFTw0HIAAoAuQB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LGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8C/AQ3A3ggAyAs/R8B/AQ3A3AgAyAs/R8A/AQ3A2ggA0GIAWogA0HoAGoQsgMgAkEYaiADKQOYATcDACACQQhqIAP9AAOIAf0LAwAgAkEgaiICIAhHDQALIARBAUYNACAEQRVPBEAgBSAEEJAEDAELIAUgBBD7BAsgAyAENgKgASADICQ3A4gBIANB6ABqQaSWwAAgA0GIAWoQ4AQCQCADKAJoIggEQCADKAJsIgZBBGsoAgAiAkF4cSIFQQRBCCACQQNxIgIbIAhqSQ0BIAJBACAFIAhBJ2pLGw0KIAYQogILQQAhBSADQQA2AqgBIANCgICAgMAANwKgASADQQA2ArQBIANCgICAgMAANwKsASADQQA2ArgBIANBADYCvAEgBEUEQEKAgICAgICAgIB/IRxC////////////ACEdQQQhCUL///////////8AIR5C////////////ACEfQoCAgICAgICAgH8hIEKAgICAgICAgIB/ISEMAwtBACECQv///////////wAhH0KAgICAgICAgIB/ISFCgICAgICAgICAfyEgQoCAgICAgICAgH8hHEL///////////8AIR5C////////////ACEdA0ACQAJAIAMoAhwiESACQQV0IgdqIgUoAgAiBiAAKAIIIglJBEAgACgCBCILIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADIAP9CQJkIiv95wH9aCIs/R8C/AQhGyAs/R8B/AQhGSAs/R8A/AQhGiAEIAJBAWoiCE0EQCACIQ0MAwsgBEEBayENIBJBAXEEQCAEIQgMAwsgByARakEgaiEHA0AgCSAHKAIAIgZNBEAgBiAJQdjRxgAQ8AcACyALIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8A/AQgGlIgLP0fAfwEIBlSciAs/R8C/AQgG1JyDQIgB0EgaiEHIAQgCEEBaiIIRw0ACyAEIQgMAgsgBiAJQdjRxgAQ8AcACyAIQQFrIQ0LICEgGyAbICFTGyEhICAgGSAZICBTGyEgIBwgGiAaIBxTGyEcIB8gGyAbIB9VGyEfIB4gGSAZIB5VGyEeIB0gGiAaIB1VGyEdIAMgAygCvAFBAWo2ArwBIAMpA0giGSAI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mAUgBhDDBCEoIAJBBmoiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIA0gACgClAUgACgCmAUgBhDDBCEoIAJBB2oiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIAUgACgClAUgACgCmAUgBhDDBCEoIAJBCGoiAiAAKALcBCIETw0FIAAoAtgEIAJBAnRqICg4AgALIAAtAPwBIgJBCEcEQCAALQDsAiEFIAAoAugCIAAtAOQCIQ0gACgC4AIgAC0A3AIhDyAAKALYAiAALQDUAiERIAAoAtACIAAtAMwCIRUgACgCyAIgAC0AxAIhFyAAKALAAiAALQC8AiEZIAAoArgCIAAtALQCIRsgACgCsAIgAC0ArAIhHSAAKAKoAiAALQCkAiEfIAAoAqACIAAtAJwCISEgACgCmAIgAC0AlAIhIyAAKAKQAiAALQCMAiElIAAoAogCIAAtAIQCIQEgACgCgAIgACgC+AEgAiAAKAKUBSAAKAKYBSAGEMMEISggCEEPbCICIAAoAugEIgRPDQQgACgC5AQgAkECdGogKDgCACABIAAoApQFIAAoApgFIAYQwwQhKCACQQFqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAlIAAoApQFIAAoApgFIAYQwwQhKCACQQJqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAjIAAoApQFIAAoApgFIAYQwwQhKCACQQNqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAhIAAoApQFIAAoApgFIAYQwwQhKCACQQRqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAfIAAoApQFIAAoApgFIAYQwwQhKCACQQVqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAdIAAoApQFIAAoApgFIAYQwwQhKCACQQZqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAbIAAoApQFIAAoApgFIAYQwwQhKCACQQdqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAZIAAoApQFIAAoApgFIAYQ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AELf0JWLxqyZuQqFhFANASAGIAJBAWoiAkcNAAsgAUGAgARJDQRBqODBAEEUELQIIQEMCgsgASACSQ0LIANB8AdqIAUgAhCXAyADKALwB0EBRgRAIAMpAvQHEL4IIQEMCgsgA0HwB2ogAygC9AcgAygC+AcQUSADKALwByEBIAMoApwJIgZBgICAgHhGBEAgAUUNBAwKCyADQQRyIANB8AdqIgVBBHJBqAH8CgAAIAMgA/0AA6AJ/QsDsAEgAyAGNgKsASADIAE2AgACQCADLQC5ASIMRQRAIANB8ABqIQEgAy0AuAFFBEAgAygCqAEhByADKAKUASEGIANBsAZqIgogARDnAyAFIAcgBiAKEKQBIAMoAvAHIQEgAygC9AwiBEGAgICAeEYNAiADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIAMoAoQJIQsgA0HQA2ogA0GQCWpBzAH8CgAAIAMoAuAKIQggAygC3AohCiADQbACaiADQeQKakGgAfwKAAAgAygChAwhCSADQcABaiADQYgMakHsAPwKAAAgAykD+AwhLSADQQA6APgHIAMgCTYC9AcgAyAHNgLwByAAIAUQqwMgASEFDAULIAMoAqgBIQkgAygClAEhBSADQbAGaiIGIAEQ5wMgA0HwB2oiByAJIAUgBhC4AkGAgICAeCEEIAMoAvAHIQEgAygChAkiC0GAgICAeEYNASADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIANBADoA+AcgA0EANgL0ByADIAk2AvAHIAAgBxCrAyABIQUMBAsgA0GwBmoiASADQcAB/AoAACADQfAHaiIGIAEQeiADKAL0ByEBIAMoAvAHIgVBgICAgHhGDQIgA0GgBWogA0H4B2pBjAH8CgAAIAMpAogJISwgAygChAkhCyADQdADaiADQZAJakHMAfwKAAAgAygC3AohCiADKALgCiEIIANBADoA+AcgAyAINgL0ByADIAo2AvAHIAAgBhCrA0GCgICAeCEEIAEhBgwDCyADEK0DIAENCQwDC0Gwq8EAQRAQtAghAQwICyABRQ0BDAcLIAAoApAHIgEgAkELaiICSQ0CIABBADYCkAcgASACRwRAIAEgAmsiAQRAIAAoAowHIgcgAiAHaiAB/AoAAAsgACABNgKQBwsCQCAA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IgJBCEcEQCAALQDkBCEFIAAoAuAEIAAtANwEIQ0gACgC2AQgAC0A1AQhDyAAKALQBCAALQDMBCESIAAoAsgEIAAtAMQEIRUgACgCwAQgAC0AvAQhFyAAKAK4BCAALQC0BCEZIAAoArAEIAAtAKwEIRsgACgCqAQgAC0ApAQhHSAAKAKgBCAALQCcBCEfIAAoApgEIAAtAJQEISEgACgCkAQgAC0AjAQhIyAAKAKIBCAALQCEBCElIAAoAoAEIAAtAPwDIQEgACgC+AMgACgC8AMgAiAAKAKMByAAKAKQByAHEMMEISggCEEPbCICIAAoAuAGIgRPDQQgACgC3AYgAkECdGogKDgCACABIAAoAowHIAAoApAHIAcQwwQhKCACQQFqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAlIAAoAowHIAAoApAHIAcQwwQhKCACQQJqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAjIAAoAowHIAAoApAHIAcQwwQhKCACQQNqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAhIAAoAowHIAAoApAHIAcQwwQhKCACQQRqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAfIAAoAowHIAAoApAHIAcQwwQhKCACQQVqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAdIAAoAowHIAAoApAHIAcQwwQhKCACQQZqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAbIAAoAowHIAAoApAHIAcQwwQhKCACQQdqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAZIAAoAowHIAAoApAHIAcQwwQhKCACQQhqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAXIAAoAowHIAAoApAHIAcQwwQhKCACQQlqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAVIAAoAowHIAAoApAHIAcQwwQhKCACQQpqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACASIAAo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ASADIAQ2AqwBIAMgAjYCACADLQC5ASINRQRAIANB8ABqIRECQCADLQC4AUUEQCADKAKoASEJIAMoApQBIQQgA0GwBmoiAiAREOcDIAYgCSAEIAIQpAEgAygC8AchAiADKAL0DCIFQYCAgIB4Rg0BIAMoAvQHIQogA0GgBWogA0H4B2pBjAH8CgAAIAMpA4gJISwgAygChAkhDiADQdADaiADQZAJakHMAfwKAAAgAygC4AohDCADKALcCiEHIANBsAJqIANB5ApqQaAB/AoAACADKAKEDCESIANBwAFqIANBiAxqQewA/AoAACADKQP4DCEtIANBADoA+AcgAyASNgL0ByADIAk2AvAHIAAgBhDqAQwECyADKAKoASEJIAMoApQBIQogA0GwBmoiAiAREOcDIANB8AdqIgQgCSAKIAIQuAJBgICAgHghBSADKALwByECIAMoAoQJIg5BgICAgHhGDQAgAygC9AchCiADQaAFaiADQfgHakGMAfwKAAAgAykDiAkhLCADQQA6APgHIANBADYC9AcgAyAJNgLwByAAIAQQ6gEMAwsgAxCtAyACRQ0DDAkLIANBsAZqIgIgA0HAAfwKAAAgA0HwB2oiCiACEHogAygC9AchAiADKALwByIEQYCAgIB4RwRAIANBoAVqIANB+AdqQYwB/AoAACADKQKICSEsIAMoAoQJIQ4gA0HQA2ogA0GQCWpBzAH8CgAAIAMoAtwKIQcgAygC4AohDCADQQA6APgHIAMgDDYC9AcgAyAHNgLwByAAIAoQ6gFBgoCAgHghBSACIQogBCECDAILIAINCAwCC0Gwq8EAQRAQtAghAgwHCyAAKAL4BSIEIAFBC2oiCUkNAiAAQQA2AvgFIAQgCUcEQCAEIAlrIgQEQCAAKAL0BSIBIAEgCWogBPwKAAALIAAgBDYC+AULAkAgACgC5AUiAUGDgICAeEYNACAAQeAAaiEEAkACQAJAQQEgAUGAgICAeHMgAUEAThsOAgECAAsgBBDAAQwCCyAEENADDAELIAQQkgILIAAgCjYCZCAAIAI2AmAgAEHoAGogA0GgBWpBjAH8CgAAIAAgLDcD+AEgACAONgL0ASAAQYACaiADQdADakHMAfwKAAAgACAMNgLQAyAAIAc2AswDIABB1ANqIANBsAJqQaAB/AoAACAAIBI2AvQEIABB+ARq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Aw0UIAVBg47CAEECEMMDDRQLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAAwTCyABKAIAQZ/7wwBBESABKAIEKAIMEQAAIQAMEgtBASEAIAIgA0EBajYCDCABKAIAIgNB+f/DAEEPIAEoAgQiBSgCDCIEEQAADRECQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRMgAkEMaiABEOcERQ0BDBMLIANBhY7CAEECIAQRAAANEiACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRIgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0SCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEQtBASEAIAIgA0EBajYCDCABKAIAIgNBiIDEAEEQIAEoAgQiBSgCDCIEEQAADRACQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRIgAkEMaiABEOcERQ0BDBILIANBhY7CAEECIAQRAAANESACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDREgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0RCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEAtBASEAIAIgA0EBajYCDCABKAIAIgNBmIDEAEEQIAEoAgQiBSgCDCIEEQAADQ8CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADREgAkEMaiABEOcERQ0BDBELIANBhY7CAEECIAQRAAANECACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRAgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0QCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDwtBASEAIAIgA0EBajYCDCABKAIAIgNBqIDEAEEOIAEoAgQiBSgCDCIEEQAADQ4CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRAgAkEMaiABEOcERQ0BDBALIANBhY7CAEECIAQRAAANDyACQQE6AB8g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AAsgBSAJQYDOxgAQ8AcAC0EEQYCA0AIQmgkACwJAIANBCGoiARDXASICBEAgAEECNgIAIAAgAjYCBCABEPoBDAELIAAgA0EIakH4AfwKAAALIANB4AJqJAAPC0EEQYCAEBCaCQALQQRBgIAwEJoJAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL4RcCGX8CfCMAQbAEayIDJAAgA0IANwOYASADQgA3A5ABIANCADcDiAEgA0IANwOAASADQgA3A3ggA0IANwNwIANCADcDaCADQgA3A2AgA0IANwNYIANCADcDUCADQgA3A0ggA0IANwNAIANCADcDOCADQgA3AzAgA0IANwMoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwAgA0IANwO4AiADQgA3A7ACIANCADcDqAIgA0IANwOgAiADQgA3A5gCIANCADcDkAIgA0IANwOIAiADQgA3A4ACIANCADcD+AEgA0IANwPwASADQgA3A+gBIANCADcD4AEgA0IANwPYASADQgA3A9ABIANCADcDyAEgA0IANwPAASADQgA3A7gBIANCADcDsAEgA0IANwOoASADQgA3A6ABIANCADcD2AMgA0IANwPQAyADQgA3A8gDIANCADcDwAMgA0IANwO4AyADQgA3A7ADIANCADcDqAMgA0IANwOgAyADQgA3A5gDIANCADcDkAMgA0IANwOIAyADQgA3A4ADIANCADcD+AIgA0IANwPwAiADQgA3A+gCIANCADcD4AIgA0IANwPYAiADQgA3A9ACIANCADcDyAIgA0IANwPAAiADQeADakEAQdAA/AsAQaS5yAAoAgAiCSEGIAJBA2tBGG0iBUEAIAVBAEobIgshBSALQQJ0QbS5yABqIQcDQCADIARBA3RqIAVBAEgEfEQAAAAAAAAAAAUgBygCALcLOQMAIAQgBkkiCgRAIAdBBGohByAFQQFqIQUgBCAKaiIEIAZNDQELC0EAIQUDQEEAIQQgA0HAAmogBUEDdGogHCAAIARBA3RqKwMAIAMgBSAEa0EDdGorAwCioDkDACAFIAlJIgQEQCAEIAVqIgUgCU0NAQsLRAAAAAAAAPB/RAAAAAAAAOB/IAIgC0FobGoiCkEYayIGQf4PSyIPG0QAAAAAAAAAAEQAAAAAAABgAyAG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EMcEDQkgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGD+sMAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQkgACABEMcERQ0BDAkLIARBhY7CAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQggAigCIEGDjsIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEGd+sMAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQggACABEMcERQ0BDAgLIARBhY7CAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQcgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0HCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBgsgASgCAEG4+sMAQRYgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRBzvrDAEESIAEoAgQiBigCDCIFEQAADQQCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQYgACgCCCAAKAIMIAEQwQJFDQEMBgsgBEGFjsIAQQIgBREAAA0FIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/CADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUaiIENgIgIAAoAgggACgCDCACQSBqEMECDQUgBEGDjsIAQQIQwwMNBQsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRB4PrDAEEQIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQUgACgCCCAAKAIMIAEQwQJFDQEMBQsgBEGFjsIAQQIgBREAAA0EIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/C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ACAAKQPYAiACrXwiCTcD4AIgACAJNwPYAgJAAkACQCABKAKkAkEBRgRAIAAgASgClAIiAjYCiAMgACABKAK0ASABKALAASIDIAEoArABGyIFNgKMAyAFRQ0BIAMgBW4iByADIAUgB2xHaiIFIAJGBEAgAS0AqAIhAiABIARBACAGQQFxGzYCJCABIAM2AiAgASACQQFxIgM6ACggAEH4AWogAUEgahDqASABKALQASIEQQJHBEACfSAALQDQAiICQQJGBEBDAABAwSENQwAAEEEhDkMAAIA/IRBBACECQwAAgD8hEUMAAIA/IRJDAACAPyETQwAAAAAMAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAswCIRAgACoCyAIhESAAKgLEAiESIAAqAsACIQ4gACoCvAIhDSAAKgK4AiETIAAqArQCCyEPIAAgASoChAIgECABKAKAAhs4AswCIAAgASoC/AEgESABKAL4ARs4AsgCIAAgASoC9AEgEiABKALwARs4AsQCIAAgASoC7AEgDiABKALoARs4AsACIAAgASoC5AEgDSABKALgARs4ArwCIAAgASoC3AEgEyABKALYARs4ArgCIAAgAiABLQCIAiICIAJBAkYbOgDQAiAAIAEqAtQBIA8gBEEBcRs4ArQCIAAgAS0AIjoA0wIgACABLwEgOwDRAgsgA0UNBAJ9IAAtANACQQJGBED9DAAAAAAAAIA/AABAwQAAEEEhFEMAAIA/IQ1DAACAPyEOQwAAgD8MAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAsgCIQ0gACoCxAIhDiAA/QACtAIhFCAAKgLMAgshDyAAQQE6ANACIAAgDzgCzAIgACANOALIAiAAIA44AsQCIAAgFP0LArQCIAAgAS8BIDsA0QIgACABLQAiOgDTAgwECyABIAU2AswCIAFCgICAgBAiCSAAQYgDaq2ENwMoIAEgCSABQcwCaq2ENwMgIAFBwAJqIgBBxYTAACABQSBqELcHIAAQvQghAwwCCyABIAFBpAJqrUKAgICAEIQ3AyAgAUG0AmoiAEHkksAAIAFBIGoQtwcgABC9CCEDIAEoApQCIQIMAQtB/OXBABCdCgALIAEoApACIQQgAgRAIARBJGohAANAIABBBGsoAgAiBUEASgRAIAAoAgAgBUEBEMEHCyAAQTBqIQAgAkEBayICDQALCyABKAKMAiIABEAgBCAAQTBsQQgQwQcLIAEoApgCIgBBAEwNCiABKAKcAiAAQQEQwQcMCgsCQCAAKAIAQQJGDQAgACgCaCEEIAAoAmwiAgRAIARBJGohAwNAIANBBGsoAgAiBUEASgRAIAMoAgAiBkEEaygCACIHQXhxIghBBEEIIAdBA3EiBxsgBWpJDQUgB0EAIAggBUEnaksbDQYgBhCiAgsgA0EwaiEDIAJBAWsiAg0ACwsgACgCZCICBEAgBCACQTBsQQgQwQcLIAAoAnAiAkEATA0AIAAoAnQgAkEBEMEHCyAAIAFBqAFqQYgB/AoAAAsgACgCACEDDAILQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyADQQJHBEACQAJAAkAgACgChAMgACgCiANPDQAgACgCiAFBAkYEQCABQagBaiAAEOoCIAEtAKgBDQkgAS0AqQFBAUcNBQsgAUGoAWogABBhIAEtAKgBDQcgAS0AqQFBAUcNBCAAKQPwAiIJIAApA9gCIgtWBEAgACgCgAMhAiAAQQA2AoADIAIgCSALfSIKIAKtIgwgCiAMVBsiCqciA2shBAJAAkAgClBFBEAgAiADRg0CIARFDQEgACgC/AIiAiACIANqIAT8CgAADAELIAIgA0YNAQsgACAENgKAAwsgACAKIAt8Igs3A9gCIAkgC1YNBQsCQCAAKAKIAUECRg0AIAAoAuQBIgJFDQAgACgC6AEiA0EEaygCACIEQXhxIgUgAkEobCICQQRBCCAEQQNxIgQbakkNAiAEQQAgBSACQSdqSxsNAyADEKICCyAAQQI2AogBIAAgACgChANBAWoiAjYChAMgAiAAKAKIA08NAANAIAFBqAFqIgIgABDqAiABLQCoAUEBRg0JQQAhAyABLQCpAUUNCiACIAAQYSABLQCoAQ0IIAEtAKkBQQFHDQogACkD8AIiCSAAKQPYAiILVgRAIAAoAoADIQIgAEEANgKAAyACIAkgC30iCiACrSIMIAogDFQbIgqnIgRrIQUCQAJAIApQRQRAIAIgBEYNAiAFRQ0BIAAoAvwCIgIgAiAEaiAF/AoAAAwBCyACIARGDQELIAAgBTYCgAMLIAAgCiALfCILNwPYAiAJIAtWDQsLAkAgACgCiAFBAkYNACAAKALkASICRQ0AIAAoAugBIgNBBGsoAgAiBEF4cSIFIAJBKGwiAkEEQQggBEEDcSIEG2pJDQMgBEEAIAUgAkEnaksbDQQgAxCiAgsgAEECNgKIASAAIAAoAoQDQQFqIgI2AoQDIAIgACgCiANJDQALCyAAQQE6AJwDIAA1AoADIQlBACEDIABBADYCgAMgACAJIAApA9gCfDcD2AIMCAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAFBqAFqIAAQYSABLQCoAQ0CIAEtAKkBQQFHDQAgACkD8AIiCyAAKQPYAiIJWARAIAAoAoADIQIMAgsgACgCgAMhBEEAIQIgAEEANgKAAyAEIAsgCX0iCiAErSIMIAogDFQbIgqnIgVrIQMCQAJAIApQRQRAIAQgBUYNAiADRQ0BIAAoAvwCIgIgAiAFaiAD/AoAAAwBCyAEIAVGDQELIAAgAzYCgAMgAyECCyAAIAkgCnwiCTcD2AIgCSALWg0BC0EAIQMMBAtBACEDIABBADYCgAMgAEEBOgCcAyAAIAkgAq18NwPYAgwDCyABKAKsASEDDAILIAEoAqwBIQMMAQsgASgCrAEhAwsgAUHQAmokACADC4YUAgd9Fn8jAEEQayIOJAAgABDIBSAAQQA6APABIABCADcD6AEgACACEOYEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQCAAKAIQQQFHDQAgACgCGEUNACACQQJ0Ig8gACgCtAEiE0sNFCAPIAAoAsABIhRLDRUgACgCsAEhGCAAKAK8ASEaIA4gACgCFCIdIAFBAnQiGyABIAJqQQJ0IhwQlwkiARCDCyIMNgIIIA4gDzYCDCAMIA9HDRYgGCAPIAEQrQogAUGECE8EQCABEL4HCyACBEAgGEEMaiEeIA9BAWshHyAPQQJrISAgD0EDayEhIAJB/////wNxIRkgBEEDayEBQQAhDANAIAFBAWoiEkEDbiABQQJqIhFBA24gBCAMTQ0bIAxBAWoiECAETw0cIAxBAmoiECAETw0dIBlFDR5DAAB/QyADQQRqKgIAIgmLIgVDAACAP0MAAPhBQwAAAAAgA0EIaioCACIKiyIHIAUgBSAFXBsiBSAFIAcgByAHXBsiBiAFIAZeGyIFIAMqAgAiC4siBiAGIAZcGyIIIAggBSAFIAVcGyIFIAUgCF0bEMIFjkMAAHBBkiIFIAVDAAAAAF0bIgUgBUMAAPhBXhsQhQj8ACIQQQ9rENgGQwAAf0OVIgWVIgggCEMAAH9DXhsQhQghCCAVIB5qQwAAf0MgBiAFlSIGIAZDAAB/Q14bEIUI/AEgEEEbdEGAgIAIQQAgC0MAAAAAXRtyQYCAgBBBACAJQwAAAABdG3JBgICAIEEAIApDAAAAAF0bcnIgCPwBQQh0ckMAAH9DIAcgBZUiByAHQwAAf0NeGxCFCPwBQRB0cjYCACARQQNJDQYgEkEDSQ0LIAFBA0kNECANIA9GDRVDAAB/QyADQRBqKgIAIgmLIgVDAACAP0MAAPhBQwAAAAAgA0EUaioCACIKiyIHIAUgBSAFXBsiBSAFIAcgByAHXBsiBiAFIAZeGyIFIANBDGoqAgAiC4siBiAGIAZcGyIIIAggBSAFIAVcGyIFIAUgCF0bEMIFjkMAAHBBkiIFIAVDAAAAAF0bIgUgBUMAAPhBXhsQhQj8ACIRQQ9rENgGQwAAf0OVIgWVIgggCEMAAH9DXhsQhQghCCAVIBpqIhJDAAB/QyAGIAWVIgYgBkMAAH9DXhsQhQj8ASARQRt0QYCAgAhBACALQwAAAABdG3JBgICAEEEAIAlDAAAAAF0bckGAgIAgQQAgCkMAAAAAXRtyciAI/AFBCHRyQwAAf0MgByAFlSIHIAdDAAB/Q14bEIUI/AFBEHRyNgIAQQFqIhFBAkYNBUEBaiIWQQJGDQogAUEDbkEBaiIXQQJGDQ8gDSAfRg0TQwAAf0MgA0EcaioCACIJiyIFQwAAgD9DAAD4QUMAAAAAIANBIGoqAgAiCosiByAFIAUgBVwbIgUgBSAHIAcgB1wbIgYgBSAGXhsiBSADQRhqKgIAIguLIgYgBiAGXBsiCCAIIAUgBSAFXBsiBSAFIAhdGxDCBY5DAABwQZIiBSAFQwAAAABdGyIFIAVDAAD4QV4bEIUI/AAiEEEPaxDYBkMAAH9DlSIFlSIIIAhDAAB/Q14bEIUIIQggEkEEakMAAH9DIAYgBZUiBiAGQwAAf0NeGxCFCPwBIBBBG3RBgICACEEAIAtDAAAAAF0bckGAgIAQQQAgCUMAAAAAXRtyQYCAgCBBACAKQwAAAABdG3JyIAj8AUEIdHJDAAB/QyAHIAWVIgcgB0MAAH9DXhsQhQj8AUEQdHI2AgAgEUEDRg0EIBZBA0YNCSAXQQNGDQ4gDSAgRg0UQwAAf0MgA0EoaioCACIJiyIFQwAAgD9DAAD4QUMAAAAAIANBLGoqAgAiCosiByAFIAUgBVwbIgUgBSAHIAcgB1wbIgYgBSAGXhsiBSADQSRqKgIAIguLIgYgBiAGXBsiCCAIIAUgBSAFXBsiBSAFIAhdGxDCBY5DAABwQZIiBSAFQwAAAABdGyIFIAVDAAD4QV4bEIUI/AAiEEEPaxDYBkMAAH9DlSIFlSIIIAhDAAB/Q14bEIUIIQggEkEIakMAAH9DIAYgBZUiBiAGQwAAf0NeGxCFCPwBIBBBG3RBgICACEEAIAtDAAAAAF0bckGAgIAQQQAgCUMAAAAAXRtyQYCAgCBBACAKQwAAAABdG3JyIAj8AUEIdHJDAAB/QyAHIAWVIgcgB0MAAH9DXhsQhQj8AUEQdHI2AgAgEUEERg0DIBZBBEYNCCAXQQRGDQ0gDSAhRg0SQwAAf0MgA0E0aioCACIJiyIFQwAAgD9DAAD4QUMAAAAAIANBOGoqAgAiCosiByAFIAUgBVwbIgUgBSAHIAcgB1wbIgYgBSAGXhsiBSADQTBqKgIAIguLIgYgBiAGXBsiCCAIIAUgBSAFXBsiBSAFIAhdGxDCBY5DAABwQZIiBSAFQwAAAABdGyIFIAVDAAD4QV4bEIUI/AAiEUEPaxDYBkMAAH9DlSIFlSIIIAhDAAB/Q14bEIUIIQggEkEMakMAAH9DIAYgBZUiBiAGQwAAf0NeGxCFCPwBIBFBG3RBgICACEEAIAtDAAAAAF0bckGAgIAQQQAgCUMAAAAAXRtyQYCAgCBBACAKQwAAAABdG3JyIAj8AUEIdHJDAAB/QyAHIAWVIgcgB0MAAH9DXhsQhQj8AUEQdHI2AgAgA0E8aiEDIAxBD2ohDCAVQRBqIRUgGUEBayEZIA1BBGohDSABQQ9rIQEgAkEBayICDQALCyAOIB0gGyAcEJcJIgEQgwsiAjYCCCAOIBM2AgwgAiATRw0XIAEgGCATEKsKIAFBhAhPBEAgARC+BwsgDiAAKAIcIBsgHBCXCSIAEIMLIgE2AgggDiAUNgIMIAEgFEcNGCAAIBogFBCrCiAAQYQISQ0AIAAQvgcLIA5BEGokAA8LIAxBDGoMAwsgDEEJagwCCyAMQQZqDAELIAxBA2oLIARBkLbBABDwBwALIAxBDWoMAwsgDEEKagwCCyAMQQdqDAELIAxBBGoLIARBoLbBABDwBwALIAxBDmoMAwsgDEELagwCCyAMQQhqDAELIAxBBWoLIARBsLbBABDwBwALIA1BA2ohDQwCCyANQQFqIQ0MAQsgDUECaiENCyANIA9BwLbBABDwBwALQQAgDyATQdC2wQAQoAUAC0EAIA8gFEHAtcEAEKAFAAtBACAOQQhqIA5BDGpBACADQdChxAAQoAgAC0EAIA5BCGogDkEMakEAIAFB0KHEABCgCAALQQAgDkEIaiAOQQxqQQAgAEHQocQAEKAIAAsgDCAEQdC1wQAQ8AcACyAQIARB4LXBABDwBwALIBAgBEHwtcEAEPAHAAsgDUEDaiAPQYC2wQAQ8AcAC4kOAQd/AkACQCAAKALgAiIBBEAgACgC5AIiBEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgC8AIiASgC+AYiAkEEaygCACIEQXhxQYSAAUGIgAEgBEEDcSIDG0kNACADQQAgBEGogAFPGw0BIAIQogIgASgC4AYiBARAIAEoAuQGIgJBBGsoAgAiA0F4cSIGIARBAXQiBEEEQQggA0EDcSIDG2pJDQEgA0EAIAYgBEEnaksbDQIgAhCiAgsgASgC/AYiAkEEaygCACIEQXhxQYQQQYgQIARBA3EiAxtJDQAgA0EAIARBqBBPGw0BIAIQogIgASgC7AYiBARAIAEoAvAGIgJBBGsoAgAiA0F4cSIGIARBAXQiBEEEQQggA0EDcSIDG2pJDQEgA0EAIAYgBEEnaksbDQIgAhCiAgsgAUEEaygCACIEQXhxQawHQbAHIARBA3EiAhtJDQAgAkEAIARB0AdPGw0BIAEQogICQCAAKAIIQQJGDQAgACgCyAEiAUEASgRAIAAoAswBIgRBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0CIAJBACADIAFBJ2pLGw0DIAQQogILIAAoAtQBIgFBAEoEQCAAKALYASIEQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNAiACQQAgAyABQSdqSxsNAyAEEKICCyAAKALgASIBQQBKBEAgACgC5AEiBEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDQIgAkEAIAMgAUEnaksbDQMgBBCiAgsgACgC7AEiAUEASgRAIAAoAvABIgRBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0CIAJBACADIAFBJ2pLGw0DIAQQogILIAAoAvgBIgFBAEoEQCAAKAL8ASIEQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNAiACQQAgAyABQSdqSxsNAyAEEKICCyAAKAKEAiIBQQBKBEAgACgCiAIiBEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDQIgAkEAIAMgAUEnaksbDQMgBBCiAgsgACgCqAEhBCAAKAKsASICBEAgBCEBA0AgASgCACIDBEAgAUEEaigCACIGQQRrKAIAIgVBeHEiB0EEQQggBUEDcSIFGyADakkNBCAFQQAgByADQSdqSxsNBSAGEKICCyABQQxqKAIAIgMEQCABQRBqKAIAIgZBBGsoAgAiBUF4cSIHQQRBCCAFQQNxIgUbIANqSQ0EIAVBACAHIANBJ2pLGw0FIAYQogILIAFBGGohASACQQFrIgINAAsLIAAoAqQBIgEEQCAEQQRrKAIAIgJBeHEiAyABQRhsIgFBBEEIIAJBA3EiAhtqSQ0CIAJBACADIAFBJ2pLGw0DIAQQogILIAAoArQBIQQgACgCuAEiAgRAIARBFGohAQNAIAFBBGsoAgAiAwRAIAEoAgAiBkEEaygCACIFQXhxIgdBBEEIIAVBA3EiBRsgA2pJDQQgBUEAIAcgA0EnaksbDQUgBhCiAgsgAUEQaygCACIDBEAgAUEMaygCACIGQQRrKAIAIgVBeHEiB0EEQQggBUEDcSIFGyADakkNBCAFQQAgByADQSdqSxsNBSAGEKICCyABQRxqIQEgAkEBayICDQALCyAAKAKwASIBBEAgBEEEaygCACICQXhxIgMgAUEcbCIBQQRBCCACQQNxIgIbakkNAiACQQAgAyABQSdqSxsNAyAEEKICCyAAKALAASEEIAAoAsQBIgIEQCAEIQEDQCABQRBqKAIAIgMEQCABQRRqKAIAIgZBBGsoAgAiBUF4cSIHQQRBCCAFQQNxIgUbIANqSQ0EIAVBACAHIANBJ2pLGw0FIAYQogILIAFBHGooAgAiAwRAIAFBIGooAgAiBkEEaygCACIFQXhxIgdBBEEIIAVBA3EiBRsgA2pJDQQgBUEAIAcgA0EnaksbDQUgBhCiAgsgAUEoaigCACIDBEAgAUEsaigCACIGQQRrKAIAIgVBeHEiB0EEQQggBUEDcSIFGyADakkNBCAFQQAgByADQSdqSxsNBSAGEKICCyABQQRqKAIAIgMEQCABQQhqKAIAIgZBBGsoAgAiBUF4cSIHQQRBCCAFQQNxIgUbIANqSQ0EIAVBACAHIANBJ2pLGw0FIAYQogILIAFBOGohASACQQFrIgINAAsLIAAoArwBIgBFDQAgBEEEaygCACIBQXhxIgIgAEE4bCIAQQRBCCABQQNxIgEbakkNASABQQAgAiAAQSdqSxsNAiAEEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC5MXAh17Fn8CQAJAAkACQCABQQJLBEAgA0UNASAFRQ0CIAdFDQMgAEH/ASACLQAAQYWVAWxBCHYiKCAELQAAIiVBmoICbEEIdmpBlYoBa0EGdSInQQAgJ0EAShsiJyAnQf8BThs6AAIgAEH/ASAoIAYtAAAiKUGlzAFsQQh2akGa7wBrQQZ1IidBACAnQQBKGyInICdB/wFOGzoAACAAQf8BICggJUGTMmxBCHYgKUGI6ABsQQh2amtBhMQAakEGdSIoQQAgKEEAShsiKCAoQf8BThs6AAEgAkEBaiEoIANBAWsiAkF+cSEyIABBA2ohJyACQQFxITUgAUEDayIAIABBBnAiM2siLkEGSQ0EAkAgAkEBdiIAIC5BBmtBBm4iASAAIAFJGyIAIAdBAWsiASAAIAFJGyIAIAVBAWsiASAAIAFJGyIAQQhJBEAgBCEmIAUhLyAGISwgByEwIC4hNCAnIQAgMiExICghAgwBCyAAQQFqIgFBB3EiAkEIIAIbIgIgAEF/c2ohKiAHIAEgAmsiAWshMCABIAZqISwgBSABayEvIAEgBGohJiAoIAFBAXQiAGohAiAyIABrITEgJyABQQZsaiEAIC4gAUF6bGohNCAEQQFqIQEgBkEBaiEDICX9DyEVICn9DyEZICchJSAoISkDQCAlICn9AAAAIg0gFf0NCAoMDgAAAAAAAAAAAAAAAP2JAf2pAf0MhUoAAIVKAACFSgAAhUoAACIQ/bUBQQj9rQEiESAVIAH9XQAAIhX9DQcQERITFBUWAAAAAAAAAAD9iQEiEv0MAwADAAMAAwADAAMAAwADACIL/ZUB/QwIAAgACAAIAAgACAAIAAgAIg79jgEiFiAS/QwJAAkACQAJAAkACQAJAAkAIg/9lQH9jgEgFf2JASIT/Y4BIBMgC/2VASIX/Y4BQQT9jQEiGP2qASIa/QwagQAAGoEAABqBAAAagQAAIhv9tQFBCP2tAf2uAf0M67r//+u6///ruv//67r//yIc/a4BQQb9rAH9DAAAAAAAAAAAAAAAAAAAAAAiCP24Af0M/wAAAP8AAAD/AAAA/wAAACIJ/bYBIh0gGSAD/V0AACIZ/Q0HEBESExQVFgAAAAAAAAAA/YkBIgogC/2VASAO/Y4BIh4gCv2OASAZ/YkBIgwgD/2VAf2OASAMIAv9lQEiH/2OAUEE/Y0BIiD9qgEiIf0MJWYAACVmAAAlZgAAJWYAACIL/bUBQQj9rQEgDSAI/Q0JCw0PAAAAAAAAAAAAAAAA/YkB/akBIBD9tQFBCP2tASIU/a4B/QxmyP//Zsj//2bI//9myP//Ig79rgFBBv2sASAI/bgBIAn9tgEiIv0NBBQAAAAACBgAAAAADBwAACAUIBYgEv2OASATIA/9lQH9jgEgF/2OAUEE/Y0BIiP9qgEiJP0MExkAABMZAAATGQAAExkAACIS/bUBQQj9rQEgIf0MCDQAAAg0AAAINAAACDQAACIT/bUBQQj9rQH9rgH9sQH9DAQiAAAEIgAABCIAAAQiAAAiFv2uAUEG/awBIAj9uAEgCf22ASIX/RsB/RcCICQgG/21AUEI/a0BIBT9rgEgHP2uAUEG/awBIAj9uAEgCf22ASIU/RsB/RcDIBEgHiAKIA/9lQH9jgEgDP2OASAf/Y4BQQT9jQEiDP2qASIKIAv9tQFBCP2tAf2uASAO/a4BQQb9rAEgCP24ASAJ/bYBIg/9GwL9FwQgESAaIBL9tQFBCP2tASAKIBP9tQFBCP2tAf2uAf2xASAW/a4BQQb9rAEgCP24ASAJ/bYBIhH9GwL9FwUgF/0bAv0XCCAU/RsC/RcJIA/9GwP9FwogEf0bA/0XCyAX/RsD/RcOIBT9GwP9Fw/9CwAgICUgDSAI/Q0AAgQGAAAAAAAAAAAAAAAA/YkB/akBIBD9tQFBCP2tASIKIAz9qQEiDCAL/bUBQQj9rQH9rgEgDv2uAUEG/awBIAj9uAEgCf22ASIaIAogGP2pASIYIBL9tQFBCP2tASAMIBP9tQFBCP2tAf2uAf2xASAW/a4BQQb9rAEgCP24ASAJ/bYBIgz9DQAQAAAAAAQUAAAAAAgYAAAgCiAYIBv9tQFBCP2tAf2uASAc/a4BQQb9rAEgCP24ASAJ/bYBIgr9GwD9FwIgIP2pASIYIAv9tQFBCP2tASANIAj9DQEDBQcAAAAAAAAAAAAAAAD9iQH9qQEgEP21AUEI/a0BIhD9rgEgDv2uAUEG/awBIAj9uAEgCf22ASIN/RsA/RcDIBAgI/2pASIOIBL9tQFBCP2tASAYIBP9tQFBCP2tAf2uAf2xASAW/a4BQQb9rAEgCP24ASAJ/bYBIgv9GwD9FwQgDiAb/bUBQQj9rQEgEP2uASAc/a4BQQb9rAEgCP24ASAJ/bYBIgj9GwD9FwUgCv0bAf0XCCAN/RsB/RcJIAv9GwH9FwogCP0bAf0XCyAK/RsC/RcOIA39GwL9Fw/9CwAAICUgCyAI/Q0IGAAAAAAMHAAAAAAAAAAAIBr9GwP9FwIgDP0bA/0XAyAK/RsD/RcEIA39GwP9FwUgD/0bAP0XCCAR/RsA/RcJIB39GwD9FwogIv0bAP0XCyAX/RsA/RcMIBT9GwD9Fw0gD/0bAf0XDiAR/RsB/RcP/QsAECABQQhqIQEgA0EIaiEDICVBMGohJSApQRBqISkgKkEIaiIqDQALIBX9FgchJSAZ/RYHISkLICxBAWohASAmQQFqIQMDQCAxRSAvQQJJciAwQQFNcg0FIABBAmpB/wEgAi0AAEGFlQFsQQh2IiYgJUH/AXEiLEEDbEEIaiIrICxBCWxqIAMtAAAiJWogJUEDbCI2akHw/wFxQQR2IjdBmoICbEEIdmpBlYoBa0EGdSIqQQAgKkEAShsiKiAqQf8BThs6AAAgAEH/ASAmIClB/wFxIipBA2xBCGoiOCAqQQlsaiABLQAAIilqIClBA2wiOWpB8P8BcUEEdiI6QaXMAWxBCHZqQZrvAGtBBnUiLUEAIC1BAEobIi0gLUH/AU4bOgAAIABBBWpB/wEgAkEBai0AAEGFlQFsQQh2Ii0gKyAsaiAlQQlsaiA2akHw/wBxQQR2IixBmoICbEEIdmpBlYoBa0EGdSIrQQAgK0EAShsiKyArQf8BThs6AAAgAEEDakH/ASAqIDhqIClBCWxqIDlqQfD/AHFBBHYiKkGlzAFsQQh2IC1qQZrvAGtBBnUiK0EAICtBAEobIisgK0H/AU4bOgAAIABBAWpB/wEgJiA3QZMybEEIdiA6QYjoAGxBCHZqa0GExABqQQZ1IiZBACAmQQBKGyImICZB/wFOGzoAACAAQQRqQf8BIC0gLEGTMmxBCHYgKkGI6ABsQQh2amtBhMQAakEGdSImQQAgJkEAShsiJiAmQf8BThs6AAAgAEEGaiEAIAJBAmohAiABQQFqIQEgA0EBaiEDIDBBAWshMCAvQQFrIS8gMUECayExIDRBBmsiNEEGTw0ACwwEC0EAQQMgAUGgl8QAEKAFAAtBAEEAQbCXxAAQ8AcAC0EAQQBBwJfEABDwBwALQQBBAEHQl8QAEPAHAAsCQAJAAkAgNQRAIDNFDQEgBCAFakEBay0AACEAICcgLmoiAUH/ASAoIDJqLQAAQYWVAWxBCHYiAiAGIAdqQQFrLQAAIgNBpcwBbEEIdmpBmu8Aa0EGdSIEQQAgBEEAShsiBCAEQf8BThs6AAAgM0EBRg0CIAFB/wEgAiAAQZMybEEIdiADQYjoAGxBCHZqa0GExABqQQZ1IgNBACADQQBKGyIDIANB/wFOGzoAASAzQQJNDQMgAUH/ASAAQZqCAmxBCHYgAmpBlYoBa0EGdSIAQQAgAEEAShsiACAAQf8BThs6AAILDwtBAEEAQfCYxAAQ8AcAC0EBQQFBgJnEABDwBwALQQJBAkGQmcQAEPAHAAuREwMGfgx/AXsCQAJAAkACQAJAIAAoAgwiEUEBaiIIBEACQCAAKAIEIgwgDEEBaiINQQN2IgpBB2wiDyAMQQhJGyIJQQF2IAhJBEAgCUEBaiIJIAggCCAJSRsiCEEPSQ0BIAhB/////wFNBEBBfyAIQQN0QQduQQFrZ3YiCEH+////AEsNCCAIQQFqIQgMBAsMBwsgACANBH8gACgCACEJAkACQCAKIA1BB3FBAEdqIg5BAkkEQCAOIQAMAQsgDkEBcSEAIA5B/v///wNxIgtBA3QhECALIQogCSEIA0AgCCAI/QADACIU/U1BB/3NAf0MAQEBAQEBAQEBAQEBAQEBAf1OIBT9DH9/f39/f39/f39/f39/f3/9UP3OAf0LAwAgCEEQaiEIIApBAmsiCg0ACyALIA5GDQELIAkgEGohCANAIAggCCkDACICQn+FQgeIQoGChIiQoMCAAYMgAkL//v379+/fv/8AhHw3AwAgCEEIaiEIIABBAWsiAA0ACwsCQCANQQhPBEAgCSANaiAJKQAANwAADAELIA1FDQAgCUEIaiAJIA38CgAACyABKQMAIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQhBSACQn+FIQYgASkDCCEEQQAhAANAAkAgCSAAIghqIgstAABBgAFHDQAgCSAIQQR0a0EQayEQIAkgCEF/c0EEdGohAANAIAwgBCAQNQIAhSIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQgA0LYotHvwqnlvy1+hSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEIAZ+IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgAiAFfoUgAomnIg1xIgohASAJIApqKQAAQoCBgoSIkKDAgH+DIgJQBEBBCCEOA0AgASAOaiEBIA5BCGohDiAJIAEgDHEiAWopAABCgIGChIiQoMCAf4MiAlANAAsLIAkgAnqnQQN2IAFqIAxxIgFqLAAAQQBOBEAgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IQELAkAgASAKayAIIAprcyAMcUEITwRAIAEgCWoiCi0AACAKIA1BGXYiCjoAACAJIAFBCGsgDHFqQQhqIAo6AAAgCSABQX9zQQR0aiEBQf8BRw0BIAtB/wE6AAAgCSAMIAhBCGtxakEIakH/AToAACABIAD9AAAA/QsAAAwDCyALIA1BGXYiADoAACAJIAwgCEEIa3FqQQhqIAA6AAAMAgsgAP0AAAAhFCAAIAH9AAAA/QsAACABIBT9CwAADAALAAsgCEEBaiEAIAggDEcNAAsgDCAPIAxBCEkbBUEACyARazYCCAwDC0EEIAhBCHFBCGogCEEESRshCAwBCwwECyAIQQhqIgkgCEEEdCIOaiIKIAlJIApB+P///wdLcg0DIAoQbiILRQRAIAoQsQoACyALIA5qIQsgCQRAIAtB/wEgCfwLAAsgCEEBayINIAhBA3ZBB2wgCEEJSRshECAAKAIAIQkgEQRAIAEpAwAiAkI4hiACQoD+A4NCKIaEIAJCgID8B4NCGIYgAkKAgID4D4NCCIaEhCACQgiIQoCAgPgPgyACQhiIQoCA/AeDhCACQiiIQoD+A4MgAkI4iISEhCEGIAJCf4UhByAJKQMAQn+FQoCBgoSIkKDAgH+DIQQgASkDCCEFIAkhDiARIQFBACEIA0AgBFAEQANAIAhBCGohCCAOQQhqIg4pAwBCgIGChIiQoMCAf4MiAkKAgYKEiJCgwIB/UQ0ACyACQoCBgoSIkKDAgH+FIQQLIAsgDSAFIAkgBHqnQQN2IAhqIhJBBHRrQRBrNQIAhSIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQgA0LYotHvwqnlvy1+hSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEIAd+IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgAiAGfoUgAomnIhNxIgpqKQAAQoCBgoSIkKDAgH+DIgJQBEBBCCEPA0AgCiAPaiEKIA9BCGohDyALIAogDXEiCmopAABCgIGChIiQoMCAf4MiAlANAAsLIARCAX0gBIMhBCALIAJ6p0EDdiAKaiANcSIKaiwAAEEATgRAIAspAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAKIAtqIBNBGXYiDzoAACALIApBCGsgDXFqQQhqIA86AAAgCyAKQX9zQQR0aiAJIBJBf3NBBHRq/QAAAP0LAAAgAUEBayIBDQALCyAAIA02AgQgACALNgIAIAAgECARazYCCCAMRQ0AIAwgDEEEdEEXakFwcSIBakEJaiIARQ0AIAkgAWsiAUEEaygCACIIQXhxIglBBEEIIAhBA3EiCBsgAGpJDQEgCEEAIAkgAEEnaksbDQIgARCiAg8LDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQaDowwBBOUG86MMAEJMIAAuJEwMGfgx/AXsCQAJAAkACQAJAIAAoAgwiEUEBaiIIBEACQCAAKAIEIgwgDEEBaiINQQN2IgpBB2wiDyAMQQhJGyIJQQF2IAhJBEAgCUEBaiIJIAggCCAJSRsiCEEPSQ0BIAhB/////wFNBEBBfyAIQQN0QQduQQFrZ3YiCEH+////AUsNCCAIQQFqIQgMBAsMBwsgACANBH8gACgCACEJAkACQCAKIA1BB3FBAEdqIg5BAkkEQCAOIQAMAQsgDkEBcSEAIA5B/v///wNxIgtBA3QhECALIQogCSEIA0AgCCAI/QADACIU/U1BB/3NAf0MAQEBAQEBAQEBAQEBAQEBAf1OIBT9DH9/f39/f39/f39/f39/f3/9UP3OAf0LAwAgCEEQaiEIIApBAmsiCg0ACyALIA5GDQELIAkgEGohCANAIAggCCkDACICQn+FQgeIQoGChIiQoMCAAYMgAkL//v379+/fv/8AhHw3AwAgCEEIaiEIIABBAWsiAA0ACwsCQCANQQhPBEAgCSANaiAJKQAANwAADAELIA1FDQAgCUEIaiAJIA38CgAACyABKQMAIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQhBSACQn+FIQYgASkDCCEEQQAhAANAAkAgCSAAIghqIgstAABBgAFHDQAgCSAIQQN0a0EIayEQIAkgCEF/c0EDdGohAANAIAwgBCAQNQIAhSIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQgA0LYotHvwqnlvy1+hSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEIAZ+IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgAiAFfoUgAomnIg1xIgohASAJIApqKQAAQoCBgoSIkKDAgH+DIgJQBEBBCCEOA0AgASAOaiEBIA5BCGohDiAJIAEgDHEiAWopAABCgIGChIiQoMCAf4MiAlANAAsLIAkgAnqnQQN2IAFqIAxxIgFqLAAAQQBOBEAgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IQELAkAgASAKayAIIAprcyAMcUEITwRAIAEgCWoiCi0AACAKIA1BGXYiCjoAACAJIAFBCGsgDHFqQQhqIAo6AAAgCSABQX9zQQN0aiEBQf8BRw0BIAtB/wE6AAAgCSAMIAhBCGtxakEIakH/AToAACABIAApAAA3AAAMAwsgCyANQRl2IgA6AAAgCSAMIAhBCGtxakEIaiAAOgAADAILIAApAAAhAiAAIAEpAAA3AAAgASACNwAADAALAAsgCEEBaiEAIAggDEcNAAsgDCAPIAxBCEkbBUEACyARazYCCAwDC0EEIAhBCHFBCGogCEEESRshCAwBCwwECyAIQQhqIgkgCEEDdCIOaiIKIAlJIApB+P///wdLcg0DIAoQbiILRQRAIAoQsQoACyALIA5qIQsgCQRAIAtB/wEgCfwLAAsgCEEBayINIAhBA3ZBB2wgCEEJSRshECAAKAIAIQkgEQRAIAEpAwAiAkI4hiACQoD+A4NCKIaEIAJCgID8B4NCGIYgAkKAgID4D4NCCIaEhCACQgiIQoCAgPgPgyACQhiIQoCA/AeDhCACQiiIQoD+A4MgAkI4iISEhCEGIAJCf4UhByAJKQMAQn+FQoCBgoSIkKDAgH+DIQQgASkDCCEFIAkhDiARIQFBACEIA0AgBFAEQANAIAhBCGohCCAOQQhqIg4pAwBCgIGChIiQoMCAf4MiAkKAgYKEiJCgwIB/UQ0ACyACQoCBgoSIkKDAgH+FIQQLIAsgDSAFIAkgBHqnQQN2IAhqIhJBA3RrQQhrNQIAhSIDQjiGIANCgP4Dg0IohoQgA0KAgPwHg0IYhiADQoCAgPgPg0IIhoSEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISEQtKBqpur+oLXp39+IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQgA0LYotHvwqnlvy1+hSICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISEIAd+IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgAiAGfoUgAomnIhNxIgpqKQAAQoCBgoSIkKDAgH+DIgJQBEBBCCEPA0AgCiAPaiEKIA9BCGohDyALIAogDXEiCmopAABCgIGChIiQoMCAf4MiAlANAAsLIARCAX0gBIMhBCALIAJ6p0EDdiAKaiANcSIKaiwAAEEATgRAIAspAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAKIAtqIBNBGXYiDzoAACALIApBCGsgDXFqQQhqIA86AAAgCyAKQX9zQQN0aiAJIBJBf3NBA3RqKQAANwAAIAFBAWsiAQ0ACwsgACANNgIEIAAgCzYCACAAIBAgEWs2AgggDEUNACAMIAxBA3RBD2pBeHEiAWpBCWoiAEUNACAJIAFrIgFBBGsoAgAiCEF4cSIJQQRBCCAIQQNxIggbIABqSQ0BIAhBACAJIABBJ2pLGw0CIAEQogIPCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC0Gg6MMAQTlBvOjDABCTCAAL5RMCDX8BfiMAQeAAayICJAACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBFGsOAgABAgsCQAJAAkAgASgCDCIEBEAgAkE4aiABKAIIIgMQsgEgAigCOCIGRQRAIAIoAjwhAwwNCyACIAL9AANI/QsDKCACKAJEIQggAigCPCEJIARBAUYNASADKAIQQZSAgIB4RgRAAkAgAygCHCIBBEAgAigCQCENIAJBOGogAygCGBCrBSACKAI4IgdBgICAgHhHDQEgAigCPCEDDAULQQAgAkHfAGpByP/AABC4ByEDDAQLIAIoAjwhCiABQQFGDQQgAkEBNgI4IAFBAWtB/////wBxQQFqIAJBOGpBgJzBABC4ByEDIAdFDQMgCiAHQQEQwQcMAwsgA0EQaiACQd8AakHI/8AAEM0IIQMMAgtBAEHwhsEAQaiqxgAQuAchAwwLC0EBQfCGwQBBqKrGABC4ByEDCyAJRQ0JIAgEQCAGQQhqIQQgBikDAEJ/hUKAgYKEiJCgwIB/gyEPIAYhAQNAIA9QBEADQCAEIgVBCGohBCABQcABayEBIAUpAwBCgIGChIiQoMCAf4MiD0KAgYKEiJCgwIB/UQ0ACyAPQoCBgoSIkKDAgH+FIQ8LIAEgD3qnQQN2QWhsaiIFQRhrKAIAIgsEQCAFQRRrKAIAIgxBBGsoAgAiBUF4cSIKQQRBCCAFQQNxIgUbIAtqSQ0PIAVBACAKIAtBJ2pLGw0OIAwQogILIA9CAX0gD4MhDyAIQQFrIggNAAsLIAlBGGwiASAJakEhaiIFRQ0JIAYgAWsiBkEcaygCACIBQXhxIgRBBEEIIAFBA3EiARsgBWpJDQwgAUEAIAQgBUEnaksbDQsgBkEYaxCiAgwJCyACKAJAIQ4gAiAC/QADKP0LAwggBEECRg0DIAJBAjYCOCAEQf7///8AakH/////AHFBAmogAkE4akGAnMEAELgHIQMCQCAJRQ0AIAgEQCAGQQhqIQQgBikDAEJ/hUKAgYKEiJCgwIB/gyEPIAYhAQNAIA9QBEADQCAEIgVBCGohBCABQcABayEBIAUpAwBCgIGChIiQoMCAf4MiD0KAgYKEiJCgwIB/UQ0ACyAPQoCBgoSIkKDAgH+FIQ8LIAEgD3qnQQN2QWhsaiIMQRhrKAIAIgUEQCAMQRRrKAIAIAVBARDBBwsgD0IBfSAPgyEPIAhBAWsiCA0ACwsgCUEYbCIEIAlqQSFqIgFFDQAgBiAEa0EYayABQQgQwQcLIAdFDQggCiAHQQEQwQcMCAsgASgCCCEEIAEoAgQhASACQgA3AiAgAiABNgIYIAIgASAEQQV0aiILNgIcIARFBEBBgICAgHghBwwECyACQcgAaiEMQYCAgIB4IQcDQCACIAFBIGoiBDYCGCACIAIoAiRBAWo2AiQgAiABQRBqIgU2AiACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAgAiA0GAgICAeHMgA0EAThtBAWsODwAGBgEGBgYGBgYGAgMEBQYLIAEtAAQiAUUNCUEBQQIgAUEBRhshAQwKCyABKQMIIg9QDQhBAUECIA9CAVEbIQEMCQsgASgCCCEDIAEoAgxBBGsOAgYFCgsgASgCBCEDAkAgASgCCEEEaw4CBAAKCyADKAAAQebSsasGcyADQQRqLQAAQfMAc3JFDQgMCQsgASgCCCEDAkACQCABKAIMQQRrDgIAAQoLIAMtAABB6QBHDQkgAy0AAUHuAEcNCSADLQACQeYARw0JIAMtAANB7wBGDQYMCQsgAy0AAEHmAEcNCCADLQABQekARw0IIAMtAAJB7ABHDQggAy0AA0HlAEcNCCADLQAEQfMARg0HDAgLIAEoAgQhAwJAAkAgASgCCEEEaw4CAAEJCyADLQAAQekARw0IIAMtAAFB7gBHDQggAy0AAkHmAEcNCCADLQADQe8ARg0FDAgLIAMtAABB5gBHDQcgAy0AAUHpAEcNByADLQACQewARw0HIAMtAANB5QBHDQcgAy0ABEHzAEYNBgwHCyABIAJB3wBqQYiCwQAQzQghA0EBDA4LIAMoAABB6dyZ+wZHDQUMAgsgAygAAEHm0rGrBnMgA0EEai0AAEHzAHNyDQQMAwsgAygAAEHp3Jn7BkcNAwsgBgRAQcyGwQBBBBCJCCEDQQEMCwsgAkEANgIgIAJBOGogBRCyASACKAI8IQMgAigCOCIGRQRAQQAhBkEBDAsLIAIgDP0AAwD9CwMoIAIoAkQhCCACKAJAIQ0gAyEJDAQLIAFBAkYNAQsgB0GAgICAeEYNAUEBIQRByITBAEEFEIkIIQMMCQsgAkEANgIgDAELIAJBOGogAkEYahDNBSACKAI8IQogAigCOCIHQYCAgIB4RgRAQQEhBCAKIQMMCQsgAigCQCEOIAIoAhwhCyACKAIYIQQLIAsgBCIBRw0ACwwBCyABIAJB3wBqQaiAwQAQzQghAwwGCyAGRQ0BIAIgAv0AAyj9CwNIIAIgCDYCRCACIA02AkAgAiAJNgI8IAIgBjYCOCAHQYCAgIB4RgRAQciEwQBBBRCGCCEDIAJBOGoQ3QRBgICAgHghB0EADAMLIAIgAv0AAyj9CwMICyAAIAL9AAMI/QsDECAAIAo2AiQgACAHNgIgIAAgCDYCDCAAIA02AgggACAJNgIEIAAgBjYCAEEoDAULQQAhBkHMhsEAQQQQhgghA0EBCyEEIAdBgICAgHhGDQELIAdFDQAgCkEEaygCACIBQXhxIgVBBEEIIAFBA3EiARsgB2pJDQQgAUEAIAUgB0EnaksbDQMgChCiAgsgCUUgBkUgBEVycg0AIAgEQCAGQQhqIQQgBikDAEJ/hUKAgYKEiJCgwIB/gyEPIAYhAQNAIA9QBEADQCAEIgVBCGohBCABQcABayEBIAUpAwBCgIGChIiQoMCAf4MiD0KAgYKEiJCgwIB/UQ0ACyAPQoCBgoSIkKDAgH+FIQ8LIAEgD3qnQQN2QWhsaiIFQRhrKAIAIgsEQCAFQRRrKAIAIgxBBGsoAgAiBUF4cSIKQQRBCCAFQQNxIgUbIAtqSQ0GIAVBACAKIAtBJ2pLGw0FIAwQogILIA9CAX0gD4MhDyAIQQFrIggNAAsLIAlBGGwiASAJakEhaiIFRQ0AIAYgAWsiBkEcaygCACIBQXhxIgRBBEEIIAFBA3EiARsgBWpJDQMgAUEAIAQgBUEnaksbDQIgBkEYaxCiAgsgACADNgIAQYGAgIB4IQ5BIAsgAGogDjYCACACQeAAaiQADwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQALnREBD38jAEHAC2siBSQAIAVBoARqIgQgAiADKAIMEQEAAkACQAJAAkACQCAF/QAEoAT9DM4/Z/nh0DIopEu0rx6BJpP9I/1jBEAgAi0ApAIiEUEGRg0CIAVB+AFqIAJBqAL8CgAAIAUoAvADIgFFDQEgBCABIAUoAvQDKAIMIgMRAQACQAJAAkACQAJAAkAgBf0ABKAE/QwY+/0XOC3lZsDFHAUZ8ZpI/SP9Y0UEQCAEIAEgAxEBACAF/QAEoAT9DCzXRG4UAu/QCv/PayMXuL39I/1jDQEgBCABIAMRAQAgBf0ABKAE/QzoFtH5mVDgyi35LfBH1fTb/SP9Yw0CIAQgASADEQEAIAX9AASgBP0MIN48PXH4veONIwfCE9zqNP0j/WMNAyAEIAEgAxEBACAF/QAEoAT9DIpjbsDRC2msnsgBTZPP+279I/1jDQQgBCABIAMRAQAgBf0ABKAE/QxEldDgCP33rLLz8xFGbHVs/SP9Yw0FQej3wQBBKUH898EAEJMIAAsgBUGgBGogAUGYB/wKAAAgBSABQfgB/AoAACAFKAKoCyIDBEAgBSgCrAsiBEEEaygCACIGQXhxIgdBBEEIIAZBA3EiBhsgA2pJDQsgBkEAIAcgA0EnaksbDQwgBBCiAgsgBSgCnAsiBEGDgICAeEcEQCAFQZgGaiEDAkACQAJAQQEgBEGAgICAeHMgBEEAThsOAgECAAsgAxDAAUGYByEDDAgLIAMQ0ANBmAchAwwHCyADEJICC0GYByEDDAULIAUgAUH4AfwKAAAgASgCzAIhByABKALIAiEDIAEoAsACIQggASgCvAIhBCABKAKUAiEMIAEoApACIQogASgCiAIhDiABKAKEAiEPIAEoAvwBIRAgASgC+AEhBiABKAKwAiIJBEAgASgCtAIiC0EEaygCACINQXhxIhJBBEEIIA1BA3EiDRsgCWpJDQogDUEAIBIgCUEnaksbDQsgCxCiAgsgBARAIAhBBGsoAgAiCUF4cSILQQRBCCAJQQNxIgkbIARqSQ0KIAlBACALIARBJ2pLGw0LIAgQogILIAMEQCAHQQRrKAIAIgRBeHEiCEEEQQggBEEDcSIEGyADakkNCiAEQQAgCCADQSdqSxsNCyAHEKICC0Hg1AAhAyAGQYCAgIB4Rg0EIAYEQCAQQQRrKAIAIgRBeHEiByAGQQJ0IgZBBEEIIARBA3EiBBtqSQ0KIARBACAHIAZBJ2pLGw0LIBAQogILIA8EQCAOQQRrKAIAIgRBeHEiBiAPQQF0IgdBBEEIIARBA3EiBBtqSQ0KIARBACAGIAdBJ2pLGw0LIA4QogILIApFDQQgDEEEaygCACIEQXhxIgYgCkECdCIHQQRBCCAEQQNxIgQbakkNCSAEQQAgBiAHQSdqSxsNCiAMEKICDAQLIAUgAUH4AfwKAABBiAIhAyABKAL4ASIERQ0DIAEoAvwBIgZBBGsoAgAiB0F4cSIIQQRBCCAHQQNxIgcbIARqSQ0IIAdBACAIIARBJ2pLGw0JIAYQogIMAwsgBSABQfgB/AoAAEGIAiEDIAEoAvgBIgRFDQIgASgC/AEiBkEEaygCACIHQXhxIghBBEEIIAdBA3EiBxsgBGpJDQcgB0EAIAggBEEnaksbDQggBhCiAgwCCyAFIAFB+AH8CgAAQYgCIQMgASgC+AEiBEUNASABKAL8ASAEQQEQwQcMAQsgBSABQfgB/AoAACABKALgAyABKALcAyEGIAEoAoADIQ8gASgC7AIhECABKALoAiEHIAEoAuQCIQQgASgC4AIhCCABKALcAiEMIAEoAvgBIQMgASgCkAQiCgRAIAEoApQEIApBARDBBwsCQCADQQJGDQAgBARAIAhBJGohAwNAIANBBGsoAgAiCkEASgRAIAMoAgAiCUEEaygCACILQXhxIg1BBEEIIAtBA3EiCxsgCmpJDQkgC0EAIA0gCkEnaksbDQogCRCiAgsgA0EwaiEDIARBAWsiBA0ACwsgDARAIAggDEEwbEEIEMEHCyAHQQBMDQAgECAHQQEQwQcLQbgEIQMgBkUgD0ECRnINACAGQShsQQgQwQcLIAFBBGsoAgAiBEF4cSIGQQRBCCAEQQNxIgQbIANqSQ0EIARBACAGIANBJ2pLGw0FIAEQogIgBSgChAQiAUEASgRAIAUoAogEIgNBBGsoAgAiBEF4cSIGQQRBCCAEQQNxIgQbIAFqSQ0FIARBACAGIAFBJ2pLGw0GIAMQogILIAUoAvgBQQJHBEAgBUH4AWoQ+gELIAUoAvgDIgEEQCAFKAL8AyIDQQRrKAIAIgRBeHEiBkEEQQggBEEDcSIEGyABakkNBSAEQQAgBiABQSdqSxsNBiADEKICCyAFKAKQBCIBQQBKBEAgBSgClAQiA0EEaygCACIEQXhxIgZBBEEIIARBA3EiBBsgAWpJDQUgBEEAIAYgAUEnaksbDQYgAxCiAgsgEUECdCIBKAKMi0ghAyABKAL0ikghBCAFEKcBIgZBoMHBAEEIEK8JIgEgBCADEK8JIgMQ/AlBkMTIAC0AAA0DQZTEyABBADYCAEGQxMgAQQA6AAAgA0GECE8EQCADEL4HCyABQYQITwRAIAEQvgcLIAJBBGsoAgAiAUF4cUGsAkGwAiABQQNxIgMbSQ0EIANBACABQdACTxsNBSACEKICIAAgBjYCBCAAQQA2AgAgBUHAC2okAA8LIAUgAzYCpAQgBSACNgKgBEHQ7ccAQSsgBUGgBGpB8MDBAEGAwcEAEMIHAAtB2PfBABCZCgALQZDBwQAQmQoAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACAFIAA2AqAEQdDtxwBBKyAFQaAEakH4usEAQajBwQAQwgcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAv0IwI0fwZ+IwBBoARrIggkAAJAAkACQAJAAkACQCADKAIMRQ0AIAMpAxAiOiADKQMYIjtBseHGAEEBEKkEITggAygCBCIEIDincSEFIDhCGYhC/wCDQoGChIiQoMCAAX4hPCADKAIAIQYDQAJAIAUgBmopAAAiOSA8hSI4Qn+FIDhCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiOFBFBEADQCAGIDh6p0EDdiAFaiAEcUFsbGoiB0EMaygCAEEBRgRAIAdBEGsoAgAtAABB+ABGDQMLIDhCAX0gOIMiOFBFDQALCyA5IDlCAYaDQoCBgoSIkKDAgH+DUEUNAiAFIAtBCGoiC2ogBHEhBQwBCwtBteLGAEESELgIIgUgBSgCACgCABEDACAHQQRrLQAAIRcgB0EIaygCACEYIAQgOiA7QbLhxgBBARCpBCI4p3EhBSA4QhmIQv8Ag0KBgoSIkKDAgAF+ITpBACELA0AgBSAGaikAACI5IDqFIjhCf4UgOEKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyI4UEUEQANAIAYgOHqnQQN2IAVqIARxQWxsaiIHQQxrKAIAQQFGBEAgB0EQaygCAC0AAEH5AEYNBgsgOEIBfSA4gyI4UEUNAAsLIDkgOUIBhoNCgIGChIiQoMCAf4NQRQ0CIAUgC0EIaiILaiAEcSEFDAALAAtBteLGAEESELgIIQEgAEGAgICAeDYChAUgACABNgIAIAMQ2gQMAgtBx+LGAEESELgIIQEgAEGAgICAeDYChAUgACABNgIAIAMQ2gQMAQtBx+LGAEESELgIIgUgBSgCACgCABEDACAHQQRrLQAAIRkgB0EIaygCACEaIANBs+HGAEEBEMwFIQVB2eLGAEESELgIIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBQRAIAQgBCgCACgCABEDACAFLQAEIRsgBSgCACEcIANB6+LGAEEHEMwFIQVB8uLGAEEYELgIIQQgBUUNASAEIAQoAgAoAgARAwAgBS0ABCEdIAUoAgAhHiADQYrjxgBBBxDMBSEFQZHjxgBBGBC4CCEEIAVFDQIgBCAEKAIAKAIAEQMAIAUtAAQhHyAFKAIAISAgA0Gp48YAQQcQzAUhBUGw48YAQRgQuAghBCAFRQ0DIAQgBCgCACgCABEDACAFLQAEISEgBSgCACEiIANByOPGAEEFEMwFIQVBzePGAEEWELgIIQQgBUUNBCAEIAQoAgAoAgARAwAgBS0ABCEjIAUoAgAhJCADQePjxgBBBRDMBSEFQejjxgBBFhC4CCEEIAVFDQUgBCAEKAIAKAIAEQMAIAUtAAQhJSAFKAIAISYgA0H+48YAQQUQzAUhBUGD5MYAQRYQuAghBCAFRQ0GIAQgBCgCACgCABEDACAFLQAEIScgBSgCACEoIANBmeTGAEEFEMwFIQVBnuTGAEEWELgIIQQgBUUNByAEIAQoAgAoAgARAwAgBS0ABCEpIAUoAgAhKiADQbTkxgBBBxDMBSEFQbvkxgBBGBC4CCEEIAVFDQggBCAEKAIAKAIAEQMAIAUtAAQhKyAFKAIAISwgA0HT5MYAQQYQzAUhBUHZ5MYAQRcQuAghBCAFRQ0JIAQgBCgCACgCABEDACAFLQAEIS0gBSgCACEuIANB8OTGAEEGEMwFIQVB9uTGAEEXELgIIQQgBUUNCiAEIAQoAgAoAgARAwAgBS0ABCEvIAUoAgAhMCADQY3lxgBBBhDMBSEFQZPlxgBBFxC4CCEEIAVFDQsgBCAEKAIAKAIAEQMAIAUtAAQhMSAFKAIAITIgA0Gq5cYAQQUQzAUNDEEIIRYMDQsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMDwsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMDgsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMDQsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMDAsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMCwsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMCgsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMCQsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMCAsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMBwsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMBgsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMBQsgAEGAgICAeDYChAUgACAENgIAIAMQ2gQMBAsgA0Gq5cYAQQUQzAUhBUGv5cYAQRcQuAghBCAFRQ0BIAQgBCgCACgCABEDACAFLQAEIRYgBSgCACEzIANBxuXGAEEOEMwFIQVB1OXGAEEjELgIIQQgBUUNAiAEIAQoAgAoAgARAwAgBS0ABCE0IAUoAgAhNQsgCEEEaq1CgICAgMAEhCE4QQAhBQJAAkACQAJAAkADQAJAIAggBTYCBCAIIDg3AwggCEH4AmpBs4DAACAIQQhqELcHIAMgCCgC/AIiBCAIKAKAAxDfBSELIAgoAvgCIQUgC0UEQCAFBEAgBCAFQQEQwQcLQQEhBUEIIRNBCCEJQQghECAIKAIEIgQOGQcDAwMDAwMDAwYDAwMDAwMDAwMDAwMDAwQBCyAFBEAgBCAFQQEQwQcLIAgoAgRBAWohBQwBCwsgBEEtRg0CCyAIIDg3A/gCIAhBEGoiAUH3kMAAIAhB+AJqELcHIAEQwgghASAAQYCAgIB4NgKEBSAAIAE2AgAgAxDaBAwGC0EBIQ9BAiEFDAELQQEhD0EDIQVBASESCyAIQfgCaiEEIwBB4ABrIgYkACAGQdQAaq1CgICAgBCEITkCQAJAIAMoAgwEQCADKAIAIQwgAygCBCEOIAMpAxghOyADKQMQITwgBUECdEHom8gAaigCACEUQQAhBwNAIAYgFCAHIAdB/wFxQQNuIglBA2xrQf8BcWwgCWo2AlQgBiA5NwNYIAZByABqQbOAwAAgBkHYAGoQ4AQgDiA8IDsgBigCTCIKIAYoAlAiDRCpBCI4p3EhCSA4QhmIQv8Ag0KBgoSIkKDAgAF+IT1BACERA0ACQCAJIAxqKQAAIjogPYUiOEJ/hSA4QoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIjhQRQRAA0AgDCA4eqdBA3YgCWogDnFBbGxqIhBBDGsoAgAgDUYEQCAKIBBBEGsoAgAgDRD3B0UNAwsgOEIBfSA4gyI4UEUNAAsLIDogOkIBhoNCgIGChIiQoMCAf4NQRQ0EIAkgEUEIaiIRaiAOcSEJDAELCyAQQQRrLQAAIQ0gEEEIaygCACEQIAYoAkgiCQRAIApBBGsoAgAiEUF4cSIVQQRBCCARQQNxIhEbIAlqSQ0JIBFBACAVIAlBJ2pLGw0KIAoQogILIAYgB0EDdGoiCSANOgAEIAkgEDYCACAHQQFqIgdBCUcNAAsgBCAGQcgA/AoAACAGQeAAaiQADAILIAZBADYCVCAGIDk3A1ggBkHIAGpBs4DAACAGQdgAahDgBAtBiObGABCZCgALIAgtAPwCIRAgCCgC+AIhESAIQR9qIAhB/QJqIhRBwwD8CgAAAkAgDwRAIwBBkAFrIgYkACAGQYQBaq1CgICAgBCEITkCQAJAIAMoAgwEQCADKAIAIQ8gAygCBCEJIAMpAxghOyADKQMQITwgBUECdEH0m8gAaigCACEVQQAhCwNAIAYgC0H/AXFBA24iByAVIAsgB0EDbGtB/wFxbGpBA2o2AoQBIAYgOTcDiAEgBkH4AGpBs4DAACAGQYgBahDgBCAJIDwgOyAGKAJ8Ig4gBigCgAEiDBCpBCI4p3EhByA4QhmIQv8Ag0KBgoSIkKDAgAF+IT1BACENA0ACQCAHIA9qKQAAIjogPYUiOEJ/hSA4QoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIjhQRQRAA0AgDyA4eqdBA3YgB2ogCXFBbGxqIgpBDGsoAgAgDEYEQCAOIApBEGsoAgAgDBD3B0UNAwsgOEIBfSA4gyI4UEUNAAsLIDogOkIBhoNCgIGChIiQoMCAf4NQRQ0EIAcgDUEIaiINaiAJcSEHDAELCyAKQQRrLQAAIQwgCkEIaygCACEKIAYoAngiBwRAIA5BBGsoAgAiDUF4cSI2QQRBCCANQQNxIg0bIAdqSQ0LIA1BACA2IAdBJ2pLGw0MIA4QogILIAYgC0EDdGoiByAMOgAEIAcgCjYCACALQQFqIgtBD0cNAAsgBCAGQfgA/AoAACAGQZABaiQADAILIAZBAzYChAEgBiA5NwOIASAGQfgAakGzgMAAIAZBiAFqEOAEC0GY5sYAEJkKAAsgCC0A/AIhCSAIKAL4AiELIAhB4gBqIBRB8wD8CgAAIBINASAFIQQMAgtBCCEJIBINACAFIQQMAQsgCEH4AmohDSMAQcABayIEJAAgBEG0AWqtQoCAgIAQhCE5AkACQCADKAIMBEAgAygCACETIAMoAgQhEiADKQMYITsgAykDECE8IAVBAnRBgJzIAGooAgAhFEEAIQYDQCAEIAZB/wFxQQNuIgcgFCAGIAdBA2xrQf8BcWxqQQhqNgK0ASAEIDk3A7gBIARBqAFqQbOAwAAgBEG4AWoQ4AQgEiA8IDsgBCgCrAEiDiAEKAKwASIPEKkEIjincSEHIDhCGYhC/wCDQoGChIiQoMCAAX4hPUEAIQwDQAJAIAcgE2opAAAiOiA9hSI4Qn+FIDhCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiOFBFBEADQCATIDh6p0EDdiAHaiAScUFsbGoiCkEMaygCACAPRgRAIA4gCkEQaygCACAPEPcHRQ0DCyA4QgF9IDiDIjhQRQ0ACwsgOiA6QgGGg0KAgYKEiJCgwIB/g1BFDQQgByAMQQhqIgxqIBJxIQcMAQsLIApBBGstAAAhDyAKQQhrKAIAIQogBCgCqAEiBwRAIA5BBGsoAgAiDEF4cSIVQQRBCCAMQQNxIgwbIAdqSQ0JIAxBACAVIAdBJ2pLGw0KIA4QogILIAQgBkEDdGoiByAPOgAEIAcgCjYCACAGQQFqIgZBFUcNAAsgDSAEQagB/AoAACAEQcABaiQADAILIARBCDYCtAEgBCA5NwO4ASAEQagBakGzgMAAIARBuAFqEOAEC0H45cYAEJkKAAsgCC0A/AIhEyAIKAL4AiE3IAhB1QFqIAhB/QJqQaMB/AoAACAFIQQLIAAgEzoAVCAAIDc2AlAgACA0OgBMIAAgNTYCSCAAIBY6AEQgACAzNgJAIAAgKToAPCAAICo2AjggACAnOgA0IAAgKDYCMCAAICU6ACwgACAmNgIoIAAgIzoAJCAAICQ2AiAgACAD/QADEP0LAxAgACAD/QADAP0LAwAgAEHVAGogCEHVAWpBowH8CgAAIAAgCToA/AEgACALNgL4ASAAQf0BaiAIQeIAakHzAPwKAAAgACAQOgD0AiAAIBE2AvACIABB9QJqIAhBH2pBwwD8CgAAIABCBDcDiAUgAEIANwOABSAAQoCAgIDAADcD+AQgAEIENwPwBCAAQgA3A+gEIABCgICAgMAANwPgBCAAQgQ3A9gEIABCADcD0AQgAEKAgICAwAA3A8gEIABCBDcDwAQgAEIANwO4BCAAQoCAgIDAADcDsAQgAEIENwOoBCAAQgA3A6AEIABCgICAgMAANwOYBCAAIAQ2ApQEIABBADYCkAQgACACNgKMBCAAIAE2AogEIAAgKzoAhAQgACAsNgKABCAAIDE6APwDIAAgMjYC+AMgACAvOgD0AyAAIDA2AvADIAAgLToA7AMgACAuNgLoAyAAICE6AOQDIAAgIjYC4AMgACAfOgDcAyAAICA2AtgDIAAgHToA1AMgACAeNgLQAyAAIBs6AMwDIAAgHDYCyAMgACAZOgDEAyAAIBo2AsADIAAgFzoAvAMgACAYNgK4AwwCCyAAQYCAgIB4NgKEBSAAIAQ2AgAgAxDaBAwBCyAAQYCAgIB4NgKEBSAAIAQ2AgAgAxDaBAsgCEGgBGokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/cRAw5/AXsBfiMAQRBrIgskAAJAIAAoAggiCUUEQEEBIQpBASEIDAELIAAoAgQhBiAJEG4iCgRAIAYhCANAQQAhBAJAAn8gCEEcai8BACIBQf//AXFFBEAgAUEQdAwBCyABQf8HcSEDIAFBgIACcSECIAFBgPgBcSIBQYD4AUYEQCACQRB0IgJBgICA/AdyIANFDQEaIAIgA0ENdHJBgICA/gdyDAELIAJBEHQiAiABQQ10QYCAgPwAcSADQQ10ckGAgIDAA2pyIAENABogAkGAgIDYA3IgA2dBEGsiAkEXdGsgAyACQf//A3FBCGp0Qf///wNxcgu+QwAAAABeRQ0AIAhBJGovAQAhB0EAIQMCf0EAIAhBJmovAQAiAUH//wFxIgJBgPgBSw0AGkEAIAdB//8BcSIEQYD4AUsNABogAcFBAE4EQCABIAdLIAfBQQBODQEaIAEgBHJBAEcMAQsgB8FBAEggASAHSXELIQQgASAHIAQbIAcgAkGB+AFJGyEHAkAgCEEoai8BACIBQf//AXEiAkGA+AFLDQAgB0H//wFxIgRBgPgBSw0AIAHBQQBOBEAgB8FBAE4EQCABIAdB//8DcUshAwwCCyABIARyQQBHIQMMAQsgB8FBAEggASAHQf//A3FJcSEDC0EAIQQCfyABIAcgAxsgByACQYH4AUkbIgFB//8BcUUEQCABQRB0DAELIAFB/wdxIQMgAUGAgAJxIQIgAUGA+AFxIgFBgPgBRgRAIAJBEHQiAkGAgID8B3IgA0UNARogAiADQQ10ckGAgID+B3IMAQsgAkEQdCICIAFBDXRBgICA/ABxIANBDXRyQYCAgMADanIgAQ0AGiACQYCAgNgDciADZ0EQayICQRd0ayADIAJB//8DcUEIanRB////A3FyC74QiARDAAAAAF5FDQAgCyAIKQIAIhAQ0wIgC/0ABAD9DP///3////9/////f////3/9Tv0MAACAfwAAgH8AAIB/AACAf/05/aQBQQ9HDQAgCyAQENMCIAv9AAQAIg8gD/3mASIPIA8gD/0NCAkKCwwNDg8AAQIDAAECA/3kASIPIA8gD/0NBAUGBwABAgMAAQIDAAECA/3kAf3jAf0fAEMAAAAAXiEECyAFIApqIAQ6AAAgCEEsaiEIIAkgBUEBaiIFRw0ACyAGQSxqIQIgCSAKaiEIQQAhAyAKIQQDQAJAAkAgBCAIRwRAIANBAWohASAELQAADQIgASAJSQRAIAMgCWshAUEBIQUDQCABIAVqRQ0DIAQgBWotAABBAUYEQCAGIANBLGxqIgcgAigCKDYCKCAHIAIpAiA3AiAgByAC/QACEP0LAhAgByAC/QACAP0LAgAgA0EBaiEDCyACQSxqIQIgASAFQQFqIgVqDQALCyAAIAM2AggMBQtB4KnBABCZCgALQeCpwQAQmQoACyAEQQFqIQQgAkEsaiECIAEiAyAJRw0ACwwBC0EBIAkQmgkACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhQiA0UNAEEAIQVBACECIAohBANAIAQgCEYNAiAELQAAQQFGBEAgBEEBaiEEIAJBGGohAiAFQQFqIgUgA0cNAQwCCwsgACgCECIMIAVBGGxqIgYoAhQiAUEFTwRAIAYoAgggAUECdEEEEMEHCyADIAVBAWpLBEAgAiAMaiECIAUgA2shDUEBIQMDQCADIARqIgYgCEYNBCACIgFBGGohAgJAIAYtAABFBEAgAUEsaigCACIGQQVJDQEgAUEgaigCACIOQQRrKAIAIgFBeHEiByAGQQJ0IgZBBEEIIAFBA3EiARtqSQ0HIAFBACAHIAZBJ2pLGw0IIA4QogIMAQsgDCAFQRhsaiIBIAIpAhA3AhAgASAC/QACAP0LAgAgBUEBaiEFCyANIANBAWoiA2oNAAsLIAAgBTYCFAsCQCAAKAIgIgZFDQBBACECQRIhAyAKIQQDQCAEIAhGDQYgAkEBaiEBIAQtAABFBEAgASAGSQRAIAIgBmshByAAKAIcIgYgA2ohA0EBIQUDQCAEIAVqIgEgCEYNCiABLQAAQQFGBEAgBiACQRJsaiIBIAMvARA7ARAgASAD/QABAP0LAQAgAkEBaiECCyADQRJqIQMgByAFQQFqIgVqDQALCyAAIAI2AiAMAgsgBEEBaiEEIANBEmohAyABIgIgBkcNAAsLAkAgACgCLCIGRQ0AQQAhAkEeIQMgCiEEA0AgBCAIRg0IIAJBAWohASAELQAARQRAIAEgBkkEQCACIAZrIQcgACgCKCIGIANqIQVBASEDA0AgAyAEaiIBIAhGDQwgAS0AAEEBRgRAIAYgAkEebGoiASAFKQEWNwEWIAEgBSkBEDcBECABIAX9AAEA/QsBACACQQFqIQILIAVBHmohBSAHIANBAWoiA2oNAAsLIAAgAjYCLAwCCyAEQQFqIQQgA0EeaiEDIAEiAiAGRw0ACwsCQCAAKAI4IgZFDQBBACECQSohAyAKIQQDQCAEIAhGDQogAkEBaiEBIAQtAABFBEAgASAGSQRAIAIgBmshByAAKAI0IgYgA2ohBUEBIQMDQCADIARqIgEgCEYNDiABLQAAQQFGBEAgBiACQSpsaiIBIAUvASg7ASggASAFKQEgNwEgIAEgBf0AARD9CwEQIAEgBf0AAQD9CwEAIAJBAWohAgsgBUEqaiEFIAcgA0EBaiIDag0ACwsgACACNgI4DAILIARBAWohBCADQSpqIQMgASICIAZHDQALCyAJBEAgCkEEaygCACIAQXhxIgRBBEEIIABBA3EiABsgCWpJDQsgAEEAIAQgCUEnaksbDQwgChCiAgsgC0EQaiQADwtBwKnBABCZCgALQcCpwQAQmQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtB0KnBABCZCgALQdCpwQAQmQoAC0GgqcEAEJkKAAtBoKnBABCZCgALQbCpwQAQmQoAC0GwqcEAEJkKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALpxICE38DfiMAQSBrIgIkAAJAAkACQAJAAn8CQAJAAkACQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBFGsOAgECAAsgASACQR9qQbiAwQAQzQghASAAQQI2AgAgACABNgIEDAgLAkACQAJAAkACQAJ/IAEoAgwiBwRAIAJBBGoiAyABKAIIIggQlQQgAigCCCIBIAIoAgQiBUGAgICAeEYNARogAigCFCEJIAIoAhAhBiAHQQFGDQggAigCGCEMIAIoAgwhDyADIAhBEGoQ4gIgAigCCCEEIAIoAgQNDSAHQQJGDQMgAikCDCEVIAMgCEEgahDiAiACKAIIIQMgAigCBEUNAiADIQQMDQtBAEH4hMEAQaiqxgAQuAcLIQEgAEECNgIAIAAgATYCBAwMCyAHQQNGDQEgAikCDCEWAkACQAJAQRUgCEEwaiIQKAIAIhFBgICAgHhzIBFBAE4bQRBrDgMGAQYACyACQQRqIBAQ0wUMAQsgAkEEaiAIKAI0ENMFCyACKAIIIQogAigCDCELIAIoAgRFDQIgCiEEDAoLQQJB+ITBAEGoqsYAELgHIQQMCQtBA0H4hMEAQaiqxgAQuAchBAwIC0EBIQ0LIAAgFjcCNCAAIAM2AjAgACAVNwIoIAAgBDYCJCAAIAw2AiAgACAJNgIcIAAgBjYCGCAAIA82AhQgACABNgIQIAAgBTYCDCAAIAs2AgggACAKNgIEIAAgDTYCACAHQQRGDQcgAkEENgIEIAdB/P///wBqQf////8AcUEEaiACQQRqQYCcwQAQuAchBCAAQQI2AgAgACAENgIEIAUEQCABIAVBARDBBwsgBkUNByAJIAZBARDBBwwHCyABKAIIIgRFDQIgBEEFdCERIAEoAgQhEkECIQVBgICAgHghBANAAkACQAJAAkACQAJAAkACQEEVIAggEmoiASgCACIDQYCAgIB4cyADQQBOG0EBaw4PAQAAAgAAAAAAAAADBAUGAAsgASACQR9qQeiCwQAQzQghAyACQQE6AAQgAiADNgIIDAYLIAJBADoABCACQQQgAUEEai0AACIDIANBBE8bOgAFDAULIAJBADoABCACQgQgAUEIaikDACIVIBVCBFobPAAFDAQLIAFBCGooAgAhAwJ/AkACQAJAAkAgAUEMaigCAEEEaw4CAQADCyADKAAAQebSsasGcyADQQRqIg4tAABB8wBzcg0BQQAMAwtBASADKAAAQe3SuZsHRg0CGiADKAAAQe3C4ZsHRw0BQQIMAgsgAygAAEHz0IWDB3MgDi0AAEHlAHNyDQBBAwwBC0EECyEDIAJBADoABCACIAM6AAUMAwsgAUEEaigCACEDAn8CQAJAAkACQCABQQhqKAIAQQRrDgIBAAMLIAMoAABB5tKxqwZzIANBBGoiDi0AAEHzAHNyDQFBAAwDC0EBIAMoAABB7dK5mwdGDQIaIAMoAABB7cLhmwdHDQFBAgwCCyADKAAAQfPQhYMHcyAOLQAAQeUAc3INAEEDDAELQQQLIQMgAkEAOgAEIAIgAzoABQwCCyACQQRqIAFBCGooAgAgAUEMaigCABD0BQwBCyACQQRqIAFBBGooAgAgAUEIaigCABD0BQsgAi0ABEEBRgRAIAIoAgghASAAQQI2AgAgACABNgIEDAULIAFBEGohAwJAAkACQAJAAkACQAJAIAItAAUOBAABAgMGCyAEQYCAgIB4RwRAQciEwQBBBRCJCCEBIABBAjYCACAAIAE2AgQMCwsgAkEEaiADEJUEIAIoAgghCyACKAIEIgRBgICAgHhGBEAgAEECNgIAIAAgCzYCBAwOCyACKAIYIRMgAigCFCEMIAIoAhAhCiACKAIMIRQMBQsgBg0DIAJBBGogAxDiAiACKAIIIQ8gAigCBEEBRgRAIABBAjYCACAAIA82AgQMCgsgAikCDCEWQQEhBgwECyAJDQEgAkEEaiADEOICIAIoAgghDSACKAIEQQFGBEAgAEECNgIAIAAgDTYCBAwJCyACKQIMIRdBASEJDAMLIAVBAkcEQEHVhMEAQQUQiQghASAAQQI2AgAgACABNgIEDAgLQQAhBQJ/AkACQEEVIAMoAgAiDkGAgICAeHMgDkEAThtBEGsOAwUBBQALIAJBBGogAxDTBSAHIAIoAgwgAigCBCIBGwwBCyACQQRqIAFBFGooAgAQ0wUgByACKAIMIAIoAgQiARsLIQcgAigCCCEQIAFFBEBBASEFDAMLIABBAjYCACAAIBA2AgQMBwtB0YTBAEEEEIkIIQEgAEECNgIAIAAgATYCBAwGC0HNhMEAQQQQiQghASAAQQI2AgAgACABNgIEDAULIAhBIGoiCCARRw0ACwwBC0EBQfiEwQBBqKrGABC4ByEEDAQLIARBgICAgHhGDQAgAiATNgIYIAIgDDYCFCACIAo2AhAgAiAUNgIMIAIgCzYCCCACIAQ2AgQgBkEAIAkbRQRAQdGEwQBBzYTBACAGG0EEEIYIIQEgAEECNgIAIAAgATYCBCACQQRqEIAGQQAMAwsgACACKQIUNwIcIAAgAv0AAgT9CwIMIAAgFzcCNCAAIA02AjAgACAWNwIoIAAgDzYCJCAAIBCtIAetQiCGhDcCBCAAIAVBACAFQQJHGzYCAAwEC0HIhMEAQQUQhgghASAAQQI2AgAgACABNgIEQYCAgIB4IQQLQQELRSAEQYCAgIB4RnINAQJAIAQEQCALQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAEakkNBCAAQQAgASAEQSdqSxsNBSALEKICCyAKRQ0CIAxBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIApqSQ0DIABBACABIApBJ2pLGw0AIAwQogIMAgsMAwsgAEECNgIAIAAgBDYCBCAFBEAgAUEEaygCACIAQXhxIgRBBEEIIABBA3EiABsgBWpJDQIgAEEAIAQgBUEnaksbDQMgARCiAgsgBkUNACAJQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAGakkNASAAQQAgASAGQSdqSxsNAiAJEKICCyACQSBqJAAPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAvNFgQJfwF+AXwBbyMAQRBrIgMkABD7CSIEQai6wQBBCRCvCSICIAAoAtwBuBDwCSIBEPwJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQZDEyAAtAABFBEBBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhPBEAgAhC+BwsgBEGxusEAQQkQrwkiAiAAKALgAbgQ8AkiARD8CUGQxMgALQAADQFBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhPBEAgAhC+BwsgBEG6usEAQQsQrwkiAiAAKALkAbgQ8AkiARD8CUGQxMgALQAADQJBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhPBEAgAhC+BwsgBEHFusEAQQQQrwkiAiAAKAJgEJYKIgEQ/AlBkMTIAC0AAA0DQZTEyABBADYCAEGQxMgAQQA6AAAgAUGECE8EQCABEL4HCyACQYQITwRAIAIQvgcLIARBybrBAEEEEK8JIgIgACgCZBCWCiIBEPwJQZDEyAAtAAANBEGUxMgAQQA2AgBBkMTIAEEAOgAAIAFBhAhPBEAgARC+BwsgAkGECE8EQCACEL4HCwJAIAAoAgBBAUcNACAEQbCHwQBBBhCvCSICIAAoAgQQlgoiARD8CUGQxMgALQAADQZBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhJDQAgAhC+BwsCQCAAKAIIRQ0AIARBzbrBAEEJEK8JIgIgACgCDBCWCiIBEPwJQZDEyAAtAAANB0GUxMgAQQA2AgBBkMTIAEEAOgAAIAFBhAhPBEAgARC+BwsgAkGECEkNACACEL4HCwJAIAAoAmgiBUUNACAFKQMAIQogACgCdCEHEBIhDBCfBSICIAwmASACIQYgBwRAIAVBCGohAiAKQn+FQoCBgoSIkKDAgH+DIQoDQCAKUARAA0AgAiIBQQhqIQIgBUHAAWshBSABKQMAQoCBgoSIkKDAgH+DIgpCgIGChIiQoMCAf1ENAAsgCkKAgYKEiJCgwIB/hSEKCyAFIAp6p0EDdkFobGoiAUEIaysDACABQRRrKAIAIAFBEGsoAgAQrwkhARDwCSEIIAYlASABJQEgCCUBEBMhDBCfBSIJIAwmASAJQYQITwRAIAkQvgcLIAhBhAhPBEAgCBC+BwsgAUGECE8EQCABEL4HCyAKQgF9IAqDIQogB0EBayIHDQALCyAEQda6wQBBChCvCSICIAYQ/AlBkMTIAC0AAA0IQZTEyABBADYCAEGQxMgAQQA6AAAgAkGECE8EQCACEL4HCyAGQYQISQ0AIAYQvgcLAkAgACgCEEUNACAEQfSJwQBBAxCvCSICIAAoAhQQlgoiARD8CUGQxMgALQAADQlBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhJDQAgAhC+BwsCQCAAKAIYRQ0AIARB94nBAEEDEK8JIgIgACgCHBCWCiIBEPwJQZDEyAAtAAANCkGUxMgAQQA2AgBBkMTIAEEAOgAAIAFBhAhPBEAgARC+BwsgAkGECEkNACACEL4HCwJAIAAoAiBFDQAgBEGAusEAQQQQrwkiAiAAKAIkEJYKIgEQ/AlBkMTIAC0AAA0LQZTEyABBADYCAEGQxMgAQQA6AAAgAUGECE8EQCABEL4HCyACQYQISQ0AIAIQvgcLAkAgACgCKEUNACAEQYS6wQBBBBCvCSICIAAoAiwQlgoiARD8CUGQxMgALQAADQxBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhJDQAgAhC+BwsCQCAAKAIwRQ0AIARB4LrBAEEIEK8JIgIgACgCNBCWCiIBEPwJQZDEyAAtAAANDUGUxMgAQQA2AgBBkMTIAEEAOgAAIAFBhAhPBEAgARC+BwsgAkGECEkNACACEL4HCwJAIAAoAjhFDQAgBEHousEAQQgQrwkiAiAAKAI8EJYKIgEQ/AlBkMTIAC0AAA0OQZTEyABBADYCAEGQxMgAQQA6AAAgAUGECE8EQCABEL4HCyACQYQISQ0AIAIQvgcLAkAgACgCiAFFDQAQ+gkiAiAAKAKMARCWCiIBEKwKIAFBhAhPBEAgARC+BwsgAiAAKAKQARCWCiIBEKwKIAFBhAhPBEAgARC+BwsgBEHwusEAQQgQrwkiASACEPwJQZDEyAAtAAAND0GUxMgAQQA2AgBBkMTIAEEAOgAAIAJBhAhPBEAgAhC+BwsgAUGECEkNACABEL4HCwJAIAAoAkBFDQAgBEG8qcYAQQcQrwkiAiAAKAJEEJYKIgEQ/AlBkMTIAC0AAA0QQZTEyABBADYCAEGQxMgAQQA6AAAgAUGECE8EQCABEL4HCyACQYQISQ0AIAIQvgcLIAAQ+gEgA0EQaiQAIAQPC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEH4vMEAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBB6LzBABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQdi8wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEHIvMEAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBBuLzBABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQai8wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEGYvMEAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBBiLzBABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQfi7wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEHou8EAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBB2LvBABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQci7wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEG4u8EAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBBqLvBABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQZi7wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEGIu8EAEMIHAAvEEAIefwV9IwBBIGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AuAFBAUcNACAAKAKsASAAKAKwASIBQQJ0IAAoArQBIgIgAWpBAnQQlwkhASACQQJ0IgIgACgCZCIFSw0BIAAoAmAhBSAIIAEQgwsiBjYCCCAIIAI2AhQgAiAGRw0HIAEgBSACEKsKIAFBhAhJDQAgARC+BwsgAEEAOgC4ASAAQgA3ArABIAAoAmgiAUGAgICAeEYgACgCdCICQYCAgIB4RnENAiABQYCAgIB4RyACQYCAgIB4R3FFBEBBrLTBAEEkELQIIQYMBgtBgIAQIQsgACgCZCICQf//D00EQEGAgBAgAiIBayIFIAAoAlwgAWtLBEAgAEHcAGogASAFQQRBBBDWBiAAKAJkIQELIAAoAmAiBiABQQJ0aiEFIAJB//8PRwR/Qfz/PyACQQJ0ayIDBEAgBUEAIAP8CwALIAEgAmsiAkH//w9qIQEgBiACQQJ0akH8/z9qBSAFC0EANgIAIAFBAWohCwsgACALNgJkIAAoAqQBIgxBAnQQ7wkhFAJAIAAoAjBFDQAgACgCNCIBQYQISQ0AIAEQvgcLIAAgFDYCNCAAQQE2AjAgACgCaCIVQYCAgIB4Rg0EIAAoAnQiFkGAgICAeEYNAyAMRQ0BQwAAAEBDAACAPyAALQCcARshIyAAKgKMASAAKgKIASIfk0MAAH5DlSEgIAAoAmwhGSAAKAJ4IRogACgCfCENIAAoAnAhDiAAKAKsASEbIAAoAmAhEEEAIQEDQCALQYCABCAMIAFrIgIgAkGAgARPGyIDQQJ0IgVJBEBBACAFIAtB6NzBABCgBQALIAggGyABQQJ0IhcgASADaiICQQJ0IhwQlwkiBhCDCyIJNgIIIAggBTYCFAJAIAUgCUYEQCAQIAUgBhCtCiAGQYQITwRAIAYQvgcLIAEgDEYNASABIA4gASAOSRshESABIA0gASANSRshEiADQQR0IRggFyAaaiEdIBkgAUEBdGohE0EAIQZBACEJAkADQAJ/AkAgBiAYRwRAIAYgEGoiD0EEaigCACIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEEIANBgIACcSEHIANBgPgBcSIKQYD4AUYEQCAHQRB0IgdBgICA/AdyIARFDQMaIAcgBEENdHJBgICA/gdyDAMLIAdBEHQhByAKRQ0BIApBDXRBgICA/ABxIARBDXRyQYCAgMADaiAHcgwCCyAJIAlBBGogBUHY3MEAEKAFAAsgB0GAgIDYA3IgBGdBEGsiB0EXdGsgBCAHQf//A3FBCGp0Qf///wNxcgshHgJ/IANBgIB8cSADQRB2IgNB//8BcUUNABogA0H/B3EhBCADQYCAAnEhByADQYD4AXEiCkGA+AFGBEAgB0EQdCIHQYCAgPwHciAERQ0BGiAHIANBDXRyQYCAgP4HcgwBCyAHQRB0IgMgCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQAaIANBgICA2ANyIARnQRBrIgNBF3RrIAQgA0H//wNxQQhqdEH///8DcXILIQogCAJ/IA9BCGooAgAiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhByAEQYD4AXEiBEGA+AFGBEAgB0EQdCIEQYCAgPwHciADRQ0BGiAEIANBDXRyQYCAgP4HcgwBCyAHQRB0IgcgBEENdEGAgID8AHEgA0ENdHJBgICAwANqciAEDQAaIAdBgICA2ANyIANnQRBrIgRBF3RrIAMgBEH//wNxQQhqdEH///8DcXILNgIQIAggCjYCDCAIIB42AgggDy0AAyEHIA9BDGooAgAiA0EIdiEEQwAAAAAhIUMAAAAAISIgA0H/AXEEQCAfICAgA0EBa0H/AXGzlJIQiAQhIgsgBEH/AXEEQCAfICAgBEEBa0H/AXGzlJIQiAQhIQsgCCADQYCA/AdxQRB2IgMEfSAfICAgA0EBa0H/AXGzlJIQiAQFQwAAAAALOAIcIAggITgCGCAIICI4AhQgDiARRg0BIA0gEkcEQCAPIAhBCGogIyAHs0MAAH9DlZQgCEEUaiATLwEAIAkgHWooAgAQkAIgEUEBaiERIAlBBGohCSATQQJqIRMgAUEBaiEBIBJBAWohEiAYIAZBEGoiBkcNAQwECwsgASANQcjcwQAQ8AcACyABIA5BuNzBABDwBwALDAgLIAggFCAXIBwQlwkiARCDCyIGNgIIIAggBTYCFCAFIAZGBEAgASAQIAUQqwogAUGECE8EQCABEL4HCyACIgEgDEkNAQwDCwsMBgtBACACIAVBsL7BABCgBQALIBZBAEoEQCAAKAJ4IgFBBGsoAgAiAkF4cSIFIBZBAnQiBkEEQQggAkEDcSICG2pJDQYgAkEAIAUgBkEnaksbDQcgARCiAgsgAEGAgICAeDYCdCAVQQBKBEAgACgCbCIBQQRrKAIAIgJBeHEiBSAVQQF0IgZBBEEIIAJBA3EiAhtqSQ0GIAJBACAFIAZBJ2pLGw0HIAEQogILIABBgICAgHg2AmgLQQAhBiAAQQA2AmQgACgCYCEBIAAoAlwhAiAAQoCAgIDAADcCXCACRQ0CIAFBBGsoAgAiAEF4cSIFIAJBAnQiAkEEQQggAEEDcSIAG2pJDQQgAEEAIAUgAkEnaksbDQUgARCiAgwCC0Go3MEAEJkKAAtBmNzBABCZCgALIAhBIGokACAGDwtBACAIQQhqIAhBFGpBACAIQdChxAAQoAgAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAv0EQIJfwR+IwBB0AJrIgEkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAPgDRQRAIAAoApABIgJBAkcNCiAAKAIAQQJHDQogACgCuAIiA0EESQ0LIABBkAFqIQUgASAAKAK0AiIEKAAAIgI2AhAgAkHSgpGaBEYNAiACQdKCkYIDRw0DIANBCEkNCyADIAQoAAQiBkEHakF4cUEIaiICSQ0LIAZBCGoiByADSyAGQXdLcg0EIAFBADYCyAIgASAGNgLEAiABIARBCGo2AsACIAFBIGogAUHAAmoQYyABKAIkIQYgASgCICIIQQJHDQEgBhDBCCECDBALIAA1ArgCIQogAEEANgK4AiAAIAogACkDcHw3A3AMDwsgAUGwAWogAUEoakGAAfwKAAAgAEEANgK4AiABIAY2AqwBIAEgCDYCqAEgAyACayEHAkACQCACRQ0AIAIgA0YNASAHRQ0AIAQgAiAEaiAH/AoAAAsgACAHNgK4AgsgACAAKQNwIAKtfCIKNwN4IAAgCjcDcCABKAKkAkEBRw0DIAAgASgClAIiBDYCnAIgACABKAK0ASABKALAASIDIAEoArABGyICNgKgAiACRQ0EIAQgAyACbiIEIAMgAiAEbEdqIgJGBEAgAS0AqAIhAiABIAZBACAIQQFxGzYCJCABIAM2AiAgASACQQFxIgM6ACggAEG8AmogAUEgahCzBAJAIAEoAtABIgJBAkYNACACQQFGBEAgACABKgLUATgCvAMLIAEoAtgBQQFGBEAgACABKgLcATgCwAMLIAEoAuABQQFGBEAgACABKgLkATgCxAMLIAEoAugBQQFGBEAgACABKgLsATgCyAMLIAEoAvABQQFGBEAgACABKgL0ATgCzAMLIAEoAvgBQQFGBEAgACABKgL8ATgC0AMLIAEoAoACQQFGBEAgACABKgKEAjgC1AMLIAEtAIgCIgJBAkYNACAAIAI6ANgDCyADRQ0HIABBAToA2AMMBwsgASACNgLMAiABQoCAgIAQIgogAEGcAmqthDcDKCABIAogAUHMAmqthDcDICABQcACaiIAQcWEwAAgAUEgahC3BwwFCyABQQhqIAAQ6wIgAS0ACEUEQCABLQAJDQcMCQsgASgCDCECDA0LIAEgAUEQaq1CgICAgOADhDcDICABQRRqIgBBlPPGACABQSBqELcHIAAQvQghAgwMC0EIIAcgA0GM5sEAEKAFAAsgASABQaQCaq1CgICAgBCENwMgIAFBtAJqIgBB5JLAACABQSBqELcHDAELQfzlwQAQnQoACyAAEL0IIQIgAUGoAWoQ6QQMCAsCQAJAAkAgBSgCAEECRg0AIAAoAvgBIQQgACgC/AEiAwRAIARBJGohAgNAIAJBBGsoAgAiBkEASgRAIAIoAgAiB0EEaygCACIIQXhxIglBBEEIIAhBA3EiCBsgBmpJDQQgCEEAIAkgBkEnaksbDQUgBxCiAgsgAkEwaiECIANBAWsiAw0ACwsgACgC9AEiAwRAIAQgA0EwbEEIEMEHCyAAKAKAAiIDQQBMDQAgACgChAIgA0EBEMEHCyAFIAFBqAFqQYgB/AoAAAwCC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgBSgCACECCyACQQJHBEACQAJAAkAgACgCmAIgACgCnAJPDQAgACgCAEECRgRAIAFBqAFqIAAQ6wIgAS0AqAENCSABLQCpAUEBRw0FCyABQagBaiAAEEsgAS0AqAENByABLQCpAUEBRw0EIAApA4gBIgogACkDcCIMVgRAIAAoArgCIQMgAEEANgK4AiADIAogDH0iCyADrSINIAsgDVQbIgunIgJrIQQCQAJAIAtQRQRAIAIgA0YNAiAERQ0BIAAoArQCIgMgAiADaiAE/AoAAAwBCyACIANGDQELIAAgBDYCuAILIAAgCyAMfCIMNwNwIAogDFYNBQsCQCAAKAIAQQJGDQAgACgCXCIDRQ0AIAAoAmAiAkEEaygCACIEQXhxIgUgA0EobCIDQQRBCCAEQQNxIgQbakkNAiAEQQAgBSADQSdqSxsNAyACEKICCyAAQQI2AgAgACAAKAKYAkEBaiIDNgKYAiADIAAoApwCTw0AA0AgAUGoAWoiAyAAEOsCIAEtAKgBQQFGDQlBACECIAEtAKkBRQ0KIAMgABBLIAEtAKgBDQggAS0AqQFBAUcNCiAAKQOIASIKIAApA3AiDFYEQCAAKAK4AiEDIABBADYCuAIgAyAKIAx9IgsgA60iDSALIA1UGyILpyIEayEFAkACQCALUEUEQCADIARGDQIgBUUNASAAKAK0AiIDIAMgBGogBfwKAAAMAQsgAyAERg0BCyAAIAU2ArgCCyAAIAsgDHwiDDcDcCAKIAxWDQsLAkAgACgCAEECRg0AIAAoAlwiA0UNACAAKAJgIgJBBGsoAgAiBEF4cSIFIANBKGwiA0EEQQggBEEDcSIEG2pJDQMgBEEAIAUgA0EnaksbDQQgAhCiAgsgAEECNgIAIAAgACgCmAJBAWoiAzYCmAIgAyAAKAKcAkkNAAsLIABBAToA+AMgADUCuAIhCkEAIQIgAEEANgK4AiAAIAogACkDcHw3A3AMCAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAFBqAFqIAAQSyABLQCoAQ0CIAEtAKkBQQFHDQAgACkDiAEiDCAAKQNwIgpYBEAgACgCuAIhAwwCCyAAKAK4AiEEQQAhAyAAQQA2ArgCIAQgDCAKfSILIAStIg0gCyANVBsiC6ciBWshAgJAAkAgC1BFBEAgBCAFRg0CIAJFDQEgACgCtAIiAyADIAVqIAL8CgAADAELIAQgBUYNAQsgACACNgK4AiACIQMLIAAgCiALfCIKNwNwIAogDFoNAQtBACECDAQLQQAhAiAAQQA2ArgCIABBAToA+AMgACAKIAOtfDcDcAwDCyABKAKsASECDAILIAEoAqwBIQIMAQsgASgCrAEhAgsgAUHQAmokACACC/wPAhF/An4jAEEwayIIJAACQAJAAkADQAJAAkACfyABKAKcAyIDIAEpA6ADIhQgA60iEyATIBRWG6ciAkYEQEEBIQJBJSEHQQAhCUEAIQxBACEDQQAhBCAGQYB+cUEkcgwBCyAIQQxqIAEgASgCmAMgAmogAyACa0EAEOQBIAgpAhQiE0IoiKchCSATQiCIpyEMIBNCGIinIQMgE0IQiKchBCATQgiIpyEHIAgtAB8hDSAILQAeIQ4gCC0AHSELIAgtABwhCiAIKAIQIQUgE6chAiAFIAgoAgwNABogASABKQOgAyAFrXw3A6ADIAZBgH5xQShyCyIGQf8BcUEoRgRAAkACQCACQf8BcUEBaw4CAAEFCyAKQckARg0CIApB5gBHDQRB5gAhCiALQeQARyAOQcEAR3IgDUHUAEdyDQQMAwsgB0H/AXFByQBHIARB/wFxQcUAR3IgA0H/AXFBzgBHIAxB/wFxQcQAR3JyDQNBAyEGCyAAIAk7AAkgACANOgAPIAAgDjoADiAAIAs6AA0gACAKOgAMIAAgDDoACCAAIAM6AAcgACAEOgAGIAAgBzoABSAAIAI6AAQgACAGNgIAIABBC2ogCUEQdjoAAAwDC0HJACEKIAtBxABHIA5BwQBHciANQdQAR3INAQsLAkACQAJAAkAgASgCCEECRwRAQQEhByABQQhqIgNBuAJBoAIgAS0AuQJBAkYiAhtqKAIAIQUgA0G0AkGcAiACG2ooAgAhAwJ/IAEtAMQCIhBBAUYEQCAFQQN2IAVBB3FBAEdqIQQgA0UgBUVyRQRAIANBA3YgA0EHcUEAR2ohAkEBIQpBASEJQQEhC0EBDAILQQEhCiAFRSADQQVJckUEQCADQQRrIgJBACACIANNGyICQQN2IAJBB3FBAEdqIQJBAiEHQQEhCUECIQtBAQwCCyADRSAFQQRNckUEQEEDIQcgBUEEayICQQAgAiAFTRsiAkEDdiACQQdxQQBHaiEEIANBAnYgA0EDcUEAR2ohAkEBIQlBAyELQQEMAgsgBUUgA0EDSXJFBEAgA0ECayICQQAgAiADTRsiAkECdiACQQNxQQBHaiECIAVBAnYgBUEDcUEAR2ohBEEEIQdBASEJQQQhC0EBDAILIAMgA0EBdmsiAkUgBUECTXJFBEAgBUECayIEQQAgBCAFTRsiBEECdiAEQQNxQQBHaiEEQQUhB0EBIQlBBSELQQEMAgsCQCADIANBAEdrIgIgAkEBdmsiAkUNACAFIAVBAXZrIgRFDQBBBiEHQQEhCUEGIQtBAQwCC0EAIQlBByEHIANFIAUgBUEAR2siAiACQQF2ayIERXJFBEAgAyECQQEhCUEHIQtBAQwCCyADIQJBAgwBCyAFRQRAQQAhCkEAIQRBACEJQQIMAQtBACEKIAUhBEEBIQlBAAshEiABLQDGAiIRQQJ0IgwoAvCdSCADbCEGAkACQAJAIAEtAMcCIg9BCGsOCQIAAAAAAAAAAQALIA9BCE0EQCAGQQggD24iDW4iDiAGIA0gDmxHaiEGDAILQciuxgAQnQoACyAGQQF0IQYLIAFBADoA5AMgASAFNgLcAyABIAM2AtgDIAEgCzoA1AMgASACNgLQAyABIAM2AswDIAFBADYCyAMgASASNgLEAyABIAc6AMADIAEgBTYCvAMgASADNgK4AyABIAI2ArQDIAEgBDYCsAMgASAJNgKsAyABIAo2AqgDIAEgBkEBaiICNgLgAyAMKALEnkggD0EHakEDdmxBAWsiBEEHS0GvASAEdkEBcUVyDQEgAUKBhIyggMCBgAggBEEDdK2IPADFBCAQRQRAIAWtIAKtfiETDAULIAhBoLDGACgCADYCLCAIQZiwxgApAgA3AiQgCEGIsMYA/QACAP0LAhQgEUECdEGonsgAaiEMIAhBFGohDUIAIRMgD0EIayEOQQAhBwNAIAcgDWooAgAiEEH/AXEiBkUNAyAMKAIAIAMgEEEIdkH/AXFrIgJBACACIANNGyIEIAZuIgIgBCACIAZsR2psIQICQAJAAkAgDg4JAgAAAAAAAAABAAsgD0EITQRAIAJBCCAPbiIGbiIEIAIgBCAGbEdqIQIMAgtByK7GABCdCgALIAJBAXQhAgsgEEEQdkH/AXEiEUUNBCAFIBBBGHZrIgRBACAEIAVNGyIGIBFuIgQgBiAEIBFsR2qtIAJBAWqtfiATfCETIAdBBGoiB0EcRw0ACwwEC0HYr8YAEJkKAAtB+LPEAEGjAUHMtMQAEJMIAAtBuK7GABCdCgALQaiuxgAQnQoACyABQQA2AvgDIAEoAogEIgRBAEoEQCABKAKMBCIFQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAEakkNAiACQQAgAyAEQSdqSxsNAyAFEKICIAEoAtgDIQMLIAFBADYCnAQgAUIANwKUBCABQYCAgIB4NgKIBCABIBM3A+gDIAhBCGogARCVBSAILQAIQQJ0KAKMnkggA2whBgJAAkACQCAILQAJIgJBCGsOCQIAAAAAAAAAAQALIAJBCE0EQCAGQQggAm4iA24iAiAGIAIgA2xHaiEGDAILQciuxgAQnQoACyAGQQF0IQYLIAYgASgCiAMiAksEQCAAQSc6AAAMAQsgAEEoOgAAIAEgAiAGazYCiAMLIAhBMGokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/ASAwt/BH4BeyMAQfABayIEJAACQCABKAIQIgUoAjAgAk0EQCAAQgM3AwAgAEGEgICAeDYCCAwBCyAFKAIsIAJBuAFsaiEGAkACQCADLQAIRQRAIAYtAKABIQUgAygCACICRQ0BIAVBAXENAgtBACECIANBADYCAAwBC0EAIQIgBUEBcUUNACAAQSE2AhAgAEHks8YANgIMIABBg4CAgHg2AgggAEIDNwMADAELAkACQCAGLQBoQQNGBEAgBikDYCERDAELIAEoAgQiBa0hEQJAAkAgBUL/////DyAGKQNQIg8gD0L/////D1obp2siCEEAIAUgCE8bQR1NBEBB4JXHACkDACIQpyECAkAgEEL/AYNCBFEEQCABIA9CHnw3AwggAkH/AXFBBEcNAQwDCyABIBE3AwggAkH/AXFBBEYNAgsgEEIgiKchASAQQgiIpyIFIQMCQAJAAkACQCACQf8BcSIIQQFrDgMBAAACCyABLQAIIQMLIANB/wFxQSVGDQELIAQgATYCfCAEQYGAgIB4NgJ0IAQgBUEIdCAIcjYCeAwFCyAEQR42AgwgBEGFtMYANgIIIAQgBEEIaq1CgICAgCCENwMQIARB9ABqQYyKwAAgBEEQahDgBCACQf8BcUEDRw0EIAEoAgAhAiABQQRqKAIAIgMoAgAiBQRAIAIgBREDAAsgAygCBCIFBEAgAiAFIAMoAggQwQcLIAFBDEEEEMEHDAQLIAEgD0IefCIQNwMIIAEoAgAgDyARIA8gEVQbp2oiBSgAAEHQlo0gRg0BCyAEQcS0xgAoAgA2AnwgBEG8tMYAKQIANwJ0DAILIAQgBS8AHDsAjQEgBCAFKQAUNwCFASAEMwCNASEPIAQzAIsBIREgBEIBNwNwIAQgDyAQIBF8fCIRNwN4IAZB4ABqIARB8ABqEOcHCyABIBE3AwggBCAGKQNAIhA3AzAgBCAQNwMoQYOAgIB4IQUCfgJAAkAgBi8BhAEiB0ECRgRAQeCyxgAhAUEgIQIMAQsgBCkCLCEPIBBCIIinIQogEKchCCAGMwEgIRACfwJAAkACQCACBEAgEFANAUGAksEAIQFBxwAhAgwFCyAQUA0BQYWAgIB4IQUMBAsgAygCBCEHAkAgBi0AogEiDUUEQCAGLQCLASELDAELIAYvAZgBQQFxDQILQQAMAgtCAAwECyAGLQCdAQshDAJAIAdFBEBB+KzRkQEhA0GJz5WaAiEJQZDx2aIDIQUMAQtBkPHZogMhBUGJz5WaAiEJQfis0ZEBIQMDQCAFQf8BcSACLQAAIANzQf8BcUECdCgC8MRHIANBCHZzIgNB/wFxIAlqQYWIosAAbEEBaiIJQRh2c0ECdCgC8MRHIAVBCHZzIQUgAkEBaiECIAdBAWsiBw0ACwsgBCAFNgKQASAEIAk2AowBIAQgAzYCiAEgBCAKNgJ8IAQgDzcCdCAEIAg2AnAgBCABNgKAASAEQQA2AmhCACEPIARCADcDYAJAAkACQCAEKQN4IhBQRQRAIAEoAgAhCSABKAIEIgWtIQ8gBEHgAGohB0EMIQMCfgNAIAkgESAPIA8gEVYbpyIIaiEKAkAgBSAIayICIBAgA60iEiAQIBJUG6ciDiACIA5JGyICQQFGBEAgByAKLQAAOgAADAELIAJFDQAgByAKIAL8CgAACyAQIAKtIhJ9IRAgESASfCERIBAgBSAIRg0BGiADIAJrIgNFDQMgAiAHaiEHIBBQRQ0AC0IACyEPIAEgETcDCAsgBCAPNwN4QYGAgIB4IQVB4JXHACkDACIPQv8Bg0IEUQ0BDAILIAEgETcDCCAEIBA3A3gLIARBiAFqIgEgBC0AYBD4BhogASAELQBhEPgGGiABIAQtAGIQ+AYaIAEgBC0AYxD4BhogASAELQBkEPgGGiABIAQtAGUQ+AYaIAEgBC0AZhD4BhogASAELQBnEPgGGiABIAQtAGgQ+AYaIAEgBC0AaRD4BhogASAELQBqEPgGGiABIAQtAGsQ+AYhAgJAAkAgDQRAIAJB/wFxIAxHDQEMAgsgAkH/AXEgC0YNAQtBhYCAgHghBQwBCyAEIAH9AAIA/QsDKCAEKQJ0IQ8gBCgCcCEIIAQoAoABIgENAiAIIQULIA9CIIinIQIgD6chAQsgACACNgIQIAAgATYCDCAAIAU2AgggAEIDNwMADAMLIAQoAoQBIQMgBCgCfCEKIAQgBP0AAyj9CwMYIAYvAYQBIQdCAQshESAGKAKIASEMQYDAABBuIgUEQAJAAkACfgJAAkAgB0H//wNxQQFrDgIBAwALIA9CIIinIQcgD6chCSAEIAT9AAMY/QsDYP0MAAAAAAAgAAAAAAAAAAAAACAF/RwAIRNCAiEQQQAhCyARDAELIAQgAzYChAEgBCABNgKAASAEIAo2AnwgBCAPNwJ0IAQgCDYCcCAEIAT9AAMY/QsDiAEgBEGYAWoQ5QQgBCAEKACBATYCECAEIAQoAIQBNgATIAQgBP0AA6gB/QsDYCAEIAT9AAPYAf0LA0ggBCAE/QADyAH9CwM4IAQgBP0AA7gB/QsDKCAEIAQpA+gBNwNYIAQtAIABIQsgBP0ABHAhEyAEKAKQASEIIAQoApQBIQkgBCgCmAEhByAEKAKcASEKIAQoAqABIQEgBCgCpAEhAyARIRAgBCkDiAELIQ9BuAEQbiICDQFBuAEQsQoACyAFQYDAAEEBEMEHIABBIDYCECAAQeCyxgA2AgwgAEGDgICAeDYCCCAAQgM3AwAMAwsgAkIANwMIIAJBgMAANgIEIAIgBTYCACACQQA6ABAgAiALOgAwIAIgE/0LAyAgAiAQNwMYIAIgBCgCEDYAMSACIAQoABM2ADQgAiADNgJUIAIgATYCUCACIAo2AkwgAiAHNgJIIAIgCTYCRCACIAg2AkAgAiAPNwM4IAJCADcDoAEgAkEANgKoASACIAw2ArABIAJBAToAtAEgAiAE/QADYP0LA1ggAiAEKQNYNwOYASACIAT9AAMo/QsDaCACIAT9AAM4/QsDeCACIAT9AANI/QsDiAEgACACNgKsASAAQQI2AqgBIAAgBjYCCCAAQgI3AwAMAgtBAUGAwAAQmgkACyAEIAQpAHU3AGEgBCAELQB0OgBgIAQgBC0AfzoAayAEIAQvAH07AGkgBCgCYCEBIAAgBCkCZDcCDCAAIAE2AgggAEIDNwMACyAEQfABaiQAC9ARAhF/A34jAEEgayICJAACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBFGsOAgECAAsgASACQR9qQbiBwQAQzQghASAAQYCAgIB4NgIAIAAgATYCBAwJCwJAAn8gASgCDCIHBEAgAkEEaiIDIAEoAggiCRCVBCACKAIIIgEgAigCBCIFQYCAgIB4Rg0BGiACKAIUIQggAigCECEGIAdBAUYNBSACKAIYIQogAigCDCELIAMgCUEQahDiAiACKAIIIQQgAigCBA0KIAdBAkYNBCACKQIMIRMgAyAJQSBqEOICIAIoAgghAyACKAIERQ0CIAMhBAwKC0EAQZiHwQBBqKrGABC4BwshASAAQYCAgIB4NgIAIAAgATYCBAwJCwJAIAdBA0cEQCACKQIMIRQgAkEEaiAJQTBqENMFIAIoAgRFDQEgAigCCCEEDAkLQQNBmIfBAEGoqsYAELgHIQQMCAsgACACKQIINwIwIAAgFDcCKCAAIAM2AiQgACATNwIcIAAgBDYCGCAAIAo2AhQgACAINgIQIAAgBjYCDCAAIAs2AgggACABNgIEIAAgBTYCACAHQQRGDQggAkEENgIEIAdB/P///wBqQf////8AcUEEaiACQQRqQYCcwQAQuAchBCAAQYCAgIB4NgIAIAAgBDYCBCAFBEAgASAFQQEQwQcLIAZFDQggCCAGQQEQwQcMCAsgASgCCCIERQ0DIARBBXQhCyABKAIEIQFBACEEQYCAgIB4IQUDQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgNBgICAgHhzIANBAE4bQQFrDg8BAAACAAAAAAAAAAMEBQYACyABIAJBH2pBmIPBABDNCCEDIAJBAToABCACIAM2AggMBgsgAkEAOgAEIAJBBCABQQRqLQAAIgMgA0EETxs6AAUMBQsgAkEAOgAEIAJCBCABQQhqKQMAIhMgE0IEWhs8AAUMBAsgAUEIaigCACEDAn8CQAJAAkACQCABQQxqKAIAQQRrDgIBAAMLIAMoAABB5tKxqwZzIANBBGoiDC0AAEHzAHNyDQFBAAwDC0EBIAMoAABB7dK5mwdGDQIaIAMoAABB7cLhmwdHDQFBAgwCCyADKAAAQfPQhYMHcyAMLQAAQeUAc3INAEEDDAELQQQLIQMgAkEAOgAEIAIgAzoABQwDCyABQQRqKAIAIQMCfwJAAkACQAJAIAFBCGooAgBBBGsOAgEAAwsgAygAAEHm0rGrBnMgA0EEaiIMLQAAQfMAc3INAUEADAMLQQEgAygAAEHt0rmbB0YNAhogAygAAEHtwuGbB0cNAUECDAILIAMoAABB89CFgwdzIAwtAABB5QBzcg0AQQMMAQtBBAshAyACQQA6AAQgAiADOgAFDAILIAJBBGogAUEIaigCACABQQxqKAIAEPQFDAELIAJBBGogAUEEaigCACABQQhqKAIAEPQFCyACLQAEQQFGBEAgAigCCCEBIABBgICAgHg2AgAgACABNgIEDAYLIAFBEGohAwJAAkACQAJAAkACQAJAAkAgAi0ABQ4EAAECAwcLIAVBgICAgHhHBEBByITBAEEFEIkIIQEgAEGAgICAeDYCACAAIAE2AgQMDQsgAkEEaiADEJUEIAIoAgghBiACKAIEIgVBgICAgHhGBEAgAEGAgICAeDYCACAAIAY2AgQMEAsgAigCGCEQIAIoAhQhCiACKAIQIQcgAigCDCERDAYLIAkNAiACQQRqIAMQ4gIgAigCCCENIAIoAgRBAUYEQCAAQYCAgIB4NgIAIAAgDTYCBAwMCyACKQIMIRRBASEJDAULIARBAUYNAyACQQRqIAMQ4gIgAigCCCEOIAIoAgRBAUYEQCAAQYCAgIB4NgIAIAAgDjYCBAwLCyACKQIMIRVBASEEDAQLIAgNASACQQRqIAMQ0wUgAigCCCEPIAIoAgRBAUYEQCAAQYCAgIB4NgIAIAAgDzYCBAwKCyACKAIMIRJBASEIDAMLQc2EwQBBBBCJCCEBIABBgICAgHg2AgAgACABNgIEDAgLQdWEwQBBBRCJCCEBIABBgICAgHg2AgAgACABNgIEDAcLQdGEwQBBBBCJCCEBIABBgICAgHg2AgAgACABNgIEDAYLIAFBIGohASALQSBrIgsNAAsMAgtBAkGYh8EAQaiqxgAQuAchBAwFC0EBQZiHwQBBqKrGABC4ByEEDAQLIAVBgICAgHhGDQAgAiAQNgIYIAIgCjYCFCACIAc2AhAgAiARNgIMIAIgBjYCCCACIAU2AgQCQAJAAkAgCQRAIARBAXFFDQEgCA0CQdWEwQBBBRCGCCEBDAMLQc2EwQBBBBCGCCEBDAILQdGEwQBBBBCGCCEBDAELIAAgAikCFDcCECAAIAL9AAIE/QsCACAAIA+tIBKtQiCGhDcCMCAAIBU3AiggACAONgIkIAAgFDcCHCAAIA02AhgMBQsgAEGAgICAeDYCACAAIAE2AgQgAkEEahCABkEADAILQYCAgIB4IQVByITBAEEFEIYIIQEgAEGAgICAeDYCACAAIAE2AgQLQQELRSAFQYCAgIB4RnINAQJAIAUEQCAGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAFakkNBCAAQQAgASAFQSdqSxsNBSAGEKICCyAHRQ0CIApBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAdqSQ0DIABBACABIAdBJ2pLGw0AIAoQogIMAgsMAwsgAEGAgICAeDYCACAAIAQ2AgQgBQRAIAFBBGsoAgAiAEF4cSIEQQRBCCAAQQNxIgAbIAVqSQ0CIABBACAEIAVBJ2pLGw0DIAEQogILIAZFDQAgCEEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBmpJDQEgAEEAIAEgBkEnaksbDQIgCBCiAgsgAkEgaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALlxECCH8EfiMAQdACayIBJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0A/AJFBEAgACgCACIDQQJHDQkgACgCiAFBAkcNCSAAKALgAiICQQRJDQogASAAKALcAiIEKAAAIgM2AhAgA0HSgpGaBEcEQCADQdKCkYIDRw0CIAJBCEkNCyACIAQoAAQiBUEHakF4cUEIaiIDSQ0LIAVBCGoiBiACSyAFQXdLcg0DIAFBADYCyAIgASAFNgLEAiABIARBCGo2AsACIAFBIGogAUHAAmoQYyABKAIkIQUgASgCICIHQQJGBEAgBRDBCCEDDBELIAFBsAFqIAFBKGpBgAH8CgAAIABBADYC4AIgASAFNgKsASABIAc2AqgBIAIgA2shBgJAAkAgA0UNACACIANGDQEgBkUNACAEIAMgBGogBvwKAAALIAAgBjYC4AILIAAgACkDuAIgA618Igk3A8ACIAAgCTcDuAIgASgCpAJBAUcNBCAAIAEoApQCIgI2AugCIAAgASgCtAEgASgCwAEiAyABKAKwARsiBDYC7AIgBEUNBSADIARuIgYgAyAEIAZsR2oiBCACRgRAIAEtAKgCIQIgASAFQQAgB0EBcRs2AiQgASADNgIgIAEgAkEBcToAKCAAQfgBaiABQSBqEPwBAkAgACgCAEECRg0AIAAoAmghBCAAKAJsIgIEQCAEQSRqIQMDQCADQQRrKAIAIgVBAEoEQCADKAIAIgZBBGsoAgAiB0F4cSIIQQRBCCAHQQNxIgcbIAVqSQ0LIAdBACAIIAVBJ2pLGw0MIAYQogILIANBMGohAyACQQFrIgINAAsLIAAoAmQiAgRAIAQgAkEwbEEIEMEHCyAAKAJwIgJBAEwNACAAKAJ0IAJBARDBBwsgACABQagBakGIAfwKAAAMCgsgASAENgLMAiABQoCAgIAQIgkgAEHoAmqthDcDKCABIAkgAUHMAmqthDcDICABQcACaiIAQcWEwAAgAUEgahC3ByAAEL0IIQMMCAsgAUEIaiAAEOkCIAEtAAhFBEAgAS0ACQ0JDAsLIAEoAgwhAwwPCyAANQLgAiEJIABBADYC4AIgACAJIAApA7gCfDcDuAIMDgsgASABQRBqrUKAgICA4AOENwMgIAFBFGoiAEGU88YAIAFBIGoQtwcgABC9CCEDDA0LQQggBiACQYzmwQAQoAUACyABIAFBpAJqrUKAgICAEIQ3AyAgAUG0AmoiAEHkksAAIAFBIGoQtwcgABC9CCEDIAEoApQCIQIMAwtB/OXBABCdCgALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyABKAKQAiEEIAIEQCAEQSRqIQADQCAAQQRrKAIAIgVBAEoEQCAAKAIAIAVBARDBBwsgAEEwaiEAIAJBAWsiAg0ACwsgASgCjAIiAARAIAQgAEEwbEEIEMEHCyABKAKYAiIAQQBMDQcgASgCnAIgAEEBEMEHDAcLIAAoAgAhAwsgA0ECRwRAAkACQAJAIAAoAuQCIAAoAugCTw0AIAAoAogBQQJGBEAgAUGoAWogABDpAiABLQCoAQ0JIAEtAKkBQQFHDQULIAFBqAFqIAAQXyABLQCoAQ0HIAEtAKkBQQFHDQQgACkD0AIiCSAAKQO4AiILVgRAIAAoAuACIQIgAEEANgLgAiACIAkgC30iCiACrSIMIAogDFQbIgqnIgNrIQQCQAJAIApQRQRAIAIgA0YNAiAERQ0BIAAoAtwCIgIgAiADaiAE/AoAAAwBCyACIANGDQELIAAgBDYC4AILIAAgCiALfCILNwO4AiAJIAtWDQULAkAgACgCiAFBAkYNACAAKALkASICRQ0AIAAoAugBIgNBBGsoAgAiBEF4cSIFIAJBKGwiAkEEQQggBEEDcSIEG2pJDQIgBEEAIAUgAkEnaksbDQMgAxCiAgsgAEECNgKIASAAIAAoAuQCQQFqIgI2AuQCIAIgACgC6AJPDQADQCABQagBaiICIAAQ6QIgAS0AqAFBAUYNCUEAIQMgAS0AqQFFDQogAiAAEF8gAS0AqAENCCABLQCpAUEBRw0KIAApA9ACIgkgACkDuAIiC1YEQCAAKALgAiECIABBADYC4AIgAiAJIAt9IgogAq0iDCAKIAxUGyIKpyIEayEFAkACQCAKUEUEQCACIARGDQIgBUUNASAAKALcAiICIAIgBGogBfwKAAAMAQsgAiAERg0BCyAAIAU2AuACCyAAIAogC3wiCzcDuAIgCSALVg0LCwJAIAAoAogBQQJGDQAgACgC5AEiAkUNACAAKALoASIDQQRrKAIAIgRBeHEiBSACQShsIgJBBEEIIARBA3EiBBtqSQ0DIARBACAFIAJBJ2pLGw0EIAMQogILIABBAjYCiAEgACAAKALkAkEBaiICNgLkAiACIAAoAugCSQ0ACwsgAEEBOgD8AiAANQLgAiEJQQAhAyAAQQA2AuACIAAgCSAAKQO4Anw3A7gCDAgLQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyABQagBaiAAEF8gAS0AqAENAiABLQCpAUEBRw0AIAApA9ACIgsgACkDuAIiCVgEQCAAKALgAiECDAILIAAoAuACIQRBACECIABBADYC4AIgBCALIAl9IgogBK0iDCAKIAxUGyIKpyIFayEDAkACQCAKUEUEQCAEIAVGDQIgA0UNASAAKALcAiICIAIgBWogA/wKAAAMAQsgBCAFRg0BCyAAIAM2AuACIAMhAgsgACAJIAp8Igk3A7gCIAkgC1oNAQtBACEDDAQLQQAhAyAAQQA2AuACIABBAToA/AIgACAJIAKtfDcDuAIMAwsgASgCrAEhAwwCCyABKAKsASEDDAELIAEoAqwBIQMLIAFB0AJqJAAgAwv2EAMNfwF7CX0CQCAAKAIIIglFBEBBASEKQQEhBgwBCyAAKAIEIQggCRBuIgoEQEMAABBBIAAqAkggAC0AWEECRiIEG0MAAEDBIAAqAkQgBBsiE5NDAAB+Q5UhFCAIQRRqIQYDQEEAIQQCQAJ/IAZBCGsvAQAiAUH//wFxRQRAIAFBEHQMAQsgAUH/B3EhAiABQYCAAnEhBSABQYD4AXEiAUGA+AFGBEAgBUEQdCIBQYCAgPwHciACRQ0BGiABIAJBDXRyQYCAgP4HcgwBCyAFQRB0IgUgAUENdEGAgID8AHEgAkENdHJBgICAwANqciABDQAaIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAFQYCAgNgDciACQRd0a3ILvkMAAAAAXkUNACAGQQFrLQAAIgIgBkECay0AACIBIAZBA2stAAAiBSABIAVLGyIBIAEgAkkbIgJFDQAgEyAUIAJBAWtB/wFxs5SSEIgEQwAAAABeRQ0AIAYvAQAhAiAGQQJqLQAAIgGzQwAAf0OVQwAAAD+UQ9sPSUCUIhUQnwIiEiACQQh2s/0TIAIgAUEQdHJB/wFxs/0gAf0MAAB/QwAAf0MAAH9DAAB/Q/3nASIOIA795AH9DAAAgL8AAIC/AACAvwAAgL/95AEiDv0fASIQQwAAAABDAACAPyAQi5MgDv0fACIWi5MiEIwiDyAPIA9cGyIPQwAAAAAgD0MAAAAAXhsiDyAPjCIXIA79DAAAAAAAAAAAAAAAAAAAAAD9Rv1NIg79xwH9GwJBAXEbkiIRIBAgEJQgESARlCAWIA8gFyAO/RsAQQFxG5IiDyAPlJKSkSIRlZT9EyASIA8gEZWU/SABIBIgECARlZT9IAIgFRChAv0gAyIO/Qz///9/////f////3////9//U79DAAAgH8AAIB/AACAfwAAgH/9Of2kAUEPRw0AIA4gDv3mASIOIA4gDv0NCAkKCwwNDg8AAQIDAAECA/3kASIOIA4gDv0NBAUGBwABAgMAAQIDAAECA/3kAf3jAf0fAEMAAAAAXiEECyADIApqIAQ6AAAgBkEYaiEGIAkgA0EBaiIDRw0ACyAIQRhqIQIgCSAKaiEGQQAhASAKIQQDQAJAAkAgBCAGRwRAIAFBAWohBSAELQAADQIgBSAJSQRAIAEgCWshBUEBIQMDQCADIAVqRQ0DIAMgBGotAABBAUYEQCAIIAFBGGxqIgcgAikCEDcCECAHIAL9AAIA/QsCACABQQFqIQELIAJBGGohAiAFIANBAWoiA2oNAAsLIAAgATYCCAwFC0HgqMEAEJkKAAtB4KjBABCZCgALIARBAWohBCACQRhqIQIgBSIBIAlHDQALDAELQQEgCRCaCQALAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCFCIBRQ0AQQAhA0EAIQIgCiEEA0AgBCAGRg0CIAQtAABBAUYEQCAEQQFqIQQgAkEYaiECIANBAWoiAyABRw0BDAILCyAAKAIQIgggA0EYbGoiBSgCFCIHQQVPBEAgBSgCCCAHQQJ0QQQQwQcLIAEgA0EBaksEQCACIAhqIQIgAyABayEHQQEhAQNAIAEgBGoiCyAGRg0EIAIiBUEYaiECAkAgCy0AAEUEQCAFQSxqKAIAIgtBBUkNASAFQSBqKAIAIgVBBGsoAgAiDEF4cSINIAtBAnQiC0EEQQggDEEDcSIMG2pJDQcgDEEAIA0gC0EnaksbDQggBRCiAgwBCyAIIANBGGxqIgUgAikCEDcCECAFIAL9AAIA/QsCACADQQFqIQMLIAcgAUEBaiIBag0ACwsgACADNgIUCwJAIAAoAiAiA0UNAEEAIQJBCSEBIAohBANAIAQgBkYNBiACQQFqIQUgBC0AAEUEQCADIAVLBEAgAiADayEFIAAoAhwiCCABaiEBQQEhAwNAIAMgBGoiByAGRg0KIActAABBAUYEQCAIIAJBCWxqIgcgAS0ACDoACCAHIAEpAAA3AAAgAkEBaiECCyABQQlqIQEgBSADQQFqIgNqDQALCyAAIAI2AiAMAgsgBEEBaiEEIAFBCWohASAFIgIgA0cNAAsLAkAgACgCLCIDRQ0AQQAhAkEPIQEgCiEEA0AgBCAGRg0IIAJBAWohBSAELQAARQRAIAMgBUsEQCACIANrIQUgACgCKCIIIAFqIQFBASEDA0AgAyAEaiIHIAZGDQwgBy0AAEEBRgRAIAggAkEPbGoiByABKQAHNwAHIAcgASkAADcAACACQQFqIQILIAFBD2ohASAFIANBAWoiA2oNAAsLIAAgAjYCLAwCCyAEQQFqIQQgAUEPaiEBIAUiAiADRw0ACwsCQCAAKAI4IgNFDQBBACECQRUhASAKIQQDQCAEIAZGDQogAkEBaiEFIAQtAABFBEAgAyAFSwRAIAIgA2shBSAAKAI0IgggAWohAUEBIQMDQCADIARqIgcgBkYNDiAHLQAAQQFGBEAgCCACQRVsaiIHIAEpAA03AA0gByAB/QAAAP0LAAAgAkEBaiECCyABQRVqIQEgBSADQQFqIgNqDQALCyAAIAI2AjgMAgsgBEEBaiEEIAFBFWohASAFIgIgA0cNAAsLIAkEQCAKQQRrKAIAIgBBeHEiBEEEQQggAEEDcSIAGyAJakkNCyAAQQAgBCAJQSdqSxsNDCAKEKICCw8LQfCowQAQmQoAC0HwqMEAEJkKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQYCpwQAQmQoAC0GAqcEAEJkKAAtBkKnBABCZCgALQZCpwQAQmQoAC0HQqMEAEJkKAAtB0KjBABCZCgALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7UXAQt/IwBBgAFrIgIkAAJAIAAQ+QUiAQ0AIABBADYCCCAAQQxqIQsCQCAAKAIUIgEgACgCECIDTwRAIAsoAgAhBwwBCyAAKAIMIQcDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEgB2otAAAiBUEJaw4lAQEICAEICAgICAgICAgICAgICAgICAgBCAcICAgICAgICAgIBQALIAVB2wBrDiEFBwcHBwcHBwcHBwMHBwcHBwcHAQcHBwcHAgcHBwcHBwUHCyAAIAFBAWoiATYCFCABIANHDQ4gAyEBDA8LIAAgAUEBaiIFNgIUIAMgBU0NByAAIAFBAmoiBDYCFAJAIAUgB2otAABB9QBHDQAgBCAFIAMgAyAFSRsiBUYNCCAAIAFBA2oiBjYCFCAEIAdqLQAAQewARwRAIAYhBAwBCyAFIAZGDQggACABQQRqIgQ2AhQgBiAHai0AAEHsAEYNDAsgAkEJNgJ0IAJByABqIAcgAyAEEPgBIAJB9ABqIAIoAkggAigCTBCmCCEBDA8LIAAgAUEBaiIFNgIUIAMgBU0NByAAIAFBAmoiBDYCFAJAIAUgB2otAABB8gBHDQAgBCAFIAMgAyAFSRsiBUYNCCAAIAFBA2oiBjYCFCAEIAdqLQAAQfUARwRAIAYhBAwBCyAFIAZGDQggACABQQRqIgQ2AhQgBiAHai0AAEHlAEYNCwsgAkEJNgJ0IAJB2ABqIAcgAyAEEPgBIAJB9ABqIAIoAlggAigCXBCmCCEBDA4LIAAgAUEBaiIFNgIUIAMgBU0NByAAIAFBAmoiBDYCFAJAIAUgB2otAABB4QBHDQAgBCAFIAMgAyAFSRsiBUYNCCAAIAFBA2oiBjYCFCAEIAdqLQAAQewARwRAIAYhBAwBCyAFIAZGDQggACABQQRqIgg2AhQgBiAHai0AAEHzAEcEQCAIIQQMAQsgBSAIRg0IIAAgAUEFaiIENgIUIAcgCGotAABB5QBGDQoLIAJBCTYCdCACQegAaiAHIAMgBBD4ASACQfQAaiACKAJoIAIoAmwQpgghAQwNCyAAIAFBAWo2AhQMAwsgCkEBcSIEIAAoAgAgACgCCCIBa0sEQCAAIAEgBEEBQQEQ1gYgACgCCCEBCyAAIAQEfyAAKAIEIAFqIAk6AAAgAUEBagUgAQs2AgggACAAKAIUQQFqNgIUQQAhBAwICyAAIAFBAWo2AhQgCxCPBCIBDQoMBgsgBUEwa0H/AXFBCk8NBAsjAEEwayIFJAAgACgCDCEIAkACQAJAAkAgACgCFCIBIAAoAhAiBkkEQCAAIAFBAWoiBDYCFCABIAhqLQAAIgNBMEYNAiADQTFrQf8BcUEITQ0BIAQhAQsgBUENNgIkIAVBGGogCCAGIAEQ+AEgBUEkaiAFKAIYIAUoAhwQpgghAQwDCyAEIAZPDQEDQCAEIAhqLQAAQTBrQf8BcUEJSw0CIAAgBEEBaiIENgIUIAQgBkcNAAtBACEBDAILIAQgBk8NACAEIAhqLQAAQTBrQf8BcUEJSw0AIAVBDTYCJCAFQQhqIAggBiABQQJqIgQgBiAEIAZJGxD4ASAFQSRqIAUoAgggBSgCDBCmCCEBDAELQQAhASAEIAZPDQACQAJAIAQgCGotAAAiA0HlAEYgA0HFAEZyRQRAIANBLkcNAyAAIARBAWoiAzYCFCADIAZPDQIgAyAIai0AAEEwa0H/AXFBCUsNAiAEQQJqIQQDQCAGIAQiA0YNAiADQQFqIQQgAyAIai0AACIHQTBrQf8BcUEKSQ0ACyAAIAM2AhQgB0EgckHlAEcNAwsjAEEgayIDJAAgACAAKAIUIgFBAWoiBDYCFCAAKAIMIQYCQCAEIAAoAhAiCE8NAAJAIAQgBmotAABBK2sOAwABAAELIAAgAUECaiIENgIUCwJAAkAgBCAISQRAIAAgBEEBaiIBNgIUIAQgBmotAABBMGtB/wFxQQlNDQEgASEECyADQQ02AhQgA0EIaiAGIAggBBD4ASADQRRqIAMoAgggAygCDBCmCCEEDAELQQAhBCABIAhPDQADQCABIAZqLQAAQTBrQf8BcUEJSw0BIAAgAUEBaiIBNgIUIAEgCEcNAAsLIANBIGokACAEIQEMAgsgACAGNgIUDAELIAVBDTYCJCAFQRBqIAggBiAEQQJqIgQgBiAEIAZJGxD4ASAFQSRqIAUoAhAgBSgCFBCmCCEBCyAFQTBqJAAgAUUNBAwICyACQQU2AnQgAkFAayAHIAMgBRD4ASACQfQAaiACKAJAIAIoAkQQpgghAQwHCyACQQU2AnQgAkHQAGogByADIAUQ+AEgAkH0AGogAigCUCACKAJUEKYIIQEMBgsgAkEFNgJ0IAJB4ABqIAcgAyAFEPgBIAJB9ABqIAIoAmAgAigCZBCmCCEBDAULIAJBCjYCdCACQThqIAcgAyABQQFqIgAgAyAAIANJGxD4ASACQfQAaiACKAI4IAIoAjwQpgghAQwEC0EBIQQgCkEBcQRAIAkhBQwBCyAAKAIIIgFFBEBBACEBDAQLIAAgAUEBayIBNgIIIAAoAgQgAWotAAAhBQsCQCACAn8CQAJAAkACQCAAKAIUIgEgACgCECIDTwRAIAUhCQwBCyAAKAIEIQYgACgCDCEHIAAoAAghCiAFIQkDQAJAAkACQAJAAkACQCABIAdqLQAAIgVBCWsOJAEBCAgBCAgICAgICAgICAgICAgICAgIAQgICAgICAgICAgIAgALIAVB3QBGDQIgBUH9AEYNAwwHCyAAIAFBAWoiATYCFCABIANHDQQgAyEBDAULIARBAXFFDQYgACABQQFqIgE2AhQMBgsgCUH/AXFB2wBHDQQMAQsgCUH/AXFB+wBHDQMLIAAgAUEBaiIBNgIUIApFBEBBACEBDAoLIAAgCkEBayIKNgIIIAYgCmotAAAhCUEBIQQgASADSQ0ACwsCQCACIAlB/wFxIgBB2wBHBH8gAEH7AEcNAUEDBUECCzYCdCACQTBqIAsoAgAgAyABQQFqIgAgAyAAIANJGxD4ASACQfQAaiACKAIwIAIoAjQQpgghAQwIC0GMjMYAQShBsJXGABCoCQALIARBAXFFDQBBByAJQf8BcSIAQdsARg0CGiAAQfsARg0BQYyMxgBBKEHAlcYAEKgJAAsgCUH/AXFB+wBHDQIgASADSQRAA0ACQAJAIAEgB2otAABBCWsiBEEZSw0AQQEgBHRBk4CABHENASAEQRlHDQAgACABQQFqNgIUIAsQjwQiAQ0JIAAoAgwhBwJAAkAgACgCFCIBIAAoAhAiA0kEQANAAkAgASAHai0AAEEJaw4yAAADAwADAwMDAwMDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQDCyAAIAFBAWoiATYCFCABIANHDQALIAMhAQsgAkEDNgJ0IAJBIGogByADIAFBAWoiACADIAAgA0kbEPgBIAJB9ABqIAIoAiAgAigCJBCmCCEBDAsLIAJBBjYCdCACQRhqIAcgAyABQQFqIgAgAyAAIANJGxD4ASACQfQAaiACKAIYIAIoAhwQpgghAQwKCyAAIAFBAWoiATYCFAwGCyACQRE2AnQgAkEIaiAHIAMgAUEBaiIAIAMgACADSRsQ+AEgAkH0AGogAigCCCACKAIMEKYIIQEMCAsgACABQQFqIgE2AhQgASADRw0ACyADIQELIAJBAzYCdCACQRBqIAcgAyABQQFqIgAgAyAAIANJGxD4ASACQfQAaiACKAIQIAIoAhQQpgghAQwFC0EICzYCdCACIAcgAyABQQFqIgAgAyAAIANJGxD4ASACQfQAaiACKAIAIAIoAgQQpgghAQwDC0EBIQogASADSQ0ACwsgAkEFNgJ0IAJBKGogByADIAFBAWoiACADIAAgA0kbEPgBIAJB9ABqIAIoAiggAigCLBCmCCEBCyACQYABaiQAIAELiBMEDX8KfQN7AX4jAEGgAmsiAiQAIAEqAgAhDyABKgIEIRAgAiABKgIIIhH9EyABKgIQIhP9IAAgASoCFCIS/SAB/QsEkAEgAiAS/RMgASoCDCIS/SAAIBD9IAH9CwSAASACIBP9EyAP/SAAIBL9IAH9CwRwIAJBoP7GAP0ABAD9CwTAASACQbD+xgD9AAQA/QsEsAEgAkHA/sYA/QAEAP0LBKABQwAAgD8gD4sgEIuSIBGLkiIPIA8gD1wbIg9DAACAPyAPQwAAgD9eG0O9N4Y1lCITIBOUIRggAkHAAWpBBHIhASACQbABakEEciEMIAJBoAFqQQRyIQUgAkGAAWohDUEgIQoCfwNAIAL9AARwIhn9HwEiESARlCAZ/R8CIg8gD5SSIAL9AASAASIa/R8CIhAgEJSSIBheRQRAIBr9HwG8IQMgGf0fALwMAgsgAiAaIBkgEIsgD4siDyARiyIQIA8gEF4iCxteIgYb/QsEYCATQQhBBCAGIAtyIgQbIgkgAkHgAGpyKgIAIg+LXQRAIAIqApgBIRAgAiAZ/QsEQAJ9AkAgECAa/R8BIhIgBBsgEiAZ/R8AIhQgBhuTIhAgEFwgDyAPkiIPIA9cckUEQCAQvCIIQYCAgPwDRgRAIA8Q8wQMAwsgCEEedkECcSIOIA+8IgdBH3ZyIQMCQAJAAkACQAJAAkAgB0H/////B3EiB0UEQEPbD0nAIRAgA0ECaw4CAgYBCyAIQf////8HcSIIRQ0CIAhBgICA/AdHDQMgB0GAgID8B0cNBCADQQJ0KgK4vEgMCAsgDwwHC0PbD0lADAYLQ9sPyT8gD5gMBQsgB0GAgID8B0YgCEGAgIDoAGogB0lyDQMCfSAOBEBDAAAAACAHQYCAgOgAaiAISQ0BGgsgDyAQlYsQ8wQLIRACQAJAAkAgA0EBaw4DAQIABAsgEEMuvbszkkPbD0nAkgwGCyAQjAwFC0PbD0lAIBBDLr27M5KTDAQLIANBAnQqAsi8SCEQCyAQDAILIA8gEJIMAQtD2w/JPyAPmAsgAiAa/QsEMCACQTBqIAlyKgIAIRVDAAAAP5QiEBCfAiEPIAJB8ABqIgNBFEEQIAYbaiAQEKECIhAgEiAa/R8AIAYbIhKUIA8gFZSTOAIAIAIgAv0ABJABIhn9CwRQQSRBICAGGyADaiAQIBn9HwEgGf0fACAGGyIWlCAPIAJB0ABqIAlyKgIAIheUkzgCAEEEQQAgBhsgA3IgECARIBQgBhsiEZQgDyACQUBrIAlyKgIAIhSUkzgCAEEYQRQgBBsgA2ogDyASlCAQIBWUkjgCAEEoQSQgBBsgA2ogDyAWlCAQIBeUkjgCACADQQhBBCAEGyIHciAPIBGUIBAgFJSSOAIAQRBBACAGGyADaiAQIAL9AASAASIZIAL9AARwIAYb/R8AIhGUIA8gAv0ABJABIBkgBBv9HwAiEpSTOAIAQSBBECAEGyADaiAPIBGUIBAgEpSSOAIAQRRBBCAGGyADaiAQIAL9AASAASIZIAL9AARwIAYb/R8BIhGUIA8gAv0ABJABIBkgBBv9HwEiEpSTOAIAQSRBFCAEGyADaiAPIBGUIBAgEpSSOAIAQRhBCCAGGyADaiAQIAL9AASAASIZIAL9AARwIAYb/R8CIhGUIA8gAv0ABJABIBkgBBv9HwIiEpSTOAIAQShBGCAEGyADaiAPIBGUIBAgEpSSOAIAIA0gAyAGGyAHakEANgIAAn8gBkUEQEEgQRAgCxsgA2pBADYCAEIAIRwgAkHAAWohBCACQaABaiEDIAJBsAFqDAELIAJBADYClAFCASEcIAUhAyABIQQgDAsgAiAC/QAEwAH9CwQgIAQgECACQSBqIgQgHKdBAnRyKgIAIhGUIA8gBCAJcioCACISlJM4AgAgAiAC/QAEsAEiGf0LBBAgECAZ/R8BIBn9HwAgBhsiFZQgDyACQRBqIAlyKgIAIhSUkzgCACACIAL9AASgASIZ/QsEACADIBAgGf0fASAZ/R8AIAYbIhaUIA8gAiAJcioCACIXlJM4AgAgAkHAAWogB3IgDyARlCAQIBKUkjgCACACQbABaiAHciAPIBWUIBAgFJSSOAIAIAJBoAFqIAdyIA8gFpQgECAXlJI4AgALIApBAWsiCg0ACyACKAKEASEDIAIoAnALIQUgAiACKgKYASITOALcASACIAM2AtgBIAIgBTYC1AEgAiAC/QAEwAEiGSAC/QAEsAEiGv0NCAkKCxgZGhsAAQIDAAECAyAC/QAEoAEiG/0NAAECAwQFBgcYGRobGBkaG/0LBIACIAIgGSAa/Q0EBQYHFBUWFwABAgMAAQIDIBv9DQABAgMEBQYHFBUWFxQVFhf9CwTwASACIBkgGv0NAAECAxAREhMAAQIDAAECAyAb/Q0AAQIDBAUGBxAREhMQERIT/QsE4AEgGf0fACIPIA+UIBr9HwAiECAQlJIgG/0fACIRIBGUkiISQwAAAABeBEAgAiARIBKRIhGVOALoASACIBAgEZU4AuQBIAIgDyARlTgC4AELIBn9HwEiDyAPlCAa/R8BIhAgEJSSIBv9HwEiESARlJIiEkMAAAAAXgRAIAIgESASkSIRlTgC+AEgAiAQIBGVOAL0ASACIA8gEZU4AvABCyAZ/R8CIg8gD5QgGv0fAiIQIBCUkiAb/R8CIhEgEZSSIhJDAAAAAF4EQCACIBEgEpEiEZU4AogCIAIgECARlTgChAIgAiAPIBGVOAKAAgtBACEEIAJBADYCnAIgAkEBNgKYAiACQdQBaiEKQQEhASAFQR91QQF2IAVzIgUgA0EfdUEBdiADcyIDSARAQQEhBCACQQE2ApwCIAJBADYCmAIgBSEDIAJB2AFqIQpBACEBCwJAIAMgE7wiBSAFQR91QQF2cyIFTgRAQQIhAwwBCyACQZgCaiEDIAUgCigCACIGQR91QQF2IAZzSgR/IAIgBDYCmAIgAkGcAmoFIAMLQQI2AgACQCACKAKcAiIEQQJNBEAgAigCmAIiBUEDTw0BIAEhAyAFIQEMAgsgBEEDQdD+xgAQ8AcACyAFQQNB4P7GABDwBwALIAAgAkHgAWoiBSADQQR0av0ABAD9CwQwIAAgAUEEdCAFav0ABAD9CwQgIAAgBEEEdCAFav0ABAD9CwQQIAAgAkHUAWoiBSADQQJ0aioCADgCCCAAIAFBAnQgBWoqAgA4AgQgACAEQQJ0IAVqKgIAOAIAIAJBoAJqJAALjRADGX8BewF+IwBB0ABrIgkkACAJ/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAJICH9CwMIAkACQCADBEAgA0EBdCIYIQ4gAiEIQQ8hDANAAkAgCC8BACILRQ0AIAtBD00EQCAJQQhqIAtBAXRqIgogCi8BAEEBajsBACAMIAsgCyAMSxshDCANIAsgCyANSRshDQwBCyALQRBBpIfIABDwBwALIAhBAmohCCAOQQJrIg4NAAsgDQ0BCyAAQQI2AgggBEKAgICKgICAoAE3AQAgAEKAgICAEDcCAAwBCwJAAkAgDCANTQRAIAkvAQoiCEECSw0CIAkvAQwiC0EEIAhBAXRrIgpB/v8DcUsNAiAJLwEOIg4gCiALa0EBdCIKQf7/A3FLDQIgCS8BECISIAogDmtBAXQiCkH+/wNxSw0CIAkvARIiGSAKIBJrQQF0IgpB/v8DcUsNAiAJLwEUIhogCiAZa0EBdCIKQf7/A3FLDQIgCS8BFiIQIAogGmtBAXQiCkH+/wNxSw0CIAkvARgiESAKIBBrQQF0IgpB/v8DcUsNAiAKIBFrQf//A3FBAXQiCiAJLwEaIg9JDQIgCiAPa0EBdCIKIAkvARwiE0kNAiAKIBNrQQF0IgogCS8BHiIUSQ0CIAogFGtBAXQiCiAJLwEgIhVJDQIgCiAVa0EBdCIKIAkvASIiFkkNAiAKIBZrQQF0IgogCS8BJCIXSQ0CIAogF2tBAXQiCiAJLwEmIhtJDQIgAUH/AXFFIA1BAUdyIAogG0dxRQRAIAwgBiANIAYgDUkbIAYgDEkbIQpBACEGIAlBADYCKCAJIAg7ASwgCSAIIAtqIgg7AS4gCSAIIA5qIgg7ATAgCSAIIBJqIgg7ATIgCSAIIBlqIgg7ATQgCSAIIBpqIgg7ATYgCSAIIBBqIgg7ATggCSAIIBFqIgg7ATogCSAIIA9qIgg7ATwgCSAIIBNqIgg7AT4gCSAIIBRqIgg7AUAgCSAIIBVqIgg7AUIgCSAIIBZqIgg7AUQgCSAIIBdqOwFGIAIhCwNAAkAgCy8BACIIRQ0AIAhBD00EQCAJQShqIAhBAXRqIgggCC8BACIIQQFqOwEAIAhBoAJJBEAgByAIQQF0aiAGOwEADAILIAhBoAJB1IfIABDwBwALIAhBEEHEh8gAEPAHAAsgC0ECaiELIAZBAWohBiAYQQJrIhgNAAtBFCETQQEhF0ECIRsgAUH/AXEiASEVAkACQAJAIAFBAWsOAgABAgsgCkEKSw0EQYECIRNBHyEVQeSHyAAhG0GiiMgAIRcMAQsgCkEJSw0DQQAhE0EgIRVBwojIACEbQYKJyAAhFwtBASAKdCIUQQFrIR4gE0EBa0H//wNxIR8gAUEBayEgQX8hDkEAIRAgCiESQQAhEUEAIQZBACEWQQAhDwNAAkAgEyAHIAYiGUEBdGovAQAiBksEQEEAQeAAIAYgH0kiCBshASAGQQAgCBshGAwBCyAGIBNrQf//A3EiBiAVSQRAIAYgF2otAAAhASAbIAZBAXRqLwEAIRgMAQsgBiAVQbSJyAAQ8AcACyAEQX8gDCAQayIddCIcQQEgEnQiGiARIA8gEHZqamoiCEECdGohCyAcQQJ0IQ8gGiEGAkACQAJ/AkACQAJAAkACQAJAA0AgBSAITQ0BIAsgGDsBACALQQNqIB06AAAgC0ECaiABOgAAIAsgD2ohCyAIIBxqIQggBiAcaiIGDQALIAxBD0sNAUGAgICAeCAMQQFrdiAWaiIWQf+B/AdxQQh4IBZBGHhB/4H8B3FyIgFBBHZBj568+ABxIAFBj568+ABxQQR0ciIBQQJ2QbPmzJkDcSABQbPmzJkDcUECdHIiAUEBdkHVqtWqBXEgAUHVqtWqBXFBAXRyIQ8gGUEBaiEGIAlBCGogDEEBdGoiASABLwEAQQFrIgE7AQACQAJAIAFB//8DcUUEQCAMIA1GDQEgGUGfAkYNBSADIAcgBkEBdGovAQAiAU0NBiACIAFBAXRqLwEAIQwLIAogDE8NCiAPIB5xIgEgDkcNAQwKCyAWRQ0IIAUgEUkNBSAFIBFrIgEgD0sEQCAEIBFBAnRqIA9BAnRqIgEgHToAAyABQcAAOgACIAFBADsBAAwJCyAPIAFBhIrIABDwBwALQQEgDCAQIAogEBsiEGsiEnQiCCAMIA1PDQYaIA0gEGshEiAJQQhqIAxBAXRqIQsgDCEOA0AgCCALLwEAayIIQQBMBEAgDiAQayESDAcLIAtBAmohCyAIQQF0IQggDkEBaiIOIA1JDQALDAULIAggBUHEicgAEPAHAAsgDEEQQdSJyAAQ8AcAC0GgAkGgAkHkicgAEPAHAAsgASADQfSJyAAQ8AcACyARIAUgBUGUisgAEKAFAAtBASASdAsgFGohFAJAAkACQCAgDgIAAQILIBRBtApNDQEMBwsgFEHQBEsNBgsgASAFSQRAIAQgAUECdGoiCCAKOgADIAggEjoAAiAIIBEgGmoiETsBACABIQ4MAgsgASAFQaSKyAAQ8AcACyAAIBQ2AgggACAKNgIEIABBADYCAAwGCyAGQaACRw0AC0GgAkGgAkGkicgAEPAHAAsgAEF/NgIADAMLIAkgDDYCSCAJIA02AkwgCUKAgICAoAciIiAJQcwAaq2ENwMwIAkgIiAJQcgAaq2ENwMoQa2MwAAgCUEoakG0h8gAEJMIAAsgAEEBNgIADAELIABBfzYCAAsgCUHQAGokAAunHAUWfwV+AXwBfQF7IwBBQGoiBCQAAkACQAJAAkAgASgCAEEATgRAIAEoAggiDEEFdCEKIAogASgCBCIBaiEUQZjEyAACfkGoxMgALQAABEBBoMTIACkDACEaQZjEyAApAwAMAQsgBEEoahDcBkGoxMgAQQE6AABBoMTIACAEKQMwIho3AwAgBCkDKAsiG0IBfDcDACAMRQRAIAQgGjcDICAEIBs3AxggBEEANgIUIARCADcCDCAEQbCixwA2AggMAgtBqtUCIAwgDEGq1QJPGyECAkAgDEEPTwR/QX8gAkEDdEEHbkEBa2d2QQFqBUEEIAJBCHFBCGogDEEESRsLIgOtQhh+IhhCIIinDQAgA0EIaiIGIBinIgJqIgwgBkkgDEH4////B0tyDQAgDBBuIhAEQCACIBBqIQUgBgRAIAVB/wEgBvwLAAsgBCAaNwMgIAQgGzcDGCAEQQA2AhQgBCAFNgIIIAQgA0EBayICNgIMIAQgAiADQQN2QQdsIANBCUkbNgIQIApBIGtBBXZBAWohFyAEQRhqIQwCQANAAkAgBEEoaiABEKsFIAQoAiwhCgJ8AkAgBCgCKCISQYCAgIB4RwRAIAQoAjAhFQJAAkACQAJAAkACQAJAAkACQAJAQRUgASgCECICQYCAgIB4cyACQQBOG0EBaw4KCwABAgMEBQYHCAkLIAEvARS4DAsLIAEoAhS4DAoLIAEpAxi6DAkLIAEsABS3DAgLIAEuARS3DAcLIAEoAhS3DAYLIAEpAxi5DAULIAEqAhQiHrtEAAAAAAAA8D9EAAAAAAAA8L8gHrxBAE4bpgwECyABKwMYDAMLIAFBEGogBEE/akGQnMEAEM0IIBIEQCAKIBJBARDBBwshCgsgAEEANgIAIAAgCjYCBCAEKAIMIgNFDQkgBCgCFCIHBEAgBCgCCCIBQQhqIQogASkDAEJ/hUKAgYKEiJCgwIB/gyEYA0AgGFAEQANAIAoiAEEIaiEKIAFBwAFrIQEgACkDAEKAgYKEiJCgwIB/gyIYQoCBgoSIkKDAgH9RDQALIBhCgIGChIiQoMCAf4UhGAsgASAYeqdBA3ZBaGxqIgBBGGsoAgAiBgRAIABBFGsoAgAiDEEEaygCACIAQXhxIgJBBEEIIABBA3EiABsgBmpJDQcgAEEAIAIgBkEnaksbDQ4gDBCiAgsgGEIBfSAYgyEYIAdBAWsiBw0ACwsgA0EYbCIAIANqQSFqIgpFDQkgBCgCCCAAayICQRxrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAKakkNCiAAQQAgASAKQSdqSxsNAiACQRhrEKICDAkLIAEtABS4CyEdIAQpAxggBCkDICAKIBUQqQQhHCAEKAIQRQRAQQAhEwJAIARBCGoiDygCDCIOQQFqIgMEQAJAAkACQCAPKAIEIg0gDUEBaiIIQQN2IgZBB2wiFiANQQhJGyICQQF2IANJBEACfyACQQFqIgIgAyACIANLGyICQQ9PBEAgAkH/////AUsNBUF/IAJBA3RBB25BAWtndkEBagwBC0EEIAJBCHFBCGogAkEESRsLIgWtQhh+IhhCIIinDQMgBUEIaiIHIBinIgZqIgMgB0kgA0H4////B0tyDQMgAxBuIgJFBEAgAxCxCgALIAIgBmohCyAHBEAgC0H/ASAH/AsACyAFQQFrIgggBUEDdkEHbCAFQQlJGyEWIA8oAgAhBiAOBEAgBikDAEJ/hUKAgYKEiJCgwIB/gyEZIAwpAwghGiAMKQMAIRsgBiECIA4hA0EAIQUDQCAZUARAA0AgBUEIaiEFIAJBCGoiAikDAEKAgYKEiJCgwIB/gyIYQoCBgoSIkKDAgH9RDQALIBhCgIGChIiQoMCAf4UhGQsgCyAIIBsgGiAGIBl6p0EDdiAFaiITQWhsaiIHQRRrKAIAIAdBEGsoAgAQqQSnIglxIgdqKQAAQoCBgoSIkKDAgH+DIhhQBEBBCCERA0AgByARaiEHIBFBCGohESALIAcgCHEiB2opAABCgIGChIiQoMCAf4MiGFANAAsLIBlCAX0gGYMhGSALIBh6p0EDdiAHaiAIcSIHaiwAAEEATgRAIAspAwBCgIGChIiQoMCAf4N6p0EDdiEHCyAHIAtqIAlBGXYiCToAACALIAdBCGsgCHFqQQhqIAk6AAAgCyAHQX9zQRhsaiIJIAYgE0F/c0EYbGoiBykAEDcAECAJIAf9AAAA/QsAACADQQFrIgMNAAsLIA8gCDYCBCAPIAs2AgAgDyAWIA5rNgIIIA1FDQUgDSANQRhsQR9qQXhxIgJqQQlqIg5FDQUgBiACayIDQQRrKAIAIgJBeHEiBkEEQQggAkEDcSICGyAOakkNAiACQQAgBiAOQSdqSxsNASADEKICDAULIA8gCAR/IA8oAgAhCQJAAkAgBiAIQQdxQQBHaiIDQQJJBEAgAyECDAELIANBAXEhAiADQf7///8DcSIGQQN0IRMgBiEHIAkhBQNAIAUgBf0AAwAiH/1NQQf9zQH9DAEBAQEBAQEBAQEBAQEBAQH9TiAf/Qx/f39/f39/f39/f39/f39//VD9zgH9CwMAIAVBEGohBSAHQQJrIgcNAAsgAyAGRg0BCyAJIBNqIQUDQCAFIAUpAwAiGEJ/hUIHiEKBgoSIkKDAgAGDIBhC//79+/fv37//AIR8NwMAIAVBCGohBSACQQFrIgINAAsLAkAgCEEITwRAIAggCWogCSkAADcAAAwBCyAIRQ0AIAlBCGogCSAI/AoAAAsgDCkDCCEaIAwpAwAhG0EAIQIDQAJAIAkgAiIGaiIPLQAAQYABRw0AIAkgAkF/c0EYbGohCyAJIAJBaGxqIgJBEGshEyACQRRrIQUDQCANIBsgGiAFKAIAIBMoAgAQqQSnIghxIgchAyAHIAlqKQAAQoCBgoSIkKDAgH+DIhlQBEBBCCERA0AgAyARaiECIBFBCGohESAJIAIgDXEiA2opAABCgIGChIiQoMCAf4MiGVANAAsLIAkgGXqnQQN2IANqIA1xIgNqLAAAQQBOBEAgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IQMLAkAgAyAHayAGIAdrcyANcUEITwRAIAMgCWoiAi0AACACIAhBGXYiAjoAACAJIANBCGsgDXFqQQhqIAI6AAAgCSADQX9zQRhsaiEIQf8BRw0BIA9B/wE6AAAgCSANIAZBCGtxakEIakH/AToAACAIIAspABA3ABAgCCAL/QAAAP0LAAAMAwsgDyAIQRl2IgI6AAAgCSANIAZBCGtxakEIaiACOgAADAILIAspAAAhGCALIAgpAAA3AAAgCCAYNwAAIAgpAAghGCAIIAspAAg3AAggCyAYNwAIIAsoABAhAyALIAgoABA2ABAgCCgAFCECIAggCygAFDYAFCALIAI2ABQgCCADNgAQDAALAAsgBkEBaiECIAYgDUcNAAsgDSAWIA1BCEkbBUEACyAOazYCCAwEC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAsLQaDowwBBOUG86MMAEJMIAAsgBCgCCCEFCyABQSBqIQEgBCgCDCIDIByncSEHIBxCGYgiGkL/AINCgYKEiJCgwIABfiEbQQAhDkEAIQYDQAJ/AkACQAJAIAUgB2opAAAiHCAbhSIYQn+FIBhCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiGFBFBEADQCAFIBh6p0EDdiAHaiADcUFobGoiAkEQaygCACAVRgRAIAogAkEUaygCACAVEPcHRQ0DCyAYQgF9IBiDIhhQRQ0ACwsgHEKAgYKEiJCgwIB/gyEYIA5FBEAgGFANAyAYeqdBA3YgB2ogA3EhEAtBASAYIBxCAYaDUA0DGiAFIBBqLAAAIg5BAE4EQCAFIAUpAwBCgIGChIiQoMCAf4N6p0EDdiIQai0AACEOCyAFIBBqIBqnQf8AcSICOgAAIAUgEEEIayADcWpBCGogAjoAACAFIBBBaGxqIgJBCGsgHTkDACAEIAQoAhRBAWo2AhQgBCAEKAIQIA5BAXFrNgIQIAJBEGsgFTYCACACQRRrIAo2AgAgAkEYayASNgIADAELIAJBCGsgHTkDACASRQ0AIApBBGsoAgAiAkF4cSIGQQRBCCACQQNxIgIbIBJqSQ0MIAJBACAGIBJBJ2pLGw0NIAoQogILIAEgFEcNBCAUIQEMCQtBAAshDiAGQQhqIgYgB2ogA3EhBwwACwALCwwHCwwFCyAMELEKAAtBoOjDAEE5QbzowwAQkwgACyABIARBP2pBqP/AABDNCCEBIABBADYCACAAIAE2AgQMAQsgACAEKQMgNwMYIAAgBP0AAxD9CwMIIAAgBCkDCCIYNwMAIBinIgpFIAEgFEZyDQAgACgCDCEFIAAoAgQhBiAEIBc2AgggFCABa0EFdiAXaiAEQQhqQfCbwQAQuAchASAAQQA2AgAgACABNgIEIAZFDQAgBQRAIApBCGohACAKKQMAQn+FQoCBgoSIkKDAgH+DIRggCiEBA0AgGFAEQANAIAAiAkEIaiEAIAFBwAFrIQEgAikDAEKAgYKEiJCgwIB/gyIYQoCBgoSIkKDAgH9RDQALIBhCgIGChIiQoMCAf4UhGAsgASAYeqdBA3ZBaGxqIgxBGGsoAgAiAgRAIAxBFGsoAgAgAkEBEMEHCyAYQgF9IBiDIRggBUEBayIFDQALCyAGQRhsIgEgBmpBIWoiAEUNACAKIAFrQRhrIABBCBDBBwsgBEFAayQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL1g8CF38GfiMAQRBrIggkACAAKAI8IRAgACgCOCEFIAApAzAhGCAA/QwAAAAAAAAAAAEAAAABAAAA/QsEMCAAKAJAIQEgAEEANgJAIAAoAkghAiAAQQE2AkggACgCUCEJIAAoAkwhByAAQgA3AkwgCCACNgIEIAggBzYCCCAIIAk2AgxBoO7HACELQYAEIQoCQAJAAkACQCAALQCYAUEBaw4DAAECAwsgAEGkAWohC0G0CiEKDAILIABB9CpqIQtBtAohCgwBCyAAQcTUAGohC0HQBCEKC0Gg/scAIQ5BICENAkACQAJAAkAgAC0AoAFBAWsOAwABAgMLIABBpAFqIQ5BtAohDQwCCyAAQfQqaiEOQbQKIQ0MAQsgAEHE1ABqIQ5B0AQhDQsgACgCDCICQUBqIgNBQUkEQEJ/IAA1ApwBhkJ/IAA1ApQBhkJ/hSEbIAIgA0khBgJ/IAFB/wFxQQlLBEAgASEEIAUMAQsgAUE4ciEEIAUpAAAgAUEPca2GIBiEIRggBSABQQN2QQFxQQdzagshAiAAQcgAaiERIAFBgH5xIRQgACgCRCEVIABBCGohEkJ/hSEdQQAgAyAGGyEPIBhCIIghGSAbpyETIBinIQMCQAJAA0ACQCADIAIpAAAgBK2GIhinciEMAkACQAJAAkACQAJAAkACQAJAAkACQCAEQf8BcSIWIAAoApQBSQRAIAogDCATcSIBSw0BIAEgCkGg/8cAEPAHAAsgCiADIBNxIgFNDQELIARBOHIhBCAYQiCIIBmEIRggCyABQQJ0aiIBLQADIQMgAS8BACEGIAEtAAIiAUUNASAJIQUMAgsgASAKQbD/xwAQ8AcACyAHIAlNDQEgCCgCBCIXIAlqIAY6AAAgCCAJQQFqIgU2AgwCQCAMrSAYQiCGhCADrYgiGSAbg6ciASAKSQRAIAQgA2shBCALIAFBAnRqIgEvAQAhBiABLQADIQMgAS0AAiIBRQ0BIBlCIIghGCAZpyEMDAILIAEgCkHQ/8cAEPAHAAsgBSAHTw0CIAUgF2ogBjoAACAIIAlBAmoiBTYCDCAKIBkgA62IIhkgG4OnIgFNDQMgGUIgiCEYIAQgA2shBCALIAFBAnRqIgEvAQAhBiABLQADIQMgAS0AAiEBIBmnIQwLIAIgFkEDdkEHc2ohAiAEIANrIQQgDK0gGEIghoQgA62IIhhCIIghGSAYpyEDIAFB/wFxRQ0FAkACQANAIAFBEHENAiABQcAAcQ0BIAYgGEJ/IAGtQi+DhkJ/hYOnakH//wNxIgEgCkkEQCADrSAZQiCGhCALIAFBAnRqIgEtAAMiCa2IIhhCIIghGSAYpyEDIAQgCWshBCABLwEAIQYgAS0AAiIBRQ0JDAELCyABIApB8P/HABDwBwALIAFBIHFFDQUgAEEMOgAADAgLIA0gGCABrUIPgyIciCIZIB2DpyIHSw0DIAcgDUGAgMgAEPAHAAsgCSAHQcD/xwAQ8AcACyAFIAdBwP/HABDwBwALIAEgCkHg/8cAEPAHAAsgDiAHQQJ0aiIJLQADIQwgCS0AAiEDAn8gBCABQQ9xayIBQf8BcUEcTwRAIAEhBCACDAELIAFBOHIhBCACKQAAIAGthiAZhCEZIAIgAUH4AXFBA3ZBB3NqCyEHIAkvAQAhAiAEIAxrIQQgGSAMrYghGgJAAkACQAJAAkACQCADQRBxRQRAA0AgA0HAAHENAiANIAIgGkJ/IAOtQi+DhkJ/hYOnakH//wNxIgJNDQMgBCAOIAJBAnRqIgEtAAMiAmshBCAaIAKtiCEaIAEvAQAhAiABLQACIgNBEHFFDQALCyAGIBhCfyAchkJ/hYOnaiEGIAQgA0EPcWshBCAaIAOtQg+DIhiIIhxCIIghGSAcpyEDIAUgAiAaQn8gGIZCf4WDp2pB//8DcSIJTwRAIAhBBGogCSAGQf//A3EQiQMgByECDAkLIAkgBWsiASAAKAIQTQRAIAAoAhQiAkUEQCAPIAFrIQUMBwsgASACSw0FIAIgAWshBQwGCyAALQABQQRxRQ0DQR4hCiAAQR46AABB0+nAACELQQEhBgwCCyAAQR46AAAgGqchA0H/6sAAIQtBASEGQRYhCgwBCyACIA1BkIDIABDwBwALIAchAgwIC0GggMgAQdUAQcyAyAAQkwgACyAPIAEgAmsiAWshBSABIAZB//8DcU8NACAIQQRqIBIgBSAPELkFIAYgAWshBkEAIQUgAiEBCyAIQQRqIBIgBSABIAZB//8DcSICIAEgAkkbIAVqELkFIAEgAk8EQCAHIQIMAwsgCEEEaiAJIAIgAWsQiQMgByECDAILIABBHjoAAEHj6sAAIQtBASEGQRwhCgwECyAFIAdPDQQgCCgCBCAFaiAGOgAAIAggBUEBajYCDAsgECACayAEQfgBcUEDdmpBDk0NACAIKAIIIgcgCCgCDCIJa0GDAksNAQsLQQAhBkEAIQsLIAAgFTYCRCAAIBA2AjwgESAIKQIENwIAIBEgCCgCDDYCCCAAIBQgBEEHcSIHcjYCQCAAIAIgBEH4AXFBA3ZrNgI4IAAgA0F/IAd0QX9zca03AzAgBgRAIAAgCjYCiAEgACALNgKEAQsgCEEQaiQADwsgBSAHQcD/xwAQ8AcAC0Hkg8gAQcoAQbCEyAAQqAkAC+oPAg9/AX4jAEEgayICJAACQAJAAkACQAJAAkACQAJ/An8CQAJAAkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EUaw4CAAEECyABKAIMIgNFDQIgAkEEaiABKAIIIgEQlQQgAigCCCEIIAIoAgQiBkGAgICAeEYEQCAIIQMMDQsgAigCFCEJIAIoAhAhByADQQFGDQEgAigCGCELIAIoAgwhDCACQQRqIAFBEGoQpgMgAigCCCEEIAIoAgQiBUGAgICAeEYEQCAEIQMMDAsCQAJ/IANBAkcEQCACKAIMIQ8gAkEEaiABQSBqENkDIAItAARFDQIgAigCCAwBC0ECQcSGwQBBqKrGABC4BwshAyAFRQ0MIARBBGsoAgAiAUF4cSIKIAVBAnQiBUEEQQggAUEDcSIBG2pJDRAgAUEAIAogBUEnaksbDQ8gBBCiAgwMCyADQQNGBEAgAi0ABSEQDAsLIAJBAzYCBCADQf3///8AakH/////AHFBA2ogAkEEakGAnMEAELgHIQMgBgRAIAggBkEBEMEHCyAHBEAgCSAHQQEQwQcLIAVFDQwgBCAFQQJ0QQQQwQcMDAsgASgCCCIDRQRAQYCAgIB4IQUMBgsgA0EFdCEKIAEoAgQhAUGAgICAeCEGQYCAgIB4IQUDQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgNBgICAgHhzIANBAE4bQQFrDg8BAAACAAAAAAAAAAMEBQYACyABIAJBH2pB+IHBABDNCCEDIAJBAToABCACIAM2AggMBgsgAkEAOgAEIAJBAyABQQRqLQAAIgMgA0EDTxs6AAUMBQsgAkEAOgAEIAJCAyABQQhqKQMAIhEgEUIDWhs8AAUMBAsgAUEIaigCACEDAn8CQAJAAkACQCABQQxqKAIAQQVrDgQAAwMBAwsgAygAAEHm0rGrBnMgA0EEaiIOLQAAQfMAc3INAUEADAMLIAMpAABC496Rq6bs27frAFINAUEBDAILIAMoAABB4sK5owZzIA4tAABB8wBzcg0AQQIMAQtBAwshAyACQQA6AAQgAiADOgAFDAMLIAFBBGooAgAhAwJ/AkACQAJAAkAgAUEIaigCAEEFaw4EAAMDAQMLIAMoAABB5tKxqwZzIANBBGoiDi0AAEHzAHNyDQFBAAwDCyADKQAAQuPekaum7Nu36wBSDQFBAQwCCyADKAAAQeLCuaMGcyAOLQAAQfMAc3INAEECDAELQQMLIQMgAkEAOgAEIAIgAzoABQwCCyACQQRqIAFBCGooAgAgAUEMaigCABDkBQwBCyACQQRqIAFBBGooAgAgAUEIaigCABDkBQsgAi0ABEEBRg0FIAFBEGohAwJAAkACQAJAIAItAAVBAWsOAwECAwALIAZBgICAgHhHBEBByITBAEEFEIkIIQNBAQwLCyACQQRqIAMQlQQgAigCCCEDIAIoAgQiBkGAgICAeEYEQEGAgICAeCEGQQEMCwsgAigCGCELIAIoAhQhCSACKAIQIQcgAigCDCEMIAMhCAwCCyAFQYCAgIB4RwRAQdCFwQBBCBCJCCEDQQEMCgsgAkEEaiADEKYDIAIoAgghBCACKAIEIgVBgICAgHhGBEBBASEKIAQhAwwMCyACKAIMIQ8MAQsgDUUEQCACQQRqIAMQ2QMgAi0ABEEBRg0HIAItAAUhEEEBIQ0MAQtBoIbBAEEFEIkIIQNBAQwICyABQSBqIQEgCkEgayIKDQALDAMLQQFBxIbBAEGoqsYAELgHIQMMCQtBAEHEhsEAQaiqxgAQuAchAwwJCyABIAJBH2pBqIHBABDNCCEDDAgLIAZBgICAgHhGDQEgAiALNgIYIAIgCTYCFCACIAc2AhAgAiAMNgIMIAIgCDYCCCACIAY2AgQCQCAFQYCAgIB4RiIBRQRAIA0NB0GghsEAQQUQhgghAyAFRQ0BIAQgBUECdEEEEMEHDAELQdCFwQBBCBCGCCEDCyACQQRqEIAGQQAMAwsgAigCCCEDQQEMAQtBgICAgHghBkHIhMEAQQUQhgghA0EBCyEBQQELIQogBUH/////B3FFIAFFcg0AAkAgBEEEaygCACIBQXhxIgsgBUECdCIFQQRBCCABQQNxIgEbak8EQCABQQAgCyAFQSdqSxsNASAEEKICDAILDAcLDAULIApFIAZBgICAgHhGcg0CAkAgBgRAIAhBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAZqSQ0HIAFBACAEIAZBJ2pLGw0GIAgQogILIAdFDQMgCUEEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgB2pJDQYgAUEAIAQgB0EnaksbDQAgCRCiAgwDCwwECyAAIBA6ACQgACAPNgIgIAAgBDYCHCAAIAU2AhggACALNgIUIAAgCTYCECAAIAc2AgwgACAMNgIIIAAgCDYCBCAAIAY2AgAMAgsgBgRAIAhBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAZqSQ0EIAFBACAEIAZBJ2pLGw0DIAgQogILIAdFDQAgCUEEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgB2pJDQMgAUEAIAQgB0EnaksbDQIgCRCiAgsgAEGBgICAeDYCACAAIAM2AgQLIAJBIGokAA8LQeSCxwBBLkGUg8cAEKgJAAtBpILHAEEuQdSCxwAQqAkAC6gQAgl/BH4jAEHQAmsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtALQERQRAIAAoAvgBIgNBAkcNCSAAKAKAA0ECRw0JIAAoApgEIgJBBEkNCiAAQfgBaiEIIAEgACgClAQiBCgAACIDNgIQIANB0oKRmgRHBEAgA0HSgpGCA0cNAiACQQhJDQsgAiAEKAAEIgVBB2pBeHFBCGoiA0kNCyAFQQhqIgYgAksgBUF3S3INAyABQQA2AsgCIAEgBTYCxAIgASAEQQhqNgLAAiABQSBqIAFBwAJqEGMgASgCJCEFIAEoAiAiB0ECRgRAIAUQwQghAwwRCyABQbABaiABQShqQYAB/AoAACAAQQA2ApgEIAEgBTYCrAEgASAHNgKoASACIANrIQYCQAJAIANFDQAgAiADRg0BIAZFDQAgBCADIARqIAb8CgAACyAAIAY2ApgECyAAIAApA/ADIAOtfCIKNwP4AyAAIAo3A/ADIAEoAqQCQQFHDQQgACABKAKUAiIENgKgBCAAIAEoArQBIAEoAsABIgIgASgCsAEbIgM2AqQEIANFDQUgBCACIANuIgQgAiADIARsR2oiA0YEQCABLQCoAiEDIAEgBUEAIAdBAXEbNgIkIAEgAjYCICABIANBAXE6ACggACABQSBqEKsDAkAgACgC+AFBAkYNACAAKALgAiEEIAAoAuQCIgIEQCAEQSRqIQMDQCADQQRrKAIAIgVBAEoEQCADKAIAIgZBBGsoAgAiB0F4cSIJQQRBCCAHQQNxIgcbIAVqSQ0LIAdBACAJIAVBJ2pLGw0MIAYQogILIANBMGohAyACQQFrIgINAAsLIAAoAtwCIgIEQCAEIAJBMGxBCBDBBwsgACgC6AIiAkEATA0AIAAoAuwCIAJBARDBBwsgCCABQagBakGIAfwKAAAMCgsgASADNgLMAiABQoCAgIAQIgogAEGgBGqthDcDKCABIAogAUHMAmqthDcDICABQcACaiIAQcWEwAAgAUEgahC3BwwICyABQQhqIAAQ7AIgAS0ACEUEQCABLQAJDQkMCwsgASgCDCEDDA8LIAA1ApgEIQogAEEANgKYBCAAIAogACkD8AN8NwPwAwwOCyABIAFBEGqtQoCAgIDgA4Q3AyAgAUEUaiIAQZTzxgAgAUEgahC3ByAAEL0IIQMMDQtBCCAGIAJBjObBABCgBQALIAEgAUGkAmqtQoCAgIAQhDcDICABQbQCaiIAQeSSwAAgAUEgahC3BwwDC0H85cEAEJ0KAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAAQvQghAyABQagBahDpBAwHCyAIKAIAIQMLIANBAkcEQAJAAkACQCAAKAKcBCAAKAKgBE8NACAAKAKAA0ECRgRAIAFBqAFqIAAQ7AIgAS0AqAENCSABLQCpAUEBRw0FCyABQagBaiAAEDogAS0AqAENByABLQCpAUEBRw0EIAApA4gEIgogACkD8AMiDFYEQCAAKAKYBCECIABBADYCmAQgAiAKIAx9IgsgAq0iDSALIA1UGyILpyIDayEEAkACQCALUEUEQCACIANGDQIgBEUNASAAKAKUBCICIAIgA2ogBPwKAAAMAQsgAiADRg0BCyAAIAQ2ApgECyAAIAsgDHwiDDcD8AMgCiAMVg0FCwJAIAAoAoADQQJGDQAgACgC3AMiAkUNACAAKALgAyIDQQRrKAIAIgRBeHEiBSACQShsIgJBBEEIIARBA3EiBBtqSQ0CIARBACAFIAJBJ2pLGw0DIAMQogILIABBAjYCgAMgACAAKAKcBEEBaiICNgKcBCACIAAoAqAETw0AA0AgAUGoAWoiAiAAEOwCIAEtAKgBQQFGDQlBACEDIAEtAKkBRQ0KIAIgABA6IAEtAKgBDQggAS0AqQFBAUcNCiAAKQOIBCIKIAApA/ADIgxWBEAgACgCmAQhAiAAQQA2ApgEIAIgCiAMfSILIAKtIg0gCyANVBsiC6ciBGshBQJAAkAgC1BFBEAgAiAERg0CIAVFDQEgACgClAQiAiACIARqIAX8CgAADAELIAIgBEYNAQsgACAFNgKYBAsgACALIAx8Igw3A/ADIAogDFYNCwsCQCAAKAKAA0ECRg0AIAAoAtwDIgJFDQAgACgC4AMiA0EEaygCACIEQXhxIgUgAkEobCICQQRBCCAEQQNxIgQbakkNAyAEQQAgBSACQSdqSxsNBCADEKICCyAAQQI2AoADIAAgACgCnARBAWoiAjYCnAQgAiAAKAKgBEkNAAsLIABBAToAtAQgADUCmAQhCkEAIQMgAEEANgKYBCAAIAogACkD8AN8NwPwAwwIC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgAUGoAWogABA6IAEtAKgBDQIgAS0AqQFBAUcNACAAKQOIBCIMIAApA/ADIgpYBEAgACgCmAQhAgwCCyAAKAKYBCEEQQAhAiAAQQA2ApgEIAQgDCAKfSILIAStIg0gCyANVBsiC6ciBWshAwJAAkAgC1BFBEAgBCAFRg0CIANFDQEgACgClAQiAiACIAVqIAP8CgAADAELIAQgBUYNAQsgACADNgKYBCADIQILIAAgCiALfCIKNwPwAyAKIAxaDQELQQAhAwwEC0EAIQMgAEEANgKYBCAAQQE6ALQEIAAgCiACrXw3A/ADDAMLIAEoAqwBIQMMAgsgASgCrAEhAwwBCyABKAKsASEDCyABQdACaiQAIAMLug8EF38BfAF+AW8jAEEgayICJAAgAiABNgIAAkACQCABJQEQC0UEQCACIAJBH2pB9IzBABCUBCEFIABBAjoAHCAAIAU2AgAgASIDQYMISw0BDAILQQIhCQJ/AkADQCADIQQgB0FAaiEHAkACfwJAA0AgB0GQvsEAaigCACIGIAdBlL7BAGooAgAiChDYAyIIIQMgASUBIAMlARAMIRsQnwUiAyAbJgECQCADJQEQDQRAIAglASABJQEQDkUNAQsgB0HIAGohBwJAAkACQAJAIApBBmsOBQAGBgYBBgtBACAGKAAAQfLOiesEcyIKIAZBBGoiBC8AAEHp3AFzckUNBhogBC8AAEHh8AFzIApyDQFBAQwGC0ECIAYpAABC7NzNmpaM27LNAIUiGiAGQQhqIgQzAABC6dwBhYRQDQUaIAQzAABC4fABhSAahFBFDQFBAwwFC0EEIAYoAABB89DF6QRzIAZBBGovAABB4fABc3JFDQQaQQUgBC8AAEHh8AFzIgQgBigAAEHz0MnpBHNyRQ0EGiAEIAYoAABB89DN6QRzcg0DQQYMBAsgBikAAELs3pH7hK7YsekAhSAEMwAAQvTyAYWEUEUNAkEHDAMLIANBhAhPBEAgAxC+BwsgCEGECE8EQCAIEL4HCyAHQQhqIgcNAAsgBCEDDAILQQgLIQQgCEGECE8EQCAIEL4HCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQOCAECAwQFBgcIAAsgA0GECEkNDiADEL4HDA4LIAsNECACIAM2AgQgAkEIaiADEPwKAn8gAigCCCIEBEAgAisDECIZtkMAAIA/QwAAgL8gGb1CAFkbmLwMAQsgAkEEaiACQR9qQaiEwQAQlAQLIQUgA0GECE8EQCADEL4HC0EAIARFDREaQQEhCwwNCyAMDQsgAiADNgIEIAJBCGogAxD8CgJ/IAIoAggiBARAIAIrAxAiGbZDAACAP0MAAIC/IBm9QgBZG5i8DAELIAJBBGogAkEfakGohMEAEJQECyENIANBhAhPBEAgAxC+BwsgBEUEQCANIQVBAAwRC0EBIQwMDAsgDg0JIAIgAzYCBCACQQhqIAMQ/AoCfyACKAIIIgQEQCACKwMQIhm2QwAAgD9DAACAvyAZvUIAWRuYvAwBCyACQQRqIAJBH2pBqITBABCUBAshDyADQYQITwRAIAMQvgcLIARFBEAgDyEFQQAMEAtBASEODAsLIBANByACIAM2AgQgAkEIaiADEPwKAn8gAigCCCIEBEAgAisDECIZtkMAAIA/QwAAgL8gGb1CAFkbmLwMAQsgAkEEaiACQR9qQaiEwQAQlAQLIREgA0GECE8EQCADEL4HCyAERQRAIBEhBUEADA8LQQEhEAwKCyASDQUgAiADNgIEIAJBCGogAxD8CgJ/IAIoAggiBARAIAIrAxAiGbZDAACAP0MAAIC/IBm9QgBZG5i8DAELIAJBBGogAkEfakGohMEAEJQECyETIANBhAhPBEAgAxC+BwsgBEUEQCATIQVBAAwOC0EBIRIMCQsgFA0DIAIgAzYCBCACQQhqIAMQ/AoCfyACKAIIIgQEQCACKwMQIhm2QwAAgD9DAACAvyAZvUIAWRuYvAwBCyACQQRqIAJBH2pBqITBABCUBAshFSADQYQITwRAIAMQvgcLIARFBEAgFSEFQQAMDQtBASEUDAgLIBYNASACIAM2AgQgAkEIaiADEPwKAn8gAigCCCIEBEAgAisDECIZtkMAAIA/QwAAgL8gGb1CAFkbmLwMAQsgAkEEaiACQR9qQaiEwQAQlAQLIRcgA0GECE8EQCADEL4HCyAERQRAIBchBUEADAwLQQEhFgwHCyAJQf8BcUECRwRAQe6txgBBChCICCEFQQEMCwsgAiADNgIIIAMQhAsiBEH///8HRiEGAkAgBEH///8HRwRAQQIgBEEARyAGGyEJDAELIAJBCGogAkEfakHkjMEAEJQEIRgLIANBhAhPBEAgAxC+BwsgBkUNBiAYIQVBAAwKC0HorcYAQQYQiAghBUEBDAkLQeKtxgBBBhCICCEFQQEMCAtB3K3GAEEGEIgIIQVBAQwHC0HSrcYAQQoQiAghBUEBDAYLQcitxgBBChCICCEFQQEMBQtBwq3GAEEGEIgIIQVBAQwECyAHQcAARw0BCwsCQAJAAkACQAJAAkACQCALBEAgDEUNASAORQ0CIBBFDQMgEkUNBCAURQ0FIBZFDQYgCUH/AXFBAkYNByAAIAk6ABwgACAXNgIYIAAgFTYCFCAAIBM2AhAgACARNgIMIAAgDzYCCCAAIA02AgQgACAFNgIAIAEiA0GDCEsNCgwLC0G8rcYAQQYQhwghBUEADAgLQcKtxgBBBhCHCCEFQQAMBwtByK3GAEEKEIcIIQVBAAwGC0HSrcYAQQoQhwghBUEADAULQdytxgBBBhCHCCEFQQAMBAtB4q3GAEEGEIcIIQVBAAwDC0HorcYAQQYQhwghBUEADAILQe6txgBBChCHCCEFQQAMAQtBvK3GAEEGEIgIIQVBAQsgAEECOgAcIAAgBTYCACABQYQITwRAIAEQvgcLQQFzIANBhAhJcg0BCyADEL4HCyACQSBqJAAL8w8CA38BfiMAQTBrIgIkACABKAIEIQQgASgCACEDAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAC0AAEEBaw4jGhscAQIDBAUGBwgJCh0LDB4NDg8QERITFBUfICEWKhcYGSsACyACIABBBGo2AgwgAiAAQQhqNgIoIAIgAEEMajYCLCACIAJBLGqtQoCAgICQDYQ3AyAgAkKAgICAoA0iBSACQShqrYQ3AxggAiAFIAJBDGqthDcDECADIARBm/HAACACQRBqEM4DDCsLIAIgAEEBajYCLCACIAJBLGqtQoCAgICQDYQ3AxAgAyAEQcfowAAgAkEQahDOAwwqCyACIABBAWo2AiwgAiACQSxqrUKAgICAkA2ENwMQIAMgBEGl8MAAIAJBEGoQzgMMKQsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgJANhDcDECADIARB8/DAACACQRBqEM4DDCgLIAIgAEEBajYCLCACIAJBLGqtQoCAgICQDYQ3AxAgAyAEQczwwAAgAkEQahDOAwwnCyACIABBAWo2AiwgAiACQSxqrUKAgICAkA2ENwMQIAMgBEHx78AAIAJBEGoQzgMMJgsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgJANhDcDECADIARBvvLAACACQRBqEM4DDCULIAIgAEEEajYCKCACIABBCGo2AiwgAkKAgICAsA0iBSACQShqrYQ3AxggAiAFIAJBLGqthDcDECADIARB4vLAACACQRBqEM4DDCQLIAIgAEEEajYCKCACIABBCGo2AiwgAkKAgICAsA0iBSACQSxqrYQ3AxggAiAFIAJBKGqthDcDECADIARBk/PAACACQRBqEM4DDCMLIAIgAEEBajYCDCACIABBBGo2AiggAiAAQQhqNgIsIAIgAkEMaq1CgICAgMANhDcDICACQoCAgICwDSIFIAJBLGqthDcDGCACIAUgAkEoaq2ENwMQIAMgBEHY8cAAIAJBEGoQzgMMIgsgAiAAQQJqNgIoIAIgAEEBajYCLCACIAJBKGqtQoCAgIDQDYQ3AxggAiACQSxqrUKAgICAoAmENwMQIAMgBEHQ9MAAIAJBEGoQzgMMIQsgAiAAQQJqNgIoIAIgAEEBajYCLCACIAJBLGqtQoCAgIDQDYQ3AxggAiACQShqrUKAgICAwA2ENwMQIAMgBEGAgsAAIAJBEGoQzgMMIAsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgMANhDcDECADIARBqPXAACACQRBqEM4DDB8LIAIgAEEBajYCLCACIAJBLGqtQoCAgICgCYQ3AxAgAyAEQbn0wAAgAkEQahDOAwweCyACIABBAWo2AiwgAiACQSxqrUKAgICAoAmENwMQIAMgBEHV9cAAIAJBEGoQzgMMHQsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgKAJhDcDECADIARBi/TAACACQRBqEM4DDBwLIAIgAEEBajYCLCACIAJBLGqtQoCAgICgCYQ3AxAgAyAEQaP0wAAgAkEQahDOAwwbCyACIABBAWo2AiwgAiACQSxqrUKAgICAoAmENwMQIAMgBEHl88AAIAJBEGoQzgMMGgsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgKAJhDcDECADIARBwvPAACACQRBqEM4DDBkLIAIgAEEBajYCLCACIAJBLGqtQoCAgICgCYQ3AxAgAyAEQYj2wAAgAkEQahDOAwwYCyACIABBAWo2AiwgAiACQSxqrUKAgICAoAmENwMQIAMgBEHt9cAAIAJBEGoQzgMMFwsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgKAJhDcDECADIARBqPbAACACQRBqEM4DDBYLIAQoAgwhASAALQABQQFrDgcMDQ4PEBESCwsgAiAAQQFqNgIsIAIgAkEsaq1CgICAgJANhDcDECADIARBrevAACACQRBqEM4DDBQLIAIgAEEBajYCLCACIAJBLGqtQoCAgICQDYQ3AxAgAyAEQcWTwAAgAkEQahDOAwwTCyACIABBAWo2AiwgAiACQSxqrUKAgICAkA2ENwMQIAMgBEGlk8AAIAJBEGoQzgMMEgsgA0GIwMQAQRYgBCgCDBEAAAwRCyADQZ7AxABBJSAEKAIMEQAADBALIANBw8DEAEEeIAQoAgwRAAAMDwsgA0HhwMQAQSEgBCgCDBEAAAwOCyADQYLBxABBGCAEKAIMEQAADA0LIANBmsHEAEEbIAQoAgwRAAAMDAsgAiAAQQFqNgIsQQEgA0G1wcQAQRggBCgCDBEAAA0LGiACIAJBLGqtQoCAgIDgDYQ3AxAgAyAEQZSbwAAgAkEQahDOAwwLCyADQc3BxABBNyAEKAIMEQAADAoLIANBhMLEAEEjIAERAAAMCQsgA0GnwsQAQSYgAREAAAwICyADQc3CxABBICABEQAADAcLIANB7cLEAEEdIAERAAAMBgsgA0GKw8QAQTQgAREAAAwFCyADQb7DxABBMSABEQAADAQLIANB78PEAEHHACABEQAADAMLIANBtsTEAEEmIAERAAAMAgsgA0HcxMQAQR8gBCgCDBEAAAwBCyADQfvExABBECAEKAIMEQAACyACQTBqJAAL1B0DDX8IfgN7IwBBIGsiCiQAAkACQCABQSFPBEADQCADRQRAIAAhAiABQQF2IAFqIQUDQAJAAn8gASAFQQFrIgVNBEAgBSABawwBCyACIAVBBXRqIgD9AAMAIRkgAv0AAxAhGyACIAD9AAMQ/QsDECAC/QADACEaIAIgGf0LAwAgACAa/QsDACAAIBv9CwMQQQALIgNBAXQiBEEBciIAIAEgBSABIAVJGyIGTw0AA0AgBEECaiIHIAZJBEACfwJAIAIgAEEFdGoiBCkDCCIRIAIgB0EFdGoiBykDCCISUg0AIAQpAxAiESAHKQMQIhJSDQBBACAEKQMYIhEgBykDGCISUQ0BGgsgESASVAsgAGohAAsgAiAAQQV0aiIEKQMYIREgAiADQQV0aiIDKQMYIRIgAykDCCITIRUgBCkDCCIUIRYCQCATIBRSDQAgAykDECIVIAQpAxAiFlINACASIRUgESEWIBEgElENAgsgFSAWWg0BIAQoAhQhByAEKAIQIQggBCADKQMQNwMQIAMgFD4CCCAEIBM+AgggAyAUQiCIPgIMIAQgE0IgiD4CDCADIBE+AhggBCASPgIYIAMpAwAhFSADIAQpAwA3AwAgBCAVNwMAIAMgCDYCECADIAc2AhQgAyARQiCIPgIcIAQgEkIgiD4CHCAAIgNBAXQiBEEBciIAIAZJDQALCyAFDQALDAQLIAAgAUEDdiIEQeABbGohBSAAIARBB3RqIQYCQCABQcAATwRAIAAgBiAFIAQQjgUhBAwBCyAGKQMYIRYgACkDGCETIAApAwgiEiEUIAYpAwgiESEVAn8CQCARIBJSDQAgACkDECIUIAYpAxAiFVINAEEAIBYiFSATIhRRDQEaCyAUIBVUCyEHIAUpAxghFyAFKQMIIhQhFQJAAkAgEiAUUg0AIAApAxAiEiAFKQMQIhVSDQAgEyISIBciFVINACAAIQQgB0UNAQwCCyAAIQQgByASIBVUcw0BCwJAAkAgESAUUg0AIAYpAxAiESAFKQMQIhRSDQAgFiIRIBciFFENAQsgByARIBRUcyEHCyAFIAYgBxshBAsgA0EBayEDIAQgAGshBQJ/AkAgAkUNAAJAAkAgAikDCCISIAAgBWoiBCkDCCIRUg0AIAIpAxAiEiAEKQMQIhFSDQAgAikDGCISIAQpAxgiEVENAQsgESASVg0BCyAKIAD9AAMQ/QsDECAKIAD9AAMA/QsDACAE/QADACEZIAAgBP0AAxD9CwMQIAAgGf0LAwAgBCAK/QADEP0LAxAgBCAK/QADAP0LAwBBICEFIABBIGohCCAAIAFBBXQiDGohCSAA/QADMCEZIAD9AAMgIRsgACkDECEWIAApAxghEyAAKQMIIRIgACkDKCEVIAApAzAhFyAAKQM4IRhBACEGQQAhBwNAIAUhBCAAIAdqIgJBQGshBSACQSBqIQsgEiERAn8CQCASIAJByABqKQMAIhRSDQAgAkHQAGopAwAiFCAWIhFSDQBBASACQdgAaikDACIUIBMiEVENARoLIBEgFFoLIQ0gCCAGQQV0aiIC/QADACEaIAsgAv0AAxD9CwMQIAsgGv0LAwAgAiAF/QADEP0LAxAgAiAF/QADAP0LAwAgBEEgaiEFIAYgDWohBiAAIAdBIGoiB2oiAkFAayILIAlJDQALIAkgC0YEfyACQSBqBSAMQUBqIQkDQCAAIARqIgJBIGohBSACQUBrIQcgEiERAn8CQCASIAJByABqKQMAIhRSDQAgAkHQAGopAwAiFCAWIhFSDQBBASACQdgAaikDACIUIBMiEVENARoLIBEgFFoLIQsgCCAGQQV0aiIC/QADACEaIAUgAv0AAxD9CwMQIAUgGv0LAwAgAiAH/QADEP0LAxAgAiAH/QADAP0LAwAgBiALaiEGIAkgBEEgaiIERw0ACyAAIARqQSBqCyEEIAggBkEFdGoiAv0AAwAhGiAEIAL9AAMQ/QsDECAEIBr9CwMAIAIgGf0LAxAgAiAb/QsDAAJ/AkAgEiAVUg0AIBYiEiAXIhVSDQBBASATIhIgGCIVUQ0BGgsgEiAVWgsgBmoiBCABTw0EIAogAP0AAxD9CwMQIAogAP0AAwD9CwMAIAAgBEEFdGoiAv0AAwAhGSAAIAL9AAMQ/QsDECAAIBn9CwMAIAIgCv0AAxD9CwMQIAIgCv0AAwD9CwMAIAEgBEEBaiICayEBIAAgAkEFdGohAEEADAELIAogAP0AAxD9CwMQIAogAP0AAwD9CwMAIAAgBWoiBP0AAwAhGSAAIAT9AAMQ/QsDECAAIBn9CwMAIAQgCv0AAxD9CwMQIAQgCv0AAwD9CwMAQSAhBSAAQSBqIQggACABQQV0Ig1qIQkgAP0AAzAhGSAA/QADICEbIAApAxAhFiAAKQMYIRMgACkDCCESIAApAyghFSAAKQMwIRcgACkDOCEYQQAhBkEAIQcDQCAFIQQgACAHaiIFQUBrIQsgBUEgaiEMIBIhEQJ/AkAgBUHIAGopAwAiFCASUg0AIBYiESAFQdAAaikDACIUUg0AQQAgEyIRIAVB2ABqKQMAIhRRDQEaCyARIBRWCyEOIAggBkEFdGoiBf0AAwAhGiAMIAX9AAMQ/QsDECAMIBr9CwMAIAUgC/0AAxD9CwMQIAUgC/0AAwD9CwMAIARBIGohBSAGIA5qIQYgACAHQSBqIgdqIgtBQGsiDCAJSQ0ACyAJIAxGBH8gC0EgagUgDUFAaiELA0AgACAEaiIFQSBqIQcgBUFAayEJIBIhEQJ/AkAgBUHIAGopAwAiFCASUg0AIBYiESAFQdAAaikDACIUUg0AQQAgEyIRIAVB2ABqKQMAIhRRDQEaCyARIBRWCyEMIAggBkEFdGoiBf0AAwAhGiAHIAX9AAMQ/QsDECAHIBr9CwMAIAUgCf0AAxD9CwMQIAUgCf0AAwD9CwMAIAYgDGohBiALIARBIGoiBEcNAAsgACAEakEgagshBSAIIAZBBXRqIgT9AAMAIRogBSAE/QADEP0LAxAgBSAa/QsDACAEIBn9CwMQIAQgG/0LAwACfwJAIBIgFVINACAWIhIgFyIVUg0AQQAgEyISIBgiFVENARoLIBIgFVYLIAZqIgUgAU8NAyAKIAD9AAMQ/QsDECAKIAD9AAMA/QsDACAAIAVBBXRqIgT9AAMAIRkgACAE/QADEP0LAxAgACAZ/QsDACAEIAr9AAMQ/QsDECAEIAr9AAMA/QsDACAAIAUgAiADELgBIAEgBUF/c2ohASAEQSBqIQAgBAshAiABQSFPDQALCyAAIQcjAEGADGsiBiQAAkAgASILQQJJDQBBASEJIAAgAUEBdiINQQV0IgJqIQ4gAiAGaiEFAkAgAUEITwRAIAAgBhDMAyAOIAUQzANBBCEJDAELIAYgB/0AAxD9CwMQIAYgB/0AAwD9CwMAIAUgDv0AAwD9CwMAIAUgDv0AAxD9CwMQCyAJIA1JBEAgCUEFdCECIAkhAwNAIAYgA0EFdCIBaiIAIAEgB2oiASkDGCISNwMYIAAgASkDEDcDECAAIAEpAwgiFTcDCCAAIAEpAwA3AwACQAJAIABBGGspAwAiEyAVIhFSDQAgACkDECIRIABBEGspAwAiE1INACAAQQhrKQMAIhMgEiIRUQ0BCyARIBNaDQAgACkDECEWIAApAwAhFCACIQQDQAJAIAQgBmoiCCAIQSBrIgH9AAMQ/QsDECAIIAH9AAMA/QsDACAEQSBGBEAgBiEBDAELIABBIGshAAJAIAhBOGspAwAiEyAVIhFSDQAgBCAGakEwaykDACITIBYiEVINACAIQShrKQMAIhMgEiIRUg0AIAAhAQwBCyAEQSBrIQQgESATVA0BCwsgASAUNwMAIAhBCGsgEjcDACAIQRBrIBY3AwAgCEEYayAVNwMACyACQSBqIQIgA0EBaiIDIA1HDQALCyALIA1rIhAgCUsEQCAJQQV0IQ9BICEEIAUhAwNAIAUgCUEFdCIBaiIAIAEgDmoiASkDGCISNwMYIAAgASkDEDcDECAAIAEpAwgiFTcDCCAAIAEpAwA3AwACQAJAIABBGGspAwAiEyAVIhFSDQAgACkDECIRIABBEGspAwAiE1INACAAQQhrKQMAIhMgEiIRUQ0BCyARIBNaDQAgACkDECEWIAApAwAhFCAEIQEgAyEIA0ACQCAIIA9qIgwgDEEgayIC/QADEP0LAxAgDCAC/QADAP0LAwAgASAPRgRAIAUhAgwBCyAAQSBrIQACQCAMQThrKQMAIhMgFSIRUg0AIAggD2pBMGspAwAiEyAWIhFSDQAgDEEoaykDACITIBIiEVINACAAIQIMAQsgAUEgaiEBIAhBIGshCCARIBNUDQELCyACIBQ3AwAgDEEIayASNwMAIAxBEGsgFjcDACAMQRhrIBU3AwALIARBIGshBCADQSBqIQMgCUEBaiIJIBBHDQALCyAFQSBrIQggByALQQV0QSBrIgBqIQEgACAGaiEEIAYhAANAAkACQAJAIAUpAwgiESAAKQMIIhNSDQAgBSkDECIRIAApAxAiE1INACAFKQMYIhEgACkDGCITUg0AIAcgAP0AAxD9CwMQIAcgAP0AAwD9CwMADAELIAcgBSAAIBEgE1QbIgL9AAMQ/QsDECAHIAL9AAMA/QsDACARIBNaDQAgBUEgaiEFDAELIABBIGohAAsgB0EgaiEHIAECfwJAIAQpAwgiESAIKQMIIhNSDQAgBCkDECIRIAgpAxAiE1INAEEAIQIgBCAEKQMYIhEgCCkDGCITUQ0BGgsgCCAEIBEgE1QiAhsLIgP9AAMQ/QsDECABIAP9AAMA/QsDACABQSBrIQEgCCACQQV0IgJrIQggAiAEakEgayEEIA1BAWsiDQ0ACyAIQSBqIQEgC0EBcQR/IAcgACAFIAAgAUkiAhsiA/0AAxD9CwMQIAcgA/0AAwD9CwMAIAVBAEEgIAIbaiEFIABBIEEAIAIbagUgAAsgAUYgBSAEQSBqRnENABCcCgALIAZBgAxqJAAMAQsACyAKQSBqJAALiRECC38BfiMAQSBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgVBgICAgHhzIAVBAE4bQRRrDgIBAgALIAEgA0EfakH4gMEAEM0IIQEgAEGAgICAeDYCACAAIAE2AgQMBwsCfwJAAkAgASgCDCICBEACQCABKAIIIgEoAgBBlICAgHhGBEACQCABKAIMIggEQCADIAEoAggQqwUgAygCACIGQYCAgIB4Rw0BIAMoAgQhAQwFC0EAIANBH2pByP/AABC4ByEBDAQLIAMoAgQhBSAIQQFGDQEgA0EBNgIAIAhBAWtB/////wBxQQFqIANBgJzBABC4ByEBIAZFDQMgBSAGQQEQwQcMAwsgASADQR9qQcj/wAAQzQghAQwCCyACQQFGDQIgAygCCCEJQYCAgIB4IQgCQAJ/AkACQEEVIAFBEGoiCigCACILQYCAgIB4cyALQQBOG0EQaw4DAwEDAAsgAyAKEKsFQYGAgIB4IAMoAgAiASABQYGAgIB4TBsMAQsgAyABKAIUEKsFQYGAgIB4IAMoAgAiASABQYGAgIB4TBsLIQggAygCCCEHIAMoAgQiBCAIQf////8HakECSQ0EGgsgACAHNgIUIAAgBDYCECAAIAg2AgwgACAJNgIIIAAgBTYCBCAAIAY2AgAgAkECRg0KIANBAjYCACACQf7///8AakH/////AHFBAmogA0GAnMEAELgHIQEgAEGAgICAeDYCACAAIAE2AgQgBgRAIAUgBkEBEMEHCyAIQQBMDQogBCAIQQEQwQcMCgtBAEGkhcEAQaiqxgAQuAchAQsgAEGAgICAeDYCACAAIAE2AgQMCAtBAUGkhcEAQaiqxgAQuAcLIQQgAEGAgICAeDYCACAAIAQ2AgQgBkUNBiAFQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAGakkNCCAAQQAgASAGQSdqSxsNByAFEKICDAYLIAEoAgghBSABKAIEIQEgA0IANwIIIAMgATYCACADIAEgBUEFdGoiCDYCBCAFRQRAQYGAgIB4IQQMAgtBgICAgHghB0GBgICAeCEEA0AgAyABQSBqIgU2AgAgAyADKAIMQQFqNgIMIAMgAUEQaiILNgIIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgJBgICAgHhzIAJBAE4bQQFrDg8ABgYBBgYGBgYGBgIDBAUGCyABLQAEIgJFDQlBAUECIAJBAUYbIQIMCgsgASkDCCINUA0IQQFBAiANQgFRGyECDAkLIAEoAgghAiABKAIMQQVrDgQGCgoFCgsgASgCBCECAkAgASgCCEEFaw4EBAoKAAoLIAIpAABC5dyN+8asmrfnAFENCAwJCyABKAIIIQICQAJAIAEoAgxBBWsOBAAKCgEKCyACLQAAQeYARw0JIAItAAFB6QBHDQkgAi0AAkHsAEcNCSACLQADQeUARw0JIAItAARB8wBGDQYMCQsgAi0AAEHlAEcNCCACLQABQe4ARw0IIAItAAJB4wBHDQggAi0AA0HvAEcNCCACLQAEQeQARw0IIAItAAVB6QBHDQggAi0ABkHuAEcNCCACLQAHQecARg0HDAgLIAEoAgQhAgJAAkAgASgCCEEFaw4EAAkJAQkLIAItAABB5gBHDQggAi0AAUHpAEcNCCACLQACQewARw0IIAItAANB5QBHDQggAi0ABEHzAEYNBQwICyACLQAAQeUARw0HIAItAAFB7gBHDQcgAi0AAkHjAEcNByACLQADQe8ARw0HIAItAARB5ABHDQcgAi0ABUHpAEcNByACLQAGQe4ARw0HIAItAAdB5wBGDQYMBwsgASADQR9qQeiBwQAQzQghAQwMCyACKAAAQebSsasGcyACQQRqLQAAQfMAc3INBQwCCyACKQAAQuXcjfvGrJq35wBSDQQMAwsgAigAAEHm0rGrBnMgAkEEai0AAEHzAHNyDQMLIAdBgICAgHhHBEBByITBAEEFEIkIIQEMCQsgA0EQaiADEM0FIAMoAhQhASADKAIQIgdBgICAgHhGBEBBgICAgHghBwwJCyADKAIYIQwgAygCBCEIIAMoAgAhBSABIQYMBAsgAkECRg0BCyAEQYGAgIB4Rg0BQYCFwQBBCBCJCCEBIABBgICAgHg2AgAgACABNgIEIARBgICAgHhyQYCAgIB4Rg0IDAcLIANBADYCCAwBCyADQQA2AghBgICAgHghBAJ/AkACQEEVIAsoAgAiAkGAgICAeHMgAkEAThtBEGsOAwMBAwALIANBEGogCxCrBSAJIAMoAhggAygCECIBQYCAgIB4RhshCUGBgICAeCABIAFBgYCAgHhMGwwBCyADQRBqIAEoAhQQqwUgCSADKAIYIAMoAhAiAUGAgICAeEYbIQlBgYCAgHggASABQYGAgIB4TBsLIQQgAygCFCEKIARBgYCAgHhHDQAgAEGAgICAeDYCACAAIAo2AgQMBgsgCCAFIgFHDQALDAALIAdBgICAgHhGDQAgACAMNgIIIAAgBjYCBCAAIAc2AgAgAEGAgICAeCAEIARBgYCAgHhGGzYCDCAAIAqtIAmtQiCGhDcCEAwEC0GAgICAeCEHQciEwQBBBRCGCCEBCyAAQYCAgIB4NgIAIAAgATYCBCAERSAEQYKAgIB4SHINAQsgCkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBGpJDQMgAEEAIAEgBEEnaksbDQIgChCiAgsgB0UgB0GAgICAeEZyDQAgBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgB2pJDQIgAEEAIAEgB0EnaksbDQEgBhCiAgsgA0EgaiQADwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQAL5g4BDX8jAEGACGsiAyQAAkAgAUEDakF8cSABayIFIAJLBEBBASENQQQhCwwBCyABIAVqIgsgAiAFayICQfz///8HcWohDSACQQNxIQ4gAkECdiEGIAUhAgsCfyAAQX9zIgAgAkUNABpBACEFIAJBAUcEQEECIQUgAS0AACAAc0H/AXFBAnQoAvDERyAAQQh2cyIAIAEtAAFzQf8BcUECdCgC8MRHIABBCHZzIgAgAkEBcUUNARoLIAEgBWotAAAgAHNB/wFxQQJ0KALwxEcgAEEIdnMLIQAgBkEFbiIFIAVBAEdrIQwCQCAGQQpJBEAMAQtBACEBIAshAgNAAkACQCABIAZPDQAgBiABayIHQQAgBiAHTxsiB0EBRwRAIAdBAkcEQCAHQQNHBEAgB0EERw0EIAFBBGohAQwDCyABQQNqIQEMAgsgAUECaiEBDAELIAFBAWohAQsgASAGQeDExwAQ8AcACyAIIAJBCGooAgBzIghB/wFxQQJ0KALQpEcgCEEGdkH8B3EoAtCsR3MgCEEOdkH8B3EoAtC0R3MgCEEWdkH8B3EoAtC8R3MhCCAEIAJBBGooAgBzIgRB/wFxQQJ0KALQpEcgBEEGdkH8B3EoAtCsR3MgBEEOdkH8B3EoAtC0R3MgBEEWdkH8B3EoAtC8R3MhBCAAIAIoAgBzIgBB/wFxQQJ0KALQpEcgAEEGdkH8B3EoAtCsR3MgAEEOdkH8B3EoAtC0R3MgAEEWdkH8B3EoAtC8R3MhACAKIAJBEGooAgBzIgpB/wFxQQJ0KALQpEcgCkEGdkH8B3EoAtCsR3MgCkEOdkH8B3EoAtC0R3MgCkEWdkH8B3EoAtC8R3MhCiACQQxqKAIAIAlzIglB/wFxQQJ0KALQpEcgCUEGdkH8B3EoAtCsR3MgCUEOdkH8B3EoAtC0R3MgCUEWdkH8B3EoAtC8R3MhCSABQQVqIQEgAkEUaiECIA9BAWoiDyAMSQ0ACwsgDEEFbCIBIAZNBEACQCABIAZGDQAgCyABQQJ0aiICKAIAIQcgA0HwzMcAQYAI/AoAACADIAAgB3MiAEH/AXFBAnRqKAIAIQcgA0Hw1McAQYAI/AoAACADIABBBnZB/AdxaigCACEMIANB8NzHAEGACPwKAAAgAyAAQQ52QfwHcWooAgAhDyADQfDkxwBBgAj8CgAAIAMgAEEWdkH8B3FqKAIAIA8gByAMc3NzIQAgBiABayIBQQFGDQAgAigCBCEHIANB8MzHAEGACPwKAAAgAyAEIAdzIABzIgBB/wFxQQJ0aigCACEEIANB8NTHAEGACPwKAAAgAyAAQQZ2QfwHcWooAgAhByADQfDcxwBBgAj8CgAAIAMgAEEOdkH8B3FqKAIAIQwgA0Hw5McAQYAI/AoAACADIABBFnZB/AdxaigCACAMIAQgB3NzcyEAIAFBAkYNACACKAIIIQQgA0HwzMcAQYAI/AoAACADIAQgCHMgAHMiAEH/AXFBAnRqKAIAIQQgA0Hw1McAQYAI/AoAACADIABBBnZB/AdxaigCACEIIANB8NzHAEGACPwKAAAgAyAAQQ52QfwHcWooAgAhByADQfDkxwBBgAj8CgAAIAMgAEEWdkH8B3FqKAIAIAcgBCAIc3NzIQAgAUEDRg0AIAIoAgwhBCADQfDMxwBBgAj8CgAAIAMgBCAJcyAAcyIAQf8BcUECdGooAgAhBCADQfDUxwBBgAj8CgAAIAMgAEEGdkH8B3FqKAIAIQggA0Hw3McAQYAI/AoAACADIABBDnZB/AdxaigCACEJIANB8OTHAEGACPwKAAAgAyAAQRZ2QfwHcWooAgAgCSAEIAhzc3MhACABQQRGDQAgAigCECECIANB8MzHAEGACPwKAAAgAyACIApzIABzIgBB/wFxQQJ0aigCACECIANB8NTHAEGACPwKAAAgAyAAQQZ2QfwHcWooAgAhBCADQfDcxwBBgAj8CgAAIAMgAEEOdkH8B3FqKAIAIQggA0Hw5McAQYAI/AoAACADIABBFnZB/AdxaigCACAIIAIgBHNzcyEAIAFBBUYNACAFQRRsQQEgBSAFGyICQRRsayALakEUaiEBIAYgAkEFbGogBUEFbGtBBWshBQNAIAEoAgAhAiADQfDMxwBBgAj8CgAAIAMgACACcyIAQf8BcUECdGooAgAhAiADQfDUxwBBgAj8CgAAIAMgAEEGdkH8B3FqKAIAIQsgA0Hw3McAQYAI/AoAACADIABBDnZB/AdxaigCACEGIANB8OTHAEGACPwKAAAgAyAAQRZ2QfwHcWooAgAgBiACIAtzc3MhACABQQRqIQEgBUEBayIFDQALCwJAIA5FDQAgDS0AACAAc0H/AXFBAnQoAvDERyAAQQh2cyEAIA5BAUYNACANLQABIABzQf8BcUECdCgC8MRHIABBCHZzIQAgDkECRg0AIA0tAAIgAHNB/wFxQQJ0KALwxEcgAEEIdnMhAAsgA0GACGokACAAQX9zDwsgASAGIAZB0MTHABCgBQAL7Q0CDX8BfiMAQdAAayIJJAAgCUEQaiAAKAIEIgcgACgCCCICQayxxQBBCRDjAQJAAkAgCSgCEEUEQCAJAn9BACAJLQAeDQAaIAktAB0hAwJAIAkoAhgiAQRAIAkoAkAhCAJAIAkoAkQiBCABTQRAIAEgBEYNAQwHCyABIAhqLAAAQUBIDQYLIAEgCGoiBkEBaywAACIFQQBIBEAgBUE/cQJ/IAZBAmstAAAiCsAiC0G/f0oEQCAKQR9xDAELIAtBP3ECfyAGQQNrLQAAIgrAIgxBv39KBEAgCkEPcQwBCyAMQT9xIAZBBGstAABBB3FBBnRyC0EGdHILIgZBBnRyIQULIANBAXENAQJ/QX8gBUGAAUkNABpBfiAFQYAQSQ0AGkF9QXwgBUGAgARJGwsgAWoiAUUEQEEAIQEMAgsCQCABIARPBEAgASAERw0HDAELIAEgCGosAABBQEgNBgsgASAIaiIIQQFrLAAAQQBODQEgCEECaywAABoMAQtBACIBIANBAXFFDQEaCyAJIAE2AghBAQs2AgQMAQsgCUEYaiEIIAkoAkwhBCAJKAJIIQUgCSgCRCEBIAkoAkAhAyAJKAI0QX9HBEAgCUEEaiAIIAMgASAFIARBABDpAwwBCyAJQQRqIAggAyABIAUgBEEBEOkDCwJAAkACQAJAIAkoAgRBAUYEQCAJKAIIIghBCWoiBSEBA0ACQCABRQ0AIAEgAk8EQCABIAJGDQEMBwsgASAHaiwAAEFASA0GCwJAIAEgAkYEfyACBSABIAdqLQAAQTBrQf8BcUEKSQ0BIAELIQQgAUUNAwJAIAIgBE0EQCACIARHDQEMBQsgBCAHaiwAAEG/f0oNBAsgByACIAQgAkHIscUAEPUJAAsgAUEBaiEBDAALAAtBACEKDAELQQAhCiACIARrQQhJDQAgBCAHaiIGKQAAQqDGvePWrpu3IFINACAEQQhqIgshAwJAAkACQAJAA0ACQCADRQ0AIAIgA00EQCACIANGDQEMCAsgAyAHaiwAAEFASA0HCwJAAkACQCACIANGBEAgAiEDDAELIAMgB2otAABBMGtB/wFxQQpJDQEgAiADSw0ICyAEIAVJDQMgBUUNASAFIAdqLAAAQb9/Sg0BDAMLIANBAWohAwwBCwsgAQRAIAYsAABBQEgNAQsgBSAHaiEBAkACQAJAIAQgBWsiDQ4CBwABCyABLQAAIgxBK2sOAwYBBgELIAEtAAAhDAsgASAMQStGIgZqIQEgDSAGayIGQQlJDQFBACEFA0AgBkUNAyAFrUIKfiIOQiCIpw0EIAEtAABBMGsiDEEJSw0EIAFBAWohASAGQQFrIQYgDCAOp2oiBSAMTw0ACwwDCyAHIAIgBSAEQeixxQAQ9QkACyAGRQRAQQAhBQwBC0EAIQUDQCABLQAAQTBrIgxBCUsNAiABQQFqIQEgDCAFQQpsaiEFIAZBAWsiBg0ACwsCQAJAIAMgC0kNACALBEAgAiALTQRAIAIgA0YNAwwCCyACIANHDQEgByALaiwAAEFASA0BDAILIAIgA0YNAQsgByACIAsgA0H4scUAEPUJAAsgByALaiEBAkACQAJAIAIgC2siCw4CBAABCyABLQAAIgNBK2sOAwMBAwELIAEtAAAhAwtBACEGQX9BACADQStGIgMbIQogASADaiEBAkAgCyADayIDQQlPBEAgBCAKa0EIaiEDA0AgAiADRg0CQQAhCiAGrUIKfiIOQiCIpw0EIAEtAABBMGsiBEEJSw0EIANBAWohAyABQQFqIQEgBCAEIA6naiIGTQ0ACwwDCyADRQRADAELIAQgCmtBCGohA0EAIQoDQCABLQAAQTBrIgRBCUsNAyABQQFqIQEgBCAGQQpsaiEGIAIgA0EBaiIDRw0ACwtBASEKIAIgCEkNASAIRQRAIAghAgwCCyACIAhNBEAgCCECDAILIAgiAiAHaiwAAEG/f0oNAUH3p8UAQTBBiLLFABCoCQALCwJAAkACQAJAAkAgACgCACIAIAJNDQAgAkUEQCAHQQRrKAIAIghBeHEiBEEEQQggCEEDcSIIGyAAakkNAiAIQQAgBCAAQSdqSxsNAyAHEKICQQEhBwwBCyAHIABBASACEMACIgdFDQMLQRQQbiIARQ0DIAAgAjYCCCAAIAc2AgQgAEEANgIAIAAgBkEAIAobNgIQIAAgBUEAIAobNgIMIAlB0ABqJAAgAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC0EBIAIQmgkAC0EUELEKAAsgByACIAMgAkHYscUAEPUJAAsgByACIAEgAkG4scUAEPUJAAsgCCAEQQAgAUGoqMUAEPUJAAvdDAIKfwN+IAAoAhQhAiAAKAIQIQQgACkDCCENIAAoAgQhCCAAKAIAIQkgACgCGCIDQQBIBEAgBCAISQRAIAkgBEECdGooAAAiB0H/gfwHcUEIeCAHQRh4Qf+B/Adxcq0hDAsgBEEBaiEEIAwgDUIghoQhDSADQSBqIQMLQQAhByADIAIgAkEBdiICayIFIAIgDSAFrSADrYYiDlQiBRsiAmciA0EYayIGQQAgAyAGTxsiBmshAyACIAZ0IQIgDUIAIA4gBRt9IQwCQAJAIA0gDlQEQCAEIAhNDQEMAgsgA0EASARAQgAhDSAEIAhJBEAgCSAEQQJ0aigAACIHQf+B/AdxQQh4IAdBGHhB/4H8B3FyrSENCyAEQQFqIQQgDSAMQiCGhCEMIANBIGohAwsgAiACQQF2IgJrIgcgAiAMIAetIAOthiINVCIHGyICIAJnIgJBGGsiBUEAIAIgBU8bIgV0IQIgDEIAIA0gBxt9IQ0gAyAFayIDQQBIBEBCACEMIAQgCEkEQCAJIARBAnRqKAAAIgVB/4H8B3FBCHggBUEYeEH/gfwHcXKtIQwLIARBAWohBCAMIA1CIIaEIQ0gA0EgaiEDCyACQQF2IgUgAiAFayICIA0gAq0gA62GIgxaIgUbIgIgAmciAkEYayIGQQAgAiAGTxsiBnQhAiANIAxCACAFG30hDSADIAZrIgNBAEgEQEIAIQwgBCAISQRAIAkgBEECdGooAAAiBkH/gfwHcUEIeCAGQRh4Qf+B/Adxcq0hDAsgBEEBaiEEIAwgDUIghoQhDSADQSBqIQMLIAIgAkEBdiICayIGIAIgDSAGrSADrYYiDFQiBhsiAiACZyICQRhrIgpBACACIApPGyIKdCECIA1CACAMIAYbfSENIAMgCmsiA0EASARAQgAhDCAEIAhJBEAgCSAEQQJ0aigAACIKQf+B/AdxQQh4IApBGHhB/4H8B3FyrSEMCyAEQQFqIQQgDCANQiCGhCENIANBIGohAwsgAyACQQF2IgogAiAKayICIA0gAq0gA62GIgxaIgobIgJnIgNBGGsiC0EAIAMgC08bIgtrIQMgAiALdCECQQBBAiAHGyAFckECdEEAQQIgBhtyIApyIQcCfiANIAxCACAKG30iDSABQf8BcUEERg0AGiADQQBIBEBCACEMIAQgCEkEQCAJIARBAnRqKAAAIgVB/4H8B3FBCHggBUEYeEH/gfwHcXKtIQwLIARBAWohBCAMIA1CIIaEIQ0gA0EgaiEDCyADIAJBAXYiBSACIAVrIgIgDSACrSADrYYiDFoiBRsiAmciA0EYayIGQQAgAyAGTxsiBmshAyACIAZ0IQIgB0EBdCAFciEHIA0gDEIAIAUbfSINIAFB/wFxQQZJDQAaIANBAEgEQEIAIQwgBCAISQRAIAkgBEECdGooAAAiBUH/gfwHcUEIeCAFQRh4Qf+B/Adxcq0hDAsgBEEBaiEEIAwgDUIghoQhDSADQSBqIQMLIAMgAkEBdiIFIAIgBWsiAiANIAKtIAOthiIMWiIFGyICZyIDQRhrIgZBACADIAZPGyIGayEDIAIgBnQhAiAHQQF0IAVyIQcgDSAMQgAgBRt9Ig0gAUH/AXFBBkYNABogA0EASARAQgAhDCAEIAhJBEAgCSAEQQJ0aigAACIFQf+B/AdxQQh4IAVBGHhB/4H8B3FyrSEMCyAEQQFqIQQgDCANQiCGhCENIANBIGohAwsgAyACQQF2IgUgAiAFayICIA0gAq0gA62GIgxaIgUbIgJnIgNBGGsiBkEAIAMgBk8bIgZrIQMgAiAGdCECIAdBAXQgBXIhByANIAxCACAFG30LIQ0gA0EASARAQgAhDCAEIAhJBEAgCSAEQQJ0aigAACIJQf+B/AdxQQh4IAlBGHhB/4H8B3FyrSEMCyAEQQFqIQQgDCANQiCGhCENIANBIGohAwsgBCAISw0BIAIgAkEBdiIBayICIAEgDSACrSADrYYiDFQiARsiAiACZyICQRhrIghBACACIAhPGyIIdCECIAMgCGshAyAHQQAgB2sgARshByANQgAgDCABG30hDAsgACADNgIYIAAgAjYCFCAAIAQ2AhAgACAMNwMIIAcPCyAAEIALBH9BACAAIAEQnghB/wFxIgFrIAEgABCACxsFQQALC8AQAg1/AX4jAEHQAGsiAiQAAkACQAJAAn8CQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBFGsOAgECAAsgASACQc8AakHogMEAEM0IIQEgAEGAgICAeDYCACAAIAE2AgQMBAsCQAJAAkAgASgCDCIDBEACQCABKAIIIgQoAgBBlICAgHhGBEACQCAEKAIMIgEEQCACQThqIAQoAggQqwUgAigCOCIFQYCAgIB4Rw0BIAIoAjwhBAwFC0EAIAJBzwBqQcj/wAAQuAchBAwECyACKAI8IQcgAUEBRg0BIAJBATYCOCABQQFrQf////8AcUEBaiACQThqQYCcwQAQuAchBCAFRQ0DIAcgBUEBEMEHDAMLIAQgAkHPAGpByP/AABDNCCEEDAILIANBAUYNBSACKAJAIQYgAkE4aiIIIARBEGoQpQIgAigCPCIBIAIoAjgNBhogAiACKAJINgIQIAIgAikCQDcDCCADQQJGDQIgCCAEQSBqEKUCIAIoAjwhBCACKAI4RQ0DIAQMBgtBAEHIhcEAQaiqxgAQuAchBAsgAEGAgICAeDYCACAAIAQ2AgQMBQtBAkHIhcEAQaiqxgAQuAcMAwsgACACKAJINgIoIAAgAikCQDcCICAAIAIoAhA2AhggACACKQMINwIQIAAgBDYCHCAAIAE2AgwgACAGNgIIIAAgBzYCBCAAIAU2AgAgA0EDRg0DIAJBAzYCOCADQf3///8AakH/////AHFBA2ogAkE4akGAnMEAELgHIQEgAEGAgICAeDYCACAAIAE2AgQgBUUNAyAHIAVBARDBBwwDCyABKAIEIQQgASgCCCEBIAJBADYCFCACIAQgAUEFdGoiDDYCDAJAAn8CQCABRQ0AIAJBQGshCUGAgICAeCEGA0AgAiAEQSBqIgE2AgggAiACKAIUQQFqNgIUIAIgBEEQaiINNgIQAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQEEVIAQoAgAiA0GAgICAeHMgA0EAThtBAWsODwUKCgAKCgoKCgoKAQIDBAoLQgMgBCkDCCIPIA9CA1obpwwFCyAEKAIIIQMCQCAEKAIMQQRrDgIABwoLIAMoAABB7dK5mwdGDQsgAygAAEHtwuGbB0YNCgwJCyAEKAIEIQMCQCAEKAIIQQRrDgIABQkLIAMoAABB7dK5mwdGDQogAygAAEHtwuGbB0YNCQwICyAEKAIIIQMCQAJAIAQoAgxBBGsOAgEACQsgAy0AAEHmAEcNCCADLQABQekARw0IIAMtAAJB7ABHDQggAy0AA0HlAEcNCCADLQAEQfMARw0IDAYLIAMtAABB7QBHDQcCQAJAIAMtAAFB4QBrDgkBCQkJCQkJCQAJCyADLQACQe4ARw0IIAMtAANB8wBGDQoMCAsgAy0AAkH4AEcNByADLQADQfMARg0IDAcLIAQoAgQhAwJAAkAgBCgCCEEEaw4CAQAICyADLQAAQeYARw0HIAMtAAFB6QBHDQcgAy0AAkHsAEcNByADLQADQeUARw0HIAMtAARB8wBHDQcMBQsgAy0AAEHtAEcNBgJAAkAgAy0AAUHhAGsOCQEICAgICAgIAAgLIAMtAAJB7gBHDQcgAy0AA0HzAEcNBwwJCyADLQACQfgARw0GIAMtAANB8wBHDQYMBwtBAyAELQAEIgQgBEEDTxsLQf8BcUEBaw4DBgUEAgsgAygAAEHm0rGrBnMgA0EEai0AAEHzAHNyRQ0BDAMLIAMoAABB5tKxqwZzIANBBGotAABB8wBzcg0CCyAGQYCAgIB4RwRAQciEwQBBBRCJCCEBIABBgICAgHg2AgAgACABNgIEDAYLIAJBOGogAkEIahDNBSACKAI8IgggAigCOCIGQYCAgIB4Rg0JGiACKAJAIQ4gAigCDCEMIAIoAgghAQwGCyAEIAJBzwBqQfiCwQAQzQghBQwDCyACQQA2AhAMBAsgCwRAQdGEwQBBBBCJCCEFDAILIAJBADYCECACQThqIA0QpQIgAigCPCEHIAIoAjhBAUYEQCAHIQUMAgsgAiAJKAIINgIwIAIgCSkCADcDKEEBIQsMAwsgCgRAQc2EwQBBBBCJCCEFDAELIAJBADYCECACQThqIA0QpQIgAigCPCEFIAIoAjhBAUYNACACIAkoAgg2AiAgAiAJKQIANwMYQQEhCgwCCyAAQYCAgIB4NgIAIAAgBTYCBCAGQYCAgIB4Rg0ICyAGRQ0HAkAgCEEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBmpPBEAgAEEAIAEgBkEnaksbDQEgCBCiAgwJC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgDCABIgRHDQALIAZBgICAgHhGDQAgCiALcQ0CQdGEwQBBzYTBACAKG0EEEIYIIQEgAEGAgICAeDYCACAAIAE2AgQgBkUNBSAIIAZBARDBBwwFC0HIhMEAQQUQhggLIQggAEGAgICAeDYCACAAIAg2AgQMAwsgACACKAIwNgIoIAAgAikDKDcCICAAIAIpAxg3AhAgACACKAIgNgIYIAAgBzYCHCAAIAU2AgwgACAONgIIIAAgCDYCBCAAIAY2AgAMAgtBAUHIhcEAQaiqxgAQuAcLIQEgAEGAgICAeDYCACAAIAE2AgQgBUUNACAHQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAFakkNASAAQQAgASAFQSdqSxsNAiAHEKICCyACQdAAaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL9w0CBH8DfiMAQaAFayIGJAAgBiACNgIIIAYgATYCBCAGIAU2AhAgBiAENgIMAkACQAJAAkAgAygCDEUNACADKQMQIAMpAxggBCAFEKkEIQogAygCBCIBIAqncSECIApCGYhC/wCDQoGChIiQoMCAAX4hDCADKAIAIQcDQCACIAdqKQAAIgsgDIUiCkJ/hSAKQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIgpQRQRAA0ACQCAFIAcgCnqnQQN2IAJqIAFxQWhsaiIIQRBrKAIARw0AIAQgCEEUaygCACAFEPcHDQBBACEDDAULIApCAX0gCoMiClBFDQALCyALIAtCAYaDQoCBgoSIkKDAgH+DUEUNASACIAlBCGoiCWogAXEhAgwACwALIAYgBkEMaq1CgICAgCCEIgo3A9ADIAYgBkEEaq1CgICAgCCENwPIAyAGQUBrIgFBsIDAACAGQcgDaiIEEOAEIAZBADYCHCAGQoCAgIAQNwIUIAYoAkAhAiABIAAgBigCRCIFIAYoAkgQ3QECQAJAAkACQAJAAkACQCAGKQNAQgNSBEAgBCABQcgB/AoAACAGQSBqIAQgBkEUahDoASAGKAIgRQRAIAYoAhAiAEEASA0CQQEhASAARQ0GIAYoAgwhBCAAEG4iAUUEQEEBIAAQmgkACyAARQ0GIAEgBCAA/AoAAAwGCyAGKQIkEMQIIQMgBkHIA2oQzAEMBAsCQAJAAkACQEEBIAYoAkgiBEH/////B2ogBEGAgICAeE0bDgIAAQMLIAYtAExBA0cNAiAGKAJQIgEoAgAhBCABQQRqKAIAIgcoAgAiCARAIAQgCBEDAAsgBygCBCIHBEAgBEEEaygCACIIQXhxIglBBEEIIAhBA3EiCBsgB2pJDQ0gCEEAIAkgB0EnaksbDQwgBBCiAgsgAUEEaygCACIEQXhxIgdBEEEUIARBA3EiBBtJDQwgBEUgB0E0SXINAQwLCyAEQYCAgIB4ckGAgICAeEYNASAGKAJMIgFBBGsoAgAiB0F4cSIIQQRBCCAHQQNxIgcbIARqSQ0LIAdFDQAgCCAEQSdqSw0KCyABEKICCyAGQcgDaiAAIAYoAgwgBigCEBDdASAGIAo3AyAgBkGUBWpBr+fAACAGQSBqEOAEIAYpA8gDIgpCA1ENASAGKALQAyEBIAZBjAJqIAZB1ANqQbwB/AoAACAGKAKUBSIABEAgBigCmAUiBEEEaygCACIHQXhxIghBBEEIIAdBA3EiBxsgAGpJDQogB0EAIAggAEEnaksbDQkgBBCiAgsgBiABNgJIIAYgCjcDQCAGQcwAaiAGQYwCakG8AfwKAAAgBkHIA2ogBkFAayAGQRRqEOgBAkAgBigCyANFBEAgBigCECIAQQBIDQJBASEBIABFDQQgBigCDCEEIAAQbiIBDQFBASAAEJoJAAsgBikCzAMQxAghAyAGQUBrEMwBDAQLIABFDQIgASAEIAD8CgAADAILEJgKAAsjAEEwayIAJAAgABCbCSAAIAZBlAVqIgEoAgg2AiAgACABKQIANwMYIAAgBkHQA2oiASkCADcCJCAAIAEoAgg2AiwgAEEYaiEBQTQQbiIDRQRAQTQQsQoACyADQajIxgA2AgAgAyAAKQIANwIEIAMgAP0AAgj9CwIMIAMgASkCADcCHCADIAH9AAII/QsCJCAAQTBqJAAMAQsgBiAANgLQAyAGIAE2AswDIAYgADYCyAMgBkEgaiADIAZByANqIAZBFGoQlAMgBigCICIAQQBKBEAgBigCJCIBQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyAAakkNByADQQAgBCAAQSdqSxsNBiABEKICCyAGQUBrEMwBIAJFBEBBACEDDAULIAVBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqTwRAQQAhAyAARSABIAJBJ2pNcg0EDAYLDAYLIAYoAhQiAEUNAQJAIAYoAhgiAUEEaygCACIEQXhxIgdBBEEIIARBA3EiBBsgAGpPBEAgBEEAIAcgAEEnaksbDQEgARCiAgwDCwwGCwwECyAGIAA2AiggBiABNgIkIAYgADYCICAGQTRqIAMgBkEgaiAGQRRqEJQDIAYoAjQiAEEASgRAIAYoAjgiAUEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgAGpJDQUgA0EAIAQgAEEnaksbDQQgARCiAgsgBkHIA2oQzAFBACEDCyACRQ0BIAVBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0DIABFIAEgAkEnak1yDQAMAgsgBRCiAgsgBkGgBWokACADDwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQALxw0BCH8CfwJAIAIgA0sEQCABIANBEmxqIgMvAQAiAkH//wFxRQRAIAJBEHQMAwsgAkH/B3EhASACQYCAAnEhBSACQYD4AXEiAkGA+AFGBEAgBUEQdCECIAJBgICA/AdyIAFFDQMaIAIgAUENdHJBgICA/gdyDAMLIAVBEHQhBSACRQ0BIAJBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAFcgwCCyADIAJBmNLGABDwBwALIAVBgICA2ANyIAFnQRBrIgJBF3RrIAEgAkH//wNxQQhqdEH///8DcXILIQECfyADLwECIgVB//8BcUUEQCAFQRB0DAELIAVB/wdxIQIgBUGAgAJxIQYgBUGA+AFxIgVBgPgBRgRAIAZBEHQhBSAFQYCAgPwHciACRQ0BGiAFIAJBDXRyQYCAgP4HcgwBCyAGQRB0IQYgBUENdEGAgID8AHEgAkENdHJBgICAwANqIAZyIAUNABogBkGAgIDYA3IgAmdBEGsiBUEXdGsgAiAFQf//A3FBCGp0Qf///wNxcgshBQJ/IAMvAQQiBkH//wFxRQRAIAZBEHQMAQsgBkH/B3EhAiAGQYCAAnEhByAGQYD4AXEiBkGA+AFGBEAgB0EQdCEGIAZBgICA/AdyIAJFDQEaIAYgAkENdHJBgICA/gdyDAELIAdBEHQhByAGQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogB3IgBg0AGiAHQYCAgNgDciACZ0EQayIGQRd0ayACIAZB//8DcUEIanRB////A3FyCyEGAn8gAy8BBiIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSECIAdBgIACcSEIIAdBgPgBcSIHQYD4AUYEQCAIQRB0IQcgB0GAgID8B3IgAkUNARogByACQQ10ckGAgID+B3IMAQsgCEEQdCEIIAdBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAIciAHDQAaIAhBgICA2ANyIAJnQRBrIgdBF3RrIAIgB0H//wNxQQhqdEH///8DcXILIQcCfyADLwEIIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQIgCEGAgAJxIQkgCEGA+AFxIghBgPgBRgRAIAlBEHQhCCAIQYCAgPwHciACRQ0BGiAIIAJBDXRyQYCAgP4HcgwBCyAJQRB0IQkgCEENdEGAgID8AHEgAkENdHJBgICAwANqIAlyIAgNABogCUGAgIDYA3IgAmdBEGsiCEEXdGsgAiAIQf//A3FBCGp0Qf///wNxcgshCAJ/IAMvAQoiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhAiAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCEJIAlBgICA/AdyIAJFDQEaIAkgAkENdHJBgICA/gdyDAELIApBEHQhCiAJQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogCnIgCQ0AGiAKQYCAgNgDciACZ0EQayIJQRd0ayACIAlB//8DcUEIanRB////A3FyCyEJAn8gAy8BDCIKQf//AXFFBEAgCkEQdAwBCyAKQf8HcSECIApBgIACcSEEIApBgPgBcSIKQYD4AUYEQCAEQRB0IQogCkGAgID8B3IgAkUNARogCiACQQ10ckGAgID+B3IMAQsgBEEQdCEEIApBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAEciAKDQAaIARBgICA2ANyIAJnQRBrIgpBF3RrIAIgCkH//wNxQQhqdEH///8DcXILIQoCfyADLwEOIgRB//8BcUUEQCAEQRB0DAELIARB/wdxIQIgBEGAgAJxIQsgBEGA+AFxIgRBgPgBRgRAIAtBEHQhBCAEQYCAgPwHciACRQ0BGiAEIAJBDXRyQYCAgP4HcgwBCyALQRB0IQsgBEENdEGAgID8AHEgAkENdHJBgICAwANqIAtyIAQNABogC0GAgIDYA3IgAmdBEGsiBEEXdGsgAiAEQf//A3FBCGp0Qf///wNxcgshAiAAAn8gAy8BECIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSEDIARBgIACcSELIARBgPgBcSIEQYD4AUYEQCALQRB0IQQgBEGAgID8B3IgA0UNARogBCADQQ10ckGAgID+B3IMAQsgC0EQdCELIARBDXRBgICA/ABxIANBDXRyQYCAgMADaiALciAEDQAaIAtBgICA2ANyIANnQRBrIgRBF3RrIAMgBEH//wNxQQhqdEH///8DcXILNgIgIAAgAjYCHCAAIAo2AhggACAJNgIUIAAgCDYCECAAIAc2AgwgACAGNgIIIAAgBTYCBCAAIAE2AgAL+wkBB38gACgCBCECAkACQCAAKAIIIgUEQCACIQEDQCABQShqKAIAIgYEQCABQSxqKAIAIgdBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAZqSQ0DIANBACAEIAZBJ2pLGw0EIAcQogILIAEQ2gQgAUFAayEBIAVBAWsiBQ0ACwsgACgCACIDBEAgAkEEaygCACIBQXhxIgQgA0EGdCIDQQRBCCABQQNxIgEbckkNASABQQAgBCADQSdySxsNAiACEKICCwJAIAAoAoQBIgFBgICAgHhGDQAgAQRAIAAoAogBIgRBBGsoAgAiAkF4cSIDIAFBA3QiAUEEQQggAkEDcSICG2pJDQIgAkEAIAMgAUEnaksbDQMgBBCiAgsgACgCkAEiAQRAIAAoApQBIgRBBGsoAgAiAkF4cSIDIAFBAnQiAUEEQQggAkEDcSICG2pJDQIgAkEAIAMgAUEnaksbDQMgBBCiAgsgACgCnAEiAQRAIAAoAqABIgRBBGsoAgAiAkF4cSIDIAFBAnQiAUEEQQggAkEDcSICG2pJDQIgAkEAIAMgAUEnaksbDQMgBBCiAgsgACgCqAEiAUUNACAAKAKsASIEQQRrKAIAIgJBeHEiAyABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAgwiAQRAIAAoAhAiBEEEaygCACICQXhxIgMgAUHIAGwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgCGCIBBEAgACgCHCIEQQRrKAIAIgJBeHEiAyABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAiQiAQRAIAAoAigiBEEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAIwIgEEQCAAKAI0IgRBBGsoAgAiAkF4cSIDIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgCPCIBBEAgACgCQCIEQQRrKAIAIgJBeHEiAyABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAkgiAQRAIAAoAkwiBEEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAJUIgEEQCAAKAJYIgRBBGsoAgAiAkF4cSIDIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAMgAUEnaksbDQIgBBCiAgsgACgCYCIBBEAgACgCZCIEQQRrKAIAIgJBeHEiAyABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAmwiAQRAIAAoAnAiBEEEaygCACICQXhxIgMgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgAyABQSdqSxsNAiAEEKICCyAAKAJ4IgIEQCAAKAJ8IgNBBGsoAgAiAEF4cSIBIAJBAnQiAkEEQQggAEEDcSIAG2pJDQEgAEEAIAEgAkEnaksbDQIgAxCiAgsPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuyDgQKfwJ9AXsBfiMAQdAEayIKJAACQAJAAkACQAJAAnsgAxCFCyITBEBDAACAPyEUQwAAgD8hFf0MAACAPwAAQMEAABBBAACAPwwBCyAKQdgBaiADELYBIAooAtgBIQ0gCi0A9AEiEUECRgRAIABBADYCACAAIA02AgQgCEUgCUGECElyRQRAIAkQvgcLIAZFIAdBhAhJckUEQCAHEL4HC0EBIQAgBEUgBUGDCE1yDQMMAgsgCiAKLwD1ATsBFCAKIAotAPcBOgAWIAoqAvABIRQgCioC7AEhFSAK/QAC3AELIRZBBiELAkACQAJAAkACQAJAIAEoAgAiDEGAgICAeEYNACAKQRhqIAEoAgQiDiABKAIIEIMFIAotABhBAUYEQCAKKAIcIQsgCkEANgKcAyAKQoCAgIAQNwKUAyAKQdiZwQA2AtwBIApCoICAgAY3AuABIAogCkGUA2o2AtgBIAsgCkHYAWoQigUNAiAKKAKUAyENIAooApgDIhEgCigCnAMQrwkhDyANBEAgEUEEaygCACIQQXhxIhJBBEEIIBBBA3EiEBsgDWpJDQsgEEEAIBIgDUEnaksbDQwgERCiAgsgAEEANgIAIAAgDzYCBCALIAsoAgAoAgARAwAgDARAIA5BBGsoAgAiAEF4cSILQQRBCCAAQQNxIgAbIAxqSQ0LIABBACALIAxBJ2pLGw0MIA4QogILIAhFIAlBhAhJckUEQCAJEL4HCyAGRSAHQYQISXJFBEAgBxC+BwsgBEUgBUGECElyRQRAIAUQvgcLQQAhACADQYQISQ0IIAMhBSATDQcMCAsgCi0AGSELIAxFDQAgDkEEaygCACIBQXhxIg9BBEEIIAFBA3EiARsgDGpJDQkgAUEAIA8gDEEnaksbDQogDhCiAgtBBCEBQQAhDEEAEO8JIRJBACEOQQQhDwJAIARBAUcNACAKQdgBaiAFEKwGIAooAuABIRAgCigC3AEhDyAKKALYASEOIAVBhAhJDQAgBRC+BwtBACEFAkAgBkEBRw0AIApB2AFqIAcQrAYgCigC4AEhBSAKKALcASEBIAooAtgBIQwgB0GECEkNACAHEL4HC0EEIQdBACEGQQAhBAJAIAhBAUcNACAKQdgBaiAJEKwGIAooAuABIQQgCigC3AEhByAKKALYASEGIAlBhAhJDQAgCRC+BwsgCiAROgD0AiAKIBQ4AvACIAogFTgC7AIgCiAW/QsC3AIgCiANNgLYAiAKQYCAgIB4NgLMAiAKQoCAgICAgICAgH83ArwCIApCgICAgMAANwK0AiAKIAQ2ArACIAogBzYCrAIgCiAGNgKoAiAKIAU2AqQCIAogATYCoAIgCiAMNgKcAiAKIBA2ApgCIAogDzYClAIgCiAONgKQAiAKQQA2AogCIApBADYCgAIgCkEANgL4ASAKQQA2AvABIApBADYC6AEgCkEANgLgASAKQQA2AtgBIApBADYCgAMgCiASNgKEAyAKQgA3AvgCIApCADcCiAMgCkEAOgCQAyAKIAotABY6APcCIAogCi8BFDsA9QIgAigCACEEIAIoAgQhBSACKAIIIQECfyALQQZHBEAgCkEIaiALIApB2AFqEO4DQQIhByAKKAIMIQggCigCCAwBCyAKQZQDaiAKQdwBakG4AfwKAABBACEHQQALIQZBgICAgHghCSAEQYCAgIB4RwRAIAFBAEgNAiABBH4gARBuIgJFDQQgAQRAIAIgBSAB/AoAAAsgAq0FQgELIAGtQiCGhCEXIAEhCQsgCkEgaiICIApBlANqQbgB/AoAAEHsARBuIgFFDQMgASAHNgIAIAFBBGogAkG4AfwKAAAgASALOgDoASABIAg2AuQBIAEgBjYC4AEgAUGAgICAeDYC1AEgASAXNwLMASABIAk2AsgBIAFBADYCxAEgAUKAgICAEDcCvAEgAEGAw8EANgIMIABBATYCCCAAQejCwQA2AgQgACABNgIAIBNFIANBhAhJcg0EIAMQvgcMBAtBzLLFAEE3IApBzwRqQfCZwQBBhLPFABDCBwALEJgKAAtBASABEJoJAAtB7AEQsQoACyAEQQBMDQICQCAFQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAEak8EQCAAQQAgASAEQSdqSxsNASAFEKICDAQLDAQLDAQLIAUQvgcLAkAgAigCACIDQQBKBEAgAigCBCICQQRrKAIAIgRBeHEiBUEEQQggBEEDcSIEGyADakkNAyAEQQAgBSADQSdqSxsNBCACEKICCyAAIAEoAgAiAkGAgICAeEdxRSACRXINASABKAIEIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0CIAFBACADIAJBJ2pLGw0AIAAQogIMAQsMAgsgCkHQBGokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC+UPAwZ/A30BeyMAQbAEayIGJAAgBiAENgIEIAYgAzYCACAGQeQBaiAFELYBIAYoAuQBIQUCQAJAAkACQAJAAkACQAJAAkAgBi0AgAIiCEECRgRAIABBgICAgHg2AgAgACAFNgIEIANFIARBhAhJckUEQCAEEL4HCyACQYQISQ0BIAIQvgcMAQsgBiAGKQL4ATcCHCAGIAb9AALoAf0LAgwgBiAGLwCBAjsAJSAGIAYtAIMCOgAnIAYgCDoAJCAGIAU2AgggBkHkAWogAiABIAZBBGpBACADQQFxGyAGQQhqEM0CAkACQAJAIAYoAuQBQQJGBEAgBigC6AEhASAGQQA2AqgEIAZCgICAgBA3AqAEIAZB2JnBADYCpAMgBkKggICABjcCqAMgBiAGQaAEajYCoAMgASAGQaADahCKBQ0MIAYoAqAEIQIgBigCpAQiBSAGKAKoBBCvCSEIIAIEQCAFQQRrKAIAIgdBeHEiCUEEQQggB0EDcSIHGyACakkNBiAHQQAgCSACQSdqSxsNByAFEKICCyAAQYCAgIB4NgIAIAAgCDYCBCABIAEoAgAoAgARAwAMAQsgBkEoaiAGQeQBaiICQbwB/AoAACAGQQA2ApwCIAZCgICAgBA3ApQCIAZCATcCjAIgBkIANwKEAiAGQoCAgIAQNwL8ASAGQgQ3AvQBIAZCADcC7AEgBkKAgICAwAA3AuQBIAZBADYCwAIgBiAG/QACqAH9CwKgAiAGIAb9AAK4Af0LArACIAYoAswBIQUgBigC0AEhASAGIAYoAlg6AKgEIAYgATYCpAQgBiAFNgKgBCACIAZBoARqEOoBIAYtAMQBIgFBAkcEQCAGKgLAASEMIAYqArwBIQ0gBioCuAEhDiAG/QACqAEhDyAGLQC8AkECRwRAIAYgBi0AvwI6AKIEIAYgBi8AvQI7AaAECyAGIAFBAXE6ALwCIAYgDDgCuAIgBiANOAK0AiAGIA44ArACIAYgD/0LAqACIAYgBi8BoAQ7AL0CIAYgBi0AogQ6AL8CCyAGQQA2AvgDIAZCgICAgMAANwLwAyAGQQA2AoQEIAZCgICAgMAANwL8AyAGQQA2ApAEIAZCgICAgMAANwKIBCAGQQA2ApwEIAZCgICAgMAANwKUBCAGQQA2AqgEIAZCgICAgMAANwKgBCAFBEAgBkHwA2pBAEGAgAQgBSAFQYCABE8bIgFBA2wiAkEEQQQQ1gYgBigC+AMhBCAGKAL0AyEAIAFBDGxBBGsiA0UiCUUEQCAAIARBAnRqQQAgA/wLAAsgACACIARqQQJ0akEEa0EANgIAIAZB/ANqQQAgAUEEQQQQ1gYgBigCgAQiCyAGKAKEBCIHQQJ0aiEIAkAgBUEBRgRAIAdBAWohBUEEIQQMAQsgAUECdCIEQQRrIgUEQCAIQQAgBfwLAAsgCyABIAdqIgVBAnRqQQRrIQgLIAhBADYCACAGQYgEakEAIAJBBEEEENYGIAYoApAEIQcgBigCjAQhCCAJRQRAIAggB0ECdGpBACAD/AsACyAIIAIgB2pBAnRqQQRrQQA2AgAgBkGUBGpBACACQQRBBBDWBiAGKAKcBCEKIAYoApgEIQcgCUUEQCAHIApBAnRqQQAgA/wLAAsgByACIApqQQJ0akEEa0EANgIAIAZBoARqQQAgBEEEQQQQ1gYgBigCqAQhAyAGKAKkBCEJIAFBBHRBBGsiCgRAIAkgA0ECdGpBACAK/AsACyAJIAMgBGpBAnRqQQRrQQA2AgAgBkEoaiIDIAEgACACEK4FIAEgBUsNB0EAIQAgA0EAIAEQ4QNDAAAAQEMAAIA/IAYtAMQBGyEMIAFBAnQhBCAGKAKIASEDIAYoAowBIQUDQCAAQQNqIAVPDQkgACAERg0KIAAgC2ogDCADLQADs0MAAH9DlZQ4AgAgA0EQaiEDIAQgAEEEaiIARw0ACyAGQShqIgAgASAIIAIQhAUgACABIAcgAhC1BEEAIAFBAEGc+MEAEKAFAAsgBigC6AEhASAGKALsASECIAYoAuQBIQUgBkGgA2ogBkHwAWpB0AD8CgAAIAVBgICAgHhHDQEgBkEANgKoBCAGQoCAgIAQNwKgBCAGQdiZwQA2AugBIAZCoICAgAY3AuwBIAYgBkGgBGo2AuQBIAEgBkHkAWoQigUNCyAGKAKgBCECIAYoAqQEIgUgBigCqAQQrwkhCCACBEAgBUEEaygCACIHQXhxIglBBEEIIAdBA3EiBxsgAmpJDQogB0EAIAkgAkEnaksbDQsgBRCiAgsgAEGAgICAeDYCACAAIAg2AgQgASABKAIAKAIAEQMAIAZBKGoQyAILIANFDQIgBEGECE8NAQwCCyAGKALAAiEIIABBDGogBkGgA2pB0AD8CgAAIAAgCDYCZCAAIAI2AmAgACAINgJcIAAgAjYCCCAAIAE2AgQgACAFNgIAIAZBKGoQyAIgA0UgBEGECElyDQELIAQQvgcLIAZBsARqJAAPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtBACABIAVBrPjBABCgBQALIAAgAEEEaiAFQZDQwQAQoAUACyABIAFBgNDBABDwBwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC0HMssUAQTcgBkGvBGpB8JnBAEGEs8UAEMIHAAv5DwIMfwN+IwBBMGsiAiQAAkACQAJAAn8CQAJAAkACQEEVIAEoAgAiBEGAgICAeHMgBEEAThtBFGsOAgECAAsgASACQS9qQdiAwQAQzQghASAAQYCAgIB4NgIAIAAgATYCBAwECwJAAkACQCABKAIMIgMEQAJAIAEoAggiBCgCAEGUgICAeEYEQAJAIAQoAgwiAQRAIAJBHGogBCgCCBCrBSACKAIcIgVBgICAgHhHDQEgAigCICEEDAULQQAgAkEvakHI/8AAELgHIQQMBAsgAigCICEHIAFBAUYNASACQQE2AhwgAUEBa0H/////AHFBAWogAkEcakGAnMEAELgHIQQgBUUNAyAHIAVBARDBBwwDCyAEIAJBL2pByP/AABDNCCEEDAILIANBAUYNBSACKAIkIQYgAkEcaiIIIARBEGoQ4gIgAigCICIBIAIoAhwNBhogA0ECRg0CIAIpAiQhDiAIIARBIGoQ4gIgAigCICEEIAIoAhxFDQMgBAwGC0EAQayIwQBBqKrGABC4ByEECyAAQYCAgIB4NgIAIAAgBDYCBAwFC0ECQayIwQBBqKrGABC4BwwDCyAAIAIpAiQ3AhwgACAENgIYIAAgDjcCECAAIAE2AgwgACAGNgIIIAAgBzYCBCAAIAU2AgAgA0EDRg0DIAJBAzYCHCADQf3///8AakH/////AHFBA2ogAkEcakGAnMEAELgHIQEgAEGAgICAeDYCACAAIAE2AgQgBUUNAyAHIAVBARDBBwwDCyABKAIEIQQgASgCCCEBIAJBADYCGCACIAQgAUEFdGoiCzYCEAJAAkACQAJAIAFFDQBBgICAgHghBgNAIAIgBEEgaiIBNgIMIAIgAigCGEEBajYCGCACIARBEGoiDDYCFAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkBBFSAEKAIAIgNBgICAgHhzIANBAE4bQQFrDg8FCgoACgoKCgoKCgECAwQKC0IDIAQpAwgiDiAOQgNaG6cMBQsgBCgCCCEDAkAgBCgCDEEEaw4CAAcKCyADKAAAQe3SuZsHRg0LIAMoAABB7cLhmwdGDQoMCQsgBCgCBCEDAkAgBCgCCEEEaw4CAAUJCyADKAAAQe3SuZsHRg0KIAMoAABB7cLhmwdGDQkMCAsgBCgCCCEDAkACQCAEKAIMQQRrDgIBAAkLIAMtAABB5gBHDQggAy0AAUHpAEcNCCADLQACQewARw0IIAMtAANB5QBHDQggAy0ABEHzAEcNCAwGCyADLQAAQe0ARw0HAkACQCADLQABQeEAaw4JAQkJCQkJCQkACQsgAy0AAkHuAEcNCCADLQADQfMARg0KDAgLIAMtAAJB+ABHDQcgAy0AA0HzAEYNCAwHCyAEKAIEIQMCQAJAIAQoAghBBGsOAgEACAsgAy0AAEHmAEcNByADLQABQekARw0HIAMtAAJB7ABHDQcgAy0AA0HlAEcNByADLQAEQfMARw0HDAULIAMtAABB7QBHDQYCQAJAIAMtAAFB4QBrDgkBCAgICAgICAAICyADLQACQe4ARw0HIAMtAANB8wBHDQcMCQsgAy0AAkH4AEcNBiADLQADQfMARw0GDAcLQQMgBC0ABCIEIARBA08bC0H/AXFBAWsOAwYFBAILIAMoAABB5tKxqwZzIANBBGotAABB8wBzckUNAQwDCyADKAAAQebSsasGcyADQQRqLQAAQfMAc3INAgsgBkGAgICAeEcEQEHIhMEAQQUQiQghASAAQYCAgIB4NgIAIAAgATYCBAwGCyACQRxqIAJBDGoQzQUgAigCICEIIAIoAhwiBkGAgICAeEYEQCAAQYCAgIB4NgIAIAAgCDYCBAwPCyACKAIkIQ0gAigCECELIAIoAgwhAQwGCyAEIAJBL2pBqILBABDNCCEFDAMLIAJBADYCFAwECyAJBEBB0YTBAEEEEIkIIQUMAgsgAkEANgIUIAJBHGogDBDiAiACKAIgIQcgAigCHEEBRgRAIAchBQwCCyACKQIkIQ9BASEJDAMLIAoEQEHNhMEAQQQQiQghBQwBCyACQQA2AhQgAkEcaiAMEOICIAIoAiAhBSACKAIcQQFGDQAgAikCJCEQQQEhCgwCCyAAQYCAgIB4NgIAIAAgBTYCBCAGQYCAgIB4Rg0JCyAGRQ0IAkAgCEEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBmpPBEAgAEEAIAEgBkEnaksbDQEgCBCiAgwKC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgCyABIgRHDQALIAZBgICAgHhGDQAgCkUNASAJDQMgAEHRhMEAQQQQhgg2AgQMAgtByITBAEEFEIYIIQEgAEGAgICAeDYCACAAIAE2AgQMBQsgAEHNhMEAQQQQhgg2AgQLIABBgICAgHg2AgAgBkUNAyAIIAZBARDBBwwDCyAAIA83AhwgACAHNgIYIAAgEDcCECAAIAU2AgwgACANNgIIIAAgCDYCBCAAIAY2AgAMAgtBAUGsiMEAQaiqxgAQuAcLIQEgAEGAgICAeDYCACAAIAE2AgQgBUUNACAHQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAFakkNASAAQQAgASAFQSdqSxsNAiAHEKICCyACQTBqJAAPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAurDwILfwF+IwBBIGsiAyQAQYCAgIB4IQcCQAJAAkACQAJAAkACQAJAAkACQAJAQRUgASgCACIFQYCAgIB4cyAFQQBOG0EUaw4CAQIACyABIANBH2pB2IHBABDNCCEBIABBgICAgHg2AgAgACABNgIEDAcLAn8CQAJAIAEoAgwiAgRAAkAgASgCCCIBKAIAQZSAgIB4RgRAAkAgASgCDCIEBEAgAyABKAIIEKsFIAMoAgAiBkGAgICAeEcNASADKAIEIQEMBQtBACADQR9qQcj/wAAQuAchAQwECyADKAIEIQUgBEEBRg0BIANBATYCACAEQQFrQf////8AcUEBaiADQYCcwQAQuAchASAGRQ0DIAUgBkEBEMEHDAMLIAEgA0EfakHI/8AAEM0IIQEMAgsgAkEBRg0CIAMoAgghByADIAFBEGoQpgMgAygCBCIBIAMoAgAiBEGAgICAeEYNAxogACADKAIINgIUIAAgATYCECAAIAQ2AgwgACAHNgIIIAAgBTYCBCAAIAY2AgAgAkECRg0KIANBAjYCACACQf7///8AakH/////AHFBAmogA0GAnMEAELgHIQIgAEGAgICAeDYCACAAIAI2AgQgBgRAIAUgBkEBEMEHCyAERQ0KIAEgBEECdEEEEMEHDAoLQQBB1IjBAEGoqsYAELgHIQELIABBgICAgHg2AgAgACABNgIEDAgLQQFB1IjBAEGoqsYAELgHCyEBIABBgICAgHg2AgAgACABNgIEIAZFDQYgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBmpJDQggAEEAIAEgBkEnaksbDQcgBRCiAgwGCyABKAIIIQUgASgCBCEBIANCADcCCCADIAE2AgAgAyABIAVBBXRqIgk2AgQgBUUNAUGAgICAeCEEA0AgAyABQSBqIgU2AgAgAyADKAIMQQFqNgIMIAMgAUEQaiIKNgIIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgJBgICAgHhzIAJBAE4bQQFrDg8ACQkBCQkJCQkJCQIDBAUJCyABLQAEIgFFDQlBAUECIAFBAUYbIQEMCgsgASkDCCINUA0IQQFBAiANQgFRGyEBDAkLIAEoAgghAiABKAIMQQVrDgQFCgoECgsgASgCBCECAkAgASgCCEEFaw4EAwoKAAoLIAIpAABC496Rq6bs27frAFENCAwJCyABKAIIIQICQAJAIAEoAgxBBWsOBAAKCgEKCyACLQAAQeYARw0JIAItAAFB6QBHDQkgAi0AAkHsAEcNCSACLQADQeUARw0JIAItAARB8wBGDQYMCQsgAi0AAEHjAEcNCCACLQABQe8ARw0IIAItAAJB5ABHDQggAi0AA0HlAEcNCCACLQAEQeIARw0IIAItAAVB7wBHDQggAi0ABkHvAEcNCCACLQAHQesARg0HDAgLIAEoAgQhAgJAAkAgASgCCEEFaw4EAAkJAQkLIAItAABB5gBHDQggAi0AAUHpAEcNCCACLQACQewARw0IIAItAANB5QBHDQggAi0ABEHzAEYNBQwICyACLQAAQeMARw0HIAItAAFB7wBHDQcgAi0AAkHkAEcNByACLQADQeUARw0HIAItAARB4gBHDQcgAi0ABUHvAEcNByACLQAGQe8ARw0HIAItAAdB6wBGDQYMBwsgAigAAEHm0rGrBnMgAkEEai0AAEHzAHNyDQYMAwsgAikAAELj3pGrpuzbt+sAUg0FDAQLIAIoAABB5tKxqwZzIAJBBGotAABB8wBzckUNAQwECyABIANBH2pByILBABDNCCEBDAkLIARBgICAgHhHBEBByITBAEEFEIkIIQEMCQsgA0EQaiADEM0FIAMoAhQhASADKAIQIgRBgICAgHhGBEBBgICAgHghBAwJCyADKAIYIQsgAygCBCEJIAMoAgAhBSABIQYMBAsgAUECRg0BCyAHQYCAgIB4Rg0BQdCFwQBBCBCJCCEBIABBgICAgHg2AgAgACABNgIEIAdFDQgMBwsgA0EANgIIDAELIANBADYCCCADQRBqIAoQpgMgAygCFCEIIAMoAhAiB0GAgICAeEYEQCAAQYCAgIB4NgIAIAAgCDYCBAwHCyADKAIYIQwLIAkgBSIBRw0ACwwACyAEQYCAgIB4Rg0AIAdBgICAgHhGBEBB0IXBAEEIEIYIIQEgAEGAgICAeDYCACAAIAE2AgQgBEUNBSAGIARBARDBBwwFCyAAIAw2AhQgACAINgIQIAAgBzYCDCAAIAs2AgggACAGNgIEIAAgBDYCAAwEC0GAgICAeCEEQciEwQBBBRCGCCEBCyAAQYCAgIB4NgIAIAAgATYCBCAHQYCAgIB4ckGAgICAeEYNAQsgCEEEaygCACIAQXhxIgEgB0ECdCIFQQRBCCAAQQNxIgAbakkNAyAAQQAgASAFQSdqSxsNAiAIEKICCyAERSAEQYCAgIB4RnINACAGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAEakkNAiAAQQAgASAEQSdqSxsNASAGEKICCyADQSBqJAAPC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAurDwILfwF+IwBBIGsiAyQAQYCAgIB4IQcCQAJAAkACQAJAAkACQAJAAkACQAJAQRUgASgCACIFQYCAgIB4cyAFQQBOG0EUaw4CAQIACyABIANBH2pByIHBABDNCCEBIABBgICAgHg2AgAgACABNgIEDAcLAn8CQAJAIAEoAgwiAgRAAkAgASgCCCIBKAIAQZSAgIB4RgRAAkAgASgCDCIEBEAgAyABKAIIEKsFIAMoAgAiBkGAgICAeEcNASADKAIEIQEMBQtBACADQR9qQcj/wAAQuAchAQwECyADKAIEIQUgBEEBRg0BIANBATYCACAEQQFrQf////8AcUEBaiADQYCcwQAQuAchASAGRQ0DIAUgBkEBEMEHDAMLIAEgA0EfakHI/8AAEM0IIQEMAgsgAkEBRg0CIAMoAgghByADIAFBEGoQpgMgAygCBCIBIAMoAgAiBEGAgICAeEYNAxogACADKAIINgIUIAAgATYCECAAIAQ2AgwgACAHNgIIIAAgBTYCBCAAIAY2AgAgAkECRg0KIANBAjYCACACQf7///8AakH/////AHFBAmogA0GAnMEAELgHIQIgAEGAgICAeDYCACAAIAI2AgQgBgRAIAUgBkEBEMEHCyAERQ0KIAEgBEECdEEEEMEHDAoLQQBB9IXBAEGoqsYAELgHIQELIABBgICAgHg2AgAgACABNgIEDAgLQQFB9IXBAEGoqsYAELgHCyEBIABBgICAgHg2AgAgACABNgIEIAZFDQYgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgBmpJDQggAEEAIAEgBkEnaksbDQcgBRCiAgwGCyABKAIIIQUgASgCBCEBIANCADcCCCADIAE2AgAgAyABIAVBBXRqIgk2AgQgBUUNAUGAgICAeCEEA0AgAyABQSBqIgU2AgAgAyADKAIMQQFqNgIMIAMgAUEQaiIKNgIIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSABKAIAIgJBgICAgHhzIAJBAE4bQQFrDg8ACQkBCQkJCQkJCQIDBAUJCyABLQAEIgFFDQlBAUECIAFBAUYbIQEMCgsgASkDCCINUA0IQQFBAiANQgFRGyEBDAkLIAEoAgghAiABKAIMQQVrDgQFCgoECgsgASgCBCECAkAgASgCCEEFaw4EAwoKAAoLIAIpAABC496Rq6bs27frAFENCAwJCyABKAIIIQICQAJAIAEoAgxBBWsOBAAKCgEKCyACLQAAQeYARw0JIAItAAFB6QBHDQkgAi0AAkHsAEcNCSACLQADQeUARw0JIAItAARB8wBGDQYMCQsgAi0AAEHjAEcNCCACLQABQe8ARw0IIAItAAJB5ABHDQggAi0AA0HlAEcNCCACLQAEQeIARw0IIAItAAVB7wBHDQggAi0ABkHvAEcNCCACLQAHQesARg0HDAgLIAEoAgQhAgJAAkAgASgCCEEFaw4EAAkJAQkLIAItAABB5gBHDQggAi0AAUHpAEcNCCACLQACQewARw0IIAItAANB5QBHDQggAi0ABEHzAEYNBQwICyACLQAAQeMARw0HIAItAAFB7wBHDQcgAi0AAkHkAEcNByACLQADQeUARw0HIAItAARB4gBHDQcgAi0ABUHvAEcNByACLQAGQe8ARw0HIAItAAdB6wBGDQYMBwsgAigAAEHm0rGrBnMgAkEEai0AAEHzAHNyDQYMAwsgAikAAELj3pGrpuzbt+sAUg0FDAQLIAIoAABB5tKxqwZzIAJBBGotAABB8wBzckUNAQwECyABIANBH2pBmILBABDNCCEBDAkLIARBgICAgHhHBEBByITBAEEFEIkIIQEMCQsgA0EQaiADEM0FIAMoAhQhASADKAIQIgRBgICAgHhGBEBBgICAgHghBAwJCyADKAIYIQsgAygCBCEJIAMoAgAhBSABIQYMBAsgAUECRg0BCyAHQYCAgIB4Rg0BQdCFwQBBCBCJCCEBIABBgICAgHg2AgAgACABNgIEIAdFDQgMBwsgA0EANgIIDAELIANBADYCCCADQRBqIAoQpgMgAygCFCEIIAMoAhAiB0GAgICAeEYEQCAAQYCAgIB4NgIAIAAgCDYCBAwHCyADKAIYIQwLIAkgBSIBRw0ACwwACyAEQYCAgIB4Rg0AIAdBgICAgHhGBEBB0IXBAEEIEIYIIQEgAEGAgICAeDYCACAAIAE2AgQgBEUNBSAGIARBARDBBwwFCyAAIAw2AhQgACAINgIQIAAgBzYCDCAAIAs2AgggACAGNgIEIAAgBDYCAAwEC0GAgICAeCEEQciEwQBBBRCGCCEBCyAAQYCAgIB4NgIAIAAgATYCBCAHQYCAgIB4ckGAgICAeEYNAQsgCEEEaygCACIAQXhxIgEgB0ECdCIFQQRBCCAAQQNxIgAbakkNAyAAQQAgASAFQSdqSxsNAiAIEKICCyAERSAEQYCAgIB4RnINACAGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAEakkNAiAAQQAgASAEQSdqSxsNASAGEKICCyADQSBqJAAPC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAurDgMFfwJ9AX4jAEEgayICJAACQCABKAIAIgRBhOjDAEEEIAEoAgQiAygCDCIFEQAABEBBASEDDAELAkACQCABKAIIIgZBgICABHFFBEBBASEDIARBpcvEAEEBIAURAAANAyAGQYCAgAFxIQUgACoCACEHAkAgBkGAgICAAXFFBEAgAEEEaiEEIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXINASABIAcgBUEAR0EBEI0DRQ0DDAULIAEgByAFQQBHIAEvAQ4QxwINBCAAQQRqIQQMAgsgASAHIAVBAEcQ3gJFDQEMAwsgBEGFjsIAQQIgBREAAARAQQEhAwwDCyACQQE6AA8gAiADNgIEIAIgBDYCACACQYiPwgA2AhQgAiABKQIIIgk3AhggCaciBEGAgIABcSEDIAIgAkEPajYCCCACIAI2AhAgACoCACEHAkAgBEGAgICAAXFFBEAgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xcgRAIAJBEGogByADQQBHEN4CDQQMAgsgAkEQaiAHIANBAEdBARCNA0UNAQwDCyACQRBqIAcgA0EARyAJQjCIpxDHAg0CCyACKAIQQYOOwgBBAiACKAIUKAIMEQAABEBBASEDDAMLIABBBGohBAsCQAJAAkACQAJAIAEoAggiA0GAgIAEcUUEQCABKAIAQdOmxQBBAiABKAIEKAIMEQAABEBBASEDDAgLIANBgICAAXEhBSAEKgIAIQcCQCADQYCAgIABcUUEQCAAQQhqIQQgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xcg0BQQEhAyABIAcgBUEAR0EBEI0DRQ0HDAkLIAEgByAFQQBHIAEvAQ4QxwJFDQJBASEDDAgLIAEgByAFQQBHEN4CRQ0FQQEhAwwHCyABKQIAIQkgAkEBOgAPIAIgCTcCACACQYiPwgA2AhQgAiABKQIIIgk3AhggCaciBUGAgIABcSEDIAIgAkEPajYCCCACIAI2AhAgBCoCACEHIAVBgICAgAFxRQ0BIAJBEGogByADQQBHIAlCMIinEMcCDQMMAgsgAEEIaiEEDAMLIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXIEQCACQRBqIAcgA0EARxDeAkUNAQwCCyACQRBqIAcgA0EAR0EBEI0DDQELIAIoAhBBg47CAEECIAIoAhQoAgwRAAANACAAQQhqIQQMAQtBASEDDAILAkACQAJAAkACQCABKAIIIgNBgICABHFFBEAgASgCAEHTpsUAQQIgASgCBCgCDBEAAARAQQEhAwwICyADQYCAgAFxIQUgBCoCACEHAkAgA0GAgICAAXFFBEAgAEEMaiEEIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXINAUEBIQMgASAHIAVBAEdBARCNA0UNBwwJCyABIAcgBUEARyABLwEOEMcCRQ0CQQEhAwwICyABIAcgBUEARxDeAkUNBUEBIQMMBwsgASkCACEJIAJBAToADyACIAk3AgAgAkGIj8IANgIUIAIgASkCCCIJNwIYIAmnIgVBgICAAXEhAyACIAJBD2o2AgggAiACNgIQIAQqAgAhByAFQYCAgIABcUUNASACQRBqIAcgA0EARyAJQjCIpxDHAg0DDAILIABBDGohBAwDCyAHiyIIQ8obDlpgIAdDAAAAAFwgCEMXt9E4XXFyBEAgAkEQaiAHIANBAEcQ3gJFDQEMAgsgAkEQaiAHIANBAEdBARCNAw0BCyACKAIQQYOOwgBBAiACKAIUKAIMEQAADQAgAEEMaiEEDAELQQEhAwwCCwJAAkACQAJAAkAgASgCCCIDQYCAgARxRQRAIAEoAgBB06bFAEECIAEoAgQoAgwRAAAEQEEBIQMMCAsgA0GAgIABcSEAIAQqAgAhByADQYCAgIABcQ0BIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXJFBEBBASEDIAEgByAAQQBHQQEQjQNFDQYMCAtBASEDIAEgByAAQQBHEN4CRQ0FDAcLIAEpAgAhCSACQQE6AA8gAiAJNwIAIAJBiI/CADYCFCACIAEpAggiCTcCGCAJpyIDQYCAgAFxIQAgAiACQQ9qNgIIIAIgAjYCECAEKgIAIQcgA0GAgICAAXFFDQEgAkEQaiAHIABBAEcgCUIwiKcQxwINAgwDC0EBIQMgASAHIABBAEcgAS8BDhDHAg0FDAMLIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXIEQCACQRBqIAcgAEEARxDeAkUNAgwBCyACQRBqIAcgAEEAR0EBEI0DRQ0BC0EBIQMMAwsgAigCEEGDjsIAQQIgAigCFCgCDBEAAEUNAEEBIQMMAgsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAELQQEhAwsgAkEgaiQAIAMLqA4CAn0EfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJFIAAoAlxBAklyRQRAQwAA/kJDAAD+QiAAKgJQlSAALQBYQQJGGyEGIAAoAiggAUEPbGohCUEOIAQgBEEOTRtBD25BD2whCiAAKAIsIQhBACEAA0AgASAITw0QIAAgBE8NESAAIAlqIgdB/wBDAAD+QkMAAP7CIAYgAyoCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bEIUIIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBAWogBE8NDyAHQQFqQf8AQwAA/kJDAAD+wiAGIANBBGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxCFCCIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQJqIARPDQ4gB0ECakH/AEMAAP5CQwAA/sIgBiADQQhqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQhQgiBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEDaiAETw0NIAdBA2pB/wBDAAD+QkMAAP7CIAYgA0EMaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bEIUIIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBBGogBE8NDCAHQQRqQf8AQwAA/kJDAAD+wiAGIANBEGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxCFCCIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQVqIARPDQsgB0EFakH/AEMAAP5CQwAA/sIgBiADQRRqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQhQgiBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEGaiAETw0KIAdBBmpB/wBDAAD+QkMAAP7CIAYgA0EYaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bEIUIIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBB2ogBE8NCSAHQQdqQf8AQwAA/kJDAAD+wiAGIANBHGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxCFCCIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQhqIARPDQggB0EIakH/AEMAAP5CQwAA/sIgBiADQSBqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQhQgiBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEJaiAETw0HIAdBCWpB/wBDAAD+QkMAAP7CIAYgA0EkaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bEIUIIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBCmogBE8NBiAHQQpqQf8AQwAA/kJDAAD+wiAGIANBKGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxCFCCIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAQQtqIARPDQUgB0ELakH/AEMAAP5CQwAA/sIgBiADQSxqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQhQgiBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgAEEMaiAETw0EIAdBDGpB/wBDAAD+QkMAAP7CIAYgA0EwaioCAJQiBSAFQwAA/sJdGyIFIAVDAAD+Ql4bEIUIIgX8AEGAfyAFQwAAAMNgGyAFQwAA/kJeG0EAIAUgBVsbOgAAIABBDWogBE8NAyAHQQ1qQf8AQwAA/kJDAAD+wiAGIANBNGoqAgCUIgUgBUMAAP7CXRsiBSAFQwAA/kJeGxCFCCIF/ABBgH8gBUMAAADDYBsgBUMAAP5CXhtBACAFIAVbGzoAACAAIApGDQIgB0EOakH/AEMAAP5CQwAA/sIgBiADQThqKgIAlCIFIAVDAAD+wl0bIgUgBUMAAP5CXhsQhQgiBfwAQYB/IAVDAAAAw2AbIAVDAAD+Ql4bQQAgBSAFWxs6AAAgA0E8aiEDIAFBAWohASAAQQ9qIQAgAkEBayICDQALCw8LIABBDmohAAwOCyAAQQ1qIQAMDQsgAEEMaiEADAwLIABBC2ohAAwLCyAAQQpqIQAMCgsgAEEJaiEADAkLIABBCGohAAwICyAAQQdqIQAMBwsgAEEGaiEADAYLIABBBWohAAwFCyAAQQRqIQAMBAsgAEEDaiEADAMLIABBAmohAAwCCyAAQQFqIQAMAQsgACAETw0AIAEgCEHY1cYAEPAHAAsgACAEQcjVxgAQ8AcAC7weAxR/An4EeyMAQeAAayIIJAAgAUFAayEKAkACQCABLQBgIgZBB0sNACAIQdAAaiAKEIsCAkAgCC0AUCIGQR1GBEAgAS0AYCIGQQhPDQJBDyEGDAELIAggCCkBUjcDACAIIAgpAVg3AQYgCC0AUSEBCyAAIAE6AAEgACAGOgAAIAAgCCkDADcBAiAAIAgpAQY3AQgMAQsgASAGQQhrIgY6AGAgASABKQNAIhpCCIgiGzcDQAJAAkACQAJAIBqnIgdB/wFxQS9GBEAgBkH/AXFBDUsNBCAIQdAAaiAKEIsCIAgtAFAiBkEdRw0BIAEtAGAiBkEOTw0DQQ8hBgwCCyAAIAc6AAEgAEELOgAADAQLIAggCCkCVDcDECAIIAgoAlw2AhggCC8BUiEBIAgtAFEhCgsgACABOwECIAAgCjoAASAAIAY6AAAgACAIKQMQNwIEIAAgCCgCGDYCDAwCCyAKKQMAIRsLIAEgBkEOayIGOgBgIAEgG0IOiCIaNwNAIAEgG6dB//8AcUEBaiIHOwF0IAZB/wFxQQ1NBEAgCEHQAGogChCLAgJAAkAgCC0AUCIGQR1GBEAgAS0AYCIGQQ5PDQJBDyEGDAELIAggCCkCVDcDICAIIAgoAlw2AiggCC8BUiEBIAgtAFEhCgsgACABOwECIAAgCjoAASAAIAY6AAAgACAIKQMgNwIEIAAgCCgCKDYCDAwCCyABKQNAIRogAS8BdCEHCyABIAZBDmsiBjoAYCABIBpCDogiGzcDQCABIBqnQf//AHFBAWoiCTsBdgJAIAMgCUcgAiAHR3JFBEAgBkH/AXFFBEAgCEHQAGogChCLAgJAAkAgCC0AUCIGQR1GBEAgAS0AYCIGDQJBDyEGDAELIAggCCkBUjcDMCAIIAgpAVg3ATYgCC0AUSEBCyAAIAE6AAEgACAGOgAAIAAgCCkDMDcBAiAAIAgpATY3AQgMBAsgCikDACEbCyABIAZBAWsiAzoAYCABIBtCAYgiGjcDQAJAAkAgBkH/AXFBA00EQCAIQdAAaiAKEIsCIAgtAFAiBkEdRw0BIAEtAGAiA0EDSQRAQQ8hBgwDCyAKKQMAIRoLIAEgA0EDazoAYCABIBpCA4g3A0AgGqdBB3EiAkUNAyAAIAI6AAEgAEEMOgAADAQLIAggCCkBUjcDQCAIIAgpAVg3AUYgCC0AUSEBCyAAIAgpAUY3AQggACAIKQNANwECIAAgAToAASAAIAY6AAAMAgsgAEEXOgAADAELIAhB0ABqIQtBACEGIwBB4ABrIgckACABIgNBQGshESADLwF0IRIgA0HoAGohGQJAAkACQAJAA0ACQAJAAkAgAy0AYCIJDQAgB0HMAGogERCLAiALAn8gBy0ATCIJQR1GBEAgAy0AYCIJDQJBDyEJQQEMAQsgByAHKQFONwMAIAcgBykBVDcBBiAHLQBNCzoAASALIAk6AAAgCyAHKQMANwECIAsgBykBBjcBCAwBCyADIAlBAWsiAjoAYCADIAMpA0AiG0IBiCIaNwNAIBtCAYNQRQRAIAlBAk0EQCAHQcwAaiAREIsCAkACQCAHLQBMIglBHUYEQCADLQBgIgJBAk8NAkEPIQkMAQsgByAHKQFONwMQIAcgBykBVDcBFiAHLQBNIRALIAsgEDoAASALIAk6AAAgCyAHKQMQNwECIAsgBykBFjcBCAwDCyARKQMAIRoLIAMgAkECazoAYCADIBpCAog3A0AgAyAap0EDcSIQQQR0aiINLQAAQQRHBEAgC0EQOgAADAILIAMoAnAiAiADKAJoRgRAIBkQrQcLIAMoAmwgAmogEDoAACADIAJBAWo2AnACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgEEEBaw4DAQ4CAAsgAy0AYCIJQQJLDQQgB0HMAGogERCLAiAHLQBMIglBHUcNAiADLQBgIglBA08NBEEPIQkMAwsgAy0AYCIJQQJLDQYgB0HMAGogERCLAiAHLQBMIglBHUcNBCADLQBgIglBA08NBkEPIQkMBQsgAy0AYCIJQQdLDQggB0HMAGogERCLAiAHLQBMIglBHUcNBiADLQBgIglBCE8NCEEPIQkMBwsgByAHKQFONwMgIAcgBykBVDcBJiAHLQBNIRcLIAsgFzoAASALIAk6AAAgCyAHKQMgNwECIAsgBykBJjcBCAwICyADIAlBA2s6AGAgAyADKQNAIhpCA4g3A0BBfyAap0EHcSIXQQJqIg90QX9zIgIgEkH//wNxaiAPdiIKIAIgAy8BdmogD3YiCWwiAkECdCEMAkAgAkUEQEEBIQYMAQsgDBBuIgZFDQsgBkEEay0AAEEDcUUgDEVyDQAgBkEAIAz8CwALIAdBzABqIAMgCiAJQQAgBiAMEEUgBy0ATEEdRg0IIAsgB/0AAkz9CwIAIAJFDQcgBkEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgDGpJDQsgAkEAIAMgDEEnaksbDQwgBhCiAgwHCyAHIAcpAU43AzAgByAHKQFUNwE2IActAE0hGAsgCyAYOgABIAsgCToAACALIAcpAzA3AQIgCyAHKQE2NwEIDAULIAMgCUEDazoAYCADIAMpA0AiGkIDiDcDQEF/IBqnQQdxIhhBAmoiD3RBf3MiAiASQf//A3FqIA92IgogAiADLwF2aiAPdiIJbCICQQJ0IQwCQCACRQRAQQEhBgwBCyAMEG4iBkUNCCAGQQRrLQAAQQNxRSAMRXINACAGQQAgDPwLAAsgB0HMAGogAyAKIAlBACAGIAwQRSAHLQBMQR1GDQUgCyAH/QACTP0LAgAgAkUNBCAGQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAMakkNCCACQQAgAyAMQSdqSxsNCSAGEKICDAQLIAcgBykCUDcDQCAHIAcoAlg2AkggBy8BTiEOIActAE0hAwsgCyAOOwECIAsgAzoAASALIAk6AAAgCyAHKQNANwIEIAsgBygCSDYCDAwCCyADIAlBCGs6AGAgAyADKQNAIhpCCIg3A0AgGqciAkH/AXEiDkEBaiITQQJ0IgwQbiIGRQ0EIAZBBGsiFC0AAEEDcUUgDEVyRQRAIAZBACAM/AsACyAHQcwAaiADIBNBAUEAIAYgDBBFIActAExBHUcEQCALIAf9AAJM/QsCACAUKAIAIgJBeHEiA0EEQQggAkEDcSICGyAMakkNBiACQQAgAyAMQSdqSxsNByAGEKICDAILIBJB//8DcUEBAn9BAyAOQQJJDQAaQQIgDkEESQ0AGiAOQRBJCyIKdGpBAWsgCnYiEkH//wNNBEAgDkUEQEEBIRNBACEODAQLQQQhCSACQQJ0QfwHcSIVQQFrIgIgDCACIAxJGyICQQRPBEAgAkEBaiIKQQNxIglBBCAJGyIJIAJBf3NqIRYgCiAJa0EEaiEJIAYhAgNAIAJBBGoiCiAC/VwAACAK/VwAAP1u/VoAAAAgCiECIBZBBGoiFg0ACwsgFUEIaiECIBVBBGohCgNAIAIgCUcEQCAJIBRqIhVBBGoiFiAVLQAAIBYtAABqOgAAIAlBAWoiCSAKRw0BDAULCyAJQQRrIAxBvI7GABDwBwALQdDtxwBBKyAHQd8AakHwusUAQayOxgAQwgcACyALQR06AAAgCyASOwECCyAHQeAAaiQADAULAkACQCANLQAAIgJBBEYgAkECRnINACANKAIEIgJFDQAgDSgCCCIKQQRrKAIAIglBeHEiFEEEQQggCUEDcSIJGyACakkNASAJQQAgFCACQSdqSxsNBSAKEKICCyANIAw2AgwgDSAGNgIIIA0gDDYCBCANIBM7AQIgDSAPOgABIA0gEDoAAAwBCwsMAQtBASAMEJoJAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAgtAFAiAkEdRwRAIAAgCCkCVDcCBCAAIAgoAlw2AgwgCC0AUSEBIAAgCC8BUjsBAiAAIAE6AAEgACACOgAADAELIAUgCC8BUiIJIAEvAXYiAmxBAnQiB08EQCAIQdAAaiABIAkgAkEBIAQgBxBFIAgtAFBBHUcEQCAAIAj9AAJQ/QsCAAwCCyABKAJwIgIEQCABKAJsIgwgAmohCwNAAkACQAJAAkACQAJAAkACQCALQQFrIgstAAAiAkEESQRAIAEgAkEEdGoiAi0AAEEBaw4EBAUCAQMLIAJBBEHMjcYAEPAHAAtB3I3GABCZCgALIAQgBSABLwF0IgkgAS8BdiIDIAIvAQIgAigCCCACKAIMEFMgAyAJbEECdCEHDAULIAUgB0kNAyAIQdAAaiAEIAcgCSABLwF2IAItAAEgAigCCCACKAIMEFkgCC0AUEEdRg0EIAAgCP0AAlD9CwIADAgLIAUgB0kNASAEIAcgCSACLQABIAIoAgggAigCDBCvAgwDCyAFIAdPBEAgB0H8////B3EiA0UNAwJAIANBBGsiAkEgSQRAIAQhCgwBCyAEIAJBAnZBAWoiAiACQQdxIgJBCCACG2siAkECdCIGaiEKIAMgBmshAyAEIQYDQCAGQRxqIg0gBv0AAAAiHSANIAZBGGoiDSAGQRBqIg79XQAA/VYAAAL9VQAABiIe/Q0BBQkNERUZHQAAAAAAAAAAIh8gHSAe/Q0ABAgMEBQYHAAAAAAAAAAA/W4iHP1YAAAHIA0gHP1YAAAGIAZBFGogHP1YAAAFIA4gHP1YAAAEIAZBDGogHP1YAAADIAZBCGogHP1YAAACIAZBBGogHP1YAAABIAYgHP1YAAAAIAZBHmoiDSAdIB79DQIGCg4SFhoAAAAAAAAAAAAgDSwAAP0XByAf/W4iHP1YAAAHIAZBGmogHP1YAAAGIAZBFmogHP1YAAAFIAZBEmogHP1YAAAEIAZBDmogHP1YAAADIAZBCmogHP1YAAACIAZBBmogHP1YAAABIAZBAmogHP1YAAAAIAZBIGohBiACQQhrIgINAAsLA0AgCiAKQQFqLQAAIgIgCi0AAGo6AAAgCkECaiIGIAIgBi0AAGo6AAAgCkEEaiEKIANBBGsiAw0ACwwDC0EAIAcgBUGMjsYAEKAFAAtBACAHIAVB/I3GABCgBQALQQAgByAFQeyNxgAQoAUACyALIAxHDQALCyAAQR06AAAMAQtBACAHIAVBnI7GABCgBQALIAhB4ABqJAAL+gsCEH8DfSAAQQRqIQogACABQQJ0aiEPIAAhAQNAIAogAkEEaiIRKAIAIAEoAgQgASgCABDFAwRAIAEoAgAhByABKAIEIg1BLGwhEiAOIQoCfwNAIAAgCmoiA0EEaiAHNgIAIAAgCkUNARoCfwJAIBEoAgAiAUEIaigCACIGIA1LBEAgAUEEaigCACIMIBJqIgUvASQhB0EAIQhBACAFLwEmIglB//8BcSIEQYD4AUsNAhpBACAHQf//AXEiAUGA+AFLDQIaIAnBQQBIDQEgByAJSSAHwUEATg0CGiABIAlyQQBHDAILIA0gBkHY0cYAEPAHAAsgB8FBAEggByAJS3ELIQEgA0EEayAJIAcgARsgByAEQYH4AUkbIQsCQCAFLwEoIglB//8BcSIEQYD4AUsNACALQf//AXEiAUGA+AFLDQAgCcFBAE4EQCALwUEATgRAIAkgC0H//wNxSyEIDAILIAEgCXJBAEchCAwBCyALwUEASCAJIAtB//8DcUlxIQgLKAIAIQcgBS8BHCEFAn8gCSALIAgbIAsgBEGB+AFJGyIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSEDIARBgIACcSEBIARBgPgBcSIEQYD4AUYEQCABQRB0IgFBgICA/AdyIANFDQEaIAEgA0ENdHJBgICA/gdyDAELIAFBEHQiASAEQQ10QYCAgPwAcSADQQ10ckGAgIDAA2pyIAQNABogAUGAgIDYA3IgA2dBEGsiAUEXdGsgAyABQf//A3FBCGp0Qf///wNxcgu+EIgEIRVDAACAPyETAn8gBUEQdCAFQf//AXFFDQAaIAVB/wdxIQMgBUGAgAJxIQEgBUGA+AFxIgRBgPgBRgRAIAFBEHQiAUGAgID8B3IgA0UNARogASADQQ10ckGAgID+B3IMAQsgAUEQdCIBIARBDXRBgICA/ABxIANBDXRyQYCAgMADanIgBA0AGiABQYCAgNgDciADZ0EQayIBQRd0ayADIAFB//8DcUEIanRB////A3FyC74iFEMAAIA/XgRAIBQQ4AVDVPgtQJRDAACAP5KRIRMLAn8CQCAGIAdLBEAgDCAHQSxsaiIDLwEkIQZBACEMQQAgAy8BJiIFQf//AXEiBEGA+AFLDQIaQQAgBkH//wFxIgFBgPgBSw0CGiAFwUEASA0BIAUgBksgBsFBAE4NAhogASAFckEARwwCCyAHIAZB2NHGABDwBwALIAbBQQBIIAUgBklxCyEBIAUgBiABGyAGIARBgfgBSRshCAJAIAMvASgiBkH//wFxIgRBgPgBSw0AIAhB//8BcSIBQYD4AUsNACAGwUEATgRAIAjBQQBOBEAgBiAIQf//A3FLIQwMAgsgASAGckEARyEMDAELIAjBQQBIIAYgCEH//wNxSXEhDAsgAy8BHCEFIApBBGshCiAVIBWSIBOUIhMgE1sgEwJ/IAYgCCAMGyAIIARBgfgBSRsiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhASAEQYD4AXEiBEGA+AFGBEAgAUEQdCIBQYCAgPwHciADRQ0BGiABIANBDXRyQYCAgP4HcgwBCyABQRB0IgEgBEENdEGAgID8AHEgA0ENdHJBgICAwANqciAEDQAaIAFBgICA2ANyIANnQRBrIgFBF3RrIAMgAUH//wNxQQhqdEH///8DcXILvhCIBCIUIBSSAn8gBUEQdCAFQf//AXFFDQAaIAVB/wdxIQMgBUGAgAJxIQEgBUGA+AFxIgRBgPgBRgRAIAFBEHQiAUGAgID8B3IgA0UNARogASADQQ10ckGAgID+B3IMAQsgAUEQdCIBIARBDXRBgICA/ABxIANBDXRyQYCAgMADanIgBA0AGiABQYCAgNgDciADZ0EQayIBQRd0ayADIAFB//8DcUEIanRB////A3FyC74iFEMAAIA/XgR9IBQQ4AVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXENAAsgACAKakEEagsgDTYCAAsgDkEEaiEOIgFBBGoiCiAPRw0ACwvGCwIIfwR+IAAoAhQhAyAAKAIQIQUgACkDCCEKIAAoAgQhCSAAKAIAIQggACgCGCICQQBIBEAgBSAJSQRAIAggBUECdGooAAAiBkH/gfwHcUEIeCAGQRh4Qf+B/Adxcq0hCwsgBUEBaiEFIAsgCkIghoQhCiACQSBqIQILIAIgA0EBdiIGIAMgBmsiAyAKIAOtIAKthiINWiIGGyIDZyICQRhrIgRBACACIARPGyIEayECIAMgBHQhAwJ+IAogDUIAIAYbfSILIAFB/wFxQQJJDQAaIAJBAEgEQCAFIAlJBEAgCCAFQQJ0aigAACIGQf+B/AdxQQh4IAZBGHhB/4H8B3FyrSEMCyAFQQFqIQUgDCALQiCGhCELIAJBIGohAgsgAiADQQF2IgYgAyAGayIDIAsgA60gAq2GIgxaIgQbIgNnIgJBGGsiBkEAIAIgBk8bIgZrIQIgAyAGdCEDQQJBACAKIA1aGyAEciEGIAsgDEIAIAQbfSILIAFB/wFxQQJGDQAaIAJBAEgEQEIAIQogBSAJSQRAIAggBUECdGooAAAiBEH/gfwHcUEIeCAEQRh4Qf+B/Adxcq0hCgsgBUEBaiEFIAogC0IghoQhCyACQSBqIQILIAIgA0EBdiIEIAMgBGsiAyALIAOtIAKthiIKWiIEGyIDZyICQRhrIgdBACACIAdPGyIHayECIAMgB3QhAyAGQQF0IARyIQYgCyAKQgAgBBt9IgsgAUH/AXFBBEkNABogAkEASARAQgAhCiAFIAlJBEAgCCAFQQJ0aigAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyrSEKCyAFQQFqIQUgCiALQiCGhCELIAJBIGohAgsgAiADQQF2IgQgAyAEayIDIAsgA60gAq2GIgpaIgQbIgNnIgJBGGsiB0EAIAIgB08bIgdrIQIgAyAHdCEDIAZBAXQgBHIhBiALIApCACAEG30iCyABQf8BcUEERg0AGiACQQBIBEBCACEKIAUgCUkEQCAIIAVBAnRqKAAAIgRB/4H8B3FBCHggBEEYeEH/gfwHcXKtIQoLIAVBAWohBSAKIAtCIIaEIQsgAkEgaiECCyACIANBAXYiBCADIARrIgMgCyADrSACrYYiCloiBBsiA2ciAkEYayIHQQAgAiAHTxsiB2shAiADIAd0IQMgBkEBdCAEciEGIAsgCkIAIAQbfSILIAFB/wFxQQZJDQAaIAJBAEgEQEIAIQogBSAJSQRAIAggBUECdGooAAAiBEH/gfwHcUEIeCAEQRh4Qf+B/Adxcq0hCgsgBUEBaiEFIAogC0IghoQhCyACQSBqIQILIAIgA0EBdiIEIAMgBGsiAyALIAOtIAKthiIKWiIEGyIDZyICQRhrIgdBACACIAdPGyIHayECIAMgB3QhAyAGQQF0IARyIQYgCyAKQgAgBBt9IgsgAUH/AXFBBkYNABogAkEASARAQgAhCiAFIAlJBEAgCCAFQQJ0aigAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyrSEKCyAFQQFqIQUgCiALQiCGhCELIAJBIGohAgsgAiADQQF2IgQgAyAEayIDIAsgA60gAq2GIgpaIgQbIgNnIgJBGGsiB0EAIAIgB08bIgdrIQIgAyAHdCEDIAZBAXQgBHIhBiALIApCACAEG30iCyABQf8BcUEISQ0AGiACQQBIBEBCACEKIAUgCUkEQCAIIAVBAnRqKAAAIghB/4H8B3FBCHggCEEYeEH/gfwHcXKtIQoLIAVBAWohBSAKIAtCIIaEIQsgAkEgaiECCyACIANBAXYiCCADIAhrIgMgCyADrSACrYYiCloiCBsiA2ciAkEYayIEQQAgAiAETxsiBGshAiADIAR0IQMgBkEBdCAIciEGIAsgCkIAIAgbfQshCyAFIAlNBEAgACACNgIYIAAgAzYCFCAAIAU2AhAgACALNwMIIAYPCyAAIAEQnggLkA0DC38EfgF7IAAoAgwiCiABaiIBIApPBEACQAJAAkACQCAAKAIEIgcgB0EBaiIFQQN2IgNBB2wiCSAHQQhJGyIEQQF2IAFJBEACfyAEQQFqIgQgASABIARJGyIBQQ9PBEAgAUH/////AUsNBkF/IAFBA3RBB25BAWtndkEBagwBC0EEIAFBCHFBCGogAUEESRsLIgGtQhR+Ig5CIIinDQQgDqdBB2pBeHEiAyABQQhqIghqIgQgA0kgBEH4////B0tyDQQgBBBuIgZFBEAgBBCxCgALIAMgBmohBiAIBEAgBkH/ASAI/AsACyABQQFrIgkgAUEDdkEHbCABQQlJGyELIAAoAgAhBAJAIApFBEBBACEKDAELIAQpAwBCf4VCgIGChIiQoMCAf4MhDiACKQMIIRAgAikDACERQQAhASAKIQIgBCEIA0AgDlAEQANAIAFBCGohASAIQQhqIggpAwBCgIGChIiQoMCAf4MiDkKAgYKEiJCgwIB/UQ0ACyAOQoCBgoSIkKDAgH+FIQ4LIAYgCSARIBAgBCAOeqdBA3YgAWoiDEFsbGoiA0EQaygCACADQQxrKAIAEKkEpyINcSIDaikAAEKAgYKEiJCgwIB/gyIPUARAQQghBQNAIAMgBWohAyAFQQhqIQUgBiADIAlxIgNqKQAAQoCBgoSIkKDAgH+DIg9QDQALCyAOQgF9IA6DIQ4gBiAPeqdBA3YgA2ogCXEiA2osAABBAE4EQCAGKQMAQoCBgoSIkKDAgH+DeqdBA3YhAwsgAyAGaiANQRl2IgU6AAAgBiADQQhrIAlxakEIaiAFOgAAIAYgA0F/c0EUbGoiAyAEIAxBf3NBFGxqIgUoABA2ABAgAyAF/QAAAP0LAAAgAkEBayICDQALCyAAIAk2AgQgACAGNgIAIAAgCyAKazYCCCAHRQ0BIAcgB0EUbEEbakF4cSIBakEJaiIARQ0BIAQgAWsiAUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAGpJDQMgAkEAIAQgAEEnaksbDQIgARCiAg8LIAAgBQR/IAAoAgAhBAJAAkAgAyAFQQdxQQBHaiIIQQJJBEAgCCEADAELIAhBAXEhACAIQf7///8DcSIGQQN0IQsgBiEDIAQhAQNAIAEgAf0AAwAiEv1NQQf9zQH9DAEBAQEBAQEBAQEBAQEBAQH9TiAS/Qx/f39/f39/f39/f39/f39//VD9zgH9CwMAIAFBEGohASADQQJrIgMNAAsgBiAIRg0BCyAEIAtqIQEDQCABIAEpAwAiDkJ/hUIHiEKBgoSIkKDAgAGDIA5C//79+/fv37//AIR8NwMAIAFBCGohASAAQQFrIgANAAsLAkAgBUEITwRAIAQgBWogBCkAADcAAAwBCyAFRQ0AIARBCGogBCAF/AoAAAsgAikDCCEPIAIpAwAhEEEAIQADQAJAIAQgACICaiIILQAAQYABRw0AIAQgAEF/c0EUbGohACAEIAJBbGxqIgFBDGshCyABQRBrIQwDQCAHIBAgDyAMKAIAIAsoAgAQqQSnIgZxIgMhASADIARqKQAAQoCBgoSIkKDAgH+DIg5QBEBBCCEFA0AgASAFaiEBIAVBCGohBSAEIAEgB3EiAWopAABCgIGChIiQoMCAf4MiDlANAAsLIAQgDnqnQQN2IAFqIAdxIgFqLAAAQQBOBEAgBCkDAEKAgYKEiJCgwIB/g3qnQQN2IQELAkAgASADayACIANrcyAHcUEITwRAIAEgBGoiAy0AACADIAZBGXYiAzoAACAEIAFBCGsgB3FqQQhqIAM6AAAgBCABQX9zQRRsaiEBQf8BRw0BIAhB/wE6AAAgBCAHIAJBCGtxakEIakH/AToAACABIAAoABA2ABAgASAA/QAAAP0LAAAMAwsgCCAGQRl2IgA6AAAgBCAHIAJBCGtxakEIaiAAOgAADAILIAAoAAAhAyAAIAEoAAA2AAAgASADNgAAIAEoAAQhAyABIAAoAAQ2AAQgACADNgAEIAAoAAghAyAAIAEoAAg2AAggASADNgAIIAEoAAwhAyABIAAoAAw2AAwgACADNgAMIAAoABAhAyAAIAEoABA2ABAgASADNgAQDAALAAsgAkEBaiEAIAIgB0cNAAsgByAJIAdBCEkbBUEACyAKazYCCAsPC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAsLQaDowwBBOUG86MMAEJMIAAvwDAIGfwN+IwBB0AFrIgQkAAJAAkACQAJAIAApAwBCAlENACAAKAKoASEBIABBADYCqAECQAJAAkACQCABQQFrDgIBAgALIARBMGohAwJAAkACQEElEG4iAQRAIAFBnbPGACkAADcAHSABQZCzxgD9AAAA/QsAECABQYCzxgD9AAAA/QsAAEEMEG4iAkUNASACQSU2AgggAiABNgIEIAJBJTYCAEEMEG4iAUUNAiABQSg6AAggAUG4s8YANgIEIAEgAjYCACADQQA2AhAgAyABrUIghkIDhDcDAAwDC0EBQSUQmgkAC0EMELEKAAtBDBCxCgALDAILIAQgACkDwAE3A0AgBCAA/QADsAH9CwMwDAELIAAoAqwBIgFBKGohAiABKAIkIQMgASgCICEFAkAgASkDGCIHQgJSBEAgBCABKQMQNwNAIAQgAf0AAwD9CwMwIAQgAv0AAwD9CwNYIAQgAv0AAxD9CwNoIAQgAv0AAyD9CwN4IAQgAf0AA1j9CwOIASAEIAEpA5gBNwPIASAEIAH9AANo/QsDmAEgBCAB/QADeP0LA6gBIAQgAf0AA4gB/QsDuAEgBCADNgJUIAQgBTYCUCAEIAc3A0ggBCAE/QADWP0LAyAgBCAE/QADOP0LAwAgBCAE/QADSP0LAxAgBCgCMCEFIAQoAjQhAyAEQYgBahC6BQwBCyAEIAL9AAMg/QsDICAEIAL9AAMQ/QsDECAEIAL9AAMA/QsDAAsgAwRAIAVBBGsoAgAiAkF4cSIGQQRBCCACQQNxIgIbIANqSQ0EIAJBACAGIANBJ2pLGw0FIAUQogILIAQgBEEYaiICKQMQNwNAIAQgAv0AAwD9CwMwIAFBBGsoAgAiAkF4cUG8AUHAASACQQNxIgMbSQ0DIANBACACQeABTxsNBCABEKICCwJAIAQoAkAiAQRAIAQpAzghBwNAIAdQDQIgASABKQMIIgggASgCBCICQv////8PIAggCEL/////D1obp2siA0EAIAIgA08bIgNCgMAAIAcgB0KAwABaG6ciBSADIAVJG60iCXw3AwggByAJfSEHIAIgCCACrSIJIAggCVQbp0cNAAsMAQsgBC0AMEEDRw0AIAQoAjQiASgCACECIAFBBGooAgAiAygCACIFBEAgAiAFEQMACyADKAIEIgMEQCACQQRrKAIAIgVBeHEiBkEEQQggBUEDcSIFGyADakkNBCAFQQAgBiADQSdqSxsNBSACEKICCyABQQRrKAIAIgJBeHEiA0EQQRQgAkEDcSICG0kNAyACQQAgA0E0TxsNBCABEKICCyAAKAIsIgEEQCAAKAIoIgJBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIAFqSQ0DIANBACAFIAFBJ2pLGw0EIAIQogILIAAoAjQiAQRAIAAoAjAiAkEEaygCACIDQXhxIgVBBEEIIANBA3EiAxsgAWpJDQMgA0EAIAUgAUEnaksbDQQgAhCiAgsCQCAAKAKMASIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUcNACAAKAKMARD6BQsCQCAAKAKQASIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUcNACAAKAKQARD6BQsgACgCPCIBBEAgACgCOCICQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyABakkNAyADQQAgBSABQSdqSxsNBCACEKICCyAALQBoQQJGDQEgACgCeCIBRQ0AIAAoAnwiAkEEaygCACIDQXhxIgUgAUEFdCIBQQRBCCADQQNxIgMbckkNAiADQQAgBSABQSdqSxsNAyACEKICCyAAKAKoAUECTwRAAkAgACgCrAEiACkDGEICUQRAIAAoAiQiAUUNASAAKAIgIgJBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIAFqSQ0EIANBACAFIAFBJ2pLGw0FIAIQogIMAQsgACgCBCIBBEAgACgCACICQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyABakkNBCADQQAgBSABQSdqSxsNBSACEKICCyAAQdgAahC6BQsgAEEEaygCACIBQXhxQbwBQcABIAFBA3EiAhtJDQIgAkEAIAFB4AFPGw0DIAAQogILIARB0AFqJAAPC0HomccAQfkAQaSaxwAQkwgAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuYDAIJfwF9IwBBgAFrIggkAAJ/AkAgACgCCCIGIAFLBEAgACgCBCABQRhsaiIGLQATIgUgBi0AEiIHIAYtABEiCSAHIAlLGyIHIAUgB0sbIgUEfUMAAEDBIAAqAkQgAC0AWEECRiIHGyIOQwAAEEEgACoCSCAHGyAOk0MAAH5DlSAFQQFrQf8BcbOUkhCIBCIOIA6SBUMAAAAACyEOIAZBDGovAQAiBUH//wFxRQRAIAVBEHQMAwsgBUH/B3EhBiAFQYCAAnEhByAFQYD4AXEiBUGA+AFGBEAgB0EQdCIFQYCAgPwHciAGRQ0DGiAFIAZBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2ogB3IMAgsgASAGQcjLxgAQ8AcACyAGIAZnQRBrIgZB//8DcUEIanRB////A3EgB0GAgIDYA3IgBkEXdGtyCyEGAkACQAJAIA4gBr4iDkMAAIA/XgR9IA4Q4AVDVPgtQJRDAACAP5KRBUMAAIA/C5QgA11FBEAgCCAAKAIQIgcgACgCFCIJIAEQ8gICQCAIKAIkIgVBCU8EQCAIKAIEIgYNASAIKAIIIgBBBGsoAgAiAUF4cSICIAVBAnQiBEEEQQggAUEDcSIBG2pJDQQgAUEAIAIgBEEnaksbDQUgABCiAgwDCyAFIgZFDQILIAhBKGogAigCCCIKIAYgCmoQqAMgByAJIAEgCCgCMCAIQSxqIAgoAkwiAUEISyIGGyAIKAIsIAEgBhsQ5AICQCAIQQRqIgwgCEEkaiAFQQhLIgEbKAIAIgdBAkkNACAIKAIIIAwgARshASAHQRVPBEAgASAHEOIFDAELIAFBBGohBQJAIAdBAXEEQCAFIQkgASEFDAELIAEoAgQiCSABKAIAIgpJBEBBACEGAn8DQCABIAZqQQRqIAo2AgAgASAGRQ0BGiAJIAZBBGsiBiABaiILKAIAIgpJDQALIAtBBGoLIAk2AgALIAFBCGohCQsgB0ECRg0AIAEgB0ECdGohDSAJQQRqIQoDQCAJKAIAIgsgBSgCACIHSQRAIAkhBgJ/A0AgBiAHNgIAIAEgASAFRg0BGiAFIQYgCyAFQQRrIgUoAgAiB0kNAAsgBUEEagsgCzYCAAsgCSgCBCILIAkoAgAiBUkEQCAKIQcDQAJAIAcgBTYCACABIAdBBGsiBkYEQCABIQYMAQsgB0EIayEFIAYhByALIAUoAgAiBUkNAQsLIAYgCzYCAAsgCUEEaiEFIApBCGohCiAJQQhqIgkgDUcNAAsLIAgoAgQgCCgCJCIFIAVBCEsiARsiBgRAIAgoAgggDCABGyEBIAZBAnQhBiACKAIIIgdBAnQhBQNAIAEoAgAhCSACKAIAIAdGBEAgAhChBwsgAUEEaiEBIAIoAgQgBWogCTYCACACIAdBAWoiBzYCCCAFQQRqIQUgBkEEayIGDQALIAgoAiQhBQsgCCgCBCEHIAggCCgCIDYCcCAIIAgpAhg3AmggCCAI/QACCP0LAlggCCAHIAUgBUEISyIBGyIGNgJ8IAggBUEAIAEbNgJ0IAhBACAHIAEbNgJUAkACQCAGBEAgAUUEQCAIQdQAaiEBQQAhBwNAIAggB0EBaiIHNgJ4IAAgASgCACACIAMgBBDNASABQQRqIQEgBSAHRw0ACwwDCyAIKAJYIgYhAQNAIAAgASgCACACIAMgBBDNASABQQRqIQEgB0EBayIHDQALDAELIAVBCUkNASAIKAJYIQYLIAZBBGsoAgAiAEF4cSIBIAVBAnQiAkEEQQggAEEDcSIAG2pJDQMgAEEAIAEgAkEnaksbDQQgBhCiAgsgCCgCTCIAQQlJDQEgCCgCMCIBQQRrKAIAIgJBeHEiBCAAQQJ0IgBBBEEIIAJBA3EiAhtqSQ0CIAJBACAEIABBJ2pLGw0DIAEQogIMAQsgBCgCCCIAIAQoAgBGBEAgBBChBwsgBCgCBCAAQQJ0aiABNgIAIAQgAEEBajYCCAsgCEGAAWokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC8kLAQ5/IwBBIGsiBSQAAkACQAJAAkACQAJAAkACQAJAAkAgASgCKEECRwRAIAEoAtgBQRxsIQIgASgC1AEhAwJAA0AgAyEEIAJFDQFB2dzGAEEVIANBFGooAgAiCSADQRhqKAIAIgYQwgNFBEAgAkEcayECIANBHGohA0Hu3MYAQRUgCSAGEMIDRQ0BCwtBASEIAkAgBCgCGCIKRQ0AIAQoAhQhASAKEG4iCEUNAyAKRQ0AIAggASAK/AoAAAsgBCgCAEEBRgRAAkAgBCgCDCICRQRAQQAhAkEBIQEMAQsgBCgCCCEDIAIQbiIBRQ0LIAJFDQAgASADIAL8CgAACyACIQQMBgsCQCAEKAIMIgNFBEBBACEDQQEhBwwBCyAEKAIIIQEgAxBuIgdFDQQgA0UNACAHIAEgA/wKAAALIAVBEGogByADQYCAgAEQ3gEgBSgCFCELAkAgBSgCEEEBRgRAIAVBHjoAACALQYCAgIB4Rw0BIAVBAzoAASAAIAUQkQQMCAsgBSgCHCEMIAUoAhghCUEAIQQgBUEANgIYIAVCgICAgBA3AhBBASEBQQAhAiAMBEAgBUEQakEAIAwQ4gYgBSgCGCECIAkhBgNAIAIhAUEBQQIgBiwAACIEQQBOIg0bIg4gBSgCECACa0sEfyAFQRBqIAIgDhDiBiAFKAIYBSABCyAFKAIUIgFqIg8gDQR/IAQFIA8gBEG/AXE6AAEgBEHAAXFBBnZBQHILOgAAIAUgAiAOaiICNgIYIAZBAWohBiAMQQFrIgwNAAsgBSgCECEECyADBEAgB0EEaygCACIGQXhxIg1BBEEIIAZBA3EiBhsgA2pJDQwgBkEAIA0gA0EnaksbDQ0gBxCiAgsgC0UNBiAJQQRrKAIAIgNBeHEiBkEEQQggA0EDcSIDGyALakkNCyADQQAgBiALQSdqSxsNDCAJEKICDAYLIAVBBDoAASALBEAgBSgCGCICQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyALakkNCyABQQAgBCALQSdqSxsNDCACEKICCyAAIAUQkQQMBgsgASgCzAFBGGwhAiABKALIASEDAkADQCADIQEgAkUNAUHZ3MYAQRUgA0EEaigCACIGIANBCGooAgAiBBDCA0UEQCACQRhrIQIgA0EYaiEDQe7cxgBBFSAGIAQQwgNFDQELC0EBIQhBASEEAkAgASgCCCICRQ0AIAEoAgQhAyACEG4iBEUNCiACRQ0AIAQgAyAC/AoAAAsCQCABKAIUIgNFDQAgASgCECEBIAMQbiIIRQ0FIANFDQAgCCABIAP8CgAACyAAIAM2AgwgACAINgIIIAAgAzYCBCAAQQY2AgAgAkUNCCAEQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyACakkNCiAAQQAgASACQSdqSxsNCyAEEKICDAgLIABChoCAgICAgICAfzcDAAwHC0HYr8YAEJkKAAtBASAKEJoJAAtBASADEJoJAAtBASADEJoJAAsgBUEoOgAAAkAgAkUEQEEBIQMMAQsgAhBuIgdFDQQgAkUiBkUEQCAHIAEgAvwKAAALIAJBAEgNAiACEG4iA0UNBCAGRQRAIAMgByAC/AoAAAsgB0EEaygCACIGQXhxIglBBEEIIAZBA3EiBhsgAmpJDQUgBkEAIAkgAkEnaksbDQYgBxCiAgsgACACNgIMIAAgAzYCCCAAIAI2AgQgAEEGNgIAIAEhByAEIQMLIAoEQCAIQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyAKakkNBCAAQQAgASAKQSdqSxsNBSAIEKICCyADRQ0BIAdBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAcQogIMAQsQmAoACyAFQSBqJAAPC0EBIAIQmgkAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAvVDgIGfwF9IwBBkARrIgYkACAGIAQ2AgQgBiADNgIAIAZB5AFqIAUQtgEgBigC5AEhBQJAAkACQAJAAkACQAJAAkACQCAGLQCAAiIIQQJGBEAgAEGAgICAeDYCACAAIAU2AgQgA0UgBEGECElyRQRAIAQQvgcLIAJBhAhJDQEgAhC+BwwBCyAGIAYpAvgBNwIcIAYgBv0AAugB/QsCDCAGIAYvAIECOwAlIAYgBi0AgwI6ACcgBiAIOgAkIAYgBTYCCCAGQeQBaiACIAEgBkEEakEAIANBAXEbIAZBCGoQzQICQAJAAkAgBigC5AFBAkYEQCAGKALoASEBIAZBADYCiAQgBkKAgICAEDcCgAQgBkHYmcEANgKkAyAGQqCAgIAGNwKoAyAGIAZBgARqNgKgAyABIAZBoANqEIoFDQwgBigCgAQhAiAGKAKEBCIFIAYoAogEEK8JIQggAgRAIAVBBGsoAgAiB0F4cSIJQQRBCCAHQQNxIgcbIAJqSQ0GIAdBACAJIAJBJ2pLGw0HIAUQogILIABBgICAgHg2AgAgACAINgIEIAEgASgCACgCABEDAAwBCyAGQShqIAZB5AFqIgJBvAH8CgAAIAZCgICAgCA3ApQCIAZCAjcCjAIgBkIANwKEAiAGQoCAgIAgNwL8ASAGQgQ3AvQBIAZCADcC7AEgBkKAgICAwAA3AuQBIAZCADcCnAIgBigCzAEhBSAGKALQASEBIAYgBigCWDoAiAQgBiABNgKEBCAGIAU2AoAEIAIgBkGABGoQ/AEgBkEANgLYAyAGQoCAgIDAADcC0AMgBkEANgLkAyAGQoCAgIDAADcC3AMgBkEANgLwAyAGQoCAgIDAADcC6AMgBkEANgL8AyAGQoCAgIDAADcC9AMgBkEANgKIBCAGQoCAgIDAADcCgAQgBQRAIAZB0ANqQQBBgIAEIAUgBUGAgARPGyIBQQNsIgJBBEEEENYGIAYoAtgDIQQgBigC1AMhACABQQxsQQRrIgNFIglFBEAgACAEQQJ0akEAIAP8CwALIAAgAiAEakECdGpBBGtBADYCACAGQdwDakEAIAFBBEEEENYGIAYoAuADIgsgBigC5AMiB0ECdGohCAJAIAVBAUYEQCAHQQFqIQVBBCEEDAELIAFBAnQiBEEEayIFBEAgCEEAIAX8CwALIAsgASAHaiIFQQJ0akEEayEICyAIQQA2AgAgBkHoA2pBACACQQRBBBDWBiAGKALwAyEHIAYoAuwDIQggCUUEQCAIIAdBAnRqQQAgA/wLAAsgCCACIAdqQQJ0akEEa0EANgIAIAZB9ANqQQAgAkEEQQQQ1gYgBigC/AMhCiAGKAL4AyEHIAlFBEAgByAKQQJ0akEAIAP8CwALIAcgAiAKakECdGpBBGtBADYCACAGQYAEakEAIARBBEEEENYGIAYoAogEIQMgBigChAQhCSABQQR0QQRrIgoEQCAJIANBAnRqQQAgCvwLAAsgCSADIARqQQJ0akEEa0EANgIAIAZBKGoiAyABIAAgAhCuBSABIAVLDQdBACEAIANBACABEOEDQwAAAEBDAACAPyAGLQDEARshDCABQQJ0IQQgBigCiAEhAyAGKAKMASEFA0AgAEEDaiAFTw0JIAAgBEYNCiAAIAtqIAwgAy0AA7NDAAB/Q5WUOAIAIANBEGohAyAEIABBBGoiAEcNAAsgBkEoaiIAIAEgCCACEIQFIAAgASAHIAIQtQRBACABQQBBnPjBABCgBQALIAYgBkHwAWoiAf0AAgD9CwOgAyAGIAH9AAIQ/QsDsAMgBiAB/QACIP0LA8ADIAYoAugBIQEgBigC5AEiCEGAgICAeEcNASAGQQA2AogEIAZCgICAgBA3AoAEIAZB2JnBADYC6AEgBkKggICABjcC7AEgBiAGQYAEajYC5AEgASAGQeQBahCKBQ0LIAYoAoAEIQIgBigChAQiBSAGKAKIBBCvCSEIIAIEQCAFQQRrKAIAIgdBeHEiCUEEQQggB0EDcSIHGyACakkNCiAHQQAgCSACQSdqSxsNCyAFEKICCyAAQYCAgIB4NgIAIAAgCDYCBCABIAEoAgAoAgARAwAgBkEoahDIAgsgA0UNAiAEQYQITw0BDAILIAYoAuwBIQIgBigCoAIhBSAAIAb9AAPAA/0LAiwgACAG/QADsAP9CwIcIAAgBv0AA6AD/QsCDCAAIAU2AkQgACACNgJAIAAgBTYCPCAAIAI2AgggACABNgIEIAAgCDYCACAGQShqEMgCIANFIARBhAhJcg0BCyAEEL4HCyAGQZAEaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQAgASAFQaz4wQAQoAUACyAAIABBBGogBUGQ0MEAEKAFAAsgASABQYDQwQAQ8AcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtBzLLFAEE3IAZBjwRqQfCZwQBBhLPFABDCBwALsBADB38BfgF7IwBBMGsiAyQAAkACQCAAKAIAIgZFBEAgACgCECIARQ0BIABBqbjFAEEBEK4DIQQMAgsgACAAKAIMQQFqIgQ2AgwCQAJAAkACQAJAAkACQAJAIARB9QNPBEAgACgCECIBRQ0BIAFB18fEAEEZEK4DRQ0BDAgLAkACQAJAAkAgACgCCCICIAAoAgQiCE8EQCAAKAIQIgFFDQEgAUHHx8QAQRAQrgMNDAwBC0EBIQQgACACQQFqIgc2AggCQAJAAkACQAJAAkAgAiAGai0AACIFQckAaw4GAgEBAQgFAAsCQCAFQcIAaw4CAwQACyAFQdgAaw4CBwsACyAAKAIQIgFFDQQgAUHHx8QAQRAQrgNFDQQMEQsgACABENABDRAgAQ0GDAwLIwBBIGsiAiQAAkACQCAAKAIARQRAIAAoAhAiAUUNASABQam4xQBBARCuAyEBDAILIAIgABDXBiACKAIARQRAIAAoAhAiBQRAQQEhASAFQdfHxABBx8fEACACLQAEQQFxIgUbQRlBECAFGxCuAw0DCyAAIAL9AAIA/QsCAAwBCyAAKAIQRQ0AIAD9AAIAIQogACAC/QACAP0LAgAgAiAK/QsDECAAIAFBAXEQ0AEhASAAIAL9AAMQ/QsCAAwBC0EAIQELIAJBIGokACABRQ0MDA8LIANBIGogAEHzABDSBiADLQAgQQFGBEAgAy0AISEBIAAoAhAiAgRAIAJB18fEAEHHx8QAIAFBAXEiAhtBGUEQIAIbEK4DDRALIAAgAToABAwKCyAAKAIARQRAIAAoAhAiAEUNDiAAQam4xQBBARCuAyEEDA8LIAMpAyghCSADQSBqIAAQ/AIgAygCIEUEQCADLQAkIQEgACgCECICBEAgAkHXx8QAQcfHxAAgAUEBcSICG0EZQRAgAhsQrgMNEAsgACABOgAEDAoLIAMgA/0AAiD9CwMAIAAoAhAiAUUNCyADIAEQhwINDCAAKAIQIgFFIAlQcg0LIAEoAghBgICABHENCyABKAIAQfzKxABBASABKAIEKAIMEQAADQ4gACgCECMAQRBrIgIkAEERIQEDQCABIAJqQQJrIAmnQQ9xLQDoyEQ6AAAgAUEBayEBIAlCBIgiCUIAUg0AC0EBQcLLxABBAiABIAJqQQFrQREgAWsQ3wMgAkEQaiQADQ4gACgCECIBKAIAQf3KxABBASABKAIEKAIMEQAADQ4MCwsgByAISQRAIAAgAkECajYCCCAGIAdqLQAAIgJBwQBrQf8BcUEaSQ0CIAJB4QBrQYCAxAAhAkH/AXFBGkkNAgsgACgCECIBRQ0AIAFBx8fEAEEQEK4DDQsLQQAhBCAAQQA6AAQgAEEANgIADAwLQQEhBCAAIAEQ0AENCwJAIAAoAgANACAAKAIQIgFFDQsgAUH+ysQAQQIQrgMNDCAAKAIADQBBACEEIAAoAhAiAEUNDCAAQam4xQBBARCuAyEEDAwLIANBIGogAEHzABDSBiADLQAgQQFGBEAgAy0AISEBIAAoAhAiAgRAIAJB18fEAEHHx8QAIAFBAXEiAhtBGUEQIAIbEK4DDQ0LIAAgAToABAwHCyAAKAIARQRAIAAoAhAiAEUNCyAAQam4xQBBARCuAyEEDAwLIAMpAyghCSADQSBqIAAQ/AIgAygCIEUEQCADLQAkIQEgACgCECICBEAgAkHXx8QAQcfHxAAgAUEBcSICG0EZQRAgAhsQrgMNDQsgACABOgAEDAcLIAMgA/0AAiD9CwMQAkACQAJAIAJBgIDEAEcEQCAAKAIQIgEEQCABQYDLxABBAxCuAw0OCyACQcMARg0BIAJB0wBGDQIgAyACNgIgIAAoAhAiAUUNAyADQSBqIAEQxwUNDQwDCyADKAIUIAMoAhxyRQ0LIAAoAhAiAUUNCyABQf7KxABBAhCuAw0OIAAoAhAiAUUNCyADQRBqIAEQhwJFDQsMDgsgACgCECIBRQ0BIAFBg8vEAEEHEK4DDQsMAQsgACgCECIBRQ0AIAFBisvEAEEEEK4DDQoLIAAoAhAhAiADKAIUIAMoAhxyRQ0FIAJFDQggAkGOy8QAQQEQrgMNCyAAKAIQIgFFDQggA0EQaiABEIcCDQsgACgCECECDAULIANBIGogAEHzABDSBiADLQAgQQFHDQIgAy0AISEBIAAoAhAiAgRAIAJB18fEAEHHx8QAIAFBAXEiAhtBGUEQIAIbEK4DDQsLIAAgAToABAwFCyAAKAIQIgFFDQUgAUH+ysQAQQIQrgNFDQUMCQsgAEEBOgAEDAMLIwBBEGsiASQAIAAoAhAhAiAAQQA2AhAgAEEAENABBEBBgMjEAEE9IAFBD2pB8MfEAEHAyMQAEMIHAAsgACACNgIQIAFBEGokAAsgACgCECIBBEAgAUGQy8QAQQEQrgMNBwsgABCDAg0EIAVBzQBHBEAgACgCECIBBEAgAUGRy8QAQQQQrgMNBgsgAEEAENABDQcLIAAoAhAiAUUNAyABQZXLxABBARCuA0UNAwwGCyACRQ0CIAJBj8vEAEEBEK4DDQUgACgCECEBIAMgCTcDICABRQ0CIANBIGogARCoBQ0FIAAoAhAiAUUNAiABQfHJxABBARCuA0UNAgwFC0EAIQQgAEEANgIADAQLIAAoAhAiAQRAIAFBkMvEAEEBEK4DDQQLIAAQiwUNAyAAKAIQIgFFDQAgAUGVy8QAQQEQrgMNAwtBACEEIAAoAgBFDQIgACAAKAIMQQFrNgIMDAILQQEhBAwBC0EAIQQLIANBMGokACAEC4kMAQZ/IAFBA2wiBCAAKAKgBCICSwRAIAQgAmsiBSAAKAKYBCACa0sEQCAAQZgEaiACIAVBBEEEENYGIAAoAqAEIQILIAAoApwEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKgBAsgACgCrAQiAiABSQRAIAEgAmsiBSAAKAKkBCACa0sEQCAAQaQEaiACIAVBBEEEENYGIAAoAqwEIQILIAAoAqgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKsBAsgACgCuAQiAiAESQRAIAQgAmsiBSAAKAKwBCACa0sEQCAAQbAEaiACIAVBBEEEENYGIAAoArgEIQILIAAoArQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK4BAsgACgCxAQiAiAESQRAIAQgAmsiAyAAKAK8BCACa0sEQCAAQbwEaiACIANBBEEEENYGIAAoAsQEIQILIAAoAsAEIgUgAkECdGohBCADQQJPBH8gA0ECdEEEayIGBEAgBEEAIAb8CwALIAIgA2oiA0EBayECIAUgA0ECdGpBBGsFIAQLQQA2AgAgACACQQFqNgLEBAsgAUECdCICIAAoAtAEIgNLBEAgAiADayICIAAoAsgEIANrSwRAIABByARqIAMgAkEEQQQQ1gYgACgC0AQhAwsgACgCzAQiBSADQQJ0aiEEIAJBAk8EfyACQQJ0QQRrIgYEQCAEQQAgBvwLAAsgAiADaiICQQFrIQMgBSACQQJ0akEEawUgBAtBADYCACAAIANBAWo2AtAECyAAKAKABSIDIAFJBEAgASADayICIAAoAvgEIANrSwRAIABB+ARqIAMgAkEEQQQQ1gYgACgCgAUhAwsgACgC/AQiBSADQQJ0aiEEIAJBAk8EfyACQQJ0QQRrIgYEQCAEQQAgBvwLAAsgAiADaiICQQFrIQMgBSACQQJ0akEEawUgBAtBADYCACAAIANBAWo2AoAFCyAAKAKMBSIDIAFJBEAgASADayICIAAoAoQFIANrSwRAIABBhAVqIAMgAkEEQQQQ1gYgACgCjAUhAwsgACgCiAUiBSADQQJ0aiEEIAJBAk8EfyACQQJ0QQRrIgYEQCAEQQAgBvwLAAsgAiADaiICQQFrIQMgBSACQQJ0akEEawUgBAtBADYCACAAIANBAWo2AowFCwJAAkAgACgClAQiA0UNACABQQlsIgQgACgC3AQiAksEQCAEIAJrIgMgACgC1AQgAmtLBEAgAEHUBGogAiADQQRBBBDWBiAAKALcBCECCyAAKALYBCIFIAJBAnRqIQQgA0ECTwR/IANBAnRBBGsiBgRAIARBACAG/AsACyACIANqIgNBAWshAiAFIANBAnRqQQRrBSAEC0EANgIAIAAgAkEBajYC3AQgACgClAQhAwsgA0EBTQ0AIAFBD2wiBCAAKALoBCICSwR/IAQgAmsiAyAAKALgBCACa0sEQCAAQeAEaiACIANBBEEEENYGIAAoAugEIQILIAAoAuQEIgUgAkECdGohBCADQQJPBH8gA0ECdEEEayIGBEAgBEEAIAb8CwALIAIgA2oiA0EBayECIAUgA0ECdGpBBGsFIAQLQQA2AgAgACACQQFqNgLoBCAAKAKUBAUgAwtBAk0NACABQRVsIgIgACgC9AQiAUsNAQsPCyACIAFrIgMgACgC7AQgAWtLBEAgAEHsBGogASADQQRBBBDWBiAAKAL0BCEBCyAAKALwBCIEIAFBAnRqIQIgA0ECTwR/IANBAnRBBGsiBQRAIAJBACAF/AsACyABIANqIgJBAWshASAEIAJBAnRqQQRrBSACC0EANgIAIAAgAUEBajYC9AQL0QwDDH8EfgF7IAAoAgwiCkEBaiICBEACQAJAAkACQCAAKAIEIgcgB0EBaiIIQQN2IgNBB2wiCSAHQQhJGyIEQQF2IAJJBEACfyAEQQFqIgMgAiACIANJGyICQQ9PBEAgAkH/////AUsNBkF/IAJBA3RBB25BAWtndkEBagwBC0EEIAJBCHFBCGogAkEESRsLIgKtQhh+Ig5CIIinDQQgDqciBCACQQhqIgVqIgMgBEkgA0H4////B0tyDQQgAxBuIgZFBEAgAxCxCgALIAQgBmohBiAFBEAgBkH/ASAF/AsACyACQQFrIgggAkEDdkEHbCACQQlJGyELIAAoAgAhAgJAIApFBEBBACEKDAELIAIpAwBCf4VCgIGChIiQoMCAf4MhDiABKQMIIRAgASkDACERQQAhAyAKIQEgAiEFA0AgDlAEQANAIANBCGohAyAFQQhqIgUpAwBCgIGChIiQoMCAf4MiDkKAgYKEiJCgwIB/UQ0ACyAOQoCBgoSIkKDAgH+FIQ4LIAYgCCARIBAgAiAOeqdBA3YgA2oiDEFobGpBGGsQigSnIg1xIgRqKQAAQoCBgoSIkKDAgH+DIg9QBEBBCCEJA0AgBCAJaiEEIAlBCGohCSAGIAQgCHEiBGopAABCgIGChIiQoMCAf4MiD1ANAAsLIA5CAX0gDoMhDiAGIA96p0EDdiAEaiAIcSIEaiwAAEEATgRAIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEECyAEIAZqIA1BGXYiCToAACAGIARBCGsgCHFqQQhqIAk6AAAgBiAEQX9zQRhsaiIEIAIgDEF/c0EYbGoiCSkAEDcAECAEIAn9AAAA/QsAACABQQFrIgENAAsLIAAgCDYCBCAAIAY2AgAgACALIAprNgIIIAdFDQEgByAHQRhsQR9qQXhxIgFqQQlqIgBFDQEgAiABayIBQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAAakkNAyACQQAgAyAAQSdqSxsNAiABEKICDwsgACAIBH8gACgCACECAkACQCADIAhBB3FBAEdqIgVBAkkEQCAFIQAMAQsgBUEBcSEAIAVB/v///wNxIgZBA3QhCyAGIQQgAiEDA0AgAyAD/QADACIS/U1BB/3NAf0MAQEBAQEBAQEBAQEBAQEBAf1OIBL9DH9/f39/f39/f39/f39/f3/9UP3OAf0LAwAgA0EQaiEDIARBAmsiBA0ACyAFIAZGDQELIAIgC2ohAwNAIAMgAykDACIOQn+FQgeIQoGChIiQoMCAAYMgDkL//v379+/fv/8AhHw3AwAgA0EIaiEDIABBAWsiAA0ACwsCQCAIQQhPBEAgAiAIaiACKQAANwAADAELIAhFDQAgAkEIaiACIAj8CgAACyABKQMIIQ8gASkDACEQQQAhAANAAkAgAiAAIgNqIgYtAABBgAFHDQAgAiAAQX9zQRhsaiEAIAIgA0FobGpBGGshCwNAIAcgECAPIAsQigSnIghxIgQhASACIARqKQAAQoCBgoSIkKDAgH+DIg5QBEBBCCEFA0AgASAFaiEBIAVBCGohBSACIAEgB3EiAWopAABCgIGChIiQoMCAf4MiDlANAAsLIAIgDnqnQQN2IAFqIAdxIgFqLAAAQQBOBEAgAikDAEKAgYKEiJCgwIB/g3qnQQN2IQELAkAgASAEayADIARrcyAHcUEITwRAIAEgAmoiBC0AACAEIAhBGXYiBDoAACACIAFBCGsgB3FqQQhqIAQ6AAAgAiABQX9zQRhsaiEBQf8BRw0BIAZB/wE6AAAgAiAHIANBCGtxakEIakH/AToAACABIAApABA3ABAgASAA/QAAAP0LAAAMAwsgBiAIQRl2IgA6AAAgAiAHIANBCGtxakEIaiAAOgAADAILIAApAAAhDiAAIAEpAAA3AAAgASAONwAAIAEpAAghDiABIAApAAg3AAggACAONwAIIAAoABAhBCAAIAEoABA2ABAgASgAFCEFIAEgACgAFDYAFCAAIAU2ABQgASAENgAQDAALAAsgA0EBaiEAIAMgB0cNAAsgByAJIAdBCEkbBUEACyAKazYCCAsPC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAsLQaDowwBBOUG86MMAEJMIAAvCDAIVfwF7IAFB5NEAaiERIAFBgARqIRIgAUGAzwBqIRMgAUGg0QBqIRQgAUGANmohFSABQe3RAGohFiMAQfAAayIJQTBqIRcgAS0A61EhAwNAAkBBoAIhBCATIQ8CQAJAAkACQAJAIANB/wFxIgUOAwEAAgMLQSAhBCAUIQ8LIAn9DAAAAAAAAAAAAAAAAAAAAAAiGP0LAxggCSAY/QsDCEEAIQYgCUEsakEAQcQA/AsAIAEgBUGAGWwiA2ohByADIBJqIQwDQCAGIAdqIgNBsARq/QweAx4DHgMeAx4DHgMeAx4DIhj9CwIAIANBoARqIBj9CwIAIANBkARqIBj9CwIAIANBgARqIBj9CwIAIAZBQGsiBkGAEEcNAAsgDEGAEGpBAEGACfwLAAwCCyAJ/QwAAAAAAAAAAAAAAAAAAAAAIhj9CwMYIAkgGP0LAwhBACEGIAlBLGpBAEHEAPwLAANAIAEgBmoiA0GwNmr9DB4DHgMeAx4DHgMeAx4DHgMiGP0LAgAgA0GgNmogGP0LAgAgA0GQNmogGP0LAgAgA0GANmogGP0LAgAgBkFAayIGQYAQRw0AC0ETIQQgFiEPIBUhDAwBC0EDIQMMAQtBHCEHIBEgBUEBdGovAQAiECAESwRAQQMhAwwBCyAPIQMCQCAQIgZFDQADQCADLQAAIgRBD00EQCAJQQhqIARBAXRqIgQgBC8BAEEBajsBACADQQFqIQMgBkEBayIGDQEMAgsLQQMhAwwBC0EAIQNBACEGQQAhC0EAIQQDQAJAAkAgBkEBcQRAIANBD00NAQwCCyADIAMgA0EQRyIGaiIKIAMgCksbIgNBD0sNAQNAIAZBAXENAUEBIQYgA0EBaiIDQRBHDQALDAELQQEhBiAXIANBAnRqIAsgCUEIaiADQQF0ai8BACIKakEBdCILNgIAIAQgCmohBCADQQFqIQMMAQsLIAtBgIAERwRAQQEhAyAFQQJGIARB//8DcUEBS3INAQsgDEGAEGohDUEAIQtB//8DIQcDQCALIBBJBEADQCALIgpBAWohCwJAIAogD2otAABBD3EiCEUNACAJQSxqIAhBAnRqIgMgAygCACIDQQFqNgIAAn8gA0F/QSAgCGt2cSIDQYAETwRAIANBCHQgA0GA/gNxQQh2ciIDQQR2QY8ecSADQY8ecUEEdHIiA0ECdkGz5gBxIANBs+YAcUECdHIiA0EBdkHVqgFxIANB1aoBcUEBdHIMAQsgA0EBdC8BxKREC0H//wNxQRAgCGt2IQYgCEELSQRAIAZB/wdLDQEgCEEJdCAKciEFQQEgCHQiBEEBdCEKIAwgBkEBdGohAwNAIAMgBTsBACADIApqIQMgBCAGaiIGQYAISQ0ACwwBCyAMIAZB/wdxQQF0aiIDLwEAIgRBngZHBH8gBwUgAyAHOwEAIAciBEECawshAwJAIAhBC0YEQCAGQQl2IQ4MAQtBCiEHIAZBCnYiDkEBcSAEQX9zakH//wNxIgVBvwRLBEBBAyEDDAYLIA0gBUEBdGoiBS8BACIEBH8gAwUgBSADOwEAIAMhBCADQQJrCyEFIAhBDUkEQCAFIQMMAQsgBkELdiIOQQFxIARBf3NqQf//A3EiA0G/BEsEQEEDIQMMBgsgDSADQQF0aiIDLwEAIgQEfyAFBSADIAU7AQAgBSEEIAVBAmsLIQMgCEENRg0AIAZBDHYiDkEBcSAEQX9zakH//wNxIgVBvwRLBEBBAyEDDAYLIA0gBUEBdGoiBS8BACIEBH8gAwUgBSADOwEAIAMhBCADQQJrCyEFIAhBD0cEQCAFIQMMAQsgBkENdiIOQQFxIARBf3NqQf//A3EiA0G/BEsEQEEDIQMMBgsgDSADQQF0aiIDLwEAIgQEQCAFIQMMAQsgAyAFOwEAIAVBAmshAyAFIQQLIA5BAXZBAXEgBEF/c2pB//8DcSIFQb8ESwRAQQohB0EDIQMMBQsgDSAFQQF0aiAKOwEAIAMhBwwDCyALIBBHDQALCwsCQAJAAkAgAS0A61EiAw4DAQIAAgsgAkEANgIMQQEhA0EKIQcMAgsgAkEANgIMQQEhA0EMIQcMAQsgASADQQFrIgM6AOtRDAELCyAAIAc6AAEgACADOgAAC9gQAQV/IwBBEGsiAyQAEPsJIgVBqLrBAEEJEK8JIgEgACgCoAG4EPAJIgIQ/AkCQAJAAkACQAJAAkACQAJAAkACQAJAQZDEyAAtAABFBEBBlMTIAEEANgIAQZDEyABBADoAACACQYQITwRAIAIQvgcLIAFBhAhPBEAgARC+BwsgBUGxusEAQQkQrwkiASAAKAKkAbgQ8AkiAhD8CUGQxMgALQAADQFBlMTIAEEANgIAQZDEyABBADoAACACQYQITwRAIAIQvgcLIAFBhAhPBEAgARC+BwsgBUG6usEAQQsQrwkiASAAKAKoAbgQ8AkiAhD8CUGQxMgALQAADQJBlMTIAEEANgIAQZDEyABBADoAACACQYQITwRAIAIQvgcLIAFBhAhPBEAgARC+BwsgBUHQvsEAQQYQrwkiASAAKAKsARD8CUGQxMgALQAADQNBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLAkAgACgCAEEBRw0AIAVB9InBAEEDEK8JIgEgACgCBBCWCiICEPwJQZDEyAAtAAANBUGUxMgAQQA2AgBBkMTIAEEAOgAAIAJBhAhPBEAgAhC+BwsgAUGECEkNACABEL4HCwJAIAAoAghFDQAgBUH3icEAQQMQrwkiASAAKAIMEJYKIgIQ/AlBkMTIAC0AAA0GQZTEyABBADYCAEGQxMgAQQA6AAAgAkGECE8EQCACEL4HCyABQYQISQ0AIAEQvgcLAkAgACgCEEUNACAFQfqJwQBBAxCvCSIBIAAoAhQQlgoiAhD8CUGQxMgALQAADQdBlMTIAEEANgIAQZDEyABBADoAACACQYQITwRAIAIQvgcLIAFBhAhJDQAgARC+BwsCQCAAKAIYRQ0AIAVB4LrBAEEIEK8JIgEgACgCHBCWCiICEPwJQZDEyAAtAAANCEGUxMgAQQA2AgBBkMTIAEEAOgAAIAJBhAhPBEAgAhC+BwsgAUGECEkNACABEL4HCwJAIAAoAiBFDQAgBUHousEAQQgQrwkiASAAKAIkEJYKIgIQ/AlBkMTIAC0AAA0JQZTEyABBADYCAEGQxMgAQQA6AAAgAkGECE8EQCACEL4HCyABQYQISQ0AIAEQvgcLAkAgACgCKEUNACAFQfC6wQBBCBCvCSIBIAAoAiwQlgoiAhD8CUGQxMgALQAADQpBlMTIAEEANgIAQZDEyABBADoAACACQYQITwRAIAIQvgcLIAFBhAhJDQAgARC+BwsCQCAAKAIwRQ0AIAVBvKnGAEEHEK8JIgEgACgCNBCWCiICEPwJQZDEyAAtAAANC0GUxMgAQQA2AgBBkMTIAEEAOgAAIAJBhAhPBEAgAhC+BwsgAUGECEkNACABEL4HC0HfqcYAQQ0QrwkhAhD7CSEBIAAqAoABuxDwCSEEIAFBvK3GAEEGENgDIAQQmQkgACoChAG7EPAJIQQgAUHCrcYAQQYQ2AMgBBCZCSAAKgKIAbsQ8AkhBCABQcitxgBBChDYAyAEEJkJIAAqAowBuxDwCSEEIAFB0q3GAEEKENgDIAQQmQkgACoCkAG7EPAJIQQgAUHcrcYAQQYQ2AMgBBCZCSAAKgKUAbsQ8AkhBCABQeKtxgBBBhDYAyAEEJkJIAAqApgBuxDwCSEEIAFB6K3GAEEGENgDIAQQmQkgAC0AnAEhBCABQe6txgBBChDYA0GCCEGDCCAEGxCZCSAFIAIgARD8CUGQxMgALQAADQtBlMTIAEEANgIAQZDEyABBADoAACABQYQITwRAIAEQvgcLIAJBhAhPBEAgAhC+BwsgABDIAiADQRBqJAAgBQ8LQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQYjAwQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEH4v8EAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBB6L/BABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQdi/wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEHIv8EAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBBuL/BABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQai/wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEGYv8EAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBBiL/BABDCBwALQZDEyABBADoAAEGUxMgAKAIAIQBBlMTIAEEANgIAIAMgADYCDEHQ7ccAQSsgA0EMakH4usEAQfi+wQAQwgcAC0GQxMgAQQA6AABBlMTIACgCACEAQZTEyABBADYCACADIAA2AgxB0O3HAEErIANBDGpB+LrBAEHovsEAEMIHAAtBkMTIAEEAOgAAQZTEyAAoAgAhAEGUxMgAQQA2AgAgAyAANgIMQdDtxwBBKyADQQxqQfi6wQBB2L7BABDCBwALpgwCEn4JfyMAQdAAayIWJAACQAJAAkACQAJAAkACQAJAAkAgASkDACIDUEUEQCABKQMIIgRQDQEgASkDECIGUA0CIAYgAyAGfCIFVg0DIAMgBFQNBCAFQoCAgICAgICAIFoNBSAWIAEvARgiATsBQCAWIAMgBH0iBjcDOCAWIAYgBXkiBIYiCCAEiCIHNwNIIAYgB1INCSAWIAE7AUAgFiADNwM4IBYgAyAEhiIGIASIIgc3A0ggAyAHUg0JQaB/IAEgBKdrIhhrwUHQAGxBsKcFakHOEG0iAUHQAEsNByAWQSBqIAFBBHQiASkD8KxCIgMgBSAEhhD8BiAWQRBqIAMgCBD8BiAWIAMgBhD8BkIBQQAgGCABLwH4rEJqayIYrSIDhiIIQgF9IQkgFikDEEI/hyEMIBYpAwBCP4ghDiAWKQMIIQ8gAS8B+qxCIQEgGEE/cSEYIBYpAxghECAWKQMoIhMgFikDIEI/iCIUfCIRQgF8IgcgA4inIhdBkM4ATwRAIBdBwIQ9SQ0HIBdBgMLXL08EQEEIQQkgF0GAlOvcA0kiFRshGUGAwtcvQYCU69wDIBUbIRUMCgtBBkEHIBdBgK3iBEkiFRshGUHAhD1BgK3iBCAVGyEVDAkLIBdB5ABPBEBBAkEDIBdB6AdJIhUbIRlB5ABB6AcgFRshFQwJC0EKQQEgF0EJSyIZGyEVDAgLQYC3wgBBHEHct8IAEKgJAAtB7LfCAEEdQYy4wgAQqAkAC0GcuMIAQRxBuLjCABCoCQALQfC5wgBBNkGousIAEKgJAAtBqLnCAEE3QeC5wgAQqAkAC0HIuMIAQS1B+LjCABCoCQALQQRBBSAXQaCNBkkiFRshGUGQzgBBoI0GIBUbIRUMAQsgAUHRAEGst8IAEPAHAAsgByAJgyEEIA4gD3whCiAYrSELIBkgAWtBAWohGyAMIBB9IAd8QgF8Ig0gCYMhBUEAIQECQAJAAkACQAJAAkACQAJAAkADQCABIAJqIhwgFyAVbiIdQTBqIho6AAAgAUEBaiEYIA0gFyAVIB1sayIXrSALhiISIAR8IgNWDQIgASAZRgRAQgEhAwNAIAMhBiABIhhBEEYNBSABIAJqQQFqIARCCn4iBCALiKdBMGoiFzoAACADQgp+IQMgAUEBaiEBIAVCCn4iBSAEIAmDIgRYDQALIAUgBH0iCyAIVCEVIAMgByAKfX4iCSADfCEHIAQgCSADfSIJWg0HIAggC1gNAgwHCyAVQQpJIBVBCm4hFSAYIQFFDQALQYi5wgAQnQoACyABIAJqIQEgBSAIfSELIAggCX0hDUIAIAR9IQoDQCAEIAh8IgMgCVQgCSAKfCAEIA18WnJFBEBBACEVDAYLIAEgF0EBayIXOgAAIAogC3wiDCAIVCEVIAMgCVoNBiAKIAh9IQogAyEEIAggDFgNAAsMBQsgDSADfSIFIBWtIAuGIgZUIQEgByAKfSIHQgF8IQggBSAGVCADIAdCAX0iCVpyDQEgDCARfCAQfSAEIAZ8IgQgEnx9QgJ8IQsgESAKfSADfSEKIAQgDnwgD3wgFH0gE30gEnwhB0IAIQQDQCADIAZ8IgUgCVQgBCAKfCAHWnJFBEBBACEBDAMLIBwgGkEBayIaOgAAIAQgC3wiDCAGVCEBIAUgCVoNAyAGIAd8IQcgBCAGfSEEIAUhAyAGIAxYDQALDAILQRFBEUGYucIAEPAHAAsgAyEFCwJAIAUgCFogAXINACAIIAUgBnwiA1ggCCAFfSADIAh9VHENACAAQQA2AgAMBAsgBSANQgR9WCAFQgJacUUEQCAAQQA2AgAMBAsgACAbOwEIIAAgGDYCBAwCCyAEIQMLAkAgAyAHWiAVcg0AIAcgAyAIfCIEWCAHIAN9IAQgB31UcQ0AIABBADYCAAwCCyADIAUgBkJYfnxYIAMgBkIUflpxRQRAIABBADYCAAwCCyAAIBs7AQggACAYQQJqNgIECyAAIAI2AgALIBZB0ABqJAAPCyMAQRBrIgAkACAAIBZBOGo2AgwgACAWQcgAajYCCEEAIABBCGpBtI3CACAAQQxqQbSNwgBBACAAQZCOwgAQ1gUAC8gYAwd/AX4BeyMAQSBrIgUkAAJAAkAgACgCACIHRQRAIAAoAhAiAEUNASAAQam4xQBBARCuAyECDAILAkACQAJAAkACQCAAKAIIIgIgACgCBCIGTwRAIAAoAhAiAUUNASABQcfHxABBEBCuA0UNAQwFCyAAIAJBAWoiBDYCCCACIAdqLQAAIQMgACAAKAIMQQFqIgg2AgwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCEH0A00EQAJAIANB0QBrDikMCwIQAhECAgICAgICAgICBQgJAgoCAgQFBAIFBAUEAwICBQQCAgIFBAALIANBwQBrDgIOBQELIAAoAhAiAQRAIAFB18fEAEEZEK4DDRcLIABBAToABAwTCyAAKAIQIgFFDREgAUHHx8QAQRAQrgMNFQwRCyAAKAIQIgFFDRNBASECIAFBr8vEAEEBEK4DRQ0TDBYLIAAgAxCjBQ0TDBILIAQgBk8NECAEIAdqLQAAQe4ARg0BDBALIwBBIGsiAiQAAkACQCAAKAIARQRAIAAoAhAiAUUNASABQam4xQBBARCuAyEBDAILIAIgABDXBiACKAIARQRAIAAoAhAiAwRAQQEhASADQdfHxABBx8fEACACLQAEQQFxIgMbQRlBECADGxCuAw0DCyAAIAL9AAIA/QsCAAwBCyAAKAIQRQ0AIAD9AAIAIQogACAC/QACAP0LAgAgAiAK/QsDECAAIAFBAXEQ1gEhASAAIAL9AAMQ/QsCAAwBC0EAIQELIAJBIGokACABDREMEAsgACACQQJqNgIIIAAoAhAiAUUNDkEBIQIgAUHaycQAQQEQrgNFDQ4MEgsgBUEYaiAAEOMFIAUoAhgiAUUEQCAFLQAcIQEgACgCECIDBEBBASECIANB18fEAEHHx8QAIAFBAXEiAxtBGUEQIAMbEK4DDRMLIAAgAToABAwNCyAFQQhqIAEgBSgCHBDXBAJAAkACQCAFKQMIQgFSDQAgBSkDECIJQgFWDQAgCadBAWsNAQwCCyAAKAIQIgFFDQ0gAUHHx8QAQRAQrgMNEQwNCyAAKAIQIgFFDQ8gAUGwy8QAQQUQrgMNEAwPCyAAKAIQIgFFDQ4gAUG1y8QAQQQQrgMNDwwOCyAFQRhqIAAQ4wUgBSgCGCIBRQRAIAUtABwhASAAKAIQIgMEQEEBIQIgA0HXx8QAQcfHxAAgAUEBcSIDG0EZQRAgAxsQrgMNEgsgACABOgAEDAwLIAVBCGogASAFKAIcENcEAkAgBSkDCEIBUg0AIAUpAxAiCUKAgICAEFoNACAJpyIBQYCwA3NBgIDEAGtBgJC8f0kNACAAKAIQIQMjAEEgayICJAACf0EAIANFDQAaAkAgAygCAEEnIAMoAgQoAhARAgANAANAAkACQAJ/AkACQCABQSJHBEAgAUGAgMQARgRAIAMoAgBBJyADKAIEKAIQEQIADAkLAkACQAJAAkACQAJAIAFBJkwEQCABQQlrDgUCBAkJAwELIAFBJ0YNBSABQdwARg0EDAgLIAENByACQgA3AQIgAkHc4AA7AQAMBgsgAkIANwECIAJB3OgBOwEADAULIAJCADcBAiACQdzkATsBAAwECyACQgA3AQIgAkHc3AE7AQAMAwsgAkIANwECIAJB3LgBOwEADAILIAJCADcBAiACQdzOADsBAAwBC0GAgMQAIQEgAygCAEEiIAMoAgQoAhARAgANBgwFC0ECIQRBAAwBCwJAAkACQCABQf8FTQ0AIAEQ/wRFDQAMAQsgARDXAg0BCyACQRBqIAEQiAYgAiACLwAYOwEIIAIgAikAEDcDACACLQAaIQEgAi0AGyEEIAIgAi8BCDsBGCACIAIpAwA3AxAgAUH/AXEgBEH/AXFJDQIMAwsgAiABNgIAQYEBIQRBgAELIQEgAiACLwEIOwEYIAIgAikDADcDEAsgBEH/AXEhByABQf8BcSEEIAMoAgAhASADKAIEKAIQIQYgAigCECEIA0AgASAHQYABTQR/IAJBEGogBGotAAAFIAgLIAYRAgANAyAHIARBAWoiBEcNAAsLQYCAxAAhAQwACwALQQELIAJBIGokAA0PDA4LIAAoAhAiAUUNCiABQcfHxABBEBCuAw0ODAoLAkAgAQ0AIAAoAhAiA0UNAEEBIQIgA0G5y8QAQQEQrgMNEAsgACgCECIDBEBBASECIANBnMvEAEEBEK4DDRALIAAQ2QINDQwICyAEIAZPDQAgBCAHai0AAEHlAEYNAQsCQCABDQAgACgCECIERQ0AQQEhAiAEQbnLxABBARCuAw0OCyAAKAIQIgQEQEEBIQIgBEGWy8QAQQEQrgMNDgsgA0HSAEcNAQwFCyAAIAJBAmo2AgggABDZAg0KDAkLIAAoAhAiAkUNAyACQZjLxABBBBCuAw0JDAMLAkAgAQ0AIAAoAhAiA0UNAEEBIQIgA0G5y8QAQQEQrgMNCwsgACgCECIDBEBBASECIANB/MrEAEEBEK4DDQsLIAAQ9AYNCCAAKAIQIgNFDQdBASECIANB/crEAEEBEK4DRQ0DDAoLAkAgAQ0AIAAoAhAiA0UNAEEBIQIgA0G5y8QAQQEQrgMNCgsgACgCECIDBEBBASECIANBpcvEAEEBEK4DDQoLQQAhAgJ/AkAgACgCACIDRQ0AA0ACQCAAKAIIIgQgACgCBE8NACADIARqLQAAQcUARw0AIAAgBEEBajYCCAwCCwJAIAJFDQAgACgCECIDRQ0AIANB06bFAEECEK4DRQ0AQQEMAwtBASAAQQEQ1gENAhogAkEBaiECIAAoAgAiAw0ACwtBAAshAyAFIAI2AgQgBSADNgIAQQEhAiAFKAIAQQFxDQkgBSgCBEEBRgRAIAAoAhAiA0UNByADQabLxABBARCuAw0KCyAAKAIQIgNFDQYgA0HeycQAQQEQrgNFDQIMCQsCQCABDQAgACgCECIDRQ0AQQEhAiADQbnLxABBARCuAw0JC0EBIQIgAEEBENABDQggACgCACIERQRAIAAoAhAiAEUNCCAAQam4xQBBARCuAyECDAkLIAAoAggiAyAAKAIETwRAIAAoAhAiAUUNAyABQcfHxABBEBCuA0UNAwwJCyAAIANBAWo2AggCQAJAAkAgAyAEai0AAEHTAGsOAwIBBAALIAAoAhAiAUUNBCABQcfHxABBEBCuAw0IDAQLIAAoAhAiAwRAIANBpcvEAEEBEK4DDQoLIAAQ9AYNByAAKAIQIgNFDQYgA0HeycQAQQEQrgNFDQIMCQsgACgCECICBEAgAkG6y8QAQQMQrgMNBwtBASECQQAhByMAQSBrIgMkAAJAAkACQCAAKAIAIgRFDQADQAJAIAAoAggiBiAAKAIETw0AIAQgBmotAABBxQBHDQAgACAGQQFqNgIIDAILAkACQCAHRQ0AIAAoAhAiBEUNACAEQdOmxQBBAhCuAw0EIAAoAgANACAAKAIQIgZFDQFBASEEIAZBqbjFAEEBEK4DRQ0BDAULIAMgAEHzABDSBiADLQAAQQFGBEAgAy0AASEHIAAoAhAiBgRAQQEhBCAGQdfHxABBx8fEACAHQQFxIgYbQRlBECAGGxCuAw0GCyAAIAc6AAQgAEEANgIADAMLIAAoAgBFBEAgACgCECIGRQ0BQQEhBCAGQam4xQBBARCuA0UNAQwFCyADIAAQ/AIgAygCAEUEQCADLQAEIQcgACgCECIGBEBBASEEIAZB18fEAEHHx8QAIAdBAXEiBhtBGUEQIAYbEK4DDQYLIAAgBzoABCAAQQA2AgAMAwsgAyAD/QACAP0LAxACQCAAKAIQIgRFDQAgA0EQaiAEEIcCDQQgACgCECIERQ0AIARB5snEAEECEK4DDQQLQQEhBCAAQQEQ1gENBAsgB0EBayEHIAAoAgAiBA0ACwtBACEEDAELQQEhBAsgA0EgaiQAIAQNCCAAKAIQIgNFDQUgA0G9y8QAQQIQrgNFDQEMCAtBASECIABBARDWAQ0HCyABDQMgACgCECIBRQ0DQQEhAiABQfHJxABBARCuA0UNAwwGC0EAIQIgAEEAOgAEIABBADYCAAwFC0EAIQIgAEEANgIADAQLIAAgAxCjBQ0BC0EAIQIgACgCAEUNAiAAIAAoAgxBAWs2AgwMAgtBASECDAELQQAhAgsgBUEgaiQAIAIL5AsBH38jAEEgayIFJAAgABDIBSAAQQA6APABIABCADcD6AECQAJAAkACQAJAAkAgACgCxAEiA0GAgICAeEYgACgC0AEiAUGAgICAeEZxRQRAIANBgICAgHhHIAFBgICAgHhHcUUEQEGstMEAQSQQtAghAgwECyAAQYCABBDmBCAAKALgASIKQQJ0EO8JIRMCQCAAKAJARQ0AIAAoAkQiAUGECEkNACABEL4HCyAAIBM2AkQgAEEBNgJAIAAoAsQBIhRBgICAgHhGDQIgACgC0AEiFUGAgICAeEYNAQJAIApFDQAgACgCyAEhGyAAKALUASEcIAAoAtgBIQsgACgCzAEhDCAAKAJkIR0gACgCYCEeIAAoAsABIRYgACgCvAEhFyAAKAK0ASEYIAAoArABIQ1BACEBA0AgGEGAgAQgCiABayIDIANBgIAETxsiB0ECdCIESQRAQQAgBCAYQZy0wQAQoAUACwJAIAQgFk0EQCAFIB4gAUECdCIOIAEgB2oiA0ECdCIZEJcJIgIQgwsiCDYCCCAFIAQ2AhQgBCAIRgRAIA0gBCACEK0KIAJBhAhPBEAgAhC+BwsgBSAdIA4gGRCXCSICEIMLIgg2AgggBSAENgIUIAQgCEYEQCAXIAQgAhCtCiACQYQITwRAIAIQvgcLIAEgCkYNAyABIAwgASAMSRshDyABIAsgASALSRshECAHQQR0IRogDiAcaiEfIBsgAUEBdGohEUEAIQdBACEIAkADQAJ/AkAgByAaRwRAIAUgByANaiISKQIANwIIIAUgEkEIaioCADgCECASQQxqKAIAIgZB//8BcUUEQCAGQRB0DAMLIAZB/wdxIQIgBkGAgAJxIQkgBkGA+AFxIgZBgPgBRgRAIAlBEHQhBiAGQYCAgPwHciACRQ0DGiAGIAJBDXRyQYCAgP4HcgwDCyAJQRB0IQkgBkUNASAGQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogCXIMAgsgCCAIQQRqIARB/LPBABCgBQALIAlBgICA2ANyIAJnQRBrIgZBF3RrIAIgBkH//wNxQQhqdEH///8DcXILIQIgBUEUaiIJIAcgF2pBBBCSAyAMIA9GDQEgCyAQRwRAIBIgBUEIaiACviAJIBEvAQAgCCAfaigCABCQAiAPQQFqIQ8gCEEEaiEIIBFBAmohESABQQFqIQEgEEEBaiEQIBogB0EQaiIHRw0BDAYLCyABIAtB7LPBABDwBwALIAEgDEHcs8EAEPAHAAsMCQsMCAtBACAEIBZBjLTBABCgBQALIAUgEyAOIBkQlwkiARCDCyICNgIIIAUgBDYCFCACIARGBEAgASANIAQQqwogAUGECE8EQCABEL4HCyADIgEgCkkNAQwCCwsMBQsgFUEASgRAIAAoAtQBIgFBBGsoAgAiA0F4cSIEIBVBAnQiAkEEQQggA0EDcSIDG2pJDQYgA0EAIAQgAkEnaksbDQcgARCiAgsgAEGAgICAeDYC0AEgFEEASgRAIAAoAsgBIgFBBGsoAgAiA0F4cSIEIBRBAXQiAkEEQQggA0EDcSIDG2pJDQYgA0EAIAQgAkEnaksbDQcgARCiAgsgAEGAgICAeDYCxAELQQAhAiAAQQA2ArQBIAAoArABIQEgACgCrAEhAyAAQoCAgIDAADcCrAEgAwRAIAFBBGsoAgAiBEF4cSIHIANBAnQiA0EEQQggBEEDcSIEG2pJDQUgBEEAIAcgA0EnaksbDQYgARCiAgsgAEEANgLAASAAKAK8ASEBIAAoArgBIQMgAEKAgICAwAA3A7gBIANFDQIgAUEEaygCACIAQXhxIgQgA0ECdCIDQQRBCCAAQQNxIgAbakkNBCAAQQAgBCADQSdqSxsNBSABEKICDAILQcyzwQAQmQoAC0G8s8EAEJkKAAsgBUEgaiQAIAIPC0EAIAVBCGogBUEUakEAIAVB0KHEABCgCAALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7YLAgl/An0jAEGAAWsiCCQAAn8CQCAAKAIIIgYgAUsEQCAAKAIEIAFBLGxqIgYQlwQhDiAGLwEcIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQYgBUGAgAJxIQcgBUGA+AFxIgVBgPgBRgRAIAdBEHQhBSAFQYCAgPwHciAGRQ0DGiAFIAZBDXRyQYCAgP4HcgwDCyAHQRB0IQcgBUUNASAFQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2ogB3IMAgsgASAGQdjRxgAQ8AcACyAHQYCAgNgDciAGZ0EQayIFQRd0ayAGIAVB//8DcUEIanRB////A3FyCyEFQwAAgD8hDwJAAkACQCAOIA6SIAW+Ig5DAACAP14EfSAOEOAFQ1T4LUCUQwAAgD+SkQUgDwuUIANdRQRAIAggACgCECIHIAAoAhQiCSABEPMCAkAgCCgCJCIFQQlPBEAgCCgCBCIGDQEgCCgCCCIAQQRrKAIAIgFBeHEiAiAFQQJ0IgRBBEEIIAFBA3EiARtqSQ0EIAFBACACIARBJ2pLGw0FIAAQogIMAwsgBSIGRQ0CCyAIQShqIAIoAggiCiAGIApqEKgDIAcgCSABIAgoAjAgCEEsaiAIKAJMIgFBCEsiBhsgCCgCLCABIAYbEIoGAkAgCEEEaiIMIAhBJGogBUEISyIBGygCACIFQQJJDQAgCCgCCCAMIAEbIQEgBUEVTwRAIAEgBRDiBQwBCyABQQRqIQcCQCAFQQFxBEAgByEJIAEhBwwBCyABKAIEIgkgASgCACIKSQRAQQAhBgJ/A0AgASAGakEEaiAKNgIAIAEgBkUNARogCSAGQQRrIgYgAWoiCygCACIKSQ0ACyALQQRqCyAJNgIACyABQQhqIQkLIAVBAkYNACABIAVBAnRqIQ0gCUEEaiEKA0AgCSgCACILIAcoAgAiBUkEQCAJIQYCfwNAIAYgBTYCACABIAEgB0YNARogByEGIAsgB0EEayIHKAIAIgVJDQALIAdBBGoLIAs2AgALIAkoAgQiCyAJKAIAIgdJBEAgCiEFA0ACQCAFIAc2AgAgASAFQQRrIgZGBEAgASEGDAELIAVBCGshByAGIQUgCyAHKAIAIgdJDQELCyAGIAs2AgALIAlBBGohByAKQQhqIQogCUEIaiIJIA1HDQALCyAIKAIEIAgoAiQiByAHQQhLIgEbIgYEQCAIKAIIIAwgARshASAGQQJ0IQYgAigCCCIFQQJ0IQcDQCABKAIAIQkgAigCACAFRgRAIAIQoQcLIAFBBGohASACKAIEIAdqIAk2AgAgAiAFQQFqIgU2AgggB0EEaiEHIAZBBGsiBg0ACyAIKAIkIQcLIAgoAgQhBSAIIAgoAiA2AnAgCCAIKQIYNwJoIAggCP0AAgj9CwJYIAggBSAHIAdBCEsiARsiBjYCfCAIIAdBACABGzYCdCAIQQAgBSABGzYCVAJAAkAgBgRAIAFFBEAgCEHUAGohAUEAIQUDQCAIIAVBAWoiBTYCeCAAIAEoAgAgAiADIAQQ2AEgAUEEaiEBIAUgB0cNAAsMAwsgCCgCWCIGIQEDQCAAIAEoAgAgAiADIAQQ2AEgAUEEaiEBIAVBAWsiBQ0ACwwBCyAHQQlJDQEgCCgCWCEGCyAGQQRrKAIAIgBBeHEiASAHQQJ0IgJBBEEIIABBA3EiABtqSQ0DIABBACABIAJBJ2pLGw0EIAYQogILIAgoAkwiAEEJSQ0BIAgoAjAiAUEEaygCACICQXhxIgQgAEECdCIAQQRBCCACQQNxIgIbakkNAiACQQAgBCAAQSdqSxsNAyABEKICDAELIAQoAggiACAEKAIARgRAIAQQoQcLIAQoAgQgAEECdGogATYCACAEIABBAWo2AggMAAsgCEGAAWokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/0NAQV/IwBBMGsiAiQAAkACQAJAAkACQAJAAkACQCAAKAIAQQFrDgUBAgMEBQALQQEhAyABKAIAIgRBuLnGAEEIIAEoAgQiBigCDCIFEQAADQYgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEGly8QAQQEgBREAAA0IIAAgARCbBkUNAQwICyAEQYWOwgBBAiAFEQAADQcgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGIj8IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqNgIUIAAgAkEUahCbBg0HIAIoAhRBg47CAEECIAIoAhgoAgwRAAANBwsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAYLQQEhAyABKAIAIgRBwLnGAEEIIAEoAgQiBigCDCIFEQAADQUgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEGly8QAQQEgBREAAA0HIAAgARCcBkUNAQwHCyAEQYWOwgBBAiAFEQAADQYgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGIj8IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqNgIUIAAgAkEUahCcBg0GIAIoAhRBg47CAEECIAIoAhgoAgwRAAANBgsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRByLnGAEEJIAEoAgQiBigCDCIFEQAADQQgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEGly8QAQQEgBREAAA0GIAAgARCdBkUNAQwGCyAEQYWOwgBBAiAFEQAADQUgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGIj8IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqNgIUIAAgAkEUahCdBg0FIAIoAhRBg47CAEECIAIoAhgoAgwRAAANBQsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRB0bnGAEEGIAEoAgQiBigCDCIFEQAADQMgAEEIaiEAAkACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQYgAiAANgIIIAEoAgBB8LnGAEEKIAEoAgQoAgwRAAAhACACQQA6ABkgAiAAOgAYIAIgATYCFCACQRRqQYCOxwBBBCACQQhqQeC5xgAQngUhACACLQAYIgRBAXEgAi0AGSIFQQFHckUEQCAAKAIAIgAtAApBgAFxDQIgACgCAEG9y8QAQQIgACgCBCgCDBEAAEUNAwwHCyAFDQYgBEEBcUUNAgwGCyAEQYWOwgBBAiAFEQAADQUgAiAGNgIMIAIgBDYCCCACQQE6AAcgAkGIj8IANgIYIAIgASkCCDcCHCACIAJBB2o2AhAgAiACQQhqIgM2AhQgAiAANgIkIANB8LnGAEEKEMMDIQAgAkEAOgAtIAIgADoALCACIAJBFGo2AiggAkEoakGAjscAQQQgAkEkakHgucYAEJ4FIQACQAJAIAItACwiA0EBcSACLQAtIgRBAUdyRQRAIAAoAgAiAC0ACkGAAXENASAAKAIAQb3LxABBAiAAKAIEKAIMEQAADQcMAgsgBA0GIANBAXFFDQEMBgsgACgCAEHxycQAQQEgACgCBCgCDBEAAA0FCyACKAIUQYOOwgBBAiACKAIYKAIMEQAARQ0BQQEhAwwFCyAAKAIAQfHJxABBASAAKAIEKAIMEQAADQQLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAwwDC0EBIQMgASgCACIEQc2SxwBBCyABKAIEIgYoAgwiBREAAA0CIABBBGohAAJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANBCAAIAEQngZFDQEMBAsgBEGFjsIAQQIgBREAAA0DIAJBAToAKCACIAY2AgwgAiAENgIIIAJBiI/CADYCGCACIAEpAgg3AhwgAiACQShqNgIQIAIgAkEIajYCFCAAIAJBFGoQngYNAyACKAIUQYOOwgBBAiACKAIYKAIMEQAADQMLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAwwCC0EBIQMgASgCACIEQde5xgBBByABKAIEIgYoAgwiBREAAA0BIABBBGohAAJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANAyAAIAEQtwJFDQEMAwsgBEGFjsIAQQIgBREAAA0CIAJBAToAKCACIAY2AgwgAiAENgIIIAJBiI/CADYCGCACIAEpAgg3AhwgAiACQShqNgIQIAIgAkEIajYCFCAAIAJBFGoQtwINAiACKAIUQYOOwgBBAiACKAIYKAIMEQAADQILIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAwwBC0EBIQMLIAJBMGokACADC7gMAgx/AX4jAEGABmsiCSQAQQYhCwJAAkACQAJAAkACQAJAAkAgASgCACIKQYCAgIB4Rg0AIAlBFGogASgCBCIMIAEoAggQgwUgCS0AFEEBRgRAIAkoAhghASAJQQA2ApAEIAlCgICAgBA3AogEIAlB2JnBADYClAIgCUKggICABjcCmAIgCSAJQYgEajYCkAIgASAJQZACahCKBQ0DIAkoAogEIQsgCSgCjAQiDSAJKAKQBBCvCSEPIAsEQCANQQRrKAIAIg5BeHEiEEEEQQggDkEDcSIOGyALakkNCCAOQQAgECALQSdqSxsNCSANEKICCyAAQQA2AgAgACAPNgIEIAEgASgCACgCABEDACAKBEAgDEEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgCmpJDQggAEEAIAEgCkEnaksbDQkgDBCiAgsgB0UgCEGECElyRQRAIAgQvgcLIAVFIAZBhAhJckUEQCAGEL4HCyADRSAEQYQISXJFBEAgBBC+BwsgAigCACIAQQBMDQIgAigCBCIBQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAAakkNByACQQAgAyAAQSdqSxsNCCABEKICDAILIAktABUhCyAKRQ0AIAxBBGsoAgAiAUF4cSINQQRBCCABQQNxIgEbIApqSQ0GIAFBACANIApBJ2pLGw0HIAwQogILQQQhAUEAIQpBABDvCSETQQAQ7wkhFEEAIQxBBCENAkAgA0EBRw0AIAlBkAJqIAQQrAYgCSgCmAIhDyAJKAKUAiENIAkoApACIQwgBEGECEkNACAEEL4HC0EAIQQCQCAFQQFHDQAgCUGQAmogBhCsBiAJKAKYAiEEIAkoApQCIQEgCSgCkAIhCiAGQYQISQ0AIAYQvgcLQQQhBkEAIQVBACEDQQQhEAJAIAdBAUcNACAJQYgEaiAIQQAQpwkiBxCsBiAJQZACaiAIQQEQpwkiEhCsBiAJKAKYAiERIAkoApQCIRAgCSgCkAIhDiAJKAKQBCEDIAkoAowEIQYgCSgCiAQhBSASQYQITwRAIBIQvgcLIAdBhAhPBEAgBxC+BwsgCEGECEkNACAIEL4HCyAJQYCAgIB4NgLgAyAJQYCAgIB4NgLUAyAJQgQ3AswDIAlCADcCxAMgCUKAgICAwAA3ArwDIAkgBDYCuAMgCSABNgK0AyAJIAo2ArADIAkgDzYCrAMgCSANNgKoAyAJIAw2AqQDIAlBADYCmAMgCUEANgL4AiAJIBQ2AvQCIAkgEzYC8AIgCSARNgLsAiAJIBA2AugCIAkgDjYC5AIgCSADNgLgAiAJIAY2AtwCIAkgBTYC2AIgCUEANgLQAiAJQQA2AsgCIAlBADYCwAIgCUEANgK4AiAJQQA2ArACIAlBADYCqAIgCUEANgKgAiAJQQA2ApgCIAlBADYCkAIgCUIANwD5AyAJ/QwAAAAAAAAAAAAAAAAAAAAA/QsC7AMgAigCACEDIAIoAgQhCCACKAIIIQECfyALQQZHBEAgCUEIaiALIAlBkAJqEKUEIAkoAgwhByAJKAIIIQVBAgwBCyAJQYgEaiAJQZACakEEckH0AfwKAABBACEFQQALIQRBgICAgHghBiADQYCAgIB4RwRAIAFBAEgNAyABBH4gARBuIgJFDQUgAQRAIAIgCCAB/AoAAAsgAq0FQgELIAGtQiCGhCEVIAEhBgsgCUEcaiICIAlBiARqQfQB/AoAAEGoAhBuIgFFDQQgASAENgIAIAFBBGogAkH0AfwKAAAgASALOgCkAiABQYCAgIB4NgKYAiABIBU3A5ACIAEgBjYCjAIgAUEANgKIAiABQoCAgIAQNwOAAiABIAc2AvwBIAEgBTYC+AEgAEHgwMEANgIMIABBATYCCCAAQcjAwQA2AgQgACABNgIAIANBAEwNACAIQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNBSAAQQAgASADQSdqSxsNBiAIEKICCyAJQYAGaiQADwtBzLLFAEE3IAlB/wVqQfCZwQBBhLPFABDCBwALEJgKAAtBASABEJoJAAtBqAIQsQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuQDAIQfwN+IwBBEGsiCyQAAkACQEGkvsgAKAIARQ0AQZy+yAAoAgAiCEGwvsgAKQMAIhQgAK2FIhVCOIYgFUKA/gODQiiGhCAVQoCA/AeDQhiGIBVCgICA+A+DQgiGhIQgFEIIiEKAgID4D4MgFEIYiEKAgPwHg4QgFEIoiEKA/gODIBRCOIiEhIRC0oGqm6v6gtenf34iFEI4hiAUQoD+A4NCKIaEIBRCgID8B4NCGIYgFEKAgID4D4NCCIaEhCAUQgiIQoCAgPgPgyAUQhiIQoCA/AeDhCAUQiiIQoD+A4MgFEI4iISEhCAVQtii0e/CqeW/LX6FIhRCOIYgFEKA/gODQiiGhCAUQoCA/AeDQhiGIBRCgICA+A+DQgiGhIQgFEIIiEKAgID4D4MgFEIYiEKAgPwHg4QgFEIoiEKA/gODIBRCOIiEhIRBqL7IACkDACIVQn+FfiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBQgFUI4hiAVQoD+A4NCKIaEIBVCgID8B4NCGIYgFUKAgID4D4NCCIaEhCAVQgiIQoCAgPgPgyAVQhiIQoCA/AeDhCAVQiiIQoD+A4MgFUI4iISEhH6FIBSJIhSncSEEIBRCGYhC/wCDQoGChIiQoMCAAX4hFkGYvsgAKAIAIQYDQCAEIAZqKQAAIhUgFoUiFEJ/hSAUQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIhRQRQRAA0AgACAGIBR6p0EDdiAEaiAIcUEFdGsiB0EgaygCAEYNBCAUQgF9IBSDIhRQRQ0ACwsgFSAVQgGGg0KAgYKEiJCgwIB/g1BFDQEgBCAFQQhqIgVqIAhxIQQMAAsAC0H4xMEAEJkKAAsgB0EEaygCACIGKAIIRQRAIAZBfzYCCEEAIQRBqL/IACgCACINRQRAQaC/yAAoAgBB//8PTQRAQaC/yABBAEGAgBBBBEEEENYGQai/yAAoAgAhBAtBpL/IACgCACAEQQJ0aiIAQQBB/P8//AsAQai/yAAgBEGAgBBqIg02AgAgAEH8/z9qQQA2AgALIAEgAmoiBSAGKAIUIghLBEAgBSAIIgBBAXQiBCAEIAVJGyIKIABrIgcgBigCDCAAa0sEQCAGQQxqIAAgB0EEQRAQ1gYgBigCFCEACyAGKAIQIQwgB0EDcSIJBEAgACAJaiAKIAhrIAlrIQcgDCAAQQR0aiEEA0AgBEIANwEGIARCADcCACAEQRBqIQQgCUEBayIJDQALIQALIAggCmtBfE0EQCAMIABBBHRqIQQDQCAEQgA3AQYgBEIANwIAIARBEGpCADcCACAEQRZqQgA3AQAgBEEgakIANwIAIARBJmpCADcBACAEQTBqQgA3AgAgBEE2akIANwEAIARBQGshBCAAQQRqIQAgB0EEayIHDQALCyAGIAA2AhQLIAIEQCABQQR0IQ9BACEIQaS/yAAoAgAhDANAAkACQAJAIA1BgIAEIAIgCCIAayIIIAhBgIAETxsiBEECdCIJTwRAIAsgAyAAQQJ0IAAgBGoiCEECdBCXCSIFEIMLIgc2AgggCyAJNgIMIAcgCUcNASAMIAkgBRCtCiAFQYQITwRAIAUQvgcLIAAgAkYNAyAEQQR0IQ4gACABaiEHIA8gAEEEdGohEEEAIQVBACEEA0AgBCAORg0DIAYoAhQiACAHSwRAIAQgDGoiACgCACERIABBBGooAgAhEiAAQQhqKAIAIRMgBigCECAQaiAEaiIKIABBDGooAgA2AgAgCkEMaiATOwEAIApBCGogEjYCACAKQQRqIBE2AgAgBUEEaiEFIAdBAWohByAOIARBEGoiBEYNBQwBCwsgByAAQYjFwQAQ8AcAC0EAIAkgDUGYxcEAEKAFAAtBACALQQhqIAtBDGpBACAAQdChxAAQoAgACyAFIAlBuMXBABDwBwALIAIgCEsNAAsLIAYgBigCCEEBajYCCCALQRBqJAAPC0GoxcEAELYIAAvVDAIMfQl/AkACQAJAAkACQCAEBEBDAAD+QiAFlSEFIAFBfHEhFiADQQ9uQTxsIRcgAUEDakF8cSEYIAFBAmpBfHEhGUECIAEgAUECTRtBAWpBfHEhGgNAIBUgF0YNA0MAAP5CQwAA/sIgBSACIBVqIhJBMGoqAgCUIgcgB0MAAP7CXRsiByAHQwAA/kJeGxCFCCEHQwAA/kJDAAD+wiAFIBJBNGoqAgCUIgggCEMAAP7CXRsiCCAIQwAA/kJeGxCFCCEIQwAA/kJDAAD+wiAFIBJBOGoqAgCUIgkgCUMAAP7CXRsiCSAJQwAA/kJeGxCFCCEJQwAA/kJDAAD+wiAFIBJBIGoqAgCUIgogCkMAAP7CXRsiCiAKQwAA/kJeGxCFCCEKQwAA/kJDAAD+wiAFIBJBJGoqAgCUIgsgC0MAAP7CXRsiCyALQwAA/kJeGxCFCCELQwAA/kJDAAD+wiAFIBJBKGoqAgCUIgwgDEMAAP7CXRsiDCAMQwAA/kJeGxCFCCEMQwAA/kJDAAD+wiAFIBJBLGoqAgCUIg0gDUMAAP7CXRsiDSANQwAA/kJeGxCFCCENQwAA/kJDAAD+wiAFIBJBEGoqAgCUIg4gDkMAAP7CXRsiDiAOQwAA/kJeGxCFCCEOQwAA/kJDAAD+wiAFIBJBFGoqAgCUIg8gD0MAAP7CXRsiDyAPQwAA/kJeGxCFCCEPQwAA/kJDAAD+wiAFIBJBGGoqAgCUIhAgEEMAAP7CXRsiECAQQwAA/kJeGxCFCCEQQwAA/kJDAAD+wiAFIBJBHGoqAgCUIhEgEUMAAP7CXRsiESARQwAA/kJeGxCFCCERIBMgGEYNBCAAQf8AQwAA/kJDAAD+wiAFIBIqAgCUIgYgBkMAAP7CXRsiBiAGQwAA/kJeGxCFCCIG/ABBgH8gBkMAAADDYBsgBkMAAP5CXhtBACAGIAZbG0H/AXFB/wBDAAD+QkMAAP7CIAUgEkEEaioCAJQiBiAGQwAA/sJdGyIGIAZDAAD+Ql4bEIUIIgb8AEGAfyAGQwAAAMNgGyAGQwAA/kJeG0EAIAYgBlsbQf8BcUEIdHJB/wBDAAD+QkMAAP7CIAUgEkEIaioCAJQiBiAGQwAA/sJdGyIGIAZDAAD+Ql4bEIUIIgb8AEGAfyAGQwAAAMNgGyAGQwAA/kJeG0EAIAYgBlsbQf8BcUEQdHJB/wBDAAD+QkMAAP7CIAUgEkEMaioCAJQiBiAGQwAA/sJdGyIGIAZDAAD+Ql4bEIUIIgb8AEGAfyAGQwAAAMNgGyAGQwAA/kJeG0EAIAYgBlsbQRh0cjYCACATIBlGDQUgAEEEakH/ACAO/ABBgH8gDkMAAADDYBsgDkMAAP5CXhtBACAOIA5bG0H/AXFB/wAgD/wAQYB/IA9DAAAAw2AbIA9DAAD+Ql4bQQAgDyAPWxtB/wFxQQh0ckH/ACAQ/ABBgH8gEEMAAADDYBsgEEMAAP5CXhtBACAQIBBbG0H/AXFBEHRyQf8AIBH8AEGAfyARQwAAAMNgGyARQwAA/kJeG0EAIBEgEVsbQRh0cjYCACATIBpGDQYgAEEIakH/ACAK/ABBgH8gCkMAAADDYBsgCkMAAP5CXhtBACAKIApbG0H/AXFB/wAgC/wAQYB/IAtDAAAAw2AbIAtDAAD+Ql4bQQAgCyALWxtB/wFxQQh0ckH/ACAM/ABBgH8gDEMAAADDYBsgDEMAAP5CXhtBACAMIAxbG0H/AXFBEHRyQf8AIA38AEGAfyANQwAAAMNgGyANQwAA/kJeG0EAIA0gDVsbQRh0cjYCACATIBZGDQIgAEEMakH/ACAH/ABBgH8gB0MAAADDYBsgB0MAAP5CXhtBACAHIAdbG0H/AXFB/wAgCPwAQYB/IAhDAAAAw2AbIAhDAAD+Ql4bQQAgCCAIWxtB/wFxQQh0ckH/ACAJ/ABBgH8gCUMAAADDYBsgCUMAAP5CXhtBACAJIAlbG0H/AXFBEHRyNgIAIABBEGohACAUQQ9qIRQgFUE8aiEVIBNBBGohEyAEQQFrIgQNAAsLDwsgE0EDaiABQfTexgAQ8AcACyAUIBRBD2ogA0GE38YAEKAFAAsgEyABQcTexgAQ8AcACyATQQFqIAFB1N7GABDwBwALIBNBAmogAUHk3sYAEPAHAAvGDQMJfwN+AXsjAEHgAWsiBCQAAkACQAJAAkACQAJAAkACQAJAAkAgASgCECIFKAIwIggOAgUBAAsgBSkDGCAFKQMgIAIgAxCpBCENIAUoAjgiCSANp3EhByANQhmIQv8Ag0KBgoSIkKDAgAF+IQ8gBSgCNCEKIAUoAiwhBQNAIAcgCmopAAAiDiAPhSINQn+FIA1CgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiDVBFBEADQCAKIA16p0EDdiAHaiAJcUECdGtBBGsoAgAiBiAITw0EIAUgBkG4AWxqIgxBrAFqKAIAIANGBEAgAiAMKAKoASADEPcHRQ0HCyANQgF9IA2DIg1QRQ0ACwsgDiAOQgGGg0KAgYKEiJCgwIB/g1BFDQUgByALQQhqIgtqIAlxIQcMAAsACyADIAUoAiwiBUGsAWooAgBGDQEMAwsgBiAIQciixwAQ8AcACyACIAUoAqgBIAMQ9wcNAQsgBiAITwRAIABCAzcDACAAQYSAgIB4NgIIDAULIAUgBkG4AWxqIgUtAKABDQECQCAFLQBoQQNGBEAgBSkDYCENDAELIAEoAgQiAq0hDgJAAkACQCACQv////8PIAUpA1AiDSANQv////8PWhunayIDQQAgAiADTxtBHU0EQEHglccAKQMAIg+nIQMCQCAPQv8Bg0IEUQRAIAEgDUIefDcDCCADQf8BcUEERw0BDAMLIAEgDjcDCCADQf8BcUEERg0CCyAPQiCIpyECIA9CCIinIgUhAQJAAkACQAJAIANB/wFxIgZBAWsOAwEAAAILIAItAAghAQsgAUH/AXFBJUYNAQsgBCACNgJsIARBgYCAgHg2AmQgBCAFQQh0IAZyNgJoDAMLIARBHjYCDCAEQYW0xgA2AgggBCAEQQhqrUKAgICAIIQ3AxAgBEHkAGpBjIrAACAEQRBqEOAEIANB/wFxQQNHDQIgAigCACEBIAJBBGooAgAiAygCACIFBEAgASAFEQMACyADKAIEIgUEQCABIAUgAygCCBDBBwsgAkEMQQQQwQcMAgsgASANQh58Ig83AwggASgCACANIA4gDSAOVBunaiICKAAAQdCWjSBGDQILIARBxLTGACgCADYCbCAEQby0xgApAgA3AmQLIAQgBCkAZTcAUSAEIAQtAGQ6AFAgBCAELQBvOgBbIAQgBC8AbTsAWSAEKAJQIQEgACAEKQJUNwIMIAAgATYCCCAAQgM3AwAMBgsgBCACLwAcOwB9IAQgAikAFDcAdSAEMwB9IQ0gBDMAeyEOIARCATcDYCAEIA0gDiAPfHwiDTcDaCAFQeAAaiAEQeAAahDnBwsgASANNwMIIAQgBSkDQCINNwMgIAQgDTcDGAJAIAUvAYQBIgNBAkYEf0GDgICAeAUgBS8BIEUNAUGFgICAeAshBSAAQSA2AhAgAEHgssYANgIMIAAgBTYCCCAAQgM3AwAMBQsgBCkCHCEOIAUoAogBIQxBgMAAEG4iB0UNAiANQiCIpyECIA2nIQYCfiADRQRA/QwAAAAAACAAAAAAAAAAAAAAIAf9HAAhECAOQiCIpyEIIA6nIQlCACEOQQAhCkICDAELIAQgATYCcCAEIAI2AmwgBCAONwJkIAQgBjYCYCAEQYgBahDlBCAEIAQoAHE2AhAgBCAEKAB0NgATIAQgBP0AA5gB/QsDUCAEIAT9AAPIAf0LAzggBCAE/QADuAH9CwMoIAQgBP0AA6gB/QsDGCAEIAQpA9gBNwNIIAQtAHAhCiAE/QAEYCEQIAQpA3ghDiAEKAKAASEGIAQoAoQBIQkgBCgCiAEhCCAEKAKMASECIAQoApABIQEgBCgClAEhC0IACyENQbgBEG4iA0UNAyADQgA3AwggA0GAwAA2AgQgAyAHNgIAIANBADoAECADIAo6ADAgAyAQ/QsDICADIA03AxggAyAEKAIQNgAxIAMgBCgAEzYANCADIAs2AlQgAyABNgJQIAMgAjYCTCADIAg2AkggAyAJNgJEIAMgBjYCQCADIA43AzggA0IANwOgASADQQA2AqgBIAMgDDYCsAEgA0EBOgC0ASADIAT9AANQ/QsDWCADIAQpA0g3A5gBIAMgBP0AAxj9CwNoIAMgBP0AAyj9CwN4IAMgBP0AAzj9CwOIASAAIAM2AqwBIABBAjYCqAEgACAFNgIIIABCAjcDAAwECyAAQgM3AwAgAEGEgICAeDYCCAwDCyAAQSE2AhAgAEHks8YANgIMIABBg4CAgHg2AgggAEIDNwMADAILQQFBgMAAEJoJAAtBuAEQsQoACyAEQeABaiQAC7wKAQd/IwBBwAdrIgQkAAJAAkACQAJAQYCAARBuIgUEQCAFQQRrLQAAQQNxBEAgBUEAQYCAAfwLAAtBgBAQbiIGRQ0BIAZBBGstAABBA3EEQCAGQQBBgBD8CwALIARBADYCoAcgBEEANgKUByAEQQA2AogHIARBADoAhAcgBEEANgKAByAEIAY2AvwGIAQgBTYC+AYgBEICNwPwBiAEQgA3A+gGIARCgICAgCA3A+AGIARBADsBpAcgBEEAQdgG/AsAIARBADoApgcgBEEBNgLcBiAEQTE2AtgGQYAIIAMgA0GACE8bIQVBASEIAkAgA0UNACAFEG4iCEUNAyAIQQRrLQAAQQNxRSAFRXINACAIQQAgBfwLAAsgBCAFNgKwByAEIAg2AqwHIAQgBTYCqAcCQAJAA0AgBEG0B2ogBCABIAlqIAIgCWsgCCAFIAdBARBIIAQtALQHBEAgACAELQC1BzoACCAAQoGAgICAgICAgH83AgAgBCgCqAciAARAIAhBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIABqSQ0IIAFBACACIABBJ2pLGw0JIAgQogILIAQoAvgGIgFBBGsoAgAiAEF4cUGEgAFBiIABIABBA3EiAhtJDQcgAkEAIABBqIABTxsNCCABEKICIAQoAuAGIgAEQCAEKALkBiIBQQRrKAIAIgJBeHEiAyAAQQF0IgBBBEEIIAJBA3EiAhtqSQ0IIAJBACADIABBJ2pLGw0JIAEQogILIAQoAvwGIgFBBGsoAgAiAEF4cUGEEEGIECAAQQNxIgIbSQ0HIAJBACAAQagQTxsNCAwDCyAELQCjByIGQQdHIAQoArwHIAdqIgcgA0dxRQRAIAUgB0kEQCAHIAVrIgEgBCgCqAcgBWtLBEAgBEGoB2ogBSABQQFBARDWBiAEKAKwByEFCyAEKAKsByICIAVqIQcgAUECTwR/IAFBAWsiAQRAIAdBACAB/AsACyACIAEgBWoiBWoFIAcLQQA6AAAgBUEBaiEHIAQtAKMHIQYLIAAgBCkCqAc3AgQgACAHNgIMIAAgBkH/AXFBB0c2AgAgBCgC+AYiAUEEaygCACIAQXhxQYSAAUGIgAEgAEEDcSICG08NAkGkgscAQS5B1ILHABCoCQALIAQoArgHIAlqIQkgBAJ/IAUgAyAHQYCAAmoiBiADIAZJGyIGTwRAIAYMAQsgBiAFayIKIAQoAqgHIAVrSwRAIARBqAdqIAUgCkEBQQEQ1gYgBCgCrAchCCAEKAKwByEFCyAFIAhqIQYgCkECTwR/IApBAWsiCgRAIAZBACAK/AsACyAIIAUgCmoiBWoFIAYLQQA6AAAgBUEBagsiBTYCsAcgAiAJTw0ACyAJIAIgAkHI5MMAEKAFAAsgAkEAIABBqIABTxsNBSABEKICIAQoAuAGIgAEQCAEKALkBiIBQQRrKAIAIgJBeHEiAyAAQQF0IgBBBEEIIAJBA3EiAhtqSQ0FIAJBACADIABBJ2pLGw0GIAEQogILIAQoAvwGIgFBBGsoAgAiAEF4cUGEEEGIECAAQQNxIgIbSQ0EIAJBACAAQagQTxsNBQsgARCiAiAEKALsBiIABEAgBCgC8AYiAUEEaygCACICQXhxIgMgAEEBdCIAQQRBCCACQQNxIgIbakkNBCACQQAgAyAAQSdqSxsNBSABEKICCyAEQcAHaiQADwtBgIABELEKAAtBgBAQsQoAC0EBIAUQmgkAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAvjCwEDfyAAIAApAwAgAq18NwMAIAAoAghBf3MhBCACQcAATwRAA0AgAUEzai0AACABQSNqLQAAIAFBE2otAAAgAS0AACAEQf8BcXNBAnQoAsS5QyABQQFqLQAAIARBCHZB/wFxc0ECdCgCxLFDIAFBAmotAAAgBEEQdkH/AXFzQQJ0KALEqUMgAUEDai0AACAEQRh2c0ECdCgCxKFDIAFBBGotAABBAnQoAsSZQyABQQVqLQAAQQJ0KALEkUMgAUEGai0AAEECdCgCxIlDIAFBB2otAABBAnQoAsSBQyABQQhqLQAAQQJ0KALE+UIgAUEJai0AAEECdCgCxPFCIAFBCmotAABBAnQoAsTpQiABQQtqLQAAQQJ0KALE4UIgAUEMai0AAEECdCgCxNlCIAFBDWotAABBAnQoAsTRQiABQQ9qLQAAQQJ0KALEwUIgAUEOai0AAEECdCgCxMlCc3Nzc3Nzc3Nzc3Nzc3NzIgNBGHZzQQJ0KALEoUMgAUEUai0AAEECdCgCxJlDIAFBFWotAABBAnQoAsSRQyABQRZqLQAAQQJ0KALEiUMgAUEXai0AAEECdCgCxIFDIAFBGGotAABBAnQoAsT5QiABQRlqLQAAQQJ0KALE8UIgAUEaai0AAEECdCgCxOlCIAFBG2otAABBAnQoAsThQiABQRxqLQAAQQJ0KALE2UIgAUEdai0AAEECdCgCxNFCIAFBH2otAABBAnQoAsTBQiABQR5qLQAAQQJ0KALEyUJzc3Nzc3Nzc3Nzc3MgAUESai0AACADQRB2Qf8BcXNBAnQoAsSpQ3MgAUERai0AACADQQh2Qf8BcXNBAnQoAsSxQ3MgAUEQai0AACADQf8BcXNBAnQoAsS5Q3MiA0EYdnNBAnQoAsShQyABQSRqLQAAQQJ0KALEmUMgAUElai0AAEECdCgCxJFDIAFBJmotAABBAnQoAsSJQyABQSdqLQAAQQJ0KALEgUMgAUEoai0AAEECdCgCxPlCIAFBKWotAABBAnQoAsTxQiABQSpqLQAAQQJ0KALE6UIgAUErai0AAEECdCgCxOFCIAFBLGotAABBAnQoAsTZQiABQS1qLQAAQQJ0KALE0UIgAUEvai0AAEECdCgCxMFCIAFBLmotAABBAnQoAsTJQnNzc3Nzc3Nzc3NzcyABQSJqLQAAIANBEHZB/wFxc0ECdCgCxKlDcyABQSFqLQAAIANBCHZB/wFxc0ECdCgCxLFDcyABQSBqLQAAIANB/wFxc0ECdCgCxLlDcyIDQRh2c0ECdCgCxKFDIAFBNGotAABBAnQoAsSZQyABQTVqLQAAQQJ0KALEkUMgAUE2ai0AAEECdCgCxIlDIAFBN2otAABBAnQoAsSBQyABQThqLQAAQQJ0KALE+UIgAUE5ai0AAEECdCgCxPFCIAFBOmotAABBAnQoAsTpQiABQTtqLQAAQQJ0KALE4UIgAUE8ai0AAEECdCgCxNlCIAFBPWotAABBAnQoAsTRQiABQT5qLQAAQQJ0KALEyUIgAUE/ai0AAEECdCgCxMFCc3Nzc3Nzc3Nzc3NzIAFBMmotAAAgA0EQdkH/AXFzQQJ0KALEqUNzIAFBMWotAAAgA0EIdkH/AXFzQQJ0KALEsUNzIAFBMGotAAAgA0H/AXFzQQJ0KALEuUNzIQQgAUFAayEBIAJBQGoiAkE/Sw0ACwsCQCACRQ0AAkAgAkEDcSIFRQRAIAEhAwwBCyABIQMDQCADLQAAIARzQf8BcUECdCgCxMFCIARBCHZzIQQgA0EBaiEDIAVBAWsiBQ0ACwsgAkEESQ0AIAEgAmohAQNAIAMtAAAgBHNB/wFxQQJ0KALEwUIgBEEIdnMiAiADQQFqLQAAc0H/AXFBAnQoAsTBQiACQQh2cyICIANBAmotAABzQf8BcUECdCgCxMFCIAJBCHZzIgIgA0EDai0AAHNB/wFxQQJ0KALEwUIgAkEIdnMhBCADQQRqIgMgAUcNAAsLIAAgBEF/czYCCAvUCwMLfwN+AXsjAEEgayIHJAACQAJAIAIoAgAiCiACKAIIIgxrIg1BIE8EQCABKQMIIQ8gASgCECEIIAohAyAMIQQMAQsgB/0MAAAAAAAAAAAAAAAAAAAAAP0LAxAgByAR/QsDAAJAIAEpAwgiD1ANACABKAIQIggoAgAgCCkDCCIOIAgoAgQiBa0iECAOIBBUG6ciBmohAwJAIAVC/////w8gDiAOQv////8PWhunayIEQQAgBCAFTRsiBEIgIA8gD0IgWhunIgkgBCAJSRsiBEEBRgRAIAcgAy0AADoAAAwBCyAERQ0AIAcgAyAE/AoAAAsgASAPIAStIhB9Ig83AwggCCAOIBB8NwMIAkAgBCANSwRAIAIgDCAEQQFBARDWBiACKAIIIQMMAQsgDCEDIAUgBkYNAQsgBARAIAIoAgQgA2ogByAE/AoAAAsgAiADIARqIgQ2AgggBSAGRg0AIAIoAgAhAwwBCyAAQQQ6AAAgAEEANgIEDAELAkACQAJAIAMgBEYgAyAKRnFFBEAgAigCBCEFDAELIAf9DAAAAAAAAAAAAAAAAAAAAAD9CwMQIAcgEf0LAwAgD1ANASAIKQMIIg4gCCgCBCIErSIQIA4gEFQbpyIGIAgoAgBqIQUCQCAEQv////8PIA4gDkL/////D1obp2siA0EAIAMgBE0bIgNCICAPIA9CIFobpyIJIAMgCUkbIgNBAUcEQCADRQ0BIAcgBSAD/AoAAAwBCyAHIAUtAAA6AAALIAEgDyADrSIQfSIPNwMIIAggDiAQfDcDCCAEIAZGDQEgAiAKIANBAUEBENYGIAIoAgghBCACKAIEIQUgAwRAIAQgBWogByAD/AoAAAsgAiADIARqIgQ2AgggAigCACEDCyADIARGBEAgByADIAUgA0EgaiIFIANBAXQiAyADIAVJGyIDQQFBARDOBiAHKAIADQIgBygCBCEFIAIgAzYCACACIAU2AgQLAkACQCAPUA0AIAgoAgQiCUL/////DyAIKQMIIg4gDkL/////D1obp2siBkEAIAYgCU0bIgYgD0GAwAAgAyAEayILIAtBgMAATxutIhAgDyAQVBunIgsgBiALSRsiBgRAIAQgBWogCCgCACAOIAmtIhAgDiAQVBunaiAG/AoAAAsgAiAEIAZqIgQ2AgggASAPIAatIhB9Ig83AwggCCAOIBB8Ig43AwggBkUNAQNAAkAgAyAERiADIApGcUUEQCACKAIEIQUMAQsgB/0MAAAAAAAAAAAAAAAAAAAAAP0LAxAgByAR/QsDACAPUA0EIA4gCCgCBCIErSIQIA4gEFQbpyIGIAgoAgBqIQUCQCAEQv////8PIA4gDkL/////D1obp2siA0EAIAMgBE0bIgNCICAPIA9CIFobpyIJIAMgCUkbIgNBAUYEQCAHIAUtAAA6AAAMAQsgA0UNACAHIAUgA/wKAAALIAEgDyADrSIQfSIPNwMIIAggDiAQfDcDCCAEIAZGDQQgAiAKIANBAUEBENYGIAIoAgghBCACKAIEIQUgAwRAIAQgBWogByAD/AoAAAsgAiADIARqIgQ2AgggAigCACEDCyADIARGBEAgByADIAUgA0EgaiIFIANBAXQiAyADIAVJGyIDQQFBARDOBiAHKAIAQQFGDQUgBygCBCEFIAIgAzYCACACIAU2AgQLIA9QDQEgCCgCBCIJQv////8PIAgpAwgiDiAOQv////8PWhunayIGQQAgBiAJTRsiBiAPIAMgBGutIhAgDyAQVBunIgsgBiALSRsiBgRAIAQgBWogCCgCACAOIAmtIhAgDiAQVBunaiAG/AoAAAsgAiAEIAZqIgQ2AgggASAPIAatIhB9Ig83AwggCCAOIBB8Ig43AwggBg0ACwwBCyACIAQ2AggLIABBBDoAACAAIAQgDGs2AgQMAgsgAiAKNgIIIABBBDoAACAAIA02AgQMAQsgAEKBzAA3AgALIAdBIGokAAuoCwIefwF9AkAgACgChAFBgICAgHhGDQAgACgCtAEiByAAKAKAASIGSwRAIAcgBmsiCSAAKAJ4IAZrSwRAIABB+ABqIAYgCUEEQQQQ1gYgACgCgAEhBgsgACgCfCIMIAZBAnRqIQggCUECTwR/IAlBAnRBBGsiBwRAIAhBACAH/AsACyAGIAlqIgdBAWshBiAMIAdBAnRqQQRrBSAIC0EANgIAIAAgBkEBajYCgAELIAAgARDrASAAKAKEAUGAgICAeEYNACAAKAKYASIcQQJ0IQ0gACgCiAEiDCAAKAKMASISQQN0aiETIAAoAlghDiAAKAJcIRQgACgClAEhDyAAKAJ8IQkgACgCgAEhCgJAAkACQAJAAkACQCAAKALwAiIHDgIAAQILIBJFDQUgCkEBaiEPQQAhAANAIABBAWogACADbCACaiENIA8hByAJIQYgDCEAA0AgAEEEai0AACAEIAUgDSAAKAIAahDTBCEkIAdBAWsiB0UNBSAGICQ4AgAgBkEEaiEGIABBCGoiACATRw0ACyIAIAFHDQALDAULIBwEQCAKQQFqIRUDQCASBEAgAyAQbCACaiEIIBUhByAJIQYgDCEAA0AgAEEEai0AACAEIAUgCCAAKAIAahDTBCEkIAdBAWsiB0UNBiAGICQ4AgAgBkEEaiEGIABBCGoiACATRw0ACwsgEEEBaiEQIA0hCyAOIQggESEAIA8hBwNAIAcoAgAiBiAKTw0EIAAgFE8NBiAHQQRqIQcgCCAJIAZBAnRqKgIAQwAAAEGUQwAAf0OVQwAAgMCSOAIAIAhBBGohCCAAQQFqIQAgC0EEayILDQALIA5BJGohDiARQQlqIREgASAQRw0ACwwFCyASRQ0EIApBAWohD0EAIQADQCAAQQFqIAAgA2wgAmohDSAPIQcgCSEGIAwhAANAIABBBGotAAAgBCAFIA0gACgCAGoQ0wQhJCAHQQFrIgdFDQQgBiAkOAIAIAZBBGohBiAAQQhqIgAgE0cNAAsiACABRw0ACwwECyAAKAKwASIfQQJ0ISAgACgCpAEiIUECdCEiIAAoAnAhFiAAKAJ0IR0gACgCrAEhECAAKAJkIRcgACgCaCEeIAAoAqABIREgCkEBaiEVIAdBAkshIwNAIBIEQCADIBtsIAJqIQggFSEHIAkhBiAMIQADQCAAQQRqLQAAIAQgBSAIIAAoAgBqENMEISQgB0EBayIHRQ0EIAYgJDgCACAGQQRqIQYgAEEIaiIAIBNHDQALCyANIQsgDiEIIBohACAPIQcgHARAA0AgBygCACIGIApPDQMgACAUTw0FIAdBBGohByAIIAkgBkECdGoqAgBDAAAAQZRDAAB/Q5VDAACAwJI4AgAgCEEEaiEIIABBAWohACALQQRrIgsNAAsLICIhCCAXIQcgGSEAIBEhBgJAICFFDQACQANAIAYoAgAiCyAKTw0BIAAgHkkEQCAGQQRqIQYgByAJIAtBAnRqKgIAQwAAAEGUQwAAf0OVQwAAgMCSOAIAIAdBBGohByAAQQFqIQAgCEEEayIIRQ0DDAELCyAAIB5BvPDGABDwBwALIAsgCkGs8MYAEPAHAAsCQCAjRQ0AICAhCCAWIQcgGCEAIBAhBiAfRQ0AAkADQCAGKAIAIgsgCk8NASAAIB1JBEAgBkEEaiEGIAcgCSALQQJ0aioCAEMAAABBlEMAAH9DlUMAAIDAkjgCACAHQQRqIQcgAEEBaiEAIAhBBGsiCEUNAwwBCwsgACAdQdzwxgAQ8AcACyALIApBzPDGABDwBwALIBZB1ABqIRYgGEEVaiEYIBdBPGohFyAZQQ9qIRkgDkEkaiEOIBpBCWohGiABIBtBAWoiG0cNAAsMAwsgBiAKQYzwxgAQ8AcACyAKIApB/O/GABDwBwALIAAgFEGc8MYAEPAHAAsLxgoDFH8CfgF7IwBB0AJrIhAkAEKAgICAgICAgMAAIAGtIhmAIhogGX5CgICAgICAgIDAAFKtAn8gAUGBIE8EQEEBIAFBAXJnQR9zIgVBAXYgBUEBcWoiBXQgASAFdmpBAXYMAQtBwAAgASABQQF2ayIFIAVBwABPGwshESAafCEZIABBBGshFCAAQRBrIRUgAEEIaiETQQEhCQNAQQAhDkEBIQggASANSyIWBEAgACANQQJ0Ig5qIQwgGSANQQF0An8CQCABIA1rIgggEUkNAAJAIAhBAkkEQCAIIQYMAQsCQAJAAkACQCAMKAIEIgUgDCgCAEkiB0UEQEECIQYgCEECRg0FIBMgDUECdGohCwNAIAUgCygCACIFSw0DIAtBBGohCyAIIAZBAWoiBkcNAAsMAQsgCEECRg0CQQIhBiATIA1BAnRqIQsDQCAFIAsoAgAiBU0NAiALQQRqIQsgCCAGQQFqIgZHDQALCyAIIQYLIAYgEUkNAyAHRQ0CIAZBAXYiCEUNAiAMIAZBAnQiBWohD0EAIQsgCEEESQ0BIBUgBSAOamohByAIQfz///8HcSILIQUDQCAMIAf9AAIAIAz9AAIAIhv9DQwNDg8ICQoLBAUGBwABAgP9CwIAIAcgGyAb/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAHQRBrIQcgDEEQaiEMIAVBBGsiBQ0ACyAIIAtGDQIMAQsgDEEIaiEPQQAhC0EBIQhBAiEGCyAAIAtBAnQiBSAOamohByAIIAtrIQwgDyAFa0EEayEFA0AgBygCACEIIAcgBSgCADYCACAFIAg2AgAgBUEEayEFIAdBBGohByAMQQFrIgwNAAsLIAZBAXRBAXIMAQsgCCARIAggEUkbQQF0IARFDQAaIAxBICAIIAhBIE8bIgUgAiADQQBBABCYASAFQQF0QQFyCyIIQQF2aq1+IA0gCUEBdmutIA2tfCAZfoV5pyEOCwJAAkAgCkECSQ0AIBQgDUECdCIFaiEMIAAgBWohFwNAIApBAWsiCyAQQY4CamotAAAgDkkNAQJ/AkACQCADIBBBBGogC0ECdGooAgAiB0EBdiIFIAlBAXYiBmoiD08gByAJckEBcUVxRQRAIAAgDSAPa0ECdGohCiAHQQFxRQ0BDAILIA9BAXQMAgsgCiAFIAIgAyAFQQFyZ0EBdEE+c0EAEJgBCyAJQQFxRQRAIAogBUECdGogBiACIAMgBkEBcmdBAXRBPnNBABCYAQsCQCAGRSAFRXINACADIAYgBSAFIAZLIgYbIgdJDQAgCiAFQQJ0aiEJIAdBAnQiBQRAIAIgCSAKIAYbIAX8CgAACyACIAVqIQcCQCAGRQRAIAIhBQNAIAogCSgCACIGIAUoAgAiEiAGIBJJIhgbNgIAIApBBGohCiAFIAYgEk9BAnRqIgUgB0YNAiAJIBhBAnRqIgkgF0cNAAsMAQsgDCEGA0ACQCAGIAdBBGsiBygCACIFIAlBBGsiEigCACIJIAUgCUsbNgIAIAcgBSAJSUECdGohByASIAUgCU9BAnRqIgkgCkYNACAGQQRrIQYgAiAHRw0BCwsgCSEKIAIhBQsgByAFayIGRQ0AIAogBSAG/AoAAAsgD0EBdEEBcgshCUEBIQcgCyIKQQFLDQALDAELIAohBwsgEEGOAmogB2ogDjoAACAQQQRqIAdBAnRqIAk2AgAgFgRAIAdBAWohCiAIQQF2IA1qIQ0gCCEJDAELCyAJQQFxRQRAIAAgASACIAMgAUEBcmdBAXRBPnNBABCYAQsgEEHQAmokAAuLCwMLfwJ7AX5BASEKQQEhDCAEQQFHBEBBASEIQQEhBwNAAkAgBCAFIAlqIgZLBEAgAyAIai0AACIIIAMgBmotAAAiBk8EQCAGIAhHBEBBASEKQQAhBSAHIQkgB0EBaiEHDAMLQQAgBUEBaiIIIAggCkYiBhshBSAIQQAgBhsgB2ohBwwCCyAFIAdqQQFqIgcgCWshCkEAIQUMAQsgBiAEQeCPwgAQ8AcACyAFIAdqIgggBEkNAAtBASEIQQEhB0EAIQVBACEGA0ACQAJAIAQgBSAGaiILSwRAIAMgCGotAAAiCCADIAtqLQAAIgtLDQEgCCALRwRAQQEhDEEAIQUgByEGIAdBAWohBwwDC0EAIAVBAWoiCCAIIAxGIgsbIQUgCEEAIAsbIAdqIQcMAgsgCyAEQeCPwgAQ8AcACyAFIAdqQQFqIgcgBmshDEEAIQULIAUgB2oiCCAESQ0ACwsCQAJAAkACQAJAIAkgBiAGIAlJIgcbIgsgBE0EQCAKIAwgBxsiByALaiIFIAdJIAQgBUlyDQECfyADIAMgB2ogCxD3BwRAAkACQCAEQQJJBEBBACEIDAELIAMhBSAEQR5xIgghBwNAQgEgBS8AAP0Q/Qw/Pz8/Pz8/Pz8/Pz8/Pz8//U79iQH9qQH9yQEiEf0dAIb9EkIBIBH9HQGG/R4BIBD9UCEQIAVBAmohBSAHQQJrIgcNAAsgECAQIBD9DQgJCgsMDQ4PAAECAwQFBgf9UP0dACESIAQgCEYNAQsgAyAIaiEFIAQgCGshBwNAQgEgBTEAAIYgEoQhEiAFQQFqIQUgB0EBayIHDQALCyAEIAtrIgcgCyAHIAtLG0EBaiEHQX8hBSALIQlBfwwBCyAEQQFrIQ5BASEJQQAhBUEBIQZBACEMA0AgBCAGIgggBWoiDUsEQCAEIAVrIAhBf3NqIgYgBE8NCCAOIAUgDGprIgogBE8NBwJAAkAgAyAGai0AACIGIAMgCmotAAAiCk8EQCAGIApGDQEgCEEBaiEGQQAhBUEBIQkgCCEMDAILIA1BAWoiBiAMayEJQQAhBQwBC0EAIAVBAWoiBiAGIAlGIgobIQUgBkEAIAobIAhqIQYLIAcgCUcNAQsLQQEhCUEAIQVBASEGQQAhCgNAIAQgBiIIIAVqIg9LBEAgBCAFayAIQX9zaiIGIARPDQUgDiAFIApqayINIARPDQYCQAJAIAMgBmotAAAiBiADIA1qLQAAIg1NBEAgBiANRg0BIAhBAWohBkEAIQVBASEJIAghCgwCCyAPQQFqIgYgCmshCUEAIQUMAQtBACAFQQFqIgYgBiAJRiINGyEFIAZBACANGyAIaiEGCyAHIAlHDQELCyAEIAogDCAKIAxLG2shCUEAIQUCfwJAAkACQAJAIAcOAgACAQsgBwwDCyADIQggB0F+cSIFIQYDQEIBIAgvAAD9EP0MPz8/Pz8/Pz8/Pz8/Pz8/P/1O/YkB/akB/ckBIhH9HQCG/RJCASAR/R0Bhv0eASAQ/VAhECAIQQJqIQggBkECayIGDQALIBAgECAQ/Q0ICQoLDA0ODwABAgMEBQYH/VD9HQAhEiAFIAdGDQELA0BCASADIAVqMQAAhiAShCESIAcgBUEBaiIFRw0ACwtBAAshBSAECyEIIAAgBDYCPCAAIAM2AjggACACNgI0IAAgATYCMCAAIAg2AiggACAFNgIkIAAgAjYCICAAQQA2AhwgACAHNgIYIAAgCTYCFCAAIAs2AhAgACASNwMIIABBATYCAA8LQQAgCyAEQaCQwgAQoAUACyAHIAUgBEGQkMIAEKAFAAsgBiAEQfCPwgAQ8AcACyANIARBgJDCABDwBwALIAogBEGAkMIAEPAHAAsgBiAEQfCPwgAQ8AcAC58MARN/IwBBIGsiByQAAkAgAS0A+AJBCEcEQAJAAkAgAwRAIAFByAJqIRMgAUH9AmohDCAHQQhqQQVyIRQgAUHgAmohFiADIQgDQCABLQD4AiENIAFBCDoA+AIgByAMLwAAOwEEIAcgDC0AAjoABgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDUEIRwRAIAEoAoQDIQogASgCgAMhDyABKAD5AiEOIA1BBmtB/wFxQQFqQQAgDUEFSxtBAWsOAgIDAQtB3LXEABCZCgALIBQgDC8AADsAACAUIAwtAAI6AAIgByAONgAJIAcgDToACCAHIA82AhQgCkUgCEEET3ENAyAIQQQgCmsiBSAFIAhLGyIFIApqIgYgCkkgBkEFT3INBiAFBEAgB0EUaiAKaiACIAX8CgAACyAGQQRGBEAgACABIAdBCGogB0EUaiAEIAUQPAwFCyABIAY2AoQDIAEgBygCFDYCgAMgASAHKQMINwP4AiAAQQA6AAggACAFNgIEIABBADYCAAwECyABKALcAiIFRQ0EIAEoAuACIhAgASgC6AIiEWsiBiAIIAYgCEkbIgYgBSAFIAZLGyEJIAEtAJEDRQRAIBMgAiAJEN8BCyABLQDsAg0NIAEoAugCIgYgASgC4AIiC0cEQCAGIQUMDQsgASgCiAMiBUUNASABIAUgBSAGIAUgBkkbIhJrNgKIA0EAIQtBACEFIAZFDQwgB0EUaiAGIAEoAuQCIAYgEmoiC0EBQQEQzgYgBygCFEEBRg0GIAcoAhghBSABIAs2AuACIAEgBTYC5AIgASgC6AIhBQwMCyABKALcAiIFIAggBSAISRsiCSEGIAQNBgwHCyAAQSc6AAQMBwsgACABIAdBCGogAiAEQQQQPAsgACgCAA0QIAAtAAgMCgsgAUIANwOAAyAAQgA3AgAgAEEAOgAIIAEgDq1CCIZCBIQ3A/gCQQAMCQsgCiAGQQRB7LXEABCgBQALIAcoAhggBygCHBCaCQALIAEoAvACIhAtAKMHQQdGDQACQCABLQD0Ag0AIAEtAPUCQQFxRQ0AIBBBAToApgcLIAQoAgQiCyAEKAIMIhEoAgAiF0GAQGsiBiAGIAtLGyISIAQoAggiFSgCACIGSQ0CIAdBFGogECACIAkgBCgCACAGaiASIAZrIBcgBmtBABBIIActABRFBEAgBygCGCEGIBEgESgCACAHKAIcaiILNgIAAkAgEC0AowdBB0cEQCALQYCAAkkNASALQYCAAmsiCyAVKAIATQ0BCyAVIAs2AgALIAFBAToA9AIMAQsgACAHLQAVOgAFIABBHDoABAwBCyABLQCRA0UEQCAGIAlLDQMgEyACIAYQ3wEgASgC3AIhBQsgASAFIAZrNgLcAgJAIAUgBkYEQCABIA6tQgiGQgSENwP4AkEAIQ9BACEKDAELIAEgDjYA+QIgASANOgD4AiAMIAcvAQQ7AAAgDCAHLQAGOgACCyABIAo2AoQDIAEgDzYCgAMgAEEFOgAIIAAgBjYCBCAAQQA2AgBBBQwFCyAAQQE2AgAMCgsgBiASIAtBzLXEABCgBQALQQAgBiAJQfy1xAAQoAUACwJAAkAgCyAFayAJSQRAIBYgBSAJEOIGIAEoAugCIQUMAQsgECARRg0BCyAJRQ0AIAEoAuQCIAVqIAIgCfwKAAALIAEgBSAJajYC6AILIAEgASgC3AIiBSAJazYC3AICQCAFIAlGBEAgASAOrUIIhkIEhDcD+AJBACEPQQAhCgwBCyABIA42APkCIAEgDToA+AIgDCAHLwEEOwAAIAwgBy0ABjoAAgsgASAKNgKEAyABIA82AoADIABBADoACCAAIAk2AgQgAEEANgIAQQALIAAoAgQhBUH/AXENAyAFIAhLDQIgAiAFaiECIAggBWsiCA0ACwsgAEEAOgAIIAAgAzYCBCAAQQA2AgAMAwsgBSAIIAhBjLnEABCgBQALIAUgCE0EQCAAQQA2AgAgACADIAhrIAVqNgIEDAILIAUgCCAIQZy5xAAQoAUACyAAQQI2AgggAEEmOgAEIABBATYCAAsgB0EgaiQAC+EJAQ1/IwBBIGsiBCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAihBAkcEQCABKALkAUE4bCECIAEoAuABQRhqIQMCQANAIAMhASACRQ0BIAJBOGshAiABQThqIQNByNzGAEERIAFBBGsoAgAgASgCABDCA0UNAAtBASELQQEhDAJAIAFBGGsiASgCGCIIRQ0AIAEoAhQhAyAIEG4iDEUNAyAIRQ0AIAwgAyAI/AoAAAsCQCABKAIkIglFDQAgASgCICEDIAkQbiILRQ0EIAlFDQAgCyADIAn8CgAAC0EBIQ0CQCABKAIwIgpFDQAgASgCLCEDIAoQbiINRQ0FIApFDQAgDSADIAr8CgAACyABKAIAQQFGBEACQCABKAIMIgJFBEBBACECQQEhBwwBCyABKAIIIQEgAhBuIgdFDQ0gAkUNACAHIAEgAvwKAAALIAIhAwwICwJAIAEoAgwiBUUEQEEAIQVBASEBDAELIAEoAgghAyAFEG4iAUUNBiAFRQ0AIAEgAyAF/AoAAAsgBEEQaiABIAVBgICAARDeASAEKAIUIQMCQCAEKAIQQQFGBEAgBEEeOgAAIANBgICAgHhHDQEgBEEDOgABIAAgBBCRBAwKCyAEQRBqIAQoAhgiByAEKAIcIgIQlwMgBCgCEEEBRgRAIAMEQCAHQQRrKAIAIgJBeHEiBkEEQQggAkEDcSICGyADakkNDyACQQAgBiADQSdqSxsNECAHEKICCyAEQR47AQAMCAsgBUUNCCABQQRrKAIAIgZBeHEiDkEEQQggBkEDcSIGGyAFakkNDSAGQQAgDiAFQSdqSxsNDiABEKICDAgLIARBBDoAASADRQ0GIAQoAhgiAkEEaygCACIHQXhxIgZBBEEIIAdBA3EiBxsgA2pJDQwgB0EAIAYgA0EnaksbDQ0gAhCiAiAAIAQQkQQMCAsgAEKGgICAgICAgIB/NwMADAkLQdivxgAQmQoAC0EBIAgQmgkAC0EBIAkQmgkAC0EBIAoQmgkAC0EBIAUQmgkACyAAIAQQkQQMAQsgBEEoOgAAAkAgAkUEQEEBIQUMAQsgAhBuIgFFDQQgAkUiBkUEQCABIAcgAvwKAAALIAJBAEgNAiACEG4iBUUNBCAGRQRAIAUgASAC/AoAAAsgAUEEaygCACIGQXhxIg5BBEEIIAZBA3EiBhsgAmpJDQUgBkEAIA4gAkEnaksbDQYgARCiAgsgACACNgIMIAAgBTYCCCAAIAI2AgQgAEEGNgIAIAchASADIQULIAgEQCAMQQRrKAIAIgBBeHEiA0EEQQggAEEDcSIAGyAIakkNBCAAQQAgAyAIQSdqSxsNBSAMEKICCyAJBEAgC0EEaygCACIAQXhxIgNBBEEIIABBA3EiABsgCWpJDQQgAEEAIAMgCUEnaksbDQUgCxCiAgsgCgRAIA1BBGsoAgAiAEF4cSIDQQRBCCAAQQNxIgAbIApqSQ0EIABBACADIApBJ2pLGw0FIA0QogILIAVFDQEgAUEEaygCACIAQXhxIgNBBEEIIABBA3EiABsgBWpJDQMgAEEAIAMgBUEnaksbDQQgARCiAgwBCxCYCgALIARBIGokAA8LQQEgAhCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC94MAhl/AXsjAEGACGsiAiQAAkACQAJAIAEoAtgBQYGAgIB4RwRAIAEoAtwBIQMgASgC0AEhCyABKALgASEIIAEoAtQBIQwgASgCzAEhDSAC/QwAAAD/AAAA/wAAAP8AAAD/Ihv9CwDwByACIBv9CwDgByACIBv9CwDQByACIBv9CwDAByACIBv9CwCwByACIBv9CwCgByACIBv9CwCQByACIBv9CwCAByACIBv9CwDwBiACIBv9CwDgBiACIBv9CwDQBiACIBv9CwDABiACIBv9CwCwBiACIBv9CwCgBiACIBv9CwCQBiACIBv9CwCABiACIBv9CwDwBSACIBv9CwDgBSACIBv9CwDQBSACIBv9CwDABSACIBv9CwCwBSACIBv9CwCgBSACIBv9CwCQBSACIBv9CwCABSACIBv9CwDwBCACIBv9CwDgBCACIBv9CwDQBCACIBv9CwDABCACIBv9CwCwBCACIBv9CwCgBCACIBv9CwCQBCACIBv9CwCABCACIBv9CwDwAyACIBv9CwDgAyACIBv9CwDQAyACIBv9CwDAAyACIBv9CwCwAyACIBv9CwCgAyACIBv9CwCQAyACIBv9CwCAAyACIBv9CwDwAiACIBv9CwDgAiACIBv9CwDQAiACIBv9CwDAAiACIBv9CwCwAiACIBv9CwCgAiACIBv9CwCQAiACIBv9CwCAAiACIBv9CwDwASACIBv9CwDgASACIBv9CwDQASACIBv9CwDAASACIBv9CwCwASACIBv9CwCgASACIBv9CwCQASACIBv9CwCAASACIBv9CwBwIAIgG/0LAGAgAiAb/QsAUCACIBv9CwBAIAIgG/0LADAgAiAb/QsAICACIBv9CwAQIAIgG/0LAAAgCEEDbiEKIAhBBE8EQCAIQQRrIgFBC00EQCACIQFBgAIhBSAIIQQMAwtBgAJBgAIgAUEDbiIBIAFBgAJPG0EBaiIBIAFBA3EiAUEEIAEbayIGayEFIAMgBkEDbGogCCAGQX1saiEEIAIgBkECdGohASACIQcDQCAHIANBCWogA0EGaiADQQNqIAP9XAAA/VYAAAH9VgAAAv1WAAAD/QsAACADQQxqIQMgB0EQaiEHIAZBBGsiBg0ACyEDDAILIAIhASAIIgRFDQMMAgtByLzEAEEUQdy8xAAQlAgACwNAIAVFBEBBAEEAQZy9xAAQ8AcACyABIAMoAAA2AAAgAUEEaiEBIAVBAWshBSADQQNqIQMgBEEDayIEQQNLDQALIAUNAEEAQQBB7LzEABDwBwALIARBA0YEQCABIAMtAAI6AAIgASADLwAAOwAADAELQQBBAyAEQfy8xAAQoAUACwJAQQBBACAMIA1BgYCAgHhGIgEbIgMgAyAKSyIDGyIHRQ0AQQFBASALIAMbIAEbIQFBgAIgByAHQYACTxshBkEAIQkgB0EQTwRAIAZB8ANxIQkgBkECdEFAcSELQQAhBSABIQMDQCADQQFqLQAAIQwgA0ECai0AACENIANBA2otAAAhDiADQQRqLQAAIQ8gA0EFai0AACEQIANBBmotAAAhESADQQdqLQAAIRIgA0EIai0AACETIANBCWotAAAhFCADQQpqLQAAIRUgA0ELai0AACEWIANBDGotAAAhFyADQQ1qLQAAIRggA0EOai0AACEZIAMtAAAhGiACIAVqIgRBP2ogA0EPai0AADoAACAEQTtqIBk6AAAgBEE3aiAYOgAAIARBM2ogFzoAACAEQS9qIBY6AAAgBEEraiAVOgAAIARBJ2ogFDoAACAEQSNqIBM6AAAgBEEfaiASOgAAIARBG2ogEToAACAEQRdqIBA6AAAgBEETaiAPOgAAIARBD2ogDjoAACAEQQtqIA06AAAgBEEHaiAMOgAAIARBA2ogGjoAACADQRBqIQMgCyAFQUBrIgVHDQALIAYgCUYNAQsgBiAJayEFIAEgCWohAyAJQQJ0IAJqQQNqIQEDQCABIAMtAAA6AAAgA0EBaiEDIAFBBGohASAFQQFrIgUNAAsLIAhBgwZJBEAgByAKRwRAIApBAnQgB0ECdCIDayEBIAIgA2pBA2ohAwNAIANB/wE6AAAgA0EEaiEDIAFBBGsiAQ0ACwsgACACQYAI/AoAACACQYAIaiQADwsgByAKQYACQYy9xAAQoAUAC6ULBBp/AX4BfQF7IwBBMGsiBCQAIAQgAjYCBCAEIAE2AgACQCADKAIEIhAgAkEDbCIFTwRAIAIgAygCDCIOTQRAIAUgAygCFCIRTQRAIAUgAygCHCISTQRAIAMoAiQiEyACQQJ0IgVPBEAgACgCCCIPIAEgAmpPBEAgAkUEQEEAIQUMBwsgAygCACEXIAMoAgghGCADKAIQIRkgAygCGCEaIAMoAiAhFCAPIAFrIgJBACACIA9NGyEbIAAoAgQgAUEsbGohAiADKAJIIRwgAygCTCEVIAMoAkAhHSADKAJEIRYCQAJAAkACQANAAkACQAJAAkAgCyAbRwRAIAlBA2oiBSAQSw0BIAJBEGogDSAXaiIGQQhqIAb9XQIA/VYCAAIiIP1aAgACIAJBCGogIP1bAgAAIAsgDkYNAyAIIBhqKAIAIgxB////A3EhCiAMQYCAgIB4cSEGIAxBgICA/AdxIgdBgICA/AdGBEAgCkENdiAGQRB2ckGABEEAIAobckGA+AFyIQYMBQsgBkEQdiEGIAdBgICAuARLDQIgB0GAgIDEA08EQCAMQQx2IAxB/98AcUEAR3EgB0ENdiAKQQ12akGAgAFqIAZyaiEGDAULIAdBgICAmANJDQQgCkGAgIAEciIMQf4AIAdBF3YiCmt2IQcgDEEdIAprIgp2QQFxBH8gB0EDIAp0QQFrIAxxQQBHagUgBwsgBnIhBgwECyABIAtqIA9B+NbGABDwBwALIAkgBSAQQbjaxgAQoAUACyAGQYD4AXIhBgwBCyAOIA5B2NnGABDwBwALIAJBHGogBjsBACAFIBFLDQEgBCANIBlqIgb9XQIAIAZBCGoqAgAiH/0gAiAf/SAD/QsEECACIARBEGoiBxDuAiAFIBJLDQIgBCANIBpqIgn9XQIAIAlBCGoqAgAiH/0gAiAf/SAD/QsEECACIAcQ5gIgCEEDaiATTw0DIAQgFP0AAgD9CwQQIAIgBxCNAiALIBZGDQQgAkEUaiAIIB1qKAIANgIAIAsgFUcEQCACQRhqIAggHGooAgA2AgAgDUEMaiENIBRBEGohFCACQSxqIQIgCEEEaiEIIAUhCSALQQFqIgsgBCgCBCIFTw0MDAELCyAVIBVBmNrGABDwBwALIAkgBSARQejZxgAQoAUACyAJIAUgEkH42cYAEKAFAAsgCCAIQQRqIBNBqNrGABCgBQALIBYgFkGI2sYAEPAHAAsgBCAPNgIMIARCgICAgBAiHiAEQQxqrYQ3AyAgBCAeIARBBGqthDcDGCAEIB4gBK2ENwMQQYSMwAAgBEEQakHI2cYAEJMIAAsgBCATNgIIIAQgBTYCDCAEQoCAgIAQIh4gBEEMaq2ENwMYIAQgHiAEQQhqrYQ3AxBBwY3AACAEQRBqQbjZxgAQkwgACyAEIBI2AgggBCAFNgIMIARCgICAgBAiHiAEQQxqrYQ3AxggBCAeIARBCGqthDcDEEH/jcAAIARBEGpBqNnGABCTCAALIAQgETYCCCAEIAU2AgwgBEKAgICAECIeIARBDGqthDcDGCAEIB4gBEEIaq2ENwMQQZ6OwAAgBEEQakGY2cYAEJMIAAsgBCAONgIMIARCgICAgBAiHiAEQQRqrYQ3AxggBCAeIARBDGqthDcDEEGgjcAAIARBEGpBiNnGABCTCAALIAQgEDYCCCAEIAU2AgwgBEKAgICAECIeIARBDGqthDcDGCAEIB4gBEEIaq2ENwMQQd+NwAAgBEEQakH42MYAEJMIAAsgACABIAUgAygCKCADKAIsIAMoAjAgAygCNCADKAI4IAMoAjwQ1gMCQCADKAJUIgJFDQAgAygCXCIJRQ0AIAMoAlAhCCAAKAIQIgYgACgCFCIAIAEgBSADKAJYIAkQnwMgBiAAIAEgBSAIIAIQvQMLIARBMGokAAvTCwIRfwF+IwBBEGsiAyQAAkACQCAAAn8CQAJAAkACQAJAAkACQCABKAKoAUEBaw4CAQIACwJAAkACQEElEG4iAQRAIAFBnbPGACkAADcAHSABQZCzxgD9AAAA/QsAECABQYCzxgD9AAAA/QsAAEEMEG4iAkUNASACQSU2AgggAiABNgIEIAJBJTYCAEEMEG4iAUUNAiABQSg6AAggAUG4s8YANgIEIAEgAjYCACADIAGtQiCGQgOENwIADAMLQQFBJRCaCQALQQwQsQoAC0EMELEKAAsMAgsgAyABQbABaiACEOABDAELIAEoAqwBIQogAigCACISIQUgAigCCCINIQgCQAJ/AkAgEiANa0EgSQRAIAMgCiACEJkEIAMtAABBBEcNASADKAIERQ0DIAIoAgghCCACKAIAIQULQYDAACEMAkACQANAAkAgBSASRyAFIAhHckUEQCADIAogAhCZBCADLQAAQQRHDQUgAigCCCEIIAMoAgRFDQEgAigCACEFCyACKAIEIQEgBSAIRgRAIAMgBSABIAVBIGoiASAFQQF0IgUgASAFSxsiBUEBQQEQzgYgAygCAEEBRgRAQQEhC0EAIQRBgMwADAcLIAMoAgQhASACIAU2AgAgAiABNgIECyABIAhqIRAgDCAFIAhrIhMgDCATSRsiDwRAIBBBACAP/AsACyADIAogECAPEPECAkACQAJ/AkACQAJAAkACQAJ/IAMtAABBBEcEQCADKAIEIQRBACEJIAMoAgAMAQsgAygCBCIJIA9LDQcgDkGAfnFBBHILIg5B/wFxQQFrDgQCAQAHCwsgBC0ACEEjRw0JIAQoAgAhASAEQQRqKAIAIgYoAgAiBwRAIAEgBxEDAAsgBigCBCIGBEAgAUEEaygCACIHQXhxIhFBBEEIIAdBA3EiBxsgBmpJDRUgB0EAIBEgBkEnaksbDRQgARCiAgsgBEEEaygCACIBQXhxIgZBEEEUIAFBA3EiARtJDRQgAUUgBkE0SXINAgwTCyAELQAIQSNGDQJBAiELDAkLIA5BgP4DcUGAxgBGDQFBASELDAgLQQAMAQtBAQshAQNAAkACQAJAIAFFBEAgBBCiAgwBCyADIAogCSAQaiAPIAlrIgEQ8QICQAJAAkACfyADLQAAQQRHBEAgAygCBCEEIAMoAgAMAQsgASADKAIEIgZJDQggBiAJaiEJIA5BgH5xQQRyCyIOQf8BcUEBaw4EAgABCAwLIAQtAAhBI0YNAkECIQsMCwsgBC0ACEEjRw0JIAQoAgAhASAEQQRqKAIAIgYoAgAiBwRAIAEgBxEDAAsgBigCBCIGBEAgAUEEaygCACIHQXhxIhFBBEEIIAdBA3EiBxsgBmpJDRUgB0EAIBEgBkEnaksbDRQgARCiAgsgBEEEaygCACIBQXhxIgZBEEEUIAFBA3EiARtJDRQgAUUgBkE0SXINAwwTCyAOQYD+A3FBgMYARw0BC0EBIQEMAgtBASELDAcLQQAhAQwACwALQYyyxgBBJEGwssYAEKgJAAsgAiAIIAlqIgg2AgggCUUNACAJIA9HIAwgE0tyDQEgDEEASCAMQQF0IQxFDQFBfyEMDAELCyAIIA1rIQQMBAtBAyELCyACIAggCWo2AgggDkGAfnEMAQsgAykDACIUQiCIpyEEIBSnIgtB/wFxQQRGDQEgC0GAfnELIQEgAyAENgIEIAMgCzoAACADIAFBGHY6AAMgAyABQQh2OwABDAQLIAotALQBQQFHDQEgAigCCCIBIA1JDQIgCkGgAWogAigCBCANaiABIA1rEN8BIAooArABIAooAqgBRg0BIANBFUGwn8cAQRAQ8gYLIAMtAABBBEcNAiADKAIEIQQLIAAgBK03AwhBAAwCCyANIAEgAUH0vcYAEKAFAAsgACADKQMANwIEQQELNgIAIANBEGokAA8LQeSCxwBBLkGUg8cAEKgJAAtBpILHAEEuQdSCxwAQqAkAC5gLAiB/Fn0jAEEgayIKJAAgACABEOsBIAFBDGwhHCAALQDUASEdIAAtAMwBIR4gAC0AxAEhHyAALQC8ASEgIAAoAkwhCyAAKAJQIQggACgCKCEhIAAoAiwhEyAAKAI0ISIgACgCOCEMIAAoAkAhIyAAKAJEIQ0gACgCHCEkIAAoAiAhDiAAKALQASEUIAAoAsgBIRUgACgCwAEhFiAAKAK4ASEXIAAoAhAhJSAAKAIUISZBACEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0AgCiACIBhqIgA2AgggJiAAQQh2IgBNBEAgCiAKQQhqrUKAgICAEIQ3AxggCkEMaiIAQcCFwAAgCkEYahC3ByAAEMIIIQAMEAsgICAFIAYgAyAXahC3BSEHQwAAAABDAACAPyAfIAUgBiADIBZqELcFIhBBFHZB/wdxs0MAwH9ElUMAAAC/kkPzBLU/lCIpICmUkyAQQQp2Qf8HcbNDAMB/RJVDAAAAv5JD8wS1P5QiKiAqlJMgEEH/B3GzQwDAf0SVQwAAAL+SQ/MEtT+UIisgK5STIicgJyAnXBsiJ0MAAAAAICdDAAAAAF4bkSEoIB4gBSAGIAMgFWoQtwUhGSAdIAUgBiADIBRqELcFIREgKSEnAkACQAJAIBBBHnYiGg4CAgABCyAoIScMAQsgKiEnCyABIA5PDQIgJSAAQcgAbGoiACoCCCEsIAAqAhQhNCAAKgIEIS0gACoCECE1IAAqAjAhLiAAKgI8ITYgACoCICEvIAAqAiwhNyAAKgIYITAgACoCJCE4IAAqAjghMSAAKgJEITkgACoCNCEyIAAqAkAhOiAAKgIcITMgACoCKCE7IBIgJGoiGyAAKgIAIjwgB0EVdrNDAOD/RJUgACoCDCA8k5SSOAIAIAFBAWoiACAOTw0DIBtBBGogLSAHQQt2Qf8HcbNDAMB/RJUgNSAtk5SSOAIAIAFBAmoiDyAOTw0EIBtBCGogLCAHQf8PcbNDAOD/RJUgNCAsk5SSOAIAIAEgDU8NBSASICNqIgcgMCAZQRV2s0MA4P9ElSA4IDCTlJIQiAQ4AgAgACANTw0GIAdBBGogMyAZQQt2Qf8HcbNDAMB/RJUgOyAzk5SSEIgEOAIAIA0gD00NByAHQQhqIC8gGUH/D3GzQwDg/0SVIDcgL5OUkhCIBDgCACABIAxPDQggEiAiaiIHIC4gEUEYdrNDAAB/Q5UgNiAuk5SSOAIAIAAgDE8NCSAHQQRqIDIgEUEQdkH/AXGzQwAAf0OVIDogMpOUkjgCACAMIA9NDQogB0EIaiAxIBFBCHZB/wFxs0MAAH9DlSA5IDGTlJI4AgAgEyAYRg0LIAkgIWogEUH/AXGzQwAAf0OVOAIAIAggCU0NDCALICc4AgAgCUEBaiIAIAhPDQ0gC0EEaiAoICsgGkECRhsgKiAQQQBIGzgCACAJQQJqIgAgCE8NDiALQQhqICggKyAaQQNGGzgCACAJQQNqIgAgCE8NASALQQxqICkgKCAaGzgCACAYQQFqIRggBCAXaiEXIAQgFmohFiAEIBVqIRUgBCAUaiEUIAFBA2ohASALQRBqIQsgCUEEaiEJIBwgEkEMaiISRw0AC0EAIQAMDgsgACAIQdjqxgAQ8AcACyABIA5BiOnGABDwBwALIAAgDkGY6cYAEPAHAAsgDyAOQajpxgAQ8AcACyABIA1BuOnGABDwBwALIAAgDUHI6cYAEPAHAAsgDyANQdjpxgAQ8AcACyABIAxB6OnGABDwBwALIAAgDEH46cYAEPAHAAsgDyAMQYjqxgAQ8AcACyATIBNBmOrGABDwBwALIAkgCEGo6sYAEPAHAAsgACAIQbjqxgAQ8AcACyAAIAhByOrGABDwBwALIApBIGokACAAC5oKAgd/AXsgACABKAIENgJcAkACQAJAIAEtAAhFBEAgASgCACIFs0MAAMA/lI38ASICIAAoAgAgACgCCCIBa0sEQCAAIAEgAkEEQRgQ1gYLIAAoAgwgACgCFCIBayACSQRAIABBDGogASACQQRBGBDWBgsgACgCXCIDRQ0BIAAoAhggACgCICIBayACSQRAIABBGGogASACQQFBCRDWBiAAKAJcIQMLIANBAkkNASAAKAIkIAAoAiwiAWsgAkkEfyAAQSRqIAEgAkEBQQ8Q1gYgACgCXAUgAwtBA0kNASACIAAoAjAgACgCOCIBa00NASAAQTBqIAEgAkEBQRUQ1gYMAQsgASgCACIFIAAoAhQiAk0EQCAAIAU2AhQgAiAFRg0BIAAoAhAgBUEYbGpBFGohAQNAIAEoAgAiA0EFTwRAIAFBDGsoAgAiBkEEaygCACIEQXhxIgggA0ECdCIDQQRBCCAEQQNxIgQbakkNBCAEQQAgCCADQSdqSxsNBSAGEKICCyABQRhqIQEgBSACQQFrIgJHDQALDAELIAIhBCAFIAJrIgcgACgCDCACa0sEQCAAQQxqIAIgB0EEQRgQ1gYgACgCFCEECyAAKAIQIQYgB0EDcSIDBEAgAyAEaiAFIAJrIANrIQcgBiAEQRhsaiEBA0AgAUEANgIAIAFBFGpBADYCACABQRhqIQEgA0EBayIDDQALIQQLIAIgBWtBfE0EQCAGIARBGGxqIQEDQCABQQA2AgAgAUHcAGpBADYCACABQcQAakIANwIAIAFBLGpCADcCACABQRRqQgA3AgAgAUHgAGohASAEQQRqIQQgB0EEayIHDQALCyAAIAQ2AhQLAkAgACgCCCIGIAUiAk8NACACIAYiAmsiBCAAKAIAIAJrSwRAIAAgAiAEQQRBGBDWBiAAKAIIIQILIAAoAgQhByAEQQNxIgMEQCACIANqIAUgBmsgA2shBCAHIAJBGGxqIQEDQCABQgA3AA8gAf0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAUEYaiEBIANBAWsiAw0ACyECCyAGIAVrQXxLDQAgByACQRhsaiEBA0AgAUIANwAPIAH9DAAAAAAAAAAAAAAAAAAAAAD9CwIAIAFBGGogCf0LAgAgAUEnakIANwAAIAFBMGogCf0LAgAgAUE/akIANwAAIAFByABqIAn9CwIAIAFB1wBqQgA3AAAgAUHgAGohASACQQRqIQIgBEEEayIEDQALCyAAIAI2AggCQCAAKAJcIgFFDQAgACAAKAIgIgMgBU8EfyAFBSAFIANrIgQgACgCGCADa0sEQCAAQRhqIAMgBEEBQQkQ1gYgACgCICEDIAAoAlwhAQsgBEEJbCICBEAgACgCHCADQQlsakEAIAL8CwALIAMgBGoLNgIgIAFBAkkNACAAIAAoAiwiAyAFTwR/IAUFIAUgA2siBCAAKAIkIANrSwRAIABBJGogAyAEQQFBDxDWBiAAKAIsIQMgACgCXCEBCyAEQQ9sIgIEQCAAKAIoIANBD2xqQQAgAvwLAAsgAyAEags2AiwgAUEDSQ0AIAAgACgCOCIBIAVJBH8gBSABayIFIAAoAjAgAWtLBEAgAEEwaiABIAVBAUEVENYGIAAoAjghAQsgBUEVbCICBEAgACgCNCABQRVsakEAIAL8CwALIAEgBWoFIAULNgI4Cw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7cJAQZ/IAFBA2wiBCAAKAIgIgJLBEAgBCACayIFIAAoAhggAmtLBEAgAEEYaiACIAVBBEEEENYGIAAoAiAhAgsgACgCHCIGIAJBAnRqIQMgBUECTwR/IAVBAnRBBGsiBwRAIANBACAH/AsACyACIAVqIgNBAWshAiAGIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCIAsgACgCLCICIAFJBEAgASACayIFIAAoAiQgAmtLBEAgAEEkaiACIAVBBEEEENYGIAAoAiwhAgsgACgCKCIGIAJBAnRqIQMgBUECTwR/IAVBAnRBBGsiBwRAIANBACAH/AsACyACIAVqIgNBAWshAiAGIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCLAsgACgCOCICIARJBEAgBCACayIFIAAoAjAgAmtLBEAgAEEwaiACIAVBBEEEENYGIAAoAjghAgsgACgCNCIGIAJBAnRqIQMgBUECTwR/IAVBAnRBBGsiBwRAIANBACAH/AsACyACIAVqIgNBAWshAiAGIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCOAsgACgCRCICIARJBEAgBCACayIEIAAoAjwgAmtLBEAgAEE8aiACIARBBEEEENYGIAAoAkQhAgsgACgCQCIFIAJBAnRqIQMgBEECTwR/IARBAnRBBGsiBgRAIANBACAG/AsACyACIARqIgNBAWshAiAFIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCRAsgAUECdCICIAAoAlAiBEsEQCACIARrIgIgACgCSCAEa0sEQCAAQcgAaiAEIAJBBEEEENYGIAAoAlAhBAsgACgCTCIFIARBAnRqIQMgAkECTwR/IAJBAnRBBGsiBgRAIANBACAG/AsACyACIARqIgJBAWshBCAFIAJBAnRqQQRrBSADC0EANgIAIAAgBEEBajYCUAsCQAJAIAAoAvACIgRFDQAgAUEJbCIDIAAoAlwiAksEQCADIAJrIgQgACgCVCACa0sEQCAAQdQAaiACIARBBEEEENYGIAAoAlwhAgsgACgCWCIFIAJBAnRqIQMgBEECTwR/IARBAnRBBGsiBgRAIANBACAG/AsACyACIARqIgNBAWshAiAFIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCXCAAKALwAiEECyAEQQFNDQAgAUEPbCIDIAAoAmgiAksEfyADIAJrIgQgACgCYCACa0sEQCAAQeAAaiACIARBBEEEENYGIAAoAmghAgsgACgCZCIFIAJBAnRqIQMgBEECTwR/IARBAnRBBGsiBgRAIANBACAG/AsACyACIARqIgNBAWshAiAFIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCaCAAKALwAgUgBAtBAk0NACABQRVsIgIgACgCdCIBSw0BCw8LIAIgAWsiAyAAKAJsIAFrSwRAIABB7ABqIAEgA0EEQQQQ1gYgACgCdCEBCyAAKAJwIgQgAUECdGohAiADQQJPBH8gA0ECdEEEayIFBEAgAkEAIAX8CwALIAEgA2oiAkEBayEBIAQgAkECdGpBBGsFIAILQQA2AgAgACABQQFqNgJ0C7INAgZ/AX4jAEEgayICJAAgAq1CgICAgIANhCEIIAEoAgQhBSABKAIAIQYgAgJ/AkACQAJAAkACQAJAAkACQAJAAkAgAC0AACIEDigABwcHBwcHBwcBAwcHAgcHBwcHBwcHBwcHBwcHBwcHBwcHBAcHBwcFBgsgAkIANwECIAJB3OAAOwEADAgLIAJCADcBAiACQdzoATsBAAwHCyACQgA3AQIgAkHc5AE7AQAMBgsgAkIANwECIAJB3NwBOwEADAULIAJCADcBAiACQdzEADsBAAwECyACQgA3AQIgAkHczgA7AQAMAwsgBEHcAEYNAQsgBBDXAkUEQCACQbDgwIEDNgATIAIgBEEEdi0A6MhEOgAXIARBAXJnQQJ2IgEgAkEQaiIDakH7ADoAACADIAFBAmsiAWpB3OoBOwAAIAJBADoAEiACQQA7ARAgAkH9ADoAGSACIARBD3EtAOjIRDoAGCACIAIpARA3AwAgAiACLwEYOwEIQQoMAwsgAiAENgIAQYABIQFBgQEMAgsgAkIANwECIAJB3LgBOwEAC0EAIQFBAgs6AA0gAiABOgAMIAIgCDcDEEEBIQQCQCAGIAVBlJvAACACQRBqEM4DDQAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkAgAC0AASIBDigFBwcHBwcHBwcEAgcHAwcHBwcHBwcHBwcHBwcHBwcHBwcHAQcHBwcABgsgAkIANwECIAJB3M4AOwEADAgLIAJCADcBAiACQdzEADsBAAwHCyACQgA3AQIgAkHc3AE7AQAMBgsgAkIANwECIAJB3OQBOwEADAULIAJCADcBAiACQdzoATsBAAwECyACQgA3AQIgAkHc4AA7AQAMAwsgAUHcAEYNAQsgARDXAkUEQCACQbDgwIEDNgATIAIgAUEEdi0A6MhEOgAXIAFBAXJnQQJ2IgMgAkEQaiIHakH7ADoAACAHIANBAmsiA2pB3OoBOwAAIAJBADoAEiACQQA7ARAgAkH9ADoAGSACIAFBD3EtAOjIRDoAGCACIAIpARA3AwAgAiACLwEYOwEIQQoMAwsgAiABNgIAQYABIQNBgQEMAgsgAkIANwECIAJB3LgBOwEAC0EAIQNBAgs6AA0gAiADOgAMIAIgCDcDECAGIAVBlJvAACACQRBqEM4DDQAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkAgAC0AAiIBDigFBwcHBwcHBwcEAgcHAwcHBwcHBwcHBwcHBwcHBwcHBwcHAQcHBwcABgsgAkIANwECIAJB3M4AOwEADAgLIAJCADcBAiACQdzEADsBAAwHCyACQgA3AQIgAkHc3AE7AQAMBgsgAkIANwECIAJB3OQBOwEADAULIAJCADcBAiACQdzoATsBAAwECyACQgA3AQIgAkHc4AA7AQAMAwsgAUHcAEYNAQsgARDXAkUEQCACQbDgwIEDNgATIAIgAUEEdi0A6MhEOgAXIAFBAXJnQQJ2IgMgAkEQaiIHakH7ADoAACAHIANBAmsiA2pB3OoBOwAAIAJBADoAEiACQQA7ARAgAkH9ADoAGSACIAFBD3EtAOjIRDoAGCACIAIpARA3AwAgAiACLwEYOwEIQQoMAwsgAiABNgIAQYABIQNBgQEMAgsgAkIANwECIAJB3LgBOwEAC0EAIQNBAgs6AA0gAiADOgAMIAIgCDcDECAGIAVBlJvAACACQRBqEM4DDQAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkAgAC0AAyIADigFBwcHBwcHBwcEAgcHAwcHBwcHBwcHBwcHBwcHBwcHBwcHAQcHBwcABgsgAkIANwECIAJB3M4AOwEADAgLIAJCADcBAiACQdzEADsBAAwHCyACQgA3AQIgAkHc3AE7AQAMBgsgAkIANwECIAJB3OQBOwEADAULIAJCADcBAiACQdzoATsBAAwECyACQgA3AQIgAkHc4AA7AQAMAwsgAEHcAEYNAQsgABDXAkUEQCACQbDgwIEDNgATIAIgAEEEdi0A6MhEOgAXIABBAXJnQQJ2IgEgAkEQaiIDakH7ADoAACADIAFBAmsiBGpB3OoBOwAAIAJBADoAEiACQQA7ARAgAkH9ADoAGSACIABBD3EtAOjIRDoAGCACIAIpARA3AwAgAiACLwEYOwEIQQoMAwsgAiAANgIAQYABIQRBgQEMAgsgAkIANwECIAJB3LgBOwEAC0EAIQRBAgs6AA0gAiAEOgAMIAIgCDcDECAGIAVBlJvAACACQRBqEM4DIQQLIAJBIGokACAEC9sLAQV/IwBBMGsiAiQAQQEhAwJAAkACQAJAAkACQAJAQQEgAC0AACIEQSRrIARBI00bQf8BcUEBaw4DAQIDAAsgASgCACIEQde5xgBBByABKAIEIgYoAgwiBREAAA0FIABBBGohAAJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANByAAIAEQtwJFDQEMBwsgBEGFjsIAQQIgBREAAA0GIAJBAToAKCACIAY2AgggAiAENgIEIAJBiI/CADYCGCACIAEpAgg3AhwgAiACQShqNgIMIAIgAkEEajYCFCAAIAJBFGoQtwINBiACKAIUQYOOwgBBAiACKAIYKAIMEQAADQYLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAwwFCyABKAIAIgRBuMrGAEEGIAEoAgQiBigCDCIFEQAADQQCQAJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANByACIAA2AgQgASgCAEGM98MAQQsgASgCBCgCDBEAACEAIAJBADoAGSACIAA6ABggAiABNgIUIAJBFGpB2PTDAEEFIAJBBGpB/PbDABCeBSEAIAItABgiBEEBcSACLQAZIgVBAUdyRQRAIAAoAgAiAC0ACkGAAXENAiAAKAIAQb3LxABBAiAAKAIEKAIMEQAARQ0DDAgLIAUNByAEQQFxRQ0CDAcLIARBhY7CAEECIAURAAANBiACIAY2AgggAiAENgIEIAJBAToAEyACQYiPwgA2AhggAiABKQIINwIcIAIgAkETajYCDCACIAJBBGoiAzYCFCACIAA2AiQgA0GM98MAQQsQwwMhACACQQA6AC0gAiAAOgAsIAIgAkEUajYCKCACQShqQdj0wwBBBSACQSRqQfz2wwAQngUhAAJAAkAgAi0ALCIDQQFxIAItAC0iBEEBR3JFBEAgACgCACIALQAKQYABcQ0BIAAoAgBBvcvEAEECIAAoAgQoAgwRAAANCAwCCyAEDQcgA0EBcUUNAQwHCyAAKAIAQfHJxABBASAAKAIEKAIMEQAADQYLIAIoAhRBg47CAEECIAIoAhgoAgwRAABFDQFBASEDDAYLIAAoAgBB8cnEAEEBIAAoAgQoAgwRAAANBQsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAQLIAEoAgAiBEHIucYAQQkgASgCBCIGKAIMIgURAAANAyAAQQRqIQACQAJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANBiACIAA2AgQgASgCAEHYvMYAQQ4gASgCBCgCDBEAACEAIAJBADoAGSACIAA6ABggAiABNgIUIAJBFGpB2PTDAEEFIAJBBGpByPTDABCeBSEAIAItABgiBEEBcSACLQAZIgVBAUdyRQRAIAAoAgAiAC0ACkGAAXENAiAAKAIAQb3LxABBAiAAKAIEKAIMEQAARQ0DDAcLIAUNBiAEQQFxRQ0CDAYLIARBhY7CAEECIAURAAANBSACIAY2AgggAiAENgIEIAJBAToAEyACQYiPwgA2AhggAiABKQIINwIcIAIgAkETajYCDCACIAJBBGoiAzYCFCACIAA2AiQgA0HYvMYAQQ4QwwMhACACQQA6AC0gAiAAOgAsIAIgAkEUajYCKCACQShqQdj0wwBBBSACQSRqQcj0wwAQngUhAAJAAkAgAi0ALCIDQQFxIAItAC0iBEEBR3JFBEAgACgCACIALQAKQYABcQ0BIAAoAgBBvcvEAEECIAAoAgQoAgwRAAANBgwCCyAEDQUgA0EBcUUNAQwFCyAAKAIAQfHJxABBASAAKAIEKAIMEQAADQQLIAIoAhRBg47CAEECIAIoAhgoAgwRAABFDQFBASEDDAULIAAoAgBB8cnEAEEBIAAoAgQoAgwRAAANBAsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAMLIAEoAgBBsPvDAEEOIAEoAgQoAgwRAAAhAwwCC0EBIQMMAQtBASEDCyACQTBqJAAgAwvxCgMFfwJ9AX4jAEEgayICJAACQCABKAIAIgRBiOjDAEEFIAEoAgQiAygCDCIFEQAABEBBASEDDAELAkACQCABKAIIIgZBgICABHFFBEBBASEDIARBpcvEAEEBIAURAAANAyAGQYCAgAFxIQUgACoCACEHAkAgBkGAgICAAXFFBEAgAEEEaiEEIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXINASABIAcgBUEAR0EBEI0DRQ0DDAULIAEgByAFQQBHIAEvAQ4QxwINBCAAQQRqIQQMAgsgASAHIAVBAEcQ3gJFDQEMAwsgBEGFjsIAQQIgBREAAARAQQEhAwwDCyACQQE6AA8gAiADNgIEIAIgBDYCACACQYiPwgA2AhQgAiABKQIIIgk3AhggCaciBEGAgIABcSEDIAIgAkEPajYCCCACIAI2AhAgACoCACEHAkAgBEGAgICAAXFFBEAgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xcgRAIAJBEGogByADQQBHEN4CDQQMAgsgAkEQaiAHIANBAEdBARCNA0UNAQwDCyACQRBqIAcgA0EARyAJQjCIpxDHAg0CCyACKAIQQYOOwgBBAiACKAIUKAIMEQAABEBBASEDDAMLIABBBGohBAsCQAJAAkACQAJAIAEoAggiA0GAgIAEcUUEQCABKAIAQdOmxQBBAiABKAIEKAIMEQAABEBBASEDDAgLIANBgICAAXEhBSAEKgIAIQcCQCADQYCAgIABcUUEQCAAQQhqIQQgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xcg0BQQEhAyABIAcgBUEAR0EBEI0DRQ0HDAkLIAEgByAFQQBHIAEvAQ4QxwJFDQJBASEDDAgLIAEgByAFQQBHEN4CRQ0FQQEhAwwHCyABKQIAIQkgAkEBOgAPIAIgCTcCACACQYiPwgA2AhQgAiABKQIIIgk3AhggCaciBUGAgIABcSEDIAIgAkEPajYCCCACIAI2AhAgBCoCACEHIAVBgICAgAFxRQ0BIAJBEGogByADQQBHIAlCMIinEMcCDQMMAgsgAEEIaiEEDAMLIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXIEQCACQRBqIAcgA0EARxDeAkUNAQwCCyACQRBqIAcgA0EAR0EBEI0DDQELIAIoAhBBg47CAEECIAIoAhQoAgwRAAANACAAQQhqIQQMAQtBASEDDAILAkACQAJAAkACQCABKAIIIgNBgICABHFFBEAgASgCAEHTpsUAQQIgASgCBCgCDBEAAARAQQEhAwwICyADQYCAgAFxIQAgBCoCACEHIANBgICAgAFxDQEgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xckUEQEEBIQMgASAHIABBAEdBARCNA0UNBgwIC0EBIQMgASAHIABBAEcQ3gJFDQUMBwsgASkCACEJIAJBAToADyACIAk3AgAgAkGIj8IANgIUIAIgASkCCCIJNwIYIAmnIgNBgICAAXEhACACIAJBD2o2AgggAiACNgIQIAQqAgAhByADQYCAgIABcUUNASACQRBqIAcgAEEARyAJQjCIpxDHAg0CDAMLQQEhAyABIAcgAEEARyABLwEOEMcCDQUMAwsgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xcgRAIAJBEGogByAAQQBHEN4CRQ0CDAELIAJBEGogByAAQQBHQQEQjQNFDQELQQEhAwwDCyACKAIQQYOOwgBBAiACKAIUKAIMEQAARQ0AQQEhAwwCCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMAQtBASEDCyACQSBqJAAgAwu0CgIEfwF+IwBBIGsiAiQAAn8CQAJAAkACQAJAAkACQCAAKAIAQQFrDgUBAgMEBQALIABBBGohAyAAKAIUBEAgAiAAQRRqNgIMIAIgAkEMaq1CgICAgPAHhDcDGCACIAOtQoCAgICACIQ3AxAgASgCACABKAIEQY2awAAgAkEQahDOAwwHCyADLQAAQQNHBEAgAiADrUKAgICAgAiENwMQIAEoAgAgASgCBEHzicAAIAJBEGoQzgMMBwsgASgCAEHd9MMAQQwgASgCBCgCDBEAAAwGCyAAQQRqIQMgACgCFARAIAIgAEEUajYCDCACIAJBDGqtQoCAgIDwB4Q3AxggAiADrUKAgICAgAiENwMQIAEoAgAgASgCBEH1msAAIAJBEGoQzgMMBgsgAiADrUKAgICAgAiENwMQIAEoAgAgASgCBEHaicAAIAJBEGoQzgMMBQsgASgCBCEDIAEoAgAhAQJAAkACQAJAAkACQAJAQQMgACgCBCIEQYCAgIB4cyAEQQBOG0EBaw4FBAABBQMCCyACIABBCGo2AgwgAiACQQxqrUKAgICAkAiENwMQIAEgA0HU5sAAIAJBEGoQzgNFDQVBAQwKCyACIABBBGo2AgwgAiACQQxqrUKAgICAoAiENwMQIAEgA0GYmcAAIAJBEGoQzgNFDQRBAQwJCyABQen0wwBBOCADKAIMEQAARQ0DQQEMCAsgAiAAQQhqNgIIIAIgAEEMajYCDCACQoCAgICQCCIGIAJBCGqthDcDGCACIAYgAkEMaq2ENwMQIAEgA0HUisAAIAJBEGoQzgNFDQJBAQwHCyABQaH1wwBBwQAgAygCDBEAAEUNAUEBDAYLIAFB4vXDAEElIAMoAgwRAABFDQBBAQwFC0EAIAAoAhBFDQQaIAIgAEEQajYCDCACIAJBDGqtQoCAgIDwB4Q3AxAgASADQZKbwAAgAkEQahDOAwwECyABKAIAIQMgASgCBCgCDCEBAkACQAJAQQIgACkDCCIGp0ECayAGQgFYG0EBaw4CAQIACyADQaDzwwBBGCABEQAADAULIANB4p/EAEEVIAERAAAMBAsgA0G488MAQc8AIAERAAAMAwsgAEEEaiEEIAEoAgQhAyABKAIAIQECQAJAAkACQAJAQQMgAC0AFCIFQQRrIAVBA00bQf8BcUEBaw4EAQIDBAALIAIgAEEVajYCDCACIAJBDGqtQoCAgICwCIQ3AxggAiAErUKAgICAgAiENwMQIAEgA0Hs7sAAIAJBEGoQzgMMBgsgAiAAQRVqNgIMIAIgAkEMaq1CgICAgLAIhDcDECABIANB6ezAACACQRBqEM4DDAULIAIgAEEVajYCDCACIAJBDGqtQoCAgICQCIQ3AxAgASADQeHtwAAgAkEQahDOAwwECyAAQRRqIQACQAJAAkAgBUECaw4CAQIACyACIAA2AgwgAiACQQxqrUKAgICAwAiENwMQIAEgA0Gm7cAAIAJBEGoQzgMMBQsgAiAANgIMIAIgAkEMaq1CgICAgMAIhDcDECABIANB+pvAACACQRBqEM4DDAQLIAFBz/bDAEEoIAMoAgwRAAAMAwsgAiAAQRhqNgIIIAAtAARBA0YNASACIAQ2AgwgAiACQQhqrUKAgICAoAiENwMYIAIgAkEMaq1CgICAgMAIhDcDECABIANB5YbAACACQRBqEM4DDAILIABBBGogARDoBAwBCyACIAJBCGqtQoCAgICgCIQ3AxAgASADQaGKwAAgAkEQahDOAwsgAkEgaiQAC8YKAgh/BH0jAEGwAWsiBSQAAn8CQCABKAIIIgYgAksEQCABKAIEIAJBGGxqIgZBEWovAAAgBkETai0AACIHQRB0ciIIQQh2IQlDAAAQQSABKgJIIAEtAFhBAkYiChshD0MAAEDBIAEqAkQgChshDSAIQf8BcQRAIA0gDyANk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCEOCyAJQf8BcQRAIA0gDyANk0MAAH5DlSAJQQFrQf8BcbOUkhCIBCEQCyAHBH0gDSAPIA2TQwAAfkOVIAdBAWtB/wFxs5SSEIgEBUMAAAAACyENIA4gEJRDj8LNPxCCCyEPIA4gDZRDj8LNPxCCCyEOIBAgDZRDj8LNPxCCCyAPIA6SkkMAAEBAlUPmQB8/EIILQ9sPSUGUIQ0gBkEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEGIAdBgIACcSEIIAdBgPgBcSIHQYD4AUYEQCAIQRB0IgdBgICA/AdyIAZFDQMaIAcgBkENdHJBgICA/gdyDAMLIAhBEHQhCCAHRQ0BIAdBDXRBgICA/ABxIAZBDXRyQYCAgMADaiAIcgwCCyACIAZByMvGABDwBwALIAYgBmdBEGsiBkH//wNxQQhqdEH///8DcSAIQYCAgNgDciAGQRd0a3ILIQYgBUEIaiABKAIQIgkgASgCFCIKIAIQ8gIgDSAGvpQhDwJAAn8CQAJAIAUoAiwiBkEJTwRAIAUoAgwiB0UNASAFQQA2AjAgBUEANgJUIAVBNGohCyAFKAIQDAMLIAYNAQsgAEIANwIMIAAgAjYCCCAAQQA2AgQgACAPOAIAIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwIUIABCgICAgBA3AiQMAgsgBUEANgIwIAVBADYCVCAFQTRqIQsgBiEHIAVBDGoLIQggB0ECdCEMIAVBiAFqIQdDAACA/yENA0AgBUGEAWogASAIKAIAIAMgBBDwASAFIAcpAgA3A1ggBSAH/QACCP0LA2AgBSAH/QACGP0LA3AgBSoChAEiDiANIA0gDVwbIg0gDSAOIA4gDlwbIg4gDSAOXhshDSAIQQRqIQggBUEwaiAFQdgAahCFAiAMQQRrIgwNAAsgAygCCCEBAkACQAJAAkACQCAEIA2UIA9fBEAgASACTQ0BIAMoAgQgAmpBAToAAAsgASACTQ0BIAMoAgQgAmotAABFBEAgCSAKIAJBBEEAEOQCIAAgDTgCACAAIAUpAlA3AiQgACAF/QACQP0LAhQgACAF/QACMP0LAgQMBgsgCSAKIAIgBSgCVCIIQQlPBH8gBSgCNCIIQYCABE8NAyAFKAI4BSALCyAIEOQCIABCADcCDCAAIAI2AgggAEEANgIEIAAgDzgCACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsCFCAAQoCAgIAQNwIkIAUoAlQiAEEJSQ0FIAUoAjgiAUEEaygCACICQXhxIgMgAEECdCIAQQRBCCACQQNxIgIbakkNAyACQQAgAyAAQSdqSxsNBCABEKICDAULIAIgAUHw+cEAEPAHAAsgAiABQYD6wQAQ8AcAC0GQ+sEAQS1BwPrBABCoCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACwJAAkAgBkEJTwRAIAUoAhAiAEEEaygCACIBQXhxIgIgBkECdCIDQQRBCCABQQNxIgEbakkNASABQQAgAiADQSdqSxsNAiAAEKICCyAFQbABaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALlwcBBH8CQAJAIAAoArQBIgIEQCAAKAK4ASIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKALAASICBEAgACgCxAEiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCWCICBEAgACgCXCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJkIgIEQCAAKAJoIgNBBGsoAgAiAUF4cSIEIAJBAnQiAkEEQQggAUEDcSIBG2pJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgCcCICBEAgACgCdCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAJ8IgJBAEoEQCAAKAKAASIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCwJAIAAoAiAiAkGAgICAeEYNACAAEN0EIAJFDQAgACgCJCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAKAKIASICBEAgACgCjAEiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsgACgClAEiAgRAIAAoApgBIgNBBGsoAgAiAUF4cSIEIAJBAnQiAkEEQQggAUEDcSIBG2pJDQEgAUEAIAQgAkEnaksbDQIgAxCiAgsCQCAAKAIwIgJBgICAgHhGDQAgAgRAIAAoAjQiA0EEaygCACIBQXhxIgRBBEEIIAFBA3EiARsgAmpJDQIgAUEAIAQgAkEnaksbDQMgAxCiAgsgACgCPCICBEAgACgCQCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNAiABQQAgBCACQSdqSxsNAyADEKICCyAAKAJIIgJFDQAgACgCTCIAQQRrKAIAIgNBeHEiASACQQJ0IgJBBEEIIANBA3EiAxtqSQ0BIANBACABIAJBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALvw0DB38EewJ9IAEqAgAhFCAAKgIAIRMCQAJAAkACQAJAAkACQAJAAkACQEGACBBuIgwEQCAUIBOT/RMhECAT/RMhEf0MAAAAAAEAAAACAAAAAwAAACEPA0AgCCAMaiIKIBEgECAP/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACAKQRBqIBEgECAP/QwEAAAABAAAAAQAAAAEAAAA/a4B/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACAP/QwIAAAACAAAAAgAAAAIAAAA/a4BIQ8gCEEgaiIIQYAIRw0ACyABKgIEIAAqAgQhE0GACBBuIgpFDQggE5P9EyEQIBP9EyER/QwAAAAAAQAAAAIAAAADAAAAIQ9BACEIA0AgCCAKaiILIBEgECAP/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACALQRBqIBEgECAP/QwEAAAABAAAAAQAAAAEAAAA/a4B/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACAP/QwIAAAACAAAAAgAAAAIAAAA/a4BIQ8gCEEgaiIIQYAIRw0ACyABKgIIIAAqAgghE0GACBBuIgtFDQggE5P9EyEQIBP9EyER/QwAAAAAAQAAAAIAAAADAAAAIQ9BACEIA0AgCCALaiINIBEgECAP/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACANQRBqIBEgECAP/QwEAAAABAAAAAQAAAAEAAAA/a4B/foB/QwAAH9DAAB/QwAAf0MAAH9D/ecB/eYB/eQB/Qy7bpA+u26QPrtukD67bpA+/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQB/QsCACAP/QwIAAAACAAAAAgAAAAIAAAA/a4BIQ8gCEEgaiIIQYAIRw0ACyABKgIMIAAqAgwhE0GACBBuIgFFDQggE5P9EyERIBP9EyES/QwAAAAAAQAAAAIAAAADAAAAIQ9BACEIA0AgASAIav0MAACAPwAAgD8AAIA/AACAP/0MAACAPwAAgD8AAIA/AACAPyASIBEgD/36Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf3hASIQ/R8AEIgE/RMgEP0fARCIBP0gASAQ/R8CEIgE/SACIBD9HwMQiAT9IAP95AH95wH9CwIAIA/9DAQAAAAEAAAABAAAAAQAAAD9rgEhDyAIQRBqIghBgAhHDQALIAcEQCAHQQJ0IQ1BAiAFIAVBAk0bQQNuQQJ0IQ5BACEAQQAhCANAIAMgCE0NAyAAIAVPDQQgBCAMIAIgCGoiBy0AAEECdGoqAgA4AgAgCEEBaiIJIANPDQUgAEEBaiIJIAVPDQYgBEEEaiAKIAdBAWotAABBAnRqKgIAOAIAIAhBAmoiCSADTw0HIAggDkYNCCAEQQhqIAsgB0ECai0AAEECdGoqAgA4AgAgCEEDaiIJIANPDQkgBiAIaiABIAdBA2otAABBAnRqKgIAOAIAIARBDGohBCAAQQNqIQAgDSAIQQRqIghHDQALCyABQQRrKAIAIgBBeHFBhAhBiAggAEEDcSICG0kNCSACQQAgAEGoCE8bDQogARCiAiALQQRrKAIAIgBBeHFBhAhBiAggAEEDcSIBG0kNCSABQQAgAEGoCE8bDQogCxCiAiAKQQRrKAIAIgBBeHFBhAhBiAggAEEDcSIBG0kNCSABQQAgAEGoCE8bDQogChCiAiAMQQRrKAIAIgBBeHFBhAhBiAggAEEDcSIBG0kNCSABQQAgAEGoCE8bDQogDBCiAg8LDAcLIAggA0GY98YAEPAHAAsgACAFQaj3xgAQ8AcACyAJIANBuPfGABDwBwALIAkgBUHI98YAEPAHAAsgCSADQdj3xgAQ8AcACyAAQQJqIAVB6PfGABDwBwALIAkgA0H498YAEPAHAAtBBEGACBCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/4JAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOHAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwACyACIABBBGo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgLAHhDcDCEHDkcAAIAJBCGoQzgMMHAsgAiAAQQFqNgIEIAEoAgAgASgCBCACIAJBBGqtQoCAgICACYQ3AwhBw5/EACACQQhqEM4DDBsLIAIgAEEBajYCBCABKAIAIAEoAgQgAiACQQRqrUKAgICAgAmENwMIQb2gxAAgAkEIahDOAwwaCyABKAIAQZGexABBHSABKAIEKAIMEQAADBkLIAIgAEEBajYCBCABKAIAIAEoAgQgAiACQQRqrUKAgICAgAmENwMIQdygxAAgAkEIahDOAwwYCyABKAIAQa6exABBESABKAIEKAIMEQAADBcLIAEoAgBB95/EAEEmIAEoAgQoAgwRAAAMFgsgASgCAEGWn8QAQRogASgCBCgCDBEAAAwVCyABKAIAQcCdxABBGSABKAIEKAIMEQAADBQLIAEoAgBBrqDEAEEPIAEoAgQoAgwRAAAMEwsgASgCAEGwn8QAQRMgASgCBCgCDBEAAAwSCyACIABBAWo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgJAJhDcDCEH5oMQAIAJBCGoQzgMMEQsgAiAAQQFqNgIEIAEoAgAgASgCBCACIAJBBGqtQoCAgICgCYQ3AwhB5pHAACACQQhqEM4DDBALIAIgAEEBajYCBCABKAIAIAEoAgQgAiACQQRqrUKAgICAoAmENwMIQZeQwAAgAkEIahDOAwwPCyABKAIAQeqexABBFCABKAIEKAIMEQAADA4LIAEoAgBBv57EAEERIAEoAgQoAgwRAAAMDQsgASgCAEGdoMQAQREgASgCBCgCDBEAAAwMCyACIABBAWo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgLAJhDcDCEHQnsQAIAJBCGoQzgMMCwsgASgCAEH+nsQAQRggASgCBCgCDBEAAAwKCyACIABBAWo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgKAJhDcDCEH8mMAAIAJBCGoQzgMMCQsgAiAAQQFqNgIEIAEoAgAgASgCBCACIAJBBGqtQoCAgIDACYQ3AwhBsJjAACACQQhqEM4DDAgLIAIgAEEBajYCBCABKAIAIAEoAgQgAiACQQRqrUKAgICAwAmENwMIQYqYwAAgAkEIahDOAwwHCyACIABBAWo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgMAJhDcDCEHVmMAAIAJBCGoQzgMMBgsgASgCAEHnncQAQRggASgCBCgCDBEAAAwFCyACIABBBGo2AgQgASgCACABKAIEIAIgAkEEaq1CgICAgKAIhDcDCEHqlsAAIAJBCGoQzgMMBAsgAiAAQQRqNgIEIAEoAgAgASgCBCACIAJBBGqtQoCAgICgCIQ3AwhB0JHAACACQQhqEM4DDAMLIAEoAgBB4p/EAEEVIAEoAgQoAgwRAAAMAgsgASgCAEH/ncQAQRIgASgCBCgCDBEAAAwBCyABKAIAQdmdxABBDiABKAIEKAIMEQAACyACQRBqJAALkgoCCX8GfiMAQSBrIgUkAAJAIAEtAAgiBkECRwRAIAIgASkDACIMNwMIIAVCADcDEAJAAkACQAJAAkACQAJAAkAgASgCmAEiA0EJSQRAIAEpAxhCfyAMIAOtfCIOIAwgDlYbVA0EIAEoApQBIQggAigCBCIErSENIARC/////w8gDCAMQv////8PWhunayIHQQAgBCAHTxsgA08EQCACKAIAIAwgDSAMIA1UG6dqIQQgA0EBRwRAIANFDQMgBUEQaiAEIAP8CgAADAMLIAUgBC0AADoAEAwCC0HglccAKQMAIg9CCIghECAPpyEHIA9C/wGDQgRSDQMMAgtBACADQQhBtJHBABCgBQALQQQhBwsgDiENCyACIA03AwggB0H/AXEiBEEERwRAIAUgB61C/wGDIBBCCIaEIg03AxggEEIYiKchAwJ/AkACQCAEQQFrDgMAAQEGCyAQpwwBCyADLQAIC0H/AXFBJUcNAyAGQQFxDQQgBUEYahDsBQwFCyAIIAVBEGogAxD3B0UNAQsgBkEBcUUNAyAAQQA2AgAgAEIANwMIDAULIAIgDDcDCCABQQI6AAggACAMNwMQIABCATcDCCAAQQA2AgAMBAsgACANNwMIIABCgYCAgJCAgICAfzcDAAwDCyAAQQA2AgAgAEIANwMIIAVBGGoQ7AUMAgsgAUECOgAICwJAAkACQAJAIAEpA6ABIgwgASkDEFQNACABQSBqIQlB4JXHACkDACIOQv8BgyERIA5CCIghECABKQMYIQ0gAigCACEKIA6nIQYgAigCBCILrSEOA0AgDCANWg0BQn8gDCABKAKsASIDrXwiDyAMIA9WGyIPIAxYDQECQAJAIAICfgJAAkACQCANIA8gDSAPVBsgDH0iD6ciBCADTQRAIAEoAqgBIQcgASgCsAENBSALIAwgDiAMIA5UG6ciA2sgBEkNAiADIApqIQMgBEEBRg0BIAQEQCAHIAMgBPwKAAALQQQhAwwDC0EAIAQgA0GkkcEAEKAFAAsgByADLQAAOgAAQQQhAwwBCyAGIQMgDiARQgRSDQEaCyAPQv////8PgyAMfAs3AwggA0H/AXEiA0EERwRAIBBCGIinIQEgEKciAiEEAkACQAJAIANBAWsOAwEAAgoLIAEtAAghBAsgBEH/AXFBJUYNBQwICyABLQAIQSVHDQcgASgCACECIAFBBGooAgAiAygCACIGBEAgAiAGEQMACyADKAIEIgYEQCACIAYgAygCCBDBBwsgAUEMQQQQwQcMBAtBACEDIAEoArABRQ0BCyAEIAEoArQBIgNJDQMgAyAHaiEHIAQgA2shBAsgBUIBNwIYIAEoApgBIgggBE0EQCAFQQhqIAkgBUEYaiAHIAQgASgClAEgCCABKAKIAREKACAFKAIIQQFxDQQLIAFBADYCsAFCfyABKQOgASINIAE1AqwBIAggCEEAR2utfXwiDCAMIA1UGyIMIAEpAxgiDVQEQCABIAw3A6ABIAwgASkDEFoNAQwCCwsgASANNwMQCyAAQgA3AwggAEEANgIADAMLIAMgBCAEQfiixwAQoAUACyAFKAIMIQYgAUEBNgKwASAAQgE3AwggASADIAZqIAhqNgK0ASACIAatIAwgA618fCINNwMIIAAgDTcDECAAQQA2AgAMAQsgACABNgIMIABBgYCAgHg2AgQgACACQQh0IANyNgIIIABBATYCAAsgBUEgaiQAC54JAg5/AnsCQAJ/AkACQAJAIAEoAiAiECAETQRAIAMgBGoiESAGayEOIBEgEGshCiAB/QAEECEVIAH9AAQAIRYgAS0AJSEMIAEtACQhDSAGQQRJDQEgBkEDcUECayEBIAUgBkH8////B3FqQQJqIRIgBkGDgICAeHFBBHJBBUshEyADIQIDQAJAIAIgDWr9AAAAIBb9IyACIAxq/QAAACAV/SP9Tv1kIgtFDQADQCAFIQcgBiEJIA4gAiALaCIPaiIISQ0BAkADQCAHKAAAIAgiFCgAAEcNASAIQQRqIQggB0EEaiEHIAlBBGsiCUEDSw0ACyATBEAgBy8AACAILwAARw0BIBRBBmohCCABIQkgEiEHCyAJRQ0HIActAAAgCC0AAEYNBwsgC0EBayALcSILDQALCyACQRBqIgIgCk0NAAsMAgsCQCAEIAZJDQAgAyAEagJAIAZFBEAMAQsgAyAGaiEEIAMhBwNAIActAAAgCEEBdGohCCAHQQFqIgcgBEkNAAsLIAEoAmQhBCABKAJgIQEgBmshAiADIQcDQAJAIAEgCEcNACAHIAUgBhDhBkUNACAHIANrDAYLIAIgB00NASAGIAdqLQAAIAggBCAHLQAAbGtBAXRqIQggB0EBaiEHDAALAAtBACEBDAQLAkAgBkECTwRAIAZBAkYNASADIQIDQAJAIAIgDWr9AAAAIBb9IyACIAxq/QAAACAV/SP9Tv1kIgdFDQADQCAOIAIgB2giD2oiAUkNASAFLwAAIAEvAABGBEAgBS0AAiABLQACRg0HCyAHQQFrIAdxIgcNAAsLIAJBEGoiAiAKTQ0ACwwCCyAGBEAgAyECA0ACQCACIA1q/QAAACAW/SMgAiAMav0AAAAgFf0j/U79ZCIHRQ0AA0AgDiACIAdoIg9qIgFJDQEgBS0AACABLQAARg0GIAdBAWsgB3EiBw0ACwsgAkEQaiICIApNDQALDAILIAMhAgNAIAIgDWr9AAAAIBb9IyACIAxq/QAAACAV/SP9Tv1kIgcEQCAOIAIgB2giD2pPDQQLIAJBEGoiAiAKTQ0ACwwBCyADIQIDQAJAIAIgDWr9AAAAIBb9IyACIAxq/QAAACAV/SP9Tv1kIgdFDQADQCAOIAIgB2giD2oiAUkNASAFLwAAIAEvAABGDQQgB0EBayAHcSIHDQALCyACQRBqIgIgCk0NAAsLQQAhASAGIBEgAmtLIAIgEU9yDQIgCiANav0AAAAgFv0jIAogDGr9AAAAIBX9I/1O/WRBfyACIAprdHEiC0UNAkEAIAZrIQMgBkEESSESAkADQCADIAtoIgIgEGtIDQQgAiAKaiEHIAYhCSAFIQgCQCASRQRAA0AgCCgAACAHKAAARw0CIAdBBGohByAIQQRqIQggCUEEayIJQQNLDQALCyAJQQFLBEAgCC8AACAHLwAARw0BIAlBAmshCSAIQQJqIQggB0ECaiEHCyAJRQ0CIAgtAAAgBy0AAEYNAgsgC0EBayALcSILDQALDAMLIAIgBCAQa2oMAQsgAiADayAPagshB0EBIQELIAAgBzYCBCAAIAE2AgAL3AoCCH8BfiMAQaABayIDJAACfyACRQRAIAMgAygCHDYCECADIAMpAhQ3AwggACgCACEFIAEhBiABIAJqDAELQQEhBAJ/IAEsAAAiBUEATgRAIAVB/wFxIQUgAUEBagwBCyABLQABQT9xIQcgBUEfcSEGIAVBX00EQCAGQQZ0IAdyIQUgAUECagwBCyABLQACQT9xIAdBBnRyIQcgBUFwSQRAIAcgBkEMdHIhBSABQQNqDAELIAZBEnRBgIDwAHEgAS0AA0E/cSAHQQZ0cnIhBSABQQRqCyEGIANBFGogBUGBggQQqgMgAyADKAIcIgc2AhAgAyADKQIUIgs3AwggAy0AISEIIAMtACAhCSAAKAIAIQUgAyAHNgKYASADIAs3A5ABIAEgAmoLIQcgAyADKQOQATcCQCADIAMoApgBNgJIIAMgBzYCfCADIAY2AnhBACEAIANBADYCZCADQQA2AlAgAyAIOgBNIAMgCToATCADIAQ2AjwgA0EANgIoIANBADYCFAJAAkAgBARAIANBGGoiBCADQUBr/QACAP0LAgAgAy0AJCEBAkAgAy0AJSICQYEBTwRAIAEgAk8NASAEKAIAIQQgBSgCACEIIAUoAgQoAhAhCQNAIAggBCAJEQIADQQgAUEBaiIBQf8BcSACSQ0ACyACIQEMAQsgASACTw0AIAEgAiABIAJLGyECIAUoAgAhCCAFKAIEKAIQIQkDQCAIIAEgBGotAAAgCRECAA0DIAIgAUEBaiIBRw0ACyACIQELIAMgAToAJAsgBiAHRg0BIANB1ABqIgkhAiAFKAIEIQggBSgCACEFA0ACQAJ/AkACQAJ/IAYsAAAiAEEATgRAIABB/wFxIQQgBkEBagwBCyAGLQABQT9xIQQgAEEfcSEBIABBX00EQCABQQZ0IARyIQQgBkECagwBCyAGLQACQT9xIARBBnRyIQQgAEFwSQRAIAQgAUEMdHIhBCAGQQNqDAELIAFBEnRBgIDwAHEgBi0AA0E/cSAEQQZ0cnIiBEGAgMQARg0BIAZBBGoLIQYCQAJAAkACQAJAAkACQAJAAkACQCAEDigCAQEBAQEBAQEDBQEBBAEBAQEBAQEBAQEBAQEBAQEBAQEBBwEBAQEIAAsgBEHcAEYNBQsgBBDXAg0HIANBADoAkgEgA0EAOwGQASADIARBFHYtAOjIRDoAkwEgAyAEQQR2QQ9xLQDoyEQ6AJcBIAMgBEEIdkEPcS0A6MhEOgCWASADIARBDHZBD3EtAOjIRDoAlQEgAyAEQRB2QQ9xLQDoyEQ6AJQBIARBAXJnQQJ2IgAgA0GQAWoiCmoiAUH7ADoAACABQQFrQfUAOgAAIAogAEECayIBakHcADoAACADQf0AOgCZASADIARBD3EtAOjIRDoAmAFBCgwKCyADQgA3AZIBIANB3OAAOwGQAQwICyADQgA3AZIBIANB3OgBOwGQAQwHCyADQgA3AZIBIANB3OQBOwGQAQwGCyADQgA3AZIBIANB3NwBOwGQAQwFCyADQgA3AZIBIANB3LgBOwGQAQwECyADQgA3AZIBIANB3MQAOwGQAQwDCyADQgA3AZIBIANB3M4AOwGQAQwCCyACIAMvAZgBOwEIIAMgBDYCkAEgAiADKQKQATcCACAFIAkoAgAgCCgCEBECAEUNAwwFC0EAIQAMBQtBACEBQQILIQAgAiADLwGYATsBCCACIAMpApABNwIAIAgoAhAhBANAIAUgASACai0AACAEEQIADQMgACABQQFqIgFHDQALIAMgADoAYAsgBiAHRw0AC0EAIQAMAQtBASEACyADQaABaiQAIAAL2ggCAn4GfwJAAkACQCABQQhPBEAgAUEHcSIERQ0BIAAoAqABIgZBKU8NAiAGRQRAIABBADYCoAEMAgsgBkECdCIIQQRrIgVBAnZBAWoiB0EDcSEJIARBAnQoAti8QiAEdq0hAyAAIQQCQCAFQQxPBEAgB0H8////B3EhBQNAIAQgBDUCACADfiACfCICPgIAIARBBGoiByAHNQIAIAN+IAJCIIh8IgI+AgAgBEEIaiIHIAc1AgAgA34gAkIgiHwiAj4CACAEQQxqIgcgBzUCACADfiACQiCIfCICPgIAIAJCIIghAiAEQRBqIQQgBUEEayIFDQALIAlFDQELIAlBAnQhBQNAIAQgBDUCACADfiACfCICPgIAIARBBGohBCACQiCIIQIgBUEEayIFDQALCyAAIAJQBH8gBgUgBkEoRg0EIAAgCGogAj4CACAGQQFqCzYCoAEMAQsgACgCoAEiBkEpTw0BIAZFBEAgAEEANgKgAQ8LIAFBAnQ1Ati8QiEDIAZBAnQiCUEEayIFQQJ2QQFqIghBA3EhASAAIQQCQCAFQQxPBEAgCEH8////B3EhBQNAIAQgBDUCACADfiACfCICPgIAIARBBGoiCCAINQIAIAN+IAJCIIh8IgI+AgAgBEEIaiIIIAg1AgAgA34gAkIgiHwiAj4CACAEQQxqIgggCDUCACADfiACQiCIfCICPgIAIAJCIIghAiAEQRBqIQQgBUEEayIFDQALIAFFDQELIAFBAnQhBQNAIAQgBDUCACADfiACfCICPgIAIARBBGohBCACQiCIIQIgBUEEayIFDQALCyAAIAJQBH8gBgUgBkEoRg0DIAAgCWogAj4CACAGQQFqCzYCoAEPCwJAIAFBCHEEQCAAKAKgASIGQSlPDQICQCAGRQRAQQAhBgwBCyAGQQJ0IghBBGsiBUECdkEBaiIHQQNxIQlCACECIAAhBAJAIAVBDE8EQCAHQfz///8HcSEFA0AgBCAENQIAQuHrF34gAnwiAj4CACAEQQRqIgcgBzUCAELh6xd+IAJCIIh8IgI+AgAgBEEIaiIHIAc1AgBC4esXfiACQiCIfCICPgIAIARBDGoiByAHNQIAQuHrF34gAkIgiHwiAj4CACACQiCIIQIgBEEQaiEEIAVBBGsiBQ0ACyAJRQ0BCyAJQQJ0IQUDQCAEIAQ1AgBC4esXfiACfCICPgIAIARBBGohBCACQiCIIQIgBUEEayIFDQALCyACUA0AIAZBKEYNAiAAIAhqIAI+AgAgBkEBaiEGCyAAIAY2AqABCyABQRBxBEAgAEGAvcIAQQIQjAMLIAFBIHEEQCAAQYi9wgBBAxCMAwsgAUHAAHEEQCAAQZS9wgBBBRCMAwsgAUGAAXEEQCAAQai9wgBBChCMAwsgAUGAAnEEQCAAQdC9wgBBExCMAwsgACABEMcDGg8LDAELQQAgBkEoQdiOwgAQoAUAC0EoQShB2I7CABDwBwALwgsCCH8FewJAAkACQAJAAkAgAiADTwRAIANFDQQgASADaiEFIANBD00EQANAIAEgBU8NBiAFQQFrIgUtAABBCkcNAAwFCwALIAVBEGsiBP0AAAD9DAoKCgoKCgoKCgoKCgoKCgoiDP0j/WQiBgRAIAQgBmdBH3NqIQUMBAsCQAJAAkAgA0HAAEkgAyAFQQ9xayIFQcAASXINAANAIAEgBWoiBEEwayIG/QAEACAM/SMiDSAEQUBqIgj9AAQAIAz9IyIO/VAgBEEgayIH/QAEACAM/SMiD/1QIARBEGsiBP0ABAAgDP0jIhD9UP1kRQRAIAVBQGoiBUFAa0GAAU8NAQwCCwsgEP1kIgUNBCAP/WQiBA0FIA39ZCIEDQEgCCAO/WRna0EfaiEFDAYLA0AgBUEPTARAQQAhByAFQQBKDQNBACEEDAkLIAEgBUEQayIFaiIE/QAAACAM/SP9ZCIGRQ0ACyAEIAZnQR9zaiEFDAULIAYgBGdBH3NqIQUMBAtBACEEIAH9AAAAIAz9I/1kIgVFDQUgASAFZ2tBH2ohBQwDC0EAIAMgAkGcscUAEKAFAAsgBCAFZ0Efc2ohBQwBCyAHIARnQR9zaiEFCyAFIAFrIglBAWohByACIAlLBEAgASAHaiIKIAFNBEBBACEEDAMLIAlBDk0EQEEAIQQCQCAJQQNJBEAgASEFDAELIAEgB0EccSICaiEF/QwAAAAAAAAAAAAAAAAAAAAAIQwgAiEEA0AgDCAB/VwAAP0MCgoKCgoKCgoKCgoKCgoKCv0j/YkB/akB/QwBAAAAAQAAAAEAAAABAAAA/U79rgEhDCABQQRqIQEgBEEEayIEDQALIAwgDCAM/Q0ICQoLDA0ODwABAgMAAQID/a4BIgwgDCAM/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQQgAiAHRg0ECwNAIAQgBS0AAEEKRmohBCAFQQFqIgUgCkcNAAsMAwtBACECAkACQCABQXBxQRBqIgQgAUEBaiIGIAQgBksbIAFrIgtBBEkEQCABIQYMAQsgASALQXxxIghqIQb9DAAAAAAAAAAAAAAAAAAAAAAhDCAIIQIDQCAMIAH9XAAA/QwKCgoKCgoKCgoKCgoKCgoK/SP9iQH9qQH9DAEAAAABAAAAAQAAAAEAAAD9Tv2uASEMIAFBBGohASACQQRrIgINAAsgDCAMIAz9DQgJCgsMDQ4PAAECAwABAgP9rgEiDCAMIAz9DQQFBgcAAQIDAAECAwABAgP9rgH9GwAhAiAIIAtGDQELA0AgAiAGLQAAQQpGaiECIAZBAWoiBiAESQ0ACwsCQCAJQT9JDQAgBCAKQUBqIgFLDQADQCAE/QAEAP0MCgoKCgoKCgoKCgoKCgoKCiIM/SP9ZGkgAmogBEEQav0ABAAgDP0j/WRpaiAEQSBq/QAEACAM/SP9ZGlqIARBMGr9AAQAIAz9I/1kaWohAiAEQUBrIgQgAU0NAAsLIApBEGsiASAETwRAA0AgBP0AAAD9DAoKCgoKCgoKCgoKCgoKCgr9I/1kaSACaiECIARBEGoiBCABTQ0ACwtBACEGAkAgBCAKTw0AAkAgBSAEa0EBaiIJQQRJBEAgBCEBDAELIAQgCUF8cSIIaiEB/QwAAAAAAAAAAAAAAAAAAAAAIQwgCCEFA0AgDCAE/VwAAP0MCgoKCgoKCgoKCgoKCgoKCv0j/YkB/akB/QwBAAAAAQAAAAEAAAABAAAA/U79rgEhDCAEQQRqIQQgBUEEayIFDQALIAwgDCAM/Q0ICQoLDA0ODwABAgMAAQID/a4BIgwgDCAM/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQYgCCAJRg0BCwNAIAYgAS0AAEEKRmohBiABQQFqIgEgCkcNAAsLIAIgBmohBAwCC0EAIAcgAkGMscUAEKAFAAsLIAAgAyAHazYCBCAAIARBAWo2AgAL7AgCEH8BfSMAQRBrIgYkAAJAAkAgA0EDbCIHQf////8DSw0AIANBDGwiBEH9////B08NAAJAIARFBEBBBCEKQQAhBwwBCyAEEG4iCkUNAgsgBkEANgIMIAYgCjYCCCAGIAc2AgQCfwJAAkACQAJAAkAgAwRAIAJBfnEhDyABIANBAnQiEGohESABIANBAXQiEmohEyACQQFqQQF2IQ1BACEHIAMhDkEIIQsDQCANRQRAIAchBAwECyAHIA9GDQQgBigCBCEMAn8gASAHaiIEQQFqLQAAQQh0IgggBC0AAHIiBEH//wFxBEAgBEH/B3EhBCAIQYCAAnEhBSAIQYD4AXEiCEGA+AFHBEAgBUEQdCIFIAhBDXRBgICA/ABxIARBDXRyQYCAgMADanIgCA0CGiAFQYCAgNgDciAEZ0EQayIIQRd0ayAEIAhB//8DcUEIanRB////A3FyDAILIAVBEHQiCCAEQQ10ckGAgID+B3IgBA0BGiAIQYCAgPwHcgwBCyAEQRB0C74QiAQhFCAJIAxGBEAgBkEEahCsByAGKAIIIQoLIAogC2pBCGsgFDgCACAGIAlBAWoiCDYCDCAHIBJqIgQgAk8NAyAEQQFqIAJPDQYgBigCBCEMAn8gByATaiIEQQFqLQAAQQh0IgUgBC0AAHIiBEH//wFxBEAgBEH/B3EhBCAFQYCAAnEhCSAFQYD4AXEiBUGA+AFHBEAgCUEQdCIJIAVBDXRBgICA/ABxIARBDXRyQYCAgMADanIgBQ0CGiAJQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAlBEHQiBSAEQQ10ckGAgID+B3IgBA0BGiAFQYCAgPwHcgwBCyAEQRB0C74QiAQhFCAIIAxGBEAgBkEEahCsByAGKAIIIQoLIAogC2pBBGsgFDgCACAGIAhBAWoiCDYCDCAHIBBqIgQgAk8NAiAEQQFqIAJPDQUgBigCBCEMAn8gByARaiIEQQFqLQAAQQh0IgUgBC0AAHIiBEH//wFxBEAgBEH/B3EhBCAFQYCAAnEhCSAFQYD4AXEiBUGA+AFHBEAgCUEQdCIJIAVBDXRBgICA/ABxIARBDXRyQYCAgMADanIgBQ0CGiAJQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAlBEHQiBSAEQQ10ckGAgID+B3IgBA0BGiAFQYCAgPwHcgwBCyAEQRB0C74QiAQhFCAIIAxGBEAgBkEEahCsByAGKAIIIQoLIAogC2ogFDgCACAGIAhBAWoiCTYCDCANQQFrIQ0gB0ECaiEHIAtBDGohCyAOQQFrIg4NAAsLIAAgBigCDDYCCCAAIAYpAgQ3AgAgBkEQaiQADwsgA0ECdCAHaiEECyAEIAJBxPLGABDwBwALIAdBAWoMAgsgA0ECdCAHakEBagwBCyAEQQFqCyACQdTyxgAQ8AcACxCYCgALQQQgBBCaCQAL9AcBBH8gACgCYCIBQYQITwRAIAEQvgcLIAAoAmQiAUGECE8EQCABEL4HCwJAIAAoAgBFDQAgACgCBCIBQYQISQ0AIAEQvgcLAkAgACgCCEUNACAAKAIMIgFBhAhJDQAgARC+BwsgACgCaARAIABB6ABqEN0ECwJAIAAoAhBFDQAgACgCFCIBQYQISQ0AIAEQvgcLAkAgACgCGEUNACAAKAIcIgFBhAhJDQAgARC+BwsCQCAAKAIgRQ0AIAAoAiQiAUGECEkNACABEL4HCwJAIAAoAihFDQAgACgCLCIBQYQISQ0AIAEQvgcLAkAgACgCMEUNACAAKAI0IgFBhAhJDQAgARC+BwsCQCAAKAI4RQ0AIAAoAjwiAUGECEkNACABEL4HCwJAIAAoAogBRQ0AIAAoAowBIgFBhAhPBEAgARC+BwsgACgCkAEiAUGECEkNACABEL4HCwJAAkAgACgClAEiAQRAIAAoApgBIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCoAEiAQRAIAAoAqQBIgNBBGsoAgAiAkF4cSIEIAFBAnQiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCSCIBBEAgACgCTCIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAlQiAQRAIAAoAlgiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCwJAIAAoAkBFDQAgACgCRCIBQYQISQ0AIAEQvgcLIAAoAsQBIgFBAEoEQCAAKALIASIDQQRrKAIAIgJBeHEiBCABQQF0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAtABIgFBAEoEQCAAKALUASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAqwBIgEEQCAAKAKwASIDQQRrKAIAIgJBeHEiBCABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoArgBIgEEQCAAKAK8ASIAQQRrKAIAIgNBeHEiAiABQQJ0IgFBBEEIIANBA3EiAxtqSQ0BIANBACACIAFBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL6ggBE38jAEEQayIHJAACQAJAIANBA2wiDEH/////A0sNACADQQxsIgZB/f///wdPDQACfyAGRQRAQQQhCkEADAELIAYQbiIKRQ0CIAwLIQYgB0EANgIMIAcgCjYCCCAHIAY2AgQCQAJAAkACQAJAIAMEQEEAIQYgAiADayIEQQAgAiAETxshDSACIAxrIgRBACACIARPGyEOIAEgDGohDyABIANqIRAgASADQQJ0IhFqIRIgASADQQF0IhNqIRQgASADQQVsIhVqIRZBCCELA0AgAiAGRgRAIAYhBAwHCyAGIA5GDQICfyAGIA9qLQAAQQh0IgUgASAGai0AAHIiBEH//wFxBEAgBEH/B3EhBCAFQYCAAnEhCCAFQYD4AXEiBUGA+AFHBEAgCEEQdCEIIAVBDXRBgICA/ABxIARBDXRyQYCAgMADaiAIciAFDQIaIAhBgICA2ANyIARnQRBrIgVBF3RrIAQgBUH//wNxQQhqdEH///8DcXIMAgsgCEEQdCEFIARBDXQgBXJBgICA/gdyIAQNARogBUGAgID8B3IMAQsgBEEQdAshBCAHKAIEIAlGBEAgB0EEahCsByAHKAIIIQoLIAogC2pBCGsgBDYCACAHIAlBAWoiCTYCDCAGIA1GDQQgBiARaiACTw0DAn8gBiASai0AAEEIdCIFIAYgEGotAAByIgRB//8BcQRAIARB/wdxIQQgBUGAgAJxIQggBUGA+AFxIgVBgPgBRwRAIAhBEHQhCCAFQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogCHIgBQ0CGiAIQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAhBEHQhBSAEQQ10IAVyQYCAgP4HciAEDQEaIAVBgICA/AdyDAELIARBEHQLIQQgBygCBCAJRgRAIAdBBGoQrAcgBygCCCEKCyAKIAtqQQRrIAQ2AgAgByAJQQFqIgk2AgwgBiATaiIEIAJPDQYgBiAVaiACTw0FAn8gBiAWai0AAEEIdCIFIAYgFGotAAByIgRB//8BcQRAIARB/wdxIQQgBUGAgAJxIQggBUGA+AFxIgVBgPgBRwRAIAhBEHQhCCAFQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogCHIgBQ0CGiAIQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAhBEHQhBSAEQQ10IAVyQYCAgP4HciAEDQEaIAVBgICA/AdyDAELIARBEHQLIQQgBygCBCAJRgRAIAdBBGoQrAcgBygCCCEKCyAKIAtqIAQ2AgAgByAJQQFqIgk2AgwgC0EMaiELIAMgBkEBaiIGRw0ACwsgACAHKAIMNgIIIAAgBykCBDcCACAHQRBqJAAPCyAGIAxqIQQMAwsgA0ECdCAGaiEEDAILIAMgBmohBAwBCyADQQVsIAZqIQQLIAQgAkHU88YAEPAHAAsQmAoAC0EEIAYQmgkAC8QJAgh/AXsgACABKAIEIgI2AjwgASgCACIFIQMgACgCCCIHIAVJBEAgBSAHIgNrIgYgACgCACADa0sEQCAAIAMgBkEEQSwQ1gYgACgCCCEDCyAAKAIEIQkgBkEDcSIEBEAgAyAEaiAFIAdrIARrIQYgCSADQSxsaiECA0AgAkEAOwEoIAJCADcCICAC/QwAAAAAAAAAAAAAAAAAAAAA/QsCECACIAr9CwIAIAJBLGohAiAEQQFrIgQNAAshAwsgByAFa0F8TQRAIAkgA0EsbGohAgNAIAJBADsBKCACQgA3AiAgAv0MAAAAAAAAAAAAAAAAAAAAAP0LAhAgAiAK/QsCACACQSxqQgA3AgAgAkE0aiAK/QsCACACQcQAaiAK/QsCACACQdQAakEAOwEAIAJB2ABqQgA3AgAgAkHgAGogCv0LAgAgAkHwAGogCv0LAgAgAkGAAWpBADsBACACQaQBakIANwIAIAJBrAFqQQA7AQAgAkGEAWogCv0LAgAgAkGUAWogCv0LAgAgAkGwAWohAiADQQRqIQMgBkEEayIGDQALCyAAKAI8IQILIABBADYCICAAIAM2AggCQAJ/AkACQCACRQRAIABBADYCLAwBCyAFBEBBACEEIAAoAhggBUkEQCAAQRhqQQAgBUECQRIQ1gYgACgCICEEIAAoAjwhAgsgBUESbCIDBEAgACgCHCAEQRJsakEAIAP8CwALIABBADYCLCAAIAQgBWo2AiAgAkEBTQ0BQQAhBCAAKAIkIAVJBEAgAEEkakEAIAVBAkEeENYGIAAoAiwhBCAAKAI8IQILIAVBHmwiAwRAIAAoAiggBEEebGpBACAD/AsACyAAQQA2AjggACAEIAVqNgIsIAJBAk0NBEEAIQQgACgCMCAFSQRAIABBMGpBACAFQQJBKhDWBiAAKAI4IQQLIAVBKmwiAwRAIAAoAjQgBEEqbGpBACAD/AsACyAEIAVqIQQgAEE4agwDC0EAIQQgAEEANgIsIAJBAUcNAQsgAEEANgI4DAILIABBADYCOCACQQJNDQEgAEE4agsgBDYCAAsgACgCFCEEIABBADYCFCAAKAIQIQcCQAJAAkACQCAEBEAgB0EUaiECA0AgAigCACIDQQVPBEAgAkEMaygCACIGQQRrKAIAIghBeHEiCSADQQJ0IgNBBEEIIAhBA3EiCBtqSQ0DIAhBACAJIANBJ2pLGw0EIAYQogILIAJBGGohAiAEQQFrIgQNAAsLIAEtAAhFDQMgBUUEQEEAIQMMAwtBACEDIAAoAgwgBUkEQCAAQQxqQQAgBUEEQRgQ1gYgACgCECEHIAAoAhQhAwsCQCAFQQNxIgRFBEAgBSEGDAELIAVBfHEhBiADIARqIAcgA0EYbGohAgNAIAJBADYCACACQRRqQQA2AgAgAkEYaiECIARBAWsiBA0ACyEDCyAFQQRJDQIgByADQRhsaiECA0AgAkEANgIAIAJB3ABqQQA2AgAgAkHEAGpCADcCACACQSxqQgA3AgAgAkEUakIANwIAIAJB4ABqIQIgA0EEaiEDIAZBBGsiBg0ACwwCC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgACADNgIUCwvhCQEIfyMAQYABayIDJAAgACgCDCEGAn8CQAJAAkACQAJAIAAoAhQiCCAAKAIQIgRJBEACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBiAIai0AACIFQdsAaw4hBAsLCwsLCwsLCwsDCwsLCwsLCwELCwsLCwILCwsLCwsFAAsgBUEiaw4MCQoKCgoKCgoKCgoICgsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEH1AEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB7ABHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiBzYCFCAGIAlqLQAAQewARg0FCyADQQk2AnAgA0EYaiAGIAQgBxD4ASADQfAAaiADKAIYIAMoAhwQpggMEAsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEHyAEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB9QBHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiBzYCFCAGIAlqLQAAQeUARg0FCyADQQk2AnAgA0EoaiAGIAQgBxD4ASADQfAAaiADKAIoIAMoAiwQpggMDwsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEHhAEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB7ABHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiCjYCFCAGIAlqLQAAQfMARwRAIAohBwwBCyAEIApGDQ0gACAIQQVqIgc2AhQgBiAKai0AAEHlAEYNBQsgA0EJNgJwIANBOGogBiAEIAcQ+AEgA0HwAGogAygCOCADKAI8EKYIDA4LIANBCjoAcCADQfAAaiABIAIQsgcgABDTBgwNCyADQQs6AHAgA0HwAGogASACELIHIAAQ0wYMDAsgA0EHOgBwIANB8ABqIAEgAhCyByAAENMGDAsLIANBgAI7AXAgA0HwAGogASACELIHIAAQ0wYMCgsgA0EAOwFwIANB8ABqIAEgAhCyByAAENMGDAkLIAAgCEEBajYCFCADQUBrIgQgAEEAEPgDIAMpA0BCA1ENByAEIAEgAhCdByAAENMGDAgLIABBADYCCCAAIAhBAWo2AhQgA0HkAGogAEEMaiAAEIICIAMoAmgiBCADKAJkQQJGDQcaIAMgAygCbDYCeCADIAQ2AnQgA0EFOgBwIANB8ABqIAEgAhCyByAAENMGDAcLIAVBMGtB/wFxQQpJDQELIANBCjYCcCADQQhqIAYgBCAIQQFqIgEgBCABIARJGxD4ASADQfAAaiADKAIIIAMoAgwQpgggABDTBgwFCyADQdAAaiAAQQEQ+AMgAykDUEIDUQRAIAMoAlgMBQsgA0HQAGogASACEJ0HIAAQ0wYMBAsgA0EFNgJwIANBEGogBiAEIAUQ+AEgA0HwAGogAygCECADKAIUEKYIDAMLIANBBTYCcCADQSBqIAYgBCAFEPgBIANB8ABqIAMoAiAgAygCJBCmCAwCCyADQQU2AnAgA0EwaiAGIAQgBRD4ASADQfAAaiADKAIwIAMoAjQQpggMAQsgAygCSAsgA0GAAWokAAvhCQEIfyMAQYABayIDJAAgACgCDCEGAn8CQAJAAkACQAJAIAAoAhQiCCAAKAIQIgRJBEACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBiAIai0AACIFQdsAaw4hBAsLCwsLCwsLCwsDCwsLCwsLCwELCwsLCwILCwsLCwsFAAsgBUEiaw4MCQoKCgoKCgoKCgoICgsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEH1AEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB7ABHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiBzYCFCAGIAlqLQAAQewARg0FCyADQQk2AnAgA0EYaiAGIAQgBxD4ASADQfAAaiADKAIYIAMoAhwQpggMEAsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEHyAEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB9QBHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiBzYCFCAGIAlqLQAAQeUARg0FCyADQQk2AnAgA0EoaiAGIAQgBxD4ASADQfAAaiADKAIoIAMoAiwQpggMDwsgACAIQQFqIgU2AhQgBCAFTQ0MIAAgCEECaiIHNgIUAkAgBSAGai0AAEHhAEcNACAEIQUgBCAHRg0NIAAgCEEDaiIJNgIUIAYgB2otAABB7ABHBEAgCSEHDAELIAQgCUYNDSAAIAhBBGoiCjYCFCAGIAlqLQAAQfMARwRAIAohBwwBCyAEIApGDQ0gACAIQQVqIgc2AhQgBiAKai0AAEHlAEYNBQsgA0EJNgJwIANBOGogBiAEIAcQ+AEgA0HwAGogAygCOCADKAI8EKYIDA4LIANBCjoAcCADQfAAaiABIAIQsgcgABDTBgwNCyADQQs6AHAgA0HwAGogASACELIHIAAQ0wYMDAsgA0EHOgBwIANB8ABqIAEgAhCyByAAENMGDAsLIANBgAI7AXAgA0HwAGogASACELIHIAAQ0wYMCgsgA0EAOwFwIANB8ABqIAEgAhCyByAAENMGDAkLIAAgCEEBajYCFCADQUBrIgQgAEEAEMoCIAMpA0BCA1ENByAEIAEgAhCdByAAENMGDAgLIABBADYCCCAAIAhBAWo2AhQgA0HkAGogAEEMaiAAEIICIAMoAmgiBCADKAJkQQJGDQcaIAMgAygCbDYCeCADIAQ2AnQgA0EFOgBwIANB8ABqIAEgAhCyByAAENMGDAcLIAVBMGtB/wFxQQpJDQELIANBCjYCcCADQQhqIAYgBCAIQQFqIgEgBCABIARJGxD4ASADQfAAaiADKAIIIAMoAgwQpgggABDTBgwFCyADQdAAaiAAQQEQygIgAykDUEIDUQRAIAMoAlgMBQsgA0HQAGogASACEJ0HIAAQ0wYMBAsgA0EFNgJwIANBEGogBiAEIAUQ+AEgA0HwAGogAygCECADKAIUEKYIDAMLIANBBTYCcCADQSBqIAYgBCAFEPgBIANB8ABqIAMoAiAgAygCJBCmCAwCCyADQQU2AnAgA0EwaiAGIAQgBRD4ASADQfAAaiADKAIwIAMoAjQQpggMAQsgAygCSAsgA0GAAWokAAuuCgMJfwN7An4jAEGAAWsiBSQAIAUgAjYCDCAFIAAoAggiBjYCEAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACIAZGBEAgBUEUaiABIAIQjAQgBSgCGCIBIAUoAhwiCkEDdGohCAJAIApFDQAgACgCBCEHIAEhBgNAIAYoAgAiAyACTw0DIAZBBGooAgAiBCACTw0EIAcgA0EsbGoiAykCICEPIAcgBEEsbGoiBP0AAhAhDSAE/QACACEMIAQoAighCSADIAQpAiA3AiAgAygCKCELIAMgCTYCKCAD/QACACEOIAMgDP0LAgAgA/0AAhAhDCADIA39CwIQIAUgCzYCSCAFIA83A0AgBSAM/QsDMCAFIA79CwMgIAQgBSkDQDcCICAEIAUoAkg2AiggBCAF/QADIP0LAgAgBCAF/QADMP0LAhAgBkEIaiIGIAhHDQALIAAoAhQiBgRAIAAoAhAhByABIQIDQCACKAIAIgMgBk8NBiACQQRqKAIAIgQgBk8NByAHIANBGGxqIgMpAhAhDyAHIARBGGxqIgT9AAIAIQ0gAyAEKQIQNwIQIAP9AAIAIQwgAyAN/QsCACAEIA83AhAgBCAM/QsCACACQQhqIgIgCEcNAAsLIAAoAiAiBgRAIAAoAhwhByABIQIDQCACKAIAIgMgBk8NCCACQQRqKAIAIgQgBk8NCSAHIANBEmxqIgMvARAhCSAHIARBEmxqIgT9AAEAIQ0gAyAELwEQOwEQIAP9AAEAIQwgAyAN/QsBACAEIAk7ARAgBCAM/QsBACACQQhqIgIgCEcNAAsLIAAoAiwiBEUNACAAKAIoIQcgASEGA0AgBigCACICIARPDQkgBkEEaigCACIDIARPDQogByACQR5saiICKQEQIQ8gAikBFiEQIAcgA0EebGoiAy8BHCEJIAMoARghCyAD/QABACENIAIgAykBEDcBECAC/QABACEMIAIgDf0LAQAgAiALNgEYIAIgCTsBHCADIAz9CwEAIAUgEDcBNiAFIA83AzAgAyAFKQMwNwEQIAMgBSkBNjcBFiAGQQhqIgYgCEcNAAsLIAAoAjgiA0UgCkVyRQRAIAAoAjQhBCABIQYDQCAGKAIAIgAgA08NCyAGQQRqKAIAIgIgA08NDCAEIABBKmxqIgApASAhDyAEIAJBKmxqIgL9AAEQIQ0gAv0AAQAhDCACLwEoIQogACACKQEgNwEgIAAvASghByAAIAo7ASggAP0AAQAhDiAAIAz9CwEAIAD9AAEQIQwgACAN/QsBECAFIAc7AUggBSAPNwNAIAUgDP0LAzAgBSAO/QsDICACIAUpA0A3ASAgAiAFLwFIOwEoIAIgBf0AAyD9CwEAIAIgBf0AAzD9CwEQIAZBCGoiBiAIRw0ACwsgBSgCFCIABEAgAUEEaygCACICQXhxIgYgAEEDdCIAQQRBCCACQQNxIgIbakkNDCACQQAgBiAAQSdqSxsNDSABEKICCyAFQYABaiQADwtBACAFQQxqIAVBEGpBACAFQcjSxgAQoAgACyADIAJByP3GABDwBwALIAQgAkHI/cYAEPAHAAsgAyAGQcj9xgAQ8AcACyAEIAZByP3GABDwBwALIAMgBkHI/cYAEPAHAAsgBCAGQcj9xgAQ8AcACyACIARByP3GABDwBwALIAMgBEHI/cYAEPAHAAsgACADQcj9xgAQ8AcACyACIANByP3GABDwBwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC8UHAQR/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4FAQIDDQQACyAALQAEQQNHDQwgACgCCCIDKAIAIQAgA0EEaigCACIBKAIAIgIEQCAAIAIRAwALIAEoAgQiAQRAIABBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0PIAJBACAEIAFBJ2pLGw0OIAAQogILIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0OIABFIAFBNElyDQsMDQsCQCAALQAEQQFrDgIAAAoLIAAoAggiAw0IDAkLAkAgAC0ABEEBaw4CAAAHCyAAKAIIIgMNBQwGCyAAKAIEIgNBAEoEQCAAKAIIIgFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIANqSQ0MIAJBACAEIANBJ2pLGw0LIAEQogILIAAoAhAiA0UNCSAAKAIUIgAoAgAiAQRAIAMgAREDAAsgACgCBCIARQ0JIANBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIABqSQ0LIAFFDQggAiAAQSdqSw0KDAgLAkAgAC0ABEEBaw4CAAACCyAAKAIIIgMNAAwBCyAAKAIMIgFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIANqSQ0JIAJBACAEIANBJ2pLGw0IIAEQogILAkBBAyAALQAUIgNBBGsgA0EDTRtB/wFxDgQHBwcAAQsgA0EBaw4CAAAGCyAAKAIYIgFFDQUgACgCHCIDQQRrKAIAIgBBeHEiAkEEQQggAEEDcSIAGyABak8EQCAARSACIAFBJ2pNcg0FDAcLDAcLIAAoAgwiAUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgA2pJDQYgAkEAIAQgA0EnaksbDQUgARCiAgsgACgCFCIDRQ0DIAAoAhgiACgCACIBBEAgAyABEQMACyAAKAIEIgBFDQMgA0EEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgAGpJDQUgAUUgAiAAQSdqTXINAgwECyAAKAIMIgFBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIANqSQ0EIAJBACAEIANBJ2pLGw0DIAEQogILIAAoAhQiA0UNASAAKAIYIgAoAgAiAQRAIAMgAREDAAsgACgCBCIARQ0BIANBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIABqSQ0DIAFFIAIgAEEnak1yDQAMAgsgAxCiAgsPC0HkgscAQS5BlIPHABCoCQALQaSCxwBBLkHUgscAEKgJAAvsCQIGfwN+IwBB0AFrIgMkAAJAAkACQAJAAkAgACkDAEICUQRAIAAoAqgBQQJJDQMgACgCrAEiACkDGEICUg0BIAAoAiQiAUUNAiAAKAIgIgJBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIAFqSQ0EIARBACAFIAFBJ2pLGw0FIAIQogIMAgsgACgCqAEhASAAQQA2AqgBAkACQAJAAkAgAUEBaw4CAQIACyADQTBqIQQCQAJAAkBBJRBuIgEEQCABQZ2zxgApAAA3AB0gAUGQs8YA/QAAAP0LABAgAUGAs8YA/QAAAP0LAABBDBBuIgJFDQEgAkElNgIIIAIgATYCBCACQSU2AgBBDBBuIgFFDQIgAUEoOgAIIAFB1JHBADYCBCABIAI2AgAgBEEANgIQIAQgAa1CIIZCA4Q3AwAMAwtBAUElEJoJAAtBDBCxCgALQQwQsQoACwwCCyADIAApA8ABNwNAIAMgAP0AA7AB/QsDMAwBCyAAKAKsASIBQShqIQIgASgCJCEEIAEoAiAhBQJAIAEpAxgiB0ICUgRAIAMgASkDEDcDQCADIAH9AAMA/QsDMCADIAL9AAMA/QsDWCADIAL9AAMQ/QsDaCADIAL9AAMg/QsDeCADIAH9AANY/QsDiAEgAyABKQOYATcDyAEgAyAB/QADaP0LA5gBIAMgAf0AA3j9CwOoASADIAH9AAOIAf0LA7gBIAMgBDYCVCADIAU2AlAgAyAHNwNIIAMgA/0AA1j9CwMgIAMgA/0AAzj9CwMAIAMgA/0AA0j9CwMQIAMoAjAhBSADKAI0IQQgA0GIAWoQugUMAQsgAyAC/QADIP0LAyAgAyAC/QADEP0LAxAgAyAC/QADAP0LAwALIAQEQCAFQQRrKAIAIgJBeHEiBkEEQQggAkEDcSICGyAEakkNBSACQQAgBiAEQSdqSxsNBiAFEKICCyADIANBGGoiAikDEDcDQCADIAL9AAMA/QsDMCABQQRrKAIAIgJBeHFBvAFBwAEgAkEDcSIEG0kNBCAEQQAgAkHgAU8bDQUgARCiAgsCQCADKAJAIgEEQCADKQM4IQcDQCAHUA0CIAEgASkDCCIIIAEoAgQiAkL/////DyAIIAhC/////w9aG6drIgRBACACIARPGyIEQoDAACAHIAdCgMAAWhunIgUgBCAFSRutIgl8NwMIIAcgCX0hByACIAggAq0iCSAIIAlUG6dHDQALDAELIAMtADBBA0cNACADKAI0IgEoAgAhAiABQQRqKAIAIgQoAgAiBQRAIAIgBREDAAsgBCgCBCIEBEAgAkEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgBGpJDQUgBUEAIAYgBEEnaksbDQYgAhCiAgsgAUEEaygCACICQXhxIgRBEEEUIAJBA3EiAhtJDQQgAkEAIARBNE8bDQUgARCiAgsgABDoAwwCCyAAKAIEIgEEQCAAKAIAIgJBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIAFqSQ0DIARBACAFIAFBJ2pLGw0EIAIQogILIABB2ABqELoFCyAAQQRrKAIAIgFBeHFBvAFBwAEgAUEDcSICG0kNASACQQAgAUHgAU8bDQIgABCiAgsgA0HQAWokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC4gTAQh/IwBBIGsiBiQAAkACQANAAkAgASgCCCEDIAEQ6QUCQAJAAkAgASgCCCIHIAEoAgQiBUcEQCAFIAdNDQEgASgCACIJIAdqLQAAIgRB3ABHBEAgBEEiRwRAIAEgB0EBajYCCCAGQRA2AhQgACABIAZBFGoQgQgMCQsCQCACKAIIIggEQCADIAdNDQEgAyAHIAVB7LDFABCgBQALAkAgAyAHTQRAIAEgB0EBajYCCCAGQQhqIAMgCWogByADaxCXAyAGKAIIRQRAIAYoAhAhASAGKAIMIQMMCwsgBkEPNgIUIAYgASAGQRRqEIQIIAYoAgAiA0UNASAGKAIEIQEMCgsgAyAHIAVB3LDFABCgBQALIAAgBigCBDYCBCAAQQI2AgAMCQsCQAJAIAcgA2siBSACKAIAIAhrSwRAIAIgCCAFEOsGIAIoAgQhBCACKAIIIQgMAQsgAigCBCEEIAMgB0YNAQsgBUUNACAEIAhqIAMgCWogBfwKAAALIAEgB0EBajYCCCACIAUgCGoiAjYCCCAGQQhqIAQgAhCXAyAAAn8gBigCCEUEQCAGKAIMIQMgBigCEAwBCyAGQQ82AhQgBiABIAZBFGoQhAggBigCACIDRQ0EIAYoAgQLNgIIIAAgAzYCBCAAQQE2AgAMCAsCQCADIAdNBEACQAJAIAcgA2siCCACKAIAIAIoAggiBGtLBEAgAiAEIAgQ6wYgAigCCCEEDAELIAMgB0YNAQsgCEUNACACKAIEIARqIAMgCWogCPwKAAALIAEgB0EBaiIKNgIIIAIgBCAIaiIDNgIIAkACQAJAAkACQAJAAkACQAJAAkACfyAFIApLBEAgASAHQQJqNgIIIAkgCmotAAAMAQsgBkEENgIUIAZBCGogASAGQRRqEIIIIAYtAAgNDCAGLQAJC0H/AXFBImsOVAIAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAFAAAABgAAAAAAAAAHAAAACAAJAQALIAZBDDYCFCABIAZBFGoQmwghAwwPCyMAQSBrIgQkAAJAAkACQCABKAIEIgMgASgCCCIFTwRAAkAgAyAFa0EDTQRAIAEgAzYCCCAEQQQ2AhQgBEEMaiABIARBFGoQgwggAyEHDAELIAEgBUEEaiIHNgIIIAEoAgAgBWoiBS0AAUEBdC8BvKhFIAUtAABBAXQvAbysRXLBQQh0IAUtAAJBAXQuAbysRXIgBS0AA0EBdC4BvKhFciIFQQBOBEAgBEEAOwEMIAQgBTsBDgwBCyAEQQw2AhQgBEEMaiABIARBFGoQgwgLIAQvAQxBAUYEQCAEKAIQIQMMBAsgBC8BDiIFQYD4A3FBgLgDRg0BIAVBgMgAakH//wNxQYD4A08EQCABKAIAIQkCfyADIAdLBEAgByAJai0AAAwBCyAEQQQ2AhQgBEEMaiABIARBFGoQggggBC0ADEEBRgRAIAQoAhAhAwwGCyAELQANCyABIAdBAWoiCDYCCEHcAEYEQAJ/IAMgCEsEQCAIIAlqLQAADAELIARBBDYCFCAEQQxqIAEgBEEUahCCCCAELQAMQQFGBEAgBCgCECEDDAcLIAQtAA0LIAdBAmohCEH1AEYEQCADIAhJDQUCQCADIAhrQQNNBEAgASADNgIIIARBBDYCFCAEQQxqIAEgBEEUahCDCAwBCyABIAdBBmo2AgggCCAJaiIDLQABQQF0LwG8qEUgAy0AAEEBdC8BvKxFcsFBCHQgAy0AAkEBdC4BvKxFciADLQADQQF0LgG8qEVyIgNBAE4EQCAEQQA7AQwgBCADOwEODAELIARBDDYCFCAEQQxqIAEgBEEUahCDCAsgBC8BDEEBRgRAIAQoAhAhAwwHCyAELwEOIgdBgEBrQf//A3FBgPgDTwRAIAdBgMgAakH//wNxIAVBgNAAakH//wNxQQp0ciIIQYCABGohBSACKAIAIAIoAggiA2tBA00EQCACIANBBBDrBiACKAIIIQMLIAIgA0EEajYCCCACKAIEIANqIgMgBUESdkHwAXI6AAAgA0EDaiAHQT9xQYABcjoAACADIAhBBnZBP3FBgAFyOgACIAMgBUEMdkE/cUGAAXI6AAFBACEDDAcLIARBFDYCFCABIARBFGoQmwghAwwGCyABIAg2AgggBEEXNgIUIAEgBEEUahCbCCEDDAULIARBFzYCFCABIARBFGoQmwghAwwECyAFQYABTwRAIAIoAgAgAigCCCIDa0EDTQRAIAIgA0EEEOsGIAIoAgghAwsgAigCBCADaiEHAn8gBUGAEEkEQCAFQQZ2QUByIQhBAgwBCyAHIAVBBnZBP3FBgAFyOgABIAVBDHZBYHIhCEEDCyEJIAcgCDoAACACIAMgCWo2AgggByAJakEBayAFQT9xQYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAhCtBwsgAiADQQFqNgIIIAIoAgQgA2ogBToAAEEAIQMMAwsgBSADIANBmLjFABCgBQALIARBFDYCFCABIARBFGoQmwghAwwBCyAIIAMgA0GYuMUAEKAFAAsgBEEgaiQAIANFDQ8MDgsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQSI6AAAMDAsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQdwAOgAADAsLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEvOgAADAoLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEIOgAADAkLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEMOgAADAgLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEKOgAADAcLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakENOgAADAYLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEJOgAADAULIAMgByAFQfywxQAQoAUACyAGKAIMIQMMBAsgBkEENgIUIAAgASAGQRRqEIEIDAYLIAcgBUHMsMUAEPAHAAsgACAGKAIENgIEIABBAjYCAAwECwwBCwsgAEECNgIAIAAgAzYCBAwBCyAAIAE2AgggACADNgIEIABBADYCAAsgBkEgaiQAC98QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQam4xQBBARCuAyECDAILAkACQAJAAkACQAJAAkAgACgCCCIEIAAoAgQiBk8EQCAAKAIQIgJFDQEgAkHHx8QAQRAQrgNFDQEMBwsgACAEQQFqIgE2AgggBUEIaiACIARqLQAAIgMQigggBSgCCCIHBEAgACgCECIARQ0IIAAgByAFKAIMEK4DIQIM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CnFBA3RrIgdBCGsoAgAgAEYEQEEBIQggASAHQQRrKAIARg0DCyACQgF9IAKDIgJQRQ0ACwsgBUKAgYKEiJCgwIB/gyECIBZFBEAgAlANAiACeqdBA3YgDGogCnEhEwtBASACIAVCAYaDUA0CGkEAIQggCSATaiwAACIMQQBOBEAgCSAJKQMAQoCBgoSIkKDAgH+DeqdBA3YiE2otAAAhDAsgCSATaiADp0H/AHEiBzoAACAJIBNBCGsgCnFqQQhqIAc6AABB0L7IAEHQvsgAKAIAIAxBAXFrNgIAQdS+yABB1L7IACgCAEEBajYCACAJIBNBA3RrIgdBCGsgADYCACAHQQRrIAE2AgALIAgPC0EACyEWIBdBCGoiFyAMaiAKcSEMDAALAAueBgEEfyAAENoEAkACQCAAKAKYBCIBBEAgACgCnAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKkBCIBBEAgACgCqAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKwBCIBBEAgACgCtAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAK8BCIBBEAgACgCwAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALIBCIBBEAgACgCzAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALUBCIBBEAgACgC2AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALgBCIBBEAgACgC5AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALsBCIBBEAgACgC8AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdq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rMtUVVXFv6CioKC2DAULRNIhM3982RLAIAGhIgIgAiACoiIBoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiADIAFEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYMBAsgBEHjl9uABEsNAiAGQQBOBEBEGC1EVPsh+T8gAaEiAiACIAKiIgGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwECyABRBgtRFT7Ifk/oCICIAIgAqIiAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAMLIARBgICAzANPBEAgASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAwsgBSAAQwAAgHuSOAIIIAUqAggaQwAAgD8MAgtEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAQtEGC1EVPshCcBEGC1EVPshCUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLaMCyAFQRBqJAAL3QgBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBzMPIACgCAEYEQCACKAIEQQNxQQNHDQFBxMPIACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEO4ECwJAAkACQAJAAkACQAJAIAIoAgQiA0ECcUUEQCACQdDDyAAoAgBGDQIgAkHMw8gAKAIARg0DIAIgA0F4cSICEO4EIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQczDyAAoAgBHDQFBxMPIACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYC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hAhsNgAAIBZB0ABqIAwgFkE6ai0AACIUQQJqIglqIAhBAXRqQQJ2QYGChAhsNgAAIBZBO2ogEiAWQSVqLQAAIghqIBRBAXRqQQJ2QYGChAhsNgAAIBZBJmogCSAWQRBqLQAAaiAIQQF0akECdkGBgoQIbDYAAAwGCyAmIDVqIipBGGotAAAhMiAqQRdqLQAAISUgKkERai0AACESICpBEmotAAAhISAqQRNqLQAAIQ0gKCAqQRZqLQAAIhYgKkEUai0AACIUQQJqIgkgKkEVai0AACIMQQF0ampBAnY6AAMgKCAMIA1BAmoiCCAUQQF0ampBAnY6AAIgKCAhIA1BAXRqIAlqQQJ2OgABICggEiAhQQF0aiAIakECdjoAACAqQSZqICgoAgA2AAAgKCAMICVBAmoiCGogFkEBdGpBAnY6AAQgKkE7aiAoKAABNgAAICggFiAyaiAlQQF0akECakECdjoABSAqQdAAaiAoKAECNgAAICggCCAyaiAyQQF0akECdjoABiAqQeUAaiAoKAADNgAADAULICYgNWoiNEEUai0AACEWIDRBE2otAAAhOSA0QeQAai0AACEMIDRBzwBqLQAAISogNEE6ai0AACEyIDRBJWotAAAhJSAoIDRBEmotAAAiEkECaiIUIDRBEGotAAAiIWogNEERai0AACINQQF0akECdjoADCAoIA0gJUECaiIJICFBAXRqakECdjoACyAoICEgMkECaiIIICVBAXRqakECdjoACiAoICogMkEBdGogCWpBAnY6AAkgNEHQAGogKCgACTYAACAoIAwgKkEBdGogCGpBAnY6AAggNEHlAGogKCgCCDYAACAoIBYgFCA5QQF0ampBAnY6AA4gKCA5IA0gEkEBdGpqQQJqQQJ2OgANIDRBJmogKCgACzYAACA0QTtqICgoAQo2AAAMBAsgJiA1aiINQdEAaiANQRBqLQAAIhIgDUERai0AACIWakEBakEBdiIIOgAAIA1BJmogCDoAACANQdIAaiAWIA1BEmotAAAiDGpBAWpBAXYiCDoAACANQSdqIAg6AAAgDUHlAGogDUElai0AACIUIA1BzwBqLQAAIA1BOmotAAAiCUEBdGpqQQJqQQJ2OgAAIA1B5gBqIBYgFCASQQF0ampBAmpBAnYiCDoAACANQdAAaiASIAkgFEEBdGpqQQJqQQJ2OgAAIA1BO2ogCDoAACANQecAaiAMIBIgFkEBdGpqQQJqQQJ2Igg6AAAgDUE8aiAIOgAAIA1B6ABqIA1BE2otAAAiEiAWIAxBAXRqakECakECdiIJOgAAIA1BFGotAAAhFCANQdMAaiAMIBJqQQFqQQF2Igg6AAAgDUE9aiAJOgAAIA1BKGogCDoAACANQT5qIBQgDCASQQF0ampBAmpBAnY6AAAgDUEpaiASIBRqQQFqQQF2OgAADAMLICYgNWoiJUHQAGogJUESai0AACIMICVBE2otAAAiFmpBAWpBAXYiCDoAACAlQSZqIAwgJUERai0AACIJakEBakEBdjoAACAlQSdqIAg6AAAgJUHRAGogFiAlQRRqLQAAIiFqQQFqQQF2Igg6AAAgJUEoaiAIOgAAICVB0gBqICEgJUEVai0AACINakEBakEBdiISOgAAICVB5QBqIAwgIWogFkEBdGpBAmpBAnYiCDoAACAlQTxqIAg6AAAgJUHmAGogFiANQQJqIhQgIUEBdGpqQQJ2Igg6AAAgJUE9aiAIOgAAICVBO2ogCSAWIAxBAXRqakECakECdjoAACAlQRhqLQAAIQkgJUEXai0AACEWICVB5wBqICVBFmotAAAiDCAhIA1BAXRqakECakECdiIIOgAAICVBKWogEjoAACAlQegAaiAJIAwgFkEBdGpqQQJqQQJ2OgAAICVB0wBqIBYgDEEBdCAUampBAnY6AAAgJUE+aiAIOgAADAILICYgNWoiIUHlAGogIUHkAGotAAAiCSAhQc8Aai0AACISakEBakEBdjoAACAhQecAaiASICFBOmotAAAiDGpBAWpBAXYiCDoAACAhQdAAaiAIOgAAICFB0gBqIAwgIUElai0AACINakEBakEBdiIIOgAAICFBO2ogCDoAACAhQT1qIA0gIUEQai0AACIWakEBakEBdiIUOgAAICFB5gBqIAwgCSASQQF0ampBAmpBAnY6AAAgIUHoAGogDSASIAxBAXRqakECakECdiIIOgAAICFB0QBqIAg6AAAgIUHTAGogFiAMIA1BAXRqakECakECdiIIOgAAICFBPGogCDoAACAhQRNqLQAAIQkgIUESai0AACEMICFBPmogIUERai0AACISIA0gFkEBdGpqQQJqQQJ2Igg6AAAgIUEmaiAUOgAAICFBKWogCSASIAxB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AmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQRyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBCAKIANBBXIgH2wgB2oiAkkNAiAKIAJrIiBBCEkNACAPIBAgFyABIAJqEKQEIAIgEUsNAyARIAJrIiBBCEkNASAPIBAgFyACIAhqEKQEIAogA0EGciAfbCAHaiICSQ0CIAogAmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQdyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBEEBITAMBAtBAEEIICBBmL3FABCgBQALQQBBCCAgQai9xQAQoAUACyACIAogCkHIvcUAEKAFAAsgAiARIBFBuL3FABCgBQALIAYNACAwRQ0HIABBBHQhLCAFKAIIIQIgBSgCBCEBQQAhLiAFLQAqDQMMAQsgAEEEdCIsIAZBBHQiLiATbGoiKUEPciE7IClBDnIhHiApQQ1yIRYgKUEMciEMIClBC3IhEiApQQpyIRQgKUEJciEJIClBCHIhFSApQQdyIRkgKUEGciELIClBBXIhESApQQRyIQogKUEDciEIIClBAnIhByApQQFyIQMgBSgCCCECIAUoAgQhASAFLQAqDQEgDyAQIBggASACICkgExCKAyAPIBAgGCABIAIgAyATEIoDIA8gECAYIAEgAiAHIBMQigMgDyAQIBggASACIAggExCKAyAPIBAgGCABIAIgCiATEIoDIA8gECAYIAEgAiARIBMQigMgDyAQIBggASACIAsgExCKAyAPIBAgGCABIAIgGSATEIoDIA8gECAYIAEgAiAVIBMQigMgDyAQIBggASACIAkgExCKAyAPIBAgGCABIAIgFCATEIoDIA8gECAYIAEgAiASIBMQigMgDyAQIBggASACIAwgExCKAyAPIBAgGCABIAIgFiATEIoDIA8gECAYIAEgAiAeIBMQigMgDyAQIBggASACIDsgExCKAyAFKAIgIQsgBSgCHCERIA8gECAYIAUoAhAiCCAFKAIUIgcgBiAfbEEDdCAAQQN0aiIKIB8QigMgDyAQIBggESALIAogHxCKAyAPIBAgGCAIIAcgCkEBciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkECciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEDciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEEciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEFciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEGciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAPIBAgGCAIIAcgCkEHciIDIB8QigMgDyAQIBggESALIAMgHxCKAyAwRQ0GCyAnQQZ0IQMgLkEEaiAnbEEEdCAsakEPaiELQX0hJgNAIA8gECAXIAEgAiALQQ9rIBMQ+gQgDyAQIBcgASACIAtBDmsgExD6BCAPIBAgFyABIAIgC0ENayATEPoEIA8gECAXIAEgAiALQQxrIBMQ+gQgDyAQIBcgASACIAtBC2sgExD6BCAPIBAgFyABIAIgC0EKayATEPoEIA8gECAXIAEgAiALQQlrIBMQ+gQgDyAQIBcgASACIAtBCGsgExD6BCAPIBAgFyABIAIgC0EHayATEPoEIA8gECAXIAEgAiALQQZrIBMQ+gQgDyAQIBcgASACIAtBBWsgExD6BCAPIBAgFyABIAIgC0EEayATEPoEIA8gECAXIAEgAiALQQNrIBMQ+gQgDyAQIBcgASACIAtBAmsgExD6BCAPIBAgFyABIAIgC0EBayATEPoEIA8gECAXIAEgAiALIBMQ+gQgAyALaiELICZBAWoiJg0ACyAFKAIgIQogBSgCHCEIIA8gECAXIAUoAhAiByAFKAIUIgMgHyAGQQN0QQRybCAAQQN0aiICIB8Q+gQgDyAQIBcgCCAKIAIgHxD6BCAPIBAgFyAHIAMgAkEBciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkECciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEDciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEEciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEFciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEGciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BCAPIBAgFyAHIAMgAkEHciIBIB8Q+gQgDyAQIBcgCCAKIAEgHxD6BAwFCyAYIAEgAiApIBMQ/AUgGCABIAIgAyATEPwFIBggASACIAcgExD8BSAYIAEgAiAIIBMQ/AUgGCABIAIgCiATEPwFIBggASACIBEgExD8BSAYIAEgAiALIBMQ/AUgGCABIAIgGSATEPwFIBggASACIBUgExD8BSAYIAEgAiAJIBMQ/AUgGCABIAIgFCATEPwFIBggASACIBIgExD8BSAYIAEgAiAMIBMQ/AUgGCABIAIgFiATEPwFIBggASACIB4gExD8BSAYIAEgAiA7IBMQ/AUgMEUNBAsgJ0EGdCEDIC5BBGogJ2xBBHQgLGpBD2ohCkF9IQcDQCAXIAEgAiAKQQ9rIBMQ/AUgFyABIAIgCkEOayATEPwFIBcgASACIApBDWsgExD8BSAXIAEgAiAKQQxrIBMQ/AUgFyABIAIgCkELayATEPwFIBcgASACIApBCmsgExD8BSAXIAEgAiAKQQlrIBMQ/AUgFyABIAIgCkEIayATEPwFIBcgASACIApBB2sgExD8BSAXIAEgAiAKQQZrIBMQ/AUgFyABIAIgCkEFayATEPwFIBcgASACIApBBGsgExD8BSAXIAEgAiAKQQNrIBMQ/AUgFyABIAIgCkECayATEPwFIBcgASACIApBAWsgExD8BSAXIAEgAiAKIBMQ/AUgAyAKaiEKIAdBAWoiBw0ACwwDC0EAQQggC0HYvcUAEKAFAAtBAEEIICJBmL7FABCgBQALQQBBCCAiQfi8xQAQoAUACyAAQQFqIgAgc0cNAQwCCwsgAyABQbi+xQAQ8AcACyAGQQFqIgYgckcNAAsLICsgBf0AAiD9CwIgICsgBf0AAhD9CwIQICsgBf0AAgD9CwIAIAUoAnQiAARAIB0oAgAgAEECdEEBEMEHCyAFKAKQBCIABEAgBSgClAQgAEEebEEBEMEHCyB2EMMCIAUoAvAEQYAhQQEQwQcgBSgCnAQiAARAIAUoAqAEIABBHmxBARDBBwsgBSgCqAQiAARAIAUoAqwEIABBARDBBwsgBSgCtAQiAARAIAUoArgEIABBARDBBwsgBSgCwAQiAARAIAUoAsQEIABBARDBBwsgBSgCzAQiAARAIAUoAtAEIABBARDBBwsgBSgC2AQiAEUNBSAFKALcBCAAQQEQwQcMBQsgBCgC2BgiAUUNACAEKALcGCABQQEQwQcLIHpCIIinIR0geqchBgwBC0ECIQZB1JXHACEdCyArIAI2AhAgKyAdNgIMICsgBjYCCCArIAo7AQYgKyAJOgAFICsgADoABAsgK0GAgICAeDYCACAFKAJ0IgEEQCAFKAJwIgNBBGsoAgAiAEF4cSIGIAFBAnQiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCkAQiAQRAIAUoApQEIgNBBGsoAgAiAEF4cSIGIAFBHmwiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCACIDBEAgBSgCBCIGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNAyAAQQAgASADQSdqSxsNBCAGEKICCyAFKAIMIgMEQCAFKAIQIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoAhgiAwRAIAUoAhwiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQQgBhCiAgsgBUGYAWoQwwIgBSgC8AQiAUEEaygCACIGQXhxQYQhQYghIAZBA3EiABtJDQIgAEEAIAZBqCFPGw0DIAEQogIgBSgCnAQiAQRAIAUoAqAEIgNBBGsoAgAiAEF4cSIGIAFBHmwiAUEEQQggAEEDcSIAG2pJDQMgAEEAIAYgAUEnaksbDQQgAxCiAgsgBSgCqAQiAwRAIAUoAqwEIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoArQEIgMEQCAFKAK4BCIGQQRrKAIAIgBBeHEiAUEEQQggAEEDcSIAGyADakkNAyAAQQAgASADQSdqSxsNBCAGEKICCyAFKALABCIDBEAgBSgCxAQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQQgBhCiAgsgBSgCzAQiAwRAIAUoAtAEIgZBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0DIABBACABIANBJ2pLGw0EIAYQogILIAUoAtgEIgNFDQAgBSgC3AQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQIgAEEAIAEgA0EnaksbDQMgBhCiAgsCQCAFKALkBCIDBEAgBSgC6AQiBkEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQMgAEEAIAEgA0EnaksbDQEgBhCiAgsgBEGwGWokAAwFCwwCC0EBIAAQmgkAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtBAUEJEJoJAAsgDkGABmokAAuBBgIFfwN9QwAAgD8hCgJ/AkAgACgCCCIFIAFLBEAgACgCBCIGIAFBGGxqIgEtABMiAyABLQASIgQgAS0AESIHIAQgB0sbIgQgAyAESxsiAwR9QwAAQMEgACoCRCAALQBYQQJGIgQbIghDAAAQQSAAKgJIIAQbIAiTQwAAfkOVIANBAWtB/wFxs5SSEIgEIgggCJIFQwAAAAALIQggAUEMai8BACIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEBIANBgIACcSEEIANBgPgBcSIDQYD4AUYEQCAEQRB0IgNBgICA/AdyIAFFDQMaIAMgAUENdHJBgICA/gdyDAMLIARBEHQhBCADRQ0BIANBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAEcgwCCyABIAVByMvGABDwBwALIAEgAWdBEGsiAUH//wNxQQhqdEH///8DcSAEQYCAgNgDciABQRd0a3ILviIJQwAAgD9eBEAgCRDgBUNU+C1AlEMAAIA/kpEhCgsCfwJAIAIgBUkEQCAGIAJBGGxqIgEtABMiAiABLQASIgMgAS0AESIFIAMgBUsbIgMgAiADSxsiAgR9QwAAQMEgACoCRCAALQBYQQJGIgMbIglDAAAQQSAAKgJIIAMbIAmTQwAAfkOVIAJBAWtB/wFxs5SSEIgEIgkgCZIFQwAAAAALIQkgAUEMai8BACIBQf//AXFFBEAgAUEQdAwDCyABQf8HcSEAIAFBgIACcSECIAFBgPgBcSIBQYD4AUYEQCACQRB0IgFBgICA/AdyIABFDQMaIAEgAEENdHJBgICA/gdyDAMLIAJBEHQhAiABRQ0BIAFBDXRBgICA/ABxIABBDXRyQYCAgMADaiACcgwCCyACIAVByMvGABDwBwALIAAgAGdBEGsiAEH//wNxQQhqdEH///8DcSACQYCAgNgDciAAQRd0a3ILIQAgCCAKlCIKIApbIAogCSAAviIIQwAAgD9eBH0gCBDgBUNU+C1AlEMAAIA/kpEFQwAAgD8LlGBFcQvfBgIIfwN+IwBBoAFrIgMkACABvCIGQf///wNxIgdBgICABHIgBkEBdEH+//8HcSAGQRd2Qf8BcSIIGyIJrSILQgGDIQxBAiEEAkACQAJAAkACQCAHRUEEQQNBAiAHGyAGQYCAgPwHcSIHGyAHQYCAgPwHRhtBAWsOBAABAgMEC0EDIQQMAwtBBCEEDAILIAhBlgFrIQUgDFAhBEIBIQ0MAQtCgICAECALQgGGIAlBgICABEYiBRshC0ICQgEgBRshDSAMUCEEQeh+Qel+IAUbIAhqIQULIAMgBTsBiAEgAyANNwOAASADQgE3A3ggAyALNwNwIAMgBDoAigECQAJAAkACQAJAAkACQAJAIARB/wFxQQFNBEAgA0HgAGogA0HwAGogA0EHahDVASADKAJgRQ0BIAMgAygCaDYCmAEgAyADKQJgNwOQAQwCCyAEQQJrQf8BcSIIRQ0CQQEhBEHaycQAQcSNwgAgBkEASCIFG0HaycQAQQEgBRsgAhshB0EBIAZBH3YgAhshBSADQQI7ARggCEECRg0DIANBAzYCICADQZiyxQA2AhwMBwsgA0GQAWogA0HwAGogA0EHahBdCyADKAKUASIFRQ0CIAMoApABIgQtAABBME0NA0HaycQAQQEgBkEASCIHGyEJQdrJxABBxI3CACAHGyEHIAZBH3YhCiADLgGYASEIIANBATYCICADIAQ2AhwgA0ECOwEYIAVBAWsiBUUEQCADQSRqIQZBAyEEDAULIANBPGohBiADIAU2AjggA0ECOwEwIANBqLjFADYCKCADQQI7ASQgA0EBNgIsIAMgBEEBajYCNEEFIQQMBAsgA0EDNgIgIANBn7LFADYCHCADQQI7ARhBASEHQQAhBUEBIQQMBAsgA0EDNgIgIANBx43CADYCHAwDC0Gmn8IAQSFBiKDCABCoCQALQdifwgBBH0GYoMIAEKgJAAsgByAJIAIbIQdBASAKIAIbIQUgBkEBOwEMIAZBAjsBACAGQQJBASAIQQBMIgIbNgIIIAZBqaDCAEGooMIAIAIbNgIEIAYgCEEBayICIAJBH3UiAnMgAms7AQ4LIAMgBDYCbCADIAU2AmQgAyAHNgJgIAMgA0EYajYCaCAAIANB4ABqEMkDIANBoAFqJAAL4gYCBX8BfiMAQTBrIgIkACAAKAIAIQAgASgCACIDQfzKxABBASABKAIEIgQoAgwiBREAACEGIAIgADYCDAJAAkACQAJAAkACQAJAIAYNAAJAIAEtAApBgAFxRQRAIAJBDGogARDnBCACIABBAWo2AgxFDQEMAwsgA0HIiscAQQEgBREAAA0BIAJBAToAHyACIAQ2AhQgAiADNgIQIAJBiI/CADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQ5wQNASACKAIgQYOOwgBBAiACKAIkKAIMEQAAIAIgAEEBajYCDA0CCwJAIAEtAApBgAFxBEAgASkCACEHIAJBAToAHyACIAc3AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0DIAIoAiBBg47CAEECIAIoAiQoAgwRAAAgAiAAQQJqNgIMRQ0BDAcLIAEoAgBB06bFAEECIAEoAgQoAgwRAAANAiACQQxqIAEQ5wQgAiAAQQJqNgIMDQYLAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAfIAIgBzcCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQcgAigCIEGDjsIAQQIgAigCJCgCDBEAACACIABBA2o2AgxFDQEMBgsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0GIAJBDGogARDnBCACIABBA2o2AgwNBQsgAS0ACkGAAXFFDQIgASgCACEDIAEoAgQhBEEBIQAgAkEBOgAfIAIgBDYCFCACIAM2AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0EIAIoAiBBg47CAEECIAIoAiQoAgwRAABFDQMMBgsgAiAAQQFqNgIMCyACIABBAmo2AgwMAwsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0BQQEhACACQQxqIAEQ5wQNAyABKAIEIQQgASgCACEDCyADQf3KxABBASAEKAIMEQAAIQAMAgtBASEADAELIAIgAEEDajYCDEEBIQALIAJBMGokACAAC5UGAgZ/BX5BBCEDIAEoAggiBEEEaigCACEFIAECfiAEQQhqKAIAIgYgASkDACIKIAatIgkgCSAKVhunRgRAQeCVxwApAwAiDUIIiCELIA2nIQMgCSANQv8Bg0IEUg0BGgsgCkIBfAsiDDcDACADQf8BcUEERwRAIABCgYCAgJCAgICAfzcCACAAIAOtQv8BgyALQgiGhDcCCA8LIAECfgJAIAYgDCAJIAkgDFYbpyIDa0EETwRAIAMgBWooAAAhBkEEIQNCACELDAELQQAhBkHglccAKQMAIg1CCIghCyANpyEDIAkgDUL/AYNCBFINARoLIAxCBHwLIgo3AwAgA0H/AXFBBEcEQCAAIAM6AAggAEKBgICAkICAgIB/NwIAIAAgC6ciATsACSAAIAtCGIg+AgwgAEELaiABQRB2OgAADwsCQAJAAkACQCACQf//A3EiB0EFTwRAIAdBBWsiAgRAIAIQbiIDBEAgA0EEay0AAEEDcUUgAkVyRQRAIANBACAC/AsACyAEQQhqKAIAIgWtIQkgBUL/////DyAKIApC/////w9aG6drIghBACAFIAhPGyACTwRAIARBBGooAgAgCiAJIAkgClYbp2ohBCACQQFHDQQgAyAELQAAOgAADAULQeCVxwApAwAiC0IIiCEMIAunIQQgC0L/AYNCBFINBgwFC0EBIAIQmgkACyAFIAogCSAJIApWG6dqIQRBASEDDAELIAD9DAEAAAAAAACAYM0RACAAAAD9CwIADwsgAkUNACADIAQgAvwKAAALQgAhDEEEIQQLIAogAq18IQkLIAEgCTcDAAJAAkACQCAEQf8BcUEERwRAIABCgYCAgJCAgICAfzcCACAAIAStQv8BgyAMQgiGhDcCCCACRQ0BIANBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0CIABBACABIAdBImpLGw0DIAMQogIPCyAAIAY2AgwgACACNgIIIAAgAzYCBCAAQQA2AgALDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALggYBAX8CQAJAIAEgAyAFbCAEaiIDSQ0AAkAgASADayIEQQNNDQAgACADaiIEQf8BIAIoAgAgBC0AAGoiBkEAIAZBAEobIgYgBkH/AU4bOgAAIARB/wEgAigCBCAELQABaiIGQQAgBkEAShsiBiAGQf8BThs6AAEgBEH/ASACKAIIIAQtAAJqIgZBACAGQQBKGyIGIAZB/wFOGzoAAiAEQf8BIAIoAgwgBC0AA2oiBEEAIARBAEobIgQgBEH/AU4bOgADIAEgAyAFaiIDSQ0BIAEgA2siBEEESQ0AIAAgA2oiBEH/ASACKAIQIAQtAABqIgZBACAGQQBKGyIGIAZB/wFOGzoAACAEQf8BIAIoAhQgBC0AAWoiBkEAIAZBAEobIgYgBkH/AU4bOgABIARB/wEgAigCGCAELQACaiIGQQAgBkEAShsiBiAGQf8BThs6AAIgBEH/ASACKAIcIAQtAANqIgRBACAEQQBKGyIEIARB/wFOGzoAAyABIAMgBWoiA0kNASABIANrIgRBBEkNACAAIANqIgRB/wEgAigCICAELQAAaiIGQQAgBkEAShsiBiAGQf8BThs6AAAgBEH/ASACKAIkIAQtAAFqIgZBACAGQQBKGyIGIAZB/wFOGzoAASAEQf8BIAIoAiggBC0AAmoiBkEAIAZBAEobIgYgBkH/AU4bOgACIARB/wEgAigCLCAELQADaiIEQQAgBEEAShsiBCAEQf8BThs6AAMgASADIAVqIgNJDQEgASADayIEQQRPDQILQQBBBCAEQaCOxAAQoAUACyADIAEgAUGwjsQAEKAFAAsgACADaiIAQf8BIAIoAjAgAC0AAGoiAUEAIAFBAEobIgEgAUH/AU4bOgAAIABB/wEgAigCNCAALQABaiIBQQAgAUEAShsiASABQf8BThs6AAEgAEH/ASACKAI4IAAtAAJqIgFBACABQQBKGyIBIAFB/wFOGzoAAiAAQf8BIAIoAjwgAC0AA2oiAEEAIABBAEobIgAgAEH/AU4bOgADC84GAwN/AXwCfSMAQRBrIgIkAAJAAkAgASgCAEGUgICAeEYEQCAAAn0CQAJAAkACQAJ9AkACQCABKAIMIgQEQAJ9AkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAggiASgCACIDQYCAgIB4cyADQQBOG0EBaw4KCgABAgMEBQYHCAkLIAEvAQSzDAoLIAEoAgSzDAkLIAEpAwi1DAgLIAEsAASyDAcLIAEuAQSyDAYLIAEoAgSyDAULIAEpAwi0DAQLIAEqAgQMAwsgASsDCCIFtkMAAIA/QwAAgL8gBb1CAFkbmAwCCyAAIAEgAkEPakGohMEAEM0INgIEDAwLIAEtAASzCyEGQQEhAyAEQQFGDQQCQAJAAkACQAJAAkACQAJAAkBBFSABKAIQIgNBgICAgHhzIANBAE4bQQFrDgoLAAECAwQFBgcICgsgAS8BFLMMCwsgASgCFLMMCgsgASkDGLUMCQsgASwAFLIMCAsgAS4BFLIMBwsgASgCFLIMBgsgASkDGLQMBQsgASoCFAwECyABKwMYIgW2QwAAgD9DAACAvyAFvUIAWRuYDAMLIABBACACQQ9qQfj/wAAQuAc2AgQMCQsgACABQRBqIAJBD2pBqITBABDNCDYCBAwICyABLQAUswshByAEQQJGDQICQAJAAkACQAJAAkACQAJAAkBBFSABKAIgIgNBgICAgHhzIANBAE4bQQFrDgoMAAECAwQFBgcICgsgAS8BJLMMDAsgASgCJLMMCwsgASkDKLUMCgsgASwAJLIMCQsgAS4BJLIMCAsgASgCJLIMBwsgASkDKLQMBgsgASoCJAwFCyABKwMoIgW2QwAAgD9DAACAvyAFvUIAWRuYDAQLIABBASACQQ9qQfj/wAAQuAc2AgQMBgsgACABQSBqIAJBD2pBqITBABDNCDYCBAwECyAAQQIgAkEPakH4/8AAELgHNgIEDAMLIAEtACSzCzgCDCAAIAc4AgggACAGOAIEQQAhAyAEQQNGDQIgAkEDNgIIIAAgBEH9////AGpB/////wBxQQNqIAJBCGpBgJzBABC4BzYCBAwBCyAAIAEgAkEPakH4/8AAEM0INgIEC0EBIQMLIAAgAzYCACACQRBqJAAL2wYCBX8BfiMAQTBrIgIkACABKAIAIgNB/MrEAEEBIAEoAgQiBCgCDCIFEQAAIQYgAiAANgIMAkACQAJAAkACQAJAAkAgBg0AAkAgAS0ACkGAAXFFBEAgAkEMaiABEOcEIAIgAEEBajYCDEUNAQwDCyADQciKxwBBASAFEQAADQEgAkEBOgAfIAIgBDYCFCACIAM2AhAgAkGIj8IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDnBA0BIAIoAiBBg47CAEECIAIoAiQoAgwRAAAgAiAAQQFqNgIMDQILAkAgAS0ACkGAAXEEQCABKQIAIQcgAkEBOgAfIAIgBzcCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQMgAigCIEGDjsIAQQIgAigCJCgCDBEAACACIABBAmo2AgxFDQEMBwsgASgCAEHTpsUAQQIgASgCBCgCDBEAAA0CIAJBDGogARDnBCACIABBAmo2AgwNBgsCQCABLQAKQYABcQRAIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBiI/CADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQajYCICACQQxqIAJBIGoQ5wQNByACKAIgQYOOwgBBAiACKAIkKAIMEQAAIAIgAEEDajYCDEUNAQwGCyABKAIAQdOmxQBBAiABKAIEKAIMEQAADQYgAkEMaiABEOcEIAIgAEEDajYCDA0FCyABLQAKQYABcUUNAiABKAIAIQMgASgCBCEEQQEhACACQQE6AB8gAiAENgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQQgAigCIEGDjsIAQQIgAigCJCgCDBEAAEUNAwwGCyACIABBAWo2AgwLIAIgAEECajYCDAwDCyABKAIAQdOmxQBBAiABKAIEKAIMEQAADQFBASEAIAJBDGogARDnBA0DIAEoAgQhBCABKAIAIQMLIANB/crEAEEBIAQoAgwRAAAhAAwCC0EBIQAMAQsgAiAAQQNqNgIMQQEhAAsgAkEwaiQAIAAL8wUBCn8jAEFAaiIFJAAgBUEANgIoIAVBADYCPCADIARBAnRqIQxBBCEHIAVBLGohCiAFQTxqIQ0CQAJAAkACQCAEQQRNBEAgCiEJIA0hCwwBCyAFQQhqIAVBKGpBfyAEQQFrZ3ZBAWoQhgQCQCAFKAIIIgZBgYCAgHhHBEAgBg0BQYipxgBBEUHY28YAEKgJAAsCfyAFKAI8IgdBBUkEQCAHIQYgDSELQQQhByAKDAELIAUoAiwhBiAKIQsgBSgCMAshCSAGIAdJDQEgBiEHDAILIAUoAgwQsQoACwJAIAQgByAGQX9zaiIIIAQgCEkbIghBB00NACAGQQJ0IgQgCWogA2tBEEkNACAEIAlqIQQgBiAIQQFqIgggCEEDcSIIQQQgCBtrIg5qIQYgAyAOQQJ0agNAIAQgA/0AAgD9CwIAIANBEGohAyAEQRBqIQQgDkEEayIODQALIQMLIAkgBkECdGohBANAIAMgDEYNAiAEIAMoAgA2AgAgBEEEaiEEIANBBGohAyAHIAZBAWoiBkcNAAsLIAsgBzYCACADIAxGDQEDQAJ/IAUoAjwiB0EFSQRAIAchBCAKIQlBBCEHIA0MAQsgBSgCLCEEIAUoAjAhCSAKCyEGIAMoAgAhCyAEIAdGBH8gBUEoahDpBiAFKAIwIQkgCiEGIAUoAiwFIAQLQQJ0IAlqIAs2AgAgBiAGKAIAQQFqNgIAIANBBGoiAyAMRw0ACwwBCyALIAY2AgALIAUgBSkCODcDICAFIAX9AAIo/QsDEAJAAkAgASACSwRAIAAgAkEYbGoiACgCFCIBQQVPBEAgACgCCCICQQRrKAIAIgNBeHEiBCABQQJ0IgFBBEEIIANBA3EiAxtqSQ0CIANBACAEIAFBJ2pLGw0DIAIQogILIAAgBSkDIDcCECAAIAX9AAMQ/QsCACAFQUBrJAAPCyACIAFB0M3GABDwBwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC4cHAQZ/IwBBMGsiAiQAAkACQAJAAkACQAJAAkBBAyAAKAIAIgNBgICAgHhzIANBAE4bQQFrDgUBAgMEBQALIAEoAgBB+L/GAEERIAEoAgQoAgwRAAAhAwwFCyABKAIAQYnAxgBBDSABKAIEKAIMEQAAIQMMBAtBASEDIAEoAgAiBEGowMYAQQ8gASgCBCIHKAIMIgURAAANAyAAQQRqIQYCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQUgAiAGNgIcIAEgAEEHakGQu8YAIABBBWpBoLvGACAAQQZqQbC7xgAgAkEcakHAu8YAEIsGRQ0BDAULIARBhY7CAEECIAURAAANBCACQQE6AA8gAiAHNgIUIAIgBDYCECACQYiPwgA2AiAgAiABKQIINwIkIAIgAkEPajYCGCACIAJBEGo2AhwgAiAGNgIsIAJBHGogAEEHakGQu8YAIABBBWpBoLvGACAAQQZqQbC7xgAgAkEsakHAu8YAEIsGDQQgAigCHEGDjsIAQQIgAigCICgCDBEAAA0ECyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMAwtBASEDIAEoAgAiBEG3wMYAQQcgASgCBCIGKAIMIgURAAANAgJAIAEtAApBgAFxRQRAIARBpcvEAEEBIAURAAANBCAAKAIEIAAoAgggARDBAkUNAQwECyAEQYWOwgBBAiAFEQAADQMgAkEBOgAsIAIgBjYCFCACIAQ2AhAgAkGIj8IANgIgIAIgASkCCDcCJCACIAJBLGo2AhggAiACQRBqIgQ2AhwgACgCBCAAKAIIIAJBHGoQwQINAyAEQYOOwgBBAhDDAw0DCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMAgsgASgCAEG+wMYAQQogASgCBCgCDBEAACEDDAELIAIgAEEIajYCECABKAIAQdjAxgBBDCABKAIEKAIMEQAAIQMgAkEAOgAhIAIgAzoAICACIAE2AhwgAkEcakHkwMYAQQggAEEEakHIwMYAEJ4FQezAxgBBBSACQRBqQZjAxgAQngUgAi0AISIBIAItACAiBHIhAyAEQQFxIAFBAUdyDQAoAgAiAC0ACkGAAXFFBEAgACgCAEG9y8QAQQIgACgCBCgCDBEAACEDDAELIAAoAgBB8cnEAEEBIAAoAgQoAgwRAAAhAwsgAkEwaiQAIANBAXEL8gUCBX8CfSABKgIAEOAFvCICQf///wNxIQMgAkGAgICAeHEhBSABKgIEAkAgAkGAgID8B3EiBEGAgID8B0YEQCADQQ12IAVBEHZyQYAEQQAgAxtyQYD4AXIhBQwBCyAFQRB2IQUgBEGAgIC4BE0EQCAEQYCAgMQDTwRAIAJBDHYgAkH/3wBxQQBHcSAEQQ12IANBDXZqQYCAAWogBXJqIQUMAgsgBEGAgICYA0kNASADQYCAgARyIgJB/gAgBEEXdiIDa3YhBCACQR0gA2siA3ZBAXEEfyAEQQMgA3RBAWsgAnFBAEdqBSAECyAFciEFDAELIAVBgPgBciEFCyABKgIIIQgQ4AW8IgJB////A3EhAyACQYCAgIB4cSEEAkAgAkGAgID8B3EiAUGAgID8B0cEQCAEQRB2IQQgAUGAgIC4BE0EQCABQYCAgMQDTwRAIAJBDHYgAkH/3wBxQQBHcSABQQ12IANBDXZqQYCAAWogBHJqIQQMAwsgAUGAgICYA0kNAiADQYCAgARyIgJB/gAgAUEXdiIDa3YhASACQR0gA2siA3ZBAXEEfyABQQMgA3RBAWsgAnFBAEdqBSABCyAEciEEDAILIARBgPgBciEEDAELIANBDXYgBEEQdnJBgARBACADG3JBgPgBciEECyAIEOAFvCIDQf///wNxIQYgA0GAgICAeHEhAgJAIANBgICA/AdxIgFBgICA/AdHBEAgAkEQdiECIAFBgICAuARNBEAgAUGAgIDEA08EQCADQQx2IANB/98AcUEAR3EgAUENdiAGQQ12akGAgAFqIAJyaiECDAMLIAFBgICAmANJDQIgBkGAgIAEciIDQf4AIAFBF3YiBmt2IQEgA0EdIAZrIgZ2QQFxBH8gAUEDIAZ0QQFrIANxQQBHagUgAQsgAnIhAgwCCyACQYD4AXIhAgwBCyAGQQ12IAJBEHZyQYAEQQAgBhtyQYD4AXIhAgsgACACOwEoIAAgBDsBJiAAIAU7ASQLuwcCBXsHfyACQf//A3EhAiABQf//A3EhCiAEIARBoCtwIgtrIgxBoCtPBEAgDCENIAMhAQNA/QwAAAAAAAAAAAAAAAAAAAAAIgUgAv0cACEGIAUgCkGtAWz9HAAhB0EAIQQDQCABIARqIgL9AAAAIgj9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBv2uASAI/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIAJBEGr9AAAAIgn9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgCf2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEGIAcgBf2uASEHIAj9ff1/IAX9rgEgCf19/X/9rgEhBSAEQSBqIgRBoCtHDQALIAYgB0EF/asB/a4BIgb9GwEgBv0bAGogBv0bAmogBv0bA2pB8f8DcCECIAFBoCtqIQEgBf0bACAKaiAF/RsBaiAF/RsCaiAF/RsDakHx/wNwIQogDUGgK2siDUGfK0sNAAsLIAMgDGohAyALQSBPBED9DAAAAAAAAAAAAAAAAAAAAAAiBSAC/RwAIQZBACALQeA/cSIBayECIAUgCiALQQV2bP0cACEHIAMhBANAIAT9AAAAIgj9iQH9DCAAHwAeAB0AHAAbABoAGQD9ugEgBv2uASAI/YoB/QwYABcAFgAVABQAEwASABEA/boB/a4BIARBEGr9AAAAIgn9iQH9DBAADwAOAA0ADAALAAoACQD9ugH9rgEgCf2KAf0MCAAHAAYABQAEAAMAAgABAP26Af2uASEGIARBIGohBCAHIAX9rgEhByAI/X39fyAF/a4BIAn9ff1//a4BIQUgAkEgaiICDQALIAEgA2ohAyALQR9xIQsgBf0bACAKaiAF/RsBaiAF/RsCaiAF/RsDaiEKIAYgB0EF/asB/a4BIgb9GwEgBv0bAGogBv0bAmogBv0bA2ohAgsCQCALRQ0AAkAgC0EHcSIBRQRAIAMhBAwBCyADIQQDQCAEIgxBAWohBCAKIAwtAABqIgogAmohAiABQQFrIgENAAsLIAtBCEkNACADIAtqIQEDQCAKIAQtAABqIgMgBEEBai0AAGoiDCAEQQJqLQAAaiINIARBA2otAABqIgsgBEEEai0AAGoiDiAEQQVqLQAAaiIPIARBBmotAABqIhAgBEEHai0AAGoiCiAQIA8gDiALIA0gDCACIANqampqampqaiECIARBCGoiBCABRw0ACwsgACACQfH/A3A7AQIgACAKQfH/A3A7AQALswcCBXsIfyAAQf//A3EhCSAAQRB2IQggAiACQaArcCIKayILQaArTwRAIAshDCABIQIDQP0MAAAAAAAAAAAAAAAAAAAAACIDIAj9HAAhBCADIAlBrQFs/RwAIQVBACEAA0AgACACaiII/QAAACIG/YkB/QwgAB8AHgAdABwAGwAaABkA/boBIAT9rgEgBv2KAf0MGAAXABYAFQAUABMAEgARAP26Af2uASAIQRBq/QAAACIH/YkB/QwQAA8ADgANAAwACwAKAAkA/boB/a4BIAf9igH9DAgABwAGAAUABAADAAIAAQD9ugH9rgEhBCAFIAP9rgEhBSAG/X39fyAD/a4BIAf9ff1//a4BIQMgAEEgaiIAQaArRw0ACyAEIAVBBf2rAf2uASIE/RsBIAT9GwBqIAT9GwJqIAT9GwNqQfH/A3AhCCACQaAraiECIAP9GwAgCWogA/0bAWogA/0bAmogA/0bA2pB8f8DcCEJIAxBoCtrIgxBnytLDQALCyABIAtqIQEgCkEgTwRA/QwAAAAAAAAAAAAAAAAAAAAAIgMgCP0cACEEQQAgCkHgP3EiAmshCCADIAkgCkEFdmz9HAAhBSABIQADQCAA/QAAACIG/YkB/QwgAB8AHgAdABwAGwAaABkA/boBIAT9rgEgBv2KAf0MGAAXABYAFQAUABMAEgARAP26Af2uASAAQRBq/QAAACIH/YkB/QwQAA8ADgANAAwACwAKAAkA/boB/a4BIAf9igH9DAgABwAGAAUABAADAAIAAQD9ugH9rgEhBCAAQSBqIQAgBSAD/a4BIQUgBv19/X8gA/2uASAH/X39f/2uASEDIAhBIGoiCA0ACyAEIAVBBf2rAf2uASIE/RsBIAT9GwBqIAT9GwJqIAT9GwNqIQggCkEfcSEKIAP9GwAgCWogA/0bAWogA/0bAmogA/0bA2ohCSABIAJqIQELAkAgCkUNAAJAIApBB3EiAkUEQCABIQAMAQsgASEAA0AgACILQQFqIQAgCSALLQAAaiIJIAhqIQggAkEBayICDQALCyAKQQhJDQAgASAKaiEBA0AgCSAALQAAaiICIABBAWotAABqIgsgAEECai0AAGoiDCAAQQNqLQAAaiIKIABBBGotAABqIg0gAEEFai0AAGoiDiAAQQZqLQAAaiIPIABBB2otAABqIgkgDyAOIA0gCiAMIAsgAiAIampqampqamohCCAAQQhqIgAgAUcNAAsLIAlB8f8DcCAIQfH/A3BBEHRyC7QGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQAJAAkACQCABKALgAiIDQQRJDQAgAiABKALcAiIGKAAAIgQ2AgAgBEHSgpGaBEYEQCADQQhJDQEgAyAGKAAEIgVBB2pBeHEiB0EQaiIESQ0BIAVBCGoiCCADSyAFQXdLcg0CIAJBADYC/AEgAiAFNgL4ASACIAZBCGo2AvQBIAJBEGogAkH0AWoQeCACKAIUIQUgAigCECIIQQJGBEAgACAFEMEINgIEDAULIAJBiAFqIAJBGGpB6AD8CgAAIAIgBTYChAEgAiAINgKAASAEIAdBCGoiCUkNAyABQQA2AuACIAMgBGshByAGIAlqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBiAEIAZqIAf8CgAACyABIAc2AuACCyABIAEpA7gCIAStfCIKNwO4AiABIAogC3w3A9ACIAEgCjcDyAIgAigC6AFBAUYEQCABIAIpA4gBPgL0AiABIAIoApABIgM2AvgCIAEoAgBBAkcNBiABQQA2AvQCIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFB+AFqIAJBEGoQ/AEMBgsgAiACQegBaq1CgICAgBCENwMQIAJB9AFqIgFBipLAACACQRBqELcHIAEQvQghASACKALcASIDBEAgAigC4AEgA0EobEEIEMEHCyAAIAE2AgQMBAsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEDAMLQQAhAyAAQQA6AAEMBAtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EBIQMMAQtBACEDIAFBADYC8AICQCABKAKIAUECRg0AIAEoAuQBIgRFDQAgASgC6AEiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbakkNAiAFQQAgByAEQSdqSxsNAyAGEKICCyABQYgBaiACQYABakHwAPwKAAAgAEEBOgABCyAAIAM6AAAgAkGAAmokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7QGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQAJAAkACQCABKAKAAyIDQQRJDQAgAiABKAL8AiIGKAAAIgQ2AgAgBEHSgpGaBEYEQCADQQhJDQEgAyAGKAAEIgVBB2pBeHEiB0EQaiIESQ0BIAVBCGoiCCADSyAFQXdLcg0CIAJBADYC/AEgAiAFNgL4ASACIAZBCGo2AvQBIAJBEGogAkH0AWoQeCACKAIUIQUgAigCECIIQQJGBEAgACAFEMEINgIEDAULIAJBiAFqIAJBGGpB6AD8CgAAIAIgBTYChAEgAiAINgKAASAEIAdBCGoiCUkNAyABQQA2AoADIAMgBGshByAGIAlqKQAAIQsCQAJAIARFDQAgAyAERg0BIAdFDQAgBiAEIAZqIAf8CgAACyABIAc2AoADCyABIAEpA9gCIAStfCIKNwPYAiABIAogC3w3A/ACIAEgCjcD6AIgAigC6AFBAUYEQCABIAIpA4gBPgKUAyABIAIoApABIgM2ApgDIAEoAgBBAkcNBiABQQA2ApQDIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFB+AFqIAJBEGoQ6gEMBgsgAiACQegBaq1CgICAgBCENwMQIAJB9AFqIgFBipLAACACQRBqELcHIAEQvQghASACKALcASIDBEAgAigC4AEgA0EobEEIEMEHCyAAIAE2AgQMBAsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEDAMLQQAhAyAAQQA6AAEMBAtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EBIQMMAQtBACEDIAFBADYCkAMCQCABKAKIAUECRg0AIAEoAuQBIgRFDQAgASgC6AEiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbakkNAiAFQQAgByAEQSdqSxsNAyAGEKICCyABQYgBaiACQYABakHwAPwKAAAgAEEBOgABCyAAIAM6AAAgAkGAAmokAA8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC64GAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQCABKAK4AiIDQQRJDQAgAiABKAK0AiIGKAAAIgQ2AgACQCAEQdKCkZoERgRAIANBCEkNAiADIAYoAAQiBUEHakF4cSIHQRBqIgRJDQIgBUEIaiIIIANLIAVBd0tyDQMgAkEANgL8ASACIAU2AvgBIAIgBkEIajYC9AEgAkEQaiACQfQBahB4IAIoAhQhBSACKAIQIghBAkYEQCAAIAUQwQg2AgQMAgsgAkGIAWogAkEYakHoAPwKAAAgAiAFNgKEASACIAg2AoABIAQgB0EIaiIJSQ0EIAFBADYCuAIgAyAEayEHIAYgCWopAAAhCwJAAkAgBEUNACADIARGDQEgB0UNACAGIAQgBmogB/wKAAALIAEgBzYCuAILIAEgASkDcCAErXwiCjcDcCABIAogC3w3A4gBIAEgCjcDgAECQCACKALoAUEBRgRAIAEgAikDiAE+AqgCIAEgAigCkAEiAzYCrAIgASgCkAFBAkYNAQwHCyACIAJB6AFqrUKAgICAEIQ3AxAgAkH0AWoiAUGKksAAIAJBEGoQtwcgARC9CCEBIAIoAtwBIgMEQCACKALgASADQShsQQgQwQcLIAAgATYCBAwCCyABQQA2AqgCIAIgAi0A7AFBAXE6ABggAiAFQQAgCEEBcRs2AhQgAiADNgIQIAFBvAJqIAJBEGoQswQMBQsgAiACrUKAgICA4AOENwMQIAJBBGoiAUHA58EAIAJBEGoQtwcgACABEL0INgIEC0EBIQMMBAtBACEDIABBADoAAQwDC0EIIAggA0Gw58EAEKAFAAsgCSAEIANBoOfBABCgBQALQQAhAyABQQA2AqQCAkAgASgCAEECRg0AIAEoAlwiBEUNAAJAIAEoAmAiBkEEaygCACIFQXhxIgcgBEEobCIEQQRBCCAFQQNxIgUbak8EQCAFQQAgByAEQSdqSxsNASAGEKICDAILQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyABIAJBgAFqQfAA/AoAACAAQQE6AAELIAAgAzoAACACQYACaiQAC7MGAgh/An4jAEGAAmsiAiQAAkACQAJAAkACQCABKAKYBCIDQQRJDQAgAiABKAKUBCIGKAAAIgQ2AgACQCAEQdKCkZoERgRAIANBCEkNAiADIAYoAAQiBUEHakF4cSIHQRBqIgRJDQIgBUEIaiIIIANLIAVBd0tyDQMgAkEANgL8ASACIAU2AvgBIAIgBkEIajYC9AEgAkEQaiACQfQBahB4IAIoAhQhBSACKAIQIghBAkYEQCAAIAUQwQg2AgQMAgsgAkGIAWogAkEYakHoAPwKAAAgAiAFNgKEASACIAg2AoABIAQgB0EIaiIJSQ0EIAFBADYCmAQgAyAEayEHIAYgCWopAAAhCwJAAkAgBEUNACADIARGDQEgB0UNACAGIAQgBmogB/wKAAALIAEgBzYCmAQLIAEgASkD8AMgBK18Igo3A/ADIAEgCiALfDcDiAQgASAKNwOABAJAIAIoAugBQQFGBEAgASACKQOIAT4CrAQgASACKAKQASIDNgKwBCABKAL4AUECRg0BDAcLIAIgAkHoAWqtQoCAgIAQhDcDECACQfQBaiIBQYqSwAAgAkEQahC3ByABEL0IIQEgAigC3AEiAwRAIAIoAuABIANBKGxBCBDBBwsgACABNgIEDAILIAFBADYCrAQgAiACLQDsAUEBcToAGCACIAVBACAIQQFxGzYCFCACIAM2AhAgASACQRBqEKsDDAULIAIgAq1CgICAgOADhDcDECACQQRqIgFBwOfBACACQRBqELcHIAAgARC9CDYCBAtBASEDDAQLQQAhAyAAQQA6AAEMAwtBCCAIIANBsOfBABCgBQALIAkgBCADQaDnwQAQoAUAC0EAIQMgAUEANgKoBAJAIAEoAoADQQJGDQAgASgC3AMiBEUNAAJAIAEoAuADIgZBBGsoAgAiBUF4cSIHIARBKGwiBEEEQQggBUEDcSIFG2pPBEAgBUEAIAcgBEEnaksbDQEgBhCiAgwCC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgAUGAA2ogAkGAAWpB8AD8CgAAIABBAToAAQsgACADOgAAIAJBgAJqJAALwAYBBH8gACABaiECAkACQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQczDyAAoAgBGBEAgAigCBEEDcUEDRw0BQcTDyAAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQ7gQLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkHQw8gAKAIARg0CIAJBzMPIACgCAEYNAyACIANBeHEiAxDuBCAAIAEgA2oiAUEBcjYCBCAAIAFqIAE2AgAgAEHMw8gAKAIARw0BQcTDyAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAQR8hAiABQYCAgAhJDQMMBAsCQEG8w8gAKAIAIgJBASABQQN2dCIDcUUEQEG8w8gAIAIgA3I2AgAgAUH4AXFBtMHIAGoiASECDAELIAFB+AFxIgFBtMHIAGohAiABQbzByABqKAIAIQELIAIgADYCCCABIAA2AgwMBQtB0MPIACAANgIAQcjDyABByMPIACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQczDyAAoAgBHDQNBxMPIAEEANgIAQczDyABBADYCAA8LQczDyAAgADYCAEHEw8gAQcTDyAAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAUEmIAFBCHZnIgNrdkEBcSADQQF0ckE+cyECCyAAQgA3AhAgACACNgIcIAJBAnRBpMDIAGohBEEBIAJ0IgNBwMPIACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQcDDyABBwMPIACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhgMAgsgBEEQaiAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIICw8LIAAgAjYCDCAAIAE2AggL5AUBBX8gASgCACICQf///wNxIQMgAkGAgICAeHEhBiABKAIEIQQCQCACQYCAgPwHcSIFQYCAgPwHRgRAIANBDXYgBkEQdnJBgARBACADG3JBgPgBciEGDAELIAZBEHYhBiAFQYCAgLgETQRAIAVBgICAxANPBEAgAkEMdiACQf/fAHFBAEdxIAVBDXYgA0ENdmpBgIABaiAGcmohBgwCCyAFQYCAgJgDSQ0BIANBgICABHIiAkH+ACAFQRd2IgNrdiEFIAJBHSADayIDdkEBcQR/IAVBAyADdEEBayACcUEAR2oFIAULIAZyIQYMAQsgBkGA+AFyIQYLIAEoAgghASAEQf///wNxIQMgBEGAgICAeHEhBQJAIARBgICA/AdxIgJBgICA/AdHBEAgBUEQdiEFIAJBgICAuARNBEAgAkGAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgAkENdiADQQ12akGAgAFqIAVyaiEFDAMLIAJBgICAmANJDQIgA0GAgIAEciIDQf4AIAJBF3YiAmt2IQQgA0EdIAJrIgJ2QQFxBH8gBEEDIAJ0QQFrIANxQQBHagUgBAsgBXIhBQwCCyAFQYD4AXIhBQwBCyADQQ12IAVBEHZyQYAEQQAgAxtyQYD4AXIhBQsgAUH///8DcSEDIAFBgICAgHhxIQQCQCABQYCAgPwHcSICQYCAgPwHRwRAIARBEHYhBCACQYCAgLgETQRAIAJBgICAxANPBEAgAUEMdiABQf/fAHFBAEdxIAJBDXYgA0ENdmpBgIABaiAEcmohBAwDCyACQYCAgJgDSQ0CIANBgICABHIiA0H+ACACQRd2IgJrdiEBIANBHSACayICdkEBcQR/IAFBAyACdEEBayADcUEAR2oFIAELIARyIQQMAgsgBEGA+AFyIQQMAQsgA0ENdiAEQRB2ckGABEEAIAMbckGA+AFyIQQLIAAgBDsBIiAAIAU7ASAgACAGOwEeC9wFAgl/BX4jAEEQayILJAACQAJ/AkACQCABUEUEQEGgfyACIAF5Ig+nayIGa8FB0ABsQbCnBWpBzhBtIgJB0ABLDQEgCyACQQR0IgIpA/CsQiABIA+GEPwGQgFBQCAGIAIvAfisQmprIgetIhCGIhFCAX0iEiALKQMIIAspAwBCP4h8IgGDIg9QRQRAIAIvAfqsQiEIIAdBP3EhCSABIBCIpyIGQZDOAE8EQCAGQcCEPUkNBCAGQYDC1y9PBEBBCEEJIAZBgJTr3ANJIgIbIQpBgMLXL0GAlOvcAyACGwwGC0EGQQcgBkGAreIESSICGyEKQcCEPUGAreIEIAIbDAULIAZB5ABPBEBBAkEDIAZB6AdJIgIbIQpB5ABB6AcgAhsMBQtBCkEBIAZBCUsiChsMBAsgAEEANgIADAQLQYC3wgBBHEGct8IAEKgJAAsgAkHRAEGst8IAEPAHAAtBBEEFIAZBoI0GSSICGyEKQZDOAEGgjQYgAhsLIQIgCa0hEAJAAkACQCAKIAhrQQFqwSIIIAXBIglKBEAgB0H//wNxIQ0gCCAFa8EgBCAIIAlrIARJGyIJQQFrIQ5BACEHA0AgAyAHaiAGIAJuIgxBMGo6AAAgBiACIAxsayEGIAcgDkYNAyAHIApGDQIgB0EBaiEHIAJBCkkgAkEKbiECRQ0AC0G8t8IAEJ0KAAsgACADIARBACAIIAUgAUIKgCACrSAQhiAREOQEDAMLIAdBAWohAiANQQFrQT9xrSETQgEhAQNAIAEgE4hQRQRAIABBADYCAAwECyACIARGDQIgAiADaiAPQgp+Ig8gEIinQTBqOgAAIAFCCn4hASAPIBKDIQ8gCSACQQFqIgJHDQALIAAgAyAEIAkgCCAFIA8gESABEOQEDAILIAAgAyAEIAkgCCAFIAatIBCGIA98IAKtIBCGIBEQ5AQMAQsgBCAEQcy3wgAQ8AcACyALQRBqJAAL1wUDBH4IfwF7IAEpAxAgASkDGCACEIMEIQUgASgCCEUEQCABIAFBEGoQ0gELIAEoAgQiDCAFp3EhCSAFQhmIIghC/wCDQoGChIiQoMCAAX4hByABKAIAIQoCQAJAIAItAAAiEEELRwRAA0AgCSAKaikAACIGIAeFIgVCf4UgBUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIFUEUEQANAIBAgCiAFeqdBA3YgCWogDHFBaGxqIg9BGGstAABGDQQgBUIBfSAFgyIFUEUNAAsLIAZCgIGChIiQoMCAf4MhBQJ/AkAgDUUEQCAFUA0BIAV6p0EDdiAJaiAMcSELCyAFIAZCAYaDQgBSDQVBAQwBC0EACyENIA5BCGoiDiAJaiAMcSEJDAALAAsgAigAASEQA0AgCSAKaikAACIGIAeFIgVCf4UgBUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIFUEUEQANAIAogBXqnQQN2IAlqIAxxQWhsaiIPQRhrLQAAQQtGBEAgECAPQRdrKAAARg0ECyAFQgF9IAWDIgVQRQ0ACwsgBkKAgYKEiJCgwIB/gyEFAn8CQCANRQRAIAVQDQEgBXqnQQN2IAlqIAxxIQsLIAUgBkIBhoNCAFINBEEBDAELQQALIQ0gDkEIaiIOIAlqIAxxIQkMAAsACyAPQRBrIgH9AAMAIREgD0EIayAENwMAIAEgAzcDACAAIBH9CwMIIABCATcDAA8LIAogC2osAAAiCUEATgRAIAogCikDAEKAgYKEiJCgwIB/g3qnQQN2IgtqLQAAIQkLIAogC2ogCKdB/wBxIg06AAAgCiALQQhrIAxxakEIaiANOgAAIAEgASgCCCAJQQFxazYCCCABIAEoAgxBAWo2AgwgCiALQWhsaiIBQQhrIAQ3AwAgAUEQayADNwMAIAFBGGsgAjUAACACQQRqMQAAQiCGhDcDACAAQgA3AwALhHcDHn8IfgJ7IwBBEGsiEyQAAkAgASkDGEICUgRAIAFBGGohISABQcgAaiEOIAEoAgwhBSABKAIIIQYDQCABKAIAIQcCQCAFIAZLDQAgAS0AECABKAIEIgZFckUEQCAHQQAgBvwLAAsgEyAhIAcgBhC2AyATLQAAQQRGBEAgBiATKAIEIgVPBEAgAUEBOgAQIAEgBTYCDEEAIQYgAUEANgIIDAILQYyyxgBBJEGwssYAEKgJAAsgEygCBCEJIBMoAgAhCiATMQAAIAFBAToAECABQgA3AwhBACEFQQAhBkIEUQ0AIAAgCTYCBCAAIAo2AgAMAwsgASkDUCEoIAEpA0ghKUEEQQAgBSAGRiIeGyEfIwBBIGsiCyQAIA4gAzYCMCAOIAUgBmsiBTYCJCAOIAI2AiwgDiAGIAdqIhw2AiAgDigCPCIELQAAIgZBDEYEQCAEQQ06AABBDSEGCyAOKQMYISYgDikDECEnIAQgAzYCdCAEIAU2AnAgBEEANgJQIAQgAzYCTCAEIAI2AkggBCAcNgI4IAQgHzoABCAEIAUgHGo2AjwgBEHBAGohESAEQQhqISAgBEGE7ABqIR0gBEGE5wBqIRYgBEGkAWohGCAEQfQqaiEZIARBxNQAaiEaIARByABqIRACQAJAAkACQANAIAZB/wFxIQVBEiEGQR0hCEEBIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDh4cGxoNDAsKCQIBGRgIFx0HHxYVFAYFExIeABEQIQ8OCyAEKAIkIgwgBCgCICIPIAQoAhwiDWoiCU8NAyAEKAI4IQUgBC0AQCEGIAQpAzAhIgNAQn8gBDUClAGGQn+FISMgBCgCPCESIAQtAJgBIRQgBAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAA0AgIiAjg6chCkGABCEIQaDuxwAhBwJAAkACQAJAIBRBAWsOAwABAgMLQbQKIQggGCEHDAILQbQKIQggGSEHDAELQdAEIQggGiEHCyAIIApNDQEgByAKQQJ0aiIHLQADIgggBkH/AXFLBEAgBSASRg0SIAUxAAAhJCAEIAZBCGoiBzoAQCAEIAVBAWoiBTYCOCAEICQgBq2GICKEIiI3AzAgByEGDAELCyAHLwEAIgpBEE8EQCAGQf8BcSEHAkACQAJAAkACQAJAIApBEGsOAgECAAsCQCAHIAhBB2oiFE8EQCAFIQcgBiEKDAELA0AgBSASRg0YIAQgBUEBaiIHNgI4IAQgBkEIaiIKOgBAIAQgBTEAACAGrYYgIoQiIjcDMCAHIQUgFCAKIgZB/wFxSw0ACwsgBCAKIAhrQQdrIgY6AEAgBCAiIAitiCIjQgeIIiI3AzAgCSAjp0H/AHFBC2oiBSAMaiIKSQ0MIAxBwAJLDQ0gBUHAAiAMayIJSw0OIAVBAXQiBQ0EDBELAkAgByAIQQJqIg1PBEAgBiEHDAELIAUhCgNAIAogEkYNFyAEIApBAWoiBTYCOCAEIAZBCGoiBzoAQCAEIAoxAAAgBq2GICKEIiI3AzAgBSEKIA0gByIGQf8BcUsNAAsLIAQgByAIayIKOgBAIAQgIiAIrYgiIzcDMCAMDQEgBEEaNgKIASAEQbecwAA2AoQBDDILAkAgByAIQQNqIgpPBEAgBSEUIAYhBwwBCwNAIAUgEkYNFiAEIAVBAWoiFDYCOCAEIAZBCGoiBzoAQCAEIAUxAAAgBq2GICKEIiI3AzAgFCEFIAogByIGQf8BcUsNAAsLQX0hCiAEIAcgCGtBA2siBjoAQCAEICIgCK2IIiNCA4giIjcDMCAjp0EHcUEDaiIFIAxqIgcgCUsNByAMQcACSw0IIAVBwAIgDGsiCUsNCSAFQQF0IgUNAQwOCyAMQQFrIQYgDEHAAksNBCAWIAZBAXRqLwEAIQcgBCAKQQJrIgY6AEAgBCAjQgKIIiI3AzAgCSAjp0EDcSIIQQNqIgogDGpJBEAgBEEaNgKIASAEQbecwAA2AoQBDDELIApBwAIgDGsiCUsNBSAWIAxBAXRqIQkgCEECav0RIiv9DAAAAAABAAAAAgAAAAMAAAD9QCIq/RsAQQFxBEAgCSAHOwEACyAq/RsBQQFxBEAgCUECaiAHOwEACyAq/RsCQQFxBEAgCUEEaiAHOwEACyAq/RsDQQFxBEAgCUEGaiAHOwEACyAr/QwEAAAABQAAAAYAAAAHAAAA/UAiKv0bAEEBcQRAIAlBCGogBzsBAAsgKv0bAUEBcQRAIAlBCmogBzsBAAsgKv0bAkEBcQRAIAlBDGogBzsBAAsgKv0bA0EBcQRAIAlBDmogBzsBAAsgBCgCICEPIAQoAhwhDSAEKAIkIApqDA8LIBYgDEEBdGpBACAF/AsADAwLIBYgDEEBdGpBACAF/AsADAwLIAQgBiAIayIGOgBAIAQgIiAIrYgiIjcDMCAMQcACSQ0JIAxBwAJB1IPIABDwBwALIAogCEHkgsgAEPAHAAsgBkHAAkH0gsgAEPAHAAtBACAKIAlBhIPIABCgBQALIARBGjYCiAEgBEG3nMAANgKEAUEeIQgMKgsgDEHAAkHAAkGkg8gAEKAFAAtBACAFIAlBlIPIABCgBQALIARBGjYCiAEgBEG3nMAANgKEAQwmCyAMQcACQcACQcSDyAAQoAUAC0EAIAUgCUG0g8gAEKAFAAsgFiAMQQF0aiAKOwEAIAxBAWoMAgsgFCEFIAcMAQsgByEFIAoLIgw2AiQgDCANIA9qIglJDQALDAMLQXwhCkEKIQgMHwtBfiEKQQkhCAweC0EAIQpBGiEIDB0LIAQvAYRrRQRAIARBJTYCiAEgBEHr6MAANgKEAQwcCwJAAkACQCANQcECSQRAIAtBEGoiB0EBIBYgDSAZQbQKQQogHRCxASALKAIQDQEgCygCGCEFIAQgCygCFDYClAEgBEECOgCYASAEIAU2AiggBCgCHCIFQcACSw0CIAQoAiAiBkHAAiAFayIJSw0DIAdBAiAWIAVBAXRqIAYgGkHQBEEJIB0QsQEgCygCEEUEQCALKAIYIQUgCygCFCEGIARBAzoAoAEgBCAGNgKcASAEIAUgBCgCKGo2AihBESEGIAQtAARBBkcNH0EAIQpBESEIDCELIARBFjYCiAEgBEHkm8AANgKEAQwfC0EAIA1BwAJB1ILIABCgBQALIARBHDYCiAEgBEGWm8AANgKEAQwdCyAFQcACQcACQcSCyAAQoAUAC0EAIAYgCUG0gsgAEKAFAAtBFyEGIAQoAmAiCUUNGSAEKQMwISICQCAELQBAIgogCU8EQCAKIQgMAQsgBCgCOCEFIAQoAjwhDANAIAUgDEYEQEEAIQpBFiEIDB4LIAQgBUEBaiIHNgI4IAQgCkEIaiIIOgBAIAQgBTEAACAKrYYgIoQiIjcDMCAHIQUgCSAIIgpB/wFxSw0ACwsgBCAIIAlrOgBAIAQgIiAJrSIjiDcDMCAEIAQoAmQgCWo2AmQgBCAEKAJcICJCfyAjhkJ/hYOnajYCXAwZC0J/IAQ1ApwBhkJ/hSEjIAQoAjghBSAELQBAIQYgBCgCPCEPIAQpAzAhIiAELQCgASESAkACQAJAAkADQCAiICODpyEJQSAhCEGg/scAIQcCQAJAAkACQCASQQFrDgMAAQIDC0G0CiEIIBghBwwCC0G0CiEIIBkhBwwBC0HQBCEIIBohBwsgCCAJTQ0CAkACQCAHIAlBAnRqIgctAAMiCSAGQf8BcUsEQCAFIA9HDQEMBwsgBy8BACENIActAAIiDEEPTQ0BIAkhCAwDCyAFMQAAISQgBCAGQQhqIgc6AEAgBCAFQQFqIgU2AjggBCAkIAathiAihCIiNwMwIAchBgwBCwsgCUEfcSEUQn8gCSAMaq2GQn+FISMDQCAiICODpyAUdiANaiEKQSAhB0Gg/scAIQwCQAJAAkACQCASQQFrDgMAAQIDC0G0CiEHIBghDAwCC0G0CiEHIBkhDAwBC0HQBCEHIBohDAsgByAKTQ0DIAwgCkECdGoiBy0AAyIIIAlqQf8BcSAGQf8BcUsEQCAFIA9GDQUgBTEAACEkIAQgBkEIaiIHOgBAIAQgBUEBaiIFNgI4IAQgJCAGrYYgIoQiIjcDMCAHIQYMAQsLIActAAIhDCAHLwEAIQ0gBCAEKAJkIAlqNgJkIAYgCWshBiAiIAmtiCEiCyAEIAYgCGs6AEAgBCAiIAitiDcDMCAMQcAAcUUEQCAEIAxBD3E2AmAgBCANQf//A3E2AlxBFiEGDBwLIARBFjYCiAEgBEH/6sAANgKEAQwcCyAJIAhBhILIABDwBwALIAogB0GEgsgAEPAHAAtBACEKQRUhCAwaC0ELIQYgBC0AAyIMRQ0XAkAgBC0AQCIHQR9LDQBBACEKQRAhCCAEKAI4IgUgBCgCPCIJRg0aIAQgBUEBaiINNgI4IAQgB60iIkIIfCIjPABAIAQgBCkDMCAFMQAAICKGhCIkNwMwIAdBF0sNACAJIA1GDRogBCAFQQJqIg02AjggBCAiQhB8IiU8AEAgBCAFMQABICOGICSEIiM3AzAgB0EPSw0AIAkgDUYNGiAEIAVBA2oiDTYCOCAEICJCGHwiIjwAQCAEIAUxAAIgJYYgI4QiIzcDMCAHQQdLDQAgCSANRg0aIAQgBUEEajYCOCAEIAdBIHI6AEAgBCAFMQADICKGICOENwMwCyAEIAQoAlAiBSAEKAJUajYCVCAEKAJ4IQoCfwJAAkAgDEEEcQRAIApFBEAgBCAEKAJ8IAQoAkggBRDoAjYCfCAEKQMwISIMAgsgBCAEKAKAASAEKAJIIAUQugEiBTYCfCAEIAU2AoABIAQoAnghCgsgBCkDMCEiIAoNAQsgIqciBUH/gfwHcUEIeCAFQRh4Qf+B/AdxcgwBCyAipwshBSAEIAQoAkwgBCgCUGs2AnQCQCAELQADQQRxBEAgBSAEKAJ8Rw0BCyAEQQA6AEAgBEIANwMwDBgLIARBFTYCiAEgBEG+6cAANgKEAQwYCyAELQABIgdBAXEEQCAEIAQtAEAiBUH4AXE6AEAgBCAEKQMwIAVBB3GtiDcDMEEQIQYMFwsgBCkDMCEiIAQtAEAiBkECTQRAIAQoAjgiBSAEKAI8RgRAQQAhCkENIQgMGgsgBCAFQQFqNgI4IAUxAAAgBq2GICKEISIgBkEIciEGCyAEIAZBAWs6AEAgBCAiQgGIIiM3AzAgBCAip0EBcSAHcjoAAQJAAkACQAJAICOnQQNxQQFrDgMBAgMACyAEIAZBA2s6AEAgBCAiQgOINwMwQQ4hBgwZC0EAIQogBEEAOgCgASAEQQU2ApwBIARBADoAmAEgBEEJNgKUASAEIAZBA2s6AEAgBCAiQgOINwMwQREhBkERIQggBC0ABEEGRw0YDBoLIAQgBkEDazoAQCAEICJCA4g3AzBBGCEGDBcLIARBEzYCiAEgBEG26sAANgKEAUF9IQogBCAGQQNrOgBAIAQgIkIDiDcDMEEeIQgMGAsCQCAEKAJ4IgVBgARxBEACQCAELQBAIgdBD0sNAEEAIQpBCCEIIAQoAjgiBiAEKAI8IglGDRogBCAGQQFqIgw2AjggBCAHrSIiQgh8IiM8AEAgBCAEKQMwIAYxAAAgIoaEIiI3AzAgB0EHSw0AIAkgDEYNGiAEIAZBAmo2AjggBCAHQRByOgBAIAQgBjEAASAjhiAihDcDMAsgBC0AA0EEcQRAIAQvAXwgBCgCMEcNAgsgBEEAOgBAIARCADcDMAsgBCgCjAEiBgRAIAYgBUEJdkEBcTYCLCAEKAKMAUEBNgIwIAQoAnghBQtBDCEGIAQtAANBBHFFIAVFcg0WIARCADcCfAwWCyAEQRQ2AogBIARB8enAADYChAEMFgsCQCAEKAJ4IhJBgCBxBEBBByEIIAQoAnANAUEAIQoMGAtBCCEGIAQoAowBIgVFDRUgBUEANgIkDBULAkAgBCgCPCIJIAQoAjgiBUYEQEEAIQcMAQsgCSAFayEHQQAhBgNAIAUgBmotAAAEQCAFIAZBAWoiBmogCUcNAQwCCwsgBkEBaiEHCwJAIAQoAowBIgZFDQAgBigCJCIKRQ0AIAYoAigiCSAEKAJYIgZPBEAgCSAGayIJIAcgByAJSxsiCQRAIAYgCmogBSAJ/AoAAAsgBCAEKAJYIAlqNgJYIAQoAnghEgwBC0HggcgAQRJB9IHIABCUCAALAkAgEkGABHFFDQAgBC0AA0EEcUUNACAEIAQoAnwgBSAHELoBNgJ8CwJAIAdFBEAgBCAEKAI8IgUgBCgCOCIGIAUgBkkbIgo2AjgMAQsgBSAHakEBay0AACAEIAQoAjwiBSAEKAI4IAdqIgYgBSAGSRsiCjYCOEEIIQZFDRULQQghBiAFIApHDRRBACEKDBYLAkACQCAEKAJ4IhJBgBBxBEBBBiEIIAQoAnANAUEAIQoMGAsgBCgCjAEiBUUNASAFQQA2AhwMAQsCQCAEKAI8IgkgBCgCOCIFRgRAQQAhBwwBCyAJIAVrIQdBACEGA0AgBSAGai0AAARAIAUgBkEBaiIGaiAJRw0BDAILCyAGQQFqIQcLAkAgBCgCjAEiBkUNACAGKAIcIgpFDQAgBigCICIJIAQoAlgiBk8EQCAJIAZrIgkgByAHIAlLGyIJBEAgBiAKaiAFIAn8CgAACyAEIAQoAlggCWo2AlggBCgCeCESDAELQbyByABBEkHQgcgAEJQIAAsCQCASQYAEcUUNACAELQADQQRxRQ0AIAQgBCgCfCAFIAcQugE2AnwLAkAgB0UEQCAEIAQoAjwiBiAEKAI4IgUgBSAGSxsiBTYCOAwBCyAFIAdqQQFrLQAAIAQgBCgCPCIGIAQoAjggB2oiBSAFIAZLGyIFNgI4RQ0BCyAFIAZHDQBBACEKDBYLIARBADYCWEEHIQYMEwsCQCAEKAJ4IgpBgAhxRQ0AIAQoAjwgBCgCOCIIayIFIAQoAlgiBiAFIAZJGyIFBEACQCAEKAKMASIHRQ0AIAcoAhAiDEUNACAFIAcoAhgiCSAHKAIUIAZrIgZrIgdBACAHIAlNGyIHIAUgB0kbIgcEQCAMIAkgBiAGIAlLG2ogCCAH/AoAAAsgBCgCeCEKCwJAIApBgARxRQ0AIAQtAANBBHFFDQAgBCgCPCAEKAI4IgZrIgcgBU8EQCAEIAQoAnwgBiAFELoBNgJ8DAELQQAgBSAHQayByAAQoAUACyAEIAQoAnAgBWs2AnAgBCAEKAJYIAVrIgY2AlggBCAEKAI8IgcgBCgCOCAFaiIFIAUgB0sbNgI4CyAGRQ0AQQAhCkEFIQgMFQsgBEEANgJYQQYhBgwSCwJAAkAgBCgCeCIHQYAIcQRAIAQpAzAhIgJAIAQtAEAiBkEPSw0AQQAhCkEEIQggBCgCOCIFIAQoAjwiCUYNFyAEIAVBAWoiDDYCOCAEIAatIiNCCHwiJDwAQCAEIAUxAAAgI4YgIoQiIjcDMCAGQQdLDQAgCSAMRg0XIAQgBUECajYCOCAEIAZBEHI6AEAgBCAFMQABICSGICKEIiI3AzALIAQgIqciBTYCWCAEKAKMASIGBH8gBiAFNgIUIAQoAngFIAcLQYAEcUUNAiAELQADQQRxDQEMAgtBBSEGIAQoAowBIgVFDRMgBUEANgIQDBMLIAsgBCkDMD0BECAEIAQoAnwgC0EQakECELoBNgJ8CyAEQQA6AEAgBEIANwMwQQUhBgwRC0ENIQYgBC0AAyIHRQ0QIAQpAzAhIgJAAkAgBC0AQCIGQQ9LDQAgBCgCOCIFIAQoAjwiCUYNASAEIAVBAWoiCjYCOCAEIAatIiNCCHwiJDwAQCAEIAUxAAAgI4YgIoQiIjcDMCAGQQdLDQAgCSAKRg0BIAQgBUECajYCOCAEIAZBEHI6AEAgBCAFMQABICSGICKEIiI3AzALAkAgB0ECcUEAICJCn5YCURtFBEAgBCgCjAEiBQR/IAVBfzYCMCAELQADBSAHC0EBcQRAIAQpAzAiIkIIhkKA/gODICJCCIh8Qh+CUA0CCyAEQRc2AogBIARBkOnAADYChAEMFAsgBC0AAkUEQCAEQQ86AAILIAtBn5YCOwAQIARBACALQRBqQQIQugE2AnwgBEEAOgBAIARCADcDMEEBIQYMEgsgIkIPg0IIUQRAIAQgIkIEiCIjNwMwIAQgBC0AQEEEazoAQCAjp0EPcSIGQQhqIQUgBC0AAiIHBH8gBwUgBCAFOgACIAULIAVJIAZBB0tyRQRAIARCgICAgBA3A3ggBEEAOgBAIARCADcDMCAEQQEgBXQ2ApABQQxBGyAiQoDAAINQGyEGDBMLIARBFDYCiAEgBEGF6sAANgKEAQwTCyAEQRs2AogBIARB1uvAADYChAEMEgtBACEIQQAhCgwSCyAEQR02AogBIARBmerAADYChAEMEAtBAiEKIAQtAAFBAnFFBEBBHCEIDBELIARBATYCfEEMIQYMDgsgBCkDMCEiAkAgBC0AQCIGQR9LDQBBACEKQRshCCAEKAI4IgUgBCgCPCIHRg0QIAQgBUEBaiIJNgI4IAQgBq0iI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBF0sNACAHIAlGDRAgBCAFQQJqIgk2AjggBCAjQhB8IiU8AEAgBCAFMQABICSGICKEIiI3AzAgBkEPSw0AIAcgCUYNECAEIAVBA2oiCTYCOCAEICNCGHwiIzwAQCAEIAUxAAIgJYYgIoQiIjcDMCAGQQdLDQAgByAJRg0QIAQgBUEEajYCOCAEIAZBIHI6AEAgBCAFMQADICOGICKEIiI3AzALIARBADoAQCAEQgA3AzAgBCAipyIFQf+B/AdxQQh4IAVBGHhB/4H8B3FyNgJ8QRwhBgwNCyAEKQMwISICQCAELQBAIgZBDUsNAEEAIQpBGCEIIAQoAjgiBSAEKAI8IgdGDQ8gBCAFQQFqIgk2AjggBCAGrSIkQgh8IiM8AEAgBCAFMQAAICSGICKEIiI3AzAgBkEFSwRAICOnIQYMAQsgByAJRg0PIAQgBUECajYCOCAEIAZBEHIiBjoAQCAEIAUxAAEgI4YgIoQiIjcDMAsgBCAGQQ5rOgBAIAQgIkIOiDcDMCAEICKnIgVBH3EiBkGBAmo2AhwgBCAFQQV2QR9xIgdBAWo2AiAgBCAFQQp2QQ9xQQRqNgIYIAZBHUsgB0EdS3JFBEAgBEEANgIkQRkhBgwNCyAEQSQ2AogBIARBk+bAADYChAEMDQsDQCAEKAJMIgUgBCgCUCIHRgRAQQAhCkEXIQgMDwsgBSAHayEFAkAgByAEKAJcIglPBEAgECAJIAUgBCgCWCIHIAUgB0kbIgUQiQMMAQsgCSAHayIHIAQoAhBNBEAgBCgCDCIKQUBqIglBQU8NESAQICAgCUEAIAkgCk0bIAcgBCgCFCIJayIKayAJIAdrIAcgCUsiCRsiCCAIIAUgBCgCWCIMIAogByAJGyIHIAcgDEsbIgcgBSAHSRsiBWoQuQUMAQsgBC0AAUEEcQRAQR4hCCAEQR42AogBIARB0+nAADYChAFBfSEKDBALQaCAyABB1QBBlILIABCTCAALIAQgBCgCWCIHIAVrNgJYIAUgB0cNAAsMCwsCQCAEKAJgIglFBEAgBCgCWCEGDAELIAQpAzAhIgJAIAQtAEAiBSAJTwRAIAUhCgwBCyAEKAI4IQYgBCgCPCEIA0AgBiAIRgRAQQAhCkEUIQgMEAsgBCAGQQFqIgc2AjggBCAFQQhqIgo6AEAgBCAGMQAAIAWthiAihCIiNwMwIAchBiAJIAoiBUH/AXFLDQALCyAEIAogCWs6AEAgBCAiIAmtIiOINwMwIAQgBCgCZCAJajYCZCAEIAQoAlggIkJ/ICOGQn+Fg6dqIgY2AlgLIAQgBjYCaEEVIQYMCgsgBCgCUCIFIAQoAkwiB0YEQEEAIQpBEyEIDAwLIAUgB0kEQCAEKAJIIAVqIAQoAlg6AAAgBCAEKAJQQQFqNgJQDAoLIAUgB0HA/8cAEPAHAAsgBEESOgAAAkAgBCgCPCIKIAQoAjgiCWtBD0kNACAEKAJMIAQoAlBrQYMCTQ0AIAQQswEgBC0AACIGQRJHDQkgBCgCPCEKIAQoAjghCQsgECgCCCEFIARBADYCUCAQKQIAISIgBEIBNwNIIAsgBTYCGCALICI3AxAgCyARKAAANgIIIAsgESgAAzYAC0GABCEUQaDuxwAhDAJAAkACQAJAIAQtAJgBQQFrDgMAAQIDC0G0CiEUIBghDAwCC0G0CiEUIBkhDAwBC0HQBCEUIBohDAtBICEHQaD+xwAhEgJAAkACQAJAIAQtAKABQQFrDgMAAQIDC0G0CiEHIBghEgwCC0G0CiEHIBkhEgwBC0HQBCEHIBohEgsgBC0AQCEPIAQpAzAhIgJAAkADQEESIQgDQAJAAkACQCAEAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhB/wFxQRNrDgUEAQgCCwALIAogCWtBD08EQCALKAIUIAsoAhhrQYMCSw0MCyAEQQA2AmQgCSEFIA8hBiAUICJCfyAENQKUAYZCf4UiI4OnIghLDQIMGgsgBCgCYCIIRQRAIAQoAlghBgwGCyAJIQYgCCAPIgVB/wFxSw0DIAYhDQwEC0EXIQggBCgCYCINRQ0VIAkhBiANIA8iBUH/AXFLDQYgBiEVDAcLA0AgDCAIQQJ0aiINLQADIgggBkH/AXFNDRQgBSAKRwRAIAatISQgBTEAACElIAVBAWohBSAGQQhqIQYgFCAlICSGICKEIiIgI4OnIghNDRkMAQsLQRIhCCAEQRI6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIAo2AjwgBCAKNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIAQgDyAKQQN0aiAJQQN0azoAQEEAIQoMIgsgCygCGCIFIAsoAhQiBkYNCCAFIAZJBEAgCygCECAFaiAEKAJYOgAAIAsgBUEBajYCGAwVCyAFIAZBwP/HABDwBwALA0AgBiAKRg0JIAYxAAAgBa2GICKEISIgBkEBaiINIQYgCCAFQQhqIgVB/wFxSw0ACwsgBCAEKAJkIAhqNgJkIAQgBCgCWCAiQn8gCK0iI4ZCf4WDp2oiBjYCWCAFIAhrIQ8gIiAjiCEiIA0hCQsgBCAGNgJoQRUhCAwQCyAJIQUgDyEGIAcgIkJ/IAQ1ApwBhkJ/hSIjg6ciCE0NDQNAIBIgCEECdGoiDS0AAyIIIAZB/wFxTQ0LIAUgCkcEQCAGrSEkIAUxAAAhJSAFQQFqIQUgBkEIaiEGIAcgJSAkhiAihCIiICODpyIITQ0PDAELC0EVIQggBEEVOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDB0LA0AgBiAKRg0GIAYxAAAgBa2GICKEISIgBkEBaiIVIQYgDSAFQQhqIgVB/wFxSw0ACwsgBCAEKAJkIA1qNgJkIAQgBCgCXCAiQn8gDa0iI4ZCf4WDp2o2AlwgBSANayEPICIgI4ghIiAVIQkMDQsgCygCFCIFIAsoAhgiBkYNBCAFIAZrIQUgBiAEKAJcIghPBEAgC0EQaiAIIAUgBCgCWCIGIAUgBkkbIgYQiQMMBwsgCCAGayIGIAQoAhBNBEAgBCgCDCINQUBqIghBQU8NHCALQRBqICAgCEEAIAggDU0bIAYgBCgCFCIIayINayAIIAZrIAYgCEsiCBsiFSAVIAUgBCgCWCIbIA0gBiAIGyIGIAYgG0sbIgYgBSAGSRsiBmoQuQUMBwsgBC0AAUEEcUUNBSAQIAsoAhg2AgggECALKQMQNwIAIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBHjYCiAEgBEHT6cAANgKEAUEeDAgLIARBEjoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIAQQswEgBC0AACEGDBcLQRMhCCAEQRM6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAA0EAIQoMGAtBFCEIIARBFDoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgCjYCPCAEIAo2AjggBCAiNwMwIBEgCygCCDYAACARIAsoAAs2AAMgBCAPIApBA3RqIAlBA3RrOgBAQQAhCgwXC0EWIQggBEEWOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBYLQRchCCAEQRc6AAAgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAA0EAIQoMFQtBoIDIAEHVAEGcgcgAEJMIAAsgBCAEKAJYIgUgBms2AlhBEkEXIAUgBkYbIQgMBQsgDS8BACEVAkAgDS0AAiIXQQ9LBEAgCCENDAELICJCfyAIIBdqrYZCf4UiI4OnIAh2IBVqIg0gB08NAiAIQR9xIRcCQANAIBIgDUECdGoiGy0AAyINIAhqQf8BcSAGQf8BcU0NASAFIApHBEAgBq0hJCAFMQAAIAVBAWohBSAGQQhqIQYgJIYgIoQiIiAjg6cgF3YgFWoiDSAHTw0FDAELC0EVIQggBEEVOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBQLIBstAAIhFyAbLwEAIRUgBCAEKAJkIAhqNgJkIAYgCGshBiAiIAitiCEiCyAGIA1rIQ8gIiANrYghIiAXQcAAcUUEQCAEIBdBD3E2AmAgBCAVQf//A3E2AlxBFiEIIAUhCQwFCyAQIAsoAhg2AgggECALKQMQNwIAIAQgDzoAQCAEIAo2AjwgBCAFNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBFjYCiAEgBEH/6sAANgKEAUEeCyIIOgAAQX0hCgwRCyANIAdBjIHIABDwBwALIAggB0H8gMgAEPAHAAsgDS8BACEVAkAgDS0AAiIXRQRAQQAhDSAFIQlBACEXDAELQQAhDSAXQQ9LBEAgBSEJDAELAkAgFCAiQn8gCCAXaq2GQn+FIiODp0H//wNxIAhBD3EiF3YgFWpB//8DcSINTQ0AAkADQCAMIA1BAnRqIg0tAAMiGyAIakH/AXEgBkH/AXFNDQEgBSAKRwRAIAatISQgBTEAACElIAVBAWohBSAGQQhqIQYgFCAlICSGICKEIiIgI4OnQf//A3EgF3YgFWpB//8DcSINTQ0DDAELC0ESIQggBEESOgAAIBAgCykDEDcCACAQIAsoAhg2AgggBCAKNgI8IAQgCjYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAyAEIA8gCkEDdGogCUEDdGs6AEBBACEKDBELIAYgCGshBiAiIAitiCEiIA0tAAIhFyANLwEAIRUgCCENIAUhCSAbIQgMAQsgDSAUQeyAyAAQ8AcACyAEIBVB//8DcTYCWCAEIA0gCEH/AXFqNgJkIAYgCGshDyAiIAitiCEiQRMhCCAXRQ0AIBdBIHENAiAXQcAAcUUEQCAEIBdBD3E2AmBBFCEIDAELCwtBHiEIIARBHjoAACAQIAspAxA3AgAgECALKAIYNgIIIAQgDzoAQCAEIAo2AjwgBCAJNgI4IAQgIjcDMCARIAsoAgg2AAAgESALKAALNgADIARBHDYCiAEgBEHj6sAANgKEAUF9IQoMDAtBDCEGIARBDDoAACAEQX82AmQgECALKQMQNwIAIBAgCygCGDYCCCAEIA86AEAgBCAKNgI8IAQgCTYCOCAEICI3AzAgESALKAIINgAAIBEgCygACzYAAwwJCyAIIBRB3IDIABDwBwALIAQgBC0AQCIGQfgBcToAQCAEIAQpAzAgBkEHca2IIiI3AzACQCAGQR9LDQBBACEKQQ4hCCAEKAI4IgUgBCgCPCIHRg0KIAQgBUEBaiIJNgI4IAQgBq1CGIMiI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBGHEiBkEYRg0AIAcgCUYNCiAEIAVBAmoiCTYCOCAEICNCEHwiJTwAQCAEIAUxAAEgJIYgIoQiIjcDMCAGQQ9LDQAgByAJRg0KIAQgBUEDaiIJNgI4IAQgI0IYfCIjPABAIAQgBTEAAiAlhiAihCIiNwMwIAYNACAHIAlGDQogBEEgOgBAIAQgBUEEajYCOCAEIAUxAAMgI4YgIoQiIjcDMAsgIkIQiCAihUL//wODQv//A1EEQEEAIQogBEEAOgBAIARCADcDMCAEICKnQf//A3E2AlhBDyEGIAQtAARBBkcNCEEOIQgMCgsgBEEdNgKIASAEQbfmwAA2AoQBDAgLQQ0hBiAELQAEQQRNDQZBACEKQQwhCAwICwJAIAQtAAMiCUUNACAEKAJ4RQ0AAkAgBC0AQCIGQR9LDQBBACEKQQshCCAEKAI4IgUgBCgCPCIHRg0JIAQgBUEBaiIMNgI4IAQgBq0iIkIIfCIjPABAIAQgBCkDMCAFMQAAICKGhCIkNwMwIAZBF0sNACAHIAxGDQkgBCAFQQJqIgw2AjggBCAiQhB8IiU8AEAgBCAFMQABICOGICSEIiM3AzAgBkEPSw0AIAcgDEYNCSAEIAVBA2oiDDYCOCAEICJCGHwiIjwAQCAEIAUxAAIgJYYgI4QiIzcDMCAGQQdLDQAgByAMRg0JIAQgBUEEajYCOCAEIAZBIHI6AEAgBCAFMQADICKGICOENwMwCwJAIAlBBHEEQCAEKAJUIAQoAjBHDQELIARBADoAQCAEQgA3AzAMAQsgBEEXNgKIASAEQafpwAA2AoQBDAcLQR0hCEEBIQoMBwsCQCAELQBAIgZBD0sNAEEAIQpBAyEIIAQoAjgiBSAEKAI8IgdGDQcgBCAFQQFqIgk2AjggBCAGrSIiQgh8IiM8AEAgBCAEKQMwIAUxAAAgIoaEIiI3AzAgBkEHSw0AIAcgCUYNByAEIAVBAmo2AjggBCAGQRByOgBAIAQgBTEAASAjhiAihDcDMAsgBCgCjAEiBQRAIAUgBC0AMDYCCCAEKAKMASAEKQMwQgiIPgIMCwJAIAQtAHlBAnFFDQAgBC0AA0EEcUUNACALIAQpAzA9ARAgBCAEKAJ8IAtBEGpBAhC6ATYCfAsgBEEAOgBAIARCADcDMEEEIQYMBAsCQCAELQBAIgZBH0sNAEEAIQpBAiEIIAQoAjgiBSAEKAI8IgdGDQYgBCAFQQFqIgk2AjggBCAGrSIiQgh8IiM8AEAgBCAEKQMwIAUxAAAgIoaEIiQ3AzAgBkEXSw0AIAcgCUYNBiAEIAVBAmoiCTYCOCAEICJCEHwiJTwAQCAEIAUxAAEgI4YgJIQiIzcDMCAGQQ9LDQAgByAJRg0GIAQgBUEDaiIJNgI4IAQgIkIYfCIiPABAIAQgBTEAAiAlhiAjhCIjNwMwIAZBB0sNACAHIAlGDQYgBCAFQQRqNgI4IAQgBkEgcjoAQCAEIAUxAAMgIoYgI4Q3AzALIAQoAowBIgUEQCAFIAQpAzA+AgQLAkAgBC0AeUECcUUNACAELQADQQRxRQ0AIAsgBCkDMD4CECAEIAQoAnwgC0EQakEEELoBNgJ8CyAEQQA6AEAgBEIANwMwQQMhBgwDCyAEKQMwISICQCAELQBAIgZBD0sNAEEAIQogBCgCOCIFIAQoAjwiB0YEQEEBIQgMBgtBASEIIAQgBUEBaiIJNgI4IAQgBq0iI0IIfCIkPABAIAQgBTEAACAjhiAihCIiNwMwIAZBB0sNACAHIAlGDQUgBCAFQQJqNgI4IAQgBkEQcjoAQCAEIAUxAAEgJIYgIoQiIjcDMAsgBCAipyIFNgJ4AkACQCAFQf8BcUEIRgRAIAVBgMADcQ0BIAQoAowBIgYEfyAGIAVBCHZBAXE2AgAgBCgCeAUgBQtBgARxRQ0CIAQtAANBBHFFDQIgBCgCfCEFIAsgBCkDMD0AECAEIAUgC0EQakECELoBNgJ8DAILIARBGzYCiAEgBEHW68AANgKEAQwFCyAEQRk2AogBIARBy5vAADYChAEMBAsgBEEAOgBAIARCADcDMEECIQYMAgtBDCEGIAQoAlgiCEUNASAEKAI4IRIgBCgCPCEHIAQoAlAhCiAEKAJIIQwgBCgCTCEJAkADQCAHIBJrIgUgBCgCTCAKayIHIAggByAISRsiByAFIAdJGyIFRQRAQQAhCkEPIQgMBgsgCSAKTwRAIAUgCSAKayIHSw0CIAUEQCAKIAxqIBIgBfwKAAALIAQgBSAKaiIKNgJQIAQgBCgCWCAFayIINgJYIAQgBCgCPCIHIAQoAjggBWoiBSAFIAdLGyISNgI4IAhFDQQMAQsLIAogCSAJQcyGyAAQoAUAC0EAIAUgB0G8hsgAEKAFAAsCQCAEKAIkIgYgBCgCGCIHTw0AQRMgBiAGQRNNGyEMIAQoAjghCCAEKQMwISMgBC0AQCEFIAQoAjwhDQJAA0ACQCAFQf8BcUECSwRAICMhIiAFIQoMAQsgCCANRgRAQQAhCkEZIQgMBwsgBCAIQQFqIgk2AjggBCAFQQhyIgo6AEAgBCAIMQAAIAWthiAjhCIiNwMwIAkhCAsgBiAMRg0BIAQgCkEDayIFOgBAIAQgIkIDiCIjNwMwIAQgBkEBaiIJNgIkIBYgBkH77ccAai0AAEEBdGogIqdBB3E7AQAgCSIGIAdHDQALIAchBgwBCyAMQRNBpILIABDwBwALIAZBEk0EQAJAIAZBC00EQCAGQfvtxwBqIQUgBkETIAZrIglBGHEiB2ohBiAHIQoDQCAWIAX9XQAAIiv9iQH9qQEiKv0bAEEBdGpBADsBACAWICr9GwFBAXRqQQA7AQAgFiAq/RsCQQF0akEAOwEAIBYgKv0bA0EBdGpBADsBACAWICsgKv0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pASIq/RsAQQF0akEAOwEAIBYgKv0bAUEBdGpBADsBACAWICr9GwJBAXRqQQA7AQAgFiAq/RsDQQF0akEAOwEAIAVBCGohBSAKQQhrIgoNAAsgByAJRg0BCwNAIBYgBkH77ccAai0AAEEBdGpBADsBACAGQQFqIgZBE0cNAAsLIARBEzYCJAsgC0EQakEAIBZBEyAYQbQKQQcgHRCxASALKAIQRQRAIAsoAhQhBSALKAIYIQYgBEEBOgCYASAEIAY2AiggBCAFNgKUASAEQQA2AiRBGiEGDAELCyAEQRk2AogBIARBspvAADYChAELQX0hCkEeIQgLIAQgCDoAACAOKAIgIRQgDiAOKAI8IgUoAjgiDTYCICAOIAUoAjwgDWs2AiQgDiAFKAJMIgcgBSgCUCIGazYCMCAOIAYgBSgCSCIMaiIENgIsIA4gDigCKCANIBRrajYCKCAFIAUoAnQgBiAHa2oiCSAFKAJUaiIHNgJUIA4gBzYCNCAOIAUoAnwiEjYCUAJAAkACQAJAAkACQAJAAkACQCAFQQxqKAIAIghBQGpBQUkEQAJAIAhBwABLDQAgCUUNCiAFLQAAIgdBHksNAEEBIAd0IgdBgIyAgARxDQogB0GAkARxRQ0AIAUtAARBBEYNCgsgBiAJSQ0BIAUtAANBBHEhFSAFKAJ4IRsgCEFAaiIGQQAgBiAITRsiByAJSwRAIAkgCSAHIAUoAhQiGGsiDyAJIA9JGyIGayEZIAYgDGohGiAVRQRAIAggGEkNBCAGIAggGGsiCEsNBSAFKAIIIQggBgRAIAggGGogDCAG/AoAAAsgCSAPTQ0KIBlFDQkgCCAaIBn8CgAADAkLIAggGEkNBSAGIAggGGsiCEsNBiAFKAIIIgggGGohFSAbRQRAIAYEQCAVIAwgBvwKAAALIAUgEiAMIAYQ6AIiDDYCfCAJIA9NDQogGQRAIAggGiAZ/AoAAAsgBSAMIBogGRDoAjYCfAwJCyAFIAUoAoABIAwgBhC6ATYCgAEgBgRAIBUgDCAG/AoAAAsgCSAPTQ0JIAUgBSgCgAEgGiAZELoBNgKAASAZRQ0IIAggGiAZ/AoAAAwICyAMIAkgB2siCGohBgJAIBUEQCAbDQEgEiAMIAgQ6AIhCCAHBEAgBSgCCCAGIAf8CgAACyAFIAggBiAHEOgCNgJ8DAgLIAdFDQcgBSgCCCAGIAf8CgAADAcLIAUoAoABIAwgCBC6ASEIIAUoAgggBSAIIAYgBxC6ATYCgAEgB0UNBiAGIAf8CgAADAYLDAkLQQAgCSAGQZSHyAAQoAUACyAYIAggCEHQhMgAEKAFAAtBACAGIAhBwITIABCgBQALIBggCCAIQfCEyAAQoAUAC0EAIAYgCEHghMgAEKAFAAsgBSAHNgIQIAVBADYCFAwCCyAFIAc2AhAgBSAZNgIUDAELIAUgBiAYaiIIQQAgByAIRxs2AhQgByAFKAIQIghNDQAgBSAGIAhqNgIQCyAFKAKEASIGBEACQCAFKAKIASIHBEAgBiAHakEBay0AAEUNAQtB3IbIAEElQYSHyAAQqAkACyAOIAY2AjgLIAUtAEAgBS0AAUEGdEHAAHFyIQYgDiAFLQAAQQxrQf8BcSIFQQZJBH8gBUECdCgCmI5IIAZyBSAGCzYCTCAOIA4pAxAgDSAca618IiI3AxAgDiAOKQMYIAQgAmutfCIjNwMYAkACQAJAAkACQAJAAkAgCkUEQCAJRSANIBRGcSAfQf8BcUEERnINAQsCQAJAIApBBGoOBwUFBQEDAAQCC0ECIQoMAgtB9OzHAEGTAUHA7ccAEJMIAAtBASEKCyAOIA4pAwAgIiAnfXw3AwAgDiAOKQMIICMgJn18NwMIDAMLIA4gDikDACAiICd9fDcDACAOIA4pAwggIyAmfXw3AwgMAQsgDiAOKQMAICIgJ318NwMAIA4gDikDCCAjICZ9fDcDCAJAIApBAmsOAgECAAsgDigCOCIFBH8gC0EQaiAFAkAgBS0AAEUEQEEAIQUMAQsgBUEBaiEHQQAhBQNAIAUiBkEBaiEFIAYgB2otAAANAAsLIAUQlwMgCygCGCEFQQAgCygCFCALKAIQGwVBAAshBiATIAU2AgggEyAGNgIEIBNBADYCAAwCCyATIBI2AgQgE0EBNgIADAELIBNBAjYCACATIAo6AAQLIAtBIGokAAwBC0Hkg8gAQcoAQbCEyAAQqAkACyATLQAEIQkgEygCACABIAEoAgwiBSABKAIIIAEpA0ggKX2naiIGIAUgBkkbIgY2AghBAkcEQCAAQRRBsMnGAEEWEPIGDAMLIAEpA1AgKH2nIQcCQAJAAkAgCUEBaw4CAQIACyAeIANFcg0BIAdFDQIMAQsgHiADRXINACAHRQ0BCwsgAEEEOgAAIAAgBzYCBAwBCwJAAkACQCABKAIoIgYgASgCLCIFRiABKAIkIgcgA01xRQRAIAEoAiAhCSAFIAZLDQIgAS0AMCAHRXJFBEAgCUEAIAf8CwALIBMgAUE4aiAJIAcQtgMgEy0AAEEERw0BIAcgEygCBCIFTwRAIAFBAToAMCABIAU2AixBACEGDAMLQYyyxgBBJEGwssYAEKgJAAsgAUIANwMoIAAgAUE4aiACIAMQtgMMAwsgEygCBCEHIBMoAgAhCiATMQAAIAFBAToAMCABQgA3AyhBACEFQQAhBkIEUg0BCyAGIAlqIQcCQCAFIAZrIgkgAyADIAlLGyIDQQFGBEAgAiAHLQAAOgAADAELIANFDQAgAiAHIAP8CgAACyAAIAM2AgQgAEEEOgAAIAEgBSADIAZqIgAgACAFSxs2AigMAQsgACAHNgIEIAAgCjYCAAsgE0EQaiQAC9cFAQl/IwBBMGsiBCQAAkACQAJAAkACQAJAIAIgA0sEQCABIANBGGxqIgEoAhQiAkEETQRAIARBADYCCCAEQQA2AiwgAUEEaiIDIAJBAnRqIQogBEEsaiIIIQsgBEEMaiIJIQcMAwsgASgCCCEDIAEoAgQhASAEQQA2AgggBEEANgIsIAMgAUECdGohCiAEQQxqIQcgBEEsaiELIAFBCUkEQCAHIQkgCyEIDAMLIAQgBEEIakF/IAFBAWtndkEBahCHBCAEKAIAIgFBgYCAgHhHBEAgAQ0CQYipxgBBEUHY28YAEKgJAAsCfyAEKAIsIgZBCUkEQCAGIQEgByEJQQghBiALDAELIAQoAgwhASAEKAIQIQkgBwshCCABIAZPDQQMAwsgAyACQcDNxgAQ8AcACyAEKAIEELEKAAtBACEBQQghBgsCQCAKIANrIgJBA3EgAkECdiICIAYgAUF/c2oiBSACIAVJGyIFQQdNcg0AIAFBAnQiAiAJaiADa0EQSQ0AIAIgCWohAiABIAVBAWoiBSAFQQNxIgVBBCAFG2siBWohASADIAVBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAFQQRrIgUNAAshAwsgCSABQQJ0aiECA0AgAyAKRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAYgAUEBaiIBRw0ACyAGIQELIAggATYCACADIApGDQEDQAJ/IAQoAiwiBkEJSQRAIAYhAiAHIQVBCCEGIAsMAQsgBCgCDCECIAQoAhAhBSAHCyEBIAMoAgAhCCACIAZGBEAgBEEIahDqBiAEKAIMIQIgBCgCECEFIAchAQsgBSACQQJ0aiAINgIAIAEgASgCAEEBajYCACADQQRqIgMgCkcNAAsMAQsgCCABNgIACyAAIAQpAig3AiAgACAE/QACGP0LAhAgACAE/QACCP0LAgAgBEEwaiQAC9cFAQl/IwBBMGsiBCQAAkACQAJAAkACQAJAIAIgA0sEQCABIANBGGxqIgEoAhQiAkEETQRAIARBADYCCCAEQQA2AiwgAUEEaiIDIAJBAnRqIQogBEEsaiIIIQsgBEEMaiIJIQcMAwsgASgCCCEDIAEoAgQhASAEQQA2AgggBEEANgIsIAMgAUECdGohCiAEQQxqIQcgBEEsaiELIAFBCUkEQCAHIQkgCyEIDAMLIAQgBEEIakF/IAFBAWtndkEBahCHBCAEKAIAIgFBgYCAgHhHBEAgAQ0CQYipxgBBEUHY28YAEKgJAAsCfyAEKAIsIgZBCUkEQCAGIQEgByEJQQghBiALDAELIAQoAgwhASAEKAIQIQkgBwshCCABIAZPDQQMAwsgAyACQejRxgAQ8AcACyAEKAIEELEKAAtBACEBQQghBgsCQCAKIANrIgJBA3EgAkECdiICIAYgAUF/c2oiBSACIAVJGyIFQQdNcg0AIAFBAnQiAiAJaiADa0EQSQ0AIAIgCWohAiABIAVBAWoiBSAFQQNxIgVBBCAFG2siBWohASADIAVBAnRqA0AgAiAD/QACAP0LAgAgA0EQaiEDIAJBEGohAiAFQQRrIgUNAAshAwsgCSABQQJ0aiECA0AgAyAKRg0CIAIgAygCADYCACACQQRqIQIgA0EEaiEDIAYgAUEBaiIBRw0ACyAGIQELIAggATYCACADIApGDQEDQAJ/IAQoAiwiBkEJSQRAIAYhAiAHIQVBCCEGIAsMAQsgBCgCDCECIAQoAhAhBSAHCyEBIAMoAgAhCCACIAZGBEAgBEEIahDqBiAEKAIMIQIgBCgCECEFIAchAQsgBSACQQJ0aiAINgIAIAEgASgCAEEBajYCACADQQRqIgMgCkcNAAsMAQsgCCABNgIACyAAIAQpAig3AiAgACAE/QACGP0LAhAgACAE/QACCP0LAgAgBEEwaiQAC7cGAgt/BHsCQAJAAkACQAJAIAMgBCAFbCIJaiIKQQFrIgYgAU0EQCAEQQFrIAVsIANqIgRBAWsiByAGTw0BIAQgBksNAiABIAZrIQsgBCAGRgRAIAEgCWsgA2shBEEAIQAgAiEDA0AgACALTw0FIAIgBEsNBiAEIAVrIQQgACAFaiEAIANBAWsiAw0ACwwGCyAAIAZqIQ0gACAHai0AACEOIAAgBGohByAGIARrIgEgAiABIAJJGyIGQQFxIQ8gBkEYcSEDIAAgCmohDCAGQQhJIRBBACEJA0AgBSAJbCIAIAtPDQQgAiALIABBAWoiAWsiBEsNBSAAIA1qLQAAIA5rIQogASANaiEEQQAhAQJAIBAgCUEBaiIJIAVsQQhJckUEQCAEIAr9ESIRIAf9XQAAIhL9iQH9qQH9rgH9DAAAAAAAAAAAAAAAAAAAAAD9uAH9DP8AAAD/AAAA/wAAAP8AAAAiFP22ASARIBIgEf0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pAf2uASAT/bgBIBT9tgH9DQAECAwQFBgcAAAAAAAAAAD9WwAAACADQQhHBEAgBCARIAf9XQAIIhL9iQH9qQH9rgEgE/24ASAU/bYBIBEgEiAR/Q0EBQYHAAAAAAAAAAAAAAAA/YkB/akB/a4BIBP9uAEgFP22Af0NAAQIDBAUGBwAAAAAAAAAAP1bAAgACyAGIAMiAUYNAQsgAUEBciEAIA8EQCABIARqQf8BIAogASAHai0AAGoiAUEAIAFBAEobIgEgAUH/AU4bOgAAIAAhAQsgACAGRg0AIAEgDGohACABIAdqIQQgBiABayEBA0AgAEH/ASAKIAQtAABqIghBACAIQQBKGyIIIAhB/wFOGzoAACAAQQFqQf8BIAogBEEBai0AAGoiCEEAIAhBAEobIgggCEH/AU4bOgAAIABBAmohACAEQQJqIQQgAUECayIBDQALCyAFIAxqIQwgAiAJRw0ACwwFC0H4gccAQRNB8I7EABCTCAALIAcgBkGAj8QAEPAHAAsgBCAGIAZBsI/EABCgBQALIAAgC0GQj8QAEPAHAAtBACACIARBoI/EABCgBQALC9MFAgh/An0gAQRAIABBDGohBgNAAkACfwJAAkACfwJAIAYvAQAiAkH//wFxIgcEQCACQf8HcSEAIAJBgIACcSEEIAJBgPgBcSIDQYD4AUciCEUEQCAEQRB0IQUgBUGAgID8B3IgAEUNAxogBSAAQQ10ckGAgID+B3IMAwsgBEEQdCEFIANFDQEgA0ENdEGAgID8AHEgAEENdHJBgICAwANqIAVyDAILIAJBEHS+QwAAgD9eDQIMBQsgACAAZ0EQayIJQf//A3FBCGp0Qf///wNxIAVBgICA2ANyIAlBF3Rrcgu+QwAAgD9eRQ0DIAcNAQsgAkEQdAwBCyAIRQRAIARBEHQhAiACQYCAgPwHciAARQ0BGiACIABBDXRyQYCAgP4HcgwBCyAEQRB0IQIgA0ENdEGAgID8AHEgAEENdHJBgICAwANqIAJyIAMNABogACAAZ0EQayIAQf//A3FBCGp0Qf///wNxIAJBgICA2ANyIABBF3RrcgtDAACAPyEKviILQwAAgD9eBEAgCxDgBUNU+C1AlEMAAIA/kpFDAACAv5JDAACAPpRDAACAP5IhCgtDAAAAQEMAAIA/IAogCkMAAIA/XRsiCiAKQwAAAEBeG7wiBEH///8DcSEDIARBgICAgHhxIQICQCAEQYCAgPwHcSIAQYCAgPwHRgRAIANBDXYgAkEQdnJBgARBACADG3JBgPgBciECDAELIAJBEHYhAiAAQYCAgLgETQRAIABBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIABBDXYgA0ENdmpBgIABaiACcmohAgwCCyAAQYCAgJgDSQ0BIANBgICABHIiBEH+ACAAQRd2IgNrdiEAIARBHSADayIDdkEBcQR/IABBAyADdEEBayAEcUEAR2oFIAALIAJyIQIMAQsgAkGA+AFyIQILIAYgAjsBAAsgBkEYaiEGIAFBAWsiAQ0ACwsLqAYCBn8BfiMAQSBrIgQkACABKAIMIQUCQAJAAkAgASgCFCICIAEoAhAiA0kEQCABQQxqIQcDQCACIAVqLQAAQQlrIgZBGUsNAkEBIAZ0QZOAgARxRQRAIAZBGUcNAyABQQA2AgggASACQQFqNgIUIARBEGogByABEIICIAQoAhQhAiAEKAIQQQJHDQQgAEEBOgAAIAAgAjYCBAwFCyABIAJBAWoiAjYCFCACIANHDQALIAMhAgsgBEEFNgIQIARBCGogBSADIAJBAWoiASADIAEgA0kbEPgBIARBEGogBCgCCCAEKAIMEKYIIQEgAEEBOgAAIAAgATYCBAwCCyABIARBH2pBmN/BABD9ASABENMGIQEgAEEBOgAAIAAgATYCBAwBCyAAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCGCIFQQJrDgoAAQoKBwgECgoCCgsgAi8AAEH18ABHDQJBACEDDAoLQQIhAyACLwAAQebmAHMgAkECaiIGLQAAQTJzcg0HQQEhAwwJC0EDIQMgAkEDaikAAELf2JWTlo/dsvMAhSIIIAIpAABC5ubI+cWtmbH5AIWEUA0IIAggAikAAELm4tj5xa2ZsfkAhYRQRQ0HQQQhAwwICyACLwAAQfLwAEcNAUEFIQMMBwsgAikAAELy8Pyi1oybuuEAUg0BQQYhAwwGCyACLwAAQfPwAEcNBEEHIQMMBQsgAikAAELz8Pyi1oybuuEAUg0DQQghAwwECyACKAAAQezc/YIDcyACQQRqIgMvAABB8vAAc3JFBEBBCSEDDAQLIAIoAABB7Nz9sgZzIAMvAABBsewAc3INAkEKIQMMAwsgAigAAEHvxtHDA3MgAkEDaigAAEG48MjDA3NyDQFBCyEDDAILIAIvAABB5uIAcyAGLQAAQTZzckUNASACLwAAQfXiAHMgAkECaiIDLQAAQTZzckUEQEEMIQMMAgsgAi8AAEH15gBzIAMtAABBMnNyDQBBDSEDDAELIAAgAiAFQfSLwQBBDhCxByABENMGNgIEQQEMAQsgACADOgABQQALOgAACyAEQSBqJAAL9wUBB38jAEEwayIDJAACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgASgCFCICIAEoAhAiBEkEQCABKAIMIQcDQCACIAdqLQAAIgZBCWsiCEEXS0EBIAh0QZOAgARxRXJFBEAgASACQQFqIgI2AhQgAiAERw0BDAMLCyAGQe4ARg0JCyABKAIMIQcgAiAETw0BIAFBDGohCANAIAIgB2otAABBCWsiBkEZSw0HQQEgBnRBk4CABHFFBEAgBkEZRw0IIAFBADYCCCABIAJBAWo2AhQgA0EgaiAIIAEQggIgAygCJCIFIAMoAiAiAUECRg0JGiADKAIoIQIgAUEBRw0FIAJBAEgNDCACDQRBASEBDAcLIAEgAkEBaiICNgIUIAIgBEcNAAsLIAQhAgsgA0EFNgIgIANBCGogByAEIAJBAWoiASAEIAEgBEkbEPgBIANBIGogAygCCCADKAIMEKYIDAULIAIQbiIBDQFBASACEJoJAAsgAkEASA0GIAJFBEBBASEBDAILIAIQbiIBRQ0HCyACRQ0AIAEgBSAC/AoAAAsgACACNgIIIAAgATYCBCAAIAI2AgAMAwsgASADQS9qQZiAwQAQ/QEgARDTBgshBSAAQYGAgIB4NgIAIAAgBTYCBAwBCyABIAJBAWoiBTYCFAJ/AkAgBCAFTQ0AIAEgAkECaiIGNgIUAkACQCAFIAdqLQAAQfUARw0AIAYgBSAEIAQgBUkbIgVGDQIgASACQQNqIgg2AhQgBiAHai0AAEHsAEcEQCAIIQYMAQsgBSAIRg0CIAEgAkEEaiIGNgIUIAcgCGotAABB7ABGDQELIANBCTYCICADQRhqIAcgBCAGEPgBIANBIGogAygCGCADKAIcEKYIDAILIABBgICAgHg2AgAMAgsgA0EFNgIgIANBEGogByAEIAUQ+AEgA0EgaiADKAIQIAMoAhQQpggLIQIgAEGBgICAeDYCACAAIAI2AgQLIANBMGokAA8LEJgKAAtBASACEJoJAAv3BQEHfyMAQTBrIgMkAAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABKAIUIgIgASgCECIESQRAIAEoAgwhBwNAIAIgB2otAAAiBkEJayIIQRdLQQEgCHRBk4CABHFFckUEQCABIAJBAWoiAjYCFCACIARHDQEMAwsLIAZB7gBGDQkLIAEoAgwhByACIARPDQEgAUEMaiEIA0AgAiAHai0AAEEJayIGQRlLDQdBASAGdEGTgIAEcUUEQCAGQRlHDQggAUEANgIIIAEgAkEBajYCFCADQSBqIAggARCCAiADKAIkIgUgAygCICIBQQJGDQkaIAMoAighAiABQQFHDQUgAkEASA0MIAINBEEBIQEMBwsgASACQQFqIgI2AhQgAiAERw0ACwsgBCECCyADQQU2AiAgA0EIaiAHIAQgAkEBaiIBIAQgASAESRsQ+AEgA0EgaiADKAIIIAMoAgwQpggMBQsgAhBuIgENAUEBIAIQmgkACyACQQBIDQYgAkUEQEEBIQEMAgsgAhBuIgFFDQcLIAJFDQAgASAFIAL8CgAACyAAIAI2AgggACABNgIEIAAgAjYCAAwDCyABIANBL2pBlN3GABD+ASABENMGCyEFIABBgYCAgHg2AgAgACAFNgIEDAELIAEgAkEBaiIFNgIUAn8CQCAEIAVNDQAgASACQQJqIgY2AhQCQAJAIAUgB2otAABB9QBHDQAgBiAFIAQgBCAFSRsiBUYNAiABIAJBA2oiCDYCFCAGIAdqLQAAQewARwRAIAghBgwBCyAFIAhGDQIgASACQQRqIgY2AhQgByAIai0AAEHsAEYNAQsgA0EJNgIgIANBGGogByAEIAYQ+AEgA0EgaiADKAIYIAMoAhwQpggMAgsgAEGAgICAeDYCAAwCCyADQQU2AiAgA0EQaiAHIAQgBRD4ASADQSBqIAMoAhAgAygCFBCmCAshAiAAQYGAgIB4NgIAIAAgAjYCBAsgA0EwaiQADwsQmAoAC0EBIAIQmgkAC48GAgd/An4jAEEwayICJAACQAJAIAACfQJAAn8CQAJAAkACQAJAIAEoAhQiAyABKAIQIgRJBEAgASgCDCEFA0AgAyAFai0AACIGQQlrIghBF0tBASAIdEGTgIAEcUVyRQRAIAEgA0EBaiIDNgIUIAMgBEcNAQwDCwsgBkHuAEYNCQsgASgCDCEFIAMgBE8NAQNAAkAgAyAFai0AACIGQQlrDiUAAAUFAAUFBQUFBQUFBQUFBQUFBQUFBQAFBQUFBQUFBQUFBQUEBQsgASADQQFqIgM2AhQgAyAERw0ACwsgBCEDCyACQQU2AhggAiAFIAQgA0EBaiIBIAQgASAESRsQ+AEgAkEYaiACKAIAIAIoAgQQpggMAwsgASADQQFqNgIUIAJBGGogAUEAEPgDIAIpAxgiCkIDUQ0BIAIpAyAhCQJAAkAgCqdBAWsOAgABBQsgCbUMBQsgCbQMBAsgBkEwa0H/AXFBCk8EQCABIAJBL2pBqITBABD9ASABENMGDAILIAJBGGogAUEBEPgDIAIpAxgiCkIDUQ0AIAIpAyAhCQJAAkACQCAKp0EBaw4CAQIACyAJv7ZDAACAP0MAAIC/IAlCAFkbmAwFCyAJtQwECyAJtAwDCyACKAIgCyEDIABBAjYCACAAIAM2AgQMAwsgCb+2QwAAgD9DAACAvyAJQgBZG5gLOAIEIABBATYCAAwBCyABIANBAWoiBzYCFAJ/AkAgBCAHTQ0AIAEgA0ECaiIGNgIUAkACQCAFIAdqLQAAQfUARw0AIAYgByAEIAQgB0kbIgdGDQIgASADQQNqIgg2AhQgBSAGai0AAEHsAEcEQCAIIQYMAQsgByAIRg0CIAEgA0EEaiIGNgIUIAUgCGotAABB7ABGDQELIAJBCTYCGCACQRBqIAUgBCAGEPgBIAJBGGogAigCECACKAIUEKYIDAILIABBADYCAAwCCyACQQU2AhggAkEIaiAFIAQgBxD4ASACQRhqIAIoAgggAigCDBCmCAshAyAAQQI2AgAgACADNgIECyACQTBqJAALjwYCB38CfiMAQTBrIgIkAAJAAkAgAAJ9AkACfwJAAkACQAJAAkAgASgCFCIDIAEoAhAiBEkEQCABKAIMIQUDQCADIAVqLQAAIgZBCWsiCEEXS0EBIAh0QZOAgARxRXJFBEAgASADQQFqIgM2AhQgAyAERw0BDAMLCyAGQe4ARg0JCyABKAIMIQUgAyAETw0BA0ACQCADIAVqLQAAIgZBCWsOJQAABQUABQUFBQUFBQUFBQUFBQUFBQUFAAUFBQUFBQUFBQUFBQQFCyABIANBAWoiAzYCFCADIARHDQALCyAEIQMLIAJBBTYCGCACIAUgBCADQQFqIgEgBCABIARJGxD4ASACQRhqIAIoAgAgAigCBBCmCAwDCyABIANBAWo2AhQgAkEYaiABQQAQygIgAikDGCIKQgNRDQEgAikDICEJAkACQCAKp0EBaw4CAAEFCyAJtQwFCyAJtAwECyAGQTBrQf8BcUEKTwRAIAEgAkEvakH4qMYAEP4BIAEQ0wYMAgsgAkEYaiABQQEQygIgAikDGCIKQgNRDQAgAikDICEJAkACQAJAIAqnQQFrDgIBAgALIAm/tkMAAIA/QwAAgL8gCUIAWRuYDAULIAm1DAQLIAm0DAMLIAIoAiALIQMgAEECNgIAIAAgAzYCBAwDCyAJv7ZDAACAP0MAAIC/IAlCAFkbmAs4AgQgAEEBNgIADAELIAEgA0EBaiIHNgIUAn8CQCAEIAdNDQAgASADQQJqIgY2AhQCQAJAIAUgB2otAABB9QBHDQAgBiAHIAQgBCAHSRsiB0YNAiABIANBA2oiCDYCFCAFIAZqLQAAQewARwRAIAghBgwBCyAHIAhGDQIgASADQQRqIgY2AhQgBSAIai0AAEHsAEYNAQsgAkEJNgIYIAJBEGogBSAEIAYQ+AEgAkEYaiACKAIQIAIoAhQQpggMAgsgAEEANgIADAILIAJBBTYCGCACQQhqIAUgBCAHEPgBIAJBGGogAigCCCACKAIMEKYICyEDIABBAjYCACAAIAM2AgQLIAJBMGokAAumAwIbfQN8QwAAgD8hDUQAAAAAAADwP0QAAADg0w7VPyIcoyIdRAAAAAAAAPA/RAAAAMCaA9Q/Ih6hIByhorYiCyEOIB0gHqK2IgwhAUOamRk+IghDw/WoPiIClCIPQwAAgD9DmpmZPiIJk0OamRk/IgOTIgSUIAlDj8J1PSIFlCIQQwAAgD9DCtcjPyIKkyACkyIGlCAKIAOUIhFDAACAPyAIkyAFkyIHlJKSIAggA5QiEiAGlJMgCSAClCITIAeUkyAKIAWUIhQgBJSTIhVDAAAAAFwEQCAPIBSTQwAAgD8gFZUiAZQhFiAQIBKTIAGUIRcgESATkyABlCALlCEOIAkgBpQgCiAElJMgAZQhGCACIASUIAMgBpSTIAGUIRkgCiAHlCAIIAaUkyABlCENIAUgBpQgAiAHlJMgAZQhGiAIIASUIAkgB5STIAGUIRsgAyAHlCAFIASUkyABlCAMlCEBCyAAIAUgGSAMlCAYkiAOkpQ4AgwgACADIBogDJQgDZIgFiALlJKUOAIIIAAgAiABIBsgFyALlJKSlDgCBCAAQQE2AgALlQUCBn8BfgJAIAEoAggiAiABKAIEIgRPDQAgASgCACACai0AAEH1AEcNAEEBIQcgASACQQFqIgI2AggLAkACQCACIARJBEAgASgCACIGIAJqLQAAQTBrIgNB/wFxIgVBCkkNAQsMAQsgASACQQFqIgI2AggCQAJAIAVFBEBBACEDDAELIANB/wFxIQMDQCACIARGBEAgBCECDAMLIAIgBmotAABBMGtB/wFxIgVBCUsNASABIAJBAWoiAjYCCCADrUIKfiIIQiCIUARAIAUgCKciBWoiAyAFTw0BCwsMAgsgAiAETw0AIAIgBmotAABB3wBHDQAgASACQQFqIgI2AggLAkACQAJAIAIgAiADaiIFTQRAIAEgBTYCCCAEIAVJDQQgAkUgAiAET3INASACIAZqLAAAQb9/Sg0BDAILDAMLIAVFIAQgBU1yRQRAIAUgBmosAABBv39MDQELIAIgBmohBCAHDQEgAEIBNwIIIAAgAzYCBCAAIAQ2AgAPCyAGIAQgAiAFQczKxAAQ9QkACyACIAZqQQFrIQYgAyEBAn8DQCABIgJFBEBBACEBIAQhBUEBDAILIAJBAWshASACIAZqLQAAQd8ARw0ACwJAAkAgAUUNAAJAIAEgA08EQCABIANHDQEgAg0CQQAhBgwDCyABIARqLAAAQb9/Sg0BCyAEIANBACABQdzKxAAQ9QkACwJAIAIgA08EQCADIQYgAiADRw0BDAILIAIgBGosAABBv39MDQAgAiEGDAELIAQgAyACIANB7MrEABD1CQALIAQgBmohBSADIAZrIQMgBAshAiADRQRADAELIAAgAzYCDCAAIAU2AgggACABNgIEIAAgAjYCAA8LIABBADYCACAAQQA6AAQLpAQBB38CQAJAIAAoAjgiBQRAIAAoAjQgBUECdEELakF4cSIBayIEQQRrKAIAIgJBeHEiAyABIAVqQQlqIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACADIAFBJ2pLGw0CIAQQogILIAAoAiwhAiAAKAIwIgYEQCACIQEDQCABQawBaigCACIHBEAgAUGoAWooAgAiBUEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgB2pJDQMgA0EAIAQgB0EnaksbDQQgBRCiAgsgARDoAyABQbgBaiEBIAZBAWsiBg0ACwsgACgCKCIDBEAgAkEEaygCACIBQXhxIgQgA0G4AWwiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAQgA0EnaksbDQIgAhCiAgsgACgCTCIEBEAgACgCSCIDQQRrKAIAIgJBeHEiAUEEQQggAkEDcSICGyAEakkNASACQQAgASAEQSdqSxsNAiADEKICCwJAIAAoAmAiBEUNACAAKAJkIgNFDQAgBEEEaygCACICQXhxIgFBBEEIIAJBA3EiAhsgA2pJDQEgAkEAIAEgA0EnaksbDQIgBBCiAgsCQCAAQX9GDQAgACAAKAIEIgJBAWs2AgQgAkEBRw0AIABBBGsoAgAiAUF4cUHsAEHwACABQQNxIgIbSQ0BIAJBACABQZABTxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC6wFAgV/BH4CQAJAAkACQAJAIAJFBEBBASEFDAELIAIQbiIFRQ0BIAVBBGstAABBA3FFIAJFcg0AIAVBACAC/AsACyABKAIEIgOtIQggA0L/////DyABKQMIIgkgCUL/////D1obp2siBEEAIAMgBE8bIAJPBEAgASgCACAJIAggCCAJVhunaiEDIAJBAUcEQCACRQ0DIAUgAyAC/AoAAAwDCyAFIAMtAAA6AAAMAgtB4JXHACkDACILQgiIIQogC6chAyALQv8Bg0IEUg0DDAILQQEgAhCaCQALQQQhAwsgCSACrXwhCAsgASAINwMIAkACQAJAAkAgA0H/AXEiBkEERwRAIApCGIinIQEgCqciByEEAkACQAJAAkAgBkEBaw4DAQACAwsgAS0ACCEECyAEQf8BcUElRw0BIABBMjYCCCAAQceSwQA2AgQgAEGAgICAeDYCAAwECyABLQAIQSVGDQILIAAgATYCCCAAQYGAgIB4NgIAIAAgA0H/AXEgB0EIdHI2AgQMAgsgACACNgIIIAAgBTYCBCAAQYaAgIB4NgIADwsgAEEyNgIIIABBx5LBADYCBCAAQYCAgIB4NgIAIAEoAgAhACABQQRqKAIAIgMoAgAiBARAIAAgBBEDAAsgAygCBCIDBEAgAEEEaygCACIEQXhxIgZBBEEIIARBA3EiBBsgA2pJDQIgBEEAIAYgA0EnaksbDQMgABCiAgsgAUEEaygCACIAQXhxIgNBEEEUIABBA3EiABtJDQEgAEEAIANBNE8bDQIgARCiAgsgAgRAIAVBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAJqSQ0BIABBACABIAJBJ2pLGw0CIAUQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL0wUCB38CfCMAQTBrIgYkAEEBIQkgASABKAIUIgdBAWoiBTYCFAJAIAUgASgCECIITw0AAkACQCABKAIMIAVqLQAAQStrDgMBAgACC0EAIQkLIAEgB0ECaiIFNgIUCwJAAkAgBSAISQRAIAEgBUEBaiIHNgIUIAEoAgwiCiAFai0AAEEwa0H/AXEiBUEKTwRAIAZBDTYCJCAGQRBqIAogCCAHEPgBIAZBJGogBigCECAGKAIUEKYIIQEgAEEBNgIAIAAgATYCBAwDCyAHIAhPDQECQANAIAcgCmotAABBMGtB/wFxIgtBCk8NAyABIAdBAWoiBzYCFCAFQcyZs+YARyALQQdLciAFQcuZs+YASnENASAFQQpsIAtqIQUgByAIRw0ACyAIIQcMAgsgACABIAIgA1AgCRCwBgwCCyAGQQU2AiQgBkEYaiABKAIMIAggBRD4ASAGQSRqIAYoAhggBigCHBCmCCEBIABBATYCACAAIAE2AgQMAQsgA7ohDCAAAn8CQAJAAkACQAJ/IAlFBEAgBCAFayIBQR91QYCAgIB4cyABIAEgBEggBUEASnMbDAELIAQgBWoiAUEfdUGAgICAeHMgASAFQQBIIAEgBEhzGwsiBUEfdSIBIAVzIAFrIgFBtQJPBEADQCAMRAAAAAAAAAAAYQ0FIAVBAE4NAiAMRKDI64XzzOF/oyEMIAVBtAJqIgUgBUEfdSIBcyABayIBQbUCTw0ACwsgAUEDdCsD0JVGIQ0gBUEATg0BIAwgDaMhDAwDCyAGQQ42AiQgBkEIaiAKIAggBxD4ASAAIAZBJGogBigCCCAGKAIMEKYINgIEDAELIAwgDaIiDJlEAAAAAAAA8H9iDQEgBkEONgIkIAYgCiAIIAcQ+AEgACAGQSRqIAYoAgAgBigCBBCmCDYCBAtBAQwBCyAAIAwgDJogAhs5AwhBAAs2AgALIAZBMGokAAvBBQEQfyMAQeAAayIXJAAgAQRAIAJBAUYhJQNAAkACQAJAAkACQAJAAkAgBEGAgAQgASAYIhprIhggGEGAgARPGyIbQQNsIiEgGkEDbCIeaiIZTwRAIBogG2oiGCAbSSAMIBhJcg0BIAogGUkNAiAGIBlJDQMgG0ECdCImIBpBAnQiGWoiHCAISw0EIBQgGEkNBQJAIBYgGE8EQEEAISJBBCEfIAINAUEEIR1BACEcQQAhI0EEISQMCQsgGiAYIBZByPDBABCgBQALAkAgG0EJbCIjIBpBCWwiHGoiHSAjSSAOIB1JckUEQCANIBxBAnRqISQgJUUNAUEEIR1BACEcDAkLIBwgHSAOQbjwwQAQoAUACyAbQQ9sIhwgGkEPbCIdaiIgIBxJIBAgIElyDQYgDyAdQQJ0aiEdIAJBA0cNByAbQRVsIiIgGkEVbCIfaiIgICJJIBIgIElyRQRAIBEgH0ECdGohHwwICyAfICAgEkGY8MEAEKAFAAsgHiAZIARBqPHBABCgBQALIBogGCAMQZjxwQAQoAUACyAeIBkgCkGI8cEAEKAFAAsgHiAZIAZB+PDBABCgBQALIBkgHCAIQejwwQAQoAUACyAaIBggFEHY8MEAEKAFAAsgHSAgIBBBqPDBABCgBQALIBdCBDcCWCAXQgI3AlAgFyAbNgJMIBcgFSAZajYCSCAXIBs2AkQgFyATIBlqNgJAIBcgIjYCPCAXIB82AjggFyAcNgI0IBcgHTYCMCAXICM2AiwgFyAkNgIoIBcgJjYCJCAXIAcgGUECdGo2AiAgFyAhNgIcIBcgBSAeQQJ0Ih5qNgIYIBcgITYCFCAXIAkgHmo2AhAgFyAbNgIMIBcgCyAZajYCCCAXICE2AgQgFyADIB5qNgIAIAAgGiAbIBcQmgEgASAYSw0ACwsgABCoASAXQeAAaiQAC8AFARB/IwBB4ABrIhckACABBEAgAkEBRiElA0ACQAJAAkACQAJAAkACQCAEQYCABCABIBgiGmsiGCAYQYCABE8bIhtBA2wiISAaQQNsIh5qIhlPBEAgGiAbaiIYIBtJIAwgGElyDQEgCiAZSQ0CIAYgGUkNAyAbQQJ0IiYgGkECdCIZaiIcIAhLDQQgFCAYSQ0FAkAgFiAYTwRAQQAhIkEEIR8gAg0BQQQhHUEAIRxBACEjQQQhJAwJCyAaIBggFkHI8MEAEKAFAAsCQCAbQQlsIiMgGkEJbCIcaiIdICNJIA4gHUlyRQRAIA0gHEECdGohJCAlRQ0BQQQhHUEAIRwMCQsgHCAdIA5BuPDBABCgBQALIBtBD2wiHCAaQQ9sIh1qIiAgHEkgECAgSXINBiAPIB1BAnRqIR0gAkEDRw0HIBtBFWwiIiAaQRVsIh9qIiAgIkkgEiAgSXJFBEAgESAfQQJ0aiEfDAgLIB8gICASQZjwwQAQoAUACyAeIBkgBEGo8cEAEKAFAAsgGiAYIAxBmPHBABCgBQALIB4gGSAKQYjxwQAQoAUACyAeIBkgBkH48MEAEKAFAAsgGSAcIAhB6PDBABCgBQALIBogGCAUQdjwwQAQoAUACyAdICAgEEGo8MEAEKAFAAsgF0IENwJYIBdCAjcCUCAXIBs2AkwgFyAVIBlqNgJIIBcgGzYCRCAXIBMgGWo2AkAgFyAiNgI8IBcgHzYCOCAXIBw2AjQgFyAdNgIwIBcgIzYCLCAXICQ2AiggFyAmNgIkIBcgByAZQQJ0ajYCICAXICE2AhwgFyAFIB5BAnQiHmo2AhggFyAhNgIUIBcgCSAeajYCECAXIBs2AgwgFyALIBlqNgIIIBcgITYCBCAXIAMgHmo2AgAgACAaIBsgFxB5IAEgGEsNAAsLIAAQ1wEgF0HgAGokAAuNBAEHfwJAAkAgACgCACIBBEAgACgCBCIDQQRrKAIAIgJBeHEiBCABQRhsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAhAhAyAAKAIUIgIEQCADQRRqIQEDQCABKAIAIgRBBU8EQCABQQxrKAIAIgZBBGsoAgAiBUF4cSIHIARBAnQiBEEEQQggBUEDcSIFG2pJDQMgBUEAIAcgBEEnaksbDQQgBhCiAgsgAUEYaiEBIAJBAWsiAg0ACwsgACgCDCIBBEAgA0EEaygCACICQXhxIgQgAUEYbCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAIYIgEEQCAAKAIcIgNBBGsoAgAiAkF4cSIEIAFBCWwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCJCIBBEAgACgCKCIDQQRrKAIAIgJBeHEiBCABQQ9sIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAjAiAQRAIAAoAjQiAEEEaygCACIDQXhxIgIgAUEVbCIBQQRBCCADQQNxIgMbakkNASADQQAgAiABQSdqSxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC40EAQd/AkACQCAAKAIAIgEEQCAAKAIEIgNBBGsoAgAiAkF4cSIEIAFBLGwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCECEDIAAoAhQiAgRAIANBFGohAQNAIAEoAgAiBEEFTwRAIAFBDGsoAgAiBkEEaygCACIFQXhxIgcgBEECdCIEQQRBCCAFQQNxIgUbakkNAyAFQQAgByAEQSdqSxsNBCAGEKICCyABQRhqIQEgAkEBayICDQALCyAAKAIMIgEEQCADQQRrKAIAIgJBeHEiBCABQRhsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAhgiAQRAIAAoAhwiA0EEaygCACICQXhxIgQgAUESbCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAIkIgEEQCAAKAIoIgNBBGsoAgAiAkF4cSIEIAFBHmwiAUEEQQggAkEDcSICG2pJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgACgCMCIBBEAgACgCNCIAQQRrKAIAIgNBeHEiAiABQSpsIgFBBEEIIANBA3EiAxtqSQ0BIANBACACIAFBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALvAUBEH8jAEHgAGsiFyQAIAEEQCACQQFGISUDQAJAAkACQAJAAkACQAJAIARBgIAEIAEgGCIaayIYIBhBgIAETxsiG0EDbCIhIBpBA2wiHmoiGU8EQCAaIBtqIhggG0kgDCAYSXINASAKIBlJDQIgBiAZSQ0DIBtBAnQiJiAaQQJ0IhlqIhwgCEsNBCAUIBhJDQUCQCAWIBhPBEBBACEiQQQhHyACDQFBBCEdQQAhHEEAISNBBCEkDAkLIBogGCAWQcjwwQAQoAUACwJAIBtBCWwiIyAaQQlsIhxqIh0gI0kgDiAdSXJFBEAgDSAcQQJ0aiEkICVFDQFBBCEdQQAhHAwJCyAcIB0gDkG48MEAEKAFAAsgG0EPbCIcIBpBD2wiHWoiICAcSSAQICBJcg0GIA8gHUECdGohHSACQQNHDQcgG0EVbCIiIBpBFWwiH2oiICAiSSASICBJckUEQCARIB9BAnRqIR8MCAsgHyAgIBJBmPDBABCgBQALIB4gGSAEQajxwQAQoAUACyAaIBggDEGY8cEAEKAFAAsgHiAZIApBiPHBABCgBQALIB4gGSAGQfjwwQAQoAUACyAZIBwgCEHo8MEAEKAFAAsgGiAYIBRB2PDBABCgBQALIB0gICAQQajwwQAQoAUACyAXQgQ3AlggF0ICNwJQIBcgGzYCTCAXIBUgGWo2AkggFyAbNgJEIBcgEyAZajYCQCAXICI2AjwgFyAfNgI4IBcgHDYCNCAXIB02AjAgFyAjNgIsIBcgJDYCKCAXICY2AiQgFyAHIBlBAnRqNgIgIBcgITYCHCAXIAUgHkECdCIeajYCGCAXICE2AhQgFyAJIB5qNgIQIBcgGzYCDCAXIAsgGWo2AgggFyAhNgIEIBcgAyAeajYCACAAIBogGyAXEOcBIAEgGEsNAAsLIBdB4ABqJAALvAUBEH8jAEHgAGsiFyQAIAEEQCACQQFGISUDQAJAAkACQAJAAkACQAJAIARBgIAEIAEgGCIaayIYIBhBgIAETxsiG0EDbCIhIBpBA2wiHmoiGU8EQCAaIBtqIhggG0kgDCAYSXINASAKIBlJDQIgBiAZSQ0DIBtBAnQiJiAaQQJ0IhlqIhwgCEsNBCAUIBhJDQUCQCAWIBhPBEBBACEiQQQhHyACDQFBBCEdQQAhHEEAISNBBCEkDAkLIBogGCAWQcjwwQAQoAUACwJAIBtBCWwiIyAaQQlsIhxqIh0gI0kgDiAdSXJFBEAgDSAcQQJ0aiEkICVFDQFBBCEdQQAhHAwJCyAcIB0gDkG48MEAEKAFAAsgG0EPbCIcIBpBD2wiHWoiICAcSSAQICBJcg0GIA8gHUECdGohHSACQQNHDQcgG0EVbCIiIBpBFWwiH2oiICAiSSASICBJckUEQCARIB9BAnRqIR8MCAsgHyAgIBJBmPDBABCgBQALIB4gGSAEQajxwQAQoAUACyAaIBggDEGY8cEAEKAFAAsgHiAZIApBiPHBABCgBQALIB4gGSAGQfjwwQAQoAUACyAZIBwgCEHo8MEAEKAFAAsgGiAYIBRB2PDBABCgBQALIB0gICAQQajwwQAQoAUACyAXQgQ3AlggF0ICNwJQIBcgGzYCTCAXIBUgGWo2AkggFyAbNgJEIBcgEyAZajYCQCAXICI2AjwgFyAfNgI4IBcgHDYCNCAXIB02AjAgFyAjNgIsIBcgJDYCKCAXICY2AiQgFyAHIBlBAnRqNgIgIBcgITYCHCAXIAUgHkECdCIeajYCGCAXICE2AhQgFyAJIB5qNgIQIBcgGzYCDCAXIAsgGWo2AgggFyAhNgIEIBcgAyAeajYCACAAIBogGyAXEI8CIAEgGEsNAAsLIBdB4ABqJAAL9wQBCH8CQCADLQADIgcgAy0ABCILayIIIAhBH3UiCHMgCGtBAXQgAy0AAiIIIAMtAAUiCmsiBCAEQR91IgVzIAVrQQF2aiACQf8BcUsNACABQf8BcSIBIAMtAAAgAy0AASICayIFIAVBH3UiBXMgBWtJDQAgASIFIAIgCGsiBiAGQR91IgZzIAZrQf8BcUkNACAFIAggB2siBiAGQR91IgZzIAZrIgZB/wFxSQ0AIAUgAy0AByADLQAGIgVrIgkgCUEfdSIJcyAJa0kNACABIAUgCmsiCSAJQR91IglzIAlrQf8BcUkNACABIAogC2siASABQR91IgFzIAFrIgFB/wFxSQ0AIABB/wFxIgAgBkH/AXFPIAFB/wFxIABNcUUEQEEBIAMQ/QUaDwsgA0H/ASAFQf8AQYB/IAsgB2tBA2xB/wBBgH8gBCAEQYB/TBsiACAAQf8AThtqIgAgAEGAf0wbIgAgAEH/AE4bIgBBCWxBP2pBB3UiAWsiBEEAIARBAEobIgQgBEH/AU4bOgAGIANB/wBBgH8gCiAAQRJsQT9qQQd1IgprQYABayIEIARBgH9MGyIEIARB/wBOG0GAAXM6AAUgA0H/AEGAfyAHIABBG2xBP2pBB3UiAGpBgAFrIgcgB0GAf0wbIgcgB0H/AE4bQYABczoAAyADQf8AQYB/IAsgAGtBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoABCADQf8AQYB/IAggCmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAiADQf8AQYB/IAEgAmpBgAFrIgAgAEGAf0wbIgAgAEH/AE4bQYABczoAAQsL7QUCC38CfiMAQRBrIgQkAAJAAkACQCABKAIoIgIEQAJAIAEpAxAiDlBFBEAgASgCICEFDAELIAEoAiAhBSABKAIYIQMDQCAFQUBqIQUgAykDACADQQhqIQNCgIGChIiQoMCAf4MiDUKAgYKEiJCgwIB/UQ0ACyABIAU2AiAgASADNgIYIA1CgIGChIiQoMCAf4UhDgsgASACQQFrIgk2AiggASAOQgF9IA6DIg03AxAgAkH/////AUsNAkEEIAIgAkEETRsiAkEDdCIDQf3///8HTw0CIAUgDnqnQfgAcWsiBkEEaygCACEHIAZBCGsoAgAhCCADEG4iBkUNAyAGIAc2AgQgBiAINgIAIARBATYCDCAEIAY2AgggBCACNgIEIAEoAjAhCCABKAIEIQIgASgCACEKIAkEQCABKAIYIQNBASEHA0AgDVAEQANAIAMiAUEIaiEDIAVBQGohBSABKQMAQoCBgoSIkKDAgH+DIg1CgIGChIiQoMCAf1ENAAsgDUKAgYKEiJCgwIB/hSENCyAFIA16p0H4AHFrIgFBBGsoAgAhCyABQQhrKAIAIQEgDUIBfSANgyENIAQoAgQgB0YEQCAEQQRqIAcgCUEEQQgQ1gYgBCgCCCEGCyAGIAdBA3RqIgwgCzYCBCAMIAE2AgAgBCAHQQFqIgc2AgwgCUEBayIJDQALCwJAIAJFDQAgAkEJaiIBRQ0AIApB/wEgAfwLAAsgCEEANgIMIAggAjYCBCAIIAo2AgAgACAEKQIENwIAIAAgBCgCDDYCCCAIIAIgAkEBakEDdkEHbCACQQhJGzYCCAwBCyAAQQA2AgggAEKAgICAwAA3AgACQCABKAIEIgBFDQAgAEEJaiIDRQ0AIAEoAgBB/wEgA/wLAAsgAUEANgIMIAEgACAAQQFqQQN2QQdsIABBCEkbNgIIIAEoAjAiACABKQIANwIAIAAgASkCCDcCCAsgBEEQaiQADwsQmAoAC0EEIAMQmgkAC7oEAQt/AkACQAJAIAAoAgAiAUEDRiABQQJJcg0AAkACQCAALQAUQQFrDgICAAELQeiZxwBB+QBBpJrHABCTCAALIAAoAgghCSAAKAIMIgsEQANAIAkgBkEMbGoiBCgCBCEKIAQoAggiCARAIApBJGohAQNAIAFBBGsoAgAiAkEASgRAIAEoAgAiBUEEaygCACIDQXhxIgdBBEEIIANBA3EiAxsgAmpJDQcgA0EAIAcgAkEnaksbDQYgBRCiAgsCQCABQRRrKAIAIgVBAkYNACABQRBrIQICQCAFRQRAIAIoAgAiAkUNAiABQQxrKAIAIgVBBGsoAgAiA0F4cSIHQQRBCCADQQNxIgMbIAJqSQ0JIANFIAcgAkEnak1yDQEMCAsgAigCACICRQ0BIAFBDGsoAgAiBUEEaygCACIDQXhxIgcgAkEBdCICQQRBCCADQQNxIgMbakkNCCADRQ0AIAcgAkEnaksNBwsgBRCiAgsgAUEsaiEBIAhBAWsiCA0ACwsgBCgCACIBBEAgCkEEaygCACIEQXhxIgggAUEsbCIBQQRBCCAEQQNxIgQbakkNBSAEQQAgCCABQSdqSxsNBCAKEKICCyAGQQFqIgYgC0cNAAsLIAAoAgQiAEUNACAJQQRrKAIAIgFBeHEiBiAAQQxsIgBBBEEIIAFBA3EiARtqSQ0CIAFBACAGIABBJ2pLGw0BIAkQogILDwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQALpwUBCH8gACAAKAIIIgQgAmoiAzYCCCAAKAIEIgggA0EQaiIHIAcgCEsbIQMgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCABIAJPBEAgASAESw0BIAQgAWshACAHIAhPBEAgACACaiIBIANLDQMgACABSw0EIAQgAyACa0sNBSACRQ0KIAQgBWogACAFaiAC/AoAAA8LIAJFDQkgBCAFaiIDIAAgBWoiAP0AAAD9CwAAIAJBEUkNCSAAIAJqIQJBACABayEBIANBEGohAANAIAAgACABav0AAAD9CwAAIABBEGoiACABaiACSQ0ACwwJCyABQQFHBEBBACEAIAEgAyAEIAFrIgggAyAISxtqIARrIgYgAyAEayIHQQAgAyAHTxsiByAGIAdJGyIGIAJBAWsiCSAGIAlJGyIJQQFqIgZBEUkgAUEPTXINCCAGQQ9xIgBBECAAGyIAIAlBf3NqIQlBACABayEKIAQgBWohASAGIABrIQADQCABIAEgCmr9AAAA/QsAACABQRBqIQEgCUEQaiIJDQALDAgLIARBAWsiACADTw0EIAMgBEkNBSACIAMgBGsiAUsNBiACRQ0IIAQgBWogACAFai0AACAC/AsADAgLQfCFyABBCUH8hcgAEJQIAAtBACABIANBqKPHABCgBQALIAAgASADQbijxwAQoAUAC0HTo8cAQStB4IXIABCTCAALIAAgA0GQhcgAEPAHAAsgBCADIANBsIXIABCgBQALQQAgAiABQaCFyAAQoAUACyAFIAhqIQEgBCAFaiEFA0AgACAIaiIGIANPDQIgACAHRg0DIAAgBWogACABai0AADoAACAAQQFqIgAgAkcNAAsLDwsgBiADQcCFyAAQ8AcACyAAIARqIANB0IXIABDwBwALowUBCH8CQAJAAkACQAJAAkACQCABIAIgAyAEIAUgBhDgAwRAIAUgBkEBdCIIayIBIARPDQIgBSAGayICIARPDQMgAEH/AXEiDCABIANqIgotAAAiASACIANqIgstAAAiAmsiByAHQR91IgdzIAdrSQ0GIAUgBmoiByAETw0EIAQgBU0NBSAMIAMgB2oiDS0AACIHIAMg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CyADIARJDQEgAkEBayECIAFB/wFxIQEDQEEAIARFDQQaIAIgBGohAyAEQQFrIQQgASADLQAARw0ACwwCCyAGIAMgA0HwksIAEKAFAAtBACAEIANB4JLCABCgBQALQQELIQUgACAENgIEIAAgBTYCAAvbAgIGfwJ+IwBBEGsiBCQAIAEoAgAhBgJAAkACQAJAIAEoAggiAyABKAIEIgJJBEAgAyAGai0AAEHfAEYNAQsgAyACIAIgA0kbIQcCQANAIAMgB0YNBAJAAkAgAyAGai0AACICQd8ARwRAIAJBMGsiBUH/AXFBCkkNAiACQeEAa0H/AXFBGkkNASACQcEAa0H/AXFBGk8NByACQR1rIQUMAgtBASECIAEgA0EBajYCCCAIQn9SBEAgACAIQgF8NwMIDAYLIABBADoAAQwHCyACQdcAayEFCyABIANBAWoiAzYCCCAEIAhCPhD8BiAEKQMIQgBSDQEgBCkDACIJIAWtQv8Bg3wiCCAJWg0ACyAAQQA6AAFBASECDAQLIABBADoAAUEBIQIMAwsgAEIANwMIIAEgA0EBajYCCAtBACECDAELIABBADoAAUEBIQILIAAgAjoAACAEQRBqJAAL6QICBH4DfwJAAkACQCABQdgAaiACELYEIgIEQCACKQMIIgUgAikDACIEfSIHIAOtVgRAIABBGjoAAA8LIAenIgJBAEgNAUEBIQMCQCAEIAVRIgkNACACEG4iA0UNAyADQQRrLQAAQQNxRSACRXINACADQQAgAvwLAAsgASgCTCIIrSEGIAIgCEL/////DyAEIARC/////w9aG6drIgpBACAIIApPG00EQCABKAJIIAQgBiAEIAZUG6dqIQgCQCAHQgFSBEAgAkUNASADIAggAvwKAAAMAQsgAyAILQAAOgAACyABIAU3A1AMBAsgASAFIAZB4JXHACkDACIEQv8Bg0IEUSIBGzcDUCABDQMgACAENwIEIABBADoAACAJRQRAIAMgAkEBEMEHCw8LIABBHToAACAAQYCAgIB4NgIEDwsQmAoAC0EBIAIQmgkACyAAIAI2AgwgACADNgIIIAAgAjYCBCAAQR06AAALhQMCA30Cf0MAABBBIAEqAgwgAS0AHEECRiIGGyEFQwAAQMEgASoCCCAGGyEEQQAhAUEAIQYgAv0fACIDQwAAAABfRQRAQf8BQwAA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AmogBCkASTcAAA8LQQBBAEHAj8QAEPAHAAtBAEEIIAFBAWtB0I/EABCgBQALIAAgAyADQfCPxAAQoAUAC0EAQQggAUHgj8QAEKAFAAu3AQIDfwR+IAEoAgQiAq0hBQJAAkAgAkL/////DyABKQMIIgYgBkL/////D1obp2siBEEAIAIgBE8bQQJPBEAgASgCACAGIAUgBSAGVhunai8AACEDQQQhAgwBC0HglccAKQMAIghCCIghByAIpyECIAhC/wGDQgRSDQELIAZCAnwhBQsgASAFNwMIIAJB/wFxQQRHBEAgACACrUL/AYMgB0IIhoQ3AgAPCyAAQQQ6AAAgACADOwECC7cBAgR+BH9BBCEGIAEoAgQiCK0hAgJAAkAgCEL/////DyABKQMIIgMgA0L/////D1obp2siCUEAIAggCU8bQQRPBEAgASgCACADIAIgAiADVhunaigAACEHDAELQeCVxwApAwAiBUIIiCEEIAWnIQYgBUL/AYNCBFINAQsgA0IEfCECCyABIAI3AwggBkH/AXFBBEcEQCAAIAatQv8BgyAEQgiGhDcCAA8LIABBBDoAACAAIAc2AgQL5AECAn8BfiMAQTBrIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQQA2AiwgAkKAgICAEDcCJCACQSRqQaiBxwAgAygCACIDKAIAIAMoAgQQzgMaIAIgAigCLCIDNgIgIAIgAikCJCIENwMYIAEgAzYCCCABIAQ3AgALIAEoAgghAyABQQA2AgggASkCACEEIAFCgICAgBA3AgAgAiADNgIQIAIgBDcDCEEMEG4iAUUEQEEMELEKAAsgASACKAIQNgIIIAEgAikDCDcCACAAQeiOxwA2AgQgACABNgIAIAJBMGokAAu1AQECfyAAQf//AXFFBEAgAEEQdL4PCyAAQf8HcSEBIABBgIACcSECIABBgPgBcSIAQYD4AUYEQCACQRB0IQAgAUUEQCAAQYCAgPwHcr4PCyAAIAFBDXRyQYCAgP4Hcr4PCyACQRB0IQIgAARAIABBDXRBgICA/ABxIAFBDXRyQYCAgMADaiACcr4PCyACQYCAgNgDciABZ0EQayIAQRd0ayABIABB//8DcUEIanRB////A3FyvgvXAQEEfyMAQTBrIgIkACACIAEpA0A3AyggAiAB/QADMP0LAxggAiAB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KAIAQQFrDgMCAgEACyACIABBBGo2AgQgAiACQQRqrUKAgICAsA2ENwMIIAEoAgAgASgCBEHn78AAIAJBCGoQzgMMAgsgASgCAEGpuMUAQQEgASgCBCgCDBEAAAwBCyACIABBBGo2AgQgAiACQQRqrUKAgICAoAiENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMLIAJBEGokAAuwAQEEfyABKAIEIQICQAJAAkACQCABKAIAIgMgASgCCCIBTQ0AIAFFBEAgAkEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgA2pJDQIgBEEAIAUgA0EnaksbDQMgAhCiAkEBIQIMAQsgAiADQQEgARDAAiICRQ0DCyAAIAE2AgQgACACNgIADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQEgARCaCQALvwEBAX8jAEEQayICJAACfyAAKQMAQv///////////wCDQoCAgICAgID4/wBaBEAgAiAArUKAgICAgAWENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMMAQsgAkEAOgAEIAIgATYCACACIACtQoCAgICABYQ3AwgCQCACQcinxQBBlJvAACACQQhqEM4DDQAgAi0ABEUEQCABKAIAQeCnxQBBAiABKAIEKAIMEQAADQELQQAMAQtBAQsgAkEQaiQAC5ABAgV/AX4gAEEIaiECIAAgAUEDdGohBgNAIAIoAgAiBSACQQhrKAIASQRAIAI1AgQhByADIQECfwNAIAAgAWoiBEEIaiAEKQIANwIAIAAgAUUNARogBSABQQhrIgEgAGoiBCgCAEkNAAsgBEEIagsgBa0gB0IghoQ3AgALIANBCGohAyACQQhqIgIgBkcNAAsLrgEBA38jAEEQayIDJAACQAJAAkACQCAARSABRXINACAAKAIAIgBFDQAgAEHB////B08NASABQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAAakkNAiACQQAgBCAAQSdqSxsNAyABEKICCyADQRBqJAAPC0HQ7ccAQSsgA0EPakG0isgAQcSKyAAQwgcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuZAQICfwR+AkACQCABKAIEIgIgASkDCCIFIAKtIgQgBCAFVhunIgJHBEAgASgCACACai0A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AUEEaygCACICQXhxQSRBKCACQQNxIgQbSQ0BIARBACACQcgATxsNAiABEKICIABBuMLGADYCBCAAIAM2AgAPC0EEELEKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALiAEBA38gACgCBCICKAIAIgEEQCAAKAIAIAERAwALAkACQCACKAIEIgIEQCAAKAIAIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALhAEBAn8gACAAKAIAIgNBCHYgAyABIAAoAggiA0EDciICQf7/A3EgAmxBgP4DcUEIdnMiAXNB/wFxQQJ0KALwxEdzIgI2AgAgACAAKAIEIAJB/wFxakGFiKLAAGxBAWoiAjYCBCAAIANB/wFxIAJBGHZzQQJ0KALwxEcgA0EIdnM2AgggAQuCAQECfwJAAkAgAUH/////A0sNACABQQJ0IgJB/f///wdPDQACfyACRQRAQQQhA0EADAELIAIQbiIDRQ0CIANBBGstAABBA3FFIAJFckUEQCADQQAgAvwLAAsgAQshAiAAIAE2AgggACADNgIEIAAgAjYCAA8LEJgKAAtBBCACEJoJAAt5AgF/AX4jAEEgayICJAACfyAAKAIAIgAoAgxFBEAgACABEPQDDAELIAJCgICAgBAiAyAAQRBqrYQ3AxggAiADIABBDGqthDcDECACIACtQoCAgIDAA4Q3AwggASgCACABKAIEQbSHwAAgAkEIahDOAwsgAkEgaiQAC38BBH8gAEEEahCIAwJAAkAgACgCHCICBEAgACgCICIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAQShqEPwEDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALYgEEfiAAIAJC/////w+DIgMgAUL/////D4MiBH4iBSAEIAJCIIgiAn4iBCADIAFCIIgiBn58IgFCIIZ8IgM3AwAgACADIAVUrSACIAZ+IAEgBFStQiCGIAFCIIiEfHw3AwgLwwIBA38jAEEQayIBJABBvL/IAC0AAEEDRwRAIAFBAToADiABQQ5qIQAC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ACgCACICBEAgACgCBCIAQQRrKAIAIgFBeHEiA0EEQQggAUEDcSIBGyACakkNASABQQAgAyACQSdqSxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC28BAX8jAEEQayIFJAAgAUUEQEGcocQAQTIQ3QoACyAFQQhqIAEgAyAEIAIoAhARBgAgACAFKAIIIgJBAkYiATYCCCAAIAUoAgwiA0EAIAEbNgIEIABBACADQYAIIAJBAXEbIAEbNgIAIAVBEGokAAtoAQF/IwBBIGsiAiQAIAIgACgCACgCACIANgIIIAIgAGg2AgwgAiACQQxqrUKAgICAgA+ENwMYIAIgAkEIaq1CgICAgJAPhDcDECABKAIAIAEoAgRBlvnAACACQRBqEM4DIAJBIGokAAt9AwF/AX4BfCMAQRBrIgMkAAJAAkACQAJAIAAoAgBBAWsOAgECAAsgACsDCCEFIANBAzoAACADIAU5AwgMAgsgACkDCCEEIANBAToAACADIAQ3AwgMAQsgACkDCCEEIANBAjoAACADIAQ3AwgLIAMgASACELIHIANBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQRgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQwQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQQQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgC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BEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALQwEBfyMAQRBrIgIkACACQQhqIAEoAggiASABKAIAKAIEEQEAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAtKAQF/QSgQbiICRQRAQSgQsQoACyACQaimwQA2AgAgAiABKQIANwIEIAIgAf0AAgj9CwIMIAIgACkCADcCHCACIAAoAgg2AiQgAgulDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchBEEAIQMjAEGAAWsiACQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIFGyIKQgGDIQ1BAiECAkACQAJAAkACQCAMUCIGQQJBAyAGG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyECDAMLQQQhAgwCCyAFQbMIayEDIA1QIQJCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiAxshCkICQgEgAxshCyANUCECQct3Qcx3IAMbIAVqIQMLIAAgAzsBeCAAIAs3A3AgAEIBNwNoIAAgCjcDYCAAIAI6AHoCfwJAAkACQAJAIAJB/wFxQQFNBEBB2snEAEEBIAlCAFMiAhshA0HaycQAQcSNwgAgAhshAiAJQj+IpyEFIABBIGogAEHgAGogAEEPahDVASAAKAIgRQ0BIAAgACgCKDYCWCAAIAApAiA3A1AMAgsgAkECayIFQf8BcUUNAkEBIQJB2snEAEHEjcIAIAlCAFMiAxtB2snEAEEBIAMbIAQbIQMgCUI/iKcgBHIhBCAAQQI7ASAgBUH/AXFBAkYNAyAAQQM2AiggAEGYssUANgIkIABBIGoMBAsgAEHQAGogAEHgAGogAEEPahBdCyACIAMgBBshAyAEIAVyIQQgACAAKAJQIAAoAlQgAC8BWEEAIABBIGoQhwUgACgCBCECIAAoAgAMAgsgAEEDNgIoIABBn7LFADYCJCAAQQI7ASBBASEDQQAhBEEBIQIgAEEgagwBCyAAQQE2AiggAEGoysQANgIkIABBIGoLIQUgACACNgJcIAAgBTYCWCAAIAQ2AlQgACADNgJQIAEgAEHQAGoQyQMgAEGAAWokAA8LIAJBAEchBSABLwEOIQAjAEHwCGsiAiQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIGGyIKQgGDIQ1BAiEDAkACQAJAAkACQCAMUCIHQQJBAyAHG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyEDDAMLQQQhAwwCCyAGQbMIayEEIA1QIQNCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiBBshCkICQgEgBBshCyANUCEDQct3Qcx3IAQbIAZqIQQLIAIgBDsB6AggAiALNwPgCCACQgE3A9gIIAIgCjcD0AggAiADOgDqCAJ/AkAgA0H/AXFBAU0EQEF0QQUgBMEiA0EASBsgA2wiA0HA/QBJDQFByo3CAEElQfCNwgAQqAkACwJAAkAgA0ECayIGQf8BcQRAQQEhA0HaycQAQcSNwgAgCUIAUyIEG0HaycQAQQEgBBsgBRshBCAJQj+IpyAFciEFIAZB/wFxQQJHDQEgAkECOwGQCCAADQIgAkEBNgKYCCACQajKxAA2ApQIIAJBkAhqDAQLIAJBAzYCmAggAkGfssUANgKUCCACQQI7AZAIQQEhBEEAIQVBASEDIAJBkAhqDAMLIAJBAzYCmAggAkGYssUANgKUCCACQQI7AZAIIAJBkAhqDAILIAIgADYCoAggAkEAOwGcCEECIQMgAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqDAELQdrJxABBASAJQgBTIgYbIQdB2snEAEHEjcIAIAYbIAlCP4inIQggAkGQCGogCiAEIAJBEGogA0EEdkEVaiIEQYCAfkEAIABrIADBQQBIGyIDEO8CIAPBIQMCQCACKAKQCARAIAIgAigCmAg2AsgIIAIgAikCkAg3A8AIDAELIAJBwAhqIAJB0AhqIAJBEGogBCADEGYLIAcgBRshBCAFIAhyIQUgAyACLgHICCIGSARAIAJBCGogAigCwAggAigCxAggBiAAIAJBkAhqEIcFIAIoAgwhAyACKAIIDAELQQIhAyACQQI7AZAIIABFBEBBASEDIAJBATYCmAggAkGoysQANgKUCCACQZAIagwBCyACIAA2AqAIIAJBADsBnAggAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqCyEAIAIgAzYCzAggAiAANgLICCACIAU2AsQIIAIgBDYCwAggASACQcAIahDJAyACQfAIaiQAC0sAIAAoAgBBgICAgHhHBEAgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAA8LIAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBDOAwuFAQECfyMAQTBrIgEkACABEJsJIAFBIjYCHCABQZTvwQA2AhggASAA/QACAP0LAiAgAUEYaiECQTQQbiIARQRAQTQQsQoACyAAQYymwQA2AgAgACABKQIANwIEIAAgAf0AAgj9CwIMIAAgAikCADcCHCAAIAL9AAII/QsCJCABQTBqJAAgAAvEAgEIfyMAQRBrIgQkACAEQQhqIQcgACgCACEBIwBBEGsiAyQAIANBBGohAiAAKAIEIQgCQAJAQQQgAUEBaiIBIAAoAgAiBUEBdCIGIAEgBksbIgEgAUEETRsiBiIBQf////8ASw0AIAFBBHQiAUH8////B0sNAAJ/IAUEQCAIIAVBBHRBBCABEMACDAELIAEQbgsiBUUEQCACIAE2AgggAkEENgIEIAJBATYCAAwCCyACIAE2AgggAiAFNgIEIAJBADYCAAwBCyACQQA2AgQgAkEBNgIACwJ/IAMoAgQEQCADKAIMIQAgAygCCAwBCyADKAIIIQIgACAGNgIAIAAgAjYCBEGBgICAeAshAiAHIAA2AgQgByACNgIAIANBEGokACAEKAIIIgBBgYCAgHhHBEAgACAEKAIMEJoJAAsgBEEQaiQAC+ABAgF/AX4jAEEgayIDJAAgAyABNgIQIAMgADYCDCADQQE7ARwgAyACNgIYIAMgA0EMajYCFCMAQRBrIgEkACADQRRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIEIgNBAXEEQCACKAIAIQIgACADQQF2NgIEIAAgAjYCACAAQcCBxwAgASgCBCABKAIIIgAtAAggAC0ACRDcBQALIABBgICAgHg2AgAgACABNgIMIABB3IHHACABKAIEIAEoAggiAC0ACCAALQAJENwFAAs7AQF/IwBBEGsiAyQAIAMgATYCBCADIAA2AgAgAyADrUKAgICAwAGENwMIQZSbwAAgA0EIaiACEJMIAAtBAAJAIAAoAiQiACgCBEEDRwRAIABBBGohAAwBCyAAIAAoAgAoAhgRBAAiAA0AQfj8wQBBGEGQ/cEAEJQIAAsgAAv8QwImfwJ+IAAoAsQBIgJBBE8EQCAAKALAASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGoxAABC7gCFhEIAUg0TIAohAAJAA0AgAUEvIAwgABD2BEEBIR8gASgCAEEBRwRAQQAhBgwCCwJAIAogASgCBCIASwRAIAAgDGotAABBL0YNAQtBACEGIAAgCk0NAQwCCwsgASAANgLsBCABIAw2AugEIAEgAUHoBGqtQoCAgIAghDcDeCABQfACakHt78AAIAFB+ABqEOAEIAEoAvACIR4gASgC9AIhHyABKAL4AiEGCyABQfACaiABQRhqIAwgChDhBCABIAEpA/gCNwNQIAEgASgCgAM2AlgCQCABKQPwAiInQgNRBEAgAUHQAGoQvwghAAwBCyABQYwBaiABQYQDakG0AfwKAAAgASAnNwN4IAEgASkDUDcDgAEgASABKAJYNgKIASAB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EMEHCyABKALECCICBEAgASgCyAggAkEBEMEHCyABKALIByICQYCAgIB4RyAEcUUNACACBEAgASgCzAcgAkEBEMEHCyABKALUByICRQ0AIAEoAtgHIAJBARDBBwsgAUHoBGoQ/AMgASgCXCICBEAgASgCYCACQQEQwQcLICAEQCAhICBBARDBBwsgHgRAIB8gHkEBEMEHCyALIApBARDBByABKAIoIgIgAigCACICQQFrNgIAIAJBAUcNByABKAIoEP0CDAcLIAtBBGsoAgAiBUF4cSIIQQRBCCAFQQNxIgUbIApqSQ0EIAVBACAIIApBJ2pLGw0FIAsQogILIAYgAkEBaiICRw0ACwtBtu/BAEEfELQIIQALIAEoAigiAiACKAIAIgJBAWs2AgAgAkEBRw0CIAEoAigQ/QIMAgtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAFBkApqJAAgAA8LQZjPwQBBExC0CA8LQavPwQBBExC0CAv8QwImfwJ+IAAoAoACIgJBBE8EQCAAKAL8ASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGox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KALEBSACQQEQwQcLIAEoAswFIgIEQCABKALQBSACQQEQwQcLIAEoAtgFIgJFDQ4gASgC3AUgAkECdEEEEMEHDA4LIAFBADoA+AIgASAGNgL0AiABIAI2AvACIAkgAUHwAmoiCBCrAyAIIAFBjAVqIAEoAvwGIAEoAoAHENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYNACAIIAAgASgC+AIQQSABKAL0AiENIAEoAvACIg5BgICAgHhGBEAgAUEDNgLwAiABIA02AoAKIAFBDzYC/AkgAUHy8cEANgL4CSABQfgJaiAIEI4IIQIgA0UEQCACIQAMAgsgACADQQEQwQcgAiEADAELIAEoAvgCIQggAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKAKIByABKAKMBxDQBCABKAL0AiEAIAEoAvACIgNBgICAgHhGBEBBASEFQQEhBAwLCyABQfACaiILIAAgASgC+AIQQSABKAL0AiEPIAEoAvACIhBBgICAgHhGBEAgAUEDNgLwAiABIA82AoAKIAFBDzYC/AkgAUGB8sEANgL4CSABQfgJaiALEI4IIQJBASEFIANFDQogACADQQEQwQcMCgsgASgC+AIhCyADBEAgACADQQEQwQcLIAFB8AJqIAFBjAVqIAEoAqQIIAEoAqgIENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYEQEEBIQVBASEEDAkLIAFB8AJqIhkgACABKAL4AhBBIAEoAvQCIREgASgC8AIiEkGAgICAeEYEQCABQQM2AvACIAEgETYCgAogAUENNgL8CSABQZDywQA2AvgJIAFB+AlqIBkQjgghAkEBIQUgA0UNCCAAIANBARDBBwwICyABKAL4AiEZIAMEQCAAIANBARDBBwsgAUHwAmogAUGMBWogASgCtAcgASgCuAcQ0AQgASgC9AIhACABKALwAiIDQYCAgIB4RgRAQQEhBUEBIQQMBwsgAUHwAmoiGiAAIAEoAvgCEEEgASgC9AIhEyABKALwAiIUQYCAgIB4RgRAIAFBAzYC8AIgASATNgKACiABQQw2AvwJIAFBnfLBADYC+AkgAUH4CWogGhCOCCECQQEhBSADRQ0GIAAgA0EBEMEHDAYLIAEoAvgCIRogAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKALICCABKALM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CyUAIABBsJzBADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALKAAgASgCACAALQAAQQJ0IgAoAoiMSCAAKALgi0ggASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCoI1IIAAoAuiMSCABKAIEKAIMEQAACyEAIABB0PvDADYCBCAAIAFBBGpBACABLQAAQSRGGzYCAAsoACABKAIAIAAtAABBAnQiACgCrJJIIAAoApCSSCABKAIEKAIMEQAACygAIAEoAgAgAC0AAEECdCIAKAKQlEggACgCyJNIIAEoAgQoAgwRAAALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARCwALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARBgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbQALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbwALKAAgASgCACAALQAAQQJ0IgAoAqihSCAAKALgoEggASgCBCgCDBEAAAsiACABKAIoQQJHBEAgACABKQLcAjcDAA8LQdivxgAQmQoACyUAIABBjLnGADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALJwAgACgCAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCygAIAEoAgAgAC0AAEECdCIAKAKss0ggACgChLJIIAEoAgQoAgwRAAALJAAgAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCyEAIABFBEBBnKHEAEEyEN0KAAsgACACIAMgASgCEBEFAAshACAARQRAQZyhxABBMhDdCgALIAAgAiADIAEoAhARAAALHAAgACgCACIAQQRqKAIAIABBCGooAgAgARDBAgshACABKAIAIAAtAABBAnQoAtSLSEEBIAEoAgQoAgwRAAALIgAgASAALQAAQQJ0IgAoAuiPSCAAKALIj0ggAigCDBEAAAseACAAQdD7wwA2AgQgAEEAIAFBBGogAS0AABs2AgALHAAgASAAKAIAIgBBBGooAgAgAEEIaigCABCuAwsfACAARQRAQZyhxABBMhDdCgALIAAgAiAB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//sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEDaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRBqKAIAIgNB////+wdNBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQRqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBFGooAgAiA0H////7B00EQEHEvcgAKAIAIANBf3MiA0H//wNxQQJ0IgVBrL3IACgCAGooAgBBA3RqIABBBWqsIAOtQiCGhDcDAEGsvcgAKAIAIAVqIgMgAygCAEEBajYCAAsgBEEYaigCACIDQf////sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEGaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRxqKAIAIgNBgICA/AdJBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQdqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBIGohBCAAQQhqIgAgD0cNAAsMBAtBACALIABB8MPBABCgBQALQQAgCUEYaiAJQTBqQQAgAEHQocQAEKAIAAtBACALIARBqMDBABCgBQALQZSRwQAQtggACyALBEADQCAIKAIAIgRBgICA/AdJBEBBxL3IACgCACAEQX9zIgRB//8DcUECdCIDQay9yAAoAgBqKAIAQQN0aiAArCAErUIghoQ3AwBBrL3IACgCACADaiIEIAQoAgBBAWo2AgALIAhBBGohCCAAQQFqIQAgC0EEayILDQALCwJAAkACQAJAAkBByL3IACgCACIAIAZPBEBBxL3IACgCACELIAZB+P///wBxIggEQEEAIAhrIQAgCyEEA0BBoL3IACgCACAEKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiIDIAMoAgBBAWo2AgBBoL3IACgCACAEQQhqKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiID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AEEBayIANgIAIABFBEAgAhD/BgsMAwsQ3AoLAAsQ3goACwsRACABIAAoAgQgACgCCBCuAwsRACABIAAoAgAgACgCBBCuAwsTACAAQSg2AgQgAEH4tMYANgIACxMAIABBlKHBADYCBCAAIAE2AgALEwAgAEHQocEANgIEIAAgATYCAAsTACAAQYyiwQA2AgQgACABNgIACxMAIABByKLBADYCBCAAIAE2AgALEwAgAEGEo8EANgIEIAAgATYCAAsTACAAQcCjwQA2AgQgACABNgIACxMAIABB/KPBADYCBCAAIAE2AgALEwAgAEG4pMEANgIEIAAgATYCAAsRACAAKAIEIAAoAgggARDBAgscACAAQZi7z+wDNgIIIABC0Ofm8pPrxZs/NwIACxEAIAAoAgAgACgCBCABEMECCxMAIABB5MTGADYCBCAAIAE2AgALEwAgAEHUxsYANgIEIAAgATYCAAsTACAAQdzFxgA2AgQgACABNgIACxMAIABBmMbGADYCBCAAIAE2AgALEwAgAEGoxMYANgIEIAAgATYCAAsTACAAQaDFxgA2AgQgACABNgIACxMAIABB7MPGADYCBCAAIAE2AgALEwAgAEH8jMcANgIEIAAgATYCAAsWAEGUxMgAIAA2AgBBkMTIAEEBOgAACxEBAX8QnwUiASAAJQEmASABCw4AIAAlASABJQFBABAZCxIAQYipxgBBI0HQ+sEAEJMIAAsPAEGwkMIAQSsgABCoCQALEAAgAEHYmcEAIAEgAhDOAwsQACAAQcidwQAgASACEM4DCxMAQZCswgBBmQFB3KzCABCTCAALDwBB1J7CAEEzIAAQkwgACxAAIABBgPvBACABIAIQzgMLEAAgAEG4+8EAIAEgAhDOAwsQACAAQaz8wQAgASACEM4DCxAAIABBrP3BACABIAIQzgMLEAAgAEGIj8IAIAEgAhDOAwsQAEHtnsIAQfMAIAAQkwgACxAAIABB1OnDACABIAIQzgMLEAAgAEGsz8QAIAEgAhDOAwsQACAAQcinxQAgASACEM4DCxAAIABBpLLFACABIAIQzgMLEgAgACABLQDoBC0AsKZIOgAACxAAIABB4L/GACABIAIQzgMLEAAgAEGogccAIAEgAhDOAwsMACAAJQEgASACEAQLDQAgACUBIAElARAHGgsMACAAIAEgAiUBEBEL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IG5lZWQgYXQgbGVhc3QgwAAJRXhwZWN0ZWQgwBcgYWN0aXZlIHNwbGF0cyBidXQgZ290IMAACUV4cGVjdGVkIMANIHNwbGF0cywgZ290IMAACUV4cGVjdGVkIMARIFNIIHJlY29yZHMsIGdvdCDAAB5JbnZhbGlkIGNodW5rIGNvdW50OiBleHBlY3RlZCDABiwgZ290IMAAI1Byb3BlcnR5IG9mZnNldCBtaXNtYXRjaDogZXhwZWN0ZWQgwAYsIGdvdCDAABp3cm9uZyBkYXRhIHNpemUsIGV4cGVjdGVkIMAFIGdvdCDAABxNaXNzaW5nIFBMWSBjaHVuayBmb3Igc3BsYXQgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAFWJ5dGUgcmFuZ2Ugc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABBUaGUgZGVjb2RlciBmb3IgwCYgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIMAAEWludmFsaWQgc2l6ZSBmb3IgwADACSBhdCBsaW5lIMAIIGNvbHVtbiDAABpJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIMAAEXN0YXJ0IGJ5dGUgaW5kZXggwCcgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc3RyaW5nIG9mIGxlbmd0aCDAAA9lbmQgYnl0ZSBpbmRleCDAJyBpcyBvdXQgb2YgYm91bmRzIGZvciBzdHJpbmcgb2YgbGVuZ3RoIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAAdzdHJpbmcgwAAWRm9ybWF0IGVycm9yIGVuY29kaW5nIMAAFkZvcm1hdCBlcnJvciBkZWNvZGluZyDAABJVbmV4cGVjdGVkIGVuZCBvZiDAADBUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSDAABBUaGUgY29sb3Igc3BhY2UgwB0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIMAAEXVua25vd24gdmFyaWFudCBgwAxgLCBleHBlY3RlZCDAAA9pbnZhbGlkIGxlbmd0aCDACywgZXhwZWN0ZWQgwAAPaW52YWxpZCB2YWx1ZTogwAssIGV4cGVjdGVkIMAADmludmFsaWQgdHlwZTogwAssIGV4cGVjdGVkIMAAHGJhc2UgKyBjb3VudCBvdXQgb2YgYm91bmRzOiDAAyArIMADID4gwAARbWluID4gbWF4LiBtaW4gPSDACCwgbWF4ID0gwAAgb3V0cHV0IGJhdGNoIGNodW5rLCBjaHVua19yZWwgPSDAAB9JbmNvbXBsZXRlIFNQWiBzdHJlYW06IHN0YWdlID0gwA4sIHNoX2RlZ3JlZSA9IMAAGW9wYWNpdHkgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFnF1YXQgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAGGNlbnRlciBhcnJheSB0b28gc21hbGw6IMADIDwgwAAXc2NhbGUgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFXJnYiBhcnJheSB0b28gc21hbGw6IMADIDwgwAAMUm9vdCBpbmRleDogwAAGUm9vdDogwAAQYXNzZXJ0aW9uIGBsZWZ0IMAXIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiDACQogcmlnaHQ6IMAAEGFzc2VydGlvbiBgbGVmdCDAECByaWdodGAgZmFpbGVkOiDACQogIGxlZnQ6IMAJCiByaWdodDogwAAYVW5zdXBwb3J0ZWQgUExZIGZvcm1hdDogwAAMUm9vdCBzcGxhdDogwAAlQXZlcmFnZSBjaGlsZHJlbiBwZXIgaW50ZXJpb3Igc3BsYXQ6IMAAGkludmFsaWQgY29sb3IgY2FjaGUgYml0czogwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAwsICMgYWN0aXZlOiDADCwgIyBzcGxhdHM6IMAAJUludmFsaWQgbnVtYmVyIG9mIGZfcmVzdCBwcm9wZXJ0aWVzOiDAABNMb0QgZ3Jvd3RoIGZhY3RvcjogwAALaS9vIGVycm9yOiDAAApJTyBFcnJvcjogwAATSW52YWxpZCBwYXJhbWV0ZXI6IMAAIUludmFsaWQgbG9zc2xlc3MgdmVyc2lvbiBudW1iZXI6IMAAH1Vuc3VwcG9ydGVkIFJBRCBjaHVuayB2ZXJzaW9uOiDAABlVbnN1cHBvcnRlZCBTUFogdmVyc2lvbjogwAAZVW5zdXBwb3J0ZWQgUExZIHZlcnNpb246IMAAGVVuc3VwcG9ydGVkIFJBRCB2ZXJzaW9uOiDAABBSb290ICNjaGlsZHJlbjogwAAPdW5rbm93biB0b2tlbjogwAAdVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiDAABRDaHVuayBsZW5ndGggd3Jvbmc6IMAAIlVuc3VwcG9ydGVkIGNoaWxkIHN0YXJ0IGVuY29kaW5nOiDAACJVbnN1cHBvcnRlZCBjaGlsZCBjb3VudCBlbmNvZGluZzogwAAdVW5zdXBwb3J0ZWQgc2NhbGVzIGVuY29kaW5nOiDAAB1VbnN1cHBvcnRlZCBjZW50ZXIgZW5jb2Rpbmc6IMAAIlVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIGVuY29kaW5nOiDAAB9VbnN1cHBvcnRlZCBzaCBsYWJlbCBlbmNvZGluZzogwAAcVW5zdXBwb3J0ZWQgbGFiZWwgZW5jb2Rpbmc6IMAAGVVuc3VwcG9ydGVkIHNoIGVuY29kaW5nOiDAABpVbnN1cHBvcnRlZCByZ2IgZW5jb2Rpbmc6IMAAHFVuc3VwcG9ydGVkIGFscGhhIGVuY29kaW5nOiDAAA9Tb3J0ZWQgYWN0aXZlOiDAABVpbnZhbGlkIFppcCBhcmNoaXZlOiDAABl1bnN1cHBvcnRlZCBaaXAgYXJjaGl2ZTogwAAVVW5zdXBwb3J0ZWQgZmVhdHVyZTogwAAfVW5zdXBwb3J0ZWQgUExZIHByb3BlcnR5IHR5cGU6IMAAE0ludmFsaWQgZmlsZSB0eXBlOiDAABdJbnZhbGlkIHByb3BlcnR5IGxpbmU6IMAAHVVuc3VwcG9ydGVkIFBMWSBoZWFkZXIgbGluZTogwAATSW52YWxpZCBTSCBkZWdyZWU6IMAAI0ludmFsaWQgVlA4IGludHJhIHByZWRpY3Rpb24gbW9kZTogwAAiSW52YWxpZCBWUDggbHVtYSBwcmVkaWN0aW9uIG1vZGU6IMAAJEludmFsaWQgVlA4IGNocm9tYSBwcmVkaWN0aW9uIG1vZGU6IMAAGUludmFsaWQgVlA4IGNvbG9yIHNwYWNlOiDAABxUaGUgcGFyYW1ldGVyIGlzIG1hbGZvcm1lZDogwAAWRGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAC2xldmVsX21pbjogwBMsIGZlYXR1cmVfc2l6ZVswXTogwAATZmFpbGVkIHByaW50aW5nIHRvIMACOiDAABZGb3JtYXQgZXJyb3IgZGVjb2RpbmcgwAI6IMAADE91dHB1dCBzZXQ6IMADIC8gwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAAITWVyZ2VkOiDAAyAvIMAAFkZvcm1hdCBlcnJvciBlbmNvZGluZyDAAjoKwAABCsAAaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0AGludmFsaWQgY29kZSBsZW5ndGhzIHNldAB1bmtub3duIGhlYWRlciBmbGFncyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0ABNUaGUgZmlsZSBleHRlbnNpb24gwCYgd2FzIG5vdCByZWNvZ25pemVkIGFzIGFuIGltYWdlIGZvcm1hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AHNwYXJrLWxpYi9zcmMvc3B6LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAHNwYXJrLWxpYi9zcmMvcGx5LnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI3L3NyYy9sZWdhY3kucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL3N0ZXBfYnkucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2FsbC90d293YXkucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dpbmRvdy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZ3Jpc3UucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAc3BhcmstcnMvc3JjL3NvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2ZtdC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZGl5X2Zsb2F0LnJzAHNwYXJrLWxpYi9zcmMvdHNwbGF0LnJzAHNwYXJrLWxpYi9zcmMva3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAHNwYXJrLWxpYi9zcmMvZ3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvY3NwbGF0LnJzAHNwYXJrLXJzL3NyYy9leHRfc3BsYXRzLnJzAHNwYXJrLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9kZWNvbXByZXNzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2xvc3NsZXNzLnJzAHNwYXJrLWxpYi9zcmMvc29ncy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvdGhyZWFkX2xvY2FsL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL3J3bG9jay9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2Vycm9yLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29sb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2dlbmVyaWMvcGFja2VkcGFpci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21lbWNoci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dyaXRlci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMy4wL3NyYy9pbm5lci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdW5maWx0ZXJpbmdfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLTAuMjUuMTAvc3JjL2ltYWdlcy9idWZmZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4X2FyaXRobWV0aWNfZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3Mvd2VicC9kZWNvZGVyLnJzAHNwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9kZWNvZGVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC9tYWdpY19maW5kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9jb21tb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2h1ZmZtYW4ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2JpZ251bS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL2J1ZmZlcmVkL2xpbmV3cml0ZXJzaGltLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvc3RyZWFtLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL3JlZW50cmFudF9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2VfbG9jay5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTE3L3NyYy9leHRlcm5yZWYucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0vcGFsZXR0ZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2FsbG9jYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL2NvcmUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvc3RhYmxlLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9jaHVua190cmVlLnJzAHNwYXJrLXJzL3NyYy9sb2RfdHJlZS5ycwBzcGFyay1saWIvc3JjL3NwbGF0X2VuY29kZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL2JzdHIvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9tb2QucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9mbHQyZGVjL21vZC5ycwBzcGFyay1saWIvc3JjL3RpbnlfbG9kLnJzAHNwYXJrLWxpYi9zcmMvYmhhdHRfbG9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvaWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvZXh0ZW5kZWQucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci96bGliLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjk0L3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hbGx2ZWMtMS4xNS4xL3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDgucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcDQzNy5ycwBzcGFyay1saWIvc3JjL3N5bW1hdDMucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcmMzMi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNy9zcmMvdjAucnMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAJVGhlIENJQ1AgwB8gY2FuIG5vdCBiZSB1c2VkIGZvciBSR0IgaW1hZ2VzAMAsIGNhbid0IGJlIHJlcHJlc2VudGVkIGFzIGEgSmF2YVNjcmlwdCBudW1iZXIADU1pc3NpbmcgZmlsZSDADCBpbiBTT0dTIHppcADAECBlbGVtZW50cyBpbiBtYXAAPWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFVucmVjb2duaXplZCBjaHVuayDAJyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBpbiBzdGFydF9jaHVuawDAISBjaHVuayBhcHBlYXJlZCBiZWZvcmUgSUhEUiBjaHVuawBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW52YWxpZCB3aW5kb3cgc2l6ZQByZXBlYXRlZCBjYWxsIHdpdGggYmFkIHN0YXRlAGludmFsaWQgYmxvY2sgdHlwZQANTWlzc2luZyBmaWxlIMAJIGluIGNhY2hlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAwBUgZWxlbWVudHMgaW4gc2VxdWVuY2UAFlVuZXhwZWN0ZWQgcmVzdGFydCBvZiDADyBjaHVuayBzZXF1ZW5jZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZAA5aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc3RyOjpmcm9tX3V0ZjgowAQpID0gwCIgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgwBEgY2hhcnMgd2VyZSBmb3VuZAAoQ29udmVydGluZyB3aXRoIHRoZSB0ZXhlbCBtZW1vcnkgbGF5b3V0IMARIGlzIG5vdCBzdXBwb3J0ZWQAEVRoZSBpbWFnZSBmb3JtYXQgwBEgaXMgbm90IHN1cHBvcnRlZAAQZmxvYXRpbmcgcG9pbnQgYMABYABMVGhlIGNvbG9yaW1ldHJpYyBpbnRlcnByZXRhdGlvbiBvZiBhIENJQ1AgY29sb3Igc3BhY2UgaXMgbm90IHN1cHBvcnRlZCBmb3IgYMABYAABYMAGYCBvciBgwAFgAAtjaGFyYWN0ZXIgYMABYAAJaW50ZWdlciBgwAFgAAlib29sZWFuIGDAAWAAG1RoZSBlbmNvZGVyIG9yIGRlY29kZXIgZm9yIMAiIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbG9yIHR5cGUgYMABYAAPbWlzc2luZyBmaWVsZCBgwAFgABFkdXBsaWNhdGUgZmllbGQgYMABYAABYMABYAACYC7AAWAAAVvAAV0AwAEvAAZDaHVuayDAKiBtdXN0IGFwcGVhciBiZXR3ZWVuIFBMVEUgYW5kIElEQVQgY2h1bmtzLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBQTFRFIGNodW5rLgAGQ2h1bmsgwB4gaXMgaW52YWxpZCBiZWZvcmUgUExURSBjaHVuay4AFkNSQyBlcnJvcjogZXhwZWN0ZWQgMHjACCBoYXZlIDB4wBAgd2hpbGUgZGVjb2RpbmcgwAcgY2h1bmsuACVUaGUgc2l6ZSBvZiB0aGUgc0JJVCBjaHVuayBzaG91bGQgYmUgwA4gYnl0ZShzKSwgYnV0IMAfIGJ5dGUocykgd2VyZSBwcm92aWRlZCBmb3IgdGhlIMAMIGNvbG9yIHR5cGUuAAZDaHVuayDAGiBtdXN0IGFwcGVhciBhdCBtb3N0IG9uY2UuACRTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICPABiBnb3QgI8ABLgAjTm90IGVub3VnaCBwYWxldHRlIGVudHJpZXMsIGV4cGVjdCDABSBnb3QgwAEuAB5JbnZhbGlkIHNSR0IgcmVuZGVyaW5nIGludGVudCDAAS4AIUludmFsaWQgcGh5c2ljYWwgcGl4ZWwgc2l6ZSB1bml0IMABLgATSW52YWxpZCBkaXNwb3NlIG9wIMABLgARSW52YWxpZCBibGVuZCBvcCDAAS4AEkludmFsaWQgYml0IGRlcHRoIMABLgATSW52YWxpZCBzQklUIHZhbHVlIMA+LiBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gdGhlIHNhbXBsZSBkZXB0aCDAAS4AKFRyYW5zcGFyZW5jeSBjaHVuayBmb3VuZCBmb3IgY29sb3IgdHlwZSDAAS4AE0ludmFsaWQgY29sb3IgdHlwZSDAAS4AFlVua25vd24gZmlsdGVyIG1ldGhvZCDAAS4AG1Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kIMABLgAZVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIMABLgBJSSoAEXN0YXJ0IGJ5dGUgaW5kZXggwCYgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlIMAIIChieXRlcyDACyBvZiBzdHJpbmcpAA9lbmQgYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMALIG9mIHN0cmluZykACEpzVmFsdWUowAEpABJTSCBlbGVtZW50IGNvdW50ICjAGykgbXVzdCBtYXRjaCB2ZXJ0ZXggY291bnQgKMABKQAmY29weV9mcm9tX3NsaWNlOiBzb3VyY2Ugc2xpY2UgbGVuZ3RoICjAKykgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICjAASkAwAsgKG9zIGVycm9yIMABKQDAByAoMSA8PCDAASkAD0dzcGxhdChjZW50ZXI6IMALLCBvcGFjaXR5OiDABywgcmdiOiDACiwgc2NhbGVzOiDADiwgcXVhdGVybmlvbjogwAEpAA9Dc3BsYXQoY2VudGVyOiDACywgb3BhY2l0eTogwAcsIHJnYjogwAosIHNjYWxlczogwA4sIHF1YXRlcm5pb246IMABKQAGRXJyb3IowAgsIGxpbmU6IMAKLCBjb2x1bW46IMABKQDAAjogAAtzcGxpdCBheGlzPcAJLCBleHRlbnQ9wAgsIHNwbGl0PcAILCBhLmxlbj3ACCwgYi5sZW49wAEKABBvY3RhbnQgbGVuZ3RoczogwAEKAAAiExAAGgAAAHYAAAAgAAAAIhMQABoAAAB1AAAAIgAAACITEAAaAAAAdAAAAB4AAAAiExAAGgAAAHMAAAAmAAAAIhMQABoAAAByAAAAJAAAACITEAAaAAAAVAAAABcAAAAiExAAGgAAAFUAAAAXAAAAIhMQABoAAABWAAAAFwAAACITEAAaAAAAWAAAABYAAAAiExAAGgAAAFkAAAAWAAAAIhMQABoAAABaAAAAFgAAACITEAAaAAAAXAAAACoAAAAiExAAGgAAAFwAAAAUAAAAIhMQABoAAABdAAAAKgAAACITEAAaAAAAXQAAABQAAAAiExAAGgAAAF4AAAAqAAAAIhMQABoAAABeAAAAFAAAACITEAAaAAAAYAAAACkAAAAiExAAGgAAAGAAAAAYAAAAIhMQABoAAABiAAAAJgAAACITEAAaAAAAYwAAACYAAAAiExAAGgAAAGQAAAAmAAAAIhMQABoAAABlAAAAJgAAACITEAAaAAAAaAAAABUAAAAiExAAGgAAAGkAAAAVAAAAIhMQABoAAABqAAAAFQAAACITEAAaAAAAawAAABUAAABJbnZhbGlkIC5zcGxhdCBmaWxlIHNpemVNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tlecknEABeAAAAZgoAAB8AQbD/wAALBQEAAACFAEHA/8AACwUBAAAAhgBB0P/AAAsFAQAAAIcAQeD/wAALBQEAAACIAEHw/8AACwUBAAAAiQBBgIDBAAsFAQAAAIoAQZCAwQALBQEAAACJAEGggMEACwUBAAAAiwBBsIDBAAsFAQAAAIwAQcCAwQALBQEAAACNAEHQgMEACwUBAAAAjgBB4IDBAAsFAQAAAI8AQfCAwQALBQEAAACQAEGAgcEACwUBAAAAkQBBkIHBAAsFAQAAAJIAQaCBwQALBQEAAACTAEGwgcEACwUBAAAAlABBwIHBAAsFAQAAAJUAQdCBwQALBQEAAACWAEHggcEACwUBAAAAlwBB8IHBAAsFAQAAAJgAQYCCwQALBQEAAACYAEGQgsEACwUBAAAAmABBoILBAAsFAQAAAJgAQbCCwQALBQEAAACYAEHAgsEACwUBAAAAmABB0ILBAAsFAQAAAJgAQeCCwQALBQEAAACYAEHwgsEACwUBAAAAmABBgIPBAAsFAQAAAJgAQZCDwQALBQEAAACYAEGgg8EAC2UBAAAAmAAAAGFuIGFycmF5IG9mIGxlbmd0aCAxYW4gYXJyYXkgb2YgbGVuZ3RoIDJhbiBhcnJheSBvZiBsZW5ndGggM2FuIGFycmF5IG9mIGxlbmd0aCA0AAAAAAAAAAABAAAAmQBBkITBAAsFAQAAAJoAQaCEwQALBQEAAACbAEGwhMEACwUBAAAAnABBwITBAAuhCAEAAACdAAAAZmlsZXNtaW5zbWF4c3NoYXBlc3RydWN0IE1lYW5zIHdpdGggNCBlbGVtZW50cwAAWkIQABwAAABlbmNvZGluZ3N0cnVjdCBRdWF0cyB3aXRoIDIgZWxlbWVudHOIQhAAHAAAAHN0cnVjdCBTaDBWMSB3aXRoIDMgZWxlbWVudHOsQhAAHAAAAGNvZGVib29rc3RydWN0IFNoMFYyIHdpdGggMiBlbGVtZW50c9hCEAAcAAAAc3RydWN0IFNoTlYxIHdpdGggNCBlbGVtZW50c/xCEAAcAAAAYmFuZHNzdHJ1Y3QgU2hOVjIgd2l0aCAzIGVsZW1lbnRzAAAAJUMQABwAAABpbmZvc3RydWN0IExhYmVscyB3aXRoIDIgZWxlbWVudHMAAABQQxAAHQAAAHN0cnVjdCBNZWFuc1YxIHdpdGggNCBlbGVtZW50cwAAeEMQAB4AAABtZWFuc3NjYWxlc3F1YXRzbGFiZWxzc2gwc2hOc3RydWN0IFBjU29nc1YxIHdpdGggNiBlbGVtZW50cwC8QxAAHwAAAHN0cnVjdCBQY1NvZ3NWMiB3aXRoIDggZWxlbWVudHMA5EMQAB8AAABzdHJ1Y3QgU2NhbGVzVjEgd2l0aCAzIGVsZW1lbnRzAAxEEAAfAAAAc3RydWN0IFNjYWxlc1YyIHdpdGggMiBlbGVtZW50cwA0RBAAHwAAAHBheWxvYWRCeXRlc3Byb3BlcnRpZXNzdHJ1Y3QgUmFkQ2h1bmtNZXRhIHdpdGggOCBlbGVtZW50cwAAAHJEEAAjAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHOxRBAAJwAAAGNlbnRlcnJnYm9yaWVudGF0aW9uc2gxc2gyc2gzY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAOBEEAAGAAAAr7gRAAUAAADmRBAAAwAAAKVDEAAGAAAA6UQQAAsAAACqshEABQAAAMayEQAOAAAA9EQQAAMAAAD3RBAAAwAAAPpEEAADAAAA/UQQAAsAAAAIRRAACwAAABNFEAAIAAAAG0UQAAgAAAAjRRAACAAAACtFEAAIAAAAZjE2ZjMyX2xlYnl0ZXNmMTZfbGVieXRlc3I4cjhfZGVsdGFzOHM4X2RlbHRhbG5fMHI4bG5fZjE2b2N0ODhyOBhTEQACAAAAGlMRAAMAAAC0RRAAAwAAALdFEAALAAAAwkUQAAsAAADNRRAAAgAAAM9FEAAIAAAA10UQAAIAAADZRRAACAAAAOFFEAAGAAAA50UQAAYAAADtRRAABwAAAPslEQADAAAAIFMRAAMAQeyMwQALBQEAAACeAEH8jMEAC/EMAQAAAJ8AAABnegAAhEYQAAIAAABhIG1hcAAAAJL7BFYo6OWj081Pw6yS7bbjakM2M82IVICa6+WCgujhLNdEbhQC79AK/89rIxe4vUSV0OAI/fessvPzEUZsdWw5lVgtqlHyhoGoQNfUiaz5imNuwNELaayeyAFNk8/7bsE4yN0u33OsxCva288uwRrk7bUaKhm6qtGejw0QOHcgMajXqGqHsDP+WUI2ANZLUvBKAWY5uY4UmroklLt0EtPZB7zAeMPQNgh/Ts8U2UzoGPv9Fzgt5WbAxRwFGfGaSHDeQK7XBYuncix2l922AzuR7gb0/Mfo0PIRuPM96YgorugFjT0afX/VioadF7dBDodUMvFbHWmz0s3V7RvRKnRYlJuDE6geSHS8sDp6AfokcZ7rHghe/EnhMNERmQSmE/eH7bZNFPhCP9zQssOxiKADaRWv8ScPvdQxlx8xaO6+vgc+8kGfusrELB6Ilb/gnxVfs07Vk+VnQokAFOojUofoFtH5mVDgyi35LfBH1fTbssdW/Q/mG1TOFsk9apD3IM4/Z/nh0DIopEu0rx6BJpMg3jw9cfi9440jB8IT3Oo0DPEsVvqMDMSQUxAfmOHvrZ384tj2twBjQoxWu0l95eBPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAIQoEABMAAAApgAAADIAAADXIRAATwAAAMICAAAmAAAA0BwQAGEAAACkAAAAKgAAANAcEABhAAAABAEAACUAAACgAAAADAAAAAQAAAChAAAAoAAAAAwAAAAEAAAAogAAAKEAAADESBAAowAAAKQAAAClAAAAowAAAKYAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZU92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjpzcGVjOjpaaXA2NENERUxvY2F0b3JCbG9ja0ludmFsaWQgemlwNjQgbG9jYXRvciBkaWdpdGFsIHNpZ25hdHVyZSBoZWFkZXIAAAAAAIAoShAALgAAAHppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAICAShAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVCbG9ja1BLBgZ6aXA6OnR5cGVzOjpaaXBDZW50cmFsRW50cnlCbG9ja1BLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcgAAAIDsShAAIAAAAEludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NE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emVsZWFmQ291bnSSJxAAGAAAAFQCAABcAAAAkicQABgAAABTAgAAYgAAAJInEAAYAAAAUgIAAF4AAACSJxAAGAAAAFECAABZAAAAkicQABgAAABQAgAAaAAAAJInEAAYAAAATwIAAGIAAACSJxAAGAAAALsBAAAzAAAAkicQABgAAADAAQAAHQAAAJInEAAYAAAAwQEAACIAAACSJxAAGAAAAMIBAAAgAAAAkicQABgAAADDAQAAIAAAAJInEAAYAAAAxAEAAB8AAACSJxAAGAAAAMYBAAAdAAAAkicQABgAAAC/AQAAPAAAAJInEAAYAAAAvgEAAD0AAACSJxAAGAAAAPUAAAA6AAAAkicQABgAAAD/AAAAWAAAAJInEAAYAAAArQIAAB0AAACSJxAAGAAAALACAAA5AAAAbWlzc2luZ0NvdW50kicQABgAAABIAwAAYgAAAJInEAAYAAAARwMAAFwAAACSJxAAGAAAAEYDAABeAAAAkicQABgAAABFAwAAWQAAAJInEAAYAAAARAMAAGgAAACSJxAAGAAAAEMDAABiAAAAkicQABgAAAAyAwAAIwAAAJInEAAYAAAANQMAAFoAAACSJxAAGAAAADQDAABtAAAAkicQABgAAAAzAwAAWAAAAJInEAAYAAAA1QIAAEsAAACSJxAAGAAAAOICAABAAAAAkicQABgAAADjAgAAPwAAAJInEAAYAAAA6gIAADMAAACSJxAAGAAAAPUCAAA3AAAAkicQABgAAAD3AgAARgAAAJInEAAYAAAAmwIAADMAAACSJxAAGAAAAKACAAAdAAAAkicQABgAAAChAgAAIgAAAJInEAAYAAAAogIAACAAAACSJxAAGAAAAKMCAAAgAAAAkicQABgAAACkAgAAHwAAAJInEAAYAAAApQIAAB0AAACSJxAAGAAAAJ8CAAA8AAAAkicQABgAAACeAgAAPQAAAE5vdCBhIFpJUC9TT0dTIGZpbGVTT0dTIGZpbGUgdG9vIHNtYWxsAACIExAAHQAAAEwDAAANAAAAiBMQAB0AAABNAwAADQAAAIgTEAAdAAAATgMAAA0AAACIExAAHQAAAEsDAABBAAAAiBMQAB0AAABXAwAADQAAAIgTEAAdAAAAVwMAAD4AAACIExAAHQAAAGEDAAANAAAAiBMQAB0AAABiAwAADQAAAIgTEAAd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AAA8AAAAMh0QAGEAAABDBAAAJwAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1ZmZlci5sZW4oKS5pc19tdWx0aXBsZV9vZihmcm9tX2xheW91dC5jaGFubmVscygpKQAAADIdEABhAAAAnAQAAAkAAAAAAAAACAAAAAQAAAC+AQAAaW5wdXQgbGF5b3V0IGFscmVhZHkgYWxsb2NhdGVkIHdpdGggYXBwcm9wcmlhdGUgbGF5b3V0AAAyHRAAYQAAAKIEAAAOAAAAWRcQAFkAAAAOAgAAPwAAAEltYWdlIHNpemUgZXhjZWVkcyBsaW1pdFRoZSBmb2xsb3dpbmcgc3RyaWN0IGxpbWl0cyBhcmUgc3BlY2lmaWVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBvcGVydGF0aW9uOiAAAAAAAAEAAAABAAAAvwEAAAAAAAABAAAAAQAAAMABAAAAAAAAAQAAAAEAAADBAQAAAAAAAAQAAAAEAAAAwgEAAAAAAAAEAAAABAAAAMMBAABpbm5lckZvcm1hdCBlcnJvclRoZSBJbWFnZSdzIGRpbWVuc2lvbnMgYXJlIGVpdGhlciB0b28gc21hbGwgb3IgdG9vIGxhcmdlVGhlIGVuZCB0aGUgaW1hZ2Ugc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQgZHVlIHRvIGEgcHJldmlvdXMgZXJyb3JUaGUgZW5kIG9mIHRoZSBpbWFnZSBoYXMgYmVlbiByZWFjaGVkYFVua25vd25gSW1hZ2VCdWZmZXJTaXplYWN0dWFsUG9sbGVkQWZ0ZXJFbmRPZkltYWdlUG9sbGVkQWZ0ZXJGYXRhbEVycm9yVGhlIGltYWdlIGZvcm1hdCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZEVycgAAAAAAAAQAAAAEAAAAxAEAAEZvcm1hdEVycm9yUmlmZlNpZ25hdHVyZUludmFsaWRXZWJwU2lnbmF0dXJlSW52YWxpZENodW5rTWlzc2luZ0NodW5rSGVhZGVySW52YWxpZFJlc2VydmVkQml0U2V0SW52YWxpZEFscGhhUHJlcHJvY2Vzc2luZ0ludmFsaWRDb21wcmVzc2lvbk1ldGhvZEFscGhhQ2h1bmtTaXplTWlzbWF0Y2hJbWFnZVRvb0xhcmdlRnJhbWVPdXRzaWRlSW1hZ2VMb3NzbGVzc1NpZ25hdHVyZUludmFsaWRWZXJzaW9uTnVtYmVySW52YWxpZEludmFsaWRDb2xvckNhY2hlQml0c0h1ZmZtYW5FcnJvckJpdFN0cmVhbUVycm9yVHJhbnNmb3JtRXJyb3JWcDhNYWdpY0ludmFsaWROb3RFbm91Z2hJbml0RGF0YUNvbG9yU3BhY2VJbnZhbGlkTHVtYVByZWRpY3Rpb25Nb2RlSW52YWxpZEludHJhUHJlZGljdGlvbk1vZGVJbnZhbGlkQ2hyb21hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW5jb25zaXN0ZW50SW1hZ2VTaXplc1Vuc3VwcG9ydGVkRmVhdHVyZUludmFsaWRQYXJhbWV0ZXJNZW1vcnlMaW1pdEV4Y2VlZGVkSW52YWxpZENodW5rU2l6ZU5vTW9yZUZyYW1lc0ludmFsaWREaW1lbnNpb25zTGltaXRzRXhjZWVkZWQAALEAAAAIAAAABAAAAC8AAACxAAAACAAAAAQAAACyAAAALwAAAMD9EACzAAAAtAAAAKUAAAC1AAAApgAAAFVucmVwcmVzZW50YWJsZUludmFsaWRLZXl3b3JkU2l6ZU1pc3NpbmdOdWxsU2VwYXJhdG9ySW5mbGF0aW9uRXJyb3JPdXRPZkRlY29tcHJlc3Npb25TcGFjZUludmFsaWRDb21wcmVzc2lvbkZsYWdNaXNzaW5nQ29tcHJlc3Npb25GbGFnAAAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAaQAAAENyY01pc21hdGNoY3JjX3ZhbGNyY19zdW1JbnZhbGlkU2lnbmF0dXJlTWlzc2luZ0ZjdGxNaXNzaW5nSW1hZ2VEYXRhQ2h1bmtCZWZvcmVJaGRyQWZ0ZXJJZGF0QmVmb3JlUGx0ZUFmdGVyUGx0ZU91dHNpZGVQbHRlSWRhdER1cGxpY2F0ZUNodW5rQXBuZ09yZGVycHJlc2VudFNob3J0UGFsZXR0ZWxlbgAAAAAAAQAAAAEAAADFAQAASW52YWxpZFNiaXRDaHVua1NpemVjb2xvcl90eXBlAAAAAAAAAQAAAAEAAADGAQAASW52YWxpZFNiaXRzYW1wbGVfZGVwdGhzYml0UGFsZXR0ZVJlcXVpcmVkAAAAAAAABAAAAAQAAADHAQAASW52YWxp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AABMIBAAaQAAABgCAAAYAAAATCAQAGkAAADzAQAAHwAAAIIbEABtAAAAbQEAABgAAACCGxAAbQAAAFoAAAAYAAAAcTEQAFoAAACiCAAAJQAAAHExEABaAAAAoggAAB4AAABxMRAAWgAAAPAIAAAiAAAAcTEQAFoAAADwCAAACgAAAHExEABaAAAA3QgAAB4AAABxMRAAWgAAAAoJAAAeAAAAcTEQAFoAAAALCQAAFwAAAHExEABaAAAADwkAACYAAABxMRAAWgAAABIJAAAiAAAAcTEQAFoAAAAMCQAAHQAAAHExEABaAAAAgQgAAAUAAABxMRAAWgAAAIQIAAAmAAAAcTEQAFoAAACICAAAKwAAAHExEABaAAAAiAgAACAAAABxMRAAWgAAACUIAABFAAAAcTEQAFoAAAAiCAAAHgAAAHExEABaAAAAOAgAADEAAABxMRAAWgAAABwIAABBAAAABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA8AD4AQABCAEQARgBIAEoATABOAFAAUgBUAFYAWABaAFwAXgBgAGIAZABmAGgAagBsAG4AcAByAHQAdwB6AH0AgACDAIYAiQCMAI8AkgCVAJgAmwCeAKEApACnAKoArQCxALUAuQC9AMEAxQDJAM0A0QDVANkA3QDhAOUA6gDvAPUA+QD+AAMBCAENARIBFwEcAQQABQAGAAcACAAJAAoACgALAAwADQAOAA8AEAARABEAEgATABQAFAAVABUAFgAWABcAFwAYABkAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAlACYAJwAoACkAKgArACwALQAuAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFsAXQBfAGAAYgBkAGUAZgBoAGoAbABuAHAAcgB0AHYAegB8AH4AgACCAIQAhgCIAIoAjACPAJEAlACXAJoAnQBxMRAAWgAAAGgIAAAwAAAAcTEQAFoAAABcCAAAOwAAAGgQ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T25lVHdvRm91ckVpZ2h0U2l4dGVlbkdyYXlzY2FsZVJnYkluZGV4ZWRHcmF5c2NhbGVBbHBoYVJnYmFFbmQgb2YgaW1hZ2UgaGFzIGJlZW4gcmVhY2hlZEEgZmF0YWwgZGVjb2RpbmcgZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVkIGVhcmxpZXJJbnZhbGlkIFBORyBzaWduYXR1cmUuZmNUTCBjaHVuayBtaXNzaW5nIGJlZm9yZSBmZEFUIGNodW5rLklEQVQgb3IgZmRBVCBjaHVuayBpcyBtaXNzaW5nLk1pc3NpbmcgcGFsZXR0ZSBvZiBpbmRleGVkIGltYWdlLkludmFsaWQgaW1hZ2UgZGltZW5zaW9uc1N1YiBmcmFtZSBpcyBvdXQtb2YtYm91bmRzLkNvcnJ1cHQgZGVmbGF0ZSBzdHJlYW0uIElEQVQgb3IgZkRBVCBjaHVuayBkb2VzIG5vdCBoYXZlIGVub3VnaCBkYXRhIGZvciBpbWFnZS5VbnJlcHJlc2VudGFibGUgZGF0YSBpbiB0RVh0IGNodW5rLktleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuTm8gbnVsbCBzZXBhcmF0b3IgaW4gdEVYdCBjaHVuay5JbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLk91dCBvZiBkZWNvbXByZXNzaW9uIHNwYWNlLiBUcnkgd2l0aCBhIGxhcmdlciBsaW1pdC5Vc2luZyBhbiB1bnJlY29nbml6ZWQgYnl0ZSBhcyBjb21wcmVzc2lvbiBtZXRob2QuVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay5ObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLmZkQVQgY2h1bmsgc2hvcnRlciB0aGFuIDQgYnl0ZXNCYWQgZ2FtbWEgdmFsdWUubGltaXRzIGFyZSBleGNlZWRlZEJhZFpsaWJIZWFkZXJJbnN1ZmZpY2llbnRJbnB1dEludmFsaWRCbG9ja1R5cGVJbnZhbGlkVW5jb21wcmVzc2VkQmxvY2tMZW5ndGhJbnZhbGlkSGxpdEludmFsaWRIZGlzdElu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pA6QF+bKS03SgABHeZvsylCl2RKiRHlIHc4A2I7FrUSBCCkegtAtbRfYMxM/0VedmtMgGM6mJCR5RvaoZaesShV2TRN9pDqgjj29dG+leneIVuIeZFCV5j4xZF2Mt/vFBhK1GLemquvLjbZKcCyW0WsOxBNXpKoSExYkERpH8OgSF6Af3+nuDtxEg9oUbPNTQt9MGYAhv9h8nQLiQyMpQ2h/PRQzgTJ6/X1oTjYcVM+5MjEQuM5QkJXJQEq9xrlLKVHoGcYLp6Z31DMIMdLHb4fauRRrCewexnYpoI0O07/SrpQQ39usZKNXQgBJF7j/HX6HGhnjI+q13wHNoBJgmbExORWutRyIkUzOcE115q0njvoQ4lWUprWt4xqvu3BJDH0qG+h3Q4XEV+l78mKNBz2XuxWH+TUEanmHyY61CgZk32IRccK8BhCPpXXkiHfWbGXRGyc1ymumpbf36dOSq/AdQRYfxKG8Hh7GX+4PD1aNsc0RZdMCYWRjo/8Ws7GJSE98HFHcm01QHOky3yiO1AbZyRYOfUlxc+Mgj7Ig2HYFFDsSfC4PgoUFm37qzVnxO1MrHcq+pQGeN6/L7tdH9C/cVRehmIQ0S/lYCb+sbMOMFqsSMC4wMSBlbGVtZW50IGluIG1hcDEgZWxlbWVudCBpbiBzZXF1ZW5jZXU4ZjMyZjY0dTMydTY0dXNpemVleHBsaWNpdCBwYW5pYwAAALgrEABfAAAAJAkAABIAAABvbmUgb2YgLCBieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50AAAAAAgAAAAEAAAA5AEAAOUBAADmAQAALjBhIGJvb2xlYW51bml0YSBzdHJpbmdhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikA4B0QAE8AAAC9BAAAJAAAAG51bGz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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BocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIcTEQAFoAAAA/BQAAJQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3ExEABaAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPi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cmVlY2h1bmtTaXplYWxsQ2h1bmtCeXRlc2NodW5rc3NwbGF0RW5jb2RpbmdzaENvZGVDb3VudGNvbW1lbnRzdHJ1Y3QgUmFkTWV0YSB3aXRoIDExIGVsZW1lbnRzAAAA/pQRAB8AAAAAAAAACAAAAAQAAADpAQAAc3RydWN0IE1lYW5zc3RydWN0IFF1YXRzc3RydWN0IFNoMFYxc3RydWN0IFNoMFYyc3RydWN0IFNoTlYxc3RydWN0IFNoTlYyc3RydWN0IExhYmVsc3N0cnVjdCBNZWFuc1Yxc3RydWN0IFBjU29nc1Yxc3RydWN0IFBjU29nc1Yyc3RydWN0IFNjYWxlc1Yxc3RydWN0IFNjYWxlc1Yyc3RydWN0IFJhZENodW5rTWV0YWZpZWxkIGlkZW50aWZpZXJ2YXJpYW50IGlkZW50aWZpZXJnc3BsYXQAAAyWEQAGAAAAc3RydWN0IFJhZENodW5rUmFuZ2VvZmZzZXRiYXNlZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAAEKWEQAkAAAAc3RydWN0IFJhZENodW5rUHJvcGVydHlzdHJ1Y3QgU3BsYXRFbmNvZGluZ2Egc2VxdWVuY2VzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZ3JnYk1pbnJnYk1heGxuU2NhbGVNaW5sblNjYWxlTWF4c2gxTWF4c2gyTWF4c2gzTWF4bG9kT3BhY2l0eXN0cnVjdCBTZXRTcGxhdEVuY29kaW5nIHdpdGggOCBlbGVtZW50cwD4lhEAJwAAAMwxEABWAAAAbgAAAA4AAADMMRAAVgAAAGgAAAAOAAAAMB4QAFcAAABCAAAAHQAAABwbEABlAAAAUwAAABEAAACsKhAAXAAAANwBAAASAAAArCoQAFwAAADSAQAAPAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3ViZnJhbWUuY3VycmVudF9pbnRlcmxhY2VfaW5mby5pc19ub25lKCmsKhAAXAAAAPYBAAAJAAAArCoQAFwAAACQAQAAHQAAAKwqEABcAAAAkwIAADIAAACsKhAAXAAAABgCAAAvAAAACAAIAAgECAAEAAgEBAIEAAIABAICAQIAAQACAWFzc2VydGlvbiBmYWlsZWQ6IHNlbGYudW5maWx0ZXJp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TFkgbGlzdCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkUHJvcGVydHkgb3V0c2lkZSBvZiBlbGVtZW50Y2h1bmtNaXNzaW5nIHggcHJvcGVydHlNaXNzaW5nIHkgcHJvcGVydHlNaXNzaW5nIHogcHJvcGVydHlzY2FsZV8wTWlzc2luZyBzY2FsZV8wIHByb3BlcnR5c2NhbGVfMU1pc3Npbmcgc2NhbGVfMSBwcm9wZXJ0eXNjYWxlXzJNaXNzaW5nIHNjYWxlXzIgcHJvcGVydHlyb3RfMU1pc3Npbmcgcm90XzAgcHJvcGVydHlyb3RfMk1pc3Npbmcgcm90XzEgcHJvcGVydHlyb3RfM01pc3Npbmcgcm90XzIgcHJvcGVydHlyb3RfME1pc3Npbmcgcm90XzMgcHJvcGVydHlvcGFjaXR5TWlzc2luZyBvcGFjaXR5IHByb3BlcnR5Zl9kY18wTWlzc2luZyBmX2RjXzAgcHJvcGVydHlmX2RjXzFNaXNzaW5nIGZfZGNfMSBwcm9wZXJ0eWZfZGNfMk1pc3NpbmcgZl9kY18yIHByb3BlcnR5bGFiZWw/Pz8gTWlzc2luZyBsYWJlbCBmaWVsZGluc3RhbmNlX2xhYmVsPz8/IE1pc3NpbmcgaW5zdGFuY2VfbGFiZWwgcHJvcGVydHkAtA4QABQAAADfAwAAKAAAALQOEAAUAAAAzQMAACgAAAC0DhAAFAAAANYDAAAoAAAAtA4QABQAAACnBAAAJgAAALQOEAAUAAAAqAQAACcAAAC0DhAAFAAAAKoEAAAqAAAAtA4QABQAAACuBAAAKgAAALQOEAAUAAAAsgQAACoAAAC0DhAAFAAAALYEAAAqAAAAtA4QABQAAACgBAAAKgAAALQOEAAUAAAApAQAACoAAAC0DhAAFAAAAIgEAAAmAAAAtA4QABQAAACJBAAAJwAAALQOEAAUAAAAiwQAACoAAAC0DhAAFAAAAI8EAAAqAAAAtA4QABQAAACTBAAAKgAAALQOEAAUAAAAlwQAACoAAAC0DhAAFAAAAIEEAAApAAAAtA4QABQAAACFBAAAKQAAALQOEAAUAAAA0AQAACYAAAC0DhAAFAAAAM8EAAAnAAAAtA4QABQAAADMBAAAKgAAALQOEAAUAAAAyAQAACoAAAC0DhAAFAAAAL8EAAAqAAAAtA4QABQAAADSBAAAKgAAALQOEAAUAAAAMwMAABwAAAC0DhAAFAAAADQDAAAcAAAAtA4QABQAAAA1AwAAHAAAALQOEAAUAAAANgMAABsAAAC0DhAAFAAAADcDAAAbAAAAtA4QABQAAAA4AwAAGwAAALQOEAAUAAAAOQMAABkAAAC0DhAAFAAAADoDAAAZAAAAtA4QABQAAAA7AwAAGQAAALQOEAAUAAAAPAMAAB0AAAC0DhAAFAAAAD0DAAAaAAAAtA4QABQAAAA+AwAAGgAAALQOEAAUAAAAPwMAABoAAAC0DhAAFAAAAEADAAAaAAAATWlzc2luZyBjaHVuayBlbGVtZW50IGZvciBTdXBlclNwbGF0IFBMWW1pbl94TWlzc2luZyBtaW5feCBwcm9wZXJ0eW1pbl95TWlzc2luZyBtaW5feSBwcm9wZXJ0eW1pbl96TWlzc2luZyBtaW5feiBwcm9wZXJ0eW1heF94TWlzc2luZyBtYXhfeCBwcm9wZXJ0eW1heF95TWlzc2luZyBtYXhfeSBwcm9wZXJ0eW1heF96TWlzc2luZyBtYXhfeiBwcm9wZXJ0eW1pbl9zY2FsZV94TWlzc2luZyBtaW5fc2NhbGVfeCBwcm9wZXJ0eW1pbl9zY2FsZV95TWlzc2luZyBtaW5fc2NhbGVfeSBwcm9wZXJ0eW1pbl9zY2FsZV96TWlzc2luZyBtaW5fc2NhbGVfeiBwcm9wZXJ0eW1heF9zY2FsZV94TWlzc2luZyBtYXhfc2NhbGVfeCBwcm9wZXJ0eW1heF9zY2FsZV95TWlzc2luZyBtYXhfc2NhbGVfeSBwcm9wZXJ0eW1heF9zY2FsZV96TWlzc2luZyBtYXhfc2NhbGVfeiBwcm9wZXJ0eW1pbl9ybWluX2dtaW5fYm1heF9ybWF4X2dtYXhfYnBhY2tlZF9wb3NpdGlvbk1pc3NpbmcgcGFja2VkX3Bvc2l0aW9uIHByb3BlcnR5cGFja2VkX3JvdGF0aW9uTWlzc2luZyBwYWNrZWRfcm90YXRpb24gcHJvcGVydHlwYWNrZWRfc2NhbGVNaXNzaW5nIHBhY2tlZF9zY2FsZSBwcm9wZXJ0eXBhY2tlZF9jb2xvck1pc3NpbmcgcGFja2VkX2NvbG9yIHByb3BlcnR5AAC0DhAAFAAAAJECAAAf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aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcmNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AAAA4RQQAFwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AAB5IhAAVgAAACMBAAAtAAAAAQAAAAAAAADTIAAAaAEAACAgICAgICAgICAgICBhdCAKwyAAAGgEAAI6IADTIAAAaAEAAyAtIAAgICAgICA8dW5rbm93bj7BIACAYABjYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tpbmcgdGhyZWFkAAAAzSMQAEwAAACQAAAACQAAAO+/vQBTKxAAZAAAAGcBAAAwAAAAc3Rkb3V0TGF6eUxvY2sgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZCciEABRAAAAngEAAAUAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAVi0QAEwAAAAmAAAADQAAAFdvdWxkQmxvY2sAAAAAAAAIAAAABAAAAG0CAAB1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UA0SgQAEwAAACKAQAAHQAAAG4CAAAQAAAABAAAAG8CAABwAgAAT3MAAAAAAAAEAAAABAAAAHECAABjb2RlAAAAAAEAAAABAAAAcgIAAGtpbmSYAQAADAAAAAQAAABzAgAAbWVzc2FnZUtpbmRFcnJvcgAAAAAIAAAABAAAAHQCAAAAAAAABAAAAAQAAAB1AgAAQ3VzdG9tcGFuaWNrZWQgYXQgOgoZIRAAXQAAABYBAAApAAAAmAEAAAwAAAAEAAAAdgIAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWSUHRAASwAAAFwDAAAUAAAAcndsb2NrIGhhcyBub3QgYmVlbiBsb2NrZWQgZm9yIHJlYWRpbmcAAJ0VEABdAAAAPgAAAAkAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABuJBAAZAAAAHwAAAARAAAAbiQQAGQAAACJAAAAEQAAAHcCAAAMAAAABAAAAHgCAAAAAAAABAAAAAQAAAB5AgAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3IAQaCVxwALmw0BAAAAyQEAAFRyeUZyb21JbnRFcnJvcmZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgAAt8oRABsAAAAlAAAAAgAAANTKEQAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAhAAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuKClaSVA2NCBmb290ZXIgaW5kaWNhdGVzIG1vcmUgZmlsZXMgb24gdGhpcyBkaXNrIHRoYW4gaW4gdGhlIHdob2xlIGFyY2hpdmVJbnZhbGlkIGNlbnRyYWwgZGlyZWN0b3J5IHNpemUgb3Igb2Zmc2V0NzQzMjEwLy4tZ/JCQ+UsKyopKCcmJSQjIiE4IB8eHRz/lKSViKCbrd3ehnroytfg0NzMu7ezsaiyyOLDmriufni/ncKqvaKhlsGOiauwuae6cK/AvJyMj3uFgJOKknLfl/nY7uz949rm94e08en29OeL9fP768nE8NaYts21fxvU09LV5MWpn4OsaVBiYGFRz5F0c5CCmXlrhG1ufG9SbHaNcYF3faV1XGpTSGNdQU+m7aPHvuHRy8bZ287q+J7v/////////////////////////////////////////////////////////////////////////////////////0F0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAAPhUQAF4AAABrAAAADQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgT25jZSBzdGF0ZfsVEABbAAAAOgAAABIAAABDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5ZmxhZ3MgYW5kIGxlbiBkb24ndCBtYXRjaCBpbiBleHRlbmRlZCB0aW1lc3RhbXAgZmllbGROVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgc2l6ZU5URlMgZXh0cmEgZmllbGQgaGFzIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSB0YWdOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IGV4Y2VlZHMgZGVjbGFyZWQgbGVuZ3RoAAB2LhAAVAAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoQUVTIGV4dHJhIGZpZWxkIHRydW5jYXRlZEludmFsaWQgQUVTIGVuY3J5cHRpb24gc3RyZW5ndGhJbnZhbGlkIEFFUyB2ZW5kb3IgdmVyc2lvbkludmFsaWQgQUVTIHZlbmRvckFFUyBleHRyYSBkYXRhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IHRydW5jYXRlZEV4dHJhIGZpZWxkIGhlYWRlciB0cnVuY2F0ZWRJbnZhbGlkIGNoZWNrc3Vtc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3ROb25lU29tZQAAAEEqEABqAAAAwwAAAAkAAABBKhAAagAAALwAAAAqAAAAQSoQAGoAAAC5AAAAKgAAAFIPEABiAAAAMQIAABsAAABSDxAAYgAAADICAAAdAAAAUg8QAGIAAAB0AQAAKQAAAFIPEABiAAAAeQEAABwAAABSDxAAYgAAAHkBAAAtAAAAUg8QAGIAAACAAQAAMAAAAFIPEABiAAAASwEAACkAAABSDxAA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").buffer; +const WASM_MODULE = WebAssembly.compile(WASM); +let initialized = false; +const initialization = __wbg_init({ module_or_path: WASM_MODULE }).then( + (_) => { + initialized = true; + } +); +function isInitialized() { + return initialized; +} +const jsContent = '(function() {\n "use strict";\n class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n }\n if (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n }\n function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n }\n function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 4294967297 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = /* @__PURE__ */ new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_rs_bg.js": import0\n };\n }\n const ChunkDecoderFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += ", " + debugString(val[i]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n let cachedFloat32ArrayMemory0 = null;\n function getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x) {\n return x === void 0 || x === null;\n }\n function passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance);\n }\n const rpcHandlers = {\n sortSplats16,\n sortSplats32,\n loadPackedSplats,\n loadExtSplats,\n tinyLodPackedSplats,\n qualityLodPackedSplats,\n tinyLodExtSplats,\n qualityLodExtSplats,\n newLodTree,\n newSharedLodTree,\n initLodTree,\n disposeLodTree,\n updateLodTrees,\n traverseLodTrees,\n getLodTreeLevel,\n nextChunk\n };\n async function onMessage(event) {\n const {\n id,\n name,\n args\n } = event.data;\n try {\n const handler = rpcHandlers[name];\n if (!handler) {\n throw new Error(`Unknown worker RPC: ${name}`);\n }\n const sendStatus = (data) => {\n self.postMessage(\n { id, status: data },\n { transfer: getTransferable(data) }\n );\n };\n const result = await handler(args, { sendStatus });\n self.postMessage({ id, result }, { transfer: getTransferable(result) });\n } catch (error) {\n console.warn(`Worker error: ${error}`);\n self.postMessage({ id, error }, { transfer: getTransferable(error) });\n }\n }\n function sortSplats16({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n function sortSplats32({\n numSplats,\n readback,\n ordering\n }) {\n const activeSplats = sort32_splats(numSplats, readback, ordering);\n return { activeSplats, readback, ordering };\n }\n async function decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n }) {\n if (fileBytes) {\n const CHUNK_SIZE = 1048576;\n for (let i = 0; i < fileBytes.length; i += CHUNK_SIZE) {\n decoder.push(\n fileBytes.subarray(i, Math.min(i + CHUNK_SIZE, fileBytes.length))\n );\n }\n } else if (url) {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : void 0,\n credentials: withCredentials ? "include" : "same-origin"\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch "${url}": ${response.status} ${response.statusText}`\n );\n }\n const readStream = response.body.getReader();\n const contentLength = Number.parseInt(\n response.headers.get("Content-Length") || "0"\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n let loaded = 0;\n while (true) {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n break;\n }\n loaded += value.length;\n sendStatus({ loaded, total });\n decoder.push(value);\n }\n } else if (chunked) {\n let loaded = 0;\n const total = chunkedLength ?? 0;\n while (true) {\n const readNextChunk = new Promise((resolve) => {\n nextChunkWaiter = resolve;\n });\n sendStatus({ nextChunk: true });\n const nextChunk2 = await readNextChunk;\n if (nextChunk2.length === 0) {\n break;\n }\n decoder.push(nextChunk2);\n loaded += nextChunk2.length;\n sendStatus({ progress: { loaded, total } });\n }\n if (total === 0) {\n sendStatus({ progress: { loaded, total: loaded } });\n }\n } else {\n throw new Error("No url or fileBytes provided");\n }\n const decoded = decoder.finish();\n return decoded;\n }\n function toPackedResult(packed) {\n return {\n numSplats: packed.numSplats,\n packedArray: packed.packed,\n extra: {\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3: packed.sh3,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n },\n splatEncoding: packed.splatEncoding\n };\n }\n async function loadPackedSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n encoding,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_packedsplats(\n fileType,\n pathName ?? url,\n encoding,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toPackedResult(decoded2);\n if (result2.splatEncoding.lodOpacity) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_csplatarray(fileType, pathName ?? url, encoding);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n const result2 = toPackedResult(\n decoded.to_packedsplats_lod()\n );\n return { lodSplats: result2 };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toPackedResult(decoded.to_packedsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toPackedResult(decoded.to_packedsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.25));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_packedsplats_lod();\n result.lodSplats = toPackedResult(lodPacked);\n return result;\n }\n function toExtResult(packed) {\n return {\n numSplats: packed.numSplats,\n extArrays: [packed.ext0, packed.ext1],\n extra: {\n labels: packed.labels,\n instances: packed.instances,\n sh1: packed.sh1,\n sh2: packed.sh2,\n sh3a: packed.sh3a,\n sh3b: packed.sh3b,\n sh1Codes: packed.sh1Codes,\n sh2Codes: packed.sh2Codes,\n sh3Codes: packed.sh3Codes,\n lodTree: packed.lodTree\n }\n };\n }\n async function loadExtSplats({\n url,\n requestHeader,\n withCredentials,\n fileBytes,\n fileType,\n pathName,\n chunked,\n chunkedLength,\n lod,\n lodBase,\n lodAbove,\n nonLod,\n sh1Codes,\n sh2Codes,\n sh3Codes\n }, {\n sendStatus\n }) {\n if (!lod) {\n const decoder2 = decode_to_extsplats(\n fileType,\n pathName ?? url,\n sh1Codes,\n sh2Codes,\n sh3Codes\n );\n const decoded2 = await decodeBytesUrl({\n decoder: decoder2,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n const result2 = toExtResult(decoded2);\n if (result2.extra.lodTree) {\n return { lodSplats: result2 };\n }\n return result2;\n }\n const decoder = decode_to_gsplatarray(fileType, pathName ?? url);\n const decoded = await decodeBytesUrl({\n decoder,\n fileBytes,\n url,\n requestHeader,\n withCredentials,\n chunked,\n chunkedLength,\n sendStatus\n });\n if (decoded.has_lod()) {\n return {\n lodSplats: toExtResult(decoded.to_extsplats_lod())\n };\n }\n if (lodAbove !== void 0) {\n if (decoded.len() < lodAbove) {\n return toExtResult(decoded.to_extsplats());\n }\n }\n let result = {};\n if (nonLod) {\n result = toExtResult(decoded.to_extsplats());\n }\n const initialSplats = decoded.len();\n const lodName = lod === "quality" ? "Bhatt" : "Tiny";\n console.log(\n `Loaded ${initialSplats} splats. Starting ${lodName} LoD build...`\n );\n const lodStart = performance.now();\n if (lod === "quality") {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n decoded.bhatt_lod(base);\n } else {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n decoded.tiny_lod(base, false);\n }\n const lodDuration = performance.now() - lodStart;\n console.log(\n `${lodName} LoD: ${initialSplats} -> ${decoded.len()} (${lodDuration} ms)`\n );\n const lodPacked = decoded.to_extsplats_lod();\n result.lodSplats = toExtResult(lodPacked);\n return result;\n }\n async function tinyLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n filter,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodPackedSplats({\n numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_packedsplats(\n numSplats,\n packedArray,\n extra,\n base,\n rgba,\n encoding\n );\n const lodDuration = performance.now() - lodStart;\n const result = toPackedResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function tinyLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.5));\n const lodStart = performance.now();\n const filter = false;\n const decoded = tiny_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n filter,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Tiny LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n async function qualityLodExtSplats({\n numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n encoding\n }) {\n const base = Math.max(1.1, Math.min(2, lodBase ?? 1.75));\n const lodStart = performance.now();\n const decoded = bhatt_lod_extsplats(\n numSplats,\n extArrays[0],\n extArrays[1],\n extra,\n base,\n rgba\n );\n const lodDuration = performance.now() - lodStart;\n const result = toExtResult(decoded);\n console.log(\n `Bhatt LoD: ${numSplats} -> ${result.numSplats} (${lodDuration} ms)`\n );\n return result;\n }\n function newLodTree({\n capacity\n }) {\n const { lodId } = new_lod_tree(capacity);\n return { lodId };\n }\n function newSharedLodTree({\n lodId\n }) {\n const { lodId: newLodId } = new_shared_lod_tree(lodId);\n return { lodId: newLodId };\n }\n function initLodTree({\n numSplats,\n lodTree\n }) {\n const { lodId, chunkToPage } = init_lod_tree(numSplats, lodTree);\n return { lodId, chunkToPage };\n }\n function disposeLodTree({ lodId }) {\n dispose_lod_tree(lodId);\n }\n function updateLodTrees({\n ranges\n }) {\n const lodIds = new Uint32Array(ranges.map(({ lodId }) => lodId));\n const pageBases = new Uint32Array(ranges.map(({ pageBase }) => pageBase));\n const chunkBases = new Uint32Array(ranges.map(({ chunkBase }) => chunkBase));\n const counts = new Uint32Array(ranges.map(({ count }) => count));\n const lodTreeData = ranges.map(({ lodTreeData: lodTreeData2 }) => lodTreeData2);\n update_lod_trees(\n lodIds,\n pageBases,\n chunkBases,\n counts,\n lodTreeData\n );\n }\n function traverseLodTrees({\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n instances,\n traverseMode\n }) {\n const keyInstances = Object.entries(instances);\n const lodIds = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.lodId)\n );\n const rootPages = new Uint32Array(\n keyInstances.map(([_key, instance]) => instance.rootPage ?? 4294967295)\n );\n const viewToObjects = new Float32Array(\n keyInstances.flatMap(([_key, instance]) => {\n if (instance.viewToObjectCols.length !== 16) {\n throw new Error("Incorrect array size for viewToObjectCols");\n }\n return instance.viewToObjectCols;\n })\n );\n const lodScales = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.lodScale)\n );\n const behindFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.behindFoveate)\n );\n const coneFov0s = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov0)\n );\n const coneFovs = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFov)\n );\n const coneFoveates = new Float32Array(\n keyInstances.map(([_key, instance]) => instance.coneFoveate)\n );\n const lodFunction = traverseMode === "dynamic" ? dynamic_traverse_lod_trees : traverse_lod_trees;\n const result = lodFunction(\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit,\n lodIds,\n rootPages,\n viewToObjects,\n lodScales,\n behindFoveates,\n coneFoveates,\n coneFov0s,\n coneFovs\n );\n const { instanceIndices, chunks, pixelLimit } = result;\n const indices = keyInstances.reduce(\n (indices2, [key, _instance], index) => {\n indices2[key] = instanceIndices[index];\n return indices2;\n },\n {}\n );\n return {\n keyIndices: indices,\n chunks,\n pixelLimit\n };\n }\n function getLodTreeLevel({\n lodId,\n level\n }) {\n return get_lod_tree_level(lodId, level);\n }\n let nextChunkWaiter = (_chunk) => {\n };\n async function nextChunk({ chunk }) {\n nextChunkWaiter(chunk);\n }\n function getTransferable(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n async function initialize() {\n let resolveWaitForModule;\n const waitForModule = new Promise((resolve) => {\n resolveWaitForModule = resolve;\n });\n const pending = [];\n const bufferMessage = (event) => {\n if (event.data.name === "init-wasm") {\n resolveWaitForModule(event.data.module);\n return;\n }\n pending.push(event);\n };\n self.addEventListener("message", bufferMessage);\n await __wbg_init({ module_or_path: await waitForModule });\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of pending) {\n onMessage(event);\n }\n pending.length = 0;\n }\n initialize().catch(console.error);\n})();\n//# sourceMappingURL=worker-QdpqHGuR.js.map\n'; +const blob = typeof self !== "undefined" && self.Blob && new Blob([jsContent], { type: "text/javascript;charset=utf-8" }); +function WorkerWrapper(options) { + let objURL; + try { + objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob); + if (!objURL) throw ""; + const worker = new Worker(objURL, { + name: options == null ? void 0 : options.name }); - super(geometry, material); - this.renderSize = new THREE.Vector2(); - this.lastFrame = -1; - this.updateTimeoutId = -1; - this.orderingTexture = null; - this.maxSplats = 0; - this.activeSplats = 0; - this.accumulators = []; - this.sorting = false; - this.sortDirty = false; - this.lastSortTime = 0; - this.sortWorker = null; - this.sortTimeoutId = -1; - this.sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY); - this.sortedDir = new THREE.Vector3().setScalar(0); - this.readback32 = new Uint32Array(0); - this.lastLodRaycastTime = 0; - this.lodWorker = null; - this.lodMeshes = []; - this.lodDirty = false; - this.lodIds = /* @__PURE__ */ new Map(); - this.lodIdToSplats = /* @__PURE__ */ new Map(); - this.lodInitQueue = []; - this.lodInstances = /* @__PURE__ */ new Map(); - this.lodUpdates = []; - this.lastTraverseTime = 0; - this.pagerId = 0; - this.superXY = 1; - this.flushAfterGenerate = false; - this.flushAfterRead = false; - this.readPause = 1; - this.sortPause = 0; - this.sortDelay = 0; - this.pageSizeWarning = false; - this.material = material; - this.uniforms = uniforms; - this.frustumCulled = false; - this.renderer = options.renderer; - this.onDirty = options.onDirty; - this.dirty = true; - this.autoUpdate = options.autoUpdate ?? true; - this.preUpdate = options.preUpdate ?? true; - this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); - this.minPixelRadius = options.minPixelRadius ?? 0; - this.maxPixelRadius = options.maxPixelRadius ?? 512; - this.accumExtSplats = options.accumExtSplats ?? false; - this.covSplats = options.covSplats ?? false; - this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); - this.enable2DGS = options.enable2DGS ?? false; - this.preBlurAmount = options.preBlurAmount ?? 0; - this.blurAmount = options.blurAmount ?? 0.3; - this.focalDistance = options.focalDistance ?? 0; - this.apertureAngle = options.apertureAngle ?? 0; - this.falloff = options.falloff ?? 1; - this.clipXY = options.clipXY ?? 1.4; - this.focalAdjustment = options.focalAdjustment ?? 1; - this.encodeLinear = options.encodeLinear ?? false; - this.sortRadial = options.sortRadial ?? true; - this.minSortIntervalMs = options.minSortIntervalMs ?? 0; - this.enableLod = options.enableLod ?? true; - this.enableDriveLod = options.enableDriveLod ?? this.enableLod; - this.enableLodFetching = options.enableLodFetching ?? true; - this.lodSplatCount = options.lodSplatCount; - this.lodSplatScale = options.lodSplatScale ?? 1; - this.lodRenderScale = options.lodRenderScale ?? 1; - this.lodInflate = options.lodInflate ?? false; - this.pagedExtSplats = options.pagedExtSplats ?? false; - const defaultPages = isMobile() ? isIos() ? 96 : 128 : 256; - this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536; - this.numLodFetchers = options.numLodFetchers ?? 3; - this.behindFoveate = options.behindFoveate ?? 0.2; - this.coneFov0 = options.coneFov0 ?? 90; - this.coneFov = options.coneFov ?? 120; - this.coneFoveate = options.coneFoveate ?? 0.4; - this.lodRaycast = options.lodRaycast === void 0 ? isMobile() ? 1e4 : 25e3 : options.lodRaycast; - this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500; - this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock(); - const accumulatorOptions = { - extSplats: this.accumExtSplats, - covSplats: this.covSplats - }; - this.display = new SplatAccumulator(accumulatorOptions); - this.current = this.display; - this.accumulators.push(new SplatAccumulator(accumulatorOptions)); - this.accumulators.push(new SplatAccumulator(accumulatorOptions)); - if (options.target) { - const { - width, - height, - doubleBuffer, - superXY: origSuperXY, - ...origTargetOptions - } = options.target; - const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1)); - if (width * superXY > 8192 || height * superXY > 8192) { - throw new Error("Target size too large"); + worker.addEventListener("error", () => { + (self.URL || self.webkitURL).revokeObjectURL(objURL); + }); + return worker; + } catch (e) { + return new Worker( + "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent), + { + name: options == null ? void 0 : options.name } - this.superXY = superXY; - const superWidth = width * superXY; - const superHeight = height * superXY; - const targetOptions = { - format: THREE.RGBAFormat, - type: THREE.UnsignedByteType, - colorSpace: THREE.SRGBColorSpace, - ...origTargetOptions - }; - this.target = new THREE.WebGLRenderTarget( - superWidth, - superHeight, - targetOptions - ); - if (doubleBuffer) { - this.backTarget = new THREE.WebGLRenderTarget( - superWidth, - superHeight, - targetOptions - ); + ); + } finally { + objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL); + } +} +const _SplatWorker = class _SplatWorker { + constructor() { + this.queue = null; + this.messages = {}; + this.worker = new WorkerWrapper(); + this.worker.onmessage = (event) => this.onMessage(event); + WASM_MODULE.then((module) => { + this.worker.postMessage({ name: "init-wasm", module }); + }); + } + onMessage(event) { + var _a2; + const { id, result, error, status } = event.data; + const promise = this.messages[id]; + if (promise) { + if (error !== void 0) { + delete this.messages[id]; + promise.reject(error); + } else if (status !== void 0) { + (_a2 = promise.onStatus) == null ? void 0 : _a2.call(promise, status); + } else { + delete this.messages[id]; + promise.resolve(result); } - this.encodeLinear = options.encodeLinear ?? true; } } - static makeUniforms() { - const uniforms = { - // // number of active splats to render - // numSplats: { value: 0 }, - // Size of render viewport in pixels - renderSize: { value: new THREE.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new THREE.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new THREE.Vector3() }, - renderToViewBasis: { value: new THREE.Matrix3() }, - renderToViewOffset: { value: new THREE.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.5 * (1 / 255) }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: false }, - // Enable ray-splat max response evaluation - // enableRayEval: { value: false }, - // Inflate LoD splats so that opacity <= 1.0 - lodInflate: { value: false }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: false }, - // Back-to-front sort ordering of splat indices - ordering: { type: "t", value: _SparkRenderer.emptyOrdering }, - enableExtSplats: { value: false }, - enableCovSplats: { value: false }, - // Gsplat collection to render - extSplats: { type: "t", value: SplatAccumulator.emptyTexture }, - extSplats2: { type: "t", value: SplatAccumulator.emptyTexture }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Debug flag that alternates each frame - debugFlag: { value: false } - }; - return uniforms; + tryExclusive(callback) { + return this.queue == null ? this.exclusive(callback) : null; + } + async exclusive(callback) { + const queue = this.queue; + if (queue != null) { + await new Promise((resolve) => { + queue.push(() => resolve(void 0)); + }); + } else { + this.queue = []; + } + try { + return await callback(this); + } finally { + if (this.queue != null) { + if (this.queue.length === 0) { + this.queue = null; + } else { + const waiter = this.queue.shift(); + waiter(); + } + } + } + } + async call(name, args, options = {}) { + const id = ++_SplatWorker.currentId; + const promise = new Promise((resolve, reject) => { + this.messages[id] = { resolve, reject, onStatus: options.onStatus }; + }); + this.worker.postMessage( + { id, name, args }, + { transfer: getTransferable(args) } + ); + return await promise; } dispose() { - if (this.target) { - this.target.dispose(); - this.target = void 0; + this.worker.terminate(); + const messages = Object.values(this.messages); + this.messages = {}; + for (const message of messages) { + message.reject(new Error("Worker terminate")); } - if (this.backTarget) { - this.backTarget.dispose(); - this.backTarget = void 0; + } +}; +_SplatWorker.currentId = 0; +let SplatWorker = _SplatWorker; +class NewSplatWorkerPool { + constructor(maxWorkers = 4) { + this.numWorkers = 0; + this.freelist = []; + this.queue = []; + this.maxWorkers = maxWorkers; + } + async withWorker(callback) { + const worker = await this.allocWorker(); + try { + return await callback(worker); + } finally { + this.freeWorker(worker); } - if (this.orderingTexture) { - this.orderingTexture.dispose(); - this.orderingTexture = null; + } + async allocWorker() { + const worker = this.freelist.pop(); + if (worker) { + return worker; + } + if (this.numWorkers < this.maxWorkers) { + const worker2 = new SplatWorker(); + this.numWorkers += 1; + return worker2; + } + return new Promise((resolve) => { + this.queue.push(resolve); + }); + } + freeWorker(worker) { + if (this.numWorkers > this.maxWorkers) { + this.numWorkers -= 1; + return; + } + const waiter = this.queue.shift(); + if (waiter) { + waiter(worker); + return; + } + this.freelist.push(worker); + } +} +const workerPool = new NewSplatWorkerPool(); +const _PackedSplats = class _PackedSplats { + constructor(options = {}) { + this.maxSplats = 0; + this.numSplats = 0; + this.packedArray = null; + this.maxSh = 3; + this.isInitialized = false; + this.target = null; + this.source = null; + this.needsUpdate = true; + this.extra = {}; + this.dyno = new DynoPackedSplats({ packedSplats: this }); + this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({ + key: "rgbMinMaxLnScaleMinMax", + value: new THREE.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX), + update: (value) => { + var _a2, _b2, _c, _d; + value.set( + ((_a2 = this.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, + ((_b2 = this.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, + ((_c = this.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, + ((_d = this.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX + ); + return value; + } + }); + this.dynoNumSh = new DynoInt({ + key: "numSh", + value: 0, + update: () => { + return Math.min(this.getNumSh(), this.maxSh); + } + }); + this.dynoShMax = new DynoVec3({ + key: "shMax", + value: new THREE.Vector3(), + update: (value) => { + var _a2, _b2, _c; + value.set( + ((_a2 = this.splatEncoding) == null ? void 0 : _a2.sh1Max) ?? 1, + ((_b2 = this.splatEncoding) == null ? void 0 : _b2.sh2Max) ?? 1, + ((_c = this.splatEncoding) == null ? void 0 : _c.sh3Max) ?? 1 + ); + return value; + } + }); + this.initialized = Promise.resolve(this); + this.reinitialize(options); + } + reinitialize(options) { + this.isInitialized = false; + this.extra = {}; + this.maxSplats = options.maxSplats ?? 0; + this.splatEncoding = options.splatEncoding; + this.lod = options.lod; + this.nonLod = options.nonLod; + if (options.url || options.fileBytes || options.stream || options.construct) { + this.initialized = this.asyncInitialize(options).then(() => { + this.isInitialized = true; + return this; + }); + } else { + this.initialize(options); + this.isInitialized = true; + this.initialized = Promise.resolve(this); } - const accumulators = /* @__PURE__ */ new Set(); - accumulators.add(this.display); - accumulators.add(this.current); - for (const accumulator of this.accumulators) { - accumulators.add(accumulator); + } + initialize(options) { + this.extra = options.extra ?? {}; + this.splatEncoding = options.splatEncoding ?? this.splatEncoding; + this.lodSplats = options.lodSplats; + if (options.packedArray) { + this.packedArray = options.packedArray; + this.numSplats = options.numSplats ?? this.packedArray.length / 4; + this.maxSplats = Math.floor(this.packedArray.length / 4); + this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + this.numSplats = Math.min( + this.maxSplats, + options.numSplats ?? Number.POSITIVE_INFINITY + ); + } else { + this.maxSplats = options.maxSplats ?? 0; + this.numSplats = 0; } - for (const accumulator of accumulators) { - accumulator.dispose(); + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + construct, + lod, + nonLod, + lodAbove + } = options; + this.lod = lod; + this.nonLod = nonLod; + const loader = new SplatLoader(); + if (fileBytes || url || stream) { + await loader.loadInternalAsync({ + packedSplats: this, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress: options.onProgress, + lodAbove + }); } - const instances = this.lodInstances.values(); - this.lodInstances.clear(); - for (const instance of instances) { - instance.texture.dispose(); + if (construct) { + const maybePromise = construct(this); + if (maybePromise instanceof Promise) { + await maybePromise; + } } - if (this.sortWorker) { - this.sortWorker.dispose(); - this.sortWorker = null; + } + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. + dispose() { + if (this.target) { + this.target.dispose(); + this.target.texture.source.data = null; + this.target = null; } - if (this.lodWorker) { - this.lodWorker.dispose(); - this.lodWorker = null; + if (this.source) { + this.source.dispose(); + this.source.source.data = null; + this.source = null; } - if (this.pager) { - this.pager.dispose(); - this.pager = void 0; + this.packedArray = null; + for (const key in this.extra) { + const dyno2 = this.extra[key]; + if (dyno2 instanceof DynoUniform) { + const texture2 = dyno2.value; + if (texture2 == null ? void 0 : texture2.isTexture) { + texture2.dispose(); + texture2.source.data = null; + } + } } + this.extra = {}; + this.disposeLodSplats(); } - setDirty() { - var _a2; - if (!this.dirty) { - this.dirty = true; - (_a2 = this.onDirty) == null ? void 0 : _a2.call(this); + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; + } + hasRgbDir() { + return Math.min(this.getNumSh(), this.maxSh) > 0; + } + getNumSh() { + return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3; + } + setMaxSh(maxSh) { + this.maxSh = maxSh; + } + fetchSplat({ + index, + viewOrigin + }) { + let gsplat = readPackedSplat(this.dyno, index); + if (this.hasRgbDir() && viewOrigin) { + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures(); + let { rgb } = evaluatePackedSH({ + coord: splatTexCoord(index), + viewDir, + numSh: this.dynoNumSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax: this.dynoShMax + }); + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); } + return gsplat; } - onBeforeRender(renderer, scene, camera) { - var _a2; - const spark = _SparkRenderer.sparkOverride ?? this; - const frame = renderer.info.render.frame; - const isNewFrame = frame !== spark.lastFrame; - spark.lastFrame = frame; - if (spark.target) { - spark.renderSize.set(spark.target.width, spark.target.height); - } else { - const renderSize = renderer.getDrawingBufferSize(spark.renderSize); - if (renderer.xr.isPresenting) { - if (renderSize.x === 1 && renderSize.y === 1) { - const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; - if (baseLayer) { - renderSize.x = baseLayer.framebufferWidth; - renderSize.y = baseLayer.framebufferHeight; - } - } - } + ensureShTextures() { + if (!this.extra.sh1) { + return {}; } - this.uniforms.renderSize.value.copy(spark.renderSize); - const typedCamera = camera; - this.uniforms.near.value = typedCamera.near; - this.uniforms.far.value = typedCamera.far; - const geometry = this.geometry; - geometry.instanceCount = spark.activeSplats; - const accumToWorld = new THREE.Matrix4(); - if (!this.display.extSplats) { - accumToWorld.makeTranslation(spark.display.viewOrigin); + let sh1Texture = this.extra.sh1Texture; + if (!sh1Texture) { + let sh1 = this.extra.sh1; + const { width, height, depth, maxSplats } = getTextureSize( + sh1.length / 2 + ); + if (sh1.length < maxSplats * 2) { + const newSh1 = new Uint32Array(maxSplats * 2); + newSh1.set(sh1); + this.extra.sh1 = newSh1; + sh1 = newSh1; + } + const texture2 = new THREE.DataArrayTexture(sh1, width, height, depth); + texture2.format = THREE.RGIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + sh1Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh1" + }); + this.extra.sh1Texture = sh1Texture; } - const cameraToWorld = camera.matrixWorld.clone(); - const worldToCamera = cameraToWorld.invert(); - const accumToCamera = worldToCamera.multiply(accumToWorld); - accumToCamera.decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new THREE.Vector3() - ); - this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera); - this.uniforms.maxStdDev.value = spark.maxStdDev; - this.uniforms.minPixelRadius.value = spark.minPixelRadius; - this.uniforms.maxPixelRadius.value = spark.maxPixelRadius; - this.uniforms.minAlpha.value = spark.minAlpha; - this.uniforms.enable2DGS.value = spark.enable2DGS; - this.uniforms.lodInflate.value = spark.lodInflate; - this.uniforms.preBlurAmount.value = spark.preBlurAmount; - this.uniforms.blurAmount.value = spark.blurAmount; - this.uniforms.focalDistance.value = spark.focalDistance; - this.uniforms.apertureAngle.value = spark.apertureAngle; - this.uniforms.falloff.value = spark.falloff; - this.uniforms.clipXY.value = spark.clipXY; - this.uniforms.focalAdjustment.value = spark.focalAdjustment; - this.uniforms.encodeLinear.value = spark.encodeLinear; - this.uniforms.ordering.value = spark.orderingTexture ?? _SparkRenderer.emptyOrdering; - this.uniforms.enableExtSplats.value = this.display.extSplats; - this.uniforms.enableCovSplats.value = this.display.covSplats; - if (this.display.extSplats) { - const extSplats = spark.display.getTextures(); - this.uniforms.extSplats.value = extSplats[0]; - this.uniforms.extSplats2.value = extSplats[1]; - } else { - const packedSplats = spark.display.getTextures(); - this.uniforms.extSplats.value = packedSplats[0]; - this.uniforms.extSplats2.value = packedSplats[0]; + if (!this.extra.sh2) { + return { sh1Texture }; } - this.uniforms.time.value = spark.display.time; - this.uniforms.deltaTime.value = spark.display.deltaTime; - this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; - if (spark.autoUpdate && isNewFrame) { - const preUpdate = spark.preUpdate && !renderer.xr.isPresenting; - const useCamera = renderer.xr.isPresenting ? renderer.xr.getCamera() : camera; - if (preUpdate) { - spark.updateInternal({ - scene, - camera: useCamera, - autoUpdate: true - }); - } else { - if (spark.updateTimeoutId === -1) { - spark.updateTimeoutId = setTimeout(() => { - spark.updateTimeoutId = -1; - spark.updateInternal({ - scene, - camera: useCamera, - autoUpdate: true - }); - }, 1); - } + let sh2Texture = this.extra.sh2Texture; + if (!sh2Texture) { + let sh2 = this.extra.sh2; + const { width, height, depth, maxSplats } = getTextureSize( + sh2.length / 4 + ); + if (sh2.length < maxSplats * 4) { + const newSh2 = new Uint32Array(maxSplats * 4); + newSh2.set(sh2); + this.extra.sh2 = newSh2; + sh2 = newSh2; } + const texture2 = new THREE.DataArrayTexture(sh2, width, height, depth); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + sh2Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh2" + }); + this.extra.sh2Texture = sh2Texture; } - spark.dirty = false; - } - clearSplats() { - this.activeSplats = 0; - this.display.numSplats = 0; - this.setDirty(); - } - async update({ - scene, - camera - }) { - await this.updateInternal({ scene, camera, autoUpdate: false }); - } - // /** - // * Provide additional cameras to prefetch paged splat chunks without - // * affecting main LOD selection. - // */ - // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { - // const next = cameras?.filter(Boolean) ?? []; - // const sameCameras = - // this.prefetchCameras.length === next.length && - // this.prefetchCameras.every((camera, index) => camera === next[index]); - // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { - // return; - // } - // this.prefetchCameras = next; - // this.prefetchLodScale = lodScaleMultiplier; - // this.invalidatePrefetchCache(); - // } - // /** - // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are - // * added or removed from the scene. - // */ - // invalidatePrefetchCache() { - // this.prefetchMeshesCacheScene = undefined; - // } - async updateInternal({ - scene, - camera, - autoUpdate - }) { - const renderer = this.renderer; - const time = this.time ?? this.clock.getElapsedTime(); - const center = camera.getWorldPosition(new THREE.Vector3()); - const dir = camera.getWorldDirection(new THREE.Vector3()); - const viewChanged = center.distanceTo(this.sortedCenter) > 1e-3 || dir.dot(this.sortedDir) < 0.999; - const next = this.accumulators.pop(); - if (!next) { - throw new Error("No next accumulator"); + if (!this.extra.sh3) { + return { sh1Texture, sh2Texture }; } - if (next === this.current) { - throw new Error( - "Next accumulator is the same as the current accumulator" + let sh3Texture = this.extra.sh3Texture; + if (!sh3Texture) { + let sh3 = this.extra.sh3; + const { width, height, depth, maxSplats } = getTextureSize( + sh3.length / 4 ); + if (sh3.length < maxSplats * 4) { + const newSh3 = new Uint32Array(maxSplats * 4); + newSh3.set(sh3); + this.extra.sh3 = newSh3; + sh3 = newSh3; + } + const texture2 = new THREE.DataArrayTexture(sh3, width, height, depth); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + sh3Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh3" + }); + this.extra.sh3Texture = sh3Texture; } - const { version, mappingVersion, visibleGenerators, generate } = next.prepareGenerate({ - renderer, - scene, - time, - camera, - sortRadial: this.sortRadial ?? true, - renderSize: this.renderSize, - previous: this.current, - lodInstances: this.enableLod ? this.lodInstances : void 0 - }); - let doUpdate = true; - const needsUpdate = viewChanged || version !== this.current.version; - const mappingUpdated = mappingVersion !== this.display.mappingVersion; - if (autoUpdate && !needsUpdate) { - doUpdate = false; + return { sh1Texture, sh2Texture, sh3Texture }; + } + // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(numSplats) { + const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(numSplats, 2 * this.maxSplats) + ); + const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4; + if (!this.packedArray || targetSize > currentSize) { + this.maxSplats = getTextureSize(targetSize).maxSplats; + const newArray2 = new Uint32Array(this.maxSplats * 4); + if (this.packedArray) { + newArray2.set(this.packedArray); + } + this.packedArray = newArray2; } - if (mappingUpdated && this.sorting) { - doUpdate = false; + return this.packedArray; + } + // Ensure the extra array for the given level is large enough to hold numSplats + ensureSplatsSh(level, numSplats) { + let wordsPerSplat; + let key; + if (level === 0) { + return this.ensureSplats(numSplats); } - if (!doUpdate) { - this.accumulators.push(next); + if (level === 1) { + wordsPerSplat = 2; + key = "sh1"; + } else if (level === 2) { + wordsPerSplat = 4; + key = "sh2"; + } else if (level === 3) { + wordsPerSplat = 4; + key = "sh3"; } else { - generate(); - if (this.flushAfterGenerate) { - const gl = renderer.getContext(); - gl.flush(); - } - if (this.display.mappingVersion === next.mappingVersion) { - this.accumulators.push(this.display); - this.display = next; - } else { - if (this.display !== this.current) { - this.accumulators.push(this.current); - } + throw new Error(`Invalid level: ${level}`); + } + let maxSplats = !this.extra[key] ? 0 : this.extra[key].length / wordsPerSplat; + const targetSize = numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats); + if (!this.extra[key] || targetSize > maxSplats) { + maxSplats = getTextureSize(targetSize).maxSplats; + const newArray2 = new Uint32Array(maxSplats * wordsPerSplat); + if (this.extra[key]) { + newArray2.set(this.extra[key]); } - this.current = next; - this.sortDirty = true; - this.setDirty(); + this.extra[key] = newArray2; } - if (this.enableDriveLod) { - this.driveLod({ visibleGenerators, camera, scene }); + return this.extra[key]; + } + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(index) { + if (!this.packedArray || index >= this.numSplats) { + throw new Error("Invalid index"); } - await this.driveSort(); + return unpackSplat(this.packedArray, index, this.splatEncoding); } - async driveSort() { - if (this.sorting || !this.sortDirty) { + // Set all PackedSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(index, center, scales, quaternion, opacity, color) { + const packedSplats = this.ensureSplats(index + 1); + setPackedSplat( + packedSplats, + index, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + this.numSplats = Math.max(this.numSplats, index + 1); + } + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(center, scales, quaternion, opacity, color) { + const packedSplats = this.ensureSplats(this.numSplats + 1); + setPackedSplat( + packedSplats, + this.numSplats, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + ++this.numSplats; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.packedArray || !this.numSplats) { return; } - if (this.sortTimeoutId !== -1) { - clearTimeout(this.sortTimeoutId); - this.sortTimeoutId = -1; + for (let i = 0; i < this.numSplats; ++i) { + const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color + ); } - const now = performance.now(); - const nextSortTime = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : now; - if (now < nextSortTime) { - this.sortTimeoutId = setTimeout(() => { - this.sortTimeoutId = -1; - this.driveSort(); - }, nextSortTime - now); - return; + } + // Ensures our PackedSplats.target render target has enough space to generate + // maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate(maxSplats) { + if (this.target && (maxSplats ?? 1) <= this.maxSplats) { + return false; } - this.sorting = true; - this.sortDirty = false; - this.lastSortTime = now; - if (this.readPause > 0) { - await new Promise((resolve) => setTimeout(resolve, this.readPause)); + if (this.target) { + this.target.dispose(); } - const current = this.current; - this.sortedCenter.copy(current.viewOrigin); - this.sortedDir.copy(current.viewDirection); - const { numSplats, maxSplats } = current; - const rows = Math.max(1, Math.ceil(maxSplats / 16384)); - const orderingMaxSplats = rows * 16384; - this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats); - const ordering = new Uint32Array(this.maxSplats); - const readback = Readback.ensureBuffer(maxSplats, this.readback32); - this.readback32 = readback; - await this.readbackDepth({ - current, - renderer: this.renderer, - numSplats, - readback + const textureSize2 = getTextureSize(maxSplats ?? 1); + const { width, height, depth } = textureSize2; + this.maxSplats = textureSize2.maxSplats; + this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, { + depthBuffer: false, + stencilBuffer: false, + generateMipmaps: false, + magFilter: THREE.NearestFilter, + minFilter: THREE.NearestFilter }); - if (this.sortPause > 0) { - await new Promise((resolve) => setTimeout(resolve, this.sortPause)); - } - if (!this.sortWorker) { - this.sortWorker = new SplatWorker(); - } - const result = await this.sortWorker.call("sortSplats32", { - numSplats, - readback, - ordering + this.target.texture.format = THREE.RGBAIntegerFormat; + this.target.texture.type = THREE.UnsignedIntType; + this.target.texture.internalFormat = "RGBA32UI"; + this.target.scissorTest = true; + return true; + } + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(splatCounts) { + let maxSplats = 0; + const mapping = splatCounts.map((numSplats) => { + const base = maxSplats; + const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + maxSplats += rounded; + return { base, count: numSplats }; }); - if (this.sortDelay > 0) { - await new Promise((resolve) => setTimeout(resolve, this.sortDelay)); + return { maxSplats, mapping }; + } + // Returns a THREE.DataArrayTexture representing the PackedSplats content as + // a Uint32x4 data array texture (2048 x 2048 x depth in size) + getTexture() { + if (this.target) { + return this.target.texture; } - this.readback32 = result.readback; - this.activeSplats = result.activeSplats; - if (this.orderingTexture) { - if (rows > this.orderingTexture.image.height) { - this.orderingTexture.dispose(); - this.orderingTexture = null; - } + if (this.source || this.packedArray) { + const source = this.maybeUpdateSource(); + return source; } - if (!this.orderingTexture) { - const orderingTexture = new THREE.DataTexture( - result.ordering, - 4096, - rows, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType - ); - orderingTexture.internalFormat = "RGBA32UI"; - orderingTexture.needsUpdate = true; - this.orderingTexture = orderingTexture; - } else { - const renderer = this.renderer; - const gl = renderer.getContext(); - if (!renderer.properties.has(this.orderingTexture)) { - this.orderingTexture.needsUpdate = true; - } else { - const props = renderer.properties.get(this.orderingTexture); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("ordering texture not found"); + return _PackedSplats.getEmptyArray; + } + // Check if source texture needs to be created/updated + maybeUpdateSource() { + if (!this.packedArray) { + throw new Error("No packed splats"); + } + if (this.needsUpdate || !this.source) { + this.needsUpdate = false; + if (this.source) { + const { width, height, depth } = this.source.image; + if (this.maxSplats !== width * height * depth) { + this.source.dispose(); + this.source = null; } - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - // data, - result.ordering + } + if (!this.source) { + const { width, height, depth } = getTextureSize(this.maxSplats); + this.source = new THREE.DataArrayTexture( + this.packedArray, + width, + height, + depth ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); + this.source.format = THREE.RGBAIntegerFormat; + this.source.type = THREE.UnsignedIntType; + this.source.internalFormat = "RGBA32UI"; + this.source.needsUpdate = true; + } else if (this.packedArray.buffer !== this.source.image.data.buffer) { + this.source.image.data = new Uint8Array(this.packedArray.buffer); } + this.source.needsUpdate = true; } - if (this.current.mappingVersion === current.mappingVersion) { - if (this.current.mappingVersion !== this.display.mappingVersion) { - this.accumulators.push(this.display); - this.display = this.current; + return this.source; + } + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(generator) { + let program = _PackedSplats.generatorProgram.get(generator); + if (!program) { + const graph = dynoBlock( + { index: "int" }, + {}, + ({ index }, _outputs, { roots }) => { + generator.inputs.index = index; + const gsplat = generator.outputs.gsplat; + const output = outputPackedSplat( + gsplat, + this.dynoRgbMinMaxLnScaleMinMax + ); + roots.push(output); + return void 0; + } + ); + if (!_PackedSplats.programTemplate) { + _PackedSplats.programTemplate = new DynoProgramTemplate( + getShaders().computeUvec4Template + ); } + program = new DynoProgram({ + graph, + inputs: { index: "_index" }, + outputs: { output: "target" }, + template: _PackedSplats.programTemplate + }); + Object.assign(program.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } + }); + _PackedSplats.generatorProgram.set(generator, program); } - this.sorting = false; - this.setDirty(); - this.driveSort(); + const material = program.prepareMaterial(); + _PackedSplats.fullScreenQuad.material = material; + return { program, material }; } - ensureLodWorker() { - if (!this.lodWorker) { - this.lodWorker = new SplatWorker(); - } - return this.lodWorker; + saveRenderState(renderer) { + return { + target: renderer.getRenderTarget(), + xrEnabled: renderer.xr.enabled, + autoClear: renderer.autoClear + }; } - defaultSplatTarget() { - return isOculus() ? 5e5 : isVisionPro() ? 75e4 : isAndroid() ? 1e6 : isIos() ? 15e5 : 25e5; + resetRenderState(renderer, state) { + renderer.setRenderTarget(state.target); + renderer.xr.enabled = state.xrEnabled; + renderer.autoClear = state.autoClear; } - driveLod({ - visibleGenerators, - camera, - scene + // Executes a dyno program specified by generator which is any DynoBlock that + // maps { index: "int" } to { gsplat: Gsplat }. This is called in + // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for + // SplatGenerator instances whose version is newer than what was generated + // for it last time. + generate({ + generator, + base, + count, + renderer }) { - var _a2, _b2; - const defaultSplatCount = this.defaultSplatTarget(); - const splatCount = this.lodSplatCount ?? defaultSplatCount; - const maxSplats = splatCount * this.lodSplatScale; - let pixelScaleLimit = 0; - if (camera instanceof THREE.PerspectiveCamera) { - const tanYfov = Math.tan(0.5 * camera.fov * Math.PI / 180); - pixelScaleLimit = 2 * tanYfov / this.renderSize.y; - } else if (camera instanceof THREE.OrthographicCamera) { - const viewHeight = (camera.top - camera.bottom) / camera.zoom; - const viewWidth = (camera.right - camera.left) / camera.zoom; - const pxY = viewHeight / Math.max(1, this.renderSize.y); - const pxX = viewWidth / Math.max(1, this.renderSize.x); - pixelScaleLimit = Math.min(pxX, pxY); + if (!this.target) { + throw new Error("Target must be initialized with ensureSplats"); } - pixelScaleLimit *= this.lodRenderScale; - const viewPos = new THREE.Vector3(); - const viewQuat = new THREE.Quaternion(); - this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3()); - if (this.lodPosOverride) { - viewPos.copy(this.lodPosOverride); + if (base + count > this.maxSplats) { + throw new Error("Base + count exceeds maxSplats"); } - if (this.lodQuatOverride) { - viewQuat.copy(this.lodQuatOverride).normalize(); + const { program, material } = this.prepareProgramMaterial(generator); + program.update(); + const renderState = this.saveRenderState(renderer); + const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + material.uniforms.targetBase.value = base; + material.uniforms.targetCount.value = count; + while (base < nextBase) { + const layer = Math.floor(base / layerSize); + material.uniforms.targetLayer.value = layer; + const layerBase = layer * layerSize; + const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) + ); + this.target.scissor.set( + 0, + layerYStart, + SPLAT_TEX_WIDTH, + layerYEnd - layerYStart + ); + renderer.setRenderTarget(this.target, layer); + renderer.xr.enabled = false; + renderer.autoClear = false; + _PackedSplats.fullScreenQuad.render(renderer); + base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); } - if (this.lastLod) { - if (this.lastLod.pixelScaleLimit !== pixelScaleLimit || this.lastLod.maxSplats !== maxSplats) { - this.lodDirty = true; - } - const distance2 = viewPos.distanceTo(this.lastLod.pos); - const distanceRamp = Math.max(0, 1 - distance2 / 1); - const dot2 = viewQuat.dot(this.lastLod.quat); - const quatRamp = Math.max(0, 1 - (1 - dot2) / 0.01); - const similarity = distanceRamp * quatRamp; - if (similarity < 0.999) { - this.lodDirty = true; - } + this.resetRenderState(renderer, renderState); + return { nextBase }; + } + disposeLodSplats() { + if (this.lodSplats) { + this.lodSplats.dispose(); + this.lodSplats = void 0; } - const lodMeshes = !this.enableLod ? [] : visibleGenerators.filter((generator) => { - var _a3, _b3; - return generator instanceof SplatMesh && (((_a3 = generator.packedSplats) == null ? void 0 : _a3.lodSplats) || ((_b3 = generator.extSplats) == null ? void 0 : _b3.lodSplats) || generator.paged) && generator.enableLod !== false; + } + async createLodSplats({ + rgbaArray, + quality + } = {}) { + const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; + const packedArray = this.packedArray.slice(); + const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; + const extra = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }; + const decoded = await workerPool.withWorker(async (worker) => { + return await worker.call( + quality ? "qualityLodPackedSplats" : "tinyLodPackedSplats", + { + numSplats: this.numSplats, + packedArray, + extra, + lodBase, + rgba, + encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING + } + ); }); - const hasPaged = lodMeshes.some((mesh) => mesh.paged); - if (this.lodMeshes.length !== lodMeshes.length) { - this.lodDirty = true; - } else { - if (lodMeshes.some( - (m, i) => m !== this.lodMeshes[i].mesh || m.version > this.lodMeshes[i].version - )) { - this.lodDirty = true; - } + const lodSplats = new _PackedSplats(decoded); + if (this.lodSplats) { + this.lodSplats.dispose(); } - this.lodMeshes = lodMeshes.map((mesh) => ({ - mesh, - version: mesh.version + 1 - })); - this.lodInitQueue = []; - const now = performance.now(); - for (const mesh of lodMeshes) { - const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; - if (splats) { - const record = this.lodIds.get(splats); - if (record) { - record.lastTouched = now; - } else { - this.lodInitQueue.push(splats); - } + this.lodSplats = lodSplats; + this.nonLod = true; + this.lod = quality ? "quality" : true; + } + extractSplats(indices, pageColoring) { + const maxSplats = getTextureSize(indices.length).maxSplats; + const newSplats = new _PackedSplats({ maxSplats }); + for (let i = 0; i < indices.length; i++) { + const splat = this.getSplat(indices[i]); + if (pageColoring) { + let hue = (indices[i] >>> 16) * 0.61803398875; + hue = hue - Math.floor(hue); + const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); + const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); + const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); + splat.color.r *= r; + splat.color.g *= g; + splat.color.b *= b; } + newSplats.pushSplat( + splat.center, + splat.scales, + splat.quaternion, + splat.opacity, + splat.color + ); } - this.ensureLodWorker().tryExclusive(async (worker) => { - if (hasPaged && !this.pager) { - this.pager = new SplatPager({ - renderer: this.renderer, - extSplats: this.pagedExtSplats, - maxSplats: this.maxPagedSplats, - numFetchers: this.numLodFetchers - }); - const { lodId } = await worker.call("newLodTree", { - capacity: this.pager.maxSplats - }); - this.pagerId = lodId; - } - if (this.pager) { - for (const { mesh } of this.lodMeshes) { - if (mesh.paged && !mesh.paged.pager) { - mesh.paged.pager = this.pager; - } - } - } - if (this.lodInitQueue.length > 0) { - const lodInitQueue = this.lodInitQueue; - this.lodInitQueue = []; - while (lodInitQueue.length > 0) { - const splats = lodInitQueue.shift(); - if (splats) { - await this.initLodTree(worker, splats); - this.lodDirty = true; - } - } - } - if (this.pager) { - const updates = this.pager.consumeLodTreeUpdates(); - for (const { splats, page, chunk, numSplats, lodTree } of updates) { - const record = this.lodIds.get(splats); - if (record) { - if (lodTree && chunk === 0) { - record.rootPage = page; - } - this.lodUpdates.push({ - lodId: record.lodId, - pageBase: page * this.pager.pageSplats, - chunkBase: chunk * this.pager.pageSplats, - count: numSplats, - lodTreeData: lodTree - }); - } - } - } - if (this.lodUpdates.length > 0) { - const lodUpdates = this.lodUpdates; - this.lodUpdates = []; - await worker.call("updateLodTrees", { ranges: lodUpdates }); - this.lodDirty = true; - } - if (this.lodDirty) { - const now2 = performance.now(); - const deltaPred = new THREE.Vector3(); - if (this.lastLod) { - const deltaTime = Math.max(1, now2 - this.lastLod.timestamp); - deltaPred.copy(viewPos).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / deltaTime); - } - this.lastLod = { - pos: viewPos, - quat: viewQuat, - pixelScaleLimit, - maxSplats, - timestamp: now2 - }; - this.lodDirty = false; - await this.updateLodInstances( - worker, - deltaPred, - lodMeshes, - maxSplats, - viewPos, - viewQuat, - pixelScaleLimit + return newSplats; + } +}; +_PackedSplats.getEmptyArray = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_PackedSplats.programTemplate = null; +_PackedSplats.generatorProgram = /* @__PURE__ */ new WeakMap(); +_PackedSplats.fullScreenQuad = new FullScreenQuad( + new THREE.RawShaderMaterial({ visible: false }) +); +_PackedSplats.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_PackedSplats.emptyUint32x2 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 2); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +let PackedSplats = _PackedSplats; +class DynoPackedSplats extends DynoUniform { + constructor({ packedSplats } = {}) { + super({ + key: "packedSplats", + type: TPackedSplats, + globals: () => [definePackedSplats], + value: { + textureArray: PackedSplats.getEmptyArray, + numSplats: 0, + rgbMinMaxLnScaleMinMax: new THREE.Vector4( + 0, + 1, + LN_SCALE_MIN, + LN_SCALE_MAX + ), + lodOpacity: false + }, + update: (value) => { + var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; + value.textureArray = ((_a2 = this.packedSplats) == null ? void 0 : _a2.getTexture()) ?? PackedSplats.getEmptyArray; + value.numSplats = ((_b2 = this.packedSplats) == null ? void 0 : _b2.numSplats) ?? 0; + value.rgbMinMaxLnScaleMinMax.set( + ((_d = (_c = this.packedSplats) == null ? void 0 : _c.splatEncoding) == null ? void 0 : _d.rgbMin) ?? 0, + ((_f = (_e = this.packedSplats) == null ? void 0 : _e.splatEncoding) == null ? void 0 : _f.rgbMax) ?? 1, + ((_h = (_g = this.packedSplats) == null ? void 0 : _g.splatEncoding) == null ? void 0 : _h.lnScaleMin) ?? LN_SCALE_MIN, + ((_j = (_i = this.packedSplats) == null ? void 0 : _i.splatEncoding) == null ? void 0 : _j.lnScaleMax) ?? LN_SCALE_MAX ); - this.currentLod = this.lastLod; - this.setDirty(); + value.lodOpacity = ((_l = (_k = this.packedSplats) == null ? void 0 : _k.splatEncoding) == null ? void 0 : _l.lodOpacity) ?? false; + return value; } - await this.cleanupLodTrees(worker); }); + this.packedSplats = packedSplats; } - async initLodTree(worker, splats) { - if (splats instanceof PackedSplats || splats instanceof ExtSplats) { - const { lodId } = await worker.call("initLodTree", { - numSplats: splats.numSplats ?? 0, - lodTree: splats.extra.lodTree.slice() - }); - this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); - this.lodIdToSplats.set(lodId, splats); - } else { - const { lodId } = await worker.call("newSharedLodTree", { - lodId: this.pagerId - }); - this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); - this.lodIdToSplats.set(lodId, splats); - } +} +const defineEvalPackedSH1 = unindent(` + vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { + // Extract sint7 values packed into 2 x uint32 + vec3 sh1_0 = vec3(ivec3( + int(packedData.x << 25u) >> 25, + int(packedData.x << 18u) >> 25, + int(packedData.x << 11u) >> 25 + )); + vec3 sh1_1 = vec3(ivec3( + int(packedData.x << 4u) >> 25, + int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, + int(packedData.y << 22u) >> 25 + )); + vec3 sh1_2 = vec3(ivec3( + int(packedData.y << 15u) >> 25, + int(packedData.y << 8u) >> 25, + int(packedData.y << 1u) >> 25 + )); + + vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + return rgb * (sh1Max / 63.0); } - async updateLodInstances(worker, deltaPred, lodMeshes, maxSplats, viewPos, viewQuat, pixelScaleLimit) { - const uuidToMesh = /* @__PURE__ */ new Map(); - const cameraToWorld = new THREE.Matrix4().compose( - viewPos, - viewQuat, - new THREE.Vector3().setScalar(1) - ); - const instances = lodMeshes.reduce( - (instances2, mesh) => { - var _a2, _b2; - uuidToMesh.set(mesh.uuid, mesh); - const viewToObject = mesh.matrixWorld.clone().invert().multiply(cameraToWorld); - const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; - if (!splats) { - return instances2; - } - const record = this.lodIds.get(splats); - if (!record) { - return instances2; - } - if (this.pager && mesh.paged && record.rootPage === void 0) { - return instances2; - } - instances2[mesh.uuid] = { - instanceId: mesh.uuid, - lodId: record.lodId, - rootPage: record.rootPage, - viewToObjectCols: viewToObject.elements, - lodScale: mesh.lodScale, - behindFoveate: mesh.behindFoveate ?? this.behindFoveate, - coneFov0: mesh.coneFov0 ?? this.coneFov0, - coneFov: mesh.coneFov ?? this.coneFov, - coneFoveate: mesh.coneFoveate ?? this.coneFoveate - }; - return instances2; - }, - {} - ); - const traverseStart = performance.now(); - const result = await worker.call("traverseLodTrees", { - maxSplats, - pixelScaleLimit, - lastPixelLimit: this.lastPixelLimit, - instances - }); - this.lastTraverseTime = performance.now() - traverseStart; - const { keyIndices, chunks, pixelLimit } = result; - this.lastPixelLimit = pixelLimit; - const totalLodSplats = Object.values(keyIndices).reduce( - (sum, { numSplats }) => sum + numSplats, - 0 - ); - this.updateLodIndices(uuidToMesh, keyIndices); - if (this.pager) { - this.pager.processUploads(); - const pagedMeshes = lodMeshes.map((mesh) => { - if (!mesh.paged || !this.pager) { - return null; - } - const meshPosition = mesh.getWorldPosition(new THREE.Vector3()); - return { - splats: mesh.paged, - distance: meshPosition.distanceTo(viewPos) - }; - }).filter((result2) => result2 !== null); - if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) { - this.pageSizeWarning = true; - console.warn( - `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}` +`); +const defineEvalPackedSH2 = unindent(` + vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { + // Extract sint8 values packed into 4 x uint32 + vec3 sh2_0 = vec3(ivec3( + int(packedData.x << 24u) >> 24, + int(packedData.x << 16u) >> 24, + int(packedData.x << 8u) >> 24 + )); + vec3 sh2_1 = vec3(ivec3( + int(packedData.x) >> 24, + int(packedData.y << 24u) >> 24, + int(packedData.y << 16u) >> 24 + )); + vec3 sh2_2 = vec3(ivec3( + int(packedData.y << 8u) >> 24, + int(packedData.y) >> 24, + int(packedData.z << 24u) >> 24 + )); + vec3 sh2_3 = vec3(ivec3( + int(packedData.z << 16u) >> 24, + int(packedData.z << 8u) >> 24, + int(packedData.z) >> 24 + )); + vec3 sh2_4 = vec3(ivec3( + int(packedData.w << 24u) >> 24, + int(packedData.w << 16u) >> 24, + int(packedData.w << 8u) >> 24 + )); + + vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + return rgb * (sh2Max / 127.0); + } +`); +const defineEvalPackedSH3 = unindent(` + vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { + // Extract sint6 values packed into 4 x uint32 + vec3 sh3_0 = vec3(ivec3( + int(packedData.x << 26u) >> 26, + int(packedData.x << 20u) >> 26, + int(packedData.x << 14u) >> 26 + )); + vec3 sh3_1 = vec3(ivec3( + int(packedData.x << 8u) >> 26, + int(packedData.x << 2u) >> 26, + int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 + )); + vec3 sh3_2 = vec3(ivec3( + int(packedData.y << 22u) >> 26, + int(packedData.y << 16u) >> 26, + int(packedData.y << 10u) >> 26 + )); + vec3 sh3_3 = vec3(ivec3( + int(packedData.y << 4u) >> 26, + int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, + int(packedData.z << 24u) >> 26 + )); + vec3 sh3_4 = vec3(ivec3( + int(packedData.z << 18u) >> 26, + int(packedData.z << 12u) >> 26, + int(packedData.z << 6u) >> 26 + )); + vec3 sh3_5 = vec3(ivec3( + int(packedData.z) >> 26, + int(packedData.w << 26u) >> 26, + int(packedData.w << 20u) >> 26 + )); + vec3 sh3_6 = vec3(ivec3( + int(packedData.w << 14u) >> 26, + int(packedData.w << 8u) >> 26, + int(packedData.w << 2u) >> 26 + )); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + return rgb * (sh3Max / 31.0); + } +`); +function evaluatePackedSH({ + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax +}) { + return new Dyno({ + inTypes: { + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3Texture: "usampler2DArray", + shMax: "vec3" + }, + outTypes: { rgb: "vec3" }, + inputs: { + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3Texture, + shMax + }, + globals: () => [ + defineEvalPackedSH1, + defineEvalPackedSH2, + defineEvalPackedSH3 + ], + statements: ({ inputs, outputs }) => { + const lines = ["vec3 rgb = vec3(0.0);"]; + if (inputs.sh1Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 1) { + vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x); + rgb += sh1Rgb; + `) ); - } - pagedMeshes.sort((a, b) => a.distance - b.distance); - this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({ - splats, - chunk: 0 - })); - for (const [lodId, chunk] of chunks) { - const splats = this.lodIdToSplats.get(lodId); - if (splats instanceof PagedSplats) { - if (chunk !== 0) { - this.pager.fetchPriority.push({ splats, chunk }); + if (inputs.sh2Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 2) { + vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y); + rgb += sh2Rgb; + `) + ); + if (inputs.sh3Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 3) { + vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z); + rgb += sh3Rgb; + } + `) + ); } + lines.push("}"); } + lines.push("}"); } - this.pager.autoDrive = this.enableLodFetching; - if (this.enableLodFetching) { - this.pager.driveFetchers(); - } + lines.push(`${outputs.rgb} = rgb;`); + return lines; } - if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { - this.lastLodRaycastTime = performance.now(); - const traverseStart2 = performance.now(); - const result2 = await worker.call("traverseLodTrees", { - maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)), - pixelScaleLimit, - instances - }); - performance.now() - traverseStart2; - const { keyIndices: keyIndices2 } = result2; - Object.values(keyIndices2).reduce( - (sum, { numSplats }) => sum + numSplats, - 0 + }).outputs; +} +class SplatLoader extends Loader { + constructor(manager) { + super(manager); + this.fileLoader = new FileLoader(manager); + } + load(url, onLoad, onProgress, onError) { + return this.loadInternal({ + url, + onLoad, + onProgress, + onError + }); + } + async loadAsync(url, onProgress) { + return new Promise((resolve, reject) => { + this.load( + url, + (decoded) => { + resolve(decoded); + }, + onProgress, + reject ); - for (const [uuid, countIndices] of Object.entries(keyIndices2)) { - const mesh = uuidToMesh.get(uuid); - mesh.raycastIndices = countIndices; - } - } + }); } - async cleanupLodTrees(worker) { - const DISPOSE_TIMEOUT_MS = 3e3; - const now = performance.now(); - let oldest = null; - for (const [splats, record] of this.lodIds.entries()) { - if (oldest == null || record.lastTouched < oldest.lastTouched) { - oldest = { - splats, - lastTouched: record.lastTouched, - lodId: record.lodId - }; - } - } - if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) { - return; + parse(packedSplats) { + return new SplatMesh({ packedSplats }); + } + loadInternal({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onLoad, + onProgress, + onError, + lod, + nonLod, + lodAbove, + lodBase + }) { + if (fileBytes instanceof ArrayBuffer) { + fileBytes = new Uint8Array(fileBytes); } - this.lodIds.delete(oldest.splats); - this.lodIdToSplats.delete(oldest.lodId); - for (const [mesh, instance] of this.lodInstances.entries()) { - if (instance.lodId === oldest.lodId) { - instance.texture.dispose(); - this.lodInstances.delete(mesh); + const resolvedURL = fileBytes ? void 0 : this.manager.resolveURL((this.path ?? "") + (url ?? "")); + let readStream = stream == null ? void 0 : stream.getReader(); + this.manager.itemStart(resolvedURL ?? ""); + workerPool.withWorker(async (worker) => { + const splatsLod = (packedSplats == null ? void 0 : packedSplats.lod) ?? (extSplats == null ? void 0 : extSplats.lod); + if (splatsLod) { + lod = splatsLod; } - } - await worker.call("disposeLodTree", { lodId: oldest.lodId }); - } - updateLodIndices(uuidToMesh, keyIndices) { - for (const [uuid, countIndices] of Object.entries(keyIndices)) { - const { lodId, numSplats, indices } = countIndices; - const mesh = uuidToMesh.get(uuid); - if (mesh.paged) { - mesh.paged.update(numSplats, indices); - } else { - let instance = this.lodInstances.get(mesh); - if (instance) { - if (indices.length > instance.indices.length) { - instance.texture.dispose(); - instance = void 0; - } - } - const rows = Math.ceil(indices.length / 16384); - if (!instance) { - const capacity = rows * 16384; - if (indices.length !== capacity) { - throw new Error("Indices length != capacity"); - } - const texture2 = new THREE.DataTexture( - indices, - 4096, - rows, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType + const splatsNonLod = (packedSplats == null ? void 0 : packedSplats.nonLod) ?? (extSplats == null ? void 0 : extSplats.nonLod); + if (splatsNonLod !== void 0) { + nonLod = splatsNonLod; + } + const onStatus = async (data) => { + const { loaded, total } = data; + if (loaded !== void 0 && onProgress) { + onProgress( + new ProgressEvent("progress", { + lengthComputable: total !== 0, + loaded, + total + }) ); - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - instance = { lodId, numSplats, indices, texture: texture2 }; - this.lodInstances.set(mesh, instance); - } else { - instance.numSplats = numSplats; - const renderer = this.renderer; - const gl = renderer.getContext(); - if (renderer.properties.has(instance.texture)) { - const props = renderer.properties.get(instance.texture); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("lodIndices texture not found"); + } + if (data.nextChunk) { + let chunk; + if (!readStream) { + chunk = new Uint8Array(0); + } else { + const { done, value } = await readStream.read(); + if (done) { + readStream.releaseLock(); + readStream = void 0; + chunk = new Uint8Array(0); + } else { + chunk = value; } - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - indices - ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); } + worker.call("nextChunk", { chunk }); + } + }; + const basedUrl = resolvedURL ? new URL(resolvedURL, window.location.href).toString() : void 0; + const decoded = await worker.call( + extSplats ? "loadExtSplats" : "loadPackedSplats", + { + url: basedUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + fileBytes: fileBytes == null ? void 0 : fileBytes.slice(), + fileType, + pathName: resolvedURL || fileName, + chunked: stream !== void 0, + chunkedLength: streamLength, + encoding: packedSplats == null ? void 0 : packedSplats.splatEncoding, + lod, + lodBase, + nonLod, + lodAbove + }, + { onStatus } + ); + if (decoded.lodSplats) { + if (extSplats) { + decoded.lodSplats = new ExtSplats({ + ...decoded.lodSplats + }); + } else { + decoded.lodSplats = new PackedSplats({ + ...decoded.lodSplats, + maxSplats: packedSplats == null ? void 0 : packedSplats.maxSplats + }); } } - mesh.updateMappingVersion(); - } + if (extSplats) { + const initExtSplats = { + // ...(initExt ?? {}), + ...decoded + }; + extSplats.initialize(initExtSplats); + onLoad == null ? void 0 : onLoad(extSplats); + } else { + const initSplats = { + // ...(init ?? {}), + ...decoded + }; + if (packedSplats) { + packedSplats.initialize(initSplats); + onLoad == null ? void 0 : onLoad(packedSplats); + } else { + onLoad == null ? void 0 : onLoad(new PackedSplats(initSplats)); + } + } + }).catch((error) => { + this.manager.itemError(resolvedURL ?? ""); + onError == null ? void 0 : onError(error); + }).finally(() => { + this.manager.itemEnd(resolvedURL ?? ""); + }); } - async readbackDepth({ - current, - renderer, - numSplats, - readback + async loadInternalAsync({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress, + lod, + nonLod, + lodAbove, + lodBase }) { - if (!renderer) { - throw new Error("No renderer"); - } - if (!current.target) { - throw new Error("No target"); - } - const roundedCount = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - if (readback.byteLength < roundedCount * 4) { - throw new Error( - `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}` - ); + return new Promise((resolve, reject) => { + this.loadInternal({ + packedSplats, + extSplats, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onLoad: resolve, + onProgress, + onError: reject, + lod, + nonLod, + lodAbove, + lodBase + }); + }); + } +} +function getSplatFileType(fileBytes) { + const view = new DataView(fileBytes.buffer); + const magic = view.getUint32(0, true); + if ((magic & 16777215) === 7957616) { + return SplatFileType.PLY; + } + if ((magic & 16777215) === 559903) { + const header = decompressPartialGzip(fileBytes, 4); + const gView = new DataView(header.buffer); + if (gView.getUint32(0, true) === 1347635022) { + return SplatFileType.SPZ; } - const readbackUint8 = new Uint8Array(readback.buffer); - const renderState = this.saveRenderState(renderer); - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - let baseIndex = 0; - const promises = []; - while (baseIndex < numSplats) { - const layer = Math.floor(baseIndex / layerSize); - const layerBase = layer * layerSize; - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH) - ); - const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4; - const subReadback = readbackUint8.subarray( - layerBase * 4, - layerBase * 4 + readbackSize - ); - renderer.setRenderTarget(current.target, layer); - const promise = renderer.readRenderTargetPixelsAsync( - current.target, - 0, - 0, - SPLAT_TEX_WIDTH, - layerYEnd, - subReadback, - void 0, - current.extSplats ? 2 : 1 - ); - promises.push(promise); - if (this.flushAfterRead) { - const gl = renderer.getContext(); - gl.flush(); - } - baseIndex += SPLAT_TEX_WIDTH * layerYEnd; + return void 0; + } + if (magic === 67324752) { + if (tryPcSogsZip(fileBytes)) { + return SplatFileType.PCSOGSZIP; } - this.resetRenderState(renderer, renderState); - return Promise.all(promises).then(() => readback); + return void 0; } - saveRenderState(renderer) { - return { - target: renderer.getRenderTarget(), - xrEnabled: renderer.xr.enabled, - autoClear: renderer.autoClear - }; + if (magic === 809779538) { + return SplatFileType.RAD; } - resetRenderState(renderer, state) { - renderer.setRenderTarget(state.target); - renderer.xr.enabled = state.xrEnabled; - renderer.autoClear = state.autoClear; + return void 0; +} +function getFileExtension(pathOrUrl) { + const noTrailing = pathOrUrl.split(/[?#]/, 1)[0]; + const lastSlash = Math.max( + noTrailing.lastIndexOf("/"), + noTrailing.lastIndexOf("\\") + ); + const filename = noTrailing.slice(lastSlash + 1); + const lastDot = filename.lastIndexOf("."); + if (lastDot <= 0 || lastDot === filename.length - 1) { + return ""; } - render(scene, camera) { - try { - _SparkRenderer.sparkOverride = this; - this.renderer.render(scene, camera); - } finally { - _SparkRenderer.sparkOverride = void 0; - } + return filename.slice(lastDot + 1).toLowerCase(); +} +function getSplatFileTypeFromPath(pathOrUrl) { + const extension = getFileExtension(pathOrUrl); + if (extension === "ply") { + return SplatFileType.PLY; } - renderTarget({ - scene, - camera - }) { - const target = this.backTarget ?? this.target; - if (!target) { - throw new Error("No target"); - } - const previousTarget = this.renderer.getRenderTarget(); - try { - this.renderer.setRenderTarget(target); - _SparkRenderer.sparkOverride = this; - this.renderer.render(scene, camera); - } finally { - _SparkRenderer.sparkOverride = void 0; - this.renderer.setRenderTarget(previousTarget); - } - if (target !== this.target) { - [this.target, this.backTarget] = [this.backTarget, this.target]; - } - return target; + if (extension === "spz") { + return SplatFileType.SPZ; } - // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). Subsequent calls to this.readTarget() - // will reuse the same buffers to minimize memory allocations. - async readTarget() { - if (!this.target) { - throw new Error("Must initialize with target"); - } - const { width, height } = this.target; - const byteSize = width * height * 4; - if (!this.superPixels || this.superPixels.length < byteSize) { - this.superPixels = new Uint8Array(byteSize); - } - const superPixels = this.superPixels; - await this.renderer.readRenderTargetPixelsAsync( - this.target, - 0, - 0, - width, - height, - superPixels - ); - const { superXY } = this; - if (superXY === 1) { - return superPixels; - } - const subWidth = width / superXY; - const subHeight = height / superXY; - const subSize = subWidth * subHeight * 4; - if (!this.targetPixels || this.targetPixels.length < subSize) { - this.targetPixels = new Uint8Array(subSize); - } - const targetPixels = this.targetPixels; - const super2 = superXY * superXY; - for (let y = 0; y < subHeight; y++) { - const row = y * subWidth; - for (let x = 0; x < subWidth; x++) { - const superCol = x * superXY; - let r = 0; - let g = 0; - let b = 0; - let a = 0; - for (let sy = 0; sy < superXY; sy++) { - const superRow = (y * superXY + sy) * width; - for (let sx = 0; sx < superXY; sx++) { - const superIndex = (superRow + superCol + sx) * 4; - r += superPixels[superIndex]; - g += superPixels[superIndex + 1]; - b += superPixels[superIndex + 2]; - a += superPixels[superIndex + 3]; - } - } - const pixelIndex = (row + x) * 4; - targetPixels[pixelIndex] = r / super2; - targetPixels[pixelIndex + 1] = g / super2; - targetPixels[pixelIndex + 2] = b / super2; - targetPixels[pixelIndex + 3] = a / super2; - } - } - return targetPixels; + if (extension === "splat") { + return SplatFileType.SPLAT; + } + if (extension === "ksplat") { + return SplatFileType.KSPLAT; } - async renderReadTarget({ - scene, - camera - }) { - this.renderTarget({ scene, camera }); - return this.readTarget(); + if (extension === "sog") { + return SplatFileType.PCSOGSZIP; } - // Renders out the scene to a cube map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces. - async renderCubeMap({ - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = true, - filter = false - }) { - if (!_SparkRenderer.cubeRender || _SparkRenderer.cubeRender.target.width !== size || _SparkRenderer.cubeRender.near !== near || _SparkRenderer.cubeRender.far !== far) { - if (_SparkRenderer.cubeRender) { - _SparkRenderer.cubeRender.target.dispose(); + if (extension === "rad") { + return SplatFileType.RAD; + } + return void 0; +} +function isPcSogs(input) { + return tryPcSogs(input) !== void 0; +} +function tryPcSogs(input) { + try { + let text; + if (typeof input === "string") { + text = input; + } else { + const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; + if (fileBytes.length > 65536) { + return void 0; } - const target2 = new THREE.WebGLCubeRenderTarget(size, { - format: THREE.RGBAFormat, - type: THREE.UnsignedByteType, - generateMipmaps: filter, - minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter, - magFilter: THREE.LinearFilter, - colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace - }); - const cubeCamera2 = new THREE.CubeCamera(near, far, target2); - _SparkRenderer.cubeRender = { target: target2, cubeCamera: cubeCamera2, near, far }; - } - const { target, cubeCamera } = _SparkRenderer.cubeRender; - cubeCamera.position.copy(worldCenter); - const objectVisibility = /* @__PURE__ */ new Map(); - for (const object of hideObjects) { - objectVisibility.set(object, object.visible); - object.visible = false; - } - if (update) { - const tempCamera = new THREE.Camera(); - tempCamera.position.copy(worldCenter); - await this.update({ scene, camera: tempCamera }); + text = new TextDecoder().decode(fileBytes); } - try { - _SparkRenderer.sparkOverride = this; - cubeCamera.update(this.renderer, scene); - } finally { - _SparkRenderer.sparkOverride = void 0; + const json = JSON.parse(text); + if (!json || typeof json !== "object" || Array.isArray(json)) { + return void 0; } - for (const [object, visible] of objectVisibility.entries()) { - object.visible = visible; + const isVersion2 = json.version === 2; + for (const key of ["means", "scales", "quats", "sh0"]) { + if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) { + return void 0; + } + if (isVersion2) { + if (!json[key].files) { + return void 0; + } + if ((key === "scales" || key === "sh0") && !json[key].codebook) { + return void 0; + } + if (key === "means" && (!json[key].mins || !json[key].maxs)) { + return void 0; + } + } else { + if (!json[key].shape || !json[key].files) { + return void 0; + } + if (key !== "quats" && (!json[key].mins || !json[key].maxs)) { + return void 0; + } + } } - return target.texture; + return json; + } catch { + return void 0; } - async readCubeTargets() { - if (!_SparkRenderer.cubeRender) { - throw new Error("No cube render"); +} +function tryPcSogsZip(input) { + try { + const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; + let metaFilename = null; + const unzipped = unzipSync(fileBytes, { + filter: ({ name }) => { + const filename = name.split(/[\\/]/).pop(); + if (filename === "meta.json") { + metaFilename = name; + return true; + } + return false; + } + }); + if (!metaFilename) { + return void 0; } - const textures = _SparkRenderer.cubeRender.target.texture; - const promises = []; - const buffers = []; - for (let i = 0; i < textures.images.length; ++i) { - const { width, height } = textures.images[i]; - const byteSize = width * height * 4; - const readback = new Uint8Array(byteSize); - buffers.push(readback); - const promise = this.renderer.readRenderTargetPixelsAsync( - _SparkRenderer.cubeRender.target, - 0, - 0, - width, - height, - readback, - i - ); - promises.push(promise); + const json = tryPcSogs(unzipped[metaFilename]); + if (!json) { + return void 0; } - await Promise.all(promises); - return buffers; + return { name: metaFilename, json }; + } catch { + return void 0; } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = true - }) { - var _a2; - const cubeTexture = await this.renderCubeMap({ - scene, - worldCenter, - size, - near, - far, - hideObjects, - update, - filter: true - }); - if (!_SparkRenderer.pmrem) { - _SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer); - } - return (_a2 = _SparkRenderer.pmrem) == null ? void 0 : _a2.fromCubemap(cubeTexture).texture; +} +class SplatData { + constructor({ maxSplats = 1 } = {}) { + this.numSplats = 0; + this.maxSplats = getTextureSize(maxSplats).maxSplats; + this.centers = new Float32Array(this.maxSplats * 3); + this.scales = new Float32Array(this.maxSplats * 3); + this.quaternions = new Float32Array(this.maxSplats * 4); + this.opacities = new Float32Array(this.maxSplats); + this.colors = new Float32Array(this.maxSplats * 3); } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(root, envMap) { - root.traverse((node) => { - if (node instanceof THREE.Mesh) { - if (Array.isArray(node.material)) { - for (const material of node.material) { - if (material instanceof THREE.MeshStandardMaterial) { - material.envMap = envMap; - } - } - } else { - if (node.material instanceof THREE.MeshStandardMaterial) { - node.material.envMap = envMap; - } - } - } - }); + pushSplat() { + const index = this.numSplats; + this.ensureIndex(index); + this.numSplats += 1; + return index; } - async getLodTreeLevel(splats, level, pageColoring = false) { - var _a2, _b2; - const instance = this.lodInstances.get(splats); - if (!instance) { - return null; - } - const result = await this.ensureLodWorker().exclusive(async (worker) => { - return await worker.call("getLodTreeLevel", { - lodId: instance.lodId, - level - }); - }); - if ((_a2 = splats.packedSplats) == null ? void 0 : _a2.lodSplats) { - const newSplats = splats.packedSplats.lodSplats.extractSplats( - result.indices, - pageColoring - ); - return new SplatMesh({ packedSplats: newSplats }); + unpushSplat(index) { + if (index === this.numSplats - 1) { + this.numSplats -= 1; + } else { + throw new Error("Cannot unpush splat from non-last position"); } - if ((_b2 = splats.extSplats) == null ? void 0 : _b2.lodSplats) { - const newSplats = splats.extSplats.lodSplats.extractSplats( - result.indices, - pageColoring - ); - return new SplatMesh({ extSplats: newSplats }); + } + ensureCapacity(numSplats) { + if (numSplats > this.maxSplats) { + const targetSplats = Math.max(numSplats, this.maxSplats * 2); + const newCenters = new Float32Array(targetSplats * 3); + const newScales = new Float32Array(targetSplats * 3); + const newQuaternions = new Float32Array(targetSplats * 4); + const newOpacities = new Float32Array(targetSplats); + const newColors = new Float32Array(targetSplats * 3); + newCenters.set(this.centers); + newScales.set(this.scales); + newQuaternions.set(this.quaternions); + newOpacities.set(this.opacities); + newColors.set(this.colors); + this.centers = newCenters; + this.scales = newScales; + this.quaternions = newQuaternions; + this.opacities = newOpacities; + this.colors = newColors; + if (this.sh1) { + const newSh1 = new Float32Array(targetSplats * 9); + newSh1.set(this.sh1); + this.sh1 = newSh1; + } + if (this.sh2) { + const newSh2 = new Float32Array(targetSplats * 15); + newSh2.set(this.sh2); + this.sh2 = newSh2; + } + if (this.sh3) { + const newSh3 = new Float32Array(targetSplats * 21); + newSh3.set(this.sh3); + this.sh3 = newSh3; + } + this.maxSplats = targetSplats; } - throw new Error( - "Only LoD-enabled PackedSplats and ExtSplats are supported" - ); } - get premultipliedAlpha() { - return this.material.premultipliedAlpha; + ensureIndex(index) { + this.ensureCapacity(index + 1); } - set premultipliedAlpha(value) { - if (this.material.premultipliedAlpha !== value) { - this.material.premultipliedAlpha = value; - this.material.needsUpdate = true; - } + setCenter(index, x, y, z) { + this.centers[index * 3] = x; + this.centers[index * 3 + 1] = y; + this.centers[index * 3 + 2] = z; } -}; -_SparkRenderer.emptyOrdering = (() => { - const numIndices = 4 * 4096 * 1; - const emptyArray = new Uint32Array(numIndices); - const texture2 = new THREE.DataTexture(emptyArray, 4096, 1); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SparkRenderer.cubeRender = null; -_SparkRenderer.pmrem = null; -let SparkRenderer = _SparkRenderer; -class PagedSplats { - constructor(options) { - var _a2; - this.pager = options.pager; - this.rootUrl = options.rootUrl ?? ""; - this.requestHeader = options.requestHeader; - this.withCredentials = options.withCredentials; - this.numSh = 0; - this.maxSh = ((_a2 = options.pager) == null ? void 0 : _a2.maxSh) ?? 3; - this.numSplats = 0; - this.dynoNumSplats = new DynoInt({ value: 0 }); - this.dynoIndices = new DynoUsampler2D({ - value: SplatPager.emptyIndicesTexture - }); - this.rgbMinMaxLnScaleMinMax = new DynoVec4({ - value: new THREE.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX) - }); - this.lodOpacity = new DynoBool({ - value: false - }); - this.dynoNumSh = new DynoInt({ value: 0 }); - this.shMax = new DynoVec3({ value: new THREE.Vector3() }); - this.fileBytes = options.fileBytes; - this.fileType = options.fileType; - if (!this.fileType && this.fileBytes) { - this.fileType = getSplatFileType(this.fileBytes); + setScale(index, scaleX, scaleY, scaleZ) { + this.scales[index * 3] = scaleX; + this.scales[index * 3 + 1] = scaleY; + this.scales[index * 3 + 2] = scaleZ; + } + setQuaternion(index, x, y, z, w) { + this.quaternions[index * 4] = x; + this.quaternions[index * 4 + 1] = y; + this.quaternions[index * 4 + 2] = z; + this.quaternions[index * 4 + 3] = w; + } + setOpacity(index, opacity) { + this.opacities[index] = opacity; + } + setColor(index, r, g, b) { + this.colors[index * 3] = r; + this.colors[index * 3 + 1] = g; + this.colors[index * 3 + 2] = b; + } + setSh1(index, sh1) { + if (!this.sh1) { + this.sh1 = new Float32Array(this.maxSplats * 9); } - if (!this.fileType && this.rootUrl) { - this.fileType = getSplatFileTypeFromPath(this.rootUrl); + for (let j = 0; j < 9; ++j) { + this.sh1[index * 9 + j] = sh1[j]; } - if (!this.fileType) { - throw new Error("Unable to determine file type"); + } + setSh2(index, sh2) { + if (!this.sh2) { + this.sh2 = new Float32Array(this.maxSplats * 15); } - if (this.fileType === SplatFileType.RAD) { - this.radMetaPromise = this.getRadMeta(); + for (let j = 0; j < 15; ++j) { + this.sh2[index * 15 + j] = sh2[j]; } } - dispose() { - if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) { - this.dynoIndices.value.dispose(); - this.dynoIndices.value = SplatPager.emptyIndicesTexture; + setSh3(index, sh3) { + if (!this.sh3) { + this.sh3 = new Float32Array(this.maxSplats * 21); } - } - setMaxSh(maxSh) { - this.maxSh = maxSh; - } - getRadMeta() { - if (this.radMetaPromise) { - return this.radMetaPromise; + for (let j = 0; j < 21; ++j) { + this.sh3[index * 21 + j] = sh3[j]; } - this.radMetaPromise = (async () => { - await wasmInitialized; - if (this.fileBytes) { - const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576)); - if (metaStart) { - return metaStart; - } - throw new Error("Failed to decode RAD header"); - } - if (!this.rootUrl) { - throw new Error("No url or fileBytes provided"); - } - for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) { - const bytes = await fetchRange({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset: 0, - bytes: tryBytes - }); - const metaStart = decode_rad_header(bytes); - if (metaStart) { - return metaStart; - } + } +} +const _ExtSplats = class _ExtSplats { + constructor(options = {}) { + this.maxSplats = 0; + this.numSplats = 0; + this.extra = {}; + this.maxSh = 3; + this.isInitialized = false; + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; + this.textures = [_ExtSplats.emptyTexture, _ExtSplats.emptyTexture]; + this.extra = {}; + this.dyno = new DynoExtSplats({ extSplats: this }); + this.dynoNumSh = new DynoInt({ + key: "numSh", + value: 0, + update: () => { + return Math.min(this.getNumSh(), this.maxSh); } - throw new Error("Failed to decode RAD header"); - })().then((metaStart) => { - return metaStart; - }); - this.radMetaPromise.catch((error) => { - console.error(error); }); - return this.radMetaPromise; - } - chunkUrl(chunk) { - return this.rootUrl.replace(/-lod-0\./, `-lod-${chunk}.`); + this.initialized = Promise.resolve(this); + this.reinitialize(options); } - async fetchDecodeChunk(chunk) { - let decodeBytes = void 0; - if (this.fileType === SplatFileType.RAD) { - const { meta, chunksStart } = await this.getRadMeta(); - if (chunk < 0 || chunk >= meta.chunks.length) { - throw new Error( - `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})` - ); - } - let { offset, bytes, filename } = meta.chunks[chunk]; - if (filename) { - if (this.fileBytes) { - throw new Error("Chunked RAD file not supported with fileBytes"); - } - const resolvedRoot = new URL( - this.rootUrl, - window.location.href - ).toString(); - const chunkUrl = new URL(filename, resolvedRoot).toString(); - decodeBytes = await fetchRange({ - url: chunkUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials - }); - } else { - offset += chunksStart; - if (this.fileBytes) { - if (offset < 0 || offset + bytes > this.fileBytes.length) { - throw new Error( - `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}` - ); - } - decodeBytes = this.fileBytes.slice(offset, offset + bytes); - } else if (this.rootUrl) { - decodeBytes = await fetchRange({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset, - bytes - }); - } else { - throw new Error("No url or fileBytes provided"); - } - } - } else if (this.fileBytes) ; - else if (this.rootUrl) { - const url = this.chunkUrl(chunk); - const request = new Request(url, { - headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, - credentials: this.withCredentials ? "include" : "same-origin" + reinitialize(options) { + this.isInitialized = false; + this.extra = {}; + this.maxSplats = options.maxSplats ?? 0; + this.lod = options.lod; + this.nonLod = options.nonLod; + if (options.url || options.fileBytes || options.stream || options.construct) { + this.initialized = this.asyncInitialize(options).then(() => { + this.isInitialized = true; + return this; }); - const response = await fetch(request); - if (!response.ok || !response.body) { - throw new Error( - `Failed to fetch "${url}": ${response.status} ${response.statusText}` - ); - } - decodeBytes = new Uint8Array(await response.arrayBuffer()); } else { - throw new Error("No url or fileBytes provided"); + this.initialize(options); + this.isInitialized = true; + this.initialized = Promise.resolve(this); + } + } + initialize(options) { + this.extra = options.extra ?? {}; + this.lodSplats = options.lodSplats; + if (options.extArrays) { + this.extArrays = options.extArrays; + this.maxSplats = Math.floor( + Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) + ); + this.numSplats = options.numSplats ?? this.maxSplats; + this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + this.numSplats = Math.min( + this.maxSplats, + options.numSplats ?? Number.POSITIVE_INFINITY + ); + this.updateTextures(); + } else { + this.maxSplats = options.maxSplats ?? 0; + this.numSplats = 0; + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; } - return await workerPool.withWorker(async (worker) => { - var _a2, _b2, _c, _d, _e; - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); - } - if (!this.pager.extSplats) { - const result2 = await worker.call("loadPackedSplats", { - fileBytes: decodeBytes, - pathName: this.chunkUrl(chunk), - sh1Codes: (_a2 = this.sh1Codes) == null ? void 0 : _a2.slice(), - sh2Codes: (_b2 = this.sh2Codes) == null ? void 0 : _b2.slice(), - sh3Codes: (_c = this.sh3Codes) == null ? void 0 : _c.slice() - }); - const lodSplats2 = result2.lodSplats; - if (!this.splatEncoding) { - this.splatEncoding = lodSplats2.splatEncoding; - this.numSh = lodSplats2.extra.sh3 ? 3 : lodSplats2.extra.sh2 ? 2 : lodSplats2.extra.sh1 ? 1 : 0; - this.rgbMinMaxLnScaleMinMax.value.set( - this.splatEncoding.rgbMin ?? 0, - this.splatEncoding.rgbMax ?? 1, - this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN, - this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX - ); - this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false; - this.shMax.value.set( - this.splatEncoding.sh1Max ?? 1, - this.splatEncoding.sh2Max ?? 1, - this.splatEncoding.sh3Max ?? 1 - ); - } - this.sh1Codes = lodSplats2.extra.sh1Codes ?? this.sh1Codes; - this.sh2Codes = lodSplats2.extra.sh2Codes ?? this.sh2Codes; - this.sh3Codes = lodSplats2.extra.sh3Codes ?? this.sh3Codes; - return lodSplats2; - } - const sh3Codes = this.sh3Codes; - const result = await worker.call("loadExtSplats", { - fileBytes: decodeBytes, - pathName: this.chunkUrl(chunk), - sh1Codes: (_d = this.sh1Codes) == null ? void 0 : _d.slice(), - sh2Codes: (_e = this.sh2Codes) == null ? void 0 : _e.slice(), - sh3Codes: sh3Codes ? [sh3Codes[0].slice(), sh3Codes[1].slice()] : void 0 + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + construct, + lod, + nonLod, + lodAbove + } = options; + this.lod = lod; + this.nonLod = nonLod; + const loader = new SplatLoader(); + if (fileBytes || url || stream) { + await loader.loadInternalAsync({ + extSplats: this, + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + onProgress: options.onProgress, + lodAbove }); - const lodSplats = result.lodSplats; - if (!this.splatEncoding) { - this.splatEncoding = DEFAULT_SPLAT_ENCODING; - this.numSh = lodSplats.extra.sh3a && lodSplats.extra.sh3b ? 3 : lodSplats.extra.sh2 ? 2 : lodSplats.extra.sh1 ? 1 : 0; + } + if (construct) { + const maybePromise = construct(this); + if (maybePromise instanceof Promise) { + await maybePromise; } - this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes; - this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes; - this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes; - return lodSplats; - }); + } } - update(numSplats, indices) { - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. + dispose() { + if (this.textures[0] !== _ExtSplats.emptyTexture) { + this.textures[0].dispose(); + this.textures[0].source.data = null; + this.textures[0] = _ExtSplats.emptyTexture; } - const renderer = this.pager.renderer; - this.numSplats = numSplats; - this.dynoNumSplats.value = this.numSplats; - const rows = Math.ceil(numSplats / 16384); - let indicesTexture = this.dynoIndices.value === SplatPager.emptyIndicesTexture ? void 0 : this.dynoIndices.value; - if (indicesTexture && rows > indicesTexture.image.height) { - indicesTexture.dispose(); - indicesTexture = void 0; + if (this.textures[1] !== _ExtSplats.emptyTexture) { + this.textures[1].dispose(); + this.textures[1].source.data = null; + this.textures[1] = _ExtSplats.emptyTexture; } - if (!indicesTexture) { - indicesTexture = new THREE.DataTexture( - indices, - 4096, - rows, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType - ); - indicesTexture.internalFormat = "RGBA32UI"; - indicesTexture.needsUpdate = true; - renderer.initTexture(indicesTexture); - this.dynoIndices.value = indicesTexture; - } else { - const textureIndices = indicesTexture.image.data; - textureIndices.set(indices.subarray(0, numSplats)); - const gl = renderer.getContext(); - renderer.state.activeTexture(gl.TEXTURE0); - renderer.state.bindTexture( - gl.TEXTURE_2D, - getGlTexture(renderer, indicesTexture) - ); - gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - 4096, - rows, - gl.RGBA_INTEGER, - gl.UNSIGNED_INT, - indices - ); - renderer.state.bindTexture(gl.TEXTURE_2D, null); + this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; + for (const key in this.extra) { + const dyno2 = this.extra[key]; + if (dyno2 instanceof DynoUniform) { + const texture2 = dyno2.value; + if (texture2 == null ? void 0 : texture2.isTexture) { + texture2.dispose(); + texture2.source.data = null; + } + } } + this.extra = {}; + this.disposeLodSplats(); } prepareFetchSplat() { } @@ -11337,3378 +10199,4222 @@ class PagedSplats { return this.numSplats; } hasRgbDir() { - if (!this.pager) { - return false; - } - return Math.min(this.numSh, this.pager.maxSh) > 0; + return Math.min(this.getNumSh(), this.maxSh) > 0; } getNumSh() { - return this.numSh; + return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3a || !this.extra.sh3b ? 2 : 3; + } + setMaxSh(maxSh) { + this.maxSh = maxSh; } fetchSplat({ index, viewOrigin }) { - if (!this.pager) { - throw new Error("PagedSplats.pager not set"); - } - const splatIndex = this.pager.readIndex.apply({ - index, - numSplats: this.dynoNumSplats, - indices: this.dynoIndices - }).index; - if (!this.pager.extSplats) { - if (this.hasRgbDir() && viewOrigin) { - this.dynoNumSh.value = Math.min( - this.numSh, - this.maxSh, - this.pager.maxSh - ); - return this.pager.readSplatDir.apply({ - index: splatIndex, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity, - viewOrigin, - numSh: this.dynoNumSh, - shMax: this.shMax - }).gsplat; - } - return this.pager.readSplat.apply({ - index: splatIndex, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity - }).gsplat; - } + let gsplat = readExtSplat(this.dyno, index); if (this.hasRgbDir() && viewOrigin) { - this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh); - return this.pager.readSplatExtDir.apply({ - index: splatIndex, - viewOrigin, - numSh: this.dynoNumSh - }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } = this.ensureShTextures(); + let { rgb } = evaluateExtSH({ + coord: splatTexCoord(index), + viewDir, + numSh: this.dynoNumSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB + }); + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); } - return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat; + return gsplat; } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.pager || !this.numSplats) { - return; + ensureShTextures() { + if (!this.extra.sh1) { + return {}; } - const extSplats = this.pager.extSplats; - const indices = this.dynoIndices.value.image.data; - const packedSplatArray = this.pager.packedTexture.value.image.data; - const extPackedSplatArray = this.pager.extTexture.value.image.data; - const extArrays = [ - packedSplatArray, - extPackedSplatArray - ]; - for (let i = 0; i < this.numSplats; ++i) { - const splatIndex = indices[i]; - const unpacked = extSplats ? decodeExtSplat(extArrays, splatIndex) : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color + let sh1Texture = this.extra.sh1Texture; + if (!sh1Texture) { + let sh1 = this.extra.sh1; + const { width, height, depth, maxSplats } = getTextureSize( + sh1.length / 4 + ); + if (sh1.length < maxSplats * 4) { + const newSh1 = new Uint32Array(maxSplats * 4); + newSh1.set(sh1); + this.extra.sh1 = newSh1; + sh1 = newSh1; + } + const texture2 = newUint32ArrayTexture( + sh1, + width, + height, + depth, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType, + "RGBA32UI" ); + sh1Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh1" + }); + this.extra.sh1Texture = sh1Texture; } - } -} -const _SplatPager = class _SplatPager { - constructor(options) { - this.fetchPause = 0; - this.splatsChunkToPage = /* @__PURE__ */ new Map(); - this.pageToSplatsChunk = []; - this.renderer = options.renderer; - this.extSplats = options.extSplats ?? false; - this.pageSplats = 65536; - this.maxSplats = options.maxSplats ?? 16777216; - this.maxPages = Math.ceil(this.maxSplats / this.pageSplats); - this.maxSplats = this.maxPages * this.pageSplats; - this.maxSh = options.maxSh ?? 3; - this.curSh = 0; - this.autoDrive = options.autoDrive ?? true; - this.numFetchers = options.numFetchers ?? 3; - this.splatsChunkToPage = /* @__PURE__ */ new Map(); - this.pageToSplatsChunk = new Array(this.maxPages); - this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i); - this.pageLru = /* @__PURE__ */ new Set(); - this.freeablePages = []; - this.newUploads = []; - this.readyUploads = []; - this.lodTreeUpdates = []; - this.fetchers = []; - this.fetched = []; - this.fetchPriority = []; - this.packedTexture = new DynoUsampler2DArray({ - value: this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, + if (!this.extra.sh2) { + return { sh1Texture }; + } + let sh2Texture = this.extra.sh2Texture; + if (!sh2Texture) { + let sh2 = this.extra.sh2; + const { width, height, depth, maxSplats } = getTextureSize( + sh2.length / 4 + ); + if (sh2.length < maxSplats * 4) { + const newSh2 = new Uint32Array(maxSplats * 4); + newSh2.set(sh2); + this.extra.sh2 = newSh2; + sh2 = newSh2; + } + const texture2 = newUint32ArrayTexture( + sh2, + width, + height, + depth, THREE.RGBAIntegerFormat, THREE.UnsignedIntType, "RGBA32UI" - ) - }); - this.extTexture = new DynoUsampler2DArray({ - value: this.extSplats ? this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, + ); + sh2Texture = new DynoUsampler2DArray({ + value: texture2, + key: "sh2" + }); + this.extra.sh2Texture = sh2Texture; + } + if (!this.extra.sh3a || !this.extra.sh3b) { + return { sh1Texture, sh2Texture }; + } + let sh3TextureA = this.extra.sh3TextureA; + if (!sh3TextureA) { + let sh3a = this.extra.sh3a; + const { width, height, depth, maxSplats } = getTextureSize( + sh3a.length / 4 + ); + if (sh3a.length < maxSplats * 4) { + const newSh3 = new Uint32Array(maxSplats * 4); + newSh3.set(sh3a); + this.extra.sh3a = newSh3; + sh3a = newSh3; + } + const texture2 = newUint32ArrayTexture( + sh3a, + width, + height, + depth, THREE.RGBAIntegerFormat, THREE.UnsignedIntType, "RGBA32UI" - ) : _SplatPager.emptyExtTexture - }); - this.sh1Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh1Texture : _SplatPager.emptySh1Texture - }); - this.sh2Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh2Texture : _SplatPager.emptySh2Texture - }); - this.sh3Texture = new DynoUsampler2DArray({ - value: this.extSplats ? _SplatPager.emptyExtSh3Texture : _SplatPager.emptySh3Texture - }); - this.sh3TextureB = new DynoUsampler2DArray({ - value: _SplatPager.emptyExtSh3BTexture - }); - this.readIndex = dynoBlock( - { index: "int", numSplats: "int", indices: "usampler2D" }, - { index: "int" }, - ({ index, numSplats, indices }) => { - return new Dyno({ - inTypes: { - index: "int", - numSplats: "int", - indices: "usampler2D" - }, - outTypes: { index: "int" }, - inputs: { - index, - numSplats, - indices - }, - statements: ({ inputs, outputs }) => unindentLines(` - if (${inputs.index} >= ${inputs.numSplats}) { - return; - } - - ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14); - uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3]; - ${outputs.index} = int(index); - `) - }).outputs; + ); + sh3TextureA = new DynoUsampler2DArray({ + value: texture2, + key: "sh3" + }); + this.extra.sh3TextureA = sh3TextureA; + } + let sh3TextureB = this.extra.sh3TextureB; + if (!sh3TextureB) { + let sh3b = this.extra.sh3b; + const { width, height, depth, maxSplats } = getTextureSize( + sh3b.length / 4 + ); + if (sh3b.length < maxSplats * 4) { + const newSh3b = new Uint32Array(maxSplats * 4); + newSh3b.set(sh3b); + this.extra.sh3b = newSh3b; + sh3b = newSh3b; } + const texture2 = newUint32ArrayTexture( + sh3b, + width, + height, + depth, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType, + "RGBA32UI" + ); + sh3TextureB = new DynoUsampler2DArray({ + value: texture2, + key: "sh3b" + }); + this.extra.sh3TextureB = sh3TextureB; + } + return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB }; + } + // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(numSplats) { + const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(numSplats, 2 * this.maxSplats) ); - this.readSplat = dynoBlock( - { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, - { gsplat: Gsplat }, - ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => { - return new Dyno({ - inTypes: { - index: "int", - packedTexture: "usampler2DArray", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - index, - packedTexture: this.packedTexture, - rgbMinMaxLnScaleMinMax, - lodOpacity - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - ivec3 splatCoord = pagedSplatTexCoord(index); - uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0); - - unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax}); - if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${outputs.gsplat}.index = index; - ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - if (${inputs.lodOpacity}) { - ${outputs.gsplat}.rgba.a *= 2.0; - } - `) - }).outputs; + const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4; + if (!this.extArrays[0] || targetSize > currentSize) { + this.maxSplats = getTextureSize(targetSize).maxSplats; + const newArray0 = new Uint32Array(this.maxSplats * 4); + const newArray1 = new Uint32Array(this.maxSplats * 4); + if (this.extArrays[0]) { + newArray0.set(this.extArrays[0]); + newArray1.set(this.extArrays[1]); } + this.extArrays[0] = newArray0; + this.extArrays[1] = newArray1; + } + return this.extArrays; + } + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(index) { + if (index >= this.numSplats) { + throw new Error("Invalid index"); + } + return decodeExtSplat(this.extArrays, index); + } + // Set all ExtSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(index, center, scales, quaternion, opacity, color) { + const extArrays = this.ensureSplats(index + 1); + encodeExtSplat( + extArrays, + index, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b + ); + this.numSplats = Math.max(this.numSplats, index + 1); + } + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(center, scales, quaternion, opacity, color) { + const extArrays = this.ensureSplats(this.numSplats + 1); + encodeExtSplat( + extArrays, + this.numSplats, + center.x, + center.y, + center.z, + scales.x, + scales.y, + scales.z, + quaternion.x, + quaternion.y, + quaternion.z, + quaternion.w, + opacity, + color.r, + color.g, + color.b ); - this.readSplatDir = dynoBlock( - { - index: "int", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool", - viewOrigin: "vec3", - numSh: "int", - shMax: "vec3" - }, - { gsplat: Gsplat }, - ({ - index, - rgbMinMaxLnScaleMinMax, - lodOpacity, - viewOrigin, - numSh, - shMax - }) => { - if (!index || !rgbMinMaxLnScaleMinMax || !lodOpacity || !viewOrigin || !numSh || !shMax) { - throw new Error("index and viewOrigin are required"); - } - let gsplat = this.readSplat.apply({ - index, - rgbMinMaxLnScaleMinMax, - lodOpacity - }).gsplat; - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - let rgb = evaluatePackedSH({ - coord: pagedSplatTexCoord(index), - viewDir, - numSh, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3Texture: this.sh3Texture, - shMax - }).rgb; - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - return { gsplat }; + ++this.numSplats; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.numSplats) { + return; + } + for (let i = 0; i < this.numSplats; ++i) { + const unpacked = decodeExtSplat(this.extArrays, i); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color + ); + } + } + // Check if source texture needs to be created/updated + updateTextures() { + if (this.textures[0] !== _ExtSplats.emptyTexture) { + const { width, height, depth } = this.textures[0].image; + if (this.maxSplats !== width * height * depth) { + this.textures[0].dispose(); + this.textures[0] = _ExtSplats.emptyTexture; + this.textures[1].dispose(); + this.textures[1] = _ExtSplats.emptyTexture; } - ); - this.readSplatExt = dynoBlock( - { index: "int" }, - { gsplat: Gsplat }, - ({ index }) => { - return new Dyno({ - inTypes: { - index: "int", - extTexture1: "usampler2DArray", - extTexture2: "usampler2DArray" - }, - outTypes: { gsplat: Gsplat }, - inputs: { - index, - extTexture1: this.packedTexture, - extTexture2: this.extTexture - }, - globals: () => [defineGsplat], - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); - uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0); - float alpha = unpackSplatExtAlpha(ext1); - if (alpha == 0.0) { - return; - } - - uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0); - unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba); - if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${outputs.gsplat}.index = index; - ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - `) - }).outputs; + } + if (this.textures[0] === _ExtSplats.emptyTexture) { + const { width, height, depth } = getTextureSize(this.maxSplats); + this.textures[0] = newUint32ArrayTexture( + this.extArrays[0], + width, + height, + depth, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType, + "RGBA32UI" + ); + this.textures[1] = newUint32ArrayTexture( + this.extArrays[1], + width, + height, + depth, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType, + "RGBA32UI" + ); + } else if (this.extArrays[0].buffer !== this.textures[0].image.data.buffer) { + this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer); + this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer); + this.textures[0].needsUpdate = true; + this.textures[1].needsUpdate = true; + } + } + extractSplats(indices, pageColoring) { + const maxSplats = getTextureSize(indices.length).maxSplats; + const newSplats = new _ExtSplats({ maxSplats }); + for (let i = 0; i < indices.length; i++) { + const splat = this.getSplat(indices[i]); + if (pageColoring) { + let hue = (indices[i] >>> 16) * 0.61803398875; + hue = hue - Math.floor(hue); + const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); + const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); + const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); + splat.color.r *= r; + splat.color.g *= g; + splat.color.b *= b; } - ); - this.readSplatExtDir = dynoBlock( - { - index: "int", - viewOrigin: "vec3", - numSh: "int" + newSplats.pushSplat( + splat.center, + splat.scales, + splat.quaternion, + splat.opacity, + splat.color + ); + } + return newSplats; + } + disposeLodSplats() { + if (this.lodSplats) { + this.lodSplats.dispose(); + this.lodSplats = void 0; + } + } + async createLodSplats({ + rgbaArray, + quality + } = {}) { + const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; + const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()]; + const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; + const extra = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }; + const decoded = await workerPool.withWorker(async (worker) => { + return await worker.call( + quality ? "qualityLodExtSplats" : "tinyLodExtSplats", + { + numSplats: this.numSplats, + extArrays, + extra, + lodBase, + rgba + } + ); + }); + const lodSplats = new _ExtSplats(decoded); + if (this.lodSplats) { + this.lodSplats.dispose(); + } + this.lodSplats = lodSplats; + this.nonLod = true; + this.lod = quality ? "quality" : true; + } +}; +_ExtSplats.emptyArray = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_ExtSplats.emptyTexture = newUint32ArrayTexture( + null, + 1, + 1, + 1, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType, + "RGBA32UI" +); +_ExtSplats.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +let ExtSplats = _ExtSplats; +class DynoExtSplats extends DynoUniform { + constructor({ extSplats } = {}) { + super({ + key: "extSplats", + type: TExtSplats, + globals: () => [defineExtSplats], + value: { + textureArray1: ExtSplats.emptyTexture, + textureArray2: ExtSplats.emptyTexture, + numSplats: 0 }, - { gsplat: Gsplat }, - ({ index, viewOrigin, numSh }) => { - if (!index || !viewOrigin || !numSh) { - throw new Error("index and viewOrigin are required"); - } - let gsplat = this.readSplatExt.apply({ index }).gsplat; - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - let rgb = evaluateExtSH({ - coord: pagedSplatTexCoord(index), - viewDir, - numSh, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3TextureA: this.sh3Texture, - sh3TextureB: this.sh3TextureB - }).rgb; - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - return { gsplat }; + update: (value) => { + var _a2, _b2, _c; + value.textureArray1 = ((_a2 = this.extSplats) == null ? void 0 : _a2.textures[0]) ?? ExtSplats.emptyTexture; + value.textureArray2 = ((_b2 = this.extSplats) == null ? void 0 : _b2.textures[1]) ?? ExtSplats.emptyTexture; + value.numSplats = ((_c = this.extSplats) == null ? void 0 : _c.numSplats) ?? 0; + return value; } - ); + }); + this.extSplats = extSplats; } - dispose() { - this.autoDrive = false; - this.numFetchers = 0; - this.packedTexture.value.dispose(); - this.packedTexture.value.source.data = null; - if (this.extTexture.value !== _SplatPager.emptyExtTexture) { - this.extTexture.value.dispose(); - this.extTexture.value.source.data = null; - } - if (!this.extSplats) { - if (this.sh1Texture.value !== _SplatPager.emptySh1Texture) { - this.sh1Texture.value.dispose(); - this.sh1Texture.value.source.data = null; - } - if (this.sh2Texture.value !== _SplatPager.emptySh2Texture) { - this.sh2Texture.value.dispose(); - this.sh2Texture.value.source.data = null; - } - if (this.sh3Texture.value !== _SplatPager.emptySh3Texture) { - this.sh3Texture.value.dispose(); - this.sh3Texture.value.source.data = null; - } - } else { - if (this.sh1Texture.value !== _SplatPager.emptyExtSh1Texture) { - this.sh1Texture.value.dispose(); - this.sh1Texture.value.source.data = null; - } - if (this.sh2Texture.value !== _SplatPager.emptyExtSh2Texture) { - this.sh2Texture.value.dispose(); - this.sh2Texture.value.source.data = null; - } - if (this.sh3Texture.value !== _SplatPager.emptyExtSh3Texture) { - this.sh3Texture.value.dispose(); - this.sh3Texture.value.source.data = null; - } - if (this.sh3TextureB.value !== _SplatPager.emptyExtSh3BTexture) { - this.sh3TextureB.value.dispose(); - this.sh3TextureB.value.source.data = null; - } - } +} +const defineEvaluateExtSH1 = unindent(` + vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packedData.x); + vec3 sh1_1 = decodeExtRgb(packedData.y); + vec3 sh1_2 = decodeExtRgb(packedData.z); + + return sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); } - ensureShTextures(numSh) { - this.curSh = Math.max(this.curSh, numSh); - if (!this.extSplats) { - if (this.curSh >= 1 && this.sh1Texture.value === _SplatPager.emptySh1Texture) { - this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 2), - 256, - 256, - this.maxPages, - THREE.RGIntegerFormat, - THREE.UnsignedIntType, - "RG32UI" - ); - } - } else { - if (this.curSh >= 1 && this.sh1Texture.value === _SplatPager.emptyExtSh1Texture) { - this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - } - } - if (this.curSh >= 2 && this.sh2Texture.value === (!this.extSplats ? _SplatPager.emptySh2Texture : _SplatPager.emptyExtSh2Texture)) { - this.sh2Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - } - if (!this.extSplats) { - if (this.curSh >= 3 && this.sh3Texture.value === _SplatPager.emptySh3Texture) { - this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" - ); - } - } else { - if (this.curSh >= 3) { - if (this.sh3Texture.value === _SplatPager.emptyExtSh3Texture) { - this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" +`); +const defineEvaluateExtSH12 = unindent(` + vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packed1.x); + vec3 sh1_1 = decodeExtRgb(packed1.y); + vec3 sh1_2 = decodeExtRgb(packed1.z); + + vec3 sh2_0 = decodeExtRgb(packed1.w); + vec3 sh2_1 = decodeExtRgb(packed2.x); + vec3 sh2_2 = decodeExtRgb(packed2.y); + vec3 sh2_3 = decodeExtRgb(packed2.z); + vec3 sh2_4 = decodeExtRgb(packed2.w); + + vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + + vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + + return sh1Rgb + sh2Rgb; + } +`); +const defineEvaluateExtSH3 = unindent(` + vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { + vec3 sh3_0 = decodeExtRgb(packedA.x); + vec3 sh3_1 = decodeExtRgb(packedA.y); + vec3 sh3_2 = decodeExtRgb(packedA.z); + vec3 sh3_3 = decodeExtRgb(packedA.w); + vec3 sh3_4 = decodeExtRgb(packedB.x); + vec3 sh3_5 = decodeExtRgb(packedB.y); + vec3 sh3_6 = decodeExtRgb(packedB.z); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + } +`); +const randomColourFromID = unindent(` +precision highp float; +precision highp int; + +// Blazing fast HSL to RGB conversion +vec3 hsl2rgb(vec3 c) { + vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); + return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0)); +} + +vec4 getDeterministicColor(uint id) { + float hue = fract(float(id) * 0.618033988749895); + vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6)); + return vec4(rgb, 1.0); +} +`); +function evaluateExtSH({ + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB +}) { + return new Dyno({ + inTypes: { + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3TextureA: "usampler2DArray", + sh3TextureB: "usampler2DArray" + }, + outTypes: { rgb: "vec3" }, + inputs: { + coord, + viewDir, + numSh, + sh1Texture, + sh2Texture, + sh3TextureA, + sh3TextureB + }, + globals: () => [ + defineEvaluateExtSH1, + defineEvaluateExtSH12, + defineEvaluateExtSH3 + ], + statements: ({ inputs, outputs }) => { + const lines = ["vec3 rgb = vec3(0.0);"]; + if (inputs.sh1Texture) { + if (!inputs.sh2Texture) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 1) { + rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + } + `) ); - } - if (this.sh3TextureB.value === _SplatPager.emptyExtSh3BTexture) { - this.sh3TextureB.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType, - "RGBA32UI" + } else { + lines.push( + ...unindentLines(` + if (${inputs.numSh} == 1) { + rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + } else if (${inputs.numSh} >= 2) { + rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}); + `) ); + if (inputs.sh3TextureA && inputs.sh3TextureB) { + lines.push( + ...unindentLines(` + if (${inputs.numSh} >= 3) { + rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir}); + } + `) + ); + } + lines.push("}"); } } - } - } - allocatePage() { - return this.pageFreelist.shift(); - } - freePage(page) { - this.pageFreelist.push(page); - } - getSplatsChunk(splats, chunk) { - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - return void 0; - } - return chunks[chunk]; - } - insertSplatsChunkPage(splats, chunk, page, now) { - if (!this.splatsChunkToPage.has(splats)) { - this.splatsChunkToPage.set(splats, []); - } - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - throw new Error("impossible"); - } - if (chunk >= chunks.length) { - chunks.length = chunk + 1; - } - const pageLru = { page, lru: now }; - chunks[chunk] = pageLru; - this.pageLru.add(pageLru); - this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() }; - return this.pageToSplatsChunk[page]; - } - removeSplatsChunkPage(splats, chunk, page) { - const chunks = this.splatsChunkToPage.get(splats); - if (!chunks) { - throw new Error("impossible"); - } - const pageLru = chunks[chunk]; - if (!pageLru) { - throw new Error( - `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}` + lines.push(`${outputs.rgb} = rgb;`); + return lines; + } + }).outputs; +} +function newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { + const texture2 = new THREE.DataArrayTexture( + data, + width, + height, + depth + ); + texture2.format = format; + texture2.type = type; + texture2.internalFormat = internalFormat; + texture2.needsUpdate = true; + return texture2; +} +const _RgbaArray = class _RgbaArray { + constructor(options = {}) { + this.capacity = 0; + this.count = 0; + this.array = null; + this.readback = null; + this.source = null; + this.needsUpdate = true; + this.dyno = new DynoUniform({ + key: "rgbaArray", + type: TRgbaArray, + globals: () => [defineRgbaArray], + value: { + texture: _RgbaArray.getEmpty(), + count: 0 + }, + update: (value) => { + value.texture = this.getTexture(); + value.count = this.count; + return value; + } + }); + if (options.array) { + this.array = options.array; + const splatCount = Math.floor(this.array.length / 4); + this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + if (this.capacity > splatCount) { + this.array = new Uint8Array(this.capacity * 4); + this.array.set(options.array); + } + this.count = Math.min( + splatCount, + options.count ?? Number.POSITIVE_INFINITY ); + } else { + this.capacity = options.capacity ?? 0; + this.count = 0; } - this.pageLru.delete(pageLru); - chunks[chunk] = void 0; - while (chunks.length > 0 && chunks[chunks.length - 1] === void 0) { - chunks.pop(); - } - if (chunks.length === 0) { - this.splatsChunkToPage.delete(splats); + } + // Free up resources + dispose() { + if (this.readback) { + this.readback.dispose(); + this.readback = null; } - this.pageToSplatsChunk[page] = void 0; - while (this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0) { - this.pageToSplatsChunk.pop(); + if (this.source) { + this.source.dispose(); + this.source = null; } } - uploadPage(page, packedArray, extra, extArray) { - const pageBase = page * this.pageSplats; - const array = this.packedTexture.value.image.data; - array.subarray(pageBase * 4, pageBase * 4 + packedArray.length).set(packedArray); - this.packedTexture.value.addLayerUpdate(page); - this.packedTexture.value.needsUpdate = true; - if (extArray) { - const array2 = this.extTexture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + extArray.length).set(extArray); - this.extTexture.value.addLayerUpdate(page); - this.extTexture.value.needsUpdate = true; - } - const numSh = this.extSplats ? extra.sh3a && extra.sh3b ? 3 : extra.sh2 ? 2 : extra.sh1 ? 1 : 0 : extra.sh3 ? 3 : extra.sh2 ? 2 : extra.sh1 ? 1 : 0; - this.ensureShTextures(numSh); - if (!this.extSplats) { - if (this.sh1Texture.value !== _SplatPager.emptySh1Texture && extra.sh1) { - const sh1 = extra.sh1; - const array2 = this.sh1Texture.value.image.data; - array2.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1); - this.sh1Texture.value.addLayerUpdate(page); - this.sh1Texture.value.needsUpdate = true; - } - } else { - if (this.sh1Texture.value !== _SplatPager.emptyExtSh1Texture && extra.sh1) { - const sh1 = extra.sh1; - const array2 = this.sh1Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1); - this.sh1Texture.value.addLayerUpdate(page); - this.sh1Texture.value.needsUpdate = true; - } - } - if (this.sh2Texture.value !== _SplatPager.emptySh2Texture && extra.sh2) { - const sh2 = extra.sh2; - const array2 = this.sh2Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2); - this.sh2Texture.value.addLayerUpdate(page); - this.sh2Texture.value.needsUpdate = true; - } - if (!this.extSplats) { - if (this.sh3Texture.value !== _SplatPager.emptySh3Texture && extra.sh3) { - const sh3 = extra.sh3; - const array2 = this.sh3Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3); - this.sh3Texture.value.addLayerUpdate(page); - this.sh3Texture.value.needsUpdate = true; - } - } else { - if (this.sh3Texture.value !== _SplatPager.emptyExtSh3Texture && extra.sh3a) { - const sh3a = extra.sh3a; - const array2 = this.sh3Texture.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a); - this.sh3Texture.value.addLayerUpdate(page); - this.sh3Texture.value.needsUpdate = true; - } - if (this.sh3TextureB.value !== _SplatPager.emptyExtSh3BTexture && extra.sh3b) { - const sh3b = extra.sh3b; - const array2 = this.sh3TextureB.value.image.data; - array2.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b); - this.sh3TextureB.value.addLayerUpdate(page); - this.sh3TextureB.value.needsUpdate = true; + // Ensure that our array is large enough to hold capacity RGBA8 values. + ensureCapacity(capacity) { + var _a2; + if (!this.array || capacity > (((_a2 = this.array) == null ? void 0 : _a2.length) ?? 0) / 4) { + this.capacity = getTextureSize(capacity).maxSplats; + const newArray2 = new Uint8Array(this.capacity * 4); + if (this.array) { + newArray2.set(this.array); } + this.array = newArray2; } + return this.array; } - getGlTexture(texture2) { - return getGlTexture(this.renderer, texture2); - } - newUint32ArrayTexture(data, width, height, depth, format, type, internalFormat) { - const texture2 = new THREE.DataArrayTexture(data, width, height, depth); - texture2.format = format; - texture2.type = type; - texture2.internalFormat = internalFormat; - texture2.needsUpdate = true; - this.renderer.initTexture(texture2); - return texture2; + // Get the THREE.DataArrayTexture from either the readback or the source. + getTexture() { + var _a2; + let texture2 = (_a2 = this.readback) == null ? void 0 : _a2.getTexture(); + if (this.source || this.array) { + texture2 = this.maybeUpdateSource(); + } + return texture2 ?? _RgbaArray.getEmpty(); } - driveFetchers() { - const needed = []; - const overflow = []; - let numPages = 0; - for (const { splats, chunk } of this.fetchPriority) { - const pageLru = this.getSplatsChunk(splats, chunk); - if (pageLru) { - if (numPages >= this.maxPages) { - overflow.push(pageLru); - } else { - needed.push(pageLru); + // Create or get a THREE.DataArrayTexture from the data array. + maybeUpdateSource() { + if (!this.array) { + throw new Error("No array"); + } + if (this.needsUpdate || !this.source) { + this.needsUpdate = false; + if (this.source) { + const { width, height, depth } = this.source.image; + if (this.capacity !== width * height * depth) { + this.source.dispose(); + this.source = null; } - numPages += 1; - continue; - } - if (this.fetched.some( - ({ splats: s, chunk: c }) => splats === s && chunk === c - ) || this.fetchers.some( - ({ splats: s, chunk: c }) => splats === s && chunk === c - )) { - numPages += 1; - continue; } - if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) { - numPages += 1; - const promise = splats.fetchDecodeChunk(chunk).then( - async (data) => { - this.fetched.push({ splats, chunk, data }); - if (this.fetchPause > 0) { - await new Promise( - (resolve) => setTimeout(resolve, this.fetchPause) - ); - } - }, - async (error) => { - console.warn(error); - const backoff = 250 + 500 * Math.random(); - await new Promise((resolve) => setTimeout(resolve, backoff)); - } - ).finally(() => { - this.fetchers = this.fetchers.filter( - ({ splats: s, chunk: c }) => splats !== s || chunk !== c - ); - this.processFetched(); - }); - this.fetchers.push({ splats, chunk, promise }); - promise.then((data) => { - if (this.autoDrive) { - this.driveFetchers(); - } - }); + if (!this.source) { + const { width, height, depth } = getTextureSize(this.capacity); + this.source = new THREE.DataArrayTexture( + this.array, + width, + height, + depth + ); + this.source.format = THREE.RGBAFormat; + this.source.type = THREE.UnsignedByteType; + this.source.internalFormat = "RGBA8"; + this.source.needsUpdate = true; + } else if (this.array.buffer !== this.source.image.data.buffer) { + this.source.image.data = new Uint8Array(this.array.buffer); } + this.source.needsUpdate = true; } - const now = performance.now(); - for (const pageLru of overflow.reverse()) { - pageLru.lru = now; - this.pageLru.delete(pageLru); - this.pageLru.add(pageLru); - } - const extraPages = new Set(this.pageLru); - for (const pageLru of needed.reverse()) { - extraPages.delete(pageLru); - pageLru.lru = now; - this.pageLru.delete(pageLru); - this.pageLru.add(pageLru); - } - this.freeablePages = Array.from(extraPages).map(({ page }) => page); + return this.source; } - allocateFreeable() { - const page = this.freeablePages.shift(); - if (page === void 0) { - return void 0; - } - const splatsChunk = this.pageToSplatsChunk[page]; - if (!splatsChunk) { - throw new Error(`splatsChunk not found for page: ${page}`); + // Generate the RGBA8 values from a Rgba8Readback dyno program. + render({ + reader, + count, + renderer + }) { + if (!this.readback) { + this.readback = new Readback({ renderer }); } - const { splats, chunk } = splatsChunk; - this.removeSplatsChunkPage(splats, chunk, page); - this.lodTreeUpdates.push({ - splats, - page, - chunk, - numSplats: this.pageSplats - }); - return page; + this.readback.render({ reader, count, renderer }); + this.capacity = this.readback.capacity; + this.count = this.readback.count; } - processFetched() { - const now = performance.now(); - while (true) { - const fetched = this.fetched.shift(); - if (!fetched) { - break; - } - const { splats, chunk, data } = fetched; - let page = this.allocatePage(); - if (page === void 0) { - page = this.allocateFreeable(); - if (page === void 0) { - return; - } - } - this.insertSplatsChunkPage(splats, chunk, page, now); - const { numSplats, extra } = data; - this.lodTreeUpdates.push({ - splats, - page, - chunk, - numSplats, - lodTree: extra.lodTree - }); - if (!this.extSplats) { - const packedArray = data.packedArray; - this.newUploads.push({ page, numSplats, packedArray, extra }); - } else { - const extArrays = data.extArrays; - const packedArray = extArrays[0]; - const extArray = extArrays[1]; - this.newUploads.push({ page, numSplats, packedArray, extArray, extra }); - } - } + // Extract the RGBA8 values from a PackedSplats collection. + fromPackedSplats({ + packedSplats, + base, + count, + renderer + }) { + const { dynoSplats, dynoBase, dynoCount, reader } = _RgbaArray.makeDynos(); + dynoSplats.packedSplats = packedSplats; + dynoBase.value = base; + dynoCount.value = count; + this.render({ reader, count, renderer }); + return this; } - processUploads() { - while (true) { - const upload = this.readyUploads.shift(); - if (!upload) { - break; - } - const { page, numSplats, packedArray, extArray, extra } = upload; - this.uploadPage(page, packedArray, extra, extArray); + // Read back the RGBA8 values from the readback buffer. + async read() { + if (!this.readback) { + throw new Error("No readback"); } + if (!this.array || this.array.length < this.count * 4) { + this.array = new Uint8Array(this.capacity * 4); + } + const result = await this.readback.readback({ readback: this.array }); + return result.subarray(0, this.count * 4); } - consumeLodTreeUpdates() { - const updates = this.lodTreeUpdates; - this.lodTreeUpdates = []; - this.readyUploads.push(...this.newUploads); - this.newUploads = []; - return updates; + async getArray() { + if (this.readback) { + return await this.read(); + } + if (this.array) { + return this.array; + } + throw new Error("No array"); } -}; -_SplatPager.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyUint32x2 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 2); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyIndicesTexture = (() => { - const emptyArray = new Uint32Array(4096 * 4); - const texture2 = new THREE.DataTexture(emptyArray, 4096, 1); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_SplatPager.emptyPackedTexture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtTexture = _SplatPager.emptyUint32x4; -_SplatPager.emptySh1Texture = _SplatPager.emptyUint32x2; -_SplatPager.emptySh2Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptySh3Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh1Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh2Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh3Texture = _SplatPager.emptyUint32x4; -_SplatPager.emptyExtSh3BTexture = _SplatPager.emptyUint32x4; -let SplatPager = _SplatPager; -function getGlTexture(renderer, texture2) { - if (!renderer.properties.has(texture2)) { - throw new Error("texture not found"); + // Can be used where you need an uninitialized THREE.DataArrayTexture like + // a uniform you will update with the result of this.getTexture() later. + static getEmpty() { + if (!_RgbaArray.emptySource) { + const emptyArray = new Uint8Array(1 * 4); + _RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1); + _RgbaArray.emptySource.format = THREE.RGBAFormat; + _RgbaArray.emptySource.type = THREE.UnsignedByteType; + _RgbaArray.emptySource.internalFormat = "RGBA8"; + _RgbaArray.emptySource.needsUpdate = true; + } + return _RgbaArray.emptySource; } - const props = renderer.properties.get(texture2); - const glTexture = props.__webglTexture; - if (!glTexture) { - throw new Error("texture not found"); + // Create a dyno program that can extract RGBA8 values from a PackedSplats + static makeDynos() { + if (!_RgbaArray.dynos) { + const dynoSplats = new DynoPackedSplats(); + const dynoBase = new DynoInt({ value: 0 }); + const dynoCount = new DynoInt({ value: 0 }); + const reader = dynoBlock( + { index: "int" }, + { rgba8: "vec4" }, + ({ index }) => { + if (!index) { + throw new Error("index is undefined"); + } + index = add(index, dynoBase); + const gsplat = readPackedSplatRange( + dynoSplats, + index, + dynoBase, + dynoCount + ); + return { rgba8: splitGsplat(gsplat).outputs.rgba }; + } + ); + _RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader }; + } + return _RgbaArray.dynos; } - return glTexture; -} -const wasmInitialized = __wbg_init(); -async function fetchRange({ - url, - requestHeader, - withCredentials, - offset, - bytes -}) { - const request = new Request(url, { - headers: requestHeader ? new Headers(requestHeader) : void 0, - credentials: withCredentials ? "include" : "same-origin" +}; +_RgbaArray.emptySource = null; +_RgbaArray.dynos = null; +let RgbaArray = _RgbaArray; +const TRgbaArray = { type: "RgbaArray" }; +const defineRgbaArray = unindent(` + struct RgbaArray { + sampler2DArray texture; + int count; + }; +`); +function readRgbaArray(rgba, index) { + const dyno2 = new Dyno({ + inTypes: { rgba: TRgbaArray, index: "int" }, + outTypes: { rgba: "vec4" }, + inputs: { rgba, index }, + globals: () => [defineRgbaArray], + statements: ({ inputs, outputs }) => unindentLines(` + if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { + ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); + } else { + ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0); + } + `) }); - if (offset !== void 0 && bytes !== void 0) { - request.headers.set("Range", `bytes=${offset}-${offset + bytes - 1}`); - } - const response = await fetch(request); - if (!response.ok || !response.body) { - throw new Error( - `Failed to fetch "${url}": ${response.status} ${response.statusText}` - ); - } - return new Uint8Array(await response.arrayBuffer()); + return dyno2.outputs.rgba; } -class EmptySplatSource { - constructor() { - this.fetchDyno = new Dyno({ - inTypes: {}, - outTypes: { gsplat: Gsplat }, - globals: () => [defineGsplat], - statements: ({ outputs }) => unindentLines(` - ${outputs.gsplat}.flags = 0u; - return; - `) - }).outputs.gsplat; - } - prepareFetchSplat() { +const PAGE_WIDTH = 256; +const PAGE_HEIGHT = 256; +const PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; +class PagedSplats { + constructor(options) { + var _a2; + this.pager = options.pager; + this.rootUrl = options.rootUrl ?? ""; + this.requestHeader = options.requestHeader; + this.withCredentials = options.withCredentials; + this.numSh = 0; + this.maxSh = ((_a2 = options.pager) == null ? void 0 : _a2.maxSh) ?? 3; + this.numSplats = 0; + this.dynoNumSplats = new DynoInt({ value: 0 }); + this.dynoIndices = new DynoUsampler2D({ + value: SplatPager.emptyIndicesTexture + }); + this.rgbMinMaxLnScaleMinMax = new DynoVec4({ + value: new THREE.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX) + }); + this.lodOpacity = new DynoBool({ + value: false + }); + this.dynoNumSh = new DynoInt({ value: 0 }); + this.shMax = new DynoVec3({ value: new THREE.Vector3() }); + this.fileBytes = options.fileBytes; + this.fileType = options.fileType; + if (!this.fileType && this.fileBytes) { + this.fileType = getSplatFileType(this.fileBytes); + } + if (!this.fileType && this.rootUrl) { + this.fileType = getSplatFileTypeFromPath(this.rootUrl); + } + if (!this.fileType) { + throw new Error("Unable to determine file type"); + } + if (this.fileType === SplatFileType.RAD) { + this.radMetaPromise = this.getRadMeta(); + } } dispose() { - } - getNumSplats() { - return 0; - } - hasRgbDir() { - return false; - } - getNumSh() { - return 0; + if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) { + this.dynoIndices.value.dispose(); + this.dynoIndices.value = SplatPager.emptyIndicesTexture; + } } setMaxSh(maxSh) { + this.maxSh = maxSh; } - fetchSplat({ index }) { - return this.fetchDyno; + getRadMeta() { + if (this.radMetaPromise) { + return this.radMetaPromise; + } + this.radMetaPromise = (async () => { + await initialization; + if (this.fileBytes) { + const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576)); + if (metaStart) { + return metaStart; + } + throw new Error("Failed to decode RAD header"); + } + if (!this.rootUrl) { + throw new Error("No url or fileBytes provided"); + } + for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) { + const bytes = await fetchRange({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset: 0, + bytes: tryBytes + }); + const metaStart = decode_rad_header(bytes); + if (metaStart) { + return metaStart; + } + } + throw new Error("Failed to decode RAD header"); + })().then((metaStart) => { + return metaStart; + }); + this.radMetaPromise.catch((error) => { + console.error(error); + }); + return this.radMetaPromise; } - forEachSplat() { + chunkUrl(chunk) { + return this.rootUrl.replace(/-lod-0\./, `-lod-${chunk}.`); } -} -const _SplatMesh = class _SplatMesh extends SplatGenerator { - constructor(options = {}) { - super({ - update: (context) => this.update(context) - }); - this.isInitialized = false; - this.recolor = new THREE.Color(1, 1, 1); - this.opacity = 1; - this.generatorDirty = true; - this.enableViewToObject = false; - this.enableViewToWorld = false; - this.enableWorldToView = false; - this.skinning = null; - this.edits = null; - this.rgbaDisplaceEdits = null; - this.splatRgba = null; - this.maxSh = 3; - this.showLodPageDyno = new DynoInt({ value: 0 }); - if (options.splats) { - this.splats = options.splats; - this.numSplats = options.splats.getNumSplats(); - } else if (options.paged) { - if (options.extSplats) { - console.warn( - "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" + async fetchDecodeChunk(chunk) { + let decodeBytes = void 0; + if (this.fileType === SplatFileType.RAD) { + const { meta, chunksStart } = await this.getRadMeta(); + if (chunk < 0 || chunk >= meta.chunks.length) { + throw new Error( + `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})` ); } - const rootUrl = options.url ?? ""; - if (options.paged === true) { - this.paged = new PagedSplats({ rootUrl }); - } else if (options.paged instanceof PagedSplats) { - this.paged = options.paged; - } else if (options.paged instanceof SplatPager) { - this.paged = new PagedSplats({ rootUrl, pager: options.paged }); + let { offset, bytes, filename } = meta.chunks[chunk]; + if (filename) { + if (this.fileBytes) { + throw new Error("Chunked RAD file not supported with fileBytes"); + } + const resolvedRoot = new URL( + this.rootUrl, + window.location.href + ).toString(); + const chunkUrl = new URL(filename, resolvedRoot).toString(); + decodeBytes = await fetchRange({ + url: chunkUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials + }); } else { - throw new Error("Invalid paged option"); - } - this.splats = this.paged; - } else if (options.extSplats) { - this.extSplats = options.extSplats instanceof ExtSplats ? options.extSplats : new ExtSplats(); - options.extSplats = this.extSplats; - this.numSplats = this.extSplats.numSplats; - this.splats = this.extSplats; - } else if (options.packedSplats) { - this.packedSplats = options.packedSplats; - this.packedSplats.splatEncoding = options.splatEncoding ?? { - ...DEFAULT_SPLAT_ENCODING - }; - this.splats = this.packedSplats; - } else { - this.packedSplats = new PackedSplats(); - } - this.editable = options.editable ?? true; - this.raycastable = options.raycastable ?? true; - this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2; - this.onFrame = options.onFrame; - this.context = { - transform: new SplatTransformer(), - viewToWorld: new SplatTransformer(), - worldToView: new SplatTransformer(), - viewToObject: new SplatTransformer(), - covTransform: new CovSplatTransformer(), - covViewToWorld: new CovSplatTransformer(), - covWorldToView: new CovSplatTransformer(), - covViewToObject: new CovSplatTransformer(), - recolor: new DynoVec4({ - value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY) - }), - time: new DynoFloat({ value: 0 }), - deltaTime: new DynoFloat({ value: 0 }), - numSplats: new DynoInt({ value: 0 }), - splats: new EmptySplatSource(), - enableLod: new DynoBool({ value: false }), - lodIndices: new DynoUsampler2D({ - value: emptyLodIndices, - key: "lodIndices" - }) - }; - this.covSplats = options.covSplats ?? false; - if (this.covSplats && !this.extSplats) { - throw new Error("CovSplats requires ExtSplats"); - } - this.objectModifiers = options.objectModifier ? [options.objectModifier] : void 0; - this.worldModifiers = options.worldModifier ? [options.worldModifier] : void 0; - if (options.objectModifiers) { - this.objectModifiers = options.objectModifiers; - } - if (options.worldModifiers) { - this.worldModifiers = options.worldModifiers; - } - this.enableLod = options.enableLod; - this.lodScale = options.lodScale ?? 1; - this.behindFoveate = options.behindFoveate; - this.coneFov0 = options.coneFov0; - this.coneFov = options.coneFov; - this.coneFoveate = options.coneFoveate; - this.updateGenerator(); - if (options.url || options.fileBytes || options.stream || options.constructSplats || options.packedSplats && !options.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) { - this.initialized = this.asyncInitialize(options).then(async () => { - this.updateGenerator(); - this.isInitialized = true; - if (options.onLoad) { - const maybePromise = options.onLoad(this); - if (maybePromise instanceof Promise) { - await maybePromise; + offset += chunksStart; + if (this.fileBytes) { + if (offset < 0 || offset + bytes > this.fileBytes.length) { + throw new Error( + `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}` + ); } + decodeBytes = this.fileBytes.slice(offset, offset + bytes); + } else if (this.rootUrl) { + decodeBytes = await fetchRange({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset, + bytes + }); + } else { + throw new Error("No url or fileBytes provided"); } - return this; + } + } else if (this.fileBytes) ; + else if (this.rootUrl) { + const url = this.chunkUrl(chunk); + const request = new Request(url, { + headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, + credentials: this.withCredentials ? "include" : "same-origin" }); - } else { - this.isInitialized = true; - this.initialized = Promise.resolve(this); - if (options.onLoad) { - const maybePromise = options.onLoad(this); - if (maybePromise instanceof Promise) { - this.initialized = maybePromise.then(() => this); - } + const response = await fetch(request); + if (!response.ok || !response.body) { + throw new Error( + `Failed to fetch "${url}": ${response.status} ${response.statusText}` + ); } + decodeBytes = new Uint8Array(await response.arrayBuffer()); + } else { + throw new Error("No url or fileBytes provided"); } - } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - constructSplats, - onProgress, - splatEncoding, - lod, - nonLod, - lodAbove - } = options; - if (this.packedSplats) { - if (url || fileBytes || stream || constructSplats) { - const packedSplatsOptions = { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - construct: constructSplats, - onProgress, - splatEncoding, - lod, - nonLod, - lodAbove - }; - this.packedSplats.reinitialize(packedSplatsOptions); + return await workerPool.withWorker(async (worker) => { + var _a2, _b2, _c, _d, _e; + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - await this.packedSplats.initialized; - this.splats = this.packedSplats; - } else if (this.extSplats) { - if (url || fileBytes || stream || constructSplats) { - const construct = constructSplats; - this.extSplats.reinitialize({ - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - maxSplats, - construct, - onProgress, - lod, - nonLod, - lodAbove + if (!this.pager.extSplats) { + const result2 = await worker.call("loadPackedSplats", { + fileBytes: decodeBytes, + pathName: this.chunkUrl(chunk), + sh1Codes: (_a2 = this.sh1Codes) == null ? void 0 : _a2.slice(), + sh2Codes: (_b2 = this.sh2Codes) == null ? void 0 : _b2.slice(), + sh3Codes: (_c = this.sh3Codes) == null ? void 0 : _c.slice() }); - await this.extSplats.initialized; - this.splats = this.extSplats; + const lodSplats2 = result2.lodSplats; + if (!this.splatEncoding) { + this.splatEncoding = lodSplats2.splatEncoding; + this.numSh = lodSplats2.extra.sh3 ? 3 : lodSplats2.extra.sh2 ? 2 : lodSplats2.extra.sh1 ? 1 : 0; + this.rgbMinMaxLnScaleMinMax.value.set( + this.splatEncoding.rgbMin ?? 0, + this.splatEncoding.rgbMax ?? 1, + this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN, + this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX + ); + this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false; + this.shMax.value.set( + this.splatEncoding.sh1Max ?? 1, + this.splatEncoding.sh2Max ?? 1, + this.splatEncoding.sh3Max ?? 1 + ); + } + this.sh1Codes = lodSplats2.extra.sh1Codes ?? this.sh1Codes; + this.sh2Codes = lodSplats2.extra.sh2Codes ?? this.sh2Codes; + this.sh3Codes = lodSplats2.extra.sh3Codes ?? this.sh3Codes; + return lodSplats2; + } + const sh3Codes = this.sh3Codes; + const result = await worker.call("loadExtSplats", { + fileBytes: decodeBytes, + pathName: this.chunkUrl(chunk), + sh1Codes: (_d = this.sh1Codes) == null ? void 0 : _d.slice(), + sh2Codes: (_e = this.sh2Codes) == null ? void 0 : _e.slice(), + sh3Codes: sh3Codes ? [sh3Codes[0].slice(), sh3Codes[1].slice()] : void 0 + }); + const lodSplats = result.lodSplats; + if (!this.splatEncoding) { + this.splatEncoding = DEFAULT_SPLAT_ENCODING; + this.numSh = lodSplats.extra.sh3a && lodSplats.extra.sh3b ? 3 : lodSplats.extra.sh2 ? 2 : lodSplats.extra.sh1 ? 1 : 0; } + this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes; + this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes; + this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes; + return lodSplats; + }); + } + update(numSplats, indices) { + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - if (this.splats) { - this.numSplats = this.splats.getNumSplats(); - this.updateGenerator(); + const renderer = this.pager.renderer; + this.numSplats = numSplats; + this.dynoNumSplats.value = this.numSplats; + const rows = Math.ceil(numSplats / 16384); + let indicesTexture = this.dynoIndices.value === SplatPager.emptyIndicesTexture ? void 0 : this.dynoIndices.value; + if (indicesTexture && rows > indicesTexture.image.height) { + indicesTexture.dispose(); + indicesTexture = void 0; + } + if (!indicesTexture) { + indicesTexture = new THREE.DataTexture( + indices, + 4096, + rows, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType + ); + indicesTexture.internalFormat = "RGBA32UI"; + indicesTexture.needsUpdate = true; + renderer.initTexture(indicesTexture); + this.dynoIndices.value = indicesTexture; + } else { + const textureIndices = indicesTexture.image.data; + textureIndices.set(indices.subarray(0, numSplats)); + uploadU32DataTextureRows( + renderer, + indicesTexture, + 4096, + rows, + textureIndices + ); } } - static async staticInitialize() { - await __wbg_init(); - _SplatMesh.isStaticInitialized = true; + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; } - // Creates a new Gsplat with the provided parameters (all values in "float" space, - // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, - // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential - // doubling strategy to fit the new data, so it's fairly efficient to just - // pushSplat(...) each Gsplat you want to create in a loop. - pushSplat(center, scales, quaternion, opacity, color) { - if (this.packedSplats) { - this.packedSplats.pushSplat(center, scales, quaternion, opacity, color); - } else if (this.extSplats) { - this.extSplats.pushSplat(center, scales, quaternion, opacity, color); + hasRgbDir() { + if (!this.pager) { + return false; } + return Math.min(this.numSh, this.pager.maxSh) > 0; } - // This method iterates over all Gsplats in this instance's packedSplats, - // invoking the provided callback with index: number in 0..=(this.numSplats-1) and - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). - // Note that the objects passed in as center etc. are the same for every callback - // invocation: these objects are reused for efficiency. Changing these values has - // no effect as they are decoded/unpacked copies of the underlying data. To update - // the packedSplats, call .packedSplats.setSplat(index, center, scales, - // quaternion, opacity, color). - forEachSplat(callback) { - var _a2; - (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + getNumSh() { + return this.numSh; } - // Call this when you are finished with the SplatMesh and want to free - // any buffers it holds (via packedSplats). - dispose() { - if (this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats) { - this.splats.dispose(); - this.splats = void 0; + fetchSplat({ + index, + viewOrigin + }) { + if (!this.pager) { + throw new Error("PagedSplats.pager not set"); } - if (this.packedSplats) { - this.packedSplats.dispose(); - this.packedSplats = void 0; + const splatIndex = this.pager.readIndex.apply({ + index, + numSplats: this.dynoNumSplats, + indices: this.dynoIndices + }).index; + if (!this.pager.extSplats) { + if (this.hasRgbDir() && viewOrigin) { + this.dynoNumSh.value = Math.min( + this.numSh, + this.maxSh, + this.pager.maxSh + ); + return this.pager.readSplatDir.apply({ + index: splatIndex, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity, + viewOrigin, + numSh: this.dynoNumSh, + shMax: this.shMax + }).gsplat; + } + return this.pager.readSplat.apply({ + index: splatIndex, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity + }).gsplat; } - if (this.extSplats) { - this.extSplats.dispose(); - this.extSplats = void 0; + if (this.hasRgbDir() && viewOrigin) { + this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh); + return this.pager.readSplatExtDir.apply({ + index: splatIndex, + viewOrigin, + numSh: this.dynoNumSh + }).gsplat; } + return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat; } - // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, - // only the centers of the splats are used to compute the bounding box. - // IMPORTANT: This should only be called after the SplatMesh is initialized. - getBoundingBox(centers_only = true) { - var _a2; - if (!this.initialized) { - throw new Error( - "Cannot get bounding box before SplatMesh is initialized" + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(callback) { + if (!this.pager || !this.numSplats) { + return; + } + const extSplats = this.pager.extSplats; + const indices = this.dynoIndices.value.image.data; + const packedSplatArray = this.pager.packedTexture.value.image.data; + const extPackedSplatArray = this.pager.extTexture.value.image.data; + const extArrays = [ + packedSplatArray, + extPackedSplatArray + ]; + for (let i = 0; i < this.numSplats; ++i) { + const splatIndex = indices[i]; + const unpacked = extSplats ? decodeExtSplat(extArrays, splatIndex) : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding); + callback( + i, + unpacked.center, + unpacked.scales, + unpacked.quaternion, + unpacked.opacity, + unpacked.color ); } - const minVec = new THREE.Vector3( - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY + } +} +const _SplatPager = class _SplatPager { + constructor(options) { + this.fetchPause = 0; + this.splatsChunkToPage = /* @__PURE__ */ new Map(); + this.pageToSplatsChunk = []; + this.renderer = options.renderer; + this.extSplats = options.extSplats ?? false; + this.pageSplats = PAGE_SPLATS; + this.maxSplats = options.maxSplats ?? 16777216; + this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS); + this.maxSplats = this.maxPages * PAGE_SPLATS; + this.maxSh = options.maxSh ?? 3; + this.curSh = 0; + this.autoDrive = options.autoDrive ?? true; + this.numFetchers = options.numFetchers ?? 3; + this.splatsChunkToPage = /* @__PURE__ */ new Map(); + this.pageToSplatsChunk = new Array(this.maxPages); + this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i); + this.pageLru = /* @__PURE__ */ new Set(); + this.freeablePages = []; + this.newUploads = []; + this.readyUploads = []; + this.lodTreeUpdates = []; + this.fetchers = []; + this.fetched = []; + this.fetchPriority = []; + this.packedTexture = new DynoUsampler2DArray({ + value: this.newUint32ArrayTexture(4) + }); + this.extTexture = new DynoUsampler2DArray({ + value: this.extSplats ? this.newUint32ArrayTexture(4) : _SplatPager.emptyExtTexture + }); + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + this.shTextures = emptyShTextures.map( + (texture2) => new DynoUsampler2DArray({ + value: texture2 + }) ); - const maxVec = new THREE.Vector3( - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY + this.highlightLabel = new DynoInt({ key: "highlightLabel", value: -1 }); + this.lookUpTexture = new DynoUsampler2D({ + value: new THREE.DataTexture( + new Uint32Array(256), + 256, + 1, + THREE.RedIntegerFormat, + THREE.UnsignedIntType + ) + }); + this.lookUpTexture.value.image.data.fill(1); + this.lookUpTexture.value.needsUpdate = true; + this.renderer.initTexture(this.lookUpTexture.value); + this.labelTexture = new DynoUsampler2DArray({ + value: _SplatPager.emptyLabelTexture + }); + this.instanceTexture = new DynoUsampler2DArray({ + value: _SplatPager.emptyLabelTexture + }); + this.labelLookupModifier = new Dyno({ + inTypes: { + gsplat: Gsplat, + lookup: "usampler2D", + label: "usampler2DArray", + instance: "usampler2DArray", + highlightLabel: "int" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + lookup: this.lookUpTexture, + label: this.labelTexture, + instance: this.instanceTexture, + highlightLabel: this.highlightLabel + }, + globals: () => [ + randomColourFromID, + defineGsplat + ], + statements: ({ inputs, outputs }) => unindentLines(` + Gsplat g = ${inputs.gsplat}; + + ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16); + uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0); + uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r; + if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; } + + if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) { + uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0); + vec4 splatColour = getDeterministicColor(instanceTexel.r); + g.rgba = mix(g.rgba, splatColour, 0.6); + } + + ${outputs.gsplat} = g; + `) + }); + this.readIndex = dynoBlock( + { index: "int", numSplats: "int", indices: "usampler2D" }, + { index: "int" }, + ({ index, numSplats, indices }) => { + return new Dyno({ + inTypes: { + index: "int", + numSplats: "int", + indices: "usampler2D" + }, + outTypes: { index: "int" }, + inputs: { + index, + numSplats, + indices + }, + statements: ({ inputs, outputs }) => unindentLines(` + if (${inputs.index} >= ${inputs.numSplats}) { + return; + } + + ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14); + uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3]; + ${outputs.index} = int(index); + `) + }).outputs; + } ); - const corners = new THREE.Vector3(); - const signs = [-1, 1]; - function callback(_index, center, scales, quaternion, _opacity, _color) { - if (centers_only) { - minVec.min(center); - maxVec.max(center); - } else { - for (const x of signs) { - for (const y of signs) { - for (const z of signs) { - corners.set(x * scales.x, y * scales.y, z * scales.z); - corners.applyQuaternion(quaternion); - corners.add(center); - minVec.min(corners); - maxVec.max(corners); + this.readSplat = dynoBlock( + { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, + { gsplat: Gsplat }, + ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => { + return new Dyno({ + inTypes: { + index: "int", + packedTexture: "usampler2DArray", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool" + }, + outTypes: { gsplat: Gsplat }, + inputs: { + index, + packedTexture: this.packedTexture, + rgbMinMaxLnScaleMinMax, + lodOpacity + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + ivec3 splatCoord = pagedSplatTexCoord(index); + uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0); + + unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax}); + if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; } - } - } + + ${outputs.gsplat}.index = index; + ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + if (${inputs.lodOpacity}) { + ${outputs.gsplat}.rgba.a *= 2.0; + } + `) + }).outputs; } - } - (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); - const box = new THREE.Box3(minVec, maxVec); - return box; - } - set objectModifier(modifier) { - if (modifier) { - this.objectModifiers = [modifier]; - } else { - this.objectModifiers = void 0; - } - } - set worldModifier(modifier) { - if (modifier) { - this.worldModifiers = [modifier]; - } else { - this.worldModifiers = void 0; - } - } - constructGenerator(context) { - if (this.covSplats) { - return this.constructCovGenerator(context); - } - const { transform, viewToObject, recolor } = context; - const generator = dynoBlock( - { index: "int" }, + ); + this.readSplatDir = dynoBlock( + { + index: "int", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool", + viewOrigin: "vec3", + numSh: "int", + shMax: "vec3" + }, { gsplat: Gsplat }, - ({ index }) => { - if (!index) { - throw new Error("index is undefined"); + ({ + index, + rgbMinMaxLnScaleMinMax, + lodOpacity, + viewOrigin, + numSh, + shMax + }) => { + if (!index || !rgbMinMaxLnScaleMinMax || !lodOpacity || !viewOrigin || !numSh || !shMax) { + throw new Error("index and viewOrigin are required"); } - index = maybeLookupIndex( - context.lodIndices, - index, - context.numSplats, - context.enableLod, - this.showLodPageDyno - ); - context.splats.setMaxSh(this.maxSh); - context.splats.prepareFetchSplat(); - let gsplat = context.splats.fetchSplat({ + let gsplat = this.readSplat.apply({ index, - viewOrigin: viewToObject.translate - }); - if (this.splatRgba) { - gsplat = maybeInjectSplatRgba( - gsplat, - this.splatRgba.dyno, - index, - context.enableLod - ); - } - if (this.skinning) { - gsplat = this.skinning.modify(gsplat); - } - if (this.objectModifiers) { - for (const modifier of this.objectModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } - gsplat = transform.applyGsplat(gsplat); - const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba); - gsplat = combineGsplat({ gsplat, rgba: recolorRgba }); - if (this.rgbaDisplaceEdits) { - gsplat = this.rgbaDisplaceEdits.modify(gsplat); - } - if (this.worldModifiers) { - for (const modifier of this.worldModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } + rgbMinMaxLnScaleMinMax, + lodOpacity + }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + let rgb = evaluatePackedSH({ + coord: pagedSplatTexCoord(index), + viewDir, + numSh, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3Texture: this.shTextures[2], + shMax + }).rgb; + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); return { gsplat }; } ); - this.generator = generator; - this.covGenerator = void 0; - } - constructCovGenerator(context) { - const { covTransform, covViewToObject, recolor } = context; - const generator = dynoBlock( + this.readSplatExt = dynoBlock( { index: "int" }, - { covsplat: CovSplat }, + { gsplat: Gsplat }, ({ index }) => { - if (!index) { - throw new Error("index is undefined"); - } - index = maybeLookupIndex( - context.lodIndices, - index, - context.numSplats, - context.enableLod, - this.showLodPageDyno - ); - context.splats.prepareFetchSplat(); - let gsplat = context.splats.fetchSplat({ - index, - viewOrigin: covViewToObject.offset - }); - if (this.splatRgba) { - gsplat = maybeInjectSplatRgba( - gsplat, - this.splatRgba.dyno, + return new Dyno({ + inTypes: { + index: "int", + extTexture1: "usampler2DArray", + extTexture2: "usampler2DArray" + }, + outTypes: { gsplat: Gsplat }, + inputs: { index, - context.enableLod - ); - } - if (this.objectModifiers) { - for (const modifier of this.objectModifiers) { - gsplat = modifier.apply({ gsplat }).gsplat; - } - } - let covsplat = gsplatToCovSplat(gsplat); - if (this.skinning) { - covsplat = this.skinning.modifyCov(covsplat); - } - if (this.covObjectModifiers) { - for (const modifier of this.covObjectModifiers) { - covsplat = modifier.apply({ covsplat }).covsplat; - } - } - covsplat = covTransform.applyCovSplat(covsplat); - const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba); - covsplat = combineCovSplat({ covsplat, rgba: recolorRgba }); - if (this.rgbaDisplaceEdits) { - covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat); - } - if (this.covWorldModifiers) { - for (const modifier of this.covWorldModifiers) { - covsplat = modifier.apply({ covsplat }).covsplat; - } + extTexture1: this.packedTexture, + extTexture2: this.extTexture + }, + globals: () => [defineGsplat], + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); + uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0); + float alpha = unpackSplatExtAlpha(ext1); + if (alpha == 0.0) { + return; + } + + uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0); + unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba); + if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${outputs.gsplat}.index = index; + ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + `) + }).outputs; + } + ); + this.readSplatExtDir = dynoBlock( + { + index: "int", + viewOrigin: "vec3", + numSh: "int" + }, + { gsplat: Gsplat }, + ({ index, viewOrigin, numSh }) => { + if (!index || !viewOrigin || !numSh) { + throw new Error("index and viewOrigin are required"); } - return { covsplat }; + let gsplat = this.readSplatExt.apply({ index }).gsplat; + const splatCenter = splitGsplat(gsplat).outputs.center; + const viewDir = normalize(sub(splatCenter, viewOrigin)); + let rgb = evaluateExtSH({ + coord: pagedSplatTexCoord(index), + viewDir, + numSh, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3TextureA: this.shTextures[2], + sh3TextureB: this.shTextures[3] + }).rgb; + rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); + gsplat = combineGsplat({ gsplat, rgb }); + return { gsplat }; } ); - this.generator = void 0; - this.covGenerator = generator; - } - // Call this whenever something changes in the Gsplat processing pipeline, - // for example changing maxSh or updating objectModifier or worldModifier. - // Compiled generators are cached for efficiency and re-use when the same - // pipeline structure emerges after successive changes. - updateGenerator() { - this.generatorDirty = true; } - // This is called automatically by SparkRenderer and you should not have to - // call it. It updates parameters for the generated pipeline and calls - // updateGenerator() if the pipeline needs to change. - update({ - renderer, - time, - deltaTime, - viewToWorld, - camera, - renderSize, - globalEdits, - lodIndices - }) { - var _a2, _b2, _c; - this.context.time.value = time; - this.context.deltaTime.value = deltaTime; - _SplatMesh.dynoTime.value = time; - this.showLodPageDyno.value = this.showLodPage ?? -1; - const splats = this.splats ?? this.packedSplats ?? this.extSplats; - if (splats) { - this.context.splats = splats; - } - this.numSplats = this.context.splats.getNumSplats(); - let updated = false; - const lodSplats = ((_a2 = this.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = this.extSplats) == null ? void 0 : _b2.lodSplats); - this.context.enableLod.value = lodSplats != null && lodIndices != null; - if (this.enableLod === false) { - this.context.enableLod.value = false; + dispose() { + this.autoDrive = false; + this.numFetchers = 0; + this.packedTexture.value.dispose(); + this.packedTexture.value.source.data = null; + if (this.extTexture.value !== _SplatPager.emptyExtTexture) { + this.extTexture.value.dispose(); + this.extTexture.value.source.data = null; } - this.context.lodIndices.value = (lodIndices == null ? void 0 : lodIndices.texture) ?? emptyLodIndices; - if (this.context.enableLod.value && lodSplats) { - this.context.splats = lodSplats; - this.numSplats = (lodIndices == null ? void 0 : lodIndices.numSplats) ?? 0; + if (this.labelTexture.value !== _SplatPager.emptyLabelTexture) { + this.labelTexture.value.dispose(); + this.labelTexture.value.source.data = null; } - this.context.numSplats.value = this.numSplats; - if (this.context.splats !== this.lastSplats) { - this.lastSplats = this.context.splats; - this.generatorDirty = true; + if (this.instanceTexture.value !== _SplatPager.emptyLabelTexture) { + this.instanceTexture.value.dispose(); + this.instanceTexture.value.source.data = null; } - if (!this.covSplats) { - if (this.context.transform.update(this)) { - updated = true; - } - if (this.context.viewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { - updated = true; - } - const worldToView = viewToWorld.clone().invert(); - if (this.context.worldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { - updated = true; + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + for (let i = 0; i < emptyShTextures.length; i++) { + const texture2 = this.shTextures[i].value; + if (texture2 !== emptyShTextures[i]) { + texture2.dispose(); + texture2.source.data = null; } - const objectToWorld = new THREE.Matrix4().compose( - this.context.transform.translate.value, - this.context.transform.rotate.value, - new THREE.Vector3().setScalar(this.context.transform.scale.value) + } + } + updateLabelLookup(categories) { + const array = this.lookUpTexture.value.image.data; + array.fill(0); + categories.forEach((id) => { + if (id >= 0 && id < 256) array[id] = 1; + }); + this.lookUpTexture.value.needsUpdate = true; + } + newUintArrayTex(data, width, height, depth, format, type, internalFormat) { + const texture2 = new THREE.DataArrayTexture(data, width, height, depth); + texture2.format = format; + texture2.type = type; + texture2.internalFormat = internalFormat; + texture2.needsUpdate = true; + this.renderer.initTexture(texture2); + return texture2; + } + ensureLabelTextures() { + if (this.labelTexture.value === _SplatPager.emptyLabelTexture) { + this.labelTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE.RedIntegerFormat, + THREE.UnsignedIntType, + "R32UI" ); - const worldToObject = objectToWorld.invert(); - const viewToObjectMatrix = worldToObject.multiply(viewToWorld); - if (this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { - updated = true; - } - } else { - if (this.context.covTransform.update(this)) { - updated = true; - } - if (this.context.covViewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { - updated = true; - } - const worldToView = viewToWorld.clone().invert(); - if (this.context.covWorldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { - updated = true; - } - const worldToObject = this.matrixWorld.clone().invert(); - const viewToObjectMatrix = worldToObject.multiply(viewToWorld); - if (this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { - updated = true; + } + } + updateLabelHighlight(id) { + this.highlightLabel.value = id; + } + ensureInstanceTextures() { + if (this.instanceTexture.value === _SplatPager.emptyLabelTexture) { + this.instanceTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE.RedIntegerFormat, + THREE.UnsignedIntType, + "R32UI" + ); + } + } + ensureShTextures(numSh) { + this.curSh = Math.max(this.curSh, numSh); + const emptyShTextures = this.extSplats ? _SplatPager.emptyExtShTextures : _SplatPager.emptyShTextures; + for (let i = 0; i < this.curSh; i++) { + if (this.shTextures[i].value === emptyShTextures[i]) { + const elementsPerSplat = this.shTextures[i].value === _SplatPager.emptyUint32x2 ? 2 : 4; + this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat); } } - const newRecolor = new THREE.Vector4( - this.recolor.r, - this.recolor.g, - this.recolor.b, - this.opacity - ); - if (!newRecolor.equals(this.context.recolor.value)) { - this.context.recolor.value.copy(newRecolor); - updated = true; + } + allocatePage() { + return this.pageFreelist.shift(); + } + getSplatsChunk(splats, chunk) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + return void 0; } - const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : []; - if (this.editable && !this.edits) { - this.traverseVisible((node) => { - if (node instanceof SplatEdit) { - edits.push(node); - } - }); + return chunks[chunk]; + } + insertSplatsChunkPage(splats, chunk, page, now) { + if (!this.splatsChunkToPage.has(splats)) { + this.splatsChunkToPage.set(splats, []); } - edits.sort((a, b) => a.ordering - b.ordering); - const editsSdfs = edits.map((edit) => { - if (edit.sdfs != null) { - return { edit, sdfs: edit.sdfs }; - } - const sdfs = []; - edit.traverseVisible((node) => { - if (node instanceof SplatEditSdf) { - sdfs.push(node); - } - }); - return { edit, sdfs }; - }); - if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) { - const edits2 = editsSdfs.length; - const sdfs = editsSdfs.reduce( - (total, edit) => total + edit.sdfs.length, - 0 + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + throw new Error("impossible"); + } + if (chunk >= chunks.length) { + chunks.length = chunk + 1; + } + const pageLru = { page, lru: now }; + chunks[chunk] = pageLru; + this.pageLru.add(pageLru); + this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() }; + return this.pageToSplatsChunk[page]; + } + removeSplatsChunkPage(splats, chunk, page) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { + throw new Error("impossible"); + } + const pageLru = chunks[chunk]; + if (!pageLru) { + throw new Error( + `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}` ); - this.rgbaDisplaceEdits = new SplatEdits({ - maxEdits: edits2, - maxSdfs: sdfs - }); - this.generatorDirty = true; } - if (this.rgbaDisplaceEdits) { - const editResult = this.rgbaDisplaceEdits.update(editsSdfs); - updated || (updated = editResult.updated); - if (editResult.dynoUpdated) { - this.generatorDirty = true; - } + this.pageLru.delete(pageLru); + chunks[chunk] = void 0; + while (chunks.length > 0 && chunks[chunks.length - 1] === void 0) { + chunks.pop(); } - if (this.generatorDirty) { - this.constructGenerator(this.context); - this.generatorDirty = false; - updated = true; + if (chunks.length === 0) { + this.splatsChunkToPage.delete(splats); } - if (updated) { - this.updateVersion(); + this.pageToSplatsChunk[page] = void 0; + while (this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0) { + this.pageToSplatsChunk.pop(); } - (_c = this.onFrame) == null ? void 0 : _c.call(this, { mesh: this, time, deltaTime }); } - // This method conforms to the standard THREE.Raycaster API, performing object-ray - // intersections using this method to populate the provided intersects[] array - // with each intersection point. - raycast(raycaster, intersects) { - var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; - if (!_SplatMesh.isStaticInitialized || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) { + removeSplats(splats) { + const chunks = this.splatsChunkToPage.get(splats); + if (!chunks) { return; - } - const paged = this.paged != null; - const ext = paged ? ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.extSplats) ?? false : this.extSplats != null; - const { near, far, ray } = raycaster; - const worldToMesh = this.matrixWorld.clone().invert(); - const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh); - const origin = ray.origin.clone().applyMatrix4(worldToMesh); - const direction = ray.direction.clone().applyMatrix3(worldToMeshRot); - const buffer = get_raycast_buffer(); - const bufferSize = buffer.length / 4; - let intersections = 0; - const numSplats = ((_c = this.raycastIndices) == null ? void 0 : _c.numSplats) ?? (paged ? (_d = this.paged) == null ? void 0 : _d.numSplats : this.context.numSplats.value) ?? 0; - const indices = ((_e = this.raycastIndices) == null ? void 0 : _e.indices) ?? (paged ? (_f = this.paged) == null ? void 0 : _f.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; - if (!ext) { - const packed = paged ? (_h = (_g = this.paged) == null ? void 0 : _g.pager) == null ? void 0 : _h.packedTexture.value.image.data : indices ? (_j = (_i = this.packedSplats) == null ? void 0 : _i.lodSplats) == null ? void 0 : _j.packedArray : (_k = this.packedSplats) == null ? void 0 : _k.packedArray; - if (!packed) { - return; - } - const splatEncoding = paged ? (_l = this.paged) == null ? void 0 : _l.splatEncoding : (_m = this.packedSplats) == null ? void 0 : _m.splatEncoding; - for (let base = 0; base < numSplats; base += bufferSize) { - const count = Math.min(bufferSize, numSplats - base); - if (!indices) { - buffer.set(packed.subarray(base * 4, (base + count) * 4)); + } + const freedPages = /* @__PURE__ */ new Set(); + while (chunks.length > 0) { + const chunk = chunks.pop(); + if (chunk) { + const { page } = chunk; + this.pageToSplatsChunk[page] = void 0; + freedPages.add(page); + this.pageFreelist.push(page); + this.pageLru.delete(chunk); + } + } + this.splatsChunkToPage.delete(splats); + this.freeablePages = this.freeablePages.filter( + (page) => !freedPages.has(page) + ); + } + uploadPage(page, packedArray, shArrays, extArray, labels, instances) { + const pageBase = page * PAGE_SPLATS; + uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray); + if (extArray) { + uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray); + } + const numSh = Math.min(shArrays.length, 3); + this.ensureShTextures(numSh); + if (labels !== void 0) { + this.ensureLabelTextures(); + const labels_arr = labels; + const array = this.labelTexture.value.image.data; + array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr); + this.labelTexture.value.addLayerUpdate(page); + this.labelTexture.value.needsUpdate = true; + } + if (instances !== void 0) { + this.ensureInstanceTextures(); + const instances_arr = instances; + const array = this.instanceTexture.value.image.data; + array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr); + this.instanceTexture.value.addLayerUpdate(page); + this.instanceTexture.value.needsUpdate = true; + } + for (let i = 0; i < shArrays.length; i++) { + const array = shArrays[i]; + const elementsPerSplat = this.shTextures[i].value.format === THREE.RGIntegerFormat ? 2 : 4; + uploadTextureLayer( + this.shTextures[i], + page, + pageBase * elementsPerSplat, + array + ); + } + } + newUint32ArrayTexture(elementsPerSplat) { + const data = new Uint32Array( + this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat + ); + const texture2 = new THREE.DataArrayTexture( + data, + PAGE_WIDTH, + PAGE_HEIGHT, + this.maxPages + ); + texture2.format = elementsPerSplat === 2 ? THREE.RGIntegerFormat : THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = elementsPerSplat === 2 ? "RG32UI" : "RGBA32UI"; + texture2.needsUpdate = true; + texture2.source.dataReady = false; + this.renderer.initTexture(texture2); + return texture2; + } + driveFetchers() { + const needed = []; + const overflow = []; + let numPages = 0; + for (const { splats, chunk } of this.fetchPriority) { + const pageLru = this.getSplatsChunk(splats, chunk); + if (pageLru) { + if (numPages >= this.maxPages) { + overflow.push(pageLru); } else { - for (let i = 0; i < count; ++i) { - const index = indices[base + i]; - const i4 = i * 4; - const index4 = index * 4; - buffer[i4] = packed[index4]; - buffer[i4 + 1] = packed[index4 + 1]; - buffer[i4 + 2] = packed[index4 + 2]; - buffer[i4 + 3] = packed[index4 + 3]; - } + needed.push(pageLru); } - const newIntersections = raycast_packed_buffer( - origin.x, - origin.y, - origin.z, - direction.x, - direction.y, - direction.z, - this.minRaycastOpacity, - near, - far, - count, - (splatEncoding == null ? void 0 : splatEncoding.lnScaleMin) ?? LN_SCALE_MIN, - (splatEncoding == null ? void 0 : splatEncoding.lnScaleMax) ?? LN_SCALE_MAX, - (splatEncoding == null ? void 0 : splatEncoding.lodOpacity) ?? false - ); - intersections = this.appendRaycastBuffer( - intersections, - newIntersections - ); + numPages += 1; + continue; } - } else { - const buffer2 = get_raycast_buffer2(); - const ext1 = paged ? (_o = (_n = this.paged) == null ? void 0 : _n.pager) == null ? void 0 : _o.packedTexture.value.image.data : indices ? (_q = (_p = this.extSplats) == null ? void 0 : _p.lodSplats) == null ? void 0 : _q.extArrays[0] : (_r = this.extSplats) == null ? void 0 : _r.extArrays[0]; - const ext2 = paged ? (_t = (_s = this.paged) == null ? void 0 : _s.pager) == null ? void 0 : _t.extTexture.value.image.data : indices ? (_v = (_u = this.extSplats) == null ? void 0 : _u.lodSplats) == null ? void 0 : _v.extArrays[1] : (_w = this.extSplats) == null ? void 0 : _w.extArrays[1]; - if (!ext1 || !ext2) { - return; + if (this.fetched.some( + ({ splats: s, chunk: c }) => splats === s && chunk === c + ) || this.fetchers.some( + ({ splats: s, chunk: c }) => splats === s && chunk === c + )) { + numPages += 1; + continue; } - for (let base = 0; base < numSplats; base += bufferSize) { - const count = Math.min(bufferSize, numSplats - base); - if (!indices) { - buffer.set(ext1.subarray(base * 4, (base + count) * 4)); - buffer2.set(ext2.subarray(base * 4, (base + count) * 4)); - } else { - for (let i = 0; i < count; ++i) { - const index = indices[base + i]; - const i4 = i * 4; - const index4 = index * 4; - buffer[i4] = ext1[index4]; - buffer[i4 + 1] = ext1[index4 + 1]; - buffer[i4 + 2] = ext1[index4 + 2]; - buffer[i4 + 3] = ext1[index4 + 3]; - buffer2[i4] = ext2[index4]; - buffer2[i4 + 1] = ext2[index4 + 1]; - buffer2[i4 + 2] = ext2[index4 + 2]; - buffer2[i4 + 3] = ext2[index4 + 3]; + if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) { + numPages += 1; + const promise = splats.fetchDecodeChunk(chunk).then( + async (data) => { + this.fetched.push({ splats, chunk, data }); + if (this.fetchPause > 0) { + await new Promise( + (resolve) => setTimeout(resolve, this.fetchPause) + ); + } + }, + async (error) => { + console.warn(error); + const backoff = 250 + 500 * Math.random(); + await new Promise((resolve) => setTimeout(resolve, backoff)); } - } - const newIntersections = raycast_ext_buffers( - origin.x, - origin.y, - origin.z, - direction.x, - direction.y, - direction.z, - this.minRaycastOpacity, - near, - far, - count - ); - intersections = this.appendRaycastBuffer( - intersections, - newIntersections - ); + ).finally(() => { + this.fetchers = this.fetchers.filter( + ({ splats: s, chunk: c }) => splats !== s || chunk !== c + ); + this.processFetched(); + }); + this.fetchers.push({ splats, chunk, promise }); + promise.then((data) => { + if (this.autoDrive) { + this.driveFetchers(); + } + }); } } - for (const distance2 of _SplatMesh.raycastBuffer.subarray(0, intersections)) { - const point = ray.direction.clone().multiplyScalar(distance2).add(ray.origin); - intersects.push({ - distance: distance2, - point, - object: this - }); + const now = performance.now(); + for (const pageLru of overflow.reverse()) { + pageLru.lru = now; + this.pageLru.delete(pageLru); + this.pageLru.add(pageLru); } - } - appendRaycastBuffer(count, additional) { - const total = count + additional.length; - let capacity = _SplatMesh.raycastBuffer.length; - if (total > capacity) { - while (capacity < total) { - capacity *= 2; - } - const newBuffer = new Float32Array(capacity); - newBuffer.set(_SplatMesh.raycastBuffer.subarray(0, count)); - _SplatMesh.raycastBuffer = newBuffer; + const extraPages = new Set(this.pageLru); + for (const pageLru of needed.reverse()) { + extraPages.delete(pageLru); + pageLru.lru = now; + this.pageLru.delete(pageLru); + this.pageLru.add(pageLru); } - _SplatMesh.raycastBuffer.set(additional, count); - return count + additional.length; + this.freeablePages = Array.from(extraPages).map(({ page }) => page); } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - if (this.packedSplats) { - await this.packedSplats.createLodSplats({ quality, rgbaArray }); - } else if (this.extSplats) { - await this.extSplats.createLodSplats({ quality, rgbaArray }); + allocateFreeable() { + const page = this.freeablePages.shift(); + if (page === void 0) { + return void 0; + } + const splatsChunk = this.pageToSplatsChunk[page]; + if (!splatsChunk) { + throw new Error(`splatsChunk not found for page: ${page}`); } + const { splats, chunk } = splatsChunk; + this.removeSplatsChunkPage(splats, chunk, page); + this.lodTreeUpdates.push({ + splats, + page, + chunk, + numSplats: PAGE_SPLATS + }); + return page; } -}; -_SplatMesh.staticInitialized = _SplatMesh.staticInitialize(); -_SplatMesh.isStaticInitialized = false; -_SplatMesh.dynoTime = new DynoFloat({ value: 0 }); -_SplatMesh.raycastBuffer = new Float32Array(1024); -let SplatMesh = _SplatMesh; -function maybeLookupIndex(lodIndices, index, numSplats, enableLod, showLodPage) { - return dyno$1({ - inTypes: { - lodIndices: "usampler2D", - index: "int", - numSplats: "int", - enableLod: "bool", - showLodPage: "int" - }, - outTypes: { - index: "int" - }, - inputs: { - lodIndices, - index, - numSplats, - enableLod, - showLodPage - }, - statements: ({ inputs, outputs }) => unindentLines(` - int index = ${inputs.index}; - if (${inputs.showLodPage} < 0) { - if (index >= ${inputs.numSplats}) { - return; - } - if (${inputs.enableLod}) { - ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); - uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3]; - ${outputs.index} = int(splatIndex); - } else { - ${outputs.index} = index; - } - } else { - int start = ${inputs.showLodPage} << 16; - if (index >= 65536) { - return; - } - ${outputs.index} = start + index; - } - `) - }).outputs.index; -} -function maybeInjectSplatRgba(gsplat, rgba, index, enableLod) { - return dyno$1({ - inTypes: { - gsplat: Gsplat, - rgba: TRgbaArray, - index: "int", - enableLod: "bool" - }, - outTypes: { gsplat: Gsplat }, - inputs: { gsplat, rgba, index, enableLod }, - statements: ({ inputs, outputs }) => unindentLines(` - ${outputs.gsplat} = ${inputs.gsplat}; - if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { - ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); + processFetched() { + const now = performance.now(); + while (true) { + const fetched = this.fetched.shift(); + if (!fetched) { + break; + } + const { splats, chunk, data } = fetched; + let page = this.allocatePage(); + if (page === void 0) { + page = this.allocateFreeable(); + if (page === void 0) { + return; } - `) - }).outputs.gsplat; -} -const emptyLodIndices = (() => { - const texture2 = new THREE.DataTexture( - new Uint32Array(16384), - 4096, - 1, - THREE.RGBAIntegerFormat, - THREE.UnsignedIntType + } + this.insertSplatsChunkPage(splats, chunk, page, now); + const { numSplats, extra } = data; + this.lodTreeUpdates.push({ + splats, + page, + chunk, + numSplats, + lodTree: extra.lodTree + }); + if (isExtResult(data, this.extSplats)) { + const extArrays = data.extArrays; + const packedArray = extArrays[0]; + const extArray = extArrays[1]; + const shArrays = [ + data.extra.sh1, + data.extra.sh2, + data.extra.sh3a, + data.extra.sh3b + ]; + shArrays.length = shArrays.findIndex((sh) => !sh); + this.newUploads.push({ + page, + numSplats, + packedArray, + extArray, + shArrays, + labels: extra == null ? void 0 : extra.labels, + instances: extra == null ? void 0 : extra.instances + }); + } else { + const packedArray = data.packedArray; + const shArrays = [ + data.extra.sh1, + data.extra.sh2, + data.extra.sh3 + ]; + shArrays.length = shArrays.findIndex((sh) => !sh); + this.newUploads.push({ + page, + numSplats, + packedArray, + shArrays + }); + } + } + } + processUploads() { + while (true) { + const upload = this.readyUploads.shift(); + if (!upload) { + break; + } + const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload; + this.uploadPage(page, packedArray, shArrays, extArray, labels, instances); + } + } + consumeLodTreeUpdates() { + const updates = this.lodTreeUpdates; + this.lodTreeUpdates = []; + this.readyUploads.push(...this.newUploads); + this.newUploads = []; + return updates; + } +}; +_SplatPager.emptyUint32x4 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth ); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; texture2.internalFormat = "RGBA32UI"; texture2.needsUpdate = true; return texture2; })(); -new THREE.BufferGeometry(); -new THREE.ShaderMaterial(); -const PLY_PROPERTY_TYPES = [ - "char", - "uchar", - "short", - "ushort", - "int", - "uint", - "float", - "double" +_SplatPager.emptyUint32x2 = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 2); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth + ); + texture2.format = THREE.RGIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RG32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatPager.emptyIndicesTexture = (() => { + const emptyArray = new Uint32Array(4096 * 4); + const texture2 = new THREE.DataTexture(emptyArray, 4096, 1); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatPager.emptyPackedTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyExtTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyLabelTexture = _SplatPager.emptyUint32x4; +_SplatPager.emptyShTextures = [ + _SplatPager.emptyUint32x2, + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4 ]; -const _PlyReader = class _PlyReader { - // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet - constructor({ fileBytes }) { - this.header = ""; - this.littleEndian = true; - this.elements = {}; - this.comments = []; - this.data = null; - this.numSplats = 0; - this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes; +_SplatPager.emptyExtShTextures = [ + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4, + _SplatPager.emptyUint32x4, + // SH3A + _SplatPager.emptyUint32x4 + // SH3B +]; +let SplatPager = _SplatPager; +function isExtResult(data, extSplats) { + return extSplats; +} +function uploadTextureLayer(texture2, layer, dstOffset, data) { + const array = texture2.value.image.data; + array.subarray(dstOffset, dstOffset + data.length).set(data); + texture2.value.addLayerUpdate(layer); + texture2.value.needsUpdate = true; + texture2.value.source.dataReady = true; +} +async function fetchRange({ + url, + requestHeader, + withCredentials, + offset, + bytes +}) { + const request = new Request(url, { + headers: requestHeader ? new Headers(requestHeader) : void 0, + credentials: withCredentials ? "include" : "same-origin" + }); + if (offset !== void 0 && bytes !== void 0) { + request.headers.set("Range", `bytes=${offset}-${offset + bytes - 1}`); } - // Identify and parse the PLY text header (assumed to be <64KB in size). - // this.elements will contain all the elements in the file, typically - // "vertex" contains the Gsplat data. - async parseHeader() { - const bufferStream = new ReadableStream({ - start: (controller) => { - controller.enqueue(this.fileBytes.slice(0, 65536)); - controller.close(); - } + const response = await fetch(request); + if (!response.ok || !response.body) { + throw new Error( + `Failed to fetch "${url}": ${response.status} ${response.statusText}` + ); + } + return new Uint8Array(await response.arrayBuffer()); +} +class EmptySplatSource { + constructor() { + this.fetchDyno = new Dyno({ + inTypes: {}, + outTypes: { gsplat: Gsplat }, + globals: () => [defineGsplat], + statements: ({ outputs }) => unindentLines(` + ${outputs.gsplat}.flags = 0u; + return; + `) + }).outputs.gsplat; + } + prepareFetchSplat() { + } + dispose() { + } + getNumSplats() { + return 0; + } + hasRgbDir() { + return false; + } + getNumSh() { + return 0; + } + setMaxSh(maxSh) { + } + fetchSplat({ index }) { + return this.fetchDyno; + } + forEachSplat() { + } +} +const _SplatMesh = class _SplatMesh extends SplatGenerator { + constructor(options = {}) { + super({ + update: (context) => this.update(context) }); - const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader(); - this.header = ""; - const headerTerminator = "end_header\n"; - while (true) { - const { value, done } = await decoder.read(); - if (done) { - throw new Error("Failed to read header"); + this.isInitialized = false; + this.recolor = new THREE.Color(1, 1, 1); + this.opacity = 1; + this.generatorDirty = true; + this.enableViewToObject = false; + this.enableViewToWorld = false; + this.enableWorldToView = false; + this.skinning = null; + this.edits = null; + this.rgbaDisplaceEdits = null; + this.splatRgba = null; + this.maxSh = 3; + this.showLodPageDyno = new DynoInt({ value: 0 }); + if (options.splats) { + this.splats = options.splats; + this.numSplats = options.splats.getNumSplats(); + } else if (options.paged) { + if (options.extSplats) { + console.warn( + "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" + ); } - this.header += value; - const endHeader = this.header.indexOf(headerTerminator); - if (endHeader >= 0) { - this.header = this.header.slice(0, endHeader + headerTerminator.length); - break; + const rootUrl = options.url ?? ""; + if (options.paged === true) { + this.paged = new PagedSplats({ rootUrl }); + } else if (options.paged instanceof PagedSplats) { + this.paged = options.paged; + } else if (options.paged instanceof SplatPager) { + this.paged = new PagedSplats({ rootUrl, pager: options.paged }); + } else { + throw new Error("Invalid paged option"); } + this.splats = this.paged; + } else if (options.extSplats) { + this.extSplats = options.extSplats instanceof ExtSplats ? options.extSplats : new ExtSplats(); + options.extSplats = this.extSplats; + this.numSplats = this.extSplats.numSplats; + this.splats = this.extSplats; + } else if (options.packedSplats) { + this.packedSplats = options.packedSplats; + this.packedSplats.splatEncoding = options.splatEncoding ?? { + ...DEFAULT_SPLAT_ENCODING + }; + this.splats = this.packedSplats; + } else { + this.packedSplats = new PackedSplats(); + } + this.editable = options.editable ?? true; + this.raycastable = options.raycastable ?? true; + this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2; + this.onFrame = options.onFrame; + this.context = { + transform: new SplatTransformer(), + viewToWorld: new SplatTransformer(), + worldToView: new SplatTransformer(), + viewToObject: new SplatTransformer(), + covTransform: new CovSplatTransformer(), + covViewToWorld: new CovSplatTransformer(), + covWorldToView: new CovSplatTransformer(), + covViewToObject: new CovSplatTransformer(), + recolor: new DynoVec4({ + value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY) + }), + time: new DynoFloat({ value: 0 }), + deltaTime: new DynoFloat({ value: 0 }), + numSplats: new DynoInt({ value: 0 }), + splats: new EmptySplatSource(), + enableLod: new DynoBool({ value: false }), + lodIndices: new DynoUsampler2D({ + value: emptyLodIndices, + key: "lodIndices" + }) + }; + this.covSplats = options.covSplats ?? false; + if (this.covSplats && !this.extSplats) { + throw new Error("CovSplats requires ExtSplats"); } - const headerLen = new TextEncoder().encode(this.header).length; - this.data = new DataView(this.fileBytes.buffer, headerLen); - this.elements = {}; - let curElement = null; - this.comments = []; - this.header.trim().split("\n").forEach((line, lineIndex) => { - const trimmedLine = line.trim(); - if (lineIndex === 0) { - if (trimmedLine !== "ply") { - throw new Error("Invalid PLY header"); - } - return; - } - if (trimmedLine.length === 0) { - return; - } - const fields = trimmedLine.split(" "); - switch (fields[0]) { - case "format": - if (fields[1] === "binary_little_endian") { - this.littleEndian = true; - } else if (fields[1] === "binary_big_endian") { - this.littleEndian = false; - } else { - throw new Error(`Unsupported PLY format: ${fields[1]}`); - } - if (fields[2] !== "1.0") { - throw new Error(`Unsupported PLY version: ${fields[2]}`); + this.objectModifiers = options.objectModifier ? [options.objectModifier] : void 0; + this.worldModifiers = options.worldModifier ? [options.worldModifier] : void 0; + if (options.objectModifiers) { + this.objectModifiers = options.objectModifiers; + } + if (options.worldModifiers) { + this.worldModifiers = options.worldModifiers; + } + this.enableLod = options.enableLod; + this.lodScale = options.lodScale ?? 1; + this.behindFoveate = options.behindFoveate; + this.coneFov0 = options.coneFov0; + this.coneFov = options.coneFov; + this.coneFoveate = options.coneFoveate; + this.updateGenerator(); + if (options.url || options.fileBytes || options.stream || options.constructSplats || options.packedSplats && !options.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) { + this.initialized = this.asyncInitialize(options).then(async () => { + this.updateGenerator(); + this.isInitialized = true; + if (options.onLoad) { + const maybePromise = options.onLoad(this); + if (maybePromise instanceof Promise) { + await maybePromise; } - break; - case "end_header": - break; - case "comment": - this.comments.push(trimmedLine.slice("comment ".length)); - break; - case "element": { - const name = fields[1]; - curElement = { - name, - count: Number.parseInt(fields[2]), - properties: {} - }; - this.elements[name] = curElement; - break; } - case "property": - if (curElement == null) { - throw new Error("Property must be inside an element"); - } - if (fields[1] === "list") { - curElement.properties[fields[4]] = { - isList: true, - type: fields[3], - countType: fields[2] - }; - } else { - curElement.properties[fields[2]] = { - isList: false, - type: fields[1] - }; - } - break; + return this; + }); + } else { + this.isInitialized = true; + this.initialized = Promise.resolve(this); + if (options.onLoad) { + const maybePromise = options.onLoad(this); + if (maybePromise instanceof Promise) { + this.initialized = maybePromise.then(() => this); + } } - }); - if (this.elements.vertex) { - this.numSplats = this.elements.vertex.count; } } - parseData(elementCallback) { - let offset = 0; - const data = this.data; - if (data == null) { - throw new Error("No data to parse"); + updateLabelLookup(categories) { + var _a2; + if (this.paged) { + (_a2 = this.paged.pager) == null ? void 0 : _a2.updateLabelLookup(categories); } - for (const elementName in this.elements) { - const element = this.elements[elementName]; - const { count, properties } = element; - const item = createEmptyItem(properties); - const parseFn = createParseFn(properties, this.littleEndian); - const callback = elementCallback(element) ?? (() => { - }); - for (let index = 0; index < count; index++) { - offset = parseFn(data, offset, item); - callback(index, item); + } + updateLabelHighlight(id) { + var _a2; + if (this.paged) { + (_a2 = this.paged.pager) == null ? void 0 : _a2.updateLabelHighlight(id); + } + } + async asyncInitialize(options) { + const { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + constructSplats, + onProgress, + splatEncoding, + lod, + nonLod, + lodAbove + } = options; + if (this.packedSplats) { + if (url || fileBytes || stream || constructSplats) { + const packedSplatsOptions = { + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + construct: constructSplats, + onProgress, + splatEncoding, + lod, + nonLod, + lodAbove + }; + this.packedSplats.reinitialize(packedSplatsOptions); + } + await this.packedSplats.initialized; + this.splats = this.packedSplats; + } else if (this.extSplats) { + if (url || fileBytes || stream || constructSplats) { + const construct = constructSplats; + this.extSplats.reinitialize({ + url, + fileBytes, + fileType, + fileName, + stream, + streamLength, + maxSplats, + construct, + onProgress, + lod, + nonLod, + lodAbove + }); + await this.extSplats.initialized; + this.splats = this.extSplats; } } + if (this.splats) { + this.numSplats = this.splats.getNumSplats(); + this.updateGenerator(); + } } - // Parse all the Gsplat data in the PLY file in go, invoking the given - // callbacks for each Gsplat. - parseSplats(splatCallback, shCallback) { - if (this.elements.vertex == null) { - throw new Error("No vertex element found"); + // Creates a new Gsplat with the provided parameters (all values in "float" space, + // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, + // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential + // doubling strategy to fit the new data, so it's fairly efficient to just + // pushSplat(...) each Gsplat you want to create in a loop. + pushSplat(center, scales, quaternion, opacity, color) { + if (this.packedSplats) { + this.packedSplats.pushSplat(center, scales, quaternion, opacity, color); + } else if (this.extSplats) { + this.extSplats.pushSplat(center, scales, quaternion, opacity, color); } - let isSuperSplat = false; - const ssChunks = []; - let numSh = 0; - let sh1Props = []; - let sh2Props = []; - let sh3Props = []; - let sh1 = void 0; - let sh2 = void 0; - let sh3 = void 0; - function prepareSh() { - const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh]; - sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3)); - sh2Props = new Array(5).fill(null).flatMap( - (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3) - ); - sh3Props = new Array(7).fill(null).flatMap( - (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3) + } + // This method iterates over all Gsplats in this instance's packedSplats, + // invoking the provided callback with index: number in 0..=(this.numSplats-1) and + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). + // Note that the objects passed in as center etc. are the same for every callback + // invocation: these objects are reused for efficiency. Changing these values has + // no effect as they are decoded/unpacked copies of the underlying data. To update + // the packedSplats, call .packedSplats.setSplat(index, center, scales, + // quaternion, opacity, color). + forEachSplat(callback) { + var _a2; + (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + } + // Call this when you are finished with the SplatMesh and want to free + // any buffers it holds (via packedSplats). + dispose() { + if (this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats) { + this.splats.dispose(); + this.splats = void 0; + } + if (this.packedSplats) { + this.packedSplats.dispose(); + this.packedSplats = void 0; + } + if (this.extSplats) { + this.extSplats.dispose(); + this.extSplats = void 0; + } + } + // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, + // only the centers of the splats are used to compute the bounding box. + // IMPORTANT: This should only be called after the SplatMesh is initialized. + getBoundingBox(centers_only = true) { + var _a2; + if (!this.initialized) { + throw new Error( + "Cannot get bounding box before SplatMesh is initialized" ); - sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0; - sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0; - sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0; } - function ssShCallback(index, item) { - if (!sh1) { - throw new Error("Missing sh1"); - } - const sh = item.f_rest; - for (let i = 0; i < sh1Props.length; i++) { - sh1[i] = sh[sh1Props[i]] * 8 / 255 - 4; - } - if (sh2) { - for (let i = 0; i < sh2Props.length; i++) { - sh2[i] = sh[sh2Props[i]] * 8 / 255 - 4; - } - } - if (sh3) { - for (let i = 0; i < sh3Props.length; i++) { - sh3[i] = sh[sh3Props[i]] * 8 / 255 - 4; + const minVec = new THREE.Vector3( + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY + ); + const maxVec = new THREE.Vector3( + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY + ); + const corners = new THREE.Vector3(); + const signs = [-1, 1]; + function callback(_index, center, scales, quaternion, _opacity, _color) { + if (centers_only) { + minVec.min(center); + maxVec.max(center); + } else { + for (const x of signs) { + for (const y of signs) { + for (const z of signs) { + corners.set(x * scales.x, y * scales.y, z * scales.z); + corners.applyQuaternion(quaternion); + corners.add(center); + minVec.min(corners); + maxVec.max(corners); + } + } } } - shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3); } - function initSuperSplat(element) { - const { - min_x, - min_y, - min_z, - max_x, - max_y, - max_z, - min_scale_x, - min_scale_y, - min_scale_z, - max_scale_x, - max_scale_y, - max_scale_z - } = element.properties; - if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) { - throw new Error("Missing PLY chunk properties"); - } - isSuperSplat = true; - return (index, item) => { - const { - min_x: min_x2, - min_y: min_y2, - min_z: min_z2, - max_x: max_x2, - max_y: max_y2, - max_z: max_z2, - min_scale_x: min_scale_x2, - min_scale_y: min_scale_y2, - min_scale_z: min_scale_z2, - max_scale_x: max_scale_x2, - max_scale_y: max_scale_y2, - max_scale_z: max_scale_z2, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - } = item; - ssChunks.push({ - min_x: min_x2, - min_y: min_y2, - min_z: min_z2, - max_x: max_x2, - max_y: max_y2, - max_z: max_z2, - min_scale_x: min_scale_x2, - min_scale_y: min_scale_y2, - min_scale_z: min_scale_z2, - max_scale_x: max_scale_x2, - max_scale_y: max_scale_y2, - max_scale_z: max_scale_z2, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - }); - }; + (_a2 = this.splats) == null ? void 0 : _a2.forEachSplat(callback); + const box = new THREE.Box3(minVec, maxVec); + return box; + } + set objectModifier(modifier) { + if (modifier) { + this.objectModifiers = [modifier]; + } else { + this.objectModifiers = void 0; } - function decodeSuperSplat(element) { - if (shCallback && element.name === "sh") { - numSh = getNumSh(element.properties); - prepareSh(); - return ssShCallback; - } - if (element.name !== "vertex") { - return null; - } - const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties; - if (!packed_position || !packed_rotation || !packed_scale || !packed_color) { - throw new Error( - "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" - ); - } - const SQRT2 = Math.sqrt(2); - return (index, item) => { - const chunk = ssChunks[index >>> 8]; - if (chunk == null) { - throw new Error("Missing PLY chunk"); - } - const { - min_x, - min_y, - min_z, - max_x, - max_y, - max_z, - min_scale_x, - min_scale_y, - min_scale_z, - max_scale_x, - max_scale_y, - max_scale_z, - min_r, - min_g, - min_b, - max_r, - max_g, - max_b - } = chunk; - const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item; - const x = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x; - const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y; - const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z; - const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2; - const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2; - const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2; - const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2)); - const rOrder = packed_rotation2 >>> 30; - const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1; - const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2; - const quatZ = rOrder <= 2 ? r2 : rr; - const quatW = rOrder === 0 ? rr : r0; - const scaleX = Math.exp( - (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x - ); - const scaleY = Math.exp( - (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y - ); - const scaleZ = Math.exp( - (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z - ); - const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0); - const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0); - const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0); - const opacity = (packed_color2 & 255) / 255; - splatCallback( - index, - x, - y, - z, - scaleX, - scaleY, - scaleZ, - quatX, - quatY, - quatZ, - quatW, - opacity, - r, - g, - b - ); - }; + } + set worldModifier(modifier) { + if (modifier) { + this.worldModifiers = [modifier]; + } else { + this.worldModifiers = void 0; } - const elementCallback = (element) => { - if (element.name === "chunk") { - return initSuperSplat(element); - } - if (isSuperSplat) { - return decodeSuperSplat(element); - } - if (element.name !== "vertex") { - return null; - } - const { - x, - y, - z, - scale_0, - scale_1, - scale_2, - rot_0, - rot_1, - rot_2, - rot_3, - opacity, - f_dc_0, - f_dc_1, - f_dc_2, - red, - green, - blue, - alpha - } = element.properties; - if (!x || !y || !z) { - throw new Error("Missing PLY properties: x, y, z"); + } + constructGenerator(context) { + if (this.covSplats) { + return this.constructCovGenerator(context); + } + const { transform, viewToObject, recolor } = context; + const generator = dynoBlock( + { index: "int" }, + { gsplat: Gsplat }, + ({ index }) => { + var _a2, _b2, _c, _d; + if (!index) { + throw new Error("index is undefined"); + } + index = maybeLookupIndex( + context.lodIndices, + index, + context.numSplats, + context.enableLod, + this.showLodPageDyno + ); + context.splats.setMaxSh(this.maxSh); + context.splats.prepareFetchSplat(); + let gsplat = context.splats.fetchSplat({ + index, + viewOrigin: viewToObject.translate + }); + if (this.splatRgba) { + gsplat = maybeInjectSplatRgba( + gsplat, + this.splatRgba.dyno, + index, + context.enableLod + ); + } + if (this.skinning) { + gsplat = this.skinning.modify(gsplat); + } + if (this.objectModifiers) { + for (const modifier of this.objectModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; + } + } + gsplat = transform.applyGsplat(gsplat); + const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba); + gsplat = combineGsplat({ gsplat, rgba: recolorRgba }); + if (this.rgbaDisplaceEdits) { + gsplat = this.rgbaDisplaceEdits.modify(gsplat); + } + if (this.worldModifiers) { + for (const modifier of this.worldModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; + } + } + if ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.labelLookupModifier) { + gsplat = (_d = (_c = this.paged) == null ? void 0 : _c.pager) == null ? void 0 : _d.labelLookupModifier.apply({ gsplat }).gsplat; + } + return { gsplat }; } - const hasScales = scale_0 && scale_1 && scale_2; - const hasRots = rot_0 && rot_1 && rot_2 && rot_3; - const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1; - const redDiv = red != null ? FIELD_SCALE[red.type] : 1; - const greenDiv = green != null ? FIELD_SCALE[green.type] : 1; - const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1; - numSh = getNumSh(element.properties); - prepareSh(); - return (index, item) => { - const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale; - const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale; - const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale; - const quatX = hasRots ? item.rot_1 : 0; - const quatY = hasRots ? item.rot_2 : 0; - const quatZ = hasRots ? item.rot_3 : 0; - const quatW = hasRots ? item.rot_0 : 1; - const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1; - const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1; - const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1; - const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1; - splatCallback( + ); + this.generator = generator; + this.covGenerator = void 0; + } + constructCovGenerator(context) { + const { covTransform, covViewToObject, recolor } = context; + const generator = dynoBlock( + { index: "int" }, + { covsplat: CovSplat }, + ({ index }) => { + if (!index) { + throw new Error("index is undefined"); + } + index = maybeLookupIndex( + context.lodIndices, index, - item.x, - item.y, - item.z, - scaleX, - scaleY, - scaleZ, - quatX, - quatY, - quatZ, - quatW, - op, - r, - g, - b + context.numSplats, + context.enableLod, + this.showLodPageDyno ); - if (shCallback && sh1) { - const sh = item.f_rest; - if (sh1) { - for (let i = 0; i < sh1Props.length; i++) { - sh1[i] = sh[sh1Props[i]]; - } + context.splats.prepareFetchSplat(); + let gsplat = context.splats.fetchSplat({ + index, + viewOrigin: covViewToObject.offset + }); + if (this.splatRgba) { + gsplat = maybeInjectSplatRgba( + gsplat, + this.splatRgba.dyno, + index, + context.enableLod + ); + } + if (this.objectModifiers) { + for (const modifier of this.objectModifiers) { + gsplat = modifier.apply({ gsplat }).gsplat; } - if (sh2) { - for (let i = 0; i < sh2Props.length; i++) { - sh2[i] = sh[sh2Props[i]]; - } + } + let covsplat = gsplatToCovSplat(gsplat); + if (this.skinning) { + covsplat = this.skinning.modifyCov(covsplat); + } + if (this.covObjectModifiers) { + for (const modifier of this.covObjectModifiers) { + covsplat = modifier.apply({ covsplat }).covsplat; } - if (sh3) { - for (let i = 0; i < sh3Props.length; i++) { - sh3[i] = sh[sh3Props[i]]; - } + } + covsplat = covTransform.applyCovSplat(covsplat); + const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba); + covsplat = combineCovSplat({ covsplat, rgba: recolorRgba }); + if (this.rgbaDisplaceEdits) { + covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat); + } + if (this.covWorldModifiers) { + for (const modifier of this.covWorldModifiers) { + covsplat = modifier.apply({ covsplat }).covsplat; } - shCallback(index, sh1, sh2, sh3); } - }; - }; - this.parseData(elementCallback); + return { covsplat }; + } + ); + this.generator = void 0; + this.covGenerator = generator; } - // Inject RGBA values into original PLY file, which can be used to modify - // the color/opacity of the Gsplats and write out the modified PLY file. - injectRgba(rgba) { - let offset = 0; - const data = this.data; - if (data == null) { - throw new Error("No parsed data"); + // Call this whenever something changes in the Gsplat processing pipeline, + // for example changing maxSh or updating objectModifier or worldModifier. + // Compiled generators are cached for efficiency and re-use when the same + // pipeline structure emerges after successive changes. + updateGenerator() { + this.generatorDirty = true; + } + // This is called automatically by SparkRenderer and you should not have to + // call it. It updates parameters for the generated pipeline and calls + // updateGenerator() if the pipeline needs to change. + update({ + renderer, + time, + deltaTime, + viewToWorld, + camera, + renderSize, + globalEdits, + lodIndices + }) { + var _a2, _b2, _c; + this.context.time.value = time; + this.context.deltaTime.value = deltaTime; + _SplatMesh.dynoTime.value = time; + this.showLodPageDyno.value = this.showLodPage ?? -1; + const splats = this.splats ?? this.packedSplats ?? this.extSplats; + if (splats) { + this.context.splats = splats; } - if (rgba.length !== this.numSplats * 4) { - throw new Error("Invalid RGBA array length"); + this.numSplats = this.context.splats.getNumSplats(); + let updated = false; + const lodSplats = ((_a2 = this.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = this.extSplats) == null ? void 0 : _b2.lodSplats); + this.context.enableLod.value = lodSplats != null && lodIndices != null; + if (this.enableLod === false) { + this.context.enableLod.value = false; } - for (const elementName in this.elements) { - const element = this.elements[elementName]; - const { count, properties } = element; - const parsers = []; - let rgbaOffset = 0; - const isVertex = elementName === "vertex"; - if (isVertex) { - for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) { - if (!properties[name] || properties[name].type !== "float") { - throw new Error(`Can't injectRgba due to property: ${name}`); - } - } + this.context.lodIndices.value = (lodIndices == null ? void 0 : lodIndices.texture) ?? emptyLodIndices; + if (this.context.enableLod.value && lodSplats) { + this.context.splats = lodSplats; + this.numSplats = (lodIndices == null ? void 0 : lodIndices.numSplats) ?? 0; + } + this.context.numSplats.value = this.numSplats; + if (this.context.splats !== this.lastSplats) { + this.lastSplats = this.context.splats; + this.generatorDirty = true; + } + if (!this.covSplats) { + if (this.context.transform.update(this)) { + updated = true; + } + if (this.context.viewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { + updated = true; + } + const worldToView = viewToWorld.clone().invert(); + if (this.context.worldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { + updated = true; + } + const objectToWorld = new THREE.Matrix4().compose( + this.context.transform.translate.value, + this.context.transform.rotate.value, + new THREE.Vector3().setScalar(this.context.transform.scale.value) + ); + const worldToObject = objectToWorld.invert(); + const viewToObjectMatrix = worldToObject.multiply(viewToWorld); + if (this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { + updated = true; + } + } else { + if (this.context.covTransform.update(this)) { + updated = true; + } + if (this.context.covViewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) { + updated = true; + } + const worldToView = viewToWorld.clone().invert(); + if (this.context.covWorldToView.updateFromMatrix(worldToView) && this.enableWorldToView) { + updated = true; + } + const worldToObject = this.matrixWorld.clone().invert(); + const viewToObjectMatrix = worldToObject.multiply(viewToWorld); + if (this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.context.splats.hasRgbDir())) { + updated = true; } - for (const [propertyName, property] of Object.entries(properties)) { - if (!property.isList) { - if (isVertex) { - if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") { - const component = Number.parseInt( - propertyName.slice("f_dc_".length) - ); - parsers.push(() => { - const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1; - SET_FIELD[property.type]( - data, - offset, - this.littleEndian, - value - ); - }); - } else if (propertyName === "opacity") { - parsers.push(() => { - const value = Math.max( - -100, - Math.min( - 100, - -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1) - ) - ); - SET_FIELD[property.type]( - data, - offset, - this.littleEndian, - value - ); - }); - } - } - parsers.push(() => { - offset += FIELD_BYTES[property.type]; - }); - } else { - parsers.push(() => { - const length2 = PARSE_FIELD[property.countType]( - data, - offset, - this.littleEndian - ); - offset += FIELD_BYTES[property.countType]; - offset += length2 * FIELD_BYTES[property.type]; - }); + } + const newRecolor = new THREE.Vector4( + this.recolor.r, + this.recolor.g, + this.recolor.b, + this.opacity + ); + if (!newRecolor.equals(this.context.recolor.value)) { + this.context.recolor.value.copy(newRecolor); + updated = true; + } + const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : []; + if (this.editable && !this.edits) { + this.traverseVisible((node) => { + if (node instanceof SplatEdit) { + edits.push(node); } + }); + } + edits.sort((a, b) => a.ordering - b.ordering); + const editsSdfs = edits.map((edit) => { + if (edit.sdfs != null) { + return { edit, sdfs: edit.sdfs }; } - for (let index = 0; index < count; index++) { - for (const parser of parsers) { - parser(); - } - if (isVertex) { - rgbaOffset += 4; + const sdfs = []; + edit.traverseVisible((node) => { + if (node instanceof SplatEditSdf) { + sdfs.push(node); } + }); + return { edit, sdfs }; + }); + if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) { + const edits2 = editsSdfs.length; + const sdfs = editsSdfs.reduce( + (total, edit) => total + edit.sdfs.length, + 0 + ); + this.rgbaDisplaceEdits = new SplatEdits({ + maxEdits: edits2, + maxSdfs: sdfs + }); + this.generatorDirty = true; + } + if (this.rgbaDisplaceEdits) { + const editResult = this.rgbaDisplaceEdits.update(editsSdfs); + updated || (updated = editResult.updated); + if (editResult.dynoUpdated) { + this.generatorDirty = true; } } + if (this.generatorDirty) { + this.constructGenerator(this.context); + this.generatorDirty = false; + updated = true; + } + if (updated) { + this.updateVersion(); + } + (_c = this.onFrame) == null ? void 0 : _c.call(this, { mesh: this, time, deltaTime }); } -}; -_PlyReader.defaultPointScale = 1e-3; -let PlyReader = _PlyReader; -const SH_C0$1 = 0.28209479177387814; -const PARSE_FIELD = { - char: (data, offset, littleEndian) => { - return data.getInt8(offset); - }, - uchar: (data, offset, littleEndian) => { - return data.getUint8(offset); - }, - short: (data, offset, littleEndian) => { - return data.getInt16(offset, littleEndian); - }, - ushort: (data, offset, littleEndian) => { - return data.getUint16(offset, littleEndian); - }, - int: (data, offset, littleEndian) => { - return data.getInt32(offset, littleEndian); - }, - uint: (data, offset, littleEndian) => { - return data.getUint32(offset, littleEndian); - }, - float: (data, offset, littleEndian) => { - return data.getFloat32(offset, littleEndian); - }, - double: (data, offset, littleEndian) => { - return data.getFloat64(offset, littleEndian); - } -}; -const SET_FIELD = { - char: (data, offset, littleEndian, value) => { - data.setInt8(offset, value); - }, - uchar: (data, offset, littleEndian, value) => { - data.setUint8(offset, value); - }, - short: (data, offset, littleEndian, value) => { - data.setInt16(offset, value, littleEndian); - }, - ushort: (data, offset, littleEndian, value) => { - data.setUint16(offset, value, littleEndian); - }, - int: (data, offset, littleEndian, value) => { - data.setInt32(offset, value, littleEndian); - }, - uint: (data, offset, littleEndian, value) => { - data.setUint32(offset, value, littleEndian); - }, - float: (data, offset, littleEndian, value) => { - data.setFloat32(offset, value, littleEndian); - }, - double: (data, offset, littleEndian, value) => { - data.setFloat64(offset, value, littleEndian); - } -}; -const FIELD_BYTES = { - char: 1, - uchar: 1, - short: 2, - ushort: 2, - int: 4, - uint: 4, - float: 4, - double: 8 -}; -const FIELD_SCALE = { - char: 127, - uchar: 255, - short: 32767, - ushort: 65535, - int: 2147483647, - uint: 4294967295, - float: 1, - double: 1 -}; -const NUM_F_REST_TO_NUM_SH = { - 0: 0, - 9: 1, - 24: 2, - 45: 3 -}; -const NUM_SH_TO_NUM_F_REST = { - 0: 0, - 1: 9, - 2: 24, - 3: 45 -}; -const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/; -function createEmptyItem(properties) { - const item = {}; - for (const [propertyName, property] of Object.entries(properties)) { - if (F_REST_REGEX.test(propertyName)) { - item.f_rest = new Array(getNumSh(properties)); + // This method conforms to the standard THREE.Raycaster API, performing object-ray + // intersections using this method to populate the provided intersects[] array + // with each intersection point. + raycast(raycaster, intersects) { + var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; + if (!isInitialized() || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) { + return; + } + const paged = this.paged != null; + const ext = paged ? ((_b2 = (_a2 = this.paged) == null ? void 0 : _a2.pager) == null ? void 0 : _b2.extSplats) ?? false : this.extSplats != null; + const { near, far, ray } = raycaster; + const worldToMesh = this.matrixWorld.clone().invert(); + const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh); + const origin = ray.origin.clone().applyMatrix4(worldToMesh); + const direction = ray.direction.clone().applyMatrix3(worldToMeshRot); + const buffer = get_raycast_buffer(); + const bufferSize = buffer.length / 4; + let intersections = 0; + const numSplats = ((_c = this.raycastIndices) == null ? void 0 : _c.numSplats) ?? (paged ? (_d = this.paged) == null ? void 0 : _d.numSplats : this.context.numSplats.value) ?? 0; + const indices = ((_e = this.raycastIndices) == null ? void 0 : _e.indices) ?? (paged ? (_f = this.paged) == null ? void 0 : _f.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; + if (!ext) { + const packed = paged ? (_h = (_g = this.paged) == null ? void 0 : _g.pager) == null ? void 0 : _h.packedTexture.value.image.data : indices ? (_j = (_i = this.packedSplats) == null ? void 0 : _i.lodSplats) == null ? void 0 : _j.packedArray : (_k = this.packedSplats) == null ? void 0 : _k.packedArray; + if (!packed) { + return; + } + const splatEncoding = paged ? (_l = this.paged) == null ? void 0 : _l.splatEncoding : (_m = this.packedSplats) == null ? void 0 : _m.splatEncoding; + for (let base = 0; base < numSplats; base += bufferSize) { + const count = Math.min(bufferSize, numSplats - base); + if (!indices) { + buffer.set(packed.subarray(base * 4, (base + count) * 4)); + } else { + for (let i = 0; i < count; ++i) { + const index = indices[base + i]; + const i4 = i * 4; + const index4 = index * 4; + buffer[i4] = packed[index4]; + buffer[i4 + 1] = packed[index4 + 1]; + buffer[i4 + 2] = packed[index4 + 2]; + buffer[i4 + 3] = packed[index4 + 3]; + } + } + const newIntersections = raycast_packed_buffer( + origin.x, + origin.y, + origin.z, + direction.x, + direction.y, + direction.z, + this.minRaycastOpacity, + near, + far, + count, + (splatEncoding == null ? void 0 : splatEncoding.lnScaleMin) ?? LN_SCALE_MIN, + (splatEncoding == null ? void 0 : splatEncoding.lnScaleMax) ?? LN_SCALE_MAX, + (splatEncoding == null ? void 0 : splatEncoding.lodOpacity) ?? false + ); + intersections = this.appendRaycastBuffer( + intersections, + newIntersections + ); + } } else { - item[propertyName] = property.isList ? [] : 0; - } - } - return item; -} -function createParseFn(properties, littleEndian) { - if (safeToCompile(properties)) { - return createCompiledParserFn(properties, littleEndian); - } - return createDynamicParserFn(properties, littleEndian); -} -const UNSAFE_EVAL_ALLOWED = (() => { - try { - new Function("return 42;"); - } catch (e) { - return false; - } - return true; -})(); -const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/; -function safeToCompile(properties) { - if (!UNSAFE_EVAL_ALLOWED) { - return false; - } - for (const [propertyName, property] of Object.entries(properties)) { - if (!PROPERTY_NAME_REGEX.test(propertyName)) { - return false; + const buffer2 = get_raycast_buffer2(); + const ext1 = paged ? (_o = (_n = this.paged) == null ? void 0 : _n.pager) == null ? void 0 : _o.packedTexture.value.image.data : indices ? (_q = (_p = this.extSplats) == null ? void 0 : _p.lodSplats) == null ? void 0 : _q.extArrays[0] : (_r = this.extSplats) == null ? void 0 : _r.extArrays[0]; + const ext2 = paged ? (_t = (_s = this.paged) == null ? void 0 : _s.pager) == null ? void 0 : _t.extTexture.value.image.data : indices ? (_v = (_u = this.extSplats) == null ? void 0 : _u.lodSplats) == null ? void 0 : _v.extArrays[1] : (_w = this.extSplats) == null ? void 0 : _w.extArrays[1]; + if (!ext1 || !ext2) { + return; + } + for (let base = 0; base < numSplats; base += bufferSize) { + const count = Math.min(bufferSize, numSplats - base); + if (!indices) { + buffer.set(ext1.subarray(base * 4, (base + count) * 4)); + buffer2.set(ext2.subarray(base * 4, (base + count) * 4)); + } else { + for (let i = 0; i < count; ++i) { + const index = indices[base + i]; + const i4 = i * 4; + const index4 = index * 4; + buffer[i4] = ext1[index4]; + buffer[i4 + 1] = ext1[index4 + 1]; + buffer[i4 + 2] = ext1[index4 + 2]; + buffer[i4 + 3] = ext1[index4 + 3]; + buffer2[i4] = ext2[index4]; + buffer2[i4 + 1] = ext2[index4 + 1]; + buffer2[i4 + 2] = ext2[index4 + 2]; + buffer2[i4 + 3] = ext2[index4 + 3]; + } + } + const newIntersections = raycast_ext_buffers( + origin.x, + origin.y, + origin.z, + direction.x, + direction.y, + direction.z, + this.minRaycastOpacity, + near, + far, + count + ); + intersections = this.appendRaycastBuffer( + intersections, + newIntersections + ); + } } - if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) { - return false; + for (const distance2 of _SplatMesh.raycastBuffer.subarray(0, intersections)) { + const point = ray.direction.clone().multiplyScalar(distance2).add(ray.origin); + intersects.push({ + distance: distance2, + point, + object: this + }); } - if (!PLY_PROPERTY_TYPES.includes(property.type)) { - return false; + } + appendRaycastBuffer(count, additional) { + const total = count + additional.length; + let capacity = _SplatMesh.raycastBuffer.length; + if (total > capacity) { + while (capacity < total) { + capacity *= 2; + } + const newBuffer = new Float32Array(capacity); + newBuffer.set(_SplatMesh.raycastBuffer.subarray(0, count)); + _SplatMesh.raycastBuffer = newBuffer; } + _SplatMesh.raycastBuffer.set(additional, count); + return count + additional.length; } - return true; -} -function createCompiledParserFn(properties, littleEndian) { - const parserSrc = ["let list;"]; - for (const [propertyName, property] of Object.entries(properties)) { - const fRestMatch = propertyName.match(F_REST_REGEX); - if (fRestMatch) { - const fRestIndex = +fRestMatch[1]; - parserSrc.push( - /*js*/ - ` - item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - ` - ); - } else if (!property.isList) { - parserSrc.push( - /*js*/ - ` - item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - ` - ); - } else { - parserSrc.push( - /*js*/ - ` - list = item['${propertyName}']; - list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.countType]}; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); - offset += ${FIELD_BYTES[property.type]}; - } - ` - ); + async createLodSplats({ + rgbaArray, + quality + } = {}) { + if (this.packedSplats) { + await this.packedSplats.createLodSplats({ quality, rgbaArray }); + } else if (this.extSplats) { + await this.extSplats.createLodSplats({ quality, rgbaArray }); } } - parserSrc.push("return offset;"); - const fn = new Function( - "data", - "offset", - "item", - "PARSE_FIELD", - parserSrc.join("\n") - ); - return (data, offset, item) => fn(data, offset, item, PARSE_FIELD); -} -function createDynamicParserFn(properties, littleEndian) { - const parsers = []; - for (const [propertyName, property] of Object.entries(properties)) { - const fRestMatch = propertyName.match(F_REST_REGEX); - if (fRestMatch) { - const fRestIndex = +fRestMatch[1]; - parsers.push( - (data, offset, item) => { - item.f_rest[fRestIndex] = PARSE_FIELD[property.type]( - data, - offset, - littleEndian - ); - return offset + FIELD_BYTES[property.type]; - } - ); - } else if (!property.isList) { - parsers.push( - (data, offset, item) => { - item[propertyName] = PARSE_FIELD[property.type]( - data, - offset, - littleEndian - ); - return offset + FIELD_BYTES[property.type]; - } - ); - } else { - parsers.push( - (data, offset, item) => { - const list = item[propertyName]; - list.length = PARSE_FIELD[property.countType]( - data, - offset, - littleEndian - ); - let currentOffset = offset + FIELD_BYTES[property.countType]; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD[property.type]( - data, - currentOffset, - littleEndian - ); - currentOffset += FIELD_BYTES[property.type]; +}; +_SplatMesh.dynoTime = new DynoFloat({ value: 0 }); +_SplatMesh.raycastBuffer = new Float32Array(1024); +let SplatMesh = _SplatMesh; +function maybeLookupIndex(lodIndices, index, numSplats, enableLod, showLodPage) { + return dyno$1({ + inTypes: { + lodIndices: "usampler2D", + index: "int", + numSplats: "int", + enableLod: "bool", + showLodPage: "int" + }, + outTypes: { + index: "int" + }, + inputs: { + lodIndices, + index, + numSplats, + enableLod, + showLodPage + }, + statements: ({ inputs, outputs }) => unindentLines(` + int index = ${inputs.index}; + if (${inputs.showLodPage} < 0) { + if (index >= ${inputs.numSplats}) { + return; } - return currentOffset; + if (${inputs.enableLod}) { + ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); + uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3]; + ${outputs.index} = int(splatIndex); + } else { + ${outputs.index} = index; + } + } else { + int start = ${inputs.showLodPage} << 16; + if (index >= 65536) { + return; + } + ${outputs.index} = start + index; + } + `) + }).outputs.index; +} +function maybeInjectSplatRgba(gsplat, rgba, index, enableLod) { + return dyno$1({ + inTypes: { + gsplat: Gsplat, + rgba: TRgbaArray, + index: "int", + enableLod: "bool" + }, + outTypes: { gsplat: Gsplat }, + inputs: { gsplat, rgba, index, enableLod }, + statements: ({ inputs, outputs }) => unindentLines(` + ${outputs.gsplat} = ${inputs.gsplat}; + if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) { + ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0); } - ); + `) + }).outputs.gsplat; +} +const emptyLodIndices = (() => { + const texture2 = new THREE.DataTexture( + new Uint32Array(16384), + 4096, + 1, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType + ); + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +const _SplatAccumulator = class _SplatAccumulator { + constructor({ + extSplats, + covSplats + } = {}) { + this.time = 0; + this.deltaTime = 0; + this.viewToWorld = new THREE.Matrix4(); + this.viewOrigin = new THREE.Vector3(); + this.viewDirection = new THREE.Vector3(); + this.maxSplats = 0; + this.numSplats = 0; + this.target = null; + this.mapping = []; + this.version = -1; + this.mappingVersion = -1; + this.readback = null; + this.readbackSplats = []; + if (!threeMrtArray) { + throw new Error("Spark requires THREE.js r179 or above"); } + this.extSplats = extSplats ?? true; + this.covSplats = covSplats ?? false; } - return (data, offset, item) => { - let currentOffset = offset; - for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) { - currentOffset = parsers[parserIndex](data, currentOffset, item); + dispose() { + if (this.target) { + this.target.dispose(); + this.target = null; } - return currentOffset; - }; -} -function getNumSh(properties) { - let num_f_rest = 0; - while (properties[`f_rest_${num_f_rest}`]) { - num_f_rest += 1; } - const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest]; - if (numSh == null) { - throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`); + // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator + // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) + getTextures() { + if (this.target) { + return this.target.textures; + } + return _SplatAccumulator.emptyTextures; } - return numSh; -} -class SplatLoader extends Loader { - constructor(manager) { - super(manager); - this.fileLoader = new FileLoader(manager); + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(splatCounts) { + let maxSplats = 0; + const mapping = splatCounts.map((numSplats) => { + const base = maxSplats; + const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + maxSplats += rounded; + return { base, count: numSplats }; + }); + return { maxSplats, mapping }; } - load(url, onLoad, onProgress, onError) { - return this.loadInternal({ - url, - onLoad, - onProgress, - onError + // Ensures our NewSplatAccumulator.target render target has enough space + // to generate maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate({ maxSplats }) { + if (this.target && (maxSplats ?? 1) <= this.maxSplats) { + return false; + } + this.dispose(); + const textureSize2 = getTextureSize(maxSplats ?? 1); + const { width, height, depth } = textureSize2; + this.maxSplats = textureSize2.maxSplats; + this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, { + depthBuffer: false, + stencilBuffer: false, + generateMipmaps: false, + magFilter: THREE.NearestFilter, + minFilter: THREE.NearestFilter, + format: THREE.RGBAIntegerFormat, + type: THREE.UnsignedIntType }); + this.target.scissorTest = true; + if (this.extSplats) { + const target2 = this.target.texture.clone(); + const target3 = this.target.texture.clone(); + target3.format = THREE.RGBAFormat; + target3.type = THREE.UnsignedByteType; + target3.internalFormat = "RGBA8"; + this.target.textures = [this.target.texture, target2, target3]; + } else { + const target3 = this.target.texture.clone(); + target3.format = THREE.RGBAFormat; + target3.type = THREE.UnsignedByteType; + target3.internalFormat = "RGBA8"; + this.target.textures = [this.target.texture, target3]; + } + return true; } - async loadAsync(url, onProgress) { - return new Promise((resolve, reject) => { - this.load( - url, - (decoded) => { - resolve(decoded); - }, - onProgress, - reject + saveRenderState(renderer) { + return { + target: renderer.getRenderTarget(), + activeCubeFace: renderer.getActiveCubeFace(), + activeMipmapLevel: renderer.getActiveMipmapLevel(), + xrEnabled: renderer.xr.enabled, + autoClear: renderer.autoClear + }; + } + resetRenderState(renderer, state) { + renderer.setRenderTarget( + state.target, + state.activeCubeFace, + state.activeMipmapLevel + ); + renderer.xr.enabled = state.xrEnabled; + renderer.autoClear = state.autoClear; + } + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(generator, covGenerator) { + const theGenerator = generator ?? covGenerator; + if (!theGenerator) { + throw new Error("Either generator or covGenerator must be provided"); + } + let program = _SplatAccumulator.generatorProgram.get(theGenerator); + if (!program) { + const graph = dynoBlock( + { index: "int" }, + {}, + ({ index }, _outputs, { roots }) => { + if (generator) { + generator.inputs.index = index; + } + if (covGenerator) { + covGenerator.inputs.index = index; + } + if (this.extSplats) { + if (!this.covSplats) { + if (generator) { + const output = outputExtendedSplat(generator.outputs.gsplat); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } else { + if (covGenerator) { + const output = outputExtCovSplat(covGenerator.outputs.covsplat); + roots.push(output); + } else if (generator) { + const covsplat = gsplatToCovSplat(generator.outputs.gsplat); + const output = outputExtCovSplat(covsplat); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } + } else { + if (!this.covSplats) { + if (generator) { + const centerSubView = sub( + splitGsplat(generator.outputs.gsplat).outputs.center, + _SplatAccumulator.viewCenterUniform + ); + const halfAlpha = mul( + splitGsplat(generator.outputs.gsplat).outputs.opacity, + dynoConst("float", 0.5) + ); + const gsplat = combineGsplat({ + gsplat: generator.outputs.gsplat, + center: centerSubView, + opacity: halfAlpha + }); + const output = outputPackedSplat( + gsplat, + dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) + ); + roots.push(output); + } else { + throw new Error("Generator must be provided"); + } + } else { + let covsplat; + if (covGenerator) { + covsplat = covGenerator.outputs.covsplat; + } else if (generator) { + covsplat = gsplatToCovSplat(generator.outputs.gsplat); + } else { + throw new Error("Generator must be provided"); + } + const centerSubView = sub( + splitCovSplat(covsplat).outputs.center, + _SplatAccumulator.viewCenterUniform + ); + const halfAlpha = mul( + splitCovSplat(covsplat).outputs.opacity, + dynoConst("float", 0.5) + ); + covsplat = combineCovSplat({ + covsplat, + center: centerSubView, + opacity: halfAlpha + }); + const output = outputCovSplat( + covsplat, + dynoConst("vec4", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]) + ); + roots.push(output); + } + if (!generator) { + throw new Error("Generator must be provided"); + } + } + if (generator) { + const outputDepth = outputSplatDepth( + generator.outputs.gsplat, + _SplatAccumulator.viewCenterUniform, + _SplatAccumulator.viewDirUniform, + _SplatAccumulator.sortRadialUniform + ); + roots.push(outputDepth); + } + if (covGenerator) { + const outputDepth = outputCovSplatDepth( + covGenerator.outputs.covsplat, + _SplatAccumulator.viewCenterUniform, + _SplatAccumulator.viewDirUniform, + _SplatAccumulator.sortRadialUniform + ); + roots.push(outputDepth); + } + return void 0; + } ); + program = new DynoProgram({ + graph, + inputs: { index: "_index" }, + outputs: {}, + template: this.extSplats ? _SplatAccumulator.programExtTemplate : _SplatAccumulator.programTemplate + // consoleLog: true, + }); + _SplatAccumulator.generatorProgram.set(theGenerator, program); + } + Object.assign(program.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } }); + const material = program.prepareMaterial(); + _SplatAccumulator.fullScreenQuad.material = material; + return { program, material }; } - parse(packedSplats) { - return new SplatMesh({ packedSplats }); - } - loadInternal({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onLoad, - onProgress, - onError, - lod, - nonLod, - lodAbove, - lodBase + generate({ + generator, + covGenerator, + base, + count, + renderer }) { - if (fileBytes instanceof ArrayBuffer) { - fileBytes = new Uint8Array(fileBytes); + if (!this.target) { + throw new Error("Target must be initialized with ensureGenerate"); } - const resolvedURL = fileBytes ? void 0 : this.manager.resolveURL((this.path ?? "") + (url ?? "")); - let readStream = stream == null ? void 0 : stream.getReader(); - this.manager.itemStart(resolvedURL ?? ""); - workerPool.withWorker(async (worker) => { - const splatsLod = (packedSplats == null ? void 0 : packedSplats.lod) ?? (extSplats == null ? void 0 : extSplats.lod); - if (splatsLod) { - lod = splatsLod; - } - const splatsNonLod = (packedSplats == null ? void 0 : packedSplats.nonLod) ?? (extSplats == null ? void 0 : extSplats.nonLod); - if (splatsNonLod !== void 0) { - nonLod = splatsNonLod; + if (base + count > this.maxSplats) { + throw new Error("Base + count exceeds maxSplats"); + } + const { program, material } = this.prepareProgramMaterial( + generator, + covGenerator + ); + program.update(); + const renderState = this.saveRenderState(renderer); + const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + material.uniforms.targetBase.value = base; + material.uniforms.targetCount.value = count; + while (base < nextBase) { + const layer = Math.floor(base / layerSize); + material.uniforms.targetLayer.value = layer; + const layerBase = layer * layerSize; + const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) + ); + this.target.scissor.set( + 0, + layerYStart, + SPLAT_TEX_WIDTH, + layerYEnd - layerYStart + ); + renderer.setRenderTarget(this.target, layer); + renderer.xr.enabled = false; + renderer.autoClear = false; + _SplatAccumulator.fullScreenQuad.render(renderer); + base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + } + this.resetRenderState(renderer, renderState); + return { nextBase }; + } + prepareGenerate({ + renderer, + scene, + time, + camera, + sortRadial, + renderSize, + previous, + lodInstances + }) { + var _a2; + this.viewToWorld.copy(camera.matrixWorld); + camera.getWorldPosition(this.viewOrigin); + camera.getWorldDirection(this.viewDirection); + _SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin); + _SplatAccumulator.viewDirUniform.value.copy(this.viewDirection); + _SplatAccumulator.sortRadialUniform.value = sortRadial; + this.time = time; + this.deltaTime = time - previous.time; + const allGenerators = []; + scene.traverse((node) => { + if (node instanceof SplatGenerator) { + if (!camera.layers || camera.layers.test(node.layers)) { + allGenerators.push(node); + } } - const onStatus = async (data) => { - const { loaded, total } = data; - if (loaded !== void 0 && onProgress) { - onProgress( - new ProgressEvent("progress", { - lengthComputable: total !== 0, - loaded, - total - }) - ); + }); + const globalEditsSet = /* @__PURE__ */ new Set(); + scene.traverseVisible((node) => { + if (node instanceof SplatEdit) { + let ancestor = node.parent; + while (ancestor != null && !(ancestor instanceof SplatMesh)) { + ancestor = ancestor.parent; } - if (data.nextChunk) { - let chunk; - if (!readStream) { - chunk = new Uint8Array(0); - } else { - const { done, value } = await readStream.read(); - if (done) { - readStream.releaseLock(); - readStream = void 0; - chunk = new Uint8Array(0); - } else { - chunk = value; - } - } - worker.call("nextChunk", { chunk }); + if (ancestor == null) { + globalEditsSet.add(node); } - }; - const basedUrl = resolvedURL ? new URL(resolvedURL, window.location.href).toString() : void 0; - const decoded = await worker.call( - extSplats ? "loadExtSplats" : "loadPackedSplats", - { - url: basedUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - fileBytes: fileBytes == null ? void 0 : fileBytes.slice(), - fileType, - pathName: resolvedURL || fileName, - chunked: stream !== void 0, - chunkedLength: streamLength, - encoding: packedSplats == null ? void 0 : packedSplats.splatEncoding, - lod, - lodBase, - nonLod, - lodAbove - }, - { onStatus } - ); - if (decoded.lodSplats) { - if (extSplats) { - decoded.lodSplats = new ExtSplats({ - ...decoded.lodSplats - }); - } else { - decoded.lodSplats = new PackedSplats({ - ...decoded.lodSplats, - maxSplats: packedSplats == null ? void 0 : packedSplats.maxSplats - }); + } + }); + const globalEdits = Array.from(globalEditsSet); + for (const object of allGenerators) { + try { + (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { + renderer, + object, + time: this.time, + deltaTime: this.deltaTime, + viewToWorld: this.viewToWorld, + camera, + renderSize, + globalEdits, + lodIndices: lodInstances && object instanceof SplatMesh ? lodInstances.get(object) : void 0 + }); + } catch (error) { + console.error("frameUpdate error", error); + object.generator = void 0; + object.covGenerator = void 0; + object.generatorError = error; + } + } + const visibleGenerators = []; + scene.traverseVisible((node) => { + if (node instanceof SplatGenerator) { + if (!camera.layers || camera.layers.test(node.layers)) { + visibleGenerators.push(node); + } + } + }); + const splatCounts = visibleGenerators.map( + (generator) => generator.numSplats + ); + const { maxSplats, mapping: baseCounts } = this.generateMapping(splatCounts); + const previousMappings = previous.mapping.reduce((mappings, mapping) => { + mappings.set(mapping.node, mapping); + return mappings; + }, /* @__PURE__ */ new Map()); + this.mapping = []; + this.numSplats = 0; + baseCounts.forEach(({ base, count }, index) => { + const node = visibleGenerators[index]; + const previousNode = previousMappings.get(node); + if (previousNode && previousNode.count !== node.numSplats) { + node.updateMappingVersion(); + } + const { generator, covGenerator } = node; + if ((generator || covGenerator) && count > 0) { + const { version, mappingVersion } = node; + this.mapping.push({ + node, + generator, + covGenerator, + version, + mappingVersion, + base, + count + }); + this.numSplats = Math.max(this.numSplats, base + count); + } + }); + const { splatsUpdated, mappingUpdated } = previous.checkVersions( + this.mapping + ); + this.version = previous.version + (splatsUpdated ? 1 : 0); + this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0); + return { + sameMapping: !mappingUpdated, + version: this.version, + mappingVersion: this.mappingVersion, + visibleGenerators, + generate: () => { + this.ensureGenerate({ maxSplats }); + for (const { node, base, count } of this.mapping) { + const { generator, covGenerator } = node; + if ((generator || covGenerator) && count > 0) { + this.generate({ generator, covGenerator, base, count, renderer }); + } } - } - if (extSplats) { - const initExtSplats = { - // ...(initExt ?? {}), - ...decoded - }; - extSplats.initialize(initExtSplats); - onLoad == null ? void 0 : onLoad(extSplats); - } else { - const initSplats = { - // ...(init ?? {}), - ...decoded - }; - if (packedSplats) { - packedSplats.initialize(initSplats); - onLoad == null ? void 0 : onLoad(packedSplats); - } else { - onLoad == null ? void 0 : onLoad(new PackedSplats(initSplats)); + }, + readback: async () => { + const textures = this.getTextures(); + if (this.readbackSplats.length === 0) { + this.readbackSplats = [ + new DynoUsampler2DArray({ value: textures[0], key: "extSplats" }), + new DynoUsampler2DArray({ value: textures[1], key: "extSplats" }) + ]; + } + this.readbackSplats[0].value = textures[0]; + this.readbackSplats[1].value = textures[1]; + if (!this.readback) { + this.readback = new Readback({ renderer }); } + const readback = this.readback; + const words = this.extSplats ? 8 : 4; + const array = readback.ensureBuffer( + this.numSplats * words, + new Uint32Array(0) + ); + const reader = dynoBlock( + { index: "int" }, + { rgba8: "vec4" }, + ({ index }) => { + const rgba8 = new Dyno({ + inTypes: { + index: "int", + extSplats1: "usampler2DArray", + extSplats2: "usampler2DArray" + }, + outTypes: { rgba8: "vec4" }, + inputs: { + index, + extSplats1: this.readbackSplats[0], + extSplats2: this.readbackSplats[1] + }, + statements: ({ inputs, outputs }) => { + if (this.extSplats) { + return unindentLines(` + int indexDiv8 = ${inputs.index} >> 3; + ivec3 coord = splatTexCoord(indexDiv8); + uvec4 packedData; + if ((${inputs.index} & 4) == 0) { + packedData = texelFetch(${inputs.extSplats1}, coord, 0); + } else { + packedData = texelFetch(${inputs.extSplats2}, coord, 0); + } + + int indexMod4 = ${inputs.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${outputs.rgba8} = uintToVec4(data); + `); + } + return unindentLines(` + int indexDiv4 = ${inputs.index} >> 2; + ivec3 coord = splatTexCoord(indexDiv4); + uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0); + + int indexMod4 = ${inputs.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${outputs.rgba8} = uintToVec4(data); + `); + } + }).outputs.rgba8; + return { rgba8 }; + } + ); + return await readback.renderReadback({ + reader, + count: this.numSplats * words, + renderer, + readback: array + }); } - }).catch((error) => { - this.manager.itemError(resolvedURL ?? ""); - onError == null ? void 0 : onError(error); - }).finally(() => { - this.manager.itemEnd(resolvedURL ?? ""); - }); - } - async loadInternalAsync({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress, - lod, - nonLod, - lodAbove, - lodBase - }) { - return new Promise((resolve, reject) => { - this.loadInternal({ - packedSplats, - extSplats, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onLoad: resolve, - onProgress, - onError: reject, - lod, - nonLod, - lodAbove, - lodBase - }); - }); - } -} -function getSplatFileType(fileBytes) { - const view = new DataView(fileBytes.buffer); - const magic = view.getUint32(0, true); - if ((magic & 16777215) === 7957616) { - return SplatFileType.PLY; + }; } - if ((magic & 16777215) === 559903) { - const header = decompressPartialGzip(fileBytes, 4); - const gView = new DataView(header.buffer); - if (gView.getUint32(0, true) === 1347635022) { - return SplatFileType.SPZ; + // Check if this accumulator has exactly the same generator mapping as + // the previous one. If so, we can reuse the Gsplat sort order. + checkVersions(otherMapping) { + if (this.mapping.length !== otherMapping.length) { + return { splatsUpdated: true, mappingUpdated: true }; } - return void 0; - } - if (magic === 67324752) { - if (tryPcSogsZip(fileBytes)) { - return SplatFileType.PCSOGSZIP; + const mappingUpdated = this.mapping.some((item, i) => { + const other = otherMapping[i]; + return item.node !== other.node || item.base !== other.base || item.count !== other.count || item.mappingVersion !== other.mappingVersion; + }); + if (mappingUpdated) { + return { splatsUpdated: true, mappingUpdated: true }; } - return void 0; - } - if (magic === 809779538) { - return SplatFileType.RAD; + const splatsUpdated = this.mapping.some((item, i) => { + return item.version !== otherMapping[i].version; + }); + return { splatsUpdated, mappingUpdated }; } - return void 0; -} -function getFileExtension(pathOrUrl) { - const noTrailing = pathOrUrl.split(/[?#]/, 1)[0]; - const lastSlash = Math.max( - noTrailing.lastIndexOf("/"), - noTrailing.lastIndexOf("\\") +}; +_SplatAccumulator.viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() }); +_SplatAccumulator.viewDirUniform = new DynoVec3({ value: new THREE.Vector3() }); +_SplatAccumulator.sortRadialUniform = new DynoBool({ value: true }); +_SplatAccumulator.emptyTexture = (() => { + const { width, height, depth, maxSplats } = getTextureSize(1); + const emptyArray = new Uint32Array(maxSplats * 4); + const texture2 = new THREE.DataArrayTexture( + emptyArray, + width, + height, + depth ); - const filename = noTrailing.slice(lastSlash + 1); - const lastDot = filename.lastIndexOf("."); - if (lastDot <= 0 || lastDot === filename.length - 1) { - return ""; - } - return filename.slice(lastDot + 1).toLowerCase(); -} -function getSplatFileTypeFromPath(pathOrUrl) { - const extension = getFileExtension(pathOrUrl); - if (extension === "ply") { - return SplatFileType.PLY; - } - if (extension === "spz") { - return SplatFileType.SPZ; - } - if (extension === "splat") { - return SplatFileType.SPLAT; - } - if (extension === "ksplat") { - return SplatFileType.KSPLAT; - } - if (extension === "sog") { - return SplatFileType.PCSOGSZIP; - } - if (extension === "rad") { - return SplatFileType.RAD; - } - return void 0; -} -function isPcSogs(input) { - return tryPcSogs(input) !== void 0; + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SplatAccumulator.emptyTextures = (() => { + return [_SplatAccumulator.emptyTexture, _SplatAccumulator.emptyTexture]; +})(); +_SplatAccumulator.programExtTemplate = new DynoProgramTemplate( + getShaders().computeUvec4x2Vec4Template +); +_SplatAccumulator.programTemplate = new DynoProgramTemplate( + getShaders().computeUvec4Vec4Template +); +_SplatAccumulator.generatorProgram = /* @__PURE__ */ new WeakMap(); +_SplatAccumulator.fullScreenQuad = new FullScreenQuad( + new THREE.RawShaderMaterial({ visible: false }) +); +let SplatAccumulator = _SplatAccumulator; +class SplatGeometry extends THREE.InstancedBufferGeometry { + constructor() { + super(); + this.setAttribute("position", new THREE.BufferAttribute(QUAD_VERTICES, 3)); + this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1)); + } } -function tryPcSogs(input) { - try { - let text; - if (typeof input === "string") { - text = input; - } else { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - if (fileBytes.length > 65536) { - return void 0; - } - text = new TextDecoder().decode(fileBytes); +const QUAD_VERTICES = new Float32Array([ + -1, + -1, + 0, + 1, + -1, + 0, + 1, + 1, + 0, + -1, + 1, + 0 +]); +const QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]); +const _SparkRenderer = class _SparkRenderer extends THREE.Mesh { + constructor(options) { + if (!options) { + throw new Error("SparkRenderer options are required"); } - const json = JSON.parse(text); - if (!json || typeof json !== "object" || Array.isArray(json)) { - return void 0; + if (!options.renderer) { + throw new Error("renderer is required in SparkRenderer options"); } - const isVersion2 = json.version === 2; - for (const key of ["means", "scales", "quats", "sh0"]) { - if (!json[key] || typeof json[key] !== "object" || Array.isArray(json[key])) { - return void 0; + const uniforms = _SparkRenderer.makeUniforms(); + Object.assign(uniforms, options.extraUniforms ?? {}); + const shaders2 = getShaders(); + const premultipliedAlpha = options.premultipliedAlpha ?? true; + const geometry = new SplatGeometry(); + const material = new THREE.ShaderMaterial({ + glslVersion: THREE.GLSL3, + vertexShader: options.vertexShader ?? shaders2.splatVertex, + fragmentShader: options.fragmentShader ?? shaders2.splatFragment, + uniforms, + premultipliedAlpha, + transparent: options.transparent ?? true, + depthTest: options.depthTest ?? true, + depthWrite: options.depthWrite ?? false, + side: THREE.DoubleSide, + allowOverride: false + }); + super(geometry, material); + this.renderSize = new THREE.Vector2(); + this.lastFrame = -1; + this.updateTimeoutId = -1; + this.orderingTexture = null; + this.maxSplats = 0; + this.activeSplats = 0; + this.accumulators = []; + this.sorting = false; + this.sortDirty = false; + this.lastSortTime = 0; + this.sortWorker = null; + this.sortTimeoutId = -1; + this.sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY); + this.sortedDir = new THREE.Vector3().setScalar(0); + this.readback32 = new Uint32Array(0); + this.lastLodRaycastTime = 0; + this.lodWorker = null; + this.lodMeshes = []; + this.lodDirty = false; + this.lodIds = /* @__PURE__ */ new Map(); + this.lodIdToSplats = /* @__PURE__ */ new Map(); + this.lodInitQueue = []; + this.lodInstances = /* @__PURE__ */ new Map(); + this.lodUpdates = []; + this.lastTraverseTime = 0; + this.pagerId = 0; + this.superXY = 1; + this.flushAfterGenerate = false; + this.flushAfterRead = false; + this.readPause = 1; + this.sortPause = 0; + this.sortDelay = 0; + this.pageSizeWarning = false; + this.material = material; + this.uniforms = uniforms; + this.frustumCulled = false; + this.renderer = options.renderer; + this.onDirty = options.onDirty; + this.dirty = true; + this.autoUpdate = options.autoUpdate ?? true; + this.preUpdate = options.preUpdate ?? true; + this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); + this.gaussianK = options.gaussianK ?? 1; + this.minPixelRadius = options.minPixelRadius ?? 0; + this.maxPixelRadius = options.maxPixelRadius ?? 512; + this.accumExtSplats = options.accumExtSplats ?? false; + this.covSplats = options.covSplats ?? false; + this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); + this.enable2DGS = options.enable2DGS ?? false; + this.preBlurAmount = options.preBlurAmount ?? 0; + this.blurAmount = options.blurAmount ?? 0.3; + this.focalDistance = options.focalDistance ?? 0; + this.apertureAngle = options.apertureAngle ?? 0; + this.falloff = options.falloff ?? 1; + this.clipXY = options.clipXY ?? 1.4; + this.focalAdjustment = options.focalAdjustment ?? 1; + this.sortRadial = options.sortRadial ?? true; + this.minSortIntervalMs = options.minSortIntervalMs ?? 0; + this.enableLod = options.enableLod ?? true; + this.enableDriveLod = options.enableDriveLod ?? this.enableLod; + this.enableLodFetching = options.enableLodFetching ?? true; + this.lodSplatCount = options.lodSplatCount; + this.lodSplatScale = options.lodSplatScale ?? 1; + this.lodRenderScale = options.lodRenderScale ?? 1; + this.lodInflate = options.lodInflate ?? false; + this.lodTraverseMode = options.lodTraverseMode ?? "standard"; + this.pagedExtSplats = options.pagedExtSplats ?? false; + const defaultPages = isMobile() ? isIos() ? 96 : 128 : 256; + this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536; + this.numLodFetchers = options.numLodFetchers ?? 3; + this.behindFoveate = options.behindFoveate ?? 0.2; + this.coneFov0 = options.coneFov0 ?? 90; + this.coneFov = options.coneFov ?? 120; + this.coneFoveate = options.coneFoveate ?? 0.4; + this.lodRaycast = options.lodRaycast === void 0 ? isMobile() ? 1e4 : 25e3 : options.lodRaycast; + this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500; + this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock(); + const accumulatorOptions = { + extSplats: this.accumExtSplats, + covSplats: this.covSplats + }; + this.display = new SplatAccumulator(accumulatorOptions); + this.current = this.display; + this.accumulators.push(new SplatAccumulator(accumulatorOptions)); + this.accumulators.push(new SplatAccumulator(accumulatorOptions)); + const provokingVertexExt = this.renderer.getContext().getExtension("WEBGL_provoking_vertex"); + if (provokingVertexExt) { + provokingVertexExt.provokingVertexWEBGL( + provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL + ); + } + if (options.target) { + const { + width, + height, + doubleBuffer, + superXY: origSuperXY, + ...origTargetOptions + } = options.target; + const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1)); + if (width * superXY > 8192 || height * superXY > 8192) { + throw new Error("Target size too large"); } - if (isVersion2) { - if (!json[key].files) { - return void 0; - } - if ((key === "scales" || key === "sh0") && !json[key].codebook) { - return void 0; - } - if (key === "means" && (!json[key].mins || !json[key].maxs)) { - return void 0; - } - } else { - if (!json[key].shape || !json[key].files) { - return void 0; - } - if (key !== "quats" && (!json[key].mins || !json[key].maxs)) { - return void 0; - } + this.superXY = superXY; + const superWidth = width * superXY; + const superHeight = height * superXY; + const targetOptions = { + format: THREE.RGBAFormat, + type: THREE.UnsignedByteType, + colorSpace: THREE.SRGBColorSpace, + ...origTargetOptions + }; + this.target = new THREE.WebGLRenderTarget( + superWidth, + superHeight, + targetOptions + ); + if (doubleBuffer) { + this.backTarget = new THREE.WebGLRenderTarget( + superWidth, + superHeight, + targetOptions + ); } } - return json; - } catch { - return void 0; } -} -function tryPcSogsZip(input) { - try { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - let metaFilename = null; - const unzipped = unzipSync(fileBytes, { - filter: ({ name }) => { - const filename = name.split(/[\\/]/).pop(); - if (filename === "meta.json") { - metaFilename = name; - return true; - } - return false; - } - }); - if (!metaFilename) { - return void 0; + static makeUniforms() { + const uniforms = { + // // number of active splats to render + // numSplats: { value: 0 }, + // Size of render viewport in pixels + renderSize: { value: new THREE.Vector2() }, + // Near and far plane distances + near: { value: 0.1 }, + far: { value: 1e3 }, + // SplatAccumulator to view transformation quaternion + renderToViewQuat: { value: new THREE.Quaternion() }, + // SplatAccumulator to view transformation translation + renderToViewPos: { value: new THREE.Vector3() }, + renderToViewBasis: { value: new THREE.Matrix3() }, + renderToViewOffset: { value: new THREE.Vector3() }, + // Maximum distance (in stddevs) from Gsplat center to render + maxStdDev: { value: 1 }, + // Generalized Gaussian k. The radial exponent is 2 * gaussianK. + gaussianK: { value: 1 }, + // Minimum pixel radius for splat rendering + minPixelRadius: { value: 0 }, + // Maximum pixel radius for splat rendering + maxPixelRadius: { value: 512 }, + // Minimum alpha value for splat rendering + minAlpha: { value: 0.5 * (1 / 255) }, + // Enable interpreting 0-thickness Gsplats as 2DGS + enable2DGS: { value: false }, + // Enable ray-splat max response evaluation + // enableRayEval: { value: false }, + // Inflate LoD splats so that opacity <= 1.0 + lodInflate: { value: false }, + // Add to projected 2D splat covariance diagonal (thickens and brightens) + preBlurAmount: { value: 0 }, + // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) + blurAmount: { value: 0.3 }, + // Depth-of-field distance to focal plane + focalDistance: { value: 0 }, + // Full-width angle of aperture opening (in radians) + apertureAngle: { value: 0 }, + // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", + // 1 is normal e^-x^2 falloff. + falloff: { value: 1 }, + // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds + clipXY: { value: 1.4 }, + // Debug renderSize scale factor + focalAdjustment: { value: 1 }, + // Whether to encode Gsplat with linear RGB (for environment mapping) + encodeLinear: { value: false }, + // Back-to-front sort ordering of splat indices + ordering: { type: "t", value: _SparkRenderer.emptyOrdering }, + enableExtSplats: { value: false }, + enableCovSplats: { value: false }, + // Gsplat collection to render + extSplats: { type: "t", value: SplatAccumulator.emptyTexture }, + extSplats2: { type: "t", value: SplatAccumulator.emptyTexture }, + // Time in seconds for time-based effects + time: { value: 0 }, + // Delta time in seconds since last frame + deltaTime: { value: 0 }, + // Debug flag that alternates each frame + debugFlag: { value: false } + }; + return uniforms; + } + dispose() { + if (this.target) { + this.target.dispose(); + this.target = void 0; } - const json = tryPcSogs(unzipped[metaFilename]); - if (!json) { - return void 0; + if (this.backTarget) { + this.backTarget.dispose(); + this.backTarget = void 0; } - return { name: metaFilename, json }; - } catch { - return void 0; - } -} -async function unpackSplats({ - input, - extraFiles, - fileType, - pathOrUrl, - splatEncoding -}) { - const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input; - let splatFileType = fileType; - if (!fileType) { - splatFileType = getSplatFileType(fileBytes); - if (!splatFileType && pathOrUrl) { - splatFileType = getSplatFileTypeFromPath(pathOrUrl); - } - } - switch (splatFileType) { - case SplatFileType.PLY: { - const ply = new PlyReader({ fileBytes }); - await ply.parseHeader(); - const numSplats = ply.numSplats; - const maxSplats = getTextureSize(numSplats).maxSplats; - const args = { - fileBytes, - packedArray: new Uint32Array(maxSplats * 4), - splatEncoding - }; - return await withWorker(async (worker) => { - const { packedArray, numSplats: numSplats2, extra } = await worker.call( - "unpackPly", - args - ); - return { packedArray, numSplats: numSplats2, extra }; - }); + if (this.orderingTexture) { + this.orderingTexture.dispose(); + this.orderingTexture = null; } - case SplatFileType.SPZ: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodeSpz", - { - fileBytes, - splatEncoding - } - ); - return { packedArray, numSplats, extra }; - }); + const accumulators = /* @__PURE__ */ new Set(); + accumulators.add(this.display); + accumulators.add(this.current); + for (const accumulator of this.accumulators) { + accumulators.add(accumulator); } - case SplatFileType.SPLAT: { - return await withWorker(async (worker) => { - const { packedArray, numSplats } = await worker.call( - "decodeAntiSplat", - { - fileBytes, - splatEncoding - } - ); - return { packedArray, numSplats }; - }); + for (const accumulator of accumulators) { + accumulator.dispose(); } - case SplatFileType.KSPLAT: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodeKsplat", - { fileBytes, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + const instances = this.lodInstances.values(); + this.lodInstances.clear(); + for (const instance of instances) { + instance.texture.dispose(); } - case SplatFileType.PCSOGS: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodePcSogs", - { fileBytes, extraFiles, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + if (this.sortWorker) { + this.sortWorker.dispose(); + this.sortWorker = null; } - case SplatFileType.PCSOGSZIP: { - return await withWorker(async (worker) => { - const { packedArray, numSplats, extra } = await worker.call( - "decodePcSogsZip", - { fileBytes, splatEncoding } - ); - return { packedArray, numSplats, extra }; - }); + if (this.lodWorker) { + this.lodWorker.dispose(); + this.lodWorker = null; } - default: { - throw new Error(`Unknown splat file type: ${splatFileType}`); + if (this.pager) { + this.pager.dispose(); + this.pager = void 0; } } -} -class SplatData { - constructor({ maxSplats = 1 } = {}) { - this.numSplats = 0; - this.maxSplats = getTextureSize(maxSplats).maxSplats; - this.centers = new Float32Array(this.maxSplats * 3); - this.scales = new Float32Array(this.maxSplats * 3); - this.quaternions = new Float32Array(this.maxSplats * 4); - this.opacities = new Float32Array(this.maxSplats); - this.colors = new Float32Array(this.maxSplats * 3); - } - pushSplat() { - const index = this.numSplats; - this.ensureIndex(index); - this.numSplats += 1; - return index; + setDirty() { + var _a2; + if (!this.dirty) { + this.dirty = true; + (_a2 = this.onDirty) == null ? void 0 : _a2.call(this); + } } - unpushSplat(index) { - if (index === this.numSplats - 1) { - this.numSplats -= 1; + onBeforeRender(renderer, scene, camera) { + var _a2; + const spark = _SparkRenderer.sparkOverride ?? this; + const frame = renderer.info.render.frame; + const isNewFrame = frame !== spark.lastFrame; + spark.lastFrame = frame; + const currentRenderTarget = renderer.getRenderTarget(); + const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget); + if (currentRenderTarget) { + spark.renderSize.set( + currentRenderTarget.width, + currentRenderTarget.height + ); + if (isXRRenderTarget && spark.renderSize.x === 1 && spark.renderSize.y === 1) { + const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; + if (baseLayer) { + spark.renderSize.x = baseLayer.framebufferWidth; + spark.renderSize.y = baseLayer.framebufferHeight; + } + } } else { - throw new Error("Cannot unpush splat from non-last position"); + renderer.getDrawingBufferSize(spark.renderSize); } - } - ensureCapacity(numSplats) { - if (numSplats > this.maxSplats) { - const targetSplats = Math.max(numSplats, this.maxSplats * 2); - const newCenters = new Float32Array(targetSplats * 3); - const newScales = new Float32Array(targetSplats * 3); - const newQuaternions = new Float32Array(targetSplats * 4); - const newOpacities = new Float32Array(targetSplats); - const newColors = new Float32Array(targetSplats * 3); - newCenters.set(this.centers); - newScales.set(this.scales); - newQuaternions.set(this.quaternions); - newOpacities.set(this.opacities); - newColors.set(this.colors); - this.centers = newCenters; - this.scales = newScales; - this.quaternions = newQuaternions; - this.opacities = newOpacities; - this.colors = newColors; - if (this.sh1) { - const newSh1 = new Float32Array(targetSplats * 9); - newSh1.set(this.sh1); - this.sh1 = newSh1; + this.uniforms.renderSize.value.copy(spark.renderSize); + const typedCamera = camera; + this.uniforms.near.value = typedCamera.near; + this.uniforms.far.value = typedCamera.far; + const geometry = this.geometry; + geometry.instanceCount = spark.activeSplats; + const accumToWorld = new THREE.Matrix4(); + if (!this.display.extSplats) { + accumToWorld.makeTranslation(spark.display.viewOrigin); + } + const cameraToWorld = camera.matrixWorld.clone(); + const worldToCamera = cameraToWorld.invert(); + const accumToCamera = worldToCamera.multiply(accumToWorld); + accumToCamera.decompose( + this.uniforms.renderToViewPos.value, + this.uniforms.renderToViewQuat.value, + new THREE.Vector3() + ); + this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera); + this.uniforms.maxStdDev.value = spark.maxStdDev; + this.uniforms.gaussianK.value = spark.gaussianK; + this.uniforms.minPixelRadius.value = spark.minPixelRadius; + this.uniforms.maxPixelRadius.value = spark.maxPixelRadius; + this.uniforms.minAlpha.value = spark.minAlpha; + this.uniforms.enable2DGS.value = spark.enable2DGS; + this.uniforms.lodInflate.value = spark.lodInflate; + this.uniforms.preBlurAmount.value = spark.preBlurAmount; + this.uniforms.blurAmount.value = spark.blurAmount; + this.uniforms.focalDistance.value = spark.focalDistance; + this.uniforms.apertureAngle.value = spark.apertureAngle; + this.uniforms.falloff.value = spark.falloff; + this.uniforms.clipXY.value = spark.clipXY; + this.uniforms.focalAdjustment.value = spark.focalAdjustment; + const outputColorSpace = currentRenderTarget === null ? renderer.outputColorSpace : isXRRenderTarget ? currentRenderTarget.texture.colorSpace : THREE.ColorManagement.workingColorSpace; + this.uniforms.encodeLinear.value = outputColorSpace !== THREE.SRGBColorSpace; + this.uniforms.ordering.value = spark.orderingTexture ?? _SparkRenderer.emptyOrdering; + this.uniforms.enableExtSplats.value = this.display.extSplats; + this.uniforms.enableCovSplats.value = this.display.covSplats; + if (this.display.extSplats) { + const extSplats = spark.display.getTextures(); + this.uniforms.extSplats.value = extSplats[0]; + this.uniforms.extSplats2.value = extSplats[1]; + } else { + const packedSplats = spark.display.getTextures(); + this.uniforms.extSplats.value = packedSplats[0]; + this.uniforms.extSplats2.value = packedSplats[0]; + } + this.uniforms.time.value = spark.display.time; + this.uniforms.deltaTime.value = spark.display.deltaTime; + this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; + if (spark.autoUpdate && isNewFrame) { + const preUpdate = spark.preUpdate && !renderer.xr.isPresenting; + const useCamera = renderer.xr.isPresenting ? renderer.xr.getCamera() : camera; + if (preUpdate) { + spark.updateInternal({ + scene, + camera: useCamera, + autoUpdate: true + }); + } else { + if (spark.updateTimeoutId === -1) { + spark.updateTimeoutId = setTimeout(() => { + spark.updateTimeoutId = -1; + spark.updateInternal({ + scene, + camera: useCamera, + autoUpdate: true + }); + }, 1); + } } - if (this.sh2) { - const newSh2 = new Float32Array(targetSplats * 15); - newSh2.set(this.sh2); - this.sh2 = newSh2; + } + spark.dirty = false; + } + clearSplats() { + this.activeSplats = 0; + this.display.numSplats = 0; + this.setDirty(); + } + async update({ + scene, + camera + }) { + await this.updateInternal({ scene, camera, autoUpdate: false }); + } + // /** + // * Provide additional cameras to prefetch paged splat chunks without + // * affecting main LOD selection. + // */ + // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { + // const next = cameras?.filter(Boolean) ?? []; + // const sameCameras = + // this.prefetchCameras.length === next.length && + // this.prefetchCameras.every((camera, index) => camera === next[index]); + // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { + // return; + // } + // this.prefetchCameras = next; + // this.prefetchLodScale = lodScaleMultiplier; + // this.invalidatePrefetchCache(); + // } + // /** + // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are + // * added or removed from the scene. + // */ + // invalidatePrefetchCache() { + // this.prefetchMeshesCacheScene = undefined; + // } + async updateInternal({ + scene, + camera, + autoUpdate + }) { + const renderer = this.renderer; + const time = this.time ?? this.clock.getElapsedTime(); + const center = camera.getWorldPosition(new THREE.Vector3()); + const dir = camera.getWorldDirection(new THREE.Vector3()); + const viewChanged = center.distanceTo(this.sortedCenter) > 1e-3 || dir.dot(this.sortedDir) < 0.999; + const next = this.accumulators.pop(); + if (!next) { + throw new Error("No next accumulator"); + } + if (next === this.current) { + throw new Error( + "Next accumulator is the same as the current accumulator" + ); + } + const { version, mappingVersion, visibleGenerators, generate } = next.prepareGenerate({ + renderer, + scene, + time, + camera, + sortRadial: this.sortRadial ?? true, + renderSize: this.renderSize, + previous: this.current, + lodInstances: this.enableLod ? this.lodInstances : void 0 + }); + let doUpdate = true; + const needsUpdate = viewChanged || version !== this.current.version; + const mappingUpdated = mappingVersion !== this.display.mappingVersion; + if (autoUpdate && !needsUpdate) { + doUpdate = false; + } + if (mappingUpdated && this.sorting) { + doUpdate = false; + } + if (!doUpdate) { + this.accumulators.push(next); + } else { + generate(); + if (this.flushAfterGenerate) { + const gl = renderer.getContext(); + gl.flush(); } - if (this.sh3) { - const newSh3 = new Float32Array(targetSplats * 21); - newSh3.set(this.sh3); - this.sh3 = newSh3; + if (this.display.mappingVersion === next.mappingVersion) { + this.accumulators.push(this.display); + this.display = next; + } else { + if (this.display !== this.current) { + this.accumulators.push(this.current); + } } - this.maxSplats = targetSplats; - } - } - ensureIndex(index) { - this.ensureCapacity(index + 1); - } - setCenter(index, x, y, z) { - this.centers[index * 3] = x; - this.centers[index * 3 + 1] = y; - this.centers[index * 3 + 2] = z; - } - setScale(index, scaleX, scaleY, scaleZ) { - this.scales[index * 3] = scaleX; - this.scales[index * 3 + 1] = scaleY; - this.scales[index * 3 + 2] = scaleZ; - } - setQuaternion(index, x, y, z, w) { - this.quaternions[index * 4] = x; - this.quaternions[index * 4 + 1] = y; - this.quaternions[index * 4 + 2] = z; - this.quaternions[index * 4 + 3] = w; - } - setOpacity(index, opacity) { - this.opacities[index] = opacity; - } - setColor(index, r, g, b) { - this.colors[index * 3] = r; - this.colors[index * 3 + 1] = g; - this.colors[index * 3 + 2] = b; - } - setSh1(index, sh1) { - if (!this.sh1) { - this.sh1 = new Float32Array(this.maxSplats * 9); + this.current = next; + this.sortDirty = true; + this.setDirty(); } - for (let j = 0; j < 9; ++j) { - this.sh1[index * 9 + j] = sh1[j]; + if (this.enableDriveLod) { + this.driveLod({ visibleGenerators, camera, scene }); } + await this.driveSort(); } - setSh2(index, sh2) { - if (!this.sh2) { - this.sh2 = new Float32Array(this.maxSplats * 15); + async driveSort() { + if (this.sorting || !this.sortDirty) { + return; } - for (let j = 0; j < 15; ++j) { - this.sh2[index * 15 + j] = sh2[j]; + if (this.sortTimeoutId !== -1) { + clearTimeout(this.sortTimeoutId); + this.sortTimeoutId = -1; } - } - setSh3(index, sh3) { - if (!this.sh3) { - this.sh3 = new Float32Array(this.maxSplats * 21); + const now = performance.now(); + const nextSortTime = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : now; + if (now < nextSortTime) { + this.sortTimeoutId = setTimeout(() => { + this.sortTimeoutId = -1; + this.driveSort(); + }, nextSortTime - now); + return; } - for (let j = 0; j < 21; ++j) { - this.sh3[index * 21 + j] = sh3[j]; + this.sorting = true; + this.sortDirty = false; + this.lastSortTime = now; + if (this.readPause > 0) { + await new Promise((resolve) => setTimeout(resolve, this.readPause)); } - } -} -const _PackedSplats = class _PackedSplats { - constructor(options = {}) { - this.maxSplats = 0; - this.numSplats = 0; - this.packedArray = null; - this.maxSh = 3; - this.isInitialized = false; - this.target = null; - this.source = null; - this.needsUpdate = true; - this.extra = {}; - this.dyno = new DynoPackedSplats({ packedSplats: this }); - this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({ - key: "rgbMinMaxLnScaleMinMax", - value: new THREE.Vector4(0, 1, LN_SCALE_MIN, LN_SCALE_MAX), - update: (value) => { - var _a2, _b2, _c, _d; - value.set( - ((_a2 = this.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, - ((_b2 = this.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, - ((_c = this.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, - ((_d = this.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX - ); - return value; - } - }); - this.dynoNumSh = new DynoInt({ - key: "numSh", - value: 0, - update: () => { - return Math.min(this.getNumSh(), this.maxSh); - } - }); - this.dynoShMax = new DynoVec3({ - key: "shMax", - value: new THREE.Vector3(), - update: (value) => { - var _a2, _b2, _c; - value.set( - ((_a2 = this.splatEncoding) == null ? void 0 : _a2.sh1Max) ?? 1, - ((_b2 = this.splatEncoding) == null ? void 0 : _b2.sh2Max) ?? 1, - ((_c = this.splatEncoding) == null ? void 0 : _c.sh3Max) ?? 1 - ); - return value; - } + const current = this.current; + this.sortedCenter.copy(current.viewOrigin); + this.sortedDir.copy(current.viewDirection); + const { numSplats, maxSplats } = current; + const rows = Math.max(1, Math.ceil(maxSplats / 16384)); + const orderingMaxSplats = rows * 16384; + this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats); + const ordering = new Uint32Array(this.maxSplats); + const readback = Readback.ensureBuffer(maxSplats, this.readback32); + this.readback32 = readback; + await this.readbackDepth({ + current, + renderer: this.renderer, + numSplats, + readback }); - this.initialized = Promise.resolve(this); - this.reinitialize(options); - } - reinitialize(options) { - this.isInitialized = false; - this.extra = {}; - this.maxSplats = options.maxSplats ?? 0; - this.splatEncoding = options.splatEncoding; - this.lod = options.lod; - this.nonLod = options.nonLod; - if (options.url || options.fileBytes || options.stream || options.construct) { - this.initialized = this.asyncInitialize(options).then(() => { - this.isInitialized = true; - return this; - }); - } else { - this.initialize(options); - this.isInitialized = true; - this.initialized = Promise.resolve(this); - } - } - initialize(options) { - this.extra = options.extra ?? {}; - this.splatEncoding = options.splatEncoding ?? this.splatEncoding; - this.lodSplats = options.lodSplats; - if (options.packedArray) { - this.packedArray = options.packedArray; - this.numSplats = options.numSplats ?? this.packedArray.length / 4; - this.maxSplats = Math.floor(this.packedArray.length / 4); - this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - this.numSplats = Math.min( - this.maxSplats, - options.numSplats ?? Number.POSITIVE_INFINITY - ); - } else { - this.maxSplats = options.maxSplats ?? 0; - this.numSplats = 0; + if (this.sortPause > 0) { + await new Promise((resolve) => setTimeout(resolve, this.sortPause)); } - } - async asyncInitialize(options) { - const { - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - construct, - lod, - nonLod, - lodAbove - } = options; - this.lod = lod; - this.nonLod = nonLod; - const loader = new SplatLoader(); - if (fileBytes || url || stream) { - await loader.loadInternalAsync({ - packedSplats: this, - url, - fileBytes, - fileType, - fileName, - stream, - streamLength, - onProgress: options.onProgress, - lodAbove - }); + if (!this.sortWorker) { + this.sortWorker = new SplatWorker(); } - if (construct) { - const maybePromise = construct(this); - if (maybePromise instanceof Promise) { - await maybePromise; - } + const result = await this.sortWorker.call("sortSplats32", { + numSplats, + readback, + ordering + }); + if (this.sortDelay > 0) { + await new Promise((resolve) => setTimeout(resolve, this.sortDelay)); } - } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. - dispose() { - if (this.target) { - this.target.dispose(); - this.target.texture.source.data = null; - this.target = null; + this.readback32 = result.readback; + this.activeSplats = result.activeSplats; + if (this.orderingTexture) { + if (rows > this.orderingTexture.image.height) { + this.orderingTexture.dispose(); + this.orderingTexture = null; + } } - if (this.source) { - this.source.dispose(); - this.source.source.data = null; - this.source = null; + if (!this.orderingTexture) { + const orderingTexture = new THREE.DataTexture( + result.ordering, + 4096, + rows, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType + ); + orderingTexture.internalFormat = "RGBA32UI"; + orderingTexture.needsUpdate = true; + this.orderingTexture = orderingTexture; + } else { + const renderer = this.renderer; + if (!renderer.properties.has(this.orderingTexture)) { + this.orderingTexture.needsUpdate = true; + } else { + uploadU32DataTextureRows( + renderer, + this.orderingTexture, + 4096, + rows, + result.ordering + ); + } } - this.packedArray = null; - for (const key in this.extra) { - const dyno2 = this.extra[key]; - if (dyno2 instanceof DynoUniform) { - const texture2 = dyno2.value; - if (texture2 == null ? void 0 : texture2.isTexture) { - texture2.dispose(); - texture2.source.data = null; - } + if (this.current.mappingVersion === current.mappingVersion) { + if (this.current.mappingVersion !== this.display.mappingVersion) { + this.accumulators.push(this.display); + this.display = this.current; } } - this.extra = {}; - this.disposeLodSplats(); - } - prepareFetchSplat() { - } - getNumSplats() { - return this.numSplats; - } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; + this.sorting = false; + this.setDirty(); + this.driveSort(); } - getNumSh() { - return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3; + ensureLodWorker() { + if (!this.lodWorker) { + this.lodWorker = new SplatWorker(); + } + return this.lodWorker; } - setMaxSh(maxSh) { - this.maxSh = maxSh; + defaultSplatTarget() { + return isOculus() ? 5e5 : isVisionPro() ? 75e4 : isAndroid() ? 1e6 : isIos() ? 15e5 : 25e5; } - fetchSplat({ - index, - viewOrigin + driveLod({ + visibleGenerators, + camera, + scene }) { - let gsplat = readPackedSplat(this.dyno, index); - if (this.hasRgbDir() && viewOrigin) { - const splatCenter = splitGsplat(gsplat).outputs.center; - const viewDir = normalize(sub(splatCenter, viewOrigin)); - const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures(); - let { rgb } = evaluatePackedSH({ - coord: splatTexCoord(index), - viewDir, - numSh: this.dynoNumSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax: this.dynoShMax - }); - rgb = add(rgb, splitGsplat(gsplat).outputs.rgb); - gsplat = combineGsplat({ gsplat, rgb }); - } - return gsplat; - } - ensureShTextures() { - if (!this.extra.sh1) { - return {}; - } - let sh1Texture = this.extra.sh1Texture; - if (!sh1Texture) { - let sh1 = this.extra.sh1; - const { width, height, depth, maxSplats } = getTextureSize( - sh1.length / 2 - ); - if (sh1.length < maxSplats * 2) { - const newSh1 = new Uint32Array(maxSplats * 2); - newSh1.set(sh1); - this.extra.sh1 = newSh1; - sh1 = newSh1; - } - const texture2 = new THREE.DataArrayTexture(sh1, width, height, depth); - texture2.format = THREE.RGIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - sh1Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh1" - }); - this.extra.sh1Texture = sh1Texture; - } - if (!this.extra.sh2) { - return { sh1Texture }; + var _a2, _b2; + const defaultSplatCount = this.defaultSplatTarget(); + const splatCount = this.lodSplatCount ?? defaultSplatCount; + const maxSplats = splatCount * this.lodSplatScale; + let pixelScaleLimit = 0; + if (camera instanceof THREE.PerspectiveCamera) { + const tanYfov = Math.tan(0.5 * camera.fov * Math.PI / 180); + pixelScaleLimit = 2 * tanYfov / this.renderSize.y; + } else if (camera instanceof THREE.OrthographicCamera) { + const viewHeight = (camera.top - camera.bottom) / camera.zoom; + const viewWidth = (camera.right - camera.left) / camera.zoom; + const pxY = viewHeight / Math.max(1, this.renderSize.y); + const pxX = viewWidth / Math.max(1, this.renderSize.x); + pixelScaleLimit = Math.min(pxX, pxY); } - let sh2Texture = this.extra.sh2Texture; - if (!sh2Texture) { - let sh2 = this.extra.sh2; - const { width, height, depth, maxSplats } = getTextureSize( - sh2.length / 4 - ); - if (sh2.length < maxSplats * 4) { - const newSh2 = new Uint32Array(maxSplats * 4); - newSh2.set(sh2); - this.extra.sh2 = newSh2; - sh2 = newSh2; - } - const texture2 = new THREE.DataArrayTexture(sh2, width, height, depth); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - sh2Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh2" - }); - this.extra.sh2Texture = sh2Texture; + pixelScaleLimit *= this.lodRenderScale; + const viewPos = new THREE.Vector3(); + const viewQuat = new THREE.Quaternion(); + this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3()); + if (this.lodPosOverride) { + viewPos.copy(this.lodPosOverride); } - if (!this.extra.sh3) { - return { sh1Texture, sh2Texture }; + if (this.lodQuatOverride) { + viewQuat.copy(this.lodQuatOverride).normalize(); } - let sh3Texture = this.extra.sh3Texture; - if (!sh3Texture) { - let sh3 = this.extra.sh3; - const { width, height, depth, maxSplats } = getTextureSize( - sh3.length / 4 - ); - if (sh3.length < maxSplats * 4) { - const newSh3 = new Uint32Array(maxSplats * 4); - newSh3.set(sh3); - this.extra.sh3 = newSh3; - sh3 = newSh3; + if (this.lastLod) { + if (this.lastLod.pixelScaleLimit !== pixelScaleLimit || this.lastLod.maxSplats !== maxSplats) { + this.lodDirty = true; } - const texture2 = new THREE.DataArrayTexture(sh3, width, height, depth); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - sh3Texture = new DynoUsampler2DArray({ - value: texture2, - key: "sh3" - }); - this.extra.sh3Texture = sh3Texture; - } - return { sh1Texture, sh2Texture, sh3Texture }; - } - // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(numSplats) { - const targetSize = numSplats <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(numSplats, 2 * this.maxSplats) - ); - const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4; - if (!this.packedArray || targetSize > currentSize) { - this.maxSplats = getTextureSize(targetSize).maxSplats; - const newArray2 = new Uint32Array(this.maxSplats * 4); - if (this.packedArray) { - newArray2.set(this.packedArray); + const distance2 = viewPos.distanceTo(this.lastLod.pos); + const distanceRamp = Math.max(0, 1 - distance2 / 1); + const dot2 = viewQuat.dot(this.lastLod.quat); + const quatRamp = Math.max(0, 1 - (1 - dot2) / 0.01); + const similarity = distanceRamp * quatRamp; + if (similarity < 0.999) { + this.lodDirty = true; } - this.packedArray = newArray2; - } - return this.packedArray; - } - // Ensure the extra array for the given level is large enough to hold numSplats - ensureSplatsSh(level, numSplats) { - let wordsPerSplat; - let key; - if (level === 0) { - return this.ensureSplats(numSplats); } - if (level === 1) { - wordsPerSplat = 2; - key = "sh1"; - } else if (level === 2) { - wordsPerSplat = 4; - key = "sh2"; - } else if (level === 3) { - wordsPerSplat = 4; - key = "sh3"; + const lodMeshes = !this.enableLod ? [] : visibleGenerators.filter((generator) => { + var _a3, _b3; + return generator instanceof SplatMesh && (((_a3 = generator.packedSplats) == null ? void 0 : _a3.lodSplats) || ((_b3 = generator.extSplats) == null ? void 0 : _b3.lodSplats) || generator.paged) && generator.enableLod !== false; + }); + const hasPaged = lodMeshes.some((mesh) => mesh.paged); + if (this.lodMeshes.length !== lodMeshes.length) { + this.lodDirty = true; } else { - throw new Error(`Invalid level: ${level}`); + if (lodMeshes.some( + (m, i) => m !== this.lodMeshes[i].mesh || m.version > this.lodMeshes[i].version + )) { + this.lodDirty = true; + } } - let maxSplats = !this.extra[key] ? 0 : this.extra[key].length / wordsPerSplat; - const targetSize = numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats); - if (!this.extra[key] || targetSize > maxSplats) { - maxSplats = getTextureSize(targetSize).maxSplats; - const newArray2 = new Uint32Array(maxSplats * wordsPerSplat); - if (this.extra[key]) { - newArray2.set(this.extra[key]); + this.lodMeshes = lodMeshes.map((mesh) => ({ + mesh, + version: mesh.version + 1 + })); + this.lodInitQueue = []; + const now = performance.now(); + for (const mesh of lodMeshes) { + const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; + if (splats) { + const record = this.lodIds.get(splats); + if (record) { + record.lastTouched = now; + } else { + this.lodInitQueue.push(splats); + } } - this.extra[key] = newArray2; } - return this.extra[key]; + this.ensureLodWorker().tryExclusive(async (worker) => { + if (hasPaged && !this.pager) { + this.pager = new SplatPager({ + renderer: this.renderer, + extSplats: this.pagedExtSplats, + maxSplats: this.maxPagedSplats, + numFetchers: this.numLodFetchers + }); + const { lodId } = await worker.call("newLodTree", { + capacity: this.pager.maxSplats + }); + this.pagerId = lodId; + } + if (this.pager) { + for (const { mesh } of this.lodMeshes) { + if (mesh.paged && !mesh.paged.pager) { + mesh.paged.pager = this.pager; + } + } + } + if (this.lodInitQueue.length > 0) { + const lodInitQueue = this.lodInitQueue; + this.lodInitQueue = []; + while (lodInitQueue.length > 0) { + const splats = lodInitQueue.shift(); + if (splats) { + await this.initLodTree(worker, splats); + this.lodDirty = true; + } + } + } + if (this.pager) { + const updates = this.pager.consumeLodTreeUpdates(); + for (const { splats, page, chunk, numSplats, lodTree } of updates) { + const record = this.lodIds.get(splats); + if (record) { + if (lodTree && chunk === 0) { + record.rootPage = page; + } + this.lodUpdates.push({ + lodId: record.lodId, + pageBase: page * this.pager.pageSplats, + chunkBase: chunk * this.pager.pageSplats, + count: numSplats, + lodTreeData: lodTree + }); + } + } + } + if (this.lodUpdates.length > 0) { + const lodUpdates = this.lodUpdates; + this.lodUpdates = []; + await worker.call("updateLodTrees", { ranges: lodUpdates }); + this.lodDirty = true; + } + if (this.lodDirty) { + const now2 = performance.now(); + const deltaPred = new THREE.Vector3(); + if (this.lastLod) { + const deltaTime = Math.max(1, now2 - this.lastLod.timestamp); + deltaPred.copy(viewPos).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / deltaTime); + } + this.lastLod = { + pos: viewPos, + quat: viewQuat, + pixelScaleLimit, + maxSplats, + timestamp: now2 + }; + this.lodDirty = false; + await this.updateLodInstances( + worker, + deltaPred, + lodMeshes, + maxSplats, + viewPos, + viewQuat, + pixelScaleLimit + ); + this.currentLod = this.lastLod; + this.setDirty(); + } + await this.cleanupLodTrees(worker); + }); } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(index) { - if (!this.packedArray || index >= this.numSplats) { - throw new Error("Invalid index"); + async initLodTree(worker, splats) { + if (splats instanceof PackedSplats || splats instanceof ExtSplats) { + const { lodId } = await worker.call("initLodTree", { + numSplats: splats.numSplats ?? 0, + lodTree: splats.extra.lodTree.slice() + }); + this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); + this.lodIdToSplats.set(lodId, splats); + } else { + const { lodId } = await worker.call("newSharedLodTree", { + lodId: this.pagerId + }); + this.lodIds.set(splats, { lodId, lastTouched: performance.now() }); + this.lodIdToSplats.set(lodId, splats); } - return unpackSplat(this.packedArray, index, this.splatEncoding); } - // Set all PackedSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(index, center, scales, quaternion, opacity, color) { - const packedSplats = this.ensureSplats(index + 1); - setPackedSplat( - packedSplats, - index, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b + async updateLodInstances(worker, deltaPred, lodMeshes, maxSplats, viewPos, viewQuat, pixelScaleLimit) { + const uuidToMesh = /* @__PURE__ */ new Map(); + const cameraToWorld = new THREE.Matrix4().compose( + viewPos, + viewQuat, + new THREE.Vector3().setScalar(1) ); - this.numSplats = Math.max(this.numSplats, index + 1); - } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(center, scales, quaternion, opacity, color) { - const packedSplats = this.ensureSplats(this.numSplats + 1); - setPackedSplat( - packedSplats, - this.numSplats, - center.x, - center.y, - center.z, - scales.x, - scales.y, - scales.z, - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w, - opacity, - color.r, - color.g, - color.b + const instances = lodMeshes.reduce( + (instances2, mesh) => { + var _a2, _b2; + uuidToMesh.set(mesh.uuid, mesh); + const viewToObject = mesh.matrixWorld.clone().invert().multiply(cameraToWorld); + const splats = ((_a2 = mesh.packedSplats) == null ? void 0 : _a2.lodSplats) ?? ((_b2 = mesh.extSplats) == null ? void 0 : _b2.lodSplats) ?? mesh.paged; + if (!splats) { + return instances2; + } + const record = this.lodIds.get(splats); + if (!record) { + return instances2; + } + if (this.pager && mesh.paged && record.rootPage === void 0) { + return instances2; + } + instances2[mesh.uuid] = { + instanceId: mesh.uuid, + lodId: record.lodId, + rootPage: record.rootPage, + viewToObjectCols: viewToObject.elements, + lodScale: mesh.lodScale, + behindFoveate: mesh.behindFoveate ?? this.behindFoveate, + coneFov0: mesh.coneFov0 ?? this.coneFov0, + coneFov: mesh.coneFov ?? this.coneFov, + coneFoveate: mesh.coneFoveate ?? this.coneFoveate + }; + return instances2; + }, + {} ); - ++this.numSplats; - } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(callback) { - if (!this.packedArray || !this.numSplats) { - return; + const traverseStart = performance.now(); + const result = await worker.call("traverseLodTrees", { + maxSplats, + pixelScaleLimit, + lastPixelLimit: this.lastPixelLimit, + instances, + traverseMode: this.lodTraverseMode + }); + this.lastTraverseTime = performance.now() - traverseStart; + const { keyIndices, chunks, pixelLimit } = result; + this.lastPixelLimit = pixelLimit; + const totalLodSplats = Object.values(keyIndices).reduce( + (sum, { numSplats }) => sum + numSplats, + 0 + ); + this.updateLodIndices(uuidToMesh, keyIndices); + if (this.pager) { + this.pager.processUploads(); + const pagedMeshes = lodMeshes.map((mesh) => { + if (!mesh.paged || !this.pager) { + return null; + } + const meshPosition = mesh.getWorldPosition(new THREE.Vector3()); + return { + splats: mesh.paged, + distance: meshPosition.distanceTo(viewPos) + }; + }).filter((result2) => result2 !== null); + if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) { + this.pageSizeWarning = true; + console.warn( + `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}` + ); + } + pagedMeshes.sort((a, b) => a.distance - b.distance); + this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({ + splats, + chunk: 0 + })); + for (const [lodId, chunk] of chunks) { + const splats = this.lodIdToSplats.get(lodId); + if (splats instanceof PagedSplats) { + if (chunk !== 0) { + this.pager.fetchPriority.push({ splats, chunk }); + } + } + } + this.pager.autoDrive = this.enableLodFetching; + if (this.enableLodFetching) { + this.pager.driveFetchers(); + } } - for (let i = 0; i < this.numSplats; ++i) { - const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding); - callback( - i, - unpacked.center, - unpacked.scales, - unpacked.quaternion, - unpacked.opacity, - unpacked.color + if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { + this.lastLodRaycastTime = performance.now(); + const traverseStart2 = performance.now(); + const result2 = await worker.call("traverseLodTrees", { + maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)), + pixelScaleLimit, + instances + }); + performance.now() - traverseStart2; + const { keyIndices: keyIndices2 } = result2; + Object.values(keyIndices2).reduce( + (sum, { numSplats }) => sum + numSplats, + 0 ); + for (const [uuid, countIndices] of Object.entries(keyIndices2)) { + const mesh = uuidToMesh.get(uuid); + mesh.raycastIndices = countIndices; + } } } - // Ensures our PackedSplats.target render target has enough space to generate - // maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate(maxSplats) { - if (this.target && (maxSplats ?? 1) <= this.maxSplats) { - return false; + async cleanupLodTrees(worker) { + var _a2; + const DISPOSE_TIMEOUT_MS = 3e3; + const now = performance.now(); + let oldest = null; + for (const [splats, record] of this.lodIds.entries()) { + if (oldest == null || record.lastTouched < oldest.lastTouched) { + oldest = { + splats, + lastTouched: record.lastTouched, + lodId: record.lodId + }; + } } - if (this.target) { - this.target.dispose(); + if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) { + return; } - const textureSize2 = getTextureSize(maxSplats ?? 1); - const { width, height, depth } = textureSize2; - this.maxSplats = textureSize2.maxSplats; - this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, { - depthBuffer: false, - stencilBuffer: false, - generateMipmaps: false, - magFilter: THREE.NearestFilter, - minFilter: THREE.NearestFilter - }); - this.target.texture.format = THREE.RGBAIntegerFormat; - this.target.texture.type = THREE.UnsignedIntType; - this.target.texture.internalFormat = "RGBA32UI"; - this.target.scissorTest = true; - return true; - } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(splatCounts) { - let maxSplats = 0; - const mapping = splatCounts.map((numSplats) => { - const base = maxSplats; - const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - maxSplats += rounded; - return { base, count: numSplats }; - }); - return { maxSplats, mapping }; - } - // Returns a THREE.DataArrayTexture representing the PackedSplats content as - // a Uint32x4 data array texture (2048 x 2048 x depth in size) - getTexture() { - if (this.target) { - return this.target.texture; + this.lodIds.delete(oldest.splats); + this.lodIdToSplats.delete(oldest.lodId); + for (const [mesh, instance] of this.lodInstances.entries()) { + if (instance.lodId === oldest.lodId) { + instance.texture.dispose(); + this.lodInstances.delete(mesh); + } } - if (this.source || this.packedArray) { - const source = this.maybeUpdateSource(); - return source; + if (oldest.splats instanceof PagedSplats) { + (_a2 = this.pager) == null ? void 0 : _a2.removeSplats(oldest.splats); } - return _PackedSplats.getEmptyArray; + await worker.call("disposeLodTree", { lodId: oldest.lodId }); } - // Check if source texture needs to be created/updated - maybeUpdateSource() { - if (!this.packedArray) { - throw new Error("No packed splats"); - } - if (this.needsUpdate || !this.source) { - this.needsUpdate = false; - if (this.source) { - const { width, height, depth } = this.source.image; - if (this.maxSplats !== width * height * depth) { - this.source.dispose(); - this.source = null; + updateLodIndices(uuidToMesh, keyIndices) { + for (const [uuid, countIndices] of Object.entries(keyIndices)) { + const { lodId, numSplats, indices } = countIndices; + const mesh = uuidToMesh.get(uuid); + if (mesh.paged) { + mesh.paged.update(numSplats, indices); + } else { + let instance = this.lodInstances.get(mesh); + if (instance) { + if (indices.length > instance.indices.length) { + instance.texture.dispose(); + instance = void 0; + } + } + const rows = Math.ceil(indices.length / 16384); + if (!instance) { + const capacity = rows * 16384; + if (indices.length !== capacity) { + throw new Error("Indices length != capacity"); + } + const texture2 = new THREE.DataTexture( + indices, + 4096, + rows, + THREE.RGBAIntegerFormat, + THREE.UnsignedIntType + ); + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + instance = { lodId, numSplats, indices, texture: texture2 }; + this.lodInstances.set(mesh, instance); + } else { + instance.numSplats = numSplats; + const renderer = this.renderer; + const gl = renderer.getContext(); + if (renderer.properties.has(instance.texture)) { + const props = renderer.properties.get(instance.texture); + const glTexture = props.__webglTexture; + if (!glTexture) { + throw new Error("lodIndices texture not found"); + } + renderer.state.activeTexture(gl.TEXTURE0); + renderer.state.bindTexture(gl.TEXTURE_2D, glTexture); + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, + 4096, + rows, + gl.RGBA_INTEGER, + gl.UNSIGNED_INT, + indices + ); + renderer.state.bindTexture(gl.TEXTURE_2D, null); + } } } - if (!this.source) { - const { width, height, depth } = getTextureSize(this.maxSplats); - this.source = new THREE.DataArrayTexture( - this.packedArray, - width, - height, - depth - ); - this.source.format = THREE.RGBAIntegerFormat; - this.source.type = THREE.UnsignedIntType; - this.source.internalFormat = "RGBA32UI"; - this.source.needsUpdate = true; - } else if (this.packedArray.buffer !== this.source.image.data.buffer) { - this.source.image.data = new Uint8Array(this.packedArray.buffer); - } - this.source.needsUpdate = true; + mesh.updateMappingVersion(); } - return this.source; } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(generator) { - let program = _PackedSplats.generatorProgram.get(generator); - if (!program) { - const graph = dynoBlock( - { index: "int" }, - {}, - ({ index }, _outputs, { roots }) => { - generator.inputs.index = index; - const gsplat = generator.outputs.gsplat; - const output = outputPackedSplat( - gsplat, - this.dynoRgbMinMaxLnScaleMinMax - ); - roots.push(output); - return void 0; - } + async readbackDepth({ + current, + renderer, + numSplats, + readback + }) { + if (!renderer) { + throw new Error("No renderer"); + } + if (!current.target) { + throw new Error("No target"); + } + const roundedCount = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; + if (readback.byteLength < roundedCount * 4) { + throw new Error( + `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}` + ); + } + const readbackUint8 = new Uint8Array(readback.buffer); + const renderState = this.saveRenderState(renderer); + const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; + let baseIndex = 0; + const promises = []; + while (baseIndex < numSplats) { + const layer = Math.floor(baseIndex / layerSize); + const layerBase = layer * layerSize; + const layerYEnd = Math.min( + SPLAT_TEX_HEIGHT, + Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH) + ); + const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4; + const subReadback = readbackUint8.subarray( + layerBase * 4, + layerBase * 4 + readbackSize + ); + renderer.setRenderTarget(current.target, layer); + const promise = renderer.readRenderTargetPixelsAsync( + current.target, + 0, + 0, + SPLAT_TEX_WIDTH, + layerYEnd, + subReadback, + void 0, + current.extSplats ? 2 : 1 ); - if (!_PackedSplats.programTemplate) { - _PackedSplats.programTemplate = new DynoProgramTemplate( - getShaders().computeUvec4Template - ); + promises.push(promise); + if (this.flushAfterRead) { + const gl = renderer.getContext(); + gl.flush(); } - program = new DynoProgram({ - graph, - inputs: { index: "_index" }, - outputs: { output: "target" }, - template: _PackedSplats.programTemplate - }); - Object.assign(program.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }); - _PackedSplats.generatorProgram.set(generator, program); + baseIndex += SPLAT_TEX_WIDTH * layerYEnd; } - const material = program.prepareMaterial(); - _PackedSplats.fullScreenQuad.material = material; - return { program, material }; + this.resetRenderState(renderer, renderState); + return Promise.all(promises).then(() => readback); } saveRenderState(renderer) { return { @@ -14722,1681 +14428,1036 @@ const _PackedSplats = class _PackedSplats { renderer.xr.enabled = state.xrEnabled; renderer.autoClear = state.autoClear; } - // Executes a dyno program specified by generator which is any DynoBlock that - // maps { index: "int" } to { gsplat: Gsplat }. This is called in - // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for - // SplatGenerator instances whose version is newer than what was generated - // for it last time. - generate({ - generator, - base, - count, - renderer - }) { - if (!this.target) { - throw new Error("Target must be initialized with ensureSplats"); + render(scene, camera) { + try { + _SparkRenderer.sparkOverride = this; + this.renderer.render(scene, camera); + } finally { + _SparkRenderer.sparkOverride = void 0; } - if (base + count > this.maxSplats) { - throw new Error("Base + count exceeds maxSplats"); + } + renderTarget({ + scene, + camera + }) { + const target = this.backTarget ?? this.target; + if (!target) { + throw new Error("No target"); } - const { program, material } = this.prepareProgramMaterial(generator); - program.update(); - const renderState = this.saveRenderState(renderer); - const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH; - const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT; - material.uniforms.targetBase.value = base; - material.uniforms.targetCount.value = count; - while (base < nextBase) { - const layer = Math.floor(base / layerSize); - material.uniforms.targetLayer.value = layer; - const layerBase = layer * layerSize; - const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH); - const layerYEnd = Math.min( - SPLAT_TEX_HEIGHT, - Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH) - ); - this.target.scissor.set( - 0, - layerYStart, - SPLAT_TEX_WIDTH, - layerYEnd - layerYStart - ); - renderer.setRenderTarget(this.target, layer); - renderer.xr.enabled = false; - renderer.autoClear = false; - _PackedSplats.fullScreenQuad.render(renderer); - base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart); + const previousTarget = this.renderer.getRenderTarget(); + try { + this.renderer.setRenderTarget(target); + _SparkRenderer.sparkOverride = this; + this.renderer.render(scene, camera); + } finally { + _SparkRenderer.sparkOverride = void 0; + this.renderer.setRenderTarget(previousTarget); } - this.resetRenderState(renderer, renderState); - return { nextBase }; - } - disposeLodSplats() { - if (this.lodSplats) { - this.lodSplats.dispose(); - this.lodSplats = void 0; + if (target !== this.target) { + [this.target, this.backTarget] = [this.backTarget, this.target]; } + return target; } - async createLodSplats({ - rgbaArray, - quality - } = {}) { - const lodBase = typeof this.lod === "number" ? Math.max(1.1, Math.min(2, this.lod)) : quality ? 1.75 : 1.5; - const packedArray = this.packedArray.slice(); - const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : void 0; - const extra = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 - }; - const decoded = await workerPool.withWorker(async (worker) => { - return await worker.call( - quality ? "qualityLodPackedSplats" : "tinyLodPackedSplats", - { - numSplats: this.numSplats, - packedArray, - extra, - lodBase, - rgba, - encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING - } - ); - }); - const lodSplats = new _PackedSplats(decoded); - if (this.lodSplats) { - this.lodSplats.dispose(); + // Read back the previously rendered target image as a Uint8Array of packed + // RGBA values (in that order). Subsequent calls to this.readTarget() + // will reuse the same buffers to minimize memory allocations. + async readTarget() { + if (!this.target) { + throw new Error("Must initialize with target"); } - this.lodSplats = lodSplats; - this.nonLod = true; - this.lod = quality ? "quality" : true; - } - extractSplats(indices, pageColoring) { - const maxSplats = getTextureSize(indices.length).maxSplats; - const newSplats = new _PackedSplats({ maxSplats }); - for (let i = 0; i < indices.length; i++) { - const splat = this.getSplat(indices[i]); - if (pageColoring) { - let hue = (indices[i] >>> 16) * 0.61803398875; - hue = hue - Math.floor(hue); - const r = Math.max(0, Math.min(1, Math.abs(hue * 6 - 3) - 1)); - const g = Math.max(0, Math.min(1, Math.abs(hue * 6 + 1) - 1)); - const b = Math.max(0, Math.min(1, Math.abs(hue * 6 - 1) - 1)); - splat.color.r *= r; - splat.color.g *= g; - splat.color.b *= b; - } - newSplats.pushSplat( - splat.center, - splat.scales, - splat.quaternion, - splat.opacity, - splat.color - ); + const { width, height } = this.target; + const byteSize = width * height * 4; + if (!this.superPixels || this.superPixels.length < byteSize) { + this.superPixels = new Uint8Array(byteSize); } - return newSplats; - } -}; -_PackedSplats.getEmptyArray = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_PackedSplats.programTemplate = null; -_PackedSplats.generatorProgram = /* @__PURE__ */ new WeakMap(); -_PackedSplats.fullScreenQuad = new FullScreenQuad( - new THREE.RawShaderMaterial({ visible: false }) -); -_PackedSplats.emptyUint32x4 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 4); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGBAIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RGBA32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -_PackedSplats.emptyUint32x2 = (() => { - const { width, height, depth, maxSplats } = getTextureSize(1); - const emptyArray = new Uint32Array(maxSplats * 2); - const texture2 = new THREE.DataArrayTexture( - emptyArray, - width, - height, - depth - ); - texture2.format = THREE.RGIntegerFormat; - texture2.type = THREE.UnsignedIntType; - texture2.internalFormat = "RG32UI"; - texture2.needsUpdate = true; - return texture2; -})(); -let PackedSplats = _PackedSplats; -class DynoPackedSplats extends DynoUniform { - constructor({ packedSplats } = {}) { - super({ - key: "packedSplats", - type: TPackedSplats, - globals: () => [definePackedSplats], - value: { - textureArray: PackedSplats.getEmptyArray, - numSplats: 0, - rgbMinMaxLnScaleMinMax: new THREE.Vector4( - 0, - 1, - LN_SCALE_MIN, - LN_SCALE_MAX - ), - lodOpacity: false - }, - update: (value) => { - var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; - value.textureArray = ((_a2 = this.packedSplats) == null ? void 0 : _a2.getTexture()) ?? PackedSplats.getEmptyArray; - value.numSplats = ((_b2 = this.packedSplats) == null ? void 0 : _b2.numSplats) ?? 0; - value.rgbMinMaxLnScaleMinMax.set( - ((_d = (_c = this.packedSplats) == null ? void 0 : _c.splatEncoding) == null ? void 0 : _d.rgbMin) ?? 0, - ((_f = (_e = this.packedSplats) == null ? void 0 : _e.splatEncoding) == null ? void 0 : _f.rgbMax) ?? 1, - ((_h = (_g = this.packedSplats) == null ? void 0 : _g.splatEncoding) == null ? void 0 : _h.lnScaleMin) ?? LN_SCALE_MIN, - ((_j = (_i = this.packedSplats) == null ? void 0 : _i.splatEncoding) == null ? void 0 : _j.lnScaleMax) ?? LN_SCALE_MAX - ); - value.lodOpacity = ((_l = (_k = this.packedSplats) == null ? void 0 : _k.splatEncoding) == null ? void 0 : _l.lodOpacity) ?? false; - return value; + const superPixels = this.superPixels; + await this.renderer.readRenderTargetPixelsAsync( + this.target, + 0, + 0, + width, + height, + superPixels + ); + const { superXY } = this; + if (superXY === 1) { + return superPixels; + } + const subWidth = width / superXY; + const subHeight = height / superXY; + const subSize = subWidth * subHeight * 4; + if (!this.targetPixels || this.targetPixels.length < subSize) { + this.targetPixels = new Uint8Array(subSize); + } + const targetPixels = this.targetPixels; + const super2 = superXY * superXY; + for (let y = 0; y < subHeight; y++) { + const row = y * subWidth; + for (let x = 0; x < subWidth; x++) { + const superCol = x * superXY; + let r = 0; + let g = 0; + let b = 0; + let a = 0; + for (let sy = 0; sy < superXY; sy++) { + const superRow = (y * superXY + sy) * width; + for (let sx = 0; sx < superXY; sx++) { + const superIndex = (superRow + superCol + sx) * 4; + r += superPixels[superIndex]; + g += superPixels[superIndex + 1]; + b += superPixels[superIndex + 2]; + a += superPixels[superIndex + 3]; + } + } + const pixelIndex = (row + x) * 4; + targetPixels[pixelIndex] = r / super2; + targetPixels[pixelIndex + 1] = g / super2; + targetPixels[pixelIndex + 2] = b / super2; + targetPixels[pixelIndex + 3] = a / super2; } - }); - this.packedSplats = packedSplats; + } + return targetPixels; } -} -const defineEvalPackedSH1 = unindent(` - vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { - // Extract sint7 values packed into 2 x uint32 - vec3 sh1_0 = vec3(ivec3( - int(packedData.x << 25u) >> 25, - int(packedData.x << 18u) >> 25, - int(packedData.x << 11u) >> 25 - )); - vec3 sh1_1 = vec3(ivec3( - int(packedData.x << 4u) >> 25, - int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, - int(packedData.y << 22u) >> 25 - )); - vec3 sh1_2 = vec3(ivec3( - int(packedData.y << 15u) >> 25, - int(packedData.y << 8u) >> 25, - int(packedData.y << 1u) >> 25 - )); - - vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - return rgb * (sh1Max / 63.0); + async renderReadTarget({ + scene, + camera + }) { + this.renderTarget({ scene, camera }); + return this.readTarget(); } -`); -const defineEvalPackedSH2 = unindent(` - vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { - // Extract sint8 values packed into 4 x uint32 - vec3 sh2_0 = vec3(ivec3( - int(packedData.x << 24u) >> 24, - int(packedData.x << 16u) >> 24, - int(packedData.x << 8u) >> 24 - )); - vec3 sh2_1 = vec3(ivec3( - int(packedData.x) >> 24, - int(packedData.y << 24u) >> 24, - int(packedData.y << 16u) >> 24 - )); - vec3 sh2_2 = vec3(ivec3( - int(packedData.y << 8u) >> 24, - int(packedData.y) >> 24, - int(packedData.z << 24u) >> 24 - )); - vec3 sh2_3 = vec3(ivec3( - int(packedData.z << 16u) >> 24, - int(packedData.z << 8u) >> 24, - int(packedData.z) >> 24 - )); - vec3 sh2_4 = vec3(ivec3( - int(packedData.w << 24u) >> 24, - int(packedData.w << 16u) >> 24, - int(packedData.w << 8u) >> 24 - )); - - vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - return rgb * (sh2Max / 127.0); + // Renders out the scene to a cube map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces. + async renderCubeMap({ + scene, + worldCenter, + size = 256, + near = 0.1, + far = 1e3, + hideObjects = [], + update = true, + filter = false + }) { + if (!_SparkRenderer.cubeRender || _SparkRenderer.cubeRender.target.width !== size || _SparkRenderer.cubeRender.near !== near || _SparkRenderer.cubeRender.far !== far) { + if (_SparkRenderer.cubeRender) { + _SparkRenderer.cubeRender.target.dispose(); + } + const target2 = new THREE.WebGLCubeRenderTarget(size, { + format: THREE.RGBAFormat, + type: THREE.UnsignedByteType, + generateMipmaps: filter, + minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter, + magFilter: THREE.LinearFilter, + colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace + }); + const cubeCamera2 = new THREE.CubeCamera(near, far, target2); + _SparkRenderer.cubeRender = { target: target2, cubeCamera: cubeCamera2, near, far }; + } + const { target, cubeCamera } = _SparkRenderer.cubeRender; + cubeCamera.position.copy(worldCenter); + const objectVisibility = /* @__PURE__ */ new Map(); + for (const object of hideObjects) { + objectVisibility.set(object, object.visible); + object.visible = false; + } + if (update) { + const tempCamera = new THREE.Camera(); + tempCamera.position.copy(worldCenter); + await this.update({ scene, camera: tempCamera }); + } + try { + _SparkRenderer.sparkOverride = this; + cubeCamera.update(this.renderer, scene); + } finally { + _SparkRenderer.sparkOverride = void 0; + } + for (const [object, visible] of objectVisibility.entries()) { + object.visible = visible; + } + return target.texture; } -`); -const defineEvalPackedSH3 = unindent(` - vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { - // Extract sint6 values packed into 4 x uint32 - vec3 sh3_0 = vec3(ivec3( - int(packedData.x << 26u) >> 26, - int(packedData.x << 20u) >> 26, - int(packedData.x << 14u) >> 26 - )); - vec3 sh3_1 = vec3(ivec3( - int(packedData.x << 8u) >> 26, - int(packedData.x << 2u) >> 26, - int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 - )); - vec3 sh3_2 = vec3(ivec3( - int(packedData.y << 22u) >> 26, - int(packedData.y << 16u) >> 26, - int(packedData.y << 10u) >> 26 - )); - vec3 sh3_3 = vec3(ivec3( - int(packedData.y << 4u) >> 26, - int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, - int(packedData.z << 24u) >> 26 - )); - vec3 sh3_4 = vec3(ivec3( - int(packedData.z << 18u) >> 26, - int(packedData.z << 12u) >> 26, - int(packedData.z << 6u) >> 26 - )); - vec3 sh3_5 = vec3(ivec3( - int(packedData.z) >> 26, - int(packedData.w << 26u) >> 26, - int(packedData.w << 20u) >> 26 - )); - vec3 sh3_6 = vec3(ivec3( - int(packedData.w << 14u) >> 26, - int(packedData.w << 8u) >> 26, - int(packedData.w << 2u) >> 26 - )); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); - return rgb * (sh3Max / 31.0); + async readCubeTargets() { + if (!_SparkRenderer.cubeRender) { + throw new Error("No cube render"); + } + const textures = _SparkRenderer.cubeRender.target.texture; + const promises = []; + const buffers = []; + for (let i = 0; i < textures.images.length; ++i) { + const { width, height } = textures.images[i]; + const byteSize = width * height * 4; + const readback = new Uint8Array(byteSize); + buffers.push(readback); + const promise = this.renderer.readRenderTargetPixelsAsync( + _SparkRenderer.cubeRender.target, + 0, + 0, + width, + height, + readback, + i + ); + promises.push(promise); + } + await Promise.all(promises); + return buffers; + } + // Renders out the scene to an environment map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces, + // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture + // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. + async renderEnvMap({ + scene, + worldCenter, + size = 256, + near = 0.1, + far = 1e3, + hideObjects = [], + update = true + }) { + var _a2; + const cubeTexture = await this.renderCubeMap({ + scene, + worldCenter, + size, + near, + far, + hideObjects, + update, + filter: true + }); + if (!_SparkRenderer.pmrem) { + _SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer); + } + return (_a2 = _SparkRenderer.pmrem) == null ? void 0 : _a2.fromCubemap(cubeTexture).texture; } -`); -function evaluatePackedSH({ - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax -}) { - return new Dyno({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3Texture: "usampler2DArray", - shMax: "vec3" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord, - viewDir, - numSh, - sh1Texture, - sh2Texture, - sh3Texture, - shMax - }, - globals: () => [ - defineEvalPackedSH1, - defineEvalPackedSH2, - defineEvalPackedSH3 - ], - statements: ({ inputs, outputs }) => { - const lines = ["vec3 rgb = vec3(0.0);"]; - if (inputs.sh1Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 1) { - vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x); - rgb += sh1Rgb; - `) - ); - if (inputs.sh2Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 2) { - vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y); - rgb += sh2Rgb; - `) - ); - if (inputs.sh3Texture) { - lines.push( - ...unindentLines(` - if (${inputs.numSh} >= 3) { - vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z); - rgb += sh3Rgb; - } - `) - ); + // Utility function to recursively set the envMap property for any + // THREE.MeshStandardMaterial within the subtree of root. + recurseSetEnvMap(root, envMap) { + root.traverse((node) => { + if (node instanceof THREE.Mesh) { + if (Array.isArray(node.material)) { + for (const material of node.material) { + if (material instanceof THREE.MeshStandardMaterial) { + material.envMap = envMap; + } + } + } else { + if (node.material instanceof THREE.MeshStandardMaterial) { + node.material.envMap = envMap; } - lines.push("}"); } - lines.push("}"); } - lines.push(`${outputs.rgb} = rgb;`); - return lines; + }); + } + async getLodTreeLevel(splats, level, pageColoring = false) { + var _a2, _b2; + const instance = this.lodInstances.get(splats); + if (!instance) { + return null; } - }).outputs; + const result = await this.ensureLodWorker().exclusive(async (worker) => { + return await worker.call("getLodTreeLevel", { + lodId: instance.lodId, + level + }); + }); + if ((_a2 = splats.packedSplats) == null ? void 0 : _a2.lodSplats) { + const newSplats = splats.packedSplats.lodSplats.extractSplats( + result.indices, + pageColoring + ); + return new SplatMesh({ packedSplats: newSplats }); + } + if ((_b2 = splats.extSplats) == null ? void 0 : _b2.lodSplats) { + const newSplats = splats.extSplats.lodSplats.extractSplats( + result.indices, + pageColoring + ); + return new SplatMesh({ extSplats: newSplats }); + } + throw new Error( + "Only LoD-enabled PackedSplats and ExtSplats are supported" + ); + } + get premultipliedAlpha() { + return this.material.premultipliedAlpha; + } + set premultipliedAlpha(value) { + if (this.material.premultipliedAlpha !== value) { + this.material.premultipliedAlpha = value; + this.material.needsUpdate = true; + } + } +}; +_SparkRenderer.emptyOrdering = (() => { + const numIndices = 4 * 4096 * 1; + const emptyArray = new Uint32Array(numIndices); + const texture2 = new THREE.DataTexture(emptyArray, 4096, 1); + texture2.format = THREE.RGBAIntegerFormat; + texture2.type = THREE.UnsignedIntType; + texture2.internalFormat = "RGBA32UI"; + texture2.needsUpdate = true; + return texture2; +})(); +_SparkRenderer.cubeRender = null; +_SparkRenderer.pmrem = null; +let SparkRenderer = _SparkRenderer; +function checkIsXRRenderTarget(renderTarget) { + return renderTarget == null ? void 0 : renderTarget.isXRRenderTarget; } -const _OldSparkViewpoint = class _OldSparkViewpoint { - constructor(options) { - this.lastTime = null; - this.encodeLinear = false; - this.superXY = 1; - this.display = null; - this.sorting = null; - this.pending = null; - this.sortingCheck = false; - this.readback16 = new Uint16Array(0); - this.readback32 = new Uint32Array(0); - this.spark = options.spark; - this.camera = options.camera; - this.viewToWorld = options.viewToWorld ?? new THREE.Matrix4(); - if (options.target) { - const { width, height, doubleBuffer } = options.target; - const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1)); - this.superXY = superXY; - if (width * superXY > 8192 || height * superXY > 8192) { - throw new Error("Target size too large"); +const PLY_PROPERTY_TYPES = [ + "char", + "uchar", + "short", + "ushort", + "int", + "uint", + "float", + "double" +]; +const _PlyReader = class _PlyReader { + // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet + constructor({ fileBytes }) { + this.header = ""; + this.littleEndian = true; + this.elements = {}; + this.comments = []; + this.data = null; + this.numSplats = 0; + this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes; + } + // Identify and parse the PLY text header (assumed to be <64KB in size). + // this.elements will contain all the elements in the file, typically + // "vertex" contains the Gsplat data. + async parseHeader() { + const bufferStream = new ReadableStream({ + start: (controller) => { + controller.enqueue(this.fileBytes.slice(0, 65536)); + controller.close(); } - this.target = new THREE.WebGLRenderTarget( - width * superXY, - height * superXY, - { - format: THREE.RGBAFormat, - type: THREE.UnsignedByteType, - colorSpace: THREE.SRGBColorSpace + }); + const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader(); + this.header = ""; + const headerTerminator = "end_header\n"; + while (true) { + const { value, done } = await decoder.read(); + if (done) { + throw new Error("Failed to read header"); + } + this.header += value; + const endHeader = this.header.indexOf(headerTerminator); + if (endHeader >= 0) { + this.header = this.header.slice(0, endHeader + headerTerminator.length); + break; + } + } + const headerLen = new TextEncoder().encode(this.header).length; + this.data = new DataView(this.fileBytes.buffer, headerLen); + this.elements = {}; + let curElement = null; + this.comments = []; + this.header.trim().split("\n").forEach((line, lineIndex) => { + const trimmedLine = line.trim(); + if (lineIndex === 0) { + if (trimmedLine !== "ply") { + throw new Error("Invalid PLY header"); } - ); - if (doubleBuffer) { - this.back = new THREE.WebGLRenderTarget( - width * superXY, - height * superXY, - { - format: THREE.RGBAFormat, - type: THREE.UnsignedByteType, - colorSpace: THREE.SRGBColorSpace + return; + } + if (trimmedLine.length === 0) { + return; + } + const fields = trimmedLine.split(" "); + switch (fields[0]) { + case "format": + if (fields[1] === "binary_little_endian") { + this.littleEndian = true; + } else if (fields[1] === "binary_big_endian") { + this.littleEndian = false; + } else { + throw new Error(`Unsupported PLY format: ${fields[1]}`); + } + if (fields[2] !== "1.0") { + throw new Error(`Unsupported PLY version: ${fields[2]}`); + } + break; + case "end_header": + break; + case "comment": + this.comments.push(trimmedLine.slice("comment ".length)); + break; + case "element": { + const name = fields[1]; + curElement = { + name, + count: Number.parseInt(fields[2]), + properties: {} + }; + this.elements[name] = curElement; + break; + } + case "property": + if (curElement == null) { + throw new Error("Property must be inside an element"); } - ); + if (fields[1] === "list") { + curElement.properties[fields[4]] = { + isList: true, + type: fields[3], + countType: fields[2] + }; + } else { + curElement.properties[fields[2]] = { + isList: false, + type: fields[1] + }; + } + break; } - this.encodeLinear = true; - } - this.onTextureUpdated = options.onTextureUpdated; - this.sortRadial = options.sortRadial ?? true; - this.sortDistance = options.sortDistance; - this.sortCoorient = options.sortCoorient; - this.depthBias = options.depthBias; - this.sort360 = options.sort360; - this.sort32 = options.sort32; - this.stochastic = options.stochastic ?? false; - this.orderingFreelist = new FreeList({ - allocate: (maxSplats) => new Uint32Array(maxSplats), - valid: (ordering, maxSplats) => ordering.length === maxSplats }); - this.autoUpdate = false; - this.setAutoUpdate(options.autoUpdate ?? false); - } - // Call this when you are done with the SparkViewpoint and want to - // free up its resources (GPU targets, pixel buffers, etc.) - dispose() { - var _a2; - this.setAutoUpdate(false); - if (this.target) { - this.target.dispose(); - this.target = void 0; - } - if (this.back) { - this.back.dispose(); - this.back = void 0; - } - if (this.display) { - this.spark.releaseAccumulator(this.display.accumulator); - this.display.geometry.dispose(); - this.display = null; - } - if ((_a2 = this.pending) == null ? void 0 : _a2.accumulator) { - this.spark.releaseAccumulator(this.pending.accumulator); - this.pending = null; - } - } - // Use this function to change whether this viewpoint will auto-update - // its sort order whenever the attached SparkRenderer updates the Gsplats. - // Turn this on or off depending on whether you expect to do renders from - // this viewpoint most frames. - setAutoUpdate(autoUpdate) { - if (!this.autoUpdate && autoUpdate) { - this.spark.autoViewpoints.push(this); - } else if (this.autoUpdate && !autoUpdate) { - this.spark.autoViewpoints = this.spark.autoViewpoints.filter( - (v) => v !== this - ); + if (this.elements.vertex) { + this.numSplats = this.elements.vertex.count; } - this.autoUpdate = autoUpdate; } - // See below async prepareRenderPixels() for explanation of parameters. - // Awaiting this method updates the Gsplats in the scene and performs a sort of the - // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget() - // call in the same tick. - async prepare({ - scene, - camera, - viewToWorld, - update, - forceOrigin - }) { - if (viewToWorld) { - this.viewToWorld = viewToWorld; - } else { - this.camera = camera ?? this.camera; - if (this.camera) { - this.camera.updateMatrixWorld(); - this.viewToWorld = this.camera.matrixWorld.clone(); - } + parseData(elementCallback) { + let offset = 0; + const data = this.data; + if (data == null) { + throw new Error("No data to parse"); } - while (update ?? true) { - const originToWorld = forceOrigin ? this.viewToWorld : this.spark.matrixWorld; - const updated = this.spark.updateInternal({ scene, originToWorld }); - if (updated) { - break; + for (const elementName in this.elements) { + const element = this.elements[elementName]; + const { count, properties } = element; + const item = createEmptyItem(properties); + const parseFn = createParseFn(properties, this.littleEndian); + const callback = elementCallback(element) ?? (() => { + }); + for (let index = 0; index < count; index++) { + offset = parseFn(data, offset, item); + callback(index, item); } - await new Promise((resolve) => setTimeout(resolve, 10)); - } - const accumulator = this.spark.active; - accumulator.refCount += 1; - await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld }); - this.spark.releaseAccumulator(accumulator); - } - // Render out the viewpoint to the view target RGBA buffer. - // Swaps buffers if doubleBuffer: true was set. - // Calls onTextureUpdated(texture) with the resulting texture. - renderTarget({ - scene, - camera - }) { - var _a2; - const target = this.back ?? this.target; - if (!target) { - throw new Error("Must initialize SparkViewpoint with target"); - } - camera = camera ?? this.camera; - if (!camera) { - throw new Error("Must provide camera"); - } - if (camera instanceof THREE.PerspectiveCamera) { - const newCam = new THREE.PerspectiveCamera().copy(camera, false); - newCam.aspect = target.width / target.height; - newCam.updateProjectionMatrix(); - camera = newCam; - } - this.viewToWorld = camera.matrixWorld.clone(); - const previousTarget = this.spark.renderer.getRenderTarget(); - try { - this.spark.renderer.setRenderTarget(target); - this.spark.prepareViewpoint(this); - this.spark.renderer.render(scene, camera); - } finally { - this.spark.prepareViewpoint(this.spark.defaultView); - this.spark.renderer.setRenderTarget(previousTarget); } - if (target !== this.target) { - [this.target, this.back] = [this.back, this.target]; - } - (_a2 = this.onTextureUpdated) == null ? void 0 : _a2.call(this, target.texture); } - // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). If superXY was set greater than 1 then - // downsampling is performed in the target pixel array with simple averaging - // to derive the returned pixel values. Subsequent calls to this.readTarget() - // will reuse the same buffers to minimize memory allocations. - async readTarget() { - if (!this.target) { - throw new Error("Must initialize SparkViewpoint with target"); - } - const { width, height } = this.target; - const byteSize = width * height * 4; - if (!this.superPixels || this.superPixels.length < byteSize) { - this.superPixels = new Uint8Array(byteSize); - } - await this.spark.renderer.readRenderTargetPixelsAsync( - this.target, - 0, - 0, - width, - height, - this.superPixels - ); - const { superXY } = this; - if (superXY === 1) { - return this.superPixels; + // Parse all the Gsplat data in the PLY file in go, invoking the given + // callbacks for each Gsplat. + parseSplats(splatCallback, shCallback) { + if (this.elements.vertex == null) { + throw new Error("No vertex element found"); } - const subWidth = width / superXY; - const subHeight = height / superXY; - const subSize = subWidth * subHeight * 4; - if (!this.pixels || this.pixels.length < subSize) { - this.pixels = new Uint8Array(subSize); + let isSuperSplat = false; + const ssChunks = []; + let numSh = 0; + let sh1Props = []; + let sh2Props = []; + let sh3Props = []; + let sh1 = void 0; + let sh2 = void 0; + let sh3 = void 0; + function prepareSh() { + const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh]; + sh1Props = new Array(3).fill(null).flatMap((_, k) => [0, 1, 2].map((_2, d) => k + d * num_f_rest / 3)); + sh2Props = new Array(5).fill(null).flatMap( + (_, k) => [0, 1, 2].map((_2, d) => 3 + k + d * num_f_rest / 3) + ); + sh3Props = new Array(7).fill(null).flatMap( + (_, k) => [0, 1, 2].map((_2, d) => 8 + k + d * num_f_rest / 3) + ); + sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0; + sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0; + sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0; } - const { superPixels, pixels } = this; - const super2 = superXY * superXY; - for (let y = 0; y < subHeight; y++) { - const row = y * subWidth; - for (let x = 0; x < subWidth; x++) { - const superCol = x * superXY; - let r = 0; - let g = 0; - let b = 0; - let a = 0; - for (let sy = 0; sy < superXY; sy++) { - const superRow = (y * superXY + sy) * this.target.width; - for (let sx = 0; sx < superXY; sx++) { - const superIndex = (superRow + superCol + sx) * 4; - r += superPixels[superIndex]; - g += superPixels[superIndex + 1]; - b += superPixels[superIndex + 2]; - a += superPixels[superIndex + 3]; - } - } - const pixelIndex = (row + x) * 4; - pixels[pixelIndex] = r / super2; - pixels[pixelIndex + 1] = g / super2; - pixels[pixelIndex + 2] = b / super2; - pixels[pixelIndex + 3] = a / super2; - } - } - return pixels; - } - // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene - // and any camera/viewToWorld viewpoint overrides. By default update is true, - // which triggers its SparkRenderer to check and potentially update the Gsplats. - // Setting update to false disables this and sorts the Gsplats as they are. - // Setting forceOrigin (default: false) to true forces the view update to - // recalculate the splats with this view origin, potentially altering any - // view-dependent effects. If you expect view-dependent effects to play a role - // in the rendering quality, enable this. - // - // Underneath, prepareRenderPixels() simply calls await this.prepare(...), - // this.renderTarget(...), and finally returns the result this.readTarget(), - // a Promise to a Uint8Array with RGBA values for all the pixels (potentially - // downsampled if the superXY parameter was used). These steps can also be called - // manually, for example if you need to alter the scene before and after - // this.renderTarget(...) to hide UI elements from being rendered. - async prepareRenderPixels({ - scene, - camera, - viewToWorld, - update, - forceOrigin - }) { - await this.prepare({ scene, camera, viewToWorld, update, forceOrigin }); - this.renderTarget({ scene, camera }); - return this.readTarget(); - } - // This is called automatically by SparkRenderer, there is no need to call it! - // The method cannot be private because then SparkRenderer would - // not be able to call it. - autoPoll({ accumulator }) { - var _a2, _b2, _c; - if (this.camera) { - this.camera.updateMatrixWorld(); - this.viewToWorld = this.camera.matrixWorld.clone(); - } - let needsSort = false; - let displayed = false; - if (!this.display) { - needsSort = true; - } else if (accumulator) { - needsSort = true; - const { mappingVersion } = this.display.accumulator; - if (accumulator.mappingVersion === mappingVersion) { - accumulator.refCount += 1; - this.spark.releaseAccumulator(this.display.accumulator); - this.display.accumulator = accumulator; - this.display.viewToWorld.copy(this.viewToWorld); - displayed = true; - if (this.spark.viewpoint === this) { - this.spark.prepareViewpoint(this); - } + function ssShCallback(index, item) { + if (!sh1) { + throw new Error("Missing sh1"); } - } - const latestView = ((_a2 = this.sorting) == null ? void 0 : _a2.viewToWorld) ?? ((_b2 = this.display) == null ? void 0 : _b2.viewToWorld); - if (latestView && !withinCoorientDist({ - matrix1: this.viewToWorld, - matrix2: latestView, - // By default update sort each 1 cm - maxDistance: this.sortDistance ?? 0.01, - // By default for radial sort, update for intermittent movement so that - // we bring back splats culled by being behind the camera. - // For depth sort, small rotations can change sort order a lot, so - // update sort for even small rotations. - minCoorient: this.sortCoorient ?? this.sortRadial ? 0.99 : 0.999 - })) { - needsSort = true; - } - if (!needsSort) { - return; - } - if (accumulator) { - accumulator.refCount += 1; - } - if ((_c = this.pending) == null ? void 0 : _c.accumulator) { - this.spark.releaseAccumulator(this.pending.accumulator); - } - this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed }; - this.driveSort(); - } - async driveSort() { - var _a2; - while (true) { - if (this.sorting || !this.pending) { - return; + const sh = item.f_rest; + for (let i = 0; i < sh1Props.length; i++) { + sh1[i] = sh[sh1Props[i]] * 8 / 255 - 4; } - const { viewToWorld, displayed } = this.pending; - let accumulator = this.pending.accumulator; - if (!accumulator) { - accumulator = ((_a2 = this.display) == null ? void 0 : _a2.accumulator) ?? this.spark.active; - accumulator.refCount += 1; + if (sh2) { + for (let i = 0; i < sh2Props.length; i++) { + sh2[i] = sh[sh2Props[i]] * 8 / 255 - 4; + } } - this.pending = null; - if (!accumulator) { - throw new Error("No accumulator to sort"); + if (sh3) { + for (let i = 0; i < sh3Props.length; i++) { + sh3[i] = sh[sh3Props[i]] * 8 / 255 - 4; + } } - this.sorting = { viewToWorld }; - await this.sortUpdate({ accumulator, viewToWorld, displayed }); - this.sorting = null; - this.spark.releaseAccumulator(accumulator); + shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3); } - } - async sortUpdate({ - accumulator, - viewToWorld, - displayed = false - }) { - if (this.sortingCheck) { - throw new Error("Only one sort at a time"); - } - this.sortingCheck = true; - accumulator = accumulator ?? this.spark.active; - const { numSplats, maxSplats } = accumulator.splats; - let activeSplats = 0; - let ordering = this.orderingFreelist.alloc(maxSplats); - if (this.stochastic) { - activeSplats = numSplats; - for (let i = 0; i < numSplats; ++i) { - ordering[i] = i; - } - } else if (numSplats > 0) { + function initSuperSplat(element) { const { - reader, - doubleSortReader, - sort32Reader, - dynoSortRadial, - dynoOrigin, - dynoDirection, - dynoDepthBias, - dynoSort360, - dynoSplats - } = _OldSparkViewpoint.makeSorter(); - const sort32 = this.sort32 ?? false; - let readback; - if (sort32) { - this.readback32 = reader.ensureBuffer(maxSplats, this.readback32); - readback = this.readback32; - } else { - const halfMaxSplats = Math.ceil(maxSplats / 2); - this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16); - readback = this.readback16; - } - const worldToOrigin = accumulator.toWorld.clone().invert(); - const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin); - dynoSortRadial.value = this.sort360 ? true : this.sortRadial; - dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin); - dynoDirection.value.set(0, 0, -1).applyMatrix4(viewToOrigin).sub(dynoOrigin.value).normalize(); - dynoDepthBias.value = this.depthBias ?? 1; - dynoSort360.value = this.sort360 ?? false; - dynoSplats.packedSplats = accumulator.splats; - const sortReader = sort32 ? sort32Reader : doubleSortReader; - const count = sort32 ? numSplats : Math.ceil(numSplats / 2); - await reader.renderReadback({ - renderer: this.spark.renderer, - reader: sortReader, - count, - readback - }); - const result = await withWorker(async (worker) => { - const rpcName = sort32 ? "sort32Splats" : "sortDoubleSplats"; - return worker.call(rpcName, { - maxSplats, - numSplats, - readback, - ordering - }); - }); - if (sort32) { - this.readback32 = result.readback; - } else { - this.readback16 = result.readback; + min_x, + min_y, + min_z, + max_x, + max_y, + max_z, + min_scale_x, + min_scale_y, + min_scale_z, + max_scale_x, + max_scale_y, + max_scale_z + } = element.properties; + if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z) { + throw new Error("Missing PLY chunk properties"); } - ordering = result.ordering; - activeSplats = result.activeSplats; - } - this.updateDisplay({ - accumulator, - viewToWorld, - ordering, - activeSplats, - displayed - }); - this.sortingCheck = false; - } - updateDisplay({ - accumulator, - viewToWorld, - ordering, - activeSplats, - displayed = false - }) { - if (!this.display) { - accumulator.refCount += 1; - this.display = { - accumulator, - viewToWorld, - geometry: new OldSplatGeometry(ordering, activeSplats) + isSuperSplat = true; + return (index, item) => { + const { + min_x: min_x2, + min_y: min_y2, + min_z: min_z2, + max_x: max_x2, + max_y: max_y2, + max_z: max_z2, + min_scale_x: min_scale_x2, + min_scale_y: min_scale_y2, + min_scale_z: min_scale_z2, + max_scale_x: max_scale_x2, + max_scale_y: max_scale_y2, + max_scale_z: max_scale_z2, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + } = item; + ssChunks.push({ + min_x: min_x2, + min_y: min_y2, + min_z: min_z2, + max_x: max_x2, + max_y: max_y2, + max_z: max_z2, + min_scale_x: min_scale_x2, + min_scale_y: min_scale_y2, + min_scale_z: min_scale_z2, + max_scale_x: max_scale_x2, + max_scale_y: max_scale_y2, + max_scale_z: max_scale_z2, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + }); }; - } else { - if (!displayed && accumulator !== this.display.accumulator) { - accumulator.refCount += 1; - this.spark.releaseAccumulator(this.display.accumulator); - this.display.accumulator = accumulator; - } - this.display.viewToWorld = viewToWorld; - const oldOrdering = this.display.geometry.ordering; - if (oldOrdering.length === ordering.length) { - this.display.geometry.update(ordering, activeSplats); - } else { - this.display.geometry.dispose(); - this.display.geometry = new OldSplatGeometry(ordering, activeSplats); + } + function decodeSuperSplat(element) { + if (shCallback && element.name === "sh") { + numSh = getNumSh(element.properties); + prepareSh(); + return ssShCallback; + } + if (element.name !== "vertex") { + return null; + } + const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties; + if (!packed_position || !packed_rotation || !packed_scale || !packed_color) { + throw new Error( + "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" + ); } - this.orderingFreelist.free(oldOrdering); - } - if (this.spark.viewpoint === this) { - this.spark.prepareViewpoint(this); - } - } - static makeSorter() { - if (!_OldSparkViewpoint.dynos) { - const dynoSortRadial = new DynoBool({ value: true }); - const dynoOrigin = new DynoVec3({ value: new THREE.Vector3() }); - const dynoDirection = new DynoVec3({ value: new THREE.Vector3() }); - const dynoDepthBias = new DynoFloat({ value: 1 }); - const dynoSort360 = new DynoBool({ value: false }); - const dynoSplats = new DynoPackedSplats(); - const reader = new Readback(); - const doubleSortReader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("No index"); - } - const sortParams = { - sortRadial: dynoSortRadial, - sortOrigin: dynoOrigin, - sortDirection: dynoDirection, - sortDepthBias: dynoDepthBias, - sort360: dynoSort360 - }; - const index2 = mul(index, dynoConst("int", 2)); - const gsplat0 = readPackedSplat(dynoSplats, index2); - const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams }); - const gsplat1 = readPackedSplat( - dynoSplats, - add(index2, dynoConst("int", 1)) - ); - const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams }); - const combined = combine({ - vectorType: "vec2", - x: metric0, - y: metric1 - }); - const rgba8 = uintToRgba8(packHalf2x16(combined)); - return { rgba8 }; - } - ); - const sort32Reader = dynoBlock( - { index: "int" }, - { rgba8: "vec4" }, - ({ index }) => { - if (!index) { - throw new Error("No index"); - } - const sortParams = { - sortRadial: dynoSortRadial, - sortOrigin: dynoOrigin, - sortDirection: dynoDirection, - sortDepthBias: dynoDepthBias, - sort360: dynoSort360 - }; - const gsplat = readPackedSplat(dynoSplats, index); - const metric = computeSortMetric({ gsplat, ...sortParams }); - const rgba8 = uintToRgba8(floatBitsToUint(metric)); - return { rgba8 }; + const SQRT2 = Math.sqrt(2); + return (index, item) => { + const chunk = ssChunks[index >>> 8]; + if (chunk == null) { + throw new Error("Missing PLY chunk"); } - ); - _OldSparkViewpoint.dynos = { - dynoSortRadial, - dynoOrigin, - dynoDirection, - dynoDepthBias, - dynoSort360, - dynoSplats, - reader, - doubleSortReader, - sort32Reader + const { + min_x, + min_y, + min_z, + max_x, + max_y, + max_z, + min_scale_x, + min_scale_y, + min_scale_z, + max_scale_x, + max_scale_y, + max_scale_z, + min_r, + min_g, + min_b, + max_r, + max_g, + max_b + } = chunk; + const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item; + const x = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x; + const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y; + const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z; + const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2; + const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2; + const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2; + const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2)); + const rOrder = packed_rotation2 >>> 30; + const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1; + const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2; + const quatZ = rOrder <= 2 ? r2 : rr; + const quatW = rOrder === 0 ? rr : r0; + const scaleX = Math.exp( + (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x + ); + const scaleY = Math.exp( + (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y + ); + const scaleZ = Math.exp( + (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z + ); + const r = (packed_color2 >>> 24 & 255) / 255 * ((max_r ?? 1) - (min_r ?? 0)) + (min_r ?? 0); + const g = (packed_color2 >>> 16 & 255) / 255 * ((max_g ?? 1) - (min_g ?? 0)) + (min_g ?? 0); + const b = (packed_color2 >>> 8 & 255) / 255 * ((max_b ?? 1) - (min_b ?? 0)) + (min_b ?? 0); + const opacity = (packed_color2 & 255) / 255; + splatCallback( + index, + x, + y, + z, + scaleX, + scaleY, + scaleZ, + quatX, + quatY, + quatZ, + quatW, + opacity, + r, + g, + b + ); }; } - return _OldSparkViewpoint.dynos; - } -}; -_OldSparkViewpoint.EMPTY_TEXTURE = new THREE.Texture(); -_OldSparkViewpoint.dynos = null; -let OldSparkViewpoint = _OldSparkViewpoint; -const defineComputeSortMetric = unindent(` - float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) { - if (!isGsplatActive(gsplat.flags)) { - return INFINITY; - } - - vec3 center = gsplat.center - sortOrigin; - float biasedDepth = dot(center, sortDirection) + sortDepthBias; - if (!sort360 && (biasedDepth <= 0.0)) { - return INFINITY; - } - - return sortRadial ? length(center) : biasedDepth; - } -`); -function computeSortMetric({ - gsplat, - sortRadial, - sortOrigin, - sortDirection, - sortDepthBias, - sort360 -}) { - return dyno$1({ - inTypes: { - gsplat: Gsplat, - sortRadial: "bool", - sortOrigin: "vec3", - sortDirection: "vec3", - sortDepthBias: "float", - sort360: "bool" - }, - outTypes: { metric: "float" }, - globals: () => [defineGsplat, defineComputeSortMetric], - inputs: { - gsplat, - sortRadial, - sortOrigin, - sortDirection, - sortDepthBias, - sort360 - }, - statements: ({ inputs, outputs }) => { - const { - gsplat: gsplat2, - sortRadial: sortRadial2, - sortOrigin: sortOrigin2, - sortDirection: sortDirection2, - sortDepthBias: sortDepthBias2, - sort360: sort3602 - } = inputs; - return unindentLines(` - ${outputs.metric} = computeSort(${gsplat2}, ${sortRadial2}, ${sortOrigin2}, ${sortDirection2}, ${sortDepthBias2}, ${sort3602}); - `); - } - }).outputs.metric; -} -class OldSplatAccumulator { - constructor() { - this.splats = new PackedSplats(); - this.toWorld = new THREE.Matrix4(); - this.mapping = []; - this.refCount = 0; - this.splatsVersion = -1; - this.mappingVersion = -1; - } - ensureGenerate(maxSplats) { - if (this.splats.ensureGenerate(maxSplats)) { - this.mapping = []; - } - } - // Generate all Gsplats from an array of generators - generateSplats({ - renderer, - modifier, - generators: generators2, - forceUpdate, - originToWorld - }) { - const mapping = this.mapping.reduce((map, record) => { - map.set(record.node, record); - return map; - }, /* @__PURE__ */ new Map()); - let updated = 0; - let numSplats = 0; - for (const { node, generator, version, base, count } of generators2) { - const current = mapping.get(node); - if (forceUpdate || generator !== (current == null ? void 0 : current.generator) || version !== (current == null ? void 0 : current.version) || base !== (current == null ? void 0 : current.base) || count !== (current == null ? void 0 : current.count)) { - if (generator && count > 0) { - const modGenerator = modifier.apply(generator); - try { - this.splats.generate({ - generator: modGenerator, - base, - count, - renderer - }); - } catch (error) { - node.generator = void 0; - node.generatorError = error; - } - updated += 1; - } + const elementCallback = (element) => { + if (element.name === "chunk") { + return initSuperSplat(element); + } + if (isSuperSplat) { + return decodeSuperSplat(element); + } + if (element.name !== "vertex") { + return null; } - numSplats = Math.max(numSplats, base + count); - } - this.splats.numSplats = numSplats; - this.toWorld.copy(originToWorld); - this.mapping = generators2; - return updated !== 0; - } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - hasCorrespondence(other) { - if (this.mapping.length !== other.mapping.length) { - return false; - } - return this.mapping.every(({ node, base, count }, i) => { const { - node: otherNode, - base: otherBase, - count: otherCount - } = other.mapping[i]; - return node === otherNode && base === otherBase && count === otherCount; - }); - } -} -const MAX_ACCUMULATORS = 5; -const _OldSparkRenderer = class _OldSparkRenderer extends THREE.Mesh { - constructor(options) { - const uniforms = _OldSparkRenderer.makeUniforms(); - const shaders2 = getShaders(); - const premultipliedAlpha = options.premultipliedAlpha ?? true; - const material = new THREE.ShaderMaterial({ - glslVersion: THREE.GLSL3, - vertexShader: shaders2.oldSplatVertex, - fragmentShader: shaders2.oldSplatFragment, - uniforms, - premultipliedAlpha, - transparent: true, - depthTest: true, - depthWrite: false, - side: THREE.DoubleSide - }); - super(EMPTY_GEOMETRY, material); - this.splatTexture = null; - this.autoViewpoints = []; - this.rotateToAccumulator = new DynoVec4({ value: new THREE.Quaternion() }); - this.translateToAccumulator = new DynoVec3({ value: new THREE.Vector3() }); - this.lastFrame = -1; - this.lastUpdateTime = null; - this.defaultCameras = []; - this.lastStochastic = null; - this.pendingUpdate = { - scene: null, - originToWorld: new THREE.Matrix4(), - timeoutId: -1 - }; - this.envViewpoint = null; - this.frustumCulled = false; - this.renderer = options.renderer; - this.material = material; - this.uniforms = uniforms; - const modifier = dynoBlock( - { gsplat: Gsplat }, - { gsplat: Gsplat }, - ({ gsplat }) => { - if (!gsplat) { - throw new Error("gsplat not defined"); - } - gsplat = transformGsplat(gsplat, { - rotate: this.rotateToAccumulator, - translate: this.translateToAccumulator - }); - return { gsplat }; + x, + y, + z, + scale_0, + scale_1, + scale_2, + rot_0, + rot_1, + rot_2, + rot_3, + opacity, + f_dc_0, + f_dc_1, + f_dc_2, + red, + green, + blue, + alpha + } = element.properties; + if (!x || !y || !z) { + throw new Error("Missing PLY properties: x, y, z"); } - ); - this.modifier = new SplatModifier(modifier); - this.premultipliedAlpha = premultipliedAlpha; - this.autoUpdate = options.autoUpdate ?? true; - this.preUpdate = options.preUpdate ?? false; - this.needsUpdate = false; - this.originDistance = options.originDistance ?? 1; - this.maxStdDev = options.maxStdDev ?? Math.sqrt(8); - this.minPixelRadius = options.minPixelRadius ?? 0; - this.maxPixelRadius = options.maxPixelRadius ?? 512; - this.minAlpha = options.minAlpha ?? 0.5 * (1 / 255); - this.enable2DGS = options.enable2DGS ?? false; - this.preBlurAmount = options.preBlurAmount ?? 0; - this.blurAmount = options.blurAmount ?? 0.3; - this.focalDistance = options.focalDistance ?? 0; - this.apertureAngle = options.apertureAngle ?? 0; - this.falloff = options.falloff ?? 1; - this.clipXY = options.clipXY ?? 1.4; - this.focalAdjustment = options.focalAdjustment ?? 1; - this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING }; - this.active = new OldSplatAccumulator(); - this.active.refCount = 1; - this.accumulatorCount = 1; - this.freeAccumulators = []; - for (let count = 0; count < 1; ++count) { - this.freeAccumulators.push(new OldSplatAccumulator()); - this.accumulatorCount += 1; - } - this.defaultView = new OldSparkViewpoint({ - ...options.view, - autoUpdate: true, - spark: this - }); - this.viewpoint = this.defaultView; - this.prepareViewpoint(this.viewpoint); - this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock(); - } - static makeUniforms() { - const uniforms = { - // Size of render viewport in pixels - renderSize: { value: new THREE.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // Total number of Gsplats in packedSplats to render - numSplats: { value: 0 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new THREE.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new THREE.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.5 * (1 / 255) }, - // Enable stochastic splat rendering - stochastic: { value: false }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: false }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Enable splat texture rendering - splatTexEnable: { value: false }, - // Splat texture to render - splatTexture: { type: "t", value: _OldSparkRenderer.EMPTY_SPLAT_TEXTURE }, - // Splat texture UV transform (multiply) - splatTexMul: { value: new THREE.Matrix2() }, - // Splat texture UV transform (add) - splatTexAdd: { value: new THREE.Vector2() }, - // Splat texture near plane distance - splatTexNear: { value: 0.1 }, - // Splat texture far plane distance - splatTexFar: { value: 1e3 }, - // Splat texture mid plane distance, or 0.0 to disable - splatTexMid: { value: 0 }, - // Gsplat collection to render - packedSplats: { type: "t", value: PackedSplats.getEmptyArray }, - // Splat encoding ranges - rgbMinMaxLnScaleMinMax: { value: new THREE.Vector4() }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: false }, - // Debug flag that alternates each frame - debugFlag: { value: false } + const hasScales = scale_0 && scale_1 && scale_2; + const hasRots = rot_0 && rot_1 && rot_2 && rot_3; + const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1; + const redDiv = red != null ? FIELD_SCALE[red.type] : 1; + const greenDiv = green != null ? FIELD_SCALE[green.type] : 1; + const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1; + numSh = getNumSh(element.properties); + prepareSh(); + return (index, item) => { + const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale; + const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale; + const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale; + const quatX = hasRots ? item.rot_1 : 0; + const quatY = hasRots ? item.rot_2 : 0; + const quatZ = hasRots ? item.rot_3 : 0; + const quatW = hasRots ? item.rot_0 : 1; + const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1; + const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1; + const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1; + const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1; + splatCallback( + index, + item.x, + item.y, + item.z, + scaleX, + scaleY, + scaleZ, + quatX, + quatY, + quatZ, + quatW, + op, + r, + g, + b + ); + if (shCallback && sh1) { + const sh = item.f_rest; + if (sh1) { + for (let i = 0; i < sh1Props.length; i++) { + sh1[i] = sh[sh1Props[i]]; + } + } + if (sh2) { + for (let i = 0; i < sh2Props.length; i++) { + sh2[i] = sh[sh2Props[i]]; + } + } + if (sh3) { + for (let i = 0; i < sh3Props.length; i++) { + sh3[i] = sh[sh3Props[i]]; + } + } + shCallback(index, sh1, sh2, sh3); + } + }; }; - return uniforms; - } - canAllocAccumulator() { - return this.freeAccumulators.length > 0 || this.accumulatorCount < MAX_ACCUMULATORS; + this.parseData(elementCallback); } - maybeAllocAccumulator() { - let accumulator = this.freeAccumulators.pop(); - if (accumulator === void 0) { - if (this.accumulatorCount >= MAX_ACCUMULATORS) { - return null; - } - accumulator = new OldSplatAccumulator(); - this.accumulatorCount += 1; + // Inject RGBA values into original PLY file, which can be used to modify + // the color/opacity of the Gsplats and write out the modified PLY file. + injectRgba(rgba) { + let offset = 0; + const data = this.data; + if (data == null) { + throw new Error("No parsed data"); } - accumulator.refCount = 1; - return accumulator; - } - releaseAccumulator(accumulator) { - accumulator.refCount -= 1; - if (accumulator.refCount === 0) { - this.freeAccumulators.push(accumulator); + if (rgba.length !== this.numSplats * 4) { + throw new Error("Invalid RGBA array length"); } - } - newViewpoint(options) { - return new OldSparkViewpoint({ ...options, spark: this }); - } - onBeforeRender(renderer, scene, camera) { - var _a2, _b2; - const time = this.time ?? this.clock.getElapsedTime(); - const deltaTime = time - (this.viewpoint.lastTime ?? time); - this.viewpoint.lastTime = time; - const frame = renderer.info.render.frame; - const isNewFrame = frame !== this.lastFrame; - this.lastFrame = frame; - const viewpoint = this.viewpoint; - if (viewpoint === this.defaultView) { - if (isNewFrame) { - if (!renderer.xr.isPresenting) { - this.defaultView.viewToWorld = camera.matrixWorld.clone(); - this.defaultCameras = [this.defaultView.viewToWorld]; - } else { - const cameras = renderer.xr.getCamera().cameras; - this.defaultCameras = cameras.map((camera2) => camera2.matrixWorld); - this.defaultView.viewToWorld = averageOriginToWorlds(this.defaultCameras) ?? new THREE.Matrix4(); + for (const elementName in this.elements) { + const element = this.elements[elementName]; + const { count, properties } = element; + const parsers = []; + let rgbaOffset = 0; + const isVertex = elementName === "vertex"; + if (isVertex) { + for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) { + if (!properties[name] || properties[name].type !== "float") { + throw new Error(`Can't injectRgba due to property: ${name}`); + } } } - if (this.autoUpdate) { - this.update({ scene, viewToWorld: this.defaultView.viewToWorld }); - } - } - if (isNewFrame) { - if (this.material.premultipliedAlpha !== this.premultipliedAlpha) { - this.material.premultipliedAlpha = this.premultipliedAlpha; - this.material.needsUpdate = true; - } - this.uniforms.time.value = time; - this.uniforms.deltaTime.value = deltaTime; - this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1; - if (viewpoint.display && viewpoint.stochastic) { - this.geometry.instanceCount = this.uniforms.numSplats.value; - } - } - if (viewpoint.target) { - this.uniforms.renderSize.value.set( - viewpoint.target.width, - viewpoint.target.height - ); - } else { - const renderSize = renderer.getDrawingBufferSize( - this.uniforms.renderSize.value - ); - if (renderSize.x === 1 && renderSize.y === 1) { - const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer; - if (baseLayer) { - renderSize.x = baseLayer.framebufferWidth; - renderSize.y = baseLayer.framebufferHeight; + for (const [propertyName, property] of Object.entries(properties)) { + if (!property.isList) { + if (isVertex) { + if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") { + const component = Number.parseInt( + propertyName.slice("f_dc_".length) + ); + parsers.push(() => { + const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1; + SET_FIELD[property.type]( + data, + offset, + this.littleEndian, + value + ); + }); + } else if (propertyName === "opacity") { + parsers.push(() => { + const value = Math.max( + -100, + Math.min( + 100, + -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1) + ) + ); + SET_FIELD[property.type]( + data, + offset, + this.littleEndian, + value + ); + }); + } + } + parsers.push(() => { + offset += FIELD_BYTES[property.type]; + }); + } else { + parsers.push(() => { + const length2 = PARSE_FIELD[property.countType]( + data, + offset, + this.littleEndian + ); + offset += FIELD_BYTES[property.countType]; + offset += length2 * FIELD_BYTES[property.type]; + }); } } - } - const typedCamera = camera; - this.uniforms.near.value = typedCamera.near; - this.uniforms.far.value = typedCamera.far; - this.uniforms.encodeLinear.value = viewpoint.encodeLinear; - this.uniforms.maxStdDev.value = this.maxStdDev; - this.uniforms.minPixelRadius.value = this.minPixelRadius; - this.uniforms.maxPixelRadius.value = this.maxPixelRadius; - this.uniforms.minAlpha.value = this.minAlpha; - this.uniforms.stochastic.value = viewpoint.stochastic; - this.uniforms.enable2DGS.value = this.enable2DGS; - this.uniforms.preBlurAmount.value = this.preBlurAmount; - this.uniforms.blurAmount.value = this.blurAmount; - this.uniforms.focalDistance.value = this.focalDistance; - this.uniforms.apertureAngle.value = this.apertureAngle; - this.uniforms.falloff.value = this.falloff; - this.uniforms.clipXY.value = this.clipXY; - this.uniforms.focalAdjustment.value = this.focalAdjustment; - if (this.lastStochastic !== !viewpoint.stochastic) { - this.lastStochastic = !viewpoint.stochastic; - this.material.transparent = !viewpoint.stochastic; - this.material.depthWrite = viewpoint.stochastic; - this.material.needsUpdate = true; - } - if (this.splatTexture) { - const { enable, texture: texture2, multiply, add: add2, near, far, mid } = this.splatTexture; - if (enable && texture2) { - this.uniforms.splatTexEnable.value = true; - this.uniforms.splatTexture.value = texture2; - if (multiply) { - this.uniforms.splatTexMul.value.fromArray(multiply.elements); - } else { - this.uniforms.splatTexMul.value.set( - 0.5 / this.maxStdDev, - 0, - 0, - 0.5 / this.maxStdDev - ); + for (let index = 0; index < count; index++) { + for (const parser of parsers) { + parser(); + } + if (isVertex) { + rgbaOffset += 4; } - this.uniforms.splatTexAdd.value.set((add2 == null ? void 0 : add2.x) ?? 0.5, (add2 == null ? void 0 : add2.y) ?? 0.5); - this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value; - this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value; - this.uniforms.splatTexMid.value = mid ?? 0; - } else { - this.uniforms.splatTexEnable.value = false; - this.uniforms.splatTexture.value = _OldSparkRenderer.EMPTY_SPLAT_TEXTURE; } + } + } +}; +_PlyReader.defaultPointScale = 1e-3; +let PlyReader = _PlyReader; +const SH_C0$1 = 0.28209479177387814; +const PARSE_FIELD = { + char: (data, offset, littleEndian) => { + return data.getInt8(offset); + }, + uchar: (data, offset, littleEndian) => { + return data.getUint8(offset); + }, + short: (data, offset, littleEndian) => { + return data.getInt16(offset, littleEndian); + }, + ushort: (data, offset, littleEndian) => { + return data.getUint16(offset, littleEndian); + }, + int: (data, offset, littleEndian) => { + return data.getInt32(offset, littleEndian); + }, + uint: (data, offset, littleEndian) => { + return data.getUint32(offset, littleEndian); + }, + float: (data, offset, littleEndian) => { + return data.getFloat32(offset, littleEndian); + }, + double: (data, offset, littleEndian) => { + return data.getFloat64(offset, littleEndian); + } +}; +const SET_FIELD = { + char: (data, offset, littleEndian, value) => { + data.setInt8(offset, value); + }, + uchar: (data, offset, littleEndian, value) => { + data.setUint8(offset, value); + }, + short: (data, offset, littleEndian, value) => { + data.setInt16(offset, value, littleEndian); + }, + ushort: (data, offset, littleEndian, value) => { + data.setUint16(offset, value, littleEndian); + }, + int: (data, offset, littleEndian, value) => { + data.setInt32(offset, value, littleEndian); + }, + uint: (data, offset, littleEndian, value) => { + data.setUint32(offset, value, littleEndian); + }, + float: (data, offset, littleEndian, value) => { + data.setFloat32(offset, value, littleEndian); + }, + double: (data, offset, littleEndian, value) => { + data.setFloat64(offset, value, littleEndian); + } +}; +const FIELD_BYTES = { + char: 1, + uchar: 1, + short: 2, + ushort: 2, + int: 4, + uint: 4, + float: 4, + double: 8 +}; +const FIELD_SCALE = { + char: 127, + uchar: 255, + short: 32767, + ushort: 65535, + int: 2147483647, + uint: 4294967295, + float: 1, + double: 1 +}; +const NUM_F_REST_TO_NUM_SH = { + 0: 0, + 9: 1, + 24: 2, + 45: 3 +}; +const NUM_SH_TO_NUM_F_REST = { + 0: 0, + 1: 9, + 2: 24, + 3: 45 +}; +const F_REST_REGEX = /^f_rest_([0-9]{1,2})$/; +function createEmptyItem(properties) { + const item = {}; + for (const [propertyName, property] of Object.entries(properties)) { + if (F_REST_REGEX.test(propertyName)) { + item.f_rest = new Array(getNumSh(properties)); } else { - this.uniforms.splatTexEnable.value = false; - this.uniforms.splatTexture.value = _OldSparkRenderer.EMPTY_SPLAT_TEXTURE; + item[propertyName] = property.isList ? [] : 0; } - const accumToWorld = ((_b2 = viewpoint.display) == null ? void 0 : _b2.accumulator.toWorld) ?? new THREE.Matrix4(); - const worldToCamera = camera.matrixWorld.clone().invert(); - const originToCamera = accumToWorld.clone().premultiply(worldToCamera); - originToCamera.decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new THREE.Vector3() - ); } - // Update the uniforms for the given viewpoint. - // Note that the client expects to be able to call render() at any point - // to update the canvas, so we must switch the viewpoint back to - // defaultView when we're finished. - prepareViewpoint(viewpoint) { - var _a2, _b2, _c, _d; - this.viewpoint = viewpoint ?? this.viewpoint; - if (this.viewpoint.display) { - const { accumulator, geometry } = this.viewpoint.display; - this.uniforms.numSplats.value = accumulator.splats.numSplats; - this.uniforms.packedSplats.value = accumulator.splats.getTexture(); - this.uniforms.rgbMinMaxLnScaleMinMax.value.set( - ((_a2 = accumulator.splats.splatEncoding) == null ? void 0 : _a2.rgbMin) ?? 0, - ((_b2 = accumulator.splats.splatEncoding) == null ? void 0 : _b2.rgbMax) ?? 1, - ((_c = accumulator.splats.splatEncoding) == null ? void 0 : _c.lnScaleMin) ?? LN_SCALE_MIN, - ((_d = accumulator.splats.splatEncoding) == null ? void 0 : _d.lnScaleMax) ?? LN_SCALE_MAX - ); - this.geometry = geometry; - this.material.transparent = !this.viewpoint.stochastic; - this.material.depthWrite = this.viewpoint.stochastic; - this.material.needsUpdate = true; - } else { - this.uniforms.numSplats.value = 0; - this.uniforms.packedSplats.value = PackedSplats.getEmptyArray; - this.geometry = EMPTY_GEOMETRY; - } + return item; +} +function createParseFn(properties, littleEndian) { + if (safeToCompile(properties)) { + return createCompiledParserFn(properties, littleEndian); } - // If spark.autoUpdate is false then you must manually call - // spark.update({ scene }) to have the scene Gsplats be re-generated. - update({ - scene, - viewToWorld - }) { - const originToWorld = this.matrixWorld; - if (this.preUpdate) { - this.updateInternal({ - scene, - originToWorld: originToWorld.clone(), - viewToWorld - }); - } else { - this.pendingUpdate.scene = scene; - this.pendingUpdate.originToWorld.copy(originToWorld); - if (this.pendingUpdate.timeoutId === -1) { - this.pendingUpdate.timeoutId = setTimeout(() => { - const { scene: scene2, originToWorld: originToWorld2 } = this.pendingUpdate; - this.pendingUpdate.scene = null; - this.pendingUpdate.timeoutId = -1; - const updated = this.updateInternal({ - scene: scene2, - originToWorld: originToWorld2, - viewToWorld - }); - if (updated) { - const gl = this.renderer.getContext(); - gl.flush(); - } - }, 1); - } - } + return createDynamicParserFn(properties, littleEndian); +} +const UNSAFE_EVAL_ALLOWED = (() => { + try { + new Function("return 42;"); + } catch (e) { + return false; } - updateInternal({ - scene, - originToWorld, - viewToWorld - }) { - var _a2; - if (!this.canAllocAccumulator()) { + return true; +})(); +const PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/; +function safeToCompile(properties) { + if (!UNSAFE_EVAL_ALLOWED) { + return false; + } + for (const [propertyName, property] of Object.entries(properties)) { + if (!PROPERTY_NAME_REGEX.test(propertyName)) { return false; } - if (!originToWorld) { - originToWorld = this.active.toWorld; - } - viewToWorld = viewToWorld ?? originToWorld.clone(); - const time = this.time ?? this.clock.getElapsedTime(); - const deltaTime = time - (this.lastUpdateTime ?? time); - this.lastUpdateTime = time; - const activeMapping = this.active.mapping.reduce((map, record) => { - map.set(record.node, record); - return map; - }, /* @__PURE__ */ new Map()); - const { generators: generators2, visibleGenerators, globalEdits } = this.compileScene(scene); - for (const object of generators2) { - (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, { - renderer: this.renderer, - object, - time, - deltaTime, - viewToWorld, - globalEdits - }); + if (property.isList && !PLY_PROPERTY_TYPES.includes(property.countType)) { + return false; } - const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid)); - for (const object of generators2) { - const current = activeMapping.get(object); - const isVisible = object.generator && visibleGenHash.has(object.uuid); - const numSplats = isVisible ? object.numSplats : 0; - if (this.needsUpdate || object.generator !== (current == null ? void 0 : current.generator) || numSplats !== (current == null ? void 0 : current.count)) { - object.updateVersion(); - } + if (!PLY_PROPERTY_TYPES.includes(property.type)) { + return false; } - const originUpdate = !withinCoorientDist({ - matrix1: originToWorld, - matrix2: this.active.toWorld, - maxDistance: this.originDistance - }); - const needsUpdate = this.needsUpdate || originUpdate || generators2.length !== activeMapping.size || generators2.some((g) => { - var _a3; - return g.version !== ((_a3 = activeMapping.get(g)) == null ? void 0 : _a3.version); - }); - this.needsUpdate = false; - let accumulator = null; - if (needsUpdate) { - accumulator = this.maybeAllocAccumulator(); - if (!accumulator) { - throw new Error("Unreachable"); - } - const originChanged = !withinCoorientDist({ - matrix1: originToWorld, - matrix2: accumulator.toWorld, - maxDistance: 1e-5, - minCoorient: 0.99999 - }); - const sorted = visibleGenerators.map((g, gIndex) => { - const lastGen = activeMapping.get(g); - return !lastGen ? [Number.POSITIVE_INFINITY, g.version, g] : ( - // Sort by version deltas then by previous ordering in the mapping, - // attempting to keep unchanging generators near the front - // to improve our chances of avoiding a re-generation. - [g.version - lastGen.version, lastGen.base, g] - ); - }).sort((a, b) => { - if (a[0] !== b[0]) { - return a[0] - b[0]; + } + return true; +} +function createCompiledParserFn(properties, littleEndian) { + const parserSrc = ["let list;"]; + for (const [propertyName, property] of Object.entries(properties)) { + const fRestMatch = propertyName.match(F_REST_REGEX); + if (fRestMatch) { + const fRestIndex = +fRestMatch[1]; + parserSrc.push( + /*js*/ + ` + item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; + ` + ); + } else if (!property.isList) { + parserSrc.push( + /*js*/ + ` + item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; + ` + ); + } else { + parserSrc.push( + /*js*/ + ` + list = item['${propertyName}']; + list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.countType]}; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian}); + offset += ${FIELD_BYTES[property.type]}; } - return a[1] - b[1]; - }); - const genOrder = sorted.map(([_version, _seq, g]) => g); - const splatCounts = genOrder.map((g) => g.numSplats); - const { maxSplats, mapping } = accumulator.splats.generateMapping(splatCounts); - const newGenerators = genOrder.map((node, gIndex) => { - const { base, count } = mapping[gIndex]; - return { - node, - generator: node.generator, - version: node.version, - base, - count - }; - }); - originToWorld.clone().invert().decompose( - this.translateToAccumulator.value, - this.rotateToAccumulator.value, - new THREE.Vector3() + ` ); - accumulator.ensureGenerate(maxSplats); - accumulator.splats.splatEncoding = { ...this.splatEncoding }; - accumulator.generateSplats({ - renderer: this.renderer, - modifier: this.modifier, - generators: newGenerators, - forceUpdate: originChanged, - originToWorld - }); - accumulator.splatsVersion = this.active.splatsVersion + 1; - const hasCorrespondence = accumulator.hasCorrespondence(this.active); - accumulator.mappingVersion = this.active.mappingVersion + (hasCorrespondence ? 0 : 1); - this.releaseAccumulator(this.active); - this.active = accumulator; - this.prepareViewpoint(); - } - setTimeout(() => { - for (const view of this.autoViewpoints) { - view.autoPoll({ accumulator: accumulator ?? void 0 }); - } - }, 1); - return true; + } } - compileScene(scene) { - const generators2 = []; - scene.traverse((node) => { - if (node instanceof SplatGenerator) { - generators2.push(node); - } - }); - const visibleGenerators = []; - scene.traverseVisible((node) => { - if (node instanceof SplatGenerator) { - visibleGenerators.push(node); - } - }); - const globalEdits = /* @__PURE__ */ new Set(); - scene.traverseVisible((node) => { - if (node instanceof SplatEdit) { - let ancestor = node.parent; - while (ancestor != null && !(ancestor instanceof SplatMesh)) { - ancestor = ancestor.parent; + parserSrc.push("return offset;"); + const fn = new Function( + "data", + "offset", + "item", + "PARSE_FIELD", + parserSrc.join("\n") + ); + return (data, offset, item) => fn(data, offset, item, PARSE_FIELD); +} +function createDynamicParserFn(properties, littleEndian) { + const parsers = []; + for (const [propertyName, property] of Object.entries(properties)) { + const fRestMatch = propertyName.match(F_REST_REGEX); + if (fRestMatch) { + const fRestIndex = +fRestMatch[1]; + parsers.push( + (data, offset, item) => { + item.f_rest[fRestIndex] = PARSE_FIELD[property.type]( + data, + offset, + littleEndian + ); + return offset + FIELD_BYTES[property.type]; } - if (ancestor == null) { - globalEdits.add(node); + ); + } else if (!property.isList) { + parsers.push( + (data, offset, item) => { + item[propertyName] = PARSE_FIELD[property.type]( + data, + offset, + littleEndian + ); + return offset + FIELD_BYTES[property.type]; } - } - }); - return { - generators: generators2, - visibleGenerators, - globalEdits: Array.from(globalEdits) - }; - } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - renderer, - scene, - worldCenter, - size = 256, - near = 0.1, - far = 1e3, - hideObjects = [], - update = false - }) { - var _a2, _b2; - if (!this.envViewpoint) { - this.envViewpoint = this.newViewpoint({ sort360: true }); - } - if (!_OldSparkRenderer.cubeRender || _OldSparkRenderer.cubeRender.target.width !== size || _OldSparkRenderer.cubeRender.near !== near || _OldSparkRenderer.cubeRender.far !== far) { - if (_OldSparkRenderer.cubeRender) { - _OldSparkRenderer.cubeRender.target.dispose(); - } - const target2 = new THREE.WebGLCubeRenderTarget(size, { - format: THREE.RGBAFormat, - generateMipmaps: true, - minFilter: THREE.LinearMipMapLinearFilter - }); - const camera2 = new THREE.CubeCamera(near, far, target2); - _OldSparkRenderer.cubeRender = { target: target2, camera: camera2, near, far }; - } - if (!_OldSparkRenderer.pmrem) { - _OldSparkRenderer.pmrem = new THREE.PMREMGenerator( - renderer ?? this.renderer ); - } - const viewToWorld = new THREE.Matrix4().setPosition(worldCenter); - await ((_a2 = this.envViewpoint) == null ? void 0 : _a2.prepare({ scene, viewToWorld, update })); - const { target, camera } = _OldSparkRenderer.cubeRender; - camera.position.copy(worldCenter); - const objectVisibility = /* @__PURE__ */ new Map(); - for (const object of hideObjects) { - objectVisibility.set(object, object.visible); - object.visible = false; - } - this.prepareViewpoint(this.envViewpoint); - camera.update(renderer ?? this.renderer, scene); - this.prepareViewpoint(this.defaultView); - for (const [object, visible] of objectVisibility.entries()) { - object.visible = visible; - } - return (_b2 = _OldSparkRenderer.pmrem) == null ? void 0 : _b2.fromCubemap(target.texture).texture; - } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(root, envMap) { - root.traverse((node) => { - if (node instanceof THREE.Mesh) { - if (Array.isArray(node.material)) { - for (const material of node.material) { - if (material instanceof THREE.MeshStandardMaterial) { - material.envMap = envMap; - } - } - } else { - if (node.material instanceof THREE.MeshStandardMaterial) { - node.material.envMap = envMap; + } else { + parsers.push( + (data, offset, item) => { + const list = item[propertyName]; + list.length = PARSE_FIELD[property.countType]( + data, + offset, + littleEndian + ); + let currentOffset = offset + FIELD_BYTES[property.countType]; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD[property.type]( + data, + currentOffset, + littleEndian + ); + currentOffset += FIELD_BYTES[property.type]; } + return currentOffset; } - } - }); - } - // Utility function that helps extract the Gsplat RGBA values from a - // SplatGenerator, including the result of any real-time RGBA SDF edits applied - // to a SplatMesh. This effectively "bakes" any computed RGBA values, which can - // now be used as a pipeline input via SplatMesh.splatRgba to inject these - // baked values into the Gsplat data. - getRgba({ - generator, - rgba - }) { - const mapping = this.active.mapping.find(({ node }) => node === generator); - if (!mapping) { - throw new Error("Generator not found"); - } - rgba = rgba ?? new RgbaArray(); - rgba.fromPackedSplats({ - packedSplats: this.active.splats, - base: mapping.base, - count: mapping.count, - renderer: this.renderer - }); - return rgba; - } - // Utility function that builds on getRgba({ generator }) and additionally - // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA - // in that byte order. - async readRgba({ - generator, - rgba - }) { - rgba = this.getRgba({ generator, rgba }); - return rgba.read(); + ); + } } -}; -_OldSparkRenderer.cubeRender = null; -_OldSparkRenderer.pmrem = null; -_OldSparkRenderer.EMPTY_SPLAT_TEXTURE = new THREE.Data3DTexture(); -let OldSparkRenderer = _OldSparkRenderer; -const EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0); -dynoBlock( - { packedSplats: TPackedSplats, index: "int" }, - { gsplat: Gsplat }, - ({ packedSplats, index }) => { - if (!packedSplats || !index) { - throw new Error("Invalid input"); - } - const gsplat = readPackedSplat(packedSplats, index); - return { gsplat }; + return (data, offset, item) => { + let currentOffset = offset; + for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) { + currentOffset = parsers[parserIndex](data, currentOffset, item); + } + return currentOffset; + }; +} +function getNumSh(properties) { + let num_f_rest = 0; + while (properties[`f_rest_${num_f_rest}`]) { + num_f_rest += 1; } -); -function averageOriginToWorlds(originToWorlds) { - if (originToWorlds.length === 0) { - return null; + const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest]; + if (numSh == null) { + throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`); } - const position = new THREE.Vector3(); - const quaternion = new THREE.Quaternion(); - const scale = new THREE.Vector3(); - const positions = []; - const quaternions = []; - for (const matrix of originToWorlds) { - matrix.decompose(position, quaternion, scale); - positions.push(position); - quaternions.push(quaternion); - } - return new THREE.Matrix4().compose( - averagePositions(positions), - averageQuaternions(quaternions), - new THREE.Vector3(1, 1, 1) - ); + return numSh; } function decodeAntiSplat(fileBytes, initNumSplats, splatCallback) { const numSplats = Math.floor(fileBytes.length / 32); @@ -20147,6 +19208,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -20223,10 +19285,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; @@ -20611,9 +19677,6 @@ export { LN_SCALE_MAX, LN_SCALE_MIN, NUM_JOINTS, - OldSparkRenderer, - OldSparkViewpoint, - OldSplatAccumulator, PackedSplats, PagedSplats, PlyReader, @@ -20673,7 +19736,6 @@ export { toHalf, transcodeSpz, unpackSplat, - unpackSplats, utils }; //# sourceMappingURL=spark.module.js.map diff --git a/dist/spark.module.js.map b/dist/spark.module.js.map index 55170a7c..e81f6cfc 100644 --- a/dist/spark.module.js.map +++ b/dist/spark.module.js.map @@ -1 +1 @@ -{"version":3,"file":"spark.module.js","sources":["../src/OldSplatGeometry.ts","../node_modules/fflate/esm/browser.js","../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/utils.ts","../src/OldSplatWorker.ts","../src/SplatWorker.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/ExtSplats.ts","../rust/spark-rs/pkg/spark_rs.js","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/oldSplatFragment.glsl","../src/shaders/oldSplatVertex.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/RgbaArray.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/ply.ts","../src/SplatLoader.ts","../src/PackedSplats.ts","../src/OldSparkViewpoint.ts","../src/OldSplatAccumulator.ts","../src/OldSparkRenderer.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by the instance attribute \"ordering\".\n\nexport class OldSplatGeometry extends THREE.InstancedBufferGeometry {\n ordering: Uint32Array;\n attribute: THREE.InstancedBufferAttribute;\n\n constructor(ordering: Uint32Array, activeSplats: number) {\n super();\n\n this.ordering = ordering;\n\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n\n // Hack to work around Three.js\n // @ts-ignore\n this._maxInstanceCount = ordering.length;\n this.instanceCount = activeSplats;\n\n this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1);\n this.attribute.setUsage(THREE.DynamicDrawUsage);\n this.setAttribute(\"splatIndex\", this.attribute);\n }\n\n update(ordering: Uint32Array, activeSplats: number) {\n this.ordering = ordering;\n this.attribute.array = ordering;\n this.instanceCount = activeSplats;\n this.attribute.addUpdateRange(0, activeSplats);\n this.attribute.needsUpdate = true;\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import BundledWorker from \"./oldWorker?worker&inline\";\nimport { getTransferable } from \"./utils.js\";\n\n// SplatWorker is an internal class that manages a WebWorker for executing\n// longer running CPU tasks such as Gsplat file decoding and sorting.\n// Although a SplatWorker can be created and used directly, the utility\n// function withWorker() is recommended to allocate from a managed\n// pool of SplatWorkers.\n\nexport class OldSplatWorker {\n worker: Worker;\n messages: Record<\n number,\n { resolve: (value: unknown) => void; reject: (reason?: unknown) => void }\n > = {};\n messageIdNext = 0;\n\n constructor() {\n // this.worker = new Worker(new URL(\"./worker\", import.meta.url), { type: \"module\" });\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n makeMessageId(): number {\n return ++this.messageIdNext;\n }\n\n makeMessagePromiseId(): { id: number; promise: Promise } {\n const id = this.makeMessageId();\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject };\n });\n return { id, promise };\n }\n\n onMessage(event: MessageEvent) {\n // console.log(\"SplatWorker.onMessage:\", event);\n const { id, result, error } = event.data;\n // console.log(`SplatWorker.onMessage(${id}):`, result, error);\n const handler = this.messages[id];\n if (handler) {\n delete this.messages[id];\n if (error) {\n handler.reject(error);\n } else {\n handler.resolve(result);\n }\n }\n }\n\n // Invoke an RPC on the worker with the given name and arguments.\n // The normal usage of a worker is to run one activity at a time,\n // but this function allows for concurrent calls, tagging each request\n // with a unique message Id and awaiting a response to that same Id.\n // The method will automatically transfer any ArrayBuffers in the\n // arguments to the worker. If you'd like to transfer a copy of a\n // buffer then you must clone it before passing to this function.\n async call(name: string, args: unknown): Promise {\n const { id, promise } = this.makeMessagePromiseId();\n // console.log(`SplatWorker.call(${name}):`, args);\n this.worker.postMessage(\n { name, args, id },\n { transfer: getTransferable(args) },\n );\n return promise;\n }\n}\n\nlet maxWorkers = 4;\n\nlet numWorkers = 0;\nconst freeWorkers: OldSplatWorker[] = [];\nconst workerQueue: ((worker: OldSplatWorker) => void)[] = [];\n\n// Set the maximum number of workers to allocate for the pool. (default: 4)\nexport function setWorkerPool(count = 4) {\n maxWorkers = count;\n}\n\n// Allocate a worker from the pool. If none are available and we are below the\n// maximum, create a new one. Otherwise, add the request to a queue and wait\n// for it to be fulfilled.\nexport async function allocWorker(): Promise {\n const worker = freeWorkers.shift();\n if (worker) {\n return worker;\n }\n\n if (numWorkers < maxWorkers) {\n const worker = new OldSplatWorker();\n numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n workerQueue.push(resolve);\n });\n}\n\n// Return a worker to the pool. Pass the worker to any pending waiter.\nexport function freeWorker(worker: OldSplatWorker) {\n if (numWorkers > maxWorkers) {\n // Worker no longer needed\n numWorkers -= 1;\n return;\n }\n\n const waiter = workerQueue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n freeWorkers.push(worker);\n}\n\n// Allocate a worker from the pool and invoke the callback with the worker.\n// When the callback completes, the worker will be returned to the pool.\nexport async function withWorker(\n callback: (worker: OldSplatWorker) => Promise,\n): Promise {\n const worker = await allocWorker();\n try {\n return await callback(worker);\n } finally {\n freeWorker(worker);\n }\n}\n","import { getTransferable } from \"./utils\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n // Keeping below because we may need it in the future\n // for skinning deformations.\n // mat3 W = transpose(mat3(viewMatrix));\n // mat3 T = W * J;\n // mat3 cov2D = transpose(T) * cov3D * T;\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport oldSplatFragment from \"./shaders/oldSplatFragment.glsl\";\nimport oldSplatVertex from \"./shaders/oldSplatVertex.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n oldSplatVertex,\n oldSplatFragment,\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Whether to encode Gsplat with linear RGB (for environment mapping)\n * @default false\n */\n encodeLinear?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n encodeLinear: boolean;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.encodeLinear = options.encodeLinear ?? false;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n this.encodeLinear = options.encodeLinear ?? true;\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n if (spark.target) {\n spark.renderSize.set(spark.target.width, spark.target.height);\n } else {\n const renderSize = renderer.getDrawingBufferSize(spark.renderSize);\n if (renderer.xr.isPresenting) {\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n this.uniforms.encodeLinear.value = spark.encodeLinear;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n const props = renderer.properties.get(this.orderingTexture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"ordering texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n // data,\n result.ordering,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { pagedSplatTexCoord } from \"./dyno\";\nimport { decodeExtSplat, getTextureSize, unpackSplat } from \"./utils\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasmInitialized;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n const gl = renderer.getContext() as WebGL2RenderingContext;\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(\n gl.TEXTURE_2D,\n getGlTexture(renderer, indicesTexture),\n );\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\nexport class SplatPager {\n renderer: THREE.WebGLRenderer;\n\n extSplats: boolean;\n maxPages: number;\n maxSplats: number;\n pageSplats: number;\n\n maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n readyUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n sh1Texture: dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture: dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture: dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB: dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = 65536;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / this.pageSplats);\n this.maxSplats = this.maxPages * this.pageSplats;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n ),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n )\n : SplatPager.emptyExtTexture,\n });\n this.sh1Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh1Texture\n : SplatPager.emptySh1Texture,\n });\n this.sh2Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh2Texture\n : SplatPager.emptySh2Texture,\n });\n this.sh3Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh3Texture\n : SplatPager.emptySh3Texture,\n });\n this.sh3TextureB = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyExtSh3BTexture,\n });\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3Texture: this.sh3Texture,\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3TextureA: this.sh3Texture,\n sh3TextureB: this.sh3TextureB,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n } else {\n if (this.sh1Texture.value !== SplatPager.emptyExtSh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptyExtSh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n if (this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value.dispose();\n this.sh3TextureB.value.source.data = null;\n }\n }\n }\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n if (!this.extSplats) {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptySh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 2),\n 256,\n 256,\n this.maxPages,\n THREE.RGIntegerFormat,\n THREE.UnsignedIntType,\n \"RG32UI\",\n );\n }\n } else {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptyExtSh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n if (\n this.curSh >= 2 &&\n this.sh2Texture.value ===\n (!this.extSplats\n ? SplatPager.emptySh2Texture\n : SplatPager.emptyExtSh2Texture)\n ) {\n this.sh2Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (!this.extSplats) {\n if (\n this.curSh >= 3 &&\n this.sh3Texture.value === SplatPager.emptySh3Texture\n ) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n } else {\n if (this.curSh >= 3) {\n if (this.sh3Texture.value === SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (this.sh3TextureB.value === SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n private freePage(page: number) {\n this.pageFreelist.push(page);\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n extra: Record,\n extArray?: Uint32Array,\n ) {\n const pageBase = page * this.pageSplats;\n\n // const gl = this.renderer.getContext() as WebGL2RenderingContext;\n\n // this.renderer.state.activeTexture(gl.TEXTURE0);\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.packedTexture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // packedArray,\n // );\n\n const array = this.packedTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + packedArray.length)\n .set(packedArray);\n this.packedTexture.value.addLayerUpdate(page);\n this.packedTexture.value.needsUpdate = true;\n\n if (extArray) {\n const array = this.extTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + extArray.length)\n .set(extArray);\n this.extTexture.value.addLayerUpdate(page);\n this.extTexture.value.needsUpdate = true;\n }\n\n const numSh = this.extSplats\n ? extra.sh3a && extra.sh3b\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0\n : extra.sh3\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0;\n this.ensureShTextures(numSh);\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture && extra.sh1) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh1Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RG_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh1 as Uint32Array,\n // );\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh1Texture.value !== SplatPager.emptyExtSh1Texture &&\n extra.sh1\n ) {\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n }\n\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture && extra.sh2) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh2Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh2 as Uint32Array,\n // );\n const sh2 = extra.sh2 as Uint32Array;\n const array = this.sh2Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2);\n this.sh2Texture.value.addLayerUpdate(page);\n this.sh2Texture.value.needsUpdate = true;\n }\n\n if (!this.extSplats) {\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture && extra.sh3) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh3Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh3 as Uint32Array,\n // );\n const sh3 = extra.sh3 as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh3Texture.value !== SplatPager.emptyExtSh3Texture &&\n extra.sh3a\n ) {\n const sh3a = extra.sh3a as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n if (\n this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture &&\n extra.sh3b\n ) {\n const sh3b = extra.sh3b as Uint32Array;\n const array = this.sh3TextureB.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b);\n this.sh3TextureB.value.addLayerUpdate(page);\n this.sh3TextureB.value.needsUpdate = true;\n }\n }\n\n // this.renderer.state.bindTexture(gl.TEXTURE_2D_ARRAY, null);\n }\n\n private getGlTexture(texture: THREE.Texture): WebGLTexture {\n return getGlTexture(this.renderer, texture);\n }\n\n private newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: this.pageSplats,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (!this.extSplats) {\n const packedArray = (data as PackedResult).packedArray;\n this.newUploads.push({ page, numSplats, packedArray, extra });\n } else {\n const extArrays = (data as ExtResult).extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n this.newUploads.push({ page, numSplats, packedArray, extArray, extra });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, extra } = upload;\n this.uploadPage(page, packedArray, extra, extArray);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptySh1Texture = this.emptyUint32x2;\n static emptySh2Texture = this.emptyUint32x4;\n static emptySh3Texture = this.emptyUint32x4;\n static emptyExtSh1Texture = this.emptyUint32x4;\n static emptyExtSh2Texture = this.emptyUint32x4;\n static emptyExtSh3Texture = this.emptyUint32x4;\n static emptyExtSh3BTexture = this.emptyUint32x4;\n}\n\nfunction getGlTexture(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n): WebGLTexture {\n if (!renderer.properties.has(texture)) {\n throw new Error(\"texture not found\");\n }\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n return glTexture;\n}\n\nconst wasmInitialized = init_wasm();\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SparkRenderer } from \"./SparkRenderer\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n\n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static staticInitialized = SplatMesh.staticInitialize();\n static isStaticInitialized = false;\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n static async staticInitialize() {\n await init_wasm();\n SplatMesh.isStaticInitialized = true;\n }\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !SplatMesh.isStaticInitialized ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n\nconst EMPTY_GEOMETRY = new THREE.BufferGeometry();\nconst EMPTY_MATERIAL = new THREE.ShaderMaterial();\n\n// Creates an empty mesh to hook into Three.js rendering.\n// This is used to detect if a SparkRenderer is present in the scene.\n// If not, one will be injected automatically.\nfunction createRendererDetectionMesh(): THREE.Mesh {\n const mesh = new THREE.Mesh(EMPTY_GEOMETRY, EMPTY_MATERIAL);\n mesh.frustumCulled = false;\n mesh.onBeforeRender = function (renderer, scene) {\n if (!scene.isScene) {\n // The SplatMesh is part of render call that doesn't have a Scene at its root\n // Don't auto-inject a renderer.\n this.removeFromParent();\n return;\n }\n\n // Check if the scene has a SparkRenderer instance\n let hasSparkRenderer = false;\n scene.traverse((c) => {\n if (c instanceof SparkRenderer || c instanceof OldSparkRenderer) {\n hasSparkRenderer = true;\n }\n });\n\n if (!hasSparkRenderer) {\n // No spark renderer present in the scene, inject one.\n scene.add(new SparkRenderer({ renderer }));\n }\n\n // Remove mesh to stop checking\n this.removeFromParent();\n };\n return mesh;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import * as THREE from \"three\";\n\nimport type { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport type { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { DynoPackedSplats } from \"./PackedSplats\";\nimport { Readback } from \"./Readback\";\nimport {\n type DynoBlock,\n DynoBool,\n DynoFloat,\n type DynoVal,\n DynoVec3,\n Gsplat,\n add,\n combine,\n defineGsplat,\n dyno,\n dynoBlock,\n dynoConst,\n floatBitsToUint,\n mul,\n packHalf2x16,\n readPackedSplat,\n uintToRgba8,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { FreeList, withinCoorientDist } from \"./utils\";\n\nexport type OldSparkViewpointOptions = {\n /**\n * Controls whether to auto-update its sort order whenever the SparkRenderer\n * updates the Gsplats. If you expect to render/display from this viewpoint\n * most frames, set this to true.\n * @default false\n */\n autoUpdate?: boolean;\n /**\n * Set a THREE.Camera for this viewpoint to follow.\n * @default undefined\n */\n camera?: THREE.Camera;\n /**\n * Set an explicit view-to-world transformation matrix for this viewpoint (equivalent\n * to camera.matrixWorld), overrides any camera setting.\n * @default undefined\n */\n viewToWorld?: THREE.Matrix4;\n /**\n * Configure viewpoint with an off-screen render target.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n };\n /**\n * Callback function that is called when the render target texture is updated.\n * Receives the texture as a parameter. Use this to update a viewport with\n * the latest viewpoint render each frame.\n * @default undefined\n */\n onTextureUpdated?: (texture: THREE.Texture) => void;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth sort metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Distance threshold for re-sorting splats. If the viewpoint moves more than\n * this distance, splats will be re-sorted.\n * @default 0.01 units\n */\n sortDistance?: number;\n /**\n * View direction dot product threshold for re-sorting splats. For\n * sortRadial: true we use 0.99 while sortRadial: false uses 0.999 because it is\n * more sensitive to view direction.\n * @default 0.99 if sortRadial else 0.999\n */\n sortCoorient?: boolean;\n /**\n * Constant added to Z-depth to bias values into the positive range for\n * sortRadial: false, but also used for culling Gsplats \"well behind\"\n * the viewpoint origin\n * @default 1.0\n */\n depthBias?: number;\n /**\n * Set this to true if rendering a 360 to disable \"behind the viewpoint\"\n * culling during sorting. This is set automatically when rendering 360 envMaps\n * using the SparkRenderer.renderEnvMap() utility function.\n * @default false\n */\n sort360?: boolean;\n /*\n * Set this to true to sort with float32 precision with two-pass sort.\n * @default true\n */\n sort32?: boolean;\n /*\n * Set this to true to enable sort-free stochastic splat rendering.\n * @default false\n */\n stochastic?: boolean;\n};\n\n// A SparkViewpoint is created from and tied to a SparkRenderer, and represents\n// an independent viewpoint of all the scene Gsplats and their sort order. Making\n// these viewpoints explicit allows us to have multiple, simultaneous viewpoint\n// renders, for example for camera preview panes or overhead map views.\n//\n// When creating a SparkRenderer it automatically creates a default viewpoint\n// .defaultView that is used in the normal render loop when drawing to the canvas,\n// and is automatically updated whenever the camera moves. Additional viewpoints\n// can be created and configured separately.\n\nexport class OldSparkViewpoint {\n spark: OldSparkRenderer;\n autoUpdate: boolean;\n camera?: THREE.Camera;\n viewToWorld: THREE.Matrix4;\n lastTime: number | null = null;\n\n target?: THREE.WebGLRenderTarget;\n private back?: THREE.WebGLRenderTarget;\n onTextureUpdated?: (texture: THREE.Texture) => void;\n encodeLinear = false;\n superXY = 1;\n private superPixels?: Uint8Array;\n private pixels?: Uint8Array;\n\n sortRadial: boolean;\n sortDistance?: number;\n sortCoorient?: boolean;\n depthBias?: number;\n sort360?: boolean;\n sort32?: boolean;\n stochastic: boolean;\n\n display: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n geometry: OldSplatGeometry;\n } | null = null;\n\n private sorting: { viewToWorld: THREE.Matrix4 } | null = null;\n private pending: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed: boolean;\n } | null = null;\n private sortingCheck = false;\n\n private readback16: Uint16Array = new Uint16Array(0);\n private readback32: Uint32Array = new Uint32Array(0);\n private orderingFreelist: FreeList;\n\n constructor(options: OldSparkViewpointOptions & { spark: OldSparkRenderer }) {\n this.spark = options.spark;\n this.camera = options.camera;\n this.viewToWorld = options.viewToWorld ?? new THREE.Matrix4();\n\n if (options.target) {\n const { width, height, doubleBuffer } = options.target;\n const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1));\n this.superXY = superXY;\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n\n this.target = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n if (doubleBuffer) {\n this.back = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n }\n this.encodeLinear = true;\n }\n this.onTextureUpdated = options.onTextureUpdated;\n\n this.sortRadial = options.sortRadial ?? true;\n this.sortDistance = options.sortDistance;\n this.sortCoorient = options.sortCoorient;\n this.depthBias = options.depthBias;\n this.sort360 = options.sort360;\n this.sort32 = options.sort32;\n this.stochastic = options.stochastic ?? false;\n\n this.orderingFreelist = new FreeList({\n allocate: (maxSplats) =>\n new Uint32Array(maxSplats) as Uint32Array,\n valid: (ordering, maxSplats) => ordering.length === maxSplats,\n });\n\n this.autoUpdate = false;\n this.setAutoUpdate(options.autoUpdate ?? false);\n }\n\n // Call this when you are done with the SparkViewpoint and want to\n // free up its resources (GPU targets, pixel buffers, etc.)\n dispose() {\n this.setAutoUpdate(false);\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.back) {\n this.back.dispose();\n this.back = undefined;\n }\n if (this.display) {\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.geometry.dispose();\n this.display = null;\n }\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n this.pending = null;\n }\n }\n\n // Use this function to change whether this viewpoint will auto-update\n // its sort order whenever the attached SparkRenderer updates the Gsplats.\n // Turn this on or off depending on whether you expect to do renders from\n // this viewpoint most frames.\n setAutoUpdate(autoUpdate: boolean) {\n if (!this.autoUpdate && autoUpdate) {\n this.spark.autoViewpoints.push(this);\n } else if (this.autoUpdate && !autoUpdate) {\n this.spark.autoViewpoints = this.spark.autoViewpoints.filter(\n (v) => v !== this,\n );\n }\n this.autoUpdate = autoUpdate;\n }\n\n // See below async prepareRenderPixels() for explanation of parameters.\n // Awaiting this method updates the Gsplats in the scene and performs a sort of the\n // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget()\n // call in the same tick.\n async prepare({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n if (viewToWorld) {\n this.viewToWorld = viewToWorld;\n } else {\n this.camera = camera ?? this.camera;\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n }\n while (update ?? true) {\n // Force an update, possibly with origin centered at this camera\n // to yield the best quality output.\n const originToWorld = forceOrigin\n ? this.viewToWorld\n : this.spark.matrixWorld;\n const updated = this.spark.updateInternal({ scene, originToWorld });\n if (updated) {\n break;\n }\n // A bit of a hack, but try again. We shouldn't be starved for long.\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n\n const accumulator = this.spark.active;\n // Hold reference to accumulator while sorting\n accumulator.refCount += 1;\n await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld });\n // Release accumulator reference\n this.spark.releaseAccumulator(accumulator);\n }\n\n // Render out the viewpoint to the view target RGBA buffer.\n // Swaps buffers if doubleBuffer: true was set.\n // Calls onTextureUpdated(texture) with the resulting texture.\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera?: THREE.Camera }) {\n const target = this.back ?? this.target;\n if (!target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n\n camera = camera ?? this.camera;\n if (!camera) {\n throw new Error(\"Must provide camera\");\n }\n if (camera instanceof THREE.PerspectiveCamera) {\n const newCam = new THREE.PerspectiveCamera().copy(camera, false);\n newCam.aspect = target.width / target.height;\n newCam.updateProjectionMatrix();\n camera = newCam;\n }\n this.viewToWorld = camera.matrixWorld.clone();\n\n const previousTarget = this.spark.renderer.getRenderTarget();\n try {\n this.spark.renderer.setRenderTarget(target);\n this.spark.prepareViewpoint(this);\n\n this.spark.renderer.render(scene, camera);\n } finally {\n this.spark.prepareViewpoint(this.spark.defaultView);\n this.spark.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.back] = [this.back, this.target];\n }\n this.onTextureUpdated?.(target.texture);\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). If superXY was set greater than 1 then\n // downsampling is performed in the target pixel array with simple averaging\n // to derive the returned pixel values. Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n }\n await this.spark.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n this.superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return this.superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.pixels || this.pixels.length < subSize) {\n this.pixels = new Uint8Array(subSize);\n }\n\n const { superPixels, pixels } = this;\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * this.target.width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n pixels[pixelIndex] = r / super2;\n pixels[pixelIndex + 1] = g / super2;\n pixels[pixelIndex + 2] = b / super2;\n pixels[pixelIndex + 3] = a / super2;\n }\n }\n return pixels;\n }\n\n // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene\n // and any camera/viewToWorld viewpoint overrides. By default update is true,\n // which triggers its SparkRenderer to check and potentially update the Gsplats.\n // Setting update to false disables this and sorts the Gsplats as they are.\n // Setting forceOrigin (default: false) to true forces the view update to\n // recalculate the splats with this view origin, potentially altering any\n // view-dependent effects. If you expect view-dependent effects to play a role\n // in the rendering quality, enable this.\n //\n // Underneath, prepareRenderPixels() simply calls await this.prepare(...),\n // this.renderTarget(...), and finally returns the result this.readTarget(),\n // a Promise to a Uint8Array with RGBA values for all the pixels (potentially\n // downsampled if the superXY parameter was used). These steps can also be called\n // manually, for example if you need to alter the scene before and after\n // this.renderTarget(...) to hide UI elements from being rendered.\n async prepareRenderPixels({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n await this.prepare({ scene, camera, viewToWorld, update, forceOrigin });\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // This is called automatically by SparkRenderer, there is no need to call it!\n // The method cannot be private because then SparkRenderer would\n // not be able to call it.\n autoPoll({ accumulator }: { accumulator?: OldSplatAccumulator }) {\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n\n let needsSort = false;\n let displayed = false;\n\n if (!this.display) {\n // Need to do first sort\n needsSort = true;\n } else if (accumulator) {\n needsSort = true;\n const { mappingVersion } = this.display.accumulator;\n if (accumulator.mappingVersion === mappingVersion) {\n // Splat mapping has not changed, so reuse the existing sorted\n // geometry to show updates faster. We will still fire off\n // a re-sort if necessary. First release old accumulator.\n accumulator.refCount += 1;\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n this.display.viewToWorld.copy(this.viewToWorld);\n displayed = true;\n\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n }\n\n const latestView = this.sorting?.viewToWorld ?? this.display?.viewToWorld;\n if (\n latestView &&\n !withinCoorientDist({\n matrix1: this.viewToWorld,\n matrix2: latestView,\n // By default update sort each 1 cm\n maxDistance: this.sortDistance ?? 0.01,\n // By default for radial sort, update for intermittent movement so that\n // we bring back splats culled by being behind the camera.\n // For depth sort, small rotations can change sort order a lot, so\n // update sort for even small rotations.\n minCoorient: (this.sortCoorient ?? this.sortRadial) ? 0.99 : 0.999,\n })\n ) {\n needsSort = true;\n }\n\n if (!needsSort) {\n // Stop here, no sort necessary\n return;\n }\n\n if (accumulator) {\n // Hold a reference to the accumulator for sorting\n accumulator.refCount += 1;\n }\n\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n }\n this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed };\n\n // Don't await this, just trigger the sort if necessary\n this.driveSort();\n }\n\n private async driveSort() {\n while (true) {\n if (this.sorting || !this.pending) {\n return; // Sort already in process or nothing to sort\n }\n\n const { viewToWorld, displayed } = this.pending;\n let accumulator = this.pending.accumulator;\n if (!accumulator) {\n // Hold a reference to the accumulator while sorting\n accumulator = this.display?.accumulator ?? this.spark.active;\n accumulator.refCount += 1;\n }\n this.pending = null;\n if (!accumulator) {\n throw new Error(\"No accumulator to sort\");\n }\n\n this.sorting = { viewToWorld };\n await this.sortUpdate({ accumulator, viewToWorld, displayed });\n this.sorting = null;\n\n // Release the reference to the accumulator\n this.spark.releaseAccumulator(accumulator);\n\n // Continue in loop with any queued sort\n }\n }\n\n private async sortUpdate({\n accumulator,\n viewToWorld,\n displayed = false,\n }: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed?: boolean;\n }) {\n if (this.sortingCheck) {\n throw new Error(\"Only one sort at a time\");\n }\n this.sortingCheck = true;\n\n accumulator = accumulator ?? this.spark.active;\n const { numSplats, maxSplats } = accumulator.splats;\n let activeSplats = 0;\n let ordering = this.orderingFreelist.alloc(maxSplats);\n\n if (this.stochastic) {\n activeSplats = numSplats;\n // Render all splats in order since the Z-buffer\n // will handle ordering.\n for (let i = 0; i < numSplats; ++i) {\n ordering[i] = i;\n }\n } else if (numSplats > 0) {\n const {\n reader,\n doubleSortReader,\n sort32Reader,\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n } = OldSparkViewpoint.makeSorter();\n const sort32 = this.sort32 ?? false;\n let readback: Uint16Array | Uint32Array;\n if (sort32) {\n this.readback32 = reader.ensureBuffer(maxSplats, this.readback32);\n readback = this.readback32;\n } else {\n const halfMaxSplats = Math.ceil(maxSplats / 2);\n this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16);\n readback = this.readback16;\n }\n\n const worldToOrigin = accumulator.toWorld.clone().invert();\n const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin);\n\n dynoSortRadial.value = this.sort360 ? true : this.sortRadial;\n dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin);\n dynoDirection.value\n .set(0, 0, -1)\n .applyMatrix4(viewToOrigin)\n .sub(dynoOrigin.value)\n .normalize();\n dynoDepthBias.value = this.depthBias ?? 1.0;\n dynoSort360.value = this.sort360 ?? false;\n dynoSplats.packedSplats = accumulator.splats;\n\n const sortReader = sort32 ? sort32Reader : doubleSortReader;\n const count = sort32 ? numSplats : Math.ceil(numSplats / 2);\n await reader.renderReadback({\n renderer: this.spark.renderer,\n reader: sortReader,\n count,\n readback,\n });\n\n const result = (await withWorker(async (worker) => {\n const rpcName = sort32 ? \"sort32Splats\" : \"sortDoubleSplats\";\n return worker.call(rpcName, {\n maxSplats,\n numSplats,\n readback,\n ordering,\n });\n })) as {\n readback: Uint16Array | Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n if (sort32) {\n this.readback32 = result.readback as Uint32Array;\n } else {\n this.readback16 = result.readback as Uint16Array;\n }\n ordering = result.ordering;\n activeSplats = result.activeSplats;\n }\n\n this.updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed,\n });\n this.sortingCheck = false;\n }\n\n private updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed = false,\n }: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n ordering: Uint32Array;\n activeSplats: number;\n displayed?: boolean;\n }) {\n if (!this.display) {\n // Hold a reference to the accumulator while part of display\n accumulator.refCount += 1;\n this.display = {\n accumulator,\n viewToWorld,\n geometry: new OldSplatGeometry(ordering, activeSplats),\n };\n } else {\n if (!displayed && accumulator !== this.display.accumulator) {\n // Hold a reference to the new accumulator being displayed\n accumulator.refCount += 1;\n // Release the reference to the previously displayed accumulator\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n }\n\n this.display.viewToWorld = viewToWorld;\n\n const oldOrdering = this.display.geometry.ordering;\n if (oldOrdering.length === ordering.length) {\n this.display.geometry.update(ordering, activeSplats);\n } else {\n this.display.geometry.dispose();\n // console.log(\"*** alloc SplatGeometry\", ordering.length);\n this.display.geometry = new OldSplatGeometry(ordering, activeSplats);\n }\n this.orderingFreelist.free(oldOrdering);\n }\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n\n // If you need an empty THREE.Texture to use to initialize a uniform that is\n // updated via onTextureUpdated(texture), this static texture can be handy.\n static EMPTY_TEXTURE = new THREE.Texture();\n\n private static dynos: {\n dynoSortRadial: DynoBool;\n dynoOrigin: DynoVec3;\n dynoDirection: DynoVec3;\n dynoDepthBias: DynoFloat;\n dynoSort360: DynoBool;\n dynoSplats: DynoPackedSplats;\n reader: Readback;\n doubleSortReader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n sort32Reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n private static makeSorter() {\n if (!OldSparkViewpoint.dynos) {\n const dynoSortRadial = new DynoBool({ value: true });\n const dynoOrigin = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDirection = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDepthBias = new DynoFloat({ value: 1.0 });\n const dynoSort360 = new DynoBool({ value: false });\n const dynoSplats = new DynoPackedSplats();\n\n const reader = new Readback();\n const doubleSortReader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n const index2 = mul(index, dynoConst(\"int\", 2));\n\n const gsplat0 = readPackedSplat(dynoSplats, index2);\n const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams });\n\n const gsplat1 = readPackedSplat(\n dynoSplats,\n add(index2, dynoConst(\"int\", 1)),\n );\n const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams });\n\n const combined = combine({\n vectorType: \"vec2\",\n x: metric0,\n y: metric1,\n });\n const rgba8 = uintToRgba8(packHalf2x16(combined));\n return { rgba8 };\n },\n );\n\n const sort32Reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n\n const gsplat = readPackedSplat(dynoSplats, index);\n const metric = computeSortMetric({ gsplat, ...sortParams });\n const rgba8 = uintToRgba8(floatBitsToUint(metric));\n return { rgba8 };\n },\n );\n\n OldSparkViewpoint.dynos = {\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n reader,\n doubleSortReader,\n sort32Reader,\n };\n }\n return OldSparkViewpoint.dynos;\n }\n}\n\nconst defineComputeSortMetric = unindent(`\n float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {\n if (!isGsplatActive(gsplat.flags)) {\n return INFINITY;\n }\n\n vec3 center = gsplat.center - sortOrigin;\n float biasedDepth = dot(center, sortDirection) + sortDepthBias;\n if (!sort360 && (biasedDepth <= 0.0)) {\n return INFINITY;\n }\n\n return sortRadial ? length(center) : biasedDepth;\n }\n`);\n\nfunction computeSortMetric({\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n}: {\n gsplat: DynoVal;\n sortRadial: DynoVal<\"bool\">;\n sortOrigin: DynoVal<\"vec3\">;\n sortDirection: DynoVal<\"vec3\">;\n sortDepthBias: DynoVal<\"float\">;\n sort360: DynoVal<\"bool\">;\n}) {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n sortRadial: \"bool\",\n sortOrigin: \"vec3\",\n sortDirection: \"vec3\",\n sortDepthBias: \"float\",\n sort360: \"bool\",\n },\n outTypes: { metric: \"float\" },\n globals: () => [defineGsplat, defineComputeSortMetric],\n inputs: {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n },\n statements: ({ inputs, outputs }) => {\n const {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n } = inputs;\n return unindentLines(`\n ${outputs.metric} = computeSort(${gsplat}, ${sortRadial}, ${sortOrigin}, ${sortDirection}, ${sortDepthBias}, ${sort360});\n `);\n },\n }).outputs.metric;\n}\n","import * as THREE from \"three\";\n\nimport { PackedSplats } from \"./PackedSplats\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport type { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\n\n// SplatAccumulator helps manage the generation of splats from multiple\n// SplatGenerators, keeping track of the splat mapping, coordinate system,\n// and reference count.\n\nexport class OldSplatAccumulator {\n splats = new PackedSplats();\n // The transform from Accumulator coordinate system to world coordinates.\n toWorld = new THREE.Matrix4();\n // An array of all Gsplat mappings that were used for generation\n mapping: GeneratorMapping[] = [];\n // Number of SparkViewpoints (or other) that reference this accumulator, used\n // to figure out when it can be recycled for use\n refCount = 0;\n\n // Incremented every time the splats are updated/generated.\n splatsVersion = -1;\n // Incremented every time the splat mapping/layout is updated.\n // Splat sort order can be reused between equivalent mapping versions.\n mappingVersion = -1;\n\n ensureGenerate(maxSplats: number) {\n if (this.splats.ensureGenerate(maxSplats)) {\n // If we had to resize our PackedSplats then clear all previous mappings\n this.mapping = [];\n }\n }\n\n // Generate all Gsplats from an array of generators\n generateSplats({\n renderer,\n modifier,\n generators,\n forceUpdate,\n originToWorld,\n }: {\n renderer: THREE.WebGLRenderer;\n modifier: SplatModifier;\n generators: GeneratorMapping[];\n forceUpdate?: boolean;\n originToWorld: THREE.Matrix4;\n }) {\n // Create a lookup from last SplatGenerator\n const mapping = this.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Run generators that are different from existing mapping\n let updated = 0;\n let numSplats = 0;\n for (const { node, generator, version, base, count } of generators) {\n const current = mapping.get(node);\n if (\n forceUpdate ||\n generator !== current?.generator ||\n version !== current?.version ||\n base !== current?.base ||\n count !== current?.count\n ) {\n // Something is different from before so we should generate these Gsplats\n if (generator && count > 0) {\n const modGenerator = modifier.apply(generator);\n try {\n this.splats.generate({\n generator: modGenerator,\n base,\n count,\n renderer,\n });\n } catch (error) {\n node.generator = undefined;\n node.generatorError = error;\n }\n updated += 1;\n }\n }\n numSplats = Math.max(numSplats, base + count);\n }\n\n this.splats.numSplats = numSplats;\n this.toWorld.copy(originToWorld);\n this.mapping = generators;\n return updated !== 0;\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n hasCorrespondence(other: OldSplatAccumulator) {\n if (this.mapping.length !== other.mapping.length) {\n return false;\n }\n return this.mapping.every(({ node, base, count }, i) => {\n const {\n node: otherNode,\n base: otherBase,\n count: otherCount,\n } = other.mapping[i];\n return node === otherNode && base === otherBase && count === otherCount;\n });\n }\n}\n","import * as THREE from \"three\";\n\nimport {\n OldSparkViewpoint,\n type OldSparkViewpointOptions,\n} from \"./OldSparkViewpoint\";\nimport { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { RgbaArray } from \"./RgbaArray\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n} from \"./defines\";\nimport {\n DynoVec3,\n DynoVec4,\n Gsplat,\n TPackedSplats,\n dynoBlock,\n readPackedSplat,\n transformGsplat,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport {\n averagePositions,\n averageQuaternions,\n cloneClock,\n withinCoorientDist,\n} from \"./utils\";\n\n// SparkRenderer aggregates splats from multiple generators into a single\n// accumulated collection per frame. In normal operation we only need a\n// maximum of 3 accumulators: One currently being viewed, one currently\n// being sorted, and one more for generating the next frame. Accumulators\n// must be \"released\" by each viewpoint using it, so in unusual cases\n// such as slow render-outs, we may want to allow more than 3 so the\n// pipeline can continue generating new frames, but we limit to a maximum\n// of 5 to avoid excessive memory usage.\nconst MAX_ACCUMULATORS = 5;\n\nexport type OldSparkRendererOptions = {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the SparkRenderer properties time and\n * deltaTime directly. (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection after\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this must be false in order to complete rendering as soon as possible.\n * @default false\n */\n preUpdate?: boolean;\n /**\n * Distance threshold for SparkRenderer movement triggering a Gsplat update at\n * the new origin.\n * @default 1.0\n */\n originDistance?: number;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(5)..Math.sqrt(8) produce good results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Configures the SparkViewpointOptions for the default SparkViewpoint\n * associated with this SparkRenderer. Notable option: sortRadial (sort by\n * radial distance or Z-depth)\n */\n view?: OldSparkViewpointOptions;\n /**\n * Override the default splat encoding ranges for the PackedSplats.\n * (default: undefined)\n */\n splatEncoding?: SplatEncoding;\n};\n\nexport class OldSparkRenderer extends THREE.Mesh {\n renderer: THREE.WebGLRenderer;\n premultipliedAlpha: boolean;\n material: THREE.ShaderMaterial;\n uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n needsUpdate: boolean;\n originDistance: number;\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n minAlpha: number;\n enable2DGS: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n splatEncoding: SplatEncoding;\n\n splatTexture: null | {\n enable?: boolean;\n texture?: THREE.Data3DTexture;\n multiply?: THREE.Matrix2;\n add?: THREE.Vector2;\n near?: number;\n far?: number;\n mid?: number;\n } = null;\n\n time?: number;\n deltaTime?: number;\n clock: THREE.Clock;\n\n // Latest Gsplat collection being displayed\n active: OldSplatAccumulator;\n // Free list of accumulators for reuse\n private freeAccumulators: OldSplatAccumulator[];\n // Total number of accumulators currently allocated\n private accumulatorCount: number;\n // Default SparkViewpoint used for rendering to the canvas\n defaultView: OldSparkViewpoint;\n // List of SparkViewpoints with autoUpdate enabled\n autoViewpoints: OldSparkViewpoint[] = [];\n\n // Dynos used to transform Gsplats to the accumulator coordinate system\n private rotateToAccumulator = new DynoVec4({ value: new THREE.Quaternion() });\n private translateToAccumulator = new DynoVec3({ value: new THREE.Vector3() });\n private modifier: SplatModifier;\n\n // Last rendered frame number so we know when we're rendering a new frame\n private lastFrame = -1;\n // Last update timestamp to compute deltaTime\n private lastUpdateTime: number | null = null;\n // List of cameras used for the current viewpoint (for WebXR)\n private defaultCameras: THREE.Matrix4[] = [];\n private lastStochastic: boolean | null = null;\n\n // Should be set to the defaultView, but can be temporarily changed to another\n // viewpoint using prepareViewpoint() for rendering from a different viewpoint.\n viewpoint: OldSparkViewpoint;\n\n // Holds data needed to perform a scheduled Gsplat update.\n private pendingUpdate = {\n scene: null as THREE.Scene | null,\n originToWorld: new THREE.Matrix4(),\n timeoutId: -1,\n };\n\n // Internal SparkViewpoint used for environment map rendering.\n private envViewpoint: OldSparkViewpoint | null = null;\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n camera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n static EMPTY_SPLAT_TEXTURE = new THREE.Data3DTexture();\n\n constructor(options: OldSparkRendererOptions) {\n const uniforms = OldSparkRenderer.makeUniforms();\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: shaders.oldSplatVertex,\n fragmentShader: shaders.oldSplatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: true,\n depthTest: true,\n depthWrite: false,\n side: THREE.DoubleSide,\n });\n\n super(EMPTY_GEOMETRY, material);\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n this.renderer = options.renderer;\n this.material = material;\n this.uniforms = uniforms;\n\n // Create a Gsplat modifier that takes the output of any SplatGenerator\n // and transforms them into the accumulator's coordinate system\n const modifier = dynoBlock(\n { gsplat: Gsplat },\n { gsplat: Gsplat },\n ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"gsplat not defined\");\n }\n gsplat = transformGsplat(gsplat, {\n rotate: this.rotateToAccumulator,\n translate: this.translateToAccumulator,\n });\n return { gsplat };\n },\n );\n this.modifier = new SplatModifier(modifier);\n\n this.premultipliedAlpha = premultipliedAlpha;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? false;\n this.needsUpdate = false;\n this.originDistance = options.originDistance ?? 1;\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING };\n\n this.active = new OldSplatAccumulator();\n this.active.refCount = 1;\n this.accumulatorCount = 1;\n this.freeAccumulators = [];\n // Start with the minimum of 2 total accumulators\n for (let count = 0; count < 1; ++count) {\n this.freeAccumulators.push(new OldSplatAccumulator());\n this.accumulatorCount += 1;\n }\n\n // Create a default SparkViewpoint that is used when we call render()\n // on the scene and has the sorted Gsplat collection from that viewpoint.\n this.defaultView = new OldSparkViewpoint({\n ...options.view,\n autoUpdate: true,\n spark: this,\n });\n this.viewpoint = this.defaultView;\n this.prepareViewpoint(this.viewpoint);\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n }\n\n static makeUniforms() {\n // Create uniforms used for Gsplat vertex and fragment shaders\n const uniforms = {\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // Total number of Gsplats in packedSplats to render\n numSplats: { value: 0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable stochastic splat rendering\n stochastic: { value: false },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Enable splat texture rendering\n splatTexEnable: { value: false },\n // Splat texture to render\n splatTexture: { type: \"t\", value: OldSparkRenderer.EMPTY_SPLAT_TEXTURE },\n // Splat texture UV transform (multiply)\n splatTexMul: { value: new THREE.Matrix2() },\n // Splat texture UV transform (add)\n splatTexAdd: { value: new THREE.Vector2() },\n // Splat texture near plane distance\n splatTexNear: { value: 0.1 },\n // Splat texture far plane distance\n splatTexFar: { value: 1000.0 },\n // Splat texture mid plane distance, or 0.0 to disable\n splatTexMid: { value: 0.0 },\n // Gsplat collection to render\n packedSplats: { type: \"t\", value: PackedSplats.getEmptyArray },\n // Splat encoding ranges\n rgbMinMaxLnScaleMinMax: { value: new THREE.Vector4() },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n private canAllocAccumulator(): boolean {\n // Returns true if can allocate an accumulator immediately\n return (\n this.freeAccumulators.length > 0 ||\n this.accumulatorCount < MAX_ACCUMULATORS\n );\n }\n\n private maybeAllocAccumulator(): OldSplatAccumulator | null {\n // Allocate an accumulator immediately if possible, else return null\n let accumulator = this.freeAccumulators.pop();\n if (accumulator === undefined) {\n if (this.accumulatorCount >= MAX_ACCUMULATORS) {\n return null;\n }\n accumulator = new OldSplatAccumulator();\n this.accumulatorCount += 1;\n }\n accumulator.refCount = 1;\n return accumulator;\n }\n\n releaseAccumulator(accumulator: OldSplatAccumulator) {\n // Decrement reference count and recycle if no longer in use\n accumulator.refCount -= 1;\n if (accumulator.refCount === 0) {\n this.freeAccumulators.push(accumulator);\n }\n }\n\n newViewpoint(options: OldSparkViewpointOptions) {\n // Create a new SparkViewpoint for this SparkRenderer.\n // Note that every SparkRenderer has an initial spark.defaultView: SparkViewpoint\n // from construction, which is used for the default canvas render loop.\n // Calling this method allows you to create additional viewpoints, which can be\n // updated automatically each frame (performing Gsplat sorting every time there\n // is an update), or updated on-demand for controlled rendering for video render\n // or similar applications.\n return new OldSparkViewpoint({ ...options, spark: this });\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n // throw new Error(\"onBeforeRender disabled in SparkRenderer\");\n\n // Called by Three.js before rendering this SparkRenderer.\n // At this point we can't modify the geometry or material, all these must\n // be set in the scene already before this is called. Update the uniforms\n // to render the Gsplats from the current active viewpoint.\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.viewpoint.lastTime ?? time);\n this.viewpoint.lastTime = time;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== this.lastFrame;\n this.lastFrame = frame;\n\n const viewpoint = this.viewpoint;\n if (viewpoint === this.defaultView) {\n // When rendering is triggered on the default viewpoint,\n // perform automatic updates.\n if (isNewFrame) {\n if (!renderer.xr.isPresenting) {\n // Non-WebXR mode, just a single camera\n this.defaultView.viewToWorld = camera.matrixWorld.clone();\n this.defaultCameras = [this.defaultView.viewToWorld];\n } else {\n // In WebXR mode we are called multiple times, once for each eye,\n // so use their average to compute the sort center.\n const cameras = renderer.xr.getCamera().cameras;\n this.defaultCameras = cameras.map((camera) => camera.matrixWorld);\n this.defaultView.viewToWorld =\n averageOriginToWorlds(this.defaultCameras) ?? new THREE.Matrix4();\n }\n }\n\n if (this.autoUpdate) {\n this.update({ scene, viewToWorld: this.defaultView.viewToWorld });\n }\n }\n\n // Update uniforms for rendering\n\n if (isNewFrame) {\n // Keep these uniforms the same for both eyes if in WebXR\n if (this.material.premultipliedAlpha !== this.premultipliedAlpha) {\n this.material.premultipliedAlpha = this.premultipliedAlpha;\n this.material.needsUpdate = true;\n }\n this.uniforms.time.value = time;\n this.uniforms.deltaTime.value = deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (viewpoint.display && viewpoint.stochastic) {\n (this.geometry as OldSplatGeometry).instanceCount =\n this.uniforms.numSplats.value;\n }\n }\n\n if (viewpoint.target) {\n // Rendering to a texture target, so its dimensions\n this.uniforms.renderSize.value.set(\n viewpoint.target.width,\n viewpoint.target.height,\n );\n } else {\n // Rendering to the canvas or WebXR\n const renderSize = renderer.getDrawingBufferSize(\n this.uniforms.renderSize.value,\n );\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n\n // Update uniforms from instance properties\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n this.uniforms.encodeLinear.value = viewpoint.encodeLinear;\n this.uniforms.maxStdDev.value = this.maxStdDev;\n this.uniforms.minPixelRadius.value = this.minPixelRadius;\n this.uniforms.maxPixelRadius.value = this.maxPixelRadius;\n this.uniforms.minAlpha.value = this.minAlpha;\n this.uniforms.stochastic.value = viewpoint.stochastic;\n this.uniforms.enable2DGS.value = this.enable2DGS;\n this.uniforms.preBlurAmount.value = this.preBlurAmount;\n this.uniforms.blurAmount.value = this.blurAmount;\n this.uniforms.focalDistance.value = this.focalDistance;\n this.uniforms.apertureAngle.value = this.apertureAngle;\n this.uniforms.falloff.value = this.falloff;\n this.uniforms.clipXY.value = this.clipXY;\n this.uniforms.focalAdjustment.value = this.focalAdjustment;\n\n if (this.lastStochastic !== !viewpoint.stochastic) {\n this.lastStochastic = !viewpoint.stochastic;\n this.material.transparent = !viewpoint.stochastic;\n this.material.depthWrite = viewpoint.stochastic;\n this.material.needsUpdate = true;\n }\n\n if (this.splatTexture) {\n const { enable, texture, multiply, add, near, far, mid } =\n this.splatTexture;\n if (enable && texture) {\n this.uniforms.splatTexEnable.value = true;\n this.uniforms.splatTexture.value = texture;\n if (multiply) {\n this.uniforms.splatTexMul.value.fromArray(multiply.elements);\n } else {\n this.uniforms.splatTexMul.value.set(\n 0.5 / this.maxStdDev,\n 0,\n 0,\n 0.5 / this.maxStdDev,\n );\n }\n this.uniforms.splatTexAdd.value.set(add?.x ?? 0.5, add?.y ?? 0.5);\n this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value;\n this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value;\n this.uniforms.splatTexMid.value = mid ?? 0.0;\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n\n // Calculate the transform from the accumulator to the current camera\n const accumToWorld =\n viewpoint.display?.accumulator.toWorld ?? new THREE.Matrix4();\n const worldToCamera = camera.matrixWorld.clone().invert();\n const originToCamera = accumToWorld.clone().premultiply(worldToCamera);\n originToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n }\n\n // Update the uniforms for the given viewpoint.\n // Note that the client expects to be able to call render() at any point\n // to update the canvas, so we must switch the viewpoint back to\n // defaultView when we're finished.\n prepareViewpoint(viewpoint?: OldSparkViewpoint) {\n this.viewpoint = viewpoint ?? this.viewpoint;\n\n if (this.viewpoint.display) {\n const { accumulator, geometry } = this.viewpoint.display;\n this.uniforms.numSplats.value = accumulator.splats.numSplats;\n this.uniforms.packedSplats.value = accumulator.splats.getTexture();\n this.uniforms.rgbMinMaxLnScaleMinMax.value.set(\n accumulator.splats.splatEncoding?.rgbMin ?? 0.0,\n accumulator.splats.splatEncoding?.rgbMax ?? 1.0,\n accumulator.splats.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n accumulator.splats.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n this.geometry = geometry;\n this.material.transparent = !this.viewpoint.stochastic;\n this.material.depthWrite = this.viewpoint.stochastic;\n this.material.needsUpdate = true;\n } else {\n // No Gsplats to display for this viewpoint yet\n this.uniforms.numSplats.value = 0;\n this.uniforms.packedSplats.value = PackedSplats.getEmptyArray;\n this.geometry = EMPTY_GEOMETRY;\n }\n }\n\n // If spark.autoUpdate is false then you must manually call\n // spark.update({ scene }) to have the scene Gsplats be re-generated.\n update({\n scene,\n viewToWorld,\n }: { scene: THREE.Scene; viewToWorld?: THREE.Matrix4 }) {\n // Compute the transform for the SparkRenderer to use as origin\n // for Gsplat generation and accumulation.\n const originToWorld = this.matrixWorld;\n\n // Either do the update now, or in the next \"tick\" depending on preUpdate\n if (this.preUpdate) {\n this.updateInternal({\n scene,\n originToWorld: originToWorld.clone(),\n viewToWorld,\n });\n } else {\n // Pass the update parameters to be performed on the next tick\n this.pendingUpdate.scene = scene;\n this.pendingUpdate.originToWorld.copy(originToWorld);\n\n // Schedule a timeout if there isn't one already\n if (this.pendingUpdate.timeoutId === -1) {\n this.pendingUpdate.timeoutId = setTimeout(() => {\n const { scene, originToWorld } = this.pendingUpdate;\n this.pendingUpdate.scene = null;\n this.pendingUpdate.timeoutId = -1;\n const updated = this.updateInternal({\n scene: scene as THREE.Scene,\n originToWorld,\n viewToWorld,\n });\n\n if (updated) {\n // Flush to encourage eager execution\n const gl = this.renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n }, 1);\n }\n }\n }\n\n updateInternal({\n scene,\n originToWorld,\n viewToWorld,\n }: {\n scene: THREE.Scene;\n originToWorld?: THREE.Matrix4;\n viewToWorld?: THREE.Matrix4;\n }): boolean {\n if (!this.canAllocAccumulator()) {\n // We don't have any available accumulators because of sorting\n // back pressure, so don't update this time but try again next time.\n // Signal update not attempted.\n return false;\n }\n\n // Figure out the frame of the SparkRenderer and current view\n if (!originToWorld) {\n originToWorld = this.active.toWorld;\n }\n viewToWorld = viewToWorld ?? originToWorld.clone();\n\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.lastUpdateTime ?? time);\n this.lastUpdateTime = time;\n\n // Create a lookup from last active SplatGenerator to Gsplat mapping record\n const activeMapping = this.active.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Traverse visible scene to find all SplatGenerators and global SplatEdits\n const { generators, visibleGenerators, globalEdits } =\n this.compileScene(scene);\n\n // Let all SplatGenerators run their frameUpdate() method\n for (const object of generators) {\n object.frameUpdate?.({\n renderer: this.renderer,\n object,\n time,\n deltaTime,\n viewToWorld,\n globalEdits,\n });\n }\n\n const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid));\n\n // Make sure we have new version numbers for any objects with either\n // generator or numSplats that have changed since the last frame.\n for (const object of generators) {\n const current = activeMapping.get(object);\n const isVisible = object.generator && visibleGenHash.has(object.uuid);\n const numSplats = isVisible ? object.numSplats : 0;\n if (\n this.needsUpdate ||\n object.generator !== current?.generator ||\n numSplats !== current?.count\n ) {\n object.updateVersion();\n }\n }\n\n // Check if the origin is within the maximum allowed distance before\n // we trigger an update.\n const originUpdate = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: this.active.toWorld,\n maxDistance: this.originDistance,\n });\n\n // Check if we need any update at all\n const needsUpdate =\n this.needsUpdate ||\n originUpdate ||\n generators.length !== activeMapping.size ||\n generators.some((g) => g.version !== activeMapping.get(g)?.version);\n this.needsUpdate = false;\n\n let accumulator: OldSplatAccumulator | null = null;\n if (needsUpdate) {\n // Need to update, so allocate an accumulator\n accumulator = this.maybeAllocAccumulator();\n if (!accumulator) {\n // This should never happen since we checked canAllocAccumulator() above\n throw new Error(\"Unreachable\");\n }\n\n // Compute whether our view frame has changed enough to warrant\n // doing a Gsplat sort. Check both distance epsilon and\n // minimum co-orientation (dot product of quaternions)\n const originChanged = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: accumulator.toWorld,\n maxDistance: 0.00001,\n minCoorient: 0.99999,\n });\n\n // Compute an ordering of the generators with the rough goal\n // of keeping unchanging generators near the front to minimize\n // the number of Gsplats that need to be regenerated.\n const sorted = visibleGenerators\n .map((g, gIndex): [number, number, SplatGenerator] => {\n const lastGen = activeMapping.get(g);\n // If no previous generator, sort by absolute version, which will\n // tend to push frequently updated generators toward the end\n return !lastGen\n ? [Number.POSITIVE_INFINITY, g.version, g]\n : // Sort by version deltas then by previous ordering in the mapping,\n // attempting to keep unchanging generators near the front\n // to improve our chances of avoiding a re-generation.\n [g.version - lastGen.version, lastGen.base, g];\n })\n .sort((a, b) => {\n // Sort by first then second element of the tuple\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return a[1] - b[1];\n });\n const genOrder = sorted.map(([_version, _seq, g]) => g);\n\n // Compute sequential layout of generated splats\n const splatCounts = genOrder.map((g) => g.numSplats);\n const { maxSplats, mapping } =\n accumulator.splats.generateMapping(splatCounts);\n const newGenerators = genOrder.map((node, gIndex) => {\n const { base, count } = mapping[gIndex];\n return {\n node,\n generator: node.generator,\n version: node.version,\n base,\n count,\n };\n });\n\n // Compute worldToAccumulator origin transform (no scale)\n originToWorld\n .clone()\n .invert()\n .decompose(\n this.translateToAccumulator.value,\n this.rotateToAccumulator.value,\n new THREE.Vector3(),\n );\n\n // Generate the Gsplats according to the mapping that need updating\n accumulator.ensureGenerate(maxSplats);\n accumulator.splats.splatEncoding = { ...this.splatEncoding };\n const generated = accumulator.generateSplats({\n renderer: this.renderer,\n modifier: this.modifier,\n generators: newGenerators,\n forceUpdate: originChanged,\n originToWorld,\n });\n\n // Update splat version number\n accumulator.splatsVersion = this.active.splatsVersion + 1;\n // Increment the mapping version if the mapping isn't identical to before\n const hasCorrespondence = accumulator.hasCorrespondence(this.active);\n accumulator.mappingVersion =\n this.active.mappingVersion + (hasCorrespondence ? 0 : 1);\n\n // Release the old accumulator and make the new one active\n this.releaseAccumulator(this.active);\n this.active = accumulator;\n this.prepareViewpoint();\n }\n\n // Let the system breath before potentially triggering sorts\n setTimeout(() => {\n // Notify all auto-updating viewpoints that we updated the Gsplats\n for (const view of this.autoViewpoints) {\n view.autoPoll({ accumulator: accumulator ?? undefined });\n }\n }, 1);\n\n // Signal update was performed\n return true;\n }\n\n private compileScene(scene: THREE.Scene): {\n generators: SplatGenerator[];\n visibleGenerators: SplatGenerator[];\n globalEdits: SplatEdit[];\n } {\n // Take a snapshot of the SplatGenerators and SplatEdits in the scene\n // to be used to run an update.\n const generators: SplatGenerator[] = [];\n // Collect all SplatGenerators, even if not visible, because we want to\n // be able to call their update functions every frame.\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n generators.push(node);\n }\n });\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n visibleGenerators.push(node);\n }\n });\n\n const globalEdits = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEdits.add(node);\n }\n }\n });\n return {\n generators,\n visibleGenerators,\n globalEdits: Array.from(globalEdits),\n };\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n renderer,\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = false,\n }: {\n renderer?: THREE.WebGLRenderer;\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects?: THREE.Object3D[];\n update?: boolean;\n }): Promise {\n if (!this.envViewpoint) {\n this.envViewpoint = this.newViewpoint({ sort360: true });\n }\n if (\n !OldSparkRenderer.cubeRender ||\n OldSparkRenderer.cubeRender.target.width !== size ||\n OldSparkRenderer.cubeRender.near !== near ||\n OldSparkRenderer.cubeRender.far !== far\n ) {\n if (OldSparkRenderer.cubeRender) {\n OldSparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n generateMipmaps: true,\n minFilter: THREE.LinearMipMapLinearFilter,\n });\n const camera = new THREE.CubeCamera(near, far, target);\n OldSparkRenderer.cubeRender = { target, camera, near, far };\n }\n\n if (!OldSparkRenderer.pmrem) {\n OldSparkRenderer.pmrem = new THREE.PMREMGenerator(\n renderer ?? this.renderer,\n );\n }\n\n // Prepare the viewpoint, sorting Gsplats for this view origin.\n const viewToWorld = new THREE.Matrix4().setPosition(worldCenter);\n await this.envViewpoint?.prepare({ scene, viewToWorld, update });\n\n const { target, camera } = OldSparkRenderer.cubeRender;\n camera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n // Update the CubeCamera, which performs 6 cube face renders\n this.prepareViewpoint(this.envViewpoint);\n camera.update(renderer ?? this.renderer, scene);\n\n // Restore viewpoint to default and object visibility\n this.prepareViewpoint(this.defaultView);\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n // Pre-filter the cube map using THREE.PMREMGenerator\n return OldSparkRenderer.pmrem?.fromCubemap(target.texture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n // Utility function that helps extract the Gsplat RGBA values from a\n // SplatGenerator, including the result of any real-time RGBA SDF edits applied\n // to a SplatMesh. This effectively \"bakes\" any computed RGBA values, which can\n // now be used as a pipeline input via SplatMesh.splatRgba to inject these\n // baked values into the Gsplat data.\n getRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): RgbaArray {\n const mapping = this.active.mapping.find(({ node }) => node === generator);\n if (!mapping) {\n throw new Error(\"Generator not found\");\n }\n\n rgba = rgba ?? new RgbaArray();\n rgba.fromPackedSplats({\n packedSplats: this.active.splats,\n base: mapping.base,\n count: mapping.count,\n renderer: this.renderer,\n });\n return rgba;\n }\n\n // Utility function that builds on getRgba({ generator }) and additionally\n // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA\n // in that byte order.\n async readRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): Promise {\n rgba = this.getRgba({ generator, rgba });\n return rgba.read();\n }\n}\n\nconst EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0);\n\nconst reorderSplats = dynoBlock(\n { packedSplats: TPackedSplats, index: \"int\" },\n { gsplat: Gsplat },\n ({ packedSplats, index }) => {\n if (!packedSplats || !index) {\n throw new Error(\"Invalid input\");\n }\n const gsplat = readPackedSplat(packedSplats, index);\n return { gsplat };\n },\n);\n\nfunction averageOriginToWorlds(\n originToWorlds: THREE.Matrix4[],\n): THREE.Matrix4 | null {\n if (originToWorlds.length === 0) {\n return null;\n }\n\n const position = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n\n const positions: THREE.Vector3[] = [];\n const quaternions: THREE.Quaternion[] = [];\n for (const matrix of originToWorlds) {\n matrix.decompose(position, quaternion, scale);\n positions.push(position);\n quaternions.push(quaternion);\n }\n\n return new THREE.Matrix4().compose(\n averagePositions(positions),\n averageQuaternions(quaternions),\n new THREE.Vector3(1, 1, 1),\n );\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n rgba.a = min(1.0, a) * exp(exponent);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["QUAD_VERTICES","QUAD_INDICES","max","l","add","Inflate","Gunzip","_a","SplatFileType","dyno","inputs","_b","outputs","step","normalize","floatBitsToUint","uintBitsToFloat","bits","sign","exp","distance","b2","offset","BundledWorker","worker","maxWorkers","packedSplats","index","base","count","extSplats","covSplats","gsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","b","scale","rotate","translate","recolor","covsplat","rgbMinMaxLnScaleMinMax","viewCenter","viewDir","sortRadial","value","min","a","t","edge","edge0","edge1","cond","f","select","vector","w","swizzle","position","dir","texture","degrees","radians","sin","cos","tan","ptr","splatDefines","oldSplatVertex","oldSplatFragment","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","newArray","SplatEditSdfType","SplatEditRgbaBlendMode","uniform","sdfArray","numEdits","rgbaDisplaceEdits","textureSize","shaders","dot","now","instances","result","traverseStart","keyIndices","target","cubeCamera","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","lodSplats","dyno.DynoUsampler2DArray","dyno.dynoBlock","dyno.Dyno","dyno.unindentLines","dyno.Gsplat","dyno.defineGsplat","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","array","init_wasm","edits","_","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","packed_position","packed_rotation","packed_scale","packed_color","SH_C0","length","numSplats","sortOrigin","sortDirection","sortDepthBias","sort360","generators","camera","scene","originToWorld","i32","section","i","input","transformPos","spz","SplatSkinningMode","skinning","color","metrics","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","gamepad"],"mappings":"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","x_google_ignoreList":[1]} \ No newline at end of file +{"version":3,"file":"spark.module.js","sources":["../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../node_modules/fflate/esm/browser.js","../src/utils.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../rust/spark-rs/pkg/spark_rs.js","../virtual:decode-64","../src/wasm.ts","../src/SplatWorker.ts","../src/PackedSplats.ts","../src/SplatLoader.ts","../src/ExtSplats.ts","../src/RgbaArray.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/ply.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n\nexport function uploadU32DataTextureRows(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n width: number,\n rows: number,\n data: Uint32Array,\n) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props?.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n // Note: instead of saving and restoring the pixelStorei parameters\n // renderer.state.pixelStorei can be used with Three.js >= r184\n const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);\n const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n width,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n data,\n );\n renderer.state.unbindTexture();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply);\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","function b64ToUint6(nChr) {\n return nChr > 64 && nChr < 91\n ? nChr - 65\n : nChr > 96 && nChr < 123\n ? nChr - 71\n : nChr > 47 && nChr < 58\n ? nChr + 4\n : nChr === 43\n ? 62\n : nChr === 47\n ? 63\n : 0\n}\n\nfunction base64ToUint8(sBase64, nBlocksSize) {\n const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, \"\")\n const nInLen = sB64Enc.length\n const nOutLen = nBlocksSize\n ? Math.ceil(((nInLen * 3 + 1) >> 2) / nBlocksSize) * nBlocksSize\n : (nInLen * 3 + 1) >> 2\n const taBytes = new Uint8Array(nOutLen)\n\n let nMod3\n let nMod4\n let nUint24 = 0\n let nOutIdx = 0\n for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4))\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n nMod3 = 0\n while (nMod3 < 3 && nOutIdx < nOutLen) {\n taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255\n nMod3++\n nOutIdx++\n }\n nUint24 = 0\n }\n }\n\n return taBytes\n}\nfunction toUint8(b64) {\n if (typeof Uint8Array.fromBase64 === \"function\") return Uint8Array.fromBase64(b64)\n let bin = atob(b64)\n let len = bin.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = bin.charCodeAt(i)\n }\n return bytes\n}\n\nconst decode64 = typeof atob === \"function\" ? toUint8 : base64ToUint8\n\nexport default decode64\n","import init_wasm from \"spark-rs\";\nimport WASM from \"spark-rs/spark_rs_bg.wasm?arraybuffer&base64\";\n\nexport const WASM_MODULE = WebAssembly.compile(WASM);\n\n// Flag indicating if the spark-rs project has been initialized\nlet initialized = false;\n\n/**\n * Promise for module instantiation, ensuring calls to\n * imports from the spark-rs project can be used.\n */\nexport const initialization = init_wasm({ module_or_path: WASM_MODULE }).then(\n (_) => {\n initialized = true;\n },\n);\n\n/**\n * Indicates if the wasm module instantiation has completed or not.\n */\nexport function isInitialized() {\n return initialized;\n}\n","import { getTransferable } from \"./utils\";\nimport { WASM_MODULE } from \"./wasm\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n WASM_MODULE.then((module) => {\n this.worker.postMessage({ name: \"init-wasm\", module });\n });\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\n\nexport const randomColourFromID = unindent(`\nprecision highp float;\nprecision highp int;\n\n// Blazing fast HSL to RGB conversion\nvec3 hsl2rgb(vec3 c) {\n vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0));\n}\n\nvec4 getDeterministicColor(uint id) {\n float hue = fract(float(id) * 0.618033988749895);\n vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6));\n return vec4(rgb, 1.0);\n}\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH, randomColourFromID } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { type DynoUsampler2DArray, pagedSplatTexCoord } from \"./dyno\";\nimport {\n decodeExtSplat,\n getTextureSize,\n unpackSplat,\n uploadU32DataTextureRows,\n} from \"./utils\";\nimport * as wasm from \"./wasm\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nconst PAGE_WIDTH = 256;\nconst PAGE_HEIGHT = 256;\nconst PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; // 65536\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasm.initialization;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult }; \n const lodSplats = result.lodSplats;\n\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n uploadU32DataTextureRows(\n renderer,\n indicesTexture,\n 4096,\n rows,\n textureIndices,\n );\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\ninterface PageUpload {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n shArrays: Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n}\n\nexport class SplatPager {\n readonly renderer: THREE.WebGLRenderer;\n\n readonly extSplats: boolean;\n readonly maxPages: number;\n readonly maxSplats: number;\n readonly pageSplats: number;\n\n readonly maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: PageUpload[];\n readyUploads: PageUpload[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n highlightLabel: dyno.DynoInt<\"highlightLabel\">;\n lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>;\n labelTexture: dyno.DynoUsampler2DArray<\"label\", THREE.DataArrayTexture>;\n instanceTexture: dyno.DynoUsampler2DArray<\"instance\", THREE.DataArrayTexture>;\n labelLookupModifier: dyno.Dyno<\n {\n gsplat: typeof dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray', \n instance: 'usampler2DArray', \n highlightLabel: 'int'\n },\n { gsplat: typeof dyno.Gsplat }\n >\n\n readonly shTextures: [\n dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>,\n ];\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = PAGE_SPLATS;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS);\n this.maxSplats = this.maxPages * PAGE_SPLATS;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(4),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(4)\n : SplatPager.emptyExtTexture,\n });\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n this.shTextures = emptyShTextures.map(\n (texture) =>\n new dyno.DynoUsampler2DArray({\n value: texture,\n }),\n ) as typeof this.shTextures;\n\n this.highlightLabel = new dyno.DynoInt({ key: 'highlightLabel', value: -1 }); \n this.lookUpTexture = new dyno.DynoUsampler2D({\n value: new THREE.DataTexture(\n new Uint32Array(256), \n 256, 1,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n )\n });\n this.lookUpTexture.value.image.data.fill(1);\n this.lookUpTexture.value.needsUpdate = true;\n this.renderer.initTexture(this.lookUpTexture.value);\n\n this.labelTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.instanceTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.labelLookupModifier = new dyno.Dyno({\n inTypes: { \n gsplat: dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray',\n instance: 'usampler2DArray',\n highlightLabel: 'int'\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: { \n lookup: this.lookUpTexture, \n label: this.labelTexture,\n instance: this.instanceTexture,\n highlightLabel: this.highlightLabel\n },\n globals: () => [\n randomColourFromID,\n dyno.defineGsplat],\n statements: ({ inputs, outputs }) => \n dyno.unindentLines(`\n Gsplat g = ${inputs.gsplat};\n \n ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16);\n uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0);\n uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r;\n if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; }\n\n if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) {\n uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0);\n vec4 splatColour = getDeterministicColor(instanceTexel.r);\n g.rgba = mix(g.rgba, splatColour, 0.6);\n }\n\n ${outputs.gsplat} = g;\n `), \n }); //DynoUniform\n\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3Texture: this.shTextures[2],\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3TextureA: this.shTextures[2],\n sh3TextureB: this.shTextures[3],\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (this.labelTexture.value !== SplatPager.emptyLabelTexture) {\n this.labelTexture.value.dispose();\n this.labelTexture.value.source.data = null;\n }\n if (this.instanceTexture.value !== SplatPager.emptyLabelTexture) {\n this.instanceTexture.value.dispose();\n this.instanceTexture.value.source.data = null;\n }\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < emptyShTextures.length; i++) {\n const texture = this.shTextures[i].value;\n if (texture !== emptyShTextures[i]) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n\n\n public updateLabelLookup(categories: Set) {\n const array = this.lookUpTexture.value.image.data;\n array.fill(0);\n categories.forEach(id => {\n if (id >= 0 && id < 256) array[id] = 1;\n });\n this.lookUpTexture.value.needsUpdate = true;\n }\n\n private newUintArrayTex(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n private ensureLabelTextures() {\n if (this.labelTexture.value === SplatPager.emptyLabelTexture) {\n this.labelTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n public updateLabelHighlight(id: number) {\n this.highlightLabel.value = id\n }\n\n private ensureInstanceTextures() {\n if (this.instanceTexture.value === SplatPager.emptyLabelTexture) {\n this.instanceTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < this.curSh; i++) {\n if (this.shTextures[i].value === emptyShTextures[i]) {\n const elementsPerSplat =\n this.shTextures[i].value === SplatPager.emptyUint32x2 ? 2 : 4;\n this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat);\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n removeSplats(splats: PagedSplats) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return;\n }\n\n const freedPages = new Set();\n\n while (chunks.length > 0) {\n const chunk = chunks.pop();\n if (chunk) {\n const { page } = chunk;\n this.pageToSplatsChunk[page] = undefined;\n freedPages.add(page);\n this.pageFreelist.push(page);\n this.pageLru.delete(chunk);\n }\n }\n this.splatsChunkToPage.delete(splats);\n this.freeablePages = this.freeablePages.filter(\n (page) => !freedPages.has(page),\n );\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n shArrays: Array,\n extArray?: Uint32Array,\n labels?: Uint32Array,\n instances?: Uint32Array\n ) {\n const pageBase = page * PAGE_SPLATS;\n\n uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray);\n\n if (extArray) {\n uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray);\n }\n\n // In case of extSplats there can be 4 shArrays for 3 sh degrees\n const numSh = Math.min(shArrays.length, 3);\n this.ensureShTextures(numSh);\n\n if ( labels !== undefined ) {\n this.ensureLabelTextures();\n const labels_arr = labels as Uint32Array;\n const array = this.labelTexture.value.image.data;\n array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr);\n this.labelTexture.value.addLayerUpdate(page);\n this.labelTexture.value.needsUpdate = true;\n }\n\n if ( instances !== undefined ) {\n this.ensureInstanceTextures();\n const instances_arr = instances as Uint32Array;\n const array = this.instanceTexture.value.image.data;\n array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr);\n this.instanceTexture.value.addLayerUpdate(page);\n this.instanceTexture.value.needsUpdate = true;\n }\n\n for (let i = 0; i < shArrays.length; i++) {\n const array = shArrays[i];\n const elementsPerSplat =\n this.shTextures[i].value.format === THREE.RGIntegerFormat ? 2 : 4;\n uploadTextureLayer(\n this.shTextures[i],\n page,\n pageBase * elementsPerSplat,\n array,\n );\n }\n }\n\n private newUint32ArrayTexture(\n elementsPerSplat: 2 | 4,\n ): THREE.DataArrayTexture {\n const data = new Uint32Array(\n this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat,\n );\n const texture = new THREE.DataArrayTexture(\n data,\n PAGE_WIDTH,\n PAGE_HEIGHT,\n this.maxPages,\n );\n texture.format =\n elementsPerSplat === 2 ? THREE.RGIntegerFormat : THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = elementsPerSplat === 2 ? \"RG32UI\" : \"RGBA32UI\";\n texture.needsUpdate = true;\n // Avoid initial upload of empty/null data\n texture.source.dataReady = false;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: PAGE_SPLATS,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (isExtResult(data, this.extSplats)) {\n const extArrays = data.extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3a as Uint32Array,\n data.extra.sh3b as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n extArray,\n shArrays,\n labels: extra?.labels,\n instances: extra?.instances\n });\n } else {\n const packedArray = data.packedArray;\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3 as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n shArrays,\n });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload;\n this.uploadPage(page, packedArray, shArrays, extArray, labels, instances);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptyLabelTexture = this.emptyUint32x4;\n static emptyShTextures = [\n this.emptyUint32x2,\n this.emptyUint32x4,\n this.emptyUint32x4,\n ] as const;\n static emptyExtShTextures = [\n this.emptyUint32x4,\n this.emptyUint32x4,\n this.emptyUint32x4, // SH3A\n this.emptyUint32x4, // SH3B\n ] as const;\n}\n\n// Convenience function to distinguish ExtResult and PackedResult\nfunction isExtResult(\n data: ExtResult | PackedResult,\n extSplats: boolean,\n): data is ExtResult {\n return extSplats;\n}\n\nfunction uploadTextureLayer(\n texture: DynoUsampler2DArray,\n layer: number,\n dstOffset: number,\n data: Uint32Array,\n) {\n const array = texture.value.image.data;\n array.subarray(dstOffset, dstOffset + data.length).set(data);\n\n texture.value.addLayerUpdate(layer);\n texture.value.needsUpdate = true;\n texture.value.source.dataReady = true;\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\nimport * as wasm from \"./wasm\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n \n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n public updateLabelLookup(categories: Set) {\n if (this.paged) {\n this.paged.pager?.updateLabelLookup(categories);\n }\n }\n\n public updateLabelHighlight(id: number) {\n if (this.paged) {\n this.paged.pager?.updateLabelHighlight(id);\n }\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n \n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n if (this.paged?.pager?.labelLookupModifier) {\n gsplat = this.paged?.pager?.labelLookupModifier.apply({ gsplat }).gsplat;\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !wasm.isInitialized() ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n activeCubeFace: renderer.getActiveCubeFace(),\n activeMipmapLevel: renderer.getActiveMipmapLevel(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n activeCubeFace: number;\n activeMipmapLevel: number;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(\n state.target,\n state.activeCubeFace,\n state.activeMipmapLevel,\n );\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n uploadU32DataTextureRows,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Generalized Gaussian exponent parameter. The kernel is\n * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0`\n * uses a quartic radial falloff.\n * @default 1.0\n */\n gaussianK?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n lodTraverseMode?: \"dynamic\" | \"standard\";\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n gaussianK: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n lodTraverseMode: \"dynamic\" | \"standard\";\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.gaussianK = options.gaussianK ?? 1.0;\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.lodTraverseMode = options.lodTraverseMode ?? \"standard\";\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n // Check if the provoking vertex convention should be changed\n const provokingVertexExt = this.renderer\n .getContext()\n .getExtension(\"WEBGL_provoking_vertex\");\n if (provokingVertexExt) {\n provokingVertexExt.provokingVertexWEBGL(\n provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL,\n );\n }\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Generalized Gaussian k. The radial exponent is 2 * gaussianK.\n gaussianK: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n // Determine render target\n const currentRenderTarget = renderer.getRenderTarget();\n const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget);\n if (currentRenderTarget) {\n spark.renderSize.set(\n currentRenderTarget.width,\n currentRenderTarget.height,\n );\n\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n if (\n isXRRenderTarget &&\n spark.renderSize.x === 1 &&\n spark.renderSize.y === 1\n ) {\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n spark.renderSize.x = baseLayer.framebufferWidth;\n spark.renderSize.y = baseLayer.framebufferHeight;\n }\n }\n } else {\n renderer.getDrawingBufferSize(spark.renderSize);\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.gaussianK.value = spark.gaussianK;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n\n const outputColorSpace =\n currentRenderTarget === null\n ? renderer.outputColorSpace\n : isXRRenderTarget\n ? currentRenderTarget.texture.colorSpace\n : THREE.ColorManagement.workingColorSpace;\n this.uniforms.encodeLinear.value =\n outputColorSpace !== THREE.SRGBColorSpace;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n uploadU32DataTextureRows(\n renderer,\n this.orderingTexture,\n 4096,\n rows,\n result.ordering,\n );\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n traverseMode: this.lodTraverseMode,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n if (oldest.splats instanceof PagedSplats) {\n this.pager?.removeSplats(oldest.splats);\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n\nfunction checkIsXRRenderTarget(renderTarget: THREE.RenderTarget | null) {\n return (renderTarget as unknown as Record)?.isXRRenderTarget;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["SplatFileType","dyno","inputs","_a","_b","outputs","step","packedSplats","index","base","count","extSplats","covSplats","gsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","b","scale","rotate","translate","recolor","covsplat","rgbMinMaxLnScaleMinMax","viewCenter","viewDir","sortRadial","value","max","l","add","Inflate","Gunzip","normalize","floatBitsToUint","uintBitsToFloat","bits","sign","exp","distance","b2","offset","texture","min","a","t","edge","edge0","edge1","cond","f","select","vector","w","swizzle","position","dir","degrees","radians","sin","cos","tan","splatDefines","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","SplatEditSdfType","SplatEditRgbaBlendMode","uniform","sdfArray","numEdits","rgbaDisplaceEdits","length","ptr","init_wasm","BundledWorker","worker","newArray","textureSize","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","wasm.initialization","result","lodSplats","dyno.DynoUsampler2DArray","dyno.Dyno","dyno.Gsplat","dyno.defineGsplat","dyno.unindentLines","dyno.dynoBlock","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","edits","wasm.isInitialized","shaders","dot","now","instances","traverseStart","keyIndices","target","cubeCamera","_","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","packed_position","packed_rotation","packed_scale","packed_color","SH_C0","i32","section","i","input","transformPos","spz","SplatSkinningMode","skinning","color","metrics","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","gamepad"],"mappings":"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","x_google_ignoreList":[7]} \ No newline at end of file diff --git a/dist/spark.module.min.js b/dist/spark.module.min.js index 0aea37f5..fcd520a5 100644 --- a/dist/spark.module.min.js +++ b/dist/spark.module.min.js @@ -1,483 +1,84 @@ -import * as G from "three"; -import { Loader as go, FileLoader as Qo, Quaternion as tB, Vector3 as gI, Color as HB, Matrix4 as kQ } from "three"; -import { FullScreenQuad as VQ } from "three/addons/postprocessing/Pass.js"; -class LQ extends G.InstancedBufferGeometry { - constructor(A, I) { - super(), this.ordering = A, this.setAttribute("position", new G.BufferAttribute(Bo, 3)), this.setIndex(new G.BufferAttribute(Co, 1)), this._maxInstanceCount = A.length, this.instanceCount = I, this.attribute = new G.InstancedBufferAttribute(A, 1, !1, 1), this.attribute.setUsage(G.DynamicDrawUsage), this.setAttribute("splatIndex", this.attribute); - } - update(A, I) { - this.ordering = A, this.attribute.array = A, this.instanceCount = I, this.attribute.addUpdateRange(0, I), this.attribute.needsUpdate = !0; - } -} -const Bo = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]), Co = new Uint16Array([0, 1, 2, 0, 2, 3]), jB = '(function(){"use strict";class gI{static __wrap(A){A=A>>>0;const I=Object.create(gI.prototype);return I.__wbg_ptr=A,Ug.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,Ug.unregister(this),A}free(){const A=this.__destroy_into_raw();L.__wbg_csplatarray_free(A,0)}bhatt_lod(A){L.csplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return L.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){L.csplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return L.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){L.csplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=L.csplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_extsplats_lod(){const A=L.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats(){const A=L.csplatarray_to_packedsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats_lod(){const A=L.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}get maxShDegree(){return L.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return L.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(A){L.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){L.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(gI.prototype[Symbol.dispose]=gI.prototype.free);class QI{static __wrap(A){A=A>>>0;const I=Object.create(QI.prototype);return I.__wbg_ptr=A,cg.register(I,I.__wbg_ptr,I),I}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,cg.unregister(this),A}free(){const A=this.__destroy_into_raw();L.__wbg_gsplatarray_free(A,0)}get maxShDegree(){return L.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return L.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(A){L.gsplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return L.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){L.gsplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return L.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,I){L.gsplatarray_tiny_lod(this.__wbg_ptr,A,I)}to_extsplats(){const A=L.gsplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_extsplats_lod(){const A=L.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw QA(A[1]);return QA(A[0])}to_packedsplats(A){const I=L.gsplatarray_to_packedsplats(this.__wbg_ptr,A);if(I[2])throw QA(I[1]);return QA(I[0])}to_packedsplats_lod(A){const I=L.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,A);if(I[2])throw QA(I[1]);return QA(I[0])}set maxShDegree(A){L.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){L.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(QI.prototype[Symbol.dispose]=QI.prototype.free);function UQ(Q,A,I){return L.sort32_splats(Q,A,I)>>>0}function cQ(Q,A,I){return L.sort_splats(Q,A,I)>>>0}function HQ(){return{__proto__:null,"./spark_worker_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,I){return Error(sI(A,I))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(A){const I=A,g=typeof I=="boolean"?I:void 0;return NI(g)?16777215:g?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(A,I){const g=OI(I),B=ZI(g,L.__wbindgen_malloc,L.__wbindgen_realloc),C=wI;dA().setInt32(A+4,C,!0),dA().setInt32(A+0,B,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(A,I){return A in I},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(A){return!A},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(A){const I=A;return typeof I=="object"&&I!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(A){return A===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(A,I){return A==I},__wbg___wbindgen_number_get_7579aab02a8a620c:function(A,I){const g=I,B=typeof g=="number"?g:void 0;dA().setFloat64(A+8,NI(B)?0:B,!0),dA().setInt32(A+0,!NI(B),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(A,I){const g=I,B=typeof g=="string"?g:void 0;var C=NI(B)?0:ZI(B,L.__wbindgen_malloc,L.__wbindgen_realloc),E=wI;dA().setInt32(A+4,E,!0),dA().setInt32(A+0,C,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,I){throw new Error(sI(A,I))},__wbg_csplatarray_new:function(A){return gI.__wrap(A)},__wbg_error_a6fa202b58aa1cd3:function(A,I){let g,B;try{g=A,B=I,console.error(sI(A,I))}finally{L.__wbindgen_free(g,B,1)}},__wbg_get_4848e350b40afc16:function(A,I){return A[I>>>0]},__wbg_get_f96702c6245e4ef9:function(){return Lg(function(A,I){return Reflect.get(A,I)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(A,I){return A[I>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(A,I){return A[I]},__wbg_gsplatarray_new:function(A){return QI.__wrap(A)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(A){let I;try{I=A instanceof ArrayBuffer}catch{I=!1}return I},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(A){let I;try{I=A instanceof Uint8Array}catch{I=!1}return I},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_6e821edde497a532:function(A){return A.length},__wbg_length_a4ca9e78359b5f1f:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_a560378ea1240b14:function(A){return new Uint8Array(A)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_41a22191b9bdfd66:function(A){return new Uint32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,I,g){Uint8Array.prototype.set.call(YQ(A,I),g)},__wbg_prototypesetcall_64c287a27cc24d27:function(A,I,g){Uint16Array.prototype.set.call(aQ(A,I),g)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,I,g){Uint32Array.prototype.set.call(Hg(A,I),g)},__wbg_push_6bdbc990be5ac37b:function(A,I){return A.push(I)},__wbg_set_448126769bf7c181:function(A,I,g){A.set(Hg(I,g))},__wbg_set_6be42768c690e380:function(A,I,g){A[I]=g},__wbg_set_81b4174352e6a095:function(A,I,g){A.set(I,g>>>0)},__wbg_set_8ee2d34facb8466e:function(){return Lg(function(A,I,g){return Reflect.set(A,I,g)},arguments)},__wbg_set_index_338a66e40fc45dee:function(A,I,g){A[I>>>0]=g>>>0},__wbg_stack_3b0d974bbf31e44f:function(A,I){const g=I.stack,B=ZI(g,L.__wbindgen_malloc,L.__wbindgen_realloc),C=wI;dA().setInt32(A+4,C,!0),dA().setInt32(A+0,B,!0)},__wbg_subarray_0f98d3fb634508ad:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_517cd0f1811ab872:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(A,I,g){return A.subarray(I>>>0,g>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,I){return sI(A,I)},__wbindgen_init_externref_table:function(){const A=L.__wbindgen_externrefs,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)}}}}typeof FinalizationRegistry>"u"||new FinalizationRegistry(Q=>L.__wbg_chunkdecoder_free(Q>>>0,1));const Ug=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>L.__wbg_csplatarray_free(Q>>>0,1)),cg=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(Q=>L.__wbg_gsplatarray_free(Q>>>0,1));function LQ(Q){const A=L.__externref_table_alloc();return L.__wbindgen_externrefs.set(A,Q),A}function OI(Q){const A=typeof Q;if(A=="number"||A=="boolean"||Q==null)return`${Q}`;if(A=="string")return`"${Q}"`;if(A=="symbol"){const B=Q.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=Q.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(Q)){const B=Q.length;let C="[";B>0&&(C+=OI(Q[0]));for(let E=1;E1)g=I[1];else return toString.call(Q);if(g=="Object")try{return"Object("+JSON.stringify(Q)+")"}catch{return"Object"}return Q instanceof Error?`${Q.name}: ${Q.message}\n${Q.stack}`:g}function aQ(Q,A){return Q=Q>>>0,KQ().subarray(Q/2,Q/2+A)}function Hg(Q,A){return Q=Q>>>0,tQ().subarray(Q/4,Q/4+A)}function YQ(Q,A){return Q=Q>>>0,DI().subarray(Q/1,Q/1+A)}let OA=null;function dA(){return(OA===null||OA.buffer.detached===!0||OA.buffer.detached===void 0&&OA.buffer!==L.memory.buffer)&&(OA=new DataView(L.memory.buffer)),OA}function sI(Q,A){return Q=Q>>>0,dQ(Q,A)}let BI=null;function KQ(){return(BI===null||BI.byteLength===0)&&(BI=new Uint16Array(L.memory.buffer)),BI}let CI=null;function tQ(){return(CI===null||CI.byteLength===0)&&(CI=new Uint32Array(L.memory.buffer)),CI}let EI=null;function DI(){return(EI===null||EI.byteLength===0)&&(EI=new Uint8Array(L.memory.buffer)),EI}function Lg(Q,A){try{return Q.apply(this,A)}catch(I){const g=LQ(I);L.__wbindgen_exn_store(g)}}function NI(Q){return Q==null}function ZI(Q,A,I){if(I===void 0){const D=iI.encode(Q),i=A(D.length,1)>>>0;return DI().subarray(i,i+D.length).set(D),wI=D.length,i}let g=Q.length,B=A(g,1)>>>0;const C=DI();let E=0;for(;E127)break;C[B+E]=D}if(E!==g){E!==0&&(Q=Q.slice(E)),B=I(B,g,g=E+Q.length*3,1)>>>0;const D=DI().subarray(B+E,B+g),i=iI.encodeInto(Q,D);E+=i.written,B=I(B,g,E,1)>>>0}return wI=E,B}function QA(Q){const A=L.__wbindgen_externrefs.get(Q);return L.__externref_table_dealloc(Q),A}let JI=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});JI.decode();const qQ=2146435072;let TI=0;function dQ(Q,A){return TI+=A,TI>=qQ&&(JI=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),JI.decode(),TI=A),JI.decode(DI().subarray(Q,Q+A))}const iI=new TextEncoder;"encodeInto"in iI||(iI.encodeInto=function(Q,A){const I=iI.encode(Q);return A.set(I),{read:Q.length,written:I.length}});let wI=0,L;function xQ(Q,A){return L=Q.exports,OA=null,BI=null,CI=null,EI=null,L.__wbindgen_start(),L}async function rQ(Q,A){if(typeof Response=="function"&&Q instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(Q,A)}catch(B){if(Q.ok&&I(Q.type)&&Q.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",B);else throw B}const g=await Q.arrayBuffer();return await WebAssembly.instantiate(g,A)}else{const g=await WebAssembly.instantiate(Q,A);return g instanceof WebAssembly.Instance?{instance:g,module:Q}:g}function I(g){switch(g){case"basic":case"cors":case"default":return!0}return!1}}async function nQ(Q){if(L!==void 0)return L;Q!==void 0&&(Object.getPrototypeOf(Q)===Object.prototype?{module_or_path:Q}=Q:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),Q===void 0&&(Q=new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2A4YD9gnCB6YF+AbnCcsHhwHuCUzrCVCbA+8JvgetB7YG9wm7B7cDiAPkCcUHtAX6BvQJyQeKAfIJSekJU50D7QnAB9QHvQb5CbwHtQOJA+UJwwenBfcG+wnKB4gB+AlL/AlRngP+Cb8HrAeSCYMH4QeWBZ0J4geXBaAJ1QLbBZ8JoQmvA+UHogmpBb8FgwfjB5gFowm5BKkFxQXhBO8BlgrFCKsEyQF/1wiYCtcIngaYCJcIxwiqCLsFlQpk0QXGCLcIsAi2CP8F8gXzBYEG7wbvBu8GpAmkCY4IjgiOCLwEvAS9CdIE2APYA5sE0giSCZUKpgm8CPgH5geaBaUJ+gOpCKcJqAmmCs4IvQrfCbgGuQbcAaQB1AWmB+kGYsAFpAqlCr4J1wWNBdgFtgqzBN4H3wdPoQW8BbMF5wajA50FmgiZCM0I6QWtCYAH2wL0BYgCvgjIB9YHgwLIAdkBpQaiCsUJpQbBCuUIoAazCp0KxQnBCsYJ8AbGCYgGsQmpCuoGrgnxB7UK4AejCsUJ4AfBCtwGqwqCCp4KqAepCdMJ2Aa9CJoHrAnWCd4FwAiqB68J1wnWBqsJ1QnBBowGqgnUCaEG7QWwCdgJlAbZB8wFxgbjBM8IzwiyCegFwwX/BO8Djwi9BdAIzwnSCd4I4geXBbMJ5gj6B9kJrQr2Bq0GlQX1BbMK0QjtBMsD4wWsCq4KgwemBPYFgweKBpAItQkMAogBCsDmVJUK1NUBBBd/HX4FeyF9IwBB8ANrIgIkACAAEKIBIAIgACgCCDYCLCACIAJBLGqtQoCAgIAQhCIsNwOwAiACQgE3AuwCIAJBATYC5AIgAkHM5sEANgLgAiACIAJBsAJqNgLoAiACQdAAaiACQeACahDsAwJAAkACQAJAAkACQAJ/IAIoAlAiAwRAIAIoAlQiBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgA2pJDQYgBUEAIAYgA0EnaksbDQcgBBCiAgsgAigCLEUNAQJAIAAoAggiBEUEQCAAQQRBABCJAgwBCyAEQQJ0IgkQcSIHRQ0DQQAhAwJAAkACQCAEQQRPBED9DAAAAAABAAAAAgAAAAMAAAAhNiAHIQUgBEH8//8/cSIDIQYDQCAFIDb9CwIAIAVBEGohBSA2/QwEAAAABAAAAAQAAAAEAAAA/a4BITYgBkEEayIGDQALIAMgBEYNAQsgByADQQJ0aiEFA0AgBSADNgIAIAVBBGohBSAEIANBAWoiA0cNAAsgAiAANgLkAiACIAJBsAJqNgLgAiACIAJB4AJqNgJQIARBAUYNAgwBCyACIAA2AuQCIAIgAkGwAmo2AuACIAIgAkHgAmo2AlALIARBFU8EQCACQdAAaiEGIwBBgCBrIgokAAJAAkACQAJAAkBBgIn6ACAEIARBgIn6AE8bIgUgBCAEQQF2ayIDIAMgBUkbIgVBgQhPBEAgA0H/////A0sNAkEwIAUgBUEwTRsiC0ECdCIDQf3///8HTw0CIAMQcSIFRQ0DIAcgBCAFIAsgBEHBAEkgBhBgIAVBBGsoAgAiBkF4cSILQQRBCCAGQQNxIgYbIANqSQ0EIAZBACALIANBJ2pLGw0FIAUQogIMAQsgByAEIApBgAggBEHBAEkgBhBgCyAKQYAgaiQADAULQdiVwQAQ/wcLAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQQQhAwNAIAcgAyAHaiACQeACahDKASAJIANBBGoiA0cNAAsLIAAgByAEEIkCIAdBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAlqSQ0GIANBACAEIAlBJ2pLGw0HIAcQogILIAAQmgQCQCAAKAIIIgMEQCADQQF0QQFrIgYQcSIFRQ0EQQAhAyACQQA2AjggAiAFNgI0IAIgBjYCMAJ9AkACQCAAKAIIIgQEQCAEIAZLBEAgAkEwakEAIARBAUEBEKQFIAIoAjQhBSACKAI4IQMLIAMgBWohBiAEQQFHBH8gBEEBayIEBEAgBkEBIAT8CwALIAUgAyAEaiIDagUgBgtBAToAACACIANBAWo2AjggACgCCEUNASAAKAIEIgQtABMiAyAELQASIgUgBC0AESIGIAUgBksbIgUgAyAFSxsiBg0CQwAAAAAMAwsgAkEANgI4C0EAQQBB3LvHABCMBwALQwAAQMEgACoCRCAALQBYQQJGIgMbIjxDAAAQQSAAKgJIIAMbIDyTQwAAfkOVIAZBAWtB/wFxs5SSEIkEIjwgPJILITwgBEEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEDIAVBgIACcSEHIAVBgPgBcSIFQYD4AUYEQCAHQRB0IgVBgICA/AdyIANFDQMaIAUgA0ENdHJBgICA/gdyDAMLIAdBEHQhByAFRQ0BIAVBDXRBgICA/ABxIANBDXRyQYCAgMADaiAHcgwCC0HU5sEAEP8HAAsgAyADZ0EQayIDQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIANBF3RrcgshAyACQf//ASA8IAO+IjxDAACAP14EfSA8EMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUQ703hjUQ4AgQxgVDGHIxP5WNIjz8AEGAgH4gPEMAAADHYBsgPEMA/v9GXhtBACA8IDxbGzsBPCACIAYEfUMAAEDBIAAqAkQgAC0AWEECRiIDGyI8QwAAEEEgACoCSCADGyA8k0MAAH5DlSAGQQFrQf8BcbOUkhCJBCI8IDySBUMAAAAACwJ/IARBDGovAQAiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhBSAEQYD4AXEiBEGA+AFGBEAgBUEQdCIEQYCAgPwHciADRQ0BGiAEIANBDXRyQYCAgP4HcgwBCyAFQRB0IgUgBEENdEGAgID8AHEgA0ENdHJBgICAwANqciAEDQAaIAMgA2dBEGsiA0H//wNxQQhqdEH///8DcSAFQYCAgNgDciADQRd0a3ILviI8QwAAgD9eBH0gPBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlDgCwAEgAiACQcABaq1CgICAgNABhDcDWCACIAJBPGqtQoCAgIDgAYQ3A1AgAkICNwLsAiACQQI2AuQCIAJBuOPBADYC4AIgAiACQdAAajYC6AIgAkGwAmogAkHgAmoQ7AMCQCACKAKwAiIDBEAgAigCtAIiBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgA2pJDQEgBUEAIAYgA0EnaksbDQcgBBCiAgsgAiACLwE8OwE+IAJBADYCQCACQQA2AkwgAkKAgICAwAA3AkRB2LbJACgCACIDRQRAEJMFIQMLIAMoAgAgAygCBCgCDBEEACEDIAJB8JrIAP0AAwD9CwNQIAIgA61Cxs7rhrfq7a0ShSIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEQpK23Z0FhELSgaqbq/qC16d/fiIZQoDoAoNCKIYgGUKAgJQDg0IYhiAZQoCAgKgKg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQoCAgICAgICARIQgGkLYotHvwqnlvy1+hSIcQu3cspuNpYnMywCFIhlC2KLR78Kp5b8tfiAZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQtKBqpur+oLXp39+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhISFQov9+pfHxteXhn+FIhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCAZQtii0e/CqeW/LX6FIhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRCiKyRp/aIgJywf34iGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCAZQs+O/8e788bUd36FIBmJNwN4IAIgHELWgs2hkP2UjkuFIhlC2KLR78Kp5b8tfiAZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQtKBqpur+oLXp39+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhISFQvzDvKfJldXk6ACFIhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCAZQtii0e/CqeW/LX6FIhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRCiKyRp/aIgJywf34iGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCAZQs+O/8e788bUd36FIBmJNwNwIAIgHEL8w7ynyZXV5OgAhSIZQtii0e/CqeW/LX4gGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEhULt3LKbjaWJzMsAhSIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQtKBqpur+oLXp39+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIQgGULYotHvwqnlvy1+hSIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQoiskaf2iICcsH9+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIQgGULPjv/Hu/PG1Hd+hSAZiTcDaCACIBxCi/36l8fG15eGf4UiGULYotHvwqnlvy1+IBlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhIVC1oLNoZD9lI5LhSIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQtKBqpur+oLXp39+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIQgGULYotHvwqnlvy1+hSIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEQoiskaf2iICcsH9+IhpCOIYgGkKA/gODQiiGhCAaQoCA/AeDQhiGIBpCgICA+A+DQgiGhIQgGkIIiEKAgID4D4MgGkIYiEKAgPwHg4QgGkIoiEKA/gODIBpCOIiEhIQgGULPjv/Hu/PG1Hd+hSAZiTcDYCAAQTxqIQ8gAkHwAWqtIi1CgICAgBCEISkgAkHgAWqtQoCAgIAQhCEuIAJBQGutQoCAgIAQhCEvIAJBgAFqrUKAgICA0AGEITAgAkE+aq1CgICAgOABhCExIAJB6AJqIRUgAigCLCEJIAIoAkAhBANAIAJDAACAPyACLgE+ELAGIjw4AoABIAAoAgghCwJAIAQgCU8NAEMAABBBIAAqAkggAC0AWEECRiIDG0MAAEDBIAAqAkQgAxsiO5NDAAB+Q5UhRSAEIAlrIQ0gBEEYbCIMIAAoAgRqQQxqIQMgBCAEIAsgBCALSxtrIQ5BACEFAkADQCAEIAVqIQcCfwJAIAUgDmoEQCADQQdqLQAAIgYgA0EGai0AACIKIANBBWotAAAiCCAIIApJGyIKIAYgCksbIgYEfSA7IEUgBkEBa0H/AXGzlJIQiQQiQiBCkgVDAAAAAAshQiADLwEAIgpB//8BcUUEQCAKQRB0DAMLIApB/wdxIQYgCkGAgAJxIQggCkGA+AFxIgpBgPgBRgRAIAhBEHQiCkGAgID8B3IgBkUNAxogCiAGQQ10ckGAgID+B3IMAwsgCEEQdCEIIApFDQEgCkENdEGAgID8AHEgBkENdHJBgICAwANqIAhyDAILIAcgC0Hcu8cAEIwHAAsgBiAGZ0EQayIGQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAZBF3RrcgshBiBCIAa+IkJDAACAP14EfSBCEMYFQ1T4LUCUQwAAgD+SkQVDAACAPwuUIDxeDQEgAiAHQQFqNgJAIANBGGohAyANIAVBAWoiBWoNAAsgCSEHCyAEIAdPDQACQCAHIARrIgtB/////wFNBEAgC0EDdCIDQf3///8HSQ0BC0Hg/8YAEP8HAAtBACEGAkAgA0UEQEEEIQlBACELDAELIAMQcSIJRQ0FCyAEIAdrIQ0gCSEDA0BDAACAPyE8An8CQCAEIAZqIgogACgCCCIFSQRAIAAoAgQgDGoiBUETai0AACIHIAVBEmotAAAiCCAFQRFqLQAAIg4gCCAOSxsiCCAHIAhLGyIHBH1DAABAwSAAKgJEIAAtAFhBAkYiCBsiO0MAABBBIAAqAkggCBsgO5NDAAB+Q5UgB0EBa0H/AXGzlJIQiQQiOyA7kgVDAAAAAAshOyAFQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQUgB0GAgAJxIQggB0GA+AFxIgdBgPgBRgRAIAhBEHQiB0GAgID8B3IgBUUNAxogByAFQQ10ckGAgID+B3IMAwsgCEEQdCEIIAdFDQEgB0ENdEGAgID8AHEgBUENdHJBgICAwANqIAhyDAILIAogBUHcu8cAEIwHAAsgBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAVBF3Rrcgu+IkVDAACAP14EQCBFEMYFQ1T4LUCUQwAAgD+SkSE8CyADQQRqIAo2AgAgAyA7IDyMlDgCACAMQRhqIQwgA0EIaiEDIA0gBkEBaiIGag0ACyACIAY2AowBIAIgCTYCiAEgAiALNgKEASACQcQAaiACQYQBahCUAiAAKAIIIQsLIAIgAigCTCIHNgLgASACIAs2AvABIAIgKTcDiAMgAiAuNwOAAyACICw3A/gCIAIgLzcD8AIgAiAwNwPoAiACIDE3A+ACIAJCBjcCvAIgAkEGNgK0AiACQfzmwQA2ArACIAIgAkHgAmo2ArgCIAJBoAJqIAJBsAJqEOwDIAIoAqACIgMEQCACKAKkAiIEQQRrKAIAIgVBeHEiBkEEQQggBUEDcSIFGyADakkNByAFQQAgBiADQSdqSxsNCCAEEKICCyACKAJcIgQEQCACKAJQIgZBCGohAyAGKQMAQn+FQoCBgoSIkKDAgH+DIRkgBiEFA0AgGVAEQANAIAVBgARrIQUgAykDACADQQhqIQNCgIGChIiQoMCAf4MiGUKAgYKEiJCgwIB/UQ0ACyAZQoCBgoSIkKDAgH+FIRkLIAUgGXqnQQN0QcAHcWsiCUEEaygCACIKQQlPBEAgCUEgaygCACIJQQRrKAIAIgtBeHEiCCAKQQJ0IgpBBEEIIAtBA3EiCxtqSQ0JIAtBACAIIApBJ2pLGw0KIAkQogILIBlCAX0gGYMhGSAEQQFrIgQNAAsgAiACKAJUIgMEfyADQQlqIgQEQCAGQf8BIAT8CwALIAMgA0EBakEDdkEHbCADQQhJGwVBAAs2AlggAkEANgJcCwJAIAdFDQAgAigCSCIDIAdBA3RqIQsgA0EIaiEFAkADQCADKAIEIgkgACgCCCIDTw0BIAUhByACIAAoAgQgCUEYbGr9AAIAIDb9DQABAgMEBQYHCAkKCwgJCgsgAv0JAoAB/ecB/WgiNv0fAvwENwOgASACIDb9HwH8BDcDmAEgAiA2/R8A/AQ3A5ABIAJB4AJqIAJB0ABqIAJBkAFqEIcCAkAgAigCgAMiBgRAIAJBuAJqIBVBCGr9AAMA/QsDACACIBUpAwA3A7ACIAYoAgAiBSAGKAIEIgogAigC4AIiCHEiBGopAABCgIGChIiQoMCAf4MiGVAEQEEIIQMDQCADIARqIQQgA0EIaiEDIAUgBCAKcSIEaikAAEKAgYKEiJCgwIB/gyIZUA0ACwsgBSAZeqdBA3YgBGogCnEiBGosAAAiA0EATgRAIAUgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IgRqLQAAIQMLIAQgBWogCEEZdiIIOgAAIAYgBigCCCADQQFxazYCCCAFIARBCGsgCnFqQQhqIAg6AAAgBSAEQQZ0ayIDQUBqIgRBEGogAkHAAmopAwA3AwAgBCAC/QADsAL9CwMAIANBBGtBADYCACADQShrQQA2AgAgBiAGKAIMQQFqNgIMDAELIAIoAuACIQMLIANBJGshBgJ/IANBBGsiBSgCACIIQQlJBEAgCCEEQQghCCAGDAELIAYoAgAhBCAGIQUgA0EgaygCAAshDCAEIAhGBH8gA0EoaxDNBiADQSBrKAIAIQwgBiIFKAIABSAEC0ECdCAMaiAJNgIAIAUgBSgCAEEBajYCACAHQQBBCCAHIAtGIgQbaiEFIAchAyAERQ0ACwwBCyAJIANB3LvHABCMBwALIAJBADYCsAEgAkKAgICAwAA3AqgBA0AgAigCNCERIAIoAjghDAJAAkACQAJAAkADQCACQbQBaiACQcQAahCEAyACKAK0AUEBRw0CIAIoArwBIg0gDE8NASANIBFqIhItAABFDQALIAAoAggiCSANSwRAAkAgACgCBCIUIA1BGGxqIgT9AAIAIDb9DQABAgMEBQYHCAkKCwgJCgsgAv0JAoAB/ecB/WgiNv0fAvwEIiJCAX0iHyAiQgF8IipXBEAgAikDYCIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEITJDAACAPyAAKgJAIAAtAFhBAkYiAxtDAAAAACAAKgI8IAMbIkWTIUJDAAAQQSAAKgJIIAMbQwAAQMEgACoCRCADGyJIk0MAAH5DlSFJIBlCf4UhMyA2/R8A/AQiI0IBfCEgICNCAX0hJCA2/R8B/AQiKEIBfCEeIChCAX0hHEL///////////8AISVDAACA/yE8QX8hCyACKAJQIQggAigCVCEKIAIpA2ghNCACKAJcIRYgBEEWaiEXIARBFGohGEL///////////8AISZC////////////ACEnA0ACQCAcIB5VDQAgICAkUwRAIBwhGQNAIBkgHlkNAiAeIBkgGSAeU618IhlZDQALDAELAkAgFgRAIBwhGQwBCyAcIRoDQCAkIRkDQCAZICBTIgMEQCAZIAOtfCIZICBXDQELCyAaIB5ZDQIgHiAaIBogHlOtfCIaWQ0ACwwBCwNAIBkiISAZIB5TrXwhGSAkIRoCQAJAA0AgCiAaIDSFIhtC2KLR78Kp5b8tfiAbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEQtKBqpur+oLXp39+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhISFICGFIhtC2KLR78Kp5b8tfiAbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEQtKBqpur+oLXp39+IhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhISFIB+FIhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIRC0oGqm6v6gtenf34iHUI4hiAdQoD+A4NCKIaEIB1CgID8B4NCGIYgHUKAgID4D4NCCIaEhCAdQgiIQoCAgPgPgyAdQhiIQoCA/AeDhCAdQiiIQoD+A4MgHUI4iISEhCAbQtii0e/CqeW/LX6FIhtCOIYgG0KA/gODQiiGhCAbQoCA/AeDQhiGIBtCgICA+A+DQgiGhIQgG0IIiEKAgID4D4MgG0IYiEKAgPwHg4QgG0IoiEKA/gODIBtCOIiEhIQgM34iHUI4hiAdQoD+A4NCKIaEIB1CgID8B4NCGIYgHUKAgID4D4NCCIaEhCAdQgiIQoCAgPgPgyAdQhiIQoCA/AeDhCAdQiiIQoD+A4MgHUI4iISEhCAbIDJ+hSAbiSIbp3EhBSAbQhmIQv8Ag0KBgoSIkKDAgAF+ITUgGiAaICBTrXwhG0EAIQYCQAJAA0ACQCAFIAhqKQAAIisgNYUiHUJ/hSAdQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIh1QRQRAA0ACQCAaIAggHXqnQQN2IAVqIApxQQZ0ayIDQUBqKQMAUg0AICEgA0E4aykDAFINACAfIANBMGspAwBRDQMLIB1CAX0gHYMiHVBFDQALCyArICtCAYaDQoCBgoSIkKDAgH+DUEUNAiAFIAZBCGoiBmogCnEhBQwBCwsCfyADQQRrKAIAIgVBCU8EQCADQSRrKAIAIQUgA0EgaygCAAwBCyADQSRrCyEGIAVFDQAgBUECdCEHA0AgBigCACIDIAxPDQICQCADIA1GDQAgAyARai0AAEEBcUUNACADIAlPDQUgBEERai8AACAEQRNqLQAAIgVBEHRyIg5BCHYhEEMAAAAAIUBDAAAAACE/IA5B/wFxBEAgSCBJIA5BAWtB/wFxs5SSEIkEIT8LIBBB/wFxBEAgSCBJIBBBAWtB/wFxs5SSEIkEIUALQwAAAAAhTEMAAAAAITsgBQRAIEggSSAFQQFrQf8BcbOUkhCJBCE7C0MAAIA/IBgvAQAiBUEIdrP9EyAFIBctAAAiDkEQdHJB/wFxs/0gAf0MAAB/QwAAf0MAAH9DAAB/Q/3nASI2IDb95AH9DAAAgL8AAIC/AACAvwAAgL/95AEiNv0fASJDi5MgNv0fACJEi5MiPYxDAAAAABDgCCE+IDv9EyAOs0MAAH9DlUMAAAA/lEPbD0lAlCJKEJkCIkEgQyA+ID6MIkMgNv0MAAAAAAAAAAAAAAAAAAAAAP1G/U0iNv3HAf0bAkEBcRuSIjsgPSA9lCA7IDuUIEQgPiBDIDb9GwBBAXEbkiJDIEOUkpKRIkSVlCI7IEEgPSBElZQiRyBHkiI+lCJNIEoQmwIiSiBBIEMgRJWUIj0gPZIiQZQiRJL9EyA9ID6UIkMgSiA7IDuSIkuUIkaT/SABQwAAgD8gOyBLlCJLID0gQZQiUpKT/SAC/eYBIjb9HwIhPSBA/RMgOyBBlCI7IEogPpQiQJP9E0MAAIA/IEsgRyA+lCJBkpP9IAEgQyBGkv0gAv3mASI3/R8BIkMgN/0fAiI+lCFLID/9E0MAAIA/IFIgQZKT/RMgOyBAkv0gASBNIEST/SAC/eYBIjj9HwEiRCA4/R8CIkCUIUEgN/0fACJHID6UIUYgOP0fACJKIECUIVMgA0EYbCAUaiIFQRFqLwAAIAVBE2otAAAiDkEQdHIiEEEIdiETIBBB/wFxBEAgSCBJIBBBAWtB/wFxs5SSEIkEIUwLQwAAAAAhO0MAAAAAIT8gE0H/AXEEQCBIIEkgE0EBa0H/AXGzlJIQiQQhPwsgDgRAIEggSSAOQQFrQf8BcbOUkhCJBCE7CyA2/R8BIk0gPZQgSyBBkpIhUiA2/R8AIksgPZQgRiBTkpIhU0MAAAAAIVRDAACAPyAFQRRqLwEAIg5BCHaz/RMgDiAFQRZqLQAAIhBBEHRyQf8BcbP9IAH9DAAAf0MAAH9DAAB/QwAAf0P95wEiNiA2/eQB/QwAAIC/AACAvwAAgL8AAIC//eQBIjb9HwEiTouTIDb9HwAiT4uTIkGMQwAAAAAQ4AghRiA9ID2UID4gPpQgQCBAlJKSIlZDAAAAPyA7/RMgELNDAAB/Q5VDAAAAP5RD2w9JQJQiUBCZAiI+IE4gRiBGjCI9IDb9DAAAAAAAAAAAAAAAAAAAAAD9Rv1NIjb9xwH9GwJBAXEbkiI7IEEgQZQgOyA7lCBPIEYgPSA2/RsAQQFxG5IiQCBAlJKSkSJGlZQiOyA+IEEgRpWUIkEgQZIiPZQiTyBQEJsCIk4gPiBAIEaVlCI+ID6SIkCUIkaS/RMgPiA9lCJQIE4gOyA7kiJRlCJVk/0gAUMAAIA/IDsgUZQiUSA+IECUIj6Sk/0gAv3mASI2IDb95gEgP/0TIDsgQJQiOyBOID2UIj+T/RNDAACAPyBRIEEgPZQiPZKT/SABIFAgVZL9IAL95gEiNyA3/eYBIEz9E0MAAIA/ID4gPZKT/RMgOyA/kv0gASBPIEaT/SAC/eYBIjggOP3mAf3kAf3kASI5IDb9HwIiPSA9lCA3/R8CIkYgRpQgOP0fAiJMIEyUkpIiTv0gAiA2/R8AIj8gNv0fASJPlCA3/R8AIlAgN/0fASJRlCA4/R8AIlUgOP0fASJXlJKSIlj9IAP9DAAAAD8AAAA/AAAAPwAAAD/95gEiNv0fAhC0BiE+IE0gTZQgQyBDlCBEIESUkpIiWUMAAAA/IDb9HwEQtAYhQCBLIEuUIEcgR5QgSiBKlJKSIlpDAAAAPyA2/R8AELQGIkGLIECLEOAIID6LEOAIIjsgOyA7lJRDYEKiDRDgCCFbIEsgTZQgRyBDlCBKIESUkpIiQ0MAAAA/IDb9HwMQtAYhOyBTQwAAAD8gPyA9lCBQIEaUIFUgTJSSkiJHQwAAAD+UELQGIj8gOyBSQwAAAD8gTyA9lCBRIEaUIFcgTJSSkiJKQwAAAD+UELQGIj2UID8gQJSTIk2UIEEgQCA+lCA9ID2UkyJLlCA7ID4gO5QiRiA/ID2UIkyTlJOSIkSLIFtDX3CJMJRdRQRAIEQgU/0TIEf9IAEiNyBD/RMgWP0gASI4IFL9EyBK/SABIjb95gEgNyA5IFn9IAAiOv3mAf3lAf3mASBa/RMgOf0NAAECAxAREhMAAQIDAAECAyA6IFb9EyBO/SABIjn95gEgNiA2/eYB/eUB/eYBIDggOSA4/eYBIDcgNv3mAf3lAf3mAf3lAf3kASI2/R8AIDb9HwGUkZUQxgVDAAAAP5QgBf0AAgAgBP0AAgD95QEiNv0fAiJDID8gO5QgPSBBlJNDAACAPyBElSI9lCJEIESSIDb9HwEiRJSUIEMgTSA9lCJHIEeSIDb9HwAiR5SUIEQgTCBGkyA9lCJKIEqSIEeUlCBDIEMgQSBAlCA7IDuUkyA9lJSUIEcgRyBLID2UlJQgRCBEIEEgPpQgPyA/lJMgPZSUlJKSkpKSQwAAAD6UkiFUCyBFIARBEGotAAAiDrNDAAB/Q5UgQpSS/RMgRSAEQQ5qLwEAIhAgDkEQdHJB/wFxs0MAAH9DlSBClJL9IAAgRSAQQQh2s0MAAH9DlSBClJL9IAEgRSBCIAVBEGotAAAiDrNDAAB/Q5WUkv0TIEUgQiAFQQ5qLwEAIgUgDkEQdHJB/wFxs0MAAH9DlZSS/SAAIEUgQiAFQQh2s0MAAH9DlZSS/SAB/eUBIjYgNv3mASI2IDb9DQgJCgsAAQIDAAECAwABAgMgNiA2IDb9DQQFBgcAAQIDAAECAwABAgP95AH95AH9HwCMEIkEIFSMEIkElCI7QwAAAAAgOyA7WxsiOyA8XkUNACAaIScgISEmIB8hJSA7ITwgAyELCyAGQQRqIQYgB0EEayIHDQALCyAaICBZDQMgGyIaICBVDQMMAQsLIAMgDEGc6MEAEIwHAAsgAyAJQdy7xwAQjAcACyAeICFXDQEgGSAeVw0ACwsgHyAqUyIDBEAgHyADrXwiHyAqVw0BCwsgC0F/Rw0BCyACKgK4ASE8IAIoArABIgMgAigCqAFGBEAgAkGoAWpBvOfBABD5BQsgAigCrAEgA0EDdGoiBCANNgIEIAQgPDgCACACIANBAWo2ArABDAcLIAIgCzYC5AIgAiANNgLgAiAAIAJB4AJqQQJDAAAAABBDIRAgEkEAOgAAIAIoAlxFDQMgAigCVCIFIAIpA2ggI4UiGULYotHvwqnlvy1+IBlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhIUgKIUiGULYotHvwqnlvy1+IBlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhIUgIoUiGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBlC2KLR78Kp5b8tfoUiGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhCACKQNgIhpCf4V+IhxCOIYgHEKA/gODQiiGhCAcQoCA/AeDQhiGIBxCgICA+A+DQgiGhIQgHEIIiEKAgID4D4MgHEIYiEKAgPwHg4QgHEIoiEKA/gODIBxCOIiEhIQgGSAaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEfoUgGYkiGadxIQMgGUIZiEL/AINCgYKEiJCgwIABfiEcQQAhBCACKAJQIQYDQAJAIAMgBmopAAAiGiAchSIZQn+FIBlCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiGVBFBEADQAJAICMgBiAZeqdBA3YgA2ogBXFBBnRrIg5BQGopAwBSDQAgKCAOQThrKQMAUg0AICIgDkEwaykDAFENAwsgGUIBfSAZgyIZUEUNAAsLIBogGkIBhoNCgIGChIiQoMCAf4NQRQ0FIAMgBEEIaiIEaiAFcSEDDAELCyAOQQRrIhMoAgAiAyEJIANBCU8EQCAOQSRrKAIAIQkLIAlFBEBBACEIDAYLIA5BIGshEiAOQSRrIQpBACEFQQAhCEEAIQMDQCATKAIAIgYhBCAKIQcgBkEJSSIURQRAIAcoAgAhBCASKAIAIQcLAkACQCADIARJBEAgDSAFIAdqKAIARgRAIAhBAWohCAwDCyAIRQRAQQAhCAwDCyAKIQQgFEUEQCAEKAIAIQYgEigCACEECyADIAhrIgcgBk8NASADIAZJBEAgBCAFIAhBAnRraiIGKAIAIQcgBiAEIAVqIgQoAgA2AgAgBCAHNgIADAMLIAMgBkHopMEAEIwHAAsgAyAEQdikwQAQjAcACyAHIAZB6KTBABCMBwALIAVBBGohBSADQQFqIgMgCUcNAAsMBAsgDSAJQdy7xwAQjAcACyANIAxBrOfBABCMBwALIAIgAi8BPkEBajsBPiACQcQAaiACQagBahCUAiACKAJAIgQgAigCLCIJSQ0EIAIoAkxBAUsNBCACIAAoAghBAWs2AtwBIAJBATYC5AIgAkH45MEANgLgAiACQgE3AuwCIAIgAkHcAWqtQoCAgIAQhDcDoAIgAiACQaACajYC6AIgAkGwAmogAkHgAmoQsQYgAigCsAIiAwRAIAIoArQCIANBARCiBwsCQAJAAkAgAigC3AEiAyAAKAIIIgRJBEAgAiAPNgKkAiACQQE2AuQCIAJBuOjBADYC4AIgAkIBNwLsAiACIAAoAgQgA0EYbGo2AqACIAIgAkGgAmqtQoCAgICAAoQ3A/ABIAIgAkHwAWo2AugCIAJBsAJqIAJB4AJqELEGIAIoArACIgMEQCACKAK0AiADQQEQogcLIAJBIGogACgCCEEBdEEBaxDkB0EAIQUgAkEANgLoASACIAIpAyA3AuABIAJB4AFqIgMgAigCLEEBEMQGIAMgACgCCEEAEMQGIAIoAtwBIgQgAigC6AEiCk8NAiACKALkASIJIARqQQE6AAAgAkHgAmogACACKALcASADIAEQ9wFBACEGAkAgCkEETwRA/QwAAAAAAAAAAAAAAAAAAAAAITYgCSEDIApBfHEiBiEFA0AgNiAD/VwAAP2JAf2pAf2uASE2IANBBGohAyAFQQRrIgUNAAsgNiA2IDb9DQgJCgsMDQ4PAAECAwABAgP9rgEiNiA2IDb9DQQFBgcAAQIDAAECAwABAgP9rgH9GwAhBSAGIApGDQELIAYgCWohAyAKIAZrIQYDQCAFIAMtAABqIQUgA0EBaiEDIAZBAWsiBg0ACwsgAigCiAMhCyACKALsAiEMIAIgBTYC7AEgAiAAKAIINgLwASACQQI2AuQCIAJB7OjBADYC4AIgAkICNwLsAiACICk3A7gCIAIgAkHsAWqtQoCAgIAQhCIZNwOwAiACIAJBsAJqNgLoAiACQaACaiACQeACahCxBiACKAKgAiIDBEAgAigCpAIgA0EBEKIHCyACQQE2AuQCIAJBkOnBADYC4AIgAkIBNwLsAiACIC1CgICAgNABhDcDoAIgAiACKALsAbMgAigCLLOVOALwASACIAJBoAJqNgLoAiACQbACaiACQeACahCxBiACKAKwAiIDBEAgAigCtAIgA0EBEKIHCyACQQA2AvgBIAJCgICAgMAANwLwASACKALcASEDIAJB8AFqQZjpwQAQiwYgAigC9AEgAzYCACACQQE2AvgBIAIoAtwBIgMgACgCCCIETw0BIAIgACgCBCADQRhsaiIDLQATIgQgAy0AEiIFIAMtABEiBiAFIAZLGyIFIAQgBUsbIgQEfUMAAEDBIA8qAgggDy0AHEECRiIFGyIBQwAAEEEgDyoCDCAFGyABk0MAAH5DlSAEQQFrQf8BcbOUkhCJBCIBIAGSBUMAAAAACwJ/IANBDGovAQAiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhBSAEQYD4AXEiBEGA+AFGBEAgBUEQdCIEQYCAgPwHciADRQ0BGiAEIANBDXRyQYCAgP4HcgwBCyAFQRB0IgUgBEENdEGAgID8AHEgA0ENdHJBgICAwANqciAEDQAaIAMgA2dBEGsiA0H//wNxQQhqdEH///8DcSAFQYCAgNgDciADQRd0a3ILviIBQwAAgD9eBH0gARDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlDgCgAJBBBBxIgVFDQsgBSACKALcATYCACACQZACaq1CgICAgBCEIRogAkGAAmqtQoCAgIDQAYQhHEEBIQZBASEEA0AgAiAGNgKQAiACIBo3A7gCIAIgHDcDsAIgAkICNwLsAiACQQI2AuQCIAJB0OnBADYC4AIgAiACQbACajYC6AIgAkGgAmogAkHgAmoQ7AMgAigCoAIiAwRAIAIoAqQCIgdBBGsoAgAiCEF4cSINQQRBCCAIQQNxIggbIANqSQ0QIAhBACANIANBJ2pLGw0RIAcQogILQQAhAyACQQA2AugCIAJCgICAgMAANwLgAiAGQQJ0IQYDQCAAIAMgBWooAgAgAkHwAWogAioCgAIgAkHgAmoQywEgBiADQQRqIgNHDQALAkAgAigC6AIiBkUEQCACKALgAiIDBEAgAigC5AIgA0ECdEEEEKIHCyACIAIoAvgBIgc2AoQCIAcgAigC7AFGDQEgAkEANgLgAkEAIAJBhAJqIAJB7AFqIAJB4AJqQeDpwQAQ9QcACyACIAIqAoACQwAAgD6UOAKAAiACKALkAiACKALgAiEHIAQEQCAFQQRrKAIAIghBeHEiDSAEQQJ0IgRBBEEIIAhBA3EiCBtqSQ0RIAhBACANIARBJ2pLGw0SIAUQogILIQUgByEEDAELCyAJQQFqIQggCSAKaiENQQAhBiAJIQMDQCADLQAARQRAIAIoAvABIAdGBEAgAkHwAWpB3OrBABCLBgsgAigC9AEgB0ECdGogBjYCACACIAdBAWoiBzYC+AELIAgiAyANRyADaiEIIAogBkEBaiIGRw0ACyAAIAIoAvQBIAcQiQIgACACKALsARCIBSACQQE2AuQCIAJBjOrBADYC4AIgAkIBNwLsAiACIBk3A6ACIAIgAkGgAmo2AugCIAJBsAJqIAJB4AJqELEGIAIoArACIgMEQCACKAK0AiADQQEQogcLIAIgACgCCCIKBHxCACEZQQAhBkEAIQcDQCACQeACaiAAKAIQIAAoAhQgBhDnAiACKAKEAyIDQQhLBEAgAigC6AIiCEEEaygCACINQXhxIg4gA0ECdCIQQQRBCCANQQNxIg0bakkNESACKALkAiEDIA1BACAOIBBBJ2pLGw0GIAgQogILIAcgA0EAR2ohByAZIAOtfCEZIAogBkEBaiIGRw0ACyAZuiAHt6MFRAAAAAAAAPh/CzkDiAIgAkEBNgLkAiACQbzqwQA2AuACIAJCATcC7AIgAiACQYgCaq1CgICAgPAChDcDoAIgAiACQaACajYC6AIgAkGwAmogAkHgAmoQsQYgAigCsAIiAwRAIAIoArQCIANBARCiBwsgAkHgAmogACgCECAAKAIUQQAQ5wIgAiACKAKEAyIDQQlJIgYEfyADBSACKALkAgs2ApwCIAJBATYCtAIgAkHU6sEANgKwAiACQgE3ArwCIAIgAkGcAmqtQoCAgIAQhDcDkAIgAiACQZACajYCuAIgAkGgAmogAkGwAmoQsQYgBkUEQCACKALoAiADQQJ0QQQQogcLIAIoAqACIgMEQCACKAKkAiADQQEQogcLIAQEQCAFIARBAnRBBBCiBwsgAigC8AEiAwRAIAIoAvQBIANBAnRBBBCiBwsgC0EJTwRAIAwgC0ECdEEEEKIHCyACKALgASIDBEAgCSADQQEQogcLIAJB0ABqEL4EIAIoAkQiAwRAIAIoAkggA0EDdEEEEKIHCyACKAIwIgNFDQogESADQQEQogcMCgsgAyAEQdy7xwAQjAcACyADIARB3LvHABCMBwALIAQgCkHQ6MEAEIwHAAsMCwtBzOfBABDdCQALIBMoAgAhAwsgCSAIayIEIA5BJGsgEyADQQhLGyIDKAIASQRAIAMgBDYCAAsCQAJAAkACQCALIAxJBEAgCyARakEAOgAAIAIoAlxFDQIgAigCVCIFIAIpA2ggJ4UiGULYotHvwqnlvy1+IBlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhIUgJoUiGULYotHvwqnlvy1+IBlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIRC0oGqm6v6gtenf34iGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhIUgJYUiGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBlC2KLR78Kp5b8tfoUiGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhCACKQNgIhpCf4V+IhxCOIYgHEKA/gODQiiGhCAcQoCA/AeDQhiGIBxCgICA+A+DQgiGhIQgHEIIiEKAgID4D4MgHEIYiEKAgPwHg4QgHEIoiEKA/gODIBxCOIiEhIQgGSAaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEfoUgGYkiGadxIQMgGUIZiEL/AINCgYKEiJCgwIABfiEcQQAhBCACKAJQIQYDQCADIAZqKQAAIhogHIUiGUJ/hSAZQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIhlQRQRAA0ACQCAnIAYgGXqnQQN2IANqIAVxQQZ0ayINQUBqKQMAUg0AICYgDUE4aykDAFINACAlIA1BMGspAwBRDQULIBlCAX0gGYMiGVBFDQALCyAaIBpCAYaDQoCBgoSIkKDAgH+DUEUNAyADIARBCGoiBGogBXEhAwwACwALIAsgDEHc58EAEIwHAAsgDUEEayIOKAIAIgMhCSADQQlPBEAgDUEkaygCACEJCyAJRQRAQQAhCAwDCyANQSBrIRMgDUEkayEKQQAhBUEAIQhBACEDA0AgDigCACIGIQQgCiEHIAZBCUkiEkUEQCAHKAIAIQQgEygCACEHCwJAAkAgAyAESQRAIAsgBSAHaigCAEYEQCAIQQFqIQgMAwsgCEUEQEEAIQgMAwsgCiEEIBJFBEAgBCgCACEGIBMoAgAhBAsgAyAIayIHIAZPDQEgAyAGSQRAIAQgBSAIQQJ0a2oiBigCACEHIAYgBCAFaiIEKAIANgIAIAQgBzYCAAwDCyADIAZB6KTBABCMBwALIAMgBEHYpMEAEIwHAAsgByAGQeikwQAQjAcACyAFQQRqIQUgA0EBaiIDIAlHDQALDAELQeznwQAQ3QkACyAOKAIAIQMLIAkgCGsiBCANQSRrIA4gA0EISxsiAygCAEkEQCADIAQ2AgALIAIoAjAgDEYEfyACQTBqEKYGIAIoAjQFIBELIAxqQQE6AAAgAiAMQQFqNgI4An8CQCAAKAIIIgMgEEsEQCAAKAIEIBBBGGxqIgQtABMiAyAELQASIgUgBC0AESIGIAUgBksbIgUgAyAFSxsiAwR9QwAAQMEgACoCRCAALQBYQQJGIgUbIjxDAAAQQSAAKgJIIAUbIDyTQwAAfkOVIANBAWtB/wFxs5SSEIkEIjwgPJIFQwAAAAALITwgBEEMai8BACIFQf//AXFFBEAgBUEQdAwDCyAFQf8HcSEDIAVBgIACcSEGIAVBgPgBcSIFQYD4AUYEQCAGQRB0IgVBgICA/AdyIANFDQMaIAUgA0ENdHJBgICA/gdyDAMLIAZBEHQhBiAFRQ0BIAVBDXRBgICA/ABxIANBDXRyQYCAgMADaiAGcgwCCyAQIANB3LvHABCMBwALIAMgA2dBEGsiA0H//wNxQQhqdEH///8DcSAGQYCAgNgDciADQRd0a3ILIQMgPCADviI8QwAAgD9eBH0gPBDGBUNU+C1AlEMAAIA/kpEFQwAAgD8LlCI8IAIqAoABIjteRQRAIAIgBP0AAgAgNv0NAAECAwQFBgcICQoLCAkKCyA7/RP95wH9aCI2/R8C/AQ3A9ABIAIgNv0fAfwENwPIASACIDb9HwD8BDcDwAEgAkHgAmogAkHQAGogAkHAAWoQhwICQCACKAKAAyIEBEAgAkG4AmogFUEIav0AAwD9CwMAIAIgFSkDADcDsAIgBCgCACIDIAQoAgQiBSACKALgAiIJcSIGaikAAEKAgYKEiJCgwIB/gyIZUARAQQghBwNAIAYgB2ohBiAHQQhqIQcgAyAFIAZxIgZqKQAAQoCBgoSIkKDAgH+DIhlQDQALCyADIBl6p0EDdiAGaiAFcSIGaiwAACIHQQBOBEAgAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiBmotAAAhBwsgAyAGaiAJQRl2Igk6AAAgBCAEKAIIIAdBAXFrNgIIIAMgBkEIayAFcWpBCGogCToAACADIAZBBnRrIgNBQGoiBUEQaiACQcACaikDADcDACAFIAL9AAOwAv0LAwAgA0EEa0EANgIAIANBKGtBADYCACAEIAQoAgxBAWo2AgwMAQsgAigC4AIhAwsgA0EkayEHAn8gA0EEayIFKAIAIgRBCUkEQCAEIQZBCCEEIAcMAQsgBygCACEGIAchBSADQSBrKAIACyEIIAQgBkYEQCADQShrEM0GIANBIGsoAgAhCCAHKAIAIQYgByEFCyAIIAZBAnRqIBA2AgAgBSAFKAIAQQFqNgIAIAJBxABqIDyMIBAQ8QQMAQsgAigCsAEiAyACKAKoAUYEQCACQagBakGM6MEAEPkFCyACKAKsASADQQN0aiIEIBA2AgQgBCA8jDgCACACIANBAWo2ArABDAALAAsACwwECyAAKAIIIgsEQEEMIQZBACEFA0ACQAJ/AkACQAJ/AkACQCAAKAIIIgMgBUsEQCAAKAIEIAZqIggvAQAiBEH//wFxIgxFDQEgBEH/B3EhAyAEQYCAAnEhByAEQYD4AXEiCUGA+AFHIg1FBEAgB0EQdCIKQYCAgPwHciADRQ0EGiAKIANBDXRyQYCAgP4HcgwECyAHQRB0IQogCUUNAiAJQQ10QYCAgPwAcSADQQ10ckGAgIDAA2ogCnIMAwsgBSADQey7xwAQjAcACyAEQRB0vkMAAIA/Xg0CDAULIAMgA2dBEGsiDkH//wNxQQhqdEH///8DcSAKQYCAgNgDciAOQRd0a3ILvkMAAIA/XkUNAyAMDQELIARBEHQMAQsgDUUEQCAHQRB0IgRBgICA/AdyIANFDQEaIAQgA0ENdHJBgICA/gdyDAELIAdBEHQiBCAJQQ10QYCAgPwAcSADQQ10ckGAgIDAA2pyIAkNABogAyADZ0EQayIDQf//A3FBCGp0Qf///wNxIARBgICA2ANyIANBF3RrcgtDAACAPyE8viIBQwAAgD9eBEAgARDGBUNU+C1AlEMAAIA/kpFDAACAv5JDAACAPpRDAACAP5IhPAtDAAAAQEMAAIA/IDwgPEMAAIA/XRsiASABQwAAAEBeG7wiB0H///8DcSEJIAdBgICAgHhxIQQCQCAHQYCAgPwHcSIDQYCAgPwHRgRAIAlBDXYgBEEQdnJBgARBACAJG3JBgPgBciEEDAELIARBEHYhBCADQYCAgLgETQRAIANBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIANBDXYgCUENdmpBgIABaiAEcmohBAwCCyADQYCAgJgDSQ0BIAlBgICABHIiB0H+ACADQRd2IglrdiEDIAdBHSAJayIJdkEBcQR/IANBAyAJdEEBayAHcUEAR2oFIAMLIARyIQQMAQsgBEGA+AFyIQQLIAggBDsBAAsgBkEYaiEGIAsgBUEBaiIFRw0ACwsgAkEANgKoAiACQoCAgIDAADcCoAIgAkGgAmpBqMHBABCLBiACKAKkAkEANgIAQQEhBSACQQE2AqgCIAJCgICAgMAANwLAASACQgA3AsgBQQQQcSIDRQ0AIANBADYCACACQcABakG4wcEAEKQGIAIoAsQBIAIoAswBIgYgAigCyAFqIgQgAigCwAEiB0EAIAQgB08ba0EMbGoiBEEBNgIIIAQgAzYCBCAEQQE2AgAgAiAGQQFqNgLMASACKALMASIDRQ0CIAJB8AFqrUKAgICAEIQhISACQeABaq0iGUKAgICAEIQhJCACQdAAaq1CgICAgJAChCEfIAJBtAFqrUKAgICA0AGEISUgAkGwAmqtQoCAgICgAoQhJiACQagBaq1CgICAgLAChCEnIBlCgICAgNABhCEbIAJBnANqIRUgAkHoAmohDSACQeQCaiEKIAJBuAJqIQ4gAkHUAGohEyACQYQDaiEQAkADQCACIANBAWs2AswBIAIgAigCyAEiA0EBaiIEIAIoAsABIgVBACAEIAVPG2s2AsgBIAIoAsQBIANBDGxqIgMoAgAiC0GAgICAeEYNAyADKQIEIRkgAkEANgKYASACQoCAgIDAADcCkAEgGachBSAZQh6Ip0H8////B3EiAwRAIAMgBWohEUEAIQlBBCEGIAUhDANAIAkhA0MAAIA/ITwCfwJAIAwoAgAiByAAKAIIIgRJBEAgACgCBCAHQRhsaiIELQATIgkgBC0AEiIIIAQtABEiDyAIIA9LGyIIIAggCUkbIgkEfUMAAEDBIAAqAkQgAC0AWEECRiIIGyIBQwAAEEEgACoCSCAIGyABk0MAAH5DlSAJQQFrQf8BcbOUkhCJBCIBIAGSBUMAAAAACyEBIARBDGovAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhBCAJQYCAAnEhCCAJQYD4AXEiCUGA+AFGBEAgCEEQdCIJQYCAgPwHciAERQ0DGiAJIARBDXRyQYCAgP4HcgwDCyAIQRB0IQggCUUNASAJQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogCHIMAgsgByAEQdy7xwAQjAcACyAEIARnQRBrIgRB//8DcUEIanRB////A3EgCEGAgIDYA3IgBEEXdGtyC74iO0MAAIA/XgRAIDsQxgVDVPgtQJRDAACAP5KRITwLIAIoApABIANGBEAgAkGQAWpByJXBABD5BSACKAKUASEGCyAGIANBA3RqIgQgBzYCBCAEIAEgPJQiATgCACACIANBAWoiCTYCmAECQCADRQRAQQAhBAwBCyABIAFcBEADQAJAIAYgA0EBayIPQQF2IgRBA3RqIggqAgAiPCA8WyABIDxfRXENACAHIAhBBGooAgBLDQAgAyEEDAMLIAYgA0EDdGogCCkCADcCACAEIQMgD0ECTw0ADAILAAsDQCAGIANBAWsiD0EBdiIEQQN0aiIIKgIAIjwgPFsgASA8X0VxQX8gASA8YBsiEkEATCAHIAhBBGooAgBNIBIbBEAgAyEEDAILIAYgA0EDdGogCCkCADcCACAEIQMgD0EBSw0ACwsgBiAEQQN0aiIDIAc2AgQgAyABOAIAIAxBBGoiDCARRw0ACwsgCwRAIAVBBGsoAgAiA0F4cSIEIAtBAnQiBkEEQQggA0EDcSIDG2pJDQYgA0EAIAQgBkEnaksbDQcgBRCiAgsCQAJAAkAgAigCmAEiDEUNACACKAKoAkH/vwRqQYCA/P8DcSERA0AgAiAMQQFrIgQ2ApgBIAIoApQBIgcgBEEDdGoiAygCBCEFIAMqAgAhAQJAIARFBEAgASE8IAUhCQwBCyAHKAIEIQkgByAFNgIEIAcqAgAhPCAHIAE4AgBBACEDQQEhBiAMQQRPBEAgBEECayIDQQAgAyAETRshC0EAIQQDQCAHIARBA3RqIAcgBiAHIAZBA3RqIgNBCGoqAgAiOyA7WyA7IAMqAgAiRWBFcSIEIARBfyA7IEVfGyBFIEVcGyIEQQBMIANBBGooAgAgA0EMaigCAE0gBBtqIgNBA3RqKQIANwIAIANBAXQiCEEBciEGIAMhBCAIIAtJDQALCwJAAkAgDEECayAGRgRAIAcgA0EDdGogByAGQQN0aiIDKQIANwIAIAMgBTYCBCADIAE4AgAgBiEDDAELIAcgA0EDdGoiBCAFNgIEIAQgATgCACADDQBBACEEDAELIAEgAVwEQANAAkAgByADQQFrIgtBAXYiBEEDdGoiBioCACI7IDtbIAEgO19FcQ0AIAUgBkEEaigCAEsNACADIQQMAwsgByADQQN0aiAGKQIANwIAIAQhAyALQQJPDQAMAgsACwNAIAcgA0EBayILQQF2IgRBA3RqIgYqAgAiOyA7WyABIDtfRXFBfyABIDtgGyIIQQBMIAUgBkEEaigCAE0gCBsEQCADIQQMAgsgByADQQN0aiAGKQIANwIAIAQhAyALQQFLDQALCyAHIARBA3RqIgMgBTYCBCADIAE4AgALIAJBsAJqIAAoAhAgACgCFCAJEOcCIAIoAqgCIQMCQAJAIAIoAtQCIgRBCUkiBUUEQCACKAK0AiADaiIIIBFLDQEMAgsgAyAEaiIIIBFNDQELIAJBkAFqIDwgCRDxBCACIBs3A/ABIAIgA7NDAACAN5Q4AuABIAJCATcC7AIgAkEBNgLkAiACQfjBwQA2AuACIAIgAkHwAWo2AugCIAJB0ABqIAJB4AJqEOwDIAIoAlAiAwRAIAIoAlQiBkEEaygCACIHQXhxIglBBEEIIAdBA3EiBxsgA2pJDQsgB0EAIAkgA0EnaksbDQwgBhCiAgsgBUUEQCACKAK4AiIDQQRrKAIAIgVBeHEiBiAEQQJ0IgRBBEEIIAVBA3EiBRtqSQ0LIAVBACAGIARBJ2pLGw0MIAMQogILIAIoApgBIgNFDQJDAAAQQSAAKgJIIAAtAFhBAkYiBBtDAABAwSAAKgJEIAQbIjyTQwAAfkOVIUUgAigClAEiBCADQQN0IgZqIQwgACgCBCERIAAoAgghB/0MAACA/wAAgP8AAID/AACA/yE3/QwAAIB/AACAfwAAgH8AAIB/IThBACEFAkACQAJAAkACQANAIAQgBWpBBGooAgAiAyAHTw0BIBEgA0EYbGoiA0ERai8AACADQRNqLQAAIglBEHRyIgtBCHYhCEMAAAAAITtDAAAAACE/IAtB/wFxBEAgPCBFIAtBAWtB/wFxs5SSEIkEIT8LIAhB/wFxBEAgPCBFIAhBAWtB/wFxs5SSEIkEITsLIAkEfSA8IEUgCUEBa0H/AXGzlJIQiQQFQwAAAAALIT1DAACAPyADQRRqLwEAIglBCHaz/RMgCSADQRZqLQAAIgtBEHRyQf8BcbP9IAH9DAAAf0MAAH9DAAB/QwAAf0P95wEiNiA2/eQB/QwAAIC/AACAvwAAgL8AAIC//eQBIjb9HwEiPouTIDb9HwAiQIuTIkKMQwAAAAAQ4AghASALs0MAAH9DlUMAAAA/lEPbD0lAlCJJEJkCIUggSRCbAiFJIDcgA/0AAgAgNv0NAAECAwQFBgcICQoLCAkKCyI5ID39EyA//SAAIDv9IAH9DG8SgzpvEoM6bxKDOm8Sgzr96wH9DAAAwD8AAMA/AADAPwAAwD/95gEiNyA2/Q0ICQoLCAkKCwgJCgsAAQIDQwAAgD8gSCA+IAEgAYwiPyA2/QwAAAAAAAAAAAAAAAAAAAAA/Ub9TSI2/ccB/RsCQQFxG5IiOyBCIEKUIDsgO5QgQCABID8gNv0bAEEBcRuSIjsgO5SSkpEiP5WUIgEgASABkiI+lCJAIEggOyA/lZQiOyA7IDuSIj2UIkGSk/0TIAEgSCBCID+VlCJIIEiSIkKUIj8gSSA9lCJDkv0gACA7IEKUIjsgSSA+lCI+k/0gAf3gAf3mASA3IDb9DQQFBgcEBQYHBAUGBwABAgMgOyA+kv0TIAEgPZQiASBJIEKUIjuT/SAAQwAAgD8gQCBIIEKUIkKSk/0gAf3gAf3mASA3IDb9DQABAgMAAQIDAAECAwABAgMgPyBDk/0TQwAAgD8gQSBCkpP9IAAgASA7kv0gAf3gAf3mAf3kAf3kASI2/eQB/esBITcgOCA5IDb95QH96gEhOCAGIAVBCGoiBUcNAAsgNyA4/eUBIjYgNiA2/Q0ICQoLCAkKCwABAgMAAQID/esBIjkgOSA2/Q0EBQYHAAECAwABAgMAAQID/esB/R8AIDYgNiA2/Q0ICQoLCAkKCwQFBgcEBQYH/eoBIjkgOSA2/Q0EBQYHAAECAwABAgMAAQID/eoB/R8AQwAAQECUYEUEQCACQgQ3AugDIAJCADcC4AMgAkKAgICAwAA3AtgDIAJCBDcC0AMgAkIANwLIAyACQoCAgIDAADcCwAMgAkIENwK4AyACQgA3ArADIAJCgICAgMAANwKoAyACQgQ3AqADIAJCADcCmAMgAkKAgICAwAA3ApADIDggN/3kAf0MAAAAPwAAAD8AAAA/AAAAP/3mASI2/R8AIQEgNv0fAiE8IDb9HwEhO0EAIQMgAigCkAEhBwNAIAMgBGpBBGooAgAiBSAAKAIIIglPDQMgAkGQA2ogFSAAKAIEIAVBGGxqIgkqAgAgAV0bQQBBGCAJKgIEIDtdG2oiC0EIQTggCSoCCCA8XSIJG2oiDCgCACIIIAtBAEEwIAkbaiIRKAIARgRAIBFBsMLBABCLBgsgC0EEQTQgCRtqKAIAIAwgCEEBajYCACAIQQJ0aiAFNgIAIAYgA0EIaiIDRw0ACyAHBEAgBEEEaygCACIDQXhxIgUgB0EDdCIGQQRBCCADQQNxIgMbakkNESADQQAgBSAGQSdqSxsNEiAEEKICC0EgEHEiA0UNDSADIAIoApgDNgIAIAMgAigCpAM2AgQgAyACKAKwAzYCCCADIAIoArwDNgIMIAMgAigCyAM2AhAgAyACKALUAzYCFCADIAIoAuADNgIYIAMgAigC7AM2AhwgAkEINgJYIAIgAzYCVCACQQg2AlAgAiAfNwOwAiACQgE3AuwCIAJBAjYC5AIgAkGQwsEANgLgAiACIAJBsAJqNgLoAiACQeACahDrAiACKAJQIgMEQCACKAJUIgRBBGsoAgAiBUF4cSIGIANBAnQiA0EEQQggBUEDcSIFG2pJDREgBUEAIAYgA0EnaksbDQQgBBCiAgtB4AAQcSIDRQ0NIAMgAkGQA2pB4AD8CgAAIAMoAgAhBCADQYCAgIB4NgIAIARBgICAgHhGDQQgA0EEaiISKQIAIRkgAygCDCEHIANBgICAgHg2AgwgB0GAgICAeEYNBCADKQIQIRogAygCJCEJIANBgICAgHg2AiQgCUGAgICAeEYNBCADKQIoIRwgAygCGCELIANBgICAgHg2AhggC0GAgICAeEYNBCADKQIcIR4gAygCSCEIIANBgICAgHg2AkggCEGAgICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4g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ADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCALIAtBgIAETxsiCCAAKALwASIBSwRAIAggAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWo2AvABCwJAIAsEQEMAAIA/QwAAAEAgACwAngJBAE4bIRlBACEDQQAhAQJAAkADQCABIAAoAuQBIgJPDQIgASAAKALwASICTw0BIAAoAuwBIANqIBkgACgC4AEgAWotAACzQwAAf0OVlDgCACADQQRqIQMgCCABQQFqIgFHDQALIAAoAuwBIQ4gACgC8AEhAyAAIAAoApgCIAgQ6QRBACEBQQwhBiAIIQUgAyECA0ACQAJAIAAoAnwiBCABQQNqSwRAIAIEQCABIA5qKAIAIgpB////A3EhDCAKQYCAgIB4cSEEIApBgICA/AdxIgdBgICA/AdGBEAgBEEQdiAMQQ12ckGABEEAIAwbckGA+AFyIQQMBAsgBEEQdiEEIAdBgICAuARLDQIgB0GAgIDEA08EQCAKQQx2IApB/98AcUEAR3EgB0ENdiAMQQ12akGAgAFqIARyaiEEDAQLIAdBgICAmANJDQMgDEGAgIAEciIKQf4AIAdBF3YiDGt2IQcgCkEdIAxrIgx2QQFxBH8gB0EDIAx0QQFrIApxQQBHagUgBwsgBHIhBAwDCyADIANBuLPBABCMBwALIAEgAUEEaiAEQcizwQAQ6gcACyAEQYD4AXIhBAsgACgCeCAGaiAEQf//A3E2AgAgBkEQaiEGIAJBAWshAiABQQRqIQEgBUEBayIFDQALDAMLIAEgAkGs0MEAEIwHAAsgASACQZzQwQAQjAcACyAAIAAoApgCIAgQ6QQLIABBAToAwAECQAJAAkAgCCAAKALkASICTQRAIABBADYC5AEgAiAIayEBIAtFDQEgAiAIRg0DIAFFDQIgACgC4AEiAiACIAhqIAH8CgAADAILQQAgCCACQYSkxwAQ6gcACyACIAhGDQELIAAgATYC5AELIAAgACgCmAIgCGoiAjYCmAIgAiAAKAKQAkcNAiAAQQA2ApgCIABBAjoAnAIMAgsgC0UNAEEBIAAtAJ0CdLMhGUEAIQhBACEBQQAhAkEAIQMCQAJAAkACQANAIAFBA2oiBSAAKALkASIHSwRAIAEgBSAHQYzQwQAQ6gcACyADIAAoAvABIgdPDQEgACgC7AEgAmogACgC4AEgAWoiB0ECai0AACIGQRB0IActAAByIAdBAWotAABBCHRyIgdBgICAeHIgByAGwEEASBuyIBmVOAIAIAFBBmoiByAAKALkASIGSw0CIANBAWoiBSAAKALwASIGTw0DIAAoAuwBIAJqQQRqIAAoAuABIAFqIgVBBWotAAAiBkEQdCAFQQNqLQAAciAFQQRqLQAAQQh0ciIFQYCAgHhyIAUgBsBBAEgbsiAZlTgCACABQQlqIgUgACgC5AEiBksNBCADQQJqIgcgACgC8AEiBkkEQCAAKALsASACakEIaiAAKALgASABaiIBQQhqLQAAIgdBEHQgAUEGai0AAHIgAUEHai0AAEEIdHIiAUGAgIB4ciABIAfAQQBIG7IgGZU4AgAgAkEMaiECIANBA2ohAyAFIQEgCEEBaiIIIARJDQEMBgsLIAcgBkHcz8EAEIwHAAsgAyAHQbzPwQAQjAcACyAFIAcgBkH8z8EAEOoHAAsgBSAGQczPwQAQjAcACyAHIAUgBkHsz8EAEOoHAAsgACAAKAKYAiAEIAAoAuwBIAAoAvABEMIFAkACQAJAIAAoAuQBIgEgBCAMbCICTwRAIABBADYC5AEgASACayEDIAtFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDAsLIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiAEaiICNgKYAiACIAAoApACRw0AIABBADYCmAIgAEEBOgCcAgwACwALIAlBATYCVCAJQbTOwQA2AlAgCUIBNwJcIAkgCUEsaq1CgICAgBCENwNAIAkgCUFAazYCWCAJQTBqIgAgCUHQAGoQsQYgABCOByEBDAQLIAktAA8hAQsgDSAUaiENAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCUEBNgJUIAlBmPfHADYCUCAJQgE3AlwgCSAJQQ9qrUKAgICAoASENwNAIAkgCUFAazYCWCAJQRBqIgAgCUHQAGoQsQYgABCOByEBDAYLIABBAToAqVQgDUEIaiANIAAoAswBIgIgDWsiAUEAIAEgAk0bQQdLGyENDAILIBEgFHJFDQELIA0gACgCzAEiA0kNAQsLIA1FDQAgDSAAKALMASICTQRAQQAhASAAQQA2AswBIAIgDUYNAiACIA1rIgIEQCAAKALIASIDIAMgDWogAvwKAAALIAAgAjYCzAEMAgtBACANIAJBhKTHABDqBwALQQAhAQsgCUHwAGokACABDwtBACABIANBhKTHABDqBwALQQAgAiABQYSkxwAQ6gcAC0EAIAUgAkGEpMcAEOoHAAvRXAMYfwR9AX4jAEHwAGsiCCQAAkACQAJAAkACQCAALQCgVEUEQCAIQdAAaiAAQbwBahC4BCAILQBQBEAgCCgCVCEBDAMLIAgtAFFBAUcNASAAQQE6AKBUCyAAKALEASIDRQ0AIABBmAJqIRUgCEE8aq1CgICAgBCEIR0gAEHUAWohFiAAQeABaiESIABB7AFqIRcgAEH4AWohGANAAkAgACgC0AEiBiAAKAKcVCIBayICQQAgAiAGTRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiBGshAiABIARGBEAgACACNgKcVAwBCyABIAZNBEAgAgRAIAAoAswBIgEgASAEaiAC/AoAAAsgACgCxAEhAyAAIAI2ApxUDAELQQAgASAGQczVwQAQ6gcACwJAAkAgAyANTwRAIAhB0ABqIBUgACgCwAEgDWogAyANayAAKALMASAAKALQASACQQYQRCAIIAgtAFQiAToADyAIKAJQIRQgCCgCWCIRRQ0CIAAoApxUIgMgEWoiAiADTyACIAAoAtABIgZNcQ0BIAMgAiAGQdzVwQAQ6gcACyANIAMgA0Hs1cEAEOoHAAsgACgCzAEhBiAAKALUASAAKALcASICayARSQRAIBYgAiARQQFBARCkBSAAKALcASECCyARBEAgACgC2AEgAmogAyAGaiAR/AoAAAsgACACIBFqIgQ2AtwBIAAgACgCnFQgEWo2ApxUIAAoAuABQYCAgIB4RgRAAkAgBEEQSQ0AIAggACgC2AEiAigAACIDNgIcIANBzo7NggVHBEAgCEEBNgJkIAhBzMjBADYCYCAIQQE2AlQgCEHUzsEANgJQIAhBATYCXCAIIAhBHGqtQoCAgICQBIQ3A0AgCCAIQUBrNgJYIAhBIGoiACAIQdAAahCxBiAAEI4HIQEMBgsgCCACKAAEIgk2AiwgCUEEa0F9TwRAIABBADYC3AEgAiwADiEGIAItAA0hByACLQAMIQMgAigACCEFIARBEGsiBARAIAQEQCACIAJBEGogBPwKAAALIAAgBDYC3AELIAggAzYCPAJAIANBA00EQEGAgMAAEHEiAg0BAAsgCEEBNgJUIAhBoO3HADYCUCAIQgE3AlwgCCAdNwNoIAggCEHoAGo2AlggCEFAayIAIAhB0ABqELEGIAAQkAchAQwHCyAAIAY6AJYCIAAgBzoAlQIgAEEAOgCUAiAAQQA2ApACIAAgAzYCjAIgACAFNgKIAiAAIAk2AoQCIABBADYCgAIgAEKAgICAwAA3AvgBIABCAjcC8AEgAEIANwLoASAAIAI2AuQBIABBgIAQNgLgASAIIAZBgAFxQQd2OgBYIAggAzYCVCAIIAU2AlAgACAIQdAAahClBCAGQQBODQEgAEEBOgCcAQwBCyAIQQE2AlQgCEG0zsEANgJQIAhCATcCXCAIIAhBLGqtQoCAgIAQhDcDQCAIIAhBQGs2AlggCEEwaiIAIAhB0ABqELEGIAAQjgchAQwFCyAAKALgAUGAgICAeEYNAQsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AlAJBAWsOCQ0MCwoAAQYEEAILQQkhD0EGIQEgACgCjAIOBAQIBwYCCyAAQQlBByAALACWAkEAThs6AJQCDA8LIAAoAtwBQQZBCSAAKAKEAiIDQQFGGyIMbiICIAAoAogCIAAoApACayIGSQRAIAIiBkGAgARJDQ4LQYCABCAGIAZBgIAETxsiBUEDbCICIAAoAugBIgFLBH8gAiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIEIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiCQRAIANBACAJ/AsACyABIAJqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYC6AEgACgChAIFIAMLQQFHDQsgBkUNDEEAIQlBACEBQQAhAkEAIQMDQCABQQJqIQcgACgC3AEiBCABQQFqTQRAIAEgByAEQazPwQAQ6gcACwJ/IAAoAtgBIAFqIgRBAWotAABBCHQiCiAELQAAciIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSEEIApBgIACcSELIApBgPgBcSIKQYD4AUYEQCALQRB0IgpBgICA/AdyIARFDQEaIARBDXQgCnJBgICA/gdyDAELIAtBEHQiCyAKQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2pyIAoNABogBCAEZ0EQayIEQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIARBF3RrcgshBAJ/AkACQCAAKALoASIKIANLBEAgACgC5AEgAmogBDYCACABQQRqIgogACgC3AEiBEsNASAAKALYASABaiIEQQNqLQAAQQh0IgcgBEECai0AAHIiBEH//wFxRQRAIARBEHQMBAsgBEH/B3EhBCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAERQ0EGiAEQQ10IAdyQYCAgP4HcgwECyALQRB0IQsgB0UNAiAHQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogC3IMAwsgAyAKQdzOwQAQjAcACyAHIAogBEGcz8EAEOoHAAsgBCAEZ0EQayIEQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIARBF3RrcgshBAJ/AkACQCADQQFqIgcgACgC6AEiC0kEQCAAKALkASACakEEaiAENgIAIAFBBmoiBCAAKALcASIHSw0BIAAoAtgBIAFqIgFBBWotAABBCHQiByABQQRqLQAAciIBQf//AXFFBEAgAUEQdAwECyABQf8HcSEBIAdBgIACcSEKIAdBgPgBcSIHQYD4AUYEQCAKQRB0IgdBgICA/AdyIAFFDQQaIAFBDXQgB3JBgICA/gdyDAQLIApBEHQhCiAHRQ0CIAdBDXRBgICA/ABxIAFBDXRyQYCAgMADaiAKcgwDCyAHIAtB7M7BABCMBwALIAogBCAHQYzPwQAQ6gcACyABIAFnQRBrIgFB//8DcUEIanRB////A3EgCkGAgIDYA3IgAUEXdGtyCyEBIANBAmoiByAAKALoASIKSQRAIAAoAuQBIAJqQQhqIAE2AgAgAkEMaiECIANBA2ohAyAEIQEgCUEBaiIJIAVJDQEMDgsLIAcgCkH8zsEAEIwHAAtB7NPBABCBCAALIAAoAtwBIgFBAnYiAiAAKAKIAiAAKAKQAmsiBEkEQCACIQQgAUGAgBBJDQwLQYCABCAEIARBgIAETxsiAiAAKAKAAiIBSwRAIAIgAWsiAyAAKAL4ASABa0sEQCAYIAEgA0EEQQQQpAUgACgCgAIhAQsgACgC/AEiCSABQQJ0aiEGIANBAk8EfyADQQJ0QQRrIgUEQCAGQQAgBfwLAAsgASADaiIDQQFrIQEgCSADQQJ0akEEawUgBgtBADYCACAAIAFBAWoiATYCgAILIAQEQEEAIQFBACEDAkADQCAAKALcASIGIAFBA2pNBEAgASABQQRqIAZBvNXBABDqBwALIAAoAoACIgYgA0sEQCAAKAL8ASABaiAAKALYASABaigAADYCACABQQRqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkGs1cEAEIwHAAsgACgCgAIhAQsgACAAKAKQAiACIAAoAvwBIAEQtQQCQAJAAkAgACgC3AEiAyACQQJ0IgFPBEAgAEEANgLcASADIAFrIQYgBEUNASABIANGDQMgBkUNAiAAKALYASIDIAEgA2ogBvwKAAAMAgsMFAsgASADRg0BCyAAIAY2AtwBCyAAIAAoApACIAJqIgI2ApACIAIgACgCiAJHDQwgAEEANgKQAkEJIQELIAAgAToAlAIMCwsgACgC3AEiAUEBdiICIAAoAogCIAAoApACayIESQRAIAIhBCABQYCACEkNCgtBgIAEIAQgBEGAgARPGyICIAAoAvQBIgFLBEAgAiABayIDIAAoAuwBIAFrSwRAIBcgASADQQJBAhCkBSAAKAL0ASEBCyAAKALwASIJIAFBAXRqIQYgA0ECTwR/IANBAXRBAmsiBQRAIAZBACAF/AsACyABIANqIgNBAWshASAJIANBAXRqQQJrBSAGC0EAOwEAIAAgAUEBaiIBNgL0AQsgBARAQQAhA0ECIQECQANAIAAoAtwBIgYgAUkEQCABQQJrIAEgBkGc1cEAEOoHAAsgACgC9AEiBiADSwRAIAAoAvABIAFqQQJrIAAoAtgBIAFqQQJrLwAAOwEAIAFBAmohASACIANBAWoiA0YNAgwBCwsgAyAGQYzVwQAQjAcACyAAKAL0ASEBCyAAIAAoApACIAIgACgC8AEgARC0BAJAAkACQCAAKALcASIDIAJBAXQiAU8EQCAAQQA2AtwBIAMgAWshBiAERQ0BIAEgA0YNAyAGRQ0CIAAoAtgBIgMgASADaiAG/AoAAAwCCwwSCyABIANGDQELIAAgBjYC3AELIAAgACgCkAIgAmoiAjYCkAIgAiAAKAKIAkcNCiAAQQA2ApACIABBCDoAlAIMCgtBLSEPDAELQRghDwsgACgC3AEgD24iAiAAKAKIAiAAKAKQAmsiB0kEQCACIgdBgIAESQ0HC0GAgAQgByAHQYCABE8bIg4gD2wiDCAAKALoASIBSwRAIAwgAWsiAiAAKALgASABa0sEQCASIAEgAkEEQQQQpAUgACgC6AEhAQsgACgC5AEiBiABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBiACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC6AELIA5BCWwhEwJAIAcEQCAOQeAAbCEKIA5BGGwhCUEBIQFBACEQQQAhBgJAA0AgBiEEIAEhBiAEIA9sIgEgACgC3AEiAk8NAwJAAkACQAJAIARBCWwiAyAAKALoASICTw0AIAAoAuQBIANBAnRqIAAoAtgBIAFqLQAAs0MAAADDkkMAAAA8lDgCACABQQNqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EDaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQZqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EGaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQFqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EBaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQRqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EEaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQdqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EHaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQJqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0ECaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQVqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EFaiILIAAoAugBIgJPBEAgCyEDDAELIAAoAuQBIAtBAnRqIAAoAtgBIAVqLQAAs0MAAADDkkMAAAA8lDgCACABQQhqIgUgACgC3AEiAk8EQCAFIQEMCAsgA0EIaiIDIAAoAugBIgJPDQAgACgC5AEgA0ECdGogACgC2AEgBWotAACzQwAAAMOSQwAAADyUOAIAIAAoAowCQQFLDQEMAgsgAyACQfzUwQAQjAcACwJAAkAgAUEJaiIDIAAoAtwBIgVPDQAgBEEPbCATaiICIAAoAugBIgVPDQMgACgC5AEgAkECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDGoiAyAAKALcASIFTw0AIAJBA2oiBCAAKALoASIFTwRAIAQhAgwECyAAKALkASAEQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEPaiIDIAAoAtwBIgVPDQAgAkEGaiIEIAAoAugBIgVPBEAgBCECDAQLIAAoAuQBIARBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRJqIgMgACgC3AEiBU8NACACQQlqIgQgACgC6AEiBU8EQCAEIQIMBAsgACgC5AEgBEECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFWoiAyAAKALcASIFTw0AIAJBDGoiBCAAKALoASIFTwRAIAQhAgwECyAAKALkASAEQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEKaiIDIAAoAtwBIgVPDQAgAkEBaiIEIAAoAugBIgVPBEAgBCECDAQLIAAoAuQBIARBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ1qIgMgACgC3AEiBU8NACACQQRqIgQgACgC6AEiBU8EQCAEIQIMBAsgACgC5AEgBEECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEGoiAyAAKALcASIFTw0AIAJBB2oiBCAAKALoASIFTwRAIAQhAgwECyAAKALkASAEQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUETaiIDIAAoAtwBIgVPDQAgAkEKaiIEIAAoAugBIgVPBEAgBCECDAQLIAAoAuQBIARBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRZqIgMgACgC3AEiBU8NACACQQ1qIgQgACgC6AEiBU8EQCAEIQIMBAsgACgC5AEgBEECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBC2oiAyAAKALcASIFTw0AIAJBAmoiBCAAKALoASIFTwRAIAQhAgwECyAAKALkASAEQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEOaiIDIAAoAtwBIgVPDQAgAkEFaiIEIAAoAugBIgVPBEAgBCECDAQLIAAoAuQBIARBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRFqIgMgACgC3AEiBU8NACACQQhqIgQgACgC6AEiBU8EQCAEIQIMBAsgACgC5AEgBEECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFGoiAyAAKALcASIFTw0AIAJBC2oiBCAAKALoASIFTwRAIAQhAgwECyAAKALkASAEQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEXaiIDIAAoAtwBIgVPDQAgAkEOaiICIAAoAugBIgVPDQMgACgC5AEgAkECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAAoAowCQQJNDQJBACEFIAohAwwBCyADIAVBzNTBABCMBwALAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQANAIAAoAtwBIgIgBSAQaiIBQRhqSwRAIAUgCWoiBCAAKALoASICTw0PIAAoAuQBIANqIAEgACgC2AFqQRhqLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBG2pNDQcgACgC6AEiAiAEQQNqTQ0OIAAoAuQBIANqQQxqIAEgACgC2AFqQRtqLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBHmpNDQYgACgC6AEiAiAEQQZqTQ0NIAAoAuQBIANqQRhqIAEgACgC2AFqQR5qLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBIWpNDQUgACgC6AEiAiAEQQlqTQ0MIAAoAuQBIANqQSRqIAEgACgC2AFqQSFqLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBJGpNDQQgACgC6AEiAiAEQQxqTQ0LIAAoAuQBIANqQTBqIAEgACgC2AFqQSRqLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBJ2pNDQMgACgC6AEiAiAEQQ9qTQ0KIAAoAuQBIANqQTxqIAEgACgC2AFqQSdqLQAAs0MAAADDkkMAAAA8lDgCACAAKALcASICIAFBKmpNDQIgACgC6AEiAiAEQRJqTQ0JIAAoAuQBIANqQcgAaiAAKALYASAQaiAFakEqai0AALNDAAAAw5JDAAAAPJQ4AgAgA0EEaiEDIAVBAWoiBUEDSQ0BDBALCyABQRhqDAYLIAFBKmoMBQsgAUEnagwECyABQSRqDAMLIAFBIWoMAgsgAUEeagwBCyABQRtqCyACQazUwQAQjAcACyAEQRJqIQQMBQsgBEEPaiEEDAQLIARBDGohBAwDCyAEQQlqIQQMAgsgBEEGaiEEDAELIARBA2ohBAsgBCACQbzUwQAQjAcACyAPIBBqIRAgCUEVaiEJIApB1ABqIQogBiAGIA5JIgJqIQEgAkUNAgwBCwsgAiAFQdzUwQAQjAcACyAAKALoASEBCwJAAkACQAJAAkACQCABIBNPBEAgACgC5AEhBiAAKAKQAiEEQQAhAkEEIQkCQCAAKAKMAiIKQQJJBEBBBCEQQQAhBQwBCyAOQRhsIgMgAUsNAiAOQQ9sIQUgBiATQQJ0aiEQIApBAkYNACABIAxJIAMgDEtyDQcgDCADayECIAYgA0ECdGohCQsgBwRAIAAgBCAOIAYgExDOAwsgBQRAIAAgBCAOIBAgBRDiAwsgAgRAIAAgBCAOIAkgAhDjAwsgACgC3AEiAiAMSQ0CIABBADYC3AEgAiAMayEBIAdFDQMgAiAMRg0FIAFFDQQgACgC2AEiAiACIAxqIAH8CgAADAQLQQAgEyABQZzUwQAQ6gcACyATIAMgAUGM1MEAEOoHAAtBACAMIAJBhKTHABDqBwALIAIgDEYNAQsgACABNgLcAQsgACAAKAKQAiAOaiICNgKQAiACIAAoAogCRw0JIABBADYCkAIgAEEGOgCUAgwJCyADIAwgAUH808EAEOoHAAsgASACQezUwQAQjAcACyAAKALcAUEEQQMgACgChAIiA0EDRhsiEG4iAiAAKAKIAiAAKAKQAmsiBkkEQCACIgZBgIAESQ0GCwJAAkACQAJAAkACQAJAAkACQAJAAkBBgIAEIAYgBkGAgARPGyIFQQJ0IgIgACgC6AEiAUsEfyACIAFrIgIgACgC4AEgAWtLBEAgEiABIAJBBEEEEKQFIAAoAugBIQELIAAoAuQBIgQgAUECdGohAyACQQJPBH8gAkECdEEEayIJBEAgA0EAIAn8CwALIAEgAmoiAkEBayEBIAQgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgLoASAAKAKEAgUgAwtBA0cEQCAGRQ0LQQAhBEEAIQFBACECQQAhAwNAIAEgACgC3AEiCU8NAiABQQFqIgcgCU8NAyABQQJqIgcgCU8NBEMAAIA/IAAoAtgBIAFqIgktAACzQwAA/0KVQwAAgL+SIhkgGZQgCUEBai0AALNDAAD/QpVDAACAv5IiGiAalJIgCUECai0AALNDAAD/QpVDAACAv5IiGyAblJKTQwAAAAAQ4AghHCADIAAoAugBIglPDQUgACgC5AEgAmogGTgCACADQQFqIgkgACgC6AEiB08NBiAAKALkASACakEEaiAaOAIAIANBAmoiCSAAKALoASIHTw0HIAAoAuQBIAJqQQhqIBs4AgAgA0EDaiIJIAAoAugBIgdPDQggACgC5AEgAmpBDGogHJE4AgAgAUEDaiEBIAJBEGohAiADQQRqIQMgBEEBaiIEIAVJDQALDAsLIAZFDQpBACECQQEhCUEAIQMDQAJAAkACQAJAIAAoAtwBIgEgA0sEQCADQQFqIgQgAU8NASADQQJqIgcgAU8NAiADQQNqIgogAU8NAyAAKALYASADaiIBQQJqLQAAIQwgAUEDai0AACELIAEtAAAgAUEBai0AACEOIAj9DAAAAAAAAAAAAAAAAAAAAAD9CwNQIA5BCHRyIg8gDEEQdCALQRh0cnIhAUMAAAAAIRkCfwJAIAtBBnYiDEEDRwRAIAggD0H/A3GzQwCA/0OVQ/MENT+UIhmMIBkgDkECcRsiGTgCXCAZIBmUIRkgAUEKdiEBIAxBAkYNAQsgCCABQf8DcbNDAID/Q5VD8wQ1P5QiGowgGiABQYAEcRsiGjgCWCAZIBogGpSSIRkgAUEKdiIBIAxBAUYNARoLIAggAUH/A3GzQwCA/0OVQ/MENT+UIhqMIBogAUGABHEbIho4AlQgGSAaIBqUkiEZIAFBCnYLIQEgCEHQAGogDEECdGpDAACAPyALQcAATwR9IAggAUH/A3GzQwCA/0OVQ/MENT+UIhqMIBogAUGABHEbIho4AlAgGSAaIBqUkgUgGQuTIhmRQwAAAAAgGUMAAAAAXhs4AgAgAyAAKALoASIBSQ0EIAMgAUG80sEAEIwHAAsgAyABQfzRwQAQjAcACyAEIAFBjNLBABCMBwALIAcgAUGc0sEAEIwHAAsgCiABQazSwQAQjAcACyAAKALkASACaiAIKgJQOAIAIAQgACgC6AEiAU8NCiAAKALkASACakEEaiAIKgJUOAIAIAcgACgC6AEiAU8NCSAAKALkASACakEIaiAIKgJYOAIAIAogACgC6AEiAU8NCCAAKALkASACakEMaiAIKgJcOAIAIAJBEGohAiADQQRqIQMgBSAJSyAJQQFqIQkNAAsMCgsgASAJQfzSwQAQjAcACyAHIAlBjNPBABCMBwALIAcgCUGc08EAEIwHAAsgAyAJQazTwQAQjAcACyAJIAdBvNPBABCMBwALIAkgB0HM08EAEIwHAAsgCSAHQdzTwQAQjAcACyAKIAFB7NLBABCMBwALIAcgAUHc0sEAEIwHAAsgBCABQczSwQAQjAcACyAAIAAoApACIAUgACgC5AEgACgC6AEQ+wQCQAJAAkAgACgC3AEiASAFIBBsIgJPBEAgAEEANgLcASABIAJrIQMgBkUNASABIAJGDQMgA0UNAiAAKALYASIBIAEgAmogA/wKAAAMAgsMDwsgASACRg0BCyAAIAM2AtwBCyAAIAAoApACIAVqIgI2ApACIAIgACgCiAJHDQYgAEEANgKQAiAAQQU6AJQCDAYLIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQULQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIw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AtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFB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DUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0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AXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToAHCADIAFBDHZBD3EtANy2RToAGyADIAFBEHZBD3EtANy2RToAGiABQQFyZ0ECdiICIANBFmoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQR5qIgQgAUEPcS0A3LZFOgAAIAAgAykBFjcAACADQf0AOgAfCyAAQQhqIAQvAQA7AABBCgwDCyAAIAE2AgBBgAEhAkGBAQwCCyAAQgA3AQIgAEHcxAA7AQALQQAhAkECCzoADSAAIAI6AAwgA0EgaiQAC9MEAgZ+BH8gACAAKAI4IAJqNgI4AkAgACgCPCILRQRADAELQQQhCQJ+QQggC2siCiACIAIgCksbIgxBBEkEQEEAIQlCAAwBCyABNQAACyEDIAwgCUEBcksEQCABIAlqMwAAIAlBA3SthiADhCEDIAlBAnIhCQsgACAAKQMwIAkgDEkEfiABIAlqMQAAIAlBA3SthiADhAUgAwsgC0EDdEE4ca2GhCIDNwMwIAIgCk8EQCAAIAApAxggA4UiBCAAKQMIfCIGIAApAxAiBUINiSAFIAApAwB8IgWFIgd8IgggB0IRiYU3AxAgACAIQiCJNwMIIAAgBiAEQhCJhSIEQhWJIAQgBUIgiXwiBIU3AxggACADIASFNwMADAELIAAgAiALajYCPA8LIAIgCmsiAkEHcSEJIAJBeHEiAiAKSwRAIAApAwghBCAAKQMQIQMgACkDGCEGIAApAwAhBQNAIAQgBiABIApqKQAAIgeFIgZ8IgQgAyAFfCIFIANCDYmFIgN8IgggA0IRiYUhAyAEIAZCEImFIgRCFYkgBCAFQiCJfCIFhSEGIAhCIIkhBCAFIAeFIQUgCkEIaiIKIAJJDQALIAAgAzcDECAAIAY3AxggACAENwMIIAAgBTcDAAtBBCECAn4gCUEESQRAQQAhAkIADAELIAEgCmo1AAALIQMgCSACQQFySwRAIAEgCmogAmozAAAgAkEDdK2GIAOEIQMgAkECciECCyAAIAIgCUkEfiABIAIgCmpqMQAAIAJBA3SthiADhAUgAws3AzAgACAJNgI8C5MFAwJ7BX8BfgJAAkACQEF/IAQtAL8CIgdBD3F0IgRB/wFxQf8BRwRAQf8BIARBf3MiC0H/AXFuIQhBASAHdEGWAnFFIAdBCEtyDQFBCCAHbq0gAa1+IgxCIIhQIAynIANJcQ0CIAAgAWohCQJAIAdBCEcEQCADRQ0BQQggB2shBEF/IQEDQCABQQBIBEAgACAJRg0HIAAtAAAhCiAEIQEgAEEBaiEACyACIAogAXYgC3EgCGw6AAAgASAHayEBIAJBAWohAiADQQFrIgMNAAsMAQsgAUUNACADIAFBAWsiASABIANLG0EBaiIBQRFPBEAgAiABIAFBD3EiAUEQIAEbayIBaiADIAFrIQMgACABaiEHIAj9DyEFA0AgAiAA/QAAACIG/RYAIAX9FgBs/Q8gBv0WASAF/RYBbP0XASAG/RYCIAX9FgJs/RcCIAb9FgMgBf0WA2z9FwMgBv0WBCAF/RYEbP0XBCAG/RYFIAX9FgVs/RcFIAb9FgYgBf0WBmz9FwYgBv0WByAF/RYHbP0XByAG/RYIIAX9Fghs/RcIIAb9FgkgBf0WCWz9FwkgBv0WCiAF/RYKbP0XCiAG/RYLIAX9Fgts/RcLIAb9FgwgBf0WDGz9FwwgBv0WDSAF/RYNbP0XDSAG/RYOIAX9Fg5s/RcOIAb9Fg8gBf0WD2z9Fw/9CwAAIABBEGohACACQRBqIQIgAUEQayIBDQALIQIgByEACwNAIANFDQEgAiAALQAAIAhsOgAAIAJBAWohAiADQQFrIQMgAEEBaiIAIAlHDQALCw8LQfSXxQAQgQgAC0Gwl8UAQTRB5JfFABDrBwALQYSWxQBB5QBB7JbFABDrBwALQfyWxQBBIkGgl8UAEKsHAAvkBAIIfwR9IAEoAggiCEUEQCAAQQA2AgAPCyABIAhBAWsiAjYCCCABKAIEIgMgAkEDdGoiASgCBCEFIAEqAgAhCgJAIAJFBEAgBSEJIAohDQwBCyADKAIEIQkgAyAFNgIEIAMqAgAhDSADIAo4AgBBACEBQQEhBCAIQQRPBEAgAkECayIBQQAgASACTRshB0EAIQIDQCADIAJBA3RqIAMgBCADIARBA3RqIgJBCGoqAgAiDCAMWyAMIAIqAgAiC2BFcSIBIAFBfyALIAxgGyALIAtcGyIBQQBMIAJBBGooAgAgAkEMaigCAE0gARtqIgFBA3RqKQIANwIAIAFBAXQiBkEBciEEIAEhAiAGIAdJDQALCwJAAkAgCEECayAERgRAIAMgAUEDdGogAyAEQQN0aiIBKQIANwIAIAEgBTYCBCABIAo4AgAgBCEBDAELIAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcCMCABQShqEJIHIQIMAQsgACgChAFBgICAgHhHBEBBACECIAAtALgBIgNBCUYNASADQQVGBEAgACgCsAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGwAWqtQoCAgIAQhDcDICABIABBuAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILiAIBAn8jAEHwAGsiAyQAAkACQAJAAkACQCABRQRAIABFDQEgAEEIayIBKAIAQQFHDQQgA0EIaiAAQQRqQegA/AoAACABQQA2AgACQCABQX9GDQAgAEEEayICIAIoAgBBAWsiAjYCACACDQAgAEEMaygCACIAQXhxIgJB+ABB/AAgAEEDcSIAG0kNAyAAQQAgAkGcAU8bDQQgARCiAgsgA0EIahD2AgwFCyAARQ0AIABBCGsiACAAKAIAQQFrIgE2AgAgAQ0EIAAQ5AYMBAsQjgoAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBjNrAAEE/EI8KAAsgA0HwAGokAAuIAgECfyMAQdAAayIDJAACQAJAAkACQAJAIAFFBEAgAEUNASAAQQhrIgEoAgBBAUcNBCADQQhqIABBBGpByAD8CgAAIAFBADYCAAJAIAFBf0YNACAAQQRrIgIgAigCAEEBayICNgIAIAINACAAQQxrKAIAIgBBeHEiAkHYAEHcACAAQQNxIgAbSQ0DIABBACACQfwATxsNBCABEKICCyADQQhqEPUCDAULIABFDQAgAEEIayIAIAAoAgBBAWsiATYCACABDQQgABDjBgwECxCOCgALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0GM2sAAQT8QjwoACyADQdAAaiQAC+cBAQN/IwBBEGsiAyQAIAMgACgCACIANgIEAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BIANBBGogARCLBQwCC0EJIQIDQCACIANqQQZqIABBD3EtANy2RToAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQYS0xQBBAiACIANqQQdqQQkgAmsQyAMMAQtBCSECA0AgAiADakEGaiAAQQ9xLQDJgUI6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGEtMUAQQIgAiADakEHakEJIAJrEMgDCyADQRBqJAALgwICA34EfyAAKAIMRQRAQQAPCyAAKQMQIAApAxggASACEJUEIQMgACgCBCIHIAOncSEGIANCGYhC/wCDQoGChIiQoMCAAX4hBSAAKAIAIQgDQAJAIAYgCGopAAAiBCAFhSIDQn+FIANCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiA1BFBEADQCAIIAN6p0EDdiAGaiAHcUFsbGoiAEEMaygCACACRgRAIAEgAEEQaygCACACENsHRQ0DCyADQgF9IAODIgNQRQ0ACwtBACEAIAQgBEIBhoNCgIGChIiQoMCAf4NQRQ0AIAYgCUEIaiIJaiAHcSEGDAELCyAAQRRrQQAgABsL5gEBA38jAEEQayIDJAACfwJAIAEoAggiAkGAgIAQcUUEQCACQYCAgCBxDQEgACABEIsFDAILIAAoAgAhAEEJIQIDQCACIANqQQZqIABBD3EtANy2RToAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQYS0xQBBAiACIANqQQdqQQkgAmsQyAMMAQsgACgCACEAQQkhAgNAIAIgA2pBBmogAEEPcS0AyYFCOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBhLTFAEECIAIgA2pBB2pBCSACaxDIAwsgA0EQaiQAC7QCAQN/IwBBEGsiAiQAAkACQAJAAkAgACgCACIAKAIAQQFrDgIBAgALIAIgAEEIajYCBCABKAIAQfHExABBDyABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakGQr8cAQQggAEEEakGgwMQAEIwFQYDFxABBBiACQQRqQeS2xAAQjAUgAi0ADSIDIAItAAwiBHIhASAEQQFxIANBAUdyDQIoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAMLIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQwCCyABKAIAQYbFxABBFSABKAIEKAIMEQAAIQEMAQsgASgCAEGbxcQAQRUgASgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQukAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAQQFGBEAgASgCACIEQcOYyABBBCABKAIEIgYoAgwiBREAAA0BIABBBGohAAJAIAEtAApBgAFxRQRAIARBu7PFAEEBIAURAAANAyAAIAEQugUNAyABKAIAIQQgASgCBCgCDCEFDAELIARB24HCAEECIAURAAANAiACQQE6AA8gAiAGNgIEIAIgBDYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqELoFDQIgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0CCyAEQd6OyABBASAFEQAAIQMMAQsgASgCAEG/mMgAQQQgASgCBCgCDBEAACEDCyACQSBqJAAgAwvmAQEDfyMAQRBrIgMkAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASAAIAEQ9QQMAgsgACgCACEAQQkhAgNAIAIgA2pBBmogAEEPcS0A3LZFOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBhLTFAEECIAIgA2pBB2pBCSACaxDIAwwBCyAAKAIAIQBBCSECA0AgAiADakEGaiAAQQ9xLQDJgUI6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGEtMUAQQIgAiADakEHakEJIAJrEMgDCyADQRBqJAAL4gECBH8EfiABKAIEIgOtIQYCQAJAIANC/////w8gASkDCCIHIAdC/////w9aG6drIgRBACADIARPG0EDTwRAIAEoAgAgByAGIAYgB1Ybp2oiAi0AAUEIdCEDIAItAAJBEHQhBCACLQAAIQVBBCECDAELQaiQyAApAwAiCUIIiCEIIAmnIQJBACEDQQAhBCAJQv8Bg0IEUg0BCyAHQgN8IQYLIAEgBjcDCCACQf8BcUEERwRAIAAgAq1C/wGDIAhCCIaENwIEIABBADoAAA8LIAAgAyAFciAEcjYCBCAAQR06AAAL8QECAX4CfyMAQRBrIgMkACAAKAIAIQACfwJAIAEoAggiBEGAgIAQcUUEQCAEQYCAgCBxDQEgACABEIUFDAILIAApAwAhAkERIQADQCAAIANqQQJrIAKnQQ9xLQDctkU6AAAgAEEBayEAIAJCD1YgAkIEiCECDQALIAFBAUGEtMUAQQIgACADakEBa0ERIABrEMgDDAELIAApAwAhAkERIQADQCAAIANqQQJrIAKnQQ9xLQDJgUI6AAAgAEEBayEAIAJCD1YgAkIEiCECDQALIAFBAUGEtMUAQQIgACADakEBa0ERIABrEMgDCyADQRBqJAALggIBBH8CQAJAAkACQCAAKAIIIgFBgICAgHhyQYCAgIB4RwRAIAAoAgwiAkEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgAWpJDQEgA0EAIAQgAUEnaksbDQIgAhCiAgsCQCAAKAJcIgFFDQAgAUEYbCICIAFqQSFqIgFFDQAgACgCWCACayIAQRxrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNAyACQQAgAyABQSdqSxsNBCAAQRhrEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuCAgEEfyMAQYAgayIEJAACQAJAAkACQAJAQYCJ+gAgASABQYCJ+gBPGyICIAEgAUEBdmsiAyACIANLGyICQYEITwRAIANB/////wNLDQJBMCACIAJBME0bIgVBAnQiA0H9////B08NAiADEHEiAkUNAyAAIAEgAiAFIAFBwQBJEN0BIAJBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIANqSQ0EIABBACABIANBJ2pLGw0FIAIQogIMAQsgACABIARBgAggAUHBAEkQ3QELIARBgCBqJAAPC0HYlcEAEP8HCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+gBAQR/IAAgASACEOkEAkACQAJAIAIEQCAAKAJ4IQEgACgCfCEIQQEhBQNAIAdBA2ogCE8NAiAFQQFrIgYgBE8EQCAGIQUMBQsgBCAGayIGQQAgBCAGTxsiBkEBRg0EIAZBAkYNAyABIAMqAgA4AgAgAUEIaiADQQhqKAIANgIAIAFBBGogA0EEaioCADgCACABQRBqIQEgB0EEaiEHIAVBA2ohBSADQQxqIQMgAkEBayICDQALCyAAQQE6AMABDwsgByAHQQRqIAhBmLPBABDqBwALIAVBAWohBQsgBSAEQaizwQAQjAcAC/oBAQR/IAAoAgQhAwJAAkACQAJAIAAtAAAiAEEETSAAQQNHcUUEQCADKAIAIQAgA0EEaigCACIBKAIAIgIEQCAAIAIRAwALIAEoAgQiAQRAIABBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0CIAJBACAEIAFBJ2pLGw0DIAAQogILIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0DIABBACABQTRPGw0EIAMQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+oBAgF+An8jAEEQayIDJAACfwJAIAEoAggiBEGAgIAQcUUEQCAEQYCAgCBxDQEgACABEIUFDAILIAApAwAhAkERIQADQCAAIANqQQJrIAKnQQ9xLQDctkU6AAAgAEEBayEAIAJCD1YgAkIEiCECDQALIAFBAUGEtMUAQQIgACADakEBa0ERIABrEMgDDAELIAApAwAhAkERIQADQCAAIANqQQJrIAKnQQ9xLQDJgUI6AAAgAEEBayEAIAJCD1YgAkIEiCECDQALIAFBAUGEtMUAQQIgACADakEBa0ERIABrEMgDCyADQRBqJAAL+wEBBH8CQAJAAkACQAJAIAAtAABBJEcNACAALQAEQQNHDQAgACgCCCIAKAIAIQEgAEEEaigCACICKAIAIgMEQCABIAMRAwALIAIoAgQiAgRAIAFBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAJqSQ0CIANBACAEIAJBJ2pLGw0DIAEQogILIABBBGsoAgAiAUF4cSICQRBBFCABQQNxIgEbSQ0DIAFBACACQTRPGw0EIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4cCAgJ/An0CQAJAIAC8IgFBgICABE4EQCABQf////sHSw0BQYF/IQJDAAAAACEAIAFBgICA/ANGDQEMAgsgAEMAAAAAWwRAQwAAgL8gACAAlJUPCyABQQBOBEAgAEMAAABMlLwhAUHofiECDAILIAAgAJNDAAAAAJUhAAsgAA8LIAFBjfarAmoiAUEXdiACarIiA0OAcTE/lCABQf///wNxQfOJ1PkDar5DAACAv5IiACADQ9H3FzeUIAAgAEMAAABAkpUiAyAAIABDAAAAP5SUIgQgAyADlCIAIAAgAJQiAEPu6ZE+lEOqqio/kpQgACAAQyaeeD6UQxPOzD6SlJKSlJIgBJOSkguBAgIEfwF+IwBBMGsiASQAIAApAhAhBSAAKAIMIQIgACgCCCEEIAAoAgAhAwJAAkACQAJAAkACQAJAAkAgACgCBCIADgIAAQILIAINAUEBIQNBACEAQQEhAgwDCyACRQ0BCyABIAU3AiggASACNgIkIAEgBDYCICABIAA2AhwgASADNgIYIAFBDGogAUEYahDsAwwCCyADKAIEIgBBAEgNAiADKAIAIQMgAEUEQEEBIQJBACEADAELIAAQcSICRQ0DCyAABEAgAiADIAD8CgAACyABIAA2AhQgASACNgIQIAEgADYCDAsgAUEMahC6ASABQTBqJAAPC0HYmsgAEP8HCwAL4wEBCH8gASgCCCICIAEoAgQiAyACIANLGyEIIAEoAgAhBSACIQYCQAJAA0AgCCAGIgRGDQEgASAEQQFqIgY2AgggBCAFai0AACIHQeEAayEJIAdBMGtB/wFxQQpJIAlB/wFxQQZJcg0ACyAHQd8ARw0AAkAgAgRAIAIgA08EQCACIANHDQIgAyAETw0EDAILIAIgBWosAABBQEggAyAESXINAQwDCyADIARPDQILIAUgAyACIARBqLLFABC7CQALIABBADYCACAAQQA6AAQPCyAAIAQgAms2AgQgACACIAVqNgIAC/cBAQR/IABBBGoQ6gICQAJAAkACQCAALQAcQQNGBEAgACgCICIAKAIAIQEgAEEEaigCACICKAIAIgMEQCABIAMRAwALIAIoAgQiAgRAIAFBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAJqSQ0CIANBACAEIAJBJ2pLGw0DIAEQogILIABBBGsoAgAiAUF4cSICQRBBFCABQQNxIgEbSQ0DIAFBACACQTRPGw0EIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4QCAAJ/AkACQAJAIAJBBWsOBAACAgECCwJAAkACQCABLQAAQeIAaw4FAAQEBAEECyABLQABQeEARg0BDAMLIAEtAAFB6QBHDQIgAS0AAkHsAEcNAiABLQADQeUARw0CIAEtAARB8wBHDQJBAAwDCyABLQACQe4ARw0BIAEtAANB5ABHDQEgAS0ABEHzAEcNAUECDAILIAEtAABB4wBHDQAgAS0AAUHvAEcNACABLQACQeQARw0AIAEtAANB5QBHDQAgAS0ABEHiAEcNACABLQAFQe8ARw0AIAEtAAZB7wBHDQAgAS0AB0HrAEcNAEEBDAELQQMLIQEgAEEAOgAAIAAgAToAAQvxAQEEfyMAQTBrIgIkACACQRhqIgMgACgCACUBECkgAiACQQxqrUKAgICAsAWENwMAIAIgAigCHCIANgIUIAIgAigCGDYCECACIAA2AgwgASgCACABKAIEIAJCATcCJCACQQI2AhwgAkHgjsgANgIYIAIgAjYCICADEMEDIQECQAJAIAIoAgwiAARAIAIoAhAiA0EEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgAGpJDQEgBEEAIAUgAEEnaksbDQIgAxCiAgsgAkEwaiQAIAEPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuJAgEDfwJAAkACQAJAAkAgASkCAEL117zJyMzWszqFIAEpAghC/tvLm/Plucb1AIWEUEUEQCAAQQRqEOoCIAAoAhwiAUUNASAAKAIgIgJBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAFqSQ0CIANBACAEIAFBJ2pLGw0DIAIQogIMAQsgAEEEahDqAiAAQShqEOMECyAAQQRrKAIAIgFBeHEiAkE4QTwgAUEDcSIBG0kNAiABQQAgAkHcAE8bDQMgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuOAgEDfwJAAkACQAJAIAEpAgBC7bqtts2F1PXjAIUgASkCCEL4gpm9le7Gxbl/hYRQRQRAIAAoAiQhAiAAQQRqEOoCIABBBGsoAgAiA0F4cUEsQTAgA0EDcSIEG0kNASAEQQAgA0HQAE8bDQIgABCiAiACIAEgAigCACgCFBEBAA8LIABBBGoQ6gIgACgCJCIBIAEoAgAoAgARAwAgAEEEaygCACIBQXhxQSxBMCABQQNxIgIbSQ0CIAJBACABQdAATxsNAyAAEKICDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+8BAQR/AkACQAJAAkAgAC0AAEEDRgRAIAAoAgQiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgIEQCABQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyACakkNAiADQQAgBCACQSdqSxsNAyABEKICCyAAQQRrKAIAIgFBeHEiAkEQQRQgAUEDcSIBG0kNAyABQQAgAkE0TxsNBCAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvPAgIGfwF+AkACQCAAKAIIIgEgACgCBCICRg0AIAEgAk8NASAAKAIAIgQgAWotAAAiA0EiRiADQdwARnIgA0EfTXINACAEIAFBAWoiBWohA0EAIAIgBWtBeHEiBmshAgNAIAMhASACRQRAIAAgBSAGajYCCAJAIAAoAggiASAAKAIEIgJPDQAgACgCACEEA0AgASAEai0AACIDQSJGIANB3ABGciADQSBJcg0BIAAgAUEBaiIBNgIIIAEgAkcNAAsLDwsgAkEIaiECIAFBCGohAyABKQAAIgdCf4UgB0LcuPHixYuXrtwAhUKBgoSIkKDAgAF9IAdCosSIkaLEiJEihUKBgoSIkKDAgAF9IAdCoMCAgYKEiJAgfYSEg0KAgYKEiJCgwIB/gyIHUA0ACyAAIAEgBGsgB3qnQQN2ajYCCAsPCyABIAJBiJzGABCMBwAL6wEBA38jAEFAaiIDJAAgAyACNgIEIAMgATYCACADIAOtQoCAgIAwhDcDECADIACtQoCAgICwDoQ3AwggA0ICNwI0IANBAjYCLCADQaimxgA2AiggAyADQQhqNgIwIANBHGogA0EoahDsAyADKAIcIQAgAygCICIBIAMoAiQQ6wghAgJAAkAgAARAIAFBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIABqSQ0BIARBACAFIABBJ2pLGw0CIAEQogILIANBQGskACACDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALiAIBA38jAEEQayICJAACQCAAKAIAIgAoAgAEQCACIABBCGo2AgQgASgCAEHw1cQAQQogASgCBCgCDBEAACEDIAJBADoADSACIAM6AAwgAiABNgIIIAJBCGpByKrHAEEGIABB4NXEABCMBUH61cQAQQ4gAkEEakGAwsQAEIwFIAItAA0iAyACLQAMIgRyIQEgBEEBcSADQQFHcg0BKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwCCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQEMAQsgASgCAEGeqscAQRAgASgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvrAQEEfwJAAkACQAJAIABBDGooAgAiAQRAIABBEGooAgAiAkEEaygCACIDQXhxIgQgAUEEdCIBQQRBCCADQQNxIgMbckkNASADQQAgBCABQSdqSxsNAiACEKICCwJAIABBf0YNACAAIAAoAgRBAWsiATYCBCABDQAgAEEEaygCACIBQXhxQRxBICABQQNxIgIbSQ0DIAJBACABQcAATxsNBCAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAv/AQEBfyMAQTBrIgIkAAJAIAApAwBC////////////AINCgICAgICAgPj/AFoEQCACIACtQoCAgIDwAoQ3AxAgASgCACABKAIEIAJCATcCJCACQQE2AhwgAkGg+McANgIYIAIgAkEQajYCICACQRhqEMEDIQAMAQsgAkEAOgAMIAIgATYCCCACIACtQoCAgIDwAoQ3AxAgAkIBNwIkQQEhACACQQE2AhwgAkGg+McANgIYIAIgAkEQajYCICACQQhqQcSSxgAgAkEYahDBAw0AIAItAAxFBEAgASgCAEG/ksYAQQIgASgCBCgCDBEAAA0BC0EAIQALIAJBMGokACAAC+sBAQR/AkACQAJAAkAgASgCKEECRwRAAkAgASgCpAJBgYCAgHhGDQAgASgCrAIiAkEASA0CIAIEQCABKAKoAiEDIAIQcSIBRQ0EIAIEQCABIAMgAvwKAAALIAEgAhCWASABQQRrKAIAIgRBeHEiBUEEQQggBEEDcSIEGyACakkNBSAEQQAgBSACQSdqSxsNBiABEKICQf8BcSICQQhHDQELQQAhAgsgAEEGNgIAIAAgAjoABA8LQayYxwAQ3QkAC0HYmsgAEP8HCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+cBAQF/IwBBEGsiBiQAAkACQAJAIAEEQCAGQQRqIAEgAyAEIAUgAigCEBEHACAGKAIIIQECQCAGKAIEIgMgBigCDCICTQ0AIANBAnQhAyACRQRAIAFBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIANqSQ0DIARBACAFIANBJ2pLGw0EIAEQogJBBCEBDAELIAEgA0EEIAJBAnQQuwIiAUUNBAsgACACNgIEIAAgATYCACAGQRBqJAAPC0Gt+cQAQTIQjwoAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHCwAL6AEBBH8jAEEQayICQQhqQQA6AAAgAkEAOwEGIAIgAUEUdi0A3LZFOgAJIAIgAUEEdkEPcS0A3LZFOgANIAIgAUEIdkEPcS0A3LZFOgAMIAIgAUEMdkEPcS0A3LZFOgALIAIgAUEQdkEPcS0A3LZFOgAKIAFBAXJnQQJ2IgMgAkEGaiIFaiIEQfsAOgAAIARBAWtB9QA6AAAgBSADQQJrIgNqQdwAOgAAIAJBDmoiBCABQQ9xLQDctkU6AAAgAEEKOgALIAAgAzoACiAAIAIpAQY3AAAgAkH9ADoADyAAQQhqIAQvAQA7AAAL5AECA38BfiMAQSBrIgIkACACQQg6ABsgAkEIaiABIAJBG2ogASgCgAEQ5AQCQCAAAn8gAi0ACCIDQR1HBEAgAikCDCEFIANFBEAgACAFNwIEQQUMAgsgAigCFCEEQRAQcSIBRQ0CIAEgAzoAACABIAQ2AgwgASAFNwIEIABB7LvEADYCGCAAIAE2AhQgAEGABjsBBCABIAJBCGpBAXIiAy8AADsAASABQQNqIANBAmotAAA6AABBAAwBCyAAIAIpAgw3AgQgAEEMaiACQRRqKAIANgIAQQYLNgIAIAJBIGokAA8LAAvkAQIDfwF+IwBBIGsiAiQAIAJBCjoAGyACQQhqIAEgAkEbaiABKAKAARDkBAJAIAACfyACLQAIIgNBHUcEQCACKQIMIQUgA0UEQCAAIAU3AgRBBQwCCyACKAIUIQRBEBBxIgFFDQIgASADOgAAIAEgBDYCDCABIAU3AgQgAEHsu8QANgIYIAAgATYCFCAAQYAGOwEEIAEgAkEIakEBciIDLwAAOwABIAFBA2ogA0ECai0AADoAAEEADAELIAAgAikCDDcCBCAAQQxqIAJBFGooAgA2AgBBBgs2AgAgAkEgaiQADwsAC4gCAAJ/AkACQAJAIAJBBGsOAgEAAgsCQCABLQAAQeYAayICBEAgAkENRgRADAIFDAQLAAsgAS0AAUHpAEcNAiABLQACQewARw0CIAEtAANB5QBHDQIgAS0ABEHzAEcNAkEADAMLIAEtAAFB6ABHDQEgAS0AAkHhAEcNASABLQADQfAARw0BIAEtAARB5QBHDQFBAwwCCyABLQAAQe0ARw0AAkACQAJAIAEtAAFB4QBrDgkAAwMDAwMDAwEDCyABLQACQfgARg0BDAILIAEtAAJB7gBHDQEgAS0AA0HzAEcNAUEBDAILIAEtAANB8wBHDQBBAgwBC0EECyEBIABBADoAACAAIAE6AAEL0QEBA38jAEEQayICJAAgAkEANgIMIAAgAkEMagJ/IAFBgAFPBEAgAUE/cUGAf3IhAyABQQZ2IQAgAUGAEEkEQCACIAM6AA0gAiAAQcABcjoADEECDAILIAFBDHYhBCAAQT9xQYB/ciEAIAFB//8DTQRAIAIgAzoADiACIAA6AA0gAiAEQeABcjoADEEDDAILIAIgAzoADyACIAA6AA4gAiAEQT9xQYB/cjoADSACIAFBEnZBcHI6AAxBBAwBCyACIAE6AAxBAQsQ6wEgAkEQaiQAC9EBAQN/IwBBEGsiAiQAIAJBADYCDCAAIAJBDGoCfyABQYABTwRAIAFBP3FBgH9yIQMgAUEGdiEAIAFBgBBJBEAgAiADOgANIAIgAEHAAXI6AAxBAgwCCyABQQx2IQQgAEE/cUGAf3IhACABQf//A00EQCACIAM6AA4gAiAAOgANIAIgBEHgAXI6AAxBAwwCCyACIAM6AA8gAiAAOgAOIAIgBEE/cUGAf3I6AA0gAiABQRJ2QXByOgAMQQQMAQsgAiABOgAMQQELENUCIAJBEGokAAvlAQECfyMAQRBrIgUkAAJAAkACQCABBEAgBUEEaiABIAMgBCACKAIQEQYAIAUoAgghAQJAIAUoAgQiAyAFKAIMIgJNDQAgA0ECdCEDIAJFBEAgAUEEaygCACIEQXhxIgZBBEEIIARBA3EiBBsgA2pJDQMgBEEAIAYgA0EnaksbDQQgARCiAkEEIQEMAQsgASADQQQgAkECdBC7AiIBRQ0ECyAAIAI2AgQgACABNgIAIAVBEGokAA8LQa35xABBMhCPCgALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcLAAvkAQEEfwJAAkACQAJAIAAoAggiAQRAIAAoAgwiAkEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgAWpJDQEgA0EAIAQgAUEnaksbDQIgAhCiAgsCQCAAQX9GDQAgACAAKAIEIgFBAWs2AgQgAUEBRw0AIABBBGsoAgAiAUF4cSICQRhBHCABQQNxIgEbSQ0DIAFBACACQTxPGw0EIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+gBAQR/IwBBMGsiAiQAIAJBKGoiAyABQUBrKQMANwMAIAJBGGoiBSABQTBq/QADAP0LAwAgAiAB/QADIP0LAwgCQAJAQSgQcSIEBEAgBCAC/QADCP0LAwAgBEEgaiADKQMANwMAIARBEGogBf0AAwD9CwMAIAFBBGoQ6gIgAUEEaygCACIDQXhxQcwAQdAAIANBA3EiBRtJDQEgBUEAIANB8ABPGw0CIAEQogIgAEHsr8cANgIEIAAgBDYCACACQTBqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC94BAQR/AkACQAJAAkAgACgCACIBBEAgACgCBCICQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNASADQQAgBCABQSdqSxsNAiACEKICCyAAKAIMIgEEQCAAKAIQIgBBBGsoAgAiAkF4cSIDIAFBAnQiAUEEQQggAkEDcSICG2pJDQMgAkEAIAMgAUEnaksbDQQgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL5wEBBH8CQAJAAkACQCAAKAIAIgEEQCAAKAIEIgJBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAFqSQ0BIANBACAEIAFBJ2pLGw0CIAIQogILIAAoAgwiAUGAgICAeHJBgICAgHhHBEAgACgCECIAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNAyACQQAgAyABQSdqSxsNBCAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvQAQEDfwJAAkACQCACIAMgBGsiBUsEQCACIANNDQEgAyAEQQF0ayIGIAJPDQIgAyAEaiIHIAJPDQMgASAFai0AACABIANqLQAAayIFIAVBH3UiBXMgBWtBAXRB/gNxIAEgBmotAAAgASAHai0AAGsiBSAFQR91IgVzIAVrQQF2aiAAQf8BcU0EQEEBIAEgAiADIAQQ6AQaCw8LIAUgAkGI18QAEIwHAAsgAyACQZjXxAAQjAcACyAGIAJBqNfEABCMBwALIAcgAkG418QAEIwHAAvGAQEDfyABQf8AQYB/QfwAQYB/IAAEf0H/AEGAfyABLQACIAEtAAVrIgAgAEGAf0wbIgAgAEH/AE4bBSADCyABLQAEIgQgAS0AAyICa0EDbGoiACAAQYB/TBsiACAAQfwAThtBA2pBA3UgAmpBgAFrIgIgAkGAf0wbIgIgAkH/AE4bQYABczoAAyABQf8AQYB/IARB+wAgACAAQfsAThtBBGpBA3UiAGtBgAFrIgEgAUGAf0wbIgEgAUH/AE4bQYABczoABCAAC+8BAQR/IwBBIGsiACQAQaL5xwAhA0EJIQQCQAJAIAIoAgANACAAQRBqIAIoAgQgAigCCBD7AkGi+ccAIAAoAhQgACgCECICGyEDIAINACAAKAIYIgQNACABQQFBABCXAyECDAELIAAgBDYCDCAAIAM2AgggASgCBCEDIAEoAgAhBANAAkAgAEEQaiAAQQhqEO0DIAAoAhAiBUUNACAAKAIUIQYgACgCHEUEQCABIAUgBhCXAyECDAMLQQEhAiAEIAUgBiADKAIMEQAADQIgBEH9/wMgAygCEBECAEUNAQwCCwtBACECCyAAQSBqJAAgAgvSAQEBfyMAQSBrIgUkACAFQQhqIAMgAyAEQQJ0ahCZAwJAAkAgASACSwRAIAAgAkEYbGoiACgCFCIBQQVPBEAgACgCCCICQQRrKAIAIgNBeHEiBCABQQJ0IgFBBEEIIANBA3EiAxtqSQ0CIANBACAEIAFBJ2pLGw0DIAIQogILIAAgBf0AAgj9CwIAIABBEGogBUEYaikCADcCACAFQSBqJAAPCyACIAFBtMDHABCMBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9kBAQR/AkACQAJAAkAgACgCDCIBBEAgACgCECICQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNASADQQAgBCABQSdqSxsNAiACEKICCyAAKAIYIgEEQCAAKAIcIgBBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0DIAJBACADIAFBJ2pLGw0EIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9kBAQR/AkACQAJAAkAgACgCACIBBEAgACgCBCICQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNASADQQAgBCABQSdqSxsNAiACEKICCyAAKAIMIgEEQCAAKAIQIgBBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0DIAJBACADIAFBJ2pLGw0EIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC+8BAQN/IwBBEGsiAiQAAkAgACgCAARAIAIgADYCBCABKAIAQcCqxwBBCCABKAIEKAIMEQAAIQAgAkEAOgANIAIgADoADCACIAE2AgggAkEIakHIqscAQQYgAkEEakHolsEAEIwFIAItAA0iAyACLQAMIgRyIQEgBEEBcSADQQFHcg0BKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwCCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQEMAQsgASgCAEGeqscAQRAgASgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvvAQEDfyMAQRBrIgIkAAJAIAAoAgAEQCACIAA2AgQgASgCAEHAqscAQQggASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpByKrHAEEGIAJBBGpBsKrHABCMBSACLQANIgMgAi0ADCIEciEBIARBAXEgA0EBR3INASgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAgsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBDAELIAEoAgBBnqrHAEEQIAEoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXEL+AEBA38jAEEQayICJAAgAiAANgIEIAEoAgBB7aXHAEEGIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQbimxwBBDyAAQRBqQZimxwAQjAVBx6bHAEEQIABBGGpBmKbHABCMBUHXpscAQQkgAkEEakGopscAEIwFIQEgAi0ADSIDIAItAAwiBHIhAAJAIARBAXEgA0EBR3INACABKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAAwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQALIAJBEGokACAAQQFxC8wBAQF/IwBBQGoiAiQAIAJBBGogARCfAwJAIAItAARBAUYEQCAAIAIoAgg2AgQgAEEENgIADAELIAItAAVFBEAgAEEDNgIADAELIAJBBGogASgCABCDASACKAIEQQNGBEAgACACKAIINgIEIABBBDYCAAwBCyAAIAL9AAIE/QsCACAAQThqIAJBPGooAgA2AgAgAEEwaiACQTRqKQIANwIAIABBIGogAkEkav0AAgD9CwIAIABBEGogAkEUav0AAgD9CwIACyACQUBrJAAL1wEBA38jAEEQayIDJAACQAJAAkACQCAAKAIMBEAgACEBDAELIANBCGogASgCDCABKAIQIAEoAhQQ+QEgAygCDCECIAMoAgghBEEUEHEiAUUNASABIAApAgA3AgAgAUEIaiAAQQhqKAIANgIAIAEgAjYCECABIAQ2AgwgAEEEaygCACICQXhxIgRBGEEcIAJBA3EiAhtJDQIgAkEAIARBPE8bDQMgABCiAgsgA0EQaiQAIAEPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC9gBAQJ/IwBBEGsiBSQAIAACfwJAIANBASAEGwRAIAEoAhQiAyABKAIQIgRPDQEgASgCDCEGA0AgAyAGai0AAEEwa0H/AXFBCk8NAiABIANBAWoiAzYCFCADIARHDQALDAELIAVBCGogASgCDCABKAIQIAEoAhQQ+QEgBSgCDCECIAUoAgghA0EUEHEiAQRAIAEgAzYCDCABQQ42AgAgACABNgIEIAEgAjYCEEEBDAILAAsgAEQAAAAAAAAAAEQAAAAAAAAAgCACGzkDCEEACzYCACAFQRBqJAAL1QEBBH8gAEEEahDqAgJAAkACQAJAIAAoAhwiAQRAIAAoAiAiAkEEaygCACIDQXhxIgRBBEEIIANBA3EiAxsgAWpJDQEgA0EAIAQgAUEnaksbDQIgAhCiAgsgAEEoahDjBCAAQQRrKAIAIgFBeHEiAkE4QTwgAUEDcSIBG0kNAiABQQAgAkHcAE8bDQMgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvtAQECfyMAQRBrIgkkACAAKAIAQYipxwBBBCAAKAIEKAIMEQAAIQogCUEAOgANIAkgCjoADCAJIAA2AgggCUEIakGMqccAQQkgASACEIwFQZWpxwBBCCADIAQQjAVBnanHAEEGIAUgBhCMBUGjqccAQQogByAIEIwFIQEgCS0ADSICIAktAAwiA3IhAAJAIANBAXEgAkEBR3INACABKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAAwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQALIAlBEGokACAAQQFxC7wBAQN/IwBBIGsiAyQAAkACf0EAIAIgASACaiIESw0AGkEAQQggBCAAKAIAIgJBAXQiASABIARJGyIEIARBCE0bIgRBAEgNABpBACEBIAMgAgR/IAMgAjYCHCADIAAoAgQ2AhRBAQUgAQs2AhggA0EIakEBIAQgA0EUahCFByADKAIIQQFHDQEgAygCECEFIAMoAgwLIAVBnJbIABCTCQALIAMoAgwhASAAIAQ2AgAgACABNgIEIANBIGokAAvpAQEDfyMAQRBrIgIkACACIAAoAgAiADYCBCABKAIAQeynxwBBBiABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakHyp8cAQQQgAEEEakG0lsEAEIwFQfanxwBBBSACQQRqQcSWwQAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXELxwEBAX8jAEEwayICJAACfyAALQAEQQFGBEAgAiAALQAFOgAHIAJBAjYCHCACQfiKwwA2AhggAkICNwIkIAIgAK1CgICAgBCENwMQIAIgAkEHaq1CgICAgPAEhDcDCCACIAJBCGo2AiAgASgCACABKAIEIAJBGGoQwQMMAQsgAkEBNgIcIAJBtIvDADYCGCACQgE3AiQgAiAArUKAgICAEIQ3AwggAiACQQhqNgIgIAEoAgAgASgCBCACQRhqEMEDCyACQTBqJAAL5gEBBH8jAEEgayIAJABBASECAkAgASgCACIDQaiayABBDyABKAIEIgUoAgwiBBEAAA0AAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBBEAAA0CIAFBmJbIAEECEJcDRQ0BDAILIANB24HCAEECIAQRAAANASAAQQE6AA8gACAFNgIEIAAgAzYCACAAQeCBwgA2AhQgACABKQIINwIYIAAgAEEPajYCCCAAIAA2AhAgAEEQakGYlsgAQQIQlwMNASAAQdmBwgBBAhCvAw0BCyADQd6OyABBASAEEQAAIQILIABBIGokACACC+YBAQR/IwBBIGsiACQAQQEhAgJAIAEoAgAiA0HY8sQAQREgASgCBCIFKAIMIgQRAAANAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAQRAAANAiABQZiWyABBAhCXA0UNAQwCCyADQduBwgBBAiAEEQAADQEgAEEBOgAPIAAgBTYCBCAAIAM2AgAgAEHggcIANgIUIAAgASkCCDcCGCAAIABBD2o2AgggACAANgIQIABBEGpBmJbIAEECEJcDDQEgAEHZgcIAQQIQrwMNAQsgA0HejsgAQQEgBBEAACECCyAAQSBqJAAgAgvpAQEDfyMAQRBrIgIkACACIAAoAgAiADYCBCABKAIAQeynxwBBBiABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakHyp8cAQQQgAEEEakHMp8cAEIwFQfanxwBBBSACQQRqQdynxwAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXEL2AECBX8BfiMAQTBrIgIkACABKAIAQYCAgIB4RgRAIAEoAgwgAkEANgIUIAJCgICAgBA3AgwoAgAiAykCECEHIAMoAgwhBCADKAIIIQUgAygCACEGIAMoAgQhAyACIAc3AiggAiAENgIkIAIgBTYCICACIAM2AhwgAiAGNgIYIAJBDGpBzIXIACACQRhqEMEDGiACQQhqIAJBFGooAgAiAzYCACACIAIpAgwiBzcDACABQQhqIAM2AgAgASAHNwIACyAAQdyNyAA2AgQgACABNgIAIAJBMGokAAvpAQEDfyMAQRBrIgIkACACIAAoAgAiAEEEajYCBCABKAIAQeiXyABBCSABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakHxl8gAQQsgAEHIl8gAEIwFQfyXyABBCSACQQRqQdiXyAAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXELugEBA38jAEEgayIDJAACQAJ/QQAgAiABIAJqIgRLDQAaQQBBCCAEIAAoAgAiAkEBdCIBIAEgBEkbIgQgBEEITRsiBEEASA0AGkEAIQEgAyACBH8gAyACNgIcIAMgACgCBDYCFEEBBSABCzYCGCADQQhqIAQgA0EUahDdByADKAIIQQFHDQEgAygCECEFIAMoAgwLIAVB/O7BABCTCQALIAMoAgwhASAAIAQ2AgAgACABNgIEIANBIGokAAu6AQEDfyMAQSBrIgMkAAJAAn9BACACIAEgAmoiBEsNABpBAEEIIAQgACgCACICQQF0IgEgASAESRsiBCAEQQhNGyIEQQBIDQAaQQAhASADIAIEfyADIAI2AhwgAyAAKAIENgIUQQEFIAELNgIYIANBCGogBCADQRRqEN0HIAMoAghBAUcNASADKAIQIQUgAygCDAsgBUGclsgAEJMJAAsgAygCDCEBIAAgBDYCACAAIAE2AgQgA0EgaiQAC7wBAQV/IwBBIGsiAiQAIAAoAgAiBEH/////AEsEQEEAQQAgARCTCQALAkBBBCAEQQF0IgUgBUEETRsiBUEDdCIGQfz///8HTQR/IAIgBAR/IAIgBEEDdDYCHCACIAAoAgQ2AhRBBAUgAws2AhggAkEIakEEIAYgAkEUahCFByACKAIIQQFHDQEgAigCECEDIAIoAgwFIAMLIAMgARCTCQALIAIoAgwhASAAIAU2AgAgACABNgIEIAJBIGokAAu8AQEFfyMAQSBrIgIkACAAKAIAIgRB/////wFLBEBBAEEAIAEQkwkACwJAQQQgBEEBdCIFIAVBBE0bIgVBAnQiBkH8////B00EfyACIAQEfyACIARBAnQ2AhwgAiAAKAIENgIUQQQFIAMLNgIYIAJBCGpBBCAGIAJBFGoQhQcgAigCCEEBRw0BIAIoAhAhAyACKAIMBSADCyADIAEQkwkACyACKAIMIQEgACAFNgIAIAAgATYCBCACQSBqJAALuwEBBX8jAEEgayICJAAgACgCACIEQf///x9LBEBBAEEAIAEQkwkACwJAQQQgBEEBdCIFIAVBBE0bIgVBBXQiBkH4////B00EfyACIAQEfyACIARBBXQ2AhwgAiAAKAIENgIUQQgFIAMLNgIYIAJBCGpBCCAGIAJBFGoQhQcgAigCCEEBRw0BIAIoAhAhAyACKAIMBSADCyADIAEQkwkACyACKAIMIQEgACAFNgIAIAAgATYCBCACQSBqJAAL5AEBA38jAEEQayICJAAgAiAAQQRqNgIEIAEoAgBB6JfIAEEJIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQfGXyABBCyAAQbSWwQAQjAVB/JfIAEEJIAJBBGpB1JbBABCMBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvkAQEDfyMAQRBrIgIkACABKAIAQef7xwBBBSABKAIEKAIMEQAAIQMgAkEAOgAJIAIgAzoACCACIAE2AgQgAiAANgIMIAJBBGpB7LXHAEEHIAJBDGpBiKDBABCMBUGEtscAQQYgAEEIakGYoMEAEIwFIQAgAi0ACSIDIAItAAgiBHIhAQJAIARBAXEgA0EBR3INACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQELIAJBEGokACABQQFxC+QBAQN/IwBBEGsiAiQAIAEoAgBB5/vHAEEFIAEoAgQoAgwRAAAhAyACQQA6AAkgAiADOgAIIAIgATYCBCACIAA2AgwgAkEEakHstccAQQcgAkEMakGIoMEAEIwFQYS2xwBBBiAAQQhqQaigwQAQjAUhACACLQAJIgMgAi0ACCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXEL5AEBA38jAEEQayICJAAgAiAANgIEIAEoAgBB7KfHAEEGIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQfKnxwBBBCAAQQRqQaDAxAAQjAVB9qfHAEEFIAJBBGpBsMDEABCMBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQuvAQEEfyMAQRBrIgMkAEEDIQIgACgCACwAACIEIATAQQd1IgBzIABrIgBB/wFxIgVBCk8EQEEBIQIgAyAAQQF0IgAgAEE4aiAFQeQASRtB/gFxLwC4ukU7AA4gBUHjAEshAAtBACAEIABB/wFxIgAbRQRAIAJBAWsiAiADQQ1qaiAAQQF0LQC5ukU6AAALIAEgBEEATkEBQQAgA0ENaiACakEDIAJrEMgDIANBEGokAAvkAQEDfyMAQRBrIgIkACACIABBBGo2AgQgASgCAEHol8gAQQkgASgCBCgCDBEAACEDIAJBADoADSACIAM6AAwgAiABNgIIIAJBCGpB8ZfIAEELIABBmJzFABCMBUH8l8gAQQkgAkEEakGonMUAEIwFIQAgAi0ADSIDIAItAAwiBHIhAQJAIARBAXEgA0EBR3INACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQELIAJBEGokACABQQFxC8kBAgN/AX4jAEEQayIEJAACQCAAKAIQIgNFBEAMAQtBASECIANB+LTFAEEBEJcDDQAgAVAEQCADQZKyxQBBARCXAyECDAELAkAgASAANQIUIgVYBEAgBSABfSIBQhpUDQEgA0GSssUAQQEQlwMNAiAEIAE3AwggBEEIaiADEIUFIQIMAgsgA0HqssUAQRAQlwMNAUEAIQIgAEEAOgAEIABBADYCAAwBCyAEIAGnQeEAajYCBCAEQQRqIAMQqAUhAgsgBEEQaiQAIAILuwEBBX8jAEEgayICJAAgACgCACIEQf///x9LBEBBAEEAIAEQkwkACwJAQQQgBEEBdCIFIAVBBE0bIgVBBXQiBkH8////B00EfyACIAQEfyACIARBBXQ2AhwgAiAAKAIENgIUQQQFIAMLNgIYIAJBCGpBBCAGIAJBFGoQhQcgAigCCEEBRw0BIAIoAhAhAyACKAIMBSADCyADIAEQkwkACyACKAIMIQEgACAFNgIAIAAgATYCBCACQSBqJAAL5AEBA38jAEEQayICJAAgAiAAQRBqNgIEIAEoAgBBnKjHAEENIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQamoxwBBBiAAQfynxwAQjAVBr6jHAEEKIAJBBGpBjKjHABCMBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvkAQEDfyMAQRBrIgIkACACIABBEGo2AgQgASgCAEG5qMcAQQ0gASgCBCgCDBEAACEDIAJBADoADSACIAM6AAwgAiABNgIIIAJBCGpBqajHAEEGIABB/KfHABCMBUGvqMcAQQogAkEEakGMqMcAEIwFIQAgAi0ADSIDIAItAAwiBHIhAQJAIARBAXEgA0EBR3INACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQELIAJBEGokACABQQFxC+QBAQN/IwBBEGsiAiQAIAIgAEEMajYCBCABKAIAQZCqxwBBDiABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakHI+8cAQQQgAEGAqscAEIwFQa+oxwBBCiACQQRqQYyoxwAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXEL5AEBA38jAEEQayICJAAgAiAAQRBqNgIEIAEoAgBBuKzHAEEQIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQamoxwBBBiAAQfynxwAQjAVByPvHAEEEIAJBBGpBqKzHABCMBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvkAQEDfyMAQRBrIgIkACABKAIAQef7xwBBBSABKAIEKAIMEQAAIQMgAkEAOgAJIAIgAzoACCACIAE2AgQgAiAANgIMIAJBBGpB7LXHAEEHIAJBDGpB3LXHABCMBUGEtscAQQYgAEEMakH0tccAEIwFIQAgAi0ACSIDIAItAAgiBHIhAQJAIARBAXEgA0EBR3INACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB/7PFAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaWzxQBBASAAKAIEKAIMEQAAIQELIAJBEGokACABQQFxC74BAgN/AX4jAEEQayIDJAAgACgCACEAAkAgASkCCCIFpyICQYCAgARxRQ0AIAJBgICAwABxBEAgAkGAgIAIciECDAELIAFBCjsBDCACQYCAgMgAciECCyABIAJBgICABHI2AghBCSECA0AgAiADakEGaiAAQQ9xLQDctkU6AAAgAkEBayECIABBEEkgAEEEdiEARQ0ACyABQQFBhLTFAEECIAIgA2pBB2pBCSACaxDIAyABIAU3AgggA0EQaiQAC+QBAQN/IwBBEGsiAiQAIAIgAEEMajYCBCABKAIAQaiYyABBDSABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakG1mMgAQQUgAEGImMgAEIwFQbqYyABBBSACQQRqQZiYyAAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXELugEBBX8jAEEgayICJAAgACgCACIEQf////8BSwRAQQBBACABEJMJAAsCQEEEIARBAXQiBSAFQQRNGyIFQQJ0IgZB/P///wdNBH8gAiAEBH8gAiAEQQJ0NgIcIAIgACgCBDYCFEEEBSADCzYCGCACQQhqIAYgAkEUahCBByACKAIIQQFHDQEgAigCECEDIAIoAgwFIAMLIAMgARCTCQALIAIoAgwhASAAIAU2AgAgACABNgIEIAJBIGokAAvLAQEEfyAAQQRqEOoCAkACQAJAAkAgACgCHCIBBEAgACgCICICQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNASADQQAgBCABQSdqSxsNAiACEKICCyAAQQRrKAIAIgFBeHFBLEEwIAFBA3EiAhtJDQIgAkEAIAFB0ABPGw0DIAAQogIPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALrAEBBH8jAEEQayIDJABBAyECIAAsAAAiBCAEwEEHdSIAcyAAayIAQf8BcSIFQQpPBEBBASECIAMgAEEBdCIAIABBOGogBUHkAEkbQf4BcS8AuLpFOwAOIAVB4wBLIQALQQAgBCAAQf8BcSIAG0UEQCACQQFrIgIgA0ENamogAEEBdC0AubpFOgAACyABIARBAE5BAUEAIANBDWogAmpBAyACaxDIAyADQRBqJAAL1AEAAkACQCABBEAgACAELQAIOgAAIAFBAWsiAUEHTQRAQQBBCCABQcjjxAAQ6gcACyAAIAQtABE6AAEgACAELQAaOgACIAAgBC0AIzoAAyAAIAQtACw6AAQgACAELQA1OgAFIAAgBC0APjoABiAAIAQtAEc6AAcgACAELQBQOgAIIAMgBUEDdCIASQ0CIAMgAGsiAUEHSw0BQQBBCCABQdjjxAAQ6gcAC0EAQQBBuOPEABCMBwALIAAgAmogBCkASTcAAA8LIAAgAyADQejjxAAQ6gcAC9ABAgF/AX4jAEEwayICJAACfwJAAkACQCAAKAIAKAIAIgAoAgBBAWsOAgECAAsgAiAAKAIENgIAIAIgACgCCDYCBCACQoCAgIAQIgMgAkEEaq2ENwMQIAIgAyACrYQ3AwggASgCACABKAIEIAJCAjcCJCACQQI2AhwgAkHYnMUANgIYIAIgAkEIajYCICACQRhqEMEDDAILIAEoAgBB6JzFAEEdIAEoAgQoAgwRAAAMAQsgASgCAEGFncUAQTEgASgCBCgCDBEAAAsgAkEwaiQAC7cBAgN/BH4gASgCBCICrSEFAkACQCACQv////8PIAEpAwgiBiAGQv////8PWhunayIEQQAgAiAETxtBAk8EQCABKAIAIAYgBSAFIAZWG6dqLwAAIQNBBCECDAELQaiQyAApAwAiCEIIiCEHIAinIQIgCEL/AYNCBFINAQsgBkICfCEFCyABIAU3AwggAkH/AXFBBEcEQCAAIAKtQv8BgyAHQgiGhDcCAA8LIABBBDoAACAAIAM7AQILtwECBH4Ef0EEIQYgASgCBCIIrSECAkACQCAIQv////8PIAEpAwgiAyADQv////8PWhunayIJQQAgCCAJTxtBBE8EQCABKAIAIAMgAiACIANWG6dqKAAAIQcMAQtBqJDIACkDACIFQgiIIQQgBachBiAFQv8Bg0IEUg0BCyADQgR8IQILIAEgAjcDCCAGQf8BcUEERwRAIAAgBq1C/wGDIARCCIaENwIADwsgAEEEOgAAIAAgBzYCBAugCAMDfwF+AW8jAEEgayIFJABBlLvJAEGUu8kAKAIAIgZBAWo2AgACQCAGQQBIDQBBkLvJAC0AAEUEQEGQu8kAQQE6AABBjLvJAEGMu8kAKAIAQQFqNgIAQZi7yQAoAgAiBkEASA0BQZi7yQAgBkEBajYCAEGYu8kAQZy7yQAoAgAEfyAFQQhqIAAgASgCFBEBACAFIAQ6AB0gBSADOgAcIAUgAjYCGCAFIAUpAwg3AhAgBUEQaiEAIwBB0ABrIgIkACACQQA2AgwgAkKAgICAEDcCBAJAAkACQAJAAkAgAkEEaiIEQZiMyABBDBDiBw0AIAIgACgCCCIBKQIANwIQIAIgAUEMaq1CgICAgBCENwMoIAIgAUEIaq1CgICAgBCENwMgIAIgAkEQaq1CgICAgKABhDcDGCACQgM3AjwgAkEDNgI0IAJBpIzIADYCMCACIAJBGGo2AjggBEHU8cEAIAJBMGoiBBDBAw0AIAQgACgCACIBIAAoAgQoAgwiBREBACABIQACQCACKQMwQu26rbbNhdT14wCFIAIpAzhC+IKZvZXuxsW5f4WEUAR/QQQFIAQgACAFEQEAIAIpAzBC9de8ycjM1rM6hSACKQM4Qv7by5vz5bnG9QCFhEIAUg0BIABBBGohAEEICyABaigCACEBIAAoAgAhACACQQRqIgRByIXIAEECEOIHDQEgBCAAIAEQ4gcNAQsgAkE4aiACQQxqKAIAIgA2AgAgAiACKQIEIgg3AzAgCKciBiAAa0EJTQRAIAJBMGogAEEKEPgFIAIoAjAhBiACKAI4IQALIAIoAjQiBCAAaiIBQcjxwQApAAA3AAAgAUEIakHQ8cEALwAAOwAAIAIgAEEKaiIANgI4ECAhCRDaBCIBIAkmASACQRhqIAElARAhIAIoAhghByACKAIcIgUgBiAAa0sEQCACQTBqIAAgBRD4BSACKAIwIQYgAigCNCEEIAIoAjghAAsgBQRAIAAgBGogByAF/AoAAAsgAiAAIAVqIgA2AjggBiAAa0EBTQRAIAJBMGogAEECEPgFIAIoAjQhBCACKAI4IQALIAAgBGpBihQ7AAAgAiAAQQJqIgA2AjggACACKAIwIgZJBEAgBCAGQQEgABC7AiIERQ0CCyAEIAAQIiAFBEAgB0EEaygCACIAQXhxIgRBBEEIIABBA3EiABsgBWpJDQMgAEEAIAQgBUEnaksbDQQgBxCiAgsgAUGECE8EQCABEJsHCyACQdAAaiQADAQLQaCexgBBNyACQTBqQezxwQBB2J7GABDgBgsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBmLvJACgCAEEBawUgBgs2AgBBkLvJAEEAOgAAIANFDQEACyAFIAAgASgCGBEBAAsAC7YBAQZ/IwBBIGsiASQAAkACQCAAKAIAIgNB////H0sNAEEEIANBAXQiBCAEQQRNGyIEQQV0IgVB+P///wdLDQAgASADBH8gASADQQV0NgIcIAEgACgCBDYCFEEIBSACCzYCGCABQQhqQQggBSABQRRqEIUHIAEoAghBAUcNASABKAIQIQYgASgCDCECCyACIAZByOPBABCTCQALIAEoAgwhAiAAIAQ2AgAgACACNgIEIAFBIGokAAvFAQEEfyMAQSBrIgMkACADQRhqIgIgAUEsaikCADcDACADIAH9AAIc/QsDCAJAAkBBGBBxIgQEQCAEIAP9AAMI/QsCACAEQRBqIAIpAwA3AgAgAUEEahDqAiABQQRrKAIAIgJBeHEiBUE4QTwgAkEDcSICG0kNASACQQAgBUHcAE8bDQIgARCiAiAAQaCxxwA2AgQgACAENgIAIANBIGokAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALrgEBBX8jAEEgayIBJAACQCAAKAIAIgJBksmkEksEf0EABUEEIAJBAXQiAyADQQRNGyIEQRxsIQVBACEDIAEgAgR/IAEgAkEcbDYCHCABIAAoAgQ2AhRBBAUgAws2AhggAUEIakEEIAUgAUEUahCFByABKAIIQQFHDQEgASgCECEAIAEoAgwLIABB0OXBABCTCQALIAEoAgwhAiAAIAQ2AgAgACACNgIEIAFBIGokAAuwAQEFfwJAAkAgACgCBCICIAAoAgAiAUcEQCACIAFrIQIgAUEMbCAAakEMaiEAA0AgAEEEaygCACIBBEAgACgCACIEQQRrKAIAIgNBeHEiBSABQQJ0IgFBBEEIIANBA3EiAxtqSQ0DIANBACAFIAFBJ2pLGw0EIAQQogILIABBDGohACACQQFrIgINAAsLDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALwgEBBn8jAEEgayICJAACQAJAAkAgARC4CiIEQf////8DSw0AIARBAnQiA0H9////B08NAAJAIANFBEBBBCEDDAELIAQhBiADEHEiA0UNAgsgARC4CiEFIAEQuAohByACIAU2AgQgAiAHNgIAIAUgB0cNAiADIAUgARDhCSAAIAQ2AgggACADNgIEIAAgBjYCACACQSBqJAAPC0Hg+cQAEP8HCwALIAJBADYCCEEAIAIgAkEEaiACQQhqQeD5xAAQ9QcAC78BAQR/IwBBEGsiAiQAIAJBCGoiAyABQSRqKAIANgIAIAIgASkCHDcDAAJAAkBBDBBxIgQEQCAEIAIpAwA3AgAgBEEIaiADKAIANgIAIAFBBGoQ6gIgAUEEaygCACIDQXhxQSxBMCADQQNxIgUbSQ0BIAVBACADQdAATxsNAiABEKICIABB+JjBADYCBCAAIAQ2AgAgAkEQaiQADwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu/AQEEfyMAQRBrIgIkACACQQhqIgMgAUEkaigCADYCACACIAEpAhw3AwACQAJAQQwQcSIEBEAgBCACKQMANwIAIARBCGogAygCADYCACABQQRqEOoCIAFBBGsoAgAiA0F4cUEsQTAgA0EDcSIFG0kNASAFQQAgA0HQAE8bDQIgARCiAiAAQbyYwQA2AgQgACAENgIAIAJBEGokAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALvwEBBH8jAEEQayICJAAgAkEIaiIDIAFBJGooAgA2AgAgAiABKQIcNwMAAkACQEEMEHEiBARAIAQgAikDADcCACAEQQhqIAMoAgA2AgAgAUEEahDqAiABQQRrKAIAIgNBeHFBLEEwIANBA3EiBRtJDQEgBUEAIANB0ABPGw0CIAEQogIgAEG0mcEANgIEIAAgBDYCACACQRBqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC78BAQR/IwBBEGsiAiQAIAJBCGoiAyABQSRqKAIANgIAIAIgASkCHDcDAAJAAkBBDBBxIgQEQCAEIAIpAwA3AgAgBEEIaiADKAIANgIAIAFBBGoQ6gIgAUEEaygCACIDQXhxQSxBMCADQQNxIgUbSQ0BIAVBACADQdAATxsNAiABEKICIABBrJrBADYCBCAAIAQ2AgAgAkEQaiQADwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuvAQEDfyAAAn8CQAJAIAIgBEsEQEEKIQYDQCABIARBA3RqIggvAQAiBwRAIAdBAmsNAwwECyAGQQFqIQYgA0EBcSEHIANBAXYhAyAIKAIEIAQgB2pqIgQgAkkNAAsLIAQgAkHctcQAEIwHAAtBDyAFLQAgIgEgBkH/AXFJDQEaIAUgASAGazoAICAAIAgvAQI7AQIgBSAFKQMAIAatiDcDACAAQR06AAAPC0EOCzoAAAuvAQEDfyAAAn8CQAJAIAIgBEsEQEEKIQYDQCABIARBA3RqIggvAQAiBwRAIAdBAmsNAwwECyAGQQFqIQYgA0EBcSEHIANBAXYhAyAIKAIEIAQgB2pqIgQgAkkNAAsLIAQgAkHctcQAEIwHAAtBDyAFLQAMIgEgBkH/AXFJDQEaIAUgASAGazoADCAAIAgvAQI7AQIgBSAFKQMAIAatiDcDACAAQR06AAAPC0EOCzoAAAvQAQEDfyMAQRBrIgIkACACIAA2AgQgASgCAEGQzsQAQQ8gASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpByPvHAEEEIAJBBGpBgM7EABCMBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQf+zxQBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGls8UAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQuwAQEFfyMAQSBrIgEkAAJAIAAoAgAiAkHQjtQDSwR/QQAFQQQgAkEBdCIDIANBBE0bIgRBjAFsIQVBACEDIAEgAgR/IAEgAkGMAWw2AhwgASAAKAIENgIUQQQFIAMLNgIYIAFBCGpBBCAFIAFBFGoQhQcgASgCCEEBRw0BIAEoAhAhACABKAIMCyAAQfD/xgAQkwkACyABKAIMIQIgACAENgIAIAAgAjYCBCABQSBqJAAL0AEBA38jAEEQayICJAAgAiAANgIEIAEoAgBBmK3HAEENIAEoAgQoAgwRAAAhACACQQA6AA0gAiAAOgAMIAIgATYCCCACQQhqQcj7xwBBBCACQQRqQYitxwAQjAUhACACLQANIgMgAi0ADCIEciEBAkAgBEEBcSADQQFHcg0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEH/s8UAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAAhAQsgAkEQaiQAIAFBAXELvwEBBH8jAEEQayICJAAgAkEIaiIDIAFBJGooAgA2AgAgAiABKQIcNwMAAkACQEEMEHEiBARAIAQgAikDADcCACAEQQhqIAMoAgA2AgAgAUEEahDqAiABQQRrKAIAIgNBeHFBLEEwIANBA3EiBRtJDQEgBUEAIANB0ABPGw0CIAEQogIgAEHksMcANgIEIAAgBDYCACACQRBqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC6wBAQV/IwBBIGsiAiQAIAAoAgAiA0HVqtUqSwRAQQBBACABEJMJAAtBBCADQQF0IgQgBEEETRsiBUEMbCEGQQAhBCACIAMEfyACIANBDGw2AhwgAiAAKAIENgIUQQQFIAQLNgIYIAJBCGpBBCAGIAJBFGoQhQcgAigCCEEBRgRAIAIoAgwgAigCECABEJMJAAsgAigCDCEBIAAgBTYCACAAIAE2AgQgAkEgaiQAC6cDAQh/IwBBEGsiAyQAIAAoAgQhBSAAKAIAIQBBASEHIAEoAgBB6LLFAEEBIAEoAgQoAgwRAAAhAiADQQA6AAkgAyACOgAIIAMgATYCBAJAAkAgBQRAA0AgAyAANgIMIANBDGohCCMAQSBrIgEkAEEBIQYCQCADQQRqIgQtAAQNACAELQAFIQkCQCAEKAIAIgItAApBgAFxRQRAIAlBAXFFDQEgAigCAEHnkMYAQQIgAigCBCgCDBEAAEUNAQwCCyAJQQFxRQRAIAIoAgBB3PjHAEEBIAIoAgQoAgwRAAANAgsgAUEBOgAPIAFB4IHCADYCFCABIAIpAgA3AgAgASACKQIINwIYIAEgAUEPajYCCCABIAE2AhAgCCABQRBqEO8HDQEgASgCEEHZgcIAQQIgASgCFCgCDBEAACEGDAELIAggAhDvByEGCyAEQQE6AAUgBCAGOgAEIAFBIGokACAAQQFqIQAgBUEBayIFDQALIAMtAAhFDQEMAgsgAg0BCyADKAIEIgAoAgBB6bLFAEEBIAAoAgQoAgwRAAAhBwsgA0EQaiQAIAcLnQEBBH8gACgCACECIAAgARCiBgJAIAAoAggiBSACIAAoAgwiA2tNDQAgAiAFayIBIAMgAWsiA0sgACgCACIEIAJrIANPcUUEQCAEIAFrIQIgAUEMbCIBBEAgACgCBCIEIAJBDGxqIAQgBUEMbGogAfwKAAALIAAgAjYCCA8LIANBDGwiAUUNACAAKAIEIgAgAkEMbGogACAB/AoAAAsLxAEBBH8jAEEQayIEJAACQAJAAkACQAJAAkACQAJAIAEoAgBBAWsOBQECBwcDAAsgASgCFCIDDQMMBgsgASgCFCIDDQMMBQsgASgCECIDDQMMBAsgAS0ABEEDRw0DIARBCGogASgCCCIBKAIAIAEoAgQoAhgRAQAgBCgCDCEFIAQoAgghAgwDCyABKAIYIQUgAyECDAILIAEoAhghBSADIQIMAQsgASgCFCEFIAMhAgsgACAFNgIEIAAgAjYCACAEQRBqJAALnQEBBH8jAEEgayIBJAACQEEIIAAoAgAiBEEBdCIDIANBCE0bIgNBAE4EfyABIAQEfyABIAQ2AhwgASAAKAIENgIUQQEFIAILNgIYIAFBCGpBASADIAFBFGoQhQcgASgCCEEBRw0BIAEoAhAhAiABKAIMBSACCyACQfznwQAQkwkACyABKAIMIQIgACADNgIAIAAgAjYCBCABQSBqJAALmAEBBH8jAEEgayICJAACQEEIIAAoAgAiBUEBdCIEIARBCE0bIgRBAE4EfyACIAUEfyACIAU2AhwgAiAAKAIENgIUQQEFIAMLNgIYIAJBCGogBCACQRRqEN0HIAIoAghBAUcNASACKAIQIQMgAigCDAUgAwsgAyABEJMJAAsgAigCDCEBIAAgBDYCACAAIAE2AgQgAkEgaiQAC64BAQN/IwBBEGsiAyQAAkACQAJAAkAgAEUgAUVyDQAgACgCACIARQ0AIABBwf///wdPDQEgAUEEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAGpJDQIgAkEAIAQgAEEnaksbDQMgARCiAgsgA0EQaiQADwtB2ObIAEErIANBD2pBtIPJAEHEg8kAEOAGAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALmQECAn8EfgJAAkAgASgCBCICIAEpAwgiBSACrSIEIAQgBVYbpyICRwRAIAEoAgAgAmotAAAhA0EEIQIMAQtBqJDIACkDACIHQgiIIQYgB6chAiAHQv8Bg0IEUg0BCyAFQgF8IQQLIAEgBDcDCCACQf8BcUEERwRAIAAgAq1C/wGDIAZCCIaENwIADwsgAEEEOgAAIAAgAzoAAQu0AQACfwJAAkACQAJAAkACQCACQQNrDgUEBQECAAULIAFBpPzAAEEHENsHDQRBAAwFC0EBIAFBq/zAAEEFENsHRQ0EGiABQbz/wABBBRDbBw0BQQIMBAsgAUHB/8AAQQYQ2wcNAkEDDAMLIAFBx//AAEEFENsHDQFBBAwCC0EFIAFBzP/AAEEDENsHRQ0BGiABQc//wABBAxDbBw0AQQYMAQtBBwshASAAQQA6AAAgACABOgABC6gBAQV/IwBBIGsiAiQAAkACQCABELsKIgNBAE4EQAJAIANFBEBBASEEDAELIAMQcSIERQ0CCyABELsKIQUgARC7CiEGIAIgBTYCBCACIAY2AgAgBSAGRw0CIAQgBSABEOMJIAAgAzYCCCAAIAQ2AgQgACADNgIAIAJBIGokAA8LQeD5xAAQ/wcLAAsgAkEANgIIQQAgAiACQQRqIAJBCGpB4PnEABD1BwALowECAn8BfiMAQRBrIgMkAAJAAkACQCABKAIIIgQgASgCBEkEQCABKAIAIARqLQAAIAJB/wFxRg0BCyAAQgA3AwgMAQtBASECIAEgBEEBajYCCCADIAEQ2QQgAy0AAEUEQCADKQMIIgVCf1IEQCAAIAVCAXw3AwgMAgsgAEEAOgABDAILIAAgAy0AAToAAQwBC0EAIQILIAAgAjoAACADQRBqJAALqAECBX8BfiMAQSBrIgIkAAJ/IAAoAgBBgICAgHhHBEAgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAAwBCyABKAIEIQMgASgCACAAKAIMKAIAIgApAhAhByAAKAIMIQQgACgCCCEFIAAoAgAhBiAAKAIEIQAgAiAHNwIYIAIgBDYCFCACIAU2AhAgAiAANgIMIAIgBjYCCCADIAJBCGoQwQMLIAJBIGokAAuTAQIBfwF+IwBBMGsiAiQAAn8gACgCACIAKAIMRQRAIAAgARDkAwwBCyACQoCAgIAQIgMgAEEQaq2ENwMQIAIgAyAAQQxqrYQ3AwggAiAArUKAgICAoA6ENwMAIAEoAgAgASgCBCACQgM3AiQgAkEDNgIcIAJBoKXGADYCGCACIAI2AiAgAkEYahDBAwsgAkEwaiQAC6MBAgJ/AX4jAEEQayICJAAgASgCCCEDIAIgARDZBAJAIAItAABBAUYEQCACLQABIQEgAEEANgIAIAAgAToABAwBCyACKQMIIgQgA0EBa61UBEAgASgCDEEBaiIDQfQDTQRAIAAgAzYCDCAAIAQ+AgggACABKQIANwIADAILIABBADYCACAAQQE6AAQMAQsgAEEANgIAIABBADoABAsgAkEQaiQAC6UBAAJAAkACQCABQf8ATARAIAFBgn9ODQMgAEMAAIAMlCEAIAFBm35NDQEgAUHmAGohAQwDCyAAQwAAAH+UIQAgAUH+AUsNASABQf8AayEBDAILIABDAACADJQhAEG2fSABIAFBtn1NG0HMAWohAQwBCyAAQwAAAH+UIQBB/QIgASABQf0CTxtB/gFrIQELIAAgAUEXdEGAgID8A2pBgICA/AdxvpQLqAEBAn8gASgCDCECAkACQAJAAkACQAJAAkAgASgCBA4CAAECCyACDQFBASEDQQAhAUEBIQIMAwsgAkUNAQsgACABEOwDDwsgASgCACICKAIEIgFBAEgNASACKAIAIQMgAUUEQEEBIQJBACEBDAELIAEQcSICRQ0CCyABBEAgAiADIAH8CgAACyAAIAE2AgggACACNgIEIAAgATYCAA8LQdiayAAQ/wcLAAuNAQEDfyMAQRBrIgMkAEEDIQIgACgCAC0AACIAIQQgAEEKTwRAIAMgACAAQeQAbiIEQeQAbGtB/wFxQQF0LwC4ukU7AA5BASECC0EAIAAgBBtFBEAgAkEBayICIANBDWpqIARBAXQtALm6RToAAAsgAUEBQQFBACADQQ1qIAJqQQMgAmsQyAMgA0EQaiQAC4oBAQN/IwBBEGsiAyQAQQMhAiAALQAAIgAhBCAAQQpPBEAgAyAAIABB5ABuIgRB5ABsa0H/AXFBAXQvALi6RTsADkEBIQILQQAgACAEG0UEQCACQQFrIgIgA0ENamogBEEBdC0AubpFOgAACyABQQFBAUEAIANBDWogAmpBAyACaxDIAyADQRBqJAALlQEDA3wBfgF/IAC7IAG7oiIDIAK7IgSgIgW9IgZC/////wGDQoCAgIABUiAGQoCAgICAgID4/wCDQoCAgICAgID4/wBRciAEIAUgA6FhIAUgBKEgA2FxcgR8IAUFIAZCAX0gBkIBhCAGQgBTIgcgAyAEIAWhoCADIAWhIASgIAcgAyAEY3MbRAAAAAAAAAAAY3Mbvwu2C6QBAQR/IAAQ9gICQAJAIAAoAsgFIgEEQCAAKALMBSIDQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAQeAAaiEBAkACQAJAIAAoArwFQYCAgIB4aw4CAQIACyABEL4CDwsgARC9AQsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAujAQEEfyAAEPUCAkACQCAAKAKoBSIBBEAgACgCrAUiA0EEaygCACICQXhxIgRBBEEIIAJBA3EiAhsgAWpJDQEgAkEAIAQgAUEnaksbDQIgAxCiAgsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDwsgARC9AQsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuWAQEDfwJ/AkACQCABKAIAIgNFBEAMAQsDQAJAIAEoAggiBCABKAIETw0AIAMgBGotAABBxQBHDQAgASAEQQFqNgIIDAILAkAgAkUNACABKAIQIgNFDQAgA0HnkMYAQQIQlwMNAwsgARCGAg0CIAJBAWohAiABKAIAIgMNAAsLQQAMAQtBAQshASAAIAI2AgQgACABNgIAC6YBAgJ/AX4CQAJAAkACQCABKAIoQQJHBEAgASgCmAJBgYCAgHhHDQFBgICAgHghAgwCC0GsmMcAEN0JAAsgASgCoAIiAkEASA0BIAEoApwCIQMCQCACRQRAQQEhAQwBCyACEHEiAUUNAwsgAgRAIAEgAyAC/AoAAAsgAa0gAq1CIIaEIQQLIAAgBDcDCCAAIAI2AgQgAEEGNgIADwtB2JrIABD/BwsAC6YBAgJ/AX4CQAJAAkACQCABKAIoQQJHBEAgASgCpAJBgYCAgHhHDQFBgICAgHghAgwCC0GsmMcAEN0JAAsgASgCrAIiAkEASA0BIAEoAqgCIQMCQCACRQRAQQEhAQwBCyACEHEiAUUNAwsgAgRAIAEgAyAC/AoAAAsgAa0gAq1CIIaEIQQLIAAgBDcDCCAAIAI2AgQgAEEGNgIADwtB2JrIABD/BwsAC8cBAQF7IAIgA0sEQCAAIAEgA0EVbGoiASwAFLJDAAD+QpU4AlAgACAB/VwAAP2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+QiIE/ecB/QsCACAAIAH9XAAE/YcB/acB/foBIAT95wH9CwIQIAAgAf1cAAj9hwH9pwH9+gEgBP3nAf0LAiAgACAB/VwADP2HAf2nAf36ASAE/ecB/QsCMCAAIAH9XAAQ/YcB/acB/foBIAT95wH9CwJADwsgAyACQZy8xwAQjAcAC38BAX8gAkEETwRAA0AgACgAACABKAAARwRAQQAPCyABQQRqIQEgAEEEaiEAIAJBBGsiAkEDSw0ACwtBASEDIAJBAUsEQCAALwAAIAEvAABHBEBBAA8LIAJBAmshAiABQQJqIQEgAEECaiEACyACBH8gAC0AACABLQAARgUgAwsLoAEBBH8gAEH0BGoQwAICQAJAIAAoAugEIgIEQCAAKALsBCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCwJAAkACQCAAKALcBEGAgICAeGsOAgECAAsgABC+Ag8LIAAQvQELDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALoAEBBH8gAEH0BGoQigICQAJAIAAoAugEIgIEQCAAKALsBCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCwJAAkACQCAAKALcBEGAgICAeGsOAgECAAsgABC+Ag8LIAAQvQELDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALmgEBA38gASgCICECIAEoAhwhAwJAAkBBCBBxIgQEQCAEIAI2AgQgBCADNgIAIAFBBGoQ6gIgAUEEaygCACICQXhxIgNBKEEsIAJBA3EiAhtJDQEgAkEAIANBzABPGw0CIAEQogIgAEGAmMEANgIEIAAgBDYCAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALjgEBA38jAEEQayIBJAAgAUEAOgAPAkACQEEBEHEiAgRAIAAgAUEPaq03AwAgACACrTcDCCACQQRrKAIAIgBBeHEiA0EFQQkgAEEDcSIAG0kNASAAQQAgA0EpTxsNAiACEKICIAFBEGokAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALjgEBBH8jAEEQayICJAACf0EBIAEoAgAiA0EnIAEoAgQiBSgCECIBEQIADQAaIAIgACgCAEGBAhCBAwJAIAItAA0iAEGBAU8EQCADIAIoAgAgARECAEUNAUEBDAILIAMgAiACLQAMIgRqIAAgBGsgBSgCDBEAAEUNAEEBDAELIANBJyABEQIACyACQRBqJAALmgEBA38gASgCICECIAEoAhwhAwJAAkBBCBBxIgQEQCAEIAI2AgQgBCADNgIAIAFBBGoQ6gIgAUEEaygCACICQXhxIgNBKEEsIAJBA3EiAhtJDQEgAkEAIANBzABPGw0CIAEQogIgAEGwr8cANgIEIAAgBDYCAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALgAEBAn8gA0EITwRAIAAgACADQQN2IgNBBHQiBGogACADQRxsIgVqIAMQwgYhACABIAEgBGogASAFaiADEMIGIQEgAiACIARqIAIgBWogAxDCBiECCyAAIAIgASAAKAIAIgAgASgCACIBSSIDIAEgAigCACICSXMbIAMgACACSXMbC4ABAQJ/IANBCE8EQCAAIAAgA0EDdiIDQQV0IgRqIAAgA0E4bCIFaiADEMMGIQAgASABIARqIAEgBWogAxDDBiEBIAIgAiAEaiACIAVqIAMQwwYhAgsgACACIAEgACgCACIAIAEoAgAiAUkiAyABIAIoAgAiAklzGyADIAAgAklzGwt+AQJ/IAAgACgCCCIDIAFJBH8gASADayIEIAAoAgAgA2tLBEAgACADIARBAUEBEKQFIAAoAgghAwsgACgCBCIAIANqIQEgBEECTwR/IARBAWsiBARAIAEgAiAE/AsACyAAIAMgBGoiA2oFIAELIAI6AAAgA0EBagUgAQs2AggLkAEBAX8jAEEwayICJAACf0EBIAEoAgBBIiABKAIEKAIQEQIADQAaIAIgATYCDCACIACtQoCAgIDQAIQ3AxAgAkIBNwIkIAJBATYCHCACQaD4xwA2AhggAiACQRBqNgIgQQEgAkEMakG4oMEAIAJBGGoQwQMNABogASgCAEEiIAEoAgQoAhARAgALIAJBMGokAAuQAQEBfyMAQTBrIgIkAAJ/QQEgASgCAEEiIAEoAgQoAhARAgANABogAiABNgIMIAIgAK1CgICAgMAHhDcDECACQgE3AiQgAkEBNgIcIAJBoPjHADYCGCACIAJBEGo2AiBBASACQQxqQeS3xwAgAkEYahDBAw0AGiABKAIAQSIgASgCBCgCEBECAAsgAkEwaiQAC48BAQF/IwBBEGsiAiQAIAJBCGogARCfAwJAIAItAAhBAUYEQCAAIAIoAgw2AgQgAEEDNgIADAELIAItAAlFBEAgAEECNgIADAELIAJBCGogASgCABDSAiACKAIIIgFBAkYEQCAAIAIoAgw2AgQgAEEDNgIADAELIAAgAioCDDgCBCAAIAE2AgALIAJBEGokAAuSAQICfwF+IwBBIGsiAiQAAkACQCAALQAIIgNBA0cEQCADQQFLDQIgAEECOgAIIAEoAgAgAUIANwMARQ0BIAEpAwghBCAAQQM6AAggACAENwMACyACQSBqJAAPC0HQnMcAEN0JAAsgAkEANgIYIAJBATYCDCACQZiDyAA2AgggAkIENwIQIAJBCGpBwJzHABCNCAALhQEBA38CfwJAIAAoAgAiAUUNAANAAkAgACgCCCIDIAAoAgRPDQAgASADai0AAEHFAEcNACAAIANBAWo2AggMAgsCQCACRQ0AIAAoAhAiAUUNACABQeeQxgBBAhCXA0UNAEEBDwtBASAAQQEQ1QENAhogAkEBayECIAAoAgAiAQ0ACwtBAAsLhwEBA38gACgCACECIAAoAgQiACgCACIBBEAgAiABEQMACwJAAkAgACgCBCIABEAgAkEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAGpJDQEgAUEAIAMgAEEnaksbDQIgAhCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuUAQICfgF/IAEpAgAgASkCCCEDIABBBGoQ6gJC7bqtts2F1PXjAIUgA0L4gpm9le7Gxbl/hYRQBEAgAEEkahCxBAsCQCAAQQRrKAIAIgFBeHFBLEEwIAFBA3EiBBtPBEAgBEEAIAFB0ABPGw0BIAAQogIPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAt/AQF/IwBBQGoiBCQAIAQgATYCDCAEIAA2AgggBCADNgIsIAQgAjYCKCAEQQI2AhQgBEH45sAANgIQIARCAjcCHCAEIARBKGqtQoCAgIDAAIQ3AzggBCAEQQhqrUKAgICAIIQ3AzAgBCAEQTBqNgIYIARBEGoQxwUgBEFAayQAC4oBAQJ/IwBBEGsiAiQAAkACQCAAKAIkIgFBCU8EQCAAKAIEIgFBf0YNAQtBfyABZ3ZBACABGyIBQX9GDQAgAkEIaiAAIAFBAWoQ6AMgAigCCCIAQYGAgIB4RwRAIAANAkHYlccAQRFB1MzHABDrBwALIAJBEGokAA8LQdiVxwBBEUHkzMcAEKsHCwALigEBAn8jAEEQayICJAACQAJAIAAoAhQiAUEFTwRAIAAoAgQiAUF/Rg0BC0F/IAFndkEAIAEbIgFBf0YNACACQQhqIAAgAUEBahDpAyACKAIIIgBBgYCAgHhHBEAgAA0CQdiVxwBBEUHUzMcAEOsHAAsgAkEQaiQADwtB2JXHAEERQeTMxwAQqwcLAAuEAQECfyAAIAEgACgCCCIDQQNyIgJB/v8DcSACbEGA/gNxQQh2cyIBIAAoAgAiAnNB/wFxQQJ0KALwvUggAkEIdnMiAjYCACAAIAAoAgQgAkH/AXFqQYWIosAAbEEBaiICNgIEIAAgA0H/AXEgAkEYdnNBAnQoAvC9SCADQQh2czYCCCABC44BAgN/AX4gASkCHCEFAkACQEEIEHEiAwRAIAMgBTcCACABQQRqEOoCIAFBBGsoAgAiAkF4cSIEQShBLCACQQNxIgIbSQ0BIAJBACAEQcwATxsNAiABEKICIABBxJfBADYCBCAAIAM2AgAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC44BAgN/AX4gASkCHCEFAkACQEEIEHEiAwRAIAMgBTcCACABQQRqEOoCIAFBBGsoAgAiAkF4cSIEQShBLCACQQNxIgIbSQ0BIAJBACAEQcwATxsNAiABEKICIABBiJbBADYCBCAAIAM2AgAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4IBAQF/IwBBMGsiAiQAIAIgACgCACgCACIANgIYIAIgAGg2AhwgAkEDNgIEIAJByIvDADYCACACQgI3AgwgAiACQRxqrUKAgICAsAaENwMoIAIgAkEYaq1CgICAgMAGhDcDICACIAJBIGo2AgggASgCACABKAIEIAIQwQMgAkEwaiQAC4sBAQJ/IwBBEGsiAiQAAkACQCAAKAKEASIBQSFPBEAgACgCBCIBQX9GDQELQX8gAWd2QQAgARsiAUF/Rg0AIAJBCGogACABQQFqEPQDIAIoAggiAEGBgICAeEcEQCAADQJB2JXHAEERQdTMxwAQ6wcACyACQRBqJAAPC0HYlccAQRFB5MzHABCrBwsAC4oBAQJ/IwBBEGsiAiQAAkACQCAAKAIUIgFBBU8EQCAAKAIEIgFBf0YNAQtBfyABZ3ZBACABGyIBQX9GDQAgAkEIaiAAIAFBAWoQ9QMgAigCCCIAQYGAgIB4RwRAIAANAkHYlccAQRFB1MzHABDrBwALIAJBEGokAA8LQdiVxwBBEUHkzMcAEKsHCwALigEBAn8jAEEQayICJAACQAJAIAAoAiQiAUEJTwRAIAAoAgQiAUF/Rg0BC0F/IAFndkEAIAEbIgFBf0YNACACQQhqIAAgAUEBahD2AyACKAIIIgBBgYCAgHhHBEAgAA0CQdiVxwBBEUHUzMcAEOsHAAsgAkEQaiQADwtB2JXHAEERQeTMxwAQqwcLAAuOAQIDfwF+IAEpAhwhBQJAAkBBCBBxIgMEQCADIAU3AgAgAUEEahDqAiABQQRrKAIAIgJBeHEiBEEoQSwgAkEDcSICG0kNASACQQAgBEHMAE8bDQIgARCiAiAAQailxwA2AgQgACADNgIADwsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuKAQEDfyABKAIcIQICQAJAQQQQcSIDBEAgAyACNgIAIAFBBGoQ6gIgAUEEaygCACICQXhxQSRBKCACQQNxIgQbSQ0BIARBACACQcgATxsNAiABEKICIABB8JnBADYCBCAAIAM2AgAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4oBAQN/IAEtABwhAgJAAkBBARBxIgMEQCADIAI6AAAgAUEEahDqAiABQQRrKAIAIgJBeHFBJEEoIAJBA3EiBBtJDQEgBEEAIAJByABPGw0CIAEQogIgAEGosMcANgIEIAAgAzYCAA8LAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALbQEDfyMAQRBrIgIkACAALQAAIQNBAyEAA0AgACACakEMaiADQQ9xQcmBwgBqLQAAOgAAIAMiBEEEdiEDIABBAWshACAEQQ9LDQALIAFBAUGEtMUAQQIgACACakENakEDIABrEMgDIAJBEGokAAt7AQF/IwBBIGsiAiQAAn8gACgCAEEBRgRAIAEoAgBBw4/GAEEVIAEoAgQoAgwRAAAMAQsgAiAArUKAgICAEIQ3AwAgASgCACABKAIEIAJCATcCFCACQQI2AgwgAkHwj8YANgIIIAIgAjYCECACQQhqEMEDCyACQSBqJAALdwEBfyMAQUBqIgMkACADIAI2AhQgAyABNgIQIAMgADYCDCADQQI2AhwgA0Gk5sAANgIYIANCAjcCJCADIANBEGqtQoCAgIAwhDcDOCADIANBDGqtQoCAgIAQhDcDMCADIANBMGo2AiAgA0EYahDHBSADQUBrJAALfwEEfyAAQQRqEOoCAkACQCAAKAIcIgIEQCAAKAIgIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIAJqSQ0BIAFBACAEIAJBJ2pLGw0CIAMQogILIABBKGoQ4wQPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtiAQR+IAAgAkL/////D4MiAyABQv////8PgyIEfiIFIAQgAkIgiCICfiIEIAMgAUIgiCIGfnwiAUIghnwiAzcDACAAIAMgBVStIAIgBn4gASAEVK1CIIYgAUIgiIR8fDcDCAt6AQF/IwBBQGoiAyQAIAMgAjYCBCADIAE2AgAgAyAA/QADAP0LAyAgA0ECNgIMIANB3KDGADYCCCADQgI3AhQgAyADrUKAgICAMIQ3AzggAyADQSBqrUKAgICA4ACENwMwIAMgA0EwajYCECADQQhqEMcFIANBQGskAAt6AQF/IwBBQGoiAyQAIAMgAjYCBCADIAE2AgAgAyAA/QADAP0LAyAgA0ECNgIMIANBqKbGADYCCCADQgI3AhQgAyADrUKAgICAMIQ3AzggAyADQSBqrUKAgICA4ACENwMwIAMgA0EwajYCECADQQhqEMcFIANBQGskAAt8AQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQQI2AhwgBUHg+McANgIYIAVCAjcCJCAFIAVBEGqtQoCAgICQAYQ3AzggBSAFQQhqrUKAgICAoAGENwMwIAUgBUEwajYCICAFQRhqIAQQjQgAC2oBA38jAEEQayIDJAAgACgCACgCACEAQQkhAgNAIAIgA2pBBmogAEEPcS0A3LZFOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBhLTFAEECIAIgA2pBB2pBCSACaxDIAyADQRBqJAALjAEAAn8CQAJAAkACQAJAIAJBA2sOBAMEAAEECyABQbz/wABBBRDbBw0BQQAMBAsgAUHB/8AAQQYQ2wcNAkEBDAMLIAFBx//AAEEFENsHDQFBAgwCC0EDIAFBzP/AAEEDENsHRQ0BGiABQc//wABBAxDbBw0AQQQMAQtBBQshAiAAQQA6AAAgACACOgABC4IBAQJ/IABBDGoQ9QICQAJAAkAgAEF/Rg0AIAAgACgCBEEBayIBNgIEIAENACAAQQRrKAIAIgFBeHEiAkHYAEHcACABQQNxIgEbSQ0BIAFBACACQfwATxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC4IBAQJ/IABBDGoQ9gICQAJAAkAgAEF/Rg0AIAAgACgCBEEBayIBNgIEIAENACAAQQRrKAIAIgFBeHEiAkH4AEH8ACABQQNxIgEbSQ0BIAFBACACQZwBTxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC3wBAX8CQAJAIAFB/////wNLDQAgAUECdCIDQf3///8HTw0AAn8gA0UEQEEEIQJBAAwBCyADEHEiAkUNAiACQQRrLQAAQQNxRSADRXJFBEAgAkEAIAP8CwALIAELIQMgACABNgIIIAAgAjYCBCAAIAM2AgAPCyACEP8HCwALZwEDfyMAQRBrIgMkACAAKAIAIQBBCSECA0AgAiADakEGaiAAQQ9xLQDctkU6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGEtMUAQQIgAiADakEHakEJIAJrEMgDIANBEGokAAuCAQEDfwJAAkACQAJAIAAtAABBAWsOAgAAAQsgACgCBCICRQ0AIAAoAggiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAMgAkEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAt3AQR/AkACQCABKAIUIgUgASgCECIGTw0AIAEoAgwhBwNAIAUgB2otAAAiCEEwa0H/AXFBCU0EQCABIAVBAWoiBTYCFCAFIAZHDQEMAgsLIAhBIHJB5QBGDQELIAAgASACIAMgBBDwBA8LIAAgASACIAMgBBDuAwuCAQAgASgCKEECRwRAAkACQCACKAIQQQFGBEAgASgC3AIgAigCFEsNAQsgAigCGEEBRw0BIAEoAuACIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgAgASAC/QADAP0LAwAgAUEQaiACQRBq/QADAP0LAwAPC0GsmMcAEN0JAAt3AQN/IABBBGoQ6gICQAJAIAAoAhwiAgRAIAAoAiAiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAMgAkEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAt0AQJ/AkACQCAABEAgAEEIayIDIAMoAgBBAWoiBDYCACAERQ0BIAAoAgANAiAAQX82AgAgAEEEaiABIAJBAEcQMCAAIAAoAgBBAWo2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCADEOQGCw8LEI4KCwALEJAKAAt0AQJ/AkACQCAABEAgAEEIayIDIAMoAgBBAWoiBDYCACAERQ0BIAAoAgANAiAAQX82AgAgAEEEaiABIAJBAEcQLyAAIAAoAgBBAWo2AgAgAyADKAIAQQFrIgA2AgAgAEUEQCADEOMGCw8LEI4KCwALEJAKAAt1AgF/AX4jAEEQayIFJAAgAUUEQEGt+cQAQTIQjwoACyAFQQhqIAEgAyAEIAIoAhARBgAgACAFKQMIIganIgFB/wFxNgIIIAAgBkIgiKdBACABQQFxIgIbNgIEIABBACABQQh2Qf8BcSACGzYCACAFQRBqJAALdQIBfwF+IwBBEGsiBSQAIAFFBEBBrfnEAEEyEI8KAAsgBUEIaiABIAMgBCACKAIQEQYAIAAgBSkDCCIGpyICQQJGIgE2AgggACAGQiCIpyIDQQAgARs2AgQgAEEAIANBgAggAkEBcRsgARs2AgAgBUEQaiQAC3ABAX8CQAJAIAJBAk8EQCACQQF2IQZBACEAQQAhBQNAIAAgAk8NAiAEIAVGDQMgAyAFaiAAIAFqLQAAOgAAIABBAmohACAFQQFqIgUgBkcNAAsLDwsgACACQeCYxQAQjAcACyAEIARB8JjFABCMBwALdwEEfwJAAkAgACgCACICBEAgACgCBCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAQQxqEOMEDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALcwIBfwF+IwBBEGsiBCQAIAFFBEBBrfnEAEEyEI8KAAsgBEEIaiABIAMgAigCEBEFACAAIAQpAwgiBaciAUH/AXE2AgggACAFQiCIp0EAIAFBAXEiAhs2AgQgAEEAIAFBCHZB/wFxIAIbNgIAIARBEGokAAt6AQN/IwBBEGsiAyQAIANBCGogASgCACABKAIEIAEoAggQ+QEgAygCDCEEIAMoAgghBUEUEHEiAUUEQAALIAEgBTYCDCAAIAE2AgQgAEECNgIAIAEgAikCADcCACABIAQ2AhAgAUEIaiACQQhqKAIANgIAIANBEGokAAt6AQN/IwBBEGsiAyQAIANBCGogASgCACABKAIEIAEoAggQ+QEgAygCDCEEIAMoAgghBUEUEHEiAUUEQAALIAEgBTYCDCAAIAE2AgQgAEEBOgAAIAEgAikCADcCACABIAQ2AhAgAUEIaiACQQhqKAIANgIAIANBEGokAAt6AQN/IwBBEGsiAyQAIANBCGogASgCACABKAIEIAEoAggQ+QEgAygCDCEEIAMoAgghBUEUEHEiAUUEQAALIAEgBTYCDCAAIAE2AgQgAEEBOwEAIAEgAikCADcCACABIAQ2AhAgAUEIaiACQQhqKAIANgIAIANBEGokAAt6AQN/IwBBEGsiAyQAIANBCGogASgCACABKAIEIAEoAggQ+QEgAygCDCEEIAMoAgghBUEUEHEiAUUEQAALIAEgBTYCDCAAIAE2AgQgAEEANgIAIAEgAikCADcCACABIAQ2AhAgAUEIaiACQQhqKAIANgIAIANBEGokAAt9AQN/AkACQCAAKAIAIgJBgICAgHhyQYCAgIB4RwRAIAAoAgQiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAMgAkEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAt2AQN/IAAQigICQAJAIAAoAsQBIgIEQCAAKALIASIAQQRrKAIAIgFBeHEiA0EEQQggAUEDcSIBGyACakkNASABQQAgAyACQSdqSxsNAiAAEKICCw8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC3YBA38gABDAAgJAAkAgACgCvAEiAgRAIAAoAsABIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALdAEDfyAAEPYCAkACQCAAKAJgIgIEQCAAKAJkIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALdAEDfyAAEPUCAkACQCAAKAJAIgIEQCAAKAJEIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALdAEEfwJAAkAgACgCKCICBEAgACgCLCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAEL8EDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALdAEDfyAAEPcDAkACQCAAKAJoIgIEQCAAKAJsIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALbQECfyABKAIIIgRFIAMgASgCACIFIARrTXJFBEAgAUEANgIIIAFBADoADEEAIQQLIAMgBUkEQCADBEAgASgCBCAEaiACIAP8CgAACyAAQQQ6AAAgASADIARqNgIIDwsgAEIENwIAIAFBADoADAtvAQJ/AkACQCAABEAgAEEIayICIAIoAgBBAWoiAzYCACADRQ0BIAAoAgANAiAAQX82AgAgAEEEaiABEC0gACAAKAIAQQFqNgIAIAIgAigCAEEBayIANgIAIABFBEAgAhDkBgsPCxCOCgsACxCQCgALbwECfwJAAkAgAARAIABBCGsiAiACKAIAQQFqIgM2AgAgA0UNASAAKAIADQIgAEF/NgIAIABBBGogARAuIAAgACgCAEEBajYCACACIAIoAgBBAWsiADYCACAARQRAIAIQ4wYLDwsQjgoLAAsQkAoAC3IBA38CQAJAIAAoAgAiAkEASgRAIAAoAgQiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAMgAkEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAttAQF/An8CQAJ/AkAgAigCBARAIAIoAggiA0UEQCABDQIMBAsgAigCACADQQQgARC7AgwCCyABRQ0CCyABEHELIgJBBCACGyEDIAJFDAELQQQhA0EACyECIAAgATYCCCAAIAM2AgQgACACNgIAC3cCAn0CfyABKAIIIgVBgICAAXEhBCAAKgIAIQIgBUGAgICAAXFFBEAgAosiA0PKGw5aYCACQwAAAABcIANDF7fROF1xckUEQCABIAIgBEEAR0EBEPcCDwsgASACIARBAEcQzwIPCyABIAIgBEEARyABLwEOEL0CC28BA38CQAJAIAAoAgAiAgRAIAAoAgQiAEEEaygCACIBQXhxIgNBBEEIIAFBA3EiARsgAmpJDQEgAUEAIAMgAkEnaksbDQIgABCiAgsPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAt9AwF/AX4BfCMAQRBrIgMkAAJAAkACQAJAIAAoAgBBAWsOAgECAAsgACsDCCEFIANBAzoAACADIAU5AwgMAgsgACkDCCEEIANBAToAACADIAQ3AwgMAQsgACkDCCEEIANBAjoAACADIAQ3AwgLIAMgASACEN8GIANBEGokAAtnAQF/An8CfwJAIAMoAgQEQCADKAIIIgRFBEAgAg0CQQAMBAsgAygCACAEIAEgAhC7AgwCCyACDQBBAAwCCyACEHELIgMgASADGyEBIANFCyEDIAAgAjYCCCAAIAE2AgQgACADNgIAC3EBAn8gAEEEahDqAiAAKAIkIgEgASgCACgCABEDAAJAIABBBGsoAgAiAUF4cUEsQTAgAUEDcSICG08EQCACQQAgAUHQAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC2sBAn8jAEEgayIBJAACfyAALQBsQQZHBEAgACgCZCICBEAgAiAAKAJoKAIUEQQADAILQZyqwQAQ3QkACyABQQA2AhggAUEBNgIMIAFBlKrBADYCCCABQgQ3AhAgAUEIahCSBwsgAUEgaiQAC24BAn8jAEEgayIBJAACfyAALQDoAUEGRwRAIAAoAuABIgIEQCACIAAoAuQBKAIUEQQADAILQZyqwQAQ3QkACyABQQA2AhggAUEBNgIMIAFBlKrBADYCCCABQgQ3AhAgAUEIahCSBwsgAUEgaiQAC24BAn8jAEEgayIBJAACfyAALQCMAUEGRwRAIAAoAoQBIgIEQCACIAAoAogBKAIUEQQADAILQZyqwQAQ3QkACyABQQA2AhggAUEBNgIMIAFBlKrBADYCCCABQgQ3AhAgAUEIahCSBwsgAUEgaiQAC24BAn8jAEEgayIBJAACfyAALQDwAUEGRwRAIAAoAugBIgIEQCACIAAoAuwBKAIUEQQADAILQZyqwQAQ3QkACyABQQA2AhggAUEBNgIMIAFBlKrBADYCCCABQgQ3AhAgAUEIahCSBwsgAUEgaiQAC24BA38jAEEQayICJAAgAkEIaiAAKAIAIAAoAgQgACgCCBD5ASACKAIMIQMgAigCCCEEQRQQcSIARQRAAAsgACAENgIMIAAgASkCADcCACAAIAM2AhAgAEEIaiABQQhqKAIANgIAIAJBEGokACAAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbSIwwA2AgggA0ICNwIUIANCgICAgBAiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEI0IAAtmAQN/IwBBEGsiAiQAAkAgASgCACIEKAIAQQFHDQAgBC0ABEEDRw0AIAJBCGogBCgCCCIBKAIAIAEoAgQoAhgRAQAgAigCDCEBIAIoAgghAwsgACABNgIEIAAgAzYCACACQRBqJAALaQECfyMAQSBrIgIkACACQQhqEOQIQSgQcSIBRQRAAAsgAUGYn8EANgIAIAEgAikCCDcCBCABIAApAgA3AhwgAUEMaiACQRBq/QACAP0LAgAgAUEkaiAAQQhqKAIANgIAIAJBIGokACABC2kBAn8jAEEgayICJAAgAkEIahDkCEEoEHEiAUUEQAALIAFB/J7BADYCACABIAIpAgg3AgQgASAAKQIANwIcIAFBDGogAkEQav0AAgD9CwIAIAFBJGogAEEIaigCADYCACACQSBqJAAgAQtpAQJ/IwBBIGsiAiQAIAJBCGoQ5AhBKBBxIgFFBEAACyABQaS1xwA2AgAgASACKQIINwIEIAEgACkCADcCHCABQQxqIAJBEGr9AAIA/QsCACABQSRqIABBCGooAgA2AgAgAkEgaiQAIAELagEBfyMAQRBrIgYkACABRQRAQa35xABBMhCPCgALIAZBCGogASADIAQgBSACKAIQEQcAIAYoAgwhASAAIAYoAggiAjYCCCAAIAFBACACQQFxIgIbNgIEIABBACABIAIbNgIAIAZBEGokAAtnAQJ/IwBBEGsiAiQAIAAoAgwhAQJ/AkACQAJAIAAoAgQOAgABAgsgAQ0BQQFBABC0BwwCCyABDQAgACgCACIAKAIAIAAoAgQQtAcMAQsgAkEEaiIBIAAQ7AMgARCOBwsgAkEQaiQAC24BAn8CQEEQEHEiAUUNACABQfWVyAD9AAAA/QsAAEEMEHEiAkUNACACQRA2AgggAiABNgIEIAJBEDYCAEEMEHEiAUUNACABQRU6AAggAUHgtMQANgIEIAEgAjYCACAAIAGtQiCGQgOENwIADwsAC2gBAX8jAEEQayIFJAAgAUUEQEGt+cQAQTIQjwoACyAFQQhqIAEgAyAEIAIoAhARBgAgBSgCDCEBIAAgBSgCCCICNgIIIAAgAUEAIAJBAXEiAhs2AgQgAEEAIAEgAhs2AgAgBUEQaiQAC2cBAn8jAEEQayICJAAgACgCDCEBAn8CQAJAAkAgACgCBA4CAAECCyABDQFBAUEAELcHDAILIAENACAAKAIAIgAoAgAgACgCBBC3BwwBCyACQQRqIgEgABDsAyABEJAHCyACQRBqJAALZQEBfwJAAkAgAQRAIABBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqSQ0BIAJBACADIAFBJ2pLGw0CIAAQogILDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALZwECfyAAQQRqEOoCIABBJGoQsQQCQCAAQQRrKAIAIgFBeHFBLEEwIAFBA3EiAhtPBEAgAkEAIAFB0ABPGw0BIAAQogIPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtnAQJ/IABBBGoQ6gIgAEEcahCxBAJAIABBBGsoAgAiAUF4cUEkQSggAUEDcSICG08EQCACQQAgAUHIAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC2cBAn8gAEEEahDqAiAAQRxqEOMEAkAgAEEEaygCACIBQXhxQSxBMCABQQNxIgIbTwRAIAJBACABQdAATxsNASAAEKICDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALaQECfyAAQQRqEOoCIABBIGoQgwICQCAAQQRrKAIAIgFBeHFBzABB0AAgAUEDcSICG08EQCACQQAgAUHwAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC3wBAX8CQAJAIABBhAhPBEAgANBvJgFBoLvJACgCAA0CIABBsLvJACgCACIBSQ0BIAAgAWsiAEGou8kAKAIATw0BQaC0yQAoAgAgAEECdGpBrLvJACgCADYCAEGsu8kAIAA2AgBBoLvJAEEANgIACw8LAAtBgI/IABCwCgALXgEBfyMAQTBrIgIkACACIAE2AgwgAiAANgIIIAJBAjYCFCACQYTmwAA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgCCENwMoIAIgAkEoajYCGCACQRBqEMcFIAJBMGokAAteAQF/IwBBMGsiAiQAIAIgATYCDCACIAA2AgggAkECNgIUIAJBhObAADYCECACQgE3AhwgAiACQQhqrUKAgICAIIQ3AyggAiACQShqNgIYIAJBEGoQ3gQgAkEwaiQAC14BAX8jAEEwayICJAAgAiABNgIMIAIgADYCCCACQQI2AhQgAkHI5sAANgIQIAJCATcCHCACIAJBCGqtQoCAgIAghDcDKCACIAJBKGo2AhggAkEQahDeBCACQTBqJAALXgEBfyMAQTBrIgIkACACIAE2AgwgAiAANgIIIAJBAjYCFCACQcjmwAA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgCCENwMoIAIgAkEoajYCGCACQRBqEMcFIAJBMGokAAtcAAJAIAFBAE4EQAJAIAFFBEBBASECDAELIAEQcSICRQ0CIAJBBGstAABBA3FFIAFFcg0AIAJBACAB/AsACyAAIAE2AgggACACNgIEIAAgATYCAA8LIAIQ/wcLAAtWAQF+AkAgA0HAAHFFBEAgA0UNASACQQAgA2tBP3GthiABIANBP3GtIgSIhCEBIAIgBIghAgwBCyACIANBP3GtiCEBQgAhAgsgACABNwMAIAAgAjcDCAteAQF/AkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC2cBAn8jAEEgayICJAAgAkEIahDkCEEoEHEiAUUEQAALIAFB0J/BADYCACABIAIpAgg3AgQgASAANgIkIAFBIjYCICABQbzWwQA2AhwgAUEMaiACQRBq/QACAP0LAgAgAkEgaiQAIAELYQEBfyAAQQRqEOoCAkAgAEEEaygCACIBQXhxIgJBKEEsIAFBA3EiARtPBEAgAUEAIAJBzABPGw0BIAAQogIPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAthAQJ/IABBBGoQ6gICQCAAQQRrKAIAIgFBeHEiAkEoQSwgAUEDcSIBG08EQCABQQAgAkHMAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC2ICAX8CfiMAQRBrIgEkACAAKAIoQQJGBEBBrJjHABDdCQALIAEgADUC4AIgADUC3AJ+IAAtAOgEQQN0KQOInkkQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC18BAX8gAEEEahDqAgJAIABBBGsoAgAiAUF4cUEsQTAgAUEDcSICG08EQCACQQAgAUHQAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC18BAn8gAEEEahDqAgJAIABBBGsoAgAiAUF4cUEkQSggAUEDcSICG08EQCACQQAgAUHIAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC18BAX8gAEEEahDqAgJAIABBBGsoAgAiAUF4cUEkQSggAUEDcSICG08EQCACQQAgAUHIAE8bDQEgABCiAg8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC2EBAX8gAEEEahDqAgJAIABBBGsoAgAiAUF4cUHMAEHQACABQQNxIgIbTwRAIAJBACABQfAATxsNASAAEKICDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALWwEBfyMAQTBrIgMkACADIAE2AgwgAyAANgIIIANBATYCFCADQaD4xwA2AhAgA0IBNwIcIAMgA0EIaq1CgICAgKABhDcDKCADIANBKGo2AhggA0EQaiACEI0IAAtiAQJ/IwBBIGsiASQAAkAgABC4ASICDQAgAC0AgARFBEAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQkgchAgwBCyAAQbwCahDUASECCyABQSBqJAAgAgtiAQJ/IwBBIGsiASQAAkAgABCsASICDQAgAC0A+ANFBEAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQkgchAgwBCyAAQbwCahCjASECCyABQSBqJAAgAgtcAQF/IwBBEGsiBiQAIAFFBEBBrfnEAEEyEI8KAAsgBkEIaiABIAMgBCAFIAIoAhARMwAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtcAQF/IwBBEGsiBiQAIAFFBEBBrfnEAEEyEI8KAAsgBkEIaiABIAMgBCAFIAIoAhARBwAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtcAQF/IwBBEGsiBiQAIAFFBEBBrfnEAEEyEI8KAAsgBkEIaiABIAMgBCAFIAIoAhARNAAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtcAQF/IwBBEGsiBiQAIAFFBEBBrfnEAEEyEI8KAAsgBkEIaiABIAMgBCAFIAIoAhARNQAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtYAQJ/IwBBEGsiAiQAIAEtAABBA0cEf0EABSACQQhqIAEoAgQiASgCACABKAIEKAIkEQEAIAIoAgwhAyACKAIICyEBIAAgAzYCBCAAIAE2AgAgAkEQaiQAC1gBAn8jAEEQayICJAAgAS0AAEEDRwR/QQAFIAJBCGogASgCBCIBKAIAIAEoAgQoAhgRAQAgAigCDCEDIAIoAggLIQEgACADNgIEIAAgATYCACACQRBqJAALXQECfyMAQSBrIgMkACADQQhqEOQIQSQQcSICRQRAAAsgAkG0n8EANgIAIAIgAykCCDcCBCACIAE2AiAgAiAANgIcIAJBDGogA0EQav0AAgD9CwIAIANBIGokACACC1gBAn8jAEEgayIDJAAgABC4CiEEIAMgAjYCBCADIAQ2AgAgAiAERwRAIANBADYCCEEAIAMgA0EEaiADQQhqQeD5xAAQ9QcACyAAIAEgAhDgCSADQSBqJAALWgEBfyMAQRBrIgUkACABRQRAQa35xABBMhCPCgALIAVBCGogASADIAQgAigCEBEGACAFKAIMIQEgACAFKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBUEQaiQAC10BAn8jAEEgayIDJAAgA0EIahDkCEEkEHEiAkUEQAALIAJBiLXHADYCACACIAMpAgg3AgQgAiABNgIgIAIgADYCHCACQQxqIANBEGr9AAIA/QsCACADQSBqJAAgAgtYAQF/IwBBEGsiBCQAIAFFBEBBrfnEAEEyEI8KAAsgBEEIaiABIAMgAigCEBEFACAEKAIMIQEgACAEKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBEEQaiQAC1QBAn8CQCAAQ////z4gAJiSIgC8IgJBF3ZB/wFxIgFBlQFLDQBBgICAgHhBgICAfCABQf8Aa3UgAUH/AEkbIgFBf3MgAnFFDQAgASACcb4hAAsgAAtXAQF/IAAoAugEIAAoAvAEIgNrIAJJBEAgAEHoBGogAyACQQFBARCkBSAAKALwBCEDCyACBEAgACgC7AQgA2ogASAC/AoAAAsgACACIANqNgLwBCAAEFwLVwEBfyAAKAKoBSAAKAKwBSIDayACSQRAIABBqAVqIAMgAkEBQQEQpAUgACgCsAUhAwsgAgRAIAAoAqwFIANqIAEgAvwKAAALIAAgAiADajYCsAUgABBeC1cBAX8gACgC6AQgACgC8AQiA2sgAkkEQCAAQegEaiADIAJBAUEBEKQFIAAoAvAEIQMLIAIEQCAAKALsBCADaiABIAL8CgAACyAAIAIgA2o2AvAEIAAQXQtXAQF/IAAoAsgFIAAoAtAFIgNrIAJJBEAgAEHIBWogAyACQQFBARCkBSAAKALQBSEDCyACBEAgACgCzAUgA2ogASAC/AoAAAsgACACIANqNgLQBSAAEF8LWAEBfyAAKAKwAiAAKAK4AiIDayACSQRAIABBsAJqIAMgAkEBQQEQpAUgACgCuAIhAwsgAgRAIAAoArQCIANqIAEgAvwKAAALIAAgAiADajYCuAIgABCsAQtYAQF/IAAoArACIAAoArgCIgNrIAJJBEAgAEGwAmogAyACQQFBARCkBSAAKAK4AiEDCyACBEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwR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AgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4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IAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAACEUAAAjrAAAJCAAQB10AAAgdAAAImwAACVMAFAd9AAAIPQAACNsAAAkXABIHbQAACC0AAAi7AAAJDQAACI0AAAhNAAAI+wAACQMAEAdTAAAIEwAACMMAFQgjABMHcwAACDMAAAjHAAAJCwARB2MAAAgjAAAIpwAACQMAAAiDAAAIQwAACOcAAAkHABAHWwAACBsAAAiXAAAJQwAUB3sAAAg7AAAI1wAACRMAEgdrAAAIKwAACLcAAAkLAAAIiwAACEsAAAj3AAAJBQAQB1cAAAgXAAAIAABACDMAEwd3AAAINwAACM8AAAkPABEHZwAACCcAAAivAAAJBwAACIcAAAhHAAAI7wAACQkAEAdfAAAIHwAACJ8AAAljABQHfwAACD8AAAjfAAAJGwASB28AAAgvAAAIvwAACQ8AAAiPAAAITwAACP8AAAkBABAFAQEXBREAEwUBEBsFBQARBQEEGQVBABUFAUAdBQMAEAUBAhgFIQAUBQEgHAUJABIFAQgaBYEAFgUAAEAFAgAQBYEBFwUZABMFARgbBQcAEQUBBhkFYQAVBQFgHQUEABAFAQMYBTEAFAUBMBwFDQASBQEMGgXBABYFAABABVkXEABgAAAAwgcAABEAAABZFxAAYAAAAMAHAAARAAAAWRcQAGAAAADJBwAAFAAAAFkXEABgAAAAzgcAABgAAABZFxAAYAAAAFEIAAAYAAAAWRcQAGAAAADdBwAAGAAAAFkXEABgAAAARQgAACAAAABJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlIAAJg8EgAqAAAAWRcQAGAAAAAICAAAIQAAAFkXEABgAAAAHQIAAAkAAABZFxAAYAAAACECAAAJAAAAWRcQAGAAAACCAgAAJAAAAFkXEABgAAAAkgIAACgAAABZFxAAYAAAAO4CAAAkAAAAWRcQAGAAAAD/AgAAJQAAAFkXEABgAAAAWAMAACEAAABZFxAAYAAAAGAEAABEAAAAbmFtZSBvdXQgb2YgYm91bmRzAABZFxAAYAAAAIkEAAAqAAAAY29tbSBvdXQgb2YgYm91bmRzAABZFxAAYAAAAMIEAAAqAAAAWRcQAGAAAAAkBgAAJQAAAFkXEABgAAAAZAYAADMAAABZFxAAYAAAAOIGAAA0AAAAWRcQAGAAAADiBgAAJwAAAFkXEABgAAAA0wYAACcAAABZFxAAYAAAAJ4GAAAvAAAAWRcQAGAAAACnBgAAOwAAAFkXEABgAAAAtQYAADsAAABZFxAAYAAAALUGAAAuAAAAWRcQAGAAAADDBgAAOwAAAFkXEABgAAAAwwYAAC4AAABZFxAAYAAAAJMGAAAlAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5idWYuaXNfZW1wdHkoKSB8fCBzZWxmLmJ1Zi5sZW4oKSA+PSBTZWxmOjpwYWRkaW5nKCkAAAMCEABnAAAALwAAAAkAAAADAhAAZwAAAIgAAAA1AAAAAwIQAGcAAACIAAAAKAAAAAMCEABnAAAAgQAAAEQAAAADAhAAZwAAAIEAAAA3AAAAAwIQAGcAAABPAAAAHQAAAP4KEABnAAAAEQEAACMAAAD+ChAAZwAAABIBAAAjAAAA/goQAGcAAAASAQAAGAAAAP4KEABnAAAAGQEAACwAAAD+ChAAZwAAABkBAAAZAAAA/goQAGcAAABQAQAAEQAAAGluIGJvdW5kcwAAAP4KEABnAAAASAEAADoAAAD+ChAAZwAAALUAAAAzAAAA/goQAGcAAAC1AAAAJAAAAP4KEABnAAAAtAAAACkAAAD+ChAAZwAAAFsAAAAJAAAA/goQAGcAAABkAAAALwAAAP4KEABnAAAAZAAAACAAAABhc3NlcnRpb24gZmFpbGVkOiBtc2cuZW5kc193aXRoKCdcMCcpAAAAWRcQAGAAAACSCQAACQAAAFkXEABgAAAAiQkAACMAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAAAABAQEBAQEBAQERERERISEhITExMTFBQUFBUVFRUQTcoAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAQEBARERISExMUFBUVFhYXFxgYGRkaGhsbHBwdHUBAAAB+BxAAaQAAAIsAAAAXAAAAfgcQAGkAAACOAAAAFQAAAH4HEABpAAAApgAAAA0AAAB+BxAAaQAAALMAAAAJAAAAfgcQAGkAAAC4AAAAGAAAAH4HEABpAAAAuAAAABMAAAB+BxAAaQAAAPAAAAAJAAAAfgcQAGkAAADwAAAADgAAAH4HEABpAAAA3gAAAA0AAAB+BxAAaQAAAGcAAAAaAAAAfgcQAGkAAABpAAAADQAAAH4HEABpAAAANwAAAA0AQbyDyQALfQEAAABgAgAAuhcQAGEAAAC0AAAAGQAAALoXEABhAAAAdwAAAD4AAABpbnZhbGlkIHNpemUgZm9yIAAAAORBEgARAAAAuhcQAGEAAACCAQAAEQAAACYAAAAdAAAAJgAAACYAAAAmAAAA4MUQAAbGEAAjxhAAScYQAG/GEACAAEHFhMkAC/AHAQAAAAAAAAABAAADAAAABAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAgAAAAMAAAAEAAAAAQAAAAIAAAADAAAABAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAgAAAAMAAAAEAAAAAQAAAAIAAAAJAAAAAAAAAAMAAAAHAAAADgAAAAAAAAAEAAAA8U0RAAAAAAD6TREA/U0RAAROEQAAAAAAEk4RAA8AAAASAAAAFAAAAA4AAAAXAAAAGAAAABYAAAAWAAAAbCcRAHsnEQCNJxEAoScRAK8nEQBUJREAxicRANwnEQANAAAAEQAAABAAAAAeAAAACwAAAAwAAAAXAAAAGAAAABsAAAAWAAAAGAAAABMAAAASAAAAEgAAAA0AAAAKAAAA71YRAPxWEQANVxEAHVcRADtXEQBGVxEAUlcRAGlXEQCBVxEAnFcRALJXEQDKVxEA3VcRAO9XEQABWBEADlgRAAkAAAAAAAAAAwAAAAcAAAAOAAAAAAAAAAQAAADxTREAAAAAAPpNEQD9TREABE4RAAAAAAASThEAAwAAAAMAAAAEAAAABQAAAAcAAADbTREA3k0RAOFNEQDlTREA6k0RAAMAAAADAAAABAAAAAUAAAAHAAAA200RAN5NEQDhTREA5U0RAOpNEQAJAAAAAAAAAAMAAAAHAAAADgAAAAAAAAAEAAAA8U0RAAAAAAD6TREA/U0RAAROEQAAAAAAEk4RAAMAAAAEAAAAAwAAAAQAAAADAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAABwAAAAgAAAAEAAAAAwAAAAMAAABI1hEAS9YRAE/WEQBS1hEAVtYRAFnWEQBd1hEAYNYRAGPWEQBm1hEAadYRAGzWEQBz1hEAe9YRAH/WEQCC1hEACAAAAAUAAAALAAAAAAAAAAUAAAAHAAAACQAAAAkAAAAFAAAAEQAAAA4AAAAJAAAAHgAAABsAAAAGAAAABwAAAAcAAAAHAAAAtOARALzgEQAA3BEAAAAAAMHgEQDG4BEAzeARANbgEQDf4BEA5OARAPXgEQAD4READOERACrhEQBF4REAS+ERAFLhEQBZ4REABQAAAAsAAAAAAAAABgAAAAcAAAAFAAAACQAAAAYAAAAGAAAABwAAAAwAAAAGAAAABAAAAAwAAAAMAAAACQAAAAgAAAAJAAAAvOARAADcEQAAAAAA1OURAMbgEQAT3BEA1uARANrlEQDg5REA5uURAO3lEQD55REA/NsRAP/lEQAL5hEAF+YRACDmEQAo5hEABAAAAAsAAAAAAAAABAAAAAQAAAAFAAAABwAAAAsAAAAHAAAAAwAAAAoAAAAKAEHcjMkACzMKAAAA/NsRAADcEQAAAAAAC9wRAA/cEQAT3BEAGNwRAB/cEQAq3BEAMdwRADTcEQA+3BEAQbSNyQAL9QJI3BEACQAAAAAAAAADAAAABwAAAA4AAAAAAAAABAAAAPFNEQAAAAAA+k0RAP1NEQAEThEAAAAAABJOEQADAAAAAwAAAAQAAAAFAAAABwAAANtNEQDeTREA4U0RAOVNEQDqTREADQAAABEAAAAQAAAAHgAAAAsAAAAMAAAAFwAAABgAAAAbAAAAFgAAABgAAAATAAAAEgAAABIAAAANAAAACgAAAO9WEQD8VhEADVcRAB1XEQA7VxEARlcRAFJXEQBpVxEAgVcRAJxXEQCyVxEAylcRAN1XEQDvVxEAAVgRAA5YEQABAAAAAAAAAAMAAAADAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAIAAAAAAAAABgAAAAIAAAAEAAAAAAAAAAgAAAACAAAABAAAAAQAAAADAAAAAwAAAAMAAAAAAAAAAgAAAAUAAAAFAAAAAAAAAAMAAAADAAAABAAAAAQAAAABAEG0kMkAC18DAAAAAwAAAAIAAAADAAAAAAAAAAMAAAADAAAAAQAAAPNYEQDsWBEA0PIRAA5ZEQDwWBEAAogRAAAAAAAAiBEAAlkRAAuIEQAAAAAA+FgRAAWIEQD+WBEAClkRABJZEQBBnJHJAAuVAfVYEQAHWREAGAsSABNZEQAAAAAA+1gRAAiIEQARWREABQAAAAwAAAALAAAACwAAAAQAAAD81REAAdYRAA3WEQAY1hEAI9YRAAUAAAAMAAAACwAAAAsAAAAEAAAA/NURAAHWEQAN1hEAGNYRACPWEQADAAAACAAAAA8AAAADAAAACAAAAA8AAAADAAAACAAAAA8AAAABAEHAkskACxEDAAAAAAAAAAEAAAAAAAAAAgBB4JLJAAsJBAAAAAAAAAABAEH4kskACxEDAAAAAAAAAAEAAAAAAAAAAgBBmJPJAAsJBAAAAAAAAAABAEGwk8kACxEDAAAAAAAAAAEAAAAAAAAAAgBB0JPJAAsJBAAAAAAAAAABAEHok8kACxEDAAAAAAAAAAEAAAAAAAAAAgBBiJTJAAvtBgQAAAAAAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAEAAAAAAAAAAwAAAAEAAAACAAAAAAAAAAQAAAABAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAEAAAAAAAAAAwAAAAEAAAACAAAAAAAAAAQAAAABAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAEAAAAAAAAAAwAAAAEAAAACAAAAAAAAAAQAAAABAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAMAAAAEAAAAAwAAAAQAAAADAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAABwAAAAgAAAAEAAAAAwAAAAMAAABI1hEAS9YRAE/WEQBS1hEAVtYRAFnWEQBd1hEAYNYRAGPWEQBm1hEAadYRAGzWEQBz1hEAe9YRAH/WEQCC1hEAAwAAAAQAAAADAAAABAAAAAMAAAAEAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAHAAAACAAAAAQAAAADAAAAAwAAAEjWEQBL1hEAT9YRAFLWEQBW1hEAWdYRAF3WEQBg1hEAY9YRAGbWEQBp1hEAbNYRAHPWEQB71hEAf9YRAILWEQAIAAAABQAAAAsAAAAAAAAABQAAAAcAAAAJAAAACQAAAAUAAAARAAAADgAAAAkAAAAeAAAAGwAAAAYAAAAHAAAABwAAAAcAAAC04BEAvOARAADcEQAAAAAAweARAMbgEQDN4BEA1uARAN/gEQDk4BEA9eARAAPhEQAM4REAKuERAEXhEQBL4REAUuERAFnhEQAFAAAACwAAAAAAAAAGAAAABwAAAAUAAAAJAAAABgAAAAYAAAAHAAAADAAAAAYAAAAEAAAADAAAAAwAAAAJAAAACAAAAAkAAAC84BEAANwRAAAAAADU5REAxuARABPcEQDW4BEA2uURAODlEQDm5REA7eURAPnlEQD82xEA/+URAAvmEQAX5hEAIOYRACjmEQAEAAAACwAAAAAAAAAEAAAABAAAAAUAAAAHAAAACwAAAAcAAAADAAAACgAAAAoAQZybyQALMwoAAAD82xEAANwRAAAAAAAL3BEAD9wRABPcEQAY3BEAH9wRACrcEQAx3BEANNwRAD7cEQBB9JvJAAu1A0jcEQADAAAABAAAAAMAAAAEAAAAAwAAAAQAAAADAAAAAwAAAAMAAAADAAAAAwAAAAcAAAAIAAAABAAAAAMAAAADAAAASNYRAEvWEQBP1hEAUtYRAFbWEQBZ1hEAXdYRAGDWEQBj1hEAZtYRAGnWEQBs1hEAc9YRAHvWEQB/1hEAgtYRAAMAAAAEAAAAAwAAAAQAAAADAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAABwAAAAgAAAAEAAAAAwAAAAMAAABI1hEAS9YRAE/WEQBS1hEAVtYRAFnWEQBd1hEAYNYRAGPWEQBm1hEAadYRAGzWEQBz1hEAe9YRAH/WEQCC1hEADg8QERITFBUYGQAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAACAAAAAAAAAAQAAAAAAAAABgAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAABAEG4n8kACxEDAAAAAAAAAAEAAAAAAAAAAgBB2J/JAAtBBAAAAAAAAAABAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAEAQaigyQALEQMAAAAAAAAAAQAAAAAAAAACAEHIoMkAC9gTBAAAAAAAAAABAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAEAAAAAQAAAAAAAAADAAAAAQAAAAIAAAAAAAAABAAAAAEAAAAAAAAAAwAAAAEAAAACAAAAAAAAAAQAAAAYAAAACAAAAA8AAAAGAAAABAAAAA4AAAANAAAAXtsRAHbbEQB+2xEAjdsRAJPbEQCX2xEApdsRAAgAAAAQAAAAEQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALgDEgDAAxIA0AMSAOEDEgDwAxIA/wMSABEEEgAiBBIALgQSADcEEgBHBBIAUgQSAFwEEgB4AxIAaQQSAHYEEgCCBBIAkwQSAKUEEgCzBBIAyQQSANUEEgDgBBIA6AQSAPEEEgD8BBIABwUSABQFEgAgBRIALAUSAD4FEgBGBRIAVAUSAGAFEgBvBRIAggUSAI0FEgCYBRIApQUSALAFEgC6BRIAvwUSABAAAAARAAAAEgAAABAAAAAQAAAAEwAAABIAAAANAAAADgAAABUAAAAMAAAACwAAABUAAAAVAAAADwAAAA4AAAATAAAAJgAAADgAAAAZAAAAFwAAAAwAAAAJAAAACgAAABAAAAAXAAAADgAAAA4AAAANAAAAFAAAAAgAAAAbAAAADgAAABAAAAAWAAAAFQAAAAsAAAAWAAAADQAAAAsAAAALAAAAEwAAABL+EQAi/hEAM/4RAEX+EQBV/hEAZf4RAHj+EQCK/hEAl/4RAKX+EQC6/hEAxv4RANH+EQDm/hEA+/4RAAr/EQAY/xEAK/8RAFH/EQCJ/xEAov8RALn/EQDF/xEAzv8RANj/EQDo/xEA//8RAA0AEgAbABIAKAASADwAEgBEABIAXwASAG0AEgB9ABIAkwASAKgAEgCzABIAyQASANYAEgDhABIA7AASAAgAAAAQAAAAEQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALgDEgDAAxIA0AMSAOEDEgDwAxIA/wMSABEEEgAiBBIALgQSADcEEgBHBBIAUgQSAFwEEgB4AxIAaQQSAHYEEgCCBBIAkwQSAKUEEgCzBBIAyQQSANUEEgDgBBIA6AQSAPEEEgD8BBIABwUSABQFEgAgBRIALAUSAD4FEgBGBRIAVAUSAGAFEgBvBRIAggUSAI0FEgCYBRIApQUSALAFEgC6BRIAvwUSAAgAAAAQAAAAEQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALgDEgDAAxIA0AMSAOEDEgDwAxIA/wMSABEEEgAiBBIALgQSADcEEgBHBBIAUgQSAFwEEgB4AxIAaQQSAHYEEgCCBBIAkwQSAKUEEgCzBBIAyQQSANUEEgDgBBIA6AQSAPEEEgD8BBIABwUSABQFEgAgBRIALAUSAD4FEgBGBRIAVAUSAGAFEgBvBRIAggUSAI0FEgCYBRIApQUSALAFEgC6BRIAvwUSAMcAAAD8AAAA6QAAAOIAAADkAAAA4AAAAOUAAADnAAAA6gAAAOsAAADoAAAA7wAAAO4AAADsAAAAxAAAAMUAAADJAAAA5gAAAMYAAAD0AAAA9gAAAPIAAAD7AAAA+QAAAP8AAADWAAAA3AAAAKIAAACjAAAApQAAAKcgAACSAQAA4QAAAO0AAADzAAAA+gAAAPEAAADRAAAAqgAAALoAAAC/AAAAECMAAKwAAAC9AAAAvAAAAKEAAACrAAAAuwAAAJElAACSJQAAkyUAAAIlAAAkJQAAYSUAAGIlAABWJQAAVSUAAGMlAABRJQAAVyUAAF0lAABcJQAAWyUAABAlAAAUJQAANCUAACwlAAAcJQAAACUAADwlAABeJQAAXyUAAFolAABUJQAAaSUAAGYlAABgJQAAUCUAAGwlAABnJQAAaCUAAGQlAABlJQAAWSUAAFglAABSJQAAUyUAAGslAABqJQAAGCUAAAwlAACIJQAAhCUAAIwlAACQJQAAgCUAALEDAADfAAAAkwMAAMADAACjAwAAwwMAALUAAADEAwAApgMAAJgDAACpAwAAtAMAAB4iAADGAwAAtQMAACkiAABhIgAAsQAAAGUiAABkIgAAICMAACEjAAD3AAAASCIAALAAAAAZIgAAtwAAABoiAAB/IAAAsgAAAKAlAACgAAAADAAAAAgAAAAIAAAACQAAAAsAAAAFAAAAAgAAAAkAAAAIAAAAuA4SALAOEgCoDhIAnw4SAJQOEgCPDhIAfA4SAH4OEgCHDhIAAAAAPwAAAL84Y+0+2g9JP16Yez/aD8k/aTesMWghIjO0DxQzaCGiM9sPST/bD0m/5MsWQOTLFsAAAAAAAAAAgNsPSUDbD0nAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A/CkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7/lwAPmAUAES/vAApaiwBtH20Az342AAnLJwBGT7cAnmY/AC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7/EYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj/ACdzTQAGBjEAylYVAMmocwB74mAAa4zAAAAAAAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AACAPwAAwD8AAAAA3M/RNQAAAAAAwBU/AEGgtMkACwEEAHAJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjkxLjAgKGY4Mjk3ZTM1MSAyMDI1LTEwLTI4KQZ3YWxydXMGMC4yNi4xDHdhc20tYmluZGdlbgcwLjIuMTE3AHQPdGFyZ2V0X2ZlYXR1cmVzBysPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50KwdzaW1kMTI4KwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==",self.location.href));const A=HQ();(typeof Q=="string"||typeof Request=="function"&&Q instanceof Request||typeof URL=="function"&&Q instanceof URL)&&(Q=fetch(Q));const{instance:I}=await rQ(await Q,A);return xQ(I)}var ag={},PQ=function(Q,A,I,g,B){var C=new Worker(ag[A]||(ag[A]=URL.createObjectURL(new Blob([Q+\';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'],{type:"text/javascript"}))));return C.onmessage=function(E){var D=E.data,i=D.$e$;if(i){var o=new Error(i[0]);o.code=i[1],o.stack=i[2],B(o,null)}else B(null,D)},C.postMessage(I,g),C},v=Uint8Array,ZA=Uint16Array,Yg=Int32Array,XI=new v([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),VI=new v([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Kg=new v([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),tg=function(Q,A){for(var I=new ZA(31),g=0;g<31;++g)I[g]=A+=1<>1|(m&21845)<<1;xA=(xA&52428)>>2|(xA&13107)<<2,xA=(xA&61680)>>4|(xA&3855)<<4,MI[m]=((xA&65280)>>8|(xA&255)<<8)>>1}for(var WA=function(Q,A,I){for(var g=Q.length,B=0,C=new ZA(A);B>i]=o}else for(D=new ZA(g),B=0;B>15-Q[B]);return D},GI=new v(288),m=0;m<144;++m)GI[m]=8;for(var m=144;m<256;++m)GI[m]=9;for(var m=256;m<280;++m)GI[m]=7;for(var m=280;m<288;++m)GI[m]=8;for(var xg=new v(32),m=0;m<32;++m)xg[m]=5;var rg=WA(GI,9,1),ng=WA(xg,5,1),UI=function(Q){for(var A=Q[0],I=1;IA&&(A=Q[I]);return A},hA=function(Q,A,I){var g=A/8|0;return(Q[g]|Q[g+1]<<8)>>(A&7)&I},cI=function(Q,A){var I=A/8|0;return(Q[I]|Q[I+1]<<8|Q[I+2]<<16)>>(A&7)},jI=function(Q){return(Q+7)/8|0},rA=function(Q,A,I){return(A==null||A<0)&&(A=0),(I==null||I>Q.length)&&(I=Q.length),new v(Q.subarray(A,I))},Pg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],_=function(Q,A,I){var g=new Error(A||Pg[Q]);if(g.code=Q,Error.captureStackTrace&&Error.captureStackTrace(g,_),!I)throw g;return g},mI=function(Q,A,I,g){var B=Q.length,C=g?g.length:0;if(!B||A.f&&!A.l)return I||new v(0);var E=!I,D=E||A.i!=2,i=A.i;E&&(I=new v(B*3));var o=function(GA){var RA=I.length;if(GA>RA){var kA=new v(Math.max(RA*2,GA));kA.set(I),I=kA}},w=A.f||0,G=A.p||0,R=A.b||0,y=A.l,k=A.d,F=A.m,s=A.n,h=B*8;do{if(!y){w=hA(Q,G,1);var J=hA(Q,G+1,3);if(G+=3,J)if(J==1)y=rg,k=ng,F=9,s=5;else if(J==2){var K=hA(Q,G,31)+257,p=hA(Q,G+10,15)+4,c=K+hA(Q,G+5,31)+1;G+=14;for(var U=new v(c),r=new v(19),a=0;a>4;if(S<16)U[a++]=S;else{var n=0,T=0;for(S==16?(T=3+hA(Q,G,3),G+=2,n=U[a-1]):S==17?(T=3+hA(Q,G,7),G+=3):S==18&&(T=11+hA(Q,G,127),G+=7);T--;)U[a++]=n}}var W=U.subarray(0,K),X=U.subarray(K);F=UI(W),s=UI(X),y=WA(W,F,1),k=WA(X,s,1)}else _(1);else{var S=jI(G)+4,N=Q[S-4]|Q[S-3]<<8,M=S+N;if(M>B){i&&_(0);break}D&&o(R+N),I.set(Q.subarray(S,M),R),A.b=R+=N,A.p=G=M*8,A.f=w;continue}if(G>h){i&&_(0);break}}D&&o(R+131072);for(var z=(1<>4;if(G+=n&15,G>h){i&&_(0);break}if(n||_(2),O<256)I[R++]=O;else if(O==256){u=G,y=null;break}else{var V=O-254;if(O>264){var a=O-257,b=XI[a];V=hA(Q,G,(1<>4;e||_(3),G+=e&15;var X=dg[d];if(d>3){var b=VI[d];X+=cI(Q,G)&(1<h){i&&_(0);break}D&&o(R+131072);var CA=R+V;if(R>>0},uI=function(Q,A){return gA(Q,A)+gA(Q,A+4)*4294967296},XQ=function(Q){(Q[0]!=31||Q[1]!=139||Q[2]!=8)&&_(6,"invalid gzip data");var A=Q[3],I=10;A&4&&(I+=(Q[10]|Q[11]<<8)+2);for(var g=(A>>3&1)+(A>>4&1);g>0;g-=!Q[I++]);return I+(A&2)},zI=function(){function Q(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new v(32768),this.p=new v(0),g&&this.o.set(g)}return Q.prototype.e=function(A){if(this.ondata||_(5),this.d&&_(4),!this.p.length)this.p=A;else if(A.length){var I=new v(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},Q.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=mI(this.p,this.s,this.o);this.ondata(rA(g,I,this.s.b),this.d),this.o=rA(g,this.s.b-32768),this.s.b=this.o.length,this.p=rA(this.p,this.s.p/8|0),this.s.p&=7},Q.prototype.push=function(A,I){this.e(A),this.c(I)},Q}();function VQ(Q,A,I){return I||(I=A,A={}),typeof I!="function"&&_(7),TQ(Q,A,[ZQ],function(g){return pg(LI(g.data[0],eg(g.data[1])))},1,I)}function LI(Q,A){return mI(Q,{i:2},A&&A.out,A&&A.dictionary)}var WQ=function(){function Q(A,I){this.v=1,this.r=0,zI.call(this,A,I)}return Q.prototype.push=function(A,I){if(zI.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?XQ(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}zI.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=jI(this.s.p)+9,this.s={i:0},this.o=new v(0),this.push(new v(0),I))},Q}(),vI=typeof TextDecoder<"u"&&new TextDecoder;try{vI.decode(eQ,{stream:!0})}catch{}var jQ=function(Q){for(var A="",I=0;;){var g=Q[I++],B=(g>127)+(g>223)+(g>239);if(I+B>Q.length)return{s:A,r:rA(Q,I-1)};B?B==3?(g=((g&15)<<18|(Q[I++]&63)<<12|(Q[I++]&63)<<6|Q[I++]&63)-65536,A+=String.fromCharCode(55296|g>>10,56320|g&1023)):B&1?A+=String.fromCharCode((g&31)<<6|Q[I++]&63):A+=String.fromCharCode((g&15)<<12|(Q[I++]&63)<<6|Q[I++]&63):A+=String.fromCharCode(g)}};function mQ(Q,A){if(A){for(var I="",g=0;g65558)return E(_(13,0,1),null),B;var i=MA(Q,D+8);if(i){var o=i,w=gA(Q,D+16),G=w==4294967295||o==65535;if(G){var R=gA(Q,D-12);G=gA(Q,R)==101075792,G&&(o=i=gA(Q,R+32),w=gA(Q,R+48))}for(var y=A&&A.filter,k=function(s){var h=lg(Q,w,G),J=h[0],S=h[1],N=h[2],M=h[3],K=h[4],p=h[5],c=bg(Q,p);w=K;var U=function(a,H){a?(B(),E(a,null)):(H&&(C[M]=H),--i||E(null,C))};if(!y||y({name:M,size:S,originalSize:N,compression:J}))if(!J)U(null,rA(Q,c,c+S));else if(J==8){var r=Q.subarray(c,c+S);if(N<524288||S>.8*N)try{U(null,LI(r,{out:new v(N)}))}catch(a){U(a,null)}else g.push(VQ(r,{size:N},U))}else U(_(14,"unknown compression type "+J,1),null);else U(null,null)},F=0;F65558)&&_(13);var B=MA(Q,g+8);if(!B)return{};var C=gA(Q,g+16),E=C==4294967295||B==65535;if(E){var D=gA(Q,g-12);E=gA(Q,D)==101075792,E&&(B=gA(Q,D+32),C=gA(Q,D+48))}for(var i=A&&A.filter,o=0;o=0?1:-1,S=1-h*h;if(S>Number.EPSILON){const M=Math.sqrt(S),K=Math.atan2(M,h*J);s=Math.sin(s*K)/M,D=Math.sin(D*K)/M}const N=D*J;if(i=i*s+R*N,o=o*s+y*N,w=w*s+k*N,G=G*s+F*N,s===1-D){const M=1/Math.sqrt(i*i+o*o+w*w+G*G);i*=M,o*=M,w*=M,G*=M}}A[I]=i,A[I+1]=o,A[I+2]=w,A[I+3]=G}static multiplyQuaternionsFlat(A,I,g,B,C,E){const D=g[B],i=g[B+1],o=g[B+2],w=g[B+3],G=C[E],R=C[E+1],y=C[E+2],k=C[E+3];return A[I]=D*k+w*G+i*y-o*R,A[I+1]=i*k+w*R+o*G-D*y,A[I+2]=o*k+w*y+D*R-i*G,A[I+3]=w*k-D*G-i*R-o*y,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,I,g,B){return this._x=A,this._y=I,this._z=g,this._w=B,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,I=!0){const g=A._x,B=A._y,C=A._z,E=A._order,D=Math.cos,i=Math.sin,o=D(g/2),w=D(B/2),G=D(C/2),R=i(g/2),y=i(B/2),k=i(C/2);switch(E){case"XYZ":this._x=R*w*G+o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G-R*y*k;break;case"YXZ":this._x=R*w*G+o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G+R*y*k;break;case"ZXY":this._x=R*w*G-o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G-R*y*k;break;case"ZYX":this._x=R*w*G-o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G+R*y*k;break;case"YZX":this._x=R*w*G+o*y*k,this._y=o*y*G+R*w*k,this._z=o*w*k-R*y*G,this._w=o*w*G-R*y*k;break;case"XZY":this._x=R*w*G-o*y*k,this._y=o*y*G-R*w*k,this._z=o*w*k+R*y*G,this._w=o*w*G+R*y*k;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+E)}return I===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,I){const g=I/2,B=Math.sin(g);return this._x=A.x*B,this._y=A.y*B,this._z=A.z*B,this._w=Math.cos(g),this._onChangeCallback(),this}setFromRotationMatrix(A){const I=A.elements,g=I[0],B=I[4],C=I[8],E=I[1],D=I[5],i=I[9],o=I[2],w=I[6],G=I[10],R=g+D+G;if(R>0){const y=.5/Math.sqrt(R+1);this._w=.25/y,this._x=(w-i)*y,this._y=(C-o)*y,this._z=(E-B)*y}else if(g>D&&g>G){const y=2*Math.sqrt(1+g-D-G);this._w=(w-i)/y,this._x=.25*y,this._y=(B+E)/y,this._z=(C+o)/y}else if(D>G){const y=2*Math.sqrt(1+D-g-G);this._w=(C-o)/y,this._x=(B+E)/y,this._y=.25*y,this._z=(i+w)/y}else{const y=2*Math.sqrt(1+G-g-D);this._w=(E-B)/y,this._x=(C+o)/y,this._y=(i+w)/y,this._z=.25*y}return this._onChangeCallback(),this}setFromUnitVectors(A,I){let g=A.dot(I)+1;return g<1e-8?(g=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=g):(this._x=0,this._y=-A.z,this._z=A.y,this._w=g)):(this._x=A.y*I.z-A.z*I.y,this._y=A.z*I.x-A.x*I.z,this._z=A.x*I.y-A.y*I.x,this._w=g),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(oA(this.dot(A),-1,1)))}rotateTowards(A,I){const g=this.angleTo(A);if(g===0)return this;const B=Math.min(1,I/g);return this.slerp(A,B),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,I){const g=A._x,B=A._y,C=A._z,E=A._w,D=I._x,i=I._y,o=I._z,w=I._w;return this._x=g*w+E*D+B*o-C*i,this._y=B*w+E*i+C*D-g*o,this._z=C*w+E*o+g*i-B*D,this._w=E*w-g*D-B*i-C*o,this._onChangeCallback(),this}slerp(A,I){if(I===0)return this;if(I===1)return this.copy(A);const g=this._x,B=this._y,C=this._z,E=this._w;let D=E*A._w+g*A._x+B*A._y+C*A._z;if(D<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,D=-D):this.copy(A),D>=1)return this._w=E,this._x=g,this._y=B,this._z=C,this;const i=1-D*D;if(i<=Number.EPSILON){const y=1-I;return this._w=y*E+I*this._w,this._x=y*g+I*this._x,this._y=y*B+I*this._y,this._z=y*C+I*this._z,this.normalize(),this}const o=Math.sqrt(i),w=Math.atan2(o,D),G=Math.sin((1-I)*w)/o,R=Math.sin(I*w)/o;return this._w=E*G+this._w*R,this._x=g*G+this._x*R,this._y=B*G+this._y*R,this._z=C*G+this._z*R,this._onChangeCallback(),this}slerpQuaternions(A,I,g){return this.copy(A).slerp(I,g)}random(){const A=2*Math.PI*Math.random(),I=2*Math.PI*Math.random(),g=Math.random(),B=Math.sqrt(1-g),C=Math.sqrt(g);return this.set(B*Math.sin(A),B*Math.cos(A),C*Math.sin(I),C*Math.cos(I))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,I=0){return this._x=A[I],this._y=A[I+1],this._z=A[I+2],this._w=A[I+3],this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._w,A}fromBufferAttribute(A,I){return this._x=A.getX(I),this._y=A.getY(I),this._z=A.getZ(I),this._w=A.getW(I),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class x{constructor(A=0,I=0,g=0){x.prototype.isVector3=!0,this.x=A,this.y=I,this.z=g}set(A,I,g){return g===void 0&&(g=this.z),this.x=A,this.y=I,this.z=g,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,I){return this.x=A.x*I.x,this.y=A.y*I.y,this.z=A.z*I.z,this}applyEuler(A){return this.applyQuaternion(Vg.setFromEuler(A))}applyAxisAngle(A,I){return this.applyQuaternion(Vg.setFromAxisAngle(A,I))}applyMatrix3(A){const I=this.x,g=this.y,B=this.z,C=A.elements;return this.x=C[0]*I+C[3]*g+C[6]*B,this.y=C[1]*I+C[4]*g+C[7]*B,this.z=C[2]*I+C[5]*g+C[8]*B,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const I=this.x,g=this.y,B=this.z,C=A.elements,E=1/(C[3]*I+C[7]*g+C[11]*B+C[15]);return this.x=(C[0]*I+C[4]*g+C[8]*B+C[12])*E,this.y=(C[1]*I+C[5]*g+C[9]*B+C[13])*E,this.z=(C[2]*I+C[6]*g+C[10]*B+C[14])*E,this}applyQuaternion(A){const I=this.x,g=this.y,B=this.z,C=A.x,E=A.y,D=A.z,i=A.w,o=2*(E*B-D*g),w=2*(D*I-C*B),G=2*(C*g-E*I);return this.x=I+i*o+E*G-D*w,this.y=g+i*w+D*o-C*G,this.z=B+i*G+C*w-E*o,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const I=this.x,g=this.y,B=this.z,C=A.elements;return this.x=C[0]*I+C[4]*g+C[8]*B,this.y=C[1]*I+C[5]*g+C[9]*B,this.z=C[2]*I+C[6]*g+C[10]*B,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,I){return this.x=oA(this.x,A.x,I.x),this.y=oA(this.y,A.y,I.y),this.z=oA(this.z,A.z,I.z),this}clampScalar(A,I){return this.x=oA(this.x,A,I),this.y=oA(this.y,A,I),this.z=oA(this.z,A,I),this}clampLength(A,I){const g=this.length();return this.divideScalar(g||1).multiplyScalar(oA(g,A,I))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this}lerpVectors(A,I,g){return this.x=A.x+(I.x-A.x)*g,this.y=A.y+(I.y-A.y)*g,this.z=A.z+(I.z-A.z)*g,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,I){const g=A.x,B=A.y,C=A.z,E=I.x,D=I.y,i=I.z;return this.x=B*i-C*D,this.y=C*E-g*i,this.z=g*D-B*E,this}projectOnVector(A){const I=A.lengthSq();if(I===0)return this.set(0,0,0);const g=A.dot(this)/I;return this.copy(A).multiplyScalar(g)}projectOnPlane(A){return Ag.copy(this).projectOnVector(A),this.sub(Ag)}reflect(A){return this.sub(Ag.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;const g=this.dot(A)/I;return Math.acos(oA(g,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const I=this.x-A.x,g=this.y-A.y,B=this.z-A.z;return I*I+g*g+B*B}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,I,g){const B=Math.sin(I)*A;return this.x=B*Math.sin(g),this.y=Math.cos(I)*A,this.z=B*Math.cos(g),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,I,g){return this.x=A*Math.sin(I),this.y=g,this.z=A*Math.cos(I),this}setFromMatrixPosition(A){const I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this}setFromMatrixScale(A){const I=this.setFromMatrixColumn(A,0).length(),g=this.setFromMatrixColumn(A,1).length(),B=this.setFromMatrixColumn(A,2).length();return this.x=I,this.y=g,this.z=B,this}setFromMatrixColumn(A,I){return this.fromArray(A.elements,I*4)}setFromMatrix3Column(A,I){return this.fromArray(A.elements,I*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,I=Math.random()*2-1,g=Math.sqrt(1-I*I);return this.x=g*Math.cos(A),this.y=I,this.z=g*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ag=new x,Vg=new nA;class oI{constructor(A,I,g,B,C,E,D,i,o){oI.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,I,g,B,C,E,D,i,o)}set(A,I,g,B,C,E,D,i,o){const w=this.elements;return w[0]=A,w[1]=B,w[2]=D,w[3]=I,w[4]=C,w[5]=i,w[6]=g,w[7]=E,w[8]=o,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const I=this.elements,g=A.elements;return I[0]=g[0],I[1]=g[1],I[2]=g[2],I[3]=g[3],I[4]=g[4],I[5]=g[5],I[6]=g[6],I[7]=g[7],I[8]=g[8],this}extractBasis(A,I,g){return A.setFromMatrix3Column(this,0),I.setFromMatrix3Column(this,1),g.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const I=A.elements;return this.set(I[0],I[4],I[8],I[1],I[5],I[9],I[2],I[6],I[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){const g=A.elements,B=I.elements,C=this.elements,E=g[0],D=g[3],i=g[6],o=g[1],w=g[4],G=g[7],R=g[2],y=g[5],k=g[8],F=B[0],s=B[3],h=B[6],J=B[1],S=B[4],N=B[7],M=B[2],K=B[5],p=B[8];return C[0]=E*F+D*J+i*M,C[3]=E*s+D*S+i*K,C[6]=E*h+D*N+i*p,C[1]=o*F+w*J+G*M,C[4]=o*s+w*S+G*K,C[7]=o*h+w*N+G*p,C[2]=R*F+y*J+k*M,C[5]=R*s+y*S+k*K,C[8]=R*h+y*N+k*p,this}multiplyScalar(A){const I=this.elements;return I[0]*=A,I[3]*=A,I[6]*=A,I[1]*=A,I[4]*=A,I[7]*=A,I[2]*=A,I[5]*=A,I[8]*=A,this}determinant(){const A=this.elements,I=A[0],g=A[1],B=A[2],C=A[3],E=A[4],D=A[5],i=A[6],o=A[7],w=A[8];return I*E*w-I*D*o-g*C*w+g*D*i+B*C*o-B*E*i}invert(){const A=this.elements,I=A[0],g=A[1],B=A[2],C=A[3],E=A[4],D=A[5],i=A[6],o=A[7],w=A[8],G=w*E-D*o,R=D*i-w*C,y=o*C-E*i,k=I*G+g*R+B*y;if(k===0)return this.set(0,0,0,0,0,0,0,0,0);const F=1/k;return A[0]=G*F,A[1]=(B*o-w*g)*F,A[2]=(D*g-B*E)*F,A[3]=R*F,A[4]=(w*I-B*i)*F,A[5]=(B*C-D*I)*F,A[6]=y*F,A[7]=(g*i-o*I)*F,A[8]=(E*I-g*C)*F,this}transpose(){let A;const I=this.elements;return A=I[1],I[1]=I[3],I[3]=A,A=I[2],I[2]=I[6],I[6]=A,A=I[5],I[5]=I[7],I[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const I=this.elements;return A[0]=I[0],A[1]=I[3],A[2]=I[6],A[3]=I[1],A[4]=I[4],A[5]=I[7],A[6]=I[2],A[7]=I[5],A[8]=I[8],this}setUvTransform(A,I,g,B,C,E,D){const i=Math.cos(C),o=Math.sin(C);return this.set(g*i,g*o,-g*(i*E+o*D)+E+A,-B*o,B*i,-B*(-o*E+i*D)+D+I,0,0,1),this}scale(A,I){return this.premultiply(Ig.makeScale(A,I)),this}rotate(A){return this.premultiply(Ig.makeRotation(-A)),this}translate(A,I){return this.premultiply(Ig.makeTranslation(A,I)),this}makeTranslation(A,I){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,I,0,0,1),this}makeRotation(A){const I=Math.cos(A),g=Math.sin(A);return this.set(I,-g,0,g,I,0,0,0,1),this}makeScale(A,I){return this.set(A,0,0,0,I,0,0,0,1),this}equals(A){const I=this.elements,g=A.elements;for(let B=0;B<9;B++)if(I[B]!==g[B])return!1;return!0}fromArray(A,I=0){for(let g=0;g<9;g++)this.elements[g]=A[g+I];return this}toArray(A=[],I=0){const g=this.elements;return A[I]=g[0],A[I+1]=g[1],A[I+2]=g[2],A[I+3]=g[3],A[I+4]=g[4],A[I+5]=g[5],A[I+6]=g[6],A[I+7]=g[7],A[I+8]=g[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Ig=new oI,Wg={};function jg(Q){Q in Wg||(Wg[Q]=!0,console.warn(Q))}const mg=new oI().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),ug=new oI().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function AB(){const Q={enabled:!0,workingColorSpace:Tg,spaces:{},convert:function(B,C,E){return this.enabled===!1||C===E||!C||!E||(this.spaces[C].transfer===_I&&(B.r=jA(B.r),B.g=jA(B.g),B.b=jA(B.b)),this.spaces[C].primaries!==this.spaces[E].primaries&&(B.applyMatrix3(this.spaces[C].toXYZ),B.applyMatrix3(this.spaces[E].fromXYZ)),this.spaces[E].transfer===_I&&(B.r=mA(B.r),B.g=mA(B.g),B.b=mA(B.b))),B},workingToColorSpace:function(B,C){return this.convert(B,this.workingColorSpace,C)},colorSpaceToWorking:function(B,C){return this.convert(B,C,this.workingColorSpace)},getPrimaries:function(B){return this.spaces[B].primaries},getTransfer:function(B){return B===_Q?Xg:this.spaces[B].transfer},getToneMappingMode:function(B){return this.spaces[B].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(B,C=this.workingColorSpace){return B.fromArray(this.spaces[C].luminanceCoefficients)},define:function(B){Object.assign(this.spaces,B)},_getMatrix:function(B,C,E){return B.copy(this.spaces[C].toXYZ).multiply(this.spaces[E].fromXYZ)},_getDrawingBufferColorSpace:function(B){return this.spaces[B].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(B=this.workingColorSpace){return this.spaces[B].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(B,C){return jg("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),Q.workingToColorSpace(B,C)},toWorkingColorSpace:function(B,C){return jg("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),Q.colorSpaceToWorking(B,C)}},A=[.64,.33,.3,.6,.15,.06],I=[.2126,.7152,.0722],g=[.3127,.329];return Q.define({[Tg]:{primaries:A,whitePoint:g,transfer:Xg,toXYZ:mg,fromXYZ:ug,luminanceCoefficients:I,workingColorSpaceConfig:{unpackColorSpace:UA},outputColorSpaceConfig:{drawingBufferColorSpace:UA}},[UA]:{primaries:A,whitePoint:g,transfer:_I,toXYZ:mg,fromXYZ:ug,luminanceCoefficients:I,outputColorSpaceConfig:{drawingBufferColorSpace:UA}}}),Q}const cA=AB();function jA(Q){return Q<.04045?Q*.0773993808:Math.pow(Q*.9478672986+.0521327014,2.4)}function mA(Q){return Q<.0031308?Q*12.92:1.055*Math.pow(Q,.41666)-.055}class zg{constructor(A=new x(1/0,1/0,1/0),I=new x(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=I}set(A,I){return this.min.copy(A),this.max.copy(I),this}setFromArray(A){this.makeEmpty();for(let I=0,g=A.length;I=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,I){return I.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,HA),HA.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let I,g;return A.normal.x>0?(I=A.normal.x*this.min.x,g=A.normal.x*this.max.x):(I=A.normal.x*this.max.x,g=A.normal.x*this.min.x),A.normal.y>0?(I+=A.normal.y*this.min.y,g+=A.normal.y*this.max.y):(I+=A.normal.y*this.max.y,g+=A.normal.y*this.min.y),A.normal.z>0?(I+=A.normal.z*this.min.z,g+=A.normal.z*this.max.z):(I+=A.normal.z*this.max.z,g+=A.normal.z*this.min.z),I<=-A.constant&&g>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(yI),YI.subVectors(this.max,yI),uA.subVectors(A.a,yI),zA.subVectors(A.b,yI),vA.subVectors(A.c,yI),PA.subVectors(zA,uA),fA.subVectors(vA,zA),TA.subVectors(uA,vA);let I=[0,-PA.z,PA.y,0,-fA.z,fA.y,0,-TA.z,TA.y,PA.z,0,-PA.x,fA.z,0,-fA.x,TA.z,0,-TA.x,-PA.y,PA.x,0,-fA.y,fA.x,0,-TA.y,TA.x,0];return!gg(I,uA,zA,vA,YI)||(I=[1,0,0,0,1,0,0,0,1],!gg(I,uA,zA,vA,YI))?!1:(KI.crossVectors(PA,fA),I=[KI.x,KI.y,KI.z],gg(I,uA,zA,vA,YI))}clampPoint(A,I){return I.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,HA).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(HA).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(tA[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),tA[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),tA[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),tA[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),tA[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),tA[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),tA[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),tA[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(tA),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(A){return this.min.fromArray(A.min),this.max.fromArray(A.max),this}}const tA=[new x,new x,new x,new x,new x,new x,new x,new x],HA=new x,aI=new zg,uA=new x,zA=new x,vA=new x,PA=new x,fA=new x,TA=new x,yI=new x,YI=new x,KI=new x,XA=new x;function gg(Q,A,I,g,B){for(let C=0,E=Q.length-3;C<=E;C+=3){XA.fromArray(Q,C);const D=B.x*Math.abs(XA.x)+B.y*Math.abs(XA.y)+B.z*Math.abs(XA.z),i=A.dot(XA),o=I.dot(XA),w=g.dot(XA);if(Math.max(-Math.max(i,o,w),Math.min(i,o,w))>D)return!1}return!0}const vg={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},pA={h:0,s:0,l:0},tI={h:0,s:0,l:0};function Qg(Q,A,I){return I<0&&(I+=1),I>1&&(I-=1),I<1/6?Q+(A-Q)*6*I:I<1/2?A:I<2/3?Q+(A-Q)*6*(2/3-I):Q}class Bg{constructor(A,I,g){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,I,g)}set(A,I,g){if(I===void 0&&g===void 0){const B=A;B&&B.isColor?this.copy(B):typeof B=="number"?this.setHex(B):typeof B=="string"&&this.setStyle(B)}else this.setRGB(A,I,g);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,I=UA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,cA.colorSpaceToWorking(this,I),this}setRGB(A,I,g,B=cA.workingColorSpace){return this.r=A,this.g=I,this.b=g,cA.colorSpaceToWorking(this,B),this}setHSL(A,I,g,B=cA.workingColorSpace){if(A=$Q(A,1),I=oA(I,0,1),g=oA(g,0,1),I===0)this.r=this.g=this.b=g;else{const C=g<=.5?g*(1+I):g+I-g*I,E=2*g-C;this.r=Qg(E,C,A+1/3),this.g=Qg(E,C,A),this.b=Qg(E,C,A-1/3)}return cA.colorSpaceToWorking(this,B),this}setStyle(A,I=UA){function g(C){C!==void 0&&parseFloat(C)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let B;if(B=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let C;const E=B[1],D=B[2];switch(E){case"rgb":case"rgba":if(C=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setRGB(Math.min(255,parseInt(C[1],10))/255,Math.min(255,parseInt(C[2],10))/255,Math.min(255,parseInt(C[3],10))/255,I);if(C=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setRGB(Math.min(100,parseInt(C[1],10))/100,Math.min(100,parseInt(C[2],10))/100,Math.min(100,parseInt(C[3],10))/100,I);break;case"hsl":case"hsla":if(C=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(D))return g(C[4]),this.setHSL(parseFloat(C[1])/360,parseFloat(C[2])/100,parseFloat(C[3])/100,I);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(B=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const C=B[1],E=C.length;if(E===3)return this.setRGB(parseInt(C.charAt(0),16)/15,parseInt(C.charAt(1),16)/15,parseInt(C.charAt(2),16)/15,I);if(E===6)return this.setHex(parseInt(C,16),I);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,I);return this}setColorName(A,I=UA){const g=vg[A.toLowerCase()];return g!==void 0?this.setHex(g,I):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=jA(A.r),this.g=jA(A.g),this.b=jA(A.b),this}copyLinearToSRGB(A){return this.r=mA(A.r),this.g=mA(A.g),this.b=mA(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=UA){return cA.workingToColorSpace(BA.copy(this),A),Math.round(oA(BA.r*255,0,255))*65536+Math.round(oA(BA.g*255,0,255))*256+Math.round(oA(BA.b*255,0,255))}getHexString(A=UA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,I=cA.workingColorSpace){cA.workingToColorSpace(BA.copy(this),I);const g=BA.r,B=BA.g,C=BA.b,E=Math.max(g,B,C),D=Math.min(g,B,C);let i,o;const w=(D+E)/2;if(D===E)i=0,o=0;else{const G=E-D;switch(o=w<=.5?G/(E+D):G/(2-E-D),E){case g:i=(B-C)/G+(B(Q.PLY="ply",Q.SPZ="spz",Q.SPLAT="splat",Q.KSPLAT="ksplat",Q.PCSOGS="pcsogs",Q.PCSOGSZIP="pcsogszip",Q.RAD="rad",Q))(wA||{});function QB(Q){var C;let A=!1;const I=Q.split(`\n`).map(E=>{const D=E.trimEnd();return A?D:D.length>0?(A=!0,D):null}).filter(E=>E!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(C=I[0].match(/^\\s*/))==null?void 0:C[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(E=>E.replace(B,""))}function BB(Q){return QB(Q).join(`\n`)}const Cg=new Float32Array(1),QQ=new Uint32Array(Cg.buffer),Eg="Float16Array"in globalThis,RI=Eg?new globalThis.Float16Array(1):null,BQ=new Uint16Array(RI==null?void 0:RI.buffer);function CB(Q){const A=Math.sqrt(Q.reduce((I,g)=>I+g*g,0));return Q.map(I=>I/A)}const $A=Eg?EB:DB,AA=Eg?iB:wB;function EB(Q){return RI[0]=Q,BQ[0]}function DB(Q){Cg[0]=Q;const A=QQ[0],I=A>>31&1,g=A>>23&255,B=A&8388607,C=I<<15;if(g===255)return B!==0?C|32767:C|31744;const E=g-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const i=(B|8388608)>>1-E+13;return C|i}const D=B>>13;return C|E<<10|D}function iB(Q){return BQ[0]=Q,RI[0]}function wB(Q){const A=Q>>15&1,I=Q>>10&31,g=Q&1023;let B;if(I===0)if(g===0)B=A<<31;else{let C=g,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const D=E+127,i=C<<13;B=A<<31|D<<23|i}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=I-15+127,E=g<<13;B=A<<31|C<<23|E}return QQ[0]=B,Cg[0]}function SA(Q){return Math.max(0,Math.min(255,Math.round(Q*255)))}function GB(Q){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(Q),A}function Dg(Q,A,I,g,B,C,E,D,i,o,w,G,R,y,k,F,s){const h=(s==null?void 0:s.rgbMin)??0,S=((s==null?void 0:s.rgbMax)??1)-h,N=SA((y-h)/S),M=SA((k-h)/S),K=SA((F-h)/S),p=SA(s!=null&&s.lodOpacity?.5*R:R),c=GQ(DQ.set(i,o,w,G)),U=c&255,r=c>>>8&255,a=c>>>16&255,H=(s==null?void 0:s.lnScaleMin)??_g,t=254/(((s==null?void 0:s.lnScaleMax)??$g)-H),Y=C<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(C)-H)*t)+1)),n=E<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(E)-H)*t)+1)),T=D<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(D)-H)*t)+1)),W=$A(I),X=$A(g),z=$A(B),j=A*4;Q[j]=N|M<<8|K<<16|p<<24,Q[j+1]=W|X<<16,Q[j+2]=z|U<<16|r<<24,Q[j+3]=Y|n<<8|T<<16|a<<24}function CQ(Q,A,I,g,B){const C=$A(I),E=$A(g),D=$A(B),i=A*4;Q[i+1]=C|E<<16,Q[i+2]=D|Q[i+2]&4294901760}function EQ(Q,A,I,g,B,C){const E=(C==null?void 0:C.lnScaleMin)??_g,i=254/(((C==null?void 0:C.lnScaleMax)??$g)-E),o=I<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(I)-E)*i)+1)),w=g<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(g)-E)*i)+1)),G=B<_A?0:Math.min(255,Math.max(1,Math.round((Math.log(B)-E)*i)+1)),R=A*4;Q[R+3]=o|w<<8|G<<16|Q[R+3]&4278190080}const DQ=new nA;function iQ(Q,A,I,g,B,C){const E=GQ(DQ.set(I,g,B,C)),D=E&255,i=E>>>8&255,o=E>>>16&255,w=A*4;Q[w+2]=Q[w+2]&65535|D<<16|i<<24,Q[w+3]=Q[w+3]&16777215|o<<24}function oB(Q,A,I,g,B,C,E){const D=(E==null?void 0:E.rgbMin)??0,o=((E==null?void 0:E.rgbMax)??1)-D,w=SA((I-D)/o),G=SA((g-D)/o),R=SA((B-D)/o),y=SA(E!=null&&E.lodOpacity?.5*C:C),k=A*4;Q[k]=w|G<<8|R<<16|y<<24}function yB(Q,A,I,g,B,C){const E=(C==null?void 0:C.rgbMin)??0,i=((C==null?void 0:C.rgbMax)??1)-E,o=SA((I-E)/i),w=SA((g-E)/i),G=SA((B-E)/i),R=A*4;Q[R]=o|w<<8|G<<16|Q[R]&4278190080}function RB(Q,A,I){const g=SA(I),B=A*4;Q[B]=Q[B]&16777215|g<<24}new x,new x,new Bg;function kB(Q){const A=AQ,I=Math.max(gQ,Math.min(IQ,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function qI(Q){const A=AQ,I=Math.max(gQ,Math.min(IQ,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I));return A*I*g}BB(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);const FB=new nA,wQ=new x;function GQ(Q){const A=FB.copy(Q).normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?wQ.set(1,0,0):wQ.set(A.x,A.y,A.z).divideScalar(g),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,D=B.y/C;if(B.z<0){const y=E;E=(1-Math.abs(D))*(E>=0?1:-1),D=(1-Math.abs(y))*(D>=0?1:-1)}const i=E*.5+.5,o=D*.5+.5,w=Math.round(i*255),G=Math.round(o*255);return Math.round(I*(255/Math.PI))<<16|G<<8|w}function dI(Q,A,I,g){const B=Math.round(Math.max(-127,Math.min(127,Q*127))),C=Math.round(Math.max(-127,Math.min(127,A*127))),E=Math.round(Math.max(-127,Math.min(127,I*127))),D=Math.round(Math.max(-127,Math.min(127,g*127)));return B&255|(C&255)<<8|(E&255)<<16|(D&255)<<24}function xI(Q,A,I,g){const C=63/((g==null?void 0:g.sh1Max)??1),E=A*2;for(let D=0;D<9;++D){const i=I[D]*C,o=Math.round(Math.max(-63,Math.min(63,i)))&127,w=D*7,G=w+7,R=Math.floor(w/32),y=w-R*32,k=o<R*32+32){const F=o>>>32-y&4294967295;Q[E+R+1]|=F}}}function rI(Q,A,I,g){const C=1/((g==null?void 0:g.sh2Max)??1);Q[A*4+0]=dI(I[0]*C,I[1]*C,I[2]*C,I[3]*C),Q[A*4+1]=dI(I[4]*C,I[5]*C,I[6]*C,I[7]*C),Q[A*4+2]=dI(I[8]*C,I[9]*C,I[10]*C,I[11]*C),Q[A*4+3]=dI(I[12]*C,I[13]*C,I[14]*C,0)}function nI(Q,A,I,g){const C=31/((g==null?void 0:g.sh3Max)??1),E=A*4;for(let D=0;D<21;++D){const i=I[D]*C,o=Math.round(Math.max(-31,Math.min(31,i)))&63,w=D*6,G=w+6,R=Math.floor(w/32),y=w-R*32,k=o<R*32+32){const F=o>>>32-y&4294967295;Q[E+R+1]|=F}}}function hB(Q,A){const I=[];let g=0,B=null;const C=new WQ((i,o)=>{if(I.push(i),g+=i.length,o||g>=A){const w=new Uint8Array(g);let G=0;for(const R of I)w.set(R,G),G+=R.length;B=w.slice(0,A)}}),E=1024;let D=0;for(;B==null&&D{I=C,g=qI(I),B=new Uint32Array(g*4)},(C,E,D,i,o,w,G,R,y,k,F,s,h,J,S)=>{Dg(B,C,E,D,i,o,w,G,R,y,k,F,s,h,J,S,A)}),{packedArray:B,numSplats:I}}const PI={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},yQ={0:0,1:9,2:24,3:45};function NB(Q,A,I,g){var F;let E=0;const D=new DataView(Q.buffer,E,4096);E+=4096;const i=D.getUint8(0),o=D.getUint8(1);if(i!==0||o<1)throw new Error(`Unsupported .ksplat version: ${i}.${o}`);const w=D.getUint32(4,!0);D.getUint32(16,!0);const G=D.getUint16(20,!0);if(G<0||G>2)throw new Error(`Invalid .ksplat compression level: ${G}`);const R=D.getFloat32(36,!0)||-1.5,y=D.getFloat32(40,!0)||1.5;let k=4096+w*1024;for(let s=0;s=1?new Float32Array(3*3):void 0,kA=Y>=2?new Float32Array(5*3):void 0,qA=Y>=3?new Float32Array(7*3):void 0,FA=p/2/U,sA=k+q,NA=k+t,P=new DataView(Q.buffer,NA,d),DA=new Float32Array(Q.buffer,sA,K*3),$=new Uint32Array(Q.buffer,k,H);let Z=r,bA=a;for(let iA=0;iA=bA+KA&&(Z+=1,bA+=KA),JA=Z}const IA=G===0?P.getFloat32(f+0,!0):(P.getUint16(f+0,!0)-U)*FA+DA[3*JA+0],l=G===0?P.getFloat32(f+4,!0):(P.getUint16(f+2,!0)-U)*FA+DA[3*JA+1],aA=G===0?P.getFloat32(f+8,!0):(P.getUint16(f+4,!0)-U)*FA+DA[3*JA+2],FI=G===0?P.getFloat32(f+u+0,!0):AA(P.getUint16(f+u+0,!0)),hI=G===0?P.getFloat32(f+u+4,!0):AA(P.getUint16(f+u+2,!0)),Rg=G===0?P.getFloat32(f+u+8,!0):AA(P.getUint16(f+u+4,!0)),kg=G===0?P.getFloat32(f+O+0,!0):AA(P.getUint16(f+O+0,!0)),Fg=G===0?P.getFloat32(f+O+4,!0):AA(P.getUint16(f+O+2,!0)),hg=G===0?P.getFloat32(f+O+8,!0):AA(P.getUint16(f+O+4,!0)),Sg=G===0?P.getFloat32(f+O+12,!0):AA(P.getUint16(f+O+6,!0)),sg=P.getUint8(f+V+0)/255,Ng=P.getUint8(f+V+1)/255,Jg=P.getUint8(f+V+2)/255,Mg=P.getUint8(f+V+3)/255;if(I(iA,IA,l,aA,FI,hI,Rg,Fg,hg,Sg,kg,Mg,sg,Ng,Jg),Y>=1&&RA){for(const[KA,VA]of EA.entries())RA[KA]=h(f,VA);if(kA)for(const[KA,VA]of yA.entries())kA[KA]=h(f,VA);if(qA)for(const[KA,VA]of GA.entries())qA[KA]=h(f,VA);g==null||g(iA,RA,kA,qA)}}k+=CA}}function JB(Q,A){var J;let B=0;const C=new DataView(Q.buffer,B,4096);B+=4096;const E=C.getUint8(0),D=C.getUint8(1);if(E!==0||D<1)throw new Error(`Unsupported .ksplat version: ${E}.${D}`);const i=C.getUint32(4,!0),o=C.getUint32(16,!0),w=C.getUint16(20,!0);if(w<0||w>2)throw new Error(`Invalid .ksplat compression level: ${w}`);const G=C.getFloat32(36,!0)||-1.5,R=C.getFloat32(40,!0)||1.5,y=o,k=qI(y),F=new Uint32Array(k*4),s={};let h=4096+i*1024;for(let S=0;S=1?new Float32Array(3*3):void 0,sA=W>=2?new Float32Array(5*3):void 0,NA=W>=3?new Float32Array(7*3):void 0,P=r/2/H,DA=h+n,$=h+T,Z=new DataView(Q.buffer,$,yA),bA=new Float32Array(Q.buffer,DA,U*3),iA=new Uint32Array(Q.buffer,h,Y);let f=q,JA=t;for(let IA=0;IA=JA+lA&&(f+=1,JA+=lA),aA=f}const FI=w===0?Z.getFloat32(l+0,!0):(Z.getUint16(l+0,!0)-H)*P+bA[3*aA+0],hI=w===0?Z.getFloat32(l+4,!0):(Z.getUint16(l+2,!0)-H)*P+bA[3*aA+1],Rg=w===0?Z.getFloat32(l+8,!0):(Z.getUint16(l+4,!0)-H)*P+bA[3*aA+2],kg=w===0?Z.getFloat32(l+b+0,!0):AA(Z.getUint16(l+b+0,!0)),Fg=w===0?Z.getFloat32(l+b+4,!0):AA(Z.getUint16(l+b+2,!0)),hg=w===0?Z.getFloat32(l+b+8,!0):AA(Z.getUint16(l+b+4,!0)),Sg=w===0?Z.getFloat32(l+e+0,!0):AA(Z.getUint16(l+e+0,!0)),sg=w===0?Z.getFloat32(l+e+4,!0):AA(Z.getUint16(l+e+2,!0)),Ng=w===0?Z.getFloat32(l+e+8,!0):AA(Z.getUint16(l+e+4,!0)),Jg=w===0?Z.getFloat32(l+e+12,!0):AA(Z.getUint16(l+e+6,!0)),Mg=Z.getUint8(l+d+0)/255,KA=Z.getUint8(l+d+1)/255,VA=Z.getUint8(l+d+2)/255,XB=Z.getUint8(l+d+3)/255;if(Dg(F,IA,FI,hI,Rg,kg,Fg,hg,sg,Ng,Jg,Sg,XB,Mg,KA,VA,A),W>=1){if(FA){s.sh1||(s.sh1=new Uint32Array(y*2));for(const[lA,SI]of RA.entries())FA[lA]=N(l,SI);xI(s.sh1,IA,FA,A)}if(sA){s.sh2||(s.sh2=new Uint32Array(y*4));for(const[lA,SI]of kA.entries())sA[lA]=N(l,SI);rI(s.sh2,IA,sA,A)}if(NA){s.sh3||(s.sh3=new Uint32Array(y*4));for(const[lA,SI]of qA.entries())NA[lA]=N(l,SI);nI(s.sh3,IA,NA,A)}}}h+=GA}return{packedArray:F,numSplats:y,extra:s}}const RQ=["char","uchar","short","ushort","int","uint","float","double"],II=class II{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:E=>{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header\n`;for(;;){const{value:E,done:D}=await I.read();if(D)throw new Error("Failed to read header");this.header+=E;const i=this.header.indexOf(g);if(i>=0){this.header=this.header.slice(0,i+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(`\n`).forEach((E,D)=>{const i=E.trim();if(D===0){if(i!=="ply")throw new Error("Invalid PLY header");return}if(i.length===0)return;const o=i.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(i.slice(8));break;case"element":{const w=o[1];C={name:w,count:Number.parseInt(o[2]),properties:{}},this.elements[w]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");o[1]==="list"?C.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:C.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:D}=C,i=cB(D),o=HB(D,this.littleEndian),w=A(C)??(()=>{});for(let G=0;G[0,1,2].map((N,M)=>S+M*h/3)),D=new Array(5).fill(null).flatMap((J,S)=>[0,1,2].map((N,M)=>3+S+M*h/3)),i=new Array(7).fill(null).flatMap((J,S)=>[0,1,2].map((N,M)=>8+S+M*h/3)),o=C>=1?new Float32Array(3*3):void 0,w=C>=2?new Float32Array(5*3):void 0,G=C>=3?new Float32Array(7*3):void 0}function y(h,J){if(!o)throw new Error("Missing sh1");const S=J.f_rest;for(let N=0;N{const{min_x:n,min_y:T,min_z:W,max_x:X,max_y:z,max_z:j,min_scale_x:u,min_scale_y:O,min_scale_z:V,max_scale_x:b,max_scale_y:e,max_scale_z:d,min_r:CA,min_g:EA,min_b:yA,max_r:GA,max_g:RA,max_b:kA}=Y;B.push({min_x:n,min_y:T,min_z:W,max_x:X,max_y:z,max_z:j,min_scale_x:u,min_scale_y:O,min_scale_z:V,max_scale_x:b,max_scale_y:e,max_scale_z:d,min_r:CA,min_g:EA,min_b:yA,max_r:GA,max_g:RA,max_b:kA})}}function F(h){if(I&&h.name==="sh")return C=wg(h.properties),R(),y;if(h.name!=="vertex")return null;const{packed_position:J,packed_rotation:S,packed_scale:N,packed_color:M}=h.properties;if(!J||!S||!N||!M)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const K=Math.sqrt(2);return(p,c)=>{const U=B[p>>>8];if(U==null)throw new Error("Missing PLY chunk");const{min_x:r,min_y:a,min_z:H,max_x:q,max_y:t,max_z:Y,min_scale_x:n,min_scale_y:T,min_scale_z:W,max_scale_x:X,max_scale_y:z,max_scale_z:j,min_r:u,min_g:O,min_b:V,max_r:b,max_g:e,max_b:d}=U,{packed_position:CA,packed_rotation:EA,packed_scale:yA,packed_color:GA}=c,RA=(CA>>>21&2047)/2047*(q-r)+r,kA=(CA>>>11&1023)/1023*(t-a)+a,qA=(CA&2047)/2047*(Y-H)+H,FA=((EA>>>20&1023)/1023-.5)*K,sA=((EA>>>10&1023)/1023-.5)*K,NA=((EA&1023)/1023-.5)*K,P=Math.sqrt(Math.max(0,1-FA*FA-sA*sA-NA*NA)),DA=EA>>>30,$=DA===0?FA:DA===1?P:sA,Z=DA<=1?sA:DA===2?P:NA,bA=DA<=2?NA:P,iA=DA===0?P:FA,f=Math.exp((yA>>>21&2047)/2047*(X-n)+n),JA=Math.exp((yA>>>11&1023)/1023*(z-T)+T),IA=Math.exp((yA&2047)/2047*(j-W)+W),l=(GA>>>24&255)/255*((b??1)-(u??0))+(u??0),aA=(GA>>>16&255)/255*((e??1)-(O??0))+(O??0),FI=(GA>>>8&255)/255*((d??1)-(V??0))+(V??0),hI=(GA&255)/255;A(p,RA,kA,qA,f,JA,IA,$,Z,bA,iA,hI,l,aA,FI)}}const s=h=>{if(h.name==="chunk")return k(h);if(g)return F(h);if(h.name!=="vertex")return null;const{x:J,y:S,z:N,scale_0:M,scale_1:K,scale_2:p,rot_0:c,rot_1:U,rot_2:r,rot_3:a,opacity:H,f_dc_0:q,f_dc_1:t,f_dc_2:Y,red:n,green:T,blue:W,alpha:X}=h.properties;if(!J||!S||!N)throw new Error("Missing PLY properties: x, y, z");const z=M&&K&&p,j=c&&U&&r&&a,u=X!=null?eI[X.type]:1,O=n!=null?eI[n.type]:1,V=T!=null?eI[T.type]:1,b=W!=null?eI[W.type]:1;return C=wg(h.properties),R(),(e,d)=>{const CA=z?Math.exp(d.scale_0):II.defaultPointScale,EA=z?Math.exp(d.scale_1):II.defaultPointScale,yA=z?Math.exp(d.scale_2):II.defaultPointScale,GA=j?d.rot_1:0,RA=j?d.rot_2:0,kA=j?d.rot_3:0,qA=j?d.rot_0:1,FA=H!=null?1/(1+Math.exp(-d.opacity)):X!=null?d.alpha/u:1,sA=q!=null?d.f_dc_0*pI+.5:n!=null?d.red/O:1,NA=t!=null?d.f_dc_1*pI+.5:T!=null?d.green/V:1,P=Y!=null?d.f_dc_2*pI+.5:W!=null?d.blue/b:1;if(A(e,d.x,d.y,d.z,CA,EA,yA,GA,RA,kA,qA,FA,sA,NA,P),I&&o){const DA=d.f_rest;if(o)for(let $=0;${const y=AI[R.countType](g,I,this.littleEndian);I+=LA[R.countType],I+=y*LA[R.type]});else{if(w)if(G==="f_dc_0"||G==="f_dc_1"||G==="f_dc_2"){const y=Number.parseInt(G.slice(5));i.push(()=>{const k=(A[o+y]/255-.5)/pI;kQ[R.type](g,I,this.littleEndian,k)})}else G==="opacity"&&i.push(()=>{const y=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));kQ[R.type](g,I,this.littleEndian,y)});i.push(()=>{I+=LA[R.type]})}for(let G=0;GQ.getInt8(A),uchar:(Q,A,I)=>Q.getUint8(A),short:(Q,A,I)=>Q.getInt16(A,I),ushort:(Q,A,I)=>Q.getUint16(A,I),int:(Q,A,I)=>Q.getInt32(A,I),uint:(Q,A,I)=>Q.getUint32(A,I),float:(Q,A,I)=>Q.getFloat32(A,I),double:(Q,A,I)=>Q.getFloat64(A,I)},kQ={char:(Q,A,I,g)=>{Q.setInt8(A,g)},uchar:(Q,A,I,g)=>{Q.setUint8(A,g)},short:(Q,A,I,g)=>{Q.setInt16(A,g,I)},ushort:(Q,A,I,g)=>{Q.setUint16(A,g,I)},int:(Q,A,I,g)=>{Q.setInt32(A,g,I)},uint:(Q,A,I,g)=>{Q.setUint32(A,g,I)},float:(Q,A,I,g)=>{Q.setFloat32(A,g,I)},double:(Q,A,I,g)=>{Q.setFloat64(A,g,I)}},LA={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},eI={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},MB={0:0,9:1,24:2,45:3},UB={0:0,1:9,2:24,3:45},ig=/^f_rest_([0-9]{1,2})$/;function cB(Q){const A={};for(const[I,g]of Object.entries(Q))ig.test(I)?A.f_rest=new Array(wg(Q)):A[I]=g.isList?[]:0;return A}function HB(Q,A){return YB(Q)?KB(Q,A):tB(Q,A)}const LB=(()=>{try{new Function("return 42;")}catch{return!1}return!0})(),aB=/^[a-zA-Z0-9_]+$/;function YB(Q){if(!LB)return!1;for(const[A,I]of Object.entries(Q))if(!aB.test(A)||I.isList&&!RQ.includes(I.countType)||!RQ.includes(I.type))return!1;return!0}function KB(Q,A){const I=["let list;"];for(const[B,C]of Object.entries(Q)){const E=B.match(ig);if(E){const D=+E[1];I.push(`\n item.f_rest[${D}] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n `)}else C.isList?I.push(`\n list = item[\'${B}\'];\n list.length = PARSE_FIELD[\'${C.countType}\'](data, offset, ${A});\n offset += ${LA[C.countType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n }\n `):I.push(`\n item[\'${B}\'] = PARSE_FIELD[\'${C.type}\'](data, offset, ${A});\n offset += ${LA[C.type]};\n `)}I.push("return offset;");const g=new Function("data","offset","item","PARSE_FIELD",I.join(`\n`));return(B,C,E)=>g(B,C,E,AI)}function tB(Q,A){const I=[];for(const[g,B]of Object.entries(Q)){const C=g.match(ig);if(C){const E=+C[1];I.push((D,i,o)=>(o.f_rest[E]=AI[B.type](D,i,A),i+LA[B.type]))}else B.isList?I.push((E,D,i)=>{const o=i[g];o.length=AI[B.countType](E,D,A);let w=D+LA[B.countType];for(let G=0;G(i[g]=AI[B.type](E,D,A),D+LA[B.type]))}return(g,B,C)=>{let E=B;for(let D=0;D3)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=A.getUint32(8,!0),this.shDegree=A.getUint8(12),this.fractionalBits=A.getUint8(13),this.flags=A.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.flagLod=(this.flags&128)!==0,this.reserved=A.getUint8(15),this.headerParsed=!0,this.parsed=!1}async parseSplats(A,I,g,B,C,E,{childCounts:D,childStarts:i}={}){if(!this.headerParsed)throw new Error("SPZ file header must be parsed first");if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const o=await this.reader.read(this.numSplats*3*2),w=new Uint16Array(o.buffer);for(let G=0;G>8)/o,k=((w[R+5]<<24|w[R+4]<<16|w[R+3]<<8)>>8)/o,F=((w[R+8]<<24|w[R+7]<<16|w[R+6]<<8)>>8)/o;A==null||A(G,y,k,F)}}else throw new Error("Unreachable");{const o=await this.reader.read(this.numSplats);for(let w=0;w>>30;let J=F,S=0;for(let M=3;M>=0;--M)if(M!==h){const K=J&s,p=J>>>9&1;J=J>>>10,y[M]=o*(K/s),y[M]=p===0?y[M]:-y[M],S+=y[M]*y[M]}const N=1-S;y[h]=Math.sqrt(Math.max(N,0)),C==null||C(G,y[0],y[1],y[2],y[3])}}else{const o=await this.reader.read(this.numSplats*3);for(let w=0;w=1){const o=new Float32Array(9),w=this.shDegree>=2?new Float32Array(5*3):void 0,G=this.shDegree>=3?new Float32Array(7*3):void 0,R=await this.reader.read(this.numSplats*hQ[this.shDegree]*3);let y=0;for(let k=0;k=1?9:0)+(I>=2?15:0)+(I>=3?21:0),E=16+A*C;this.buffer=new ArrayBuffer(E),this.view=new DataView(this.buffer),this.view.setUint32(0,qB,!0),this.view.setUint32(4,dB,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,I),this.view.setUint8(13,g),this.view.setUint8(14,B?xB:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=I,this.fractionalBits=g,this.fraction=1<>8&255),this.view.setUint8(y+2,E>>16&255),this.view.setUint8(y+3,i&255),this.view.setUint8(y+4,i>>8&255),this.view.setUint8(y+5,i>>16&255),this.view.setUint8(y+6,w&255),this.view.setUint8(y+7,w>>8&255),this.view.setUint8(y+8,w>>16&255)}setAlpha(A,I){const g=16+this.numSplats*9+A;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(I*255))))}static scaleRgb(A){const I=((A-.5)/(SQ/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(I)))}setRgb(A,I,g,B){const C=16+this.numSplats*10+A*3;this.view.setUint8(C,eA.scaleRgb(I)),this.view.setUint8(C+1,eA.scaleRgb(g)),this.view.setUint8(C+2,eA.scaleRgb(B))}setScale(A,I,g,B){const C=16+this.numSplats*13+A*3;this.view.setUint8(C,Math.max(0,Math.min(255,Math.round((Math.log(I)+10)*16)))),this.view.setUint8(C+1,Math.max(0,Math.min(255,Math.round((Math.log(g)+10)*16)))),this.view.setUint8(C+2,Math.max(0,Math.min(255,Math.round((Math.log(B)+10)*16))))}setQuat(A,...I){const g=16+this.numSplats*16+A*4,B=CB(I);let C=0;for(let i=1;i<4;++i)Math.abs(B[i])>Math.abs(B[C])&&(C=i);const E=B[C]<0?1:0;let D=C;for(let i=0;i<4;++i)if(i!==C){const o=(B[i]<0?1:0)^E,w=Math.floor(511*(Math.abs(B[i])/Math.SQRT1_2)+.5);D=D<<10|o<<9|w}this.view.setUint8(g,D&255),this.view.setUint8(g+1,D>>8&255),this.view.setUint8(g+2,D>>16&255),this.view.setUint8(g+3,D>>>24&255)}static quantizeSh(A,I){const g=Math.round(A*128)+128,B=1<<8-I,C=Math.floor((g+B/2)/B)*B;return Math.max(0,Math.min(255,C))}setSh(A,I,g,B){const C=hQ[this.shDegree]||0,E=16+this.numSplats*20+A*C*3;for(let D=0;D<9;++D)this.view.setUint8(E+D,eA.quantizeSh(I[D],5));if(g){const D=E+9;for(let i=0;i<15;++i)this.view.setUint8(D+i,eA.quantizeSh(g[i],4));if(B){const i=D+15;for(let o=0;o<21;++o)this.view.setUint8(i+o,eA.quantizeSh(B[o],4))}}}async finalize(){const A=new Uint8Array(this.buffer),g=new ReadableStream({async start(E){E.enqueue(A),E.close()}}).pipeThrough(new CompressionStream("gzip")),C=await new Response(g).arrayBuffer();return console.log("Compressed",A.length,"bytes to",C.byteLength,"bytes"),new Uint8Array(C)}}async function rB(Q){var w,G,R;const A=new eB,{inputs:I,clipXyz:g,maxSh:B,fractionalBits:C=12,opacityThreshold:E}=Q;for(const y of I){let k=function(c){return c.multiplyScalar(S),c.applyQuaternion(N),c.add(M),c},F=function(c){return c.multiplyScalar(S),c},s=function(c){return c.premultiply(N),c},h=function(c){return!K||K.containsPoint(c)},J=function(c){return E!==void 0?c>=E:!0};const S=((w=y.transform)==null?void 0:w.scale)??1,N=new nA().fromArray(((G=y.transform)==null?void 0:G.quaternion)??[0,0,0,1]),M=new x().fromArray(((R=y.transform)==null?void 0:R.translate)??[0,0,0]),K=g?new zg(new x().fromArray(g.min),new x().fromArray(g.max)):void 0;let p=y.fileType;switch(p||(p=nB(y.fileBytes),!p&&y.pathOrUrl&&(p=fB(y.pathOrUrl))),p){case wA.PLY:{const c=new fI({fileBytes:y.fileBytes});await c.parseHeader();let U=null;c.parseSplats((r,a,H,q,t,Y,n,T,W,X,z,j,u,O,V)=>{const b=k(new x(a,H,q));if(h(b)&&J(j)){U=A.pushSplat(),A.setCenter(U,b.x,b.y,b.z);const e=F(new x(t,Y,n));A.setScale(U,e.x,e.y,e.z);const d=s(new nA(T,W,X,z));A.setQuaternion(U,d.x,d.y,d.z,d.w),A.setOpacity(U,j),A.setColor(U,u,O,V)}else U=null},(r,a,H,q)=>{a&&U!==null&&A.setSh1(U,a),H&&U!==null&&A.setSh2(U,H),q&&U!==null&&A.setSh3(U,q)});break}case wA.SPZ:{const c=new FQ({fileBytes:y.fileBytes});await c.parseHeader();const U=new Int32Array(c.numSplats);U.fill(-1);const r=new Float32Array(c.numSplats*3),a=new x;c.parseSplats((H,q,t,Y)=>{const n=k(new x(q,t,Y));r[H*3]=n.x,r[H*3+1]=n.y,r[H*3+2]=n.z},(H,q)=>{a.fromArray(r,H*3),h(a)&&J(q)&&(U[H]=A.pushSplat(),A.setCenter(U[H],a.x,a.y,a.z),A.setOpacity(U[H],q))},(H,q,t,Y)=>{U[H]>=0&&A.setColor(U[H],q,t,Y)},(H,q,t,Y)=>{if(U[H]>=0){const n=F(new x(q,t,Y));A.setScale(U[H],n.x,n.y,n.z)}},(H,q,t,Y,n)=>{if(U[H]>=0){const T=s(new nA(q,t,Y,n));A.setQuaternion(U[H],T.x,T.y,T.z,T.w)}},(H,q,t,Y)=>{U[H]>=0&&(A.setSh1(U[H],q),t&&A.setSh2(U[H],t),Y&&A.setSh3(U[H],Y))});break}case wA.SPLAT:oQ(y.fileBytes,c=>{},(c,U,r,a,H,q,t,Y,n,T,W,X,z,j,u)=>{const O=k(new x(U,r,a));if(h(O)&&J(X)){const V=A.pushSplat();A.setCenter(V,O.x,O.y,O.z);const b=F(new x(H,q,t));A.setScale(V,b.x,b.y,b.z);const e=s(new nA(Y,n,T,W));A.setQuaternion(V,e.x,e.y,e.z,e.w),A.setOpacity(V,X),A.setColor(V,z,j,u)}});break;case wA.KSPLAT:{let c=null;NB(y.fileBytes,U=>{},(U,r,a,H,q,t,Y,n,T,W,X,z,j,u,O)=>{const V=k(new x(r,a,H));if(h(V)&&J(z)){c=A.pushSplat(),A.setCenter(c,V.x,V.y,V.z);const b=F(new x(q,t,Y));A.setScale(c,b.x,b.y,b.z);const e=s(new nA(n,T,W,X));A.setQuaternion(c,e.x,e.y,e.z,e.w),A.setOpacity(c,z),A.setColor(c,j,u,O)}else c=null},(U,r,a,H)=>{c!==null&&(A.setSh1(c,r),a&&A.setSh2(c,a),H&&A.setSh3(c,H))});break}default:throw new Error(`transcodeSpz not implemented for ${p}`)}}const D=Math.min(B??3,A.sh3?3:A.sh2?2:A.sh1?1:0),i=new eA({numSplats:A.numSplats,shDegree:D,fractionalBits:C,flagAntiAlias:!0});for(let y=0;y=1&&i.setSh(y,A.sh1.slice(y*9,(y+1)*9),D>=2&&A.sh2?A.sh2.slice(y*15,(y+1)*15):void 0,D>=3&&A.sh3?A.sh3.slice(y*21,(y+1)*21):void 0)}return{fileBytes:await i.finalize(),clippedCount:i.clippedCount}}function nB(Q){const I=new DataView(Q.buffer).getUint32(0,!0);if((I&16777215)===7957616)return wA.PLY;if((I&16777215)===559903){const g=hB(Q,4);return new DataView(g.buffer).getUint32(0,!0)===1347635022?wA.SPZ:void 0}if(I===67324752)return sQ(Q)?wA.PCSOGSZIP:void 0;if(I===809779538)return wA.RAD}function PB(Q){const A=Q.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}function fB(Q){const A=PB(Q);if(A==="ply")return wA.PLY;if(A==="spz")return wA.SPZ;if(A==="splat")return wA.SPLAT;if(A==="ksplat")return wA.KSPLAT;if(A==="sog")return wA.PCSOGSZIP;if(A==="rad")return wA.RAD}function pB(Q){try{let A;if(typeof Q=="string")A=Q;else{const B=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;if(B.length>65536)return;A=new TextDecoder().decode(B)}const I=JSON.parse(A);if(!I||typeof I!="object"||Array.isArray(I))return;const g=I.version===2;for(const B of["means","scales","quats","sh0"]){if(!I[B]||typeof I[B]!="object"||Array.isArray(I[B]))return;if(g){if(!I[B].files||(B==="scales"||B==="sh0")&&!I[B].codebook||B==="means"&&(!I[B].mins||!I[B].maxs))return}else if(!I[B].shape||!I[B].files||B!=="quats"&&(!I[B].mins||!I[B].maxs))return}return I}catch{return}}function sQ(Q){try{const A=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let I=null;const g=vQ(A,{filter:({name:C})=>C.split(/[\\\\/]/).pop()==="meta.json"?(I=C,!0):!1});if(!I)return;const B=pB(g[I]);return B?{name:I,json:B}:void 0}catch{return}}class eB{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=kB(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const I=Math.max(A,this.maxSplats*2),g=new Float32Array(I*3),B=new Float32Array(I*3),C=new Float32Array(I*4),E=new Float32Array(I),D=new Float32Array(I*3);if(g.set(this.centers),B.set(this.scales),C.set(this.quaternions),E.set(this.opacities),D.set(this.colors),this.centers=g,this.scales=B,this.quaternions=C,this.opacities=E,this.colors=D,this.sh1){const i=new Float32Array(I*9);i.set(this.sh1),this.sh1=i}if(this.sh2){const i=new Float32Array(I*15);i.set(this.sh2),this.sh2=i}if(this.sh3){const i=new Float32Array(I*21);i.set(this.sh3),this.sh3=i}this.maxSplats=I}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,I,g,B){this.centers[A*3]=I,this.centers[A*3+1]=g,this.centers[A*3+2]=B}setScale(A,I,g,B){this.scales[A*3]=I,this.scales[A*3+1]=g,this.scales[A*3+2]=B}setQuaternion(A,I,g,B,C){this.quaternions[A*4]=I,this.quaternions[A*4+1]=g,this.quaternions[A*4+2]=B,this.quaternions[A*4+3]=C}setOpacity(A,I){this.opacities[A]=I}setColor(A,I,g,B){this.colors[A*3]=I,this.colors[A*3+1]=g,this.colors[A*3+2]=B}setSh1(A,I){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let g=0;g<9;++g)this.sh1[A*9+g]=I[g]}setSh2(A,I){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let g=0;g<15;++g)this.sh2[A*15+g]=I[g]}setSh3(A,I){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let g=0;g<21;++g)this.sh3[A*21+g]=I[g]}}async function NQ(Q,A,I){const g="version"in Q;if(!g&&Q.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const B=g?Q.count:Q.means.shape[0],C=qI(B),E=new Uint32Array(C*4),D={},i=Promise.all([kI(A[Q.means.files[0]]),kI(A[Q.means.files[1]])]).then(y=>{for(let k=0;k{let k,F,s;g?k=F=s=Q.scales.codebook.map(h=>Math.exp(h)):(k=new Array(256).fill(0).map((h,J)=>Q.scales.mins[0]+(Q.scales.maxs[0]-Q.scales.mins[0])*(J/255)).map(h=>Math.exp(h)),F=new Array(256).fill(0).map((h,J)=>Q.scales.mins[1]+(Q.scales.maxs[1]-Q.scales.mins[1])*(J/255)).map(h=>Math.exp(h)),s=new Array(256).fill(0).map((h,J)=>Q.scales.mins[2]+(Q.scales.maxs[2]-Q.scales.mins[2])*(J/255)).map(h=>Math.exp(h)));for(let h=0;h{const k=Math.sqrt(2),F=new Array(256).fill(0).map((s,h)=>(h/255-.5)*k);for(let s=0;s{const k=.28209479177387814;let F,s,h,J;g?(F=s=h=Q.sh0.codebook.map(S=>k*S+.5),J=new Array(256).fill(0).map((S,N)=>N/255)):(F=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[0]+(Q.sh0.maxs[0]-Q.sh0.mins[0])*(N/255)).map(S=>k*S+.5),s=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[1]+(Q.sh0.maxs[1]-Q.sh0.mins[1])*(N/255)).map(S=>k*S+.5),h=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[2]+(Q.sh0.maxs[2]-Q.sh0.mins[2])*(N/255)).map(S=>k*S+.5),J=new Array(256).fill(0).map((S,N)=>Q.sh0.mins[3]+(Q.sh0.maxs[3]-Q.sh0.mins[3])*(N/255)).map(S=>1/(1+Math.exp(-S))));for(let S=0;S=3:Q.shN.shape[1]>=45,k=g?Q.shN.bands>=2:Q.shN.shape[1]>=24,F=g?Q.shN.bands>=1:Q.shN.shape[1]>=9;F&&(D.sh1=new Uint32Array(B*2)),k&&(D.sh2=new Uint32Array(B*4)),y&&(D.sh3=new Uint32Array(B*4));const s=new Float32Array(9),h=new Float32Array(15),J=new Float32Array(21),S=Q.shN,N=Promise.all([Gg(A[Q.shN.files[0]]),Gg(A[Q.shN.files[1]])]).then(([M,K])=>{const p="codebook"in S?S.codebook:new Array(256).fill(0).map((c,U)=>S.mins+(S.maxs-S.mins)*(U/255));for(let c=0;c>>6)*M.width+a;for(let t=0;t<3;++t){if(F)for(let Y=0;Y<3;++Y)s[Y*3+t]=p[M.rgba[(q+Y)*4+t]];if(k)for(let Y=0;Y<5;++Y)h[Y*3+t]=p[M.rgba[(q+3+Y)*4+t]];if(y)for(let Y=0;Y<7;++Y)J[Y*3+t]=p[M.rgba[(q+8+Y)*4+t]]}F&&xI(D.sh1,c,s,I),k&&rI(D.sh2,c,h,I),y&&nI(D.sh3,c,J,I)}});R.push(N)}return await Promise.all(R),{packedArray:E,numSplats:B,extra:D}}let bI=null;async function Gg(Q){if(!bI&&(bI=new OffscreenCanvas(1,1).getContext("webgl2"),!bI))throw new Error("Failed to create WebGL2 context");const A=new Blob([Q]),I=await createImageBitmap(A,{premultiplyAlpha:"none"}),g=bI,B=g.createTexture();g.bindTexture(g.TEXTURE_2D,B),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,!0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,I),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST);const C=g.createFramebuffer();g.bindFramebuffer(g.FRAMEBUFFER,C),g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.TEXTURE_2D,B,0);const E=new Uint8Array(I.width*I.height*4);return g.readPixels(0,0,I.width,I.height,g.RGBA,g.UNSIGNED_BYTE,E),g.deleteTexture(B),g.deleteFramebuffer(C),{rgba:E,width:I.width,height:I.height}}async function kI(Q){const{rgba:A}=await Gg(Q);return A}async function bB(Q,A){var R;const I=sQ(Q);if(!I)throw new Error("Invalid PC SOGS zip file");const{name:g,json:B}=I,C=g.lastIndexOf("/"),E=g.lastIndexOf("\\\\"),D=g.slice(0,Math.max(C,E)+1),i=new Map,o=[...B.means.files,...B.scales.files,...B.quats.files,...B.sh0.files,...((R=B.shN)==null?void 0:R.files)??[]];for(const y of o)i.set(D+y,y);const w=await new Promise((y,k)=>{zQ(Q,{filter:({name:F})=>i.has(F)},(F,s)=>{F?k(F):y(s)})}),G={};for(const[y,k]of i.entries())G[k]=w[y];return await NQ(B,G,A)}async function JQ(Q){const{name:A,args:I,id:g}=Q.data;let B,C;try{switch(A){case"unpackPly":{const{packedArray:E,fileBytes:D,splatEncoding:i}=I,o=await lB({packedArray:E,fileBytes:D,splatEncoding:i});B={id:g,numSplats:o.numSplats,packedArray:o.packedArray,extra:o.extra};break}case"decodeSpz":{const{fileBytes:E,splatEncoding:D}=I,i=await OB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodeAntiSplat":{const{fileBytes:E,splatEncoding:D}=I,i=sB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray};break}case"decodeKsplat":{const{fileBytes:E,splatEncoding:D}=I,i=JB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"decodePcSogs":{const{fileBytes:E,extraFiles:D,splatEncoding:i}=I,o=JSON.parse(new TextDecoder().decode(E)),w=await NQ(o,D,i);B={id:g,numSplats:w.numSplats,packedArray:w.packedArray,extra:w.extra};break}case"decodePcSogsZip":{const{fileBytes:E,splatEncoding:D}=I,i=await bB(E,D);B={id:g,numSplats:i.numSplats,packedArray:i.packedArray,extra:i.extra};break}case"sortSplats":{const{totalSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,...ZB({totalSplats:E,readback:D,ordering:i})};break}case"sortDoubleSplats":{const{numSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,ordering:i,activeSplats:cQ(E,D,i)};break}case"sort32Splats":{const{numSplats:E,readback:D,ordering:i}=I;B={id:g,readback:D,ordering:i,activeSplats:UQ(E,D,i)};break}case"transcodeSpz":{const E=I,D=await rB(E);B={id:g,fileBytes:D,input:E};break}default:throw new Error(`Unknown name: ${A}`)}}catch(E){C=E,console.error(C)}self.postMessage({id:g,result:B,error:C},{transfer:GB(B)})}async function lB({packedArray:Q,fileBytes:A,splatEncoding:I}){const g=new fI({fileBytes:A});await g.parseHeader();const B=g.numSplats,C={};return g.parseSplats((E,D,i,o,w,G,R,y,k,F,s,h,J,S,N)=>{Dg(Q,E,D,i,o,w,G,R,y,k,F,s,h,J,S,N,I)},(E,D,i,o)=>{D&&(C.sh1||(C.sh1=new Uint32Array(B*2)),xI(C.sh1,E,D,I)),i&&(C.sh2||(C.sh2=new Uint32Array(B*4)),rI(C.sh2,E,i,I)),o&&(C.sh3||(C.sh3=new Uint32Array(B*4)),nI(C.sh3,E,o,I))}),{packedArray:Q,numSplats:B,extra:C}}async function OB(Q,A){const I=new FQ({fileBytes:Q});await I.parseHeader();const g=I.numSplats,B=qI(g),C=new Uint32Array(B*4),E={};let D={};if(I.flagLod){const i=new Uint16Array(g),o=new Uint32Array(g);E.childCounts=i,E.childStarts=o,D={childCounts:(w,G)=>{i[w]=G},childStarts:(w,G)=>{o[w]=G}}}return await I.parseSplats((i,o,w,G)=>{CQ(C,i,o,w,G)},(i,o)=>{RB(C,i,o)},(i,o,w,G)=>{yB(C,i,o,w,G,A)},(i,o,w,G)=>{EQ(C,i,o,w,G,A)},(i,o,w,G,R)=>{iQ(C,i,o,w,G,R)},(i,o,w,G)=>{o&&(E.sh1||(E.sh1=new Uint32Array(g*2)),xI(E.sh1,i,o,A)),w&&(E.sh2||(E.sh2=new Uint32Array(g*4)),rI(E.sh2,i,w,A)),G&&(E.sh3||(E.sh3=new Uint32Array(g*4)),nI(E.sh3,i,G,A))},D),{packedArray:C,numSplats:g,extra:E}}const og=31744,lI=og+1;let YA=null;function ZB({totalSplats:Q,readback:A,ordering:I}){YA||(YA=new Uint32Array(lI)),YA.fill(0);const g=A.map(i=>new Uint32Array(i.buffer)),B=g[0].length,C=Math.ceil(Q/B);let E=0;for(let i=0;i { - (self.URL || self.webkitURL).revokeObjectURL(A); - }), I; - } catch { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(jB), - { - name: Q == null ? void 0 : Q.name - } - ); - } finally { - A && (self.URL || self.webkitURL).revokeObjectURL(A); - } -} -var KA = Uint8Array, VI = Uint16Array, Do = Int32Array, vB = new KA([ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - /* unused */ - 0, - 0, - /* impossible */ - 0 -]), zB = new KA([ - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13, - /* unused */ - 0, - 0 -]), io = new KA([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), _B = function(Q, A) { - for (var I = new VI(31), g = 0; g < 31; ++g) - I[g] = A += 1 << Q[g - 1]; - for (var B = new Do(I[30]), g = 1; g < 30; ++g) - for (var C = I[g]; C < I[g + 1]; ++C) - B[C] = C - I[g] << 5 | g; - return { b: I, r: B }; -}, $B = _B(vB, 2), AC = $B.b, wo = $B.r; -AC[28] = 258, wo[258] = 28; -var oo = _B(zB, 0), so = oo.b, YQ = new VI(32768); -for (var yA = 0; yA < 32768; ++yA) { - var NI = (yA & 43690) >> 1 | (yA & 21845) << 1; - NI = (NI & 52428) >> 2 | (NI & 13107) << 2, NI = (NI & 61680) >> 4 | (NI & 3855) << 4, YQ[yA] = ((NI & 65280) >> 8 | (NI & 255) << 8) >> 1; -} -var sg = function(Q, A, I) { - for (var g = Q.length, B = 0, C = new VI(A); B < g; ++B) - Q[B] && ++C[Q[B] - 1]; - var E = new VI(A); - for (B = 1; B < A; ++B) - E[B] = E[B - 1] + C[B - 1] << 1; - var D; - if (I) { - D = new VI(1 << A); - var i = 15 - A; - for (B = 0; B < g; ++B) - if (Q[B]) - for (var w = B << 4 | Q[B], s = A - Q[B], o = E[Q[B] - 1]++ << s, y = o | (1 << s) - 1; o <= y; ++o) - D[YQ[o] >> i] = w; - } else - for (D = new VI(g), B = 0; B < g; ++B) - Q[B] && (D[B] = YQ[E[Q[B] - 1]++] >> 15 - Q[B]); - return D; -}, Ng = new KA(288); -for (var yA = 0; yA < 144; ++yA) - Ng[yA] = 8; -for (var yA = 144; yA < 256; ++yA) - Ng[yA] = 9; -for (var yA = 256; yA < 280; ++yA) - Ng[yA] = 7; -for (var yA = 280; yA < 288; ++yA) - Ng[yA] = 8; -var IC = new KA(32); -for (var yA = 0; yA < 32; ++yA) - IC[yA] = 5; -var Go = /* @__PURE__ */ sg(Ng, 9, 1), yo = /* @__PURE__ */ sg(IC, 5, 1), FQ = function(Q) { - for (var A = Q[0], I = 1; I < Q.length; ++I) - Q[I] > A && (A = Q[I]); - return A; -}, II = function(Q, A, I) { - var g = A / 8 | 0; - return (Q[g] | Q[g + 1] << 8) >> (A & 7) & I; -}, aQ = function(Q, A) { - var I = A / 8 | 0; - return (Q[I] | Q[I + 1] << 8 | Q[I + 2] << 16) >> (A & 7); -}, gC = function(Q) { - return (Q + 7) / 8 | 0; -}, vI = function(Q, A, I) { - return (A == null || A < 0) && (A = 0), (I == null || I > Q.length) && (I = Q.length), new KA(Q.subarray(A, I)); -}, ho = [ - "unexpected EOF", - "invalid block type", - "invalid length/literal", - "invalid distance", - "stream finished", - "no stream handler", - , - "no callback", - "invalid UTF-8 data", - "extra field too long", - "date not in range 1980-2099", - "filename too long", - "stream finishing", - "invalid zip data" - // determined by unknown compression method -], PA = function(Q, A, I) { - var g = new Error(A || ho[Q]); - if (g.code = Q, Error.captureStackTrace && Error.captureStackTrace(g, PA), !I) - throw g; - return g; -}, QC = function(Q, A, I, g) { - var B = Q.length, C = g ? g.length : 0; - if (!B || A.f && !A.l) - return I || new KA(0); - var E = !I, D = E || A.i != 2, i = A.i; - E && (I = new KA(B * 3)); - var w = function(SA) { - var wA = I.length; - if (SA > wA) { - var GA = new KA(Math.max(wA * 2, SA)); - GA.set(I), I = GA; - } - }, s = A.f || 0, o = A.p || 0, y = A.b || 0, h = A.l, k = A.d, R = A.m, F = A.n, a = B * 8; - do { - if (!h) { - s = II(Q, o, 1); - var S = II(Q, o + 1, 3); - if (o += 3, S) - if (S == 1) - h = Go, k = yo, R = 9, F = 5; - else if (S == 2) { - var U = II(Q, o, 31) + 257, J = II(Q, o + 10, 15) + 4, t = U + II(Q, o + 5, 31) + 1; - o += 14; - for (var H = new KA(t), K = new KA(19), Y = 0; Y < J; ++Y) - K[io[Y]] = II(Q, o + Y * 3, 7); - o += J * 3; - for (var L = FQ(K), q = (1 << L) - 1, n = sg(K, L, 1), Y = 0; Y < t; ) { - var r = n[II(Q, o, q)]; - o += r & 15; - var M = r >> 4; - if (M < 16) - H[Y++] = M; - else { - var p = 0, m = 0; - for (M == 16 ? (m = 3 + II(Q, o, 3), o += 2, p = H[Y - 1]) : M == 17 ? (m = 3 + II(Q, o, 7), o += 3) : M == 18 && (m = 11 + II(Q, o, 127), o += 7); m--; ) - H[Y++] = p; - } - } - var IA = H.subarray(0, U), X = H.subarray(U); - R = FQ(IA), F = FQ(X), h = sg(IA, R, 1), k = sg(X, F, 1); - } else - PA(1); - else { - var M = gC(o) + 4, c = Q[M - 4] | Q[M - 3] << 8, N = M + c; - if (N > B) { - i && PA(0); - break; - } - D && w(y + c), I.set(Q.subarray(M, N), y), A.b = y += c, A.p = o = N * 8, A.f = s; - continue; - } - if (o > a) { - i && PA(0); - break; - } - } - D && w(y + 131072); - for (var EA = (1 << R) - 1, j = (1 << F) - 1, gA = o; ; gA = o) { - var p = h[aQ(Q, o) & EA], W = p >> 4; - if (o += p & 15, o > a) { - i && PA(0); - break; - } - if (p || PA(2), W < 256) - I[y++] = W; - else if (W == 256) { - gA = o, h = null; - break; - } else { - var u = W - 254; - if (W > 264) { - var Y = W - 257, b = vB[Y]; - u = II(Q, o, (1 << b) - 1) + AC[Y], o += b; - } - var T = k[aQ(Q, o) & j], f = T >> 4; - T || PA(3), o += T & 15; - var X = so[f]; - if (f > 3) { - var b = zB[f]; - X += aQ(Q, o) & (1 << b) - 1, o += b; - } - if (o > a) { - i && PA(0); - break; - } - D && w(y + 131072); - var FA = y + u; - if (y < X) { - var sA = C - X, aA = Math.min(X, FA); - for (sA + y < 0 && PA(3); y < aA; ++y) - I[y] = g[sA + y]; - } - for (; y < FA; ++y) - I[y] = I[y - X]; - } - } - A.l = h, A.p = gA, A.b = y, A.f = s, h && (s = 1, A.m = R, A.d = k, A.n = F); - } while (!s); - return y != I.length && E ? vI(I, 0, y) : I.subarray(0, y); -}, Ro = /* @__PURE__ */ new KA(0), sI = function(Q, A) { - return Q[A] | Q[A + 1] << 8; -}, QI = function(Q, A) { - return (Q[A] | Q[A + 1] << 8 | Q[A + 2] << 16 | Q[A + 3] << 24) >>> 0; -}, SQ = function(Q, A) { - return QI(Q, A) + QI(Q, A + 4) * 4294967296; -}, ko = function(Q) { - (Q[0] != 31 || Q[1] != 139 || Q[2] != 8) && PA(6, "invalid gzip data"); - var A = Q[3], I = 10; - A & 4 && (I += (Q[10] | Q[11] << 8) + 2); - for (var g = (A >> 3 & 1) + (A >> 4 & 1); g > 0; g -= !Q[I++]) - ; - return I + (A & 2); -}, NQ = /* @__PURE__ */ function() { - function Q(A, I) { - typeof A == "function" && (I = A, A = {}), this.ondata = I; - var g = A && A.dictionary && A.dictionary.subarray(-32768); - this.s = { i: 0, b: g ? g.length : 0 }, this.o = new KA(32768), this.p = new KA(0), g && this.o.set(g); - } - return Q.prototype.e = function(A) { - if (this.ondata || PA(5), this.d && PA(4), !this.p.length) - this.p = A; - else if (A.length) { - var I = new KA(this.p.length + A.length); - I.set(this.p), I.set(A, this.p.length), this.p = I; - } - }, Q.prototype.c = function(A) { - this.s.i = +(this.d = A || !1); - var I = this.s.b, g = QC(this.p, this.s, this.o); - this.ondata(vI(g, I, this.s.b), this.d), this.o = vI(g, this.s.b - 32768), this.s.b = this.o.length, this.p = vI(this.p, this.s.p / 8 | 0), this.s.p &= 7; - }, Q.prototype.push = function(A, I) { - this.e(A), this.c(I); - }, Q; -}(); -function Fo(Q, A) { - return QC(Q, { i: 2 }, A && A.out, A && A.dictionary); -} -var ao = /* @__PURE__ */ function() { - function Q(A, I) { - this.v = 1, this.r = 0, NQ.call(this, A, I); - } - return Q.prototype.push = function(A, I) { - if (NQ.prototype.e.call(this, A), this.r += A.length, this.v) { - var g = this.p.subarray(this.v - 1), B = g.length > 3 ? ko(g) : 4; - if (B > g.length) { - if (!I) - return; - } else this.v > 1 && this.onmember && this.onmember(this.r - g.length); - this.p = g.subarray(B), this.v = 0; - } - NQ.prototype.c.call(this, I), this.s.f && !this.s.l && !I && (this.v = gC(this.s.p) + 9, this.s = { i: 0 }, this.o = new KA(0), this.push(new KA(0), I)); - }, Q; -}(), KQ = typeof TextDecoder < "u" && /* @__PURE__ */ new TextDecoder(), So = 0; -try { - KQ.decode(Ro, { stream: !0 }), So = 1; -} catch { -} -var No = function(Q) { - for (var A = "", I = 0; ; ) { - var g = Q[I++], B = (g > 127) + (g > 223) + (g > 239); - if (I + B > Q.length) - return { s: A, r: vI(Q, I - 1) }; - B ? B == 3 ? (g = ((g & 15) << 18 | (Q[I++] & 63) << 12 | (Q[I++] & 63) << 6 | Q[I++] & 63) - 65536, A += String.fromCharCode(55296 | g >> 10, 56320 | g & 1023)) : B & 1 ? A += String.fromCharCode((g & 31) << 6 | Q[I++] & 63) : A += String.fromCharCode((g & 15) << 12 | (Q[I++] & 63) << 6 | Q[I++] & 63) : A += String.fromCharCode(g); - } -}; -function co(Q, A) { - if (A) { - for (var I = "", g = 0; g < Q.length; g += 16384) - I += String.fromCharCode.apply(null, Q.subarray(g, g + 16384)); - return I; - } else { - if (KQ) - return KQ.decode(Q); - var B = No(Q), C = B.s, I = B.r; - return I.length && PA(8), C; - } -} -var Mo = function(Q, A) { - return A + 30 + sI(Q, A + 26) + sI(Q, A + 28); -}, Jo = function(Q, A, I) { - var g = sI(Q, A + 28), B = co(Q.subarray(A + 46, A + 46 + g), !(sI(Q, A + 8) & 2048)), C = A + 46 + g, E = QI(Q, A + 20), D = I && E == 4294967295 ? Uo(Q, C) : [E, QI(Q, A + 24), QI(Q, A + 42)], i = D[0], w = D[1], s = D[2]; - return [sI(Q, A + 10), i, w, B, C + sI(Q, A + 30) + sI(Q, A + 32), s]; -}, Uo = function(Q, A) { - for (; sI(Q, A) != 1; A += 4 + sI(Q, A + 2)) - ; - return [SQ(Q, A + 12), SQ(Q, A + 4), SQ(Q, A + 20)]; -}; -function to(Q, A) { - for (var I = {}, g = Q.length - 22; QI(Q, g) != 101010256; --g) - (!g || Q.length - g > 65558) && PA(13); - var B = sI(Q, g + 8); - if (!B) - return {}; - var C = QI(Q, g + 16), E = C == 4294967295 || B == 65535; - if (E) { - var D = QI(Q, g - 12); - E = QI(Q, D) == 101075792, E && (B = QI(Q, D + 32), C = QI(Q, D + 48)); - } - for (var i = A && A.filter, w = 0; w < B; ++w) { - var s = Jo(Q, C, E), o = s[0], y = s[1], h = s[2], k = s[3], R = s[4], F = s[5], a = Mo(Q, F); - C = R, (!i || i({ - name: k, - size: y, - originalSize: h, - compression: o - })) && (o ? o == 8 ? I[k] = Fo(Q.subarray(a, a + y), { out: new KA(h) }) : PA(14, "unknown compression type " + o) : I[k] = vI(Q, a, a + y)); - } - return I; -} -const pA = -12, fA = 9, Ho = Math.exp(pA), Lo = Math.exp(fA), BC = -30, xI = Math.exp(BC), XQ = 11, WQ = 11, CC = 11, Yo = XQ + WQ, P = 1 << XQ, XA = 1 << WQ, EC = 1 << CC, jQ = 1, Ko = P - 1, eo = XA - 1, ro = EC - 1, no = !0, qo = !0; -var hA = /* @__PURE__ */ ((Q) => (Q.PLY = "ply", Q.SPZ = "spz", Q.SPLAT = "splat", Q.KSPLAT = "ksplat", Q.PCSOGS = "pcsogs", Q.PCSOGSZIP = "pcsogszip", Q.RAD = "rad", Q))(hA || {}); -const cg = { +import * as a from "three"; +import { Loader as Vo, FileLoader as Wo, Quaternion as kB, Vector3 as II, Color as eB, Matrix4 as hQ } from "three"; +import { FullScreenQuad as vQ } from "three/addons/postprocessing/Pass.js"; +const uA = -12, bA = 9, jo = Math.exp(uA), zo = Math.exp(bA), mB = -30, lI = Math.exp(mB), XQ = 11, VQ = 11, TB = 11, _o = XQ + VQ, b = 1 << XQ, vA = 1 << VQ, OB = 1 << TB, WQ = 1, $o = b - 1, As = vA - 1, Is = OB - 1, gs = !0, Qs = !0; +var LA = /* @__PURE__ */ ((Q) => (Q.PLY = "ply", Q.SPZ = "spz", Q.SPLAT = "splat", Q.KSPLAT = "ksplat", Q.PCSOGS = "pcsogs", Q.PCSOGSZIP = "pcsogszip", Q.RAD = "rad", Q))(LA || {}); +const IQ = { rgbMin: 0, rgbMax: 1, - lnScaleMin: pA, - lnScaleMax: fA, + lnScaleMin: uA, + lnScaleMax: bA, sh1Max: 1, sh2Max: 1, sh3Max: 1, lodOpacity: !1 -}, Kk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ +}, Uy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, - DEFAULT_SPLAT_ENCODING: cg, - LN_SCALE_MAX: fA, - LN_SCALE_MIN: pA, - LN_SCALE_ZERO: BC, - SCALE_MAX: Lo, - SCALE_MIN: Ho, - SCALE_ZERO: xI, - SPLAT_TEX_DEPTH: EC, - SPLAT_TEX_DEPTH_BITS: CC, - SPLAT_TEX_DEPTH_MASK: ro, - SPLAT_TEX_HEIGHT: XA, - SPLAT_TEX_HEIGHT_BITS: WQ, - SPLAT_TEX_HEIGHT_MASK: eo, - SPLAT_TEX_LAYER_BITS: Yo, - SPLAT_TEX_MIN_HEIGHT: jQ, - SPLAT_TEX_WIDTH: P, + DEFAULT_SPLAT_ENCODING: IQ, + LN_SCALE_MAX: bA, + LN_SCALE_MIN: uA, + LN_SCALE_ZERO: mB, + SCALE_MAX: zo, + SCALE_MIN: jo, + SCALE_ZERO: lI, + SPLAT_TEX_DEPTH: OB, + SPLAT_TEX_DEPTH_BITS: TB, + SPLAT_TEX_DEPTH_MASK: Is, + SPLAT_TEX_HEIGHT: vA, + SPLAT_TEX_HEIGHT_BITS: VQ, + SPLAT_TEX_HEIGHT_MASK: As, + SPLAT_TEX_LAYER_BITS: _o, + SPLAT_TEX_MIN_HEIGHT: WQ, + SPLAT_TEX_WIDTH: b, SPLAT_TEX_WIDTH_BITS: XQ, - SPLAT_TEX_WIDTH_MASK: Ko, - SplatFileType: hA, - USE_COMPILED_PARSER_FUNCTION: qo, - WASM_SPLAT_SORT: no + SPLAT_TEX_WIDTH_MASK: $o, + SplatFileType: LA, + USE_COMPILED_PARSER_FUNCTION: Qs, + WASM_SPLAT_SORT: gs }, Symbol.toStringTag, { value: "Module" })); -function uI(Q) { +function pI(Q) { return Q === "bool" || Q === "bvec2" || Q === "bvec3" || Q === "bvec4"; } -function TI(Q) { +function fI(Q) { return Q === "int" || Q === "uint" || Q === "float"; } -function xA(Q) { +function dA(Q) { return Q === "int" || Q === "ivec2" || Q === "ivec3" || Q === "ivec4"; } function lA(Q) { return Q === "uint" || Q === "uvec2" || Q === "uvec3" || Q === "uvec4"; } -function Mg(Q) { +function eg(Q) { return Q === "float" || Q === "vec2" || Q === "vec3" || Q === "vec4"; } -function DC(Q) { +function ZB(Q) { return Q === "mat2" || Q === "mat2x2" || Q === "mat2x3" || Q === "mat2x4" || Q === "mat3" || Q === "mat3x2" || Q === "mat3x3" || Q === "mat3x4" || Q === "mat4" || Q === "mat4x2" || Q === "mat4x3" || Q === "mat4x4"; } -function HI(Q) { - return Mg(Q) || DC(Q); +function JI(Q) { + return eg(Q) || ZB(Q); } -function gg(Q) { +function WI(Q) { return Q === "vec2" || Q === "ivec2" || Q === "uvec2"; } -function Qg(Q) { +function jI(Q) { return Q === "vec3" || Q === "ivec3" || Q === "uvec3"; } -function Jg(Q) { +function Ng(Q) { return Q === "vec4" || Q === "ivec4" || Q === "uvec4"; } -function xo(Q) { - return gg(Q) || Qg(Q) || Jg(Q); +function Bs(Q) { + return WI(Q) || jI(Q) || Ng(Q); } -function KI(Q) { +function HI(Q) { return Q === "mat2" || Q === "mat2x2"; } -function eI(Q) { +function KI(Q) { return Q === "mat3" || Q === "mat3x3"; } function rI(Q) { return Q === "mat4" || Q === "mat4x4"; } -function iC(Q) { +function vB(Q) { switch (Q) { case "vec2": return "float"; @@ -501,7 +102,7 @@ function iC(Q) { throw new Error(`Invalid vector type: ${Q}`); } } -function wC(Q) { +function XB(Q) { switch (Q) { case "vec2": case "ivec2": @@ -519,69 +120,69 @@ function wC(Q) { throw new Error(`Invalid vector type: ${Q}`); } } -function lo(Q) { - if (TI(Q)) +function Cs(Q) { + if (fI(Q)) return "float"; - if (gg(Q)) + if (WI(Q)) return "vec2"; - if (Qg(Q)) + if (jI(Q)) return "vec3"; - if (Jg(Q)) + if (Ng(Q)) return "vec4"; throw new Error(`Invalid vector type: ${Q}`); } -function oC(Q) { - if (TI(Q)) +function VB(Q) { + if (fI(Q)) return "uint"; - if (gg(Q)) + if (WI(Q)) return "uvec2"; - if (Qg(Q)) + if (jI(Q)) return "uvec3"; - if (Jg(Q)) + if (Ng(Q)) return "uvec4"; throw new Error(`Invalid vector type: ${Q}`); } -function po(Q) { - if (TI(Q)) +function Es(Q) { + if (fI(Q)) return "int"; - if (gg(Q)) + if (WI(Q)) return "ivec2"; - if (Qg(Q)) + if (jI(Q)) return "ivec3"; - if (Jg(Q)) + if (Ng(Q)) return "ivec4"; throw new Error(`Invalid vector type: ${Q}`); } -function sC(Q) { +function WB(Q) { if (typeof Q == "string") return Q; if (typeof Q == "object" && Q.type) return Q.type; throw new Error(`Invalid DynoType: ${String(Q)}`); } -function MA(Q) { +function RA(Q) { return Math.trunc(Q).toString(); } -function JA(Q) { +function kA(Q) { return `${Math.max(0, Math.trunc(Q)).toString()}u`; } function AA(Q) { return Q === Number.POSITIVE_INFINITY ? "INFINITY" : Q === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(Q) ? Q.toFixed(1) : Q.toString(); } function CA(Q) { - return Q instanceof UI ? Q.type : Q.dynoOut().type; + return Q instanceof NI ? Q.type : Q.dynoOut().type; } -class UI { +class NI { constructor(A) { this.__isDynoValue = !0, this.type = A; } } -class V extends UI { +class Z extends NI { constructor(A, I) { super(A.outTypes[I]), this.dyno = A, this.key = I; } } -class zI extends UI { +class ZI extends NI { constructor(A, I) { super(A), this.literal = I; } @@ -589,10 +190,10 @@ class zI extends UI { return this.literal; } } -function ug(Q, A) { - return new zI(Q, A); +function Tg(Q, A) { + return new ZI(Q, A); } -class GC extends zI { +class jB extends ZI { constructor(A, I) { super(A, ""), this.value = I; } @@ -602,9 +203,9 @@ class GC extends zI { case "bool": return I ? "true" : "false"; case "uint": - return JA(I); + return kA(I); case "int": - return MA(I); + return RA(I); case "float": return AA(I); case "bvec2": { @@ -612,19 +213,19 @@ class GC extends zI { return `bvec2(${g[0]}, ${g[1]})`; } case "uvec2": { - if (I instanceof G.Vector2) - return `uvec2(${JA(I.x)}, ${JA(I.y)})`; + if (I instanceof a.Vector2) + return `uvec2(${kA(I.x)}, ${kA(I.y)})`; const g = I; - return `uvec2(${JA(g[0])}, ${JA(g[1])})`; + return `uvec2(${kA(g[0])}, ${kA(g[1])})`; } case "ivec2": { - if (I instanceof G.Vector2) - return `ivec2(${MA(I.x)}, ${MA(I.y)})`; + if (I instanceof a.Vector2) + return `ivec2(${RA(I.x)}, ${RA(I.y)})`; const g = I; - return `ivec2(${MA(g[0])}, ${MA(g[1])})`; + return `ivec2(${RA(g[0])}, ${RA(g[1])})`; } case "vec2": { - if (I instanceof G.Vector2) + if (I instanceof a.Vector2) return `vec2(${AA(I.x)}, ${AA(I.y)})`; const g = I; return `vec2(${AA(g[0])}, ${AA(g[1])})`; @@ -634,19 +235,19 @@ class GC extends zI { return `bvec3(${g[0]}, ${g[1]}, ${g[2]})`; } case "uvec3": { - if (I instanceof G.Vector3) - return `uvec3(${JA(I.x)}, ${JA(I.y)}, ${JA(I.z)})`; + if (I instanceof a.Vector3) + return `uvec3(${kA(I.x)}, ${kA(I.y)}, ${kA(I.z)})`; const g = I; - return `uvec3(${JA(g[0])}, ${JA(g[1])}, ${JA(g[2])})`; + return `uvec3(${kA(g[0])}, ${kA(g[1])}, ${kA(g[2])})`; } case "ivec3": { - if (I instanceof G.Vector3) - return `ivec3(${MA(I.x)}, ${MA(I.y)}, ${MA(I.z)})`; + if (I instanceof a.Vector3) + return `ivec3(${RA(I.x)}, ${RA(I.y)}, ${RA(I.z)})`; const g = I; - return `ivec3(${MA(g[0])}, ${MA(g[1])}, ${MA(g[2])})`; + return `ivec3(${RA(g[0])}, ${RA(g[1])}, ${RA(g[2])})`; } case "vec3": { - if (I instanceof G.Vector3) + if (I instanceof a.Vector3) return `vec3(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)})`; const g = I; return `vec3(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])})`; @@ -656,28 +257,28 @@ class GC extends zI { return `bvec4(${g[0]}, ${g[1]}, ${g[2]}, ${g[3]})`; } case "uvec4": { - if (I instanceof G.Vector4) - return `uvec4(${JA(I.x)}, ${JA(I.y)}, ${JA(I.z)}, ${JA(I.w)})`; + if (I instanceof a.Vector4) + return `uvec4(${kA(I.x)}, ${kA(I.y)}, ${kA(I.z)}, ${kA(I.w)})`; const g = I; - return `uvec4(${JA(g[0])}, ${JA(g[1])}, ${JA(g[2])}, ${JA(g[3])})`; + return `uvec4(${kA(g[0])}, ${kA(g[1])}, ${kA(g[2])}, ${kA(g[3])})`; } case "ivec4": { - if (I instanceof G.Vector4) - return `ivec4(${MA(I.x)}, ${MA(I.y)}, ${MA(I.z)}, ${MA(I.w)})`; + if (I instanceof a.Vector4) + return `ivec4(${RA(I.x)}, ${RA(I.y)}, ${RA(I.z)}, ${RA(I.w)})`; const g = I; - return `ivec4(${MA(g[0])}, ${MA(g[1])}, ${MA(g[2])}, ${MA(g[3])})`; + return `ivec4(${RA(g[0])}, ${RA(g[1])}, ${RA(g[2])}, ${RA(g[3])})`; } case "vec4": { - if (I instanceof G.Vector4) + if (I instanceof a.Vector4) return `vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`; - if (I instanceof G.Quaternion) + if (I instanceof a.Quaternion) return `vec4(${AA(I.x)}, ${AA(I.y)}, ${AA(I.z)}, ${AA(I.w)})`; const g = I; return `vec4(${AA(g[0])}, ${AA(g[1])}, ${AA(g[2])}, ${AA(g[3])})`; } case "mat2": case "mat2x2": { - const g = I, B = g instanceof G.Matrix2 ? g.elements : I, C = new Array(4).fill(0).map((E, D) => AA(B[D])); + const g = I, B = g instanceof a.Matrix2 ? g.elements : I, C = new Array(4).fill(0).map((E, i) => AA(B[i])); return `${A}(${C.join(", ")})`; } case "mat2x3": { @@ -690,7 +291,7 @@ class GC extends zI { } case "mat3": case "mat3x3": { - const g = I, B = g instanceof G.Matrix3 ? g.elements : I, C = new Array(9).fill(0).map((E, D) => AA(B[D])); + const g = I, B = g instanceof a.Matrix3 ? g.elements : I, C = new Array(9).fill(0).map((E, i) => AA(B[i])); return `${A}(${C.join(", ")})`; } case "mat3x2": { @@ -703,7 +304,7 @@ class GC extends zI { } case "mat4": case "mat4x4": { - const g = I, B = g instanceof G.Matrix4 ? g.elements : I, C = new Array(16).fill(0).map((E, D) => AA(B[D])); + const g = I, B = g instanceof a.Matrix4 ? g.elements : I, C = new Array(16).fill(0).map((E, i) => AA(B[i])); return `${A}(${C.join(", ")})`; } case "mat4x2": { @@ -719,55 +320,55 @@ class GC extends zI { } } } -function v(Q, A) { - return new GC(Q, A); +function IA(Q, A) { + return new jB(Q, A); } -function Dg(Q) { +function gg(Q) { const A = String(Q); - if (uI(Q)) + if (pI(Q)) return `${A}(false)`; - if (HI(Q)) + if (JI(Q)) return `${A}(0.0)`; - if (xA(Q)) + if (dA(Q)) return `${A}(0)`; if (lA(Q)) return `${A}(0u)`; throw new Error(`Type not implemented: ${A}`); } -function fo(Q) { +function is(Q) { const A = String(Q); - if (uI(Q)) + if (pI(Q)) return `${A}(true)`; - if (HI(Q)) + if (JI(Q)) return `${A}(1.0)`; - if (xA(Q)) + if (dA(Q)) return `${A}(1)`; if (lA(Q)) return `${A}(1u)`; throw new Error(`Type not implemented: ${A}`); } -function bo(Q) { +function Ds(Q) { const A = String(Q); - if (uI(Q)) + if (pI(Q)) return `${A}(true)`; - if (HI(Q)) + if (JI(Q)) return `${A}(-1.0)`; - if (xA(Q)) + if (dA(Q)) return `${A}(-1)`; if (lA(Q)) return `${A}(0xFFFFFFFFu)`; throw new Error(`Type not implemented: ${A}`); } -const YB = " "; -class yC { +const NB = " "; +class zB { constructor({ indent: A } = {}) { - this.globals = /* @__PURE__ */ new Set(), this.statements = [], this.uniforms = {}, this.declares = /* @__PURE__ */ new Set(), this.updaters = [], this.sequence = 0, this.indent = YB, this.indent = A ?? YB; + this.globals = /* @__PURE__ */ new Set(), this.statements = [], this.uniforms = {}, this.declares = /* @__PURE__ */ new Set(), this.updaters = [], this.sequence = 0, this.indent = NB, this.indent = A ?? NB; } nextSequence() { return this.sequence++; } } -class d { +class l { constructor({ inTypes: A, outTypes: I, @@ -775,20 +376,20 @@ class d { update: B, globals: C, statements: E, - generate: D + generate: i }) { - this.inTypes = A ?? {}, this.outTypes = I ?? {}, this.inputs = g ?? {}, this.update = B, this.globals = C, this.statements = E, this.generate = D ?? (({ inputs: i, outputs: w, compile: s }) => { - var o, y; + this.inTypes = A ?? {}, this.outTypes = I ?? {}, this.inputs = g ?? {}, this.update = B, this.globals = C, this.statements = E, this.generate = i ?? (({ inputs: o, outputs: D, compile: w }) => { + var s, t; return { - globals: (o = this.globals) == null ? void 0 : o.call(this, { inputs: i, outputs: w, compile: s }), - statements: (y = this.statements) == null ? void 0 : y.call(this, { inputs: i, outputs: w, compile: s }) + globals: (s = this.globals) == null ? void 0 : s.call(this, { inputs: o, outputs: D, compile: w }), + statements: (t = this.statements) == null ? void 0 : t.call(this, { inputs: o, outputs: D, compile: w }) }; }); } get outputs() { const A = {}; for (const I in this.outTypes) - A[I] = new V(this, I); + A[I] = new Z(this, I); return A; } apply(A) { @@ -802,28 +403,28 @@ class d { const B = [ `// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})` ], C = []; - for (const w in I) { - const s = I[w]; - s && !g.declares.has(s) && (g.declares.add(s), C.push(w)); + for (const D in I) { + const w = I[D]; + w && !g.declares.has(w) && (g.declares.add(w), C.push(D)); } - const { globals: E, statements: D, uniforms: i } = this.generate({ + const { globals: E, statements: i, uniforms: o } = this.generate({ inputs: A, outputs: I, compile: g }); - for (const w of E ?? []) - g.globals.add(w); - for (const w in i) - g.uniforms[w] = i[w]; + for (const D of E ?? []) + g.globals.add(D); + for (const D in o) + g.uniforms[D] = o[D]; this.update && g.updaters.push(this.update); - for (const w of C) { - const s = I[w]; - s && (g.uniforms[s] || B.push(`${vQ(s, this.outTypes[w])};`)); + for (const D of C) { + const w = I[D]; + w && (g.uniforms[w] || B.push(`${zQ(w, this.outTypes[D])};`)); } - return D != null && D.length && (B.push("{"), B.push(...D.map((w) => g.indent + w)), B.push("}")), B; + return i != null && i.length && (B.push("{"), B.push(...i.map((D) => g.indent + D)), B.push("}")), B; } } -class hI extends d { +class wI extends l { constructor({ inTypes: A, outTypes: I, @@ -838,7 +439,7 @@ class hI extends d { inputs: g, update: B, globals: C, - generate: (D) => this.generateBlock(D) + generate: (i) => this.generateBlock(i) }), this.construct = E; } generateBlock({ @@ -846,95 +447,95 @@ class hI extends d { outputs: I, compile: g }) { - var k, R; + var c, h; const B = {}, C = {}; - for (const F in A) - A[F] != null && (B[F] = new zI(this.inTypes[F], A[F])); - for (const F in I) - I[F] != null && (C[F] = new UI(this.outTypes[F])); - const E = { roots: [] }, D = this.construct(B, C, E); - for (const F of ((k = this.globals) == null ? void 0 : k.call(this, { inputs: A, outputs: I, compile: g })) ?? []) - g.globals.add(F); - const i = [], w = /* @__PURE__ */ new Map(); - function s(F, a, S) { - let M = w.get(F); - if (!M) { - M = { + for (const y in A) + A[y] != null && (B[y] = new ZI(this.inTypes[y], A[y])); + for (const y in I) + I[y] != null && (C[y] = new NI(this.outTypes[y])); + const E = { roots: [] }, i = this.construct(B, C, E); + for (const y of ((c = this.globals) == null ? void 0 : c.call(this, { inputs: A, outputs: I, compile: g })) ?? []) + g.globals.add(y); + const o = [], D = /* @__PURE__ */ new Map(); + function w(y, S, F) { + let e = D.get(y); + if (!e) { + e = { sequence: g.nextSequence(), outNames: /* @__PURE__ */ new Map(), newOuts: /* @__PURE__ */ new Set() - }, w.set(F, M); - for (const c in F.inputs) { - let N = F.inputs[c]; - for (; N; ) { - if (N instanceof UI) { - N instanceof V && s(N.dyno, N.key); + }, D.set(y, e); + for (const k in y.inputs) { + let R = y.inputs[k]; + for (; R; ) { + if (R instanceof NI) { + R instanceof Z && w(R.dyno, R.key); break; } - if (typeof N.dynoOut != "function") + if (typeof R.dynoOut != "function") throw new Error( - `dynoOut is not a function for ${N.constructor.name}` + `dynoOut is not a function for ${R.constructor.name}` ); - N = N.dynoOut(); + R = R.dynoOut(); } } - i.push(F); + o.push(y); } - a && (S || M.newOuts.add(a), M.outNames.set(a, S ?? `${a}_${M.sequence}`)); + S && (F || e.newOuts.add(S), e.outNames.set(S, F ?? `${S}_${e.sequence}`)); } - for (const F of E.roots) - s(F); - for (const F in C) { - let a = (D == null ? void 0 : D[F]) ?? C[F]; - for (; a; ) { - if (a instanceof UI) { - a instanceof V && s(a.dyno, a.key, I[F]); + for (const y of E.roots) + w(y); + for (const y in C) { + let S = (i == null ? void 0 : i[y]) ?? C[y]; + for (; S; ) { + if (S instanceof NI) { + S instanceof Z && w(S.dyno, S.key, I[y]); break; } - a = a.dynoOut(); + S = S.dynoOut(); } - C[F] = a; + C[y] = S; } - const o = []; - for (const F of i) { - const a = {}, S = {}; - for (const N in F.inputs) { - let U = F.inputs[N]; - for (; U; ) { - if (U instanceof UI) { - if (U instanceof zI) - a[N] = U.getLiteral(); - else if (U instanceof V) { - const J = (R = w.get(U.dyno)) == null ? void 0 : R.outNames.get(U.key); - if (!J) + const s = []; + for (const y of o) { + const S = {}, F = {}; + for (const R in y.inputs) { + let N = y.inputs[R]; + for (; N; ) { + if (N instanceof NI) { + if (N instanceof ZI) + S[R] = N.getLiteral(); + else if (N instanceof Z) { + const U = (h = D.get(N.dyno)) == null ? void 0 : h.outNames.get(N.key); + if (!U) throw new Error( - `Source not found for ${U.dyno.constructor.name}.${U.key}` + `Source not found for ${N.dyno.constructor.name}.${N.key}` ); - a[N] = J; + S[R] = U; } break; } - U = U.dynoOut(); + N = N.dynoOut(); } } - const M = w.get(F) ?? { outNames: /* @__PURE__ */ new Map() }; - for (const [N, U] of M.outNames.entries()) - S[N] = U; - const c = F.compile({ inputs: a, outputs: S, compile: g }); - o.push(c); + const e = D.get(y) ?? { outNames: /* @__PURE__ */ new Map() }; + for (const [R, N] of e.outNames.entries()) + F[R] = N; + const k = y.compile({ inputs: S, outputs: F, compile: g }); + s.push(k); } - const y = []; - for (const F in I) - C[F] instanceof zI && y.push( - `${I[F]} = ${C[F].getLiteral()};` + const t = []; + for (const y in I) + C[y] instanceof ZI && t.push( + `${I[y]} = ${C[y].getLiteral()};` ); - return y.length > 0 && o.push(y), { statements: o.flatMap((F, a) => a === 0 ? F : ["", ...F]) }; + return t.length > 0 && s.push(t), { statements: s.flatMap((y, S) => S === 0 ? y : ["", ...y]) }; } } -function cA(Q, A, I, { update: g, globals: B } = {}) { - return new hI({ inTypes: Q, outTypes: A, construct: I, update: g, globals: B }); +function nA(Q, A, I, { update: g, globals: B } = {}) { + return new wI({ inTypes: Q, outTypes: A, construct: I, update: g, globals: B }); } -function gQ({ +function jQ({ inTypes: Q, outTypes: A, inputs: I, @@ -943,7 +544,7 @@ function gQ({ statements: C, generate: E }) { - return new d({ + return new l({ inTypes: Q, outTypes: A, inputs: I, @@ -953,7 +554,7 @@ function gQ({ generate: E }); } -function vQ(Q, A, I) { +function zQ(Q, A, I) { const g = typeof A == "string" ? A : A.type; if (!g) throw new Error(`Invalid DynoType: ${String(A)}`); @@ -964,8 +565,8 @@ function z(Q) { let A = !1; const I = Q.split(` `).map((E) => { - const D = E.trimEnd(); - return A ? D : D.length > 0 ? (A = !0, D) : null; + const i = E.trimEnd(); + return A ? i : i.length > 0 ? (A = !0, i) : null; }).filter((E) => E != null); for (; I.length > 0 && I[I.length - 1].length === 0; ) I.pop(); @@ -977,11 +578,11 @@ function z(Q) { const B = new RegExp(`^${g}`); return I.map((E) => E.replace(B, "")); } -function oA(Q) { +function wA(Q) { return z(Q).join(` `); } -class e extends d { +class r extends l { constructor({ a: A, outKey: I, @@ -991,24 +592,24 @@ class e extends d { super({ inTypes: B, outTypes: E, inputs: { a: A } }), this.outKey = I; } dynoOut() { - return new V(this, this.outKey); + return new Z(this, this.outKey); } } -class DA extends d { +class DA extends l { constructor({ a: A, b: I, outKey: g, outTypeFunc: B }) { - const C = { a: CA(A), b: CA(I) }, E = B(CA(A), CA(I)), D = { [g]: E }; - super({ inTypes: C, outTypes: D, inputs: { a: A, b: I } }), this.outKey = g; + const C = { a: CA(A), b: CA(I) }, E = B(CA(A), CA(I)), i = { [g]: E }; + super({ inTypes: C, outTypes: i, inputs: { a: A, b: I } }), this.outKey = g; } dynoOut() { - return new V(this, this.outKey); + return new Z(this, this.outKey); } } -class OI extends d { +class uI extends l { constructor({ a: A, b: I, @@ -1016,1144 +617,566 @@ class OI extends d { outKey: B, outTypeFunc: C }) { - const E = { a: CA(A), b: CA(I), c: CA(g) }, D = C(CA(A), CA(I), CA(g)), i = { [B]: D }; - super({ inTypes: E, outTypes: i, inputs: { a: A, b: I, c: g } }), this.outKey = B; + const E = { a: CA(A), b: CA(I), c: CA(g) }, i = C(CA(A), CA(I), CA(g)), o = { [B]: i }; + super({ inTypes: E, outTypes: o, inputs: { a: A, b: I, c: g } }), this.outKey = B; } dynoOut() { - return new V(this, this.outKey); - } -} -const hC = Number.parseInt(G.REVISION), RC = hC >= 179, Ug = new Float32Array(1), QQ = new Uint32Array(Ug.buffer), zQ = "Float16Array" in globalThis, Gg = zQ ? new globalThis.Float16Array(1) : null, kC = new Uint16Array(Gg == null ? void 0 : Gg.buffer); -function FC(Q) { - const A = Math.sqrt(Q.reduce((I, g) => I + g * g, 0)); - return Q.map((I) => I / A); -} -function qg(Q) { - return Ug[0] = Q, QQ[0]; -} -function xg(Q) { - return QQ[0] = Q, Ug[0]; -} -const VA = zQ ? Po : uo, NA = zQ ? To : Oo; -function Po(Q) { - return Gg[0] = Q, kC[0]; -} -function uo(Q) { - Ug[0] = Q; - const A = QQ[0], I = A >> 31 & 1, g = A >> 23 & 255, B = A & 8388607, C = I << 15; - if (g === 255) - return B !== 0 ? C | 32767 : C | 31744; - const E = g - 127 + 15; - if (E >= 31) - return C | 31744; - if (E <= 0) { - if (E < -10) - return C; - const i = (B | 8388608) >> 1 - E + 13; - return C | i; + return new Z(this, this.outKey); } - const D = B >> 13; - return C | E << 10 | D; } -function To(Q) { - return kC[0] = Q, Gg[0]; -} -function Oo(Q) { - const A = Q >> 15 & 1, I = Q >> 10 & 31, g = Q & 1023; - let B; - if (I === 0) - if (g === 0) - B = A << 31; - else { - let C = g, E = -14; - for (; (C & 1024) === 0; ) - C <<= 1, E--; - C &= 1023; - const D = E + 127, i = C << 13; - B = A << 31 | D << 23 | i; - } - else if (I === 31) - g === 0 ? B = A << 31 | 2139095040 : B = A << 31 | 2143289344; - else { - const C = I - 15 + 127, E = g << 13; - B = A << 31 | C << 23 | E; +const V = { type: "Gsplat" }, KA = { type: "CovSplat" }, gQ = { type: "PackedSplats" }, _Q = { type: "ExtSplats" }, _B = { type: "CovSplats" }, os = (Q) => new QC({ packedSplats: Q }), $B = (Q, A) => new CC({ packedSplats: Q, index: A }), AC = (Q, A, I, g) => new EC({ packedSplats: Q, index: A, base: I, count: g }), ss = (Q) => new iC({ extSplats: Q }), IC = (Q, A) => new DC({ extSplats: Q, index: A }), ws = (Q) => new oC({ covsplats: Q }), as = (Q, A) => new sC({ covSplats: Q, index: A }), Og = (Q) => new wC({ gsplat: Q }), fA = (Q) => new aC({ gsplat: Q }), BI = ({ + gsplat: Q, + flags: A, + index: I, + center: g, + scales: B, + quaternion: C, + rgba: E, + rgb: i, + opacity: o, + x: D, + y: w, + z: s, + r: t, + g: G, + b: c +}) => new tC({ + gsplat: Q, + flags: A, + index: I, + center: g, + scales: B, + quaternion: C, + rgba: E, + rgb: i, + opacity: o, + x: D, + y: w, + z: s, + r: t, + g: G, + b: c +}), LQ = (Q) => new hC({ gsplat: Q }), gC = (Q, { + scale: A, + rotate: I, + translate: g, + recolor: B +}) => new yC({ gsplat: Q, scale: A, rotate: I, translate: g, recolor: B }), $Q = (Q) => new FC({ index: Q }), nQ = (Q) => new RC({ index: Q }), NA = wA(` + struct Gsplat { + vec3 center; + uint flags; + vec3 scales; + int index; + vec4 quaternion; + vec4 rgba; + }; + const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; + + bool isGsplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; } - return QQ[0] = B, Ug[0]; -} -function jA(Q) { - return Math.max(0, Math.min(255, Math.round(Q * 255))); -} -function lg(Q) { - return Math.max(-127, Math.min(127, Math.round(Q * 127))); -} -function mo(Q) { - return Q / 255; -} -function Zo(Q) { - return Q / 127; -} -class Vo { - // Create a DataCache with a given function that fetches data not in the cache. +`), LI = wA(` + struct CovSplat { + vec3 center; + uint flags; + vec4 rgba; + vec3 xxyyzz; + int index; + vec3 xyxzyz; + }; + + bool isCovSplatActive(uint flags) { + return (flags & GSPLAT_FLAG_ACTIVE) != 0u; + } +`), QQ = wA(` + struct PackedSplats { + usampler2DArray textureArray; + int numSplats; + vec4 rgbMinMaxLnScaleMinMax; + bool lodOpacity; + }; +`); +class QC extends r { constructor({ - asyncFetch: A, - dispose: I, - maxItems: g = 5 + packedSplats: A }) { - this.asyncFetch = A, this.dispose = I, this.maxItems = g, this.items = [], this.pending = /* @__PURE__ */ new Map(); - } - has(A) { - return this.items.some((I) => I.key === A); + super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.numSplats} = ${I.a}.numSplats;` + ]; } - getImmediate(A) { - const I = this.items.findIndex((g) => g.key === A); - if (I >= 0) { - const g = this.items.splice(I, 1)[0]; - return this.items.push(g), g.data; +} +const BC = wA(` + bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { + if ((index >= 0) && (index < numSplats)) { + uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); + unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); + return true; + } else { + return false; } } - // Fetch data for the key, returning cached data if available. - async getFetch(A) { - const I = this.getImmediate(A); - if (I !== void 0) - return I; - let g = this.pending.get(A); - return g || (g = this.asyncFetch(A).then((B) => { - for (this.pending.delete(A), this.items.push({ key: A, data: B }); this.items.length > this.maxItems; ) { - const C = this.items.shift(); - C && this.dispose && this.dispose(C.data); +`); +class CC extends l { + constructor({ + packedSplats: A, + index: I + }) { + super({ + inTypes: { packedSplats: gQ, index: "int" }, + outTypes: { gsplat: V }, + inputs: { packedSplats: A, index: I }, + globals: () => [NA, QQ, BC], + statements: ({ inputs: g, outputs: B }) => { + const { gsplat: C } = B; + if (!C) + return []; + const { packedSplats: E, index: i } = g; + let o; + return E && i ? o = z(` + ${C}.flags = 0u; + if (readPackedArray(${E}.textureArray, ${E}.numSplats, ${E}.rgbMinMaxLnScaleMinMax, ${i}, ${C})) { + if (${E}.lodOpacity) { + ${C}.rgba.a = 2.0 * ${C}.rgba.a; + } + bool zeroSize = all(equal(${C}.scales, vec3(0.0, 0.0, 0.0))); + ${C}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `) : o = [`${C}.flags = 0u;`], o.push(`${C}.index = ${i ?? "0"};`), o; } - return B; - }), this.pending.set(A, g), g); + }); } -} -function Xo(Q, A) { - const I = Object.entries(Q).map(([g, B]) => [ - g, - A(B, g) - ]); - return Object.fromEntries(I); -} -function Wo(Q, A) { - const I = Object.entries(Q).map(([g, B]) => [g, A(B, g)]).filter(([g, B]) => B !== void 0); - return Object.fromEntries(I); -} -function _Q(Q) { - const A = [], I = /* @__PURE__ */ new Set(); - function g(B) { - B && typeof B == "object" && !I.has(B) && (I.add(B), B instanceof ArrayBuffer ? A.push(B) : ArrayBuffer.isView(B) ? A.push(B.buffer) : Array.isArray(B) ? B.forEach(g) : Object.values(B).forEach(g)); + dynoOut() { + return new Z(this, "gsplat"); } - return g(Q), A; -} -function eQ(Q, A) { - return new Array(Q).fill(null).map((I, g) => A(g)); } -class aC { +class EC extends l { constructor({ - // Allocate a new item with the given args - allocate: A, - // Dispose of an item (optional, if GC is enough) - dispose: I, - // Check if an existing item in the list is valid for the given args, - // allowing you to store heterogeneous items in the list. - valid: g + packedSplats: A, + index: I, + base: g, + count: B }) { - this.items = [], this.allocate = A, this.dispose = I, this.valid = g; + super({ + inTypes: { + packedSplats: gQ, + index: "int", + base: "int", + count: "int" + }, + outTypes: { gsplat: V }, + inputs: { packedSplats: A, index: I, base: g, count: B }, + globals: () => [NA, QQ, BC], + statements: ({ inputs: C, outputs: E }) => { + const { gsplat: i } = E; + if (!i) + return []; + const { packedSplats: o, index: D, base: w, count: s } = C; + let t; + return o && D && w && s ? t = z(` + ${i}.flags = 0u; + if (readPackedArray(${o}.textureArray, ${o}.numSplats, ${o}.rgbMinMaxLnScaleMinMax, ${D}, ${i})) { + if (${o}.lodOpacity) { + ${i}.rgba.a = 2.0 * ${i}.rgba.a; + } + bool zeroSize = all(equal(${i}.scales, vec3(0.0, 0.0, 0.0))); + ${i}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; + } + `) : t = [`${i}.flags = 0u;`], t.push(`${i}.index = ${D ?? "0"};`), t; + } + }); } - // Allocate a new item from the free list, first checking if a existing item - // on the freelist is valid for the given args. - alloc(A) { - for (; ; ) { - const I = this.items.pop(); - if (!I) - break; - if (this.valid(I, A)) - return I; - this.dispose && this.dispose(I); + dynoOut() { + return new Z(this, "gsplat"); + } +} +const AB = wA(` + struct ExtSplats { + usampler2DArray textureArray1; + usampler2DArray textureArray2; + int numSplats; + }; +`); +class iC extends r { + constructor({ extSplats: A }) { + super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.numSplats} = ${I.a}.numSplats;` + ]; + } +} +const ts = wA(` + void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { + gsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); + gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; } - return this.allocate(A); } - free(A) { - this.items.push(A); +`); +class DC extends l { + constructor({ + extSplats: A, + index: I + }) { + super({ + inTypes: { extSplats: _Q, index: "int" }, + outTypes: { gsplat: V }, + inputs: { extSplats: A, index: I }, + globals: () => [NA, AB, ts], + statements: ({ inputs: g, outputs: B }) => { + const { gsplat: C } = B; + if (!C) + return [`${C}.flags = 0u;`]; + const { extSplats: E, index: i } = g; + return E && i ? z(` + readExtArrays(${E}.textureArray1, ${E}.textureArray2, ${E}.numSplats, ${i}, ${C}); + `) : [`${C}.flags = 0u;`]; + } + }); } - disposeAll() { - let A; - for (A = this.items.pop(); A; ) - this.dispose && this.dispose(A), A = this.items.pop(); + dynoOut() { + return new Z(this, "gsplat"); } } -function rQ(Q, A, I, g, B, C, E, D, i, w, s, o, y, h, k, R) { - const F = A * 4, [a, S] = Q; - a[F] = qg(I), a[F + 1] = qg(g), a[F + 2] = qg(B), a[F + 3] = VA(y), S[F] = VA(h) | VA(k) << 16, S[F + 1] = VA(R) | VA(Math.log(C)) << 16, S[F + 2] = VA(Math.log(E)) | VA(Math.log(D)) << 16, S[F + 3] = LC(i, w, s, o); -} -function Tg(Q, A) { - const I = $Q, g = A * 4, [B, C] = Q; - return I.center.x = xg(B[g]), I.center.y = xg(B[g + 1]), I.center.z = xg(B[g + 2]), I.opacity = NA(B[g + 3] & 65535), I.color.r = NA(C[g] & 65535), I.color.g = NA(C[g] >>> 16), I.color.b = NA(C[g + 1] & 65535), I.scales.x = Math.exp(NA(C[g + 1] >>> 16)), I.scales.y = Math.exp(NA(C[g + 2] & 65535)), I.scales.z = Math.exp(NA(C[g + 2] >>> 16)), YC(C[g + 3], I.quaternion), I; -} -function nQ(Q, A, I, g, B, C, E, D, i, w, s, o, y, h, k, R, F) { - const a = (F == null ? void 0 : F.rgbMin) ?? 0, M = ((F == null ? void 0 : F.rgbMax) ?? 1) - a, c = jA((h - a) / M), N = jA((k - a) / M), U = jA((R - a) / M), J = jA(F != null && F.lodOpacity ? 0.5 * y : y), t = QB( - SC.set(i, w, s, o) - ), H = t & 255, K = t >>> 8 & 255, Y = t >>> 16 & 255, L = (F == null ? void 0 : F.lnScaleMin) ?? pA, n = 254 / (((F == null ? void 0 : F.lnScaleMax) ?? fA) - L), r = C < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(C) - L) * n) + 1 - ) - ), p = E < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(E) - L) * n) + 1 - ) - ), m = D < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(D) - L) * n) + 1 - ) - ), IA = VA(I), X = VA(g), EA = VA(B), j = A * 4; - Q[j] = c | N << 8 | U << 16 | J << 24, Q[j + 1] = IA | X << 16, Q[j + 2] = EA | H << 16 | K << 24, Q[j + 3] = r | p << 8 | m << 16 | Y << 24; -} -function jo(Q, A, I, g, B) { - const C = VA(I), E = VA(g), D = VA(B), i = A * 4; - Q[i + 1] = C | E << 16, Q[i + 2] = D | Q[i + 2] & 4294901760; +class oC extends r { + constructor({ covsplats: A }) { + super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.numSplats} = ${I.a}.numSplats;` + ]; + } } -function vo(Q, A, I, g, B, C) { - const E = (C == null ? void 0 : C.lnScaleMin) ?? pA, i = 254 / (((C == null ? void 0 : C.lnScaleMax) ?? fA) - E), w = I < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(I) - E) * i) + 1 - ) - ), s = g < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(g) - E) * i) + 1 - ) - ), o = B < xI ? 0 : Math.min( - 255, - Math.max( - 1, - Math.round((Math.log(B) - E) * i) + 1 - ) - ), y = A * 4; - Q[y + 3] = w | s << 8 | o << 16 | Q[y + 3] & 4278190080; -} -const SC = new G.Quaternion(); -function zo(Q, A, I, g, B, C) { - const E = QB( - SC.set(I, g, B, C) - ), D = E & 255, i = E >>> 8 & 255, w = E >>> 16 & 255, s = A * 4; - Q[s + 2] = Q[s + 2] & 65535 | D << 16 | i << 24, Q[s + 3] = Q[s + 3] & 16777215 | w << 24; -} -function _o(Q, A, I, g, B, C, E) { - const D = (E == null ? void 0 : E.rgbMin) ?? 0, w = ((E == null ? void 0 : E.rgbMax) ?? 1) - D, s = jA((I - D) / w), o = jA((g - D) / w), y = jA((B - D) / w), h = jA(E != null && E.lodOpacity ? 0.5 * C : C), k = A * 4; - Q[k] = s | o << 8 | y << 16 | h << 24; -} -function $o(Q, A, I, g, B, C) { - const E = (C == null ? void 0 : C.rgbMin) ?? 0, i = ((C == null ? void 0 : C.rgbMax) ?? 1) - E, w = jA((I - E) / i), s = jA((g - E) / i), o = jA((B - E) / i), y = A * 4; - Q[y] = w | s << 8 | o << 16 | Q[y] & 4278190080; -} -function As(Q, A, I) { - const g = jA(I), B = A * 4; - Q[B] = Q[B] & 16777215 | g << 24; -} -const Is = new G.Vector3(), gs = new G.Vector3(), Qs = new G.Quaternion(), Bs = new G.Color(), $Q = { - center: Is, - scales: gs, - quaternion: Qs, - color: Bs, - opacity: 0 -}; -function Og(Q, A, I) { - const g = $Q, B = A * 4, C = Q[B], E = Q[B + 1], D = Q[B + 2], i = Q[B + 3], w = (I == null ? void 0 : I.rgbMin) ?? 0, o = ((I == null ? void 0 : I.rgbMax) ?? 1) - w; - g.color.set( - w + (C & 255) / 255 * o, - w + (C >>> 8 & 255) / 255 * o, - w + (C >>> 16 & 255) / 255 * o - ), g.opacity = (C >>> 24 & 255) / 255, I != null && I.lodOpacity && (g.opacity = 2 * g.opacity), g.center.set( - NA(E & 65535), - NA(E >>> 16 & 65535), - NA(D & 65535) - ); - const y = (I == null ? void 0 : I.lnScaleMin) ?? pA, k = (((I == null ? void 0 : I.lnScaleMax) ?? fA) - y) / 254, R = i & 255; - g.scales.x = R === 0 ? 0 : Math.exp(y + (R - 1) * k); - const F = i >>> 8 & 255; - g.scales.y = F === 0 ? 0 : Math.exp(y + (F - 1) * k); - const a = i >>> 16 & 255; - g.scales.z = a === 0 ? 0 : Math.exp(y + (a - 1) * k); - const S = D >>> 16 & 65535 | i >>> 8 & 16711680; - return HC(S, g.quaternion), g; -} -function BA(Q) { - const A = P, I = Math.max( - jQ, - Math.min(XA, Math.ceil(Q / A)) - ), g = Math.ceil(Q / (A * I)), B = A * I * g; - return { width: A, height: I, depth: g, maxSplats: B }; -} -function Cs(Q) { - const A = P, I = Math.max( - jQ, - Math.min(XA, Math.ceil(Q / A)) - ), g = Math.ceil(Q / (A * I)); - return A * I * g; -} -function mg() { - return navigator.platform.toLowerCase().startsWith("win") ? !1 : navigator.maxTouchPoints > 0 ? !0 : /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( - navigator.userAgent - ); -} -function AB() { - return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); -} -function IB() { - return !!navigator.xr && /Oculus/.test(navigator.userAgent); -} -function Es() { - return IB() && /Quest 2/.test(navigator.userAgent); -} -function Rg() { - return /iPhone|iPad/.test(navigator.userAgent); -} -function NC() { - return !!navigator.xr && Rg() && /Safari/.test(navigator.userAgent) && mg(); -} -function Ds(Q, A, I) { - const g = new Uint8Array(A * 4); - for (let B = 0; B < I / 2; B++) { - const C = B * A * 4, E = (I - 1 - B) * A * 4; - g.set(Q.subarray(C, C + A * 4)), Q.set( - Q.subarray(E, E + A * 4), - C - ), Q.set(g, E); - } - return Q; -} -function is(Q, A, I) { - const g = document.createElement("canvas"); - g.width = A, g.height = I; - const B = g.getContext("2d"); - if (!B) - throw new Error("Can't get 2d context"); - const C = B.createImageData(A, I); - return C.data.set(Q), B.putImageData(C, 0, 0), g.toDataURL("image/png"); -} -function gB(Q) { - const A = new G.Clock(Q.autoStart); - return A.startTime = Q.startTime, A.oldTime = Q.oldTime, A.elapsedTime = Q.elapsedTime, A.running = Q.running, A; -} -function ws(Q) { - return Object.fromEntries( - Object.entries(Q).filter(([A, I]) => I !== void 0) - ); -} -const cC = oA(` - precision highp float; - - in vec3 position; - - void main() { - gl_Position = vec4(position.xy, 0.0, 1.0); - } -`); -function MC(Q) { - const A = new G.Vector3(); - for (const I of Q) - A.add(I); - return A.divideScalar(Q.length); -} -function JC(Q) { - if (Q.length === 0) - return new G.Quaternion(); - const A = Q[0].clone(); - for (let I = 1; I < Q.length; I++) - Q[I].dot(Q[0]) < 0 ? (A.x -= Q[I].x, A.y -= Q[I].y, A.z -= Q[I].z, A.w -= Q[I].w) : (A.x += Q[I].x, A.y += Q[I].y, A.z += Q[I].z, A.w += Q[I].w); - return A.normalize(); -} -function UC(Q, A) { - const I = new G.Vector3(0, 0, 0).applyMatrix4(Q), g = new G.Vector3(0, 0, 0).applyMatrix4(A), B = new G.Vector3(0, 0, -1).applyMatrix4(Q).sub(I).normalize(), C = new G.Vector3(0, 0, -1).applyMatrix4(A).sub(g).normalize(), E = I.distanceTo(g), D = B.dot(C); - return { distance: E, coincidence: D }; -} -function os({ - matrix1: Q, - matrix2: A, - maxDistance: I -}) { - const g = new G.Vector3(0, 0, 0).applyMatrix4(Q), B = new G.Vector3(0, 0, 0).applyMatrix4(A); - return g.distanceTo(B) <= I; -} -function ss({ - matrix1: Q, - matrix2: A, - maxDistance: I, - minCoincidence: g -}) { - const { distance: B, coincidence: C } = UC(Q, A); - return B <= I && (g == null || C >= g); -} -function tC(Q, A) { - const [I, g] = [new G.Vector3(), new G.Quaternion()], [B, C] = [new G.Vector3(), new G.Quaternion()]; - Q.decompose(I, g, new G.Vector3()), A.decompose(B, C, new G.Vector3()); - const E = I.distanceTo(B), D = Math.abs(g.dot(C)); - return { distance: E, coorient: D }; -} -function Zg({ - matrix1: Q, - matrix2: A, - maxDistance: I, - minCoorient: g -}) { - const { distance: B, coorient: C } = tC(Q, A); - return B <= I && (g == null || C >= g); -} -function Gs(Q, A = 1e-3) { - return Math.abs(Q) < A ? 0 : Math.sign(Q); -} -function ys(Q) { - const A = Q.w < 0, I = lg(A ? -Q.x : Q.x), g = lg(A ? -Q.y : Q.y), B = lg(A ? -Q.z : Q.z), C = I & 255, E = g & 255, D = B & 255; - return C | E << 8 | D << 16; -} -function hs(Q, A) { - const I = Q << 24 >> 24, g = Q << 16 >> 24, B = Q << 8 >> 24; - A.set(I / 127, g / 127, B / 127, 0); - const C = A.x * A.x + A.y * A.y + A.z * A.z; - return A.w = Math.sqrt(Math.max(0, 1 - C)), A; -} -const Rs = new G.Quaternion(), dQ = new G.Vector3(); -function QB(Q) { - const A = Rs.copy(Q).normalize(); - A.w < 0 && A.set(-A.x, -A.y, -A.z, -A.w); - const I = 2 * Math.acos(A.w), g = Math.sqrt( - A.x * A.x + A.y * A.y + A.z * A.z - ), B = g < 1e-6 ? dQ.set(1, 0, 0) : dQ.set(A.x, A.y, A.z).divideScalar(g), C = Math.abs(B.x) + Math.abs(B.y) + Math.abs(B.z); - let E = B.x / C, D = B.y / C; - if (B.z < 0) { - const h = E; - E = (1 - Math.abs(D)) * (E >= 0 ? 1 : -1), D = (1 - Math.abs(h)) * (D >= 0 ? 1 : -1); - } - const i = E * 0.5 + 0.5, w = D * 0.5 + 0.5, s = Math.round(i * 255), o = Math.round(w * 255); - return Math.round(I * (255 / Math.PI)) << 16 | o << 8 | s; -} -function HC(Q, A) { - const I = Q & 255, g = Q >>> 8 & 255, B = Q >>> 16 & 255, C = I / 255, E = g / 255; - let D = (C - 0.5) * 2, i = (E - 0.5) * 2; - const w = 1 - (Math.abs(D) + Math.abs(i)), s = Math.max(-w, 0); - D += D >= 0 ? -s : s, i += i >= 0 ? -s : s; - const o = dQ.set(D, i, w).normalize(), h = B / 255 * Math.PI * 0.5, k = Math.sin(h), R = Math.cos(h); - return A.set(o.x * k, o.y * k, o.z * k, R), A; -} -function ks(Q) { - const A = Q.clone().normalize(), I = 2 * (A.w * A.x + A.y * A.z), g = 1 - 2 * (A.x * A.x + A.y * A.y), B = Math.atan2(I, g), C = 2 * (A.w * A.y - A.z * A.x), E = Math.abs(C) >= 1 ? Math.sign(C) * (Math.PI / 2) : Math.asin(C), D = 2 * (A.w * A.z + A.x * A.y), i = 1 - 2 * (A.y * A.y + A.z * A.z), w = Math.atan2(D, i), s = (B + Math.PI) / (2 * Math.PI), o = (E + Math.PI) / (2 * Math.PI), y = (w + Math.PI) / (2 * Math.PI), h = Math.round(s * 255), k = Math.round(o * 255); - return Math.round(y * 255) << 16 | k << 8 | h; -} -function Fs(Q, A) { - const I = Q & 255, g = Q >>> 8 & 255, B = Q >>> 16 & 255, C = I / 255, E = g / 255, D = B / 255, i = C * (2 * Math.PI) - Math.PI, w = E * (2 * Math.PI) - Math.PI, s = D * (2 * Math.PI) - Math.PI, o = Math.cos(i * 0.5), y = Math.sin(i * 0.5), h = Math.cos(w * 0.5), k = Math.sin(w * 0.5), R = Math.cos(s * 0.5), F = Math.sin(s * 0.5); - return A.w = o * h * R + y * k * F, A.x = y * h * R - o * k * F, A.y = o * k * R + y * h * F, A.z = o * h * F - y * k * R, A.normalize(), A; -} -function LC(Q, A, I, g) { - const B = Math.sqrt(Q * Q + A * A + I * I + g * g), C = (g < 0 ? -Q : Q) / B, E = (g < 0 ? -A : A) / B, D = (g < 0 ? -I : I) / B, i = (g < 0 ? -g : g) / B, w = 2 * Math.acos(i), s = Math.sqrt(C * C + E * E + D * D), o = s < 1e-6 ? 1 : C / s, y = s < 1e-6 ? 0 : E / s, h = s < 1e-6 ? 0 : D / s, k = Math.abs(o) + Math.abs(y) + Math.abs(h); - let R = o / k, F = y / k; - if (h < 0) { - const U = R; - R = (1 - Math.abs(F)) * (R >= 0 ? 1 : -1), F = (1 - Math.abs(U)) * (F >= 0 ? 1 : -1); - } - const a = R * 0.5 + 0.5, S = F * 0.5 + 0.5, M = Math.round(a * 1023), c = Math.round(S * 1023); - return Math.round(w * (4095 / Math.PI)) << 20 | c << 10 | M; -} -function YC(Q, A) { - const I = Q & 1023, g = Q >>> 10 & 1023, B = Q >>> 20 & 4095, C = I / 1023, E = g / 1023; - let D = (C - 0.5) * 2, i = (E - 0.5) * 2; - const w = 1 - (Math.abs(D) + Math.abs(i)), s = Math.max(-w, 0); - D += D >= 0 ? -s : s, i += i >= 0 ? -s : s; - const o = Math.sqrt(D * D + i * i + w * w), y = o < 1e-6 ? 0 : D / o, h = o < 1e-6 ? 0 : i / o, k = o < 1e-6 ? 0 : w / o, F = B / 4095 * Math.PI * 0.5, a = Math.sin(F), S = Math.cos(F); - return A.set(y * a, h * a, k * a, S), A; -} -function Lg(Q, A, I, g) { - const B = Math.round(Math.max(-127, Math.min(127, Q * 127))), C = Math.round(Math.max(-127, Math.min(127, A * 127))), E = Math.round(Math.max(-127, Math.min(127, I * 127))), D = Math.round(Math.max(-127, Math.min(127, g * 127))); - return B & 255 | (C & 255) << 8 | (E & 255) << 16 | (D & 255) << 24; -} -function as(Q, A, I, g) { - const C = 63 / ((g == null ? void 0 : g.sh1Max) ?? 1), E = A * 2; - for (let D = 0; D < 9; ++D) { - const i = I[D] * C, w = Math.round(Math.max(-63, Math.min(63, i))) & 127, s = D * 7, o = s + 7, y = Math.floor(s / 32), h = s - y * 32, k = w << h & 4294967295; - if (Q[E + y] |= k, o > y * 32 + 32) { - const R = w >>> 32 - h & 4294967295; - Q[E + y + 1] |= R; - } - } -} -function Ss(Q, A, I, g) { - const C = 1 / ((g == null ? void 0 : g.sh2Max) ?? 1); - Q[A * 4 + 0] = Lg( - I[0] * C, - I[1] * C, - I[2] * C, - I[3] * C - ), Q[A * 4 + 1] = Lg( - I[4] * C, - I[5] * C, - I[6] * C, - I[7] * C - ), Q[A * 4 + 2] = Lg( - I[8] * C, - I[9] * C, - I[10] * C, - I[11] * C - ), Q[A * 4 + 3] = Lg( - I[12] * C, - I[13] * C, - I[14] * C, - 0 - ); -} -function Ns(Q, A, I, g) { - const C = 31 / ((g == null ? void 0 : g.sh3Max) ?? 1), E = A * 4; - for (let D = 0; D < 21; ++D) { - const i = I[D] * C, w = Math.round(Math.max(-31, Math.min(31, i))) & 63, s = D * 6, o = s + 6, y = Math.floor(s / 32), h = s - y * 32, k = w << h & 4294967295; - if (Q[E + y] |= k, o > y * 32 + 32) { - const R = w >>> 32 - h & 4294967295; - Q[E + y + 1] |= R; - } - } -} -function lI(Q, A, I) { - const g = Math.abs(Q), B = Math.abs(A), C = Math.abs(I), E = Math.max(g, B, C), D = Math.floor(Math.log2(E)), i = Math.max(0, Math.min(31, D + 15)), w = 2 ** (i - 15) / 255, s = Math.round(Math.max(0, Math.min(255, g / w))), o = Math.round(Math.max(0, Math.min(255, B / w))), y = Math.round(Math.max(0, Math.min(255, C / w))), h = i << 3 | ((Q < 0 ? 1 : 0) | (A < 0 ? 2 : 0) | (I < 0 ? 4 : 0)); - return s | o << 8 | y << 16 | h << 24; -} -function cs(Q) { - const A = $Q.color, g = 2 ** ((Q >>> 27 & 31) - 15) / 255, B = (Q & 255) * g, C = (Q >>> 8 & 255) * g, E = (Q >>> 16 & 255) * g; - return A.r = Q & 16777216 ? -B : B, A.g = Q & 33554432 ? -C : C, A.b = Q & 67108864 ? -E : E, A; -} -function Ms(Q, A, I) { - const g = A * 4; - for (let B = 0; B < 3; ++B) { - const C = B * 3; - Q[g + B] = lI(I[C], I[C + 1], I[C + 2]); - } -} -function Js(Q, A, I, g, B) { - const C = I * 4; - for (let E = 0; E < 3; ++E) { - const D = E * 3; - Q[C + E] = lI(g[D], g[D + 1], g[D + 2]); - } - Q[C + 3] = lI(B[0], B[1], B[2]); - for (let E = 1; E < 5; ++E) { - const D = E * 5; - A[C + (E - 1)] = lI( - B[D], - B[D + 1], - B[D + 2] - ); - } -} -function Us(Q, A, I, g) { - const B = I * 4; - for (let C = 0; C < 4; ++C) { - const E = C * 3; - Q[B + C] = lI( - g[E], - g[E + 1], - g[E + 2] - ); - } - for (let C = 4; C < 7; ++C) { - const E = C * 3; - A[B + (C - 4)] = lI( - g[E], - g[E + 1], - g[E + 2] - ); - } -} -function KC(Q, A) { - const I = []; - let g = 0, B = null; - const C = new ao((i, w) => { - if (I.push(i), g += i.length, w || g >= A) { - const s = new Uint8Array(g); - let o = 0; - for (const y of I) - s.set(y, o), o += y.length; - B = s.slice(0, A); +const Gs = wA(` + void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { + covsplat.flags = 0u; + if ((index >= 0) && (index < numSplats)) { + ivec3 coord = splatTexCoord(index); + uvec4 packed1 = texelFetch(texture1, coord, 0); + uvec4 packed2 = texelFetch(texture2, coord, 0); + unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); + covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; + gsplat.index = index; } - }), E = 1024; - let D = 0; - for (; B == null && D < Q.length; ) { - const i = Q.slice(D, D + E); - C.push(i, !1), D += E; } - if (B == null && (C.push(new Uint8Array(), !0), B == null)) - throw new Error("Failed to decompress partial gzip"); - return B; -} -class eC { +`); +class sC extends l { constructor({ - fileBytes: A, - chunkBytes: I = 64 * 1024 + covSplats: A, + index: I }) { - this.fileBytes = A, this.chunkBytes = I, this.chunks = [], this.totalBytes = 0; - const g = new DecompressionStream("gzip"), B = new Blob([A]).stream().pipeThrough(g); - this.reader = B.getReader(); + super({ + inTypes: { covSplats: _B, index: "int" }, + outTypes: { covsplat: KA }, + inputs: { covSplats: A, index: I }, + globals: () => [NA, LI, Gs], + statements: ({ inputs: g, outputs: B }) => { + const { covsplat: C } = B; + if (!C) + return [`${C}.flags = 0u;`]; + const { covSplats: E, index: i } = g; + return E && i ? z(` + readCovArrays(${E}.textureArray, ${E}.numSplats, ${i}, ${C}); + `) : [`${C}.flags = 0u;`]; + } + }); } - async read(A) { - for (; this.totalBytes < A; ) { - const { value: C, done: E } = await this.reader.read(); - if (E) - break; - this.chunks.push(C), this.totalBytes += C.length; - } - if (this.totalBytes < A) - throw new Error( - `Unexpected EOF: needed ${A}, got ${this.totalBytes}` - ); - const I = new Uint8Array(this.totalBytes); - let g = 0; - for (const C of this.chunks) - I.set(C, g), g += C.length; - const B = I.subarray(0, A); - return this.chunks = [I.subarray(A)], this.totalBytes -= A, B; + dynoOut() { + return new Z(this, "covsplat"); } } -const ek = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - DataCache: Vo, - FreeList: aC, - GunzipReader: eC, - IDENT_VERTEX_SHADER: cC, - Sint8ToFloat: Zo, - Uint8ToFloat: mo, - averagePositions: MC, - averageQuaternions: JC, - cloneClock: gB, - coinciDist: UC, - computeMaxSplats: Cs, - coorientDist: tC, - decodeExtRgb: cs, - decodeExtSplat: Tg, - decodeQuatEulerXyz888: Fs, - decodeQuatOctXy1010R12: YC, - decodeQuatOctXy88R8: HC, - decodeQuatXyz888: hs, - decompressPartialGzip: KC, - encodeExt3Rgb: Us, - encodeExtRgb: lI, - encodeExtSh12Rgb: Js, - encodeExtSh1Rgb: Ms, - encodeExtSplat: rQ, - encodeQuatEulerXyz888: ks, - encodeQuatOctXy1010R12: LC, - encodeQuatOctXy88R8: QB, - encodeQuatXyz888: ys, - encodeSh1Rgb: as, - encodeSh2Rgb: Ss, - encodeSh3Rgb: Ns, - epsilonSign: Gs, - flipPixels: Ds, - floatBitsToUint: qg, - floatToSint8: lg, - floatToUint8: jA, - fromHalf: NA, - getTextureSize: BA, - getTransferable: _Q, - isAndroid: AB, - isIos: Rg, - isMobile: mg, - isOculus: IB, - isQuest2: Es, - isVisionPro: NC, - mapFilterObject: Wo, - mapObject: Xo, - newArray: eQ, - normalize: FC, - omitUndefined: ws, - pixelsToPngUrl: is, - setPackedSplat: nQ, - setPackedSplatCenter: jo, - setPackedSplatOpacity: As, - setPackedSplatQuat: zo, - setPackedSplatRgb: $o, - setPackedSplatRgba: _o, - setPackedSplatScales: vo, - threeMrtArray: RC, - threeRevision: hC, - toHalf: VA, - uintBitsToFloat: xg, - unpackSplat: Og, - withinCoinciDist: ss, - withinCoorientDist: Zg, - withinDist: os -}, Symbol.toStringTag, { value: "Module" })); -class ts { - constructor() { - this.messages = {}, this.messageIdNext = 0, this.worker = new Eo(), this.worker.onmessage = (A) => this.onMessage(A); - } - makeMessageId() { - return ++this.messageIdNext; - } - makeMessagePromiseId() { - const A = this.makeMessageId(), I = new Promise((g, B) => { - this.messages[A] = { resolve: g, reject: B }; +class wC extends l { + constructor({ gsplat: A }) { + super({ + inTypes: { gsplat: V }, + outTypes: { covsplat: KA }, + inputs: { gsplat: A }, + globals: () => [NA, LI], + statements: ({ inputs: I, outputs: g }) => { + const { gsplat: B } = I, { covsplat: C } = g; + return B ? z(` + ${C}.flags = 0u; + if (isGsplatActive(${B}.flags)) { + ${C}.flags = ${B}.flags; + ${C}.index = ${B}.index; + ${C}.rgba = ${B}.rgba; + ${C}.center = ${B}.center; + mat3 m = scaleQuaternionToMatrix(${B}.scales, ${B}.quaternion); + m = m * transpose(m); + ${C}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); + ${C}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); + } + `) : [`${C}.flags = 0u;`]; + } }); - return { id: A, promise: I }; } - onMessage(A) { - const { id: I, result: g, error: B } = A.data, C = this.messages[I]; - C && (delete this.messages[I], B ? C.reject(B) : C.resolve(g)); - } - // Invoke an RPC on the worker with the given name and arguments. - // The normal usage of a worker is to run one activity at a time, - // but this function allows for concurrent calls, tagging each request - // with a unique message Id and awaiting a response to that same Id. - // The method will automatically transfer any ArrayBuffers in the - // arguments to the worker. If you'd like to transfer a copy of a - // buffer then you must clone it before passing to this function. - async call(A, I) { - const { id: g, promise: B } = this.makeMessagePromiseId(); - return this.worker.postMessage( - { name: A, args: I, id: g }, - { transfer: _Q(I) } - ), B; - } -} -let rC = 4, Vg = 0; -const nC = [], dC = []; -async function Hs() { - const Q = nC.shift(); - if (Q) - return Q; - if (Vg < rC) { - const A = new ts(); - return Vg += 1, A; + dynoOut() { + return new Z(this, "covsplat"); } - return new Promise((A) => { - dC.push(A); - }); } -function Ls(Q) { - if (Vg > rC) { - Vg -= 1; - return; - } - const A = dC.shift(); - if (A) { - A(Q); - return; - } - nC.push(Q); -} -async function nI(Q) { - const A = await Hs(); - try { - return await Q(A); - } finally { - Ls(A); - } -} -const qC = '(function(){"use strict";class a{static __wrap(A){A=A>>>0;const g=Object.create(a.prototype);return g.__wbg_ptr=A,IA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,IA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_chunkdecoder_free(A,0)}finish(){const A=this.__destroy_into_raw(),g=C.chunkdecoder_finish(A);if(g[2])throw w(g[1]);return w(g[0])}push(A){const g=C.chunkdecoder_push(this.__wbg_ptr,A);if(g[1])throw w(g[0])}}Symbol.dispose&&(a.prototype[Symbol.dispose]=a.prototype.free);class Z{static __wrap(A){A=A>>>0;const g=Object.create(Z.prototype);return g.__wbg_ptr=A,gA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,gA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_csplatarray_free(A,0)}bhatt_lod(A){C.csplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return C.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){C.csplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return C.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,g){C.csplatarray_tiny_lod(this.__wbg_ptr,A,g)}to_extsplats(){const A=C.csplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_extsplats_lod(){const A=C.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats(){const A=C.csplatarray_to_packedsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats_lod(){const A=C.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}get maxShDegree(){return C.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return C.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(A){C.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){C.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(Z.prototype[Symbol.dispose]=Z.prototype.free);class T{static __wrap(A){A=A>>>0;const g=Object.create(T.prototype);return g.__wbg_ptr=A,QA.register(g,g.__wbg_ptr,g),g}__destroy_into_raw(){const A=this.__wbg_ptr;return this.__wbg_ptr=0,QA.unregister(this),A}free(){const A=this.__destroy_into_raw();C.__wbg_gsplatarray_free(A,0)}get maxShDegree(){return C.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return C.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(A){C.gsplatarray_bhatt_lod(this.__wbg_ptr,A)}has_lod(){return C.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(A){C.gsplatarray_inject_rgba8(this.__wbg_ptr,A)}len(){return C.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(A,g){C.gsplatarray_tiny_lod(this.__wbg_ptr,A,g)}to_extsplats(){const A=C.gsplatarray_to_extsplats(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_extsplats_lod(){const A=C.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(A[2])throw w(A[1]);return w(A[0])}to_packedsplats(A){const g=C.gsplatarray_to_packedsplats(this.__wbg_ptr,A);if(g[2])throw w(g[1]);return w(g[0])}to_packedsplats_lod(A){const g=C.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,A);if(g[2])throw w(g[1]);return w(g[0])}set maxShDegree(A){C.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,A)}set numSplats(A){C.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,A)}}Symbol.dispose&&(T.prototype[Symbol.dispose]=T.prototype.free);function wA(I,A,g,Q,B,D){const E=C.bhatt_lod_extsplats(I,A,g,R(Q)?0:M(Q),B,R(D)?0:M(D));if(E[2])throw w(E[1]);return w(E[0])}function GA(I,A,g,Q,B,D){const E=C.bhatt_lod_packedsplats(I,A,R(g)?0:M(g),Q,R(B)?0:M(B),D);if(E[2])throw w(E[1]);return w(E[0])}function oA(I,A,g){var Q=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),B=k,D=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k;const i=C.decode_to_csplatarray(Q,B,D,E,g);if(i[2])throw w(i[1]);return a.__wrap(i[0])}function yA(I,A,g,Q,B){var D=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k,i=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),y=k;const o=C.decode_to_extsplats(D,E,i,y,R(g)?0:M(g),R(Q)?0:M(Q),R(B)?0:M(B));if(o[2])throw w(o[1]);return a.__wrap(o[0])}function RA(I,A){var g=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),Q=k,B=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;const E=C.decode_to_gsplatarray(g,Q,B,D);if(E[2])throw w(E[1]);return a.__wrap(E[0])}function kA(I,A,g,Q,B,D){var E=R(I)?0:U(I,C.__wbindgen_malloc,C.__wbindgen_realloc),i=k,y=R(A)?0:U(A,C.__wbindgen_malloc,C.__wbindgen_realloc),o=k;const G=C.decode_to_packedsplats(E,i,y,o,g,R(Q)?0:M(Q),R(B)?0:M(B),R(D)?0:M(D));if(G[2])throw w(G[1]);return a.__wrap(G[0])}function FA(I){C.dispose_lod_tree(I)}function NA(I,A){const g=C.get_lod_tree_level(I,A);if(g[2])throw w(g[1]);return w(g[0])}function SA(I,A){const g=C.init_lod_tree(I,A);if(g[2])throw w(g[1]);return w(g[0])}function JA(I){const A=C.new_lod_tree(I);if(A[2])throw w(A[1]);return w(A[0])}function MA(I){const A=C.new_shared_lod_tree(I);if(A[2])throw w(A[1]);return w(A[0])}function hA(I,A,g){return C.sort32_splats(I,A,g)>>>0}function sA(I,A,g){return C.sort_splats(I,A,g)>>>0}function UA(I,A,g,Q,B,D,E){const i=C.tiny_lod_extsplats(I,A,g,R(Q)?0:M(Q),B,D,R(E)?0:M(E));if(i[2])throw w(i[1]);return w(i[0])}function HA(I,A,g,Q,B,D,E){const i=C.tiny_lod_packedsplats(I,A,R(g)?0:M(g),Q,B,R(D)?0:M(D),E);if(i[2])throw w(i[1]);return w(i[0])}function LA(I,A,g,Q,B,D,E,i,y,o,G){const S=O(Q,C.__wbindgen_malloc),J=k,h=O(B,C.__wbindgen_malloc),L=k,c=r(D,C.__wbindgen_malloc),H=k,s=r(E,C.__wbindgen_malloc),F=k,N=r(i,C.__wbindgen_malloc),d=k,x=r(y,C.__wbindgen_malloc),m=k,e=r(o,C.__wbindgen_malloc),K=k,Y=r(G,C.__wbindgen_malloc),f=k,p=C.traverse_lod_trees(I,A,R(g)?4294967297:Math.fround(g),S,J,h,L,c,H,s,F,N,d,x,m,e,K,Y,f);if(p[2])throw w(p[1]);return w(p[0])}function cA(I,A,g,Q,B){const D=O(I,C.__wbindgen_malloc),E=k,i=O(A,C.__wbindgen_malloc),y=k,o=O(g,C.__wbindgen_malloc),G=k,S=O(Q,C.__wbindgen_malloc),J=k,h=C.update_lod_trees(D,E,i,y,o,G,S,J,B);if(h[2])throw w(h[1]);return w(h[0])}function YA(){return{__proto__:null,"./spark_worker_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(z(A,g))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(A){const g=A,Q=typeof g=="boolean"?g:void 0;return R(Q)?16777215:Q?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(A,g){const Q=_(g),B=U(Q,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;q().setInt32(A+4,D,!0),q().setInt32(A+0,B,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(A,g){return A in g},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(A){return!A},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(A){const g=A;return typeof g=="object"&&g!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(A){return A===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(A,g){return A==g},__wbg___wbindgen_number_get_7579aab02a8a620c:function(A,g){const Q=g,B=typeof Q=="number"?Q:void 0;q().setFloat64(A+8,R(B)?0:B,!0),q().setInt32(A+0,!R(B),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(A,g){const Q=g,B=typeof Q=="string"?Q:void 0;var D=R(B)?0:U(B,C.__wbindgen_malloc,C.__wbindgen_realloc),E=k;q().setInt32(A+4,E,!0),q().setInt32(A+0,D,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(z(A,g))},__wbg_csplatarray_new:function(A){return Z.__wrap(A)},__wbg_error_a6fa202b58aa1cd3:function(A,g){let Q,B;try{Q=A,B=g,console.error(z(A,g))}finally{C.__wbindgen_free(Q,B,1)}},__wbg_get_4848e350b40afc16:function(A,g){return A[g>>>0]},__wbg_get_f96702c6245e4ef9:function(){return EA(function(A,g){return Reflect.get(A,g)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(A,g){return A[g>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(A,g){return A[g]},__wbg_gsplatarray_new:function(A){return T.__wrap(A)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(A){let g;try{g=A instanceof ArrayBuffer}catch{g=!1}return g},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(A){let g;try{g=A instanceof Uint8Array}catch{g=!1}return g},__wbg_length_0c32cb8543c8e4c8:function(A){return A.length},__wbg_length_1e701798fdcaa3b4:function(A){return A.length},__wbg_length_6e821edde497a532:function(A){return A.length},__wbg_length_a4ca9e78359b5f1f:function(A){return A.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_a560378ea1240b14:function(A){return new Uint8Array(A)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_41a22191b9bdfd66:function(A){return new Uint32Array(A>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(A,g,Q){Uint8Array.prototype.set.call(aA(A,g),Q)},__wbg_prototypesetcall_64c287a27cc24d27:function(A,g,Q){Uint16Array.prototype.set.call(KA(A,g),Q)},__wbg_prototypesetcall_e42275e601e14eeb:function(A,g,Q){Uint32Array.prototype.set.call(BA(A,g),Q)},__wbg_push_6bdbc990be5ac37b:function(A,g){return A.push(g)},__wbg_set_448126769bf7c181:function(A,g,Q){A.set(BA(g,Q))},__wbg_set_6be42768c690e380:function(A,g,Q){A[g]=Q},__wbg_set_81b4174352e6a095:function(A,g,Q){A.set(g,Q>>>0)},__wbg_set_8ee2d34facb8466e:function(){return EA(function(A,g,Q){return Reflect.set(A,g,Q)},arguments)},__wbg_set_index_338a66e40fc45dee:function(A,g,Q){A[g>>>0]=Q>>>0},__wbg_stack_3b0d974bbf31e44f:function(A,g){const Q=g.stack,B=U(Q,C.__wbindgen_malloc,C.__wbindgen_realloc),D=k;q().setInt32(A+4,D,!0),q().setInt32(A+0,B,!0)},__wbg_subarray_0f98d3fb634508ad:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbg_subarray_517cd0f1811ab872:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(A,g,Q){return A.subarray(g>>>0,Q>>>0)},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return z(A,g)},__wbindgen_init_externref_table:function(){const A=C.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}const IA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_chunkdecoder_free(I>>>0,1)),gA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_csplatarray_free(I>>>0,1)),QA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(I=>C.__wbg_gsplatarray_free(I>>>0,1));function M(I){const A=C.__externref_table_alloc();return C.__wbindgen_externrefs.set(A,I),A}function _(I){const A=typeof I;if(A=="number"||A=="boolean"||I==null)return`${I}`;if(A=="string")return`"${I}"`;if(A=="symbol"){const B=I.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=I.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(I)){const B=I.length;let D="[";B>0&&(D+=_(I[0]));for(let E=1;E1)Q=g[1];else return toString.call(I);if(Q=="Object")try{return"Object("+JSON.stringify(I)+")"}catch{return"Object"}return I instanceof Error?`${I.name}: ${I.message}\n${I.stack}`:Q}function KA(I,A){return I=I>>>0,dA().subarray(I/2,I/2+A)}function BA(I,A){return I=I>>>0,CA().subarray(I/4,I/4+A)}function aA(I,A){return I=I>>>0,l().subarray(I/1,I/1+A)}let t=null;function q(){return(t===null||t.buffer.detached===!0||t.buffer.detached===void 0&&t.buffer!==C.memory.buffer)&&(t=new DataView(C.memory.buffer)),t}let n=null;function qA(){return(n===null||n.byteLength===0)&&(n=new Float32Array(C.memory.buffer)),n}function z(I,A){return I=I>>>0,tA(I,A)}let X=null;function dA(){return(X===null||X.byteLength===0)&&(X=new Uint16Array(C.memory.buffer)),X}let V=null;function CA(){return(V===null||V.byteLength===0)&&(V=new Uint32Array(C.memory.buffer)),V}let W=null;function l(){return(W===null||W.byteLength===0)&&(W=new Uint8Array(C.memory.buffer)),W}function EA(I,A){try{return I.apply(this,A)}catch(g){const Q=M(g);C.__wbindgen_exn_store(Q)}}function R(I){return I==null}function O(I,A){const g=A(I.length*4,4)>>>0;return CA().set(I,g/4),k=I.length,g}function r(I,A){const g=A(I.length*4,4)>>>0;return qA().set(I,g/4),k=I.length,g}function U(I,A,g){if(g===void 0){const i=j.encode(I),y=A(i.length,1)>>>0;return l().subarray(y,y+i.length).set(i),k=i.length,y}let Q=I.length,B=A(Q,1)>>>0;const D=l();let E=0;for(;E127)break;D[B+E]=i}if(E!==Q){E!==0&&(I=I.slice(E)),B=g(B,Q,Q=E+I.length*3,1)>>>0;const i=l().subarray(B+E,B+Q),y=j.encodeInto(I,i);E+=y.written,B=g(B,Q,E,1)>>>0}return k=E,B}function w(I){const A=C.__wbindgen_externrefs.get(I);return C.__externref_table_dealloc(I),A}let v=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});v.decode();const xA=2146435072;let $=0;function tA(I,A){return $+=A,$>=xA&&(v=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),v.decode(),$=A),v.decode(l().subarray(I,I+A))}const j=new TextEncoder;"encodeInto"in j||(j.encodeInto=function(I,A){const g=j.encode(I);return A.set(g),{read:I.length,written:g.length}});let k=0,C;function PA(I,A){return C=I.exports,t=null,n=null,X=null,V=null,W=null,C.__wbindgen_start(),C}async function bA(I,A){if(typeof Response=="function"&&I instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(I,A)}catch(B){if(I.ok&&g(I.type)&&I.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",B);else throw B}const Q=await I.arrayBuffer();return await WebAssembly.instantiate(Q,A)}else{const Q=await WebAssembly.instantiate(I,A);return Q instanceof WebAssembly.Instance?{instance:Q,module:I}:Q}function g(Q){switch(Q){case"basic":case"cors":case"default":return!0}return!1}}async function fA(I){if(C!==void 0)return C;I!==void 0&&(Object.getPrototypeOf(I)===Object.prototype?{module_or_path:I}=I:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),I===void 0&&(I=new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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gICAeEYNBCADKQJMIR0gAygCVCEMIANBgICAgHg2AlQgDEGAgICAeEYNBCADKQJYISAgAygCPCERIANBgICAgHg2AjwgEUGAgICAeEYNBCADKQJAISIgAygCMCEPIANBgICAgHg2AjAgD0GAgICAeEYNBCADKQI0ISMgAigCzAEiBSACKALAASIGRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIUIAZBACAGIBRNG2tBDGxqIgYgGTcCBCAGIAQ2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIBo3AgQgBCAHNgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAcNwIEIAQgCTYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgHjcCBCAEIAs2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEgAigCyAEgBWoiBCAGQQAgBCAGTxtrQQxsaiIEIB03AgQgBCAINgIAIAIgBUEBaiIFNgLMASACKALAASIGIAVGBEAgAkHAAWpBoMLBABCkBiACKALAASEGIAIoAswBIQULIAIoAsQBIAIoAsgBIAVqIgQgBkEAIAQgBk8ba0EMbGoiBCAgNwIEIAQgDDYCACACIAVBAWoiBTYCzAEgAigCwAEiBiAFRgRAIAJBwAFqQaDCwQAQpAYgAigCwAEhBiACKALMASEFCyACKALEASACKALIASAFaiIEIAZBACAEIAZPG2tBDGxqIgQgIjcCBCAEIBE2AgAgAiAFQQFqIgU2AswBIAIoAsABIgYgBUYEQCACQcABakGgwsEAEKQGIAIoAsABIQYgAigCzAEhBQsgAigCxAEg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SxsNDyAEEKICCyADQQA2AlggA0KAgICAwAA3AlAgA0EANgKMASADQoCAgIDAADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCINIAJBBXQiCWoiBSgCACIGIAAoAggiBEkEQCAAKAIEIgsgBkEkbGoiBv1dAgggBioCECIB/SACIAH9IAMgA/0JAkwiLv3nAf1oIi39HwL8BCEaIC39HwH8BCEbIC39HwD8BCEcIAcgAkEBaiIITQRAIAIhCgwDCyAHQQFrIQogFUEBcQRAIAchCAwDCyAJIA1qQSBqIQYDQCAGKAIAIgkgBE8NAiALIAlBJGxqIgn9XQIIIAkqAhAiAf0gAiAB/SADIC795wH9aCIt/R8A/AQgHFIgLf0fAfwEIBtSckUgLf0fAvwEIBpRcUUEQCAIQQFrIQoMBAsgBkEgaiEGIAcgCEEBaiIIRw0ACyAHIQgMAgsgBiAEQdTAxwAQjAcACyAJIARB1MDHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayILrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiI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ADcChAEgA0EANgJcIANBADYCgAEgB0UEQEL///////////8AIR1CgICAgICAgICAfyEfQoCAgICAgICAgH8hHkKAgICAgICAgIB/ISBC////////////ACEhQv///////////wAhIgwEC0KAgICAgICAgIB/ISBC////////////ACEiQQAhAkL///////////8AISFC////////////ACEdQoCAgICAgICAgH8hHkKAgICAgICAgIB/IR8DQAJAAkAgAygCOCIWIAJBBXQiCWoiBigCACIFIAAoAggiBEkEQCAAKAIEIgogBUEYbGr9AAIAICz9DQABAgMEBQYHCAkKCwgJCgsgA/0JAkwiLf3nAf1oIiz9HwL8BCEaICz9HwH8BCEbICz9HwD8BCEcIAcgAkEBaiIITQRAIAIhCwwDCyAHQQFrIQsgDkEBcQRAIAchCAwDCyAJIBZqQSBqIQUDQCAFKAIAIgkgBE8NAiAKIAlBGGxq/QACACAs/Q0AAQIDBAUGBwgJCgsICQoLIC395wH9aCIs/R8A/AQgHFIgLP0fAfwEIBtSckUgLP0fAvwEIBpRcUUEQCAIQQFrIQsMBAsgBUEgaiEFIAcgCEEBaiIIRw0ACyAHIQgMAgsgBSAEQdy7xwAQjAcACyAJIARB3LvHABCMBwALIB8gGiAaIB9TGyEfIB4gGyAbIB5TGyEeICAgHCAcICBTGyEgIB0gGiAaIB1VGyEdICEgGyAbICFVGyEhICIgHCAcICJVGyEiIAMgAygCgAFBAWo2AoABIAMpA/gBIhogCCACayIMrYUiG0I4hiAbQoD+A4NCKIaEIBtCgID8B4NCGIYgG0KAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhELSgaqbq/qC16d/fiIaQjiGIBpCgP4Dg0IohoQgGkKAgPwHg0IYhiAaQoCAgPgPg0IIhoSEIBpCCIhCgICA+A+DIBpCGIhCgID8B4OEIBpCKIhCgP4DgyAaQjiIhISEIBtC2KLR78Kp5b8tfoUiGkI4hiAaQoD+A4NCKIaEIBpCgID8B4NCGIYgGkKAgID4D4NCCIaEhCAaQgiIQoCAgPgPgyAaQhiIQoCA/AeDhCAaQiiIQoD+A4MgGkI4iISEhCADKQPwASIbQn+FfiIc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IANrIhUNAQwCCwtBqJDIACkDACJ6Qv8Bg0IEUQ0AIHpCIIinIhIgeqciA0H/AXFBBEYNARogekIQiKchFSB6QgiIpyEIQQAhCwwCCyAELwHIDCAELQDKDEEQdHILIRJBASEJIAEgEkEBdkEHcToAKyABIBJBAXEiA0U6ACggASASQQR2QQFxOgApAkACQAJAAkACQAJAAkAgAw0AIARBADoA2hggBEEAOwHYGCABKALoAyELQQMhFSAEQdgYaiEIAkADQAJAIHlQBEBCACF5DAELIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQAgAyAIaiEIIBUgA2siFQ0BDAILC0EAIQtBqJDIACkDACJ6pyIDQf8BcUEERg0AIHpCIIinIRIgekIQiKchFSB6QgiIpyEIDAgLIAECfwJAAkACQAJ/AkACQCAELwHYGCAELQDaGEEQdHIiB0Gdg6gBRgRAIARBADsByAwgASgC6AMhC0ECIRUgBEHIDGohCANAIHlQBEBCACF5DAMLIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4gAyAOSRsiA0EBRgRAIAggEC0AADoAAAwBCyADRQ0AIAggECAD/AoAAAsgASB5IAOtInt9Ink3A+ADIAsgeiB7fDcDCCACIAdGDQIgAyAIaiEIIBUgA2siFQ0ACwwCCyAHQQh2IQJBESELDA4LQaiQyAApAwAiekL/AYNCBFENACB6QhCIpyEVIHqnIgNB/wFxQQRHDQIgFQwBCyAELwHIDAshESAEQQA7AcgMIAEoAugDIQtBAiEVIARByAxqIQgDQCB5UA0CIAspAwgieiALKAIEIgetInsgeiB7VBunIgIgCygCAGohEAJAIAdC/////w8geiB6Qv////8PWhunayIDQQAgAyAHTRsiAyB5IBWtInsgeSB7VBunIg4g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ADcD0EggA0EANgLYSCADQQA6AMJIIANB4MgAaiIBIANBsMUAahCcBCADLQDgSEEoRwRAIAUgARD8AyADKAIYIgFBBkcNBAsgA0EQNgLYSCADQdDRAGoiASADQbDFAGpBsAP8CgAAIANBGGogARCcBCADLQAYIgZBKEcEQCADQarVAGogAy0AGzoAACADIAMvABk7AahVIAMoAhwhBSADKQIgIRQgARCdAQwZCwJAAkAgAygCHCIBLQC+AiICQQN0KQOwkkkgATUCtAIgATEAvwJ+IhR+IhVC8P////8AVg0AIBVCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhVCIIinDQAgFaciAUH/AXEiBEEARyABQYB+cUGAAmoiBiABSXENACAGIAEgBBsiBkGBgAhJDQELQYCACCEGC0EBIQVB/////wchBAJAIAJBA3QpA+iSSSAUfiIUQvD/////AFYNACAUQgd8QgOIp0EBaiIBQf////8DSw0AIAFBAnQiAkFAcUFAayEIIAFBD3EiAUEAIAIgCEsbDQBBgIAIIAggAiABGyIBIAFBgIAITRshBAsgBgRAIAYQcSIFRQ0WCyADQRhqIANB0NEAakGoA/wKAAAgA0H1A2pCADcAACADQbQEakEANgIAIANBAToA3QQgA0EANgLUBCADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQYCAgIB4NgKgBCADQgE3A5gEIANCADcDkAQgAyAFNgKMBCADIAY2AogEIANCfzcDgAQgA/0MAAAAAAAAAAAAAAAAAAAAAP0LAqQEIAMgBDYCuAQgAyADKAL4VDYC2AQgA0ECNgLcAyADQQA6ANwEIANBADYC0AQgA0KAgICAEDcDyAQgA0EANgLABAJAIAMoAiBBAkcEQEEnIQYgAy0A3gJBA3QpA6CTSSADNQLUAiIUIAMxAN8Cfn5C8f////8AVA0BDBkLQayYxwAQ3QkACyADKALYAiEFIANBEGogA0EYaiIBEIoFIAMtABBBA3QpA9iTSSADMQARIBR+fiIUQvD/////AFYNFyAFrSAUQgd8QgOIfiIVQiCIpyAVp0EASHINFyADQZDVAGogARCMASADLQCQVSIGQShHBEAgA0Gq1QBqIAMtAJNVOgAAIAMgAy8AkVU7AahVIAMoApRVIQUgAykCmFUhFAwY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nNPBABCMBwALIAMgCEGs08EAEIwHAAsgCCAHQbzTwQAQjAcACyAIIAdBzNPBABCMBwALIAggB0Hc08EAEIwHAAsgBiABQezSwQAQjAcACyAHIAFB3NLBABCMBwALIAQgAUHM0sEAEIwHAAsgACAAKAKYAiALIAAoAuwBIAAoAvABEKAFAkACQAJAIAAoAuQBIgEgCyAQbCICTwRAIABBADYC5AEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgC4AEiASABIAJqIAP8CgAADAILDBALIAEgAkYNAQsgACADNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0FIABBADYCmAIgAEEFOgCcAgwFCyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0HC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAgD2UQwAAIMGSEIkEOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQngIgACgC5AEiAiAFSQ0WIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkGc0cEAEIwHAAsgASACQazRwQAQjAcACyACIARBvNHBABCMBwALIAIgBEHM0cEAEIwHAAsgAiAEQdzRwQAQjAcACyACIARB7NHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0EIABBADYCmAIgAEEEOgCcAgwECyAAKALkASIBQQNuIgIgACgCkAIgACgCmAJrIghJBEAgAiEIIAFBgIAMSQ0GC0GAgAQgCCAIQYCABE8bIgtBA2wiBSAAKALwASIBSwRAIAUgAWsiAiAAKALoASABa0sEQCASIAEgAkEEQQQQpAUgACgC8AEhAQsgACgC7AEiBCABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgcEQCADQQAgB/wLAAsgASACaiICQQFrIQEgBCACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYC8AELAkACQAJAAkACQAJAAkACQAJAIAgEQEEAIQNBACEBA0AgASAAKALkASICTw0CIAEgACgC8AEiAk8NAyAAKALsASADaiAAKALgASABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiICIAAoAuQBIgRPDQQgAiAAKALwASIETw0FIAAoAuwBIANqQQRqIAAoAuABIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgC5AEiBE8NBiACIAAoAvABIgRPDQcgACgC7AEgA2pBCGogACgC4AEgAWpBAmotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIANBDGohAyAFIAFBA2oiAUcNAAsgACgC8AEhAQsgACAAKAKYAiALIAAoAuwBIAEQpAIgACgC5AEiAiAFSQ0VIABBADYC5AEgAiAFayEBIAhFDQYgAiAFRg0IIAFFDQcgACgC4AEiAiACIAVqIAH8CgAADAcLIAEgAkG80MEAEIwHAAsgASACQczQwQAQjAcACyACIARB3NDBABCMBwALIAIgBEHs0MEAEIwHAAsgAiAEQfzQwQAQjAcACyACIARBjNHBABCMBwALIAIgBUYNAQsgACABNgLkAQsgACAAKAKYAiALaiICNgKYAiACIAAoApACRw0DIABBADYCmAIgAEEDOgCcAgwDCyAAKALkASICIAAoApACIAAoApgCayILSQRAIAIiC0GAgARJDQULQYCABCAL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QCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAIA9lEMAACDBkhCJBDgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAgD2UQwAAIMGSEIkEOAIAIAFBAmoiAiAAKALcASIFTw0GIAIgACgC6AEiBU8NByAAKALkASADakEIaiAAKALYASABakECai0AALNDAACAPZRDAAAgwZIQiQQ4AgAgA0EMaiEDIAYgAUEDaiIBRw0ACyAAKALoASEBCyAAIAAoApACIAQgACgC5AEgARDJAyAAKALcASICIAZJDRUgAEEANgLcASACIAZrIQEgCUUNBiACIAZGDQggAUUNByAAKALYASICIAIgBmogAfwKAAAMBwsgASACQZzRwQAQjAcACyABIAJBrNHBABCMBwALIAIgBUG80cEAEIwHAAsgAiAFQczRwQAQjAcACyACIAVB3NHBABCMBwALIAIgBUHs0cEAEIwHAAsgAiAGRg0BCyAAIAE2AtwBCyAAIAAoApACIARqIgI2ApACIAIgACgCiAJHDQUgAEEANgKQAiAAQQQ6AJQCDAULIAAoAtwBIgFBA24iAiAAKAKIAiAAKAKQAmsiCUkEQCACIQkgAUGAgAxJDQQLQYCABCAJIAlBgIAETxsiBEEDbCIGIAAoAugBIgFLBEAgBiABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBCkBSAAKALoASEBCyAAKALkASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBwRAIANBACAH/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsCQAJAAkACQAJAAkACQAJAAkAgCQRAQQAhA0EAIQEDQCABIAAoAtwBIgJPDQIgASAAKALoASICTw0DIAAoAuQBIANqIAAoAtgBIAFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQFqIgIgACgC3AEiBU8NBCACIAAoAugBIgVPDQUgACgC5AEgA2pBBGogACgC2AEgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiAiAAKALc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IAEgDCAIazoAogcgASAnICiINwPQBgwPCyAMQf8BcUERSQ0OIAEgD0ENdkEPcUEEajYCyAYgASAPQQh2QR9xIglBAWo2AsQGIAEgD0EDdkEfcSIIQYECajYCwAZBBCAIQR1LDQMaIAlBHU0NAUEFDAMLIAEgDEEDazoAogcgASAnQgOINwPQBiAnQvgHg1ANAyABLQClB0UEQCABQQE6AKUHIAEoAvgGIQpBACIIRQRAIApB7J3EAEGAEPwKAAALIAhFBEAgCkGAEGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAIGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAMGpB7J3EAEGAEPwKAAALIAhFBEAgCkGAQGtB7J3EAEGAEPwKAAALIAhFBEAgCkGA0ABqQeydxABBgBD8CgAACyAIRQRAIApBgOAAakHsncQAQYAQ/AoAAAsgCEUEQCAKQYDwAGpB7J3EAEGAEPwKAAALIAEoAvwGIQpBAEUEQCAKQeycxABBgAH8CgAACyAIRQRAIApBgAFqQeycxABBgAH8CgAACyAIRQRAIApBgAJqQeycxABBgAH8CgAACyAIRQRAIApBgANqQeycxABBgAH8CgAACyAIRQRAIApBgARqQeycxABBgAH8CgAACyAIRQRAIApBgAVqQeycxABBgAH8CgAACyAIRQRAIApBgAZqQeycxABBgAH8CgAACyAIRQRAIApBgAdqQeycxABBgAH8CgAACyAIRQRAIApBgAhqQeycxABBgAH8CgAACyAIRQRAIApBgAlqQeycxABBgAH8CgAACyAIRQRAIApBgApqQeycxABBgAH8CgAACyAIRQRAIApBgAtqQeycxABBgAH8CgAACyAIRQRAIApBgAxqQeycxABBgAH8CgAACyAIRQRAIApBgA1qQeycxABBgAH8CgAACyAIRQRAIApBgA5qQeycxABBgAH8CgAACyAIRQRAIApBgA9qQeycxABBgAH8CgAACyABQYCA/AM2AoAHIAFBBzoAhAcLIAFBBDoAowcMDQsgAUEAOgClByABQQI6AKMHIAEgDEERazoAogcgASAnQhGINwPQBgwMC0ECCzoAAUEBDBQLIAEgDEEKayIJOgCiByABICdCCogiJzcD0AYgCA0HIAlB/wFxQQpJDQADQCAnQv8Hg0ICUg0BIAEgCUEKayIPOgCi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QbyNyAAQ6wcAC545Azd/A30BfiMAQYABayIBJAACQAJAAkAgACgCaCICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKAJkIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBEEAIQIgKkEKdEGAIGoiKyEhAkADQAJAIAQgKkcEQCAUIARBAWoiBEcNASABQQA2AkAgAUEBNgI0IAFB1LHBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIAFBADoAOCABIAI2AjQgASANNgIwIAAgAUEwahDpASAqRQ0CQYAgISFBASEuAkADQCAhIgRBgAhqIiEgACgCaCIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgACgCZCIGIARqIgIoABgiEUUEQCAQKAIkIRELIAMgBEEkckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEockkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAMgBEEqckkEQCABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLIAIoAAQhB0EAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAHrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIE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IGooAAAgA0GUIGovAABsaiADQaQgaigAAEECdGoiIU0gA0GACGohAw0ACyABQQA2AkAgAUEBNgI0IAFB9LHBADYCMCABQgQ3AjggAUEwahCSByEDDAELQQAhAwsgAUGAAWokACADDwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALnjkDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKAJIIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAkQiAy0AACIEOgAGIAEgAy0AASIGOgAHIARBASAGGwRAIAFBAjYCNCABQcCywQA2AjAgAUICNwI8IAFCgICAgPAEIjsgAUEHaq2ENwMQIAEgOyABQQZqrYQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyADQQRqKAAAISogAygAECENIAEgAy8AFCIENgIcIARBA08EQCABQQE2AjQgAUGYssEANgIwIAFCATcCPCABIAFBHGqtQoCAgIAQhDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIAEgA0EkaigAACIGQYCAgP57IAZB/////wdxGzYCICABIAMoACgiBkGAgID+AyAGQf////8HcRs2AiQgBEEobEGsqsEAaiEQIAJBgCBrQQp2QQFqIRRBACEEQQAhAiAqQQp0QYAgaiIrISECQANAAkAgBCAqRwRAIBQgBEEBaiIERw0BIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgAUEAOgA4IAEgAjYCNCABIA02AjAgACABQTBqEIQCICpFDQJBgCAhIUEBIS4CQANAICEiBEGACGoiISAAKAJIIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwGCyAAKAJEIgYgBGoiAigAGCIRRQRAIBAoAiQhEQsgAyAEQSRySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQShySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAyAEQSpySQRAIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsgAigABCEHQQAhBCAQKAIIIBAoAgAgECgCBGpqIAIvACgiIkEDTQR/ICJBAnQoAqSrQQUgBAsgECgCEGxqQQRqIjWtIAetfiI7QiCIUEUEQCABQQA2AkAgAUEBNgI0IAFB0KvBADYCMCABQgQ3AjggAUEwahCSByEDDAYLAkACQAJAAn8CQCADICsiBCACKAAkIjBBAnQiCSACKAAMIg0gAi8AFGxqaiIUIDunIghqIitPBEAgAioAECE4IAIoAAghLyACKAAAIQcgAigAICEcIA0NAUEADAILIAFBADYCQCABQQE2AjQgAUGYscEANgIwIAFCBDcCOCABQTBqEJIHIQMMCgsgBCAJaiICIA1BDGxqIANLDQEgDUEDbCEeIAIgBmoLISMgFCArTQRAAkAgB0EDbCINQf////8DSw0AIAdBDGwiAkH9////B08NAAJAAkACQAJAAkACfyACRQRAQQQhFkEEIRdBAAwBCyACEHEiFkUNASAWQQRrLQAAQQNxRSACRXJFBEAgFkEAIAL8CwALIAIQcSIXRQ0BIBdBBGstAABBA3FFIAJFckUEQCAXQQAgAvwLAAsgDQshJCAHQQJ0Ig5B/////wNLDQQgB0EEdCIDQf3///8HTw0EQQQhGEEAISVBACEmQQQhFSADBEAgAxBxIhVFDQEgFUEEay0AAEEDcUUgA0VyRQRAIBVBACAD/AsACyAOISYLIAIEQCACEHEiGEUNASAYQQRrLQAAQQNxRSACRXJFBEAgGEEAIAL8CwALIA0hJQsgB0H/////A0sgDkH9////B09yDQNBBCEPQQAhHUEAISdBBCEaIA4EQCAOEHEiGkUNASAaQQRrLQAAQQNxRSAORXJFBEAgGkEAIA78CwALIAchJwsCQAJ/AkACQCAiRQRAQQAhEkEAIR9BBCEKDAELIAdBCWwiEkH/////A0sNBiAHQSRsIgJB/f///wdPDQZBBCEKQQAhHyACBEAgAhBxIg9FDQUgD0EEay0AAEEDcUUgAkVyRQRAIA9BACAC/AsACyASIR8LICJBAUcNAQtBACEJQQAhKEEEIRlBACEbQQAhLUEADAELIAdBD2wiCUH/////A0sNAyAHQTxsIgJB/f///wdPDQNBBCEZQQAhKCACBEAgAhBxIgpFDQMgCkEEay0AAEEDcUUgAkVyRQRAIApBACAC/AsACyAJIR0LICJBA0kEQEEBIS1BACEbQQAMAQsgB0EVbCIbQf////8DSw0BIAdB1ABsIgJB/f///wdPDQECfyACRQRAQQAMAQsgAhBxIhlFDQMgGUEEay0AAEEDcUUgAkVyRQRAIBlBACAC/AsACyAbCyEoQQEhLUEBCyExIAEoAhwEfSA4QwAAAD+UIBGzlQVDAAAAAAshOiAHRQ0KIAQgBmohNiAGIBRqIQxBASEDQQAhICAZIRFBACEEIBwiBiAvbCI3IRMDQCADIRQgASAEIDVsIgM2AigCQCAEIDdPBEAgMEUEQCAGIQIMAgsgMCAGIBxrIgJBACACIAZNGyICTQRAIAYhAgwCCyA2IAJBAnRqKAIAIBNqIgIgBEsEQCAGIQIMAgsgAiETIAZBAWoiAiEGDAELIC8EQCAEIC9uIQIMAQtB+K3BABCBCAALAkACQAJAAkACfQJAAkAgASgCHEUEQCADQXtNIANBBGogCE1xDQEgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwECyADQX1NIANBAmogCE1xDQEgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwDCyADIAxqKgAADAELIDogAyAMai8AALMgECgCJLOTlEMAAAAAITgCQCAjRQ0AIAJBA2wiAyAeTw0AICMgA0ECdGoqAgAhOAsgOJILITgCfQJAAkACQCANIARBA2wiA0sEQCAWIANBAnQiMmogODgCACABKAIoIQUgASgCHA0BIAVBBGoiC0F7TSAFQQhqIAhNcQ0CIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBQsgAyANQYiuwQAQjAcACyAFQQJqIgtBfU0gBUEEaiAITXENASABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAMLIAsgDGoqAAAMAQsgOiALIAxqLwAAsyAQKAIks5OUQwAAAAAhOAJAICNFDQAgAkEDbEEBaiIFIB5PDQAgIyAFQQJ0aioCACE4CyA4kgshOAJ9AkACQAJAIA0gA0EBaiIFSwRAIBYgBUECdCIzaiA4OAIAIAEoAighBSABKAIcDQEgBUEIaiICQXtNIAVBDGogCE1xDQIgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwFCyAFIA1BmK7BABCMBwALIAVBBGoiC0F9TSAFQQZqIAhNcQ0BIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMAwsgAiAMaioAAAwBCyA6IAsgDGovAACzIBAoAiSzk5RDAAAAACE4AkAgI0UNACACQQNsQQJqIgIgHk8NACAjIAJBAnRqKgIAITgLIDiSCyE4AkAgDSADQQJqIgJLBEAgFiACQQJ0IjRqIDg4AgAgAUEwaiIFIAwgCCABKAIoIBAoAhRqIgIgASgCHBC7BCABKAI0IQMgASgCMA0CIBcgMmogAzYCACAFIAwgCEECQQQgASgCHCIDGyACaiADELsEIAEoAjQhAyABKAIwDQIgFyAzaiADNgIAIAUgDCAIIAJBBEEIIAEoAhwiAhtqIAIQuwQgASgCNCEDIAEoAjANAiAXIDRqIAM2AgAgBSAMIAggASgCKCAQKAIYaiILIAEoAhwQuwQgASgCNCEDIAEoAjANAiAFIAwgCEECQQQgASgCHCICGyALaiACELsEIAEoAjQhAiABKAIwRQ0BIAIhAwwCCyACIA1BqK7BABCMBwALIAFBMGogDCAIQQRBCCABKAIcIgUbIAtqIAUQuwQgASgCNCEFIAEoAjAEQCAFIQMMAQsgAUEwaiAMIAggC0EGQQwgASgCHCILG2ogCxC7BCABKAI0IQsgASgCMARAIAshAwwBCwJAAkACQAJAAkACQAJAAkACQAJAIA4gBEECdCIpSwRAIBUgKUECdGogAjYCACApQQFyIgIgDk8NASAVIAJBAnRqIAU2AgAgKUECciICIA5PDQIgFSACQQJ0aiALNgIAIClBA3IiAiAOTw0DIBUgAkECdGogAzYCACABKAIoIBAoAhxqIgIgCE8NBCAYIDJqIAIgDGotAACzQwAAf0OVOAIAIAJBAWoiAyAITw0FIBggM2ogAyAMai0AALNDAAB/Q5U4AgAgAkECaiIDIAhPDQYgGCA0aiADIAxqLQAAs0MAAH9DlTgCACACQQNqIgIgCE8NByAEIAdPDQggGiApaiACIAxqLQAAs0MAAH9DlTgCACAiRQ0OIAEgECgCIDYCLCABIAg2AkQgASAMNgJAIAEgEDYCOCABIAFBJGo2AkwgASABQSBqNgJIIAEgAUEcajYCPCABIAFBLGo2AjQgASABQShqNgIwIAFBCGoiBSABQTBqIgtBABDNAyABKAIMIQMgASgCCA0LIARBCWwiAiASTw0NIA8gAkECdGogAzYCACAFIAtBAxDNAyABKAIMIQMgASgCCA0LIBIgAkEBaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQYQzQMgASgCDCEDIAEoAggNCyASIAJBAmoiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEBEM0DIAEoAgwhAyABKAIIDQsgEiACQQNqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBBBDNAyABKAIMIQMgASgCCA0LIBIgAkEEaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQcQzQMgASgCDCEDIAEoAggNCyASIAJBBWoiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakECEM0DIAEoAgwhAyABKAIIDQsgEiACQQZqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBBRDNAyABKAIMIQMgASgCCA0LIBIgAkEHaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQgQzQMgASgCDCEDIAEoAggNCyACQQhqIgIgEk8NDSAPIAJBAnRqIAM2AgAgLQ0JDAoLICkgDkG4rsEAEIwHAAsgAiAOQciuwQAQjAcACyACIA5B2K7BABCMBwALIAIgDkHorsEAEIwHAAsgAiAIQfiuwQAQjAcACyADIAhBiK/BABCMBwALIAMgCEGYr8EAEIwHAAsgAiAIQaivwQAQjAcACyAEIAdBuK/BABCMBwALIAFBCGoiAiABQTBqIgVBCRDNAyABKAIMIQMgASgCCA0BIARBD2wiBCAJTw0CIAogBEECdGogAzYCACACIAVBDhDNAyABKAIMIQMgASgCCA0BIAkgBEEBaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRMQzQMgASgCDCEDIAEoAggNASAJIARBAmoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEKEM0DIAEoAgwhAyABKAIIDQEgCSAEQQNqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBDxDNAyABKAIMIQMgASgCCA0BIAkgBEEEaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRQQzQMgASgCDCEDIAEoAggNASAJIARBBWoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakELEM0DIAEoAgwhAyABKAIIDQEgCSAEQQZqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBEBDNAyABKAIMIQMgASgCCA0BIAkgBEEHaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRUQzQMgASgCDCEDIAEoAggNASAJIARBCGoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEMEM0DIAEoAgwhAyABKAIIDQEgCSAEQQlqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBERDNAyABKAIMIQMgASgCCA0BIAkgBEEKaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRYQzQMgASgCDCEDIAEoAggNASAJIARBC2oiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakENEM0DIAEoAgwhAyABKAIIDQEgCSAEQQxqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBEhDNAyABKAIMIQMgASgCCA0BIAkgBEENaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRcQzQMgASgCDCEDIAEoAggNASAEQQ5qIgQgCU8NAiAKIARBAnRqIAM2AgALIDFFDQNBACEEICAhAgNAIAFBCGogAUEwaiAEQcivwQBqKAIAEM0DIAEoAgwhAyABKAIIDQEgAiAbSQRAIAQgEWogAzYCACACQQFqIQIgBEEEaiIEQdQARg0FDAELCyACIBtBnLDBABCMBwALAkAgKARAIBlBBGsoAgAiAEF4cSIEIChBAnQiAkEEQQggAEEDcSIAG2pJDRcgAEEAIAQgAkEnaksbDRggGRCiAgsgHQRAIApBBGsoAgAiAEF4cSIEIB1BAnQiAkEEQQggAEEDcSIAG2pJDRcgAEEAIAQgAkEnaksbDRggChCiAgsgHwRAIA9BBGsoAgAiAEF4cSIEIB9BAnQiAkEEQQggAEEDcSIAG2pJDRcgAEEAIAQgAkEnaksbDRggDxCiAgsgJwRAIBpBBGsoAgAiAEF4cSIEICdBAnQiAkEEQQggAEEDcSIAG2pJDRcgAEEAIAQgAkEnaksbDRggGhCiAgsgJQRAIBhBBGsoAgAiAEF4cSIEICVBAnQiAkEEQQggAEEDcSIAG2pJDRcgAEEAIAQgAkEnaksbDRggGBCiAgsgJgRAIBVBBGsoAgAiAEF4cSIEICZBAnQiAkEEQQggAEEDcSIAG3JJDRcgAEEAIAQgAkEnaksbDRggFRCiAgsgJEUNFSAXQQRrKAIAIgBBeHEiBCAkQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIBcQogIgJEUNFSAWQQRrKAIAIgBBeHEiBEEEQQggAEEDcSIAGyACakkNFiAAQQAgBCACQSdqSxsNACAWEKICDBULDBYLIAQgCUGssMEAEIwHAAsgAiASQbywwQAQjAcACyARQdQAaiERICBBFWohICAUIAcgFEsiAmohAyAUIQQgAg0ACyAHIQIgLCEEDAkLQaiswQAQ/wcLAAtBmKzBABD/BwALQYiswQAQ/wcAC0H4q8EAEP8HAAtB6KvBABD/BwALQdirwQAQ/wcACyAUICsgA0HMsMEAEOoHAAsgAUEANgJAIAFBATYCNCABQfiwwQA2AjAgAUIENwI4IAFBMGoQkgchAwwHCwJAAkACQAJAAkACQAJAAkACQAJAA0AgBCAsayIGQQNsIiAgDU0EQEGAgAQgAiACQYCABE8bIgNBA2wiFCANICBrIhFLDQIgBiAHSw0DIAMgByAGayIRSw0EIA4gBkECdCIRSQ0FIANBAnQiBSAOIBFrIhxLDQZBACEeQQQhC0EEIQhBACEcICIEQCASIAZBCWwiE0kNCCADQQlsIhwgEiATayIISw0JIA8gE0ECdGohCAsCfwJAAkAgLQRAIAkgBkEPbCITSQ0BIANBD2wiHiAJIBNrIgtLDQ8gCiATQQJ0aiELCyAxDQFBACEGQQQMAgsgEyAJIAlB6KzBABDqBwALIBsgBkEVbCITSQ0KIANBFWwiBiAbIBNrIgxLDQsgGSATQQJ0agshEyABQgQ3AnggAUICNwJwIAEgBjYCbCABIBM2AmggASAeNgJkIAEgCzYCYCABIBw2AlwgASAINgJYIAEgBTYCVCABIBUgEUECdGo2AlAgASAUNgJMIAEgFyAgQQJ0IgZqNgJIIAEgFDYCRCABIAYgGGo2AkAgASADNgI8IAEgESAaajYCOCABIBQ2AjQgASAGIBZqNgIwIAAgBCADIAFBMGoQ4gEgAyAEaiEEIAIgA2siAg0BDAwLCyAgIA0gDUHorcEAEOoHAAtBACAUIBFB2K3BABDqBwALIAYgByAHQcitwQAQ6gcAC0EAIAMgEUG4rcEAEOoHAAsgESAOIA5BqK3BABDqBwALQQAgBSAcQZitwQAQ6gcACyATIBIgEkGIrcEAEOoHAAtBACAcIAhB+KzBABDqBwALIBMgGyAbQciswQAQ6gcAC0EAIAYgDEG4rMEAEOoHAAtBACAeIAtB2KzBABDqBwALAkAgKARAIBlBBGsoAgAiBEF4cSICIChBAnQiA0EEQQggBEEDcSIEG2pJDQEgBEEAIAIgA0EnaksbDQkgGRCiAgsgHQRAIApBBGsoAgAiBEF4cSICIB1BAnQiA0EEQQggBEEDcSIEG2pJDQggBEEAIAIgA0EnaksbDQkgChCiAgsgHwRAIA9BBGsoAgAiBEF4cSICIB9BAnQiA0EEQQggBEEDcSIEG2pJDQggBEEAIAIgA0EnaksbDQkgDxCiAgsgJwRAIBpBBGsoAgAiBEF4cSICICdBAnQiA0EEQQggBEEDcSIEG2pJDQggBEEAIAIgA0EnaksbDQkgGhCiAgsgJQRAIBhBBGsoAgAiBEF4cSICICVBAnQiA0EEQQggBEEDcSIEG2pJDQggBEEAIAIgA0EnaksbDQkgGBCiAgsgJgRAIBVBBGsoAgAiBEF4cSICICZBAnQiA0EEQQggBEEDcSIEG3JJDQggBEEAIAIgA0EnaksbDQkgFRCiAgsCQCAkRQ0AIBdBBGsoAgAiAkF4cSIDICRBAnQiBEEEQQggAkEDcSIGG2pJDQggBkEAIARBJ2oiAiADSRsNCSAXEKICICRFDQAgFkEEaygCACIDQXhxIgYgBEEEQQggA0EDcSIEG2pJDQggBEEAIAIgBkkbDQMgFhCiAgsgByAsaiEsIC4gKiAuSyIEaiEuIAQNAQwFCwsMBQsMBQsgAiADQaggai8AACIHSyEJQQAhBiACIAcgCRshAiAhIANBhCBqKAAAIBAoAgggECgCACAQKAIEamogB0EDTQR/IAdBAnQoAqSrQQUgBgsgECgCEGxqQQRqbCAhaiADQYwgaigAACADQZQgai8AAGxqIANBpCBqKAAAQQJ0aiIhTSADQYAIaiEDDQALIAFBADYCQCABQQE2AjQgAUH0scEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQtBACEDCyABQYABaiQAIAMPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu+PAMWfwF+AXsjAEEgayITJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARB//8DcSIHBEACQAJAAkACQCAHQRBNBEAgBEH/AXEiCEEDSQ0BIAhBBUkNB0GAEBBxIhBFDQhBACEEA0BCACEdIAggBEEPcSIHSwRAIAdBAnQiCkEEaiIMIAZLDQQgBSAKajUAACEdCyAJIBBqIAggBEEEdkEPcSIHSwR+IAdBAnQiCkEEaiIMIAZLDQQgBSAKajUAAEIghgVCAAsgHYQ3AAAgBEEBaiEEIAlBCGoiCUGAEEcNAAsgAkH//wNxIgkiBEUgA0H//wNxRXINGCACIARBAXZrIgZB//8DcSILEHEiAkUNCCALQQFrIgRBACAEIAtNGyIRQQN0IRkgCUECdCEOIAJBBGsoAgAiF0EDcSIcRSALRXJFBEAgAkEAIAv8CwALIAtBAnQhDyAAQQFqIRQgA0H//wNxIRIgDiAZTw0SIAEgDyASQQFrIgVsIgpJDRQgDyABIAprIgRLDRNBASALIAtBAU0bIQ1BACEIIAZB//8DcUEQSw0ZDCQLIAZBAEgNAwJAIAZBfHEiAgRAIAIQcSIERQ0JIAZBAnYhCCAGQQRrIgNBfHFBBGoiAgRAIAQgBSAC/AoAAAsgEyADQQJ2QQFqIgc2AgwgEyAENgIIIBMgCDYCBCADQfwHSQ0BDCMLIBNBADYCDCATQoCAgIAQNwIEQQEhBEEAIQcLIAchCUGAAiAHayINIAggB2tLBEBBACEFIwBBIGsiCCQAAkACQCAHIA1qIgIgE0EEaiIJKAIAIgRBAXQiBiACIAZLGyICQf////8DSw0AQQQgAiACQQRNGyIDQQJ0IgJBAEgNACAIIAQEfyAIIARBAnQ2AhwgCCAJKAIENgIUQQEFQQALNgIYIAhBCGpBASACIAhBFGoQhQcgCCgCCEEBRw0BIAgoAhAhBiAIKAIMIQULIAUgBkGclsgAEJMJAAsgCCgCDCECIAkgAzYCACAJIAI2AgQgCEEgaiQAIBMoAgwhCSATKAIIIQQLIAQgCUECdGohAyAHQf8BRwR/IA1BAnRBBGsiAgRAIANBACAC/AsACyAJIA1qIgJBAWshCSAEIAJBAnRqQQRrBSADC0EANgAAIBMgCUEBaiICNgIMIAJBgAJHDQUgEygCCCEEDCELQYDAABBxIhBFDQYgBEH/AXEhFkEAIQcDQEEAIRcgFiAHQQFxIgRLBEAgBEECdCIIQQRqIgogBksNAyAFIAhqKAAAIRcLQQAhDUEAIRggFiAHQQF2QQFxIgRLBEAgBEECdCIIQQRqIgogBksNAyAFIAhqKAAAIRgLIBYgB0ECdkEBcSIESwRAIARBAnQiCEEEaiIKIAZLDQMgBSAIaigAACENC0EAIRRBACEaIBYgB0EDdkEBcSIESwRAIARBAnQiCEEEaiIKIAZLDQMgBSAIaigAACEaCyAWIAdBBHZBAXEiBEsEQCAEQQJ0IghBBGoiCiAGSw0DIAUgCGooAAAhFAtBACEbQQAhCSAWIAdBBXZBAXEiBEsEQCAEQQJ0IghBBGoiCiAGSw0DIAUgCGooAAAhCQsgFiAHQQZ2QQFxIgRLBEAgBEECdCIIQQRqIgogBksNAyAFIAhqKAAAIRsLQQAhCiAWIAdBB3ZBAXEiBEsEQCAEQQJ0IghBBGoiCiAGSw0DIAUgCGooAAAhCgsgDCAQaiIEIBc2AAAgBEEcaiAKNgAAIARBGGogGzYAACAEQRRqIAk2AAAgBEEQaiAUNgAAIARBDGogGjYAACAEQQhqIA02AAAgBEEEaiAYNgAAIAdBAWohByAMQSBqIgxBgMAARw0ACyACQf//A3EiBEUgA0H//wNxRXINHiAEQQN2IAJBB3FBAEdqIgsQcSIGRQ0GIAtBAWsiAkEAIAIgC00bIg1BBXQhFSAEQQJ0IQ4gBkEEaygCACIWQQNxIhlFIAtFckUEQCAGQQAgC/wLAAsgC0ECdCEPIABBAWohCSADQf//A3EhESAOIBVJBEAgASAPIBFBAWsiA2wiBUkNGyAPIAEgBWsiB0sNKUEBIAsgC0EBTRshDUEAIQggC0EQTQ0gIAUgCWohByAGIQQgDSANQQ9xIgJBECACG2siCCEJA0AgBCAH/QAAACAH/QAAEP0NAAQIDBAUGBwAAAAAAAAAACAH/QAAICAH/QAAMP0NAAAAAAAAAAAABAgMEBQYHP0NAAECAwQFBgcYGRobHB0eH/0LAAAgB0FAayEHIARBEGohBCAJQRBrIgkNAAsMIAsgDiAVayESIAYgC2pBAWshHCALQQJJDRggEkEgSw0ZIA1B/v8AcSEXIA1BAXEhGEEAIQdBACAEQQJ0ayEaQQAgC0ECdGshGyALIAtBD3EiAkEQIAIbayEDIAAgBCARQQFrIgRsQQJ0aiECIAQgC2xBAnQgAGpBAWohDSALQRFJIRRBASEEA0AgASAHQX9zIBFqIgogD2wiBUkNGyAPIAEgBWsiB0sNKSAEIQlBACEFIA0hByAGIQQgAyEIIBRFBEADQCAEIAf9AAAAIAf9AAAQ/Q0ABAgMEBQYHAAAAAAAAAAAIAf9AAAgIAf9AAAw/Q0AAAAAAAAAAAAECAwQFBgc/Q0AAQIDBAUGBxgZGhscHR4f/QsAACAHQUBrIQcgBEEQaiEEIAhBEGsiCA0ACyADIQULIAsgBWshCCAFIAZqIQcgDSAFQQJ0aiEEA0AgByAELQAAOgAAIARBBGohBCAHQQFqIQcgCEEBayIIDQALIAEgCiAObCIMSQ0oIA4gASAMayIESw0qQQAhBCALQQJHBEAgAiEHA0AgByAQIAQgBmoiCC0AAEEFdGoiBf0AAAD9CwAAIAdBEGogBUEQav0AAAD9CwAAIAdBIGogECAIQQFqLQAAQQV0aiIF/QAAAP0LAAAgB0EwaiAFQRBq/QAAAP0LAAAgB0FAayEHIBcgBEECaiIERw0ACwsgACAMaiEHIBgEQCAHIARBBXRqIgUgECAEIAZqLQAAQQV0aiIE/QAAAP0LAAAgBUEQaiAEQRBq/QAAAP0LAAALIBIEQCAHIBVqIBAgHC0AAEEFdGogEvwKAAALIAIgGmohAiANIBtqIQ0gCSAJIBFJIgVqIQQgCSEHIAUNAAsMHQsgCiAMIAZB6OHEABDqBwALIAggCiAGQejhxAAQ6gcAC0Hg/8YAEP8HDAMLQcjgxABBIEHo4MQAEOsHAAtB2ObIAEErIBNBH2pBmNvEAEH44MQAEOAGAAtBgCAQcSIQRQ0AIARB/wFxIQlBACEHAkADQEEAIQwgCSAHQQNxIgRLBEAgBEECdCIIQQRqIg0gBksNAiAFIAhqKAAAIQwLQQAhGEEAIRcgCSAHQQJ2QQNxIgRLBEAgBEECdCIIQQRqIg0gBksNAiAFIAhqKAAAIRcLIAkgB0EEdkEDcSIESwRAIARBAnQiCEEEaiINIAZLDQIgBSAIaigAACEYC0EAIQ0gCSAHQQZ2QQNxIgRLBEAgBEECdCIIQQRqIg0gBksNAiAFIAhqKAAAIQ0LIAogEGoiBCAMNgAAIARBDGogDTYAACAEQQhqIBg2AAAgBEEEaiAXNgAAIAdBAWohByAKQRBqIgpBgCBHDQALIAJB//8DcSIERSADQf//A3FFcg0IIARBAnYgAkEDcUEAR2oiCxBxIgZFDQEgC0EBayICQQAgAiALTRsiDUEEdCEVIARBAnQhDiAGQQRrKAIAIhZBA3EiGUUgC0VyRQRAIAZBACAL/AsACyALQQJ0IQ8gAEEBaiEJIANB//8DcSERIA4gFUkEQCABIA8gEUEBayIDbCIMSQ0FIA8gASAMayIHSw0kQQEgCyALQQFNGyEFQQAhCCALQRBNDQogCSAMaiEHIAYhBCAFIAVBD3EiAkEQIAIbayIIIQkDQCAEIAf9AAAAIAf9AAAQ/Q0ABAgMEBQYHAAAAAAAAAAAIAf9AAAgIAf9AAAw/Q0AAAAAAAAAAAAECAwQFBgc/Q0AAQIDBAUGBxgZGhscHR4f/QsAACAHQUBrIQcgBEEQaiEEIAlBEGsiCQ0ACwwKCyAOIBVrIRIgBiALakEBayEcIAtBAkkNAiASQRBLDQMgDUH+/wFxIRcgDUEBcSEYQQAhB0EAIARBAnRrIRpBACALQQJ0ayEbIAsgC0EPcSICQRAgAhtrIQMgACAEIBFBAWsiBGxBAnRqIQIgBCALbEECdCAAakEBaiENIAtBEUkhFEEBIQQDQCABIAdBf3MgEWoiCSAPbCIMSQ0FIA8gASAMayIHSw0kIAQhBUEAIQogDSEHIAYhBCADIQggFEUEQANAIAQgB/0AAAAgB/0AABD9DQAECAwQFBgcAAAAAAAAAAAgB/0AACAgB/0AADD9DQAAAAAAAAAAAAQIDBAUGBz9DQABAgMEBQYHGBkaGxwdHh/9CwAAIAdBQGshByAEQRBqIQQgCEEQayIIDQALIAMhCgsgCyAKayEIIAYgCmohByANIApBAnRqIQQDQCAHIAQtAAA6AAAgBEEEaiEEIAdBAWohByAIQQFrIggNAAsgASAJIA5sIgpJDQsgDiABIAprIgRLDSVBACEEIAtBAkcEQCACIQcDQCAHIBAgBCAGaiIJLQAAQQR0av0AAAD9CwAAIAdBEGogECAJQQFqLQAAQQR0av0AAAD9CwAAIAdBIGohByAXIARBAmoiBEcNAAsLIAAgCmohByAYBEAgByAEQQR0aiAQIAQgBmotAABBBHRq/QAAAP0LAAALIBIEQCAHIBVqIBAgHC0AAEEEdGogEvwKAAALIAIgGmohAiANIBtqIQ0gBSAFIBFJIglqIQQgBSEHIAkNAAsMBwsgCCANIAZB6OHEABDqBwALAAsgEkEQTQRAIAAgFWohAiABIBFBAWsiACALbEECdCIMayEHIAEgACAEbEECdCIKayEEQQEhCANAIAEgDEkNAyAHIA9JDSIgBiAJIAxqLQAAOgAAIAEgCkkNCSAEIA5JDSMgEgRAIAIgCmogECAcLQAAQQR0aiAS/AoAAAsgByAPaiEHIAwgD2shDCAEIA5qIQQgCiAOayEKIAggEUkgCEEBaiEIDQALDAULIAEgDyARQQFrIgBsIgxJDQEgDyABIAxrIgdLDSAgBiAJIAxqLQAAOgAAIAEgACAObCIKSQ0HIA4gASAKayIETQ0DDCELIAEgDyARQQFrIgNsIgxJDQAgDyABIAxrIgdLDR9BACEFIAtBEE0NASAJIAxqIQcgBiEEIAsgC0EPcSICQRAgAhtrIgUhCANAIAQgB/0AAAAgB/0AABD9DQAECAwQFBgcAAAAAAAAAAAgB/0AACAgB/0AADD9DQAAAAAAAAAAAAQIDBAUGBz9DQABAgMEBQYHGBkaGxwdHh/9CwAAIAdBQGshByAEQRBqIQQgCEEQayIIDQALDAELIAwgASABQdjhxAAQ6gcACyALIAVrIQggBSAGaiEHIAwgBUECdGogAGpBAWohBANAIAcgBC0AADoAACAEQQRqIQQgB0EBaiEHIAhBAWsiCA0ACyABIAMgDmwiCkkNBCAOIAEgCmsiBEsNHiAAIApqIQBBASANIA1BAU0bIgFBAXFBACEEIA1BAk8EQCABQf7/AXEhAiAAIQcDQCAHIBAgBCAGaiIBLQAAQQR0av0AAAD9CwAAIAdBEGogECABQQFqLQAAQQR0av0AAAD9CwAAIAdBIGohByACIARBAmoiBEcNAAsLRQ0AIAAgBEEEdGogECAEIAZqLQAAQQR0av0AAAD9CwAAC0EAIBJBEEGY4cQAEOoHAAsgFkF4cSIAQQRBCCAZGyALakkNFyAZQQAgACALQSdqSxsNGCAGEKICCyAQQQRrKAIAIgFBeHFBhCBBiCAgAUEDcSIAG0kNFiAAQQAgAUGoIE8bDRcgEBCiAgwTCyAFIAhrIQkgBiAIaiEHIAwgCEECdGogAGpBAWohBANAIAcgBC0AADoAACAEQQRqIQQgB0EBaiEHIAlBAWsiCQ0ACyABIAMgDmwiCkkNACAOIAEgCmsiBEsNGgwXCyAKIAEgAUG44cQAEOoHAAsgDiAZayEVIAIgC2pBAWshFgJAIAZB//8DcSIHQQJPBEAgFUEISw0BIBFB/v8DcSEFQQAhBEEAIAlBAnRrIRhBACALQQJ0ayEaIAsgC0EPcSIDQRAgAxtrIQMgACASQQFrIgYgCWxBAnRqIRQgBiALbEECdCAAakEBaiENIAdBEUkhG0EBIQkDQCABIARBf3MgEmoiByAPbCIKSQ0EIA8gASAKayIESw0DIAkhBkEAIQogDSEEIAIhCSADIQggG0UEQANAIAkgBP0AAAAgBP0AABD9DQAECAwQFBgcAAAAAAAAAAAgBP0AACAgBP0AADD9DQAAAAAAAAAAAAQIDBAUGBz9DQABAgMEBQYHGBkaGxwdHh/9CwAAIARBQGshBCAJQRBqIQkgCEEQayIIDQALIAMhCgsgCyAKayEIIAIgCmohBCANIApBAnRqIQkDQCAEIAktAAA6AAAgCUEEaiEJIARBAWohBCAIQQFrIggNAAsgASAHIA5sIgxJDRkgDiABIAxrIglLDRVBACEEAkAgEUECTwRAIBQhBCACIQkgBSEIA0AgBCAQIAkvAAD9EP2JAf2pASIe/RsBQQN0aiAQIB79GwBBA3Rq/V0AAP1XAAAB/QsAACAEQRBqIQQgCUECaiEJIAhBAmsiCA0ACyAFIgQgEUYNAQsgFCAEQQN0aiEJA0AgCSAQIAIgBGotAABBA3RqKQAANwAAIAlBCGohCSAEQQFqIgQgEUkNAAsLIBUEQCAAIAxqIBlqIBAgFi0AAEEDdGogFfwKAAALIBQgGGohFCANIBpqIQ0gBiAGIBJJIgdqIQkgBiEEIAcNAAsMBgsgFUEITQRAIAAgGWohAyABIBJBAWsiACALbEECdCIKayEEIAEgACAJbEECdCIMayEJQQEhCANAIAEgCkkNBCAEIA9JDQMgAiAKIBRqLQAAOgAAIAEgDEkNGSAJIA5JDRUgFQRAIAMgDGogECAWLQAAQQN0aiAV/AoAAAsgBCAPaiEEIAogD2shCiAJIA5qIQkgDCAOayEMIAggEkkgCEEBaiEIDQALDAYLIAEgDyASQQFrIgBsIgpJDQIgDyABIAprIgRLDQEgAiAKIBRqLQAAOgAAIAEgACAObCIMSQ0XIA4gASAMayIJTQ0EDBMLIAEgDyASQQFrIgVsIgpJDQEgDyABIAprIgRLDQBBACEMIAZB//8DcUEQTQ0CIAogFGohBCACIQkgCyALQQ9xIgNBECADG2siDCEIA0AgCSAE/QAAACAE/QAAEP0NAAQIDBAUGBwAAAAAAAAAACAE/QAAICAE/QAAMP0NAAAAAAAAAAAABAgMEBQYHP0NAAECAwQFBgcYGRobHB0eH/0LAAAgBEFAayEEIAlBEGohCSAIQRBrIggNAAsMAgtBACAPIARByOHEABDqBwALIAogASABQdjhxAAQ6gcACyALIAxrIQggAiAMaiEEIAogDEECdGogAGpBAWohCQNAIAQgCS0AADoAACAJQQRqIQkgBEEBaiEEIAhBAWsiCA0ACyABIAUgDmwiDEkNEyAOIAEgDGsiCUsND0EBIBEgEUEBTRshAUEAIQogEUECTwRAIAAgDGohBCACIQkgAUH+/wNxIgohCANAIAQgECAJLwAA/RD9iQH9qQEiHv0bAUEDdGogECAe/RsAQQN0av1dAAD9VwAAAf0LAAAgBEEQaiEEIAlBAmohCSAIQQJrIggNAAsgCiARRg0BCyACIApqIQQgCiABayEIIAAgDCAKQQN0amohCQNAIAkgECAELQAAQQN0aikAADcAACAJQQhqIQkgBEEBaiEEIAhBAWoiCA0ACwtBACAVQQhBmOHEABDqBwALIBdBeHEiAEEEQQggHBsgC2pJDQ4gHEEAIAAgC0EnaksbDQ8gAhCiAgsgEEEEaygCACIBQXhxQYQQQYgQIAFBA3EiABtJDQ0gAEEAIAFBqBBPGw0OIBAQogIMCgsgCiAUaiEHIA1BD3EiA0EQIAMbIgMgDWshCSANIANrIQggAiEEA0AgBCAH/QAAACAH/QAAEP0NAAQIDBAUGBwAAAAAAAAAACAH/QAAICAH/QAAMP0NAAAAAAAAAAAABAgMEBQYHP0NAAECAwQFBgcYGRobHB0eH/0LAAAgB0FAayEHIARBEGohBCAJQRBqIgkNAAsMCgsgEkEgTQRAIAAgFWohAiABIBFBAWsiACALbEECdCIFayEHIAEgACAEbEECdCIMayEEQQEhCANAIAEgBUkNAyAHIA9JDREgBiAFIAlqLQAAOgAAIAEgDEkNECAEIA5JDRIgEgRAIAIgDGogECAcLQAAQQV0aiAS/AoAAAsgByAPaiEHIAUgD2shBSAEIA5qIQQgDCAOayEMIAggEUkgCEEBaiEIDQALDAULIAEgDyARQQFrIgBsIgVJDQEgDyABIAVrIgdLDQ8gBiAFIAlqLQAAOgAAIAEgACAObCIMSQ0OIA4gASAMayIETQ0DDBALIAEgDyARQQFrIgNsIgVJDQAgDyABIAVrIgdLDQ5BACEKIAtBEE0NASAFIAlqIQcgBiEEIAsgC0EPcSICQRAgAhtrIgohCANAIAQgB/0AAAAgB/0AABD9DQAECAwQFBgcAAAAAAAAAAAgB/0AACAgB/0AADD9DQAAAAAAAAAAAAQIDBAUGBz9DQABAgMEBQYHGBkaGxwdHh/9CwAAIAdBQGshByAEQRBqIQQgCEEQayIIDQALDAELIAUgASABQdjhxAAQ6gcACyALIAprIQggBiAKaiEHIAUgCkECdGogAGpBAWohBANAIAcgBC0AADoAACAEQQRqIQQgB0EBaiEHIAhBAWsiCA0ACyABIAMgDmwiDEkNCyAOIAEgDGsiBEsNDSAAIAxqIQBBASANIA1BAU0bIgFBAXFBACEEIA1BAk8EQCABQf7/AHEhAyAAIQcDQCAHIBAgBCAGaiICLQAAQQV0aiIB/QAAAP0LAAAgB0EQaiABQRBq/QAAAP0LAAAgB0EgaiAQIAJBAWotAABBBXRqIgH9AAAA/QsAACAHQTBqIAFBEGr9AAAA/QsAACAHQUBrIQcgAyAEQQJqIgRHDQALC0UNACAAIARBBXRqIgEgECAEIAZqLQAAQQV0aiIA/QAAAP0LAAAgAUEQaiAAQRBq/QAAAP0LAAALQQAgEkEgQZjhxAAQ6gcACyAWQXhxIgBBBEEIIBkbIAtqSQ0GIBlBACAAIAtBJ2pLGw0HIAYQogILIBBBBGsoAgAiAUF4cUGEwABBiMAAIAFBA3EiABtJDQUgAEEAIAFBqMAATxsNBiAQEKICDAILIA0gCGshCSAGIAhqIQcgBSAIQQJ0aiAAakEBaiEEA0AgByAELQAAOgAAIARBBGohBCAHQQFqIQcgCUEBayIJDQALIAEgAyAObCIMSQ0HIA4gASAMayIESw0JDAYLAkAgAUF8cSIIRQ0AIAFBBGsiAUEMcUEMRwRAIAggAUECdkEBakEDcSIHQQJ0ayEIA0AgACAEIABBAWotAABBAnRqKAAANgAAIABBBGohACAHQQFrIgcNAAsgAUEMSQ0BC0EAIQkDQCAAIAlqIgEgBCABQQFqLQAAQQJ0aigAADYAACABQQRqIAQgAUEFai0AAEECdGooAAA2AAAgAUEIaiAEIAFBCWotAABBAnRqKAAANgAAIAFBDGogBCABQQ1qLQAAQQJ0aigAADYAACAIIAlBEGoiCUcNAAsLIBMoAgQiAUUNACAEQQRrKAIAIgBBeHEiAiABQQJ0IgFBBEEIIABBA3EiABtqSQ0DIABBACACIAFBJ2pLGw0EIAQQogILIBNBIGokAA8LIAggDWshCSACIAhqIQcgCiAIQQJ0aiAAakEBaiEEA0AgByAELQAAOgAAIARBBGohBCAHQQFqIQcgCUEBaiIJDQALIAEgBSAObCIMSQ0EIA4gASAMayIJSw0ADAMLQQAgDiAJQajhxAAQ6gcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgE0EANgIUIBNBATYCCCATQYiCyAA2AgQgE0IENwIMIBNBBGpBiOHEABCNCAALIAwgASABQbjhxAAQ6gcAC0EAIA8gB0HI4cQAEOoHAAtBACAOIARBqOHEABDqBwALgjgDN38DfQF+IwBBgAFrIgEkAAJAAkACQCAAKALMASICQf8fTQRAIAFBADYCQCABQQE2AjQgAUHwssEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgASAAKALIASIDLQAAIgQ6AAYgASADLQABIgY6AAcgBEEBIAYbBEAgAUECNgI0IAFBwLLBADYCMCABQgI3AjwgAUKAgICA8AQiOyABQQdqrYQ3AxAgASA7IAFBBmqthDcDCCABIAFBCGo2AjggAUEwahCSByEDDAELIANBBGooAAAhKiADKAAQIQ0gASADLwAUIgQ2AhwgBEEDTwRAIAFBATYCNCABQZiywQA2AjAgAUIBNwI8IAEgAUEcaq1CgICAgBCENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgASADQSRqKAAAIgZBgICA/nsgBkH/////B3EbNgIgIAEgAygAKCIGQYCAgP4DIAZB/////wdxGzYCJCAEQShsQayqwQBqIRAgAkGAIGtBCnZBAWohFEEAIQQgKkEKdEGAIGoiKyECAkACQAJAA0AgBCAqRg0BIBQgBEEBaiIERg0CIB4gA0GoIGovAAAiBkshCCAeIAYgCBshHiACIANBhCBqKAAAIBAoAgggECgCACAQKAIEamogBkEDTQR/IAZBAnQoAqSrQQUgCQsgECgCEGxqQQRqbCACaiADQYwgaigAACADQZQgai8AAGxqIANBpCBqKAAAQQJ0aiICTSADQYAIaiEDDQALIAFBADYCQCABQQE2AjQgAUH0scEANgIwIAFCBDcCOCABQTBqEJIHIQMMAwsgAUEAOgA4IAEgHjYCNCABIA02AjAgACABQTBqEOEDICpFDQFBgCAhHkEBIS4CQANAIB4iBEGACGoiHiAAKALMASIDSwRAIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMBQsgACgCyAEiBiAEaiICKAAYIhFFBEAgECgCJCERCyACKAAEIQlBACEEIBAoAgggECgCACAQKAIEamogAi8AKCIiQQNNBH8gIkECdCgCpKtBBSAECyAQKAIQbGpBBGoiNa0gCa1+IjtCIIhQRQRAIAFBADYCQCABQQE2AjQgAUHQq8EANgIwIAFCBDcCOCABQTBqEJIHIQMMBQsCQAJAAkACfwJAIAMgKyIEIAIoACQiMEECdCIIIAIoAAwiDSACLwAUbGpqIhQgO6ciB2oiK08EQCACKgAQITggAigACCEvIAIoAAAhCSACKAAgIRwgDQ0BQQAMAgsgAUEANgJAIAFBATYCNCABQZixwQA2AjAgAUIENwI4IAFBMGoQkgchAwwJCyAEIAhqIgIgDUEMbGogA0sNASANQQNsIR8gAiAGagshIyAUICtNBEACQCAJQQNsIg1B/////wNLDQAgCUEMbCICQf3///8HTw0AAkACQAJAAkACQAJ/IAJFBEBBBCEWQQQhF0EADAELIAIQcSIWRQ0BIBZBBGstAABBA3FFIAJFckUEQCAWQQAgAvwLAAsgAhBxIhdFDQEgF0EEay0AAEEDcUUgAkVyRQRAIBdBACAC/AsACyANCyEkIAlBAnQiDkH/////A0sNBCAJQQR0IgNB/f///wdPDQRBBCEYQQAhJUEAISZBBCEVIAMEQCADEHEiFUUNASAVQQRrLQAAQQNxRSADRXJFBEAgFUEAIAP8CwALIA4hJgsgAgRAIAIQcSIYRQ0BIBhBBGstAABBA3FFIAJFckUEQCAYQQAgAvwLAAsgDSElCyAJQf////8DSyAOQf3///8HT3INA0EEIQ9BACEgQQAhJ0EEIRogDgRAIA4QcSIaRQ0BIBpBBGstAABBA3FFIA5FckUEQCAaQQAgDvwLAAsgCSEnCwJAAn8CQAJAICJFBEBBACESQQAhHUEEIQoMAQsgCUEJbCISQf////8DSw0GIAlBJGwiAkH9////B08NBkEEIQpBACEdIAIEQCACEHEiD0UNBSAPQQRrLQAAQQNxRSACRXJFBEAgD0EAIAL8CwALIBIhIAsgIkEBRw0BC0EAIQhBACEoQQQhGUEAIRtBACEtQQAMAQsgCUEPbCIIQf////8DSw0DIAlBPGwiAkH9////B08NA0EEIRlBACEoIAIEQCACEHEiCkUNAyAKQQRrLQAAQQNxRSACRXJFBEAgCkEAIAL8CwALIAghHQsgIkEDSQRAQQEhLUEAIRtBAAwBCyAJQRVsIhtB/////wNLDQEgCUHUAGwiAkH9////B08NAQJ/IAJFBEBBAAwBCyACEHEiGUUNAyAZQQRrLQAAQQNxRSACRXJFBEAgGUEAIAL8CwALIBsLIShBASEtQQELITEgASgCHAR9IDhDAAAAP5QgEbOVBUMAAAAACyE6IAlFDQogBCAGaiE2IAYgFGohDEEBIQNBACEhIBkhEUEAIQQgHCIGIC9sIjchEwNAIAMhFCABIAQgNWwiAzYCKAJAIAQgN08EQCAwRQRAIAYhAgwCCyAwIAYgHGsiAkEAIAIgBk0bIgJNBEAgBiECDAILIDYgAkECdGooAgAgE2oiAiAESwRAIAYhAgwCCyACIRMgBkEBaiICIQYMAQsgLwRAIAQgL24hAgwBC0H4rcEAEIEIAAsCQAJAAkACQAJ9AkACQCABKAIcRQRAIANBe00gA0EEaiAHTXENASABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAQLIANBfU0gA0ECaiAHTXENASABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAMLIAMgDGoqAAAMAQsgOiADIAxqLwAAsyAQKAIks5OUQwAAAAAhOAJAICNFDQAgAkEDbCIDIB9PDQAgIyADQQJ0aioCACE4CyA4kgshOAJ9AkACQAJAIA0gBEEDbCIDSwRAIBYgA0ECdCIyaiA4OAIAIAEoAighBSABKAIcDQEgBUEEaiILQXtNIAVBCGogB01xDQIgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwFCyADIA1BiK7BABCMBwALIAVBAmoiC0F9TSAFQQRqIAdNcQ0BIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMAwsgCyAMaioAAAwBCyA6IAsgDGovAACzIBAoAiSzk5RDAAAAACE4AkAgI0UNACACQQNsQQFqIgUgH08NACAjIAVBAnRqKgIAITgLIDiSCyE4An0CQAJAAkAgDSADQQFqIgVLBEAgFiAFQQJ0IjNqIDg4AgAgASgCKCEFIAEoAhwNASAFQQhqIgJBe00gBUEMaiAHTXENAiABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAULIAUgDUGYrsEAEIwHAAsgBUEEaiILQX1NIAVBBmogB01xDQEgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwDCyACIAxqKgAADAELIDogCyAMai8AALMgECgCJLOTlEMAAAAAITgCQCAjRQ0AIAJBA2xBAmoiAiAfTw0AICMgAkECdGoqAgAhOAsgOJILITgCQCANIANBAmoiAksEQCAWIAJBAnQiNGogODgCACABQTBqIgUgDCAHIAEoAiggECgCFGoiAiABKAIcELsEIAEoAjQhAyABKAIwDQIgFyAyaiADNgIAIAUgDCAHQQJBBCABKAIcIgMbIAJqIAMQuwQgASgCNCEDIAEoAjANAiAXIDNqIAM2AgAgBSAMIAcgAkEEQQggASgCHCICG2ogAhC7BCABKAI0IQMgASgCMA0CIBcgNGogAzYCACAFIAwgByABKAIoIBAoAhhqIgsgASgCHBC7BCABKAI0IQMgASgCMA0CIAUgDCAHQQJBBCABKAIcIgIbIAtqIAIQuwQgASgCNCECIAEoAjBFDQEgAiEDDAILIAIgDUGorsEAEIwHAAsgAUEwaiAMIAdBBEEIIAEoAhwiBRsgC2ogBRC7BCABKAI0IQUgASgCMARAIAUhAwwBCyABQTBqIAwgByALQQZBDCABKAIcIgsbaiALELsEIAEoAjQhCyABKAIwBEAgCyEDDAELAkACQAJAAkACQAJAAkACQAJAAkAgDiAEQQJ0IilLBEAgFSApQQJ0aiACNgIAIClBAXIiAiAOTw0BIBUgAkECdGogBTYCACApQQJyIgIgDk8NAiAVIAJBAnRqIAs2AgAgKUEDciICIA5PDQMgFSACQQJ0aiADNgIAIAEoAiggECgCHGoiAiAHTw0EIBggMmogAiAMai0AALNDAAB/Q5U4AgAgAkEBaiIDIAdPDQUgGCAzaiADIAxqLQAAs0MAAH9DlTgCACACQQJqIgMgB08NBiAYIDRqIAMgDGotAACzQwAAf0OVOAIAIAJBA2oiAiAHTw0HIAQgCU8NCCAaIClqIAIgDGotAACzQwAAf0OVOAIAICJFDQ4gASAQKAIgNgIsIAEgBzYCRCABIAw2AkAgASAQNgI4IAEgAUEkajYCTCABIAFBIGo2AkggASABQRxqNgI8IAEgAUEsajYCNCABIAFBKGo2AjAgAUEIaiIFIAFBMGoiC0EAEM0DIAEoAgwhAyABKAIIDQsgBEEJbCICIBJPDQ0gDyACQQJ0aiADNgIAIAUgC0EDEM0DIAEoAgwhAyABKAIIDQsgEiACQQFqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBBhDNAyABKAIMIQMgASgCCA0LIBIgAkECaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQEQzQMgASgCDCEDIAEoAggNCyASIAJBA2oiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEEEM0DIAEoAgwhAyABKAIIDQsgEiACQQRqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBBxDNAyABKAIMIQMgASgCCA0LIBIgAkEFaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQIQzQMgASgCDCEDIAEoAggNCyASIAJBBmoiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEFEM0DIAEoAgwhAyABKAIIDQsgEiACQQdqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBCBDNAyABKAIMIQMgASgCCA0LIAJBCGoiAiASTw0NIA8gAkECdGogAzYCACAtDQkMCgsgKSAOQbiuwQAQjAcACyACIA5ByK7BABCMBwALIAIgDkHYrsEAEIwHAAsgAiAOQeiuwQAQjAcACyACIAdB+K7BABCMBwALIAMgB0GIr8EAEIwHAAsgAyAHQZivwQAQjAcACyACIAdBqK/BABCMBwALIAQgCUG4r8EAEIwHAAsgAUEIaiICIAFBMGoiBUEJEM0DIAEoAgwhAyABKAIIDQEgBEEPbCIEIAhPDQIgCiAEQQJ0aiADNgIAIAIgBUEOEM0DIAEoAgwhAyABKAIIDQEgCCAEQQFqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBExDNAyABKAIMIQMgASgCCA0BIAggBEECaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQQoQzQMgASgCDCEDIAEoAggNASAIIARBA2oiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEPEM0DIAEoAgwhAyABKAIIDQEgCCAEQQRqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBFBDNAyABKAIMIQMgASgCCA0BIAggBEEFaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQQsQzQMgASgCDCEDIAEoAggNASAIIARBBmoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEQEM0DIAEoAgwhAyABKAIIDQEgCCAEQQdqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBFRDNAyABKAIMIQMgASgCCA0BIAggBEEIaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQQwQzQMgASgCDCEDIAEoAggNASAIIARBCWoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEREM0DIAEoAgwhAyABKAIIDQEgCCAEQQpqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBFhDNAyABKAIMIQMgASgCCA0BIAggBEELaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQQ0QzQMgASgCDCEDIAEoAggNASAIIARBDGoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakESEM0DIAEoAgwhAyABKAIIDQEgCCAEQQ1qIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBFxDNAyABKAIMIQMgASgCCA0BIARBDmoiBCAITw0CIAogBEECdGogAzYCAAsgMUUNA0EAIQQgISECA0AgAUEIaiABQTBqIARByK/BAGooAgAQzQMgASgCDCEDIAEoAggNASACIBtJBEAgBCARaiADNgIAIAJBAWohAiAEQQRqIgRB1ABGDQUMAQsLIAIgG0GcsMEAEIwHAAsCQCAoBEAgGUEEaygCACIAQXhxIgQgKEECdCICQQRBCCAAQQNxIgAbakkNFiAAQQAgBCACQSdqSxsNFyAZEKICCyAdBEAgCkEEaygCACIAQXhxIgQgHUECdCICQQRBCCAAQQNxIgAbakkNFiAAQQAgBCACQSdqSxsNFyAKEKICCyAgBEAgD0EEaygCACIAQXhxIgQgIEECdCICQQRBCCAAQQNxIgAbakkNFiAAQQAgBCACQSdqSxsNFyAPEKICCyAnBEAgGkEEaygCACIAQXhxIgQgJ0ECdCICQQRBCCAAQQNxIgAbakkNFiAAQQAgBCACQSdqSxsNFyAaEKICCyAlBEAgGEEEaygCACIAQXhxIgQgJUECdCICQQRBCCAAQQNxIgAbakkNFiAAQQAgBCACQSdqSxsNFyAYEKICCyAmBEAgFUEEaygCACIAQXhxIgQgJkECdCICQQRBCCAAQQNxIgAbckkNFiAAQQAgBCACQSdqSxsNFyAVEKICCyAkRQ0UIBdBBGsoAgAiAEF4cSIEICRBAnQiAkEEQQggAEEDcSIAG2pJDRUgAEEAIAQgAkEnaksbDRYgFxCiAiAkRQ0UIBZBBGsoAgAiAEF4cSIEQQRBCCAAQQNxIgAbIAJqSQ0VIABBACAEIAJBJ2pLGw0AIBYQogIMFAsMFQsgBCAIQaywwQAQjAcACyACIBJBvLDBABCMBwALIBFB1ABqIREgIUEVaiEhIBQgCSAUSyICaiEDIBQhBCACDQALIAkhAyAsIQQMCQtBqKzBABD/BwsAC0GYrMEAEP8HAAtBiKzBABD/BwALQfirwQAQ/wcAC0Hoq8EAEP8HAAtB2KvBABD/BwALIBQgKyADQcywwQAQ6gcACyABQQA2AkAgAUEBNgI0IAFB+LDBADYCMCABQgQ3AjggAUEwahCSByEDDAYLAkACQAJAAkACQAJAAkACQAJAAkADQCAEICxrIgJBA2wiISANTQRAQYCABCADIANBgIAETxsiBkEDbCIUIA0gIWsiEUsNAiACIAlLDQMgBiAJIAJrIhFLDQQgDiACQQJ0IhFJDQUgBkECdCIFIA4gEWsiHEsNBkEAIR9BBCELQQQhB0EAIRwgIgRAIBIgAkEJbCITSQ0IIAZBCWwiHCASIBNrIgdLDQkgDyATQQJ0aiEHCwJ/AkACQCAtBEAgCCACQQ9sIhNJDQEgBkEPbCIfIAggE2siC0sNDyAKIBNBAnRqIQsLIDENAUEAIQJBBAwCCyATIAggCEHorMEAEOoHAAsgGyACQRVsIhNJDQogBkEVbCICIBsgE2siDEsNCyAZIBNBAnRqCyETIAFCBDcCeCABQgI3AnAgASACNgJsIAEgEzYCaCABIB82AmQgASALNgJgIAEgHDYCXCABIAc2AlggASAFNgJUIAEgFSARQQJ0ajYCUCABIBQ2AkwgASAXICFBAnQiAmo2AkggASAUNgJEIAEgAiAYajYCQCABIAY2AjwgASARIBpqNgI4IAEgFDYCNCABIAIgFmo2AjAgACAEIAYgAUEwahB+IAQgBmohBCADIAZrIgMNAQwMCwsgISANIA1B6K3BABDqBwALQQAgFCARQditwQAQ6gcACyACIAkgCUHIrcEAEOoHAAtBACAGIBFBuK3BABDqBwALIBEgDiAOQaitwQAQ6gcAC0EAIAUgHEGYrcEAEOoHAAsgEyASIBJBiK3BABDqBwALQQAgHCAHQfiswQAQ6gcACyATIBsgG0HIrMEAEOoHAAtBACACIAxBuKzBABDqBwALQQAgHyALQdiswQAQ6gcACwJAICgEQCAZQQRrKAIAIgRBeHEiAiAoQQJ0IgNBBEEIIARBA3EiBBtqSQ0BIARBACACIANBJ2pLGw0IIBkQogILIB0EQCAKQQRrKAIAIgRBeHEiAiAdQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIAoQogILICAEQCAPQQRrKAIAIgRBeHEiAiAgQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIA8QogILICcEQCAaQQRrKAIAIgRBeHEiAiAnQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIBoQogILICUEQCAYQQRrKAIAIgRBeHEiAiAlQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIBgQogILICYEQCAVQQRrKAIAIgRBeHEiAiAmQQJ0IgNBBEEIIARBA3EiBBtySQ0HIARBACACIANBJ2pLGw0IIBUQogILAkAgJEUNACAXQQRrKAIAIgJBeHEiAyAkQQJ0IgRBBEEIIAJBA3EiBhtqSQ0HIAZBACAEQSdqIgIgA0kbDQggFxCiAiAkRQ0AIBZBBGsoAgAiA0F4cSIGIARBBEEIIANBA3EiBBtqSQ0HIARBACACIAZJGw0DIBYQogILIAkgLGohLCAuICogLksiBGohLiAEDQEMBAsLDAQLDAQLIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgABDUASIDDQBBACEDCyABQYABaiQAIAMPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuDOAM3fwN9AX4jAEGAAWsiASQAAkACQAJAIAAoAsQBIgJB/x9NBEAgAUEANgJAIAFBATYCNCABQfCywQA2AjAgAUIENwI4IAFBMGoQkgchAwwBCyABIAAoAsABIgMtAAAiBDoABiABIAMtAAEiBjoAByAEQQEgBhsEQCABQQI2AjQgAUHAssEANgIwIAFCAjcCPCABQoCAgIDwBCI7IAFBB2qthDcDECABIDsgAUEGaq2ENwMIIAEgAUEIajYCOCABQTBqEJIHIQMMAQsgA0EEaigAACEqIAMoABAhDSABIAMvABQiBDYCHCAEQQNPBEAgAUEBNgI0IAFBmLLBADYCMCABQgE3AjwgASABQRxqrUKAgICAEIQ3AwggASABQQhqNgI4IAFBMGoQkgchAwwBCyABIANBJGooAAAiBkGAgID+eyAGQf////8HcRs2AiAgASADKAAoIgZBgICA/gMgBkH/////B3EbNgIkIARBKGxBrKrBAGohECACQYAga0EKdkEBaiEUQQAhBCAqQQp0QYAgaiIrIQICQAJAAkADQCAEICpGDQEgFCAEQQFqIgRGDQIgHiADQaggai8AACIGSyEIIB4gBiAIGyEeIAIgA0GEIGooAAAgECgCCCAQKAIAIBAoAgRqaiAGQQNNBH8gBkECdCgCpKtBBSAJCyAQKAIQbGpBBGpsIAJqIANBjCBqKAAAIANBlCBqLwAAbGogA0GkIGooAABBAnRqIgJNIANBgAhqIQMNAAsgAUEANgJAIAFBATYCNCABQfSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwDCyABQQA6ADggASAeNgI0IAEgDTYCMCAAIAFBMGoQpQQgKkUNAUGAICEeQQEhLgJAA0AgHiIEQYAIaiIeIAAoAsQBIgNLBEAgAUEANgJAIAFBATYCNCABQdSxwQA2AjAgAUIENwI4IAFBMGoQkgchAwwFCyAAKALAASIGIARqIgIoABgiEUUEQCAQKAIkIRELIAIoAAQhCUEAIQQgECgCCCAQKAIAIBAoAgRqaiACLwAoIiJBA00EfyAiQQJ0KAKkq0EFIAQLIBAoAhBsakEEaiI1rSAJrX4iO0IgiFBFBEAgAUEANgJAIAFBATYCNCABQdCrwQA2AjAgAUIENwI4IAFBMGoQkgchAwwFCwJAAkACQAJ/AkAgAyArIgQgAigAJCIwQQJ0IgggAigADCINIAIvABRsamoiFCA7pyIHaiIrTwRAIAIqABAhOCACKAAIIS8gAigAACEJIAIoACAhHCANDQFBAAwCCyABQQA2AkAgAUEBNgI0IAFBmLHBADYCMCABQgQ3AjggAUEwahCSByEDDAkLIAQgCGoiAiANQQxsaiADSw0BIA1BA2whHyACIAZqCyEjIBQgK00EQAJAIAlBA2wiDUH/////A0sNACAJQQxsIgJB/f///wdPDQACQAJAAkACQAJAAn8gAkUEQEEEIRZBBCEXQQAMAQsgAhBxIhZFDQEgFkEEay0AAEEDcUUgAkVyRQRAIBZBACAC/AsACyACEHEiF0UNASAXQQRrLQAAQQNxRSACRXJFBEAgF0EAIAL8CwALIA0LISQgCUECdCIOQf////8DSw0EIAlBBHQiA0H9////B08NBEEEIRhBACElQQAhJkEEIRUgAwRAIAMQcSIVRQ0BIBVBBGstAABBA3FFIANFckUEQCAVQQAgA/wLAAsgDiEmCyACBEAgAhBxIhhFDQEgGEEEay0AAEEDcUUgAkVyRQRAIBhBACAC/AsACyANISULIAlB/////wNLIA5B/f///wdPcg0DQQQhD0EAISBBACEnQQQhGiAOBEAgDhBxIhpFDQEgGkEEay0AAEEDcUUgDkVyRQRAIBpBACAO/AsACyAJIScLAkACfwJAAkAgIkUEQEEAIRJBACEdQQQhCgwBCyAJQQlsIhJB/////wNLDQYgCUEkbCICQf3///8HTw0GQQQhCkEAIR0gAgRAIAIQcSIPRQ0FIA9BBGstAABBA3FFIAJFckUEQCAPQQAgAvwLAAsgEiEgCyAiQQFHDQELQQAhCEEAIShBBCEZQQAhG0EAIS1BAAwBCyAJQQ9sIghB/////wNLDQMgCUE8bCICQf3///8HTw0DQQQhGUEAISggAgRAIAIQcSIKRQ0DIApBBGstAABBA3FFIAJFckUEQCAKQQAgAvwLAAsgCCEdCyAiQQNJBEBBASEtQQAhG0EADAELIAlBFWwiG0H/////A0sNASAJQdQAbCICQf3///8HTw0BAn8gAkUEQEEADAELIAIQcSIZRQ0DIBlBBGstAABBA3FFIAJFckUEQCAZQQAgAvwLAAsgGwshKEEBIS1BAQshMSABKAIcBH0gOEMAAAA/lCARs5UFQwAAAAALITogCUUNCiAEIAZqITYgBiAUaiEMQQEhA0EAISEgGSERQQAhBCAcIgYgL2wiNyETA0AgAyEUIAEgBCA1bCIDNgIoAkAgBCA3TwRAIDBFBEAgBiECDAILIDAgBiAcayICQQAgAiAGTRsiAk0EQCAGIQIMAgsgNiACQQJ0aigCACATaiICIARLBEAgBiECDAILIAIhEyAGQQFqIgIhBgwBCyAvBEAgBCAvbiECDAELQfitwQAQgQgACwJAAkACQAJAAn0CQAJAIAEoAhxFBEAgA0F7TSADQQRqIAdNcQ0BIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBAsgA0F9TSADQQJqIAdNcQ0BIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMAwsgAyAMaioAAAwBCyA6IAMgDGovAACzIBAoAiSzk5RDAAAAACE4AkAgI0UNACACQQNsIgMgH08NACAjIANBAnRqKgIAITgLIDiSCyE4An0CQAJAAkAgDSAEQQNsIgNLBEAgFiADQQJ0IjJqIDg4AgAgASgCKCEFIAEoAhwNASAFQQRqIgtBe00gBUEIaiAHTXENAiABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAULIAMgDUGIrsEAEIwHAAsgBUECaiILQX1NIAVBBGogB01xDQEgAUEANgJAIAFBATYCNCABQcjbwQA2AjAgAUIENwI4IAFBMGoQkgchAwwDCyALIAxqKgAADAELIDogCyAMai8AALMgECgCJLOTlEMAAAAAITgCQCAjRQ0AIAJBA2xBAWoiBSAfTw0AICMgBUECdGoqAgAhOAsgOJILITgCfQJAAkACQCANIANBAWoiBUsEQCAWIAVBAnQiM2ogODgCACABKAIoIQUgASgCHA0BIAVBCGoiAkF7TSAFQQxqIAdNcQ0CIAFBADYCQCABQQE2AjQgAUHI28EANgIwIAFCBDcCOCABQTBqEJIHIQMMBQsgBSANQZiuwQAQjAcACyAFQQRqIgtBfU0gBUEGaiAHTXENASABQQA2AkAgAUEBNgI0IAFByNvBADYCMCABQgQ3AjggAUEwahCSByEDDAMLIAIgDGoqAAAMAQsgOiALIAxqLwAAsyAQKAIks5OUQwAAAAAhOAJAICNFDQAgAkEDbEECaiICIB9PDQAgIyACQQJ0aioCACE4CyA4kgshOAJAIA0gA0ECaiICSwRAIBYgAkECdCI0aiA4OAIAIAFBMGoiBSAMIAcgASgCKCAQKAIUaiICIAEoAhwQuwQgASgCNCEDIAEoAjANAiAXIDJqIAM2AgAgBSAMIAdBAkEEIAEoAhwiAxsgAmogAxC7BCABKAI0IQMgASgCMA0CIBcgM2ogAzYCACAFIAwgByACQQRBCCABKAIcIgIbaiACELsEIAEoAjQhAyABKAIwDQIgFyA0aiADNgIAIAUgDCAHIAEoAiggECgCGGoiCyABKAIcELsEIAEoAjQhAyABKAIwDQIgBSAMIAdBAkEEIAEoAhwiAhsgC2ogAhC7BCABKAI0IQIgASgCMEUNASACIQMMAgsgAiANQaiuwQAQjAcACyABQTBqIAwgB0EEQQggASgCHCIFGyALaiAFELsEIAEoAjQhBSABKAIwBEAgBSEDDAELIAFBMGogDCAHIAtBBkEMIAEoAhwiCxtqIAsQuwQgASgCNCELIAEoAjAEQCALIQMMAQsCQAJAAkACQAJAAkACQAJAAkACQCAOIARBAnQiKUsEQCAVIClBAnRqIAI2AgAgKUEBciICIA5PDQEgFSACQQJ0aiAFNgIAIClBAnIiAiAOTw0CIBUgAkECdGogCzYCACApQQNyIgIgDk8NAyAVIAJBAnRqIAM2AgAgASgCKCAQKAIcaiICIAdPDQQgGCAyaiACIAxqLQAAs0MAAH9DlTgCACACQQFqIgMgB08NBSAYIDNqIAMgDGotAACzQwAAf0OVOAIAIAJBAmoiAyAHTw0GIBggNGogAyAMai0AALNDAAB/Q5U4AgAgAkEDaiICIAdPDQcgBCAJTw0IIBogKWogAiAMai0AALNDAAB/Q5U4AgAgIkUNDiABIBAoAiA2AiwgASAHNgJEIAEgDDYCQCABIBA2AjggASABQSRqNgJMIAEgAUEgajYCSCABIAFBHGo2AjwgASABQSxqNgI0IAEgAUEoajYCMCABQQhqIgUgAUEwaiILQQAQzQMgASgCDCEDIAEoAggNCyAEQQlsIgIgEk8NDSAPIAJBAnRqIAM2AgAgBSALQQMQzQMgASgCDCEDIAEoAggNCyASIAJBAWoiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEGEM0DIAEoAgwhAyABKAIIDQsgEiACQQJqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBARDNAyABKAIMIQMgASgCCA0LIBIgAkEDaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQQQzQMgASgCDCEDIAEoAggNCyASIAJBBGoiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEHEM0DIAEoAgwhAyABKAIIDQsgEiACQQVqIgVNBEAgBSECDA4LIA8gBUECdGogAzYCACABQQhqIAFBMGpBAhDNAyABKAIMIQMgASgCCA0LIBIgAkEGaiIFTQRAIAUhAgwOCyAPIAVBAnRqIAM2AgAgAUEIaiABQTBqQQUQzQMgASgCDCEDIAEoAggNCyASIAJBB2oiBU0EQCAFIQIMDgsgDyAFQQJ0aiADNgIAIAFBCGogAUEwakEIEM0DIAEoAgwhAyABKAIIDQsgAkEIaiICIBJPDQ0gDyACQQJ0aiADNgIAIC0NCQwKCyApIA5BuK7BABCMBwALIAIgDkHIrsEAEIwHAAsgAiAOQdiuwQAQjAcACyACIA5B6K7BABCMBwALIAIgB0H4rsEAEIwHAAsgAyAHQYivwQAQjAcACyADIAdBmK/BABCMBwALIAIgB0Gor8EAEIwHAAsgBCAJQbivwQAQjAcACyABQQhqIgIgAUEwaiIFQQkQzQMgASgCDCEDIAEoAggNASAEQQ9sIgQgCE8NAiAKIARBAnRqIAM2AgAgAiAFQQ4QzQMgASgCDCEDIAEoAggNASAIIARBAWoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakETEM0DIAEoAgwhAyABKAIIDQEgCCAEQQJqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBChDNAyABKAIMIQMgASgCCA0BIAggBEEDaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQQ8QzQMgASgCDCEDIAEoAggNASAIIARBBGoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEUEM0DIAEoAgwhAyABKAIIDQEgCCAEQQVqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBCxDNAyABKAIMIQMgASgCCA0BIAggBEEGaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRAQzQMgASgCDCEDIAEoAggNASAIIARBB2oiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEVEM0DIAEoAgwhAyABKAIIDQEgCCAEQQhqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBDBDNAyABKAIMIQMgASgCCA0BIAggBEEJaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQREQzQMgASgCDCEDIAEoAggNASAIIARBCmoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEWEM0DIAEoAgwhAyABKAIIDQEgCCAEQQtqIgJNBEAgAiEEDAMLIAogAkECdGogAzYCACABQQhqIAFBMGpBDRDNAyABKAIMIQMgASgCCA0BIAggBEEMaiICTQRAIAIhBAwDCyAKIAJBAnRqIAM2AgAgAUEIaiABQTBqQRIQzQMgASgCDCEDIAEoAggNASAIIARBDWoiAk0EQCACIQQMAwsgCiACQQJ0aiADNgIAIAFBCGogAUEwakEXEM0DIAEoAgwhAyABKAIIDQEgBEEOaiIEIAhPDQIgCiAEQQJ0aiADNgIACyAxRQ0DQQAhBCAhIQIDQCABQQhqIAFBMGogBEHIr8EAaigCABDNAyABKAIMIQMgASgCCA0BIAIgG0kEQCAEIBFqIAM2AgAgAkEBaiECIARBBGoiBEHUAEYNBQwBCwsgAiAbQZywwQAQjAcACwJAICgEQCAZQQRrKAIAIgBBeHEiBCAoQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIBkQogILIB0EQCAKQQRrKAIAIgBBeHEiBCAdQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIAoQogILICAEQCAPQQRrKAIAIgBBeHEiBCAgQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIA8QogILICcEQCAaQQRrKAIAIgBBeHEiBCAnQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIBoQogILICUEQCAYQQRrKAIAIgBBeHEiBCAlQQJ0IgJBBEEIIABBA3EiABtqSQ0WIABBACAEIAJBJ2pLGw0XIBgQogILICYEQCAVQQRrKAIAIgBBeHEiBCAmQQJ0IgJBBEEIIABBA3EiABtySQ0WIABBACAEIAJBJ2pLGw0XIBUQogILICRFDRQgF0EEaygCACIAQXhxIgQgJEECdCICQQRBCCAAQQNxIgAbakkNFSAAQQAgBCACQSdqSxsNFiAXEKICICRFDRQgFkEEaygCACIAQXhxIgRBBEEIIABBA3EiABsgAmpJDRUgAEEAIAQgAkEnaksbDQAgFhCiAgwUCwwVCyAEIAhBrLDBABCMBwALIAIgEkG8sMEAEIwHAAsgEUHUAGohESAhQRVqISEgFCAJIBRLIgJqIQMgFCEEIAINAAsgCSEDICwhBAwJC0GorMEAEP8HCwALQZiswQAQ/wcAC0GIrMEAEP8HAAtB+KvBABD/BwALQeirwQAQ/wcAC0HYq8EAEP8HAAsgFCArIANBzLDBABDqBwALIAFBADYCQCABQQE2AjQgAUH4sMEANgIwIAFCBDcCOCABQTBqEJIHIQMMBgsCQAJAAkACQAJAAkACQAJAAkACQANAIAQgLGsiAkEDbCIhIA1NBEBBgIAEIAMgA0GAgARPGyIGQQNsIhQgDSAhayIRSw0CIAIgCUsNAyAGIAkgAmsiEUsNBCAOIAJBAnQiEUkNBSAGQQJ0IgUgDiARayIcSw0GQQAhH0EEIQtBBCEHQQAhHCAiBEAgEiACQQlsIhNJDQggBkEJbCIcIBIgE2siB0sNCSAPIBNBAnRqIQcLAn8CQAJAIC0EQCAIIAJBD2wiE0kNASAGQQ9sIh8gCCATayILSw0PIAogE0ECdGohCwsgMQ0BQQAhAkEEDAILIBMgCCAIQeiswQAQ6gcACyAbIAJBFWwiE0kNCiAGQRVsIgIgGyATayIMSw0LIBkgE0ECdGoLIRMgAUIENwJ4IAFCAjcCcCABIAI2AmwgASATNgJoIAEgHzYCZCABIAs2AmAgASAcNgJcIAEgBzYCWCABIAU2AlQgASAVIBFBAnRqNgJQIAEgFDYCTCABIBcgIUECdCICajYCSCABIBQ2AkQgASACIBhqNgJAIAEgBjYCPCABIBEgGmo2AjggASAUNgI0IAEgAiAWajYCMCAAIAQgBiABQTBqEJcBIAQgBmohBCADIAZrIgMNAQwMCwsgISANIA1B6K3BABDqBwALQQAgFCARQditwQAQ6gcACyACIAkgCUHIrcEAEOoHAAtBACAGIBFBuK3BABDqBwALIBEgDiAOQaitwQAQ6gcAC0EAIAUgHEGYrcEAEOoHAAsgEyASIBJBiK3BABDqBwALQQAgHCAHQfiswQAQ6gcACyATIBsgG0HIrMEAEOoHAAtBACACIAxBuKzBABDqBwALQQAgHyALQdiswQAQ6gcACwJAICgEQCAZQQRrKAIAIgRBeHEiAiAoQQJ0IgNBBEEIIARBA3EiBBtqSQ0BIARBACACIANBJ2pLGw0IIBkQogILIB0EQCAKQQRrKAIAIgRBeHEiAiAdQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIAoQogILICAEQCAPQQRrKAIAIgRBeHEiAiAgQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIA8QogILICcEQCAaQQRrKAIAIgRBeHEiAiAnQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIBoQogILICUEQCAYQQRrKAIAIgRBeHEiAiAlQQJ0IgNBBEEIIARBA3EiBBtqSQ0HIARBACACIANBJ2pLGw0IIBgQogILICYEQCAVQQRrKAIAIgRBeHEiAiAmQQJ0IgNBBEEIIARBA3EiBBtySQ0HIARBACACIANBJ2pLGw0IIBUQogILAkAgJEUNACAXQQRrKAIAIgJBeHEiAyAkQQJ0IgRBBEEIIAJBA3EiBhtqSQ0HIAZBACAEQSdqIgIgA0kbDQggFxCiAiAkRQ0AIBZBBGsoAgAiA0F4cSIGIARBBEEIIANBA3EiBBtqSQ0HIARBACACIAZJGw0DIBYQogILIAkgLGohLCAuICogLksiBGohLiAEDQEMBAsLDAQLDAQLIAFBADYCQCABQQE2AjQgAUHUscEANgIwIAFCBDcCOCABQTBqEJIHIQMMAQsgABCjASIDDQBBACEDCyABQYABaiQAIAMPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAu3OwMafwV+AnsjAEGAA2siAyQAIANBADYCFCADQoCAgIDAADcCDCADQYCAgIB4NgIYIANBADYCYCADQQA7AVwgAyACNgJYIANBADYCVCADQQE6AFAgA0EKNgJMIAMgAjYCSCADQQA2AkQgAyACNgJAIAMgATYCPCADQQo2AjggA0EkaiEQIANBHGoiEkEYaiETAkACQAJAAkACQAJ/AkACQANAAkAgAygCPCECIANB4AJqIANBOGoQ/QICQAJ/IAMoAuACQQFGBEAgAygCVCEEIAMgAygC6AIiATYCVCACIARqIQcgASAEawwBCyADLQBdDQIgA0EBOgBdAkAgAy0AXEEBRgRAIAMoAlghASADKAJUIQIMAQsgAygCWCIBIAMoAlQiAkYNAwsgAygCPCACaiEHIAEgAmsLIgVFDQAgByAFQQFrIgJqLQAAQQpHDQAgBUECayIBIAIgAgR/IAdBACABIAdqLQAAQQ1GGwVBAAsiARshBSABIAcgARshBwsgB0UNACADIAMoAmAiCkEBajYCYCAFIAdqIQRBACEBIAchAgJAAkAgBUUEQEEAIQgMAQsDQCABIggCfyACIgEsAAAiBkEATgRAIAZB/wFxIQUgAUEBagwBCyABLQABQT9xIQIgBkEfcSEFIAZBX00EQCAFQQZ0IAJyIQUgAUECagwBCyABLQACQT9xIAJBBnRyIQIgBkFwSQRAIAIgBUEMdHIhBSABQQNqDAELIAVBEnRBgIDwAHEgAS0AA0E/cSACQQZ0cnIhBSABQQRqCyICIAFraiEBAkAgBUEgRiAFQQlrQQVJcg0AIAVBgAFJDQICQAJAAkACQCAFQQh2IgZBFmsOGwEGBgYGBgYGBgYCBgYGBgYGBgYGBgYGBgYGAwALIAYNBSAFQf8BcS0AxKFHQQFxRQ0FDAMLIAVBgC1HDQQMAgsgBUH/AXEtAMShR0ECcUUNAwwBCyAFQYDgAEcNAgsgAiAERw0AC0EAIQhBACEBDAELIAIgBEYNAANAAkAgBCIGQQFrIgQsAAAiBUEASARAIAVBP3ECfyAGQQJrIgQtAAAiCcAiBUFATgRAIAlBH3EMAQsgBUE/cQJ/IAZBA2siBC0AACIJwCIFQUBOBEAgCUEPcQwBCyAFQT9xIAZBBGsiBC0AAEEHcUEGdHILQQZ0cgtBBnRyIQULAkAgBUEgRiAFQQlrQQVJcg0AIAVBgAFJDQECQAJAAkACQCAFQQh2IglBFmsOGwAFBQUFBQUFBQUBBQUFBQUFBQUFBQUFBQUFAgMLIAVBgC1GDQMMBAsgBUH/AXEtAMShR0ECcQ0CDAMLIAVBgOAARw0CDAELIAkNASAFQf8BcS0AxKFHQQFxRQ0BCyACIARHDQEMAgsLIAEgAmsgBmohAQsgAyABIAhrIgw2AmwgAyAHIAhqIhQ2AmgCQAJAIApFBEAgDEEDRgRAIBRBkNDHAEEDENsHRQ0CCyADQQA2AvACIANBATYC5AIgA0Go0McANgLgAiADQgQ3AugCIANB4AJqEJUHIQEgAEGAgICAeDYCrAEgACABNgIADAgLIAwNAQsgAy0AXUUNAgwBCyABIAdqIQlBACENQQAhAkEAIQogFCIEIQFBACEGQQAhBwNAIAYhCAJ/AkAgB0EBcUUEQEEBIQcgASAJRkUEQANAIAIiBQJ/IAEiAiwAACIGQQBOBEAgBkH/AXEhBCABQQFqDAELIAItAAFBP3EhASAGQR9xIQQgBkFfTQRAIARBBnQgAXIhBCACQQJqDAELIAItAAJBP3EgAUEGdHIhASAGQXBJBEAgASAEQQx0ciEEIAJBA2oMAQsgBEESdEGAgPAAcSACLQADQT9xIAFBBnRyciEEIAJBBGoLIgEgAmtqIQIgBEEJayIGQRdNQQBBASAGdEGfgIAEcRsNAwJAIARBgAFJDQACQAJAAkACQCAEQQh2IgZBFmsOGwAEBAQEBAQEBAQBBAQEBAQEBAQEBAQEBAQEAgMLIARBgC1GDQcMAwsgBEH/AXEtAMShR0ECcQ0GDAILIARBgOAARg0FDAELIAYNACAEQf8BcS0AxKFHQQFxDQQLIAEgCUcNAAsgCSEEC0EBIQ0gCSEBIAwhBSAIDAILQQBBAEGw0McAEIwHAAsgASEEIAIhCkEAIQcgAgshBiAFIAhGDQALQSAQcSIRRQ0CIBEgBSAIazYCBCARIAggFGo2AgBBASEOIANBATYC6AIgAyARNgLkAiADQQQ2AuACA0AgCiEBIA0hBwNAIAEhBgJ/AkAgB0EBcUUEQEEBIQcgBCAJRwRAA0AgAiIFAn8gBCICLAAAIghBAE4EQCAIQf8BcSEBIAJBAWoMAQsgAi0AAUE/cSEBIAhBH3EhBCAIQV9NBEAgBEEGdCABciEBIAJBAmoMAQsgAi0AAkE/cSABQQZ0ciEBIAhBcEkEQCABIARBDHRyIQEgAkEDagwBCyAEQRJ0QYCA8ABxIAItAANBP3EgAUEGdHJyIQEgAkEEagsiBCACa2ohAiABQQlrIghBF01BAEEBIAh0QZ+AgARxGw0DAkAgAUGAAUkNAAJAAkACQAJAIAFBCHYiCEEWaw4bAAQEBAQEBAQEBAEEBAQEBAQEBAQEBAQEBAQCAwsgAUGALUYNBwwDCyABQf8BcS0AxKFHQQJxDQYMAgsgAUGA4ABGDQUMAQsgCA0AIAFB/wFxLQDEoUdBAXENBAsgBCAJRw0ACwtBASENIAwhBSAGDAILIAMoAuACIQgCQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQCADKALkAiILKAIEQQZrDgUAAQIKAwoLIAsoAgBBqajHAEEGENsHIA5BA0dyDQkCQCALKAIMQRRHDQAgCygCCEHA0McAQRQQ2wcNACALKAIUQQNGBEBBASEVIAsoAhBB1NDHAEEDENsHRQ0NCyADQQE2AuQCIANB8NDHADYC4AIgA0IBNwLsAiADIAtBEGqtQoCAgIAghDcD0AIgAyADQdACajYC6AIgA0H8AGoiASADQeACahCxBiABEJAHDAsLIANBATYC5AIgA0GQ0ccANgLgAiADQgE3AuwCIAMgC0EIaq1CgICAgCCENwPQAiADIANB0AJqNgLoAiADQfAAaiIBIANB4AJqELEGIAEQkAcMCgsgCygCACIBQfeVxwBBBxDbB0UNCiABQZjRxwBBBxDbByAOQQNHcg0IIAMoAhghAiADQYCAgIB4NgIYIAJBgICAgHhHBEAgAygCFCIBIAMoAgxGBEAgA0EMakGg0ccAEIMGCyADKAIQIAFBBXRqIgQgAjYCACAEIBIpAgA3AgQgBEEMaiASQQhq/QACAP0LAgAgBEEcaiATKAIANgIAIAMgAUEBajYCFAsgCygCECECIAsoAgwhDCALKAIIIQZBACEEAkACQAJAIAsoAhQiAQ4CCQABC0EBIQQgAi0AAEEraw4DCAEIAQsgAi0AAEErRgRAIAFBAWshBCACQQFqIQIgAUEKSQ0BDAcLIAEiBEEJTw0GC0EAIQEDQCACLQAAQTBrIgVBCUsEQEEBENEHDAsLIAJBAWohAiAFIAFBCmxqIQEgBEEBayIEDQALDAcLIAsoAgApAABC8OS9g9fMnLr5AFINByAOQQFGDQIgCygCDCIBQQRHDQEgCygCCCgAAEHs0s2jB0cNASADQQA2AvACIANBATYC5AIgA0Hg0ccANgLgAiADQgQ3AugCIANB4AJqEJUHDAgLIAsoAgBBrNLHAEEKENsHDQYgCEUNDQJAIAtBBGsoAgAiAUF4cSIEIAhBA3QiAkEEQQggAUEDcSIBG2pPBEAgAUEAIAQgAkEnaksbDQEgCxCiAgwPCwwWCwwWCyAOQQNHDQAgAygCGEGAgICAeEcNASADQQA2AvACIANBATYC5AIgA0GE0scANgLgAiADQgQ3AugCIANB4AJqEJUHDAYLIANBATYC5AIgA0Gk0scANgLgAiADQgE3AuwCIAMgA0HoAGqtQoCAgIAghDcD0AIgAyADQdACajYC6AIgA0GIAWoiASADQeACahCxBiABEJAHDAULIAMgCygCCCICNgLAAiADIAE2AsQCAn8CQAJAAkACQAJAAkACQAJAAkAgAUEDaw4EAwABAgcLIAIoAABB49CFkwdHDQNBACEEQQEMCAsgAkHU5ccAQQUQ2wdFBEBBASEEQQEMCAsgAkHZ5ccAQQUQ2wcNA0ECIQRBAgwHCyACQd7lxwBBBhDbBw0DQQMhBEECDAYLIAJB5OXHAEEDENsHDQNBBCEEQQQMBQsgAigAAEH10rmjB0cNAkEFIQRBBAwECyACQeflxwBBBRDbBw0BQQYhBEEEDAMLIAJB7OXHAEEGENsHRQ0BCyADIANBwAJqrUKAgICAIIQ3A8gCIANCATcC7AIgA0EBNgLkAiADQZTmxwA2AuACIAMgA0HIAmo2AugCIANB0AJqIgEgA0HgAmoQ7AMgARCQBwwGC0EHIQRBCAshASADIAEgAygCNCIFajYCNCALKAIUIgdBAE4EQCALKAIQIQECQCAHRQRAQQEhDAwBCyAHEHEiDEUNDgsgBwRAIAwgASAH/AoAAAsgAygCLCIGIAMoAiRGBEAjAEEgayIPJAACQCAQKAIAIglBs+bMGUsEf0EABUEEIAlBAXQiASABQQRNGyICQRRsIQEgDyAJBH8gDyAJQRRsNgIcIA8gECgCBDYCFEEEBUEACzYCGCAPQQhqQQQgASAPQRRqEIUHIA8oAghBAUcNASAPKAIQIRAgDygCDAsgEEHA5ccAEJMJAAsgDygCDCEBIBAgAjYCACAQIAE2AgQgD0EgaiQACyADKAIoIAZBFGxqIgEgBDoAECABIAU2AgwgASAHNgIIIAEgDDYCBCABIAc2AgAgAyAGQQFqNgIsDAYLQdiayAAQ/wcAC0EAIQEgBCEFA0AgBUUNAiACLQAAQTBrIglBCUsEQEEBENEHDAULQQIhBCABrUIKfiIdQiCIpw0BIAJBAWohAiAFQQFrIQUgCSAdp2oiASAJTw0ACwsgBBDRBwwCCyAMQQBOBEACQCAMRQRAQQEhAgwBCyAMEHEiAkUNCwsgDARAIAIgBiAM/AoAAAsgA0EANgI0IAMgATYCMCADQQA2AiwgA0KAgICAwAA3AiQgAyAMNgIgIAMgAjYCHCADIAw2AhgMAwtB2JrIABD/BwALIANBATYC5AIgA0Gw08cANgLgAiADQgE3AuwCIAMgA0HoAGqtQoCAgIAghDcD0AIgAyADQdACajYC6AIgA0GUAWoiASADQeACahCxBiABEJAHCyEBIABBgICAgHg2AqwBIAAgATYCACAIRQ0KIAsgCEEDdEEEEKIHDAoLAkAgCARAIAtBBGsoAgAiAUF4cSIEIAhBA3QiAkEEQQggAUEDcSIBG2pJDQ4gAUEAIAQgAkEnaksbDQEgCxCiAgsgAy0AXUUNBgwFCwwNCyACIQpBACEHIAILIQEgBSAGRg0ACyADKALgAiAORgRAIANB4AJqIA5BAUEEQQgQpAUgAygC5AIhEQsgESAOQQN0aiIBIAUgBms2AgQgASAGIBRqNgIAIAMgDkEBaiIONgLoAgwACwALCyADKAIYIQIgA0GAgICAeDYCGCACQYCAgIB4RwRAIAMoAhQiASADKAIMRgRAIANBDGpBuNLHABCDBgsgAygCECABQQV0aiIEIAI2AgAgBCASKQIANwIEIARBDGogEkEIav0AAgD9CwIAIARBHGogEkEYaigCADYCACADIAFBAWo2AhQLIBVBAXFFBEAgA0EANgJIIANBATYCPCADQeDSxwA2AjggA0IENwJAIANBOGoQlQchASAAQYCAgIB4NgKsASAAIAE2AgAMBQsCfwJAIAMoAhQiFkGTyaQSSQRAIAMoAhAhBCADKAIMIRoCQCAWRQRAQQAhFkEIIQlBACEIDAELIBZBOGwQcSIJRQ0EIAQgFkEFdGohFCADQThqrSEgQQAhCCAEIQIDQCADQdgCaiIPIAJBCGooAgA2AgAgAyACKQIANwPQAiACKAIUIQcgAigCECEBIAIoAgwhGyACKAIYIRIgAigCHCEMIAMCfkHAu8kALQAABEBB0LvJACkDACEeQci7yQApAwAMAQsgA0EAOgA4QQEQcSIKRQ0GIApBBGsoAgAiBkF4cSIFQQVBCSAGQQNxIg0bSQ0MIA1BACAFQSlPGw0NIAoQogJBwLvJAEEBOgAAQdC7yQAgCq0iHjcDACAgCyIdNwNIQci7yQAgHUIBfDcDACADIB43A1AgA0HwmsgA/QADAP0LAzgCQCAHRQ0AIAEgB0EUbGohECADQThqIAcgA0HIAGoiBxC7ASABIQUDQCAFLQAQIRwgBSgCDCELIAUoAgAhFSADKQNIIAMpA1AgBSgCBCIRIAUoAggiGBCVBCEdIAMoAkBFBEAgA0E4akEBIAcQuwELIAVBFGohBSADKAI8IhcgHadxIQ0gHUIZiCIhQv8Ag0KBgoSIkKDAgAF+IR5BACEOIAMoAjghCkEAIQYDQAJ/AkACQAJAIAogDWopAAAiHyAehSIdQn+FIB1CgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiHVBFBEADQCAKIB16p0EDdiANaiAXcUFsbGoiGUEMaygCACAYRgRAIBEgGUEQaygCACAYENsHRQ0DCyAdQgF9IB2DIh1QRQ0ACwsgH0KAgYKEiJCgwIB/gyEdIA5FBEAgHVANAyAdeqdBA3YgDWogF3EhEwtBASAdIB9CAYaDUA0DGiAKIBNqLAAAIg1BAE4EQCAKIAopAwBCgIGChIiQoMCAf4N6p0EDdiITai0AACENCyAKIBNqICGnQf8AcSIGOgAAIAogE0EIayAXcWpBCGogBjoAACAKIBNBbGxqIgpBFGsgFTYCACAKQRBrIBE2AgAgCkEMayAYNgIAIApBCGsgCzYCACAKQQRrIBw6AAAgAyADKAJEQQFqNgJEIAMgAygCQCANQQFxazYCQAwBCyAZQQRrIBw6AAAgGUEIayALNgIAIBVFDQAgEUEEaygCACIGQXhxIg1BBEEIIAZBA3EiChsgFWpJDREgCkEAIA0gFUEnaksbDRIgERCiAgsgBSAQRw0DDAQLQQALIQ4gBkEIaiIGIA1qIBdxIQ0MAAsACwALIBsEQCABQQRrKAIAIgVBeHEiCiAbQRRsIgZBBEEIIAVBA3EiBRtqSQ0MIAVBACAKIAZBJ2pLGw0NIAEQogILIANB8AJqIANByABq/QADACIi/QsDACADIAP9AAM4IiP9CwPgAiAJIAhBOGxqIgFBEGogIv0LAwAgASAj/QsDACABIAw2AiQgASASNgIgIAEgAykD0AI3AiggAUEwaiAPKAIANgIAIAhBAWohCCACQSBqIgIgFEcNAAsLAkAgGgRAIARBBGsoAgAiAUF4cSIFIBpBBXQiAkEEQQggAUEDcSIBG3JJDQsgAUEAIAUgAkEnaksbDQEgBBCiAgsgCUE4QQAgCBsiEGohBiAJIAhBOGwiBWohD0GAgICAeCESIAhFDQIgBiEEIAkhAQNAAkAgAUEwaigCAEEGRgRAIAFBLGooAgAiAkHo0scAQQYQ2wdFDQELIAQiASAPRiICDQQgAUEAQTggAhtqIQQgAQ0BDAQLC0EGIRJBBhBxIgRFDQQgBCACKAAANgAAIARBBGogAkEEai8AADsAACABKAIgIREgASgCJCEVIANBOGogARDDAyADQegCaiADQcQAav0AAgD9CwMAIANB+AJqIANB1ABqKAIANgIAIAMgAykCPDcD4AIgBK1CgICAgOAAhCEfIAMoAjghE0EADAMLDAoLQciVxwAQ/wcAC0EBCyADQQA2AkggA0EBNgI8IANBhNPHADYCOCADQgQ3AkAgA0E4ahCVByECBEAgAEGAgICAeDYCrAEgACACNgIAIAgEQCAJIQIDQCACQShqKAIAIgUEQCACQSxqKAIAIgRBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIAVqSQ0KIABBACABIAVBJ2pLGw0LIAQQogILIAIQvwQgAkE4aiECIAhBAWsiCA0ACwsgFkUNBiAJQQRrKAIAIgBBeHEiAiAWQThsIgFBBEEIIABBA3EiABtqSQ0HIABBACACIAFBJ2pLGw0IIAkQogIMBgsgA0G4AWogA0H4AmooAgA2AgAgA0GwAWogA0HwAmopAwA3AwAgAyAD/QAD4AL9CwOgASACIAIoAgAoAgARAwAgCEUNASAGIQQgCSEBAkADQAJAIAFBMGooAgBBBUYEQCABQSxqKAIAIgJBjNPHAEEFENsHRQ0BC0GAgICAeCEHIAQiASAPRiICDQIgAUEAQTggAhtqIQQgAQ0BDAILC0EFIQdBBRBxIgRFDQEgBCACKAAANgAAIARBBGogAkEEai0AADoAACABKAIgIQwgASgCJCEUIANBgAJqIAEQwwMgBK1CgICAgNAAhCEdCyAGIQQgCSEBA0ACQCAEIQICQAJAIAFBMGooAgBBAkYEQCABQSxqKAIAIgQvAABB89ABRg0BC0GAgICAeCEOIAIgD0YiAUUNAQwCC0ECIQ5BAhBxIgJFDQMgAiAELwAAOwAAIAEoAiQhDSABKAIgIQogA0GgAmogARDDAyACrUKAgICAIIQhHgwBCyACQQBBOCABG2ohBCACIgENAQsLIANB0AFqIANBkAJq/QADAP0LAwAgA0HwAWogA0GwAmr9AAMA/QsDACADIAP9AAOAAv0LA8ABIAMgA/0AA6AC/QsD4AEgECAFayEEIAkhAQNAIAYhAgJAIAFBMGooAgBBBUcNACABQSxqKAIAQYzTxwBBBRDbBw0AQQEMBAsgAkE4aiEGIAIhASAEQThqIgRBOEcNAAtBAAwCCwALIANB0AFqIANBkAJq/QADAP0LAwAgA0HwAWogA0GwAmr9AAMA/QsDACADIAP9AAOAAv0LA8ABIAMgA/0AA6AC/QsD4AFBgICAgHghDkGAgICAeCEHQQALIQEgACAD/QADwAH9CwMAIAAgHTcCLCAAIAc2AiggACAUNgIkIAAgDDYCICAAIAP9AAPgAf0LAzggACAKNgJYIAAgDTYCXCAAIA42AmAgACAeNwJkIAAgEzYCcCAAQRBqIANB0AFq/QADAP0LAwAgAEHIAGogA0HwAWr9AAMA/QsDACAAIAg2ArQBIAAgCTYCsAEgACAWNgKsASAAIBE2AqgBIAAgHzcCnAEgACASNgKYASAAIBU2ApQBIAAgETYCkAEgACABOgC4ASAAQYwBaiADQbgBaigCADYCACAAQYQBaiADQbABaikDADcCACAAIAP9AAOgAf0LAnQMAgsgAygCGCIAQYCAgIB4Rg0AIAAEQCADKAIcIABBARCiBwsgAygCKCEAIAMoAiwiAQRAIAAhAgNAIAIoAgAiCQRAIAJBBGooAgAiBkEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgCWpJDQUgBEEAIAUgCUEnaksbDQYgBhCiAgsgAkEUaiECIAFBAWsiAQ0ACwsgAygCJCIBRQ0AIAAgAUEUbEEEEKIHCyADKAIQIQcgAygCFCIJBEBBACEMA0AgByAMQQV0aiIQKAIAIgQEQCAQKAIEIgJBBGsoAgAiAEF4cSIBQQRBCCAAQQNxIgAbIARqSQ0EIABBACABIARBJ2pLGw0FIAIQogILIBAoAhAhACAQKAIUIgEEQCAAIQIDQCACKAIAIgoEQCACQQRqKAIAIgZBBGsoAgAiBEF4cSIFQQRBCCAEQQNxIgQbIApqSQ0GIARBACAFIApBJ2pLGw0HIAYQogILIAJBFGohAiABQQFrIgENAAsLIBAoAgwiAgRAIABBBGsoAgAiAUF4cSIEIAJBFGwiAkEEQQggAUEDcSIBG2pJDQQgAUEAIAQgAkEnaksbDQUgABCiAgsgDEEBaiIMIAlHDQALCyADKAIMIgFFDQAgB0EEaygCACIAQXhxIgIgAUEFdCIBQQRBCCAAQQNxIgAbckkNASAAQQAgAiABQSdqSxsNAiAHEKICCyADQYADaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALgDoCHn8EeyMAQSBrIg4kAAJAAkACQCADQf//A3EiAyIQQQEgBXRqQQFrIAV2IhpB//8DTQRAIAJBA0sEQCABIAEtAANBAWs6AAMgAiAQQQJ0IgxPBEAgA0ECSQ0EQQQhDSACIAxBBWsiAyACIANJG0EBaiIDQQRNDQMgAyADQQNxIgNBBCADG2siCUEEaiENIAEhAwNAIANBBGoiCCAD/VwAACAI/VwAAP1u/VoAAAAgCCEDIAlBBGsiCQ0ACwwDC0Go2cQAQS9B6NnEABDrBwALQQMgAkHo2MQAEIwHAAtB2ObIAEErIA5BH2pB2NjEAEGo+8YAEOAGAAsgDUEEayEDQQAgEEECdGshCANAIAIgA0YNAiABIANqIhNBBGoiCiATLQAAIAotAABqOgAAIAggA0EBaiIDakF8Rw0ACwsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQf//A3EiIEECSQ0AIAVBH3EhGyAgQQFrIQUgASAMaiEKQQAhAwNAIAMgDGoiBCACTw08IAIgA00NQCADIApqIgggASADaiITLQAAIAgtAABqOgAAIARBAWogAk8NOyADQQFqIAJPDT8gCEEBaiIYIBNBAWotAAAgGC0AAGo6AAAgBEECaiACTw06IANBAmogAk8NPiAIQQJqIhggE0ECai0AACAYLQAAajoAACAEQQNqIAJPDTkgA0EDaiACTw09IAhBA2oiAyATQQNqLQAAIAMtAABqOgAAIAQhAyAFQQFrIgUNAAsgGkUNACABQQRrIRwgDEEEayEVIAxBBGohFCABQQFqIRYgAUEDayEkIAEgEEECdCIDayEXQQAgA2shESABIAxrIgNBBWohISABQQQgDGsiGWohIiADQQFqIR0gA0EDayEeIAFBfCAMayISaiEfIBAhBUEBIQMDQCADIBBsISMgA0EBaiADIBt2IBpsISVBACETA0AgEyIDICVqQQJ0QQFyIgggB08NAyADQQFqIhMgG3QiBCAQIAQgEEkbIg0gI2pBAnQhBEEBIAMgG3QiAyADQQFNGyIPICNqQQJ0IQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBiAIai0AAA4ODQwLCgkIBwYFBAMCAQAOCyACIARJDUEgAyAESw1CIANBBGshCiADRQ1DIAMgAyAMayINQQRrIglJDUQgBCADayIIIAMgCWtLDUUgAyAMSQ1GIAggDEsNRyADIARGDQ0gASAKaigAACIDQRB2/REgA0EYdv0cASAm/Q0AAAAEAAAAAAAAAAAAAAAAIAP9FwAgA0EIdv0XASEmIAhBAnYhBCABIAUgD2pBAnRqIQMDQCADIAP9XAAAIAMgEmoiCEEEav1cAAAiJyAm/U4gJyAm/VFBAf1t/W79iQEiKCAI/VwAAP2JAf2RASIn/RgAQQJt/RAgJ/0YAUECbf0aASAn/RgCQQJt/RoCICf9GANBAm39GgMgKP2OAf0MAAAAAAAAAAAAAAAAAAAAAP2YAf0M/wD/AP8A/wD/AP8A/wD/AP2WASAn/Q0AAgQGAAAAAAAAAAAAAAAA/W4iJv0WA0EYdCAm/RYCQRB0ciAm/RYBQQh0ciAm/RYAcjYAACADQQRqIQMgBEEBayIEDQALDA0LIAIgBEkNOyADIARLDTwgA0EEayEIIANFDT0gAyADIAxrIglBBGsiCkkNPiADIAxJDT8gECADIAprQQJ2IgogBCADa0ECdiIDIAMgCksbIgMgAyAQSxsiBEUNDCABIAhqKAAAIgNBEHb9ESADQRh2/RwBICb9DQAAAAQAAAAAAAAAAAAAAAAgA/0XACADQQh2/RcBISYgASAFIA9qQQJ0aiEDA0AgAyAD/VwAACADIBJqIghBBGr9XAAA/YkBICb9iQH9jgEgCP1cAAD9iQH9kQH9DAAAAAAAAAAAAAAAAAAAAAD9mAH9DP8A/wD/AP8A/wD/AP8A/wD9lgEgJv0NAAIEBgAAAAAAAAAAAAAAAP1uIib9FgNBGHQgJv0WAkEQdHIgJv0WAUEIdHIgJv0WAHI2AAAgA0EEaiEDIARBAWsiBA0ACwwMCyACIARJDTIgAyAESw0zIAMgDGshCCADIAxJDTQgA0EEayEKIANFDTUgCEEEayIJIANPDTYgCEEDayINIANPDTcgCEECayILIANPDTggCEEBayIIIANPDTkgECAEIANrQQJ2IgMgAyAQSxsiBEUNCyABIApq/VwAACEmIAEgCWotAAD9DyABIA1qLQAA/RcBIAEgC2ovAAD9EP0NAAEQEQAAAAAAAAAAAAAAACEnIAEgBSAPakECdGohAwNAIAMgJiADIBFq/VwAACIoICggJ/15ICggJ/13/XH9iQEiKSApICb9DQQFBgcAAQABAAEAAQABAAH9jgEiKSApICb9DQIDAAEAAQABAAEAAQABAAH9jgH9GQBB/wdxICYgJ/15ICYgJ/13/XH9iQEiKf0ZASAp/RkAaiAm/YkBICf9iQH9kQEiJ/0ZAiAn/RgCQQ91IghzIAhraiAn/RgDQQ91IgggJ/0ZA3MgCGtqQf//A3FJ/Q9BB/1rQQf9bP1SIAP9XAAA/W4iJv0WAUEIdCAm/RYAciAm/RYDQRh0ICb9FgJBEHRycjYAACADQQRqIQMgKCEnIARBAWsiBA0ACwwLCyACIARJDSsgAyAESw0sIANBBGshCCADRQ0tIAMgAyAMayIKQQRrIglJDS4gAyAMSQ0vIAMgCkEEaiIKSQ0wIAMgCmtBAnYiCiAQIAMgCWtBAnYiCSAEIANrQQJ2IgMgAyAJSxsiAyADIBBLGyIDIAMgCksbIglFDQogASAIaigAACIDQRB2/REgA0EYdv0cASAm/Q0AAAAEAAAAAAAAAAAAAAAAIAP9FwAgA0EIdv0XASEmIAEgBSAPakECdGohAwNAIAMgA/1cAAAgAyASaiIEQQhq/VwAACInIARBBGr9XAAAIij9TiAnICj9UUEB/W39biInIAT9XAAAIiggJv1OICggJv1RQQH9bf1uIij9TiAnICj9UUEB/W39bv1uIib9FgNBGHQgJv0WAkEQdHIgJv0WAUEIdHIgJv0WAHI2AAAgA0EEaiEDIAlBAWsiCQ0ACwwKCyACIARJDScgAyAETw0JAkAgD0ECdEF/cyANQQJ0aiIEIBUgAiADIAxrQQRqIgggAiAISxtqIANrIgogDCACIAMgEWoiCCACIAhLG2ogA2siCCAIIApLGyIKIAQgCkkbQQFqIgpBEUkNACABIANqIgkgHSAEIBUgAiADIBlqIgsgAiALSxtqIANrIgsgCCAIIAtLGyIIIAQgCEkbIANqIghqSSAIIBZqIgsgAyAXaktxIAkgCCAhakkgAyAiaiALSXFyDQAgCkEPcSIIQRAgCBsiCyAEIBUgAiAZIAUgD2pBAnQiCGoiCSACIAlLG2ogCGsiCSAEIAlJGyIEIAwgAiAIIBFqIgkgAiAJSxtqIAhrIgkgBCAJSRtBf3NqIQkgASAIaiEEIAMgCiALa2ohAwNAIAQgBP0AAAAgBCARaiIIQQRq/QAAACImIAj9AAAAIif9TiAmICf9UUEB/W39bv1u/QsAACAEQRBqIQQgCUEQaiIJDQALCyADIBFqIQQgAyAFIA1qQQJ0ayEJA0AgAiAETQ0pIARBBGoiCCACTw0qIAEgA2oiCCAILQAAIAEgBGoiCEEEai0AACAILQAAakEBdmo6AAAgBEEBaiEEIANBAWohAyAJQQFqIgkNAAsMCQsgAiAESQ0jIAMgBE8NCAJAIA9BAnRBf3MgDUECdGoiBCAUIAIgAyAMa0EEayIIIAIgCEsbaiADayIKIAwgAiADIBFqIgggAiAISxtqIANrIgggCCAKSxsiCiAEIApJG0EBaiIKQRFJDQAgASADaiIJIB4gBCAUIAIgAyASaiILIAIgC0sbaiADayILIAggCCALSxsiCCAEIAhJGyADaiIIakkgCCAWaiILIAMgH2pLcSAJIAggHWpJIAMgF2ogC0lxcg0AIApBD3EiCEEQIAgbIgsgBCAUIAIgEiAFIA9qQQJ0IghqIgkgAiAJSxtqIAhrIgkgBCAJSRsiBCAMIAIgCCARaiIJIAIgCUsbaiAIayIJIAQgCUkbQX9zaiEJIAEgCGohBCADIAogC2tqIQMDQCAEIAT9AAAAIAQgEmoiCEEEav0AAAAiJiAI/QAAACIn/U4gJiAn/VFBAf1t/W79bv0LAAAgBEEQaiEEIAlBEGoiCQ0ACwsgAyASaiEEIAMgBSANakECdGshCQNAIAIgBE0NJSAEQQRqIgggAk8NJiABIANqIgggCC0AACABIARqIghBBGotAAAgCC0AAGpBAXZqOgAAIARBAWohBCADQQFqIQMgCUEBaiIJDQALDAgLIAIgBEkNHSADIARLDR4gA0EEayEIIANFDR8gAyAMayENIAMgDEkNICAEIANrIgQgDEsNISABIAhqKAAAIghBEHb9ESAIQRh2/RwBICb9DQAAAAQAAAAAAAAAAAAAAAAgCP0XACAIQQh2/RcBISYgBEFAcSIKBEAgASADaiEJIAEgDWohDSAKIQgDQEEAIQMDQCADIAlqIgsgAyANav1cAAAiJyAm/U4gC/1cAAD9biAnICb9UUEB/W39biIm/RYDQRh0ICb9FgJBEHRyICb9FgFBCHRyICb9FgByNgAAIANBBGoiA0HAAEcNAAsgDUFAayENIAlBQGshCSAIQUBqIggNAAsLIARBAnZBD3EiA0UNByADQQJ0IQQgASAKIAUgD2pBAnRqaiEDA0AgAyADIBFq/VwAACInICb9TiAD/VwAAP1uICcgJv1RQQH9bf1uIib9FgNBGHQgJv0WAkEQdHIgJv0WAUEIdHIgJv0WAHI2AAAgA0EEaiEDIARBBGsiBA0ACwwHCyACIARJDRkgAyAETw0GAkAgD0ECdEF/cyANQQJ0aiIEIBQgAiADIAxrQQRrIgggAiAISxtqIANrIgogAiADQQRrIgggAiAISxsgA2tBBGoiCCAIIApLGyIKIAQgCkkbQQFqIgpBDUkNACABIANqIgkgJCAEIBQgAiADIBJqIgsgAiALSxtqIANrIgsgCCAIIAtLGyIIIAQgCEkbIANqIghqSSAIIBZqIgsgAyAcaktxIAkgCCAeakkgAyAfaiALSXFyDQAgCkEDcSIIQQQgCBsiCyAEIBQgAiASIAUgD2pBAnQiCGoiCSACIAlLG2ogCGsiCSAEIAlJGyIEIAIgCEEEayIJIAIgCUsbIAhrQQRqIgkgBCAJSRtBf3NqIQkgCCAcaiEEIAMgCiALa2ohAwNAIAQgEWohCCAE/VwAACEmIARBBGoiBCAE/VwAACAmIAj9XAAAIif9TiAnICb9UUEB/W39bv1u/VoAAAAgCUEEaiIJDQALCyADQQRrIQQgAyASaiEJIAMgBSANakECdGshAwNAIAIgBE0NGyACIAlNDRwgASAEaiIIQQRqIgogCi0AACABIAlqLQAAIAgtAABqQQF2ajoAACAEQQFqIQQgCUEBaiEJIANBAWoiAw0ACwwGCyACIARJDRMgAyAESw0UIANBBGshCCADRQ0VIAMgAyAMayIJQQRqIgpJDRYgAyAMSQ0XIBAgAyAKa0ECdiIKIAQgA2tBAnYiAyADIApLGyIDIAMgEEsbIgRFDQUgASAIaigAACIDQRB2/REgA0EYdv0cASAm/Q0AAAAEAAAAAAAAAAAAAAAAIAP9FwAgA0EIdv0XASEmIAEgBSAPakECdGohAwNAIAMgAyARaiIIQQRq/VwAACInICb9TiAnICb9UUEB/W39biInIAj9XAAAIij9TiAD/VwAAP1uICcgKP1RQQH9bf1uIib9FgNBGHQgJv0WAkEQdHIgJv0WAUEIdHIgJv0WAHI2AAAgA0EEaiEDIARBAWsiBA0ACwwFCyACIARJDRAgAyAETw0EAkAgD0ECdEF/cyANQQJ0aiIEIBQgAiADIAxrQQRrIgggAiAISxtqIANrIgggBCAISRtBAWoiCEERSQ0AIAEgA2ogHiAEIBQgAiADIBJqIgogAiAKSxtqIANrIgogBCAKSRsgA2oiCmpJIAMgH2ogCiAWaklxDQAgCEEPcSIKQRAgChsiCyAEIBQgAiASIAUgD2pBAnQiCmoiCSACIAlLG2ogCmsiCSAEIAlJG0F/c2ohCSABIApqIQQgAyAIIAtraiEDA0AgBCAEIBJq/QAAACAE/QAAAP1u/QsAACAEQRBqIQQgCUEQaiIJDQALCyAFIA1qQQJ0IQQDQCADIBFqQQRrIgggAk8NEiABIANqIgggAyAXakEEay0AACAILQAAajoAACAEIANBAWoiA0cNAAsMBAsgAiAESQ0NIAMgBE8NAwJAIA9BAnRBf3MgDUECdGoiBCAVIAIgAyAMa0EEaiIIIAIgCEsbaiADayIIIAQgCEkbQQFqIghBEUkNACABIANqICEgBCAVIAIgAyAZaiIKIAIgCksbaiADayIKIAQgCkkbIANqIgpqSSADICJqIAogFmpJcQ0AIAhBD3EiCkEQIAobIgsgBCAVIAIgGSAFIA9qQQJ0IgpqIgkgAiAJSxtqIAprIgkgBCAJSRtBf3NqIQkgASAKaiEEIAMgCCALa2ohAwNAIAQgBCAZav0AAAAgBP0AAAD9bv0LAAAgBEEQaiEEIAlBEGoiCQ0ACwsgBSANakECdCEEA0AgAyARakEEaiIIIAJPDQ8gASADaiIIIAMgF2pBBGotAAAgCC0AAGo6AAAgBCADQQFqIgNHDQALDAMLIAIgBEkNCiADIARPDQICQCAPQQJ0QX9zIA1BAnRqIgQgDCACIAMgEWoiCCACIAhLG2ogA2siCCAEIAhJGyIKQQFqIghBEUkNACABIANqIB0gAyAKaiIKakkgAyAXaiAKIBZqSXENACAIQQ9xIgpBECAKGyILIAQgDCACIBEgBSAPakECdCIKaiIJIAIgCUsbaiAKayIJIAQgCUkbQX9zaiEJIAEgCmohBCADIAggC2tqIQMDQCAEIAQgEWr9AAAAIAT9AAAA/W79CwAAIARBEGohBCAJQRBqIgkNAAsLIAUgDWpBAnQhBANAIAMgEWoiCCACTw0MIAEgA2oiCCADIBdqLQAAIAgtAABqOgAAIAQgA0EBaiIDRw0ACwwCCyACIARJDQcgAyAETw0BIA9BAnRBf3MgDUECdGoiBCACIANBBGsiCCACIAhLGyADa0EEaiIIIAQgCEkbQQFqIgpBBU8EQCAKQQNxIghBBCAIGyILIAQgAiAFIA9qQQJ0IglBBGsiCCACIAhLGyAJa0EEaiIIIAQgCEkbQX9zaiEIIAkgHGohBCADIAogC2tqIQMDQCAEQQRqIgogBP1cAAAgCv1cAAD9bv1aAAAAIAohBCAIQQRqIggNAAsLIAUgDWpBAnQhCANAIANBBGsiBCACTw0JIAEgA2oiBCAEQQRrLQAAIAQtAABqOgAAIAggA0EBaiIDRw0ACwwBCyACIARJDQUgA0EDciIJIARPDQAgBCADQQdqIgggBCAISxsgA2tBBGsiA0HAAE8EQCAJIANBAnZBAWoiAyADQQ9xIgNBECADGyIDa0ECdGohCSADIAUgDWpBAnQiCCAFIA9qQQJ0IgNBB2oiCiAIIApLGyADa0EEa0ECdkF/c2ohDSABIANqIQMDQCADQT9qIANBA2oiCP0AAAAgA0ETaiIK/QAAAP0NAAQIDBAUGBwAAAAAAAAAACADQSNqIg/9AAAAIANBM2oiC/0AAAD9DQAAAAAAAAAAAAQIDBAUGBz9DQABAgMEBQYHGBkaGxwdHh/9DP/////////////////////9biIm/VgAAA8gA0E7aiAm/VgAAA4gA0E3aiAm/VgAAA0gCyAm/VgAAAwgA0EvaiAm/VgAAAsgA0EraiAm/VgAAAogA0EnaiAm/VgAAAkgDyAm/VgAAAggA0EfaiAm/VgAAAcgA0EbaiAm/VgAAAYgA0EXaiAm/VgAAAUgCiAm/VgAAAQgA0EPaiAm/VgAAAMgA0ELaiAm/VgAAAIgA0EHaiAm/VgAAAEgCCAm/VgAAAAgA0FAayEDIA1BEGoiDQ0ACwsDQCABIAlqIgMgAy0AAEEBazoAACAJQQRqIgkgBEkNAAsLIBMgGkcNAAsgBSAQaiEFIgMgIEcNAAsLIABBHToAACAOQSBqJAAPCyAIIAdB+NjEABCMBwALQajZxABBL0HY2cQAEOsHAAtBqNnEAEEvQejZxAAQ6wcACyAEIAJB+NnEABCMBwALQajZxABBL0GI2sQAEOsHAAsgCCACQZjaxAAQjAcAC0Go2cQAQS9BqNrEABDrBwALIAggAkG42sQAEIwHAAtBqNnEAEEvQcjaxAAQ6wcACyAIIAJB2NrEABCMBwALQQAgBCACQbjbxAAQ6gcACyAOQQA2AhQgDkEBNgIIIA5BiILIADYCBCAOQgQ3AgwgDkEEakHo2sQAEI0IAAsgCEEAQQBBqNvEABDqBwALIAogAyADQYjbxAAQ6gcACyAJIAMgA0H42sQAEOoHAAtBqNnEAEEvQcjbxAAQ6wcACyAEIAJB2NvEABCMBwALIAkgAkHo28QAEIwHAAtBACAEIAJBuNzEABDqBwALIA5BADYCFCAOQQE2AgggDkGIgsgANgIEIA5CBDcCDCAOQQRqQfjbxAAQjQgACyAIQQBBAEGo3MQAEOoHAAsgDSADIANBmNzEABDqBwALQQAgBCAMQYjcxAAQ6gcAC0Go2cQAQS9ByNzEABDrBwALIAQgAkHY3MQAEIwHAAsgCCACQejcxAAQjAcAC0Go2cQAQS9B+NzEABDrBwALIAQgAkGI3cQAEIwHAAsgCCACQZjdxAAQjAcAC0EAIAQgAkH43cQAEOoHAAsgDkEANgIUIA5BATYCCCAOQYiCyAA2AgQgDkIENwIMIA5BBGpBqN3EABCNCAALIAhBAEEAQejdxAAQ6gcACyAJIAMgA0HY3cQAEOoHAAsgCiADIANByN3EABDqBwALIAogAyADQbjdxAAQ6gcAC0EAIAQgAkH43sQAEOoHAAsgDkEANgIUIA5BATYCCCAOQYiCyAA2AgQgDkIENwIMIA5BBGpBiN7EABCNCAALIAggAyADQejexAAQ6gcACyAKQQBBmN7EABCMBwALIAkgA0Go3sQAEIwHAAsgDSADQbjexAAQjAcACyALIANByN7EABCMBwALIAggA0HY3sQAEIwHAAtBACAEIAJByN/EABDqBwALIA5BADYCFCAOQQE2AgggDkGIgsgANgIEIA5CBDcCDCAOQQRqQYjfxAAQjQgACyAIQQBBAEG438QAEOoHAAsgCiADIANBqN/EABDqBwALIAkgAyADQZjfxAAQ6gcAC0EAIAQgAkG44MQAEOoHAAsgDkEANgIUIA5BATYCCCAOQYiCyAA2AgQgDkIENwIMIA5BBGpB2N/EABCNCAALIApBAEEAQajgxAAQ6gcACyAJIAMgA0GY4MQAEOoHAAtBACAIIAxBBGpBiODEABDqBwALIA0gAyADQfjfxAAQ6gcAC0EAIAggDEHo38QAEOoHAAsgBEEDaiEEDAILIARBAmohBAwBCyAEQQFqIQQLIAQgAkGI2cQAEIwHAAsgA0EDaiEDDAILIANBAmohAwwBCyADQQFqIQMLIAMgAkGY2cQAEIwHAAsgAyACQfjZxAAQjAcAC+BZAyd/EH4HeyMAQfAIayIEJAAgBEEQaiABQaAB/AoAACAEQgA3A6gCIAQgBCgCmAEiC60gBCgClAEiCK1+Ii5CBEIDIAQtAKMBIgcbEN0GIAQgA60iKzcDsAIgBEIANwPoAiAEQn8gBCkDACAEKQMIQgBSGyIsNwPwAgJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkAgKyAsUQRAQQkhBSAuQiCIpw0NIC6nIg6tQgRCAyAHG34iK0IgiKcgAyArp0dyDQ0gBC0AVUEBRwRAAkAgBEHoAGoiDUHM+MYAEKgEIgVFBEAgDUHk+MYAEKgEIQdBAyEFIARBAzoAsAMgB0UNECAEQbADaiIFEKsEIAQgBEHYAGoiCDYCiAIgBykDECErIAQgBykDCCIuNwNgIAQgKyAufSIrNwOAAiAEICs3A/gBIAUgBEH4AWoQrAIgBEHoAmogBRA0IAQpAvQCIS4gBCgC8AIhCSAEKALsAiEFIAQoAugCIgdBgICAgHhHDQEgBUEIdiEGDA8LIARBBDoAsAMgBSkDECEuIAUpAwghKyAEQQA6AJAEIAQgBEHYAGo2AogEIARCADcD8AMgBCArNwNgIARCADcDoAQgBEKAgICAEDcDmAQgBEEEOgDgAyAEQQQ6ANADIARBBDoAwAMgBCAuICt9Iis3A4AEIAQgKzcD+AMgB0UEQCAOQQJ0IgZBAEgNBAJAIAYEQCAGEHEiB0UNFCAHQQRrLQAAQQNxRSAGRXJFBEAgB0EAIAb8CwALIARB6AJqIARBsANqIAQoApQBIAQoApgBIAcgBhDNASAELQDoAiIFQR1GDQEgBCkC8AIhLiAEKALsAiEJIAQvAOkCIAQtAOsCIAcgBkEBEKIHQRB0ciEGDBALQQEhByAEQegCaiAEQbADaiAIIAtBAUEAEM0BIAQtAOgCIgVBHUcNDQsCQCADQQNuIgMgDkH/////A3EiBSADIAVJGyIDRQ0AQQAhCCADQQFHBEAgA0EBcSADQf7///8DcSELIAIhAyAHIQUDQCADIAUvAAA7AAAgA0ECaiAFQQJqLQAAOgAAIANBA2ogBUEEai8AADsAACADQQVqIAVBBmotAAA6AAAgA0EGaiEDIAVBCGohBSALIAhBAmoiCEcNAAtFDQELIAIgCEEDbGoiAiAHIAhBAnRqIgMvAAA7AAAgAkECaiADQQJqLQAAOgAACyAGRQ0KIAcgBkEBEKIHDAoLIARB6AJqIARBsANqIAggCyACIAMQzQEgBC0A6AIiBUEdRg0JIAQvAOkCIAQtAOsCQRB0cgwMCyAEQdQCaiAEQZQDaigCADYCACAEQcwCaiAEQYwDaikCACIrNwIAIAQgBP0AAvwC/QsCvAIgBCAJNgKwAiAEIAU2AqwCIAQgBzYCqAIgBCgClAEhCSAEIC43ArQCQRchCyAJICunIg9B//8DcSIGRw0HIAQvAc4CIhAgBCgCmAFHDQcgBC0ApAEhCSAELQCjAUUEQCAEQagCaiACIAMgCUEBcRCOAQwHCyAEQagCaiACIAMgCUEBcRCAASANQen4xgAQqAQhCUEDIQsgBEEDOgCwAyAJRQ0HIARBsANqIgsQqwQgCSkDECErIAQgCSkDCCItNwNgIAQgCDYCwAMgBCArIC19Iis3A7gDIAQgKzcDsAMgBEHoAmogCyAEKAKUASAEKAKYARBHIAQoAvQCIQ4gBCgC8AIhCSAEKALsAiELIAQoAugCRQRAAkACQCAQRSAPQf//A3FFckUEQCAELQD5AiEHIAZBAnQhD0EDIQ0DQCAJIBxqIREgDSEIQQAhBQNAIAUgCiAGIAcgAiADELwDIRogBSAcaiIVIA5PDQMgAyAITQ0EIAIgCGogBSARai0AACAaajoAACAIQQRqIQggBiAFQQFqIgVHDQALIA0gD2ohDSAGIBxqIRwgCkEBaiIKIBBHDQALCyALRQ0JIAkgC0EBEKIHDAkLIBUgDkHw+MYAEIwHAAsgCCADQYD5xgAQjAcACyAOrSAEMQD4AkIghoQgBDEA+QJCKIaEIAQzAfoCQjCGhCErIAtBCHYhBgwHCyAEQTRqQQA2AgAgBEHQAWogAUEgav0AAwD9CwMAIARBwAFqIAFBEGr9AAMA/QsDACAEQYCAgIB4NgIYIARCADcDECAE/QwAAAAAAAAAAAAAAAAAAAAA/QsCJCAEQQE6ADggBCAB/QADAP0LA7ABIARB6ABqQZD5xgAQqAQiBUUNAiAEIAUpAwgiLEIIfSIuNwMQIAQoApwBRQRAIARBHDoA4AEMBQsgBCAuNwNgQQQhBSAEKAJcIgetISsgBAJ+AkAgB0L/////DyAuIC5C/////w9aG6drIgZBACAGIAdNG0EETwRAIAQoAlggLiArICsgLlYbp2ooAAAhCQwBC0GokMgAKQMAIi5CCIghLSAupyEFICsgLkL/AYNCBFINARoLICxCBH0LIiw3A2ACQCAFQf8BcUEERgRAIARBsANqQQFyIAkQmAQgBC0AswMhCSAELwCxAyEGIAQCfgJAIAcgLCArICsgLFYbpyIFa0EETwRAIAQoAlggBWo1AAAhLkEEIQVCACEtDAELQaiQyAApAwAiMEIIiCEtIDCnIQVCACEuICsgMEL/AYNCBFINARoLICxCBHwLIiw3A2AgBUH/AXFBBEYNAQsgBEEANgLgASAEIC1CGIg+AugBIAQgBUH/AXEgLadBCHRyNgLkAQwFCyAGIAlBEHRyQf8BcUEGRiAuQh9WcUUEQCAEQcGctbIENgDhASAEQQQ6AOABDAULIAQCfgJAIAcgLCArICsgLFYbpyIFa0EDTwRAIAQoAlggBWoiBS0AAUEIdCEJIAUtAAJBEHQhBiAFLQAAIQpBBCEFQgAhLQwBC0GokMgAKQMAIjBCCIghLSAwpyEFQQAhCUEAIQZBACELICsgMEL/AYNCBFINARoLIAkhCyAGIRwgLEIDfAsiLDcDYCAFQf8BcUEERwRAIAQgBa1C/wGDIC1CCIaEIis3A7ADIARBADoA4AEgBCArPgLkASAEIAQpArQDNwPoAQwFCwJ/AkAgByAsICsgKyAsVhunIgVrQQNPBEAgBCgCWCAFaiIFLQABQQh0IQggBS0AAkEQdCEJIAUtAAAhDUEEIQVCACEtDAELQaiQyAApAwAiMEIIiCEtIDCnIQVBACEIQQAhCUEAIQZBACAwQv8Bg0IEUg0BGgsgLEIDfCErIAghBiAJCyEJIAQgKzcDYCAFQf8BcUEERwRAIAQgBa1C/wGDIC1CCIaEIis3A7ADIARBADoA4AEgBCArPgLkASAEIAQpArQDNwPoAQwFCyAEQbADaiAEQdgAaiIFEL4FIAQtALADIgdBHUcEQCAEIAQtALMDOgDjASAEIAQvALEDOwDhASAEIAQpArgDNwPoASAEIAQoArQDNgLkASAEIAc6AOABDAULIAQoArQDIQcgBEGwA2ogBRC+BSAELQCwAyIIQR1HBEAgBCAELQCzAzoA4wEgBCAELwCxAzsA4QEgBCAEKQK4AzcD6AEgBCAEKAK0AzYC5AEgBCAIOgDgAQwFCwJAIAdBAWoiFUGAgAFNBEAgBCgCtANBAWoiGkGBgAFJDQELIARBCToA4AEMBQsCQCAEKAKUASAVIAogC3IgHHJBAXQiH2pJDQAgBCgCmAEgGiAGIA1yIAlyQQF0IiBqSQ0AIARBsANqIAUQvgUgBC0AsAMiCUEdRwRAIAQgBC0AswM6AOMBIAQgBC8AsQM7AOEBIAQgBCkCuAM3A+gBIAQgBCgCtAM2AuQBIAQgCToA4AEMBgsgBCgCtAMhKCAEQbADaiAFEKkGIAQtALADQQRGBEAgBC0AsQMhHAwFCyAEKQOwAyIrQgiIpyEcICunIglB/wFxQQRGDQQgBCAcOgDlASAEIAk6AOQBIARBADoA4AEgBCArQjCIPQHqASAEICtCEIg+AeYBDAULIARBCjoA4AEMBAsgBEEANgKwAyAEQagCaiAEQegCaiAEQbADakHYpsYAEPcHAAtB1PjGABD/BwALQZj5xgAQ3QkMDAsgBCgATSEOIAQtAEwhEiAELQA4IRcgBEGwA2ogBRC9AyAEKAKwA0EBRgRAIAQgBP0AArQD/QsE4AEMAQsgBCAELQDEAzoA5AggBCAEKALAAyIJNgLgCAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgLiAEKQPIAyItQhh8WgRAIAQpA7gDIStB0pKZsgQhCyAJQf8BcUEBaw4LAQoLAgMEDAUGBwgJC0HSkpmyBCEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAlB/wFxQQFrDgsAAQIDBAUGBwgJCgsLQdeKiYIFIQMMCgtB1qDhgQIhAwwJC0HWoOHhBCEDDAgLQdag4cEFIQMMBwtBwZyl6gQhAwwGC0HBnLWyBCEDDAULQcGYwcIEIQMMBAtByYaNggUhAwwDC0HFsKWyBCEDDAILQdiawYICIQMMAQsgBCgA4QghAwsgBCADNgDhASAEQQQ6AOABDA4LQdeKiYIFIQsMBwtB1qDhwQUhCwwGC0HBnKXqBCELDAULQcGctbIEIQsMBAtByYaNggUhCwwDC0HFsKWyBCELDAILQdiawYICIQsMAQsgBCgA4QghCwsgBCALNgDhASAEQQQ6AOABDAULIAQgKzcDoAMgBCArNwOYAyAEIAU2AqgDIARBsANqIgUgBEGYA2oQrAIgBEHoAmogBRA0IAQgBP0AAuwC/QsDkAIgBCgC6AIiBUGAgICAeEYNAyAEQdQCaiAEQZQDaigCADYCACAEQcwCaiAEQYwDaikCACIrNwIAIAQgBP0AAvwC/QsCvAIgBCAE/QADkAL9CwKsAiAEIAU2AqgCAkAgFSArp0H//wNxRw0AIBogBC8BzgJHDQAgBEHYAmogFSAabEEDbEHk9sYAEKAHIARBqAJqIgUgBCgC3AIiCyAEKALgAiINIAQtAKQBEI4BIAQoAtgCIScgBRD9BEEAIQoMAwsgBEEXOgDgASAEQagCahD9BAwECyAEQQA6AJAEIAQgBTYCiAQgBCArNwOABCAEICs3A/gDIARCADcD8AMgBEIANwOgBCAEQoCAgIAQNwOYBCAEQQQ6AOADIARBBDoA0AMgBEEEOgDAAyAEQQQ6ALADIARBqAJqIBUgGmxBAnRB9PbGABCgByAEQegCaiAEQbADaiAVIBogBCgCrAIiCyAEKAKwAiINEM0BIAQtAOgCIgVBHUcEQCAEIAQpAOkCNwDhASAEIARB8AJqKQAANwDoASAEIAU6AOABIAQoAqgCIgIEQCALIAJBARCiBwsgBEGwA2oQ/AYMBAsgBCgCqAIhJyAEQbADahD8BkEBIQoMAQsgLiAtQiB8WgRAIAQpA2AhLCAEICs3A5gCIAQgKzcDkAIgBCAFNgKgAiAEQbADaiAEQZACaiAVIBoQRyAEKAKwA0EBRgRAIAQgBP0AArQD/QsE4AEMBAsgBCAsIC18NwNgIAQtAMEDIRYgBCgCvAMhESAEKAK4AyEPIAQoArQDIQggBEGwA2ogBRC9AwJAIAQoArADQQFGBEAgBCAE/QACtAP9CwTgAQwBCyAEIAQtAMQDOgDsCCAEIAQoAsADIgk2AugIAkAgLiArIAQpA7gDIi18QiB8WgRAIAQgLTcDoAMgBCAtNwOYAyAEIAU2AqgDIARBsANqIgUgBEGYA2oQrAIgBEHoAmogBRA0IAQgBP0AAuwC/QsD2AIgBCgC6AIiBUGAgICAeEcNASAEIAT9AAPYAv0LBOABDAILQdKSmbIEIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCUH/AXFBAWsOCwABAgMEBQYHCAkKCwtB14qJggUhAwwKC0HWoOGBAiEDDAkLQdag4eEEIQMMCAtB1qDhwQUhAwwHC0HBnKXqBCEDDAYLQcGctbIEIQMMBQtBwZjBwgQhAwwEC0HJho2CBSEDDAMLQcWwpbIEIQMMAgtB2JrBggIhAwwBCyAEKADpCCEDCyAEIAM2AOEBIARBBDoA4AEMAQsgBEHUAmogBEGUA2ooAgA2AgAgBEHMAmogBEGMA2opAgA3AgAgBCAE/QAC/AL9CwK8AiAEIAT9AAPYAv0LAqwCIAQgBTYCqAIgBEGYA2ogFSAabEECdEGE98YAEKAHIARBqAJqIAQoApwDIgsgBCgCoAMiDSAELQCkARCAAQJAIAQvAc4CIgxFDQAgBC8BzAIiEEUNACAQQQJ0IRNBACEGQQMhCUEAIQoDQCAGIA9qIRQgCSEHQQAhBQJAAkADQCAFIAogECAWIAsgDRC8AyEYIAUgBmoiGSARTw0BIAcgDUkEQCAHIAtqIAUgFGotAAAgGGo6AAAgB0EEaiEHIBAgBUEBaiIFRg0DDAELCyAHIA1BlPjGABCMBwALIBkgEUGE+MYAEIwHAAsgCSATaiEJIAYgEGohBiAKQQFqIgogDEcNAAsLIAQoApgDIScgBEGoAmoQ/QQgCARAIA8gCEEBEKIHC0EBIQoMAgsgCEUNAyAPIAhBARCiBwwDCyAEQcGYwcIENgDhASAEQQQ6AOABDAILAkACQAJAIAQoAhhBgICAgHhGBEAgBEGQAmogBCgClAEgBCgCmAFsQQJ0QZT3xgAQoAcCQCAELQBMQQFHDQAgBCgCmAIiBUF8cSIHRQ0AIAQoApQCIQkCQCAFQQRrIgZBLEkEQCAJIQUMAQsgCSAEQdEAak8gBEHNAGogCSAFQXxxak9yRQRAIAkhBQwBCyAJIAZBAnZBAWoiEEH8////B3EiCEECdCIGaiEFIAcgBmshByAIIQYDQCAJIAT9AABN/QwAAAAAAAAAAAAAAAAAAAAA/Q0AAQIDAAECAwABAgMAAQID/QsAACAJQRBqIQkgBkEEayIGDQALIAggEEYNAQsDQCAFIAQoAE02AAAgBUEEaiEFIAdBBGsiBw0ACwsgBCgCGCIFQYCAgIB4ckGAgICAeEcEQCAEKAIcIAVBARCiBwsgBEEYaiIFIAQpApACNwIAIAVBCGogBEGYAmooAgA2AgAgBCgCGEGAgICAeEYNAQsgBCgCHCEJIAQoAiAhDCAEKAKYASEdIBJBACAXGyEGIA4hCCAKIRcgHEECcUUhISAEKAIoIQUgBCgCLCEiIAQoAjAhGCAEKAI0IRlBACEOQQAhFAJAAkACQAJAAkACQAJAIB8gIHIgFSAEKAKUASITR3JFBEAgGiAdRyIHICFyBEAgBkEBcUUNByAHDQIgCg0FIAwgDEEDcGsiBkEDSQ0HIAZBA2siB0EDbiIFQQdxQQdHDQMgCSEFDAQLIBdFBEAgDEECdiIFIA1BA24iBiAFIAZJGyIFRQ0IQQAhBiAFQQFHBEAgBUEBcSAFQf7///8DcSENIAkhCCALIQUDQCAIIAUvAAA7AAAgCEEDakH/AToAACAIQQdqQf8BOgAAIAhBAmogBUECai0AADoAACAIQQRqIAVBA2ovAAA7AAAgCEEGaiAFQQVqLQAAOgAAIAhBCGohCCAFQQZqIQUgDSAGQQJqIgZHDQALRQ0JCyAJIAZBAnRqIgVB/wE6AAMgBSALIAZBA2xqIgkvAAA7AAAgBUECaiAJQQJqLQAAOgAADAgLIAwgDUcNBSANRQ0HIAkgCyAN/AoAAAwHCyAGQQFxRQ0FCyAiRSAFRXIhBgJAAkACQAJAIBdFBEAgBg0JIAxBAmoiIyAYIBMgGWxqQQNsIgdrIREgBUEBaiEkIBNBA2whFCATQX1sISUgDK1CAXwhLSAFQQFrrSErIAhBEHYhDyAMIAciEmsiJiEWQQEhEANAIA4gGWogE2wgGGohHiARQQIgFiAWQQJPG2utQgOAITBBASEFQQAhBgJAICMgDiAlbCIKaiAHQQIgCiAmaiIKIApBAk8bamsiG0EDbq0iMyAtIAcgDiAUbGoiCq0iMSAtIDFWGyAxIAogDE2tIix8fSIxQgOAICx8IjQgMyA0VBsiMyArICsgM1YbIjNCCFQNACAbQQNurSI0IDFCA4AgLHwiMSAxIDRWGyIxICsgKyAxVhunQQNsIApBf3NLDQAgMCAtIBKtIjEgLSAxVhsgLCAxfH1CA4AgLHwiLCAsIDBWGyIsICsgKyAsVhunIDOnQQFqIgVBA3EiBkEEIAYbIgZrQQFqIQogBSAGayIGQQFqIQUgHv0RIT39DAAAAAABAAAAAgAAAAMAAAAhOwNAIAkgPSA7/a4B/QwDAAAAAwAAAAMAAAADAAAA/bUBIjz9GwBqIhsgCDsAACAbQQJqIA86AAAgCSA8/RsBaiIbQQJqIA86AAAgGyAIOwAAIAkgPP0bAmoiG0ECaiAPOgAAIBsgCDsAACAJIDz9GwNqIhtBAmogDzoAACAbIAg7AAAgO/0MBAAAAAQAAAAEAAAABAAAAP2uASE7IApBBGsiCg0ACwsDQCAMIAYgHmpBA2wiBkkNAyAMIAZrIgpBA0kNBCAGIAlqIgYgCDsAACAGQQJqIA86AAAgBSEGICQgBUEBaiIFRw0ACyASIBRqIRIgFiAUayEWIBEgFGshESAOQQFqIQ4gECAQICJJIgVqIRAgBQ0ACwwJCyAGDQggDEEDaiIjIBggEyAZbGpBAnQiD2shHiAFQQFqISRBACATQQJ0IhJrISUgDK1CAXwhKyAJIA9qIREgBUEBa60hLSAI/REhOyAMIA9rIiYhFiAPIRBBASEOA0AgFCAZaiATbCEbQQEhBUEAIQYCQCArIA8gEiAUbGoiB619IixCACArICxaG0IDfEICiCIsICMgFCAlbCIKaiAPQQMgCiAmaiIKIApBA08bcmtBAnatIjAgLCAwVBsiLCAtICwgLVQbIixCCFQNACAHQX9zICynIgdBAnRJDQAgB0EBaiIFQQNxIgZBBCAGGyIGICsgEK19IixCACArICxaG0IDfEICiCIsIB5BAyAWIBZBA08ba61CAogiMCAsIDBUGyIsIC0gLCAtVBunQX9zaiEHIAUgBmsiBkEBaiEFIBEhCgNAIAogO/0LAAAgCkEQaiEKIAdBBGoiBw0ACwsgGCAbaiEHA0AgDCAGIAdqQQJ0IgZJDQQgDCAGayIKQQRJDQUgBiAJaiAINgAAIAUhBiAkIAVBAWoiBUcNAAsgESASaiERIBYgEmshFiAeIBJrIR4gECASaiEQIBRBAWohFCAOIA4gIkkiBWohDiAFDQALDAgLIAYgDCAMQcjvxAAQ6gcAC0EAQQMgCkG478QAEOoHAAsgBiAMIAxB6O/EABDqBwALQQBBBCAKQdjvxAAQ6gcACyAGIAVBAWpBB3EiCkEDbGshBiAIQRB2IQ4gCSEFA0AgBSAIOwAAIAVBAmogDjoAACAFQQNqIQUgCkEBayIKDQALCyAHQRVJDQIgCEEQdiEHA0AgBSAIOwAAIAVBF2ogBzoAACAFQRVqIAg7AAAgBUEUaiAHOgAAIAVBEmogCDsAACAFQRFqIAc6AAAgBUEPaiAIOwAAIAVBDmogBzoAACAFQQxqIAg7AAAgBUELaiAHOgAAIAVBCWogCDsAACAFQQhqIAc6AAAgBUEGaiAIOwAAIAVBBWogBzoAACAFQQNqIAg7AAAgBUECaiAHOgAAIAVBGGohBSAGQRhrIgZBA08NAAsMAgsgDEEESQ0BIAxBfHEhCgJAIAxBBGsiBUEMSQRAIAkhBQwBCyAKIAVBAnZBAWoiEEH8////B3EiDkECdCIFayEKIAUgCWohBSAI/REhOyAOIQcgCSEGA0AgBiA7/QsAACAGQRBqIQYgB0EEayIHDQALIA4gEEYNAgsDQCAFIAg2AAAgBUEEaiEFIApBBGsiCg0ACwwBCyAMIA1BqO/EABDeCQALIB0gIGsiBUEAIAUgHU0bIgUgGiAFIBpJGyERIBMgH2siBUEAIAUgE00bIgUgFSAFIBVJGyEPAkACQAJAAkACQAJAAkACQAJAIBdFBEAgEUUNCiATQQJ0IRggD0H+/wFxIRlBASEFIA9BAXEhHSAPQQJ0IRcgD0EDbCEWIBVBA2whFCAJIB8gEyAgbGpBAnRqIRBBACEHIAshDgwBCyAhRQRAIBFFDQogE0ECdCEOIA9BAnQhCCAVQQJ0IRAgDCAfIBMgIGxqQQJ0IgVrIQZBACEKIA0hBwNAIAUgDEsNBiAGIAhJDQUgCiANSw0EIAcgCEkNAyAIBEAgBSAJaiAKIAtqIAj8CgAACyAHIBBrIQcgCiAQaiEKIAYgDmshBiAFIA5qIQUgEUEBayIRDQALDAoLIBFFIA9Fcg0JIAxBA2oiIyAfIBMgIGxqQQJ0IhdrIRIgD0EBaiEkIA2tQgF8ITAgDK1CAXwhLUIAIBWtQgKGIjN9ITggCSAXaiEWIA9BAWutISxBACEZQQAgE0ECdCIYa60hOUEAIBVBAnQiImutITogCyEPIAwgF2siJSEdIA0hECANQQNqIiYhFEIDITRCACExIBchDkIAIStBASEeA0AgGSAgaiATbCEhQQEhBUEAIQgCQCAtIBggK6dsIBdqrX0iL0IAIC0gL1obQgN8QgKIIjIgKyA4fiArIDN+Ii8gMCAvIDBWG3xCA3xCAogiLyAvIDJWGyI1ICYgKyA6fqciBmpBAyAGIA1qIgYgBkEDTxtrQQJ2rSIyIDIgNVYbIjYgIyArIDl+pyIGaiAXQQMgBiAlaiIGIAZBA08bcmtBAnatIjUgNSA2VhsiNiAsICwgNlYbIjZCBFQNACAtIBcgGCAZbGoiBq19IjdCACAtIDdaG0IDfEICiCI3IC8gLyA3VhsiLyAyIC8gMlQbIi8gNSAvIDVUGyIvICwgLCAvVhunQQJ0IAZBf3NLDQAgNqdBAWoiBUEDcSIGQQQgBhsiBiAtIA6tfSIvQgAgLSAvWhtCA3xCAogiLyAxIDAgMCAxVBsgNHxCAogiMiAvIDJUGyIvIBRBAyAQIBBBA08ba61CAogiMiAvIDJUGyIvIBJBAyAdIB1BA08ba61CAogiMiAvIDJUGyIvICwgLCAvVhunQX9zaiEHIAUgBmsiCEEBaiEFIBYhCiAPIQYDQCAK/QAAACI9QRj9rQEgBv0AAAAiPkEY/a0BIj/9DP8AAAD/AAAA/wAAAP8AAAD9Uf21Af0MgAAAAIAAAACAAAAAgAAAAP2uASI7QQj9rQEgO/2uAUEI/a0BIkEgP/2uASE8ID79DP///wD///8A////AP///wD9PCJA/RsAQQFxBEBBgICACCA8/RsAbv0RITsLIED9GwFBAXEEQCA7QYCAgAggPP0bAW79HAEhOwsgQP0bAkEBcQRAIDtBgICACCA8/RsCbv0cAiE7CyBA/RsDQQFxBEAgO0GAgIAIIDz9GwNu/RwDITsLIAogOyBBID39DP8AAAD/AAAA/wAAAP8AAAD9Tv21ASA+/Qz/AAAA/wAAAP8AAAD/AAAA/U4gP/21Af2uAf21AUEY/a0BIDxBGP2rAf1QIDsgQSA9QQj9rQH9DP8AAAD/AAAA/wAAAP8AAAD9Tv21ASA+QQj9rQH9DP8AAAD/AAAA/wAAAP8AAAD9TiA//bUB/a4B/bUBQRD9rQH9DAD/AAAA/wAAAP8AAAD/AAD9Tv1QIDsgQSA9QRD9rQH9DP8AAAD/AAAA/wAAAP8AAAD9Tv21ASA+QRD9rQH9DP8AAAD/AAAA/wAAAP8AAAD9TiA//bUB/a4B/bUBQQj9rQH9DAAA/wAAAP8AAAD/AAAA/wD9Tv1QID0gQP1S/QsAACAKQRBqIQogBkEQaiEGIAdBBGoiBw0ACwsgFSAZbCEbIB8gIWohKQNAIA0gCCAbakECdCIHSQ0KIA0gB2siBkEESQ0JIAwgCCApakECdCIGSQ0IIAwgBmsiCEEESQ0HIAYgCWoiCCgAACEGIAggByALaigAACIHQYCAgAhPBH9BgICACCAHQRh2IghB/wFzIAZBGHZsQYABaiIKQQh2IApqQQh2IgogCGoiKm4iISAKIAZB/wFxbCAHQf8BcSAIbGpsQRh2ICpBGHRyICEgCiAGQQh2Qf8BcWwgB0EIdkH/AXEgCGxqbEEQdkGA/gNxciAhIAogBkEQdkH/AXFsIAdBEHZB/wFxIAhsamxBCHZBgID8B3FyBSAGCzYAACAFIQggJCAFQQFqIgVHDQALIBYgGGohFiAPICJqIQ8gHSAYayEdIBIgGGshEiAQICJrIRAgFCAiayEUIDQgM30hNCAxIDN8ITEgDiAYaiEOICtCAXwhKyAZQQFqIRkgHiARIB5LIgVqIR4gBQ0ACwwJCwNAIAchBiAFIQcCQAJAAkACQAJAAkAgBiAUbCISIA1NBEAgFiANIBJrIgVLDQEgDCAGICBqIBNsIB9qQQJ0IgZJDQIgFyAMIAZrIgVLDQNBACEKAkAgDw4CBwYACyAQIQggDiEFA0AgCCAFLwAAOwAAIAhBA2pB/wE6AAAgCEEHakH/AToAACAIQQJqIAVBAmotAAA6AAAgCEEEaiAFQQNqLwAAOwAAIAhBBmogBUEFai0AADoAACAIQQhqIQggBUEGaiEFIBkgCkECaiIKRw0ACwwECyASIA0gDUGo8MQAEOoHAAtBACAWIAVBmPDEABDqBwALIAYgDCAMQYjwxAAQ6gcAC0EAIBcgBUH478QAEOoHAAsgHUUNAQsgBiAJaiAKQQJ0aiIFQf8BOgADIAUgCyASaiAKQQNsaiIGLwAAOwAAIAVBAmogBkECai0AADoAAAsgECAYaiEQIA4gFGohDiAHIAcgEUkiBmohBSAGDQALDAgLQQAgCCAHQbjwxAAQ6gcACyAKIA0gDUHI8MQAEOoHAAtBACAIIAZB2PDEABDqBwALIAUgDCAMQejwxAAQ6gcAC0EAQQQgCEGI8cQAEOoHAAsgBiAMIAxBmPHEABDqBwALQQBBBCAGQfjwxAAQ6gcACyAHIA0gDUGo8cQAEOoHAAsgBCAcQQFxOgA4IAQgIDYCNCAEIB82AjAgBCAaNgIsIAQgFTYCKCAEIAQoAiRBAWo2AiQgBCAuIAQpAxB8Qgh8NwMQIAQtAKMBRQRAIARBAzYCuAIgBCADQQNwIgU2AqwCIAQgAyAFayIDNgK0AiAEIAI2ArACIAQgAiADajYCqAICQAJAIAQoAhhBgICAgHhHBEAgBEEENgL4AiAEIAQoAhwiAjYC6AIgBCAEKAIgIgNBA3E2AvQCIAQgA0F8cSIDNgLsAiAEIAIgA2o2AvACIARBsANqIQIgBEHoAmohAwJAAkAgBEGoAmoiBSgCECIJBEAgAygCECIGRQ0BIAJBADYCKCACIAX9AAIA/QsCACACIAP9AAIA/QsCFCACQRBqIAVBEGooAgA2AgAgAkEkaiADQRBqKAIANgIAIAIgAygCBCAGbiICIAUoAgwgCW4iAyACIANJGzYCLAwCC0HIpsYAEIEIAAtBgM7HABCBCAALIAQoAtwDIgYgBCgC2AMiA00NBiAEKAK4AyIHRQ0GIAQoAtQDIglBA0kNAiAEKALAAyICQQNHDQEgBCgCxAMhBSADQQFqIQIgBiADa0EBcQRAIAcgA0EDbGoiCCAFIAMgCWxqIgMvAAA7AAAgCEECaiADQQJqLQAAOgAAIAIhAwsgAiAGRg0GIAlBAXQhAiADIAlsIQ0gBiADayEIIAkgA0EBamwhCSAHIANBA2xqIQMDQCADIAUgDWoiBi8AADsAACADQQJqIAZBAmotAAA6AAAgA0EDaiAFIAlqIgYvAAA7AAAgA0EFaiAGQQJqLQAAOgAAIANBBmohAyACIAVqIQUgCEECayIIDQALDAYLQbT3xgAQ3QkACyACQQNB1PfGABDeCQALQQBBAyAJQcT3xgAQ6gcACyAEKAIYQYCAgIB4RwRAIAMgBCgCICIFRw0CIANFDQMgAiAEKAIcIAP8CgAADAMLQeT3xgAQ3QkAC0Gk98YAEN0JAAsgAyAFQfT3xgAQ3gkACyAEQR06AOABIAQgKDYC5AEgJ0UNASALICdBARCiBwwBCyAEIAT9AAOQAv0LBOABCwJAIAQoAhgiAkGAgICAeHJBgICAgHhHBEAgBCgCHCIDQQRrKAIAIgVBeHEiCUEEQQggBUEDcSIFGyACakkNDSAFQQAgCSACQSdqSxsNASADEKICCyAEQTBqIARB0AFq/QADAP0LAwAgBEEgaiAEQcABav0AAwD9CwMAIAQgBP0AA7AB/QsDECAELQDgASIFQR1GDQQgBC8A4QEgBC0A4wFBEHRyIQYgBCkD6AEhLiAEKALkASEJDAkLDAwLIARBqAJqEP0EDAILIAcEQCAFIAdBARCiBwsgLqciAgRAIC5CIIinIAJBARCiBwsgBCgCwAIiAgRAIAQoAsQCIAJBARCiBwsgCyEFICshLgwFCyAEQbADahD3AyAEKAKYBCICRQ0AIAQoApwEIgNBBGsoAgAiBUF4cSIJQQRBCCAFQQNxIgUbIAJqSQ0IIAVBACAJIAJBJ2pLGw0JIAMQogJBBiEDDAYLQQYhAwwFCyAELwDpAiAELQDrAkEQdHILIQYgBCkC8AIhLiAEKALsAiEJCyAEQbADahD3AyAEKAKYBCICRQ0BAkAgBCgCnAQiA0EEaygCACIHQXhxIgtBBEEIIAdBA3EiBxsgAmpPBEAgB0EAIAsgAkEnaksbDQEgAxCiAgwDCwwFCwwFC0EGIQMgBUH/AXFBHUcNAAwBCyAEIC43ArQDIAQgCTYCsAMgBUH/AXFFBEAgACAEKQOwAzcCBEEFIQMMAQtBEBBxIgJFDQEgAiAEKQOwAzcCBCAAQey7xAA2AhggACACNgIUIABBgAY7AQQgAiAFQf8BcSAGQQh0cjYCACACQQxqIARBuANqKAIANgIAQQAhAwsgACADNgIAIAQoAhgiAEGAgICAeHJBgICAgHhHBEAgBCgCHCICQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyAAakkNAiADQQAgBSAAQSdqSxsNAyACEKICCwJAIAQoAmwiAEUNACAAQRhsIgIgAGpBIWoiAEUNACAEKAJoIAJrIgJBHGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0CIANBACAFIABBJ2pLGw0DIAJBGGsQogILIAFBBGsoAgAiAEF4cUGkAUGoASAAQQNxIgIbSQ0BIAJBACAAQcgBTxsNAiABEKICIARB8AhqJAAPCwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC5c1Aih/An4jAEGQBWsiASQAAkACQCAAKALEASIDQQRPBEAgACgCwAEiAigAAEHQlo0gRw0BIAFCADcDGCABIAM2AhQgASACNgIQIAFB2AJqIAFBEGoQMSABQUBrIgMgAUHkAmooAgA2AgAgASABKQLcAjcDOCABKALYAiICRQRAIAFBOGoQjwchAgwDCyABQSxqIAMoAgA2AgAgASABKQM4NwIkIAEgASkD6AIiKTcDMCABIAI2AiACQAJAICmnKAJAIhAEQCABQfwAaiEEIAFB8ABqIQwgAUHsAmohIiABQeACaiENA0AgAUEAOgC4AiABQQA2ArACIAFB2AJqIAFBIGogHSABQbACahCoASABQdAAaiICIA1BCGooAgA2AgAgASANKQMANwNIAkACQAJAAkACQAJAAkACQAJAIAEpA9gCIilCA1IEQCAEICJBtAH8CgAAIAxBCGogAigCADYCACAMIAEpA0g3AwAgASApNwNoAkAgASgCcCABQegAaiApQgJRGyICKAIsIgdBAE4EQCACKAIoIQICQCAHRQRAQQEhCwwBCyAHEHEiC0UNCAsgBwRAIAsgAiAH/AoAAAsgAUHoAGoQ/AEgB0EJSQ0IQfzVwQAgByALakEJa0EJENsHDQkgByECAkADQCABQQhqQS8gCyACEKkDQQEhHUEAISIgASgCCEEBcUUEQAwCCwJAIAcgASgCDCICSwRAIAIgC2otAABBL0YNAQsgAiAHTQ0BDAILCyABIAI2AqgEIAEgCzYCpAQgASABQaQEaq1CgICAgCCENwOwAiABQgE3AuQCIAFBAjYC3AIgAUGs1sEANgLYAiABIAFBsAJqNgLgAiABQegAaiABQdgCahDsAyABKAJoIgJBgICAgHhGDQAgASkCbCIpQiCIpyEFICmnIR0gAiEiCyABQdgCaiABQSBqIAsgBxDJBCABQeAAaiABQegCaigCADYCACABIAEpA+ACNwNYAkAgASkD2AIiKUIDUQRAIAFB2ABqEI8HIQIMAQsgAUH8AGogAUHsAmpBtAH8CgAAIAFB+ABqIAFB4ABqKAIANgIAIAEgKTcDaCABIAEpA1g3A3AgAUEANgK4AiABQoCAgIAQNwKwAiABQdgCaiABQegAaiABQbACahCZASABKALYAkEBRgRAIAEpAtwCEM8HIQIgASgCsAIiAARAIAEoArQCIABBARCiBwsgAUHoAGoQ/AEMAQsgASgCsAIhJyABKAK0AiEoIAEoArgCIQIgAUHoAGoQ/AEgAUEANgK4AiABIAI2ArQCIAEgKDYCsAIgAUHYAmogAUGwAmoQRiABKALcAiECAkAgASgC2AIiBEGBgICAeEYEQCACEKMHIQIMAQsgAUHwAGogAUHgAmpBwAH8CgAAIAEgAjYCbCABIAQ2AmggAUHsAGohAyABAn5BwLvJAC0AAARAQdC7yQApAwAhKUHIu8kAKQMADAELIAFB2AJqEL8GQcC7yQBBAToAAEHQu8kAIAEpA+ACIik3AwAgASkD2AILIio3A8ACQci7yQAgKkIBfDcDACABICk3A8gCIAFB8JrIAP0AAwD9CwOwAgJAIAFB6ABqIB0gBSABQSBqIAFBsAJqIgUQ2AQiAgRAIAUQ5QMgBEGAgICAeEcNASADEIUCDAILIAEgAUGwAmo2AtQCIARBgICAgHhHBEAgAUHYAmogAUHoAGpByAH8CgAAIAEoAsADIiVBgICAgHhGDQUgASgCyANBEUcNBSABKAKIAyERIAEoAsQDQbLYwQBBERDbBw0FIAEoAvgDIgZBgICAgHhGDQggASgCnAQiAkEtTwRAQQMhCAwJCyACQRdLBEBBAiEIDAkLIAJBCEshCAwICyABQdgCaiADQbQB/AoAACABKAKIBCEJIAEoAtwDIhJBgICAgHhGDQZBAyEIIAEtAIAEIgJBA08NBkECIAJBAEcgAkECRhshCAwGCyABQegAahDIAgsgJ0UNACAoICdBARCiBwsgIgRAIB0gIkEBEKIHCyALIAdBARCiBwwOC0HYmsgAEP8HDAYLIAFBADYCtARBASEFIAFBATYCqAQgAUGw2sEANgKkBCABQgQ3AqwEIAFBpARqEJIHIQIMAwsgAUHIAGoQjwchAgwLCyABQQA6AKwEIAEgCDYCqAQgASAJNgKkBCAAIAFBpARqIgIQpQQgAiABQbACaiABKALoAiIeIAEoAuwCEKMEIAEoAqgEIQNBASEGAkAgASgCpAQiBEGAgICAeEYEQCADIQIMAQsgAUGkBGogAyABKAKsBBA5IAEoAqgEIRMgASgCpAQiFEGAgICAeEYEQEEoEHEiAkUNBSACIBM2AiQgAkEPNgIgIAJBw9jBADYCHCACQQM2AgQgAkHsn8EANgIAIARFDQEgAyAEQQEQogcMAQsgASgCrAQhDCAEBEAgAyAEQQEQogcLIAFBpARqIAFBsAJqIAEoAvQCIAEoAvgCEKMEIAEoAqgEIQMCQCABKAKkBCIEQYCAgIB4RgRAIAMhAgwBCyABQaQEaiADIAEoAqwEEDkgASgCqAQhFSABKAKkBCIWQYCAgIB4RgRAQSgQcSICRQ0GIAIgFTYCJCACQQ82AiAgAkHS2MEANgIcIAJBAzYCBCACQeyfwQA2AgAgBEUNASADIARBARCiBwwBCyABKAKsBCENIAQEQCADIARBARCiBwsgAUGkBGogAUGwAmogASgCmAMgASgCnAMQowQgASgCqAQhAwJAIAEoAqQEIgRBgICAgHhGBEAgAyECDAELIAFBpARqIAMgASgCrAQQOSABKAKoBCEXIAEoAqQEIhhBgICAgHhGBEBBKBBxIgJFDQcgAiAXNgIkIAJBDTYCICACQeHYwQA2AhwgAkEDNgIEIAJB7J/BADYCACAERQ0BIAMgBEEBEKIHDAELIAEoAqwEIRAgBARAIAMgBEEBEKIHCyABQaQEaiABQbACaiABKAKwAyABKAK0AxCjBCABKAKoBCEDAkAgASgCpAQiCkGAgICAeEYEQCADIQIMAQsgAUGkBGogAyABKAKsBBA5IAEoAqgEIRkgASgCpAQiGkGAgICAeEYEQEEoEHEiAkUNCCACIBk2AiQgAkEMNgIgIAJB7tjBADYCHCACQQM2AgQgAkHsn8EANgIAIApFDQEgAyAKQQEQogcMAQsgASgCrAQhBCAKBEAgAyAKQQEQogcLIAFBpARqIAFBsAJqIAEoAsgDIAEoAswDEKMEIAEoAqgEIQMCQCABKAKkBCIKQYCAgIB4RgRAIAMhAgwBCyABQaQEaiADIAEoAqwEEDkgASgCqAQhGyABKAKkBCIcQYCAgIB4RgRAQSgQcSICRQ0JIAIgGzYCJCACQQo2AiAgAkH62MEANgIcIAJBAzYCBCACQeyfwQA2AgAgCkUNASADIApBARCiBwwBCyABKAKsBCECIAoEQCADIApBARCiBwsgAUG8BGogCUEDbCIDQbjawQAQ5QYgAUHIBGogA0HI2sEAEOUGIAFB1ARqIAlBAnRB2NrBABDlBiABQeAEaiADQejawQAQ5QYgAUHsBGogCUH42sEAEOUGAkACQAJAAkACQCAIRQRAIAFBADYCgAUgAUKAgICAwAA3AvgEDAELIAFB+ARqIAlBCWxBiNvBABDlBiAIQQFHDQELIAFBADYCjAUgAUKAgICAwAA3AoQFDAELIAFBhAVqIAlBD2xBmNvBABDlBiAIQQJLDQELIAFBADYCrAQgAUKAgICAwAA3AqQEDAELIAFBpARqIAlBFWxBqNvBABDlBgsgAUH8AmogAUGIA2ogEyAMIBUgDSABKALABCIjIAEoAsQEIgwQygMgASgCpAMgASgCqAMgFyAQIAEoAswEIiQgASgC0AQiDRD/AiAZIAQgASgC2AQiJSABKALcBCIQEJgDIAEoAtQDIAEoAtgDIBsgAiABKALkBCImIAEoAugEIgQgASgC8AQiBSABKAL0BCIDELECIAEoAqwEIQ4gASgCqAQhHyABKAKMBSEGIAEoAogFISAgASgCgAUhCiABKAL8BCEhAkACQCASQYCAgIB4RgRAIAEoAqQEIQ8MAQsgAUHcA2ogAUHUAmogCSAhIAogICAGIB8gDhBwIQIgASgCpAQhDyACDQELIAAgCSAIICMgDCAkIA0gJSAQICYgBCAFIAMgISAKICAgBiAfIA4QigMhAiAPBEAgHyAPQQJ0QQQQogcLIAEoAoQFIgAEQCAgIABBAnRBBBCiBwsgASgC+AQiAARAICEgAEECdEEEEKIHCyABKALsBCIABEAgBSAAQQJ0QQQQogcLIAEoAuAEIgAEQCAmIABBAnRBBBCiBwsgASgC1AQiAARAICUgAEECdEEEEKIHCyABKALIBCIABEAgJCAAQQJ0QQQQogcLIAEoArwEIgAEQCAjIABBAnRBBBCiBwsgHARAIBsgHEEBEKIHCyAaBEAgGSAaQQEQogcLIBgEQCAXIBhBARCiBwsgFgRAIBUgFkEBEKIHCyAUBEAgEyAUQQEQogcLIAFB2AJqEOUFIAFBlANqEN8FIAFBrANqEOAFIAFBxANqEN8FDAgLIA8EQCAfIA9BAnRBBBCiBwsgASgChAUiAARAICAgAEECdEEEEKIHCyABKAL4BCIABEAgISAAQQJ0QQQQogcLIAEoAuwEIgAEQCAFIABBAnRBBBCiBwsgASgC4AQiAARAICYgAEECdEEEEKIHCyABKALUBCIABEAgJSAAQQJ0QQQQogcLIAEoAsgEIgAEQCAkIABBAnRBBBCiBwsgASgCvAQiAARAICMgAEECdEEEEKIHC0EAIQYgHEUNACAbIBxBARCiBwsgGkUNACAZIBpBARCiBwsgGEUNACAXIBhBARCiBwsgFkUNACAVIBZBARCiBwsgFEUNACATIBRBARCiBwsgASgC5AIiAARAIB4gAEEBEKIHCyABKALwAiIABEAgASgC9AIgAEEBEKIHCyABKAKUAyIABEAgASgCmAMgAEEBEKIHCyABKAKgAyIABEAgASgCpAMgAEECdEEEEKIHCyABKAKsAyIABEAgASgCsAMgAEEBEKIHCyABKAK4AyIAQYCAgIB4ckGAgICAeEcEQCABKAK8AyAAQQEQogcLIAEoAsQDIgAEQCABKALIAyAAQQEQogcLIAEoAtADIgAEQCABKALUAyAAQQJ0QQQQogcLIAZFIBJBgICAgHhGcg0CIBIEQCABKALgAyASQQEQogcLIAEoAugDIgAEQCABKALsAyAAQQEQogcLIAEoAvQDIgBFDQIgASgC+AMgAEECdEEEEKIHDAILIAFBADoArAQgASAINgKoBCABIBE2AqQEIAAgAUGkBGoiAhClBCACIAFBsAJqIAEoAtwCIAEoAuACEKMEIAEoAqgEIQNBASEFIAEoAqQEIgRBgICAgHhGBEAgAyECDAELIAFBpARqIAMgASgCrAQQOSABKAKoBCEJIAEoAqQEIg9BgICAgHhGBEBBKBBxIgJFDQMgAiAJNgIkIAJBDzYCICACQcPYwQA2AhwgAkEDNgIEIAJB7J/BADYCACAERQ0BIAMgBEEBEKIHDAELIAEoAqwEIQwgBARAIAMgBEEBEKIHCyABQaQEaiABQbACaiABKALoAiABKALsAhCjBCABKAKoBCEDAkAgASgCpAQiBEGAgICAeEYEQCADIQIMAQsgAUGkBGogAyABKAKsBBA5IAEoAqgEIRIgASgCpAQiE0GAgICAeEYEQEEoEHEiAkUNBCACIBI2AiQgAkEPNgIgIAJB0tjBADYCHCACQQM2AgQgAkHsn8EANgIAIARFDQEgAyAEQQEQogcMAQsgASgCrAQhDSAEBEAgAyAEQQEQogcLIAFBpARqIAFBsAJqIAEoApQDIgogASgCmAMQowQgASgCqAQhAwJAIAEoAqQEIgRBgICAgHhGBEAgAyECDAELIAFBpARqIAMgASgCrAQQOSABKAKoBCEUIAEoAqQEIhVBgICAgHhGBEBBKBBxIgJFDQUgAiAUNgIkIAJBDTYCICACQeHYwQA2AhwgAkEDNgIEIAJB7J/BADYCACAERQ0BIAMgBEEBEKIHDAELIAEoAqwEIRAgBARAIAMgBEEBEKIHCyABQaQEaiABQbACaiABKAK4AyABKAK8AxCjBCABKAKoBCEDAkAgASgCpAQiHkGAgICAeEYEQCADIQIMAQsgAUGkBGogAyABKAKsBBA5IAEoAqgEIRYgASgCpAQiF0GAgICAeEYEQEEoEHEiAkUNBiACIBY2AiQgAkEMNgIgIAJB7tjBADYCHCACQQM2AgQgAkHsn8EANgIAIB5FDQEgAyAeQQEQogcMAQsgASgCrAQhBCAeBEAgAyAeQQEQogcLIAFBpARqIAFBsAJqIAEoAtADIh4gASgC1AMQowQgASgCqAQhAwJAIAEoAqQEIg5BgICAgHhGBEAgAyECDAELIAFBpARqIAMgASgCrAQQOSABKAKoBCEYIAEoAqQEIhlBgICAgHhGBEBBKBBxIgJFDQcgAiAYNgIkIAJBCjYCICACQfrYwQA2AhwgAkEDNgIEIAJB7J/BADYCACAORQ0BIAMgDkEBEKIHDAELIAEoAqwEIQIgDgRAIAMgDkEBEKIHCyABQbwEaiARQQNsIgNBhNnBABDlBiABQcgEaiADQZTZwQAQ5QYgAUHUBGogEUECdEGk2cEAEOUGIAFB4ARqIANBtNnBABDlBiABQewEaiARQcTZwQAQ5QYCQAJAAkACQAJAIAhFBEAgAUEANgKABSABQoCAgIDAADcC+AQMAQsgAUH4BGogEUEJbEHU2cEAEOUGIAhBAUcNAQsgAUEANgKMBSABQoCAgIDAADcChAUMAQsgAUGEBWogEUEPbEHk2cEAEOUGIAhBA0YNAQsgAUEANgKsBCABQoCAgIDAADcCpAQMAQsgAUGkBGogEUEVbEH02cEAEOUGCyABQfACaiABQfwCaiAJIAwgEiANIAEoAsAEIh8gASgCxAQiDBDKAyABQZwDaiABQagDaiAUIBAgASgCzAQiICABKALQBCINELMCIBYgBCABKALYBCIhIAEoAtwEIhAQmAMgAUHYA2ogAUHoA2ogGCACIAEoAuQEIiMgASgC6AQiBCABKALwBCIkIAEoAvQEIgMQgAIgASgCrAQhJiABKAKoBCEaIAEoAowFIQUgASgCiAUhGyABKAKABSEOIAEoAvwEIRwCQAJAIAZBgICAgHhGBEAgASgCpAQhBgwBCyABQfgDaiABQdQCaiARIAggHCAOIBsgBSAaICYQdSECIAEoAqQEIQYgAg0BCyAAIBEgCCAfIAwgICANICEgECAjIAQgJCADIBwgDiAbIAUgGiAmEIoDIQIgBgRAIBogBkECdEEEEKIHCyABKAKEBSIABEAgGyAAQQJ0QQQQogcLIAEoAvgEIgAEQCAcIABBAnRBBBCiBwsgASgC7AQiAARAICQgAEECdEEEEKIHCyABKALgBCIABEAgIyAAQQJ0QQQQogcLIAEoAtQEIgAEQCAhIABBAnRBBBCiBwsgASgCyAQiAARAICAgAEECdEEEEKIHCyABKAK8BCIABEAgHyAAQQJ0QQQQogcLIBkEQCAYIBlBARCiBwsgFwRAIBYgF0EBEKIHCyAVBEAgFCAVQQEQogcLIBMEQCASIBNBARCiBwsgDwRAIAkgD0EBEKIHCyABQdgCahDmBSABKAKQAyIABEAgCiAAQQEQogcLIAFBtANqEOAFIAEoAswDIgBFDQYgHiAAQQEQogcMBgsgBgRAIBogBkECdEEEEKIHCyABKAKEBSIABEAgGyAAQQJ0QQQQogcLIAEoAvgEIgAEQCAcIABBAnRBBBCiBwsgASgC7AQiAARAICQgAEECdEEEEKIHCyABKALgBCIABEAgIyAAQQJ0QQQQogcLIAEoAtQEIgAEQCAhIABBAnRBBBCiBwsgASgCyAQiAARAICAgAEECdEEEEKIHCyABKAK8BCIABEAgHyAAQQJ0QQQQogcLQQAhBSAZRQ0AIBggGUEBEKIHCyAXRQ0AIBYgF0EBEKIHCyAVRQ0AIBQgFUEBEKIHCyATRQ0AIBIgE0EBEKIHCyAPRQ0AIAkgD0EBEKIHCyABKALYAiIABEAgASgC3AIgAEEBEKIHCyABKALkAiIABEAgASgC6AIgAEEBEKIHCyABKAKQAyIABEAgASgClAMgAEEBEKIHCyABKAK0AyIABEAgASgCuAMgAEEBEKIHCyAlQYCAgIB4ckGAgICAeEcEQCABKALEAyAlQQEQogcLIAEoAswDIgAEQCABKALQAyAAQQEQogcLIAVBAXMgASgC+AMiAEGAgICAeEZyDQAgAARAIAEoAvwDIABBARCiBwsgASgChAQiAEUNACABKAKIBCAAQQEQogcLIAFBsAJqEOUDICcEQCAoICdBARCiBwsgIgRAIB0gIkEBEKIHCyALIAdBARCiByABKAIwIgAgACgCACIAQQFrNgIAIABBAUcNCyABKAIwEPECDAsLAAsgB0UNAgJAIAtBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAdqTwRAIAJFDQMgAyAHQSdqSw0BDAMLQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyALQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAHakkNBSACRSADIAdBJ2pNcg0AQYyNyABBLkG8jcgAEOsHAAsgCxCiAgsgECAdQQFqIh1HDQALCyABQQA2AugCIAFBATYC3AIgAUGk1sEANgLYAiABQgQ3AuACIAFB2AJqEJIHIQILIAEoAjAiACAAKAIAIgBBAWs2AgAgAEEBRw0DIAEoAjAQ8QIMAwtBzIzIAEEuQfyMyAAQ6wcACyABQQA2AugCIAFBATYC3AIgAUGopcEANgLYAiABQgQ3AuACIAFB2AJqEJIHIQIMAQsgAUEANgLoAiABQQE2AtwCIAFBjKXBADYC2AIgAUIENwLgAiABQdgCahCSByECCyABQZAFaiQAIAILlzUCKH8CfiMAQZAFayIBJAACQAJAIAAoAswBIgNBBE8EQCAAKALIASICKAAAQdCWjSBHDQEgAUIANwMYIAEgAzYCFCABIAI2AhAgAUHYAmogAUEQahAxIAFBQGsiAyABQeQCaigCADYCACABIAEpAtwCNwM4IAEoAtgCIgJFBEAgAUE4ahCPByECDAMLIAFBLGogAygCADYCACABIAEpAzg3AiQgASABKQPoAiIpNwMwIAEgAjYCIAJAAkAgKacoAkAiEARAIAFB/ABqIQQgAUHwAGohDCABQewCaiEiIAFB4AJqIQ0DQCABQQA6ALgCIAFBADYCsAIgAUHYAmogAUEgaiAdIAFBsAJqEKgBIAFB0ABqIgIgDUEIaigCADYCACABIA0pAwA3A0gCQAJAAkACQAJAAkACQAJAAkAgASkD2AIiKUIDUgRAIAQgIkG0AfwKAAAgDEEIaiACKAIANgIAIAwgASkDSDcDACABICk3A2gCQCABKAJwIAFB6ABqIClCAlEbIgIoAiwiB0EATgRAIAIoAighAgJAIAdFBEBBASELDAELIAcQcSILRQ0ICyAHBEAgCyACIAf8CgAACyABQegAahD8ASAHQQlJDQhB/NXBACAHIAtqQQlrQQkQ2wcNCSAHIQICQANAIAFBCGpBLyALIAIQqQNBASEdQQAhIiABKAIIQQFxRQRADAILAkAgByABKAIMIgJLBEAgAiALai0AAEEvRg0BCyACIAdNDQEMAgsLIAEgAjYCqAQgASALNgKkBCABIAFBpARqrUKAgICAIIQ3A7ACIAFCATcC5AIgAUECNgLcAiABQazWwQA2AtgCIAEgAUGwAmo2AuACIAFB6ABqIAFB2AJqEOwDIAEoAmgiAkGAgICAeEYNACABKQJsIilCIIinIQUgKachHSACISILIAFB2AJqIAFBIGogCyAHEMkEIAFB4ABqIAFB6AJqKAIANgIAIAEgASkD4AI3A1gCQCABKQPYAiIpQgNRBEAgAUHYAGoQjwchAgwBCyABQfwAaiABQewCakG0AfwKAAAgAUH4AGogAUHgAGooAgA2AgAgASApNwNoIAEgASkDWDcDcCABQQA2ArgCIAFCgICAgBA3ArACIAFB2AJqIAFB6ABqIAFBsAJqEJkBIAEoAtgCQQFGBEAgASkC3AIQzwchAiABKAKwAiIABEAgASgCtAIgAEEBEKIHCyABQegAahD8AQwBCyABKAKwAiEnIAEoArQCISggASgCuAIhAiABQegAahD8ASABQQA2ArgCIAEgAjYCtAIgASAoNgKwAiABQdgCaiABQbACahBGIAEoAtwCIQICQCABKALY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AEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALozADJ38EfQF+IwBBwAxrIgMkAAJAAkACQAJAAkACQAJAIAAoAtwEIgFBgYCAgHhGBEACQCAAKALwBCIKQQRJDQACQCAAKALsBCIELwAAIAQtAAJBEHRyQfDY5QNGBEAgCkELSQ0CIApBCmshAkEAIQECQANAIAEgBGpB+MPBAEELENsHRQ0BIAIgAUEBaiIBRw0ACyAKQf//A00NAyADQQA2AugHIANBATYC3AcgA0Hww8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMCQsgASAKSw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIOQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCkEBcUUEQCADKAKwASEIIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAOIAggBCACEJoBIAMoAtgHIQUgAygCtAwiDUGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiEHIAMoAsQKIQsgA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQkgA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIAk2AtwHIAMgCDYC2AcgAEH0BGogDhClBAwDCyADQZgGaiICIANBCGpBwAH8CgAAIANB2AdqIAIQaiADKALcByECIAMoAtgHIgVBgICAgHhGBEAgAkUNBAwKCyADQbADaiADQeAHakHkAvwKAAAgAygCxAohCyADKALICiEHIANBADoA4AcgAyAHNgLcByADIAs2AtgHIABB9ARqIANB2AdqEKUEQYCAgIB4IQ0MAgsgA0EIahCgAyAFIgINCAwCCyADQQA2AugHIANBATYC3AcgA0Goo8EANgLYByADQgQ3AuAHIANB2AdqEJIHIQIMBwsgACgC8AQiBCABQQtqIghJDQIgAEEANgLwBCAEIAhHBEAgBCAIayIEBEAgACgC7AQiASABIAhqIAT8CgAA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2OUDRgRAIApBC0kNAiAKQQprIQJBACEBAkADQCABIARqQfjDwQBBCxDbB0UNASACIAFBAWoiAUcNAAsgCkH//wNNDQMgA0EANgLoByADQQE2AtwHIANB8MPBADYC2AcgA0IENwLgByADQdgHahCSByECDAkLIAEgCksNCiADQdgHaiAEIAEQ+wIgAykC3AchLCADKALYB0EBRgRAICwQzQchAgwJCyADQdgHaiAspyAsQiCIpxBNIAMoAtgHIQIgAygChAkiBEGAgICAeEYEQCACRQ0DDAkLIANBCGpBBHIgA0HYB2oiDkEEckGoAfwKAAAgA0HAAWogA0GQCWopAwAiLDcDACADIAMpA4gJNwO4ASADIAQ2ArQBIAMgAjYCCAJAICynIgpBAXFFBEAgAygCsAEhCCADKAKcASEEIANBmAZqIgIgA0H4AGoQwwMgDiAIIAQgAhCaASADKALYByEFIAMoArQMIg1BgICAgHhGDQEgAygC3AchAiADQbADaiADQeAHakHkAvwKAAAgAygCyAohByADKALECiELIANBoAJqIANBzApqQZAB/AoAACADKALcCyEJIANByAFqIANB4AtqQdQA/AoAACADKQO4DCEsIANBADoA4AcgAyAJNgLcByADIAg2AtgHIABB9ARqIA4Q4QMMAwsgA0GYBmoiAiADQQhqQcAB/AoAACADQdgHaiACEGogAygC3AchAiADKALYByIFQYCAgIB4RgRAIAJFDQQMCgsgA0GwA2ogA0HgB2pB5AL8CgAAIAMoAsQKIQsgAygCyAohByADQQA6AOAHIAMgBzYC3AcgAyALNgLYByAAQfQEaiADQdgHahDhA0GAgICAeCENDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoAvAEIgQgAUELaiIISQ0CIABBADYC8AQgBCAIRwRAIAQgCGsiBARAIAAoAuwEIgEgASAIaiAE/AoAAAsgACAENgLwBAsCQAJAAkAgACgC3ARBgICAgHhrDgIBAgALIAAQvgIMAQsgABC9AQsgACACNgIEIAAgBTYCACAAQQhqIANBsANqQeQC/AoAACAAIAc2AvACIAAgCzYC7AIgAEH0AmogA0GgAmpBkAH8CgAAIAAg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Sw0KIANB2AdqIAQgARD7AiADKQLcByEsIAMoAtgHQQFGBEAgLBDNByECDAkLIANB2AdqICynICxCIIinEE0gAygC2AchAiADKAKECSIEQYCAgIB4RgRAIAJFDQMMCQsgA0EIakEEciADQdgHaiIJQQRyQagB/AoAACADQcABaiADQZAJaikDACIsNwMAIAMgAykDiAk3A7gBIAMgBDYCtAEgAyACNgIIAkAgLKciCEEBcUUEQCADKAKwASEHIAMoApwBIQQgA0GYBmoiAiADQfgAahDDAyAJIAcgBCACEJoBIAMoAtgHIQUgAygCtAwiCkGAgICAeEYNASADKALcByECIANBsANqIANB4AdqQeQC/AoAACADKALICiELIAMoAsQKIQ4gA0GgAmogA0HMCmpBkAH8CgAAIAMoAtwLIQ0gA0HIAWogA0HgC2pB1AD8CgAAIAMpA7gMISwgA0EAOgDgByADIA02AtwHIAMgBzYC2AcgACAJEIQCDAMLIANBmAZqIgIgA0EIakHAAfwKAAAgA0HYB2ogAhBqIAMoAtwHIQIgAygC2AciBUGAgICAeEYEQCACRQ0EDAoLIANBsANqIANB4AdqQeQC/AoAACADKALECiEOIAMoAsgKIQsgA0EAOgDgByADIAs2AtwHIAMgDjYC2AcgACADQdgHahCEAkGAgICAeCEKDAILIANBCGoQoAMgBSICDQgMAgsgA0EANgLoByADQQE2AtwHIANBqKPBADYC2AcgA0IENwLgByADQdgHahCSByECDAcLIAAoArAFIgQgAUELaiIHSQ0CIABBADYCsAUgBCAHRwRAIAQgB2siBARAIAAoAqwFIgEgASAHaiAE/AoAAAsgACAENgKwBQsgAEFAayEBAkACQAJAIAAoApwFQYCAgIB4aw4CAQIACyABEL4CDAELIAEQvQELIAAgAjYCRCAAIAU2AkAgAEHIAGogA0GwA2pB5AL8CgAAIAAgCzYCsAMgACAONgKsAyAAQbQDaiADQaACakGQAfwKAAAgACANNgLEBCAAQcgEaiADQcgBakHUAPwKAAAgACAsNwOgBSAAIAo2ApwFIAhBAXENACADQQhqEKADC0EAIQIgACgCnAUiAUGBgICAeEYNBQsgAEFAayESIAFBgICAgHhHDQEgACgCqAMiAiAAKAJITwRAIAAoArAFIQFB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DyADRQ0GIA8gDygCACgCABEDACADLQAQITggAygCDCE5IAJBgOHHAEELELkFIQMgBEEANgKoAyAEQQE2ApwDIARBqOHHADYCmAMgBEIENwKgAyAEQZgDahCVByEPIANFDQYgDyAPKAIAKAIAEQMAIAMtABAhOiADKAIMITtBCCEeQQghHyACQbDhxwBBBRC5BSICBEAgAigCDCE8IAItABAhHwsgBEEQakG14ccAQQUQuQUiAgRAIAIoAgwhPSACLQAQIR4LQQghGkEIISAgBEEQakG64ccAQQUQuQUiAgRAIAIoAgwhPiACLQAQISALIARBEGpBv+HHAEEFELkFIgIEQCACKAIMIT8gAi0AECEaC0EIISFBCCEiIARBEGpBxOHHAEEFELkFIgIEQCACKAIMIUAgAi0AECEiCyAEQRBqQcnhxwBBBRC5BSICBEAgAigCDCFBIAItABAhIQsgBEHIAGoiAkHO4ccAQQ8QuQUhAyAEQQA2AqgDIARBATYCnAMgBEGA4scANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgA0UNBSASIBIoAgAoAgARAwAgAy0AECFCIAMoAgwhQyACQYjixwBBDxC5BSEDIARBADYCqAMgBEEBNgKcAyAEQbjixwA2ApgDIARCBDcCoAMgBEGYA2oQlQchEiADRQ0FIBIgEigCACgCABEDACADLQAQIUQgAygCDCFFIAJBwOLHAEEMELkFIQMgBEEANgKoAyAEQQE2ApwDIARB7OLHADYCmAMgBEIENwKgAyAEQZgDahCVByESIANFDQUgEiASKAIAKAIAEQMAIAMtABAhRiADKAIMIUcgAkH04scAQQwQuQUhAiAEQQA2AqgDIARBATYCnAMgBEGg48cANgKYAyAEQgQ3AqADIARBmANqEJUHIRIgAkUNBSASIBIoAgAoAgARAwAgAUE4aiEcIAItABAhSCACKAIMIUkgASgCYEGAgICAeEYNByABKAJYICNHDQggBEHUAWqtQoCAgIAQhCFKQQAhEgNAAkAgBCASNgLUASAEQQE2ApwDIARBiNDHADYCmAMgBEIBNwKkAyAEIEo3A9gBIAQgBEHYAWo2AqADIARB0ANqIARBmANqELEGIBwgBCgC1AMiAyAEKALYAxC5BSAEKALQAyECRQ0AIAIEQCADIAJBARCiBwsgBCgC1AFBAWohEgwBCwsgAgRAIAMgAkEBEKIHCyAEKALUASIDIQ8CQAJAAkACQAJAAkAgAw4ZBQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAwALIANBLUYNAwsgBEEBNgKcAyAEQdzXxwA2ApgDIARCATcCpAMgBCBKNwPQAyAEIARB0ANqNgKgAyAEQeQBaiICIARBmANqELEGIAIQkAchAiAAQYCAgIB4NgIAIAAgAjYCBAwOC0EBIQ8MAgtBAiEPDAELQQMhDwsgBEHwAWohCkEAIQYCQAJAAkACQAJAIANB/////wFLDQAgA0EDdCICQf3///8HTw0AAkAgAkUEQEEEIQUMAQsgAyEGIAIQcSIFRQ0CCyADQQJJDQIgA0EBayIJQQdxIQcgBSECIANBAmtBB08EQCAJQXhxIQkDQCACQQA2AgAgAkE8akEBOgAAIAJBOGpBADYCACACQTRqQQE6AAAgAkEwakEANgIAIAJBLGpBAToAACACQShqQQA2AgAgAkEkakEBOgAAIAJBIGpBADYCACACQRxqQQE6AAAgAkEYakEANgIAIAJBFGpBAToAACACQRBqQQA2AgAgAkEMakEBOgAAIAJBCGpBADYCACACQQRqQQE6AAAgAkFAayECIAlBCGsiCQ0ACwsgB0UNAwNAIAJBADYCACACQQRqQQE6AAAgAkEIaiECIAdBAWsiBw0ACwwDC0Go48cAEP8HCwALIAUhAiADRQ0BCyACQQE6AAQgAkEANgIACyAKIAM2AgggCiAFNgIEIAogBjYCACABKAI4IgIpAwAhSiABKAI8IQMgBCABKAJENgKwAyAEIAI2AqgDIAQgAiADakEBajYCpAMgBCACQQhqNgKgAyAEIEpCf4VCgIGChIiQoMCAf4M3A5gDIAQoAvQBIQggBCgC+AEhCgJAA0ACQCAEQQhqIQZBACECIARBmANqIgMoAhgiBwR/AkAgAykDACJKUEUEQCADKAIQIQIMAQsgAygCECECIAMoAgghBQNAIAJBoAFrIQIgBSkDACAFQQhqIQVCgIGChIiQoMCAf4MiSkKAgYKEiJCgwIB/UQ0ACyADIAI2AhAgAyAFNgIIIEpCgIGChIiQoMCAf4UhSgsgAyAHQQFrNgIYIAMgSkIBfSBKgzcDACACIEp6p0EDdkFsbGoiA0EIayECIANBFGsFQQALIQMgBiACNgIEIAYgAzYCACAEKAIIIgJFDQAgBCgCDCEHIAIoAggiA0EHSQ0BQYDQxwAgAigCBCICQQcQ2wcNASAEQdADaiEGIAJBB2ohBQJAAkACQAJAAkACQAJAAkACQAJAIANBB2siAw4CAAECCyAGQQA6AAEMBwtBASECIAUtAABBK2sOAwQBBAELIAUtAABBK0YEQCADQQFrIQIgBUEBaiEFIANBCkkNAQwCCyADIgJBCU8NAQtBACEDA0AgBS0AAEEwayIJQQlLDQMgBUEBaiEFIAkgA0EKbGohAyACQQFrIgINAAsMAQtBACEDA0AgAkUNASAFLQAAQTBrIglBCUsNAiADrUIKfiJKQiCIpw0DIAVBAWohBSACQQFrIQIgCSBKp2oiAyAJTw0ACyAGQQI6AAEMAwsgBiADNgIEIAZBADoAAAwDCyAGQQE6AAEgBkEBOgAADAILIAZBAjoAAQsgBkEBOgAACyAELQDQAyAEKALUAyICIAQoAtQBT3INASACIApPDQIgBygCACEDIAggAkEDdGoiAiAHLQAEOgAEIAIgAzYCAAwBCwsgBEKAgICAMDcCqAJBACESIARBADYCkAIgBEEANgL8ASAEIAQoAtQBQQNuNgLYASAEIARB2AFqIhs2AqQCIARB3ANqIRYjAEEQayIMJAAgBEH8AWoiBygCLCECIAcoAgghBiAHKAIEIQogBygCACEDAkACQAJAAkACQEF/An8CQAJ/AkACQCAHKAIoIhcEQCAHKAIwIQUgA0EBcQRAIAYgCksNAyAHQQA2AgALIAIgBU8NASAHIAJBAWoiAzYCLCAHIBcoAgA2AhAgB0EBNgIAQQMhBiAHQQM2AgggByACNgIMQQAMAwsgA0EBcUUNACAGIApLDQEgB0EANgIACwJAIAcoAhRBAUcNACAHKAIYIgMgBygCHE8NAEEBIQUgByADQQFqNgIYIAcoAiAgBygCJCADbGohCSACIQNBACECDAMLIBZBADYCCCAWQoCAgIDAADcCAAwICyACIQMgCgshBUEBIQIgByAFQQFqIgo2AgQgBiAKayIJQQAgBiAJTxshECAHKAIMIAcoAhAgBWxqIQlBACAHKAIUIgVBAUcNARoLIAcoAhwiCCAHKAIYayILQQAgCCALTxsLIBBqIgggCCAQSRtBAWoiCEF/IAgbIghB/////wNLDQBBBCAIIAhBBE0bIghBAnQiC0H9////B08NACAHKAIwIRggCxBxIhFFDQEgESAJNgIAIAxBATYCDCAMIBE2AgggDCAINgIEIAcoAiQhGSAHKAIgIR0gBygCHCEVIAcoAhghCSAHKAIQIRQgBygCDCELIBdFBEAgBUUNA0EEIQ1BASEDIAYhByAKIRMgAiEIA0ACfwJAAkAgCEEBcUUEQCACIQUMAQtBACEFIAcgE0sNAQsgCSAVTw0HIAkgGWwgHWohECAJQQFqIQkgBSECQQAMAQsgEyAUbCALaiEQIBNBAWoiCiETQQELIQggDCgCBCADRgRAIAxBBGogA0F/IAYgCmsiBUEAIAUgBk0bIgUgFSAJayIIQQAgCCAVTRsiCGoiDiAFIA5LGyAIIAJBAXEiBRtBAWoiCEF/IAgbQQRBBBCkBSAKIBMgBRshEyAMKAIIIREgAiEIIAYgByAFGyEHCyANIBFqIBA2AgAgDCADQQFqIgM2AgwgDUEEaiENDAALAAsgBUUEQEEEIQhBASENIAYhBSACIQkDQCAJQQFxRSAFIApNcgR/IAMgGE8NBkEBIQIgFygCACEUQQMhBiADIQsgA0EBaiEDQQMhBUEABSAKCyEHQQEhCSAHQQFqIQogDCgCBCANRgRAIAxBBGogDSAGIAprIglBACAGIAlPG0EBakEBIAJBAXEiCRtBBEEEEKQFIAYgBSAJGyEFIAwoAgghESACIQkLIAggEWogByAUbCALajYCACAMIA1BAWoiDTYCDCAIQQRqIQgMAAsAC0EEIQhBASENIAYhDiAKIRAgAiEFA0ACfwJAAkACQCAFQQFxRQRAIAIhBwwBC0EAIQcgDiAQSw0BCyADIBhPDQFBASECIBcoAgAhFEEAIRBBAyEGIAMhCyADQQFqIQNBAyEOCyAQIBRsIAtqIRMgEEEBaiIKIRBBAQwBCyAJIBVPDQUgCSAZbCAdaiETIAlBAWohCSAHIQJBAAshBSAMKAIEIA1GBEAgDEEEaiANQX8gBiAKayIFQQAgBSAGTRsiBSAVIAlrIgdBACAHIBVNGyIHaiIRIAUgEUsbIAcgAkEBcSIFG0EBaiIHQX8gBxtBBEEEEKQFIAogECAFGyEQIAYgDiAFGyEOIAwoAgghESACIQULIAggEWogEzYCACAMIA1BAWoiDTYCDCAIQQRqIQgMAAsAC0Hg/8YAEP8HCwALIAJFDQAgBiAKayICQQAgAiAGTRshBSAKQQFqIQcgCyAKIBRsaiENQQQhCEEAIQMDQCADIAVGDQEgA0EBaiICIAwoAgRGBEAgDEEEaiACIAYgAyAHamsiCkEAIAYgCk8bQQFqIgpBfyAKG0EEQQQQpAUgDCgCCCERCyAIIBFqIA02AgAgDCADQQJqNgIMIA0gFGohDSAIQQRqIQggAiEDDAALAAsgFiAMKQIENwIAIBZBCGogDEEMaigCADYCAAsgDEEQaiQAIARCgICAgNAANwLcAiAEQQA2AsQCIARBADYCsAIgBCAbNgLYAiAEQegDaiEVQQAhCyMAQRBrIg4kACAEQbACaiIGKAIsIQIgBigCCCEKIAYoAgQhByAGKAIAIQMCQAJAAkACQAJAQX8CfwJAAn8CQAJAIAYoAigiFgRAIAYoAjAhBSADQQFxBEAgByAKSQ0DIAZBADYCAAsgAiAFTw0BIAYgAkEBaiIDNgIsIAYgFigCADYCECAGQQE2AgBBAyEKIAZBAzYCCCAGIAI2AgxBAAwDCyADQQFxRQ0AIAcgCkkNASAGQQA2AgALAkAgBigCFEEBRw0AIAYoAhgiAyAGKAIcTw0AQQEhBSAGIANBAWo2AhggBigCICAGKAIkIANsakEDaiEJIAIhA0EAIQIMAwsgFUEANgIIIBVCgICAgMAANwIADAgLIAIhAyAHCyEFQQEhAiAGIAVBAWoiBzYCBCAKIAdrIglBACAJIApNGyELIAYoAgwgBigCECAFbGpBA2ohCUEAIAYoAhQiBUEBRw0BGgsgBigCHCIIIAYoAhhrIhBBACAIIBBPGwsgC2oiCCAIIAtJG0EBaiIIQX8gCBsiCEH/////A0sNAEEEIAggCEEETRsiCEECdCILQf3///8HTw0AIAYoAjAhFyALEHEiDUUNASANIAk2AgAgDkEBNgIMIA4gDTYCCCAOIAg2AgQgBigCIEEDaiEYIAYoAiQhGSAGKAIcIRQgBigCGCEJIAYoAhAhESAGKAIMIQYgFkUEQCAFRQ0DIAZBA2ohE0EEIQxBASEDIAohECAHIQUgAiEIA0ACfwJAAkAgCEEBcUUEQCACIQYMAQtBACEGIAUgEEkNAQsgCSAUTw0HIBggCSAZbGohCyAJQQFqIQkgBiECQQAMAQsgEyAFIBFsaiELIAVBAWoiByEFQQELIQggDigCBCADRgRAIA5BBGogA0F/IAogB2siBkEAIAYgCk0bIgYgFCAJayIIQQAgCCAUTRsiCGoiDSAGIA1LGyAIIAJBAXEiBhtBAWoiCEF/IAgbQQRBBBCkBSAKIBAgBhshECAOKAIIIQ0gAiEIIAcgBSAGGyEFCyAMIA1qIAs2AgAgDiADQQFqIgM2AgwgDEEEaiEMDAALAAsgBUUEQEEEIQhBASEMIAohBSACIQkDQCAJQQFxRSAFIAdNcgR/IAMgF08NBkEBIQIgFigCACERQQMhCiADIgZBAWohA0EDIQVBAAUgBwshC0EBIQkgC0EBaiEHIA4oAgQgDEYEQCAOQQRqIAwgCiAHayIJQQAgCSAKTRtBAWpBASACQQFxIgkbQQRBBBCkBSAKIAUgCRshBSAOKAIIIQ0gAiEJCyAIIA1qIAYgCyARbGpBA2o2AgAgDiAMQQFqIgw2AgwgCEEEaiEIDAALAAtBBCEIQQEhDCAKIRMgByELIAIhBQNAAn8CQAJAAkAgBUEBcUUEQCACIQUMAQtBACEFIAsgE0kNAQsgAyAXTw0BQQEhAiAWKAIAIRFBACELQQMhCiADIgZBAWohA0EDIRMLIAYgCyARbGpBA2ohECALQQFqIgchC0EBDAELIAkgFE8NBSAYIAkgGWxqIRAgCUEBaiEJIAUhAkEACyEFIA4oAgQgDEYEQCAOQQRqIAxBfyAKIAdrIgVBACAFIApNGyIFIBQgCWsiDUEAIA0gFE0bIg1qIh0gBSAdSxsgDSACQQFxIgUbQQFqIg1BfyANG0EEQQQQpAUgByALIAUbIQsgCiATIAUbIRMgDigCCCENIAIhBQsgCCANaiAQNgIAIA4gDEEBaiIMNgIMIAhBBGohCAwACwALQeD/xgAQ/wcLAAsgAkUNACAKIAdrIgJBACACIApNGyEFIAdBAWohCSAGIAcgEWxqQQNqIQxBBCEIQQAhAwNAIAMgBUYNASADQQFqIgIgDigCBEYEQCAOQQRqIAIgCiADIAlqayIGQQAgBiAKTRtBAWoiBkF/IAYbQQRBBBCkBSAOKAIIIQ0LIAggDWogDDYCACAOIANBAmo2AgwgDCARaiEMIAhBBGohCCACIQMMAAsACyAVIA4pAgQ3AgAgFUEIaiAOQQxqKAIANgIACyAOQRBqJAAgBEKAgICA8AA3ApADIARBADYC+AIgBEEANgLkAiAEIBs2AowDIARB9ANqIRVBACELIwBBEGsiDiQAIARB5AJqIgYoAiwhAiAGKAIIIQogBigCBCEHIAYoAgAhAwJAAkACQAJAAkBBfwJ/AkACfwJAAkAgBigCKCIWBEAgBigCMCEFIANBAXEEQCAHIApJDQMgBkEANgIACyACIAVPDQEgBiACQQFqIgM2AiwgBiAWKAIANgIQIAZBATYCAEEDIQogBkEDNgIIIAYgAjYCDEEADAMLIANBAXFFDQAgByAKSQ0BIAZBADYCAAsCQCAGKAIUQQFHDQAgBigCGCIDIAYoAhxPDQBBASEFIAYgA0EBajYCGCAGKAIgIAYoAiQgA2xqQQhqIQkgAiEDQQAhAgwDCyAVQQA2AgggFUKAgICAwAA3AgAMCAsgAiEDIAcLIQVBASECIAYgBUEBaiIHNgIEIAogB2siCUEAIAkgCk0bIQsgBigCDCAGKAIQIAVsakEIaiEJQQAgBigCFCIFQQFHDQEaCyAGKAIcIgggBigCGGsiEEEAIAggEE8bCyALaiIIIAggC0kbQQFqIghBfyAIGyIIQf////8DSw0AQQQgCCAIQQRNGyIIQQJ0IgtB/f///wdPDQAgBigCMCEXIAsQcSINRQ0BIA0gCTYCACAOQQE2AgwgDiANNgIIIA4gCDYCBCAGKAIgQQhqIRsgBigCJCEYIAYoAhwhFCAGKAIYIQkgBigCECERIAYoAgwhBiAWRQRAIAVFDQMgBkEIaiETQQQhDEEBIQMgCiEQIAchBSACIQgDQAJ/AkACQCAIQQFxRQRAIAIhBgwBC0EAIQYgBSAQSQ0BCyAJIBRPDQcgGyAJIBhsaiELIAlBAWohCSAGIQJBAAwBCyATIAUgEWxqIQsgBUEBaiIHIQVBAQshCCAOKAIEIANGBEAgDkEEaiADQX8gCiAHayIGQQAgBiAKTRsiBiAUIAlrIghBACAIIBRNGyIIaiINIAYgDUsbIAggAkEBcSIGG0EBaiIIQX8gCBtBBEEEEKQFIAogECAGGyEQIA4oAgghDSACIQggByAFIAYbIQULIAwgDWogCzYCACAOIANBAWoiAzYCDCAMQQRqIQwMAAsACyAFRQRAQQQhCEEBIQwgCiEFIAIhCQNAIAlBAXFFIAUgB01yBH8gAyAXTw0GQQEhAiAWKAIAIRFBAyEKIAMiBkEBaiEDQQMhBUEABSAHCyELQQEhCSALQQFqIQcgDigCBCAMRgRAIA5BBGogDCAKIAdrIglBACAJIApNG0EBakEBIAJBAXEiCRtBBEEEEKQFIAogBSAJGyEFIA4oAgghDSACIQkLIAggDWogBiALIBFsakEIajYCACAOIAxBAWoiDDYCDCAIQQRqIQgMAAsAC0EEIQhBASEMIAohEyAHIQsgAiEFA0ACfwJAAkACQCAFQQFxRQRAIAIhBQwBC0EAIQUgCyATSQ0BCyADIBdPDQFBASECIBYoAgAhEUEAIQtBAyEKIAMiBkEBaiEDQQMhEwsgBiALIBFsakEIaiEQIAtBAWoiByELQQEMAQsgCSAUTw0FIBsgCSAYbGohECAJQQFqIQkgBSECQQALIQUgDigCBCAMRgRAIA5BBGogDEF/IAogB2siBUEAIAUgCk0bIgUgFCAJayINQQAgDSAUTRsiDWoiGSAFIBlLGyANIAJBAXEiBRtBAWoiDUF/IA0bQQRBBBCkBSAHIAsgBRshCyAKIBMgBRshEyAOKAIIIQ0gAiEFCyAIIA1qIBA2AgAgDiAMQQFqIgw2AgwgCEEEaiEIDAALAAtB4P/GABD/BwsACyACRQ0AIAogB2siAkEAIAIgCk0bIQUgB0EBaiEJIAYgByARbGpBCGohDEEEIQhBACEDA0AgAyAFRg0BIANBAWoiAiAOKAIERgRAIA5BBGogAiAKIAMgCWprIgZBACAGIApNG0EBaiIGQX8gBhtBBEEEEKQFIA4oAgghDQsgCCANaiAMNgIAIA4gA0ECajYCDCAMIBFqIQwgCEEEaiEIIAIhAwwACwALIBUgDikCBDcCACAVQQhqIA5BDGooAgA2AgALIA5BEGokACAEQdgDaiICIARB+AFqKAIANgIAIARBqANqIARB4ANq/QADAP0LAwAgBEG4A2ogBEHwA2r9AAMA/QsDACAEQaADaiACKQMANwMAIAQgBCkC8AE3A5gDIAQgBCgC1AE2AsgDIARBlAFqIQICQCAEQZgDaiIDKAIAIgVBgICAgHhHBEAgAygCKCEGIAMoAiQhCiADKAIcIQcgAygCGCEJIAMoAhAhCCADKAIMIQsgAygCBCEQIA9FBEAgBQRAIBBBBGsoAgAiA0F4cSITIAVBA3QiBUEEQQggA0EDcSIDG2pJDRIgA0EAIBMgBUEnaksbDRMgEBCiAgsgCwRAIAhBBGsoAgAiA0F4cSIFIAtBAnQiC0EEQQggA0EDcSIDG2pJDRIgA0EAIAUgC0EnaksbDRMgCBCiAgsgCQRAIAdBBGsoAgAiA0F4cSIFIAlBAnQiCUEEQQggA0EDcSIDG2pJDRIgA0EAIAUgCUEnaksbDRMgBxCiAgsgCgRAIAZBBGsoAgAiA0F4cSIFIApBAnQiCkEEQQggA0EDcSIDG2pJDRIgA0EAIAUgCkEnaksbDRMgBhCiAgsgAkGAgICAeDYCAAwCCyACIAY2AiggAiAKNgIkIAIgBzYCHCACIAk2AhggAiAINgIQIAIgCzYCDCACIBA2AgQgAiAFNgIAIAIgAykCLDcCLCACIAMoAiA2AiAgAiADKAIUNgIUIAIgAygCCDYCCAwBCyACQYCAgIB4NgIADAALIAQoApQBQYCAgIB4Rg0KIAQoAsQBIgJBCWsOEAMKCgoKCgoKCgoKCgoKCgQCCyACIApBuOPHABCMBwALIARBAjYCnAMgBEHA5McANgKYAyAEQgI3AqQDIAQgBEGEAWqtQoCAgIAQhDcD2AMgBCAEQTBqrUKAgICAEIQ3A9ADIAQgBEHQA2o2AqADIARBiAFqIgIgBEGYA2oQ7AMgAhCQByECIABBgICAgHg2AgAgACACNgIEDAkLIAJBLUYNAgwHC0EBIRIMBgtBAiESDAULQQMhEgwECyAAQYCAgIB4NgIAIAAgEjYCBAwECyAAQYCAgIB4NgIAIAAgDzYCBAwDCyAEQYCAgIB4NgKUAUEAIRIMAQsgBEEDNgKcAyAEQfjjxwA2ApgDIARCAjcCpAMgBCAGrUKAgICAEIQ3A9gDIAQgAUHYAGqtQoCAgIAQhDcD0AMgBCAEQdADajYCoAMgBEHIAWoiAiAEQZgDahCxBiACEJAHIQIgAEGAgICAeDYCACAAIAI2AgQMAQsgBCABKAKsATYCiAQgBCABKAKwASICNgKEBCAEIAI2AoAEIAQgAiABKAK0AUE4bGo2AowEIARBmANqIQZBACEKIARBgARqIgEoAgwiCSABKAIEIgNrIgJBOG4hBwJAAkACQCACQcj///99Sw0AIAdBBnQiAkH5////B08NAAJAIAJFBEBBCCECQQAhBwwBCyACEHEiAkUNAgsgASgCCCEIIAEoAgAhCyADIAlHBEAgAiEBA0AgA0E0aigCACEQIANBLGooAgAhBQJ/AkACQAJAAkAgA0EwaigCACITQQJrDgUCAwMAAQMLIAVBjNPHAEEFENsHDQJBAAwDCyAFQejSxwBBBhDbBw0BQQEMAgsgBS8AAEHz0AFHDQBBAgwBC0EDCyEOIANBEGr9AAMAIU0gA0EgaikDACFKIAP9AAMAIU4gAUEoaiADQShqKAIANgIAIAFBIGogSjcDACABQRBqIE39CwMAIAEgTv0LAwAgAUE8aiAOOgAAIAFBOGpBADYCACABQTRqIBA2AgAgAUEwaiATNgIAIAFBLGogBTYCACABQUBrIQEgCkEBaiEKIANBOGoiAyAJRw0ACwsgCARAIAtBBGsoAgAiAUF4cSIDIAhBOGwiBUEEQQggAUEDcSIBG2pJDQcgAUEAIAMgBUEnaksbDQggCxCiAgsgBiAKNgIIIAYgAjYCBCAGIAc2AgAMAgtByJXHABD/BwsACyAAQgQ3AnwgAEIANwJ0IABCgICAgMAANwJsIABCBDcCZCAAQgA3AlwgAEKAgICAwAA3AlQgAEIENwJMIABCADcCRCAAQoCAgIDAADcCPCAAQgQ3AjQgAEIANwIsIABCgICAgMAANwIkIABCBDcCHCAAQgA3AhQgAEKAgICAwAA3AgwgAEEIaiAEQaADaigCADYCACAAIAQpApgDNwIAIAAgQzYCuAEgACBFNgLAASAAIEc2AsgBIAAgSTYC0AEgACA8NgLYASAAID02AuABIAAgPjYC6AEgACA/NgLwASAAIEA2AvgBIAAgQTYCgAIgACAlNgKIAiAAICc2ApACIAAgKTYCmAIgACArNgKgAiAAIC02AqgCIAAgLzYCsAIgACAxNgK4AiAAIDM2AsACIAAgNTYCyAIgACA3NgLQAiAAIDk2AtgCIAAgOzYC4AIgAEEANgLoAiAAICM2AuwCIAAgEjYC8AIgACA6OgDkAiAAIDg6ANwCIAAgNjoA1AIgACA0OgDMAiAAIDI6AMQCIAAgMDoAvAIgACAuOgC0AiAAICw6AKwCIAAgKjoApAIgACAoOgCcAiAAICY6AJQCIAAgJDoAjAIgACAhOgCEAiAAICI6APwBIAAgGjoA9AEgACAgOgDsASAAIB46AOQBIAAgHzoA3AEgACBIOgDUASAAIEY6AMwBIAAgRDoAxAEgACBCOgC8ASAAQbQBaiAEQcQBaigCADYCACAAQaQBaiAEQbQBav0AAgD9CwIAIABBlAFqIARBpAFq/QACAP0LAgAgACAE/QAClAH9CwKEASAEQcgAahD7BiAEQRBqEPsGAkAgHCgCKCIAQYCAgIB4RwRAIAAEQCAcKAIsIgFBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIABqSQ0GIAJBACADIABBJ2pLGw0HIAEQogILIBwQvwQLDAALDAILIAQoAnAiAARAIAQoAnQiAkEEaygCACIDQXhxIgVBBEEIIANBA3EiAxsgAGpJDQMgA0EAIAUgAEEnaksbDQQgAhCiAgsgBEHIAGoQvwQgBCgCOCIABEAgBCgCPCICQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyAAakkNAyADQQAgBSAAQSdqSxsNBCACEKICCyAEQRBqEL8EIAEoArABIQIgASgCtAEiEgRAIAIhAANAIABBKGooAgAiAwRAIABBLGooAgAiBUEEaygCACIGQXhxIgpBBEEIIAZBA3EiBhsgA2pJDQUgBkEAIAogA0EnaksbDQYgBRCiAgsgABC/BCAAQThqIQAgEkEBayISDQALCyABKAKsASIARQ0AIAJBBGsoAgAiA0F4cSIFIABBOGwiAEEEQQggA0EDcSIDG2pJDQIgA0EAIAUgAEEnaksbDQMgAhCiAgsgASgCYCIAQYCAgIB4Rg0AIAAEQCABKAJkIgJBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0CIANBACAFIABBJ2pLGw0DIAIQogILIAFBOGoQvwQLIARBkARqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAuRLwI3ext/AkACQAJAAkACQAJAAkACQCABQQJLBEAgA0UNASAFRQ0CIAdFDQMgCUUNBCALRQ0FIABB/wEgAi0AAEGFlQFsQQh2IkUgBi0AACJEIAQtAAAiSEEMbGogREEDbGpBCGpBBHYiS0GaggJsQQh2akGVigFrQQZ1IkZBACBGQQBKGyJGIEZB/wFOGzoAAiAAQf8BIEUgCi0AACJGIAgtAAAiUUEMbGogRkEDbGpBCGpBBHYiTkGlzAFsQQh2akGa7wBrQQZ1IkNBACBDQQBKGyJDIENB/wFOGzoAACAAQf8BIEUgS0GTMmxBCHYgTkGI6ABsQQh2amtBhMQAakEGdSJFQQAgRUEAShsiRSBFQf8BThs6AAEgAkEBaiFLIANBAWsiA0F+cSFVIABBA2ohRSADQQFxIVsgAUEDayIBIAFBBnAiWGsiTkEGSQ0IIANBAXYiAyIBIE5BBmsiT0EGbiJDIAEgQ0kbIgEgC0EBayJHIkMgASBDSRsiASAJQQFrIkkiQyABIENJGyIBIAdBAWsiTCJDIAEgQ0kbIgEgBUEBayJQIkMgASBDSRsiQ0EQSQ0GIEUgAiADIgEgT0EGbiIDIAEgA0kbIgEgRyIDIAEgA0kbIgEgSSIDIAEgA0kbIgEgTCIDIAEgA0kbIgEgUCIDIAEgA0kbIgFBAXRqQQNqSSBLIAAgAUEGbGpBCWoiAElxDQYgRSAEIAFBAmoiAWpJIARBAWoiRyAASXEgRSABIAZqSSAAIAZLcXIgRSABIAhqSSAIQQFqIkwgAElxIEUgASAKakkgACAKS3Fycg0GIENBAWoiAEEPcSIBQRAgARsiASBDQX9zaiFKIAogACABayIAaiFZIAsgAGshQyAJIABrIU8gACAIaiFJIAcgAGshUCAAIAZqIVogBSAAayFSIAAgBGohUyBLIABBAXQiAWohAyBVIAFrIVQgRSAAQQZsaiECIE4gAEF6bGohViBI/Q8hFiBE/Q8hEyBR/Q8hFSBG/Q8hDCAGIUYgCiFIIEUhACBLIQEDQCAAIAH9AAAAIh8gFf0NAAIEBgAAAAAAAAAAAAAAAP2JAf2pAf0MhUoAAIVKAACFSgAAhUoAACIU/bUBQQj9rQEiKiAVIEz9AAAAIhX9DQ8QERITFBUWFxgZGhscHR79iQH9qQEiJf0MCQAAAAkAAAAJAAAACQAAACIN/bUBIEhBAWr9AAAAIhn9iQH9qQEiJv2uASAMIBn9DQ8QERITFBUWFxgZGhscHR79iQH9qQEgFf2JAf2pASIn/a4B/QwDAAAAAwAAAAMAAAADAAAAIg/9tQH9rgH9DAgAAAAIAAAACAAAAAgAAAAiEP2uAUEE/a0BIhj9DCVmAAAlZgAAJWYAACVmAAAiGv21AUEI/a0B/a4B/QxmyP//Zsj//2bI//9myP//Ihv9rgFBBv2sAf0MAAAAAAAAAAAAAAAAAAAAACIM/bgB/Qz/AAAA/wAAAP8AAAD/AAAAIg79tgEgHyAM/Q0ICgwOAAAAAAAAAAAAAAAA/YkB/akBIBT9tQFBCP2tASIrIBUgDP0NAwQFBgAAAAAAAAAAAAAAAP2JAf2pASItIA39tQEgGSAM/Q0EBQYHAAAAAAAAAAAAAAAA/YkB/akBIi79rgEgGSAM/Q0DBAUGAAAAAAAAAAAAAAAA/YkB/akBIBUgDP0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pASIv/a4BIA/9tQH9rgEgEP2uAUEE/a0BIhEgGv21AUEI/a0B/a4BIBv9rgFBBv2sASAM/bgBIA79tgH9DQAECAwQFBgcAAAAAAAAAAAgAf0AABAiICAM/Q0AAgQGAAAAAAAAAAAAAAAA/YkB/akBIBT9tQFBCP2tASIsIBUgDP0NBwgJCgAAAAAAAAAAAAAAAP2JAf2pASIwIA39tQEgGSAM/Q0ICQoLAAAAAAAAAAAAAAAA/YkB/akBIjH9rgEgGSAM/Q0HCAkKAAAAAAAAAAAAAAAA/YkB/akBIBUgDP0NCAkKCwAAAAAAAAAAAAAAAP2JAf2pASIy/a4BIA/9tQH9rgEgEP2uAUEE/a0BIhwgGv21AUEI/a0B/a4BIBv9rgFBBv2sASAM/bgBIA79tgEiEv0bAP0XCCAS/RsB/RcJIBL9GwL9FwogEv0bA/0XCyAgIAz9DQgKDA4AAAAAAAAAAAAAAAD9iQH9qQEgFP21AUEI/a0BIhcgFSAM/Q0LDA0OAAAAAAAAAAAAAAAA/YkB/akBIiEgDf21ASAZIAz9DQwNDg8AAAAAAAAAAAAAAAD9iQH9qQEiI/2uASAZIAz9DQsMDQ4AAAAAAAAAAAAAAAD9iQH9qQEgFSAM/Q0MDQ4PAAAAAAAAAAAAAAAA/YkB/akBIh39rgEgD/21Af2uASAQ/a4BQQT9rQEiJCAa/bUBQQj9rQH9rgEgG/2uAUEG/awBIAz9uAEgDv22ASIS/RsA/RcMIBL9GwH9Fw0gEv0bAv0XDiAS/RsD/RcPIiIgKiAWIEf9AAAAIhb9DQ8QERITFBUWFxgZGhscHR79iQH9qQEiKCAN/bUBIEZBAWr9AAAAIhL9iQH9qQEiM/2uASATIBL9DQ8QERITFBUWFxgZGhscHR79iQH9qQEgFv2JAf2pASI0/a4BIA/9tQH9rgEgEP2uAUEE/a0BIjX9DBMZAAATGQAAExkAABMZAAAiE/21AUEI/a0BIBj9DAg0AAAINAAACDQAAAg0AAAiGP21AUEI/a0B/a4B/bEB/QwEIgAABCIAAAQiAAAEIgAAIh79rgFBBv2sASAM/bgBIA79tgEgKyAWIAz9DQMEBQYAAAAAAAAAAAAAAAD9iQH9qQEiNiAN/bUBIBIgDP0NBAUGBwAAAAAAAAAAAAAAAP2JAf2pASI3/a4BIBIgDP0NAwQFBgAAAAAAAAAAAAAAAP2JAf2pASAWIAz9DQQFBgcAAAAAAAAAAAAAAAD9iQH9qQEiOP2uASAP/bUB/a4BIBD9rgFBBP2tASI5IBP9tQFBCP2tASARIBj9tQFBCP2tAf2uAf2xASAe/a4BQQb9rAEgDP24ASAO/bYB/Q0ABAgMEBQYHAAAAAAAAAAAICwgFiAM/Q0HCAkKAAAAAAAAAAAAAAAA/YkB/akBIjogDf21ASASIAz9DQgJCgsAAAAAAAAAAAAAAAD9iQH9qQEiO/2uASASIAz9DQcICQoAAAAAAAAAAAAAAAD9iQH9qQEgFiAM/Q0ICQoLAAAAAAAAAAAAAAAA/YkB/akBIjz9rgEgD/21Af2uASAQ/a4BQQT9rQEiPSAT/bUBQQj9rQEgHCAY/bUBQQj9rQH9rgH9sQEgHv2uAUEG/awBIAz9uAEgDv22ASIR/RsA/RcIIBH9GwH9FwkgEf0bAv0XCiAR/RsD/RcLIBcgFiAM/Q0LDA0OAAAAAAAAAAAAAAAA/YkB/akBIj4gDf21ASASIAz9DQwNDg8AAAAAAAAAAAAAAAD9iQH9qQEiP/2uASASIAz9DQsMDQ4AAAAAAAAAAAAAAAD9iQH9qQEgFiAM/Q0MDQ4PAAAAAAAAAAAAAAAA/YkB/akBIkD9rgEgD/21Af2uASAQ/a4BQQT9rQEiKSAT/bUBQQj9rQEgJCAY/bUBQQj9rQH9rgH9sQEgHv2uAUEG/awBIAz9uAEgDv22ASIR/RsA/RcMIBH9GwH9Fw0gEf0bAv0XDiAR/RsD/RcPIhz9DQAAAAAOHgAAAAAPHwAAAAAgFyAp/QwagQAAGoEAABqBAAAagQAAIhH9tQFBCP2tAf2uAf0M67r//+u6///ruv//67r//yIX/a4BQQb9rAEgDP24ASAO/bYBIikgICAM/Q0JCw0PAAAAAAAAAAAAAAAA/YkB/akBIBT9tQFBCP2tASIkIB0gDf21ASBI/QAAACIdIAz9DQwNDg8AAAAAAAAAAAAAAAD9iQH9qQH9rgEgIyAh/a4BIA/9tQH9rgEgEP2uAUEE/a0BIkEgGv21AUEI/a0B/a4BIBv9rgFBBv2sASAM/bgBIA79tgEiQv0NBBQAAAAACBgAAAAADBwAAP0NEBEAAAQFFhcAAAoLHB0AACAfIAz9DQEDBQcAAAAAAAAAAAAAAAD9iQH9qQEgFP21AUEI/a0BIiMgNCAN/bUBIEb9AAAAIiH9iQH9qQH9rgEgMyAo/a4BIA/9tQH9rgEgEP2uAUEE/a0BIiggE/21AUEI/a0BICcgDf21ASAd/YkB/akB/a4BICYgJf2uASAP/bUB/a4BIBD9rgFBBP2tASIlIBj9tQFBCP2tAf2uAf2xASAe/a4BQQb9rAEgDP24ASAO/bYBIB8gDP0NCQsNDwAAAAAAAAAAAAAAAP2JAf2pASAU/bUBQQj9rQEiHyA4IA39tQEgISAM/Q0EBQYHAAAAAAAAAAAAAAAA/YkB/akB/a4BIDcgNv2uASAP/bUB/a4BIBD9rgFBBP2tASImIBP9tQFBCP2tASAvIA39tQEgHSAM/Q0EBQYHAAAAAAAAAAAAAAAA/YkB/akB/a4BIC4gLf2uASAP/bUB/a4BIBD9rgFBBP2tASInIBj9tQFBCP2tAf2uAf2xASAe/a4BQQb9rAEgDP24ASAO/bYB/YYBICAgDP0NAQMFBwAAAAAAAAAAAAAAAP2JAf2pASAU/bUBQQj9rQEiFCA8IA39tQEgISAM/Q0ICQoLAAAAAAAAAAAAAAAA/YkB/akB/a4BIDsgOv2uASAP/bUB/a4BIBD9rgFBBP2tASIgIBP9tQFBCP2tASAyIA39tQEgHSAM/Q0ICQoLAAAAAAAAAAAAAAAA/YkB/akB/a4BIDEgMP2uASAP/bUB/a4BIBD9rgFBBP2tASIdIBj9tQFBCP2tAf2uAf2xASAe/a4BQQb9rAEgDP24ASAO/bYBICQgQCAN/bUBICEgDP0NDA0ODwAAAAAAAAAAAAAAAP2JAf2pAf2uASA/ID79rgEgD/21Af2uASAQ/a4BQQT9rQEiDSAT/bUBQQj9rQEgQSAY/bUBQQj9rQH9rgH9sQEgHv2uAUEG/awBIAz9uAEgDv22Af2GAf1mIhP9DQABHQAEBQYHHgAKCwwNHwAgIyAoIBH9tQFBCP2tAf2uASAX/a4BQQb9rAEgDP24ASAO/bYBIB8gJiAR/bUBQQj9rQH9rgEgF/2uAUEG/awBIAz9uAEgDv22Af2GASAUICAgEf21AUEI/a0B/a4BIBf9rgFBBv2sASAM/bgBIA79tgEgJCANIBH9tQFBCP2tAf2uASAX/a4BQQb9rAEgDP24ASAO/bYB/YYB/WYiDf0NAAECHQQFBgcIHgoLDA0OH/0LAFAgACAiIBz9DQAACxsAAAAADBwAAAAADR0gLCA9IBH9tQFBCP2tAf2uASAX/a4BQQb9rAEgDP24ASAO/bYBIg8gFCAdIBr9tQFBCP2tAf2uASAb/a4BQQb9rAEgDP24ASAO/bYBIhD9DQAAAAAMHAAAAAAAAAAAAAAgKf0bAP0XCiBC/RsA/RcL/Q0AAAIDFBUAAAgJGhsAAA4PIBP9DRoAAgMEBRsACAkKCxwADg8gDf0NABoCAwQFBhsICQoLDBwOD/0LAEAgACAiIBz9DQgYAAAAAAkZAAAAAAoaAAAgDyAQ/Q0AAAAQAAAAAAQUAAAAAAgY/Q0AARITAAAGBxgZAAAMDR4fIBP9DQABAgMYAAYHCAkZAAwNDg8gDf0NAAECAwQYBgcICQoZDA0OD/0LADAgACAiIBz9DQAAAAAGFgAAAAAHFwAAAAAgKyA5IBH9tQFBCP2tAf2uASAX/a4BQQb9rAEgDP24ASAO/bYBIg8gHyAnIBr9tQFBCP2tAf2uASAb/a4BQQb9rAEgDP24ASAO/bYBIhD9DQQUAAAAAAgYAAAAAAwcAAD9DRARAAAEBRYXAAAKCxwdAAAgE/0NAAEVAAQFBgcWAAoLDA0XACAN/Q0AAQIVBAUGBwgWCgsMDQ4X/QsAICAAICIgHP0NAAADEwAAAAAEFAAAAAAFFSAqIDUgEf21AUEI/a0B/a4BIBf9rgFBBv2sASAM/bgBIA79tgEiFCAjICUgGv21AUEI/a0B/a4BIBv9rgFBBv2sASAM/bgBIA79tgEiDP0NAAAAAAwcAAAAAAAAAAAAACAP/RsA/RcKIBD9GwD9Fwv9DQAAAgMUFQAACAkaGwAADg8gE/0NEgACAwQFEwAICQoLFAAODyAN/Q0AEgIDBAUGEwgJCgsMFA4P/QsAECAAICIgHP0NABAAAAAAAREAAAAAAhIAACAUIAz9DQAAABAAAAAABBQAAAAACBj9DQABEhMAAAYHGBkAAAwNHh8gE/0NAAECAxAABgcICREADA0ODyAN/Q0AAQIDBBAGBwgJChEMDQ4P/QsAACBGQRBqIUYgSEEQaiFIIABB4ABqIQAgAUEgaiEBIEdBEGohRyBMQRBqIUwgGSEMIBIhEyBKQRBqIkoNAAsgFv0WDyFIIBL9Fg8hRCAV/RYPIVEgDP0WDyFGDAcLQQBBAyABQYjsxAAQ6gcAC0EAQQBBmOzEABCMBwALQQBBAEGo7MQAEIwHAAtBAEEAQbjsxAAQjAcAC0EAQQBByOzEABCMBwALQQBBAEHY7MQAEIwHAAsgBCFTIAUhUiAGIVogByFQIAghSSAJIU8gCyFDIAohWSBOIVYgRSECIFUhVCBLIQMLIElBAWohTCBTQQFqIVNBACEAA0AgVEUgUkECSXIgUEECSSBPQQJJcnIgQ0EBTXINASACQQJqQf8BIAMtAABBhZUBbEEIdiJJIAAgWmoiR0EBai0AACIBIEhB/wFxIkpBCWxqIAAgU2otAAAiSCBEQf8BcWpBA2xqQQhqQQR2IkRBmoICbEEIdmpBlYoBa0EGdSJNQQAgTUEAShsiTSBNQf8BThs6AAAgRkH/AXEhTSACQf8BIEkgACBZaiJcQQFqLQAAIkYgUUH/AXEiXUEJbGogTSAAIExqLQAAIlFqQQNsakEIakEEdiJNQaXMAWxBCHZqQZrvAGtBBnUiV0EAIFdBAEobIlcgV0H/AU4bOgAAIAJBAWpB/wEgSSBEQZMybEEIdiBNQYjoAGxBCHZqa0GExABqQQZ1IkRBACBEQQBKGyJEIERB/wFOGzoAACACQQVqQf8BIANBAWotAABBhZUBbEEIdiJEIEctAAAgSEEJbGogASBKakEDbGpBCGpBBHYiSUGaggJsQQh2akGVigFrQQZ1IkdBACBHQQBKGyJHIEdB/wFOGzoAACACQQNqQf8BIEQgXC0AACBRQQlsaiBGIF1qQQNsakEIakEEdiJHQaXMAWxBCHZqQZrvAGtBBnUiSkEAIEpBAEobIkogSkH/AU4bOgAAIAJBBGpB/wEgRCBJQZMybEEIdiBHQYjoAGxBCHZqa0GExABqQQZ1IkRBACBEQQBKGyJEIERB/wFOGzoAACADQQJqIQMgVEECayFUIFJBAWshUiAAQQFqIQAgQ0EBayFDIE9BAWshTyBQQQFrIVAgASFEIAJBBmohAiBWQQZrIlZBBk8NAAsLAkACQAJAAkACQCBbBEAgBCAFakEBayICRQ0BIAYgB2pBAWsiA0UNAiAIIAlqQQFrIgBFDQMgCiALakEBayIERQ0EIFhBAk0NBSAALQAAIQUgRSBOaiIAQf8BIEsgVWotAABBhZUBbEEIdiIBIAMtAAAiAyACLQAAQQxsaiADQQNsakEIakEEdiICQZqCAmxBCHZqQZWKAWtBBnUiA0EAIANBAEobIgMgA0H/AU4bOgACIABB/wEgASAELQAAIgMgBUEMbGogA0EDbGpBCGpBBHYiA0GlzAFsQQh2akGa7wBrQQZ1IgRBACAEQQBKGyIEIARB/wFOGzoAACAAQf8BIAEgAkGTMmxBCHYgA0GI6ABsQQh2amtBhMQAakEGdSIAQQAgAEEAShsiACAAQf8BThs6AAELDwtB6OzEABDdCQALQfjsxAAQ3QkAC0GI7cQAEN0JAAtBmO3EABDdCQALQQBBAyBYQajtxAAQ6gcAC6MfARR/An8CQCACIANLBEAgASADQSpsaiIDLwEAIgJB//8BcUUEQCACQRB0DAMLIAJB/wdxIQEgAkGAgAJxIQUgAkGA+AFxIgJBgPgBRgRAIAVBEHQhAiACQYCAgPwHciABRQ0DGiACIAFBDXRyQYCAgP4HcgwDCyAFQRB0IQUgAkUNASACQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBXIMAgsgAyACQZTBxwAQjAcACyAFQYCAgNgDciABZ0EQayICQRd0ayABIAJB//8DcUEIanRB////A3FyCyEBAn8gAy8BAiIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSECIAVBgIACcSEGIAVBgPgBcSIFQYD4AUYEQCAGQRB0IQUgBUGAgID8B3IgAkUNARogBSACQQ10ckGAgID+B3IMAQsgBkEQdCEGIAVBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAGciAFDQAaIAZBgICA2ANyIAJnQRBrIgVBF3RrIAIgBUH//wNxQQhqdEH///8DcXILIQUCfyADLwEEIgZB//8BcUUEQCAGQRB0DAELIAZB/wdxIQIgBkGAgAJxIQcgBkGA+AFxIgZBgPgBRgRAIAdBEHQhBiAGQYCAgPwHciACRQ0BGiAGIAJBDXRyQYCAgP4HcgwBCyAHQRB0IQcgBkENdEGAgID8AHEgAkENdHJBgICAwANqIAdyIAYNABogB0GAgIDYA3IgAmdBEGsiBkEXdGsgAiAGQf//A3FBCGp0Qf///wNxcgshBgJ/IAMvAQYiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhAiAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCEHIAdBgICA/AdyIAJFDQEaIAcgAkENdHJBgICA/gdyDAELIAhBEHQhCCAHQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogCHIgBw0AGiAIQYCAgNgDciACZ0EQayIHQRd0ayACIAdB//8DcUEIanRB////A3FyCyEHAn8gAy8BCCIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSECIAhBgIACcSEJIAhBgPgBcSIIQYD4AUYEQCAJQRB0IQggCEGAgID8B3IgAkUNARogCCACQQ10ckGAgID+B3IMAQsgCUEQdCEJIAhBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAJciAIDQAaIAlBgICA2ANyIAJnQRBrIghBF3RrIAIgCEH//wNxQQhqdEH///8DcXILIQgCfyADLwEKIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQIgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQhCSAJQYCAgPwHciACRQ0BGiAJIAJBDXRyQYCAgP4HcgwBCyAKQRB0IQogCUENdEGAgID8AHEgAkENdHJBgICAwANqIApyIAkNABogCkGAgIDYA3IgAmdBEGsiCUEXdGsgAiAJQf//A3FBCGp0Qf///wNxcgshCQJ/IAMvAQwiCkH//wFxRQRAIApBEHQMAQsgCkH/B3EhAiAKQYCAAnEhCyAKQYD4AXEiCkGA+AFGBEAgC0EQdCEKIApBgICA/AdyIAJFDQEaIAogAkENdHJBgICA/gdyDAELIAtBEHQhCyAKQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogC3IgCg0AGiALQYCAgNgDciACZ0EQayIKQRd0ayACIApB//8DcUEIanRB////A3FyCyEKAn8gAy8BDiILQf//AXFFBEAgC0EQdAwBCyALQf8HcSECIAtBgIACcSEMIAtBgPgBcSILQYD4AUYEQCAMQRB0IQsgC0GAgID8B3IgAkUNARogCyACQQ10ckGAgID+B3IMAQsgDEEQdCEMIAtBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAMciALDQAaIAxBgICA2ANyIAJnQRBrIgtBF3RrIAIgC0H//wNxQQhqdEH///8DcXILIQsCfyADLwEQIgxB//8BcUUEQCAMQRB0DAELIAxB/wdxIQIgDEGAgAJxIQ0gDEGA+AFxIgxBgPgBRgRAIA1BEHQhDCAMQYCAgPwHciACRQ0BGiAMIAJBDXRyQYCAgP4HcgwBCyANQRB0IQ0gDEENdEGAgID8AHEgAkENdHJBgICAwANqIA1yIAwNABogDUGAgIDYA3IgAmdBEGsiDEEXdGsgAiAMQf//A3FBCGp0Qf///wNxcgshDAJ/IAMvARIiDUH//wFxRQRAIA1BEHQMAQsgDUH/B3EhAiANQYCAAnEhDiANQYD4AXEiDUGA+AFGBEAgDkEQdCENIA1BgICA/AdyIAJFDQEaIA0gAkENdHJBgICA/gdyDAELIA5BEHQhDiANQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogDnIgDQ0AGiAOQYCAgNgDciACZ0EQayINQRd0ayACIA1B//8DcUEIanRB////A3FyCyENAn8gAy8BFCIOQf//AXFFBEAgDkEQdAwBCyAOQf8HcSECIA5BgIACcSEPIA5BgPgBcSIOQYD4AUYEQCAPQRB0IQ4gDkGAgID8B3IgAkUNARogDiACQQ10ckGAgID+B3IMAQsgD0EQdCEPIA5BDXRBgICA/ABxIAJBDXRyQYCAgMADaiAPciAODQAaIA9BgICA2ANyIAJnQRBrIg5BF3RrIAIgDkH//wNxQQhqdEH///8DcXILIQ4CfyADLwEWIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQIgD0GAgAJxIRAgD0GA+AFxIg9BgPgBRgRAIBBBEHQhDyAPQYCAgPwHciACRQ0BGiAPIAJBDXRyQYCAgP4HcgwBCyAQQRB0IRAgD0ENdEGAgID8AHEgAkENdHJBgICAwANqIBByIA8NABogEEGAgIDYA3IgAmdBEGsiD0EXdGsgAiAPQf//A3FBCGp0Qf///wNxcgshDwJ/IAMvARgiEEH//wFxRQRAIBBBEHQMAQsgEEH/B3EhAiAQQYCAAnEhESAQQYD4AXEiEEGA+AFGBEAgEUEQdCEQIBBBgICA/AdyIAJFDQEaIBAgAkENdHJBgICA/gdyDAELIBFBEHQhESAQQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogEXIgEA0AGiARQYCAgNgDciACZ0EQayIQQRd0ayACIBBB//8DcUEIanRB////A3FyCyEQAn8gAy8BGiIRQf//AXFFBEAgEUEQdAwBCyARQf8HcSECIBFBgIACcSESIBFBgPgBcSIRQYD4AUYEQCASQRB0IREgEUGAgID8B3IgAkUNARogESACQQ10ckGAgID+B3IMAQsgEkEQdCESIBFBDXRBgICA/ABxIAJBDXRyQYCAgMADaiASciARDQAaIBJBgICA2ANyIAJnQRBrIhFBF3RrIAIgEUH//wNxQQhqdEH///8DcXILIRECfyADLwEcIhJB//8BcUUEQCASQRB0DAELIBJB/wdxIQIgEkGAgAJxIRMgEkGA+AFxIhJBgPgBRgRAIBNBEHQhEiASQYCAgPwHciACRQ0BGiASIAJBDXRyQYCAgP4HcgwBCyATQRB0IRMgEkENdEGAgID8AHEgAkENdHJBgICAwANqIBNyIBINABogE0GAgIDYA3IgAmdBEGsiEkEXdGsgAiASQf//A3FBCGp0Qf///wNxcgshEgJ/IAMvAR4iE0H//wFxRQRAIBNBEHQMAQsgE0H/B3EhAiATQYCAAnEhFCATQYD4AXEiE0GA+AFGBEAgFEEQdCETIBNBgICA/AdyIAJFDQEaIBMgAkENdHJBgICA/gdyDAELIBRBEHQhFCATQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogFHIgEw0AGiAUQYCAgNgDciACZ0EQayITQRd0ayACIBNB//8DcUEIanRB////A3FyCyETAn8gAy8BICIUQf//AXFFBEAgFEEQdAwBCyAUQf8HcSECIBRBgIACcSEVIBRBgPgBcSIUQYD4AUYEQCAVQRB0IRQgFEGAgID8B3IgAkUNARogFCACQQ10ckGAgID+B3IMAQsgFUEQdCEVIBRBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAVciAUDQAaIBVBgICA2ANyIAJnQRBrIhRBF3RrIAIgFEH//wNxQQhqdEH///8DcXILIRQCfyADLwEiIhVB//8BcUUEQCAVQRB0DAELIBVB/wdxIQIgFUGAgAJxIRYgFUGA+AFxIhVBgPgBRgRAIBZBEHQhFSAVQYCAgPwHciACRQ0BGiAVIAJBDXRyQYCAgP4HcgwBCyAWQRB0IRYgFUENdEGAgID8AHEgAkENdHJBgICAwANqIBZyIBUNABogFkGAgIDYA3IgAmdBEGsiFUEXdGsgAiAVQf//A3FBCGp0Qf///wNxcgshFQJ/IAMvASQiFkH//wFxRQRAIBZBEHQMAQsgFkH/B3EhAiAWQYCAAnEhBCAWQYD4AXEiFkGA+AFGBEAgBEEQdCEWIBZBgICA/AdyIAJFDQEaIBYgAkENdHJBgICA/gdyDAELIARBEHQhBCAWQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBHIgFg0AGiAEQYCAgNgDciACZ0EQayIWQRd0ayACIBZB//8DcUEIanRB////A3FyCyEWAn8gAy8BJiIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSECIARBgIACcSEXIARBgPgBcSIEQYD4AUYEQCAXQRB0IQQgBEGAgID8B3IgAkUNARogBCACQQ10ckGAgID+B3IMAQsgF0EQdCEXIARBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAXciAEDQAaIBdBgICA2ANyIAJnQRBrIgRBF3RrIAIgBEH//wNxQQhqdEH///8DcXILIQIgAAJ/IAMvASgiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhFyAEQYD4AXEiBEGA+AFGBEAgF0EQdCEEIARBgICA/AdyIANFDQEaIAQgA0ENdHJBgICA/gdyDAELIBdBEHQhFyAEQQ10QYCAgPwAcSADQQ10ckGAgIDAA2ogF3IgBA0AGiAXQYCAgNgDciADZ0EQayIEQRd0ayADIARB//8DcUEIanRB////A3FyCzYCUCAAIAI2AkwgACAWNgJIIAAgFTYCRCAAIBQ2AkAgACATNgI8IAAgEjYCOCAAIBE2AjQgACAQNgIwIAAgDzYCLCAAIA42AiggACANNgIkIAAgDDYCICAAIAs2AhwgACAKNgIYIAAgCTYCFCAAIAg2AhAgACAHNgIMIAAgBjYCCCAAIAU2AgQgACABNgIAC90eAg5/B30CQAJAAn8CQCAAKAIEIgMgAigCCCIHSQRAIAAoAgAhBSACKAIEIgogA0EYbGoiBC0AEyIDIAQtABIiBiAELQARIg0gBiANSxsiBiADIAZLGyIDBH1DAABAwSACKgJEIAItAFhBAkYiBhsiEUMAABBBIAIqAkggBhsgEZNDAAB+Q5UgA0EBa0H/AXGzlJIQiQQiESARkgVDAAAAAAshFiAEQQxqLwEAIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQQgA0GAgAJxIQYgA0GA+AFxIgNBgPgBRgRAIAZBEHQiA0GAgID8B3IgBEUNAxogAyAEQQ10ckGAgID+B3IMAwsgBkEQdCEGIANFDQEgA0ENdEGAgID8AHEgBEENdHJBgICAwANqIAZyDAILDAILIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAGQYCAgNgDciAEQRd0a3ILQwAAgD8hEb4iEkMAAIA/XgRAIBIQxgVDVPgtQJRDAACAP5KRIRELQwAAgD8hEwJ/AkAgBSAHSQRAIAogBUEYbGoiBC0AEyIDIAQtABIiBSAELQARIgYgBSAGSxsiBSADIAVLGyIDBH1DAABAwSACKgJEIAItAFhBAkYiBRsiEkMAABBBIAIqAkggBRsgEpNDAAB+Q5UgA0EBa0H/AXGzlJIQiQQiEiASkgVDAAAAAAshFyAEQQxqLwEAIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQQgA0GAgAJxIQUgA0GA+AFxIgNBgPgBRgRAIAVBEHQiA0GAgID8B3IgBEUNAxogAyAEQQ10ckGAgID+B3IMAwsgBUEQdCEFIANFDQEgA0ENdEGAgID8AHEgBEENdHJBgICAwANqIAVyDAILIAUgB0Hcu8cAEIwHAAsgBCAEZ0EQayIEQf//A3FBCGp0Qf///wNxIAVBgICA2ANyIARBF3Rrcgu+IhJDAACAP14EQCASEMYFQ1T4LUCUQwAAgD+SkSETC0MAAIA/IRICfwJAIAcgACgCDCIDSwRAIAAoAgghBSAKIANBGGxqIgQtABMiAyAELQASIgYgBC0AESINIAYgDUsbIgYgAyAGSxsiAwR9QwAAQMEgAioCRCACLQBYQQJGIgYbIhRDAAAQQSACKgJIIAYbIBSTQwAAfkOVIANBAWtB/wFxs5SSEIkEIhQgFJIFQwAAAAALIRQgBEEMai8BACIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEEIANBgIACcSEGIANBgPgBcSIDQYD4AUYEQCAGQRB0IgNBgICA/AdyIARFDQMaIAMgBEENdHJBgICA/gdyDAMLIAZBEHQhBiADRQ0BIANBDXRBgICA/ABxIARBDXRyQYCAgMADaiAGcgwCCwwCCyAEIARnQRBrIgRB//8DcUEIanRB////A3EgBkGAgIDYA3IgBEEXdGtyC74iFUMAAIA/XgRAIBUQxgVDVPgtQJRDAACAP5KRIRILAn8CQCAFIAdJBEAgCiAFQRhsaiIELQATIgMgBC0AEiIFIAQtABEiBiAFIAZLGyIFIAMgBUsbIgMEfUMAAEDBIAIqAkQgAi0AWEECRiIFGyIVQwAAEEEgAioCSCAFGyAVk0MAAH5DlSADQQFrQf8BcbOUkhCJBCIVIBWSBUMAAAAACyEVIARBDGovAQAiA0H//wFxRQRAIANBEHQMAwsgA0H/B3EhBCADQYCAAnEhBSADQYD4AXEiA0GA+AFGBEAgBUEQdCIDQYCAgPwHciAERQ0DGiADIARBDXRyQYCAgP4HcgwDCyAFQRB0IQUgA0UNASADQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIMAgsgBSAHQdy7xwAQjAcACyAEIARnQRBrIgRB//8DcUEIanRB////A3EgBUGAgIDYA3IgBEEXdGtyCyEEAn8CQCAHIABBDEEIIBQgEpQiEiASWyASIBUgBL4iFEMAAIA/XgR9IBQQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiCBtqIgYoAgAiA0sEQCAAIBYgEZQiESARWyARIBcgE5RgRXEiDEECdGoiDSgCACEEIAogA0EYbGoiAy0AEyIFIAMtABIiCSADLQARIg4gCSAOSxsiCSAFIAlLGyIFBH1DAABAwSACKgJEIAItAFhBAkYiCRsiEUMAABBBIAIqAkggCRsgEZNDAAB+Q5UgBUEBa0H/AXGzlJIQiQQiESARkgVDAAAAAAshFiADQQxqLwEAIgVB//8BcUUEQCAFQRB0DAMLIAVB/wdxIQMgBUGAgAJxIQkgBUGA+AFxIgVBgPgBRgRAIAlBEHQiBUGAgID8B3IgA0UNAxogBSADQQ10ckGAgID+B3IMAwsgCUEQdCEJIAVFDQEgBUENdEGAgID8AHEgA0ENdHJBgICAwANqIAlyDAILDAILIAMgA2dBEGsiA0H//wNxQQhqdEH///8DcSAJQYCAgNgDciADQRd0a3ILQwAAgD8hEr4iEUMAAIA/XgRAIBEQxgVDVPgtQJRDAACAP5KRIRILAn8CQCAEIAdJBEAgCiAEQRhsaiIELQATIgMgBC0AEiIFIAQtABEiCSAFIAlLGyIFIAMgBUsbIgMEfUMAAEDBIAIqAkQgAi0AWEECRiIFGyIRQwAAEEEgAioCSCAFGyARk0MAAH5DlSADQQFrQf8BcbOUkhCJBCIRIBGSBUMAAAAACyEXQQhBDCAIGyEJIARBDGovAQAiA0H//wFxRQRAIANBEHQMAwsgA0H/B3EhBCADQYCAAnEhBSADQYD4AXEiA0GA+AFGBEAgBUEQdCIDQYCAgPwHciAERQ0DGiADIARBDXRyQYCAgP4HcgwDCyAFQRB0IQUgA0UNASADQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIMAgsMAwsgBCAEZ0EQayIEQf//A3FBCGp0Qf///wNxIAVBgICA2ANyIARBF3RrcgtDAACAPyERviITQwAAgD9eBEAgExDGBUNU+C1AlEMAAIA/kpEhEQsCfwJAIAcgACAJaiIJKAIAIgNLBEAgACAMRUECdGoiBSgCACEEIAogA0EYbGoiAC0AEyIDIAAtABIiCCAALQARIgwgCCAMSxsiCCADIAhLGyIDBH1DAABAwSACKgJEIAItAFhBAkYiCBsiE0MAABBBIAIqAkggCBsgE5NDAAB+Q5UgA0EBa0H/AXGzlJIQiQQiEyATkgVDAAAAAAshFCAAQQxqLwEAIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQAgA0GAgAJxIQggA0GA+AFxIgNBgPgBRgRAIAhBEHQiA0GAgID8B3IgAEUNAxogAyAAQQ10ckGAgID+B3IMAwsgCEEQdCEIIANFDQEgA0ENdEGAgID8AHEgAEENdHJBgICAwANqIAhyDAILDAILIAAgAGdBEGsiAEH//wNxQQhqdEH///8DcSAIQYCAgNgDciAAQRd0a3ILQwAAgD8hE74iFUMAAIA/XgRAIBUQxgVDVPgtQJRDAACAP5KRIRMLAn8CQCAEIAdJBEAgFiASlCISIBcgEZRgIAogBEEYbGoiAC0AEyIEIAAtABIiCCAALQARIgwgCCAMSxsiCCAEIAhLGyIEBH1DAABAwSACKgJEIAItAFhBAkYiCBsiEUMAABBBIAIqAkggCBsgEZNDAAB+Q5UgBEEBa0H/AXGzlJIQiQQiESARkgVDAAAAAAshFkUhCCASIBJbIQwgAEEMai8BACIEQf//AXFFBEAgBEEQdAwDCyAEQf8HcSEAIARBgIACcSEDIARBgPgBcSIEQYD4AUYEQCADQRB0IgRBgICA/AdyIABFDQMaIAQgAEENdHJBgICA/gdyDAMLIANBEHQhAyAERQ0BIARBDXRBgICA/ABxIABBDXRyQYCAgMADaiADcgwCCwwDCyAAIABnQRBrIgBB//8DcUEIanRB////A3EgA0GAgIDYA3IgAEEXdGtyCyEAQwAAgD8hEgJ/AkAgByAJIAUgBiAIIAxxIggbIBQgE5QiESARWyARIBYgAL4iE0MAAIA/XgR9IBMQxgVDVPgtQJRDAACAP5KRBUMAAIA/C5RgRXEiDBsiDigCACIASwRAIA0gBiAFIAwbIAgbIg8oAgAhBCAKIABBGGxqIgAtABMiAyAALQASIgsgAC0AESIQIAsgEEsbIgsgAyALSxsiAwR9QwAAQMEgAioCRCACLQBYQQJGIgsbIhFDAAAQQSACKgJIIAsbIBGTQwAAfkOVIANBAWtB/wFxs5SSEIkEIhEgEZIFQwAAAAALIRMgAEEMai8BACIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEAIANBgIACcSELIANBgPgBcSIDQYD4AUYEQCALQRB0IgNBgICA/AdyIABFDQMaIAMgAEENdHJBgICA/gdyDAMLIAtBEHQhCyADRQ0BIANBDXRBgICA/ABxIABBDXRyQYCAgMADaiALcgwCCyAAIAdB3LvHABCMBwALIAAgAGdBEGsiAEH//wNxQQhqdEH///8DcSALQYCAgNgDciAAQRd0a3ILviIRQwAAgD9eBEAgERDGBUNU+C1AlEMAAIA/kpEhEgsCfwJAIAQgB0kEQCAKIARBGGxqIgAtABMiByAALQASIgogAC0AESIEIAQgCkkbIgogByAKSxsiBwR9QwAAQMEgAioCRCACLQBYQQJGIgobIhFDAAAQQSACKgJIIAobIBGTQwAAfkOVIAdBAWtB/wFxs5SSEIkEIhEgEZIFQwAAAAALIRYgAEEMai8BACICQf//AXFFBEAgAkEQdAwDCyACQf8HcSEAIAJBgIACcSEHIAJBgPgBcSICQYD4AUYEQCAHQRB0IgJBgICA/AdyIABFDQMaIAIgAEENdHJBgICA/gdyDAMLIAdBEHQhByACRQ0BIAJBDXRBgICA/ABxIABBDXRyQYCAgMADaiAHcgwCCwwDCyAAIABnQRBrIgBB//8DcUEIanRB////A3EgB0GAgIDYA3IgAEEXdGtyC0MAAIA/IRG+IhdDAACAP14EQCAXEMYFQ1T4LUCUQwAAgD+SkSERCyABIAYgDSAIGygCADYCACABIA4gDyATIBKUIhIgElsgEiAWIBGUYEVxIgAbKAIANgIEIAEgDyAOIAAbKAIANgIIIAEgBSAJIAwbKAIANgIMDwsgAyAHQdy7xwAQjAcACyAEIAdB3LvHABCMBwALziYCHnsTfwJAAkACQAJAAkACQAJAIAFBAksEQCADRQ0BIAVFDQIgB0UNAyAAQf8BIAItAABBhZUBbEEIdiIsIAQtAAAiKUGaggJsQQh2akGVigFrQQZ1IiZBACAmQQBKGyImICZB/wFOGzoAAiAAQf8BICwgBi0AACIqQaXMAWxBCHZqQZrvAGtBBnUiJkEAICZBAEobIiYgJkH/AU4bOgAAIABB/wEgLCApQZMybEEIdiAqQYjoAGxBCHZqa0GExABqQQZ1IixBACAsQQBKGyIsICxB/wFOGzoAASABQQNGDQQgAkEBaiEsIANBAWsiA0F+cSEyIABBBGohLyADQQFxITUgAUEEayI2QXhxIjNFDQcgA0EBdiIDIiYgAUEMa0EDdiIBIAEgJksbIiYgB0EBayInIisgJiArSRsiJiAFQQFrIisgJiArSRsiJkEQSQ0FIC8gAiADIAEgASADSxsiASAnIgMgASADSRsiASArIgMgASADSRsiAUEBdGpBA2pJICwgACABQQN0akELaiICSXENBSAvIAQgAUECaiIBakkgAiAES3EgLyABIAZqSSACIAZLcXINBSAHICZBAWoiASABQQ9xIgFBECABG2siKGshMCAGIChqISYgBSAoayExIAQgKGohKyAsIChBAXQiAWohAiAyIAFrIQMgLyAoQQN0IidqIQEgMyAnayE0ICn9DyEYICr9DyEUIAQhKSAGISogLCEnA0AgAEH8AGogJ/0AAAAiGSAU/Q0AAgQGAAAAAAAAAAAAAAAA/YkB/akB/QyFSgAAhUoAAIVKAACFSgAAIgz9tQFBCP2tASINIBQgKkEBav0AAAAiFP0NDxAREhMUFRYXGBkaGxwdHv2JASIJ/QwJAAkACQAJAAkACQAJAAkAIg79lQEgFP2JASIT/Y4BIBMgCf2OAf0MAwADAAMAAwADAAMAAwADACIP/ZUB/Y4B/QwIAAgACAAIAAgACAAIAAgAIhX9jgFBBP2NASII/akBIhD9DCVmAAAlZgAAJWYAACVmAAAiC/21AUEI/a0B/a4B/QxmyP//Zsj//2bI//9myP//IhH9rgFBBv2sAf0MAAAAAAAAAAAAAAAAAAAAACIJ/bgB/Qz/AAAA/wAAAP8AAAD/AAAAIgr9tgEgGSAJ/Q0ICgwOAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASIbIAj9qgEiEiAL/bUBQQj9rQH9rgEgEf2uAUEG/awBIAn9uAEgCv22Af2GASAn/QAAECIcIAn9DQACBAYAAAAAAAAAAAAAAAD9iQH9qQEgDP21AUEI/a0BIhogFCAJ/Q0HCAkKCwwNDgAAAAAAAAAA/YkBIgggDv2VASAU/YoBIh39jgEgHSAI/Y4BIA/9lQH9jgEgFf2OAUEE/Y0BIgj9qQEiHyAL/bUBQQj9rQH9rgEgEf2uAUEG/awBIAn9uAEgCv22ASAcIAn9DQgKDA4AAAAAAAAAAAAAAAD9iQH9qQEgDP21AUEI/a0BIh4gCP2qASIiIAv9tQFBCP2tAf2uASAR/a4BQQb9rAEgCf24ASAK/bYB/YYB/WYiCP1YAAAPIABB9ABqIAj9WAAADiAAQewAaiAI/VgAAA0gAEHkAGogCP1YAAAMIABB3ABqIAj9WAAACyAAQdQAaiAI/VgAAAogAEHMAGogCP1YAAAJIABBxABqIAj9WAAACCAAQTxqIAj9WAAAByAAQTRqIAj9WAAABiAAQSxqIAj9WAAABSAAQSRqIAj9WAAABCAAQRxqIAj9WAAAAyAAQRRqIAj9WAAAAiAAQQxqIAj9WAAAASAAQQRqIAj9WAAAACAAQf0AaiANIBggKUEBav0AAAAiGP0NDxAREhMUFRYXGBkaGxwdHv2JASIIIA79lQEgGP2JASIg/Y4BICAgCP2OASAP/ZUB/Y4BIBX9jgFBBP2NASII/akBIiP9DBMZAAATGQAAExkAABMZAAAiFv21AUEI/a0BIBD9DAg0AAAINAAACDQAAAg0AAAiEP21AUEI/a0B/a4B/bEB/QwEIgAABCIAAAQiAAAEIgAAIhf9rgFBBv2sASAJ/bgBIAr9tgEgGyAI/aoBIiQgFv21AUEI/a0BIBIgEP21AUEI/a0B/a4B/bEBIBf9rgFBBv2sASAJ/bgBIAr9tgH9hgEgGiAYIAn9DQcICQoLDA0OAAAAAAAAAAD9iQEiCCAO/ZUBIBj9igEiIf2OASAhIAj9jgEgD/2VAf2OASAV/Y4BQQT9jQEiCP2pASIlIBb9tQFBCP2tASAfIBD9tQFBCP2tAf2uAf2xASAX/a4BQQb9rAEgCf24ASAK/bYBIB4gCP2qASIfIBb9tQFBCP2tASAiIBD9tQFBCP2tAf2uAf2xASAX/a4BQQb9rAEgCf24ASAK/bYB/YYB/WYiCP1YAAAPIABB9QBqIAj9WAAADiAAQe0AaiAI/VgAAA0gAEHlAGogCP1YAAAMIABB3QBqIAj9WAAACyAAQdUAaiAI/VgAAAogAEHNAGogCP1YAAAJIABBxQBqIAj9WAAACCAAQT1qIAj9WAAAByAAQTVqIAj9WAAABiAAQS1qIAj9WAAABSAAQSVqIAj9WAAABCAAQR1qIAj9WAAAAyAAQRVqIAj9WAAAAiAAQQ1qIAj9WAAAASAAQQVqIAj9WAAAACAAQf4AaiANICP9DBqBAAAagQAAGoEAABqBAAAiDf21AUEI/a0B/a4B/Qzruv//67r//+u6///ruv//IhL9rgFBBv2sASAJ/bgBIAr9tgEgGyAkIA39tQFBCP2tAf2uASAS/a4BQQb9rAEgCf24ASAK/bYB/YYBIBogJSAN/bUBQQj9rQH9rgEgEv2uAUEG/awBIAn9uAEgCv22ASAeIB8gDf21AUEI/a0B/a4BIBL9rgFBBv2sASAJ/bgBIAr9tgH9hgH9ZiII/VgAAA8gAEH2AGogCP1YAAAOIABB7gBqIAj9WAAADSAAQeYAaiAI/VgAAAwgAEHeAGogCP1YAAALIABB1gBqIAj9WAAACiAAQc4AaiAI/VgAAAkgAEHGAGogCP1YAAAIIABBPmogCP1YAAAHIABBNmogCP1YAAAGIABBLmogCP1YAAAFIABBJmogCP1YAAAEIABBHmogCP1YAAADIABBFmogCP1YAAACIABBDmogCP1YAAABIABBBmogCP1YAAAAIABBCGogGSAJ/Q0BAwUHAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASIbIBMgDv2VASAq/QAAACII/YkBIhr9jgEgGiAT/Y4BIA/9lQH9jgEgFf2OAUEE/Y0BIhP9qQEiGiAL/bUBQQj9rQH9rgEgEf2uAUEG/awBIAn9uAEgCv22ASAZIAn9DQkLDQ8AAAAAAAAAAAAAAAD9iQH9qQEgDP21AUEI/a0BIhkgE/2qASIeIAv9tQFBCP2tAf2uASAR/a4BQQb9rAEgCf24ASAK/bYB/YYBIBwgCf0NAQMFBwAAAAAAAAAAAAAAAP2JAf2pASAM/bUBQQj9rQEiEyAdIA79lQEgCP2KASII/Y4BIAggHf2OASAP/ZUB/Y4BIBX9jgFBBP2NASII/akBIh0gC/21AUEI/a0B/a4BIBH9rgFBBv2sASAJ/bgBIAr9tgEgHCAJ/Q0JCw0PAAAAAAAAAAAAAAAA/YkB/akBIAz9tQFBCP2tASIMIAj9qgEiHCAL/bUBQQj9rQH9rgEgEf2uAUEG/awBIAn9uAEgCv22Af2GAf1mIgj9WAAAACAAQRBqIAj9WAAAASAAQRhqIAj9WAAAAiAAQSBqIAj9WAAAAyAAQShqIAj9WAAABCAAQTBqIAj9WAAABSAAQThqIAj9WAAABiAAQUBrIAj9WAAAByAAQcgAaiAI/VgAAAggAEHQAGogCP1YAAAJIABB2ABqIAj9WAAACiAAQeAAaiAI/VgAAAsgAEHoAGogCP1YAAAMIABB8ABqIAj9WAAADSAAQfgAaiAI/VgAAA4gAEGAAWoiLSAI/VgAAA8gAEGBAWogGyAgIA79lQEgKf0AAAAiCP2JASIL/Y4BIAsgIP2OASAP/ZUB/Y4BIBX9jgFBBP2NASIL/akBIhEgFv21AUEI/a0BIBogEP21AUEI/a0B/a4B/bEBIBf9rgFBBv2sASAJ/bgBIAr9tgEgGSAL/aoBIgsgFv21AUEI/a0BIB4gEP21AUEI/a0B/a4B/bEBIBf9rgFBBv2sASAJ/bgBIAr9tgH9hgEgEyAhIA79lQEgCP2KASII/Y4BIAggIf2OASAP/ZUB/Y4BIBX9jgFBBP2NASII/akBIg4gFv21AUEI/a0BIB0gEP21AUEI/a0B/a4B/bEBIBf9rgFBBv2sASAJ/bgBIAr9tgEgDCAI/aoBIg8gFv21AUEI/a0BIBwgEP21AUEI/a0B/a4B/bEBIBf9rgFBBv2sASAJ/bgBIAr9tgH9hgH9ZiII/VgAAA8gAEH5AGogCP1YAAAOIABB8QBqIAj9WAAADSAAQekAaiAI/VgAAAwgAEHhAGogCP1YAAALIABB2QBqIAj9WAAACiAAQdEAaiAI/VgAAAkgAEHJAGogCP1YAAAIIABBwQBqIAj9WAAAByAAQTlqIAj9WAAABiAAQTFqIAj9WAAABSAAQSlqIAj9WAAABCAAQSFqIAj9WAAAAyAAQRlqIAj9WAAAAiAAQRFqIAj9WAAAASAAQQlqIAj9WAAAACAAQQpqIBsgESAN/bUBQQj9rQH9rgEgEv2uAUEG/awBIAn9uAEgCv22ASAZIAsgDf21AUEI/a0B/a4BIBL9rgFBBv2sASAJ/bgBIAr9tgH9hgEgEyAOIA39tQFBCP2tAf2uASAS/a4BQQb9rAEgCf24ASAK/bYBIAwgDyAN/bUBQQj9rQH9rgEgEv2uAUEG/awBIAn9uAEgCv22Af2GAf1mIgn9WAAAACAAQRJqIAn9WAAAASAAQRpqIAn9WAAAAiAAQSJqIAn9WAAAAyAAQSpqIAn9WAAABCAAQTJqIAn9WAAABSAAQTpqIAn9WAAABiAAQcIAaiAJ/VgAAAcgAEHKAGogCf1YAAAIIABB0gBqIAn9WAAACSAAQdoAaiAJ/VgAAAogAEHiAGogCf1YAAALIABB6gBqIAn9WAAADCAAQfIAaiAJ/VgAAA0gAEH6AGogCf1YAAAOIABBggFqIAn9WAAADyApQRBqISkgKkEQaiEqICdBIGohJyAtIQAgKEEQayIoDQALIBj9Fg8hKSAU/RYPISoMBgtBAEEDIAFBmOvEABDqBwALQQBBAEGo68QAEIwHAAtBAEEAQbjrxAAQjAcAC0EAQQBByOvEABCMBwALQQRBA0EDQfjrxAAQ6gcACyAEISsgBSExIAYhJiAHITAgMyE0IC8hASAyIQMgLCECCwNAIANFIDFBAklyIDBBAU1yDQEgAUECakH/ASACLQAAQYWVAWxBCHYiLSApQf8BcSInQQlsICtBAWoiAC0AACIpaiAnIClqQQNsakEIakEEdiI3QZqCAmxBCHZqQZWKAWtBBnUiJ0EAICdBAEobIicgJ0H/AU4bOgAAIAFB/wEgLSAqQf8BcSIoQQlsICZBAWoiJy0AACIqaiAoICpqQQNsakEIakEEdiI4QaXMAWxBCHZqQZrvAGtBBnUiKEEAIChBAEobIiggKEH/AU4bOgAAIAFBBmpB/wEgAkEBai0AAEGFlQFsQQh2IiggKy0AACIrIClBCWxqICkgK2pBA2xqQQhqQQR2IitBmoICbEEIdmpBlYoBa0EGdSIuQQAgLkEAShsiLiAuQf8BThs6AAAgAUEEakH/ASAoICYtAAAiJiAqQQlsaiAmICpqQQNsakEIakEEdiImQaXMAWxBCHZqQZrvAGtBBnUiLkEAIC5BAEobIi4gLkH/AU4bOgAAIAFBAWpB/wEgLSA3QZMybEEIdiA4QYjoAGxBCHZqa0GExABqQQZ1Ii1BACAtQQBKGyItIC1B/wFOGzoAACABQQVqQf8BICggK0GTMmxBCHYgJkGI6ABsQQh2amtBhMQAakEGdSImQQAgJkEAShsiJiAmQf8BThs6AAAgAUEIaiEBIAJBAmohAiAwQQFrITAgMUEBayExIANBAmshAyAAISsgJyEmIDRBCGsiNA0ACwsCQAJAAkACQAJAIDUEQCAEIAVqQQFrIgFFDQIgBiAHakEBayIERQ0BIDZBB3EiAEUNAyABLQAAIQEgLyAzaiICQf8BICwgMmotAABBhZUBbEEIdiIDIAQtAAAiBEGlzAFsQQh2akGa7wBrQQZ1IgVBACAFQQBKGyIFIAVB/wFOGzoAACAAQQFGDQQgAkH/ASADIAFBkzJsQQh2IARBiOgAbEEIdmprQYTEAGpBBnUiBEEAIARBAEobIgQgBEH/AU4bOgABIABBAk0NBSACQf8BIAFBmoICbEEIdiADakGVigFrQQZ1IgBBACAAQQBKGyIAIABB/wFOGzoAAgsPC0Ho68QAEN0JAAtB2OvEABDdCQALQQBBAEHI7cQAEIwHAAtBAUEBQdjtxAAQjAcAC0ECQQJB6O3EABCMBwALtyICDX8GfiMAQdAEayICJAAgAkHQAGogAUEIaigCACIDNgIAIAIgASkCACIPNwJIIAJBgAE6AFQgAkEANgJEIAJCgICAgBA3AjwgD6chCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAkwiByADSwRAA0AgAyALai0AACIJQQlrIgFBF0tBASABdEGTgIAEcUVyDQIgByADQQFqIgNHDQALIAIgBzYCUCAHIQMLIAJBMGogCyAHIANBAWoiASAHIAEgB0kbEPkBIAIoAjQhASACKAIwIQRBFBBxIgMNAQwNCyACIAM2AlACQCAJQdsARwRAIAlB+wBGDQEgAkE8aiACQc8EakGIwcEAEO4BIQQMCwsgAkH/ADoAVCACIANBAWo2AlAgAkEBOgCUBCACIAJBPGo2ApAEIAJBmANqIAJBkARqEJ8DIAItAJgDQQFGBEAgAigCnAMhBAwFCwJAAkACQAJAAkACQAJAAkACQAJAIAItAJkDQQFGBEAgAkEQaiACKAKQBBCVAyACKAIUIQEgAigCEEEBcQRAIAEhBAwQCyACQZgDaiACQZAEahCfAyACLQCYA0EBRgRAIAIoApwDIQQMEAsgAi0AmQNBAUcNAiACQZgDaiACKAKQBBC7AyACKAKYA0EBRw0BIAIoApwDIQQMDwtBAEG0gcEAQYD9wAAQ2wYhBAwOCyACKQOgAyEPIAJBmANqIAJBkARqEJ8DIAItAJgDQQFGBEAgAigCnAMhBAwOCyACLQCZA0EBRw0CIAJBmANqIAIoApAEELsDIAIoApgDQQFHDQEgAigCnAMhBAwNC0EBQbSBwQBBgP3AABDbBiEEDAwLIAIpA6ADIRAgAkGYA2ogAkGQBGoQnwMgAi0AmANBAUYEQCACKAKcAyEEDAwLIAItAJkDQQFHDQIgAkGYA2ogAigCkAQQuwMgAigCmANBAUcNASACKAKcAyEEDAsLQQJBtIHBAEGA/cAAENsGIQQMCgsgAikDoAMhESACQZgDaiACQZAEahCfAyACLQCYA0EBRgRAIAIoApwDIQQMCgsgAi0AmQNBAUcNAiACQZgDaiACKAKQBBClAiACKAKYAyIIQQJHDQEgAigCnAMhBAwJC0EDQbSBwQBBgP3AABDbBiEEDAgLIAIoApwDIQMgAkGYA2ogAkGQBGoQnwMgAi0AmANBAUYEQCACKAKcAyEEDAgLIAItAJkDQQFHDQEgAkGYA2ogAigCkAQQgQIgAi0AmANBAUcNAiACKAKcAyEEDAcLQQRBtIHBAEGA/cAAENsGIQQMBgtBBUG0gcEAQYD9wAAQ2wYhBAwFCyACLQCZAyEOIAJBmANqIgQgAkGQBGoiCRDqBSACKAKcAyEHIAIoApgDIgtBBEYNAyACQcgEaiACQdADaigCADYCACACQbgEaiACQcADav0AAgD9CwMAIAJBqARqIAJBsANq/QACAP0LAwAgAiAC/QACoAP9CwOYBAJAAkAgC0EDRwRAIwBBEGsiBSQAIAVBBGogCRCfAwJAIAUtAARBAUYEQCAEIAUoAgg2AgQgBEGBgICAeDYCAAwBCyAFLQAFRQRAIARBgICAgHg2AgAMAQsgBUEEaiAJKAIAEHMgBSgCBEGAgICAeEYEQCAEIAUoAgg2AgQgBEGBgICAeDYCAAwBCyAEIAUpAgQ3AgAgBEEIaiAFQQxqKAIANgIACyAFQRBqJAAgAigCnAMhBCACKAKYAyIFQYCAgIB4aw4CAgcBC0EGQbSBwQBBgP3AABDbBiEEDAYLIAIoAqADIQogAkHYAmogAkHIBGooAgA2AgAgAkHIAmogAkG4BGr9AAMA/QsDACACQbgCaiACQagEav0AAwD9CwMAIAIgAv0AA5gE/QsDqAIgBCEGIAMhBAwGC0EHQbSBwQBBgP3AABDbBiEEDAQLIAJB/wA6AFQgAiADQQFqNgJQIAJBAToAlAQgAiACQTxqNgKQBCACQaADaiEIQYCAgIB4IQVBAyEKQQMhDEECIQ1BACEJAkACQAJ/A0ACQCACQZgDaiACQZAEahDRAiACLQCYA0EBRgRAIAIoApwDIQEMAQsCQAJAIAItAJkDQQFGBEAgAigCkAQiA0EANgIIIAMgAygCFEEBajYCFCACQZgDaiADQQxqIAMQggIgAigCnAMhASACKAKYA0ECRg0DAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAKgA0EEaw4KAgAQARAQBRADBBALIAFBq/zAAEEFENsHRQ0HIAFBsPzAAEEFENsHDQ8gDUECRg0JQbD8wABBBRCfByEBDBALIAFBpPzAAEEHENsHRQ0EIAFBhujAAEEHENsHDQ4gDEEDRg0JQYbowABBBxCfByEBDA8LIAEoAABB4sLNqwZGDQQMDQsgAUH4gMEAQQwQ2wcNDCASUA0FQfiAwQBBDBCfByEBDA0LIAFBmO3AAEENENsHDQsgCkEDRg0HQZjtwABBDRCfByEBDAwLIAFBhIHBAEEKENsHDQogBUGAgICAeEYNB0GEgcEAQQoQnwciBCAFDQ0aQQIhCEEAIQUMEQsgCUUNCEGk/MAAQQcQnwchAQwKCyATUEUEQEH0gMEAQQQQnwchAQwKCyACQZgDaiADEKsFIAIpA6ADIRFCASETIAIoApgDQQFHDQogAigCnAMhAQwJCyAUUEUEQEGr/MAAQQUQnwchAQwJCyACQZgDaiADEKsFIAIpA6ADIRBCASEUIAIoApgDQQFHDQkgAigCnAMhAQwICyACQZgDaiADEKsFIAIpA6ADIQ9CASESIAIoApgDQQFHDQggAigCnAMhAQwHCyACQZgDaiADEK4FIAIoApwDIgQhASACKAKYAyINQQJHDQcMBgsgAkGYA2ogAxCsBSACLQCZAyEMIAItAJgDQQFHDQYgAigCnAMhAQwFCyACQZgDaiADEK8FIAIoApwDIQcgAigCmAMiCkEDRgRAIAchAQwFCyACQcgEaiAIQTBqKAIANgIAIAJBuARqIAhBIGr9AAIA/QsDACACQagEaiAIQRBq/QACAP0LAwAgAiAI/QACAP0LA5gEDAULIAMoAgwhBQJAAkACQAJAIAMoAhQiASADKAIQIgZJBEADQAJAIAEgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgAyABQQFqIgE2AhQgASAGRw0ACyAGIQELIAJBKGogBSAGIAFBAWoiASAGIAEgBkkbEPkBIAIoAiwhAyACKAIoIQFBFBBxIgZFDRggBkEDNgIADAELIAJBIGogBSAGIAFBAWoiASAGIAEgBkkbEPkBIAIoAiQhAyACKAIgIQFBFBBxIgZFDRcgBkEGNgIACyAGIAE2AgwgBiADNgIQDAELIAMgAUEBajYCFCACQZgDaiADEHMgAigCoAMhDiACKAKcAyEGIAIoApgDIgVBgICAgHhHDQULQQIhCEGAgICAeCEFIAYhBAwJCyAJQQFxRQRAQaT8wABBBxCcByEBDAMLIBNQBEBB9IDBAEEEEJwHIQEMAwsgFFAEQEGr/MAAQQUQnAchAQwDCyASUARAQfiAwQBBDBCcByEBDAMLQQIhCSAKQQNHBEAgAkHIA2ogAkHIBGooAgA2AgAgAkG4A2ogAkG4BGr9AAIA/QsDACACQagDaiACQagEav0AAgD9CwMAIAIgAv0AApgE/QsDmAMgCiEJCyAFQYCAgIB4RgRAQYSBwQBBChCcByEEQQIhCEGAgICAeCEFDAkLIA1BACANQQJHGyEIQQIgDCAMQQNGGyEBIAJBkANqIAJByANqKAIANgIAIAJBgANqIAJBuANq/QADAP0LAwAgAkHwAmogAkGoA2r9AAMA/QsDACACIAL9AAOYA/0LA+ACDAgLIAJBGGogAxCQBUEBIQkgAigCHCILIQEgAigCGEEBcUUNAgwBCyADEKABIgFFDQELCyAFQYCAgIB4ckGAgICAeEYNASABCyEEIAZBBGsoAgAiA0F4cSIBIAVBKGwiB0EEQQggA0EDcSIDG2pJDQ8gA0EAIAEgB0EnaksbDQEgBhCiAkECIQgMAwtBAiEIIAEhBAwCCwwOCyADIAQ2AgwgA0EFNgIAIAMgATYCEAwJCyACIAItAFRBAWo6AFQgAkE8ahDiBCEDIAJB0ANqIAJB8AJq/QADAP0LAwAgAkHgA2ogAkGAA2r9AAMA/QsDACACQfADaiACQZADaigCADYCACACIAc2ArwDIAIgCTYCuAMgAiAPNwOwAyACIBA3A6gDIAIgETcDoAMgAiAENgKcAyACIAU2AvQDIAIgBjYC+AMgAiAONgL8AyACIAs2AoAEIAIgAzYCiAQgAiABOgCEBCACIAL9AAPgAv0LA8ADIAIgCDYCmAMCQCAIQQJHBEAgAw0BIAJB0AFqIAJBoANqQdQA/AoAACACQcgBaiACQfwDaiIBQQhqKAIANgIAIAIgASkCADcDwAEMCAsgA0UNBCACQYgEahCxBEECIQgMBwtBAiEIAkAgBQRAIAZBBGsoAgAiAUF4cSIEIAVBKGwiB0EEQQggAUEDcSIBG2pJDQ0gAUEAIAQgB0EnaksbDQEgBhCiAgsgAyEEDAcLDAwLIAchBAtBAiEICyACIAItAFRBAWo6AFQgAkE8ahC6AyEDIAJB0ANqIAJBuAJq/QADAP0LAwAgAkHgA2ogAkHIAmr9AAMA/QsDACACQfADaiACQdgCaigCADYCACACIAc2ArwDIAIgCzYCuAMgAiARNwOwAyACIBA3A6gDIAIgDzcDoAMgAiAENgKcAyACIAU2AvQDIAIgBjYC+AMgAiAKNgL8AyACIAE2AoAEIAIgAzYCiAQgAiAOOgCEBCACIAL9AAOoAv0LA8ADIAIgCDYCmAMgCEECRwRAIAMNAiACQdABaiACQaADakHUAPwKAAAgAkHIAWogAkH8A2oiAUEIaigCADYCACACIAEpAgA3A8ABDAQLIAMNAgtBAiEIDAILQQIhCAJAIAUEQCAGQQRrKAIAIgFBeHEiBCAFQShsIgdBBEEIIAFBA3EiARtqSQ0IIAFBACAEIAdBJ2pLGw0BIAYQogILIAMhBAwCCwwHCyACQYgEahCxBEECIQgLIAhBAkYNACACQegAaiACQdABakHUAPwKAAAgAkHgAGoiCiACQcgBaigCADYCACACIAIpA8ABNwNYAkAgAigCUCIDIAIoAkwiAUkEQCACKAJIIQcDQCADIAdqLQAAQQlrIglBF0tBASAJdEGTgIAEcUVyDQIgASADQQFqIgNHDQALIAIgATYCUAsgAEEIaiACQegAakHUAPwKAAAgACAGNgJgIAAgBTYCXCAAIAQ2AgQgACAINgIAIABB7ABqIAooAgA2AgAgACACKQNYNwJkDAMLIAIgAzYCUCACQQhqIAcgASADQQFqIgQgASABIARLGxD5ASACKAIMIQQgAigCCCEHQRQQcSIBRQ0DIAEgBzYCDCABQRY2AgAgACABNgIEIABBAjYCACABIAQ2AhAgBUUNAiAGIAVBKGxBCBCiBwwCCyAEIAJBPGoQ6wUhAwsgACADNgIEIABBAjYCACAAQQhqIAJB6ABqQdQA/AoAACAAQewAaiACQeAAaigCADYCACAAIAIpA1g3AmQLAkAgAigCPCIABEAgAigCQCIBQQRrKAIAIgRBeHEiB0EEQQggBEEDcSIEGyAAakkNAyAEQQAgByAAQSdqSxsNASABEKICCyACQdAEaiQADwsMAgsAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvGGQEgfyMAQSBrIg4kACAOQRRqIAEoAgAgACgCBCIcIAAoAggQowQgDigCGCENAkACQAJAAkACQCAOKAIUIglBgICAgHhGBEAgDSEYDAELIA4gDSAOKAIcEDkgDigCBCEYAkACQAJAAkAgDigCACIZQYCAgIB4RgRAIAlFDQUgDUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgCWpJDQkgAUEAIAIgCUEnaksbDQggDRCiAgwFCyAOKAIMIREgDigCCCEPAkAgCQRAIA1BBGsoAgAiCkF4cSIMQQRBCCAKQQNxIgobIAlqSQ0BIApBACAMIAlBJ2pLGw0JIA0QogILIA5BFGogASgCACAAKAIQIh0gACgCFBCjBCAOKAIYIQ0CQAJAAkAgDigCFCIJQYCAgIB4RgRAIA0hAQwBCyAOIA0gDigCHBA5IA4oAgQhASAOKAIAIh5BgICAgHhHDQEgCUUNACANQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAJakkNAiACQQAgAyAJQSdqSxsNCyANEKICCyAZBEAgGEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgGWpJDQwgAkEAIAMgGUEnaksbDQsgGBCiAgsgASEYDAcLIA4oAgghGiAJBEAgDUEEaygCACIKQXhxIgxBBEEIIApBA3EiChsgCWpJDQsgCkEAIAwgCUEnaksbDQogDRCiAgsgACgCHCESIAAoAhghIiACRQ0FAkAgAC0AJCINBEAgACgCICEQQQ9BCEEDIA1BAUsiIxsgDUECSyIkGyITQQJ0ISUgEUECdCEmQQEhCUEAIQoMAQtBACEJQQEhAwNAIAkgGk8NBiAJQQFqIBpPDQQgCUEEaiEJIAIgA0sgA0EBaiEDDQALDAYLA0AgCSENIApBAnQiCSAaTw0FIAlBAXIiCiAaTw0EICYgASAJai0AACIMIAEgCmotAAAiFEEIdHJBwP8DcUEGdiIJbCAlIAxBP3EiCmxqIScgGCAJIBFsIAogE2xqQQJ0aiEoQQAhG0EAIQkCQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkADQCAJICdqIhUgD08NGiAQIAkgKGoiFi0AACIKTQ0jIAkgIWoiCyAETw0gIAMgG2oiFyASIApBAnRqKgIAOAIAIBVBBGogD08NGyAQIBZBBGotAAAiCk0NIyALQQNqIARPDR4gF0EMaiASIApBAnRqKgIAOAIAIBVBCGogD08NHCAQIBZBCGotAAAiCk0NIyALQQZqIARPDR8gF0EYaiASIApBAnRqKgIAOAIAAkACQCAjRQ0AIBVBDGogD08NESAQIBZBDGotAAAiCk0NJCAJICBqIgsgBk8NGyAFIBtqIhcgEiAKQQJ0aioCADgCACAVQRBqIA9PDRIgECAWQRBqLQAAIgpNDSQgC0EDaiAGTw0YIBdBDGogEiAKQQJ0aioCADgCACAVQRRqIA9PDRMgECAWQRRqLQAAIgpNDSQgC0EGaiAGTw0XIBdBGGogEiAKQQJ0aioCADgCACAVQRhqIA9PDRQgECAWQRhqLQAAIgpNDSQgC0EJaiAGTw0ZIBdBJGogEiAKQQJ0aioCADgCACAVQRxqIA9PDRUgECAWQRxqLQAAIgpNDSQgC0EMaiAGTw0aIBdBMGogEiAKQQJ0aioCADgCACAkRQ0AIBVBIGogD08NASAQIBZBIGotAAAiCk0NIyAJIB9qIgsgCE8NECAHIBtqIhcgEiAKQQJ0aioCADgCACAVQSRqIA9PDQMgECAWQSRqLQAAIgpNDSMgC0EDaiAITw0PIBdBDGogEiAKQQJ0aioCADgCACAVQShqIA9PDQQgECAWQShqLQAAIgpNDSMgC0EGaiAITw0OIBdBGGogEiAKQQJ0aioCADgCACAVQSxqIA9PDQUgECAWQSxqLQAAIgpNDSMgC0EJaiAITw0NIBdBJGogEiAKQQJ0aioCADgCACAVQTBqIA9PDQYgECAWQTBqLQAAIgpNDSMgC0EMaiAITw0MIBdBMGogEiAKQQJ0aioCADgCACAVQTRqIA9PDQcgECAWQTRqLQAAIgpNDSMgC0EPaiAITw0LIBdBPGogEiAKQQJ0aioCADgCACAVQThqIA9PDQggECAWQThqLQAAIgpNDSMgC0ESaiAITw0KIBdByABqIBIgCkECdGoqAgA4AgALIBtBBGohGyAJQQFqIglBA08NJQwBCwsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqQSBqDAYLIBEgFEEIdCAMckHA/wNxQQZ2bEECdCATIAxBP3FsQQJ0aiAJakEkagwFCyARIBRBCHQgDHJBwP8DcUEGdmxBAnQgEyAMQT9xbEECdGogCWpBKGoMBAsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqQSxqDAMLIBEgFEEIdCAMckHA/wNxQQZ2bEECdCATIAxBP3FsQQJ0aiAJakEwagwCCyARIBRBCHQgDHJBwP8DcUEGdmxBAnQgEyAMQT9xbEECdGogCWpBNGoMAQsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqQThqCyAPQcDzxwAQjAcACyALQRJqIQsMBQsgC0EPaiELDAQLIAtBDGohCwwDCyALQQlqIQsMAgsgC0EGaiELDAELIAtBA2ohCwsgCyAIQeDzxwAQjAcACyARIBRBCHQgDHJBwP8DcUEGdmxBAnQgEyAMQT9xbEECdGogCWpBDGoMBAsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqQRBqDAMLIBEgFEEIdCAMckHA/wNxQQZ2bEECdCATIAxBP3FsQQJ0aiAJakEUagwCCyARIBRBCHQgDHJBwP8DcUEGdmxBAnQgEyAMQT9xbEECdGogCWpBGGoMAQsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqQRxqCyAPQfDzxwAQjAcACyALQQZqIQsMAwsgC0EDaiELDAILIAtBCWohCwwBCyALQQxqIQsLIAsgBkGQ9McAEIwHAAsgESAUQQh0IAxyQcD/A3FBBnZsQQJ0IBMgDEE/cWxBAnRqIAlqDAILIBEgFEEIdCAMckHA/wNxQQZ2bEECdCATIAxBP3FsQQJ0aiAJakEEagwBCyARIBRBCHQgDHJBwP8DcUEGdmxBAnQgEyAMQT9xbEECdGogCWpBCGoLIA9BoPTHABCMBwALIAtBA2ohCwwBCyALQQZqIQsLIAsgBEHA9McAEIwHAAsgCiAQQdDzxwAQjAcACyAKIBBBgPTHABCMBwALIAogEEGw9McAEIwHAAsgH0EVaiEfIAdB1ABqIQcgBUE8aiEFICBBD2ohICADQSRqIQMgIUEJaiEhIA0gAiANSyILaiEJIA0hCiALDQALDAULDAkLDAgLIAlBAWohCgsgCiAaQbDzxwAQjAcACyAJIBpBoPPHABCMBwALAkAgIgRAIBJBBGsoAgAiAkF4cSIDICJBAnQiBEEEQQggAkEDcSICG2pJDQYgAkEAIAMgBEEnaksbDQUgEhCiAgsgHgRAIAFBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIB5qSQ0GIAJBACADIB5BJ2pLGw0FIAEQogILIBkEQCAYQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAZakkNBiABQQAgAiAZQSdqSxsNBSAYEKICCyAAKAIAIgEEQCAcQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNBiACQQAgAyABQSdqSxsNBSAcEKICCyAAKAIMIgBFBEBBACEYDAQLIB1BBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIABqSQ0FQQAhGCABRQ0CIAIgAEEnaksNAAwCCwwDCyAAKAIAIgEEQCAcQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABakkNBCACQQAgAyABQSdqSxsNAyAcEKICCyAAKAIMIgEEQCAAKAIQIgJBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAFqSQ0EIANBACAEIAFBJ2pLGw0DIAIQogILIAAoAhgiAUUNASAAKAIcIh1BBGsoAgAiAEF4cSICIAFBAnQiAUEEQQggAEEDcSIAG2pJDQMgAEUgAiABQSdqTXINAAwCCyAdEKICCyAOQSBqJAAgGA8LQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC/kjAQh/AkACQAJAAkACQAJAIABB9QFPBEAgAEHM/3tLBEBBAA8LIABBC2oiAUF4cSEFQcy6yQAoAgAiCEUNBEEfIQdBACAFayEDIABB9P//B00EQCAFQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQcLIAdBAnRBsLfJAGooAgAiAkUEQEEAIQBBACEBDAILQQAhACAFQRkgB0EBdmtBACAHQR9HG3QhBEEAIQEDQAJAIAIoAgRBeHEiBiAFSQ0AIAYgBWsiBiADTw0AIAIhASAGIgMNAEEAIQMgASEADAQLIAIoAhQiBiAAIAYgAiAEQR12QQRxaigCECICRxsgACAGGyEAIARBAXQhBCACDQALDAELAkACQAJAAkACQEHIuskAKAIAIgJBECAAQQtqQfgDcSAAQQtJGyIFQQN2IgB2IgFBA3EEQCABQX9zQQFxIABqIgZBA3QiAEHAuMkAaiIEIABByLjJAGooAgAiASgCCCIDRg0BIAMgBDYCDCAEIAM2AggMAgsgBUHQuskAKAIATQ0IIAENAkHMuskAKAIAIgBFDQggAGhBAnRBsLfJAGooAgAiASgCBEF4cSAFayEDIAEhAgNAAkAgASgCECIADQAgASgCFCIADQAgAigCGCEHAkACQCACIAIoAgwiAEYEQCACQRRBECACKAIUIgAbaigCACIBDQFBACEADAILIAIoAggiASAANgIMIAAgATYCCAwBCyACQRRqIAJBEGogABshBANAIAQhBiABIgBBFGogAEEQaiAAKAIUIgEbIQQgAEEUQRAgARtqKAIAIgENAAsgBkEANgIACyAHRQ0GAkAgAigCHEECdEGwt8kAaiIBKAIAIAJHBEAgAiAHKAIQRwRAIAcgADYCFCAADQIMCQsgByAANgIQIAANAQwICyABIAA2AgAgAEUNBgsgACAHNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNBiAAIAE2AhQgASAANgIYDAYLIAAoAgRBeHEgBWsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAAsAC0HIuskAIAJBfiAGd3E2AgALIAEgAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBCABQQhqDwsCQEECIAB0IgRBACAEa3IgASAAdHFoIgZBA3QiAUHAuMkAaiIEIAFByLjJAGooAgAiACgCCCIDRwRAIAMgBDYCDCAEIAM2AggMAQtByLrJACACQX4gBndxNgIACyAAIAVBA3I2AgQgACAFaiIHIAEgBWsiBkEBcjYCBCAAIAFqIAY2AgBB0LrJACgCACICBEBB2LrJACgCACEBAn9ByLrJACgCACIEQQEgAkEDdnQiA3FFBEBByLrJACADIARyNgIAIAJBeHFBwLjJAGoiAwwBCyACQXhxIgJBwLjJAGohAyACQci4yQBqKAIACyEEIAMgATYCCCAEIAE2AgwgASADNgIMIAEgBDYCCAtB2LrJACAHNgIAQdC6yQAgBjYCAAwHC0HMuskAQcy6yQAoAgBBfiACKAIcd3E2AgALAkACQCADQRBPBEAgAiAFQQNyNgIEIAIgBWoiBiADQQFyNgIEIAMgBmogAzYCAEHQuskAKAIAIgFFDQFB2LrJACgCACEAAn9ByLrJACgCACIEQQEgAUEDdnQiB3FFBEBByLrJACAEIAdyNgIAIAFBeHFBwLjJAGoiBAwBCyABQXhxIgFBwLjJAGohBCABQci4yQBqKAIACyEBIAQgADYCCCABIAA2AgwgACAENgIMIAAgATYCCAwBCyACIAMgBWoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBC0HYuskAIAY2AgBB0LrJACADNgIACyACQQhqIgBFDQMMBAsgACABckUEQEEAIQFBAiAHdCIAQQAgAGtyIAhxIgBFDQMgAGhBAnRBsLfJAGooAgAhAAsgAEUNAQsDQCAAIAEgACgCBEF4cSIEIAVrIgYgA0kiBxshCCAAKAIQIgJFBEAgACgCFCECCyABIAggBCAFSSIAGyEBIAMgBiADIAcbIAAbIQMgAiIADQALCyABRQ0AIAVB0LrJACgCACIATSADIAAgBWtPcQ0AIAEoAhghBwJAAkAgASABKAIMIgBGBEAgAUEUQRAgASgCFCIAG2ooAgAiAg0BQQAhAAwCCyABKAIIIgIgADYCDCAAIAI2AggMAQsgAUEUaiABQRBqIAAbIQQDQCAEIQYgAiIAQRRqIABBEGogACgCFCICGyEEIABBFEEQIAIbaigCACICDQALIAZBADYCAAsCQCAHRQ0AAkACQCABKAIcQQJ0QbC3yQBqIgIoAgAgAUcEQCABIAcoAhBHBEAgByAANgIUIAANAgwECyAHIAA2AhAgAA0BDAMLIAIgADYCACAARQ0BCyAAIAc2AhggASgCECICBEAgACACNgIQIAIgADYCGAsgASgCFCICRQ0BIAAgAjYCFCACIAA2AhgMAQtBzLrJAEHMuskAKAIAQX4gASgCHHdxNgIACwJAIANBEE8EQCABIAVBA3I2AgQgASAFaiIAIANBAXI2AgQgACADaiADNgIAIANBgAJPBEAgACADEIAFDAILAn9ByLrJACgCACICQQEgA0EDdnQiBHFFBEBByLrJACACIARyNgIAIANB+AFxQcC4yQBqIgMMAQsgA0H4AXEiAkHAuMkAaiEDIAJByLjJAGooAgALIQIgAyAANgIIIAIgADYCDCAAIAM2AgwgACACNgIIDAELIAEgAyAFaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyABQQhqIgANAQsCQAJAAkACQAJAIAVB0LrJACgCACIBSwRAIAVB1LrJACgCACIATwRAIAVBr4AEaiIBQRB2QAAiAkF/RgRAQQAPC0EAIQAgAkEQdCICRQ0HQeC6yQAgAUGAgHxxIgBBEGsgACACQQAgAGtGGyIBQeC6yQAoAgBqIgA2AgBB5LrJACAAQeS6yQAoAgAiBCAAIARLGzYCAAJAAkBB3LrJACgCACIEBEBBsLjJACEAA0AgACgCACIDIAAoAgQiBmogAkYNAiAAKAIIIgANAAsMAgtB7LrJACgCACIAQQAgACACTRtFBEBB7LrJACACNgIAC0HwuskAQf8fNgIAQbS4yQAgATYCAEGwuMkAIAI2AgBBzLjJAEHAuMkANgIAQdS4yQBByLjJADYCAEHIuMkAQcC4yQA2AgBB3LjJAEHQuMkANgIAQdC4yQBByLjJADYCAEHkuMkAQdi4yQA2AgBB2LjJAEHQuMkANgIAQey4yQBB4LjJADYCAEHguMkAQdi4yQA2AgBB9LjJAEHouMkANgIAQei4yQBB4LjJADYCAEH8uMkAQfC4yQA2AgBB8LjJAEHouMkANgIAQYS5yQBB+LjJADYCAEH4uMkAQfC4yQA2AgBBvLjJAEEANgIAQYy5yQBBgLnJADYCAEGAuckAQfi4yQA2AgBBiLnJAEGAuckANgIAQZS5yQBBiLnJADYCAEGQuckAQYi5yQA2AgBBnLnJAEGQuckANgIAQZi5yQBBkLnJADYCAEGkuckAQZi5yQA2AgBBoLnJAEGYuckANgIAQay5yQBBoLnJADYCAEGouckAQaC5yQA2AgBBtLnJAEGouckANgIAQbC5yQBBqLnJADYCAEG8uckAQbC5yQA2AgBBuLnJAEGwuckANgIAQcS5yQBBuLnJADYCAEHAuckAQbi5yQA2AgBBzLnJAEHAuckANgIAQdS5yQBByLnJADYCAEHIuckAQcC5yQA2AgBB3LnJAEHQuckANgIAQdC5yQBByLnJADYCAEHkuckAQdi5yQA2AgBB2LnJAEHQuckANgIAQey5yQBB4LnJADYCAEHguckAQdi5yQA2AgBB9LnJAEHouckANgIAQei5yQBB4LnJADYCAEH8uckAQfC5yQA2AgBB8LnJAEHouckANgIAQYS6yQBB+LnJADYCAEH4uckAQfC5yQA2AgBBjLrJAEGAuskANgIAQYC6yQBB+LnJADYCAEGUuskAQYi6yQA2AgBBiLrJAEGAuskANgIAQZy6yQBBkLrJADYCAEGQuskAQYi6yQA2AgBBpLrJAEGYuskANgIAQZi6yQBBkLrJADYCAEGsuskAQaC6yQA2AgBBoLrJAEGYuskANgIAQbS6yQBBqLrJADYCAEGouskAQaC6yQA2AgBBvLrJAEGwuskANgIAQbC6yQBBqLrJADYCAEHEuskAQbi6yQA2AgBBuLrJAEGwuskANgIAQdy6yQAgAjYCAEHAuskAQbi6yQA2AgBB1LrJACABQShrIgA2AgAgAiAAQQFyNgIEIAAgAmpBKDYCBEHouskAQYCAgAE2AgAMCAsgAiAETSADIARLcg0AIAAoAgxFDQMLQey6yQBB7LrJACgCACIAIAIgACACSRs2AgAgASACaiEDQbC4yQAhAAJAAkADQCADIAAoAgAiBkcEQCAAKAIIIgANAQwCCwsgACgCDEUNAQtBsLjJACEAA0ACQCAEIAAoAgAiA08EQCAEIAMgACgCBGoiBkkNAQsgACgCCCEADAELC0HcuskAIAI2AgBB1LrJACABQShrIgA2AgAgAiAAQQFyNgIEIAAgAmpBKDYCBEHouskAQYCAgAE2AgAgBCAGQSBrQXhxQQhrIgAgACAEQRBqSRsiA0EbNgIEIANBCGoiAEGwuMkA/QACAP0LAgBBtLjJACABNgIAQbC4yQAgAjYCAEG4uMkAIAA2AgBBvLjJAEEANgIAIANBHGohAANAIABBBzYCACAAQQRqIgAgBkkNAAsgAyAERg0HIAMgAygCBEF+cTYCBCAEIAMgBGsiAEEBcjYCBCADIAA2AgAgAEGAAk8EQCAEIAAQgAUMCAsCf0HIuskAKAIAIgFBASAAQQN2dCICcUUEQEHIuskAIAEgAnI2AgAgAEH4AXFBwLjJAGoiAAwBCyAAQfgBcSIBQcC4yQBqIQAgAUHIuMkAaigCAAshASAAIAQ2AgggASAENgIMIAQgADYCDCAEIAE2AggMBwsgACACNgIAIAAgACgCBCABajYCBCACIAVBA3I2AgQgBkEPakF4cUEIayIDIAIgBWoiAGshBSADQdy6yQAoAgBGDQMgA0HYuskAKAIARg0EIAMoAgQiAUEDcUEBRgRAIAMgAUF4cSIBENYEIAEgBWohBSABIANqIgMoAgQhAQsgAyABQX5xNgIEIAAgBUEBcjYCBCAAIAVqIAU2AgAgBUGAAk8EQCAAIAUQgAUMBgsCf0HIuskAKAIAIgFBASAFQQN2dCIEcUUEQEHIuskAIAEgBHI2AgAgBUH4AXFBwLjJAGoiBQwBCyAFQfgBcSIBQcC4yQBqIQUgAUHIuMkAaigCAAshAyAFIAA2AgggAyAANgIMIAAgBTYCDCAAIAM2AggMBQtB1LrJACAAIAVrIgE2AgBB3LrJAEHcuskAKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwGC0HYuskAKAIAIQACQCABIAVrIgJBD00EQEHYuskAQQA2AgBB0LrJAEEANgIAIAAgAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBC0HQuskAIAI2AgBB2LrJACAAIAVqIgQ2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIAVBA3I2AgQLDAYLIAAgASAGajYCBEHcuskAQdy6yQAoAgAiAEEPakF4cSICQQhrIgQ2AgBB1LrJAEHUuskAKAIAIAFqIgEgACACa2pBCGoiAjYCACAEIAJBAXI2AgQgACABakEoNgIEQei6yQBBgICAATYCAAwDC0HcuskAIAA2AgBB1LrJAEHUuskAKAIAIAVqIgE2AgAgACABQQFyNgIEDAELQdi6yQAgADYCAEHQuskAQdC6yQAoAgAgBWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACyACQQhqDwtBACEAQdS6yQAoAgAiASAFTQ0AQdS6yQAgASAFayIBNgIAQdy6yQBB3LrJACgCACIAIAVqIgI2AgAgAiABQQFyNgIEIAAgBUEDcjYCBAwBCyAADwsgAEEIagvjHQMofwN7C30jAEGgAmsiBCQAAn0gAy0AHCIFQQJGBED9DAAAAAAAAIA/AABAwQAAEEEhLEEAIQVDAACAPyEvQwAAgD8hMkMAAIA/DAELIARBwgFqIANBH2otAAA6AAAgBCADLwAdOwHAASADKgIUIS8gAyoCECEyIAP9AAIAISwgAyoCGAshNCAEQQAQtgk2ArABIARBADYCrAEgBEIANwKkASAEQQA2AlwgBEKAgICAwAA3AlQgBEIENwJMIARCADcCRCAEQoCAgIDAADcCPCAEQQA2AiwgBEEANgIkIARBADYCHCAEQQA2AhQgBEEANgIMIARBADYCBCAEQQA2AjQgBEGAgICAeDYCbCAEQYCAgIB4NgJ4IAQgLP0LAoQBIAQgMjgClAEgBCAvOAKYASAEIDQ4ApwBIAQgBToAoAEgBEG8AWpBADoAACAEQaMBaiAEQcIBai0AADoAACAEQQA2AmggBEKAgICAwAA3AmAgBEIANwK0ASAEIAQvAcABOwChASABKAJcIRYgBCACOgDIASAEIBY2AsQBIAQgASgCCCIHNgLAASAEQQRqIARBwAFqEKUEIAIEQCAEQQE6AKABCwJAAkACQAJAQYCAMBBxIhFFDQAgEUEEayIhLQAAQQNxBEAgEUEAQYCAMPwLAAtBgIAQEHEiC0UNACALQQRrIiItAABBA3EEQCALQQBBgIAQ/AsAC0GAgDAQcSISRQ0AIBJBBGsiIy0AAEEDcQRAIBJBAEGAgDD8CwALQYCAMBBxIhNFDQAgE0EEayIkLQAAQQNxBEAgE0EAQYCAMPwLAAtBgIDAABBxIg5FDQAgDkEEayIlLQAAQQNxBEAgDkEAQYCAwAD8CwALQYCACBBxIg9FDQAgD0EEayImLQAAQQNxBEAgD0EAQYCACPwLAAtBgIAQEHEiDEUNACAMQQRrIicoAgAiBUEDcSIDBEAgDEEAQYCAEPwLAAsgBwRAIA9BAiACGyEoIAxBBCACGyEpQYCABEEAIAIbIR5DAACAPyABKgJAIAEtAFhBAkYiAxtDAAAAACABKgI8IAMbIjKTITRDAAAQQSABKgJIIAMbQwAAQMEgASoCRCADGyI1k0MAAH5DlSE2IAEoAhAhKiABKAIUIR8gASgCBCErA0BBgIAEIAcgEGsiAyADQYCABE8bIRkgByAQRwRAIBBBGGwhIEEAIQggKyEJICohFCALIRpBACEFIAwhGyAOIQogDyEcA0AgGgJ/AkAgByAIIBBqIh1LBEAgCSAgaiIDQRFqLwAAIANBE2otAAAiBkEQdHIiDUEIdiEVIANBDmovAQAiFyADQRBqLQAAIhhBEHRyQf8BcbNDAAB/Q5UhMyAD/QACACEsQwAAAAAhMEMAAAAAIS8gDUH/AXEEQCA1IDYgDUEBa0H/AXGzlJIQiQQhLwsgFUH/AXEEQCA1IDYgFUEBa0H/AXGzlJIQiQQhMAsgMiAzIDSUkiEzIDIgGLNDAAB/Q5UgNJSSITEgMiAXQQh2s0MAAH9DlSA0lJIhNyAGBH0gNSA2IAZBAWtB/wFxs5SSEIkEBUMAAAAACyE4IANBFGovAQAhBiADQRZqLQAAIQ0gBSARaiIVICz9HwA4AgAgBSASaiIXIDM4AgAgBSATaiIYIC84AgAgFUEEaiAs/R8BOAIAIBdBBGogNzgCACAYQQRqIDA4AgAgFUEIaiAs/R8COAIAIBdBCGogMTgCACAYQQhqIDg4AgBDAACAPyAGQQh2s/0TIAYgDUEQdHJB/wFxs/0gAf0MAAB/QwAAf0MAAH9DAAB/Q/3nASIsICz95AH9DAAAgL8AAIC/AACAvwAAgL/95AEiLP0fASIxi5MgLP0fACI3i5MiL4xDAAAAABDgCCEwIAogDbNDAAB/Q5VDAAAAP5RD2w9JQJQiOBCZAiIzIDEgMCAwjCI5ICz9DAAAAAAAAAAAAAAAAAAAAAD9Rv1NIiz9xwH9GwJBAXEbkiIxIC8gL5QgMSAxlCA3IDAgOSAs/RsAQQFxG5IiMCAwlJKSkSIxlZT9EyAzIDAgMZWU/SABIDMgLyAxlZT9IAIgOBCbAv0gA/0LAgAgA0EMai8BACIGQf//AXFFBEAgBkEQdAwDCyAGQf8HcSEDIAZBgIACcSENIAZBgPgBcSIGQYD4AUYEQCANQRB0IgZBgICA/AdyIANFDQMaIAYgA0ENdHJBgICA/gdyDAMLIA1BEHQhDSAGRQ0BIAZBDXRBgICA/ABxIANBDXRyQYCAgMADaiANcgwCCyAdIAdB3LvHABCMBwALIAMgA2dBEGsiA0H//wNxQQhqdEH///8DcSANQYCAgNgDciADQRd0a3ILNgIAIAIEQAJ/AkAgHSAfSQRAAn8gFCAgaiIGQRRqKAIAIgNBBEsEQCAGQQRqKAIAIQMgBkEIaigCAAwBCyAGQQRqCyEGIAMNAUEAIQNBAAwCCyAdIB9BzLvHABCMBwwHCyAGKAIACyEGIBwgAzsBACAbIAY2AgALIAlBGGohCSAUQRhqIRQgGkEEaiEaIAVBDGohBSAbQQRqIRsgCkEQaiEKIBxBAmohHCAIQQFqIgggGUkNAAsLIAQgHjYCjAIgBCApNgKIAiAEIB42AoQCIAQgKDYCgAIgBEEANgL8ASAEQoCAgIDAADcC9AEgBEKAgICAwAA3AuwBIARCgICQgMAANwLkASAEIA42AuABIARBgIAMNgLcASAEIBM2AtgBIARBgIAMNgLUASAEIBI2AtABIARBgIAENgLMASAEIAs2AsgBIARBgIAMNgLEASAEIBE2AsABIARBBGogECAZIARBwAFqEJcBIBAgGWoiECAHSQ0ACyAnKAIAIgVBA3EhAwsCQAJAIAVBeHFBhIAQQYiAECADG08EQCADQQAgBUGogBBPGw0GIAwQogIgJigCACICQXhxQYSACEGIgAggAkEDcSIDG0kNBSADQQAgAkGogAhPGw0GIA8QogIgJSgCACICQXhxQYSAwABBiIDAACACQQNxIgMbSQ0FIANBACACQaiAwABPGw0GIA4QogIgJCgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBMQogIgIygCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBIQogIgIigCACICQXhxQYSAEEGIgBAgAkEDcSIDG0kNBSADQQAgAkGogBBPGw0GIAsQogIgISgCACICQXhxQYSAMEGIgDAgAkEDcSIDG0kNBSADQQAgAkGogDBPGw0GIBEQogIgFkUNBEGAgJABEHEiAkUNAyACQQRrIg4oAgAiBUEDcSIDBEAgAkEAQYCAkAH8CwALIAdFDQIgASgCICELIAEoAhwhD0EAIQkDQEGAgAQgByAJayIDIANBgIAETxshCiAHIAlHBEAgDyAJQQlsaiEDQQAhCCACIQUDQCALIAggCWoiDE0EQCAMIAtB/LvHABCMBwALIANBBGr9XAAAISwgA/1cAAAhLSAFQSBqIANBCGosAACyQwAA/kKVOAIAIAUgLf2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgBUEQaiAs/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACAFQSRqIQUgA0EJaiEDIAhBAWoiCCAKSQ0ACwsgBEEEaiAJIAogAkGAgCQQzgMgByAJIApqIglLDQALDAELDAQLIA4oAgAiBUEDcSEDCwJAAkAgBUF4cUGEgJABQYiAkAEgAxtPBEAgA0EAIAVBqICQAU8bDQYgAhCiAiAWQQFGDQRBgIDwARBxIgJFDQMgAkEEayIOKAIAIgVBA3EiAwRAIAJBAEGAgPAB/AsACyAHRQ0CIAEoAiwhCyABKAIoIQ9BACEKA0BBgIAEIAcgCmsiAyADQYCABE8bIQkgByAKRwRAIA8gCkEPbGohA0EAIQggAiEFA0AgCyAIIApqIgxNBEAgDCALQYy8xwAQjAcACyADQQRq/VwAACEsIANBCGr9XAAAIS0gA0EMaiwAACEMIANBDWosAAAhFCAD/VwAACEuIAVBOGogA0EOaiwAALJDAAD+QpU4AgAgBUE0aiAUskMAAP5ClTgCACAFQTBqIAyyQwAA/kKVOAIAIAUgLv2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgBUEgaiAt/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACAFQRBqICz9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIAVBPGohBSADQQ9qIQMgCEEBaiIIIAlJDQALCyAEQQRqIAogCSACQYCAPBDiAyAHIAkgCmoiCksNAAsMAQsMBAsgDigCACIFQQNxIQMLAkAgBUF4cUGEgPABQYiA8AEgAxtPBEAgA0EAIAVBqIDwAU8bDQUgAhCiAiAWQQJNDQNBgIDQAhBxIgJFDQIgAkEEayIJKAIAIgVBA3EiAwRAIAJBAEGAgNAC/AsACyAHBEAgASgCOCEKIAEoAjQhC0EAIQgDQEGAgAQgByAIayIBIAFBgIAETxshASAHIAhHBEBBACEFIAIhAwNAIARBwAFqIAsgCiAFIAhqELoGIAMgBP0ABMAB/QsCACADQRBqIAT9AATQAf0LAgAgA0EgaiAE/QAE4AH9CwIAIANBMGogBP0ABPAB/QsCACADQUBrIAT9AASAAv0LAgAgA0HQAGogBCoCkAI4AgAgA0HUAGohAyAFQQFqIgUgAUkNAAsLIARBBGogCCABIAJBgIDUABDjAyABIAhqIgggB0kNAAsgCSgCACIFQQNxIQMLIAVBeHFBhIDQAkGIgNACIAMbSQ0EIANBACAFQaiA0AJPGw0BIAIQogIMAwsMAwsMAwsACwJAIARBBGoiARCjASICBEAgAEECNgIAIAAgAjYCBCABEMACDAELIAAgBEEEakG8AfwKAAALIARBoAJqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAv9IgMRfwR+AX0jAEHwAWsiAiQAIAEoAgwhBQJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCFCIEIAEoAhAiA0kEQANAIAQgBWotAAAiBkEJayIHQRdLQQEgB3RBk4CABHFFcg0CIAEgBEEBaiIENgIUIAMgBEcNAAsgAyEECyACIAUgAyAEQQFqIgEgAyABIANJGxD5ASACKAIEIQMgAigCACEEQRQQcSIBRQ0BIAEgBDYCDCABQQU2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAYLAkACQAJAAkAgBkHbAEYEQCABIAEtABhBAWsiBjoAGCAEQQFqIQQgBkH/AXFFDQQgASAENgIUIAJBAToAYCACIAE2AlwgAkEANgJsIAJCgICAgIABNwJkIAJB2AFqIRAgAkG4AWohDkEIIREDQCACQbABaiACQdwAahCfAyACLQCwAUEBRgRAIAIoArQBIQQMCAsCQAJAAkACQAJAAkAgAi0AsQFBAUYEQCACKAJcIggoAgwhBgJAIAgoAhQiBCAIKAIQIgNJBEADQCAEIAZqLQAAIgdBCWsiBUEXS0EBIAV0QZOAgARxRXINAiAIIARBAWoiBDYCFCADIARHDQALIAMhBAsgAkHQAGogBiADIARBAWoiBCADIAMgBEsbEPkBIAIoAlQhAyACKAJQIQVBFBBxIgRFDQ4gBCAFNgIMIARBBTYCACAEIAM2AhAMDwsCQAJAIAdB2wBHBEAgB0H7AEYNASAIIAJB7wFqQdjAwQAQ7gEhBQwOCyAIIAgtABhBAWsiBToAGCAEQQFqIQQgBUH/AXFFDQsgCCAENgIUIAIgCDYC5AEgAkEBOgDoASACQbABaiACQeQBahCfAwJAAkAgAi0AsAFBAUYEQCACKAK0ASEDDAELAkACQAJAAkACQAJAAkACQAJAAkACQCACLQCxAUEBRgRAIAJBsAFqIAIoAuQBELsDIAIoArABQQFGBEAgAigCtAEhAwwNCyACKQO4ASETIAJBsAFqIAJB5AFqEJ8DIAItALABQQFGBEAgAigCtAEhAwwNCyACLQCxAUEBRw0CIAJBsAFqIAIoAuQBELsDIAIoArABQQFHDQEgAigCtAEhAwwMC0EAQcCCwQBBgP3AABDbBiEDDAsLIAIpA7gBIRQgAkGwAWogAkHkAWoQnwMgAi0AsAFBAUYEQCACKAK0ASEDDAsLIAItALEBQQFHDQIgAkGwAWogAigC5AEQ4AEgAi0AsAFBAUcNASACKAK0ASEDDAoLQQFBwILBAEGA/cAAENsGIQMMCQsgAi0AsQEhBiACQbABaiACQeQBahCfAyACLQCwAUEBRgRAIAIoArQBIQMMCQsgAi0AsQFBAUcNAiACQbABaiACKALkARDlASACLQCwAUEBRw0BIAIoArQBIQMMCAtBAkHAgsEAQYD9wAAQ2wYhAwwHCyACLQCxASEHIAJBsAFqIAJB5AFqEJ8DIAItALABQQFGBEAgAigCtAEhAwwHCyACLQCxAUEBRw0CIAJBsAFqIAIoAuQBEPEBIAItALABQQFHDQEgAigCtAEhAwwGC0EDQcCCwQBBgP3AABDbBiEDDAULIAItALEBIQkgAkGwAWogAkHkAWoQnwMgAi0AsAFBAUYEQCACKAK0ASEDDAULIAItALEBQQFHDQEgAkGwAWogAigC5AEQ0gIgAigCsAEiBEECRgRAIAIoArQBIQMMBQsgAigCtAEhBSACQbABaiACQeQBahDHBiACKAK0ASEDIAIoArABIg9BAmsOAgMEAgtBBEHAgsEAQYD9wAAQ2wYhAwwDC0EFQcCCwQBBgP3AABDbBiEDDAILIAMhDCAFIQMMAgtBBkHAgsEAQYD9wAAQ2wYhAwtBAiEECyAIIAgtABhBAWo6ABggAiAIELoDIgU2AtgBIAIgBjoA0gEgAiAHOgDRASACIAk6ANABIAIgFDcDyAEgAiATNwPAASACIAw2ArwBIAIgDzYCuAEgAiADNgK0ASACIAQ2ArABIARBAkcEQEECIQYgBQ0JIAJBoAFqIA5BEGr9AAMA/QsDACACIA79AAMA/QsDkAEgBCEGDAgLQQIhBiAFDQEMBwsgCCAILQAYQQFrIgU6ABggBEEBaiEEIAVB/wFxRQ0FIAggBDYCFCACQQE6AOgBIAIgCDYC5AFCACEVQQ4hBkENIQdBAiEFQQIhDEECIQpCACEWA0AgAkGwAWoiAyACQeQBahDRAiACLQCwAUEBRg0DAkAgAi0AsQFBAUYEQCACKALkASIEQQA2AgggBCAEKAIUQQFqNgIUIAMgBEEMaiAEEIICIAIoArQBIQMgAigCsAFBAkYNBgJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAK4AUEDaw4JAQ0DAg0ADQ0EDQsgAykAAELw5L2D18ycuvkAUQ0GIAMpAABC5dyN+8asmrfnAFINDCAHQf8BcUENRg0HQQIhBEHI/cAAQQgQnwchAwwSCyADQZOCwQBBAxDbB0UNCCADQZaCwQBBAxDbBw0LIAVBAkYNCUECIQRBloLBAEEDEJ8HIQMMEQsgA0HMgcEAQQYQ2wdFDQIMCgsgA0G1mMgAQQUQ2wcNCSAVUA0CQQIhBEG1mMgAQQUQnwchAwwPCyADQYiCwQBBCxDbBw0IIApBAkYNBEECIQRBiILBAEELEJ8HIQMMDgsgFlBFBEBBAiEEQcyBwQBBBhCfByEDDA4LIAJBsAFqIAQQqwUgAikDuAEhFEIBIRYgAigCsAFBAUcNCAwLCyACQbABaiAEEKsFIAIpA7gBIRNCASEVIAIoArABQQFHDQcMCgsgBkH/AXFBDkcEQEECIQRBsNHHAEEIEJ8HIQMMDAsgBCgCDCELAkACQAJAIAQoAhQiAyAEKAIQIgZJBEADQAJAIAMgC2otAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgBCADQQFqIgM2AhQgAyAGRw0ACyAGIQMLIAJBKGogCyAGIANBAWoiAyAGIAMgBkkbEPkBIAIoAiwhBCACKAIoIQVBFBBxIgNFDRggA0EDNgIADAELIAJBIGogCyAGIANBAWoiAyAGIAMgBkkbEPkBIAIoAiQhBCACKAIgIQVBFBBxIgNFDRcgA0EGNgIACyADIAU2AgwgAyAENgIQQQIhBAwMCyAEIANBAWo2AhQgAkGwAWogBBDgASACLQCxASEGIAItALABQQFHDQYMCQsgBCgCDCELAkACQAJAIAQoAhQiAyAEKAIQIgdJBEADQAJAIAMgC2otAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgBCADQQFqIgM2AhQgAyAHRw0ACyAHIQMLIAJBOGogCyAHIANBAWoiAyAHIAMgB0kbEPkBIAIoAjwhBCACKAI4IQVBFBBxIgNFDRcgA0EDNgIADAELIAJBMGogCyAHIANBAWoiAyAHIAMgB0kbEPkBIAIoAjQhBCACKAIwIQVBFBBxIgNFDRYgA0EGNgIACyADIAU2AgwgAyAENgIQQQIhBAwLCyAEIANBAWo2AhQgAkGwAWogBBDlASACLQCxASEHIAItALABQQFHDQUMCAsgBCgCDCEKAkACQAJAIAQoAhQiAyAEKAIQIglJBEADQAJAIAMgCmotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgBCADQQFqIgM2AhQgAyAJRw0ACyAJIQMLIAJByABqIAogCSADQQFqIgMgCSADIAlJGxD5ASACKAJMIQQgAigCSCEFQRQQcSIDRQ0WIANBAzYCAAwBCyACQUBrIAogCSADQQFqIgMgCSADIAlJGxD5ASACKAJEIQQgAigCQCEFQRQQcSIDRQ0VIANBBjYCAAsgAyAFNgIMIAMgBDYCEEECIQQMCgsgBCADQQFqNgIUIAJBsAFqIAQQ8QEgAi0AsQEhCiACLQCwAUEBRw0EDAcLIAxBAkcEQEECIQRBk4LBAEEDEJ8HIQMMCQsgAkGwAWogBBCwBUECIQQgAigCtAEiEiEDIAIoArABIgxBAkcNAwwICyACQbABaiAEELAFQQIhBCACKAK0ASIDviEXIAIoArABIgVBAkcNAgwHCyAWUARAQQIhBEHMgcEAQQYQnAchAwwHCyAVUARAQQIhBEG1mMgAQQUQnAchAwwHCyAGQf8BcUEORgRAQQIhBEGw0ccAQQgQnAchAwwHCyAHQf8BcUENRgRAQQIhBEHI/cAAQQgQnAchAwwHCyAMQQAgDEECRxshBCAFQQAgBUECRxshCSAKQQFxIQ8gEiEDDAYLIAQQoAEiA0UNAAsMAwsgEBCxBAwFCyACKAJoIQQgAigCZCEDDA4LIAIoArQBIQMLQQIhBAsgCCAILQAYQQFqOgAYIAIgCBDiBCIFNgLYASACIAY6ANIBIAIgBzoA0QEgAiAPOgDQASACIBM3A8gBIAIgFDcDwAEgAiAXOAK8ASACIAk2ArgBIAIgAzYCtAEgAiAENgKwASAEQQJHBEBBAiEGIAUNAyACQaABaiAOQRBq/QADAP0LAwAgAiAO/QADAP0LA5ABIAQhBiADIQUMAwtBAiEGIAVFBEAgAyEFDAMLIBAQsQQgAyEFDAILIAJBGGogBiADIAQgAyADIARLGxD5ASACKAIcIQMgAigCGCEFQRQQcSIEDQUMCAsgAyEFCyAGQQJGDQQgAkGAAWoiCCACQaABav0AAwD9CwMAIAIgAv0AA5AB/QsDcCACKAJkIA1GBEAjAEEgayIDJAACQCACQeQAaiIEKAIAIgdBmbPmDEsEf0EABUEEIAdBAXQiCiAKQQRNGyIKQShsIQsgAyAHBH8gAyAHQShsNgIcIAMgBCgCBDYCFEEIBUEACzYCGCADQQhqQQggCyADQRRqEIUHIAMoAghBAUcNASADKAIQIQQgAygCDAsgBEHUgsEAEJMJAAsgAygCDCEHIAQgCjYCACAEIAc2AgQgA0EgaiQAIAIoAmghEQsgESANQShsaiIDIAU2AgQgAyAGNgIAIAMgAv0AA3D9CwIIIANBGGogCP0AAwD9CwIAIAIgDUEBaiINNgJsDAALAAsgASACQe8BakH4v8EAEO4BIQQMBwsgAkEQaiAGIAMgBCADIAMgBEsbEPkBIAIoAhQhAyACKAIQIQVBFBBxIgRFDQMLIAQgBTYCDCAEQRg2AgAgBCADNgIQDAMLIAUgCBDrBSEEDAILIAJBCGogBSADIAQgAyADIARLGxD5ASACKAIMIQMgAigCCCEEQRQQcSIBRQ0AIAEgBDYCDCABQRg2AgAgACABNgIEIABBgICAgHg2AgAgASADNgIQDAULAAtBgICAgHghAyACKAJkIgVFDQAgAigCaCIGQQRrKAIAIgdBeHEiCSAFQShsIgVBBEEIIAdBA3EiBxtqSQ0EIAdBACAJIAVBJ2pLGw0FIAYQogILIAEgAS0AGEEBajoAGCACIAEQugMiBTYCvAEgAiANNgK4ASACIAQ2ArQBIAIgAzYCsAEgA0GAgICAeEcEQCAFRQ0CIAMEQCAEQQRrKAIAIgZBeHEiByADQShsIgNBBEEIIAZBA3EiBhtqSQ0HIAZBACAHIANBJ2pLGw0IIAQQogILIAUhBAwBCyAFRQ0AIAJBvAFqELEECyAEIAEQ6wUhASAAQYCAgIB4NgIAIAAgATYCBAwBCyAAIA02AgggACAENgIEIAAgAzYCAAsgAkHwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvfFwIafwJ8IwBBsARrIgMkACADQgA3A5gBIANCADcDkAEgA0IANwOIASADQgA3A4ABIANCADcDeCADQgA3A3AgA0IANwNoIANCADcDYCADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgA0IANwM4IANCADcDMCADQgA3AyggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDACADQgA3A7gCIANCADcDsAIgA0IANwOoAiADQgA3A6ACIANCADcDmAIgA0IANwOQAiADQgA3A4gCIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwPYAyAD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AgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwLCyABKAIAQZjMxABBESABKAIEKAIMEQAAIQMMCgtBASEDIAIgAEEBajYCDCABKAIAIgBBqczEAEERIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCAAQbuzxQBBASAEEQAADQsgAkEMaiABEMQERQ0BDAsLIABB24HCAEECIAQRAAANCiACQQE6ABMgAiAFNgIYIAIgADYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEMQEDQogAigCIEHZgcIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEG6zMQAQRkgASgCBCIGKAIMIgURAAANCCAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQogACABEKcERQ0BDAoLIARB24HCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQkgAigCIEHZgcIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEHTzMQAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQkgACABEKcERQ0BDAkLIARB24HCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKcEDQggAigCIEHZgcIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHtzMQAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEKcERQ0BDAgLIARB24HCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQeCBwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCAC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LQAAQQNrDgUBAAAAAgALIAAgARDKAgwFCyAAKQMIIglC/////////weDIQogCUL///////////8Ag0L/////////9/8AWARAIAlCNIinIQAgCUIAUw0CIAJBsAJqDAMLQeydxgBB753GACAJQgBZIgAbQfOdxgAgClAiAxshBEEDQQQgABtBAyADGyEADAMLIAEoAgBB8ZLGAEEEIAEoAgQoAgwRAAAMAwsgAkEtOgCwAkEBIQggAkGxAmoLIQYCfwJAAkACQAJAAkACQAJAAkAgAEH/D3EiAEUgClBxRQRAIABBAkkgCkIAUnIhBCAKQoCAgICAgIAIhCAKIAAbIglCAoYhCiAJQgGDIQ8CQAJAAkAgAEG1CGtBzHcgABsiAEEASARAIAJBkAJqQYC8xQAgACAAQYWiU2xBFHYgAEF/R2siAGoiB0EEdCIDaykDACIJIApCAoQiCxDdBiACQYACakGIvMUAIANrKQMAIg0gCxDdBiACQfABaiACKQOYAiILIAIpA4ACfCIMIAIpA4gCIAsgDFatfCAAIAdBsdm1H2xBE3ZrQfwAakH/AHFBwABzIgMQoQcgAkGwAWogCSAKIARBf3OsfCILEN0GIAJBoAFqIA0gCxDdBiACQZABaiACKQO4ASILIAIpA6ABfCIMIAIpA6gBIAsgDFatfCADEKEHIAJB4AFqIAkgChDdBiACQdABaiANIAoQ3QYgAkHAAWogAikD6AEiCSACKQPQAXwiDSACKQPYASAJIA1WrXwgAxChByACKQPAASELIAIpA5ABIQkgAikD8AEhDCAAQQJJDQFBACEDIABBP0kNAgwFCyACQYABaiAAQcHoBGxBEnYgAEEDS2siB0EEdCIDKQPg5EUiCSAKQgKEIg0Q3QYgAkHwAGogA0Ho5MUAaikDACILIA0Q3QYgAkHgAGogAikDiAEiDCACKQNwfCIOIAIpA3ggDCAOVq18IAcgAGsgB0HPpsoAbEETdmpB/QBqQf8AcUHAAHMiABChByACQSBqIAkgCiAEQX9zrHwiDBDdBiACQRBqIAsgDBDdBiACIAIpAygiDCACKQMQfCIOIAIpAxggDCAOVq18IAAQoQcgAkHQAGogCSAKEN0GIAJBQGsgCyAKEN0GIAJBMGogAikDWCIJIAIpA0B8IgsgAikDSCAJIAtWrXwgABChByACKQMw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ACABIAA2ArADQdjmyABBKyABQbADakHY6MAAQbDwwAAQ4AYAC0G4u8kAQQA2AgBBtLvJAEEAOgAAIARBhAhPBEAgBBCbBwsgA0GECE8EQCADEJsHCyACQQRrKAIAIgNBeHEiBEHwAUH0ASADQQNxIgMbSQ0CIANBACAEQZQCTxsNACACEKICIAAgBjYCBCAAQQA2AgAgAUHgCWokAA8LC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAvFFwICfwF+IwBBQGoiAiQAIAEoAgQhAyABKAIAIQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIALQAAQQFrDiMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsjHB0eHyAhIgALIAIgAEEEajYCBCACIABBCGo2AiAgAiAAQQxqNgIkIAIgAkEkaq1CgICAgLAMhDcDGCACQoCAgIDADCIEIAJBIGqthDcDECACIAQgAkEEaq2ENwMIIAJCAzcCNCACQQQ2AiwgAkHsncUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwrCyABQYyexQBBFiADKAIMEQAADCoLIAFBop7FAEElIAMoAgwRAAAMKQsgAUHHnsUAQR4gAygCDBEAAAwoCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGIn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwnCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkG8n8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwmCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkHsn8UANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwlCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMIIAJCATcCNCACQQI2AiwgAkGcoMUANgIoIAIgAkEIajYCMCABIAMgAkEoahDBAwwkCyACIABBAWo2AiQgAiACQSRqrUKAgICAsAyENwMI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CyAJQRhqIgIgCUGcA2pBwAH8CgAAQfQBEHEiAUUNAiABIAY2AgAgAUEEaiACQcAB/AoAACABIAs6APABIAEgBDYC7AEgASAHNgLoASABQYCAgIB4NgLcASABIBU3AtQBIAEgCDYC0AEgAUEANgLMASABQoCAgIAQNwLEASAAQbDuwAA2AgwgAEEBNgIIIABBmO7AADYCBCAAIAE2AgAgA0GAgICAeHJBgICAgHhGDQMgBUEEaygCACIAQXhxIgFBBEEIIABBA3EiABsgA2pJDQQgAEEAIAEgA0EnaksbDQUgBRCiAgwDC0GgnsYAQTcgCUHfBGpBtJPBAEHYnsYAEOAGAAtB2JrIABD/BwsACyAJQeAEaiQADwtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwAL/Q0BBX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOBQECAwQFAAtBASEDIAEoAgAiBEHUpccAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQggACABEIQGRQ0BDAgLIARB24HCAEECIAURAAANByACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIQGDQcgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0HCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHcpccAQQggASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQcgACABEIUGRQ0BDAcLIARB24HCAEECIAURAAANBiACQQE6ACggAiAGNgIMIAIgBDYCCCACQeCBwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGo2AhQgACACQRRqEIUGDQYgAigCFEHZgcIAQQIgAigCGCgCDBEAAA0GCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHkpccAQQkgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbuzxQBBASAFEQAADQYgACABEIYGRQ0B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BwsgA0IANwGCASADQdzkATsBgAEMBgsgA0IANwGCASADQdzcATsBgAEMBQsgA0IANwGCASADQdy4ATsBgAEMBAsgA0IANwGCASADQdzEADsBgAEMAwsgA0IANwGCASADQdzOADsBgAEMAgsgAyAENgKAASAAIAMpAoABNwIAIABBCGogA0GIAWovAQA7AQAgBSAJKAIAIAgoAhARAgBFDQMMBQtBACEADAULQQAhAUECCyEEIAAgAykCgAE3AgAgAEEIaiADQYgBai8BADsBACABIAQgASAESxsiAkH/AXEhBCAIKAIQIQoDQCAFIAAgAWotAAAgChECAA0DIAQgAUEBaiIBRw0ACyADIAI6AGALIAYgB0cNAAtBACEADAELQQEhAAsgA0GQAWokACAAC+MJAQZ/IAFBA2wiBCAAKAKQBCICSwRAIAQgAmsiBSAAKAKIBCACa0sEQCAAQYgEaiACIAVBBEEEEKQFIAAoApAEIQILIAAoAowEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKQBAsgACgCnAQiAiABSQRAIAEgAmsiBSAAKAKUBCACa0sEQCAAQZQEaiACIAVBBEEEEKQFIAAoApwEIQILIAAoApgEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKcBAsgACgCqAQiAiAESQRAIAQgAmsiBSAAKAKgBCACa0sEQCAAQaAEaiACIAVBBEEEEKQFIAAoAqgEIQILIAAoAqQEIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgKoBAsgACgCtAQiAiAESQRAIAQgAmsiBCAAKAKsBCACa0sEQCAAQawEaiACIARBBEEEEKQFIAAoArQEIQILIAAoArAEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgK0BAsgAUECdCICIAAoAsAEIgRLBEAgAiAEayICIAAoArgEIARrSwRAIABBuARqIAQgAkEEQQQQpAUgACgCwAQhBAsgACgCvAQiBSAEQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgYEQCADQQAgBvwLAAsgAiAEaiICQQFrIQQgBSACQQJ0akEEawUgAwtBADYCACAAIARBAWo2AsAECwJAAkAgACgChAQiBEUNACABQQlsIgMgACgCzAQiAksEQCADIAJrIgQgACgCxAQgAmtLBEAgAEHEBGogAiAEQQRBBBCkBSAAKALMBCECCyAAKALIBCIFIAJBAnRqIQMgBEECTwR/IARBAnRBBGsiBgRAIANBACAG/AsACyACIARqIgNBAWshAiAFIANBAnRqQQRrBSADC0EANgIAIAAgAkEBajYCzAQgACgChAQhBAsgBEEBTQ0AIAFBD2wiAyAAKALYBCICSwR/IAMgAmsiBCAAKALQBCACa0sEQCAAQdAEaiACIARBBEEEEKQFIAAoAtgEIQILIAAoAtQEIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgLYBCAAKAKEBAUgBAtBAk0NACABQRVsIgIgACgC5AQiAUsNAQsPCyACIAFrIgMgACgC3AQgAWtLBEAgAEHcBGogASADQQRBBBCkBSAAKALkBCEBCyAAKALgBCIEIAFBAnRqIQIgA0ECTwR/IANBAnRBBGsiBQRAIAJBACAF/AsACyABIANqIgJBAWshASAEIAJBAnRqQQRrBSACC0EANgIAIAAgAUEBajYC5AQLtwkBBn8gAUEDbCIEIAAoAiAiAksEQCAEIAJrIgUgACgCGCACa0sEQCAAQRhqIAIgBUEEQQQQpAUgACgCICECCyAAKAIcIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgIgCyAAKAIsIgIgAUkEQCABIAJrIgUgACgCJCACa0sEQCAAQSRqIAIgBUEEQQQQpAUgACgCLCECCyAAKAIoIgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgIsCyAAKAI4IgIgBEkEQCAEIAJrIgUgACgCMCACa0sEQCAAQTBqIAIgBUEEQQQQpAUgACgCOCECCyAAKAI0IgYgAkECdGohAyAFQQJPBH8gBUECdEEEayIHBEAgA0EAIAf8CwALIAIgBWoiA0EBayECIAYgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgI4CyAAKAJEIgIgBEkEQCAEIAJrIgQgACgCPCACa0sEQCAAQTxqIAIgBEEEQQQQpAUgACgCRCECCyAAKAJAIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgJECyABQQJ0IgIgACgCUCIESwRAIAIgBGsiAiAAKAJIIARrSwRAIABByABqIAQgAkEEQQQQpAUgACgCUCEECyAAKAJMIgUgBEECdGohAyACQQJPBH8gAkECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiAkEBayEEIAUgAkECdGpBBGsFIAMLQQA2AgAgACAEQQFqNgJQCwJAAkAgACgC8AIiBEUNACABQQlsIgMgACgCXCICSwRAIAMgAmsiBCAAKAJUIAJrSwRAIABB1ABqIAIgBEEEQQQQpAUgACgCXCECCyAAKAJYIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgJcIAAoAvACIQQLIARBAU0NACABQQ9sIgMgACgCaCICSwR/IAMgAmsiBCAAKAJgIAJrSwRAIABB4ABqIAIgBEEEQQQQpAUgACgCaCECCyAAKAJkIgUgAkECdGohAyAEQQJPBH8gBEECdEEEayIGBEAgA0EAIAb8CwALIAIgBGoiA0EBayECIAUgA0ECdGpBBGsFIAMLQQA2AgAgACACQQFqNgJoIAAoAvACBSAEC0ECTQ0AIAFBFWwiAiAAKAJ0IgFLDQELDwsgAiABayIDIAAoAmwgAWtLBEAgAEHsAGogASADQQRBBBCkBSAAKAJ0IQELIAAoAnAiBCABQQJ0aiECIANBAk8EfyADQQJ0QQRrIgUEQCACQQAgBfwLAAsgASADaiICQQFrIQEgBCACQQJ0akEEawUgAgtBADYCACAAIAFBAWo2AnQL9AoBCH8jAEGAAWsiBCQAIAAoAgwhBgJAAkACQAJAAkACQAJAIAAoAhQiCCAAKAIQIgNJBEACQAJAAkACQAJAAkACQAJAAkAgBiAIai0AACIFQdsAaw4hBAgICAgICAgICAgDCAgICAgICAEICAgICAIICAgICAgFAAsgBUEiaw4MBgcHBwcHBwcHBwcFBwsgACAIQQFqIgU2AhQCQCADIAVNDQAgACAIQQJqIgc2AhQgBSAGai0AAEH1AEcNDSADIQUgAyAHRg0AIAAgCEEDaiIJNgIUIAYgB2otAABB7ABHBEAgCSEHDA4LIAMgCUYNACAAIAhBBGoiBzYCFCAGIAlqLQAAQewARw0NIARBBzoAcCAEQfAAaiABIAIQ3wYgABDrBSEDDA4LIARBEGogBiADIAUQ+QEgBCgCFCEAIAQoAhAhAUEUEHEiA0UNDiADIAE2AgwgA0EFNgIAIAMgADYCEAwNCyAAIAhBAWoiBTYCFAJAIAMgBU0NACAAIAhBAmoiBzYCFCAFIAZqLQAAQfIARw0LIAMhBSADIAdGDQAgACAIQQNqIgk2AhQgBiAHai0AAEH1AEcEQCAJIQcMDAsgAyAJRg0AIAAgCEEEaiIHNgIUIAYgCWotAABB5QBHDQsgBEGAAjsBcCAEQfAAaiABIAIQ3wYgABDrBSEDDA0LIARBIGogBiADIAUQ+QEgBCgCJCEAIAQoAiAhAUEUEHEiA0UNDSADIAE2AgwgA0EFNgIAIAMgADYCEAwMCyAAIAhBAWoiBTYCFAJAIAMgBU0NACAAIAhBAmoiBzYCFCAFIAZqLQAAQeEARw0JIAMhBSADIAdGDQAgACAIQQNqIgk2AhQgBiAHai0AAEHsAEcEQCAJIQcMCgsgAyAJRg0AIAAgCEEEaiIKNgIUIAYgCWotAABB8wBHBEAgCiEHDAoLIAMgCkYNACAAIAhBBWoiBzYCFCAGIApqLQAAQeUARw0JIARBADsBcCAEQfAAaiABIAIQ3wYgABDrBSEDDAwLIARBMGogBiADIAUQ+QEgBCgCNCEAIAQoAjAhAUEUEHEiA0UNDCADIAE2AgwgA0EFNgIAIAMgADYCEAwLCyAEQQo6AHAgBEHwAGogASACEN8GIAAQ6wUhAwwKCyAEQQs6AHAgBEHwAGogASACEN8GIAAQ6wUhAwwJCyAAIAhBAWo2AhQgBEFAayIFIABBABDHAyAEKQNAQgNRDQQgBSABIAIQhAcgABDrBSEDDAgLIABBADYCCCAAIAhBAWo2AhQgBEHkAGogAEEMaiAAEIICIAQoAmghAyAEKAJkQQJGDQcgBCAEKAJsNgJ4IAQgAzYCdCAEQQU6AHAgBEHwAGogASACEN8GIAAQ6wUhAwwHCyAFQTBrQf8BcUEKSQ0BCyAEQQhqIAYgAyAIQQFqIgEgAyABIANJGxD5ASAEKAIMIQIgBCgCCCEDQRQQcSIBRQ0GIAEgAzYCDCABQQo2AgAgASACNgIQIAEgABDrBSEDDAULIARB0ABqIABBARDHAyAEKQNQQgNRBEAgBCgCWCEDDAULIARB0ABqIAEgAhCEByAAEOsFIQMMBAsgBCgCSCEDDAMLIARBOGogBiADIAcQ+QEgBCgCPCEAIAQoAjghAUEUEHEiA0UNAyADIAE2AgwgA0EJNgIAIAMgADYCEAwCCyAEQShqIAYgAyAHEPkBIAQoAiwhACAEKAIoIQFBFBBxIgNFDQIgAyABNgIMIANBCTYCACADIAA2AhAMAQsgBEEYaiAGIAMgBxD5ASAEKAIcIQAgBCgCGCEBQRQQcSIDRQ0BIAMgATYCDCADQQk2AgAgAyAANgIQCyAEQYABaiQAIAMPCwAL2wsBBX8jAEEwayICJABBASEDAkACQAJAAkACQAJAAkBBASAALQAAIgRBJGsgBEEjTRtB/wFxQQFrDgMBAgMACyABKAIAIgRB86XHAEEHIAEoAgQiBigCDCIFEQAADQUgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0HIAAgARCuAkUNAQwHCyAEQduBwgBBAiAFEQAADQYgAkEBOgAoIAIgBjYCCCACIAQ2AgQgAkHggcIANgIYIAIgASkCCDcCHCACIAJBKGo2AgwgAiACQQRqNgIUIAAgAkEUahCuAg0GIAIoAhRB2YHCAEECIAIoAhgoAgwRAAANBgsgASgCAEHejsgAQQEgASgCBCgCDBEAACEDDAULIAEoAgAiBEHQt8cAQQYgASgCBCIGKAIMIgURAAANBAJAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0HIAIgADYCBCABKAIAQdzJxABBCyABKAIEKAIMEQAAIQAgAkEAOgAZIAIgADoAGCACIAE2AhQgAkEUakGQwcQAQQUgAkEEakHMycQAEIwFIQAgAi0AGCIEQQFxIAItABkiBUEBR3JFBEAgACgCACIALQAKQYABcQ0CIAAoAgBB/7PFAEECIAAoAgQoAgwRAABFDQMMCAsgBQ0HIARBAXFFDQIMBwsgBEHbgcIAQQIgBREAAA0GIAIgBjYCCCACIAQ2AgQgAkEBOgATIAJB4IHCADYCGCACIAEpAgg3AhwgAiACQRNqNgIMIAIgAkEEaiIDNgIUIAIgADYCJCADQdzJxABBCxCvAyEAIAJBADoALSACIAA6ACwgAiACQRRqNgIoIAJBKGpBkMHEAEEFIAJBJGpBzMnEABCMBSEAAkACQCACLQAsIgNBAXEgAi0ALSIEQQFHckUEQCAAKAIAIgAtAApBgAFxDQEgACgCAEH/s8UAQQIgACgCBCgCDBEAAA0IDAILIAQNByADQQFxRQ0BDAcLIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAANBgsgAigCFEHZgcIAQQIgAigCGCgCDBEAAEUNAUEBIQMMBgsgACgCAEGls8UAQQEgACgCBCgCDBEAAA0FCyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMBAsgASgCACIEQeSlxwBBCSABKAIEIgYoAgwiBREAAA0DIABBBGohAAJAAkAgAS0ACkGAAXFFBEAgBEG7s8UAQQEgBREAAA0GIAIgADYCBCABKAIAQZCqxwBBDiABKAIEKAIMEQAAIQAgAkEAOgAZIAIgADoAGCACIAE2AhQgAkEUakGQwcQAQQUgAkEEakGAwcQAEIwFIQAgAi0AGCIEQQFxIAItABkiBUEBR3JFBEAgACgCACIALQAKQYABcQ0CIAAoAgBB/7PFAEECIAAoAgQoAgwRAABFDQMMBwsgBQ0GIARBAXFFDQIMBgsgBEHbgcIAQQIgBREAAA0FIAIgBjYCCCACIAQ2AgQgAkEBOgATIAJB4IHCADYCGCACIAEpAgg3AhwgAiACQRNqNgIMIAIgAkEEaiIDNgIUIAIgADYCJCADQZCqxwBBDhCvAyEAIAJBADoALSACIAA6ACwgAiACQRRqNgIoIAJBKGpBkMHEAEEFIAJBJGpBgMHEABCMBSEAAkACQCACLQAsIgNBAXEgAi0ALSIEQQFHckUEQCAAKAIAIgAtAApBgAFxDQEgACgCAEH/s8UAQQIgACgCBCgCDBEAAA0GDAILIAQNBSADQQFxRQ0BDAULIAAoAgBBpbPFAEEBIAAoAgQoAgwRAAANBAsgAigCFEHZgcIAQQIgAigCGCgCDBEAAEUNAUEBIQMMBQsgACgCAEGls8UAQQEgACgCBCgCDBEAAA0ECyABKAIAQd6OyABBASABKAIEKAIMEQAAIQMMAwsgASgCAEGfzsQAQQ4gASgCBCgCDBEAACEDDAILQQEhAwwBC0EBIQMLIAJBMGokACADC8MKAw5/A3sCfiMAQaABayIHJAAgByACNgIEIAcgACgCCCIDNgIIAkACQAJAAkACQAJAAkACQAJAAkAgAiADRgRAIAdBDGogASACEPEDIAcoAhAhAQJAIAcoAhQiDEUNACABIAxBA3RqIQogACgCBCEGIAEhAwNAIAMoAgAiBCACTw0DIANBBGooAgAiBSACTw0MIAYgBEEkbGoiBEEgaiIIKAIAIQkgBiAFQSRsaiIF/QACACESIAVBEGoiC/0AAgAhESAIIAVBIGoiCCgCADYCACAEQRBqIg39AAIAIRMgDSAR/QsCACAE/QACACERIAQgEv0LAgAgCyAT/QsCACAFIBH9CwIAIAggCTYCACADQQhqIgMgCkcNAAsgACgCFCICBEAgACgCECEEIAEhAwNAIAMoAgAiBSACTw0NIANBBGooAgAiBiACTw0FIAQgBUEYbGoiBUEQaiIIKQIAIRQgBCAGQRhsaiIG/QACACESIAggBkEQaiIIKQIANwIAIAX9AAIAIREgBSAS/QsCACAIIBQ3AgAgBiAR/QsCACADQQhqIgMgCkcNAAsLIAAoAiAiAgRAIAAoAhwhBCABIQMDQCADKAIAIgUgAk8NDSADQQRqKAIAIgYgAk8NBiAEIAVBEmxqIgVBEGoiCC8BACEJIAQgBkESbGoiBv0AAQAhEiAIIAZBEGoiCC8BADsBACAF/QABACERIAUgEv0LAQAgCCAJOwEAIAYgEf0LAQAgA0EIaiIDIApHDQALCyAAKAIsIgUEQCAAKAIoIQYgASECA0AgAigCACIDIAVPDQcgAkEEaigCACIEIAVPDQggBiADQR5saiIDQRBqIggpAQAhFCADQRZqKQEAIRUgBiAEQR5saiIEQRxqLwEAIQkgBEEYaigBACELIAT9AAEAIRIgCCAEQRBqIggpAQA3AQAgA/0AAQAhESADIBL9CwEAIANBGGogCzYBACADQRxqIAk7AQAgB0GGAWoiAyAVNwEAIAdBgAFqIgkgFDcDACAEIBH9CwEAIAggCSkDADcBACAEQRZqIAMpAQA3AQAgAkEIaiICIApHDQALCyAAKAI4IgNFIAxFcg0AIAAoAjQhBSABIQIDQCACKAIAIgAgA08NCCACQQRqKAIAIgQgA08NCSAHQZgBaiIMIAUgAEEqbGoiAEEoaiIGLwEAOwEAIAdBkAFqIgggAEEgaiIJKQEANwMAIAdBgAFqIgsgAEEQaiIN/QABAP0LAwAgBSAEQSpsaiIEQRBqIg79AAEAIRIgBP0AAQAhESAEQShqIg8vAQAhECAJIARBIGoiCSkBADcBACAGIBA7AQAgAP0AAQAhEyAAIBH9CwEAIA0gEv0LAQAgByAT/QsDcCAJIAgpAwA3AQAgDyAMLwEAOwEAIAQgB/0AA3D9CwEAIA4gC/0AAwD9CwEAIAJBCGoiAiAKRw0ACwsgBygCDCIABEAgAUEEaygCACICQXhxIgMgAEEDdCIAQQRBCCACQQNxIgIbakkNCSACQQAgAyAAQSdqSxsNCiABEKICCyAHQaABaiQADwsgB0EANgJwQQAgB0EEaiAHQQhqIAdB8ABqQaTBxwAQ9QcACyAEIAJBwPbHABCMBwALIAYgAkHA9scAEIwHAAsgBiACQcD2xwAQjAcACyADIAVBwPbHABCMBwALIAQgBUHA9scAEIwHAAsgACADQcD2xwAQjAcACyAEIANBwPbHABCMBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAFIAJBwPbHABCMBwAL4AoCB38BfiMAQdAAayIEJAAgAAJ/AkACQAJAAkACQAJAIAEoAhQiAiABKAIQIgNJBEAgASgCDCEIAn4CQANAIAIgCGotAAAiBUEJayIHQRdLQQEgB3RBk4CABHFFcg0BIAEgAkEBaiICNgIUIAIgA0cNAAsgAyECQgAMAQtCgAILIAWtQhCGhEKAgrgDUQ0BCyAEQSBqIAEoAgwiBSADIAIgA0kEfwNAIAIgBWotAAAiBkEJayIHQRlLDQNBASAHdEGTgIAEcUUEQCAHQRlHDQQgARDMBCICDQUMCAsgASACQQFqIgI2AhQgAiADRw0ACyADBSACC0EBaiIBIAMgASADSRsQ+QEgBCgCJCECIAQoAiAhA0EUEHEiAUUNBCABIAM2AgwgAUEFNgIAIAEgAjYCECAAIAE2AgQMAwsgASACQQFqIgY2AhQCQAJAAkAgAyAGTQ0AIAEgAkECaiIFNgIUIAYgCGotAABB9QBHDQEgBSAGIAMgAyAGSRsiBkYNACABIAJBA2oiBzYCFCAFIAhqLQAAQewARwRAIAchBQwCCyAGIAdGDQAgASACQQRqIgU2AhQgByAIai0AAEHsAEcNASAAQQA6AAFBAAwICyAEQQhqIAggAyAGEPkBIAQoAgwhBiAEKAIIIQFBFBBxIgJFDQUgAkEFNgIADAELIARBEGogCCADIAUQ+QEgBCgCFCEGIAQoAhAhAUEUEHEiAkUNBCACQQk2AgALIAIgATYCDCAAIAI2AgQgAiAGNgIQDAILIAZB+wBHBEAgBEEYaiAFIAMgAkEBaiIBIAMgASADSRsQ+QEgBCgCHCECIAQoAhghA0EUEHEiAUUNAyABIAM2AgwgAUEKNgIAIAEgAjYCECAAIAE2AgQMAgsgASABLQAYQQFrIgc6ABggAkEBaiECIAdB/wFxRQRAIARBKGogBSADIAIgAyACIANJGxD5ASAEKAIsIQIgBCgCKCEDQRQQcSIBRQ0DIAEgAzYCDCABQRg2AgAgASACNgIQIAAgATYCBAwCCyABIAI2AhQCQCABEMwEIgJFBEAgASgCDCEFAkACQCABKAIUIgIgASgCECIDSQRAA0ACQCACIAVqLQAAQQlrDjIAAAMDAAMDAwMDAwMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBgMLIAEgAkEBaiICNgIUIAIgA0cNAAsgAyECCyAEQThqIAUgAyACQQFqIgIgAyACIANJGxD5ASAEKAI8IQYgBCgCOCEDQRQQcSICRQ0GIAJBAzYCAAwBCyAEQTBqIAUgAyACQQFqIgIgAyACIANJGxD5ASAEKAI0IQYgBCgCMCEDQRQQcSICRQ0FIAJBBjYCAAsgAiADNgIMIAIgBjYCEAsgASABLQAYQQFqOgAYIAAgAjYCBAwCCyABIAJBAWo2AhQgARCHBCECIAEgAS0AGEEBajoAGCACDQAgASgCDCEFAkAgASgCFCICIAEoAhAiA0kEQANAIAIgBWotAAAiB0EJayIGQRdLQQEgBnRBk4CABHFFcg0CIAEgAkEBaiICNgIUIAIgA0cNAAsgAyECCyAEQcgAaiAFIAMgAhD5ASAEKAJMIQIgBCgCSCEDQRQQcSIBRQ0DIAEgAzYCDCABQQM2AgAgASACNgIQIAAgATYCBAwCCyAHQf0ARgRAIAEgAkEBajYCFAwECyAEQUBrIAUgAyACEPkBIAQoAkQhASAEKAJAIQNBFBBxIgJFDQIgAiADNgIMIAJBCjYCACACIAE2AhALIAAgAjYCBAtBAQwCCwALIABBAToAAUEACzoAACAEQdAAaiQAC/kKAwV/An0BfiMAQSBrIgIkAAJAIAEoAgAiBEGQtcQAQQUgASgCBCIDKAIMIgURAAAEQEEBIQMMAQsCQAJAAkAgASgCCCIGQYCAgARxRQRAQQEhAyAEQbuzxQBBASAFEQAADQQgBkGAgIABcSEFIAAqAgAhByAGQYCAgIABcQ0BIABBBGohBCAHiyIIQ8obDlpgIAdDAAAAAFwgCEMXt9E4XXFyRQRAIAEgByAFQQBHQQEQ9wJFDQMMBQsgASAHIAVBAEcQzwJFDQIMBAsgBEHbgcIAQQIgBREAAARAQQEhAwwECyACQQE6AA8gAiADNgIEIAIgBDYCACACQeCBwgA2AhQgAiABKQIIIgk3AhggCaciBEGAgIABcSEDIAIgAkEPajYCCCACIAI2AhAgACoCACEHAkACQCAEQYCAgIABcUUEQCAHiyIIQ8obDlpgIAdDAAAAAFwgCEMXt9E4XXFyDQEgAkEQaiAHIANBAEdBARD3Ag0FDAILIAJBEGogByADQQBHIAlCMIinEL0CRQ0BDAQLIAJBEGogByADQQBHEM8CDQMLIAIoAhBB2YHCAEECIAIoAhQoAgwRAAAEQEEBIQMMBAsgAEEEaiEEDAELIAEgByAFQQBHIAEvAQ4QvQINAiAAQQRqIQQLAkACQAJAAkACQCABKAIIIgNBgICABHFFBEAgASgCAEHnkMYAQQIgASgCBCgCDBEAAARAQQEhAwwICyADQYCAgAFxIQUgBCoCACEHIANBgICAgAFxDQEgAEEIaiEEIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXJFBEBBASEDIAEgByAFQQBHQQEQ9wJFDQUMCAsgASAHIAVBAEcQzwJFDQRBASEDDAcLIAEpAgAhCSACQQE6AA8gAiAJNwIAIAJB4IHCADYCFCACIAEpAggiCTcCGCAJpyIFQYCAgAFxIQMgAiACQQ9qNgIIIAIgAjYCECAEKgIAIQcgBUGAgICAAXFFDQEgAkEQaiAHIANBAEcgCUIwiKcQvQJFDQIMBAsgASAHIAVBAEcgAS8BDhC9AgRAQQEhAwwGCyAAQQhqIQQMAgsgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xckUEQCACQRBqIAcgA0EAR0EBEPcCDQMMAQsgAkEQaiAHIANBAEcQzwINAgsgAigCEEHZgcIAQQIgAigCFCgCDBEAAEUEQCAAQQhqIQQMAQtBASEDDAMLAkACQAJAAkACQCABKAIIIgNBgICABHFFBEAgASgCAEHnkMYAQQIgASgCBCgCDBEAAARAQQEhAwwJCyADQYCAgAFxIQAgBCoCACEHIANBgICAgAFxDQEgB4siCEPKGw5aYCAHQwAAAABcIAhDF7fROF1xckUEQEEBIQMgASAHIABBAEdBARD3AkUNBQwJC0EBIQMgASAHIABBAEcQzwJFDQQMCAsgASkCACEJIAJBAToADyACIAk3AgAgAkHggcIANgIUIAIgASkCCCIJNwIYIAmnIgNBgICAAXEhACACIAJBD2o2AgggAiACNgIQIAQqAgAhByADQYCAgIABcUUNASACQRBqIAcgAEEARyAJQjCIpxC9AkUNAgwEC0EBIQMgASAHIABBAEcgAS8BDhC9Ag0GDAILIAeLIghDyhsOWmAgB0MAAAAAXCAIQxe30ThdcXJFBEAgAkEQaiAHIABBAEdBARD3Ag0DDAELIAJBEGogByAAQQBHEM8CDQILIAIoAhBB2YHCAEECIAIoAhQoAgwRAABFDQBBASEDDAQLIAEoAgBB3o7IAEEBIAEoAgQoAgwRAAAhAwwDC0EBIQMMAgtBASEDDAELQQEhAwsgAkEgaiQAIAML2AkDEH8EfgF7IwBBMGsiBiQAAkACQCACKAIAIg4gAigCCCILayIHQSBPBEAgASkDCCEUIA4hBSALIQcMAQsgBkEQav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgBiAX/QsDAAJ/IAEpAwgiFVAEQCALDAELIAEoAhAiDygCACAPKQMIIhMgDygCBCIErSIWIBMgFlQbp2ohCAJAIARC/////w8gEyATQv////8PWhunayIFQQAgBCAFTxsiBEIgIBUgFUIgWhunIgUgBCAFSRsiA0EBRgRAIAYgCC0AADoAAAwBCyADRQ0AIAYgCCAD/AoAAAsgASAVIAOtIhZ9IhQ3AwggDyATIBZ8NwMIIAsgAyAHTQ0AGiACIAsgA0EBQQEQpAUgAigCCAshBSADBEAgAigCBCAFaiAGIAP8CgAACyACIAMgBWoiBzYCCCADBEAgAigCACEFDAELIABBBDoAACAAQQA2AgQMAQsgASgCECEJQYDAACEQIAZBEGohDwJAA0ACQCAFIAdHIAUgDkdyRQRAIA/9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIAYgF/0LAwACfyAUUARAQQAhA0IAIRQgDgwBCyAJKQMIIhUgCSgCBCIMrSIWIBUgFlQbpyIHIAkoAgBqIQgCQCAMQv////8PIBUgFUL/////D1obp2siBUEAIAUgDE0bIgRCICAUIBRCIFobpyIFIAQgBUkbIgNBAUYEQCAGIAgtAAA6AAAMAQsgA0UNACAGIAggA/wKAAALIAEgFCADrSIWfSIUNwMIIAkgFSAWfDcDCCAOIAcgDEYNABogAiAOIANBAUEBEKQFIAIoAggLIQUgAwRAIAIoAgQgBWogBiAD/AoAAAsgAiADIAVqIgc2AgggA0UEQCAAQQQ6AAAgACAHIAtrNgIEDAULIAIoAgAhBQsCQCAFIAdHBEAgAigCBCEDDAELIAVBIGoiCCAFQQF0IgQgBCAISRsiBEEASA0BQQAhAyAGIAUEfyAGIAU2AgggBiACKAIENgIAQQEFIAMLNgIEIAZBJGpBASAEIAYQhQcgBigCJEEBRg0BIAYoAighAyACIAQ2AgAgAiADNgIEIAQhBQsgFFAEQCACIAc2AggMAwsgAyAHaiESIAkCfiAQIAUgB2siBCAEIBBLGyINrSAUWARAIAkoAgQiCEL/////DyAJKQMIIhMgE0L/////D1obp2siBEEAIAQgCE0bIgQgDSAEIA1JGyIDBEAgEiAJKAIAIBMgCK0iFiATIBZUG6dqIAP8CgAACyADIAogAyAKSxshCiATIAOtIhV8DAELIAkoAgQiDEL/////DyAJKQMIIhMgE0L/////D1obp2siBEEAIAQgDE0bIgggFKciBCAEIAhLGyIDBEAgEiAJKAIAIBMgDK0iFiATIBZUG6dqIAP8CgAACyADIAogAyAKSxshCiATIAOtIhV8CzcDCCABIBQgFX0iFDcDCCACIAMgB2oiBzYCCCADRQ0CQX9BfyAQIBFBAWpBACADIA1JGyIRQQFKGyAQIAogDUcbIgRBAXQgBEEASBsgBCAEIA1NGyAEIAMgDUYbIRAgCiADayEKDAELCyAAQoHMADcCAAwBCyAAQQQ6AAAgACAHIAtrNgIECyAGQTBqJAALggkCBn8DfgJAAkACQCABQQhPBEAgAUEHcSICRQ0BIAAoAqABIgRBKU8NAiAERQRAIABBADYCoAEMAgsgBEECdCIGQQRrIgNBAnZBAWoiBUEDcSEHIAJBAnQoAqCVQiACdq0hCgJAIANBDEkEQCAAIQIMAQsgBUH8////B3EhAyAAIQIDQCACIAI1AgAgCn4gCXwiCD4CACACQQRqIgUgBTUCACAKfiAIQiCIfCIIPgIAIAJBCGoiBSAFNQIAIAp+IAhCIIh8Igg+AgAgAkEMaiIFIAU1AgAgCn4gCEIgiHwiCD4CACAIQiCIIQkgAkEQaiECIANBBGsiAw0ACwsgBwRAIAdBAnQhAwNAIAIgAjUCACAKfiAJfCIIPgIAIAJBBGohAiAIQiCIIQkgA0EEayIDDQALCyAAIAhCgICAgBBaBH8gBEEoRg0EIAAgBmogCT4CACAEQQFqBSAECzYCoAEMAQsgACgCoAEiBEEpTw0BIARFBEAgAEEANgKgAQ8LIAFBAnQ1AqCVQiEKIARBAnQiB0EEayICQQJ2QQFqIgNBA3EhAQJAIAJBDEkEQCAAIQIMAQsgA0H8////B3EhAyAAIQIDQCACIAI1AgAgCn4gCXwiCD4CACACQQRqIgYgBjUCACAKfiAIQiCIfCIIPgIAIAJBCGoiBiAGNQIAIAp+IAhCIIh8Igg+AgAgAkEMaiIGIAY1AgAgCn4gCEIgiHwiCD4CACAIQiCIIQkgAkEQaiECIANBBGsiAw0ACwsgAQRAIAFBAnQhAwNAIAIgAjUCACAKfiAJfCIIPgIAIAJBBGohAiAIQiCIIQkgA0EEayIDDQALCyAAIAhCgICAgBBaBH8gBEEoRg0DIAAgB2ogCT4CACAEQQFqBSAECzYCoAEPCwJAIAFBCHEEQCAAKAKgASIEQSlPDQICQCAERQRAQQAhBAwBCyAEQQJ0IgZBBGsiAkECdkEBaiIDQQNxIQcCQCACQQxJBEBCACEIIAAhAgwBCyADQfz///8HcSEDQgAhCCAAIQIDQCACIAI1AgBC4esXfiAIfCIIPgIAIAJBBGoiBSAFNQIAQuHrF34gCEIgiHwiCD4CACACQQhqIgUgBTUCAELh6xd+IAhCIIh8Igg+AgAgAkEMaiIFIAU1AgBC4esXfiAIQiCIfCIJPgIAIAlCIIghCCACQRBqIQIgA0EEayIDDQALCyAHBEAgB0ECdCEDA0AgAiACNQIAQuHrF34gCHwiCT4CACACQQRqIQIgCUIgiCEIIANBBGsiAw0ACwsgCUKAgICAEFQNACAEQShGDQIgACAGaiAIPgIAIARBAWohBAsgACAENgKgAQsgAUEQcQRAIABByJXCAEECEPMCCyABQSBxBEAgAEHQlcIAQQMQ8wILIAFBwABxBEAgAEHclcIAQQUQ8wILIAFBgAFxBEAgAEHwlcIAQQoQ8wILIAFBgAJxBEAgAEGYlsIAQRMQ8wILIAAgARC5AxoPCwwBC0EAIARBKEGMg8IAEOoHAAtBKEEoQYyDwgAQjAcAC5oKAgl/Bn4jAEEgayIFJAACQAJAIAEtAAgiBkECRg0AIAIgASkDACIMNwMIIAVCADcDEAJAAkACQAJAAkACQCABKAKYASIDQQlJBEAgASkDGEJ/IAwgA618Ig4gDCAOVhtUDQQgASgClAEhCCACKAIEIgStIQ0gBEL/////DyAMIAxC/////w9aG6drIgdBACAEIAdPGyADTwRAIAIoAgAgDCANIAwgDVQbp2ohBCADQQFHBEAgA0UNAyAFQRBqIAQgA/wKAAAMAwsgBSAELQAAOgAQDAILQaiQyAApAwAiD0IIiCEQIA+nIQcgD0L/AYNCBFINAwwCC0EAIANBCEHMisEAEOoHAAtBBCEHCyAOIQ0LIAIgDTcDCAJAIAdB/wFxIgRBBEcEQCAFIAetQv8BgyAQQgiGhCINNwMYIBBCGIinIQMCfwJAAkAgBEEBaw4DAAEBBAsgEKcMAQsgAy0ACAtB/wFxQSVHDQEgBkEBcUUEQCAFQRhqEM4FDAQLIABBADYCACAAQgA3AwggBUEYahDOBQwGCyAIIAVBEGogAxDbBw0BIAIgDDcDCCABQQI6AAggACAMNwMQIABCATcDCCAAQQA2AgAMBQsgACANNwMIIABCgYCAgJCAgICAfzcDAAwECyAGQQFxDQELIAFBAjoACAwBCyAAQQA2AgAgAEIANwMIDAELAkACQAJAAkAgASkDoAEiDCABKQMQVA0AIAFBIGohCUGokMgAKQMAIg5C/wGDIREgDkIIiCEQIAEpAxghDSACKAIAIQogDqchBiACKAIEIgutIQ4DQCAMIA1aDQFCfyAMIAEoAqwBIgOtfCIPIAwgD1YbIg8gDFgNAQJAAkAgAgJ+AkACQAJAIA0gDyANIA9UGyAMfSIPpyIEIANNBEAgASgCqAEhByABKAKwAQ0FIAsgDCAOIAwgDlQbpyIDayAESQ0CIAMgCmohAyAEQQFGDQEgBARAIAcgAyAE/AoAAAtBBCEDDAMLQQAgBCADQbyKwQAQ6gcACyAHIAMtAAA6AABBBCEDDAELIAYhAyAOIBFCBFINARoLIA9C/////w+DIAx8CzcDCCADQf8BcSIDQQRHBEAgEEIYiKchASAQpyICIQQCQAJAAkAgA0EBaw4DAQACCgsgAS0ACCEECyAEQf8BcUElRg0FDAgLIAEtAAhBJUcNByABKAIAIQIgAUEEaigCACIDKAIAIgYEQCACIAYRAwALIAMoAgQiBgRAIAIgBiADKAIIEKIHCyABQQxBBBCiBwwEC0EAIQMgASgCsAFFDQELIAQgASgCtAEiA0kNAyADIAdqIQcgBCADayEECyAFQgE3AhggASgCmAEiCCAETQRAIAVBCGogCSAFQRhqIAcgBCABKAKUASAIIAEoAogBEQoAIAUoAghBAXENBAsgAUEANgKwAUJ/IAEpA6ABIg0gATUCrAEgCEEBayIDQQAgAyAITRutfXwiDCAMIA1UGyIMIAEpAxgiDVQEQCABIAw3A6ABIAwgASkDEFoNAQwCCwsgASANNwMQCyAAQgA3AwggAEEANgIADAMLIAMgBCAEQeCbyAAQ6gcACyAFKAIMIQYgAUEBNgKwASAAQgE3AwggASADIAZqIAhqNgK0ASACIAatIAwgA618fCINNwMIIAAgDTcDECAAQQA2AgAMAQsgACABNgIMIABBgYCAgHg2AgQgACACQQh0IANyNgIIIABBATYCAAsgBUEgaiQAC6MJAg5/AnsCQAJ/AkACQAJAIAEoAiAiESAETQRAIAMgBGoiECARayEKIAQgEUgEQCADIQIMAwsgECAGayEMIAH9AAQQIRUgAf0ABAAhFiABLQAlIQ0gAS0AJCEOIAZBBEkNASAGQQNxQQJrIRIgBSAGQXxxakECaiETIAMhAgNAAkAgAiAOav0AAAAgFv0jIAIgDWr9AAAAIBX9I/1O/WQiC0UNAANAIAUhByAGIQkgDCACIAtoIg9qIghJDQECQANAIAcoAAAgCCIUKAAARw0BIAhBBGohCCAHQQRqIQcgCUEEayIJQQNLDQALIAlBAUsEQCAHLwAAIAgvAABHDQEgFEEGaiEIIBIhCSATIQcLIAlFDQcgBy0AACAILQAARg0HCyALQQFrIAtxIgsNAAsLIAJBEGoiAiAKTQ0ACwwCCwJAIAQgBkkNACADIARqAkAgBkUEQAwBCyADIAZqIQQgAyEHA0AgBy0AACAIQQF0aiEIIAdBAWoiByAESQ0ACwsgASgCZCEEIAEoAmAhASAGayECIAMhBwNAAkAgASAIRw0AIAcgBSAGELsGRQ0AIAcgA2sMBgsgAiAHTQ0BIAYgB2otAAAgCCAEIActAABsa0EBdGohCCAHQQFqIQcMAAsAC0EAIQMMBAsCQCAGQQJPBEAgBkECRg0BIAMhAgNAAkAgAiAOav0AAAAgFv0jIAIgDWr9AAAAIBX9I/1O/WQiB0UNAANAIAwgAiAHaCIPaiIJSQ0BIAUvAAAgCS8AAEYEQCAFLQACIAktAAJGDQcLIAdBAWsgB3EiBw0ACwsgAkEQaiICIApNDQALDAILIAYEQCADIQIDQAJAIAIgDmr9AAAAIBb9IyACIA1q/QAAACAV/SP9Tv1kIgdFDQADQCAMIAIgB2giD2oiCUkNASAFLQAAIAktAABGDQYgB0EBayAHcSIHDQALCyACQRBqIgIgCk0NAAsMAgsgAyECA0AgAiAOav0AAAAgFv0jIAIgDWr9AAAAIBX9I/1O/WQiBwRAIAwgAiAHaCIPak8NBAsgAkEQaiICIApNDQALDAELIAMhAgNAAkAgAiAOav0AAAAgFv0jIAIgDWr9AAAAIBX9I/1O/WQiB0UNAANAIAwgAiAHaCIPaiIJSQ0BIAUvAAAgCS8AAEYNBCAHQQFrIAdxIgcNAAsLIAJBEGoiAiAKTQ0ACwtBACEDIAYgECACa0sgAiAQT3INAiAKIAEtACRq/QAAACAB/QAEAP0jIAogAS0AJWr9AAAAIAH9AAQQ/SP9Tv1kQX8gAiAKa3RxIgtFDQIgECAGayEBIAZBBEkhAgJAA0AgCiALaCISaiIHIAFLDQQgBiEJIAUhCAJAIAJFBEADQCAIKAAAIAcoAABHDQIgB0EEaiEHIAhBBGohCCAJQQRrIglBA0sNAAsLIAlBAUsEQCAILwAAIAcvAABHDQEgCUECayEJIAhBAmohCCAHQQJqIQcLIAlFDQIgCC0AACAHLQAARg0CCyALQQFrIAtxIgsNAAsMAwsgEiAEIBFragwBCyACIANrIA9qCyEHQQEhAwsgACAHNgIEIAAgAzYCAAv7CQIHfwR9IwBBsAFrIgUkAAJ/AkAgASgCCCIGIAJLBEAgASgCBCACQRhsaiIGQRFqLwAAIAZBE2otAAAiB0EQdHIiCEEIdiEJQwAAEEEgASoCSCABLQBYQQJGIgobIQ1DAABAwSABKgJEIAobIQwgCEH/AXEEQCAMIA0gDJNDAAB+Q5UgCEEBa0H/AXGzlJIQiQQhDgsgCUH/AXEEQCAMIA0gDJNDAAB+Q5UgCUEBa0H/AXGzlJIQiQQhDwsgBwR9IAwgDSAMk0MAAH5DlSAHQQFrQf8BcbOUkhCJBAVDAAAAAAshDCAOIA+UQ4/CzT8QtwohDSAOIAyUQ4/CzT8QtwohDiAPIAyUQ4/CzT8QtwogDSAOkpJDAABAQJVD5kAfPxC3CkPbD0lBlCEMIAZBDGovAQAiB0H//wFxRQRAIAdBEHQMAwsgB0H/B3EhBiAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCIHQYCAgPwHciAGRQ0DGiAHIAZBDXRyQYCAgP4HcgwDCyAIQRB0IQggB0UNASAHQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2ogCHIMAgsgAiAGQdy7xwAQjAcACyAGIAZnQRBrIgZB//8DcUEIanRB////A3EgCEGAgIDYA3IgBkEXdGtyCyEGIAVBCGogASgCECIJIAEoAhQiCiACEOcCIAwgBr6UIQ0CQAJ/AkACQCAFKAIsIgZBCU8EQCAFKAIMIgdFDQEgBUEANgIwIAVBADYCVCAFKAIQDAMLIAYNAQsgAEEBNgIoIAAgAjYCCCAAQQA2AgQgACANOAIADAILIAVBADYCMCAFQQA2AlQgBiEHIAVBDGoLIQggB0ECdCELIAVBiAFqIQdDAACA/yEMA0AgBUGEAWogASAIKAIAIAMgBBD3ASAFQeAAaiAHQQhq/QACAP0LAwAgBUHwAGogB0EYav0AAgD9CwMAIAUgBykCADcDWCAIQQRqIQggBSoChAEhDiAFQTBqIAVB2ABqEP8BIAwgDhDgCCEMIAtBBGsiCw0ACyADKAIIIQECQAJAAkACQAJAIAQgDJQgDV8EQCABIAJNDQEgAygCBCACakEBOgAACyABIAJNDQEgAygCBCACai0AAEUEQCAJIAogAkEEQQAQ1AIgACAMOAIAIABBJGogBUHQAGopAgA3AgAgAEEUaiAFQUBr/QACAP0LAgAgACAF/QACMP0LAgQMBgsgCSAKIAIgBSgCVCIIQQlJBH8gBUE0agUgBSgCNCIIQYCABE8NAyAFKAI4CyAIENQCIABBATYCKCAAIAI2AgggAEEANgIEIAAgDTgCACAFKAJUIgBBCUkNBSAFKAI4IgFBBGsoAgAiAkF4cSIDIABBAnQiAEEEQQggAkEDcSICG2pJDQMgAkEAIAMgAEEnaksbDQQgARCiAgwFCyACIAFB7OrBABCMBwALIAIgAUH86sEAEIwHAAtBjOvBAEEtQbzrwQAQ6wcAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsCQAJAIAZBCU8EQCAFKAIQIgBBBGsoAgAiAUF4cSICIAZBAnQiA0EEQQggAUEDcSIBG2pJDQEgAUEAIAIgA0EnaksbDQIgABCiAgsgBUGwAWokAA8LQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC6UKAgZ/AX4jAEHgAGsiByQAIAAoAgQhCyAAKAIAIQggB0EANgIMAn8CQCAILQAQQQFHDQAgCCgCACEJAkACQAJAIAtFBEAgByAIQQxqrUKAgICAEIQ3A0AgCUEEaigCACEKIAkoAgAgB0EBNgIkIAdB8PjHADYCICAHQQE2AhwgB0ECNgIUIAdB4PjHADYCECAHIAdBQGsiDDYCGCAKIAdBEGoQwQMNAiAILQAQQQFHDQEgCCgCACEJIAdCgICAgKABNwNIIAcgB0EMaq1CgICAgMAFhDcDQCAJQQRqKAIAIQogCSgCACAHQQE2AiQgB0Go+McANgIgIAdBAjYCHCAHQQI2AhQgB0GM+ccANgIQIAcgDDYCGCAKIAdBEGoQwQMNAgwBCyAJKAIAQZz5xwBBBiAJQQRqKAIAKAIMEQAADQEgCC0AEEEBRw0AIAgoAgAhCSAHQoCAgIDQATcDSCAHQqD4x4CgATcDQCAJQQRqKAIAIQogCSgCACAHQQE2AiQgB0Go+McANgIgIAdBAjYCHCAHQQE2AhQgB0Gg+McANgIQIAcgB0FAazYCGCAKIAdBEGoQwQMNAQsCQAJAIAEoAgBBA0cEQEKAgICA0AUhDSAILQAQRQ0BIAdBMGogAUEgaikCADcDACAHQSBqIAFBEGr9AAIA/QsDACAHIAH9AAIA/QsDECAIKAIAIQEgByANIAdBEGqthDcDOCABQQRqKAIAIQkgASgCACAHQgE3AkwgB0EBNgJEIAdBoPjHADYCQCAHIAdBOGo2AkggCSAHQUBrEMEDRQ0CDAMLIAgoAgAiASgCAEGi+ccAQQkgAUEEaigCACgCDBEAAA0CDAELIAdBMGogAUEgaikCADcDACAHQSBqIAFBEGr9AAIA/QsDACAHIAH9AAIA/QsDECAIKAIAIQEgByANIAdBEGqthDcDOCABQQRqKAIAIQkgASgCACAHQQE2AlQgB0Gs+ccANgJQIAdBATYCTCAHQQE2AkQgB0Gg+McANgJAIAcgB0E4ajYCSCAJIAdBQGsQwQMNAQsgCCgCACIBKAIAQdz4xwBBASABKAIEKAIMEQAADQAgA0EBcUUgAigCAEECRnINAiAHIAQ2AlwCQCAILQAQQQFGBEAgCCgCACEBIAdCgICAgKABNwNIIAdCoPjHgKABNwNAIAFBBGooAgAhAyABKAIAIAdBATYCJCAHQaj4xwA2AiAgB0ECNgIcIAdBATYCFCAHQaD4xwA2AhAgByAHQUBrNgIYIAMgB0EQahDBAw0BCyAIKAIAIgEoAgBBwPjHAEEQIAFBBGooAgAoAgwRAAANACAIKAIEIAgoAgghAyAHQRxqIAJBCGooAgA2AgAgByAIKAIAIgQ2AhAgByACKQIANwIUIAQgB0EUaiADKAIQEQAADQAgCCgCACEBIAdCgICAgBAiDSAHQdwAaq2ENwNAIAFBBGooAgAhAiABKAIAIAdCATcCHCAHQQE2AhQgB0HU+McANgIQIAcgB0FAayIDNgIYIAIgB0EQahDBAw0AIAVBAXFFDQIgByAGNgI4IAgoAgAhASAHIA0gB0E4aq2ENwNAIAFBBGooAgAhAiABKAIAIAdCATcCHCAHQQE2AhQgB0HU+McANgIQIAcgAzYCGCACIAdBEGoQwQNFDQILQQEMAwtBAQwCC0EBIAgoAgAiAigCAEHc+McAQQEgAkEEaigCACgCDBEAAA0BGgsgACALQQFqNgIEQQALIAdB4ABqJAAL7gsCCH8FewJAAkACQCACIANPBEAgA0UNAiABIANqIQUgA0EPTQRAA0AgASAFTw0EIAVBAWsiBS0AAEEKRw0ADAMLAAsgBUEQayIE/QAAAP0MCgoKCgoKCgoKCgoKCgoKCiIM/SP9ZCIGBEAgBCAGZ0Efc2ohBQwCCwJAAkACQAJAAkAgA0HAAEkgAyAFQQ9xayIFQcAASXINAANAIAEgBWoiBEEwayIG/QAEACAM/SMiDSAEQUBqIgj9AAQAIAz9IyIO/VAgBEEgayIH/QAEACAM/SMiD/1QIARBEGsiBP0ABAAgDP0jIhD9UP1kRQRAIAVBQGoiBUFAa0GAAU8NAQwCCwsgEP1kIgUNAyAP/WQiBA0EIA39ZCIEDQEgCCAO/WRna0EfaiEFDAYLA0AgBUEPTARAQQAhByAFQQBKDQNBACEEDAkLIAEgBUEQayIFaiIE/QAAACAM/SP9ZCIGRQ0ACyAEIAZnQR9zaiEFDAULIAYgBGdBH3NqIQUMBAtBACEEIAH9AAAAIAz9I/1kIgVFDQUgASAFZ2tBH2ohBQwDCyAEIAVnQR9zaiEFDAILIAcgBGdBH3NqIQUMAQtBACADIAJB6JzGABDqBwALIAUgAWsiCUEBaiEHIAIgCUsEQCABIAdqIgogAU0EQEEAIQQMAwsgCUEOTQRAQQAhBAJAIAlBA0kEQCABIQUMAQsgASAHQRxxIgJqIQX9DAAAAAAAAAAAAAAAAAAAAAAhDCACIQQDQCAMIAH9XAAA/QwKCgoKCgoKCgoKCgoKCgoK/SMgDP0NAAAAAAEAAAACAAAAAwAAAP0MAQAAAAEAAAABAAAAAQAAAP1O/a4BIQwgAUEEaiEBIARBBGsiBA0ACyAMIAwgDP0NCAkKCwwNDg8AAQIDAAECA/2uASIMIAwgDP0NBAUGBwABAgMAAQIDAAECA/2uAf0bACEEIAIgB0YNBAsDQCAEIAUtAABBCkZqIQQgBUEBaiIFIApHDQALDAMLQQAhAgJAAkAgAUFwcUEQaiIEIAFBAWoiBiAEIAZLGyABayILQQRJBEAgASEGDAELIAEgC0F8cSIIaiEG/QwAAAAAAAAAAAAAAAAAAAAAIQwgCCECA0AgDCAB/VwAAP0MCgoKCgoKCgoKCgoKCgoKCv0jIAz9DQAAAAABAAAAAgAAAAMAAAD9DAEAAAABAAAAAQAAAAEAAAD9Tv2uASEMIAFBBGohASACQQRrIgINAAsgDCAMIAz9DQgJCgsMDQ4PAAECAwABAgP9rgEiDCAMIAz9DQQFBgcAAQIDAAECAwABAgP9rgH9GwAhAiAIIAtGDQELA0AgAiAGLQAAQQpGaiECIAZBAWoiBiAESQ0ACwsCQCAJQT9JDQAgBCAKQUBqIgFLDQADQCAE/QAEAP0MCgoKCgoKCgoKCgoKCgoKCiIM/SP9ZGkgAmogBEEQav0ABAAgDP0j/WRpaiAEQSBq/QAEACAM/SP9ZGlqIARBMGr9AAQAIAz9I/1kaWohAiAEQUBrIgQgAU0NAAsLIApBEGsiASAETwRAA0AgBP0AAAD9DAoKCgoKCgoKCgoKCgoKCgr9I/1kaSACaiECIARBEGoiBCABTQ0ACwtBACEGAkAgBCAKTw0AAkAgBSAEa0EBaiIJQQRJBEAgBCEBDAELIAQgCUF8cSIIaiEB/QwAAAAAAAAAAAAAAAAAAAAAIQwgCCEFA0AgDCAE/VwAAP0MCgoKCgoKCgoKCgoKCgoKCv0jIAz9DQAAAAABAAAAAgAAAAMAAAD9DAEAAAABAAAAAQAAAAEAAAD9Tv2uASEMIARBBGohBCAFQQRrIgUNAAsgDCAMIAz9DQgJCgsMDQ4PAAECAwABAgP9rgEiDCAMIAz9DQQFBgcAAQIDAAECAwABAgP9rgH9GwAhBiAIIAlGDQELA0AgBiABLQAAQQpGaiEGIAFBAWoiASAKRw0ACwsgAiAGaiEEDAILQQAgByACQdicxgAQ6gcACwsgACADIAdrNgIEIAAgBEEBajYCAAvFCQIJfwV9QwAAgD8hDgJ/AkAgASgCACIHIAJBBGooAgAiBEEIaigCACIFSQRAIAFBBGsiCSgCACEBIARBBGooAgAiCCAHQSRsaiIEEIoEIQwgBC8BFCIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEEIANBgIACcSEGIANBgPgBcSIDQYD4AUYEQCAGQRB0IQMgA0GAgID8B3IgBEUNAxogAyAEQQ10ckGAgID+B3IMAwsgBkEQdCEGIANFDQEgA0ENdEGAgID8AHEgBEENdHJBgICAwANqIAZyDAILIAcgBUHUwMcAEIwHAAsgBkGAgIDYA3IgBGdBEGsiA0EXdGsgBCADQf//A3FBCGp0Qf///wNxcgu+Ig1DAACAP14EQCANEMYFQ1T4LUCUQwAAgD+SkSEOC0MAAIA/IQ0CfwJAIAEgBUkEQCAIIAFBJGxqIgQQigQhDyAELwEUIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQQgA0GAgAJxIQUgA0GA+AFxIgNBgPgBRgRAIAVBEHQhAyADQYCAgPwHciAERQ0DGiADIARBDXRyQYCAgP4HcgwDCyAFQRB0IQUgA0UNASADQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIMAgsgASAFQdTAxwAQjAcACyAFQYCAgNgDciAEZ0EQayIDQRd0ayAEIANB//8DcUEIanRB////A3FyC74iEEMAAIA/XgRAIBAQxgVDVPgtQJRDAACAP5KRIQ0LIAwgDJIgDpQiDCAMXCAMIA8gD5IgDZRgckUEQCACQQRqIQggB0EkbCEKA0ACQCAJIgJBBGogATYCACAAIAJGDQBDAACAPyEOAn8CQCAIKAIAIgRBCGooAgAiBSAHSwRAIAJBBGsiCSgCACEBIARBBGooAgAiCyAKaiIEEIoEIQwgBC8BFCIDQf//AXFFBEAgA0EQdAwDCyADQf8HcSEEIANBgIACcSEGIANBgPgBcSIDQYD4AUYEQCAGQRB0IQMgA0GAgID8B3IgBEUNAxogAyAEQQ10ckGAgID+B3IMAwsgBkEQdCEGIANFDQEgA0ENdEGAgID8AHEgBEENdHJBgICAwANqIAZyDAILIAcgBUHUwMcAEIwHAAsgBkGAgIDYA3IgBGdBEGsiA0EXdGsgBCADQf//A3FBCGp0Qf///wNxcgu+Ig1DAACAP14EQCANEMYFQ1T4LUCUQwAAgD+SkSEOC0MAAIA/IQ0CfwJAIAEgBUkEQCALIAFBJGxqIgQQigQhDyAELwEUIgNB//8BcUUEQCADQRB0DAMLIANB/wdxIQQgA0GAgAJxIQUgA0GA+AFxIgNBgPgBRgRAIAVBEHQhAyADQYCAgPwHciAERQ0DGiADIARBDXRyQYCAgP4HcgwDCyAFQRB0IQUgA0UNASADQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogBXIMAgsgASAFQdTAxwAQjAcACyAFQYCAgNgDciAEZ0EQayIDQRd0ayAEIANB//8DcUEIanRB////A3FyC74iEEMAAIA/XgRAIBAQxgVDVPgtQJRDAACAP5KRIQ0LIAwgDJIgDpQiDCAMXA0AIAwgDyAPkiANlGBFDQELCyACIAc2AgALC/YIAg9/AX0jAEEgayIIJAACQAJAAkACQAJAAkAgAC0AuAFBAUcNACAAKAKsASAAKAKwASIFQQJ0IAAoArQBIgYgBWpBAnQQ4QghBSAGQQJ0IgYgACgCZCIHSw0BIAAoAmAhByAIIAUQuAoiCTYCACAIIAY2AgQgBiAJRw0FIAUgByAGEOAJIAVBhAhJDQAgBRCbBwsgAEIANwKwASAAQbgBakEAOgAAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEUNACAAKAIEIAFBAXQgASACakEBdBDhCCEJAkAgAkECdCIHIAAoAmQiBk0EQCAAIAc2AmQgAkEBdCEFIAAoAmAhAQwBCyAHIAYiBWsiCiAAKAJcIAVrSwRAIABB3ABqIAUgCkEEQQQQpAUgACgCZCEFCyAAKAJgIgEgBUECdCIMaiELIApBAk8EQCAHIAZBf3NqQQJ0IgcEQCALQQAgB/wLAAsgAkEEdCAGQQJ0ayABaiAMakEEayELIAUgCmpBAWshBQsgC0EANgIAIAAgBUEBaiIHNgJkIAJBAXQiBSAHSw0MCyAIIAkQuAoiBjYCACAIIAU2AgQgBSAGRw0OIAEgBSAJEOEJIAJBCWwhCiAEQQluQQlsIQsgBEEBa0EJbkEJbEEJaiEMIARBAmtBCW5BCWxBCWohDSAEQQNrQQluQQlsQQlqIQ4gBEEEa0EJbkEJbEEJaiEPIARBBWtBCW5BCWxBCWohECAEQQZrQQluQQlsQQlqIREgBEEHa0EJbkEJbEEJaiESIARBCGtBCW5BCWxBCWohE0MAAHxCIAAqApABlSEUQQAhBUEAIQADQCAFIAdPDQ0gBUEBaiICIAdPDQ4gACAMRg0KIAFBBGooAgAhAiADIAEoAgAiBkEZdEEZdbIgFJU4AgAgACANRg0JIANBBGogBkESdEEZdbIgFJU4AgAgACAORg0IIANBCGogBkELdEEZdbIgFJU4AgAgACAPRg0HIANBDGogBkEEdEEZdbIgFJU4AgAgACAQRg0GIANBEGogAkEddCAGQQN2ckEZdbIgFJU4AgAgACARRg0FIANBFGogAkEWdEEZdbIgFJU4AgAgACASRg0EIANBGGogAkEPdEEZdbIgFJU4AgAgACATRg0DIANBHGogAkEIdEEZdbIgFJU4AgAgACALRg0CIANBIGogAkEBdEEZdbIgFJU4AgAgAUEIaiEBIAVBAmohBSADQSRqIQMgCiAAQQlqIgBHDQALIAlBhAhJDQAgCRCbBwsgCEEgaiQADwsgAEEIaiEADAcLIABBB2ohAAwGCyAAQQZqIQAMBQsgAEEFaiEADAQLIABBBGohAAwDCyAAQQNqIQAMAgsgAEECaiEADAELIABBAWohAAsgACAEQbzTwAAQjAcAC0EAIAYgB0H868AAEOoHAAtBACAFIAdBzNPAABDqBwALIAUgB0Gc08AAEIwHAAsgAiAHQazTwAAQjAcACyAIQQA2AghBACAIIAhBBGogCEEIakHg+cQAEPUHAAvbCQIGfwR+IwBBwAFrIgIkAAJAAkACQCAAKQMAQgJSBEAgACgCqAEhASAAQQA2AqgBAkACQAJAAkAgAUEBaw4CAQIACyACQQhqIQMCQAJAQSUQcSIBRQ0AIAFBHWpBnZ3HACkAADcAACABQRBqQZCdxwD9AAAA/QsAACABQYCdxwD9AAAA/QsAAEEMEHEiBEUNACAEQSU2AgggBCABNgIEIARBJTYCAEEMEHEiAUUNACABQSg6AAggAUHsisEANgIEIAEgBDYCACADQQA2AhAgAyABrUIghkIDhDcDAAwBCwALDAILIAJBGGogAEHAAWopAwA3AwAgAiAA/QADsAH9CwMIDAELIAAoAqwBIgFBQGshAyABKAIkIQQgASgCICEFAkAgASkDGCIHQgJSBEAgASkDOCEIIAJBMGogAUEQaikDADcDACACQegAaiADQQhq/QADAP0LAwAgAkGoAWogAUGIAWr9AAMA/QsDACACQZgBaiABQfgAav0AAwD9CwMAIAJBuAFqIAFBmAFqKQMANwMAIAIgAf0AAwD9CwMgIAIgAf0AAyj9CwNIIAIgAykDADcDYCACIAH9AANY/QsDeCACIAH9AANo/QsDiAEgAkEYaiACQdAAaikDADcDACACIAQ2AkQgAiAFNgJAIAIgBzcDOCACIAg3A1ggAiAC/QADQP0LAwggAigCJCEEIAIoAiAhBSACQfgAahCEBQwBCyACQRhqIANBEGopAwA3AwAgAiAD/QADAP0LAwgLIAQEQCAFQQRrKAIAIgNBeHEiBkEEQQggA0EDcSIDGyAEakkNBCADQQAgBiAEQSdqSxsNBSAFEKICCyABQQRrKAIAIgRBeHFBvAFBwAEgBEEDcSIDG0kNAyADQQAgBEHgAU8bDQQgARCiAgsCQCACKAIYIgEEQCACKQMQIghQDQEgASkDCCEHIAEoAgQiBK0hCQNAAkAgByAEIAcgCSAHIAlUG6ciA2siBUKAwAAgCCAIQoDAAFobpyIGIAUgBkkbrSIKfCEHIAMgBEYNACAIIAp9IghCAFINAQsLIAEgBzcDCCAAEOoDDAMLIAItAAhBA0cNACACKAIMIgEoAgAhBCABQQRqKAIAIgMoAgAiBQRAIAQgBREDAAsgAygCBCIDBEAgBEEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgA2pJDQQgBUEAIAYgA0EnaksbDQUgBBCiAgsgAUEEaygCACIEQXhxIgNBEEEUIARBA3EiBBtJDQMgBEEAIANBNE8bDQQgARCiAgsgABDqAwwBCyAAKAKoAUECSQ0AAkAgACgCrAEiACkDGEICUQRAIAAoAiQiAUUNASAAKAIgIgRBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIAFqSQ0DIANBACAFIAFBJ2pLGw0EIAQQogIMAQsgACgCBCIBBEAgACgCACIEQQRrKAIAIgNBeHEiBUEEQQggA0EDcSIDGyABakkNAyADQQAgBSABQSdqSxsNBCAEEKICCyAAQdgAahCEBQsgAEEEaygCACIBQXhxQbwBQcABIAFBA3EiBBtJDQEgBEEAIAFB4AFPGw0CIAAQogILIAJBwAFqJAAPC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAvrCAIOfwF9IwBBEGsiBiQAAkACQCADQQNsIgdB/////wNLDQAgA0EMbCIEQf3///8HTw0AAkAgBEUEQEEEIQpBACEHDAELIAQQcSIKRQ0CCyAGQQA2AgwgBiAKNgIIIAYgBzYCBAJ/AkACQAJAAkACQCADBEAgASADQQF0Ig5qIQ8gASADQQJ0IhBqIRFBACEHIAMhDUEIIQsDQCACIAdNBEAgByEEDAQLIAdBAWogAk8NBCAGKAIEIQwCfyABIAdqIgRBAWotAABBCHQiCCAELQAAciIEQf//AXEEQCAEQf8HcSEEIAhBgIACcSEFIAhBgPgBcSIIQYD4AUcEQCAFQRB0IgUgCEENdEGAgID8AHEgBEENdHJBgICAwANqciAIDQIaIAVBgICA2ANyIARnQRBrIghBF3RrIAQgCEH//wNxQQhqdEH///8DcXIMAgsgBUEQdCIIIARBDXRyQYCAgP4HciAEDQEaIAhBgICA/AdyDAELIARBEHQLvhCJBCESIAkgDEYEQCAGQQRqQfzoxwAQ+gUgBigCCCEKCyAKIAtqQQhrIBI4AgAgBiAJQQFqIgg2AgwgByAOaiIEIAJPDQMgBEEBaiACTw0FIAYoAgQhDAJ/IAcgD2oiBEEBai0AAEEIdCIFIAQtAAByIgRB//8BcQRAIARB/wdxIQQgBUGAgAJxIQkgBUGA+AFxIgVBgPgBRwRAIAlBEHQiCSAFQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2pyIAUNAhogCUGAgIDYA3IgBGdBEGsiBUEXdGsgBCAFQf//A3FBCGp0Qf///wNxcgwCCyAJQRB0IgUgBEENdHJBgICA/gdyIAQNARogBUGAgID8B3IMAQsgBEEQdAu+EIkEIRIgCCAMRgRAIAZBBGpB/OjHABD6BSAGKAIIIQoLIAogC2pBBGsgEjgCACAGIAhBAWoiCDYCDCAHIBBqIgQgAk8NAiAEQQFqIAJPDQYgBigCBCEMAn8gByARaiIEQQFqLQAAQQh0IgUgBC0AAHIiBEH//wFxBEAgBEH/B3EhBCAFQYCAAnEhCSAFQYD4AXEiBUGA+AFHBEAgCUEQdCIJIAVBDXRBgICA/ABxIARBDXRyQYCAgMADanIgBQ0CGiAJQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAlBEHQiBSAEQQ10ckGAgID+B3IgBA0BGiAFQYCAgPwHcgwBCyAEQRB0C74QiQQhEiAIIAxGBEAgBkEEakH86McAEPoFIAYoAgghCgsgCiALaiASOAIAIAYgCEEBaiIJNgIMIAdBAmohByALQQxqIQsgDUEBayINDQALCyAAIAYpAgQ3AgAgAEEIaiAGQQxqKAIANgIAIAZBEGokAA8LIANBAnQgB2ohBAsgBCACQdzoxwAQjAcACyAHQQFqDAILIARBAWoMAQsgA0ECdCAHakEBagsgAkHs6McAEIwHAAtBzOjHABD/BwsAC/YIARN/IwBBEGsiByQAAkACQCADQQNsIgxB/////wNLDQAgA0EMbCIEQf3///8HTw0AAkAgBEUEQEEEIQoMAQsgDCELIAQQcSIKRQ0CCyAHQQA2AgwgByAKNgIIIAcgCzYCBAJAAkACQAJAAkAgAwRAIAIgA2siBEEAIAIgBE8bIQ0gAiAMayIEQQAgAiAETxshDiABIANqIQ8gASAMaiEQIAEgA0ECdCIRaiESIAEgA0EFbCITaiEUIAEgA0EBdCIVaiEWQQghCwNAIAIgBkYEQCAGIQQMBwsgBiAORg0FAn8gBiAQai0AAEEIdCIFIAEgBmotAAByIgRB//8BcQRAIARB/wdxIQQgBUGAgAJxIQggBUGA+AFxIgVBgPgBRwRAIAhBEHQhCCAFQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogCHIgBQ0CGiAIQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAhBEHQhBSAEQQ10IAVyQYCAgP4HciAEDQEaIAVBgICA/AdyDAELIARBEHQLIQQgBygCBCAJRgRAIAdBBGpBvOrHABD6BSAHKAIIIQoLIAogC2pBCGsgBDYCACAHIAlBAWoiCTYCDCAGIA1GDQMgBiARaiACTw0CAn8gBiASai0AAEEIdCIFIAYgD2otAAByIgRB//8BcQRAIARB/wdxIQQgBUGAgAJxIQggBUGA+AFxIgVBgPgBRwRAIAhBEHQhCCAFQQ10QYCAgPwAcSAEQQ10ckGAgIDAA2ogCHIgBQ0CGiAIQYCAgNgDciAEZ0EQayIFQRd0ayAEIAVB//8DcUEIanRB////A3FyDAILIAhBEHQhBSAEQQ10IAVyQYCAgP4HciAEDQEaIAVBgICA/AdyDAELIARBEHQLIQQgBygCBCAJRgRAIAdBBGpBvOrHABD6BSAHKAIIIQoLIAogC2pBBGsgBDYCACAHIAlBAWoiCTYCDCAGIBVqIgQgAk8NBiAGIBNqIAJPDQQCfyAGIBRqLQAAQQh0IgUgBiAWai0AAHIiBEH//wFxBEAgBEH/B3EhBCAFQYCAAnEhCCAFQYD4AXEiBUGA+AFHBEAgCEEQdCEIIAVBDXRBgICA/ABxIARBDXRyQYCAgMADaiAIciAFDQIaIAhBgICA2ANyIARnQRBrIgVBF3RrIAQgBUH//wNxQQhqdEH///8DcXIMAgsgCEEQdCEFIARBDXQgBXJBgICA/gdyIAQNARogBUGAgID8B3IMAQsgBEEQdAshBCAHKAIEIAlGBEAgB0EEakG86scAEPoFIAcoAgghCgsgCiALaiAENgIAIAcgCUEBaiIJNgIMIAtBDGohCyADIAZBAWoiBkcNAAsLIAAgBykCBDcCACAAQQhqIAdBDGooAgA2AgAgB0EQaiQADwsgA0ECdCAGaiEEDAMLIAMgBmohBAwCCyADQQVsIAZqIQQMAQsgBiAMaiEECyAEIAJBzOrHABCMBwALQazqxwAQ/wcLAAuYCQINfwF+IwBB8ABrIgIkAEEIIQQgASgCBCEFIAFBBEEkIAEoAiQiA0EISyIGG2pBADYCACACQRhqIAFBCGr9AAIA/QsDACACQShqIAFBGGr9AAIA/QsDACACQQA2AjggAiAFIAMgBhsiCDYCPCACIAEpAgA3AxAgAEEkaiELAkACQAJAAkACQAJAIAggACgCJCIBQQggAUEISyIGGyAAKAIEIAEgBhsiBmtLBEACQAJAIAYgCGoiASAGSQ0AQX8gAUEBa2d2QQAgAUECTxsiAUF/Rg0AIAJBCGogACABQQFqEOgDIAIoAggiAUGBgICAeEYNASABDQMLQdiVxwBBEUHUzMcAEOsHAAsgCygCACEBCyAAQQRqIgYhDCALIQkgAUEJTwRAIAAoAgghDCAGIQkgASEECwJAAkACQAJAIAQgCSgCACIFTQRAIAUhBAwBCyACKAIYIQogAigCNCIOQQhNBEAgAkEQakEEciEDIAUgBGshDSAMIAVBAnRqIQdBACEBA0AgASAIRg0DIAIgAUEBaiIBNgI4IAcgAygCADYCACADQQRqIQMgB0EEaiEHIAEgDWoNAAsMAQsgCEUNA0EAIQECQCAEQQFrIg0gBWsiBCAIQQFrIgMgAyAESxsiBEEESQ0AIAVBAnQgDGoiAyAKa0EQSQ0AIAohByAEQQFqIgEgAUEDcSIBQQQgARtrIgEhBANAIAMgB/0AAgD9CwIAIAdBEGohByADQRBqIQMgBEEEayIEDQALIAEgBWohBQsgDCAFQQJ0aiEDIAogAUECdGohBwNAAkAgAyAHKAIANgIAIAVBAWohBCABQQFqIQEgBSANRg0AIANBBGohAyAHQQRqIQcgBCEFIAEgCEcNAQwECwsgAiABNgI4CyAJIAQ2AgAgAkHoAGogAkE4aikDACIPNwMAIAJB4ABqIAJBMGopAwA3AwAgAkHQAGogAkEgav0AAwD9CwMAIAIgAv0AAxD9CwNAIA+nIgEgAigCbEcEQCACQUBrQQRyIQQDQCACIAFBAWo2AmggBCEDIAIoAmRBCU8EfyACKAJIBSADCyABQQJ0aigCACEJAn8gCygCACIHQQlJBEAgByEBIAYhBUEIIQcgCwwBCyAAKAIEIQEgACgCCCEFIAYLIQMgASAHRgR/IAAQzQYgACgCCCEFIAYhAyAAKAIEBSABC0ECdCAFaiAJNgIAIAMgAygCAEEBajYCACACKAJoIgEgAigCbEcNAAsLIAIoAmQiAUEJSQ0IIAIoAkgiA0EEaygCACIAQXhxIgYgAUECdCIBQQRBCCAAQQNxIgAbakkNBCAAQQAgBiABQSdqSxsNBSADEKICDAgLIAEgBWohBAsgCSAENgIAIA5BCUkNBgsgCkEEaygCACIAQXhxIgYgDkECdCIBQQRBCCAAQQNxIgAbakkNAyAAQQAgBiABQSdqSxsNBCAKEKICDAULAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyACQfAAaiQAC6YNAwZ/BHsCfSABKgIAIRMgACoCACESAkACQAJAAkACQAJAAkACQEGACBBxIg1FDQAgEyASk/0TIQ8gEv0TIRD9DAAAAAABAAAAAgAAAAMAAAAhDgNAIAggDWoiCiAQIA8gDv37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgCkEQaiAQIA8gDv0MBAAAAAQAAAAEAAAABAAAAP2uAf37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgDv0MCAAAAAgAAAAIAAAACAAAAP2uASEOIAhBIGoiCEGACEcNAAsgASoCBCAAKgIEIRJBgAgQcSIKRQ0AIBKT/RMhDyAS/RMhEP0MAAAAAAEAAAACAAAAAwAAACEOQQAhCANAIAggCmoiCyAQIA8gDv37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgC0EQaiAQIA8gDv0MBAAAAAQAAAAEAAAABAAAAP2uAf37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgDv0MCAAAAAgAAAAIAAAACAAAAP2uASEOIAhBIGoiCEGACEcNAAsgASoCCCAAKgIIIRJBgAgQcSILRQ0AIBKT/RMhDyAS/RMhEP0MAAAAAAEAAAACAAAAAwAAACEOQQAhCANAIAggC2oiDCAQIA8gDv37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgDEEQaiAQIA8gDv0MBAAAAAQAAAAEAAAABAAAAP2uAf37Af0MAAB/QwAAf0MAAH9DAAB/Q/3nAf3mAf3kAf0Mu26QPrtukD67bpA+u26QPv3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kAf0LAgAgDv0MCAAAAAgAAAAIAAAACAAAAP2uASEOIAhBIGoiCEGACEcNAAsgASoCDCAAKgIMIRJBgAgQcSIBRQ0AIBKT/RMhECAS/RMhEf0MAAAAAAEAAAACAAAAAwAAACEOQQAhCANAIAEgCGr9DAAAgD8AAIA/AACAPwAAgD/9DAAAgD8AAIA/AACAPwAAgD8gESAQIA79+wH9DAAAf0MAAH9DAAB/QwAAf0P95wH95gH95AH94QEiD/0fABCJBP0TIA/9HwEQiQT9IAEgD/0fAhCJBP0gAiAP/R8DEIkE/SAD/eQB/ecB/QsCACAO/QwEAAAABAAAAAQAAAAEAAAA/a4BIQ4gCEEQaiIIQYAIRw0ACyAHRQ0HQQAhAEEAIQgDQCADIAhNBEAgCCADQZDwxwAQjAcACyAAIAVPDQIgBCANIAIgCGoiDC0AAEECdGoqAgA4AgAgCEEBaiIJIANPDQMgAEEBaiIJIAVPDQQgBEEEaiAKIAxBAWotAABBAnRqKgIAOAIAIAhBAmoiCSADTw0FIABBAmoiCSAFTw0GIARBCGogCyAMQQJqLQAAQQJ0aioCADgCACAIQQNqIgkgA08NByAGIAhqIAEgDEEDai0AAEECdGoqAgA4AgAgBEEMaiEEIABBA2ohACAIQQRqIQggB0EBayIHDQALDAcLAAsgACAFQaDwxwAQjAcACyAJIANBsPDHABCMBwALIAkgBUHA8McAEIwHAAsgCSADQdDwxwAQjAcACyAJIAVB4PDHABCMBwALIAkgA0Hw8McAEIwHAAsCQCABQQRrKAIAIgBBeHFBhAhBiAggAEEDcSICG08EQAJAIAJBACAAQagITxsNAiABEKICIAtBBGsoAgAiAEF4cUGECEGICCAAQQNxIgEbSQ0AIAFBACAAQagITxsNAiALEKICIApBBGsoAgAiAEF4cUGECEGICCAAQQNxIgEbSQ0AIAFBACAAQagITxsNAiAKEKICIA1BBGsoAgAiAEF4cUGECEGICCAAQQNxIgEbSQ0AIAFBACAAQagITxsNAiANEKICDwsLQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcAC7kJAgh/AX4jAEFAaiIFJAACQCAAAn8CQAJAAkAgASgCFCIEIAEoAhAiAkkEQCABKAIMIQkCfgJAA0AgBCAJai0AACIIQQlrIgNBF0tBASADdEGTgIAEcUVyDQEgASAEQQFqIgQ2AhQgAiAERw0ACyACIQRCAAwBC0KAAgsgCK1CEIaEQoCCuANRDQELIAVBEGogASgCDCIGIAIgAiAESwR/A0AgBCAGai0AACIIQQlrIgNBF0tBASADdEGTgIAEcUVyDQMgASAEQQFqIgQ2AhQgAiAERw0ACyACBSAEC0EBaiIBIAIgASACSRsQ+QEgBSgCFCEDIAUoAhAhAUEUEHEiAkUNBCACIAE2AgwgAkEFNgIAIAIgAzYCECAAIAI2AgQMAgsgASAEQQFqIgY2AhQCQAJAAkAgAiAGTQ0AIAEgBEECaiIDNgIUIAYgCWotAABB9QBHDQEgAyAGIAIgAiAGSRsiBkYNACABIARBA2oiCDYCFCADIAlqLQAAQewARwRAIAghAwwCCyAGIAhGDQAgASAEQQRqIgM2AhQgCCAJai0AAEHsAEcNASAAQQI6AAFBAAwFCyAFIAkgAiAGEPkBIAUoAgQhBiAFKAIAIQFBFBBxIgRFDQUgBEEFNgIADAELIAVBCGogCSACIAMQ+QEgBSgCDCEGIAUoAgghAUEUEHEiBEUNBCAEQQk2AgALIAQgATYCDCAAIAQ2AgQgBCAGNgIQDAELAkAgCEHmAGsiAwRAIANBDkcEQCAAIAEgBUE/akGMhsEAEO4BIAEQ6wU2AgQMAwsgASAEQQFqIgc2AhQCQCACIAdNDQAgASAEQQJqIgM2AhQgBiAHai0AAEHyAEcNAiADIAcgAiACIAdJGyIHRg0AIAEgBEEDaiIINgIUIAMgBmotAABB9QBHBEAgCCEDDAMLIAcgCEYNACABIARBBGoiAzYCFCAGIAhqLQAAQeUARw0CIABBAToAAUEADAQLIAVBGGogBiACIAcQ+QEgBSgCHCEDIAUoAhghAUEUEHEiAkUNBCACIAE2AgwgAkEFNgIAIAIgAzYCECAAIAI2AgQMAgsgASAEQQFqIgc2AhQCQAJAIAIgB00NACABIARBAmoiAzYCFCAGIAdqLQAAQeEARw0BIAMgByACIAIgB0kbIgdGDQAgASAEQQNqIgk2AhQgAyAGai0AAEHsAEcEQCAJIQMMAgsgByAJRg0AIAEgBEEEaiIINgIUIAYgCWotAABB8wBHBEAgCCEDDAILIAcgCEYNACABIARBBWoiAzYCFCAGIAhqLQAAQeUARw0BIABBADoAAUEADAQLIAVBKGogBiACIAcQ+QEgBSgCLCEDIAUoAighAUEUEHEiAkUNBCACIAE2AgwgAkEFNgIAIAIgAzYCECAAIAI2AgQMAgsgBUEwaiAGIAIgAxD5ASAFKAI0IQMgBSgCMCEBQRQQcSICRQ0DIAIgATYCDCACQQk2AgAgAiADNgIQIAAgAjYCBAwBCyAFQSBqIAYgAiADEPkBIAUoAiQhAyAFKAIgIQFBFBBxIgJFDQIgAiABNgIMIAJBCTYCACACIAM2AhAgACACNgIEC0EBCzoAACAFQUBrJAAPCwALvRMBCX8jAEEgayIHJAACQAJAAkADQAJAIAEoAgghAyABEM8FAkACQCABKAIIIgQgASgCBCIGRwRAIAQgBk8NASABKAIAIgggBGotAAAiBUHcAEcEQCAFQSJHBEAgASAEQQFqNgIIIAdBEDYCFCAAIAEgB0EUahDyBgwJCwJAAkACQCACKAIIIgUEQCADIARLDQIgBCADayIGIAIoAgAgBWtLBEAgAiAFIAYQ+AUgAigCCCEFCyACKAIEIQkgBgRAIAUgCWogAyAIaiAG/AoAAAsgASAEQQFqNgIIIAIgBSAGaiICNgIIIAdBCGogCSACEPsCIAcoAggNASAHKAIQIQMgBygCDCEBDAsLAkAgAyAETQRAIAEgBEEBajYCCCAHQQhqIAMgCGogBCADaxD7AiAHKAIIRQRAIAcoAhAhAyAHKAIMIQEMDAsgB0EPNgIUIAcgASAHQRRqEPUGIAcoAgAiAUUNASAHKAIEIQMMCwsgAyAEIAZBqJzGABDqBwALIAAgBygCBDYCBCAAQQI2AgAMCwsgB0EPNgIUIAcgASAHQRRqEPUGIAcoAgAiAUUNASAHKAIEIQMMCQsgAyAEIAZBuJzGABDqBwALIAAgBygCBDYCBCAAQQI2AgAMCAsCQCADIARNBEAgBCADayIJIAIoAgAgAigCCCIKa0sEQCACIAogCRD4BSACKAIIIQoLIAIoAgQhBSAJBEAgBSAKaiADIAhqIAn8CgAACyABIARBAWoiCzYCCCACIAkgCmoiAzYCCAJAAkACQAJAAkACQAJAAkACQAJAAn8gBiALSwRAIAEgBEECajYCCCAIIAtqLQAADAELIAdBBDYCFCAHQQhqIAEgB0EUahDzBiAHLQAIDQwgBy0ACQtB/wFxQSJrDlQCAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAYAAAAAAAAABwAAAAgACQEACyAHQQw2AhQgASAHQRRqEIsHIQMMDgsjAEEgayIEJAACQAJAAkAgASgCBCIDIAEoAggiBk8EQAJAIAMgBmtBA00EQCABIAM2AgggBEEENgIUIARBDGogASAEQRRqEPQGIAMhBQwBCyABIAZBBGoiBTYCCCABKAIAIAZqIgYtAAFBAXQvAYiURiAGLQAAQQF0LwGImEZywUEIdCAGLQACQQF0LgGImEZyIAYtAANBAXQuAYiURnIiBkEATgRAIARBADsBDCAEIAY7AQ4MAQsgBEEMNgIUIARBDGogASAEQRRqEPQGCyAELwEMQQFGBEAgBCgCECEDDAQLIAQvAQ4iBkGA+ANxQYC4A0YNASAGQYDIAGpB//8DcUGA+ANPBEAgASgCACEJAn8gAyAFSwRAIAUgCWotAAAMAQsgBEEENgIUIARBDGogASAEQRRqEPMGIAQtAAxBAUYEQCAEKAIQIQMMBgsgBC0ADQsgASAFQQFqIgg2AghB3ABGBEACfyADIAhLBEAgCCAJai0AAAwBCyAEQQQ2AhQgBEEMaiABIARBFGoQ8wYgBC0ADEEBRgRAIAQoAhAhAwwHCyAELQANCyAFQQJqIQhB9QBGBEAgAyAISQ0FAkAgAyAIa0EDTQRAIAEgAzYCCCAEQQQ2AhQgBEEMaiABIARBFGoQ9AYMAQsgASAFQQZqNgIIIAggCWoiAy0AAUEBdC8BiJRGIAMtAABBAXQvAYiYRnLBQQh0IAMtAAJBAXQuAYiYRnIgAy0AA0EBdC4BiJRGciIDQQBOBEAgBEEAOwEMIAQgAzsBDgwBCyAEQQw2AhQgBEEMaiABIARBFGoQ9AYLIAQvAQxBAUYEQCAEKAIQIQMMBwsgBC8BDiIFQYBAa0H//wNxQYD4A08EQCAFQYDIAGpB//8DcSAGQYDQAGpB//8DcUEKdHIiCEGAgARqIQYgAigCACACKAIIIgNrQQNNBEAgAiADQQQQ+AUgAigCCCEDCyACIANBBGo2AgggAigCBCADaiIDIAZBEnZB8AFyOgAAIANBA2ogBUE/cUGAAXI6AAAgAyAIQQZ2QT9xQYABcjoAAiADIAZBDHZBP3FBgAFyOgABQQAhAwwHCyAEQRQ2AhQgASAEQRRqEIsHIQMMBgsgASAINgIIIARBFzYCFCABIARBFGoQiwchAwwFCyAEQRc2AhQgASAEQRRqEIsHIQMMBAsgBkGAAU8EQCACKAIAIAIoAggiA2tBA00EQCACIANBBBD4BSACKAIIIQMLIAIoAgQgA2ohBQJ/IAZBgBBJBEAgBkEGdkFAciEIQQIMAQsgBSAGQQZ2QT9xQYABcjoAASAGQQx2QWByIQhBAwshCSAFIAg6AAAgAiADIAlqNgIIIAUgCWpBAWsgBkE/cUGAAXI6AABBACEDDAQLIAIoAggiAyACKAIARgRAIAJB+JPGABCnBgsgAiADQQFqNgIIIAIoAgQgA2ogBjoAAEEAIQMMAwsgBiADIANByKXGABDqBwALIARBFDYCFCABIARBFGoQiwchAwwBCyAIIAMgA0HIpcYAEOoHAAsgBEEgaiQAIANFDQ4MDQsgAigCACADRgRAIAJB+JLGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQSI6AAAMCwsgAigCACADRgRAIAJBiJPGABCnBiACKAIEIQULIAIgA0EBajYCCCADIAVqQdwAOgAADAoLIAIoAgAgA0YEQCACQZiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEvOgAADAkLIAIoAgAgA0YEQCACQaiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEIOgAADAgLIAIoAgAgA0YEQCACQbiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEMOgAADAcLIAIoAgAgA0YEQCACQciTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEKOgAADAYLIAIoAgAgA0YEQCACQdiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakENOgAADAULIAIoAgAgA0YEQCACQeiTxgAQpwYgAigCBCEFCyACIANBAWo2AgggAyAFakEJOgAADAQLIAMgBCAGQcicxgAQ6gcACyAHKAIMIQMMAwsgB0EENgIUIAAgASAHQRRqEPIGDAYLIAQgBkGYnMYAEIwHAAsMAQsLIABBAjYCACAAIAM2AgQMAgsgACADNgIIIAAgATYCBCAAQQA2AgAMAQsgACADNgIIIAAgATYCBCAAQQE2AgALIAdBIGokAAvFBwEEfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBQECAw0EAAsgAC0ABEEDRw0MIAAoAggiAygCACEAIANBBGooAgAiASgCACICBEAgACACEQMACyABKAIEIgEEQCAAQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNDyACQQAgBCABQSdqSxsNDiAAEKICCyADQQRrKAIAIgBBeHEiAUEQQRQgAEEDcSIAG0kNDiAARSABQTRJcg0LDA0LAkAgAC0ABEEBaw4C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gICAgIAEhDcDECADQgE3AiQgA0EBNgIcIANBoPjHADYCGCADIANBEGo2AiAgA0EEaiADQRhqEOwDQYCAgIB4IQYgAygCCCEFIAMoAgQhBCADNQIMIQpBACEHQRELIQAgAyAKNwMgIAMgBTYCHCADIAg6ABkgAyAAOgAYIANBGGogASACENAFIQACQAJAAkACQAJAIAlFBEAgByAERXINBgwBCyAGBEAgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBmpJDQIgAUEAIAIgBkEnaksbDQMgBRCiAgsgBEUgB3INBQsgBUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgBGpJDQIgAUEAIAIgBEEnaksbDQMgBRCiAgwEC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAtBzIzIAEEuQfyMyAAQ6wcAC0GMjcgAQS5BvI3IABDrBwALIANBMGokACAAC+YFAQN/IwBBIGsiAyQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HIAEQ5QRFDQcgA0EOakEAOgAAIANBADsBDCADIAFBFHYtANy2RToADyADIAFBBHZBD3EtANy2RToAEyADIAFBCHZBD3EtANy2RToAEiADIAFBDHZBD3EtANy2RToAESADIAFBEHZBD3EtANy2RToAECABQQFyZ0ECdiICIANBDGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRRqIgQgAUEPcS0A3LZFOgAAIAAgAykBDDcAACADQf0AOgAVDAgLIABCADcBAiAAQdzgADsBAAwKCyAAQgA3AQIgAEHc6AE7AQAMCQsgAEIANwECIABB3OQBOwEADAgLIABCADcBAiAAQdzcATsBAAwHCyAAQgA3AQIgAEHcuAE7AQAMBgsgAkGAAnFFDQEgAEIANwECIABB3M4AOwEADAULIAJB////B3FBgIAETw0DCyABEOECDQEgA0EYakEAOgAAIANBADsBFiADIAFBFHYtANy2RToAGSADIAFBBHZBD3EtANy2RToAHSADIAFBCHZBD3EtANy2RToAHCADIAFBDHZBD3EtANy2RToAGyADIAFBEHZBD3EtANy2RToAGiABQQFyZ0ECdiICIANBFmoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQR5qIgQgAUEPcS0A3LZFOgAAIAAgAykBFjcAACADQf0AOgAfCyAAQQhqIAQvAQA7AABBCgwDCyAAIAE2AgBBgAEhAkGBAQwCCyAAQgA3AQIgAEHcxAA7AQALQQAhAkECCzoADSAAIAI6AAwgA0EgaiQAC9MEAgZ+BH8gACAAKAI4IAJqNgI4AkAgACgCPCILRQRADAELQQQhCQJ+QQggC2siCiACIAIgCksbIgxBBEkEQEEAIQlCAAwBCyABNQAACyEDIAwgCUEBcksEQCABIAlqMwAAIAlBA3SthiADhCEDIAlBAnIhCQsgACAAKQMwIAkgDEkEfiABIAlqMQAAIAlBA3SthiADhAUgAwsgC0EDdEE4ca2GhCIDNwMwIAIgCk8EQCAAIAApAxggA4UiBCAAKQMIfCIGIAApAxAiBUINiSAFIAApAwB8IgWFIgd8IgggB0IRiYU3AxAgACAIQiCJNwMIIAAgBiAEQhCJhSIEQhWJIAQgBUIgiXwiBIU3AxggACADIASFNwMADAELIAAgAiALajYCPA8LIAIgCmsiAkEHcSEJIAJBeHEiAiAKSwRAIAApAwghBCAAKQMQIQMgACkDGCEGIAApAwAhBQNAIAQgBiABIApqKQAAIgeFIgZ8IgQgAyAFfCIFIANCDYmFIgN8IgggA0IRiYUhAyAEIAZCEImFIgRCFYkgBCAFQiCJfCIFhSEGIAhCIIkhBCAFIAeFIQUgCkEIaiIKIAJJDQALIAAgAzcDECAAIAY3AxggACAENwMIIAAgBTcDAAtBBCECAn4gCUEESQRAQQAhAkIADAELIAEgCmo1AAALIQMgCSACQQFySwRAIAEgCmogAmozAAAgAkEDdK2GIAOEIQMgAkECciECCyAAIAIgCUkEfiABIAIgCmpqMQAAIAJBA3SthiADhAUgAws3AzAgACAJNgI8C5MFAwJ7BX8BfgJAAkACQEF/IAQtAL8CIgdBD3F0IgRB/wFxQf8BRwRAQf8BIARBf3MiC0H/AXFuIQhBASAHdEGWAnFFIAdBCEtyDQFBCCAHbq0gAa1+IgxCIIhQIAynIANJcQ0CIAAgAWohCQJAIAdBCEcEQCADRQ0BQQggB2shBEF/IQEDQCABQQBIBEAgACAJRg0HIAAtAAAhCiAEIQEgAEEBaiEACyACIAogAXYgC3EgCGw6AAAgASAHayEBIAJBAWohAiADQQFrIgMNAAsMAQsgAUUNACADIAFBAWsiASABIANLG0EBaiIBQRFPBEAgAiABIAFBD3EiAUEQIAEbayIBaiADIAFrIQMgACABaiEHIAj9DyEFA0AgAiAA/QAAACIG/RYAIAX9FgBs/Q8gBv0WASAF/RYBbP0XASAG/RYCIAX9FgJs/RcCIAb9FgMgBf0WA2z9FwMgBv0WBCAF/RYEbP0XBCAG/RYFIAX9FgVs/RcFIAb9FgYgBf0WBmz9FwYgBv0WByAF/RYHbP0XByAG/RYIIAX9Fghs/RcIIAb9FgkgBf0WCWz9FwkgBv0WCiAF/RYKbP0XCiAG/RYLIAX9Fgts/RcLIAb9FgwgBf0WDGz9FwwgBv0WDSAF/RYNbP0XDSAG/RYOIAX9Fg5s/RcOIAb9Fg8gBf0WD2z9Fw/9CwAAIABBEGohACACQRBqIQIgAUEQayIBDQALIQIgByEACwNAIANFDQEgAiAALQAAIAhsOgAAIAJBAWohAiADQQFrIQMgAEEBaiIAIAlHDQALCw8LQfSXxQAQgQgAC0Gwl8UAQTRB5JfFABDrBwALQYSWxQBB5QBB7JbFABDrBwALQfyWxQBBIkGgl8UAEKsHAAvkBAIIfwR9IAEoAggiCEUEQCAAQQA2AgAPCyABIAhBAWsiAjYCCCABKAIEIgMgAkEDdGoiASgCBCEFIAEqAgAhCgJAIAJFBEAgBSEJIAohDQwBCyADKAIEIQkgAyAFNgIEIAMqAgAhDSADIAo4AgBBACEBQQEhBCAIQQRPBEAgAkECayIBQQAgASACTRshB0EAIQIDQCADIAJBA3RqIAMgBCADIARBA3RqIgJBCGoqAgAiDCAMWyAMIAIqAgAiC2BFcSIBIAFBfyALIAxgGyALIAtcGyIBQQBMIAJBBGooAgAgAkEMaigCAE0gARtqIgFBA3RqKQIANwIAIAFBAXQiBkEBciEEIAEhAiAGIAdJDQALCwJAAkAgCEECayAERgRAIAMgAUEDdGogAyAEQQN0aiIBKQIANwIAIAEgBTYCBCABIAo4AgAgBCEBDAELIAMgAUEDdGoiAiAFNgIEIAIgCjgCACABDQBBACECDAELIAogClsEQANAIAMgAUEBayIGQQF2IgJBA3RqIgcqAgAiCyALWyAKIAtfRXFBfyAKIAtgGyIEQQBMIAUgB0EEaigCAE0gBBsEQCABIQIMAwsgAyABQQN0aiAHKQIANwIAIAIhASAGQQFLDQAMAgsACwNAAkAgAyABQQFrIgRBAXYiAkEDdGoiBioCACILIAtbIAogC19FcQ0AIAUgBkEEaigCAEsNACABIQIMAgsgAyABQQN0aiAGKQIANwIAIAIhASAEQQJPDQALCyADIAJBA3RqIgEgBTYCBCABIAo4AgALIAAgCTYCCCAAIA04AgQgAEEBNgIAC4kGAQV/IwBBIGsiAiQAQQEhBAJAAkACQAJAAkACQEEBIAAoAgAiA0H/////B2ogA0GAgICAeE0bQQFrDgQBAgMEAAsgASgCACIDQcSjxwBBAiABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIANBu7PFAEEBIAURAAANBiAAIAEQrgINBiABKAIAIQMgASgCBCgCDCEFDAELIANB24HCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEK4CDQUgAigCEEHZgcIAQQIgAigCFCgCDBEAAA0FCyADQd6OyABBASAFEQAAIQQMBAsgASgCACIDQcajxwBBDiABKAIEIgYoAgwiBREAAA0DAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0FIAAoAgQgACgCCCABELUCRQ0BDAULIANB24HCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQeCBwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACgCBCAAKAIIIAJBEGoQtQINBCACQdmBwgBBAhCvAw0ECyADQd6OyABBASAFEQAAIQQMAwsgASgCACIDQdSjxwBBEiABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgA0G7s8UAQQEgBREAAA0EIAAoAgQgACgCCCABELUCRQ0BDAQLIANB24HCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIg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AkACQAJAAkACQAJAQRUgASgCACIDQYCAgIB4cyADQQBOG0EBaw4IAQIDBAUGBwgACyABIAJBH2pB6OfAABCVCCEBIABBAToAACAAIAE2AgQMCAsgAEEAOgAAIAAgAS0ABDoAAQwHCyABLwEEIgFB/wFNBEAgACABOgABIABBADoAAAwHCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwGCyABKAIEIgFB/wFNBEAgACABOgABIABBADoAAAwGCyACQQE6AAggAiABrTcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwFCyABKQMIIgRC/wFYBEAgACAEPAABIABBADoAAAwFCyACQQE6AAggAiAENwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAEsAAQiAUEASARAIAJBAjoACCACIAGsNwMQIAAgAkEIaiACQR9qQejnwAAQ3gY2AgQgAEEBOgAADAQLIAAgAToAASAAQQA6AAAMAwsgAS8BBCIBQYACTwRAIAJBAjoACCACIAGtwzcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwDCyAAIAE6AAEgAEEAOgAADAILIAEoAgQiAUGAAk8EQCACQQI6AAggAiABrDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEIABBAToAAAwCCyAAIAE6AAEgAEEAOgAADAELIAACfyABKQMIIgRCgAJaBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHo58AAEN4GNgIEQQEMAQsgACAEPAABQQALOgAACyACQSBqJAALxgQCBn8DfgJAIAEoAgBBAUYEQCABKQMQIgpQBEAMAgsgASgCGCIGKAIAIAYpAwgiCyAGKAIEIgWtIgwgCyAMVBunaiEHAkAgBUL/////DyALIAtC/////w9aG6drIgRBACAEIAVNGyIFIAogA60iDCAKIAxUG6ciBCAEIAVLGyIEQQFGBEAgAiAHLQAAOgAADAELIARFDQAgAiAHIAT8CgAACyABIAogBK0iCn03AxAgBiAKIAt8NwMIIARFBEBBACEEDAILQQEgBGshCCADQQFrIQYgASgCJCEJIAEoAiAhByABKAIoIQMDQAJAIAIgAi0AACADQQNy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KCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahDUASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2AjggAUEBNgIsIAFBqKPBADYCKCABQgQ3AjAgAUEoahCSByEDCyABQdAAaiQAIAML0wQCB38BfiMAQdAAayIBJAACQCAAEFwiAw0AIAAoAtwEIgJBgYCAgHhGIgRFBEACQAJAIAJBgICAgHhGBEBBACAAIAQbIQUgACgCCCIGQQZ0IQMgACgCBCIHQTxqIQICQANAIAIhBCADRQ0BIANBQGohAyACQUBrIQIgBC0AAEEBRw0ACyAEQTxrIgIoAjggAigCICIERw0DIAQgACgC7AJHDQMLIAZBBnQhAyAHQTxqIQIDQCACIQQgA0UNAiADQUBqIQMgAkFAayECIAQtAABBAkcNAAsgBEE8ayICKAI4IAIoAiBGDQEgAUECNgIsIAFBiKPBADYCKCABQgI3AjQgAUKAgICAECIIIAJBOGqthDcDSCABIAggAkEgaq2ENwNAIAEgAUFAazYCMCABQRxqIgAgAUEoahCxBiAAEI4HIQMMBAsgACgCgAQgACgC+ANGDQAgAUECNgIsIAFB5KLBADYCKCABQgI3AjQgAUKAgICAECIIIABBgARqrYQ3A0ggASAIIABB+ANqrYQ3A0AgASABQUBrNgIwIAFBBGoiACABQShqELEGIAAQjgchAwwDCyAAQfQEahCjASEDDAILIAFBAjYCLCABQeSiwQA2AiggAUICNwI0IAFCgICAgBAiCCACQThqrYQ3A0ggASAIIAVB7AJqrYQ3A0AgASABQUBrNgIwIAFBEGoiACABQShqELEGIAAQjgchAwwBCyABQQA2Ajgg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rgQCBX8EfiMAQSBrIgIkAEEEIQMgASgCBCIErSEIIAECfgJAIARC/////w8gASkDCCIHIAdC/////w9aG6drIgZBACAEIAZPG0EETwRAIAEoAgAgByAIIAcgCFQbp2ooAAAhBQwBC0GokMgAKQMAIglCCIghCiAJpyEDIAggCUL/AYNCBFINARoLIAdCBHwLIgk3AwgCQCADQf8BcUEERwRAIABBEmogAkEWai8BADsBACACIAOtQv8BgyAKQgiGhDcCDCACQQRqIAJBDWotAAAiAToAACAAIAIpAQ43AQogAiACKAAJIgM2AgAgAEEJaiABOgAAIAAgAzYABSAAQQA6AAQgAEEBNgIADAELIAJBCGpBAXIgBRCYBCACQRxqIAJBDWotAAA6AAAgAiACKAAJIgM2AgAgAiADNgIYAkACQCAEIAkgCCAIIAlWG6ciA2tBBE8EQCABKAIAIANqKAAAIQRBBCEDQgAhBwwBC0EAIQRBqJDIACkDACIKQgiIIQcgCqchAyAKQv8Bg0IEUg0BCyAJQgR8IQgLIAEgCDcDCCADQf8BcUEERwRAIAAgAzoACCAAQQA6AAQgAEEBNgIAIAAgB6ciATsACSAAIAdCGIg+AgwgAEELaiABQRB2OgAADAELIAAgAigCGDYAECAAQQA2AgAgACAErTcDCCAAQRRqIAJBHGotAAA6AAAgAEF/IAQgBEEBcWoiACAAIARJG603AxgLIAJBIGokAAvdBAIHfwF+IwBBEGsiAyQAAkAgAC8BDCICRQRAIAAoAgAgACgCBCABEKEDIQEMAQsgAyAB/QACAP0LAwACQAJ/IAApAggiCaciB0GAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEAAA0BIAAgB0GAgID/eXFBsICAgAJyIgc2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEIAkAgAygCDCIFRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIEDQFBAQwCCyABQQhqKAIADAELIARB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdkEBagsgAUEMaiEBIAZqIQYgBUEBayIFDQALCwJAIAYgCGoiASACQf//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IAEoAiAiAiABKAIcIgFGDQELIAEgB2ohCCACIAFrIQMLIAAgAzYCBCAAIAg2AgAgBkEQaiQAC70DAgZ/AX4jAEHQAGsiAiQAIAJBIGogACAAKAIAKAIEEQEAIAIgAkEwaq1CgICAgLABhDcDKCACIAIpAyA3AjAgASgCACEFIAEoAgQhBiACQgE3AkRBASEDIAJBATYCPCACQaD4xwA2AjggAiACQShqNgJAAkAgBSAGIAJBOGoQwQMNACABLQAKQYABcUUEQEEAIQMMAQsgAkEYaiAAIAAoAgAoAgQRAQAgAkEQaiACKAIYIAIoAhwoAhgRAQAgAigCECIERQRAQQAhAwwBCyACQQhqIAQgAigCFCIHKAIYEQEAIAIoAgwhACACKAIIIQEgAiAHNgIsIAIgBDYCKCACQQE2AjwgAkGA8cEANgI4IAJCATcCRCACIAJBKGqtQoCAgICwAYQiCDcDMCACIAJBMGo2AkAgBSAGIAJBOGoQngkNAANAIAFFBEBBACEDDAILIAIgASAAKAIYEQEAIAIoAgQgAigCACACIAA2AiwgAiABNgIoIAJBATYCPCACQYDxwQA2AjggAkIBNwJEIAIgCDcDMCACIAJBMGo2AkAhASEAIAUgBiACQThqEJ4JRQ0ACwsgAkHQAGokACADC5QDACAAIARqIQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4HBwABAgMEBQYLIABBfU0gAEECaiIBIANNcQ0HIAAgASADQbTZxwAQ6gcACyAAQX1NIABBAmoiASADTXENByAAIAEgA0HE2ccAEOoHAAsgAEF7TSAAQQRqIgEgA01xDQcgACABIANB1NnHABDqBwALIABBe00gAEEEaiIBIANNcQ0HIAAgASADQeTZxwAQ6gcACyAAQXtNIABBBGoiASADTXENByAAIAEgA0H02ccAEOoHAAsgAEF3TSAAQQhqIgEgA01xDQcgACABIANBhNrHABDqBwALIAAgA0kNCCAAIANBlNnHABCMBwALIAAgA0kNBiAAIANBpNnHABCMBwALIAAgAmouAACyDwsgACACai8AALMPCyAAIAJqKAAAsg8LIAAgAmooAACzDwsgACACaioAAA8LIAAgAmorAAC2DwsgACACai0AALNDAAB/Q5UPCyAAIAJqLAAA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AAs2AgAgBUEgaiQAC4QDAgJ/AXsCQAJAIARBBE8EQCACIARBBGtBA24iBSACIAVJGyIFQQNNDQEgAiAFQQFqIgIgAkEDcSICQQQgAhtrIgZrIQIgASAGaiAEIAZBfWxqIQQgAyAGQQNsaiEHA0AgAyAAIAH9XAAA/YkB/akBIgj9GwBBAnRqKAAANgAAIANBA2ogACAI/RsBQQJ0aigAADYAACADQQZqIAAgCP0bAkECdGooAAA2AAAgA0EJaiAAIAj9GwNBAnRqKAAANgAAIAFBBGohASADQQxqIQMgBkEEayIGDQALIQEgByEDDAELIAQNAQ8LA0AgAkUEQEEAQQBBpJrFABCMBwALIAMgACABLQAAQQJ0aigAADYAACADQQNqIQMgAkEBayECIAFBAWohASAEQQNrIgRBA0sNAAsLAkAgAgRAIARBA0cNASADIAAgAS0AAEECdGoiAC8AADsAACADQQJqIABBAmotAAA6AAAPC0EAQQBBhJrFABCMBwALQQBBAyAEQZSaxQAQ6gcAC4EDAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQQFrDgcHAAECAwQFBgsgA0F9TSADQQJqIgAgAk1xDQcgAyAAIAJBtNjHABDqBwALIANBfU0gA0ECaiIAIAJNcQ0HIAMgACACQcTYxwAQ6gcACyADQXtNIANBBGoiACACTXENByADIAAgAkHU2McAEOoHAAsgA0F7TSADQQRqIgAgAk1xDQcgAyAAIAJB5NjHABDqBwALIANBe00gA0EEaiIAIAJNcQ0HIAMgACACQfTYxwAQ6gcACyADQXdNIANBCGoiACACTXENByADIAAgAkGE2ccAEOoHAAsgAiADTQ0HIAEgA2osAACyDwsgAiADSw0HIAMgAkGk2McAEIwHAAsgASADai4AALIPCyABIANqLwAAsw8LIAEgA2ooAACyDwsgASADaigAALMPCyABIANqKgAADwsgASADaisAALYPCyADIAJBlNjHABCMBwALIAEgA2otAACzC58DAgF+CH8CQAJAAkACQAJAIAAoAgQiBEUNACAAKAIMIggEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkGABGshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/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jOrHABCMBwALQezpxwAQ/wcLAAucAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBwUAAQICAgMECyADQX1NIANBAmoiACACTXENBSADIAAgAkG02scAEOoHAAsgA0F9TSADQQJqIgAgAk1xDQUgAyAAIAJBxNrHABDqBwALIANBe00gA0EEaiIAIAJNcQ0FIAMgACACQdTaxwAQ6gcACyADQXdNIANBCGoiACACTXENBSADIAAgAkHk2scAEOoHAAsgAiADTQ0FIAEgA2osAAAPCyACIANLDQUgAyACQaTaxwAQjAcACyABIANqLgAADwsgASADai8AAA8LIAEgA2ooAAAPCyABIANqKwAA/AMPCyADIAJBlNrHABCMBwALIAEgA2otAAALzQIBBH8jAEEgayIEJAAgASgCDCEFAkAgAAJ/AkACQAJAIAEoAhQiAiABKAIQIgNJBEADQAJAIAIgBWotAABBCWsOMgAAAwMAAwMDAwMDAwMDAwMDAwMDAwMDAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFAwsgASACQQFqIgI2AhQgAiADRw0ACyADIQILIARBEGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAhQhASAEKAIQIQNBFBBxIgJFDQQgAkEDNgIADAELIARBCGogBSADIAJBAWoiASADIAEgA0kbEPkBIAQoAgwhASAEKAIIIQNBFBBxIgJFDQMgAkEGNgIACyACIAM2AgwgAiABNgIQQQEMAQsgASACQQFqNgIUIARBGGogARCVAyAEKAIcIQIgBCgCGAs2AgAgACACNgIEIARBIGokAA8LAAu2AgEBfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIAACfwJAAkACQAJAAkACQAJAIAJBA2sOBwAFAQIFBQMFCyABQZDQxwBBAxDbB0UEQCAAQQA6AAFBAAwHCyABQaD3xwBBAxDbBw0DIABBAToAAUEADAYLIAFBo/fHAEEFENsHDQMgAEECOgABQQAMBQsgAUGo98cAQQYQ2wcNAiAAQQM6AAFBAAwECyABQa73xwBBCRDbBw0BIABBBDoAAUEADAMLIAFBt/fHAEEDENsHRQ0BCyADQQE2AiQgA0HQ98cANgIgIANCATcCLCADIANBDGqtQoCAgIAghDcDOCADIANBOGo2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AEGUgICAeEYEQAJAIAACfyADKAIMIgQEQCACIAMoAggQqAMgAigCACIBQYCAgIB4Rw0CIAIoAgQMAQtBACACQQ9qQYTiwAAQ2wYLNgIEIABBgICAgHg2AgAMBAsgAigCBCEDIARBAUYNAiACQQE2AgAgBEEBa0H/////AHFBAWogAkHolcEAENsGIQQgAEGAgICAeDYCACAAIAQ2AgQgAUUNAyADIAFBARCiBwwDCyADIAJBD2pBhOLAABCVCCEBIABBgICAgHg2AgAgACABNgIEDAILQcvawABBLEH42sAAEKsHAAsgACACKAIINgIIIAAgAzYCBCAAIAE2AgALIAJBEGokAAupAgEFfyMAQSBrIgIkAEEBIQMCQCAAKAIAIgQoAgBBAUYEQCABKAIAIgBBw5jIAEEEIAEoAgQiBigCDCIFEQAADQEgBEEIaiEEAkAgAS0ACkGAAXFFBEAgAEG7s8UAQQEgBREAAA0DIAQgARDEBQ0DIAEoAgAhACABKAIEKAIMIQUMAQsgAEHbgcIAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiAANgIAIAJB4IHCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAEIAJBEGoQxAUNAiACKAIQQdmBwgBBAiACKAIUKAIMEQAADQILIABB3o7IAEEBIAURAAAhAwwBCyABKAIAQb+YyABBBCABKAIEKAIMEQAAIQMLIAJBIGokACADC5ECAQN/IwBBQGoiASQAAkAgABA9IgINACAALQClU0UEQCABQQA2AjggAUEBNgIsIAFB5KPBADYCKCABQgQ3AjAgAUEoahCSByECDAELIAAoAmRBgICAgHhHBEBBACECIAAtAJgBIgNBCUYNASADQQVGBEAgACgCkAFFDQILIAFBAjYCLCABQZykwQA2AiggAUICNwI0IAEgAEGQAWqtQoCAgIAQhDcDICABIABBmAFqrUKAgICAsASENwMYIAEgAUEYajYCMCABQQxqIgAgAUEoahCxBiAAEI4HIQIMAQsgAUEANgI4IAFBATYCLCABQcCkwQA2AiggAUIENwIwIAFBKGoQkgchAgsgAUFAayQAIAILkgIBA38jAEFAaiIBJAACQCAAED4iAg0AIAAtAMVTRQRAIAFBADYCOCABQQE2AiwgAUHko8EANgIoIAFCBDcC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BEAgACgCtAIgA2ogASAC/AoAAAsgACACIANqNgK4AiAAELgBC1gBAX8gACgC2AIgACgC4AIiA2sgAkkEQCAAQdgCaiADIAJBAUEBEKQFIAAoAuACIQMLIAIEQCAAKALcAiADaiABIAL8CgAACyAAIAIgA2o2AuACIAAQsQELWAEBfyAAKAL4AiAAKAKAAyIDayACSQRAIABB+AJqIAMgAkEBQQEQpAUgACgCgAMhAwsgAgRAIAAoAvwCIANqIAEgAvwKAAALIAAgAiADajYCgAMgABCfAQtXAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEASAAEEELVwEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAEgABBAC1IBAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaCAAED4LUQEBfyAAKAJAIAAoAkgiA2sgAkkEQCAAQUBrIAMgAkEBQQEQpAUgACgCSCEDCyACBEAgACgCRCADaiABIAL8CgAACyAAIAIgA2o2AkggABA9C1ABA38CQAJAIAAEQCAAQQhrIgEgASgCACICQQFqIgM2AgAgA0UNASAAKAIAQf////8HTw0CIAAoAhggASACNgIAQQBHDwsQjgoLAAsQkAoAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcDAxAAgAEEBakHQwMQAIABBAmpB4MDEACACQQxqQfDAxAAQ7gUgAkEQaiQAC00BAX8jAEEQayICJAAgAiAAKAIAIgA2AgwgASAAQQNqQcioxwAgAEEBakHYqMcAIABBAmpB6KjHACACQQxqQfioxwAQ7gUgAkEQaiQAC08BAX8gACgCQCAAKAJIIgNrIAJJBEAgAEFAayADIAJBAUEBEKQFIAAoAkghAwsgAgRAIAAoAkQgA2ogASAC/AoAAAsgACACIANqNgJIQQALVQEBfyAAKALEASAAKALMASIDayACSQRAIABBxAFqIAMgAkEBQQEQpAUgACgCzAEhAwsgAgRAIAAoAsgBIANqIAEgAvwKAAALIAAgAiADajYCzAFBAAtVAQF/IAAoArwBIAAoAsQBIgNrIAJJBEAgAEG8AWogAyACQQFBARCkBSAAKALEASEDCyACBEAgACgCwAEgA2ogASAC/AoAAAsgACACIANqNgLEAUEAC1ABAX8gACgCYCAAKAJoIgNrIAJJBEAgAEHgAGogAyACQQFBARCkBSAAKAJoIQMLIAIEQCAAKAJkIANqIAEgAvwKAAALIAAgAiADajYCaEEAC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBqJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFB4J7BADYCACABIAIpAgg3AgQgASAANgIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFBxJ7BADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC00AIwBBEGsiACQAIAEgAmwiAQR/IAFBwf///wdPBEBB2ObIAEErIABBD2pBtIPJAEHUg8kAEOAGAAtBwAAgARDBBAVBAAsgAEEQaiQAC1YBAn8jAEEgayICJAAgAkEIahDkCEEgEHEiAUUEQAALIAFBtLTHADYCACABIAIpAgg3AgQgASAAOgAcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1YBAn8jAEEgayICJAAgAkEIahDkCEEkEHEiAUUEQAALIAFB7LTHADYCACABIAIpAgg3AgQgASAANwIcIAFBDGogAkEQav0AAgD9CwIAIAJBIGokACABC1cBAn8jAEEgayIBJAACQCAAEJ8BIgINAEEAIQIgAC0AnAMNACABQQA2AhggAUEBNgIMIAFBxKPBADYCCCABQgQ3AhAgAUEIahCSByECCyABQSBqJAAgAgtXAQJ/IwBBIGsiASQAAkAgABCxASICDQBBACECIAAtAPwCDQAgAUEANgIYIAFBATYCDCABQcSjwQA2AgggAUIENwIQIAFBCGoQ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QeAAaiQADAILQcyMyABBLkH8jMgAEOsHAAtBjI3IAEEuQbyNyAAQ6wcACyAmKAIAICYoAgQgJigCCCAmQRBqJAALTQEBfwJ/AkAgAigCBEUNACACKAIIIgNFDQAgAigCACADQQEgARC7AgwBCyABEHELIQIgACABNgIIIAAgAkEBIAIbNgIEIAAgAkU2AgALSwIBfwJ+IwBBEGsiASQAIAEgADUCiAEgADUChAF+QgRCAyAALQCTARsQ3QYgASkDCCECIAEpAwAhAyABQRBqJABCfyADIAJCAFIbC08AAkACQCACKAIQQQFGBEAgASgChAEgAigCFEsNAQsgAigCGEEBRw0BIAEoAogBIAIoAhxNDQELIABCAjcDCCAAQQM2AgAPCyAAQQY2AgALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBEBACACIAIoAgggAigCDCgCGBEBACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALSAEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhD3BSAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0gBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQ+AUgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtIAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEO8FIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALRQEBfwJAIAFBAE4EfyABRQRAQQEhAkEAIQEMAgsgARBxIgINAUEBBSACCyABQcDowQAQkwkACyAAIAI2AgQgACABNgIAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQbyLwwBBBCACKAIMEQAARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALSgECfyAAIAAoAgQiAyACazYCBCAAIAAoAgAgAiADS3IiBDYCAEEBIQMgBAR/IAMFIAAoAggiACgCACABIAIgACgCBCgCDBEAAAsLSAEBfwJAIAFB4QBrIgFB/wFxQRlLBEBBACEBDAELIAFBAnRB/AdxIgIoAtSQSSEBIAIoAuyPSSECCyAAIAI2AgQgACABNgIAC0kCAn8BfSABKAIIIgNBgICAAXEhAiAAKgIAIQQgA0GAgICAAXFFBEAgASAEIAJBAEdBABD3Ag8LIAEgBCACQQBHIAEvAQ4QvQILRwECfyAALQANIgJBgAFNBEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALyQIAAkAgACACTQRAIAAgAU0gASACS3INASMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBAjYCDCACQfydwgA2AgggAkICNwIUIAIgAkEEaq1CgICAgBCENwMoIAIgAq1CgICAgBCENwMgIAIgAkEgajYCECACQQhqIAMQjQgACyMAQTBrIgEkACABIAI2AgQgASAANgIAIAFBAjYCDCABQaidwgA2AgggAUICNwIUIAEgAUEEaq1CgICAgBCENwMoIAEgAa1CgICAgBCENwMgIAEgAUEgajYCECABQQhqIAMQjQgACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQcidwgA2AgggAEICNwIUIAAgAEEEaq1CgICAgBCENwMoIAAgAK1CgICAgBCENwMgIAAgAEEgajYCECAAQQhqIAMQjQgAC0IBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEI0IAAuJDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchA0EAIQIjAEGAAWsiACQAIA69IQkCf0EDIA6ZRAAAAAAAAPB/YQ0AGkECIAlCgICAgICAgPj/AIMiCkKAgICAgICA+P8AUQ0AGiAJQv////////8HgyINQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiAhsiC0IBgyEMIApQBEBBBCANUA0BGiACQbMIayECQgEhCiAMUAwBC0KAgICAgICAICALQgGGIAtCgICAgICAgAhRIgUbIQtCAkIBIAUbIQpBy3dBzHcgBRsgAmohAiAMUAshBSAAIAI7AXggACAKNwNwIABCATcDaCAAIAs3A2AgACAFOgB6An8CQAJAAkACQCAFQf8BcSICQQFNBEBB6rPFAEEBIAlCAFMiAhshBUHqs8UAQciBwgAg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AnQiACgCwKFJIAAoAqShSSABKAIEKAIMEQAAC+0DAQp/IwBBEGsiAyQAIwBBoANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIEIAQoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAUEIaiAAQQRqQQAQdgJ/IAEoAggiCUECRgRAIAEoAgwhAiABQQA2ApgDIAFCgICAgBA3ApADIAFBnJPBADYC0AEgAUKggICADjcC1AEgASABQZADajYCzAEgAiABQcwBahCvBA0FIAEoApADIQUgASgClAMiCCABKAKYAxDsCCEHIAUEQCAIQQRrKAIAIgZBeHEiCkEEQQggBkEDcSIGGyAFakkNByAGQQAgCiAFQSdqSxsNCCAIEKICCyACIAIoAgAoAgARAwBBAAwBCyABQcwBaiICIAFBCGpBxAH8CgAAIAIQ0QELIQIgACAAKAIAQQFrNgIAIAQgBCgCAEEBayIANgIAIABFBEAgBBDkBgsgAyAHNgIEIAMgAjYCACADIAlBAkY2AgggAUGgA2okAAwGCxCOCgsACxCQCgALQaCexgBBNyABQZ8DakG0k8EAQdiexgAQ4AYAC0HMjMgAQS5B/IzIABDrBwALQYyNyABBLkG8jcgAEOsHAAsgAygCACADKAIEIAMoAgggA0EQaiQAC5oFAQp/IwBBEGsiAyQAIwBBsANrIgEkAAJAAkACQAJAAkACQCAABEAgAEEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAAoAgAiAkH/////B08NAiAAIAJBAWo2AgAgAC0AXCICQQJHBEAgAUEgaiAAQdgAaigCADYCACABQRhqIABB0ABqKQIANwMAIAFBBmogAEHfAGotAAA6AAAgASAA/QACQP0LAwggASAALwBdOwEECyABQfgBaiABQSBqKAIANgIAIAFB8AFqIAFBGGopAwA3AwAgAUH/AWogAUEGai0AADoAACABIAH9AAMI/QsD4AEgASACOgD8ASABIAEvAQQ7AP0BIAFBJGogAEEEakEAIAFB4AFqIgQQcgJ/IAEoAiQiCUECRgRAIAEoAighAiABQQA2AqgDIAFCgICAgBA3AqADIAFBnJPBADYC5AEgAUKggICADjcC6AEgASABQaADajYC4AEgAiAEEK8EDQUgASgCoAMhBCAB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CxCQCgALLAAgASgCACAAKAIALQAAaEECdCIAKAL0h0kgACgC4IdJIAEoAgQoAgwRAAALLAAgASgCACAAKAIALQAAaEECdCIAKAKEjkkgACgC8I1JIAEoAgQoAgwRAAALLgAgAEEcakEAIAEpAgBC2v2W/+no6PrBAIUgASkCCELW+4aRyMDiv/4AhYRQGwssACAAQRxqQQAgASkCAELtwsSbx9P/rT+FIAEpAghC/J7N1v6Dwrh+hYRQGwsuACAAQRxqQQAgASkCAELtuq22zYXU9eMAhSABKQIIQviCmb2V7sbFuX+FhFAbCywAIABBHGpBACABKQIAQvep0+7yobOVe4UgASkCCEKWuaPa9sSH1CeFhFAbCysAIAEoAgAgACgCAC0AAEECdCIAKALohkkgACgCqIZJIAEoAgQoAgwRAAALKQAgASgCACAALQAAaEECdCIAKAKciEkgACgCiIhJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAqiJSSAAKALoiEkgASgCBCgCDBEAAAslACAARQRAQa35xABBMhCPCgALIAAgAiADIAQgBSABKAIQEQ8ACysAIAEoAgAgACgCAC0AAEECdCIAKALUjUkgACgCuI1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoAtiOSSAAKAKYjkkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC0JFJIAAoAryRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQp6ptofpq8f75ACFIAEpAghChJXY5rmb/qdphYRQGwsrACABKAIAIAAoAgAtAABBAnQiACgC+JFJIAAoAuSRSSABKAIEKAIMEQAACy0AIABBHGpBACABKQIAQvXXvMnIzNazOoUgASkCCEL+28ub8+W5xvUAhYRQGwsuACAAQSBqQQAgASkCAELhypSvjYKC2fIAhSABKQIIQqbKhrK+ypOwu3+FhFAbCy0AIABBHGpBACABKQIAQpLXooDhkqzi9QCFIAEpAghClJ2A4Jq0sLALhYRQGwslACAAQYiWwQA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAK87EEgACgClOxBIAEoAgQoAgwRAAALKAAgASgCACAALQAAQQJ0IgAoAtDtQSAAKAKc7UEgASgCBCgCDBEAAAshACAAQcDOxAA2AgQgACABQQRqQQAgAS0AAEEkRhs2AgALKAAgASgCACAALQAAQQJ0IgAoAsyISSAAKAKwiEkgASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCsIpJIAAoAuiJSSABKAIEKAIMEQAACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQsACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEQYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWUACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWYACyMAIABFBEBBrfnEAEEyEI8KAAsgACACIAMgBCABKAIQEWcACygAIAEoAgAgAC0AAEECdCIAKALwmEkgACgCqJhJIAEoAgQoAgwRAAALIgAgASgCKEECRwRAIAAgASkC3AI3AwAPC0GsmMcAEN0JAAslACAAQailxwA2AgQgACABQQRqQQAgASgCAEGBgICAeEYbNgIACygAIAEoAgAgAC0AAEECdCIAKAKEo0kgACgC3KFJIAEoAgQoAgwRAAALJwAgACgCAC0AAEUEQCABQfKzxQBBBRCXAw8LIAFB97PFAEEEEJcDCyQAIAAtAABFBEAgAUHys8UAQQUQlwMPCyABQfezxQBBBBCXAwshACAARQRAQa35xABBMhCPCgALIAAgAiADIAEoAhARBQALIQAgAEUEQEGt+cQAQTIQjwoACyAAIAIgAyABKAIQEQAACyEAIAEoAgAgAC0AAEECdCgCiOxBQQEgASgCBCgCDBEAAAsiACABIAAtAABBAnQiACgCiIZJIAAoAuiFSSACKAIMEQAACx4AIABBwM7EADYCBCAAQQAgAUEEaiABLQAAGzYCAAscACABIAAoAgAiAEEEaigCACAAQQhqKAIAEJcDCx8AIABFBEBBrfnEAEEyEI8KAAsgACACIAEoAhARAgALthQBEn8Q2gQiCyABJgECfyAAIQ0Q2gQiEiACJgEgCyETIwBBQGoiByQAIAsQuAohAEHUtMkAKAIARQRAAkBBkLXJACgCACELQYy1yQAoAgAhBEGMtckAQoCAgIDAADcCAEGEtckAKAIAIQhBhLXJAEIE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ACgCACEHIA1BACADEOEIIgAQuAohCSAEIAM2AhggBCAJNgIMIAMgCUcNASAAIAcgAxDgCSAAQYQISQ0CIAAQmwcMAgtBACADIABB3OvAABDqBwALDAELIAhBhAhPBEAgCBCbBwtBrLTJAEGstMkAKAIAQQFqNgIAIA1BhAhPBEAgDRCbBwsgDkGECE8EQCAOEJsHCyAEQUBrJAAgAwwBCyAEQQA2AihBACAEQQxqIARBGGogBEEoakHg+cQAEPUHAAsLHAAgAEEEahDqAiAAKAIkIgAgACgCACgCABEDAAscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIQEQIACxwAIAAoAgAiACgCACABIABBBGooAgAoAgwRAgALFAAgACAAIAEgACABXRsgASABXBsLFAAgASABIAAgACABXRsgACAAXBsLGwEBbyAAJQEgASACEAAhAxDaBCIAIAMmASAACxsBAW8gACUBIAElARAJIQIQ2gQiACACJgEgAAscAQFvIAAlASABJQEgARCbByACJQEgAhCbBxALCx8AQYi7yQAtAABFBEBBiLvJAEEBOgAACyAAQQE2AgALHQAgASAALQAAQQJ0IgAoAqSESSAAKAKQhEkQlwMLHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsZACABIAAoAgAiACgCACAAQQRqKAIAEJcDCxkBAW8gACUBIAEQDCECENoEIgAgAiYBIAALFwAgACgCACABIAAoAgRBDGooAgARAgALFQAgACgCACIAQYQITwRAIAAQmwcLCxcBAW8gACABEA8hAhDaBCIAIAImASAACxcBAW8gACABECwhAhDaBCIAIAImASAACxYAIAEgACgCACIAKAIAIAAoAgQQlwMLGQAgASgCAEGQl8cAQRMgASgCBCgCDBEAAAsZACABKAIAQdmXxwBBFyABKAIEKAIMEQAACxkAIAEoAgBB6ZLGAEEIIAEoAgQoAgwRAAALGQAgASgCAEGjl8cAQRAgASgCBCgCDBEAAAsZACABKAIAQaTlwABBFCABKAIEKAIMEQAACxkAIAEoAgBB5ZLGAEEEIAEoAgQoAgwRAAALGQAgASgCAEGilscAQQwgASgCBCgCDBEAAAsZACABKAIAQYWQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB8JfHAEEUIAEoAgQoAgwRAAALGQAgASgCAEH+lccAQQwgASgCBCgCDBEAAAsZACABKAIAQbOXxwBBEiABKAIEKAIMEQAACxkAIAEoAgBBxZfHAEEUIAEoAgQoAgwRAAALGQAgASgCAEHylscAQQ8gASgCBCgCDBEAAAsZACABKAIAQciCwQBBCiABKAIEKAIMEQAACxkAIAEoAgBBhJjHAEEXIAEoAgQoAgwRAAALGQAgASgCAEHM5cAAQRQgASgCBCgCDBEAAAsZACABKAIAQYCQxgBBAiABKAIEKAIMEQAACxkAIAEoAgBBxpbHAEEOIAEoAgQoAgwRAAALGQAgASgCAEGLkMYAQQUgASgCBCgCDBEAAAsZACABKAIAQYKQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBBupbHAEEMIAEoAgQoAgwRAAALGQAgASgCAEG45cAAQRQgASgCBCgCDBEAAAsZACABKAIAQeOWxwBBDyABKAIEKAIMEQAACxkAIAEoAgBBgZfHAEEPIAEoAgQoAgwRAAALGQAgASgCAEHUlscAQQ8gASgCBCgCDBEAAAsZACABKAIAQYiQxgBBAyABKAIEKAIMEQAACxkAIAEoAgBB4OXAAEEUIAEoAgQoAgwRAAALGQAgASgCAEHcksYAQQkgASgCBCgCDBEAAAsZACABKAIAQemVxwBBDiABKAIEKAIMEQAACxkAIAEoAgBBlpbHAEEMIAEoAgQoAgwRAAALGQAgASgCAEGulscAQQwgASgCBCgCDBEAAAsZACABKAIAQYqWxwBBDCABKAIEKAIMEQAACxIAIABBBGoQ6gIgAEEkahCxBAsSACAAQQRqEOoCIABBHGoQ4wQLEgAgAEEEahDqAiAAQRxqELEECxYAIABB8JnBADYCBCAAIAFBCGo2AgALGQAgASgCAEHn+8cAQQUgASgCBCgCDBEAAAsOACAABEAACyACEP8HAAsWACAAQcSXwQA2AgQgACABQRxqNgIACxYAIABBgJjBADYCBCAAIAFBHGo2AgALFgAgAEG8mMEANgIEIAAgAUEcajYCAAsWACAAQfiYwQA2AgQgACABQRxqNgIACxYAIABBtJnBADYCBCAAIAFBHGo2AgALFgAgAEGIlsEANgIEIAAgAUEcajYCAAsWACAAQfCZwQA2AgQgACABQRxqNgIACxYAIABBrJrBADYCBCAAIAFBHGo2AgALEwAgACAAIAAoAgAiAGo2AgAgAAsUACABKAIEGiAAQYzvwQAgARDBAwsRACACKAIEGiAAIAEgAhDBAwsUACABKAIEGiAAQbDxwQAgARDBAwsUACABKAIEGiAAQbTvwQAgARDBAwsUACABKAIEGiAAQdTxwQAgARDBAwsUACABKAIEGiAAQeCBwgAgARDBAwsUACABKAIEGiAAQey1xAAgARDBAwsUACABIAIgAyAEIAUgACgCABEHAAsUACABKAIEGiAAQaC6xQAgARDBAwsZACABKAIAQYS4xQBBEiABKAIEKAIMEQAACxQAIAEoAgQaIABBxJLGACABEMEDCxQAIAEoAgQaIABB+J3GACABEMEDCxYAIABBqLDHADYCBCAAIAFBHGo2AgALFgAgAEHksMcANgIEIAAgAUEcajYCAAsWACAAQbCvxwA2AgQgACABQRxqNgIACxYAIABB7K/HADYCBCAAIAFBIGo2AgALGQAgASgCAEGYrscAQQwgASgCBCgCDBEAAAsSACAAQQRqEOoCIABBIGoQgwILFgAgAEGopccANgIEIAAgAUEcajYCAAsWACAAQaCxxwA2AgQgACABQRxqNgIACxYAIABBnLbHADYCBCAAIAFBDGo2AgALFAAgASgCBBogAEHkt8cAIAEQwQMLFAAgASgCBBogAEHMhcgAIAEQwQMLFgAgASAAKAIAIgAoAgQgACgCCBCXAwsZACABKAIAQcSdyABBCyABKAIEKAIMEQAACxUBAW8gABAEIQEQ2gQiACABJgEgAAsXAgFvAX8gABArIQEQ2gQiAiABJgEgAgsUACAAKAIAIgAgACgCACgCABEDAAsUACAAKAIIIgAgACgCACgCABEDAAsUACAAKAIAIAEgACgCBCgCEBECAAuTBwEDfyMAQfAAayIFJAAgBSADNgIMIAUgAjYCCAJ/AkACQAJAAkAgAUGBAk8EQEH9ASEGA0AgACAGaiIHQQNqLAAAQb9/Sg0DIAdBAmosAABBv39KDQIgB0EBaiwAAEG/f0oNBCAHLAAAQb9/Sg0FIAZBBGsiBkF9Rw0AC0EAIQYMBAsgBSABNgIUIAUgADYCEEEBDAQLIAZBAmohBgwCCyAGQQNqIQYMAQsgBkEBaiEGCyAFIAA2AhAgBSAGNgIUQQVBACABIAZLIgYbIQdB9JjCAEEBIAYbCyEGIAUgBzYCHCAFIAY2AhgCQAJAIAUgASACTwR/IAEgA08NASADBSACCzYCKCAFQQM2AjQgBUG8msIANgIwIAVCAzcCPCAFIAVBGGqtQoCAgICgAYQ3A1ggBSAFQRBqrUKAgICAoAGENwNQIAUgBUEoaq1CgICAgBCENwNIDAELIAIgA00EQCACRSABIAJNckUEQCADIAIgACACaiwAAEG/f0obIQMLIAUgAzYCIAJ/AkACQCABIANNDQBBACEHAkAgA0UNAANAIAAgA2osAABBv39KBEAgAyEHDAILIANBAWsiAw0ACwsgASAHRg0AAkACQCAAIAdqIgIsAAAiA0EASARAIAItAAFBP3EhACADQR9xIQEgA0FfSw0BIAFBBnQgAHIhBgwCCyAFIANB/wFxNgIkQQEMBAsgAi0AAkE/cSAAQQZ0ciEAIANBcEkEQCAAIAFBDHRyIQYMAQsgAUESdEGAgPAAcSACLQADQT9xIABBBnRyciIGQYCAxABGDQELIAUgBjYCJCAGQYABTw0BQQEMAgsgBBDdCQALQQIgBkGAEEkNABpBA0EEIAZBgIAESRsLIQAgBSAHNgIoIAUgACAHajYCLCAFQQU2AjQgBUH8mcIANgIwIAVCBTcCPCAFIAVBGGqtQoCAgICgAYQ3A2ggBSAFQRBqrUKAgICAoAGENwNgIAUgBUEoaq1CgICAgOAFhDcDWCAFIAVBJGqtQoCAgIDwBYQ3A1AgBSAFQSBqrUKAgICAEIQ3A0gMAQsgBUEENgI0IAVBnJnCADYCMCAFQgQ3AjwgBSAFQRhqrUKAgICAoAGENwNgIAUgBUEQaq1CgICAgKABhDcDWCAFIAVBDGqtQoCAgIAQhDcDUCAFIAVBCGqtQoCAgIAQhDcDSAsgBSAFQcgAajYCOCAFQTBqIAQQjQgACxQAIAAoAgAgASAAKAIEKAIMEQIACxEAIAAgASACIAMgBCAFENIECxIAIABBEUEQIAEtAJMBGzoAAAsVAgFvAX8QBSEAENoEIgEgACYBIAELEQAgACUBIAElASACJQEQBhoLFQIBbwF/EAchABDaBCIBIAAmASABC30BA38Q2gQiAyABJgECQAJAAkAgAARAIABBCGsiAiACKAIAQQFqIgQ2AgAgBEUNASAAKAIADQIgAEF/NgIAIABBBGogAxDEAiAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOQGCwwDCxCOCgsACxCQCgALC4gBAQN/ENoEIgMgASYBAkACQAJAIAAEQCAAQQhrIgIgAigCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACAAQQhqKAIAIABBDGooAgAgAxCtAyAAIAAoAgBBAWo2AgAgAiACKAIAQQFrIgA2AgAgAEUEQCACEOMGCwwDCxCOCgsACxCQCgALCxEAIAEgACgCACAAKAIEEJcDCxMAIABBKDYCBCAAQZifxwA2AgALEQAgASAAKAIEIAAoAggQlwMLEwAgAEHomsEANgIEIAAgATYCAAsTACAAQaSbwQA2AgQgACABNgIACxMAIABB4JvBADYCBCAAIAE2AgALEwAgAEGMnMEANgIEIAAgATYCAAsTACAAQcicwQA2AgQgACABNgIACxMAIABBhJ3BADYCBCAAIAE2AgALEwAgAEHAncEANgIEIAAgATYCAAsTACAAQfydwQA2AgQgACABNgIACxEAIAAoAgQgACgCCCABELUCCxEAIAEoAgAgASgCBCAAEMEDCxwAIABBmLvP7AM2AgggAELQ5+byk+vFmz83AgALEQAgACgCACAAKAIEIAEQtQILEwAgAEHMs8cANgIEIAAgATYCAAsTACAAQdyxxwA2AgQgACABNgIACxMAIABBiLTHADYCBCAAIAE2AgALEwAgAEHUsscANgIEIAAgATYCAAsTACAAQZiyxwA2AgQgACABNgIACxMAIABBkLPHADYCBCAAIAE2AgALEwAgAEG8jMgANgIEIAAgATYCAAsWAEG4u8kAIAA2AgBBtLvJAEEBOgAACxEBAX8Q2gQiASAAJQEmASABCw4AIAAlASABJQFBABAWCw8AQayewgBBKyAAEOsHAAtpAQF/IwBBMGsiAyQAIAMgADYCBCADIAE2AgAgA0EDNgIMIANB+JvCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCNCAALEgAgACABLQDoBC0A+J1JOgAACwwAIAAlASABIAIQAgsMACAAIAEgAiUBEAMLDQAgACUBIAElARAIGgsMACAAIAEgAiUBEBkLEQAgAEGohsEA/QACAP0LAgALEQAgAEG4hsEA/QACAP0LAgALEQAgAEHIhsEA/QACAP0LAgALEQAgAEHYhsEA/QACAP0LAgALEQAgAEHohsEA/QACAP0LAgALEQAgAEH4hsEA/QACAP0LAgALEQAgAEGIh8EA/QACAP0LAgALEQAgAEGYh8EA/QACAP0LAgALEQAgAEGoh8EA/QACAP0LAgALEQAgAEG4h8EA/QACAP0LAgALEQAgAEHIh8EA/QACAP0LAgALEQAgAEHYh8EA/QACAP0LAgALEQAgAEHoh8EA/QACAP0LAgALEQAgAEH4h8EA/QACAP0LAgALEQAgAEGIiMEA/QACAP0LAgALEQAgAEGYiMEA/QACAP0LAgALEQAgAEGoiMEA/QACAP0LAgALEQAgAEG4iMEA/QACAP0LAgALEQAgAEHIiMEA/QACAP0LAgALEQAgAEHYiMEA/QACAP0LAgALEQAgAEHoiMEA/QACAP0LAgALEQAgAEH4iMEA/QACAP0LAgALEQAgAEGIicEA/QACAP0LAgALEQAgAEGYicEA/QACAP0LAgALEQAgAEGoicEA/QACAP0LAgALEQAgAEG4icEA/QACAP0LAgALEQAgAEHIicEA/QACAP0LAgALEQAgAEHYicEA/QACAP0LAgALDgAgAEG4oMEAIAEQwQMLDgAgAEGck8EAIAEQwQMLCgAgAEEEahDqAgsKACAAQQhqELEECxEAIABB8KDHAP0AAgD9CwIACxEAIABB5JPBAP0AAgD9CwIACxEAIABB9JPBAP0AAgD9CwIACxEAIABBhJTBAP0AAgD9CwIACxEAIABBlJTBAP0AAgD9CwIACxEAIABBpJTBAP0AAgD9CwIACxEAIABBtJTBAP0AAgD9CwIACxEAIABBxJTBAP0AAgD9CwIACxEAIABB1JTBAP0AAgD9CwIACxEAIABB5JTBAP0AAgD9CwIACw0AQeyNyABBGxCPCgALCQAgACABECgACw4AQYeOyABBzwAQjwoACwsAIAAoAgAgARBoCw4AIAFBsorDAEEYEJcDCw4AIAFBkIrDAEEgEJcDCxEAIABBkKHHAP0AAgD9CwIACw4AIAFBmJbIAEECEJcDCxEAIABBtLbEAP0AAgD9CwIACwwAIAAoAgAgARD8BAsRACAAQaS2xAD9AAIA/QsCAAsMACAAKAIAIAEQpgILDAAgACgCACABEPQECwwAIAAoAgAgARCeBAsMACAAKAIAIAEQiwULEQAgAEHgn8cA/QACAP0LAgALEQAgAEHQn8cA/QACAP0LAgALEQAgAEHgoMcA/QACAP0LAgALEQAgAEGAoMcA/QACAP0LAgALEQAgAEGgoMcA/QACAP0LAgALEQAgAEHAn8cA/QACAP0LAgALEQAgAEHAoMcA/QACAP0LAgALDQAgACABKQKEATcDAAsLACAALQCTAUECcgsKACAAQSBqEMYDCxEAIABB8J/HAP0AAgD9CwIACxEAIABBsKDHAP0AAgD9CwIACxEAIABB0KDHAP0AAgD9CwIACxEAIABBkKDHAP0AAgD9CwIACxEAIABBgKHHAP0AAgD9CwIACxEAIABBgPjHAP0AAgD9CwIACwwAIAAgASkCADcDAAsRACAAQZD4xwD9AAIA/QsCAAsKACAAIAElARAUC00BAX8jAEEwayIBJAAgAUEBNgIMIAFBoPjHADYCCCABQgE3AhQgASABQS9qrUKAgICAkAaENwMgIAEgAUEgajYCECABQQhqIAAQjQgAC00BAX8jAEEwayIBJAAgAUEBNgIMIAFBoPjHADYCCCABQgE3AhQgASABQS9qrUKAgICAoAaENwMgIAEgAUEgajYCECABQQhqIAAQjQgACwkAIABCATcDAAsJACAAQQA2AgALCgAgAEGAARDRBAsIACAAIAEQaAsSACAAQoaAgICAgICAgH83AwAL2QsCBX0GfwJ9QwAAgD8hAgJAAkACQAJAIAC8IgpBgICA/ANGDQAgAbwiCUH/////B3EiCEUNAAJ/AkAgAIsiA7wiB0GAgID8B0sgCEGAgID8B0tyRQRAIApBAE4NAUECIAhB////2wRLDQIaIAhBgICA/ANJDQFBACAIQZYBIAhBF3ZrIgt2IgwgC3QgCEcNAhpBAiAMQQFxawwCCyAAIAGSDAYLQQALIQsCQAJAAkACQCAIQYCAgPwDRwRAIAhBgICA/AdHDQECQAJAIAdBgICA/ANKIAdBgICA/ANIa0H/AXEOAgcBAAtDAAAAACABjCAJQQBOGwwKCyABQwAAAAAgCUEAThsMCQsgCUEASA0BIAAMCAsCQCAJQYCAgPgDRwRAIAlBgICAgARHDQEgACAAlAwJCyAKQQBODQILAkACQAJAAkAgB0EAIAdB/////wNxQYCAgPwDRxtFBEBDAACAPyADlSADIAlBAEgbIQIgCkEATg0IIAcgC2pBgICA/ANHDQEgAiACkyIAIACVDAwLQwAAgD8hBSAKQQBODQMgCw4CAQIDCyACjCACIAtBAUYbDAoLIAAgAJMiACAAlQwJC0MAAIC/IQULIAhBgICA6ARNBEAgA0MAAIBLlLwgByAHQYCAgARJIggbIgdB////A3EiCkGAgID8A3IhCyAHQRd1Qel+QYF/IAgbaiEIQQAhBwJAIApB8ojzAEkNACAKQdfn9gJJBEBBASEHDAELIApBgICA+ANyIQsgCEEBaiEICyAHQQJ0IgoqApC0SUMAAIA/IAoqAoi0SSIAIAu+IgSSlSICIAQgAJMiAyALQQF2QYDg//8BcSAHQRV0akGAgICCAmq+IgYgAyAClCIDvEGAYHG+IgKUkyAAIAaTIASSIAKUk5QiACACIAKUIgRDAABAQJIgACADIAKSlCADIAOUIgAgAJQgACAAIAAgACAAQ0LxUz6UQ1UybD6SlEMFo4s+kpRDq6qqPpKUQ7dt2z6SlEOamRk/kpSSIgaSvEGAYHG+IgCUIAMgBiAAQwAAQMCSIASTk5SSIgMgAyACIACUIgKSvEGAYHG+IgAgApOTQ084dj+UIABDxiP2uJSSkiICIAoqApi0SSIEIAIgAEMAQHY/lCIAkpIgCLIiApK8QYBgcb4iAyACkyAEkyAAk5MhAgwDCyAHQfj///sDTwRAIAdBh4CA/ANNBEAgA0MAAIC/kiIAQ3Cl7DaUIAAgAJRDAAAAPyAAIABDAACAvpRDq6qqPpKUk5RDO6q4v5SSIgIgAiAAQwCquD+UIgCSvEGAYHG+IgMgAJOTIQIMBAsgCUEATA0GDAcLIAlBAE4NBQwGC0MAAIA/IACVDAYLIACRDAULAkACQCADIAlBgGBxviIElCIAIAEgApQgASAEkyADlJIiAZIiArwiCUGAgICYBEwEQCAJQYCAgJgERg0BIAK8Qf////8HcSIHQYCA2JgESw0EIAEgAiAAk19FIAlBgIDYmHxHcg0CDAULDAULIAFDPKo4M5IgAiAAk14NBCACvEH/////B3EhBwtBACEIIAUCfSAHQYCAgPgDSwR/QQBBgICABCAHQRd2QQJqdiAJaiIHQf///wNxQYCAgARyQRYgB0EXdiIKa3YiCGsgCCAJQQBIGyEIIAEgAEGAgIB8IApBAWp1IAdxvpMiAJK8BSAJC0GAgH5xviICQwByMT+UIgUgAkOMvr81lCABIAIgAJOTQxhyMT+UkiICkiIAIAAgACAAIACUIgEgASABIAEgAUNMuzEzlEMO6t21kpRDVbOKOJKUQ2ELNruSlEOrqio+kpSTIgGUIAFDAAAAwJKVIAIgACAFk5MiASAAIAGUkpOTQwAAgD+SIgC8IAhBF3RqIglBgICABE4EQCAJvgwBCyAAIAgQsAYLlCECCyACDAMLIAVDYEKiDZRDYEKiDZQMAgsgBUNgQqINlENgQqINlAwBCyAFQ8rySXGUQ8rySXGUCwsIACAAJQEQAQsIACAAJQEQCgsIACAAJQEQFQsIACAAJQEQFwsIACAAJQEQGwsIACAALQDoBAsHABAqEIUICwQAQQALBABBAQsCAAsLtK4JiAEAQYCAwAAL8WFpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdAAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvc3B6LnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9wbHkucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL2xlZ2FjeS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvYWRhcHRlcnMvc3RlcF9ieS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvaW5mbGF0ZS93aW5kb3cucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBzcGFyay13b3JrZXItcnMvc3JjL3NvcnQucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9mbXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy90c3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2tzcGxhdC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAC9Vc2Vycy9kbWFyY29zL0RldmVsb3BtZW50L3NwYXJrL3J1c3Qvc3BhcmstbGliL3NyYy9nc3BsYXQucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2NzcGxhdC5ycwBzcGFyay13b3JrZXItcnMvc3JjL2V4dF9zcGxhdHMucnMAc3Bhcmstd29ya2VyLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZmRlZmxhdGUtMC4zLjcvc3JjL2RlY29tcHJlc3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzcy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvaW1wbHMucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL3NvZ3MucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjk4L3NyYy9lcnJvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2xvci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9nZW5lcmljL3BhY2tlZHBhaXIucnMAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2luZmxhdGUvd3JpdGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTMuMC9zcmMvaW5uZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci91bmZpbHRlcmluZ19idWZmZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9pbWFnZXMvYnVmZmVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDhfYXJpdGhtZXRpY19kZWNvZGVyLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29kZWNzL3dlYnAvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2RlY29kZXIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL3JlYWQvbWFnaWNfZmluZGVyLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9leHRyYV9maWVsZHMvZXh0ZW5kZWRfdGltZXN0YW1wLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2NvbW1vbi5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvaHVmZm1hbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3RyYW5zZm9ybS5ycwBsaWJyYXJ5L3N0ZC9zcmMvaW8vYnVmZmVyZWQvbGluZXdyaXRlcnNoaW0ucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL3N0cmVhbS5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9yZWVudHJhbnRfbG9jay5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlX2xvY2sucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTcvc3JjL2V4dGVybnJlZi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdHJhbnNmb3JtL3BhbGV0dGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvYWxsb2NhdGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9jb3JlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9zdGFibGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvY2h1bmtfdHJlZS5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xvZF90cmVlLnJzAHNwYXJrLWxpYi9zcmMvc3BsYXRfZW5jb2RlLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtMS4wLjIyOC9zcmMvcHJpdmF0ZS9kZS5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjUvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9kZWNvZGVyL21vZC5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2luZmxhdGUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvdGlueV9sb2QucnMAL1VzZXJzL2RtYXJjb3MvRGV2ZWxvcG1lbnQvc3BhcmsvcnVzdC9zcGFyay1saWIvc3JjL2JoYXR0X2xvZC5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9leHRlbmRlZC5ycwAvVXNlcnMvZG1hcmNvcy9EZXZlbG9wbWVudC9zcGFyay9ydXN0L3NwYXJrLWxpYi9zcmMvcmFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEwL3NyYy9kbG1hbGxvYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvc3BlYy5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvemxpYi5ycwBzcGFyay13b3JrZXItcnMvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTQvc3JjL2xpYi5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96aXAtNy4yLjAvc3JjL2NwNDM3LnJzAHNwYXJrLWxpYi9zcmMvc3ltbWF0My5ycwAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvY3JjMzIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjYvc3JjL3YwLnJzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgd2luZG93IHNpemUAcmVwZWF0ZWQgY2FsbCB3aXRoIGJhZCBzdGF0ZQBpbnZhbGlkIGJsb2NrIHR5cGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABJSSoA7AUQACQAAABEAwAADQAAAOwFEAAkAAAARQMAAA0AAADsBRAAJAAAAEYDAAANAAAA7AUQACQAAABDAwAA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dWN0IFJhZE1ldGEgd2l0aCAxMSBlbGVtZW50cwAAAFY+EAAfAAAAAAAAAAgAAAAEAAAAqgAAAGZpbGVzbWluc21heHNzaGFwZXN0cnVjdCBNZWFucyB3aXRoIDQgZWxlbWVudHMAAKI+EAAcAAAAZW5jb2RpbmdzdHJ1Y3QgUXVhdHMgd2l0aCAyIGVsZW1lbnRz0D4QABwAAABzdHJ1Y3QgU2gwVjEgd2l0aCAzIGVsZW1lbnRz9D4QABwAAABjb2RlYm9va3N0cnVjdCBTaDBWMiB3aXRoIDIgZWxlbWVudHMgPxAAHAAAAHN0cnVjdCBTaE5WMSB3aXRoIDQgZWxlbWVudHNEPxAAHAAAAGJhbmRzc3RydWN0IFNoTlYyIHdpdGggMyBlbGVtZW50cwAAAG0/EAAcAAAAc3RydWN0IE1lYW5zVjEgd2l0aCA0IGVsZW1lbnRzAACUPxAAHgAAAG1lYW5zc2NhbGVzcXVhdHNzaDBzaE5zdHJ1Y3QgUGNTb2dzVjEgd2l0aCA1IGVsZW1lbnRzAAAA0j8QAB8AAABzdHJ1Y3QgUGNTb2dzVjIgd2l0aCA3IGVsZW1lbnRzAPw/EAAfAAAAc3RydWN0IFNjYWxlc1YxIHdpdGggMyBlbGVtZW50cwAkQBAAHwAAAHN0cnVjdCBTY2FsZXNWMiB3aXRoIDIgZWxlbWVudHMATEAQAB8AAABiYXNlcGF5bG9hZEJ5dGVzcHJvcGVydGllc3N0cnVjdCBSYWRDaHVua01ldGEgd2l0aCA4IGVsZW1lbnRzAAAAjkAQACMAAABnc3BsYXQAALxAEAAGAAAAb2Zmc2V0ZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAANpAEAAkAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHMZQRAAJwAAAGEgc2VxdWVuY2UAANsGEABmAAAAjQQAABwAAABzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZyB3aXRoIDggZWxlbWVudHMAZEEQACcAAABjZW50ZXJhbHBoYXJnYm9yaWVudGF0aW9uY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAJRBEAAGAAAAmkEQAAUAAACfQRAAAwAAAME/EAAGAAAAokEQAAsAAAD4MxAAAwAAAPszEAADAAAADDYQAAMAAACtQRAACwAAALhBEAALAAAAw0EQAAgAAADLQRAACAAAANNBEAAIAAAA20EQAAgAAABmMTZmMzJfbGVieXRlc2YxNl9sZWJ5dGVzcjhyOF9kZWx0YXM4czhfZGVsdGFsbl8wcjhsbl9mMTZvY3Q4OHI4AogRAAMAAABUQhAAAwAAAFdCEAALAAAAYkIQAAsAAABtQhAAAgAAAG9CEAAIAAAAd0IQAAIAAAB5QhAACAAAAIFCEAAGAAAAh0IQAAYAAACNQhAABwAAAAdZEQADAAAABYgRAAMAQYSGwQALBQEAAACrAEGUhsEAC50NAQAAAKwAAABnegAAHEMQAAIAAACGV40hJKv8MZsV7Rqk/AqGIZHXkOAZBnMEwoE6QC5Aw02j52ZMofSR0h1OTNnv/LcqkTKWy/Ri3BOYR0yo5sJKZQUUCIJCw8J7T1YBdnE/LlNbgd6v+j3VsO5PRvEo+g1lOjkDtdomfifhYlnYlyaf521Pxr7v5E2F7c0GCuf+P/3rIsETwTMoA+inBzqud1sRrxXgIBVknwBi1PJVeIx7Aisj8rJUn2yy7loDmsKEpY45WsRC9+oSngcEldKewYpCm/q8AgqVZ7gNAZD9VtBrMivi9KBl2ERiQe5Ii0cFQ/5K+mCCgfdMVeJBLcgvjfuPC2mlqkI9RC+bfJ3D8Sr9x01mLnzmSbxuYaNTlztp3pcpSPbzROrxa62j6ZmoBdH97HYrR635JQTfXlV6a8Ovn+m9tKIApq4QCN4uyBE87DPEa42psDZg7WP62RG4/bUIrvZnfsvyWSH/wjd06x+Py+lMtpuEl8Ltn4DSZSE7nX4v+OWiItk2yi53ifdj62Zde1sqPTuH9PUU2hK7pnF7Y1zUyuJJAK68UxeBqShYoeSyUAtPu+nwuxBgZKitiEsgHhagE5RBXb1l1/jQzzzaT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADoRBAAKgAAAL8aEABTAAAAnAAAADIAAABzFBAATwAAAC8CAAAmAAAATw8QAGYAAACkAAAAKgAAAE8PEABmAAAABAEAACUAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAABcRRAAsAAAALEAAACyAAAAsAAAALMAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZQDOIRAAWQAAAOYCAAAZAAAAziEQAFkAAADqAgAAEwAAAE92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjp0eXBlczo6WmlwQ2VudHJhbEVudHJ5QmxvY2sAAFBLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcnppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAIAkRxAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVMb2NhdG9yQmxvY2tJbnZhbGlkIHppcDY0IGxvY2F0b3IgZGlnaXRhbCBzaWduYXR1cmUgaGVhZGVyAAAAAAAAgG9HEAAuAAAAemlwOjpzcGVjOjpaaXA2NENERUJsb2NrUEsGBkludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NESW52YWxpZCBFT0NEIGNvbW1lbnQgbGVuZ3RoQ291bGQg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AIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgB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AACBHgAAgR8AAIEgAACBIQAAgSIAAIEjAACBJAAAgSUAAIEmAACBJwAAgSgAAIEpAACBKgAAgSsAAIEsAACBLQAAgS4AAIEvAACBMAAAgTEAAIEyAACBMwAAgTQAAIE1AACBNgAAgTcAAIE4AACBOQAAgToAAIE7AACBPAAAgT0AAIE+AACBPwAAgUAAAIFBAACBQgAAgUMAAIFEAACBRQAAgUYAAIFHAACBSAAAgUkAAIFKAACBSwAAgUwAAIFNAACBTgAAgU8AAIFQAACBUQAAgVIAAIFTAACBVAAAgVUAAIFWAACBVwAAgVgAAIFZAACBWgAAgVsAAIFcAACBXQAAgV4AAIFfAACBYAAAgWEAAIFiAACBYwAAgWQAAIFlAACBZgAAgWcAAIFoAACBaQAAgWoAAIFrAACBbAAAgW0AAIFuAACBbwAAgXAAAIFxAACBcgAAgXMAAIF0AACBdQAAgXYAAIF3AACBeAAAgXkAAIF6AACBewAAgXwAAIF9AACBfgAAgX8AAIGAAACBgQAAgYIAAIGDAACBhAAAgYUAAIGGAACBhwAAgYgAAIGJAACBigAAgYsAAIGMAACBjQAAgY4AAIGPAACBkAAAgZEAAIGSAACBkwAAgZQAAIGVAACBlgAAgZcAAIGYAACBmQAAgZoAAIGbAACBnAAAgZ0AAIGeAACBnwAAgaAAAIGhAACBogAAgaMAAIGkAACBpQAAgaYAAIGnAACBqAAAgakAAIGqAACBqwAAgawAAIGtAACBrgAAga8AAIGwAACBsQAAgbIAAIGzAACBtAAAgbUAAIG2AACBtwAAgbgAAIG5AACBugAAgbsAAIG8AACBvQAAgb4AAIG/AACBwAAAgcEAAIHCAACBwwAAgcQAAIHFAACBxgAAgccAAIHIAACByQAAgcoAAIHLAACBzAAAgc0AAIHOAACBzwAAgdAAAIHRAACB0gAAgdMAAIHUAACB1QAAgdYAAIHXAACB2AAAgdkAAIHaAACB2wAAgdwAAIHdAACB3gAAgd8AAIHgAACB4QAAgeIAAIHjAACB5AAAgeUAAIHmAACB5wAAgegAAIHpAACB6gAAgesAAIHsAACB7QAAge4AAIHvAACB8AAAgfEAAIHyAACB8wAAgfQAAIH1AACB9gAAgfcAAIH4AACB+QAAgfoAAIH7AACB/AAAgf0AAIH+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ZXRyaWMgaW50ZXJwcmV0YXRpb24gb2YgYSBDSUNQIGNvbG9yIHNwYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBUIxEATAAAAOiSEQABAAAAVGhlIGZpbGUgZXh0ZW5zaW9uICB3YXMgbm90IHJlY29nbml6ZWQgYXMgYW4gaW1hZ2UgZm9ybWF0AAAAsCMRABMAAADDIxEAJgAAAFRoZSBpbWFnZSBmb3JtYXQgY291bGQgbm90IGJlIGRldGVybWluZWRUaGUgaW1hZ2UgZm9ybWF0IAAAACQkEQARAAAAMCMRABEAAABUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSBIJBEAMAAAAFRoZSBkZWNvZGVyIGZvciAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIAAAgCQRABAAAACQJBEAJgAAAEVycgAAAAAABAAAAAQAAACtAQAARm9ybWF0RXJyb3JSaWZmU2lnbmF0dXJlSW52YWxpZFdlYnBTaWduYXR1cmVJbnZhbGlkQ2h1bmtNaXNzaW5nQ2h1bmtIZWFkZXJJbnZhbGlkUmVzZXJ2ZWRCaXRTZXRJbnZhbGlkQWxwaGFQcmVwcm9jZXNzaW5nSW52YWxpZENvbXByZXNzaW9uTWV0aG9kQWxwaGFDaHVua1NpemVNaXNtYXRjaEltYWdlVG9vTGFyZ2VGcmFtZU91dHNpZGVJbWFnZUxvc3NsZXNzU2lnbmF0dXJlSW52YWxpZFZlcnNpb25OdW1iZXJJbnZhbGlkSW52YWxpZENvbG9yQ2FjaGVCaXRzSHVmZm1hbkVycm9yQml0U3RyZWFtRXJyb3JUcmFuc2Zvcm1FcnJvclZwOE1hZ2ljSW52YWxpZE5vdEVub3VnaEluaXREYXRhQ29sb3JTcGFjZUludmFsaWRMdW1hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW50cmFQcmVkaWN0aW9uTW9kZUludmFsaWRDaHJvbWFQcmVkaWN0aW9uTW9kZUludmFsaWRJbmNvbnNpc3RlbnRJbWFnZVNpemVzVW5zdXBwb3J0ZWRGZWF0dXJlSW52YWxpZFBhcmFtZXRlck1lbW9yeUxpbWl0RXhjZWVkZWRJbnZhbGlkQ2h1bmtTaXplTm9Nb3JlRnJhbWVzSW52YWxpZERpbWVuc2lvbnMAAAAABAAAAAQAAACuAQAAVHJ5UmVzZXJ2ZUVycm9yTGltaXRzRXhjZWVkZWQAAAC7AAAACAAAAAQAAAAWAAAAuwAAAAgAAAAEAAAAvAAAABYAAAAwJxEAvQAAAL4AAACyAAAAvwAAALMAAABVbnJlcHJlc2VudGFibGVJbnZhbGlkS2V5d29yZFNpemVNaXNzaW5nTnVsbFNlcGFyYXRvckluZmxhdGlvbkVycm9yT3V0T2ZEZWNvbXByZXNzaW9uU3BhY2VJbnZhbGlkQ29tcHJlc3Npb25GbGFnTWlzc2luZ0NvbXByZXNzaW9uRmxhZwAAAAAAAAQAAAAEAAAAwAAAAAAAAAAEAAAABAAAAGMAAABDcmNNaXNtYXRjaGNyY192YWxjcmNfc3VtSW52YWxpZFNpZ25hdHVyZU1pc3NpbmdGY3RsTWlzc2luZ0ltYWdlRGF0YUNodW5rQmVmb3JlSWhkckFmdGVySWRhdEJlZm9yZVBsdGVBZnRlclBsdGVPdXRzaWRlUGx0ZUlkYXREdXBsaWNhdGVDaHVua0FwbmdPcmRlcnByZXNlbnRTaG9ydFBhbGV0dGVsZW4AAAAAAAEAAAABAAAArwEAAEludmFsaWRTYml0Q2h1bmtTaXplY29sb3JfdHlwZQAAAAAAAAEAAAABAAAAsAEAAEludmFsaWRTYml0c2FtcGxlX2RlcHRoc2JpdFBhbGV0dGVSZXF1aXJlZAAAAAAAAAQAAAAEAAAAsQEAAEludmFsaWRDb2xvckJpdERlcHRoYml0X2RlcHRoQ29sb3JXaXRoQmFkVHJuc0ludmFsaWRCaXREZXB0aEludmFsaWRDb2xvclR5cGVJbnZhbGlkRGlzcG9zZU9wSW52YWxpZEJsZW5kT3BJbnZhbGlkVW5pdEludmFsaWRTcmdiUmVuZGVyaW5nSW50ZW50VW5rbm93bkNvbXByZXNzaW9uTWV0aG9kVW5rbm93bkZpbHRlck1ldGhvZFVua25vd25JbnRlcmxhY2VNZXRob2RCYWRTdWJGcmFtZUJvdW5kcwAAAAAAAAAEAAAABAAAALIBAABDb3JydXB0RmxhdGVTdHJlYW1lcnJOb01vcmVJbWFnZURhdGFCYWRUZXh0RW5jb2RpbmdGZGF0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AB4AAAB2JRAAXwAAAAsJAAAXAAAAdiUQAF8AAAAPCQAAJgAAAHYlEABfAAAAEgkAACIAAAB2JRAAXwAAAAwJAAAdAAAAdiUQAF8AAACBCAAABQAAAHYlEABfAAAAhAgAACYAAAB2JRAAXwAAAIgIAAArAAAAdiUQAF8AAACICAAAIAAAAHYlEABfAAAAJQgAAEUAAAB2JRAAXwAAADgIAAAxAAAAdiUQAF8AAAAiCAAAHgAAAHYlEABfAAAAHAgAAEEAAAAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADwAPgBAAEIARABGAEgASgBMAE4AUABSAFQAVgBYAFoAXABeAGAAYgBkAGYAaABqAGwAbgBwAHIAdAB3AHoAfQCAAIMAhgCJAIwAjwCSAJUAmACbAJ4AoQCkAKcAqgCtALEAtQC5AL0AwQDFAMkAzQDRANUA2QDdAOEA5QDqAO8A9QD5AP4AAwEIAQ0BEgEXARwBBAAFAAYABwAIAAkACgAKAAsADAANAA4ADwAQABEAEQASABMAFAAUABUAFQAWABYAFwAXABgAGQAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACUAJgAnACgAKQAqACsALAAtAC4ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWwBdAF8AYABiAGQAZQBmAGgAagBsAG4AcAByAHQAdgB6AHwAfgCAAIIAhACGAIgAigCMAI8AkQCUAJcAmgCdAHYlEABfAAAAaAgAADAAAAB2JRAAXwAAAFwIAAA7AAAAawIQAF8AAABgAAAANQAAAGsCEABfAAAAYwAAAEEAAABrAhAAXwAAAJUAAAAZAAAAawIQAF8AAACUAAAAGQAAAGsCEABfAAAAkwAAABkAAABrAhAAXwAAAJAAAAAkAAAAawIQAF8AAACPAAAAJAAAAGsCEABfAAAAeAAAABUAAABrAhAAXwAAAHcAAAAVAAAAawIQAF8AAAB2AAAAFQAA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UDggY2hyb21hIHByZWRpY3Rpb24gbW9kZTog+DsRACQAAABJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNVbnN1cHBvcnRlZCBmZWF0dXJlOiAAAAA8PBEAFQAAAEludmFsaWQgcGFyYW1ldGVyOiAAXDwRABMAAABNZW1vcnkgbGltaXQgZXhjZWVkZWRJbnZhbGlkIGNodW5rIHNpemVObyBtb3JlIGZyYW1lc2Nsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAC0kEABcAAAAhTUAAAEAAAA3NDMyMTAvLi1n8kJD5SwrKikoJyYlJCMiITggHx4dHP+UpJWIoJut3d6GeujK1+DQ3My7t7OxqLLI4sOauK5+eL+dwqq9oqGWwY6Jq7C5p7pwr8C8nIyPe4WAk4qSct+X+dju7P3j2ub3h7Tx6fb054v18/vrycTw1pi2zbV/G9TT0tXkxamfg6xpUGJgYVHPkXRzkIKZeWuEbW58b1Jsdo1xgXd9pXVcalNIY11BT6bto8e+4dHLxtnbzur4nu//////////////////////////////////////////////////////////////////////////////////////mwEQAGcAAADZAQAAHQAAAJsBEABnAAAA2gEAABkAAACbARAAZwAAADECAAAbAAAAmwEQAGcAAAAyAgAAHQAAABYMEAByAAAAKgAAABMAAADYHRAAaAAAANMAAAAcAAAAHBgQAGkAAABrBgAAGgAAABwYEABpAAAAawYAADYAAAAcGBAAaQAAAF4GAAAoAAAAFgwQAHIAAAAgAAAACQAAABwYEABpAAAAcwcAAD4AQaj9xAAL2RoBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACHBgQAGkAAADZBwAATQAAABwYEABpAAAAPAYAAC0AAAAcGBAAaQAAADwGAAAZAAAAHBgQAGkAAACEBgAAIAAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAHBgQAGkAAAARAgAAKAAAAAAAAIAAQADAACAAoABgAOAAEACQAFAA0AAwALAAcADwAAgAiABIAMgAKACoAGgA6AAYAJgAWADYADgAuAB4APgABACEAEQAxAAkAKQAZADkABQAlABUANQANAC0AHQA9AAMAIwATADMACwArABsAOwAHACcAFwA3AA8ALwAfAD8AAIAggBCAMIAIgCiAGIA4gASAJIAUgDSADIAsgByAPIACgCKAEoAygAqAKoAagDqABoAmgBaANoAOgC6AHoA+gAGAIYARgDGACYApgBmAOYAFgCWAFYA1gA2ALYAdgD2AA4AjgBOAM4ALgCuAG4A7gAeAJ4AXgDeAD4AvgB+AP4AAQCBAEEAwQAhAKEAYQDhABEAkQBRANEAMQCxAHEA8QAJAIkASQDJACkAqQBpAOkAGQCZAFkA2QA5ALkAeQD5AAUAhQBFAMUAJQClAGUA5QAVAJUAVQDVADUAtQB1APUADQCNAE0AzQAtAK0AbQDtAB0AnQBdAN0APQC9AH0A/QADAIMAQwDDACMAowBjAOMAEwCTAFMA0wAzALMAcwDzAAsAiwBLAMsAKwCrAGsA6wAbAJsAWwDbADsAuwB7APsABwCHAEcAxwAnAKcAZwDnABcAlwBXANcANwC3AHcA9wAPAI8ATwDPAC8ArwBvAO8AHwCfAF8A3wA/AL8AfwD/gACAgIBAgMCAIICggGCA4IAQgJCAUIDQgDCAsIBwgPCACICIgEiAyIAogKiAaIDogBiAmIBYgNiAOIC4gHiA+IAEgISARIDEgCSApIBkgOSAFICUgFSA1IA0gLSAdID0gAyAjIBMgMyALICsgGyA7IAcgJyAXIDcgDyAvIB8gPyAAoCCgEKAwoAigKKAYoDigBKAkoBSgNKAMoCygHKA8oAKgIqASoDKgCqAqoBqgOqAGoCagFqA2oA6gLqAeoD6gAaAhoBGgMaAJoCmgGaA5oAWgJaAVoDWgDaAtoB2gPaADoCOgE6AzoAugK6AboDugB6AnoBegN6APoC+gH6A/oABgIGAQYDBgCGAoYBhgOGAEYCRgFGA0YAxgLGAcYDxgAmAiYBJgMmAKYCpgGmA6YAZgJmAWYDZgDmAuYB5gPmABYCFgEWAxYAlgKWAZYDlgBWAlYBVgNWANYC1gHWA9YANgI2ATYDNgC2ArYBtgO2AHYCdgF2A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AAQAAAABAAAAxQEAAHR5cGUAAAAAAQAAAAEAAADGAQAAY3JpdGljYWxwcml2YXRlcmVzZXJ2ZWRzYWZlY29weU9uZVR3b0ZvdXJFaWdodFNpeHRlZW5HcmF5c2NhbGVSZ2JJbmRleGVkR3JheXNjYWxlQWxwaGFSZ2JhAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAHdyb25nIGRhdGEgc2l6ZSwgZXhwZWN0ZWQgIGdvdCAAOE4RABoAAABSThEABQAAAEVuZCBvZiBpbWFnZSBoYXMgYmVlbiByZWFjaGVkQSBmYXRhbCBkZWNvZGluZyBlcnJvciBoYXMgYmVlbiBlbmNvdW50ZWQgZWFybGllckNSQyBlcnJvcjogZXhwZWN0ZWQgMHggaGF2ZSAweCB3aGlsZSBkZWNvZGluZyAgY2h1bmsuALZOEQAWAAAAzE4RAAgAAADUThEAEAAAAOROEQAHAAAASW52YWxpZCBQTkcgc2lnbmF0dXJlLmZjVEwgY2h1bmsgbWlzc2luZyBiZWZvcmUgZmRBVCBjaHVuay5JREFUIG9yIGZkQVQgY2h1bmsgaXMgbWlzc2luZy4gY2h1bmsgYXBwZWFyZWQgYmVmb3JlIElIRFIgY2h1bmsAAAEAAAAAAAAAZU8RACEAAABDaHVuayAgaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgCYTxEABgAAAJ5PEQAdAAAAIGlzIGludmFsaWQgYmVmb3JlIFBMVEUgY2h1bmsuAACYTxEABgAAAMxPEQAeAAAAIGlzIGludmFsaWQgYWZ0ZXIgUExURSBjaHVuay4AAACYTxEABgAAAPxPEQAdAAAAIG11c3QgYXBwZWFyIGJldHdlZW4gUExURSBhbmQgSURBVCBjaHVua3MuAACYTxEABgAAACxQEQAqAAAAIG11c3QgYXBwZWFyIGF0IG1vc3Qgb25jZS4AAJhPEQAGAAAAaFARABoAAABTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICMgZ290ICMAAJRQEQAkAAAAuFARAAYAAADsXBEAAQAAAE5vdCBlbm91Z2ggcGFsZXR0ZSBlbnRyaWVzLCBleHBlY3QgANhQEQAjAAAAUk4RAAUAAADsXBEAAQAAAFRoZSBzaXplIG9mIHRoZSBzQklUIGNodW5rIHNob3VsZCBiZSAgYnl0ZShzKSwgYnV0ICBieXRlKHMpIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSAgY29sb3IgdHlwZS4AABRREQAlAAAAOVERAA4AAABHUREAHwAAAGZREQAMAAAASW52YWxpZCBzQklUIHZhbHVlIC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBzYW1wbGUgZGVwdGggAAAAlFERABMAAACnUREAPgAAAOxcEQABAAAATWlzc2luZyBwYWxldHRlIG9mIGluZGV4ZWQgaW1hZ2UuSW52YWxpZCBjb2xvci9kZXB0aCBjb21iaW5hdGlvbiBpbiBoZWFkZXI6IC8AAAAhUhEAKwAAAExSEQABAAAAVHJhbnNwYXJlbmN5IGNodW5rIGZvdW5kIGZvciBjb2xvciB0eXBlIGBSEQAoAAAA7FwRAAEAAABJbnZhbGlkIGltYWdlIGRpbWVuc2lvbnNJbnZhbGlkIGJpdCBkZXB0aCAAALBSEQASAAAA7FwRAAEAAABJbnZhbGlkIGNvbG9yIHR5cGUgANRSEQATAAAA7FwRAAEAAABJbnZhbGlkIGRpc3Bvc2Ugb3AgAPhSEQATAAAA7FwRAAEAAABJbnZhbGlkIGJsZW5kIG9wIAAAABxTEQARAAAA7FwRAAEAAABJbnZhbGlkIHBoeXNpY2FsIHBpeGVsIHNpemUgdW5pdCAAAABAUxEAIQAAAOxcEQABAAAASW52YWxpZCBzUkdCIHJlbmRlcmluZyBpbnRlbnQgAAB0UxEAHgAAAOxcEQABAAAAVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgAKRTEQAbAAAA7FwRAAEAAABVbmtub3duIGZpbHRlciBtZXRob2QgAADQUxEAFgAAAOxcEQABAAAAVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIAAAAPhTEQAZAAAA7FwRAAEAAABTdWIgZnJhbWUgaXMgb3V0LW9mLWJvdW5kcy5Db3JydXB0IGRlZmxhdGUgc3RyZWFtLiBJREFUIG9yIGZEQVQgY2h1bmsgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSBmb3IgaW1hZ2UuVW5yZXByZXNlbnRhYmxlIGRhdGEgaW4gdEVYdCBjaHVuay4AAACOVBEAIwAAAEtleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuAAC8VBEAJgAAAE5vIG51bGwgc2VwYXJhdG9yIGluIHRFWHQgY2h1bmsu7FQRACAAAABJbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLgAAABRVEQAdAAAAT3V0IG9mIGRlY29tcHJlc3Npb24gc3BhY2UuIFRyeSB3aXRoIGEgbGFyZ2VyIGxpbWl0LjxVEQA0AAAAVXNpbmcgYW4gdW5yZWNvZ25pemVkIGJ5dGUgYXMgY29tcHJlc3Npb24gbWV0aG9kLgAAAHhVEQAxAAAAVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay4AtFURAEcAAABObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLgAABFYRACYAAABmZEFUIGNodW5rIHNob3J0ZXIgdGhhbiA0IGJ5dGVzVW5leHBlY3RlZCByZXN0YXJ0IG9mICBjaHVuayBzZXF1ZW5jZVNWEQAWAAAAaVYRAA8AAABDaHVuayBsZW5ndGggd3Jvbmc6IIhWEQAUAAAAVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiAAAACkVhEAHQAAAEJhZCBnYW1tYSB2YWx1ZS5saW1pdHMgYXJlIGV4Y2VlZGVkQmFkWmxpYkhlYWRlckluc3VmZmljaWVudElucHV0SW52YWxpZEJsb2NrVHlwZUludmFsaWRVbmNvbXByZXNzZWRCbG9ja0xlbmd0aEludmFsaWRIbGl0SW52YWxpZEhkaXN0SW52YWxpZENvZGVMZW5ndGhSZXBlYXRCYWRDb2RlTGVuZ3RoSHVmZm1hblRyZWVCYWRMaXRlcmFsTGVuZ3RoSHVmZm1hblRyZWVCYWREaXN0YW5jZUh1ZmZtYW5UcmVlSW52YWxpZExpdGVyYWxMZW5ndGhDb2RlSW52YWxpZERpc3RhbmNlQ29kZUlucHV0U3RhcnRzV2l0aFJ1bkRpc3RhbmNlVG9vRmFyQmFja1dyb25nQ2hlY2tzdW1FeHRyYUlucHV0MAAAAAEnEAAqAAAAHgEA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dgMAABkAAABrIRAAYgAAAHcDAAAZAAAAayEQAGIAAAB4AwAAGQAAAGshEABiAAAAeQMAABkAAABrIRAAYgAAANQDAAARAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAABAAIAAwAEAAUABgAHAAgACQD//////////////////woACwAMAA0ADgAPAP////////////////////////////////////////////////////////////////////8KAAsADAANAA4ADwD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AABAAIAAwAEAAUABgAHAAgACQAP//////////////////oACwAMAA0ADgAPAA/////////////////////////////////////////////////////////////////////6AAsADAANAA4ADwAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2shEABiAAAAswEAABoAAABrIRAAYgAAAAACAAATAAAAayEQAGIAAAAFAgAAMwAAAGshEABiAAAACQIAAD4AAABrIRAAYgAAAA8CAAA6AAAAayEQAGIAAACrAQAAPQAAAGshEABiAAAApgEAAEUAAAAgYXQgbGluZSAAAABCCRAAYwAAAPcBAAAhAAAAQgkQAGMAAAD7AQAADAAAACBjb2x1bW4gQgkQAGMAAAACAgAAIQAAAEIJEABjAAAACwIAACoAAABCCRAAYwAAAA8CAAAsAAAAQgkQAGMAAAAUAgAACQAAAGluZi1pbmZOYU4AALQAAAAMAAAABAAAAIkBAACKAQAA0gEAQZiexgAL5Q0BAAAAuAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAwhUQAEsAAAAFCwAADgAAAPYQEABPAAAAPAYAABQAAAD2EBAATwAAADwGAAAhAAAA9hAQAE8AAAAwBgAAFAAAAPYQEABPAAAAMAYAACEAAACtAAAADAAAAAQAAACuAAAArQAAAAwAAAAEAAAArwAAAK4AAACojxEAsAAAALEAAACyAAAAsAAAALMAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAUkBEABgAAABqQEQAIAAAAIpARAAoAAABeBxIAAQAAAGludmFsaWQgdmFsdWU6IABMkBEADwAAABqTEQALAAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2lu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AAB2JRAAXwAAAL4FAAA1AAAAdiUQAF8AAAC+BQAAJQAAAHYlEABfAAAAvAUAADoAAABWUDggaW50ZXItcHJlZGljdGlvboQBkQACA5wBgIGjAoKDgAN2JRAAXwAAADUFAAAvAAAAgAHnAIECeAGCAzACBAZZA4MFcwSFhnEFhAd4BocImAeIiXAIgAGYAIECswGCA0ACBAZ+A4MFqgSFhnYFhAcuBocIRgeIiV8IgAGvAIECRQGCA48CBAZQA4MFVQSFhlIFhAdIBocImweIiWcIgAE4AIECOgGCAwoCBAarA4MF2gSFhr0FhAcRBocIDQeIiZgIgAGQAIECRwGCAwoCBAYmA4MFqwSFhtUFhAeQBocIIgeIiRoIgAFyAIECGgGCAxECBAajA4MFLASFhsMFhAcVBocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIdiUQAF8AAAA/BQAAJQAAAIABjgCBAnIBgoO3AnYlEABfAAAAUQUAABEAAAB2JRAAXwAAAFIFAAARAAAAdiUQAF8AAABTBQAAEQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3YlEABfAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPiAgQG/AOCBdgEg4TNBQcI/waFhqsHCQqACIeIgAmJioAKiwEcAIACbAGBA6oCBAbyA4IFtwSDhMIFBwj+BoWG3wcJCv8Ih4j/CYmKgAqLAQEAgAJRAYED5gIEBvwDggXMBIOEywUHCP8GhYbABwkKgAiHiIAJiYqACosBewCAAmYBgQPRAgQG9wOCBbwEg4TEBQcI/waFhukHCQqACIeIgAmJioAKiwEUAIACXwGBA5kCBAbzA4IFpASDhK0FBwj/BoWGywcJCoAIh4iACYmKgAqLAQEAgALeAYED+AIEBv8DggXYBIOE1QUHCIAGhYaABwkKgAiHiIAJiYqACosBqACAAq8BgQP2AgQG/AOCBesEg4TNBQcI/waFhv8HCQqACIeIgAmJioAKiwEvAIACdAGBA9cCBAb/A4IF0wSDhNQFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJ5AYED7AIEBv0DggXUBIOE1gUHCP8GhYb/BwkKgAiHiIAJiYqACosBjQCAAlQBgQPVAgQG/AOCBckEg4TKBQcI/waFhtsHCQqACIeIgAmJioAKiwEqAIACUAGBA6ACBAbwA4IFogSDhLkFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9ACAAgEBgQP/AgQG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AAAA8gEAAAAAAAABAAAAAQAAAPMBAAAAAAAABAAAAAQAAACqAQAAQ2ljcHByaW1hcmllc3RyYW5zZmVybWF0cml4ZnVsbF9yYW5nZURpbWVuc2lvbkVycm9ySW5zdWZmaWNpZW50TWVtb3J5AAAAAAAAACAAAAAIAAAA9AEAAAAAAAAEAAAABAAAAPUBAABsaW1pdHNzdXBwb3J0ZWQA9gEAAAwAAAAEAAAA9wEAAFBhcmFtZXRlckVycm9yQ2FwYWNpdHlPdmVyZmxvdwAAAAAAAAQAAAAEAAAA+AEAAEFsbG9jRXJybGF5b3V0Q3NwbGF0KGNlbnRlcjogAAAATtURAA8AAABv0xEACwAAAHrTEQAHAAAAgdMRAAoAAACL0xEADgAAAF4HEgABAAAARXhhY3ROYW1lUGF0aEV4dGVuc2lvblVua25vd25pbnZhbGlkIHNlZWsgdG8gYSBuZWdhdGl2ZSBvciBvdmVyZmxvd2luZyBwb3NpdGlvbgCt1REAMgAAABQAAACmJhAAWgAAAD0AAAAkAAAARW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAABAAAAAQAAAD5AQAAVW5zdXBwb3J0ZWRFcnJvclBuZ0pwZWdHaWZXZWJQUG5tVGlmZlRnYURkc0JtcEljb0hkck9wZW5FeHJGYXJiZmVsZEF2aWZRb2lQY3gAAAAAAAAABAAAAAQAAAD6AQAAUGFyc2VJbnRFcnJvckE4TDFMYTFSZ2IxUmdiYTFMMkxhMlJnYjJSZ2JhMkw0TGE0UmdiNFJnYmE0UmdiNXgxTDhMYThSZ2I4UmdiYThMMTZMYTE2UmdiMTZSZ2JhMTZCZ3I4QmdyYThSZ2IzMkZSZ2JhMzJGQ215azhDbXlrMTZMaW1pdFN1cHBvcnREaW1lbnNpb25NaXNtYXRjaEZhaWxlZEFscmVhZHkAAAAAAAAEAAAABAAAAPsBAABSZ2JDaWNwUmVxdWlyZWRHZW5lcmljTm9Nb3JlRGF0YQAAAAAEAAAAAQAAAPwBAABDaWNwTWlzbWF0Y2hleHBlY3RlZGZvdW5kAAAAAAAAAAgAAAAEAAAAxwAAAAAAAAAIAAAABAAAAHAAAADHAAAAoNcRALAAAADIAAAAsgAAALAAAACzAAAA/QEAACgAAAAI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ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9ybWlkID4gbGVu/wASAAkAAABzdGRvdXRmYWlsZWQgcHJpbnRpbmcgdG8gAAAAFgESABMAAABd/BEAAgAAANoQEAAbAAAAjQQAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5YAESADgAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleKABEgAgAAAA6AcQACwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AADlFBAAJgAAACMBAAAtAAAA7xoQACMAAADXAAAAFAAAAO8aEAAjAAAA1wAAADEAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAwAhIALgAAAMMUEAAhAAAAlwEAAAUAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAHgCEgA3AAAAph4QAB0AAADUBAAADQAAADoKAACFAQAADAAAAAQAAABIAgAASQIAAEoCAAAAAAAACAAAAAQAAABLAgAATAIAAE0CAABOAgAATwIAABAAAAAEAAAAUAIAAFECAABSAgAAUwIAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQcAxIANAAAAA4WEAAcAAAAkAAAAAkAAAAAAAAABAAAAAQAAABUAgAAV291bGRCbG9jayAob3MgZXJyb3IgAAAAAQAAAAAAAACCAxIACwAAAF4HEgABAAAA2hAQABsAAABcAwAAFAAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWR1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAXhsQABwAAACKAQAAHQAAAFUCAAAQAAAABAAAAFYCAABXAgAAcGFuaWNrZWQgYXQgAQAAAAAAAABQ/BEAAQAAAFD8EQABAAAAAAAAAAgAAAAEAAAAWAIAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACgiEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAoIhAAKgAAALcEAAANAAAA4BMQAC0AAAAWAQAAKQAAAIUBAAAMAAAABAAAAFkCAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAFYHEgAIAAAAXgcSAAEAAAB/FhAAaQAAAHwAAAARAAAAfxYQAGkAAACJAAAAEQAAAFpJUDY0IGZvb3RlciBpbmRpY2F0ZXMgbW9yZSBmaWxlcyBvbiB0aGlzIGRpc2sgdGhhbiBpbiB0aGUgd2hvbGUgYXJjaGl2ZUludmFsaWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXRmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAAAgSABsAAAAlAAAAAgAAABwIEgBDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5AAAA/g8QAHQAAABKAAAAJAAAAGZsYWdzIGFuZCBsZW4gZG9uJ3QgbWF0Y2ggaW4gZXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHNpemVOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgdGFnTlRGUyBleHRyYSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAAQGAAA6AAAARXh0cmEgZmllbGQgY29udGVudCBleGNlZWRzIGRlY2xhcmVkIGxlbmd0aADOIRAAWQAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoAAAAziEQAFkAAABeBgAAEgAAAEFFUyBleHRyYSBmaWVsZCB0cnVuY2F0ZWRJbnZhbGlkIEFFUyBlbmNyeXB0aW9uIHN0cmVuZ3RoSW52YWxpZCBBRVMgdmVuZG9yIHZlcnNpb25JbnZhbGlkIEFFUyB2ZW5kb3JBRVMgZXh0cmEgZGF0YSBmaWVsZCBoYXMgYW4gdW5zdXBwb3J0ZWQgbGVuZ3RoAADOIRAAWQAAAIgGAAAfAAAARXh0cmEgZmllbGQgY29udGVudCB0cnVuY2F0ZWRFeHRyYSBmaWVsZCBoZWFkZXIgdHJ1bmNhdGVkSW52YWxpZCBjaGVja3N1bQBBkJbIAAvjBAEAAAC0AQAAKCkAAMQeEABQAAAAKgIAABEAAABpL28gZXJyb3I6IAAsCxIACwAAAGludmFsaWQgWmlwIGFyY2hpdmU6IAAAAEALEgAVAAAAdW5zdXBwb3J0ZWQgWmlwIGFyY2hpdmU6IAAAAGALEgAZAAAAc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3QAAAAAAAAABAAAAAQAAADAAAAAAAAAAAQAAAAEAAAAwgAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuAAAAWgIAAAwAAAAEAAAAWwIAAAAAAAAEAAAABAAAAFwCAABGcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lACYcEABvAAAAwwAAAAkAAAAmHBAAbwAAALwAAAAqAAAAJhwQAG8AAAC5AAAAKgAAAJsBEABnAAAAdAEAACkAAACbARAAZwAAAHkBAAAcAAAAmwEQAGcAAAB5AQAALQAA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AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUQERIACAcJBgoFCwQMAw0CDgEPAABZFxAAYAAAAJMAAAAJAAAAAABgB1AAAAgQAAAIcwAUCB8AEgdwAAAIMAAACMAAAAkKABAHYAAACCAAAAigAAAJAAAACIAAAAhAAAAI4AAACQYAEAdYAAAIGAAACJAAAAk7ABMHeAAACDgAAAjQAAAJEQARB2gAAAgoAAAIsAAACQgAAAiIAAAISAAACPAAAAkEABAHVAAACBQAAAjjABUIKwATB3QAAAg0AAAIyAAACQ0AEQdkAAAIJAAACKgAAAkEAAAIhAAACEQAAAjoAAAJCAAQB1wAAAgcAAAImAAACVMAFAd8AAAIPAAACNgAAAkXABIHbAAACCwAAAi4AAAJDAAACIwAAAhMAAAI+AAACQMAEAdSAAAIEgAACKMAFQgjABMHcgAACDIAAAjEAAAJCwARB2IAAAgiAAAIpAAACQIAAAiCAAAIQgAACOQAAAkHABAHWgAACBoAAAiUAAAJQwAUB3oAAAg6AAAI1AAACRMAEgdqAAAIKgAACLQAAAkKAAAIigAACEoAAAj0AAAJBQAQB1YAAAgWAAAIAABACDMAEwd2AAAINgAACMwAAAkPABEHZgAACCYAAAisAAAJBgAACIYAAAhGAAAI7AAACQkAEAdeAAAIHgAACJwAAAljABQHfgAACD4AAAjcAAAJGwASB24AAAguAAAIvAAACQ4AAAiOAAAITgAACPwAAAkAAGAHUQAACBEAAAiDABUIHwASB3EAAAgxAAAIwgAACQoAEAdhAAAIIQAACKIAAAkBAAAIgQAACEEAAAjiAAAJBgAQB1kAAAgZAAAIkgAACTsAEwd5AAAIOQAACNIAAAkRABEHaQAACCkAAAiyAAAJCQAACIkAAAhJAAAI8gAACQQAEAdVAAAIFQAACAIBEAgrABMHdQAACDUAAAjKAAAJDQARB2UAAAglAAAIqgAACQUAAAiFAAAIRQAACOoAAAkIABAHXQAACB0AAAiaAAAJUwAUB30AAAg9AAAI2gAACRcAEgdtAAAILQAACLoAAAkNAAAIjQAACE0AAAj6AAAJAwAQB1MAAAgTAAAIwwAVCCMAEwdzAAAIMwAACMYAAAkLABEHYwAACCMAAAimAAAJAwAACIMAAAhDAAAI5gAACQcAEAdbAAAIGwAACJYAAAlDABQHewAACDsAAAjWAAAJEwASB2sAAAgrAAAItgAACQsAAAiLAAAISwAACPYAAAkFABAHVwAACBcAAAgAAEAIMwATB3cAAAg3AAAIzgAACQ8AEQdnAAAIJwAACK4AAAkHAAAIhwAACEcAAAjuAAAJCQAQB18AAAgfAAAIngAACWMAFAd/AAAIPwAACN4AAAkbABIHbwAACC8AAAi+AAAJDwAACI8AAAhPAAAI/gAACQAAYAdQAAAIEAAACHMAFAgfABIHcAAACDAAAAjBAAAJCgAQB2AAAAggAAAIoQAACQAAAAiAAAAIQAAACOEAAAkGABAHWAAACBgAAAiRAAAJOwATB3gAAAg4AAAI0QAACREAEQdoAAAIKAAACLEAAAkIAAAIiAAACEgAAAjxAAAJBAAQB1QAAAgUAAAI4wAVCCsAEwd0AAAINAAACMkAAAkNABEHZAAACCQAAAipAAAJBAAACIQAAAhEAAAI6QAACQgAEAdcAAAIHAAACJkAAAlTABQHfAAACDwAAAjZAAAJFwASB2wAAAgsAAAIuQAACQwAAAiMAAAITAAACPkAAAkDABAHUgAACBIAAAijABUIIwATB3IAAAgyAAAIxQAACQsAEQdiAAAIIgAACKUAAAkCAAAIggAACEIAAAjlAAAJBwAQB1oAAAgaAAAIlQAACUMAFAd6AAAIOgAACNUAAAkTABIHagAACCoAAAi1AAAJCgAACIoAAAhKAAAI9QAACQUAEAdWAAAIFgAACAAAQAgzABMHdgAACDYAAAjNAAAJDwARB2YAAAgmAAAIrQAACQYAAAiGAAAIRgAACO0AAAkJABAHXgAACB4AAAidAAAJYwAUB34AAAg+AAAI3QAACRsAEgduAAAILgAACL0AAAkOAAAIjgAACE4AAAj9AAAJAABgB1EAAAgRAAAIgwAVCB8AEgdxAAAIMQAACMMAAAkKABAHYQAACCEAAAijAAAJAQAACIEAAAhBAAAI4wAACQYAEAdZAAAIGQAACJMAAAk7ABMHeQAACDkAAAjTAAAJEQARB2kAAAgpAAAIswAACQkAAAiJAAAISQAACPMAAAkEABAHVQAACBUAAAgCARAIKwATB3UAAAg1AAAIywAACQ0AEQdlAAAIJQAACKsAAAkFAAAIhQAA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",self.location.href));const A=YA();(typeof I=="string"||typeof Request=="function"&&I instanceof Request||typeof URL=="function"&&I instanceof URL)&&(I=fetch(I));const{instance:g}=await bA(await I,A);return PA(g)}const pA={sortSplats16:OA,sortSplats32:rA,loadPackedSplats:ZA,loadExtSplats:TA,tinyLodPackedSplats:nA,qualityLodPackedSplats:XA,tinyLodExtSplats:VA,qualityLodExtSplats:WA,newLodTree:lA,newSharedLodTree:jA,initLodTree:mA,disposeLodTree:eA,updateLodTrees:zA,traverseLodTrees:vA,getLodTreeLevel:uA,nextChunk:_A};async function DA(I){const{id:A,name:g,args:Q}=I.data;try{const B=pA[g];if(!B)throw new Error(`Unknown worker RPC: ${g}`);const E=await B(Q,{sendStatus:i=>{self.postMessage({id:A,status:i},{transfer:AA(i)})}});self.postMessage({id:A,result:E},{transfer:AA(E)})}catch(B){console.warn(`Worker error: ${B}`),self.postMessage({id:A,error:B},{transfer:AA(B)})}}function OA({numSplats:I,readback:A,ordering:g}){return{activeSplats:sA(I,A,g),readback:A,ordering:g}}function rA({numSplats:I,readback:A,ordering:g}){return{activeSplats:hA(I,A,g),readback:A,ordering:g}}async function u({decoder:I,fileBytes:A,url:g,requestHeader:Q,withCredentials:B,chunked:D,chunkedLength:E,sendStatus:i}){if(A)for(let G=0;G{iA=h});i({nextChunk:!0});const J=await S;if(J.length===0)break;I.push(J),o+=J.length,i({progress:{loaded:o,total:G}})}G===0&&i({progress:{loaded:o,total:o}})}else throw new Error("No url or fileBytes provided");return I.finish()}function P(I){return{numSplats:I.numSplats,packedArray:I.packed,extra:{sh1:I.sh1,sh2:I.sh2,sh3:I.sh3,sh1Codes:I.sh1Codes,sh2Codes:I.sh2Codes,sh3Codes:I.sh3Codes,lodTree:I.lodTree},splatEncoding:I.splatEncoding}}async function ZA({url:I,requestHeader:A,withCredentials:g,fileBytes:Q,fileType:B,pathName:D,chunked:E,chunkedLength:i,encoding:y,lod:o,lodBase:G,lodAbove:S,nonLod:J,sh1Codes:h,sh2Codes:L,sh3Codes:c},{sendStatus:H}){if(!o){const Y=kA(B,D??I,y,h,L,c),f=await u({decoder:Y,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:H}),p=P(f);return p.splatEncoding.lodOpacity?{lodSplats:p}:p}const s=oA(B,D??I,y),F=await u({decoder:s,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:H});if(F.has_lod())return{lodSplats:P(F.to_packedsplats_lod())};if(S!==void 0&&F.len() ${F.len()} (${e} ms)`);const K=F.to_packedsplats_lod();return N.lodSplats=P(K),N}function b(I){return{numSplats:I.numSplats,extArrays:[I.ext0,I.ext1],extra:{sh1:I.sh1,sh2:I.sh2,sh3a:I.sh3a,sh3b:I.sh3b,sh1Codes:I.sh1Codes,sh2Codes:I.sh2Codes,sh3Codes:I.sh3Codes,lodTree:I.lodTree}}}async function TA({url:I,requestHeader:A,withCredentials:g,fileBytes:Q,fileType:B,pathName:D,chunked:E,chunkedLength:i,lod:y,lodBase:o,lodAbove:G,nonLod:S,sh1Codes:J,sh2Codes:h,sh3Codes:L},{sendStatus:c}){if(!y){const K=yA(B,D??I,J,h,L),Y=await u({decoder:K,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:c}),f=b(Y);return f.extra.lodTree?{lodSplats:f}:f}const H=RA(B,D??I),s=await u({decoder:H,fileBytes:Q,url:I,requestHeader:A,withCredentials:g,chunked:E,chunkedLength:i,sendStatus:c});if(s.has_lod())return{lodSplats:b(s.to_extsplats_lod())};if(G!==void 0&&s.len() ${s.len()} (${m} ms)`);const e=s.to_extsplats_lod();return F.lodSplats=b(e),F}async function nA({numSplats:I,packedArray:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.5)),i=performance.now(),o=HA(I,A,g,E,!1,B,D),G=performance.now()-i,S=P(o);return console.log(`Tiny LoD: ${I} -> ${S.numSplats} (${G} ms)`),S}async function XA({numSplats:I,packedArray:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.75)),i=performance.now(),y=GA(I,A,g,E,B,D),o=performance.now()-i,G=P(y);return console.log(`Bhatt LoD: ${I} -> ${G.numSplats} (${o} ms)`),G}async function VA({numSplats:I,extArrays:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.5)),i=performance.now(),o=UA(I,A[0],A[1],g,E,!1,B),G=performance.now()-i,S=b(o);return console.log(`Tiny LoD: ${I} -> ${S.numSplats} (${G} ms)`),S}async function WA({numSplats:I,extArrays:A,extra:g,lodBase:Q,rgba:B,encoding:D}){const E=Math.max(1.1,Math.min(2,Q??1.75)),i=performance.now(),y=wA(I,A[0],A[1],g,E,B),o=performance.now()-i,G=b(y);return console.log(`Bhatt LoD: ${I} -> ${G.numSplats} (${o} ms)`),G}function lA({capacity:I}){const{lodId:A}=JA(I);return{lodId:A}}function jA({lodId:I}){const{lodId:A}=MA(I);return{lodId:A}}function mA({numSplats:I,lodTree:A}){const{lodId:g,chunkToPage:Q}=SA(I,A);return{lodId:g,chunkToPage:Q}}function eA({lodId:I}){FA(I)}function zA({ranges:I}){const A=new Uint32Array(I.map(({lodId:E})=>E)),g=new Uint32Array(I.map(({pageBase:E})=>E)),Q=new Uint32Array(I.map(({chunkBase:E})=>E)),B=new Uint32Array(I.map(({count:E})=>E)),D=I.map(({lodTreeData:E})=>E);cA(A,g,Q,B,D)}function vA({maxSplats:I,pixelScaleLimit:A,lastPixelLimit:g,instances:Q}){const B=Object.entries(Q),D=new Uint32Array(B.map(([F,N])=>N.lodId)),E=new Uint32Array(B.map(([F,N])=>N.rootPage??4294967295)),i=new Float32Array(B.flatMap(([F,N])=>{if(N.viewToObjectCols.length!==16)throw new Error("Incorrect array size for viewToObjectCols");return N.viewToObjectCols})),y=new Float32Array(B.map(([F,N])=>N.lodScale)),o=new Float32Array(B.map(([F,N])=>N.behindFoveate)),G=new Float32Array(B.map(([F,N])=>N.coneFov0)),S=new Float32Array(B.map(([F,N])=>N.coneFov)),J=new Float32Array(B.map(([F,N])=>N.coneFoveate)),h=LA(I,A,g,D,E,i,y,o,J,G,S),{instanceIndices:L,chunks:c,pixelLimit:H}=h;return{keyIndices:B.reduce((F,[N,d],x)=>(F[N]=L[x],F),{}),chunks:c,pixelLimit:H}}function uA({lodId:I,level:A}){return NA(I,A)}let iA=I=>{};async function _A({chunk:I}){iA(I)}function AA(I){const A=[],g=new Set;function Q(B){B&&typeof B=="object"&&!g.has(B)&&(g.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(Q):Object.values(B).forEach(Q))}return Q(I),A}async function $A(){const I=[],A=g=>{I.push(g)};self.addEventListener("message",A),await fA(),self.removeEventListener("message",A),self.addEventListener("message",DA);for(const g of I)DA(g);I.length=0}$A().catch(console.error)})();\n//# sourceMappingURL=worker-C9LcsNvD.js.map\n', KB = typeof self < "u" && self.Blob && new Blob([qC], { type: "text/javascript;charset=utf-8" }); -function Ys(Q) { - let A; - try { - if (A = KB && (self.URL || self.webkitURL).createObjectURL(KB), !A) throw ""; - const I = new Worker(A, { - name: Q == null ? void 0 : Q.name - }); - return I.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(A); - }), I; - } catch { - return new Worker( - "data:text/javascript;charset=utf-8," + encodeURIComponent(qC), - { - name: Q == null ? void 0 : Q.name +class aC extends l { + constructor({ gsplat: A }) { + super({ + inTypes: { gsplat: V }, + outTypes: { + flags: "uint", + active: "bool", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + inputs: { gsplat: A }, + globals: () => [NA], + statements: ({ inputs: I, outputs: g }) => { + const { gsplat: B } = I, { + flags: C, + active: E, + index: i, + center: o, + scales: D, + quaternion: w, + rgba: s, + rgb: t, + opacity: G, + x: c, + y: h, + z: y, + r: S, + g: F, + b: e + } = g; + return [ + C ? `${C} = ${B ? `${B}.flags` : "0u"};` : null, + E ? `${E} = isGsplatActive(${B ? `${B}.flags` : "0u"});` : null, + i ? `${i} = ${B ? `${B}.index` : "0"};` : null, + o ? `${o} = ${B ? `${B}.center` : "vec3(0.0, 0.0, 0.0)"};` : null, + D ? `${D} = ${B ? `${B}.scales` : "vec3(0.0, 0.0, 0.0)"};` : null, + w ? `${w} = ${B ? `${B}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};` : null, + s ? `${s} = ${B ? `${B}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};` : null, + t ? `${t} = ${B ? `${B}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};` : null, + G ? `${G} = ${B ? `${B}.rgba.a` : "0.0"};` : null, + c ? `${c} = ${B ? `${B}.center.x` : "0.0"};` : null, + h ? `${h} = ${B ? `${B}.center.y` : "0.0"};` : null, + y ? `${y} = ${B ? `${B}.center.z` : "0.0"};` : null, + S ? `${S} = ${B ? `${B}.rgba.r` : "0.0"};` : null, + F ? `${F} = ${B ? `${B}.rgba.g` : "0.0"};` : null, + e ? `${e} = ${B ? `${B}.rgba.b` : "0.0"};` : null + ].filter(Boolean); } - ); - } finally { - A && (self.URL || self.webkitURL).revokeObjectURL(A); + }); } } -const AQ = class AQ { - constructor() { - this.queue = null, this.messages = {}, this.worker = new Ys(), this.worker.onmessage = (A) => this.onMessage(A); - } - onMessage(A) { - var D; - const { id: I, result: g, error: B, status: C } = A.data, E = this.messages[I]; - E && (B !== void 0 ? (delete this.messages[I], E.reject(B)) : C !== void 0 ? (D = E.onStatus) == null || D.call(E, C) : (delete this.messages[I], E.resolve(g))); - } - tryExclusive(A) { - return this.queue == null ? this.exclusive(A) : null; - } - async exclusive(A) { - const I = this.queue; - I != null ? await new Promise((g) => { - I.push(() => g(void 0)); - }) : this.queue = []; - try { - return await A(this); - } finally { - this.queue != null && (this.queue.length === 0 ? this.queue = null : this.queue.shift()()); - } - } - async call(A, I, g = {}) { - const B = ++AQ.currentId, C = new Promise((E, D) => { - this.messages[B] = { resolve: E, reject: D, onStatus: g.onStatus }; +class tC extends l { + constructor({ + gsplat: A, + flags: I, + index: g, + center: B, + scales: C, + quaternion: E, + rgba: i, + rgb: o, + opacity: D, + x: w, + y: s, + z: t, + r: G, + g: c, + b: h + }) { + super({ + inTypes: { + gsplat: V, + flags: "uint", + index: "int", + center: "vec3", + scales: "vec3", + quaternion: "vec4", + rgba: "vec4", + rgb: "vec3", + opacity: "float", + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }, + outTypes: { gsplat: V }, + inputs: { + gsplat: A, + flags: I, + index: g, + center: B, + scales: C, + quaternion: E, + rgba: i, + rgb: o, + opacity: D, + x: w, + y: s, + z: t, + r: G, + g: c, + b: h + }, + globals: () => [NA], + statements: ({ inputs: y, outputs: S }) => { + const { gsplat: F } = S; + if (!F) + return []; + const { + gsplat: e, + flags: k, + index: R, + center: N, + scales: U, + quaternion: M, + rgba: J, + rgb: H, + opacity: n, + x: L, + y: x, + z: d, + r: Y, + g: p, + b: O + } = y; + return [ + `${F}.flags = ${k ?? (e ? `${e}.flags` : "0u")};`, + `${F}.index = ${R ?? (e ? `${e}.index` : "0")};`, + `${F}.center = ${N ?? (e ? `${e}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${F}.scales = ${U ?? (e ? `${e}.scales` : "vec3(0.0, 0.0, 0.0)")};`, + `${F}.quaternion = ${M ?? (e ? `${e}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, + `${F}.rgba = ${J ?? (e ? `${e}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + H ? `${F}.rgba.rgb = ${H};` : null, + n ? `${F}.rgba.a = ${n};` : null, + L ? `${F}.center.x = ${L};` : null, + x ? `${F}.center.y = ${x};` : null, + d ? `${F}.center.z = ${d};` : null, + Y ? `${F}.rgba.r = ${Y};` : null, + p ? `${F}.rgba.g = ${p};` : null, + O ? `${F}.rgba.b = ${O};` : null + ].filter(Boolean); + } }); - return this.worker.postMessage( - { id: B, name: A, args: I }, - { transfer: _Q(I) } - ), await C; - } - dispose() { - this.worker.terminate(); - const A = Object.values(this.messages); - this.messages = {}; - for (const I of A) - I.reject(new Error("Worker terminate")); } -}; -AQ.currentId = 0; -let kg = AQ; -class Ks { - constructor(A = 4) { - this.numWorkers = 0, this.freelist = [], this.queue = [], this.maxWorkers = A; + dynoOut() { + return new Z(this, "gsplat"); } - async withWorker(A) { - const I = await this.allocWorker(); - try { - return await A(I); - } finally { - this.freeWorker(I); +} +const GC = wA(` + vec3 gsplatNormal(vec3 scales, vec4 quaternion) { + float minScale = min(scales.x, min(scales.y, scales.z)); + vec3 normal; + if (scales.z == minScale) { + normal = vec3(0.0, 0.0, 1.0); + } else if (scales.y == minScale) { + normal = vec3(0.0, 1.0, 0.0); + } else { + normal = vec3(1.0, 0.0, 0.0); } + return quatVec(quaternion, normal); } - async allocWorker() { - const A = this.freelist.pop(); - if (A) - return A; - if (this.numWorkers < this.maxWorkers) { - const I = new kg(); - return this.numWorkers += 1, I; - } - return new Promise((I) => { - this.queue.push(I); +`); +class hC extends r { + constructor({ gsplat: A }) { + super({ a: A, outKey: "normal", outTypeFunc: () => "vec3" }), this.globals = () => [NA, GC], this.statements = ({ inputs: I, outputs: g }) => [ + `${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);` + ]; + } +} +class yC extends l { + constructor({ + gsplat: A, + scale: I, + rotate: g, + translate: B, + recolor: C + }) { + super({ + inTypes: { + gsplat: V, + scale: "float", + rotate: "vec4", + translate: "vec3", + recolor: "vec4" + }, + outTypes: { gsplat: V }, + inputs: { gsplat: A, scale: I, rotate: g, translate: B, recolor: C }, + globals: () => [NA], + statements: ({ inputs: E, outputs: i, compile: o }) => { + const { gsplat: D } = i; + if (!D || !E.gsplat) + return []; + const { scale: w, rotate: s, translate: t, recolor: G } = E, c = o.indent; + return [ + `${D} = ${E.gsplat};`, + `if (isGsplatActive(${D}.flags)) {`, + w ? `${c}${D}.center *= ${w};` : null, + s ? `${c}${D}.center = quatVec(${s}, ${D}.center);` : null, + t ? `${c}${D}.center += ${t};` : null, + w ? `${c}${D}.scales *= ${w};` : null, + s ? `${c}${D}.quaternion = quatQuat(${s}, ${D}.quaternion);` : null, + G ? `${c}${D}.rgba *= ${G};` : null, + "}" + ].filter(Boolean); + } }); } - freeWorker(A) { - if (this.numWorkers > this.maxWorkers) { - this.numWorkers -= 1; - return; - } - const I = this.queue.shift(); - if (I) { - I(A); - return; - } - this.freelist.push(A); + dynoOut() { + return new Z(this, "gsplat"); } } -const BQ = new Ks(), Z = { type: "Gsplat" }, eA = { type: "CovSplat" }, tg = { type: "PackedSplats" }, BB = { type: "ExtSplats" }, xC = { type: "CovSplats" }, es = (Q) => new fC({ packedSplats: Q }), _I = (Q, A) => new PC({ packedSplats: Q, index: A }), lC = (Q, A, I, g) => new uC({ packedSplats: Q, index: A, base: I, count: g }), rs = (Q) => new TC({ extSplats: Q }), pC = (Q, A) => new OC({ extSplats: Q, index: A }), ns = (Q) => new mC({ covsplats: Q }), ds = (Q, A) => new ZC({ covSplats: Q, index: A }), Xg = (Q) => new VC({ gsplat: Q }), uA = (Q) => new XC({ gsplat: Q }), CI = ({ - gsplat: Q, +const Zg = (Q) => new cC({ covsplat: Q }), IB = ({ + covsplat: Q, flags: A, index: I, center: g, - scales: B, - quaternion: C, - rgba: E, - rgb: D, - opacity: i, - x: w, - y: s, - z: o, - r: y, - g: h, - b: k -}) => new WC({ - gsplat: Q, + rgba: B, + rgb: C, + opacity: E, + x: i, + y: o, + z: D, + r: w, + g: s, + b: t +}) => new SC({ + covsplat: Q, flags: A, index: I, center: g, - scales: B, - quaternion: C, - rgba: E, - rgb: D, - opacity: i, - x: w, - y: s, - z: o, - r: y, - g: h, - b: k -}), qQ = (Q) => new vC({ gsplat: Q }), CB = (Q, { - scale: A, - rotate: I, - translate: g, - recolor: B -}) => new zC({ gsplat: Q, scale: A, rotate: I, translate: g, recolor: B }), EB = (Q) => new AE({ index: Q }), xQ = (Q) => new IE({ index: Q }), HA = oA(` - struct Gsplat { - vec3 center; - uint flags; - vec3 scales; - int index; - vec4 quaternion; - vec4 rgba; - }; - const uint GSPLAT_FLAG_ACTIVE = 1u << 0u; - - bool isGsplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; - } -`), LI = oA(` - struct CovSplat { - vec3 center; - uint flags; - vec4 rgba; - vec3 xxyyzz; - int index; - vec3 xyxzyz; - }; - - bool isCovSplatActive(uint flags) { - return (flags & GSPLAT_FLAG_ACTIVE) != 0u; - } -`), CQ = oA(` - struct PackedSplats { - usampler2DArray textureArray; - int numSplats; - vec4 rgbMinMaxLnScaleMinMax; - bool lodOpacity; - }; -`); -class fC extends e { - constructor({ - packedSplats: A - }) { - super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.numSplats} = ${I.a}.numSplats;` - ]; - } -} -const bC = oA(` - bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) { - if ((index >= 0) && (index < numSplats)) { - uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0); - unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax); - return true; - } else { - return false; - } - } -`); -class PC extends d { - constructor({ - packedSplats: A, - index: I - }) { - super({ - inTypes: { packedSplats: tg, index: "int" }, - outTypes: { gsplat: Z }, - inputs: { packedSplats: A, index: I }, - globals: () => [HA, CQ, bC], - statements: ({ inputs: g, outputs: B }) => { - const { gsplat: C } = B; - if (!C) - return []; - const { packedSplats: E, index: D } = g; - let i; - return E && D ? i = z(` - ${C}.flags = 0u; - if (readPackedArray(${E}.textureArray, ${E}.numSplats, ${E}.rgbMinMaxLnScaleMinMax, ${D}, ${C})) { - if (${E}.lodOpacity) { - ${C}.rgba.a = 2.0 * ${C}.rgba.a; - } - bool zeroSize = all(equal(${C}.scales, vec3(0.0, 0.0, 0.0))); - ${C}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `) : i = [`${C}.flags = 0u;`], i.push(`${C}.index = ${D ?? "0"};`), i; - } - }); - } - dynoOut() { - return new V(this, "gsplat"); - } -} -class uC extends d { - constructor({ - packedSplats: A, - index: I, - base: g, - count: B - }) { - super({ - inTypes: { - packedSplats: tg, - index: "int", - base: "int", - count: "int" - }, - outTypes: { gsplat: Z }, - inputs: { packedSplats: A, index: I, base: g, count: B }, - globals: () => [HA, CQ, bC], - statements: ({ inputs: C, outputs: E }) => { - const { gsplat: D } = E; - if (!D) - return []; - const { packedSplats: i, index: w, base: s, count: o } = C; - let y; - return i && w && s && o ? y = z(` - ${D}.flags = 0u; - if (readPackedArray(${i}.textureArray, ${i}.numSplats, ${i}.rgbMinMaxLnScaleMinMax, ${w}, ${D})) { - if (${i}.lodOpacity) { - ${D}.rgba.a = 2.0 * ${D}.rgba.a; - } - bool zeroSize = all(equal(${D}.scales, vec3(0.0, 0.0, 0.0))); - ${D}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE; - } - `) : y = [`${D}.flags = 0u;`], y.push(`${D}.index = ${w ?? "0"};`), y; - } - }); - } - dynoOut() { - return new V(this, "gsplat"); - } -} -const DB = oA(` - struct ExtSplats { - usampler2DArray textureArray1; - usampler2DArray textureArray2; - int numSplats; - }; -`); -class TC extends e { - constructor({ extSplats: A }) { - super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.numSplats} = ${I.a}.numSplats;` - ]; - } -} -const qs = oA(` - void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) { - gsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba); - gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } - } -`); -class OC extends d { - constructor({ - extSplats: A, - index: I - }) { - super({ - inTypes: { extSplats: BB, index: "int" }, - outTypes: { gsplat: Z }, - inputs: { extSplats: A, index: I }, - globals: () => [HA, DB, qs], - statements: ({ inputs: g, outputs: B }) => { - const { gsplat: C } = B; - if (!C) - return [`${C}.flags = 0u;`]; - const { extSplats: E, index: D } = g; - return E && D ? z(` - readExtArrays(${E}.textureArray1, ${E}.textureArray2, ${E}.numSplats, ${D}, ${C}); - `) : [`${C}.flags = 0u;`]; - } - }); - } - dynoOut() { - return new V(this, "gsplat"); - } -} -class mC extends e { - constructor({ covsplats: A }) { - super({ a: A, outKey: "numSplats", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.numSplats} = ${I.a}.numSplats;` - ]; - } -} -const xs = oA(` - void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) { - covsplat.flags = 0u; - if ((index >= 0) && (index < numSplats)) { - ivec3 coord = splatTexCoord(index); - uvec4 packed1 = texelFetch(texture1, coord, 0); - uvec4 packed2 = texelFetch(texture2, coord, 0); - unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz); - covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE; - gsplat.index = index; - } - } -`); -class ZC extends d { - constructor({ - covSplats: A, - index: I - }) { - super({ - inTypes: { covSplats: xC, index: "int" }, - outTypes: { covsplat: eA }, - inputs: { covSplats: A, index: I }, - globals: () => [HA, LI, xs], - statements: ({ inputs: g, outputs: B }) => { - const { covsplat: C } = B; - if (!C) - return [`${C}.flags = 0u;`]; - const { covSplats: E, index: D } = g; - return E && D ? z(` - readCovArrays(${E}.textureArray, ${E}.numSplats, ${D}, ${C}); - `) : [`${C}.flags = 0u;`]; - } - }); - } - dynoOut() { - return new V(this, "covsplat"); - } -} -class VC extends d { - constructor({ gsplat: A }) { - super({ - inTypes: { gsplat: Z }, - outTypes: { covsplat: eA }, - inputs: { gsplat: A }, - globals: () => [HA, LI], - statements: ({ inputs: I, outputs: g }) => { - const { gsplat: B } = I, { covsplat: C } = g; - return B ? z(` - ${C}.flags = 0u; - if (isGsplatActive(${B}.flags)) { - ${C}.flags = ${B}.flags; - ${C}.index = ${B}.index; - ${C}.rgba = ${B}.rgba; - ${C}.center = ${B}.center; - mat3 m = scaleQuaternionToMatrix(${B}.scales, ${B}.quaternion); - m = m * transpose(m); - ${C}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]); - ${C}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]); - } - `) : [`${C}.flags = 0u;`]; - } - }); - } - dynoOut() { - return new V(this, "covsplat"); - } -} -class XC extends d { - constructor({ gsplat: A }) { + rgba: B, + rgb: C, + opacity: E, + x: i, + y: o, + z: D, + r: w, + g: s, + b: t +}); +class cC extends l { + constructor({ covsplat: A }) { super({ - inTypes: { gsplat: Z }, + inTypes: { covsplat: KA }, outTypes: { flags: "uint", active: "bool", index: "int", center: "vec3", - scales: "vec3", - quaternion: "vec4", rgba: "vec4", rgb: "vec3", opacity: "float", @@ -2164,73 +1187,65 @@ class XC extends d { g: "float", b: "float" }, - inputs: { gsplat: A }, - globals: () => [HA], + inputs: { covsplat: A }, + globals: () => [LI], statements: ({ inputs: I, outputs: g }) => { - const { gsplat: B } = I, { + const { covsplat: B } = I, { flags: C, active: E, - index: D, - center: i, - scales: w, - quaternion: s, - rgba: o, - rgb: y, - opacity: h, - x: k, - y: R, - z: F, - r: a, - g: S, - b: M + index: i, + center: o, + rgba: D, + rgb: w, + opacity: s, + x: t, + y: G, + z: c, + r: h, + g: y, + b: S } = g; return [ C ? `${C} = ${B ? `${B}.flags` : "0u"};` : null, - E ? `${E} = isGsplatActive(${B ? `${B}.flags` : "0u"});` : null, - D ? `${D} = ${B ? `${B}.index` : "0"};` : null, - i ? `${i} = ${B ? `${B}.center` : "vec3(0.0, 0.0, 0.0)"};` : null, - w ? `${w} = ${B ? `${B}.scales` : "vec3(0.0, 0.0, 0.0)"};` : null, - s ? `${s} = ${B ? `${B}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};` : null, - o ? `${o} = ${B ? `${B}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};` : null, - y ? `${y} = ${B ? `${B}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};` : null, - h ? `${h} = ${B ? `${B}.rgba.a` : "0.0"};` : null, - k ? `${k} = ${B ? `${B}.center.x` : "0.0"};` : null, - R ? `${R} = ${B ? `${B}.center.y` : "0.0"};` : null, - F ? `${F} = ${B ? `${B}.center.z` : "0.0"};` : null, - a ? `${a} = ${B ? `${B}.rgba.r` : "0.0"};` : null, - S ? `${S} = ${B ? `${B}.rgba.g` : "0.0"};` : null, - M ? `${M} = ${B ? `${B}.rgba.b` : "0.0"};` : null + E ? `${E} = isCovSplatActive(${B ? `${B}.flags` : "0u"});` : null, + i ? `${i} = ${B ? `${B}.index` : "0"};` : null, + o ? `${o} = ${B ? `${B}.center` : "vec3(0.0, 0.0, 0.0)"};` : null, + D ? `${D} = ${B ? `${B}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};` : null, + w ? `${w} = ${B ? `${B}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};` : null, + s ? `${s} = ${B ? `${B}.rgba.a` : "0.0"};` : null, + t ? `${t} = ${B ? `${B}.center.x` : "0.0"};` : null, + G ? `${G} = ${B ? `${B}.center.y` : "0.0"};` : null, + c ? `${c} = ${B ? `${B}.center.z` : "0.0"};` : null, + h ? `${h} = ${B ? `${B}.rgba.r` : "0.0"};` : null, + y ? `${y} = ${B ? `${B}.rgba.g` : "0.0"};` : null, + S ? `${S} = ${B ? `${B}.rgba.b` : "0.0"};` : null ].filter(Boolean); } }); } } -class WC extends d { +class SC extends l { constructor({ - gsplat: A, + covsplat: A, flags: I, index: g, center: B, - scales: C, - quaternion: E, - rgba: D, - rgb: i, - opacity: w, - x: s, - y: o, - z: y, - r: h, - g: k, - b: R + rgba: C, + rgb: E, + opacity: i, + x: o, + y: D, + z: w, + r: s, + g: t, + b: G }) { super({ inTypes: { - gsplat: Z, + covsplat: KA, flags: "uint", index: "int", center: "vec3", - scales: "vec3", - quaternion: "vec4", rgba: "vec4", rgb: "vec3", opacity: "float", @@ -2241,350 +1256,107 @@ class WC extends d { g: "float", b: "float" }, - outTypes: { gsplat: Z }, + outTypes: { covsplat: KA }, inputs: { - gsplat: A, + covsplat: A, flags: I, index: g, center: B, - scales: C, - quaternion: E, - rgba: D, - rgb: i, - opacity: w, - x: s, - y: o, - z: y, - r: h, - g: k, - b: R + rgba: C, + rgb: E, + opacity: i, + x: o, + y: D, + z: w, + r: s, + g: t, + b: G }, - globals: () => [HA], - statements: ({ inputs: F, outputs: a }) => { - const { gsplat: S } = a; - if (!S) + globals: () => [LI], + statements: ({ inputs: c, outputs: h }) => { + const { covsplat: y } = h; + if (!y) return []; const { - gsplat: M, - flags: c, - index: N, - center: U, - scales: J, - quaternion: t, - rgba: H, - rgb: K, - opacity: Y, - x: L, - y: q, - z: n, - r, - g: p, - b: m - } = F; + covsplat: S, + flags: F, + index: e, + center: k, + rgba: R, + rgb: N, + opacity: U, + x: M, + y: J, + z: H, + r: n, + g: L, + b: x + } = c; return [ - `${S}.flags = ${c ?? (M ? `${M}.flags` : "0u")};`, - `${S}.index = ${N ?? (M ? `${M}.index` : "0")};`, - `${S}.center = ${U ?? (M ? `${M}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${S}.scales = ${J ?? (M ? `${M}.scales` : "vec3(0.0, 0.0, 0.0)")};`, - `${S}.quaternion = ${t ?? (M ? `${M}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`, - `${S}.rgba = ${H ?? (M ? `${M}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - K ? `${S}.rgba.rgb = ${K};` : null, - Y ? `${S}.rgba.a = ${Y};` : null, - L ? `${S}.center.x = ${L};` : null, - q ? `${S}.center.y = ${q};` : null, - n ? `${S}.center.z = ${n};` : null, - r ? `${S}.rgba.r = ${r};` : null, - p ? `${S}.rgba.g = ${p};` : null, - m ? `${S}.rgba.b = ${m};` : null + `${y}.flags = ${F ?? (S ? `${S}.flags` : "0u")};`, + `${y}.index = ${e ?? (S ? `${S}.index` : "0")};`, + `${y}.center = ${k ?? (S ? `${S}.center` : "vec3(0.0, 0.0, 0.0)")};`, + `${y}.rgba = ${R ?? (S ? `${S}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, + N ? `${y}.rgba.rgb = ${N};` : null, + U ? `${y}.rgba.a = ${U};` : null, + M ? `${y}.center.x = ${M};` : null, + J ? `${y}.center.y = ${J};` : null, + H ? `${y}.center.z = ${H};` : null, + n ? `${y}.rgba.r = ${n};` : null, + L ? `${y}.rgba.g = ${L};` : null, + x ? `${y}.rgba.b = ${x};` : null, + `${y}.xxyyzz = ${S ? `${S}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, + `${y}.xyxzyz = ${S ? `${S}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` ].filter(Boolean); } }); } dynoOut() { - return new V(this, "gsplat"); + return new Z(this, "covsplat"); } } -const jC = oA(` - vec3 gsplatNormal(vec3 scales, vec4 quaternion) { - float minScale = min(scales.x, min(scales.y, scales.z)); - vec3 normal; - if (scales.z == minScale) { - normal = vec3(0.0, 0.0, 1.0); - } else if (scales.y == minScale) { - normal = vec3(0.0, 1.0, 0.0); - } else { - normal = vec3(1.0, 0.0, 0.0); - } - return quatVec(quaternion, normal); +class FC extends l { + constructor({ index: A }) { + super({ + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index: A }, + statements: ({ inputs: I, outputs: g }) => { + const { index: B } = I, { coord: C } = g; + return !B || !C ? [] : [`${C} = splatTexCoord(${B});`]; + } + }); } -`); -class vC extends e { - constructor({ gsplat: A }) { - super({ a: A, outKey: "normal", outTypeFunc: () => "vec3" }), this.globals = () => [HA, jC], this.statements = ({ inputs: I, outputs: g }) => [ - `${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);` - ]; + dynoOut() { + return new Z(this, "coord"); } } -class zC extends d { - constructor({ - gsplat: A, - scale: I, - rotate: g, - translate: B, - recolor: C - }) { +class RC extends l { + constructor({ index: A }) { super({ - inTypes: { - gsplat: Z, - scale: "float", - rotate: "vec4", - translate: "vec3", - recolor: "vec4" - }, - outTypes: { gsplat: Z }, - inputs: { gsplat: A, scale: I, rotate: g, translate: B, recolor: C }, - globals: () => [HA], - statements: ({ inputs: E, outputs: D, compile: i }) => { - const { gsplat: w } = D; - if (!w || !E.gsplat) - return []; - const { scale: s, rotate: o, translate: y, recolor: h } = E, k = i.indent; - return [ - `${w} = ${E.gsplat};`, - `if (isGsplatActive(${w}.flags)) {`, - s ? `${k}${w}.center *= ${s};` : null, - o ? `${k}${w}.center = quatVec(${o}, ${w}.center);` : null, - y ? `${k}${w}.center += ${y};` : null, - s ? `${k}${w}.scales *= ${s};` : null, - o ? `${k}${w}.quaternion = quatQuat(${o}, ${w}.quaternion);` : null, - h ? `${k}${w}.rgba *= ${h};` : null, - "}" - ].filter(Boolean); + inTypes: { index: "int" }, + outTypes: { coord: "ivec3" }, + inputs: { index: A }, + statements: ({ inputs: I, outputs: g }) => { + const { index: B } = I, { coord: C } = g; + return !B || !C ? [] : [`${C} = pagedSplatTexCoord(${B});`]; } }); } dynoOut() { - return new V(this, "gsplat"); + return new Z(this, "coord"); } } -const Wg = (Q) => new _C({ covsplat: Q }), iB = ({ - covsplat: Q, - flags: A, - index: I, - center: g, - rgba: B, - rgb: C, - opacity: E, - x: D, - y: i, - z: w, - r: s, - g: o, - b: y -}) => new $C({ - covsplat: Q, - flags: A, - index: I, - center: g, - rgba: B, - rgb: C, - opacity: E, - x: D, - y: i, - z: w, - r: s, - g: o, - b: y -}); -class _C extends d { - constructor({ covsplat: A }) { - super({ - inTypes: { covsplat: eA }, - outTypes: { - flags: "uint", - active: "bool", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - inputs: { covsplat: A }, - globals: () => [LI], - statements: ({ inputs: I, outputs: g }) => { - const { covsplat: B } = I, { - flags: C, - active: E, - index: D, - center: i, - rgba: w, - rgb: s, - opacity: o, - x: y, - y: h, - z: k, - r: R, - g: F, - b: a - } = g; - return [ - C ? `${C} = ${B ? `${B}.flags` : "0u"};` : null, - E ? `${E} = isCovSplatActive(${B ? `${B}.flags` : "0u"});` : null, - D ? `${D} = ${B ? `${B}.index` : "0"};` : null, - i ? `${i} = ${B ? `${B}.center` : "vec3(0.0, 0.0, 0.0)"};` : null, - w ? `${w} = ${B ? `${B}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};` : null, - s ? `${s} = ${B ? `${B}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};` : null, - o ? `${o} = ${B ? `${B}.rgba.a` : "0.0"};` : null, - y ? `${y} = ${B ? `${B}.center.x` : "0.0"};` : null, - h ? `${h} = ${B ? `${B}.center.y` : "0.0"};` : null, - k ? `${k} = ${B ? `${B}.center.z` : "0.0"};` : null, - R ? `${R} = ${B ? `${B}.rgba.r` : "0.0"};` : null, - F ? `${F} = ${B ? `${B}.rgba.g` : "0.0"};` : null, - a ? `${a} = ${B ? `${B}.rgba.b` : "0.0"};` : null - ].filter(Boolean); - } - }); - } -} -class $C extends d { - constructor({ - covsplat: A, - flags: I, - index: g, - center: B, - rgba: C, - rgb: E, - opacity: D, - x: i, - y: w, - z: s, - r: o, - g: y, - b: h - }) { - super({ - inTypes: { - covsplat: eA, - flags: "uint", - index: "int", - center: "vec3", - rgba: "vec4", - rgb: "vec3", - opacity: "float", - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }, - outTypes: { covsplat: eA }, - inputs: { - covsplat: A, - flags: I, - index: g, - center: B, - rgba: C, - rgb: E, - opacity: D, - x: i, - y: w, - z: s, - r: o, - g: y, - b: h - }, - globals: () => [LI], - statements: ({ inputs: k, outputs: R }) => { - const { covsplat: F } = R; - if (!F) - return []; - const { - covsplat: a, - flags: S, - index: M, - center: c, - rgba: N, - rgb: U, - opacity: J, - x: t, - y: H, - z: K, - r: Y, - g: L, - b: q - } = k; - return [ - `${F}.flags = ${S ?? (a ? `${a}.flags` : "0u")};`, - `${F}.index = ${M ?? (a ? `${a}.index` : "0")};`, - `${F}.center = ${c ?? (a ? `${a}.center` : "vec3(0.0, 0.0, 0.0)")};`, - `${F}.rgba = ${N ?? (a ? `${a}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`, - U ? `${F}.rgba.rgb = ${U};` : null, - J ? `${F}.rgba.a = ${J};` : null, - t ? `${F}.center.x = ${t};` : null, - H ? `${F}.center.y = ${H};` : null, - K ? `${F}.center.z = ${K};` : null, - Y ? `${F}.rgba.r = ${Y};` : null, - L ? `${F}.rgba.g = ${L};` : null, - q ? `${F}.rgba.b = ${q};` : null, - `${F}.xxyyzz = ${a ? `${a}.xxyyzz` : "vec3(0.0, 0.0, 0.0)"};`, - `${F}.xyxzyz = ${a ? `${a}.xyxzyz` : "vec3(0.0, 0.0, 0.0)"};` - ].filter(Boolean); - } - }); - } - dynoOut() { - return new V(this, "covsplat"); - } -} -class AE extends d { - constructor({ index: A }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index: A }, - statements: ({ inputs: I, outputs: g }) => { - const { index: B } = I, { coord: C } = g; - return !B || !C ? [] : [`${C} = splatTexCoord(${B});`]; - } - }); - } - dynoOut() { - return new V(this, "coord"); - } -} -class IE extends d { - constructor({ index: A }) { - super({ - inTypes: { index: "int" }, - outTypes: { coord: "ivec3" }, - inputs: { index: A }, - statements: ({ inputs: I, outputs: g }) => { - const { index: B } = I, { coord: C } = g; - return !B || !C ? [] : [`${C} = pagedSplatTexCoord(${B});`]; - } - }); - } - dynoOut() { - return new V(this, "coord"); - } -} -const wB = (Q, A) => new EE({ gsplat: Q, rgbMinMaxLnScaleMinMax: A }), gE = (Q, A) => new DE({ covsplat: Q, rgbMinMaxLnScaleMinMax: A }), QE = (Q) => new iE({ gsplat: Q }), lQ = (Q) => new wE({ covsplat: Q }), BE = (Q, A, I, g) => new ps({ gsplat: Q, viewCenter: A, viewDir: I, sortRadial: g }), CE = (Q, A, I, g) => new fs({ covsplat: Q, viewCenter: A, viewDir: I, sortRadial: g }), ls = (Q) => new oB({ rgba8: Q }); -class EE extends d { +const gB = (Q, A) => new JC({ gsplat: Q, rgbMinMaxLnScaleMinMax: A }), kC = (Q, A) => new UC({ covsplat: Q, rgbMinMaxLnScaleMinMax: A }), eC = (Q) => new LC({ gsplat: Q }), HQ = (Q) => new nC({ covsplat: Q }), NC = (Q, A, I, g) => new ys({ gsplat: Q, viewCenter: A, viewDir: I, sortRadial: g }), MC = (Q, A, I, g) => new cs({ covsplat: Q, viewCenter: A, viewDir: I, sortRadial: g }), hs = (Q) => new QB({ rgba8: Q }); +class JC extends l { constructor({ gsplat: A, rgbMinMaxLnScaleMinMax: I }) { super({ - inTypes: { gsplat: Z, rgbMinMaxLnScaleMinMax: "vec4" }, + inTypes: { gsplat: V, rgbMinMaxLnScaleMinMax: "vec4" }, inputs: { gsplat: A, rgbMinMaxLnScaleMinMax: I }, - globals: () => [HA], + globals: () => [NA], statements: ({ inputs: g, outputs: B }) => { const { gsplat: C, rgbMinMaxLnScaleMinMax: E } = g; return C && E ? z(` @@ -2598,13 +1370,13 @@ class EE extends d { }); } } -class DE extends d { +class UC extends l { constructor({ covsplat: A, rgbMinMaxLnScaleMinMax: I }) { super({ - inTypes: { covsplat: eA, rgbMinMaxLnScaleMinMax: "vec4" }, + inTypes: { covsplat: KA, rgbMinMaxLnScaleMinMax: "vec4" }, inputs: { covsplat: A, rgbMinMaxLnScaleMinMax: I }, globals: () => [LI], statements: ({ inputs: g }) => { @@ -2620,14 +1392,14 @@ class DE extends d { }); } } -class iE extends d { +class LC extends l { constructor({ gsplat: A }) { super({ - inTypes: { gsplat: Z }, + inTypes: { gsplat: V }, inputs: { gsplat: A }, - globals: () => [HA], + globals: () => [NA], statements: ({ inputs: I }) => { const { gsplat: g } = I; return g ? z(` @@ -2642,12 +1414,12 @@ class iE extends d { }); } } -class wE extends d { +class nC extends l { constructor({ covsplat: A }) { super({ - inTypes: { covsplat: eA }, + inTypes: { covsplat: KA }, inputs: { covsplat: A }, globals: () => [LI], statements: ({ inputs: I }) => { @@ -2664,7 +1436,7 @@ class wE extends d { }); } } -class ps extends d { +class ys extends l { constructor({ gsplat: A, viewCenter: I, @@ -2673,24 +1445,24 @@ class ps extends d { }) { super({ inTypes: { - gsplat: Z, + gsplat: V, viewCenter: "vec3", viewDir: "vec3", sortRadial: "bool" }, inputs: { gsplat: A, viewCenter: I, viewDir: g, sortRadial: B }, - globals: () => [HA], + globals: () => [NA], statements: ({ inputs: C }) => { - const { gsplat: E, viewCenter: D, viewDir: i, sortRadial: w } = C; - return E && D && i && w ? z(` + const { gsplat: E, viewCenter: i, viewDir: o, sortRadial: D } = C; + return E && i && o && D ? z(` float metric = 1.0 / 0.0; if (isGsplatActive(${E}.flags)) { - vec3 center = ${E}.center - ${D}; - if (${w}) { + vec3 center = ${E}.center - ${i}; + if (${D}) { metric = length(center); } else { float bias = 100.0; // reduce popping - metric = dot(center, ${i}) + bias; + metric = dot(center, ${o}) + bias; } } target3 = floatToVec4(metric); @@ -2699,7 +1471,7 @@ class ps extends d { }); } } -class fs extends d { +class cs extends l { constructor({ covsplat: A, viewCenter: I, @@ -2708,7 +1480,7 @@ class fs extends d { }) { super({ inTypes: { - covsplat: eA, + covsplat: KA, viewCenter: "vec3", viewDir: "vec3", sortRadial: "bool" @@ -2716,16 +1488,16 @@ class fs extends d { inputs: { covsplat: A, viewCenter: I, viewDir: g, sortRadial: B }, globals: () => [LI], statements: ({ inputs: C }) => { - const { covsplat: E, viewCenter: D, viewDir: i, sortRadial: w } = C; - return E && D && i && w ? z(` + const { covsplat: E, viewCenter: i, viewDir: o, sortRadial: D } = C; + return E && i && o && D ? z(` float metric = 1.0 / 0.0; if (isCovSplatActive(${E}.flags)) { - vec3 center = ${E}.center - ${D}; - if (${w}) { + vec3 center = ${E}.center - ${i}; + if (${D}) { metric = length(center); } else { float bias = 100.0; // reduce popping - metric = dot(center, ${i}) + bias; + metric = dot(center, ${o}) + bias; } } target3 = floatToVec4(metric); @@ -2734,7 +1506,7 @@ class fs extends d { }); } } -class oB extends d { +class QB extends l { constructor({ rgba8: A }) { super({ inTypes: { rgba8: "vec4" }, @@ -2745,11 +1517,11 @@ class oB extends d { }); } dynoOut() { - return new V(this, "rgba8"); + return new Z(this, "rgba8"); } } -const bs = (Q, A, I) => new x({ key: Q, type: A, value: I }), Ps = (Q = !1, A) => new bI({ key: A, value: Q }), us = (Q = 0, A) => new oE({ key: A, value: Q }), Ts = (Q = 0, A) => new EI({ key: A, value: Q }), wI = (Q = 0, A) => new pI({ key: A, value: Q }), Os = (Q, A) => new sE({ key: A, value: Q }), ms = (Q, A) => new GE({ key: A, value: Q }), Zs = (Q, A) => new yE({ key: A, value: Q }), Vs = (Q, A) => new hE({ key: A, value: Q }), Xs = (Q, A) => new RE({ key: A, value: Q }), Ws = (Q, A) => new kE({ key: A, value: Q }), js = (Q, A) => new FE({ key: A, value: Q }), cI = (Q, A) => new DI({ key: A, value: Q }), vs = (Q, A) => new aE({ key: A, value: Q }), zs = (Q, A) => new SE({ key: A, value: Q }), _s = (Q, A) => new NE({ key: A, value: Q }), $s = (Q, A) => new mI({ key: A, value: Q }), AG = (Q, A) => new cE({ key: A, value: Q }), IG = (Q, A) => new ME({ key: A, value: Q }), gG = (Q, A) => new JE({ key: A, value: Q }), QG = (Q, A) => new UE({ key: A, value: Q }), BG = (Q, A) => new sB({ key: A, value: Q }), CG = (Q, A) => new tE({ key: A, value: Q }), EG = (Q, A) => new HE({ key: A, value: Q }), DG = (Q, A) => new LE({ key: A, value: Q }), iG = (Q, A) => new YE({ key: A, value: Q }), wG = (Q, A) => new KE({ key: A, value: Q }), oG = (Q, A) => new eE({ key: A, value: Q }), sG = (Q, A) => new rE({ key: A, value: Q }), GG = (Q, A) => new EQ({ key: A, value: Q }), yG = (Q, A) => new nE({ key: A, value: Q }), hG = (Q, A) => new dE({ key: A, value: Q }), RG = (Q, A) => new dA({ key: A, value: Q }), kG = (Q, A) => new qE({ key: Q, value: A }), FG = (Q, A) => new xE({ key: A, value: Q }), aG = (Q, A) => new lE({ key: A, value: Q }), SG = (Q, A) => new pE({ key: A, value: Q }), NG = (Q, A) => new fE({ key: A, value: Q }), cG = (Q, A) => new bE({ key: A, value: Q }), MG = (Q, A) => new PE({ key: A, value: Q }), JG = (Q, A) => new uE({ key: A, value: Q }), UG = (Q, A) => new TE({ key: A, value: Q }), tG = (Q, A) => new OE({ key: A, value: Q }), HG = (Q, A) => new mE({ key: A, value: Q }); -class x extends d { +const Ss = (Q, A, I) => new q({ key: Q, type: A, value: I }), Fs = (Q = !1, A) => new Mg({ key: A, value: Q }), Rs = (Q = 0, A) => new HC({ key: A, value: Q }), ks = (Q = 0, A) => new _A({ key: A, value: Q }), EI = (Q = 0, A) => new vI({ key: A, value: Q }), es = (Q, A) => new KC({ key: A, value: Q }), Ns = (Q, A) => new rC({ key: A, value: Q }), Ms = (Q, A) => new YC({ key: A, value: Q }), Js = (Q, A) => new dC({ key: A, value: Q }), Us = (Q, A) => new lC({ key: A, value: Q }), Ls = (Q, A) => new xC({ key: A, value: Q }), ns = (Q, A) => new qC({ key: A, value: Q }), kI = (Q, A) => new UI({ key: A, value: Q }), Hs = (Q, A) => new pC({ key: A, value: Q }), Ks = (Q, A) => new fC({ key: A, value: Q }), rs = (Q, A) => new uC({ key: A, value: Q }), Ys = (Q, A) => new zI({ key: A, value: Q }), ds = (Q, A) => new bC({ key: A, value: Q }), ls = (Q, A) => new PC({ key: A, value: Q }), xs = (Q, A) => new mC({ key: A, value: Q }), qs = (Q, A) => new TC({ key: A, value: Q }), ps = (Q, A) => new BB({ key: A, value: Q }), fs = (Q, A) => new OC({ key: A, value: Q }), us = (Q, A) => new ZC({ key: A, value: Q }), bs = (Q, A) => new vC({ key: A, value: Q }), Ps = (Q, A) => new XC({ key: A, value: Q }), ms = (Q, A) => new VC({ key: A, value: Q }), Ts = (Q, A) => new WC({ key: A, value: Q }), Os = (Q, A) => new jC({ key: A, value: Q }), Zs = (Q, A) => new Jg({ key: A, value: Q }), vs = (Q, A) => new zC({ key: A, value: Q }), Xs = (Q, A) => new _C({ key: A, value: Q }), Vs = (Q, A) => new qA({ key: A, value: Q }), Ws = (Q, A) => new $C({ key: Q, value: A }), js = (Q, A) => new AE({ key: A, value: Q }), zs = (Q, A) => new IE({ key: A, value: Q }), _s = (Q, A) => new gE({ key: A, value: Q }), $s = (Q, A) => new QE({ key: A, value: Q }), Aw = (Q, A) => new BE({ key: A, value: Q }), Iw = (Q, A) => new CE({ key: A, value: Q }), gw = (Q, A) => new EE({ key: A, value: Q }), Qw = (Q, A) => new iE({ key: A, value: Q }), Bw = (Q, A) => new DE({ key: A, value: Q }), Cw = (Q, A) => new oE({ key: A, value: Q }); +class q extends l { constructor({ key: A, type: I, @@ -2762,22 +1534,22 @@ class x extends d { outTypes: { [A]: I }, update: () => { if (C) { - const D = C(this.value); - D !== void 0 && (this.value = D); + const i = C(this.value); + i !== void 0 && (this.value = i); } this.uniform.value = this.value; }, - generate: ({ inputs: D, outputs: i }) => { - const w = (E == null ? void 0 : E({ inputs: D, outputs: i })) ?? [], s = {}, o = i[A]; - return o && (w.push(`uniform ${vQ(o, I, g)};`), s[o] = this.uniform), { globals: w, uniforms: s }; + generate: ({ inputs: i, outputs: o }) => { + const D = (E == null ? void 0 : E({ inputs: i, outputs: o })) ?? [], w = {}, s = o[A]; + return s && (D.push(`uniform ${zQ(s, I, g)};`), w[s] = this.uniform), { globals: D, uniforms: w }; } }), this.type = I, this.count = g, this.value = B, this.uniform = { value: B }, this.outKey = A; } dynoOut() { - return new V(this, this.outKey); + return new Z(this, this.outKey); } } -class bI extends x { +class Mg extends q { constructor({ key: A, value: I, @@ -2786,7 +1558,7 @@ class bI extends x { super({ key: A, type: "bool", value: I, update: g }); } } -class oE extends x { +class HC extends q { constructor({ key: A, value: I, @@ -2795,7 +1567,7 @@ class oE extends x { super({ key: A, type: "uint", value: I, update: g }); } } -class EI extends x { +class _A extends q { constructor({ key: A, value: I, @@ -2804,7 +1576,7 @@ class EI extends x { super({ key: A, type: "int", value: I, update: g }); } } -class pI extends x { +class vI extends q { constructor({ key: A, value: I, @@ -2813,7 +1585,7 @@ class pI extends x { super({ key: A, type: "float", value: I, update: g }); } } -class sE extends x { +class KC extends q { constructor({ key: A, value: I, @@ -2822,7 +1594,7 @@ class sE extends x { super({ key: A, type: "bvec2", value: I, update: g }); } } -class GE extends x { +class rC extends q { constructor({ key: A, value: I, @@ -2831,7 +1603,7 @@ class GE extends x { super({ key: A, type: "uvec2", value: I, update: g }); } } -class yE extends x { +class YC extends q { constructor({ key: A, value: I, @@ -2840,7 +1612,7 @@ class yE extends x { super({ key: A, type: "ivec2", value: I, update: g }); } } -class hE extends x { +class dC extends q { constructor({ key: A, value: I, @@ -2849,7 +1621,7 @@ class hE extends x { super({ key: A, type: "vec2", value: I, update: g }); } } -class RE extends x { +class lC extends q { constructor({ key: A, value: I, @@ -2858,7 +1630,7 @@ class RE extends x { super({ key: A, type: "bvec3", value: I, update: g }); } } -class kE extends x { +class xC extends q { constructor({ key: A, value: I, @@ -2867,7 +1639,7 @@ class kE extends x { super({ key: A, type: "uvec3", value: I, update: g }); } } -class FE extends x { +class qC extends q { constructor({ key: A, value: I, @@ -2876,7 +1648,7 @@ class FE extends x { super({ key: A, type: "ivec3", value: I, update: g }); } } -class DI extends x { +class UI extends q { constructor({ key: A, value: I, @@ -2885,7 +1657,7 @@ class DI extends x { super({ key: A, type: "vec3", value: I, update: g }); } } -class aE extends x { +class pC extends q { constructor({ key: A, value: I, @@ -2894,7 +1666,7 @@ class aE extends x { super({ key: A, type: "bvec4", value: I, update: g }); } } -class SE extends x { +class fC extends q { constructor({ key: A, value: I, @@ -2903,7 +1675,7 @@ class SE extends x { super({ key: A, type: "uvec4", value: I, update: g }); } } -class NE extends x { +class uC extends q { constructor({ key: A, value: I, @@ -2912,7 +1684,7 @@ class NE extends x { super({ key: A, type: "ivec4", value: I, update: g }); } } -class mI extends x { +class zI extends q { constructor({ key: A, value: I, @@ -2921,7 +1693,7 @@ class mI extends x { super({ key: A, type: "vec4", value: I, update: g }); } } -class cE extends x { +class bC extends q { constructor({ key: A, value: I, @@ -2930,7 +1702,7 @@ class cE extends x { super({ key: A, type: "mat2", value: I, update: g }); } } -class ME extends x { +class PC extends q { constructor({ key: A, value: I, @@ -2939,7 +1711,7 @@ class ME extends x { super({ key: A, type: "mat2x2", value: I, update: g }); } } -class JE extends x { +class mC extends q { constructor({ key: A, value: I, @@ -2948,7 +1720,7 @@ class JE extends x { super({ key: A, type: "mat2x3", value: I, update: g }); } } -class UE extends x { +class TC extends q { constructor({ key: A, value: I, @@ -2957,7 +1729,7 @@ class UE extends x { super({ key: A, type: "mat2x4", value: I, update: g }); } } -class sB extends x { +class BB extends q { constructor({ key: A, value: I, @@ -2966,7 +1738,7 @@ class sB extends x { super({ key: A, type: "mat3", value: I, update: g }); } } -class tE extends x { +class OC extends q { constructor({ key: A, value: I, @@ -2975,7 +1747,7 @@ class tE extends x { super({ key: A, type: "mat3x2", value: I, update: g }); } } -class HE extends x { +class ZC extends q { constructor({ key: A, value: I, @@ -2984,7 +1756,7 @@ class HE extends x { super({ key: A, type: "mat3x3", value: I, update: g }); } } -class LE extends x { +class vC extends q { constructor({ key: A, value: I, @@ -2993,7 +1765,7 @@ class LE extends x { super({ key: A, type: "mat3x4", value: I, update: g }); } } -class YE extends x { +class XC extends q { constructor({ key: A, value: I, @@ -3002,7 +1774,7 @@ class YE extends x { super({ key: A, type: "mat4", value: I, update: g }); } } -class KE extends x { +class VC extends q { constructor({ key: A, value: I, @@ -3011,7 +1783,7 @@ class KE extends x { super({ key: A, type: "mat4x2", value: I, update: g }); } } -class eE extends x { +class WC extends q { constructor({ key: A, value: I, @@ -3020,7 +1792,7 @@ class eE extends x { super({ key: A, type: "mat4x3", value: I, update: g }); } } -class rE extends x { +class jC extends q { constructor({ key: A, value: I, @@ -3029,7 +1801,7 @@ class rE extends x { super({ key: A, type: "mat4x4", value: I, update: g }); } } -class EQ extends x { +class Jg extends q { constructor({ key: A, value: I, @@ -3038,7 +1810,7 @@ class EQ extends x { super({ key: A, type: "usampler2D", value: I, update: g }); } } -class nE extends x { +class zC extends q { constructor({ key: A, value: I, @@ -3047,7 +1819,7 @@ class nE extends x { super({ key: A, type: "isampler2D", value: I, update: g }); } } -class dE extends x { +class _C extends q { constructor({ key: A, value: I, @@ -3056,7 +1828,7 @@ class dE extends x { super({ key: A, type: "sampler2D", value: I, update: g }); } } -class dA extends x { +class qA extends q { constructor({ key: A, value: I, @@ -3065,7 +1837,7 @@ class dA extends x { super({ key: A, type: "usampler2DArray", value: I, update: g }); } } -class qE extends x { +class $C extends q { constructor({ key: A, value: I, @@ -3074,7 +1846,7 @@ class qE extends x { super({ key: A, type: "isampler2DArray", value: I, update: g }); } } -class xE extends x { +class AE extends q { constructor({ key: A, value: I, @@ -3083,7 +1855,7 @@ class xE extends x { super({ key: A, type: "sampler2DArray", value: I, update: g }); } } -class lE extends x { +class IE extends q { constructor({ key: A, value: I, @@ -3092,7 +1864,7 @@ class lE extends x { super({ key: A, type: "usampler3D", value: I, update: g }); } } -class pE extends x { +class gE extends q { constructor({ key: A, value: I, @@ -3101,7 +1873,7 @@ class pE extends x { super({ key: A, type: "isampler3D", value: I, update: g }); } } -class fE extends x { +class QE extends q { constructor({ key: A, value: I, @@ -3110,7 +1882,7 @@ class fE extends x { super({ key: A, type: "sampler3D", value: I, update: g }); } } -class bE extends x { +class BE extends q { constructor({ key: A, value: I, @@ -3119,7 +1891,7 @@ class bE extends x { super({ key: A, type: "usamplerCube", value: I, update: g }); } } -class PE extends x { +class CE extends q { constructor({ key: A, value: I, @@ -3128,7 +1900,7 @@ class PE extends x { super({ key: A, type: "isamplerCube", value: I, update: g }); } } -class uE extends x { +class EE extends q { constructor({ key: A, value: I, @@ -3137,7 +1909,7 @@ class uE extends x { super({ key: A, type: "samplerCube", value: I, update: g }); } } -class TE extends x { +class iE extends q { constructor({ key: A, value: I, @@ -3146,7 +1918,7 @@ class TE extends x { super({ key: A, type: "sampler2DShadow", value: I, update: g }); } } -class OE extends x { +class DE extends q { constructor({ key: A, value: I, @@ -3155,7 +1927,7 @@ class OE extends x { super({ key: A, type: "sampler2DArrayShadow", value: I, update: g }); } } -class mE extends x { +class oE extends q { constructor({ key: A, value: I, @@ -3164,3119 +1936,3398 @@ class mE extends x { super({ key: A, type: "samplerCubeShadow", value: I, update: g }); } } -class DQ { - constructor({ - graph: A, - inputs: I, - outputs: g, - template: B, - consoleLog: C - }) { - this.graph = A, this.template = B, this.inputs = I ?? {}, this.outputs = g ?? {}; - const E = new yC({ indent: this.template.indent }); - for (const i in this.outputs) - this.outputs[i] && E.declares.add(this.outputs[i]); - const D = A.compile({ - inputs: this.inputs, - outputs: this.outputs, - compile: E - }); - this.shader = B.generate({ globals: E.globals, statements: D }), this.uniforms = E.uniforms, this.updaters = E.updaters, C && (console.log("*** COMPILED SHADER", this.shader), console.log("*** UNIFORMS", this.uniforms)); - } - prepareMaterial() { - return LG(this); - } - update() { - for (const A of this.updaters) - A(); - } -} -class Fg { - constructor(A) { - const I = A.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m), g = A.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); - if (!I || !g) - throw new Error( - "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" - ); - this.before = A.substring(0, I.index), this.between = A.substring( - I.index + I[0].length, - g.index - ), this.after = A.substring( - g.index + g[0].length - ), this.indent = g[1]; - } - generate({ - globals: A, - statements: I - }) { - return this.before + Array.from(A).join(` - -`) + this.between + I.map((g) => this.indent + g).join(` -`) + this.after; - } -} -const eB = /* @__PURE__ */ new WeakMap(); -function LG(Q) { - let A = eB.get(Q); - return A || (A = new G.RawShaderMaterial({ - glslVersion: G.GLSL3, - vertexShader: cC, - fragmentShader: Q.shader, - uniforms: Q.uniforms - }), eB.set(Q, A), A); -} -function GB(Q, A, I = "add") { - const g = () => { - throw new Error(`Invalid ${I} types: ${Q}, ${A}`); - }; - if (Q === A) return Q; - if (Q === "int") { - if (xA(A)) return A; - g(); - } - if (A === "int") { - if (xA(Q)) return Q; - g(); - } - if (Q === "uint") { - if (lA(A)) return A; - g(); - } - if (A === "uint") { - if (lA(Q)) return Q; - g(); - } - if (Q === "float") { - if (HI(A)) return A; - g(); - } - if (A === "float") { - if (HI(Q)) return Q; - g(); - } - throw new Error(`Invalid ${I} types: ${Q}, ${A}`); -} -function YG(Q, A) { - return GB(Q, A, "sub"); -} -function KG(Q, A) { - const I = () => { - throw new Error(`Invalid mul types: ${Q}, ${A}`); - }, g = (B) => B; - if (Q === "int") { - if (xA(A)) return g(A); - I(); - } - if (A === "int") { - if (xA(Q)) return g(Q); - I(); - } - if (Q === "uint") { - if (lA(A)) return g(A); - I(); - } - if (A === "uint") { - if (lA(Q)) return g(Q); - I(); - } - if (Q === "float") { - if (HI(A)) return g(A); - I(); - } - if (A === "float") { - if (HI(Q)) return g(Q); - I(); - } - if (xA(Q) || lA(Q) || xA(A) || lA(A)) { - if (Q === A) return g(Q); - I(); - } - if (Q === "vec2") { - if (A === "vec2" || KI(A)) return g("vec2"); - if (A === "mat3x2") return g("vec3"); - if (A === "mat4x2") return g("vec4"); - I(); - } - if (Q === "vec3") { - if (A === "mat2x3") return g("vec2"); - if (A === "vec3" || eI(A)) return g("vec3"); - if (A === "mat4x3") return g("vec4"); - I(); - } - if (Q === "vec4") { - if (A === "mat2x4") return g("vec2"); - if (A === "mat3x4") return g("vec3"); - if (A === "vec4" || rI(A)) return g("vec4"); - I(); - } - if (A === "vec2") { - if (KI(Q)) return g("vec2"); - if (Q === "mat2x3") return g("vec3"); - if (Q === "mat2x4") return g("vec4"); - I(); - } - if (A === "vec3") { - if (Q === "mat3x2") return g("vec2"); - if (eI(Q)) return g("vec3"); - if (Q === "mat3x4") return g("vec4"); - I(); - } - if (A === "vec4") { - if (Q === "mat4x2") return g("vec2"); - if (Q === "mat4x3") return g("vec3"); - if (rI(Q)) return g("vec4"); - I(); - } - if (KI(Q)) { - if (KI(A)) return g("mat2"); - if (A === "mat3x2") return g("mat3x2"); - if (A === "mat4x2") return g("mat4x2"); - I(); - } - if (Q === "mat2x3") { - if (KI(A)) return g("mat2x3"); - if (A === "mat3x2") return g("mat3"); - if (A === "mat4x2") return g("mat4x3"); - I(); - } - if (Q === "mat2x4") { - if (KI(A)) return g("mat2x4"); - if (A === "mat3x2") return g("mat3x4"); - if (A === "mat4x2") return g("mat4"); - I(); - } - if (Q === "mat3x2") { - if (A === "mat2x3") return g("mat2"); - if (eI(A)) return g("mat3x2"); - if (A === "mat4x3") return g("mat4x2"); - I(); - } - if (eI(Q)) { - if (A === "mat2x3") return g("mat2x3"); - if (eI(A)) return g("mat3"); - if (A === "mat4x3") return g("mat4x3"); - I(); - } - if (Q === "mat3x4") { - if (A === "mat2x3") return g("mat2x4"); - if (eI(A)) return g("mat3x4"); - if (A === "mat4x3") return g("mat4"); - I(); +var HA = Uint8Array, PI = Uint16Array, Ew = Int32Array, sE = new HA([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + /* unused */ + 0, + 0, + /* impossible */ + 0 +]), wE = new HA([ + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + /* unused */ + 0, + 0 +]), iw = new HA([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), aE = function(Q, A) { + for (var I = new PI(31), g = 0; g < 31; ++g) + I[g] = A += 1 << Q[g - 1]; + for (var B = new Ew(I[30]), g = 1; g < 30; ++g) + for (var C = I[g]; C < I[g + 1]; ++C) + B[C] = C - I[g] << 5 | g; + return { b: I, r: B }; +}, tE = aE(sE, 2), GE = tE.b, Dw = tE.r; +GE[28] = 258, Dw[258] = 28; +var ow = aE(wE, 0), sw = ow.b, KQ = new PI(32768); +for (var GA = 0; GA < 32768; ++GA) { + var FI = (GA & 43690) >> 1 | (GA & 21845) << 1; + FI = (FI & 52428) >> 2 | (FI & 13107) << 2, FI = (FI & 61680) >> 4 | (FI & 3855) << 4, KQ[GA] = ((FI & 65280) >> 8 | (FI & 255) << 8) >> 1; +} +var ig = function(Q, A, I) { + for (var g = Q.length, B = 0, C = new PI(A); B < g; ++B) + Q[B] && ++C[Q[B] - 1]; + var E = new PI(A); + for (B = 1; B < A; ++B) + E[B] = E[B - 1] + C[B - 1] << 1; + var i; + if (I) { + i = new PI(1 << A); + var o = 15 - A; + for (B = 0; B < g; ++B) + if (Q[B]) + for (var D = B << 4 | Q[B], w = A - Q[B], s = E[Q[B] - 1]++ << w, t = s | (1 << w) - 1; s <= t; ++s) + i[KQ[s] >> o] = D; + } else + for (i = new PI(g), B = 0; B < g; ++B) + Q[B] && (i[B] = KQ[E[Q[B] - 1]++] >> 15 - Q[B]); + return i; +}, Ug = new HA(288); +for (var GA = 0; GA < 144; ++GA) + Ug[GA] = 8; +for (var GA = 144; GA < 256; ++GA) + Ug[GA] = 9; +for (var GA = 256; GA < 280; ++GA) + Ug[GA] = 7; +for (var GA = 280; GA < 288; ++GA) + Ug[GA] = 8; +var hE = new HA(32); +for (var GA = 0; GA < 32; ++GA) + hE[GA] = 5; +var ww = /* @__PURE__ */ ig(Ug, 9, 1), aw = /* @__PURE__ */ ig(hE, 5, 1), yQ = function(Q) { + for (var A = Q[0], I = 1; I < Q.length; ++I) + Q[I] > A && (A = Q[I]); + return A; +}, AI = function(Q, A, I) { + var g = A / 8 | 0; + return (Q[g] | Q[g + 1] << 8) >> (A & 7) & I; +}, cQ = function(Q, A) { + var I = A / 8 | 0; + return (Q[I] | Q[I + 1] << 8 | Q[I + 2] << 16) >> (A & 7); +}, yE = function(Q) { + return (Q + 7) / 8 | 0; +}, XI = function(Q, A, I) { + return (A == null || A < 0) && (A = 0), (I == null || I > Q.length) && (I = Q.length), new HA(Q.subarray(A, I)); +}, tw = [ + "unexpected EOF", + "invalid block type", + "invalid length/literal", + "invalid distance", + "stream finished", + "no stream handler", + , + "no callback", + "invalid UTF-8 data", + "extra field too long", + "date not in range 1980-2099", + "filename too long", + "stream finishing", + "invalid zip data" + // determined by unknown compression method +], pA = function(Q, A, I) { + var g = new Error(A || tw[Q]); + if (g.code = Q, Error.captureStackTrace && Error.captureStackTrace(g, pA), !I) + throw g; + return g; +}, cE = function(Q, A, I, g) { + var B = Q.length, C = g ? g.length : 0; + if (!B || A.f && !A.l) + return I || new HA(0); + var E = !I, i = E || A.i != 2, o = A.i; + E && (I = new HA(B * 3)); + var D = function(cA) { + var sA = I.length; + if (cA > sA) { + var tA = new HA(Math.max(sA * 2, cA)); + tA.set(I), I = tA; + } + }, w = A.f || 0, s = A.p || 0, t = A.b || 0, G = A.l, c = A.d, h = A.m, y = A.n, S = B * 8; + do { + if (!G) { + w = AI(Q, s, 1); + var F = AI(Q, s + 1, 3); + if (s += 3, F) + if (F == 1) + G = ww, c = aw, h = 9, y = 5; + else if (F == 2) { + var N = AI(Q, s, 31) + 257, U = AI(Q, s + 10, 15) + 4, M = N + AI(Q, s + 5, 31) + 1; + s += 14; + for (var J = new HA(M), H = new HA(19), n = 0; n < U; ++n) + H[iw[n]] = AI(Q, s + n * 3, 7); + s += U * 3; + for (var L = yQ(H), x = (1 << L) - 1, d = ig(H, L, 1), n = 0; n < M; ) { + var Y = d[AI(Q, s, x)]; + s += Y & 15; + var e = Y >> 4; + if (e < 16) + J[n++] = e; + else { + var p = 0, O = 0; + for (e == 16 ? (O = 3 + AI(Q, s, 3), s += 2, p = J[n - 1]) : e == 17 ? (O = 3 + AI(Q, s, 7), s += 3) : e == 18 && (O = 11 + AI(Q, s, 127), s += 7); O--; ) + J[n++] = p; + } + } + var gA = J.subarray(0, N), v = J.subarray(N); + h = yQ(gA), y = yQ(v), G = ig(gA, h, 1), c = ig(v, y, 1); + } else + pA(1); + else { + var e = yE(s) + 4, k = Q[e - 4] | Q[e - 3] << 8, R = e + k; + if (R > B) { + o && pA(0); + break; + } + i && D(t + k), I.set(Q.subarray(e, R), t), A.b = t += k, A.p = s = R * 8, A.f = w; + continue; + } + if (s > S) { + o && pA(0); + break; + } + } + i && D(t + 131072); + for (var EA = (1 << h) - 1, W = (1 << y) - 1, QA = s; ; QA = s) { + var p = G[cQ(Q, s) & EA], X = p >> 4; + if (s += p & 15, s > S) { + o && pA(0); + break; + } + if (p || pA(2), X < 256) + I[t++] = X; + else if (X == 256) { + QA = s, G = null; + break; + } else { + var P = X - 254; + if (X > 264) { + var n = X - 257, u = sE[n]; + P = AI(Q, s, (1 << u) - 1) + GE[n], s += u; + } + var m = c[cQ(Q, s) & W], f = m >> 4; + m || pA(3), s += m & 15; + var v = sw[f]; + if (f > 3) { + var u = wE[f]; + v += cQ(Q, s) & (1 << u) - 1, s += u; + } + if (s > S) { + o && pA(0); + break; + } + i && D(t + 131072); + var hA = t + P; + if (t < v) { + var aA = C - v, yA = Math.min(v, hA); + for (aA + t < 0 && pA(3); t < yA; ++t) + I[t] = g[aA + t]; + } + for (; t < hA; ++t) + I[t] = I[t - v]; + } + } + A.l = G, A.p = QA, A.b = t, A.f = w, G && (w = 1, A.m = h, A.d = c, A.n = y); + } while (!w); + return t != I.length && E ? XI(I, 0, t) : I.subarray(0, t); +}, Gw = /* @__PURE__ */ new HA(0), oI = function(Q, A) { + return Q[A] | Q[A + 1] << 8; +}, gI = function(Q, A) { + return (Q[A] | Q[A + 1] << 8 | Q[A + 2] << 16 | Q[A + 3] << 24) >>> 0; +}, SQ = function(Q, A) { + return gI(Q, A) + gI(Q, A + 4) * 4294967296; +}, hw = function(Q) { + (Q[0] != 31 || Q[1] != 139 || Q[2] != 8) && pA(6, "invalid gzip data"); + var A = Q[3], I = 10; + A & 4 && (I += (Q[10] | Q[11] << 8) + 2); + for (var g = (A >> 3 & 1) + (A >> 4 & 1); g > 0; g -= !Q[I++]) + ; + return I + (A & 2); +}, FQ = /* @__PURE__ */ function() { + function Q(A, I) { + typeof A == "function" && (I = A, A = {}), this.ondata = I; + var g = A && A.dictionary && A.dictionary.subarray(-32768); + this.s = { i: 0, b: g ? g.length : 0 }, this.o = new HA(32768), this.p = new HA(0), g && this.o.set(g); } - if (Q === "mat4x2") { - if (A === "mat2x4") return g("mat2"); - if (A === "mat3x4") return g("mat3x2"); - if (rI(A)) return g("mat4x2"); - I(); + return Q.prototype.e = function(A) { + if (this.ondata || pA(5), this.d && pA(4), !this.p.length) + this.p = A; + else if (A.length) { + var I = new HA(this.p.length + A.length); + I.set(this.p), I.set(A, this.p.length), this.p = I; + } + }, Q.prototype.c = function(A) { + this.s.i = +(this.d = A || !1); + var I = this.s.b, g = cE(this.p, this.s, this.o); + this.ondata(XI(g, I, this.s.b), this.d), this.o = XI(g, this.s.b - 32768), this.s.b = this.o.length, this.p = XI(this.p, this.s.p / 8 | 0), this.s.p &= 7; + }, Q.prototype.push = function(A, I) { + this.e(A), this.c(I); + }, Q; +}(); +function yw(Q, A) { + return cE(Q, { i: 2 }, A && A.out, A && A.dictionary); +} +var cw = /* @__PURE__ */ function() { + function Q(A, I) { + this.v = 1, this.r = 0, FQ.call(this, A, I); } - if (Q === "mat4x3") { - if (A === "mat2x4") return g("mat2x3"); - if (A === "mat3x4") return g("mat3"); - if (rI(A)) return g("mat4x3"); - I(); + return Q.prototype.push = function(A, I) { + if (FQ.prototype.e.call(this, A), this.r += A.length, this.v) { + var g = this.p.subarray(this.v - 1), B = g.length > 3 ? hw(g) : 4; + if (B > g.length) { + if (!I) + return; + } else this.v > 1 && this.onmember && this.onmember(this.r - g.length); + this.p = g.subarray(B), this.v = 0; + } + FQ.prototype.c.call(this, I), this.s.f && !this.s.l && !I && (this.v = yE(this.s.p) + 9, this.s = { i: 0 }, this.o = new HA(0), this.push(new HA(0), I)); + }, Q; +}(), rQ = typeof TextDecoder < "u" && /* @__PURE__ */ new TextDecoder(), Sw = 0; +try { + rQ.decode(Gw, { stream: !0 }), Sw = 1; +} catch { +} +var Fw = function(Q) { + for (var A = "", I = 0; ; ) { + var g = Q[I++], B = (g > 127) + (g > 223) + (g > 239); + if (I + B > Q.length) + return { s: A, r: XI(Q, I - 1) }; + B ? B == 3 ? (g = ((g & 15) << 18 | (Q[I++] & 63) << 12 | (Q[I++] & 63) << 6 | Q[I++] & 63) - 65536, A += String.fromCharCode(55296 | g >> 10, 56320 | g & 1023)) : B & 1 ? A += String.fromCharCode((g & 31) << 6 | Q[I++] & 63) : A += String.fromCharCode((g & 15) << 12 | (Q[I++] & 63) << 6 | Q[I++] & 63) : A += String.fromCharCode(g); } - if (rI(Q)) { - if (A === "mat2x4") return g("mat2x4"); - if (A === "mat3x4") return g("mat3x4"); - if (rI(A)) return g("mat4"); - I(); +}; +function Rw(Q, A) { + if (A) { + for (var I = "", g = 0; g < Q.length; g += 16384) + I += String.fromCharCode.apply(null, Q.subarray(g, g + 16384)); + return I; + } else { + if (rQ) + return rQ.decode(Q); + var B = Fw(Q), C = B.s, I = B.r; + return I.length && pA(8), C; + } +} +var kw = function(Q, A) { + return A + 30 + oI(Q, A + 26) + oI(Q, A + 28); +}, ew = function(Q, A, I) { + var g = oI(Q, A + 28), B = Rw(Q.subarray(A + 46, A + 46 + g), !(oI(Q, A + 8) & 2048)), C = A + 46 + g, E = gI(Q, A + 20), i = I && E == 4294967295 ? Nw(Q, C) : [E, gI(Q, A + 24), gI(Q, A + 42)], o = i[0], D = i[1], w = i[2]; + return [oI(Q, A + 10), o, D, B, C + oI(Q, A + 30) + oI(Q, A + 32), w]; +}, Nw = function(Q, A) { + for (; oI(Q, A) != 1; A += 4 + oI(Q, A + 2)) + ; + return [SQ(Q, A + 12), SQ(Q, A + 4), SQ(Q, A + 20)]; +}; +function Mw(Q, A) { + for (var I = {}, g = Q.length - 22; gI(Q, g) != 101010256; --g) + (!g || Q.length - g > 65558) && pA(13); + var B = oI(Q, g + 8); + if (!B) + return {}; + var C = gI(Q, g + 16), E = C == 4294967295 || B == 65535; + if (E) { + var i = gI(Q, g - 12); + E = gI(Q, i) == 101075792, E && (B = gI(Q, i + 32), C = gI(Q, i + 48)); + } + for (var o = A && A.filter, D = 0; D < B; ++D) { + var w = ew(Q, C, E), s = w[0], t = w[1], G = w[2], c = w[3], h = w[4], y = w[5], S = kw(Q, y); + C = h, (!o || o({ + name: c, + size: t, + originalSize: G, + compression: s + })) && (s ? s == 8 ? I[c] = yw(Q.subarray(S, S + t), { out: new HA(G) }) : pA(14, "unknown compression type " + s) : I[c] = XI(Q, S, S + t)); } - throw new Error(`Invalid mul types: ${Q}, ${A}`); -} -function eG(Q, A) { - return GB(Q, A, "div"); -} -function rG(Q, A) { - if (Q === A) return Q; - if (Q === "int") { - if (xA(A)) return A; - } else if (A === "int") { - if (xA(Q)) return Q; - } else if (Q === "uint") { - if (lA(A)) return A; - } else if (A === "uint" && lA(Q)) - return Q; - throw new Error(`Invalid imod types: ${Q}, ${A}`); + return I; } -function nG(Q, A) { - if (Q === A || A === "float") return Q; - throw new Error(`Invalid mod types: ${Q}, ${A}`); +const SE = Number.parseInt(a.REVISION), FE = SE >= 179, Lg = new Float32Array(1), BQ = new Uint32Array(Lg.buffer), CB = "Float16Array" in globalThis, Dg = CB ? new globalThis.Float16Array(1) : null, RE = new Uint16Array(Dg == null ? void 0 : Dg.buffer); +function kE(Q) { + const A = Math.sqrt(Q.reduce((I, g) => I + g * g, 0)); + return Q.map((I) => I / A); } -function dG(Q) { - return Q; +function pg(Q) { + return Lg[0] = Q, BQ[0]; } -function qG(Q) { - return Q; +function fg(Q) { + return BQ[0] = Q, Lg[0]; } -function xG(Q) { - return Q; +const ZA = CB ? Jw : Uw, FA = CB ? Lw : nw; +function Jw(Q) { + return Dg[0] = Q, RE[0]; } -function lG(Q) { - return Q; +function Uw(Q) { + Lg[0] = Q; + const A = BQ[0], I = A >> 31 & 1, g = A >> 23 & 255, B = A & 8388607, C = I << 15; + if (g === 255) + return B !== 0 ? C | 32767 : C | 31744; + const E = g - 127 + 15; + if (E >= 31) + return C | 31744; + if (E <= 0) { + if (E < -10) + return C; + const o = (B | 8388608) >> 1 - E + 13; + return C | o; + } + const i = B >> 13; + return C | E << 10 | i; } -function pG(Q) { - return Q; +function Lw(Q) { + return RE[0] = Q, Dg[0]; } -function fG(Q) { - return Q; -} -function bG(Q) { - return Q; +function nw(Q) { + const A = Q >> 15 & 1, I = Q >> 10 & 31, g = Q & 1023; + let B; + if (I === 0) + if (g === 0) + B = A << 31; + else { + let C = g, E = -14; + for (; (C & 1024) === 0; ) + C <<= 1, E--; + C &= 1023; + const i = E + 127, o = C << 13; + B = A << 31 | i << 23 | o; + } + else if (I === 31) + g === 0 ? B = A << 31 | 2139095040 : B = A << 31 | 2143289344; + else { + const C = I - 15 + 127, E = g << 13; + B = A << 31 | C << 23 | E; + } + return BQ[0] = B, Lg[0]; } -function PG(Q) { - return Q; +function VA(Q) { + return Math.max(0, Math.min(255, Math.round(Q * 255))); } -function uG(Q) { - return Q; +function ug(Q) { + return Math.max(-127, Math.min(127, Math.round(Q * 127))); } -function TG(Q) { - return Q; +function Hw(Q) { + return Q / 255; } -function OG(Q) { - return Q; +function Kw(Q) { + return Q / 127; } -function mG(Q) { - return Q; +class rw { + // Create a DataCache with a given function that fetches data not in the cache. + constructor({ + asyncFetch: A, + dispose: I, + maxItems: g = 5 + }) { + this.asyncFetch = A, this.dispose = I, this.maxItems = g, this.items = [], this.pending = /* @__PURE__ */ new Map(); + } + has(A) { + return this.items.some((I) => I.key === A); + } + getImmediate(A) { + const I = this.items.findIndex((g) => g.key === A); + if (I >= 0) { + const g = this.items.splice(I, 1)[0]; + return this.items.push(g), g.data; + } + } + // Fetch data for the key, returning cached data if available. + async getFetch(A) { + const I = this.getImmediate(A); + if (I !== void 0) + return I; + let g = this.pending.get(A); + return g || (g = this.asyncFetch(A).then((B) => { + for (this.pending.delete(A), this.items.push({ key: A, data: B }); this.items.length > this.maxItems; ) { + const C = this.items.shift(); + C && this.dispose && this.dispose(C.data); + } + return B; + }), this.pending.set(A, g), g); + } } -function ZG(Q) { - return Q; +function Yw(Q, A) { + const I = Object.entries(Q).map(([g, B]) => [ + g, + A(B, g) + ]); + return Object.fromEntries(I); } -function VG(Q) { - return Q; +function dw(Q, A) { + const I = Object.entries(Q).map(([g, B]) => [g, A(B, g)]).filter(([g, B]) => B !== void 0); + return Object.fromEntries(I); } -function XG(Q) { - return Q; +function eE(Q) { + const A = [], I = /* @__PURE__ */ new Set(); + function g(B) { + B && typeof B == "object" && !I.has(B) && (I.add(B), B instanceof ArrayBuffer ? A.push(B) : ArrayBuffer.isView(B) ? A.push(B.buffer) : Array.isArray(B) ? B.forEach(g) : Object.values(B).forEach(g)); + } + return g(Q), A; } -function WG(Q) { - return Q; +function YQ(Q, A) { + return new Array(Q).fill(null).map((I, g) => A(g)); } -function ZE(Q, A, I = "min") { - if (Q === A) return Q; - if (A === "float") { - if (Mg(Q)) return Q; - } else if (A === "int") { - if (xA(Q)) return Q; - } else if (A === "uint" && lA(Q)) - return Q; - throw new Error(`Invalid ${I} types: ${Q}, ${A}`); +class lw { + constructor({ + // Allocate a new item with the given args + allocate: A, + // Dispose of an item (optional, if GC is enough) + dispose: I, + // Check if an existing item in the list is valid for the given args, + // allowing you to store heterogeneous items in the list. + valid: g + }) { + this.items = [], this.allocate = A, this.dispose = I, this.valid = g; + } + // Allocate a new item from the free list, first checking if a existing item + // on the freelist is valid for the given args. + alloc(A) { + for (; ; ) { + const I = this.items.pop(); + if (!I) + break; + if (this.valid(I, A)) + return I; + this.dispose && this.dispose(I); + } + return this.allocate(A); + } + free(A) { + this.items.push(A); + } + disposeAll() { + let A; + for (A = this.items.pop(); A; ) + this.dispose && this.dispose(A), A = this.items.pop(); + } } -function jG(Q, A) { - return ZE(Q, A, "max"); +function dQ(Q, A, I, g, B, C, E, i, o, D, w, s, t, G, c, h) { + const y = A * 4, [S, F] = Q; + S[y] = pg(I), S[y + 1] = pg(g), S[y + 2] = pg(B), S[y + 3] = ZA(t), F[y] = ZA(G) | ZA(c) << 16, F[y + 1] = ZA(h) | ZA(Math.log(C)) << 16, F[y + 2] = ZA(Math.log(E)) | ZA(Math.log(i)) << 16, F[y + 3] = KE(o, D, w, s); } -function vG(Q, A, I) { - if (A === "float") { - if (Mg(Q)) return Q; - } else if (A === "int") { - if (xA(Q)) return Q; - } else if (A === "uint" && lA(Q)) - return Q; - throw new Error(`Invalid clamp types: ${Q}, ${A}`); +function vg(Q, A) { + const I = EB, g = A * 4, [B, C] = Q; + return I.center.x = fg(B[g]), I.center.y = fg(B[g + 1]), I.center.z = fg(B[g + 2]), I.opacity = FA(B[g + 3] & 65535), I.color.r = FA(C[g] & 65535), I.color.g = FA(C[g] >>> 16), I.color.b = FA(C[g + 1] & 65535), I.scales.x = Math.exp(FA(C[g + 1] >>> 16)), I.scales.y = Math.exp(FA(C[g + 2] & 65535)), I.scales.z = Math.exp(FA(C[g + 2] >>> 16)), rE(C[g + 3], I.quaternion), I; } -function zG(Q, A, I) { - if (I === Q || I === "float" || I === "bool" && Q === "float" || I === "bvec2" && Q === "vec2" || I === "bvec3" && Q === "vec3" || I === "bvec4" && Q === "vec4") return Q; - throw new Error(`Invalid mix types: ${Q}, ${A}, ${I}`); +function lQ(Q, A, I, g, B, C, E, i, o, D, w, s, t, G, c, h, y) { + const S = (y == null ? void 0 : y.rgbMin) ?? 0, e = ((y == null ? void 0 : y.rgbMax) ?? 1) - S, k = VA((G - S) / e), R = VA((c - S) / e), N = VA((h - S) / e), U = VA(y != null && y.lodOpacity ? 0.5 * t : t), M = oB( + NE.set(o, D, w, s) + ), J = M & 255, H = M >>> 8 & 255, n = M >>> 16 & 255, L = (y == null ? void 0 : y.lnScaleMin) ?? uA, d = 254 / (((y == null ? void 0 : y.lnScaleMax) ?? bA) - L), Y = C < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(C) - L) * d) + 1 + ) + ), p = E < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(E) - L) * d) + 1 + ) + ), O = i < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(i) - L) * d) + 1 + ) + ), gA = ZA(I), v = ZA(g), EA = ZA(B), W = A * 4; + Q[W] = k | R << 8 | N << 16 | U << 24, Q[W + 1] = gA | v << 16, Q[W + 2] = EA | J << 16 | H << 24, Q[W + 3] = Y | p << 8 | O << 16 | n << 24; } -function _G(Q, A) { - if (Q === A || A === "float") return A; - throw new Error(`Invalid step types: ${Q}, ${A}`); +function xw(Q, A, I, g, B) { + const C = ZA(I), E = ZA(g), i = ZA(B), o = A * 4; + Q[o + 1] = C | E << 16, Q[o + 2] = i | Q[o + 2] & 4294901760; } -function $G(Q, A, I) { - if (Q === A && (Q === I || Q === "float")) - return I; - throw new Error(`Invalid smoothstep types: ${Q}, ${A}, ${I}`); +function qw(Q, A, I, g, B, C) { + const E = (C == null ? void 0 : C.lnScaleMin) ?? uA, o = 254 / (((C == null ? void 0 : C.lnScaleMax) ?? bA) - E), D = I < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(I) - E) * o) + 1 + ) + ), w = g < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(g) - E) * o) + 1 + ) + ), s = B < lI ? 0 : Math.min( + 255, + Math.max( + 1, + Math.round((Math.log(B) - E) * o) + 1 + ) + ), t = A * 4; + Q[t + 3] = D | w << 8 | s << 16 | Q[t + 3] & 4278190080; +} +const NE = new a.Quaternion(); +function pw(Q, A, I, g, B, C) { + const E = oB( + NE.set(I, g, B, C) + ), i = E & 255, o = E >>> 8 & 255, D = E >>> 16 & 255, w = A * 4; + Q[w + 2] = Q[w + 2] & 65535 | i << 16 | o << 24, Q[w + 3] = Q[w + 3] & 16777215 | D << 24; +} +function fw(Q, A, I, g, B, C, E) { + const i = (E == null ? void 0 : E.rgbMin) ?? 0, D = ((E == null ? void 0 : E.rgbMax) ?? 1) - i, w = VA((I - i) / D), s = VA((g - i) / D), t = VA((B - i) / D), G = VA(E != null && E.lodOpacity ? 0.5 * C : C), c = A * 4; + Q[c] = w | s << 8 | t << 16 | G << 24; +} +function uw(Q, A, I, g, B, C) { + const E = (C == null ? void 0 : C.rgbMin) ?? 0, o = ((C == null ? void 0 : C.rgbMax) ?? 1) - E, D = VA((I - E) / o), w = VA((g - E) / o), s = VA((B - E) / o), t = A * 4; + Q[t] = D | w << 8 | s << 16 | Q[t] & 4278190080; +} +function bw(Q, A, I) { + const g = VA(I), B = A * 4; + Q[B] = Q[B] & 16777215 | g << 24; } -function VE(Q, A = "isNan") { - if (Q === "float") return "bool"; - if (Q === "vec2") return "bvec2"; - if (Q === "vec3") return "bvec3"; - if (Q === "vec4") return "bvec4"; - throw new Error(`Invalid ${A} types: ${Q}`); +const Pw = new a.Vector3(), mw = new a.Vector3(), Tw = new a.Quaternion(), Ow = new a.Color(), EB = { + center: Pw, + scales: mw, + quaternion: Tw, + color: Ow, + opacity: 0 +}; +function Xg(Q, A, I) { + const g = EB, B = A * 4, C = Q[B], E = Q[B + 1], i = Q[B + 2], o = Q[B + 3], D = (I == null ? void 0 : I.rgbMin) ?? 0, s = ((I == null ? void 0 : I.rgbMax) ?? 1) - D; + g.color.set( + D + (C & 255) / 255 * s, + D + (C >>> 8 & 255) / 255 * s, + D + (C >>> 16 & 255) / 255 * s + ), g.opacity = (C >>> 24 & 255) / 255, I != null && I.lodOpacity && (g.opacity = 2 * g.opacity), g.center.set( + FA(E & 65535), + FA(E >>> 16 & 65535), + FA(i & 65535) + ); + const t = (I == null ? void 0 : I.lnScaleMin) ?? uA, c = (((I == null ? void 0 : I.lnScaleMax) ?? bA) - t) / 254, h = o & 255; + g.scales.x = h === 0 ? 0 : Math.exp(t + (h - 1) * c); + const y = o >>> 8 & 255; + g.scales.y = y === 0 ? 0 : Math.exp(t + (y - 1) * c); + const S = o >>> 16 & 255; + g.scales.z = S === 0 ? 0 : Math.exp(t + (S - 1) * c); + const F = i >>> 16 & 65535 | o >>> 8 & 16711680; + return HE(F, g.quaternion), g; +} +function iA(Q) { + const A = b, I = Math.max( + WQ, + Math.min(vA, Math.ceil(Q / A)) + ), g = Math.ceil(Q / (A * I)), B = A * I * g; + return { width: A, height: I, depth: g, maxSplats: B }; } -function A0(Q) { - return VE(Q, "isInf"); +function Zw(Q) { + const A = b, I = Math.max( + WQ, + Math.min(vA, Math.ceil(Q / A)) + ), g = Math.ceil(Q / (A * I)); + return A * I * g; } -const qA = (Q, A) => new vE({ a: Q, b: A }), iI = (Q, A) => new zE({ a: Q, b: A }), kA = (Q, A) => new _E({ a: Q, b: A }), pg = (Q, A) => new $E({ a: Q, b: A }), pQ = (Q, A) => new AD({ a: Q, b: A }), XE = (Q, A) => new ID({ a: Q, b: A }), I0 = (Q) => new gD({ a: Q }).outputs, yB = (Q) => new QD({ a: Q }), g0 = (Q) => new BD({ a: Q }), Q0 = (Q) => new CD({ a: Q }), B0 = (Q) => new ED({ a: Q }), C0 = (Q) => new DD({ a: Q }), E0 = (Q) => new iD({ a: Q }), D0 = (Q) => new wD({ a: Q }), fg = (Q) => new oD({ a: Q }), i0 = (Q, A) => new sD({ a: Q, b: A }), w0 = (Q) => new GD({ a: Q }), o0 = (Q) => new yD({ a: Q }), s0 = (Q) => new hD({ a: Q }), G0 = (Q) => new RD({ a: Q }), y0 = (Q) => new kD({ a: Q }), h0 = (Q) => new FD({ a: Q }), R0 = (Q) => new aD({ a: Q }), k0 = (Q, A) => new SD({ a: Q, b: A }), WE = (Q, A) => new ND({ a: Q, b: A }), F0 = (Q, A, I) => new cD({ a: Q, min: A, max: I }), jE = (Q, A, I) => new MD({ a: Q, b: A, t: I }), a0 = (Q, A) => new JD({ edge: Q, x: A }), S0 = (Q, A, I) => new UD({ edge0: Q, edge1: A, x: I }), N0 = (Q) => new tD({ a: Q }), c0 = (Q) => new HD({ a: Q }); -class vE extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "sum", outTypeFunc: GB }), this.statements = ({ inputs: g, outputs: B }) => [`${B.sum} = ${g.a} + ${g.b};`]; - } +function Vg() { + return navigator.platform.toLowerCase().startsWith("win") ? !1 : navigator.maxTouchPoints > 0 ? !0 : /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test( + navigator.userAgent + ); } -class zE extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "difference", outTypeFunc: YG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.difference} = ${g.a} - ${g.b};`]; - } +function iB() { + return /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent); } -class _E extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "product", outTypeFunc: KG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.product} = ${g.a} * ${g.b};`]; - } +function DB() { + return !!navigator.xr && /Oculus/.test(navigator.userAgent); } -class $E extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "quotient", outTypeFunc: eG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.quotient} = ${g.a} / ${g.b};`]; - } +function vw() { + return DB() && /Quest 2/.test(navigator.userAgent); } -class AD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "remainder", outTypeFunc: rG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.remainder} = ${g.a} % ${g.b};`]; - } +function tg() { + return /iPhone|iPad/.test(navigator.userAgent); } -class ID extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "remainder", outTypeFunc: nG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.remainder} = mod(${g.a}, ${g.b});`]; - } +function ME() { + return !!navigator.xr && tg() && /Safari/.test(navigator.userAgent) && Vg(); } -class gD extends d { - constructor({ a: A }) { - const I = { a: CA(A) }, g = I.a, B = { - fract: g, - integer: g - }; - super({ inTypes: I, outTypes: B, inputs: { a: A } }), this.statements = ({ inputs: C, outputs: E }) => [`${E.fract} = modf(${C.a}, ${E.integer});`]; +function Xw(Q, A, I) { + const g = new Uint8Array(A * 4); + for (let B = 0; B < I / 2; B++) { + const C = B * A * 4, E = (I - 1 - B) * A * 4; + g.set(Q.subarray(C, C + A * 4)), Q.set( + Q.subarray(E, E + A * 4), + C + ), Q.set(g, E); } + return Q; } -class QD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "neg", outTypeFunc: dG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.neg} = -${I.a};`]; - } +function Vw(Q, A, I) { + const g = document.createElement("canvas"); + g.width = A, g.height = I; + const B = g.getContext("2d"); + if (!B) + throw new Error("Can't get 2d context"); + const C = B.createImageData(A, I); + return C.data.set(Q), B.putImageData(C, 0, 0), g.toDataURL("image/png"); } -class BD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "abs", outTypeFunc: qG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.abs} = abs(${I.a});`]; - } +function JE(Q) { + const A = new a.Clock(Q.autoStart); + return A.startTime = Q.startTime, A.oldTime = Q.oldTime, A.elapsedTime = Q.elapsedTime, A.running = Q.running, A; } -class CD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "sign", outTypeFunc: xG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sign} = sign(${I.a});`]; - } +function Ww(Q) { + return Object.fromEntries( + Object.entries(Q).filter(([A, I]) => I !== void 0) + ); } -class ED extends e { - constructor({ a: A }) { - super({ a: A, outKey: "floor", outTypeFunc: lG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.floor} = floor(${I.a});`]; +const UE = wA(` + precision highp float; + + in vec3 position; + + void main() { + gl_Position = vec4(position.xy, 0.0, 1.0); } +`); +function jw(Q) { + const A = new a.Vector3(); + for (const I of Q) + A.add(I); + return A.divideScalar(Q.length); } -class DD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "ceil", outTypeFunc: pG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.ceil} = ceil(${I.a});`]; - } +function zw(Q) { + if (Q.length === 0) + return new a.Quaternion(); + const A = Q[0].clone(); + for (let I = 1; I < Q.length; I++) + Q[I].dot(Q[0]) < 0 ? (A.x -= Q[I].x, A.y -= Q[I].y, A.z -= Q[I].z, A.w -= Q[I].w) : (A.x += Q[I].x, A.y += Q[I].y, A.z += Q[I].z, A.w += Q[I].w); + return A.normalize(); } -class iD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "trunc", outTypeFunc: fG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.trunc} = trunc(${I.a});`]; - } +function LE(Q, A) { + const I = new a.Vector3(0, 0, 0).applyMatrix4(Q), g = new a.Vector3(0, 0, 0).applyMatrix4(A), B = new a.Vector3(0, 0, -1).applyMatrix4(Q).sub(I).normalize(), C = new a.Vector3(0, 0, -1).applyMatrix4(A).sub(g).normalize(), E = I.distanceTo(g), i = B.dot(C); + return { distance: E, coincidence: i }; } -class wD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "round", outTypeFunc: bG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.round} = round(${I.a});`]; - } +function _w({ + matrix1: Q, + matrix2: A, + maxDistance: I +}) { + const g = new a.Vector3(0, 0, 0).applyMatrix4(Q), B = new a.Vector3(0, 0, 0).applyMatrix4(A); + return g.distanceTo(B) <= I; } -class oD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "fract", outTypeFunc: PG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.fract} = fract(${I.a});`]; - } +function $w({ + matrix1: Q, + matrix2: A, + maxDistance: I, + minCoincidence: g +}) { + const { distance: B, coincidence: C } = LE(Q, A); + return B <= I && (g == null || C >= g); } -class sD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "power", outTypeFunc: uG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.power} = pow(${g.a}, ${g.b});`]; - } +function nE(Q, A) { + const [I, g] = [new a.Vector3(), new a.Quaternion()], [B, C] = [new a.Vector3(), new a.Quaternion()]; + Q.decompose(I, g, new a.Vector3()), A.decompose(B, C, new a.Vector3()); + const E = I.distanceTo(B), i = Math.abs(g.dot(C)); + return { distance: E, coorient: i }; } -class GD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "exp", outTypeFunc: TG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.exp} = exp(${I.a});`]; - } +function Aa({ + matrix1: Q, + matrix2: A, + maxDistance: I, + minCoorient: g +}) { + const { distance: B, coorient: C } = nE(Q, A); + return B <= I && (g == null || C >= g); } -class yD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "exp2", outTypeFunc: OG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.exp2} = exp2(${I.a});`]; - } +function Ia(Q, A = 1e-3) { + return Math.abs(Q) < A ? 0 : Math.sign(Q); } -class hD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "log", outTypeFunc: mG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.log} = log(${I.a});`]; +function ga(Q) { + const A = Q.w < 0, I = ug(A ? -Q.x : Q.x), g = ug(A ? -Q.y : Q.y), B = ug(A ? -Q.z : Q.z), C = I & 255, E = g & 255, i = B & 255; + return C | E << 8 | i << 16; +} +function Qa(Q, A) { + const I = Q << 24 >> 24, g = Q << 16 >> 24, B = Q << 8 >> 24; + A.set(I / 127, g / 127, B / 127, 0); + const C = A.x * A.x + A.y * A.y + A.z * A.z; + return A.w = Math.sqrt(Math.max(0, 1 - C)), A; +} +const Ba = new a.Quaternion(), xQ = new a.Vector3(); +function oB(Q) { + const A = Ba.copy(Q).normalize(); + A.w < 0 && A.set(-A.x, -A.y, -A.z, -A.w); + const I = 2 * Math.acos(A.w), g = Math.sqrt( + A.x * A.x + A.y * A.y + A.z * A.z + ), B = g < 1e-6 ? xQ.set(1, 0, 0) : xQ.set(A.x, A.y, A.z).divideScalar(g), C = Math.abs(B.x) + Math.abs(B.y) + Math.abs(B.z); + let E = B.x / C, i = B.y / C; + if (B.z < 0) { + const G = E; + E = (1 - Math.abs(i)) * (E >= 0 ? 1 : -1), i = (1 - Math.abs(G)) * (i >= 0 ? 1 : -1); } + const o = E * 0.5 + 0.5, D = i * 0.5 + 0.5, w = Math.round(o * 255), s = Math.round(D * 255); + return Math.round(I * (255 / Math.PI)) << 16 | s << 8 | w; } -class RD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "log2", outTypeFunc: ZG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.log2} = log2(${I.a});`]; +function HE(Q, A) { + const I = Q & 255, g = Q >>> 8 & 255, B = Q >>> 16 & 255, C = I / 255, E = g / 255; + let i = (C - 0.5) * 2, o = (E - 0.5) * 2; + const D = 1 - (Math.abs(i) + Math.abs(o)), w = Math.max(-D, 0); + i += i >= 0 ? -w : w, o += o >= 0 ? -w : w; + const s = xQ.set(i, o, D).normalize(), G = B / 255 * Math.PI * 0.5, c = Math.sin(G), h = Math.cos(G); + return A.set(s.x * c, s.y * c, s.z * c, h), A; +} +function Ca(Q) { + const A = Q.clone().normalize(), I = 2 * (A.w * A.x + A.y * A.z), g = 1 - 2 * (A.x * A.x + A.y * A.y), B = Math.atan2(I, g), C = 2 * (A.w * A.y - A.z * A.x), E = Math.abs(C) >= 1 ? Math.sign(C) * (Math.PI / 2) : Math.asin(C), i = 2 * (A.w * A.z + A.x * A.y), o = 1 - 2 * (A.y * A.y + A.z * A.z), D = Math.atan2(i, o), w = (B + Math.PI) / (2 * Math.PI), s = (E + Math.PI) / (2 * Math.PI), t = (D + Math.PI) / (2 * Math.PI), G = Math.round(w * 255), c = Math.round(s * 255); + return Math.round(t * 255) << 16 | c << 8 | G; +} +function Ea(Q, A) { + const I = Q & 255, g = Q >>> 8 & 255, B = Q >>> 16 & 255, C = I / 255, E = g / 255, i = B / 255, o = C * (2 * Math.PI) - Math.PI, D = E * (2 * Math.PI) - Math.PI, w = i * (2 * Math.PI) - Math.PI, s = Math.cos(o * 0.5), t = Math.sin(o * 0.5), G = Math.cos(D * 0.5), c = Math.sin(D * 0.5), h = Math.cos(w * 0.5), y = Math.sin(w * 0.5); + return A.w = s * G * h + t * c * y, A.x = t * G * h - s * c * y, A.y = s * c * h + t * G * y, A.z = s * G * y - t * c * h, A.normalize(), A; +} +function KE(Q, A, I, g) { + const B = Math.sqrt(Q * Q + A * A + I * I + g * g), C = (g < 0 ? -Q : Q) / B, E = (g < 0 ? -A : A) / B, i = (g < 0 ? -I : I) / B, o = (g < 0 ? -g : g) / B, D = 2 * Math.acos(o), w = Math.sqrt(C * C + E * E + i * i), s = w < 1e-6 ? 1 : C / w, t = w < 1e-6 ? 0 : E / w, G = w < 1e-6 ? 0 : i / w, c = Math.abs(s) + Math.abs(t) + Math.abs(G); + let h = s / c, y = t / c; + if (G < 0) { + const N = h; + h = (1 - Math.abs(y)) * (h >= 0 ? 1 : -1), y = (1 - Math.abs(N)) * (y >= 0 ? 1 : -1); + } + const S = h * 0.5 + 0.5, F = y * 0.5 + 0.5, e = Math.round(S * 1023), k = Math.round(F * 1023); + return Math.round(D * (4095 / Math.PI)) << 20 | k << 10 | e; +} +function rE(Q, A) { + const I = Q & 1023, g = Q >>> 10 & 1023, B = Q >>> 20 & 4095, C = I / 1023, E = g / 1023; + let i = (C - 0.5) * 2, o = (E - 0.5) * 2; + const D = 1 - (Math.abs(i) + Math.abs(o)), w = Math.max(-D, 0); + i += i >= 0 ? -w : w, o += o >= 0 ? -w : w; + const s = Math.sqrt(i * i + o * o + D * D), t = s < 1e-6 ? 0 : i / s, G = s < 1e-6 ? 0 : o / s, c = s < 1e-6 ? 0 : D / s, y = B / 4095 * Math.PI * 0.5, S = Math.sin(y), F = Math.cos(y); + return A.set(t * S, G * S, c * S, F), A; +} +function Hg(Q, A, I, g) { + const B = Math.round(Math.max(-127, Math.min(127, Q * 127))), C = Math.round(Math.max(-127, Math.min(127, A * 127))), E = Math.round(Math.max(-127, Math.min(127, I * 127))), i = Math.round(Math.max(-127, Math.min(127, g * 127))); + return B & 255 | (C & 255) << 8 | (E & 255) << 16 | (i & 255) << 24; +} +function ia(Q, A, I, g) { + const C = 63 / ((g == null ? void 0 : g.sh1Max) ?? 1), E = A * 2; + for (let i = 0; i < 9; ++i) { + const o = I[i] * C, D = Math.round(Math.max(-63, Math.min(63, o))) & 127, w = i * 7, s = w + 7, t = Math.floor(w / 32), G = w - t * 32, c = D << G & 4294967295; + if (Q[E + t] |= c, s > t * 32 + 32) { + const h = D >>> 32 - G & 4294967295; + Q[E + t + 1] |= h; + } } } -class kD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "sqr", outTypeFunc: VG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sqr} = ${I.a} * ${I.a};`]; +function Da(Q, A, I, g) { + const C = 1 / ((g == null ? void 0 : g.sh2Max) ?? 1); + Q[A * 4 + 0] = Hg( + I[0] * C, + I[1] * C, + I[2] * C, + I[3] * C + ), Q[A * 4 + 1] = Hg( + I[4] * C, + I[5] * C, + I[6] * C, + I[7] * C + ), Q[A * 4 + 2] = Hg( + I[8] * C, + I[9] * C, + I[10] * C, + I[11] * C + ), Q[A * 4 + 3] = Hg( + I[12] * C, + I[13] * C, + I[14] * C, + 0 + ); +} +function oa(Q, A, I, g) { + const C = 31 / ((g == null ? void 0 : g.sh3Max) ?? 1), E = A * 4; + for (let i = 0; i < 21; ++i) { + const o = I[i] * C, D = Math.round(Math.max(-31, Math.min(31, o))) & 63, w = i * 6, s = w + 6, t = Math.floor(w / 32), G = w - t * 32, c = D << G & 4294967295; + if (Q[E + t] |= c, s > t * 32 + 32) { + const h = D >>> 32 - G & 4294967295; + Q[E + t + 1] |= h; + } } } -class FD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "sqrt", outTypeFunc: XG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sqrt} = sqrt(${I.a});`]; +function xI(Q, A, I) { + const g = Math.abs(Q), B = Math.abs(A), C = Math.abs(I), E = Math.max(g, B, C), i = Math.floor(Math.log2(E)), o = Math.max(0, Math.min(31, i + 15)), D = 2 ** (o - 15) / 255, w = Math.round(Math.max(0, Math.min(255, g / D))), s = Math.round(Math.max(0, Math.min(255, B / D))), t = Math.round(Math.max(0, Math.min(255, C / D))), G = o << 3 | ((Q < 0 ? 1 : 0) | (A < 0 ? 2 : 0) | (I < 0 ? 4 : 0)); + return w | s << 8 | t << 16 | G << 24; +} +function sa(Q) { + const A = EB.color, g = 2 ** ((Q >>> 27 & 31) - 15) / 255, B = (Q & 255) * g, C = (Q >>> 8 & 255) * g, E = (Q >>> 16 & 255) * g; + return A.r = Q & 16777216 ? -B : B, A.g = Q & 33554432 ? -C : C, A.b = Q & 67108864 ? -E : E, A; +} +function wa(Q, A, I) { + const g = A * 4; + for (let B = 0; B < 3; ++B) { + const C = B * 3; + Q[g + B] = xI(I[C], I[C + 1], I[C + 2]); } } -class aD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "inversesqrt", outTypeFunc: WG }), this.statements = ({ inputs: I, outputs: g }) => [`${g.inversesqrt} = inversesqrt(${I.a});`]; +function aa(Q, A, I, g, B) { + const C = I * 4; + for (let E = 0; E < 3; ++E) { + const i = E * 3; + Q[C + E] = xI(g[i], g[i + 1], g[i + 2]); + } + Q[C + 3] = xI(B[0], B[1], B[2]); + for (let E = 1; E < 5; ++E) { + const i = E * 5; + A[C + (E - 1)] = xI( + B[i], + B[i + 1], + B[i + 2] + ); } } -class SD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "min", outTypeFunc: ZE }), this.statements = ({ inputs: g, outputs: B }) => [`${B.min} = min(${g.a}, ${g.b});`]; +function ta(Q, A, I, g) { + const B = I * 4; + for (let C = 0; C < 4; ++C) { + const E = C * 3; + Q[B + C] = xI( + g[E], + g[E + 1], + g[E + 2] + ); + } + for (let C = 4; C < 7; ++C) { + const E = C * 3; + A[B + (C - 4)] = xI( + g[E], + g[E + 1], + g[E + 2] + ); } } -class ND extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "max", outTypeFunc: jG }), this.statements = ({ inputs: g, outputs: B }) => [`${B.max} = max(${g.a}, ${g.b});`]; +function YE(Q, A) { + const I = []; + let g = 0, B = null; + const C = new cw((o, D) => { + if (I.push(o), g += o.length, D || g >= A) { + const w = new Uint8Array(g); + let s = 0; + for (const t of I) + w.set(t, s), s += t.length; + B = w.slice(0, A); + } + }), E = 1024; + let i = 0; + for (; B == null && i < Q.length; ) { + const o = Q.slice(i, i + E); + C.push(o, !1), i += E; } + if (B == null && (C.push(new Uint8Array(), !0), B == null)) + throw new Error("Failed to decompress partial gzip"); + return B; } -class cD extends OI { +class dE { constructor({ - a: A, - min: I, - max: g + fileBytes: A, + chunkBytes: I = 64 * 1024 }) { - super({ - a: A, - b: I, - c: g, - outKey: "clamp", - outTypeFunc: vG - }), this.statements = ({ inputs: B, outputs: C }) => { - const { a: E, b: D, c: i } = B; - return [`${C.clamp} = clamp(${E}, ${D}, ${i});`]; - }; + this.fileBytes = A, this.chunkBytes = I, this.chunks = [], this.totalBytes = 0; + const g = new DecompressionStream("gzip"), B = new Blob([A]).stream().pipeThrough(g); + this.reader = B.getReader(); } -} -class MD extends OI { - constructor({ a: A, b: I, t: g }) { - super({ a: A, b: I, c: g, outKey: "mix", outTypeFunc: zG }), this.statements = ({ inputs: B, outputs: C }) => { - const { a: E, b: D, c: i } = B; - return [`${C.mix} = mix(${E}, ${D}, ${i});`]; - }; + async read(A) { + for (; this.totalBytes < A; ) { + const { value: C, done: E } = await this.reader.read(); + if (E) + break; + this.chunks.push(C), this.totalBytes += C.length; + } + if (this.totalBytes < A) + throw new Error( + `Unexpected EOF: needed ${A}, got ${this.totalBytes}` + ); + const I = new Uint8Array(this.totalBytes); + let g = 0; + for (const C of this.chunks) + I.set(C, g), g += C.length; + const B = I.subarray(0, A); + return this.chunks = [I.subarray(A)], this.totalBytes -= A, B; } } -class JD extends DA { - constructor({ edge: A, x: I }) { - super({ - a: A, - b: I, - outKey: "step", - outTypeFunc: _G - }), this.statements = ({ inputs: g, outputs: B }) => { - const { a: C, b: E } = g; - return [`${B.step} = step(${C}, ${E});`]; - }; - } +function sB(Q, A, I, g, B) { + const C = Q.getContext(), E = Q.properties.get(A), i = E == null ? void 0 : E.__webglTexture; + if (!i) + throw new Error("texture not found"); + const o = C.getParameter(C.UNPACK_FLIP_Y_WEBGL), D = C.getParameter(C.UNPACK_PREMULTIPLY_ALPHA_WEBGL); + Q.state.activeTexture(C.TEXTURE0), Q.state.bindTexture(C.TEXTURE_2D, i), C.bindBuffer(C.PIXEL_UNPACK_BUFFER, null), C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL, !1), C.pixelStorei(C.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), C.texSubImage2D( + C.TEXTURE_2D, + 0, + 0, + 0, + I, + g, + C.RGBA_INTEGER, + C.UNSIGNED_INT, + B + ), Q.state.unbindTexture(), C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL, o), C.pixelStorei(C.UNPACK_PREMULTIPLY_ALPHA_WEBGL, D); } -class UD extends OI { +const Ly = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + DataCache: rw, + FreeList: lw, + GunzipReader: dE, + IDENT_VERTEX_SHADER: UE, + Sint8ToFloat: Kw, + Uint8ToFloat: Hw, + averagePositions: jw, + averageQuaternions: zw, + cloneClock: JE, + coinciDist: LE, + computeMaxSplats: Zw, + coorientDist: nE, + decodeExtRgb: sa, + decodeExtSplat: vg, + decodeQuatEulerXyz888: Ea, + decodeQuatOctXy1010R12: rE, + decodeQuatOctXy88R8: HE, + decodeQuatXyz888: Qa, + decompressPartialGzip: YE, + encodeExt3Rgb: ta, + encodeExtRgb: xI, + encodeExtSh12Rgb: aa, + encodeExtSh1Rgb: wa, + encodeExtSplat: dQ, + encodeQuatEulerXyz888: Ca, + encodeQuatOctXy1010R12: KE, + encodeQuatOctXy88R8: oB, + encodeQuatXyz888: ga, + encodeSh1Rgb: ia, + encodeSh2Rgb: Da, + encodeSh3Rgb: oa, + epsilonSign: Ia, + flipPixels: Xw, + floatBitsToUint: pg, + floatToSint8: ug, + floatToUint8: VA, + fromHalf: FA, + getTextureSize: iA, + getTransferable: eE, + isAndroid: iB, + isIos: tg, + isMobile: Vg, + isOculus: DB, + isQuest2: vw, + isVisionPro: ME, + mapFilterObject: dw, + mapObject: Yw, + newArray: YQ, + normalize: kE, + omitUndefined: Ww, + pixelsToPngUrl: Vw, + setPackedSplat: lQ, + setPackedSplatCenter: xw, + setPackedSplatOpacity: bw, + setPackedSplatQuat: pw, + setPackedSplatRgb: uw, + setPackedSplatRgba: fw, + setPackedSplatScales: qw, + threeMrtArray: FE, + threeRevision: SE, + toHalf: ZA, + uintBitsToFloat: fg, + unpackSplat: Xg, + uploadU32DataTextureRows: sB, + withinCoinciDist: $w, + withinCoorientDist: Aa, + withinDist: _w +}, Symbol.toStringTag, { value: "Module" })); +class CQ { constructor({ - edge0: A, - edge1: I, - x: g + graph: A, + inputs: I, + outputs: g, + template: B, + consoleLog: C }) { - super({ - a: A, - b: I, - c: g, - outKey: "smoothstep", - outTypeFunc: $G - }), this.statements = ({ inputs: B, outputs: C }) => { - const { a: E, b: D, c: i } = B; - return [`${C.smoothstep} = smoothstep(${E}, ${D}, ${i});`]; - }; + this.graph = A, this.template = B, this.inputs = I ?? {}, this.outputs = g ?? {}; + const E = new zB({ indent: this.template.indent }); + for (const o in this.outputs) + this.outputs[o] && E.declares.add(this.outputs[o]); + const i = A.compile({ + inputs: this.inputs, + outputs: this.outputs, + compile: E + }); + this.shader = B.generate({ globals: E.globals, statements: i }), this.uniforms = E.uniforms, this.updaters = E.updaters, C && (console.log("*** COMPILED SHADER", this.shader), console.log("*** UNIFORMS", this.uniforms)); } -} -class tD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "isNan", outTypeFunc: VE }), this.statements = ({ inputs: I, outputs: g }) => [`${g.isNan} = isNan(${I.a});`]; + prepareMaterial() { + return Ga(this); } -} -class HD extends e { - constructor({ a: A }) { - super({ a: A, outKey: "isInf", outTypeFunc: A0 }), this.statements = ({ inputs: I, outputs: g }) => [`${g.isInf} = isInf(${I.a});`]; + update() { + for (const A of this.updaters) + A(); } } -const M0 = (Q, A) => new YD({ a: Q, b: A }), J0 = (Q, A) => new KD({ a: Q, b: A }), U0 = (Q, A) => new eD({ a: Q, b: A }), t0 = (Q) => new rD({ a: Q }), H0 = (Q, A) => new OD({ a: Q, b: A }), L0 = (Q, A) => new mD({ a: Q, b: A }), Y0 = (Q, A) => new nD({ a: Q, b: A }), K0 = (Q, A) => new dD({ a: Q, b: A }), e0 = (Q, A) => new qD({ a: Q, b: A }), LD = (Q, A) => new xD({ a: Q, b: A }), r0 = (Q, A) => new lD({ a: Q, b: A }), n0 = (Q, A) => new pD({ a: Q, b: A }), d0 = (Q) => new fD({ a: Q }), q0 = (Q) => new bD({ a: Q }), hB = (Q, A, I) => new PD({ cond: Q, t: A, f: I }), x0 = (Q) => new TD({ a: Q }); -class YD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "and" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.and === "bool" ? [`${B.and} = ${g.a} && ${g.b};`] : [`${B.and} = ${g.a} & ${g.b};`]; +class Gg { + constructor(A) { + const I = A.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m), g = A.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m); + if (!I || !g) + throw new Error( + "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}" + ); + this.before = A.substring(0, I.index), this.between = A.substring( + I.index + I[0].length, + g.index + ), this.after = A.substring( + g.index + g[0].length + ), this.indent = g[1]; } -} -class KD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "or" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.or === "bool" ? [`${B.or} = ${g.a} || ${g.b};`] : [`${B.or} = ${g.a} | ${g.b};`]; + generate({ + globals: A, + statements: I + }) { + return this.before + Array.from(A).join(` + +`) + this.between + I.map((g) => this.indent + g).join(` +`) + this.after; } } -class eD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "xor" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.xor === "bool" ? [`${B.xor} = ${g.a} ^^ ${g.b};`] : [`${B.xor} = ${g.a} ^ ${g.b};`]; - } +const MB = /* @__PURE__ */ new WeakMap(); +function Ga(Q) { + let A = MB.get(Q); + return A || (A = new a.RawShaderMaterial({ + glslVersion: a.GLSL3, + vertexShader: UE, + fragmentShader: Q.shader, + uniforms: Q.uniforms + }), MB.set(Q, A), A); } -class rD extends e { - constructor({ a: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "not" }), this.statements = ({ inputs: I, outputs: g }) => this.outTypes.not === "bool" ? [`${g.not} = !${I.a};`] : [`${g.not} = not(${I.a});`]; +function wB(Q, A, I = "add") { + const g = () => { + throw new Error(`Invalid ${I} types: ${Q}, ${A}`); + }; + if (Q === A) return Q; + if (Q === "int") { + if (dA(A)) return A; + g(); } -} -class nD extends DA { - constructor({ a: A, b: I }) { - super({ - a: A, - b: I, - outTypeFunc: (g, B) => iQ(g, "lessThan"), - outKey: "lessThan" - }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.lessThan === "bool" ? [`${B.lessThan} = ${g.a} < ${g.b};`] : [`${B.lessThan} = lessThan(${g.a}, ${g.b});`]; + if (A === "int") { + if (dA(Q)) return Q; + g(); } -} -class dD extends DA { - constructor({ a: A, b: I }) { - super({ - a: A, - b: I, - outTypeFunc: (g, B) => iQ(g, "lessThanEqual"), - outKey: "lessThanEqual" - }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.lessThanEqual === "bool" ? [`${B.lessThanEqual} = ${g.a} <= ${g.b};`] : [ - `${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});` - ]; + if (Q === "uint") { + if (lA(A)) return A; + g(); } -} -class qD extends DA { - constructor({ a: A, b: I }) { - super({ - a: A, - b: I, - outTypeFunc: (g, B) => iQ(g, "greaterThan"), - outKey: "greaterThan" - }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.greaterThan === "bool" ? [`${B.greaterThan} = ${g.a} > ${g.b};`] : [ - `${B.greaterThan} = greaterThan(${g.a}, ${g.b});` - ]; + if (A === "uint") { + if (lA(Q)) return Q; + g(); } -} -class xD extends DA { - constructor({ a: A, b: I }) { - super({ - a: A, - b: I, - outTypeFunc: (g, B) => iQ(g, "greaterThanEqual"), - outKey: "greaterThanEqual" - }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.greaterThanEqual === "bool" ? [`${B.greaterThanEqual} = ${g.a} >= ${g.b};`] : [ - `${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});` - ]; + if (Q === "float") { + if (JI(A)) return A; + g(); } -} -class lD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: uD, outKey: "equal" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.equal === "bool" ? [`${B.equal} = ${g.a} == ${g.b};`] : [`${B.equal} = equal(${g.a}, ${g.b});`]; + if (A === "float") { + if (JI(Q)) return Q; + g(); } + throw new Error(`Invalid ${I} types: ${Q}, ${A}`); } -class pD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: l0, outKey: "notEqual" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.notEqual === "bool" ? [`${B.notEqual} = ${g.a} != ${g.b};`] : [`${B.notEqual} = notEqual(${g.a}, ${g.b});`]; - } +function ha(Q, A) { + return wB(Q, A, "sub"); } -class fD extends e { - constructor({ a: A }) { - super({ a: A, outTypeFunc: (I) => "bool", outKey: "any" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.any} = any(${I.a});`]; +function ya(Q, A) { + const I = () => { + throw new Error(`Invalid mul types: ${Q}, ${A}`); + }, g = (B) => B; + if (Q === "int") { + if (dA(A)) return g(A); + I(); } -} -class bD extends e { - constructor({ a: A }) { - super({ a: A, outTypeFunc: (I) => "bool", outKey: "all" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.all} = all(${I.a});`]; + if (A === "int") { + if (dA(Q)) return g(Q); + I(); } -} -class PD extends OI { - constructor({ - cond: A, - t: I, - f: g - }) { - super({ - a: A, - b: I, - c: g, - outKey: "select", - outTypeFunc: (B, C, E) => C - }), this.statements = ({ inputs: B, outputs: C }) => { - const { a: E, b: D, c: i } = B; - return [`${C.select} = (${E}) ? (${D}) : (${i});`]; - }; + if (Q === "uint") { + if (lA(A)) return g(A); + I(); } -} -function iQ(Q, A) { - if (TI(Q)) - return "bool"; - if (Q === "ivec2" || Q === "uvec2" || Q === "vec2") - return "bvec2"; - if (Q === "ivec3" || Q === "uvec3" || Q === "vec3") - return "bvec3"; - if (Q === "ivec4" || Q === "uvec4" || Q === "vec4") - return "bvec4"; - throw new Error(`Invalid ${A} type: ${Q}`); -} -function uD(Q, A = "equal") { - if (TI(Q)) - return "bool"; - if (uI(Q)) - return Q; - if (Q === "ivec2" || Q === "uvec2" || Q === "vec2") - return "bvec2"; - if (Q === "ivec3" || Q === "uvec3" || Q === "vec3") - return "bvec3"; - if (Q === "ivec4" || Q === "uvec4" || Q === "vec4") - return "bvec4"; - throw new Error(`Invalid ${A} type: ${Q}`); -} -function l0(Q) { - return uD(Q, "notEqual"); -} -function p0(Q) { - if (uI(Q)) - return "bool"; - if (xA(Q)) - return "int"; - if (lA(Q)) - return "uint"; - throw new Error(`Invalid compXor type: ${Q}`); -} -class TD extends e { - constructor({ a: A }) { - const I = p0(CA(A)); - super({ a: A, outTypeFunc: (g) => I, outKey: "compXor" }), this.statements = ({ inputs: g, outputs: B }) => { - if (TI(this.outTypes.compXor)) - return [`${B.compXor} = ${g.a};`]; - const E = (gg(I) ? ["x", "y"] : Qg(I) ? ["x", "y", "z"] : ["x", "y", "z", "w"]).map((i) => `${g.a}.${i}`), D = uI(I) ? "^^" : "^"; - return [`${B.compXor} = ${E.join(` ${D} `)};`]; - }; + if (A === "uint") { + if (lA(Q)) return g(Q); + I(); } -} -class OD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "shr" }), this.statements = ({ inputs: g, outputs: B }) => [`${B.shr} = ${g.a} >> ${g.b};`]; + if (Q === "float") { + if (JI(A)) return g(A); + I(); } -} -class mD extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "shl" }), this.statements = ({ inputs: g, outputs: B }) => [`${B.shl} = ${g.a} << ${g.b};`]; + if (A === "float") { + if (JI(Q)) return g(Q); + I(); } -} -const f0 = (Q) => new zD({ value: Q }), b0 = (Q) => new _D({ value: Q }), P0 = (Q) => new $D({ value: Q }), ZD = (Q) => new Ai({ value: Q }), u0 = (Q) => new Ii({ value: Q }), T0 = (Q) => new gi({ value: Q }), O0 = (Q) => new Qi({ value: Q }), m0 = (Q) => new Bi({ value: Q }), Z0 = (Q) => new Ci({ value: Q }), V0 = (Q) => new Ei({ value: Q }), X0 = (Q) => new Di({ value: Q }), W0 = (Q) => new ii({ value: Q }), j0 = (Q) => new wi({ value: Q }), VD = (Q) => new oi({ value: Q }), fI = (Q) => new si({ value: Q }), XD = (Q) => new Gi({ value: Q }), v0 = (Q) => new yi({ value: Q }), z0 = (Q) => new hi({ value: Q }), _0 = (Q) => new Ri({ value: Q }), WD = (Q) => new ki({ value: Q }), jD = (Q) => new Fi({ value: Q }), $0 = (Q) => new ai({ value: Q }), Ay = (Q) => new Si({ value: Q }), Iy = (Q) => new Ni({ value: Q }), gy = (Q) => new ci({ value: Q }), Qy = (Q) => new Mi({ value: Q }), By = (Q) => new Ji({ value: Q }), vD = (Q) => new Ui({ value: Q }), Cy = (Q) => new ti({ value: Q }), fQ = (Q) => new Hi({ value: Q }); -class tA extends e { - constructor({ - value: A, - outType: I, - outKey: g - }) { - super({ a: A, outTypeFunc: () => I, outKey: g }), this.statements = ({ inputs: B, outputs: C }) => [ - `${C[g]} = ${sC(I)}(${B.a});` - ]; + if (dA(Q) || lA(Q) || dA(A) || lA(A)) { + if (Q === A) return g(Q); + I(); } -} -class zD extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "bool", outKey: "bool" }); + if (Q === "vec2") { + if (A === "vec2" || HI(A)) return g("vec2"); + if (A === "mat3x2") return g("vec3"); + if (A === "mat4x2") return g("vec4"); + I(); } -} -class _D extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "int", outKey: "int" }); + if (Q === "vec3") { + if (A === "mat2x3") return g("vec2"); + if (A === "vec3" || KI(A)) return g("vec3"); + if (A === "mat4x3") return g("vec4"); + I(); } -} -class $D extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "uint", outKey: "uint" }); + if (Q === "vec4") { + if (A === "mat2x4") return g("vec2"); + if (A === "mat3x4") return g("vec3"); + if (A === "vec4" || rI(A)) return g("vec4"); + I(); } -} -class Ai extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "float", outKey: "float" }); + if (A === "vec2") { + if (HI(Q)) return g("vec2"); + if (Q === "mat2x3") return g("vec3"); + if (Q === "mat2x4") return g("vec4"); + I(); } -} -class Ii extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "bvec2", outKey: "bvec2" }); + if (A === "vec3") { + if (Q === "mat3x2") return g("vec2"); + if (KI(Q)) return g("vec3"); + if (Q === "mat3x4") return g("vec4"); + I(); } -} -class gi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "bvec3", outKey: "bvec3" }); + if (A === "vec4") { + if (Q === "mat4x2") return g("vec2"); + if (Q === "mat4x3") return g("vec3"); + if (rI(Q)) return g("vec4"); + I(); } -} -class Qi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "bvec4", outKey: "bvec4" }); + if (HI(Q)) { + if (HI(A)) return g("mat2"); + if (A === "mat3x2") return g("mat3x2"); + if (A === "mat4x2") return g("mat4x2"); + I(); } -} -class Bi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "ivec2", outKey: "ivec2" }); + if (Q === "mat2x3") { + if (HI(A)) return g("mat2x3"); + if (A === "mat3x2") return g("mat3"); + if (A === "mat4x2") return g("mat4x3"); + I(); } -} -class Ci extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "ivec3", outKey: "ivec3" }); + if (Q === "mat2x4") { + if (HI(A)) return g("mat2x4"); + if (A === "mat3x2") return g("mat3x4"); + if (A === "mat4x2") return g("mat4"); + I(); } -} -class Ei extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "ivec4", outKey: "ivec4" }); + if (Q === "mat3x2") { + if (A === "mat2x3") return g("mat2"); + if (KI(A)) return g("mat3x2"); + if (A === "mat4x3") return g("mat4x2"); + I(); } -} -class Di extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "uvec2", outKey: "uvec2" }); + if (KI(Q)) { + if (A === "mat2x3") return g("mat2x3"); + if (KI(A)) return g("mat3"); + if (A === "mat4x3") return g("mat4x3"); + I(); } -} -class ii extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "uvec3", outKey: "uvec3" }); + if (Q === "mat3x4") { + if (A === "mat2x3") return g("mat2x4"); + if (KI(A)) return g("mat3x4"); + if (A === "mat4x3") return g("mat4"); + I(); } -} -class wi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "uvec4", outKey: "uvec4" }); + if (Q === "mat4x2") { + if (A === "mat2x4") return g("mat2"); + if (A === "mat3x4") return g("mat3x2"); + if (rI(A)) return g("mat4x2"); + I(); } -} -class oi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "vec2", outKey: "vec2" }); + if (Q === "mat4x3") { + if (A === "mat2x4") return g("mat2x3"); + if (A === "mat3x4") return g("mat3"); + if (rI(A)) return g("mat4x3"); + I(); } -} -class si extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "vec3", outKey: "vec3" }); + if (rI(Q)) { + if (A === "mat2x4") return g("mat2x4"); + if (A === "mat3x4") return g("mat3x4"); + if (rI(A)) return g("mat4"); + I(); } + throw new Error(`Invalid mul types: ${Q}, ${A}`); } -class Gi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "vec4", outKey: "vec4" }); - } +function ca(Q, A) { + return wB(Q, A, "div"); } -class yi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "mat2", outKey: "mat2" }); - } +function Sa(Q, A) { + if (Q === A) return Q; + if (Q === "int") { + if (dA(A)) return A; + } else if (A === "int") { + if (dA(Q)) return Q; + } else if (Q === "uint") { + if (lA(A)) return A; + } else if (A === "uint" && lA(Q)) + return Q; + throw new Error(`Invalid imod types: ${Q}, ${A}`); } -class hi extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "mat3", outKey: "mat3" }); - } +function Fa(Q, A) { + if (Q === A || A === "float") return Q; + throw new Error(`Invalid mod types: ${Q}, ${A}`); } -class Ri extends tA { - constructor({ - value: A - }) { - super({ value: A, outType: "mat4", outKey: "mat4" }); - } +function Ra(Q) { + return Q; } -class ki extends e { - constructor({ value: A }) { - super({ a: A, outKey: "int", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.int} = floatBitsToInt(${I.a});`]; - } +function ka(Q) { + return Q; } -class Fi extends e { - constructor({ value: A }) { - super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = floatBitsToUint(${I.a});`]; +function ea(Q) { + return Q; +} +function Na(Q) { + return Q; +} +function Ma(Q) { + return Q; +} +function Ja(Q) { + return Q; +} +function Ua(Q) { + return Q; +} +function La(Q) { + return Q; +} +function na(Q) { + return Q; +} +function Ha(Q) { + return Q; +} +function Ka(Q) { + return Q; +} +function ra(Q) { + return Q; +} +function Ya(Q) { + return Q; +} +function da(Q) { + return Q; +} +function la(Q) { + return Q; +} +function xa(Q) { + return Q; +} +function lE(Q, A, I = "min") { + if (Q === A) return Q; + if (A === "float") { + if (eg(Q)) return Q; + } else if (A === "int") { + if (dA(Q)) return Q; + } else if (A === "uint" && lA(Q)) + return Q; + throw new Error(`Invalid ${I} types: ${Q}, ${A}`); +} +function qa(Q, A) { + return lE(Q, A, "max"); +} +function pa(Q, A, I) { + if (A === "float") { + if (eg(Q)) return Q; + } else if (A === "int") { + if (dA(Q)) return Q; + } else if (A === "uint" && lA(Q)) + return Q; + throw new Error(`Invalid clamp types: ${Q}, ${A}`); +} +function fa(Q, A, I) { + if (I === Q || I === "float" || I === "bool" && Q === "float" || I === "bvec2" && Q === "vec2" || I === "bvec3" && Q === "vec3" || I === "bvec4" && Q === "vec4") return Q; + throw new Error(`Invalid mix types: ${Q}, ${A}, ${I}`); +} +function ua(Q, A) { + if (Q === A || A === "float") return A; + throw new Error(`Invalid step types: ${Q}, ${A}`); +} +function ba(Q, A, I) { + if (Q === A && (Q === I || Q === "float")) + return I; + throw new Error(`Invalid smoothstep types: ${Q}, ${A}, ${I}`); +} +function xE(Q, A = "isNan") { + if (Q === "float") return "bool"; + if (Q === "vec2") return "bvec2"; + if (Q === "vec3") return "bvec3"; + if (Q === "vec4") return "bvec4"; + throw new Error(`Invalid ${A} types: ${Q}`); +} +function Pa(Q) { + return xE(Q, "isInf"); +} +const xA = (Q, A) => new uE({ a: Q, b: A }), CI = (Q, A) => new bE({ a: Q, b: A }), SA = (Q, A) => new PE({ a: Q, b: A }), bg = (Q, A) => new mE({ a: Q, b: A }), qQ = (Q, A) => new TE({ a: Q, b: A }), qE = (Q, A) => new OE({ a: Q, b: A }), ma = (Q) => new ZE({ a: Q }).outputs, aB = (Q) => new vE({ a: Q }), Ta = (Q) => new XE({ a: Q }), Oa = (Q) => new VE({ a: Q }), Za = (Q) => new WE({ a: Q }), va = (Q) => new jE({ a: Q }), Xa = (Q) => new zE({ a: Q }), Va = (Q) => new _E({ a: Q }), Pg = (Q) => new $E({ a: Q }), Wa = (Q, A) => new Ai({ a: Q, b: A }), ja = (Q) => new Ii({ a: Q }), za = (Q) => new gi({ a: Q }), _a = (Q) => new Qi({ a: Q }), $a = (Q) => new Bi({ a: Q }), At = (Q) => new Ci({ a: Q }), It = (Q) => new Ei({ a: Q }), gt = (Q) => new ii({ a: Q }), Qt = (Q, A) => new Di({ a: Q, b: A }), pE = (Q, A) => new oi({ a: Q, b: A }), Bt = (Q, A, I) => new si({ a: Q, min: A, max: I }), fE = (Q, A, I) => new wi({ a: Q, b: A, t: I }), Ct = (Q, A) => new ai({ edge: Q, x: A }), Et = (Q, A, I) => new ti({ edge0: Q, edge1: A, x: I }), it = (Q) => new Gi({ a: Q }), Dt = (Q) => new hi({ a: Q }); +class uE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "sum", outTypeFunc: wB }), this.statements = ({ inputs: g, outputs: B }) => [`${B.sum} = ${g.a} + ${g.b};`]; } } -class ai extends e { - constructor({ value: A }) { - super({ a: A, outKey: "float", outTypeFunc: () => "float" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.float} = intBitsToFloat(${I.a});`]; +class bE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "difference", outTypeFunc: ha }), this.statements = ({ inputs: g, outputs: B }) => [`${B.difference} = ${g.a} - ${g.b};`]; } } -class Si extends e { - constructor({ value: A }) { - super({ a: A, outKey: "float", outTypeFunc: () => "float" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.float} = uintBitsToFloat(${I.a});`]; +class PE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "product", outTypeFunc: ya }), this.statements = ({ inputs: g, outputs: B }) => [`${B.product} = ${g.a} * ${g.b};`]; } } -class Ni extends e { - constructor({ value: A }) { - super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packSnorm2x16(${I.a});`]; +class mE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "quotient", outTypeFunc: ca }), this.statements = ({ inputs: g, outputs: B }) => [`${B.quotient} = ${g.a} / ${g.b};`]; } } -class ci extends e { - constructor({ value: A }) { - super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackSnorm2x16(${I.a});`]; +class TE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "remainder", outTypeFunc: Sa }), this.statements = ({ inputs: g, outputs: B }) => [`${B.remainder} = ${g.a} % ${g.b};`]; } } -class Mi extends e { - constructor({ value: A }) { - super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packUnorm2x16(${I.a});`]; +class OE extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "remainder", outTypeFunc: Fa }), this.statements = ({ inputs: g, outputs: B }) => [`${B.remainder} = mod(${g.a}, ${g.b});`]; } } -class Ji extends e { - constructor({ value: A }) { - super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackUnorm2x16(${I.a});`]; +class ZE extends l { + constructor({ a: A }) { + const I = { a: CA(A) }, g = I.a, B = { + fract: g, + integer: g + }; + super({ inTypes: I, outTypes: B, inputs: { a: A } }), this.statements = ({ inputs: C, outputs: E }) => [`${E.fract} = modf(${C.a}, ${E.integer});`]; } } -class Ui extends e { - constructor({ value: A }) { - super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packHalf2x16(${I.a});`]; +class vE extends r { + constructor({ a: A }) { + super({ a: A, outKey: "neg", outTypeFunc: Ra }), this.statements = ({ inputs: I, outputs: g }) => [`${g.neg} = -${I.a};`]; } } -class ti extends e { - constructor({ value: A }) { - super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackHalf2x16(${I.a});`]; +class XE extends r { + constructor({ a: A }) { + super({ a: A, outKey: "abs", outTypeFunc: ka }), this.statements = ({ inputs: I, outputs: g }) => [`${g.abs} = abs(${I.a});`]; } } -class Hi extends e { - constructor({ value: A }) { - super({ a: A, outKey: "rgba8", outTypeFunc: () => "vec4" }), this.statements = ({ inputs: I, outputs: g }) => [ - `uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`, - `${g.rgba8} = vec4(uRgba) / 255.0;` - ]; +class VE extends r { + constructor({ a: A }) { + super({ a: A, outKey: "sign", outTypeFunc: ea }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sign} = sign(${I.a});`]; } } -const Ey = (Q) => new Yi({ a: Q }), Dy = (Q, A) => new Ki({ a: Q, b: A }), Li = (Q, A) => new ei({ a: Q, b: A }), iy = (Q, A) => new ri({ a: Q, b: A }), ag = (Q) => new ni({ a: Q }), wy = (Q, A, I) => new xi({ a: Q, b: A, c: I }), oy = (Q, A) => new li({ incident: Q, normal: A }), sy = (Q, A, I) => new pi({ incident: Q, normal: A, eta: I }), $I = (Q) => new Oi({ vector: Q }), yI = ({ - vector: Q, - vectorType: A, - x: I, - y: g, - z: B, - w: C, - r: E, - g: D, - b: i, - a: w -}) => new mi({ vector: Q, vectorType: A, x: I, y: g, z: B, w: C, r: E, g: D, b: i, a: w }), Gy = (Q) => new di({ a: Q }), yy = (Q, A) => new qi({ a: Q, b: A }), hy = (Q, A) => new Zi({ vector: Q, select: A }), Ry = (Q, A) => new fi({ a: Q, b: A }), ky = (Q, A) => new bi({ a: Q, b: A }), Fy = (Q) => new Pi({ a: Q }), ay = (Q) => new ui({ a: Q }), Sy = (Q) => new Ti({ a: Q }); -class Yi extends e { +class WE extends r { constructor({ a: A }) { - super({ a: A, outTypeFunc: (I) => "float", outKey: "length" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.length} = length(${I.a});` - ]; + super({ a: A, outKey: "floor", outTypeFunc: Na }), this.statements = ({ inputs: I, outputs: g }) => [`${g.floor} = floor(${I.a});`]; } } -class Ki extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "distance", outTypeFunc: (g, B) => "float" }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.distance} = distance(${g.a}, ${g.b});` - ]; +class jE extends r { + constructor({ a: A }) { + super({ a: A, outKey: "ceil", outTypeFunc: Ma }), this.statements = ({ inputs: I, outputs: g }) => [`${g.ceil} = ceil(${I.a});`]; } } -class ei extends DA { - constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "dot", outTypeFunc: (g, B) => "float" }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.dot} = dot(${g.a}, ${g.b});` - ]; +class zE extends r { + constructor({ a: A }) { + super({ a: A, outKey: "trunc", outTypeFunc: Ja }), this.statements = ({ inputs: I, outputs: g }) => [`${g.trunc} = trunc(${I.a});`]; + } +} +class _E extends r { + constructor({ a: A }) { + super({ a: A, outKey: "round", outTypeFunc: Ua }), this.statements = ({ inputs: I, outputs: g }) => [`${g.round} = round(${I.a});`]; + } +} +class $E extends r { + constructor({ a: A }) { + super({ a: A, outKey: "fract", outTypeFunc: La }), this.statements = ({ inputs: I, outputs: g }) => [`${g.fract} = fract(${I.a});`]; } } -class ri extends DA { +class Ai extends DA { constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "cross", outTypeFunc: (g, B) => "vec3" }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.cross} = cross(${g.a}, ${g.b});` - ]; + super({ a: A, b: I, outKey: "power", outTypeFunc: na }), this.statements = ({ inputs: g, outputs: B }) => [`${B.power} = pow(${g.a}, ${g.b});`]; } } -class ni extends e { +class Ii extends r { constructor({ a: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "normalize" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.normalize} = normalize(${I.a});` - ]; + super({ a: A, outKey: "exp", outTypeFunc: Ha }), this.statements = ({ inputs: I, outputs: g }) => [`${g.exp} = exp(${I.a});`]; } } -function Ny(Q) { - if (Q === "vec3") - return "vec2"; - if (Q === "vec4") - return "vec3"; - throw new Error("Invalid type"); +class gi extends r { + constructor({ a: A }) { + super({ a: A, outKey: "exp2", outTypeFunc: Ka }), this.statements = ({ inputs: I, outputs: g }) => [`${g.exp2} = exp2(${I.a});`]; + } } -class di extends e { +class Qi extends r { constructor({ a: A }) { - super({ - a: A, - outTypeFunc: (I) => Ny(I), - outKey: "projected" - }), this.statements = ({ inputs: I, outputs: g }) => { - if (this.inTypes.a === "vec3") - return [`${g.projected} = ${I.a}.xy / ${I.a}.z;`]; - if (this.inTypes.a === "vec4") - return [`${g.projected} = ${I.a}.xyz / ${I.a}.w;`]; - throw new Error("Invalid type"); - }; + super({ a: A, outKey: "log", outTypeFunc: ra }), this.statements = ({ inputs: I, outputs: g }) => [`${g.log} = log(${I.a});`]; } } -function cy(Q) { - if (Q === "float") return "vec2"; - if (Q === "vec2") return "vec3"; - if (Q === "vec3") return "vec4"; - throw new Error("Invalid type"); +class Bi extends r { + constructor({ a: A }) { + super({ a: A, outKey: "log2", outTypeFunc: Ya }), this.statements = ({ inputs: I, outputs: g }) => [`${g.log2} = log2(${I.a});`]; + } +} +class Ci extends r { + constructor({ a: A }) { + super({ a: A, outKey: "sqr", outTypeFunc: da }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sqr} = ${I.a} * ${I.a};`]; + } +} +class Ei extends r { + constructor({ a: A }) { + super({ a: A, outKey: "sqrt", outTypeFunc: la }), this.statements = ({ inputs: I, outputs: g }) => [`${g.sqrt} = sqrt(${I.a});`]; + } } -class qi extends DA { +class ii extends r { + constructor({ a: A }) { + super({ a: A, outKey: "inversesqrt", outTypeFunc: xa }), this.statements = ({ inputs: I, outputs: g }) => [`${g.inversesqrt} = inversesqrt(${I.a});`]; + } +} +class Di extends DA { constructor({ a: A, b: I }) { - const g = CA(A), B = cy(g); - super({ a: A, b: I, outKey: "extend", outTypeFunc: () => B }), this.statements = ({ inputs: C, outputs: E }) => [ - `${E.extend} = ${B}(${C.a}, ${C.b});` - ]; + super({ a: A, b: I, outKey: "min", outTypeFunc: lE }), this.statements = ({ inputs: g, outputs: B }) => [`${B.min} = min(${g.a}, ${g.b});`]; } } -class xi extends OI { - constructor({ a: A, b: I, c: g }) { +class oi extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "max", outTypeFunc: qa }), this.statements = ({ inputs: g, outputs: B }) => [`${B.max} = max(${g.a}, ${g.b});`]; + } +} +class si extends uI { + constructor({ + a: A, + min: I, + max: g + }) { super({ a: A, b: I, c: g, - outKey: "forward", - outTypeFunc: (B, C, E) => B - }), this.statements = ({ inputs: B, outputs: C }) => [ - `${C.forward} = faceforward(${B.a}, ${B.b}, ${B.c});` - ]; + outKey: "clamp", + outTypeFunc: pa + }), this.statements = ({ inputs: B, outputs: C }) => { + const { a: E, b: i, c: o } = B; + return [`${C.clamp} = clamp(${E}, ${i}, ${o});`]; + }; } } -class li extends DA { - constructor({ - incident: A, - normal: I - }) { +class wi extends uI { + constructor({ a: A, b: I, t: g }) { + super({ a: A, b: I, c: g, outKey: "mix", outTypeFunc: fa }), this.statements = ({ inputs: B, outputs: C }) => { + const { a: E, b: i, c: o } = B; + return [`${C.mix} = mix(${E}, ${i}, ${o});`]; + }; + } +} +class ai extends DA { + constructor({ edge: A, x: I }) { super({ a: A, b: I, - outKey: "reflection", - outTypeFunc: (g, B) => g - }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.reflection} = reflect(${g.a}, ${g.b});` - ]; + outKey: "step", + outTypeFunc: ua + }), this.statements = ({ inputs: g, outputs: B }) => { + const { a: C, b: E } = g; + return [`${B.step} = step(${C}, ${E});`]; + }; } } -class pi extends OI { +class ti extends uI { constructor({ - incident: A, - normal: I, - eta: g + edge0: A, + edge1: I, + x: g }) { super({ a: A, b: I, c: g, - outKey: "refraction", - outTypeFunc: (B, C, E) => B - }), this.statements = ({ inputs: B, outputs: C }) => [ - `${C.refraction} = refract(${B.a}, ${B.b}, ${B.c});` - ]; + outKey: "smoothstep", + outTypeFunc: ba + }), this.statements = ({ inputs: B, outputs: C }) => { + const { a: E, b: i, c: o } = B; + return [`${C.smoothstep} = smoothstep(${E}, ${i}, ${o});`]; + }; } } -class fi extends DA { +class Gi extends r { + constructor({ a: A }) { + super({ a: A, outKey: "isNan", outTypeFunc: xE }), this.statements = ({ inputs: I, outputs: g }) => [`${g.isNan} = isNan(${I.a});`]; + } +} +class hi extends r { + constructor({ a: A }) { + super({ a: A, outKey: "isInf", outTypeFunc: Pa }), this.statements = ({ inputs: I, outputs: g }) => [`${g.isInf} = isInf(${I.a});`]; + } +} +const ot = (Q, A) => new ci({ a: Q, b: A }), st = (Q, A) => new Si({ a: Q, b: A }), wt = (Q, A) => new Fi({ a: Q, b: A }), at = (Q) => new Ri({ a: Q }), tt = (Q, A) => new Yi({ a: Q, b: A }), Gt = (Q, A) => new di({ a: Q, b: A }), ht = (Q, A) => new ki({ a: Q, b: A }), yt = (Q, A) => new ei({ a: Q, b: A }), ct = (Q, A) => new Ni({ a: Q, b: A }), yi = (Q, A) => new Mi({ a: Q, b: A }), St = (Q, A) => new Ji({ a: Q, b: A }), Ft = (Q, A) => new Ui({ a: Q, b: A }), Rt = (Q) => new Li({ a: Q }), kt = (Q) => new ni({ a: Q }), tB = (Q, A, I) => new Hi({ cond: Q, t: A, f: I }), et = (Q) => new ri({ a: Q }); +class ci extends DA { constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "product", outTypeFunc: (g, B) => g }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.product} = matrixCompMult(${A}, ${I});` - ]; + super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "and" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.and === "bool" ? [`${B.and} = ${g.a} && ${g.b};`] : [`${B.and} = ${g.a} & ${g.b};`]; } } -function My(Q, A) { - if (Q === "vec2") { - if (A === "vec2") return "mat2"; - if (A === "vec3") return "mat3x2"; - if (A === "vec4") return "mat4x2"; +class Si extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "or" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.or === "bool" ? [`${B.or} = ${g.a} || ${g.b};`] : [`${B.or} = ${g.a} | ${g.b};`]; } - if (Q === "vec3") { - if (A === "vec2") return "mat2x3"; - if (A === "vec3") return "mat3"; - if (A === "vec4") return "mat4x3"; +} +class Fi extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "xor" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.xor === "bool" ? [`${B.xor} = ${g.a} ^^ ${g.b};`] : [`${B.xor} = ${g.a} ^ ${g.b};`]; } - if (Q === "vec4") { - if (A === "vec2") return "mat2x4"; - if (A === "vec3") return "mat3x4"; - if (A === "vec4") return "mat4"; +} +class Ri extends r { + constructor({ a: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "not" }), this.statements = ({ inputs: I, outputs: g }) => this.outTypes.not === "bool" ? [`${g.not} = !${I.a};`] : [`${g.not} = not(${I.a});`]; } - throw new Error(`Invalid outer type: ${Q}, ${A}`); } -class bi extends DA { +class ki extends DA { constructor({ a: A, b: I }) { - super({ a: A, b: I, outKey: "outer", outTypeFunc: My }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.outer} = outerProduct(${g.a}, ${g.b});` - ]; + super({ + a: A, + b: I, + outTypeFunc: (g, B) => EQ(g, "lessThan"), + outKey: "lessThan" + }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.lessThan === "bool" ? [`${B.lessThan} = ${g.a} < ${g.b};`] : [`${B.lessThan} = lessThan(${g.a}, ${g.b});`]; } } -function Jy(Q) { - if (Q === "mat2") return "mat2"; - if (Q === "mat3") return "mat3"; - if (Q === "mat4") return "mat4"; - if (Q === "mat2x2") return "mat2x2"; - if (Q === "mat2x3") return "mat3x2"; - if (Q === "mat2x4") return "mat4x2"; - if (Q === "mat3x2") return "mat2x3"; - if (Q === "mat3x3") return "mat3x3"; - if (Q === "mat3x4") return "mat4x3"; - if (Q === "mat4x2") return "mat2x4"; - if (Q === "mat4x3") return "mat3x4"; - if (Q === "mat4x4") return "mat4x4"; - throw new Error(`Invalid transpose type: ${Q}`); -} -class Pi extends e { - constructor({ a: A }) { - super({ a: A, outKey: "transpose", outTypeFunc: Jy }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.transpose} = transpose(${I.a});` +class ei extends DA { + constructor({ a: A, b: I }) { + super({ + a: A, + b: I, + outTypeFunc: (g, B) => EQ(g, "lessThanEqual"), + outKey: "lessThanEqual" + }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.lessThanEqual === "bool" ? [`${B.lessThanEqual} = ${g.a} <= ${g.b};`] : [ + `${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});` ]; } } -class ui extends e { - constructor({ a: A }) { - super({ a: A, outKey: "det", outTypeFunc: (I) => "float" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.det} = determinant(${I.a});` +class Ni extends DA { + constructor({ a: A, b: I }) { + super({ + a: A, + b: I, + outTypeFunc: (g, B) => EQ(g, "greaterThan"), + outKey: "greaterThan" + }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.greaterThan === "bool" ? [`${B.greaterThan} = ${g.a} > ${g.b};`] : [ + `${B.greaterThan} = greaterThan(${g.a}, ${g.b});` ]; } } -class Ti extends e { - constructor({ a: A }) { - super({ a: A, outKey: "inverse", outTypeFunc: (I) => I }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.inverse} = inverse(${A});` +class Mi extends DA { + constructor({ a: A, b: I }) { + super({ + a: A, + b: I, + outTypeFunc: (g, B) => EQ(g, "greaterThanEqual"), + outKey: "greaterThanEqual" + }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.greaterThanEqual === "bool" ? [`${B.greaterThanEqual} = ${g.a} >= ${g.b};`] : [ + `${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});` ]; } } -function Uy(Q) { - const A = (I) => I; - switch (Q) { - case "vec2": - return A({ x: "float", y: "float", r: "float", g: "float" }); - case "vec3": - return A({ - x: "float", - y: "float", - z: "float", - r: "float", - g: "float", - b: "float" - }); - case "vec4": - return A({ - x: "float", - y: "float", - z: "float", - w: "float", - r: "float", - g: "float", - b: "float", - a: "float" - }); - case "ivec2": - return A({ x: "int", y: "int", r: "int", g: "int" }); - case "ivec3": - return A({ - x: "int", - y: "int", - z: "int", - r: "int", - g: "int", - b: "int" - }); - case "ivec4": - return A({ - x: "int", - y: "int", - z: "int", - w: "int", - r: "int", - g: "int", - b: "int", - a: "int" - }); - case "uvec2": - return A({ x: "uint", y: "uint", r: "uint", g: "uint" }); - case "uvec3": - return A({ - x: "uint", - y: "uint", - z: "uint", - r: "uint", - g: "uint", - b: "uint" - }); - case "uvec4": - return A({ - x: "uint", - y: "uint", - z: "uint", - w: "uint", - r: "uint", - g: "uint", - b: "uint", - a: "uint" - }); - default: - throw new Error(`Invalid vector type: ${Q}`); +class Ji extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: Ki, outKey: "equal" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.equal === "bool" ? [`${B.equal} = ${g.a} == ${g.b};`] : [`${B.equal} = equal(${g.a}, ${g.b});`]; } } -class Oi extends d { - constructor({ vector: A }) { - const g = { vector: CA(A) }, B = Uy(g.vector); - super({ inTypes: g, outTypes: B, inputs: { vector: A } }), this.statements = ({ inputs: C, outputs: E }) => { - const { x: D, y: i, z: w, w: s, r: o, g: y, b: h, a: k } = E, { vector: R } = C; - return [ - D ? `${D} = ${R}.x;` : null, - i ? `${i} = ${R}.y;` : null, - w ? `${w} = ${R}.z;` : null, - s ? `${s} = ${R}.w;` : null, - o ? `${o} = ${R}.r;` : null, - y ? `${y} = ${R}.g;` : null, - h ? `${h} = ${R}.b;` : null, - k ? `${k} = ${R}.a;` : null - ].filter(Boolean); - }; +class Ui extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: Nt, outKey: "notEqual" }), this.statements = ({ inputs: g, outputs: B }) => this.outTypes.notEqual === "bool" ? [`${B.notEqual} = ${g.a} != ${g.b};`] : [`${B.notEqual} = notEqual(${g.a}, ${g.b});`]; + } +} +class Li extends r { + constructor({ a: A }) { + super({ a: A, outTypeFunc: (I) => "bool", outKey: "any" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.any} = any(${I.a});`]; + } +} +class ni extends r { + constructor({ a: A }) { + super({ a: A, outTypeFunc: (I) => "bool", outKey: "all" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.all} = all(${I.a});`]; } } -class mi extends d { +class Hi extends uI { constructor({ - vector: A, - vectorType: I, - x: g, - y: B, - z: C, - w: E, - r: D, - g: i, - b: w, - a: s + cond: A, + t: I, + f: g }) { - if (!A && !I) - throw new Error("Either vector or vectorType must be provided"); - const o = I ?? CA(A), y = iC(o), h = wC(o), k = { - vector: o, - x: y, - y, - r: y, - g: y - }, R = { vector: A, x: g, y: B, r: D, g: i }; - h >= 3 && (Object.assign(k, { z: y, b: y }), Object.assign(R, { z: C, b: w })), h >= 4 && (Object.assign(k, { w: y, a: y }), Object.assign(R, { w: E, a: s })), super({ inTypes: k, outTypes: { vector: o }, inputs: R }), this.statements = ({ inputs: F, outputs: a }) => { - const { vector: S } = a, { - vector: M, - x: c, - y: N, - z: U, - w: J, - r: t, - g: H, - b: K, - a: Y - } = F, L = [ - `${S}.x = ${c ?? t ?? (M ? `${M}.x` : Dg(y))};`, - `${S}.y = ${N ?? H ?? (M ? `${M}.y` : Dg(y))};` - ]; - return h >= 3 && L.push( - `${S}.z = ${U ?? K ?? (M ? `${M}.z` : Dg(y))};` - ), h >= 4 && L.push( - `${S}.w = ${J ?? Y ?? (M ? `${M}.w` : Dg(y))};` - ), L; + super({ + a: A, + b: I, + c: g, + outKey: "select", + outTypeFunc: (B, C, E) => C + }), this.statements = ({ inputs: B, outputs: C }) => { + const { a: E, b: i, c: o } = B; + return [`${C.select} = (${E}) ? (${i}) : (${o});`]; }; } - dynoOut() { - return new V( - this, - "vector" - ); +} +function EQ(Q, A) { + if (fI(Q)) + return "bool"; + if (Q === "ivec2" || Q === "uvec2" || Q === "vec2") + return "bvec2"; + if (Q === "ivec3" || Q === "uvec3" || Q === "vec3") + return "bvec3"; + if (Q === "ivec4" || Q === "uvec4" || Q === "vec4") + return "bvec4"; + throw new Error(`Invalid ${A} type: ${Q}`); +} +function Ki(Q, A = "equal") { + if (fI(Q)) + return "bool"; + if (pI(Q)) + return Q; + if (Q === "ivec2" || Q === "uvec2" || Q === "vec2") + return "bvec2"; + if (Q === "ivec3" || Q === "uvec3" || Q === "vec3") + return "bvec3"; + if (Q === "ivec4" || Q === "uvec4" || Q === "vec4") + return "bvec4"; + throw new Error(`Invalid ${A} type: ${Q}`); +} +function Nt(Q) { + return Ki(Q, "notEqual"); +} +function Mt(Q) { + if (pI(Q)) + return "bool"; + if (dA(Q)) + return "int"; + if (lA(Q)) + return "uint"; + throw new Error(`Invalid compXor type: ${Q}`); +} +class ri extends r { + constructor({ a: A }) { + const I = Mt(CA(A)); + super({ a: A, outTypeFunc: (g) => I, outKey: "compXor" }), this.statements = ({ inputs: g, outputs: B }) => { + if (fI(this.outTypes.compXor)) + return [`${B.compXor} = ${g.a};`]; + const E = (WI(I) ? ["x", "y"] : jI(I) ? ["x", "y", "z"] : ["x", "y", "z", "w"]).map((o) => `${g.a}.${o}`), i = pI(I) ? "^^" : "^"; + return [`${B.compXor} = ${E.join(` ${i} `)};`]; + }; } } -function ty(Q, A) { - let I = null; - if (Mg(Q) ? I = A.length === 1 ? "float" : A.length === 2 ? "vec2" : A.length === 3 ? "vec3" : A.length === 4 ? "vec4" : null : xA(Q) ? I = A.length === 1 ? "int" : A.length === 2 ? "ivec2" : A.length === 3 ? "ivec3" : A.length === 4 ? "ivec4" : null : lA(Q) && (I = A.length === 1 ? "uint" : A.length === 2 ? "uvec2" : A.length === 3 ? "uvec3" : A.length === 4 ? "uvec4" : null), I == null) - throw new Error(`Invalid swizzle: ${A}`); - return I; +class Yi extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "shr" }), this.statements = ({ inputs: g, outputs: B }) => [`${B.shr} = ${g.a} >> ${g.b};`]; + } } -class Zi extends e { - constructor({ vector: A, select: I }) { - super({ - a: A, - outKey: "swizzle", - outTypeFunc: (g) => ty(g, I) - }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.swizzle} = ${g.a}.${I};` +class di extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outTypeFunc: (g, B) => g, outKey: "shl" }), this.statements = ({ inputs: g, outputs: B }) => [`${B.shl} = ${g.a} << ${g.b};`]; + } +} +const Jt = (Q) => new fi({ value: Q }), Ut = (Q) => new ui({ value: Q }), Lt = (Q) => new bi({ value: Q }), li = (Q) => new Pi({ value: Q }), nt = (Q) => new mi({ value: Q }), Ht = (Q) => new Ti({ value: Q }), Kt = (Q) => new Oi({ value: Q }), rt = (Q) => new Zi({ value: Q }), Yt = (Q) => new vi({ value: Q }), dt = (Q) => new Xi({ value: Q }), lt = (Q) => new Vi({ value: Q }), xt = (Q) => new Wi({ value: Q }), qt = (Q) => new ji({ value: Q }), xi = (Q) => new zi({ value: Q }), qI = (Q) => new _i({ value: Q }), qi = (Q) => new $i({ value: Q }), pt = (Q) => new AD({ value: Q }), ft = (Q) => new ID({ value: Q }), ut = (Q) => new gD({ value: Q }), pi = (Q) => new QD({ value: Q }), bt = (Q) => new BD({ value: Q }), Pt = (Q) => new CD({ value: Q }), mt = (Q) => new ED({ value: Q }), Tt = (Q) => new iD({ value: Q }), Ot = (Q) => new DD({ value: Q }), Zt = (Q) => new oD({ value: Q }), vt = (Q) => new sD({ value: Q }), Xt = (Q) => new wD({ value: Q }), Vt = (Q) => new aD({ value: Q }), Wt = (Q) => new tD({ value: Q }); +class eA extends r { + constructor({ + value: A, + outType: I, + outKey: g + }) { + super({ a: A, outTypeFunc: () => I, outKey: g }), this.statements = ({ inputs: B, outputs: C }) => [ + `${C[g]} = ${WB(I)}(${B.a});` ]; } } -const Hy = (Q, A, I) => new _i({ index: Q, from: A, to: I }), Ly = (Q) => new Bg({ value: Q }), Yy = (Q) => new zA({ state: Q }), Ky = (Q) => new _A({ state: Q }), Vi = (Q) => new $i({ value: Q }), Xi = (Q) => new Aw({ value: Q }), Wi = (Q) => new Iw({ value: Q }), ji = (Q) => new gw({ value: Q }), ey = (Q) => new Qw({ value: Q }), ry = (Q) => new Bw({ value: Q }), vi = (Q) => new Cw({ value: Q }), bQ = (Q) => new Ew({ value: Q }), zi = (Q, A, I) => new Dw({ z: Q, zNear: A, zFar: I }).outputs.depth, ny = (Q) => new iw({ index: Q }); -class _i extends d { +class fi extends eA { constructor({ - from: A, - to: I, - index: g + value: A }) { - super({ - inTypes: { from: "int", to: "int", index: "int" }, - outTypes: { index: "int" }, - inputs: { from: A, to: I, index: g }, - statements: ({ inputs: B, outputs: C }) => [ - `${C.index} = ${B.index} - ${B.from} + ${B.to};` - ] - }); + super({ value: A, outType: "bool", outKey: "bool" }); } - dynoOut() { - return new V(this, "index"); +} +class ui extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "int", outKey: "int" }); } } -class zA extends d { - constructor({ state: A }) { - const I = CA(A); - super({ - inTypes: { state: I }, - outTypes: { state: "uint" }, - inputs: { state: A }, - globals: () => [ - oA(` - uint pcg_next(uint state) { - return state * 747796405u + 2891336453u; - } - `) - ], - statements: ({ inputs: g, outputs: B }) => { - const C = I === "uint" ? `${g.state}` : I === "int" ? `uint(${g.state})` : `floatBitsToUint(${g.state})`; - return [`${B.state} = pcg_next(${C});`]; - } - }); +class bi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "uint", outKey: "uint" }); } - dynoOut() { - return new V(this, "state"); +} +class Pi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "float", outKey: "float" }); } } -class _A extends d { - constructor({ state: A }) { - super({ - inTypes: { state: "uint" }, - outTypes: { hash: "uint" }, - inputs: { state: A }, - globals: () => [ - oA(` - uint pcg_hash(uint state) { - uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; - return (hash >> 22u) ^ hash; - } - `) - ], - statements: ({ inputs: I, outputs: g }) => [ - `${g.hash} = pcg_hash(${I.state});` - ] - }); +class mi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "bvec2", outKey: "bvec2" }); } - dynoOut() { - return new V(this, "hash"); +} +class Ti extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "bvec3", outKey: "bvec3" }); } } -class Bg extends d { - constructor({ value: A }) { - const I = CA(A), g = oC(I); - super({ - inTypes: { value: I }, - outTypes: { state: "uint" }, - inputs: { value: A }, - globals: () => [ - oA(` - uint pcg_mix(uint value) { - return value; - } - uint pcg_mix(uvec2 value) { - return value.x + 0x9e3779b9u * value.y; - } - uint pcg_mix(uvec3 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; - } - uint pcg_mix(uvec4 value) { - return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; - } - `) - ], - statements: ({ inputs: B, outputs: C }) => { - const E = lA(I) ? `${B.value}` : xA(I) ? `${g}(${B.value})` : `floatBitsToUint(${B.value})`; - return [ - `${g} bits = ${E};`, - `${C.state} = pcg_mix(bits);` - ]; - } - }); +class Oi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "bvec4", outKey: "bvec4" }); } - dynoOut() { - return new V(this, "state"); +} +class Zi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "ivec2", outKey: "ivec2" }); } } -class $i extends hI { - constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "uint" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - let g = new Bg({ value: I }).outputs.state; - return g = new zA({ state: g }).outputs.state, new _A({ state: g }).outputs; - } - }); +class vi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "ivec3", outKey: "ivec3" }); } - dynoOut() { - return new V(this, "hash"); +} +class Xi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "ivec4", outKey: "ivec4" }); } } -class Aw extends hI { - constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "uvec2" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - let g = new Bg({ value: I }).outputs.state; - g = new zA({ state: g }).outputs.state; - const B = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const C = new _A({ state: g }).outputs.hash; - return { hash: yI({ vectorType: "uvec2", x: B, y: C }) }; - } - }); +class Vi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "uvec2", outKey: "uvec2" }); } - dynoOut() { - return new V(this, "hash"); +} +class Wi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "uvec3", outKey: "uvec3" }); } } -class Iw extends hI { - constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "uvec3" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - let g = new Bg({ value: I }).outputs.state; - g = new zA({ state: g }).outputs.state; - const B = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const C = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const E = new _A({ state: g }).outputs.hash; - return { hash: yI({ vectorType: "uvec3", x: B, y: C, z: E }) }; - } - }); +class ji extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "uvec4", outKey: "uvec4" }); } - dynoOut() { - return new V(this, "hash"); +} +class zi extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "vec2", outKey: "vec2" }); } } -class gw extends hI { - constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "uvec4" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - let g = new Bg({ value: I }).outputs.state; - g = new zA({ state: g }).outputs.state; - const B = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const C = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const E = new _A({ state: g }).outputs.hash; - g = new zA({ state: g }).outputs.state; - const D = new _A({ state: g }).outputs.hash; - return { hash: yI({ vectorType: "uvec4", x: B, y: C, z: E, w: D }) }; - } - }); +class _i extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "vec3", outKey: "vec3" }); } - dynoOut() { - return new V(this, "hash"); +} +class $i extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "vec4", outKey: "vec4" }); } } -class Qw extends hI { - constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "float" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - const g = Vi(I); - return { hash: kA(ZD(g), v("float", 1 / 2 ** 32)) }; - } - }); +class AD extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "mat2", outKey: "mat2" }); } - dynoOut() { - return new V(this, "hash"); +} +class ID extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "mat3", outKey: "mat3" }); + } +} +class gD extends eA { + constructor({ + value: A + }) { + super({ value: A, outType: "mat4", outKey: "mat4" }); } } -class Bw extends hI { +class QD extends r { constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "vec2" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - const g = Xi(I); - return { hash: kA(VD(g), v("float", 1 / 2 ** 32)) }; - } - }); + super({ a: A, outKey: "int", outTypeFunc: () => "int" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.int} = floatBitsToInt(${I.a});`]; } - dynoOut() { - return new V(this, "hash"); +} +class BD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = floatBitsToUint(${I.a});`]; } } -class Cw extends hI { +class CD extends r { constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "vec3" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - const g = Wi(I); - return { hash: kA(fI(g), v("float", 1 / 2 ** 32)) }; - } - }); + super({ a: A, outKey: "float", outTypeFunc: () => "float" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.float} = intBitsToFloat(${I.a});`]; } - dynoOut() { - return new V(this, "hash"); +} +class ED extends r { + constructor({ value: A }) { + super({ a: A, outKey: "float", outTypeFunc: () => "float" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.float} = uintBitsToFloat(${I.a});`]; } } -class Ew extends hI { +class iD extends r { constructor({ value: A }) { - super({ - inTypes: { value: CA(A) }, - outTypes: { hash: "vec4" }, - inputs: { value: A }, - construct: ({ value: I }) => { - if (!I) - throw new Error("value is required"); - const g = ji(I); - return { hash: kA(XD(g), v("float", 1 / 2 ** 32)) }; - } - }); + super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packSnorm2x16(${I.a});`]; } - dynoOut() { - return new V(this, "hash"); +} +class DD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackSnorm2x16(${I.a});`]; } } -class Dw extends d { - constructor({ - z: A, - zNear: I, - zFar: g - }) { - super({ - inTypes: { z: "float", zNear: "float", zFar: "float" }, - outTypes: { depth: "float" }, - inputs: { z: A, zNear: I, zFar: g }, - statements: ({ inputs: B, outputs: C }) => [ - `float clamped = clamp(${B.z}, ${B.zNear}, ${B.zFar});`, - `${C.depth} = (log2(clamped + 1.0) - log2(${B.zNear} + 1.0)) / (log2(${B.zFar} + 1.0) - log2(${B.zNear} + 1.0));` - ] - }); +class oD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packUnorm2x16(${I.a});`]; } - dynoOut() { - return new V(this, "depth"); +} +class sD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackUnorm2x16(${I.a});`]; } } -class iw extends d { - constructor({ index: A }) { - super({ - inTypes: { index: "int" }, - outTypes: { color: "vec3" }, - inputs: { index: A }, - statements: ({ inputs: I, outputs: g }) => [ - `${g.color} = debugColorHue(uint(${I.index}));` - ] - }); +class wD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "uint", outTypeFunc: () => "uint" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.uint} = packHalf2x16(${I.a});`]; } - dynoOut() { - return new V(this, "color"); +} +class aD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "vec2", outTypeFunc: () => "vec2" }), this.statements = ({ inputs: I, outputs: g }) => [`${g.vec2} = unpackHalf2x16(${I.a});`]; } } -const ww = (Q, { - scale: A, - scales: I, - rotate: g, - translate: B -}) => new sw({ position: Q, scale: A, scales: I, rotate: g, translate: B }).outputs.position, ow = (Q, { - scale: A, - scales: I, - rotate: g -}) => new Gw({ dir: Q, scale: A, scales: I, rotate: g }).outputs.dir, dy = (Q, { rotate: A }) => new yw({ quaternion: Q, rotate: A }).outputs.quaternion; -class sw extends d { - constructor({ - position: A, - scale: I, - scales: g, - rotate: B, - translate: C - }) { - super({ - inTypes: { - position: "vec3", - scale: "float", - scales: "vec3", - rotate: "vec4", - translate: "vec3" - }, - outTypes: { position: "vec3" }, - inputs: { position: A, scale: I, scales: g, rotate: B, translate: C }, - statements: ({ inputs: E, outputs: D }) => { - const { position: i } = D; - if (!i) - return []; - const { scale: w, scales: s, rotate: o, translate: y } = E; - return [ - `${i} = ${E.position ?? "vec3(0.0, 0.0, 0.0)"};`, - w ? `${i} *= ${w};` : null, - s ? `${i} *= ${s};` : null, - o ? `${i} = quatVec(${o}, ${i});` : null, - y ? `${i} += ${y};` : null - ].filter(Boolean); - } - }); - } -} -class Gw extends d { - constructor({ - dir: A, - scale: I, - scales: g, - rotate: B - }) { - super({ - inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, - outTypes: { dir: "vec3" }, - inputs: { dir: A, scale: I, scales: g, rotate: B }, - statements: ({ inputs: C, outputs: E }) => { - const { dir: D } = E; - if (!D) - return []; - const { scale: i, scales: w, rotate: s } = C; - return [ - `${D} = ${C.dir ?? "vec3(0.0, 0.0, 0.0)"};`, - i ? `${D} *= ${i};` : null, - w ? `${D} *= ${w};` : null, - s ? `${D} = quatVec(${s}, ${D});` : null - ].filter(Boolean); - } - }); +class tD extends r { + constructor({ value: A }) { + super({ a: A, outKey: "rgba8", outTypeFunc: () => "vec4" }), this.statements = ({ inputs: I, outputs: g }) => [ + `uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`, + `${g.rgba8} = vec4(uRgba) / 255.0;` + ]; } } -class yw extends d { - constructor({ - quaternion: A, - rotate: I - }) { - super({ - inTypes: { quaternion: "vec4", rotate: "vec4" }, - outTypes: { quaternion: "vec4" }, - inputs: { quaternion: A, rotate: I }, - statements: ({ inputs: g, outputs: B }) => { - const { quaternion: C } = B; - return C ? [ - `${C} = ${g.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, - I ? `${C} = quatQuat(${g.rotate}, ${C});` : null - ].filter(Boolean) : []; - } - }); +const jt = (Q) => new hD({ a: Q }), zt = (Q, A) => new yD({ a: Q, b: A }), GD = (Q, A) => new cD({ a: Q, b: A }), _t = (Q, A) => new SD({ a: Q, b: A }), hg = (Q) => new FD({ a: Q }), $t = (Q, A, I) => new eD({ a: Q, b: A, c: I }), A0 = (Q, A) => new ND({ incident: Q, normal: A }), I0 = (Q, A, I) => new MD({ incident: Q, normal: A, eta: I }), VI = (Q) => new KD({ vector: Q }), tI = ({ + vector: Q, + vectorType: A, + x: I, + y: g, + z: B, + w: C, + r: E, + g: i, + b: o, + a: D +}) => new rD({ vector: Q, vectorType: A, x: I, y: g, z: B, w: C, r: E, g: i, b: o, a: D }), g0 = (Q) => new RD({ a: Q }), Q0 = (Q, A) => new kD({ a: Q, b: A }), B0 = (Q, A) => new YD({ vector: Q, select: A }), C0 = (Q, A) => new JD({ a: Q, b: A }), E0 = (Q, A) => new UD({ a: Q, b: A }), i0 = (Q) => new LD({ a: Q }), D0 = (Q) => new nD({ a: Q }), o0 = (Q) => new HD({ a: Q }); +class hD extends r { + constructor({ a: A }) { + super({ a: A, outTypeFunc: (I) => "float", outKey: "length" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.length} = length(${I.a});` + ]; } } -const qy = () => { - throw new Error("Not implemented"); -}, xy = () => { - throw new Error("Not implemented"); -}, ly = () => { - throw new Error("Not implemented"); -}, py = () => { - throw new Error("Not implemented"); -}, fy = () => { - throw new Error("Not implemented"); -}, by = () => { - throw new Error("Not implemented"); -}, Py = (Q, A) => new hw({ texture: Q, lod: A }), uy = (Q, A, I) => new Rw({ texture: Q, coord: A, bias: I }), Ty = (Q, A, I) => new kw({ texture: Q, coord: A, lod: I }); -class hw extends d { - constructor({ texture: A, lod: I }) { - const g = CA(A); - super({ - inTypes: { texture: g, lod: "int" }, - outTypes: { size: Fw(g) }, - inputs: { texture: A, lod: I }, - statements: ({ inputs: B, outputs: C }) => [ - `${C.size} = textureSize(${B.texture}, ${B.lod ?? "0"});` - ] - }); - } - dynoOut() { - return new V(this, "size"); +class yD extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "distance", outTypeFunc: (g, B) => "float" }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.distance} = distance(${g.a}, ${g.b});` + ]; } } -class Rw extends d { - constructor({ - texture: A, - coord: I, - bias: g - }) { - const B = CA(A); - super({ - inTypes: { - texture: B, - coord: Oy(B), - bias: "float" - }, - outTypes: { sample: aw(B) }, - inputs: { texture: A, coord: I, bias: g }, - statements: ({ inputs: C, outputs: E }) => [ - `${E.sample} = texture(${C.texture}, ${C.coord}${C.bias ? `, ${C.bias}` : ""});` - ] - }); - } - dynoOut() { - return new V(this, "sample"); +class cD extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "dot", outTypeFunc: (g, B) => "float" }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.dot} = dot(${g.a}, ${g.b});` + ]; } } -class kw extends d { - constructor({ - texture: A, - coord: I, - lod: g - }) { - const B = CA(A); - super({ - inTypes: { - texture: B, - coord: Fw(B), - lod: "int" - }, - outTypes: { texel: aw(B) }, - inputs: { texture: A, coord: I, lod: g }, - statements: ({ inputs: C, outputs: E }) => [ - `${E.texel} = texelFetch(${C.texture}, ${C.coord}, ${C.lod ?? "0"});` - ] - }); - } - dynoOut() { - return new V(this, "texel"); +class SD extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "cross", outTypeFunc: (g, B) => "vec3" }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.cross} = cross(${g.a}, ${g.b});` + ]; } } -function Fw(Q) { - switch (Q) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DShadow": - case "samplerCubeShadow": - return "ivec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DArrayShadow": - return "ivec3"; - default: - throw new Error(`Invalid texture type: ${Q}`); +class FD extends r { + constructor({ a: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "normalize" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.normalize} = normalize(${I.a});` + ]; } } -function Oy(Q) { - switch (Q) { - case "sampler2D": - case "usampler2D": - case "isampler2D": - return "vec2"; - case "sampler3D": - case "usampler3D": - case "isampler3D": - case "samplerCube": - case "usamplerCube": - case "isamplerCube": - case "sampler2DArray": - case "usampler2DArray": - case "isampler2DArray": - case "sampler2DShadow": - return "vec3"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "vec4"; - default: - throw new Error(`Invalid texture type: ${Q}`); - } +function s0(Q) { + if (Q === "vec3") + return "vec2"; + if (Q === "vec4") + return "vec3"; + throw new Error("Invalid type"); } -function aw(Q) { - switch (Q) { - case "sampler2D": - case "sampler2DArray": - case "sampler3D": - case "samplerCube": - case "sampler2DShadow": - return "vec4"; - case "usampler2D": - case "usampler2DArray": - case "usampler3D": - case "usamplerCube": - return "uvec4"; - case "isampler2D": - case "isampler2DArray": - case "isampler3D": - case "isamplerCube": - return "ivec4"; - case "samplerCubeShadow": - case "sampler2DArrayShadow": - return "float"; - default: - throw new Error(`Invalid texture type: ${Q}`); +class RD extends r { + constructor({ a: A }) { + super({ + a: A, + outTypeFunc: (I) => s0(I), + outKey: "projected" + }), this.statements = ({ inputs: I, outputs: g }) => { + if (this.inTypes.a === "vec3") + return [`${g.projected} = ${I.a}.xy / ${I.a}.z;`]; + if (this.inTypes.a === "vec4") + return [`${g.projected} = ${I.a}.xyz / ${I.a}.w;`]; + throw new Error("Invalid type"); + }; } } -const my = (Q) => new Sw({ degrees: Q }), Zy = (Q) => new Nw({ radians: Q }), PQ = (Q) => new cw({ radians: Q }), Vy = (Q) => new Mw({ radians: Q }), Xy = (Q) => new Jw({ radians: Q }), Wy = (Q) => new Uw({ sin: Q }), jy = (Q) => new tw({ cos: Q }), vy = (Q) => new Hw({ tan: Q }), zy = (Q, A) => new Lw({ y: Q, x: A }), _y = (Q) => new Yw({ x: Q }), $y = (Q) => new Kw({ x: Q }), Ah = (Q) => new ew({ x: Q }), Ih = (Q) => new rw({ x: Q }), gh = (Q) => new nw({ x: Q }), Qh = (Q) => new dw({ x: Q }); -class Sw extends e { - constructor({ degrees: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "radians" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.radians} = radians(${I.a});` - ]; - } +function w0(Q) { + if (Q === "float") return "vec2"; + if (Q === "vec2") return "vec3"; + if (Q === "vec3") return "vec4"; + throw new Error("Invalid type"); } -class Nw extends e { - constructor({ radians: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "degrees" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.degrees} = degrees(${I.a});` +class kD extends DA { + constructor({ a: A, b: I }) { + const g = CA(A), B = w0(g); + super({ a: A, b: I, outKey: "extend", outTypeFunc: () => B }), this.statements = ({ inputs: C, outputs: E }) => [ + `${E.extend} = ${B}(${C.a}, ${C.b});` ]; } } -class cw extends e { - constructor({ radians: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "sin" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.sin} = sin(${I.a});` +class eD extends uI { + constructor({ a: A, b: I, c: g }) { + super({ + a: A, + b: I, + c: g, + outKey: "forward", + outTypeFunc: (B, C, E) => B + }), this.statements = ({ inputs: B, outputs: C }) => [ + `${C.forward} = faceforward(${B.a}, ${B.b}, ${B.c});` ]; } } -class Mw extends e { - constructor({ radians: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "cos" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.cos} = cos(${I.a});` +class ND extends DA { + constructor({ + incident: A, + normal: I + }) { + super({ + a: A, + b: I, + outKey: "reflection", + outTypeFunc: (g, B) => g + }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.reflection} = reflect(${g.a}, ${g.b});` ]; } } -class Jw extends e { - constructor({ radians: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "tan" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.tan} = tan(${I.a});` +class MD extends uI { + constructor({ + incident: A, + normal: I, + eta: g + }) { + super({ + a: A, + b: I, + c: g, + outKey: "refraction", + outTypeFunc: (B, C, E) => B + }), this.statements = ({ inputs: B, outputs: C }) => [ + `${C.refraction} = refract(${B.a}, ${B.b}, ${B.c});` ]; } } -class Uw extends e { - constructor({ sin: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "asin" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.asin} = asin(${I.a});` +class JD extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "product", outTypeFunc: (g, B) => g }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.product} = matrixCompMult(${A}, ${I});` ]; } } -class tw extends e { - constructor({ cos: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "acos" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.acos} = acos(${I.a});` - ]; +function a0(Q, A) { + if (Q === "vec2") { + if (A === "vec2") return "mat2"; + if (A === "vec3") return "mat3x2"; + if (A === "vec4") return "mat4x2"; + } + if (Q === "vec3") { + if (A === "vec2") return "mat2x3"; + if (A === "vec3") return "mat3"; + if (A === "vec4") return "mat4x3"; + } + if (Q === "vec4") { + if (A === "vec2") return "mat2x4"; + if (A === "vec3") return "mat3x4"; + if (A === "vec4") return "mat4"; } + throw new Error(`Invalid outer type: ${Q}, ${A}`); } -class Hw extends e { - constructor({ tan: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "atan" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.atan} = atan(${I.a});` +class UD extends DA { + constructor({ a: A, b: I }) { + super({ a: A, b: I, outKey: "outer", outTypeFunc: a0 }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.outer} = outerProduct(${g.a}, ${g.b});` ]; } } -class Lw extends DA { - constructor({ y: A, x: I }) { - super({ - a: A, - b: I, - outTypeFunc: (g, B) => g, - outKey: "atan2" - }), this.statements = ({ inputs: g, outputs: B }) => [ - `${B.atan2} = atan2(${g.a}, ${g.b});` +function t0(Q) { + if (Q === "mat2") return "mat2"; + if (Q === "mat3") return "mat3"; + if (Q === "mat4") return "mat4"; + if (Q === "mat2x2") return "mat2x2"; + if (Q === "mat2x3") return "mat3x2"; + if (Q === "mat2x4") return "mat4x2"; + if (Q === "mat3x2") return "mat2x3"; + if (Q === "mat3x3") return "mat3x3"; + if (Q === "mat3x4") return "mat4x3"; + if (Q === "mat4x2") return "mat2x4"; + if (Q === "mat4x3") return "mat3x4"; + if (Q === "mat4x4") return "mat4x4"; + throw new Error(`Invalid transpose type: ${Q}`); +} +class LD extends r { + constructor({ a: A }) { + super({ a: A, outKey: "transpose", outTypeFunc: t0 }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.transpose} = transpose(${I.a});` ]; } } -class Yw extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "sinh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.sinh} = sinh(${I.a});` +class nD extends r { + constructor({ a: A }) { + super({ a: A, outKey: "det", outTypeFunc: (I) => "float" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.det} = determinant(${I.a});` ]; } } -class Kw extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "cosh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.cosh} = cosh(${I.a});` +class HD extends r { + constructor({ a: A }) { + super({ a: A, outKey: "inverse", outTypeFunc: (I) => I }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.inverse} = inverse(${A});` ]; } } -class ew extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "tanh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.tanh} = tanh(${I.a});` - ]; +function G0(Q) { + const A = (I) => I; + switch (Q) { + case "vec2": + return A({ x: "float", y: "float", r: "float", g: "float" }); + case "vec3": + return A({ + x: "float", + y: "float", + z: "float", + r: "float", + g: "float", + b: "float" + }); + case "vec4": + return A({ + x: "float", + y: "float", + z: "float", + w: "float", + r: "float", + g: "float", + b: "float", + a: "float" + }); + case "ivec2": + return A({ x: "int", y: "int", r: "int", g: "int" }); + case "ivec3": + return A({ + x: "int", + y: "int", + z: "int", + r: "int", + g: "int", + b: "int" + }); + case "ivec4": + return A({ + x: "int", + y: "int", + z: "int", + w: "int", + r: "int", + g: "int", + b: "int", + a: "int" + }); + case "uvec2": + return A({ x: "uint", y: "uint", r: "uint", g: "uint" }); + case "uvec3": + return A({ + x: "uint", + y: "uint", + z: "uint", + r: "uint", + g: "uint", + b: "uint" + }); + case "uvec4": + return A({ + x: "uint", + y: "uint", + z: "uint", + w: "uint", + r: "uint", + g: "uint", + b: "uint", + a: "uint" + }); + default: + throw new Error(`Invalid vector type: ${Q}`); } } -class rw extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "asinh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.asinh} = asinh(${I.a});` - ]; +class KD extends l { + constructor({ vector: A }) { + const g = { vector: CA(A) }, B = G0(g.vector); + super({ inTypes: g, outTypes: B, inputs: { vector: A } }), this.statements = ({ inputs: C, outputs: E }) => { + const { x: i, y: o, z: D, w, r: s, g: t, b: G, a: c } = E, { vector: h } = C; + return [ + i ? `${i} = ${h}.x;` : null, + o ? `${o} = ${h}.y;` : null, + D ? `${D} = ${h}.z;` : null, + w ? `${w} = ${h}.w;` : null, + s ? `${s} = ${h}.r;` : null, + t ? `${t} = ${h}.g;` : null, + G ? `${G} = ${h}.b;` : null, + c ? `${c} = ${h}.a;` : null + ].filter(Boolean); + }; } } -class nw extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "acosh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.acosh} = acosh(${I.a});` - ]; +class rD extends l { + constructor({ + vector: A, + vectorType: I, + x: g, + y: B, + z: C, + w: E, + r: i, + g: o, + b: D, + a: w + }) { + if (!A && !I) + throw new Error("Either vector or vectorType must be provided"); + const s = I ?? CA(A), t = vB(s), G = XB(s), c = { + vector: s, + x: t, + y: t, + r: t, + g: t + }, h = { vector: A, x: g, y: B, r: i, g: o }; + G >= 3 && (Object.assign(c, { z: t, b: t }), Object.assign(h, { z: C, b: D })), G >= 4 && (Object.assign(c, { w: t, a: t }), Object.assign(h, { w: E, a: w })), super({ inTypes: c, outTypes: { vector: s }, inputs: h }), this.statements = ({ inputs: y, outputs: S }) => { + const { vector: F } = S, { + vector: e, + x: k, + y: R, + z: N, + w: U, + r: M, + g: J, + b: H, + a: n + } = y, L = [ + `${F}.x = ${k ?? M ?? (e ? `${e}.x` : gg(t))};`, + `${F}.y = ${R ?? J ?? (e ? `${e}.y` : gg(t))};` + ]; + return G >= 3 && L.push( + `${F}.z = ${N ?? H ?? (e ? `${e}.z` : gg(t))};` + ), G >= 4 && L.push( + `${F}.w = ${U ?? n ?? (e ? `${e}.w` : gg(t))};` + ), L; + }; + } + dynoOut() { + return new Z( + this, + "vector" + ); } } -class dw extends e { - constructor({ x: A }) { - super({ a: A, outTypeFunc: (I) => I, outKey: "atanh" }), this.statements = ({ inputs: I, outputs: g }) => [ - `${g.atanh} = atanh(${I.a});` +function h0(Q, A) { + let I = null; + if (eg(Q) ? I = A.length === 1 ? "float" : A.length === 2 ? "vec2" : A.length === 3 ? "vec3" : A.length === 4 ? "vec4" : null : dA(Q) ? I = A.length === 1 ? "int" : A.length === 2 ? "ivec2" : A.length === 3 ? "ivec3" : A.length === 4 ? "ivec4" : null : lA(Q) && (I = A.length === 1 ? "uint" : A.length === 2 ? "uvec2" : A.length === 3 ? "uvec3" : A.length === 4 ? "uvec4" : null), I == null) + throw new Error(`Invalid swizzle: ${A}`); + return I; +} +class YD extends r { + constructor({ vector: A, select: I }) { + super({ + a: A, + outKey: "swizzle", + outTypeFunc: (g) => h0(g, I) + }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.swizzle} = ${g.a}.${I};` ]; } } -const rk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - Abs: BD, - Acos: tw, - Acosh: nw, - Add: vE, - All: bD, - And: YD, - Any: fD, - Asin: Uw, - Asinh: rw, - Atan: Hw, - Atan2: Lw, - Atanh: dw, - BVec2: Ii, - BVec3: gi, - BVec4: Qi, - BinaryOp: DA, - Bool: zD, - Ceil: DD, - Clamp: cD, - Combine: mi, - CombineCovSplat: $C, - CombineGsplat: WC, - CompMult: fi, - CompXor: TD, - Compilation: yC, - Cos: Mw, - Cosh: Kw, - CovSplat: eA, - Cross: ri, - DebugColorHue: iw, - Degrees: Nw, - Determinant: ui, - Distance: Ki, - Div: $E, - Dot: ei, - Dyno: d, - DynoBlock: hI, - DynoBool: bI, - DynoBvec2: sE, - DynoBvec3: RE, - DynoBvec4: aE, - DynoConst: GC, - DynoFloat: pI, - DynoInt: EI, - DynoIsampler2D: nE, - DynoIsampler2DArray: qE, - DynoIsampler3D: pE, - DynoIsamplerCube: PE, - DynoIvec2: yE, - DynoIvec3: FE, - DynoIvec4: NE, - DynoLiteral: zI, - DynoMat2: cE, - DynoMat2x2: ME, - DynoMat2x3: JE, - DynoMat2x4: UE, - DynoMat3: sB, - DynoMat3x2: tE, - DynoMat3x3: HE, - DynoMat3x4: LE, - DynoMat4: YE, - DynoMat4x2: KE, - DynoMat4x3: eE, - DynoMat4x4: rE, - DynoOutput: V, - DynoProgram: DQ, - DynoProgramTemplate: Fg, - DynoRemapIndex: _i, - DynoSampler2D: dE, - DynoSampler2DArray: xE, - DynoSampler2DArrayShadow: OE, - DynoSampler2DShadow: TE, - DynoSampler3D: fE, - DynoSamplerCube: uE, - DynoSamplerCubeShadow: mE, - DynoUint: oE, - DynoUniform: x, - DynoUsampler2D: EQ, - DynoUsampler2DArray: dA, - DynoUsampler3D: lE, - DynoUsamplerCube: bE, - DynoUvec2: GE, - DynoUvec3: kE, - DynoUvec4: SE, - DynoValue: UI, - DynoVec2: hE, - DynoVec3: DI, - DynoVec4: mI, - Equal: lD, - Exp: GD, - Exp2: yD, - ExtendVec: qi, - FaceForward: xi, - Float: Ai, - FloatBitsToInt: ki, - FloatBitsToUint: Fi, - Floor: ED, - Fract: oD, - GreaterThan: qD, - GreaterThanEqual: xD, - Gsplat: Z, - GsplatNormal: vC, - GsplatToCovSplat: VC, - Hash: $i, - Hash2: Aw, - Hash3: Iw, - Hash4: gw, - HashFloat: Qw, - HashVec2: Bw, - HashVec3: Cw, - HashVec4: Ew, - IMod: AD, - IVec2: Bi, - IVec3: Ci, - IVec4: Ei, - Int: _D, - IntBitsToFloat: ai, - Inverse: Ti, - InverseSqrt: aD, - IsInf: HD, - IsNan: tD, - Length: Yi, - LessThan: nD, - LessThanEqual: dD, - Log: hD, - Log2: RD, - Mat2: yi, - Mat3: hi, - Mat4: Ri, - Max: ND, - Min: SD, - Mix: MD, - Mod: ID, - Modf: gD, - Mul: _E, - Neg: QD, - Normalize: ni, - NormalizedDepth: Dw, - Not: rD, - NotEqual: pD, - NumCovSplats: mC, - NumExtSplats: TC, - NumPackedSplats: fC, - Or: KD, - Outer: bi, - OutputCovSplat: DE, - OutputExtCovSplat: wE, - OutputExtendedSplat: iE, - OutputPackedSplat: EE, - OutputRgba8: oB, - PackHalf2x16: Ui, - PackSnorm2x16: Ni, - PackUnorm2x16: Mi, - PagedSplatTexCoord: IE, - PcgHash: _A, - PcgMix: Bg, - PcgNext: zA, - Pow: sD, - ProjectH: di, - Radians: Sw, - ReadCovSplat: ZC, - ReadExtSplat: OC, - ReadPackedSplat: PC, - ReadPackedSplatRange: uC, - ReflectVec: li, - RefractVec: pi, - Round: wD, - Select: PD, - Shl: mD, - Shr: OD, - Sign: CD, - SimpleCast: tA, - Sin: cw, - Sinh: Yw, - Smoothstep: UD, - SplatTexCoord: AE, - Split: Oi, - SplitCovSplat: _C, - SplitGsplat: XC, - Sqr: kD, - Sqrt: FD, - Step: JD, - Sub: zE, - Swizzle: Zi, - TCovSplats: xC, - TExtSplats: BB, - TPackedSplats: tg, - Tan: Jw, - Tanh: ew, - TexelFetch: kw, - Texture: Rw, - TextureSize: hw, - TransformDir: Gw, - TransformGsplat: zC, - TransformPosition: sw, - TransformQuaternion: yw, - Transpose: Pi, - TrinaryOp: OI, - Trunc: iD, - UVec2: Di, - UVec3: ii, - UVec4: wi, - Uint: $D, - UintBitsToFloat: Si, - UintToRgba8: Hi, - UnaryOp: e, - UnpackHalf2x16: ti, - UnpackSnorm2x16: ci, - UnpackUnorm2x16: Ji, - Vec2: oi, - Vec3: si, - Vec4: Gi, - Xor: eD, - abs: g0, - acos: jy, - acosh: gh, - add: qA, - all: q0, - and: M0, - any: d0, - arrayIndex: fy, - arrayLength: by, - asin: Wy, - asinh: Ih, - atan: vy, - atan2: zy, - atanh: Qh, - bool: f0, - bvec2: u0, - bvec3: T0, - bvec4: O0, - ceil: C0, - clamp: F0, - combine: yI, - combineCovSplat: iB, - combineGsplat: CI, - comment: py, - compMult: Ry, - compXor: x0, - cos: Vy, - cosh: $y, - cross: iy, - debugColorHue: ny, - defineCovSplat: LI, - defineExtSplats: DB, - defineGsplat: HA, - defineGsplatNormal: jC, - definePackedSplats: CQ, - degrees: Zy, - determinant: ay, - distance: Dy, - div: pg, - dot: Li, - dyno: gQ, - dynoBlock: cA, - dynoBool: Ps, - dynoBvec2: Os, - dynoBvec3: Xs, - dynoBvec4: vs, - dynoConst: v, - dynoDeclare: vQ, - dynoFloat: wI, - dynoFor: ly, - dynoIf: qy, - dynoInt: Ts, - dynoIsampler2D: yG, - dynoIsampler2DArray: kG, - dynoIsampler3D: SG, - dynoIsamplerCube: MG, - dynoIvec2: Zs, - dynoIvec3: js, - dynoIvec4: _s, - dynoLiteral: ug, - dynoMat2: AG, - dynoMat2x2: IG, - dynoMat2x3: gG, - dynoMat2x4: QG, - dynoMat3: BG, - dynoMat3x2: CG, - dynoMat3x3: EG, - dynoMat3x4: DG, - dynoMat4: iG, - dynoMat4x2: wG, - dynoMat4x3: oG, - dynoMat4x4: sG, - dynoSampler2D: hG, - dynoSampler2DArray: FG, - dynoSampler2DArrayShadow: tG, - dynoSampler2DShadow: UG, - dynoSampler3D: NG, - dynoSamplerCube: JG, - dynoSamplerCubeShadow: HG, - dynoSwitch: xy, - dynoUint: us, - dynoUsampler2D: GG, - dynoUsampler2DArray: RG, - dynoUsampler3D: aG, - dynoUsamplerCube: cG, - dynoUvec2: ms, - dynoUvec3: Ws, - dynoUvec4: zs, - dynoVec2: Vs, - dynoVec3: cI, - dynoVec4: $s, - equal: r0, - exp: w0, - exp2: o0, - extendVec: yy, - faceforward: wy, - float: ZD, - floatBitsToInt: WD, - floatBitsToUint: jD, - floor: B0, - fract: fg, - greaterThan: e0, - greaterThanEqual: LD, - gsplatNormal: qQ, - gsplatToCovSplat: Xg, - hash: Vi, - hash2: Xi, - hash3: Wi, - hash4: ji, - hashFloat: ey, - hashVec2: ry, - hashVec3: vi, - hashVec4: bQ, - imod: pQ, - int: b0, - intBitsToFloat: $0, - inverse: Sy, - inversesqrt: R0, - isAllFloatType: HI, - isBoolType: uI, - isFloatType: Mg, - isInf: c0, - isIntType: xA, - isMat2: KI, - isMat3: eI, - isMat4: rI, - isMatFloatType: DC, - isNan: N0, - isScalarType: TI, - isUintType: lA, - isVector2Type: gg, - isVector3Type: Qg, - isVector4Type: Jg, - isVectorType: xo, - ivec2: m0, - ivec3: Z0, - ivec4: V0, - length: Ey, - lessThan: Y0, - lessThanEqual: K0, - literalNegOne: bo, - literalOne: fo, - literalZero: Dg, - log: s0, - log2: G0, - mat2: v0, - mat3: z0, - mat4: _0, - max: WE, - min: k0, - mix: jE, - mod: XE, - modf: I0, - mul: kA, - neg: yB, - normalize: ag, - normalizedDepth: zi, - not: t0, - notEqual: n0, - numCovSplats: ns, - numExtSplats: rs, - numPackedSplats: es, - numberAsFloat: AA, - numberAsInt: MA, - numberAsUint: JA, - or: J0, - outer: ky, - outputCovSplat: gE, - outputCovSplatDepth: CE, - outputExtCovSplat: lQ, - outputExtendedSplat: QE, - outputPackedSplat: wB, - outputRgba8: ls, - outputSplatDepth: BE, - packHalf2x16: vD, - packSnorm2x16: Iy, - packUnorm2x16: Qy, - pagedSplatTexCoord: xQ, - pcgHash: Ky, - pcgMix: Ly, - pcgNext: Yy, - pow: i0, - projectH: Gy, - radians: my, - readCovSplat: ds, - readExtSplat: pC, - readPackedSplat: _I, - readPackedSplatRange: lC, - reflectVec: oy, - refractVec: sy, - remapIndex: Hy, - round: D0, - sameSizeIvec: po, - sameSizeUvec: oC, - sameSizeVec: lo, - select: hB, - shl: L0, - shr: H0, - sign: Q0, - sin: PQ, - sinh: _y, - smoothstep: S0, - splatTexCoord: EB, - split: $I, - splitCovSplat: Wg, - splitGsplat: uA, - sqr: y0, - sqrt: h0, - step: a0, - sub: iI, - swizzle: hy, - tan: Xy, - tanh: Ah, - texelFetch: Ty, - texture: uy, - textureSize: Py, - transformDir: ow, - transformGsplat: CB, - transformPos: ww, - transformQuat: dy, - transpose: Fy, - trunc: E0, - typeLiteral: sC, - uint: P0, - uintBitsToFloat: Ay, - uintToRgba8: fQ, - uniform: bs, - unindent: oA, - unindentLines: z, - unpackHalf2x16: Cy, - unpackSnorm2x16: gy, - unpackUnorm2x16: By, - uvec2: X0, - uvec3: W0, - uvec4: j0, - valType: CA, - vec2: VD, - vec3: fI, - vec4: XD, - vectorDim: wC, - vectorElementType: iC, - xor: U0 -}, Symbol.toStringTag, { value: "Module" })), rA = class rA { - constructor(A = {}) { - this.maxSplats = 0, this.numSplats = 0, this.extra = {}, this.maxSh = 3, this.isInitialized = !1, this.extArrays = [new Uint32Array(0), new Uint32Array(0)], this.textures = [rA.emptyTexture, rA.emptyTexture], this.extra = {}, this.dyno = new Bh({ extSplats: this }), this.dynoNumSh = new EI({ - key: "numSh", - value: 0, - update: () => Math.min(this.getNumSh(), this.maxSh) - }), this.initialized = Promise.resolve(this), this.reinitialize(A); +const y0 = (Q, A, I) => new uD({ index: Q, from: A, to: I }), c0 = (Q) => new _I({ value: Q }), S0 = (Q) => new WA({ state: Q }), F0 = (Q) => new jA({ state: Q }), dD = (Q) => new bD({ value: Q }), lD = (Q) => new PD({ value: Q }), xD = (Q) => new mD({ value: Q }), qD = (Q) => new TD({ value: Q }), R0 = (Q) => new OD({ value: Q }), k0 = (Q) => new ZD({ value: Q }), pD = (Q) => new vD({ value: Q }), pQ = (Q) => new XD({ value: Q }), fD = (Q, A, I) => new VD({ z: Q, zNear: A, zFar: I }).outputs.depth, e0 = (Q) => new WD({ index: Q }); +class uD extends l { + constructor({ + from: A, + to: I, + index: g + }) { + super({ + inTypes: { from: "int", to: "int", index: "int" }, + outTypes: { index: "int" }, + inputs: { from: A, to: I, index: g }, + statements: ({ inputs: B, outputs: C }) => [ + `${C.index} = ${B.index} - ${B.from} + ${B.to};` + ] + }); } - reinitialize(A) { - this.isInitialized = !1, this.extra = {}, this.maxSplats = A.maxSplats ?? 0, this.lod = A.lod, this.nonLod = A.nonLod, A.url || A.fileBytes || A.stream || A.construct ? this.initialized = this.asyncInitialize(A).then(() => (this.isInitialized = !0, this)) : (this.initialize(A), this.isInitialized = !0, this.initialized = Promise.resolve(this)); + dynoOut() { + return new Z(this, "index"); } - initialize(A) { - this.extra = A.extra ?? {}, this.lodSplats = A.lodSplats, A.extArrays ? (this.extArrays = A.extArrays, this.maxSplats = Math.floor( - Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) - ), this.numSplats = A.numSplats ?? this.maxSplats, this.maxSplats = Math.floor(this.maxSplats / P) * P, this.numSplats = Math.min( - this.maxSplats, - A.numSplats ?? Number.POSITIVE_INFINITY - ), this.updateTextures()) : (this.maxSplats = A.maxSplats ?? 0, this.numSplats = 0, this.extArrays = [new Uint32Array(0), new Uint32Array(0)]); +} +class WA extends l { + constructor({ state: A }) { + const I = CA(A); + super({ + inTypes: { state: I }, + outTypes: { state: "uint" }, + inputs: { state: A }, + globals: () => [ + wA(` + uint pcg_next(uint state) { + return state * 747796405u + 2891336453u; + } + `) + ], + statements: ({ inputs: g, outputs: B }) => { + const C = I === "uint" ? `${g.state}` : I === "int" ? `uint(${g.state})` : `floatBitsToUint(${g.state})`; + return [`${B.state} = pcg_next(${C});`]; + } + }); } - async asyncInitialize(A) { - const { - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - construct: i, - lod: w, - nonLod: s, - lodAbove: o - } = A; - this.lod = w, this.nonLod = s; - const y = new fw(); - if ((g || I || E) && await y.loadInternalAsync({ - extSplats: this, - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - onProgress: A.onProgress, - lodAbove: o - }), i) { - const h = i(this); - h instanceof Promise && await h; - } + dynoOut() { + return new Z(this, "state"); } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. - dispose() { - this.textures[0] !== rA.emptyTexture && (this.textures[0].dispose(), this.textures[0].source.data = null, this.textures[0] = rA.emptyTexture), this.textures[1] !== rA.emptyTexture && (this.textures[1].dispose(), this.textures[1].source.data = null, this.textures[1] = rA.emptyTexture), this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; - for (const A in this.extra) { - const I = this.extra[A]; - if (I instanceof x) { - const g = I.value; - g != null && g.isTexture && (g.dispose(), g.source.data = null); +} +class jA extends l { + constructor({ state: A }) { + super({ + inTypes: { state: "uint" }, + outTypes: { hash: "uint" }, + inputs: { state: A }, + globals: () => [ + wA(` + uint pcg_hash(uint state) { + uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; + return (hash >> 22u) ^ hash; + } + `) + ], + statements: ({ inputs: I, outputs: g }) => [ + `${g.hash} = pcg_hash(${I.state});` + ] + }); + } + dynoOut() { + return new Z(this, "hash"); + } +} +class _I extends l { + constructor({ value: A }) { + const I = CA(A), g = VB(I); + super({ + inTypes: { value: I }, + outTypes: { state: "uint" }, + inputs: { value: A }, + globals: () => [ + wA(` + uint pcg_mix(uint value) { + return value; + } + uint pcg_mix(uvec2 value) { + return value.x + 0x9e3779b9u * value.y; + } + uint pcg_mix(uvec3 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z; + } + uint pcg_mix(uvec4 value) { + return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w; + } + `) + ], + statements: ({ inputs: B, outputs: C }) => { + const E = lA(I) ? `${B.value}` : dA(I) ? `${g}(${B.value})` : `floatBitsToUint(${B.value})`; + return [ + `${g} bits = ${E};`, + `${C.state} = pcg_mix(bits);` + ]; } - } - this.extra = {}, this.disposeLodSplats(); + }); } - prepareFetchSplat() { + dynoOut() { + return new Z(this, "state"); } - getNumSplats() { - return this.numSplats; +} +class bD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "uint" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + let g = new _I({ value: I }).outputs.state; + return g = new WA({ state: g }).outputs.state, new jA({ state: g }).outputs; + } + }); } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; + dynoOut() { + return new Z(this, "hash"); } - getNumSh() { - return this.extra.sh1 ? this.extra.sh2 ? !this.extra.sh3a || !this.extra.sh3b ? 2 : 3 : 1 : 0; +} +class PD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "uvec2" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + let g = new _I({ value: I }).outputs.state; + g = new WA({ state: g }).outputs.state; + const B = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const C = new jA({ state: g }).outputs.hash; + return { hash: tI({ vectorType: "uvec2", x: B, y: C }) }; + } + }); } - setMaxSh(A) { - this.maxSh = A; + dynoOut() { + return new Z(this, "hash"); } - fetchSplat({ - index: A, - viewOrigin: I - }) { - let g = pC(this.dyno, A); - if (this.hasRgbDir() && I) { - const B = uA(g).outputs.center, C = ag(iI(B, I)), { sh1Texture: E, sh2Texture: D, sh3TextureA: i, sh3TextureB: w } = this.ensureShTextures(); - let { rgb: s } = qw({ - coord: EB(A), - viewDir: C, - numSh: this.dynoNumSh, - sh1Texture: E, - sh2Texture: D, - sh3TextureA: i, - sh3TextureB: w - }); - s = qA(s, uA(g).outputs.rgb), g = CI({ gsplat: g, rgb: s }); - } - return g; +} +class mD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "uvec3" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + let g = new _I({ value: I }).outputs.state; + g = new WA({ state: g }).outputs.state; + const B = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const C = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const E = new jA({ state: g }).outputs.hash; + return { hash: tI({ vectorType: "uvec3", x: B, y: C, z: E }) }; + } + }); } - ensureShTextures() { - if (!this.extra.sh1) - return {}; - let A = this.extra.sh1Texture; - if (!A) { - let C = this.extra.sh1; - const { width: E, height: D, depth: i, maxSplats: w } = BA( - C.length / 4 - ); - if (C.length < w * 4) { - const o = new Uint32Array(w * 4); - o.set(C), this.extra.sh1 = o, C = o; + dynoOut() { + return new Z(this, "hash"); + } +} +class TD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "uvec4" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + let g = new _I({ value: I }).outputs.state; + g = new WA({ state: g }).outputs.state; + const B = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const C = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const E = new jA({ state: g }).outputs.hash; + g = new WA({ state: g }).outputs.state; + const i = new jA({ state: g }).outputs.hash; + return { hash: tI({ vectorType: "uvec4", x: B, y: C, z: E, w: i }) }; } - const s = YI( - C, - E, - D, - i, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ); - A = new dA({ - value: s, - key: "sh1" - }), this.extra.sh1Texture = A; - } - if (!this.extra.sh2) - return { sh1Texture: A }; - let I = this.extra.sh2Texture; - if (!I) { - let C = this.extra.sh2; - const { width: E, height: D, depth: i, maxSplats: w } = BA( - C.length / 4 - ); - if (C.length < w * 4) { - const o = new Uint32Array(w * 4); - o.set(C), this.extra.sh2 = o, C = o; + }); + } + dynoOut() { + return new Z(this, "hash"); + } +} +class OD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "float" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + const g = dD(I); + return { hash: SA(li(g), IA("float", 1 / 2 ** 32)) }; } - const s = YI( - C, - E, - D, - i, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ); - I = new dA({ - value: s, - key: "sh2" - }), this.extra.sh2Texture = I; - } - if (!this.extra.sh3a || !this.extra.sh3b) - return { sh1Texture: A, sh2Texture: I }; - let g = this.extra.sh3TextureA; - if (!g) { - let C = this.extra.sh3a; - const { width: E, height: D, depth: i, maxSplats: w } = BA( - C.length / 4 - ); - if (C.length < w * 4) { - const o = new Uint32Array(w * 4); - o.set(C), this.extra.sh3a = o, C = o; + }); + } + dynoOut() { + return new Z(this, "hash"); + } +} +class ZD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "vec2" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + const g = lD(I); + return { hash: SA(xi(g), IA("float", 1 / 2 ** 32)) }; } - const s = YI( - C, - E, - D, - i, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ); - g = new dA({ - value: s, - key: "sh3" - }), this.extra.sh3TextureA = g; - } - let B = this.extra.sh3TextureB; - if (!B) { - let C = this.extra.sh3b; - const { width: E, height: D, depth: i, maxSplats: w } = BA( - C.length / 4 - ); - if (C.length < w * 4) { - const o = new Uint32Array(w * 4); - o.set(C), this.extra.sh3b = o, C = o; + }); + } + dynoOut() { + return new Z(this, "hash"); + } +} +class vD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "vec3" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + const g = xD(I); + return { hash: SA(qI(g), IA("float", 1 / 2 ** 32)) }; } - const s = YI( - C, - E, - D, - i, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ); - B = new dA({ - value: s, - key: "sh3b" - }), this.extra.sh3TextureB = B; - } - return { sh1Texture: A, sh2Texture: I, sh3TextureA: g, sh3TextureB: B }; + }); } - // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(A) { - const I = A <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(A, 2 * this.maxSplats) - ), g = this.extArrays[0] ? this.extArrays[0].length / 4 : 0; - if (!this.extArrays[0] || I > g) { - this.maxSplats = BA(I).maxSplats; - const B = new Uint32Array(this.maxSplats * 4), C = new Uint32Array(this.maxSplats * 4); - this.extArrays[0] && (B.set(this.extArrays[0]), C.set(this.extArrays[1])), this.extArrays[0] = B, this.extArrays[1] = C; - } - return this.extArrays; + dynoOut() { + return new Z(this, "hash"); } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(A) { - if (A >= this.numSplats) - throw new Error("Invalid index"); - return Tg(this.extArrays, A); - } - // Set all ExtSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(A, I, g, B, C, E) { - const D = this.ensureSplats(A + 1); - rQ( - D, - A, - I.x, - I.y, - I.z, - g.x, - g.y, - g.z, - B.x, - B.y, - B.z, - B.w, - C, - E.r, - E.g, - E.b - ), this.numSplats = Math.max(this.numSplats, A + 1); +} +class XD extends wI { + constructor({ value: A }) { + super({ + inTypes: { value: CA(A) }, + outTypes: { hash: "vec4" }, + inputs: { value: A }, + construct: ({ value: I }) => { + if (!I) + throw new Error("value is required"); + const g = qD(I); + return { hash: SA(qi(g), IA("float", 1 / 2 ** 32)) }; + } + }); } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(A, I, g, B, C) { - const E = this.ensureSplats(this.numSplats + 1); - rQ( - E, - this.numSplats, - A.x, - A.y, - A.z, - I.x, - I.y, - I.z, - g.x, - g.y, - g.z, - g.w, - B, - C.r, - C.g, - C.b - ), ++this.numSplats; + dynoOut() { + return new Z(this, "hash"); } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(A) { - if (this.numSplats) - for (let I = 0; I < this.numSplats; ++I) { - const g = Tg(this.extArrays, I); - A( - I, - g.center, - g.scales, - g.quaternion, - g.opacity, - g.color - ); - } +} +class VD extends l { + constructor({ + z: A, + zNear: I, + zFar: g + }) { + super({ + inTypes: { z: "float", zNear: "float", zFar: "float" }, + outTypes: { depth: "float" }, + inputs: { z: A, zNear: I, zFar: g }, + statements: ({ inputs: B, outputs: C }) => [ + `float clamped = clamp(${B.z}, ${B.zNear}, ${B.zFar});`, + `${C.depth} = (log2(clamped + 1.0) - log2(${B.zNear} + 1.0)) / (log2(${B.zFar} + 1.0) - log2(${B.zNear} + 1.0));` + ] + }); } - // Check if source texture needs to be created/updated - updateTextures() { - if (this.textures[0] !== rA.emptyTexture) { - const { width: A, height: I, depth: g } = this.textures[0].image; - this.maxSplats !== A * I * g && (this.textures[0].dispose(), this.textures[0] = rA.emptyTexture, this.textures[1].dispose(), this.textures[1] = rA.emptyTexture); - } - if (this.textures[0] === rA.emptyTexture) { - const { width: A, height: I, depth: g } = BA(this.maxSplats); - this.textures[0] = YI( - this.extArrays[0], - A, - I, - g, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ), this.textures[1] = YI( - this.extArrays[1], - A, - I, - g, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ); - } else this.extArrays[0].buffer !== this.textures[0].image.data.buffer && (this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer), this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer), this.textures[0].needsUpdate = !0, this.textures[1].needsUpdate = !0); + dynoOut() { + return new Z(this, "depth"); } - extractSplats(A, I) { - const g = BA(A.length).maxSplats, B = new rA({ maxSplats: g }); - for (let C = 0; C < A.length; C++) { - const E = this.getSplat(A[C]); - if (I) { - let D = (A[C] >>> 16) * 0.61803398875; - D = D - Math.floor(D); - const i = Math.max(0, Math.min(1, Math.abs(D * 6 - 3) - 1)), w = Math.max(0, Math.min(1, Math.abs(D * 6 + 1) - 1)), s = Math.max(0, Math.min(1, Math.abs(D * 6 - 1) - 1)); - E.color.r *= i, E.color.g *= w, E.color.b *= s; - } - B.pushSplat( - E.center, - E.scales, - E.quaternion, - E.opacity, - E.color - ); - } - return B; +} +class WD extends l { + constructor({ index: A }) { + super({ + inTypes: { index: "int" }, + outTypes: { color: "vec3" }, + inputs: { index: A }, + statements: ({ inputs: I, outputs: g }) => [ + `${g.color} = debugColorHue(uint(${I.index}));` + ] + }); } - disposeLodSplats() { - this.lodSplats && (this.lodSplats.dispose(), this.lodSplats = void 0); + dynoOut() { + return new Z(this, "color"); } - async createLodSplats({ - rgbaArray: A, - quality: I - } = {}) { - const g = typeof this.lod == "number" ? Math.max(1.1, Math.min(2, this.lod)) : I ? 1.75 : 1.5, B = [this.extArrays[0].slice(), this.extArrays[1].slice()], C = A ? (await A.getArray()).slice() : void 0, E = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 - }, D = await BQ.withWorker(async (w) => await w.call( - I ? "qualityLodExtSplats" : "tinyLodExtSplats", - { - numSplats: this.numSplats, - extArrays: B, - extra: E, - lodBase: g, - rgba: C +} +const jD = (Q, { + scale: A, + scales: I, + rotate: g, + translate: B +}) => new _D({ position: Q, scale: A, scales: I, rotate: g, translate: B }).outputs.position, zD = (Q, { + scale: A, + scales: I, + rotate: g +}) => new $D({ dir: Q, scale: A, scales: I, rotate: g }).outputs.dir, N0 = (Q, { rotate: A }) => new Ao({ quaternion: Q, rotate: A }).outputs.quaternion; +class _D extends l { + constructor({ + position: A, + scale: I, + scales: g, + rotate: B, + translate: C + }) { + super({ + inTypes: { + position: "vec3", + scale: "float", + scales: "vec3", + rotate: "vec4", + translate: "vec3" + }, + outTypes: { position: "vec3" }, + inputs: { position: A, scale: I, scales: g, rotate: B, translate: C }, + statements: ({ inputs: E, outputs: i }) => { + const { position: o } = i; + if (!o) + return []; + const { scale: D, scales: w, rotate: s, translate: t } = E; + return [ + `${o} = ${E.position ?? "vec3(0.0, 0.0, 0.0)"};`, + D ? `${o} *= ${D};` : null, + w ? `${o} *= ${w};` : null, + s ? `${o} = quatVec(${s}, ${o});` : null, + t ? `${o} += ${t};` : null + ].filter(Boolean); } - )), i = new rA(D); - this.lodSplats && this.lodSplats.dispose(), this.lodSplats = i, this.nonLod = !0, this.lod = I ? "quality" : !0; + }); } -}; -rA.emptyArray = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(), rA.emptyTexture = YI( - null, - 1, - 1, - 1, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" -), rA.emptyUint32x4 = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(); -let GI = rA; -class Bh extends x { - constructor({ extSplats: A } = {}) { +} +class $D extends l { + constructor({ + dir: A, + scale: I, + scales: g, + rotate: B + }) { super({ - key: "extSplats", - type: BB, - globals: () => [DB], - value: { - textureArray1: GI.emptyTexture, - textureArray2: GI.emptyTexture, - numSplats: 0 - }, - update: (I) => { - var g, B, C; - return I.textureArray1 = ((g = this.extSplats) == null ? void 0 : g.textures[0]) ?? GI.emptyTexture, I.textureArray2 = ((B = this.extSplats) == null ? void 0 : B.textures[1]) ?? GI.emptyTexture, I.numSplats = ((C = this.extSplats) == null ? void 0 : C.numSplats) ?? 0, I; + inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" }, + outTypes: { dir: "vec3" }, + inputs: { dir: A, scale: I, scales: g, rotate: B }, + statements: ({ inputs: C, outputs: E }) => { + const { dir: i } = E; + if (!i) + return []; + const { scale: o, scales: D, rotate: w } = C; + return [ + `${i} = ${C.dir ?? "vec3(0.0, 0.0, 0.0)"};`, + o ? `${i} *= ${o};` : null, + D ? `${i} *= ${D};` : null, + w ? `${i} = quatVec(${w}, ${i});` : null + ].filter(Boolean); } - }), this.extSplats = A; + }); } } -const Ch = oA(` - vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packedData.x); - vec3 sh1_1 = decodeExtRgb(packedData.y); - vec3 sh1_2 = decodeExtRgb(packedData.z); - - return sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); +class Ao extends l { + constructor({ + quaternion: A, + rotate: I + }) { + super({ + inTypes: { quaternion: "vec4", rotate: "vec4" }, + outTypes: { quaternion: "vec4" }, + inputs: { quaternion: A, rotate: I }, + statements: ({ inputs: g, outputs: B }) => { + const { quaternion: C } = B; + return C ? [ + `${C} = ${g.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`, + I ? `${C} = quatQuat(${g.rotate}, ${C});` : null + ].filter(Boolean) : []; + } + }); } -`), Eh = oA(` - vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { - vec3 sh1_0 = decodeExtRgb(packed1.x); - vec3 sh1_1 = decodeExtRgb(packed1.y); - vec3 sh1_2 = decodeExtRgb(packed1.z); - - vec3 sh2_0 = decodeExtRgb(packed1.w); - vec3 sh2_1 = decodeExtRgb(packed2.x); - vec3 sh2_2 = decodeExtRgb(packed2.y); - vec3 sh2_3 = decodeExtRgb(packed2.z); - vec3 sh2_4 = decodeExtRgb(packed2.w); - - vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - - vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - - return sh1Rgb + sh2Rgb; +} +const M0 = () => { + throw new Error("Not implemented"); +}, J0 = () => { + throw new Error("Not implemented"); +}, U0 = () => { + throw new Error("Not implemented"); +}, L0 = () => { + throw new Error("Not implemented"); +}, n0 = () => { + throw new Error("Not implemented"); +}, H0 = () => { + throw new Error("Not implemented"); +}, K0 = (Q, A) => new Io({ texture: Q, lod: A }), r0 = (Q, A, I) => new go({ texture: Q, coord: A, bias: I }), Y0 = (Q, A, I) => new Qo({ texture: Q, coord: A, lod: I }); +class Io extends l { + constructor({ texture: A, lod: I }) { + const g = CA(A); + super({ + inTypes: { texture: g, lod: "int" }, + outTypes: { size: Bo(g) }, + inputs: { texture: A, lod: I }, + statements: ({ inputs: B, outputs: C }) => [ + `${C.size} = textureSize(${B.texture}, ${B.lod ?? "0"});` + ] + }); } -`), Dh = oA(` - vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { - vec3 sh3_0 = decodeExtRgb(packedA.x); - vec3 sh3_1 = decodeExtRgb(packedA.y); - vec3 sh3_2 = decodeExtRgb(packedA.z); - vec3 sh3_3 = decodeExtRgb(packedA.w); - vec3 sh3_4 = decodeExtRgb(packedB.x); - vec3 sh3_5 = decodeExtRgb(packedB.y); - vec3 sh3_6 = decodeExtRgb(packedB.z); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + dynoOut() { + return new Z(this, "size"); } -`); -function qw({ - coord: Q, - viewDir: A, - numSh: I, - sh1Texture: g, - sh2Texture: B, - sh3TextureA: C, - sh3TextureB: E -}) { - return new d({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3TextureA: "usampler2DArray", - sh3TextureB: "usampler2DArray" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord: Q, - viewDir: A, - numSh: I, - sh1Texture: g, - sh2Texture: B, - sh3TextureA: C, - sh3TextureB: E - }, - globals: () => [ - Ch, - Eh, - Dh - ], - statements: ({ inputs: D, outputs: i }) => { - const w = ["vec3 rgb = vec3(0.0);"]; - return D.sh1Texture && (D.sh2Texture ? (w.push( - ...z(` - if (${D.numSh} == 1) { - rgb = evaluateExtSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0), ${D.viewDir}); - } else if (${D.numSh} >= 2) { - rgb = evaluateExtSH12(texelFetch(${D.sh1Texture}, ${D.coord}, 0), texelFetch(${D.sh2Texture}, ${D.coord}, 0), ${D.viewDir}); - `) - ), D.sh3TextureA && D.sh3TextureB && w.push( - ...z(` - if (${D.numSh} >= 3) { - rgb += evaluateExtSH3(texelFetch(${D.sh3TextureA}, ${D.coord}, 0), texelFetch(${D.sh3TextureB}, ${D.coord}, 0), ${D.viewDir}); - } - `) - ), w.push("}")) : w.push( - ...z(` - if (${D.numSh} >= 1) { - rgb = evaluateExtSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0), ${D.viewDir}); - } - `) - )), w.push(`${i.rgb} = rgb;`), w; - } - }).outputs; -} -function YI(Q, A, I, g, B, C, E) { - const D = new G.DataArrayTexture( - Q, - A, - I, - g - ); - return D.format = B, D.type = C, D.internalFormat = E, D.needsUpdate = !0, D; -} -function rB(Q) { - const A = RA.decode_rad_header(Q); - if (A[2]) - throw xB(A[1]); - return xB(A[0]); -} -function ih() { - return RA.get_raycast_buffer(); } -function wh() { - return RA.get_raycast_buffer2(); -} -function oh(Q, A, I, g, B, C, E, D, i, w) { - return RA.raycast_ext_buffers(Q, A, I, g, B, C, E, D, i, w); -} -function sh(Q, A, I, g, B, C, E, D, i, w, s, o, y) { - return RA.raycast_packed_buffer(Q, A, I, g, B, C, E, D, i, w, s, o, y); -} -function Gh() { - return { - __proto__: null, - "./spark_rs_bg.js": { - __proto__: null, - __wbg_Error_2e59b1b37a9a34c3: function(A, I) { - return Error(Yg(A, I)); - }, - __wbg___wbindgen_throw_81fc77679af83bc6: function(A, I) { - throw new Error(Yg(A, I)); - }, - __wbg_error_a6fa202b58aa1cd3: function(A, I) { - let g, B; - try { - g = A, B = I, console.error(Yg(A, I)); - } finally { - RA.__wbindgen_free(g, B, 1); - } - }, - __wbg_length_0c32cb8543c8e4c8: function(A) { - return A.length; - }, - __wbg_length_1e701798fdcaa3b4: function(A) { - return A.length; - }, - __wbg_length_fd4646b401926788: function(A) { - return A.length; - }, - __wbg_new_227d7c05414eb861: function() { - return new Error(); - }, - __wbg_new_4f9fafbb3909af72: function() { - return new Object(); - }, - __wbg_new_f3c9df4f38f3f798: function() { - return new Array(); - }, - __wbg_new_with_length_26bffbe236bf73f9: function(A) { - return new Float32Array(A >>> 0); - }, - __wbg_prototypesetcall_3e05eb9545565046: function(A, I, g) { - Uint8Array.prototype.set.call(hh(A, I), g); - }, - __wbg_prototypesetcall_e42275e601e14eeb: function(A, I, g) { - Uint32Array.prototype.set.call(dB(A, I), g); - }, - __wbg_set_6be42768c690e380: function(A, I, g) { - A[I] = g; - }, - __wbg_set_6c60b2e8ad0e9383: function(A, I, g) { - A[I >>> 0] = g; - }, - __wbg_set_8ee2d34facb8466e: function() { - return Fh(function(A, I, g) { - return Reflect.set(A, I, g); - }, arguments); - }, - __wbg_set_a98c8da6557e63de: function(A, I, g) { - A.set(nB(I, g)); - }, - __wbg_stack_3b0d974bbf31e44f: function(A, I) { - const g = I.stack, B = ah(g, RA.__wbindgen_malloc, RA.__wbindgen_realloc), C = uQ; - qB().setInt32(A + 4, C, !0), qB().setInt32(A + 0, B, !0); - }, - __wbg_subarray_d51e89458b3fdbf6: function(A, I, g) { - return A.subarray(I >>> 0, g >>> 0); - }, - __wbindgen_cast_0000000000000001: function(A) { - return A; - }, - __wbindgen_cast_0000000000000002: function(A, I) { - return nB(A, I); - }, - __wbindgen_cast_0000000000000003: function(A, I) { - return dB(A, I); - }, - __wbindgen_cast_0000000000000004: function(A, I) { - return Yg(A, I); - }, - __wbindgen_cast_0000000000000005: function(A) { - return BigInt.asUintN(64, A); +class go extends l { + constructor({ + texture: A, + coord: I, + bias: g + }) { + const B = CA(A); + super({ + inTypes: { + texture: B, + coord: d0(B), + bias: "float" }, - __wbindgen_init_externref_table: function() { - const A = RA.__wbindgen_externrefs, I = A.grow(4); - A.set(0, void 0), A.set(I + 0, void 0), A.set(I + 1, null), A.set(I + 2, !0), A.set(I + 3, !1); - } - } - }; -} -function yh(Q) { - const A = RA.__externref_table_alloc(); - return RA.__wbindgen_externrefs.set(A, Q), A; -} -function nB(Q, A) { - return Q = Q >>> 0, Rh().subarray(Q / 4, Q / 4 + A); -} -function dB(Q, A) { - return Q = Q >>> 0, kh().subarray(Q / 4, Q / 4 + A); -} -function hh(Q, A) { - return Q = Q >>> 0, yg().subarray(Q / 1, Q / 1 + A); -} -let dI = null; -function qB() { - return (dI === null || dI.buffer.detached === !0 || dI.buffer.detached === void 0 && dI.buffer !== RA.memory.buffer) && (dI = new DataView(RA.memory.buffer)), dI; -} -let ig = null; -function Rh() { - return (ig === null || ig.byteLength === 0) && (ig = new Float32Array(RA.memory.buffer)), ig; -} -function Yg(Q, A) { - return Q = Q >>> 0, Nh(Q, A); -} -let wg = null; -function kh() { - return (wg === null || wg.byteLength === 0) && (wg = new Uint32Array(RA.memory.buffer)), wg; -} -let og = null; -function yg() { - return (og === null || og.byteLength === 0) && (og = new Uint8Array(RA.memory.buffer)), og; -} -function Fh(Q, A) { - try { - return Q.apply(this, A); - } catch (I) { - const g = yh(I); - RA.__wbindgen_exn_store(g); + outTypes: { sample: Co(B) }, + inputs: { texture: A, coord: I, bias: g }, + statements: ({ inputs: C, outputs: E }) => [ + `${E.sample} = texture(${C.texture}, ${C.coord}${C.bias ? `, ${C.bias}` : ""});` + ] + }); } -} -function ah(Q, A, I) { - if (I === void 0) { - const D = hg.encode(Q), i = A(D.length, 1) >>> 0; - return yg().subarray(i, i + D.length).set(D), uQ = D.length, i; + dynoOut() { + return new Z(this, "sample"); } - let g = Q.length, B = A(g, 1) >>> 0; - const C = yg(); - let E = 0; - for (; E < g; E++) { - const D = Q.charCodeAt(E); - if (D > 127) break; - C[B + E] = D; +} +class Qo extends l { + constructor({ + texture: A, + coord: I, + lod: g + }) { + const B = CA(A); + super({ + inTypes: { + texture: B, + coord: Bo(B), + lod: "int" + }, + outTypes: { texel: Co(B) }, + inputs: { texture: A, coord: I, lod: g }, + statements: ({ inputs: C, outputs: E }) => [ + `${E.texel} = texelFetch(${C.texture}, ${C.coord}, ${C.lod ?? "0"});` + ] + }); } - if (E !== g) { - E !== 0 && (Q = Q.slice(E)), B = I(B, g, g = E + Q.length * 3, 1) >>> 0; - const D = yg().subarray(B + E, B + g), i = hg.encodeInto(Q, D); - E += i.written, B = I(B, g, E, 1) >>> 0; + dynoOut() { + return new Z(this, "texel"); } - return uQ = E, B; -} -function xB(Q) { - const A = RA.__wbindgen_externrefs.get(Q); - return RA.__externref_table_dealloc(Q), A; } -let bg = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }); -bg.decode(); -const Sh = 2146435072; -let cQ = 0; -function Nh(Q, A) { - return cQ += A, cQ >= Sh && (bg = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }), bg.decode(), cQ = A), bg.decode(yg().subarray(Q, Q + A)); -} -const hg = new TextEncoder(); -"encodeInto" in hg || (hg.encodeInto = function(Q, A) { - const I = hg.encode(Q); - return A.set(I), { - read: Q.length, - written: I.length - }; -}); -let uQ = 0, RA; -function ch(Q, A) { - return RA = Q.exports, dI = null, ig = null, wg = null, og = null, RA.__wbindgen_start(), RA; -} -async function Mh(Q, A) { - if (typeof Response == "function" && Q instanceof Response) { - if (typeof WebAssembly.instantiateStreaming == "function") - try { - return await WebAssembly.instantiateStreaming(Q, A); - } catch (B) { - if (Q.ok && I(Q.type) && Q.headers.get("Content-Type") !== "application/wasm") - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", B); - else - throw B; - } - const g = await Q.arrayBuffer(); - return await WebAssembly.instantiate(g, A); - } else { - const g = await WebAssembly.instantiate(Q, A); - return g instanceof WebAssembly.Instance ? { instance: g, module: Q } : g; +function Bo(Q) { + switch (Q) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DShadow": + case "samplerCubeShadow": + return "ivec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DArrayShadow": + return "ivec3"; + default: + throw new Error(`Invalid texture type: ${Q}`); } - function I(g) { - switch (g) { - case "basic": - case "cors": - case "default": - return !0; - } - return !1; +} +function d0(Q) { + switch (Q) { + case "sampler2D": + case "usampler2D": + case "isampler2D": + return "vec2"; + case "sampler3D": + case "usampler3D": + case "isampler3D": + case "samplerCube": + case "usamplerCube": + case "isamplerCube": + case "sampler2DArray": + case "usampler2DArray": + case "isampler2DArray": + case "sampler2DShadow": + return "vec3"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "vec4"; + default: + throw new Error(`Invalid texture type: ${Q}`); } } -async function xw(Q) { - if (RA !== void 0) return RA; - Q !== void 0 && (Object.getPrototypeOf(Q) === Object.prototype ? { module_or_path: Q } = Q : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), Q === void 0 && (Q = new URL("data:application/wasm;base64,AGFzbQEAAAABlwM3YAN/f38Bf2ACf38Bf2ACf38AYAN/f38AYAF/AGABfwF/YAV/f39/fwBgBH9/f38AYAABb2AAAGACf38Bb2AEf39/fwF/YAZ/f39/f38AYAFvAX9gAX0BfWAFf39/fn8AYAABf2AFf39/f38Bf2ADf39vAGAGf39/f39/AX9gB39/f39/f38AYAV/f35/fwBgBX9/fH9/AGAFf399f38AYAADf39/YANvb28AYANvf28AYANvb28Bf2ADb39/AW9gAX8Bb2ADb39/AGACf28AYAF8AW9gAX4Bb2AKf39/f3t9fX19fwBgB39/f39/f38Bf2AIf397fX1/f38AYAJ+fwBgA39/fgBgAn9+AX9gA39+fgBgBH9+fn8AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAZ/f39/f30AYA59fX19fX19fX1/b319fwFvYA19fX19fX19fX1/fX1/AW9gAW8Df39/YAp9fX19fX19fX1/AW9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAn19AX1gAXwBfwK7CRgQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAIEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACBAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABkQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAaEC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADRAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgASEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAGxAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5X2Q1MWU4OTQ1OGIzZmRiZjYAHBAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AA0QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5AB0QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAANEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxAAgQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmAB8QLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAIQLi9zcGFya19yc19iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAAoQLi9zcGFya19yc19iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhAuL3NwYXJrX3JzX2JnLmpzH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUACRAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAxACAQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAKEC4vc3BhcmtfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDMAChAuL3NwYXJrX3JzX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDA0AAoQLi9zcGFya19yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwNQAhA54CnAIFAAECAQIFAQEGBQAiIwcCAwUBAg4OBAECBQMACwUBBQICAAIFAgQkAgMDAgACAAUCABMBAQkBFAACDwEFBRQOAg8ABQIEJQEDAQICBRAFBQEEBQEPAQEMAgEBBwUBAgEBASYBAQICAgICAQIFBAIBDAYBAgMDJwECBAYCAgMBAQICAQUCASgGAAABBAMDAwMEBgYHAwQABwEDAgADDAQEAQEG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NgIEDAELIAAPCyAAQQhqC98XAhp/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEHQ38EAKAIAIgkhBiACQQNrQRhtIgVBACAFQQBKGyILIQUgC0ECdEHg38EAaiEHA0AgAyAEQQN0aiAFQQBIBHxEAAAAAAAAAAAFIAcoAgC3CzkDACAEIAZJIgoEQCAHQQRqIQcgBUEBaiEFIAQgCmoiBCAGTQ0BCwtBACEFA0BBACEEIANBwAJqIAVBA3RqIB0gACAEQQN0aisDACADIAUgBGtBA3RqKwMAoqA5AwAgBSAJSSIGBEAgBSAGaiIFIAlNDQELC0QAAAAAAADwf0QAAAAAAADgfyACIAtBaGxqIgpBGGsiAkH+D0siEBtEAAAAAAAAAABEAAAAAAAAYAMgAkG5cEkiERtEAAAAAAAA8D8gAkGCeEgiEhsgAkH/B0oiExtB/RcgAiACQf0XTxtB/g9rIApBlwhrIBAbIhVB8GggAiACQfBoTRtBkg9qIApBsQdqIBEbIhYgAiASGyATG0H/B2qtQjSGv6IhHiADQdwDaiIOIAlBAnRqIQ9BLyAKa0EfcSEXQTAgCmtBH3EhFCADQbgCaiEYIAJBAEohGSACQQFrIRogCSEFAkADQCADQcACaiAFIgZBA3RqKwMAIR0CQCAGRQ0AIANB4ANqIQggBiEEA0AgCCAdIB1EAAAAAAAAcD6i/AK3Ih1EAAAAAAAAcMGioPwCNgIAIBggBEEDdGorAwAgHaAhHSAEQQFGIgUNASAIQQRqIQhBASAEQQFrIAUbIgQNAAsLAn8CQCATRQRAIBINASACDAILIB1EAAAAAAAA4H+iIh1EAAAAAAAA4H+iIB0gEBshHSAVDAELIB1EAAAAAAAAYAOiIh1EAAAAAAAAYAOiIB0gERshHSAWCyEFIB0gBUH/B2qtQjSGv6IiHSAdRAAAAAAAAMA/opxEAAAAAAAAIMCioCIdIB38AiIMt6EhHQJ/AkACQAJAAn8gGUUEQCACRQRAIA4gBkECdGooAgBBF3UMAgtBAiENQQAgHUQAAAAAAADgP2ZFDQUaDAILIA4gBkECdGoiBSAFKAIAIgUgBSAUdSIFIBR0ayIENgIAIAUgDGohDCAEIBd1CyINQQBMDQELQQEhCAJAIAZFDQBBACEFIAZBAUcEQCAGQR5xIRtBACEHIANB4ANqIQQDQCAEKAIAIQgCfwJAIAQgBwR/Qf///wcFIAhFDQFBgICACAsgCGs2AgBBAAwBC0EBCyEIIARBBGoiHCgCACEHAn8CQCAcIAgEfyAHRQ0BQYCAgAgFQf///wcLIAdrNgIAQQAhCEEBDAELQQEhCEEACyEHIARBCGohBCAbIAVBAmoiBUcNAAsLIAZBAXFFDQAgA0HgA2ogBUECdGoiBCgCACEFAkAgBCAIBH8gBUUNAUGAgIAIBUH///8HCyAFazYCAEEAIQgMAQtBASEICwJAIAJBAEwNAEH///8DIQQCQAJAIBoOAgEAAgtB////ASEECyAOIAZBAnRqIgUgBSgCACAEcTYCAAsgDEEBaiEMIA1BAkYNAQsgDQwBC0QAAAAAAADwPyAdoSIdIB0gHqEgCEEBcRshHUECCyENIB1EAAAAAAAAAABhBEAgDyEEIAYhBQJAIAkgBkEBayIISw0AQQAhBwNAAkAgA0HgA2ogCEECdGooAgAgB3IhByAIIAlNDQAgCSAIIAggCUtrIghNDQELCyAGIQUgB0UNACAGQQJ0IANqQdwDaiEEA0AgBkEBayEGIAJBGGshAiAEKAIAIARBBGshBEUNAAsMAwsDQCAFQQFqIQUgBCgCACAEQQRrIQRFDQALIAUgBk0NASAGQQFqIQcDQCADIAdBA3RqIAcgC2pBAnQoAuDfQbc5AwBBACEERAAAAAAAAAAAIR0gA0HAAmogB0EDdGogHSAAIARBA3RqKwMAIAMgByAEa0EDdGorAwCioDkDACAFIAdNDQIgByAFIAdLaiIGIQcgBSAGTw0ACwwBCwsCQAJAAkBBACACayIEQf8HTARAIARBgnhODQMgHUQAAAAAAABgA6IhHSAEQbhwTQ0BQckHIAJrIQQMAwsgHUQAAAAAAADgf6IhHSAEQf4PSw0BQYF4IAJrIQQMAgsgHUQAAAAAAABgA6IhHUHwaCAEIARB8GhNG0GSD2ohBAwBCyAdRAAAAAAAAOB/oiEdQf0XIAQgBEH9F08bQf4PayEECyAdIARB/wdqrUI0hr+iIh1EAAAAAAAAcEFmBEAgA0HgA2ogBkECdGogHSAdRAAAAAAAAHA+ovwCtyIdRAAAAAAAAHDBoqD8AjYCACAGQQFqIQYgCiECCyADQeADaiAGQQJ0aiAd/AI2AgALAnwCQAJAIAJB/wdMBEAgAkGCeEgNAUQAAAAAAADwPwwDCyACQf4PSw0BIAJB/wdrIQJEAAAAAAAA4H8MAgsgAkG4cEsEQCACQckHaiECRAAAAAAAAGADDAILQfBoIAIgAkHwaE0bQZIPaiECRAAAAAAAAAAADAELQf0XIAIgAkH9F08bQf4PayECRAAAAAAAAPB/CyACQf8Haq1CNIa/oiEdIAZBAXEEfyAGBSADQcACaiAGQQN0aiAdIANB4ANqIAZBAnRqKAIAt6I5AwAgHUQAAAAAAABwPqIhHSAGQQFrCyEAIAYEQCAAQQN0IANqQbgCaiEEIABBAnQgA2pB3ANqIQIDQCAEIB1EAAAAAAAAcD6iIh4gAigCALeiOQMAIARBCGogHSACQQRqKAIAt6I5AwAgBEEQayEEIAJBCGshAiAeRAAAAAAAAHA+oiEdIABBAUcgAEECayEADQALCyAGQQFqIQogA0HAAmogBkEDdGohCCAGIQQDQAJAIAkgBiAEIgBrIgUgBSAJSxsiB0UEQEEAIQJEAAAAAAAAAAAhHQwBCyAHQQFqQX5xIQ9EAAAAAAAAAAAhHUEAIQRBACECA0AgHSAEQejhwQBqKwMAIAQgCGoiCysDAKKgIARB8OHBAGorAwAgC0EIaisDAKKgIR0gBEEQaiEEIA8gAkECaiICRw0ACwsgA0GgAWogBUEDdGogB0EBcQR8IB0FIB0gAkEDdCsD6OFBIANBwAJqIAAgAmpBA3RqKwMAoqALOQMAIAhBCGshCCAAQQFrIQQgAA0ACwJAIApBA3EiAEUEQEQAAAAAAAAAACEdIAYhAgwBCyADQaABaiAGQQN0aiEERAAAAAAAAAAAIR0gBiECA0AgAkEBayECIB0gBCsDAKAhHSAEQQhrIQQgAEEBayIADQALCyAGQQNPBEAgAkEDdCADakGIAWohBANAIB0gBEEYaisDAKAgBEEQaisDAKAgBEEIaisDAKAgBCsDAKAhHSAEQSBrIQQgAkEDRyACQQRrIQINAAsLIAEgHZogHSANGzkDACADQbAEaiQAIAxBB3EL5hsCB38HfiMAQeACayICJAACfwJAAn8CQAJAAkACQCAALQAAIgNBA2sOBQEAAAACAAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOEQIDAAQFBgAHCAkKCwwNDg8QAQsACyACIAAtAAE6AMACIAIgAkHAAmqtQoCAgICwBoQ3A6gCIAEoAgAgASgCBCACQgE3AtQCIAJBAjYCzAIgAkGElsEANgLIAiACIAJBqAJqNgLQAiACQcgCahBJDBQLIAIgACkDCDcDwAIgAiACQcACaq1CgICAgCCENwOoAiABKAIAIAEoAgQgAkIBNwLUAiACQQI2AswCIAJBoJbBADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwTCyACIAApAwg3A8ACIAIgAkHAAmqtQoCAgIDABoQ3A6gCIAEoAgAgASgCBCACQgE3AtQCIAJBAjYCzAIgAkGglsEANgLIAiACIAJBqAJqNgLQAiACQcgCahBJDBILIAIgACgCBDYCwAIgAiACQcACaq1CgICAgNAGhDcDqAIgASgCACABKAIEIAJCATcC1AIgAkECNgLMAiACQbyWwQA2AsgCIAIgAkGoAmo2AtACIAJByAJqEEkMEQsgAiAAKQIENwLAAiACIAJBwAJqrUKAgICA4AaENwOoAiABKAIAIAEoAgQgAkIBNwLUAiACQQE2AswCIAJB1JbBADYCyAIgAiACQagCajYC0AIgAkHIAmoQSQwQCyABKAIAQdyWwQBBCiABKAIEKAIMEQAADA8LIAEoAgBB5pbBAEEMIAEoAgQoAgwRAAAMDgsgASgCAEHylsEAQQ4gASgCBCgCDBEAAAwNCyABKAIAQYCXwQBBCCABKAIEKAIMEQAADAwLIAEoAgBBiJfBAEEDIAEoAgQoAgwRAAAMCwsgASgCAEGLl8EAQQQgASgCBCgCDBEAAAwKCyABKAIAQY+XwQBBDCABKAIEKAIMEQAADAkLIAEoAgBBm5fBAEEPIAEoAgQoAgwRAAAMCAsgASgCAEGql8EAQQ0gASgCBCgCDBEAAAwHCyABKAIAQbeXwQBBDiABKAIEKAIMEQAADAYLIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAMBQsgACkDCCIJQv////////8HgyEKIAlC////////////AINC//////////f/AFgEQCAJQjSIpyEAIAlCAFMNAiACQagCagwDC0HUosEAQdeiwQAgCUIAWSIAG0HbosEAIApQIgQbIQNBA0EEIAAbQQMgBBshAAwDCyABKAIAQdqXwQBBBCABKAIEKAIMEQAADAMLIAJBLToAqAJBASEIIAJBqQJqCyEGAn8CQAJAAkACQAJAAkACQAJAIABB/w9xIgBFIApQcUUEQCAAQQJJIApCAFJyIQMgCkKAgICAgICACIQgCiAAGyIJQgKGIQogCUIBgyEPAkACQAJAIABBtQhrQcx3IAAbIgBBAEgEQCACQZACakHQwcAAIAAgAEGFolNsQRR2IABBf0drIgBqIgdBBHQiBGspAwAiCSAKQgKEIgsQngEgAkGAAmpB2MHAACAEaykDACINIAsQngEgAkHwAWogAikDmAIiCyACKQOAAnwiDCACKQOIAiALIAxWrXwgACAHQbHZtR9sQRN2a0H8AGpB/wBxQcAAcyIEELsBIAJBsAFqIAkgCiADQX9zrHwiCxCeASACQaABaiANIAsQngEgAkGQAWogAikDuAEiCyACKQOgAXwiDCACKQOoASALIAxWrXwgBBC7ASACQeABaiAJIAoQngEgAkHQAWogDSAKEJ4BIAJBwAFqIAIpA+gBIgkgAikD0AF8Ig0gAikD2AEgCSANVq18IAQQuwEgAikDwAEhCyACKQOQASEJIAIpA/ABIQwg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QYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAkHgmMEAEJQBCyACIANBAWo2AgggAigCBCADaiAGOgAAQQAhAwwDCyAGIAMgA0GcqsEAEM8BAAsgBEEUNgIUIAEgBEEUahCwASEDDAELIAggAyADQZyqwQAQzwEACyAEQSBqJAAgA0UNDgwNCyACKAIAIANGBEAgAkHgl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpBIjoAAAwLCyACKAIAIANGBEAgAkHwl8EAEJQBIAIoAgQhBQsgAiADQQFqNgIIIAMgBWpB3AA6AAAMCgsgAigCACADRgRAIAJBgJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQS86AAAMCQsgAigCACADRgRAIAJBkJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQg6AAAMCAsgAigCACADRgRAIAJBoJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQw6AAAMBwsgAigCACADRgRAIAJBsJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQo6AAAMBgsgAigCACADRgRAIAJBwJjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQ06AAAMBQsgAigCACADRgRAIAJB0JjBABCUASACKAIEIQULIAIgA0EBajYCCCADIAVqQQk6AAAMBAsgAyAEIAZBsKHBABDPAQALIAcoAgwhAwwDCyAHQQQ2AhQgACABIAdBFGoQpAEMBgsgBCAGQYChwQAQsQEACwwBCwsgAEECNgIAIAAgAzYCBAwCCyAAIAM2AgggACABNgIEIABBADYCAAwBCyAAIAM2AgggACABNgIEIABBATYCAAsgB0EgaiQAC68QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQbu3wABBARBEIQIMAgsCQAJAAkACQAJAAkACQCAAKAIIIgQgACgCBCIGTwRAIAAoAhAiAkUNASACQZK3wABBEBBERQ0BDAcLIAAgBEEBaiIBNgIIIAVBCGogAiAEai0AACIDEM0BIAUoAggiBwRAIAAoAhAiAEUNCCAAIAcgBSgCDBBEIQIMCQsgACAAKAIMQQFqIgc2AgwgB0H1A08EQCAAKAIQIgIEQCAC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AgBBlObBAEGU5sEAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LAn9BjObBACgCACICQQEgAEEDdnQiA3FFBEBBjObBACACIANyNgIAIABB+AFxQYTkwQBqIgAMAQsgAEH4AXEiAkGE5MEAaiEAIAJBjOTBAGooAgALIQIgACABNgIIIAIgATYCDCABIAA2AgwgASACNgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQbTmwQBBtObBACgCAEEBayIANgIAIAANAUH848EAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQbTmwQBB/x8gASABQf8fTRs2AgAPC0H848EAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQbTmwQBB/x8gBCAEQf8fTRs2AgAgAiADTw0AQazmwQBBfzYCAAsL2AkBBH8jAEFAaiICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsOGAECAwQFBgcICQoLDA0ODxAREhMUFRYXGAALIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRAAAhAQwYCwJAAkACQAJAIAAtAARBAWsOAwECAwALIAIgACgCCDYCBEEUEBgiAEUNGyAAQRBqQc3UwQAoAAA2AAAgAEG91MEA/QAAAP0LAAAgAkEUNgIQIAIgADYCDCACQRQ2AgggAiACQQRqrUKAgICAgAeENwMgIAIgAkEIaq1CgICAgJAHhDcDGCABKAIAIAEoAgQgAkICNwI0IAJBAzYCLCACQYDYwQA2AiggAiACQRhqNgIwIAJBKGoQSSEBIAIoAggiAEUNGiACKAIMIgRBBGsoAgAiA0F4cSIFQQRBCCADQQNxIgMbIABqSQ0cIANBACAFIABBJ2pLGw0dIAQQLgwaCyACIAAtAAVBAnQiACgC+NxB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/AoAAAsgACACIANqNgIIQQALUAEBfyMAQRBrIgIkACACQQhqIAEgASgCACgCBBECACACIAIoAgggAigCDCgCGBECACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJAALTwECfyAAKAIEIQIgACgCACEDAkAgACgCCCIALQAARQ0AIANBurPAAEEEIAIoAgwRAABFDQBBAQ8LIAAgAUEKRjoAACADIAEgAigCEBEBAAtKAQJ/IAAgACgCBCIDIAJrNgIEIAAgACgCACACIANLciIENgIAQQEhAyAEBH8gAwUgACgCCCIAKAIAIAEgAiAAKAIEKAIMEQAACwtIAQF/AkAgAUHhAGsiAUH/AXFBGUsEQEEAIQEMAQsgAUECdEH8B3EiAigCwNtBIQEgAigC2NpBIQILIAAgAjYCBCAAIAE2AgALQgEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQ2QEAC8kCAAJAIAAgAk0EQCAAIAFNIAEgAktyDQEjAEEwayICJAAgAiABNgIEIAIgADYCACACQQI2AgwgAkG0pMAANgIIIAJCAjcCFCACIAJBBGqtQoCAgIAQhDcDKCACIAKtQoCAgIAQhDcDICACIAJBIGo2AhAgAkEIaiADENkBAAsjAEEwayIBJAAgASACNgIEIAEgADYCACABQQI2AgwgAUHgo8AANgIIIAFCAjcCFCABIAFBBGqtQoCAgIAQhDcDKCABIAGtQoCAgIAQhDcDICABIAFBIGo2AhAgAUEIaiADENkBAAsjAEEwayIAJAAgACACNgIEIAAgATYCACAAQQI2AgwgAEGApMAANgIIIABCAjcCFCAAIABBBGqtQoCAgIAQhDcDKCAAIACtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIaiADENkBAAs3AAJ/IARBAXEEQCAFuxCOAgwBC0GBCEGACCABLQAAGwshBCACIANBBhBLIAQQ6gEgAEEANgIACzgBAX8jAEEQayICJAAgAkEIaiAAIAAoAgAoAgQRAgAgAigCCCABIAIoAgwoAhARAQAgAkEQaiQACzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQEARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQAACzwBAn8gASgCBCECIAEoAgAhA0EIEBgiAUUEQAALIAEgAjYCBCABIAM2AgAgAEGI2cEANgIEIAAgATYCAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakHEscAAIANBDGpBxLHAACACQai0wAAQbwALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBxJXAADYCCCABQgQ3AhAgAUEIaiAAENkBAAuUBQIHfwF7EGUiEiAKJgECfyMAQdAAayIOJAAgDkKAgICAwAA3AgQgDkEANgIMIA4gDUEARzoALCAOQYCAgPwDNgIoIA5CgICA/IOAgMA/NwIgIA4gDDgCHCAOIAs4AhggDkKAgICAgICAwD83AhBBrOLBACgCAEUEQBBNCwJAAkACQAJAQbDiwQAoAgBFBEBBsOLBAEF/NgIAAn8gCUUEQEEAIQ1BBAwBC0G84sEAKAIAIRFBuOLBACgCACETIAP9EyAE/SABIRVBACENA0AgEiUBIA1BAnQgDUGAgAQgCSANayIPIA9BgIAETxsiD2oiDUECdBAHIQoQZSIQIAomASAPQQJ0Ig8gEUsNAyAOIBAlARAIIhQ2AjAgDiAPNgI0IA8gFEcNBiATIA8gECUBEAkgDiACOAJAIA4gATgCPCAOIAA4AjggEyAPIA5BBGogDkE4aiAVIAUgBiAHIAggDkEQahAkIBBBhAhPBEAgEBC3AQsgCSANSw0AC0Gw4sEAKAIAQQFqIQ8gDigCDCENIA4oAggLIQlBsOLBACAPNgIAIA0QCiEKEGUiDyAKJgEgDyUBEAshECAOIA02AjQgDiAQNgIwIA0gEEcNBCAPJQEgCSANEAwgDigCBCINBEAgCUEEaygCACIQQXhxIhEgDUECdCINQQRBCCAQQQNxIhAbakkNAyAQQQAgESANQSdqSxsNBCAJEC4LIBJBhAhPBEAgEhC3AQsgDkHQAGokACAPDAULQfCSwAAQqwIAC0EAIA8gEUH4k8AAEM8BAAtBqNnBAEEuQdjZwQAQzgEAC0Ho2cEAQS5BmNrBABDOAQALIA5BADYCOCAOQTBqIA5BNGogDkE4ahDUAQALIgklASAJELcBC8ECAQR/IwBBEGsiASQAQdjiwQAtAABBA0cEQCABQQE6AA8gAUEPaiECIwBBIGsiACQAAkACQAJAAkACQAJAAkACQAJAQdjiwQAtAABBAWsOAwQDAQALQdjiwQBBAjoAACACLQAAIAJBADoAAEUNBEHE5sEAKAIAQf////8HcQRAQbzmwQAoAgANBgtByObBACgCAA0BQdjiwQBBAzoAAEHM5sEAQQE2AgALIABBIGokAAwGCwALIABBADYCGCAAQQE2AgwgAEGM1cEANgIIDAMLIABBADYCGCAAQQE2AgwgAEGsgMAANgIIDAILQeCSwAAQngIACyAAQQA2AhggAEEBNgIMIABBvNfBADYCCCAAQgQ3AhAgAEEIakHE18EAENkBAAsgAEIENwIQIABBCGpBqJPAABDZAQALCyABQRBqJAALLQACQCADaUEBRyABQYCAgIB4IANrS3JFBEAgACABIAMgAhA0IgANAQsACyAAC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABB7NbBACABKAIEIAEoAggiAC0ACCAALQAJEJIBAAsgACADNgIEIAAgAjYCACAAQdDWwQAgASgCBCABKAIIIgAtAAggAC0ACRCSAQALqQICAX8BbwJ/IwBBMGsiDSQAQaziwQAoAgBFBEAQTQsCQEGw4sEAKAIARQRAQbDiwQBBfzYCAEHU4sEAQQA2AgAgDSAMQQBHOgAgIA1BgICA/AM2AhwgDUKAgID8g4CAwD83AhQgDSALOAIQIA0gCjgCDCANQoCAgICAgIDAPzcCBCAJQQJ0IglBvOLBACgCACIMSw0BQbjiwQAoAgAgDSACOAIsIA0gATgCKCANIAA4AiQgCUHM4sEAIA1BJGogA/0TIAT9IAEgBSAGIAcgCCANQQRqECRB0OLBACgCAEHU4sEAKAIAEO8BQbDiwQBBsOLBACgCAEEBajYCACANQTBqJAAMAgtB8JLAABCrAgALQQAgCSAMQeiTwAAQzwEACyIJJQEgCRC3AQvUVQMefwR+AXwjAEEQayIaJAAQZSIbIAAmASMAQYAIayIBJAACQAJAAkACQAJA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CyABQZ+4wABBBBBECx4AIABFBEAQrwIACyAAIAIgAyAEIAUgASgCEBERAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQEQsACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARBwALHAAgAEUEQBCvAgALIAAgAiADIAQgASgCEBEyAAscACAARQRAEK8CAAsgACACIAMgBCABKAIQETMACxwAIABFBEAQrwIACyAAIAIgAyAEIAEoAhARNAALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAwALGgAgAEUEQBCvAgALIAAgAiADIAEoAhARAAALFAAgASABIAAgACABXRsgACAAXBsLHAEBbyAAJQEgASUBIAEQtwEgAiUBIAIQtwEQAgsYACAARQRAEK8CAAsgACACIAEoAhARAQALHAAgASgCACAAKAIAIAAoAgQgASgCBCgCDBEAAAsfAEG55sEALQAARQRAQbnmwQBBAToAAAsgAEEBNgIACxcAIAAoAgAgASAAKAIEQQxqKAIAEQEACxYBAW8gACABEBQhAhBlIgAgAiYBIAALFgEBbyAAIAEQFSECEGUiACACJgEgAAsWAQFvIAAgARAWIQIQZSIAIAImASAACxkAIAEoAgBBkKTBAEEFIAEoAgQoAgwRAAALDgAgAARAAAsgARDVAQALEwAgASgCBBogAEHclcAAIAEQSQsQACACKAIEGiAAIAEgAhBJCxMAIAEoAgQaIABB8JfAACABEEkLEwAgASgCBBogAEH0lcAAIAEQSQsTACABKAIEGiAAQZSYwAAgARBJCxMAIAEoAgQaIABB4J7AACABEEkLEwAgASgCBBogAEHMv8AAIAEQSQsZACABKAIAQbG9wABBEiABKAIEKAIMEQAACxUAIAEgACgCACIAKAIAIAAoAgQQRAsTACABKAIEGiAAQeCiwQAgARBJCxYAIABBgMjBADYCBCAAIAFBHGo2AgALFgAgAEHEx8EANgIEIAAgAUEcajYCAAsQACAAQQRqED4gAEEcahBdCxkAIAEoAgBB0pfBAEEIIAEoAgQoAgwRAAALGQAgASgCAEGTlcEAQQMgASgCBCgCDBEAAAsZACABKAIAQcjDwQBBFyABKAIEKAIMEQAACxkAIAEoAgBB1MLBAEEUIAEoAgQoAgwRAAALGQAgASgCAEGsw8EAQQog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EGsiASQAIAFB3ZLAADYCDCABIABBB2o2AgggAUEIakHU18EAIAFBDGpB1NfBACAAQQhqQbzVwQAQbwALIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEGc1sEANgIIIABCBDcCECAAQQhqQaTWwQAQ2QEAC0Hc1cEAEJ4CAAsgAEEANgIYIABBATYCDCAAQYzVwQA2AgggAEIENwIQIABBCGpBzNXBABDZAQALQbjmwQBBADoAACAEQQM6AAALIABBIGokACAJKAIMIQMgAigCUEGAgIAEcSIEDQELIAMgCSgCECIASQ0CIAMgAGshAyAJKAIIIABBDGxqDAELIAkoAggLIQ8gAkGAgICAeDYCWCACQcjOwQApAwAiHzcCXCACIARBF3YiADoAZCACIAA6AHggAkEANgJ0IAJB0NjBADYCcCACIAJByABqNgJoIAIgAkHYAGo2AmwgA0UEQCAfpyEDIB9CIIinDAgLIA8gA0EMbGohGCACQZgBaiEVIAJBlwFqIRkDQAJAIA8oAggiAEUEQCACQQA2AogBIAIgAkHoAGo2AoQBIAJBAzYCkAEgAkECNgLQASACQYQBaiACQZABaiACQdABakEAIAJBACACECUgAigChAEiASABKAIMQQFqNgIMRQ0BDA4LIA8oAgQiCSAAQSxsaiEaA0AgAkEANgKAASACIAJB6ABqNgJ8AkACQAJAAkAgCSgCIEGAgICAeEcEQCACQZABaiIAIAkoAiQiGyAJKAIoIhwQQUECIRcgAigCkAENAyAAIAIoApQBIgggAigCmAEiAUHMusAAQQYQIQJAAkAgAigCkAEEQCACKALMASEAIAIoAsgBIQQgAigCxAEhBiACKALAASEDIAIoArQBQX9GDQEgAkGEAWogFSADIAYgBCAAQQAQVgwCCwNAIAJB0AFqIAJBkAFqECsgAigC0AEiAEEBRg0ACwJAAkAgAEEBaw4CGQEACyACIAIpAtQBNwKIASACQQE2AoQBDAILIAJBADYChAEMAQsgAkGEAWogFSADIAYgBCAAQQEQVgsgAigChAFBAUcNAiACKAKIASIAQQZqIgRFDQECQCABIARNBEAgASAERw0BDAMLIAQgCGosAABBv39KDQILIAggASAEIAFB1LrAABCQAgALIAJBAzYCkAEMAwsgASAIaiEHIAQgCGohAwNAAkAg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IAMMBgsCQCACKAJYIgBBgICAgHhHBEAgAEUNAiACKAJcIgNBBGsoAgAiAUF4cSIEQQRBCCABQQNxIgEbIABqSQ0FIAFFIAQgAEEnak1yDQEMBgsgAi0AXEEDRw0BIAIoAmAiAygCACEAIANBBGooAgAiASgCACIEBEAgACAEEQQACyABKAIEIgEEQCAAQQRrKAIAIgRBeHEiBkEEQQggBEEDcSIEGyABakkNBSAEQQAgBiABQSdqSxsNBiAAEC4LIANBBGsoAgAiAEF4cSIBQRBBFCAAQQNxIgAbSQ0EIABFDQAgAUE0Tw0FCyADEC4LQYijwQBBNyACQd8BakGMlsAAQcCjwQAQnwEACwALQdC4wABBPSACQd8BakHAuMAAQei5wAAQnwEAC0Go2cEAQS5B2NnBABDOAQALQejZwQBBLkGY2sEAEM4BAAsLCAAgACUBEAQLDABB9LPAAEEyEBEACwcAEBIQ1wELBABBAQsEAEEACwIACwub3wE+AEGAgMAAC5UTT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAAAABAAKgAAAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI2L3NyYy9sZWdhY3kucnMAc3BhcmstcnMvc3JjL3JheWNhc3QucnMAbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZm10LnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9pbXBscy5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjgyOTdlMzUxYTQwYzE0MzlhNDY3YmJiYjY4NzkwODgwNDdmNTBiMy9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2Vycm9yLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwBsaWJyYXJ5L3N0ZC9zcmMvc3luYy9sYXp5X2xvY2sucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExNy9zcmMvZXh0ZXJucmVmLnJzAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9zcGxhdF9lbmNvZGUucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL2RlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAC9ydXN0Yy9mODI5N2UzNTFhNDBjMTQzOWE0NjdiYmJiNjg3OTA4ODA0N2Y1MGIzL2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAGxpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS41L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAL3J1c3RjL2Y4Mjk3ZTM1MWE0MGMxNDM5YTQ2N2JiYmI2ODc5MDg4MDQ3ZjUwYjMvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDUvc3JjL3JlYWQucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNi9zcmMvbGliLnJzAC9Vc2Vycy9kbWFyY29zLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu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//////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MgcQAGIAAACzAQAAGgAAADIHEABiAAAAAAIAABMAAAAyBxAAYgAAAAUCAAAzAAAAMgcQAGIAAAAJAgAAPgAAADIHEABiAAAADwIAADoAAAAyBxAAYgAAAKsBAAA9AAAAMgcQAGIAAACmAQAARQAAACBhdCBsaW5lIAAAAEACEABjAAAA9wEAACEAAABAAhAAYwAAAPsBAAAMAAAAIGNvbHVtbiBAAhAAYwAAAAICAAAhAAAAQAIQAGMAAAALAgAAKgAAAEACEABjAAAADwIAACwAAABAAhAAYwAAABQCAAAJAAAAaW5mLWluZk5hTgAAPgAAAAwAAAAEAAAAPwAAAEAAAABYAEGAo8EAC/sHAQAAAEIAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5ALcDEABLAAAABQsAAA4AAACkAhAATwAAADwGAAAUAAAApAIQAE8AAAA8BgAAIQAAAKQCEABPAAAAMAYAABQAAACkAhAATwAAADAGAAAhAAAARXJyb3Jhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbilFcnJvcigsIGxpbmU6ICwgY29sdW1uOiAAAABFUhAABgAAAEtSEAAIAAAAU1IQAAoAAAD/axAAAQAAAGludmFsaWQgdHlwZTogAACAUhAADgAAABtWEAALAAAAaW52YWxpZCB2YWx1ZTogAKBSEAAPAAAAG1YQAAsAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlk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aWQgUkFEIG1hZ2ljOiAweAAAAABmEAAVAAAAAgBBqszBAAsBCABBtMzBAAt1IAAA6W1dy9YsUOtjeEGmV3Ebi7n1Ky+JZFpnOv7tcjMv54x1AQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAACAAAOggICAgICAgICAgICAgYXQgOgAAAIhmEAABAAAACjogAAEAAAAAAAAAlWYQAAIAAAACAEGyzcEACwEEAEG8zcEACzEgAADoIC0gAAEAAAAAAAAAwGYQAAMAAAAgICAgICA8dW5rbm93bj4AAgAAAAAAAAACAEH4zcEAC50NIACA4O+/vQAyBhAANAAAAGcBAAAwAAAAb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybRBnEAAoAAAAJAAAAAAAAAACAAAAOGcQAGVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2Ug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")); - const A = Gh(); - (typeof Q == "string" || typeof Request == "function" && Q instanceof Request || typeof URL == "function" && Q instanceof URL) && (Q = fetch(Q)); - const { instance: I, module: g } = await Mh(await Q, A); - return ch(I); +function Co(Q) { + switch (Q) { + case "sampler2D": + case "sampler2DArray": + case "sampler3D": + case "samplerCube": + case "sampler2DShadow": + return "vec4"; + case "usampler2D": + case "usampler2DArray": + case "usampler3D": + case "usamplerCube": + return "uvec4"; + case "isampler2D": + case "isampler2DArray": + case "isampler3D": + case "isamplerCube": + return "ivec4"; + case "samplerCubeShadow": + case "sampler2DArrayShadow": + return "float"; + default: + throw new Error(`Invalid texture type: ${Q}`); + } +} +const l0 = (Q) => new Eo({ degrees: Q }), x0 = (Q) => new io({ radians: Q }), fQ = (Q) => new Do({ radians: Q }), q0 = (Q) => new oo({ radians: Q }), p0 = (Q) => new so({ radians: Q }), f0 = (Q) => new wo({ sin: Q }), u0 = (Q) => new ao({ cos: Q }), b0 = (Q) => new to({ tan: Q }), P0 = (Q, A) => new Go({ y: Q, x: A }), m0 = (Q) => new ho({ x: Q }), T0 = (Q) => new yo({ x: Q }), O0 = (Q) => new co({ x: Q }), Z0 = (Q) => new So({ x: Q }), v0 = (Q) => new Fo({ x: Q }), X0 = (Q) => new Ro({ x: Q }); +class Eo extends r { + constructor({ degrees: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "radians" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.radians} = radians(${I.a});` + ]; + } +} +class io extends r { + constructor({ radians: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "degrees" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.degrees} = degrees(${I.a});` + ]; + } +} +class Do extends r { + constructor({ radians: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "sin" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.sin} = sin(${I.a});` + ]; + } +} +class oo extends r { + constructor({ radians: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "cos" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.cos} = cos(${I.a});` + ]; + } +} +class so extends r { + constructor({ radians: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "tan" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.tan} = tan(${I.a});` + ]; + } +} +class wo extends r { + constructor({ sin: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "asin" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.asin} = asin(${I.a});` + ]; + } +} +class ao extends r { + constructor({ cos: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "acos" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.acos} = acos(${I.a});` + ]; + } +} +class to extends r { + constructor({ tan: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "atan" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.atan} = atan(${I.a});` + ]; + } } -var Jh = `precision highp float; +class Go extends DA { + constructor({ y: A, x: I }) { + super({ + a: A, + b: I, + outTypeFunc: (g, B) => g, + outKey: "atan2" + }), this.statements = ({ inputs: g, outputs: B }) => [ + `${B.atan2} = atan2(${g.a}, ${g.b});` + ]; + } +} +class ho extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "sinh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.sinh} = sinh(${I.a});` + ]; + } +} +class yo extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "cosh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.cosh} = cosh(${I.a});` + ]; + } +} +class co extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "tanh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.tanh} = tanh(${I.a});` + ]; + } +} +class So extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "asinh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.asinh} = asinh(${I.a});` + ]; + } +} +class Fo extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "acosh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.acosh} = acosh(${I.a});` + ]; + } +} +class Ro extends r { + constructor({ x: A }) { + super({ a: A, outTypeFunc: (I) => I, outKey: "atanh" }), this.statements = ({ inputs: I, outputs: g }) => [ + `${g.atanh} = atanh(${I.a});` + ]; + } +} +const ny = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Abs: XE, + Acos: ao, + Acosh: Fo, + Add: uE, + All: ni, + And: ci, + Any: Li, + Asin: wo, + Asinh: So, + Atan: to, + Atan2: Go, + Atanh: Ro, + BVec2: mi, + BVec3: Ti, + BVec4: Oi, + BinaryOp: DA, + Bool: fi, + Ceil: jE, + Clamp: si, + Combine: rD, + CombineCovSplat: SC, + CombineGsplat: tC, + CompMult: JD, + CompXor: ri, + Compilation: zB, + Cos: oo, + Cosh: yo, + CovSplat: KA, + Cross: SD, + DebugColorHue: WD, + Degrees: io, + Determinant: nD, + Distance: yD, + Div: mE, + Dot: cD, + Dyno: l, + DynoBlock: wI, + DynoBool: Mg, + DynoBvec2: KC, + DynoBvec3: lC, + DynoBvec4: pC, + DynoConst: jB, + DynoFloat: vI, + DynoInt: _A, + DynoIsampler2D: zC, + DynoIsampler2DArray: $C, + DynoIsampler3D: gE, + DynoIsamplerCube: CE, + DynoIvec2: YC, + DynoIvec3: qC, + DynoIvec4: uC, + DynoLiteral: ZI, + DynoMat2: bC, + DynoMat2x2: PC, + DynoMat2x3: mC, + DynoMat2x4: TC, + DynoMat3: BB, + DynoMat3x2: OC, + DynoMat3x3: ZC, + DynoMat3x4: vC, + DynoMat4: XC, + DynoMat4x2: VC, + DynoMat4x3: WC, + DynoMat4x4: jC, + DynoOutput: Z, + DynoProgram: CQ, + DynoProgramTemplate: Gg, + DynoRemapIndex: uD, + DynoSampler2D: _C, + DynoSampler2DArray: AE, + DynoSampler2DArrayShadow: DE, + DynoSampler2DShadow: iE, + DynoSampler3D: QE, + DynoSamplerCube: EE, + DynoSamplerCubeShadow: oE, + DynoUint: HC, + DynoUniform: q, + DynoUsampler2D: Jg, + DynoUsampler2DArray: qA, + DynoUsampler3D: IE, + DynoUsamplerCube: BE, + DynoUvec2: rC, + DynoUvec3: xC, + DynoUvec4: fC, + DynoValue: NI, + DynoVec2: dC, + DynoVec3: UI, + DynoVec4: zI, + Equal: Ji, + Exp: Ii, + Exp2: gi, + ExtendVec: kD, + FaceForward: eD, + Float: Pi, + FloatBitsToInt: QD, + FloatBitsToUint: BD, + Floor: WE, + Fract: $E, + GreaterThan: Ni, + GreaterThanEqual: Mi, + Gsplat: V, + GsplatNormal: hC, + GsplatToCovSplat: wC, + Hash: bD, + Hash2: PD, + Hash3: mD, + Hash4: TD, + HashFloat: OD, + HashVec2: ZD, + HashVec3: vD, + HashVec4: XD, + IMod: TE, + IVec2: Zi, + IVec3: vi, + IVec4: Xi, + Int: ui, + IntBitsToFloat: CD, + Inverse: HD, + InverseSqrt: ii, + IsInf: hi, + IsNan: Gi, + Length: hD, + LessThan: ki, + LessThanEqual: ei, + Log: Qi, + Log2: Bi, + Mat2: AD, + Mat3: ID, + Mat4: gD, + Max: oi, + Min: Di, + Mix: wi, + Mod: OE, + Modf: ZE, + Mul: PE, + Neg: vE, + Normalize: FD, + NormalizedDepth: VD, + Not: Ri, + NotEqual: Ui, + NumCovSplats: oC, + NumExtSplats: iC, + NumPackedSplats: QC, + Or: Si, + Outer: UD, + OutputCovSplat: UC, + OutputExtCovSplat: nC, + OutputExtendedSplat: LC, + OutputPackedSplat: JC, + OutputRgba8: QB, + PackHalf2x16: wD, + PackSnorm2x16: iD, + PackUnorm2x16: oD, + PagedSplatTexCoord: RC, + PcgHash: jA, + PcgMix: _I, + PcgNext: WA, + Pow: Ai, + ProjectH: RD, + Radians: Eo, + ReadCovSplat: sC, + ReadExtSplat: DC, + ReadPackedSplat: CC, + ReadPackedSplatRange: EC, + ReflectVec: ND, + RefractVec: MD, + Round: _E, + Select: Hi, + Shl: di, + Shr: Yi, + Sign: VE, + SimpleCast: eA, + Sin: Do, + Sinh: ho, + Smoothstep: ti, + SplatTexCoord: FC, + Split: KD, + SplitCovSplat: cC, + SplitGsplat: aC, + Sqr: Ci, + Sqrt: Ei, + Step: ai, + Sub: bE, + Swizzle: YD, + TCovSplats: _B, + TExtSplats: _Q, + TPackedSplats: gQ, + Tan: so, + Tanh: co, + TexelFetch: Qo, + Texture: go, + TextureSize: Io, + TransformDir: $D, + TransformGsplat: yC, + TransformPosition: _D, + TransformQuaternion: Ao, + Transpose: LD, + TrinaryOp: uI, + Trunc: zE, + UVec2: Vi, + UVec3: Wi, + UVec4: ji, + Uint: bi, + UintBitsToFloat: ED, + UintToRgba8: tD, + UnaryOp: r, + UnpackHalf2x16: aD, + UnpackSnorm2x16: DD, + UnpackUnorm2x16: sD, + Vec2: zi, + Vec3: _i, + Vec4: $i, + Xor: Fi, + abs: Ta, + acos: u0, + acosh: v0, + add: xA, + all: kt, + and: ot, + any: Rt, + arrayIndex: n0, + arrayLength: H0, + asin: f0, + asinh: Z0, + atan: b0, + atan2: P0, + atanh: X0, + bool: Jt, + bvec2: nt, + bvec3: Ht, + bvec4: Kt, + ceil: va, + clamp: Bt, + combine: tI, + combineCovSplat: IB, + combineGsplat: BI, + comment: L0, + compMult: C0, + compXor: et, + cos: q0, + cosh: T0, + cross: _t, + debugColorHue: e0, + defineCovSplat: LI, + defineExtSplats: AB, + defineGsplat: NA, + defineGsplatNormal: GC, + definePackedSplats: QQ, + degrees: x0, + determinant: D0, + distance: zt, + div: bg, + dot: GD, + dyno: jQ, + dynoBlock: nA, + dynoBool: Fs, + dynoBvec2: es, + dynoBvec3: Us, + dynoBvec4: Hs, + dynoConst: IA, + dynoDeclare: zQ, + dynoFloat: EI, + dynoFor: U0, + dynoIf: M0, + dynoInt: ks, + dynoIsampler2D: vs, + dynoIsampler2DArray: Ws, + dynoIsampler3D: _s, + dynoIsamplerCube: Iw, + dynoIvec2: Ms, + dynoIvec3: ns, + dynoIvec4: rs, + dynoLiteral: Tg, + dynoMat2: ds, + dynoMat2x2: ls, + dynoMat2x3: xs, + dynoMat2x4: qs, + dynoMat3: ps, + dynoMat3x2: fs, + dynoMat3x3: us, + dynoMat3x4: bs, + dynoMat4: Ps, + dynoMat4x2: ms, + dynoMat4x3: Ts, + dynoMat4x4: Os, + dynoSampler2D: Xs, + dynoSampler2DArray: js, + dynoSampler2DArrayShadow: Bw, + dynoSampler2DShadow: Qw, + dynoSampler3D: $s, + dynoSamplerCube: gw, + dynoSamplerCubeShadow: Cw, + dynoSwitch: J0, + dynoUint: Rs, + dynoUsampler2D: Zs, + dynoUsampler2DArray: Vs, + dynoUsampler3D: zs, + dynoUsamplerCube: Aw, + dynoUvec2: Ns, + dynoUvec3: Ls, + dynoUvec4: Ks, + dynoVec2: Js, + dynoVec3: kI, + dynoVec4: Ys, + equal: St, + exp: ja, + exp2: za, + extendVec: Q0, + faceforward: $t, + float: li, + floatBitsToInt: pi, + floatBitsToUint: bt, + floor: Za, + fract: Pg, + greaterThan: ct, + greaterThanEqual: yi, + gsplatNormal: LQ, + gsplatToCovSplat: Og, + hash: dD, + hash2: lD, + hash3: xD, + hash4: qD, + hashFloat: R0, + hashVec2: k0, + hashVec3: pD, + hashVec4: pQ, + imod: qQ, + int: Ut, + intBitsToFloat: Pt, + inverse: o0, + inversesqrt: gt, + isAllFloatType: JI, + isBoolType: pI, + isFloatType: eg, + isInf: Dt, + isIntType: dA, + isMat2: HI, + isMat3: KI, + isMat4: rI, + isMatFloatType: ZB, + isNan: it, + isScalarType: fI, + isUintType: lA, + isVector2Type: WI, + isVector3Type: jI, + isVector4Type: Ng, + isVectorType: Bs, + ivec2: rt, + ivec3: Yt, + ivec4: dt, + length: jt, + lessThan: ht, + lessThanEqual: yt, + literalNegOne: Ds, + literalOne: is, + literalZero: gg, + log: _a, + log2: $a, + mat2: pt, + mat3: ft, + mat4: ut, + max: pE, + min: Qt, + mix: fE, + mod: qE, + modf: ma, + mul: SA, + neg: aB, + normalize: hg, + normalizedDepth: fD, + not: at, + notEqual: Ft, + numCovSplats: ws, + numExtSplats: ss, + numPackedSplats: os, + numberAsFloat: AA, + numberAsInt: RA, + numberAsUint: kA, + or: st, + outer: E0, + outputCovSplat: kC, + outputCovSplatDepth: MC, + outputExtCovSplat: HQ, + outputExtendedSplat: eC, + outputPackedSplat: gB, + outputRgba8: hs, + outputSplatDepth: NC, + packHalf2x16: Xt, + packSnorm2x16: Tt, + packUnorm2x16: Zt, + pagedSplatTexCoord: nQ, + pcgHash: F0, + pcgMix: c0, + pcgNext: S0, + pow: Wa, + projectH: g0, + radians: l0, + readCovSplat: as, + readExtSplat: IC, + readPackedSplat: $B, + readPackedSplatRange: AC, + reflectVec: A0, + refractVec: I0, + remapIndex: y0, + round: Va, + sameSizeIvec: Es, + sameSizeUvec: VB, + sameSizeVec: Cs, + select: tB, + shl: Gt, + shr: tt, + sign: Oa, + sin: fQ, + sinh: m0, + smoothstep: Et, + splatTexCoord: $Q, + split: VI, + splitCovSplat: Zg, + splitGsplat: fA, + sqr: At, + sqrt: It, + step: Ct, + sub: CI, + swizzle: B0, + tan: p0, + tanh: O0, + texelFetch: Y0, + texture: r0, + textureSize: K0, + transformDir: zD, + transformGsplat: gC, + transformPos: jD, + transformQuat: N0, + transpose: i0, + trunc: Xa, + typeLiteral: WB, + uint: Lt, + uintBitsToFloat: mt, + uintToRgba8: Wt, + uniform: Ss, + unindent: wA, + unindentLines: z, + unpackHalf2x16: Vt, + unpackSnorm2x16: Ot, + unpackUnorm2x16: vt, + uvec2: lt, + uvec3: xt, + uvec4: qt, + valType: CA, + vec2: xi, + vec3: qI, + vec4: qi, + vectorDim: XB, + vectorElementType: vB, + xor: wt +}, Symbol.toStringTag, { value: "Module" })); +var V0 = `precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -6310,7 +5361,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`, Uh = `precision highp float; +}`, W0 = `precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -6350,7 +5401,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`, th = `precision highp float; +}`, j0 = `precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -6392,7 +5443,7 @@ void main() { if ((index >= 0) && (index < targetCount)) { produceSplat(index); } -}`, Hh = `precision highp float; +}`, z0 = `precision highp float; precision highp int; precision highp sampler2D; precision highp usampler2D; @@ -6427,359 +5478,71 @@ void main() { } else { target = vec4(0.0, 0.0, 0.0, 0.0); } -}`, Lh = `precision highp float; -precision highp int; +}`, _0 = `const float LN_SCALE_MIN = -12.0; +const float LN_SCALE_MAX = 9.0; -#include +const uint SPLAT_TEX_WIDTH_BITS = 11u; +const uint SPLAT_TEX_HEIGHT_BITS = 11u; +const uint SPLAT_TEX_DEPTH_BITS = 11u; +const uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; -uniform float near; -uniform float far; -uniform bool encodeLinear; -uniform float time; -uniform bool debugFlag; -uniform float maxStdDev; -uniform float minAlpha; -uniform bool stochastic; -uniform bool disableFalloff; -uniform float falloff; +const uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS; +const uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS; +const uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS; -uniform bool splatTexEnable; -uniform sampler3D splatTexture; -uniform mat2 splatTexMul; -uniform vec2 splatTexAdd; -uniform float splatTexNear; -uniform float splatTexFar; -uniform float splatTexMid; +const uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u; +const uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u; +const uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u; -out vec4 fragColor; +const uint F16_INF = 0x7c00u; +const float PI = 3.1415926535897932384626433832795; -in vec4 vRgba; -in vec2 vSplatUv; -in vec3 vNdc; -flat in uint vSplatIndex; +const float INFINITY = 1.0 / 0.0; +const float NEG_INFINITY = -INFINITY; -void main() { - vec4 rgba = vRgba; +float sqr(float x) { + return x * x; +} - float z = dot(vSplatUv, vSplatUv); - if (!splatTexEnable) { - if (z > (maxStdDev * maxStdDev)) { - discard; - } - } else { - vec2 uv = splatTexMul * vSplatUv + splatTexAdd; - float ndcZ = vNdc.z; - float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near)); - float clampedFar = max(splatTexFar, splatTexNear); - float clampedDepth = clamp(depth, splatTexNear, clampedFar); - float logDepth = log2(clampedDepth + 1.0); - float logNear = log2(splatTexNear + 1.0); - float logFar = log2(clampedFar + 1.0); +float pow4(float x) { + float x2 = x * x; + return x2 * x2; +} - float texZ; - if (splatTexMid > 0.0) { - float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar); - float logMid = log2(clampedMid + 1.0); - texZ = (clampedDepth <= clampedMid) ? - (0.5 * ((logDepth - logNear) / (logMid - logNear))) : - (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5); - } else { - texZ = (logDepth - logNear) / (logFar - logNear); - } +float pow8(float x) { + float x4 = pow4(x); + return x4 * x4; +} - vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ)); - rgba *= modulate; +float gaussianKernelPower(float z2, float k) { + if (k == 1.0) { + return z2; + } else if (k == 2.0) { + return z2 * z2; } + return pow(max(0.0, z2), k); +} - rgba.a *= mix(1.0, exp(-0.5 * z), falloff); - - if (rgba.a < minAlpha) { - discard; - } - if (encodeLinear) { - rgba.rgb = srgbToLinear(rgba.rgb); +float gaussianKernelScale(float maxStdDev, float k) { + if (k == 1.0) { + return maxStdDev; + } else if (k == 2.0) { + return sqrt(maxStdDev); } + return pow(max(0.0, maxStdDev), 1.0 / k); +} - if (stochastic) { - const bool STEADY = false; - uint uTime = STEADY ? 0u : floatBitsToUint(time); - uvec2 coord = uvec2(gl_FragCoord.xy); - uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex); - state = state * 747796405u + 2891336453u; - uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u; - hash = (hash >> 22u) ^ hash; - float rand = float(hash) / 4294967296.0; - if (rand < rgba.a) { - fragColor = vec4(rgba.rgb, 1.0); - } else { - discard; - } - } else { - #ifdef PREMULTIPLIED_ALPHA - fragColor = vec4(rgba.rgb * rgba.a, rgba.a); - #else - fragColor = rgba; - #endif - } -}`, Yh = `precision highp float; -precision highp int; -precision highp usampler2DArray; +float gaussianKernel(float z2, float k) { + return exp(-0.5 * gaussianKernelPower(z2, k)); +} -#include +vec3 srgbToLinear(vec3 rgb) { + return pow(rgb, vec3(2.2)); +} -attribute uint splatIndex; - -out vec4 vRgba; -out vec2 vSplatUv; -out vec3 vNdc; -flat out uint vSplatIndex; - -uniform vec2 renderSize; -uniform uint numSplats; -uniform vec4 renderToViewQuat; -uniform vec3 renderToViewPos; -uniform float maxStdDev; -uniform float minPixelRadius; -uniform float maxPixelRadius; -uniform float time; -uniform float deltaTime; -uniform bool debugFlag; -uniform float minAlpha; -uniform bool stochastic; -uniform bool enable2DGS; -uniform float blurAmount; -uniform float preBlurAmount; -uniform float focalDistance; -uniform float apertureAngle; -uniform float clipXY; -uniform float focalAdjustment; - -uniform usampler2DArray packedSplats; -uniform vec4 rgbMinMaxLnScaleMinMax; - -void main() { - - gl_Position = vec4(0.0, 0.0, 2.0, 1.0); - - if (uint(gl_InstanceID) >= numSplats) { - return; - } - - ivec3 texCoord; - if (stochastic) { - texCoord = ivec3( - uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK, - (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK, - (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS) - ); - } else { - if (splatIndex == 0xffffffffu) { - - return; - } - texCoord = ivec3( - splatIndex & SPLAT_TEX_WIDTH_MASK, - (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK, - splatIndex >> SPLAT_TEX_LAYER_BITS - ); - } - uvec4 packedData = texelFetch(packedSplats, texCoord, 0); - - vec3 center, scales; - vec4 quaternion, rgba; - unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax); - - if (rgba.a < minAlpha) { - return; - } - bvec3 zeroScales = equal(scales, vec3(0.0)); - if (all(zeroScales)) { - return; - } - - - vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos; - - - if (viewCenter.z >= 0.0) { - return; - } - - - vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0); - - - if (abs(clipCenter.z) >= clipCenter.w) { - return; - } - - - float clip = clipXY * clipCenter.w; - if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) { - return; - } - - - vSplatIndex = splatIndex; - - - vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion); - - if (enable2DGS && any(zeroScales)) { - vRgba = rgba; - vSplatUv = position.xy * maxStdDev; - - vec3 offset; - if (zeroScales.z) { - offset = vec3(vSplatUv.xy * scales.xy, 0.0); - } else if (zeroScales.y) { - offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z); - } else { - offset = vec3(0.0, vSplatUv.xy * scales.yz); - } - - vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset); - gl_Position = projectionMatrix * vec4(viewPos, 1.0); - vNdc = gl_Position.xyz / gl_Position.w; - return; - } - - - vec3 ndcCenter = clipCenter.xyz / clipCenter.w; - - - mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion); - mat3 cov3D = RS * transpose(RS); - - - vec2 scaledRenderSize = renderSize * focalAdjustment; - vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]); - - mat3 J; - if(isOrthographic) { - J = mat3( - focal.x, 0.0, 0.0, - 0.0, focal.y, 0.0, - 0.0, 0.0, 0.0 - ); - } else { - float invZ = 1.0 / viewCenter.z; - vec2 J1 = focal * invZ; - vec2 J2 = -(J1 * viewCenter.xy) * invZ; - J = mat3( - J1.x, 0.0, J2.x, - 0.0, J1.y, J2.y, - 0.0, 0.0, 0.0 - ); - } - - - - - - - - - mat3 cov2D = transpose(J) * cov3D * J; - float a = cov2D[0][0]; - float d = cov2D[1][1]; - float b = cov2D[0][1]; - - - a += preBlurAmount; - d += preBlurAmount; - - float fullBlurAmount = blurAmount; - if ((focalDistance > 0.0) && (apertureAngle > 0.0)) { - float focusRadius = maxPixelRadius; - if (viewCenter.z < 0.0) { - float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z); - float apertureRadius = focal.x * tan(0.5 * apertureAngle); - focusRadius = focusBlur * apertureRadius; - } - fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius)); - } - - - float detOrig = a * d - b * b; - a += fullBlurAmount; - d += fullBlurAmount; - float det = a * d - b * b; - - - float blurAdjust = sqrt(max(0.0, detOrig / det)); - rgba.a *= blurAdjust; - if (rgba.a < minAlpha) { - return; - } - - - float eigenAvg = 0.5 * (a + d); - float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det)); - float eigen1 = eigenAvg + eigenDelta; - float eigen2 = eigenAvg - eigenDelta; - - vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a)); - vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x); - - float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1)); - float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2)); - if (scale1 < minPixelRadius && scale2 < minPixelRadius) { - return; - } - - - vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2; - vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset; - vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z); - - vRgba = rgba; - vSplatUv = position.xy * maxStdDev; - vNdc = ndc; - gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw); -}`, Kh = `const float LN_SCALE_MIN = -12.0; -const float LN_SCALE_MAX = 9.0; - -const uint SPLAT_TEX_WIDTH_BITS = 11u; -const uint SPLAT_TEX_HEIGHT_BITS = 11u; -const uint SPLAT_TEX_DEPTH_BITS = 11u; -const uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS; - -const uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS; -const uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS; -const uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS; - -const uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u; -const uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u; -const uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u; - -const uint F16_INF = 0x7c00u; -const float PI = 3.1415926535897932384626433832795; - -const float INFINITY = 1.0 / 0.0; -const float NEG_INFINITY = -INFINITY; - -float sqr(float x) { - return x * x; -} - -float pow4(float x) { - float x2 = x * x; - return x2 * x2; -} - -float pow8(float x) { - float x4 = pow4(x); - return x4 * x4; -} - -vec3 srgbToLinear(vec3 rgb) { - return pow(rgb, vec3(2.2)); -} - -vec3 linearToSrgb(vec3 rgb) { - return pow(rgb, vec3(1.0 / 2.2)); -} +vec3 linearToSrgb(vec3 rgb) { + return pow(rgb, vec3(1.0 / 2.2)); +} uint encodeQuatOctXy88R8(vec4 q) { @@ -7261,7 +6024,7 @@ vec3 debugColorHue(uint i) { vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); return mix(vec3(1.0), rgb, 0.85); -}`, eh = `precision highp float; +}`, $0 = `precision highp float; precision highp int; #include @@ -7272,6 +6035,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -7303,11 +6067,12 @@ void main() { rgba.a = mix(min1a, min1a * exp(exponent), falloff); } else { + float kernel = gaussianKernel(z2, gaussianK); if (rgba.a <= 1.0) { - rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff); + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); } else { float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); - float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a); + float alpha = 1.0 - pow(1.0 - kernel, a); rgba.a = mix(1.0, alpha, falloff); } } @@ -7326,7 +6091,7 @@ void main() { #endif #include -}`, rh = `precision highp float; +}`, AG = `precision highp float; precision highp int; precision highp usampler2DArray; @@ -7343,6 +6108,7 @@ uniform vec4 renderToViewQuat; uniform vec3 renderToViewPos; uniform mat3 renderToViewBasis; uniform float maxStdDev; +uniform float gaussianK; uniform float minPixelRadius; uniform float maxPixelRadius; uniform bool enableExtSplats; @@ -7428,7 +6194,7 @@ void main() { } } - adjustedStdDev = maxStdDev; + float adjustedMaxStdDev = maxStdDev; if (rgba.a > 1.0) { rgba.a = min(rgba.a * 4.0 - 3.0, 5.0); @@ -7442,8 +6208,9 @@ void main() { } - adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); + adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); } + adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK); vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos; @@ -7594,20 +6361,18 @@ void main() { #include }`; -let MQ = null; -function Ag() { - return MQ || (G.ShaderChunk.splatDefines = Kh, MQ = { - oldSplatVertex: Yh, - oldSplatFragment: Lh, - splatVertex: rh, - splatFragment: eh, - computeVec4Template: Hh, - computeUvec4Vec4Template: Uh, - computeUvec4x2Vec4Template: th, - computeUvec4Template: Jh - }), MQ; -} -const WA = class WA { +let RQ = null; +function yg() { + return RQ || (a.ShaderChunk.splatDefines = _0, RQ = { + splatVertex: AG, + splatFragment: $0, + computeVec4Template: z0, + computeUvec4Vec4Template: W0, + computeUvec4x2Vec4Template: j0, + computeUvec4Template: V0 + }), RQ; +} +const XA = class XA { constructor({ renderer: A } = {}) { this.renderer = A, this.capacity = 0, this.count = 0; } @@ -7617,7 +6382,7 @@ const WA = class WA { // Ensure we have a buffer large enough for the readback of count indices. // Pass in previous bufer of the desired type. static ensureBuffer(A, I) { - const B = Math.ceil(Math.max(1, A) / P) * P * 4; + const B = Math.ceil(Math.max(1, A) / b) * b * 4; if (I.byteLength >= B) return I; const C = new ArrayBuffer(B); @@ -7627,44 +6392,44 @@ const WA = class WA { return new E(C); } ensureBuffer(A, I) { - return WA.ensureBuffer(A, I); + return XA.ensureBuffer(A, I); } // Ensure our render target is large enough for the readback of capacity indices. ensureCapacity(A) { - const { width: I, height: g, depth: B, maxSplats: C } = BA(A); - (!this.target || C > this.capacity) && (this.dispose(), this.capacity = C, this.target = new G.WebGLArrayRenderTarget(I, g, B, { + const { width: I, height: g, depth: B, maxSplats: C } = iA(A); + (!this.target || C > this.capacity) && (this.dispose(), this.capacity = C, this.target = new a.WebGLArrayRenderTarget(I, g, B, { depthBuffer: !1, stencilBuffer: !1, generateMipmaps: !1, - magFilter: G.NearestFilter, - minFilter: G.NearestFilter - }), this.target.texture.format = G.RGBAFormat, this.target.texture.type = G.UnsignedByteType, this.target.texture.internalFormat = "RGBA8", this.target.scissorTest = !0); + magFilter: a.NearestFilter, + minFilter: a.NearestFilter + }), this.target.texture.format = a.RGBAFormat, this.target.texture.type = a.UnsignedByteType, this.target.texture.internalFormat = "RGBA8", this.target.scissorTest = !0); } // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback, // generating it if necessary and caching the result. prepareProgramMaterial(A) { - let I = WA.readbackProgram.get(A); + let I = XA.readbackProgram.get(A); if (!I) { - const B = cA( + const B = nA( { index: "int" }, { rgba8: "vec4" }, - ({ index: C }) => (A.inputs.index = C, { rgba8: new oB({ rgba8: A.outputs.rgba8 }) }) + ({ index: C }) => (A.inputs.index = C, { rgba8: new QB({ rgba8: A.outputs.rgba8 }) }) ); - WA.programTemplate || (WA.programTemplate = new Fg( - Ag().computeVec4Template - )), I = new DQ({ + XA.programTemplate || (XA.programTemplate = new Gg( + yg().computeVec4Template + )), I = new CQ({ graph: B, inputs: { index: "_index" }, outputs: { rgba8: "target" }, - template: WA.programTemplate + template: XA.programTemplate }), Object.assign(I.uniforms, { targetLayer: { value: 0 }, targetBase: { value: 0 }, targetCount: { value: 0 } - }), WA.readbackProgram.set(A, I); + }), XA.readbackProgram.set(A, I); } const g = I.prepareMaterial(); - return WA.fullScreenQuad.material = g, { program: I, material: g }; + return XA.fullScreenQuad.material = g, { program: I, material: g }; } saveRenderState(A) { return { @@ -7685,15 +6450,15 @@ const WA = class WA { throw new Error("No renderer"); if (!this.target) throw new Error("No target"); - const B = P * XA; + const B = b * vA; I.uniforms.targetBase.value = 0, I.uniforms.targetCount.value = A; let C = 0; for (; C < A; ) { - const E = Math.floor(C / B), D = E * B, i = Math.min( - XA, - Math.ceil((A - D) / P) + const E = Math.floor(C / B), i = E * B, o = Math.min( + vA, + Math.ceil((A - i) / b) ); - I.uniforms.targetLayer.value = E, this.target.scissor.set(0, 0, P, i), g.setRenderTarget(this.target, E), g.xr.enabled = !1, g.autoClear = !1, WA.fullScreenQuad.render(g), C += P * i; + I.uniforms.targetLayer.value = E, this.target.scissor.set(0, 0, b, o), g.setRenderTarget(this.target, E), g.xr.enabled = !1, g.autoClear = !1, XA.fullScreenQuad.render(g), C += b * o; } this.count = A; } @@ -7705,36 +6470,36 @@ const WA = class WA { throw new Error("No renderer"); if (!this.target) throw new Error("No target"); - const g = Math.ceil(this.count / P) * P; + const g = Math.ceil(this.count / b) * b; if (A.byteLength < g * 4) throw new Error( `Readback buffer too small: ${A.byteLength} < ${g * 4}` ); const B = new Uint8Array( A instanceof ArrayBuffer ? A : A.buffer - ), C = P * XA; + ), C = b * vA; let E = 0; - const D = []; + const i = []; for (; E < this.count; ) { - const i = Math.floor(E / C), w = i * C, s = Math.min( - XA, - Math.ceil((this.count - w) / P) + const o = Math.floor(E / C), D = o * C, w = Math.min( + vA, + Math.ceil((this.count - D) / b) ); - I.setRenderTarget(this.target, i); - const o = P * s * 4, y = B.subarray( - w * 4, - w * 4 + o - ), h = I == null ? void 0 : I.readRenderTargetPixelsAsync( + I.setRenderTarget(this.target, o); + const s = b * w * 4, t = B.subarray( + D * 4, + D * 4 + s + ), G = I == null ? void 0 : I.readRenderTargetPixelsAsync( this.target, 0, 0, - P, - s, - y + b, + w, + t ); - D.push(h), E += P * s; + i.push(G), E += b * w; } - return Promise.all(D).then(() => A); + return Promise.all(i).then(() => A); } // Perform render operation to run the Rgba8Readback program // but don't perform the readback yet. @@ -7774,197 +6539,45 @@ const WA = class WA { this.ensureCapacity(I); const { program: C, material: E } = this.prepareProgramMaterial(A); C.update(); - const D = this.saveRenderState(this.renderer); + const i = this.saveRenderState(this.renderer); this.process({ count: I, material: E }); - const i = this.read({ readback: B }); - return this.resetRenderState(this.renderer, D), i; + const o = this.read({ readback: B }); + return this.resetRenderState(this.renderer, i), o; } getTexture() { var A; return (A = this.target) == null ? void 0 : A.texture; } }; -WA.programTemplate = null, WA.readbackProgram = /* @__PURE__ */ new WeakMap(), WA.fullScreenQuad = new VQ( - new G.RawShaderMaterial({ visible: !1 }) +XA.programTemplate = null, XA.readbackProgram = /* @__PURE__ */ new WeakMap(), XA.fullScreenQuad = new vQ( + new a.RawShaderMaterial({ visible: !1 }) ); -let Ig = WA; -const nA = class nA { - constructor(A = {}) { - if (this.capacity = 0, this.count = 0, this.array = null, this.readback = null, this.source = null, this.needsUpdate = !0, this.dyno = new x({ - key: "rgbaArray", - type: RB, - globals: () => [lw], - value: { - texture: nA.getEmpty(), - count: 0 - }, - update: (I) => (I.texture = this.getTexture(), I.count = this.count, I) - }), A.array) { - this.array = A.array; - const I = Math.floor(this.array.length / 4); - this.capacity = Math.ceil(I / P) * P, this.capacity > I && (this.array = new Uint8Array(this.capacity * 4), this.array.set(A.array)), this.count = Math.min( - I, - A.count ?? Number.POSITIVE_INFINITY - ); - } else - this.capacity = A.capacity ?? 0, this.count = 0; - } - // Free up resources - dispose() { - this.readback && (this.readback.dispose(), this.readback = null), this.source && (this.source.dispose(), this.source = null); - } - // Ensure that our array is large enough to hold capacity RGBA8 values. - ensureCapacity(A) { - var I; - if (!this.array || A > (((I = this.array) == null ? void 0 : I.length) ?? 0) / 4) { - this.capacity = BA(A).maxSplats; - const g = new Uint8Array(this.capacity * 4); - this.array && g.set(this.array), this.array = g; - } - return this.array; - } - // Get the THREE.DataArrayTexture from either the readback or the source. - getTexture() { - var I; - let A = (I = this.readback) == null ? void 0 : I.getTexture(); - return (this.source || this.array) && (A = this.maybeUpdateSource()), A ?? nA.getEmpty(); - } - // Create or get a THREE.DataArrayTexture from the data array. - maybeUpdateSource() { - if (!this.array) - throw new Error("No array"); - if (this.needsUpdate || !this.source) { - if (this.needsUpdate = !1, this.source) { - const { width: A, height: I, depth: g } = this.source.image; - this.capacity !== A * I * g && (this.source.dispose(), this.source = null); - } - if (this.source) - this.array.buffer !== this.source.image.data.buffer && (this.source.image.data = new Uint8Array(this.array.buffer)); - else { - const { width: A, height: I, depth: g } = BA(this.capacity); - this.source = new G.DataArrayTexture( - this.array, - A, - I, - g - ), this.source.format = G.RGBAFormat, this.source.type = G.UnsignedByteType, this.source.internalFormat = "RGBA8", this.source.needsUpdate = !0; - } - this.source.needsUpdate = !0; - } - return this.source; - } - // Generate the RGBA8 values from a Rgba8Readback dyno program. - render({ - reader: A, - count: I, - renderer: g - }) { - this.readback || (this.readback = new Ig({ renderer: g })), this.readback.render({ reader: A, count: I, renderer: g }), this.capacity = this.readback.capacity, this.count = this.readback.count; - } - // Extract the RGBA8 values from a PackedSplats collection. - fromPackedSplats({ - packedSplats: A, - base: I, - count: g, - renderer: B - }) { - const { dynoSplats: C, dynoBase: E, dynoCount: D, reader: i } = nA.makeDynos(); - return C.packedSplats = A, E.value = I, D.value = g, this.render({ reader: i, count: g, renderer: B }), this; - } - // Read back the RGBA8 values from the readback buffer. - async read() { - if (!this.readback) - throw new Error("No readback"); - return (!this.array || this.array.length < this.count * 4) && (this.array = new Uint8Array(this.capacity * 4)), (await this.readback.readback({ readback: this.array })).subarray(0, this.count * 4); - } - async getArray() { - if (this.readback) - return await this.read(); - if (this.array) - return this.array; - throw new Error("No array"); - } - // Can be used where you need an uninitialized THREE.DataArrayTexture like - // a uniform you will update with the result of this.getTexture() later. - static getEmpty() { - if (!nA.emptySource) { - const A = new Uint8Array(4); - nA.emptySource = new G.DataArrayTexture(A, 1, 1, 1), nA.emptySource.format = G.RGBAFormat, nA.emptySource.type = G.UnsignedByteType, nA.emptySource.internalFormat = "RGBA8", nA.emptySource.needsUpdate = !0; - } - return nA.emptySource; - } - // Create a dyno program that can extract RGBA8 values from a PackedSplats - static makeDynos() { - if (!nA.dynos) { - const A = new MB(), I = new EI({ value: 0 }), g = new EI({ value: 0 }), B = cA( - { index: "int" }, - { rgba8: "vec4" }, - ({ index: C }) => { - if (!C) - throw new Error("index is undefined"); - C = qA(C, I); - const E = lC( - A, - C, - I, - g - ); - return { rgba8: uA(E).outputs.rgba }; - } - ); - nA.dynos = { dynoSplats: A, dynoBase: I, dynoCount: g, reader: B }; - } - return nA.dynos; - } -}; -nA.emptySource = null, nA.dynos = null; -let TQ = nA; -const RB = { type: "RgbaArray" }, lw = oA(` - struct RgbaArray { - sampler2DArray texture; - int count; - }; -`); -function nk(Q, A) { - return new d({ - inTypes: { rgba: RB, index: "int" }, - outTypes: { rgba: "vec4" }, - inputs: { rgba: Q, index: A }, - globals: () => [lw], - statements: ({ inputs: g, outputs: B }) => z(` - if ((${g.index} >= 0) && (${g.index} < ${g.rgba}.count)) { - ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(${g.index}), 0); - } else { - ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0); - } - `) - }).outputs.rgba; -} -var nh = /* @__PURE__ */ ((Q) => (Q.ALL = "all", Q.PLANE = "plane", Q.SPHERE = "sphere", Q.BOX = "box", Q.ELLIPSOID = "ellipsoid", Q.CYLINDER = "cylinder", Q.CAPSULE = "capsule", Q.INFINITE_CONE = "infinite_cone", Q))(nh || {}); -function dh(Q) { - switch (Q) { - case "all": - return 0; - case "plane": - return 1; - case "sphere": - return 2; - case "box": - return 3; - case "ellipsoid": - return 4; - case "cylinder": - return 5; - case "capsule": - return 6; - case "infinite_cone": - return 7; - default: - throw new Error(`Unknown SDF type: ${Q}`); +let cg = XA; +var IG = /* @__PURE__ */ ((Q) => (Q.ALL = "all", Q.PLANE = "plane", Q.SPHERE = "sphere", Q.BOX = "box", Q.ELLIPSOID = "ellipsoid", Q.CYLINDER = "cylinder", Q.CAPSULE = "capsule", Q.INFINITE_CONE = "infinite_cone", Q))(IG || {}); +function gG(Q) { + switch (Q) { + case "all": + return 0; + case "plane": + return 1; + case "sphere": + return 2; + case "box": + return 3; + case "ellipsoid": + return 4; + case "cylinder": + return 5; + case "capsule": + return 6; + case "infinite_cone": + return 7; + default: + throw new Error(`Unknown SDF type: ${Q}`); } } -var qh = /* @__PURE__ */ ((Q) => (Q.MULTIPLY = "multiply", Q.SET_RGB = "set_rgb", Q.ADD_RGBA = "add_rgba", Q))(qh || {}); -function xh(Q) { +var QG = /* @__PURE__ */ ((Q) => (Q.MULTIPLY = "multiply", Q.SET_RGB = "set_rgb", Q.ADD_RGBA = "add_rgba", Q))(QG || {}); +function BG(Q) { switch (Q) { case "multiply": return 0; @@ -7976,14 +6589,14 @@ function xh(Q) { throw new Error(`Unknown blend mode: ${Q}`); } } -class lh extends G.Object3D { +class CG extends a.Object3D { constructor(A = {}) { super(); - const { type: I, invert: g, opacity: B, color: C, displace: E, radius: D } = A; - this.type = I ?? "sphere", this.invert = g ?? !1, this.opacity = B ?? 1, this.color = C ?? new G.Color(1, 1, 1), this.displace = E ?? new G.Vector3(0, 0, 0), this.radius = D ?? 0; + const { type: I, invert: g, opacity: B, color: C, displace: E, radius: i } = A; + this.type = I ?? "sphere", this.invert = g ?? !1, this.opacity = B ?? 1, this.color = C ?? new a.Color(1, 1, 1), this.displace = E ?? new a.Vector3(0, 0, 0), this.radius = i ?? 0; } } -const IQ = class IQ extends G.Object3D { +const $g = class $g extends a.Object3D { constructor(A = {}) { const { name: I, @@ -7991,9 +6604,9 @@ const IQ = class IQ extends G.Object3D { sdfSmooth: B = 0, softEdge: C = 0, invert: E = !1, - sdfs: D = null + sdfs: i = null } = A; - super(), this.rgbaBlendMode = g, this.sdfSmooth = B, this.softEdge = C, this.invert = E, this.sdfs = D, this.ordering = IQ.nextOrdering++, this.name = I ?? `Edit ${this.ordering}`; + super(), this.rgbaBlendMode = g, this.sdfSmooth = B, this.softEdge = C, this.invert = E, this.sdfs = i, this.ordering = $g.nextOrdering++, this.name = I ?? `Edit ${this.ordering}`; } addSdf(A) { this.sdfs == null && (this.sdfs = []), this.sdfs.includes(A) || this.sdfs.push(A); @@ -8002,37 +6615,37 @@ const IQ = class IQ extends G.Object3D { this.sdfs != null && (this.sdfs = this.sdfs.filter((I) => I !== A)); } }; -IQ.nextOrdering = 1; -let Sg = IQ; -class ph { +$g.nextOrdering = 1; +let Wg = $g; +class EG { constructor({ maxSdfs: A, maxEdits: I }) { - this.maxSdfs = Math.max(16, A ?? 0), this.numSdfs = 0, this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4), this.sdfFloatData = new Float32Array(this.sdfData.buffer), this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs), this.dynoSdfArray = new x({ + this.maxSdfs = Math.max(16, A ?? 0), this.numSdfs = 0, this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4), this.sdfFloatData = new Float32Array(this.sdfData.buffer), this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs), this.dynoSdfArray = new q({ key: "sdfArray", - type: kB, - globals: () => [FB], + type: GB, + globals: () => [hB], value: { numSdfs: 0, sdfTexture: this.sdfTexture }, update: (g) => (g.numSdfs = this.numSdfs, g.sdfTexture = this.sdfTexture, g) - }), this.maxEdits = Math.max(16, I ?? 0), this.numEdits = 0, this.editData = new Uint32Array(this.maxEdits * 4), this.editFloatData = new Float32Array(this.editData.buffer), this.dynoNumEdits = new EI({ value: 0 }), this.dynoEdits = this.newEdits(this.editData, this.maxEdits); + }), this.maxEdits = Math.max(16, I ?? 0), this.numEdits = 0, this.editData = new Uint32Array(this.maxEdits * 4), this.editFloatData = new Float32Array(this.editData.buffer), this.dynoNumEdits = new _A({ value: 0 }), this.dynoEdits = this.newEdits(this.editData, this.maxEdits); } newSdfTexture(A, I) { - const g = new G.DataTexture( + const g = new a.DataTexture( A, 8, I, - G.RGBAIntegerFormat, - G.UnsignedIntType + a.RGBAIntegerFormat, + a.UnsignedIntType ); return g.internalFormat = "RGBA32UI", g.needsUpdate = !0, g; } newEdits(A, I) { - return new x({ + return new q({ key: "edits", type: "uvec4", count: I, - globals: () => [aB], + globals: () => [yB], value: A }); } @@ -8050,9 +6663,9 @@ class ph { return this.editData[A] = I, g; } updateEditFloatData(A, I) { - ZI[0] = I; - const g = this.editFloatData[A] !== ZI[0]; - return g && (this.editFloatData[A] = ZI[0]), g; + bI[0] = I; + const g = this.editFloatData[A] !== bI[0]; + return g && (this.editFloatData[A] = bI[0]), g; } encodeEdit(A, { sdfFirst: I, @@ -8060,20 +6673,20 @@ class ph { invert: B, rgbaBlendMode: C, softEdge: E, - sdfSmooth: D + sdfSmooth: i }) { - const i = A * 4; - let w = !1; - return w = this.updateEditData(i + 0, C | (B ? 256 : 0)) || w, w = this.updateEditData(i + 1, I | g << 16) || w, w = this.updateEditFloatData(i + 2, E) || w, w = this.updateEditFloatData(i + 3, D) || w, w; + const o = A * 4; + let D = !1; + return D = this.updateEditData(o + 0, C | (B ? 256 : 0)) || D, D = this.updateEditData(o + 1, I | g << 16) || D, D = this.updateEditFloatData(o + 2, E) || D, D = this.updateEditFloatData(o + 3, i) || D, D; } updateSdfData(A, I) { const g = this.sdfData[A] !== I; return this.sdfData[A] = I, g; } updateSdfFloatData(A, I) { - ZI[0] = I; - const g = this.sdfFloatData[A] !== ZI[0]; - return g && (this.sdfFloatData[A] = ZI[0]), g; + bI[0] = I; + const g = this.sdfFloatData[A] !== bI[0]; + return g && (this.sdfFloatData[A] = bI[0]), g; } encodeSdf(A, { sdfType: I, @@ -8081,57 +6694,57 @@ class ph { center: B, quaternion: C, scale: E, - sizes: D - }, i) { - const w = A * 32, s = I | (g ? 256 : 0); - let o = !1; - o = this.updateSdfFloatData(w + 0, (B == null ? void 0 : B.x) ?? 0) || o, o = this.updateSdfFloatData(w + 1, (B == null ? void 0 : B.y) ?? 0) || o, o = this.updateSdfFloatData(w + 2, (B == null ? void 0 : B.z) ?? 0) || o, o = this.updateSdfData(w + 3, s) || o, o = this.updateSdfFloatData(w + 4, (C == null ? void 0 : C.x) ?? 0) || o, o = this.updateSdfFloatData(w + 5, (C == null ? void 0 : C.y) ?? 0) || o, o = this.updateSdfFloatData(w + 6, (C == null ? void 0 : C.z) ?? 0) || o, o = this.updateSdfFloatData(w + 7, (C == null ? void 0 : C.w) ?? 0) || o, o = this.updateSdfFloatData(w + 8, (E == null ? void 0 : E.x) ?? 0) || o, o = this.updateSdfFloatData(w + 9, (E == null ? void 0 : E.y) ?? 0) || o, o = this.updateSdfFloatData(w + 10, (E == null ? void 0 : E.z) ?? 0) || o, o = this.updateSdfData(w + 11, 0) || o, o = this.updateSdfFloatData(w + 12, (D == null ? void 0 : D.x) ?? 0) || o, o = this.updateSdfFloatData(w + 13, (D == null ? void 0 : D.y) ?? 0) || o, o = this.updateSdfFloatData(w + 14, (D == null ? void 0 : D.z) ?? 0) || o, o = this.updateSdfFloatData(w + 15, (D == null ? void 0 : D.w) ?? 0) || o; - const y = Math.min(4, i.length); - for (let h = 0; h < y; ++h) { - const k = w + 16 + h * 4; - o = this.updateSdfFloatData(k + 0, i[h].x) || o, o = this.updateSdfFloatData(k + 1, i[h].y) || o, o = this.updateSdfFloatData(k + 2, i[h].z) || o, o = this.updateSdfFloatData(k + 3, i[h].w) || o; + sizes: i + }, o) { + const D = A * 32, w = I | (g ? 256 : 0); + let s = !1; + s = this.updateSdfFloatData(D + 0, (B == null ? void 0 : B.x) ?? 0) || s, s = this.updateSdfFloatData(D + 1, (B == null ? void 0 : B.y) ?? 0) || s, s = this.updateSdfFloatData(D + 2, (B == null ? void 0 : B.z) ?? 0) || s, s = this.updateSdfData(D + 3, w) || s, s = this.updateSdfFloatData(D + 4, (C == null ? void 0 : C.x) ?? 0) || s, s = this.updateSdfFloatData(D + 5, (C == null ? void 0 : C.y) ?? 0) || s, s = this.updateSdfFloatData(D + 6, (C == null ? void 0 : C.z) ?? 0) || s, s = this.updateSdfFloatData(D + 7, (C == null ? void 0 : C.w) ?? 0) || s, s = this.updateSdfFloatData(D + 8, (E == null ? void 0 : E.x) ?? 0) || s, s = this.updateSdfFloatData(D + 9, (E == null ? void 0 : E.y) ?? 0) || s, s = this.updateSdfFloatData(D + 10, (E == null ? void 0 : E.z) ?? 0) || s, s = this.updateSdfData(D + 11, 0) || s, s = this.updateSdfFloatData(D + 12, (i == null ? void 0 : i.x) ?? 0) || s, s = this.updateSdfFloatData(D + 13, (i == null ? void 0 : i.y) ?? 0) || s, s = this.updateSdfFloatData(D + 14, (i == null ? void 0 : i.z) ?? 0) || s, s = this.updateSdfFloatData(D + 15, (i == null ? void 0 : i.w) ?? 0) || s; + const t = Math.min(4, o.length); + for (let G = 0; G < t; ++G) { + const c = D + 16 + G * 4; + s = this.updateSdfFloatData(c + 0, o[G].x) || s, s = this.updateSdfFloatData(c + 1, o[G].y) || s, s = this.updateSdfFloatData(c + 2, o[G].z) || s, s = this.updateSdfFloatData(c + 3, o[G].w) || s; } - return o; + return s; } // Update the SDFs and edits from an array of SplatEdits and their // associated SplatEditSdfs, updating it for the dyno shader program. update(A) { - const I = A.reduce((o, { sdfs: y }) => o + y.length, 0), g = this.ensureCapacity({ + const I = A.reduce((s, { sdfs: t }) => s + t.length, 0), g = this.ensureCapacity({ maxEdits: A.length, maxSdfs: I - }), B = [new G.Vector4(), new G.Vector4()], C = new G.Vector3(), E = new G.Quaternion(), D = new G.Vector3(), i = new G.Vector4(); - let w = 0, s = g; - A.length !== this.dynoNumEdits.value && (this.dynoNumEdits.value = A.length, this.numEdits = A.length, s = !0); - for (const [o, { edit: y, sdfs: h }] of A.entries()) { - s = this.encodeEdit(o, { - sdfFirst: w, - sdfCount: h.length, - invert: y.invert, - rgbaBlendMode: xh(y.rgbaBlendMode), - softEdge: y.softEdge, - sdfSmooth: y.sdfSmooth - }) || s; - let k = !1; - for (const R of h) - i.set(R.scale.x, R.scale.y, R.scale.z, R.radius), R.scale.setScalar(1), R.updateMatrixWorld(), R.matrixWorld.clone().invert().decompose(C, E, D), R.scale.set(i.x, i.y, i.z), R.updateMatrixWorld(), B[0].set(R.color.r, R.color.g, R.color.b, R.opacity), B[1].set(R.displace.x, R.displace.y, R.displace.z, 1), k = this.encodeSdf( - w, + }), B = [new a.Vector4(), new a.Vector4()], C = new a.Vector3(), E = new a.Quaternion(), i = new a.Vector3(), o = new a.Vector4(); + let D = 0, w = g; + A.length !== this.dynoNumEdits.value && (this.dynoNumEdits.value = A.length, this.numEdits = A.length, w = !0); + for (const [s, { edit: t, sdfs: G }] of A.entries()) { + w = this.encodeEdit(s, { + sdfFirst: D, + sdfCount: G.length, + invert: t.invert, + rgbaBlendMode: BG(t.rgbaBlendMode), + softEdge: t.softEdge, + sdfSmooth: t.sdfSmooth + }) || w; + let c = !1; + for (const h of G) + o.set(h.scale.x, h.scale.y, h.scale.z, h.radius), h.scale.setScalar(1), h.updateMatrixWorld(), h.matrixWorld.clone().invert().decompose(C, E, i), h.scale.set(o.x, o.y, o.z), h.updateMatrixWorld(), B[0].set(h.color.r, h.color.g, h.color.b, h.opacity), B[1].set(h.displace.x, h.displace.y, h.displace.z, 1), c = this.encodeSdf( + D, { - sdfType: dh(R.type), - invert: R.invert, + sdfType: gG(h.type), + invert: h.invert, center: C, quaternion: E, - scale: D, - sizes: i + scale: i, + sizes: o }, B - ) || k, w += 1; - this.numSdfs = w, k && (this.sdfTexture.needsUpdate = !0), s || (s = k); + ) || c, D += 1; + this.numSdfs = D, c && (this.sdfTexture.needsUpdate = !0), w || (w = c); } - return { updated: s, dynoUpdated: g }; + return { updated: w, dynoUpdated: g }; } // Modify a Gsplat in a dyno shader program using the current edits and SDFs. modify(A) { - return fh( + return iG( A, this.dynoSdfArray, this.dynoNumEdits, @@ -8139,7 +6752,7 @@ class ph { ); } modifyCov(A) { - return bh( + return DG( A, this.dynoSdfArray, this.dynoNumEdits, @@ -8147,7 +6760,7 @@ class ph { ); } } -const kB = { type: "SdfArray" }, FB = oA(` +const GB = { type: "SdfArray" }, hB = wA(` struct SdfArray { int numSdfs; usampler2D sdfTexture; @@ -8312,7 +6925,7 @@ const kB = { type: "SdfArray" }, FB = oA(` return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0) : clamp(-distance / softEdge + 0.5, 0.0, 1.0); } -`), aB = oA(` +`), yB = wA(` const uint EDIT_FLAG_BLEND = 0xFFu; const uint EDIT_BLEND_MULTIPLY = 0u; const uint EDIT_BLEND_SET_RGB = 1u; @@ -8371,26 +6984,26 @@ const kB = { type: "SdfArray" }, FB = oA(` applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba); } `); -function fh(Q, A, I, g) { - return new d({ +function iG(Q, A, I, g) { + return new l({ inTypes: { - gsplat: Z, - sdfArray: kB, + gsplat: V, + sdfArray: GB, numEdits: "int", rgbaDisplaceEdits: "uvec4" }, - outTypes: { gsplat: Z }, - globals: () => [FB, aB], + outTypes: { gsplat: V }, + globals: () => [hB, yB], inputs: { gsplat: Q, sdfArray: A, numEdits: I, rgbaDisplaceEdits: g }, statements: ({ inputs: C, outputs: E }) => { - const { sdfArray: D, numEdits: i, rgbaDisplaceEdits: w } = C, { gsplat: s } = E; + const { sdfArray: i, numEdits: o, rgbaDisplaceEdits: D } = C, { gsplat: w } = E; return z(` - ${s} = ${C.gsplat}; - if (isGsplatActive(${s}.flags)) { - for (int editIndex = 0; editIndex < ${i}; ++editIndex) { + ${w} = ${C.gsplat}; + if (isGsplatActive(${w}.flags)) { + for (int editIndex = 0; editIndex < ${o}; ++editIndex) { applyPackedRgbaDisplaceEdit( - ${w}[editIndex], ${D}.sdfTexture, ${D}.numSdfs, - ${s}.center, ${s}.rgba + ${D}[editIndex], ${i}.sdfTexture, ${i}.numSdfs, + ${w}.center, ${w}.rgba ); } } @@ -8398,26 +7011,26 @@ function fh(Q, A, I, g) { } }).outputs.gsplat; } -function bh(Q, A, I, g) { - return new d({ +function DG(Q, A, I, g) { + return new l({ inTypes: { - covsplat: eA, - sdfArray: kB, + covsplat: KA, + sdfArray: GB, numEdits: "int", rgbaDisplaceEdits: "uvec4" }, - outTypes: { covsplat: eA }, - globals: () => [FB, aB], + outTypes: { covsplat: KA }, + globals: () => [hB, yB], inputs: { covsplat: Q, sdfArray: A, numEdits: I, rgbaDisplaceEdits: g }, statements: ({ inputs: C, outputs: E }) => { - const { sdfArray: D, numEdits: i, rgbaDisplaceEdits: w } = C, { covsplat: s } = E; + const { sdfArray: i, numEdits: o, rgbaDisplaceEdits: D } = C, { covsplat: w } = E; return z(` - ${s} = ${C.covsplat}; - if (isCovSplatActive(${s}.flags)) { - for (int editIndex = 0; editIndex < ${i}; ++editIndex) { + ${w} = ${C.covsplat}; + if (isCovSplatActive(${w}.flags)) { + for (int editIndex = 0; editIndex < ${o}; ++editIndex) { applyPackedRgbaDisplaceEdit( - ${w}[editIndex], ${D}.sdfTexture, ${D}.numSdfs, - ${s}.center, ${s}.rgba + ${D}[editIndex], ${i}.sdfTexture, ${i}.numSdfs, + ${w}.center, ${w}.rgba ); } } @@ -8425,16 +7038,16 @@ function bh(Q, A, I, g) { } }).outputs.covsplat; } -const ZI = new Float32Array(1); -class Ph { +const bI = new Float32Array(1); +class Hy { constructor(A) { this.modifier = A, this.cache = /* @__PURE__ */ new Map(); } apply(A) { let I = this.cache.get(A); - return I || (I = cA( + return I || (I = nA( { index: "int" }, - { gsplat: Z }, + { gsplat: V }, ({ index: g }) => { const { gsplat: B } = A.apply({ index: g }); return this.modifier.apply({ gsplat: B }); @@ -8442,19 +7055,19 @@ class Ph { ), this.cache.set(A, I)), I; } } -class XI { +class mI { // Create the dyno uniforms that parameterize the transform, setting them // to initial values that are different from any valid transform. constructor() { - this.scale = new pI({ value: Number.NEGATIVE_INFINITY }), this.rotate = new mI({ - value: new G.Quaternion( + this.scale = new vI({ value: Number.NEGATIVE_INFINITY }), this.rotate = new zI({ + value: new a.Quaternion( Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY ) - }), this.translate = new DI({ - value: new G.Vector3( + }), this.translate = new UI({ + value: new a.Vector3( Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY @@ -8463,20 +7076,20 @@ class XI { } // Apply the transform to a Vec3 position in a dyno program. apply(A) { - return ww(A, { + return jD(A, { scale: this.scale, rotate: this.rotate, translate: this.translate }); } applyDir(A) { - return ow(A, { + return zD(A, { rotate: this.rotate }); } // Apply the transform to a Gsplat in a dyno program. applyGsplat(A) { - return CB(A, { + return gC(A, { scale: this.scale, rotate: this.rotate, translate: this.translate @@ -8484,7 +7097,7 @@ class XI { } // Update the uniforms to match the given transform matrix. updateFromMatrix(A) { - const I = new G.Vector3(), g = new G.Quaternion(), B = new G.Vector3(); + const I = new a.Vector3(), g = new a.Quaternion(), B = new a.Vector3(); A.decompose(B, g, I); const C = (I.x + I.y + I.z) / 3; let E = !1; @@ -8497,21 +7110,21 @@ class XI { } class Kg { constructor() { - this.basis = new sB({ value: new G.Matrix3() }), this.offset = new DI({ value: new G.Vector3() }); + this.basis = new BB({ value: new a.Matrix3() }), this.offset = new UI({ value: new a.Vector3() }); } // Apply the transform to a Vec3 position in a dyno program. apply(A) { - const I = kA(this.basis, A); - return qA(I, this.offset); + const I = SA(this.basis, A); + return xA(I, this.offset); } applyDir(A) { - return kA(this.basis, A); + return SA(this.basis, A); } // Apply the transform to a Gsplat in a dyno program. applyCovSplat(A) { - return new d({ - inTypes: { covsplat: eA, basis: "mat3", offset: "vec3" }, - outTypes: { covsplat: eA }, + return new l({ + inTypes: { covsplat: KA, basis: "mat3", offset: "vec3" }, + outTypes: { covsplat: KA }, inputs: { covsplat: A, basis: this.basis, offset: this.offset }, statements: ({ inputs: I, outputs: g }) => { const { covsplat: B, basis: C, offset: E } = I; @@ -8539,7 +7152,7 @@ class Kg { } // Update the uniforms to match the given transform matrix. updateFromMatrix(A) { - const I = new G.Matrix3().setFromMatrix4(A), g = new G.Vector3().setFromMatrixColumn(A, 3), B = !I.equals(this.basis.value) || !g.equals(this.offset.value); + const I = new a.Matrix3().setFromMatrix4(A), g = new a.Vector3().setFromMatrixColumn(A, 3), B = !I.equals(this.basis.value) || !g.equals(this.offset.value); return B && (this.basis.value.copy(I), this.offset.value.copy(g)), B; } // Update this transform to match the object's to-world transform. @@ -8547,7 +7160,7 @@ class Kg { return A.updateMatrixWorld(), this.updateFromMatrix(A.matrixWorld); } } -class PI extends G.Object3D { +class Sg extends a.Object3D { constructor({ numSplats: A, generator: I, @@ -8570,4994 +7183,5570 @@ class PI extends G.Object3D { A && this.updateVersion(); } } -const QA = class QA { - constructor({ - extSplats: A, - covSplats: I - } = {}) { - if (this.time = 0, this.deltaTime = 0, this.viewToWorld = new G.Matrix4(), this.viewOrigin = new G.Vector3(), this.viewDirection = new G.Vector3(), this.maxSplats = 0, this.numSplats = 0, this.target = null, this.mapping = [], this.version = -1, this.mappingVersion = -1, this.readback = null, this.readbackSplats = [], !RC) - throw new Error("Spark requires THREE.js r179 or above"); - this.extSplats = A ?? !0, this.covSplats = I ?? !1; +class Fg { + static __wrap(A) { + A = A >>> 0; + const I = Object.create(Fg.prototype); + return I.__wbg_ptr = A, UB.register(I, I.__wbg_ptr, I), I; } - dispose() { - this.target && (this.target.dispose(), this.target = null); + __destroy_into_raw() { + const A = this.__wbg_ptr; + return this.__wbg_ptr = 0, UB.unregister(this), A; } - // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator - // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) - getTextures() { - return this.target ? this.target.textures : QA.emptyTextures; + free() { + const A = this.__destroy_into_raw(); + K.__wbg_csplatarray_free(A, 0); } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(A) { - let I = 0; - const g = A.map((B) => { - const C = I, E = Math.ceil(B / P) * P; - return I += E, { base: C, count: B }; - }); - return { maxSplats: I, mapping: g }; + /** + * @param {number} lod_base + */ + bhatt_lod(A) { + K.csplatarray_bhatt_lod(this.__wbg_ptr, A); } - // Ensures our NewSplatAccumulator.target render target has enough space - // to generate maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate({ maxSplats: A }) { - if (this.target && (A ?? 1) <= this.maxSplats) - return !1; - this.dispose(); - const I = BA(A ?? 1), { width: g, height: B, depth: C } = I; - if (this.maxSplats = I.maxSplats, this.target = new G.WebGLArrayRenderTarget(g, B, C, { - depthBuffer: !1, - stencilBuffer: !1, - generateMipmaps: !1, - magFilter: G.NearestFilter, - minFilter: G.NearestFilter, - format: G.RGBAIntegerFormat, - type: G.UnsignedIntType - }), this.target.scissorTest = !0, this.extSplats) { - const E = this.target.texture.clone(), D = this.target.texture.clone(); - D.format = G.RGBAFormat, D.type = G.UnsignedByteType, D.internalFormat = "RGBA8", this.target.textures = [this.target.texture, E, D]; - } else { - const E = this.target.texture.clone(); - E.format = G.RGBAFormat, E.type = G.UnsignedByteType, E.internalFormat = "RGBA8", this.target.textures = [this.target.texture, E]; - } - return !0; + /** + * @returns {boolean} + */ + has_lod() { + return K.csplatarray_has_lod(this.__wbg_ptr) !== 0; } - saveRenderState(A) { - return { - target: A.getRenderTarget(), - xrEnabled: A.xr.enabled, - autoClear: A.autoClear - }; + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(A) { + K.csplatarray_inject_rgba8(this.__wbg_ptr, A); } - resetRenderState(A, I) { - A.setRenderTarget(I.target), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; + /** + * @returns {number} + */ + len() { + return K.csplatarray_len(this.__wbg_ptr) >>> 0; } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(A, I) { - const g = A ?? I; - if (!g) - throw new Error("Either generator or covGenerator must be provided"); - let B = QA.generatorProgram.get(g); - if (!B) { - const E = cA( - { index: "int" }, - {}, - ({ index: D }, i, { roots: w }) => { - if (A && (A.inputs.index = D), I && (I.inputs.index = D), this.extSplats) - if (this.covSplats) - if (I) { - const s = lQ(I.outputs.covsplat); - w.push(s); - } else if (A) { - const s = Xg(A.outputs.gsplat), o = lQ(s); - w.push(o); - } else - throw new Error("Generator must be provided"); - else if (A) { - const s = QE(A.outputs.gsplat); - w.push(s); - } else - throw new Error("Generator must be provided"); - else { - if (this.covSplats) { - let s; - if (I) - s = I.outputs.covsplat; - else if (A) - s = Xg(A.outputs.gsplat); - else - throw new Error("Generator must be provided"); - const o = iI( - Wg(s).outputs.center, - QA.viewCenterUniform - ), y = kA( - Wg(s).outputs.opacity, - v("float", 0.5) - ); - s = iB({ - covsplat: s, - center: o, - opacity: y - }); - const h = gE( - s, - v("vec4", [0, 1, pA, fA]) - ); - w.push(h); - } else if (A) { - const s = iI( - uA(A.outputs.gsplat).outputs.center, - QA.viewCenterUniform - ), o = kA( - uA(A.outputs.gsplat).outputs.opacity, - v("float", 0.5) - ), y = CI({ - gsplat: A.outputs.gsplat, - center: s, - opacity: o - }), h = wB( - y, - v("vec4", [0, 1, pA, fA]) - ); - w.push(h); - } else - throw new Error("Generator must be provided"); - if (!A) - throw new Error("Generator must be provided"); - } - if (A) { - const s = BE( - A.outputs.gsplat, - QA.viewCenterUniform, - QA.viewDirUniform, - QA.sortRadialUniform - ); - w.push(s); - } - if (I) { - const s = CE( - I.outputs.covsplat, - QA.viewCenterUniform, - QA.viewDirUniform, - QA.sortRadialUniform - ); - w.push(s); - } - } - ); - B = new DQ({ - graph: E, - inputs: { index: "_index" }, - outputs: {}, - template: this.extSplats ? QA.programExtTemplate : QA.programTemplate - // consoleLog: true, - }), QA.generatorProgram.set(g, B); - } - Object.assign(B.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }); - const C = B.prepareMaterial(); - return QA.fullScreenQuad.material = C, { program: B, material: C }; + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(A, I) { + K.csplatarray_tiny_lod(this.__wbg_ptr, A, I); } - generate({ - generator: A, - covGenerator: I, - base: g, - count: B, - renderer: C - }) { - if (!this.target) - throw new Error("Target must be initialized with ensureGenerate"); - if (g + B > this.maxSplats) - throw new Error("Base + count exceeds maxSplats"); - const { program: E, material: D } = this.prepareProgramMaterial( - A, - I - ); - E.update(); - const i = this.saveRenderState(C), w = Math.ceil((g + B) / P) * P, s = P * XA; - for (D.uniforms.targetBase.value = g, D.uniforms.targetCount.value = B; g < w; ) { - const o = Math.floor(g / s); - D.uniforms.targetLayer.value = o; - const y = o * s, h = Math.floor((g - y) / P), k = Math.min( - XA, - Math.ceil((w - y) / P) - ); - this.target.scissor.set( - 0, - h, - P, - k - h - ), C.setRenderTarget(this.target, o), C.xr.enabled = !1, C.autoClear = !1, QA.fullScreenQuad.render(C), g += P * (k - h); - } - return this.resetRenderState(C, i), { nextBase: w }; + /** + * @returns {object} + */ + to_extsplats() { + const A = K.csplatarray_to_extsplats(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); } - prepareGenerate({ - renderer: A, - scene: I, - time: g, - camera: B, - sortRadial: C, - renderSize: E, - previous: D, - lodInstances: i - }) { - var M; - this.viewToWorld.copy(B.matrixWorld), B.getWorldPosition(this.viewOrigin), B.getWorldDirection(this.viewDirection), QA.viewCenterUniform.value.copy(this.viewOrigin), QA.viewDirUniform.value.copy(this.viewDirection), QA.sortRadialUniform.value = C, this.time = g, this.deltaTime = g - D.time; - const w = []; - I.traverse((c) => { - c instanceof PI && (!B.layers || B.layers.test(c.layers)) && w.push(c); - }); - const s = /* @__PURE__ */ new Set(); - I.traverseVisible((c) => { - if (c instanceof Sg) { - let N = c.parent; - for (; N != null && !(N instanceof vA); ) - N = N.parent; - N == null && s.add(c); - } - }); - const o = Array.from(s); - for (const c of w) - try { - (M = c.frameUpdate) == null || M.call(c, { - renderer: A, - object: c, - time: this.time, - deltaTime: this.deltaTime, - viewToWorld: this.viewToWorld, - camera: B, - renderSize: E, - globalEdits: o, - lodIndices: i && c instanceof vA ? i.get(c) : void 0 - }); - } catch (N) { - console.error("frameUpdate error", N), c.generator = void 0, c.covGenerator = void 0, c.generatorError = N; - } - const y = []; - I.traverseVisible((c) => { - c instanceof PI && (!B.layers || B.layers.test(c.layers)) && y.push(c); - }); - const h = y.map( - (c) => c.numSplats - ), { maxSplats: k, mapping: R } = this.generateMapping(h), F = D.mapping.reduce((c, N) => (c.set(N.node, N), c), /* @__PURE__ */ new Map()); - this.mapping = [], this.numSplats = 0, R.forEach(({ base: c, count: N }, U) => { - const J = y[U], t = F.get(J); - t && t.count !== J.numSplats && J.updateMappingVersion(); - const { generator: H, covGenerator: K } = J; - if ((H || K) && N > 0) { - const { version: Y, mappingVersion: L } = J; - this.mapping.push({ - node: J, - generator: H, - covGenerator: K, - version: Y, - mappingVersion: L, - base: c, - count: N - }), this.numSplats = Math.max(this.numSplats, c + N); - } - }); - const { splatsUpdated: a, mappingUpdated: S } = D.checkVersions( - this.mapping - ); - return this.version = D.version + (a ? 1 : 0), this.mappingVersion = D.mappingVersion + (S ? 1 : 0), { - sameMapping: !S, - version: this.version, - mappingVersion: this.mappingVersion, - visibleGenerators: y, - generate: () => { - this.ensureGenerate({ maxSplats: k }); - for (const { node: c, base: N, count: U } of this.mapping) { - const { generator: J, covGenerator: t } = c; - (J || t) && U > 0 && this.generate({ generator: J, covGenerator: t, base: N, count: U, renderer: A }); - } - }, - readback: async () => { - const c = this.getTextures(); - this.readbackSplats.length === 0 && (this.readbackSplats = [ - new dA({ value: c[0], key: "extSplats" }), - new dA({ value: c[1], key: "extSplats" }) - ]), this.readbackSplats[0].value = c[0], this.readbackSplats[1].value = c[1], this.readback || (this.readback = new Ig({ renderer: A })); - const N = this.readback, U = this.extSplats ? 8 : 4, J = N.ensureBuffer( - this.numSplats * U, - new Uint32Array(0) - ), t = cA( - { index: "int" }, - { rgba8: "vec4" }, - ({ index: H }) => ({ rgba8: new d({ - inTypes: { - index: "int", - extSplats1: "usampler2DArray", - extSplats2: "usampler2DArray" - }, - outTypes: { rgba8: "vec4" }, - inputs: { - index: H, - extSplats1: this.readbackSplats[0], - extSplats2: this.readbackSplats[1] - }, - statements: ({ inputs: Y, outputs: L }) => this.extSplats ? z(` - int indexDiv8 = ${Y.index} >> 3; - ivec3 coord = splatTexCoord(indexDiv8); - uvec4 packedData; - if ((${Y.index} & 4) == 0) { - packedData = texelFetch(${Y.extSplats1}, coord, 0); - } else { - packedData = texelFetch(${Y.extSplats2}, coord, 0); - } - - int indexMod4 = ${Y.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${L.rgba8} = uintToVec4(data); - `) : z(` - int indexDiv4 = ${Y.index} >> 2; - ivec3 coord = splatTexCoord(indexDiv4); - uvec4 packedData = texelFetch(${Y.extSplats1}, coord, 0); - - int indexMod4 = ${Y.index} & 3; - uint data = (indexMod4 == 0) ? packedData.x - : (indexMod4 == 1) ? packedData.y - : (indexMod4 == 2) ? packedData.z - : packedData.w; - ${L.rgba8} = uintToVec4(data); - `) - }).outputs.rgba8 }) - ); - return await N.renderReadback({ - reader: t, - count: this.numSplats * U, - renderer: A, - readback: J - }); - } - }; + /** + * @returns {object} + */ + to_extsplats_lod() { + const A = K.csplatarray_to_extsplats_lod(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - checkVersions(A) { - if (this.mapping.length !== A.length) - return { splatsUpdated: !0, mappingUpdated: !0 }; - const I = this.mapping.some((B, C) => { - const E = A[C]; - return B.node !== E.node || B.base !== E.base || B.count !== E.count || B.mappingVersion !== E.mappingVersion; - }); - return I ? { splatsUpdated: !0, mappingUpdated: !0 } : { splatsUpdated: this.mapping.some((B, C) => B.version !== A[C].version), mappingUpdated: I }; + /** + * @returns {object} + */ + to_packedsplats() { + const A = K.csplatarray_to_packedsplats(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); } -}; -QA.viewCenterUniform = new DI({ value: new G.Vector3() }), QA.viewDirUniform = new DI({ value: new G.Vector3() }), QA.sortRadialUniform = new bI({ value: !0 }), QA.emptyTexture = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(), QA.emptyTextures = [QA.emptyTexture, QA.emptyTexture], QA.programExtTemplate = new Fg( - Ag().computeUvec4x2Vec4Template -), QA.programTemplate = new Fg( - Ag().computeUvec4Vec4Template -), QA.generatorProgram = /* @__PURE__ */ new WeakMap(), QA.fullScreenQuad = new VQ( - new G.RawShaderMaterial({ visible: !1 }) -); -let qI = QA; -class uh extends G.InstancedBufferGeometry { - constructor() { - super(), this.setAttribute("position", new G.BufferAttribute(Th, 3)), this.setIndex(new G.BufferAttribute(Oh, 1)); + /** + * @returns {object} + */ + to_packedsplats_lod() { + const A = K.csplatarray_to_packedsplats_lod(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); + } + /** + * @returns {number} + */ + get maxShDegree() { + return K.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr) >>> 0; + } + /** + * @returns {number} + */ + get numSplats() { + return K.__wbg_get_csplatarray_numSplats(this.__wbg_ptr) >>> 0; + } + /** + * @param {number} arg0 + */ + set maxShDegree(A) { + K.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, A); + } + /** + * @param {number} arg0 + */ + set numSplats(A) { + K.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, A); } } -const Th = new Float32Array([ - -1, - -1, - 0, - 1, - -1, - 0, - 1, - 1, - 0, - -1, - 1, - 0 -]), Oh = new Uint16Array([0, 1, 2, 0, 2, 3]), iA = class iA extends G.Mesh { - constructor(A) { - if (!A) - throw new Error("SparkRenderer options are required"); - if (!A.renderer) - throw new Error("renderer is required in SparkRenderer options"); - const I = iA.makeUniforms(); - Object.assign(I, A.extraUniforms ?? {}); - const g = Ag(), B = A.premultipliedAlpha ?? !0, C = new uh(), E = new G.ShaderMaterial({ - glslVersion: G.GLSL3, - vertexShader: A.vertexShader ?? g.splatVertex, - fragmentShader: A.fragmentShader ?? g.splatFragment, - uniforms: I, - premultipliedAlpha: B, - transparent: A.transparent ?? !0, - depthTest: A.depthTest ?? !0, - depthWrite: A.depthWrite ?? !1, - side: G.DoubleSide, - allowOverride: !1 - }); - super(C, E), this.renderSize = new G.Vector2(), this.lastFrame = -1, this.updateTimeoutId = -1, this.orderingTexture = null, this.maxSplats = 0, this.activeSplats = 0, this.accumulators = [], this.sorting = !1, this.sortDirty = !1, this.lastSortTime = 0, this.sortWorker = null, this.sortTimeoutId = -1, this.sortedCenter = new G.Vector3().setScalar(Number.NEGATIVE_INFINITY), this.sortedDir = new G.Vector3().setScalar(0), this.readback32 = new Uint32Array(0), this.lastLodRaycastTime = 0, this.lodWorker = null, this.lodMeshes = [], this.lodDirty = !1, this.lodIds = /* @__PURE__ */ new Map(), this.lodIdToSplats = /* @__PURE__ */ new Map(), this.lodInitQueue = [], this.lodInstances = /* @__PURE__ */ new Map(), this.lodUpdates = [], this.lastTraverseTime = 0, this.pagerId = 0, this.superXY = 1, this.flushAfterGenerate = !1, this.flushAfterRead = !1, this.readPause = 1, this.sortPause = 0, this.sortDelay = 0, this.pageSizeWarning = !1, this.material = E, this.uniforms = I, this.frustumCulled = !1, this.renderer = A.renderer, this.onDirty = A.onDirty, this.dirty = !0, this.autoUpdate = A.autoUpdate ?? !0, this.preUpdate = A.preUpdate ?? !0, this.maxStdDev = A.maxStdDev ?? Math.sqrt(8), this.minPixelRadius = A.minPixelRadius ?? 0, this.maxPixelRadius = A.maxPixelRadius ?? 512, this.accumExtSplats = A.accumExtSplats ?? !1, this.covSplats = A.covSplats ?? !1, this.minAlpha = A.minAlpha ?? 0.5 * (1 / 255), this.enable2DGS = A.enable2DGS ?? !1, this.preBlurAmount = A.preBlurAmount ?? 0, this.blurAmount = A.blurAmount ?? 0.3, this.focalDistance = A.focalDistance ?? 0, this.apertureAngle = A.apertureAngle ?? 0, this.falloff = A.falloff ?? 1, this.clipXY = A.clipXY ?? 1.4, this.focalAdjustment = A.focalAdjustment ?? 1, this.encodeLinear = A.encodeLinear ?? !1, this.sortRadial = A.sortRadial ?? !0, this.minSortIntervalMs = A.minSortIntervalMs ?? 0, this.enableLod = A.enableLod ?? !0, this.enableDriveLod = A.enableDriveLod ?? this.enableLod, this.enableLodFetching = A.enableLodFetching ?? !0, this.lodSplatCount = A.lodSplatCount, this.lodSplatScale = A.lodSplatScale ?? 1, this.lodRenderScale = A.lodRenderScale ?? 1, this.lodInflate = A.lodInflate ?? !1, this.pagedExtSplats = A.pagedExtSplats ?? !1; - const D = mg() ? Rg() ? 96 : 128 : 256; - this.maxPagedSplats = A.maxPagedSplats ?? D * 65536, this.numLodFetchers = A.numLodFetchers ?? 3, this.behindFoveate = A.behindFoveate ?? 0.2, this.coneFov0 = A.coneFov0 ?? 90, this.coneFov = A.coneFov ?? 120, this.coneFoveate = A.coneFoveate ?? 0.4, this.lodRaycast = A.lodRaycast === void 0 ? mg() ? 1e4 : 25e3 : A.lodRaycast, this.lodRaycastIntervalMs = A.lodRaycastIntervalMs ?? 500, this.clock = A.clock ? gB(A.clock) : new G.Clock(); - const i = { - extSplats: this.accumExtSplats, - covSplats: this.covSplats - }; - if (this.display = new qI(i), this.current = this.display, this.accumulators.push(new qI(i)), this.accumulators.push(new qI(i)), A.target) { - const { - width: w, - height: s, - doubleBuffer: o, - superXY: y, - ...h - } = A.target, k = Math.max(1, Math.min(4, y ?? 1)); - if (w * k > 8192 || s * k > 8192) - throw new Error("Target size too large"); - this.superXY = k; - const R = w * k, F = s * k, a = { - format: G.RGBAFormat, - type: G.UnsignedByteType, - colorSpace: G.SRGBColorSpace, - ...h - }; - this.target = new G.WebGLRenderTarget( - R, - F, - a - ), o && (this.backTarget = new G.WebGLRenderTarget( - R, - F, - a - )), this.encodeLinear = A.encodeLinear ?? !0; - } +Symbol.dispose && (Fg.prototype[Symbol.dispose] = Fg.prototype.free); +class Rg { + static __wrap(A) { + A = A >>> 0; + const I = Object.create(Rg.prototype); + return I.__wbg_ptr = A, LB.register(I, I.__wbg_ptr, I), I; } - static makeUniforms() { - return { - // // number of active splats to render - // numSplats: { value: 0 }, - // Size of render viewport in pixels - renderSize: { value: new G.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new G.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new G.Vector3() }, - renderToViewBasis: { value: new G.Matrix3() }, - renderToViewOffset: { value: new G.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.00196078431372549 }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: !1 }, - // Enable ray-splat max response evaluation - // enableRayEval: { value: false }, - // Inflate LoD splats so that opacity <= 1.0 - lodInflate: { value: !1 }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: !1 }, - // Back-to-front sort ordering of splat indices - ordering: { type: "t", value: iA.emptyOrdering }, - enableExtSplats: { value: !1 }, - enableCovSplats: { value: !1 }, - // Gsplat collection to render - extSplats: { type: "t", value: qI.emptyTexture }, - extSplats2: { type: "t", value: qI.emptyTexture }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Debug flag that alternates each frame - debugFlag: { value: !1 } - }; + __destroy_into_raw() { + const A = this.__wbg_ptr; + return this.__wbg_ptr = 0, LB.unregister(this), A; } - dispose() { - this.target && (this.target.dispose(), this.target = void 0), this.backTarget && (this.backTarget.dispose(), this.backTarget = void 0), this.orderingTexture && (this.orderingTexture.dispose(), this.orderingTexture = null); - const A = /* @__PURE__ */ new Set(); - A.add(this.display), A.add(this.current); - for (const g of this.accumulators) - A.add(g); - for (const g of A) - g.dispose(); - const I = this.lodInstances.values(); - this.lodInstances.clear(); - for (const g of I) - g.texture.dispose(); - this.sortWorker && (this.sortWorker.dispose(), this.sortWorker = null), this.lodWorker && (this.lodWorker.dispose(), this.lodWorker = null), this.pager && (this.pager.dispose(), this.pager = void 0); + free() { + const A = this.__destroy_into_raw(); + K.__wbg_gsplatarray_free(A, 0); } - setDirty() { - var A; - this.dirty || (this.dirty = !0, (A = this.onDirty) == null || A.call(this)); + /** + * @returns {number} + */ + get maxShDegree() { + return K.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr) >>> 0; } - onBeforeRender(A, I, g) { - var h; - const B = iA.sparkOverride ?? this, C = A.info.render.frame, E = C !== B.lastFrame; - if (B.lastFrame = C, B.target) - B.renderSize.set(B.target.width, B.target.height); - else { - const k = A.getDrawingBufferSize(B.renderSize); - if (A.xr.isPresenting && k.x === 1 && k.y === 1) { - const R = (h = A.xr.getSession()) == null ? void 0 : h.renderState.baseLayer; - R && (k.x = R.framebufferWidth, k.y = R.framebufferHeight); - } - } - this.uniforms.renderSize.value.copy(B.renderSize); - const D = g; - this.uniforms.near.value = D.near, this.uniforms.far.value = D.far; - const i = this.geometry; - i.instanceCount = B.activeSplats; - const w = new G.Matrix4(); - this.display.extSplats || w.makeTranslation(B.display.viewOrigin); - const y = g.matrixWorld.clone().invert().multiply(w); - if (y.decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new G.Vector3() - ), this.uniforms.renderToViewBasis.value.setFromMatrix4(y), this.uniforms.maxStdDev.value = B.maxStdDev, this.uniforms.minPixelRadius.value = B.minPixelRadius, this.uniforms.maxPixelRadius.value = B.maxPixelRadius, this.uniforms.minAlpha.value = B.minAlpha, this.uniforms.enable2DGS.value = B.enable2DGS, this.uniforms.lodInflate.value = B.lodInflate, this.uniforms.preBlurAmount.value = B.preBlurAmount, this.uniforms.blurAmount.value = B.blurAmount, this.uniforms.focalDistance.value = B.focalDistance, this.uniforms.apertureAngle.value = B.apertureAngle, this.uniforms.falloff.value = B.falloff, this.uniforms.clipXY.value = B.clipXY, this.uniforms.focalAdjustment.value = B.focalAdjustment, this.uniforms.encodeLinear.value = B.encodeLinear, this.uniforms.ordering.value = B.orderingTexture ?? iA.emptyOrdering, this.uniforms.enableExtSplats.value = this.display.extSplats, this.uniforms.enableCovSplats.value = this.display.covSplats, this.display.extSplats) { - const k = B.display.getTextures(); - this.uniforms.extSplats.value = k[0], this.uniforms.extSplats2.value = k[1]; - } else { - const k = B.display.getTextures(); - this.uniforms.extSplats.value = k[0], this.uniforms.extSplats2.value = k[0]; - } - if (this.uniforms.time.value = B.display.time, this.uniforms.deltaTime.value = B.display.deltaTime, this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1, B.autoUpdate && E) { - const k = B.preUpdate && !A.xr.isPresenting, R = A.xr.isPresenting ? A.xr.getCamera() : g; - k ? B.updateInternal({ - scene: I, - camera: R, - autoUpdate: !0 - }) : B.updateTimeoutId === -1 && (B.updateTimeoutId = setTimeout(() => { - B.updateTimeoutId = -1, B.updateInternal({ - scene: I, - camera: R, - autoUpdate: !0 - }); - }, 1)); - } - B.dirty = !1; + /** + * @returns {number} + */ + get numSplats() { + return K.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr) >>> 0; } - clearSplats() { - this.activeSplats = 0, this.display.numSplats = 0, this.setDirty(); + /** + * @param {number} lod_base + */ + bhatt_lod(A) { + K.gsplatarray_bhatt_lod(this.__wbg_ptr, A); } - async update({ - scene: A, - camera: I - }) { - await this.updateInternal({ scene: A, camera: I, autoUpdate: !1 }); + /** + * @returns {boolean} + */ + has_lod() { + return K.gsplatarray_has_lod(this.__wbg_ptr) !== 0; } - // /** - // * Provide additional cameras to prefetch paged splat chunks without - // * affecting main LOD selection. - // */ - // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { - // const next = cameras?.filter(Boolean) ?? []; - // const sameCameras = - // this.prefetchCameras.length === next.length && - // this.prefetchCameras.every((camera, index) => camera === next[index]); - // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { - // return; - // } - // this.prefetchCameras = next; - // this.prefetchLodScale = lodScaleMultiplier; - // this.invalidatePrefetchCache(); - // } - // /** - // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are - // * added or removed from the scene. - // */ - // invalidatePrefetchCache() { - // this.prefetchMeshesCacheScene = undefined; - // } - async updateInternal({ - scene: A, - camera: I, - autoUpdate: g - }) { - const B = this.renderer, C = this.time ?? this.clock.getElapsedTime(), E = I.getWorldPosition(new G.Vector3()), D = I.getWorldDirection(new G.Vector3()), i = E.distanceTo(this.sortedCenter) > 1e-3 || D.dot(this.sortedDir) < 0.999, w = this.accumulators.pop(); - if (!w) - throw new Error("No next accumulator"); - if (w === this.current) - throw new Error( - "Next accumulator is the same as the current accumulator" - ); - const { version: s, mappingVersion: o, visibleGenerators: y, generate: h } = w.prepareGenerate({ - renderer: B, - scene: A, - time: C, - camera: I, - sortRadial: this.sortRadial ?? !0, - renderSize: this.renderSize, - previous: this.current, - lodInstances: this.enableLod ? this.lodInstances : void 0 - }); - let k = !0; - const R = i || s !== this.current.version, F = o !== this.display.mappingVersion; - g && !R && (k = !1), F && this.sorting && (k = !1), k ? (h(), this.flushAfterGenerate && B.getContext().flush(), this.display.mappingVersion === w.mappingVersion ? (this.accumulators.push(this.display), this.display = w) : this.display !== this.current && this.accumulators.push(this.current), this.current = w, this.sortDirty = !0, this.setDirty()) : this.accumulators.push(w), this.enableDriveLod && this.driveLod({ visibleGenerators: y, camera: I, scene: A }), await this.driveSort(); - } - async driveSort() { - if (this.sorting || !this.sortDirty) - return; - this.sortTimeoutId !== -1 && (clearTimeout(this.sortTimeoutId), this.sortTimeoutId = -1); - const A = performance.now(), I = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : A; - if (A < I) { - this.sortTimeoutId = setTimeout(() => { - this.sortTimeoutId = -1, this.driveSort(); - }, I - A); - return; - } - this.sorting = !0, this.sortDirty = !1, this.lastSortTime = A, this.readPause > 0 && await new Promise((o) => setTimeout(o, this.readPause)); - const g = this.current; - this.sortedCenter.copy(g.viewOrigin), this.sortedDir.copy(g.viewDirection); - const { numSplats: B, maxSplats: C } = g, E = Math.max(1, Math.ceil(C / 16384)), D = E * 16384; - this.maxSplats = Math.max(this.maxSplats, D); - const i = new Uint32Array(this.maxSplats), w = Ig.ensureBuffer(C, this.readback32); - this.readback32 = w, await this.readbackDepth({ - current: g, - renderer: this.renderer, - numSplats: B, - readback: w - }), this.sortPause > 0 && await new Promise((o) => setTimeout(o, this.sortPause)), this.sortWorker || (this.sortWorker = new kg()); - const s = await this.sortWorker.call("sortSplats32", { - numSplats: B, - readback: w, - ordering: i - }); - if (this.sortDelay > 0 && await new Promise((o) => setTimeout(o, this.sortDelay)), this.readback32 = s.readback, this.activeSplats = s.activeSplats, this.orderingTexture && E > this.orderingTexture.image.height && (this.orderingTexture.dispose(), this.orderingTexture = null), this.orderingTexture) { - const o = this.renderer, y = o.getContext(); - if (!o.properties.has(this.orderingTexture)) - this.orderingTexture.needsUpdate = !0; - else { - const k = o.properties.get(this.orderingTexture).__webglTexture; - if (!k) - throw new Error("ordering texture not found"); - o.state.activeTexture(y.TEXTURE0), o.state.bindTexture(y.TEXTURE_2D, k), y.bindBuffer(y.PIXEL_UNPACK_BUFFER, null), y.pixelStorei(y.UNPACK_FLIP_Y_WEBGL, !1), y.texSubImage2D( - y.TEXTURE_2D, - 0, - 0, - 0, - 4096, - E, - y.RGBA_INTEGER, - y.UNSIGNED_INT, - // data, - s.ordering - ), o.state.bindTexture(y.TEXTURE_2D, null); - } - } else { - const o = new G.DataTexture( - s.ordering, - 4096, - E, - G.RGBAIntegerFormat, - G.UnsignedIntType - ); - o.internalFormat = "RGBA32UI", o.needsUpdate = !0, this.orderingTexture = o; - } - this.current.mappingVersion === g.mappingVersion && this.current.mappingVersion !== this.display.mappingVersion && (this.accumulators.push(this.display), this.display = this.current), this.sorting = !1, this.setDirty(), this.driveSort(); - } - ensureLodWorker() { - return this.lodWorker || (this.lodWorker = new kg()), this.lodWorker; - } - defaultSplatTarget() { - return IB() ? 5e5 : NC() ? 75e4 : AB() ? 1e6 : Rg() ? 15e5 : 25e5; - } - driveLod({ - visibleGenerators: A, - camera: I, - scene: g - }) { - var h, k; - const B = this.defaultSplatTarget(), E = (this.lodSplatCount ?? B) * this.lodSplatScale; - let D = 0; - if (I instanceof G.PerspectiveCamera) - D = 2 * Math.tan(0.5 * I.fov * Math.PI / 180) / this.renderSize.y; - else if (I instanceof G.OrthographicCamera) { - const R = (I.top - I.bottom) / I.zoom, F = (I.right - I.left) / I.zoom, a = R / Math.max(1, this.renderSize.y), S = F / Math.max(1, this.renderSize.x); - D = Math.min(S, a); - } - D *= this.lodRenderScale; - const i = new G.Vector3(), w = new G.Quaternion(); - if (this.current.viewToWorld.decompose(i, w, new G.Vector3()), this.lodPosOverride && i.copy(this.lodPosOverride), this.lodQuatOverride && w.copy(this.lodQuatOverride).normalize(), this.lastLod) { - (this.lastLod.pixelScaleLimit !== D || this.lastLod.maxSplats !== E) && (this.lodDirty = !0); - const R = i.distanceTo(this.lastLod.pos), F = Math.max(0, 1 - R / 1), a = w.dot(this.lastLod.quat), S = Math.max(0, 1 - (1 - a) / 0.01); - F * S < 0.999 && (this.lodDirty = !0); - } - const s = this.enableLod ? A.filter((R) => { - var F, a; - return R instanceof vA && (((F = R.packedSplats) == null ? void 0 : F.lodSplats) || ((a = R.extSplats) == null ? void 0 : a.lodSplats) || R.paged) && R.enableLod !== !1; - }) : [], o = s.some((R) => R.paged); - this.lodMeshes.length !== s.length ? this.lodDirty = !0 : s.some( - (R, F) => R !== this.lodMeshes[F].mesh || R.version > this.lodMeshes[F].version - ) && (this.lodDirty = !0), this.lodMeshes = s.map((R) => ({ - mesh: R, - version: R.version + 1 - })), this.lodInitQueue = []; - const y = performance.now(); - for (const R of s) { - const F = ((h = R.packedSplats) == null ? void 0 : h.lodSplats) ?? ((k = R.extSplats) == null ? void 0 : k.lodSplats) ?? R.paged; - if (F) { - const a = this.lodIds.get(F); - a ? a.lastTouched = y : this.lodInitQueue.push(F); - } - } - this.ensureLodWorker().tryExclusive(async (R) => { - if (o && !this.pager) { - this.pager = new tI({ - renderer: this.renderer, - extSplats: this.pagedExtSplats, - maxSplats: this.maxPagedSplats, - numFetchers: this.numLodFetchers - }); - const { lodId: F } = await R.call("newLodTree", { - capacity: this.pager.maxSplats - }); - this.pagerId = F; - } - if (this.pager) - for (const { mesh: F } of this.lodMeshes) - F.paged && !F.paged.pager && (F.paged.pager = this.pager); - if (this.lodInitQueue.length > 0) { - const F = this.lodInitQueue; - for (this.lodInitQueue = []; F.length > 0; ) { - const a = F.shift(); - a && (await this.initLodTree(R, a), this.lodDirty = !0); - } - } - if (this.pager) { - const F = this.pager.consumeLodTreeUpdates(); - for (const { splats: a, page: S, chunk: M, numSplats: c, lodTree: N } of F) { - const U = this.lodIds.get(a); - U && (N && M === 0 && (U.rootPage = S), this.lodUpdates.push({ - lodId: U.lodId, - pageBase: S * this.pager.pageSplats, - chunkBase: M * this.pager.pageSplats, - count: c, - lodTreeData: N - })); - } - } - if (this.lodUpdates.length > 0) { - const F = this.lodUpdates; - this.lodUpdates = [], await R.call("updateLodTrees", { ranges: F }), this.lodDirty = !0; - } - if (this.lodDirty) { - const F = performance.now(), a = new G.Vector3(); - if (this.lastLod) { - const S = Math.max(1, F - this.lastLod.timestamp); - a.copy(i).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / S); - } - this.lastLod = { - pos: i, - quat: w, - pixelScaleLimit: D, - maxSplats: E, - timestamp: F - }, this.lodDirty = !1, await this.updateLodInstances( - R, - a, - s, - E, - i, - w, - D - ), this.currentLod = this.lastLod, this.setDirty(); - } - await this.cleanupLodTrees(R); - }); - } - async initLodTree(A, I) { - if (I instanceof $A || I instanceof GI) { - const { lodId: g } = await A.call("initLodTree", { - numSplats: I.numSplats ?? 0, - lodTree: I.extra.lodTree.slice() - }); - this.lodIds.set(I, { lodId: g, lastTouched: performance.now() }), this.lodIdToSplats.set(g, I); - } else { - const { lodId: g } = await A.call("newSharedLodTree", { - lodId: this.pagerId - }); - this.lodIds.set(I, { lodId: g, lastTouched: performance.now() }), this.lodIdToSplats.set(g, I); - } + /** + * @param {Uint8Array} rgba + */ + inject_rgba8(A) { + K.gsplatarray_inject_rgba8(this.__wbg_ptr, A); } - async updateLodInstances(A, I, g, B, C, E, D) { - const i = /* @__PURE__ */ new Map(), w = new G.Matrix4().compose( - C, - E, - new G.Vector3().setScalar(1) - ), s = g.reduce( - (a, S) => { - var U, J; - i.set(S.uuid, S); - const M = S.matrixWorld.clone().invert().multiply(w), c = ((U = S.packedSplats) == null ? void 0 : U.lodSplats) ?? ((J = S.extSplats) == null ? void 0 : J.lodSplats) ?? S.paged; - if (!c) - return a; - const N = this.lodIds.get(c); - return !N || this.pager && S.paged && N.rootPage === void 0 || (a[S.uuid] = { - instanceId: S.uuid, - lodId: N.lodId, - rootPage: N.rootPage, - viewToObjectCols: M.elements, - lodScale: S.lodScale, - behindFoveate: S.behindFoveate ?? this.behindFoveate, - coneFov0: S.coneFov0 ?? this.coneFov0, - coneFov: S.coneFov ?? this.coneFov, - coneFoveate: S.coneFoveate ?? this.coneFoveate - }), a; - }, - {} - ), o = performance.now(), y = await A.call("traverseLodTrees", { - maxSplats: B, - pixelScaleLimit: D, - lastPixelLimit: this.lastPixelLimit, - instances: s - }); - this.lastTraverseTime = performance.now() - o; - const { keyIndices: h, chunks: k, pixelLimit: R } = y; - this.lastPixelLimit = R; - const F = Object.values(h).reduce( - (a, { numSplats: S }) => a + S, - 0 - ); - if (this.updateLodIndices(i, h), this.pager) { - this.pager.processUploads(); - const a = g.map((S) => { - if (!S.paged || !this.pager) - return null; - const M = S.getWorldPosition(new G.Vector3()); - return { - splats: S.paged, - distance: M.distanceTo(C) - }; - }).filter((S) => S !== null); - !this.pageSizeWarning && a.length > this.pager.maxPages && (this.pageSizeWarning = !0, console.warn( - `# paged SplatMeshes exceeds maxPages: ${a.length} > ${this.pager.maxPages}` - )), a.sort((S, M) => S.distance - M.distance), this.pager.fetchPriority = a.map(({ splats: S }) => ({ - splats: S, - chunk: 0 - })); - for (const [S, M] of k) { - const c = this.lodIdToSplats.get(S); - c instanceof Pg && M !== 0 && this.pager.fetchPriority.push({ splats: c, chunk: M }); - } - this.pager.autoDrive = this.enableLodFetching, this.enableLodFetching && this.pager.driveFetchers(); - } - if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { - this.lastLodRaycastTime = performance.now(); - const a = performance.now(), S = await A.call("traverseLodTrees", { - maxSplats: Math.min(this.lodRaycast, Math.round(F * 0.1)), - pixelScaleLimit: D, - instances: s - }); - performance.now() - a; - const { keyIndices: M } = S; - Object.values(M).reduce( - (c, { numSplats: N }) => c + N, - 0 - ); - for (const [c, N] of Object.entries(M)) { - const U = i.get(c); - U.raycastIndices = N; - } - } + /** + * @returns {number} + */ + len() { + return K.gsplatarray_len(this.__wbg_ptr) >>> 0; } - async cleanupLodTrees(A) { - const g = performance.now(); - let B = null; - for (const [C, E] of this.lodIds.entries()) - (B == null || E.lastTouched < B.lastTouched) && (B = { - splats: C, - lastTouched: E.lastTouched, - lodId: E.lodId - }); - if (!(!B || B.lastTouched > g - 3e3)) { - this.lodIds.delete(B.splats), this.lodIdToSplats.delete(B.lodId); - for (const [C, E] of this.lodInstances.entries()) - E.lodId === B.lodId && (E.texture.dispose(), this.lodInstances.delete(C)); - await A.call("disposeLodTree", { lodId: B.lodId }); - } + /** + * @param {number} lod_base + * @param {boolean} merge_filter + */ + tiny_lod(A, I) { + K.gsplatarray_tiny_lod(this.__wbg_ptr, A, I); } - updateLodIndices(A, I) { - for (const [g, B] of Object.entries(I)) { - const { lodId: C, numSplats: E, indices: D } = B, i = A.get(g); - if (i.paged) - i.paged.update(E, D); - else { - let w = this.lodInstances.get(i); - w && D.length > w.indices.length && (w.texture.dispose(), w = void 0); - const s = Math.ceil(D.length / 16384); - if (w) { - w.numSplats = E; - const o = this.renderer, y = o.getContext(); - if (o.properties.has(w.texture)) { - const k = o.properties.get(w.texture).__webglTexture; - if (!k) - throw new Error("lodIndices texture not found"); - o.state.activeTexture(y.TEXTURE0), o.state.bindTexture(y.TEXTURE_2D, k), y.bindBuffer(y.PIXEL_UNPACK_BUFFER, null), y.pixelStorei(y.UNPACK_FLIP_Y_WEBGL, !1), y.texSubImage2D( - y.TEXTURE_2D, - 0, - 0, - 0, - 4096, - s, - y.RGBA_INTEGER, - y.UNSIGNED_INT, - D - ), o.state.bindTexture(y.TEXTURE_2D, null); - } - } else { - const o = s * 16384; - if (D.length !== o) - throw new Error("Indices length != capacity"); - const y = new G.DataTexture( - D, - 4096, - s, - G.RGBAIntegerFormat, - G.UnsignedIntType - ); - y.internalFormat = "RGBA32UI", y.needsUpdate = !0, w = { lodId: C, numSplats: E, indices: D, texture: y }, this.lodInstances.set(i, w); - } - } - i.updateMappingVersion(); - } + /** + * @returns {object} + */ + to_extsplats() { + const A = K.gsplatarray_to_extsplats(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); } - async readbackDepth({ - current: A, - renderer: I, - numSplats: g, - readback: B - }) { - if (!I) - throw new Error("No renderer"); - if (!A.target) - throw new Error("No target"); - const C = Math.ceil(g / P) * P; - if (B.byteLength < C * 4) - throw new Error( - `Readback buffer too small: ${B.byteLength} < ${C * 4}` - ); - const E = new Uint8Array(B.buffer), D = this.saveRenderState(I), i = P * XA; - let w = 0; - const s = []; - for (; w < g; ) { - const o = Math.floor(w / i), y = o * i, h = Math.min( - XA, - Math.ceil((g - y) / P) - ), k = P * h * 4, R = E.subarray( - y * 4, - y * 4 + k - ); - I.setRenderTarget(A.target, o); - const F = I.readRenderTargetPixelsAsync( - A.target, - 0, - 0, - P, - h, - R, - void 0, - A.extSplats ? 2 : 1 - ); - s.push(F), this.flushAfterRead && I.getContext().flush(), w += P * h; - } - return this.resetRenderState(I, D), Promise.all(s).then(() => B); + /** + * @returns {object} + */ + to_extsplats_lod() { + const A = K.gsplatarray_to_extsplats_lod(this.__wbg_ptr); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); } - saveRenderState(A) { - return { - target: A.getRenderTarget(), - xrEnabled: A.xr.enabled, - autoClear: A.autoClear - }; + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats(A) { + const I = K.gsplatarray_to_packedsplats(this.__wbg_ptr, A); + if (I[2]) + throw UA(I[1]); + return UA(I[0]); } - resetRenderState(A, I) { - A.setRenderTarget(I.target), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; + /** + * @param {any} encoding + * @returns {object} + */ + to_packedsplats_lod(A) { + const I = K.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, A); + if (I[2]) + throw UA(I[1]); + return UA(I[0]); } - render(A, I) { - try { - iA.sparkOverride = this, this.renderer.render(A, I); - } finally { - iA.sparkOverride = void 0; - } + /** + * @param {number} arg0 + */ + set maxShDegree(A) { + K.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, A); } - renderTarget({ - scene: A, - camera: I - }) { - const g = this.backTarget ?? this.target; - if (!g) - throw new Error("No target"); - const B = this.renderer.getRenderTarget(); - try { - this.renderer.setRenderTarget(g), iA.sparkOverride = this, this.renderer.render(A, I); - } finally { - iA.sparkOverride = void 0, this.renderer.setRenderTarget(B); - } - return g !== this.target && ([this.target, this.backTarget] = [this.backTarget, this.target]), g; + /** + * @param {number} arg0 + */ + set numSplats(A) { + K.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, A); } - // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). Subsequent calls to this.readTarget() - // will reuse the same buffers to minimize memory allocations. - async readTarget() { - if (!this.target) - throw new Error("Must initialize with target"); - const { width: A, height: I } = this.target, g = A * I * 4; - (!this.superPixels || this.superPixels.length < g) && (this.superPixels = new Uint8Array(g)); - const B = this.superPixels; - await this.renderer.readRenderTargetPixelsAsync( - this.target, - 0, - 0, - A, - I, - B - ); - const { superXY: C } = this; - if (C === 1) - return B; - const E = A / C, D = I / C, i = E * D * 4; - (!this.targetPixels || this.targetPixels.length < i) && (this.targetPixels = new Uint8Array(i)); - const w = this.targetPixels, s = C * C; - for (let o = 0; o < D; o++) { - const y = o * E; - for (let h = 0; h < E; h++) { - const k = h * C; - let R = 0, F = 0, a = 0, S = 0; - for (let c = 0; c < C; c++) { - const N = (o * C + c) * A; - for (let U = 0; U < C; U++) { - const J = (N + k + U) * 4; - R += B[J], F += B[J + 1], a += B[J + 2], S += B[J + 3]; - } +} +Symbol.dispose && (Rg.prototype[Symbol.dispose] = Rg.prototype.free); +function JB(Q) { + const A = K.decode_rad_header(Q); + if (A[2]) + throw UA(A[1]); + return UA(A[0]); +} +function oG() { + return K.get_raycast_buffer(); +} +function sG() { + return K.get_raycast_buffer2(); +} +function wG(Q, A, I, g, B, C, E, i, o, D) { + return K.raycast_ext_buffers(Q, A, I, g, B, C, E, i, o, D); +} +function aG(Q, A, I, g, B, C, E, i, o, D, w, s, t) { + return K.raycast_packed_buffer(Q, A, I, g, B, C, E, i, o, D, w, s, t); +} +function tG() { + return { + __proto__: null, + "./spark_rs_bg.js": { + __proto__: null, + __wbg_Error_2e59b1b37a9a34c3: function(A, I) { + return Error(rg(A, I)); + }, + __wbg___wbindgen_boolean_get_a86c216575a75c30: function(A) { + const I = A, g = typeof I == "boolean" ? I : void 0; + return Yg(g) ? 16777215 : g ? 1 : 0; + }, + __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(A, I) { + const g = uQ(I), B = eQ(g, K.__wbindgen_malloc, K.__wbindgen_realloc), C = wg; + RI().setInt32(A + 4, C, !0), RI().setInt32(A + 0, B, !0); + }, + __wbg___wbindgen_in_4bd7a57e54337366: function(A, I) { + return A in I; + }, + __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(A) { + return !A; + }, + __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(A) { + const I = A; + return typeof I == "object" && I !== null; + }, + __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(A) { + return A === void 0; + }, + __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(A, I) { + return A == I; + }, + __wbg___wbindgen_number_get_7579aab02a8a620c: function(A, I) { + const g = I, B = typeof g == "number" ? g : void 0; + RI().setFloat64(A + 8, Yg(B) ? 0 : B, !0), RI().setInt32(A + 0, !Yg(B), !0); + }, + __wbg___wbindgen_string_get_914df97fcfa788f2: function(A, I) { + const g = I, B = typeof g == "string" ? g : void 0; + var C = Yg(B) ? 0 : eQ(B, K.__wbindgen_malloc, K.__wbindgen_realloc), E = wg; + RI().setInt32(A + 4, E, !0), RI().setInt32(A + 0, C, !0); + }, + __wbg___wbindgen_throw_81fc77679af83bc6: function(A, I) { + throw new Error(rg(A, I)); + }, + __wbg_csplatarray_new: function(A) { + return Fg.__wrap(A); + }, + __wbg_error_a6fa202b58aa1cd3: function(A, I) { + let g, B; + try { + g = A, B = I, console.error(rg(A, I)); + } finally { + K.__wbindgen_free(g, B, 1); + } + }, + __wbg_get_4848e350b40afc16: function(A, I) { + return A[I >>> 0]; + }, + __wbg_get_f96702c6245e4ef9: function() { + return HB(function(A, I) { + return Reflect.get(A, I); + }, arguments); + }, + __wbg_get_unchecked_7d7babe32e9e6a54: function(A, I) { + return A[I >>> 0]; + }, + __wbg_get_with_ref_key_6412cf3094599694: function(A, I) { + return A[I]; + }, + __wbg_gsplatarray_new: function(A) { + return Rg.__wrap(A); + }, + __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(A) { + let I; + try { + I = A instanceof ArrayBuffer; + } catch { + I = !1; } - const M = (y + h) * 4; - w[M] = R / s, w[M + 1] = F / s, w[M + 2] = a / s, w[M + 3] = S / s; + return I; + }, + __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(A) { + let I; + try { + I = A instanceof Uint8Array; + } catch { + I = !1; + } + return I; + }, + __wbg_length_0c32cb8543c8e4c8: function(A) { + return A.length; + }, + __wbg_length_1e701798fdcaa3b4: function(A) { + return A.length; + }, + __wbg_length_6e821edde497a532: function(A) { + return A.length; + }, + __wbg_length_a4ca9e78359b5f1f: function(A) { + return A.length; + }, + __wbg_length_fd4646b401926788: function(A) { + return A.length; + }, + __wbg_new_227d7c05414eb861: function() { + return new Error(); + }, + __wbg_new_4f9fafbb3909af72: function() { + return new Object(); + }, + __wbg_new_99cabae501c0a8a0: function() { + return /* @__PURE__ */ new Map(); + }, + __wbg_new_a560378ea1240b14: function(A) { + return new Uint8Array(A); + }, + __wbg_new_f3c9df4f38f3f798: function() { + return new Array(); + }, + __wbg_new_with_length_26bffbe236bf73f9: function(A) { + return new Float32Array(A >>> 0); + }, + __wbg_new_with_length_41a22191b9bdfd66: function(A) { + return new Uint32Array(A >>> 0); + }, + __wbg_prototypesetcall_3e05eb9545565046: function(A, I, g) { + Uint8Array.prototype.set.call(yG(A, I), g); + }, + __wbg_prototypesetcall_64c287a27cc24d27: function(A, I, g) { + Uint16Array.prototype.set.call(hG(A, I), g); + }, + __wbg_prototypesetcall_e42275e601e14eeb: function(A, I, g) { + Uint32Array.prototype.set.call(kQ(A, I), g); + }, + __wbg_push_6bdbc990be5ac37b: function(A, I) { + return A.push(I); + }, + __wbg_set_08463b1df38a7e29: function(A, I, g) { + return A.set(I, g); + }, + __wbg_set_448126769bf7c181: function(A, I, g) { + A.set(kQ(I, g)); + }, + __wbg_set_6be42768c690e380: function(A, I, g) { + A[I] = g; + }, + __wbg_set_6c60b2e8ad0e9383: function(A, I, g) { + A[I >>> 0] = g; + }, + __wbg_set_81b4174352e6a095: function(A, I, g) { + A.set(I, g >>> 0); + }, + __wbg_set_8ee2d34facb8466e: function() { + return HB(function(A, I, g) { + return Reflect.set(A, I, g); + }, arguments); + }, + __wbg_set_a98c8da6557e63de: function(A, I, g) { + A.set(nB(I, g)); + }, + __wbg_set_index_338a66e40fc45dee: function(A, I, g) { + A[I >>> 0] = g >>> 0; + }, + __wbg_stack_3b0d974bbf31e44f: function(A, I) { + const g = I.stack, B = eQ(g, K.__wbindgen_malloc, K.__wbindgen_realloc), C = wg; + RI().setInt32(A + 4, C, !0), RI().setInt32(A + 0, B, !0); + }, + __wbg_subarray_0f98d3fb634508ad: function(A, I, g) { + return A.subarray(I >>> 0, g >>> 0); + }, + __wbg_subarray_517cd0f1811ab872: function(A, I, g) { + return A.subarray(I >>> 0, g >>> 0); + }, + __wbg_subarray_d51e89458b3fdbf6: function(A, I, g) { + return A.subarray(I >>> 0, g >>> 0); + }, + __wbindgen_cast_0000000000000001: function(A) { + return A; + }, + __wbindgen_cast_0000000000000002: function(A, I) { + return nB(A, I); + }, + __wbindgen_cast_0000000000000003: function(A, I) { + return kQ(A, I); + }, + __wbindgen_cast_0000000000000004: function(A, I) { + return rg(A, I); + }, + __wbindgen_cast_0000000000000005: function(A) { + return BigInt.asUintN(64, A); + }, + __wbindgen_init_externref_table: function() { + const A = K.__wbindgen_externrefs, I = A.grow(4); + A.set(0, void 0), A.set(I + 0, void 0), A.set(I + 1, null), A.set(I + 2, !0), A.set(I + 3, !1); } } - return w; - } - async renderReadTarget({ - scene: A, - camera: I - }) { - return this.renderTarget({ scene: A, camera: I }), this.readTarget(); - } - // Renders out the scene to a cube map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces. - async renderCubeMap({ - scene: A, - worldCenter: I, - size: g = 256, - near: B = 0.1, - far: C = 1e3, - hideObjects: E = [], - update: D = !0, - filter: i = !1 - }) { - if (!iA.cubeRender || iA.cubeRender.target.width !== g || iA.cubeRender.near !== B || iA.cubeRender.far !== C) { - iA.cubeRender && iA.cubeRender.target.dispose(); - const y = new G.WebGLCubeRenderTarget(g, { - format: G.RGBAFormat, - type: G.UnsignedByteType, - generateMipmaps: i, - minFilter: i ? G.LinearMipMapLinearFilter : G.LinearFilter, - magFilter: G.LinearFilter, - colorSpace: i ? G.LinearSRGBColorSpace : G.SRGBColorSpace - }), h = new G.CubeCamera(B, C, y); - iA.cubeRender = { target: y, cubeCamera: h, near: B, far: C }; - } - const { target: w, cubeCamera: s } = iA.cubeRender; - s.position.copy(I); - const o = /* @__PURE__ */ new Map(); - for (const y of E) - o.set(y, y.visible), y.visible = !1; - if (D) { - const y = new G.Camera(); - y.position.copy(I), await this.update({ scene: A, camera: y }); - } + }; +} +typeof FinalizationRegistry > "u" || new FinalizationRegistry((Q) => K.__wbg_chunkdecoder_free(Q >>> 0, 1)); +const UB = typeof FinalizationRegistry > "u" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((Q) => K.__wbg_csplatarray_free(Q >>> 0, 1)), LB = typeof FinalizationRegistry > "u" ? { register: () => { +}, unregister: () => { +} } : new FinalizationRegistry((Q) => K.__wbg_gsplatarray_free(Q >>> 0, 1)); +function GG(Q) { + const A = K.__externref_table_alloc(); + return K.__wbindgen_externrefs.set(A, Q), A; +} +function uQ(Q) { + const A = typeof Q; + if (A == "number" || A == "boolean" || Q == null) + return `${Q}`; + if (A == "string") + return `"${Q}"`; + if (A == "symbol") { + const B = Q.description; + return B == null ? "Symbol" : `Symbol(${B})`; + } + if (A == "function") { + const B = Q.name; + return typeof B == "string" && B.length > 0 ? `Function(${B})` : "Function"; + } + if (Array.isArray(Q)) { + const B = Q.length; + let C = "["; + B > 0 && (C += uQ(Q[0])); + for (let E = 1; E < B; E++) + C += ", " + uQ(Q[E]); + return C += "]", C; + } + const I = /\[object ([^\]]+)\]/.exec(toString.call(Q)); + let g; + if (I && I.length > 1) + g = I[1]; + else + return toString.call(Q); + if (g == "Object") try { - iA.sparkOverride = this, s.update(this.renderer, A); - } finally { - iA.sparkOverride = void 0; + return "Object(" + JSON.stringify(Q) + ")"; + } catch { + return "Object"; } - for (const [y, h] of o.entries()) - y.visible = h; - return w.texture; + return Q instanceof Error ? `${Q.name}: ${Q.message} +${Q.stack}` : g; +} +function nB(Q, A) { + return Q = Q >>> 0, cG().subarray(Q / 4, Q / 4 + A); +} +function hG(Q, A) { + return Q = Q >>> 0, SG().subarray(Q / 2, Q / 2 + A); +} +function kQ(Q, A) { + return Q = Q >>> 0, FG().subarray(Q / 4, Q / 4 + A); +} +function yG(Q, A) { + return Q = Q >>> 0, og().subarray(Q / 1, Q / 1 + A); +} +let YI = null; +function RI() { + return (YI === null || YI.buffer.detached === !0 || YI.buffer.detached === void 0 && YI.buffer !== K.memory.buffer) && (YI = new DataView(K.memory.buffer)), YI; +} +let Qg = null; +function cG() { + return (Qg === null || Qg.byteLength === 0) && (Qg = new Float32Array(K.memory.buffer)), Qg; +} +function rg(Q, A) { + return Q = Q >>> 0, kG(Q, A); +} +let Bg = null; +function SG() { + return (Bg === null || Bg.byteLength === 0) && (Bg = new Uint16Array(K.memory.buffer)), Bg; +} +let Cg = null; +function FG() { + return (Cg === null || Cg.byteLength === 0) && (Cg = new Uint32Array(K.memory.buffer)), Cg; +} +let Eg = null; +function og() { + return (Eg === null || Eg.byteLength === 0) && (Eg = new Uint8Array(K.memory.buffer)), Eg; +} +function HB(Q, A) { + try { + return Q.apply(this, A); + } catch (I) { + const g = GG(I); + K.__wbindgen_exn_store(g); } - async readCubeTargets() { - if (!iA.cubeRender) - throw new Error("No cube render"); - const A = iA.cubeRender.target.texture, I = [], g = []; - for (let B = 0; B < A.images.length; ++B) { - const { width: C, height: E } = A.images[B], D = C * E * 4, i = new Uint8Array(D); - g.push(i); - const w = this.renderer.readRenderTargetPixelsAsync( - iA.cubeRender.target, - 0, - 0, - C, - E, - i, - B - ); - I.push(w); - } - return await Promise.all(I), g; +} +function Yg(Q) { + return Q == null; +} +function eQ(Q, A, I) { + if (I === void 0) { + const i = sg.encode(Q), o = A(i.length, 1) >>> 0; + return og().subarray(o, o + i.length).set(i), wg = i.length, o; } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - scene: A, - worldCenter: I, - size: g = 256, - near: B = 0.1, - far: C = 1e3, - hideObjects: E = [], - update: D = !0 - }) { - var w; - const i = await this.renderCubeMap({ - scene: A, - worldCenter: I, - size: g, - near: B, - far: C, - hideObjects: E, - update: D, - filter: !0 - }); - return iA.pmrem || (iA.pmrem = new G.PMREMGenerator(this.renderer)), (w = iA.pmrem) == null ? void 0 : w.fromCubemap(i).texture; + let g = Q.length, B = A(g, 1) >>> 0; + const C = og(); + let E = 0; + for (; E < g; E++) { + const i = Q.charCodeAt(E); + if (i > 127) break; + C[B + E] = i; } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(A, I) { - A.traverse((g) => { - if (g instanceof G.Mesh) - if (Array.isArray(g.material)) - for (const B of g.material) - B instanceof G.MeshStandardMaterial && (B.envMap = I); + if (E !== g) { + E !== 0 && (Q = Q.slice(E)), B = I(B, g, g = E + Q.length * 3, 1) >>> 0; + const i = og().subarray(B + E, B + g), o = sg.encodeInto(Q, i); + E += o.written, B = I(B, g, E, 1) >>> 0; + } + return wg = E, B; +} +function UA(Q) { + const A = K.__wbindgen_externrefs.get(Q); + return K.__externref_table_dealloc(Q), A; +} +let mg = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }); +mg.decode(); +const RG = 2146435072; +let NQ = 0; +function kG(Q, A) { + return NQ += A, NQ >= RG && (mg = new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }), mg.decode(), NQ = A), mg.decode(og().subarray(Q, Q + A)); +} +const sg = new TextEncoder(); +"encodeInto" in sg || (sg.encodeInto = function(Q, A) { + const I = sg.encode(Q); + return A.set(I), { + read: Q.length, + written: I.length + }; +}); +let wg = 0, K; +function eG(Q, A) { + return K = Q.exports, YI = null, Qg = null, Bg = null, Cg = null, Eg = null, K.__wbindgen_start(), K; +} +async function NG(Q, A) { + if (typeof Response == "function" && Q instanceof Response) { + if (typeof WebAssembly.instantiateStreaming == "function") + try { + return await WebAssembly.instantiateStreaming(Q, A); + } catch (B) { + if (Q.ok && I(Q.type) && Q.headers.get("Content-Type") !== "application/wasm") + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", B); else - g.material instanceof G.MeshStandardMaterial && (g.material.envMap = I); - }); + throw B; + } + const g = await Q.arrayBuffer(); + return await WebAssembly.instantiate(g, A); + } else { + const g = await WebAssembly.instantiate(Q, A); + return g instanceof WebAssembly.Instance ? { instance: g, module: Q } : g; } - async getLodTreeLevel(A, I, g = !1) { - var E, D; - const B = this.lodInstances.get(A); - if (!B) - return null; - const C = await this.ensureLodWorker().exclusive(async (i) => await i.call("getLodTreeLevel", { - lodId: B.lodId, - level: I - })); - if ((E = A.packedSplats) != null && E.lodSplats) { - const i = A.packedSplats.lodSplats.extractSplats( - C.indices, - g - ); - return new vA({ packedSplats: i }); - } - if ((D = A.extSplats) != null && D.lodSplats) { - const i = A.extSplats.lodSplats.extractSplats( - C.indices, - g - ); - return new vA({ extSplats: i }); + function I(g) { + switch (g) { + case "basic": + case "cors": + case "default": + return !0; } - throw new Error( - "Only LoD-enabled PackedSplats and ExtSplats are supported" - ); - } - get premultipliedAlpha() { - return this.material.premultipliedAlpha; - } - set premultipliedAlpha(A) { - this.material.premultipliedAlpha !== A && (this.material.premultipliedAlpha = A, this.material.needsUpdate = !0); - } -}; -iA.emptyOrdering = (() => { - const I = new Uint32Array(16384), g = new G.DataTexture(I, 4096, 1); - return g.format = G.RGBAIntegerFormat, g.type = G.UnsignedIntType, g.internalFormat = "RGBA32UI", g.needsUpdate = !0, g; -})(), iA.cubeRender = null, iA.pmrem = null; -let jg = iA; -class Pg { - constructor(A) { - var I; - if (this.pager = A.pager, this.rootUrl = A.rootUrl ?? "", this.requestHeader = A.requestHeader, this.withCredentials = A.withCredentials, this.numSh = 0, this.maxSh = ((I = A.pager) == null ? void 0 : I.maxSh) ?? 3, this.numSplats = 0, this.dynoNumSplats = new EI({ value: 0 }), this.dynoIndices = new EQ({ - value: tI.emptyIndicesTexture - }), this.rgbMinMaxLnScaleMinMax = new mI({ - value: new G.Vector4(0, 1, pA, fA) - }), this.lodOpacity = new bI({ - value: !1 - }), this.dynoNumSh = new EI({ value: 0 }), this.shMax = new DI({ value: new G.Vector3() }), this.fileBytes = A.fileBytes, this.fileType = A.fileType, !this.fileType && this.fileBytes && (this.fileType = NB(this.fileBytes)), !this.fileType && this.rootUrl && (this.fileType = cB(this.rootUrl)), !this.fileType) - throw new Error("Unable to determine file type"); - this.fileType === hA.RAD && (this.radMetaPromise = this.getRadMeta()); - } - dispose() { - this.dynoIndices.value !== tI.emptyIndicesTexture && (this.dynoIndices.value.dispose(), this.dynoIndices.value = tI.emptyIndicesTexture); + return !1; } - setMaxSh(A) { - this.maxSh = A; +} +async function MG(Q) { + if (K !== void 0) return K; + Q !== void 0 && (Object.getPrototypeOf(Q) === Object.prototype ? { module_or_path: Q } = Q : console.warn("using deprecated parameters for the initialization function; pass a single object instead")); + const A = tG(); + (typeof Q == "string" || typeof Request == "function" && Q instanceof Request || typeof URL == "function" && Q instanceof URL) && (Q = fetch(Q)); + const { instance: I, module: g } = await NG(await Q, A); + return eG(I); +} +function JG(Q) { + return Q > 64 && Q < 91 ? Q - 65 : Q > 96 && Q < 123 ? Q - 71 : Q > 47 && Q < 58 ? Q + 4 : Q === 43 ? 62 : Q === 47 ? 63 : 0; +} +function UG(Q, A) { + const I = Q.replace(/[^A-Za-z0-9+/]/g, ""), g = I.length, B = A ? Math.ceil((g * 3 + 1 >> 2) / A) * A : g * 3 + 1 >> 2, C = new Uint8Array(B); + let E, i, o = 0, D = 0; + for (let w = 0; w < g; w++) + if (i = w & 3, o |= JG(I.charCodeAt(w)) << 6 * (3 - i), i === 3 || g - w === 1) { + for (E = 0; E < 3 && D < B; ) + C[D] = o >>> (16 >>> E & 24) & 255, E++, D++; + o = 0; + } + return C; +} +function LG(Q) { + if (typeof Uint8Array.fromBase64 == "function") return Uint8Array.fromBase64(Q); + let A = atob(Q), I = A.length, g = new Uint8Array(I); + for (let B = 0; B < I; B++) + g[B] = A.charCodeAt(B); + return g; +} +const nG = typeof atob == "function" ? LG : UG, HG = nG("AGFzbQEAAAAB0gdyYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGAAAGABfwN/f39gAX0BfWAFf39/f38Bf2AAAW9gAn9vAGABfwF+YAN/fX8AYAZ/f39/f38Bf2AGf39/f399AGAFf39/fn8AYAABf2ABfwFvYAJ/fwFvYAJ/fQBgAX4Bf2ADb39/AW9gA29/fwBgAm9vAX9gA39/bwBgCX9/f39/f39/fwBgAn9vA39/f2ACb28Bb2ACb38Bb2AJf39/f39/f39/AX9gDH9/f39/f39/f39/fwBgBX9/f31/AGAHf39/f39/fwF/YAV/f39/fQBgBH99f38Bf2AEf39/fgBgF39/f39/f39/f39/f39/f39/f39/f39/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AGADfn5/AX5gB39/f39/fX0AYAF/AX1gBX9/fn9/AGAFf398f38AYAV/f31/fwBgE399fH9/f39/f39/f39/f39/f38Df39/YAR/b39vA39/f2ADf29vAX9gAAJ/f2ADb29vAX9gA29vbwFvYANvb28AYANvf28AYANvb38AYAFvAW9gAXwBb2ABfgFvYAR/f399AX9gC39/f39/f39/f39/AX9gCn9/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gB39/f31/f38AYAJ/fgBgA399fwF/YAZ/fn9/f38AYAV/f39+fgBgCX9/f39/fX19fwBgBn9/f399fQBgBH5+f38BfmAFf39/f38BfWAEf39/fwF9YAJ+fwBgCX9/f39/f35+fgBgA39/ewBgA39+fwBgAn9+AX9gAn1/AX1gA319fQF9YAN/fn4AYAZ/f39+f38AYAZ/f398f38AYAZ/f399f38AYAR/fn5/AGAJf39/f39/f39vA39/f2AIf39/f29/f38Df39/YAd/f39/f39/A39/f2AHf29vf31/fwN/f39gB39vf31/f28Df39/YA59fX19fX19fX1/b319fwFvYAZ/b399f28Df39/YAZ/b29/fX8Df39/YAV/f39/bwN/f39gBH9/f38Df39/YAR/b29/A39/f2ACf38Df39/YA19fX19fX19fX1/fX1/AW9gAW8Df39/YAJ/bwJ/f2AKfX19fX19fX19fwFvYAR/fn9/AGAEf31/fwBgBH98f38AYAF8AX9gAn19AX0CoRY2EC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgAEhAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF80MWEyMjE5MWI5YmRmZDY2ABoQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV9kNTFlODk0NThiM2ZkYmY2AB4QLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfMWU3MDE3OThmZGNhYTNiNAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAHxAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyABIQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfOGVlMmQzNGZhY2I4NDY2ZQA5EC4vc3BhcmtfcnNfYmcuanMbX193YmdfcHVzaF82YmRiYzk5MGJlNWFjMzdiACAQLi9zcGFya19yc19iZy5qcxVfX3diZ19jc3BsYXRhcnJheV9uZXcAGhAuL3NwYXJrX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAaEC4vc3BhcmtfcnNfYmcuanMcX193YmdfRXJyb3JfMmU1OWIxYjM3YTlhMzRjMwAbEC4vc3BhcmtfcnNfYmcuanMrX193YmdfX193YmluZGdlbl9pc19vYmplY3RfNDBjNWE4MDU3MmU4ZjlkMwAMEC4vc3BhcmtfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF9jMGNjYTcyYjgyYjg2ZjRkAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19fX3diaW5kZ2VuX2luXzRiZDdhNTdlNTQzMzczNjYAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABMQLi9zcGFya19yc19iZy5qcy1fX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0X2E4NmMyMTY1NzVhNzVjMzAADBAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfZTQyMjc1ZTYwMWUxNGVlYgAhEC4vc3BhcmtfcnNfYmcuanMaX193YmdfbmV3Xzk5Y2FiYWU1MDFjMGE4YTAAEhAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ADoQLi9zcGFya19yc19iZy5qcxpfX3diZ19nZXRfZjk2NzAyYzYyNDVlNGVmOQAkEC4vc3BhcmtfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfNmJlNDI3NjhjNjkwZTM4MAA7EC4vc3BhcmtfcnNfYmcuanMaX193YmdfZ2V0XzQ4NDhlMzUwYjQwYWZjMTYAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX3NldF82YzYwYjJlOGFkMGU5MzgzADwQLi9zcGFya19yc19iZy5qcxpfX3diZ19zZXRfODFiNDE3NDM1MmU2YTA5NQA9EC4vc3BhcmtfcnNfYmcuanMdX193YmdfbGVuZ3RoXzBjMzJjYjg1NDNjOGU0YzgADBAuL3NwYXJrX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAHhAuL3NwYXJrX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfM2UwNWViOTU0NTU2NTA0NgAhEC4vc3BhcmtfcnNfYmcuanMgX193Ymdfc2V0X2luZGV4XzMzOGE2NmU0MGZjNDVkZWUAHxAuL3NwYXJrX3JzX2JnLmpzJl9fd2JnX25ld193aXRoX2xlbmd0aF8yNmJmZmJlMjM2YmY3M2Y5ABoQLi9zcGFya19yc19iZy5qcx1fX3diZ19sZW5ndGhfZmQ0NjQ2YjQwMTkyNjc4OAAMEC4vc3BhcmtfcnNfYmcuanMaX193Ymdfc2V0X2E5OGM4ZGE2NTU3ZTYzZGUAHxAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwQLi9zcGFya19yc19iZy5qcx9fX3diZ19zdWJhcnJheV81MTdjZDBmMTgxMWFiODcyAB4QLi9zcGFya19yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzY0YzI4N2EyN2NjMjRkMjcAIRAuL3NwYXJrX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwQLi9zcGFya19yc19iZy5qcyRfX3diZ19nZXRfdW5jaGVja2VkXzdkN2JhYmUzMmU5ZTZhNTQAJRAuL3NwYXJrX3JzX2JnLmpzGl9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxABIQLi9zcGFya19yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABMQLi9zcGFya19yc19iZy5qcxxfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzAAEQLi9zcGFya19yc19iZy5qczBfX3diZ19fX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxXzNhNzJhZTc2NGQ0NmQ5NDQAIBAuL3NwYXJrX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABMQLi9zcGFya19yc19iZy5qcyxfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfNGI4ZGE2ODNkZWIyNWQ3MgAMEC4vc3BhcmtfcnNfYmcuanMtX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9mZjdjMTMzN2E1ZTNiMzNhAAwQLi9zcGFya19yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA+EC4vc3BhcmtfcnNfYmcuanMnX193YmdfX193YmluZGdlbl90aHJvd184MWZjNzc2NzlhZjgzYmM2AAEQLi9zcGFya19yc19iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19kZDVkMmQwN2NlOWU2YzU3ABMQLi9zcGFya19yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAA4QLi9zcGFya19yc19iZy5qcyBf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bGF0YXJyYXlfbWF4U2hEZWdyZWUA4ggfX193YmdfZ2V0X2dzcGxhdGFycmF5X251bVNwbGF0cwDjCBZfX3diZ19nc3BsYXRhcnJheV9mcmVlANUFIV9fd2JnX3NldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDnCB9fX3diZ19zZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAOgIIV9fd2JnX3NldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQDpCB9fX3diZ19zZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAOoIE2JoYXR0X2xvZF9leHRzcGxhdHMAsggWYmhhdHRfbG9kX3BhY2tlZHNwbGF0cwCxCBNjaHVua2RlY29kZXJfZmluaXNoANwIEWNodW5rZGVjb2Rlcl9wdXNoAOYIFWNzcGxhdGFycmF5X2JoYXR0X2xvZACVBxNjc3BsYXRhcnJheV9oYXNfbG9kAOkHGGNzcGxhdGFycmF5X2luamVjdF9yZ2JhOAD9CQ9jc3BsYXRhcnJheV9sZW4A8wcUY3NwbGF0YXJyYXlfdGlueV9sb2QAhgcYY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzANUIHGNzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QA1wgbY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzANYIH2NzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QA2AgRZGVjb2RlX3JhZF9oZWFkZXIA2wgVZGVjb2RlX3RvX2NzcGxhdGFycmF5ALMIE2RlY29kZV90b19leHRzcGxhdHMArAgVZGVjb2RlX3RvX2dzcGxhdGFycmF5ALoIFmRlY29kZV90b19wYWNrZWRzcGxhdHMApQgQZGlzcG9zZV9sb2RfdHJlZQCKAhpkeW5hbWljX3RyYXZlcnNlX2xvZF90cmVlcwD4BxhleHRzcGxhdHNfdG9fZ3NwbGF0YXJyYXkAuwgSZ2V0X2xvZF90cmVlX2xldmVsAMwIEmdldF9yYXljYXN0X2J1ZmZlcgCvChNnZXRfcmF5Y2FzdF9idWZmZXIyALAKFWdzcGxhdGFycmF5X2JoYXR0X2xvZACWBxhnc3BsYXRhcnJheV9pbmplY3RfcmdiYTgA/gkPZ3NwbGF0YXJyYXlfbGVuAPMHFGdzcGxhdGFycmF5X3RpbnlfbG9kAIcHGGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0cwDZCBxnc3BsYXRhcnJheV90b19leHRzcGxhdHNfbG9kANoIG2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0cwDJCB9nc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHNfbG9kAMoIDWluaXRfbG9kX3RyZWUAywgMbmV3X2xvZF90cmVlAN4IE25ld19zaGFyZWRfbG9kX3RyZWUA3QgbcGFja2Vkc3BsYXRzX3RvX2NzcGxhdGFycmF5ALwIG3BhY2tlZHNwbGF0c190b19nc3BsYXRhcnJheQC5CBNyYXljYXN0X2V4dF9idWZmZXJzAPgIFXJheWNhc3RfcGFja2VkX2J1ZmZlcgDUCBVyYXljYXN0X3BhY2tlZF9zcGxhdHMAsAgMc2ltZF9lbmFibGVkAIsLDXNvcnQzMl9zcGxhdHMAkgkLc29ydF9zcGxhdHMAkwkSdGlueV9sb2RfZXh0c3BsYXRzAK0IFXRpbnlfbG9kX3BhY2tlZHNwbGF0cwCuCBJ0cmF2ZXJzZV9sb2RfdHJlZXMA+QcQdXBkYXRlX2xvZF90cmVlcwCfCAp3YXNtX3N0YXJ0AP0GE2dzcGxhdGFycmF5X2hhc19sb2QA6QcRX193YmluZGdlbl9tYWxsb2MA9gcSX193YmluZGdlbl9yZWFsbG9jAK8ID19fd2JpbmRnZW5fZnJlZQC2BxRfX3diaW5kZ2VuX2V4bl9zdG9yZQCVChdfX2V4dGVybnJlZl90YWJsZV9hbGxvYwCfBRVfX3diaW5kZ2VuX2V4dGVybnJlZnMBARlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jAL4HEF9fd2JpbmRnZW5fc3RhcnQAiQsJ9AkBAEEBC/0EsgWACqkJkAWxCY8B4QrgCjQx9gmACv0K9QHtA8wG8geKCsYB7gGZB64G9An/Cc4F+gbIBvQDhwaUB84I+giJCYsIwAWcBbYCkgSNCY8I0gTQBKgFNdMI2gboBPsI5wKLCjMyrgajBKsJ/wPkBugF6Qq3AdAGhAeVCfgF7geQCcYC6AryCOcK/wnfAucE2Qa4A5IG0Qf/CNoF1wWACYAJgAncB90H5AeBCd4HignlB90HggnfB4MJ3Qe0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QQV0aiIEIAI2AgAgBEIANwIIIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwIQIAMgB0EBajYCQCADIAMoAjRBAWoiAjYCNCACIAMoAjBJDQALCyADIEs3A9gDIAMgTDcD0AMgAyBNNwPIAyADIE43A8ADIANB+AFqQb6awAAgA0HAA2oQ4AQgAygC+AEiBQRAIAMoAvwBIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAVqSQ0GIAJBACAEIAVBJ2pLGw0HIAcQogILAkACQAJAIAMoAkAiBUUNACADKAI8IgQgBUEFdGohBiAD/QkChAEhUSAEIQIDQCACKAIAIg0gACgCCCIHTw0CIAMgACgCBCANQRhsaiIH/V0CACAHKgIIIgH9IAIgAf0gAyBR/ecB/WgiUv0fAvwENwPQAyADIFL9HwH8BDcDyAMgAyBS/R8A/AQ3A8ADIANB+AFqIANBwANqELIDIAJBGGogAykDiAI3AwAgAkEIaiAD/QAD+AH9CwMAIAJBIGoiAiAGRw0ACyAFQQFGDQAgBUEVTwRAIAQgBRCQBAwBCyAEIAUQ+wQLIAMgBTYCgAMgAyBKNwP4ASADQcADakGklsAAIANB+AFqEOAEAkAgAygCwAMiBgRAIAMoAsQDIgdBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAZqSQ0BIAJBACAEIAZBJ2pLGw0KIAcQogILQQAhBCADQQA2ApABIANCgICAgMAANwKIASADQQA2ApwBIANCgICAgMAANwKUASADQQA2AqABIANBADYCpAEgBUUEQEKAgICAgICAgIB/IUJC////////////ACFDQQQhCEL///////////8AIURC////////////ACFFQoCAgICAgICAgH8hRkKAgICAgICAgIB/IUcMAwtBACECQv///////////wAhRUKAgICAgICAgIB/IUdCgICAgICAgICAfyFGQoCAgICAgICAgH8hQkL///////////8AIURC////////////ACFDA0ACQAJAIAMoAjwiECACQQV0IgZqIgQoAgAiByAAKAIIIglJBEAgACgCBCINIAdBGGxqIgf9XQIAIAcqAggiAf0gAiAB/SADIAP9CQKEASJR/ecB/WgiUv0fAvwEIUEgUv0fAfwEIT8gUv0fAPwEIUAgBSACQQFqIhJNBEAg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//8DcSEFQQAhAkEAIQoCfwJAAkACQANAIAVFDQYgCiASaiIHIAEoApwBIgZJBEAgASgCmAEgA2ogAmogAiAMaiIJKAIANgIAIAEoApwBIgYgB0EBak0NBCABKAKYASADaiACakEEaiAJQQRqKAIANgIAIAEoApwBIgYgB0ECak0NAyABKAKYASADaiACakEIaiAJQQhqKAIANgIAIAEoApwBIgYgB0EDak0NAiABKAKYASADaiACakEMaiAJQQxqKAIANgIAIAJBEGohAiAKQQRqIQogBUEBayEFIAhBAWsiCA0BDAYLCyAPQQJ0IApqDAMLIA9BAnQgCmpBA2oMAgsgD0ECdCAKakECagwBCyAPQQJ0IApqQQFqCyAGQcyswQAQ8AcACyAEKAIYIgJFDQ8gDkEEaygCACIDQXhxIgUgAkECdCICQQRBCCADQQNxIgMbakkNFCADQQAgBSACQSdqSxsNFSAOEKICDA8LIAogDUG8rMEAEPAHAAtBACANIAJBnK3BABCgBQALIARBGGogBiADIAEoArAEEMwEIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQwAQgBCgCGCIDRQ0MAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA4LDBILDBILIARBGGogBiADIAEoArAEELEFIAEgASgCrAQgASgCsAQgBCgCHCICIAQoAiAQvwQgBCgCGCIDRQ0LAkAgAkEEaygCACIFQXhxIgggA0EBdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDA0LDBELDBELIAdBAWohBwsgByAIQfTmwQAQ8AcACyAEIAQoAiA2AmAgBCAEKQIYNwNYIAQoAmgiAkUNAAJAIAQoAmwiA0EEaygCACIFQXhxIgggAkECdCICQQRBCCAFQQNxIgUbak8EQCAFQQAgCCACQSdqSxsNASADEKICDAILDA4LDA4LIAEgASgCrAQgASgCsAQgBCgCXCICIAQoAmAQvwUgBCgCWCIDRQ0HAkAgAkEEaygCACIFQXhxIgggA0ECdCIDQQRBCCAFQQNxIgUbak8EQCAFQQAgCCADQSdqSxsNASACEKICDAkLDA0LDA0LIARBGGogBiADIAEoArAEIAIqAgQgAioCDBDEAwsgASABKAKsBCABKAKwBCAEKAIcIgIgBCgCIBCkAiAEKAIYIgNFDQUCQCACQQRrKAIAIgVBeHEiCCADQQJ0IgNBBEEIIAVBA3EiBRtqTwRAIAVBACAIIANBJ2pLGw0BIAIQogIMBwsMCwsMCwsgBEEYaiAGIANBAyAFICogKBCaBQsgASABKAKsBCABKAKwBCAEKAIcIgIgBCgCIBCqAiAEKAIYIgNFDQMCQCACQQRrKAIAIgVBeHEiCCADQQJ0IgNBBEEIIAVBA3EiBRtqTwRAIAVBACAIIANBJ2pLGw0BIAIQogIMBQsMCQsMCQsgBEEYaiAGIANBASABKAKwBCACKgIEIAIqAgwQmgULIAQoAiAhCCAEKAIcIQogASABKAKsBCABKAKwBCIFEIwFIAUEQEEAIQJBDCEHIAghBgNAAkACQAJAIAEoArQBIgMgAkEDaksEQCAGRQ0CIAIgCmooAgAiDkH///8DcSEMIA5BgICAgHhxIQkgDkGAgID8B3EiA0GAgID8B0YEQCAJQRB2IAxBDXZyQYAEQQAgDBtyQYD4AXIhCQwECyAJQRB2IQkgA0GAgIC4BEsNASADQYCAgMQDTwRAIA5BDHYgDkH/3wBxQQBHcSADQQ12IAxBDXZqQYCAAWogCXJqIQkMBAsgA0GAgICYA0kNAyAMQYCAgARyIg5B/gAgA0EXdiIMa3YhAyAOQR0gDGsiDHZBAXEEfyADQQMgDHRBAWsgDnFBAEdqBSADCyAJciEJDAMLIAIgAkEEaiADQayswQAQoAUACyAJQYD4AXIhCQwBCyAIIAhBnKzBABDwBwALIAEoArABIAdqIAlB//8DcTYCACAHQRBqIQcgBkEBayEGIAJBBGohAiAFQQFrIgUNAAsLIAFBAToA8AEgBCgCGCICRQ0BAkAgCkEEaygCACIDQXhxIgUgAkECdCICQQRBCCADQQNxIgMbak8EQCADQQAgBSACQSdqSxsNASAKEKICDAMLDAcLDAcLIABBAToAACAAIAE2AgQgH0UgHEVyDQMgHSAcQQEQwQcMAwsCQAJAAkAgGiABKAKYBCICTQRAIAFBADYCmAQgAiAaayEDIBpFDQEgAiAaRg0DIANFDQIgASgClAQiAiACIBpqIAP8CgAADAILQQAgGiACQaijxwAQoAUACyACIBpGDQELIAEgAzYCmAQLIAEgASkD8AMgGq18NwPwAyABIAEoAqgEQQFqIgI2AqgEAkAgH0UgHEVyDQACQCAdQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAcak8EQCACQQAgAyAcQSdqSxsNASAdEKICIAEoAqgEIQIMAgsMBgsMBgsgAiABKALkA0kNAAsLIABBgAI7AQALIARBwAFqJAAPC0Gc5sEAEJkKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQAgBEHYAGogBEHoAGpBACABQdChxAAQoAgAC9N6BBR/Gn4Qexh9IwBB8AJrIgIkACAAEKUBIAIgACgCCCIHNgIMIAIgAkEMaq1CgICAgBCEIic3AzAgAkHwAGpBzIHAACACQTBqEOAEAkACQAJAAkACfyACKAJwIgUEQCACKAJ0IgZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAVqSQ0EIANBACAEIAVBJ2pLGw0FIAYQogIgACgCCCEHCyACKAIMRQ0CAkACQAJAIAcEQAJAAkAgB0ECdCIMEG4iBgRAQQAhBSAHQQRJDQH9DAAAAAABAAAAAgAAAAMAAAAhMCAGIQMgB0H8//8fcSIFIQQDQCADIDD9CwIAIANBEGohAyAw/QwEAAAABAAAAAQAAAAEAAAA/a4BITAgBEEEayIEDQALIAUgB0cNASACIAA2AnQgAiACQe8CajYCcCACIAJB8ABqNgIwDAILQQQgDBCaCQALIAYgBUECdGohAwNAIAMgBTYCACADQQRqIQMgByAFQQFqIgVHDQALIAIgADYCdCACIAJB7wJqNgJwIAIgAkHwAGo2AjAgB0EBRg0DCyAHQRVJDQEgAkEwaiEJIwBBgCBrIgUkAAJAAkACQAJAAkACQEGAifoAIAcgB0GAifoATxsiAyAHIAdBAXZrIgQgAyAESxsiA0GBCE8EQCAEQf////8DSw0CIANBAnQiC0H9////B08NAiALEG4iCEUNAyAGIAcgCCADIAdBwQBJIAkQaCAIQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyALakkNBCADQQAgBCALQSdqSxsNBSAIEKICDAELIAYgByAFQYAIIAdBwQBJIAkQaAsgBUGAIGokAAwECxCYCgALQQQgCxCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACwwCCyAAQQRBABD/AQwCCyAGIAcgAkHwAGoQyQELIAAgBiAHEP8BIAZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAxqSQ0EIANBACAEIAxBJ2pLGw0FIAYQogILIAAQqwQgACgCCCIDRQ0BAkACQCADQQF0QQFrIgQQbiIDBEBBACEFIAJBADYCGCACIAM2AhQgAiAENgIQIAAoAggiCUUNASAEIAlJBEAgAkEQakEAIAlBAUEBENYGIAIoAhghBSACKAIUIQMLIAMgBWohBiAJQQFHBH8gCUEBayIEBEAgBkEBIAT8CwALIAMgBCAFaiIFagUgBgtBAToAACACIAVBAWo2AhggACgCCEUNASAAKAIEIgUQlwQhQSAFLwEcIghB//8BcSIERQRAIAhBEHQMBAsgCEH/B3EhCSAIQYCAAnEhAyAIQYD4AXEiBkGA+AFGBEAgA0EQdCIDQYCAgPwHciAJRQ0EGiADIAlBDXRyQYCAgP4HcgwECyADQRB0IQMgBkUNAiAGQQ10QYCAgPwAcSAJQQ10ckGAgIDAA2ogA3IMAwtBASAEEJoJAAtBAEEAQdjRxgAQ8AcACyADQYCAgNgDciAJZ0EQayIDQRd0ayAJIANB//8DcUEIanRB////A3FyCyEDIAJB//8BQ703hjUgQSBBkiADviJBQwAAgD9eBH0gQRDgBUNU+C1AlEMAAIA/kpEFQwAAgD8LlCJBIEEgQVwbIkFDvTeGNSBBQ703hjVeGxDgBUMYcjE/lY0iQfwAQYCAfiBBQwAAAMdgGyBBQwD+/0ZeG0EAIEEgQVsbOwEcIAIgBRCXBCJBIEGSAn8gCEEQdCAERQ0AGiAIQf8HcSEGIAhBgIACcSEDIAhBgPgBcSIEQYD4AUYEQCADQRB0IgNBgICA/AdyIAZFDQEaIAMgBkENdHJBgICA/gdyDAELIANBEHQiAyAEQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAQNABogA0GAgIDYA3IgBmdBEGsiA0EXdGsgBiADQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EfSBBEOAFQ1T4LUCUQwAAgD+SkQVDAACAPwuUOALwASACIAJB8AFqrUKAgICAoASENwN4IAIgAkEcaq1CgICAgLAEhDcDcCACQTBqQdCZwAAgAkHwAGoQ4AQCQCACKAIwIgUEQCACKAI0IgZBBGsoAgAiA0F4cSIEQQRBCCADQQNxIgMbIAVqSQ0BIANBACAEIAVBJ2pLGw0FIAYQogILIAIgAi8BHDsBHiACQQA2AiAgAkEANgIsIAJCgICAgMAANwIkQbi/yAAoAgAiBUUEQBCsBSEFCyAFKAIAIAUoAgQoAgwRBAAhAyACQbiixwD9AAMA/QsDMCACIAOtQoSQmNOYmLbsO4UiF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhEK7sOOODIRC0oGqm6v6gtenf34iFkKAwAODQiiGIBZCgICwA4NCGIYgFkKAgIDIA4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhEKAgICAgICAgOYAhCAXQtii0e/CqeW/LX6FIhdCko2P6LiU4IL1AIUiFkLYotHvwqnlvy1+IBZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iFkI4hiAWQoD+A4NCKIaEIBZCgID8B4NCGIYgFkKAgID4D4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhIVC7fSAhaaBppCrf4UiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A1ggAiAXQpjXmprFqdfE4wCFIhZC2KLR78Kp5b8tfiAWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEQtKBqpur+oLXp39+IhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhISFQvWz5eTn1dzgcIUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A1AgAiAXQvWz5eTn1dzgcIUiFkLYotHvwqnlvy1+IBZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iFkI4hiAWQoD+A4NCKIaEIBZCgID8B4NCGIYgFkKAgID4D4NCCIaEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhIVCko2P6LiU4IL1AIUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhELSgaqbq/qC16d/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhC2KLR78Kp5b8tfoUiGEI4hiAYQoD+A4NCKIaEIBhCgID8B4NCGIYgGEKAgID4D4NCCIaEhCAYQgiIQoCAgPgPgyAYQhiIQoCA/AeDhCAYQiiIQoD+A4MgGEI4iISEhEKL2KL1h5rPmLN/fiIWQjiGIBZCgP4Dg0IohoQgFkKAgPwHg0IYhiAWQoCAgPgPg0IIhoSEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISEIBhCzJyP/pLw1al0foUgGIk3A0ggAiAXQu30gIWmgaaQq3+FIhdC2KLR78Kp5b8tfiAXQjiGIBdCgP4Dg0IohoQgF0KAgPwHg0IYhiAXQoCAgPgPg0IIhoSEIBdCCIhCgICA+A+DIBdCGIhCgID8B4OEIBdCKIhCgP4DgyAXQjiIhISEQtKBqpur+oLXp39+IhdCOIYgF0KA/gODQiiGhCAXQoCA/AeDQhiGIBdCgICA+A+DQgiGhIQgF0IIiEKAgID4D4MgF0IYiEKAgPwHg4QgF0IoiEKA/gODIBdCOIiEhISFQpjXmprFqdfE4wCFIhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRC0oGqm6v6gtenf34iF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhCAXQgiIQoCAgPgPgyAXQhiIQoCA/AeDhCAXQiiIQoD+A4MgF0I4iISEhCAWQtii0e/CqeW/LX6FIhZCOIYgFkKA/gODQiiGhCAWQoCA/AeDQhiGIBZCgICA+A+DQgiGhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIRCi9ii9Yeaz5izf34iF0I4hiAXQoD+A4NCKIaEIBdCgID8B4NCGIYgF0KAgID4D4NCCIaEhCAXQgiIQoCAgPgPgyAXQhiIQoCA/AeDhCAXQiiIQoD+A4MgF0I4iISEhCAWQsycj/6S8NWpdH6FIBaJNwNAIAJBqAJqrSIhQoCAgIAQhCEiIAJB2AFqrUKAgICAEIQhKCACQSBqrUKAgICAEIQhKSACQeAAaq1CgICAgKAEhCEqIAJBHmqtQoCAgICwBIQhKyACQfgAaiEUIAJB+AFqIRUgAigCDCELIAIoAiAhBAJAA0AgAkMAAIA/IAIuAR4Q2AYiQjgCYCAAKAIIIQgCQCAEIAtPDQAgBCALayEMIARBLGwiCiAAKAIEaiEDIAQgBCAIIAQgCEsbayEHQQAhBQJAA0AgBCAFaiEGQwAAgD8hQAJ/AkAgBSAHagRAIAMQlwQhRSADQRxqLwEAIg5B//8BcUUEQCAOQRB0DAMLIA5B/wdxIQ0gDkGAgAJxIQkgDkGA+AFxIg5BgPgBRgRAIAlBEHQiCUGAgID8B3IgDUUNAxogCSANQQ10ckGAgID+B3IMAwsgCUEQdCEJIA5FDQEgDkENdEGAgID8AHEgDUENdHJBgICAwANqIAlyDAILIAYgCEHY0cYAEPAHAAsgCUGAgIDYA3IgDWdBEGsiCUEXdGsgDSAJQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EQCBBEOAFQ1T4LUCUQwAAgD+SkSFACyBFIEWSIECUIEJeDQEgAiAGQQFqNgIgIANBLGohAyAMIAVBAWoiBWoNAAsgCyEGCyAEIAZPDQAgBiAEayILQf////8BSw0EIAtBA3QiA0H9////B08NBEEAIQcCQCADRQRAQQQhCEEAIQsMAQsgAxBuIghFDQMLIAQgBmshBiAIIQUDQEMAAIA/IUACfwJAIAQgB2oiDCAAKAIIIgNJBEAgACgCBCAKaiIDEJcEIUIgA0Ecai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEOIAlBgIACcSEDIAlBgPgBcSIJQYD4AUYEQCADQRB0IgNBgICA/AdyIA5FDQMaIAMgDkENdHJBgICA/gdyDAMLIANBEHQhAyAJRQ0BIAlBDXRBgICA/ABxIA5BDXRyQYCAgMADaiADcgwCCyAMIANB2NHGABDwBwALIANBgICA2ANyIA5nQRBrIgNBF3RrIA4gA0H//wNxQQhqdEH///8DcXILviJBQwAAgD9eBEAgQRDgBUNU+C1AlEMAAIA/kpEhQAsgBUEEaiAMNgIAIAUgQiBCkiBAjJQ4AgAgCkEsaiEKIAVBCGohBSAGIAdBAWoiB2oNAAsgAiAHNgJsIAIgCDYCaCACIAs2AmQgAkEkaiACQeQAahCXAiAAKAIIIQgLIAIgAigCLCILNgLYASACIAg2AqgCIAIgIjcDmAEgAiAoNwOQASACICc3A4gBIAIgKTcDgAEgAiAqNwN4IAIgKzcDcCACQfABakG0kMAAIAJB8ABqEOAEIAIoAvABIgUEQCACKAL0ASIGQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyAFakkNBiADQQAgBCAFQSdqSxsNByAGEKICCyACKAI8IgQEQCACKAIwIglBCGohAyAJKQMAQn+FQoCBgoSIkKDAgH+DIRogCSEFA0AgGlAEQANAIAMiBkEIaiEDIAVBgARrIQUgBikDAEKAgYKEiJCgwIB/gyIXQoCBgoSIkKDAgH9RDQALIBdCgIGChIiQoMCAf4UhGgsgBSAaeqdBA3RBwAdxayIGQQRrKAIAIghBCU8EQCAGQSBrKAIAIgxBBGsoAgAiBkF4cSIHIAhBAnQiCEEEQQggBkEDcSIGG2pJDQggBkEAIAcgCEEnaksbDQkgDBCiAgsgGkIBfSAagyEaIARBAWsiBA0ACyACIAIoAjQiBAR/IARBCWoiAwRAIAlB/wEgA/wLAAsgBCAEQQFqQQN2QQdsIARBCEkbBUEACzYCOCACQQA2AjwLAkAgCwRAIAIoAigiByALQQN0aiEJA0AgBygCBCIMIAAoAggiA08NAiACIAAoAgQgDEEsbGoiA/1dAgggAyoCECJB/SACIEH9IAMgAv0JAmD95wH9aCIw/R8C/AQ3A7gBIAIgMP0fAfwENwOwASACIDD9HwD8BDcDqAEgAkHwAGogAkEwaiACQagBahCGAgJAIAIoApABIggEQCACIBQpAwA3A/ABIAIgFP0AAwj9CwP4ASAIKAIAIgsgCCgCBCIFIAIoAnAiBnEiBGopAABCgIGChIiQoMCAf4MiGlAEQEEIIQoDQCAEIApqIQMgCkEIaiEKIAsgAyAFcSIEaikAAEKAgYKEiJCgwIB/gyIaUA0ACwsgCyAaeqdBA3YgBGogBXEiBGosAAAiCkEATgRAIAsgCykDAEKAgYKEiJCgwIB/g3qnQQN2IgRqLQAAIQoLIAQgC2ogBkEZdiIDOgAAIAggCCgCCCAKQQFxazYCCCALIARBCGsgBXFqQQhqIAM6AAAgCyAEQQZ0ayIFQUBqIgMgAikDgAI3AxAgAyAC/QAD8AH9CwMAIAVBBGtBADYCACAFQShrQQA2AgAgCCAIKAIMQQFqNgIMDAELIAIoAnAhBQsgBUEkayEGAn8gBUEEayIDKAIAIghBCUkEQCAIIQRBCCEIIAYMAQsgBigCACEEIAYhAyAFQSBrKAIACyEKIAQgCEYEQCAFQShrEOUGIAVBIGsoAgAhCiAGKAIAIQQgBiEDCyAKIARBAnRqIAw2AgAgAyADKAIAQQFqNgIAIAdBCGoiByAJRw0ACwsgAkEANgLIASACQoCAgIDAADcCwAEDQCACKAIUIRMgAigCGCEQAkACQAJAAkACQAJAA0AgAkHMAWogAkEkahCgAyACKALMAUEBRw0CIAIoAtQBIhEgEE8NASARIBNqIgstAABFDQALIAAoAggiDyARSwRAIAIgACgCBCIHIBFBLGxqIhL9XQIIIBIqAhAiQf0gAiBB/SADIAL9CQJg/ecB/WgiMP0fAfwEIhg3A+ABIAIgMP0fAPwEIho3A9gBIAIgMP0fAvwEIhc3A+gBAkAgF0IBfSIcIBdCAXwiHVcEQAJAIBhCAX0iFiAYQgF8Ih5VBEADQCAcIB1ZDQIgHCAcIB1TrXwiHCAdVw0ADAILAAsgGkIBfSIYIBpCAXwiH1cEQCACKQNAIhdCOIYgF0KA/gODQiiGhCAXQoCA/AeDQhiGIBdCgICA+A+DQgiGhIQgF0IIiEKAgID4D4MgF0IYiEKAgPwHg4QgF0IoiEKA/gODIBdCOIiEhIQhLCAXQn+FIS1DAACA/yFBQX8hDEL///////////8AISMgAigCMCEOIAIoAjQhDSACKQNIIS4gAigCPCEIQv///////////wAhJEL///////////8AISUMAwsDQCAWIRoDQCAaIB5TIgMEQCAaIAOtfCIaIB5XDQELCyAcIB1ZDQEgHCAcIB1TrXwiHCAdVw0ACwsgAkL///////////8ANwOIAiACQv///////////wA3A4ACCyACQv///////////wA3A/gBIAJC/////4+AgEA3A/ABDAcLA0ACQAJAIAgEQCAWIRoMAQsgFiEXA0AgGCEaA0AgGiAfUyIDBEAgGiADrXwiGiAfVw0BCwsgFyAeWQ0CIB4gFyAXIB5TrXwiF1kNAAsMAQsDQCAaIiAgGiAeU618IRogGCEXAkACQANAIA0gFyAuhSIZQtii0e/CqeW/LX4gGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEhSAghSIZQtii0e/CqeW/LX4gGUI4hiAZQoD+A4NCKIaEIBlCgID8B4NCGIYgGUKAgID4D4NCCIaEhCAZQgiIQoCAgPgPgyAZQhiIQoCA/AeDhCAZQiiIQoD+A4MgGUI4iISEhELSgaqbq/qC16d/fiIZQjiGIBlCgP4Dg0IohoQgGUKAgPwHg0IYhiAZQoCAgPgPg0IIhoSEIBlCCIhCgICA+A+DIBlCGIhCgID8B4OEIBlCKIhCgP4DgyAZQjiIhISEhSAchSIbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEQtKBqpur+oLXp39+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIQgG0LYotHvwqnlvy1+hSIbQjiGIBtCgP4Dg0IohoQgG0KAgPwHg0IYhiAbQoCAgPgPg0IIhoSEIBtCCIhCgICA+A+DIBtCGIhCgID8B4OEIBtCKIhCgP4DgyAbQjiIhISEIC1+IhlCOIYgGUKA/gODQiiGhCAZQoCA/AeDQhiGIBlCgICA+A+DQgiGhIQgGUIIiEKAgID4D4MgGUIYiEKAgPwHg4QgGUIoiEKA/gODIBlCOIiEhIQgGyAsfoUgG4kiGadxIQMgGUIZiEL/AINCgYKEiJCgwIABfiEvIBcgFyAfU618IRlBACEEAkACQANAAkAgAyAOaikAACImIC+FIhtCf4UgG0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIbUEUEQANAAkAgFyAOIBt6p0EDdiADaiANcUEGdGsiBkFAaikDAFINACAgIAZBOGspAwBSDQAgHCAGQTBrKQMAUQ0DCyAbQgF9IBuDIhtQRQ0ACwsgJiAmQgGGg0KAgYKEiJCgwIB/g1BFDQIgAyAEQQhqIgRqIA1xIQMMAQsLAn8gBkEEaygCACIEQQlPBEAgBkEkaygCACEEIAZBIGsoAgAMAQsgBkEkawshAyAERQ0AIARBAnQhBgNAIAMoAgAiBCAQTw0CAkAgBCARRg0AIAQgE2otAABBAXFFDQAgBCAPTw0FIAJB8ABqIgUgEhCsAyAC/QAEcCEyIAUgEikCABDTAiAC/QAEcCEwIAUgByAEQSxsaiIKEKwDIAL9AARwITMgBSAKKQIAENMCIDIgMP0NCAkKCwgJCgsICQoLAAECAyAw/R8AIlMgMP0fAiJIIEiSIlaUIk8gMP0fAyJEIDD9HwEiQyBDkiJJlCJQkv0TIEMgVpQiUSBEIFMgU5IiQJQiRZP9IAFDAACAPyBTIECUIkIgQyBJlCJSkpP9IAL95gEiMSAzIDH9DQgJCgsICQoLCAkKCwABAgMgAv0ABHAiMP0fACJUIDD9HwIiSiBKkiJGlCJVIDD9HwMiSyAw/R8BIkMgQ5IiTJQiTZL9EyBDIEaUIlcgSyBUIFSSIkCUIkeT/SABQwAAgD8gVCBAlCJAIEMgTJQiTpKT/SAC/eYBIjX9DQQFBgcUFRYXAAECAwABAgMiPiA+/eYBIDIgMf0NBAUGBwQFBgcEBQYHAAECAyBTIEmUIkMgRCBWlCJEk/0TQwAAgD8gQiBIIFaUIkmSk/0gASBRIEWS/SAC/eYBIjYgMyAx/Q0EBQYHBAUGBwQFBgcAAQIDIFQgTJQiRSBLIEaUIkKT/RNDAACAPyBAIEogRpQiQJKT/SABIFcgR5L9IAL95gEiN/0NBAUGBxQVFhcAAQIDAAECAyI0IDT95gEgMiAx/Q0AAQIDAAECAwABAgMAAQIDQwAAgD8gUiBJkpP9EyBDIESS/SABIE8gUJP9IAL95gEiOCAzIDH9DQABAgMAAQIDAAECAwABAgNDAACAPyBOIECSk/0TIEUgQpL9IAEgVSBNk/0gAv3mASI5/Q0EBQYHFBUWFwABAgMAAQIDIjogOv3mAf3kAf3kASI7/R8AQwAAAD8gOyAxIDX9DQABAgMQERITAAECAwABAgMiMCAw/eYBIDYgN/0NAAECAxAREhMAAQIDAAECAyIwIDD95gEgOCA5/Q0AAQIDEBESEwABAgMAAQIDIjAgMP3mAf3kAf3kASI//Q0UFRYXBAUGBwABAgMAAQIDIDEgMf0NCAkKCwABAgMAAQIDAAECAyA1IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMiAy/eYBIDYgMf0NCAkKCwABAgMAAQIDAAECAyA3IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMyAz/eYBIDggMf0NCAkKCwABAgMAAQIDAAECAyA5IDH9DQgJCgsAAQIDAAECAwABAgP9DQABAgMQERITAAECAwABAgMiMCAw/eYB/eQB/eQBIjwgMf0NBAUGBwABAgMAAQIDAAECA/0NAAECAwQFBgcQERITAAECAyA1/R8AIkMgNf0fAZQgN/0fACJEIDf9HwGUIDn9HwAiSSA5/R8BlJKSIlf9IAP9DAAAAD8AAAA/AAAAPwAAAD/95gEiPf0fARDeBiFMID/9HwBDAAAAPyA9/R8AEN4GIUYgPP0fAEMAAAA/ID39HwIQ3gYhTyA+IDL95gEgNCAz/eYBIDogMP3mAf3kAf3kASI0/R8AQwAAAD8gNP0fAUMAAAA/lBDeBiFIQwAAAAAhUiAx/R8AIkUgMf0fApQgNv0fACJCIDb9HwKUIDj9HwAiQCA4/R8ClJKSIkdDAAAAPyBDIDX9HwKUIEQgN/0fApQgSSA5/R8ClJKSIk5DAAAAP5QQ3gYiSiBIIEUgMf0fAZQgQiA2/R8BlCBAIDj9HwGUkpIiQ0MAAAA/ID39HwMQ3gYiS5QgSiBMlJMiRJQgRiBMIE+UIEggSJSTIkmUIEsgTyBLlCJFIEogSJQiQpOUk5IiVYtDYEKiDSBPiyJQIEyLIlEgRosiQCBAIEBcGyJNIE0gUSBRIFFcGyJAIEAgTV0bIkAgQCBAXBsiTSBNIFAgUCBQXBsiQCBAIE1dGyJAIEAgQJSUIkAgQCBAXBsiQENgQqINIEBDYEKiDV4bQ19wiTCUXUUEQCASQRBqIBL9XQII/VYCAAIhMiAKQRBqIAr9XQII/VYCAAIhMyBVIEf9EyBO/SABIjogQ/0TIFf9IAEiMCA0/eYBIDsgOv3mAf3lAf3mASA/IDsgPP3mASA0IDT95gH95QH95gEgMCA8IDD95gEgOiA0/eYB/eUB/eYB/eUB/eQBIjD9HwAgMP0fAZSRlRDgBUMAAAA/lCAzIDL95QEiMP0fAiJOIEogS5QgSCBGlJNDAACAPyBVlSJHlCJAIECSIDD9HwEiQ5SUIE4gRCBHlCJAIECSIDD9HwAiRJSUIEMgQiBFkyBHlCJAIECSIESUlCBOIE4gRiBMlCBLIEuUkyBHlJSUIEQgRCBJIEeUlJQgQyBDIEYgT5QgSiBKlJMgR5SUlJKSkpKSQwAAAD6UkiFSCyAKKAIUIQkgEigCFCEFIFKMEIgEIUICQCAFIAlGBEBDAAAAACFAIBIoAhggCigCGEcNAQsgAkHwAGoiBSASELQDIAL9AARwITAgBSAKELQDIEIgMCAC/QAEcP3lASIwIDD95gEiMCAw/Q0ICQoLAAECAwABAgMAAQIDIDAgMCAw/Q0EBQYHAAECAwABAgMAAQID/eQB/eQB/R8AjBCIBJQiQCBAWw0AQwAAAAAhQAsgQCBBXkUNACAcISMgICEkIBchJSBAIUEgBCEMCyADQQRqIQMgBkEEayIGDQALCyAXIB9ZDQMgGSIXIB9VDQMMAQsLIAQgEEHA+cEAEPAHAAsgBCAPQdjRxgAQ8AcACyAeICBXDQEgGiAeVw0ACwsgHCAdUyIDBEAgHCADrXwiHCAdVw0BCwsgAiAjNwOIAiACICQ3A4ACIAIgJTcD+AEgAiBBOAL0ASACIAw2AvABIAxBf0YNBiACIAw2AnQgAiARNgJwIAAgAkHwAGpBAkMAAAAAEEIhDyALQQA6AAAgAkEwaiACQdgBahCOAiINRQ0DIA0oAiQiBSEOIA1BJGohCyAFQQlPBEAgDSgCBCEOCyAORQRAQQAhCgwGCyANQQRqIQlBACEKQQAhA0EAIQUDQCALKAIAIgchBCAJIQYgB0EJSSIIRQRAIA0oAgghBiANKAIEIQQLAkACQCAEIAVLBEAgESADIAZqKAIARgRAIApBAWohCgwDCyAKRQRAQQAhCgwDCyAJIQQgCEUEQCANKAIEIQcgDSgCCCEECyAFIAprIgYgB08NASAFIAdJBEAgBCADIApBAnRraiIIKAIAIQYgCCADIARqIgQoAgA2AgAgBCAGNgIADAMLIAUgB0HwucEAEPAHAAsgBSAEQeC5wQAQ8AcACyAGIAdB8LnBABDwBwALIANBBGohAyAFQQFqIgUgDkcNAAsMBAsgESAPQdjRxgAQ8AcACyARIBBBgPnBABDwBwALIAIgAi8BHkEBajsBHiACQSRqIAJBwAFqEJcCIAIoAiAiBCACKAIMIgtJDQYgAigCLEEBSw0GIAIgACgCCEEBazYCwAIgAiACQcACaq1CgICAgBCENwPwASACQfAAakG7jsAAIAJB8AFqEOAEIAIoAnAiAwRAIAIoAnQgA0EBEMEHCwJAAkACQAJAAkAgAigCwAIiBCAAKAIIIgNJBEAgAiAAKAIEIARBLGxqNgKoAiACICFCgICAgJAFhDcD8AEgAkHwAGpB4I/AACACQfABahDgBCACKAJwIgMEQCACKAJ0IANBARDBBwsgACgCCCIDRQ0PIANBAXRBAWsiBBBuIgNFDQFBACEFIAJBADYC4AEgAiADNgLcASACIAQ2AtgBIAIoAgwiCQRAIAQgCUkEQCACQdgBakEAIAlBAUEBENYGIAIoAuABIQUgAigC3AEhAwsgAyAFaiEGIAlBAUcEfyAJQQFrIgQEQCAGQQEgBPwLAAsgAyAEIAVqIgVqBSAGC0EBOgAAIAVBAWohBQsgAiAFNgLgASAFIAAoAggiCkkEQCAKIAVrIgQgAigC2AEgBWtLBEAgAkHYAWogBSAEQQFBARDWBiACKALgASEFIAIoAtwBIQMLIAMgBWohBiAEQQJPBH8gBEEBayIEBEAgBkEAIAT8CwALIAMgBCAFaiIFagUgBgtBADoAACAFQQFqIQoLIAIgCjYC4AEgAigCwAIiAyAKTw0EIAIoAtwBIgkgA2pBAToAACACQfAAaiAAIAIoAsACIAJB2AFqIAEQlAJBACEHQQAhAwJAIApBBE8EQP0MAAAAAAAAAAAAAAAAAAAAACEwIAkhBSAKQXxxIgchAwNAIDAgBf1cAAD9iQH9qQH9rgEhMCAFQQRqIQUgA0EEayIDDQALIDAgMCAw/Q0ICQoLDA0ODwABAgMAAQID/a4BIjAgMCAw/Q0EBQYHAAECAwABAgMAAQID/a4B/RsAIQMgByAKRg0BCyAHIAlqIQUgCiAHayEHA0AgAyAFLQAAaiEDIAVBAWohBSAHQQFrIgcNAAsLIAIoApgBIQ8gAigCfCENIAIgAzYCxAIgAiAAKAIINgKoAiACICI3A3ggAiACQcQCaq1CgICAgBCEIhg3A3AgAkHwAWpBqprAACACQfAAahDgBCACKALwASIDBEAgAigC9AEgA0EBEMEHCyACIAIoAsQCsyACKAIMs5U4AqgCIAIgIUKAgICAoASENwPwASACQfAAakGfkcAAIAJB8AFqEOAEIAIoAnAiAwRAIAIoAnQgA0EBEMEHCyACQQA2ArACIAJCgICAgMAANwKoAiACQagCahChByACKAKsAiACKALAAiIENgIAIAJBATYCsAIgBCAAKAIIIgNPDQIgAiAAKAIEIARBLGxqIgMQlwQiASABkiADQRxqLwEAEKcGIgFDAACAP14EfSABEOAFQ1T4LUCUQwAAgD+SkQVDAACAPwuUOALIAkEEEG4iA0UNAyADIAIoAsACNgIAIAJB4AJqrUKAgICAEIQhFiACQcgCaq1CgICAgKAEhCEXQQEhBEEBIQcDQCACIAc2AuACIAIgFjcDeCACIBc3A3AgAkHwAWpBooHAACACQfAAahDgBCACKALwASIMBEAgAigC9AEiCEEEaygCACIGQXhxIgVBBEEIIAZBA3EiBhsgDGpJDRMgBkEAIAUgDEEnaksbDRQgCBCiAgtBACEFIAJBADYCeCACQoCAgIDAADcCcCAHQQJ0IQYDQCAAIAMgBWooAgAgAkGoAmogAioCyAIgAkHwAGoQ2AEgBiAFQQRqIgVHDQALAkAgAigCeCIHRQRAIAIoAnAiBgRAIAIoAnQgBkECdEEEEMEHCyACIAIoArACIgc2AswCIAcgAigCxAJGDQFBACACQcwCaiACQcQCakEAIAJB4PnBABCgCAALIAIgAioCyAJDAACAPpQ4AsgCIAIoAnQgAigCcCEGIAQEQCADQQRrKAIAIgtBeHEiDCAEQQJ0IghBBEEIIAtBA3EiBBtqSQ0UIARBACAMIAhBJ2pLGw0VIAMQogILIQMgBiEEDAELC0EAIQUDQCAFIAlqLQAARQRAIAIoAqgCIAdGBEAgAkGoAmoQoQcLIAIoAqwCIAdBAnRqIAU2AgAgAiAHQQFqIgc2ArACCyAKIAVBAWoiBUcNAAsgACACKAKsAiAHEP8BIAAgAigCxAIQpgUgAiAYNwPwASACQfAAakG9gMAAIAJB8AFqEOAEIAIoAnAiBgRAIAIoAnQgBkEBEMEHCyACIAAoAggiFQR8QgAhGkEAIQdBACEGA0AgAkHwAGogACgCECAAKAIUIAcQ8wIgAigClAEiBUEISwRAIAIoAngiDkEEaygCACIIQXhxIgsgBUECdCIMQQRBCCAIQQNxIggbakkNFCACKAJ0IQUgCEEAIAsgDEEnaksbDQggDhCiAgsgBiAFQQBHaiEGIBogBa18IRogFSAHQQFqIgdHDQALIBq6IAa3owVEAAAAAAAA+H8LOQPQAiACIAJB0AJqrUKAgICAgAWENwPwASACQfAAakHvj8AAIAJB8AFqEOAEIAIoAnAiBgRAIAIoAnQgBkEBEMEHCyACQfAAaiAAKAIQIAAoAhRBABDzAiACIAIoAnQgAigClAEiBiAGQQhLGzYC3AIgAiACQdwCaq1CgICAgBCENwPgAiACQfABakGAk8AAIAJB4AJqEOAEIAZBCU8EQCACKAJ4IAZBAnRBBBDBBwsgAigC8AEiBgRAIAIoAvQBIAZBARDBBwsgBARAIAMgBEECdEEEEMEHCyACKAKoAiIDBEAgAigCrAIgA0ECdEEEEMEHCyAPQQlPBEAgDSAPQQJ0QQQQwQcLIAIoAtgBIgMEQCAJIANBARDBBwsCQCACKAI0IgxFDQAgAigCPCIEBEAgAigCMCIFQQhqIQMgBSkDAEJ/hUKAgYKEiJCgwIB/gyEaA0AgGlAEQANAIAMiBkEIaiEDIAVBgARrIQUgBikDAEKAgYKEiJCgwIB/gyIXQoCBgoSIkKDAgH9RDQALIBdCgIGChIiQoMCAf4UhGgsgBSAaeqdBA3RBwAdxayIGQQRrKAIAIglBCU8EQCAGQSBrKAIAIgdBBGsoAgAiBkF4cSIIIAlBAnQiCUEEQQggBkEDcSIGG2pJDRUgBkEAIAggCUEnaksbDRYgBxCiAgsgGkIBfSAagyEaIARBAWsiBA0ACwsgDEEGdCIEIAxqQckAaiIDRQ0AIAIoAjAgBGtBQGogA0EIEMEHCyACKAIkIgMEQCACKAIoIANBA3RBBBDBBwsgAigCECIDBEAgEyADQQEQwQcLIAAoAgghBwwQCyAEIANB2NHGABDwBwALQQEgBBCaCQALIAQgA0HY0cYAEPAHAAtBBBCxCgALIAMgCkHQ+cEAEPAHAAsMDAtBkPnBABCZCgALIAsoAgAhBQsgDiAKayIEIA1BBEEkIAVBCEsiAxtqKAIASQRAIA1BBGogCyADGyAENgIACwJAAkACQAJAIAwgEEkEQCAMIBNqQQA6AAAgAkEwaiAVEI4CIgpFDQIgCigCJCIFIQsgCkEkaiENIAVBCU8EQCAKKAIEIQsLIAsNAUEAIQgMBAsgDCAQQaD5wQAQ8AcACyAKQQRqIQlBACEIQQAhA0EAIQUDQCANKAIAIgchBCAJIQYgB0EJSSIORQRAIAooAgghBiAKKAIEIQQLAkACQCAEIAVLBEAgDCADIAZqKAIARgRAIAhBAWohCAwDCyAIRQRAQQAhCAwDCyAJIQQgDkUEQCAKKAIEIQcgCigCCCEECyAFIAhrIgYgB08NASAFIAdJBEAgBCADIAhBAnRraiIHKAIAIQYgByADIARqIgQoAgA2AgAgBCAGNgIADAMLIAUgB0HwucEAEPAHAAsgBSAEQeC5wQAQ8AcACyAGIAdB8LnBABDwBwALIANBBGohAyAFQQFqIgUgC0cNAAsMAQtBsPnBABCZCgALIA0oAgAhBQsgCyAIayIEIApBBEEkIAVBCEsiAxtqKAIASQRAIApBBGogDSADGyAENgIACyACKAIQIBBGBH8jAEEQayIFJAAgBUEEaiACQRBqIgYoAgAiAyAGKAIEQQggA0EBdCIDIANBCE0bIgRBAUEBEM4GIAUoAgRBAUYEQCAFKAIIIAUoAgwQmgkACyAFKAIIIQMgBiAENgIAIAYgAzYCBCAFQRBqJAAgAigCFAUgEwsgEGpBAToAACACIBBBAWo2AhhDAACAPyFAAn8CQCAAKAIIIgMgD0sEQCAAKAIEIA9BLGxqIgYQlwQhQiAGLwEcIgRB//8BcUUEQCAEQRB0DAMLIARB/wdxIQUgBEGAgAJxIQMgBEGA+AFxIgRBgPgBRgRAIANBEHQiA0GAgID8B3IgBUUNAxogAyAFQQ10ckGAgID+B3IMAwsgA0EQdCEDIARFDQEgBEENdEGAgID8AHEgBUENdHJBgICAwANqIANyDAILIA8gA0HY0cYAEPAHAAsgA0GAgIDYA3IgBWdBEGsiA0EXdGsgBSADQf//A3FBCGp0Qf///wNxcgu+IkFDAACAP14EQCBBEOAFQ1T4LUCUQwAAgD+SkSFACyBCIEKSIECUIkIgAioCYCJAXkUEQCACIAb9XQIIIAYqAhAiQf0gAiBB/SADIED9E/3nAf1oIjD9HwL8BDcDoAIgAiAw/R8B/AQ3A5gCIAIgMP0fAPwENwOQAiACQfAAaiACQTBqIAJBkAJqEIYCAkAgAigCkAEiCQRAIAIgFCkDADcDqAIgAiAU/QADCP0LA7ACIAkoAgAiCCAJKAIEIgUgAigCcCIEcSIHaikAAEKAgYKEiJCgwIB/gyIaUARAQQghBgNAIAYgB2ohAyAGQQhqIQYgCCADIAVxIgdqKQAAQoCBgoSIkKDAgH+DIhpQDQALCyAIIBp6p0EDdiAHaiAFcSIHaiwAACIGQQBOBEAgCCAIKQMAQoCBgoSIkKDAgH+DeqdBA3YiB2otAAAhBgsgByAIaiAEQRl2IgM6AAAgCSAJKAIIIAZBAXFrNgIIIAggB0EIayAFcWpBCGogAzoAACAIIAdBBnRrIgVBQGoiAyACKQO4AjcDECADIAL9AAOoAv0LAwAgBUEEa0EANgIAIAVBKGtBADYCACAJIAkoAgxBAWo2AgwMAQsgAigCcCEFCyAFQSRrIQYCfyAFQQRrIgMoAgAiBEEJSQRAIAQhB0EIIQQgBgwBCyAGKAIAIQcgBiEDIAVBIGsoAgALIQggBCAHRgRAIAVBKGsQ5QYgBUEgaygCACEIIAYoAgAhByAGIQMLIAggB0ECdGogDzYCACADIAMoAgBBAWo2AgAgAkEkaiBCjCAPEJgFDAILIAIoAsgBIgQgAigCwAFGBEAgAkHAAWoQnwcLIAIoAsQBIARBA3RqIgMgDzYCBCADIEKMOAIAIAIgBEEBajYCyAEMAQsgAioC0AEhQSACKALIASIEIAIoAsABRgRAIAJBwAFqEJ8HCyACKALEASAEQQN0aiIDIBE2AgQgAyBBOAIAIAIgBEEBajYCyAEMAAsACwsgDCADQdjRxgAQ8AcAC0EEIAMQmgkACwwCCxCYCgALIAcEQCAAKAIEQRxqIQMDQAJAAn8CQAJAAn8CQCADLwEAIgxB//8BcSIFBEAgDEH/B3EhCyAMQYCAAnEhCCAMQYD4AXEiCUGA+AFHIgZFBEAgCEEQdCIEQYCAgPwHciALRQ0DGiAEIAtBDXRyQYCAgP4HcgwDCyAIQRB0IQQgCUUNASAJQQ10QYCAgPwAcSALQQ10ckGAgIDAA2ogBHIMAgsgDEEQdL5DAACAP14NAgwFCyAEQYCAgNgDciALZ0EQayIEQRd0ayALIARB//8DcUEIanRB////A3FyC75DAACAP15FDQMgBQ0BCyAMQRB0DAELIAZFBEAgCEEQdCIEQYCAgPwHciALRQ0BGiAEIAtBDXRyQYCAgP4HcgwBCyAIQRB0IgQgCUENdEGAgID8AHEgC0ENdHJBgICAwANqciAJDQAaIARBgICA2ANyIAtnQRBrIgRBF3RrIAsgBEH//wNxQQhqdEH///8DcXILQwAAgD8hQL4iAUMAAIA/XgRAIAEQ4AVDVPgtQJRDAACAP5KRQwAAgL+SQwAAgD6UQwAAgD+SIUALQwAAAEBDAACAPyBAIEBDAACAP10bIgEgAUMAAABAXhu8IgVB////A3EhBiAFQYCAgIB4cSEEAkAgBUGAgID8B3EiCEGAgID8B0YEQCAGQQ12IARBEHZyQYAEQQAgBhtyQYD4AXIhBAwBCyAEQRB2IQQgCEGAgIC4BE0EQCAIQYCAgMQDTwRAIAVBDHYgBUH/3wBxQQBHcSAIQQ12IAZBDXZqQYCAAWogBHJqIQQMAgsgCEGAgICYA0kNASAGQYCAgARyIglB/gAgCEEXdiIGa3YhBSAJQR0gBmsiBnZBAXEEfyAFQQMgBnRBAWsgCXFBAEdqBSAFCyAEciEEDAELIARBgPgBciEECyADIAQ7AQALIANBLGohAyAHQQFrIgcNAAsLIAAQWiACQfACaiQADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALk5MBAhF/An4jAEGwAWsiBiQAIAMtAAMiC0EYdCIIIAMtAAAiDXIgAy0AASIOQQh0IgogAy0AAiIJQRB0IgxyciIHQf+B/AdxQQh4IAdBGHhB/4H8B3FyIQMCQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAYCfwJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAQQFrDgUEAAECJwMLIAFCADcDgAMgAEEAOgAIIAAgBTYCBCAAQQA2AgAgASADrUIghkIDhDcD+AIMfwsgAigCBCEHIAEoAghBAkYgCiANciAIIAxyciIDQcmQkZIFR3ENAyABKALYAiIIIANHIAhByYiFogVGIAhB5siFogVGcnENHyABIAM2AtgCIAEtAJEDRQRAIAFCBDcDyAIgASALIAkgDiANQf8Bc0ECdCgCxMFCQf///wdzIgJzQf8BcUECdCgCxMFCIAJBCHZzIgJzQf8BcUECdCgCxMFCIAJBCHZzIgJzQf8BcUECdCgCxMFCIAJBCHZzQX9zNgLQAgsgAUEANgLoAiABIAc2AtwCIA1ByQBGDRsgDUHmAEYNGiANQdAAaw4rBQQEBAQEBAQEBAQEBAQEBAQKDQsEDgQJBA8EBAQMBAQIBAQGBwQEBAQEEAQLIAIoAAEhEiABLQCRAw0fIAEoAtACIgIgA0YNHyABLQCUA0EBRkEAIBJBIHEbDSAgACASNgIQIAAgAjYCDCAAIAM2AgggAEEAOgAEIABBATYCAAx9CyAHQYmhuboERwRAIABBATYCACAAQQE6AAQMfQsgAUIANwOAAyABQgE3A/gCIABBADoACCAAIAU2AgQgAEEANgIADHwLIAdBjZTo0ABHBEAgAEEBNgIAIABBAToABAx8CyABQgA3A4ADIAFCAjcD+AIgAEEAOgAIIAAgBTYCBCAAQQA2AgAMewsgACADNgAFIABBBDoABCAAQQE2AgAMegsgDUEgcUUEQEEiIQIMeQtBBiEKDG8LQSIhAiALQcUARyAOQcwAR3IgCUHUAEdyDXdBAyEMQYAGIQIMcQtBBiEKQQEhAiADIQggDkHCAGsiBEUNCiAEQRBGDQsMdAtBBiEKQQEhAiADIQggDkHFAGsiBEUNDCAEQQ1GDQsMcwtBBiEKQQEhAiALQfMARwRAIAMhCAxzCyAOQcgARwRAIAMhCAxzCyADIQggCUHZAEcNckEJIQJBCSEMDG4LQQYhCkEBIQIgC0HBAEcEQCADIQgMcgsgDkHBAEcEQCADIQgMcgsgAyEIIAlBzQBHDXEMbAtBBiEKQQEhAiALQcwARwRAIAMhCAxxCyAOQeMARwRAIAMhCAxxCyADIQggCUHUAEcNcAxqC0EGIQpBASECIAMhCCAOQcgAaw4FCQpvbwtvC0EGIQpBASECIAtB1gBHBEAgAyEIDG8LIA5BxABHBEAgAyEIDG8LIAMhCCAJQcMARw1uQRghAkEYIQwMagtBBiEKQQEhDCALQcQARyAOQcsAR3IgCUHHAEdyDWZBBiECDGkLQQYhCkEBIQIgC0HmAEcEQCADIQgMbQsgDkHYAEcEQCADIQgMbQsgAyEIIAlByQBHDWxB/////wchAgxpC0EGIQpBASECIAMhCCAOQcMAayIERQ0IIARBEUYNCQxrC0EGIQpBASECIAtB9ABHBEAgAyEIDGsLIA5B1ABHBEAgAyEIDGsLIAlB2ABHBEAgAyEIDGsLIAMhCCABLQCSA0EBcQ1qQf////8HIQIMZwtBASEMIAtB1ABHIAlByQBHcg1iQQQhAgxlCyALQcIARg0KDGgLQQEhDCALQdMARyAJQc4AR3INYEGAAiECDGMLIAtB9ABHIAlB2ABHcg1mIAEtAJIDQQFxDWZB/////wchAgxjCyALQc0ARyAJQdIAR3INZUEgIQJBICEMDGELIAtB0ABHDWQgCUHDAEYNXwxkCyALQckARw1jIAlBzABGDV0MYwsgC0HQAEcgCUHDAEdyDWIgAS0AkwNBAXENYkH/////ByECDF8LIAtB9ABHIAlB2ABHcg1hIAEtAJIDQQFxDWFB/////wchAgxeCyAOQeQARyAJQcEAR3JFIAtB1ABGcQ0BQQEhAkEGIQogAyEIIA5B4wBrDgJUU2ALIA5BxABHIAlBwQBHckUgC0HUAEZxDQJBIiECIA5BxABrDgVUVmFhV2ELIAEtAI4DRQRAIABB5siFogU2AAUgAEEgOgAEIABBATYCAAxiCyAHQQNLBEBBACECQQUhCkEAIQgMXwsgAEEBNgIAIABBHzoABAxhC0EBIQwgCUHHAEYNWQxdCyABLQCNA0UEQCAAQcmIhaIFNgAFIABBIDoABCAAQQE2AgAMYAsgAUEBOgCMA0EHDFoLAkAgBARAQQEhBwJAIAEtAPQCQQFHDQAgASgC8AIiDC0AowdBB0YNACAEKAIMIg8oAgAiECAEKAIEIgpGDQAgCiAEKAIIIhIoAgAiCEkNCSAGQUBrIAxBAUEAIAQoAgAgCGogCiAIayAQIAhrQQAQSCAGLQBABEAgBi0AQSEIDFELIA8gDygCACAGKAJIaiIENgIAIBIgDC0AowdBB0YiBwR/IAQFQQEhCCAEIApHDVEgCkGAgAJrIgRBACAEIApNGyIEIBIoAgAiCCAEIAhLGws2AgALIAEgCzoAgwMgASAJOgCCAyABIA46AIEDIAEgDToAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCIAcNASAAQQU6AAggAEIANwIADGALIAEgCzoAgwMgASAJOgCCAyABIA46AIEDIAEgDToAgAMgAUEEIAVrNgKEAyABIAIpAgA3A/gCCyABQQA7AI0DIAEgAzYC2AIgAEEGOgAIIABCADcCAAxeCyABLQDsAkEBaw4CAgMBCyABQgA3A4ADIAFCAjcD+AIgACASNgAJIABBAzoACCAAIAU2AgQgAEEANgIADFwLIAYgEjYCJCASQRh2IQIgEkEQdiEDIBJBCHYhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCASQf8BcUHJAGsOMgB2dnZ2dnYBdnZ2dnZ2dnZ2dnZ2dnZ2dgcKCHYLAgZ2DHZ2dgl2dgV2dgMEdnZ2dnYNdgsgBEH/AXFBxABrDgUPDnV1DXULIARB/wFxQcwARyADQf8BcUHUAEdyIAJBxQBHcg10IAEoAghBAkYNMSABKALgAUGBgICAeEYNECAGQdCY0aoENgApQQkhByAGQQk6ACgMbQsgBEH/AXFB4wBrDgIREHMLIARB/wFxQcIAayIERQ0SIARBEEYNEwxyCyAEQf8BcUHFAGsiBEUNFiAEQQ1GDRUMcQsgAkHzAEcgBEH/AXFByABHciADQf8BcUHZAEdyDXAgASgCCEECRg05IAEtAIwDDTogAS0AnAJBAkYNGCAGQfCQ5ZoHNgApQQkhByAGQQk6ACgMaQsgAkHBAEcgBEH/AXFBwQBHciADQf8BcUHNAEdyDW8gASgCCCICQQJGDTogAS0AjAMNOyACQQFHDRggBkHngrWKBDYAKUEJIQcgBkEJOgAoDGgLIAJBzABHIARB/wFxQeMAR3IgA0H/AXFB1ABHcg1uIAEoAghBAkYNOyABLQCMAw08IAEoAjRFDRggBkHhxtHiBDYAKUEJIQcgBkEJOgAoDGcLIARB/wFxQcgAaw4FGBltbRptCyACQdYARyAEQf8BcUHEAEdyIANB/wFxQcMAR3INbCABKAIIQQJGDUAgASgCbEUNHSAGQe2IjbIFNgApQQkhByAGQQk6ACgMZQsgAkHEAEcgBEH/AXFBywBHciADQf8BcUHHAEdyDWsgASgCCEECRg1CIAEoAuwBQYGAgIB4Rg0dIAZB4padogQ2AClBCSEHIAZBCToAKAxkCyACQeYARyAEQf8BcUHYAEdyIANB/wFxQckAR3INaiABKAIIQQJGDUIgASgChAJBgYCAgHhGDR0gBkHlsKWyBjYAKUEJIQcgBkEJOgAoDGMLIARB/wFxQcMAayIERQ0dIARBEUYNTQxpCyACQfQARyAEQf8BcUHUAEdyDWggA0H/AXFB2ABGDR0MaAsgA0H/AXFBxABHIAJB0gBHcg1nIAEoAghBAkYNAiAGQcmQkZIFNgApQQkhByAGQQk6ACgMYAsgA0H/AXFBzgBHIAJBxABHcg1mDGQLIANB/wFxQcEARyACQdQAR3INZQxjCwJAAkAgASgC6AIiAkEDTQRAQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADE0LIAJBB00EQEHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxNCyABKALkAiIDKAAAIg5FDQAgAygABCIIDQELQREhByAGQRE6ACgMXgsCfyACQQhHBEAgAkEJayEKIAMtAAghAiADQQlqDAELQQAhAkHglccAMQAAQgRSDRtBACEKIANBCGoLIQQCQCACIAJBAWsiA3NB/wFxIANB/wFxSwRAIAJoIgNBBUkNAQsgBiACOgApQRIhByAGQRI6ACgMXgtCgYSQwIACIANBA3StQvgBg4inIQICQCAKRQRAQQAhB0EAIQtB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMTAsCQCAGAn8CQAJAAkACQCAELQAAIgsOBwMKAAMBCgIKCyADQR9xQQNPDQRBAgwDCyADQR9xQQNPDQNBBAwCCyADQR9xQQNPDQJBBgwBCyADQQRHIAtBA0dyDQFBAws6ACogBiACOgApQQ8hByAGQQ86ACgMXwsgCkEBRgRAQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxMCyAELQABIgMNICAKQQJrIgNFBEBBACEHQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEwLIAQtAAIiCg0hIANBAUYEQEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMTAtBACEHAkACQCAELQADIgoOAgIBAAsgBiAKOgApQRohByAGQRo6ACgMXwtBASEHCwJAIAFBCGoiDCgCAEECRg0AAkAgDCgCwAEiA0EASgRAIAwoAsQBIgRBBGsoAgAiCUF4cSINQQRBCCAJQQNxIgkbIANqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAswBIgNBAEoEQCAMKALQASIEQQRrKAIAIglBeHEiDUEEQQggCUEDcSIJGyADakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKALYASIDQQBKBEAgDCgC3AEiBEEEaygCACIJQXhxIg1BBEEIIAlBA3EiCRsgA2pJDXsgCUEAIA0gA0EnaksbDQEgBBCiAgsgDCgC5AEiA0EASgRAIAwoAugBIgRBBGsoAgAiCUF4cSINQQRBCCAJQQNxIgkbIANqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAvABIgNBAEoEQCAMKAL0ASIEQQRrKAIAIglBeHEiDUEEQQggCUEDcSIJGyADakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKAL8ASIDQQBKBEAgDCgCgAIiBEEEaygCACIJQXhxIg1BBEEIIAlBA3EiCRsgA2pJDXsgCUEAIA0gA0EnaksbDQEgBBCiAgsgDCgCoAEhBCAMKAKkASIJBEAgBCEDA0AgAygCACINBEAgA0EEaigCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQQxqKAIAIg0EQCADQRBqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBGGohAyAJQQFrIgkNAAsLIAwoApwBIgMEQCAEQQRrKAIAIglBeHEiDSADQRhsIgNBBEEIIAlBA3EiCRtqSQ17IAlBACANIANBJ2pLGw0BIAQQogILIAwoAqwBIQQgDCgCsAEiCQRAIARBFGohAwNAIANBBGsoAgAiDQRAIAMoAgAiD0EEaygCACIQQXhxIhFBBEEIIBBBA3EiEBsgDWpJDX0gEEEAIBEgDUEnaksbDQMgDxCiAgsgA0EQaygCACINBEAgA0EMaygCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQRxqIQMgCUEBayIJDQALCyAMKAKoASIDBEAgBEEEaygCACIJQXhxIg0gA0EcbCIDQQRBCCAJQQNxIgkbakkNeyAJQQAgDSADQSdqSxsNASAEEKICCyAMKAK4ASEEIAwoArwBIgkEQCAEIQMDQCADQRBqKAIAIg0EQCADQRRqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBHGooAgAiDQRAIANBIGooAgAiD0EEaygCACIQQXhxIhFBBEEIIBBBA3EiEBsgDWpJDX0gEEEAIBEgDUEnaksbDQMgDxCiAgsgA0EoaigCACINBEAgA0EsaigCACIPQQRrKAIAIhBBeHEiEUEEQQggEEEDcSIQGyANakkNfSAQQQAgESANQSdqSxsNAyAPEKICCyADQQRqKAIAIg0EQCADQQhqKAIAIg9BBGsoAgAiEEF4cSIRQQRBCCAQQQNxIhAbIA1qSQ19IBBBACARIA1BJ2pLGw0DIA8QogILIANBOGohAyAJQQFrIgkNAAsLIAwoArQBIgNFDQEgBEEEaygCACIMQXhxIgkgA0E4bCIDQQRBCCAMQQNxIgwbakkNeiAMQQAgCSADQSdqSxsNACAEEKICDAELDHoLIAEgAjoAxwIgASALOgDGAiABQQQ6AMUCIAEgBzoAxAIgASAIQRh4Qf+B/AdxIAhB/4H8B3FBCHhyNgLAAiABIA5BGHhB/4H8B3EgDkH/gfwHcUEIeHI2ArwCIAFBAjoAuQIgAUECOgCcAiABQQI2ApACIAFBgYCAgHg2AoQCIAFBgYCAgHg2AvgBIAFBgYCAgHg2AuwBIAFBgYCAgHg2AuABIAFBgYCAgHg2AtQBIAFCgICAgJCAgICAfzcCxAEgAUKAgICAwAA3ArwBIAFCBDcCtAEgAUIANwKsASABQoCAgIDAADcCpAEgAUEANgKYASABQQA2AmwgAUEANgJIIAFBADYCQCABQQA2AjQgAUEANgIQIAFBADYCCAxiCwJAIAEoAugCIgJFBEBBASEHDAELIAEoAuQCIQMgAhBuIgdFDXcgAkUNACAHIAMgAvwKAAALIAEgAjYC6AEgASAHNgLkASABIAI2AuABDFsLIAJB1ABHIANB/wFxQcEAR3INYgxgCyACQcwARyADQf8BcUHUAEdyDWEgASgC5AIhBAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgC6AIiA0EDTQRAQQAhAkHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAxTCyAEKAAAIghB/4H8B3FBCHggCEEYeEH/gfwHcXIhAiADQQRrIQMgBEEEaiEHIAEoAgBFDQIgAyEKDAELIAMgBGohB0EAIQpBACEDIAEoAgBBAUcNAgsgAiABKAIEQQFqIghHDQMgCiEDDAELIAgNAUEAIQILIAEgAjYCBCABQQE2AgAjAEEQayIIJAAgAUHwAmoiBEEAOgAEAkACQEGAgAEQbiIKBEAgCkEEay0AAEEDcQRAIApBAEGAgAH8CwALQYAQEG4iDEUNASAMQQRrLQAAQQNxBEAgDEEAQYAQ/AsACyAIQQA7AQwgCEEANgIIIAQoAgAiBCgC+AYiCUEEaygCACILQXhxQYSAAUGIgAEgC0EDcSIOG0kNfyAOQQAgC0GogAFPGw2AASAJEKICIAQoAuAGIgsEQCAEKALkBiIJQQRrKAIAIg5BeHEiDSALQQF0IgtBBEEIIA5BA3EiDhtqSQ2AASAOQQAgDSALQSdqSxsNgQEgCRCiAgsgBCgC/AYiCUEEaygCACILQXhxQYQQQYgQIAtBA3EiDhtJDX8gDkEAIAtBqBBPGw2AASAJEKICIAQoAuwGIgsEQCAEKALwBiIJQQRrKAIAIg5BeHEiDSALQQF0IgtBBEEIIA5BA3EiDhtqSQ2AASAOQQAgDSALQSdqSxsNgQEgCRCiAgsgBEEAQdgG/AsAIARBADYClAcgBEEANgKIByAEQQA6AIQHIARBADYCgAcgBCAMNgL8BiAEIAo2AvgGIARCAjcD8AYgBEIANwPoBiAEQoCAgIAgNwPgBiAEQQE2AtwGIARBMTYC2AYgBEEAOgCmByAEIAgpAwA3A5gHIAQgCCkBBjcBngcgCEEQaiQADAILQYCAARCxCgALQYAQELEKAAsgASABLQCMAyIQOgCOAyADQQNLDQNBACEIQeCVxwAxAABCBFINAkEAIQpBACELDAQLQQAhCAsgBiAINgIwIAYgAjYCLEEKIQcgBkEKOgAoDF8LIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSwsgBygAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQogA0F8cSIEQQRHDQJBACELQeCVxwAxAABCBFINAUEAIQgLQQAhDAxWCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIAcoAAQiCEH/gfwHcUEIeCAIQRh4Qf+B/AdxciEIIARBCEYEQEEAIQxB4JXHACkDACIXQv8Bg0IEUQRAQQAhCwxWCyAGQSQ6ACggBiAXNwIsIBdCIIinDEgLIAcoAAgiDEH/gfwHcUEIeCAMQRh4Qf+B/AdxciELIARBDEYEQEHglccAMQAAQgRRBEBBACEMDFYLIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAsgBygADCIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQwgA0F+cSIEQRBGBEBBAEHglccAMQAAQgRRDVYaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAsgBy8AECIJQQh0IAlBCHZyIQ8gBEESRgRAQQAhA0HglccAMQAAQgRRBEBBACEEQQAhDgxYCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIAcvABIiBEEIdCAEQQh2ciEEIANBFEYEQEEAIQ5BACEDQeCVxwAxAABCBFENVyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADEgLIActABQiDkEDTwRAIAYgDjoAKUEUIQcgBkEUOgAoDFsLIANBFUYEQEEAIQNB4JXHADEAAEIEUQ1XIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMSAtBACEDAkACQCAHLQAVIgcOAlgBAAsgBiAHOgApQRUhByAGQRU6ACgMWwtBASEDDFYLIAYgCzoAKUETIQcMVgsgAkHUAEcgA0H/AXFByQBHcg1fIAEoAghBAkYNHSABKALgAUGBgICAeEYNASAGQfOEpaIFNgApDFELIAJBwgBHIANB/wFxQccAR3INXiABKAIIQQJGDR8gAS0AjAMNICABLQDFAkEERg0BIAZB86SdkgQ2AClBCSEHIAZBCToAKAxXCwJAIAEtAIwDRQRAIAEoAsgBQYGAgIB4Rg0BIAZB84SlogU2AClBCSEHIAZBCToAKAxYCyAGQfOEpaIFNgApDE8LIAEtAMYCIQIgAS0AxwIhBAJAIAEoAugCIghFBEBBASEDDAELIAEoAuQCIQcgCBBuIgNFDR0gCEUNACADIAcgCPwKAAALIAYCfwJAIAggAkECdCgC+JhIIgdGBEBBCCAEIAJBA0YbIQRBACECDAELIAYgCDYCMCAGIAc2AiwgBiACOgApQQwMAQsDQCACIANqLQAAIgpBAWtB/wFxIARB/wFxSQRAIAJBAWoiAiAIRw0BDCALCyAGIAQ6ACogBiAKOgApQQ0LIgc6ACggCEUEQEEAIQgMSwsgAyAIQQEQwQcMSgsCQCABKALoAkUEQEEAIQJB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMRAsgASgC5AItAAAiAkEESQ0AIAYgAjoAKUEXIQcgBkEXOgAoDFYLIAEgAjoAxQIMVAsgAkHTAEcgA0H/AXFBzgBHcg1bIAEoAghBAkYNHiABKALUAUGBgICAeEYNASAGQdCY0aoENgApQQkhByAGQQk6ACgMVAsgAkH0AEcgA0H/AXFB2ABHcg1aIAEoAogDIgIgASgC6AIiBE8NAQxKCyABLQDHAiEDIAEtAMYCIQQCQCABKALoAiIIRQRAQQEhAgwBCyABKALkAiEKIAgQbiICRQ0eIAhFDQAgAiAKIAj8CgAACwJAAkACQAJAIAQOBAEAAgMACyAGIAQ6AClBECEHIAZBEDoAKCAIRQ1VIAIgCEEBEMEHDEkLIAhBAk8EQCAIIQcgA0EQSQ0hDEoLIAYgCDYCMCAGQQI2AiwMRgsgCEEGSQ0gIANBEE8EQCABIAg2AtwBDEoLIAIgAi0AAToAACACIAItAAM6AAEgAiACLQAFOgACIAFBAzYC3AEMSQsgASgC4AFBgYCAgHhGDSAgAS0AjANFBEAgASAINgLcAQxJCyAGQfSkuZoFNgApQQgMRQsgASACIARrNgKIA0GeBCEKAkACQCAERQ0AIAEoAuQCIQNBACECA0AgAiADaiIILQAABEAgBCACQQFqIgJHDQEMAgsLQZ4CIQogAkHQAGtBsH9LDQELIAYgCjYCKEEeIQIMUwsgASgCCEECRg0gIAJBf3MgBGohDiAIQQFqIQkgBCACQQFqIg1rIQ9BACEMIAZBADYCgAEgBkKAgICAEDcCeCAGQfgAakEAIAIQ4gYgBigCgAEhCANAQQFBAiADIAxqLAAAIgpBAE4iEBsiCyAGKAJ4IAhrSwR/IAZB+ABqIAggCxDiBiAGKAKAAQUgCAsgBigCfCIHaiIRIBBFBEAgESAKQb8BcToAASAKQcABcUEGdkFAciEKCyAKOgAAIAYgCCALaiIINgKAASACIAxBAWoiDEcNAAtBACEDIAZBADYCSCAGQoCAgIAQNwNAIAQgDUcEQCAGQUBrQQAgDxDiBiAGKAJIIQMDQEEBQQIgCSwAACICQQBOIgobIgggBigCQCADa0sEfyAGQUBrIAMgCBDiBiAGKAJIBSADCyAGKAJEaiIEIAoEfyACBSAEIAJBvwFxOgABIAJBwAFxQQZ2QUByCzoAACAGIAMgCGoiAzYCSCAJQQFqIQkgDkEBayIODQALCyAGIAYoAX42AjggBiAGLwGCATsBPCAGKAJ4IgRBgICAgHhGBEAgBiAHOgApDEMLIAdBCHYhCCAGKQNAIRcgBiAGLwE8OwGkASAGIAYoAjg2AqABIAEoAqwBIgIgASgCpAFGBEAgAUGkAWoQngcLIAEgAkEBajYCrAEgASgCqAEgAkEYbGoiAiAIOgAFIAIgBzoABCACIAQ2AgAgAiAGKAKgATYBBiACIAYvAaQBOwEKIAIgAzYCFCACIBc3AgwMQQsCQCABKALoAiICQQNNBEBBACEHQQAhA0EAIQJB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMPwsgASgC5AIiCCgAACIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQMgAkEHTQRAQQAhAkEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMPwsgCCgABCIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQcgAkEIRgRAQQAhAkHglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw/C0EAIQICQAJAIAgtAAgiCA4CAgEACyAGIAg6AClBFiEHIAZBFjoAKAxSC0EBIQILIAEgAjoAnAIgASAHNgKYAiABIAM2ApQCDE8LAkACQCABKALoAkEDTQRAQeCVxwAxAABCBFENASAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADD8LIAEoAuQCKAAAIgINAQtBIyEHIAZBIzoAKAxQCyABQQE2AgggASACQRh4Qf+B/AdxIAJB/4H8B3FBCHhyNgIMDE4LIAEoAugCIgJBA00EQEHglccAMQAAQgRRDU4gBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw8CyABKALkAiIEKAAAIQMgAkEITwRAIAQoAAQiAkH/gfwHcUEIeCACQRh4Qf+B/AdxciECDD4LQQAhAkHglccAMQAAQgRRDT0gBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw7CyACQc0ARyADQf8BcUHSAEdyDVQgASgCCEECRg0jIAEtAIwDDSQgASgCEEUNAiAGQeOQyeoENgApQQkhByAGQQk6ACgMTQsgAkHQAEcgA0H/AXFBwwBHcg1TIAEoAghBAkYNJCABLQCQAkECRg0CIAZB45KNggU2AClBCSEHIAZBCToAKAxMCyACQckARyADQf8BcUHMAEdyDVIgASgCCEECRg0lIAEoApgBRQ0CIAZB45ixygQ2AClBCSEHIAZBCToAKAxLCyABKALoAiIDQQNNBEBBACECQQAhB0EAIQNBACEIQQAhCkEAIQxBACELQQAhCUHglccAMQAAQgRRDTkgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw4CyABKALkAiICKAAAIgRB/4H8B3FBCHggBEEYeEH/gfwHcXIhCSADQXxxIgRBBEYEQEEAIQJBACEHQQAhA0EAIQhBACEKQQAhDEEAIQtB4JXHADEAAEIEUQ05IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAigABCIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQsgBEEIRgRAQQAhAkEAIQdBACEDQQAhCEEAIQpBACEMQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoAAgiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEMIARBDEYEQEEAIQJBACEHQQAhA0EAIQhBACEKQeCVxwApAwAiF0L/AYNCBFENOSAGQSQ6ACggBiAXNwIsIBdCIIinDDgLIAIoAAwiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEKIARBEEYEQEEAIQJBACEHQQAhA0EAIQhB4JXHADEAAEIEUQ05IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAigAECIDQf+B/AdxQQh4IANBGHhB/4H8B3FyIQggBEEURgRAQQAhAkEAIQdBACEDQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoABQiA0H/gfwHcUEIeCADQRh4Qf+B/AdxciEDIARBGEYEQEEAIQJBACEHQeCVxwAxAABCBFENOSAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAIoABgiB0H/gfwHcUEIeCAHQRh4Qf+B/AdxciEHIARBHEcEQCACKAAcIgJB/4H8B3FBCHggAkEYeEH/gfwHcXIhAgw5C0EAIQJB4JXHADEAAEIEUQ04IAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNwsgASgC4AFBgYCAgHhHBEAgBkHjko2CBTYAKQxDCyABLQCMAw0iAkAgASgC6AIiAkUEQEEAIQNBACEIQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw4CyABKALkAiIELQAAIQMgAkEBRgRAQQAhCEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgBC0AASEIIAJBAkYEQEEAIQdB4JXHADEAAEIEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgBC0AAiEKAkAgAkEDRgRAQQAhB0HglccAMQAAQgRRDQEgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAw5CwJAAkACQCAELQADIgcOAgIBAAsgBkKBKjcCLCAGQSQ6AChBAAw6C0EBIQcLIApB/wFxDTcgAkEERg0BIAZCgSo3AiwgBkEkOgAoQQAMOAsgCkH/AXENNgsgASAHIANB/wFxQQh0ciAIQf8BcUEQdHI2ApACDEgLAkAgAQJ/IAEoAugCIgJBA00EQEEAIQdBAEHglccAMQAAQgRRDQEaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgASgC5AIiAygAACIEQf+B/AdxQQh4IARBGHhB/4H8B3FyIQcgAkEHTQRAQQBB4JXHADEAAEIEUQ0BGiAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDgLIAJBCEcNASADKAAEIgJB/4H8B3FBCHggAkEYeEH/gfwHcXILIgI2AqABIAEgBzYCnAEgAUEBNgKYAQxICyAGQoEqNwIsIAZBJDoAKEEADDULIAEoAuABQYGAgIB4RwRAIAZB7YiNsgU2ACkMQQsgAS0AjAMNIyABKALkAiECAkACQAJAIAEoAugCIgdBAU0EQEEAIQhBACEKQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8AACIDQQh0IANBCHZyIQggB0F+cSILQQJGBEBBACEKQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8AAiIDQQh0IANBCHZyIQogC0EERgRAQQAhDEEAIQNB4JXHACkDACIXQv8Bg0IEUQ0BIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMOAsgAi8ABCIDQQh0IANBCHZyIQwgB0EGayIDQQFLDQFB4JXHACkDACEXQQYhBwsgF0L/AYNCBFEEQCACIAdqIANqIQJBACEDQQAhC0EAIQ5BACEEQQAhCQwCCyAGQSQ6ACggBiAXNwIsIBdCIIinDDYLIAIvAAYiA0EIdCADQQh2ciEJIAtBCEYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEOQQAhBAwCCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDYLIAIvAAgiA0EIdCADQQh2ciEPIAtBCkYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEOQQAhBAwCCyAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDYLIAIvAAoiA0EIdCADQQh2ciEEIAtBDEYEQEEAIQNB4JXHADEAAEIEUQRAIAIgB2ohAkEAIQtBACEODAILIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNgsgAi8ADCIDQQh0IANBCHZyIQ4gC0EORwRAIAIvAA4iA0EIdCADQQh2ckH//wNxQQF0IQsgB0EQayEDIAJBEGohAgwBC0EAIQNB4JXHADEAAEIEUg0lIAIgB2ohAkEAIQsLAkAgAQJ/IANBA00EQEEAIQdBAEHglccAMQAAQgRRDQEaIAZB1JXHADYCMCAGQQI2AiwgBkEkOgAoQdSVxwAMNwsgAigAACIHQf+B/AdxQQh4IAdBGHhB/4H8B3FyIQcgA0F8cUEERgRAQQBB4JXHADEAAEIEUQ0BGiAGQdSVxwA2AjAgBkECNgIsIAZBJDoAKEHUlccADDcLIANBCEcNASACKAAEIgJB/4H8B3FBCHggAkEYeEH/gfwHcXILIgI2ApQBIAEgBzYCkAEgASAEQf//A3FBAXQ2AowBIAEgD0H//wNxQQF0NgKIASABIAj9ECAK/RoBIAz9GgIgCf0aA/2pAUEB/asB/QsDeCABIAs2AnQgASAOQf//A3FBAXQ2AnAgAUEBNgJsDEcLIAZCgSo3AiwgBkEkOgAoQQAMNAsCQAJAAkACQCABLQCMA0UEQEECIQcgAS0AxgJBAWsOBgEDAgQBAwQLIAZB4padogQ2ACkMQgsACyABKALgAUGBgICAeEcEQEEBIQcMAgsgBkKBKjcCLCAGQSQ6AChBAAw1C0EGIQcLIAEoAugCIgJFBEAgBkHilp2iBDYAKUEhIQcgBkEhOgAoDEcLIAEoAuQCIQggAhBuIgNFDWAgAgRAIAMgCCAC/AoAAAsgAiAHRgRAIAEgBzYC9AEgASADNgLwASABIAc2AuwBDEYLIAZB4padogQ2AClBISEHIAZBIToAKCADIAJBARDBBww6CwJAIAEoAugCIgJFBEBBASEHDAELIAEoAuQCIQMgAhBuIgdFDWAgAkUNACAHIAMgAvwKAAALIAEgAjYCjAIgASAHNgKIAiABIAI2AoQCDEQLIAJB0ABHIANB/wFxQcMAR3INSyABLQCMAw0kIAEtAI8DRQRAIAFBAToAjwMgASgCCEECRg0pQQAhAiABKALoAiEDIAEoAuQCIQhB4JXHACkDACIYQv8BgyIXQgRRDSogA0ECayEHIANBAWshDEF9IQoDQCACIANGDS4gAiAIaiIELQAARQRAIAJFDUYgBEEBaiEJIAJBf3MgA2ohAgwtCyACIAxGDS4gBEEBai0AAEUNKCACIAdGDS4gBEECai0AAEUNKSAKQQNrIQogAkEDaiICQdEARw0ACwxECyAGQemGjYIFNgApQQkhByAGQQk6ACgMRAsgASgCiAMiAiABKALoAiIDSQRAQSchByAGQSc6ACgMRAsgASACIANrNgKIA0GeBCEIAkACQCADRQ0AIAEoAuQCIQRBACECA0AgAiAEai0AAARAIAMgAkEBaiICRw0BDAILC0GeAiEIIAJB0ABrQbB/Sw0BCyAGIAg2AihBHiEHDDgLIAJBAWoiCCADRgRAIAZBngo7AShBHiEHDEQLAkAgASgCCEECRwRAIAQgCGoiCC0AAA0BIAhBAWohCyADIAJrQQJrIQNBACEKIAZBADYCSCAGQoCAgIAQNwJAIAZBQGtBACACEOIGIAYoAkghBwNAQQFBAiAEIApqLAAAIghBAE4iCRsiDCAGKAJAIAdrSwR/IAZBQGsgByAMEOIGIAYoAkgFIAcLIAYoAkRqIg4gCUUEQCAOIAhBvwFxOgABIAhBwAFxQQZ2QUByIQgLIAg6AAAgBiAHIAxqIgc2AkggAiAKQQFqIgpHDQALAkAgA0UEQEEBIQcMAQsgAxBuIgdFDScgA0UNACAHIAsgA/wKAAALIAYpAkQhFyAGKAJAIQQgASgCuAEiAiABKAKwAUYEQCABQbABahCjBwsgASACQQFqNgK4ASABKAK0ASACQRxsaiICIBc3AhQgAiAENgIQIAIgAzYCDCACIAc2AgggAiADNgIEIAJBADYCAAxEC0HMuMQAEJkKAAsgBkGeCjsBKEEeIQcMQwsgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAwvCyABQgA3A4ADIAFCAjcD+AIgAEEEOgAIIAAgBTYCBCAAQQA2AgAgACABKALYAjYACQxaCyABQgA3A4ADIAFCAjcD+AIgACASNgAJIABBAzoACCAAIAU2AgQgAEEANgIADFkLIAEgASgC3AJBBGs2AtwCIAEoAgBFBEAgAEEBNgIAIABBAjoABAxZCyABKAIEQQFqIgIgA0cEQCAAIAI2AgwgACADNgIIIABBCjoABCAAQQE2AgAMWQsgASADNgIEIAFBATYCACABLQCRA0UEQCABIAEpA8gCQgR8NwPIAiABIAsgCSAOIA0gASgC0AJBf3MiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnMiAnNB/wFxQQJ0KALEwUIgAkEIdnNBf3M2AtACCyABQebIhaIFNgD5AiABQQc6APgCIABBADoACCAAIAU2AgQgAEEANgIADFgLIAggCiAKQby1xAAQoAUACyAGIAM6AClBGCEHIAZBGDoAKAw9CyAGIAo6AClBGSEHIAZBGToAKAw8C0H8t8QAEJkKAAtBjLjEABCZCgALQQEgCBCaCQALIAEgCDYC0AEgASADNgLMASABIAg2AsgBDDcLQZy4xAAQmQoACyAGQfOknZIENgApDC4LQby4xAAQmQoAC0EBIAgQmgkACyACIAItAAE6AABBASEHDCgLIAYgCDYCMCAGQQY2AiwMJAsgBkH0pLmaBTYAKUEGDCQLQay4xAAQmQoAC0Hst8QAEJkKAAsgBkHwkOWaBzYAKQwmC0H8tsQAEJkKAAsgBkHngrWKBDYAKQwkC0GMtsQAEJkKAAsgBkHhxtHiBDYAKQwiC0GstsQAEJkKAAsgBkHjkMnqBDYAKQwgC0G8tsQAEJkKAAsgBkHjko2CBTYAKQweC0HMtsQAEJkKAAtB3LfEABCZCgALIAZB7YiNsgU2ACkMGwsgBkHUlccANgIwIAZBAjYCLCAGQSQ6AChB1JXHAAwPC0GctsQAEJkKAAtB3LbEABCZCgALIAZB6YaNggU2ACkMFwtBASADEJoJAAsgBEECaiEJIAMgCmpBAWohAgwDCyADIApqIQIgBEEDaiEJDAILQfy4xAAQmQoACyADQQJrIQcgA0EBayEMIAMgCGohCUF9IQoCQAJAAkADQCACIANGDQMgAiAIaiIELQAARQ0CIAIgDEYNAyAEQQFqLQAARQ0BIAIgB0YNAyAEQQJqLQAABEAgCkEDayEKIAJBA2oiAkHRAEcNAQweCwsgAyAKaiECIARBA2ohCQwDCyAEQQJqIQkgAyAKakEBaiECDAILIAJFDRogBEEBaiEJIAJBf3MgA2ohAgwBCyADDQEMGQsgAg0CC0EAIgIgF0IEUQ0CGgsgF0IDUg0WIBhCIIinIgIoAgAhAyACQQRqKAIAIgQoAgAiCARAIAMgCBEDAAsgBCgCBCIIBEAgAyAIIAQoAggQwQcLIAJBDEEEEMEHDBYLIAktAAANFSAJQQFqIQkgAkEBawshAiAGQUBrIAkgAiABKAKIAyIEEN4BIAYoAkQhAgJAAkAgBigCQEEBRgRAIAJBgICAgHhyQYCAgIB4Rg0XIAYoAkghAwwBCyAGKAJIIQMgBCAGKAJMIghPDQEgAkUNFgsgAyACQQEQwQcMFQsgASAEIAhrNgKIAyABKAL4ASIEQQBKBEAgASgC/AEgBEEBEMEHCyABIAg2AoACIAEgAzYC/AEgASACNgL4AQwUCyACQfQARyADQf8BcUHYAEdyDRsgASgCiAMiAiABKALoAiIKSQ0LIAEgAiAKazYCiANBngQhDAJAAkAgCkUNACABKALkAiEEQQAhAkEAIAprIQgDQCACIARqIgctAAAEQCAIIAJBAWoiAmoNAQwCCwtBngIhDCACQdAAa0Gwf0sNAQsgBiAMNgIoQR4hAgwWCyACQQFqIgMgCkYEQCAGQZ4OOwEoQR4hAgwWCyAKIANrIg9BAUYEQCAGQZ4KOwEoQR4hAgwWCwJAIAogAkEDakcEQCADIARqIhAtAAAhDCAQQQJqIQsgEC0AASEJIAIgCmshDkEAIQgDQCAHIAhqQQNqLQAARQ0CIAggDmogCEEBaiEIQXxHDQALCyAGQZ4EOwEoQR4hAgwWCwJAAkACQCAIQQJqIgcgD0sgCEF9S3JFBEACQCAPIAhBA2oiB08EQCAKIAMgB2pHBEAgAiAIaiEDIAcgEGohDiAKQQRrIQ1BACEKA0AgAyAEakEEai0AAEUNAyAKQQFqIQogDSADQQFqIgNHDQALCyAGQZ4EOwEoQR4hAgwbCyAHIA8gD0G8t8QAEKAFAAsgByAKaiIDIApJIAMgD0tyDQEgA0EBaiERIAMgD08NAiABKAIIQQJGDQMgBkFAayENIAQhByALIQMgECARaiEUIA8gEWshDyMAQSBrIgskAAJAIAJB0ABrQbB/TQRAIA1BAjYCACANQQE6AAQMAQsgC0EANgIUIAtCgICAgBA3AgwgC0EMakEAIAIQ4gYgCygCFCEEA0BBAUECIAcsAAAiEEEATiIVGyITIAsoAgwgBGtLBH8gC0EMaiAEIBMQ4gYgCygCFAUgBAsgCygCECIRaiIWIBUEfyAQBSAWIBBBvwFxOgABIBBBwAFxQQZ2QUByCzoAACALIAQgE2oiBDYCFCAHQQFqIQcgAkEBayICDQALIAsoAgwhEEEAIQICQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDEH/AXEOAgEABAsgCUH/AXENAUEBIQILAkAgCEEETwRAIAMoAABBgIGChHhxDQpBBCADQQNqQXxxIgcgA2sgAyAHRhsiDCAIQQRrIgdJBEADQCADIAxqKAIAQYCBgoR4cQ0MIAxBBGoiDCAHSQ0ACwsgAyAHaigAAEGAgYKEeHFFDQEMCgsgCEUNACADIAhBAWsiB2osAABBAEgNCSAHRQ0AIAMgCEECayIHaiwAAEEASA0JIAdFDQAgAyAIQQNrIgdqLAAAQQBIIAdyDQkLIAtBDGogAyAIEJcDIAsoAgxBAUcNASALIAspAhA3AxhBrLLEAEELIAtBGGpBnLLEAEG4ssQAEMIHAAsgDUECNgIAIA1BBToABAwICyALKAIUIgNBAEgNAQJAIANFBEBBASEMDAELIAsoAhAhByADEG4iDEUNAyADRQ0AIAwgByAD/AoAAAsgC0EMaiAOIAoQlwMCQAJAAkACQCALKAIMBEAgDUECNgIAIA1BADoABAwBCyALKAIUIgdBAEgNBQJAIAdFBEBBASEODAELIAsoAhAhCSAHEG4iDkUNCCAHRQ0AIA4gCSAH/AoAAAsCQCACRQRAIA9FDQMgDxBuIgkNAUEBIA8QmgkAC0EAIRMgDw0EQQEhCQwKCyAPBEAgCSAUIA/8CgAACyALQQxqIAkgDxCXAyALKAIMQQFHDQIgCSAPQQEQwQcgDUECNgIAIA1BADoABCAHRQ0AIA4gB0EBEMEHCyADRQ0KIAwgA0EBEMEHDAoLQQEhCQtBASETDAYLIA8QbiIJRQ0EIA9FDQUgCSAUIA/8CgAADAULIA1BAjYCACANQQY6AAQMBgsQmAoAC0EBIAMQmgkAC0EBIAcQmgkAC0EBIA8QmgkACyANIAI6ADQgDSAHNgIwIA0gDjYCLCANIAc2AiggDSADNgIkIA0gDDYCICANIAM2AhwgDSAENgIYIA0gETYCFCANIBA2AhAgDSAPNgIMIA0gCTYCCCANIA82AgQgDSATNgIADAILIA1BAjYCACANQQA6AAQLIBBFDQACQCARQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAQak8EQCACQQAgAyAQQSdqSxsNASAREKICDAILDDULDDULIAtBIGokACAGLQBEIQQgBigCQCIHQQJGBEAgBiAEOgApDAoLIAYgBikBRjcDoAEgBiAGKQFMNwGmASAGIAb9AAJU/QsDeCAGIAb9AAJk/QsDiAEgBiAGKAJ0NgKYASAGLQBFIQogASgCxAEiCCABKAK8AUYEQCMAQRBrIgIkACACQQRqIAFBvAFqIgMoAgAiDCADKAIEQQQgDEEBdCIMIAxBBE0bIgxBBEE4EM4GIAIoAgRBAUYEQCACKAIIIAIoAgwQmgkACyACKAIIIQsgAyAMNgIAIAMgCzYCBCACQRBqJAALIAEoAsABIAhBOGxqIgIgBv0AA4gB/QsCJCACIAo6AAUgAiAEOgAEIAIgBzYCACACIAYpA6ABNwEGIAIgBikBpgE3AQwgAiAG/QADeP0LAhQgAiAGKAKYATYCNCABIAhBAWo2AsQBDAgLQQIgByAPQcy3xAAQoAUACyAHIAMgD0Gst8QAEKAFAAsgESAPIA9BnLfEABCgBQALQYy3xAAQmQoACyAGQoEqNwIsIAZBJDoAKEEACyEIIAYgBigALDYAQyAGIAYoACk2AkAgBkEoakEBciEDQSQhByAGKAIkIQICfwJAAkACQCAGLQBDQQFrDgMAAQIZCyAGQcQAagwCCyAIQQhqDAELIAhBCGoLLQAAQSVHDRVBISEHIAYtAENBA0YEQCAIKAIAIQQgCEEEaigCACIKKAIAIgwEQCAEIAwRAwALIAooAgQiDARAIAQgDCAKKAIIEMEHCyAIQQxBBBDBBwsMFgsgASACNgIwIAEgBzYCLCABIAM2AiggASAINgIkIAEgCjYCICABIAw2AhwgASALNgIYIAEgCTYCFCABQQE2AhAMEAsgA0UNDyACIANBGHhB/4H8B3EgA0H/gfwHcUEIeHIiA3JBAEgNDyABIAI2AjwgASADNgI4IAFBATYCNAwPC0EoIQIgBkEoOgAoDBALQR4hAiAGQR46ACgMDwtBCwsiBzoAKCAIRQRAQQAhCAwBCyACIAhBARDBBwsgBiAGKAAsNgB7IAYgBigAKTYCeCAGQShqQQFyIQMMDQsgASAHNgLcAQsgASACNgLYASABIAg2AtQBDAgLQSchAiAGQSc6ACgMCQtBBSEHIAZBBToAKAwHC0EHIQcgBkEHOgAoDAYLQQALIQRBACEOQQAhAwsgASgCCEECRwRAQREhByAKRSAIRXINAUEbIQcgASgCwAIiCSAMSSAIIAkgDGtLcg0BIAEoArwCIg0gC0kgCiANIAtrS3INASAQQQFxIAsgDHIgCiANR3JFIAggCUZxcg0CIAZBGzoAKAwEC0HstsQAEJkKAAsgBiAHOgAoDAILIAEgAzoAuQIgASAOOgC4AiABIAQ7AbYCIAEgDzsBtAIgASAMNgKwAiABIAs2AqwCIAEgCDYCqAIgASAKNgKkAiABIAI2AqACCyAGQShqQQFyIQNBKCEHDAYLIAYgBigALDYAQyAGIAYoACk2AkAgBkEoakEBciEDDAILIAYgBigALDYAeyAGIAYoACk2AnhBKCEHIAZBKGpBAXIhAyACQShGDQQgBigCMCEIIAIhBwsgBiAGKAB7NgBDIAYgBigCeDYCQAsgBiAGLwFEOwE0IAYgBi0ARjoANiAGKAJAIQILIAJBGHYhCgwBCyAGQShqQQFyIQNBKCEHCyAGIAo6ACwgAyAGLwE0OwAEIAMgBi0ANjoABiAGIAI7ACkgBiACQRB2OgArIAYgCDYCMCAGIAc6ACgCfyAHQShHBEACQCAHQSNLDQAgBigCJCICQebG0eIERg0AQQMgAkEgcQ0CGgsgBiAGLwApOwEYIAYgBi0AKzoAGiAGIAYvADE7ARAgBiAGLQAzOgASIAYoAC0hAiAGLQAsIgMgBi0AKCIEQShGDQEaIAAgBi0AGjoAByAAIAYvARg7AAUgBiAGKAEQNgIIIAYgBigAEzYACyAAIAYoAAs2ABAgACAGKAIINgANIAAgAjYACSAAIAM6AAggACAEOgAEIABBATYCAAwUCyAGKAIkIQJBAgshAyAGIAYoABM2AAsgBiAGKAEQNgIIIAYgBigCCDYCHCAGIAYoAAs2AB8gEkHJirmiBEcEQCABQgA3A4ADIAFCAjcD+AILIAAgAjYACSAAIAM6AAggACAFNgIEIAAgBigCHDYADSAAIAYoAB82ABAgAEEANgIADBILIAYgBkEkaq1CgICAgPANhDcDQEHf58AAIAZBQGtB3LjEABCTCAALIAAgCDoABSAAQRw6AAQgAEEBNgIADBALIAtB1ABHDQwgCUHBAEYNAgwMCyALQcwARyAJQdQAR3INC0EaIQJBGiEMDAcLIAtB1ABHIAlBwQBHcg0MC0GMjMYAQShB7LjEABCoCQALIAtBxABHIAlBzgBHcg0KQQAhAgwFCyALQdIARyAJQcQAR3INCUENIQJBDSEMDAMLQQEhAiADIQgMBgtBCCECQQghDAwBC0EEIQJBBCEMCyAHIAxJDQILIAIgB0kNAUEGCyEKQQAhAiADIQgMAQtBBiEKQQIhAiADIQgCQAJAAkACQAJAIA1ByQBrDh4ABQUFBQUFAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQIFCyAOQcUAaw4EAwQEAgQLIAtBxQBHIA5BzABHciAJQdQAR3INAwwECyALQcwARyAOQeMAR3INAiAJQdQARg0DDAILIAtB0gBHDQEgCUHEAEYNAgwBCyALQcQARw0AIAlBzgBGDQELIAFBADsA/QIgAUIANwOAAyABIAg2APkCIAEgCjoA+AIgASACOgDsAiAAIAM2AhAgACAHNgIMIABBAToACCAAIAU2AgQgAEEANgIAIAFB/wJqQQA6AAAMAgtBISECCyAAIAM2AAUgACACOgAEIABBATYCAAsgBkGwAWokAA8LQQEgAhCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC/llAhl/BX0jAEEQayIbJAACQAJAAkACQCABQSFJBEAgACETIAEhCgwBCyACQQRrIR4gAkEQayEfAkACQANAIARFBEAgACABIAIgA0EBIAYQgwEMBQsgACABQQN2IhNBHGxqIQwgACATQQR0aiERIARBAWshBCAbAn8gAUHAAE8EQCAAIBEgDCATIAYQswYMAQsgACAGKAIAQQRqIhMoAgAgACgCACIKIBEoAgAiCBDdAiILIBMoAgAgCiAMKAIAIgoQ3QJHDQAaIAwgESATKAIAIAggChDdAiALcxsLIg8oAgAiDDYCDCAPIABrQQJ2IRMCQCAFBEAgBigCAEEEaigCACAFKAIAIAwQ3QJFDQELIAEgA0sNAyAGKAIAIRogAiABQQJ0IhdqIQtBACEKIAAhESATIQwDQCAAIAxBA2siCEEAIAggDE0bQQJ0aiIcIBFLBEAgGkEEaigCACIIKAIIIRAgDygCACEWA0BDAACAPyEhAn8CQCAQIBEoAgAiDksEQCAIKAIEIhQgDkEYbGoiDS0AEyIHIA0tABIiCSANLQARIhUgCSAVSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyANQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQ0gB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgDUUNAxogByANQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgDUENdHJBgICAwANqIAlyDAILDAsLIA0gDWdBEGsiDUH//wNxQQhqdEH///8DcSAJQYCAgNgDciANQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAQIBZLBEAgFCAWQRhsaiINLQATIgcgDS0AEiIJIA0tABEiFSAJIBVLGyIJIAcgCUsbIgcEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIiQwAAEEEgCCoCSCAJGyAik0MAAH5DlSAHQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIA1BDGoiFS8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCyAWIBBByMvGABDwBwALIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgCkECdCACIAtBBGsgIyAhlCIhICFbICEgIiAglGBFcSIYG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEEaigCACIOSwRAIBQgDkEYbGoiBy0AEyIJIActABIiEiAHLQARIhkgEiAZSxsiEiAJIBJLGyIJBH1DAABAwSAIKgJEIAgtAFhBAkYiEhsiIEMAABBBIAgqAkggEhsgIJNDAAB+Q5UgCUEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAHQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNAxogCSAHQQ10ckGAgID+B3IMAwsgEkEQdCESIAlFDQEgCUENdEGAgID8AHEgB0ENdHJBgICAwANqIBJyDAILDAsLIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIHIA0tABIiCSANLQARIhIgCSASSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNARogCSAHQQ10ckGAgID+B3IMAQsgEkEQdCISIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADanIgCQ0AGiAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAogGGoiEkECdCACIAtBCGsgIyAhlCIhICFbICEgIiAglGBFcSIYG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEIaigCACIOSwRAIBQgDkEYbGoiCi0AEyIHIAotABIiCSAKLQARIhkgCSAZSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIEMAABBBIAgqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQogB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCkUNAxogByAKQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgCkENdHJBgICAwANqIAlyDAILDAsLIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAJQYCAgNgDciAKQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIKIA0tABIiByANLQARIgkgByAJSxsiByAHIApJGyIKBH1DAABAwSAIKgJEIAgtAFhBAkYiBxsiIEMAABBBIAgqAkggBxsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQogB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgCkUNARogByAKQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIApBDXRyQYCAgMADanIgBw0AGiAKIApnQRBrIgpB//8DcUEIanRB////A3EgCUGAgIDYA3IgCkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIBIgGGoiCUECdCACIAtBDGsgIyAhlCIhICFbICEgIiAglGBFcSISG2ogDjYCAEMAAIA/ISECfwJAIBAgEUEMaigCACIOSwRAIBQgDkEYbGoiCi0AEyIHIAotABIiFCAKLQARIhggFCAYSxsiFCAHIBRLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiFBsiIEMAABBBIAgqAkggFBsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQogB0GAgAJxIRQgB0GA+AFxIgdBgPgBRgRAIBRBEHQiB0GAgID8B3IgCkUNAxogByAKQQ10ckGAgID+B3IMAwsgFEEQdCEUIAdFDQEgB0ENdEGAgID8AHEgCkENdHJBgICAwANqIBRyDAILDAsLIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAUQYCAgNgDciAKQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQsgDS0AEyIKIA0tABIiByANLQARIg0gByANSxsiDSAKIA1LGyIKBH1DAABAwSAIKgJEIAgtAFhBAkYiDRsiIEMAABBBIAgqAkggDRsgIJNDAAB+Q5UgCkEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISACfyAVLwEAIg1B//8BcUUEQCANQRB0DAELIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNARogDSAKQQ10ckGAgID+B3IMAQsgB0EQdCIHIA1BDXRBgICA/ABxIApBDXRyQYCAgMADanIgDQ0AGiAKIApnQRBrIgpB//8DcUEIanRB////A3EgB0GAgIDYA3IgCkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAkgEmoiCkECdCACIAtBEGsiCyAjICGUIiEgIVsgISAiICCUYEVxIg0baiAONgIAIAogDWohCiARQRBqIhEgHEkNAAsLIAAgDEECdGoiFiARSwRAIBpBBGooAgAiCCgCCCENIA8oAgAhBwNAQwAAgD8hIQJ/AkAgDSARKAIAIhRLBEAgCCgCBCIVIBRBGGxqIg4tABMiECAOLQASIgkgDi0AESISIAkgEksbIgkgCSAQSRsiEAR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIBBBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDkEMai8BACIQQf//AXFFBEAgEEEQdAwDCyAQQf8HcSEOIBBBgIACcSEJIBBBgPgBcSIQQYD4AUYEQCAJQRB0IhBBgICA/AdyIA5FDQMaIBAgDkENdHJBgICA/gdyDAMLIAlBEHQhCSAQRQ0BIBBBDXRBgICA/ABxIA5BDXRyQYCAgMADaiAJcgwCCyAUIA1ByMvGABDwBwALIA4gDmdBEGsiDkH//wNxQQhqdEH///8DcSAJQYCAgNgDciAOQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAHIA1JBEAgFSAHQRhsaiIOLQATIhAgDi0AEiIJIA4tABEiFSAJIBVLGyIJIAkgEEkbIhAEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIiQwAAEEEgCCoCSCAJGyAik0MAAH5DlSAQQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIA5BDGovAQAiEEH//wFxRQRAIBBBEHQMAwsgEEH/B3EhDiAQQYCAAnEhCSAQQYD4AXEiEEGA+AFGBEAgCUEQdCIQQYCAgPwHciAORQ0DGiAQIA5BDXRyQYCAgP4HcgwDCyAJQRB0IQkgEEUNASAQQQ10QYCAgPwAcSAOQQ10ckGAgIDAA2ogCXIMAgsgByANQcjLxgAQ8AcACyAOIA5nQRBrIg5B//8DcUEIanRB////A3EgCUGAgIDYA3IgDkEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIApBAnQgAiALQQRrIgsgIyAhlCIhICFbICEgIiAglGBFcSIOG2ogFDYCACAKIA5qIQogEUEEaiIRIBZJDQALCyABIAxHBEAgC0EEayILIApBAnRqIBEoAgA2AgAgEUEEaiERIAEhDAwBCwsgCkECdCIMBEAgACACIAz8CgAACyABIAprIQsCQCABIApGDQBBACENIAtBBE8EQCAAIAxqIQ4gFyAfaiEIIAtBfHEiDSERA0AgDiAI/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgCEEQayEIIA5BEGohDiARQQRrIhENAAsgCyANRg0BCyAeIBcgDUECdCIRa2ohDiAAIBFqIAxqIQggDSABayAKaiERA0AgCCAOKAIANgIAIA5BBGshDiAIQQRqIQggEUEBaiIRDQALCyAKRQ0AIAEgCkkNAiAAIAxqIAsgAiADIAQgG0EMaiAGED0gCiIBQSFPDQEgACETDAQLIAEgA0sNAiACIAFBAnQiFWohCyAGKAIAIRpBACEFIAAhEQNAIAAgE0EDayIMQQAgDCATTRtBAnRqIhwgEUsEQCAaQQRqKAIAIg4oAgghFCAPKAIAIQ0gBigCAEEEaiEYA0BDAACAPyEhAn8CQCANIBRJBEAgESgCACEKIA4oAgQiByANQRhsIglqIgwtABMiCCAMLQASIhAgDC0AESIWIBAgFksbIhAgCCAQSxsiCAR9QwAAQMEgDioCRCAOLQBYQQJGIhAbIiBDAAAQQSAOKgJIIBAbICCTQwAAfkOVIAhBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDEEMai8BACIIQf//AXFFBEAgCEEQdAwDCyAIQf8HcSEMIAhBgIACcSEQIAhBgPgBcSIIQYD4AUYEQCAQQRB0IghBgICA/AdyIAxFDQMaIAggDEENdHJBgICA/gdyDAMLIBBBEHQhECAIRQ0BIAhBDXRBgICA/ABxIAxBDXRyQYCAgMADaiAQcgwCCyANIBRByMvGABDwBwALIAwgDGdBEGsiDEH//wNxQQhqdEH///8DcSAQQYCAgNgDciAMQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBRJBEAgByAKQRhsaiIMLQATIgggDC0AEiIQIAwtABEiByAHIBBJGyIQIAggEEsbIggEfUMAAEDBIA4qAkQgDi0AWEECRiIQGyIiQwAAEEEgDioCSCAQGyAik0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAxBDGovAQAiCEH//wFxRQRAIAhBEHQMAwsgCEH/B3EhDCAIQYCAAnEhECAIQYD4AXEiCEGA+AFGBEAgEEEQdCIIQYCAgPwHciAMRQ0DGiAIIAxBDXRyQYCAgP4HcgwDCyAQQRB0IRAgCEUNASAIQQ10QYCAgPwAcSAMQQ10ckGAgIDAA2ogEHIMAgsgCiAUQcjLxgAQ8AcACyAMIAxnQRBrIgxB//8DcUEIanRB////A3EgEEGAgIDYA3IgDEEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAVBAnQgAiALQQRrICMgIZQiISAhXCAhICIgIJRgciIZG2ogCjYCAEMAAIA/ISECfwJAIBgoAgAiDCgCCCIQIA1LBEAgEUEEaigCACEKIAwoAgQiFiAJaiIILQATIgcgCC0AEiIJIAgtABEiFyAJIBdLGyIJIAcgCUsbIgcEfUMAAEDBIAwqAkQgDC0AWEECRiIJGyIgQwAAEEEgDCoCSCAJGyAgk0MAAH5DlSAHQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIAhBDGoiFy8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCyANIBBByMvGABDwBwALIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBBJBEAgFiAKQRhsaiIHLQATIgkgBy0AEiISIActABEiHSASIB1LGyISIAkgEksbIgkEfUMAAEDBIAwqAkQgDC0AWEECRiISGyIiQwAAEEEgDCoCSCASGyAik0MAAH5DlSAJQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAdBDGovAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsMCwsgByAHZ0EQayIHQf//A3FBCGp0Qf///wNxIBJBgICA2ANyIAdBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFIBlqIhJBAnQgAiALQQhrICMgIZQiISAhXCAhICIgIJRgciIZG2ogCjYCACARQQhqKAIAIQogCC0AEyIFIAgtABIiByAILQARIgkgByAJSxsiByAFIAdLGyIFBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIUMAABBBIAwqAkggBxsgIZNDAAB+Q5UgBUEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAshI0MAAIA/ISECfyAXLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQUgB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgBUUNARogByAFQQ10ckGAgID+B3IMAQsgCUEQdCIJIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgBw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAQSQRAIBYgCkEYbGoiBS0AEyIHIAUtABIiCSAFLQARIh0gCSAdSxsiCSAHIAlLGyIHBH1DAABAwSAMKgJEIAwtAFhBAkYiCRsiIkMAABBBIAwqAkggCRsgIpNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAFQQxqLwEAIgdB//8BcUUEQCAHQRB0DAMLIAdB/wdxIQUgB0GAgAJxIQkgB0GA+AFxIgdBgPgBRgRAIAlBEHQiB0GAgID8B3IgBUUNAxogByAFQQ10ckGAgID+B3IMAwsgCUEQdCEJIAdFDQEgB0ENdEGAgID8AHEgBUENdHJBgICAwANqIAlyDAILDAsLIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAJQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgEiAZaiIJQQJ0IAIgC0EMayAjICGUIiEgIVwgISAiICCUYHIiEhtqIAo2AgAgEUEMaigCACEKIAgtABMiBSAILQASIgcgCC0AESIIIAcgCEsbIgggBSAISxsiBQR9QwAAQMEgDCoCRCAMLQBYQQJGIggbIiFDAAAQQSAMKgJIIAgbICGTQwAAfkOVIAVBAWtB/wFxs5SSEIgEIiEgIZIFQwAAAAALISNDAACAPyEhAn8gFy8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSEHIAhBgPgBcSIIQYD4AUYEQCAHQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAdBEHQiByAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAogEEkEQCAWIApBGGxqIgUtABMiCCAFLQASIhAgBS0AESIHIAcgEEkbIhAgCCAQSxsiCAR9QwAAQMEgDCoCRCAMLQBYQQJGIhAbIiJDAAAQQSAMKgJIIBAbICKTQwAAfkOVIAhBAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgBUEMai8BACIMQf//AXFFBEAgDEEQdAwDCyAMQf8HcSEFIAxBgIACcSEIIAxBgPgBcSIMQYD4AUYEQCAIQRB0IgxBgICA/AdyIAVFDQMaIAwgBUENdHJBgICA/gdyDAMLIAhBEHQhCCAMRQ0BIAxBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAIcgwCCwwLCyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCEGAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIAkgEmoiBUECdCACIAtBEGsiCyAjICGUIiEgIVwgISAiICCUYHIiDBtqIAo2AgAgBSAMaiEFIBFBEGoiESAcSQ0ACwsgACATQQJ0aiIUIBFLBEAgGkEEaigCACIMKAIIIQggDygCACEQA0BDAACAPyEhAn8CQCAIIBBLBEAgESgCACEOIAwoAgQiCSAQQRhsaiIKLQATIg0gCi0AEiIHIAotABEiFiAHIBZLGyIHIAcgDUkbIg0EfUMAAEDBIAwqAkQgDC0AWEECRiIHGyIgQwAAEEEgDCoCSCAHGyAgk0MAAH5DlSANQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIApBDGovAQAiDUH//wFxRQRAIA1BEHQMAwsgDUH/B3EhCiANQYCAAnEhByANQYD4AXEiDUGA+AFGBEAgB0EQdCINQYCAgPwHciAKRQ0DGiANIApBDXRyQYCAgP4HcgwDCyAHQRB0IQcgDUUNASANQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2ogB3IMAgsgECAIQcjLxgAQ8AcACyAKIApnQRBrIgpB//8DcUEIanRB////A3EgB0GAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCCAOSwRAIAkgDkEYbGoiCi0AEyINIAotABIiByAKLQARIgkgByAJSxsiByAHIA1JGyINBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIkMAABBBIAwqAkggBxsgIpNDAAB+Q5UgDUEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAKQQxqLwEAIg1B//8BcUUEQCANQRB0DAMLIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNAxogDSAKQQ10ckGAgID+B3IMAwsgB0EQdCEHIA1FDQEgDUENdEGAgID8AHEgCkENdHJBgICAwANqIAdyDAILIA4gCEHIy8YAEPAHAAsgCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQJ0IAIgC0EEayILICMgIZQiISAhXCAhICIgIJRgciIKG2ogDjYCACAFIApqIQUgEUEEaiIRIBRJDQALCyABIBNHBEAgAiAFQQJ0aiARKAIANgIAIBFBBGohESAFQQFqIQUgC0EEayELIAEhEwwBCwsgBUECdCIMBEAgACACIAz8CgAACyABIAVGDQQgACAMaiETQQAhCwJAIAEgBWsiCkEETwRAIBUgH2ohDiATIQggCkF8cSILIREDQCAIIA79AAIA/QwAAAAAAAAAAAAAAAAAAAAA/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAOQRBrIQ4gCEEQaiEIIBFBBGsiEQ0ACyAKIAtGDQELIB4gC0ECdCIRayAVaiEOIAAgEWogDGohCCALIAFrIAVqIREDQCAIIA4oAgA2AgAgDkEEayEOIAhBBGohCCARQQFqIhENAAsLIAEgBU8EQEEAIQUgEyEAIAoiAUEhSQ0EDAELCyAFIAEgAUGgm8EAEKAFAAtB+IHHAEETQZCbwQAQkwgLAAsgCkECSQ0AIAYoAgAhECAKQQF2IQYCQAJAAkACQCAGAn8gCkEPTQRAIApBB0sEQCAQQQRqIgAoAgAgEygCBCATKAIAEN0CIQMgACgCACATKAIMIBMoAggQ3QIhBCAAKAIAIBNBDEEIIAQbaiIFKAIAIhEgEyADQQJ0aiIIKAIAIgsQ3QIhASAAKAIAIBNBCEEMIAQbaiIMKAIAIg4gEyADQQFzQQJ0aiIEKAIAIg0Q3QIhAyAAKAIAIAwgBCAFIAEbIAMbKAIAIgwgCCAFIAQgAxsgARsoAgAiBBDdAiEFIAIgDSAOIAMbNgIMIAIgESALIAEbNgIAIAIgBCAMIAUbNgIIIAIgDCAEIAUbNgIEIAAoAgAgEyAGQQJ0IhFqIgEoAgQgASgCABDdAiEEIAAoAgAgASgCDCABKAIIEN0CIQUgACgCACABQQxBCCAFG2oiDCgCACIIIAEgBEECdGoiCygCACIOEN0CIQMgACgCACABQQhBDCAFG2oiBSgCACINIAEgBEEBc0ECdGoiBCgCACIPEN0CIQEgACgCACAFIAQgDCADGyABGygCACIFIAsgDCAEIAEbIAMbKAIAIgQQ3QIhDCACIBFqIgAgDyANIAEbNgIMIAAgCCAOIAMbNgIAIAAgBCAFIAwbNgIIIAAgBSAEIAwbNgIEQQQMAgsgAiATKAIANgIAIAIgBkECdCIAaiAAIBNqKAIANgIAQQEMAQsgEyACIAIgCkECdGoiACAQELkCIBMgBkECdCIBaiABIAJqIABBIGogEBC5AkEICyIBSwRAIAFBAnQhDCAQQQRqKAIAIgQoAgghESABIQADQCACIABBAnQiA2oiBSADIBNqKAIAIg02AgAgDSARTw0FIAVBBGsoAgAhDiAEKAIEIgMgDUEYbCIUaiIFLQATIgggBS0AEiILIAUtABEiDyALIA9LGyILIAggC0sbIggEfUMAAEDBIAQqAkQgBC0AWEECRiILGyIhQwAAEEEgBCoCSCALGyAhk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAFQQxqLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQsgCEGA+AFxIghBgPgBRgRAIAtBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgC0EQdCILIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgC0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gBCgCCCILTw0EIAQoAgQiCCAOQRhsaiIFLQATIg8gBS0AEiIHIAUtABEiCSAHIAlLGyIHIAcgD0kbIg8EfUMAAEDBIAQqAkQgBC0AWEECRiIHGyIgQwAAEEEgBCoCSCAHGyAgk0MAAH5DlSAPQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hICAhlCIhICFcICEgIgJ/IAVBDGovAQAiD0H//wFxRQRAIA9BEHQMAQsgD0H/B3EhBSAPQYCAAnEhByAPQYD4AXEiD0GA+AFGBEAgB0EQdCIPQYCAgPwHciAFRQ0BGiAPIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgD0ENdEGAgID8AHEgBUENdHJBgICAwANqciAPDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBH0gJBDgBUNU+C1AlEMAAIA/kpEFICALlGByRQRAIAwhBQJ/A0AgAiAFaiIPIA42AgAgAiAFQQRGDQEaIAsgDU0NBiAPQQhrKAIAIQ4gCCAUaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIhQwAAEEEgBCoCSCAPGyAhk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAIQQxqLwEAIgtB//8BcUUEQCALQRB0DAELIAtB/wdxIQggC0GAgAJxIQ8gC0GA+AFxIgtBgPgBRgRAIA9BEHQiC0GAgID8B3IgCEUNARogCyAIQQ10ckGAgID+B3IMAQsgD0EQdCIPIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAIIAhnQRBrIghB//8DcUEIanRB////A3EgD0GAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gEU8NBSADIA5BGGxqIggtABMiCyAILQASIg8gCC0AESIHIAcgD0kbIg8gCyAPSxsiCwR9QwAAQMEgBCoCRCAELQBYQQJGIg8bIiBDAAAQQSAEKgJIIA8bICCTQwAAfkOVIAtBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQRrIQUgIZQiISAhWwRAIAMhCCARIQsgISAiICCUYEUNAQsLIAIgBWoLIA02AgALIAxBBGohDCAAQQFqIgAgBkcNAAsLIAIgBkECdCIAaiEDIAogBmsiFCABSwRAIAAgE2ohCSABQQJ0IQwgEEEEaigCACIEKAIIIREDQCADIAFBAnQiAGoiBSAAIAlqKAIAIg02AgAgDSARTw0FIAVBBGsoAgAhDiAEKAIEIgAgDUEYbCIWaiIFLQATIgggBS0AEiILIAUtABEiDyALIA9LGyILIAggC0sbIggEfUMAAEDBIAQqAkQgBC0AWEECRiILGyIhQwAAEEEgBCoCSCALGyAhk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAFQQxqLwEAIghB//8BcUUEQCAIQRB0DAELIAhB/wdxIQUgCEGAgAJxIQsgCEGA+AFxIghBgPgBRgRAIAtBEHQiCEGAgID8B3IgBUUNARogCCAFQQ10ckGAgID+B3IMAQsgC0EQdCILIAhBDXRBgICA/ABxIAVBDXRyQYCAgMADanIgCA0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgC0GAgIDYA3IgBUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gBCgCCCILTw0EIAQoAgQiCCAOQRhsaiIFLQATIg8gBS0AEiIHIAUtABEiFSAHIBVLGyIHIAcgD0kbIg8EfUMAAEDBIAQqAkQgBC0AWEECRiIHGyIgQwAAEEEgBCoCSCAHGyAgk0MAAH5DlSAPQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hICAhlCIhICFcICEgIgJ/IAVBDGovAQAiD0H//wFxRQRAIA9BEHQMAQsgD0H/B3EhBSAPQYCAAnEhByAPQYD4AXEiD0GA+AFGBEAgB0EQdCIPQYCAgPwHciAFRQ0BGiAPIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgD0ENdEGAgID8AHEgBUENdHJBgICAwANqciAPDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIkQwAAgD9eBH0gJBDgBUNU+C1AlEMAAIA/kpEFICALlGByRQRAIAwhBQJ/A0AgAyAFaiIPIA42AgAgAyAFQQRGDQEaIAsgDU0NBiAPQQhrKAIAIQ4gCCAWaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIhQwAAEEEgBCoCSCAPGyAhk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAAC0MAAIA/ISECfyAIQQxqLwEAIgtB//8BcUUEQCALQRB0DAELIAtB/wdxIQggC0GAgAJxIQ8gC0GA+AFxIgtBgPgBRgRAIA9BEHQiC0GAgID8B3IgCEUNARogCyAIQQ10ckGAgID+B3IMAQsgD0EQdCIPIAtBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgCw0AGiAIIAhnQRBrIghB//8DcUEIanRB////A3EgD0GAgIDYA3IgCEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA4gEU8NBSAAIA5BGGxqIggtABMiCyAILQASIg8gCC0AESIHIAcgD0kbIg8gCyAPSxsiCwR9QwAAQMEgBCoCRCAELQBYQQJGIg8bIiBDAAAQQSAEKgJIIA8bICCTQwAAfkOVIAtBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQRrIQUgIZQiISAhWwRAIAAhCCARIQsgISAiICCUYEUNAQsLIAMgBWoLIA02AgALIAxBBGohDCABQQFqIgEgFEcNAAsLIANBBGshDiATIApBAnRBBGsiAGohESAAIAJqIQgDQCATIAMoAgAiACACKAIAIgEgEEEEaiIEKAIAIAAgARDdAiIAGzYCACARIA4oAgAiASAIKAIAIgUgBCgCACAFIAEQ3QIiARs2AgAgEUEEayERIBNBBGohEyADIABBAnRqIQMgAiAAQQFzQQJ0aiECIA4gAUECdCIAayEOIAAgCGpBBGshCCAGQQFrIgYNAAsgDkEEaiEAIApBAXEEfyATIAIgAyAAIAJLIgEbKAIANgIAIAMgACACTUECdGohAyACIAFBAnRqBSACCyAARiADIAhBBGpGcQ0EEJwKAAsgDiARQcjLxgAQ8AcACyANIAtByMvGABDwBwALIA4gC0HIy8YAEPAHAAsgDSARQcjLxgAQ8AcACyAbQRBqJAAPCyAOIBBByMvGABDwBwALIAogEEHIy8YAEPAHAAv5ZQIZfwV9IwBBEGsiGyQAAkACQAJAAkAgAUEhSQRAIAAhEyABIQoMAQsgAkEEayEeIAJBEGshHwJAAkADQCAERQRAIAAgASACIANBASAGEIQBDAULIAAgAUEDdiITQRxsaiEMIAAgE0EEdGohESAEQQFrIQQgGwJ/IAFBwABPBEAgACARIAwgEyAGELMGDAELIAAgBigCAEEEaiITKAIAIAAoAgAiCiARKAIAIggQ3QIiCyATKAIAIAogDCgCACIKEN0CRw0AGiAMIBEgEygCACAIIAoQ3QIgC3MbCyIPKAIAIgw2AgwgDyAAa0ECdiETAkAgBQRAIAYoAgBBBGooAgAgBSgCACAMEN0CRQ0BCyABIANLDQMgBigCACEaIAIgAUECdCIXaiELQQAhCiAAIREgEyEMA0AgACAMQQNrIghBACAIIAxNG0ECdGoiHCARSwRAIBpBBGooAgAiCCgCCCEQIA8oAgAhFgNAQwAAgD8hIQJ/AkAgECARKAIAIg5LBEAgCCgCBCIUIA5BGGxqIg0tABMiByANLQASIgkgDS0AESIVIAkgFUsbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgDUEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSENIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIA1FDQMaIAcgDUENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIA1BDXRyQYCAgMADaiAJcgwCCwwLCyANIA1nQRBrIg1B//8DcUEIanRB////A3EgCUGAgIDYA3IgDUEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgECAWSwRAIBQgFkEYbGoiDS0AEyIHIA0tABIiCSANLQARIhUgCSAVSxsiCSAHIAlLGyIHBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIkMAABBBIAgqAkggCRsgIpNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiANQQxqIhUvAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsgFiAQQcjLxgAQ8AcACyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIApBAnQgAiALQQRrICMgIZQiISAhWyAhICIgIJRgRXEiGBtqIA42AgBDAACAPyEhAn8CQCAQIBFBBGooAgAiDksEQCAUIA5BGGxqIgctABMiCSAHLQASIhIgBy0AESIZIBIgGUsbIhIgCSASSxsiCQR9QwAAQMEgCCoCRCAILQBYQQJGIhIbIiBDAAAQQSAIKgJIIBIbICCTQwAAfkOVIAlBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgB0EMai8BACIJQf//AXFFBEAgCUEQdAwDCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQMaIAkgB0ENdHJBgICA/gdyDAMLIBJBEHQhEiAJRQ0BIAlBDXRBgICA/ABxIAdBDXRyQYCAgMADaiAScgwCCwwLCyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiByANLQASIgkgDS0AESISIAkgEksbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACIJQf//AXFFBEAgCUEQdAwBCyAJQf8HcSEHIAlBgIACcSESIAlBgPgBcSIJQYD4AUYEQCASQRB0IglBgICA/AdyIAdFDQEaIAkgB0ENdHJBgICA/gdyDAELIBJBEHQiEiAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2pyIAkNABogByAHZ0EQayIHQf//A3FBCGp0Qf///wNxIBJBgICA2ANyIAdBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAKIBhqIhJBAnQgAiALQQhrICMgIZQiISAhWyAhICIgIJRgRXEiGBtqIA42AgBDAACAPyEhAn8CQCAQIBFBCGooAgAiDksEQCAUIA5BGGxqIgotABMiByAKLQASIgkgCi0AESIZIAkgGUsbIgkgByAJSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIgkbIiBDAAAQQSAIKgJIIAkbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgCkEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEKIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIApFDQMaIAcgCkENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIApBDXRyQYCAgMADaiAJcgwCCwwLCyAKIApnQRBrIgpB//8DcUEIanRB////A3EgCUGAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiCiANLQASIgcgDS0AESIJIAcgCUsbIgcgByAKSRsiCgR9QwAAQMEgCCoCRCAILQBYQQJGIgcbIiBDAAAQQSAIKgJIIAcbICCTQwAAfkOVIApBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEKIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIApFDQEaIAcgCkENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIAcNABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyASIBhqIglBAnQgAiALQQxrICMgIZQiISAhWyAhICIgIJRgRXEiEhtqIA42AgBDAACAPyEhAn8CQCAQIBFBDGooAgAiDksEQCAUIA5BGGxqIgotABMiByAKLQASIhQgCi0AESIYIBQgGEsbIhQgByAUSxsiBwR9QwAAQMEgCCoCRCAILQBYQQJGIhQbIiBDAAAQQSAIKgJIIBQbICCTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISMgCkEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEKIAdBgIACcSEUIAdBgPgBcSIHQYD4AUYEQCAUQRB0IgdBgICA/AdyIApFDQMaIAcgCkENdHJBgICA/gdyDAMLIBRBEHQhFCAHRQ0BIAdBDXRBgICA/ABxIApBDXRyQYCAgMADaiAUcgwCCwwLCyAKIApnQRBrIgpB//8DcUEIanRB////A3EgFEGAgIDYA3IgCkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELIA0tABMiCiANLQASIgcgDS0AESINIAcgDUsbIg0gCiANSxsiCgR9QwAAQMEgCCoCRCAILQBYQQJGIg0bIiBDAAAQQSAIKgJIIA0bICCTQwAAfkOVIApBAWtB/wFxs5SSEIgEIiAgIJIFQwAAAAALISJDAACAPyEgAn8gFS8BACINQf//AXFFBEAgDUEQdAwBCyANQf8HcSEKIA1BgIACcSEHIA1BgPgBcSINQYD4AUYEQCAHQRB0Ig1BgICA/AdyIApFDQEaIA0gCkENdHJBgICA/gdyDAELIAdBEHQiByANQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIA0NABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAJIBJqIgpBAnQgAiALQRBrIgsgIyAhlCIhICFbICEgIiAglGBFcSING2ogDjYCACAKIA1qIQogEUEQaiIRIBxJDQALCyAAIAxBAnRqIhYgEUsEQCAaQQRqKAIAIggoAgghDSAPKAIAIQcDQEMAAIA/ISECfwJAIA0gESgCACIUSwRAIAgoAgQiFSAUQRhsaiIOLQATIhAgDi0AEiIJIA4tABEiEiAJIBJLGyIJIAkgEEkbIhAEfUMAAEDBIAgqAkQgCC0AWEECRiIJGyIgQwAAEEEgCCoCSCAJGyAgk0MAAH5DlSAQQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIA5BDGovAQAiEEH//wFxRQRAIBBBEHQMAwsgEEH/B3EhDiAQQYCAAnEhCSAQQYD4AXEiEEGA+AFGBEAgCUEQdCIQQYCAgPwHciAORQ0DGiAQIA5BDXRyQYCAgP4HcgwDCyAJQRB0IQkgEEUNASAQQQ10QYCAgPwAcSAOQQ10ckGAgIDAA2ogCXIMAgsgFCANQcjLxgAQ8AcACyAOIA5nQRBrIg5B//8DcUEIanRB////A3EgCUGAgIDYA3IgDkEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgByANSQRAIBUgB0EYbGoiDi0AEyIQIA4tABIiCSAOLQARIhUgCSAVSxsiCSAJIBBJGyIQBH1DAABAwSAIKgJEIAgtAFhBAkYiCRsiIkMAABBBIAgqAkggCRsgIpNDAAB+Q5UgEEEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAOQQxqLwEAIhBB//8BcUUEQCAQQRB0DAMLIBBB/wdxIQ4gEEGAgAJxIQkgEEGA+AFxIhBBgPgBRgRAIAlBEHQiEEGAgID8B3IgDkUNAxogECAOQQ10ckGAgID+B3IMAwsgCUEQdCEJIBBFDQEgEEENdEGAgID8AHEgDkENdHJBgICAwANqIAlyDAILIAcgDUHIy8YAEPAHAAsgDiAOZ0EQayIOQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIA5BF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAKQQJ0IAIgC0EEayILICMgIZQiISAhWyAhICIgIJRgRXEiDhtqIBQ2AgAgCiAOaiEKIBFBBGoiESAWSQ0ACwsgASAMRwRAIAtBBGsiCyAKQQJ0aiARKAIANgIAIBFBBGohESABIQwMAQsLIApBAnQiDARAIAAgAiAM/AoAAAsgASAKayELAkAgASAKRg0AQQAhDSALQQRPBEAgACAMaiEOIBcgH2ohCCALQXxxIg0hEQNAIA4gCP0AAgD9DAAAAAAAAAAAAAAAAAAAAAD9DQwNDg8ICQoLBAUGBwABAgP9CwIAIAhBEGshCCAOQRBqIQ4gEUEEayIRDQALIAsgDUYNAQsgHiAXIA1BAnQiEWtqIQ4gACARaiAMaiEIIA0gAWsgCmohEQNAIAggDigCADYCACAOQQRrIQ4gCEEEaiEIIBFBAWoiEQ0ACwsgCkUNACABIApJDQIgACAMaiALIAIgAyAEIBtBDGogBhA+IAoiAUEhTw0BIAAhEwwECyABIANLDQIgAiABQQJ0IhVqIQsgBigCACEaQQAhBSAAIREDQCAAIBNBA2siDEEAIAwgE00bQQJ0aiIcIBFLBEAgGkEEaigCACIOKAIIIRQgDygCACENIAYoAgBBBGohGANAQwAAgD8hIQJ/AkAgDSAUSQRAIBEoAgAhCiAOKAIEIgcgDUEYbCIJaiIMLQATIgggDC0AEiIQIAwtABEiFiAQIBZLGyIQIAggEEsbIggEfUMAAEDBIA4qAkQgDi0AWEECRiIQGyIgQwAAEEEgDioCSCAQGyAgk0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEjIAxBDGovAQAiCEH//wFxRQRAIAhBEHQMAwsgCEH/B3EhDCAIQYCAAnEhECAIQYD4AXEiCEGA+AFGBEAgEEEQdCIIQYCAgPwHciAMRQ0DGiAIIAxBDXRyQYCAgP4HcgwDCyAQQRB0IRAgCEUNASAIQQ10QYCAgPwAcSAMQQ10ckGAgIDAA2ogEHIMAgsgDSAUQcjLxgAQ8AcACyAMIAxnQRBrIgxB//8DcUEIanRB////A3EgEEGAgIDYA3IgDEEXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAUSQRAIAcgCkEYbGoiDC0AEyIIIAwtABIiECAMLQARIgcgByAQSRsiECAIIBBLGyIIBH1DAABAwSAOKgJEIA4tAFhBAkYiEBsiIkMAABBBIA4qAkggEBsgIpNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAMQQxqLwEAIghB//8BcUUEQCAIQRB0DAMLIAhB/wdxIQwgCEGAgAJxIRAgCEGA+AFxIghBgPgBRgRAIBBBEHQiCEGAgID8B3IgDEUNAxogCCAMQQ10ckGAgID+B3IMAwsgEEEQdCEQIAhFDQEgCEENdEGAgID8AHEgDEENdHJBgICAwANqIBByDAILIAogFEHIy8YAEPAHAAsgDCAMZ0EQayIMQf//A3FBCGp0Qf///wNxIBBBgICA2ANyIAxBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAFQQJ0IAIgC0EEayAjICGUIiEgIVwgISAiICCUYHIiGRtqIAo2AgBDAACAPyEhAn8CQCAYKAIAIgwoAggiECANSwRAIBFBBGooAgAhCiAMKAIEIhYgCWoiCC0AEyIHIAgtABIiCSAILQARIhcgCSAXSxsiCSAHIAlLGyIHBH1DAABAwSAMKgJEIAwtAFhBAkYiCRsiIEMAABBBIAwqAkggCRsgIJNDAAB+Q5UgB0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAIQQxqIhcvAQAiCUH//wFxRQRAIAlBEHQMAwsgCUH/B3EhByAJQYCAAnEhEiAJQYD4AXEiCUGA+AFGBEAgEkEQdCIJQYCAgPwHciAHRQ0DGiAJIAdBDXRyQYCAgP4HcgwDCyASQRB0IRIgCUUNASAJQQ10QYCAgPwAcSAHQQ10ckGAgIDAA2ogEnIMAgsgDSAQQcjLxgAQ8AcACyAHIAdnQRBrIgdB//8DcUEIanRB////A3EgEkGAgIDYA3IgB0EXdGtyC74iIEMAAIA/XgRAICAQ4AVDVPgtQJRDAACAP5KRISELQwAAgD8hIAJ/AkAgCiAQSQRAIBYgCkEYbGoiBy0AEyIJIActABIiEiAHLQARIh0gEiAdSxsiEiAJIBJLGyIJBH1DAABAwSAMKgJEIAwtAFhBAkYiEhsiIkMAABBBIAwqAkggEhsgIpNDAAB+Q5UgCUEBa0H/AXGzlJIQiAQiIiAikgVDAAAAAAshIiAHQQxqLwEAIglB//8BcUUEQCAJQRB0DAMLIAlB/wdxIQcgCUGAgAJxIRIgCUGA+AFxIglBgPgBRgRAIBJBEHQiCUGAgID8B3IgB0UNAxogCSAHQQ10ckGAgID+B3IMAwsgEkEQdCESIAlFDQEgCUENdEGAgID8AHEgB0ENdHJBgICAwANqIBJyDAILDAsLIAcgB2dBEGsiB0H//wNxQQhqdEH///8DcSASQYCAgNgDciAHQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBSAZaiISQQJ0IAIgC0EIayAjICGUIiEgIVwgISAiICCUYHIiGRtqIAo2AgAgEUEIaigCACEKIAgtABMiBSAILQASIgcgCC0AESIJIAcgCUsbIgcgBSAHSxsiBQR9QwAAQMEgDCoCRCAMLQBYQQJGIgcbIiFDAAAQQSAMKgJIIAcbICGTQwAAfkOVIAVBAWtB/wFxs5SSEIgEIiEgIZIFQwAAAAALISNDAACAPyEhAn8gFy8BACIHQf//AXFFBEAgB0EQdAwBCyAHQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQEaIAcgBUENdHJBgICA/gdyDAELIAlBEHQiCSAHQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAcNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAogEEkEQCAWIApBGGxqIgUtABMiByAFLQASIgkgBS0AESIdIAkgHUsbIgkgByAJSxsiBwR9QwAAQMEgDCoCRCAMLQBYQQJGIgkbIiJDAAAQQSAMKgJIIAkbICKTQwAAfkOVIAdBAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgBUEMai8BACIHQf//AXFFBEAgB0EQdAwDCyAHQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQMaIAcgBUENdHJBgICA/gdyDAMLIAlBEHQhCSAHRQ0BIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAJcgwCCwwLCyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgRAICQQ4AVDVPgtQJRDAACAP5KRISALIBIgGWoiCUECdCACIAtBDGsgIyAhlCIhICFcICEgIiAglGByIhIbaiAKNgIAIBFBDGooAgAhCiAILQATIgUgCC0AEiIHIAgtABEiCCAHIAhLGyIIIAUgCEsbIgUEfUMAAEDBIAwqAkQgDC0AWEECRiIIGyIhQwAAEEEgDCoCSCAIGyAhk0MAAH5DlSAFQQFrQf8BcbOUkhCIBCIhICGSBUMAAAAACyEjQwAAgD8hIQJ/IBcvAQAiCEH//wFxRQRAIAhBEHQMAQsgCEH/B3EhBSAIQYCAAnEhByAIQYD4AXEiCEGA+AFGBEAgB0EQdCIIQYCAgPwHciAFRQ0BGiAIIAVBDXRyQYCAgP4HcgwBCyAHQRB0IgcgCEENdEGAgID8AHEgBUENdHJBgICAwANqciAIDQAaIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSAHQYCAgNgDciAFQRd0a3ILviIgQwAAgD9eBEAgIBDgBUNU+C1AlEMAAIA/kpEhIQtDAACAPyEgAn8CQCAKIBBJBEAgFiAKQRhsaiIFLQATIgggBS0AEiIQIAUtABEiByAHIBBJGyIQIAggEEsbIggEfUMAAEDBIAwqAkQgDC0AWEECRiIQGyIiQwAAEEEgDCoCSCAQGyAik0MAAH5DlSAIQQFrQf8BcbOUkhCIBCIiICKSBUMAAAAACyEiIAVBDGovAQAiDEH//wFxRQRAIAxBEHQMAwsgDEH/B3EhBSAMQYCAAnEhCCAMQYD4AXEiDEGA+AFGBEAgCEEQdCIMQYCAgPwHciAFRQ0DGiAMIAVBDXRyQYCAgP4HcgwDCyAIQRB0IQggDEUNASAMQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2ogCHIMAgsMCwsgBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAhBgICA2ANyIAVBF3Rrcgu+IiRDAACAP14EQCAkEOAFQ1T4LUCUQwAAgD+SkSEgCyAJIBJqIgVBAnQgAiALQRBrIgsgIyAhlCIhICFcICEgIiAglGByIgwbaiAKNgIAIAUgDGohBSARQRBqIhEgHEkNAAsLIAAgE0ECdGoiFCARSwRAIBpBBGooAgAiDCgCCCEIIA8oAgAhEANAQwAAgD8hIQJ/AkAgCCAQSwRAIBEoAgAhDiAMKAIEIgkgEEEYbGoiCi0AEyINIAotABIiByAKLQARIhYgByAWSxsiByAHIA1JGyINBH1DAABAwSAMKgJEIAwtAFhBAkYiBxsiIEMAABBBIAwqAkggBxsgIJNDAAB+Q5UgDUEBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIyAKQQxqLwEAIg1B//8BcUUEQCANQRB0DAMLIA1B/wdxIQogDUGAgAJxIQcgDUGA+AFxIg1BgPgBRgRAIAdBEHQiDUGAgID8B3IgCkUNAxogDSAKQQ10ckGAgID+B3IMAwsgB0EQdCEHIA1FDQEgDUENdEGAgID8AHEgCkENdHJBgICAwANqIAdyDAILIBAgCEHIy8YAEPAHAAsgCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAdBgICA2ANyIApBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhC0MAAIA/ISACfwJAIAggDksEQCAJIA5BGGxqIgotABMiDSAKLQASIgcgCi0AESIJIAcgCUsbIgcgByANSRsiDQR9QwAAQMEgDCoCRCAMLQBYQQJGIgcbIiJDAAAQQSAMKgJIIAcbICKTQwAAfkOVIA1BAWtB/wFxs5SSEIgEIiIgIpIFQwAAAAALISIgCkEMai8BACINQf//AXFFBEAgDUEQdAwDCyANQf8HcSEKIA1BgIACcSEHIA1BgPgBcSINQYD4AUYEQCAHQRB0Ig1BgICA/AdyIApFDQMaIA0gCkENdHJBgICA/gdyDAMLIAdBEHQhByANRQ0BIA1BDXRBgICA/ABxIApBDXRyQYCAgMADaiAHcgwCCyAOIAhByMvGABDwBwALIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSAHQYCAgNgDciAKQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUECdCACIAtBBGsiCyAjICGUIiEgIVwgISAiICCUYHIiChtqIA42AgAgBSAKaiEFIBFBBGoiESAUSQ0ACwsgASATRwRAIAIgBUECdGogESgCADYCACARQQRqIREgBUEBaiEFIAtBBGshCyABIRMMAQsLIAVBAnQiDARAIAAgAiAM/AoAAAsgASAFRg0EIAAgDGohE0EAIQsCQCABIAVrIgpBBE8EQCAVIB9qIQ4gEyEIIApBfHEiCyERA0AgCCAO/QACAP0MAAAAAAAAAAAAAAAAAAAAAP0NDA0ODwgJCgsEBQYHAAECA/0LAgAgDkEQayEOIAhBEGohCCARQQRrIhENAAsgCiALRg0BCyAeIAtBAnQiEWsgFWohDiAAIBFqIAxqIQggCyABayAFaiERA0AgCCAOKAIANgIAIA5BBGshDiAIQQRqIQggEUEBaiIRDQALCyABIAVPBEBBACEFIBMhACAKIgFBIUkNBAwBCwsgBSABIAFBoJvBABCgBQALQfiBxwBBE0GQm8EAEJMICwALIApBAkkNACAGKAIAIRAgCkEBdiEGAkACQAJAAkAgBgJ/IApBD00EQCAKQQdLBEAgEEEEaiIAKAIAIBMoAgQgEygCABDdAiEDIAAoAgAgEygCDCATKAIIEN0CIQQgACgCACATQQxBCCAEG2oiBSgCACIRIBMgA0ECdGoiCCgCACILEN0CIQEgACgCACATQQhBDCAEG2oiDCgCACIOIBMgA0EBc0ECdGoiBCgCACINEN0CIQMgACgCACAMIAQgBSABGyADGygCACIMIAggBSAEIAMbIAEbKAIAIgQQ3QIhBSACIA0gDiADGzYCDCACIBEgCyABGzYCACACIAQgDCAFGzYCCCACIAwgBCAFGzYCBCAAKAIAIBMgBkECdCIRaiIBKAIEIAEoAgAQ3QIhBCAAKAIAIAEoAgwgASgCCBDdAiEFIAAoAgAgAUEMQQggBRtqIgwoAgAiCCABIARBAnRqIgsoAgAiDhDdAiEDIAAoAgAgAUEIQQwgBRtqIgUoAgAiDSABIARBAXNBAnRqIgQoAgAiDxDdAiEBIAAoAgAgBSAEIAwgAxsgARsoAgAiBSALIAwgBCABGyADGygCACIEEN0CIQwgAiARaiIAIA8gDSABGzYCDCAAIAggDiADGzYCACAAIAQgBSAMGzYCCCAAIAUgBCAMGzYCBEEEDAILIAIgEygCADYCACACIAZBAnQiAGogACATaigCADYCAEEBDAELIBMgAiACIApBAnRqIgAgEBC5AiATIAZBAnQiAWogASACaiAAQSBqIBAQuQJBCAsiAUsEQCABQQJ0IQwgEEEEaigCACIEKAIIIREgASEAA0AgAiAAQQJ0IgNqIgUgAyATaigCACINNgIAIA0gEU8NBSAFQQRrKAIAIQ4gBCgCBCIDIA1BGGwiFGoiBS0AEyIIIAUtABIiCyAFLQARIg8gCyAPSxsiCyAIIAtLGyIIBH1DAABAwSAEKgJEIAQtAFhBAkYiCxsiIUMAABBBIAQqAkggCxsgIZNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gBUEMai8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIAQoAggiC08NBCAEKAIEIgggDkEYbGoiBS0AEyIPIAUtABIiByAFLQARIgkgByAJSxsiByAHIA9JGyIPBH1DAABAwSAEKgJEIAQtAFhBAkYiBxsiIEMAABBBIAQqAkggBxsgIJNDAAB+Q5UgD0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISAgIZQiISAhXCAhICICfyAFQQxqLwEAIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQUgD0GAgAJxIQcgD0GA+AFxIg9BgPgBRgRAIAdBEHQiD0GAgID8B3IgBUUNARogDyAFQQ10ckGAgID+B3IMAQsgB0EQdCIHIA9BDXRBgICA/ABxIAVBDXRyQYCAgMADanIgDw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgR9ICQQ4AVDVPgtQJRDAACAP5KRBSAgC5RgckUEQCAMIQUCfwNAIAIgBWoiDyAONgIAIAIgBUEERg0BGiALIA1NDQYgD0EIaygCACEOIAggFGoiCC0AEyILIAgtABIiDyAILQARIgcgByAPSRsiDyALIA9LGyILBH1DAABAwSAEKgJEIAQtAFhBAkYiDxsiIUMAABBBIAQqAkggDxsgIZNDAAB+Q5UgC0EBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIBFPDQUgAyAOQRhsaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIgQwAAEEEgBCoCSCAPGyAgk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hIAJ/IAhBDGovAQAiC0H//wFxRQRAIAtBEHQMAQsgC0H/B3EhCCALQYCAAnEhDyALQYD4AXEiC0GA+AFGBEAgD0EQdCILQYCAgPwHciAIRQ0BGiALIAhBDXRyQYCAgP4HcgwBCyAPQRB0Ig8gC0ENdEGAgID8AHEgCEENdHJBgICAwANqciALDQAaIAggCGdBEGsiCEH//wNxQQhqdEH///8DcSAPQYCAgNgDciAIQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUEEayEFICGUIiEgIVsEQCADIQggESELICEgIiAglGBFDQELCyACIAVqCyANNgIACyAMQQRqIQwgAEEBaiIAIAZHDQALCyACIAZBAnQiAGohAyAKIAZrIhQgAUsEQCAAIBNqIQkgAUECdCEMIBBBBGooAgAiBCgCCCERA0AgAyABQQJ0IgBqIgUgACAJaigCACINNgIAIA0gEU8NBSAFQQRrKAIAIQ4gBCgCBCIAIA1BGGwiFmoiBS0AEyIIIAUtABIiCyAFLQARIg8gCyAPSxsiCyAIIAtLGyIIBH1DAABAwSAEKgJEIAQtAFhBAkYiCxsiIUMAABBBIAQqAkggCxsgIZNDAAB+Q5UgCEEBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gBUEMai8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEFIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIAVFDQEaIAggBUENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAgNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIAVBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIAQoAggiC08NBCAEKAIEIgggDkEYbGoiBS0AEyIPIAUtABIiByAFLQARIhUgByAVSxsiByAHIA9JGyIPBH1DAABAwSAEKgJEIAQtAFhBAkYiBxsiIEMAABBBIAQqAkggBxsgIJNDAAB+Q5UgD0EBa0H/AXGzlJIQiAQiICAgkgVDAAAAAAshIkMAAIA/ISAgIZQiISAhXCAhICICfyAFQQxqLwEAIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQUgD0GAgAJxIQcgD0GA+AFxIg9BgPgBRgRAIAdBEHQiD0GAgID8B3IgBUUNARogDyAFQQ10ckGAgID+B3IMAQsgB0EQdCIHIA9BDXRBgICA/ABxIAVBDXRyQYCAgMADanIgDw0AGiAFIAVnQRBrIgVB//8DcUEIanRB////A3EgB0GAgIDYA3IgBUEXdGtyC74iJEMAAIA/XgR9ICQQ4AVDVPgtQJRDAACAP5KRBSAgC5RgckUEQCAMIQUCfwNAIAMgBWoiDyAONgIAIAMgBUEERg0BGiALIA1NDQYgD0EIaygCACEOIAggFmoiCC0AEyILIAgtABIiDyAILQARIgcgByAPSRsiDyALIA9LGyILBH1DAABAwSAEKgJEIAQtAFhBAkYiDxsiIUMAABBBIAQqAkggDxsgIZNDAAB+Q5UgC0EBa0H/AXGzlJIQiAQiISAhkgVDAAAAAAtDAACAPyEhAn8gCEEMai8BACILQf//AXFFBEAgC0EQdAwBCyALQf8HcSEIIAtBgIACcSEPIAtBgPgBcSILQYD4AUYEQCAPQRB0IgtBgICA/AdyIAhFDQEaIAsgCEENdHJBgICA/gdyDAELIA9BEHQiDyALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA9BgICA2ANyIAhBF3Rrcgu+IiBDAACAP14EQCAgEOAFQ1T4LUCUQwAAgD+SkSEhCyAOIBFPDQUgACAOQRhsaiIILQATIgsgCC0AEiIPIAgtABEiByAHIA9JGyIPIAsgD0sbIgsEfUMAAEDBIAQqAkQgBC0AWEECRiIPGyIgQwAAEEEgBCoCSCAPGyAgk0MAAH5DlSALQQFrQf8BcbOUkhCIBCIgICCSBUMAAAAACyEiQwAAgD8hIAJ/IAhBDGovAQAiC0H//wFxRQRAIAtBEHQMAQsgC0H/B3EhCCALQYCAAnEhDyALQYD4AXEiC0GA+AFGBEAgD0EQdCILQYCAgPwHciAIRQ0BGiALIAhBDXRyQYCAgP4HcgwBCyAPQRB0Ig8gC0ENdEGAgID8AHEgCEENdHJBgICAwANqciALDQAaIAggCGdBEGsiCEH//wNxQQhqdEH///8DcSAPQYCAgNgDciAIQRd0a3ILviIkQwAAgD9eBEAgJBDgBUNU+C1AlEMAAIA/kpEhIAsgBUEEayEFICGUIiEgIVsEQCAAIQggESELICEgIiAglGBFDQELCyADIAVqCyANNgIACyAMQQRqIQwgAUEBaiIBIBRHDQALCyADQQRrIQ4gEyAKQQJ0QQRrIgBqIREgACACaiEIA0AgEyADKAIAIgAgAigCACIBIBBBBGoiBCgCACAAIAEQ3QIiABs2AgAgESAOKAIAIgEgCCgCACIFIAQoAgAgBSABEN0CIgEbNgIAIBFBBGshESATQQRqIRMgAyAAQQJ0aiEDIAIgAEEBc0ECdGohAiAOIAFBAnQiAGshDiAAIAhqQQRrIQggBkEBayIGDQALIA5BBGohACAKQQFxBH8gEyACIAMgACACSyIBGygCADYCACADIAAgAk1BAnRqIQMgAiABQQJ0agUgAgsgAEYgAyAIQQRqRnENBBCcCgALIA4gEUHIy8YAEPAHAAsgDSALQcjLxgAQ8AcACyAOIAtByMvGABDwBwALIA0gEUHIy8YAEPAHAAsgG0EQaiQADwsgDiAQQcjLxgAQ8AcACyAKIBBByMvGABDwBwALrlwEF38DfQF+AXsjAEHQAGsiCiQAAkACQAJAAkAgAC0ApFNFBEAgCkFAayAAQUBrEPEEIAotAEAEQCAKKAJEIQEMAwsgCi0AQUEBRw0BIABBAToApFMLIAAoAkgiA0UNACAAQZwBaiEUIApBNGqtQoCAgIAQhCEbIABB2ABqIRUgAEHkAGohEiAAQfAAaiEWIABB/ABqIRcDQAJAIAAoAlQiCCAAKAKgUyIBayICQQAgAiAITRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiBWshAiABIAVGBEAgACACNgKgUwwBCyABIAhNBEAgAgRAIAAoAlAiASABIAVqIAL8CgAACyAAKAJIIQMgACACNgKgUwwBC0EAIAEgCEGoo8cAEKAFAAsCQAJAIAMgDU8EQCAKQUBrIBQgACgCRCANaiADIA1rIAAoAlAgACgCVCACQQYQTCAKIAotAEQiAToAByAKKAJAIRMgCigCSCIQRQ0CIAAoAqBTIgMgEGoiAiADTyACIAAoAlQiCE1xDQEgAyACIAhB9O7BABCgBQALIA0gAyADQYTvwQAQoAUACyAAKAJQIQggACgCWCAAKAJgIgJrIBBJBEAgFSACIBBBAUEBENYGIAAoAmAhAgsgEARAIAAoAlwgAmogAyAIaiAQ/AoAAAsgACACIBBqIgg2AmAgACAAKAKgUyAQajYCoFMCQCAAKAJkQYCAgIB4Rw0AIAhBD00NASAKIAAoAlwiAigAACIDNgIUIANBzo7NggVHBEAgCiAKQRRqrUKAgICA4AOENwNAIApBGGoiAEHk58EAIApBQGsQtwcgABC9CCEBDAULIAogAigABCIFNgIkIAVBBGtBfE0EQCAKIApBJGqtQoCAgIAQhDcDQCAKQShqIgBBrJLAACAKQUBrELcHIAAQvQghAQwFCyAAQQA2AmAgAi0ADiEEIAItAA0hByACLQAMIQMgAigACCELIAhBEGsiCARAIAgEQCACIAJBEGogCPwKAAALIAAgCDYCYAsgCiADNgI0AkAgA0EDTQRAQYCAwAAQbiICRQ0BIAAgBDoAmgEgACAHOgCZASAAQQA6AJgBIABBADYClAEgACADNgKQASAAIAs2AowBIAAgBTYCiAEgAEEANgKEASAAQoCAgIDAADcCfCAAQgI3AnQgAEIANwJsIAAgAjYCaCAAQYCAEDYCZCAKIARBgAFxQQd2OgBIIAogAzYCRCAKIAs2AkAgACAKQUBrEPwBIAAoAmRBgICAgHhGDQMMAgsgCiAbNwM4IApBQGsiAEH0l8AAIApBOGoQtwcgABDCCCEBDAULQQRBgIDAABCaCQALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAJgBQQFrDgkNDAsKAAEGBBYCC0EJIQ5BBiEBIAAoApABDgQECAcGAgsgAEEJQQcgACwAmgFBAE4bOgCYAQwVCyAAKAJgQQZBCSAAKAKIASIDQQFGGyIMbiICIAAoAowBIAAoApQBayIISQRAIAIiCEGAgARJDRQLQYCABCAIIAhBgIAETxsiC0EDbCICIAAoAmwiAUsEfyACIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsIAAoAogBBSADC0EBRw0LIAhFDQ1BACEBQQAhAkEAIQNBACEEA0AgAUECaiIHIAAoAmAiBUsEQCABIAcgBUHU6MEAEKAFAAsCfyAAKAJcIAFqIgVBAWotAABBCHQiBiAFLQAAciIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSEFIAZBgIACcSEJIAZBgPgBcSIGQYD4AUYEQCAJQRB0IgZBgICA/AdyIAVFDQEaIAVBDXQgBnJBgICA/gdyDAELIAlBEHQiCSAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAYNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIAlBgICA2ANyIAVBF3RrcgshBQJ/AkACQCAAKAJsIgYgA0sEQCAAKAJoIAJqIAU2AgAgAUEEaiIGIAAoAmAiBUsNASAAKAJcIAFqIgVBA2otAABBCHQiByAFQQJqLQAAciIFQf//AXFFBEAgBUEQdAwECyAFQf8HcSEFIAdBgIACcSEJIAdBgPgBcSIHQYD4AUYEQCAJQRB0IgdBgICA/AdyIAVFDQQaIAVBDXQgB3JBgICA/gdyDAQLIAlBEHQhCSAHRQ0CIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAJcgwDCyADIAZBhOjBABDwBwALIAcgBiAFQcTowQAQoAUACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCUGAgIDYA3IgBUEXdGtyCyEFAn8CQAJAIANBAWoiByAAKAJsIglJBEAgACgCaCACakEEaiAFNgIAIAFBBmoiBSAAKAJgIgdLDQEgACgCXCABaiIBQQVqLQAAQQh0IgcgAUEEai0AAHIiAUH//wFxRQRAIAFBEHQMBAsgAUH/B3EhASAHQYCAAnEhBiAHQYD4AXEiB0GA+AFGBEAgBkEQdCIHQYCAgPwHciABRQ0EGiABQQ10IAdyQYCAgP4HcgwECyAGQRB0IQYgB0UNAiAHQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBnIMAwsgByAJQZTowQAQ8AcACyAGIAUgB0G06MEAEKAFAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAFBF3RrcgshASADQQJqIgcgACgCbCIGSQRAIAAoAmggAmpBCGogATYCACACQQxqIQIgA0EDaiEDIAUhASAEQQFqIgQgC0kNAQwOCwsgByAGQaTowQAQ8AcAC0GU7cEAEJ0KAAsgACgCYCIBQQJ2IgIgACgCjAEgACgClAFrIgdJBEAgAiEHIAFBgIAQSQ0SC0GAgAQgByAHQYCABE8bIgggACgChAEiAUsEQCAIIAFrIgIgACgCfCABa0sEQCAXIAEgAkEEQQQQ1gYgACgChAEhAQsgACgCgAEiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWoiATYChAELIAcEQEEAIQFBACEDAkADQCABQQRqIgIgACgCYCIFSwRAIAEgAiAFQeTuwQAQoAUACyAAKAKEASIFIANLBEAgACgCgAEgAWogACgCXCABaigAADYCACACIQEgCCADQQFqIgNGDQIMAQsLIAMgBUHU7sEAEPAHAAsgACgChAEhAQsgACgCECAAKAIUIAAoApQBIAggACgCgAEgARCfAwJAAkACQCAAKAJgIgEgCEECdCICTwRAIABBADYCYCABIAJrIQMgB0UNASABIAJGDQMgA0UNAiAAKAJcIgEgASACaiAD/AoAAAwCCwwbCyABIAJGDQELIAAgAzYCYAsgACAAKAKUASAIaiICNgKUASACIAAoAowBRw0SIABBADYClAFBCSEBCyAAIAE6AJgBDBELIAAoAmAiAUEBdiICIAAoAowBIAAoApQBayIESQRAIAIhBCABQYCACEkNEAtBgIAEIAQgBEGAgARPGyICIAAoAngiAUsEQCACIAFrIgMgACgCcCABa0sEQCAWIAEgA0ECQQIQ1gYgACgCeCEBCyAAKAJ0IgUgAUEBdGohCCADQQJPBH8gA0EBdEECayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAUgA0EBdGpBAmsFIAgLQQA7AQAgACABQQFqIgE2AngLIAQEQEEAIQNBAiEBAkADQCAAKAJgIgggAUkEQCABQQJrIAEgCEHE7sEAEKAFAAsgACgCeCIIIANLBEAgACgCdCABakECayAAKAJcIAFqQQJrLwAAOwEAIAFBAmohASACIANBAWoiA0YNAgwBCwsgAyAIQbTuwQAQ8AcACyAAKAJ4IQELIAAoAhAgACgCFCAAKAKUASACIAAoAnQgARC9AwJAAkACQCAAKAJgIgMgAkEBdCIBTwRAIABBADYCYCADIAFrIQggBEUNASABIANGDQMgCEUNAiAAKAJcIgMgASADaiAI/AoAAAwCC0EAIAEgA0Goo8cAEKAFAAsgASADRg0BCyAAIAg2AmALIAAgACgClAEgAmoiAjYClAEgAiAAKAKMAUcNECAAQQA2ApQBIABBCDoAmAEMEAtBLSEODAELQRghDgsgACgCYCAObiICIAAoAowBIAAoApQBayILSQRAIAIiC0GAgARJDQ0LQYCABCALIAtBgIAETxsiDCAObCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgggAUECdGohAyACQQJPBH8gAkECdEEEayIFBEAgA0EAIAX8CwALIAEgAmoiAkEBayEBIAggAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AmwLIAxBCWwhEQJAIAsEQCAMQeAAbCEIIAxBGGwhB0EAIQVBACEPAkADQCAOIA9sIgEgACgCYCICTw0DAkACQAJAAkAgD0EJbCIDIAAoAmwiAk8NACAAKAJoIANBAnRqIAAoAlwgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKAJgIgJPBEAgBCEBDAgLIANBA2oiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEGaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EGaiIGIAAoAmwiAk8EQCAGIQMMAQsgACgCaCAGQQJ0aiAAKAJcIARqLQAAs0MAAADDkkMAAAA8lDgCACABQQFqIgQgACgCYCICTwRAIAQhAQwICyADQQFqIgYgACgCbCICTwRAIAYhAwwBCyAAKAJoIAZBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKAJgIgJPBEAgBCEBDAgLIANBBGoiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEHaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EHaiIGIAAoAmwiAk8EQCAGIQMMAQsgACgCaCAGQQJ0aiAAKAJcIARqLQAAs0MAAADDkkMAAAA8lDgCACABQQJqIgQgACgCYCICTwRAIAQhAQwICyADQQJqIgYgACgCbCICTwRAIAYhAwwBCyAAKAJoIAZBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKAJgIgJPBEAgBCEBDAgLIANBBWoiBiAAKAJsIgJPBEAgBiEDDAELIAAoAmggBkECdGogACgCXCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEIaiIEIAAoAmAiAk8EQCAEIQEMCAsgA0EIaiIDIAAoAmwiAk8NACAAKAJoIANBAnRqIAAoAlwgBGotAACzQwAAAMOSQwAAADyUOAIAIAAoApABQQFLDQEMAgsgAyACQaTuwQAQ8AcACwJAAkAgAUEJaiIDIAAoAmAiBk8NACAPQQ9sIBFqIgIgACgCbCIGTw0DIAAoAmggAkECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAmAiBk8NACACQQNqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBD2oiAyAAKAJgIgZPDQAgAkEGaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRJqIgMgACgCYCIGTw0AIAJBCWoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIDIAAoAmAiBk8NACACQQxqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBCmoiAyAAKAJgIgZPDQAgAkEBaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ1qIgMgACgCYCIGTw0AIAJBBGoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIDIAAoAmAiBk8NACACQQdqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBE2oiAyAAKAJgIgZPDQAgAkEKaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRZqIgMgACgCYCIGTw0AIAJBDWoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIDIAAoAmAiBk8NACACQQJqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDmoiAyAAKAJgIgZPDQAgAkEFaiIEIAAoAmwiBk8EQCAEIQIMBAsgACgCaCAEQQJ0aiAAKAJcIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRFqIgMgACgCYCIGTw0AIAJBCGoiBCAAKAJsIgZPBEAgBCECDAQLIAAoAmggBEECdGogACgCXCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIDIAAoAmAiBk8NACACQQtqIgQgACgCbCIGTwRAIAQhAgwECyAAKAJoIARBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBF2oiAyAAKAJgIgZPDQAgAkEOaiICIAAoAmwiBk8NAyAAKAJoIAJBAnRqIAAoAlwgA2otAACzQwAAAMOSQwAAADyUOAIAIAAoApABQQJNDQJBACEGIAghAwwBCyADIAZB9O3BABDwBwALAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQANAIAAoAmAiAiAFIAZqIgFBGGpLBEAgBiAHaiIEIAAoAmwiAk8NDyAAKAJoIANqIAEgACgCXGpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQRtqTQ0HIAAoAmwiAiAEQQNqTQ0OIAAoAmggA2pBDGogASAAKAJcakEbai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBHmpNDQYgACgCbCICIARBBmpNDQ0gACgCaCADakEYaiABIAAoAlxqQR5qLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEhak0NBSAAKAJsIgIgBEEJak0NDCAAKAJoIANqQSRqIAEgACgCXGpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAmAiAiABQSRqTQ0EIAAoAmwiAiAEQQxqTQ0LIAAoAmggA2pBMGogASAAKAJcakEkai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCYCICIAFBJ2pNDQMgACgCbCICIARBD2pNDQogACgCaCADakE8aiABIAAoAlxqQSdqLQAAs0MAAADDkkMAAAA8lDgCACAAKAJgIgIgAUEqak0NAiAAKAJsIgIgBEESak0NCSAAKAJoIANqQcgAaiAAKAJcIAVqIAZqQSpqLQAAs0MAAADDkkMAAAA8lDgCACADQQRqIQMgBkEBaiICIQYgAkEDRw0BDBALCyABQRhqDAYLIAFBKmoMBQsgAUEnagwECyABQSRqDAMLIAFBIWoMAgsgAUEeagwBCyABQRtqCyACQdTtwQAQ8AcACyAEQRJqIQQMBQsgBEEPaiEEDAQLIARBDGohBAwDCyAEQQlqIQQMAgsgBEEGaiEEDAELIARBA2ohBAsgBCACQeTtwQAQ8AcACyAFIA5qIQUgB0EVaiEHIAhB1ABqIQggD0EBaiIPIAxGDQIMAQsLIAIgBkGE7sEAEPAHAAsgACgCbCEBCwJAAkACQAJAAkAgASARTwRAIAAoAmghCCAAKAKUASEEQQQhAkEAIQYCQCAAKAKQASIOQQJJBEBBACEHQQQhBQwBCyAMQRhsIgMgAUsNAiAMQQ9sIQcgCCARQQJ0aiEFIA5BAkYNACABIAlJIAMgCUtyDQYgCSADayEGIAggA0ECdGohAgsgACAEIAwgCCARIAUgByACIAYQ1gMgACgCYCICIAlJDRkgAEEANgJgIAIgCWshASALRQ0CIAIgCUYNBCABRQ0DIAAoAlwiAiACIAlqIAH8CgAADAMLQQAgESABQcTtwQAQoAUACyARIAMgAUG07cEAEKAFAAsgAiAJRg0BCyAAIAE2AmALIAAgACgClAEgDGoiAjYClAEgAiAAKAKMAUcNDyAAQQA2ApQBIABBBjoAmAEMDwsgAyAJIAFBpO3BABCgBQALIAEgAkGU7sEAEPAHAAsgACgCYEEEQQMgACgCiAEiA0EDRhsiDm4iAiAAKAKMASAAKAKUAWsiC0kEQCACIgtBgIAESQ0MCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBgIAEIAsgC0GAgARPGyIIQQJ0IgIgACgCbCIBSwR/IAIgAWsiAiAAKAJkIAFrSwRAIBIgASACQQRBBBDWBiAAKAJsIQELIAAoAmgiBSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgBSACQQJ0akEEawUgAwtBADYCACAAIAFBAWo2AmwgACgCiAEFIAMLQQNHBEAgC0UNDEEAIQFBACECQQAhA0EAIQQDQCABIAAoAmAiBU8NAiABQQFqIgcgBU8NAyABQQJqIgcgBU8NBCADIAAoAmwiBU8NBSAAKAJcIAFqIgVBAWotAAAhByAFQQJqLQAAIQYgACgCaCACaiAFLQAAs0MAAP9ClUMAAIC/kiIYOAIAIANBAWoiBSAAKAJsIglPDQYgACgCaCACakEEaiAHs0MAAP9ClUMAAIC/kiIZOAIAIANBAmoiBSAAKAJsIgdPDQcgACgCaCACakEIaiAGs0MAAP9ClUMAAIC/kiIaOAIAIANBA2oiBSAAKAJsIgdPDQggACgCaCACakEMakMAAAAAQwAAgD8gGCAYlCAZIBmUkiAaIBqUkpMiGCAYIBhcGyIYQwAAAAAgGEMAAAAAXhuROAIAIAFBA2ohASACQRBqIQIgA0EEaiEDIARBAWoiBCAISQ0ACwwLCyALRQ0LQQAhAkEAIQNBACEHA0ACQAJAAkACQCAAKAJgIgEgA0sEQCADQQFqIgQgAU8NASADQQJqIgYgAU8NAiADQQNqIgkgAU8NAyAAKAJcIANqIgFBAmotAAAhESABQQNqLQAAIQUgAS0AACABQQFqLQAAIQwgCv0MAAAAAAAAAAAAAAAAAAAAAP0LA0AgDEEIdHIiDyARQRB0IAVBGHRyciEBQwAAAAAhGAJ9IAoCfwJAIAVBBnYiBUEDRwRAIAogD0H/A3GzQwCA/0OVQ/MENT+UIhiMIBggDEECcRsiGDgCTCAYIBiUIRggAUEKdiEBIAVBAkYNAQsgCiABQf8DcbNDAID/Q5VD8wQ1P5QiGYwgGSABQYAEcRsiGTgCSCAYIBkgGZSSIRggAUEKdiIBIAVBAUYNARoLIAogAUH/A3GzQwCA/0OVQ/MENT+UIhmMIBkgAUGABHEbIhk4AkQgGCAZIBmUkiIYIAVFDQEaIAFBCnYLIgFB/wNxs0MAgP9DlUPzBDU/lCIZjCAZIAFBgARxGyIZOAJAIBggGSAZlJILIRggCkFAayAFQQJ0akMAAIA/IBiTIhiRQwAAAAAgGEMAAAAAXhs4AgAgAyAAKAJsIgFJDQQgAyABQeTrwQAQ8AcACyADIAFBpOvBABDwBwALIAQgAUG068EAEPAHAAsgBiABQcTrwQAQ8AcACyAJIAFB1OvBABDwBwALIAAoAmggAmogCioCQDgCACAEIAAoAmwiAU8NCiAAKAJoIAJqQQRqIAoqAkQ4AgAgBiAAKAJsIgFPDQkgACgCaCACakEIaiAKKgJIOAIAIAkgACgCbCIBTw0IIAAoAmggAmpBDGogCioCTDgCACACQRBqIQIgA0EEaiEDIAggB0EBaiIHSw0ACwwKCyABIAVBpOzBABDwBwALIAcgBUG07MEAEPAHAAsgByAFQcTswQAQ8AcACyADIAVB1OzBABDwBwALIAUgCUHk7MEAEPAHAAsgBSAHQfTswQAQ8AcACyAFIAdBhO3BABDwBwALIAkgAUGU7MEAEPAHAAsgBiABQYTswQAQ8AcACyAEIAFB9OvBABDwBwALIAtFDQAgACgCaCECQQAhByAAKAIIIgkgACgClAEiBGsiAUEAIAEgCU0bIQEgACgCbCIMQQJ2IQMgACgCBCAEQSxsaiEGIAghBQNAIAFFDQIgA0UNAyAKIAL9AAIA/QsEQCACQRBqIQIgB0EEaiEHIARBAWohBCABQQFrIQEgA0EBayEDIAYgCkFAaxCNAiAGQSxqIQYgBUEBayIFDQALCyAAKAJgIgEgCCAObCICSQ0XIABBADYCYCABIAJrIQMgC0UNAiABIAJGDQQgA0UNAyAAKAJcIgEgASACaiAD/AoAAAwDCyAEIAlB+NbGABDwBwALIAcgB0EEaiAMQejYxgAQoAUACyABIAJGDQELIAAgAzYCYAsgACAAKAKUASAIaiICNgKUASACIAAoAowBRw0MIABBADYClAEgAEEFOgCYAQwMCyAAKAJgIgFBA24iAiAAKAKMASAAKAKUAWsiCEkEQCACIQggAUGAgAxJDQsLQYCABCAIIAhBgIAETxsiC0EDbCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsCwJAAkACQAJAAkACQAJAAkACQAJAAkAgCARAQQAhA0EAIQEDQCABIAAoAmAiAk8NAiABIAAoAmwiAk8NAyAAKAJoIANqIAAoAlwgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKAJgIgVPDQQgAiAAKAJsIgVPDQUgACgCaCADakEEaiAAKAJcIAFqQQFqLQAAs0MAAIA9lEMAACDBkhCIBDgCACABQQJqIgIgACgCYCIFTw0GIAIgACgCbCIFTw0HIAAoAmggA2pBCGogACgCXCABakECai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgA0EMaiEDIAkgAUEDaiIBRw0AC0EAIQcgACgCCCIMIAAoApQBIgRrIgJBACACIAxNGyEDIAAoAmwiDkEDbiECIAAoAgQgBEEsbGohBiAAKAJoIQEgCyEFA0AgA0UNCCACRQ0JIAogAf1dAgAgAUEIaioCACIY/SACIBj9IAP9CwRAIAFBDGohASAHQQNqIQcgBEEBaiEEIANBAWshAyACQQFrIQIgBiAKQUBrEOYCIAZBLGohBiAFQQFrIgUNAAsLIAAoAmAiAiAJSQ0bIABBADYCYCACIAlrIQEgCEUNCCACIAlGDQogAUUNCSAAKAJcIgIgAiAJaiAB/AoAAAwJCyABIAJBxOrBABDwBwALIAEgAkHU6sEAEPAHAAsgAiAFQeTqwQAQ8AcACyACIAVB9OrBABDwBwALIAIgBUGE68EAEPAHAAsgAiAFQZTrwQAQ8AcACyAEIAxB+NbGABDwBwALIAcgB0EDaiAOQcjaxgAQoAUACyACIAlGDQELIAAgATYCYAsgACAAKAKUASALaiICNgKUASACIAAoAowBRw0LIABBADYClAEgAEEEOgCYAQwLCyAAKAJgIgFBA24iAiAAKAKMASAAKAKUAWsiCEkEQCACIQggAUGAgAxJDQoLQYCABCAIIAhBgIAETxsiC0EDbCIJIAAoAmwiAUsEQCAJIAFrIgIgACgCZCABa0sEQCASIAEgAkEEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgJsCwJAAkACQAJAAkACQAJAAkACQAJAAkAgCARAQQAhA0EAIQEDQCABIAAoAmAiAk8NAiABIAAoAmwiAk8NAyAAKAJoIANqIAAoAlwgAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAWoiAiAAKAJgIgVPDQQgAiAAKAJsIgVPDQUgACgCaCADakEEaiAAKAJcIAFqQQFqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACABQQJqIgIgACgCYCIFTw0GIAIgACgCbCIFTw0HIAAoAmggA2pBCGogACgCXCABakECai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgA0EMaiEDIAkgAUEDaiIBRw0AC0EAIQcgACgCCCIMIAAoApQBIgRrIgJBACACIAxNGyEDIAAoAmwiDkEDbiECIAAoAgQgBEEsbGohBiAAKAJoIQEgCyEFA0AgA0UNCCACRQ0JIAogAf1dAgAgAUEIaioCACIY/SACIBj9IAP9CwRAIAFBDGohASAHQQNqIQcgBEEBaiEEIANBAWshAyACQQFrIQIgBiAKQUBrEO4CIAZBLGohBiAFQQFrIgUNAAsLIAAoAmAiAiAJSQ0aIABBADYCYCACIAlrIQEgCEUNCCACIAlGDQogAUUNCSAAKAJcIgIgAiAJaiAB/AoAAAwJCyABIAJB5OnBABDwBwALIAEgAkH06cEAEPAHAAsgAiAFQYTqwQAQ8AcACyACIAVBlOrBABDwBwALIAIgBUGk6sEAEPAHAAsgAiAFQbTqwQAQ8AcACyAEIAxB+NbGABDwBwALIAcgB0EDaiAOQfjXxgAQoAUACyACIAlGDQELIAAgATYCYAsgACAAKAKUASALaiICNgKUASACIAAoAowBRw0KIABBADYClAEgAEEDOgCYAQwKCyAAKAJgIgIgACgCjAEgACgClAFrIgRJBEAgAiIEQYCABEkNCQtBgIAEIAQgBEGAgARPGyICIAAoAmwiAUsEQCACIAFrIgMgACgCZCABa0sEQCASIAEgA0EEQQQQ1gYgACgCbCEBCyAAKAJoIgUgAUECdGohCCADQQJPBH8gA0ECdEEEayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAUgA0ECdGpBBGsFIAgLQQA2AgAgACABQQFqIgE2AmwLAkACQAJAAkACQCAEBEBDAACAP0MAAABAIAAsAJoBQQBOGyEYQQAhAUEAIQMDQCABIAAoAmAiCE8NAiABIAAoAmwiCE8NAyAAKAJoIANqIBggACgCXCABai0AALNDAAB/Q5WUOAIAIANBBGohAyABQQFqIgEgAkcNAAsgACgCbCEBCyAAKAIEIAAoAgggACgClAEgAiAAKAJoIAEQ4wQgACgCYCIBIAJJDRQgAEEANgJgIAEgAmshAyAERQ0CIAEgAkYNBCADRQ0DIAAoAlwiASABIAJqIAP8CgAADAMLIAEgCEHE6cEAEPAHAAsgASAIQdTpwQAQ8AcACyABIAJGDQELIAAgAzYCYAsgACAAKAKUASACaiICNgKUASACIAAoAowBRw0JIABBADYClAEgAEECOgCYAQwJCyAIRQ0BQQEgAC0AmQF0syEYQQAhAUEAIQJBACEDQQAhBAJAAkACQAJAA0AgAUEDaiIFIAAoAmAiB0sEQCABIAUgB0G06cEAEKAFAAsgAyAAKAJsIgdPDQEgACgCaCACaiAAKAJcIAFqIgdBAmotAAAiBkEQdCAHLQAAciAHQQFqLQAAQQh0ciIHQYCAgHhyIAcgBsBBAEgbsiAYlTgCACABQQZqIgcgACgCYCIGSw0CIANBAWoiBSAAKAJsIgZPDQMgACgCaCACakEEaiAAKAJcIAFqIgVBBWotAAAiBkEQdCAFQQNqLQAAciAFQQRqLQAAQQh0ciIFQYCAgHhyIAUgBsBBAEgbsiAYlTgCACABQQlqIgUgACgCYCIGSw0EIANBAmoiByAAKAJsIgZJBEAgACgCaCACakEIaiAAKAJcIAFqIgFBCGotAAAiB0EQdCABQQZqLQAAciABQQdqLQAAQQh0ciIBQYCAgHhyIAEgB8BBAEgbsiAYlTgCACACQQxqIQIgA0EDaiEDIAUhASAEQQFqIgQgC0kNAQwGCwsgByAGQYTpwQAQ8AcACyADIAdB5OjBABDwBwALIAUgByAGQaTpwQAQoAUACyAFIAZB9OjBABDwBwALIAcgBSAGQZTpwQAQoAUACyAIRQ0AIAAoAmghAUEAIQcgACgCCCIJIAAoApQBIgRrIgJBACACIAlNGyECIAAoAmwiDkEDbiEGIAAoAgQgBEEsbGpBCGohAyALIQUDQCACRQ0CIAZFDQMgAyABQQhqIAH9XQIA/VYCAAIiHP1aAggCIAMgHP1bAgAAIAFBDGohASAHQQNqIQcgA0EsaiEDIARBAWohBCACQQFrIQIgBkEBayEGIAVBAWsiBQ0ACwsgACgCYCIBIAsgDGwiAkkNDCAAQQA2AmAgASACayEDIAhFDQIgASACRg0EIANFDQMgACgCXCIBIAEgAmogA/wKAAAMAwsgBCAJQfjWxgAQ8AcACyAHIAdBA2ogDkGI18YAEKAFAAsgASACRg0BCyAAIAM2AmALIAAgACgClAEgC2oiAjYClAEgAiAAKAKMAUcNASAAQQA2ApQBIABBAToAmAEMAQsLIAotAAchAQsgDSATaiENAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCiAKQQdqrUKAgICA8AOENwNAIApBCGoiAEG3mcAAIApBQGsQtwcgABC9CCEBDAYLIABBAToApVMgDUEIaiANIAAoAkgiAiANayIBQQAgASACTRtBB0sbIQ0MAgsgECATckUNAQsgDSAAKAJIIgNJDQELCyANRQ0AIA0gACgCSCICTQRAQQAhASAAQQA2AkggAiANRg0CIAIgDWsiAgRAIAAoAkQiAyADIA1qIAL8CgAACyAAIAI2AkgMAgtBACANIAJBqKPHABCgBQALQQAhAQsgCkHQAGokACABDwtBACAJIAJBqKPHABCgBQALQQAgAiABQaijxwAQoAUAC7deBBl/A30BewF+IwBB0ABrIgkkAAJAAkACQCAALQDEU0UEQCAJQUBrIABB4ABqEPEEIAktAEAEQCAJKAJEIQEMAwsgCS0AQUEBRw0BIABBAToAxFMLIAAoAmgiA0UNACAAQdkAaiETIABBPGohFSAAQbwBaiEWIAlBNGqtQoCAgIAQhCEeIABB+ABqIRcgAEGEAWohEiAAQZABaiEYIABBnAFqIRkDQAJAIAAoAnQiBSAAKALAUyIBayICQQAgAiAFTRtBgIAETwRAIAEhAgwBCyABIAFBgIACayICQQAgASACTxsiCGshAiABIAhGBEAgACACNgLAUwwBCyABIAVNBEAgAgRAIAAoAnAiASABIAhqIAL8CgAACyAAKAJoIQMgACACNgLAUwwBC0EAIAEgBUGoo8cAEKAFAAsCQAJAIAMgDU8EQCAJQUBrIBYgACgCZCANaiADIA1rIAAoAnAgACgCdCACQQYQTCAJIAktAEQiAToAByAJKAJAIRQgCSgCSCIRRQ0CIAAoAsBTIgMgEWoiAiADTyACIAAoAnQiBU1xDQEgAyACIAVB9O7BABCgBQALIA0gAyADQYTvwQAQoAUACyAAKAJwIQUgACgCeCAAKAKAASICayARSQRAIBcgAiARQQFBARDWBiAAKAKAASECCyARBEAgACgCfCACaiADIAVqIBH8CgAACyAAIAIgEWoiCDYCgAEgACAAKALAUyARajYCwFMCQAJAAkAgACgChAFBgICAgHhGBEACQCAIQRBJDQAgCSAAKAJ8IgIoAAAiAzYCFCADQc6OzYIFRwRAIAkgCUEUaq1CgICAgOADhDcDQCAJQRhqIgBB5OfBACAJQUBrELcHIAAQvQghAQwJCyAJIAIoAAQiBDYCJCAEQQRrQXxNBEAgCSAJQSRqrUKAgICAEIQ3A0AgCUEoaiIAQaySwAAgCUFAaxC3ByAAEL0IIQEMCQsgAEEANgKAASACLAAOIQUgAi0ADSELIAItAAwhAyACKAAIIQcgCEEQayIIBEAgCARAIAIgAkEQaiAI/AoAAAsgACAINgKAAQsgCSADNgI0IANBA0sNA0GAgMAAEG4iAkUNAiAAIAU6ALoBIAAgCzoAuQEgAEEAOgC4ASAAQQA2ArQBIAAgAzYCsAEgACAHNgKsASAAIAQ2AqgBIABBADYCpAEgAEKAgICAwAA3ApwBIABCAjcClAEgAEIANwKMASAAIAI2AogBIABBgIAQNgKEASAJIAVBgAFxQQd2OgBIIAkgAzYCRCAJIAc2AkAgACAJQUBrEOoBIAVBAE4NAAJ9IAAtAFhBAkYEQP0MAAAAAAAAgD8AAEDBAAAQQSEdQwAAgD8hGkMAAIA/IRtDAACAPwwBCyAJIBMvAAA7AUAgCSATLQACOgBCIAAqAlAhGiAAKgJMIRsgAP0AAjwhHSAAKgJUCyEcIABBAToAWCAAIBw4AlQgACAaOAJQIAAgGzgCTCAAIB39CwI8IBMgCS8BQDsAACATIAktAEI6AAILIAAoAoQBQYCAgIB4Rg0ECwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AuAFBAWsOCQ0MCwoAAQYEGQILQQkhDkEGIQEgACgCsAEOBAQIBwYCCyAAQQlBByAALAC6AUEAThs6ALgBDBQLIAAoAoABQQZBCSAAKAKoASIDQQFGGyIMbiICIAAoAqwBIAAoArQBayIISQRAIAIiCEGAgARJDRcLQYCABCAIIAhBgIAETxsiC0EDbCICIAAoAowBIgFLBH8gAiABayICIAAoAoQBIAFrSwRAIBIgASACQQRBBBDWBiAAKAKMASEBCyAAKAKIASIFIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAFIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBajYCjAEgACgCqAEFIAMLQQFHDQsgCEUNDUEAIQFBACECQQAhA0EAIQQDQCABQQJqIgcgACgCgAEiBUsEQCABIAcgBUHU6MEAEKAFAAsCfyAAKAJ8IAFqIgVBAWotAABBCHQiBiAFLQAAciIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSEFIAZBgIACcSEKIAZBgPgBcSIGQYD4AUYEQCAKQRB0IgZBgICA/AdyIAVFDQEaIAVBDXQgBnJBgICA/gdyDAELIApBEHQiCiAGQQ10QYCAgPwAcSAFQQ10ckGAgIDAA2pyIAYNABogBSAFZ0EQayIFQf//A3FBCGp0Qf///wNxIApBgICA2ANyIAVBF3RrcgshBQJ/AkACQCAAKAKMASIGIANLBEAgACgCiAEgAmogBTYCACABQQRqIgYgACgCgAEiBUsNASAAKAJ8IAFqIgVBA2otAABBCHQiByAFQQJqLQAAciIFQf//AXFFBEAgBUEQdAwECyAFQf8HcSEFIAdBgIACcSEKIAdBgPgBcSIHQYD4AUYEQCAKQRB0IgdBgICA/AdyIAVFDQQaIAVBDXQgB3JBgICA/gdyDAQLIApBEHQhCiAHRQ0CIAdBDXRBgICA/ABxIAVBDXRyQYCAgMADaiAKcgwDCyADIAZBhOjBABDwBwALIAcgBiAFQcTowQAQoAUACyAFIAVnQRBrIgVB//8DcUEIanRB////A3EgCkGAgIDYA3IgBUEXdGtyCyEFAn8CQAJAIANBAWoiByAAKAKMASIKSQRAIAAoAogBIAJqQQRqIAU2AgAgAUEGaiIFIAAoAoABIgdLDQEgACgCfCABaiIBQQVqLQAAQQh0IgcgAUEEai0AAHIiAUH//wFxRQRAIAFBEHQMBAsgAUH/B3EhASAHQYCAAnEhBiAHQYD4AXEiB0GA+AFGBEAgBkEQdCIHQYCAgPwHciABRQ0EGiABQQ10IAdyQYCAgP4HcgwECyAGQRB0IQYgB0UNAiAHQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBnIMAwsgByAKQZTowQAQ8AcACyAGIAUgB0G06MEAEKAFAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIAZBgICA2ANyIAFBF3RrcgshASADQQJqIgcgACgCjAEiBkkEQCAAKAKIASACakEIaiABNgIAIAJBDGohAiADQQNqIQMgBSEBIARBAWoiBCALSQ0BDA4LCyAHIAZBpOjBABDwBwALQZTtwQAQnQoACyAAKAKAASIBQQJ2IgIgACgCrAEgACgCtAFrIgVJBEAgAiEFIAFBgIAQSQ0VC0GAgAQgBSAFQYCABE8bIgggACgCpAEiAUsEQCAIIAFrIgIgACgCnAEgAWtLBEAgGSABIAJBBEEEENYGIAAoAqQBIQELIAAoAqABIgQgAUECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAEgAmoiAkEBayEBIAQgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AqQBCyAFBEBBACEBQQAhAwJAA0AgAUEEaiICIAAoAoABIgRLBEAgASACIARB5O7BABCgBQALIAAoAqQBIgQgA0sEQCAAKAKgASABaiAAKAJ8IAFqKAAANgIAIAIhASAIIANBAWoiA0YNAgwBCwsgAyAEQdTuwQAQ8AcACyAAKAKkASEBCyAAKAIQIAAoAhQgACgCtAEgCCAAKAKgASABEJ4DAkACQAJAIAAoAoABIgEgCEECdCICTwRAIABBADYCgAEgASACayEDIAVFDQEgASACRg0DIANFDQIgACgCfCIBIAEgAmogA/wKAAAMAgsMHAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAhqIgI2ArQBIAIgACgCrAFHDREgAEEANgK0AUEJIQELIAAgAToAuAEMEAsgACgCgAEiAUEBdiICIAAoAqwBIAAoArQBayIESQRAIAIhBCABQYCACEkNEwtBgIAEIAQgBEGAgARPGyICIAAoApgBIgFLBEAgAiABayIDIAAoApABIAFrSwRAIBggASADQQJBAhDWBiAAKAKYASEBCyAAKAKUASIIIAFBAXRqIQUgA0ECTwR/IANBAXRBAmsiBwRAIAVBACAH/AsACyABIANqIgNBAWshASAIIANBAXRqQQJrBSAFC0EAOwEAIAAgAUEBaiIBNgKYAQsgBARAQQAhA0ECIQECQANAIAAoAoABIgUgAUkEQCABQQJrIAEgBUHE7sEAEKAFAAsgACgCmAEiBSADSwRAIAAoApQBIAFqQQJrIAAoAnwgAWpBAmsvAAA7AQAgAUECaiEBIAIgA0EBaiIDRg0CDAELCyADIAVBtO7BABDwBwALIAAoApgBIQELIAAoAhAgACgCFCAAKAK0ASACIAAoApQBIAEQvAMCQAJAAkAgACgCgAEiAyACQQF0IgFPBEAgAEEANgKAASADIAFrIQUgBEUNASABIANGDQMgBUUNAiAAKAJ8IgMgASADaiAF/AoAAAwCC0EAIAEgA0Goo8cAEKAFAAsgASADRg0BCyAAIAU2AoABCyAAIAAoArQBIAJqIgI2ArQBIAIgACgCrAFHDQ8gAEEANgK0ASAAQQg6ALgBDA8LQS0hDgwBC0EYIQ4LIAAoAoABIA5uIgIgACgCrAEgACgCtAFrIghJBEAgAiIIQYCABEkNEAtBgIAEIAggCEGAgARPGyIMIA5sIgogACgCjAEiAUsEQCAKIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AowBCyAMQQlsIQ8CQCAIBEAgDEHgAGwhCyAMQRhsIQVBACEHQQAhEAJAA0AgDiAQbCIBIAAoAoABIgJPDQMCQAJAAkACQCAQQQlsIgMgACgCjAEiAk8NACAAKAKIASADQQJ0aiAAKAJ8IAFqLQAAs0MAAADDkkMAAAA8lDgCACABQQNqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EDaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKAKAASICTwRAIAQhAQwICyADQQZqIgYgACgCjAEiAk8EQCAGIQMMAQsgACgCiAEgBkECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEBaiIEIAAoAoABIgJPBEAgBCEBDAgLIANBAWoiBiAAKAKMASICTwRAIAYhAwwBCyAAKAKIASAGQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQQRqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EEaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKAKAASICTwRAIAQhAQwICyADQQdqIgYgACgCjAEiAk8EQCAGIQMMAQsgACgCiAEgBkECdGogACgCfCAEai0AALNDAAAAw5JDAAAAPJQ4AgAgAUECaiIEIAAoAoABIgJPBEAgBCEBDAgLIANBAmoiBiAAKAKMASICTwRAIAYhAwwBCyAAKAKIASAGQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACABQQVqIgQgACgCgAEiAk8EQCAEIQEMCAsgA0EFaiIGIAAoAowBIgJPBEAgBiEDDAELIAAoAogBIAZBAnRqIAAoAnwgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKAKAASICTwRAIAQhAQwICyADQQhqIgMgACgCjAEiAk8NACAAKAKIASADQQJ0aiAAKAJ8IARqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKwAUEBSw0BDAILIAMgAkGk7sEAEPAHAAsCQAJAIAFBCWoiAyAAKAKAASIGTw0AIBBBD2wgD2oiAiAAKAKMASIGTw0DIAAoAogBIAJBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDGoiAyAAKAKAASIGTw0AIAJBA2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgCgAEiBk8NACACQQZqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUESaiIDIAAoAoABIgZPDQAgAkEJaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFWoiAyAAKAKAASIGTw0AIAJBDGoiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgCgAEiBk8NACACQQFqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUENaiIDIAAoAoABIgZPDQAgAkEEaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEGoiAyAAKAKAASIGTw0AIAJBB2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgCgAEiBk8NACACQQpqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEWaiIDIAAoAoABIgZPDQAgAkENaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBC2oiAyAAKAKAASIGTw0AIAJBAmoiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgCgAEiBk8NACACQQVqIgQgACgCjAEiBk8EQCAEIQIMBAsgACgCiAEgBEECdGogACgCfCADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUERaiIDIAAoAoABIgZPDQAgAkEIaiIEIAAoAowBIgZPBEAgBCECDAQLIAAoAogBIARBAnRqIAAoAnwgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFGoiAyAAKAKAASIGTw0AIAJBC2oiBCAAKAKMASIGTwRAIAQhAgwECyAAKAKIASAEQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgCgAEiBk8NACACQQ5qIgIgACgCjAEiBk8NAyAAKAKIASACQQJ0aiAAKAJ8IANqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKwAUECTQ0CQQAhBiALIQMMAQsgAyAGQfTtwQAQ8AcACwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkADQCAAKAKAASICIAYgB2oiAUEYaksEQCAFIAZqIgQgACgCjAEiAk8NDyAAKAKIASADaiABIAAoAnxqQRhqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBG2pNDQcgACgCjAEiAiAEQQNqTQ0OIAAoAogBIANqQQxqIAEgACgCfGpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEeak0NBiAAKAKMASICIARBBmpNDQ0gACgCiAEgA2pBGGogASAAKAJ8akEeai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQSFqTQ0FIAAoAowBIgIgBEEJak0NDCAAKAKIASADakEkaiABIAAoAnxqQSFqLQAAs0MAAADDkkMAAAA8lDgCACAAKAKAASICIAFBJGpNDQQgACgCjAEiAiAEQQxqTQ0LIAAoAogBIANqQTBqIAEgACgCfGpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAoABIgIgAUEnak0NAyAAKAKMASICIARBD2pNDQogACgCiAEgA2pBPGogASAAKAJ8akEnai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCgAEiAiABQSpqTQ0CIAAoAowBIgIgBEESak0NCSAAKAKIASADakHIAGogACgCfCAHaiAGakEqai0AALNDAAAAw5JDAAAAPJQ4AgAgA0EEaiEDIAZBAWoiAiEGIAJBA0cNAQwQCwsgAUEYagwGCyABQSpqDAULIAFBJ2oMBAsgAUEkagwDCyABQSFqDAILIAFBHmoMAQsgAUEbagsgAkHU7cEAEPAHAAsgBEESaiEEDAULIARBD2ohBAwECyAEQQxqIQQMAwsgBEEJaiEEDAILIARBBmohBAwBCyAEQQNqIQQLIAQgAkHk7cEAEPAHAAsgByAOaiEHIAVBFWohBSALQdQAaiELIBBBAWoiECAMRg0CDAELCyACIAZBhO7BABDwBwALIAAoAowBIQELAkACQAJAAkACQAJAIAEgD08EQCAAKAKIASEEIAAoArQBIQtBBCECQQAhBgJAIAAoArABIg5BAkkEQEEAIQVBBCEHDAELIAxBGGwiAyABSw0CIAxBD2whBSAEIA9BAnRqIQcgDkECRg0AIAEgCkkgAyAKS3INBSAKIANrIQYgBCADQQJ0aiECCyAAIAsgDCAEIA8gByAFIAIgBhCGBSAAKAKAASICIApJDQIgAEEANgKAASACIAprIQEgCEUNAyACIApGDQYgAUUNBSAAKAJ8IgIgAiAKaiAB/AoAAAwFC0EAIA8gAUHE7cEAEKAFAAsgDyADIAFBtO3BABCgBQALQQAgCiACQaijxwAQoAUACyACIApHDQEMAgsgAyAKIAFBpO3BABCgBQALIAAgATYCgAELIAAgACgCtAEgDGoiAjYCtAEgAiAAKAKsAUcNDSAAQQA2ArQBIABBBjoAuAEMDQsgASACQZTuwQAQ8AcACyAAKAKAAUEEQQMgACgCqAEiA0EDRhsiDm4iAiAAKAKsASAAKAK0AWsiCEkEQCACIghBgIAESQ0PCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBgIAEIAggCEGAgARPGyILQQJ0IgIgACgCjAEiAUsEfyACIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgKMASAAKAKoAQUgAwtBA0cEQCAIRQ0MQQAhAUEAIQJBACEDQQAhBANAIAEgACgCgAEiBU8NAiABQQFqIgcgBU8NAyABQQJqIgcgBU8NBCADIAAoAowBIgVPDQUgACgCfCABaiIFQQFqLQAAIQcgBUECai0AACEGIAAoAogBIAJqIAUtAACzQwAA/0KVQwAAgL+SIho4AgAgA0EBaiIFIAAoAowBIgpPDQYgACgCiAEgAmpBBGogB7NDAAD/QpVDAACAv5IiGzgCACADQQJqIgUgACgCjAEiB08NByAAKAKIASACakEIaiAGs0MAAP9ClUMAAIC/kiIcOAIAIANBA2oiBSAAKAKMASIHTw0IIAAoAogBIAJqQQxqQwAAAABDAACAPyAaIBqUIBsgG5SSIBwgHJSSkyIaIBogGlwbIhpDAAAAACAaQwAAAABeG5E4AgAgAUEDaiEBIAJBEGohAiADQQRqIQMgBEEBaiIEIAtJDQALDAsLIAhFDQtBACECQQAhA0EAIQUDQAJAAkACQAJAIAAoAoABIgEgA0sEQCADQQFqIgcgAU8NASADQQJqIgYgAU8NAiADQQNqIgogAU8NAyAAKAJ8IANqIgFBAmotAAAhDyABQQNqLQAAIQQgAS0AACABQQFqLQAAIQwgCf0MAAAAAAAAAAAAAAAAAAAAAP0LA0AgDEEIdHIiECAPQRB0IARBGHRyciEBQwAAAAAhGgJ9IAkCfwJAIARBBnYiBEEDRwRAIAkgEEH/A3GzQwCA/0OVQ/MENT+UIhqMIBogDEECcRsiGjgCTCAaIBqUIRogAUEKdiEBIARBAkYNAQsgCSABQf8DcbNDAID/Q5VD8wQ1P5QiG4wgGyABQYAEcRsiGzgCSCAaIBsgG5SSIRogAUEKdiIBIARBAUYNARoLIAkgAUH/A3GzQwCA/0OVQ/MENT+UIhuMIBsgAUGABHEbIhs4AkQgGiAbIBuUkiIaIARFDQEaIAFBCnYLIgFB/wNxs0MAgP9DlUPzBDU/lCIbjCAbIAFBgARxGyIbOAJAIBogGyAblJILIRogCUFAayAEQQJ0akMAAIA/IBqTIhqRQwAAAAAgGkMAAAAAXhs4AgAgAyAAKAKMASIBSQ0EIAMgAUHk68EAEPAHAAsgAyABQaTrwQAQ8AcACyAHIAFBtOvBABDwBwALIAYgAUHE68EAEPAHAAsgCiABQdTrwQAQ8AcACyAAKAKIASACaiAJKgJAOAIAIAcgACgCjAEiAU8NCiAAKAKIASACakEEaiAJKgJEOAIAIAYgACgCjAEiAU8NCSAAKAKIASACakEIaiAJKgJIOAIAIAogACgCjAEiAU8NCCAAKAKIASACakEMaiAJKgJMOAIAIAJBEGohAiADQQRqIQMgCyAFQQFqIgVLDQALDAoLIAEgBUGk7MEAEPAHAAsgByAFQbTswQAQ8AcACyAHIAVBxOzBABDwBwALIAMgBUHU7MEAEPAHAAsgBSAKQeTswQAQ8AcACyAFIAdB9OzBABDwBwALIAUgB0GE7cEAEPAHAAsgCiABQZTswQAQ8AcACyAGIAFBhOzBABDwBwALIAcgAUH068EAEPAHAAsgCEUNACAAKAKIASEGQQAhBSAAKAIIIgogACgCtAEiBGsiAkEAIAIgCk0bIQMgACgCjAEiDEECdiECIAAoAgQgBEEYbGpBFGohASALIQcDQCADRQ0CIAJFDQMgCSAG/QACAP0LBEAgAUECaiAJQUBrEM4EIg9BEHY6AAAgASAPOwEAIAZBEGohBiAFQQRqIQUgAUEYaiEBIARBAWohBCADQQFrIQMgAkEBayECIAdBAWsiBw0ACwsgACgCgAEiASALIA5sIgJJDRggAEEANgKAASABIAJrIQMgCEUNAiABIAJGDQQgA0UNAyAAKAJ8IgEgASACaiAD/AoAAAwDCyAEIApBmNTGABDwBwALIAUgBUEEaiAMQYjWxgAQoAUACyABIAJGDQELIAAgAzYCgAELIAAgACgCtAEgC2oiAjYCtAEgAiAAKAKsAUcNCyAAQQA2ArQBIABBBToAuAEMCwsgACgCgAEiAUEDbiICIAAoAqwBIAAoArQBayILSQRAIAIhCyABQYCADEkNDgtBgIAEIAsgC0GAgARPGyIIQQNsIgcgACgCjAEiAUsEQCAHIAFrIgIgACgChAEgAWtLBEAgEiABIAJBBEEEENYGIAAoAowBIQELIAAoAogBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIEBEAgA0EAIAT8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqNgKMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCwRAQQAhA0EAIQEDQCABIAAoAoABIgJPDQIgASAAKAKMASICTw0DIAAoAogBIANqIAAoAnwgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKAKAASIFTw0EIAIgACgCjAEiBU8NBSAAKAKIASADakEEaiAAKAJ8IAFqQQFqLQAAs0MAAIA9lEMAACDBkhCIBDgCACABQQJqIgIgACgCgAEiBU8NBiACIAAoAowBIgVPDQcgACgCiAEgA2pBCGogACgCfCABakECai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgA0EMaiEDIAcgAUEDaiIBRw0ACyAAKAK0ASIDQRhsIQYgACgCiAEhAUEAIQQgCCEFIAAoAowBIgpBA24iDCECA0AgAyAAKAIIIg5PDQggAkUNCSAAKAIEIAZqIBUgAf1dAgAgAUEIaioCACIa/SACIBr9IAMQ+QQgAUEMaiEBIARBA2ohBCAGQRhqIQYgA0EBaiEDIAJBAWshAiAFQQFrIgUNAAsLIAAoAoABIgIgB0kNCCAAQQA2AoABIAIgB2shASALRQ0JIAIgB0YNCyABRQ0KIAAoAnwiAiACIAdqIAH8CgAADAoLIAEgAkHE6sEAEPAHAAsgASACQdTqwQAQ8AcACyACIAVB5OrBABDwBwALIAIgBUH06sEAEPAHAAsgAiAFQYTrwQAQ8AcACyACIAVBlOvBABDwBwALIAMgDkGY1MYAEPAHAAsgBCAMQQNsQQNqIApB6NbGABCgBQALQQAgByACQaijxwAQoAUACyACIAdGDQELIAAgATYCgAELIAAgACgCtAEgCGoiAjYCtAEgAiAAKAKsAUcNCiAAQQA2ArQBIABBBDoAuAEMCgsgACgCgAEiAUEDbiICIAAoAqwBIAAoArQBayIFSQRAIAIhBSABQYCADEkNDQtBgIAEIAUgBUGAgARPGyIEQQNsIgIgACgCjAEiAUsEQCACIAFrIgMgACgChAEgAWtLBEAgEiABIANBBEEEENYGIAAoAowBIQELIAAoAogBIgcgAUECdGohCCADQQJPBH8gA0ECdEEEayILBEAgCEEAIAv8CwALIAEgA2oiA0EBayEBIAcgA0ECdGpBBGsFIAgLQQA2AgAgACABQQFqIgE2AowBCwJAAkACQAJAAkACQAJAAkACQCAFBEBBACEDQQAhAQNAIAEgACgCgAEiCE8NAiABIAAoAowBIghPDQMgACgCiAEgA2ogACgCfCABai0AALNDAAB/Q5VDAAAAv5JDjLjwP5RDAAAAP5I4AgAgAUEBaiIIIAAoAoABIgdPDQQgCCAAKAKMASIHTw0FIAAoAogBIANqQQRqIAAoAnwgAWpBAWotAACzQwAAf0OVQwAAAL+SQ4y48D+UQwAAAD+SOAIAIAFBAmoiCCAAKAKAASIHTw0GIAggACgCjAEiB08NByAAKAKIASADakEIaiAAKAJ8IAFqQQJqLQAAs0MAAH9DlUMAAAC/kkOMuPA/lEMAAAA/kjgCACADQQxqIQMgAiABQQNqIgFHDQALIAAoAowBIQELIAAgACgCtAEgBCAAKAKIASABELAEIAAoAoABIgEgAkkNGiAAQQA2AoABIAEgAmshAyAFRQ0GIAEgAkYNCCADRQ0HIAAoAnwiASABIAJqIAP8CgAADAcLIAEgCEHk6cEAEPAHAAsgASAIQfTpwQAQ8AcACyAIIAdBhOrBABDwBwALIAggB0GU6sEAEPAHAAsgCCAHQaTqwQAQ8AcACyAIIAdBtOrBABDwBwALIAEgAkYNAQsgACADNgKAAQsgACAAKAK0ASAEaiICNgK0ASACIAAoAqwBRw0JIABBADYCtAEgAEEDOgC4AQwJCyAAKAKAASICIAAoAqwBIAAoArQBayIESQRAIAIiBEGAgARJDQwLQYCABCAEIARBgIAETxsiAiAAKAKMASIBSwRAIAIgAWsiAyAAKAKEASABa0sEQCASIAEgA0EEQQQQ1gYgACgCjAEhAQsgACgCiAEiCCABQQJ0aiEFIANBAk8EfyADQQJ0QQRrIgcEQCAFQQAgB/wLAAsgASADaiIDQQFrIQEgCCADQQJ0akEEawUgBQtBADYCACAAIAFBAWoiATYCjAELAkACQAJAAkACQCAEBEBDAACAP0MAAABAIAAsALoBQQBOGyEaQQAhAUEAIQMDQCABIAAoAoABIgVPDQIgASAAKAKMASIFTw0DIAAoAogBIANqIBogACgCfCABai0AALNDAAB/Q5WUOAIAIANBBGohAyABQQFqIgEgAkcNAAsgACgCjAEhAQsgACgCBCAAKAIIIAAoArQBIAIgACgCiAEgARDiBCAAKAKAASIBIAJJDRUgAEEANgKAASABIAJrIQMgBEUNAiABIAJGDQQgA0UNAyAAKAJ8IgEgASACaiAD/AoAAAwDCyABIAVBxOnBABDwBwALIAEgBUHU6cEAEPAHAAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAJqIgI2ArQBIAIgACgCrAFHDQggAEEANgK0ASAAQQI6ALgBDAgLIAhFDQFBASAALQC5AXSzIRpBACEBQQAhAkEAIQNBACEEAkACQAJAAkADQCABQQNqIgUgACgCgAEiB0sEQCABIAUgB0G06cEAEKAFAAsgAyAAKAKMASIHTw0BIAAoAogBIAJqIAAoAnwgAWoiB0ECai0AACIGQRB0IActAAByIAdBAWotAABBCHRyIgdBgICAeHIgByAGwEEASBuyIBqVOAIAIAFBBmoiByAAKAKAASIGSw0CIANBAWoiBSAAKAKMASIGTw0DIAAoAogBIAJqQQRqIAAoAnwgAWoiBUEFai0AACIGQRB0IAVBA2otAAByIAVBBGotAABBCHRyIgVBgICAeHIgBSAGwEEASBuyIBqVOAIAIAFBCWoiBSAAKAKAASIGSw0EIANBAmoiByAAKAKMASIGSQRAIAAoAogBIAJqQQhqIAAoAnwgAWoiAUEIai0AACIHQRB0IAFBBmotAAByIAFBB2otAABBCHRyIgFBgICAeHIgASAHwEEASBuyIBqVOAIAIAJBDGohAiADQQNqIQMgBSEBIARBAWoiBCALSQ0BDAYLCyAHIAZBhOnBABDwBwALIAMgB0Hk6MEAEPAHAAsgBSAHIAZBpOnBABCgBQALIAUgBkH06MEAEPAHAAsgByAFIAZBlOnBABCgBQALIAhFDQAgACgCiAEhAUEAIQUgACgCCCIKIAAoArQBIgRrIgJBACACIApNGyECIAAoAowBIg5BA24hBiAAKAIEIARBGGxqIQMgCyEHA0AgAkUNAiAGRQ0DIAMgAUEIaiAB/V0CAP1WAgACIh39WgIIAiADIB39WwIAACABQQxqIQEgBUEDaiEFIANBGGohAyAEQQFqIQQgAkEBayECIAZBAWshBiAHQQFrIgcNAAsLIAAoAoABIgEgCyAMbCICSQ0NIABBADYCgAEgASACayEDIAhFDQIgASACRg0EIANFDQMgACgCfCIBIAEgAmogA/wKAAAMAwsgBCAKQZjUxgAQ8AcACyAFIAVBA2ogDkGo1MYAEKAFAAsgASACRg0BCyAAIAM2AoABCyAAIAAoArQBIAtqIgI2ArQBIAIgACgCrAFHDQAgAEEANgK0ASAAQQE6ALgBDAALAAtBBEGAgMAAEJoJAAsgCSAeNwM4IAlBQGsiAEH0l8AAIAlBOGoQtwcgABDCCCEBDAQLIAktAAchAQsgDSAUaiENAkACQAJAAkACQCABQf8BcQ4DAQIDAAsgCSAJQQdqrUKAgICA8AOENwNAIAlBCGoiAEG3mcAAIAlBQGsQtwcgABC9CCEBDAYLIABBAToAxVMgDUEIaiANIAAoAmgiAiANayIBQQAgASACTRtBB0sbIQ0MAgsgESAUckUNAQsgDSAAKAJoIgNJDQELCyANRQ0AIA0gACgCaCICTQRAQQAhASAAQQA2AmggAiANRg0CIAIgDWsiAgRAIAAoAmQiAyADIA1qIAL8CgAACyAAIAI2AmgMAgtBACANIAJBqKPHABCgBQALQQAhAQsgCUHQAGokACABDwtBACACIAFBqKPHABCgBQALqGcDEn8HfgF7IwBBsNUAayIDJAAgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA/BIIAKtIRUCQAJAAkACQAJAAkACQAJAAkBB6LjFACkDACIYQv8Bg0IEUgRAQhAhFgwBC0IQIRYDQCACIBkgFSAVIBlWG6ciBGsiBkKAwAAgFiAWQoDAAFobpyIFIAUgBksbIgYEQCADQRhqIAEgBGogBvwKAAALIAIgBEYNAkEQQhAgFyAXQhBaG6ciBWsiBCAGIAQgBkkbIgQEQCADQfDIAGogBWogA0EYaiAE/AoAAAsgFyAErXwhFyAGIAxqIQwgGSAGrSIYfCEZIBYgGH0iFlBFDQALDAELA0AgAiAZIBUgFSAZVhunIgRrIgZCgMAAIBYgFkKAwABaG6ciBSAFIAZLGyIGBEAgA0EYaiABIARqIAb8CgAACyACIARGDQFBEEIQIBcgF0IQWhunIgVrIgQgBiAEIAZJIggbIgQEQCADQfDIAGogBWogA0EYaiAE/AoAAAsgCEUEQCAZIAatIhp8IRkgBiAMaiEMIBcgBK18IRcgFiAafSIWUA0CDAELCyAYEMQIIQEgAEGAgICAeDYCACAAIAE2AgQMAQtB3L/IACgCACIGQQBIDQECQAJAIAYgBkEBaiINTARAQdy/yAAgDTYCACAMQRFPBEBBACAMQRBB/LfGABCgBQALA0AgCygC1OtDIQUgCygC0OtDIQYCQCALKALc60MiCEUEQCAFIAxLDQEgBiADQfDIAGogBRD3B0UNBAwBCyAFIAxLDQAgCCALKALY60MiBGohDiADQfDIAGohCANAIAVFDQQgBUEBayEFQfi3xgAgBCAERSAEIA5GciIQGyEHIAgtAAAhCSAGLQAAIQogBkEBaiEGIAhBAWohCEEAIARBAWogEBshBCAKIAkgBy0AAHFGDQALCyALQRRqIgtBuANHDQALQdy/yAAgDUEBazYCACANQQBKBEBBAyEHQQQhAUEDIQgMAwtBnJPHAEHNAEHEk8cAEJMIAAtBpIPHAEEcQcCDxwAQlAgAC0Hcv8gAIA1BAWs2AgAgDUEATARAQZyTxwBBzQBBxJPHABCTCAALAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAtB4OvDAGotAAAiCg4EAAUFAQULQYCAARBuIglFDQUgCUEEay0AAEEDcQRAIAlBAEGAgAH8CwALQYAQEG4iBEUNBiAEQQRrLQAAQQNxBEAgBEEAQYAQ/AsACyADQQA7ASQgA0EANgIgQagHEG4iBkUNByAGQQBB2Ab8CwAgBkEANgKUByAGQQA2AogHIAZBADoAhAcgBkEANgKAByAGIAQ2AvwGIAYgCTYC+AYgBkICNwPwBiAGQgA3A+gGIAZCgICAgCA3A+AGIAZBATYC3AYgBkExNgLYBiAGQQA6AKYHIAYgAykDGDcDmAcgBiADKQEeNwGeB0GAARBuIglFDQggA0IANwLkAiAD/QwAAAAAAAAAAAAAAAAAAAAA/QsC1AIgA0ECNgK4RSADQQA2ArBFIANBvMUAaiADQRhqIgRB1AL8CgAAIANBgAI7AMNIIANBATsBwEggA0KAgICAgiA3A7hIIANCADcDsEggA0EAOgCoSCADQYACOwGkSCADIAY2AqBIIANBADoAnEggA0EANgKYSCADIAk2ApRIIANBgAE2ApBIIAMgATYCyEggAyACNgLMSCADQgA3A9BIIANBADYC2EggA0EAOgDCSCADQeDIAGogA0GwxQBqIgIQuAQgAy0A4EhBKEcNAyADQRA2AthIIANB2NEAaiIBIAJBsAP8CgAAIAQgARC4BCADLQAYIgVBKEcEQCADIAMtABs6ANZRIAMgAy8AGTsB1FEgAygCHCEEIAMpAiAhFSABEJ4BDBkLQYCACCEEAkAgAygCHCIBLQC+AkEDdCICKQOQnEggATUCtAIgATEAvwJ+IhV+IhZC8P////8AVg0AIBZCB3xCA4inQQFqrUGAASABKAK4AiIBIAFBgAFPG61+IhZCIIinDQAgFqciBUH/AXEEQCAFIAVBgH5xQYACaiIFSw0BC0GAgAggBSAFQYCACE8bIQQLQQEhBUH/////ByEGAkAgAikDyJxIIBV+IhVC8P////8AVg0AIBVCB3xCA4inQQFqIgFB/////wNLDQAgAUECdCEIIAFBD3EEQCAIIAhBQHFBQGsiCEsNAQtBgIAIIAggCEGAgAhNGyEGCyAEBEAgBBBuIgVFDQoLIAMgBjYCuAQgA0EANgK0BCADQgA3AqwEIANBADYCkAQgAyAFNgKMBCADIAQ2AogEIANCgICAgICAgICAfzcCnAQgA0KAgICAEDcClAQgA0J/NwOABCADQRhqIgEgA0HY0QBqQagD/AoAACADQQA2AsgDIANCADcDwAMgA0IANwPwAyADQgA3APUDIANBgAI7AdwEIANCADcD0AQgA0KAgICAEDcDyAQgA0EANgLABCADIAMoAoBVNgLYBCADQQI2AtwDIAMoAiBBAkYNCkEnIQUgAy0A3gJBA3QpA4CdSCADNQLUAiIVIAMxAN8Cfn5C8P////8AVg0XIAMoAtgCIQQgA0EQaiABEJUFIAMtABBBA3QpA7idSCADMQARIBV+fiIVQvD/////AFYNFyAErSAVQgd8QgOIfiIWQiCIpyAWp0EASHINFyADQZjVAGogARCqASADLQCYVSIFQShHBEAgAyADLQCbVToA1lEgAyADLwCZVTsB1FEgAygCnFUhBCADKQKgVSEVDBgLIAMoAiAiBEECRg0LIAMgAygCTEEBRgR/IAMoAlAgAy0A0QJBAkZqBUEBCzYC1AQgAyADLwAdOwHUUSADIAMtAB86ANZRIAMtABwhBSADKQIkIRUgAygCLCEBIAMoAjAhCSADLQA0IQcgAy0ANSEIIAMtADYhCiADLQA3IQwgAygCOCECIAMtADwhCyADLQA9IQ8gAy0APiENIAMtAD8hDiADKQNAIRYgAygCGCEGIANBuM0AaiIQIANByABqQZgE/AoAACAGQQJGDRggAyADLQDWUToA90ggAyADLwHUUTsA9UggA0GgyQBqIBBBmAT8CgAAIAMgFjcDmEkgAyAOOgCXSSADIA06AJZJIAMgDzoAlUkgAyALOgCUSSADIAI2ApBJIAMgDDoAj0kgAyAKOgCOSSADIAg6AI1JIAMgBzoAjEkgAyAJNgKISSADIAE2AoRJIAMgFTcC/EggAyAENgL4SCADIAU6APRIIAMgBjYC8EggA0EIaiADQfDIAGoQlQVBHCEKIAMtAAkhCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADLQAIQQFrDgYtASUCLQMAC0EAIQhBASEKIAtoQQFrDgQEAxAPJAtBAiEIQQMhCiALaEEBaw4EBAUPBiMLQQEhCEECIQogC2hBAWsOBAYHDggiC0EDIQhBBCEKIAtoQQFrDgQICQ0KIQtBCSEKDCALQQUhCgwfC0EHIQoMHgtBCyEKDB0LQQYhCAwIC0EGIQoMGwtBCiEKDBoLQQUhCAwFC0EIIQoMGAtBDCEKDBcLQQchCAwCCyADAn5BqMTIAC0AAARAQaDEyAApAwAhFkGYxMgAKQMADAELIANBuM0AahDcBkGoxMgAQQE6AABBoMTIACADKQPATSIWNwMAIAMpA7hNCyIXNwOAAUEAIQRBmMTIACAXQgF8NwMAIANCADcDaCADIAE2AmAgA0ECOgBdIANBgICAgHg2AiAgA0IANwMYIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwIsIANBADYCPCADQQE6AEAgA0EBNgKoASAD/Qz/////AAAAAAAAAAAAAAAA/QsDmAEgA0IANwOQASADQQA6AKwBIAMgFjcDiAEgA0G4oscA/QADAP0LA3AgAyACNgJkIAJBBE8EQCABKAAAIQRCBCEWDA0LIANCBCAVQeCVxwApAwAiGUL/AYNCBFEiBhsiFjcDaCAGDQwgGUIIiCEXIBmnDA0LQQQhCAsgAykD+EghFSADLQD3SCEBIAMtAPZIIQcgAy0A9UghCSADQZjAAGoiCyADQYDJAGpBuAT8CgAAQfAEEG4iBEUNCSAEIBU3AyggBCABOgAnIAQgBzoAJiAEIAk6ACUgBCAFOgAkIAQgBjYCICAEQQA2AhggBEIANwMQIARCgICAgAI3AwggBEIBNwMAIARBMGogC0G4BPwKAAAgBCAIOgDoBEGMuMYAIQYMGAsgA0EYaiADQeDIAGoQkQQgAykDICIWQiCIpyEFIAMpAzghFSAD/VwCNCEcIAMoAjAhAiADLQAvIQ8gAy0ALiELIAMtAC0hCiADLQAsIQggAygCKCEMIAMoAhwhBCADKAIYIQEgFqchBiADQbDFAGoQngEMFQtBBCEBQgAhFUEAIQtBACEIIApBCHQMFQtBgIABELEKAAtBgBAQsQoAC0GoBxCxCgALQQFBgAEQmgkAC0EBIAQQmgkAC0HYr8YAEJkKAAtB2K/GABCZCgALQfAEELEKAAsgA0G4zQBqQQFyIAQQsQQgAyADLQC7TToA2lEgAyADLwC5TTsB2FEgAyADLwG8TTsA21FBBCEEIAMCfgJAIAIgFiAVIBUgFlYbpyIGa0EETwRAQgAhFyABIAZqNQAAIhlCDH0iGEIAIBggGVgbIRkMAQtB4JXHACkDACIYQgiIIRcgGKchBEIAIRkgFSAYQv8Bg0IEUg0BGgsgFkIEfAsiFjcDaCAEQf8BcSIGQQRGDQEgF6dBCHQgBnILNgCbVSADIBdCGIg+AJ9VQQAhBUETIQQMAQsCQAJAAkACQAJAAkACQAJAAkAgAy0A2FFFBEBBBCEEAkACQCACIBYgFSAVIBZWG6ciBmtBBE8EQCABIAZqKAAAIQVCACEXDAELQQAhBUHglccAKQMAIhhCCIghFyAYpyEEIBhC/wGDQgRSDQELIBZCBHwhFQsgAyAVNwNoAkACQCAEQf8BcUEERwRAIANBmNUAakEBciEGIAMgBK1C/wGDIBdCCIaENwK8TSADIAMoAb5NNgCdVSADIAMvAcJNOwChVSADKAG6TSEEQQAhBQwBCyADQbjNAGpBAXIgBRCxBEHSkpmyBCEEIANBmNUAaiEGQQIhBQJAAkACQAJAAkACQAJAAkACQAJAAkAgAy0AuU1BAWsOCwkKAAECAwQFBgcICwtB1qDh4QQhBAwKC0HWoOHBBSEEDAkLQcGcpeoEIQQMCAtBwZy1sgQhBAwHC0HBmMHCBCEEDAYLQcmGjYIFIQQMBQtBxbClsgQhBAwEC0HYmsGCAiEEDAMLIAMoAbpNIQQMAgsgA0G4zQBqIANB4ABqIgYQ5gMgAygCuE0NCyADQfAAaiEJIAMgAy0AzE06AORIIAMgAygCyE0iATYC4EggAykDwE0hGEHSkpmyBCEFIAMpA2ghFwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4LAAkKCwECAwQFBgcIC0HXiomCBSEFDAcLQcGcpeoEIQUMBgtBwZy1sgQhBQwFC0HBmMHCBCEFDAQLQcmGjYIFIQUMAwtBxbClsgQhBQwCC0HYmsGCAiEFDAELIAMoAOFIIQULIAMgBTYCmFVBBCEFQRMhBAwQCyADQbjNAGohAUEAIQVCACEZIAYoAgQiBK0hFQJAAkAgBEL/////DyAGKQMIIhYgFkL/////D1obp2siB0EAIAQgB08bQQNPBEAgBigCACAWIBUgFSAWVhunaiIELwAAIARBAmotAABBEHRyIQVBBCEEDAELQeCVxwApAwAiGkIIiCEZIBqnIQQgGkL/AYNCBFINAQsgFkIDfCEVCyAGIBU3AwgCQCAEQf8BcUEERwRAIAEgBK1C/wGDIBlCCIaENwIADAELIAFBBDoAACABIAU2AgQLIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwQCyADKAK8TUEBcUUEQCADKAJkIgGtIRYgAUL/////DyADKQNoIhUgFUL/////D1obp2siBEEAIAEgBE8bQQJNBEBB4JXHADEAACIXpyEBAkAgF0IEUQRAIAMgFUIDfDcDaCABQQRGDQEMEAsgAyAWNwNoIAFBBEcNDwtBACEEDA0LIAMgFUIDfDcDaCADKAJgIBUgFiAVIBZUG6dqIgEvAAAgAUECai0AAEEQdHIiBEGdg6gBRw0MIANBuM0AaiAGEKQGIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwRCyADLwG6TSEBIANBuM0AaiAGEKQGIAMtALhNQQRHBEAgAyADKQK4TTcAm1VBACEFQRMhBAwRCyADIAMvAbpNQf//AHEiBjYCoAEgAyABQf//AHEiATYCnAFBFyEFIAFFIAZFcg0JIANBAjoA2FEgA0G4zQBqIAkgA0HY0QBqIBcgFyAYfBDwAiADQQE6AKoBIANBAjoAXQwRC0ETEG4iAUUNCiABQeHBxQAoAAA2AA8gAUHSwcUA/QAAAP0LAAAgAyABNgCfVSADQRM2AJtVQRghBUETIQQMDwsgA0G4zQBqIAYQzQYgAy0AuE1BBEcEQCADIAMpArhNNwCbVUEAIQVBEyEEDA8LIAMtALlNIgFBL0cNBSADQbjNAGogBhClBiADLQC4TUEERwRAIAMgAykCuE03AJtVQQAhBUETIQQMDwsgAygCvE0iAUEddiIGRQRAIAMgAUEBakH//wBxNgKcASADIAFBDnZBAWpB//8AcTYCoAEgA0EDOgDYUSADQbjNAGogCSADQdjRAGogFyAXIBh8EPACIAMgAUH/////AEs6AKsBIANBAzoAXQwQCyADIAY6AJhVQQwhBUETIQQMDgsgAykD0E0hGyADQbjNAGohAUIAIRZBACEHIwBBEGshCCAGAn4CQCAGKAIEIgogBikDCCIYIAqtIhUgFSAYVhunIgRHBEAgBigCACAEai0AACEHQQQhBAwBC0HglccAKQMAIhpCCIghFiAapyEEIBUgGkL/AYNCBFINARoLIBhCAXwLIhg3AwhBBCEFAkACQCAEQf8BcUEERwRAIAEgFjwABSABIAQ6AAQgAUEAOgAAIAFBCmogFkIoiD0BACABIBZCCIg+AQYMAQtCACEWIAYCfiAKIBggFSAVIBhWG6drQQJNBEBB4JXHACkDACIaQgiIIRYgGqchBSAVIBpC/wGDQgRSDQEaCyAYQgN8CyIYNwMIIAVB/wFxQQRHBEAgCCAFrUL/AYMgFkIIhoQiFTcDACABIAgpAgQ3AgggASAVPgIEIAFBADoAAAwBCyAGAn4CQCAKIBggFSAVIBhWG6ciBGtBA08EQCAGKAIAIARqIgQvAAAgBC0AAkEQdHJBAWohBUEEIQRCACEWDAELQeCVxwApAwAiGkIIiCEWIBqnIQRBASEFIBUgGkL/AYNCBFINARoLIBhCA3wLIhg3AwggBEH/AXFBBEcEQCAIIAStQv8BgyAWQgiGhCIVNwMAIAEgCCkCBDcCCCABIBU+AgQgAUEAOgAADAELAkACQCAKIBggFSAVIBhWG6ciBGtBA08EQCAGKAIAIARqIgQvAAAgBC0AAkEQdHJBAWohBEEEIQpCACEWDAELQeCVxwApAwAiGkIIiCEWIBqnIQpBASEEIBpC/wGDQgRSDQELIBhCA3whFQsgBiAVNwMIIApB/wFxQQRHBEAgCCAKrUL/AYMgFkIIhoQiFTcDACABIAgpAgQ3AgggASAVPgIEIAFBADoAAAwBCyAFrSAErX5CIIhQBEAgAUEAOgAMIAFBADYCCCABIAQ2AgQgASAFNgIAIAEgB0ECdkEBcToAFCABIAdBA3ZBAXE6ABMgASAHQQV2QQFxOgASIAEgB0EEdkEBcToAESABIAdBAXZBAXE6ABUMAgsgAUEJOgAACyABQQI6ABULIAMoAsRNIQQgAygCwE0hCiADKAK4TSEBIAMtAM1NIgdBAkYNAiADIAMoArxNIhA2AqABIAMgATYCnAEgAyAXIBt8IhU3A2ggAy8Bzk0hESADLQDMTSENIAMtAMtNIQIgAy0Ayk0hEiADLQDJTSEPIAMtAMhNIRMgFSAVIBl8IhlaDQUgA0G8xQBqIQUCQAJAAn8CQAJAAkADQCADQdjRAGogBhDmAyADKALYUQRAIAMtANxRIgUNBiADLQDgUUEBaw4DAgMEBgsgFUIIfCEXIAMpA/BRIRUCQAJAAkAgAy0A6FEiCEELRwRAIAMpA+BRIRYgAyADKADpUTYAuU0gAyAIOgC4TSADQbDFAGogCSADQbjNAGoiCxCdBCADLQC8RUEMRwRAIAMoArhFIQwgAykDsEUhGCADIAUtAAQ6ALxNIAMgBSgCADYCuE0gAyAWIBd8NwPITSADIBc3A8BNIAwgGCALENIFCyAIQQZGDQELIBVCAFMgAykDaCIYIBV8IhYgGFRzRQ0BIANCgoCAgIDd5wg3AJtVQQAhBQwWCyADIAMoAqQBQQFqNgKkASAWQhhUBEBBGyEFDBYLIAMpA2giFkJ0WgRAIANCgoCAgIDd5wg3AJtVQQAhBQwWCyADIBZCDHw3A2ggA0G4zQBqIAYQpQYgAy0AuE1BBEcEQCADIAMpArhNNwCbVUEAIQUMFgsgAyADKQOQASADNQK8TUL///8Hg3w3A5ABIAMtAKoBRQRAIANBuM0AaiAGEOYDIAMoArhNDRUCQAJAIAMtAMhNQQJrDgYAAQEBAQABCyADQQE6AKoBCyAVQhh9IhZCAFMgFiADKQNoIhh8IhYgGFRzRQ0BIANCgoCAgIDd5wg3AJtVQQAhBQwWCyAVQhB9IhZCAFMgFiADKQNoIhh8IhYgGFRzDQELIAMgFjcDaCAVIBd8IhUgGVQNAQwNCwsgA0KCgICAgN3nCDcAm1VBACEFDBILIAMtAOFRDAILIAMoAuRRLQAIDAELIAMoAuRRLQAIC0H/AXFBJUYNAQsgAyADKADkUTYAn1UgAyADKQDdUTcDmFUgAygC6FEhBAwNCyADIAMpA+BRNwO4TSADQbjNAGoQ7AUMBQtB1qDhgQIhBAsgBiAENgAADAQLIAMgCjYAn1UgAyADKAK8TTYAm1UgAyABQRh2OgCaVSADIAFBCHY7AZhVIAEhBQwJCyADQdKSmbIENgKYVUEEIQVBEyEEDAkLIAMgAToAmFVBCyEFQRMhBAwICyADIAMtAKoBBH9BAQUgCUG5jMYAEMYECzoAqgEgB0EBcUUNAUEDIQUgCUH8jMYAEMYERQ0AIAlB5IzGABDGBA0BC0ETIQQMBgsCQCACQQFxRQ0AIAlBgY3GABDGBA0AQQMhBUETIQQMBgsCQCANQQFxRQ0AIAlBho3GABDGBA0AQQMhBUETIQQMBgsCQAJAAkACQAJAAkAgB0EBcUUEQCAJQbmMxgAQxgQgCUG0jMYAEMYERw0BQQMhBUETIQQMDAsgA0EFOgC4TSADQdjRAGogA0EYaiADQbjNAGpBBhD4BAJAIAMtANhRIgVBGmsOBAUEBAAECyADKALcUUGAgICAeEYEQEEDIQUMCwsgAyADQdzRAGoiCCgCCCIFNgLITSADIAgpAgA3A8BNAkACQAJAIAVBBE8EQCADQgQ3A7hNIAMoAsRNKAAAIQoMAQsgA0IEIAWtQeCVxwApAwAiFUL/AYMiFkIEURs3A7hNIBZCBFINAQsgA0GwxQBqIQVBACEOQgAhFyADQbjNAGoiCCgCECILrSEVAkACQCALQv////8PIAgpAwAiFiAWQv////8PWhunayIUQQAgCyAUTxtBAk8EQCAIKAIMIBYgFSAVIBZWG6dqLwAAIQ5BBCELDAELQeCVxwApAwAiGUIIiCEXIBmnIQsgGUL/AYNCBFINAQsgFkICfCEVCyAIIBU3AwACQCALQf8BcUEERwRAIAUgC61C/wGDIBdCCIaENwIADAELIAVBBDoAACAFIA47AQILIAMtALBFQQRGDQEgAykDsEUhFQsgAyAVNwCbVSADKALATSIEBEAgAygCxE0gBEEBEMEHC0EAIQUMCwsgAyADLwGyRTsBqAEgCUHkjMYAELYEIgVFDQEgAyAFKQMAQgh9NwMYIAMoAsBNIgVFDQAgAygCxE0gBUEBEMEHCyAJQeSMxgAQtgQiBQ0BDAQLQYyNxgAQmQoACyAFKQMIIRYgAyAFKQMAIhVCEHw3A2ggA0G4zQBqIgggBhDmAwJAIAMoArhNRQRAIANBxM0AaiEFIAMgAy0AzE06AIxVIAMgAygCyE02AohVIAMpA9BNIAMpA8BNIRggCCAJIANBiNUAahCdBAJAIAMtAMRNQQxHBEAgAyAFKAIAIgs2AthRIAMgBS0ABCIMOgDcUSADKALATSADKQO4TSADIAw6ALxNIAMgCzYCuE0gAyAYIBVCGHwiGXw3A8hNIAMgGTcDwE0gCBDSBQwBCyAVQhh8IRkLIBl8Qgh8IhUgFlYNBCADQbjNAGogBhDmAyADKAK4TUEBRw0BCwwHCyADIAMtAMxNOgCMVSADIAMoAshNNgKIVSADKQPATSEWIANBuM0AaiIGIAkgA0GI1QBqEJ0EIAMtAMRNQQxGDQIgAyAFKAIAIgk2AthRIAMgBS0ABCIFOgDcUSADKALATSADKQO4TSADIAU6ALxNIAMgCTYCuE0gAyAVNwPATSADIBUgFnw3A8hNIAYQ0gUMAgsgAyADKADgUTYAn1UgAyADKQDZUTcDmFUgAygC5FEhBAwGCyADQdjRAGoQuwRBGyEFDAULIAMgETsBXiADIAc6AF0gAyANOgBcIAMgAjoAWyADIBI6AFogAyAPOgBZIAMgEzoAWCADIAQ2AlQgAyAKNgJQIAMgEDYCTCADIAE2AkggAyAPOgCrAQwGC0EBQRMQmgkACyADIAQ7AZhVIAMgBEEQdjoAmlVBESEFQRMhBAwDCyADQdSVxwA2AJ9VIANBAjYAm1VBACEFQRMhBAwCCyADIAMtAL9NOgCaVSADIAMvAL1NOwGYVSADIAMpA8BNNwCbVSADKALITSEEIAMtALxNIQULIAVB/wFxQR1GDQELIAMgAy0AmlU6AK5VIAMgAy8BmFU7AaxVIAMvAJtVIQEgAy8AnVUhCCADKACfVSEGIAMoAiAiAkEASgRAIAMoAiQiCUEEaygCACIHQXhxIgxBBEEIIAdBA3EiBxsgAmpJDQ8gB0EAIAwgAkEnaksbDRAgCRCiAgsgAygCdCICRQ0BIAIgAkEYbCIJakEhaiICRQ0BIAMoAnAgCWsiCUEcaygCACIHQXhxIgxBBEEIIAdBA3EiBxsgAmpJDQ4gB0EAIAwgAkEnaksbRQRAIAlBGGsQogIMAgsMDwsgAyADLwAlOwGsVSADIAMtACc6AK5VIAMpAxghFiADLQAkIQUgA/0AAzAhHCADKAIwIQQgAygCQCEIIAMtAEQhBiADLQBFIQcgAy0ARiEJIAMtAEchCiADKQNIIRcgAykDKCEVIAMoAiAhASADQfDIAGogA0HQAGpB4AD8CgAAIAFBgYCAgHhHDQEgFUIgiKchBiAVQhCIpyEIIBWnIQELIAGtQv//A4MgCK1C//8Dg0IQhiAGrUIghoSEIRUgBUH/AXEEf0EQEG4iCEUNAiAIIAU6AAAgCCADLwGsVTsAASAIIAMtAK5VOgADIAggBDYCDCAIIBU3AgRCgAYhFUEABUEFCyEBIAhBGHYhDyAIQRB2IQsgCEEIdiEKIBVCIIinIQlB1O/DACECIBWnDAcLIANB0MQAaiILIANB8MgAakHgAPwKAABBoAEQbiIERQ0BIAQgBToADCAEIAE2AgggBCAWNwMAIAQgAy8BrFU7AA0gBCADLQCuVToADyAEIBc3AzAgBCAKOgAvIAQgCToALiAEIAc6AC0gBCAGOgAsIAQgCDYCKCAEIBz9CwMYIAQgFTcDECAEQThqIAtB4AD8CgAAIARBCDoAmAFBxLjGACEGDAcLQRAQsQoAC0GgARCxCgALIANB8MgAahDTA0EEIQhBACEEQQQhAQwCCyADQRhqENMDCyADIAU6AIhVIAMgAy8B1FE7AIlVIAMgAy0A1lE6AItVIAMgFTcCkFUgAyAENgKMVSADQRhqIANBiNUAahCRBCADKQM4IRUgA/1cAjQhHCADKAIwIQIgAy0ALyEPIAMtAC4hCyADLQAtIQogAy0ALCEIIAMoAighDCADKAIkIQUgAygCICEGIAMoAhwhBCADKAIYIQELIAFBBkYNASAGIQkgBAshByAKQf8BcSAPQRB0IAtB/wFxQQh0cnIhCgwBCwJAAn8gBCAGKAIsERQAIhVCgICAgAJWBEBBACEFQQMhAUEDDAELIANBADYCiEkgA0IANwOASSADQoCAgIACIBV9NwP4SCADQgE3A/BIIANBGGogBCADQfDIAGogBigCMBEFACADKAIYIgFBBkYNASADKAIsIghBCHYhCiADKQM4IRUgA/1cAjQhHCADKAIwIQIgAygCKCEMIAMoAiQhBSADKAIcIQcgAygCIAshCSAGKAIAIgsEQCAEIAsRAwALIAYoAgQiBkUNASAEQQRrKAIAIgtBeHEiDUEEQQggC0EDcSILGyAGakkNBCALQQAgDSAGQSdqSxsNBSAEEKICDAELIAMgBCAGKAIMEQEAIAMoAgQhCiADKAIAIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCAGKAIQEQQAQf8BcUEBaw4JAQIDBAUGBwgJAAsgA0EYaiAEIAYQtwQgAygCJCEFIAMoAiAhCSADKAIcIQcgAygCGCIBQQZHDR8CQCAKrSIWIAitfiIVQiCIUARAIBWnIgEgBU0NAQtBACEMQQIhASAHRQ0fIAkgB0EBEMEHQYCAgIB4IQcMIQsgB0GAgICAeEcNCQwdCyADQRhqIAQgBhC3BCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNHkEAIQwCQCAIQQBIDQAgCq0iFSAIQQF0rX4iFkIgiKcNACAWpyAFTQ0KC0ECIQEgB0UNHSAJIAdBARDBB0GAgICAeCEHDB8LIANBGGogBCAGELcEIAMoAiQhBSADKAIgIQkgAygCHCEHIAMoAhgiAUEGRw0dAkACQCAIrSIWQgN+IhVCIIinDQAgFaetIAqtIhV+IhdCIIinDQAgF6cgBU0NAQtBACEMQQIhASAHRQ0dIAkgB0EBEMEHQYCAgIB4IQcMHwsgB0GAgICAeEYNGyAWQgN+IhZCIIinDSUgFqetIBV+IhZCIIinDSUgFqciASAFTQ0JDCMLIANBGGogBCAGELcEIAMoAiQhBSADKAIgIQkgAygCHCEHIAMoAhgiAUEGRw0cAkACQCAIQf////8DSw0AIAhBAnStIAqtfiIVQiCIpw0AIBWnIAVNDQELQQAhDEECIQEgB0UNHCAJIAdBARDBB0GAgICAeCEHDB4LIAdBgICAgHhGDRogByEGIAkhBAwYCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGyAKrSIWIAitfiIVQiCIUARAIBWnIgEgBU0NCQtBACEMIAdFDRhBAiEBIAkgB0EBdEECEMEHQYCAgIB4IQcMHAsgA0EYaiAEIAYQpwQgAygCJCEFIAMoAiAhCSADKAIcIQcgAygCGCIBQQZHDRpBACEMAkAgCEEASA0AIAqtIhUgCEEBdK1+IhZCIIinDQAgFqcgBU0NCQsgB0UNF0ECIQEgCSAHQQF0QQIQwQdBgICAgHghBwwbCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGQJAAkAgCK0iFkIDfiIVQiCIpw0AIBWnrSAKrSIVfiIXQiCIpw0AIBenIAVNDQELQQAhDCAHRQ0XQQIhASAJIAdBAXRBAhDBB0GAgICAeCEHDBsLIAdBgICAgHhGDRcgFkIDfiIWQiCIpw0hIBanrSAVfiIWQiCIpw0hIBanIgEgBU0NCAwfCyADQRhqIAQgBhCnBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNGAJAIAhB/////wNLDQAgCq0iFiAIQQJ0rX4iFUIgiKcNACAVpyAFTQ0JC0EAIQwgB0UNFUECIQEgCSAHQQF0QQIQwQdBgICAgHghBwwZCyADQRhqIAQgBhCoBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNFwJAAkAgCK0iFkIDfiIVQiCIpw0AIBWnrSAKrSIVfiIXQiCIpw0AIBenIAVNDQELQQAhDCAHRQ0VQQIhASAJIAdBAnRBBBDBB0GAgICAeCEHDBkLIAdBgICAgHhGDRUgFkIDfiIWQiCIpw0fIBanrSAVfiIWQiCIpw0fIBanIgEgBU0NCAwdCyADQRhqIAQgBhCoBCADKAIkIQUgAygCICEJIAMoAhwhByADKAIYIgFBBkcNFgJAIAhB/////wNLDQAgCq0iFiAIQQJ0rX4iFUIgiKcNACAVpyAFTQ0JC0EAIQwgB0UNE0ECIQEgCSAHQQJ0QQQQwQdBgICAgHghBwwXCyAVQiCIpw0dIAEgBUsNGyADQRhqIAkgAUECEIoBIAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBZ+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwcCyAHQYCAgIB4Rg0SIAhBAXStIBV+IhZCIIinDRwgFqciASAFSw0aIANBGGogCSABQQMQigEgAygCHCEEAkACQAJAIAhB/////wNLDQAgCEECdK0gFX4iFUIgiKcNACADKAIgIgUgFadPDQELIAMoAhgiAEUNASAEIABBARDBBwwBCyADKAIYIgZBgICAgHhHDQkLDBsLIANBGGogCSABQQAQigEgAygCHCEEAkACQAJAIAhB/////wNLDQAgCEECdK0gFX4iFUIgiKcNACADKAIgIgUgFadPDQELIAMoAhgiAEUNASAEIABBARDBBwwBCyADKAIYIgZBgICAgHhHDQkLDBoLIAdBgICAgHhGDRAgFUIgiKcNGiABIAVLDRggA0EYaiAJIAFBAhB/IAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBZ+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwZCyAHQYCAgIB4Rg0PIAhBAXStIBV+IhZCIIinDRkgFqciASAFSw0XIANBGGogCSABQQMQfyADKAIcIQQCQAJAAkAgCEH/////A0sNACAIQQJ0rSAVfiIVQiCIpw0AIAMoAiAiBSAVp08NAQsgAygCGCIARQ0BIAQgAEEBEMEHDAELIAMoAhgiBkGAgICAeEcNCQsMGAsgA0EYaiAJIAFBABB/IAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBV+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwXCyAHQYCAgIB4Rg0NIAhBAnStIBZ+IhVCIIinDRcgFaciASAFSw0VIANBGGogCSABQQEQfyADKAIcIQQCQCADKAIgIgUgAUkEQCADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwWCyADQRhqIAkgAUEAELQCIAMoAhwhBAJAAkACQCAIQf////8DSw0AIAhBAnStIBV+IhVCIIinDQAgAygCICIFIBWnTw0BCyADKAIYIgBFDQEgBCAAQQEQwQcMAQsgAygCGCIGQYCAgIB4Rw0JCwwVCyAHQYCAgIB4Rg0LIAhBAnStIBZ+IhVCIIinDRUgFaciASAFSw0TIANBGGogCSABQQEQtAIgAygCHCEEIAMoAiAiBSABSQRAIAMoAhgiAEUNFSAEIABBARDBBwwVCyADKAIYIgZBgICAgHhGDRQgB0UNCSAJQQRrKAIAIgFBeHEiAiAHQQJ0IgdBBEEIIAFBA3EiARtqSQ0RIAFFIAIgB0Enak1yDQgMEgsgB0UNCCAJQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAHakkNECABRSACIAdBJ2pNcg0HDBELIAdFDQcgCUEEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgB2pJDQ8gAUUgAiAHQSdqTXINBgwQCyAHRQ0GIAlBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIAdqSQ0OIAFFIAIgB0Enak1yDQUMDwsgB0UNBSAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0NIAFFIAIgB0Enak1yDQQMDgsgB0UNBCAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0MIAFFIAIgB0Enak1yDQMMDQsgB0UNAyAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0LIAFFIAIgB0Enak1yDQIMDAsgB0UNAiAJQQRrKAIAIgFBeHEiAiAHQQF0IgdBBEEIIAFBA3EiARtqSQ0KIAFFIAIgB0Enak1yDQEMCwsgB0UNASAJQQRrKAIAIgFBeHEiAiAHQQJ0IgdBBEEIIAFBA3EiARtqSQ0JIAFFDQAgAiAHQSdqSw0KCyAJEKICCyAAIAo2AhAgACAINgIMIAAgBTYCCCAAIAQ2AgQgACAGNgIADAULQQIhAUGAgICAeCEHDAMLQQAhDEECIQFBgICAgHghBwwCC0GAgICAeCEHDAELIAMoAiwiCEEIdiEKIAMpAzghFSAD/VwCNCEcIAMoAjAhAiADKAIoIQwLIAMgFTcDOCADIBz9WAA3AyADIBz9WAA2AiADIBz9WAA1ASADIBz9WAA0ACADIAI2AjAgAyAMNgIoIAMgBTYCJCADIAk2AiAgAyAHNgIcIAMgATYCGCADIAhB/wFxIApBCHRyNgIsIwBBIGsiCSQAIAlBCGoiARCbCSMAQTBrIgIkACACIANBGGoiBikCIDcCKCACIAb9AAIQ/QsCGCACIAb9AAIA/QsCCEHIABBuIgZFBEBByAAQsQoACyAGQdTHxgA2AgAgBiACKQIENwIcIAYgAv0AAgz9CwIkIAYgAv0AAhz9CwI0IAYgAigCLDYCRCAGIAEpAgA3AgQgBiAB/QACCP0LAgwgAkEwaiQAIAlBIGokACAAQYCAgIB4NgIAIAAgBjYCBAsgA0Gw1QBqJAAPCwALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC0EAIAEgBUGQ8MMAEKAFAAtBoPDDAEEvQdDwwwAQlAgAC0GA8MMAEJkKAAvrWwQUfxF9B3sEfiMAQZAFayIJJAAgACgCCCEVIAlBADYC0AMgCUEANgLUBCAJIAA2AqgBIAkgASACQQJ0IgpqIhM2AqQBIAkgATYCoAFBICEHIAlB1ARqIgghDiAJQdQDaiIEIQYCfwJAAkACQAJAAkACQAJAAkAgAkEhTwRAIAlBEGogCUHQA2pBfyACQQFrZ3ZBAWoQhQQgCSgCECIFQYGAgIB4RwRAIAUNBUGIqcYAQRFB2NvGABCoCQALAn8gCSgC1AQiB0EhSQRAIAchBUEgIQcgBAwBCyAJKALUAyEFIAQhDiAJKALYAwshBiAFIAdPDQELIAYgBUECdGohBgNAIAlBCGogCUGgAWoQ2AQgCSgCCEEBcUUNAiAGIAkqAgw4AgAgBkEEaiEGIAcgBUEBaiIFRw0ACyAHIQULIA4gBTYCACAJIAkoAqgBNgIgIAkgCSkCoAE3AxgDQCAJIAlBGGoQ2AQgCSgCAEEBRw0CAn8gCSgC1AQiB0EhSQRAIAchBiAEIQ5BICEHIAgMAQsgCSgC1AMhBiAJKALYAyEOIAQLIQUgCSoCBCEYIAYgB0YEQCAJQdADahDoBiAJKALUAyEGIAkoAtgDIQ4gBCEFCyAOIAZBAnRqIBg4AgAgBSAFKAIAQQFqNgIADAALAAsgDiAFNgIACyAJQRhqIAlB0ANqQYgB/AoAACAJQRxqIRIgCSgCHCAJKAKcASIIIAhBIEsiDhsiBwR9IAkoAiAgEiAOGyEEIAdBA3EhBQJAAkAgB0EESQRAQwAAAIAhGEEAIQcMAQsgB0F8cSEMQwAAAIAhGEEAIQcgBCEGA0AgGCAGKgIAkiAGQQRqKgIAkiAGQQhqKgIAkiAGQQxqKgIAkiEYIAZBEGohBiAMIAdBBGoiB0cNAAsgBUUNAQsgBCAHQQJ0aiEGA0AgGCAGKgIAkiEYIAZBBGohBiAFQQFrIgUNAAsLQ2BCog0gGCAYIBhcGyIYQ2BCog0gGENgQqINXhsFQ2BCog0LIScCQCAJKAIcIAggDhsiBUUNACAJKAIgIBIgDhsiBCEGIAVBAnQiCEEEayIFQQxPBEAgBCAFQQJ2QQFqIgxB/P///wdxIg5BAnRqIQYgJ/0TISkgDiEHIAQhBQNAIAUgBf0AAgAgKf3nAf0LAgAgBUEQaiEFIAdBBGsiBw0ACyAMIA5GDQELIAQgCGohBQNAIAYgBioCACAnlTgCACAGQQRqIgYgBUcNAAsLIAJFBEAgCUIANwOwAf0MAAAAAAAAAAAAAAAAAAAAACEpQQAhBkEADAYLIAkoAhwgCSgCnAEiBSAFQSBLIgUbIQYgACgCBCELIAAoAgghDEF/IQggCSgCICASIAUbIg4hByAKIQQgASEFA0AgBSgCACINIAxPDQIgBiAIQQFqIghGDQMgBUEEaiEFIAsgDUEsbGoiDSoCDCEaIA0qAgghHCANKgIQIAcqAgAhGCAJQdADaiANELQDIAn9AATQAyIp/R8CIBggLP0fAhDeBv0TICn9HwAgGCAs/R8AEN4G/SAAICn9HwEgGCAs/R8BEN4G/SABISwgGCAt/R8CEN4G/RMgHCAYIC39HwAQ3gb9IAAgGiAYIC39HwEQ3gb9IAEhLSAHQQRqIQcgBEEEayIEDQALIANDAAAAP5QiAyADlCEb/QwAAAAAAAAAAAAAAAAAAAAAISlDAAAAACEYQX8hB0MAAAAAIRogASEFA0AgDCAFKAIAIgRNBEAgBCAMQcDOxgAQ8AcACyAGIAdBAWoiB0YNBCALIARBLGxqIgRBEGogBP1dAgj9VgIAAiErIA4qAgAhAyAJQdADaiIIIAQQrAMgCf0ABNADISogCCAEKQIAENMCIBsgKyAt/eUBIi79HwAiHyAflCAqICn9DQgJCgsICQoLCAkKCwABAgMgCf0ABNADIiv9HwAiHCAr/R8CIh0gHZIiGZQiIyAr/R8DIiAgK/0fASIeIB6SIiGUIiSS/RMgHiAZlCIlICAgHCAckiIilCImk/0gAUMAAIA/IBwgIpQiIiAeICGUIiiSk/0gAv3mASIr/R8AIh4gHpQgKiAp/Q0EBQYHBAUGBwQFBgcAAQIDIBwgIZQiISAgIBmUIiCT/RNDAACAPyAiIB0gGZQiGZKT/SABICUgJpL9IAL95gEiL/0fACIcIByUICogKf0NAAECAwABAgMAAQIDAAECA0MAAIA/ICggGZKT/RMgISAgkv0gASAjICST/SAC/eYBIir9HwAiGSAZlJKSkpIgAyAp/R8AEN4G/RMgGyAu/R8BIh0gHZQgK/0fASIgICCUIC/9HwEiISAhlCAq/R8BIiMgI5SSkpKSIAMgKf0fARDeBv0gASAbIC79HwIiJCAklCAr/R8CIiUgJZQgL/0fAiIiICKUICr9HwIiJiAmlJKSkpIgAyAp/R8CEN4G/SACIB8gHZQgHiAglCAcICGUIBkgI5SSkpIgAyAp/R8DEN4G/SADISkgBUEEaiEFIB0gJJQgICAllCAhICKUICMgJpSSkpIgAyAYEN4GIRggHyAklCAeICWUIBwgIpQgGSAmlJKSkiADIBoQ3gYhGiAOQQRqIQ4gCkEEayIKDQALDAQLIAkoAhQQsQoACyANIAxB2NHGABDwBwALIAYgBkGwzsYAEPAHAAsgBiAGQdDOxgAQ8AcACyAJIBg4ArQBIBi8Qf////8HcUH////7B0shBiAJIBo4ArABIBq8Qf////8HcUH////7B0sLIQUgCSAp/QsEoAEgKf3gASIq/QwAAIB/AACAfwAAgH8AAIB//UQgKv0MAACAfwAAgH8AAIB/AACAf/1D/VD9TSIq/RsAQQFxICr9xwH9GwJBAXFyRSAp/R8CvEH/////B3FB////+wdNcUUEQEHgzsYAQewAQczPxgAQqAkACwJ9AkACQCAp/R8DvEH/////B3FB////+wdLIAVyIAZyQQFxRQRAIAlB0ANqIAlBoAFqELABQwAAAAAgCSoC0AMiAyADIANcGyIDQwAAAAAgA0MAAAAAXhuRIgNDAACAf14gA0MAAIB/XXJFDQFDAAAAACAJKgLUAyIYIBggGFwbIhhDAAAAACAYQwAAAABeG5EiGEMAAIB/XiAYQwAAgH9dckUNAUMAAAAAIAkqAtgDIhogGiAaXBsiGkMAAAAAIBpDAAAAAF4bkSIaQwAAgH9dRQ0BIBr9EyAD/SAAIBj9IAH9DGBCog1gQqINYEKiDWBCog396wEhKiAJ/QAEgAQiKf3hASAp/R8CIhuMIgP9IAIgA/0gAyApIAkqAugDIhogCSoC8AMiAyAp/R8BIhyUIAkqAvQDIhkgKf0fACIflJOUIAkqAuADIh4gGSAblCAJKgL4AyIYIByUk5QgCSoC5AMiHCADIBuUIBggH5STlJOSQwAAAABdGyIp/R8BIRsgKf0fACEfICn9HwIiHUMAAAAAX0UEQCAdQwAAgD+SIR0gHiAZkiIZQwAAAABfRQRAIBkgHZIiGUMAAAA/IBmRlSIglCEZIBwgA5MgIJQhHiAfIBqTICCUIR0gGCAbkyAglAwFCyAcIAOTQwAAAD8gHSAZkyIckZUiA5QhGSAcIAOUIR4gGCAbkiADlCEdIBogH5IgA5QMBAtDAACAPyAdkyEdIBkgHpMiGUMAAAAAX0UNAiAYIBuTQwAAAD8gHSAZkyIbkZUiGJQhGSAaIB+SIBiUIR4gHCADkiAYlCEdIBsgGJQMAwtB3M/GAEHsAEHI0MYAEKgJAAtB+MvGAEHWAEHY0MYAEKgJAAsgHyAak0MAAAA/IBkgHZIiH5GVIhqUIRkgGCAbkiAalCEeIB8gGpQhHSAcIAOSIBqUCyAq/R8AIgMgKv0fASIYlEOPws0/EIILIRsgAyAq/R8CIhqUQ4/CzT8QggshHyAYIBqUQ4/CzT8QggsgGyAfkpJDAABAQJVD5kAfPxCCCyEbIAAoAgghDSACBH8gDSABKAIAIgVNBEAgBSANQejQxgAQ8AcACyAAKAIEIAVBLGxqIgUoAhghFCAFKAIUBUEACyEWQwAAekRDvTeGNSAnIBtD2w9JQZSVIhsgG0O9N4Y1XRsiGyAbQwAAekReG7wiB0H///8DcSEEIAdBgICAgHhxIQYCQCAHQYCAgPwHcSIFQYCAgPwHRgRAIARBDXYgBkEQdnJBgARBACAEG3JBgPgBciEODAELIAZBEHYhDiAFQYCAgLgETQRAIAVBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIAVBDXYgBEENdmpBgIABaiAOcmohDgwCCyAFQYCAgJgDSQ0BIARBgICABHIiB0H+ACAFQRd2IgRrdiEFIAdBHSAEayIEdkEBcQR/IAVBAyAEdEEBayAHcUEAR2oFIAULIA5yIQ4MAQsgDkGA+AFyIQ4LICz9GwAiBEH///8DcSEGIARBgICAgHhxIQogLP0bASEFAkAgBEGAgID8B3EiB0GAgID8B0YEQCAGQQ12IApBEHZyQYAEQQAgBhtyQYD4AXIhCgwBCyAKQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIARBDHYgBEH/3wBxQQBHcSAHQQ12IAZBDXZqQYCAAWogCnJqIQoMAgsgB0GAgICYA0kNASAGQYCAgARyIgRB/gAgB0EXdiIGa3YhByAEQR0gBmsiBnZBAXEEfyAHQQMgBnRBAWsgBHFBAEdqBSAHCyAKciEKDAELIApBgPgBciEKCyAs/RsCIQcgBUH///8DcSEGIAVBgICAgHhxIQgCQCAFQYCAgPwHcSIEQYCAgPwHRwRAIAhBEHYhCCAEQYCAgLgETQRAIARBgICAxANPBEAgBUEMdiAFQf/fAHFBAEdxIARBDXYgBkENdmpBgIABaiAIcmohCAwDCyAEQYCAgJgDSQ0CIAZBgICABHIiBUH+ACAEQRd2IgZrdiEEIAVBHSAGayIGdkEBcQR/IARBAyAGdEEBayAFcUEAR2oFIAQLIAhyIQgMAgsgCEGA+AFyIQgMAQsgBkENdiAIQRB2ckGABEEAIAYbckGA+AFyIQgLIAdB////A3EhBiAHQYCAgIB4cSEEAkAgB0GAgID8B3EiBUGAgID8B0cEQCAEQRB2IQQgBUGAgIC4BE0EQCAFQYCAgMQDTwRAIAdBDHYgB0H/3wBxQQBHcSAFQQ12IAZBDXZqQYCAAWogBHJqIQQMAwsgBUGAgICYA0kNAiAGQYCAgARyIgdB/gAgBUEXdiIGa3YhBSAHQR0gBmsiBnZBAXEEfyAFQQMgBnRBAWsgB3FBAEdqBSAFCyAEciEEDAILIARBgPgBciEEDAELIAZBDXYgBEEQdnJBgARBACAGG3JBgPgBciEECyADEOAFvCIGQf///wNxIQwgBkGAgICAeHEhBwJAIAZBgICA/AdxIgVBgICA/AdGBEAgDEENdiAHQRB2ckGABEEAIAwbckGA+AFyIQcMAQsgB0EQdiEHIAVBgICAuARNBEAgBUGAgIDEA08EQCAGQQx2IAZB/98AcUEAR3EgBUENdiAMQQ12akGAgAFqIAdyaiEHDAILIAVBgICAmANJDQEgDEGAgIAEciIGQf4AIAVBF3YiDGt2IQUgBkEdIAxrIgx2QQFxBH8gBUEDIAx0QQFrIAZxQQBHagUgBQsgB3IhBwwBCyAHQYD4AXIhBwsgGBDgBbwiDEH///8DcSELIAxBgICAgHhxIQUCQCAMQYCAgPwHcSIGQYCAgPwHRwRAIAVBEHYhBSAGQYCAgLgETQRAIAZBgICAxANPBEAgDEEMdiAMQf/fAHFBAEdxIAZBDXYgC0ENdmpBgIABaiAFcmohBQwDCyAGQYCAgJgDSQ0CIAtBgICABHIiDEH+ACAGQRd2IgtrdiEGIAxBHSALayILdkEBcQR/IAZBAyALdEEBayAMcUEAR2oFIAYLIAVyIQUMAgsgBUGA+AFyIQUMAQsgC0ENdiAFQRB2ckGABEEAIAsbckGA+AFyIQULIBoQ4AW8IgtB////A3EhDyALQYCAgIB4cSEMAkAgC0GAgID8B3EiBkGAgID8B0cEQCAMQRB2IQwgBkGAgIC4BE0EQCAGQYCAgMQDTwRAIAtBDHYgC0H/3wBxQQBHcSAGQQ12IA9BDXZqQYCAAWogDHJqIQwMAwsgBkGAgICYA0kNAiAPQYCAgARyIgtB/gAgBkEXdiIPa3YhBiALQR0gD2siD3ZBAXEEfyAGQQMgD3RBAWsgC3FBAEdqBSAGCyAMciEMDAILIAxBgPgBciEMDAELIA9BDXYgDEEQdnJBgARBACAPG3JBgPgBciEMC7wiD0H///8DcSEQIB28IQYCfiAQQQ12IhcgD0GAgICAeHEiEUEQdnJBgARBACAQG3JBgPgBcq0gD0GAgID8B3EiC0GAgID8B0YNABogEUEQdiERAkAgC0GAgIC4BE0EQCAXIAtBDXZqQYCAAWogEXKtIA9BDHYgD0H/3wBxQQBHca18IAtBgICAxANPDQIaIAtBgICAmANJDQEgEEGAgIAEciIPQf4AIAtBF3YiEGt2IQsgD0EdIBBrIhB2QQFxBH8gC0EDIBB0QQFrIA9xQQBHagUgCwsgEXKtDAILIBFBgPgBcq0MAQsgEa0LITAgHrwhCyAGQf///wNxIRAgBkGAgICAeHEhEQJ+IAZBgICA/AdxIg9BgICA/AdHBEAgEUEQdiERIA9BgICAuARNBEAgD0ENdiAQQQ12akGAgAFqIBFyrSAGQQx2IAZB/98AcUEAR3GtfCAPQYCAgMQDTw0CGiAPQYCAgJgDTwRAIBBBgICABHIiBkH+ACAPQRd2IhBrdiEPIAZBHSAQayIQdkEBcQR/IA9BAyAQdEEBayAGcUEAR2oFIA8LIBFyrQwDCyARrQwCCyARQYD4AXKtDAELIBFBEHYgEEENdnJBgARBACAQG3JBgPgBcq0LITEgGbwhBiALQf///wNxIRAgC0GAgICAeHEhEQJ+IAtBgICA/AdxIg9BgICA/AdHBEAgEUEQdiERIA9BgICAuARNBEAgD0ENdiAQQQ12akGAgAFqIBFyrSALQQx2IAtB/98AcUEAR3GtfCAPQYCAgMQDTw0CGiAPQYCAgJgDTwRAIBBBgICABHIiC0H+ACAPQRd2IhBrdiEPIAtBHSAQayIQdkEBcQR/IA9BAyAQdEEBayALcUEAR2oFIA8LIBFyrQwDCyARrQwCCyARQYD4AXKtDAELIBFBEHYgEEENdnJBgARBACAQG3JBgPgBcq0LITIgBkH///8DcSEPIAZBgICAgHhxIRACfiAGQYCAgPwHcSILQYCAgPwHRwRAIBBBEHYhECALQYCAgLgETQRAIAtBDXYgD0ENdmpBgIABaiAQcq0gBkEMdiAGQf/fAHFBAEdxrXwgC0GAgIDEA08NAhogC0GAgICYA08EQCAPQYCAgARyIgZB/gAgC0EXdiIPa3YhCyAGQR0gD2siD3ZBAXEEfyALQQMgD3RBAWsgBnFBAEdqBSALCyAQcq0MAwsgEK0MAgsgEEGA+AFyrQwBCyAQQRB2IA9BDXZyQYAEQQAgDxtyQYD4AXKtCyEzIAAoAgAgDUYEQCMAQRBrIgYkACAGQQRqIAAoAgAiCyAAKAIEQQQgC0EBdCILIAtBBE0bIgtBBEEsEM4GIAYoAgRBAUYEQCAGKAIIIAYoAgwQmgkACyAGKAIIIQ8gACALNgIAIAAgDzYCBCAGQRBqJAALIAAoAgQgDUEsbGoiBiAt/VoCEAIgBiAt/VsCCAAgBiAMOwEoIAYgBTsBJiAGIAc7ASQgBiAEOwEiIAYgCDsBICAGIAo7AR4gBiAOOwEcIAYgFDYCGCAGIBY2AhQgBiAwQv//A4MgMUIQhkKAgPz/D4MgMkIghkKAgICA8P8/gyAzQjCGhISENwIAIAAgDUEBajYCCCAJQdADaiABIBMQpwMgACgCFCIFIAAoAgxGBEAgAEEMahCeBwsgACgCECAFQRhsaiIHIAkpAuADNwIQIAcgCf0AAtAD/QsCACAAIAVBAWo2AhQCQAJAIAAoAjxFDQAgCf0MAAAAAAAAAAAAAAAAAAAAAP0LBOABIAn9DAAAAAAAAAAAAAAAAAAAAAD9CwTQASAJ/QwAAAAAAAAAAAAAAAAAAAAA/QsEwAECQCACRQRAIAAoAiAhDAwBCyAJKAIgIBIgCSgCnAEiBUEgSyIHGyEPIAkoAhwgBSAHGyENIAAoAhwhECAAKAIgIQxBACEHIAEhBQJAA0AgByANRwRAIAUoAgAiBCAMTw0CIA8gB0ECdGoqAgAhAyAQIARBEmxqIQZBACEOA0AgBkECai8BACEEAn8gBi8BACIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSEKIAhBgIACcSELIAhBgPgBcSIIQYD4AUYEQCALQRB0IghBgICA/AdyIApFDQEaIAggCkENdHJBgICA/gdyDAELIAtBEHQiCyAIQQ10QYCAgPwAcSAKQQ10ckGAgIDAA2pyIAgNABogCiAKZ0EQayIKQf//A3FBCGp0Qf///wNxIAtBgICA2ANyIApBF3RrcgshESAGQQRqLwEAIQoCfyAEQf//AXEEQCAEQf8HcSEIIARBgIACcSELIARBgPgBcSIEQYD4AUcEQCALQRB0IgsgBEENdEGAgID8AHEgCEENdHJBgICAwANqciAEDQIaIAggCGdBEGsiBEH//wNxQQhqdEH///8DcSALQYCAgNgDciAEQRd0a3IMAgsgC0EQdCIEIAhBDXRyQYCAgP4HciAIDQEaIARBgICA/AdyDAELIARBEHQLIQsgCUHQA2ogDmoCfyAKQf//AXEEQCAKQf8HcSEEIApBgIACcSEIIApBgPgBcSIKQYD4AUcEQCAIQRB0IgggCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQIaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAIQYCAgNgDciAEQRd0a3IMAgsgCEEQdCIKIARBDXRyQYCAgP4HciAEDQEaIApBgICA/AdyDAELIApBEHQLviADIAlBwAFqIA5qIgRBCGoqAgAQ3gb9EyARviADIAQqAgAQ3gb9IAAgC74gAyAEQQRqKgIAEN4G/SAB/QsEACAGQQZqIQYgDkEQaiIOQTBHDQALIAkgCf0ABPAD/QsE4AEgCSAJ/QAE4AP9CwTQASAJIAn9AATQA/0LBMABIAdBAWohByATIAVBBGoiBUcNAQwDCwsgDSANQfjQxgAQ8AcACyAEIAxBiNHGABDwBwALIAlBwAFqIQZBACEOA0AgBigCACIEQf///wNxIQggBEGAgICAeHEhCiAGQQRqKAIAIQUCQCAEQYCAgPwHcSIHQYCAgPwHRgRAIAhBDXYgCkEQdnJBgARBACAIG3JBgPgBciEKDAELIApBEHYhCiAHQYCAgLgETQRAIAdBgICAxANPBEAgBEEMdiAEQf/fAHFBAEdxIAdBDXYgCEENdmpBgIABaiAKcmohCgwCCyAHQYCAgJgDSQ0BIAhBgICABHIiBEH+ACAHQRd2IghrdiEHIARBHSAIayIIdkEBcQR/IAdBAyAIdEEBayAEcUEAR2oFIAcLIApyIQoMAQsgCkGA+AFyIQoLIAZBCGooAgAhByAFQf///wNxIQ0gBUGAgICAeHEhCAJAIAVBgICA/AdxIgRBgICA/AdHBEAgCEEQdiEIIARBgICAuARNBEAgBEGAgIDEA08EQCAFQQx2IAVB/98AcUEAR3EgBEENdiANQQ12akGAgAFqIAhyaiEIDAMLIARBgICAmANJDQIgDUGAgIAEciIFQf4AIARBF3YiDWt2IQQgBUEdIA1rIg12QQFxBH8gBEEDIA10QQFrIAVxQQBHagUgBAsgCHIhCAwCCyAIQYD4AXIhCAwBCyANQQ12IAhBEHZyQYAEQQAgDRtyQYD4AXIhCAsgB0H///8DcSENIAdBgICAgHhxIQQCQCAHQYCAgPwHcSIFQYCAgPwHRwRAIARBEHYhBCAFQYCAgLgETQRAIAVBgICAxANPBEAgB0EMdiAHQf/fAHFBAEdxIAVBDXYgDUENdmpBgIABaiAEcmohBAwDCyAFQYCAgJgDSQ0CIA1BgICABHIiB0H+ACAFQRd2Ig1rdiEFIAdBHSANayINdkEBcQR/IAVBAyANdEEBayAHcUEAR2oFIAULIARyIQQMAgsgBEGA+AFyIQQMAQsgDUENdiAEQRB2ckGABEEAIA0bckGA+AFyIQQLIAlB0ANqIA5qIgUgCjsBACAFQQRqIAQ7AQAgBUECaiAIOwEAIAZBEGohBiAOQQZqIg5BEkcNAAsgCSAJLwHgAzsB0AIgCSAJ/QAB0AP9CwPAAiAAKAIYIAxGBEAjAEEQayIFJAAgBUEEaiAAQRhqIgcoAgAiBCAHKAIEQQQgBEEBdCIEIARBBE0bIgRBAkESEM4GIAUoAgRBAUYEQAwDCyAFKAIIIQYgByAENgIAIAcgBjYCBCAFQRBqJAALIAAoAhwgDEESbGoiBSAJLwHQAjsBECAFIAn9AAPAAv0LAQAgACAMQQFqNgIgIAAoAjxBAU0NAEEAIQcgCUHwAWpBAEHQAPwLAAJAIAJFBEAgACgCLCEMDAELIAkoAiAgEiAJKAKcASIFQSBLIgQbIQ8gCSgCHCAFIAQbIQ0gACgCKCEQIAAoAiwhDCABIQUCQANAIAcgDUcEQCAFKAIAIgQgDE8NAiAPIAdBAnRqKgIAIQMgECAEQR5saiEGQQAhDgNAIAZBAmovAQAhBAJ/IAYvAQAiCEH//wFxRQRAIAhBEHQMAQsgCEH/B3EhCiAIQYCAAnEhCyAIQYD4AXEiCEGA+AFGBEAgC0EQdCIIQYCAgPwHciAKRQ0BGiAIIApBDXRyQYCAgP4HcgwBCyALQRB0IgsgCEENdEGAgID8AHEgCkENdHJBgICAwANqciAIDQAaIAogCmdBEGsiCkH//wNxQQhqdEH///8DcSALQYCAgNgDciAKQRd0a3ILIREgBkEEai8BACEKAn8gBEH//wFxBEAgBEH/B3EhCCAEQYCAAnEhCyAEQYD4AXEiBEGA+AFHBEAgC0EQdCILIARBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBA0CGiAIIAhnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyDAILIAtBEHQiBCAIQQ10ckGAgID+B3IgCA0BGiAEQYCAgPwHcgwBCyAEQRB0CyELIAlB0ANqIhQgDmoCfyAKQf//AXEEQCAKQf8HcSEEIApBgIACcSEIIApBgPgBcSIKQYD4AUcEQCAIQRB0IgggCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQIaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAIQYCAgNgDciAEQRd0a3IMAgsgCEEQdCIKIARBDXRyQYCAgP4HciAEDQEaIApBgICA/AdyDAELIApBEHQLviADIAlB8AFqIgogDmoiBEEIaioCABDeBv0TIBG+IAMgBCoCABDeBv0gACALviADIARBBGoqAgAQ3gb9IAH9CwQAIAZBBmohBiAOQRBqIg5B0ABHDQALIAogFEHQAPwKAAAgB0EBaiEHIBMgBUEEaiIFRw0BDAMLCyANIA1BmNHGABDwBwALIAQgDEGo0cYAEPAHAAsgCUHwAWohBkEAIQ4DQCAGKAIAIgRB////A3EhCCAEQYCAgIB4cSEKIAZBBGooAgAhBQJAIARBgICA/AdxIgdBgICA/AdGBEAgCEENdiAKQRB2ckGABEEAIAgbckGA+AFyIQoMAQsgCkEQdiEKIAdBgICAuARNBEAgB0GAgIDEA08EQCAEQQx2IARB/98AcUEAR3EgB0ENdiAIQQ12akGAgAFqIApyaiEKDAILIAdBgICAmANJDQEgCEGAgIAEciIEQf4AIAdBF3YiCGt2IQcgBEEdIAhrIgh2QQFxBH8gB0EDIAh0QQFrIARxQQBHagUgBwsgCnIhCgwBCyAKQYD4AXIhCgsgBkEIaigCACEHIAVB////A3EhDSAFQYCAgIB4cSEIAkAgBUGAgID8B3EiBEGAgID8B0cEQCAIQRB2IQggBEGAgIC4BE0EQCAEQYCAgMQDTwRAIAVBDHYgBUH/3wBxQQBHcSAEQQ12IA1BDXZqQYCAAWogCHJqIQgMAwsgBEGAgICYA0kNAiANQYCAgARyIgVB/gAgBEEXdiINa3YhBCAFQR0gDWsiDXZBAXEEfyAEQQMgDXRBAWsgBXFBAEdqBSAECyAIciEIDAILIAhBgPgBciEIDAELIA1BDXYgCEEQdnJBgARBACANG3JBgPgBciEICyAHQf///wNxIQ0gB0GAgICAeHEhBAJAIAdBgICA/AdxIgVBgICA/AdHBEAgBEEQdiEEIAVBgICAuARNBEAgBUGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgBUENdiANQQ12akGAgAFqIARyaiEEDAMLIAVBgICAmANJDQIgDUGAgIAEciIHQf4AIAVBF3YiDWt2IQUgB0EdIA1rIg12QQFxBH8gBUEDIA10QQFrIAdxQQBHagUgBQsgBHIhBAwCCyAEQYD4AXIhBAwBCyANQQ12IARBEHZyQYAEQQAgDRtyQYD4AXIhBAsgCUHQA2ogDmoiBSAKOwEAIAVBBGogBDsBACAFQQJqIAg7AQAgBkEQaiEGIA5BBmoiDkEeRw0ACyAJIAkpAeYDNwHWAiAJIAkpAeADNwPQAiAJIAn9AAHQA/0LA8ACIAAoAiQgDEYEQCMAQRBrIgUkACAFQQRqIABBJGoiBygCACIEIAcoAgRBBCAEQQF0IgQgBEEETRsiBEECQR4QzgYgBSgCBEEBRgRADAMLIAUoAgghBiAHIAQ2AgAgByAGNgIEIAVBEGokAAsgACgCKCAMQR5saiIFIAkpAdYCNwEWIAUgCSkD0AI3ARAgBSAJ/QADwAL9CwEAIAAgDEEBajYCLCAAKAI8QQJNDQBBACEHIAlB4AJqQQBB8AD8CwACQCACRQRAIAAoAjghBQwBCyAJKAIgIBIgCSgCnAEiAkEgSyIFGyESIAkoAhwgAiAFGyEIIAAoAjQhDSAAKAI4IQUCQANAIAcgCEcEQCABKAIAIgIgBU8NAiASIAdBAnRqKgIAIQMgDSACQSpsaiEGQQAhDgNAIAZBAmovAQAhAgJ/IAYvAQAiCkH//wFxRQRAIApBEHQMAQsgCkH/B3EhBCAKQYCAAnEhDCAKQYD4AXEiCkGA+AFGBEAgDEEQdCIKQYCAgPwHciAERQ0BGiAKIARBDXRyQYCAgP4HcgwBCyAMQRB0IgwgCkENdEGAgID8AHEgBEENdHJBgICAwANqciAKDQAaIAQgBGdBEGsiBEH//wNxQQhqdEH///8DcSAMQYCAgNgDciAEQRd0a3ILIQsgBkEEai8BACEEAn8gAkH//wFxBEAgAkH/B3EhCiACQYCAAnEhDCACQYD4AXEiAkGA+AFHBEAgDEEQdCIMIAJBDXRBgICA/ABxIApBDXRyQYCAgMADanIgAg0CGiAKIApnQRBrIgJB//8DcUEIanRB////A3EgDEGAgIDYA3IgAkEXdGtyDAILIAxBEHQiAiAKQQ10ckGAgID+B3IgCg0BGiACQYCAgPwHcgwBCyACQRB0CyEMIAlB0ANqIg8gDmoCfyAEQf//AXEEQCAEQf8HcSECIARBgIACcSEKIARBgPgBcSIEQYD4AUcEQCAKQRB0IgogBEENdEGAgID8AHEgAkENdHJBgICAwANqciAEDQIaIAIgAmdBEGsiAkH//wNxQQhqdEH///8DcSAKQYCAgNgDciACQRd0a3IMAgsgCkEQdCIEIAJBDXRyQYCAgP4HciACDQEaIARBgICA/AdyDAELIARBEHQLviADIAlB4AJqIgQgDmoiAkEIaioCABDeBv0TIAu+IAMgAioCABDeBv0gACAMviADIAJBBGoqAgAQ3gb9IAH9CwQAIAZBBmohBiAOQRBqIg5B8ABHDQALIAQgD0HwAPwKAAAgB0EBaiEHIBMgAUEEaiIBRw0BDAMLCyAIIAhBuNHGABDwBwALIAIgBUHI0cYAEPAHAAsgCUHgAmohBkEAIQ4DQCAGKAIAIgdB////A3EhCiAHQYCAgIB4cSEEIAZBBGooAgAhAQJAIAdBgICA/AdxIgJBgICA/AdGBEAgCkENdiAEQRB2ckGABEEAIAobckGA+AFyIQQMAQsgBEEQdiEEIAJBgICAuARNBEAgAkGAgIDEA08EQCAHQQx2IAdB/98AcUEAR3EgAkENdiAKQQ12akGAgAFqIARyaiEEDAILIAJBgICAmANJDQEgCkGAgIAEciIHQf4AIAJBF3YiCmt2IQIgB0EdIAprIgp2QQFxBH8gAkEDIAp0QQFrIAdxQQBHagUgAgsgBHIhBAwBCyAEQYD4AXIhBAsgBkEIaigCACECIAFB////A3EhCCABQYCAgIB4cSEKAkAgAUGAgID8B3EiB0GAgID8B0cEQCAKQRB2IQogB0GAgIC4BE0EQCAHQYCAgMQDTwRAIAFBDHYgAUH/3wBxQQBHcSAHQQ12IAhBDXZqQYCAAWogCnJqIQoMAwsgB0GAgICYA0kNAiAIQYCAgARyIgFB/gAgB0EXdiIIa3YhByABQR0gCGsiCHZBAXEEfyAHQQMgCHRBAWsgAXFBAEdqBSAHCyAKciEKDAILIApBgPgBciEKDAELIAhBDXYgCkEQdnJBgARBACAIG3JBgPgBciEKCyACQf///wNxIQcgAkGAgICAeHEhCAJAIAJBgICA/AdxIgFBgICA/AdHBEAgCEEQdiEIIAFBgICAuARNBEAgAUGAgIDEA08EQCACQQx2IAJB/98AcUEAR3EgAUENdiAHQQ12akGAgAFqIAhyaiEIDAMLIAFBgICAmANJDQIgB0GAgIAEciICQf4AIAFBF3YiB2t2IQEgAkEdIAdrIgd2QQFxBH8gAUEDIAd0QQFrIAJxQQBHagUgAQsgCHIhCAwCCyAIQYD4AXIhCAwBCyAHQQ12IAhBEHZyQYAEQQAgBxtyQYD4AXIhCAsgCUHmBGogDmoiASAEOwEAIAFBBGogCDsBACABQQJqIAo7AQAgBkEQaiEGIA5BBmoiDkEqRw0ACyAAKAIwIAVGBEAjAEEQayIBJAAgAUEEaiAAQTBqIgIoAgAiByACKAIEQQQgB0EBdCIHIAdBBE0bIgdBAkEqEM4GIAEoAgRBAUYEQCABKAIIIAEoAgwQmgkACyABKAIIIQQgAiAHNgIAIAIgBDYCBCABQRBqJAALIAAoAjQgBUEqbGoiASAJLwGOBTsBKCABIAkpAYYFNwEgIAEgCf0AAfYE/QsBECABIAn9AAHmBP0LAQAgACAFQQFqNgI4CwJAAkAgCSgCnAEiAEEhTwRAIAkoAiAiAUEEaygCACICQXhxIgUgAEECdCIAQQRBCCACQQNxIgIbakkNASACQQAgBSAAQSdqSxsNAiABEKICCyAJQZAFaiQAIBUPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgBSgCCCAFKAIMEJoJAAvPXAMXfwN9AX4jAEHQAGsiCiQAAkACQAJAAkAgAC0A3FRFBEAgCkEwaiAAQbACahDxBCAKLQAwBEAgCigCNCEBDAMLIAotADFBAUcNASAAQQE6ANxUCyAAKAK4AiIDRQ0AIABB1AJqIRQgCkHEAGqtQoCAgIAQhCEbIABByAJqIRUgAEH4AWohEiAAQYQCaiEWIABBkAJqIRcDQAJAIAAoAsQCIgYgACgC2FQiAWsiAkEAIAIgBk0bQYCABE8EQCABIQIMAQsgASABQYCAAmsiAkEAIAEgAk8bIglrIQIgASAJRgRAIAAgAjYC2FQMAQsgASAGTQRAIAIEQCAAKALAAiIBIAEgCWogAvwKAAALIAAoArgCIQMgACACNgLYVAwBC0EAIAEgBkGoo8cAEKAFAAsCQAJAIAMgDU8EQCAKQTBqIBQgACgCtAIgDWogAyANayAAKALAAiAAKALEAiACQQYQTCAKIAotADQiAToAAyAKKAIwIRMgCigCOCIQRQ0CIAAoAthUIgMgEGoiAiADTyACIAAoAsQCIgZNcQ0BIAMgAiAGQfTuwQAQoAUACyANIAMgA0GE78EAEKAFAAsgACgCwAIhBiAAKALIAiAAKALQAiICayAQSQRAIBUgAiAQQQFBARDWBiAAKALQAiECCyAQBEAgACgCzAIgAmogAyAGaiAQ/AoAAAsgACACIBBqIgY2AtACIAAgACgC2FQgEGo2AthUAkACQAJAIAAoAvgBQYCAgIB4RgRAIAZBEE8EQCAKIAAoAswCIgIoAAAiAzYCECADQc6OzYIFRwRAIAogCkEQaq1CgICAgOADhDcDMCAKQRRqIgBB5OfBACAKQTBqELcHIAAQvQghAQwJCyAKIAIoAAQiCTYCICAJQQRrQXxNBEAgCiAKQSBqrUKAgICAEIQ3AzAgCkEkaiIAQaySwAAgCkEwahC3ByAAEL0IIQEMCQsgAEEANgLQAiACLQAOIQQgAi0ADSEHIAItAAwhAyACKAAIIQggBkEQayIGBEAgBgRAIAIgAkEQaiAG/AoAAAsgACAGNgLQAgsgCiADNgJEIANBA0sNA0GAgMAAEG4iAkUNAiAAIAQ6AK4CIAAgBzoArQIgAEEAOgCsAiAAQQA2AqgCIAAgAzYCpAIgACAINgKgAiAAIAk2ApwCIABBADYCmAIgAEKAgICAwAA3A5ACIABCAjcDiAIgAEIANwOAAiAAIAI2AvwBIABBgIAQNgL4ASAKIARBgAFxQQd2OgA4IAogAzYCNCAKIAg2AjAgACAKQTBqEKsDCyAAKAL4AUGAgICAeEYNBAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAKwCQQFrDgkNDAsKAAEGBBMCC0EJIRFBBiEBIAAoAqQCDgQECAcGAgsgAEEJQQcgACwArgJBAE4bOgCsAgwOCyAAKALQAkEGQQkgACgCnAIiA0EBRhsiDG4iAiAAKAKgAiAAKAKoAmsiBkkEQCACIgZBgIAESQ0RC0GAgAQgBiAGQYCABE8bIghBA2wiAiAAKAKAAiIBSwR/IAIgAWsiAiAAKAL4ASABa0sEQCASIAEgAkEEQQQQ1gYgACgCgAIhAQsgACgC/AEiCSABQQJ0aiEDIAJBAk8EfyACQQJ0QQRrIgQEQCADQQAgBPwLAAsgASACaiICQQFrIQEgCSACQQJ0akEEawUgAwtBADYCACAAIAFBAWo2AoACIAAoApwCBSADC0EBRw0LIAZFDQxBACEBQQAhAkEAIQNBACEJA0AgAUECaiIHIAAoAtACIgRLBEAgASAHIARB1OjBABCgBQALAn8gACgCzAIgAWoiBEEBai0AAEEIdCIFIAQtAAByIgRB//8BcUUEQCAEQRB0DAELIARB/wdxIQQgBUGAgAJxIQsgBUGA+AFxIgVBgPgBRgRAIAtBEHQiBUGAgID8B3IgBEUNARogBEENdCAFckGAgID+B3IMAQsgC0EQdCILIAVBDXRBgICA/ABxIARBDXRyQYCAgMADanIgBQ0AGiAEIARnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyCyEEAn8CQAJAIAAoAoACIgUgA0sEQCAAKAL8ASACaiAENgIAIAFBBGoiBSAAKALQAiIESw0BIAAoAswCIAFqIgRBA2otAABBCHQiByAEQQJqLQAAciIEQf//AXFFBEAgBEEQdAwECyAEQf8HcSEEIAdBgIACcSELIAdBgPgBcSIHQYD4AUYEQCALQRB0IgdBgICA/AdyIARFDQQaIARBDXQgB3JBgICA/gdyDAQLIAtBEHQhCyAHRQ0CIAdBDXRBgICA/ABxIARBDXRyQYCAgMADaiALcgwDCyADIAVBhOjBABDwBwALIAcgBSAEQcTowQAQoAUACyAEIARnQRBrIgRB//8DcUEIanRB////A3EgC0GAgIDYA3IgBEEXdGtyCyEEAn8CQAJAIANBAWoiByAAKAKAAiILSQRAIAAoAvwBIAJqQQRqIAQ2AgAgAUEGaiIEIAAoAtACIgdLDQEgACgCzAIgAWoiAUEFai0AAEEIdCIHIAFBBGotAAByIgFB//8BcUUEQCABQRB0DAQLIAFB/wdxIQEgB0GAgAJxIQUgB0GA+AFxIgdBgPgBRgRAIAVBEHQiB0GAgID8B3IgAUUNBBogAUENdCAHckGAgID+B3IMBAsgBUEQdCEFIAdFDQIgB0ENdEGAgID8AHEgAUENdHJBgICAwANqIAVyDAMLIAcgC0GU6MEAEPAHAAsgBSAEIAdBtOjBABCgBQALIAEgAWdBEGsiAUH//wNxQQhqdEH///8DcSAFQYCAgNgDciABQRd0a3ILIQEgA0ECaiIHIAAoAoACIgVJBEAgACgC/AEgAmpBCGogATYCACACQQxqIQIgA0EDaiEDIAQhASAJQQFqIgkgCEkNAQwOCwsgByAFQaTowQAQ8AcAC0GU7cEAEJ0KAAsgACgC0AIiAUECdiICIAAoAqACIAAoAqgCayIJSQRAIAIhCSABQYCAEEkNDwtBgIAEIAkgCUGAgARPGyIGIAAoApgCIgFLBEAgBiABayICIAAoApACIAFrSwRAIBcgASACQQRBBBDWBiAAKAKYAiEBCyAAKAKUAiIEIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiCARAIANBACAI/AsACyABIAJqIgJBAWshASAEIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgKYAgsgCQRAQQAhAUEAIQMCQANAIAFBBGoiAiAAKALQAiIESwRAIAEgAiAEQeTuwQAQoAUACyAAKAKYAiIEIANLBEAgACgClAIgAWogACgCzAIgAWooAAA2AgAgAiEBIAYgA0EBaiIDRg0CDAELCyADIARB1O7BABDwBwALIAAoApgCIQELIAAgACgCqAIgBiAAKAKUAiABEMAEAkACQAJAIAAoAtACIgEgBkECdCICTwRAIABBADYC0AIgASACayEDIAlFDQEgASACRg0DIANFDQIgACgCzAIiASABIAJqIAP8CgAADAILDBYLIAEgAkYNAQsgACADNgLQAgsgACAAKAKoAiAGaiICNgKoAiACIAAoAqACRw0LIABBADYCqAJBCSEBCyAAIAE6AKwCDAoLIAAoAtACIgFBAXYiAiAAKAKgAiAAKAKoAmsiBEkEQCACIQQgAUGAgAhJDQ0LQYCABCAEIARBgIAETxsiAiAAKAKMAiIBSwRAIAIgAWsiAyAAKAKEAiABa0sEQCAWIAEgA0ECQQIQ1gYgACgCjAIhAQsgACgCiAIiCSABQQF0aiEGIANBAk8EfyADQQF0QQJrIggEQCAGQQAgCPwLAAsgASADaiIDQQFrIQEgCSADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYCjAILIAQEQEEAIQNBAiEBAkADQCAAKALQAiIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAowCIgYgA0sEQCAAKAKIAiABakECayAAKALMAiABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgCjAIhAQsgACAAKAKoAiACIAAoAogCIAEQvwQCQAJAAkAgACgC0AIiAyACQQF0IgFPBEAgAEEANgLQAiADIAFrIQYgBEUNASABIANGDQMgBkUNAiAAKALMAiIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLQAgsgACAAKAKoAiACaiICNgKoAiACIAAoAqACRw0JIABBADYCqAIgAEEIOgCsAgwJC0EtIREMAQtBGCERCyAAKALQAiARbiICIAAoAqACIAAoAqgCayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDCARbCILIAAoAoACIgFLBEAgCyABayICIAAoAvgBIAFrSwRAIBIgASACQQRBBBDWBiAAKAKAAiEBCyAAKAL8ASIJIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAJIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgKAAgsgDEEJbCEPAkAgBgRAIAxB4ABsIQcgDEEYbCEJQQAhDkEAIQgCQANAIAggEWwiASAAKALQAiICTw0DAkACQAJAAkAgCEEJbCIDIAAoAoACIgJPDQAgACgC/AEgA0ECdGogACgCzAIgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALQAiICTwRAIAQhAQwICyADQQNqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALQAiICTwRAIAQhAQwICyADQQZqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALQAiICTwRAIAQhAQwICyADQQFqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALQAiICTwRAIAQhAQwICyADQQRqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALQAiICTwRAIAQhAQwICyADQQdqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALQAiICTwRAIAQhAQwICyADQQJqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALQAiICTwRAIAQhAQwICyADQQVqIgUgACgCgAIiAk8EQCAFIQMMAQsgACgC/AEgBUECdGogACgCzAIgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALQAiICTwRAIAQhAQwICyADQQhqIgMgACgCgAIiAk8NACAAKAL8ASADQQJ0aiAAKALMAiAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCpAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC0AIiBU8NACAIQQ9sIA9qIgIgACgCgAIiBU8NAyAAKAL8ASACQQJ0aiAAKALMAiADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtACIgVPDQAgAkEDaiIEIAAoAoACIgVPBEAgBCECDAQLIAAoAvwBIARBAnRqIAAoAswCIANqLQAAs0MAAADDkkMAAAA8lDgCACAB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aiIDRg0CDAELCyADIARB1O7BABDwBwALIAAoAoACIQELIAAgACgCkAIgBiAAKAL8ASABEMIEAkACQAJAIAAoAtwBIgEgBkECdCICTwRAIABBADYC3AEgASACayEDIAhFDQEgASACRg0DIANFDQIgACgC2AEiASABIAJqIAP8CgAADAILDBYLIAEgAkYNAQsgACADNgLcAQsgACAAKAKQAiAGaiICNgKQAiACIAAoAogCRw0LIABBADYCkAJBCSEBCyAAIAE6AJQCDAoLIAAoAtwBIgFBAXYiAiAAKAKIAiAAKAKQAmsiBUkEQCACIQUgAUGAgAhJDQ0LQYCABCAFIAVBgIAETxsiAiAAKAL0ASIBSwRAIAIgAWsiAyAAKALsASABa0sEQCAWIAEgA0ECQQIQ1gYgACgC9AEhAQsgACgC8AEiCCABQQF0aiEGIANBAk8EfyADQQF0QQJrIgQEQCAGQQAgBPwLAAsgASADaiIDQQFrIQEgCCADQQF0akECawUgBgtBADsBACAAIAFBAWoiATYC9AELIAUEQEEAIQNBAiEBAkADQCAAKALcASIGIAFJBEAgAUECayABIAZBxO7BABCgBQALIAAoAvQBIgYgA0sEQCAAKALwASABakECayAAKALYASABakECay8AADsBACABQQJqIQEgAiADQQFqIgNGDQIMAQsLIAMgBkG07sEAEPAHAAsgACgC9AEhAQsgACAAKAKQAiACIAAoAvABIAEQwQQCQAJAAkAgACgC3AEiAyACQQF0IgFPBEAgAEEANgLcASADIAFrIQYgBUUNASABIANGDQMgBkUNAiAAKALYASIDIAEgA2ogBvwKAAAMAgtBACABIANBqKPHABCgBQALIAEgA0YNAQsgACAGNgLcAQsgACAAKAKQAiACaiICNgKQAiACIAAoAogCRw0JIABBADYCkAIgAEEIOgCUAgwJC0EtIREMAQtBGCERCyAAKALcASARbiICIAAoAogCIAAoApACayIGSQRAIAIiBkGAgARJDQoLQYCABCAGIAZBgIAETxsiDSARbCILIAAoAugBIgFLBEAgCyABayICIAAoAuABIAFrSwRAIBIgASACQQRBBBDWBiAAKALoASEBCyAAKALkASIIIAFBAnRqIQMgAkECTwR/IAJBAnRBBGsiBARAIANBACAE/AsACyABIAJqIgJBAWshASAIIAJBAnRqQQRrBSADC0EANgIAIAAgAUEBaiIBNgLoAQsgDUEJbCEOAkAgBgRAIA1B4ABsIQkgDUEYbCEIQQAhD0EAIQcCQANAIAcgEWwiASAAKALcASICTw0DAkACQAJAAkAgB0EJbCIDIAAoAugBIgJPDQAgACgC5AEgA0ECdGogACgC2AEgAWotAACzQwAAAMOSQwAAADyUOAIAIAFBA2oiBCAAKALcASICTwRAIAQhAQwICyADQQNqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBmoiBCAAKALcASICTwRAIAQhAQwICyADQQZqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAWoiBCAAKALcASICTwRAIAQhAQwICyADQQFqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBGoiBCAAKALcASICTwRAIAQhAQwICyADQQRqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBB2oiBCAAKALcASICTwRAIAQhAQwICyADQQdqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBAmoiBCAAKALcASICTwRAIAQhAQwICyADQQJqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBBWoiBCAAKALcASICTwRAIAQhAQwICyADQQVqIgUgACgC6AEiAk8EQCAFIQMMAQsgACgC5AEgBUECdGogACgC2AEgBGotAACzQwAAAMOSQwAAADyUOAIAIAFBCGoiBCAAKALcASICTwRAIAQhAQwICyADQQhqIgMgACgC6AEiAk8NACAAKALkASADQQJ0aiAAKALYASAEai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAUsNAQwCCyADIAJBpO7BABDwBwALAkACQCABQQlqIgMgACgC3AEiBE8NACAHQQ9sIA5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEMaiIDIAAoAtwBIgRPDQAgAkEDaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ9qIgMgACgC3AEiBE8NACACQQZqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEmoiAyAAKALcASIETw0AIAJBCWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEVaiIDIAAoAtwBIgRPDQAgAkEMaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQpqIgMgACgC3AEiBE8NACACQQFqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBDWoiAyAAKALcASIETw0AIAJBBGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEQaiIDIAAoAtwBIgRPDQAgAkEHaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRNqIgMgACgC3AEiBE8NACACQQpqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBFmoiAyAAKALcASIETw0AIAJBDWoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUELaiIDIAAoAtwBIgRPDQAgAkECaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQQ5qIgMgACgC3AEiBE8NACACQQVqIgUgACgC6AEiBE8EQCAFIQIMBAsgACgC5AEgBUECdGogACgC2AEgA2otAACzQwAAAMOSQwAAADyUOAIAIAFBEWoiAyAAKALcASIETw0AIAJBCGoiBSAAKALoASIETwRAIAUhAgwECyAAKALkASAFQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgAUEUaiIDIAAoAtwBIgRPDQAgAkELaiIFIAAoAugBIgRPBEAgBSECDAQLIAAoAuQBIAVBAnRqIAAoAtgBIANqLQAAs0MAAADDkkMAAAA8lDgCACABQRdqIgMgACgC3AEiBE8NACACQQ5qIgIgACgC6AEiBE8NAyAAKALkASACQQJ0aiAAKALYASADai0AALNDAAAAw5JDAAAAPJQ4AgAgACgCjAJBAk0NAkEAIQQgCSEDDAELIAMgBEH07cEAEPAHAAsCQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAA0AgACgC3AEiAiAEIA9qIgFBGGpLBEAgBCAIaiIFIAAoAugBIgJPDQ8gACgC5AEgA2ogASAAKALYAWpBGGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEbak0NByAAKALoASICIAVBA2pNDQ4gACgC5AEgA2pBDGogASAAKALYAWpBG2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEeak0NBiAAKALoASICIAVBBmpNDQ0gACgC5AEgA2pBGGogASAAKALYAWpBHmotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEhak0NBSAAKALoASICIAVBCWpNDQwgACgC5AEgA2pBJGogASAAKALYAWpBIWotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEkak0NBCAAKALoASICIAVBDGpNDQsgACgC5AEgA2pBMGogASAAKALYAWpBJGotAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEnak0NAyAAKALoASICIAVBD2pNDQogACgC5AEgA2pBPGogASAAKALYAWpBJ2otAACzQwAAAMOSQwAAADyUOAIAIAAoAtwBIgIgAUEqak0NAiAAKALoASICIAVBEmpNDQkgACgC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xOvBABDwBwALIAkgAUHU68EAEPAHAAsgACgC5AEgAmogCioCMDgCACAFIAAoAugBIgFPDQogACgC5AEgAmpBBGogCioCNDgCACAHIAAoAugBIgFPDQkgACgC5AEgAmpBCGogCioCODgCACAJIAAoAugBIgFPDQggACgC5AEgAmpBDGogCioCPDgCACACQRBqIQIgA0EEaiEDIAggD0EBaiIPSw0ACwwKCyABIARBpOzBABDwBwALIAcgBEG07MEAEPAHAAsgByAEQcTswQAQ8AcACyADIARB1OzBABDwBwALIAQgC0Hk7MEAEPAHAAsgBCAHQfTswQAQ8AcACyAEIAdBhO3BABDwBwALIAkgAUGU7MEAEPAHAAsgByABQYTswQAQ8AcACyAFIAFB9OvBABDwBwALIAAgACgCkAIgCCAAKALkASAAKALoARCPBQJAAkACQCAAKALcASIBIAggDWwiAk8EQCAAQQA2AtwBIAEgAmshAyAGRQ0BIAEgAkYNAyADRQ0CIAAoAtgBIgEgASACaiAD/AoAAAwCCwwQCyABIAJGDQELIAAgAzYC3AELIAAgACgCkAIgCGoiAjYCkAIgAiAAKAKIAkcNBSAAQQA2ApACIABBBToAlAIMBQsgACgC3AEiAUEDbiICIAAoAogCIAAoApACayIISQRAIAIhCCABQYCADEkNCAtBgIAEIAggCEGAgARPGyIEQQNsIgYgACgC6AEiAUsEQCAGIAFrIgIgACgC4AEgAWtLBEAgEiABIAJBBEEEENYGIAAoAugBIQELIAAoAuQBIgUgAUECdGohAyACQQJPBH8gAkECdEEEayIHBEAgA0EAIAf8CwALIAEgAmoiAkEBayEBIAUgAkECdGpBBGsFIAMLQQA2AgAgACABQQFqIgE2AugBCwJAAkACQAJAAkACQAJAAkACQCAIBEBBACEDQQAhAQNAIAEgACgC3AEiAk8NAiABIAAoAugBIgJPDQMgACgC5AEgA2ogACgC2AEgAWotAACzQwAAgD2UQwAAIMGSEIgEOAIAIAFBAWoiAiAAKALcASIFTw0EIAIgACgC6AEiBU8NBSAAKALkASADakEEaiAAKALYASABakEBai0AALNDAACAPZRDAAAgwZIQiAQ4AgAgAUECaiICIAAoAtwBIgVPDQYgAiAAKALoASIFTw0HIAAoAuQB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LGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8C/AQ3A3ggAyAs/R8B/AQ3A3AgAyAs/R8A/AQ3A2ggA0GIAWogA0HoAGoQsgMgAkEYaiADKQOYATcDACACQQhqIAP9AAOIAf0LAwAgAkEgaiICIAhHDQALIARBAUYNACAEQRVPBEAgBSAEEJAEDAELIAUgBBD7BAsgAyAENgKgASADICQ3A4gBIANB6ABqQaSWwAAgA0GIAWoQ4AQCQCADKAJoIggEQCADKAJsIgZBBGsoAgAiAkF4cSIFQQRBCCACQQNxIgIbIAhqSQ0BIAJBACAFIAhBJ2pLGw0KIAYQogILQQAhBSADQQA2AqgBIANCgICAgMAANwKgASADQQA2ArQBIANCgICAgMAANwKsASADQQA2ArgBIANBADYCvAEgBEUEQEKAgICAgICAgIB/IRxC////////////ACEdQQQhCUL///////////8AIR5C////////////ACEfQoCAgICAgICAgH8hIEKAgICAgICAgIB/ISEMAwtBACECQv///////////wAhH0KAgICAgICAgIB/ISFCgICAgICAgICAfyEgQoCAgICAgICAgH8hHEL///////////8AIR5C////////////ACEdA0ACQAJAIAMoAhwiESACQQV0IgdqIgUoAgAiBiAAKAIIIglJBEAgACgCBCILIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADIAP9CQJkIiv95wH9aCIs/R8C/AQhGyAs/R8B/AQhGSAs/R8A/AQhGiAEIAJBAWoiCE0EQCACIQ0MAwsgBEEBayENIBJBAXEEQCAEIQgMAwsgByARakEgaiEHA0AgCSAHKAIAIgZNBEAgBiAJQdjRxgAQ8AcACyALIAZBLGxqIgb9XQIIIAYqAhAiAf0gAiAB/SADICv95wH9aCIs/R8A/AQgGlIgLP0fAfwEIBlSciAs/R8C/AQgG1JyDQIgB0EgaiEHIAQgCEEBaiIIRw0ACyAEIQgMAgsgBiAJQdjRxgAQ8AcACyAIQQFrIQ0LICEgGyAbICFTGyEhICAgGSAZICBTGyEgIBwgGiAaIBxTGyEcIB8gGyAbIB9VGyEfIB4gGSAZIB5VGyEeIB0gGiAaIB1VGyEdIAMgAygCvAFBAWo2ArwBIAMpA0giGSAI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mAUgBhDDBCEoIAJBBmoiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIA0gACgClAUgACgCmAUgBhDDBCEoIAJBB2oiASAAKALcBCIETwRAIAEhAgwGCyAAKALYBCABQQJ0aiAoOAIAIAUgACgClAUgACgCmAUgBhDDBCEoIAJBCGoiAiAAKALcBCIETw0FIAAoAtgEIAJBAnRqICg4AgALIAAtAPwBIgJBCEcEQCAALQDsAiEFIAAoAugCIAAtAOQCIQ0gACgC4AIgAC0A3AIhDyAAKALYAiAALQDUAiERIAAoAtACIAAtAMwCIRUgACgCyAIgAC0AxAIhFyAAKALAAiAALQC8AiEZIAAoArgCIAAtALQCIRsgACgCsAIgAC0ArAIhHSAAKAKoAiAALQCkAiEfIAAoAqACIAAtAJwCISEgACgCmAIgAC0AlAIhIyAAKAKQAiAALQCMAiElIAAoAogCIAAtAIQCIQEgACgCgAIgACgC+AEgAiAAKAKUBSAAKAKYBSAGEMMEISggCEEPbCICIAAoAugEIgRPDQQgACgC5AQgAkECdGogKDgCACABIAAoApQFIAAoApgFIAYQwwQhKCACQQFqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAlIAAoApQFIAAoApgFIAYQwwQhKCACQQJqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAjIAAoApQFIAAoApgFIAYQwwQhKCACQQNqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAhIAAoApQFIAAoApgFIAYQwwQhKCACQQRqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAfIAAoApQFIAAoApgFIAYQwwQhKCACQQVqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAdIAAoApQFIAAoApgFIAYQwwQhKCACQQZqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAbIAAoApQFIAAoApgFIAYQwwQhKCACQQdqIgEgACgC6AQiBE8EQCABIQIMBQsgACgC5AQgAUECdGogKDgCACAZIAAoApQFIAAoApgFIAYQ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AELf0JWLxqyZuQqFhFANASAGIAJBAWoiAkcNAAsgAUGAgARJDQRBqODBAEEUELQIIQEMCgsgASACSQ0LIANB8AdqIAUgAhCXAyADKALwB0EBRgRAIAMpAvQHEL4IIQEMCgsgA0HwB2ogAygC9AcgAygC+AcQUSADKALwByEBIAMoApwJIgZBgICAgHhGBEAgAUUNBAwKCyADQQRyIANB8AdqIgVBBHJBqAH8CgAAIAMgA/0AA6AJ/QsDsAEgAyAGNgKsASADIAE2AgACQCADLQC5ASIMRQRAIANB8ABqIQEgAy0AuAFFBEAgAygCqAEhByADKAKUASEGIANBsAZqIgogARDnAyAFIAcgBiAKEKQBIAMoAvAHIQEgAygC9AwiBEGAgICAeEYNAiADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIAMoAoQJIQsgA0HQA2ogA0GQCWpBzAH8CgAAIAMoAuAKIQggAygC3AohCiADQbACaiADQeQKakGgAfwKAAAgAygChAwhCSADQcABaiADQYgMakHsAPwKAAAgAykD+AwhLSADQQA6APgHIAMgCTYC9AcgAyAHNgLwByAAIAUQqwMgASEFDAULIAMoAqgBIQkgAygClAEhBSADQbAGaiIGIAEQ5wMgA0HwB2oiByAJIAUgBhC4AkGAgICAeCEEIAMoAvAHIQEgAygChAkiC0GAgICAeEYNASADKAL0ByEGIANBoAVqIANB+AdqQYwB/AoAACADKQOICSEsIANBADoA+AcgA0EANgL0ByADIAk2AvAHIAAgBxCrAyABIQUMBAsgA0GwBmoiASADQcAB/AoAACADQfAHaiIGIAEQeiADKAL0ByEBIAMoAvAHIgVBgICAgHhGDQIgA0GgBWogA0H4B2pBjAH8CgAAIAMpAogJISwgAygChAkhCyADQdADaiADQZAJakHMAfwKAAAgAygC3AohCiADKALgCiEIIANBADoA+AcgAyAINgL0ByADIAo2AvAHIAAgBhCrA0GCgICAeCEEIAEhBgwDCyADEK0DIAENCQwDC0Gwq8EAQRAQtAghAQwICyABRQ0BDAcLIAAoApAHIgEgAkELaiICSQ0CIABBADYCkAcgASACRwRAIAEgAmsiAQRAIAAoAowHIgcgAiAHaiAB/AoAAAsgACABNgKQBwsCQCAA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IgJBCEcEQCAALQDkBCEFIAAoAuAEIAAtANwEIQ0gACgC2AQgAC0A1AQhDyAAKALQBCAALQDMBCESIAAoAsgEIAAtAMQEIRUgACgCwAQgAC0AvAQhFyAAKAK4BCAALQC0BCEZIAAoArAEIAAtAKwEIRsgACgCqAQgAC0ApAQhHSAAKAKgBCAALQCcBCEfIAAoApgEIAAtAJQEISEgACgCkAQgAC0AjAQhIyAAKAKIBCAALQCEBCElIAAoAoAEIAAtAPwDIQEgACgC+AMgACgC8AMgAiAAKAKMByAAKAKQByAHEMMEISggCEEPbCICIAAoAuAGIgRPDQQgACgC3AYgAkECdGogKDgCACABIAAoAowHIAAoApAHIAcQwwQhKCACQQFqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAlIAAoAowHIAAoApAHIAcQwwQhKCACQQJqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAjIAAoAowHIAAoApAHIAcQwwQhKCACQQNqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAhIAAoAowHIAAoApAHIAcQwwQhKCACQQRqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAfIAAoAowHIAAoApAHIAcQwwQhKCACQQVqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAdIAAoAowHIAAoApAHIAcQwwQhKCACQQZqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAbIAAoAowHIAAoApAHIAcQwwQhKCACQQdqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAZIAAoAowHIAAoApAHIAcQwwQhKCACQQhqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAXIAAoAowHIAAoApAHIAcQwwQhKCACQQlqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACAVIAAoAowHIAAoApAHIAcQwwQhKCACQQpqIgEgACgC4AYiBE8EQCABIQIMBQsgACgC3AYgAUECdGogKDgCACASIAAo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ASADIAQ2AqwBIAMgAjYCACADLQC5ASINRQRAIANB8ABqIRECQCADLQC4AUUEQCADKAKoASEJIAMoApQBIQQgA0GwBmoiAiAREOcDIAYgCSAEIAIQpAEgAygC8AchAiADKAL0DCIFQYCAgIB4Rg0BIAMoAvQHIQogA0GgBWogA0H4B2pBjAH8CgAAIAMpA4gJISwgAygChAkhDiADQdADaiADQZAJakHMAfwKAAAgAygC4AohDCADKALcCiEHIANBsAJqIANB5ApqQaAB/AoAACADKAKEDCESIANBwAFqIANBiAxqQewA/AoAACADKQP4DCEtIANBADoA+AcgAyASNgL0ByADIAk2AvAHIAAgBhDqAQwECyADKAKoASEJIAMoApQBIQogA0GwBmoiAiAREOcDIANB8AdqIgQgCSAKIAIQuAJBgICAgHghBSADKALwByECIAMoAoQJIg5BgICAgHhGDQAgAygC9AchCiADQaAFaiADQfgHakGMAfwKAAAgAykDiAkhLCADQQA6APgHIANBADYC9AcgAyAJNgLwByAAIAQQ6gEMAwsgAxCtAyACRQ0DDAkLIANBsAZqIgIgA0HAAfwKAAAgA0HwB2oiCiACEHogAygC9AchAiADKALwByIEQYCAgIB4RwRAIANBoAVqIANB+AdqQYwB/AoAACADKQKICSEsIAMoAoQJIQ4gA0HQA2ogA0GQCWpBzAH8CgAAIAMoAtwKIQcgAygC4AohDCADQQA6APgHIAMgDDYC9AcgAyAHNgLwByAAIAoQ6gFBgoCAgHghBSACIQogBCECDAILIAINCAwCC0Gwq8EAQRAQtAghAgwHCyAAKAL4BSIEIAFBC2oiCUkNAiAAQQA2AvgFIAQgCUcEQCAEIAlrIgQEQCAAKAL0BSIBIAEgCWogBPwKAAALIAAgBDYC+AULAkAgACgC5AUiAUGDgICAeEYNACAAQeAAaiEEAkACQAJAQQEgAUGAgICAeHMgAUEAThsOAgECAAsgBBDAAQwCCyAEENADDAELIAQQkgILIAAgCjYCZCAAIAI2AmAgAEHoAGogA0GgBWpBjAH8CgAAIAAgLDcD+AEgACAONgL0ASAAQYACaiADQdADakHMAfwKAAAgACAMNgLQAyAAIAc2AswDIABB1ANqIANBsAJqQaAB/AoAACAAIBI2AvQEIABB+ARq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Aw0UIAVBg47CAEECEMMDDRQLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAAwTCyABKAIAQZ/7wwBBESABKAIEKAIMEQAAIQAMEgtBASEAIAIgA0EBajYCDCABKAIAIgNB+f/DAEEPIAEoAgQiBSgCDCIEEQAADRECQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRMgAkEMaiABEOcERQ0BDBMLIANBhY7CAEECIAQRAAANEiACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRIgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0SCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEQtBASEAIAIgA0EBajYCDCABKAIAIgNBiIDEAEEQIAEoAgQiBSgCDCIEEQAADRACQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRIgAkEMaiABEOcERQ0BDBILIANBhY7CAEECIAQRAAANESACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDREgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0RCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMEAtBASEAIAIgA0EBajYCDCABKAIAIgNBmIDEAEEQIAEoAgQiBSgCDCIEEQAADQ8CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADREgAkEMaiABEOcERQ0BDBELIANBhY7CAEECIAQRAAANECACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDRAgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0QCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDwtBASEAIAIgA0EBajYCDCABKAIAIgNBqIDEAEEOIAEoAgQiBSgCDCIEEQAADQ4CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADRAgAkEMaiABEOcERQ0BDBALIANBhY7CAEECIAQRAAANDyACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQ8gAigCIEGDjsIAQQIgAigCJCgCDBEAAA0PCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDgtBASEAIAIgA0EBajYCDCABKAIAIgNBtoDEAEELIAEoAgQiBSgCDCIEEQAADQ0CQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADQ8gAkEMaiABEOcERQ0BDA8LIANBhY7CAEECIAQRAAANDiACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQ4gAigCIEGDjsIAQQIgAigCJCgCDBEAAA0OCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDQtBASEAIAIgA0EBajYCDCABKAIAIgNBwYDEAEEaIAEoAgQiBSgCDCIEEQAADQwCQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADQ4gAkEMaiABEOcERQ0BDA4LIANBhY7CAEECIAQRAAANDSACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQ0gAigCIEGDjsIAQQIgAigCJCgCDBEAAA0NCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMDAtBASEAIAIgA0EBajYCDCABKAIAIgNB24DEAEEYIAEoAgQiBSgCDCIEEQAADQsCQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADQ0gAkEMaiABEOcERQ0BDA0LIANBhY7CAEECIAQRAAANDCACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQwgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0MCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMCwtBASEAIAIgA0EBajYCDCABKAIAIgNB84DEAEETIAEoAgQiBSgCDCIEEQAADQoCQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADQwgAkEMaiABEOcERQ0BDAwLIANBhY7CAEECIAQRAAANCyACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQsgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0LCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMCgtBASEAIAIgA0EBajYCDCABKAIAIgNBhoHEAEEWIAEoAgQiBSgCDCIEEQAADQkCQCABLQAKQYABcUUEQCADQaXLxABBASAEEQAADQsgAkEMaiABEOcERQ0BDAsLIANBhY7CAEECIAQRAAANCiACQQE6AB8gAiAFNgIUIAIgAzYCECACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEOcEDQogAigCIEGDjsIAQQIgAigCJCgCDBEAAA0KCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQAMCQsgASgCAEGcgcQAQREgASgCBCgCDBEAACEADAgLIAIgA0EBajYCECABKAIAQcCBxABBEiABKAIEKAIMEQAAIQAgAkEAOgAlIAIgADoAJCACIAE2AiAgAkEgakHSgcQAQQMgAkEQakGwgcQAEJ4FIAItACUiAyACLQAkIgRyIQAgBEEBcSADQQFHcg0HKAIAIgAtAApBgAFxRQRAIAAoAgBBvcvEAEECIAAoAgQoAgwRAAAhAAwICyAAKAIAQfHJxABBASAAKAIEKAIMEQAAIQAMBwsgASgCAEHVgcQAQQ8gASgCBCgCDBEAACEADAYLQQEhACABKAIAIgRB5IHEAEEPIAEoAgQiBigCDCIFEQAADQUgA0EBaiEDAkAgAS0ACkGAAXFFBEAgBEGly8QAQQEgBREAAA0HIAMgASgCACABKAIEEI4JRQ0BDAcLIARBhY7CAEECIAURAAANBiACIAY2AiQgAiAENgIgIAJBAToAECACIAJBEGo2AiggAyACQSBqIgNBiI/CABCOCQ0GIANBg47CAEECEMMDDQYLIAEoAgBB3snEAEEBIAEoAgQoAgwRAAAhAAwFCyABKAIAQfOBxABBGCABKAIEKAIMEQAAIQAMBAsgAiADQQFqNgIQIAEoAgBBi4LEAEEkIAEoAgQoAgwRAAAhACACQQA6ACUgAiAAOgAkIAIgATYCICACQSBqQYCOxwBBBCACQRBqQZT9wwAQngUgAi0AJSIDIAItACQiBHIhACAEQQFxIANBAUdyDQMoAgAiAC0ACkGAAXFFBEAgACgCAEG9y8QAQQIgACgCBCgCDBEAACEADAQLIAAoAgBB8cnEAEEBIAAoAgQoAgwRAAAhAAwDCyACIANBAWo2AhAgASgCAEGvgsQAQRAgASgCBCgCDBEAACEAIAJBADoAJSACIAA6ACQgAiABNgIgIAJBIGpBgI7HAEEEIAJBEGpBlP3DABCeBSACLQAlIgMgAi0AJCIEciEAIARBAXEgA0EBR3INAigCACIALQAKQYABcUUEQCAAKAIAQb3LxABBAiAAKAIEKAIMEQAAIQAMAwsgACgCAEHxycQAQQEgACgCBCgCDBEAACEADAILIAIgA0EBajYCECABKAIAQb+CxABBGSABKAIEKAIMEQAAIQAgAkEAOgAlIAIgADoAJCACIAE2AiAgAkEgakHYgsQAQQggAkEQakGU/cMAEJ4FIAItACUiAyACLQAkIgRyIQAgBEEBcSADQQFHcg0BKAIAIgAtAApBgAFxRQRAIAAoAgBBvcvEAEECIAAoAgQoAgwRAAAhAAwCCyAAKAIAQfHJxABBASAAKAIEKAIMEQAAIQAMAQsgASgCAEHggsQAQQ0gASgCBCgCDBEAACEACyACQTBqJAAgAEEBcQu+LgIWfwR+IwBBoARrIgIkACACIAEpAgAiGDcCMCACQYABOgA8IAJBADYCLCACQoCAgIAQNwIkIAIgASgCCCIBNgI4IBinIQQCQAJAAkACQCACKAI0IgMgAUsEQANAIAEgBGotAAAiD0EJayILQRdLQQEgC3RBk4CABHFFcg0CIAMgAUEBaiIBRw0ACyACIAM2AjggAyEBCyACQQU2AogCIAJBGGogBCADIAFBAWoiASADIAEgA0kbEPgBIAJBiAJqIAIoAhggAigCHBCmCCEBIABBAjYCACAAIAE2AgQMAQsgAiABNgI4AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAPQdsARwRAIA9B+wBGDQEgAkEkaiIBIAJBnwRqQfjfwQAQ/QEgARDTBiEBIABBAjYCACAAIAE2AgQMDwsgAkH/ADoAPCACIAFBAWo2AjggAkEBOgCgAyACIAJBJGo2ApwDIAJBiAJqIAJBnANqEOIDIAItAIgCQQFGBEAgAigCjAIhAQwMCyACLQCJAkEBRw0CIAJBCGogAigCnAMQwAMgAigCDCELIAIoAghBAXEEQCALIQEMDAsgAkGIAmogAkGcA2oQ4gMgAi0AiAJBAUYEQCACKAKMAiEBDAwLAkACQAJAAkACQAJAAkACQCACLQCJAkEBRgRAIAIoApwDELsDIgENFCACQYgCaiACQZwDahDiAyACLQCIAkEBRgRAIAIoAowCIQEMFQsgAi0AiQJBAUcNAiACQYgCaiACKAKcAxDqAyACKAKIAkEBRw0BIAIoAowCIQEMFAtBAUGgqsYAQaiqxgAQuAchAQwTCyACKQOQAiEYIAJBiAJqIAJBnANqEOIDIAItAIgCQQFGBEAgAigCjAIhAQwTCyACLQCJAkEBRw0CIAJBiAJqIAIoApwDEL4CIAIoAogCIglBAkcNASACKAKMAiEBDBILQQJBoKrGAEGoqsYAELgHIQEMEQsgAigCjAIhDyACQYgCaiACQZwDahDiAyACLQCIAkEBRgRAIAIoAowCIQEMEQsgAi0AiQJBAUcNAiACQYgCaiACKAKcAxCbAiACLQCIAkEBRw0BIAIoAowCIQEMEAtBA0GgqsYAQaiqxgAQuAchAQwPCyACLQCJAiEDIAJBiAJqIAJBnANqEOIDIAItAIgCQQFGBEAgAigCjAIhAQwPCyACLQCJAkEBRw0BIAJBiAJqIAIoApwDEL4CIAIoAogCIghBAkcNAiACKAKMAiEBDA4LQQRBoKrGAEGoqsYAELgHIQEMDQtBBUGgqsYAQaiqxgAQuAchAQwMCyACKAKMAiEQIAJBiAJqIQQjAEEQayIBJAAgASACQZwDaiIHEOIDAkAgAS0AAEEBRgRAIAQgASgCBDYCCCAEQgI3AwAMAQsgAS0AAUUEQCAEQgA3AwAMAQsgASAHKAIAEOoDIAEoAgBBAUYEQCAEIAEoAgQ2AgggBEICNwMADAELIAQgASkDCDcDCCAEQgE3AwALIAFBEGokACACKQOIAiIZQgJRDQogGUIBUg0BIAIpA5ACIRkjAEEQayIBJAAgAUEEaiAHEOIDAkAgAS0ABEEBRgRAIAQgASgCCDYCBCAEQYGAgIB4NgIADAELIAEtAAVFBEAgBEGAgICAeDYCAAwBCyABQQRqIAcoAgAQdiABKAIEQYCAgIB4RgRAIAQgASgCCDYCBCAEQYGAgIB4NgIADAELIAQgASgCDDYCCCAEIAEpAgQ3AgALIAFBEGokACACKAKMAiEBIAIoAogCIg1BgYCAgHhGDQsgDUGAgICAeEYNBSACIAIoApACNgKsAyACIAE2AqgDIAIgDTYCpAMgBCAHENEGIAIoAowCIQEgAigCiAIiBUEERg0JIAIgAigCwAI2AuADIAIgAv0AArAC/QsD0AMgAiAC/QACoAL9CwPAAyACIAL9AAKQAv0LA7ADIAVBA0YNBCMAQRBrIgwkACAMQQhqIAcQ4gMCQCAMLQAIQQFGBEAgBCAMKAIMNgIEIARBAzYCAAwBCyAMLQAJRQRAIARBAjYCAAwBCyAMQQhqIAcoAgAQ2QQgDCgCCCIHQQJGBEAgBCAMKAIMNgIEIARBAzYCAAwBCyAEIAwoAgw2AgQgBCAHNgIACyAMQRBqJAAgAigCiAIiDEEDRgRAIAIoAowCIQEMCgsgDEECRg0DIAIoAowCIRIgAkGIAmohCiMAQRBrIgQkACAEQQRqIAJBnANqIgcQ4gMCQCAELQAEQQFGBEAgCiAEKAIINgIEIApBgoCAgHg2AgAMAQsgBC0ABUUEQCAKQYGAgIB4NgIADAELIARBBGogBygCABD3AiAEKAIEQYGAgIB4RgRAIAogBCgCCDYCBCAKQYKAgIB4NgIADAELIAogBCgCDDYCCCAKIAQpAgQ3AgALIARBEGokACACKAKMAiEKIAIoAogCIg1BgoCAgHhGBEAgCiEBDAoLIA1BgYCAgHhHBEAgAigCkAIhBiACIAIoAqwDNgLIASACIAIpAqQDNwPAASACIAL9AAOwA/0LA9ABIAIgAv0AA8AD/QsD4AEgAiAC/QAD0AP9CwPwASACIAIoAuADNgKAAiABIQ4gDyEBDA0LQQpBoKrGAEGoqsYAELgHIQEMCQsgAkH/ADoAPCACIAFBAWo2AjggAkEBOgCoAyACIAJBJGo2AqQDIAJBkAJqIRNBgYCAgHghBEGAgICAeCEFQQMhD0ECIQ5BAiEJQQMhFEECIRUCQANAIAJBiAJqIAJBpANqEI8DIAItAIgCQQFGBEAgAigCjAIhAyAFIQYMAgsCQAJAIAItAIkCQQFGBEAgAigCpAMiAUEANgIIIAEgASgCFEEBajYCFCACQYgCaiABQQxqIAEQggIgAigCjAIhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAKIAkECRwRAAkACQAJAIAIoApACQQRrDgoEAAYBFQUVBxUCFQsgAygAAEHj3tXzBnMgA0EEaiIRLQAAQfQAc3JFDQkgAygAAEHtwuGbBXMgES0AAEHoAHNyDRQgFUECRg0KQbepxgBBBRCJCCEDIAUhBgwWCyADKAAAQfbKyZsHcyADQQNqIhEoAABB89K98wZzckUNBiADKAAAQezekaMFcyARKAAAQdTklasGc3JFDQogAygAAEHj3rXrBnMgESgAAEHtyrmjB3NyDRMgBEGBgICAeEYNEEH3qcYAQQcQiQghAyAEQYCAgIB4ckGAgICAeEYNGyAHIARBARDBBwwbCyADKQAAQuHYsZuErZ236wCFIANBBWoiESkAAEL13K2TlI/dsvMAhYRQDQsgAykAAELz4LGLxq6Rt+MAhSARKQAAQsXcjfvGrJq35wCFhFBFDRIgD0EDRg0NQd+pxgBBDRCJCCEDCyAFIQYMEwsgAygAAEH08sGrBkYNBAwQCyADKQAAQuPQ1fO27dS0+gCFIANBCGoxAABC5QCFhFBFDQ8gCUECRg0HQcOpxgBBCRCJCCEDIAUhBgwRCyADKAAAQePQ1fMGcyADQQRqLwAAQevmAXNyDQ4gBUGAgICAeEYNCEHZqcYAQQYQiQghAyAFIQYMEAsgAykAAELz0I36xqzZoe8AhSADQQNqKQAAQu/IlZv0rZ239ACFhFBFDQ0gDkECRg0JQeypxgBBCxCJCCEDIAUhBgwPCyAGBEBBp6nGAEEHEIkIIQMgBSEGDA8LIAEQ+QUiEAR/QQEFIAJBEGogARDAAyACKAIUIRAgAigCEAsiAUEBcQRAIBAhAyAFIQYMDwtBASEGDA0LIBZBAXENCiABEPkFIgMEQCAFIQYMDgtBASEWIAEQuwMiA0UNDCAFIQYMDQsgGlBFBEBBsqnGAEEFEIkIIQMgBSEGDA0LAkAgARD5BSIDRQRAIAJBiAJqIAEQ6gMgAigCiAJBAUcNASACKAKMAiEDCyAFIQYMDQsgAikDkAIhGUIBIRoMCwsCQCABEPkFIgNFBEAgAkGIAmogARC+AiACKAKIAiIVQQJHDQEgAigCjAIhAwsgBSEGDAwLIAIoAowCIQgMCgsgFEEDRwRAQbypxgBBBxCJCCEDIAUhBgwLCwJAIAEQ+QUiA0UEQCACQYgCaiABEJsCIAItAIgCQQFHDQEgAigCjAIhAwsgBSEGDAsLIAItAIkCIRQMCQsCQCABEPkFIgNFBEAgAkGIAmogARC+AiACKAKIAiIJQQJHDQEgAigCjAIhAwsgBSEGDAoLIAIoAowCIQwMCAsgG1BFBEBBzKnGAEENEIkIIQMgBSEGDAkLAkAgARD5BSIDRQRAIAJBiAJqIAEQ6gMgAigCiAJBAUcNASACKAKMAiEDCyAFIQYMCQsgAikDkAIhGEIBIRsMBwsCQCABEPkFIgNFBEAgAkGIAmogARB2IAIoAowCIQMgAigCiAIiAUGAgICAeEcNAQtBgICAgHghBgwICyACKAKQAiELIAMhCiABIQUMBgsCQCABEPkFIgNFBEAgAkGIAmogARCFASACKAKMAiESIAIoAogCIg9BA0cNASASIQMLIAUhBgwHCyACIBMoAjA2AuADIAIgE/0AAiD9CwPQAyACIBP9AAIQ/QsDwAMgAiAT/QACAP0LA7ADDAULAkAgARD5BSIDRQRAIAJBiAJqIAEQ2QQgAigCiAIiDkECRw0BIAIoAowCIQMLIAUhBgwGCyACKAKMAiENDAQLIAEQ+QUiAw0KIAJBiAJqIAEQ9wIgAigCjAIhByACKAKIAiIEQYGAgIB4RgRAIAchAyAFIQYMDAsgAigCkAIhFwwDCyAGQQFxRQRAQaepxgBBBxCGCCEDIAUhBgwECyAWQQFxRQRAQa6pxgBBBBCGCCEDIAUhBgwECyAap0EBcUUEQEGyqcYAQQUQhgghAyAFIQYMBAsgG1AEQEHMqcYAQQ0QhgghAyAFIQYMBAtBgICAgHghBiAFQYCAgIB4RwRAQQIhASAPQQNHBEAgAiACKALgAzYCmAQgAiAC/QAC0AP9CwOIBCACIAL9AALAA/0LA/gDIAIgAv0AArAD/QsD6AMgDyEBCyAJQQAgCUECRxshFiAVQQAgFUECRxshCUECIBQgFEEDRhshA0GAgICAeCAEIARBgYCAgHhGGyEGIA5BACAOQQJHGyEOIAetIBetQiCGhCEaDAwLQdmpxgBBBhCGCCEDDAMLQa6pxgBBBBCJCCEDIAUhBgwCCyABEK8BIgNFDQALIAUhBgsgBEUgBEGCgICAeEhyDQYCQCAHQQRrKAIAIgFBeHEiCEEEQQggAUEDcSIBGyAEak8EQCABQQAgCCAEQSdqSxsNASAHEKICDAgLDA8LDA8LQQZBoKrGAEGoqsYAELgHIQEMCQtBAEGgqsYAQaiqxgAQuAchAQwIC0EJQaCqxgBBqKrGABC4ByEBDAULQQhBoKrGAEGoqsYAELgHIQEMBAtBB0GgqsYAQaiqxgAQuAchAQwFCyAFIQYLQQIhCQJAIAZBgICAgHhGDQAgCwRAIApBJGohAQNAIAFBBGsoAgAiBEEASgRAIAEoAgAiEEEEaygCACIIQXhxIg1BBEEIIAhBA3EiCBsgBGpJDQsgCEEAIA0gBEEnaksbDQwgEBCiAgsgAUEwaiEBIAtBAWsiCw0ACwsgBkUNACAKQQRrKAIAIgFBeHEiCyAGQTBsIgRBBEEIIAFBA3EiARtySQ0IIAFBACALIARBJ2pLGw0JIAoQogILIAMhCAsgAiACLQA8QQFqOgA8IAJBJGoQsAUhBCACIBI2ArQCIAIgATYCsAIgAiAYNwOoAiACIBk3A6ACIAIgDTYCnAIgAiAONgKYAiACIAw2ApQCIAIgFjYCkAIgAiAINgKMAiACIAM6AIgDIAIgBDYCkAMgAiAQNgKEAyACIAY2AvgCIAIgCzYC9AIgAiAKNgLwAiACIAU2AuwCIAIgAv0AA+gD/QsDuAIgAiAC/QAD+AP9CwPIAiACIAL9AAOIBP0LA9gCIAIgAigCmAQ2AugCIAIgCTYCiAIgAiAaNwL8AgJAAkACQCAJQQJHBEAgBA0BIAJBQGsgAkGQAmpBgAH8CgAAIAghBAwICyAEDQEMAgsgCwRAIApBJGohAQNAIAFBBGsoAgAiA0EASgRAIAEoAgAiCEEEaygCACIHQXhxIg5BBEEIIAdBA3EiBxsgA2pJDQsgB0EAIA4gA0EnaksbDQwgCBCiAgsgAUEwaiEBIAtBAWsiCw0ACwsgBQRAIApBBGsoAgAiAUF4cSIDIAVBMGwiBUEEQQggAUEDcSIBG3JJDQkgAUEAIAMgBUEnaksbDQogChCiAgtBAiEJIAZBAEwNBiAapyIBQQRrKAIAIgVBeHEiA0EEQQggBUEDcSIFGyAGakkNCCAFQQAgAyAGQSdqSxsNCSABEKICDAYLIAJBkANqEMQECyAIIQRBAiEJDAQLIAJBpANqEMYFDAELIAIoApACIQELQQIhCQsgAiACLQA8QQFqOgA8IAJBJGoQrgQhBCACIA42ArQCIAIgBTYCsAIgAiAZNwOoAiACIBg3A6ACIAIgEjYCnAIgAiAMNgKYAiACIBA2ApQCIAIgCDYCkAIgAiABNgKMAiACIAL9AAPQAf0LA7gCIAIgAv0AA+AB/QsDyAIgAiAC/QAD8AH9CwPYAiACIAIoAoACNgLoAiACIAIoAsgBNgL0AiACIAIpA8ABNwLsAiACIAk2AogCIAIgBDYCkAMgAiADOgCIAyACIAs2AoQDIAIgBjYCgAMgAiAKNgL8AiACIA02AvgCAkACQAJAIAlBAkcEQCAEDQEgAkFAayACQZACakGAAfwKAAAgASEEDAQLIAQNAQwCCyACKALwAiEFIAIoAvQCIgsEQCAFQSRqIQEDQCABQQRrKAIAIgZBAEoEQCABKAIAIgNBBGsoAgAiCEF4cSIHQQRBCCAIQQNxIggbIAZqSQ0HIAhBACAHIAZBJ2pLGw0IIAMQogILIAFBMGohASALQQFrIgsNAAsLIAIoAuwCIgEEQCAFQQRrKAIAIgZBeHEiAyABQTBsIgFBBEEIIAZBA3EiBhtySQ0FIAZBACADIAFBJ2pLGw0GIAUQogILQQIhCSANQQBMDQIgCkEEaygCACIBQXhxIgVBBEEIIAFBA3EiARsgDWpJDQQgAUEAIAUgDUEnaksbRQRAIAoQogIMAwsMBQsgAkGQA2oQxAQLIAEhBEECIQkLIAlBAkYEQCAEIAJBJGoQ0wYhASAAQQI2AgAgACABNgIEDAELIABBCGogAkFAa0GAAfwKAAAgACAJNgIAIAAgBDYCBCACKAI4IgEgAigCNCIFTw0AIAAoAnQhCiAAKAJwIQYgACgCbCEJIAAoAmghAyAAKAJkIQQgAigCMCEIAkADQCABIAhqLQAAQQlrIgdBF0tBASAHdEGTgIAEcUVyDQEgBSABQQFqIgFHDQALIAIgBTYCOAwBCyACIAE2AjggAkEWNgKIAiACIAggBSABQQFqIgEgBSABIAVJGxD4ASACQYgCaiACKAIAIAIoAgQQpgghASAAQQI2AgAgACABNgIEAkAgCQRAIANBJGohAQNAIAFBBGsoAgAiAEEASgRAIAEoAgAiBUEEaygCACIIQXhxIgdBBEEIIAhBA3EiCBsgAGpJDQUgCEEAIAcgAEEnaksbDQMgBRCiAgsgAUEwaiEBIAlBAWsiCQ0ACwsgBARAIAMgBEEwbEEIEMEHCyAGQQBMDQEgCiAGQQEQwQcMAQsMAgsCQCACKAIkIgAEQCACKAIoIgFBBGsoAgAiBUF4cSIGQQRBCCAFQQNxIgUbIABqSQ0CIAVBACAGIABBJ2pLGw0BIAEQogILIAJBoARqJAAPCwwBC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAueKgMXfwV+AXsjAEHQBmsiBCQAIARB0ABqIAFB8AT8CgAAIARCADcDwAUgBCADrSIbNwPIBQJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAIAQoAnhBAkcEQCAEQUBrIAQoArADIgetIAQoAqwDIgWtfiAELQC4BUEDdCkDkKdIEPwGIAQpA0hQRQRAIARCADcD0AUgBEJ/NwPYBQwJCyAEKQNAIR0gBEIANwPQBSAEIB03A9gFIBsgHVINCCAEQfAAaiEOQSYhDSAEKAKsBUUEQEEBIREMBwsgBC0A1ARFDQIgBEHQBWogDhCqASAELQDQBUEoRg0BIAQpA9AFIhunIg1BCHYhBSAbQiCIpwwDCwwICyAEKAJ4QQJGDQcgBCgCsAMhByAEKAKsAyEFCyAEQThqIA4QlQUgBC0AOEEDdCkD4KdIIAQxADkgBa1+fiIbQvH/////AFoEQAwDCyAHrSAbQgd8QgOIfiIbQiCIpw0CIBunIgxBAEgNAiADIAxJDQMgBEEwaiAOEJUFIAQtADEhCCAELQAwIQkgBCgCyAQgBEEoaiAOEJUFIAQtAChBAnQoApioSGwhBwJAAkACQCAELQApIgVBCGsOCQIAAAAAAAAAAQALIAVBCE0EQCAHQQggBW4iBm4iBSAHIAUgBmxHaiEHDAILDAkLIAdBAXQhBwsCQAJAIAQoAnhBAkcEQCAELQC0A0UEQCAHDQJBoLfGAEE3QeiuxgAQkwgACyAEKAKsAyAEQRhqIA4QlQUgBC0AGEECdCgCtKhIbCEPAkACQAJAIAQtABkiBUEIaw4JAgAAAAAAAAABAAsgBUEITQRAIA9BCCAFbiIGbiIFIA8gBSAGbEdqIQ8MAgsMDAsgD0EBdCEPCyAEKQOgBSEbIARCgICAgBA3A6AFIAQoAqgFIQUgBEEANgKoBSAEIAU2AsgFIAQgGzcDwAUgBCgCeEECRwRAIARBoAVqIRMgCEKBgIyIoICAAiAJrUL/AYNCA4aIp2wiFEH4AXFBA3YhEiAUaCEYIARBjAZqIRkgBEHcBWohGiAEQewEaiEVIARB+ARqIRYDQCAENQKsAyEbIARBEGogDhCVBQJAAkACQAJAAkAgBC0AEEEDdCkD0KhIIBsgBDEAEX5+IhtC8P////8AWARAIBtCB3xCA4inIghBAE4NAQtBJyENIAQoAsAFIgINASAKIQMMDQsCQCAEKALIBSIFIAhPBEAgBCgCxAUhCQwBCyAIIAVrIgYgBCgCwAUgBWtLBEAgBEHABWogBSAGQQFBARDWBiAEKALIBSEFCyAEKALEBSIJIAVqIQggBkECTwR/IAZBAWsiBgRAIAhBACAG/AsACyAJIAUgBmoiBWoFIAgLQQA6AAAgBUEBaiEICyAEIAg2AsgFAn8CQAJAAkACQCAEKAK0BCIHQQJHBEAgBCgCxAQhCiAEKALABCEMIAQoArwEIREgBCgCuAQiDUUEQCAEKAL4BEEATgRAIAQgFigCCDYC2AUgBCAWKQIANwPQBSAEQQA2AoAFIARBATYC/AQgBCgC7AQiEARAIAQoAvAEIgtBBGsoAgAiBUF4cSIGQQRBCCAFQQNxIgUbIBBqSQ0aIAVBACAGIBBBJ2pLGw0bIAsQogILIBUgBCgC2AU2AgggFSAEKQPQBTcCAAsgBEGAgICAeDYC+AQLIAdBAUcNBCAEKAJ4QQJGDRUgBC0AtgNBAnQoAoipSCAMbCEFIAQtALcDIgZBCGsOCQMBAQEBAQEBAgELIARB0AVqIA4QgQUgBC0A0AVBKEcNB0ECIQcMCAsgBkEITQRAIAVBCCAGbiILbiIGIAUgBiALbEdqQQFqDAQLDBQLIAVBAXQhBQsgBUEBagwBCyAEKALQBAshECAEKALIBCEFIARBCGogDhCVBSAELQAIQQJ0KAKkqUggDCAFIAdBAXEbbCEFAkACQAJAIAQtAAkiBkEIaw4JAgAAAAAAAAABAAsgBkEITQRAIAVBCCAGbiILbiIGIAUgBiALbEdqIQUMAgsMEgsgBUEBdCEFCyAFIAhLDQEgBEHQBWogDiAQIAkgBRCOASAELQDQBUEoRw0CDAMLIAQoAsQFIAJBARDBByAKIQMMCwtBACAFIAhBwLHGABCgBQALIAQoAtwFIQogBCgC2AUhDCAEKALUBSERIAQoAtAFIQ1BAyEHCyAEKAKgBSIIBEAgBCgCpAUiCUEEaygCACIFQXhxIgZBBEEIIAVBA3EiBRsgCGpJDQ4gBUEAIAYgCEEnaksbDQ8gCRCiAgsgEyAEKALIBTYCCCATIAQpA8AFNwIAIAdBA0YEQCANQQh2IQUgCiEDDAkLIAdBAkYNBCAEKALIBCEFIAQgDhCVBSAELQAAQQJ0KALAqUggDCAFIAdBAXEbbCEFAkACQAJAIAQtAAEiBkEIaw4JAgAAAAAAAAABAAsgBkEITQRAIAVBCCAGbiIJbiIGIAUgBiAJbEdqIQUMAgsMDgsgBUEBdCEFCyAEKAKoBSIGIAVJBEBBACAFIAZB+K/GABCgBQALAkACQAJAAkACQAJAAkACQAJAIAdBAUYEQCAEKAKkBSEJAkAgFCAUQQFrcUH/AXENAAJAAkACQAJAAkAgGA4FAAECAwQFCyAKQf8BcUEBayIIQQdJDQ0MHgsgCkH/AXFBAWsiCEEHSQ0LDB0LIApB/wFxQQFrIghBB0kNCQwcCyAKQf8BcUEBayIIQQdJDQcMGwsgCkH/AXFBAWsiCEEHSQ0FDBoLIApB/wFxQQFrIghBB08NGSASRQ0DIAxFDQkgDK0hHCASIAhBAnQiBi0AiLBGbCEHIAMgBi0Ai7BGIA0gBi0AirBGbGogD2wgEiAGLQCJsEZsaiIIayEGA0AgBUUNCiADIAhJDQIgEiAFIAUgEksbIgsgBksNAyALBEAgAiAIaiAJIAv8CgAACyAFIAtrIQUgCSALaiEJIAYgB2shBiAHIAhqIQggHEIBfSIcQgBSDQALDAkLQfiuxgAQmQoACyAIIAMgA0Hos8QAEKAFAAtBACALIAZB2LPEABCgBQALQaC3xgBBN0HIs8QAEJMIAAsgDEUNBCAMrSEcIAMgDSAIQQJ0IgstAIqwRmwgCy0Ai7BGaiAPbCIHayALLQCJsEZBAXQiBmshCCALLQCIsEZBAXQhCyAGIAdqIQcCQAJAA0AgBUUNByADIAdPBEAgCEEBTQ0CQQIgBSAFQQJPGyEGIAVBAUYNAyAFIAZrIQUgAiAHaiAJLwAAOwAAIAggC2shCCAHIAtqIQcgBiAJaiEJIBxCAX0iHFBFDQEMCAsLIAcgAyADQbizxAAQoAUAC0EAQQIgCEGYs8QAEKAFAAtBAiAGQaizxAAQ8QcACyAMRQ0DIAhBAnQiCC0AiLBGIQYgDK0hHCAILQCJsEYgCC0Ai7BGIA0gCC0AirBGbGogD2xqIQcDQCAFRQ0EIAMgB0sEQCACIAdqIAktAAA6AAAgBiAHaiEHIAVBAWshBSAJQQFqIQkgHEIBfSIcUEUNAQwFCwsgByADQYizxAAQ8AcACyAMRSAFRXINAgJAIA0gCEECdCIGLQCKsEZsIAYtAIuwRmogD2wiECAGLQCJsEYiCK1C/wGDIh1CAYinaiIHIANPDQAgBjEAiLBGIR8gAiAHaiIGIAYtAAAgCS0AACIGQQR2IAhBAnRBf3NBBHF0cjoAACAMQQFGDQMgBSAJaiELIAlBAWohCCAGQQ9xIQYgDK1CAX0hHiAfQgKGIRsgHSAffEIChiEcQQEhBQNAAn8gBUECRwRAIAYhCUECDAELIAggC0YNBSAILQAAIgVBD3EhBiAFQQR2IQkgCEEBaiEIQQELIQUgECAcQgOIp2oiByADTw0BIAIgB2oiByAHLQAAIAkgHKdBf3NBBHF0cjoAACAbIBx8IRwgHkIBfSIeUEUNAAsMAwsgByADQfiyxAAQ8AcACyAEQgA3A7AGIARBAzoA/AUgBEGGiAg2AvgFIARBADYC4AUgBEEANgLQBSAEIAytIh83A4gGIAQgCTYC8AUgBCAFIAlqIhA2AvQFIARBAjoAoAYgBCAIQQJ0IgYxAIiwRiIcNwOQBiAEIAYtAImwRiILrUL/AYMiGzcDmAYgBCAGLQCLsEYgDSAGLQCKsEZsaiAPbCIXNgKoBiAMRQ0BIARCATcDgAYgBUUNASAEIAlBAWoiBjYC8AUgBCAJLQAAIgVBA3FBGHQgBUEOdEGAgAxxciAFQQR0QYAGcXIgBUEGdiIIcjYC3AUgAyAXIBtCAoinaiIHSwRAIAtBAXQhCUIBIR4gHEIBhiEdIBsgHHxCAYYhHEEBIQUDQCACIAdqIgcgBy0AACAIIAlBf3NBBnF0cjoAACAeIB9RDQMgBCAeQgF8Ih43A4AGAkAgBUEERwRAIAUgGmotAAAhCAwBCyAGIBBGDQQgBCAGQQFqIgk2AvAFIAQgBi0AACIFQQNxQRh0IAVBDnRBgIAMcXIgBUEEdEGABnFyIAVBBnYiCHI2AtwFQQAhBSAJIQYLIBxCA4ghGyAcpyEJIBwgHXwhHCAFQQFqIQUgFyAbp2oiByADSQ0ACwsgByADQeiyxAAQ8AcACyAEQgA3ArwGIARBAToAuAYgBEKHjJSgsMDAADcDsAYgBEEANgKUBiAEQQA2AoAGIARBAToA8AUgBEIANwPQBSAEIAytIh43A9gFIAQgCTYCqAYgBCAFIAlqIgs2AqwGIAQgCEECdCIGMQCIsEYiHzcD4AUgBCAGLQCJsEYiB61C/wGDIh03A+gFIAQgBi0Ai7BGIA0gBi0AirBGbGogD2wiEDYC+AUgDEUgBUVyDQAgBCAJQQFqIgY2AqgGIAQgCS0AACIFQQFxrUI4hiAFQQF2QQFxrUIwhoQgBUECdkEBca1CKIaEIAVBA3ZBAXGtQiCGhCAFQQR2QQFxrUIYhoQgBUEFdkEBca1CEIaEIAVBBnZBAXGtQgiGhCAFQQd2rYQiGzcCjAYgAyAQIB1CA4inaiIISwRAIBunIQkgHSAffCEcQQEhBQNAIAIgCGoiCCAILQAAIAkgB0F/c0EHcXRyOgAAIB5CAX0iHlANAgJ/IAVBCEcEQCAFIBlqLQAADAELIAYgC0YNAyAEIAZBAWoiCTYCqAYgBCAGLQAAIgVBAXGtQjiGIAVBAXZBAXGtQjCGhCAFQQJ2QQFxrUIohoQgBUEDdkEBca1CIIaEIAVBBHZBAXGtQhiGhCAFQQV2QQFxrUIQhoQgBUEGdkEBca1CCIaEIAVBB3athCIbNwKMBkEAIQUgCSEGIBunCyEJIBxCA4ghGyAcpyEHIAVBAWohBSAcIB98IRwgECAbp2oiCCADSQ0ACwsgCCADQdiyxAAQ8AcACyANQQh2IQUgBCATKAIINgLIBSAEIBMpAgA3A8AFIARBADYCqAUgBEKAgICAEDcDoAUgBCgCeEECRw0ACwsMCQsMCAsgBCgCuAQhCiAEKAK0BCEGIAQgBCgCzAQiBTYC5AUgBCAFIAogBkECRhsiBTYC6AUgBCAHNgLgBSAEIAMgB3AiBjYC1AUgBCADIAZrIgY2AtwFIAQgAjYC2AUgBCACIAZqNgLQBQNAAkAgBUUEQCAEKALkBSIFRQ0DIAQgBUEBazYC5AUgBCgC3AUiBiAEKALgBSIFSQ0DIAQgBiAFazYC3AUgBCAEKALYBSIHIAVqNgLYBQwBCyAEQQA2AugFIARBIGohCAJAAkAgBSAEQdAFaiIHKAIUIgZPBEAgBg0BQQAhCgwCCyAHIAYgBUF/c2o2AhQCQCAFrSAHKAIQIgWtfiIbQiCIUARAIAcoAgwiBiAbpyIKSw0BCyAHQgE3AghBACEKDAILIAcgBiAKayIGNgIMIAcgBygCCCAKaiIKNgIIIAUgBksEQEEAIQoMAgsgByAGIAVrNgIMIAcgBSAKajYCCAwBCwJAAkAgBkEBa60gBygCECIFrX4iG0IgiFAEQCAHKAIMIgYgG6ciCUsNAQsgB0IBNwIIDAELIAcgBiAJayIKNgIMIAcgBygCCCAJaiIGNgIIIAUgCksNACAHIAogBWs2AgwgByAFIAZqNgIIC0EAIQogB0EANgIUCyAIIAU2AgQgCCAKNgIAIAQoAiAiB0UNAiAEKAIkIQULIARBwAVqIA4gBCgC0AQgByAFEI4BIAQtAMAFQShHBEAgBCkDwAUiG6ciDUEIdiEFIBtCIIinIREgBCgCzAUhAyAEKALIBSEMDAYFIAQoAugFIQUMAQsACwALIARB0AVqIA4QgQUgBC0A0AVBKEYNASAEKQPQBSIbpyINQQh2IQUgG0IgiKcLIREgBCgC3AUhAyAEKALYBSEMDAILQQghBkECIQhBASEHQQMhCUEBIQUCQAJAAkACQAJAAkACQAJAIAQtALgFIgpBAWsOCQIEAQIBAwYABQcLQQwhCQwDC0EEIQgLIAgiCSIGIQUCQCAKQQJrDgMCBAUAC0ECIQcMBAtBBiEJCyAJIQVBAyEHDAILQRAhBgtBBCEHIAYhBQsCQAJAAkAgBSAHbkEBaw4CAgEAC0GMjMYAQShBuNzGABCoCQALIANB/v///wdxIgpFDQAgAiEFIANBAmsiA0EOTwRAIAUgA0EBdkEBaiIGQXhxIgNBAXRqIQUgAyEIIAIhBwNAIAcgB/0AAAD9DAAAAAAAAAAAAAAAAAAAAAD9DQEAAwIFBAcGCQgLCg0MDw79CwAAIAdBEGohByAIQQhrIggNAAsgAyAGRg0BCyACIApqIQMDQCAFIAUvAAAiAkEIdCACQQh2cjsAACAFQQJqIgUgA0cNAAsLIABBBjYCAAwCC0EnIQ0LIAQgAzYCzAUgBCAMNgLIBSAEIA1B/wFxIAVBCHRyrSARrUIghoQ3A8AFIARB0AVqIARBwAVqEJEEIAAgBP0AAuQF/QsCFCAAIAQoAvQFNgIkIAT9AATQBSEgIAAgBCgC4AU2AhAgACAg/QsDAAsgDhDTAwJAIAFBBGsoAgAiAkF4cUH0BEH4BCACQQNxIgAbTwRAIABBACACQZgFTxsNASABEKICIARB0AZqJAAPCwwECwwECyAEQcAFaiAEQdAFakGo3MYAEKIIAAtB2K/GABCZCgALQciuxgAQnQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAsgCEEHQciyxAAQ8AcAC6EqAwh9F3sMfyMAQRBrIi0kACAAEMgFIABBADoA8AEgAEIANwPoASACQQJ0IighJSAAKAK0ASIkIChJBEAgKCAkIiVrIiwgACgCrAEgJWtLBEAgAEGsAWogJSAsQQRBBBDWBiAAKAK0ASElCyAAKAKwASIuICVBAnQiJ2ohKSAsQQJPBEAgKCAkQX9zakECdCIqBEAgKUEAICr8CwALIAJBBHQgJEECdGsgLmogJ2pBBGshKSAlICxqQQFrISULIClBADYCACAlQQFqISULIAAgJTYCtAECQAJAIAAoAhBBAUcNAAJAAkAgJSAoTwRAIAAoArABISYgAkUNAkEIIAQgBEEITRtBCW4iLiAEIARBAEciJ2siKiAEQQFLIiRrQQluICRqIiQgJCAuSxsiJSAEQQJrIiRBACAEICRPGyAEQQJLIiRrQQluICRqIiQgJCAlSxsiJSAEQQNrIiRBACAEICRPGyAEQQNLIiRrQQluICRqIiQgJCAlSxsiJSAEQQRrIiRBACAEICRPGyAEQQRLIiRrQQluICRqIiQgJCAlSxsiJSAEQQVrIiRBACAEICRPGyAEQQVLIiRrQQluICRqIiQgJCAlSxsiJSAEQQZrIiRBACAEICRPGyAEQQZLIiRrQQluICRqIiQgJCAlSxsiJSAEQQdrIiRBACAEICRPGyAEQQdLIiRrQQluICRqIiQgJCAlSxsiJSAqQQluICdqIiQgJCAlSxsiJSACQQFrIiQgJCAlSxsiJCACQf////8DcSInICQgJ0kbIiVBA00NASAlQQFqIipBA3EiJEEEICQbIiQgJUF/c2ohJSAqICRrISv9DAAAAAABAAAAAgAAAAMAAAAhHQNAIAMgHf0MCQAAAAkAAAAJAAAACQAAAP21ASIS/QwBAAAAAQAAAAEAAAABAAAAIg/9rgEiDf0bA0ECdGogAyAN/RsCQQJ0aiADIA39GwFBAnRqIAMgDf0bAEECdGr9XAIA/VYCAAH9VgIAAv1WAgADIhj94AEiEEMAAIA/IAMgEv0MAgAAAAIAAAACAAAAAgAAACIZ/a4BIg39GwNBAnRqIAMgDf0bAkECdGogAyAN/RsBQQJ0aiADIA39GwBBAnRq/VwCAP1WAgAB/VYCAAL9VgIAAyIa/eABIhH9HwAiBiAQ/R8AIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGyIGIAMgEv0bA0ECdGogAyAS/RsCQQJ0aiADIBL9GwFBAnRqIAMgEv0bAEECdGr9XAIA/VYCAAH9VgIAAv1WAgADIhv94AEiF/0fACIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsQwgX9EyAR/R8BIgYgEP0fASIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAX/R8BIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gASAR/R8CIgYgEP0fAiIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAX/R8CIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gAiAR/R8DIgYgEP0fAyIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAX/R8DIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gA/1o/QwAAHBBAABwQQAAcEEAAHBBIh/95AEiDSAN/QwAAAAAAAAAAAAAAAAAAAAA/UP9T/0MAAD4QQAA+EEAAPhBAAD4QSIg/eoBIg39HwAQhQj9EyAN/R8BEIUI/SABIA39HwIQhQj9IAIgDf0fAxCFCP0gA/34ASIN/Qzx////8f////H////x////IiH9rgEiEP0bABDYBv0TQwAAgD8gEP0bARDYBv0gAUMAAIA/IBD9GwIQ2Ab9IAJDAACAPyAQ/RsDENgG/SAD/QwAAH9DAAB/QwAAf0MAAH9DIhT95wEiEP3nASAU/eoBIg79HwAQhQghCSAO/R8BEIUIIQYgDv0fAhCFCCEHIA79HwMQhQghBSAmIB1BAv2rASIc/RsAQQJ0aiAXIBD95wEgFP3qASIO/R8AEIUI/RMgDv0fARCFCP0gASAO/R8CEIUI/SACIA79HwMQhQj9IAP9+QEgDUEb/asBIBsgE/1D/QwAAAABAAAAAQAAAAEAAAABIiL9Tv1QIBggE/1D/QwAAAACAAAAAgAAAAIAAAACIiP9Tv1QIBogE/1D/QwAAAAEAAAABAAAAAQAAAAEIhf9Tv1Q/VAgCf0TIAb9IAEgB/0gAiAF/SAD/fkBQQj9qwH9UCARIBD95wEgFP3qASIN/R8AEIUI/RMgDf0fARCFCP0gASAN/R8CEIUI/SACIA39HwMQhQj9IAP9+QFBEP2rAf1QIg39WgIAACAmIBz9GwFBAnRqIA39WgIAASAmIBz9GwJBAnRqIA39WgIAAiAmIBz9GwNBAnRqIA39WgIAAyADIBL9DAQAAAAEAAAABAAAAAQAAAAiEP2uASIN/RsDQQJ0aiADIA39GwJBAnRqIAMgDf0bAUECdGogAyAN/RsAQQJ0av1cAgD9VgIAAf1WAgAC/VYCAAMiGP3gASIOQwAAgD8gAyAS/QwFAAAABQAAAAUAAAAFAAAA/a4BIg39GwNBAnRqIAMgDf0bAkECdGogAyAN/RsBQQJ0aiADIA39GwBBAnRq/VwCAP1WAgAB/VYCAAL9VgIAAyIa/eABIhX9HwAiBiAO/R8AIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGyIGIAMgEv0MAwAAAAMAAAADAAAAAwAAAP2uASIN/RsDQQJ0aiADIA39GwJBAnRqIAMgDf0bAUECdGogAyAN/RsAQQJ0av1cAgD9VgIAAf1WAgAC/VYCAAMiG/3gASIW/R8AIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0TIBX9HwEiBiAO/R8BIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGyIGIBb9HwEiBSAFIAVcGyIHIAcgBiAGIAZcGyIFIAUgB10bEMIF/SABIBX9HwIiBiAO/R8CIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGyIGIBb9HwIiBSAFIAVcGyIHIAcgBiAGIAZcGyIFIAUgB10bEMIF/SACIBX9HwMiBiAO/R8DIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGyIGIBb9HwMiBSAFIAVcGyIHIAcgBiAGIAZcGyIFIAUgB10bEMIF/SAD/WggH/3kASINIA0gE/1D/U8gIP3qASIN/R8AEIUI/RMgDf0fARCFCP0gASAN/R8CEIUI/SACIA39HwMQhQj9IAP9+AEiDSAh/a4BIg79GwAQ2Ab9E0MAAIA/IA79GwEQ2Ab9IAFDAACAPyAO/RsCENgG/SACQwAAgD8gDv0bAxDYBv0gAyAU/ecBIg795wEgFP3qASIR/R8AEIUIIQkgEf0fARCFCCEGIBH9HwIQhQghByAR/R8DEIUIIQUgJiAcIA/9UCIe/RsAQQJ0aiAWIA795wEgFP3qASIP/R8AEIUI/RMgD/0fARCFCP0gASAP/R8CEIUI/SACIA/9HwMQhQj9IAP9+QEgDUEb/asBIBsgE/1DICL9Tv1QIBggE/1DICP9Tv1QIBogE/1DIBf9Tv1Q/VAgCf0TIAb9IAEgB/0gAiAF/SAD/fkBQQj9qwH9UCAVIA795wEgFP3qASIN/R8AEIUI/RMgDf0fARCFCP0gASAN/R8CEIUI/SACIA39HwMQhQj9IAP9+QFBEP2rAf1QIhH9WgIAACADIBL9DAcAAAAHAAAABwAAAAcAAAD9rgEiDf0bA0ECdGogAyAN/RsCQQJ0aiADIA39GwFBAnRqIAMgDf0bAEECdGr9XAIA/VYCAAH9VgIAAv1WAgADIhj94AEiD0MAAIA/IAMgEv0MCAAAAAgAAAAIAAAACAAAAP2uASIN/RsDQQJ0aiADIA39GwJBAnRqIAMgDf0bAUECdGogAyAN/RsAQQJ0av1cAgD9VgIAAf1WAgAC/VYCAAMiGv3gASIV/R8AIgYgD/0fACIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiADIBL9DAYAAAAGAAAABgAAAAYAAAD9rgEiDf0bA0ECdGogAyAN/RsCQQJ0aiADIA39GwFBAnRqIAMgDf0bAEECdGr9XAIA/VYCAAH9VgIAAv1WAgADIhv94AEiFv0fACIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsQwgX9EyAV/R8BIgYgD/0fASIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAW/R8BIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gASAV/R8CIgYgD/0fAiIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAW/R8CIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gAiAV/R8DIgYgD/0fAyIFIAUgBVwbIgcgByAGIAYgBlwbIgUgBSAHXRsiBiAW/R8DIgUgBSAFXBsiByAHIAYgBiAGXBsiBSAFIAddGxDCBf0gA/1oIB/95AEiDSANIBP9Q/1PICD96gEiDf0fABCFCP0TIA39HwEQhQj9IAEgDf0fAhCFCP0gAiAN/R8DEIUI/SAD/fgBIg0gIf2uASIP/RsAENgG/RNDAACAPyAP/RsBENgG/SABQwAAgD8gD/0bAhDYBv0gAkMAAIA/IA/9GwMQ2Ab9IAMgFP3nASIP/ecBIBT96gEiDv0fABCFCCEJIA79HwEQhQghBiAO/R8CEIUIIQcgDv0fAxCFCCEFICYgHCAZ/VAiDv0bAEECdGogFiAP/ecBIBT96gEiGf0fABCFCP0TIBn9HwEQhQj9IAEgGf0fAhCFCP0gAiAZ/R8DEIUI/SAD/fkBIA1BG/2rASAbIBP9QyAi/U79UCAYIBP9QyAj/U79UCAaIBP9QyAX/U79UP1QIAn9EyAG/SABIAf9IAIgBf0gA/35AUEI/asB/VAgFSAP/ecBIBT96gEiDf0fABCFCP0TIA39HwEQhQj9IAEgDf0fAhCFCP0gAiAN/R8DEIUI/SAD/fkBQRD9qwH9UCIN/VoCAAAgJiAe/RsBQQJ0aiAR/VoCAAEgJiAO/RsBQQJ0aiAN/VoCAAEgJiAe/RsCQQJ0aiAR/VoCAAIgJiAO/RsCQQJ0aiAN/VoCAAIgJiAe/RsDQQJ0aiAR/VoCAAMgJiAO/RsDQQJ0aiAN/VoCAAMgHSAQ/a4BIR0gJUEEaiIlDQALDAELQQAgKCAlQbC1wQAQoAUACyArQQJ0IS8gAiArayEqICcgK2shLCAuICtrIScgJiArQQR0aiEpICtBCWxBBGohJSADICtBJGxqIQMCfwJAAkACQAJAAn8CQANAAkACQAJAIAQgJUEEa0sEQCAlQQNrIARPDQEgJUECayAETw0CICwNAyAvIChBoLXBABDwBwALICVBBGsMCgsgJUEDayElDAYLICVBAmsMAwtDAAB/QyADQQRqKgIAIgyLIgVDAACAP0MAAPhBQwAAAAAgA0EIaioCACIJiyIIIAUgBSAFXBsiByAHIAggCCAIXBsiBSAFIAddGyIFIAMqAgAiBosiCiAKIApcGyIHIAcgBSAFIAVcGyIFIAUgB10bEMIFjkMAAHBBkiIFIAVDAAAAAF0bIgUgBUMAAPhBXhsQhQj8ACIkQQ9rENgGQwAAf0OVIguVIgUgBUMAAH9DXhsQhQghByApQwAAf0MgCiALlSIFIAVDAAB/Q14bEIUI/AEgJEEbdEGAgIAIQQAgBkMAAAAAXRtyQYCAgBBBACAMQwAAAABdG3JBgICAIEEAIAlDAAAAAF0bcnIgB/wBQQh0ckMAAH9DIAggC5UiBSAFQwAAf0NeGxCFCPwBQRB0cjYCACAlQQFrIARPDQUgBCAlTQ0EIAQgJUEBaksEQEMAAH9DIANBEGoqAgAiDIsiBUMAAIA/QwAA+EFDAAAAACADQRRqKgIAIgmLIgggBSAFIAVcGyIHIAcgCCAIIAhcGyIFIAUgB10bIgUgA0EMaioCACIGiyIKIAogClwbIgcgByAFIAUgBVwbIgUgBSAHXRsQwgWOQwAAcEGSIgUgBUMAAAAAXRsiBSAFQwAA+EFeGxCFCPwAIiRBD2sQ2AZDAAB/Q5UiC5UiBSAFQwAAf0NeGxCFCCEHIClBBGpDAAB/QyAKIAuVIgUgBUMAAH9DXhsQhQj8ASAkQRt0QYCAgAhBACAGQwAAAABdG3JBgICAEEEAIAxDAAAAAF0bckGAgIAgQQAgCUMAAAAAXRtyciAH/AFBCHRyQwAAf0MgCCALlSIFIAVDAAB/Q14bEIUI/AFBEHRyNgIAICVBAmogBE8NByAlQQNqIARPDQQgJ0UNAkMAAH9DIANBHGoqAgAiDIsiBUMAAIA/QwAA+EFDAAAAACADQSBqKgIAIgmLIgggBSAFIAVcGyIHIAcgCCAIIAhcGyIFIAUgB10bIgUgA0EYaioCACIGiyIKIAogClwbIgcgByAFIAUgBVwbIgUgBSAHXRsQwgWOQwAAcEGSIgUgBUMAAAAAXRsiBSAFQwAA+EFeGxCFCPwAIiRBD2sQ2AZDAAB/Q5UiC5UiBSAFQwAAf0NeGxCFCCEHIClBCGpDAAB/QyAKIAuVIgUgBUMAAH9DXhsQhQj8ASAkQRt0QYCAgAhBACAGQwAAAABdG3JBgICAEEEAIAxDAAAAAF0bckGAgIAgQQAgCUMAAAAAXRtyciAH/AFBCHRyQwAAf0MgCCALlSIFIAVDAAB/Q14bEIUI/AFBEHRyNgIAIClBEGohKSAvQQRqIS8gLEEBayEsICVBCWohJSADQSRqIQMgJ0EBayEnICpBAWsiKg0BDAkLCyAlQQFqDAELICVBBGoLIARBkLXBABDwBwALICVBA2ohJQsgJSAEQYC1wQAQ8AcACyAlQQFrDAELICVBAmoLIARB8LTBABDwBwALIC0gACgCFCABQQJ0IAEgAmpBAnQQlwkiARCDCyIANgIIIC0gKDYCDCAAIChHDQEgASAmICgQqwogAUGECEkNACABEL4HCyAtQRBqJAAPC0EAIC1BCGogLUEMakEAIAFB0KHEABCgCAALhiMCHH8DfiMAQcAGayIHJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASkDACIhUEUEQCABKQMIIiJQDQEgASkDECIjUA0CICMgIUJ/hVYNAyAhICJUDQQgAS4BGCEBIAcgITcDCCAHQQFBAiAhQoCAgIAQVBs2AqgBIAdBEGpBAEGYAfwLACAHQbQBakEAQZwB/AsAIAdBATYCsAEgB0EBNgLQAiABrCAhQgF9eX1CwprB6AR+QoChzaC0AnxCIIinIgXBIQ4CQCABQQBOBEAgB0EIaiABEMcDGgwBCyAHQbABakEAIAFrwRDHAxoLAkAgDkEASARAIAdBCGpBACAOa0H//wNxEPcBDAELIAdBsAFqIAVB//8BcRD3AQsgB0GcBWogB0GwAWpBpAH8CgAAIAdBlAVqIQYgAyEKA0AgBygCvAYiAUEpTw0MAkAgAUUNAAJAIAFBAnQiAUEEayIFRQRAIAdBnAVqIAFqIQFCACEhDAELIAVBAnZBAWoiBUEBcSABIAZqIQkgBUH+////B3EhBUIAISEDQCAJIgFBBGoiCSAJNQIAICFCIIaEIiFCgJTr3AOAIiI+AgAgASABNQIAICEgIkKAlOvcA359QiCGhCIhQoCU69wDgCIiPgIAICEgIkKAlOvcA359ISEgAUEIayEJIAVBAmsiBQ0AC0UNAQsgAUEEayIBIAE1AgAgIUIghoRCgJTr3AOAPgIACyAKQQlrIgpBCUsNAAsgCkECdCgC2LxCQQF0IgVFDQUgBygCvAYiAUEpTw0LIAEEfyAFrSEhAkACQCABQQJ0IgFBBGsiBUUEQCAHQZwFaiABaiEBQgAhIgwBCyAFQQJ2QQFqIgVBAXEgBUH+////B3EhCSABIAdqQZQFaiEFQgAhIgNAIAUiAUEEaiIFIAU1AgAgIkIghoQiIiAhgCIjPgIAIAEgATUCACAiICEgI359QiCGhCIiICGAIiM+AgAgIiAhICN+fSEiIAFBCGshBSAJQQJrIgkNAAtFDQELIAFBBGsiASABNQIAICJCIIaEICGAPgIACyAHKAK8BgVBAAshASAHKAKoASIFIAEgASAFSRsiBkEoSw0MAkAgBkUEQEEAIQYMAQtBACEKAkACQCAGQQFHBEAgBkEBcSAGQT5xIQwgB0GcBWohASAHQQhqIQkDQCABIAkoAgAiECABKAIAaiIIIApBAXFqIhQ2AgAgAUEEaiIKIAlBBGooAgAiDSAKKAIAaiIKIAggEEkgCCAUS3JqIgg2AgAgCiANSSAIIApJciEKIAlBCGohCSABQQhqIQEgDCALQQJqIgtHDQALRQ0BCyALQQJ0IgEgB0GcBWpqIgggB0EIaiABaigCACIJIAgoAgBqIgEgCmoiCDYCACABIAlJIAEgCEtyDQEMAgsgCkUNAQsgBkEoRg0OIAdBnAVqIAZBAnRqQQE2AgAgBkEBaiEGCyAHIAY2ArwGIAcoAtACIg8gBiAGIA9JGyIBQSlPDQsgAUECdCEBIAdBmAVqIQYCQAJAA0AgAUUNASABIAZqKAIAIgggAUEEayIBIAdBsAFqaigCACIJRg0ACyAIIAlPDQAgBUUEQEEAIQUgB0EANgKoAQwCCyAFQQJ0IghBBGsiAUECdkEBaiIJQQNxIQYCQAJAIAFBDEkEQEIAISEgB0EIaiEBDAELIAlB/P///wdxIQlCACEhIAdBCGohAQNAIAEgATUCAEIKfiAhfCIhPgIAIAFBBGoiCiAKNQIAQgp+ICFCIIh8IiE+AgAgAUEIaiIKIAo1AgBCCn4gIUIgiHwiIT4CACABQQxqIgogCjUCAEIKfiAhQiCIfCIhPgIAICFCIIghISABQRBqIQEgCUEEayIJDQALIAZFDQELIAZBAnQhCQNAIAEgATUCAEIKfiAhfCIhPgIAIAFBBGohASAhQiCIISEgCUEEayIJDQALCyAhUEUEQCAFQShGDRAgB0EIaiAIaiAhPgIAIAVBAWohBQsgByAFNgKoAQwBCyAOQQFqIQ4LQQAhEEEBIQYCQCAOwSIBIATBIghIIhxFBEAgDiAEa8EgAyABIAhrIANJGyIEDQELQQAhBAwJCyAHQdQCaiIGIAdBsAFqIgFBpAH8CgAAIAZBARDHAyEWIAdB+ANqIgYgAUGkAfwKAAAgBkECEMcDIRcgB0GcBWoiBiABQaQB/AoAACAHQawBaiEdIAdB0AJqIR4gB0H0A2ohHyAHQZgFaiEgIAZBAxDHAyEYIBYoAqABIRkgFygCoAEhGiAYKAKgASEbQQAhFAJAAkADQCAUIQwgBUEpTw0RIAxBAWohFCAFQQJ0IQZBACEBA0AgASAGRg0DIAdBCGogAWogAUEEaiEBKAIARQ0ACyAbIAUgBSAbSRsiBkEpTw0PIAZBAnQhAQJ/AkADQCABRQ0BIAEgIGohCCABQQRrIgEgB0EIamooAgAiCSAIKAIAIghGDQALQQAgCCAJSw0BGgtBASEKQQAhCwJAAkAgBkEBRwRAIAZBAXEgBkE+cSERIAdBCGohASAHQZwFaiEJA0AgASABKAIAIhIgCSgCAEF/c2oiBSAKQQFxaiIKNgIAIAFBBGoiCCAIKAIAIhMgCUEEaigCAEF/c2oiCCAFIBJJIAUgCktyaiIFNgIAIAggE0kgBSAISXIhCiAJQQhqIQkgAUEIaiEBIBEgC0ECaiILRw0AC0UNAQsgC0ECdCIBIAdBCGpqIgUgBSgCACIFIAEgGGooAgBBf3NqIgEgCmoiCDYCACABIAVJIAEgCEtyDQEMFQsgCkUNFAsgByAGNgKoASAGIQVBCAshDSAaIAUgBSAaSRsiBkEpTw0PIAZBAnQhAQJAAkADQCABRQ0BIAEgH2ohCCABQQRrIgEgB0EIamooAgAiCSAIKAIAIghGDQALIAggCU0NACAFIQYMAQsCQCAGRQ0AQQEhCkEAIQsCQCAGQQFHBEAgBkEBcSAGQT5xIRIgB0EIaiEBIAdB+ANqIQkDQCABIAEoAgAiEyAJKAIAQX9zaiIFIApBAXFqIgo2AgAgAUEEaiIIIAgoAgAiFSAJQQRqKAIAQX9zaiIIIAUgE0kgBSAKS3JqIgU2AgAgCCAVSSAFIAhJciEKIAlBCGohCSABQQhqIQEgEiALQQJqIgtHDQALRQ0BCyALQQJ0IgEgB0EIamoiBSAFKAIAIgUgASAXaigCAEF/c2oiASAKaiIINgIAIAEgBUkgASAIS3INAQwVCyAKRQ0UCyAHIAY2AqgBIA1BBHIhDQsgGSAGIAYgGUkbIghBKU8NCSAIQQJ0IQECQAJAA0AgAUUNASABIB5qIQUgAUEEayIBIAdBCGpqKAIAIgkgBSgCACIFRg0ACyAFIAlNDQAgBiEIDAELAkAgCEUNAEEBIQpBACELAkAgCEEBRwRAIAhBAXEgCEE+cSESIAdBCGohASAHQdQCaiEJA0AgASABKAIAIhMgCSgCAEF/c2oiBSAKQQFxaiIKNgIAIAFBBGoiBiAGKAIAIhUgCUEEaigCAEF/c2oiBiAFIBNJIAUgCktyaiIFNgIAIAYgFUkgBSAGSXIhCiAJQQhqIQkgAUEIaiEBIBIgC0ECaiILRw0AC0UNAQsgC0ECdCIBIAdBCGpqIgUgBSgCACIFIAEgFmooAgBBf3NqIgEgCmoiBjYCACABIAVJIAEgBktyDQEMFQsgCkUNFAsgByAINgKoASANQQJqIQ0LIA8gCCAIIA9JGyIFQSlPDREgBUECdCEBAkACQANAIAFFDQEgASAdaiEGIAFBBGsiASAHQQhqaigCACIJIAYoAgAiBkYNAAsgBiAJTQ0AIAghBQwBCwJAIAVFDQBBASEKQQAhCwJAIAVBAUcEQCAFQQFxIAVBPnEhEiAHQQhqIQEgB0GwAWohCQNAIAEgASgCACITIAkoAgBBf3NqIgYgCkEBcWoiCjYCACABQQRqIgggCCgCACIVIAlBBGooAgBBf3NqIgggBiATSSAGIApLcmoiBjYCACAIIBVJIAYgCElyIQogCUEIaiEJIAFBCGohASASIAtBAmoiC0cNAAtFDQELIAtBAnQiASAHQQhqaiIGIAYoAgAiBiAHQbABaiABaigCAEF/c2oiASAKaiIINgIAIAEgBkkgASAIS3INAQwVCyAKRQ0UCyAHIAU2AqgBIA1BAWohDQsgAyAMRg0BIAIgDGogDUEwajoAAAJAIAVFBEBBACEFDAELIAVBAnQiCEEEayIBQQJ2QQFqIglBA3EhBgJAAkAgAUEMSQRAQgAhISAHQQhqIQEMAQsgCUH8////B3EhCUIAISEgB0EIaiEBA0AgASABNQIAQgp+ICF8IiE+AgAgAUEEaiIKIAo1AgBCCn4gIUIgiHwiIT4CACABQQhqIgogCjUCAEIKfiAhQiCIfCIhPgIAIAFBDGoiCiAKNQIAQgp+ICFCIIh8IiE+AgAgIUIgiCEhIAFBEGohASAJQQRrIgkNAAsgBkUNAQsgBkECdCEJA0AgASABNQIAQgp+ICF8IiE+AgAgAUEEaiEBICFCIIghISAJQQRrIgkNAAsLICFQDQAgBUEoRg0RIAdBCGogCGogIT4CACAFQQFqIQULIAcgBTYCqAEgBCAURw0AC0EAIQYMCgsgAyADQZi7wgAQ8AcACyADIARJDQcCQCAEIAxGDQAgBCAMayIBRQ0AIAIgDGpBMCAB/AsACyAAIA47AQggACAENgIEDAkLQYC3wgBBHEG4usIAEKgJAAtB7LfCAEEdQci6wgAQqAkAC0GcuMIAQRxB2LrCABCoCQALQfC5wgBBNkHIu8IAEKgJAAtBqLnCAEE3Qbi7wgAQqAkAC0GgjsIAQRtB2I7CABCoCQALQQAgCEEoQdiOwgAQoAUACyAMIAQgA0Gou8IAEKAFAAsCfwJAAkAgD0UNACAPQQJ0IgpBBGsiAUECdkEBaiIJQQNxIQgCQAJAIAFBDEkEQEIAISEgB0GwAWohAQwBCyAJQfz///8HcSEJQgAhISAHQbABaiEBA0AgASABNQIAQgV+ICF8IiE+AgAgAUEEaiIMIAw1AgBCBX4gIUIgiHwiIT4CACABQQhqIgwgDDUCAEIFfiAhQiCIfCIhPgIAIAFBDGoiDCAMNQIAQgV+ICFCIIh8IiE+AgAgIUIgiCEhIAFBEGohASAJQQRrIgkNAAsgCEUNAQsgCEECdCEJA0AgASABNQIAQgV+ICF8IiE+AgAgAUEEaiEBICFCIIghISAJQQRrIgkNAAsLICFQBEAgDyEQDAELIA9BKEYNByAHQbABaiAKaiAhPgIAIA9BAWohEAsgByAQNgLQAiAQIAUgBSAQSRsiAUEpTw0EIAFBAnQhASAHQQRqIQkgB0GsAWohCgJAAkACQAJAAkADQCABRQ0BIAEgCmohCCABIAlqIAFBBGshASgCACIFIAgoAgAiCEYNAAsgBSAISyAFIAhJa0H/AXEOAgABBQtBACAGDQUaIARBAWsiASADTw0BIAEgAmotAABBAXFFDQQLIAMgBEkNASACIARqIQkgBCEBA0AgASIFRQ0DIAFBAWsiASACaiIILQAAQTlGDQALIAggCC0AAEEBajoAACAEIAVrIgFFDQMgAiAFakEwIAH8CwAMAwsgASADQei6wgAQ8AcAC0EAIAQgA0H4usIAEKAFAAtBMSEBAkAgBg0AIAJBMToAAEEwIQEgBEEBayIFRQ0AIAJBAWpBMCAF/AsACyAOQQFqIQ4gHCADIARNcg0AIAkgAToAACAEQQFqIQQMAAsgAyAESQ0CIAQLIQEgACAOOwEIIAAgATYCBAsgACACNgIAIAdBwAZqJAAPC0EAIAQgA0GIu8IAEKAFAAtBACABQShB2I7CABCgBQALQQAgBkEoQdiOwgAQoAUAC0EoQShB2I7CABDwBwALQQAgBUEoQdiOwgAQoAUAC0G7jsIAQRpB2I7CABCoCQAL/SkCHX8BfiMAQeABayICJAAgAkEgaiAAIAAoAgAoAgQRAQAgAiACKAIkIgQ2AiwgAiACKAIgIgU2AigCQAJAAkACQAJAAkACQAJAAkACfwJAAkACQCABLQAKQYABcUUEQCACIAJBKGqtQoCAgIDwAoQ3A5ABQQEhAyABKAIAIAEoAgRBlJvAACACQZABahDOAw0HIAJBGGogBSAEKAIYEQEAAkACQCACKAIYIgYEQCACKAIcIQkgASgCAEGd/MEAQQwgASgCBCgCDBEAAA0KIAJBEGogBiAJKAIYEQEAIAJB2ABqrUKAgICA8AKEIR8gAigCEEEARyEHQQAhAwNAIAJBCGogBiAJKAIYEQEAIAIoAgwgAigCCCEFIAIgCTYCXCACIAY2AlggASgCAEHIiscAQQEgASgCBCgCDBEAAA0CIAJBADoAnAEgAiADNgKUASACIAc2ApABIAIgATYCmAEgAiAfNwNoIAJBkAFqQaz8wQBBlJvAACACQegAahDOAw0CIANBAWohAyEJIAUiBg0ACwsCQCAAKAIEIgZBA0cEQCAAQQRqIQAMAQsgACAAKAIAKAIYEQQAIgBFDQIgACgCACEGC0EAIQMgBkECRw0JIAJBADYCRCACQoCAgIAQNwI8IAJBuPvBADYCTCACQqCAgIAGNwJQIAIgAkE8ajYCSAJAIAAoAgBBAWsOAgUABAsCfwJAAkAgAC0AFEEDRgRAIAAoAgwhA0EAIQkMAQsgAiAAQQRqNgKQASACQZABaiEFIwBBEGsiBCQAAkACQAJAIABBFGoiAy0AACIHQQJPBEAgB0EDaw0BDAMLIANBAjoAACAFKAIAIAVBADYCAARAIAdBAUcEQEH6w8gALQAAIQVB+sPIAEEBOgAAIAQgBToADyAFRQ0DIARBD2oQpAgAC0HWi8cAQd0AQYSMxwAQkwgAC0HYgMcAEJkKAAtBgP/GAEHxAEHw/sYAEJMIAAtB+sPIAEEAOgAAIANBAzoAAAsgBEEQaiQAIAAoAgwhAyACKAJQQYCAgARxIgkNAQsgACgCECIEIANNBEAgAyAEayEDIAAoAgggBEEMbGoMAgsgBCADIANBtI3HABCgBQALIAAoAggLIQ4gAkGAgICAeDYCWCACQaCBxwApAwAiHzcCXCACIAlBF3YiADoAZCACIAA6AHggAkEANgJ0IAJBxI3HADYCcCACIAJByABqNgJoIAIgAkHYAGo2AmwgA0UEQCAfpyEDIB9CIIinDAcLIA4gA0EMbGohGCACQZgBaiEPIAJBlwFqIRkDQAJAIA4oAggiBEUEQCACQQA2AogBIAIgAkHoAGo2AoQBIAJBAzYCkAEgAkECNgLQASACQYQBaiACQZABaiACQdABakEAIAJBACACENgCIAIoAoQBIgQgBCgCDEEBajYCDEUNAQwNCyAOKAIEIgAgBEEsbGohGgNAIAJBADYCgAEgAiACQegAajYCfAJAAkACQAJAIAAoAiBBgICAgHhHBEAgAkGQAWogACgCJCIbIAAoAigiHBCXAyACKAKQAUEBRgRAQQIhCQwECyACQZABaiACKAKUASIIIAIoApgBIgRB8snEAEEGEOMBAkACQCACKAKQAQRAIAIoAswBIQUgAigCyAEhAyACKALEASEHIAIoAsABIQogAigCtAFBf0cNASACQYQBaiAPIAogByADIAVBARCTBAwCCwNAIAJB0AFqIAJBkAFqEJoCIAIoAtABIgVBAUYNAAsCQAJAIAVBAWsOAhgBAAsgAiACKQLUATcCiAEgAkEBNgKEAQwCCyACQQA2AoQBDAELIAJBhAFqIA8gCiAHIAMgBUEAEJMECyACKAKEAUEBRw0CIAIoAogBIgVBBmoiA0UNAQJAIAMgBE8EQCADIARHDQEMAwsgAyAIaiwAAEG/f0oNAgsgCCAEIAMgBEH4ycQAEPUJAAsgAkEDNgKQAQwDCyAEIAhqIQwgAyAIaiEDA0ACQCADIAxGDQACfyADLAAAIgdBAE4EQCAHQf8BcSEGIANBAWoMAQsgAy0AAUE/cSEGIAdBH3EhCiAHQV9NBEAgCkEGdCAGciEGIANBAmoMAQsgAy0AAkE/cSAGQQZ0ciEGIAdBcEkEQCAGIApBDHRyIQYgA0EDagwBCyAKQRJ0QYCA8ABxIAMtAANBP3EgBkEGdHJyIgZBgIDEAEYNASADQQRqCyEDIAZBxwBrQXhLIAZBOmtBdk9yDQEMAgsLIAVFBEBBAiEJDAILAkAgBCAFTQRAIAQgBUYNAgwBCyAFIAhqLAAAQb9/TA0AIAUhBAwBCyAIIARBACAFQYjKxAAQ9QkACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARBA08EQCAILwAAQd+0AXMgCEECai0AAEHOAHNyRQ0BIAgvAABB2pwBRg0CQQMhBSAEQQNGDQggCCgAAEHfvunyBEYNAyAEIQUMCAtBAiEJIARBAkcNDSAILwAAQdqcAUcNBkF+IQNBAiEFQQIhBgwFC0EDIQZBfSEDIARBA0YEQEEDIQUMBQsgCCwAA0G/f0wNAyAEIQUMBAsgCCwAAkG/f0wNAUECIQZBfiEDIAQhBQwDC0F8IQNBBCEGIARBBUkEQEEEIQUMAwsgCCwABEG/f0oEQCAEIQUMAwsgCCAEQQQgBEHozMQAEPUJAAsgCCAEQQIgBEH4zMQAEPUJAAsgCCAEQQMgBEGIzcQAEPUJAAsgBiAIaiIEIAMgBWoiCmohDSAKIQMgBCEGAkADQCADBEAgA0EBayEDIAYsAAAgBkEBaiEGQQBODQEMAgsLIApFDQACfyAELAAAIgNBAE4EQCADQf8BcSEDIARBAWoMAQsgBC0AAUE/cSEGIANBH3EhByADQV9NBEAgB0EGdCAGciEDIARBAmoMAQsgBC0AAkE/cSAGQQZ0ciEGIANBcEkEQCAGIAdBDHRyIQMgBEEDagwBCyAHQRJ0QYCA8ABxIAQtAANBP3EgBkEGdHJyIQMgBEEEagshB0EAIQwgA0HFAEcEQANAIANBMGsiCUEJSw0CQQAhBgNAIAatQgp+Ih9CIIinDQMgByANRiAfpyIDIAlqIgYgA0lyDQMCfyAHLAAAIgNBAE4EQCADQf8BcSEDIAdBAWoMAQsgBy0AAUE/cSELIANBH3EhCSADQV9NBEAgCUEGdCALciEDIAdBAmoMAQsgBy0AAkE/cSALQQZ0ciELIANBcEkEQCALIAlBDHRyIQMgB0EDagwBCyAJQRJ0QYCA8ABxIActAANBP3EgC0EGdHJyIQMgB0EEagshByADQTBrIglBCkkNAAsgBgRAA0AgByANRg0EAn8gBywAACIDQQBOBEAgA0H/AXEhAyAHQQFqDAELIActAAFBP3EhCyADQR9xIQkgA0FfTQRAIAlBBnQgC3IhAyAHQQJqDAELIActAAJBP3EgC0EGdHIhCyADQXBJBEAgCyAJQQx0ciEDIAdBA2oMAQsgCUESdEGAgPAAcSAHLQADQT9xIAtBBnRyciEDIAdBBGoLIQcgBkEBayIGDQALCyAMQQFqIQwgA0HFAEcNAAsLIA0gB2shDQwHCyAFQQNPDQELQQIhBSAILQAAQdIARg0BQQIhCQwGCyAILwAAQd+kAUYEQCAILAACIgNBv39MDQIgCEECaiEKQX4hBgwECyAILQAAQdIARw0CCyAILAABIgNBv39KBEAgCEEBaiEKQX8hBgwDCyAIIAVBASAFQZjMxAAQ9QkACyAIIAVBAiAFQajMxAAQ9QkACyAFQQNGBEBBAiEJDAMLQQIhCSAILwAAQd++AXMgCEECai0AAEHSAHNyDQIgCCwAAyIDQb9/SgRAIAhBA2ohCkF9IQYMAQsgCCAFQQMgBUGIzMQAEPUJAAtBAiEJIANBwQBrQf8BcUEZSw0BIAUgBmohDEEAIQMDQCADIAxHBEAgAyAKaiADQQFqIQMsAABBAE4NAQwDCwsgD/0MAAAAAAAAAAAAAAAAAAAAAP0LAgAgAiAMNgKUASACIAo2ApABAkAgAkGQAWpBABDQAUUEQCACKAKQASIGRQ0DIAIoApgBIgMgAi0AlAEgAi8AlQEgGS0AAEEQdHJBCHRyIgRPDQEgAyAGai0AAEHBAGtB/wFxQRpPDQEgAigCnAEhByACQgA3AqABIAIgBzYCnAEgAiADNgKYASACIAQ2ApQBIAIgBjYCkAEgAkGQAWpBABDQAQ0VIAIoApABIgZFDQMgAigCmAEhAyACKAKUASEEDAELDBQLAkACQCADRQ0AIAMgBE8EQCADIARGDQEMAgsgAyAGaiwAAEG/f0wNAQsgBCADayENIAMgBmohB0EAIQQMAQsgBiAEIAMgBEG4zMQAEPUJAAtBASEJIA1FBEBBACEQIAQhESAKIRIgDCETIAghFCAFIRUgByEWDAELIActAABBLkcEQEECIQkMAQsgByANaiEdQS4hBiAHIQMDQAJAAn8CQCAGwEEASARAIAMtAAFBP3EhFyAGQR9xIQsgBkH/AXEiHkHfAUsNASALQQZ0IBdyIQYgA0ECagwCCyAGQf8BcSEGIANBAWoMAQsgAy0AAkE/cSAXQQZ0ciEGIB5B8AFJBEAgBiALQQx0ciEGIANBA2oMAQsgC0ESdEGAgPAAcSADLQADQT9xIAZBBnRyciIGQYCAxABGDQEgA0EEagshAwJAIAZB3///AHFBwQBrQRpJIAZBMGtBCklyIAZBIWtBD0lyDQACQCAGQTprDicBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEACyAGQfsAa0EDTQ0AQQIhCQwDCyADIB1GDQAgAy0AACEGDAELCyAEIREgCiESIAwhEyAIIRQgBSEVIAchFiANIRALIAIgEDYCrAEgAiAWNgKoASACIBU2AqQBIAIgFDYCoAEgAiATNgKcASACIBI2ApgBIAIgETYClAEgAiAcNgK0ASACIBs2ArABIAIgCTYCkAELQQEhAwJAAkACQAJAIAAoAhAOAwECAAILIAJBAjYC0AEMAgtBACEDCyACIAM2AtABIAIgACkCGDcC1AELIAJB/ABqIAJBkAFqIAJB0AFqIAAoAgAgACgCBCAAKAIIIAAoAgwQ2AIgAigCfCIFIAUoAgxBAWo2AgwNDSAAQSxqIgAgGkcNAAsLIBggDkEMaiIORw0ACwwFC0EBIQMMCAtB+PzBAEEYQZD9wQAQlAgACyAFIAEgBCgCDBECACEDDAYLIAJBPGpBjI3HAEEVEOoHDQcMBAsgAkE8akGhjccAQRIQ6gdFDQMMBgsgAigCWCIAQYCAgIB4Rw0BIAItAFwhAyACKAJgCyEAIANB/wFxQQNHDQEgACgCACEEIABBBGooAgAiBSgCACIDBEAgBCADEQMACyAFKAIEIgUEQCAEQQRrKAIAIgNBeHEiB0EEQQggA0EDcSIDGyAFakkNCCADQQAgByAFQSdqSxsNCSAEEKICCyAAQQRrKAIAIgRBeHEiBUEQQRQgBEEDcSIEG0kNByAEQQAgBUE0TxsNCCAAEKICDAELIABFDQAgAigCXCAAQQEQwQcLIAIgAigCRDYCOCACIAIpAjw3AzACQAJAIAEoAgBBxPzBAEECIAEoAgQoAgwRAAANAAJAAkAgAigCOCIAQRBJDQAgAigCNP0AAAD9DHN0YWNrIGJhY2t0cmFjZTr9JP1TDQACQAJAIAJBMGoiACgCCCIFBEAgACgCBCEEIAVBAUYEQEEAIQUgAEEANgIIIAAoAgAEfyAEBSAAQQBBARDrBiAAKAIIIQUgACgCBAsgBWpB0wA6AAAgACAFQQFqNgIIDAMLIAQsAAFBv39KDQFB4PvBAEHXAEHY/MEAEJMIAAtBAEEBQQBBqKPHABCgBQALIARB0wA6AAAgACAFNgIICyACKAI4IQAMAQsgASgCAEHG/MEAQREgASgCBCgCDBEAAA0BCyACQTBqIQcgAigCNCEKQQAhAwJAIABFDQAgACAKaiEAA0ACQCAAIgRBAWsiACwAACIFQQBIBEAgBUE/cQJ/IARBAmsiAC0AACIFwCIGQUBOBEAgBUEfcQwBCyAGQT9xAn8gBEEDayIALQAAIgXAIgZBQE4EQCAFQQ9xDAELIAZBP3EgBEEEayIALQAAQQdxQQZ0cgtBBnRyC0EGdHIhBQsCQCAFQSBGIAVBCWtBBUlyDQAgBUGFAUkNAQJAAkACQAJAIAVBCHYiBkEWaw4bAAUFBQUFBQUFBQIFBQUFBQUFBQUFBQUFBQUBAwsgBUGALUYNAwwECyAFQYDgAEYNAgwDCyAFQf8BcS0A8LhFQQJxDQEMAgsgBg0BIAVB/wFxLQDwuEVBAXFFDQELIAAgCkcNAQwCCwsgBCAKayEDCwJAAkAgBygCCCIAIANPBEAgA0UgACADTXJFBEAgBygCBCADaiwAAEG/f0wNAgsgByADNgIICwwBC0H3p8UAQTBB6PzBABCoCQALIAIgB61CgICAgIADhDcDkAEgASgCACABKAIEQZSbwAAgAkGQAWoQzgNFDQELIAIoAjAiAARAIAIoAjQiAUEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgAGpJDQcgBEEAIAUgAEEnaksbDQggARCiAgtBASEDDAELIAIoAjAiAARAIAIoAjQgAEEBEMEHC0EAIQMLIAJB4AFqJAAgAw8LAkAgAigCWCIAQYCAgIB4RwRAIABFDQIgAigCXCIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyAAakkNBSABRSAEIABBJ2pNcg0BDAYLIAItAFxBA0cNASACKAJgIgMoAgAhACADQQRqKAIAIgEoAgAiBARAIAAgBBEDAAsgASgCBCIBBEAgAEEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgAWpJDQUgBEEAIAUgAUEnaksbDQYgABCiAgsgA0EEaygCACIAQXhxIgFBEEEUIABBA3EiABtJDQQgAEUNACABQTRPDQULIAMQogILQcyyxQBBNyACQd8BakHQ+8EAQYSzxQAQwgcACwALQYDIxABBPSACQd8BakHwx8QAQcjMxAAQwgcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAu5IAQbfwN9An4BeyMAQdACayIWJABCgICAgICAgIDAACABrSIkgCIlICR+QoCAgICAgICAwABSrQJ/IAFBgSBPBEBBASABQQFyZ0EfcyIGQQF2IAZBAXFqIgZ0IAEgBnZqQQF2DAELQcAAIAEgAUEBdmsiBiAGQcAATxsLIRcgJXwhJCAAQQRrIRwgAEEQayEdIABBCGohGkEBIQoDQEEAIRhBASENIAEgE0siHgRAIAAgE0ECdCIUaiEQICQgE0EBdAJ/AkAgASATayINIBdJDQACQCANQQJJBEAgDSEJDAELAkACQAJAAkAgBSgCAEEEaiIHKAIAIBAoAgQiBiAQKAIAEMUDIgtFBEBBAiEJIA1BAkYNBSAaIBNBAnRqIQ4DQCAHKAIAIA4oAgAiCCAGEMUDDQMgDkEEaiEOIAghBiANIAlBAWoiCUcNAAsMAQsgDUECRg0CQQIhCSAaIBNBAnRqIQ4DQCAHKAIAIA4oAgAiCCAGEMUDRQ0CIA5BBGohDiAIIQYgDSAJQQFqIglHDQALCyANIQkLIAkgF0kNAyALRQ0CIAlBAXYiB0UNAiAQIAlBAnQiBmohDUEAIQ4gB0EESQ0BIB0gBiAUamohCCAHQfz///8HcSIOIQYDQCAQIAj9AAIAIBD9AAIAIib9DQwNDg8ICQoLBAUGBwABAgP9CwIAIAggJiAm/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAIQRBrIQggEEEQaiEQIAZBBGsiBg0ACyAHIA5GDQIMAQsgEEEIaiENQQAhDkEBIQdBAiEJCyAAIA5BAnQiBiAUamohCCAHIA5rIRAgDSAGa0EEayEGA0AgCCgCACENIAggBigCADYCACAGIA02AgAgBkEEayEGIAhBBGohCCAQQQFrIhANAAsLIAlBAXRBAXIMAQsgDSAXIA0gF0kbQQF0IARFDQAaIBBBICANIA1BIE8bIgYgAiADQQBBACAFEDYgBkEBdEEBcgsiDUEBdmqtfiATIApBAXZrrSATrXwgJH6FeachGAsCQAJAIA9BAkkNACAcIBNBAnQiBmohECAAIAZqIR8DQCAPQQFrIg4gFkGOAmpqLQAAIBhJDQECfwJAAkAgAyAWQQRqIA5BAnRqKAIAIghBAXYiBiAKQQF2IglqIhlPIAggCnJBAXFFcUUEQCAAIBMgGWtBAnRqIQ8gCEEBcUUNAQwCCyAZQQF0DAILIA8gBiACIAMgBkEBcmdBAXRBPnNBACAFEDYLIApBAXFFBEAgDyAGQQJ0aiAJIAIgAyAJQQFyZ0EBdEE+c0EAIAUQNgsCQCAJRSAGRXINACADIAkgBiAGIAlLIggbIglJDQAgBSgCACAPIAZBAnRqIQogCUECdCIGBEAgAiAKIA8gCBsgBvwKAAALIAIgBmohCUEEaiIVKAIAIhtBCGooAgAhFAJAIAhFBEAgAiEGA0ACfwJAIBQgCigCACIISwRAIBtBBGooAgAiESAIQSxsaiIMLwEkIQdBACEIQQAgDC8BJiILQf//AXEiEkGA+AFLDQIaQQAgB0H//wFxIhVBgPgBSw0CGiALwUEASA0BIAcgC0kgB8FBAE4NAhogCyAVckEARwwCCyAIIBRB2NHGABDwBwALIAfBQQBIIAcgC0txCyEVIAsgByAVGyAHIBJBgfgBSRshBwJAIAwvASgiC0H//wFxIhVBgPgBSw0AIAdB//8BcSISQYD4AUsNACALwUEATgRAIAfBQQBOBEAgCyAHQf//A3FLIQgMAgsgCyASckEARyEIDAELIAfBQQBIIAsgB0H//wNxSXEhCAsgBigCACESIAwvARwhDAJ/IAsgByAIGyAHIBVBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyALQRB0IgsgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAtBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCIBCEhQwAAgD8hIgJ/IAxBEHQgDEH//wFxRQ0AGiAMQf8HcSEIIAxBgIACcSEHIAxBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiNDAACAP14EQCAjEOAFQ1T4LUCUQwAAgD+SkSEiCwJ/AkAgEiAUSQRAIBEgEkEsbGoiDC8BJCEHQQAhCEEAIAwvASYiC0H//wFxIhJBgPgBSw0CGkEAIAdB//8BcSIRQYD4AUsNAhogC8FBAEgNASAHIAtJIAfBQQBODQIaIAsgEXJBAEcMAgsgEiAUQdjRxgAQ8AcACyAHwUEASCAHIAtLcQshESALIAcgERsgByASQYH4AUkbIQcCQCAMLwEoIgtB//8BcSISQYD4AUsNACAHQf//AXEiEUGA+AFLDQAgC8FBAE4EQCAHwUEATgRAIAsgB0H//wNxSyEIDAILIAsgEXJBAEchCAwBCyAHwUEASCALIAdB//8DcUlxIQgLIAwvARwhDEMAAIA/ISMgDyAKIAYgISAhkiAilCIiICJbICICfyALIAcgCBsgByASQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQsgB0GA+AFxIgdBgPgBRgRAIAtBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgC0EQdCILIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiAQiISAhkgJ/IAxBEHQgDEH//wFxRQ0AGiAMQf8HcSEIIAxBgIACcSEHIAxBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiFDAACAP14EfSAhEOAFQ1T4LUCUQwAAgD+SkQUgIwuUYEVxIggbKAIANgIAIA9BBGohDyAGIAhFQQJ0aiIGIAlGDQIgCiAIQQJ0aiIKIB9HDQALDAELIBAhBwNAAn8CQCAUIAlBBGsiEigCACIGSwRAIBtBBGooAgAgBkEsbGoiCy8BJCEGQQAhCEEAIAsvASYiCUH//wFxIgxBgPgBSw0CGkEAIAZB//8BcSIRQYD4AUsNAhogCcFBAEgNASAGIAlJIAbBQQBODQIaIAkgEXJBAEcMAgsgBiAUQdjRxgAQ8AcACyAGwUEASCAGIAlLcQshESAJIAYgERsgBiAMQYH4AUkbIQYCQCALLwEoIglB//8BcSIgQYD4AUsNACAGQf//AXEiDEGA+AFLDQAgCcFBAE4EQCAGwUEATgRAIAkgBkH//wNxSyEIDAILIAkgDHJBAEchCAwBCyAGwUEASCAJIAZB//8DcUlxIQgLIApBBGsiESgCACEMIAsvARwhCgJ/IAkgBiAIGyAGICBBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhBiAJQYCAAnEhCCAJQYD4AXEiCUGA+AFGBEAgCEEQdCIJQYCAgPwHciAGRQ0BGiAJIAZBDXRyQYCAgP4HcgwBCyAIQRB0IgggCUENdEGAgID8AHEgBkENdHJBgICAwANqciAJDQAaIAhBgICA2ANyIAZnQRBrIglBF3RrIAYgCUH//wNxQQhqdEH///8DcXILvhCIBCEhQwAAgD8hIgJ/IApBEHQgCkH//wFxRQ0AGiAKQf8HcSEGIApBgIACcSEJIApBgPgBcSIKQYD4AUYEQCAJQRB0IgpBgICA/AdyIAZFDQEaIAogBkENdHJBgICA/gdyDAELIAlBEHQiCSAKQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAoNABogCUGAgIDYA3IgBmdBEGsiCkEXdGsgBiAKQf//A3FBCGp0Qf///wNxcgu+IiNDAACAP14EQCAjEOAFQ1T4LUCUQwAAgD+SkSEiCwJ/AkAgFSgCACIGQQhqKAIAIgogDEsEQCAGQQRqKAIAIAxBLGxqIgkvASQhBkEAIQhBACAJLwEmIgpB//8BcSILQYD4AUsNAhpBACAGQf//AXEiDEGA+AFLDQIaIArBQQBIDQEgBiAKSSAGwUEATg0CGiAKIAxyQQBHDAILIAwgCkHY0cYAEPAHAAsgBsFBAEggBiAKS3ELIQwgCiAGIAwbIAYgC0GB+AFJGyEGAkAgCS8BKCIKQf//AXEiC0GA+AFLDQAgBkH//wFxIgxBgPgBSw0AIArBQQBOBEAgBsFBAE4EQCAKIAZB//8DcUshCAwCCyAKIAxyQQBHIQgMAQsgBsFBAEggCiAGQf//A3FJcSEICyAJLwEcIQlDAACAPyEjIAcgESASICEgIZIgIpQiIiAiWyAiAn8gCiAGIAgbIAYgC0GB+AFJGyIKQf//AXFFBEAgCkEQdAwBCyAKQf8HcSEGIApBgIACcSEIIApBgPgBcSIKQYD4AUYEQCAIQRB0IgpBgICA/AdyIAZFDQEaIAogBkENdHJBgICA/gdyDAELIAhBEHQiCCAKQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAoNABogCEGAgIDYA3IgBmdBEGsiCkEXdGsgBiAKQf//A3FBCGp0Qf///wNxcgu+EIgEIiEgIZICfyAJQRB0IAlB//8BcUUNABogCUH/B3EhBiAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIKQYCAgPwHciAGRQ0BGiAKIAZBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgBkENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAZnQRBrIgpBF3RrIAYgCkH//wNxQQhqdEH///8DcXILviIhQwAAgD9eBH0gIRDgBUNU+C1AlEMAAIA/kpEFICMLlGBFcSIGGygCADYCACASIAZBAnRqIQkgDyARIAZFQQJ0aiIKRwRAIAdBBGshByACIAlHDQELCyAKIQ8gAiEGCyAJIAZrIgpFDQAgDyAGIAr8CgAACyAZQQF0QQFyCyEKQQEhCCAOIg9BAUsNAAsMAQsgDyEICyAWQY4CaiAIaiAYOgAAIBZBBGogCEECdGogCjYCACAeBEAgCEEBaiEPIA1BAXYgE2ohEyANIQoMAQsLIApBAXFFBEAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQNgsgFkHQAmokAAu5IAQbfwN9An4BeyMAQdACayIWJABCgICAgICAgIDAACABrSIkgCIlICR+QoCAgICAgICAwABSrQJ/IAFBgSBPBEBBASABQQFyZ0EfcyIGQQF2IAZBAXFqIgZ0IAEgBnZqQQF2DAELQcAAIAEgAUEBdmsiBiAGQcAATxsLIRcgJXwhJCAAQQRrIRwgAEEQayEdIABBCGohGkEBIQoDQEEAIRhBASENIAEgE0siHgRAIAAgE0ECdCIUaiEQICQgE0EBdAJ/AkAgASATayINIBdJDQACQCANQQJJBEAgDSEJDAELAkACQAJAAkAgBSgCAEEEaiIHKAIAIBAoAgQiBiAQKAIAEMUDIgtFBEBBAiEJIA1BAkYNBSAaIBNBAnRqIQ4DQCAHKAIAIA4oAgAiCCAGEMUDDQMgDkEEaiEOIAghBiANIAlBAWoiCUcNAAsMAQsgDUECRg0CQQIhCSAaIBNBAnRqIQ4DQCAHKAIAIA4oAgAiCCAGEMUDRQ0CIA5BBGohDiAIIQYgDSAJQQFqIglHDQALCyANIQkLIAkgF0kNAyALRQ0CIAlBAXYiB0UNAiAQIAlBAnQiBmohDUEAIQ4gB0EESQ0BIB0gBiAUamohCCAHQfz///8HcSIOIQYDQCAQIAj9AAIAIBD9AAIAIib9DQwNDg8ICQoLBAUGBwABAgP9CwIAIAggJiAm/Q0MDQ4PCAkKCwQFBgcAAQID/QsCACAIQRBrIQggEEEQaiEQIAZBBGsiBg0ACyAHIA5GDQIMAQsgEEEIaiENQQAhDkEBIQdBAiEJCyAAIA5BAnQiBiAUamohCCAHIA5rIRAgDSAGa0EEayEGA0AgCCgCACENIAggBigCADYCACAGIA02AgAgBkEEayEGIAhBBGohCCAQQQFrIhANAAsLIAlBAXRBAXIMAQsgDSAXIA0gF0kbQQF0IARFDQAaIBBBICANIA1BIE8bIgYgAiADQQBBACAFEDcgBkEBdEEBcgsiDUEBdmqtfiATIApBAXZrrSATrXwgJH6FeachGAsCQAJAIA9BAkkNACAcIBNBAnQiBmohECAAIAZqIR8DQCAPQQFrIg4gFkGOAmpqLQAAIBhJDQECfwJAAkAgAyAWQQRqIA5BAnRqKAIAIghBAXYiBiAKQQF2IglqIhlPIAggCnJBAXFFcUUEQCAAIBMgGWtBAnRqIQ8gCEEBcUUNAQwCCyAZQQF0DAILIA8gBiACIAMgBkEBcmdBAXRBPnNBACAFEDcLIApBAXFFBEAgDyAGQQJ0aiAJIAIgAyAJQQFyZ0EBdEE+c0EAIAUQNwsCQCAJRSAGRXINACADIAkgBiAGIAlLIggbIglJDQAgBSgCACAPIAZBAnRqIQogCUECdCIGBEAgAiAKIA8gCBsgBvwKAAALIAIgBmohCUEEaiIVKAIAIhtBCGooAgAhFAJAIAhFBEAgAiEGA0ACfwJAIBQgCigCACIISwRAIBtBBGooAgAiESAIQSxsaiIMLwEkIQdBACEIQQAgDC8BJiILQf//AXEiEkGA+AFLDQIaQQAgB0H//wFxIhVBgPgBSw0CGiALwUEASA0BIAcgC0kgB8FBAE4NAhogCyAVckEARwwCCyAIIBRB2NHGABDwBwALIAfBQQBIIAcgC0txCyEVIAsgByAVGyAHIBJBgfgBSRshBwJAIAwvASgiC0H//wFxIhVBgPgBSw0AIAdB//8BcSISQYD4AUsNACALwUEATgRAIAfBQQBOBEAgCyAHQf//A3FLIQgMAgsgCyASckEARyEIDAELIAfBQQBIIAsgB0H//wNxSXEhCAsgBigCACESIAwvARwhDAJ/IAsgByAIGyAHIBVBgfgBSRsiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhCCAHQYCAAnEhCyAHQYD4AXEiB0GA+AFGBEAgC0EQdCIHQYCAgPwHciAIRQ0BGiAHIAhBDXRyQYCAgP4HcgwBCyALQRB0IgsgB0ENdEGAgID8AHEgCEENdHJBgICAwANqciAHDQAaIAtBgICA2ANyIAhnQRBrIgdBF3RrIAggB0H//wNxQQhqdEH///8DcXILvhCIBCEhQwAAgD8hIgJ/IAxBEHQgDEH//wFxRQ0AGiAMQf8HcSEIIAxBgIACcSEHIAxBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiNDAACAP14EQCAjEOAFQ1T4LUCUQwAAgD+SkSEiCwJ/AkAgEiAUSQRAIBEgEkEsbGoiDC8BJCEHQQAhCEEAIAwvASYiC0H//wFxIhJBgPgBSw0CGkEAIAdB//8BcSIRQYD4AUsNAhogC8FBAEgNASAHIAtJIAfBQQBODQIaIAsgEXJBAEcMAgsgEiAUQdjRxgAQ8AcACyAHwUEASCAHIAtLcQshESALIAcgERsgByASQYH4AUkbIQcCQCAMLwEoIgtB//8BcSISQYD4AUsNACAHQf//AXEiEUGA+AFLDQAgC8FBAE4EQCAHwUEATgRAIAsgB0H//wNxSyEIDAILIAsgEXJBAEchCAwBCyAHwUEASCALIAdB//8DcUlxIQgLIAwvARwhDEMAAIA/ISMgDyAKIAYgISAhkiAilCIiICJbICICfyALIAcgCBsgByASQYH4AUkbIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQggB0GAgAJxIQsgB0GA+AFxIgdBgPgBRgRAIAtBEHQiB0GAgID8B3IgCEUNARogByAIQQ10ckGAgID+B3IMAQsgC0EQdCILIAdBDXRBgICA/ABxIAhBDXRyQYCAgMADanIgBw0AGiALQYCAgNgDciAIZ0EQayIHQRd0ayAIIAdB//8DcUEIanRB////A3FyC74QiAQiISAhkgJ/IAxBEHQgDEH//wFxRQ0AGiAMQf8HcSEIIAxBgIACcSEHIAxBgPgBcSILQYD4AUYEQCAHQRB0IgdBgICA/AdyIAhFDQEaIAcgCEENdHJBgICA/gdyDAELIAdBEHQiByALQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAsNABogB0GAgIDYA3IgCGdBEGsiB0EXdGsgCCAHQf//A3FBCGp0Qf///wNxcgu+IiFDAACAP14EfSAhEOAFQ1T4LUCUQwAAgD+SkQUgIwuUYEVxIggbKAIANgIAIA9BBGohDyAGIAhFQQJ0aiIGIAlGDQIgCiAIQQJ0aiIKIB9HDQALDAELIBAhBwNAAn8CQCAUIAlBBGsiEigCACIGSwRAIBtBBGooAgAgBkEsbGoiCy8BJCEGQQAhCEEAIAsvASYiCUH//wFxIgxBgPgBSw0CGkEAIAZB//8BcSIRQYD4AUsNAhogCcFBAEgNASAGIAlJIAbBQQBODQIaIAkgEXJBAEcMAgsgBiAUQdjRxgAQ8AcACyAGwUEASCAGIAlLcQshESAJIAYgERsgBiAMQYH4AUkbIQYCQCALLwEoIglB//8BcSIgQYD4AUsNACAGQf//AXEiDEGA+AFLDQAgCcFBAE4EQCAGwUEATgRAIAkgBkH//wNxSyEIDAILIAkgDHJBAEchCAwBCyAGwUEASCAJIAZB//8DcUlxIQgLIApBBGsiESgCACEMIAsvARwhCgJ/IAkgBiAIGyAGICBBgfgBSRsiCUH//wFxRQRAIAlBEHQMAQsgCUH/B3EhBiAJQYCAAnEhCCAJQYD4AXEiCUGA+AFGBEAgCEEQdCIJQYCAgPwHciAGRQ0BGiAJIAZBDXRyQYCAgP4HcgwBCyAIQRB0IgggCUENdEGAgID8AHEgBkENdHJBgICAwANqciAJDQAaIAhBgICA2ANyIAZnQRBrIglBF3RrIAYgCUH//wNxQQhqdEH///8DcXILvhCIBCEhQwAAgD8hIgJ/IApBEHQgCkH//wFxRQ0AGiAKQf8HcSEGIApBgIACcSEJIApBgPgBcSIKQYD4AUYEQCAJQRB0IgpBgICA/AdyIAZFDQEaIAogBkENdHJBgICA/gdyDAELIAlBEHQiCSAKQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAoNABogCUGAgIDYA3IgBmdBEGsiCkEXdGsgBiAKQf//A3FBCGp0Qf///wNxcgu+IiNDAACAP14EQCAjEOAFQ1T4LUCUQwAAgD+SkSEiCwJ/AkAgFSgCACIGQQhqKAIAIgogDEsEQCAGQQRqKAIAIAxBLGxqIgkvASQhBkEAIQhBACAJLwEmIgpB//8BcSILQYD4AUsNAhpBACAGQf//AXEiDEGA+AFLDQIaIArBQQBIDQEgBiAKSSAGwUEATg0CGiAKIAxyQQBHDAILIAwgCkHY0cYAEPAHAAsgBsFBAEggBiAKS3ELIQwgCiAGIAwbIAYgC0GB+AFJGyEGAkAgCS8BKCIKQf//AXEiC0GA+AFLDQAgBkH//wFxIgxBgPgBSw0AIArBQQBOBEAgBsFBAE4EQCAKIAZB//8DcUshCAwCCyAKIAxyQQBHIQgMAQsgBsFBAEggCiAGQf//A3FJcSEICyAJLwEcIQlDAACAPyEjIAcgESASICEgIZIgIpQiIiAiWyAiAn8gCiAGIAgbIAYgC0GB+AFJGyIKQf//AXFFBEAgCkEQdAwBCyAKQf8HcSEGIApBgIACcSEIIApBgPgBcSIKQYD4AUYEQCAIQRB0IgpBgICA/AdyIAZFDQEaIAogBkENdHJBgICA/gdyDAELIAhBEHQiCCAKQQ10QYCAgPwAcSAGQQ10ckGAgIDAA2pyIAoNABogCEGAgIDYA3IgBmdBEGsiCkEXdGsgBiAKQf//A3FBCGp0Qf///wNxcgu+EIgEIiEgIZICfyAJQRB0IAlB//8BcUUNABogCUH/B3EhBiAJQYCAAnEhCiAJQYD4AXEiCUGA+AFGBEAgCkEQdCIKQYCAgPwHciAGRQ0BGiAKIAZBDXRyQYCAgP4HcgwBCyAKQRB0IgogCUENdEGAgID8AHEgBkENdHJBgICAwANqciAJDQAaIApBgICA2ANyIAZnQRBrIgpBF3RrIAYgCkH//wNxQQhqdEH///8DcXILviIhQwAAgD9eBH0gIRDgBUNU+C1AlEMAAIA/kpEFICMLlGBFcSIGGygCADYCACASIAZBAnRqIQkgDyARIAZFQQJ0aiIKRwRAIAdBBGshByACIAlHDQELCyAKIQ8gAiEGCyAJIAZrIgpFDQAgDyAGIAr8CgAACyAZQQF0QQFyCyEKQQEhCCAOIg9BAUsNAAsMAQsgDyEICyAWQY4CaiAIaiAYOgAAIBZBBGogCEECdGogCjYCACAeBEAgCEEBaiEPIA1BAXYgE2ohEyANIQoMAQsLIApBAXFFBEAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQNwsgFkHQAmokAAvmIQIPfwJ7IwBBQGoiAyQAIAMgATYCHCADQQA2AhggAyABNgIUIAMgADYCECADQQE6ACQgA0E/NgIMIANBPzYCICADQTRqIgcgA0EMaiICEKMCIAMgAygCOCABIAMoAjQbIgE2AhwgA0EANgIYIAMgATYCFCADIAA2AhAgA0EBOgAkIANBIzYCDCADQSM2AiAgByACEKMCIAMoAjghByADKAI0IQIgA0EBOwEwIAMgByABIAIbIgE2AiwgA0EANgIoIANBAToAJCADQS42AiAgAyABNgIcIANBADYCGCADIAE2AhQgAyAANgIQIANBLjYCDAJAAkACQAJAAkADQAJAIAMoAhAhASADQTRqIANBDGoQowIgAygCNEUEQAJAIAMtADENAAJAIAMtADBBAUYEQCADKAIsIQAgAygCKCEBDAELIAMoAiwiACADKAIoIgFGDQELIAMoAhAgAWohCiAAIAFrIQkMAgsgCg0BQQYhAQwDCyADKAIoIQAgAyADKAI8NgIoIAAgAWohCiADKAI4IABrIQkgAy0AMUEBRw0BCwsCQCAJQQBOBEACQAJAIAlFBEBBACEHQQEhBgwBCyAJEG4iBkUNASAGIQEgCiEAAkAgCSICQRBJDQAgAkHw////B3EhC0EAIQcDQCAGIAdqIQEgByAKaiIA/QAAACIS/Qz//////////////////////SciEf0WAUEBcSAR/RYAQQFxaiAR/RYCQQFxaiAR/RYDQQFxaiAR/RYEQQFxaiAR/RYFQQFxaiAR/RYGQQFxaiAR/RYHQQFxaiAR/RYIQQFxaiAR/RYJQQFxaiAR/RYKQQFxaiAR/RYLQQFxaiAR/RYMQQFxaiAR/RYNQQFxaiAR/RYOQQFxaiAR/RYPQQFxakH/AXFBEEcEQCAHIQsMAgsgASAS/Qy/v7+/v7+/v7+/v7+/v7+//W79DBoaGhoaGhoaGhoaGhoaGhr9Jv0MICAgICAgICAgICAgICAgIP1OIBL9UP0LAAAgB0EQaiEHIAJBEGsiAkEPSw0ACyACRQRAIAshBwwCCyAGIAdqIQEgByAKaiEACyACIAtqIQcDQCAALAAAIgRBAE4EQCABQSBBACAEQcEAa0H/AXFBGkkbIARyOgAAIAFBAWohASAAQQFqIQAgC0EBaiELIAJBAWsiAg0BDAILCyADIAs2AhQgAyAGNgIQIAAgAmohDyADIAk2AgwgCSAKaiEQQQAhAiALIQcDQAJ/AkACQAJAAkACQAJAAn8CQAJ/AkACQAJAAkACQAJAAkAgACwAACIBQQBIBEAgAC0AAUE/cSEFIAFBH3EhBAJ/IAFBX00EQCAAQQJqIQ0gBEEGdCAFcgwBCyAALQACQT9xIAVBBnRyIQUgAUFwSQRAIABBA2ohDSAFIARBDHRyDAELIABBBGohDSAEQRJ0QYCA8ABxIAAtAANBP3EgBUEGdHJyCyEBIAIgAGsgDWohDiABQaMHRw0BAkAgAiALaiIGRQ0AIAYgCU8EQCAGIAlGDQEMHQsgBiAKaiwAAEFASA0cCyAGIApqIQFBACEEAkADQEGDASEFIAEgCkYNASABQQFrIgIsAAAiAEEASARAIABBP3ECfyABQQJrIgItAAAiCMAiDEFATgRAIAhBH3EMAQsgDEE/cQJ/IAFBA2siAi0AACIIwCIAQb9/SgRAIAhBD3EMAQsgAEE/cSABQQRrIgItAABBB3FBBnRyC0EGdHILQQZ0ciIAQYCAxABGDQILIAIhAQJAAkAgBEEBcQ0AIABBgAFPBEAgAEGnAU0NASAAEIAFRQ0BQYCAxAAhAkEAIQQMAgtBgIDEACECQQAhBCAAQSdrIghBE01BAEEBIAh0QYGBIHEbDQEgAEHeAGsOAwEAAQALQQEhBCAAIQILIAJBgIDEAEYNAAsgAkFfcUHBAGtBGk8EQCACQaoBSQ0BIAIQlAVFDQELAkAgBkECaiIARQ0AIAAgCU8EQCAAIAlGDQEMHQsgACAKaiwAAEFASA0cCyAAIApqIQFBACECA0BBggEhBSABIBBGDQECfyABLAAAIgBBAE4EQCAAQf8BcSEAIAFBAWoMAQsgAS0AAUE/cSEGIABBH3EhBCAAQV9NBEAgBEEGdCAGciEAIAFBAmoMAQsgAS0AAkE/cSAGQQZ0ciEGIABBcEkEQCAGIARBDHRyIQAgAUEDagwBCyAEQRJ0QYCA8ABxIAEtAANBP3EgBkEGdHJyIgBBgIDEAEYNAiABQQRqCyEBAkACQCACQQFxDQAgAEGAAU8EQCAAQacBTQ0BIAAQgAVFDQFBgIDEACEEQQAhAgwCC0GAgMQAIQRBACECIABBJ2siBkETTUEAQQEgBnRBgYEgcRsNASAAQd4Aaw4DAQABAAtBASECIAAhBAsgBEGAgMQARg0ACyAEQd///wBxQcEAa0EaTwRAIARBqgFJDQEgBBCUBUUNAQtBgwEhBQsgAygCDCAHIgFrQQFNBH8gA0EMaiABQQIQ6wYgAygCFAUgAQsgAygCECIGaiIAIAU6AAEgAEHPAToAACAHQQJqDBELIAFB/wFxIQEgAEEBaiINIAIgAGtqIQ4MAQsgAUHAAUkNACABQf//B0sNBCABQQx2QfADcSIEKAKEqUIhBUEAIQACQCAEKAKIqUIiAg4CAwIACwNAIAAgAkEBdiIIIABqIgAgBSAAQQZsai8BACABQf//A3FLGyEAIAIgCGsiAkEBSw0ACwwBCyABQSByIAEgAUHBAGtBGkkbIQEMAgsgBSAAQQZsaiIALwEAIgIgAUH//wNxIgVLDQAgAiAAQQJqLQAAakH//wNxIAVJDQAgAC0AAyABIAJzcUEBcQ0AIAFBgIAEcSAALwEEIAFqQf//A3FyIQEMAQsgBEGEqcIAaiICKAIIIQRBACEAAkACQCACKAIMIgIOAgMBAAsDQCAAIAJBAXYiBSAAaiIAIAQgAEEDdGovAQAgAUH//wNxSxshACACIAVrIgJBAUsNAAsLIAQgAEEDdGoiAC8BACABQf//A3FHDQEgAUGAgARxIgQgAC8BAnIhASAEIAAvAQRyIgJFDQAgBCAALwEGciIIDQYgAUGAAUkiBUUNBEEBDAULIAFBgAFJIgRFDQFBAQwCCyABQYABSSEEC0ECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIAIAMoAgwgByICa0sEfyADQQxqIAIgABDrBiADKAIQIQYgAygCFAUgAgsgBmohAgJAIARFBEAgAUE/cUGAf3IhBCABQQZ2IQUgAUGAEE8NASACIAQ6AAEgAiAFQcABcjoAAAwJCyACIAE6AAAMCAsgAUEMdiEIIAVBP3FBgH9yIQUgAUH//wNNBEAgAiAEOgACIAIgBToAASACIAhB4AFyOgAADAgLIAIgBDoAAyACIAU6AAIgAiAIQT9xQYB/cjoAASACIAFBEnZBcHI6AAAMBwtBAiABQYAQSQ0AGkEDQQQgAUGAgARJGwsiACADKAIMIAciBGtLBEAgA0EMaiAEIAAQ6wYgAygCECEGIAMoAhQhBAsgBCAGaiEEIAUNASABQT9xQYB/ciEGIAFBBnYhBSABQYAQSQRAIAQgBjoAASAEIAVBwAFyOgAADAULIAFBDHYhCCAFQT9xQYB/ciEFIAFB//8DTQRAIAQgBjoAAiAEIAU6AAEgBCAIQeABcjoAAAwFCyAEIAY6AAMgBCAFOgACIAQgCEGAf3I6AAEgBEHwAToAAAwECyAHIQUCf0EBIAFBgAFJIgwNABpBAiABQYAQSQ0AGkEDQQQgAUGAgARJGwsiBCADKAIMIAdrSwR/IANBDGogByAEEOsGIAMoAhQhBSADKAIQBSAGCyAFaiEAIAwNASABQT9xQYB/ciEGIAFBBnYhBSABQYAQSQRAIAAgBjoAASAAIAVBwAFyOgAADAMLIAFBDHYhDCAFQT9xQYB/ciEFIAFB//8DTQRAIAAgBjoAAiAAIAU6AAEgACAMQeABcjoAAAwDCyAAIAY6AAMgACAFOgACIAAgDEGAf3I6AAEgAEHwAToAAAwCCyAEIAE6AAAMAgsgACABOgAACyADIAQgB2oiADYCFAJ/QQEgAkGAAUkiBQ0AGkECIAJBgBBJDQAaQQNBBCACQYCABEkbCyIHIAMoAgwgACIEa0sEfyADQQxqIAAgBxDrBiADKAIUBSAECyADKAIQIgZqIQECQCAFRQRAIAJBP3FBgH9yIQQgAkEGdiEFIAJBgBBJBEAgASAEOgABIAEgBUHAAXI6AAAMAgsgAkEMdiEMIAVBP3FBgH9yIQUgAkH//wNNBEAgASAEOgACIAEgBToAASABIAxB4AFyOgAADAILIAEgBDoAAyABIAU6AAIgASAMQYB/cjoAASABQfABOgAADAELIAEgAjoAAAsgAyAAIAdqIgA2AhQCf0EBIAhBgAFJIgQNABpBAiAIQYAQSQ0AGkEDQQQgCEGAgARJGwsiAiADKAIMIAAiB2tLBH8gA0EMaiAAIAIQ6wYgAygCECEGIAMoAhQFIAcLIAZqIQECQCAERQRAIAhBP3FBgH9yIQcgCEEGdiEEIAhBgBBPDQEgASAHOgABIAEgBEHAAXI6AAAgACACagwECyABIAg6AAAgACACagwDCyAIQQx2IQUgBEE/cUGAf3IhBCAIQf//A00EQCABIAc6AAIgASAEOgABIAEgBUHgAXI6AAAgACACagwDCyABIAc6AAMgASAEOgACIAEgBUGAf3I6AAEgAUHwAToAACAAIAJqDAILIAMgACAHaiIBNgIUAn9BASACQYABSSIEDQAaQQIgAkGAEEkNABpBA0EEIAJBgIAESRsLIgAgAygCDCABIgdrSwR/IANBDGogASAAEOsGIAMoAhQFIAcLIAMoAhAiBmohBwJAIARFBEAgAkE/cUGAf3IhBCACQQZ2IQUgAkGAEE8NASAHIAQ6AAEgByAFQcABcjoAACAAIAFqDAMLIAcgAjoAACAAIAFqDAILIAJBDHYhCCAFQT9xQYB/ciEFIAJB//8DTQRAIAcgBDoAAiAHIAU6AAEgByAIQeABcjoAACAAIAFqDAILIAcgBDoAAyAHIAU6AAIgByAIQYB/cjoAASAHQfABOgAAIAAgAWoMAQsgACAHagshByAOIQIgAyAHNgIUIA0iACAPRw0ACyADKAIQIQYgAygCDCEJC0EGIQECQAJAAkACQAJAIAdBA2sOBAAEAQIHCyAGLwAAQfDYAXMgBkECaiIALQAAQfkAc3JFBEBBACEBDAcLIAYvAABB8+ABcyAALQAAQfoAc3INAkEBIQEMBgtBBkECIAYoAABB8+CxiwZzIAZBBGotAABB9ABzchshAQwFC0EGQQMgBigAAEHr5sHjBnMgBkEEai8AAEHh6AFzchshAQwEC0EEIQEgBi8AAEHz3gFzIAZBAmoiAC0AAEHnAHNyRQ0DIAYvAABB+tIBcyAALQAAQfAAc3JFDQNBBkEFIAYvAABB8sIBcyAALQAAQeQAc3IbIQEMAwtBBEEGIAYoAABB896dmwdGGyEBDAILQQEgCRCaCQALEJgKAAsgCUUNACAGQQRrKAIAIgBBeHEiB0EEQQggAEEDcSIAGyAJakkNASAAQQAgByAJQSdqSxsNAiAGEKICCyADQUBrJAAgAQ8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkACyAKIAkgACAJQfD6wQAQ9QkACyAKIAlBACAGQeD6wQAQ9QkAC6MfARR/An8CQCACIANLBEAgASADQSpsaiIDLwEAIgJB//8BcUUEQCACQRB0DAMLIAJB/wdxIQEgAkGAgAJxIQUgAkGA+AFxIgJBgPgBRgRAIAVBEHQhAiACQYCAgPwHciABRQ0DGiACIAFBDXRyQYCAgP4HcgwDCyAFQRB0IQUgAkUNASACQQ10QYCAgPwAcSABQQ10ckGAgIDAA2ogBXIMAgsgAyACQbjSxgAQ8AcACyAFQYCAgNgDciABZ0EQayICQRd0ayABIAJB//8DcUEIanRB////A3FyCyEBAn8gAy8BAiIFQf//AXFFBEAgBUEQdAwBCyAFQf8HcSECIAVBgIACcSEGIAVBgPgBcSIFQYD4AUYEQCAGQRB0IQUgBUGAgID8B3IgAkUNARogBSACQQ10ckGAgID+B3IMAQsgBkEQdCEGIAVBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAGciAFDQAaIAZBgICA2ANyIAJnQRBrIgVBF3RrIAIgBUH//wNxQQhqdEH///8DcXILIQUCfyADLwEEIgZB//8BcUUEQCAGQRB0DAELIAZB/wdxIQIgBkGAgAJxIQcgBkGA+AFxIgZBgPgBRgRAIAdBEHQhBiAGQYCAgPwHciACRQ0BGiAGIAJBDXRyQYCAgP4HcgwBCyAHQRB0IQcgBkENdEGAgID8AHEgAkENdHJBgICAwANqIAdyIAYNABogB0GAgIDYA3IgAmdBEGsiBkEXdGsgAiAGQf//A3FBCGp0Qf///wNxcgshBgJ/IAMvAQYiB0H//wFxRQRAIAdBEHQMAQsgB0H/B3EhAiAHQYCAAnEhCCAHQYD4AXEiB0GA+AFGBEAgCEEQdCEHIAdBgICA/AdyIAJFDQEaIAcgAkENdHJBgICA/gdyDAELIAhBEHQhCCAHQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogCHIgBw0AGiAIQYCAgNgDciACZ0EQayIHQRd0ayACIAdB//8DcUEIanRB////A3FyCyEHAn8gAy8BCCIIQf//AXFFBEAgCEEQdAwBCyAIQf8HcSECIAhBgIACcSEJIAhBgPgBcSIIQYD4AUYEQCAJQRB0IQggCEGAgID8B3IgAkUNARogCCACQQ10ckGAgID+B3IMAQsgCUEQdCEJIAhBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAJciAIDQAaIAlBgICA2ANyIAJnQRBrIghBF3RrIAIgCEH//wNxQQhqdEH///8DcXILIQgCfyADLwEKIglB//8BcUUEQCAJQRB0DAELIAlB/wdxIQIgCUGAgAJxIQogCUGA+AFxIglBgPgBRgRAIApBEHQhCSAJQYCAgPwHciACRQ0BGiAJIAJBDXRyQYCAgP4HcgwBCyAKQRB0IQogCUENdEGAgID8AHEgAkENdHJBgICAwANqIApyIAkNABogCkGAgIDYA3IgAmdBEGsiCUEXdGsgAiAJQf//A3FBCGp0Qf///wNxcgshCQJ/IAMvAQwiCkH//wFxRQRAIApBEHQMAQsgCkH/B3EhAiAKQYCAAnEhCyAKQYD4AXEiCkGA+AFGBEAgC0EQdCEKIApBgICA/AdyIAJFDQEaIAogAkENdHJBgICA/gdyDAELIAtBEHQhCyAKQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogC3IgCg0AGiALQYCAgNgDciACZ0EQayIKQRd0ayACIApB//8DcUEIanRB////A3FyCyEKAn8gAy8BDiILQf//AXFFBEAgC0EQdAwBCyALQf8HcSECIAtBgIACcSEMIAtBgPgBcSILQYD4AUYEQCAMQRB0IQsgC0GAgID8B3IgAkUNARogCyACQQ10ckGAgID+B3IMAQsgDEEQdCEMIAtBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAMciALDQAaIAxBgICA2ANyIAJnQRBrIgtBF3RrIAIgC0H//wNxQQhqdEH///8DcXILIQsCfyADLwEQIgxB//8BcUUEQCAMQRB0DAELIAxB/wdxIQIgDEGAgAJxIQ0gDEGA+AFxIgxBgPgBRgRAIA1BEHQhDCAMQYCAgPwHciACRQ0BGiAMIAJBDXRyQYCAgP4HcgwBCyANQRB0IQ0gDEENdEGAgID8AHEgAkENdHJBgICAwANqIA1yIAwNABogDUGAgIDYA3IgAmdBEGsiDEEXdGsgAiAMQf//A3FBCGp0Qf///wNxcgshDAJ/IAMvARIiDUH//wFxRQRAIA1BEHQMAQsgDUH/B3EhAiANQYCAAnEhDiANQYD4AXEiDUGA+AFGBEAgDkEQdCENIA1BgICA/AdyIAJFDQEaIA0gAkENdHJBgICA/gdyDAELIA5BEHQhDiANQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogDnIgDQ0AGiAOQYCAgNgDciACZ0EQayINQRd0ayACIA1B//8DcUEIanRB////A3FyCyENAn8gAy8BFCIOQf//AXFFBEAgDkEQdAwBCyAOQf8HcSECIA5BgIACcSEPIA5BgPgBcSIOQYD4AUYEQCAPQRB0IQ4gDkGAgID8B3IgAkUNARogDiACQQ10ckGAgID+B3IMAQsgD0EQdCEPIA5BDXRBgICA/ABxIAJBDXRyQYCAgMADaiAPciAODQAaIA9BgICA2ANyIAJnQRBrIg5BF3RrIAIgDkH//wNxQQhqdEH///8DcXILIQ4CfyADLwEWIg9B//8BcUUEQCAPQRB0DAELIA9B/wdxIQIgD0GAgAJxIRAgD0GA+AFxIg9BgPgBRgRAIBBBEHQhDyAPQYCAgPwHciACRQ0BGiAPIAJBDXRyQYCAgP4HcgwBCyAQQRB0IRAgD0ENdEGAgID8AHEgAkENdHJBgICAwANqIBByIA8NABogEEGAgIDYA3IgAmdBEGsiD0EXdGsgAiAPQf//A3FBCGp0Qf///wNxcgshDwJ/IAMvARgiEEH//wFxRQRAIBBBEHQMAQsgEEH/B3EhAiAQQYCAAnEhESAQQYD4AXEiEEGA+AFGBEAgEUEQdCEQIBBBgICA/AdyIAJFDQEaIBAgAkENdHJBgICA/gdyDAELIBFBEHQhESAQQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogEXIgEA0AGiARQYCAgNgDciACZ0EQayIQQRd0ayACIBBB//8DcUEIanRB////A3FyCyEQAn8gAy8BGiIRQf//AXFFBEAgEUEQdAwBCyARQf8HcSECIBFBgIACcSESIBFBgPgBcSIRQYD4AUYEQCASQRB0IREgEUGAgID8B3IgAkUNARogESACQQ10ckGAgID+B3IMAQsgEkEQdCESIBFBDXRBgICA/ABxIAJBDXRyQYCAgMADaiASciARDQAaIBJBgICA2ANyIAJnQRBrIhFBF3RrIAIgEUH//wNxQQhqdEH///8DcXILIRECfyADLwEcIhJB//8BcUUEQCASQRB0DAELIBJB/wdxIQIgEkGAgAJxIRMgEkGA+AFxIhJBgPgBRgRAIBNBEHQhEiASQYCAgPwHciACRQ0BGiASIAJBDXRyQYCAgP4HcgwBCyATQRB0IRMgEkENdEGAgID8AHEgAkENdHJBgICAwANqIBNyIBINABogE0GAgIDYA3IgAmdBEGsiEkEXdGsgAiASQf//A3FBCGp0Qf///wNxcgshEgJ/IAMvAR4iE0H//wFxRQRAIBNBEHQMAQsgE0H/B3EhAiATQYCAAnEhFCATQYD4AXEiE0GA+AFGBEAgFEEQdCETIBNBgICA/AdyIAJFDQEaIBMgAkENdHJBgICA/gdyDAELIBRBEHQhFCATQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogFHIgEw0AGiAUQYCAgNgDciACZ0EQayITQRd0ayACIBNB//8DcUEIanRB////A3FyCyETAn8gAy8BICIUQf//AXFFBEAgFEEQdAwBCyAUQf8HcSECIBRBgIACcSEVIBRBgPgBcSIUQYD4AUYEQCAVQRB0IRQgFEGAgID8B3IgAkUNARogFCACQQ10ckGAgID+B3IMAQsgFUEQdCEVIBRBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAVciAUDQAaIBVBgICA2ANyIAJnQRBrIhRBF3RrIAIgFEH//wNxQQhqdEH///8DcXILIRQCfyADLwEiIhVB//8BcUUEQCAVQRB0DAELIBVB/wdxIQIgFUGAgAJxIRYgFUGA+AFxIhVBgPgBRgRAIBZBEHQhFSAVQYCAgPwHciACRQ0BGiAVIAJBDXRyQYCAgP4HcgwBCyAWQRB0IRYgFUENdEGAgID8AHEgAkENdHJBgICAwANqIBZyIBUNABogFkGAgIDYA3IgAmdBEGsiFUEXdGsgAiAVQf//A3FBCGp0Qf///wNxcgshFQJ/IAMvASQiFkH//wFxRQRAIBZBEHQMAQsgFkH/B3EhAiAWQYCAAnEhBCAWQYD4AXEiFkGA+AFGBEAgBEEQdCEWIBZBgICA/AdyIAJFDQEaIBYgAkENdHJBgICA/gdyDAELIARBEHQhBCAWQQ10QYCAgPwAcSACQQ10ckGAgIDAA2ogBHIgFg0AGiAEQYCAgNgDciACZ0EQayIWQRd0ayACIBZB//8DcUEIanRB////A3FyCyEWAn8gAy8BJiIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSECIARBgIACcSEXIARBgPgBcSIEQYD4AUYEQCAXQRB0IQQgBEGAgID8B3IgAkUNARogBCACQQ10ckGAgID+B3IMAQsgF0EQdCEXIARBDXRBgICA/ABxIAJBDXRyQYCAgMADaiAXciAEDQAaIBdBgICA2ANyIAJnQRBrIgRBF3RrIAIgBEH//wNxQQhqdEH///8DcXILIQIgAAJ/IAMvASgiBEH//wFxRQRAIARBEHQMAQsgBEH/B3EhAyAEQYCAAnEhFyAEQYD4AXEiBEGA+AFGBEAgF0EQdCEEIARBgICA/AdyIANFDQEaIAQgA0ENdHJBgICA/gdyDAELIBdBEHQhFyAEQQ10QYCAgPwAcSADQQ10ckGAgIDAA2ogF3IgBA0AGiAXQYCAgNgDciADZ0EQayIEQRd0ayADIARB//8DcUEIanRB////A3FyCzYCUCAAIAI2AkwgACAWNgJIIAAgFTYCRCAAIBQ2AkAgACATNgI8IAAgEjYCOCAAIBE2AjQgACAQNgIwIAAgDzYCLCAAIA42AiggACANNgIkIAAgDDYCICAAIAs2AhwgACAKNgIYIAAgCTYCFCAAIAg2AhAgACAHNgIMIAAgBjYCCCAAIAU2AgQgACABNgIAC9YhAhB/An4jAEHQAWsiBCQAIAEoAgwhBQJAAkACQAJAAn8CQAJAAkACfwJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCFCIGIAEoAhAiCEkEQCABQQxqIQkDQAJAAkAgBSAGai0AACIHQQlrDiUBAQ4OAQ4ODg4ODg4ODg4ODg4ODg4ODgEOCw4ODg4ODg4ODg4KAAsgB0HbAGsOIQsNDQ0NDQ0NDQ0NBQ0NDQ0NDQ0DDQ0NDQ0EDQ0NDQ0NDg0LIAEgBkEBaiIGNgIUIAYgCEcNAAsgCCEGCyAEQQU2AlAgBEEIaiAFIAggBkEBaiIBIAggASAISRsQ+AEgBEHQAGogBCgCCCAEKAIMEKYIIQEgAEGVgICAeDYCACAAIAE2AgQMGQsgASAGQQFqIgc2AhQgByAITw0CIAEgBkECaiIJNgIUIAUgB2otAABB9QBHDRYgCSAHIAggByAISxsiB0YNAiABIAZBA2oiAjYCFCAFIAlqLQAAQewARwRAIAIhCQwXCyACIAdGDQIgASAGQQRqIgk2AhQgAiAFai0AAEHsAEcNFkGSgICAeCEGDBQLIAEgBkEBaiIHNgIUIAcgCE8NAiABIAZBAmoiCTYCFCAFIAdqLQAAQfIARw0RIAkgByAIIAcgCEsbIgdGDQIgASAGQQNqIgI2AhQgBSAJai0AAEH1AEcEQCACIQkMEgsgAiAHRg0CIAEgBkEEaiIJNgIUIAIgBWotAABB5QBHDRFBgICAgHghBkEBIQhBACEHDBQLIAEgBkEBaiIHNgIUIAcgCE8NAiABIAZBAmoiCTYCFCAFIAdqLQAAQeEARw0OIAkgByAIIAcgCEsbIgdGDQIgASAGQQNqIgI2AhQgBSAJai0AAEHsAEcEQCACIQkMDwsgAiAHRg0CIAEgBkEEaiIDNgIUIAIgBWotAABB8wBHBEAgAyEJDA8LIAMgB0YNAiABIAZBBWoiCTYCFCADIAVqLQAAQeUARw0OQYCAgIB4IQYMEgsgBEEFNgJQIARBEGogBSAIIAcQ+AEgBEHQAGogBCgCECAEKAIUEKYIDBQLIARBBTYCUCAEQSBqIAUgCCAHEPgBIARB0ABqIAQoAiAgBCgCJBCmCAwPCyAEQQU2AlAgBEEwaiAFIAggBxD4ASAEQdAAaiAEKAIwIAQoAjQQpggMDAsgASAGQQFqNgIUQQAhByAEQdAAaiABQQAQ+AMgBCkDUCIUQgNRDQIgFKdBAnQoAtiNSCEGIAQoAlwhBSAEKAJYIQlBACEIDA8LIAFBADYCCCABIAZBAWo2AhQgBEHQAGogCSABEIICIAQoAlQhCCAEKAJQIgFBAkYNByAEKAJYIQUCQCABQQFGBEAgBUEASA0GQYyAgIB4IQYgBUUEQEEBIQlBACEIQQAhBQwCCyAFEG4iCUUNFiAFBEAgCSAIIAX8CgAACyAFIQgMAQtBjYCAgHghBiAFIQkLIAhBgH5xIQcMDgsgASABLQAYQQFrIgk6ABggCUH/AXFFDQUgASAGQQFqNgIUIARBAToAuAEgBCABNgK0ASAEIAM2ArABIAQgAjYCrAEgBEKAgICAgAE3AogBIARBtAFqIQxBACEGQQghCEEIIQ4gAyEHQQAhBSACIQkCQANAAkAgBCAGNgKQASAEIAVBAWo2AqgBIARB0ABqIAwQ4gMCQAJ/IAQtAFBBAUYEQCAEKAJUDAELAkACQCAELQBRQQFGBEAgBCgCtAEhCiAEIAk2AsQBIAQgBTYCwAEgBEEBNgK8ASAEIAQoAswBNgJgIAQgBP0AArwB/QsDUCAEQZgBaiAKIARB0ABqIgUgBxBsIAQoApgBIgpBlYCAgHhHIg1FBEAgByAFEJYCCwJAIAQoAlBBAmsOAwADAAMLIAQoAlgiBQ0BDAILIAQpAowBIRQgBCgCiAEhCEGUgICAeCEGQQAhBwwECyAEKAJcIgtBBGsoAgAiD0F4cSIQQQRBCCAPQQNxIg8bIAVqSQ0XIA9BACAQIAVBJ2pLGw0YIAsQogILIA0NASAHIARBvAFqEJYCIAQoApwBCyEIIAcgCRCWAiAEKAKMASEHIAYEQCAHIQUDQCAFEJEDIAVBEGohBSAGQQFrIgYNAAsLIAQoAogBIgUEQCAHQQRrKAIAIgZBeHEiCSAFQQR0IgVBBEEIIAZBA3EiBhtySQ0WIAZBACAJIAVBJ2pLGw0EIAcQogILIAMgAhCWAkGVgICAeCEGQQEhBwwBCyAEKAKcASEHIAQpA6ABIRQgBCgCiAEgBkYEQCMAQRBrIgUkACAFQQRqIARBiAFqIgkoAgAiDiAJKAIEQQQgDkEBdCIOIA5BBE0bIg5BCEEQEM4GIAUoAgRBAUYEQCAFKAIIIAUoAgwQmgkACyAFKAIIIQ0gCSAONgIAIAkgDTYCBCAFQRBqJAAgBCgCjAEhDgsgCCAOaiIFIBQ3AwAgBUEEayAHNgIAIAVBCGsgCjYCACAIQRBqIQggBkEBaiEGIAQoArABIQcgBCgCqAEhBSAEKAKsASEJDAELCyABIAEtABhBAWo6ABggBCABEK4EIgU2AmAgBCAUNwNYIAQgCDYCVCAEIAY2AlACQCAHRQRAIAUNASAUQiCIpyEFIBSnIQkMCgtBlYCAgHghBiAFRQ0JIARB4ABqEMQEDAkLIARB0ABqEJEDQZWAgIB4IQYgBSEIDAgLDBILIAAgBCgCWDYCBCAAQZWAgIB4NgIADA8LIAdBMGtB/wFxQQpPBEAgBEEKNgJQIAQgBSAIIAZBAWoiAiAIIAIgCEkbEPgBIARB0ABqIAQoAgAgBCgCBBCmCCABENMGIQEgAEGVgICAeDYCACAAIAE2AgQMDwsgBEHQAGogAUEBEPgDIAQpA1AiFEIDUgRAIBSnQQJ0KALkjUghBiAEKAJcIQUgBCgCWCEJQQAhCEEAIQcMDAsgACAEKAJYNgIEIABBlYCAgHg2AgAMDgsgASABLQAYQQFrIgc6ABggB0H/AXFFDQEgASAGQQFqNgIUIAQgAjYCZCAEQQE6AGAgBCABNgJcIAQgAzYCaCAEQYCAgIB4NgJQIARBADYCdCAEQoCAgICAATcCbCAEQdwAaiESQRAhDkEIIQhBACEHIAMhBiACIQwCQAJAAkADQAJAIARBvAFqIBIQjwMCQAJ/AkACQAJAAkACQAJAAn8gBC0AvAFBAUYEQCAEKALAAQwBCyAELQC9AUEBRw0BIAQoAlwiDUEANgIIIA0gDSgCFEEBajYCFCAEQbwBaiANQQxqIA0QggIgBCgCwAEhCSAEKAK8ASIKQQJHBEAgBCgCxAEhBSAKQQFGBEAgBUEASA0QIAVFBEBBASEGDAYLIAUQbiIGRQ0gIAVFDQUgBiAJIAX8CgAADAULIAVBAEgNDyAFRQRAQQEhBgwECyAFEG4iBkUNHyAFRQ0DIAYgCSAF/AoAAAwDCyAJCyEIIAQgDDYCwAEgBCgCUCIFQYCAgIB4RgRAIARBCDYCvAEgBiAEQbwBahCWAgwFCyAEIAQpAlQiFDcCyAEgBCAFNgLEASAEQQI2ArwBIAYgBEG8AWoQlgIgBUUNBCAUpyAFQQEQwQcMBAsgBCgCbCEGIAQoAlAiBUEASgRAIAQoAlQgBUEBEMEHCyAHrSEUQQAgBkGVgICAeEcNBRoMBAsCQCAEKAJQIgxBAEwNAAJAIAQoAlQiCkEEaygCACILQXhxIg9BBEEIIAtBA3EiCxsgDGpPBEAgC0EAIA8gDEEnaksbDQEgChCiAgwCCwwbCwwbCyAEIAU2AlggBCAGNgJUQY2AgIB4IQ8gBSEGDAELIAQoAlAiDEEASgRAIAQoAlQiCkEEaygCACILQXhxIg9BBEEIIAtBA3EiCxsgDGpJDRkgC0EAIA8gDEEnaksbDRogChCiAgsgBCAFNgJYIAQgBjYCVEGMgICAeCEPIAVFBEBBASEGQQAhCQwBCyAFEG4iBkUNGiAFBEAgBiAJIAX8CgAACyAFIQkLIAQgCTYClAEgBCAGNgKQASAEIAk2AowBIAQgDzYCiAEgBEGAgICAeDYCUCAEKAJoIQYgBCkCVCEUIAQoAmQhDAJ/IA0Q+QUiCgRAIAogBUUNARogFKcgBUEBEMEHIAoMAQsgBCAFNgKwASAEIAw2AqwBIARBAjYCqAEgBCAUNwK0ASAUQiCIIhWnIQogFKchEAJAIBVQBEBBASELDAELIAoQbiILRQ0JIApFDQAgCyAQIAr8CgAACyAEIAo2AswBIAQgCzYCyAEgBCAKNgLEASAEIAw2AsABIARBAjYCvAEgBEGYAWogDSAEQbwBaiIRIAYQbCAEKAKYAUGVgICAeEciDUUEQCAGIBEQlgILIBVQRQRAIAtBBGsoAgAiEUF4cSITQQRBCCARQQNxIhEbIApqSQ0ZIBFBACATIApBJ2pLGw0aIAsQogILIA1FBEAgBiAEQagBahCWAgsgBQRAIBBBBGsoAgAiCkF4cSILQQRBCCAKQQNxIgobIAVqSQ0ZIApBACALIAVBJ2pLGw0KIBAQogILIA0NBCAEKAKcAQshCCAGIAwQlgIgBEGIAWoQkQMLIAQoAnAhBSAHBEAgBSEGA0AgBhCRAyAGQRBqEJEDIAZBIGohBiAHQQFrIgcNAAsLIAQoAmwiBgRAIAUgBkEFdEEIEMEHCwsgAyACEJYCQZWAgIB4IQZBAQsgASABLQAYQQFqOgAYIAQgARCwBSIFNgJgIAQgFDcDWCAEIAg2AlQgBCAGNgJQDQEgBQ0DIBRCIIinIQUgFKchCQwKCyAEIAT9AAOYAf0LA3ggBCkDkAEhFCAEKAJsIAdGBEAgBEHsAGoQogcgBCgCcCEICyAIIA5qIgVBCGsgFDcDACAFQQxrIAk2AgAgBUEQayAPNgIAIAUgBP0AA3j9CwIAIAQgB0EBaiIHNgJ0IA5BIGohDgwBCwtBlYCAgHghBiAFRQ0HIARB4ABqEMQEDAcLIARB0ABqEJEDQZWAgIB4IQYgBSEIDAYLQQEgChCaCQALDA8LEJgKAAsgBEEYNgJQIARByABqIAUgCCAGQQFqIgEgCCABIAhJGxD4ASAEQdAAaiAEKAJIIAQoAkwQpgghASAAQZWAgIB4NgIAIAAgATYCBAwLCyAEQRg2AlAgBEFAayAFIAggBkEBaiIBIAggASAISRsQ+AEgBEHQAGogBCgCQCAEKAJEEKYIIQEgAEGVgICAeDYCACAAIAE2AgQMCgsgAEGVgICAeDYCACAAIAg2AgQMCQsgBkGVgICAeEcEQCAIQYB+cSEHDAYLIAggARDTBiEBIABBlYCAgHg2AgAgACABNgIEDAgLIARBCTYCUCAEQThqIAUgCCAJEPgBIARB0ABqIAQoAjggBCgCPBCmCAshASAAQZWAgIB4NgIAIAAgATYCBAwGCyAEQQk2AlAgBEEoaiAFIAggCRD4ASAEQdAAaiAEKAIoIAQoAiwQpggLIQEgAEGVgICAeDYCACAAIAE2AgQMBAtBACEHQQAhCAsgACAFNgIMIAAgCTYCCCAAIAY2AgAgACAIQf8BcSAHcjYCBAwCCyAEQQk2AlAgBEEYaiAFIAggCRD4ASAEQdAAaiAEKAIYIAQoAhwQpggLIQEgAEGVgICAeDYCACAAIAE2AgQLIARB0AFqJAAPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAtBASAFEJoJAAusGQEhfyMAQSBrIg4kACAOQRRqIAEgACgCBCIbIAAoAggQ0AQgDigCGCEJAkACQAJAAkACQCAOKAIUIgpBgICAgHhGBEAgCSEXDAELIA4gCSAOKAIcEEEgDigCBCEXIA4oAgAiGEGAgICAeEYEQCAKRQ0BIAlBBGsoAgAiAUF4cSICQQRBCCABQQNxIgEbIApqSQ0EIAFBACACIApBJ2pLGw0FIAkQogIMAQsgDigCDCEQIA4oAgghDSAKBEAgCUEEaygCACILQXhxIgxBBEEIIAtBA3EiCxsgCmpJDQQgC0EAIAwgCkEnaksbDQUgCRCiAgsgDkEUaiABIAAoAhAiHCAAKAIUENAEIA4oAhghCQJAAkAgDigCFCIKQYCAgIB4RgRAIAkhAQwBCyAOIAkgDigCHBBBIA4oAgQhASAOKAIAIh1BgICAgHhHDQEgCkUNACAJQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAKakkNBSACQQAgAyAKQSdqSxsNBiAJEKICCyAYBEAgF0EEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgGGpJDQUgAkEAIAMgGEEnaksbDQYgFxCiAgsgASEXDAELIA4oAgghGSAKBEAgCUEEaygCACILQXhxIgxBBEEIIAtBA3EiCxsgCmpJDQQgC0EAIAwgCkEnaksbDQUgCRCiAgsgACgCHCERIAAoAhghHwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkAgAkUNACAALQAkIgkEQCAAKAIgIQ9BD0EIQQMgCUEBSyIjGyAJQQJLIiQbIhJBAnQhJSAQQQJ0ISYDQCAeQQJ0IgkgGU8NAyAJQQFyIgogGU8NBSAeQQFqIR5BACEMIA0gECABIAlqLQAAIgsgASAKai0AACIUQQh0ckHA/wNxQQZ2IglsIBIgC0E/cSIKbGpBAnQiE2siFUEAIA0gFU8bIScgCSAmbCAKICVsaiEoIBMgF2ohKUF0IRoDQCAMICdGDSEgDyAMIClqIhMtAAAiCU0NKiAMICBqIgogBE8NJyADIBpqIhZBDGogESAJQQJ0aioCADgCACAMIChqIhVBBGogDU8NIyAPIBNBBGotAAAiCU0NKiAKQQNqIARPDSUgFkEYaiARIAlBAnRqKgIAOAIAIBVBCGogDU8NIiAPIBNBCGotAAAiCU0NKiAKQQZqIARPDSYgFkEkaiARIAlBAnRqKgIAOAIAAkAgI0UNACAVQQxqIA1PDRsgDyATQQxqLQAAIglNDSogDCAhaiIKIAZPDSEgBSAaaiIWQQxqIBEgCUECdGoqAgA4AgAgFUEQaiANTw0aIA8gE0EQai0AACIJTQ0qIApBA2ogBk8NICAWQRhqIBEgCUECdGoqAgA4AgAgFUEUaiANTw0ZIA8gE0EUai0AACIJTQ0qIApBBmogBk8NHyAWQSRqIBEgCUECdGoqAgA4AgAgFUEYaiANTw0YIA8gE0EYai0AACIJTQ0qIApBCWogBk8NHiAWQTBqIBEgCUECdGoqAgA4AgAgFUEcaiANTw0XIA8gE0Ecai0AACIJTQ0qIApBDGogBk8NHSAWQTxqIBEgCUECdGoqAgA4AgAgJEUNACAVQSBqIA1PDQ4gDyATQSBqLQAAIglNDSkgDCAiaiIKIAhPDRYgByAaaiIWQQxqIBEgCUECdGoqAgA4AgAgFUEkaiANTw0NIA8gE0Ekai0AACIJTQ0pIApBA2ogCE8NFSAWQRhqIBEgCUECdGoqAgA4AgAgFUEoaiANTw0MIA8gE0Eoai0AACIJTQ0pIApBBmogCE8NFCAWQSRqIBEgCUECdGoqAgA4AgAgFUEsaiANTw0LIA8gE0Esai0AACIJTQ0pIApBCWogCE8NEyAWQTBqIBEgCUECdGoqAgA4AgAgFUEwaiANTw0JIA8gE0Ewai0AACIJTQ0pIApBDGogCE8NEiAWQTxqIBEgCUECdGoqAgA4AgAgFUE0aiANTw0IIA8gE0E0ai0AACIJTQ0pIApBD2ogCE8NESAWQcgAaiARIAlBAnRqKgIAOAIAIBVBOGogDU8NCiAPIBNBOGotAAAiCU0NKSAKQRJqIAhPDRAgFkHUAGogESAJQQJ0aioCADgCAAsgGkEEaiEaIAxBAWoiDEEDRw0ACyAiQRVqISIgB0HUAGohByADQSRqIQMgIEEJaiEgICFBD2ohISAFQTxqIQUgAiAeRw0ACwwBC0EAIQkDQCAJIBlPDQIgCUEBaiAZTw0DIAlBBGohCSACQQFrIgINAAsLIB8EQCARQQRrKAIAIgJBeHEiAyAfQQJ0IgRBBEEIIAJBA3EiAhtqSQ0sIAJBACADIARBJ2pLGw0tIBEQogILIB0EQCABQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyAdakkNLCACQQAgAyAdQSdqSxsNLSABEKICCyAYBEAgF0EEaygCACIBQXhxIgJBBEEIIAFBA3EiARsgGGpJDSwgAUEAIAIgGEEnaksbDS0gFxCiAgsgACgCACIBBEAgG0EEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDSwgAkEAIAMgAUEnaksbDS0gGxCiAgsgACgCDCIARQRAQQAhFwwrCyAcQQRrKAIAIgFBeHEiAkEEQQggAUEDcSIBGyAAakkNK0EAIRcgAUUNKSACIABBJ2pLDScMKQsgCSAZQaj6xgAQ8AcACyAJQQFqIQoLIAogGUG4+sYAEPAHAAsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqQTRqDAYLIBAgFEEIdCALckHA/wNxQQZ2bEECdCASIAtBP3FsQQJ0aiAMakEwagwFCyAQIBRBCHQgC3JBwP8DcUEGdmxBAnQgEiALQT9xbEECdGogDGpBOGoMBAsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqQSxqDAMLIBAgFEEIdCALckHA/wNxQQZ2bEECdCASIAtBP3FsQQJ0aiAMakEoagwCCyAQIBRBCHQgC3JBwP8DcUEGdmxBAnQgEiALQT9xbEECdGogDGpBJGoMAQsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqQSBqCyANQcj6xgAQ8AcACyAKQRJqIQoMBQsgCkEPaiEKDAQLIApBDGohCgwDCyAKQQlqIQoMAgsgCkEGaiEKDAELIApBA2ohCgsgCiAIQej6xgAQ8AcACyAQIBRBCHQgC3JBwP8DcUEGdmxBAnQgEiALQT9xbEECdGogDGpBHGoMBAsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqQRhqDAMLIBAgFEEIdCALckHA/wNxQQZ2bEECdCASIAtBP3FsQQJ0aiAMakEUagwCCyAQIBRBCHQgC3JBwP8DcUEGdmxBAnQgEiALQT9xbEECdGogDGpBEGoMAQsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqQQxqCyANQfj6xgAQ8AcACyAKQQxqIQoMAwsgCkEJaiEKDAILIApBBmohCgwBCyAKQQNqIQoLIAogBkGY+8YAEPAHAAsgECAUQQh0IAtyQcD/A3FBBnZsQQJ0IBIgC0E/cWxBAnRqIAxqDAILIBAgFEEIdCALckHA/wNxQQZ2bEECdCASIAtBP3FsQQJ0aiAMakEIagwBCyAQIBRBCHQgC3JBwP8DcUEGdmxBAnQgEiALQT9xbEECdGogDGpBBGoLIA1BqPvGABDwBwALIApBA2ohCgwBCyAKQQZqIQoLIAogBEHI+8YAEPAHAAsgCSAPQdj6xgAQ8AcACyAJIA9BiPvGABDwBwALIAkgD0G4+8YAEPAHAAsMBAsgACgCACIBBEAgG0EEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpJDQMgAkEAIAMgAUEnaksbDQQgGxCiAgsgACgCDCIBBEAgACgCECICQQRrKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNAyADQQAgBCABQSdqSxsNBCACEKICCyAAKAIYIgFFDQEgACgCHCIcQQRrKAIAIgBBeHEiAiABQQJ0IgFBBEEIIABBA3EiABtqSQ0CIABFIAIgAUEnak1yDQAMAwsgHBCiAgsgDkEgaiQAIBcPC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAv/IwEIfwJAAkACQAJAIABB9QFPBEAgAEHM/3tLBEBBAA8LIABBC2oiAUF4cSEFQcDDyAAoAgAiCEUNAkEfIQcgAEH1//8HTw0BIAVBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBwwBCwJAAkACQAJAAkBBvMPIACgCACICQRAgAEELakH4A3EgAEELSRsiBUEDdiIAdiIBQQNxBEAgAUF/c0EBcSAAaiIGQQN0IgBBtMHIAGoiBCAAQbzByABqKAIAIgEoAggiA0YNASADIAQ2AgwgBCADNgIIDAILIAVBxMPIACgCAE0NBiABDQJBwMPIACgCACIARQ0GIABoQQJ0QaTAyABqKAIAIgEoAgRBeHEgBWshAyABIQIDQAJAIAEoAhAiAA0AIAEoAhQiAA0AIAIoAhghBwJAAkAgAiACKAIMIgBGBEAgAkEUQRAgAigCFCIAG2ooAgAiAQ0BQQAhAAwCCyACKAIIIgEgADYCDCAAIAE2AggMAQsgAkEUaiACQRBqIAAbIQQDQCAEIQYgASIAQRRqIABBEGogACgCFCIBGyEEIABBFEEQIAEbaigCACIBDQALIAZBADYCAAsgB0UNBgJAIAIoAhxBAnRBpMDIAGoiASgCACACRwRAIAIgBygCEEcEQCAHIAA2AhQgAA0CDAkLIAcgADYCECAADQEMCAsgASAANgIAIABFDQYLIAAgBzYCGCACKAIQIgEEQCAAIAE2AhAgASAANgIYCyACKAIUIgFFDQYgACABNgIUIAEgADYCGAwGCyAAKAIEQXhxIAVrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAALAAtBvMPIACACQX4gBndxNgIACyABIABBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQgAUEIag8LAkBBAiAAdCIEQQAgBGtyIAEgAHRxaCIGQQN0IgFBtMHIAGoiBCABQbzByABqKAIAIgAoAggiA0cEQCADIAQ2AgwgBCADNgIIDAELQbzDyAAgAkF+IAZ3cTYCAAsgACAFQQNyNgIEIAAgBWoiByABIAVrIgZBAXI2AgQgACABaiAGNgIAQcTDyAAoAgAiAgRAQczDyAAoAgAhAQJAQbzDyAAoAgAiBEEBIAJBA3Z0IgNxRQRAQbzDyAAgAyAEcjYCACACQXhxQbTByABqIgMhBAwBCyACQXhxIgJBtMHIAGohBCACQbzByABqKAIAIQMLIAQgATYCCCADIAE2AgwgASAENgIMIAEgAzYCCAtBzMPIACAHNgIAQcTDyAAgBjYCAAwFC0HAw8gAQcDDyAAoAgBBfiACKAIcd3E2AgALAkACQCADQRBPBEAgAiAFQQNyNgIEIAIgBWoiBiADQQFyNgIEIAMgBmogAzYCAEHEw8gAKAIAIgFFDQFBzMPIACgCACEAAkBBvMPIACgCACIEQQEgAUEDdnQiB3FFBEBBvMPIACAEIAdyNgIAIAFBeHFBtMHIAGoiBCEBDAELIAFBeHEiBEG0wcgAaiEBIARBvMHIAGooAgAhBAsgASAANgIIIAQgADYCDCAAIAE2AgwgACAENgIIDAELIAIgAyAFaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELQczDyAAgBjYCAEHEw8gAIAM2AgALIAJBCGoiAEUNAQwCC0EAIAVrIQMCQAJAAkAgB0ECdEGkwMgAaigCACICRQRAQQAhAUEAIQAMAQtBACEBIAVBGSAHQQF2a0EAIAdBH0cbdCEEQQAhAANAAkAgAigCBEF4cSIGIAVJDQAgBiAFayIGIANPDQAgAiEBIAYiAw0AQQAhAyABIQAMAwsgAigCFCIGIAAgBiACIARBHXZBBHFqKAIQIgJHGyAAIAYbIQAgBEEBdCEEIAINAAsLIAAgAXJFBEBBACEBQQIgB3QiAEEAIABrciAIcSIARQ0DIABoQQJ0QaTAyABqKAIAIQALIABFDQELA0AgAyAAKAIEQXhxIgQgBWsiAiADIAIgA0kiBhsgBCAFSSIEGyEDIAEgACABIAYbIAQbIQEgACgCECICBH8gAgUgACgCFAsiAA0ACwsgAUUNACAFQcTDyAAoAgAiAE0gAyAAIAVrT3ENACABKAIYIQcCQAJAIAEgASgCDCIARgRAIAFBFEEQIAEoAhQiABtqKAIAIgINAUEAIQAMAgsgASgCCCICIAA2AgwgACACNgIIDAELIAFBFGogAUEQaiAAGyEEA0AgBCEGIAIiAEEUaiAAQRBqIAAoAhQiAhshBCAAQRRBECACG2ooAgAiAg0ACyAGQQA2AgALAkAgB0UNAAJAAkAgASgCHEECdEGkwMgAaiICKAIAIAFHBEAgASAHKAIQRwRAIAcgADYCFCAADQIMBAsgByAANgIQIAANAQwDCyACIAA2AgAgAEUNAQsgACAHNgIYIAEoAhAiAgRAIAAgAjYCECACIAA2AhgLIAEoAhQiAkUNASAAIAI2AhQgAiAANgIYDAELQcDDyABBwMPIACgCAEF+IAEoAhx3cTYCAAsCQCADQRBPBEAgASAFQQNyNgIEIAEgBWoiACADQQFyNgIEIAAgA2ogAzYCACADQYACTwRAIAAgAxCdBQwCCwJAQbzDyAAoAgAiAkEBIANBA3Z0IgRxRQRAQbzDyAAgAiAEcjYCACADQfgBcUG0wcgAaiIDIQIMAQsgA0H4AXEiBEG0wcgAaiECIARBvMHIAGooAgAhAwsgAiAANgIIIAMgADYCDCAAIAI2AgwgACADNgIIDAELIAEgAyAFaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyABQQhqIgANAQsCQAJAAkACQAJAIAVBxMPIACgCACIBSwRAIAVByMPIACgCACIATwRAIAVBr4AEaiIBQRB2QAAiAkF/RgRAQQAPC0EAIQAgAkEQdCICRQ0HQdTDyAAgAUGAgHxxIgBBEGsgACACQQAgAGtGGyIBQdTDyAAoAgBqIgA2AgBB2MPIACAAQdjDyAAoAgAiBCAAIARLGzYCAAJAAkBB0MPIACgCACIEBEBBpMHIACEAA0AgACgCACIDIAAoAgQiBmogAkYNAiAAKAIIIgANAAsMAgtB4MPIACgCACIAQQAgACACTRtFBEBB4MPIACACNgIAC0Hkw8gAQf8fNgIAQajByAAgATYCAEGkwcgAIAI2AgBBwMHIAEG0wcgANgIAQcjByABBvMHIADYCAEG8wcgAQbTByAA2AgBB0MHIAEHEwcgANgIAQcTByABBvMHIADYCAEHYwcgAQczByAA2AgBBzMHIAEHEwcgANgIAQeDByABB1MHIADYCAEHUwcgAQczByAA2AgBB6MHIAEHcwcgANgIAQdzByABB1MHIADYCAEHwwcgAQeTByAA2AgBB5MHIAEHcwcgANgIAQfjByABB7MHIADYCAEHswcgAQeTByAA2AgBBsMHIAEEANgIAQYDCyABB9MHIADYCAEH0wcgAQezByAA2AgBB/MHIAEH0wcgANgIAQYjCyABB/MHIADYCAEGEwsgAQfzByAA2AgBBkMLIAEGEwsgANgIAQYzCyABBhMLIADYCAEGYwsgAQYzCyAA2AgBBlMLIAEGMwsgANgIAQaDCyABBlMLIADYCAEGcwsgAQZTCyAA2AgBBqMLIAEGcwsgANgIAQaTCyABBnMLIADYCAEGwwsgAQaTCyAA2AgBBrMLIAEGkwsgANgIAQbjCyABBrMLIADYCAEG0wsgAQazCyAA2AgBBwMLIAEG0wsgANgIAQcjCyABBvMLIADYCAEG8wsgAQbTCyAA2AgBB0MLIAEHEwsgANgIAQcTCyABBvMLIADYCAEHYwsgAQczCyAA2AgBBzMLIAEHEwsgANgIAQeDCyABB1MLIADYCAEHUwsgAQczCyAA2AgBB6MLIAEHcwsgANgIAQdzCyABB1MLIADYCAEHwwsgAQeTCyAA2AgBB5MLIAEHcwsgANgIAQfjCyABB7MLIADYCAEHswsgAQeTCyAA2AgBBgMPIAEH0wsgANgIAQfTCyABB7MLIADYCAEGIw8gAQfzCyAA2AgBB/MLIAEH0wsgANgIAQZDDyABBhMPIADYCAEGEw8gAQfzCyAA2AgBBmMPIAEGMw8gANgIAQYzDyABBhMPIADYCAEGgw8gAQZTDyAA2AgBBlMPIAEGMw8gANgIAQajDyABBnMPIADYCAEGcw8gAQZTDyAA2AgBBsMPIAEGkw8gANgIAQaTDyABBnMPIADYCAEG4w8gAQazDyAA2AgBBrMPIAEGkw8gANgIAQdDDyAAgAjYCAEG0w8gAQazDyAA2AgBByMPIACABQShrIgA2AgAgAiAAQQFyNgIEIAAgAmpBKDYCBEHcw8gAQYCAgAE2AgAMCAsgAiAETSADIARLcg0AIAAoAgxFDQMLQeDDyABB4MPIACgCACIAIAIgACACSRs2AgAgASACaiEDQaTByAAhAAJAAkADQCADIAAoAgAiBkcEQCAAKAIIIgANAQwCCwsgACgCDEUNAQtBpMHIACEAA0ACQCAEIAAoAgAiA08EQCAEIAMgACgCBGoiBkkNAQsgACgCCCEADAELC0HQw8gAIAI2AgBByMPIACABQShrIgA2AgAgAiAAQQFyNgIEIAAgAmpBKDYCBEHcw8gAQYCAgAE2AgAgBCAGQSBrQXhxQQhrIgAgACAEQRBqSRsiA0EbNgIEIANBCGoiAEGkwcgA/QACAP0LAgBBqMHIACABNgIAQaTByAAgAjYCAEGswcgAIAA2AgBBsMHIAEEANgIAIANBHGohAANAIABBBzYCACAAQQRqIgAgBkkNAAsgAyAERg0HIAMgAygCBEF+cTYCBCAEIAMgBGsiAEEBcjYCBCADIAA2AgAgAEGAAk8EQCAEIAAQnQUMCAsCQEG8w8gAKAIAIgFBASAAQQN2dCICcUUEQEG8w8gAIAEgAnI2AgAgAEH4AXFBtMHIAGoiACEBDAELIABB+AFxIgBBtMHIAGohASAAQbzByABqKAIAIQALIAEgBDYCCCAAIAQ2AgwgBCABNgIMIAQgADYCCAwHCyAAIAI2AgAgACAAKAIEIAFqNgIEIAIgBUEDcjYCBCAGQQ9qQXhxQQhrIgMgAiAFaiIAayEFIANB0MPIACgCAEYNAyADQczDyAAoAgBGDQQgAygCBCIBQQNxQQFGBEAgAyABQXhxIgEQ7gQgASAFaiEFIAEgA2oiAygCBCEBCyADIAFBfnE2AgQgACAFQQFyNgIEIAAgBWogBTYCACAFQYACTwRAIAAgBRCdBQwGCwJAQbzDyAAoAgAiAUEBIAVBA3Z0IgRxRQRAQbzDyAAgASAEcjYCACAFQfgBcUG0wcgAaiIFIQMMAQsgBUH4AXEiAUG0wcgAaiEDIAFBvMHIAGooAgAhBQsgAyAANgIIIAUgADYCDCAAIAM2AgwgACAFNgIIDAULQcjDyAAgACAFayIBNgIAQdDDyABB0MPIACgCACIAIAVqIgI2AgAgAiABQQFyNgIEIAAgBUEDcjYCBCAAQQhqIQAMBgtBzMPIACgCACEAAkAgASAFayICQQ9NBEBBzMPIAEEANgIAQcTDyABBADYCACAAIAFBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQMAQtBxMPIACACNgIAQczDyAAgACAFaiIENgIAIAQgAkEBcjYCBCAAIAFqIAI2AgAgACAFQQNyNgIECwwGCyAAIAEgBmo2AgRB0MPIAEHQw8gAKAIAIgBBD2pBeHEiAkEIayIENgIAQcjDyABByMPIACgCACABaiIBIAAgAmtqQQhqIgI2AgAgBCACQQFyNgIEIAAgAWpBKDYCBEHcw8gAQYCAgAE2AgAMAwtB0MPIACAANgIAQcjDyABByMPIACgCACAFaiIBNgIAIAAgAUEBcjYCBAwBC0HMw8gAIAA2AgBBxMPIAEHEw8gAKAIAIAVqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsgAkEIag8LQQAhAEHIw8gAKAIAIgEgBU0NAEHIw8gAIAEgBWsiATYCAEHQw8gAQdDDyAAoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQMAQsgAA8LIABBCGoLjB8DKH8KfQN7IwBBoAJrIgQkAAJ9IAMtABwiBUECRgRA/QwAAAAAAACAPwAAQMEAABBBITZBACEFQwAAgD8hLkMAAIA/IS9DAACAPwwBCyAEIAMvAB07AcABIAQgAy0AHzoAwgEgAyoCFCEuIAMqAhAhLyAD/QACACE2IAMqAhgLITIgBEEAEO8JNgKwASAEQQA2AqwBIARCADcCpAEgBEEANgJcIARCgICAgMAANwJUIARCBDcCTCAEQgA3AkQgBEKAgICAwAA3AjwgBEEANgIsIARBADYCJCAEQQA2AhwgBEEANgIUIARBADYCDCAEQQA2AgQgBEEANgI0IARBgICAgHg2AmwgBEGAgICAeDYCeCAEIDb9CwKEASAEIC84ApQBIAQgLjgCmAEgBCAyOAKcASAEIAU6AKABIARBADYCaCAEQoCAgIDAADcCYCAEQgA3ArQBIARBADoAvAEgBCAELQDCAToAowEgBCAELwHAATsAoQEgASgCXCEYIAQgAjoAyAEgBCAYNgLEASAEIAEoAggiCjYCwAEgBEEEaiAEQcABahCzBCACBEAgBEEBOgCgAQsCQAJAAkACQAJAAkBBgIAwEG4iEwRAIBNBBGsiHi0AAEEDcQRAIBNBAEGAgDD8CwALQYCAEBBuIgsEQCALQQRrIh8tAABBA3EEQCALQQBBgIAQ/AsAC0GAgDAQbiIUBEAgFEEEayIgLQAAQQNxBEAgFEEAQYCAMPwLAAtBgIAwEG4iFQRAIBVBBGsiIS0AAEEDcQRAIBVBAEGAgDD8CwALQYCAwAAQbiIOBEAgDkEEayIiLQAAQQNxBEAgDkEAQYCAwAD8CwALQYCACBBuIg8EQCAPQQRrIiMtAABBA3EEQCAPQQBBgIAI/AsAC0GAgBAQbiIQRQ0IIBBBBGsiJCgCACIFQQNxIgMEQCAQQQBBgIAQ/AsACyAKRQ0HIA9BAiACGyElIBBBBCACGyEmQYCABEEAIAIbIRxDAACAPyABKgJAIAEtAFhBAkYiAxtDAAAAACABKgI8IAMbIi6TIS9DAAAQQSABKgJIIAMbQwAAQMEgASoCRCADGyIyk0MAAH5DlSEzIAEoAhAhJyABKAIUIR0gASgCBCEoA0BBgIAEIAogCGsiAyADQYCABE8bIRsgCCAKRwRAIBtBGGwhKSAoIAhBGGwiA2ohKiADICdqIStBACEJIAshDEEAIREgCCEGIA4hBSAQIRIgDyEWA0AgESAqaiIDQRFqLwAAIANBE2otAAAiB0EQdHIiDUEIdiEXIANBDmovAQAiGSADQRBqLQAAIhpBEHRyQf8BcbNDAAB/Q5UhLSAD/QACACE2QwAAAAAhLEMAAAAAITAgDUH/AXEEQCAyIDMgDUEBa0H/AXGzlJIQiAQhMAsgF0H/AXEEQCAyIDMgF0EBa0H/AXGzlJIQiAQhLAsgLiAtIC+UkiEtIC4gGrNDAAB/Q5UgL5SSITEgLiAZQQh2s0MAAH9DlSAvlJIhNCAHBH0gMiAzIAdBAWtB/wFxs5SSEIgEBUMAAAAACyE1IANBFGovAQAhByADQRZqLQAAIQ0gCSATaiIXIDb9HwA4AgAgCSAUaiIZIC04AgAgCSAVaiIaIDA4AgAgF0EEaiA2/R8BOAIAIBlBBGogNDgCACAaQQRqICw4AgAgF0EIaiA2/R8COAIAIBlBCGogMTgCACAaQQhqIDU4AgAgBUEMaiANs0MAAH9DlUMAAAA/lEPbD0lAlCIsEKECOAIAIAVBCGogLBCfAiIwQwAAgD8gB0EIdrP9EyAHIA1BEHRyQf8BcbP9IAH9DAAAf0MAAH9DAAB/QwAAf0P95wEiNiA2/eQB/QwAAIC/AACAvwAAgL8AAIC//eQBIjb9HwEiLYuTIDb9HwAiMYuTIiwgLCAslCAtQwAAAAAgLIwiLCAsICxcGyIsQwAAAAAgLEMAAAAAXhsiLCAsjCI0IDb9DAAAAAAAAAAAAAAAAAAAAAD9Rv1NIjb9xwH9GwJBAXEbkiItIC2UIDEgLCA0IDb9GwBBAXEbkiIsICyUkpKRIjGVlDgCACAFQQRqIDAgLCAxlZQ4AgAgBSAwIC0gMZWUOAIAIAwCfyADQQxqLwEAIgdB//8BcUUEQCAHQRB0DAELIAdB/wdxIQMgB0GAgAJxIQ0gB0GA+AFxIgdBgPgBRgRAIA1BEHQiB0GAgID8B3IgA0UNARogByADQQ10ckGAgID+B3IMAQsgDUEQdCINIAdBDXRBgICA/ABxIANBDXRyQYCAgMADanIgBw0AGiADIANnQRBrIgNB//8DcUEIanRB////A3EgDUGAgIDYA3IgA0EXdGtyCzYCACACBEACfwJAIAYgHUkEQCARICtqIg1BBGohByANQRRqKAIAIgNBBU8EQCAHKAIAIQMgDUEIaigCACEHCyADDQFBACEDQQAMAgsgBiAdQeDNxgAQ8AcACyAHKAIACyEHIBYgAzsBACASIAc2AgALIAxBBGohDCAJQQxqIQkgBkEBaiEGIAVBEGohBSASQQRqIRIgFkECaiEWICkgEUEYaiIRRw0ACwsgBCAcNgKcAiAEICY2ApgCIAQgHDYClAIgBCAlNgKQAiAEQQA2AowCIARCgICAgMAANwKEAiAEQoCAgIDAADcC/AEgBEKAgICAwAA3AvQBIARCgICAgMAANwLsASAEQoCAkIDAADcC5AEgBCAONgLgASAEQYCADDYC3AEgBCAVNgLYASAEQYCADDYC1AEgBCAUNgLQASAEQYCABDYCzAEgBCALNgLIASAEQYCADDYCxAEgBCATNgLAASAEQQRqIAggGyAEQcABahCaASAKIAggG2oiCEsNAAsMBgtBAkGAgAgQmgkAC0EEQYCAwAAQmgkACwwGCwwFC0EEQYCAEBCaCQALDAMLICQoAgAiBUEDcSEDCwJAAkACQAJAAkAgBUF4cUGEgBBBiIAQIAMbTwRAIANBACAFQaiAEE8bDQkgEBCiAiAjKAIAIgJBeHFBhIAIQYiACCACQQNxIgMbSQ0IIANBACACQaiACE8bDQkgDxCiAiAiKAIAIgJBeHFBhIDAAEGIgMAAIAJBA3EiAxtJDQggA0EAIAJBqIDAAE8bDQkgDhCiAiAhKAIAIgJBeHFBhIAwQYiAMCACQQNxIgMbSQ0IIANBACACQaiAME8bDQkgFRCiAiAgKAIAIgJBeHFBhIAwQYiAMCACQQNxIgMbSQ0IIANBACACQaiAME8bDQkgFBCiAiAfKAIAIgJBeHFBhIAQQYiAECACQQNxIgMbSQ0IIANBACACQaiAEE8bDQkgCxCiAiAeKAIAIgJBeHFBhIAwQYiAMCACQQNxIgMbSQ0IIANBACACQaiAME8bDQkgExCiAiAYRQ0FQYCAkAEQbiIGRQ0BIAZBBGsiDygCACIFQQNxIgMEQCAGQQBBgICQAfwLAAsgCkUNBCABKAIgIQggASgCHCEQQQAhAgNAQYCABCAKIAJrIgMgA0GAgARPGyELIAIgCkcEQCACIAggAiAISRshBSALQSRsIRIgECACQQlsaiEDQQAhCSACIQwDQCAFIAhGDQUgA0EEav1cAAAhNiAD/VwAACE3IAYgCWoiDkEgaiADQQhqLAAAskMAAP5ClTgCACAOIDf9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIA5BEGogNv2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgA0EJaiEDIAxBAWohDCAFQQFqIQUgEiAJQSRqIglHDQALCyAEQQRqIAIgCyAGQYCAJBDkAyAKIAIgC2oiAksNAAsMAwsMBwtBBEGAgJABEJoJAAsgDCAIQfDNxgAQ8AcACyAPKAIAIgVBA3EhAwsCQAJAAkAgBUF4cUGEgJABQYiAkAEgAxtPBEAgA0EAIAVBqICQAU8bDQggBhCiAiAYQQFGDQRBgIDwARBuIgJFDQEgAkEEayIOKAIAIgVBA3EiAwRAIAJBAEGAgPAB/AsACyAKBEAgASgCLCEIIAEoAighD0EAIQYDQEGAgAQgCiAGayIDIANBgIAETxshCyAGIApHBEAgBiAIIAYgCEkbIQkgC0E8bCEQIA8gBkEPbGohA0EAIREgBiEMA0AgCCAJRg0GIANBBGr9XAAAITYgA0EIav1cAAAhNyADQQxqLAAAIRIgA0ENaiwAACEWIAP9XAAAITggAiARaiIFQThqIANBDmosAACyQwAA/kKVOAIAIAVBNGogFrJDAAD+QpU4AgAgBUEwaiASskMAAP5ClTgCACAFIDj9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIAVBIGogN/2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgBUEQaiA2/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACADQQ9qIQMgDEEBaiEMIAlBAWohCSAQIBFBPGoiEUcNAAsLIARBBGogBiALIAJBgIA8EPUDIAYgC2oiBiAKSQ0ACyAOKAIAIgVBA3EhAwsgBUF4cUGEgPABQYiA8AEgAxtJDQcgA0EAIAVBqIDwAU8bDQggAhCiAiAYQQJNDQRBgIDQAhBuIgJFDQMgAkEEayIGKAIAIgVBA3EiAwRAIAJBAEGAgNAC/AsACyAKBEAgASgCOCEIIAEoAjQhC0EAIQEDQEGAgAQgCiABayIDIANBgIAETxshDCABIApHBEAgDEHUAGwhDkEAIQUgASEJA0AgBEHAAWogCyAIIAkQ4wYgAiAFaiIDIAT9AATAAf0LAgAgA0EQaiAE/QAE0AH9CwIAIANBIGogBP0ABOAB/QsCACADQTBqIAT9AATwAf0LAgAgA0FAayAE/QAEgAL9CwIAIANB0ABqIAQqApACOAIAIAlBAWohCSAOIAVB1ABqIgVHDQALCyAEQQRqIAEgDCACQYCA1AAQ9gMgASAMaiIBIApJDQALIAYoAgAiBUEDcSEDCyAFQXhxQYSA0AJBiIDQAiADG0kNByADQQAgBUGogNACTxsNCCACEKICDAQLDAYLQQRBgIDwARCaCQALIAwgCEGAzsYAEPAHAAtBBEGAgNACEJoJAAsCQCAEQQRqIgEQqAEiAgRAIABBAjYCACAAIAI2AgQgARDIAgwBCyAAIARBBGpBvAH8CgAACyAEQaACaiQADwtBBEGAgBAQmgkAC0EEQYCAMBCaCQALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7EfAw9/A30BfiMAQcAEayIKJAACQAJAIAFBIUkNAANAIANFBEAgACECIAFBAXYgAWohBQNAAkACfyABIAVBAWsiBU0EQCAFIAFrDAELIAIgBUEMbGoiACgCCCEDIAIpAgAhFiACIAApAgA3AgAgAigCCCEEIAIgAzYCCCAAIAQ2AgggACAWNwIAQQALIgRBAXQiA0EBciIAIAEgBSABIAVJGyIJTw0AA0ACQCACIARBDGxqIgYqAgAiEyATXCATIAIgCSADQQJqIgRNBH8gAAUCfyACIABBDGxqIgMqAgAiFCAUXCAUIAIgBEEMbGoiBCoCACIVYHIiByAVIBVcIBQgFV9ycUUEQCAHRQwBCyADKAIEIgcgBCgCBCIIRwRAIAcgCEkMAQsgAygCCCAEKAIISQsgAGoLIgRBDGxqIgcqAgAiFGByIgAgFCAUXCATIBRfcnFFBEAgAA0DIAcoAgQhACAGKAIEIQMMAQsgBigCBCIDIAcoAgQiAEYEQCADIQAgBigCCCAHKAIISQ0BDAMLIAAgA00NAgsgByATOAIAIAYgFDgCACAGIAA2AgQgByADNgIEIAYoAgghACAGIAcoAgg2AgggByAANgIIIARBAXQiA0EBciIAIAlJDQALCyAFDQALDAMLIAAgAUEDdiIGQdQAbGohBCAAIAZBMGxqIQUgA0EBayEDAn8gAUHAAE8EQCAAIAUgBCAGEMoEDAELIAUqAgAiEyATXCEGIAQqAgAiFCAUXCEHIAACfyAAKgIAIhUgFVwiCSATIBVfciIIIAYgEyAVYHJxRQRAIAhFDAELIAAoAgQiCCAFKAIEIgtHBEAgCCALSQwBCyAAKAIIIAUoAghJCyIIAn8gCSAUIBVfciIJIAcgFCAVYHJxRQRAIAlBAXMMAQsgACgCBCIJIAQoAgQiC0cEQCAJIAtJDAELIAAoAgggBCgCCEkLRw0AGiAEIAUCfyAGIBMgFGByIgYgByATIBRfcnFFBEAgBkEBcwwBCyAFKAIEIgYgBCgCBCIHRwRAIAYgB0kMAQsgBSgCCCAEKAIISQsgCHMbCyAAayEFAkACfwJAIAJFDQACQCACKgIAIhMgE1wgEyAAIAVqIgQqAgAiFGByIgYgFCAUXCATIBRfcnFFBEAgBkUNAgwBCyACKAIEIgYgBCgCBCIHRgRAIAIoAgggBCgCCEkNAgwBCyAGIAdJDQELIAogACgCCDYCCCAKIAApAgA3AwAgBCgCCCECIAAgBCkCADcCACAAIAI2AgggBCAKKAIINgIIIAQgCikDADcCACAAKgIAIRMgACgCFCELIAAoAhAhCSAAKgIMIRRBACEGIABBDGoiByEEIABBGGoiBSAAIAFBDGxqIg9BDGsiDkkEQCAAKAIIIQ0gACgCBCEEIAAhBQNAAn8gEyATXCIQIBMgBSICQRhqIgUqAgAiFWByIgggFSAVXCATIBVfcnFFBEAgCEUMAQsgAkEcaigCACIIIARHBEAgBCAISQwBCyANIAJBIGooAgBJCyEMIAcgBkEMbGoiCCkCACEWIAJBDGoiESAIKAIINgIIIBEgFjcCACAIIAUoAgg2AgggCCAFKQIANwIAIAYgDEEBc2ohCAJ/IBAgEyACQSRqIgwqAgAiFWByIgYgFSAVXCATIBVfcnFFBEAgBkEBcwwBCyACQShqKAIAIgYgBEcEQCAEIAZJDAELIA0gAkEsaigCAEkLIRAgByAIQQxsaiIGKQIAIRYgBSAGKAIINgIIIAUgFjcCACAGIAwoAgg2AgggBiAMKQIANwIAIAggEEEBc2ohBiACQTBqIA5JDQALIAVBDGohBCAFQRhqIQULIAUgD0cEQCAAKAIIIQ0gACgCBCEIA0AgBCECAn8gEyATXCATIAUiBCoCACIVYHIiBSAVIBVcIBMgFV9ycUUEQCAFRQwBCyAEQQRqKAIAIgUgCEcEQCAFIAhLDAELIA0gBEEIaigCAEkLIQwgByAGQQxsaiIFKQIAIRYgAiAFKAIINgIIIAIgFjcCACAFIAQoAgg2AgggBSAEKQIANwIAIAYgDEEBc2ohBiAEQQxqIgUgD0cNAAsgBUEMayEECwJ/IBMgE1wgEyAUYHIiAiAUIBRcIBMgFF9ycUUEQCACRQwBCyAJIAAoAgQiAkcEQCACIAlJDAELIAAoAgggC0kLIQUgByAGQQxsaiICKQIAIRYgBCACKAIINgIIIAQgFjcCACACIAs2AgggAiAJNgIEIAIgFDgCACAGIAVBAXNqIgQgAU8NAiAKIAAoAgg2AgggCiAAKQIANwMAIAAgBEEMbGoiAigCCCEFIAAgAikCADcCACAAIAU2AgggAiAKKAIINgIIIAIgCikDADcCACACQQxqIQBBACECIARBf3MgAWoMAQsgCiAAKAIINgIIIAogACkCADcDACAAIAVqIgQoAgghBSAAIAQpAgA3AgAgACAFNgIIIAQgCigCCDYCCCAEIAopAwA3AgAgACoCACETIAAoAhQhDyAAKAIQIQggACoCDCEUQQAhBiAAQQxqIgkhBCAAQRhqIgUgACABQQxsaiINQQxrIhBJBEAgACgCCCEMIAAoAgQhByAAIQUDQAJ/IAUiBEEYaiIFKgIAIhUgFVwgEyAVX3IiCyATIBNcIhEgEyAVYHJxRQRAIAtFDAELIAcgBEEcaigCACILRwRAIAcgC0sMAQsgBEEgaigCACAMSQshDiAJIAZBDGxqIgspAgAhFiAEQQxqIhIgCygCCDYCCCASIBY3AgAgCyAFKAIINgIIIAsgBSkCADcCACAGIA5qIQsCfyAEQSRqIg4qAgAiFSAVXCATIBVfciIGIBEgEyAVYHJxRQRAIAZFDAELIAcgBEEoaigCACIGRwRAIAYgB0kMAQsgBEEsaigCACAMSQshESAJIAtBDGxqIgYpAgAhFiAFIAYoAgg2AgggBSAWNwIAIAYgDigCCDYCCCAGIA4pAgA3AgAgCyARaiEGIARBMGogEEkNAAsgBUEMaiEEIAVBGGohBQsgBSANRwRAIAAoAgghDCAAKAIEIQsDQCAEIQcCfyAFIgQqAgAiFSAVXCATIBVfciIFIBMgE1wgEyAVYHJxRQRAIAVFDAELIAsgBEEEaigCACIFRwRAIAUgC0kMAQsgBEEIaigCACAMSQshDiAJIAZBDGxqIgUpAgAhFiAHIAUoAgg2AgggByAWNwIAIAUgBCgCCDYCCCAFIAQpAgA3AgAgBiAOaiEGIARBDGoiBSANRw0ACyAFQQxrIQQLAn8gFCAUXCATIBRfciIFIBMgE1wgEyAUYHJxRQRAIAVFDAELIAAoAgQiBSAIRwRAIAUgCEsMAQsgDyAAKAIISQshByAJIAZBDGxqIgUpAgAhFiAEIAUoAgg2AgggBCAWNwIAIAUgDzYCCCAFIAg2AgQgBSAUOAIAIAYgB2oiBSABTw0BIAogACgCCDYCCCAKIAApAgA3AwAgACAFQQxsaiIEKAIIIQYgACAEKQIANwIAIAAgBjYCCCAEIAooAgg2AgggBCAKKQMANwIAIAAgBSACIAMQcCAEQQxqIQAgBCECIAEgBUF/c2oLIgFBIU8NAQwCCwsACyABQQJJDQAgAUEBdiELIAsCfyABQQ9NBEAgACALQQxsIgNqIQIgAyAKaiEDIAFBB0sEQCAAIAoQiwMgAiADEIsDQQQMAgsgCiAAKAIINgIIIAogACkCADcDACADIAIoAgg2AgggAyACKQIANwIAQQEMAQsgACAKIAFBDGxqIgIQiwMgAEEwaiACQTBqEIsDIAJBCCAKEPADIAAgC0EMbCIDaiIEIAJB4ABqIgUQiwMgBEEwaiACQZABahCLAyAFQQggAyAKahDwA0EICyIISwRAIAhBDGwhAyAIIQcDQCAKIAdBDGwiAmoiBCAAIAJqIgIpAgA3AgAgBCACKAIINgIIAkACQCAEKgIAIhMgE1wiBSATIARBDGsiAioCACIUYHIiBiAUIBRcIBMgFF9ycUUEQCAGDQIgBCgCBCEJDAELIAQoAgQiCSAEQQhrKAIAIgZGBEAgBCgCCCAEQQRrKAIASQ0BDAILIAYgCU0NAQsgBCACKQIANwIAIAQoAgghDyAEIAIoAgg2AggCQAJAIAdBAUYNACAFRQRAIAMhBgNAIAYgCmoiBUEMayEEAkAgBUEYayINKgIAIhQgE1wEQCATIBRgRQ0BDAQLIAVBFGsoAgAiDCAJRgRAIA8gBUEQaygCAE8NBQwBCyAJIAxPDQMLIAJBDGshAiAEIA0oAgg2AgggBCANKQIANwIAIAZBDGsiBkEMRw0ACyAKIQQMAgsgAyEFA0AgBSAKaiIGQQxrIQQgBkEYayINKgIAIhQgFFsgEyAUX0VxDQICQCAGQRRrKAIAIgwgCUcEQCAJIAxJDQEMAwsgDyAGQRBrKAIATw0CCyACQQxrIQIgBCANKAIINgIIIAQgDSkCADcCACAKIQQgBUEMayIFQQxHDQALDAELIAIhBAsgBCAPNgIIIAQgCTYCBCAEIBM4AgALIANBDGohAyAHQQFqIgcgC0cNAAsLIAEgC2siECAISwRAIAAgC0EMbCICaiERIAhBDGwhDUEMIQsgAiAKaiIFIQ8DQCAFIAhBDGwiAmoiAyACIBFqIgIpAgA3AgAgAyACKAIINgIIAkACQCADKgIAIhMgE1wiBCATIANBDGsiAioCACIUYHIiBiAUIBRcIBMgFF9ycUUEQCAGDQIgAygCBCEHDAELIAMoAgQiByADQQhrKAIAIgZHBEAgBiAHSw0BDAILIAMoAgggA0EEaygCAE8NAQsgAyACKQIANwIAIAMoAgghDCADIAIoAgg2AggCQAJAIAhBAUYNACALIgkhAyAPIQYgBEUEQANAIAYgDWoiA0EMayEEAkAgA0EYayIOKgIAIhQgE1wEQCATIBRgRQ0BDAQLIANBFGsoAgAiEiAHRwRAIAcgEkkNAQwECyAMIANBEGsoAgBPDQQLIAJBDGshAiAEIA4oAgg2AgggBCAOKQIANwIAIAZBDGshBiANIAlBDGoiCUcNAAsgBSEEDAILA0AgBiANaiIJQRhrIg4qAgAiFCAUWyATIBRfRXENASAJQQxrIQQCQCAJQRRrKAIAIhIgB0cEQCAHIBJPDQQMAQsgDCAJQRBrKAIATw0CCyACQQxrIQIgBCAOKAIINgIIIAQgDikCADcCACAGQQxrIQYgDSADQQxqIgNHDQALIAUhBAwBCyACIQQLIAQgDDYCCCAEIAc2AgQgBCATOAIACyALQQxrIQsgD0EMaiEPIAhBAWoiCCAQRw0ACwsgCiABIAAQ8AMLIApBwARqJAALthoCGn8BeyMAQcAKayILJAAgC/0MAAAAAAAAAAAAAAAAAAAAAP0LAzAgCyAl/QsDICALICX9CwMQIAsgJf0LAwACfwJ/An8CfwJ/An8CfwJ/An8CfwJ/An8CfwJAIAFFDQAgC0E4aiEOIAtBPGohECABIQ0gACEMAkADQCAMLQAAIhRBD0sNASALIBRBAnRqIhQgFCgCAEEBajYCACAMQQFqIQwgDUEBayINDQALQQAhDCALKAI8BEBBDyEVQQEMAwsgCygCOEUNAUEOIRVBASENIA4hEEEAIRRBACEOQQEhHEEADA4LIBRBEEHY5MMAEPAHAAsgCygCNARAIAtBNGohEEENIRVBASENQQAhFEEAIQ5BAQwNCyALKAIwBEAgC0EwaiEQQQwhFUEBIQ1BACEUQQAhDkEBDAwLIAsoAiwEQCALQSxqIRBBCyEVQQEhDUEAIRRBAQwLCyALKAIoBEAgC0EoaiEQQQohFUEBIQ1BACEUQQEMCgsgCygCJARAIAtBJGohEEEJIRVBASENQQAhFEEBDAkLIAsoAiAEQCALQSBqIRBBCCEVQQEhDUEAIRRBAQwICyALKAIcBEAgC0EcaiEQQQchFUEBIQ1BACEUQQEMBwsgCygCGARAIAtBGGohEEEGIRVBASENQQEMBgsgCygCFARAIAtBFGohEEEFIRVBASENQQEMBQsgCygCEARAIAtBEGohEEEEIRVBASENQQEMBAsgCygCDARAIAtBDGohEEEDIRVBASENQQEMAwsgCygCCARAIAtBCGohEEECIRVBASENQQEMAgsgC0EEciEQQQEhFUEBIQxBAAshDUEACyEPQQALIRNBAAshF0EACyERQQALIRRBAAshEkEACyEaQQALIRlBAAshG0EACyEOQQALIRZBAAshHQJ/AkAgCUUNACAMIAsoAgRBAUZxRQ0AAkAgAQRAQQAhDANAIAAgDGotAABBAUYNAiABIAxBAWoiDEcNAAsLQejkwwAQmQoACyAFIAxLBEAgBCAMQQF0akEAOwEAIAMgDE0EfyAMQRB0BSACIAxBAnRqKAIAC0EBciEAAkADQCAGIAA2AgAgB0EBRg0BIAZBADYCBCAGQQIgByAHQQJPGyIBQQJ0aiEGIAcgAWsiBw0AC0EBDAMLQQFBAUGI5cMAEPAHAAsgDCAFQfjkwwAQ8AcACyALICX9CwNAIAsgJf0LA3AgCyAl/QsDYCALICX9CwNQIAsgCygCACIYNgJEQQAhDAJAIA0EfyALIBggCygCBCIMaiIJNgJIAkAgDw0AIAsgCSALKAIIIg1qIgk2AkwgDSAMQQF0aiEMIBMNACALIAkgCygCDCINaiIJNgJQIA0gDEEBdGohDCAXDQAgCyAJIAsoAhAiDWoiCTYCVCANIAxBAXRqIQwgEQ0AIAsgCSALKAIUIg1qIgk2AlggDSAMQQF0aiEMIBQNACALIAkgCygCGCINaiIJNgJcIA0gDEEBdGohDCASDQAgCyAJIAsoAhwiDWoiCTYCYCANIAxBAXRqIQwgGg0AIAsgCSALKAIgIg1qIgk2AmQgDSAMQQF0aiEMIBkNACALIAkgCygCJCINaiIJNgJoIA0gDEEBdGohDCAbDQAgCyAJIAsoAigiDWoiCTYCbCANIAxBAXRqIQwgDg0AIAsgCSALKAIsIg5qIgk2AnAgDiAMQQF0aiEMIBYNACALIAkgCygCMCIOaiIJNgJ0IA4gDEEBdGohDCAdDQAgCyAJIAsoAjQiDmoiCTYCeCAOIAxBAXRqIQwgHA0AIAsgCSALKAI4Ig5qNgJ8IA4gDEEBdGohDAsgDEEBdAUgDAsgECgCAGoiHUEBIBV0IhxHDQAgCyAL/QADcP0LA7ABIAsgC/0AA2D9CwOgASALIAv9AANQ/QsDkAEgCyAL/QADQP0LA4ABQQAhDCALQcABakEAQYAJ/AsAAkACQAJAAkAgAQRAA0AgACAMai0AACIJQRBPDQMgC0GAAWogCUECdGoiDigCACIJQaACTw0CIA4gCUEBajYCACALQcABaiAJQQJ0aiAMNgIAIAxBAWoiCSEMIAEgCUcNAAsLQX8gB2ciHkEfcyIXdEF/cyEaQQAhDkEBIRYCQANAIBZBEE8NBEEBIBZ0IRICQAJAAkACQCALIBZBAnRqKAIAIhAEQCASQQFrIQBBoAIgGCAYQaACTxtBoAJrIQ8gC0HAAWogGEECdGohASAOIQwDQAJ/AkAgDwRAIAEoAgAiCSADSQ0BIAlBEHQMAgsgGEGgAkH45sMAEPAHAAsgAiAJQQJ0aigCAAshEyAHIAxB//8DcSIOTQ0CIAYgDkECdGogEyAWcjYCACAFIAlNDQMgBCAJQQF0aiAMOwEAIBhBAWohGCABQQRqIQEgD0EBaiEPIA4gACIOQf//A3FHBEBBASAAIAxzQRB0Z0EPc3QiCUEBayAMcSAJciEOCyAOIQwgEEEBayIQDQALCyAKDQIMAwsgDiAHQYjnwwAQ8AcACyAJIAVBmOfDABDwBwALIBZBAWsiH0ECSQ0AIBZBgIQCciEgQQEhEANAAkAgEEEQRwRAIBBBAnQiACALQUBrIglqKAIAIhEgC0GAAWoiASAAaigCACIhTw0BIBYgEGsiAEEPTQRAIAEgAEECdCIAaigCACIBIAAgCWooAgAiAE0NAkGgAiARIBFBoAJNGyEZIAEgAGshAUGgAiAAIABBoAJNGyIiIABrIQkgC0HAAWogAEECdGohFANAAkACQAJAAkACQCARIBlHBEAgASEPIAkhDCAUIQ0gBSALQcABaiARQQJ0aigCACITTQRAA0AgDEUNAyANKAIAIBNyQYACSQ0EIAxBAWshDCANQQRqIQ0gD0EBayIPDQAMBwsACyAEIBNBAXRqISMgE0EQdCAgciEkIAEhAANAIAxFDQIgDSgCACIPIBNyQf8BTQRAIAUgD00NBSAHICMvAQAgBCAPQQF0ai8BACAQdEH//wNxciIbTQ0GIAYgG0ECdGogD0EYdCAkcjYCAAsgDEEBayEMIA1BBGohDSAAQQFrIgANAAsMBQsgGUGgAkGo5sMAEPAHAAsgIkGgAkG45sMAEPAHAAsgEyAFQcjmwwAQ8AcACyAPIAVB2ObDABDwBwALIBsgB0Ho5sMAEPAHAAsgISARQQFqIhFHDQALDAILIABBEEGY5sMAEPAHAAtBEEEQQYjmwwAQ8AcACyAQQQFqIhAgH0cNAAsLAkACQCAWIBdJIgBFDQAgByASSQ0BIBIgByASa0sNA0EEIBZ0IgFFDQAgBiASQQJ0aiAGIAH8CgAACyAWIBdPDQYgACAWaiIWIBdNDQEMBgsLQQAgEiAHQaijxwAQoAUAC0HTo8cAQStB+OXDABCTCAALIAlBoAJBuOfDABDwBwALIAlBEEGo58MAEPAHAAsgFkEQQejlwwAQ8AcACyAIQQA2AgggFSAXTQ0AQSAgHmsiEiAVSw0AQQAhAEEAIQFBACERQf//AyEUA0ACQAJAAkACQAJAAkAgCyASQQJ0aigCACIQBEBBASASIBdrIgJ0IglBAWtBgMABciEZQQIgAkEfcSIbdEECayEWQaACIBggGEGgAk8bQaACayENQX8gEnRBf3MhAiALQcABaiAYQQJ0aiEPIA4hDANAIAwgGnEiA0H//wNxIgogFEH//wNxRwRAIAcgCk0NAyAGIApBAnRqIAFBEHQgGXI2AgAgCCgCACABIgBrIAlJBEAgCCAAIAlBAkECENYGIAgoAgghAAsgCCgCBCIKIABBAXRqIRMgGwR/IBYEQCATQQAgFvwLAAsgACAJaiIOQQFrIQAgCiAOQQF0akECawUgEwtBADsBACAIIABBAWoiADYCCCABIREgAyEUCyANRQ0DIA8oAgAiASAFTw0EIAQgAUEBdGogDDsBACARIAxB//8DcSIKIBd2aiIDIABPDQUgCCgCBCADQQF0aiABQQR0IBJqOwEAIAIiDkH//wNxIApHBEBBASAMIA5zQRB0Z0EPc3QiAUEBayAMcSABciEOCyAYQQFqIRggD0EEaiEPIA1BAWohDSAAIQEgDiEMIBBBAWsiEA0ACwsgEiAVTyIJDQUgFEH//wNxIgIgDiAacUH//wNxRw0FIAAgEUkNBCAAIQEgACARayIDIAgoAgAgAGtLBEAgCCAAIANBAkECENYGIAgoAgghAQsgA0EAIAAgA08bIgBBAXQiAwRAIAgoAgQiCiABQQF0aiAKIBFBAXRqIAP8CgAACyAIIAAgAWoiADYCCCACIAdJBEAgBiACQQJ0aiAAIBFBf3NqIBFBEHRyQYDAAXI2AgAgACEBDAYLIAIgB0GY5cMAEPAHAAsgCiAHQajlwwAQ8AcACyAYQaACQbjlwwAQ8AcACyABIAVByOXDABDwBwALIAMgAEHY5cMAEPAHAAsgESAAIABBuKPHABCgBQALIAkNASASIBIgFUlqIhIgFU0NAAsLIBwgHUYLIAtBwApqJAALkB4DKX8KfQN7IwBB4AJrIgMkAEEAEO8JIQVBABDvCSEHIANBADYC7AEgA0IANwLkASADIAc2AmwgAyAFNgJoIANBADYCcCADQQA2AhAgA0EANgIIIANCBDcCrAEgA0IANwKkASADQoCAgIDAADcCnAEgA0EANgKQASADQQA2AkAgA0EANgI4IANBADYCMCADQQA2AiggA0EANgIgIANBADYCGCADQoCAgIDAADcDUCADQgA3A1ggA0IENwNgIANBgICAgHg2AtgBIANBgICAgHg2AswBIANBADYCSCADQoCAgIDAADcCtAEgA0IANwK8ASADQgQ3AsQBIANCADcD8AEgA0EAOgD4ASABKAJcIRggAyACOgCIAiADIBg2AoQCIAMgASgCCCILNgKAAiADQQhqIANBgAJqEKsDAkACQAJAAkACQAJAQYCAMBBuIhMEQCATQQRrIh4tAABBA3EEQCATQQBBgIAw/AsAC0GAgBAQbiIMBEAgDEEEayIfLQAAQQNxBEAgDEEAQYCAEPwLAAtBgIAwEG4iFARAIBRBBGsiIC0AAEEDcQRAIBRBAEGAgDD8CwALQYCAMBBuIhUEQCAVQQRrIiEtAABBA3EEQCAVQQBBgIAw/AsAC0GAgMAAEG4iDgRAIA5BBGsiIi0AAEEDcQRAIA5BAEGAgMAA/AsAC0GAgAgQbiIPBEAgD0EEayIjLQAAQQNxBEAgD0EAQYCACPwLAAtBgIAQEG4iEEUNCCAQQQRrIiQoAgAiBkEDcSIEBEAgEEEAQYCAEPwLAAsgC0UNByAPQQIgAhshJSAQQQQgAhshJkGAgARBACACGyEcQwAAgD8gASoCQCABLQBYQQJGIgUbQwAAAAAgASoCPCAFGyIwkyExQwAAEEEgASoCSCAFG0MAAEDBIAEqAkQgBRsiMpNDAAB+Q5UhMyABKAIQIScgASgCFCEdIAEoAgQhKANAQYCABCALIAlrIgUgBUGAgARPGyEbIAkgC0cEQCAbQRhsISkgKCAJQRhsIgVqISogBSAnaiErQQAhCiAMIQVBACERIAkhByAOIQYgECESIA8hFgNAIBEgKmoiCEERai8AACAIQRNqLQAAIgRBEHRyIg1BCHYhFyAIQQ5qLwEAIhkgCEEQai0AACIaQRB0ckH/AXGzQwAAf0OVIS0gCP0AAgAhNkMAAAAAISxDAAAAACEuIA1B/wFxBEAgMiAzIA1BAWtB/wFxs5SSEIgEIS4LIBdB/wFxBEAgMiAzIBdBAWtB/wFxs5SSEIgEISwLIDAgLSAxlJIhLSAwIBqzQwAAf0OVIDGUkiEvIDAgGUEIdrNDAAB/Q5UgMZSSITQgBAR9IDIgMyAEQQFrQf8BcbOUkhCIBAVDAAAAAAshNSAIQRRqLwEAIQQgCEEWai0AACENIAogE2oiFyA2/R8AOAIAIAogFGoiGSAtOAIAIAogFWoiGiAuOAIAIBdBBGogNv0fATgCACAZQQRqIDQ4AgAgGkEEaiAsOAIAIBdBCGogNv0fAjgCACAZQQhqIC84AgAgGkEIaiA1OAIAIAZBDGogDbNDAAB/Q5VDAAAAP5RD2w9JQJQiLBChAjgCACAGQQhqICwQnwIiLkMAAIA/IARBCHaz/RMgBCANQRB0ckH/AXGz/SAB/QwAAH9DAAB/QwAAf0MAAH9D/ecBIjYgNv3kAf0MAACAvwAAgL8AAIC/AACAv/3kASI2/R8BIi2LkyA2/R8AIi+LkyIsICwgLJQgLUMAAAAAICyMIiwgLCAsXBsiLEMAAAAAICxDAAAAAF4bIiwgLIwiNCA2/QwAAAAAAAAAAAAAAAAAAAAA/Ub9TSI2/ccB/RsCQQFxG5IiLSAtlCAvICwgNCA2/RsAQQFxG5IiLCAslJKSkSIvlZQ4AgAgBkEEaiAuICwgL5WUOAIAIAYgLiAtIC+VlDgCACAFAn8gCEEMai8BACIEQf//AXFFBEAgBEEQdAwBCyAEQf8HcSEIIARBgIACcSENIARBgPgBcSIEQYD4AUYEQCANQRB0IgRBgICA/AdyIAhFDQEaIAQgCEENdHJBgICA/gdyDAELIA1BEHQiDSAEQQ10QYCAgPwAcSAIQQ10ckGAgIDAA2pyIAQNABogCCAIZ0EQayIIQf//A3FBCGp0Qf///wNxIA1BgICA2ANyIAhBF3Rrcgs2AgAgAgRAAn8CQCAHIB1JBEAgESAraiINQQRqIQggDUEUaigCACIEQQVPBEAgCCgCACEEIA1BCGooAgAhCAsgBA0BQQAhBEEADAILIAcgHUHgzcYAEPAHAAsgCCgCAAshCCAWIAQ7AQAgEiAINgIACyAFQQRqIQUgCkEMaiEKIAdBAWohByAGQRBqIQYgEkEEaiESIBZBAmohFiApIBFBGGoiEUcNAAsLIAMgHDYC3AIgAyAmNgLYAiADIBw2AtQCIAMgJTYC0AIgA0EANgLMAiADQoCAgIDAADcCxAIgA0KAgICAwAA3ArwCIANCgICAgMAANwK0AiADQoCAgIDAADcCrAIgA0KAgJCAwAA3AqQCIAMgDjYCoAIgA0GAgAw2ApwCIAMgFTYCmAIgA0GAgAw2ApQCIAMgFDYCkAIgA0GAgAQ2AowCIAMgDDYCiAIgA0GAgAw2AoQCIAMgEzYCgAIgA0EIaiAJIBsgA0GAAmoQeSALIAkgG2oiCUsNAAsMBgtBAkGAgAgQmgkAC0EEQYCAwAAQmgkACwwGCwwFC0EEQYCAEBCaCQALDAMLICQoAgAiBkEDcSEECwJAAkACQAJAAkAgBkF4cUGEgBBBiIAQIAQbTwRAIARBACAGQaiAEE8bDQkgEBCiAiAjKAIAIgJBeHFBhIAIQYiACCACQQNxIgUbSQ0IIAVBACACQaiACE8bDQkgDxCiAiAiKAIAIgJBeHFBhIDAAEGIgMAAIAJBA3EiBRtJDQggBUEAIAJBqIDAAE8bDQkgDhCiAiAhKAIAIgJBeHFBhIAwQYiAMCACQQNxIgUbSQ0IIAVBACACQaiAME8bDQkgFRCiAiAgKAIAIgJBeHFBhIAwQYiAMCACQQNxIgUbSQ0IIAVBACACQaiAME8bDQkgFBCiAiAfKAIAIgJBeHFBhIAQQYiAECACQQNxIgUbSQ0IIAVBACACQaiAEE8bDQkgDBCiAiAeKAIAIgJBeHFBhIAwQYiAMCACQQNxIgUbSQ0IIAVBACACQaiAME8bDQkgExCiAiAYRQ0FQYCAkAEQbiIHRQ0BIAdBBGsiDygCACIGQQNxIgQEQCAHQQBBgICQAfwLAAsgC0UNBCABKAIgIQkgASgCHCEQQQAhAgNAQYCABCALIAJrIgUgBUGAgARPGyEMIAIgC0cEQCACIAkgAiAJSRshBiAMQSRsIRIgECACQQlsaiEEQQAhCiACIQUDQCAGIAlGDQUgBEEEav1cAAAhNiAE/VwAACE3IAcgCmoiDkEgaiAEQQhqLAAAskMAAP5ClTgCACAOIDf9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIA5BEGogNv2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgBEEJaiEEIAVBAWohBSAGQQFqIQYgEiAKQSRqIgpHDQALCyADQQhqIAIgDCAHQYCAJBBlIAsgAiAMaiICSw0ACwwDCwwHC0EEQYCAkAEQmgkACyAFIAlB8M3GABDwBwALIA8oAgAiBkEDcSEECwJAAkACQCAGQXhxQYSAkAFBiICQASAEG08EQCAEQQAgBkGogJABTxsNCCAHEKICIBhBAUYNBEGAgPABEG4iAkUNASACQQRrIg4oAgAiBkEDcSIEBEAgAkEAQYCA8AH8CwALIAsEQCABKAIsIQkgASgCKCEPQQAhBwNAQYCABCALIAdrIgUgBUGAgARPGyEMIAcgC0cEQCAHIAkgByAJSRshCiAMQTxsIRAgDyAHQQ9saiEEQQAhESAHIQUDQCAJIApGDQYgBEEEav1cAAAhNiAEQQhq/VwAACE3IARBDGosAAAhEiAEQQ1qLAAAIRYgBP1cAAAhOCACIBFqIgZBOGogBEEOaiwAALJDAAD+QpU4AgAgBkE0aiAWskMAAP5ClTgCACAGQTBqIBKyQwAA/kKVOAIAIAYgOP2HAf2nAf36Af0MAAD+QgAA/kIAAP5CAAD+Qv3nAf0LAgAgBkEgaiA3/YcB/acB/foB/QwAAP5CAAD+QgAA/kIAAP5C/ecB/QsCACAGQRBqIDb9hwH9pwH9+gH9DAAA/kIAAP5CAAD+QgAA/kL95wH9CwIAIARBD2ohBCAFQQFqIQUgCkEBaiEKIBAgEUE8aiIRRw0ACwsgA0EIaiAHIAwgAkGAgDwQnQEgByAMaiIHIAtJDQALIA4oAgAiBkEDcSEECyAGQXhxQYSA8AFBiIDwASAEG0kNByAEQQAgBkGogPABTxsNCCACEKICIBhBAk0NBEGAgNACEG4iAkUNAyACQQRrIgkoAgAiBkEDcSIEBEAgAkEAQYCA0AL8CwALIAsEQCABKAI4IQwgASgCNCEOQQAhAQNAQYCABCALIAFrIgUgBUGAgARPGyEHIAEgC0cEQCAHQdQAbCEPQQAhBiABIQoDQCADQYACaiAOIAwgChDjBiACIAZqIgUgA/0ABIAC/QsCACAFQRBqIAP9AASQAv0LAgAgBUEgaiAD/QAEoAL9CwIAIAVBMGogA/0ABLAC/QsCACAFQUBrIAP9AATAAv0LAgAgBUHQAGogAyoC0AI4AgAgCkEBaiEKIA8gBkHUAGoiBkcNAAsLIANBCGogASAHIAJBgIDUABCBASABIAdqIgEgC0kNAAsgCSgCACIGQQNxIQQLIAZBeHFBhIDQAkGIgNACIAQbSQ0HIARBACAGQaiA0AJPGw0IIAIQogIMBAsMBgtBBEGAgPABEJoJAAsgBSAJQYDOxgAQ8AcAC0EEQYCA0AIQmgkACwJAIANBCGoiARDXASICBEAgAEECNgIAIAAgAjYCBCABEPoBDAELIAAgA0EIakH4AfwKAAALIANB4AJqJAAPC0EEQYCAEBCaCQALQQRBgIAwEJoJAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQAL4RcCGX8CfCMAQbAEayIDJAAgA0IANwOYASADQgA3A5ABIANCADcDiAEgA0IANwOAASADQgA3A3ggA0IANwNwIANCADcDaCADQgA3A2AgA0IANwNYIANCADcDUCADQgA3A0ggA0IANwNAIANCADcDOCADQgA3AzAgA0IANwMoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwAgA0IANwO4AiADQgA3A7ACIANCADcDqAIgA0IANwOgAiADQgA3A5gCIANCADcDkAIgA0IANwOIAiADQgA3A4ACIANCADcD+AEgA0IANwPwASADQgA3A+gBIANCADcD4AEgA0IANwPYASADQgA3A9ABIANCADcDyAEgA0IANwPAASADQgA3A7gBIANCADcDsAEgA0IANwOoASADQgA3A6ABIANCADcD2AMgA0IANwPQAyADQgA3A8gDIANCADcDwAMgA0IANwO4AyADQgA3A7ADIANCADcDqAMgA0IANwOgAyADQgA3A5gDIANCADcDkAMgA0IANwOIAyADQgA3A4ADIANCADcD+AIgA0IANwPwAiADQgA3A+gCIANCADcD4AIgA0IANwPYAiADQgA3A9ACIANCADcDyAIgA0IANwPAAiADQeADakEAQdAA/AsAQaS5yAAoAgAiCSEGIAJBA2tBGG0iBUEAIAVBAEobIgshBSALQQJ0QbS5yABqIQcDQCADIARBA3RqIAVBAEgEfEQAAAAAAAAAAAUgBygCALcLOQMAIAQgBkkiCgRAIAdBBGohByAFQQFqIQUgBCAKaiIEIAZNDQELC0EAIQUDQEEAIQQgA0HAAmogBUEDdGogHCAAIARBA3RqKwMAIAMgBSAEa0EDdGorAwCioDkDACAFIAlJIgQEQCAEIAVqIgUgCU0NAQsLRAAAAAAAAPB/RAAAAAAAAOB/IAIgC0FobGoiCkEYayIGQf4PSyIPG0QAAAAAAAAAAEQAAAAAAABgAyAG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EMcEDQkgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0JCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGD+sMAQRogASgCBCIGKAIMIgURAAANByAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQkgACABEMcERQ0BDAkLIARBhY7CAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQggAigCIEGDjsIAQQIgAigCJCgCDBEAAA0ICyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEGd+sMAQRsgASgCBCIGKAIMIgURAAANBiAAQQFqIQACQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQggACABEMcERQ0BDAgLIARBhY7CAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQYiPwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEMcEDQcgAigCIEGDjsIAQQIgAigCJCgCDBEAAA0HCyABKAIAQd7JxABBASABKAIEKAIMEQAAIQMMBgsgASgCAEG4+sMAQRYgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRBzvrDAEESIAEoAgQiBigCDCIFEQAADQQCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQYgACgCCCAAKAIMIAEQwQJFDQEMBgsgBEGFjsIAQQIgBREAAA0FIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/CADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUaiIENgIgIAAoAgggACgCDCACQSBqEMECDQUgBEGDjsIAQQIQwwMNBQsgASgCAEHeycQAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRB4PrDAEEQIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCAEQaXLxABBASAFEQAADQUgACgCCCAAKAIMIAEQwQJFDQEMBQsgBEGFjsIAQQIgBREAAA0EIAJBAToADCACIAY2AhggAiAENgIUIAJBiI/C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ACAAKQPYAiACrXwiCTcD4AIgACAJNwPYAgJAAkACQCABKAKkAkEBRgRAIAAgASgClAIiAjYCiAMgACABKAK0ASABKALAASIDIAEoArABGyIFNgKMAyAFRQ0BIAMgBW4iByADIAUgB2xHaiIFIAJGBEAgAS0AqAIhAiABIARBACAGQQFxGzYCJCABIAM2AiAgASACQQFxIgM6ACggAEH4AWogAUEgahDqASABKALQASIEQQJHBEACfSAALQDQAiICQQJGBEBDAABAwSENQwAAEEEhDkMAAIA/IRBBACECQwAAgD8hEUMAAIA/IRJDAACAPyETQwAAAAAMAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAswCIRAgACoCyAIhESAAKgLEAiESIAAqAsACIQ4gACoCvAIhDSAAKgK4AiETIAAqArQCCyEPIAAgASoChAIgECABKAKAAhs4AswCIAAgASoC/AEgESABKAL4ARs4AsgCIAAgASoC9AEgEiABKALwARs4AsQCIAAgASoC7AEgDiABKALoARs4AsACIAAgASoC5AEgDSABKALgARs4ArwCIAAgASoC3AEgEyABKALYARs4ArgCIAAgAiABLQCIAiICIAJBAkYbOgDQAiAAIAEqAtQBIA8gBEEBcRs4ArQCIAAgAS0AIjoA0wIgACABLwEgOwDRAgsgA0UNBAJ9IAAtANACQQJGBED9DAAAAAAAAIA/AABAwQAAEEEhFEMAAIA/IQ1DAACAPyEOQwAAgD8MAQsgASAALwDRAjsBICABIAAtANMCOgAiIAAqAsgCIQ0gACoCxAIhDiAA/QACtAIhFCAAKgLMAgshDyAAQQE6ANACIAAgDzgCzAIgACANOALIAiAAIA44AsQCIAAgFP0LArQCIAAgAS8BIDsA0QIgACABLQAiOgDTAgwECyABIAU2AswCIAFCgICAgBAiCSAAQYgDaq2ENwMoIAEgCSABQcwCaq2ENwMgIAFBwAJqIgBBxYTAACABQSBqELcHIAAQvQghAwwCCyABIAFBpAJqrUKAgICAEIQ3AyAgAUG0AmoiAEHkksAAIAFBIGoQtwcgABC9CCEDIAEoApQCIQIMAQtB/OXBABCdCgALIAEoApACIQQgAgRAIARBJGohAANAIABBBGsoAgAiBUEASgRAIAAoAgAgBUEBEMEHCyAAQTBq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IAIgA0EEEOsGIAIoAgghAwsgAigCBCADaiEHAn8gBUGAEEkEQCAFQQZ2QUByIQhBAgwBCyAHIAVBBnZBP3FBgAFyOgABIAVBDHZBYHIhCEEDCyEJIAcgCDoAACACIAMgCWo2AgggByAJakEBayAFQT9xQYABcjoAAEEAIQMMBAsgAigCCCIDIAIoAgBGBEAgAhCtBwsgAiADQQFqNgIIIAIoAgQgA2ogBToAAEEAIQMMAwsgBSADIANBmLjFABCgBQALIARBFDYCFCABIARBFGoQmwghAwwBCyAIIAMgA0GYuMUAEKAFAAsgBEEgaiQAIANFDQ8MDgsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQSI6AAAMDAsgAigCACADRgRAIAIQrQcLIAIgA0EBajYCCCACKAIEIANqQdwAOgAADAsLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEvOgAADAoLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEIOgAADAkLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEMOgAADAgLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEKOgAADAcLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakENOgAADAYLIAIoAgAgA0YEQCACEK0HCyACIANBAWo2AgggAigCBCADakEJOgAADAULIAMgByAFQfywxQAQoAUACyAGKAIMIQMMBAsgBkEENgIUIAAgASAGQRRqEIEIDAYLIAcgBUHMsMUAEPAHAAsgACAGKAIENgIEIABBAjYCAAwECwwBCwsgAEECNgIAIAAgAzYCBAwBCyAAIAE2AgggACADNgIEIABBADYCAAsgBkEgaiQAC98QAwd/An4BeyMAQSBrIgUkAAJAAkAgACgCACICRQRAIAAoAhAiAEUNASAAQam4xQBBARCuAyECDAILAkACQAJAAkACQAJAAkAgACgCCCIEIAAoAgQiBk8EQCAAKAIQIgJFDQEgAkHHx8QAQRAQrgNFDQEMBwsgACAEQQFqIgE2AgggBUEIaiACIARqLQAAIgMQigggBSgCCCIHBEAgACgCECIARQ0IIAAgByAFKAIMEK4DIQIM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CnFBA3RrIgdBCGsoAgAgAEYEQEEBIQggASAHQQRrKAIARg0DCyACQgF9IAKDIgJQRQ0ACwsgBUKAgYKEiJCgwIB/gyECIBZFBEAgAlANAiACeqdBA3YgDGogCnEhEwtBASACIAVCAYaDUA0CGkEAIQggCSATaiwAACIMQQBOBEAgCSAJKQMAQoCBgoSIkKDAgH+DeqdBA3YiE2otAAAhDAsgCSATaiADp0H/AHEiBzoAACAJIBNBCGsgCnFqQQhqIAc6AABB0L7IAEHQvsgAKAIAIAxBAXFrNgIAQdS+yABB1L7IACgCAEEBajYCACAJIBNBA3RrIgdBCGsgADYCACAHQQRrIAE2AgALIAgPC0EACyEWIBdBCGoiFyAMaiAKcSEMDAALAAueBgEEfyAAENoEAkACQCAAKAKYBCIBBEAgACgCnAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKkBCIBBEAgACgCqAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAKwBCIBBEAgACgCtAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAK8BCIBBEAgACgCwAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALIBCIBBEAgACgCzAQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALUBCIBBEAgACgC2AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALgBCIBBEAgACgC5AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALsBCIBBEAgACgC8AQiA0EEaygCACICQXhxIgQgAUECdCIBQQRBCCACQQNxIgIbakkNASACQQAgBCABQSdq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rMtUVVXFv6CioKC2DAULRNIhM3982RLAIAGhIgIgAiACoiIBoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiADIAFEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYMBAsgBEHjl9uABEsNAiAGQQBOBEBEGC1EVPsh+T8gAaEiAiACIAKiIgGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwECyABRBgtRFT7Ifk/oCICIAIgAqIiAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAMLIARBgICAzANPBEAgASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAwsgBSAAQwAAgHuSOAIIIAUqAggaQwAAgD8MAgtEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAQtEGC1EVPshCcBEGC1EVPshCUAgBkEAThsgAaAiASABoiIBRIFeDP3//9+/okQAAAAAAADwP6AgASABoiICREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLaMCyAFQRBqJAAL3QgBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBzMPIACgCAEYEQCACKAIEQQNxQQNHDQFBxMPIACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEO4ECwJAAkACQAJAAkACQAJAIAIoAgQiA0ECcUUEQCACQdDDyAAoAgBGDQIgAkHMw8gAKAIARg0DIAIgA0F4cSICEO4EIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQczDyAAoAgBHDQFBxMPIACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYC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hAhsNgAAIBZB0ABqIAwgFkE6ai0AACIUQQJqIglqIAhBAXRqQQJ2QYGChAhsNgAAIBZBO2ogEiAWQSVqLQAAIghqIBRBAXRqQQJ2QYGChAhsNgAAIBZBJmogCSAWQRBqLQAAaiAIQQF0akECdkGBgoQIbDYAAAwGCyAmIDVqIipBGGotAAAhMiAqQRdqLQAAISUgKkERai0AACESICpBEmotAAAhISAqQRNqLQAAIQ0gKCAqQRZqLQAAIhYgKkEUai0AACIUQQJqIgkgKkEVai0AACIMQQF0ampBAnY6AAMgKCAMIA1BAmoiCCAUQQF0ampBAnY6AAIgKCAhIA1BAXRqIAlqQQJ2OgABICggEiAhQQF0aiAIakECdjoAACAqQSZqICgoAgA2AAAgKCAMICVBAmoiCGogFkEBdGpBAnY6AAQgKkE7aiAoKAABNgAAICggFiAyaiAlQQF0akECakECdjoABSAqQdAAaiAoKAECNgAAICggCCAyaiAyQQF0akECdjoABiAqQeUAaiAoKAADNgAADAULICYgNWoiNEEUai0AACEWIDRBE2otAAAhOSA0QeQAai0AACEMIDRBzwBqLQAAISogNEE6ai0AACEyIDRBJWotAAAhJSAoIDRBEmotAAAiEkECaiIUIDRBEGotAAAiIWogNEERai0AACINQQF0akECdjoADCAoIA0gJUECaiIJICFBAXRqakECdjoACyAoICEgMkECaiIIICVBAXRqakECdjoACiAoICogMkEBdGogCWpBAnY6AAkgNEHQAGogKCgACTYAACAoIAwgKkEBdGogCGpBAnY6AAggNEHlAGogKCgCCDYAACAoIBYgFCA5QQF0ampBAnY6AA4gKCA5IA0gEkEBdGpqQQJqQQJ2OgANIDRBJmogKCgACzYAACA0QTtqICgoAQo2AAAMBAsgJiA1aiINQdEAaiANQRBqLQAAIhIgDUERai0AACIWakEBakEBdiIIOgAAIA1BJmogCDoAACANQdIAaiAWIA1BEmotAAAiDGpBAWpBAXYiCDoAACANQSdqIAg6AAAgDUHlAGogDUElai0AACIUIA1BzwBqLQAAIA1BOmotAAAiCUEBdGpqQQJqQQJ2OgAAIA1B5gBqIBYgFCASQQF0ampBAmpBAnYiCDoAACANQdAAaiASIAkgFEEBdGpqQQJqQQJ2OgAAIA1BO2ogCDoAACANQecAaiAMIBIgFkEBdGpqQQJqQQJ2Igg6AAAgDUE8aiAIOgAAIA1B6ABqIA1BE2otAAAiEiAWIAxBAXRqakECakECdiIJOgAAIA1BFGotAAAhFCANQdMAaiAMIBJqQQFqQQF2Igg6AAAgDUE9aiAJOgAAIA1BKGogCDoAACANQT5qIBQgDCASQQF0ampBAmpBAnY6AAAgDUEpaiASIBRqQQFqQQF2OgAADAMLICYgNWoiJUHQAGogJUESai0AACIMICVBE2otAAAiFmpBAWpBAXYiCDoAACAlQSZqIAwgJUERai0AACIJakEBakEBdjoAACAlQSdqIAg6AAAgJUHRAGogFiAlQRRqLQAAIiFqQQFqQQF2Igg6AAAgJUEoaiAIOgAAICVB0gBqICEgJUEVai0AACINakEBakEBdiISOgAAICVB5QBqIAwgIWogFkEBdGpBAmpBAnYiCDoAACAlQTxqIAg6AAAgJUHmAGogFiANQQJqIhQgIUEBdGpqQQJ2Igg6AAAgJUE9aiAIOgAAICVBO2ogCSAWIAxBAXRqakECakECdjoAACAlQRhqLQAAIQkgJUEXai0AACEWICVB5wBqICVBFmotAAAiDCAhIA1BAXRqakECakECdiIIOgAAICVBKWogEjoAACAlQegAaiAJIAwgFkEBdGpqQQJqQQJ2OgAAICVB0wBqIBYgDEEBdCAUampBAnY6AAAgJUE+aiAIOgAADAILICYgNWoiIUHlAGogIUHkAGotAAAiCSAhQc8Aai0AACISakEBakEBdjoAACAhQecAaiASICFBOmotAAAiDGpBAWpBAXYiCDoAACAhQdAAaiAIOgAAICFB0gBqIAwgIUElai0AACINakEBakEBdiIIOgAAICFBO2ogCDoAACAhQT1qIA0gIUEQai0AACIWakEBakEBdiIUOgAAICFB5gBqIAwgCSASQQF0ampBAmpBAnY6AAAgIUHoAGogDSASIAxBAXRqakECakECdiIIOgAAICFB0QBqIAg6AAAgIUHTAGogFiAMIA1BAXRqakECakECdiIIOgAAICFBPGogCDoAACAhQRNqLQAAIQkgIUESai0AACEMICFBPmogIUERai0AACISIA0gFkEBdGpqQQJqQQJ2Igg6AAAgIUEmaiAUOgAAICFBKWogCSASIAxB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AmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQRyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBCAKIANBBXIgH2wgB2oiAkkNAiAKIAJrIiBBCEkNACAPIBAgFyABIAJqEKQEIAIgEUsNAyARIAJrIiBBCEkNASAPIBAgFyACIAhqEKQEIAogA0EGciAfbCAHaiICSQ0CIAogAmsiIEEISQ0AIA8gECAXIAEgAmoQpAQgAiARSw0DIBEgAmsiIEEISQ0BIA8gECAXIAIgCGoQpAQgCiADQQdyIB9sIAdqIgJJDQIgCiACayIgQQhJDQAgDyAQIBcgASACahCkBCACIBFLDQMgESACayIgQQhJDQEgDyAQIBcgAiAIahCkBEEBITAMBAtBAEEIICBBmL3FABCgBQALQQBBCCAgQai9xQAQoAUACyACIAogCkHIvcUAEKAFAAsgAiARIBFBuL3FABCgBQALIAYNACAwRQ0HIABBBHQhLCAFKAIIIQIgBSgCBCEBQQAhLiAFLQAqDQMMAQsgAEEEdCIsIAZBBHQiLiATbGoiKUEPciE7IClBDnIhHiApQQ1yIRYgKUEMciEMIClBC3IhEiApQQpyIRQgKUEJciEJIClBCHIhFSApQQdyIRkgKUEGciELIClBBXIhESApQQRyIQogKUEDciEIIClBAnIhByApQQFyIQMgBSgCCCECIAUoAgQhASAFLQAqDQEgDyAQIBggASACICkgExCKAyAPIBAgGCABIAIgAyATEIoDIA8gECAYIAEgAiAHIBMQigMgDyAQIBggASACIAggExCKAyAPIBAgGCABIAIgCiATEIoDIA8gECAYIAEgAiARIBMQigMgDyAQIBggASACIAsgExCKAyAPIBAgGCABIAIgGSATEIoDIA8gECAYIAEgAiAVIBMQigMgDyAQIBggASACIAkgExCKAyAPIBAgGCABIAIgFCATEIoDIA8gECAYIAEgAiASIBMQigMgDyAQIBggASACIAwgExCKAyAPIBAgGCABIAIgFiATEIoDIA8gECAYIAEgAiAeIBMQigMgDyAQIBggASACIDsgExCKAyAFKAIg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IAFBA3EiARtqSQ0CIAFBACAGIABBJ2pLGw0BIAkQogILDwtB5ILHAEEuQZSDxwAQqAkAC0GkgscAQS5B1ILHABCoCQALpwUBCH8gACAAKAIIIgQgAmoiAzYCCCAAKAIEIgggA0EQaiIHIAcgCEsbIQMgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCABIAJPBEAgASAESw0BIAQgAWshACAHIAhPBEAgACACaiIBIANLDQMgACABSw0EIAQgAyACa0sNBSACRQ0KIAQgBWogACAFaiAC/AoAAA8LIAJFDQkgBCAFaiIDIAAgBWoiAP0AAAD9CwAAIAJBEUkNCSAAIAJqIQJBACABayEBIANBEGohAANAIAAgACABav0AAAD9CwAAIABBEGoiACABaiACSQ0ACwwJCyABQQFHBEBBACEAIAEgAyAEIAFrIgggAyAISxtqIARrIgYgAyAEayIHQQAgAyAHTxsiByAGIAdJGyIGIAJBAWsiCSAGIAlJGyIJQQFqIgZBEUkgAUEPTXINCCAGQQ9xIgBBECAAGyIAIAlBf3NqIQlBACABayEKIAQgBWohASAGIABrIQADQCABIAEgCmr9AAAA/QsAACABQRBqIQEgCUEQaiIJDQALDAgLIARBAWsiACADTw0EIAMgBEkNBSACIAMgBGsiAUsNBiACRQ0IIAQgBWogACAFai0AACAC/AsADAgLQfCFyABBCUH8hcgAEJQIAAtBACABIANBqKPHABCgBQALIAAgASADQbijxwAQoAUAC0HTo8cAQStB4IXIABCTCAALIAAgA0GQhcgAEPAHAAsgBCADIANBsIXIABCgBQALQQAgAiABQaCFyAAQoAUACyAFIAhqIQEgBCAFaiEFA0AgACAIaiIGIANPDQIgACAHRg0DIAAgBWogACABai0AADoAACAAQQFqIgAgAkcNAAsLDwsgBiADQcCFyAAQ8AcACyAAIARqIANB0IXIABDwBwALowUBCH8CQAJAAkACQAJAAkACQCABIAIgAyAEIAUgBhDgAwRAIAUgBkEBdCIIayIBIARPDQIgBSAGayICIARPDQMgAEH/AXEiDCABIANqIgotAAAiASACIANqIgstAAAiAmsiByAHQR91IgdzIAdrSQ0GIAUgBmoiByAETw0EIAQgBU0NBSAMIAMgB2oiDS0AACIHIAMg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CyADIARJDQEgAkEBayECIAFB/wFxIQEDQEEAIARFDQQaIAIgBGohAyAEQQFrIQQgASADLQAARw0ACwwCCyAGIAMgA0HwksIAEKAFAAtBACAEIANB4JLCABCgBQALQQELIQUgACAENgIEIAAgBTYCAAvbAgIGfwJ+IwBBEGsiBCQAIAEoAgAhBgJAAkACQAJAIAEoAggiAyABKAIEIgJJBEAgAyAGai0AAEHfAEYNAQsgAyACIAIgA0kbIQcCQANAIAMgB0YNBAJAAkAgAyAGai0AACICQd8ARwRAIAJBMGsiBUH/AXFBCkkNAiACQeEAa0H/AXFBGkkNASACQcEAa0H/AXFBGk8NByACQR1rIQUMAgtBASECIAEgA0EBajYCCCAIQn9SBEAgACAIQgF8NwMIDAYLIABBADoAAQwHCyACQdcAayEFCyABIANBAWoiAzYCCCAEIAhCPhD8BiAEKQMIQgBSDQEgBCkDACIJIAWtQv8Bg3wiCCAJWg0ACyAAQQA6AAFBASECDAQLIABBADoAAUEBIQIMAwsgAEIANwMIIAEgA0EBajYCCAtBACECDAELIABBADoAAUEBIQILIAAgAjoAACAEQRBqJAAL6QICBH4DfwJAAkACQCABQdgAaiACELYEIgIEQCACKQMIIgUgAikDACIEfSIHIAOtVgRAIABBGjoAAA8LIAenIgJBAEgNAUEBIQMCQCAEIAVRIgkNACACEG4iA0UNAyADQQRrLQAAQQNxRSACRXINACADQQAgAvwLAAsgASgCTCIIrSEGIAIgCEL/////DyAEIARC/////w9aG6drIgpBACAIIApPG00EQCABKAJIIAQgBiAEIAZUG6dqIQgCQCAHQgFSBEAgAkUNASADIAggAvwKAAAMAQsgAyAILQAAOgAACyABIAU3A1AMBAsgASAFIAZB4JXHACkDACIEQv8Bg0IEUSIBGzcDUCABDQMgACAENwIEIABBADoAACAJRQRAIAMgAkEBEMEHCw8LIABBHToAACAAQYCAgIB4NgIEDwsQmAoAC0EBIAIQmgkACyAAIAI2AgwgACADNgIIIAAgAjYCBCAAQR06AAALhQMCA30Cf0MAABBBIAEqAgwgAS0AHEECRiIGGyEFQwAAQMEgASoCCCAGGyEEQQAhAUEAIQYgAv0fACIDQwAAAABfRQRAQf8BQwAA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AmogBCkASTcAAA8LQQBBAEHAj8QAEPAHAAtBAEEIIAFBAWtB0I/EABCgBQALIAAgAyADQfCPxAAQoAUAC0EAQQggAUHgj8QAEKAFAAu3AQIDfwR+IAEoAgQiAq0hBQJAAkAgAkL/////DyABKQMIIgYgBkL/////D1obp2siBEEAIAIgBE8bQQJPBEAgASgCACAGIAUgBSAGVhunai8AACEDQQQhAgwBC0HglccAKQMAIghCCIghByAIpyECIAhC/wGDQgRSDQELIAZCAnwhBQsgASAFNwMIIAJB/wFxQQRHBEAgACACrUL/AYMgB0IIhoQ3AgAPCyAAQQQ6AAAgACADOwECC7cBAgR+BH9BBCEGIAEoAgQiCK0hAgJAAkAgCEL/////DyABKQMIIgMgA0L/////D1obp2siCUEAIAggCU8bQQRPBEAgASgCACADIAIgAiADVhunaigAACEHDAELQeCVxwApAwAiBUIIiCEEIAWnIQYgBUL/AYNCBFINAQsgA0IEfCECCyABIAI3AwggBkH/AXFBBEcEQCAAIAatQv8BgyAEQgiGhDcCAA8LIABBBDoAACAAIAc2AgQL5AECAn8BfiMAQTBrIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQQA2AiwgAkKAgICAEDcCJCACQSRqQaiBxwAgAygCACIDKAIAIAMoAgQQzgMaIAIgAigCLCIDNgIgIAIgAikCJCIENwMYIAEgAzYCCCABIAQ3AgALIAEoAgghAyABQQA2AgggASkCACEEIAFCgICAgBA3AgAgAiADNgIQIAIgBDcDCEEMEG4iAUUEQEEMELEKAAsgASACKAIQNgIIIAEgAikDCDcCACAAQeiOxwA2AgQgACABNgIAIAJBMGokAAu1AQECfyAAQf//AXFFBEAgAEEQdL4PCyAAQf8HcSEBIABBgIACcSECIABBgPgBcSIAQYD4AUYEQCACQRB0IQAgAUUEQCAAQYCAgPwHcr4PCyAAIAFBDXRyQYCAgP4Hcr4PCyACQRB0IQIgAARAIABBDXRBgICA/ABxIAFBDXRyQYCAgMADaiACcr4PCyACQYCAgNgDciABZ0EQayIAQRd0ayABIABB//8DcUEIanRB////A3FyvgvXAQEEfyMAQTBrIgIkACACIAEpA0A3AyggAiAB/QADMP0LAxggAiAB/QADIP0LAwgCQAJAQSgQbiIDBEAgAyACKQMoNwMgIAMgAv0AAxj9CwMQIAMgAv0AAwj9CwMAIAFBBGoQiAMgAUEEaygCACIEQXhxQcwAQdAAIARBA3EiBRtJDQEgBUEAIARB8ABPGw0CIAEQogIgAEGEwcYANgIEIAAgAzYCACACQTBqJAAPC0EoELEKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALtAEBBH8jAEEQayIDJAAgACgCCEEEdCECIAAoAgQhBAJ/AkACQANAIAJFDQEgAkEQayECIAQoAgAgBEEQaiEEQQNGDQALIAEoAgAhAiADIACtQoCAgICQA4Q3AwhBASACIAEoAgQiBUHQ+sAAIANBCGoQzgMNAhoMAQsgASgCBCEFIAEoAgAhAgsgAyAAQQxqrUKAgICAoAOENwMIIAIgBUGUm8AAIANBCGoQzgMLIANBEGokAAvDAQECfyMAQSBrIgIkAAJAIAAQRCIBDQAgAC0AoVRFBEBB1KvBAEEVELQIIQEMAQsCQCAAKALgAUGAgICAeEcEQCAALQCUAiIBQQlGDQEgAUEFRgRAIAAoAowCRQ0CCyACIABBjAJqrUKAgICAEIQ3AxggAiAAQZQCaq1CgICAgIAEhDcDECACQQRqIgBB7ozAACACQRBqELcHIAAQvQghAQwCC0Hpq8EAQRIQtAghAQwBCyAAEKgBIQELIAJBIGokACABC8MBAQJ/IwBBIGsiAiQAAkAgABBDIgENACAALQDdVEUEQEHUq8EAQRUQtAghAQwBCwJAIAAoAvgBQYCAgIB4RwRAIAAtAKwCIgFBCUYNASABQQVGBEAgACgCpAJFDQILIAIgAEGkAmqtQoCAgIAQhDcDGCACIABBrAJqrUKAgICAgASENwMQIAJBBGoiAEHujMAAIAJBEGoQtwcgABC9CCEBDAILQemrwQBBEhC0CCEBDAELIAAQ1wEhAQsgAkEgaiQAIAELwgEBBX8jAEEQayIDJAACQAJAAkAgARCDCyIEQf////8DSw0AIARBAnQiAkH9////B08NAAJ/IAJFBEBBBCEFQQAMAQsgAhBuIgVFDQIgBAshAiAAIAU2AgQgACACNgIAIAEQgwshAiABEIMLIQYgAyACNgIMIAMgBjYCCCACIAZHDQIgBSACIAEQrQogACAENgIIIANBEGokAA8LEJgKAAtBBCACEJoJAAtBACADQQhqIANBDGpBACABQdChxAAQoAgAC7gBAQR/AkACQAJAAkAgA0ECdiIDBEAgA0ECdCEHIAVBAnQhCEEAIQMDQCABIANNDQMgAiADaiAAIANqIgktAAA2AgAgA0EBaiIGIAFPDQQgA0ECaiIGIAFPDQUgAyAIRg0CIAMgBGogCUEBai8AADYCACAHIANBBGoiA0cNAAsLDwsgBSAFQYjwwQAQ8AcACyADIAFB2O/BABDwBwALIAYgAUHo78EAEPAHAAsgBiABQfjvwQAQ8AcAC7gBAgJ/AX4jAEEQayICJAAgACgCACEDAkAgASkCCCIEpyIAQYCAgARxRQ0AIABBgICAwABxBEAgAEGAgIAIciEADAELIAFBCjsBDCAAQYCAgMgAciEACyABIABBgICABHI2AghBCSEAA0AgACACakEGaiADQQ9xLQDoyEQ6AAAgAEEBayEAIANBBHYiAw0ACyABQQFBwsvEAEECIAAgAmpBB2pBCSAAaxDfAyABIAQ3AgggAkEQaiQAC6YBAQV/AkACQCABKAIQIgYgASgCFCIFTQ0AIAVBAWohCCAGIAVrIQYgASgCDCAFaiEFA0AgBCAFai0AACIHQTBrQf8BcUEKTwRAIAdBLkYNAyAHQcUARyAHQeUAR3ENAiAAIAEgAiADIAQQogQPCyABIAQgCGo2AhQgBiAEQQFqIgRHDQALIAYhBAsgACABIAIgAyAEELYFDwsgACABIAIgAyAEENEEC8IBAQJ/IwBBIGsiBSQAIAACfwJAIANBASAEGwRAIAEoAhQiAyABKAIQIgRPDQEgASgCDCEGA0AgAyAGai0AAEEwa0H/AXFBCk8NAiABIANBAWoiAzYCFCADIARHDQALDAELIAVBDjYCFCAFQQhqIAEoAgwgASgCECABKAIUEPgBIAAgBUEUaiAFKAIIIAUoAgwQpgg2AgRBAQwBCyAARAAAAAAAAAAARAAAAAAAAACAIAIbOQMIQQALNgIAIAVBIGokAAuwAQEFfwJAAkAgACgCBCICIAAoAgAiAUcEQCACIAFrIQIgAUEMbCAAakEMaiEAA0AgAEEEaygCACIBBEAgACgCACIEQQRrKAIAIgNBeHEiBSABQQJ0IgFBBEEIIANBA3EiAxtqSQ0DIANBACAFIAFBJ2pLGw0EIAQQogILIABBDGohACACQQFrIgINAAsLDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALswEBAn8gA0EITwRAIAAgACADQQN2IgNBBHQiBWogACADQRxsIgZqIAMgBBCyBiEAIAEgASAFaiABIAZqIAMgBBCyBiEBIAIgAiAFaiACIAZqIAMgBBCyBiECCyAEKAIAQQRqKAIAIAAoAgAgASgCABDFAyIDIAQoAgBBBGooAgAgACgCACACKAIAEMUDRgR/IAIgASAEKAIAQQRqKAIAIAEoAgAgAigCABDFAyADcxsFIAALC7MBAQJ/IANBCE8EQCAAIAAgA0EDdiIDQQR0IgVqIAAgA0EcbCIGaiADIAQQswYhACABIAEgBWogASAGaiADIAQQswYhASACIAIgBWogAiAGaiADIAQQswYhAgsgBCgCAEEEaigCACAAKAIAIAEoAgAQ3QIiAyAEKAIAQQRqKAIAIAAoAgAgAigCABDdAkYEfyACIAEgBCgCAEEEaigCACABKAIAIAIoAgAQ3QIgA3MbBSAACwvQAQEDfyMAQRBrIgIkACACIAA2AgQgASgCAEGAncEAQQQgASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpBhJ3BAEEIIAJBBGpB8JzBABCeBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQb3LxABBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEHxycQAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQuvAQEDfyAAAn8CQAJAIAIgBEsEQEEKIQYDQCABIARBA3RqIggvAQAiBwRAIAdBAmsNAwwECyAGQQFqIQYgA0EBcSEHIANBAXYhAyAIKAIEIAQgB2pqIgQgAkkNAAsLIAQgAkHE6cMAEPAHAAtBDyAFLQAMIgEgBkH/AXFJDQEaIAUgASAGazoADCAAIAgvAQI7AQIgBSAFKQMAIAatiDcDACAAQR06AAAPC0EOCzoAAAuvAQEDfyAAAn8CQAJAIAIgBEsEQEEKIQYDQCABIARBA3RqIggvAQAiBwRAIAdBAmsNAwwECyAGQQFqIQYgA0EBcSEHIANBAXYhAyAIKAIEIAQgB2pqIgQgAkkNAAsLIAQgAkHE6cMAEPAHAAtBDyAFLQAgIgEgBkH/AXFJDQEaIAUgASAGazoAICAAIAgvAQI7AQIgBSAFKQMAIAatiDcDACAAQR06AAAPC0EOCzoAAAvQAQEDfyMAQRBrIgIkACACIAA2AgQgASgCAEGM6cMAQQ8gASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpBgI7HAEEEIAJBBGpB/OjDABCeBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQb3LxABBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEHxycQAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQvQAQEDfyMAQRBrIgIkACACIAA2AgQgASgCAEHQu8UAQQ0gASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpBgI7HAEEEIAJBBGpBwLvFABCeBSEAIAItAA0iAyACLQAMIgRyIQECQCAEQQFxIANBAUdyDQAgACgCACIALQAKQYABcUUEQCAAKAIAQb3LxABBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEHxycQAQQEgACgCBCgCDBEAACEBCyACQRBqJAAgAUEBcQu7AQEDfyMAQSBrIgEkAAJAIAAQQCICDQAgAC0AxVNFBEBB1KvBAEEVELQIIQIMAQsgACgChAFBgICAgHhHBEBBACECIAAtALgBIgNBCUYNASADQQVGBEAgACgCsAFFDQILIAEgAEGwAWqtQoCAgIAQhDcDGCABIABBuAFqrUKAgICAgASENwMQIAFBBGoiAEHujMAAIAFBEGoQtwcgABC9CCECDAELQemrwQBBEhC0CCECCyABQSBqJAAgAgu6AQEDfyMAQSBrIgEkAAJAIAAQPyICDQAgAC0ApVNFBEBB1KvBAEEVELQIIQIMAQsgACgCZEGAgICAeEcEQEEAIQIgAC0AmAEiA0EJRg0BIANBBUYEQCAAKAKQAUUNAgsgASAAQZABaq1CgICAgBCENwMYIAEgAEGYAWqtQoCAgICABIQ3AxAgAUEEaiIAQe6MwAAgAUEQahC3ByAAEL0IIQIMAQtB6avBAEESELQIIQILIAFBIGokACACC8ABAQR/IAAQggMCQAJAIAAoAvAFIgEEQCAAKAL0BSIDQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKALkBSIBQYOAgIB4RwRAIABB4ABqIQACQAJAAkBBASABQYCAgIB4cyABQQBOGw4CAQIACyAAEMABDwsgABDQAw8LIAAQkgILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALvwEBBH8gABCDAwJAAkAgACgC0AUiAQRAIAAoAtQFIgNBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAsQFIgFBg4CAgHhHBEAgAEFAayEAAkACQAJAQQEgAUGAgICAeHMgAUEAThsOAgECAAsgABDAAQ8LIAAQ0AMPCyAAEJICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC8ABAQR/IAAQ+gECQAJAIAAoAogHIgEEQCAAKAKMByIDQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyABakkNASACQQAgBCABQSdqSxsNAiADEKICCyAAKAL8BiIBQYOAgIB4RwRAIABB+AFqIQACQAJAAkBBASABQYCAgIB4cyABQQBOGw4CAQIACyAAEMABDwsgABDQAw8LIAAQkgILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALvwEBBH8jAEEgayICJAAgAiABKQIsNwMYIAIgAf0AAhz9CwMIAkACQEEYEG4iAwRAIAMgAikDGDcCECADIAL9AAMI/QsCACABQQRqEIgDIAFBBGsoAgAiBEF4cSIFQThBPCAEQQNxIgQbSQ0BIARBACAFQdwATxsNAiABEKICIABBrJ7BADYCBCAAIAM2AgAgAkEgaiQADwtBGBCxCgALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC78BAQR/IwBBIGsiAiQAIAIgASkCLDcDGCACIAH9AAIc/QsDCAJAAkBBGBBuIgMEQCADIAIpAxg3AhAgAyAC/QADCP0LAgAgAUEEahCIAyABQQRrKAIAIgRBeHEiBUE4QTwgBEEDcSIEG0kNASAEQQAgBUHcAE8bDQIgARCiAiAAQcDBxgA2AgQgACADNgIAIAJBIGokAA8LQRgQsQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAu5AQEEfyMAQRBrIgIkACACIAEoAiQ2AgggAiABKQIcNwMAAkACQEEMEG4iAwRAIAMgAigCCDYCCCADIAIpAwA3AgAgAUEEahCIAyABQQRrKAIAIgRBeHFBLEEwIARBA3EiBRtJDQEgBUEAIARB0ABPGw0CIAEQogIgAEHgn8EANgIEIAAgAzYCACACQRBqJAAPC0EMELEKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALuQEBBH8jAEEQayICJAAgAiABKAIkNgIIIAIgASkCHDcDAAJAAkBBDBBuIgMEQCADIAIoAgg2AgggAyACKQMANwIAIAFBBGoQiAMgAUEEaygCACIEQXhxQSxBMCAEQQNxIgUbSQ0BIAVBACAEQdAATxsNAiABEKICIABB2KDBADYCBCAAIAM2AgAgAkEQaiQADwtBDBCxCgALQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC7kBAQR/IwBBEGsiAiQAIAIgASgCJDYCCCACIAEpAhw3AwACQAJAQQwQbiIDBEAgAyACKAIINgIIIAMgAikDADcCACABQQRqEIgDIAFBBGsoAgAiBEF4cUEsQTAgBEEDcSIFG0kNASAFQQAgBEHQAE8bDQIgARCiAiAAQaSfwQA2AgQgACADNgIAIAJBEGokAA8LQQwQsQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAunAwEIfyMAQRBrIgMkACAAKAIEIQUgACgCACEAQQEhByABKAIAQfzKxABBASABKAIEKAIMEQAAIQIgA0EAOgAJIAMgAjoACCADIAE2AgQCQAJAIAUEQANAIAMgADYCDCADQQxqIQgjAEEgayIBJABBASEGAkAgA0EEaiIELQAEDQAgBC0ABSEJAkAgBCgCACICLQAKQYABcUUEQCAJQQFxRQ0BIAIoAgBB06bFAEECIAIoAgQoAgwRAABFDQEMAgsgCUEBcUUEQCACKAIAQciKxwBBASACKAIEKAIMEQAADQILIAFBAToADyABQYiPwgA2AhQgASACKQIANwIAIAEgAikCCDcCGCABIAFBD2o2AgggASABNgIQIAggAUEQahCaCA0BIAEoAhBBg47CAEECIAEoAhQoAgwRAAAhBgwBCyAIIAIQmgghBgsgBEEBOgAFIAQgBjoABCABQSBqJAAgAEEBaiEAIAVBAWsiBQ0ACyADLQAIRQ0BDAILIAINAQsgAygCBCIAKAIAQf3KxABBASAAKAIEKAIMEQAAIQcLIANBEGokACAHC7kBAQR/IwBBEGsiAiQAIAIgASgCJDYCCCACIAEpAhw3AwACQAJAQQwQbiIDBEAgAyACKAIINgIIIAMgAikDADcCACABQQRqEIgDIAFBBGsoAgAiBEF4cUEsQTAgBEEDcSIFG0kNASAFQQAgBEHQAE8bDQIgARCiAiAAQfzBxgA2AgQgACADNgIAIAJBEGokAA8LQQwQsQoAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAu8AQEEfyAAQZwFahDIAgJAAkAgACgCkAUiAQRAIAAoApQFIgNBBGsoAgAiAkF4cSIEQQRBCCACQQNxIgIbIAFqSQ0BIAJBACAEIAFBJ2pLGw0CIAMQogILIAAoAoQFIgFBg4CAgHhHBEACQAJAAkBBASABQYCAgIB4cyABQQBOGw4CAQIACyAAEMABDwsgABDQAw8LIAAQkgILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALxAEBBH8jAEEQayIEJAACQAJAAkACQAJAAkACQAJAIAEoAgBBAWsOBQECBwcDAAsgASgCFCIDDQMMBgsgASgCFCIDDQMMBQsgASgCECIDDQMMBAsgAS0ABEEDRw0DIARBCGogASgCCCIBKAIAIAEoAgQoAhgRAQAgBCgCDCEFIAQoAgghAgwDCyABKAIYIQUgAyECDAILIAEoAhghBSADIQIMAQsgASgCFCEFIAMhAgsgACAFNgIEIAAgAjYCACAEQRBqJAALmwEBBX8gACgCACEBIAAQoAcCQCAAKAIIIgUgASAAKAIMIgNrTQ0AIAEgBWsiAiADIAJrIgNLIAAoAgAiBCABayADT3FFBEAgBCACayEBIAJBDGwiAgRAIAAoAgQiBCABQQxsaiAEIAVBDGxqIAL8CgAACyAAIAE2AggPCyADQQxsIgJFDQAgACgCBCIAIAFBDGxqIAAgAvwKAAALC7YBAQF/IwBBEGsiAiQAAn8CQAJAAkAgACgCACIAKAIAQQFrDgMCAgEACyACIABBBGo2AgQgAiACQQRqrUKAgICAsA2ENwMIIAEoAgAgASgCBEHn78AAIAJBCGoQzgMMAgsgASgCAEGpuMUAQQEgASgCBCgCDBEAAAwBCyACIABBBGo2AgQgAiACQQRqrUKAgICAoAiENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMLIAJBEGokAAuwAQEEfyABKAIEIQICQAJAAkACQCABKAIAIgMgASgCCCIBTQ0AIAFFBEAgAkEEaygCACIEQXhxIgVBBEEIIARBA3EiBBsgA2pJDQIgBEEAIAUgA0EnaksbDQMgAhCiAkEBIQIMAQsgAiADQQEgARDAAiICRQ0DCyAAIAE2AgQgACACNgIADwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALQQEgARCaCQALvwEBAX8jAEEQayICJAACfyAAKQMAQv///////////wCDQoCAgICAgID4/wBaBEAgAiAArUKAgICAgAWENwMIIAEoAgAgASgCBEGUm8AAIAJBCGoQzgMMAQsgAkEAOgAEIAIgATYCACACIACtQoCAgICABYQ3AwgCQCACQcinxQBBlJvAACACQQhqEM4DDQAgAi0ABEUEQCABKAIAQeCnxQBBAiABKAIEKAIMEQAADQELQQAMAQtBAQsgAkEQaiQAC5ABAgV/AX4gAEEIaiECIAAgAUEDdGohBgNAIAIoAgAiBSACQQhrKAIASQRAIAI1AgQhByADIQECfwNAIAAgAWoiBEEIaiAEKQIANwIAIAAgAUUNARogBSABQQhrIgEgAGoiBCgCAEkNAAsgBEEIagsgBa0gB0IghoQ3AgALIANBCGohAyACQQhqIgIgBkcNAAsLrgEBA38jAEEQayIDJAACQAJAAkACQCAARSABRXINACAAKAIAIgBFDQAgAEHB////B08NASABQQRrKAIAIgJBeHEiBEEEQQggAkEDcSICGyAAakkNAiACQQAgBCAAQSdqSxsNAyABEKICCyADQRBqJAAPC0HQ7ccAQSsgA0EPakG0isgAQcSKyAAQwgcAC0GkgscAQS5B1ILHABCoCQALQeSCxwBBLkGUg8cAEKgJAAuZAQICfwR+AkACQCABKAIEIgIgASkDCCIFIAKtIgQgBCAFVhunIgJHBEAgASgCACACai0A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AUEEaygCACICQXhxQSRBKCACQQNxIgQbSQ0BIARBACACQcgATxsNAiABEKICIABBuMLGADYCBCAAIAM2AgAPC0EEELEKAAtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALiAEBA38gACgCBCICKAIAIgEEQCAAKAIAIAERAwALAkACQCACKAIEIgIEQCAAKAIAIgBBBGsoAgAiAUF4cSIDQQRBCCABQQNxIgEbIAJqSQ0BIAFBACADIAJBJ2pLGw0CIAAQogILDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALhAEBAn8gACAAKAIAIgNBCHYgAyABIAAoAggiA0EDciICQf7/A3EgAmxBgP4DcUEIdnMiAXNB/wFxQQJ0KALwxEdzIgI2AgAgACAAKAIEIAJB/wFxakGFiKLAAGxBAWoiAjYCBCAAIANB/wFxIAJBGHZzQQJ0KALwxEcgA0EIdnM2AgggAQuCAQECfwJAAkAgAUH/////A0sNACABQQJ0IgJB/f///wdPDQACfyACRQRAQQQhA0EADAELIAIQbiIDRQ0CIANBBGstAABBA3FFIAJFckUEQCADQQAgAvwLAAsgAQshAiAAIAE2AgggACADNgIEIAAgAjYCAA8LEJgKAAtBBCACEJoJAAt5AgF/AX4jAEEgayICJAACfyAAKAIAIgAoAgxFBEAgACABEPQDDAELIAJCgICAgBAiAyAAQRBqrYQ3AxggAiADIABBDGqthDcDECACIACtQoCAgIDAA4Q3AwggASgCACABKAIEQbSHwAAgAkEIahDOAwsgAkEgaiQAC38BBH8gAEEEahCIAwJAAkAgACgCHCICBEAgACgCICIDQQRrKAIAIgFBeHEiBEEEQQggAUEDcSIBGyACakkNASABQQAgBCACQSdqSxsNAiADEKICCyAAQShqEPwEDwtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALYgEEfiAAIAJC/////w+DIgMgAUL/////D4MiBH4iBSAEIAJCIIgiAn4iBCADIAFCIIgiBn58IgFCIIZ8IgM3AwAgACADIAVUrSACIAZ+IAEgBFStQiCGIAFCIIiEfHw3AwgLwwIBA38jAEEQayIBJABBvL/IAC0AAEEDRwRAIAFBAToADiABQQ5qIQAC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ACgCACICBEAgACgCBCIAQQRrKAIAIgFBeHEiA0EEQQggAUEDcSIBGyACakkNASABQQAgAyACQSdqSxsNAiAAEKICCw8LQaSCxwBBLkHUgscAEKgJAAtB5ILHAEEuQZSDxwAQqAkAC28BAX8jAEEQayIFJAAgAUUEQEGcocQAQTIQ3QoACyAFQQhqIAEgAyAEIAIoAhARBgAgACAFKAIIIgJBAkYiATYCCCAAIAUoAgwiA0EAIAEbNgIEIABBACADQYAIIAJBAXEbIAEbNgIAIAVBEGokAAtoAQF/IwBBIGsiAiQAIAIgACgCACgCACIANgIIIAIgAGg2AgwgAiACQQxqrUKAgICAgA+ENwMYIAIgAkEIaq1CgICAgJAPhDcDECABKAIAIAEoAgRBlvnAACACQRBqEM4DIAJBIGokAAt9AwF/AX4BfCMAQRBrIgMkAAJAAkACQAJAIAAoAgBBAWsOAgECAAsgACsDCCEFIANBAzoAACADIAU5AwgMAgsgACkDCCEEIANBAToAACADIAQ3AwgMAQsgACkDCCEEIANBAjoAACADIAQ3AwgLIAMgASACELIHIANBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQRgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQwQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQQQzgYgASgCBEEBRgRAIAEoAgggASgCDBCaCQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgC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BEAgASgCACAAIAAtAAwiA2ogAiADayABKAIEKAIMEQAADwsgASgCACAAKAIAIAEoAgQoAhARAgALQwEBfyMAQRBrIgIkACACQQhqIAEoAggiASABKAIAKAIEEQEAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAtKAQF/QSgQbiICRQRAQSgQsQoACyACQaimwQA2AgAgAiABKQIANwIEIAIgAf0AAgj9CwIMIAIgACkCADcCHCACIAAoAgg2AiQgAgulDQMHfwV+AXwgASgCCCIDQYCAgAFxIQIgACsDACEOIANBgICAgAFxRQRAIAJBAEchBEEAIQMjAEGAAWsiACQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIFGyIKQgGDIQ1BAiECAkACQAJAAkACQCAMUCIGQQJBAyAGG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyECDAMLQQQhAgwCCyAFQbMIayEDIA1QIQJCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiAxshCkICQgEgAxshCyANUCECQct3Qcx3IAMbIAVqIQMLIAAgAzsBeCAAIAs3A3AgAEIBNwNoIAAgCjcDYCAAIAI6AHoCfwJAAkACQAJAIAJB/wFxQQFNBEBB2snEAEEBIAlCAFMiAhshA0HaycQAQcSNwgAgAhshAiAJQj+IpyEFIABBIGogAEHgAGogAEEPahDVASAAKAIgRQ0BIAAgACgCKDYCWCAAIAApAiA3A1AMAgsgAkECayIFQf8BcUUNAkEBIQJB2snEAEHEjcIAIAlCAFMiAxtB2snEAEEBIAMbIAQbIQMgCUI/iKcgBHIhBCAAQQI7ASAgBUH/AXFBAkYNAyAAQQM2AiggAEGYssUANgIkIABBIGoMBAsgAEHQAGogAEHgAGogAEEPahBdCyACIAMgBBshAyAEIAVyIQQgACAAKAJQIAAoAlQgAC8BWEEAIABBIGoQhwUgACgCBCECIAAoAgAMAgsgAEEDNgIoIABBn7LFADYCJCAAQQI7ASBBASEDQQAhBEEBIQIgAEEgagwBCyAAQQE2AiggAEGoysQANgIkIABBIGoLIQUgACACNgJcIAAgBTYCWCAAIAQ2AlQgACADNgJQIAEgAEHQAGoQyQMgAEGAAWokAA8LIAJBAEchBSABLwEOIQAjAEHwCGsiAiQAIA69IglC/////////weDIgxCgICAgICAgAiEIAlCAYZC/v///////w+DIAlCNIinQf8PcSIGGyIKQgGDIQ1BAiEDAkACQAJAAkACQCAMUCIHQQJBAyAHG0EEIAlCgICAgICAgPj/AIMiDFAbIAxCgICAgICAgPj/AFEbQQFrDgQAAQIDBAtBAyEDDAMLQQQhAwwCCyAGQbMIayEEIA1QIQNCASELDAELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiBBshCkICQgEgBBshCyANUCEDQct3Qcx3IAQbIAZqIQQLIAIgBDsB6AggAiALNwPgCCACQgE3A9gIIAIgCjcD0AggAiADOgDqCAJ/AkAgA0H/AXFBAU0EQEF0QQUgBMEiA0EASBsgA2wiA0HA/QBJDQFByo3CAEElQfCNwgAQqAkACwJAAkAgA0ECayIGQf8BcQRAQQEhA0HaycQAQcSNwgAgCUIAUyIEG0HaycQAQQEgBBsgBRshBCAJQj+IpyAFciEFIAZB/wFxQQJHDQEgAkECOwGQCCAADQIgAkEBNgKYCCACQajKxAA2ApQIIAJBkAhqDAQLIAJBAzYCmAggAkGfssUANgKUCCACQQI7AZAIQQEhBEEAIQVBASEDIAJBkAhqDAMLIAJBAzYCmAggAkGYssUANgKUCCACQQI7AZAIIAJBkAhqDAILIAIgADYCoAggAkEAOwGcCEECIQMgAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqDAELQdrJxABBASAJQgBTIgYbIQdB2snEAEHEjcIAIAYbIAlCP4inIQggAkGQCGogCiAEIAJBEGogA0EEdkEVaiIEQYCAfkEAIABrIADBQQBIGyIDEO8CIAPBIQMCQCACKAKQCARAIAIgAigCmAg2AsgIIAIgAikCkAg3A8AIDAELIAJBwAhqIAJB0AhqIAJBEGogBCADEGYLIAcgBRshBCAFIAhyIQUgAyACLgHICCIGSARAIAJBCGogAigCwAggAigCxAggBiAAIAJBkAhqEIcFIAIoAgwhAyACKAIIDAELQQIhAyACQQI7AZAIIABFBEBBASEDIAJBATYCmAggAkGoysQANgKUCCACQZAIagwBCyACIAA2AqAIIAJBADsBnAggAkECNgKYCCACQcWNwgA2ApQIIAJBkAhqCyEAIAIgAzYCzAggAiAANgLICCACIAU2AsQIIAIgBDYCwAggASACQcAIahDJAyACQfAIaiQAC0sAIAAoAgBBgICAgHhHBEAgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAA8LIAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBDOAwuFAQECfyMAQTBrIgEkACABEJsJIAFBIjYCHCABQZTvwQA2AhggASAA/QACAP0LAiAgAUEYaiECQTQQbiIARQRAQTQQsQoACyAAQYymwQA2AgAgACABKQIANwIEIAAgAf0AAgj9CwIMIAAgAikCADcCHCAAIAL9AAII/QsCJCABQTBqJAAgAAvEAgEIfyMAQRBrIgQkACAEQQhqIQcgACgCACEBIwBBEGsiAyQAIANBBGohAiAAKAIEIQgCQAJAQQQgAUEBaiIBIAAoAgAiBUEBdCIGIAEgBksbIgEgAUEETRsiBiIBQf////8ASw0AIAFBBHQiAUH8////B0sNAAJ/IAUEQCAIIAVBBHRBBCABEMACDAELIAEQbgsiBUUEQCACIAE2AgggAkEENgIEIAJBATYCAAwCCyACIAE2AgggAiAFNgIEIAJBADYCAAwBCyACQQA2AgQgAkEBNgIACwJ/IAMoAgQEQCADKAIMIQAgAygCCAwBCyADKAIIIQIgACAGNgIAIAAgAjYCBEGBgICAeAshAiAHIAA2AgQgByACNgIAIANBEGokACAEKAIIIgBBgYCAgHhHBEAgACAEKAIMEJoJAAsgBEEQaiQAC+ABAgF/AX4jAEEgayIDJAAgAyABNgIQIAMgADYCDCADQQE7ARwgAyACNgIYIAMgA0EMajYCFCMAQRBrIgEkACADQRRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIEIgNBAXEEQCACKAIAIQIgACADQQF2NgIEIAAgAjYCACAAQcCBxwAgASgCBCABKAIIIgAtAAggAC0ACRDcBQALIABBgICAgHg2AgAgACABNgIMIABB3IHHACABKAIEIAEoAggiAC0ACCAALQAJENwFAAs7AQF/IwBBEGsiAyQAIAMgATYCBCADIAA2AgAgAyADrUKAgICAwAGENwMIQZSbwAAgA0EIaiACEJMIAAtBAAJAIAAoAiQiACgCBEEDRwRAIABBBGohAAwBCyAAIAAoAgAoAhgRBAAiAA0AQfj8wQBBGEGQ/cEAEJQIAAsgAAv8QwImfwJ+IAAoAsQBIgJBBE8EQCAAKALAASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGoxAABC7gCFhEIAUg0TIAohAAJAA0AgAUEvIAwgABD2BEEBIR8gASgCAEEBRwRAQQAhBgwCCwJAIAogASgCBCIASwRAIAAgDGotAABBL0YNAQtBACEGIAAgCk0NAQwCCwsgASAANgLsBCABIAw2AugEIAEgAUHoBGqtQoCAgIAghDcDeCABQfACakHt78AAIAFB+ABqEOAEIAEoAvACIR4gASgC9AIhHyABKAL4AiEGCyABQfACaiABQRhqIAwgChDhBCABIAEpA/gCNwNQIAEgASgCgAM2AlgCQCABKQPwAiInQgNRBEAgAUHQAGoQvwghAAwBCyABQYwBaiABQYQDakG0AfwKAAAgASAnNwN4IAEgASkDUDcDgAEgASABKAJYNgKIASAB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EMEHCyABKALECCICBEAgASgCyAggAkEBEMEHCyABKALIByICQYCAgIB4RyAEcUUNACACBEAgASgCzAcgAkEBEMEHCyABKALUByICRQ0AIAEoAtgHIAJBARDBBwsgAUHoBGoQ/AMgASgCXCICBEAgASgCYCACQQEQwQcLICAEQCAhICBBARDBBwsgHgRAIB8gHkEBEMEHCyALIApBARDBByABKAIoIgIgAigCACICQQFrNgIAIAJBAUcNByABKAIoEP0CDAcLIAtBBGsoAgAiBUF4cSIIQQRBCCAFQQNxIgUbIApqSQ0EIAVBACAIIApBJ2pLGw0FIAsQogILIAYgAkEBaiICRw0ACwtBtu/BAEEfELQIIQALIAEoAigiAiACKAIAIgJBAWs2AgAgAkEBRw0CIAEoAigQ/QIMAgtBpILHAEEuQdSCxwAQqAkAC0HkgscAQS5BlIPHABCoCQALIAFBkApqJAAgAA8LQZjPwQBBExC0CA8LQavPwQBBExC0CAv8QwImfwJ+IAAoAoACIgJBBE8EQCAAKAL8ASIKKAAAQdCWjSBGBEAgACEJIwBBkAprIgEkACABQgA3AxAgASACNgIMIAEgCjYCCCABQfACaiABQQhqEDkgASABKQL0AjcDMCABIAEoAvwCNgI4AkAgASgC8AIiAEUEQCABQTBqEL8IIQAMAQsgASABKQMwNwIcIAEgASgCODYCJCABIAEpA4ADIic3AyggASAANgIYAkACQAJAICenKAJAIgUEQCABQYwBaiEEIAFBgAFqIQAgAUGEA2ohByABQfgCaiEGQQAhAgNAIAFBADoA8AQgAUEANgLoBCABQfACaiABQRhqIAIgAUHoBGoQqwEgASAGKQMANwNAIAEgBigCCDYCSCABKQPwAiInQgNRBEAgAUFAaxC/CCEADAMLIAQgB0G0AfwKAAAgACABKAJINgIIIAAgASkDQDcDACABICc3A3gCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAoABIAFB+ABqIgwgJ0ICURsiAygCLCIKQQBOBEAgCkUEQCAMEIECDBULIAMoAighAyAKEG4iDEUNASAKBEAgDCADIAr8CgAACyABQfgAahCBAiAKQQlJDRMgCiAMakEJayIDKQAAQu3K0Yvmxdq57wCFIANBCGox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KALEBSACQQEQwQcLIAEoAswFIgIEQCABKALQBSACQQEQwQcLIAEoAtgFIgJFDQ4gASgC3AUgAkECdEEEEMEHDA4LIAFBADoA+AIgASAGNgL0AiABIAI2AvACIAkgAUHwAmoiCBCrAyAIIAFBjAVqIAEoAvwGIAEoAoAHENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYNACAIIAAgASgC+AIQQSABKAL0AiENIAEoAvACIg5BgICAgHhGBEAgAUEDNgLwAiABIA02AoAKIAFBDzYC/AkgAUHy8cEANgL4CSABQfgJaiAIEI4IIQIgA0UEQCACIQAMAgsgACADQQEQwQcgAiEADAELIAEoAvgCIQggAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKAKIByABKAKMBxDQBCABKAL0AiEAIAEoAvACIgNBgICAgHhGBEBBASEFQQEhBAwLCyABQfACaiILIAAgASgC+AIQQSABKAL0AiEPIAEoAvACIhBBgICAgHhGBEAgAUEDNgLwAiABIA82AoAKIAFBDzYC/AkgAUGB8sEANgL4CSABQfgJaiALEI4IIQJBASEFIANFDQogACADQQEQwQcMCgsgASgC+AIhCyADBEAgACADQQEQwQcLIAFB8AJqIAFBjAVqIAEoAqQIIAEoAqgIENAEIAEoAvQCIQAgASgC8AIiA0GAgICAeEYEQEEBIQVBASEEDAkLIAFB8AJqIhkgACABKAL4AhBBIAEoAvQCIREgASgC8AIiEkGAgICAeEYEQCABQQM2AvACIAEgETYCgAogAUENNgL8CSABQZDywQA2AvgJIAFB+AlqIBkQjgghAkEBIQUgA0UNCCAAIANBARDBBwwICyABKAL4AiEZIAMEQCAAIANBARDBBwsgAUHwAmogAUGMBWogASgCtAcgASgCuAcQ0AQgASgC9AIhACABKALwAiIDQYCAgIB4RgRAQQEhBUEBIQQMBwsgAUHwAmoiGiAAIAEoAvgCEEEgASgC9AIhEyABKALwAiIUQYCAgIB4RgRAIAFBAzYC8AIgASATNgKACiABQQw2AvwJIAFBnfLBADYC+AkgAUH4CWogGhCOCCECQQEhBSADRQ0GIAAgA0EBEMEHDAYLIAEoAvgCIRogAwRAIAAgA0EBEMEHCyABQfACaiABQYwFaiABKALICCABKALM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CyUAIABBsJzBADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALKAAgASgCACAALQAAQQJ0IgAoAoiMSCAAKALgi0ggASgCBCgCDBEAAAsoACABKAIAIAAtAABBAnQiACgCoI1IIAAoAuiMSCABKAIEKAIMEQAACyEAIABB0PvDADYCBCAAIAFBBGpBACABLQAAQSRGGzYCAAsoACABKAIAIAAtAABBAnQiACgCrJJIIAAoApCSSCABKAIEKAIMEQAACygAIAEoAgAgAC0AAEECdCIAKAKQlEggACgCyJNIIAEoAgQoAgwRAAALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARCwALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARBgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbQALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbgALIwAgAEUEQEGcocQAQTIQ3QoACyAAIAIgAyAEIAEoAhARbwALKAAgASgCACAALQAAQQJ0IgAoAqihSCAAKALgoEggASgCBCgCDBEAAAsiACABKAIoQQJHBEAgACABKQLcAjcDAA8LQdivxgAQmQoACyUAIABBjLnGADYCBCAAIAFBBGpBACABKAIAQYGAgIB4Rhs2AgALJwAgACgCAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCygAIAEoAgAgAC0AAEECdCIAKAKss0ggACgChLJIIAEoAgQoAgwRAAALJAAgAC0AAEUEQCABQbDLxABBBRCuAw8LIAFBtcvEAEEEEK4DCyEAIABFBEBBnKHEAEEyEN0KAAsgACACIAMgASgCEBEFAAshACAARQRAQZyhxABBMhDdCgALIAAgAiADIAEoAhARAAALHAAgACgCACIAQQRqKAIAIABBCGooAgAgARDBAgshACABKAIAIAAtAABBAnQoAtSLSEEBIAEoAgQoAgwRAAALIgAgASAALQAAQQJ0IgAoAuiPSCAAKALIj0ggAigCDBEAAAseACAAQdD7wwA2AgQgAEEAIAFBBGogAS0AABs2AgALHAAgASAAKAIAIgBBBGooAgAgAEEIaigCABCuAwsfACAARQRAQZyhxABBMhDdCgALIAAgAiAB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//sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEDaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRBqKAIAIgNB////+wdNBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQRqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBFGooAgAiA0H////7B00EQEHEvcgAKAIAIANBf3MiA0H//wNxQQJ0IgVBrL3IACgCAGooAgBBA3RqIABBBWqsIAOtQiCGhDcDAEGsvcgAKAIAIAVqIgMgAygCAEEBajYCAAsgBEEYaigCACIDQf////sHTQRAQcS9yAAoAgAgA0F/cyIDQf//A3FBAnQiBUGsvcgAKAIAaigCAEEDdGogAEEGaqwgA61CIIaENwMAQay9yAAoAgAgBWoiAyADKAIAQQFqNgIACyAEQRxqKAIAIgNBgICA/AdJBEBBxL3IACgCACADQX9zIgNB//8DcUECdCIFQay9yAAoAgBqKAIAQQN0aiAAQQdqrCADrUIghoQ3AwBBrL3IACgCACAFaiIDIAMoAgBBAWo2AgALIARBIGohBCAAQQhqIgAgD0cNAAsMBAtBACALIABB8MPBABCgBQALQQAgCUEYaiAJQTBqQQAgAEHQocQAEKAIAAtBACALIARBqMDBABCgBQALQZSRwQAQtggACyALBEADQCAIKAIAIgRBgICA/AdJBEBBxL3IACgCACAEQX9zIgRB//8DcUECdCIDQay9yAAoAgBqKAIAQQN0aiAArCAErUIghoQ3AwBBrL3IACgCACADaiIEIAQoAgBBAWo2AgALIAhBBGohCCAAQQFqIQAgC0EEayILDQALCwJAAkACQAJAAkBByL3IACgCACIAIAZPBEBBxL3IACgCACELIAZB+P///wBxIggEQEEAIAhrIQAgCyEEA0BBoL3IACgCACAEKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiIDIAMoAgBBAWo2AgBBoL3IACgCACAEQQhqKQMAIhJCMIinQQJ0IgNBuL3IACgCAGooAgBBAnRqIBI+AgBBuL3IACgCACADaiID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AEEBayIANgIAIABFBEAgAhD/BgsMAwsQ3AoLAAsQ3goACwsRACABIAAoAgQgACgCCBCuAwsRACABIAAoAgAgACgCBBCuAwsTACAAQSg2AgQgAEH4tMYANgIACxMAIABBlKHBADYCBCAAIAE2AgALEwAgAEHQocEANgIEIAAgATYCAAsTACAAQYyiwQA2AgQgACABNgIACxMAIABByKLBADYCBCAAIAE2AgALEwAgAEGEo8EANgIEIAAgATYCAAsTACAAQcCjwQA2AgQgACABNgIACxMAIABB/KPBADYCBCAAIAE2AgALEwAgAEG4pMEANgIEIAAgATYCAAsRACAAKAIEIAAoAgggARDBAgscACAAQZi7z+wDNgIIIABC0Ofm8pPrxZs/NwIACxEAIAAoAgAgACgCBCABEMECCxMAIABB5MTGADYCBCAAIAE2AgALEwAgAEHUxsYANgIEIAAgATYCAAsTACAAQdzFxgA2AgQgACABNgIACxMAIABBmMbGADYCBCAAIAE2AgALEwAgAEGoxMYANgIEIAAgATYCAAsTACAAQaDFxgA2AgQgACABNgIACxMAIABB7MPGADYCBCAAIAE2AgALEwAgAEH8jMcANgIEIAAgATYCAAsWAEGUxMgAIAA2AgBBkMTIAEEBOgAACxEBAX8QnwUiASAAJQEmASABCw4AIAAlASABJQFBABAZCxIAQYipxgBBI0HQ+sEAEJMIAAsPAEGwkMIAQSsgABCoCQALEAAgAEHYmcEAIAEgAhDOAwsQACAAQcidwQAgASACEM4DCxMAQZCswgBBmQFB3KzCABCTCAALDwBB1J7CAEEzIAAQkwgACxAAIABBgPvBACABIAIQzgMLEAAgAEG4+8EAIAEgAhDOAwsQACAAQaz8wQAgASACEM4DCxAAIABBrP3BACABIAIQzgMLEAAgAEGIj8IAIAEgAhDOAwsQAEHtnsIAQfMAIAAQkwgACxAAIABB1OnDACABIAIQzgMLEAAgAEGsz8QAIAEgAhDOAwsQACAAQcinxQAgASACEM4DCxAAIABBpLLFACABIAIQzgMLEgAgACABLQDoBC0AsKZIOgAACxAAIABB4L/GACABIAIQzgMLEAAgAEGogccAIAEgAhDOAwsMACAAJQEgASACEAQLDQAgACUBIAElARAHGgsMACAAIAEgAiUBEBEL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IG5lZWQgYXQgbGVhc3QgwAAJRXhwZWN0ZWQgwBcgYWN0aXZlIHNwbGF0cyBidXQgZ290IMAACUV4cGVjdGVkIMANIHNwbGF0cywgZ290IMAACUV4cGVjdGVkIMARIFNIIHJlY29yZHMsIGdvdCDAAB5JbnZhbGlkIGNodW5rIGNvdW50OiBleHBlY3RlZCDABiwgZ290IMAAI1Byb3BlcnR5IG9mZnNldCBtaXNtYXRjaDogZXhwZWN0ZWQgwAYsIGdvdCDAABp3cm9uZyBkYXRhIHNpemUsIGV4cGVjdGVkIMAFIGdvdCDAABxNaXNzaW5nIFBMWSBjaHVuayBmb3Igc3BsYXQgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAFWJ5dGUgcmFuZ2Ugc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABBUaGUgZGVjb2RlciBmb3IgwCYgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9ybWF0IGZlYXR1cmVzIMAAEWludmFsaWQgc2l6ZSBmb3IgwADACSBhdCBsaW5lIMAIIGNvbHVtbiDAABpJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIMAAEXN0YXJ0IGJ5dGUgaW5kZXggwCcgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc3RyaW5nIG9mIGxlbmd0aCDAAA9lbmQgYnl0ZSBpbmRleCDAJyBpcyBvdXQgb2YgYm91bmRzIGZvciBzdHJpbmcgb2YgbGVuZ3RoIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAAdzdHJpbmcgwAAWRm9ybWF0IGVycm9yIGVuY29kaW5nIMAAFkZvcm1hdCBlcnJvciBkZWNvZGluZyDAABJVbmV4cGVjdGVkIGVuZCBvZiDAADBUaGUgZGVjb2RlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb3JtYXQgZmVhdHVyZSDAABBUaGUgY29sb3Igc3BhY2UgwB0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIMAAEXVua25vd24gdmFyaWFudCBgwAxgLCBleHBlY3RlZCDAAA9pbnZhbGlkIGxlbmd0aCDACywgZXhwZWN0ZWQgwAAPaW52YWxpZCB2YWx1ZTogwAssIGV4cGVjdGVkIMAADmludmFsaWQgdHlwZTogwAssIGV4cGVjdGVkIMAAHGJhc2UgKyBjb3VudCBvdXQgb2YgYm91bmRzOiDAAyArIMADID4gwAARbWluID4gbWF4LiBtaW4gPSDACCwgbWF4ID0gwAAgb3V0cHV0IGJhdGNoIGNodW5rLCBjaHVua19yZWwgPSDAAB9JbmNvbXBsZXRlIFNQWiBzdHJlYW06IHN0YWdlID0gwA4sIHNoX2RlZ3JlZSA9IMAAGW9wYWNpdHkgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFnF1YXQgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAGGNlbnRlciBhcnJheSB0b28gc21hbGw6IMADIDwgwAAXc2NhbGUgYXJyYXkgdG9vIHNtYWxsOiDAAyA8IMAAFXJnYiBhcnJheSB0b28gc21hbGw6IMADIDwgwAAMUm9vdCBpbmRleDogwAAGUm9vdDogwAAQYXNzZXJ0aW9uIGBsZWZ0IMAXIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiDACQogcmlnaHQ6IMAAEGFzc2VydGlvbiBgbGVmdCDAECByaWdodGAgZmFpbGVkOiDACQogIGxlZnQ6IMAJCiByaWdodDogwAAYVW5zdXBwb3J0ZWQgUExZIGZvcm1hdDogwAAMUm9vdCBzcGxhdDogwAAlQXZlcmFnZSBjaGlsZHJlbiBwZXIgaW50ZXJpb3Igc3BsYXQ6IMAAGkludmFsaWQgY29sb3IgY2FjaGUgYml0czogwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAwsICMgYWN0aXZlOiDADCwgIyBzcGxhdHM6IMAAJUludmFsaWQgbnVtYmVyIG9mIGZfcmVzdCBwcm9wZXJ0aWVzOiDAABNMb0QgZ3Jvd3RoIGZhY3RvcjogwAALaS9vIGVycm9yOiDAAApJTyBFcnJvcjogwAATSW52YWxpZCBwYXJhbWV0ZXI6IMAAIUludmFsaWQgbG9zc2xlc3MgdmVyc2lvbiBudW1iZXI6IMAAH1Vuc3VwcG9ydGVkIFJBRCBjaHVuayB2ZXJzaW9uOiDAABlVbnN1cHBvcnRlZCBTUFogdmVyc2lvbjogwAAZVW5zdXBwb3J0ZWQgUExZIHZlcnNpb246IMAAGVVuc3VwcG9ydGVkIFJBRCB2ZXJzaW9uOiDAABBSb290ICNjaGlsZHJlbjogwAAPdW5rbm93biB0b2tlbjogwAAdVW5yZWNvZ25pemVkIGNyaXRpY2FsIGNodW5rOiDAABRDaHVuayBsZW5ndGggd3Jvbmc6IMAAIlVuc3VwcG9ydGVkIGNoaWxkIHN0YXJ0IGVuY29kaW5nOiDAACJVbnN1cHBvcnRlZCBjaGlsZCBjb3VudCBlbmNvZGluZzogwAAdVW5zdXBwb3J0ZWQgc2NhbGVzIGVuY29kaW5nOiDAAB1VbnN1cHBvcnRlZCBjZW50ZXIgZW5jb2Rpbmc6IMAAIlVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIGVuY29kaW5nOiDAAB9VbnN1cHBvcnRlZCBzaCBsYWJlbCBlbmNvZGluZzogwAAcVW5zdXBwb3J0ZWQgbGFiZWwgZW5jb2Rpbmc6IMAAGVVuc3VwcG9ydGVkIHNoIGVuY29kaW5nOiDAABpVbnN1cHBvcnRlZCByZ2IgZW5jb2Rpbmc6IMAAHFVuc3VwcG9ydGVkIGFscGhhIGVuY29kaW5nOiDAAA9Tb3J0ZWQgYWN0aXZlOiDAABVpbnZhbGlkIFppcCBhcmNoaXZlOiDAABl1bnN1cHBvcnRlZCBaaXAgYXJjaGl2ZTogwAAVVW5zdXBwb3J0ZWQgZmVhdHVyZTogwAAfVW5zdXBwb3J0ZWQgUExZIHByb3BlcnR5IHR5cGU6IMAAE0ludmFsaWQgZmlsZSB0eXBlOiDAABdJbnZhbGlkIHByb3BlcnR5IGxpbmU6IMAAHVVuc3VwcG9ydGVkIFBMWSBoZWFkZXIgbGluZTogwAATSW52YWxpZCBTSCBkZWdyZWU6IMAAI0ludmFsaWQgVlA4IGludHJhIHByZWRpY3Rpb24gbW9kZTogwAAiSW52YWxpZCBWUDggbHVtYSBwcmVkaWN0aW9uIG1vZGU6IMAAJEludmFsaWQgVlA4IGNocm9tYSBwcmVkaWN0aW9uIG1vZGU6IMAAGUludmFsaWQgVlA4IGNvbG9yIHNwYWNlOiDAABxUaGUgcGFyYW1ldGVyIGlzIG1hbGZvcm1lZDogwAAWRGVjb21wcmVzc2lvbiBmYWlsZWQ6IMAAC2xldmVsX21pbjogwBMsIGZlYXR1cmVfc2l6ZVswXTogwAATZmFpbGVkIHByaW50aW5nIHRvIMACOiDAABZGb3JtYXQgZXJyb3IgZGVjb2RpbmcgwAI6IMAADE91dHB1dCBzZXQ6IMADIC8gwAAHTGV2ZWw6IMAILCBzdGVwOiDADCwgZnJvbnRpZXI6IMADIC8gwAAITWVyZ2VkOiDAAyAvIMAAFkZvcm1hdCBlcnJvciBlbmNvZGluZyDAAjoKwAABCsAAaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0AGludmFsaWQgY29kZSBsZW5ndGhzIHNldAB1bmtub3duIGhlYWRlciBmbGFncyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0ABNUaGUgZmlsZSBleHRlbnNpb24gwCYgd2FzIG5vdCByZWNvZ25pemVkIGFzIGFuIGltYWdlIGZvcm1hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AHNwYXJrLWxpYi9zcmMvc3B6LnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvc3RyL2xvc3N5LnJzAHNwYXJrLWxpYi9zcmMvcGx5LnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI3L3NyYy9sZWdhY3kucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL3N0ZXBfYnkucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2FsbC90d293YXkucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dpbmRvdy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy95dXYucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZ3Jpc3UucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAc3BhcmstcnMvc3JjL3NvcnQucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2ZtdC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZGl5X2Zsb2F0LnJzAHNwYXJrLWxpYi9zcmMvdHNwbGF0LnJzAHNwYXJrLWxpYi9zcmMva3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvYW50aXNwbGF0LnJzAHNwYXJrLWxpYi9zcmMvZ3NwbGF0LnJzAHNwYXJrLWxpYi9zcmMvY3NwbGF0LnJzAHNwYXJrLXJzL3NyYy9leHRfc3BsYXRzLnJzAHNwYXJrLXJzL3NyYy9wYWNrZWRfc3BsYXRzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9kZWNvbXByZXNzLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2xvc3NsZXNzLnJzAHNwYXJrLWxpYi9zcmMvc29ncy5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL2luZnRyZWVzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvdGhyZWFkX2xvY2FsL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL3J3bG9jay9ub190aHJlYWRzLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2FueWhvdy0xLjAuOTgvc3JjL2Vycm9yLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZXJyb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvY29sb3IucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2dlbmVyaWMvcGFja2VkcGFpci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21lbWNoci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb29wX2ZpbHRlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlL3dyaXRlci5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMy4wL3NyYy9pbm5lci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvaW5mbGF0ZS9vdXRwdXRfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvdW5maWx0ZXJpbmdfYnVmZmVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLTAuMjUuMTAvc3JjL2ltYWdlcy9idWZmZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9yZWFkX2RlY29kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvdnA4X2FyaXRobWV0aWNfZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3Mvd2VicC9kZWNvZGVyLnJzAHNwYXJrLWxpYi9zcmMvZGVjb2Rlci5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9kZWNvZGVyLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC9tYWdpY19maW5kZXIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvbWV0YWRhdGEvY2ljcC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvaW8vc3RkaW8ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wbmctMC4xOC4xL3NyYy9jb21tb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ZkZWZsYXRlLTAuMy43L3NyYy9odWZmbWFuLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2ltYWdlLXdlYnAtMC4yLjQvc3JjL2h1ZmZtYW4ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2JpZ251bS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy9sb3NzbGVzc190cmFuc2Zvcm0ucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0ucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL2J1ZmZlcmVkL2xpbmV3cml0ZXJzaGltLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BuZy0wLjE4LjEvc3JjL2RlY29kZXIvc3RyZWFtLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL3JlZW50cmFudF9sb2NrLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2VfbG9jay5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS0wLjI1LjEwL3NyYy9jb2RlY3MvcG5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTE3L3NyYy9leHRlcm5yZWYucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci90cmFuc2Zvcm0vcGFsZXR0ZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi96bGliLXJzLTAuNi4zL3NyYy9pbmZsYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2FsbG9jYXRlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL2NvcmUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2UtMC4yNS4xMC9zcmMvaW8vaW1hZ2VfcmVhZGVyX3R5cGUucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemxpYi1ycy0wLjYuMy9zcmMvc3RhYmxlLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAc3BhcmstbGliL3NyYy9jaHVua190cmVlLnJzAHNwYXJrLXJzL3NyYy9sb2RfdHJlZS5ycwBzcGFyay1saWIvc3JjL3NwbGF0X2VuY29kZS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0NS9zcmMvZGUucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L2NvcmUvc3JjL2JzdHIvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci9tb2QucnMAL3J1c3RjL2FjNjhmYWEyMGM1OGNiY2NkMDFlZTcyMDhiZjNiNmU5M2E3ZDdmOTYvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvYWM2OGZhYTIwYzU4Y2JjY2QwMWVlNzIwOGJmM2I2ZTkzYTdkN2Y5Ni9saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2NvcmUtMS4wLjIyOC9zcmMvZGUvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9mbHQyZGVjL21vZC5ycwBzcGFyay1saWIvc3JjL3RpbnlfbG9kLnJzAHNwYXJrLWxpYi9zcmMvYmhhdHRfbG9kLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3psaWItcnMtMC42LjMvc3JjL2NyYzMyL2JyYWlkLnJzAC9ydXN0Yy9hYzY4ZmFhMjBjNThjYmNjZDAxZWU3MjA4YmYzYjZlOTNhN2Q3Zjk2L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvaWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW1hZ2Utd2VicC0wLjIuNC9zcmMvZXh0ZW5kZWQucnMAc3BhcmstbGliL3NyYy9yYWQucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ1L3NyYy9yZWFkLnJzAC9ob21lL3Nwby8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3ppcC03LjIuMC9zcmMvcmVhZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvZGVjb2Rlci96bGliLnJzAHNwYXJrLXJzL3NyYy9saWIucnMAL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjk0L3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hbGx2ZWMtMS4xNS4xL3NyYy9saWIucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvdGV4dF9tZXRhZGF0YS5ycwAvaG9tZS9zcG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbWFnZS13ZWJwLTAuMi40L3NyYy92cDgucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcG5nLTAuMTguMS9zcmMvYWRhbTcucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcDQzNy5ycwBzcGFyay1saWIvc3JjL3N5bW1hdDMucnMAL2hvbWUvc3BvLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvemlwLTcuMi4wL3NyYy9jcmMzMi5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNy9zcmMvdjAucnMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAJVGhlIENJQ1AgwB8gY2FuIG5vdCBiZSB1c2VkIGZvciBSR0IgaW1hZ2VzAMAsIGNhbid0IGJlIHJlcHJlc2VudGVkIGFzIGEgSmF2YVNjcmlwdCBudW1iZXIADU1pc3NpbmcgZmlsZSDADCBpbiBTT0dTIHppcADAECBlbGVtZW50cyBpbiBtYXAAPWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFVucmVjb2duaXplZCBjaHVuayDAJyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBpbiBzdGFydF9jaHVuawDAISBjaHVuayBhcHBlYXJlZCBiZWZvcmUgSUhEUiBjaHVuawBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW52YWxpZCB3aW5kb3cgc2l6ZQByZXBlYXRlZCBjYWxsIHdpdGggYmFkIHN0YXRlAGludmFsaWQgYmxvY2sgdHlwZQANTWlzc2luZyBmaWxlIMAJIGluIGNhY2hlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAwBUgZWxlbWVudHMgaW4gc2VxdWVuY2UAFlVuZXhwZWN0ZWQgcmVzdGFydCBvZiDADyBjaHVuayBzZXF1ZW5jZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZAA5aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogc3RyOjpmcm9tX3V0ZjgowAQpID0gwCIgd2FzIGV4cGVjdGVkIHRvIGhhdmUgMSBjaGFyLCBidXQgwBEgY2hhcnMgd2VyZSBmb3VuZAAoQ29udmVydGluZyB3aXRoIHRoZSB0ZXhlbCBtZW1vcnkgbGF5b3V0IMARIGlzIG5vdCBzdXBwb3J0ZWQAEVRoZSBpbWFnZSBmb3JtYXQgwBEgaXMgbm90IHN1cHBvcnRlZAAQZmxvYXRpbmcgcG9pbnQgYMABYABMVGhlIGNvbG9yaW1ldHJpYyBpbnRlcnByZXRhdGlvbiBvZiBhIENJQ1AgY29sb3Igc3BhY2UgaXMgbm90IHN1cHBvcnRlZCBmb3IgYMABYAABYMAGYCBvciBgwAFgAAtjaGFyYWN0ZXIgYMABYAAJaW50ZWdlciBgwAFgAAlib29sZWFuIGDAAWAAG1RoZSBlbmNvZGVyIG9yIGRlY29kZXIgZm9yIMAiIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbG9yIHR5cGUgYMABYAAPbWlzc2luZyBmaWVsZCBgwAFgABFkdXBsaWNhdGUgZmllbGQgYMABYAABYMABYAACYC7AAWAAAVvAAV0AwAEvAAZDaHVuayDAKiBtdXN0IGFwcGVhciBiZXR3ZWVuIFBMVEUgYW5kIElEQVQgY2h1bmtzLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBJREFUIGNodW5rLgAGQ2h1bmsgwB0gaXMgaW52YWxpZCBhZnRlciBQTFRFIGNodW5rLgAGQ2h1bmsgwB4gaXMgaW52YWxpZCBiZWZvcmUgUExURSBjaHVuay4AFkNSQyBlcnJvcjogZXhwZWN0ZWQgMHjACCBoYXZlIDB4wBAgd2hpbGUgZGVjb2RpbmcgwAcgY2h1bmsuACVUaGUgc2l6ZSBvZiB0aGUgc0JJVCBjaHVuayBzaG91bGQgYmUgwA4gYnl0ZShzKSwgYnV0IMAfIGJ5dGUocykgd2VyZSBwcm92aWRlZCBmb3IgdGhlIMAMIGNvbG9yIHR5cGUuAAZDaHVuayDAGiBtdXN0IGFwcGVhciBhdCBtb3N0IG9uY2UuACRTZXF1ZW5jZSBpcyBub3QgaW4gb3JkZXIsIGV4cGVjdGVkICPABiBnb3QgI8ABLgAjTm90IGVub3VnaCBwYWxldHRlIGVudHJpZXMsIGV4cGVjdCDABSBnb3QgwAEuAB5JbnZhbGlkIHNSR0IgcmVuZGVyaW5nIGludGVudCDAAS4AIUludmFsaWQgcGh5c2ljYWwgcGl4ZWwgc2l6ZSB1bml0IMABLgATSW52YWxpZCBkaXNwb3NlIG9wIMABLgARSW52YWxpZCBibGVuZCBvcCDAAS4AEkludmFsaWQgYml0IGRlcHRoIMABLgATSW52YWxpZCBzQklUIHZhbHVlIMA+LiBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gdGhlIHNhbXBsZSBkZXB0aCDAAS4AKFRyYW5zcGFyZW5jeSBjaHVuayBmb3VuZCBmb3IgY29sb3IgdHlwZSDAAS4AE0ludmFsaWQgY29sb3IgdHlwZSDAAS4AFlVua25vd24gZmlsdGVyIG1ldGhvZCDAAS4AG1Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kIMABLgAZVW5rbm93biBpbnRlcmxhY2UgbWV0aG9kIMABLgBJSSoAEXN0YXJ0IGJ5dGUgaW5kZXggwCYgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlIMAIIChieXRlcyDACyBvZiBzdHJpbmcpAA9lbmQgYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMALIG9mIHN0cmluZykACEpzVmFsdWUowAEpABJTSCBlbGVtZW50IGNvdW50ICjAGykgbXVzdCBtYXRjaCB2ZXJ0ZXggY291bnQgKMABKQAmY29weV9mcm9tX3NsaWNlOiBzb3VyY2Ugc2xpY2UgbGVuZ3RoICjAKykgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICjAASkAwAsgKG9zIGVycm9yIMABKQDAByAoMSA8PCDAASkAD0dzcGxhdChjZW50ZXI6IMALLCBvcGFjaXR5OiDABywgcmdiOiDACiwgc2NhbGVzOiDADiwgcXVhdGVybmlvbjogwAEpAA9Dc3BsYXQoY2VudGVyOiDACywgb3BhY2l0eTogwAcsIHJnYjogwAosIHNjYWxlczogwA4sIHF1YXRlcm5pb246IMABKQAGRXJyb3IowAgsIGxpbmU6IMAKLCBjb2x1bW46IMABKQDAAjogAAtzcGxpdCBheGlzPcAJLCBleHRlbnQ9wAgsIHNwbGl0PcAILCBhLmxlbj3ACCwgYi5sZW49wAEKABBvY3RhbnQgbGVuZ3RoczogwAEKAAAiExAAGgAAAHYAAAAgAAAAIhMQABoAAAB1AAAAIgAAACITEAAaAAAAdAAAAB4AAAAiExAAGgAAAHMAAAAmAAAAIhMQABoAAAByAAAAJAAAACITEAAaAAAAVAAAABcAAAAiExAAGgAAAFUAAAAXAAAAIhMQABoAAABWAAAAFwAAACITEAAaAAAAWAAAABYAAAAiExAAGgAAAFkAAAAWAAAAIhMQABoAAABaAAAAFgAAACITEAAaAAAAXAAAACoAAAAiExAAGgAAAFwAAAAUAAAAIhMQABoAAABdAAAAKgAAACITEAAaAAAAXQAAABQAAAAiExAAGgAAAF4AAAAqAAAAIhMQABoAAABeAAAAFAAAACITEAAaAAAAYAAAACkAAAAiExAAGgAAAGAAAAAYAAAAIhMQABoAAABiAAAAJgAAACITEAAaAAAAYwAAACYAAAAiExAAGgAAAGQAAAAmAAAAIhMQABoAAABlAAAAJgAAACITEAAaAAAAaAAAABUAAAAiExAAGgAAAGkAAAAVAAAAIhMQABoAAABqAAAAFQAAACITEAAaAAAAawAAABUAAABJbnZhbGlkIC5zcGxhdCBmaWxlIHNpemVNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tlecknEABeAAAAZgoAAB8AQbD/wAALBQEAAACFAEHA/8AACwUBAAAAhgBB0P/AAAsFAQAAAIcAQeD/wAALBQEAAACIAEHw/8AACwUBAAAAiQBBgIDBAAsFAQAAAIoAQZCAwQALBQEAAACJAEGggMEACwUBAAAAiwBBsIDBAAsFAQAAAIwAQcCAwQALBQEAAACNAEHQgMEACwUBAAAAjgBB4IDBAAsFAQAAAI8AQfCAwQALBQEAAACQAEGAgcEACwUBAAAAkQBBkIHBAAsFAQAAAJIAQaCBwQALBQEAAACTAEGwgcEACwUBAAAAlABBwIHBAAsFAQAAAJUAQdCBwQALBQEAAACWAEHggcEACwUBAAAAlwBB8IHBAAsFAQAAAJgAQYCCwQALBQEAAACYAEGQgsEACwUBAAAAmABBoILBAAsFAQAAAJgAQbCCwQALBQEAAACYAEHAgsEACwUBAAAAmABB0ILBAAsFAQAAAJgAQeCCwQALBQEAAACYAEHwgsEACwUBAAAAmABBgIPBAAsFAQAAAJgAQZCDwQALBQEAAACYAEGgg8EAC2UBAAAAmAAAAGFuIGFycmF5IG9mIGxlbmd0aCAxYW4gYXJyYXkgb2YgbGVuZ3RoIDJhbiBhcnJheSBvZiBsZW5ndGggM2FuIGFycmF5IG9mIGxlbmd0aCA0AAAAAAAAAAABAAAAmQBBkITBAAsFAQAAAJoAQaCEwQALBQEAAACbAEGwhMEACwUBAAAAnABBwITBAAuhCAEAAACdAAAAZmlsZXNtaW5zbWF4c3NoYXBlc3RydWN0IE1lYW5zIHdpdGggNCBlbGVtZW50cwAAWkIQABwAAABlbmNvZGluZ3N0cnVjdCBRdWF0cyB3aXRoIDIgZWxlbWVudHOIQhAAHAAAAHN0cnVjdCBTaDBWMSB3aXRoIDMgZWxlbWVudHOsQhAAHAAAAGNvZGVib29rc3RydWN0IFNoMFYyIHdpdGggMiBlbGVtZW50c9hCEAAcAAAAc3RydWN0IFNoTlYxIHdpdGggNCBlbGVtZW50c/xCEAAcAAAAYmFuZHNzdHJ1Y3QgU2hOVjIgd2l0aCAzIGVsZW1lbnRzAAAAJUMQABwAAABpbmZvc3RydWN0IExhYmVscyB3aXRoIDIgZWxlbWVudHMAAABQQxAAHQAAAHN0cnVjdCBNZWFuc1YxIHdpdGggNCBlbGVtZW50cwAAeEMQAB4AAABtZWFuc3NjYWxlc3F1YXRzbGFiZWxzc2gwc2hOc3RydWN0IFBjU29nc1YxIHdpdGggNiBlbGVtZW50cwC8QxAAHwAAAHN0cnVjdCBQY1NvZ3NWMiB3aXRoIDggZWxlbWVudHMA5EMQAB8AAABzdHJ1Y3QgU2NhbGVzVjEgd2l0aCAzIGVsZW1lbnRzAAxEEAAfAAAAc3RydWN0IFNjYWxlc1YyIHdpdGggMiBlbGVtZW50cwA0RBAAHwAAAHBheWxvYWRCeXRlc3Byb3BlcnRpZXNzdHJ1Y3QgUmFkQ2h1bmtNZXRhIHdpdGggOCBlbGVtZW50cwAAAHJEEAAjAAAAY29tcHJlc3Npb25taW5tYXhzdHJ1Y3QgUmFkQ2h1bmtQcm9wZXJ0eSB3aXRoIDcgZWxlbWVudHOxRBAAJwAAAGNlbnRlcnJnYm9yaWVudGF0aW9uc2gxc2gyc2gzY2hpbGRfY291bnRjaGlsZF9zdGFydHNoMV9jb2Rlc2gyX2NvZGVzaDNfY29kZXNoX2xhYmVsAOBEEAAGAAAAr7gRAAUAAADmRBAAAwAAAKVDEAAGAAAA6UQQAAsAAACqshEABQAAAMayEQAOAAAA9EQQAAMAAAD3RBAAAwAAAPpEEAADAAAA/UQQAAsAAAAIRRAACwAAABNFEAAIAAAAG0UQAAgAAAAjRRAACAAAACtFEAAIAAAAZjE2ZjMyX2xlYnl0ZXNmMTZfbGVieXRlc3I4cjhfZGVsdGFzOHM4X2RlbHRhbG5fMHI4bG5fZjE2b2N0ODhyOBhTEQACAAAAGlMRAAMAAAC0RRAAAwAAALdFEAALAAAAwkUQAAsAAADNRRAAAgAAAM9FEAAIAAAA10UQAAIAAADZRRAACAAAAOFFEAAGAAAA50UQAAYAAADtRRAABwAAAPslEQADAAAAIFMRAAMAQeyMwQALBQEAAACeAEH8jMEAC/EMAQAAAJ8AAABnegAAhEYQAAIAAABhIG1hcAAAAJL7BFYo6OWj081Pw6yS7bbjakM2M82IVICa6+WCgujhLNdEbhQC79AK/89rIxe4vUSV0OAI/fessvPzEUZsdWw5lVgtqlHyhoGoQNfUiaz5imNuwNELaayeyAFNk8/7bsE4yN0u33OsxCva288uwRrk7bUaKhm6qtGejw0QOHcgMajXqGqHsDP+WUI2ANZLUvBKAWY5uY4UmroklLt0EtPZB7zAeMPQNgh/Ts8U2UzoGPv9Fzgt5WbAxRwFGfGaSHDeQK7XBYuncix2l922AzuR7gb0/Mfo0PIRuPM96YgorugFjT0afX/VioadF7dBDodUMvFbHWmz0s3V7RvRKnRYlJuDE6geSHS8sDp6AfokcZ7rHghe/EnhMNERmQSmE/eH7bZNFPhCP9zQssOxiKADaRWv8ScPvdQxlx8xaO6+vgc+8kGfusrELB6Ilb/gnxVfs07Vk+VnQokAFOojUofoFtH5mVDgyi35LfBH1fTbssdW/Q/mG1TOFsk9apD3IM4/Z/nh0DIopEu0rx6BJpMg3jw9cfi9440jB8IT3Oo0DPEsVvqMDMSQUxAfmOHvrZ384tj2twBjQoxWu0l95eBPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAIQoEABMAAAApgAAADIAAADXIRAATwAAAMICAAAmAAAA0BwQAGEAAACkAAAAKgAAANAcEABhAAAABAEAACUAAACgAAAADAAAAAQAAAChAAAAoAAAAAwAAAAEAAAAogAAAKEAAADESBAAowAAAKQAAAClAAAAowAAAKYAAABBRVMgZW5jcnlwdGVkIGZpbGVzIGNhbm5vdCBiZSBkZWNyeXB0ZWQgd2l0aG91dCB0aGUgYWVzLWNyeXB0byBmZWF0dXJlLlZhcmlhYmxlLWxlbmd0aCBmaWVsZCBleHRlbmRzIGJleW9uZCBmaWxlIGJvdW5kYXJ5QUVTIGVuY3J5cHRpb24gd2l0aG91dCBBRVMgZXh0cmEgZGF0YSBmaWVsZEFyY2hpdmUgaGVhZGVyIGlzIHRvbyBsYXJnZU92ZXJzaXplZCBjZW50cmFsIGRpcmVjdG9yeVN1cHBvcnQgZm9yIG11bHRpLWRpc2sgZmlsZXMgaXMgbm90IGltcGxlbWVudGVkemlwOjpzcGVjOjpaaXA2NENERUxvY2F0b3JCbG9ja0ludmFsaWQgemlwNjQgbG9jYXRvciBkaWdpdGFsIHNpZ25hdHVyZSBoZWFkZXIAAAAAAIAoShAALgAAAHppcDo6c3BlYzo6WmlwMzJDREVCbG9ja1BLBQZJbnZhbGlkIGRpZ2l0YWwgc2lnbmF0dXJlIGhlYWRlcgAAAICAShAAIAAAAHppcDo6c3BlYzo6WmlwNjRDREVCbG9ja1BLBgZ6aXA6OnR5cGVzOjpaaXBDZW50cmFsRW50cnlCbG9ja1BLAQJJbnZhbGlkIENlbnRyYWwgRGlyZWN0b3J5IGhlYWRlcgAAAIDsShAAIAAAAEludmFsaWQgRU9DRDY0OiBpbmNvbnNpc3RlbnQgbGVuZ3RoSW52YWxpZCBFT0NENjQ6IGluY29uc2lzdGVuY3kgd2l0aCBMb2NhdG9yIGRhdGFJbnZhbGlkIEVPQ0Q2NDogaW5jb25zaXN0ZW50IG51bWJlciBvZiBmaWxlc0NvdWxkIG5vdCBmaW5kIEVPQ0Q2NE11bHRpLWRpc2sgWklQIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkSW52YWxpZCBFT0NENjQgTG9jYXRvciBDRCBvZmZzZXRObyBDREZIIGZvdW5kSW52YWxpZCBDREZIIG9mZnNldCBpbiBFT0NE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emVsZWFmQ291bnSSJxAAGAAAAFQCAABcAAAAkicQABgAAABTAgAAYgAAAJInEAAYAAAAUgIAAF4AAACSJxAAGAAAAFECAABZAAAAkicQABgAAABQAgAAaAAAAJInEAAYAAAATwIAAGIAAACSJxAAGAAAALsBAAAzAAAAkicQABgAAADAAQAAHQAAAJInEAAYAAAAwQEAACIAAACSJxAAGAAAAMIBAAAgAAAAkicQABgAAADDAQAAIAAAAJInEAAYAAAAxAEAAB8AAACSJxAAGAAAAMYBAAAdAAAAkicQABgAAAC/AQAAPAAAAJInEAAYAAAAvgEAAD0AAACSJxAAGAAAAPUAAAA6AAAAkicQABgAAAD/AAAAWAAAAJInEAAYAAAArQIAAB0AAACSJxAAGAAAALACAAA5AAAAbWlzc2luZ0NvdW50kicQABgAAABIAwAAYgAAAJInEAAYAAAARwMAAFwAAACSJxAAGAAAAEYDAABeAAAAkicQABgAAABFAwAAWQAAAJInEAAYAAAARAMAAGgAAACSJxAAGAAAAEMDAABiAAAAkicQABgAAAAyAwAAIwAAAJInEAAYAAAANQMAAFoAAACSJxAAGAAAADQDAABtAAAAkicQABgAAAAzAwAAWAAAAJInEAAYAAAA1QIAAEsAAACSJxAAGAAAAOICAABAAAAAkicQABgAAADjAgAAPwAAAJInEAAYAAAA6gIAADMAAACSJxAAGAAAAPUCAAA3AAAAkicQABgAAAD3AgAARgAAAJInEAAYAAAAmwIAADMAAACSJxAAGAAAAKACAAAdAAAAkicQABgAAAChAgAAIgAAAJInEAAYAAAAogIAACAAAACSJxAAGAAAAKMCAAAgAAAAkicQABgAAACkAgAAHwAAAJInEAAYAAAApQIAAB0AAACSJxAAGAAAAJ8CAAA8AAAAkicQABgAAACeAgAAPQAAAE5vdCBhIFpJUC9TT0dTIGZpbGVTT0dTIGZpbGUgdG9vIHNtYWxsAACIExAAHQAAAEwDAAANAAAAiBMQAB0AAABNAwAADQAAAIgTEAAdAAAATgMAAA0AAACIExAAHQAAAEsDAABBAAAAiBMQAB0AAABXAwAADQAAAIgTEAAdAAAAVwMAAD4AAACIExAAHQAAAGEDAAANAAAAiBMQAB0AAABiAwAADQAAAIgTEAAd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AAA8AAAAMh0QAGEAAABDBAAAJwAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1ZmZlci5sZW4oKS5pc19tdWx0aXBsZV9vZihmcm9tX2xheW91dC5jaGFubmVscygpKQAAADIdEABhAAAAnAQAAAkAAAAAAAAACAAAAAQAAAC+AQAAaW5wdXQgbGF5b3V0IGFscmVhZHkgYWxsb2NhdGVkIHdpdGggYXBwcm9wcmlhdGUgbGF5b3V0AAAyHRAAYQAAAKIEAAAOAAAAWRcQAFkAAAAOAgAAPwAAAEltYWdlIHNpemUgZXhjZWVkcyBsaW1pdFRoZSBmb2xsb3dpbmcgc3RyaWN0IGxpbWl0cyBhcmUgc3BlY2lmaWVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBvcGVydGF0aW9uOiAAAAAAAAEAAAABAAAAvwEAAAAAAAABAAAAAQAAAMABAAAAAAAAAQAAAAEAAADBAQAAAAAAAAQAAAAEAAAAwgEAAAAAAAAEAAAABAAAAMMBAABpbm5lckZvcm1hdCBlcnJvclRoZSBJbWFnZSdzIGRpbWVuc2lvbnMgYXJlIGVpdGhlciB0b28gc21hbGwgb3IgdG9vIGxhcmdlVGhlIGVuZCB0aGUgaW1hZ2Ugc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQgZHVlIHRvIGEgcHJldmlvdXMgZXJyb3JUaGUgZW5kIG9mIHRoZSBpbWFnZSBoYXMgYmVlbiByZWFjaGVkYFVua25vd25gSW1hZ2VCdWZmZXJTaXplYWN0dWFsUG9sbGVkQWZ0ZXJFbmRPZkltYWdlUG9sbGVkQWZ0ZXJGYXRhbEVycm9yVGhlIGltYWdlIGZvcm1hdCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZEVycgAAAAAAAAQAAAAEAAAAxAEAAEZvcm1hdEVycm9yUmlmZlNpZ25hdHVyZUludmFsaWRXZWJwU2lnbmF0dXJlSW52YWxpZENodW5rTWlzc2luZ0NodW5rSGVhZGVySW52YWxpZFJlc2VydmVkQml0U2V0SW52YWxpZEFscGhhUHJlcHJvY2Vzc2luZ0ludmFsaWRDb21wcmVzc2lvbk1ldGhvZEFscGhhQ2h1bmtTaXplTWlzbWF0Y2hJbWFnZVRvb0xhcmdlRnJhbWVPdXRzaWRlSW1hZ2VMb3NzbGVzc1NpZ25hdHVyZUludmFsaWRWZXJzaW9uTnVtYmVySW52YWxpZEludmFsaWRDb2xvckNhY2hlQml0c0h1ZmZtYW5FcnJvckJpdFN0cmVhbUVycm9yVHJhbnNmb3JtRXJyb3JWcDhNYWdpY0ludmFsaWROb3RFbm91Z2hJbml0RGF0YUNvbG9yU3BhY2VJbnZhbGlkTHVtYVByZWRpY3Rpb25Nb2RlSW52YWxpZEludHJhUHJlZGljdGlvbk1vZGVJbnZhbGlkQ2hyb21hUHJlZGljdGlvbk1vZGVJbnZhbGlkSW5jb25zaXN0ZW50SW1hZ2VTaXplc1Vuc3VwcG9ydGVkRmVhdHVyZUludmFsaWRQYXJhbWV0ZXJNZW1vcnlMaW1pdEV4Y2VlZGVkSW52YWxpZENodW5rU2l6ZU5vTW9yZUZyYW1lc0ludmFsaWREaW1lbnNpb25zTGltaXRzRXhjZWVkZWQAALEAAAAIAAAABAAAAC8AAACxAAAACAAAAAQAAACyAAAALwAAAMD9EACzAAAAtAAAAKUAAAC1AAAApgAAAFVucmVwcmVzZW50YWJsZUludmFsaWRLZXl3b3JkU2l6ZU1pc3NpbmdOdWxsU2VwYXJhdG9ySW5mbGF0aW9uRXJyb3JPdXRPZkRlY29tcHJlc3Npb25TcGFjZUludmFsaWRDb21wcmVzc2lvbkZsYWdNaXNzaW5nQ29tcHJlc3Npb25GbGFnAAAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAaQAAAENyY01pc21hdGNoY3JjX3ZhbGNyY19zdW1JbnZhbGlkU2lnbmF0dXJlTWlzc2luZ0ZjdGxNaXNzaW5nSW1hZ2VEYXRhQ2h1bmtCZWZvcmVJaGRyQWZ0ZXJJZGF0QmVmb3JlUGx0ZUFmdGVyUGx0ZU91dHNpZGVQbHRlSWRhdER1cGxpY2F0ZUNodW5rQXBuZ09yZGVycHJlc2VudFNob3J0UGFsZXR0ZWxlbgAAAAAAAQAAAAEAAADFAQAASW52YWxpZFNiaXRDaHVua1NpemVjb2xvcl90eXBlAAAAAAAAAQAAAAEAAADGAQAASW52YWxpZFNiaXRzYW1wbGVfZGVwdGhzYml0UGFsZXR0ZVJlcXVpcmVkAAAAAAAABAAAAAQAAADHAQAASW52YWxp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AABMIBAAaQAAABgCAAAYAAAATCAQAGkAAADzAQAAHwAAAIIbEABtAAAAbQEAABgAAACCGxAAbQAAAFoAAAAYAAAAcTEQAFoAAACiCAAAJQAAAHExEABaAAAAoggAAB4AAABxMRAAWgAAAPAIAAAiAAAAcTEQAFoAAADwCAAACgAAAHExEABaAAAA3QgAAB4AAABxMRAAWgAAAAoJAAAeAAAAcTEQAFoAAAALCQAAFwAAAHExEABaAAAADwkAACYAAABxMRAAWgAAABIJAAAiAAAAcTEQAFoAAAAMCQAAHQAAAHExEABaAAAAgQgAAAUAAABxMRAAWgAAAIQIAAAmAAAAcTEQAFoAAACICAAAKwAAAHExEABaAAAAiAgAACAAAABxMRAAWgAAACUIAABFAAAAcTEQAFoAAAAiCAAAHgAAAHExEABaAAAAOAgAADEAAABxMRAAWgAAABwIAABBAAAABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA8AD4AQABCAEQARgBIAEoATABOAFAAUgBUAFYAWABaAFwAXgBgAGIAZABmAGgAagBsAG4AcAByAHQAdwB6AH0AgACDAIYAiQCMAI8AkgCVAJgAmwCeAKEApACnAKoArQCxALUAuQC9AMEAxQDJAM0A0QDVANkA3QDhAOUA6gDvAPUA+QD+AAMBCAENARIBFwEcAQQABQAGAAcACAAJAAoACgALAAwADQAOAA8AEAARABEAEgATABQAFAAVABUAFgAWABcAFwAYABkAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAlACYAJwAoACkAKgArACwALQAuAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFsAXQBfAGAAYgBkAGUAZgBoAGoAbABuAHAAcgB0AHYAegB8AH4AgACCAIQAhgCIAIoAjACPAJEAlACXAJoAnQBxMRAAWgAAAGgIAAAwAAAAcTEQAFoAAABcCAAAOwAAAGgQEABaAAAAYAAAADUAAABoEBAAWgAAAGMAAABBAAAAaBAQAFoAAACTAAAAGQAAAGgQEABaAAAAlQAAABkAAABoEBAAWgAAAJQAAAAZAAAAaBAQAFoAAACQAAAAJAAAAGgQEABaAAAAjwAAACQAAABoEBAAWgAAAHYAAAAVAAAAaBAQAFoAAAB4AAAAFQAAAGgQEABaAAAAdwAAABUAAABoEBAAWgAAAGMAAAAlAAAAaBAQAFoAAABdAAAAJQAAAGgQEABaAAAAXAAAAB4AAABoEBAAWgAAAFsAAAAeAAAAaBAQAFoAAABaAAAAHgAAAGgQEABaAAAALwEAAAoAAABoEBAAWgAAADYBAAAKAAAAaBAQAFoAAAA+AQAAEwAAAGgQEABaAAAAPQEAABMAAABoEBAAWgAAADwBAAATAAAAaBAQAFoAAADmAAAAIwAAAGgQEABaAAAA5wAAABcAAABoEBAAWgAAAOkAAAAXAAAAaBAQAFoAAADqAAAAFwAAAGgQEABaAAAA7wAAACkAAABoEBAAWgAAAKUAAAAjAAAAaBAQAFoAAACmAAAAFwAAAGgQEABaAAAAqAAAAC4AAABoEBAAWgAAAKgAAABGAAAAaBAQAFoAAACpAAAALgAAAGgQEABaAAAAqQAAAEYAAABoEBAAWgAAANYAAAAcAAAAaBAQAFoAAACtAAAAKgAAAGgQEABaAAAAHgEAAAUAAABoEBAAWgAAAB8BAAAFAAAAaBAQAFoAAAAgAQAABQAAAJofEABeAAAANwAAAEkAAACaHxAAXgAAAD4AAABOAAAAmh8QAF4AAABNAAAAKQAAAJofEABeAAAAWQAAABgAAACaHxAAXgAAAGYAAAAoAAAAmh8QAF4AAACHAAAAGwAAAJofEABeAAAAdQAAACQAAACaHxAAXgAAAC8AAAANAAAAoy0QAF8AAAA2AAAAFAAAAKMtEABfAAAAYQAAAEEAAACjLRAAXwAAAGEAAAAxAAAAoy0QAF8AAABUAAAAQQAAAKMtEABfAAAAVAAAADEAAACjLRAAXwAAAIwAAAA1AAAAoy0QAF8AAACMAAAAJQAAAKMtEABfAAAAiwAAACgAAACjLRAAXwAAAIsAAAAfAAAAoy0QAF8AAACDAAAAVgAAAKMtEABfAAAAgwAAAEcAAACjLRAAXwAAAIMAAAAjAAAAoy0QAF8AAACDAAAAEwAAAKMtEABfAAAAdAAAADIAAACjLRAAXwAAAHUAAAA5AAAAoy0QAF8AAAB1AAAAKQAAAKMtEABfAAAAdAAAACMAAACjLRAAXwAAAKQAAAARAAAAoy0QAF8AAACnAAAAEQAAAKMtEABfAAAArwAAABEAAACjLRAAXwAAALIAAAARAAAAoy0QAF8AAAC6AAAAHwAAAKMtEABfAAAAvwAAAB8AAACjLRAAXwAAAMQAAAAgAAAAoy0QAF8AAADGAAAAHwAAAKMtEABfAAAAyAAAACQAAABBbHBoYSBjaHVuayBzaXplIG1pc21hdGNoTm8gbW9yZSBmcmFtZXNJbmNvbnNpc3RlbnQgaW1hZ2Ugc2l6ZXNJbnZhbGlkIGNodW5rIHNpemVBbiBleHBlY3RlZCBjaHVuayB3YXMgbWlzc2luZ1Jlc2VydmVkIGJpdHMgc2V0Q29ycnVwdCBiaXRzdHJlYW0TSW52YWxpZCBWUDggbWFnaWM6IMEgAABiAEludmFsaWQgSHVmZm1hbiBjb2RlTm90IGVub3VnaCBWUDggaW5pdCBkYXRhSW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2RGcmFtZSBvdXRzaWRlIGltYWdlGEludmFsaWQgUklGRiBzaWduYXR1cmU6IMEgAABiAE1lbW9yeSBsaW1pdCBleGNlZWRlZEFscGhhIGNodW5rIHByZXByb2Nlc3NpbmcgZmxhZyBpbnZhbGlkSW52YWxpZCB0cmFuc2Zvcm1JbWFnZSB0b28gbGFyZ2UYSW52YWxpZCBXZWJQIHNpZ25hdHVyZTogwSAAAGIAFkludmFsaWQgQ2h1bmsgaGVhZGVyOiDBIAAAYgAcSW52YWxpZCBsb3NzbGVzcyBzaWduYXR1cmU6IMEgAABiAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAABgMBAAVwAAAIU1AAABAAAAUg8QAGIAAADZAQAAHQAAAFIPEABiAAAA2gEAABkAAAC1DxAATwAAAPgDAAA0AAAA4BkQAG0AAAAgAAAACQAAAOAZEABtAAAAKgAAABMAAAD3JRAAZAAAAGsGAAAaAAAA9yUQAGQAAABrBgAANgAAAPclEABkAAAAXgYAACgAAAD3JRAAZAAAAHMHAAA+AEH4osQAC94YAQEBAQICAgIDAwMDBAQEBAUFBQUAAAAAAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQACAAIAAvclEABkAAAA2QcAAE0AAAD3JRAAZAAAADwGAAAtAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAQEBAAQAAAD3JRAAZAAAAIQGAAAgAAAAAAAAgABAAMAAIACgAGAA4AAQAJAAUADQADAAsABwAPAACACIAEgAyAAoAKgAaADoABgAmABYANgAOAC4AHgA+AAEAIQARADEACQApABkAOQAFACUAFQA1AA0ALQAdAD0AAwAjABMAMwALACsAGwA7AAcAJwAXADcADwAvAB8APwAAgCCAEIAwgAiAKIAYgDiABIAkgBSANIAMgCyAHIA8gAKAIoASgDKACoAqgBqAOoAGgCaAFoA2gA6ALoAegD6AAYAhgBGAMYAJgCmAGYA5gAWAJYAVgDWADYAtgB2APYADgCOAE4AzgAuAK4AbgDuAB4AngBeAN4APgC+AH4A/gABAIEAQQDBACEAoQBhAOEAEQCRAFEA0QAxALEAcQDxAAkAiQBJAMkAKQCpAGkA6QAZAJkAWQDZADkAuQB5APkABQCFAEUAxQAlAKUAZQDlABUAlQBVANUANQC1AHUA9QANAI0ATQDNAC0ArQBtAO0AHQCdAF0A3QA9AL0AfQD9AAMAgwBDAMMAIwCjAGMA4wATAJMAUwDTADMAswBzAPMACwCLAEsAywArAKsAawDrABsAmwBbANsAOwC7AHsA+wAHAIcARwDHACcApwBnAOcAFwCXAFcA1wA3ALcAdwD3AA8AjwBPAM8ALwCvAG8A7wAfAJ8AXwDfAD8AvwB/AP+AAICAgECAwIAggKCAYIDggBCAkIBQgNCAMICwgHCA8IAIgIiASIDIgCiAqIBogOiAGICYgFiA2IA4gLiAeID4gASAhIBEgMSAJICkgGSA5IAUgJSAVIDUgDSAtIB0gPSADICMgEyAzIAsgKyAbIDsgByAnIBcgNyAPIC8gHyA/IACgIKAQoDCgCKAooBigOKAEoCSgFKA0oAygLKAcoDygAqAioBKgMqAKoCqgGqA6oAagJqAWoDagDqAuoB6gPqABoCGgEaAxoAmgKaAZoDmgBaAloBWgNaANoC2gHaA9oAOgI6AToDOgC6AroBugO6AHoCegF6A3oA+gL6AfoD+gAGAgYBBgMGAIYChgGGA4YARgJGAUYDRgDGAsYBxgPGACYCJgEmAyYApgKmAaYDpgBmAmYBZgNmAOYC5gHmA+YAFgIWARYDFgCWApYBlgOWAFYCVgFWA1YA1gLWAdYD1gA2AjYBNgM2ALYCtgG2A7YAdgJ2AXYDdgD2AvYB9gP2AA4CDgEOAw4AjgKOAY4DjgBOAk4BTgNOAM4CzgHOA84ALgIuAS4DLgCuAq4BrgOuAG4CbgFuA24A7gLuAe4D7gAeAh4BHgMeAJ4CngGeA54AXgJeAV4DXgDeAt4B3gPeAD4CPgE+Az4AvgK+Ab4DvgB+An4BfgN+AP4C/gH+A//clEABkAAAAhgIAAB0AAAD3JRAAZAAAACIEAAAUAAAA9yUQAGQAAAAjBAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAzIDwgb3V0X3NsaWNlLmxlbigpAPclEABkAAAANgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDMpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCn3JRAAZAAAADcEAAANAAAA9yUQAGQAAAA5BAAAIgAAAPclEABkAAAAOgQAACYAAAD3JRAAZAAAADsEAAAmAAAA9yUQAGQAAABEBAAAIwAAAPclEABkAAAARAQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMSA8IG91dF9zbGljZS5sZW4oKQD3JRAAZAAAAEYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAxKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigp9yUQAGQAAABHBAAADQAAAPclEABkAAAASAQAACIAAAD3JRAAZAAAAEgEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDIgPCBvdXRfc2xpY2UubGVuKCkA9yUQAGQAAABMBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMikgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKfclEABkAAAATQQAAA0AAAD3JRAAZAAAAE4EAAAiAAAA9yUQAGQAAABOBAAADQAAAPclEABkAAAATwQAACYAAAD3JRAAZAAAAE8EAAANAAAA9yUQAGQAAAAsBAAAFwAAAAAAAAAEAAAABAAAADoAAAAAAAAABAAAAAQAAACEAAAAAAAAAAgAAAAEAAAAywEAAHVucmVhY2hhYmxlABIxEABeAAAAtQAAACYAAADMMRAAVgAAAEMAAAAJAAAAzDEQAFYAAABsAQAAEQAAAMwxEABWAAAAdQEAABEAAADMMRAAVgAAAH4BAAARAAAAzDEQAFYAAACIAQAAEQAAAMwxEABWAAAAjwEAAB8AAADMMRAAVgAAAI8BAAAlAAAAzDEQAFYAAACPAQAAFAAAAMwxEABWAAAAlwEAAEIAAADMMRAAVgAAAJgBAAAfAAAAzDEQAFYAAACYAQAAFAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IE5vdCBhIHBvc3NpYmxlIGJ5dGUgcm91bmRlZCBwaXhlbCB3aWR0aAAAADAeEABXAAAAUQMAABIAAABOGhAAawAAAPUAAAAmAAAAThoQAGsAAAAPAQAAGwAAAE4aEABrAAAANAEAAA4AAABOGhAAawAAADQBAABJAAAAThoQAGsAAACIAAAAKAAAAE4aEABrAAAAZgEAADEAAAD2LhAAXQAAAJ4AAAAnAAAA9i4QAF0AAADlAAAAIQAAAHchEABfAAAAzgIAACcAAAB3IRAAXwAAAOMCAAAeAAAAdyEQAF8AAAAzAwAANwAAAHchEABfAAAA1QQAACcAAAB3IRAAXwAAAIUHAAAnAAAAdyEQAF8AAACgBQAAJwAAAHchEABfAAAA/QUAACcAAAB3IRAAXwAAAHIGAAAnAAAAdyEQAF8AAACKBgAAJwAAAHchEABfAAAAzAQAABwAAAB3IRAAXwAAAM0FAAAnAAAAdyEQAF8AAAB1BwAAHAAAAHchEABfAAAAcwcAACYAAAB3IRAAXwAAAHEHAAAZAAAAdyEQAF8AAABqBwAAMAAAAHchEABfAAAAaAcAAC4AAAB3IRAAXwAAADgGAAAnAAAAdyEQAF8AAACDBQAAJwAAAHchEABfAAAA+AQAACcAAAB3IRAAXwAAAAUFAAAnAAAAdyEQAF8AAADmBQAAJwAAAHchEABfAAAAOQcAAA4AAAB3IRAAXwAAAEYFAAAnAAAAdyEQAF8AAABMBwAAHAAAAHchEABfAAAAaQQAABIAAAB3IRAAXwAAACcEAAAqAAAAdyEQAF8AAACmBgAAJwAAAHchEABfAAAAuAIAADwAAAB3IRAAXwAAALoCAAAfAAAAYXNzZXJ0aW9uIGZhaWxlZDogKDggLyBiaXRfZGVwdGggYXMgdXNpemUgKiBjaGFubmVscykuc2F0dXJhdGluZ19tdWwoaW5wdXQubGVuKCkpID49CiAgICBvdXRwdXQubGVuKCkAAAC2IBAAYgAAAGIAAAAFAAAAaW5wdXQgZm9yIHVucGFjayBiaXRzIGlzIG5vdCBlbXB0eQAAtiAQAGIAAAB+AAAAJQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1hdGNoZXMhKGJpdF9kZXB0aCwgMSB8IDIgfCA0IHwgOCm2IBAAYgAAAF8AAAAFAAAAtiAQAGIAAAC2AAAAGgAAABAAAAC2IBAAYgAAAEIAAAARAAAAAAAAAAQAAAAEAAAAzAEAAM0BAADNAQBB4LvEAAsOAQAAAM4BAADPAQAA0AEAQfi7xAALnQ4BAAAA0QEAANIBAADTAQAAtiAQAGIAAABVAAAAHAAAALYgEABiAAAAVQAAAAkAAAC2IBAAYgAAAL0AAAAaAAAAtiAQAGIAAADBAAAAGQAAAENhbGxlciBzaG91bGQgdmVyaWZ50yQQAGoAAAAoAAAAKwAAANMkEABqAAAASgAAAA0AAADTJBAAagAAAEoAAAA9AAAA0yQQAGoAAABWAAAAHQAAANMkEABqAAAARAAAAA0AAADTJBAAagAAAGcAAAAiAAAA0yQQAGoAAABoAAAADwAAANMkEABqAAAAYAAAACIAAAAAAAAAAAQAAAEAAADUAQAA1QEAANUBAAAAAAAAAAQAAAEAAADWAQAA1wEAANcBAAAAAAAAAAQAAAEAAADYAQAA2QEAANkBAAC2IBAAYgAAAFAAAAATAAAAQ2h1bmtUeXBlAAAAAAAAAAQAAAABAAAA2gEAAAAAAAABAAAAAQAAANsBAABjcml0aWNhbHByaXZhdGVyZXNlcnZlZHNhZmVjb3B5T25lVHdvRm91ckVpZ2h0U2l4dGVlbkdyYXlzY2FsZVJnYkluZGV4ZWRHcmF5c2NhbGVBbHBoYVJnYmFFbmQgb2YgaW1hZ2UgaGFzIGJlZW4gcmVhY2hlZEEgZmF0YWwgZGVjb2RpbmcgZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVkIGVhcmxpZXJJbnZhbGlkIFBORyBzaWduYXR1cmUuZmNUTCBjaHVuayBtaXNzaW5nIGJlZm9yZSBmZEFUIGNodW5rLklEQVQgb3IgZmRBVCBjaHVuayBpcyBtaXNzaW5nLk1pc3NpbmcgcGFsZXR0ZSBvZiBpbmRleGVkIGltYWdlLkludmFsaWQgaW1hZ2UgZGltZW5zaW9uc1N1YiBmcmFtZSBpcyBvdXQtb2YtYm91bmRzLkNvcnJ1cHQgZGVmbGF0ZSBzdHJlYW0uIElEQVQgb3IgZkRBVCBjaHVuayBkb2VzIG5vdCBoYXZlIGVub3VnaCBkYXRhIGZvciBpbWFnZS5VbnJlcHJlc2VudGFibGUgZGF0YSBpbiB0RVh0IGNodW5rLktleXdvcmQgZW1wdHkgb3IgbG9uZ2VyIHRoYW4gNzkgYnl0ZXMuTm8gbnVsbCBzZXBhcmF0b3IgaW4gdEVYdCBjaHVuay5JbnZhbGlkIGNvbXByZXNzZWQgdGV4dCBkYXRhLk91dCBvZiBkZWNvbXByZXNzaW9uIHNwYWNlLiBUcnkgd2l0aCBhIGxhcmdlciBsaW1pdC5Vc2luZyBhbiB1bnJlY29nbml6ZWQgYnl0ZSBhcyBjb21wcmVzc2lvbiBtZXRob2QuVXNpbmcgYSBmbGFnIHRoYXQgaXMgbm90IDAgb3IgMjU1IGFzIGEgY29tcHJlc3Npb24gZmxhZyBmb3IgaVRYdCBjaHVuay5ObyBjb21wcmVzc2lvbiBmbGFnIGluIHRoZSBpVFh0IGNodW5rLmZkQVQgY2h1bmsgc2hvcnRlciB0aGFuIDQgYnl0ZXNCYWQgZ2FtbWEgdmFsdWUubGltaXRzIGFyZSBleGNlZWRlZEJhZFpsaWJIZWFkZXJJbnN1ZmZpY2llbnRJbnB1dEludmFsaWRCbG9ja1R5cGVJbnZhbGlkVW5jb21wcmVzc2VkQmxvY2tMZW5ndGhJbnZhbGlkSGxpdEludmFsaWRIZGlzdElu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pA6QF+bKS03SgABHeZvsylCl2RKiRHlIHc4A2I7FrUSBCCkegtAtbRfYMxM/0VedmtMgGM6mJCR5RvaoZaesShV2TRN9pDqgjj29dG+leneIVuIeZFCV5j4xZF2Mt/vFBhK1GLemquvLjbZKcCyW0WsOxBNXpKoSExYkERpH8OgSF6Af3+nuDtxEg9oUbPNTQt9MGYAhv9h8nQLiQyMpQ2h/PRQzgTJ6/X1oTjYcVM+5MjEQuM5QkJXJQEq9xrlLKVHoGcYLp6Z31DMIMdLHb4fauRRrCewexnYpoI0O07/SrpQQ39usZKNXQgBJF7j/HX6HGhnjI+q13wHNoBJgmbExORWutRyIkUzOcE115q0njvoQ4lWUprWt4xqvu3BJDH0qG+h3Q4XEV+l78mKNBz2XuxWH+TUEanmHyY61CgZk32IRccK8BhCPpXXkiHfWbGXRGyc1ymumpbf36dOSq/AdQRYfxKG8Hh7GX+4PD1aNsc0RZdMCYWRjo/8Ws7GJSE98HFHcm01QHOky3yiO1AbZyRYOfUlxc+Mgj7Ig2HYFFDsSfC4PgoUFm37qzVnxO1MrHcq+pQGeN6/L7tdH9C/cVRehmIQ0S/lYCb+sbMOMFqsSMC4wMSBlbGVtZW50IGluIG1hcDEgZWxlbWVudCBpbiBzZXF1ZW5jZXU4ZjMyZjY0dTMydTY0dXNpemVleHBsaWNpdCBwYW5pYwAAALgrEABfAAAAJAkAABIAAABvbmUgb2YgLCBieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50AAAAAAgAAAAEAAAA5AEAAOUBAADmAQAALjBhIGJvb2xlYW51bml0YSBzdHJpbmdhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbikA4B0QAE8AAAC9BAAAJAAAAG51bGz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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BocICgeIia0IgAF5AIECGAGCA1ACBAbDA4MFGgSFhj4FhAcsBocIQAeIiVUIgAGqAIECLgGCAzcCBAYTA4MFiASFhqAFhAchBocIzgeIiUcIgAE/AIECFAGCAwgCBAZyA4MFcgSFhtAFhAcMBocICQeIieIIgAFRAIECKAGCAwsCBAZgA4MFtgSFhlQFhAcdBocIEAeIiSQIgAGGAIECtwGCA1kCBAaJA4MFYgSFhmUFhAdqBocIpQeIiZQIgAFIAIECuwGCA2QCBAaCA4MFnQSFhm8FhAcgBocISweIiVAIgAFCAIECZgGCA6cCBAZjA4MFSgSFhj4FhAcoBocI6geIiYAIgAEpAIECNQGCAwkCBAayA4MF8QSFho0FhAcaBocICAeIiWsIgAFoAIECTwGCAwwCBAYbA4MF2QSFhv8FhAdXBocIEQeIiQcIgAFKAIECKwGCAxoCBAaSA4MFSQSFhqYFhAcxBocIFweIiZ0IgAFBAIECJgGCA2kCBAagA4MFMwSFhjQFhAcfBocIcweIiYAIgAFXAIECRAGCA0cCBAYsA4MFcgSFhjMFhAcPBocIugeIiRcIgAEvAIECKQGCAw4CBAZuA4MFtgSFhrcFhAcVBocIEQeIicIIgAFCAIECLQGCAxkCBAZmA4MFxQSFhr0FhAcXBocIEgeIiRYIgAFYAIECWAGCA5MCBAaWA4MFKgSFhi4FhActBocIxAeIic0IgAErAIECYQGCA7cCBAZ1A4MFVQSFhiYFhAcjBocIsweIiT0IgAEnAIECNQGCA8gCBAZXA4MFGgSFhhUFhAcrBocI6AeIiasIgAE4AIECIgGCAzMCBAZoA4MFcgSFhmYFhAcdBocIXQeIiU0IgAFrAIECNgGCAyACBAYaA4MFMwSFhgEFhAdRBocIKweIiR8IgAEnAIECHAGCA1UCBAarA4MFOgSFhqUFhAdaBocIYgeIiUAIgAEiAIECFgGCA3QCBAbOA4MFFwSFhiIFhAcrBocIpgeIiUkIgAFEAIECGQGCA2oCBAYWA4MFQASFhqsFhAckBocI4QeIiXIIgAEiAIECEwGCAxUCBAZmA4MFhASFhrwFhAcQBocITAeIiXwIgAE+AIECEgGCA04CBAZfA4MFVQSFhjkFhAcyBocIMAeIiTMIgAHBAIECZQGCAyMCBAafA4MF1wSFhm8FhAdZBocILgeIiW8IgAE8AIEClAGCAx8CBAasA4MF2wSFhuQFhAcVBocIEgeIiW8IgAFwAIECcQGCA00CBAZVA4MFswSFhv8FhAcmBocIeAeIiXIIgAEoAIECKgGCAwECBAbEA4MF9QSFhtEFhAcKBocIGQeIiW0IgAFkAIECUAGCAwgCBAYrA4MFmgSFhgEFhAczBocIGgeIiUcIgAFYAIECKwGCAx0CBAaMA4MFpgSFhtUFhAclBocIKweIiZoIgAE9AIECPwGCAx4CBAabA4MFQwSFhi0FhAdEBocIAQeIidEIgAGOAIECTgGCA04CBAYQA4MF/wSFhoAFhAciBocIxQeIiasIgAEpAIECKAGCAwUCBAZmA4MF0wSFhrcFhAcEBocIAQeIid0IgAEzAIECMgGCAxECBAaoA4MF0QSFhsAFhAcXBocIGQeIiVIIgAF9AIECYgGCAyoCBAZYA4MFaASFhlUFhAd1BocIrweIiVIIgAFfAIECVAGCAzUCBAZZA4MFgASFhmQFhAdxBocIZQeIiS0IgAFLAIECTwGCA3sCBAYvA4MFMwSFhoAFhAdRBocIqweIiQEIgAE5AIECEQGCAwUCBAZHA4MFZgSFhjkFhAc1BocIKQeIiTEIgAFzAIECFQGCAwICBAYKA4MFZgSFhv8FhAemBocIFweIiQYIgAEmAIECIQGCAw0CBAZ5A4MFOQSFhkkFhAcaBocIAQeIiVUIgAEpAIECCgGCA0MCBAaKA4MFTQSFhm4FhAdaBocILweIiXIIgAFlAIECHQGCAxACBAYKA4MFVQSFhoAFhAdlBocIxAeIiRoIgAE5AIECEgGCAwoCBAZmA4MFZgSFhtUFhAciBocIFAeIiSsIgAF1AIECFAGCAw8CBAYkA4MFowSFhoAFhAdEBocIAQeIiRoIgAGKAIECHwGCAyQCBAarA4MFGwSFhqYFhAcmBocILAeIieUIgAFDAIECVwGCAzoCBAapA4MFUgSFhnMFhAcaBocIOweIibMIgAE/AIECOwGCA1oCBAa0A4MFOwSFhqYFhAddBocISQeIiZoIgAEoAIECKAGCAxUCBAZ0A4MFjwSFhtEFhAciBocIJweIia8IgAE5AIECLgGCAxYCBAYYA4MFgASFhgEFhAc2BocIEQeIiSUIgAEvAIECDwGCAxACBAa3A4MFIgSFht8FhAcxBocILQeIibcIgAEuAIECEQGCAyECBAa3A4MFBgSFhmIFhAcPBocIIAeIibcIgAFBAIECIAGCA0kCBAZzA4MFHASFhoAFhAcXBocIgAeIic0IgAEoAIECAwGCAwkCBAZzA4MFMwSFhsAFhAcSBocIBgeIid8IgAFXAIECJQGCAwkCBAZzA4MFOwSFhk0FhAdABocIFQeIiS8IgAFoAIECNwGCAywCBAbaA4MFCQSFhjYFhAc1BocIggeIieIIgAFAAIECWgGCA0YCBAbNA4MFKASFhikFhAcXBocIGgeIiTkIgAE2AIECOQGCA3ACBAa4A4MFBQSFhikFhAcmBocIpgeIidUIgAEeAIECIgGCAxoCBAaFA4MFmASFhnQFhAcKBocIIAeIiYYIgAFLAIECIAGCAwwCBAYzA4MFwASFhv8FhAegBocIKweIiTMIgAEnAIECEwGCAzUCBAbdA4MFGgSFhnIFhAcgBocISQeIif8IgAEfAIECCQGCA0ECBAbqA4MFAgSFhg8FhAcBBocIdgeIiUkIgAFYAIECHwGCAyMCBAZDA4MFZgSFhlUFhAc3BocIugeIiVUIgAE4AIECFQGCAxcCBAZvA4MFOwSFhs0FhActBocIJQeIicAIgAE3AIECJgGCA0YCBAZ8A4MFSQSFhmYFhAcBBocIIgeIiWIIgAFmAIECPQGCA0cCBAYlA4MFIgSFhjUFhAcfBocI8weIicAIgAFFAIECPAGCA0cCBAYmA4MFSQSFhncFhAccBocI3geIiSUIgAFEAIECLQGCA4ACBAYiA4MFAQSFhi8FhAcLBocI9QeIiasIgAE+AIECEQGCAxMCBAZGA4MFkgSFhlUFhAc3BocIPgeIiUYIgAFLAIECDwGCAwkCBAYJA4MFQASFhv8FhAe4BocIdweIiRAIgAElAIECKwGCAyUCBAaaA4MFZASFhqMFhAdVBocIoAeIiQEIgAE/AIECCQGCA1wCBAaIA4MFHASFhkAFhAcgBocIyQeIiVUIgAFWAIECBgGCAxwCBAYFA4MFQASFhv8FhAcZBocI+AeIiQEIgAE4AIECCAGCAxECBAaEA4MFiQSFhv8FhAc3BocIdAeIiYAIgAE6AIECDwGCAxQCBAZSA4MFhwSFhjkFhAcaBocIeQeIiSgIgAGkAIECMgGCAx8CBAaJA4MFmgSFhoUFhAcZBocIIweIidoIgAEzAIECZwGCAywCBAaDA4MFgwSFhnsFhAcfBocIBgeIiZ4IgAFWAIECKAGCA0ACBAaHA4MFlASFhuAFhActBocItweIiYAIgAEWAIECGgGCAxECBAaDA4MF8ASFhpoFhAcOBocIAQeIidEIgAFTAIECDAGCAw0CBAY2A4MFwASFhv8FhAdEBocILweIiRwIgAEtAIECEAGCAxUCBAZbA4MFQASFht4FhAcHBocIAQeIicUIgAE4AIECFQGCAycCBAabA4MFPASFhooFhAcXBocIZgeIidUIgAFVAIECGgGCA1UCBAZVA4MFgASFhoAFhAcgBocIkgeIiasIgAESAIECCwGCAwcCBAY/A4MFkASFhqsFhAcEBocIBAeIifYIgAEjAIECGwGCAwoCBAaSA4MFrgSFhqsFhAcMBocIGgeIiYAIgAG+AIECUAGCAyMCBAZjA4MFtASFhlAFhAd+BocINgeIiS0IgAFVAIECfgGCAy8CBAZXA4MFsASFhjMFhAcpBocIFAeIiSAIgAFlAIECSwGCA4ACBAaLA4MFdgSFhpIFhAd0BocIgAeIiVUIgAE4AIECKQGCAw8CBAawA4MF7ASFhlUFhAclBocICQeIiT4IgAGSAIECJAGCAxMCBAYeA4MFqwSFhv8FhAdhBocIGweIiRQIgAFHAIECHgGCAxECBAZ3A4MFdgSFhv8FhAcRBocIEgeIiYoIgAFlAIECJgGCAzwCBAaKA4MFNwSFhkYFhAcrBocIGgeIiY4IgAGKAIECLQGCAz0CBAY+A4MF2wSFhgEFhAdRBocIvAeIiUAIgAEgAIECKQGCAxQCBAZ1A4MFlwSFho4FhAcUBocIFQeIiaMIgAFwAIECEwGCAwwCBAY9A4MFwwSFhoAFhAcwBocIBAeIiRgIcTEQAFoAAAA/BQAAJQAAAP///////////////////////////////////////////7D2////////////3/H8///////////5/f3////////////0/P//////////6v7+///////////9///////////////2/v//////////7/3+///////////+//7////////////4/v//////////+//+///////////////////////////9/v//////////+/7+///////////+//7////////////+/f/+////////+v/+//7////////+/////////////////////////////////////////////////////////9n/////////////4fzx/f///v/////q+vH6/f/9/v/////+////////////3/7+///////////u/f7+///////////4/v//////////+f7////////////////////////////9////////////9/7////////////////////////////9/v///////////P/////////////////////////////+/v///////////f/////////////////////////////+/f//////////+v/////////////+/////////////////////////////////////////////////////////7r7+v//////////6vv0/v/////////7+/P9/v/+///////9/v//////////7P3+///////////7/f3+/v/////////+/v///////////v7+///////////////////////////+/////////////v7////////////+/////////////////////////////v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////j/////////////+v78/v/////////4/vn9///////////9/f//////////9v39///////////8/vv+/v/////////+/P//////////+P79///////////9//7+///////////7/v//////////9fv+///////////9/f7////////////7/f///////////P3+/////////////v/////////////8////////////+f/+//////////////7//////////////f//////////+v///////////////////////////////////////////v///////////////////////////3ExEABaAAAAVwcAABcAAACLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAKIAYED/gIEBv8DggXkBIOE2wUHCIAGhYaABwkKgAiHiIAJiYqACosBvQCAAoEBgQPyAgQG/wOCBeMEg4TVBQcI/waFhtsHCQqACIeIgAmJioAKiwFqAIACfgGBA+MCBAb8A4IF1gSDhNEFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAJiAYED+AIEBv8DggXsBIOE4gUHCP8GhYb/BwkKgAiHiIAJiYqACosBtQCAAoUBgQPuAgQG/gOCBd0Eg4TqBQcI/waFhpoHCQqACIeIgAmJioAKiwFOAIAChgGBA8oCBAb3A4IFxgSDhLQFBwj/BoWG2wcJCoAIh4iACYmKgAqLAQEAgAK5AYED+QIEBv8DggXzBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBuACAApYBgQP3AgQG/wOCBewEg4TgBQcIgAaFhoAHCQqACIeIgAmJioAKiwFNAIACbgGBA9gCBAb/A4IF7ASDhOYFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAJlAYED+wIEBv8DggXxBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBqgCAAosBgQPxAgQG/AOCBewEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwElAIACdAGBA8QCBAbzA4IF5ASDhP8FBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgALMAYED/gIEBv8DggX1BIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBzwCAAqABgQP6AgQG/wOCBe4Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwFmAIACZwGBA+cCBAb/A4IF0wSDhKsFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKYAYED/AIEBv8DggXwBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBsQCAAocBgQPzAgQG/wOCBeoEg4ThBQcIgAaFhoAHCQqACIeIgAmJioAKiwFQAIACgQGBA9MCBAb/A4IFwgSDhOAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIBAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9gCAAgEBgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwH/AIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcYAgAIjAYED7QIEBt8DggXBBIOEuwUHCKIGhYagBwkKkQiHiJsJiYo+CosBgwCAAi0BgQPGAgQG3QOCBawEg4SwBQcI3AaFhp0HCQr8CIeI3QmJigEKiwFEAIACLwGBA5ICBAbQA4IFlQSDhKcFBwjdBoWGogcJCv8Ih4jfCYmKgAqLAQEAgAKVAYED8QIEBv8DggXdBIOE4AUHCP8GhYb/BwkKgAiHiIAJiYqACosBuACAAo0BgQPqAgQG/QOCBd4Eg4TcBQcI/waFhscHCQqACIeIgAmJioAKiwFRAIACYwGBA7UCBAbyA4IFsASDhL4FBwj5BoWGygcJCv8Ih4j/CYmKgAqLAQEAgAKBAYED6AIEBv0DggXWBIOExQUHCPIGhYbEBwkK/wiHiP8JiYqACosBYwCAAnkBgQPSAgQG+gOCBckEg4TGBQcI/waFhsoHCQqACIeIgAmJioAKiwEXAIACWwGBA6MCBAbyA4IFqgSDhLsFBwj3BoWG0gcJCv8Ih4j/CYmKgAqLAQEAgALIAYED9gIEBv8DggXqBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBbQCAArIBgQPxAgQG/wOCBecEg4T1BQcI/waFhv8HCQqACIeIgAmJioAKiwEsAIACggGBA8kCBAb9A4IFzQSDhMAFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAKEAYED7wIEBvsDggXbBIOE0QUHCP8GhYalBwkKgAiHiIAJiYqACosBXgCAAogBgQPhAgQG+wOCBdoEg4S+BQcI/waFhv8HCQqACIeIgAmJioAKiwEWAIACZAGBA64CBAb1A4IFugSDhKEFBwj/BoWGxwcJCoAIh4iACYmKgAqLAQEAgAK2AYED+QIEBv8DggXoBIOE6wUHCIAGhYaABwkKgAiHiIAJiYqACosBfACAAo8BgQPxAgQG/wOCBeMEg4TqBQcIgAaFhoAHCQqACIeIgAmJioAKiwEjAIACTQGBA7UCBAb7A4IFwQSDhNMFBwj/BoWGzQcJCoAIh4iACYmKgAqLAQEAgAKdAYED9wIEBv8DggXsBIOE5wUHCP8GhYb/BwkKgAiHiIAJiYqACosBeQCAAo0BgQPrAgQG/wOCBeEEg4TjBQcI/waFhv8HCQqACIeIgAmJioAKiwEtAIACYwGBA7wCBAb7A4IFwwSDhNkFBwj/BoWG4AcJCoAIh4iACYmKgAqLAQEAgAIBAYED+wIEBv8DggXVBIOE/wUHCIAGhYaABwkKgAiHiIAJiYqACosBywCAAgEBgQP4AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGJAIACAQGBA7ECBAb/A4IF4ASDhP8FBwiABoWGgAcJCoAIh4iACYmKgAqLAf0AgAIJAYED+AIEBvsDggXPBIOE0AUHCP8GhYbABwkKgAiHiIAJiYqACosBrwCAAg0BgQPgAgQG8wOCBcEEg4S5BQcI+QaFhsYHCQr/CIeI/wmJioAKiwFJAIACEQGBA6sCBAbdA4IFoQSDhLMFBwjsBoWGpwcJCv8Ih4jqCYmKgAqLAQEAgAJfAYED9wIEBv0DggXUBIOEtwUHCP8GhYb/BwkKgAiHiIAJiYqACosB7wCAAloBgQP0AgQG+gOCBdMEg4TRBQcI/waFhv8HCQqACIeIgAmJioAKiwGbAIACTQGBA8MCBAb4A4IFvASDhMMFBwj/BoWG/wcJCoAIh4iACYmKgAqLAQEAgAIYAYED7wIEBvsDggXaBIOE2wUHCP8GhYbNBwkKgAiHiIAJiYqACosByQCAAjMBgQPbAgQG/wOCBcQEg4S6BQcIgAaFhoAHCQqACIeIgAmJioAKiwFFAIACLgGBA74CBAbvA4IFyQSDhNoFBwj/BoWG5AcJCoAIh4iACYmKgAqLAQEAgAK/AYED+wIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB3wCAAqUBgQP5AgQG/wOCBdUEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGNAIACfAGBA/gCBAb/A4IF/wSDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAIQAYED+AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBvgCAAiQBgQPmAgQG/wOCBewEg4T/BQcIgAaFhoAHCQqACIeIgAmJioAKiwGVAIACAQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgALiAYED/wIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB9wCAAsABgQP/AgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwHwAIACgAGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAQEAgAKGAYED/AIEBv8DggX/BIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosB1QCAAj4BgQP6AgQG/wOCBf8Eg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwE3AIACXQGBA/8CBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAYAAgAKAAYEDgAIEBoADggWABIOEgAUHCIAGhYaABwkKgAiHiIAJiYqACosBgACAAoABgQOAAgQGgAOCBYAEg4SABQcIgAaFhoAHCQqACIeIgAmJioAKiwGAAIACgAGBA4ACBAaAA4IFgASDhIAFBwiABoWGgAcJCoAIh4iACYmKgAqLAcoAgAIYAYED1QIEBusDggW6BIOEvwUHCNwGhYagBwkK8AiHiK8JiYr/CosBfgCAAiYBgQO2AgQG6AOCBakEg4S4BQcI5AaFhq4HCQr/CIeIuwmJioAKiwE9AIACLgGBA4oCBAbbA4IFlwSDhLIFBwjwBoWGqgcJCv8Ih4jYCYmKgAqLAQEAgAJwAYED5gIEBvoDggXHBIOEvwUHCPcGhYafBwkK/wiHiP8JiYqACosBpgCAAm0BgQPkAgQG/AOCBdMEg4TXBQcI/waFhq4HCQqACIeIgAmJioAKiwEnAIACTQGBA6ICBAboA4IFrASDhLQFBwj1BoWGsgcJCv8Ih4j/CYmKgAqLAQEAgAI0AYED3AIEBvYDggXGBIOExwUHCPkGhYbcBwkK/wiHiP8JiYqACosBfACAAkoBgQO/AgQG8wOCBbcEg4TBBQcI+gaFht0HCQr/CIeI/wmJioAKiwEYAIACRwGBA4ICBAbbA4IFmgSDhKoFBwjzBoWGtgcJCv8Ih4j/CYmKgAqLAQEAgAK2AYED4QIEBvkDggXbBIOE8AUHCP8GhYbgBwkKgAiHiIAJiYqACosBlQCAApYBgQPi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cmVlY2h1bmtTaXplYWxsQ2h1bmtCeXRlc2NodW5rc3NwbGF0RW5jb2RpbmdzaENvZGVDb3VudGNvbW1lbnRzdHJ1Y3QgUmFkTWV0YSB3aXRoIDExIGVsZW1lbnRzAAAA/pQRAB8AAAAAAAAACAAAAAQAAADpAQAAc3RydWN0IE1lYW5zc3RydWN0IFF1YXRzc3RydWN0IFNoMFYxc3RydWN0IFNoMFYyc3RydWN0IFNoTlYxc3RydWN0IFNoTlYyc3RydWN0IExhYmVsc3N0cnVjdCBNZWFuc1Yxc3RydWN0IFBjU29nc1Yxc3RydWN0IFBjU29nc1Yyc3RydWN0IFNjYWxlc1Yxc3RydWN0IFNjYWxlc1Yyc3RydWN0IFJhZENodW5rTWV0YWZpZWxkIGlkZW50aWZpZXJ2YXJpYW50IGlkZW50aWZpZXJnc3BsYXQAAAyWEQAGAAAAc3RydWN0IFJhZENodW5rUmFuZ2VvZmZzZXRiYXNlZmlsZW5hbWVzdHJ1Y3QgUmFkQ2h1bmtSYW5nZSB3aXRoIDUgZWxlbWVudHMAAEKWEQAkAAAAc3RydWN0IFJhZENodW5rUHJvcGVydHlzdHJ1Y3QgU3BsYXRFbmNvZGluZ2Egc2VxdWVuY2VzdHJ1Y3QgU2V0U3BsYXRFbmNvZGluZ3JnYk1pbnJnYk1heGxuU2NhbGVNaW5sblNjYWxlTWF4c2gxTWF4c2gyTWF4c2gzTWF4bG9kT3BhY2l0eXN0cnVjdCBTZXRTcGxhdEVuY29kaW5nIHdpdGggOCBlbGVtZW50cwD4lhEAJwAAAMwxEABWAAAAbgAAAA4AAADMMRAAVgAAAGgAAAAOAAAAMB4QAFcAAABCAAAAHQAAABwbEABlAAAAUwAAABEAAACsKhAAXAAAANwBAAASAAAArCoQAFwAAADSAQAAPAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3ViZnJhbWUuY3VycmVudF9pbnRlcmxhY2VfaW5mby5pc19ub25lKCmsKhAAXAAAAPYBAAAJAAAArCoQAFwAAACQAQAAHQAAAKwqEABcAAAAkwIAADIAAACsKhAAXAAAABgCAAAvAAAACAAIAAgECAAEAAgEBAIEAAIABAICAQIAAQACAWFzc2VydGlvbiBmYWlsZWQ6IHNlbGYudW5maWx0ZXJpbmdfYnVmZmVyLnJlbWFpbmluZ19ieXRlcygpID4gMACsKhAAXAAAAMUCAAANAAAArCoQAFwAAABkAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYucmVtYWluaW5nX2ZyYW1lcyA+IDAArCoQAFwAAADrAQAACQAAAKwqEABcAAAAPQIAAC8AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmZpbGxlZCA+PSBvbGRfZmlsbGVkAE4aEABrAAAAywAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBuIDw9IGluaXRfdW5maWxsZWQaJBAAUwAAABYBAAAJAAAACSsQAEkAAACwAQAAMQAAANAiEABRAAAAGAEAADQAAABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZFppcEZpbGVSZWFkZXIgd2FzIGluIGFuIGludmFsaWQgc3RhdGUAAACrAQAADAAAAAQAAAChAAAAqwEAAAwAAAAEAAAAogAAAKEAAAComREAowAAAKQAAAClAAAAowAAAKYAAABQYXNzd29yZCByZXF1aXJlZCB0byBkZWNyeXB0IGZpbGV6aXA6OnR5cGVzOjpaaXBMb2NhbEVudHJ5QmxvY2tJbnZhbGlkIGxvY2FsIGZpbGUgaGVhZGVyAAAAgCOaEQAZAAAA4B0QAE8AAADlBQAAFAAAAOAdEABPAAAA5QUAACEAAADgHRAATwAAANkFAAAhAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheZ+yMqvxc5UD3PJUxwFzIPmovxL2c2yrURwfr/JG4Ile1AMSUyG4HQqO0E9PbxAfCNR0GOPwCHF02ae75ZArxKPz2uYAkUvravaVQt+Tf/Vgz8u8zahI6uwG0WGCN/aoOUybsu1w6lUBuiUpGqcVe3+TdO65DVV3x+JJBQTlt60WYa4LvZVbq2S3Mvil0LV/iM93nhJKFo2ToT12qZiVfprUUthFil0BduJ9lc6NYJQrJ/O4jtesM4lWqftfI6jCcsdl7HKXjn5GpooN1+9y4RoG28CBGUPucpIR9ulWmz21D5d8RXamK3j346dIR87C3xzNyRXKIwwf+hUA6szgsXljaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm9Jb0ludmFsaWRBcmNoaXZlVW5zdXBwb3J0ZWRBcmNoaXZlRmlsZU5vdEZvdW5kSW52YWxpZFBhc3N3b3Jk/wAAAFwmEABoAAAAIgEAAEcAAADqAQAAcAIAAAgAAADrAQAA7AEAAO0BAADuAQAA7wEAAPABAADxAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACgAAAACAAAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAsQAAAAgAAAAEAAAALwAAALEAAAAIAAAABAAAALIAAAAvAAAAfJwRALMAAAC0AAAApQAAALUAAACmAAAARGVjb2RpbmdFbmNvZGluZ1BhcmFtZXRlckxpbWl0c0lvRXJyb3IAAAAAAAAEAAAABAAAAAICAABMaW1pdEVycm9yAAAAAAAACAAAAAQAAAADAgAAAAAAAAQAAAAEAAAABAIAAG1heF9pbWFnZV93aWR0aG1heF9pbWFnZV9oZWlnaHRtYXhfYWxsb2MFAgAAEAAAAAQAAAAGAgAAAAAAAAQAAAAEAAAABwIAAERlY29kaW5nRXJyb3Jmb3JtYXR1bmRlcmx5aW5nRW5jb2RpbmdFcnJvcgAAAAAAAAEAAAABAAAACAIAAAAAAAABAAAAAQAAAAkCAAAAAAAAAQAAAAEAAAAKAgAAAAAAAAQAAAAEAAAAwgEAAENpY3BwcmltYXJpZXN0cmFuc2Zlcm1hdHJpeGZ1bGxfcmFuZ2VEaW1lbnNpb25FcnJvckluc3VmZmljaWVudE1lbW9yeQAAAAAAAAAgAAAACAAAAAsCAAAAAAAABAAAAAQAAAAMAgAAbGltaXRzc3VwcG9ydGVkAA0CAAAMAAAABAAAAA4CAABQYXJhbWV0ZXJFcnJvckNhcGFjaXR5T3ZlcmZsb3cAAAAAAAAEAAAABAAAAA8CAABBbGxvY0VycmxheW91dEV4YWN0TmFtZVBhdGhFeHRlbnNpb25Vbmtub3duaW52YWxpZCBzZWVrIHRvIGEgbmVnYXRpdmUgb3Igb3ZlcmZsb3dpbmcgcG9zaXRpb24AAACznhEAMgAAABQAAACSMhAAVQAAAD0AAAAkAAAAAAAAAAQAAAAEAAAAEAIAAFVuc3VwcG9ydGVkRXJyb3JQbmdKcGVnR2lmV2ViUFBubVRpZmZUZ2FEZHNCbXBJY29IZHJPcGVuRXhyRmFyYmZlbGRBdmlmUW9pUGN4QThMMUxhMVJnYjFSZ2JhMUwyTGEyUmdiMlJnYmEyTDRMYTRSZ2I0UmdiYTRSZ2I1eDFMOExhOFJnYjhSZ2JhOEwxNkxhMTZSZ2IxNlJnYmExNkJncjhCZ3JhOFJnYjMyRlJnYmEzMkZDbXlrOENteWsxNkxpbWl0U3VwcG9ydAAAAAAEAAAABAAAALgAAAC5AAAAEQIAAERpbWVuc2lvbk1pc21hdGNoRmFpbGVkQWxyZWFkeQAAAAAAAAQAAAAEAAAAEgIAAFJnYkNpY3BSZXF1aXJlZEdlbmVyaWNOb01vcmVEYXRhAAAAAAQAAAABAAAAEwIAAENpY3BNaXNtYXRjaGV4cGVjdGVkZm91bmQAAAAUAgAAKAAAAAgAAAAVAgAAFAIAACgAAAAIAAAAFgIAABUCAAB0oBEAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAGAAAAAQAAAAdAgAAHAIAABgAAAAEAAAAHgIAAB0CAACwoBEAHwIAACACAAClAAAAHwIAAKYAAACrAQAADAAAAAQAAAAhAgAAqwEAAAwAAAAEAAAAzAAAACECAADsoBEAowAAAM0AAAClAAAAowAAAKYAAADOAAAABAAAAAQAAAAaAAAAzgAAAAQAAAAEAAAAzwAAABoAAAAooREA0AAAANEAAAClAAAA0gAAAKYAAAAAAAAAAQAAAAEAAAAiAgAAAAAAAAEAAAABAAAAIwIAACICAABkoREAJAIAACUCAAAmAgAAJAIAACcCAAAAAAAACAAAAAQAAAC7AAAAAAAAAAgAAAAEAAAAdgAAALsAAACgoREAowAAALwAAAClAAAAowAAAKYAAAAoAgAANAAAAAQAAADaAAAAKAIAADQAAAAEAAAA2wAAANoAAADcoREA3AAAACkCAADeAAAA3wAAAOAAAAAqAgAASAAAAAgAAAArAgAAKgIAAEgAAAAIAAAALAIAACsCAAAYohEALQIAAC4CAAAvAgAAMAIAADECAAAyAgAAIAAAAAQAAADaAAAAMgIAACAAAAAEAAAA2wAAANoAAABUohEA3AAAADMCAADeAAAA3wAAAOAAAADZAAAAJAAAAAQAAADaAAAA2QAAACQAAAAEAAAA2wAAANoAAACQohEA3AAAAN0AAADeAAAA3wAAAOAAAADlAAAAJAAAAAQAAADaAAAA5QAAACQAAAAEAAAA2wAAANoAAADMohEA3AAAAOsAAADeAAAA3wAAAOAAAADhAAAAIAAAAAQAAADaAAAA4QAAACAAAAAEAAAA2wAAANoAAAAIoxEA3AAAAOIAAADeAAAA3wAAAOAAAAA0AgAAKAAAAAQAAADaAAAANAIAACgAAAAEAAAA2wAAANoAAABEoxEA3AAAAOQAAADeAAAA3wAAAOAAAAD1AAAANQIAADYCAAA3AgAA+QAAAPoAAAD0AAAAOAIAADkCAAA6AgAAOwIAADwCAAAFAQAA9AAAAAABAAA9AgAAPgIAAD8CAAAEAQAABQEAAPQAAABAAgAAQQIAAEICAABDAgAARAIAAEUCAAD0AAAA+wAAAEYCAABHAgAASAIAAA4BAAD6AAAA9AAAAEkCAABKAgAASwIAAEwCAAAKAQAA8wAAAPQAAABNAgAATgIAAE8CAABQAgAAUQIAAFICAAD0AAAAAAAAAAQAAAAEAAAAUwIAAGNvbnRleHQAVAIAAAwAAAAEAAAAxwAAAHNvdXJjZQAAVAIAAAwAAAAEAAAAxgAAAFQCAAAMAAAABAAAAMcAAADGAAAAdKQRAFUCAADJAAAApQAAAFYCAACmAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbUZhaWxlZENhbm5vdE1ha2VQcm9ncmVzc0JhZFBhcmFtQWRsZXIzMk1pc21hdGNoRmFpbGVkRG9uZU5lZWRzTW9yZUlucHV0SGFzTW9yZU91dHB1dENvbG9yQ29sb3JMYXlvdXRDb2xvcnNwYWNlQ2ljcEZvcm1hdEdlbmVyaWNGZWF0dXJlbm90IHlldCBpbXBsZW1lbnRlZABVExAAFwAAADoAAAAeAAAAU1JnYlVuc3BlY2lmaWVkUmdiTVJnYkJCdDYwMVJnYjI0MG1HZW5lcmljRmlsbVJnYjIwMjBYeXpTbXB0ZVJwNDMxU21wdGVScDQzMkluZHVzdHJ5MjIAAFUTEAAXAAAAwQAAACgAAABVExAAFwAAAN8AAAAhAAAAVRMQABcAAADpAAAAIQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNjYWxlcy54LmlzX2Zpbml0ZSgpICYmIHNjYWxlcy55LmlzX2Zpbml0ZSgpICYmIHNjYWxlcy56LmlzX2Zpbml0ZSgpAABVExAAFwAAAPcAAAAJAAAAVRMQABcAAAAEAQAAJQAAAFUTEAAXAAAABQEAACQAAABVExAAFwAAABIBAAAlAAAAVRMQABcAAAATAQAAJAAAAFUTEAAXAAAAHwEAACUAAABVExAAFwAAACABAAAkAAAAVRMQABcAAAAxAQAAFgAAAFUTEAAXAAAALQEAABYAAABVExAAFwAAADUBAAAXAAAAVRMQABcAAAA9AQAAEQAAAFUTEAAXAAAAQQEAABEAAABVExAAFwAAAEUBAAARAAAAVRMQABcAAACFAQAACQAAAD0TEAAXAAAAQQEAACEAAAA9ExAAFwAAAEoBAAAlAAAAPRMQABcAAABLAQAAIQAAAGFzc2VydGlvbiBmYWlsZWQ6IHRvdGFsX2Nvdi54eCgpLmlzX2Zpbml0ZSgpICYmIHRvdGFsX2Nvdi55eSgpLmlzX2Zpbml0ZSgpICYmCiAgICB0b3RhbF9jb3YuenooKS5pc19maW5pdGUoKT0TEAAXAAAAYgEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiB0b3RhbF9jb3YueHkoKS5pc19maW5pdGUoKSAmJiB0b3RhbF9jb3YueHooKS5pc19maW5pdGUoKSAmJgogICAgdG90YWxfY292Lnl6KCkuaXNfZmluaXRlKCk9ExAAFwAAAGMBAAAJAAAAPRMQABcAAABnAQAACQAAAD0TEAAXAAAAmQEAACsAAAA9ExAAFwAAAKUBAAAlAAAAPRMQABcAAACmAQAAJAAAAD0TEAAXAAAAsgEAACUAAAA9ExAAFwAAALMBAAAkAAAAPRMQABcAAAC/AQAAJQAAAD0TEAAXAAAAwAEAACQAAAA9ExAAFwAAABMBAAAVAAAAPRMQABcAAADRAQAAFgAAAD0TEAAXAAAAzQEAABYAAAA9ExAAFwAAANUBAAAXAAAAPRMQABcAAADeAQAAEQAAAD0TEAAXAAAA4gEAABEAAAA9ExAAFwAAAOYBAAARAAAAPRMQABcAAAAiAgAACQAAAElkZW50aXR5QnQ3MDlVc0ZDQ0J0NDcwQkdTbXB0ZTE3MG1TbXB0ZTI0MG1ZQ2dDb0J0MjAyME5vbkNvbnN0YW50QnQyMDIwQ29uc3RhbnRTbXB0ZTIwODVDaHJvbWF0aWNpdHlEZXJpdmVkTm9uQ29uc3RhbnRDaHJvbWF0aWNpdHlEZXJpdmVkQ29uc3RhbnRCdDIxMDBJcHRQcUMyWUNnQ29SZVlDZ0NvUm9OYXJyb3dSYW5nZUZ1bGxSYW5nZVUTEAAXAAAAxQAAAC8AAABVExAAFwAAABwCAABIAAAAVRMQABcAAAAiAgAAMAAAAFUTEAAXAAAAeAIAADEAAABVExAAFwAAAHoCAAAxAAAAVRMQABcAAACEAgAAIwAAAFUTEAAXAAAAhgIAAB4AAABVExAAFwAAAIgCAAAqAAAAVRMQABcAAAApAgAAQgAAAFUTEAAXAAAAVgIAAC4AAABVExAAFwAAAFYCAAAdAAAAVRMQABcAAABjAgAALgAAAFUTEAAXAAAAYwIAAB0AAABVExAAFwAAAHACAAAuAAAAVRMQABcAAABwAgAAHQAAAFUTEAAXAAAAPwIAAEkAAABVExAAFwAAAAsCAAAfAAAAVRMQABcAAAAMAgAANwAAAFUTEAAXAAAADQIAADwAAABVExAAFwAAAA4CAAA+AAAAVRMQABcAAAAKAgAAPQAAAFUTEAAXAAAAOAIAAEcAAAA9ExAAFwAAABcBAAAZAAAAPRMQABcAAAAyAwAASAAAAD0TEAAXAAAAOAMAADAAAAA9ExAAFwAAAIMDAAAxAAAAPRMQABcAAACFAwAAMQAAAD0TEAAXAAAAjwMAACMAAAA9ExAAFwAAAJEDAAAeAAAAPRMQABcAAACTAwAAKgAAAD0TEAAXAAAAPwMAAEIAAAA9ExAAFwAAAGoDAAAZAAAAPRMQABcAAABqAwAANwAAAD0TEAAXAAAAcwMAABkAAAA9ExAAFwAAAHMDAAA3AAAAPRMQABcAAAB8AwAAGQAAAD0TEAAXAAAAfAMAADcAAAA9ExAAFwAAAFYDAABJAAAAPRMQABcAAAAIAwAACQAAAD0TEAAXAAAACQMAAAkAAAA9ExAAFwAAAAoDAAAJAAAAPRMQABcAAAALAwAACQAAAD0TEAAXAAAADAMAAAkAAAA9ExAAFwAAAA0DAAAJAAAAPRMQABcAAAATAwAAHwAAAD0TEAAXAAAAFAMAADcAAAA9ExAAFwAAABUDAAA8AAAAPRMQABcAAAAXAwAAHQAAAD0TEAAXAAAAGAMAACYAAAA9ExAAFwAAABYDAAA+AAAAPRMQABcAAAASAwAAPQAAAD0TEAAXAAAATwMAAEcAAABCdDQ3ME1MaW5lYXJMb2cxMDBMb2dTcXJ0SWVjNjE5NjZfMl80QnQxMzYxQnQyMDIwXzEwYml0QnQyMDIwXzEyYml0U21wdGUyMDg0U21wdGU0MjhCdDIxMDBIbGcAAAAAAAAACAAAAAQAAABXAgAAuDAQAFkAAABWAQAALgAAALgwEABZAAAARQEAADYAAAC4MBAAWQAAANIEAAAOAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2NhcCA+PSBsZW64MBAAWQAAAJ0EAAANAAAAIiMQAF4AAADyAAAACQAAACIjEABeAAAA/wAAABIAAABYTUw6Y29tLmFkb2JlLnhtcFJhdyBwcm9maWxlIHR5cGUgaXB0Y1JhdyBwcm9maWxlIHR5cGUgOGJpbQBBjN3GAAsFAQAAAIgAQZzdxgALBQEAAACLAEGs3cYACwYBAAAAWAIAQbzdxgALBQEAAACeAEHM3cYACwYBAAAAQgEAQdzdxgALBgEAAABZAgBB7N3GAAsGAQAAAFoCAEH83cYAC5YgAQAAAFsCAAA1GRAATgAAAHEHAAARAAAAqycQAB0AAABPAQAACQAAAKsnEAAdAAAAUAEAAAkAAACrJxAAHQAAAE4BAAAvAAAAqycQAB0AAABvAQAACQAAAKsnEAAdAAAAcAEAAAkAAACrJxAAHQAAAHEBAAAJAAAAqycQAB0AAAByAQAACQAAAKsnEAAdAAAAbgEAAC8AAACrJxAAHQAAAIwBAAAJAAAAqycQAB0AAACNAQAACQAAAKsnEAAdAAAAjgEAAAkAAACrJxAAHQAAAI8BAAAJAAAAqycQAB0AAACLAQAALwAAAKsnEAAdAAAAngEAAA0AAACrJxAAHQAAALYAAAAHAAAAqycQAB0AAAC2AAAAHwAAAKsnEAAdAAAAmQAAABQAAACrJxAAHQAAAGwAAAAUAAAAqycQAB0AAAAzAAAAHQAAAKsnEAAdAAAANQAAAB0AAABwbHlJbnZhbGlkIFBMWSBoZWFkZXIAAAC0DhAAFAAAAMMBAAAVAAAAcHJvcGVydHlNaXNzaW5nIFBMWSBmb3JtYXQgbGluZU1pc3NpbmcgdmVydGV4IGVsZW1lbnR4eXpyZWRncmVlbmJsdWWxsBEAAQAAALKwEQABAAAAs7ARAAEAAAC0sBEAAwAAALewEQAFAAAAvLARAAQAAABQTFkgbGlzdCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkUHJvcGVydHkgb3V0c2lkZSBvZiBlbGVtZW50Y2h1bmtNaXNzaW5nIHggcHJvcGVydHlNaXNzaW5nIHkgcHJvcGVydHlNaXNzaW5nIHogcHJvcGVydHlzY2FsZV8wTWlzc2luZyBzY2FsZV8wIHByb3BlcnR5c2NhbGVfMU1pc3Npbmcgc2NhbGVfMSBwcm9wZXJ0eXNjYWxlXzJNaXNzaW5nIHNjYWxlXzIgcHJvcGVydHlyb3RfMU1pc3Npbmcgcm90XzAgcHJvcGVydHlyb3RfMk1pc3Npbmcgcm90XzEgcHJvcGVydHlyb3RfM01pc3Npbmcgcm90XzIgcHJvcGVydHlyb3RfME1pc3Npbmcgcm90XzMgcHJvcGVydHlvcGFjaXR5TWlzc2luZyBvcGFjaXR5IHByb3BlcnR5Zl9kY18wTWlzc2luZyBmX2RjXzAgcHJvcGVydHlmX2RjXzFNaXNzaW5nIGZfZGNfMSBwcm9wZXJ0eWZfZGNfMk1pc3NpbmcgZl9kY18yIHByb3BlcnR5bGFiZWw/Pz8gTWlzc2luZyBsYWJlbCBmaWVsZGluc3RhbmNlX2xhYmVsPz8/IE1pc3NpbmcgaW5zdGFuY2VfbGFiZWwgcHJvcGVydHkAtA4QABQAAADfAwAAKAAAALQOEAAUAAAAzQMAACgAAAC0DhAAFAAAANYDAAAoAAAAtA4QABQAAACnBAAAJgAAALQOEAAUAAAAqAQAACcAAAC0DhAAFAAAAKoEAAAqAAAAtA4QABQAAACuBAAAKgAAALQOEAAUAAAAsgQAACoAAAC0DhAAFAAAALYEAAAqAAAAtA4QABQAAACgBAAAKgAAALQOEAAUAAAApAQAACoAAAC0DhAAFAAAAIgEAAAmAAAAtA4QABQAAACJBAAAJwAAALQOEAAUAAAAiwQAACoAAAC0DhAAFAAAAI8EAAAqAAAAtA4QABQAAACTBAAAKgAAALQOEAAUAAAAlwQAACoAAAC0DhAAFAAAAIEEAAApAAAAtA4QABQAAACFBAAAKQAAALQOEAAUAAAA0AQAACYAAAC0DhAAFAAAAM8EAAAnAAAAtA4QABQAAADMBAAAKgAAALQOEAAUAAAAyAQAACoAAAC0DhAAFAAAAL8EAAAqAAAAtA4QABQAAADSBAAAKgAAALQOEAAUAAAAMwMAABwAAAC0DhAAFAAAADQDAAAcAAAAtA4QABQAAAA1AwAAHAAAALQOEAAUAAAANgMAABsAAAC0DhAAFAAAADcDAAAbAAAAtA4QABQAAAA4AwAAGwAAALQOEAAUAAAAOQMAABkAAAC0DhAAFAAAADoDAAAZAAAAtA4QABQAAAA7AwAAGQAAALQOEAAUAAAAPAMAAB0AAAC0DhAAFAAAAD0DAAAaAAAAtA4QABQAAAA+AwAAGgAAALQOEAAUAAAAPwMAABoAAAC0DhAAFAAAAEADAAAaAAAATWlzc2luZyBjaHVuayBlbGVtZW50IGZvciBTdXBlclNwbGF0IFBMWW1pbl94TWlzc2luZyBtaW5feCBwcm9wZXJ0eW1pbl95TWlzc2luZyBtaW5feSBwcm9wZXJ0eW1pbl96TWlzc2luZyBtaW5feiBwcm9wZXJ0eW1heF94TWlzc2luZyBtYXhfeCBwcm9wZXJ0eW1heF95TWlzc2luZyBtYXhfeSBwcm9wZXJ0eW1heF96TWlzc2luZyBtYXhfeiBwcm9wZXJ0eW1pbl9zY2FsZV94TWlzc2luZyBtaW5fc2NhbGVfeCBwcm9wZXJ0eW1pbl9zY2FsZV95TWlzc2luZyBtaW5fc2NhbGVfeSBwcm9wZXJ0eW1pbl9zY2FsZV96TWlzc2luZyBtaW5fc2NhbGVfeiBwcm9wZXJ0eW1heF9zY2FsZV94TWlzc2luZyBtYXhfc2NhbGVfeCBwcm9wZXJ0eW1heF9zY2FsZV95TWlzc2luZyBtYXhfc2NhbGVfeSBwcm9wZXJ0eW1heF9zY2FsZV96TWlzc2luZyBtYXhfc2NhbGVfeiBwcm9wZXJ0eW1pbl9ybWluX2dtaW5fYm1heF9ybWF4X2dtYXhfYnBhY2tlZF9wb3NpdGlvbk1pc3NpbmcgcGFja2VkX3Bvc2l0aW9uIHByb3BlcnR5cGFja2VkX3JvdGF0aW9uTWlzc2luZyBwYWNrZWRfcm90YXRpb24gcHJvcGVydHlwYWNrZWRfc2NhbGVNaXNzaW5nIHBhY2tlZF9zY2FsZSBwcm9wZXJ0eXBhY2tlZF9jb2xvck1pc3NpbmcgcGFja2VkX2NvbG9yIHByb3BlcnR5AAC0DhAAFAAAAJECAAAf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aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcmNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AAAA4RQQAFwAAAATAAAACQAAAGxvY2sgY291bnQgb3ZlcmZsb3cgaW4gcmVlbnRyYW50IG11dGV4AAB5IhAAVgAAACMBAAAtAAAAAQAAAAAAAADTIAAAaAEAACAgICAgICAgICAgICBhdCAKwyAAAGgEAAI6IADTIAAAaAEAAyAtIAAgICAgICA8dW5rbm93bj7BIACAYABjYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tpbmcgdGhyZWFkAAAAzSMQAEwAAACQAAAACQAAAO+/vQBTKxAAZAAAAGcBAAAwAAAAc3Rkb3V0TGF6eUxvY2sgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZCciEABRAAAAngEAAAUAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAVi0QAEwAAAAmAAAADQAAAFdvdWxkQmxvY2sAAAAAAAAIAAAABAAAAG0CAAB1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UA0SgQAEwAAACKAQAAHQAAAG4CAAAQAAAABAAAAG8CAABwAgAAT3MAAAAAAAAEAAAABAAAAHECAABjb2RlAAAAAAEAAAABAAAAcgIAAGtpbmSYAQAADAAAAAQAAABzAgAAbWVzc2FnZUtpbmRFcnJvcgAAAAAIAAAABAAAAHQCAAAAAAAABAAAAAQAAAB1AgAAQ3VzdG9tcGFuaWNrZWQgYXQgOgoZIRAAXQAAABYBAAApAAAAmAEAAAwAAAAEAAAAdgIAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c05vdEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3RlbUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWREYXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlUXVvdGFFeGNlZWRlZEZpbGVUb29MYXJnZVJlc291cmNlQnVzeUV4ZWN1dGFibGVGaWxlQnVzeURlYWRsb2NrQ3Jvc3Nlc0RldmljZXNUb29NYW55TGlua3NJbnZhbGlkRmlsZW5hbWVBcmd1bWVudExpc3RUb29Mb25nSW50ZXJydXB0ZWRVbnN1cHBvcnRlZFVuZXhwZWN0ZWRFb2ZPdXRPZk1lbW9yeUluUHJvZ3Jlc3NPdGhlclVuY2F0ZWdvcml6ZWSUHRAASwAAAFwDAAAUAAAAcndsb2NrIGhhcyBub3QgYmVlbiBsb2NrZWQgZm9yIHJlYWRpbmcAAJ0VEABdAAAAPgAAAAkAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AABuJBAAZAAAAHwAAAARAAAAbiQQAGQAAACJAAAAEQAAAHcCAAAMAAAABAAAAHgCAAAAAAAABAAAAAQAAAB5AgAARnJvbVV0ZjhFcnJvcmJ5dGVzZXJyb3IAQaCVxwALmw0BAAAAyQEAAFRyeUZyb21JbnRFcnJvcmZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgAAt8oRABsAAAAlAAAAAgAAANTKEQAAAAAABAAAAAQAAAA6AAAAAAAAAAQAAAAEAAAAhAAAAFV0ZjhFcnJvcnZhbGlkX3VwX3RvZXJyb3JfbGVuKClaSVA2NCBmb290ZXIgaW5kaWNhdGVzIG1vcmUgZmlsZXMgb24gdGhpcyBkaXNrIHRoYW4gaW4gdGhlIHdob2xlIGFyY2hpdmVJbnZhbGlkIGNlbnRyYWwgZGlyZWN0b3J5IHNpemUgb3Igb2Zmc2V0NzQzMjEwLy4tZ/JCQ+UsKyopKCcmJSQjIiE4IB8eHRz/lKSViKCbrd3ehnroytfg0NzMu7ezsaiyyOLDmriufni/ncKqvaKhlsGOiauwuae6cK/AvJyMj3uFgJOKknLfl/nY7uz949rm94e08en29OeL9fP768nE8NaYts21fxvU09LV5MWpn4OsaVBiYGFRz5F0c5CCmXlrhG1ufG9SbHaNcYF3faV1XGpTSGNdQU+m7aPHvuHRy8bZ287q+J7v/////////////////////////////////////////////////////////////////////////////////////0F0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAAPhUQAF4AAABrAAAADQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgT25jZSBzdGF0ZfsVEABbAAAAOgAAABIAAABDUkMzMiBjaGVja3N1bSBmYWlsZWQgb24gVW5pY29kZSBleHRyYSBmaWVsZFVuaWNvZGUgZXh0cmEgZmllbGQgaXMgdG9vIHNtYWxsRXh0ZW5kZWQgdGltZXN0YW1wIGZpZWxkIGlzIGVtcHR5ZmxhZ3MgYW5kIGxlbiBkb24ndCBtYXRjaCBpbiBleHRlbmRlZCB0aW1lc3RhbXAgZmllbGROVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGUgc2l6ZU5URlMgZXh0cmEgZmllbGQgaGFzIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSB0YWdOVEZTIGV4dHJhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IGV4Y2VlZHMgZGVjbGFyZWQgbGVuZ3RoAAB2LhAAVAAAAAYGAAA7AAAAWklQNjQgZXh0cmEgZmllbGQgdHJ1bmNhdGVkWklQNjQgZXh0cmEtZGF0YSBmaWVsZCBpcyB0aGUgd3JvbmcgbGVuZ3RoQUVTIGV4dHJhIGZpZWxkIHRydW5jYXRlZEludmFsaWQgQUVTIGVuY3J5cHRpb24gc3RyZW5ndGhJbnZhbGlkIEFFUyB2ZW5kb3IgdmVyc2lvbkludmFsaWQgQUVTIHZlbmRvckFFUyBleHRyYSBkYXRhIGZpZWxkIGhhcyBhbiB1bnN1cHBvcnRlZCBsZW5ndGhFeHRyYSBmaWVsZCBjb250ZW50IHRydW5jYXRlZEV4dHJhIGZpZWxkIGhlYWRlciB0cnVuY2F0ZWRJbnZhbGlkIGNoZWNrc3Vtc3BlY2lmaWVkIGZpbGUgbm90IGZvdW5kIGluIGFyY2hpdmVwcm92aWRlZCBwYXNzd29yZCBpcyBpbmNvcnJlY3ROb25lU29tZQAAAEEqEABqAAAAwwAAAAkAAABBKhAAagAAALwAAAAqAAAAQSoQAGoAAAC5AAAAKgAAAFIPEABiAAAAMQIAABsAAABSDxAAYgAAADICAAAdAAAAUg8QAGIAAAB0AQAAKQAAAFIPEABiAAAAeQEAABwAAABSDxAAYgAAAHkBAAAtAAAAUg8QAGIAAACAAQAAMAAAAFIPEABiAAAASwEAACkAAABSDxAA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").buffer, ko = WebAssembly.compile(HG); +let eo = !1; +const KG = MG({ module_or_path: ko }).then( + (Q) => { + eo = !0; } - getRadMeta() { - return this.radMetaPromise ? this.radMetaPromise : (this.radMetaPromise = (async () => { - if (await mh, this.fileBytes) { - const A = rB(this.fileBytes.slice(0, 1048576)); - if (A) - return A; - throw new Error("Failed to decode RAD header"); - } - if (!this.rootUrl) - throw new Error("No url or fileBytes provided"); - for (const A of [65536, 256 * 1024, 1024 * 1024]) { - const I = await JQ({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset: 0, - bytes: A - }), g = rB(I); - if (g) - return g; +); +function rG() { + return eo; +} +const No = '(function(){"use strict";class I{static __wrap(t){t=t>>>0;const e=Object.create(I.prototype);return e.__wbg_ptr=t,nt.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,nt.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_chunkdecoder_free(t,0)}finish(){const t=this.__destroy_into_raw(),e=s.chunkdecoder_finish(t);if(e[2])throw i(e[1]);return i(e[0])}push(t){const e=s.chunkdecoder_push(this.__wbg_ptr,t);if(e[1])throw i(e[0])}}Symbol.dispose&&(I.prototype[Symbol.dispose]=I.prototype.free);class z{static __wrap(t){t=t>>>0;const e=Object.create(z.prototype);return e.__wbg_ptr=t,rt.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,rt.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_csplatarray_free(t,0)}bhatt_lod(t){s.csplatarray_bhatt_lod(this.__wbg_ptr,t)}has_lod(){return s.csplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(t){s.csplatarray_inject_rgba8(this.__wbg_ptr,t)}len(){return s.csplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(t,e){s.csplatarray_tiny_lod(this.__wbg_ptr,t,e)}to_extsplats(){const t=s.csplatarray_to_extsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_extsplats_lod(){const t=s.csplatarray_to_extsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats(){const t=s.csplatarray_to_packedsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats_lod(){const t=s.csplatarray_to_packedsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}get maxShDegree(){return s.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return s.__wbg_get_csplatarray_numSplats(this.__wbg_ptr)>>>0}set maxShDegree(t){s.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr,t)}set numSplats(t){s.__wbg_set_csplatarray_numSplats(this.__wbg_ptr,t)}}Symbol.dispose&&(z.prototype[Symbol.dispose]=z.prototype.free);class P{static __wrap(t){t=t>>>0;const e=Object.create(P.prototype);return e.__wbg_ptr=t,ot.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,ot.unregister(this),t}free(){const t=this.__destroy_into_raw();s.__wbg_gsplatarray_free(t,0)}get maxShDegree(){return s.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr)>>>0}get numSplats(){return s.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr)>>>0}bhatt_lod(t){s.gsplatarray_bhatt_lod(this.__wbg_ptr,t)}has_lod(){return s.gsplatarray_has_lod(this.__wbg_ptr)!==0}inject_rgba8(t){s.gsplatarray_inject_rgba8(this.__wbg_ptr,t)}len(){return s.gsplatarray_len(this.__wbg_ptr)>>>0}tiny_lod(t,e){s.gsplatarray_tiny_lod(this.__wbg_ptr,t,e)}to_extsplats(){const t=s.gsplatarray_to_extsplats(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_extsplats_lod(){const t=s.gsplatarray_to_extsplats_lod(this.__wbg_ptr);if(t[2])throw i(t[1]);return i(t[0])}to_packedsplats(t){const e=s.gsplatarray_to_packedsplats(this.__wbg_ptr,t);if(e[2])throw i(e[1]);return i(e[0])}to_packedsplats_lod(t){const e=s.gsplatarray_to_packedsplats_lod(this.__wbg_ptr,t);if(e[2])throw i(e[1]);return i(e[0])}set maxShDegree(t){s.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr,t)}set numSplats(t){s.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr,t)}}Symbol.dispose&&(P.prototype[Symbol.dispose]=P.prototype.free);function ut(n,t,e,r,o,a){const _=s.bhatt_lod_extsplats(n,t,e,b(r)?0:x(r),o,b(a)?0:x(a));if(_[2])throw i(_[1]);return i(_[0])}function dt(n,t,e,r,o,a){const _=s.bhatt_lod_packedsplats(n,t,b(e)?0:x(e),r,b(o)?0:x(o),a);if(_[2])throw i(_[1]);return i(_[0])}function ft(n,t,e){var r=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),o=d,a=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d;const c=s.decode_to_csplatarray(r,o,a,_,e);if(c[2])throw i(c[1]);return I.__wrap(c[0])}function bt(n,t,e,r,o){var a=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d,c=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),f=d;const u=s.decode_to_extsplats(a,_,c,f,b(e)?0:x(e),b(r)?0:x(r),b(o)?0:x(o));if(u[2])throw i(u[1]);return I.__wrap(u[0])}function wt(n,t){var e=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),r=d,o=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;const _=s.decode_to_gsplatarray(e,r,o,a);if(_[2])throw i(_[1]);return I.__wrap(_[0])}function gt(n,t,e,r,o,a){var _=b(n)?0:k(n,s.__wbindgen_malloc,s.__wbindgen_realloc),c=d,f=b(t)?0:k(t,s.__wbindgen_malloc,s.__wbindgen_realloc),u=d;const l=s.decode_to_packedsplats(_,c,f,u,e,b(r)?0:x(r),b(o)?0:x(o),b(a)?0:x(a));if(l[2])throw i(l[1]);return I.__wrap(l[0])}function pt(n){s.dispose_lod_tree(n)}function yt(n,t,e,r,o,a,_,c,f,u,l){const g=R(r,s.__wbindgen_malloc),h=d,S=R(o,s.__wbindgen_malloc),T=d,M=F(a,s.__wbindgen_malloc),A=d,m=F(_,s.__wbindgen_malloc),p=d,L=F(c,s.__wbindgen_malloc),y=d,w=F(f,s.__wbindgen_malloc),O=d,D=F(u,s.__wbindgen_malloc),$=d,v=F(l,s.__wbindgen_malloc),U=d,E=s.dynamic_traverse_lod_trees(n,t,b(e)?4294967297:Math.fround(e),g,h,S,T,M,A,m,p,L,y,w,O,D,$,v,U);if(E[2])throw i(E[1]);return i(E[0])}function ht(n,t){const e=s.get_lod_tree_level(n,t);if(e[2])throw i(e[1]);return i(e[0])}function mt(n,t){const e=s.init_lod_tree(n,t);if(e[2])throw i(e[1]);return i(e[0])}function St(n){const t=s.new_lod_tree(n);if(t[2])throw i(t[1]);return i(t[0])}function xt(n){const t=s.new_shared_lod_tree(n);if(t[2])throw i(t[1]);return i(t[0])}function At(n,t,e){return s.sort32_splats(n,t,e)>>>0}function Ft(n,t,e){return s.sort_splats(n,t,e)>>>0}function Mt(n,t,e,r,o,a,_){const c=s.tiny_lod_extsplats(n,t,e,b(r)?0:x(r),o,a,b(_)?0:x(_));if(c[2])throw i(c[1]);return i(c[0])}function vt(n,t,e,r,o,a,_){const c=s.tiny_lod_packedsplats(n,t,b(e)?0:x(e),r,o,b(a)?0:x(a),_);if(c[2])throw i(c[1]);return i(c[0])}function kt(n,t,e,r,o,a,_,c,f,u,l){const g=R(r,s.__wbindgen_malloc),h=d,S=R(o,s.__wbindgen_malloc),T=d,M=F(a,s.__wbindgen_malloc),A=d,m=F(_,s.__wbindgen_malloc),p=d,L=F(c,s.__wbindgen_malloc),y=d,w=F(f,s.__wbindgen_malloc),O=d,D=F(u,s.__wbindgen_malloc),$=d,v=F(l,s.__wbindgen_malloc),U=d,E=s.traverse_lod_trees(n,t,b(e)?4294967297:Math.fround(e),g,h,S,T,M,A,m,p,L,y,w,O,D,$,v,U);if(E[2])throw i(E[1]);return i(E[0])}function Tt(n,t,e,r,o){const a=R(n,s.__wbindgen_malloc),_=d,c=R(t,s.__wbindgen_malloc),f=d,u=R(e,s.__wbindgen_malloc),l=d,g=R(r,s.__wbindgen_malloc),h=d,S=s.update_lod_trees(a,_,c,f,u,l,g,h,o);if(S[2])throw i(S[1]);return i(S[0])}function Lt(){return{__proto__:null,"./spark_rs_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(t,e){return Error(G(t,e))},__wbg___wbindgen_boolean_get_a86c216575a75c30:function(t){const e=t,r=typeof e=="boolean"?e:void 0;return b(r)?16777215:r?1:0},__wbg___wbindgen_debug_string_dd5d2d07ce9e6c57:function(t,e){const r=Y(e),o=k(r,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;C().setInt32(t+4,a,!0),C().setInt32(t+0,o,!0)},__wbg___wbindgen_in_4bd7a57e54337366:function(t,e){return t in e},__wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef:function(t){return!t},__wbg___wbindgen_is_object_40c5a80572e8f9d3:function(t){const e=t;return typeof e=="object"&&e!==null},__wbg___wbindgen_is_undefined_c0cca72b82b86f4d:function(t){return t===void 0},__wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944:function(t,e){return t==e},__wbg___wbindgen_number_get_7579aab02a8a620c:function(t,e){const r=e,o=typeof r=="number"?r:void 0;C().setFloat64(t+8,b(o)?0:o,!0),C().setInt32(t+0,!b(o),!0)},__wbg___wbindgen_string_get_914df97fcfa788f2:function(t,e){const r=e,o=typeof r=="string"?r:void 0;var a=b(o)?0:k(o,s.__wbindgen_malloc,s.__wbindgen_realloc),_=d;C().setInt32(t+4,_,!0),C().setInt32(t+0,a,!0)},__wbg___wbindgen_throw_81fc77679af83bc6:function(t,e){throw new Error(G(t,e))},__wbg_csplatarray_new:function(t){return z.__wrap(t)},__wbg_error_a6fa202b58aa1cd3:function(t,e){let r,o;try{r=t,o=e,console.error(G(t,e))}finally{s.__wbindgen_free(r,o,1)}},__wbg_get_4848e350b40afc16:function(t,e){return t[e>>>0]},__wbg_get_f96702c6245e4ef9:function(){return ct(function(t,e){return Reflect.get(t,e)},arguments)},__wbg_get_unchecked_7d7babe32e9e6a54:function(t,e){return t[e>>>0]},__wbg_get_with_ref_key_6412cf3094599694:function(t,e){return t[e]},__wbg_gsplatarray_new:function(t){return P.__wrap(t)},__wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a:function(t){let e;try{e=t instanceof ArrayBuffer}catch{e=!1}return e},__wbg_instanceof_Uint8Array_4b8da683deb25d72:function(t){let e;try{e=t instanceof Uint8Array}catch{e=!1}return e},__wbg_length_0c32cb8543c8e4c8:function(t){return t.length},__wbg_length_1e701798fdcaa3b4:function(t){return t.length},__wbg_length_6e821edde497a532:function(t){return t.length},__wbg_length_a4ca9e78359b5f1f:function(t){return t.length},__wbg_length_fd4646b401926788:function(t){return t.length},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_a560378ea1240b14:function(t){return new Uint8Array(t)},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_new_with_length_26bffbe236bf73f9:function(t){return new Float32Array(t>>>0)},__wbg_new_with_length_41a22191b9bdfd66:function(t){return new Uint32Array(t>>>0)},__wbg_prototypesetcall_3e05eb9545565046:function(t,e,r){Uint8Array.prototype.set.call(Et(t,e),r)},__wbg_prototypesetcall_64c287a27cc24d27:function(t,e,r){Uint16Array.prototype.set.call($t(t,e),r)},__wbg_prototypesetcall_e42275e601e14eeb:function(t,e,r){Uint32Array.prototype.set.call(Q(t,e),r)},__wbg_push_6bdbc990be5ac37b:function(t,e){return t.push(e)},__wbg_set_08463b1df38a7e29:function(t,e,r){return t.set(e,r)},__wbg_set_448126769bf7c181:function(t,e,r){t.set(Q(e,r))},__wbg_set_6be42768c690e380:function(t,e,r){t[e]=r},__wbg_set_6c60b2e8ad0e9383:function(t,e,r){t[e>>>0]=r},__wbg_set_81b4174352e6a095:function(t,e,r){t.set(e,r>>>0)},__wbg_set_8ee2d34facb8466e:function(){return ct(function(t,e,r){return Reflect.set(t,e,r)},arguments)},__wbg_set_a98c8da6557e63de:function(t,e,r){t.set(st(e,r))},__wbg_set_index_338a66e40fc45dee:function(t,e,r){t[e>>>0]=r>>>0},__wbg_stack_3b0d974bbf31e44f:function(t,e){const r=e.stack,o=k(r,s.__wbindgen_malloc,s.__wbindgen_realloc),a=d;C().setInt32(t+4,a,!0),C().setInt32(t+0,o,!0)},__wbg_subarray_0f98d3fb634508ad:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbg_subarray_517cd0f1811ab872:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbg_subarray_d51e89458b3fdbf6:function(t,e,r){return t.subarray(e>>>0,r>>>0)},__wbindgen_cast_0000000000000001:function(t){return t},__wbindgen_cast_0000000000000002:function(t,e){return st(t,e)},__wbindgen_cast_0000000000000003:function(t,e){return Q(t,e)},__wbindgen_cast_0000000000000004:function(t,e){return G(t,e)},__wbindgen_cast_0000000000000005:function(t){return BigInt.asUintN(64,t)},__wbindgen_init_externref_table:function(){const t=s.__wbindgen_externrefs,e=t.grow(4);t.set(0,void 0),t.set(e+0,void 0),t.set(e+1,null),t.set(e+2,!0),t.set(e+3,!1)}}}}const nt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_chunkdecoder_free(n>>>0,1)),rt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_csplatarray_free(n>>>0,1)),ot=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>s.__wbg_gsplatarray_free(n>>>0,1));function x(n){const t=s.__externref_table_alloc();return s.__wbindgen_externrefs.set(t,n),t}function Y(n){const t=typeof n;if(t=="number"||t=="boolean"||n==null)return`${n}`;if(t=="string")return`"${n}"`;if(t=="symbol"){const o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(t=="function"){const o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){const o=n.length;let a="[";o>0&&(a+=Y(n[0]));for(let _=1;_1)r=e[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message}\n${n.stack}`:r}function st(n,t){return n=n>>>0,_t().subarray(n/4,n/4+t)}function $t(n,t){return n=n>>>0,Dt().subarray(n/2,n/2+t)}function Q(n,t){return n=n>>>0,at().subarray(n/4,n/4+t)}function Et(n,t){return n=n>>>0,Z().subarray(n/1,n/1+t)}let j=null;function C(){return(j===null||j.buffer.detached===!0||j.buffer.detached===void 0&&j.buffer!==s.memory.buffer)&&(j=new DataView(s.memory.buffer)),j}let B=null;function _t(){return(B===null||B.byteLength===0)&&(B=new Float32Array(s.memory.buffer)),B}function G(n,t){return n=n>>>0,It(n,t)}let q=null;function Dt(){return(q===null||q.byteLength===0)&&(q=new Uint16Array(s.memory.buffer)),q}let V=null;function at(){return(V===null||V.byteLength===0)&&(V=new Uint32Array(s.memory.buffer)),V}let K=null;function Z(){return(K===null||K.byteLength===0)&&(K=new Uint8Array(s.memory.buffer)),K}function ct(n,t){try{return n.apply(this,t)}catch(e){const r=x(e);s.__wbindgen_exn_store(r)}}function b(n){return n==null}function R(n,t){const e=t(n.length*4,4)>>>0;return at().set(n,e/4),d=n.length,e}function F(n,t){const e=t(n.length*4,4)>>>0;return _t().set(n,e/4),d=n.length,e}function k(n,t,e){if(e===void 0){const c=H.encode(n),f=t(c.length,1)>>>0;return Z().subarray(f,f+c.length).set(c),d=c.length,f}let r=n.length,o=t(r,1)>>>0;const a=Z();let _=0;for(;_127)break;a[o+_]=c}if(_!==r){_!==0&&(n=n.slice(_)),o=e(o,r,r=_+n.length*3,1)>>>0;const c=Z().subarray(o+_,o+r),f=H.encodeInto(n,c);_+=f.written,o=e(o,r,_,1)>>>0}return d=_,o}function i(n){const t=s.__wbindgen_externrefs.get(n);return s.__externref_table_dealloc(n),t}let J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});J.decode();const Ut=2146435072;let tt=0;function It(n,t){return tt+=t,tt>=Ut&&(J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),J.decode(),tt=t),J.decode(Z().subarray(n,n+t))}const H=new TextEncoder;"encodeInto"in H||(H.encodeInto=function(n,t){const e=H.encode(n);return t.set(e),{read:n.length,written:e.length}});let d=0,s;function Ct(n,t){return s=n.exports,j=null,B=null,q=null,V=null,K=null,s.__wbindgen_start(),s}async function Rt(n,t){if(typeof Response=="function"&&n instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(n,t)}catch(o){if(n.ok&&e(n.type)&&n.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",o);else throw o}const r=await n.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{const r=await WebAssembly.instantiate(n,t);return r instanceof WebAssembly.Instance?{instance:r,module:n}:r}function e(r){switch(r){case"basic":case"cors":case"default":return!0}return!1}}async function Ot(n){if(s!==void 0)return s;n!==void 0&&(Object.getPrototypeOf(n)===Object.prototype?{module_or_path:n}=n:console.warn("using deprecated parameters for the initialization function; pass a single object instead"));const t=Lt();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));const{instance:e}=await Rt(await n,t);return Ct(e)}const jt={sortSplats16:Wt,sortSplats32:Nt,loadPackedSplats:zt,loadExtSplats:Pt,tinyLodPackedSplats:Bt,qualityLodPackedSplats:qt,tinyLodExtSplats:Vt,qualityLodExtSplats:Kt,newLodTree:Zt,newSharedLodTree:Ht,initLodTree:Gt,disposeLodTree:Jt,updateLodTrees:Xt,traverseLodTrees:Yt,getLodTreeLevel:Qt,nextChunk:te};async function it(n){const{id:t,name:e,args:r}=n.data;try{const o=jt[e];if(!o)throw new Error(`Unknown worker RPC: ${e}`);const _=await o(r,{sendStatus:c=>{self.postMessage({id:t,status:c},{transfer:et(c)})}});self.postMessage({id:t,result:_},{transfer:et(_)})}catch(o){console.warn(`Worker error: ${o}`),self.postMessage({id:t,error:o},{transfer:et(o)})}}function Wt({numSplats:n,readback:t,ordering:e}){return{activeSplats:Ft(n,t,e),readback:t,ordering:e}}function Nt({numSplats:n,readback:t,ordering:e}){return{activeSplats:At(n,t,e),readback:t,ordering:e}}async function X({decoder:n,fileBytes:t,url:e,requestHeader:r,withCredentials:o,chunked:a,chunkedLength:_,sendStatus:c}){if(t)for(let l=0;l{lt=S});c({nextChunk:!0});const h=await g;if(h.length===0)break;n.push(h),u+=h.length,c({progress:{loaded:u,total:l}})}l===0&&c({progress:{loaded:u,total:u}})}else throw new Error("No url or fileBytes provided");return n.finish()}function W(n){return{numSplats:n.numSplats,packedArray:n.packed,extra:{sh1:n.sh1,sh2:n.sh2,sh3:n.sh3,sh1Codes:n.sh1Codes,sh2Codes:n.sh2Codes,sh3Codes:n.sh3Codes,lodTree:n.lodTree},splatEncoding:n.splatEncoding}}async function zt({url:n,requestHeader:t,withCredentials:e,fileBytes:r,fileType:o,pathName:a,chunked:_,chunkedLength:c,encoding:f,lod:u,lodBase:l,lodAbove:g,nonLod:h,sh1Codes:S,sh2Codes:T,sh3Codes:M},{sendStatus:A}){if(!u){const v=gt(o,a??n,f,S,T,M),U=await X({decoder:v,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:A}),E=W(U);return E.splatEncoding.lodOpacity?{lodSplats:E}:E}const m=ft(o,a??n,f),p=await X({decoder:m,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:A});if(p.has_lod())return{lodSplats:W(p.to_packedsplats_lod())};if(g!==void 0&&p.len() ${p.len()} (${D} ms)`);const $=p.to_packedsplats_lod();return L.lodSplats=W($),L}function N(n){return{numSplats:n.numSplats,extArrays:[n.ext0,n.ext1],extra:{labels:n.labels,instances:n.instances,sh1:n.sh1,sh2:n.sh2,sh3a:n.sh3a,sh3b:n.sh3b,sh1Codes:n.sh1Codes,sh2Codes:n.sh2Codes,sh3Codes:n.sh3Codes,lodTree:n.lodTree}}}async function Pt({url:n,requestHeader:t,withCredentials:e,fileBytes:r,fileType:o,pathName:a,chunked:_,chunkedLength:c,lod:f,lodBase:u,lodAbove:l,nonLod:g,sh1Codes:h,sh2Codes:S,sh3Codes:T},{sendStatus:M}){if(!f){const $=bt(o,a??n,h,S,T),v=await X({decoder:$,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:M}),U=N(v);return U.extra.lodTree?{lodSplats:U}:U}const A=wt(o,a??n),m=await X({decoder:A,fileBytes:r,url:n,requestHeader:t,withCredentials:e,chunked:_,chunkedLength:c,sendStatus:M});if(m.has_lod())return{lodSplats:N(m.to_extsplats_lod())};if(l!==void 0&&m.len() ${m.len()} (${O} ms)`);const D=m.to_extsplats_lod();return p.lodSplats=N(D),p}async function Bt({numSplats:n,packedArray:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.5)),c=performance.now(),u=vt(n,t,e,_,!1,o,a),l=performance.now()-c,g=W(u);return console.log(`Tiny LoD: ${n} -> ${g.numSplats} (${l} ms)`),g}async function qt({numSplats:n,packedArray:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.75)),c=performance.now(),f=dt(n,t,e,_,o,a),u=performance.now()-c,l=W(f);return console.log(`Bhatt LoD: ${n} -> ${l.numSplats} (${u} ms)`),l}async function Vt({numSplats:n,extArrays:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.5)),c=performance.now(),u=Mt(n,t[0],t[1],e,_,!1,o),l=performance.now()-c,g=N(u);return console.log(`Tiny LoD: ${n} -> ${g.numSplats} (${l} ms)`),g}async function Kt({numSplats:n,extArrays:t,extra:e,lodBase:r,rgba:o,encoding:a}){const _=Math.max(1.1,Math.min(2,r??1.75)),c=performance.now(),f=ut(n,t[0],t[1],e,_,o),u=performance.now()-c,l=N(f);return console.log(`Bhatt LoD: ${n} -> ${l.numSplats} (${u} ms)`),l}function Zt({capacity:n}){const{lodId:t}=St(n);return{lodId:t}}function Ht({lodId:n}){const{lodId:t}=xt(n);return{lodId:t}}function Gt({numSplats:n,lodTree:t}){const{lodId:e,chunkToPage:r}=mt(n,t);return{lodId:e,chunkToPage:r}}function Jt({lodId:n}){pt(n)}function Xt({ranges:n}){const t=new Uint32Array(n.map(({lodId:_})=>_)),e=new Uint32Array(n.map(({pageBase:_})=>_)),r=new Uint32Array(n.map(({chunkBase:_})=>_)),o=new Uint32Array(n.map(({count:_})=>_)),a=n.map(({lodTreeData:_})=>_);Tt(t,e,r,o,a)}function Yt({maxSplats:n,pixelScaleLimit:t,lastPixelLimit:e,instances:r,traverseMode:o}){const a=Object.entries(r),_=new Uint32Array(a.map(([y,w])=>w.lodId)),c=new Uint32Array(a.map(([y,w])=>w.rootPage??4294967295)),f=new Float32Array(a.flatMap(([y,w])=>{if(w.viewToObjectCols.length!==16)throw new Error("Incorrect array size for viewToObjectCols");return w.viewToObjectCols})),u=new Float32Array(a.map(([y,w])=>w.lodScale)),l=new Float32Array(a.map(([y,w])=>w.behindFoveate)),g=new Float32Array(a.map(([y,w])=>w.coneFov0)),h=new Float32Array(a.map(([y,w])=>w.coneFov)),S=new Float32Array(a.map(([y,w])=>w.coneFoveate)),M=(o==="dynamic"?yt:kt)(n,t,e,_,c,f,u,l,S,g,h),{instanceIndices:A,chunks:m,pixelLimit:p}=M;return{keyIndices:a.reduce((y,[w,O],D)=>(y[w]=A[D],y),{}),chunks:m,pixelLimit:p}}function Qt({lodId:n,level:t}){return ht(n,t)}let lt=n=>{};async function te({chunk:n}){lt(n)}function et(n){const t=[],e=new Set;function r(o){o&&typeof o=="object"&&!e.has(o)&&(e.add(o),o instanceof ArrayBuffer?t.push(o):ArrayBuffer.isView(o)?t.push(o.buffer):Array.isArray(o)?o.forEach(r):Object.values(o).forEach(r))}return r(n),t}async function ee(){let n;const t=new Promise(o=>{n=o}),e=[],r=o=>{if(o.data.name==="init-wasm"){n(o.data.module);return}e.push(o)};self.addEventListener("message",r),await Ot({module_or_path:await t}),self.removeEventListener("message",r),self.addEventListener("message",it);for(const o of e)it(o);e.length=0}ee().catch(console.error)})();\n//# sourceMappingURL=worker-o12t87OT.js.map\n', KB = typeof self < "u" && self.Blob && new Blob([No], { type: "text/javascript;charset=utf-8" }); +function YG(Q) { + let A; + try { + if (A = KB && (self.URL || self.webkitURL).createObjectURL(KB), !A) throw ""; + const I = new Worker(A, { + name: Q == null ? void 0 : Q.name + }); + return I.addEventListener("error", () => { + (self.URL || self.webkitURL).revokeObjectURL(A); + }), I; + } catch { + return new Worker( + "data:text/javascript;charset=utf-8," + encodeURIComponent(No), + { + name: Q == null ? void 0 : Q.name } - throw new Error("Failed to decode RAD header"); - })().then((A) => A), this.radMetaPromise.catch((A) => { - console.error(A); - }), this.radMetaPromise); - } - chunkUrl(A) { - return this.rootUrl.replace(/-lod-0\./, `-lod-${A}.`); + ); + } finally { + A && (self.URL || self.webkitURL).revokeObjectURL(A); } - async fetchDecodeChunk(A) { - let I; - if (this.fileType === hA.RAD) { - const { meta: g, chunksStart: B } = await this.getRadMeta(); - if (A < 0 || A >= g.chunks.length) - throw new Error( - `Chunk index out of range: ${A} (max: ${g.chunks.length - 1})` - ); - let { offset: C, bytes: E, filename: D } = g.chunks[A]; - if (D) { - if (this.fileBytes) - throw new Error("Chunked RAD file not supported with fileBytes"); - const i = new URL( - this.rootUrl, - window.location.href - ).toString(), w = new URL(D, i).toString(); - I = await JQ({ - url: w, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials - }); - } else if (C += B, this.fileBytes) { - if (C < 0 || C + E > this.fileBytes.length) - throw new Error( - `Invalid chunk offset or bytes: ${C} + ${E} > ${this.fileBytes.length}` - ); - I = this.fileBytes.slice(C, C + E); - } else if (this.rootUrl) - I = await JQ({ - url: this.rootUrl, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - offset: C, - bytes: E - }); - else - throw new Error("No url or fileBytes provided"); - } else if (!this.fileBytes) if (this.rootUrl) { - const g = this.chunkUrl(A), B = new Request(g, { - headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, - credentials: this.withCredentials ? "include" : "same-origin" - }), C = await fetch(B); - if (!C.ok || !C.body) - throw new Error( - `Failed to fetch "${g}": ${C.status} ${C.statusText}` - ); - I = new Uint8Array(await C.arrayBuffer()); - } else - throw new Error("No url or fileBytes provided"); - return await BQ.withWorker(async (g) => { - var D, i, w, s, o; - if (!this.pager) - throw new Error("PagedSplats.pager not set"); - if (!this.pager.extSplats) { - const h = (await g.call("loadPackedSplats", { - fileBytes: I, - pathName: this.chunkUrl(A), - sh1Codes: (D = this.sh1Codes) == null ? void 0 : D.slice(), - sh2Codes: (i = this.sh2Codes) == null ? void 0 : i.slice(), - sh3Codes: (w = this.sh3Codes) == null ? void 0 : w.slice() - })).lodSplats; - return this.splatEncoding || (this.splatEncoding = h.splatEncoding, this.numSh = h.extra.sh3 ? 3 : h.extra.sh2 ? 2 : h.extra.sh1 ? 1 : 0, this.rgbMinMaxLnScaleMinMax.value.set( - this.splatEncoding.rgbMin ?? 0, - this.splatEncoding.rgbMax ?? 1, - this.splatEncoding.lnScaleMin ?? pA, - this.splatEncoding.lnScaleMax ?? fA - ), this.lodOpacity.value = this.splatEncoding.lodOpacity ?? !1, this.shMax.value.set( - this.splatEncoding.sh1Max ?? 1, - this.splatEncoding.sh2Max ?? 1, - this.splatEncoding.sh3Max ?? 1 - )), this.sh1Codes = h.extra.sh1Codes ?? this.sh1Codes, this.sh2Codes = h.extra.sh2Codes ?? this.sh2Codes, this.sh3Codes = h.extra.sh3Codes ?? this.sh3Codes, h; - } - const B = this.sh3Codes, E = (await g.call("loadExtSplats", { - fileBytes: I, - pathName: this.chunkUrl(A), - sh1Codes: (s = this.sh1Codes) == null ? void 0 : s.slice(), - sh2Codes: (o = this.sh2Codes) == null ? void 0 : o.slice(), - sh3Codes: B ? [B[0].slice(), B[1].slice()] : void 0 - })).lodSplats; - return this.splatEncoding || (this.splatEncoding = cg, this.numSh = E.extra.sh3a && E.extra.sh3b ? 3 : E.extra.sh2 ? 2 : E.extra.sh1 ? 1 : 0), this.sh1Codes = E.extra.sh1Codes ?? this.sh1Codes, this.sh2Codes = E.extra.sh2Codes ?? this.sh2Codes, this.sh3Codes = E.extra.sh3Codes ?? this.sh3Codes, E; +} +const AQ = class AQ { + constructor() { + this.queue = null, this.messages = {}, this.worker = new YG(), this.worker.onmessage = (A) => this.onMessage(A), ko.then((A) => { + this.worker.postMessage({ name: "init-wasm", module: A }); }); } - update(A, I) { - if (!this.pager) - throw new Error("PagedSplats.pager not set"); - const g = this.pager.renderer; - this.numSplats = A, this.dynoNumSplats.value = this.numSplats; - const B = Math.ceil(A / 16384); - let C = this.dynoIndices.value === tI.emptyIndicesTexture ? void 0 : this.dynoIndices.value; - if (C && B > C.image.height && (C.dispose(), C = void 0), !C) - C = new G.DataTexture( - I, - 4096, - B, - G.RGBAIntegerFormat, - G.UnsignedIntType - ), C.internalFormat = "RGBA32UI", C.needsUpdate = !0, g.initTexture(C), this.dynoIndices.value = C; - else { - C.image.data.set(I.subarray(0, A)); - const D = g.getContext(); - g.state.activeTexture(D.TEXTURE0), g.state.bindTexture( - D.TEXTURE_2D, - pw(g, C) - ), D.bindBuffer(D.PIXEL_UNPACK_BUFFER, null), D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL, !1), D.texSubImage2D( - D.TEXTURE_2D, - 0, - 0, - 0, - 4096, - B, - D.RGBA_INTEGER, - D.UNSIGNED_INT, - I - ), g.state.bindTexture(D.TEXTURE_2D, null); + onMessage(A) { + var i; + const { id: I, result: g, error: B, status: C } = A.data, E = this.messages[I]; + E && (B !== void 0 ? (delete this.messages[I], E.reject(B)) : C !== void 0 ? (i = E.onStatus) == null || i.call(E, C) : (delete this.messages[I], E.resolve(g))); + } + tryExclusive(A) { + return this.queue == null ? this.exclusive(A) : null; + } + async exclusive(A) { + const I = this.queue; + I != null ? await new Promise((g) => { + I.push(() => g(void 0)); + }) : this.queue = []; + try { + return await A(this); + } finally { + this.queue != null && (this.queue.length === 0 ? this.queue = null : this.queue.shift()()); } } - prepareFetchSplat() { + async call(A, I, g = {}) { + const B = ++AQ.currentId, C = new Promise((E, i) => { + this.messages[B] = { resolve: E, reject: i, onStatus: g.onStatus }; + }); + return this.worker.postMessage( + { id: B, name: A, args: I }, + { transfer: eE(I) } + ), await C; } - getNumSplats() { - return this.numSplats; + dispose() { + this.worker.terminate(); + const A = Object.values(this.messages); + this.messages = {}; + for (const I of A) + I.reject(new Error("Worker terminate")); } - hasRgbDir() { - return this.pager ? Math.min(this.numSh, this.pager.maxSh) > 0 : !1; +}; +AQ.currentId = 0; +let kg = AQ; +class dG { + constructor(A = 4) { + this.numWorkers = 0, this.freelist = [], this.queue = [], this.maxWorkers = A; } - getNumSh() { - return this.numSh; + async withWorker(A) { + const I = await this.allocWorker(); + try { + return await A(I); + } finally { + this.freeWorker(I); + } } - fetchSplat({ - index: A, - viewOrigin: I - }) { - if (!this.pager) - throw new Error("PagedSplats.pager not set"); - const g = this.pager.readIndex.apply({ - index: A, - numSplats: this.dynoNumSplats, - indices: this.dynoIndices - }).index; - return this.pager.extSplats ? this.hasRgbDir() && I ? (this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh), this.pager.readSplatExtDir.apply({ - index: g, - viewOrigin: I, - numSh: this.dynoNumSh - }).gsplat) : this.pager.readSplatExt.apply({ index: g }).gsplat : this.hasRgbDir() && I ? (this.dynoNumSh.value = Math.min( - this.numSh, - this.maxSh, - this.pager.maxSh - ), this.pager.readSplatDir.apply({ - index: g, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity, - viewOrigin: I, - numSh: this.dynoNumSh, - shMax: this.shMax - }).gsplat) : this.pager.readSplat.apply({ - index: g, - rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, - lodOpacity: this.lodOpacity - }).gsplat; + async allocWorker() { + const A = this.freelist.pop(); + if (A) + return A; + if (this.numWorkers < this.maxWorkers) { + const I = new kg(); + return this.numWorkers += 1, I; + } + return new Promise((I) => { + this.queue.push(I); + }); } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(A) { - if (!this.pager || !this.numSplats) + freeWorker(A) { + if (this.numWorkers > this.maxWorkers) { + this.numWorkers -= 1; + return; + } + const I = this.queue.shift(); + if (I) { + I(A); return; - const I = this.pager.extSplats, g = this.dynoIndices.value.image.data, B = this.pager.packedTexture.value.image.data, C = this.pager.extTexture.value.image.data, E = [ - B, - C - ]; - for (let D = 0; D < this.numSplats; ++D) { - const i = g[D], w = I ? Tg(E, i) : Og(B, i, this.splatEncoding); - A( - D, - w.center, - w.scales, - w.quaternion, - w.opacity, - w.color - ); } + this.freelist.push(A); } } -const l = class l { - constructor(A) { - this.fetchPause = 0, this.splatsChunkToPage = /* @__PURE__ */ new Map(), this.pageToSplatsChunk = [], this.renderer = A.renderer, this.extSplats = A.extSplats ?? !1, this.pageSplats = 65536, this.maxSplats = A.maxSplats ?? 16777216, this.maxPages = Math.ceil(this.maxSplats / this.pageSplats), this.maxSplats = this.maxPages * this.pageSplats, this.maxSh = A.maxSh ?? 3, this.curSh = 0, this.autoDrive = A.autoDrive ?? !0, this.numFetchers = A.numFetchers ?? 3, this.splatsChunkToPage = /* @__PURE__ */ new Map(), this.pageToSplatsChunk = new Array(this.maxPages), this.pageFreelist = Array.from({ length: this.maxPages }, (I, g) => g), this.pageLru = /* @__PURE__ */ new Set(), this.freeablePages = [], this.newUploads = [], this.readyUploads = [], this.lodTreeUpdates = [], this.fetchers = [], this.fetched = [], this.fetchPriority = [], this.packedTexture = new dA({ - value: this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ) - }), this.extTexture = new dA({ - value: this.extSplats ? this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ) : l.emptyExtTexture - }), this.sh1Texture = new dA({ - value: this.extSplats ? l.emptyExtSh1Texture : l.emptySh1Texture - }), this.sh2Texture = new dA({ - value: this.extSplats ? l.emptyExtSh2Texture : l.emptySh2Texture - }), this.sh3Texture = new dA({ - value: this.extSplats ? l.emptyExtSh3Texture : l.emptySh3Texture - }), this.sh3TextureB = new dA({ - value: l.emptyExtSh3BTexture - }), this.readIndex = cA( - { index: "int", numSplats: "int", indices: "usampler2D" }, - { index: "int" }, - ({ index: I, numSplats: g, indices: B }) => new d({ - inTypes: { - index: "int", - numSplats: "int", - indices: "usampler2D" - }, - outTypes: { index: "int" }, - inputs: { - index: I, - numSplats: g, - indices: B - }, - statements: ({ inputs: C, outputs: E }) => z(` - if (${C.index} >= ${C.numSplats}) { - return; - } - - ivec2 indexCoord = ivec2((${C.index} >> 2) & 4095, ${C.index} >> 14); - uint index = texelFetch(${C.indices}, indexCoord, 0)[${C.index} & 3]; - ${E.index} = int(index); - `) - }).outputs - ), this.readSplat = cA( - { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, - { gsplat: Z }, - ({ index: I, rgbMinMaxLnScaleMinMax: g, lodOpacity: B }) => new d({ - inTypes: { - index: "int", - packedTexture: "usampler2DArray", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool" - }, - outTypes: { gsplat: Z }, - inputs: { - index: I, - packedTexture: this.packedTexture, - rgbMinMaxLnScaleMinMax: g, - lodOpacity: B - }, - globals: () => [HA], - statements: ({ inputs: C, outputs: E }) => z(` - int index = ${C.index}; - ivec3 splatCoord = pagedSplatTexCoord(index); - uvec4 packedData = texelFetch(${C.packedTexture}, splatCoord, 0); - - unpackSplatEncoding(packedData, ${E.gsplat}.center, ${E.gsplat}.scales, ${E.gsplat}.quaternion, ${E.gsplat}.rgba, ${C.rgbMinMaxLnScaleMinMax}); - if ((${E.gsplat}.rgba.a == 0.0) || all(equal(${E.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${E.gsplat}.index = index; - ${E.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - if (${C.lodOpacity}) { - ${E.gsplat}.rgba.a *= 2.0; - } - `) - }).outputs - ), this.readSplatDir = cA( - { - index: "int", - rgbMinMaxLnScaleMinMax: "vec4", - lodOpacity: "bool", - viewOrigin: "vec3", - numSh: "int", - shMax: "vec3" - }, - { gsplat: Z }, - ({ - index: I, - rgbMinMaxLnScaleMinMax: g, - lodOpacity: B, - viewOrigin: C, - numSh: E, - shMax: D - }) => { - if (!I || !g || !B || !C || !E || !D) - throw new Error("index and viewOrigin are required"); - let i = this.readSplat.apply({ - index: I, - rgbMinMaxLnScaleMinMax: g, - lodOpacity: B - }).gsplat; - const w = uA(i).outputs.center, s = ag(iI(w, C)); - let o = Pw({ - coord: xQ(I), - viewDir: s, - numSh: E, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3Texture: this.sh3Texture, - shMax: D - }).rgb; - return o = qA(o, uA(i).outputs.rgb), i = CI({ gsplat: i, rgb: o }), { gsplat: i }; +const iQ = new dG(), JA = class JA { + constructor(A = {}) { + this.maxSplats = 0, this.numSplats = 0, this.packedArray = null, this.maxSh = 3, this.isInitialized = !1, this.target = null, this.source = null, this.needsUpdate = !0, this.extra = {}, this.dyno = new Mo({ packedSplats: this }), this.dynoRgbMinMaxLnScaleMinMax = new zI({ + key: "rgbMinMaxLnScaleMinMax", + value: new a.Vector4(0, 1, uA, bA), + update: (I) => { + var g, B, C, E; + return I.set( + ((g = this.splatEncoding) == null ? void 0 : g.rgbMin) ?? 0, + ((B = this.splatEncoding) == null ? void 0 : B.rgbMax) ?? 1, + ((C = this.splatEncoding) == null ? void 0 : C.lnScaleMin) ?? uA, + ((E = this.splatEncoding) == null ? void 0 : E.lnScaleMax) ?? bA + ), I; } - ), this.readSplatExt = cA( - { index: "int" }, - { gsplat: Z }, - ({ index: I }) => new d({ - inTypes: { - index: "int", - extTexture1: "usampler2DArray", - extTexture2: "usampler2DArray" - }, - outTypes: { gsplat: Z }, - inputs: { - index: I, - extTexture1: this.packedTexture, - extTexture2: this.extTexture - }, - globals: () => [HA], - statements: ({ inputs: g, outputs: B }) => z(` - int index = ${g.index}; - ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); - uvec4 ext1 = texelFetch(${g.extTexture1}, splatCoord, 0); - float alpha = unpackSplatExtAlpha(ext1); - if (alpha == 0.0) { - return; - } - - uvec4 ext2 = texelFetch(${g.extTexture2}, splatCoord, 0); - unpackSplatExt(ext1, ext2, ${B.gsplat}.center, ${B.gsplat}.scales, ${B.gsplat}.quaternion, ${B.gsplat}.rgba); - if (all(equal(${B.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { - return; - } - - ${B.gsplat}.index = index; - ${B.gsplat}.flags = GSPLAT_FLAG_ACTIVE; - `) - }).outputs - ), this.readSplatExtDir = cA( - { - index: "int", - viewOrigin: "vec3", - numSh: "int" - }, - { gsplat: Z }, - ({ index: I, viewOrigin: g, numSh: B }) => { - if (!I || !g || !B) - throw new Error("index and viewOrigin are required"); - let C = this.readSplatExt.apply({ index: I }).gsplat; - const E = uA(C).outputs.center, D = ag(iI(E, g)); - let i = qw({ - coord: xQ(I), - viewDir: D, - numSh: B, - sh1Texture: this.sh1Texture, - sh2Texture: this.sh2Texture, - sh3TextureA: this.sh3Texture, - sh3TextureB: this.sh3TextureB - }).rgb; - return i = qA(i, uA(C).outputs.rgb), C = CI({ gsplat: C, rgb: i }), { gsplat: C }; + }), this.dynoNumSh = new _A({ + key: "numSh", + value: 0, + update: () => Math.min(this.getNumSh(), this.maxSh) + }), this.dynoShMax = new UI({ + key: "shMax", + value: new a.Vector3(), + update: (I) => { + var g, B, C; + return I.set( + ((g = this.splatEncoding) == null ? void 0 : g.sh1Max) ?? 1, + ((B = this.splatEncoding) == null ? void 0 : B.sh2Max) ?? 1, + ((C = this.splatEncoding) == null ? void 0 : C.sh3Max) ?? 1 + ), I; } - ); + }), this.initialized = Promise.resolve(this), this.reinitialize(A); + } + reinitialize(A) { + this.isInitialized = !1, this.extra = {}, this.maxSplats = A.maxSplats ?? 0, this.splatEncoding = A.splatEncoding, this.lod = A.lod, this.nonLod = A.nonLod, A.url || A.fileBytes || A.stream || A.construct ? this.initialized = this.asyncInitialize(A).then(() => (this.isInitialized = !0, this)) : (this.initialize(A), this.isInitialized = !0, this.initialized = Promise.resolve(this)); + } + initialize(A) { + this.extra = A.extra ?? {}, this.splatEncoding = A.splatEncoding ?? this.splatEncoding, this.lodSplats = A.lodSplats, A.packedArray ? (this.packedArray = A.packedArray, this.numSplats = A.numSplats ?? this.packedArray.length / 4, this.maxSplats = Math.floor(this.packedArray.length / 4), this.maxSplats = Math.floor(this.maxSplats / b) * b, this.numSplats = Math.min( + this.maxSplats, + A.numSplats ?? Number.POSITIVE_INFINITY + )) : (this.maxSplats = A.maxSplats ?? 0, this.numSplats = 0); + } + async asyncInitialize(A) { + const { + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + construct: o, + lod: D, + nonLod: w, + lodAbove: s + } = A; + this.lod = D, this.nonLod = w; + const t = new Uo(); + if ((g || I || E) && await t.loadInternalAsync({ + packedSplats: this, + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + onProgress: A.onProgress, + lodAbove: s + }), o) { + const G = o(this); + G instanceof Promise && await G; + } } + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. dispose() { - this.autoDrive = !1, this.numFetchers = 0, this.packedTexture.value.dispose(), this.packedTexture.value.source.data = null, this.extTexture.value !== l.emptyExtTexture && (this.extTexture.value.dispose(), this.extTexture.value.source.data = null), this.extSplats ? (this.sh1Texture.value !== l.emptyExtSh1Texture && (this.sh1Texture.value.dispose(), this.sh1Texture.value.source.data = null), this.sh2Texture.value !== l.emptyExtSh2Texture && (this.sh2Texture.value.dispose(), this.sh2Texture.value.source.data = null), this.sh3Texture.value !== l.emptyExtSh3Texture && (this.sh3Texture.value.dispose(), this.sh3Texture.value.source.data = null), this.sh3TextureB.value !== l.emptyExtSh3BTexture && (this.sh3TextureB.value.dispose(), this.sh3TextureB.value.source.data = null)) : (this.sh1Texture.value !== l.emptySh1Texture && (this.sh1Texture.value.dispose(), this.sh1Texture.value.source.data = null), this.sh2Texture.value !== l.emptySh2Texture && (this.sh2Texture.value.dispose(), this.sh2Texture.value.source.data = null), this.sh3Texture.value !== l.emptySh3Texture && (this.sh3Texture.value.dispose(), this.sh3Texture.value.source.data = null)); + this.target && (this.target.dispose(), this.target.texture.source.data = null, this.target = null), this.source && (this.source.dispose(), this.source.source.data = null, this.source = null), this.packedArray = null; + for (const A in this.extra) { + const I = this.extra[A]; + if (I instanceof q) { + const g = I.value; + g != null && g.isTexture && (g.dispose(), g.source.data = null); + } + } + this.extra = {}, this.disposeLodSplats(); } - ensureShTextures(A) { - this.curSh = Math.max(this.curSh, A), this.extSplats ? this.curSh >= 1 && this.sh1Texture.value === l.emptyExtSh1Texture && (this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - )) : this.curSh >= 1 && this.sh1Texture.value === l.emptySh1Texture && (this.sh1Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 2), - 256, - 256, - this.maxPages, - G.RGIntegerFormat, - G.UnsignedIntType, - "RG32UI" - )), this.curSh >= 2 && this.sh2Texture.value === (this.extSplats ? l.emptyExtSh2Texture : l.emptySh2Texture) && (this.sh2Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - )), this.extSplats ? this.curSh >= 3 && (this.sh3Texture.value === l.emptyExtSh3Texture && (this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - )), this.sh3TextureB.value === l.emptyExtSh3BTexture && (this.sh3TextureB.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - ))) : this.curSh >= 3 && this.sh3Texture.value === l.emptySh3Texture && (this.sh3Texture.value = this.newUint32ArrayTexture( - new Uint32Array(this.maxPages * 256 * 256 * 4), - 256, - 256, - this.maxPages, - G.RGBAIntegerFormat, - G.UnsignedIntType, - "RGBA32UI" - )); + prepareFetchSplat() { } - allocatePage() { - return this.pageFreelist.shift(); + getNumSplats() { + return this.numSplats; } - freePage(A) { - this.pageFreelist.push(A); + hasRgbDir() { + return Math.min(this.getNumSh(), this.maxSh) > 0; } - getSplatsChunk(A, I) { - const g = this.splatsChunkToPage.get(A); - if (g) - return g[I]; + getNumSh() { + return this.extra.sh1 ? this.extra.sh2 ? this.extra.sh3 ? 3 : 2 : 1 : 0; } - insertSplatsChunkPage(A, I, g, B) { - this.splatsChunkToPage.has(A) || this.splatsChunkToPage.set(A, []); - const C = this.splatsChunkToPage.get(A); - if (!C) - throw new Error("impossible"); - I >= C.length && (C.length = I + 1); - const E = { page: g, lru: B }; - return C[I] = E, this.pageLru.add(E), this.pageToSplatsChunk[g] = { splats: A, chunk: I, time: performance.now() }, this.pageToSplatsChunk[g]; + setMaxSh(A) { + this.maxSh = A; } - removeSplatsChunkPage(A, I, g) { - const B = this.splatsChunkToPage.get(A); - if (!B) - throw new Error("impossible"); - const C = B[I]; - if (!C) - throw new Error( - `pageLru not found for splats: ${A}, chunk: ${I}, page: ${g}` - ); - for (this.pageLru.delete(C), B[I] = void 0; B.length > 0 && B[B.length - 1] === void 0; ) - B.pop(); - for (B.length === 0 && this.splatsChunkToPage.delete(A), this.pageToSplatsChunk[g] = void 0; this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0; ) - this.pageToSplatsChunk.pop(); + fetchSplat({ + index: A, + viewOrigin: I + }) { + let g = $B(this.dyno, A); + if (this.hasRgbDir() && I) { + const B = fA(g).outputs.center, C = hg(CI(B, I)), { sh1Texture: E, sh2Texture: i, sh3Texture: o } = this.ensureShTextures(); + let { rgb: D } = Jo({ + coord: $Q(A), + viewDir: C, + numSh: this.dynoNumSh, + sh1Texture: E, + sh2Texture: i, + sh3Texture: o, + shMax: this.dynoShMax + }); + D = xA(D, fA(g).outputs.rgb), g = BI({ gsplat: g, rgb: D }); + } + return g; } - uploadPage(A, I, g, B) { - const C = A * this.pageSplats; - this.packedTexture.value.image.data.subarray(C * 4, C * 4 + I.length).set(I), this.packedTexture.value.addLayerUpdate(A), this.packedTexture.value.needsUpdate = !0, B && (this.extTexture.value.image.data.subarray(C * 4, C * 4 + B.length).set(B), this.extTexture.value.addLayerUpdate(A), this.extTexture.value.needsUpdate = !0); - const D = this.extSplats ? g.sh3a && g.sh3b ? 3 : g.sh2 ? 2 : g.sh1 ? 1 : 0 : g.sh3 ? 3 : g.sh2 ? 2 : g.sh1 ? 1 : 0; - if (this.ensureShTextures(D), this.extSplats) { - if (this.sh1Texture.value !== l.emptyExtSh1Texture && g.sh1) { - const i = g.sh1; - this.sh1Texture.value.image.data.subarray(C * 4, C * 4 + i.length).set(i), this.sh1Texture.value.addLayerUpdate(A), this.sh1Texture.value.needsUpdate = !0; + ensureShTextures() { + if (!this.extra.sh1) + return {}; + let A = this.extra.sh1Texture; + if (!A) { + let B = this.extra.sh1; + const { width: C, height: E, depth: i, maxSplats: o } = iA( + B.length / 2 + ); + if (B.length < o * 2) { + const w = new Uint32Array(o * 2); + w.set(B), this.extra.sh1 = w, B = w; } - } else if (this.sh1Texture.value !== l.emptySh1Texture && g.sh1) { - const i = g.sh1; - this.sh1Texture.value.image.data.subarray(C * 2, C * 2 + i.length).set(i), this.sh1Texture.value.addLayerUpdate(A), this.sh1Texture.value.needsUpdate = !0; - } - if (this.sh2Texture.value !== l.emptySh2Texture && g.sh2) { - const i = g.sh2; - this.sh2Texture.value.image.data.subarray(C * 4, C * 4 + i.length).set(i), this.sh2Texture.value.addLayerUpdate(A), this.sh2Texture.value.needsUpdate = !0; + const D = new a.DataArrayTexture(B, C, E, i); + D.format = a.RGIntegerFormat, D.type = a.UnsignedIntType, D.internalFormat = "RG32UI", D.needsUpdate = !0, A = new qA({ + value: D, + key: "sh1" + }), this.extra.sh1Texture = A; } - if (this.extSplats) { - if (this.sh3Texture.value !== l.emptyExtSh3Texture && g.sh3a) { - const i = g.sh3a; - this.sh3Texture.value.image.data.subarray(C * 4, C * 4 + i.length).set(i), this.sh3Texture.value.addLayerUpdate(A), this.sh3Texture.value.needsUpdate = !0; + if (!this.extra.sh2) + return { sh1Texture: A }; + let I = this.extra.sh2Texture; + if (!I) { + let B = this.extra.sh2; + const { width: C, height: E, depth: i, maxSplats: o } = iA( + B.length / 4 + ); + if (B.length < o * 4) { + const w = new Uint32Array(o * 4); + w.set(B), this.extra.sh2 = w, B = w; } - if (this.sh3TextureB.value !== l.emptyExtSh3BTexture && g.sh3b) { - const i = g.sh3b; - this.sh3TextureB.value.image.data.subarray(C * 4, C * 4 + i.length).set(i), this.sh3TextureB.value.addLayerUpdate(A), this.sh3TextureB.value.needsUpdate = !0; + const D = new a.DataArrayTexture(B, C, E, i); + D.format = a.RGBAIntegerFormat, D.type = a.UnsignedIntType, D.internalFormat = "RGBA32UI", D.needsUpdate = !0, I = new qA({ + value: D, + key: "sh2" + }), this.extra.sh2Texture = I; + } + if (!this.extra.sh3) + return { sh1Texture: A, sh2Texture: I }; + let g = this.extra.sh3Texture; + if (!g) { + let B = this.extra.sh3; + const { width: C, height: E, depth: i, maxSplats: o } = iA( + B.length / 4 + ); + if (B.length < o * 4) { + const w = new Uint32Array(o * 4); + w.set(B), this.extra.sh3 = w, B = w; } - } else if (this.sh3Texture.value !== l.emptySh3Texture && g.sh3) { - const i = g.sh3; - this.sh3Texture.value.image.data.subarray(C * 4, C * 4 + i.length).set(i), this.sh3Texture.value.addLayerUpdate(A), this.sh3Texture.value.needsUpdate = !0; + const D = new a.DataArrayTexture(B, C, E, i); + D.format = a.RGBAIntegerFormat, D.type = a.UnsignedIntType, D.internalFormat = "RGBA32UI", D.needsUpdate = !0, g = new qA({ + value: D, + key: "sh3" + }), this.extra.sh3Texture = g; } + return { sh1Texture: A, sh2Texture: I, sh3Texture: g }; } - getGlTexture(A) { - return pw(this.renderer, A); - } - newUint32ArrayTexture(A, I, g, B, C, E, D) { - const i = new G.DataArrayTexture(A, I, g, B); - return i.format = C, i.type = E, i.internalFormat = D, i.needsUpdate = !0, this.renderer.initTexture(i), i; + // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(A) { + const I = A <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(A, 2 * this.maxSplats) + ), g = this.packedArray ? this.packedArray.length / 4 : 0; + if (!this.packedArray || I > g) { + this.maxSplats = iA(I).maxSplats; + const B = new Uint32Array(this.maxSplats * 4); + this.packedArray && B.set(this.packedArray), this.packedArray = B; + } + return this.packedArray; } - driveFetchers() { - const A = [], I = []; - let g = 0; - for (const { splats: E, chunk: D } of this.fetchPriority) { - const i = this.getSplatsChunk(E, D); - if (i) { - g >= this.maxPages ? I.push(i) : A.push(i), g += 1; - continue; - } - if (this.fetched.some( - ({ splats: w, chunk: s }) => E === w && D === s - ) || this.fetchers.some( - ({ splats: w, chunk: s }) => E === w && D === s - )) { - g += 1; - continue; - } - if (g < this.maxPages && this.fetchers.length < this.numFetchers) { - g += 1; - const w = E.fetchDecodeChunk(D).then( - async (s) => { - this.fetched.push({ splats: E, chunk: D, data: s }), this.fetchPause > 0 && await new Promise( - (o) => setTimeout(o, this.fetchPause) - ); - }, - async (s) => { - console.warn(s); - const o = 250 + 500 * Math.random(); - await new Promise((y) => setTimeout(y, o)); - } - ).finally(() => { - this.fetchers = this.fetchers.filter( - ({ splats: s, chunk: o }) => E !== s || D !== o - ), this.processFetched(); - }); - this.fetchers.push({ splats: E, chunk: D, promise: w }), w.then((s) => { - this.autoDrive && this.driveFetchers(); - }); - } - } - const B = performance.now(); - for (const E of I.reverse()) - E.lru = B, this.pageLru.delete(E), this.pageLru.add(E); - const C = new Set(this.pageLru); - for (const E of A.reverse()) - C.delete(E), E.lru = B, this.pageLru.delete(E), this.pageLru.add(E); - this.freeablePages = Array.from(C).map(({ page: E }) => E); - } - allocateFreeable() { - const A = this.freeablePages.shift(); - if (A === void 0) - return; - const I = this.pageToSplatsChunk[A]; - if (!I) - throw new Error(`splatsChunk not found for page: ${A}`); - const { splats: g, chunk: B } = I; - return this.removeSplatsChunkPage(g, B, A), this.lodTreeUpdates.push({ - splats: g, - page: A, - chunk: B, - numSplats: this.pageSplats - }), A; - } - processFetched() { - const A = performance.now(); - for (; ; ) { - const I = this.fetched.shift(); - if (!I) - break; - const { splats: g, chunk: B, data: C } = I; - let E = this.allocatePage(); - if (E === void 0 && (E = this.allocateFreeable(), E === void 0)) - return; - this.insertSplatsChunkPage(g, B, E, A); - const { numSplats: D, extra: i } = C; - if (this.lodTreeUpdates.push({ - splats: g, - page: E, - chunk: B, - numSplats: D, - lodTree: i.lodTree - }), this.extSplats) { - const w = C.extArrays, s = w[0], o = w[1]; - this.newUploads.push({ page: E, numSplats: D, packedArray: s, extArray: o, extra: i }); - } else { - const w = C.packedArray; - this.newUploads.push({ page: E, numSplats: D, packedArray: w, extra: i }); - } - } - } - processUploads() { - for (; ; ) { - const A = this.readyUploads.shift(); - if (!A) - break; - const { page: I, numSplats: g, packedArray: B, extArray: C, extra: E } = A; - this.uploadPage(I, B, E, C); + // Ensure the extra array for the given level is large enough to hold numSplats + ensureSplatsSh(A, I) { + let g, B; + if (A === 0) + return this.ensureSplats(I); + if (A === 1) + g = 2, B = "sh1"; + else if (A === 2) + g = 4, B = "sh2"; + else if (A === 3) + g = 4, B = "sh3"; + else + throw new Error(`Invalid level: ${A}`); + let C = this.extra[B] ? this.extra[B].length / g : 0; + const E = I <= C ? C : Math.max(I, 2 * C); + if (!this.extra[B] || E > C) { + C = iA(E).maxSplats; + const i = new Uint32Array(C * g); + this.extra[B] && i.set(this.extra[B]), this.extra[B] = i; } + return this.extra[B]; } - consumeLodTreeUpdates() { - const A = this.lodTreeUpdates; - return this.lodTreeUpdates = [], this.readyUploads.push(...this.newUploads), this.newUploads = [], A; - } -}; -l.emptyUint32x4 = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(), l.emptyUint32x2 = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 2), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RG32UI", E.needsUpdate = !0, E; -})(), l.emptyIndicesTexture = (() => { - const A = new Uint32Array(16384), I = new G.DataTexture(A, 4096, 1); - return I.format = G.RGBAIntegerFormat, I.type = G.UnsignedIntType, I.internalFormat = "RGBA32UI", I.needsUpdate = !0, I; -})(), l.emptyPackedTexture = l.emptyUint32x4, l.emptyExtTexture = l.emptyUint32x4, l.emptySh1Texture = l.emptyUint32x2, l.emptySh2Texture = l.emptyUint32x4, l.emptySh3Texture = l.emptyUint32x4, l.emptyExtSh1Texture = l.emptyUint32x4, l.emptyExtSh2Texture = l.emptyUint32x4, l.emptyExtSh3Texture = l.emptyUint32x4, l.emptyExtSh3BTexture = l.emptyUint32x4; -let tI = l; -function pw(Q, A) { - if (!Q.properties.has(A)) - throw new Error("texture not found"); - const g = Q.properties.get(A).__webglTexture; - if (!g) - throw new Error("texture not found"); - return g; -} -const mh = xw(); -async function JQ({ - url: Q, - requestHeader: A, - withCredentials: I, - offset: g, - bytes: B -}) { - const C = new Request(Q, { - headers: A ? new Headers(A) : void 0, - credentials: I ? "include" : "same-origin" - }); - g !== void 0 && B !== void 0 && C.headers.set("Range", `bytes=${g}-${g + B - 1}`); - const E = await fetch(C); - if (!E.ok || !E.body) - throw new Error( - `Failed to fetch "${Q}": ${E.status} ${E.statusText}` - ); - return new Uint8Array(await E.arrayBuffer()); -} -class Zh { - constructor() { - this.fetchDyno = new d({ - inTypes: {}, - outTypes: { gsplat: Z }, - globals: () => [HA], - statements: ({ outputs: A }) => z(` - ${A.gsplat}.flags = 0u; - return; - `) - }).outputs.gsplat; - } - prepareFetchSplat() { + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(A) { + if (!this.packedArray || A >= this.numSplats) + throw new Error("Invalid index"); + return Xg(this.packedArray, A, this.splatEncoding); } - dispose() { + // Set all PackedSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(A, I, g, B, C, E) { + const i = this.ensureSplats(A + 1); + lQ( + i, + A, + I.x, + I.y, + I.z, + g.x, + g.y, + g.z, + B.x, + B.y, + B.z, + B.w, + C, + E.r, + E.g, + E.b + ), this.numSplats = Math.max(this.numSplats, A + 1); } - getNumSplats() { - return 0; + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(A, I, g, B, C) { + const E = this.ensureSplats(this.numSplats + 1); + lQ( + E, + this.numSplats, + A.x, + A.y, + A.z, + I.x, + I.y, + I.z, + g.x, + g.y, + g.z, + g.w, + B, + C.r, + C.g, + C.b + ), ++this.numSplats; } - hasRgbDir() { - return !1; + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(A) { + if (!(!this.packedArray || !this.numSplats)) + for (let I = 0; I < this.numSplats; ++I) { + const g = Xg(this.packedArray, I, this.splatEncoding); + A( + I, + g.center, + g.scales, + g.quaternion, + g.opacity, + g.color + ); + } } - getNumSh() { - return 0; + // Ensures our PackedSplats.target render target has enough space to generate + // maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate(A) { + if (this.target && (A ?? 1) <= this.maxSplats) + return !1; + this.target && this.target.dispose(); + const I = iA(A ?? 1), { width: g, height: B, depth: C } = I; + return this.maxSplats = I.maxSplats, this.target = new a.WebGLArrayRenderTarget(g, B, C, { + depthBuffer: !1, + stencilBuffer: !1, + generateMipmaps: !1, + magFilter: a.NearestFilter, + minFilter: a.NearestFilter + }), this.target.texture.format = a.RGBAIntegerFormat, this.target.texture.type = a.UnsignedIntType, this.target.texture.internalFormat = "RGBA32UI", this.target.scissorTest = !0, !0; } - setMaxSh(A) { + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(A) { + let I = 0; + const g = A.map((B) => { + const C = I, E = Math.ceil(B / b) * b; + return I += E, { base: C, count: B }; + }); + return { maxSplats: I, mapping: g }; } - fetchSplat({ index: A }) { - return this.fetchDyno; + // Returns a THREE.DataArrayTexture representing the PackedSplats content as + // a Uint32x4 data array texture (2048 x 2048 x depth in size) + getTexture() { + return this.target ? this.target.texture : this.source || this.packedArray ? this.maybeUpdateSource() : JA.getEmptyArray; } - forEachSplat() { + // Check if source texture needs to be created/updated + maybeUpdateSource() { + if (!this.packedArray) + throw new Error("No packed splats"); + if (this.needsUpdate || !this.source) { + if (this.needsUpdate = !1, this.source) { + const { width: A, height: I, depth: g } = this.source.image; + this.maxSplats !== A * I * g && (this.source.dispose(), this.source = null); + } + if (this.source) + this.packedArray.buffer !== this.source.image.data.buffer && (this.source.image.data = new Uint8Array(this.packedArray.buffer)); + else { + const { width: A, height: I, depth: g } = iA(this.maxSplats); + this.source = new a.DataArrayTexture( + this.packedArray, + A, + I, + g + ), this.source.format = a.RGBAIntegerFormat, this.source.type = a.UnsignedIntType, this.source.internalFormat = "RGBA32UI", this.source.needsUpdate = !0; + } + this.source.needsUpdate = !0; + } + return this.source; } -} -const bA = class bA extends PI { - constructor(A = {}) { - if (super({ - update: (I) => this.update(I) - }), this.isInitialized = !1, this.recolor = new G.Color(1, 1, 1), this.opacity = 1, this.generatorDirty = !0, this.enableViewToObject = !1, this.enableViewToWorld = !1, this.enableWorldToView = !1, this.skinning = null, this.edits = null, this.rgbaDisplaceEdits = null, this.splatRgba = null, this.maxSh = 3, this.showLodPageDyno = new EI({ value: 0 }), A.splats) - this.splats = A.splats, this.numSplats = A.splats.getNumSplats(); - else if (A.paged) { - A.extSplats && console.warn( - "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" - ); - const I = A.url ?? ""; - if (A.paged === !0) - this.paged = new Pg({ rootUrl: I }); - else if (A.paged instanceof Pg) - this.paged = A.paged; - else if (A.paged instanceof tI) - this.paged = new Pg({ rootUrl: I, pager: A.paged }); - else - throw new Error("Invalid paged option"); - this.splats = this.paged; - } else A.extSplats ? (this.extSplats = A.extSplats instanceof GI ? A.extSplats : new GI(), A.extSplats = this.extSplats, this.numSplats = this.extSplats.numSplats, this.splats = this.extSplats) : A.packedSplats ? (this.packedSplats = A.packedSplats, this.packedSplats.splatEncoding = A.splatEncoding ?? { - ...cg - }, this.splats = this.packedSplats) : this.packedSplats = new $A(); - if (this.editable = A.editable ?? !0, this.raycastable = A.raycastable ?? !0, this.minRaycastOpacity = A.minRaycastOpacity ?? 0.2, this.onFrame = A.onFrame, this.context = { - transform: new XI(), - viewToWorld: new XI(), - worldToView: new XI(), - viewToObject: new XI(), - covTransform: new Kg(), - covViewToWorld: new Kg(), - covWorldToView: new Kg(), - covViewToObject: new Kg(), - recolor: new mI({ - value: new G.Vector4().setScalar(Number.NEGATIVE_INFINITY) - }), - time: new pI({ value: 0 }), - deltaTime: new pI({ value: 0 }), - numSplats: new EI({ value: 0 }), - splats: new Zh(), - enableLod: new bI({ value: !1 }), - lodIndices: new EQ({ - value: fB, - key: "lodIndices" - }) - }, this.covSplats = A.covSplats ?? !1, this.covSplats && !this.extSplats) - throw new Error("CovSplats requires ExtSplats"); - if (this.objectModifiers = A.objectModifier ? [A.objectModifier] : void 0, this.worldModifiers = A.worldModifier ? [A.worldModifier] : void 0, A.objectModifiers && (this.objectModifiers = A.objectModifiers), A.worldModifiers && (this.worldModifiers = A.worldModifiers), this.enableLod = A.enableLod, this.lodScale = A.lodScale ?? 1, this.behindFoveate = A.behindFoveate, this.coneFov0 = A.coneFov0, this.coneFov = A.coneFov, this.coneFoveate = A.coneFoveate, this.updateGenerator(), A.url || A.fileBytes || A.stream || A.constructSplats || A.packedSplats && !A.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) - this.initialized = this.asyncInitialize(A).then(async () => { - if (this.updateGenerator(), this.isInitialized = !0, A.onLoad) { - const I = A.onLoad(this); - I instanceof Promise && await I; + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(A) { + let I = JA.generatorProgram.get(A); + if (!I) { + const B = nA( + { index: "int" }, + {}, + ({ index: C }, E, { roots: i }) => { + A.inputs.index = C; + const o = A.outputs.gsplat, D = gB( + o, + this.dynoRgbMinMaxLnScaleMinMax + ); + i.push(D); } - return this; - }); - else if (this.isInitialized = !0, this.initialized = Promise.resolve(this), A.onLoad) { - const I = A.onLoad(this); - I instanceof Promise && (this.initialized = I.then(() => this)); - } - } - async asyncInitialize(A) { - const { - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - maxSplats: i, - constructSplats: w, - onProgress: s, - splatEncoding: o, - lod: y, - nonLod: h, - lodAbove: k - } = A; - if (this.packedSplats) { - if (I || g || E || w) { - const R = { - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - maxSplats: i, - construct: w, - onProgress: s, - splatEncoding: o, - lod: y, - nonLod: h, - lodAbove: k - }; - this.packedSplats.reinitialize(R); - } - await this.packedSplats.initialized, this.splats = this.packedSplats; - } else if (this.extSplats && (I || g || E || w)) { - const R = w; - this.extSplats.reinitialize({ - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - maxSplats: i, - construct: R, - onProgress: s, - lod: y, - nonLod: h, - lodAbove: k - }), await this.extSplats.initialized, this.splats = this.extSplats; + ); + JA.programTemplate || (JA.programTemplate = new Gg( + yg().computeUvec4Template + )), I = new CQ({ + graph: B, + inputs: { index: "_index" }, + outputs: { output: "target" }, + template: JA.programTemplate + }), Object.assign(I.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } + }), JA.generatorProgram.set(A, I); } - this.splats && (this.numSplats = this.splats.getNumSplats(), this.updateGenerator()); - } - static async staticInitialize() { - await xw(), bA.isStaticInitialized = !0; - } - // Creates a new Gsplat with the provided parameters (all values in "float" space, - // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, - // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential - // doubling strategy to fit the new data, so it's fairly efficient to just - // pushSplat(...) each Gsplat you want to create in a loop. - pushSplat(A, I, g, B, C) { - this.packedSplats ? this.packedSplats.pushSplat(A, I, g, B, C) : this.extSplats && this.extSplats.pushSplat(A, I, g, B, C); + const g = I.prepareMaterial(); + return JA.fullScreenQuad.material = g, { program: I, material: g }; } - // This method iterates over all Gsplats in this instance's packedSplats, - // invoking the provided callback with index: number in 0..=(this.numSplats-1) and - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). - // Note that the objects passed in as center etc. are the same for every callback - // invocation: these objects are reused for efficiency. Changing these values has - // no effect as they are decoded/unpacked copies of the underlying data. To update - // the packedSplats, call .packedSplats.setSplat(index, center, scales, - // quaternion, opacity, color). - forEachSplat(A) { - var I; - (I = this.splats) == null || I.forEachSplat(A); + saveRenderState(A) { + return { + target: A.getRenderTarget(), + xrEnabled: A.xr.enabled, + autoClear: A.autoClear + }; } - // Call this when you are finished with the SplatMesh and want to free - // any buffers it holds (via packedSplats). - dispose() { - this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats && (this.splats.dispose(), this.splats = void 0), this.packedSplats && (this.packedSplats.dispose(), this.packedSplats = void 0), this.extSplats && (this.extSplats.dispose(), this.extSplats = void 0); + resetRenderState(A, I) { + A.setRenderTarget(I.target), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; } - // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, - // only the centers of the splats are used to compute the bounding box. - // IMPORTANT: This should only be called after the SplatMesh is initialized. - getBoundingBox(A = !0) { - var i; - if (!this.initialized) - throw new Error( - "Cannot get bounding box before SplatMesh is initialized" + // Executes a dyno program specified by generator which is any DynoBlock that + // maps { index: "int" } to { gsplat: Gsplat }. This is called in + // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for + // SplatGenerator instances whose version is newer than what was generated + // for it last time. + generate({ + generator: A, + base: I, + count: g, + renderer: B + }) { + if (!this.target) + throw new Error("Target must be initialized with ensureSplats"); + if (I + g > this.maxSplats) + throw new Error("Base + count exceeds maxSplats"); + const { program: C, material: E } = this.prepareProgramMaterial(A); + C.update(); + const i = this.saveRenderState(B), o = Math.ceil((I + g) / b) * b, D = b * vA; + for (E.uniforms.targetBase.value = I, E.uniforms.targetCount.value = g; I < o; ) { + const w = Math.floor(I / D); + E.uniforms.targetLayer.value = w; + const s = w * D, t = Math.floor((I - s) / b), G = Math.min( + vA, + Math.ceil((o - s) / b) ); - const I = new G.Vector3( - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY, - Number.POSITIVE_INFINITY - ), g = new G.Vector3( - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY, - Number.NEGATIVE_INFINITY - ), B = new G.Vector3(), C = [-1, 1]; - function E(w, s, o, y, h, k) { - if (A) - I.min(s), g.max(s); - else - for (const R of C) - for (const F of C) - for (const a of C) - B.set(R * o.x, F * o.y, a * o.z), B.applyQuaternion(y), B.add(s), I.min(B), g.max(B); + this.target.scissor.set( + 0, + t, + b, + G - t + ), B.setRenderTarget(this.target, w), B.xr.enabled = !1, B.autoClear = !1, JA.fullScreenQuad.render(B), I += b * (G - t); } - return (i = this.splats) == null || i.forEachSplat(E), new G.Box3(I, g); - } - set objectModifier(A) { - A ? this.objectModifiers = [A] : this.objectModifiers = void 0; + return this.resetRenderState(B, i), { nextBase: o }; } - set worldModifier(A) { - A ? this.worldModifiers = [A] : this.worldModifiers = void 0; + disposeLodSplats() { + this.lodSplats && (this.lodSplats.dispose(), this.lodSplats = void 0); } - constructGenerator(A) { - if (this.covSplats) - return this.constructCovGenerator(A); - const { transform: I, viewToObject: g, recolor: B } = A, C = cA( - { index: "int" }, - { gsplat: Z }, - ({ index: E }) => { - if (!E) - throw new Error("index is undefined"); - E = lB( - A.lodIndices, - E, - A.numSplats, - A.enableLod, - this.showLodPageDyno - ), A.splats.setMaxSh(this.maxSh), A.splats.prepareFetchSplat(); - let D = A.splats.fetchSplat({ - index: E, - viewOrigin: g.translate - }); - if (this.splatRgba && (D = pB( - D, - this.splatRgba.dyno, - E, - A.enableLod - )), this.skinning && (D = this.skinning.modify(D)), this.objectModifiers) - for (const w of this.objectModifiers) - D = w.apply({ gsplat: D }).gsplat; - D = I.applyGsplat(D); - const i = kA(B, uA(D).outputs.rgba); - if (D = CI({ gsplat: D, rgba: i }), this.rgbaDisplaceEdits && (D = this.rgbaDisplaceEdits.modify(D)), this.worldModifiers) - for (const w of this.worldModifiers) - D = w.apply({ gsplat: D }).gsplat; - return { gsplat: D }; + async createLodSplats({ + rgbaArray: A, + quality: I + } = {}) { + const g = typeof this.lod == "number" ? Math.max(1.1, Math.min(2, this.lod)) : I ? 1.75 : 1.5, B = this.packedArray.slice(), C = A ? (await A.getArray()).slice() : void 0, E = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }, i = await iQ.withWorker(async (D) => await D.call( + I ? "qualityLodPackedSplats" : "tinyLodPackedSplats", + { + numSplats: this.numSplats, + packedArray: B, + extra: E, + lodBase: g, + rgba: C, + encoding: this.splatEncoding ?? IQ } - ); - this.generator = C, this.covGenerator = void 0; + )), o = new JA(i); + this.lodSplats && this.lodSplats.dispose(), this.lodSplats = o, this.nonLod = !0, this.lod = I ? "quality" : !0; } - constructCovGenerator(A) { - const { covTransform: I, covViewToObject: g, recolor: B } = A, C = cA( - { index: "int" }, - { covsplat: eA }, - ({ index: E }) => { - if (!E) - throw new Error("index is undefined"); - E = lB( - A.lodIndices, - E, - A.numSplats, - A.enableLod, - this.showLodPageDyno - ), A.splats.prepareFetchSplat(); - let D = A.splats.fetchSplat({ - index: E, - viewOrigin: g.offset - }); - if (this.splatRgba && (D = pB( - D, - this.splatRgba.dyno, - E, - A.enableLod - )), this.objectModifiers) - for (const s of this.objectModifiers) - D = s.apply({ gsplat: D }).gsplat; - let i = Xg(D); - if (this.skinning && (i = this.skinning.modifyCov(i)), this.covObjectModifiers) - for (const s of this.covObjectModifiers) - i = s.apply({ covsplat: i }).covsplat; - i = I.applyCovSplat(i); - const w = kA(B, Wg(i).outputs.rgba); - if (i = iB({ covsplat: i, rgba: w }), this.rgbaDisplaceEdits && (i = this.rgbaDisplaceEdits.modifyCov(i)), this.covWorldModifiers) - for (const s of this.covWorldModifiers) - i = s.apply({ covsplat: i }).covsplat; - return { covsplat: i }; + extractSplats(A, I) { + const g = iA(A.length).maxSplats, B = new JA({ maxSplats: g }); + for (let C = 0; C < A.length; C++) { + const E = this.getSplat(A[C]); + if (I) { + let i = (A[C] >>> 16) * 0.61803398875; + i = i - Math.floor(i); + const o = Math.max(0, Math.min(1, Math.abs(i * 6 - 3) - 1)), D = Math.max(0, Math.min(1, Math.abs(i * 6 + 1) - 1)), w = Math.max(0, Math.min(1, Math.abs(i * 6 - 1) - 1)); + E.color.r *= o, E.color.g *= D, E.color.b *= w; } - ); - this.generator = void 0, this.covGenerator = C; - } - // Call this whenever something changes in the Gsplat processing pipeline, - // for example changing maxSh or updating objectModifier or worldModifier. - // Compiled generators are cached for efficiency and re-use when the same - // pipeline structure emerges after successive changes. - updateGenerator() { - this.generatorDirty = !0; - } - // This is called automatically by SparkRenderer and you should not have to - // call it. It updates parameters for the generated pipeline and calls - // updateGenerator() if the pipeline needs to change. - update({ - renderer: A, - time: I, - deltaTime: g, - viewToWorld: B, - camera: C, - renderSize: E, - globalEdits: D, - lodIndices: i - }) { - var R, F, a; - this.context.time.value = I, this.context.deltaTime.value = g, bA.dynoTime.value = I, this.showLodPageDyno.value = this.showLodPage ?? -1; - const w = this.splats ?? this.packedSplats ?? this.extSplats; - w && (this.context.splats = w), this.numSplats = this.context.splats.getNumSplats(); - let s = !1; - const o = ((R = this.packedSplats) == null ? void 0 : R.lodSplats) ?? ((F = this.extSplats) == null ? void 0 : F.lodSplats); - if (this.context.enableLod.value = o != null && i != null, this.enableLod === !1 && (this.context.enableLod.value = !1), this.context.lodIndices.value = (i == null ? void 0 : i.texture) ?? fB, this.context.enableLod.value && o && (this.context.splats = o, this.numSplats = (i == null ? void 0 : i.numSplats) ?? 0), this.context.numSplats.value = this.numSplats, this.context.splats !== this.lastSplats && (this.lastSplats = this.context.splats, this.generatorDirty = !0), this.covSplats) { - this.context.covTransform.update(this) && (s = !0), this.context.covViewToWorld.updateFromMatrix(B) && this.enableViewToWorld && (s = !0); - const S = B.clone().invert(); - this.context.covWorldToView.updateFromMatrix(S) && this.enableWorldToView && (s = !0); - const c = this.matrixWorld.clone().invert().multiply(B); - this.context.covViewToObject.updateFromMatrix(c) && (this.enableViewToObject || this.context.splats.hasRgbDir()) && (s = !0); - } else { - this.context.transform.update(this) && (s = !0), this.context.viewToWorld.updateFromMatrix(B) && this.enableViewToWorld && (s = !0); - const S = B.clone().invert(); - this.context.worldToView.updateFromMatrix(S) && this.enableWorldToView && (s = !0); - const N = new G.Matrix4().compose( - this.context.transform.translate.value, - this.context.transform.rotate.value, - new G.Vector3().setScalar(this.context.transform.scale.value) - ).invert().multiply(B); - this.context.viewToObject.updateFromMatrix(N) && (this.enableViewToObject || this.context.splats.hasRgbDir()) && (s = !0); - } - const y = new G.Vector4( - this.recolor.r, - this.recolor.g, - this.recolor.b, - this.opacity - ); - y.equals(this.context.recolor.value) || (this.context.recolor.value.copy(y), s = !0); - const h = this.editable ? (this.edits ?? []).concat(D) : []; - this.editable && !this.edits && this.traverseVisible((S) => { - S instanceof Sg && h.push(S); - }), h.sort((S, M) => S.ordering - M.ordering); - const k = h.map((S) => { - if (S.sdfs != null) - return { edit: S, sdfs: S.sdfs }; - const M = []; - return S.traverseVisible((c) => { - c instanceof lh && M.push(c); - }), { edit: S, sdfs: M }; - }); - if (k.length > 0 && !this.rgbaDisplaceEdits) { - const S = k.length, M = k.reduce( - (c, N) => c + N.sdfs.length, - 0 + B.pushSplat( + E.center, + E.scales, + E.quaternion, + E.opacity, + E.color ); - this.rgbaDisplaceEdits = new ph({ - maxEdits: S, - maxSdfs: M - }), this.generatorDirty = !0; - } - if (this.rgbaDisplaceEdits) { - const S = this.rgbaDisplaceEdits.update(k); - s || (s = S.updated), S.dynoUpdated && (this.generatorDirty = !0); } - this.generatorDirty && (this.constructGenerator(this.context), this.generatorDirty = !1, s = !0), s && this.updateVersion(), (a = this.onFrame) == null || a.call(this, { mesh: this, time: I, deltaTime: g }); + return B; } - // This method conforms to the standard THREE.Raycaster API, performing object-ray - // intersections using this method to populate the provided intersects[] array - // with each intersection point. - raycast(A, I) { - var a, S, M, c, N, U, J, t, H, K, Y, L, q, n, r, p, m, IA, X, EA, j, gA, W; - if (!bA.isStaticInitialized || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) - return; - const g = this.paged != null, B = g ? ((S = (a = this.paged) == null ? void 0 : a.pager) == null ? void 0 : S.extSplats) ?? !1 : this.extSplats != null, { near: C, far: E, ray: D } = A, i = this.matrixWorld.clone().invert(), w = new G.Matrix3().setFromMatrix4(i), s = D.origin.clone().applyMatrix4(i), o = D.direction.clone().applyMatrix3(w), y = ih(), h = y.length / 4; - let k = 0; - const R = ((M = this.raycastIndices) == null ? void 0 : M.numSplats) ?? (g ? (c = this.paged) == null ? void 0 : c.numSplats : this.context.numSplats.value) ?? 0, F = ((N = this.raycastIndices) == null ? void 0 : N.indices) ?? (g ? (U = this.paged) == null ? void 0 : U.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; - if (B) { - const u = wh(), b = g ? (r = (n = this.paged) == null ? void 0 : n.pager) == null ? void 0 : r.packedTexture.value.image.data : F ? (m = (p = this.extSplats) == null ? void 0 : p.lodSplats) == null ? void 0 : m.extArrays[0] : (IA = this.extSplats) == null ? void 0 : IA.extArrays[0], T = g ? (EA = (X = this.paged) == null ? void 0 : X.pager) == null ? void 0 : EA.extTexture.value.image.data : F ? (gA = (j = this.extSplats) == null ? void 0 : j.lodSplats) == null ? void 0 : gA.extArrays[1] : (W = this.extSplats) == null ? void 0 : W.extArrays[1]; - if (!b || !T) - return; - for (let f = 0; f < R; f += h) { - const FA = Math.min(h, R - f); - if (!F) - y.set(b.subarray(f * 4, (f + FA) * 4)), u.set(T.subarray(f * 4, (f + FA) * 4)); - else - for (let aA = 0; aA < FA; ++aA) { - const SA = F[f + aA], wA = aA * 4, GA = SA * 4; - y[wA] = b[GA], y[wA + 1] = b[GA + 1], y[wA + 2] = b[GA + 2], y[wA + 3] = b[GA + 3], u[wA] = T[GA], u[wA + 1] = T[GA + 1], u[wA + 2] = T[GA + 2], u[wA + 3] = T[GA + 3]; - } - const sA = oh( - s.x, - s.y, - s.z, - o.x, - o.y, - o.z, - this.minRaycastOpacity, - C, - E, - FA - ); - k = this.appendRaycastBuffer( - k, - sA - ); - } - } else { - const u = g ? (t = (J = this.paged) == null ? void 0 : J.pager) == null ? void 0 : t.packedTexture.value.image.data : F ? (K = (H = this.packedSplats) == null ? void 0 : H.lodSplats) == null ? void 0 : K.packedArray : (Y = this.packedSplats) == null ? void 0 : Y.packedArray; - if (!u) - return; - const b = g ? (L = this.paged) == null ? void 0 : L.splatEncoding : (q = this.packedSplats) == null ? void 0 : q.splatEncoding; - for (let T = 0; T < R; T += h) { - const f = Math.min(h, R - T); - if (!F) - y.set(u.subarray(T * 4, (T + f) * 4)); - else - for (let sA = 0; sA < f; ++sA) { - const aA = F[T + sA], SA = sA * 4, wA = aA * 4; - y[SA] = u[wA], y[SA + 1] = u[wA + 1], y[SA + 2] = u[wA + 2], y[SA + 3] = u[wA + 3]; - } - const FA = sh( - s.x, - s.y, - s.z, - o.x, - o.y, - o.z, - this.minRaycastOpacity, - C, - E, - f, - (b == null ? void 0 : b.lnScaleMin) ?? pA, - (b == null ? void 0 : b.lnScaleMax) ?? fA, - (b == null ? void 0 : b.lodOpacity) ?? !1 - ); - k = this.appendRaycastBuffer( - k, - FA - ); +}; +JA.getEmptyArray = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(), JA.programTemplate = null, JA.generatorProgram = /* @__PURE__ */ new WeakMap(), JA.fullScreenQuad = new vQ( + new a.RawShaderMaterial({ visible: !1 }) +), JA.emptyUint32x4 = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(), JA.emptyUint32x2 = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 2), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RG32UI", E.needsUpdate = !0, E; +})(); +let hI = JA; +class Mo extends q { + constructor({ packedSplats: A } = {}) { + super({ + key: "packedSplats", + type: gQ, + globals: () => [QQ], + value: { + textureArray: hI.getEmptyArray, + numSplats: 0, + rgbMinMaxLnScaleMinMax: new a.Vector4( + 0, + 1, + uA, + bA + ), + lodOpacity: !1 + }, + update: (I) => { + var g, B, C, E, i, o, D, w, s, t, G, c; + return I.textureArray = ((g = this.packedSplats) == null ? void 0 : g.getTexture()) ?? hI.getEmptyArray, I.numSplats = ((B = this.packedSplats) == null ? void 0 : B.numSplats) ?? 0, I.rgbMinMaxLnScaleMinMax.set( + ((E = (C = this.packedSplats) == null ? void 0 : C.splatEncoding) == null ? void 0 : E.rgbMin) ?? 0, + ((o = (i = this.packedSplats) == null ? void 0 : i.splatEncoding) == null ? void 0 : o.rgbMax) ?? 1, + ((w = (D = this.packedSplats) == null ? void 0 : D.splatEncoding) == null ? void 0 : w.lnScaleMin) ?? uA, + ((t = (s = this.packedSplats) == null ? void 0 : s.splatEncoding) == null ? void 0 : t.lnScaleMax) ?? bA + ), I.lodOpacity = ((c = (G = this.packedSplats) == null ? void 0 : G.splatEncoding) == null ? void 0 : c.lodOpacity) ?? !1, I; } - } - for (const u of bA.raycastBuffer.subarray(0, k)) { - const b = D.direction.clone().multiplyScalar(u).add(D.origin); - I.push({ - distance: u, - point: b, - object: this - }); - } + }), this.packedSplats = A; } - appendRaycastBuffer(A, I) { - const g = A + I.length; - let B = bA.raycastBuffer.length; - if (g > B) { - for (; B < g; ) - B *= 2; - const C = new Float32Array(B); - C.set(bA.raycastBuffer.subarray(0, A)), bA.raycastBuffer = C; - } - return bA.raycastBuffer.set(I, A), A + I.length; +} +const lG = wA(` + vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { + // Extract sint7 values packed into 2 x uint32 + vec3 sh1_0 = vec3(ivec3( + int(packedData.x << 25u) >> 25, + int(packedData.x << 18u) >> 25, + int(packedData.x << 11u) >> 25 + )); + vec3 sh1_1 = vec3(ivec3( + int(packedData.x << 4u) >> 25, + int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, + int(packedData.y << 22u) >> 25 + )); + vec3 sh1_2 = vec3(ivec3( + int(packedData.y << 15u) >> 25, + int(packedData.y << 8u) >> 25, + int(packedData.y << 1u) >> 25 + )); + + vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + return rgb * (sh1Max / 63.0); } - async createLodSplats({ - rgbaArray: A, - quality: I - } = {}) { - this.packedSplats ? await this.packedSplats.createLodSplats({ quality: I, rgbaArray: A }) : this.extSplats && await this.extSplats.createLodSplats({ quality: I, rgbaArray: A }); +`), xG = wA(` + vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { + // Extract sint8 values packed into 4 x uint32 + vec3 sh2_0 = vec3(ivec3( + int(packedData.x << 24u) >> 24, + int(packedData.x << 16u) >> 24, + int(packedData.x << 8u) >> 24 + )); + vec3 sh2_1 = vec3(ivec3( + int(packedData.x) >> 24, + int(packedData.y << 24u) >> 24, + int(packedData.y << 16u) >> 24 + )); + vec3 sh2_2 = vec3(ivec3( + int(packedData.y << 8u) >> 24, + int(packedData.y) >> 24, + int(packedData.z << 24u) >> 24 + )); + vec3 sh2_3 = vec3(ivec3( + int(packedData.z << 16u) >> 24, + int(packedData.z << 8u) >> 24, + int(packedData.z) >> 24 + )); + vec3 sh2_4 = vec3(ivec3( + int(packedData.w << 24u) >> 24, + int(packedData.w << 16u) >> 24, + int(packedData.w << 8u) >> 24 + )); + + vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + return rgb * (sh2Max / 127.0); } -}; -bA.staticInitialized = bA.staticInitialize(), bA.isStaticInitialized = !1, bA.dynoTime = new pI({ value: 0 }), bA.raycastBuffer = new Float32Array(1024); -let vA = bA; -function lB(Q, A, I, g, B) { - return gQ({ +`), qG = wA(` + vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { + // Extract sint6 values packed into 4 x uint32 + vec3 sh3_0 = vec3(ivec3( + int(packedData.x << 26u) >> 26, + int(packedData.x << 20u) >> 26, + int(packedData.x << 14u) >> 26 + )); + vec3 sh3_1 = vec3(ivec3( + int(packedData.x << 8u) >> 26, + int(packedData.x << 2u) >> 26, + int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 + )); + vec3 sh3_2 = vec3(ivec3( + int(packedData.y << 22u) >> 26, + int(packedData.y << 16u) >> 26, + int(packedData.y << 10u) >> 26 + )); + vec3 sh3_3 = vec3(ivec3( + int(packedData.y << 4u) >> 26, + int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, + int(packedData.z << 24u) >> 26 + )); + vec3 sh3_4 = vec3(ivec3( + int(packedData.z << 18u) >> 26, + int(packedData.z << 12u) >> 26, + int(packedData.z << 6u) >> 26 + )); + vec3 sh3_5 = vec3(ivec3( + int(packedData.z) >> 26, + int(packedData.w << 26u) >> 26, + int(packedData.w << 20u) >> 26 + )); + vec3 sh3_6 = vec3(ivec3( + int(packedData.w << 14u) >> 26, + int(packedData.w << 8u) >> 26, + int(packedData.w << 2u) >> 26 + )); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + return rgb * (sh3Max / 31.0); + } +`); +function Jo({ + coord: Q, + viewDir: A, + numSh: I, + sh1Texture: g, + sh2Texture: B, + sh3Texture: C, + shMax: E +}) { + return new l({ inTypes: { - lodIndices: "usampler2D", - index: "int", - numSplats: "int", - enableLod: "bool", - showLodPage: "int" - }, - outTypes: { - index: "int" + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3Texture: "usampler2DArray", + shMax: "vec3" }, + outTypes: { rgb: "vec3" }, inputs: { - lodIndices: Q, - index: A, - numSplats: I, - enableLod: g, - showLodPage: B - }, - statements: ({ inputs: C, outputs: E }) => z(` - int index = ${C.index}; - if (${C.showLodPage} < 0) { - if (index >= ${C.numSplats}) { - return; - } - if (${C.enableLod}) { - ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); - uint splatIndex = texelFetch(${C.lodIndices}, lodIndexCoord, 0)[index & 3]; - ${E.index} = int(splatIndex); - } else { - ${E.index} = index; - } - } else { - int start = ${C.showLodPage} << 16; - if (index >= 65536) { - return; - } - ${E.index} = start + index; - } - `) - }).outputs.index; -} -function pB(Q, A, I, g) { - return gQ({ - inTypes: { - gsplat: Z, - rgba: RB, - index: "int", - enableLod: "bool" + coord: Q, + viewDir: A, + numSh: I, + sh1Texture: g, + sh2Texture: B, + sh3Texture: C, + shMax: E }, - outTypes: { gsplat: Z }, - inputs: { gsplat: Q, rgba: A, index: I, enableLod: g }, - statements: ({ inputs: B, outputs: C }) => z(` - ${C.gsplat} = ${B.gsplat}; - if (!${B.enableLod} && (${B.index} >= 0) && (${B.index} < ${B.rgba}.count)) { - ${C.gsplat}.rgba = texelFetch(${B.rgba}.texture, splatTexCoord(${B.index}), 0); - } - `) - }).outputs.gsplat; + globals: () => [ + lG, + xG, + qG + ], + statements: ({ inputs: i, outputs: o }) => { + const D = ["vec3 rgb = vec3(0.0);"]; + return i.sh1Texture && (D.push( + ...z(` + if (${i.numSh} >= 1) { + vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0).rg, ${i.viewDir}, ${i.shMax}.x); + rgb += sh1Rgb; + `) + ), i.sh2Texture && (D.push( + ...z(` + if (${i.numSh} >= 2) { + vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${i.sh2Texture}, ${i.coord}, 0), ${i.viewDir}, ${i.shMax}.y); + rgb += sh2Rgb; + `) + ), i.sh3Texture && D.push( + ...z(` + if (${i.numSh} >= 3) { + vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${i.sh3Texture}, ${i.coord}, 0), ${i.viewDir}, ${i.shMax}.z); + rgb += sh3Rgb; + } + `) + ), D.push("}")), D.push("}")), D.push(`${o.rgb} = rgb;`), D; + } + }).outputs; } -const fB = (() => { - const Q = new G.DataTexture( - new Uint32Array(16384), - 4096, - 1, - G.RGBAIntegerFormat, - G.UnsignedIntType - ); - return Q.internalFormat = "RGBA32UI", Q.needsUpdate = !0, Q; -})(); -new G.BufferGeometry(); -new G.ShaderMaterial(); -const bB = [ - "char", - "uchar", - "short", - "ushort", - "int", - "uint", - "float", - "double" -], jI = class jI { - // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet - constructor({ fileBytes: A }) { - this.header = "", this.littleEndian = !0, this.elements = {}, this.comments = [], this.data = null, this.numSplats = 0, this.fileBytes = A instanceof ArrayBuffer ? new Uint8Array(A) : A; +class Uo extends Vo { + constructor(A) { + super(A), this.fileLoader = new Wo(A); } - // Identify and parse the PLY text header (assumed to be <64KB in size). - // this.elements will contain all the elements in the file, typically - // "vertex" contains the Gsplat data. - async parseHeader() { - const I = new ReadableStream({ - start: (E) => { - E.enqueue(this.fileBytes.slice(0, 65536)), E.close(); - } - }).pipeThrough(new TextDecoderStream()).getReader(); - this.header = ""; - const g = `end_header -`; - for (; ; ) { - const { value: E, done: D } = await I.read(); - if (D) - throw new Error("Failed to read header"); - this.header += E; - const i = this.header.indexOf(g); - if (i >= 0) { - this.header = this.header.slice(0, i + g.length); - break; - } - } - const B = new TextEncoder().encode(this.header).length; - this.data = new DataView(this.fileBytes.buffer, B), this.elements = {}; - let C = null; - this.comments = [], this.header.trim().split(` -`).forEach((E, D) => { - const i = E.trim(); - if (D === 0) { - if (i !== "ply") - throw new Error("Invalid PLY header"); - return; - } - if (i.length === 0) - return; - const w = i.split(" "); - switch (w[0]) { - case "format": - if (w[1] === "binary_little_endian") - this.littleEndian = !0; - else if (w[1] === "binary_big_endian") - this.littleEndian = !1; - else - throw new Error(`Unsupported PLY format: ${w[1]}`); - if (w[2] !== "1.0") - throw new Error(`Unsupported PLY version: ${w[2]}`); - break; - case "end_header": - break; - case "comment": - this.comments.push(i.slice(8)); - break; - case "element": { - const s = w[1]; - C = { - name: s, - count: Number.parseInt(w[2]), - properties: {} - }, this.elements[s] = C; - break; + load(A, I, g, B) { + return this.loadInternal({ + url: A, + onLoad: I, + onProgress: g, + onError: B + }); + } + async loadAsync(A, I) { + return new Promise((g, B) => { + this.load( + A, + (C) => { + g(C); + }, + I, + B + ); + }); + } + parse(A) { + return new zA({ packedSplats: A }); + } + loadInternal({ + packedSplats: A, + extSplats: I, + url: g, + fileBytes: B, + fileType: C, + fileName: E, + stream: i, + streamLength: o, + onLoad: D, + onProgress: w, + onError: s, + lod: t, + nonLod: G, + lodAbove: c, + lodBase: h + }) { + B instanceof ArrayBuffer && (B = new Uint8Array(B)); + const y = B ? void 0 : this.manager.resolveURL((this.path ?? "") + (g ?? "")); + let S = i == null ? void 0 : i.getReader(); + this.manager.itemStart(y ?? ""), iQ.withWorker(async (F) => { + const e = (A == null ? void 0 : A.lod) ?? (I == null ? void 0 : I.lod); + e && (t = e); + const k = (A == null ? void 0 : A.nonLod) ?? (I == null ? void 0 : I.nonLod); + k !== void 0 && (G = k); + const R = async (M) => { + const { loaded: J, total: H } = M; + if (J !== void 0 && w && w( + new ProgressEvent("progress", { + lengthComputable: H !== 0, + loaded: J, + total: H + }) + ), M.nextChunk) { + let n; + if (!S) + n = new Uint8Array(0); + else { + const { done: L, value: x } = await S.read(); + L ? (S.releaseLock(), S = void 0, n = new Uint8Array(0)) : n = x; + } + F.call("nextChunk", { chunk: n }); } - case "property": - if (C == null) - throw new Error("Property must be inside an element"); - w[1] === "list" ? C.properties[w[4]] = { - isList: !0, - type: w[3], - countType: w[2] - } : C.properties[w[2]] = { - isList: !1, - type: w[1] - }; - break; + }, N = y ? new URL(y, window.location.href).toString() : void 0, U = await F.call( + I ? "loadExtSplats" : "loadPackedSplats", + { + url: N, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + fileBytes: B == null ? void 0 : B.slice(), + fileType: C, + pathName: y || E, + chunked: i !== void 0, + chunkedLength: o, + encoding: A == null ? void 0 : A.splatEncoding, + lod: t, + lodBase: h, + nonLod: G, + lodAbove: c + }, + { onStatus: R } + ); + if (U.lodSplats && (I ? U.lodSplats = new sI({ + ...U.lodSplats + }) : U.lodSplats = new hI({ + ...U.lodSplats, + maxSplats: A == null ? void 0 : A.maxSplats + })), I) { + const M = { + // ...(initExt ?? {}), + ...U + }; + I.initialize(M), D == null || D(I); + } else { + const M = { + // ...(init ?? {}), + ...U + }; + A ? (A.initialize(M), D == null || D(A)) : D == null || D(new hI(M)); } - }), this.elements.vertex && (this.numSplats = this.elements.vertex.count); + }).catch((F) => { + this.manager.itemError(y ?? ""), s == null || s(F); + }).finally(() => { + this.manager.itemEnd(y ?? ""); + }); } - parseData(A) { - let I = 0; - const g = this.data; - if (g == null) - throw new Error("No data to parse"); - for (const B in this.elements) { - const C = this.elements[B], { count: E, properties: D } = C, i = Wh(D), w = jh(D, this.littleEndian), s = A(C) ?? (() => { + async loadInternalAsync({ + packedSplats: A, + extSplats: I, + url: g, + fileBytes: B, + fileType: C, + fileName: E, + stream: i, + streamLength: o, + onProgress: D, + lod: w, + nonLod: s, + lodAbove: t, + lodBase: G + }) { + return new Promise((c, h) => { + this.loadInternal({ + packedSplats: A, + extSplats: I, + url: g, + fileBytes: B, + fileType: C, + fileName: E, + stream: i, + streamLength: o, + onLoad: c, + onProgress: D, + onError: h, + lod: w, + nonLod: s, + lodAbove: t, + lodBase: G }); - for (let o = 0; o < E; o++) - I = w(g, I, i), s(o, i); - } + }); } - // Parse all the Gsplat data in the PLY file in go, invoking the given - // callbacks for each Gsplat. - parseSplats(A, I) { - if (this.elements.vertex == null) - throw new Error("No vertex element found"); - let g = !1; - const B = []; - let C = 0, E = [], D = [], i = [], w, s, o; - function y() { - const a = Xh[C]; - E = new Array(3).fill(null).flatMap((S, M) => [0, 1, 2].map((c, N) => M + N * a / 3)), D = new Array(5).fill(null).flatMap( - (S, M) => [0, 1, 2].map((c, N) => 3 + M + N * a / 3) - ), i = new Array(7).fill(null).flatMap( - (S, M) => [0, 1, 2].map((c, N) => 8 + M + N * a / 3) - ), w = C >= 1 ? new Float32Array(3 * 3) : void 0, s = C >= 2 ? new Float32Array(5 * 3) : void 0, o = C >= 3 ? new Float32Array(7 * 3) : void 0; - } - function h(a, S) { - if (!w) - throw new Error("Missing sh1"); - const M = S.f_rest; - for (let c = 0; c < E.length; c++) - w[c] = M[E[c]] * 8 / 255 - 4; - if (s) - for (let c = 0; c < D.length; c++) - s[c] = M[D[c]] * 8 / 255 - 4; - if (o) - for (let c = 0; c < i.length; c++) - o[c] = M[i[c]] * 8 / 255 - 4; - I == null || I(a, w, s, o); - } - function k(a) { - const { - min_x: S, - min_y: M, - min_z: c, - max_x: N, - max_y: U, - max_z: J, - min_scale_x: t, - min_scale_y: H, - min_scale_z: K, - max_scale_x: Y, - max_scale_y: L, - max_scale_z: q - } = a.properties; - if (!S || !M || !c || !N || !U || !J || !t || !H || !K || !Y || !L || !q) - throw new Error("Missing PLY chunk properties"); - return g = !0, (n, r) => { - const { - min_x: p, - min_y: m, - min_z: IA, - max_x: X, - max_y: EA, - max_z: j, - min_scale_x: gA, - min_scale_y: W, - min_scale_z: u, - max_scale_x: b, - max_scale_y: T, - max_scale_z: f, - min_r: FA, - min_g: sA, - min_b: aA, - max_r: SA, - max_g: wA, - max_b: GA - } = r; - B.push({ - min_x: p, - min_y: m, - min_z: IA, - max_x: X, - max_y: EA, - max_z: j, - min_scale_x: gA, - min_scale_y: W, - min_scale_z: u, - max_scale_x: b, - max_scale_y: T, - max_scale_z: f, - min_r: FA, - min_g: sA, - min_b: aA, - max_r: SA, - max_g: wA, - max_b: GA - }); - }; +} +function Lo(Q) { + const I = new DataView(Q.buffer).getUint32(0, !0); + if ((I & 16777215) === 7957616) + return LA.PLY; + if ((I & 16777215) === 559903) { + const g = YE(Q, 4); + return new DataView(g.buffer).getUint32(0, !0) === 1347635022 ? LA.SPZ : void 0; + } + if (I === 67324752) + return fG(Q) ? LA.PCSOGSZIP : void 0; + if (I === 809779538) + return LA.RAD; +} +function pG(Q) { + const A = Q.split(/[?#]/, 1)[0], I = Math.max( + A.lastIndexOf("/"), + A.lastIndexOf("\\") + ), g = A.slice(I + 1), B = g.lastIndexOf("."); + return B <= 0 || B === g.length - 1 ? "" : g.slice(B + 1).toLowerCase(); +} +function no(Q) { + const A = pG(Q); + if (A === "ply") + return LA.PLY; + if (A === "spz") + return LA.SPZ; + if (A === "splat") + return LA.SPLAT; + if (A === "ksplat") + return LA.KSPLAT; + if (A === "sog") + return LA.PCSOGSZIP; + if (A === "rad") + return LA.RAD; +} +function Ky(Q) { + return Ho(Q) !== void 0; +} +function Ho(Q) { + try { + let A; + if (typeof Q == "string") + A = Q; + else { + const B = Q instanceof ArrayBuffer ? new Uint8Array(Q) : Q; + if (B.length > 65536) + return; + A = new TextDecoder().decode(B); } - function R(a) { - if (I && a.name === "sh") - return C = OQ(a.properties), y(), h; - if (a.name !== "vertex") - return null; - const { packed_position: S, packed_rotation: M, packed_scale: c, packed_color: N } = a.properties; - if (!S || !M || !c || !N) - throw new Error( - "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" - ); - const U = Math.sqrt(2); - return (J, t) => { - const H = B[J >>> 8]; - if (H == null) - throw new Error("Missing PLY chunk"); - const { - min_x: K, - min_y: Y, - min_z: L, - max_x: q, - max_y: n, - max_z: r, - min_scale_x: p, - min_scale_y: m, - min_scale_z: IA, - max_scale_x: X, - max_scale_y: EA, - max_scale_z: j, - min_r: gA, - min_g: W, - min_b: u, - max_r: b, - max_g: T, - max_b: f - } = H, { packed_position: FA, packed_rotation: sA, packed_scale: aA, packed_color: SA } = t, wA = (FA >>> 21 & 2047) / 2047 * (q - K) + K, GA = (FA >>> 11 & 1023) / 1023 * (n - Y) + Y, AI = (FA & 2047) / 2047 * (r - L) + L, TA = ((sA >>> 20 & 1023) / 1023 - 0.5) * U, FI = ((sA >>> 10 & 1023) / 1023 - 0.5) * U, aI = ((sA & 1023) / 1023 - 0.5) * U, _ = Math.sqrt(Math.max(0, 1 - TA * TA - FI * FI - aI * aI)), OA = sA >>> 30, LA = OA === 0 ? TA : OA === 1 ? _ : FI, Cg = OA <= 1 ? FI : OA === 2 ? _ : aI, Hg = OA <= 2 ? aI : _, mA = OA === 0 ? _ : TA, $ = Math.exp( - (aA >>> 21 & 2047) / 2047 * (X - p) + p - ), RI = Math.exp( - (aA >>> 11 & 1023) / 1023 * (EA - m) + m - ), sQ = Math.exp( - (aA & 2047) / 2047 * (j - IA) + IA - ), GQ = (SA >>> 24 & 255) / 255 * ((b ?? 1) - (gA ?? 0)) + (gA ?? 0), yQ = (SA >>> 16 & 255) / 255 * ((T ?? 1) - (W ?? 0)) + (W ?? 0), hQ = (SA >>> 8 & 255) / 255 * ((f ?? 1) - (u ?? 0)) + (u ?? 0), RQ = (SA & 255) / 255; - A( - J, - wA, - GA, - AI, - $, - RI, - sQ, - LA, - Cg, - Hg, - mA, - RQ, - GQ, - yQ, - hQ - ); - }; + const I = JSON.parse(A); + if (!I || typeof I != "object" || Array.isArray(I)) + return; + const g = I.version === 2; + for (const B of ["means", "scales", "quats", "sh0"]) { + if (!I[B] || typeof I[B] != "object" || Array.isArray(I[B])) + return; + if (g) { + if (!I[B].files || (B === "scales" || B === "sh0") && !I[B].codebook || B === "means" && (!I[B].mins || !I[B].maxs)) + return; + } else if (!I[B].shape || !I[B].files || B !== "quats" && (!I[B].mins || !I[B].maxs)) + return; } - const F = (a) => { - if (a.name === "chunk") - return k(a); - if (g) - return R(a); - if (a.name !== "vertex") - return null; - const { - x: S, - y: M, - z: c, - scale_0: N, - scale_1: U, - scale_2: J, - rot_0: t, - rot_1: H, - rot_2: K, - rot_3: Y, - opacity: L, - f_dc_0: q, - f_dc_1: n, - f_dc_2: r, - red: p, - green: m, - blue: IA, - alpha: X - } = a.properties; - if (!S || !M || !c) - throw new Error("Missing PLY properties: x, y, z"); - const EA = N && U && J, j = t && H && K && Y, gA = X != null ? rg[X.type] : 1, W = p != null ? rg[p.type] : 1, u = m != null ? rg[m.type] : 1, b = IA != null ? rg[IA.type] : 1; - return C = OQ(a.properties), y(), (T, f) => { - const FA = EA ? Math.exp(f.scale_0) : jI.defaultPointScale, sA = EA ? Math.exp(f.scale_1) : jI.defaultPointScale, aA = EA ? Math.exp(f.scale_2) : jI.defaultPointScale, SA = j ? f.rot_1 : 0, wA = j ? f.rot_2 : 0, GA = j ? f.rot_3 : 0, AI = j ? f.rot_0 : 1, TA = L != null ? 1 / (1 + Math.exp(-f.opacity)) : X != null ? f.alpha / gA : 1, FI = q != null ? f.f_dc_0 * eg + 0.5 : p != null ? f.red / W : 1, aI = n != null ? f.f_dc_1 * eg + 0.5 : m != null ? f.green / u : 1, _ = r != null ? f.f_dc_2 * eg + 0.5 : IA != null ? f.blue / b : 1; - if (A( - T, - f.x, - f.y, - f.z, - FA, - sA, - aA, - SA, - wA, - GA, - AI, - TA, - FI, - aI, - _ - ), I && w) { - const OA = f.f_rest; - if (w) - for (let LA = 0; LA < E.length; LA++) - w[LA] = OA[E[LA]]; - if (s) - for (let LA = 0; LA < D.length; LA++) - s[LA] = OA[D[LA]]; - if (o) - for (let LA = 0; LA < i.length; LA++) - o[LA] = OA[i[LA]]; - I(T, w, s, o); + return I; + } catch { + return; + } +} +function fG(Q) { + try { + const A = Q instanceof ArrayBuffer ? new Uint8Array(Q) : Q; + let I = null; + const g = Mw(A, { + filter: ({ name: C }) => C.split(/[\\/]/).pop() === "meta.json" ? (I = C, !0) : !1 + }); + if (!I) + return; + const B = Ho(g[I]); + return B ? { name: I, json: B } : void 0; + } catch { + return; + } +} +class uG { + constructor({ maxSplats: A = 1 } = {}) { + this.numSplats = 0, this.maxSplats = iA(A).maxSplats, this.centers = new Float32Array(this.maxSplats * 3), this.scales = new Float32Array(this.maxSplats * 3), this.quaternions = new Float32Array(this.maxSplats * 4), this.opacities = new Float32Array(this.maxSplats), this.colors = new Float32Array(this.maxSplats * 3); + } + pushSplat() { + const A = this.numSplats; + return this.ensureIndex(A), this.numSplats += 1, A; + } + unpushSplat(A) { + if (A === this.numSplats - 1) + this.numSplats -= 1; + else + throw new Error("Cannot unpush splat from non-last position"); + } + ensureCapacity(A) { + if (A > this.maxSplats) { + const I = Math.max(A, this.maxSplats * 2), g = new Float32Array(I * 3), B = new Float32Array(I * 3), C = new Float32Array(I * 4), E = new Float32Array(I), i = new Float32Array(I * 3); + if (g.set(this.centers), B.set(this.scales), C.set(this.quaternions), E.set(this.opacities), i.set(this.colors), this.centers = g, this.scales = B, this.quaternions = C, this.opacities = E, this.colors = i, this.sh1) { + const o = new Float32Array(I * 9); + o.set(this.sh1), this.sh1 = o; + } + if (this.sh2) { + const o = new Float32Array(I * 15); + o.set(this.sh2), this.sh2 = o; + } + if (this.sh3) { + const o = new Float32Array(I * 21); + o.set(this.sh3), this.sh3 = o; + } + this.maxSplats = I; + } + } + ensureIndex(A) { + this.ensureCapacity(A + 1); + } + setCenter(A, I, g, B) { + this.centers[A * 3] = I, this.centers[A * 3 + 1] = g, this.centers[A * 3 + 2] = B; + } + setScale(A, I, g, B) { + this.scales[A * 3] = I, this.scales[A * 3 + 1] = g, this.scales[A * 3 + 2] = B; + } + setQuaternion(A, I, g, B, C) { + this.quaternions[A * 4] = I, this.quaternions[A * 4 + 1] = g, this.quaternions[A * 4 + 2] = B, this.quaternions[A * 4 + 3] = C; + } + setOpacity(A, I) { + this.opacities[A] = I; + } + setColor(A, I, g, B) { + this.colors[A * 3] = I, this.colors[A * 3 + 1] = g, this.colors[A * 3 + 2] = B; + } + setSh1(A, I) { + this.sh1 || (this.sh1 = new Float32Array(this.maxSplats * 9)); + for (let g = 0; g < 9; ++g) + this.sh1[A * 9 + g] = I[g]; + } + setSh2(A, I) { + this.sh2 || (this.sh2 = new Float32Array(this.maxSplats * 15)); + for (let g = 0; g < 15; ++g) + this.sh2[A * 15 + g] = I[g]; + } + setSh3(A, I) { + this.sh3 || (this.sh3 = new Float32Array(this.maxSplats * 21)); + for (let g = 0; g < 21; ++g) + this.sh3[A * 21 + g] = I[g]; + } +} +const rA = class rA { + constructor(A = {}) { + this.maxSplats = 0, this.numSplats = 0, this.extra = {}, this.maxSh = 3, this.isInitialized = !1, this.extArrays = [new Uint32Array(0), new Uint32Array(0)], this.textures = [rA.emptyTexture, rA.emptyTexture], this.extra = {}, this.dyno = new bG({ extSplats: this }), this.dynoNumSh = new _A({ + key: "numSh", + value: 0, + update: () => Math.min(this.getNumSh(), this.maxSh) + }), this.initialized = Promise.resolve(this), this.reinitialize(A); + } + reinitialize(A) { + this.isInitialized = !1, this.extra = {}, this.maxSplats = A.maxSplats ?? 0, this.lod = A.lod, this.nonLod = A.nonLod, A.url || A.fileBytes || A.stream || A.construct ? this.initialized = this.asyncInitialize(A).then(() => (this.isInitialized = !0, this)) : (this.initialize(A), this.isInitialized = !0, this.initialized = Promise.resolve(this)); + } + initialize(A) { + this.extra = A.extra ?? {}, this.lodSplats = A.lodSplats, A.extArrays ? (this.extArrays = A.extArrays, this.maxSplats = Math.floor( + Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4) + ), this.numSplats = A.numSplats ?? this.maxSplats, this.maxSplats = Math.floor(this.maxSplats / b) * b, this.numSplats = Math.min( + this.maxSplats, + A.numSplats ?? Number.POSITIVE_INFINITY + ), this.updateTextures()) : (this.maxSplats = A.maxSplats ?? 0, this.numSplats = 0, this.extArrays = [new Uint32Array(0), new Uint32Array(0)]); + } + async asyncInitialize(A) { + const { + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + construct: o, + lod: D, + nonLod: w, + lodAbove: s + } = A; + this.lod = D, this.nonLod = w; + const t = new Uo(); + if ((g || I || E) && await t.loadInternalAsync({ + extSplats: this, + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + onProgress: A.onProgress, + lodAbove: s + }), o) { + const G = o(this); + G instanceof Promise && await G; + } + } + // Call this when you are finished with the PackedSplats and want to free + // any buffers it holds. + dispose() { + this.textures[0] !== rA.emptyTexture && (this.textures[0].dispose(), this.textures[0].source.data = null, this.textures[0] = rA.emptyTexture), this.textures[1] !== rA.emptyTexture && (this.textures[1].dispose(), this.textures[1].source.data = null, this.textures[1] = rA.emptyTexture), this.extArrays = [new Uint32Array(0), new Uint32Array(0)]; + for (const A in this.extra) { + const I = this.extra[A]; + if (I instanceof q) { + const g = I.value; + g != null && g.isTexture && (g.dispose(), g.source.data = null); + } + } + this.extra = {}, this.disposeLodSplats(); + } + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; + } + hasRgbDir() { + return Math.min(this.getNumSh(), this.maxSh) > 0; + } + getNumSh() { + return this.extra.sh1 ? this.extra.sh2 ? !this.extra.sh3a || !this.extra.sh3b ? 2 : 3 : 1 : 0; + } + setMaxSh(A) { + this.maxSh = A; + } + fetchSplat({ + index: A, + viewOrigin: I + }) { + let g = IC(this.dyno, A); + if (this.hasRgbDir() && I) { + const B = fA(g).outputs.center, C = hg(CI(B, I)), { sh1Texture: E, sh2Texture: i, sh3TextureA: o, sh3TextureB: D } = this.ensureShTextures(); + let { rgb: w } = Ko({ + coord: $Q(A), + viewDir: C, + numSh: this.dynoNumSh, + sh1Texture: E, + sh2Texture: i, + sh3TextureA: o, + sh3TextureB: D + }); + w = xA(w, fA(g).outputs.rgb), g = BI({ gsplat: g, rgb: w }); + } + return g; + } + ensureShTextures() { + if (!this.extra.sh1) + return {}; + let A = this.extra.sh1Texture; + if (!A) { + let C = this.extra.sh1; + const { width: E, height: i, depth: o, maxSplats: D } = iA( + C.length / 4 + ); + if (C.length < D * 4) { + const s = new Uint32Array(D * 4); + s.set(C), this.extra.sh1 = s, C = s; + } + const w = nI( + C, + E, + i, + o, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ); + A = new qA({ + value: w, + key: "sh1" + }), this.extra.sh1Texture = A; + } + if (!this.extra.sh2) + return { sh1Texture: A }; + let I = this.extra.sh2Texture; + if (!I) { + let C = this.extra.sh2; + const { width: E, height: i, depth: o, maxSplats: D } = iA( + C.length / 4 + ); + if (C.length < D * 4) { + const s = new Uint32Array(D * 4); + s.set(C), this.extra.sh2 = s, C = s; + } + const w = nI( + C, + E, + i, + o, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ); + I = new qA({ + value: w, + key: "sh2" + }), this.extra.sh2Texture = I; + } + if (!this.extra.sh3a || !this.extra.sh3b) + return { sh1Texture: A, sh2Texture: I }; + let g = this.extra.sh3TextureA; + if (!g) { + let C = this.extra.sh3a; + const { width: E, height: i, depth: o, maxSplats: D } = iA( + C.length / 4 + ); + if (C.length < D * 4) { + const s = new Uint32Array(D * 4); + s.set(C), this.extra.sh3a = s, C = s; + } + const w = nI( + C, + E, + i, + o, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ); + g = new qA({ + value: w, + key: "sh3" + }), this.extra.sh3TextureA = g; + } + let B = this.extra.sh3TextureB; + if (!B) { + let C = this.extra.sh3b; + const { width: E, height: i, depth: o, maxSplats: D } = iA( + C.length / 4 + ); + if (C.length < D * 4) { + const s = new Uint32Array(D * 4); + s.set(C), this.extra.sh3b = s, C = s; + } + const w = nI( + C, + E, + i, + o, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ); + B = new qA({ + value: w, + key: "sh3b" + }), this.extra.sh3TextureB = B; + } + return { sh1Texture: A, sh2Texture: I, sh3TextureA: g, sh3TextureB: B }; + } + // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small, + // resize exponentially and copy over the original data. + // + // Typically you don't need to call this, because calling this.setSplat(index, ...) + // and this.pushSplat(...) will automatically call ensureSplats() so we have + // enough splats. + ensureSplats(A) { + const I = A <= this.maxSplats ? this.maxSplats : ( + // Grow exponentially to avoid frequent reallocations + Math.max(A, 2 * this.maxSplats) + ), g = this.extArrays[0] ? this.extArrays[0].length / 4 : 0; + if (!this.extArrays[0] || I > g) { + this.maxSplats = iA(I).maxSplats; + const B = new Uint32Array(this.maxSplats * 4), C = new Uint32Array(this.maxSplats * 4); + this.extArrays[0] && (B.set(this.extArrays[0]), C.set(this.extArrays[1])), this.extArrays[0] = B, this.extArrays[1] = C; + } + return this.extArrays; + } + // Unpack the 16-byte Gsplat data at index into the Three.js components + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number 0..1, color: THREE.Color 0..1. + getSplat(A) { + if (A >= this.numSplats) + throw new Error("Invalid index"); + return vg(this.extArrays, A); + } + // Set all ExtSplat components at index with the provided Gsplat attributes + // (can be the same objects returned by getSplat). Ensures there is capacity + // for at least index+1 Gsplats. + setSplat(A, I, g, B, C, E) { + const i = this.ensureSplats(A + 1); + dQ( + i, + A, + I.x, + I.y, + I.z, + g.x, + g.y, + g.z, + B.x, + B.y, + B.z, + B.w, + C, + E.r, + E.g, + E.b + ), this.numSplats = Math.max(this.numSplats, A + 1); + } + // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on + // construction where you just want to iterate and create a collection of Gsplats. + pushSplat(A, I, g, B, C) { + const E = this.ensureSplats(this.numSplats + 1); + dQ( + E, + this.numSplats, + A.x, + A.y, + A.z, + I.x, + I.y, + I.z, + g.x, + g.y, + g.z, + g.w, + B, + C.r, + C.g, + C.b + ), ++this.numSplats; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(A) { + if (this.numSplats) + for (let I = 0; I < this.numSplats; ++I) { + const g = vg(this.extArrays, I); + A( + I, + g.center, + g.scales, + g.quaternion, + g.opacity, + g.color + ); + } + } + // Check if source texture needs to be created/updated + updateTextures() { + if (this.textures[0] !== rA.emptyTexture) { + const { width: A, height: I, depth: g } = this.textures[0].image; + this.maxSplats !== A * I * g && (this.textures[0].dispose(), this.textures[0] = rA.emptyTexture, this.textures[1].dispose(), this.textures[1] = rA.emptyTexture); + } + if (this.textures[0] === rA.emptyTexture) { + const { width: A, height: I, depth: g } = iA(this.maxSplats); + this.textures[0] = nI( + this.extArrays[0], + A, + I, + g, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ), this.textures[1] = nI( + this.extArrays[1], + A, + I, + g, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" + ); + } else this.extArrays[0].buffer !== this.textures[0].image.data.buffer && (this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer), this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer), this.textures[0].needsUpdate = !0, this.textures[1].needsUpdate = !0); + } + extractSplats(A, I) { + const g = iA(A.length).maxSplats, B = new rA({ maxSplats: g }); + for (let C = 0; C < A.length; C++) { + const E = this.getSplat(A[C]); + if (I) { + let i = (A[C] >>> 16) * 0.61803398875; + i = i - Math.floor(i); + const o = Math.max(0, Math.min(1, Math.abs(i * 6 - 3) - 1)), D = Math.max(0, Math.min(1, Math.abs(i * 6 + 1) - 1)), w = Math.max(0, Math.min(1, Math.abs(i * 6 - 1) - 1)); + E.color.r *= o, E.color.g *= D, E.color.b *= w; + } + B.pushSplat( + E.center, + E.scales, + E.quaternion, + E.opacity, + E.color + ); + } + return B; + } + disposeLodSplats() { + this.lodSplats && (this.lodSplats.dispose(), this.lodSplats = void 0); + } + async createLodSplats({ + rgbaArray: A, + quality: I + } = {}) { + const g = typeof this.lod == "number" ? Math.max(1.1, Math.min(2, this.lod)) : I ? 1.75 : 1.5, B = [this.extArrays[0].slice(), this.extArrays[1].slice()], C = A ? (await A.getArray()).slice() : void 0, E = { + sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, + sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, + sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 + }, i = await iQ.withWorker(async (D) => await D.call( + I ? "qualityLodExtSplats" : "tinyLodExtSplats", + { + numSplats: this.numSplats, + extArrays: B, + extra: E, + lodBase: g, + rgba: C + } + )), o = new rA(i); + this.lodSplats && this.lodSplats.dispose(), this.lodSplats = o, this.nonLod = !0, this.lod = I ? "quality" : !0; + } +}; +rA.emptyArray = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(), rA.emptyTexture = nI( + null, + 1, + 1, + 1, + a.RGBAIntegerFormat, + a.UnsignedIntType, + "RGBA32UI" +), rA.emptyUint32x4 = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(); +let sI = rA; +class bG extends q { + constructor({ extSplats: A } = {}) { + super({ + key: "extSplats", + type: _Q, + globals: () => [AB], + value: { + textureArray1: sI.emptyTexture, + textureArray2: sI.emptyTexture, + numSplats: 0 + }, + update: (I) => { + var g, B, C; + return I.textureArray1 = ((g = this.extSplats) == null ? void 0 : g.textures[0]) ?? sI.emptyTexture, I.textureArray2 = ((B = this.extSplats) == null ? void 0 : B.textures[1]) ?? sI.emptyTexture, I.numSplats = ((C = this.extSplats) == null ? void 0 : C.numSplats) ?? 0, I; + } + }), this.extSplats = A; + } +} +const PG = wA(` + vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packedData.x); + vec3 sh1_1 = decodeExtRgb(packedData.y); + vec3 sh1_2 = decodeExtRgb(packedData.z); + + return sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + } +`), mG = wA(` + vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) { + vec3 sh1_0 = decodeExtRgb(packed1.x); + vec3 sh1_1 = decodeExtRgb(packed1.y); + vec3 sh1_2 = decodeExtRgb(packed1.z); + + vec3 sh2_0 = decodeExtRgb(packed1.w); + vec3 sh2_1 = decodeExtRgb(packed2.x); + vec3 sh2_2 = decodeExtRgb(packed2.y); + vec3 sh2_3 = decodeExtRgb(packed2.z); + vec3 sh2_4 = decodeExtRgb(packed2.w); + + vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y) + + sh1_1 * (0.4886025 * viewDir.z) + + sh1_2 * (-0.4886025 * viewDir.x); + + vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) + + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) + + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) + + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) + + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); + + return sh1Rgb + sh2Rgb; + } +`), TG = wA(` + vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) { + vec3 sh3_0 = decodeExtRgb(packedA.x); + vec3 sh3_1 = decodeExtRgb(packedA.y); + vec3 sh3_2 = decodeExtRgb(packedA.z); + vec3 sh3_3 = decodeExtRgb(packedA.w); + vec3 sh3_4 = decodeExtRgb(packedB.x); + vec3 sh3_5 = decodeExtRgb(packedB.y); + vec3 sh3_6 = decodeExtRgb(packedB.z); + + float xx = viewDir.x * viewDir.x; + float yy = viewDir.y * viewDir.y; + float zz = viewDir.z * viewDir.z; + float xy = viewDir.x * viewDir.y; + float yz = viewDir.y * viewDir.z; + float zx = viewDir.z * viewDir.x; + + return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) + + sh3_1 * (2.8906114 * xy * viewDir.z) + + + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) + + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) + + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) + + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); + } +`), OG = wA(` +precision highp float; +precision highp int; + +// Blazing fast HSL to RGB conversion +vec3 hsl2rgb(vec3 c) { + vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); + return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0)); +} + +vec4 getDeterministicColor(uint id) { + float hue = fract(float(id) * 0.618033988749895); + vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6)); + return vec4(rgb, 1.0); +} +`); +function Ko({ + coord: Q, + viewDir: A, + numSh: I, + sh1Texture: g, + sh2Texture: B, + sh3TextureA: C, + sh3TextureB: E +}) { + return new l({ + inTypes: { + coord: "ivec3", + viewDir: "vec3", + numSh: "int", + sh1Texture: "usampler2DArray", + sh2Texture: "usampler2DArray", + sh3TextureA: "usampler2DArray", + sh3TextureB: "usampler2DArray" + }, + outTypes: { rgb: "vec3" }, + inputs: { + coord: Q, + viewDir: A, + numSh: I, + sh1Texture: g, + sh2Texture: B, + sh3TextureA: C, + sh3TextureB: E + }, + globals: () => [ + PG, + mG, + TG + ], + statements: ({ inputs: i, outputs: o }) => { + const D = ["vec3 rgb = vec3(0.0);"]; + return i.sh1Texture && (i.sh2Texture ? (D.push( + ...z(` + if (${i.numSh} == 1) { + rgb = evaluateExtSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0), ${i.viewDir}); + } else if (${i.numSh} >= 2) { + rgb = evaluateExtSH12(texelFetch(${i.sh1Texture}, ${i.coord}, 0), texelFetch(${i.sh2Texture}, ${i.coord}, 0), ${i.viewDir}); + `) + ), i.sh3TextureA && i.sh3TextureB && D.push( + ...z(` + if (${i.numSh} >= 3) { + rgb += evaluateExtSH3(texelFetch(${i.sh3TextureA}, ${i.coord}, 0), texelFetch(${i.sh3TextureB}, ${i.coord}, 0), ${i.viewDir}); + } + `) + ), D.push("}")) : D.push( + ...z(` + if (${i.numSh} >= 1) { + rgb = evaluateExtSH1(texelFetch(${i.sh1Texture}, ${i.coord}, 0), ${i.viewDir}); + } + `) + )), D.push(`${o.rgb} = rgb;`), D; + } + }).outputs; +} +function nI(Q, A, I, g, B, C, E) { + const i = new a.DataArrayTexture( + Q, + A, + I, + g + ); + return i.format = B, i.type = C, i.internalFormat = E, i.needsUpdate = !0, i; +} +const YA = class YA { + constructor(A = {}) { + if (this.capacity = 0, this.count = 0, this.array = null, this.readback = null, this.source = null, this.needsUpdate = !0, this.dyno = new q({ + key: "rgbaArray", + type: cB, + globals: () => [ro], + value: { + texture: YA.getEmpty(), + count: 0 + }, + update: (I) => (I.texture = this.getTexture(), I.count = this.count, I) + }), A.array) { + this.array = A.array; + const I = Math.floor(this.array.length / 4); + this.capacity = Math.ceil(I / b) * b, this.capacity > I && (this.array = new Uint8Array(this.capacity * 4), this.array.set(A.array)), this.count = Math.min( + I, + A.count ?? Number.POSITIVE_INFINITY + ); + } else + this.capacity = A.capacity ?? 0, this.count = 0; + } + // Free up resources + dispose() { + this.readback && (this.readback.dispose(), this.readback = null), this.source && (this.source.dispose(), this.source = null); + } + // Ensure that our array is large enough to hold capacity RGBA8 values. + ensureCapacity(A) { + var I; + if (!this.array || A > (((I = this.array) == null ? void 0 : I.length) ?? 0) / 4) { + this.capacity = iA(A).maxSplats; + const g = new Uint8Array(this.capacity * 4); + this.array && g.set(this.array), this.array = g; + } + return this.array; + } + // Get the THREE.DataArrayTexture from either the readback or the source. + getTexture() { + var I; + let A = (I = this.readback) == null ? void 0 : I.getTexture(); + return (this.source || this.array) && (A = this.maybeUpdateSource()), A ?? YA.getEmpty(); + } + // Create or get a THREE.DataArrayTexture from the data array. + maybeUpdateSource() { + if (!this.array) + throw new Error("No array"); + if (this.needsUpdate || !this.source) { + if (this.needsUpdate = !1, this.source) { + const { width: A, height: I, depth: g } = this.source.image; + this.capacity !== A * I * g && (this.source.dispose(), this.source = null); + } + if (this.source) + this.array.buffer !== this.source.image.data.buffer && (this.source.image.data = new Uint8Array(this.array.buffer)); + else { + const { width: A, height: I, depth: g } = iA(this.capacity); + this.source = new a.DataArrayTexture( + this.array, + A, + I, + g + ), this.source.format = a.RGBAFormat, this.source.type = a.UnsignedByteType, this.source.internalFormat = "RGBA8", this.source.needsUpdate = !0; + } + this.source.needsUpdate = !0; + } + return this.source; + } + // Generate the RGBA8 values from a Rgba8Readback dyno program. + render({ + reader: A, + count: I, + renderer: g + }) { + this.readback || (this.readback = new cg({ renderer: g })), this.readback.render({ reader: A, count: I, renderer: g }), this.capacity = this.readback.capacity, this.count = this.readback.count; + } + // Extract the RGBA8 values from a PackedSplats collection. + fromPackedSplats({ + packedSplats: A, + base: I, + count: g, + renderer: B + }) { + const { dynoSplats: C, dynoBase: E, dynoCount: i, reader: o } = YA.makeDynos(); + return C.packedSplats = A, E.value = I, i.value = g, this.render({ reader: o, count: g, renderer: B }), this; + } + // Read back the RGBA8 values from the readback buffer. + async read() { + if (!this.readback) + throw new Error("No readback"); + return (!this.array || this.array.length < this.count * 4) && (this.array = new Uint8Array(this.capacity * 4)), (await this.readback.readback({ readback: this.array })).subarray(0, this.count * 4); + } + async getArray() { + if (this.readback) + return await this.read(); + if (this.array) + return this.array; + throw new Error("No array"); + } + // Can be used where you need an uninitialized THREE.DataArrayTexture like + // a uniform you will update with the result of this.getTexture() later. + static getEmpty() { + if (!YA.emptySource) { + const A = new Uint8Array(4); + YA.emptySource = new a.DataArrayTexture(A, 1, 1, 1), YA.emptySource.format = a.RGBAFormat, YA.emptySource.type = a.UnsignedByteType, YA.emptySource.internalFormat = "RGBA8", YA.emptySource.needsUpdate = !0; + } + return YA.emptySource; + } + // Create a dyno program that can extract RGBA8 values from a PackedSplats + static makeDynos() { + if (!YA.dynos) { + const A = new Mo(), I = new _A({ value: 0 }), g = new _A({ value: 0 }), B = nA( + { index: "int" }, + { rgba8: "vec4" }, + ({ index: C }) => { + if (!C) + throw new Error("index is undefined"); + C = xA(C, I); + const E = AC( + A, + C, + I, + g + ); + return { rgba8: fA(E).outputs.rgba }; + } + ); + YA.dynos = { dynoSplats: A, dynoBase: I, dynoCount: g, reader: B }; + } + return YA.dynos; + } +}; +YA.emptySource = null, YA.dynos = null; +let rB = YA; +const cB = { type: "RgbaArray" }, ro = wA(` + struct RgbaArray { + sampler2DArray texture; + int count; + }; +`); +function ry(Q, A) { + return new l({ + inTypes: { rgba: cB, index: "int" }, + outTypes: { rgba: "vec4" }, + inputs: { rgba: Q, index: A }, + globals: () => [ro], + statements: ({ inputs: g, outputs: B }) => z(` + if ((${g.index} >= 0) && (${g.index} < ${g.rgba}.count)) { + ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(${g.index}), 0); + } else { + ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0); } - }; - }; - this.parseData(F); + `) + }).outputs.rgba; +} +const bQ = 256, PQ = 256, Ig = bQ * PQ; +class ag { + constructor(A) { + var I; + if (this.pager = A.pager, this.rootUrl = A.rootUrl ?? "", this.requestHeader = A.requestHeader, this.withCredentials = A.withCredentials, this.numSh = 0, this.maxSh = ((I = A.pager) == null ? void 0 : I.maxSh) ?? 3, this.numSplats = 0, this.dynoNumSplats = new _A({ value: 0 }), this.dynoIndices = new Jg({ + value: MI.emptyIndicesTexture + }), this.rgbMinMaxLnScaleMinMax = new zI({ + value: new a.Vector4(0, 1, uA, bA) + }), this.lodOpacity = new Mg({ + value: !1 + }), this.dynoNumSh = new _A({ value: 0 }), this.shMax = new UI({ value: new a.Vector3() }), this.fileBytes = A.fileBytes, this.fileType = A.fileType, !this.fileType && this.fileBytes && (this.fileType = Lo(this.fileBytes)), !this.fileType && this.rootUrl && (this.fileType = no(this.rootUrl)), !this.fileType) + throw new Error("Unable to determine file type"); + this.fileType === LA.RAD && (this.radMetaPromise = this.getRadMeta()); } - // Inject RGBA values into original PLY file, which can be used to modify - // the color/opacity of the Gsplats and write out the modified PLY file. - injectRgba(A) { - let I = 0; - const g = this.data; - if (g == null) - throw new Error("No parsed data"); - if (A.length !== this.numSplats * 4) - throw new Error("Invalid RGBA array length"); - for (const B in this.elements) { - const C = this.elements[B], { count: E, properties: D } = C, i = []; - let w = 0; - const s = B === "vertex"; - if (s) { - for (const o of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) - if (!D[o] || D[o].type !== "float") - throw new Error(`Can't injectRgba due to property: ${o}`); + dispose() { + this.dynoIndices.value !== MI.emptyIndicesTexture && (this.dynoIndices.value.dispose(), this.dynoIndices.value = MI.emptyIndicesTexture); + } + setMaxSh(A) { + this.maxSh = A; + } + getRadMeta() { + return this.radMetaPromise ? this.radMetaPromise : (this.radMetaPromise = (async () => { + if (await KG, this.fileBytes) { + const A = JB(this.fileBytes.slice(0, 1048576)); + if (A) + return A; + throw new Error("Failed to decode RAD header"); + } + if (!this.rootUrl) + throw new Error("No url or fileBytes provided"); + for (const A of [65536, 256 * 1024, 1024 * 1024]) { + const I = await JQ({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset: 0, + bytes: A + }), g = JB(I); + if (g) + return g; + } + throw new Error("Failed to decode RAD header"); + })().then((A) => A), this.radMetaPromise.catch((A) => { + console.error(A); + }), this.radMetaPromise); + } + chunkUrl(A) { + return this.rootUrl.replace(/-lod-0\./, `-lod-${A}.`); + } + async fetchDecodeChunk(A) { + let I; + if (this.fileType === LA.RAD) { + const { meta: g, chunksStart: B } = await this.getRadMeta(); + if (A < 0 || A >= g.chunks.length) + throw new Error( + `Chunk index out of range: ${A} (max: ${g.chunks.length - 1})` + ); + let { offset: C, bytes: E, filename: i } = g.chunks[A]; + if (i) { + if (this.fileBytes) + throw new Error("Chunked RAD file not supported with fileBytes"); + const o = new URL( + this.rootUrl, + window.location.href + ).toString(), D = new URL(i, o).toString(); + I = await JQ({ + url: D, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials + }); + } else if (C += B, this.fileBytes) { + if (C < 0 || C + E > this.fileBytes.length) + throw new Error( + `Invalid chunk offset or bytes: ${C} + ${E} > ${this.fileBytes.length}` + ); + I = this.fileBytes.slice(C, C + E); + } else if (this.rootUrl) + I = await JQ({ + url: this.rootUrl, + requestHeader: this.requestHeader, + withCredentials: this.withCredentials, + offset: C, + bytes: E + }); + else + throw new Error("No url or fileBytes provided"); + } else if (!this.fileBytes) if (this.rootUrl) { + const g = this.chunkUrl(A), B = new Request(g, { + headers: this.requestHeader ? new Headers(this.requestHeader) : void 0, + credentials: this.withCredentials ? "include" : "same-origin" + }), C = await fetch(B); + if (!C.ok || !C.body) + throw new Error( + `Failed to fetch "${g}": ${C.status} ${C.statusText}` + ); + I = new Uint8Array(await C.arrayBuffer()); + } else + throw new Error("No url or fileBytes provided"); + return await iQ.withWorker(async (g) => { + var i, o, D, w, s; + if (!this.pager) + throw new Error("PagedSplats.pager not set"); + if (!this.pager.extSplats) { + const G = (await g.call("loadPackedSplats", { + fileBytes: I, + pathName: this.chunkUrl(A), + sh1Codes: (i = this.sh1Codes) == null ? void 0 : i.slice(), + sh2Codes: (o = this.sh2Codes) == null ? void 0 : o.slice(), + sh3Codes: (D = this.sh3Codes) == null ? void 0 : D.slice() + })).lodSplats; + return this.splatEncoding || (this.splatEncoding = G.splatEncoding, this.numSh = G.extra.sh3 ? 3 : G.extra.sh2 ? 2 : G.extra.sh1 ? 1 : 0, this.rgbMinMaxLnScaleMinMax.value.set( + this.splatEncoding.rgbMin ?? 0, + this.splatEncoding.rgbMax ?? 1, + this.splatEncoding.lnScaleMin ?? uA, + this.splatEncoding.lnScaleMax ?? bA + ), this.lodOpacity.value = this.splatEncoding.lodOpacity ?? !1, this.shMax.value.set( + this.splatEncoding.sh1Max ?? 1, + this.splatEncoding.sh2Max ?? 1, + this.splatEncoding.sh3Max ?? 1 + )), this.sh1Codes = G.extra.sh1Codes ?? this.sh1Codes, this.sh2Codes = G.extra.sh2Codes ?? this.sh2Codes, this.sh3Codes = G.extra.sh3Codes ?? this.sh3Codes, G; + } + const B = this.sh3Codes, E = (await g.call("loadExtSplats", { + fileBytes: I, + pathName: this.chunkUrl(A), + sh1Codes: (w = this.sh1Codes) == null ? void 0 : w.slice(), + sh2Codes: (s = this.sh2Codes) == null ? void 0 : s.slice(), + sh3Codes: B ? [B[0].slice(), B[1].slice()] : void 0 + })).lodSplats; + return this.splatEncoding || (this.splatEncoding = IQ, this.numSh = E.extra.sh3a && E.extra.sh3b ? 3 : E.extra.sh2 ? 2 : E.extra.sh1 ? 1 : 0), this.sh1Codes = E.extra.sh1Codes ?? this.sh1Codes, this.sh2Codes = E.extra.sh2Codes ?? this.sh2Codes, this.sh3Codes = E.extra.sh3Codes ?? this.sh3Codes, E; + }); + } + update(A, I) { + if (!this.pager) + throw new Error("PagedSplats.pager not set"); + const g = this.pager.renderer; + this.numSplats = A, this.dynoNumSplats.value = this.numSplats; + const B = Math.ceil(A / 16384); + let C = this.dynoIndices.value === MI.emptyIndicesTexture ? void 0 : this.dynoIndices.value; + if (C && B > C.image.height && (C.dispose(), C = void 0), !C) + C = new a.DataTexture( + I, + 4096, + B, + a.RGBAIntegerFormat, + a.UnsignedIntType + ), C.internalFormat = "RGBA32UI", C.needsUpdate = !0, g.initTexture(C), this.dynoIndices.value = C; + else { + const E = C.image.data; + E.set(I.subarray(0, A)), sB( + g, + C, + 4096, + B, + E + ); + } + } + prepareFetchSplat() { + } + getNumSplats() { + return this.numSplats; + } + hasRgbDir() { + return this.pager ? Math.min(this.numSh, this.pager.maxSh) > 0 : !1; + } + getNumSh() { + return this.numSh; + } + fetchSplat({ + index: A, + viewOrigin: I + }) { + if (!this.pager) + throw new Error("PagedSplats.pager not set"); + const g = this.pager.readIndex.apply({ + index: A, + numSplats: this.dynoNumSplats, + indices: this.dynoIndices + }).index; + return this.pager.extSplats ? this.hasRgbDir() && I ? (this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh), this.pager.readSplatExtDir.apply({ + index: g, + viewOrigin: I, + numSh: this.dynoNumSh + }).gsplat) : this.pager.readSplatExt.apply({ index: g }).gsplat : this.hasRgbDir() && I ? (this.dynoNumSh.value = Math.min( + this.numSh, + this.maxSh, + this.pager.maxSh + ), this.pager.readSplatDir.apply({ + index: g, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity, + viewOrigin: I, + numSh: this.dynoNumSh, + shMax: this.shMax + }).gsplat) : this.pager.readSplat.apply({ + index: g, + rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax, + lodOpacity: this.lodOpacity + }).gsplat; + } + // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat + // and invoke the callback function with the Gsplat attributes. + forEachSplat(A) { + if (!this.pager || !this.numSplats) + return; + const I = this.pager.extSplats, g = this.dynoIndices.value.image.data, B = this.pager.packedTexture.value.image.data, C = this.pager.extTexture.value.image.data, E = [ + B, + C + ]; + for (let i = 0; i < this.numSplats; ++i) { + const o = g[i], D = I ? vg(E, o) : Xg(B, o, this.splatEncoding); + A( + i, + D.center, + D.scales, + D.quaternion, + D.opacity, + D.color + ); + } + } +} +const j = class j { + constructor(A) { + this.fetchPause = 0, this.splatsChunkToPage = /* @__PURE__ */ new Map(), this.pageToSplatsChunk = [], this.renderer = A.renderer, this.extSplats = A.extSplats ?? !1, this.pageSplats = Ig, this.maxSplats = A.maxSplats ?? 16777216, this.maxPages = Math.ceil(this.maxSplats / Ig), this.maxSplats = this.maxPages * Ig, this.maxSh = A.maxSh ?? 3, this.curSh = 0, this.autoDrive = A.autoDrive ?? !0, this.numFetchers = A.numFetchers ?? 3, this.splatsChunkToPage = /* @__PURE__ */ new Map(), this.pageToSplatsChunk = new Array(this.maxPages), this.pageFreelist = Array.from({ length: this.maxPages }, (g, B) => B), this.pageLru = /* @__PURE__ */ new Set(), this.freeablePages = [], this.newUploads = [], this.readyUploads = [], this.lodTreeUpdates = [], this.fetchers = [], this.fetched = [], this.fetchPriority = [], this.packedTexture = new qA({ + value: this.newUint32ArrayTexture(4) + }), this.extTexture = new qA({ + value: this.extSplats ? this.newUint32ArrayTexture(4) : j.emptyExtTexture + }); + const I = this.extSplats ? j.emptyExtShTextures : j.emptyShTextures; + this.shTextures = I.map( + (g) => new qA({ + value: g + }) + ), this.highlightLabel = new _A({ key: "highlightLabel", value: -1 }), this.lookUpTexture = new Jg({ + value: new a.DataTexture( + new Uint32Array(256), + 256, + 1, + a.RedIntegerFormat, + a.UnsignedIntType + ) + }), this.lookUpTexture.value.image.data.fill(1), this.lookUpTexture.value.needsUpdate = !0, this.renderer.initTexture(this.lookUpTexture.value), this.labelTexture = new qA({ + value: j.emptyLabelTexture + }), this.instanceTexture = new qA({ + value: j.emptyLabelTexture + }), this.labelLookupModifier = new l({ + inTypes: { + gsplat: V, + lookup: "usampler2D", + label: "usampler2DArray", + instance: "usampler2DArray", + highlightLabel: "int" + }, + outTypes: { gsplat: V }, + inputs: { + lookup: this.lookUpTexture, + label: this.labelTexture, + instance: this.instanceTexture, + highlightLabel: this.highlightLabel + }, + globals: () => [ + OG, + NA + ], + statements: ({ inputs: g, outputs: B }) => z(` + Gsplat g = ${g.gsplat}; + + ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16); + uvec4 labelTexel = texelFetch(${g.label}, splatCoord, 0); + uint visible = texelFetch(${g.lookup}, ivec2(labelTexel.r, 0), 0).r; + if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; } + + if (${g.highlightLabel} >= 0 && labelTexel.r == uint(${g.highlightLabel})) { + uvec4 instanceTexel = texelFetch(${g.instance}, splatCoord, 0); + vec4 splatColour = getDeterministicColor(instanceTexel.r); + g.rgba = mix(g.rgba, splatColour, 0.6); + } + + ${B.gsplat} = g; + `) + }), this.readIndex = nA( + { index: "int", numSplats: "int", indices: "usampler2D" }, + { index: "int" }, + ({ index: g, numSplats: B, indices: C }) => new l({ + inTypes: { + index: "int", + numSplats: "int", + indices: "usampler2D" + }, + outTypes: { index: "int" }, + inputs: { + index: g, + numSplats: B, + indices: C + }, + statements: ({ inputs: E, outputs: i }) => z(` + if (${E.index} >= ${E.numSplats}) { + return; + } + + ivec2 indexCoord = ivec2((${E.index} >> 2) & 4095, ${E.index} >> 14); + uint index = texelFetch(${E.indices}, indexCoord, 0)[${E.index} & 3]; + ${i.index} = int(index); + `) + }).outputs + ), this.readSplat = nA( + { index: "int", rgbMinMaxLnScaleMinMax: "vec4", lodOpacity: "bool" }, + { gsplat: V }, + ({ index: g, rgbMinMaxLnScaleMinMax: B, lodOpacity: C }) => new l({ + inTypes: { + index: "int", + packedTexture: "usampler2DArray", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool" + }, + outTypes: { gsplat: V }, + inputs: { + index: g, + packedTexture: this.packedTexture, + rgbMinMaxLnScaleMinMax: B, + lodOpacity: C + }, + globals: () => [NA], + statements: ({ inputs: E, outputs: i }) => z(` + int index = ${E.index}; + ivec3 splatCoord = pagedSplatTexCoord(index); + uvec4 packedData = texelFetch(${E.packedTexture}, splatCoord, 0); + + unpackSplatEncoding(packedData, ${i.gsplat}.center, ${i.gsplat}.scales, ${i.gsplat}.quaternion, ${i.gsplat}.rgba, ${E.rgbMinMaxLnScaleMinMax}); + if ((${i.gsplat}.rgba.a == 0.0) || all(equal(${i.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${i.gsplat}.index = index; + ${i.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + if (${E.lodOpacity}) { + ${i.gsplat}.rgba.a *= 2.0; + } + `) + }).outputs + ), this.readSplatDir = nA( + { + index: "int", + rgbMinMaxLnScaleMinMax: "vec4", + lodOpacity: "bool", + viewOrigin: "vec3", + numSh: "int", + shMax: "vec3" + }, + { gsplat: V }, + ({ + index: g, + rgbMinMaxLnScaleMinMax: B, + lodOpacity: C, + viewOrigin: E, + numSh: i, + shMax: o + }) => { + if (!g || !B || !C || !E || !i || !o) + throw new Error("index and viewOrigin are required"); + let D = this.readSplat.apply({ + index: g, + rgbMinMaxLnScaleMinMax: B, + lodOpacity: C + }).gsplat; + const w = fA(D).outputs.center, s = hg(CI(w, E)); + let t = Jo({ + coord: nQ(g), + viewDir: s, + numSh: i, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3Texture: this.shTextures[2], + shMax: o + }).rgb; + return t = xA(t, fA(D).outputs.rgb), D = BI({ gsplat: D, rgb: t }), { gsplat: D }; } - for (const [o, y] of Object.entries(D)) - if (y.isList) - i.push(() => { - const h = WI[y.countType]( - g, - I, - this.littleEndian - ); - I += BI[y.countType], I += h * BI[y.type]; - }); - else { - if (s) - if (o === "f_dc_0" || o === "f_dc_1" || o === "f_dc_2") { - const h = Number.parseInt( - o.slice(5) - ); - i.push(() => { - const k = (A[w + h] / 255 - 0.5) / eg; - PB[y.type]( - g, - I, - this.littleEndian, - k - ); - }); - } else o === "opacity" && i.push(() => { - const h = Math.max( - -100, - Math.min( - 100, - -Math.log(1 / (A[w + 3] / 255) - 1) - ) - ); - PB[y.type]( - g, - I, - this.littleEndian, - h - ); - }); - i.push(() => { - I += BI[y.type]; - }); - } - for (let o = 0; o < E; o++) { - for (const y of i) - y(); - s && (w += 4); + ), this.readSplatExt = nA( + { index: "int" }, + { gsplat: V }, + ({ index: g }) => new l({ + inTypes: { + index: "int", + extTexture1: "usampler2DArray", + extTexture2: "usampler2DArray" + }, + outTypes: { gsplat: V }, + inputs: { + index: g, + extTexture1: this.packedTexture, + extTexture2: this.extTexture + }, + globals: () => [NA], + statements: ({ inputs: B, outputs: C }) => z(` + int index = ${B.index}; + ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16); + uvec4 ext1 = texelFetch(${B.extTexture1}, splatCoord, 0); + float alpha = unpackSplatExtAlpha(ext1); + if (alpha == 0.0) { + return; + } + + uvec4 ext2 = texelFetch(${B.extTexture2}, splatCoord, 0); + unpackSplatExt(ext1, ext2, ${C.gsplat}.center, ${C.gsplat}.scales, ${C.gsplat}.quaternion, ${C.gsplat}.rgba); + if (all(equal(${C.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) { + return; + } + + ${C.gsplat}.index = index; + ${C.gsplat}.flags = GSPLAT_FLAG_ACTIVE; + `) + }).outputs + ), this.readSplatExtDir = nA( + { + index: "int", + viewOrigin: "vec3", + numSh: "int" + }, + { gsplat: V }, + ({ index: g, viewOrigin: B, numSh: C }) => { + if (!g || !B || !C) + throw new Error("index and viewOrigin are required"); + let E = this.readSplatExt.apply({ index: g }).gsplat; + const i = fA(E).outputs.center, o = hg(CI(i, B)); + let D = Ko({ + coord: nQ(g), + viewDir: o, + numSh: C, + sh1Texture: this.shTextures[0], + sh2Texture: this.shTextures[1], + sh3TextureA: this.shTextures[2], + sh3TextureB: this.shTextures[3] + }).rgb; + return D = xA(D, fA(E).outputs.rgb), E = BI({ gsplat: E, rgb: D }), { gsplat: E }; } - } + ); } -}; -jI.defaultPointScale = 1e-3; -let vg = jI; -const eg = 0.28209479177387814, WI = { - char: (Q, A, I) => Q.getInt8(A), - uchar: (Q, A, I) => Q.getUint8(A), - short: (Q, A, I) => Q.getInt16(A, I), - ushort: (Q, A, I) => Q.getUint16(A, I), - int: (Q, A, I) => Q.getInt32(A, I), - uint: (Q, A, I) => Q.getUint32(A, I), - float: (Q, A, I) => Q.getFloat32(A, I), - double: (Q, A, I) => Q.getFloat64(A, I) -}, PB = { - char: (Q, A, I, g) => { - Q.setInt8(A, g); - }, - uchar: (Q, A, I, g) => { - Q.setUint8(A, g); - }, - short: (Q, A, I, g) => { - Q.setInt16(A, g, I); - }, - ushort: (Q, A, I, g) => { - Q.setUint16(A, g, I); - }, - int: (Q, A, I, g) => { - Q.setInt32(A, g, I); - }, - uint: (Q, A, I, g) => { - Q.setUint32(A, g, I); - }, - float: (Q, A, I, g) => { - Q.setFloat32(A, g, I); - }, - double: (Q, A, I, g) => { - Q.setFloat64(A, g, I); + dispose() { + this.autoDrive = !1, this.numFetchers = 0, this.packedTexture.value.dispose(), this.packedTexture.value.source.data = null, this.extTexture.value !== j.emptyExtTexture && (this.extTexture.value.dispose(), this.extTexture.value.source.data = null), this.labelTexture.value !== j.emptyLabelTexture && (this.labelTexture.value.dispose(), this.labelTexture.value.source.data = null), this.instanceTexture.value !== j.emptyLabelTexture && (this.instanceTexture.value.dispose(), this.instanceTexture.value.source.data = null); + const A = this.extSplats ? j.emptyExtShTextures : j.emptyShTextures; + for (let I = 0; I < A.length; I++) { + const g = this.shTextures[I].value; + g !== A[I] && (g.dispose(), g.source.data = null); + } + } + updateLabelLookup(A) { + const I = this.lookUpTexture.value.image.data; + I.fill(0), A.forEach((g) => { + g >= 0 && g < 256 && (I[g] = 1); + }), this.lookUpTexture.value.needsUpdate = !0; + } + newUintArrayTex(A, I, g, B, C, E, i) { + const o = new a.DataArrayTexture(A, I, g, B); + return o.format = C, o.type = E, o.internalFormat = i, o.needsUpdate = !0, this.renderer.initTexture(o), o; + } + ensureLabelTextures() { + this.labelTexture.value === j.emptyLabelTexture && (this.labelTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + a.RedIntegerFormat, + a.UnsignedIntType, + "R32UI" + )); } -}, BI = { - char: 1, - uchar: 1, - short: 2, - ushort: 2, - int: 4, - uint: 4, - float: 4, - double: 8 -}, rg = { - char: 127, - uchar: 255, - short: 32767, - ushort: 65535, - int: 2147483647, - uint: 4294967295, - float: 1, - double: 1 -}, Vh = { - 0: 0, - 9: 1, - 24: 2, - 45: 3 -}, Xh = { - 0: 0, - 1: 9, - 2: 24, - 3: 45 -}, SB = /^f_rest_([0-9]{1,2})$/; -function Wh(Q) { - const A = {}; - for (const [I, g] of Object.entries(Q)) - SB.test(I) ? A.f_rest = new Array(OQ(Q)) : A[I] = g.isList ? [] : 0; - return A; -} -function jh(Q, A) { - return _h(Q) ? $h(Q, A) : AR(Q, A); -} -const vh = (() => { - try { - new Function("return 42;"); - } catch { - return !1; + updateLabelHighlight(A) { + this.highlightLabel.value = A; } - return !0; -})(), zh = /^[a-zA-Z0-9_]+$/; -function _h(Q) { - if (!vh) - return !1; - for (const [A, I] of Object.entries(Q)) - if (!zh.test(A) || I.isList && !bB.includes(I.countType) || !bB.includes(I.type)) - return !1; - return !0; -} -function $h(Q, A) { - const I = ["let list;"]; - for (const [B, C] of Object.entries(Q)) { - const E = B.match(SB); - if (E) { - const D = +E[1]; - I.push( - /*js*/ - ` - item.f_rest[${D}] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${BI[C.type]}; - ` - ); - } else C.isList ? I.push( - /*js*/ - ` - list = item['${B}']; - list.length = PARSE_FIELD['${C.countType}'](data, offset, ${A}); - offset += ${BI[C.countType]}; - for (let i = 0; i < list.length; i++) { - list[i] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${BI[C.type]}; - } - ` - ) : I.push( - /*js*/ - ` - item['${B}'] = PARSE_FIELD['${C.type}'](data, offset, ${A}); - offset += ${BI[C.type]}; - ` - ); + ensureInstanceTextures() { + this.instanceTexture.value === j.emptyLabelTexture && (this.instanceTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + a.RedIntegerFormat, + a.UnsignedIntType, + "R32UI" + )); } - I.push("return offset;"); - const g = new Function( - "data", - "offset", - "item", - "PARSE_FIELD", - I.join(` -`) - ); - return (B, C, E) => g(B, C, E, WI); -} -function AR(Q, A) { - const I = []; - for (const [g, B] of Object.entries(Q)) { - const C = g.match(SB); - if (C) { - const E = +C[1]; - I.push( - (D, i, w) => (w.f_rest[E] = WI[B.type]( - D, - i, - A - ), i + BI[B.type]) - ); - } else B.isList ? I.push( - (E, D, i) => { - const w = i[g]; - w.length = WI[B.countType]( - E, - D, - A - ); - let s = D + BI[B.countType]; - for (let o = 0; o < w.length; o++) - w[o] = WI[B.type]( - E, - s, - A - ), s += BI[B.type]; - return s; + ensureShTextures(A) { + this.curSh = Math.max(this.curSh, A); + const I = this.extSplats ? j.emptyExtShTextures : j.emptyShTextures; + for (let g = 0; g < this.curSh; g++) + if (this.shTextures[g].value === I[g]) { + const B = this.shTextures[g].value === j.emptyUint32x2 ? 2 : 4; + this.shTextures[g].value = this.newUint32ArrayTexture(B); } - ) : I.push( - (E, D, i) => (i[g] = WI[B.type]( - E, - D, - A - ), D + BI[B.type]) - ); } - return (g, B, C) => { - let E = B; - for (let D = 0; D < I.length; D++) - E = I[D](g, E, C); - return E; - }; -} -function OQ(Q) { - let A = 0; - for (; Q[`f_rest_${A}`]; ) - A += 1; - const I = Vh[A]; - if (I == null) - throw new Error(`Unsupported number of SH coefficients: ${A}`); - return I; -} -class fw extends go { - constructor(A) { - super(A), this.fileLoader = new Qo(A); + allocatePage() { + return this.pageFreelist.shift(); } - load(A, I, g, B) { - return this.loadInternal({ - url: A, - onLoad: I, - onProgress: g, - onError: B - }); + getSplatsChunk(A, I) { + const g = this.splatsChunkToPage.get(A); + if (g) + return g[I]; } - async loadAsync(A, I) { - return new Promise((g, B) => { - this.load( + insertSplatsChunkPage(A, I, g, B) { + this.splatsChunkToPage.has(A) || this.splatsChunkToPage.set(A, []); + const C = this.splatsChunkToPage.get(A); + if (!C) + throw new Error("impossible"); + I >= C.length && (C.length = I + 1); + const E = { page: g, lru: B }; + return C[I] = E, this.pageLru.add(E), this.pageToSplatsChunk[g] = { splats: A, chunk: I, time: performance.now() }, this.pageToSplatsChunk[g]; + } + removeSplatsChunkPage(A, I, g) { + const B = this.splatsChunkToPage.get(A); + if (!B) + throw new Error("impossible"); + const C = B[I]; + if (!C) + throw new Error( + `pageLru not found for splats: ${A}, chunk: ${I}, page: ${g}` + ); + for (this.pageLru.delete(C), B[I] = void 0; B.length > 0 && B[B.length - 1] === void 0; ) + B.pop(); + for (B.length === 0 && this.splatsChunkToPage.delete(A), this.pageToSplatsChunk[g] = void 0; this.pageToSplatsChunk.length > 0 && this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === void 0; ) + this.pageToSplatsChunk.pop(); + } + removeSplats(A) { + const I = this.splatsChunkToPage.get(A); + if (!I) + return; + const g = /* @__PURE__ */ new Set(); + for (; I.length > 0; ) { + const B = I.pop(); + if (B) { + const { page: C } = B; + this.pageToSplatsChunk[C] = void 0, g.add(C), this.pageFreelist.push(C), this.pageLru.delete(B); + } + } + this.splatsChunkToPage.delete(A), this.freeablePages = this.freeablePages.filter( + (B) => !g.has(B) + ); + } + uploadPage(A, I, g, B, C, E) { + const i = A * Ig; + MQ(this.packedTexture, A, i * 4, I), B && MQ(this.extTexture, A, i * 4, B); + const o = Math.min(g.length, 3); + if (this.ensureShTextures(o), C !== void 0) { + this.ensureLabelTextures(); + const D = C; + this.labelTexture.value.image.data.subarray(i, i + D.length).set(D), this.labelTexture.value.addLayerUpdate(A), this.labelTexture.value.needsUpdate = !0; + } + if (E !== void 0) { + this.ensureInstanceTextures(); + const D = E; + this.instanceTexture.value.image.data.subarray(i, i + D.length).set(D), this.instanceTexture.value.addLayerUpdate(A), this.instanceTexture.value.needsUpdate = !0; + } + for (let D = 0; D < g.length; D++) { + const w = g[D], s = this.shTextures[D].value.format === a.RGIntegerFormat ? 2 : 4; + MQ( + this.shTextures[D], A, - (C) => { - g(C); - }, - I, - B + i * s, + w ); - }); + } } - parse(A) { - return new vA({ packedSplats: A }); + newUint32ArrayTexture(A) { + const I = new Uint32Array( + this.maxPages * bQ * PQ * A + ), g = new a.DataArrayTexture( + I, + bQ, + PQ, + this.maxPages + ); + return g.format = A === 2 ? a.RGIntegerFormat : a.RGBAIntegerFormat, g.type = a.UnsignedIntType, g.internalFormat = A === 2 ? "RG32UI" : "RGBA32UI", g.needsUpdate = !0, g.source.dataReady = !1, this.renderer.initTexture(g), g; } - loadInternal({ - packedSplats: A, - extSplats: I, - url: g, - fileBytes: B, - fileType: C, - fileName: E, - stream: D, - streamLength: i, - onLoad: w, - onProgress: s, - onError: o, - lod: y, - nonLod: h, - lodAbove: k, - lodBase: R - }) { - B instanceof ArrayBuffer && (B = new Uint8Array(B)); - const F = B ? void 0 : this.manager.resolveURL((this.path ?? "") + (g ?? "")); - let a = D == null ? void 0 : D.getReader(); - this.manager.itemStart(F ?? ""), BQ.withWorker(async (S) => { - const M = (A == null ? void 0 : A.lod) ?? (I == null ? void 0 : I.lod); - M && (y = M); - const c = (A == null ? void 0 : A.nonLod) ?? (I == null ? void 0 : I.nonLod); - c !== void 0 && (h = c); - const N = async (t) => { - const { loaded: H, total: K } = t; - if (H !== void 0 && s && s( - new ProgressEvent("progress", { - lengthComputable: K !== 0, - loaded: H, - total: K - }) - ), t.nextChunk) { - let Y; - if (!a) - Y = new Uint8Array(0); - else { - const { done: L, value: q } = await a.read(); - L ? (a.releaseLock(), a = void 0, Y = new Uint8Array(0)) : Y = q; + driveFetchers() { + const A = [], I = []; + let g = 0; + for (const { splats: E, chunk: i } of this.fetchPriority) { + const o = this.getSplatsChunk(E, i); + if (o) { + g >= this.maxPages ? I.push(o) : A.push(o), g += 1; + continue; + } + if (this.fetched.some( + ({ splats: D, chunk: w }) => E === D && i === w + ) || this.fetchers.some( + ({ splats: D, chunk: w }) => E === D && i === w + )) { + g += 1; + continue; + } + if (g < this.maxPages && this.fetchers.length < this.numFetchers) { + g += 1; + const D = E.fetchDecodeChunk(i).then( + async (w) => { + this.fetched.push({ splats: E, chunk: i, data: w }), this.fetchPause > 0 && await new Promise( + (s) => setTimeout(s, this.fetchPause) + ); + }, + async (w) => { + console.warn(w); + const s = 250 + 500 * Math.random(); + await new Promise((t) => setTimeout(t, s)); } - S.call("nextChunk", { chunk: Y }); - } - }, U = F ? new URL(F, window.location.href).toString() : void 0, J = await S.call( - I ? "loadExtSplats" : "loadPackedSplats", - { - url: U, - requestHeader: this.requestHeader, - withCredentials: this.withCredentials, - fileBytes: B == null ? void 0 : B.slice(), - fileType: C, - pathName: F || E, - chunked: D !== void 0, - chunkedLength: i, - encoding: A == null ? void 0 : A.splatEncoding, - lod: y, - lodBase: R, - nonLod: h, - lodAbove: k - }, - { onStatus: N } - ); - if (J.lodSplats && (I ? J.lodSplats = new GI({ - ...J.lodSplats - }) : J.lodSplats = new $A({ - ...J.lodSplats, - maxSplats: A == null ? void 0 : A.maxSplats - })), I) { - const t = { - // ...(initExt ?? {}), - ...J - }; - I.initialize(t), w == null || w(I); + ).finally(() => { + this.fetchers = this.fetchers.filter( + ({ splats: w, chunk: s }) => E !== w || i !== s + ), this.processFetched(); + }); + this.fetchers.push({ splats: E, chunk: i, promise: D }), D.then((w) => { + this.autoDrive && this.driveFetchers(); + }); + } + } + const B = performance.now(); + for (const E of I.reverse()) + E.lru = B, this.pageLru.delete(E), this.pageLru.add(E); + const C = new Set(this.pageLru); + for (const E of A.reverse()) + C.delete(E), E.lru = B, this.pageLru.delete(E), this.pageLru.add(E); + this.freeablePages = Array.from(C).map(({ page: E }) => E); + } + allocateFreeable() { + const A = this.freeablePages.shift(); + if (A === void 0) + return; + const I = this.pageToSplatsChunk[A]; + if (!I) + throw new Error(`splatsChunk not found for page: ${A}`); + const { splats: g, chunk: B } = I; + return this.removeSplatsChunkPage(g, B, A), this.lodTreeUpdates.push({ + splats: g, + page: A, + chunk: B, + numSplats: Ig + }), A; + } + processFetched() { + const A = performance.now(); + for (; ; ) { + const I = this.fetched.shift(); + if (!I) + break; + const { splats: g, chunk: B, data: C } = I; + let E = this.allocatePage(); + if (E === void 0 && (E = this.allocateFreeable(), E === void 0)) + return; + this.insertSplatsChunkPage(g, B, E, A); + const { numSplats: i, extra: o } = C; + if (this.lodTreeUpdates.push({ + splats: g, + page: E, + chunk: B, + numSplats: i, + lodTree: o.lodTree + }), ZG(C, this.extSplats)) { + const D = C.extArrays, w = D[0], s = D[1], t = [ + C.extra.sh1, + C.extra.sh2, + C.extra.sh3a, + C.extra.sh3b + ]; + t.length = t.findIndex((G) => !G), this.newUploads.push({ + page: E, + numSplats: i, + packedArray: w, + extArray: s, + shArrays: t, + labels: o == null ? void 0 : o.labels, + instances: o == null ? void 0 : o.instances + }); } else { - const t = { - // ...(init ?? {}), - ...J - }; - A ? (A.initialize(t), w == null || w(A)) : w == null || w(new $A(t)); + const D = C.packedArray, w = [ + C.extra.sh1, + C.extra.sh2, + C.extra.sh3 + ]; + w.length = w.findIndex((s) => !s), this.newUploads.push({ + page: E, + numSplats: i, + packedArray: D, + shArrays: w + }); } - }).catch((S) => { - this.manager.itemError(F ?? ""), o == null || o(S); - }).finally(() => { - this.manager.itemEnd(F ?? ""); - }); + } } - async loadInternalAsync({ - packedSplats: A, - extSplats: I, - url: g, - fileBytes: B, - fileType: C, - fileName: E, - stream: D, - streamLength: i, - onProgress: w, - lod: s, - nonLod: o, - lodAbove: y, - lodBase: h - }) { - return new Promise((k, R) => { - this.loadInternal({ - packedSplats: A, - extSplats: I, - url: g, - fileBytes: B, - fileType: C, - fileName: E, - stream: D, - streamLength: i, - onLoad: k, - onProgress: w, - onError: R, - lod: s, - nonLod: o, - lodAbove: y, - lodBase: h - }); - }); + processUploads() { + for (; ; ) { + const A = this.readyUploads.shift(); + if (!A) + break; + const { page: I, numSplats: g, packedArray: B, extArray: C, shArrays: E, labels: i, instances: o } = A; + this.uploadPage(I, B, E, C, i, o); + } } -} -function NB(Q) { - const I = new DataView(Q.buffer).getUint32(0, !0); - if ((I & 16777215) === 7957616) - return hA.PLY; - if ((I & 16777215) === 559903) { - const g = KC(Q, 4); - return new DataView(g.buffer).getUint32(0, !0) === 1347635022 ? hA.SPZ : void 0; + consumeLodTreeUpdates() { + const A = this.lodTreeUpdates; + return this.lodTreeUpdates = [], this.readyUploads.push(...this.newUploads), this.newUploads = [], A; } - if (I === 67324752) - return gR(Q) ? hA.PCSOGSZIP : void 0; - if (I === 809779538) - return hA.RAD; -} -function IR(Q) { - const A = Q.split(/[?#]/, 1)[0], I = Math.max( - A.lastIndexOf("/"), - A.lastIndexOf("\\") - ), g = A.slice(I + 1), B = g.lastIndexOf("."); - return B <= 0 || B === g.length - 1 ? "" : g.slice(B + 1).toLowerCase(); +}; +j.emptyUint32x4 = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(), j.emptyUint32x2 = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 2), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RG32UI", E.needsUpdate = !0, E; +})(), j.emptyIndicesTexture = (() => { + const A = new Uint32Array(16384), I = new a.DataTexture(A, 4096, 1); + return I.format = a.RGBAIntegerFormat, I.type = a.UnsignedIntType, I.internalFormat = "RGBA32UI", I.needsUpdate = !0, I; +})(), j.emptyPackedTexture = j.emptyUint32x4, j.emptyExtTexture = j.emptyUint32x4, j.emptyLabelTexture = j.emptyUint32x4, j.emptyShTextures = [ + j.emptyUint32x2, + j.emptyUint32x4, + j.emptyUint32x4 +], j.emptyExtShTextures = [ + j.emptyUint32x4, + j.emptyUint32x4, + j.emptyUint32x4, + // SH3A + j.emptyUint32x4 + // SH3B +]; +let MI = j; +function ZG(Q, A) { + return A; } -function cB(Q) { - const A = IR(Q); - if (A === "ply") - return hA.PLY; - if (A === "spz") - return hA.SPZ; - if (A === "splat") - return hA.SPLAT; - if (A === "ksplat") - return hA.KSPLAT; - if (A === "sog") - return hA.PCSOGSZIP; - if (A === "rad") - return hA.RAD; +function MQ(Q, A, I, g) { + Q.value.image.data.subarray(I, I + g.length).set(g), Q.value.addLayerUpdate(A), Q.value.needsUpdate = !0, Q.value.source.dataReady = !0; } -function dk(Q) { - return bw(Q) !== void 0; +async function JQ({ + url: Q, + requestHeader: A, + withCredentials: I, + offset: g, + bytes: B +}) { + const C = new Request(Q, { + headers: A ? new Headers(A) : void 0, + credentials: I ? "include" : "same-origin" + }); + g !== void 0 && B !== void 0 && C.headers.set("Range", `bytes=${g}-${g + B - 1}`); + const E = await fetch(C); + if (!E.ok || !E.body) + throw new Error( + `Failed to fetch "${Q}": ${E.status} ${E.statusText}` + ); + return new Uint8Array(await E.arrayBuffer()); } -function bw(Q) { - try { - let A; - if (typeof Q == "string") - A = Q; - else { - const B = Q instanceof ArrayBuffer ? new Uint8Array(Q) : Q; - if (B.length > 65536) - return; - A = new TextDecoder().decode(B); - } - const I = JSON.parse(A); - if (!I || typeof I != "object" || Array.isArray(I)) +class vG { + constructor() { + this.fetchDyno = new l({ + inTypes: {}, + outTypes: { gsplat: V }, + globals: () => [NA], + statements: ({ outputs: A }) => z(` + ${A.gsplat}.flags = 0u; return; - const g = I.version === 2; - for (const B of ["means", "scales", "quats", "sh0"]) { - if (!I[B] || typeof I[B] != "object" || Array.isArray(I[B])) - return; - if (g) { - if (!I[B].files || (B === "scales" || B === "sh0") && !I[B].codebook || B === "means" && (!I[B].mins || !I[B].maxs)) - return; - } else if (!I[B].shape || !I[B].files || B !== "quats" && (!I[B].mins || !I[B].maxs)) - return; - } - return I; - } catch { - return; + `) + }).outputs.gsplat; } -} -function gR(Q) { - try { - const A = Q instanceof ArrayBuffer ? new Uint8Array(Q) : Q; - let I = null; - const g = to(A, { - filter: ({ name: C }) => C.split(/[\\/]/).pop() === "meta.json" ? (I = C, !0) : !1 - }); - if (!I) - return; - const B = bw(g[I]); - return B ? { name: I, json: B } : void 0; - } catch { - return; + prepareFetchSplat() { } -} -async function qk({ - input: Q, - extraFiles: A, - fileType: I, - pathOrUrl: g, - splatEncoding: B -}) { - const C = Q instanceof ArrayBuffer ? new Uint8Array(Q) : Q; - let E = I; - switch (I || (E = NB(C), !E && g && (E = cB(g))), E) { - case hA.PLY: { - const D = new vg({ fileBytes: C }); - await D.parseHeader(); - const i = D.numSplats, w = BA(i).maxSplats, s = { - fileBytes: C, - packedArray: new Uint32Array(w * 4), - splatEncoding: B - }; - return await nI(async (o) => { - const { packedArray: y, numSplats: h, extra: k } = await o.call( - "unpackPly", - s - ); - return { packedArray: y, numSplats: h, extra: k }; - }); - } - case hA.SPZ: - return await nI(async (D) => { - const { packedArray: i, numSplats: w, extra: s } = await D.call( - "decodeSpz", - { - fileBytes: C, - splatEncoding: B - } - ); - return { packedArray: i, numSplats: w, extra: s }; - }); - case hA.SPLAT: - return await nI(async (D) => { - const { packedArray: i, numSplats: w } = await D.call( - "decodeAntiSplat", - { - fileBytes: C, - splatEncoding: B - } - ); - return { packedArray: i, numSplats: w }; - }); - case hA.KSPLAT: - return await nI(async (D) => { - const { packedArray: i, numSplats: w, extra: s } = await D.call( - "decodeKsplat", - { fileBytes: C, splatEncoding: B } - ); - return { packedArray: i, numSplats: w, extra: s }; - }); - case hA.PCSOGS: - return await nI(async (D) => { - const { packedArray: i, numSplats: w, extra: s } = await D.call( - "decodePcSogs", - { fileBytes: C, extraFiles: A, splatEncoding: B } - ); - return { packedArray: i, numSplats: w, extra: s }; - }); - case hA.PCSOGSZIP: - return await nI(async (D) => { - const { packedArray: i, numSplats: w, extra: s } = await D.call( - "decodePcSogsZip", - { fileBytes: C, splatEncoding: B } - ); - return { packedArray: i, numSplats: w, extra: s }; - }); - default: - throw new Error(`Unknown splat file type: ${E}`); + dispose() { + } + getNumSplats() { + return 0; + } + hasRgbDir() { + return !1; + } + getNumSh() { + return 0; + } + setMaxSh(A) { + } + fetchSplat({ index: A }) { + return this.fetchDyno; + } + forEachSplat() { } } -class QR { - constructor({ maxSplats: A = 1 } = {}) { - this.numSplats = 0, this.maxSplats = BA(A).maxSplats, this.centers = new Float32Array(this.maxSplats * 3), this.scales = new Float32Array(this.maxSplats * 3), this.quaternions = new Float32Array(this.maxSplats * 4), this.opacities = new Float32Array(this.maxSplats), this.colors = new Float32Array(this.maxSplats * 3); +const DI = class DI extends Sg { + constructor(A = {}) { + if (super({ + update: (I) => this.update(I) + }), this.isInitialized = !1, this.recolor = new a.Color(1, 1, 1), this.opacity = 1, this.generatorDirty = !0, this.enableViewToObject = !1, this.enableViewToWorld = !1, this.enableWorldToView = !1, this.skinning = null, this.edits = null, this.rgbaDisplaceEdits = null, this.splatRgba = null, this.maxSh = 3, this.showLodPageDyno = new _A({ value: 0 }), A.splats) + this.splats = A.splats, this.numSplats = A.splats.getNumSplats(); + else if (A.paged) { + A.extSplats && console.warn( + "To set extSplats with the paged option, set SparkRenderer.pagedExtSplats" + ); + const I = A.url ?? ""; + if (A.paged === !0) + this.paged = new ag({ rootUrl: I }); + else if (A.paged instanceof ag) + this.paged = A.paged; + else if (A.paged instanceof MI) + this.paged = new ag({ rootUrl: I, pager: A.paged }); + else + throw new Error("Invalid paged option"); + this.splats = this.paged; + } else A.extSplats ? (this.extSplats = A.extSplats instanceof sI ? A.extSplats : new sI(), A.extSplats = this.extSplats, this.numSplats = this.extSplats.numSplats, this.splats = this.extSplats) : A.packedSplats ? (this.packedSplats = A.packedSplats, this.packedSplats.splatEncoding = A.splatEncoding ?? { + ...IQ + }, this.splats = this.packedSplats) : this.packedSplats = new hI(); + if (this.editable = A.editable ?? !0, this.raycastable = A.raycastable ?? !0, this.minRaycastOpacity = A.minRaycastOpacity ?? 0.2, this.onFrame = A.onFrame, this.context = { + transform: new mI(), + viewToWorld: new mI(), + worldToView: new mI(), + viewToObject: new mI(), + covTransform: new Kg(), + covViewToWorld: new Kg(), + covWorldToView: new Kg(), + covViewToObject: new Kg(), + recolor: new zI({ + value: new a.Vector4().setScalar(Number.NEGATIVE_INFINITY) + }), + time: new vI({ value: 0 }), + deltaTime: new vI({ value: 0 }), + numSplats: new _A({ value: 0 }), + splats: new vG(), + enableLod: new Mg({ value: !1 }), + lodIndices: new Jg({ + value: lB, + key: "lodIndices" + }) + }, this.covSplats = A.covSplats ?? !1, this.covSplats && !this.extSplats) + throw new Error("CovSplats requires ExtSplats"); + if (this.objectModifiers = A.objectModifier ? [A.objectModifier] : void 0, this.worldModifiers = A.worldModifier ? [A.worldModifier] : void 0, A.objectModifiers && (this.objectModifiers = A.objectModifiers), A.worldModifiers && (this.worldModifiers = A.worldModifiers), this.enableLod = A.enableLod, this.lodScale = A.lodScale ?? 1, this.behindFoveate = A.behindFoveate, this.coneFov0 = A.coneFov0, this.coneFov = A.coneFov, this.coneFoveate = A.coneFoveate, this.updateGenerator(), A.url || A.fileBytes || A.stream || A.constructSplats || A.packedSplats && !A.packedSplats.isInitialized || this.extSplats && !this.extSplats.isInitialized) + this.initialized = this.asyncInitialize(A).then(async () => { + if (this.updateGenerator(), this.isInitialized = !0, A.onLoad) { + const I = A.onLoad(this); + I instanceof Promise && await I; + } + return this; + }); + else if (this.isInitialized = !0, this.initialized = Promise.resolve(this), A.onLoad) { + const I = A.onLoad(this); + I instanceof Promise && (this.initialized = I.then(() => this)); + } } - pushSplat() { - const A = this.numSplats; - return this.ensureIndex(A), this.numSplats += 1, A; + updateLabelLookup(A) { + var I; + this.paged && ((I = this.paged.pager) == null || I.updateLabelLookup(A)); } - unpushSplat(A) { - if (A === this.numSplats - 1) - this.numSplats -= 1; - else - throw new Error("Cannot unpush splat from non-last position"); + updateLabelHighlight(A) { + var I; + this.paged && ((I = this.paged.pager) == null || I.updateLabelHighlight(A)); } - ensureCapacity(A) { - if (A > this.maxSplats) { - const I = Math.max(A, this.maxSplats * 2), g = new Float32Array(I * 3), B = new Float32Array(I * 3), C = new Float32Array(I * 4), E = new Float32Array(I), D = new Float32Array(I * 3); - if (g.set(this.centers), B.set(this.scales), C.set(this.quaternions), E.set(this.opacities), D.set(this.colors), this.centers = g, this.scales = B, this.quaternions = C, this.opacities = E, this.colors = D, this.sh1) { - const i = new Float32Array(I * 9); - i.set(this.sh1), this.sh1 = i; - } - if (this.sh2) { - const i = new Float32Array(I * 15); - i.set(this.sh2), this.sh2 = i; - } - if (this.sh3) { - const i = new Float32Array(I * 21); - i.set(this.sh3), this.sh3 = i; + async asyncInitialize(A) { + const { + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + maxSplats: o, + constructSplats: D, + onProgress: w, + splatEncoding: s, + lod: t, + nonLod: G, + lodAbove: c + } = A; + if (this.packedSplats) { + if (I || g || E || D) { + const h = { + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + maxSplats: o, + construct: D, + onProgress: w, + splatEncoding: s, + lod: t, + nonLod: G, + lodAbove: c + }; + this.packedSplats.reinitialize(h); } - this.maxSplats = I; + await this.packedSplats.initialized, this.splats = this.packedSplats; + } else if (this.extSplats && (I || g || E || D)) { + const h = D; + this.extSplats.reinitialize({ + url: I, + fileBytes: g, + fileType: B, + fileName: C, + stream: E, + streamLength: i, + maxSplats: o, + construct: h, + onProgress: w, + lod: t, + nonLod: G, + lodAbove: c + }), await this.extSplats.initialized, this.splats = this.extSplats; } + this.splats && (this.numSplats = this.splats.getNumSplats(), this.updateGenerator()); } - ensureIndex(A) { - this.ensureCapacity(A + 1); + // Creates a new Gsplat with the provided parameters (all values in "float" space, + // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats, + // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential + // doubling strategy to fit the new data, so it's fairly efficient to just + // pushSplat(...) each Gsplat you want to create in a loop. + pushSplat(A, I, g, B, C) { + this.packedSplats ? this.packedSplats.pushSplat(A, I, g, B, C) : this.extSplats && this.extSplats.pushSplat(A, I, g, B, C); } - setCenter(A, I, g, B) { - this.centers[A * 3] = I, this.centers[A * 3 + 1] = g, this.centers[A * 3 + 2] = B; + // This method iterates over all Gsplats in this instance's packedSplats, + // invoking the provided callback with index: number in 0..=(this.numSplats-1) and + // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, + // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1). + // Note that the objects passed in as center etc. are the same for every callback + // invocation: these objects are reused for efficiency. Changing these values has + // no effect as they are decoded/unpacked copies of the underlying data. To update + // the packedSplats, call .packedSplats.setSplat(index, center, scales, + // quaternion, opacity, color). + forEachSplat(A) { + var I; + (I = this.splats) == null || I.forEachSplat(A); } - setScale(A, I, g, B) { - this.scales[A * 3] = I, this.scales[A * 3 + 1] = g, this.scales[A * 3 + 2] = B; + // Call this when you are finished with the SplatMesh and want to free + // any buffers it holds (via packedSplats). + dispose() { + this.splats && this.splats !== this.packedSplats && this.splats !== this.extSplats && (this.splats.dispose(), this.splats = void 0), this.packedSplats && (this.packedSplats.dispose(), this.packedSplats = void 0), this.extSplats && (this.extSplats.dispose(), this.extSplats = void 0); } - setQuaternion(A, I, g, B, C) { - this.quaternions[A * 4] = I, this.quaternions[A * 4 + 1] = g, this.quaternions[A * 4 + 2] = B, this.quaternions[A * 4 + 3] = C; + // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true, + // only the centers of the splats are used to compute the bounding box. + // IMPORTANT: This should only be called after the SplatMesh is initialized. + getBoundingBox(A = !0) { + var o; + if (!this.initialized) + throw new Error( + "Cannot get bounding box before SplatMesh is initialized" + ); + const I = new a.Vector3( + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY + ), g = new a.Vector3( + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY + ), B = new a.Vector3(), C = [-1, 1]; + function E(D, w, s, t, G, c) { + if (A) + I.min(w), g.max(w); + else + for (const h of C) + for (const y of C) + for (const S of C) + B.set(h * s.x, y * s.y, S * s.z), B.applyQuaternion(t), B.add(w), I.min(B), g.max(B); + } + return (o = this.splats) == null || o.forEachSplat(E), new a.Box3(I, g); } - setOpacity(A, I) { - this.opacities[A] = I; + set objectModifier(A) { + A ? this.objectModifiers = [A] : this.objectModifiers = void 0; } - setColor(A, I, g, B) { - this.colors[A * 3] = I, this.colors[A * 3 + 1] = g, this.colors[A * 3 + 2] = B; + set worldModifier(A) { + A ? this.worldModifiers = [A] : this.worldModifiers = void 0; } - setSh1(A, I) { - this.sh1 || (this.sh1 = new Float32Array(this.maxSplats * 9)); - for (let g = 0; g < 9; ++g) - this.sh1[A * 9 + g] = I[g]; + constructGenerator(A) { + if (this.covSplats) + return this.constructCovGenerator(A); + const { transform: I, viewToObject: g, recolor: B } = A, C = nA( + { index: "int" }, + { gsplat: V }, + ({ index: E }) => { + var D, w, s, t; + if (!E) + throw new Error("index is undefined"); + E = YB( + A.lodIndices, + E, + A.numSplats, + A.enableLod, + this.showLodPageDyno + ), A.splats.setMaxSh(this.maxSh), A.splats.prepareFetchSplat(); + let i = A.splats.fetchSplat({ + index: E, + viewOrigin: g.translate + }); + if (this.splatRgba && (i = dB( + i, + this.splatRgba.dyno, + E, + A.enableLod + )), this.skinning && (i = this.skinning.modify(i)), this.objectModifiers) + for (const G of this.objectModifiers) + i = G.apply({ gsplat: i }).gsplat; + i = I.applyGsplat(i); + const o = SA(B, fA(i).outputs.rgba); + if (i = BI({ gsplat: i, rgba: o }), this.rgbaDisplaceEdits && (i = this.rgbaDisplaceEdits.modify(i)), this.worldModifiers) + for (const G of this.worldModifiers) + i = G.apply({ gsplat: i }).gsplat; + return (w = (D = this.paged) == null ? void 0 : D.pager) != null && w.labelLookupModifier && (i = (t = (s = this.paged) == null ? void 0 : s.pager) == null ? void 0 : t.labelLookupModifier.apply({ gsplat: i }).gsplat), { gsplat: i }; + } + ); + this.generator = C, this.covGenerator = void 0; } - setSh2(A, I) { - this.sh2 || (this.sh2 = new Float32Array(this.maxSplats * 15)); - for (let g = 0; g < 15; ++g) - this.sh2[A * 15 + g] = I[g]; + constructCovGenerator(A) { + const { covTransform: I, covViewToObject: g, recolor: B } = A, C = nA( + { index: "int" }, + { covsplat: KA }, + ({ index: E }) => { + if (!E) + throw new Error("index is undefined"); + E = YB( + A.lodIndices, + E, + A.numSplats, + A.enableLod, + this.showLodPageDyno + ), A.splats.prepareFetchSplat(); + let i = A.splats.fetchSplat({ + index: E, + viewOrigin: g.offset + }); + if (this.splatRgba && (i = dB( + i, + this.splatRgba.dyno, + E, + A.enableLod + )), this.objectModifiers) + for (const w of this.objectModifiers) + i = w.apply({ gsplat: i }).gsplat; + let o = Og(i); + if (this.skinning && (o = this.skinning.modifyCov(o)), this.covObjectModifiers) + for (const w of this.covObjectModifiers) + o = w.apply({ covsplat: o }).covsplat; + o = I.applyCovSplat(o); + const D = SA(B, Zg(o).outputs.rgba); + if (o = IB({ covsplat: o, rgba: D }), this.rgbaDisplaceEdits && (o = this.rgbaDisplaceEdits.modifyCov(o)), this.covWorldModifiers) + for (const w of this.covWorldModifiers) + o = w.apply({ covsplat: o }).covsplat; + return { covsplat: o }; + } + ); + this.generator = void 0, this.covGenerator = C; } - setSh3(A, I) { - this.sh3 || (this.sh3 = new Float32Array(this.maxSplats * 21)); - for (let g = 0; g < 21; ++g) - this.sh3[A * 21 + g] = I[g]; + // Call this whenever something changes in the Gsplat processing pipeline, + // for example changing maxSh or updating objectModifier or worldModifier. + // Compiled generators are cached for efficiency and re-use when the same + // pipeline structure emerges after successive changes. + updateGenerator() { + this.generatorDirty = !0; } -} -const YA = class YA { - constructor(A = {}) { - this.maxSplats = 0, this.numSplats = 0, this.packedArray = null, this.maxSh = 3, this.isInitialized = !1, this.target = null, this.source = null, this.needsUpdate = !0, this.extra = {}, this.dyno = new MB({ packedSplats: this }), this.dynoRgbMinMaxLnScaleMinMax = new mI({ - key: "rgbMinMaxLnScaleMinMax", - value: new G.Vector4(0, 1, pA, fA), - update: (I) => { - var g, B, C, E; - return I.set( - ((g = this.splatEncoding) == null ? void 0 : g.rgbMin) ?? 0, - ((B = this.splatEncoding) == null ? void 0 : B.rgbMax) ?? 1, - ((C = this.splatEncoding) == null ? void 0 : C.lnScaleMin) ?? pA, - ((E = this.splatEncoding) == null ? void 0 : E.lnScaleMax) ?? fA - ), I; + // This is called automatically by SparkRenderer and you should not have to + // call it. It updates parameters for the generated pipeline and calls + // updateGenerator() if the pipeline needs to change. + update({ + renderer: A, + time: I, + deltaTime: g, + viewToWorld: B, + camera: C, + renderSize: E, + globalEdits: i, + lodIndices: o + }) { + var h, y, S; + this.context.time.value = I, this.context.deltaTime.value = g, DI.dynoTime.value = I, this.showLodPageDyno.value = this.showLodPage ?? -1; + const D = this.splats ?? this.packedSplats ?? this.extSplats; + D && (this.context.splats = D), this.numSplats = this.context.splats.getNumSplats(); + let w = !1; + const s = ((h = this.packedSplats) == null ? void 0 : h.lodSplats) ?? ((y = this.extSplats) == null ? void 0 : y.lodSplats); + if (this.context.enableLod.value = s != null && o != null, this.enableLod === !1 && (this.context.enableLod.value = !1), this.context.lodIndices.value = (o == null ? void 0 : o.texture) ?? lB, this.context.enableLod.value && s && (this.context.splats = s, this.numSplats = (o == null ? void 0 : o.numSplats) ?? 0), this.context.numSplats.value = this.numSplats, this.context.splats !== this.lastSplats && (this.lastSplats = this.context.splats, this.generatorDirty = !0), this.covSplats) { + this.context.covTransform.update(this) && (w = !0), this.context.covViewToWorld.updateFromMatrix(B) && this.enableViewToWorld && (w = !0); + const F = B.clone().invert(); + this.context.covWorldToView.updateFromMatrix(F) && this.enableWorldToView && (w = !0); + const k = this.matrixWorld.clone().invert().multiply(B); + this.context.covViewToObject.updateFromMatrix(k) && (this.enableViewToObject || this.context.splats.hasRgbDir()) && (w = !0); + } else { + this.context.transform.update(this) && (w = !0), this.context.viewToWorld.updateFromMatrix(B) && this.enableViewToWorld && (w = !0); + const F = B.clone().invert(); + this.context.worldToView.updateFromMatrix(F) && this.enableWorldToView && (w = !0); + const R = new a.Matrix4().compose( + this.context.transform.translate.value, + this.context.transform.rotate.value, + new a.Vector3().setScalar(this.context.transform.scale.value) + ).invert().multiply(B); + this.context.viewToObject.updateFromMatrix(R) && (this.enableViewToObject || this.context.splats.hasRgbDir()) && (w = !0); + } + const t = new a.Vector4( + this.recolor.r, + this.recolor.g, + this.recolor.b, + this.opacity + ); + t.equals(this.context.recolor.value) || (this.context.recolor.value.copy(t), w = !0); + const G = this.editable ? (this.edits ?? []).concat(i) : []; + this.editable && !this.edits && this.traverseVisible((F) => { + F instanceof Wg && G.push(F); + }), G.sort((F, e) => F.ordering - e.ordering); + const c = G.map((F) => { + if (F.sdfs != null) + return { edit: F, sdfs: F.sdfs }; + const e = []; + return F.traverseVisible((k) => { + k instanceof CG && e.push(k); + }), { edit: F, sdfs: e }; + }); + if (c.length > 0 && !this.rgbaDisplaceEdits) { + const F = c.length, e = c.reduce( + (k, R) => k + R.sdfs.length, + 0 + ); + this.rgbaDisplaceEdits = new EG({ + maxEdits: F, + maxSdfs: e + }), this.generatorDirty = !0; + } + if (this.rgbaDisplaceEdits) { + const F = this.rgbaDisplaceEdits.update(c); + w || (w = F.updated), F.dynoUpdated && (this.generatorDirty = !0); + } + this.generatorDirty && (this.constructGenerator(this.context), this.generatorDirty = !1, w = !0), w && this.updateVersion(), (S = this.onFrame) == null || S.call(this, { mesh: this, time: I, deltaTime: g }); + } + // This method conforms to the standard THREE.Raycaster API, performing object-ray + // intersections using this method to populate the provided intersects[] array + // with each intersection point. + raycast(A, I) { + var S, F, e, k, R, N, U, M, J, H, n, L, x, d, Y, p, O, gA, v, EA, W, QA, X; + if (!rG() || !this.raycastable || !this.packedSplats && !this.extSplats && !this.paged) + return; + const g = this.paged != null, B = g ? ((F = (S = this.paged) == null ? void 0 : S.pager) == null ? void 0 : F.extSplats) ?? !1 : this.extSplats != null, { near: C, far: E, ray: i } = A, o = this.matrixWorld.clone().invert(), D = new a.Matrix3().setFromMatrix4(o), w = i.origin.clone().applyMatrix4(o), s = i.direction.clone().applyMatrix3(D), t = oG(), G = t.length / 4; + let c = 0; + const h = ((e = this.raycastIndices) == null ? void 0 : e.numSplats) ?? (g ? (k = this.paged) == null ? void 0 : k.numSplats : this.context.numSplats.value) ?? 0, y = ((R = this.raycastIndices) == null ? void 0 : R.indices) ?? (g ? (N = this.paged) == null ? void 0 : N.dynoIndices.value.image.data : this.context.enableLod.value ? this.context.lodIndices.value.image.data : null) ?? null; + if (B) { + const P = sG(), u = g ? (Y = (d = this.paged) == null ? void 0 : d.pager) == null ? void 0 : Y.packedTexture.value.image.data : y ? (O = (p = this.extSplats) == null ? void 0 : p.lodSplats) == null ? void 0 : O.extArrays[0] : (gA = this.extSplats) == null ? void 0 : gA.extArrays[0], m = g ? (EA = (v = this.paged) == null ? void 0 : v.pager) == null ? void 0 : EA.extTexture.value.image.data : y ? (QA = (W = this.extSplats) == null ? void 0 : W.lodSplats) == null ? void 0 : QA.extArrays[1] : (X = this.extSplats) == null ? void 0 : X.extArrays[1]; + if (!u || !m) + return; + for (let f = 0; f < h; f += G) { + const hA = Math.min(G, h - f); + if (!y) + t.set(u.subarray(f * 4, (f + hA) * 4)), P.set(m.subarray(f * 4, (f + hA) * 4)); + else + for (let yA = 0; yA < hA; ++yA) { + const cA = y[f + yA], sA = yA * 4, tA = cA * 4; + t[sA] = u[tA], t[sA + 1] = u[tA + 1], t[sA + 2] = u[tA + 2], t[sA + 3] = u[tA + 3], P[sA] = m[tA], P[sA + 1] = m[tA + 1], P[sA + 2] = m[tA + 2], P[sA + 3] = m[tA + 3]; + } + const aA = wG( + w.x, + w.y, + w.z, + s.x, + s.y, + s.z, + this.minRaycastOpacity, + C, + E, + hA + ); + c = this.appendRaycastBuffer( + c, + aA + ); } - }), this.dynoNumSh = new EI({ - key: "numSh", - value: 0, - update: () => Math.min(this.getNumSh(), this.maxSh) - }), this.dynoShMax = new DI({ - key: "shMax", - value: new G.Vector3(), - update: (I) => { - var g, B, C; - return I.set( - ((g = this.splatEncoding) == null ? void 0 : g.sh1Max) ?? 1, - ((B = this.splatEncoding) == null ? void 0 : B.sh2Max) ?? 1, - ((C = this.splatEncoding) == null ? void 0 : C.sh3Max) ?? 1 - ), I; + } else { + const P = g ? (M = (U = this.paged) == null ? void 0 : U.pager) == null ? void 0 : M.packedTexture.value.image.data : y ? (H = (J = this.packedSplats) == null ? void 0 : J.lodSplats) == null ? void 0 : H.packedArray : (n = this.packedSplats) == null ? void 0 : n.packedArray; + if (!P) + return; + const u = g ? (L = this.paged) == null ? void 0 : L.splatEncoding : (x = this.packedSplats) == null ? void 0 : x.splatEncoding; + for (let m = 0; m < h; m += G) { + const f = Math.min(G, h - m); + if (!y) + t.set(P.subarray(m * 4, (m + f) * 4)); + else + for (let aA = 0; aA < f; ++aA) { + const yA = y[m + aA], cA = aA * 4, sA = yA * 4; + t[cA] = P[sA], t[cA + 1] = P[sA + 1], t[cA + 2] = P[sA + 2], t[cA + 3] = P[sA + 3]; + } + const hA = aG( + w.x, + w.y, + w.z, + s.x, + s.y, + s.z, + this.minRaycastOpacity, + C, + E, + f, + (u == null ? void 0 : u.lnScaleMin) ?? uA, + (u == null ? void 0 : u.lnScaleMax) ?? bA, + (u == null ? void 0 : u.lodOpacity) ?? !1 + ); + c = this.appendRaycastBuffer( + c, + hA + ); } - }), this.initialized = Promise.resolve(this), this.reinitialize(A); + } + for (const P of DI.raycastBuffer.subarray(0, c)) { + const u = i.direction.clone().multiplyScalar(P).add(i.origin); + I.push({ + distance: P, + point: u, + object: this + }); + } } - reinitialize(A) { - this.isInitialized = !1, this.extra = {}, this.maxSplats = A.maxSplats ?? 0, this.splatEncoding = A.splatEncoding, this.lod = A.lod, this.nonLod = A.nonLod, A.url || A.fileBytes || A.stream || A.construct ? this.initialized = this.asyncInitialize(A).then(() => (this.isInitialized = !0, this)) : (this.initialize(A), this.isInitialized = !0, this.initialized = Promise.resolve(this)); + appendRaycastBuffer(A, I) { + const g = A + I.length; + let B = DI.raycastBuffer.length; + if (g > B) { + for (; B < g; ) + B *= 2; + const C = new Float32Array(B); + C.set(DI.raycastBuffer.subarray(0, A)), DI.raycastBuffer = C; + } + return DI.raycastBuffer.set(I, A), A + I.length; } - initialize(A) { - this.extra = A.extra ?? {}, this.splatEncoding = A.splatEncoding ?? this.splatEncoding, this.lodSplats = A.lodSplats, A.packedArray ? (this.packedArray = A.packedArray, this.numSplats = A.numSplats ?? this.packedArray.length / 4, this.maxSplats = Math.floor(this.packedArray.length / 4), this.maxSplats = Math.floor(this.maxSplats / P) * P, this.numSplats = Math.min( - this.maxSplats, - A.numSplats ?? Number.POSITIVE_INFINITY - )) : (this.maxSplats = A.maxSplats ?? 0, this.numSplats = 0); + async createLodSplats({ + rgbaArray: A, + quality: I + } = {}) { + this.packedSplats ? await this.packedSplats.createLodSplats({ quality: I, rgbaArray: A }) : this.extSplats && await this.extSplats.createLodSplats({ quality: I, rgbaArray: A }); } - async asyncInitialize(A) { - const { - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - construct: i, - lod: w, - nonLod: s, - lodAbove: o - } = A; - this.lod = w, this.nonLod = s; - const y = new fw(); - if ((g || I || E) && await y.loadInternalAsync({ - packedSplats: this, - url: I, - fileBytes: g, - fileType: B, - fileName: C, - stream: E, - streamLength: D, - onProgress: A.onProgress, - lodAbove: o - }), i) { - const h = i(this); - h instanceof Promise && await h; - } +}; +DI.dynoTime = new vI({ value: 0 }), DI.raycastBuffer = new Float32Array(1024); +let zA = DI; +function YB(Q, A, I, g, B) { + return jQ({ + inTypes: { + lodIndices: "usampler2D", + index: "int", + numSplats: "int", + enableLod: "bool", + showLodPage: "int" + }, + outTypes: { + index: "int" + }, + inputs: { + lodIndices: Q, + index: A, + numSplats: I, + enableLod: g, + showLodPage: B + }, + statements: ({ inputs: C, outputs: E }) => z(` + int index = ${C.index}; + if (${C.showLodPage} < 0) { + if (index >= ${C.numSplats}) { + return; + } + if (${C.enableLod}) { + ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14); + uint splatIndex = texelFetch(${C.lodIndices}, lodIndexCoord, 0)[index & 3]; + ${E.index} = int(splatIndex); + } else { + ${E.index} = index; + } + } else { + int start = ${C.showLodPage} << 16; + if (index >= 65536) { + return; + } + ${E.index} = start + index; + } + `) + }).outputs.index; +} +function dB(Q, A, I, g) { + return jQ({ + inTypes: { + gsplat: V, + rgba: cB, + index: "int", + enableLod: "bool" + }, + outTypes: { gsplat: V }, + inputs: { gsplat: Q, rgba: A, index: I, enableLod: g }, + statements: ({ inputs: B, outputs: C }) => z(` + ${C.gsplat} = ${B.gsplat}; + if (!${B.enableLod} && (${B.index} >= 0) && (${B.index} < ${B.rgba}.count)) { + ${C.gsplat}.rgba = texelFetch(${B.rgba}.texture, splatTexCoord(${B.index}), 0); + } + `) + }).outputs.gsplat; +} +const lB = (() => { + const Q = new a.DataTexture( + new Uint32Array(16384), + 4096, + 1, + a.RGBAIntegerFormat, + a.UnsignedIntType + ); + return Q.internalFormat = "RGBA32UI", Q.needsUpdate = !0, Q; +})(), BA = class BA { + constructor({ + extSplats: A, + covSplats: I + } = {}) { + if (this.time = 0, this.deltaTime = 0, this.viewToWorld = new a.Matrix4(), this.viewOrigin = new a.Vector3(), this.viewDirection = new a.Vector3(), this.maxSplats = 0, this.numSplats = 0, this.target = null, this.mapping = [], this.version = -1, this.mappingVersion = -1, this.readback = null, this.readbackSplats = [], !FE) + throw new Error("Spark requires THREE.js r179 or above"); + this.extSplats = A ?? !0, this.covSplats = I ?? !1; } - // Call this when you are finished with the PackedSplats and want to free - // any buffers it holds. dispose() { - this.target && (this.target.dispose(), this.target.texture.source.data = null, this.target = null), this.source && (this.source.dispose(), this.source.source.data = null, this.source = null), this.packedArray = null; - for (const A in this.extra) { - const I = this.extra[A]; - if (I instanceof x) { - const g = I.value; - g != null && g.isTexture && (g.dispose(), g.source.data = null); - } - } - this.extra = {}, this.disposeLodSplats(); + this.target && (this.target.dispose(), this.target = null); } - prepareFetchSplat() { + // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator + // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size) + getTextures() { + return this.target ? this.target.textures : BA.emptyTextures; } - getNumSplats() { - return this.numSplats; + // Given an array of splatCounts (.numSplats for each + // SplatGenerator/SplatMesh in the scene), compute a + // "mapping layout" in the composite array of generated outputs. + generateMapping(A) { + let I = 0; + const g = A.map((B) => { + const C = I, E = Math.ceil(B / b) * b; + return I += E, { base: C, count: B }; + }); + return { maxSplats: I, mapping: g }; } - hasRgbDir() { - return Math.min(this.getNumSh(), this.maxSh) > 0; + // Ensures our NewSplatAccumulator.target render target has enough space + // to generate maxSplats total Gsplats, and reallocate if not large enough. + ensureGenerate({ maxSplats: A }) { + if (this.target && (A ?? 1) <= this.maxSplats) + return !1; + this.dispose(); + const I = iA(A ?? 1), { width: g, height: B, depth: C } = I; + if (this.maxSplats = I.maxSplats, this.target = new a.WebGLArrayRenderTarget(g, B, C, { + depthBuffer: !1, + stencilBuffer: !1, + generateMipmaps: !1, + magFilter: a.NearestFilter, + minFilter: a.NearestFilter, + format: a.RGBAIntegerFormat, + type: a.UnsignedIntType + }), this.target.scissorTest = !0, this.extSplats) { + const E = this.target.texture.clone(), i = this.target.texture.clone(); + i.format = a.RGBAFormat, i.type = a.UnsignedByteType, i.internalFormat = "RGBA8", this.target.textures = [this.target.texture, E, i]; + } else { + const E = this.target.texture.clone(); + E.format = a.RGBAFormat, E.type = a.UnsignedByteType, E.internalFormat = "RGBA8", this.target.textures = [this.target.texture, E]; + } + return !0; } - getNumSh() { - return this.extra.sh1 ? this.extra.sh2 ? this.extra.sh3 ? 3 : 2 : 1 : 0; + saveRenderState(A) { + return { + target: A.getRenderTarget(), + activeCubeFace: A.getActiveCubeFace(), + activeMipmapLevel: A.getActiveMipmapLevel(), + xrEnabled: A.xr.enabled, + autoClear: A.autoClear + }; } - setMaxSh(A) { - this.maxSh = A; + resetRenderState(A, I) { + A.setRenderTarget( + I.target, + I.activeCubeFace, + I.activeMipmapLevel + ), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; } - fetchSplat({ - index: A, - viewOrigin: I + // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, + // generating it if necessary and caching the result. + prepareProgramMaterial(A, I) { + const g = A ?? I; + if (!g) + throw new Error("Either generator or covGenerator must be provided"); + let B = BA.generatorProgram.get(g); + if (!B) { + const E = nA( + { index: "int" }, + {}, + ({ index: i }, o, { roots: D }) => { + if (A && (A.inputs.index = i), I && (I.inputs.index = i), this.extSplats) + if (this.covSplats) + if (I) { + const w = HQ(I.outputs.covsplat); + D.push(w); + } else if (A) { + const w = Og(A.outputs.gsplat), s = HQ(w); + D.push(s); + } else + throw new Error("Generator must be provided"); + else if (A) { + const w = eC(A.outputs.gsplat); + D.push(w); + } else + throw new Error("Generator must be provided"); + else { + if (this.covSplats) { + let w; + if (I) + w = I.outputs.covsplat; + else if (A) + w = Og(A.outputs.gsplat); + else + throw new Error("Generator must be provided"); + const s = CI( + Zg(w).outputs.center, + BA.viewCenterUniform + ), t = SA( + Zg(w).outputs.opacity, + IA("float", 0.5) + ); + w = IB({ + covsplat: w, + center: s, + opacity: t + }); + const G = kC( + w, + IA("vec4", [0, 1, uA, bA]) + ); + D.push(G); + } else if (A) { + const w = CI( + fA(A.outputs.gsplat).outputs.center, + BA.viewCenterUniform + ), s = SA( + fA(A.outputs.gsplat).outputs.opacity, + IA("float", 0.5) + ), t = BI({ + gsplat: A.outputs.gsplat, + center: w, + opacity: s + }), G = gB( + t, + IA("vec4", [0, 1, uA, bA]) + ); + D.push(G); + } else + throw new Error("Generator must be provided"); + if (!A) + throw new Error("Generator must be provided"); + } + if (A) { + const w = NC( + A.outputs.gsplat, + BA.viewCenterUniform, + BA.viewDirUniform, + BA.sortRadialUniform + ); + D.push(w); + } + if (I) { + const w = MC( + I.outputs.covsplat, + BA.viewCenterUniform, + BA.viewDirUniform, + BA.sortRadialUniform + ); + D.push(w); + } + } + ); + B = new CQ({ + graph: E, + inputs: { index: "_index" }, + outputs: {}, + template: this.extSplats ? BA.programExtTemplate : BA.programTemplate + // consoleLog: true, + }), BA.generatorProgram.set(g, B); + } + Object.assign(B.uniforms, { + targetLayer: { value: 0 }, + targetBase: { value: 0 }, + targetCount: { value: 0 } + }); + const C = B.prepareMaterial(); + return BA.fullScreenQuad.material = C, { program: B, material: C }; + } + generate({ + generator: A, + covGenerator: I, + base: g, + count: B, + renderer: C }) { - let g = _I(this.dyno, A); - if (this.hasRgbDir() && I) { - const B = uA(g).outputs.center, C = ag(iI(B, I)), { sh1Texture: E, sh2Texture: D, sh3Texture: i } = this.ensureShTextures(); - let { rgb: w } = Pw({ - coord: EB(A), - viewDir: C, - numSh: this.dynoNumSh, - sh1Texture: E, - sh2Texture: D, - sh3Texture: i, - shMax: this.dynoShMax - }); - w = qA(w, uA(g).outputs.rgb), g = CI({ gsplat: g, rgb: w }); + if (!this.target) + throw new Error("Target must be initialized with ensureGenerate"); + if (g + B > this.maxSplats) + throw new Error("Base + count exceeds maxSplats"); + const { program: E, material: i } = this.prepareProgramMaterial( + A, + I + ); + E.update(); + const o = this.saveRenderState(C), D = Math.ceil((g + B) / b) * b, w = b * vA; + for (i.uniforms.targetBase.value = g, i.uniforms.targetCount.value = B; g < D; ) { + const s = Math.floor(g / w); + i.uniforms.targetLayer.value = s; + const t = s * w, G = Math.floor((g - t) / b), c = Math.min( + vA, + Math.ceil((D - t) / b) + ); + this.target.scissor.set( + 0, + G, + b, + c - G + ), C.setRenderTarget(this.target, s), C.xr.enabled = !1, C.autoClear = !1, BA.fullScreenQuad.render(C), g += b * (c - G); } - return g; + return this.resetRenderState(C, o), { nextBase: D }; } - ensureShTextures() { - if (!this.extra.sh1) - return {}; - let A = this.extra.sh1Texture; - if (!A) { - let B = this.extra.sh1; - const { width: C, height: E, depth: D, maxSplats: i } = BA( - B.length / 2 - ); - if (B.length < i * 2) { - const s = new Uint32Array(i * 2); - s.set(B), this.extra.sh1 = s, B = s; + prepareGenerate({ + renderer: A, + scene: I, + time: g, + camera: B, + sortRadial: C, + renderSize: E, + previous: i, + lodInstances: o + }) { + var e; + this.viewToWorld.copy(B.matrixWorld), B.getWorldPosition(this.viewOrigin), B.getWorldDirection(this.viewDirection), BA.viewCenterUniform.value.copy(this.viewOrigin), BA.viewDirUniform.value.copy(this.viewDirection), BA.sortRadialUniform.value = C, this.time = g, this.deltaTime = g - i.time; + const D = []; + I.traverse((k) => { + k instanceof Sg && (!B.layers || B.layers.test(k.layers)) && D.push(k); + }); + const w = /* @__PURE__ */ new Set(); + I.traverseVisible((k) => { + if (k instanceof Wg) { + let R = k.parent; + for (; R != null && !(R instanceof zA); ) + R = R.parent; + R == null && w.add(k); } - const w = new G.DataArrayTexture(B, C, E, D); - w.format = G.RGIntegerFormat, w.type = G.UnsignedIntType, w.internalFormat = "RG32UI", w.needsUpdate = !0, A = new dA({ - value: w, - key: "sh1" - }), this.extra.sh1Texture = A; - } - if (!this.extra.sh2) - return { sh1Texture: A }; - let I = this.extra.sh2Texture; - if (!I) { - let B = this.extra.sh2; - const { width: C, height: E, depth: D, maxSplats: i } = BA( - B.length / 4 - ); - if (B.length < i * 4) { - const s = new Uint32Array(i * 4); - s.set(B), this.extra.sh2 = s, B = s; + }); + const s = Array.from(w); + for (const k of D) + try { + (e = k.frameUpdate) == null || e.call(k, { + renderer: A, + object: k, + time: this.time, + deltaTime: this.deltaTime, + viewToWorld: this.viewToWorld, + camera: B, + renderSize: E, + globalEdits: s, + lodIndices: o && k instanceof zA ? o.get(k) : void 0 + }); + } catch (R) { + console.error("frameUpdate error", R), k.generator = void 0, k.covGenerator = void 0, k.generatorError = R; } - const w = new G.DataArrayTexture(B, C, E, D); - w.format = G.RGBAIntegerFormat, w.type = G.UnsignedIntType, w.internalFormat = "RGBA32UI", w.needsUpdate = !0, I = new dA({ - value: w, - key: "sh2" - }), this.extra.sh2Texture = I; - } - if (!this.extra.sh3) - return { sh1Texture: A, sh2Texture: I }; - let g = this.extra.sh3Texture; - if (!g) { - let B = this.extra.sh3; - const { width: C, height: E, depth: D, maxSplats: i } = BA( - B.length / 4 - ); - if (B.length < i * 4) { - const s = new Uint32Array(i * 4); - s.set(B), this.extra.sh3 = s, B = s; + const t = []; + I.traverseVisible((k) => { + k instanceof Sg && (!B.layers || B.layers.test(k.layers)) && t.push(k); + }); + const G = t.map( + (k) => k.numSplats + ), { maxSplats: c, mapping: h } = this.generateMapping(G), y = i.mapping.reduce((k, R) => (k.set(R.node, R), k), /* @__PURE__ */ new Map()); + this.mapping = [], this.numSplats = 0, h.forEach(({ base: k, count: R }, N) => { + const U = t[N], M = y.get(U); + M && M.count !== U.numSplats && U.updateMappingVersion(); + const { generator: J, covGenerator: H } = U; + if ((J || H) && R > 0) { + const { version: n, mappingVersion: L } = U; + this.mapping.push({ + node: U, + generator: J, + covGenerator: H, + version: n, + mappingVersion: L, + base: k, + count: R + }), this.numSplats = Math.max(this.numSplats, k + R); } - const w = new G.DataArrayTexture(B, C, E, D); - w.format = G.RGBAIntegerFormat, w.type = G.UnsignedIntType, w.internalFormat = "RGBA32UI", w.needsUpdate = !0, g = new dA({ - value: w, - key: "sh3" - }), this.extra.sh3Texture = g; - } - return { sh1Texture: A, sh2Texture: I, sh3Texture: g }; - } - // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small, - // resize exponentially and copy over the original data. - // - // Typically you don't need to call this, because calling this.setSplat(index, ...) - // and this.pushSplat(...) will automatically call ensureSplats() so we have - // enough splats. - ensureSplats(A) { - const I = A <= this.maxSplats ? this.maxSplats : ( - // Grow exponentially to avoid frequent reallocations - Math.max(A, 2 * this.maxSplats) - ), g = this.packedArray ? this.packedArray.length / 4 : 0; - if (!this.packedArray || I > g) { - this.maxSplats = BA(I).maxSplats; - const B = new Uint32Array(this.maxSplats * 4); - this.packedArray && B.set(this.packedArray), this.packedArray = B; - } - return this.packedArray; - } - // Ensure the extra array for the given level is large enough to hold numSplats - ensureSplatsSh(A, I) { - let g, B; - if (A === 0) - return this.ensureSplats(I); - if (A === 1) - g = 2, B = "sh1"; - else if (A === 2) - g = 4, B = "sh2"; - else if (A === 3) - g = 4, B = "sh3"; - else - throw new Error(`Invalid level: ${A}`); - let C = this.extra[B] ? this.extra[B].length / g : 0; - const E = I <= C ? C : Math.max(I, 2 * C); - if (!this.extra[B] || E > C) { - C = BA(E).maxSplats; - const D = new Uint32Array(C * g); - this.extra[B] && D.set(this.extra[B]), this.extra[B] = D; - } - return this.extra[B]; - } - // Unpack the 16-byte Gsplat data at index into the Three.js components - // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, - // opacity: number 0..1, color: THREE.Color 0..1. - getSplat(A) { - if (!this.packedArray || A >= this.numSplats) - throw new Error("Invalid index"); - return Og(this.packedArray, A, this.splatEncoding); + }); + const { splatsUpdated: S, mappingUpdated: F } = i.checkVersions( + this.mapping + ); + return this.version = i.version + (S ? 1 : 0), this.mappingVersion = i.mappingVersion + (F ? 1 : 0), { + sameMapping: !F, + version: this.version, + mappingVersion: this.mappingVersion, + visibleGenerators: t, + generate: () => { + this.ensureGenerate({ maxSplats: c }); + for (const { node: k, base: R, count: N } of this.mapping) { + const { generator: U, covGenerator: M } = k; + (U || M) && N > 0 && this.generate({ generator: U, covGenerator: M, base: R, count: N, renderer: A }); + } + }, + readback: async () => { + const k = this.getTextures(); + this.readbackSplats.length === 0 && (this.readbackSplats = [ + new qA({ value: k[0], key: "extSplats" }), + new qA({ value: k[1], key: "extSplats" }) + ]), this.readbackSplats[0].value = k[0], this.readbackSplats[1].value = k[1], this.readback || (this.readback = new cg({ renderer: A })); + const R = this.readback, N = this.extSplats ? 8 : 4, U = R.ensureBuffer( + this.numSplats * N, + new Uint32Array(0) + ), M = nA( + { index: "int" }, + { rgba8: "vec4" }, + ({ index: J }) => ({ rgba8: new l({ + inTypes: { + index: "int", + extSplats1: "usampler2DArray", + extSplats2: "usampler2DArray" + }, + outTypes: { rgba8: "vec4" }, + inputs: { + index: J, + extSplats1: this.readbackSplats[0], + extSplats2: this.readbackSplats[1] + }, + statements: ({ inputs: n, outputs: L }) => this.extSplats ? z(` + int indexDiv8 = ${n.index} >> 3; + ivec3 coord = splatTexCoord(indexDiv8); + uvec4 packedData; + if ((${n.index} & 4) == 0) { + packedData = texelFetch(${n.extSplats1}, coord, 0); + } else { + packedData = texelFetch(${n.extSplats2}, coord, 0); + } + + int indexMod4 = ${n.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${L.rgba8} = uintToVec4(data); + `) : z(` + int indexDiv4 = ${n.index} >> 2; + ivec3 coord = splatTexCoord(indexDiv4); + uvec4 packedData = texelFetch(${n.extSplats1}, coord, 0); + + int indexMod4 = ${n.index} & 3; + uint data = (indexMod4 == 0) ? packedData.x + : (indexMod4 == 1) ? packedData.y + : (indexMod4 == 2) ? packedData.z + : packedData.w; + ${L.rgba8} = uintToVec4(data); + `) + }).outputs.rgba8 }) + ); + return await R.renderReadback({ + reader: M, + count: this.numSplats * N, + renderer: A, + readback: U + }); + } + }; } - // Set all PackedSplat components at index with the provided Gsplat attributes - // (can be the same objects returned by getSplat). Ensures there is capacity - // for at least index+1 Gsplats. - setSplat(A, I, g, B, C, E) { - const D = this.ensureSplats(A + 1); - nQ( - D, - A, - I.x, - I.y, - I.z, - g.x, - g.y, - g.z, - B.x, - B.y, - B.z, - B.w, - C, - E.r, - E.g, - E.b - ), this.numSplats = Math.max(this.numSplats, A + 1); + // Check if this accumulator has exactly the same generator mapping as + // the previous one. If so, we can reuse the Gsplat sort order. + checkVersions(A) { + if (this.mapping.length !== A.length) + return { splatsUpdated: !0, mappingUpdated: !0 }; + const I = this.mapping.some((B, C) => { + const E = A[C]; + return B.node !== E.node || B.base !== E.base || B.count !== E.count || B.mappingVersion !== E.mappingVersion; + }); + return I ? { splatsUpdated: !0, mappingUpdated: !0 } : { splatsUpdated: this.mapping.some((B, C) => B.version !== A[C].version), mappingUpdated: I }; } - // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on - // construction where you just want to iterate and create a collection of Gsplats. - pushSplat(A, I, g, B, C) { - const E = this.ensureSplats(this.numSplats + 1); - nQ( - E, - this.numSplats, - A.x, - A.y, - A.z, - I.x, - I.y, - I.z, - g.x, - g.y, - g.z, - g.w, - B, - C.r, - C.g, - C.b - ), ++this.numSplats; +}; +BA.viewCenterUniform = new UI({ value: new a.Vector3() }), BA.viewDirUniform = new UI({ value: new a.Vector3() }), BA.sortRadialUniform = new Mg({ value: !0 }), BA.emptyTexture = (() => { + const { width: A, height: I, depth: g, maxSplats: B } = iA(1), C = new Uint32Array(B * 4), E = new a.DataArrayTexture( + C, + A, + I, + g + ); + return E.format = a.RGBAIntegerFormat, E.type = a.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; +})(), BA.emptyTextures = [BA.emptyTexture, BA.emptyTexture], BA.programExtTemplate = new Gg( + yg().computeUvec4x2Vec4Template +), BA.programTemplate = new Gg( + yg().computeUvec4Vec4Template +), BA.generatorProgram = /* @__PURE__ */ new WeakMap(), BA.fullScreenQuad = new vQ( + new a.RawShaderMaterial({ visible: !1 }) +); +let dI = BA; +class XG extends a.InstancedBufferGeometry { + constructor() { + super(), this.setAttribute("position", new a.BufferAttribute(VG, 3)), this.setIndex(new a.BufferAttribute(WG, 1)); } - // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat - // and invoke the callback function with the Gsplat attributes. - forEachSplat(A) { - if (!(!this.packedArray || !this.numSplats)) - for (let I = 0; I < this.numSplats; ++I) { - const g = Og(this.packedArray, I, this.splatEncoding); - A( - I, - g.center, - g.scales, - g.quaternion, - g.opacity, - g.color - ); - } +} +const VG = new Float32Array([ + -1, + -1, + 0, + 1, + -1, + 0, + 1, + 1, + 0, + -1, + 1, + 0 +]), WG = new Uint16Array([0, 1, 2, 0, 2, 3]), oA = class oA extends a.Mesh { + constructor(A) { + if (!A) + throw new Error("SparkRenderer options are required"); + if (!A.renderer) + throw new Error("renderer is required in SparkRenderer options"); + const I = oA.makeUniforms(); + Object.assign(I, A.extraUniforms ?? {}); + const g = yg(), B = A.premultipliedAlpha ?? !0, C = new XG(), E = new a.ShaderMaterial({ + glslVersion: a.GLSL3, + vertexShader: A.vertexShader ?? g.splatVertex, + fragmentShader: A.fragmentShader ?? g.splatFragment, + uniforms: I, + premultipliedAlpha: B, + transparent: A.transparent ?? !0, + depthTest: A.depthTest ?? !0, + depthWrite: A.depthWrite ?? !1, + side: a.DoubleSide, + allowOverride: !1 + }); + super(C, E), this.renderSize = new a.Vector2(), this.lastFrame = -1, this.updateTimeoutId = -1, this.orderingTexture = null, this.maxSplats = 0, this.activeSplats = 0, this.accumulators = [], this.sorting = !1, this.sortDirty = !1, this.lastSortTime = 0, this.sortWorker = null, this.sortTimeoutId = -1, this.sortedCenter = new a.Vector3().setScalar(Number.NEGATIVE_INFINITY), this.sortedDir = new a.Vector3().setScalar(0), this.readback32 = new Uint32Array(0), this.lastLodRaycastTime = 0, this.lodWorker = null, this.lodMeshes = [], this.lodDirty = !1, this.lodIds = /* @__PURE__ */ new Map(), this.lodIdToSplats = /* @__PURE__ */ new Map(), this.lodInitQueue = [], this.lodInstances = /* @__PURE__ */ new Map(), this.lodUpdates = [], this.lastTraverseTime = 0, this.pagerId = 0, this.superXY = 1, this.flushAfterGenerate = !1, this.flushAfterRead = !1, this.readPause = 1, this.sortPause = 0, this.sortDelay = 0, this.pageSizeWarning = !1, this.material = E, this.uniforms = I, this.frustumCulled = !1, this.renderer = A.renderer, this.onDirty = A.onDirty, this.dirty = !0, this.autoUpdate = A.autoUpdate ?? !0, this.preUpdate = A.preUpdate ?? !0, this.maxStdDev = A.maxStdDev ?? Math.sqrt(8), this.gaussianK = A.gaussianK ?? 1, this.minPixelRadius = A.minPixelRadius ?? 0, this.maxPixelRadius = A.maxPixelRadius ?? 512, this.accumExtSplats = A.accumExtSplats ?? !1, this.covSplats = A.covSplats ?? !1, this.minAlpha = A.minAlpha ?? 0.5 * (1 / 255), this.enable2DGS = A.enable2DGS ?? !1, this.preBlurAmount = A.preBlurAmount ?? 0, this.blurAmount = A.blurAmount ?? 0.3, this.focalDistance = A.focalDistance ?? 0, this.apertureAngle = A.apertureAngle ?? 0, this.falloff = A.falloff ?? 1, this.clipXY = A.clipXY ?? 1.4, this.focalAdjustment = A.focalAdjustment ?? 1, this.sortRadial = A.sortRadial ?? !0, this.minSortIntervalMs = A.minSortIntervalMs ?? 0, this.enableLod = A.enableLod ?? !0, this.enableDriveLod = A.enableDriveLod ?? this.enableLod, this.enableLodFetching = A.enableLodFetching ?? !0, this.lodSplatCount = A.lodSplatCount, this.lodSplatScale = A.lodSplatScale ?? 1, this.lodRenderScale = A.lodRenderScale ?? 1, this.lodInflate = A.lodInflate ?? !1, this.lodTraverseMode = A.lodTraverseMode ?? "standard", this.pagedExtSplats = A.pagedExtSplats ?? !1; + const i = Vg() ? tg() ? 96 : 128 : 256; + this.maxPagedSplats = A.maxPagedSplats ?? i * 65536, this.numLodFetchers = A.numLodFetchers ?? 3, this.behindFoveate = A.behindFoveate ?? 0.2, this.coneFov0 = A.coneFov0 ?? 90, this.coneFov = A.coneFov ?? 120, this.coneFoveate = A.coneFoveate ?? 0.4, this.lodRaycast = A.lodRaycast === void 0 ? Vg() ? 1e4 : 25e3 : A.lodRaycast, this.lodRaycastIntervalMs = A.lodRaycastIntervalMs ?? 500, this.clock = A.clock ? JE(A.clock) : new a.Clock(); + const o = { + extSplats: this.accumExtSplats, + covSplats: this.covSplats + }; + this.display = new dI(o), this.current = this.display, this.accumulators.push(new dI(o)), this.accumulators.push(new dI(o)); + const D = this.renderer.getContext().getExtension("WEBGL_provoking_vertex"); + if (D && D.provokingVertexWEBGL( + D.FIRST_VERTEX_CONVENTION_WEBGL + ), A.target) { + const { + width: w, + height: s, + doubleBuffer: t, + superXY: G, + ...c + } = A.target, h = Math.max(1, Math.min(4, G ?? 1)); + if (w * h > 8192 || s * h > 8192) + throw new Error("Target size too large"); + this.superXY = h; + const y = w * h, S = s * h, F = { + format: a.RGBAFormat, + type: a.UnsignedByteType, + colorSpace: a.SRGBColorSpace, + ...c + }; + this.target = new a.WebGLRenderTarget( + y, + S, + F + ), t && (this.backTarget = new a.WebGLRenderTarget( + y, + S, + F + )); + } } - // Ensures our PackedSplats.target render target has enough space to generate - // maxSplats total Gsplats, and reallocate if not large enough. - ensureGenerate(A) { - if (this.target && (A ?? 1) <= this.maxSplats) - return !1; - this.target && this.target.dispose(); - const I = BA(A ?? 1), { width: g, height: B, depth: C } = I; - return this.maxSplats = I.maxSplats, this.target = new G.WebGLArrayRenderTarget(g, B, C, { - depthBuffer: !1, - stencilBuffer: !1, - generateMipmaps: !1, - magFilter: G.NearestFilter, - minFilter: G.NearestFilter - }), this.target.texture.format = G.RGBAIntegerFormat, this.target.texture.type = G.UnsignedIntType, this.target.texture.internalFormat = "RGBA32UI", this.target.scissorTest = !0, !0; + static makeUniforms() { + return { + // // number of active splats to render + // numSplats: { value: 0 }, + // Size of render viewport in pixels + renderSize: { value: new a.Vector2() }, + // Near and far plane distances + near: { value: 0.1 }, + far: { value: 1e3 }, + // SplatAccumulator to view transformation quaternion + renderToViewQuat: { value: new a.Quaternion() }, + // SplatAccumulator to view transformation translation + renderToViewPos: { value: new a.Vector3() }, + renderToViewBasis: { value: new a.Matrix3() }, + renderToViewOffset: { value: new a.Vector3() }, + // Maximum distance (in stddevs) from Gsplat center to render + maxStdDev: { value: 1 }, + // Generalized Gaussian k. The radial exponent is 2 * gaussianK. + gaussianK: { value: 1 }, + // Minimum pixel radius for splat rendering + minPixelRadius: { value: 0 }, + // Maximum pixel radius for splat rendering + maxPixelRadius: { value: 512 }, + // Minimum alpha value for splat rendering + minAlpha: { value: 0.00196078431372549 }, + // Enable interpreting 0-thickness Gsplats as 2DGS + enable2DGS: { value: !1 }, + // Enable ray-splat max response evaluation + // enableRayEval: { value: false }, + // Inflate LoD splats so that opacity <= 1.0 + lodInflate: { value: !1 }, + // Add to projected 2D splat covariance diagonal (thickens and brightens) + preBlurAmount: { value: 0 }, + // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) + blurAmount: { value: 0.3 }, + // Depth-of-field distance to focal plane + focalDistance: { value: 0 }, + // Full-width angle of aperture opening (in radians) + apertureAngle: { value: 0 }, + // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", + // 1 is normal e^-x^2 falloff. + falloff: { value: 1 }, + // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds + clipXY: { value: 1.4 }, + // Debug renderSize scale factor + focalAdjustment: { value: 1 }, + // Whether to encode Gsplat with linear RGB (for environment mapping) + encodeLinear: { value: !1 }, + // Back-to-front sort ordering of splat indices + ordering: { type: "t", value: oA.emptyOrdering }, + enableExtSplats: { value: !1 }, + enableCovSplats: { value: !1 }, + // Gsplat collection to render + extSplats: { type: "t", value: dI.emptyTexture }, + extSplats2: { type: "t", value: dI.emptyTexture }, + // Time in seconds for time-based effects + time: { value: 0 }, + // Delta time in seconds since last frame + deltaTime: { value: 0 }, + // Debug flag that alternates each frame + debugFlag: { value: !1 } + }; } - // Given an array of splatCounts (.numSplats for each - // SplatGenerator/SplatMesh in the scene), compute a - // "mapping layout" in the composite array of generated outputs. - generateMapping(A) { - let I = 0; - const g = A.map((B) => { - const C = I, E = Math.ceil(B / P) * P; - return I += E, { base: C, count: B }; - }); - return { maxSplats: I, mapping: g }; + dispose() { + this.target && (this.target.dispose(), this.target = void 0), this.backTarget && (this.backTarget.dispose(), this.backTarget = void 0), this.orderingTexture && (this.orderingTexture.dispose(), this.orderingTexture = null); + const A = /* @__PURE__ */ new Set(); + A.add(this.display), A.add(this.current); + for (const g of this.accumulators) + A.add(g); + for (const g of A) + g.dispose(); + const I = this.lodInstances.values(); + this.lodInstances.clear(); + for (const g of I) + g.texture.dispose(); + this.sortWorker && (this.sortWorker.dispose(), this.sortWorker = null), this.lodWorker && (this.lodWorker.dispose(), this.lodWorker = null), this.pager && (this.pager.dispose(), this.pager = void 0); } - // Returns a THREE.DataArrayTexture representing the PackedSplats content as - // a Uint32x4 data array texture (2048 x 2048 x depth in size) - getTexture() { - return this.target ? this.target.texture : this.source || this.packedArray ? this.maybeUpdateSource() : YA.getEmptyArray; + setDirty() { + var A; + this.dirty || (this.dirty = !0, (A = this.onDirty) == null || A.call(this)); } - // Check if source texture needs to be created/updated - maybeUpdateSource() { - if (!this.packedArray) - throw new Error("No packed splats"); - if (this.needsUpdate || !this.source) { - if (this.needsUpdate = !1, this.source) { - const { width: A, height: I, depth: g } = this.source.image; - this.maxSplats !== A * I * g && (this.source.dispose(), this.source = null); - } - if (this.source) - this.packedArray.buffer !== this.source.image.data.buffer && (this.source.image.data = new Uint8Array(this.packedArray.buffer)); - else { - const { width: A, height: I, depth: g } = BA(this.maxSplats); - this.source = new G.DataArrayTexture( - this.packedArray, - A, - I, - g - ), this.source.format = G.RGBAIntegerFormat, this.source.type = G.UnsignedIntType, this.source.internalFormat = "RGBA32UI", this.source.needsUpdate = !0; + onBeforeRender(A, I, g) { + var y; + const B = oA.sparkOverride ?? this, C = A.info.render.frame, E = C !== B.lastFrame; + B.lastFrame = C; + const i = A.getRenderTarget(), o = jG(i); + if (i) { + if (B.renderSize.set( + i.width, + i.height + ), o && B.renderSize.x === 1 && B.renderSize.y === 1) { + const S = (y = A.xr.getSession()) == null ? void 0 : y.renderState.baseLayer; + S && (B.renderSize.x = S.framebufferWidth, B.renderSize.y = S.framebufferHeight); } - this.source.needsUpdate = !0; + } else + A.getDrawingBufferSize(B.renderSize); + this.uniforms.renderSize.value.copy(B.renderSize); + const D = g; + this.uniforms.near.value = D.near, this.uniforms.far.value = D.far; + const w = this.geometry; + w.instanceCount = B.activeSplats; + const s = new a.Matrix4(); + this.display.extSplats || s.makeTranslation(B.display.viewOrigin); + const c = g.matrixWorld.clone().invert().multiply(s); + c.decompose( + this.uniforms.renderToViewPos.value, + this.uniforms.renderToViewQuat.value, + new a.Vector3() + ), this.uniforms.renderToViewBasis.value.setFromMatrix4(c), this.uniforms.maxStdDev.value = B.maxStdDev, this.uniforms.gaussianK.value = B.gaussianK, this.uniforms.minPixelRadius.value = B.minPixelRadius, this.uniforms.maxPixelRadius.value = B.maxPixelRadius, this.uniforms.minAlpha.value = B.minAlpha, this.uniforms.enable2DGS.value = B.enable2DGS, this.uniforms.lodInflate.value = B.lodInflate, this.uniforms.preBlurAmount.value = B.preBlurAmount, this.uniforms.blurAmount.value = B.blurAmount, this.uniforms.focalDistance.value = B.focalDistance, this.uniforms.apertureAngle.value = B.apertureAngle, this.uniforms.falloff.value = B.falloff, this.uniforms.clipXY.value = B.clipXY, this.uniforms.focalAdjustment.value = B.focalAdjustment; + const h = i === null ? A.outputColorSpace : o ? i.texture.colorSpace : a.ColorManagement.workingColorSpace; + if (this.uniforms.encodeLinear.value = h !== a.SRGBColorSpace, this.uniforms.ordering.value = B.orderingTexture ?? oA.emptyOrdering, this.uniforms.enableExtSplats.value = this.display.extSplats, this.uniforms.enableCovSplats.value = this.display.covSplats, this.display.extSplats) { + const S = B.display.getTextures(); + this.uniforms.extSplats.value = S[0], this.uniforms.extSplats2.value = S[1]; + } else { + const S = B.display.getTextures(); + this.uniforms.extSplats.value = S[0], this.uniforms.extSplats2.value = S[0]; } - return this.source; - } - // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator, - // generating it if necessary and caching the result. - prepareProgramMaterial(A) { - let I = YA.generatorProgram.get(A); - if (!I) { - const B = cA( - { index: "int" }, - {}, - ({ index: C }, E, { roots: D }) => { - A.inputs.index = C; - const i = A.outputs.gsplat, w = wB( - i, - this.dynoRgbMinMaxLnScaleMinMax - ); - D.push(w); - } - ); - YA.programTemplate || (YA.programTemplate = new Fg( - Ag().computeUvec4Template - )), I = new DQ({ - graph: B, - inputs: { index: "_index" }, - outputs: { output: "target" }, - template: YA.programTemplate - }), Object.assign(I.uniforms, { - targetLayer: { value: 0 }, - targetBase: { value: 0 }, - targetCount: { value: 0 } - }), YA.generatorProgram.set(A, I); + if (this.uniforms.time.value = B.display.time, this.uniforms.deltaTime.value = B.display.deltaTime, this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1, B.autoUpdate && E) { + const S = B.preUpdate && !A.xr.isPresenting, F = A.xr.isPresenting ? A.xr.getCamera() : g; + S ? B.updateInternal({ + scene: I, + camera: F, + autoUpdate: !0 + }) : B.updateTimeoutId === -1 && (B.updateTimeoutId = setTimeout(() => { + B.updateTimeoutId = -1, B.updateInternal({ + scene: I, + camera: F, + autoUpdate: !0 + }); + }, 1)); } - const g = I.prepareMaterial(); - return YA.fullScreenQuad.material = g, { program: I, material: g }; + B.dirty = !1; } - saveRenderState(A) { - return { - target: A.getRenderTarget(), - xrEnabled: A.xr.enabled, - autoClear: A.autoClear - }; + clearSplats() { + this.activeSplats = 0, this.display.numSplats = 0, this.setDirty(); } - resetRenderState(A, I) { - A.setRenderTarget(I.target), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; + async update({ + scene: A, + camera: I + }) { + await this.updateInternal({ scene: A, camera: I, autoUpdate: !1 }); } - // Executes a dyno program specified by generator which is any DynoBlock that - // maps { index: "int" } to { gsplat: Gsplat }. This is called in - // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for - // SplatGenerator instances whose version is newer than what was generated - // for it last time. - generate({ - generator: A, - base: I, - count: g, - renderer: B + // /** + // * Provide additional cameras to prefetch paged splat chunks without + // * affecting main LOD selection. + // */ + // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) { + // const next = cameras?.filter(Boolean) ?? []; + // const sameCameras = + // this.prefetchCameras.length === next.length && + // this.prefetchCameras.every((camera, index) => camera === next[index]); + // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) { + // return; + // } + // this.prefetchCameras = next; + // this.prefetchLodScale = lodScaleMultiplier; + // this.invalidatePrefetchCache(); + // } + // /** + // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are + // * added or removed from the scene. + // */ + // invalidatePrefetchCache() { + // this.prefetchMeshesCacheScene = undefined; + // } + async updateInternal({ + scene: A, + camera: I, + autoUpdate: g }) { - if (!this.target) - throw new Error("Target must be initialized with ensureSplats"); - if (I + g > this.maxSplats) - throw new Error("Base + count exceeds maxSplats"); - const { program: C, material: E } = this.prepareProgramMaterial(A); - C.update(); - const D = this.saveRenderState(B), i = Math.ceil((I + g) / P) * P, w = P * XA; - for (E.uniforms.targetBase.value = I, E.uniforms.targetCount.value = g; I < i; ) { - const s = Math.floor(I / w); - E.uniforms.targetLayer.value = s; - const o = s * w, y = Math.floor((I - o) / P), h = Math.min( - XA, - Math.ceil((i - o) / P) + const B = this.renderer, C = this.time ?? this.clock.getElapsedTime(), E = I.getWorldPosition(new a.Vector3()), i = I.getWorldDirection(new a.Vector3()), o = E.distanceTo(this.sortedCenter) > 1e-3 || i.dot(this.sortedDir) < 0.999, D = this.accumulators.pop(); + if (!D) + throw new Error("No next accumulator"); + if (D === this.current) + throw new Error( + "Next accumulator is the same as the current accumulator" + ); + const { version: w, mappingVersion: s, visibleGenerators: t, generate: G } = D.prepareGenerate({ + renderer: B, + scene: A, + time: C, + camera: I, + sortRadial: this.sortRadial ?? !0, + renderSize: this.renderSize, + previous: this.current, + lodInstances: this.enableLod ? this.lodInstances : void 0 + }); + let c = !0; + const h = o || w !== this.current.version, y = s !== this.display.mappingVersion; + g && !h && (c = !1), y && this.sorting && (c = !1), c ? (G(), this.flushAfterGenerate && B.getContext().flush(), this.display.mappingVersion === D.mappingVersion ? (this.accumulators.push(this.display), this.display = D) : this.display !== this.current && this.accumulators.push(this.current), this.current = D, this.sortDirty = !0, this.setDirty()) : this.accumulators.push(D), this.enableDriveLod && this.driveLod({ visibleGenerators: t, camera: I, scene: A }), await this.driveSort(); + } + async driveSort() { + if (this.sorting || !this.sortDirty) + return; + this.sortTimeoutId !== -1 && (clearTimeout(this.sortTimeoutId), this.sortTimeoutId = -1); + const A = performance.now(), I = this.lastSortTime ? this.lastSortTime + this.minSortIntervalMs : A; + if (A < I) { + this.sortTimeoutId = setTimeout(() => { + this.sortTimeoutId = -1, this.driveSort(); + }, I - A); + return; + } + this.sorting = !0, this.sortDirty = !1, this.lastSortTime = A, this.readPause > 0 && await new Promise((s) => setTimeout(s, this.readPause)); + const g = this.current; + this.sortedCenter.copy(g.viewOrigin), this.sortedDir.copy(g.viewDirection); + const { numSplats: B, maxSplats: C } = g, E = Math.max(1, Math.ceil(C / 16384)), i = E * 16384; + this.maxSplats = Math.max(this.maxSplats, i); + const o = new Uint32Array(this.maxSplats), D = cg.ensureBuffer(C, this.readback32); + this.readback32 = D, await this.readbackDepth({ + current: g, + renderer: this.renderer, + numSplats: B, + readback: D + }), this.sortPause > 0 && await new Promise((s) => setTimeout(s, this.sortPause)), this.sortWorker || (this.sortWorker = new kg()); + const w = await this.sortWorker.call("sortSplats32", { + numSplats: B, + readback: D, + ordering: o + }); + if (this.sortDelay > 0 && await new Promise((s) => setTimeout(s, this.sortDelay)), this.readback32 = w.readback, this.activeSplats = w.activeSplats, this.orderingTexture && E > this.orderingTexture.image.height && (this.orderingTexture.dispose(), this.orderingTexture = null), this.orderingTexture) { + const s = this.renderer; + s.properties.has(this.orderingTexture) ? sB( + s, + this.orderingTexture, + 4096, + E, + w.ordering + ) : this.orderingTexture.needsUpdate = !0; + } else { + const s = new a.DataTexture( + w.ordering, + 4096, + E, + a.RGBAIntegerFormat, + a.UnsignedIntType ); - this.target.scissor.set( - 0, - y, - P, - h - y - ), B.setRenderTarget(this.target, s), B.xr.enabled = !1, B.autoClear = !1, YA.fullScreenQuad.render(B), I += P * (h - y); + s.internalFormat = "RGBA32UI", s.needsUpdate = !0, this.orderingTexture = s; } - return this.resetRenderState(B, D), { nextBase: i }; + this.current.mappingVersion === g.mappingVersion && this.current.mappingVersion !== this.display.mappingVersion && (this.accumulators.push(this.display), this.display = this.current), this.sorting = !1, this.setDirty(), this.driveSort(); } - disposeLodSplats() { - this.lodSplats && (this.lodSplats.dispose(), this.lodSplats = void 0); + ensureLodWorker() { + return this.lodWorker || (this.lodWorker = new kg()), this.lodWorker; } - async createLodSplats({ - rgbaArray: A, - quality: I - } = {}) { - const g = typeof this.lod == "number" ? Math.max(1.1, Math.min(2, this.lod)) : I ? 1.75 : 1.5, B = this.packedArray.slice(), C = A ? (await A.getArray()).slice() : void 0, E = { - sh1: this.extra.sh1 ? this.extra.sh1.slice() : void 0, - sh2: this.extra.sh2 ? this.extra.sh2.slice() : void 0, - sh3: this.extra.sh3 ? this.extra.sh3.slice() : void 0 - }, D = await BQ.withWorker(async (w) => await w.call( - I ? "qualityLodPackedSplats" : "tinyLodPackedSplats", - { - numSplats: this.numSplats, - packedArray: B, - extra: E, - lodBase: g, - rgba: C, - encoding: this.splatEncoding ?? cg - } - )), i = new YA(D); - this.lodSplats && this.lodSplats.dispose(), this.lodSplats = i, this.nonLod = !0, this.lod = I ? "quality" : !0; + defaultSplatTarget() { + return DB() ? 5e5 : ME() ? 75e4 : iB() ? 1e6 : tg() ? 15e5 : 25e5; } - extractSplats(A, I) { - const g = BA(A.length).maxSplats, B = new YA({ maxSplats: g }); - for (let C = 0; C < A.length; C++) { - const E = this.getSplat(A[C]); - if (I) { - let D = (A[C] >>> 16) * 0.61803398875; - D = D - Math.floor(D); - const i = Math.max(0, Math.min(1, Math.abs(D * 6 - 3) - 1)), w = Math.max(0, Math.min(1, Math.abs(D * 6 + 1) - 1)), s = Math.max(0, Math.min(1, Math.abs(D * 6 - 1) - 1)); - E.color.r *= i, E.color.g *= w, E.color.b *= s; + driveLod({ + visibleGenerators: A, + camera: I, + scene: g + }) { + var G, c; + const B = this.defaultSplatTarget(), E = (this.lodSplatCount ?? B) * this.lodSplatScale; + let i = 0; + if (I instanceof a.PerspectiveCamera) + i = 2 * Math.tan(0.5 * I.fov * Math.PI / 180) / this.renderSize.y; + else if (I instanceof a.OrthographicCamera) { + const h = (I.top - I.bottom) / I.zoom, y = (I.right - I.left) / I.zoom, S = h / Math.max(1, this.renderSize.y), F = y / Math.max(1, this.renderSize.x); + i = Math.min(F, S); + } + i *= this.lodRenderScale; + const o = new a.Vector3(), D = new a.Quaternion(); + if (this.current.viewToWorld.decompose(o, D, new a.Vector3()), this.lodPosOverride && o.copy(this.lodPosOverride), this.lodQuatOverride && D.copy(this.lodQuatOverride).normalize(), this.lastLod) { + (this.lastLod.pixelScaleLimit !== i || this.lastLod.maxSplats !== E) && (this.lodDirty = !0); + const h = o.distanceTo(this.lastLod.pos), y = Math.max(0, 1 - h / 1), S = D.dot(this.lastLod.quat), F = Math.max(0, 1 - (1 - S) / 0.01); + y * F < 0.999 && (this.lodDirty = !0); + } + const w = this.enableLod ? A.filter((h) => { + var y, S; + return h instanceof zA && (((y = h.packedSplats) == null ? void 0 : y.lodSplats) || ((S = h.extSplats) == null ? void 0 : S.lodSplats) || h.paged) && h.enableLod !== !1; + }) : [], s = w.some((h) => h.paged); + this.lodMeshes.length !== w.length ? this.lodDirty = !0 : w.some( + (h, y) => h !== this.lodMeshes[y].mesh || h.version > this.lodMeshes[y].version + ) && (this.lodDirty = !0), this.lodMeshes = w.map((h) => ({ + mesh: h, + version: h.version + 1 + })), this.lodInitQueue = []; + const t = performance.now(); + for (const h of w) { + const y = ((G = h.packedSplats) == null ? void 0 : G.lodSplats) ?? ((c = h.extSplats) == null ? void 0 : c.lodSplats) ?? h.paged; + if (y) { + const S = this.lodIds.get(y); + S ? S.lastTouched = t : this.lodInitQueue.push(y); } - B.pushSplat( - E.center, - E.scales, - E.quaternion, - E.opacity, - E.color - ); } - return B; - } -}; -YA.getEmptyArray = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(), YA.programTemplate = null, YA.generatorProgram = /* @__PURE__ */ new WeakMap(), YA.fullScreenQuad = new VQ( - new G.RawShaderMaterial({ visible: !1 }) -), YA.emptyUint32x4 = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 4), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGBAIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RGBA32UI", E.needsUpdate = !0, E; -})(), YA.emptyUint32x2 = (() => { - const { width: A, height: I, depth: g, maxSplats: B } = BA(1), C = new Uint32Array(B * 2), E = new G.DataArrayTexture( - C, - A, - I, - g - ); - return E.format = G.RGIntegerFormat, E.type = G.UnsignedIntType, E.internalFormat = "RG32UI", E.needsUpdate = !0, E; -})(); -let $A = YA; -class MB extends x { - constructor({ packedSplats: A } = {}) { - super({ - key: "packedSplats", - type: tg, - globals: () => [CQ], - value: { - textureArray: $A.getEmptyArray, - numSplats: 0, - rgbMinMaxLnScaleMinMax: new G.Vector4( - 0, - 1, - pA, - fA - ), - lodOpacity: !1 - }, - update: (I) => { - var g, B, C, E, D, i, w, s, o, y, h, k; - return I.textureArray = ((g = this.packedSplats) == null ? void 0 : g.getTexture()) ?? $A.getEmptyArray, I.numSplats = ((B = this.packedSplats) == null ? void 0 : B.numSplats) ?? 0, I.rgbMinMaxLnScaleMinMax.set( - ((E = (C = this.packedSplats) == null ? void 0 : C.splatEncoding) == null ? void 0 : E.rgbMin) ?? 0, - ((i = (D = this.packedSplats) == null ? void 0 : D.splatEncoding) == null ? void 0 : i.rgbMax) ?? 1, - ((s = (w = this.packedSplats) == null ? void 0 : w.splatEncoding) == null ? void 0 : s.lnScaleMin) ?? pA, - ((y = (o = this.packedSplats) == null ? void 0 : o.splatEncoding) == null ? void 0 : y.lnScaleMax) ?? fA - ), I.lodOpacity = ((k = (h = this.packedSplats) == null ? void 0 : h.splatEncoding) == null ? void 0 : k.lodOpacity) ?? !1, I; + this.ensureLodWorker().tryExclusive(async (h) => { + if (s && !this.pager) { + this.pager = new MI({ + renderer: this.renderer, + extSplats: this.pagedExtSplats, + maxSplats: this.maxPagedSplats, + numFetchers: this.numLodFetchers + }); + const { lodId: y } = await h.call("newLodTree", { + capacity: this.pager.maxSplats + }); + this.pagerId = y; } - }), this.packedSplats = A; - } -} -const BR = oA(` - vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) { - // Extract sint7 values packed into 2 x uint32 - vec3 sh1_0 = vec3(ivec3( - int(packedData.x << 25u) >> 25, - int(packedData.x << 18u) >> 25, - int(packedData.x << 11u) >> 25 - )); - vec3 sh1_1 = vec3(ivec3( - int(packedData.x << 4u) >> 25, - int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25, - int(packedData.y << 22u) >> 25 - )); - vec3 sh1_2 = vec3(ivec3( - int(packedData.y << 15u) >> 25, - int(packedData.y << 8u) >> 25, - int(packedData.y << 1u) >> 25 - )); - - vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y) - + sh1_1 * (0.4886025 * viewDir.z) - + sh1_2 * (-0.4886025 * viewDir.x); - return rgb * (sh1Max / 63.0); + if (this.pager) + for (const { mesh: y } of this.lodMeshes) + y.paged && !y.paged.pager && (y.paged.pager = this.pager); + if (this.lodInitQueue.length > 0) { + const y = this.lodInitQueue; + for (this.lodInitQueue = []; y.length > 0; ) { + const S = y.shift(); + S && (await this.initLodTree(h, S), this.lodDirty = !0); + } + } + if (this.pager) { + const y = this.pager.consumeLodTreeUpdates(); + for (const { splats: S, page: F, chunk: e, numSplats: k, lodTree: R } of y) { + const N = this.lodIds.get(S); + N && (R && e === 0 && (N.rootPage = F), this.lodUpdates.push({ + lodId: N.lodId, + pageBase: F * this.pager.pageSplats, + chunkBase: e * this.pager.pageSplats, + count: k, + lodTreeData: R + })); + } + } + if (this.lodUpdates.length > 0) { + const y = this.lodUpdates; + this.lodUpdates = [], await h.call("updateLodTrees", { ranges: y }), this.lodDirty = !0; + } + if (this.lodDirty) { + const y = performance.now(), S = new a.Vector3(); + if (this.lastLod) { + const F = Math.max(1, y - this.lastLod.timestamp); + S.copy(o).sub(this.lastLod.pos).multiplyScalar(this.lastTraverseTime / F); + } + this.lastLod = { + pos: o, + quat: D, + pixelScaleLimit: i, + maxSplats: E, + timestamp: y + }, this.lodDirty = !1, await this.updateLodInstances( + h, + S, + w, + E, + o, + D, + i + ), this.currentLod = this.lastLod, this.setDirty(); + } + await this.cleanupLodTrees(h); + }); } -`), CR = oA(` - vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) { - // Extract sint8 values packed into 4 x uint32 - vec3 sh2_0 = vec3(ivec3( - int(packedData.x << 24u) >> 24, - int(packedData.x << 16u) >> 24, - int(packedData.x << 8u) >> 24 - )); - vec3 sh2_1 = vec3(ivec3( - int(packedData.x) >> 24, - int(packedData.y << 24u) >> 24, - int(packedData.y << 16u) >> 24 - )); - vec3 sh2_2 = vec3(ivec3( - int(packedData.y << 8u) >> 24, - int(packedData.y) >> 24, - int(packedData.z << 24u) >> 24 - )); - vec3 sh2_3 = vec3(ivec3( - int(packedData.z << 16u) >> 24, - int(packedData.z << 8u) >> 24, - int(packedData.z) >> 24 - )); - vec3 sh2_4 = vec3(ivec3( - int(packedData.w << 24u) >> 24, - int(packedData.w << 16u) >> 24, - int(packedData.w << 8u) >> 24 - )); - - vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y) - + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z) - + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y)) - + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z) - + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y)); - return rgb * (sh2Max / 127.0); + async initLodTree(A, I) { + if (I instanceof hI || I instanceof sI) { + const { lodId: g } = await A.call("initLodTree", { + numSplats: I.numSplats ?? 0, + lodTree: I.extra.lodTree.slice() + }); + this.lodIds.set(I, { lodId: g, lastTouched: performance.now() }), this.lodIdToSplats.set(g, I); + } else { + const { lodId: g } = await A.call("newSharedLodTree", { + lodId: this.pagerId + }); + this.lodIds.set(I, { lodId: g, lastTouched: performance.now() }), this.lodIdToSplats.set(g, I); + } } -`), ER = oA(` - vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) { - // Extract sint6 values packed into 4 x uint32 - vec3 sh3_0 = vec3(ivec3( - int(packedData.x << 26u) >> 26, - int(packedData.x << 20u) >> 26, - int(packedData.x << 14u) >> 26 - )); - vec3 sh3_1 = vec3(ivec3( - int(packedData.x << 8u) >> 26, - int(packedData.x << 2u) >> 26, - int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26 - )); - vec3 sh3_2 = vec3(ivec3( - int(packedData.y << 22u) >> 26, - int(packedData.y << 16u) >> 26, - int(packedData.y << 10u) >> 26 - )); - vec3 sh3_3 = vec3(ivec3( - int(packedData.y << 4u) >> 26, - int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26, - int(packedData.z << 24u) >> 26 - )); - vec3 sh3_4 = vec3(ivec3( - int(packedData.z << 18u) >> 26, - int(packedData.z << 12u) >> 26, - int(packedData.z << 6u) >> 26 - )); - vec3 sh3_5 = vec3(ivec3( - int(packedData.z) >> 26, - int(packedData.w << 26u) >> 26, - int(packedData.w << 20u) >> 26 - )); - vec3 sh3_6 = vec3(ivec3( - int(packedData.w << 14u) >> 26, - int(packedData.w << 8u) >> 26, - int(packedData.w << 2u) >> 26 - )); - - float xx = viewDir.x * viewDir.x; - float yy = viewDir.y * viewDir.y; - float zz = viewDir.z * viewDir.z; - float xy = viewDir.x * viewDir.y; - float yz = viewDir.y * viewDir.z; - float zx = viewDir.z * viewDir.x; - - vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy)) - + sh3_1 * (2.8906114 * xy * viewDir.z) + - + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy)) - + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) - + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy)) - + sh3_5 * (1.4453057 * viewDir.z * (xx - yy)) - + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy)); - return rgb * (sh3Max / 31.0); + async updateLodInstances(A, I, g, B, C, E, i) { + const o = /* @__PURE__ */ new Map(), D = new a.Matrix4().compose( + C, + E, + new a.Vector3().setScalar(1) + ), w = g.reduce( + (S, F) => { + var N, U; + o.set(F.uuid, F); + const e = F.matrixWorld.clone().invert().multiply(D), k = ((N = F.packedSplats) == null ? void 0 : N.lodSplats) ?? ((U = F.extSplats) == null ? void 0 : U.lodSplats) ?? F.paged; + if (!k) + return S; + const R = this.lodIds.get(k); + return !R || this.pager && F.paged && R.rootPage === void 0 || (S[F.uuid] = { + instanceId: F.uuid, + lodId: R.lodId, + rootPage: R.rootPage, + viewToObjectCols: e.elements, + lodScale: F.lodScale, + behindFoveate: F.behindFoveate ?? this.behindFoveate, + coneFov0: F.coneFov0 ?? this.coneFov0, + coneFov: F.coneFov ?? this.coneFov, + coneFoveate: F.coneFoveate ?? this.coneFoveate + }), S; + }, + {} + ), s = performance.now(), t = await A.call("traverseLodTrees", { + maxSplats: B, + pixelScaleLimit: i, + lastPixelLimit: this.lastPixelLimit, + instances: w, + traverseMode: this.lodTraverseMode + }); + this.lastTraverseTime = performance.now() - s; + const { keyIndices: G, chunks: c, pixelLimit: h } = t; + this.lastPixelLimit = h; + const y = Object.values(G).reduce( + (S, { numSplats: F }) => S + F, + 0 + ); + if (this.updateLodIndices(o, G), this.pager) { + this.pager.processUploads(); + const S = g.map((F) => { + if (!F.paged || !this.pager) + return null; + const e = F.getWorldPosition(new a.Vector3()); + return { + splats: F.paged, + distance: e.distanceTo(C) + }; + }).filter((F) => F !== null); + !this.pageSizeWarning && S.length > this.pager.maxPages && (this.pageSizeWarning = !0, console.warn( + `# paged SplatMeshes exceeds maxPages: ${S.length} > ${this.pager.maxPages}` + )), S.sort((F, e) => F.distance - e.distance), this.pager.fetchPriority = S.map(({ splats: F }) => ({ + splats: F, + chunk: 0 + })); + for (const [F, e] of c) { + const k = this.lodIdToSplats.get(F); + k instanceof ag && e !== 0 && this.pager.fetchPriority.push({ splats: k, chunk: e }); + } + this.pager.autoDrive = this.enableLodFetching, this.enableLodFetching && this.pager.driveFetchers(); + } + if (this.lodRaycast && performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs) { + this.lastLodRaycastTime = performance.now(); + const S = performance.now(), F = await A.call("traverseLodTrees", { + maxSplats: Math.min(this.lodRaycast, Math.round(y * 0.1)), + pixelScaleLimit: i, + instances: w + }); + performance.now() - S; + const { keyIndices: e } = F; + Object.values(e).reduce( + (k, { numSplats: R }) => k + R, + 0 + ); + for (const [k, R] of Object.entries(e)) { + const N = o.get(k); + N.raycastIndices = R; + } + } } -`); -function Pw({ - coord: Q, - viewDir: A, - numSh: I, - sh1Texture: g, - sh2Texture: B, - sh3Texture: C, - shMax: E -}) { - return new d({ - inTypes: { - coord: "ivec3", - viewDir: "vec3", - numSh: "int", - sh1Texture: "usampler2DArray", - sh2Texture: "usampler2DArray", - sh3Texture: "usampler2DArray", - shMax: "vec3" - }, - outTypes: { rgb: "vec3" }, - inputs: { - coord: Q, - viewDir: A, - numSh: I, - sh1Texture: g, - sh2Texture: B, - sh3Texture: C, - shMax: E - }, - globals: () => [ - BR, - CR, - ER - ], - statements: ({ inputs: D, outputs: i }) => { - const w = ["vec3 rgb = vec3(0.0);"]; - return D.sh1Texture && (w.push( - ...z(` - if (${D.numSh} >= 1) { - vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${D.sh1Texture}, ${D.coord}, 0).rg, ${D.viewDir}, ${D.shMax}.x); - rgb += sh1Rgb; - `) - ), D.sh2Texture && (w.push( - ...z(` - if (${D.numSh} >= 2) { - vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${D.sh2Texture}, ${D.coord}, 0), ${D.viewDir}, ${D.shMax}.y); - rgb += sh2Rgb; - `) - ), D.sh3Texture && w.push( - ...z(` - if (${D.numSh} >= 3) { - vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${D.sh3Texture}, ${D.coord}, 0), ${D.viewDir}, ${D.shMax}.z); - rgb += sh3Rgb; - } - `) - ), w.push("}")), w.push("}")), w.push(`${i.rgb} = rgb;`), w; + async cleanupLodTrees(A) { + var C; + const g = performance.now(); + let B = null; + for (const [E, i] of this.lodIds.entries()) + (B == null || i.lastTouched < B.lastTouched) && (B = { + splats: E, + lastTouched: i.lastTouched, + lodId: i.lodId + }); + if (!(!B || B.lastTouched > g - 3e3)) { + this.lodIds.delete(B.splats), this.lodIdToSplats.delete(B.lodId); + for (const [E, i] of this.lodInstances.entries()) + i.lodId === B.lodId && (i.texture.dispose(), this.lodInstances.delete(E)); + B.splats instanceof ag && ((C = this.pager) == null || C.removeSplats(B.splats)), await A.call("disposeLodTree", { lodId: B.lodId }); } - }).outputs; -} -const JI = class JI { - constructor(A) { - if (this.lastTime = null, this.encodeLinear = !1, this.superXY = 1, this.display = null, this.sorting = null, this.pending = null, this.sortingCheck = !1, this.readback16 = new Uint16Array(0), this.readback32 = new Uint32Array(0), this.spark = A.spark, this.camera = A.camera, this.viewToWorld = A.viewToWorld ?? new G.Matrix4(), A.target) { - const { width: I, height: g, doubleBuffer: B } = A.target, C = Math.max(1, Math.min(4, A.target.superXY ?? 1)); - if (this.superXY = C, I * C > 8192 || g * C > 8192) - throw new Error("Target size too large"); - this.target = new G.WebGLRenderTarget( - I * C, - g * C, - { - format: G.RGBAFormat, - type: G.UnsignedByteType, - colorSpace: G.SRGBColorSpace - } - ), B && (this.back = new G.WebGLRenderTarget( - I * C, - g * C, - { - format: G.RGBAFormat, - type: G.UnsignedByteType, - colorSpace: G.SRGBColorSpace + } + updateLodIndices(A, I) { + for (const [g, B] of Object.entries(I)) { + const { lodId: C, numSplats: E, indices: i } = B, o = A.get(g); + if (o.paged) + o.paged.update(E, i); + else { + let D = this.lodInstances.get(o); + D && i.length > D.indices.length && (D.texture.dispose(), D = void 0); + const w = Math.ceil(i.length / 16384); + if (D) { + D.numSplats = E; + const s = this.renderer, t = s.getContext(); + if (s.properties.has(D.texture)) { + const c = s.properties.get(D.texture).__webglTexture; + if (!c) + throw new Error("lodIndices texture not found"); + s.state.activeTexture(t.TEXTURE0), s.state.bindTexture(t.TEXTURE_2D, c), t.bindBuffer(t.PIXEL_UNPACK_BUFFER, null), t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL, !1), t.texSubImage2D( + t.TEXTURE_2D, + 0, + 0, + 0, + 4096, + w, + t.RGBA_INTEGER, + t.UNSIGNED_INT, + i + ), s.state.bindTexture(t.TEXTURE_2D, null); + } + } else { + const s = w * 16384; + if (i.length !== s) + throw new Error("Indices length != capacity"); + const t = new a.DataTexture( + i, + 4096, + w, + a.RGBAIntegerFormat, + a.UnsignedIntType + ); + t.internalFormat = "RGBA32UI", t.needsUpdate = !0, D = { lodId: C, numSplats: E, indices: i, texture: t }, this.lodInstances.set(o, D); } - )), this.encodeLinear = !0; + } + o.updateMappingVersion(); } - this.onTextureUpdated = A.onTextureUpdated, this.sortRadial = A.sortRadial ?? !0, this.sortDistance = A.sortDistance, this.sortCoorient = A.sortCoorient, this.depthBias = A.depthBias, this.sort360 = A.sort360, this.sort32 = A.sort32, this.stochastic = A.stochastic ?? !1, this.orderingFreelist = new aC({ - allocate: (I) => new Uint32Array(I), - valid: (I, g) => I.length === g - }), this.autoUpdate = !1, this.setAutoUpdate(A.autoUpdate ?? !1); } - // Call this when you are done with the SparkViewpoint and want to - // free up its resources (GPU targets, pixel buffers, etc.) - dispose() { - var A; - this.setAutoUpdate(!1), this.target && (this.target.dispose(), this.target = void 0), this.back && (this.back.dispose(), this.back = void 0), this.display && (this.spark.releaseAccumulator(this.display.accumulator), this.display.geometry.dispose(), this.display = null), (A = this.pending) != null && A.accumulator && (this.spark.releaseAccumulator(this.pending.accumulator), this.pending = null); - } - // Use this function to change whether this viewpoint will auto-update - // its sort order whenever the attached SparkRenderer updates the Gsplats. - // Turn this on or off depending on whether you expect to do renders from - // this viewpoint most frames. - setAutoUpdate(A) { - !this.autoUpdate && A ? this.spark.autoViewpoints.push(this) : this.autoUpdate && !A && (this.spark.autoViewpoints = this.spark.autoViewpoints.filter( - (I) => I !== this - )), this.autoUpdate = A; - } - // See below async prepareRenderPixels() for explanation of parameters. - // Awaiting this method updates the Gsplats in the scene and performs a sort of the - // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget() - // call in the same tick. - async prepare({ - scene: A, - camera: I, - viewToWorld: g, - update: B, - forceOrigin: C + async readbackDepth({ + current: A, + renderer: I, + numSplats: g, + readback: B }) { - for (g ? this.viewToWorld = g : (this.camera = I ?? this.camera, this.camera && (this.camera.updateMatrixWorld(), this.viewToWorld = this.camera.matrixWorld.clone())); B ?? !0; ) { - const D = C ? this.viewToWorld : this.spark.matrixWorld; - if (this.spark.updateInternal({ scene: A, originToWorld: D })) - break; - await new Promise((w) => setTimeout(w, 10)); + if (!I) + throw new Error("No renderer"); + if (!A.target) + throw new Error("No target"); + const C = Math.ceil(g / b) * b; + if (B.byteLength < C * 4) + throw new Error( + `Readback buffer too small: ${B.byteLength} < ${C * 4}` + ); + const E = new Uint8Array(B.buffer), i = this.saveRenderState(I), o = b * vA; + let D = 0; + const w = []; + for (; D < g; ) { + const s = Math.floor(D / o), t = s * o, G = Math.min( + vA, + Math.ceil((g - t) / b) + ), c = b * G * 4, h = E.subarray( + t * 4, + t * 4 + c + ); + I.setRenderTarget(A.target, s); + const y = I.readRenderTargetPixelsAsync( + A.target, + 0, + 0, + b, + G, + h, + void 0, + A.extSplats ? 2 : 1 + ); + w.push(y), this.flushAfterRead && I.getContext().flush(), D += b * G; + } + return this.resetRenderState(I, i), Promise.all(w).then(() => B); + } + saveRenderState(A) { + return { + target: A.getRenderTarget(), + xrEnabled: A.xr.enabled, + autoClear: A.autoClear + }; + } + resetRenderState(A, I) { + A.setRenderTarget(I.target), A.xr.enabled = I.xrEnabled, A.autoClear = I.autoClear; + } + render(A, I) { + try { + oA.sparkOverride = this, this.renderer.render(A, I); + } finally { + oA.sparkOverride = void 0; } - const E = this.spark.active; - E.refCount += 1, await this.sortUpdate({ accumulator: E, viewToWorld: this.viewToWorld }), this.spark.releaseAccumulator(E); } - // Render out the viewpoint to the view target RGBA buffer. - // Swaps buffers if doubleBuffer: true was set. - // Calls onTextureUpdated(texture) with the resulting texture. renderTarget({ scene: A, camera: I }) { - var C; - const g = this.back ?? this.target; + const g = this.backTarget ?? this.target; if (!g) - throw new Error("Must initialize SparkViewpoint with target"); - if (I = I ?? this.camera, !I) - throw new Error("Must provide camera"); - if (I instanceof G.PerspectiveCamera) { - const E = new G.PerspectiveCamera().copy(I, !1); - E.aspect = g.width / g.height, E.updateProjectionMatrix(), I = E; - } - this.viewToWorld = I.matrixWorld.clone(); - const B = this.spark.renderer.getRenderTarget(); + throw new Error("No target"); + const B = this.renderer.getRenderTarget(); try { - this.spark.renderer.setRenderTarget(g), this.spark.prepareViewpoint(this), this.spark.renderer.render(A, I); + this.renderer.setRenderTarget(g), oA.sparkOverride = this, this.renderer.render(A, I); } finally { - this.spark.prepareViewpoint(this.spark.defaultView), this.spark.renderer.setRenderTarget(B); + oA.sparkOverride = void 0, this.renderer.setRenderTarget(B); } - g !== this.target && ([this.target, this.back] = [this.back, this.target]), (C = this.onTextureUpdated) == null || C.call(this, g.texture); + return g !== this.target && ([this.target, this.backTarget] = [this.backTarget, this.target]), g; } // Read back the previously rendered target image as a Uint8Array of packed - // RGBA values (in that order). If superXY was set greater than 1 then - // downsampling is performed in the target pixel array with simple averaging - // to derive the returned pixel values. Subsequent calls to this.readTarget() + // RGBA values (in that order). Subsequent calls to this.readTarget() // will reuse the same buffers to minimize memory allocations. async readTarget() { if (!this.target) - throw new Error("Must initialize SparkViewpoint with target"); + throw new Error("Must initialize with target"); const { width: A, height: I } = this.target, g = A * I * 4; - (!this.superPixels || this.superPixels.length < g) && (this.superPixels = new Uint8Array(g)), await this.spark.renderer.readRenderTargetPixelsAsync( + (!this.superPixels || this.superPixels.length < g) && (this.superPixels = new Uint8Array(g)); + const B = this.superPixels; + await this.renderer.readRenderTargetPixelsAsync( this.target, 0, 0, A, I, - this.superPixels + B ); - const { superXY: B } = this; - if (B === 1) - return this.superPixels; - const C = A / B, E = I / B, D = C * E * 4; - (!this.pixels || this.pixels.length < D) && (this.pixels = new Uint8Array(D)); - const { superPixels: i, pixels: w } = this, s = B * B; - for (let o = 0; o < E; o++) { - const y = o * C; - for (let h = 0; h < C; h++) { - const k = h * B; - let R = 0, F = 0, a = 0, S = 0; - for (let c = 0; c < B; c++) { - const N = (o * B + c) * this.target.width; - for (let U = 0; U < B; U++) { - const J = (N + k + U) * 4; - R += i[J], F += i[J + 1], a += i[J + 2], S += i[J + 3]; + const { superXY: C } = this; + if (C === 1) + return B; + const E = A / C, i = I / C, o = E * i * 4; + (!this.targetPixels || this.targetPixels.length < o) && (this.targetPixels = new Uint8Array(o)); + const D = this.targetPixels, w = C * C; + for (let s = 0; s < i; s++) { + const t = s * E; + for (let G = 0; G < E; G++) { + const c = G * C; + let h = 0, y = 0, S = 0, F = 0; + for (let k = 0; k < C; k++) { + const R = (s * C + k) * A; + for (let N = 0; N < C; N++) { + const U = (R + c + N) * 4; + h += B[U], y += B[U + 1], S += B[U + 2], F += B[U + 3]; } } - const M = (y + h) * 4; - w[M] = R / s, w[M + 1] = F / s, w[M + 2] = a / s, w[M + 3] = S / s; + const e = (t + G) * 4; + D[e] = h / w, D[e + 1] = y / w, D[e + 2] = S / w, D[e + 3] = F / w; + } + } + return D; + } + async renderReadTarget({ + scene: A, + camera: I + }) { + return this.renderTarget({ scene: A, camera: I }), this.readTarget(); + } + // Renders out the scene to a cube map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces. + async renderCubeMap({ + scene: A, + worldCenter: I, + size: g = 256, + near: B = 0.1, + far: C = 1e3, + hideObjects: E = [], + update: i = !0, + filter: o = !1 + }) { + if (!oA.cubeRender || oA.cubeRender.target.width !== g || oA.cubeRender.near !== B || oA.cubeRender.far !== C) { + oA.cubeRender && oA.cubeRender.target.dispose(); + const t = new a.WebGLCubeRenderTarget(g, { + format: a.RGBAFormat, + type: a.UnsignedByteType, + generateMipmaps: o, + minFilter: o ? a.LinearMipMapLinearFilter : a.LinearFilter, + magFilter: a.LinearFilter, + colorSpace: o ? a.LinearSRGBColorSpace : a.SRGBColorSpace + }), G = new a.CubeCamera(B, C, t); + oA.cubeRender = { target: t, cubeCamera: G, near: B, far: C }; + } + const { target: D, cubeCamera: w } = oA.cubeRender; + w.position.copy(I); + const s = /* @__PURE__ */ new Map(); + for (const t of E) + s.set(t, t.visible), t.visible = !1; + if (i) { + const t = new a.Camera(); + t.position.copy(I), await this.update({ scene: A, camera: t }); + } + try { + oA.sparkOverride = this, w.update(this.renderer, A); + } finally { + oA.sparkOverride = void 0; + } + for (const [t, G] of s.entries()) + t.visible = G; + return D.texture; + } + async readCubeTargets() { + if (!oA.cubeRender) + throw new Error("No cube render"); + const A = oA.cubeRender.target.texture, I = [], g = []; + for (let B = 0; B < A.images.length; ++B) { + const { width: C, height: E } = A.images[B], i = C * E * 4, o = new Uint8Array(i); + g.push(o); + const D = this.renderer.readRenderTargetPixelsAsync( + oA.cubeRender.target, + 0, + 0, + C, + E, + o, + B + ); + I.push(D); + } + return await Promise.all(I), g; + } + // Renders out the scene to an environment map that can be used for + // Image-based lighting or similar applications. First optionally updates Gsplats, + // sorts them with respect to the provided worldCenter, renders 6 cube faces, + // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture + // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. + async renderEnvMap({ + scene: A, + worldCenter: I, + size: g = 256, + near: B = 0.1, + far: C = 1e3, + hideObjects: E = [], + update: i = !0 + }) { + var D; + const o = await this.renderCubeMap({ + scene: A, + worldCenter: I, + size: g, + near: B, + far: C, + hideObjects: E, + update: i, + filter: !0 + }); + return oA.pmrem || (oA.pmrem = new a.PMREMGenerator(this.renderer)), (D = oA.pmrem) == null ? void 0 : D.fromCubemap(o).texture; + } + // Utility function to recursively set the envMap property for any + // THREE.MeshStandardMaterial within the subtree of root. + recurseSetEnvMap(A, I) { + A.traverse((g) => { + if (g instanceof a.Mesh) + if (Array.isArray(g.material)) + for (const B of g.material) + B instanceof a.MeshStandardMaterial && (B.envMap = I); + else + g.material instanceof a.MeshStandardMaterial && (g.material.envMap = I); + }); + } + async getLodTreeLevel(A, I, g = !1) { + var E, i; + const B = this.lodInstances.get(A); + if (!B) + return null; + const C = await this.ensureLodWorker().exclusive(async (o) => await o.call("getLodTreeLevel", { + lodId: B.lodId, + level: I + })); + if ((E = A.packedSplats) != null && E.lodSplats) { + const o = A.packedSplats.lodSplats.extractSplats( + C.indices, + g + ); + return new zA({ packedSplats: o }); + } + if ((i = A.extSplats) != null && i.lodSplats) { + const o = A.extSplats.lodSplats.extractSplats( + C.indices, + g + ); + return new zA({ extSplats: o }); + } + throw new Error( + "Only LoD-enabled PackedSplats and ExtSplats are supported" + ); + } + get premultipliedAlpha() { + return this.material.premultipliedAlpha; + } + set premultipliedAlpha(A) { + this.material.premultipliedAlpha !== A && (this.material.premultipliedAlpha = A, this.material.needsUpdate = !0); + } +}; +oA.emptyOrdering = (() => { + const I = new Uint32Array(16384), g = new a.DataTexture(I, 4096, 1); + return g.format = a.RGBAIntegerFormat, g.type = a.UnsignedIntType, g.internalFormat = "RGBA32UI", g.needsUpdate = !0, g; +})(), oA.cubeRender = null, oA.pmrem = null; +let jg = oA; +function jG(Q) { + return Q == null ? void 0 : Q.isXRRenderTarget; +} +const xB = [ + "char", + "uchar", + "short", + "ushort", + "int", + "uint", + "float", + "double" +], OI = class OI { + // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet + constructor({ fileBytes: A }) { + this.header = "", this.littleEndian = !0, this.elements = {}, this.comments = [], this.data = null, this.numSplats = 0, this.fileBytes = A instanceof ArrayBuffer ? new Uint8Array(A) : A; + } + // Identify and parse the PLY text header (assumed to be <64KB in size). + // this.elements will contain all the elements in the file, typically + // "vertex" contains the Gsplat data. + async parseHeader() { + const I = new ReadableStream({ + start: (E) => { + E.enqueue(this.fileBytes.slice(0, 65536)), E.close(); + } + }).pipeThrough(new TextDecoderStream()).getReader(); + this.header = ""; + const g = `end_header +`; + for (; ; ) { + const { value: E, done: i } = await I.read(); + if (i) + throw new Error("Failed to read header"); + this.header += E; + const o = this.header.indexOf(g); + if (o >= 0) { + this.header = this.header.slice(0, o + g.length); + break; } } - return w; - } - // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene - // and any camera/viewToWorld viewpoint overrides. By default update is true, - // which triggers its SparkRenderer to check and potentially update the Gsplats. - // Setting update to false disables this and sorts the Gsplats as they are. - // Setting forceOrigin (default: false) to true forces the view update to - // recalculate the splats with this view origin, potentially altering any - // view-dependent effects. If you expect view-dependent effects to play a role - // in the rendering quality, enable this. - // - // Underneath, prepareRenderPixels() simply calls await this.prepare(...), - // this.renderTarget(...), and finally returns the result this.readTarget(), - // a Promise to a Uint8Array with RGBA values for all the pixels (potentially - // downsampled if the superXY parameter was used). These steps can also be called - // manually, for example if you need to alter the scene before and after - // this.renderTarget(...) to hide UI elements from being rendered. - async prepareRenderPixels({ - scene: A, - camera: I, - viewToWorld: g, - update: B, - forceOrigin: C - }) { - return await this.prepare({ scene: A, camera: I, viewToWorld: g, update: B, forceOrigin: C }), this.renderTarget({ scene: A, camera: I }), this.readTarget(); - } - // This is called automatically by SparkRenderer, there is no need to call it! - // The method cannot be private because then SparkRenderer would - // not be able to call it. - autoPoll({ accumulator: A }) { - var C, E, D; - this.camera && (this.camera.updateMatrixWorld(), this.viewToWorld = this.camera.matrixWorld.clone()); - let I = !1, g = !1; - if (!this.display) - I = !0; - else if (A) { - I = !0; - const { mappingVersion: i } = this.display.accumulator; - A.mappingVersion === i && (A.refCount += 1, this.spark.releaseAccumulator(this.display.accumulator), this.display.accumulator = A, this.display.viewToWorld.copy(this.viewToWorld), g = !0, this.spark.viewpoint === this && this.spark.prepareViewpoint(this)); - } - const B = ((C = this.sorting) == null ? void 0 : C.viewToWorld) ?? ((E = this.display) == null ? void 0 : E.viewToWorld); - B && !Zg({ - matrix1: this.viewToWorld, - matrix2: B, - // By default update sort each 1 cm - maxDistance: this.sortDistance ?? 0.01, - // By default for radial sort, update for intermittent movement so that - // we bring back splats culled by being behind the camera. - // For depth sort, small rotations can change sort order a lot, so - // update sort for even small rotations. - minCoorient: this.sortCoorient ?? this.sortRadial ? 0.99 : 0.999 - }) && (I = !0), I && (A && (A.refCount += 1), (D = this.pending) != null && D.accumulator && this.spark.releaseAccumulator(this.pending.accumulator), this.pending = { accumulator: A, viewToWorld: this.viewToWorld, displayed: g }, this.driveSort()); - } - async driveSort() { - var A; - for (; ; ) { - if (this.sorting || !this.pending) + const B = new TextEncoder().encode(this.header).length; + this.data = new DataView(this.fileBytes.buffer, B), this.elements = {}; + let C = null; + this.comments = [], this.header.trim().split(` +`).forEach((E, i) => { + const o = E.trim(); + if (i === 0) { + if (o !== "ply") + throw new Error("Invalid PLY header"); + return; + } + if (o.length === 0) return; - const { viewToWorld: I, displayed: g } = this.pending; - let B = this.pending.accumulator; - if (B || (B = ((A = this.display) == null ? void 0 : A.accumulator) ?? this.spark.active, B.refCount += 1), this.pending = null, !B) - throw new Error("No accumulator to sort"); - this.sorting = { viewToWorld: I }, await this.sortUpdate({ accumulator: B, viewToWorld: I, displayed: g }), this.sorting = null, this.spark.releaseAccumulator(B); + const D = o.split(" "); + switch (D[0]) { + case "format": + if (D[1] === "binary_little_endian") + this.littleEndian = !0; + else if (D[1] === "binary_big_endian") + this.littleEndian = !1; + else + throw new Error(`Unsupported PLY format: ${D[1]}`); + if (D[2] !== "1.0") + throw new Error(`Unsupported PLY version: ${D[2]}`); + break; + case "end_header": + break; + case "comment": + this.comments.push(o.slice(8)); + break; + case "element": { + const w = D[1]; + C = { + name: w, + count: Number.parseInt(D[2]), + properties: {} + }, this.elements[w] = C; + break; + } + case "property": + if (C == null) + throw new Error("Property must be inside an element"); + D[1] === "list" ? C.properties[D[4]] = { + isList: !0, + type: D[3], + countType: D[2] + } : C.properties[D[2]] = { + isList: !1, + type: D[1] + }; + break; + } + }), this.elements.vertex && (this.numSplats = this.elements.vertex.count); + } + parseData(A) { + let I = 0; + const g = this.data; + if (g == null) + throw new Error("No data to parse"); + for (const B in this.elements) { + const C = this.elements[B], { count: E, properties: i } = C, o = $G(i), D = Ah(i, this.littleEndian), w = A(C) ?? (() => { + }); + for (let s = 0; s < E; s++) + I = D(g, I, o), w(s, o); } } - async sortUpdate({ - accumulator: A, - viewToWorld: I, - displayed: g = !1 - }) { - if (this.sortingCheck) - throw new Error("Only one sort at a time"); - this.sortingCheck = !0, A = A ?? this.spark.active; - const { numSplats: B, maxSplats: C } = A.splats; - let E = 0, D = this.orderingFreelist.alloc(C); - if (this.stochastic) { - E = B; - for (let i = 0; i < B; ++i) - D[i] = i; - } else if (B > 0) { + // Parse all the Gsplat data in the PLY file in go, invoking the given + // callbacks for each Gsplat. + parseSplats(A, I) { + if (this.elements.vertex == null) + throw new Error("No vertex element found"); + let g = !1; + const B = []; + let C = 0, E = [], i = [], o = [], D, w, s; + function t() { + const S = _G[C]; + E = new Array(3).fill(null).flatMap((F, e) => [0, 1, 2].map((k, R) => e + R * S / 3)), i = new Array(5).fill(null).flatMap( + (F, e) => [0, 1, 2].map((k, R) => 3 + e + R * S / 3) + ), o = new Array(7).fill(null).flatMap( + (F, e) => [0, 1, 2].map((k, R) => 8 + e + R * S / 3) + ), D = C >= 1 ? new Float32Array(3 * 3) : void 0, w = C >= 2 ? new Float32Array(5 * 3) : void 0, s = C >= 3 ? new Float32Array(7 * 3) : void 0; + } + function G(S, F) { + if (!D) + throw new Error("Missing sh1"); + const e = F.f_rest; + for (let k = 0; k < E.length; k++) + D[k] = e[E[k]] * 8 / 255 - 4; + if (w) + for (let k = 0; k < i.length; k++) + w[k] = e[i[k]] * 8 / 255 - 4; + if (s) + for (let k = 0; k < o.length; k++) + s[k] = e[o[k]] * 8 / 255 - 4; + I == null || I(S, D, w, s); + } + function c(S) { const { - reader: i, - doubleSortReader: w, - sort32Reader: s, - dynoSortRadial: o, - dynoOrigin: y, - dynoDirection: h, - dynoDepthBias: k, - dynoSort360: R, - dynoSplats: F - } = JI.makeSorter(), a = this.sort32 ?? !1; - let S; - if (a) - this.readback32 = i.ensureBuffer(C, this.readback32), S = this.readback32; - else { - const t = Math.ceil(C / 2); - this.readback16 = i.ensureBuffer(t, this.readback16), S = this.readback16; - } - const M = A.toWorld.clone().invert(), c = I.clone().premultiply(M); - o.value = this.sort360 ? !0 : this.sortRadial, y.value.set(0, 0, 0).applyMatrix4(c), h.value.set(0, 0, -1).applyMatrix4(c).sub(y.value).normalize(), k.value = this.depthBias ?? 1, R.value = this.sort360 ?? !1, F.packedSplats = A.splats; - const N = a ? s : w, U = a ? B : Math.ceil(B / 2); - await i.renderReadback({ - renderer: this.spark.renderer, - reader: N, - count: U, - readback: S - }); - const J = await nI(async (t) => { - const H = a ? "sort32Splats" : "sortDoubleSplats"; - return t.call(H, { - maxSplats: C, - numSplats: B, - readback: S, - ordering: D + min_x: F, + min_y: e, + min_z: k, + max_x: R, + max_y: N, + max_z: U, + min_scale_x: M, + min_scale_y: J, + min_scale_z: H, + max_scale_x: n, + max_scale_y: L, + max_scale_z: x + } = S.properties; + if (!F || !e || !k || !R || !N || !U || !M || !J || !H || !n || !L || !x) + throw new Error("Missing PLY chunk properties"); + return g = !0, (d, Y) => { + const { + min_x: p, + min_y: O, + min_z: gA, + max_x: v, + max_y: EA, + max_z: W, + min_scale_x: QA, + min_scale_y: X, + min_scale_z: P, + max_scale_x: u, + max_scale_y: m, + max_scale_z: f, + min_r: hA, + min_g: aA, + min_b: yA, + max_r: cA, + max_g: sA, + max_b: tA + } = Y; + B.push({ + min_x: p, + min_y: O, + min_z: gA, + max_x: v, + max_y: EA, + max_z: W, + min_scale_x: QA, + min_scale_y: X, + min_scale_z: P, + max_scale_x: u, + max_scale_y: m, + max_scale_z: f, + min_r: hA, + min_g: aA, + min_b: yA, + max_r: cA, + max_g: sA, + max_b: tA }); - }); - a ? this.readback32 = J.readback : this.readback16 = J.readback, D = J.ordering, E = J.activeSplats; - } - this.updateDisplay({ - accumulator: A, - viewToWorld: I, - ordering: D, - activeSplats: E, - displayed: g - }), this.sortingCheck = !1; - } - updateDisplay({ - accumulator: A, - viewToWorld: I, - ordering: g, - activeSplats: B, - displayed: C = !1 - }) { - if (!this.display) - A.refCount += 1, this.display = { - accumulator: A, - viewToWorld: I, - geometry: new LQ(g, B) }; - else { - !C && A !== this.display.accumulator && (A.refCount += 1, this.spark.releaseAccumulator(this.display.accumulator), this.display.accumulator = A), this.display.viewToWorld = I; - const E = this.display.geometry.ordering; - E.length === g.length ? this.display.geometry.update(g, B) : (this.display.geometry.dispose(), this.display.geometry = new LQ(g, B)), this.orderingFreelist.free(E); } - this.spark.viewpoint === this && this.spark.prepareViewpoint(this); - } - static makeSorter() { - if (!JI.dynos) { - const A = new bI({ value: !0 }), I = new DI({ value: new G.Vector3() }), g = new DI({ value: new G.Vector3() }), B = new pI({ value: 1 }), C = new bI({ value: !1 }), E = new MB(), D = new Ig(), i = cA( - { index: "int" }, - { rgba8: "vec4" }, - ({ index: s }) => { - if (!s) - throw new Error("No index"); - const o = { - sortRadial: A, - sortOrigin: I, - sortDirection: g, - sortDepthBias: B, - sort360: C - }, y = kA(s, v("int", 2)), h = _I(E, y), k = UQ({ gsplat: h, ...o }), R = _I( - E, - qA(y, v("int", 1)) - ), F = UQ({ gsplat: R, ...o }), a = yI({ - vectorType: "vec2", - x: k, - y: F - }); - return { rgba8: fQ(vD(a)) }; - } - ), w = cA( - { index: "int" }, - { rgba8: "vec4" }, - ({ index: s }) => { - if (!s) - throw new Error("No index"); - const o = { - sortRadial: A, - sortOrigin: I, - sortDirection: g, - sortDepthBias: B, - sort360: C - }, y = _I(E, s), h = UQ({ gsplat: y, ...o }); - return { rgba8: fQ(jD(h)) }; - } - ); - JI.dynos = { - dynoSortRadial: A, - dynoOrigin: I, - dynoDirection: g, - dynoDepthBias: B, - dynoSort360: C, - dynoSplats: E, - reader: D, - doubleSortReader: i, - sort32Reader: w + function h(S) { + if (I && S.name === "sh") + return C = TQ(S.properties), t(), G; + if (S.name !== "vertex") + return null; + const { packed_position: F, packed_rotation: e, packed_scale: k, packed_color: R } = S.properties; + if (!F || !e || !k || !R) + throw new Error( + "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color" + ); + const N = Math.sqrt(2); + return (U, M) => { + const J = B[U >>> 8]; + if (J == null) + throw new Error("Missing PLY chunk"); + const { + min_x: H, + min_y: n, + min_z: L, + max_x: x, + max_y: d, + max_z: Y, + min_scale_x: p, + min_scale_y: O, + min_scale_z: gA, + max_scale_x: v, + max_scale_y: EA, + max_scale_z: W, + min_r: QA, + min_g: X, + min_b: P, + max_r: u, + max_g: m, + max_b: f + } = J, { packed_position: hA, packed_rotation: aA, packed_scale: yA, packed_color: cA } = M, sA = (hA >>> 21 & 2047) / 2047 * (x - H) + H, tA = (hA >>> 11 & 1023) / 1023 * (d - n) + n, $A = (hA & 2047) / 2047 * (Y - L) + L, PA = ((aA >>> 20 & 1023) / 1023 - 0.5) * N, yI = ((aA >>> 10 & 1023) / 1023 - 0.5) * N, cI = ((aA & 1023) / 1023 - 0.5) * N, _ = Math.sqrt(Math.max(0, 1 - PA * PA - yI * yI - cI * cI)), mA = aA >>> 30, MA = mA === 0 ? PA : mA === 1 ? _ : yI, $I = mA <= 1 ? yI : mA === 2 ? _ : cI, ng = mA <= 2 ? cI : _, TA = mA === 0 ? _ : PA, $ = Math.exp( + (yA >>> 21 & 2047) / 2047 * (v - p) + p + ), aI = Math.exp( + (yA >>> 11 & 1023) / 1023 * (EA - O) + O + ), sQ = Math.exp( + (yA & 2047) / 2047 * (W - gA) + gA + ), wQ = (cA >>> 24 & 255) / 255 * ((u ?? 1) - (QA ?? 0)) + (QA ?? 0), aQ = (cA >>> 16 & 255) / 255 * ((m ?? 1) - (X ?? 0)) + (X ?? 0), tQ = (cA >>> 8 & 255) / 255 * ((f ?? 1) - (P ?? 0)) + (P ?? 0), GQ = (cA & 255) / 255; + A( + U, + sA, + tA, + $A, + $, + aI, + sQ, + MA, + $I, + ng, + TA, + GQ, + wQ, + aQ, + tQ + ); }; } - return JI.dynos; - } -}; -JI.EMPTY_TEXTURE = new G.Texture(), JI.dynos = null; -let zg = JI; -const DR = oA(` - float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) { - if (!isGsplatActive(gsplat.flags)) { - return INFINITY; - } - - vec3 center = gsplat.center - sortOrigin; - float biasedDepth = dot(center, sortDirection) + sortDepthBias; - if (!sort360 && (biasedDepth <= 0.0)) { - return INFINITY; - } - - return sortRadial ? length(center) : biasedDepth; - } -`); -function UQ({ - gsplat: Q, - sortRadial: A, - sortOrigin: I, - sortDirection: g, - sortDepthBias: B, - sort360: C -}) { - return gQ({ - inTypes: { - gsplat: Z, - sortRadial: "bool", - sortOrigin: "vec3", - sortDirection: "vec3", - sortDepthBias: "float", - sort360: "bool" - }, - outTypes: { metric: "float" }, - globals: () => [HA, DR], - inputs: { - gsplat: Q, - sortRadial: A, - sortOrigin: I, - sortDirection: g, - sortDepthBias: B, - sort360: C - }, - statements: ({ inputs: E, outputs: D }) => { + const y = (S) => { + if (S.name === "chunk") + return c(S); + if (g) + return h(S); + if (S.name !== "vertex") + return null; const { - gsplat: i, - sortRadial: w, - sortOrigin: s, - sortDirection: o, - sortDepthBias: y, - sort360: h - } = E; - return z(` - ${D.metric} = computeSort(${i}, ${w}, ${s}, ${o}, ${y}, ${h}); - `); - } - }).outputs.metric; -} -class tQ { - constructor() { - this.splats = new $A(), this.toWorld = new G.Matrix4(), this.mapping = [], this.refCount = 0, this.splatsVersion = -1, this.mappingVersion = -1; - } - ensureGenerate(A) { - this.splats.ensureGenerate(A) && (this.mapping = []); + x: F, + y: e, + z: k, + scale_0: R, + scale_1: N, + scale_2: U, + rot_0: M, + rot_1: J, + rot_2: H, + rot_3: n, + opacity: L, + f_dc_0: x, + f_dc_1: d, + f_dc_2: Y, + red: p, + green: O, + blue: gA, + alpha: v + } = S.properties; + if (!F || !e || !k) + throw new Error("Missing PLY properties: x, y, z"); + const EA = R && N && U, W = M && J && H && n, QA = v != null ? lg[v.type] : 1, X = p != null ? lg[p.type] : 1, P = O != null ? lg[O.type] : 1, u = gA != null ? lg[gA.type] : 1; + return C = TQ(S.properties), t(), (m, f) => { + const hA = EA ? Math.exp(f.scale_0) : OI.defaultPointScale, aA = EA ? Math.exp(f.scale_1) : OI.defaultPointScale, yA = EA ? Math.exp(f.scale_2) : OI.defaultPointScale, cA = W ? f.rot_1 : 0, sA = W ? f.rot_2 : 0, tA = W ? f.rot_3 : 0, $A = W ? f.rot_0 : 1, PA = L != null ? 1 / (1 + Math.exp(-f.opacity)) : v != null ? f.alpha / QA : 1, yI = x != null ? f.f_dc_0 * dg + 0.5 : p != null ? f.red / X : 1, cI = d != null ? f.f_dc_1 * dg + 0.5 : O != null ? f.green / P : 1, _ = Y != null ? f.f_dc_2 * dg + 0.5 : gA != null ? f.blue / u : 1; + if (A( + m, + f.x, + f.y, + f.z, + hA, + aA, + yA, + cA, + sA, + tA, + $A, + PA, + yI, + cI, + _ + ), I && D) { + const mA = f.f_rest; + if (D) + for (let MA = 0; MA < E.length; MA++) + D[MA] = mA[E[MA]]; + if (w) + for (let MA = 0; MA < i.length; MA++) + w[MA] = mA[i[MA]]; + if (s) + for (let MA = 0; MA < o.length; MA++) + s[MA] = mA[o[MA]]; + I(m, D, w, s); + } + }; + }; + this.parseData(y); } - // Generate all Gsplats from an array of generators - generateSplats({ - renderer: A, - modifier: I, - generators: g, - forceUpdate: B, - originToWorld: C - }) { - const E = this.mapping.reduce((w, s) => (w.set(s.node, s), w), /* @__PURE__ */ new Map()); - let D = 0, i = 0; - for (const { node: w, generator: s, version: o, base: y, count: h } of g) { - const k = E.get(w); - if ((B || s !== (k == null ? void 0 : k.generator) || o !== (k == null ? void 0 : k.version) || y !== (k == null ? void 0 : k.base) || h !== (k == null ? void 0 : k.count)) && s && h > 0) { - const R = I.apply(s); - try { - this.splats.generate({ - generator: R, - base: y, - count: h, - renderer: A + // Inject RGBA values into original PLY file, which can be used to modify + // the color/opacity of the Gsplats and write out the modified PLY file. + injectRgba(A) { + let I = 0; + const g = this.data; + if (g == null) + throw new Error("No parsed data"); + if (A.length !== this.numSplats * 4) + throw new Error("Invalid RGBA array length"); + for (const B in this.elements) { + const C = this.elements[B], { count: E, properties: i } = C, o = []; + let D = 0; + const w = B === "vertex"; + if (w) { + for (const s of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) + if (!i[s] || i[s].type !== "float") + throw new Error(`Can't injectRgba due to property: ${s}`); + } + for (const [s, t] of Object.entries(i)) + if (t.isList) + o.push(() => { + const G = TI[t.countType]( + g, + I, + this.littleEndian + ); + I += QI[t.countType], I += G * QI[t.type]; + }); + else { + if (w) + if (s === "f_dc_0" || s === "f_dc_1" || s === "f_dc_2") { + const G = Number.parseInt( + s.slice(5) + ); + o.push(() => { + const c = (A[D + G] / 255 - 0.5) / dg; + qB[t.type]( + g, + I, + this.littleEndian, + c + ); + }); + } else s === "opacity" && o.push(() => { + const G = Math.max( + -100, + Math.min( + 100, + -Math.log(1 / (A[D + 3] / 255) - 1) + ) + ); + qB[t.type]( + g, + I, + this.littleEndian, + G + ); + }); + o.push(() => { + I += QI[t.type]; }); - } catch (F) { - w.generator = void 0, w.generatorError = F; } - D += 1; + for (let s = 0; s < E; s++) { + for (const t of o) + t(); + w && (D += 4); } - i = Math.max(i, y + h); } - return this.splats.numSplats = i, this.toWorld.copy(C), this.mapping = g, D !== 0; } - // Check if this accumulator has exactly the same generator mapping as - // the previous one. If so, we can reuse the Gsplat sort order. - hasCorrespondence(A) { - return this.mapping.length !== A.mapping.length ? !1 : this.mapping.every(({ node: I, base: g, count: B }, C) => { - const { - node: E, - base: D, - count: i - } = A.mapping[C]; - return I === E && g === D && B === i; - }); +}; +OI.defaultPointScale = 1e-3; +let mQ = OI; +const dg = 0.28209479177387814, TI = { + char: (Q, A, I) => Q.getInt8(A), + uchar: (Q, A, I) => Q.getUint8(A), + short: (Q, A, I) => Q.getInt16(A, I), + ushort: (Q, A, I) => Q.getUint16(A, I), + int: (Q, A, I) => Q.getInt32(A, I), + uint: (Q, A, I) => Q.getUint32(A, I), + float: (Q, A, I) => Q.getFloat32(A, I), + double: (Q, A, I) => Q.getFloat64(A, I) +}, qB = { + char: (Q, A, I, g) => { + Q.setInt8(A, g); + }, + uchar: (Q, A, I, g) => { + Q.setUint8(A, g); + }, + short: (Q, A, I, g) => { + Q.setInt16(A, g, I); + }, + ushort: (Q, A, I, g) => { + Q.setUint16(A, g, I); + }, + int: (Q, A, I, g) => { + Q.setInt32(A, g, I); + }, + uint: (Q, A, I, g) => { + Q.setUint32(A, g, I); + }, + float: (Q, A, I, g) => { + Q.setFloat32(A, g, I); + }, + double: (Q, A, I, g) => { + Q.setFloat64(A, g, I); + } +}, QI = { + char: 1, + uchar: 1, + short: 2, + ushort: 2, + int: 4, + uint: 4, + float: 4, + double: 8 +}, lg = { + char: 127, + uchar: 255, + short: 32767, + ushort: 65535, + int: 2147483647, + uint: 4294967295, + float: 1, + double: 1 +}, zG = { + 0: 0, + 9: 1, + 24: 2, + 45: 3 +}, _G = { + 0: 0, + 1: 9, + 2: 24, + 3: 45 +}, SB = /^f_rest_([0-9]{1,2})$/; +function $G(Q) { + const A = {}; + for (const [I, g] of Object.entries(Q)) + SB.test(I) ? A.f_rest = new Array(TQ(Q)) : A[I] = g.isList ? [] : 0; + return A; +} +function Ah(Q, A) { + return Qh(Q) ? Bh(Q, A) : Ch(Q, A); +} +const Ih = (() => { + try { + new Function("return 42;"); + } catch { + return !1; } + return !0; +})(), gh = /^[a-zA-Z0-9_]+$/; +function Qh(Q) { + if (!Ih) + return !1; + for (const [A, I] of Object.entries(Q)) + if (!gh.test(A) || I.isList && !xB.includes(I.countType) || !xB.includes(I.type)) + return !1; + return !0; } -const uB = 5, UA = class UA extends G.Mesh { - constructor(A) { - const I = UA.makeUniforms(), g = Ag(), B = A.premultipliedAlpha ?? !0, C = new G.ShaderMaterial({ - glslVersion: G.GLSL3, - vertexShader: g.oldSplatVertex, - fragmentShader: g.oldSplatFragment, - uniforms: I, - premultipliedAlpha: B, - transparent: !0, - depthTest: !0, - depthWrite: !1, - side: G.DoubleSide - }); - super(OB, C), this.splatTexture = null, this.autoViewpoints = [], this.rotateToAccumulator = new mI({ value: new G.Quaternion() }), this.translateToAccumulator = new DI({ value: new G.Vector3() }), this.lastFrame = -1, this.lastUpdateTime = null, this.defaultCameras = [], this.lastStochastic = null, this.pendingUpdate = { - scene: null, - originToWorld: new G.Matrix4(), - timeoutId: -1 - }, this.envViewpoint = null, this.frustumCulled = !1, this.renderer = A.renderer, this.material = C, this.uniforms = I; - const E = cA( - { gsplat: Z }, - { gsplat: Z }, - ({ gsplat: D }) => { - if (!D) - throw new Error("gsplat not defined"); - return D = CB(D, { - rotate: this.rotateToAccumulator, - translate: this.translateToAccumulator - }), { gsplat: D }; - } +function Bh(Q, A) { + const I = ["let list;"]; + for (const [B, C] of Object.entries(Q)) { + const E = B.match(SB); + if (E) { + const i = +E[1]; + I.push( + /*js*/ + ` + item.f_rest[${i}] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${QI[C.type]}; + ` + ); + } else C.isList ? I.push( + /*js*/ + ` + list = item['${B}']; + list.length = PARSE_FIELD['${C.countType}'](data, offset, ${A}); + offset += ${QI[C.countType]}; + for (let i = 0; i < list.length; i++) { + list[i] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${QI[C.type]}; + } + ` + ) : I.push( + /*js*/ + ` + item['${B}'] = PARSE_FIELD['${C.type}'](data, offset, ${A}); + offset += ${QI[C.type]}; + ` ); - this.modifier = new Ph(E), this.premultipliedAlpha = B, this.autoUpdate = A.autoUpdate ?? !0, this.preUpdate = A.preUpdate ?? !1, this.needsUpdate = !1, this.originDistance = A.originDistance ?? 1, this.maxStdDev = A.maxStdDev ?? Math.sqrt(8), this.minPixelRadius = A.minPixelRadius ?? 0, this.maxPixelRadius = A.maxPixelRadius ?? 512, this.minAlpha = A.minAlpha ?? 0.5 * (1 / 255), this.enable2DGS = A.enable2DGS ?? !1, this.preBlurAmount = A.preBlurAmount ?? 0, this.blurAmount = A.blurAmount ?? 0.3, this.focalDistance = A.focalDistance ?? 0, this.apertureAngle = A.apertureAngle ?? 0, this.falloff = A.falloff ?? 1, this.clipXY = A.clipXY ?? 1.4, this.focalAdjustment = A.focalAdjustment ?? 1, this.splatEncoding = A.splatEncoding ?? { ...cg }, this.active = new tQ(), this.active.refCount = 1, this.accumulatorCount = 1, this.freeAccumulators = []; - for (let D = 0; D < 1; ++D) - this.freeAccumulators.push(new tQ()), this.accumulatorCount += 1; - this.defaultView = new zg({ - ...A.view, - autoUpdate: !0, - spark: this - }), this.viewpoint = this.defaultView, this.prepareViewpoint(this.viewpoint), this.clock = A.clock ? gB(A.clock) : new G.Clock(); - } - static makeUniforms() { - return { - // Size of render viewport in pixels - renderSize: { value: new G.Vector2() }, - // Near and far plane distances - near: { value: 0.1 }, - far: { value: 1e3 }, - // Total number of Gsplats in packedSplats to render - numSplats: { value: 0 }, - // SplatAccumulator to view transformation quaternion - renderToViewQuat: { value: new G.Quaternion() }, - // SplatAccumulator to view transformation translation - renderToViewPos: { value: new G.Vector3() }, - // Maximum distance (in stddevs) from Gsplat center to render - maxStdDev: { value: 1 }, - // Minimum pixel radius for splat rendering - minPixelRadius: { value: 0 }, - // Maximum pixel radius for splat rendering - maxPixelRadius: { value: 512 }, - // Minimum alpha value for splat rendering - minAlpha: { value: 0.00196078431372549 }, - // Enable stochastic splat rendering - stochastic: { value: !1 }, - // Enable interpreting 0-thickness Gsplats as 2DGS - enable2DGS: { value: !1 }, - // Add to projected 2D splat covariance diagonal (thickens and brightens) - preBlurAmount: { value: 0 }, - // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing) - blurAmount: { value: 0.3 }, - // Depth-of-field distance to focal plane - focalDistance: { value: 0 }, - // Full-width angle of aperture opening (in radians) - apertureAngle: { value: 0 }, - // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading", - // 1 is normal e^-x^2 falloff. - falloff: { value: 1 }, - // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds - clipXY: { value: 1.4 }, - // Debug renderSize scale factor - focalAdjustment: { value: 1 }, - // Enable splat texture rendering - splatTexEnable: { value: !1 }, - // Splat texture to render - splatTexture: { type: "t", value: UA.EMPTY_SPLAT_TEXTURE }, - // Splat texture UV transform (multiply) - splatTexMul: { value: new G.Matrix2() }, - // Splat texture UV transform (add) - splatTexAdd: { value: new G.Vector2() }, - // Splat texture near plane distance - splatTexNear: { value: 0.1 }, - // Splat texture far plane distance - splatTexFar: { value: 1e3 }, - // Splat texture mid plane distance, or 0.0 to disable - splatTexMid: { value: 0 }, - // Gsplat collection to render - packedSplats: { type: "t", value: $A.getEmptyArray }, - // Splat encoding ranges - rgbMinMaxLnScaleMinMax: { value: new G.Vector4() }, - // Time in seconds for time-based effects - time: { value: 0 }, - // Delta time in seconds since last frame - deltaTime: { value: 0 }, - // Whether to encode Gsplat with linear RGB (for environment mapping) - encodeLinear: { value: !1 }, - // Debug flag that alternates each frame - debugFlag: { value: !1 } - }; } - canAllocAccumulator() { - return this.freeAccumulators.length > 0 || this.accumulatorCount < uB; - } - maybeAllocAccumulator() { - let A = this.freeAccumulators.pop(); - if (A === void 0) { - if (this.accumulatorCount >= uB) - return null; - A = new tQ(), this.accumulatorCount += 1; - } - return A.refCount = 1, A; - } - releaseAccumulator(A) { - A.refCount -= 1, A.refCount === 0 && this.freeAccumulators.push(A); - } - newViewpoint(A) { - return new zg({ ...A, spark: this }); - } - onBeforeRender(A, I, g) { - var h, k; - const B = this.time ?? this.clock.getElapsedTime(), C = B - (this.viewpoint.lastTime ?? B); - this.viewpoint.lastTime = B; - const E = A.info.render.frame, D = E !== this.lastFrame; - this.lastFrame = E; - const i = this.viewpoint; - if (i === this.defaultView) { - if (D) - if (!A.xr.isPresenting) - this.defaultView.viewToWorld = g.matrixWorld.clone(), this.defaultCameras = [this.defaultView.viewToWorld]; - else { - const R = A.xr.getCamera().cameras; - this.defaultCameras = R.map((F) => F.matrixWorld), this.defaultView.viewToWorld = iR(this.defaultCameras) ?? new G.Matrix4(); - } - this.autoUpdate && this.update({ scene: I, viewToWorld: this.defaultView.viewToWorld }); - } - if (D && (this.material.premultipliedAlpha !== this.premultipliedAlpha && (this.material.premultipliedAlpha = this.premultipliedAlpha, this.material.needsUpdate = !0), this.uniforms.time.value = B, this.uniforms.deltaTime.value = C, this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1, i.display && i.stochastic && (this.geometry.instanceCount = this.uniforms.numSplats.value)), i.target) - this.uniforms.renderSize.value.set( - i.target.width, - i.target.height - ); - else { - const R = A.getDrawingBufferSize( - this.uniforms.renderSize.value + I.push("return offset;"); + const g = new Function( + "data", + "offset", + "item", + "PARSE_FIELD", + I.join(` +`) + ); + return (B, C, E) => g(B, C, E, TI); +} +function Ch(Q, A) { + const I = []; + for (const [g, B] of Object.entries(Q)) { + const C = g.match(SB); + if (C) { + const E = +C[1]; + I.push( + (i, o, D) => (D.f_rest[E] = TI[B.type]( + i, + o, + A + ), o + QI[B.type]) ); - if (R.x === 1 && R.y === 1) { - const F = (h = A.xr.getSession()) == null ? void 0 : h.renderState.baseLayer; - F && (R.x = F.framebufferWidth, R.y = F.framebufferHeight); + } else B.isList ? I.push( + (E, i, o) => { + const D = o[g]; + D.length = TI[B.countType]( + E, + i, + A + ); + let w = i + QI[B.countType]; + for (let s = 0; s < D.length; s++) + D[s] = TI[B.type]( + E, + w, + A + ), w += QI[B.type]; + return w; } - } - const w = g; - if (this.uniforms.near.value = w.near, this.uniforms.far.value = w.far, this.uniforms.encodeLinear.value = i.encodeLinear, this.uniforms.maxStdDev.value = this.maxStdDev, this.uniforms.minPixelRadius.value = this.minPixelRadius, this.uniforms.maxPixelRadius.value = this.maxPixelRadius, this.uniforms.minAlpha.value = this.minAlpha, this.uniforms.stochastic.value = i.stochastic, this.uniforms.enable2DGS.value = this.enable2DGS, this.uniforms.preBlurAmount.value = this.preBlurAmount, this.uniforms.blurAmount.value = this.blurAmount, this.uniforms.focalDistance.value = this.focalDistance, this.uniforms.apertureAngle.value = this.apertureAngle, this.uniforms.falloff.value = this.falloff, this.uniforms.clipXY.value = this.clipXY, this.uniforms.focalAdjustment.value = this.focalAdjustment, this.lastStochastic !== !i.stochastic && (this.lastStochastic = !i.stochastic, this.material.transparent = !i.stochastic, this.material.depthWrite = i.stochastic, this.material.needsUpdate = !0), this.splatTexture) { - const { enable: R, texture: F, multiply: a, add: S, near: M, far: c, mid: N } = this.splatTexture; - R && F ? (this.uniforms.splatTexEnable.value = !0, this.uniforms.splatTexture.value = F, a ? this.uniforms.splatTexMul.value.fromArray(a.elements) : this.uniforms.splatTexMul.value.set( - 0.5 / this.maxStdDev, - 0, - 0, - 0.5 / this.maxStdDev - ), this.uniforms.splatTexAdd.value.set((S == null ? void 0 : S.x) ?? 0.5, (S == null ? void 0 : S.y) ?? 0.5), this.uniforms.splatTexNear.value = M ?? this.uniforms.near.value, this.uniforms.splatTexFar.value = c ?? this.uniforms.far.value, this.uniforms.splatTexMid.value = N ?? 0) : (this.uniforms.splatTexEnable.value = !1, this.uniforms.splatTexture.value = UA.EMPTY_SPLAT_TEXTURE); - } else - this.uniforms.splatTexEnable.value = !1, this.uniforms.splatTexture.value = UA.EMPTY_SPLAT_TEXTURE; - const s = ((k = i.display) == null ? void 0 : k.accumulator.toWorld) ?? new G.Matrix4(), o = g.matrixWorld.clone().invert(); - s.clone().premultiply(o).decompose( - this.uniforms.renderToViewPos.value, - this.uniforms.renderToViewQuat.value, - new G.Vector3() + ) : I.push( + (E, i, o) => (o[g] = TI[B.type]( + E, + i, + A + ), i + QI[B.type]) ); } - // Update the uniforms for the given viewpoint. - // Note that the client expects to be able to call render() at any point - // to update the canvas, so we must switch the viewpoint back to - // defaultView when we're finished. - prepareViewpoint(A) { - var I, g, B, C; - if (this.viewpoint = A ?? this.viewpoint, this.viewpoint.display) { - const { accumulator: E, geometry: D } = this.viewpoint.display; - this.uniforms.numSplats.value = E.splats.numSplats, this.uniforms.packedSplats.value = E.splats.getTexture(), this.uniforms.rgbMinMaxLnScaleMinMax.value.set( - ((I = E.splats.splatEncoding) == null ? void 0 : I.rgbMin) ?? 0, - ((g = E.splats.splatEncoding) == null ? void 0 : g.rgbMax) ?? 1, - ((B = E.splats.splatEncoding) == null ? void 0 : B.lnScaleMin) ?? pA, - ((C = E.splats.splatEncoding) == null ? void 0 : C.lnScaleMax) ?? fA - ), this.geometry = D, this.material.transparent = !this.viewpoint.stochastic, this.material.depthWrite = this.viewpoint.stochastic, this.material.needsUpdate = !0; - } else - this.uniforms.numSplats.value = 0, this.uniforms.packedSplats.value = $A.getEmptyArray, this.geometry = OB; - } - // If spark.autoUpdate is false then you must manually call - // spark.update({ scene }) to have the scene Gsplats be re-generated. - update({ - scene: A, - viewToWorld: I - }) { - const g = this.matrixWorld; - this.preUpdate ? this.updateInternal({ - scene: A, - originToWorld: g.clone(), - viewToWorld: I - }) : (this.pendingUpdate.scene = A, this.pendingUpdate.originToWorld.copy(g), this.pendingUpdate.timeoutId === -1 && (this.pendingUpdate.timeoutId = setTimeout(() => { - const { scene: B, originToWorld: C } = this.pendingUpdate; - this.pendingUpdate.scene = null, this.pendingUpdate.timeoutId = -1, this.updateInternal({ - scene: B, - originToWorld: C, - viewToWorld: I - }) && this.renderer.getContext().flush(); - }, 1))); - } - updateInternal({ - scene: A, - originToWorld: I, - viewToWorld: g - }) { - var k; - if (!this.canAllocAccumulator()) - return !1; - I || (I = this.active.toWorld), g = g ?? I.clone(); - const B = this.time ?? this.clock.getElapsedTime(), C = B - (this.lastUpdateTime ?? B); - this.lastUpdateTime = B; - const E = this.active.mapping.reduce((R, F) => (R.set(F.node, F), R), /* @__PURE__ */ new Map()), { generators: D, visibleGenerators: i, globalEdits: w } = this.compileScene(A); - for (const R of D) - (k = R.frameUpdate) == null || k.call(R, { - renderer: this.renderer, - object: R, - time: B, - deltaTime: C, - viewToWorld: g, - globalEdits: w - }); - const s = new Set(i.map((R) => R.uuid)); - for (const R of D) { - const F = E.get(R), S = R.generator && s.has(R.uuid) ? R.numSplats : 0; - (this.needsUpdate || R.generator !== (F == null ? void 0 : F.generator) || S !== (F == null ? void 0 : F.count)) && R.updateVersion(); - } - const o = !Zg({ - matrix1: I, - matrix2: this.active.toWorld, - maxDistance: this.originDistance - }), y = this.needsUpdate || o || D.length !== E.size || D.some((R) => { - var F; - return R.version !== ((F = E.get(R)) == null ? void 0 : F.version); - }); - this.needsUpdate = !1; - let h = null; - if (y) { - if (h = this.maybeAllocAccumulator(), !h) - throw new Error("Unreachable"); - const R = !Zg({ - matrix1: I, - matrix2: h.toWorld, - maxDistance: 1e-5, - minCoorient: 0.99999 - }), a = i.map((J, t) => { - const H = E.get(J); - return H ? ( - // Sort by version deltas then by previous ordering in the mapping, - // attempting to keep unchanging generators near the front - // to improve our chances of avoiding a re-generation. - [J.version - H.version, H.base, J] - ) : [Number.POSITIVE_INFINITY, J.version, J]; - }).sort((J, t) => J[0] !== t[0] ? J[0] - t[0] : J[1] - t[1]).map(([J, t, H]) => H), S = a.map((J) => J.numSplats), { maxSplats: M, mapping: c } = h.splats.generateMapping(S), N = a.map((J, t) => { - const { base: H, count: K } = c[t]; - return { - node: J, - generator: J.generator, - version: J.version, - base: H, - count: K - }; - }); - I.clone().invert().decompose( - this.translateToAccumulator.value, - this.rotateToAccumulator.value, - new G.Vector3() - ), h.ensureGenerate(M), h.splats.splatEncoding = { ...this.splatEncoding }, h.generateSplats({ - renderer: this.renderer, - modifier: this.modifier, - generators: N, - forceUpdate: R, - originToWorld: I - }), h.splatsVersion = this.active.splatsVersion + 1; - const U = h.hasCorrespondence(this.active); - h.mappingVersion = this.active.mappingVersion + (U ? 0 : 1), this.releaseAccumulator(this.active), this.active = h, this.prepareViewpoint(); - } - return setTimeout(() => { - for (const R of this.autoViewpoints) - R.autoPoll({ accumulator: h ?? void 0 }); - }, 1), !0; - } - compileScene(A) { - const I = []; - A.traverse((C) => { - C instanceof PI && I.push(C); - }); - const g = []; - A.traverseVisible((C) => { - C instanceof PI && g.push(C); - }); - const B = /* @__PURE__ */ new Set(); - return A.traverseVisible((C) => { - if (C instanceof Sg) { - let E = C.parent; - for (; E != null && !(E instanceof vA); ) - E = E.parent; - E == null && B.add(C); - } - }), { - generators: I, - visibleGenerators: g, - globalEdits: Array.from(B) - }; - } - // Renders out the scene to an environment map that can be used for - // Image-based lighting or similar applications. First optionally updates Gsplats, - // sorts them with respect to the provided worldCenter, renders 6 cube faces, - // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture - // that can assigned directly to a THREE.MeshStandardMaterial.envMap property. - async renderEnvMap({ - renderer: A, - scene: I, - worldCenter: g, - size: B = 256, - near: C = 0.1, - far: E = 1e3, - hideObjects: D = [], - update: i = !1 - }) { - var h, k; - if (this.envViewpoint || (this.envViewpoint = this.newViewpoint({ sort360: !0 })), !UA.cubeRender || UA.cubeRender.target.width !== B || UA.cubeRender.near !== C || UA.cubeRender.far !== E) { - UA.cubeRender && UA.cubeRender.target.dispose(); - const R = new G.WebGLCubeRenderTarget(B, { - format: G.RGBAFormat, - generateMipmaps: !0, - minFilter: G.LinearMipMapLinearFilter - }), F = new G.CubeCamera(C, E, R); - UA.cubeRender = { target: R, camera: F, near: C, far: E }; - } - UA.pmrem || (UA.pmrem = new G.PMREMGenerator( - A ?? this.renderer - )); - const w = new G.Matrix4().setPosition(g); - await ((h = this.envViewpoint) == null ? void 0 : h.prepare({ scene: I, viewToWorld: w, update: i })); - const { target: s, camera: o } = UA.cubeRender; - o.position.copy(g); - const y = /* @__PURE__ */ new Map(); - for (const R of D) - y.set(R, R.visible), R.visible = !1; - this.prepareViewpoint(this.envViewpoint), o.update(A ?? this.renderer, I), this.prepareViewpoint(this.defaultView); - for (const [R, F] of y.entries()) - R.visible = F; - return (k = UA.pmrem) == null ? void 0 : k.fromCubemap(s.texture).texture; - } - // Utility function to recursively set the envMap property for any - // THREE.MeshStandardMaterial within the subtree of root. - recurseSetEnvMap(A, I) { - A.traverse((g) => { - if (g instanceof G.Mesh) - if (Array.isArray(g.material)) - for (const B of g.material) - B instanceof G.MeshStandardMaterial && (B.envMap = I); - else - g.material instanceof G.MeshStandardMaterial && (g.material.envMap = I); - }); - } - // Utility function that helps extract the Gsplat RGBA values from a - // SplatGenerator, including the result of any real-time RGBA SDF edits applied - // to a SplatMesh. This effectively "bakes" any computed RGBA values, which can - // now be used as a pipeline input via SplatMesh.splatRgba to inject these - // baked values into the Gsplat data. - getRgba({ - generator: A, - rgba: I - }) { - const g = this.active.mapping.find(({ node: B }) => B === A); - if (!g) - throw new Error("Generator not found"); - return I = I ?? new TQ(), I.fromPackedSplats({ - packedSplats: this.active.splats, - base: g.base, - count: g.count, - renderer: this.renderer - }), I; - } - // Utility function that builds on getRgba({ generator }) and additionally - // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA - // in that byte order. - async readRgba({ - generator: A, - rgba: I - }) { - return I = this.getRgba({ generator: A, rgba: I }), I.read(); - } -}; -UA.cubeRender = null, UA.pmrem = null, UA.EMPTY_SPLAT_TEXTURE = new G.Data3DTexture(); -let TB = UA; -const OB = new LQ(new Uint32Array(1), 0); -cA( - { packedSplats: tg, index: "int" }, - { gsplat: Z }, - ({ packedSplats: Q, index: A }) => { - if (!Q || !A) - throw new Error("Invalid input"); - return { gsplat: _I(Q, A) }; - } -); -function iR(Q) { - if (Q.length === 0) - return null; - const A = new G.Vector3(), I = new G.Quaternion(), g = new G.Vector3(), B = [], C = []; - for (const E of Q) - E.decompose(A, I, g), B.push(A), C.push(I); - return new G.Matrix4().compose( - MC(B), - JC(C), - new G.Vector3(1, 1, 1) - ); + return (g, B, C) => { + let E = B; + for (let i = 0; i < I.length; i++) + E = I[i](g, E, C); + return E; + }; +} +function TQ(Q) { + let A = 0; + for (; Q[`f_rest_${A}`]; ) + A += 1; + const I = zG[A]; + if (I == null) + throw new Error(`Unsupported number of SH coefficients: ${A}`); + return I; } -function wR(Q, A, I) { +function Eh(Q, A, I) { const g = Math.floor(Q.length / 32); if (g * 32 !== Q.length) throw new Error("Invalid .splat file size"); const B = new Float32Array(Q.buffer); for (let C = 0; C < g; ++C) { - const E = C * 32, D = C * 8, i = B[D + 0], w = B[D + 1], s = B[D + 2], o = B[D + 3], y = B[D + 4], h = B[D + 5], k = Q[E + 24] / 255, R = Q[E + 25] / 255, F = Q[E + 26] / 255, a = Q[E + 27] / 255, S = (Q[E + 28] - 128) / 128, M = (Q[E + 29] - 128) / 128, c = (Q[E + 30] - 128) / 128, N = (Q[E + 31] - 128) / 128; + const E = C * 32, i = C * 8, o = B[i + 0], D = B[i + 1], w = B[i + 2], s = B[i + 3], t = B[i + 4], G = B[i + 5], c = Q[E + 24] / 255, h = Q[E + 25] / 255, y = Q[E + 26] / 255, S = Q[E + 27] / 255, F = (Q[E + 28] - 128) / 128, e = (Q[E + 29] - 128) / 128, k = (Q[E + 30] - 128) / 128, R = (Q[E + 31] - 128) / 128; I( C, - i, + o, + D, w, s, - o, - y, - h, - M, - c, - N, - S, - a, + t, + G, + e, k, R, - F + F, + S, + c, + h, + y ); } } -const mB = { +const pB = { 0: { bytesPerCenter: 12, bytesPerScale: 12, @@ -13594,59 +12783,59 @@ const mB = { sphericalHarmonicsOffsetBytes: 24, scaleRange: 32767 } -}, oR = { +}, ih = { 0: 0, 1: 9, 2: 24, 3: 45 }; -function sR(Q, A, I, g) { - var R; +function Dh(Q, A, I, g) { + var h; let E = 0; - const D = new DataView(Q.buffer, E, 4096); + const i = new DataView(Q.buffer, E, 4096); E += 4096; - const i = D.getUint8(0), w = D.getUint8(1); - if (i !== 0 || w < 1) + const o = i.getUint8(0), D = i.getUint8(1); + if (o !== 0 || D < 1) throw new Error( - `Unsupported .ksplat version: ${i}.${w}` + `Unsupported .ksplat version: ${o}.${D}` ); - const s = D.getUint32(4, !0); - D.getUint32(16, !0); - const o = D.getUint16(20, !0); - if (o < 0 || o > 2) - throw new Error(`Invalid .ksplat compression level: ${o}`); - const y = D.getFloat32(36, !0) || -1.5, h = D.getFloat32(40, !0) || 1.5; - let k = 4096 + s * 1024; - for (let F = 0; F < s; ++F) { - let a = function(mA, $) { - if (o === 0) + const w = i.getUint32(4, !0); + i.getUint32(16, !0); + const s = i.getUint16(20, !0); + if (s < 0 || s > 2) + throw new Error(`Invalid .ksplat compression level: ${s}`); + const t = i.getFloat32(36, !0) || -1.5, G = i.getFloat32(40, !0) || 1.5; + let c = 4096 + w * 1024; + for (let y = 0; y < w; ++y) { + let S = function(TA, $) { + if (s === 0) return _.getFloat32( - mA + b + $ * 4, + TA + u + $ * 4, !0 ); - if (o === 1) - return NA( + if (s === 1) + return FA( _.getUint16( - mA + b + $ * 2, + TA + u + $ * 2, !0 ) ); - const RI = _.getUint8(mA + b + $) / 255; - return y + RI * (h - y); + const aI = _.getUint8(TA + u + $) / 255; + return t + aI * (G - t); }; - const S = new DataView(Q.buffer, E, 1024); + const F = new DataView(Q.buffer, E, 1024); E += 1024; - const M = S.getUint32(0, !0), c = S.getUint32(4, !0), N = S.getUint32(8, !0), U = S.getUint32(12, !0), J = S.getFloat32(16, !0), t = S.getUint16(20, !0), H = (S.getUint32(24, !0) || ((R = mB[o]) == null ? void 0 : R.scaleRange)) ?? 1, K = S.getUint32(32, !0), Y = K * N, L = S.getUint32(36, !0), q = L * 4, n = t * U + q, r = S.getUint16(40, !0), p = oR[r], { - bytesPerCenter: m, - bytesPerScale: IA, - bytesPerRotation: X, + const e = F.getUint32(0, !0), k = F.getUint32(4, !0), R = F.getUint32(8, !0), N = F.getUint32(12, !0), U = F.getFloat32(16, !0), M = F.getUint16(20, !0), J = (F.getUint32(24, !0) || ((h = pB[s]) == null ? void 0 : h.scaleRange)) ?? 1, H = F.getUint32(32, !0), n = H * R, L = F.getUint32(36, !0), x = L * 4, d = M * N + x, Y = F.getUint16(40, !0), p = ih[Y], { + bytesPerCenter: O, + bytesPerScale: gA, + bytesPerRotation: v, bytesPerColor: EA, - bytesPerSphericalHarmonicsComponent: j, - scaleOffsetBytes: gA, - rotationOffsetBytes: W, - colorOffsetBytes: u, - sphericalHarmonicsOffsetBytes: b - } = mB[o], T = m + IA + X + EA + p * j, f = T * c, FA = f + n, sA = [0, 3, 6, 1, 4, 7, 2, 5, 8], aA = [ + bytesPerSphericalHarmonicsComponent: W, + scaleOffsetBytes: QA, + rotationOffsetBytes: X, + colorOffsetBytes: P, + sphericalHarmonicsOffsetBytes: u + } = pB[s], m = O + gA + v + EA + p * W, f = m * k, hA = f + d, aA = [0, 3, 6, 1, 4, 7, 2, 5, 8], yA = [ 9, 14, 19, @@ -13662,7 +12851,7 @@ function sR(Q, A, I, g) { 13, 18, 23 - ], SA = [ + ], cA = [ 24, 31, 38, @@ -13684,72 +12873,72 @@ function sR(Q, A, I, g) { 30, 37, 44 - ], wA = r >= 1 ? new Float32Array(3 * 3) : void 0, GA = r >= 2 ? new Float32Array(5 * 3) : void 0, AI = r >= 3 ? new Float32Array(7 * 3) : void 0, TA = J / 2 / H, FI = k + q, aI = k + n, _ = new DataView( + ], sA = Y >= 1 ? new Float32Array(3 * 3) : void 0, tA = Y >= 2 ? new Float32Array(5 * 3) : void 0, $A = Y >= 3 ? new Float32Array(7 * 3) : void 0, PA = U / 2 / J, yI = c + x, cI = c + d, _ = new DataView( Q.buffer, - aI, + cI, f - ), OA = new Float32Array( + ), mA = new Float32Array( Q.buffer, - FI, - U * 3 - ), LA = new Uint32Array( + yI, + N * 3 + ), MA = new Uint32Array( Q.buffer, - k, + c, L ); - let Cg = K, Hg = Y; - for (let mA = 0; mA < M; ++mA) { - const $ = mA * T; - let RI; - if (mA < Y) - RI = Math.floor(mA / N); + let $I = H, ng = n; + for (let TA = 0; TA < e; ++TA) { + const $ = TA * m; + let aI; + if (TA < n) + aI = Math.floor(TA / R); else { - const SI = LA[Cg - K]; - mA >= Hg + SI && (Cg += 1, Hg += SI), RI = Cg; - } - const sQ = o === 0 ? _.getFloat32($ + 0, !0) : (_.getUint16($ + 0, !0) - H) * TA + OA[3 * RI + 0], GQ = o === 0 ? _.getFloat32($ + 4, !0) : (_.getUint16($ + 2, !0) - H) * TA + OA[3 * RI + 1], yQ = o === 0 ? _.getFloat32($ + 8, !0) : (_.getUint16($ + 4, !0) - H) * TA + OA[3 * RI + 2], hQ = o === 0 ? _.getFloat32($ + gA + 0, !0) : NA(_.getUint16($ + gA + 0, !0)), RQ = o === 0 ? _.getFloat32($ + gA + 4, !0) : NA(_.getUint16($ + gA + 2, !0)), Xw = o === 0 ? _.getFloat32($ + gA + 8, !0) : NA(_.getUint16($ + gA + 4, !0)), Ww = o === 0 ? _.getFloat32($ + W + 0, !0) : NA( - _.getUint16($ + W + 0, !0) - ), jw = o === 0 ? _.getFloat32($ + W + 4, !0) : NA( - _.getUint16($ + W + 2, !0) - ), vw = o === 0 ? _.getFloat32($ + W + 8, !0) : NA( - _.getUint16($ + W + 4, !0) - ), zw = o === 0 ? _.getFloat32($ + W + 12, !0) : NA( - _.getUint16($ + W + 6, !0) - ), _w = _.getUint8($ + u + 0) / 255, $w = _.getUint8($ + u + 1) / 255, Ao = _.getUint8($ + u + 2) / 255, Io = _.getUint8($ + u + 3) / 255; + const SI = MA[$I - H]; + TA >= ng + SI && ($I += 1, ng += SI), aI = $I; + } + const sQ = s === 0 ? _.getFloat32($ + 0, !0) : (_.getUint16($ + 0, !0) - J) * PA + mA[3 * aI + 0], wQ = s === 0 ? _.getFloat32($ + 4, !0) : (_.getUint16($ + 2, !0) - J) * PA + mA[3 * aI + 1], aQ = s === 0 ? _.getFloat32($ + 8, !0) : (_.getUint16($ + 4, !0) - J) * PA + mA[3 * aI + 2], tQ = s === 0 ? _.getFloat32($ + QA + 0, !0) : FA(_.getUint16($ + QA + 0, !0)), GQ = s === 0 ? _.getFloat32($ + QA + 4, !0) : FA(_.getUint16($ + QA + 2, !0)), uo = s === 0 ? _.getFloat32($ + QA + 8, !0) : FA(_.getUint16($ + QA + 4, !0)), bo = s === 0 ? _.getFloat32($ + X + 0, !0) : FA( + _.getUint16($ + X + 0, !0) + ), Po = s === 0 ? _.getFloat32($ + X + 4, !0) : FA( + _.getUint16($ + X + 2, !0) + ), mo = s === 0 ? _.getFloat32($ + X + 8, !0) : FA( + _.getUint16($ + X + 4, !0) + ), To = s === 0 ? _.getFloat32($ + X + 12, !0) : FA( + _.getUint16($ + X + 6, !0) + ), Oo = _.getUint8($ + P + 0) / 255, Zo = _.getUint8($ + P + 1) / 255, vo = _.getUint8($ + P + 2) / 255, Xo = _.getUint8($ + P + 3) / 255; if (I( - mA, + TA, sQ, + wQ, + aQ, + tQ, GQ, - yQ, - hQ, - RQ, - Xw, - jw, - vw, - zw, - Ww, - Io, - _w, - $w, - Ao - ), r >= 1 && wA) { - for (const [SI, Eg] of sA.entries()) - wA[SI] = a($, Eg); - if (GA) - for (const [SI, Eg] of aA.entries()) - GA[SI] = a($, Eg); - if (AI) - for (const [SI, Eg] of SA.entries()) - AI[SI] = a($, Eg); - g == null || g(mA, wA, GA, AI); - } - } - k += FA; - } -} -class GR { + uo, + Po, + mo, + To, + bo, + Xo, + Oo, + Zo, + vo + ), Y >= 1 && sA) { + for (const [SI, Ag] of aA.entries()) + sA[SI] = S($, Ag); + if (tA) + for (const [SI, Ag] of yA.entries()) + tA[SI] = S($, Ag); + if ($A) + for (const [SI, Ag] of cA.entries()) + $A[SI] = S($, Ag); + g == null || g(TA, sA, tA, $A); + } + } + c += hA; + } +} +class oh { constructor({ fileBytes: A }) { - this.version = -1, this.numSplats = 0, this.shDegree = 0, this.fractionalBits = 0, this.flags = 0, this.flagAntiAlias = !1, this.flagLod = !1, this.reserved = 0, this.headerParsed = !1, this.parsed = !1, this.fileBytes = A instanceof ArrayBuffer ? new Uint8Array(A) : A, this.reader = new eC({ + this.version = -1, this.numSplats = 0, this.shDegree = 0, this.fractionalBits = 0, this.flags = 0, this.flagAntiAlias = !1, this.flagLod = !1, this.reserved = 0, this.headerParsed = !1, this.parsed = !1, this.fileBytes = A instanceof ArrayBuffer ? new Uint8Array(A) : A, this.reader = new dE({ fileBytes: this.fileBytes }); } @@ -13764,116 +12953,116 @@ class GR { this.numSplats = A.getUint32(8, !0), this.shDegree = A.getUint8(12), this.fractionalBits = A.getUint8(13), this.flags = A.getUint8(14), this.flagAntiAlias = (this.flags & 1) !== 0, this.flagLod = (this.flags & 128) !== 0, this.reserved = A.getUint8(15), this.headerParsed = !0, this.parsed = !1; } async parseSplats(A, I, g, B, C, E, { - childCounts: D, - childStarts: i + childCounts: i, + childStarts: o } = {}) { if (!this.headerParsed) throw new Error("SPZ file header must be parsed first"); if (this.parsed) throw new Error("SPZ file already parsed"); if (this.parsed = !0, this.version === 1) { - const w = await this.reader.read(this.numSplats * 3 * 2), s = new Uint16Array(w.buffer); - for (let o = 0; o < this.numSplats; o++) { - const y = o * 3, h = NA(s[y]), k = NA(s[y + 1]), R = NA(s[y + 2]); - A == null || A(o, h, k, R); + const D = await this.reader.read(this.numSplats * 3 * 2), w = new Uint16Array(D.buffer); + for (let s = 0; s < this.numSplats; s++) { + const t = s * 3, G = FA(w[t]), c = FA(w[t + 1]), h = FA(w[t + 2]); + A == null || A(s, G, c, h); } } else if (this.version === 2 || this.version === 3) { - const w = 1 << this.fractionalBits, s = await this.reader.read(this.numSplats * 3 * 3); - for (let o = 0; o < this.numSplats; o++) { - const y = o * 9, h = ((s[y + 2] << 24 | s[y + 1] << 16 | s[y] << 8) >> 8) / w, k = ((s[y + 5] << 24 | s[y + 4] << 16 | s[y + 3] << 8) >> 8) / w, R = ((s[y + 8] << 24 | s[y + 7] << 16 | s[y + 6] << 8) >> 8) / w; - A == null || A(o, h, k, R); + const D = 1 << this.fractionalBits, w = await this.reader.read(this.numSplats * 3 * 3); + for (let s = 0; s < this.numSplats; s++) { + const t = s * 9, G = ((w[t + 2] << 24 | w[t + 1] << 16 | w[t] << 8) >> 8) / D, c = ((w[t + 5] << 24 | w[t + 4] << 16 | w[t + 3] << 8) >> 8) / D, h = ((w[t + 8] << 24 | w[t + 7] << 16 | w[t + 6] << 8) >> 8) / D; + A == null || A(s, G, c, h); } } else throw new Error("Unreachable"); { - const w = await this.reader.read(this.numSplats); - for (let s = 0; s < this.numSplats; s++) - I == null || I(s, w[s] / 255); + const D = await this.reader.read(this.numSplats); + for (let w = 0; w < this.numSplats; w++) + I == null || I(w, D[w] / 255); } { - const w = await this.reader.read(this.numSplats * 3), s = Tw / 0.15; - for (let o = 0; o < this.numSplats; o++) { - const y = o * 3, h = (w[y] / 255 - 0.5) * s + 0.5, k = (w[y + 1] / 255 - 0.5) * s + 0.5, R = (w[y + 2] / 255 - 0.5) * s + 0.5; - g == null || g(o, h, k, R); + const D = await this.reader.read(this.numSplats * 3), w = lo / 0.15; + for (let s = 0; s < this.numSplats; s++) { + const t = s * 3, G = (D[t] / 255 - 0.5) * w + 0.5, c = (D[t + 1] / 255 - 0.5) * w + 0.5, h = (D[t + 2] / 255 - 0.5) * w + 0.5; + g == null || g(s, G, c, h); } } { - const w = await this.reader.read(this.numSplats * 3); - for (let s = 0; s < this.numSplats; s++) { - const o = s * 3, y = Math.exp(w[o] / 16 - 10), h = Math.exp(w[o + 1] / 16 - 10), k = Math.exp(w[o + 2] / 16 - 10); - B == null || B(s, y, h, k); + const D = await this.reader.read(this.numSplats * 3); + for (let w = 0; w < this.numSplats; w++) { + const s = w * 3, t = Math.exp(D[s] / 16 - 10), G = Math.exp(D[s + 1] / 16 - 10), c = Math.exp(D[s + 2] / 16 - 10); + B == null || B(w, t, G, c); } } if (this.version === 3) { - const w = 1 / Math.sqrt(2), s = await this.reader.read(this.numSplats * 4); - for (let o = 0; o < this.numSplats; o++) { - const y = o * 4, h = [0, 0, 0, 0], k = [ - s[y], - s[y + 1], - s[y + 2], - s[y + 3] - ], R = k[0] + (k[1] << 8) + (k[2] << 16) + (k[3] << 24), F = 511, a = R >>> 30; - let S = R, M = 0; - for (let N = 3; N >= 0; --N) - if (N !== a) { - const U = S & F, J = S >>> 9 & 1; - S = S >>> 10, h[N] = w * (U / F), h[N] = J === 0 ? h[N] : -h[N], M += h[N] * h[N]; + const D = 1 / Math.sqrt(2), w = await this.reader.read(this.numSplats * 4); + for (let s = 0; s < this.numSplats; s++) { + const t = s * 4, G = [0, 0, 0, 0], c = [ + w[t], + w[t + 1], + w[t + 2], + w[t + 3] + ], h = c[0] + (c[1] << 8) + (c[2] << 16) + (c[3] << 24), y = 511, S = h >>> 30; + let F = h, e = 0; + for (let R = 3; R >= 0; --R) + if (R !== S) { + const N = F & y, U = F >>> 9 & 1; + F = F >>> 10, G[R] = D * (N / y), G[R] = U === 0 ? G[R] : -G[R], e += G[R] * G[R]; } - const c = 1 - M; - h[a] = Math.sqrt(Math.max(c, 0)), C == null || C( - o, - h[0], - h[1], - h[2], - h[3] + const k = 1 - e; + G[S] = Math.sqrt(Math.max(k, 0)), C == null || C( + s, + G[0], + G[1], + G[2], + G[3] ); } } else { - const w = await this.reader.read(this.numSplats * 3); - for (let s = 0; s < this.numSplats; s++) { - const o = s * 3, y = w[o] / 127.5 - 1, h = w[o + 1] / 127.5 - 1, k = w[o + 2] / 127.5 - 1, R = Math.sqrt( - Math.max(0, 1 - y * y - h * h - k * k) + const D = await this.reader.read(this.numSplats * 3); + for (let w = 0; w < this.numSplats; w++) { + const s = w * 3, t = D[s] / 127.5 - 1, G = D[s + 1] / 127.5 - 1, c = D[s + 2] / 127.5 - 1, h = Math.sqrt( + Math.max(0, 1 - t * t - G * G - c * c) ); - C == null || C(s, y, h, k, R); + C == null || C(w, t, G, c, h); } } if (E && this.shDegree >= 1) { - const w = new Float32Array(9), s = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0, o = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0, y = await this.reader.read( - this.numSplats * uw[this.shDegree] * 3 + const D = new Float32Array(9), w = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0, s = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0, t = await this.reader.read( + this.numSplats * Yo[this.shDegree] * 3 ); - let h = 0; - for (let k = 0; k < this.numSplats; k++) { - for (let R = 0; R < 9; ++R) - w[R] = (y[h + R] - 128) / 128; - if (h += 9, s) { - for (let R = 0; R < 15; ++R) - s[R] = (y[h + R] - 128) / 128; - h += 15; + let G = 0; + for (let c = 0; c < this.numSplats; c++) { + for (let h = 0; h < 9; ++h) + D[h] = (t[G + h] - 128) / 128; + if (G += 9, w) { + for (let h = 0; h < 15; ++h) + w[h] = (t[G + h] - 128) / 128; + G += 15; } - if (o) { - for (let R = 0; R < 21; ++R) - o[R] = (y[h + R] - 128) / 128; - h += 21; + if (s) { + for (let h = 0; h < 21; ++h) + s[h] = (t[G + h] - 128) / 128; + G += 21; } - E == null || E(k, w, s, o); + E == null || E(c, D, w, s); } } if (this.flagLod) { - let w = await this.reader.read(this.numSplats * 2); - for (let s = 0; s < this.numSplats; s++) { - const o = s * 2, y = w[o] + (w[o + 1] << 8); - D == null || D(s, y); + let D = await this.reader.read(this.numSplats * 2); + for (let w = 0; w < this.numSplats; w++) { + const s = w * 2, t = D[s] + (D[s + 1] << 8); + i == null || i(w, t); } - w = await this.reader.read(this.numSplats * 4); - for (let s = 0; s < this.numSplats; s++) { - const o = s * 4, y = w[o] + (w[o + 1] << 8) + (w[o + 2] << 16) + (w[o + 3] << 24); - i == null || i(s, y); + D = await this.reader.read(this.numSplats * 4); + for (let w = 0; w < this.numSplats; w++) { + const s = w * 4, t = D[s] + (D[s + 1] << 8) + (D[s + 2] << 16) + (D[s + 3] << 24); + o == null || o(w, t); } } } } -const uw = { 1: 3, 2: 8, 3: 15 }, Tw = 0.28209479177387814, yR = 1347635022, hR = 3, RR = 1; -class MI { +const Yo = { 1: 3, 2: 8, 3: 15 }, lo = 0.28209479177387814, sh = 1347635022, wh = 3, ah = 1; +class eI { constructor({ numSplats: A, shDegree: I, @@ -13883,13 +13072,13 @@ class MI { this.clippedCount = 0; const C = 20 + // Rotation (I >= 1 ? 9 : 0) + (I >= 2 ? 15 : 0) + (I >= 3 ? 21 : 0), E = 16 + A * C; - this.buffer = new ArrayBuffer(E), this.view = new DataView(this.buffer), this.view.setUint32(0, yR, !0), this.view.setUint32(4, hR, !0), this.view.setUint32(8, A, !0), this.view.setUint8(12, I), this.view.setUint8(13, g), this.view.setUint8(14, B ? RR : 0), this.view.setUint8(15, 0), this.numSplats = A, this.shDegree = I, this.fractionalBits = g, this.fraction = 1 << g, this.flagAntiAlias = B; + this.buffer = new ArrayBuffer(E), this.view = new DataView(this.buffer), this.view.setUint32(0, sh, !0), this.view.setUint32(4, wh, !0), this.view.setUint32(8, A, !0), this.view.setUint8(12, I), this.view.setUint8(13, g), this.view.setUint8(14, B ? ah : 0), this.view.setUint8(15, 0), this.numSplats = A, this.shDegree = I, this.fractionalBits = g, this.fraction = 1 << g, this.flagAntiAlias = B; } setCenter(A, I, g, B) { - const C = Math.round(I * this.fraction), E = Math.max(-8388607, Math.min(8388607, C)), D = Math.round(g * this.fraction), i = Math.max(-8388607, Math.min(8388607, D)), w = Math.round(B * this.fraction), s = Math.max(-8388607, Math.min(8388607, w)); - (C !== E || D !== i || w !== s) && (this.clippedCount += 1); - const h = 16 + A * 9; - this.view.setUint8(h, E & 255), this.view.setUint8(h + 1, E >> 8 & 255), this.view.setUint8(h + 2, E >> 16 & 255), this.view.setUint8(h + 3, i & 255), this.view.setUint8(h + 4, i >> 8 & 255), this.view.setUint8(h + 5, i >> 16 & 255), this.view.setUint8(h + 6, s & 255), this.view.setUint8(h + 7, s >> 8 & 255), this.view.setUint8(h + 8, s >> 16 & 255); + const C = Math.round(I * this.fraction), E = Math.max(-8388607, Math.min(8388607, C)), i = Math.round(g * this.fraction), o = Math.max(-8388607, Math.min(8388607, i)), D = Math.round(B * this.fraction), w = Math.max(-8388607, Math.min(8388607, D)); + (C !== E || i !== o || D !== w) && (this.clippedCount += 1); + const G = 16 + A * 9; + this.view.setUint8(G, E & 255), this.view.setUint8(G + 1, E >> 8 & 255), this.view.setUint8(G + 2, E >> 16 & 255), this.view.setUint8(G + 3, o & 255), this.view.setUint8(G + 4, o >> 8 & 255), this.view.setUint8(G + 5, o >> 16 & 255), this.view.setUint8(G + 6, w & 255), this.view.setUint8(G + 7, w >> 8 & 255), this.view.setUint8(G + 8, w >> 16 & 255); } setAlpha(A, I) { const g = 16 + this.numSplats * 9 + A; @@ -13899,12 +13088,12 @@ class MI { ); } static scaleRgb(A) { - const I = ((A - 0.5) / (Tw / 0.15) + 0.5) * 255; + const I = ((A - 0.5) / (lo / 0.15) + 0.5) * 255; return Math.max(0, Math.min(255, Math.round(I))); } setRgb(A, I, g, B) { const C = 16 + this.numSplats * 10 + A * 3; - this.view.setUint8(C, MI.scaleRgb(I)), this.view.setUint8(C + 1, MI.scaleRgb(g)), this.view.setUint8(C + 2, MI.scaleRgb(B)); + this.view.setUint8(C, eI.scaleRgb(I)), this.view.setUint8(C + 1, eI.scaleRgb(g)), this.view.setUint8(C + 2, eI.scaleRgb(B)); } setScale(A, I, g, B) { const C = 16 + this.numSplats * 13 + A * 3; @@ -13920,37 +13109,37 @@ class MI { ); } setQuat(A, ...I) { - const g = 16 + this.numSplats * 16 + A * 4, B = FC(I); + const g = 16 + this.numSplats * 16 + A * 4, B = kE(I); let C = 0; - for (let i = 1; i < 4; ++i) - Math.abs(B[i]) > Math.abs(B[C]) && (C = i); + for (let o = 1; o < 4; ++o) + Math.abs(B[o]) > Math.abs(B[C]) && (C = o); const E = B[C] < 0 ? 1 : 0; - let D = C; - for (let i = 0; i < 4; ++i) - if (i !== C) { - const w = (B[i] < 0 ? 1 : 0) ^ E, s = Math.floor( - 511 * (Math.abs(B[i]) / Math.SQRT1_2) + 0.5 + let i = C; + for (let o = 0; o < 4; ++o) + if (o !== C) { + const D = (B[o] < 0 ? 1 : 0) ^ E, w = Math.floor( + 511 * (Math.abs(B[o]) / Math.SQRT1_2) + 0.5 ); - D = D << 10 | w << 9 | s; + i = i << 10 | D << 9 | w; } - this.view.setUint8(g, D & 255), this.view.setUint8(g + 1, D >> 8 & 255), this.view.setUint8(g + 2, D >> 16 & 255), this.view.setUint8(g + 3, D >>> 24 & 255); + this.view.setUint8(g, i & 255), this.view.setUint8(g + 1, i >> 8 & 255), this.view.setUint8(g + 2, i >> 16 & 255), this.view.setUint8(g + 3, i >>> 24 & 255); } static quantizeSh(A, I) { const g = Math.round(A * 128) + 128, B = 1 << 8 - I, C = Math.floor((g + B / 2) / B) * B; return Math.max(0, Math.min(255, C)); } setSh(A, I, g, B) { - const C = uw[this.shDegree] || 0, E = 16 + this.numSplats * 20 + A * C * 3; - for (let D = 0; D < 9; ++D) - this.view.setUint8(E + D, MI.quantizeSh(I[D], 5)); + const C = Yo[this.shDegree] || 0, E = 16 + this.numSplats * 20 + A * C * 3; + for (let i = 0; i < 9; ++i) + this.view.setUint8(E + i, eI.quantizeSh(I[i], 5)); if (g) { - const D = E + 9; - for (let i = 0; i < 15; ++i) - this.view.setUint8(D + i, MI.quantizeSh(g[i], 4)); + const i = E + 9; + for (let o = 0; o < 15; ++o) + this.view.setUint8(i + o, eI.quantizeSh(g[o], 4)); if (B) { - const i = D + 15; - for (let w = 0; w < 21; ++w) - this.view.setUint8(i + w, MI.quantizeSh(B[w], 4)); + const o = i + 15; + for (let D = 0; D < 21; ++D) + this.view.setUint8(o + D, eI.quantizeSh(B[D], 4)); } } } @@ -13969,243 +13158,243 @@ class MI { ), new Uint8Array(C); } } -async function xk(Q) { - var s, o, y; - const A = new QR(), { +async function Yy(Q) { + var w, s, t; + const A = new uG(), { inputs: I, clipXyz: g, maxSh: B, fractionalBits: C = 12, opacityThreshold: E } = Q; - for (const h of I) { - let k = function(t) { - return t.multiplyScalar(M), t.applyQuaternion(c), t.add(N), t; - }, R = function(t) { - return t.multiplyScalar(M), t; - }, F = function(t) { - return t.premultiply(c), t; - }, a = function(t) { - return !U || U.containsPoint(t); - }, S = function(t) { - return E !== void 0 ? t >= E : !0; + for (const G of I) { + let c = function(M) { + return M.multiplyScalar(e), M.applyQuaternion(k), M.add(R), M; + }, h = function(M) { + return M.multiplyScalar(e), M; + }, y = function(M) { + return M.premultiply(k), M; + }, S = function(M) { + return !N || N.containsPoint(M); + }, F = function(M) { + return E !== void 0 ? M >= E : !0; }; - const M = ((s = h.transform) == null ? void 0 : s.scale) ?? 1, c = new G.Quaternion().fromArray( - ((o = h.transform) == null ? void 0 : o.quaternion) ?? [0, 0, 0, 1] - ), N = new G.Vector3().fromArray( - ((y = h.transform) == null ? void 0 : y.translate) ?? [0, 0, 0] - ), U = g ? new G.Box3( - new G.Vector3().fromArray(g.min), - new G.Vector3().fromArray(g.max) + const e = ((w = G.transform) == null ? void 0 : w.scale) ?? 1, k = new a.Quaternion().fromArray( + ((s = G.transform) == null ? void 0 : s.quaternion) ?? [0, 0, 0, 1] + ), R = new a.Vector3().fromArray( + ((t = G.transform) == null ? void 0 : t.translate) ?? [0, 0, 0] + ), N = g ? new a.Box3( + new a.Vector3().fromArray(g.min), + new a.Vector3().fromArray(g.max) ) : void 0; - let J = h.fileType; - switch (J || (J = NB(h.fileBytes), !J && h.pathOrUrl && (J = cB(h.pathOrUrl))), J) { - case hA.PLY: { - const t = new vg({ fileBytes: h.fileBytes }); - await t.parseHeader(); - let H = null; - t.parseSplats( - (K, Y, L, q, n, r, p, m, IA, X, EA, j, gA, W, u) => { - const b = k(new G.Vector3(Y, L, q)); - if (a(b) && S(j)) { - H = A.pushSplat(), A.setCenter(H, b.x, b.y, b.z); - const T = R( - new G.Vector3(n, r, p) + let U = G.fileType; + switch (U || (U = Lo(G.fileBytes), !U && G.pathOrUrl && (U = no(G.pathOrUrl))), U) { + case LA.PLY: { + const M = new mQ({ fileBytes: G.fileBytes }); + await M.parseHeader(); + let J = null; + M.parseSplats( + (H, n, L, x, d, Y, p, O, gA, v, EA, W, QA, X, P) => { + const u = c(new a.Vector3(n, L, x)); + if (S(u) && F(W)) { + J = A.pushSplat(), A.setCenter(J, u.x, u.y, u.z); + const m = h( + new a.Vector3(d, Y, p) ); - A.setScale(H, T.x, T.y, T.z); - const f = F( - new G.Quaternion(m, IA, X, EA) + A.setScale(J, m.x, m.y, m.z); + const f = y( + new a.Quaternion(O, gA, v, EA) ); A.setQuaternion( - H, + J, f.x, f.y, f.z, f.w - ), A.setOpacity(H, j), A.setColor(H, gA, W, u); + ), A.setOpacity(J, W), A.setColor(J, QA, X, P); } else - H = null; + J = null; }, - (K, Y, L, q) => { - Y && H !== null && A.setSh1(H, Y), L && H !== null && A.setSh2(H, L), q && H !== null && A.setSh3(H, q); + (H, n, L, x) => { + n && J !== null && A.setSh1(J, n), L && J !== null && A.setSh2(J, L), x && J !== null && A.setSh3(J, x); } ); break; } - case hA.SPZ: { - const t = new GR({ fileBytes: h.fileBytes }); - await t.parseHeader(); - const H = new Int32Array(t.numSplats); - H.fill(-1); - const K = new Float32Array(t.numSplats * 3), Y = new G.Vector3(); - t.parseSplats( - (L, q, n, r) => { - const p = k(new G.Vector3(q, n, r)); - K[L * 3] = p.x, K[L * 3 + 1] = p.y, K[L * 3 + 2] = p.z; + case LA.SPZ: { + const M = new oh({ fileBytes: G.fileBytes }); + await M.parseHeader(); + const J = new Int32Array(M.numSplats); + J.fill(-1); + const H = new Float32Array(M.numSplats * 3), n = new a.Vector3(); + M.parseSplats( + (L, x, d, Y) => { + const p = c(new a.Vector3(x, d, Y)); + H[L * 3] = p.x, H[L * 3 + 1] = p.y, H[L * 3 + 2] = p.z; }, - (L, q) => { - Y.fromArray(K, L * 3), a(Y) && S(q) && (H[L] = A.pushSplat(), A.setCenter(H[L], Y.x, Y.y, Y.z), A.setOpacity(H[L], q)); + (L, x) => { + n.fromArray(H, L * 3), S(n) && F(x) && (J[L] = A.pushSplat(), A.setCenter(J[L], n.x, n.y, n.z), A.setOpacity(J[L], x)); }, - (L, q, n, r) => { - H[L] >= 0 && A.setColor(H[L], q, n, r); + (L, x, d, Y) => { + J[L] >= 0 && A.setColor(J[L], x, d, Y); }, - (L, q, n, r) => { - if (H[L] >= 0) { - const p = R( - new G.Vector3(q, n, r) + (L, x, d, Y) => { + if (J[L] >= 0) { + const p = h( + new a.Vector3(x, d, Y) ); - A.setScale(H[L], p.x, p.y, p.z); + A.setScale(J[L], p.x, p.y, p.z); } }, - (L, q, n, r, p) => { - if (H[L] >= 0) { - const m = F( - new G.Quaternion(q, n, r, p) + (L, x, d, Y, p) => { + if (J[L] >= 0) { + const O = y( + new a.Quaternion(x, d, Y, p) ); A.setQuaternion( - H[L], - m.x, - m.y, - m.z, - m.w + J[L], + O.x, + O.y, + O.z, + O.w ); } }, - (L, q, n, r) => { - H[L] >= 0 && (A.setSh1(H[L], q), n && A.setSh2(H[L], n), r && A.setSh3(H[L], r)); + (L, x, d, Y) => { + J[L] >= 0 && (A.setSh1(J[L], x), d && A.setSh2(J[L], d), Y && A.setSh3(J[L], Y)); } ); break; } - case hA.SPLAT: - wR( - h.fileBytes, - (t) => { + case LA.SPLAT: + Eh( + G.fileBytes, + (M) => { }, - (t, H, K, Y, L, q, n, r, p, m, IA, X, EA, j, gA) => { - const W = k(new G.Vector3(H, K, Y)); - if (a(W) && S(X)) { - const u = A.pushSplat(); - A.setCenter(u, W.x, W.y, W.z); - const b = R( - new G.Vector3(L, q, n) + (M, J, H, n, L, x, d, Y, p, O, gA, v, EA, W, QA) => { + const X = c(new a.Vector3(J, H, n)); + if (S(X) && F(v)) { + const P = A.pushSplat(); + A.setCenter(P, X.x, X.y, X.z); + const u = h( + new a.Vector3(L, x, d) ); - A.setScale(u, b.x, b.y, b.z); - const T = F( - new G.Quaternion(r, p, m, IA) + A.setScale(P, u.x, u.y, u.z); + const m = y( + new a.Quaternion(Y, p, O, gA) ); A.setQuaternion( - u, - T.x, - T.y, - T.z, - T.w - ), A.setOpacity(u, X), A.setColor(u, EA, j, gA); + P, + m.x, + m.y, + m.z, + m.w + ), A.setOpacity(P, v), A.setColor(P, EA, W, QA); } } ); break; - case hA.KSPLAT: { - let t = null; - sR( - h.fileBytes, - (H) => { + case LA.KSPLAT: { + let M = null; + Dh( + G.fileBytes, + (J) => { }, - (H, K, Y, L, q, n, r, p, m, IA, X, EA, j, gA, W) => { - const u = k(new G.Vector3(K, Y, L)); - if (a(u) && S(EA)) { - t = A.pushSplat(), A.setCenter(t, u.x, u.y, u.z); - const b = R( - new G.Vector3(q, n, r) + (J, H, n, L, x, d, Y, p, O, gA, v, EA, W, QA, X) => { + const P = c(new a.Vector3(H, n, L)); + if (S(P) && F(EA)) { + M = A.pushSplat(), A.setCenter(M, P.x, P.y, P.z); + const u = h( + new a.Vector3(x, d, Y) ); - A.setScale(t, b.x, b.y, b.z); - const T = F( - new G.Quaternion(p, m, IA, X) + A.setScale(M, u.x, u.y, u.z); + const m = y( + new a.Quaternion(p, O, gA, v) ); A.setQuaternion( - t, - T.x, - T.y, - T.z, - T.w - ), A.setOpacity(t, EA), A.setColor(t, j, gA, W); + M, + m.x, + m.y, + m.z, + m.w + ), A.setOpacity(M, EA), A.setColor(M, W, QA, X); } else - t = null; + M = null; }, - (H, K, Y, L) => { - t !== null && (A.setSh1(t, K), Y && A.setSh2(t, Y), L && A.setSh3(t, L)); + (J, H, n, L) => { + M !== null && (A.setSh1(M, H), n && A.setSh2(M, n), L && A.setSh3(M, L)); } ); break; } default: - throw new Error(`transcodeSpz not implemented for ${J}`); + throw new Error(`transcodeSpz not implemented for ${U}`); } } - const D = Math.min( + const i = Math.min( B ?? 3, A.sh3 ? 3 : A.sh2 ? 2 : A.sh1 ? 1 : 0 - ), i = new MI({ + ), o = new eI({ numSplats: A.numSplats, - shDegree: D, + shDegree: i, fractionalBits: C, flagAntiAlias: !0 }); - for (let h = 0; h < A.numSplats; ++h) { - const k = h * 3, R = h * 4; - i.setCenter( - h, - A.centers[k], - A.centers[k + 1], - A.centers[k + 2] - ), i.setScale( - h, - A.scales[k], - A.scales[k + 1], - A.scales[k + 2] - ), i.setQuat( - h, - A.quaternions[R], - A.quaternions[R + 1], - A.quaternions[R + 2], - A.quaternions[R + 3] - ), i.setAlpha(h, A.opacities[h]), i.setRgb( - h, - A.colors[k], - A.colors[k + 1], - A.colors[k + 2] - ), A.sh1 && D >= 1 && i.setSh( - h, - A.sh1.slice(h * 9, (h + 1) * 9), - D >= 2 && A.sh2 ? A.sh2.slice(h * 15, (h + 1) * 15) : void 0, - D >= 3 && A.sh3 ? A.sh3.slice(h * 21, (h + 1) * 21) : void 0 + for (let G = 0; G < A.numSplats; ++G) { + const c = G * 3, h = G * 4; + o.setCenter( + G, + A.centers[c], + A.centers[c + 1], + A.centers[c + 2] + ), o.setScale( + G, + A.scales[c], + A.scales[c + 1], + A.scales[c + 2] + ), o.setQuat( + G, + A.quaternions[h], + A.quaternions[h + 1], + A.quaternions[h + 2], + A.quaternions[h + 3] + ), o.setAlpha(G, A.opacities[G]), o.setRgb( + G, + A.colors[c], + A.colors[c + 1], + A.colors[c + 2] + ), A.sh1 && i >= 1 && o.setSh( + G, + A.sh1.slice(G * 9, (G + 1) * 9), + i >= 2 && A.sh2 ? A.sh2.slice(G * 15, (G + 1) * 15) : void 0, + i >= 3 && A.sh3 ? A.sh3.slice(G * 21, (G + 1) * 21) : void 0 ); } - return { fileBytes: await i.finalize(), clippedCount: i.clippedCount }; + return { fileBytes: await o.finalize(), clippedCount: o.clippedCount }; } -var kR = /* @__PURE__ */ ((Q) => (Q.DUAL_QUATERNION = "dual_quaternion", Q.LINEAR_BLEND = "linear_blend", Q))(kR || {}); -const O = class O { +var th = /* @__PURE__ */ ((Q) => (Q.DUAL_QUATERNION = "dual_quaternion", Q.LINEAR_BLEND = "linear_blend", Q))(th || {}); +const T = class T { constructor(A) { this.mesh = A.mesh, this.numSplats = A.numSplats ?? this.mesh.numSplats, this.mode = A.mode ?? "dual_quaternion"; - const { width: I, height: g, depth: B, maxSplats: C } = BA(this.numSplats); - this.skinData = new Uint16Array(C * 4), this.skinTexture = new G.DataArrayTexture( + const { width: I, height: g, depth: B, maxSplats: C } = iA(this.numSplats); + this.skinData = new Uint16Array(C * 4), this.skinTexture = new a.DataArrayTexture( this.skinData, I, g, B - ), this.skinTexture.format = G.RGBAIntegerFormat, this.skinTexture.type = G.UnsignedShortType, this.skinTexture.internalFormat = "RGBA16UI", this.skinTexture.needsUpdate = !0, this.numBones = A.numBones ?? 256, this.boneData = new Float32Array(this.numBones * 16), this.boneTexture = new G.DataTexture( + ), this.skinTexture.format = a.RGBAIntegerFormat, this.skinTexture.type = a.UnsignedShortType, this.skinTexture.internalFormat = "RGBA16UI", this.skinTexture.needsUpdate = !0, this.numBones = A.numBones ?? 256, this.boneData = new Float32Array(this.numBones * 16), this.boneTexture = new a.DataTexture( this.boneData, 4, this.numBones, - G.RGBAFormat, - G.FloatType - ), this.boneTexture.internalFormat = "RGBA32F", this.boneTexture.needsUpdate = !0, this.boneRestQuatPosScale = eQ(this.numBones, () => ({ - quat: new G.Quaternion(), - pos: new G.Vector3(), - scale: new G.Vector3() - })), this.mode === "linear_blend" ? this.boneRestInvMats = eQ(this.numBones, () => new G.Matrix4()) : this.boneRestInvMats = [], this.uniform = new x({ + a.RGBAFormat, + a.FloatType + ), this.boneTexture.internalFormat = "RGBA32F", this.boneTexture.needsUpdate = !0, this.boneRestQuatPosScale = YQ(this.numBones, () => ({ + quat: new a.Quaternion(), + pos: new a.Vector3(), + scale: new a.Vector3() + })), this.mode === "linear_blend" ? this.boneRestInvMats = YQ(this.numBones, () => new a.Matrix4()) : this.boneRestInvMats = [], this.uniform = new q({ key: "skinning", - type: wQ, + type: DQ, globals: () => [oQ], value: { numSplats: this.numSplats, @@ -14219,14 +13408,14 @@ const O = class O { modify(A) { if (this.mode === "linear_blend") throw new Error("Linear blend skinning requires covSplats=true"); - return aR(A, this.uniform); + return hh(A, this.uniform); } modifyCov(A) { - return this.mode === "dual_quaternion" ? cR(A, this.uniform) : MR(A, this.uniform); + return this.mode === "dual_quaternion" ? Sh(A, this.uniform) : Fh(A, this.uniform); } // Set the "rest" pose for a bone with position and quaternion orientation. setRestQuatPos(A, I, g) { - this.boneRestQuatPosScale[A].quat.copy(I), this.boneRestQuatPosScale[A].pos.copy(g), this.boneRestQuatPosScale[A].scale.copy(O.UNIT_SCALE), this.mode === "linear_blend" && this.boneRestInvMats[A].compose(g, I, O.UNIT_SCALE).invert(), this.setBoneQuatPos(A, I, g); + this.boneRestQuatPosScale[A].quat.copy(I), this.boneRestQuatPosScale[A].pos.copy(g), this.boneRestQuatPosScale[A].scale.copy(T.UNIT_SCALE), this.mode === "linear_blend" && this.boneRestInvMats[A].compose(g, I, T.UNIT_SCALE).invert(), this.setBoneQuatPos(A, I, g); } getRestQuatPos(A, I, g) { I.copy(this.boneRestQuatPosScale[A].quat), g.copy(this.boneRestQuatPosScale[A].pos); @@ -14250,33 +13439,33 @@ const O = class O { // Set the "current" position and orientation of a bone. setBoneQuatPos(A, I, g) { if (this.mode === "dual_quaternion") { - O.relQuat.copy(this.boneRestQuatPosScale[A].quat).invert(), O.relPos.copy(g).sub(this.boneRestQuatPosScale[A].pos), O.relQuat.multiply(I), O.dual.set( - O.relPos.x, - O.relPos.y, - O.relPos.z, + T.relQuat.copy(this.boneRestQuatPosScale[A].quat).invert(), T.relPos.copy(g).sub(this.boneRestQuatPosScale[A].pos), T.relQuat.multiply(I), T.dual.set( + T.relPos.x, + T.relPos.y, + T.relPos.z, 0 - ).multiply(O.relQuat); + ).multiply(T.relQuat); const B = A * 16; - this.boneData[B + 0] = O.relQuat.x, this.boneData[B + 1] = O.relQuat.y, this.boneData[B + 2] = O.relQuat.z, this.boneData[B + 3] = O.relQuat.w, this.boneData[B + 4] = 0.5 * O.dual.x, this.boneData[B + 5] = 0.5 * O.dual.y, this.boneData[B + 6] = 0.5 * O.dual.z, this.boneData[B + 7] = 0.5 * O.dual.w; + this.boneData[B + 0] = T.relQuat.x, this.boneData[B + 1] = T.relQuat.y, this.boneData[B + 2] = T.relQuat.z, this.boneData[B + 3] = T.relQuat.w, this.boneData[B + 4] = 0.5 * T.dual.x, this.boneData[B + 5] = 0.5 * T.dual.y, this.boneData[B + 6] = 0.5 * T.dual.z, this.boneData[B + 7] = 0.5 * T.dual.w; } else - this.setBoneQuatPosScale(A, I, g, O.UNIT_SCALE); + this.setBoneQuatPosScale(A, I, g, T.UNIT_SCALE); } setBoneQuatPosScale(A, I, g, B) { if (this.mode === "dual_quaternion") throw new Error( "setBoneQuatPosScale only supported for linear blend skinning" ); - O.skinMat.compose(g, I, B), this.setBoneMatrix(A, O.skinMat); + T.skinMat.compose(g, I, B), this.setBoneMatrix(A, T.skinMat); } setBoneMatrix(A, I) { if (this.mode !== "linear_blend") throw new Error("setBoneMatrix only supported for linear blend skinning"); - O.skinMat.multiplyMatrices( + T.skinMat.multiplyMatrices( this.boneRestInvMats[A], I ); const g = A * 16; - this.boneData[g + 0] = O.skinMat.elements[0], this.boneData[g + 1] = O.skinMat.elements[1], this.boneData[g + 2] = O.skinMat.elements[2], this.boneData[g + 3] = O.skinMat.elements[4], this.boneData[g + 4] = O.skinMat.elements[5], this.boneData[g + 5] = O.skinMat.elements[6], this.boneData[g + 6] = O.skinMat.elements[8], this.boneData[g + 7] = O.skinMat.elements[9], this.boneData[g + 8] = O.skinMat.elements[10], this.boneData[g + 9] = O.skinMat.elements[12], this.boneData[g + 10] = O.skinMat.elements[13], this.boneData[g + 11] = O.skinMat.elements[14]; + this.boneData[g + 0] = T.skinMat.elements[0], this.boneData[g + 1] = T.skinMat.elements[1], this.boneData[g + 2] = T.skinMat.elements[2], this.boneData[g + 3] = T.skinMat.elements[4], this.boneData[g + 4] = T.skinMat.elements[5], this.boneData[g + 5] = T.skinMat.elements[6], this.boneData[g + 6] = T.skinMat.elements[8], this.boneData[g + 7] = T.skinMat.elements[9], this.boneData[g + 8] = T.skinMat.elements[10], this.boneData[g + 9] = T.skinMat.elements[12], this.boneData[g + 10] = T.skinMat.elements[13], this.boneData[g + 11] = T.skinMat.elements[14]; } // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones, // you can set the remaining weights to 0 (and index=0). @@ -14290,16 +13479,16 @@ const O = class O { this.boneTexture.needsUpdate = !0, this.mesh.needsUpdate = !0; } }; -O.UNIT_SCALE = new G.Vector3(1, 1, 1), O.relQuat = new G.Quaternion(), O.relPos = new G.Vector3(), O.dual = new G.Quaternion(), O.skinMat = new G.Matrix4(); -let ZB = O; -const wQ = { type: "GsplatSkinning" }, oQ = oA(` +T.UNIT_SCALE = new a.Vector3(1, 1, 1), T.relQuat = new a.Quaternion(), T.relPos = new a.Vector3(), T.dual = new a.Quaternion(), T.skinMat = new a.Matrix4(); +let fB = T; +const DQ = { type: "GsplatSkinning" }, oQ = wA(` struct GsplatSkinning { int numSplats; int numBones; usampler2DArray skinTexture; sampler2D boneTexture; }; -`), FR = oA(` +`), Gh = wA(` void applyGsplatSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -14359,11 +13548,11 @@ const wQ = { type: "GsplatSkinning" }, oQ = oA(` quaternion = quatQuat(quat, quaternion); } `); -function aR(Q, A) { - return new d({ - inTypes: { gsplat: Z, skinning: wQ }, - outTypes: { gsplat: Z }, - globals: () => [oQ, FR], +function hh(Q, A) { + return new l({ + inTypes: { gsplat: V, skinning: DQ }, + outTypes: { gsplat: V }, + globals: () => [oQ, Gh], inputs: { gsplat: Q, skinning: A }, statements: ({ inputs: g, outputs: B }) => { const { skinning: C } = g, { gsplat: E } = B; @@ -14380,7 +13569,7 @@ function aR(Q, A) { } }).outputs.gsplat; } -const SR = oA(` +const yh = wA(` void applyCovSplatDQSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -14444,7 +13633,7 @@ const SR = oA(` xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]); xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]); } -`), NR = oA(` +`), ch = wA(` void applyCovSplatLBSkinning( int numSplats, int numBones, usampler2DArray skinTexture, sampler2D boneTexture, @@ -14492,11 +13681,11 @@ const SR = oA(` xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]); } `); -function cR(Q, A) { - return new d({ - inTypes: { covsplat: eA, skinning: wQ }, - outTypes: { covsplat: eA }, - globals: () => [oQ, SR], +function Sh(Q, A) { + return new l({ + inTypes: { covsplat: KA, skinning: DQ }, + outTypes: { covsplat: KA }, + globals: () => [oQ, yh], inputs: { covsplat: Q, skinning: A }, statements: ({ inputs: g, outputs: B }) => { const { skinning: C } = g, { covsplat: E } = B; @@ -14513,11 +13702,11 @@ function cR(Q, A) { } }).outputs.covsplat; } -function MR(Q, A) { - return new d({ - inTypes: { covsplat: eA, skinning: wQ }, - outTypes: { covsplat: eA }, - globals: () => [oQ, NR], +function Fh(Q, A) { + return new l({ + inTypes: { covsplat: KA, skinning: DQ }, + outTypes: { covsplat: KA }, + globals: () => [oQ, ch], inputs: { covsplat: Q, skinning: A }, statements: ({ inputs: g, outputs: B }) => { const { skinning: C } = g, { covsplat: E } = B; @@ -14534,7 +13723,7 @@ function MR(Q, A) { } }).outputs.covsplat; } -function lk({ +function dy({ // PackedSplats object to add splats to splats: Q, // min and max box extents of the grid @@ -14551,22 +13740,22 @@ function lk({ // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid) color: E }) { - const i = new G.Vector3(), w = new G.Vector3(), s = new G.Quaternion(0, 0, 0, 1); - E == null && (E = (y, h) => y.set( - 0.55 + 0.45 * Math.cos(h.x * 1), - 0.55 + 0.45 * Math.cos(h.y * 1), - 0.55 + 0.45 * Math.cos(h.z * 1) + const o = new a.Vector3(), D = new a.Vector3(), w = new a.Quaternion(0, 0, 0, 1); + E == null && (E = (t, G) => t.set( + 0.55 + 0.45 * Math.cos(G.x * 1), + 0.55 + 0.45 * Math.cos(G.y * 1), + 0.55 + 0.45 * Math.cos(G.z * 1) )); - const o = new G.Color(); - for (let y = A.min.z; y < A.max.z + 1e-6; y += I) - for (let h = A.min.y; h < A.max.y + 1e-6; h += I) - for (let k = A.min.x; k < A.max.x + 1e-6; k += I) { - i.set(k, h, y); - for (let R = 0; R < 2; ++R) - w.setScalar(g * (R ? 1 : B)), R ? typeof E == "function" ? E(o, i) : o.copy(E) : o.setScalar(0), Q.pushSplat(i, w, s, C, o); + const s = new a.Color(); + for (let t = A.min.z; t < A.max.z + 1e-6; t += I) + for (let G = A.min.y; G < A.max.y + 1e-6; G += I) + for (let c = A.min.x; c < A.max.x + 1e-6; c += I) { + o.set(c, G, t); + for (let h = 0; h < 2; ++h) + D.setScalar(g * (h ? 1 : B)), h ? typeof E == "function" ? E(s, o) : s.copy(E) : s.setScalar(0), Q.pushSplat(o, D, w, C, s); } } -function pk({ +function ly({ // PackedSplats object to add splats to splats: Q, // scale (Gsplat scale along axis) @@ -14576,33 +13765,33 @@ function pk({ // relative size of the "shadow copy" of each Gsplat placed behind it axisShadowScale: g = 2, // origins of the axes (default single axis at origin) - origins: B = [new G.Vector3()] + origins: B = [new a.Vector3()] }) { - const C = new G.Vector3(), E = new G.Vector3(), D = new G.Quaternion(0, 0, 0, 1), i = new G.Color(), w = 1; - for (const s of B) - for (let o = 0; o < 3; ++o) { + const C = new a.Vector3(), E = new a.Vector3(), i = new a.Quaternion(0, 0, 0, 1), o = new a.Color(), D = 1; + for (const w of B) + for (let s = 0; s < 3; ++s) { C.set( - s.x + (o === 0 ? A : 0), - s.y + (o === 1 ? A : 0), - s.z + (o === 2 ? A : 0) + w.x + (s === 0 ? A : 0), + w.y + (s === 1 ? A : 0), + w.z + (s === 2 ? A : 0) ); - for (let y = 0; y < 2; ++y) + for (let t = 0; t < 2; ++t) E.set( - (o === 0 ? A : I) * (y ? 1 : g), - (o === 1 ? A : I) * (y ? 1 : g), - (o === 2 ? A : I) * (y ? 1 : g) - ), i.setRGB( - y === 0 ? 0 : o === 0 ? 1 : 0, - y === 0 ? 0 : o === 1 ? 1 : 0, - y === 0 ? 0 : o === 2 ? 1 : 0 - ), Q.pushSplat(C, E, D, w, i); + (s === 0 ? A : I) * (t ? 1 : g), + (s === 1 ? A : I) * (t ? 1 : g), + (s === 2 ? A : I) * (t ? 1 : g) + ), o.setRGB( + t === 0 ? 0 : s === 0 ? 1 : 0, + t === 0 ? 0 : s === 1 ? 1 : 0, + t === 0 ? 0 : s === 2 ? 1 : 0 + ), Q.pushSplat(C, E, i, D, o); } } -function fk({ +function xy({ // PackedSplats object to add splats to splats: Q, // center of the sphere (default: origin) - origin: A = new G.Vector3(), + origin: A = new a.Vector3(), // radius of the sphere radius: I = 1, // maximum depth of recursion for subdividing the sphere @@ -14618,32 +13807,32 @@ function fk({ pointThickness: E = 1e-3, // color of each Gsplat (THREE.Color) or function to set color for point: // ((THREE.Color, THREE.Vector3) => void) (default: white) - color: D = new G.Color(1, 1, 1) + color: i = new a.Color(1, 1, 1) }) { - const i = {}; - function w(R) { - if (B && !B(R)) + const o = {}; + function D(h) { + if (B && !B(h)) return; - const F = `${R.x},${R.y},${R.z}`; - i[F] || (i[F] = R); + const y = `${h.x},${h.y},${h.z}`; + o[y] || (o[y] = h); } - function s(R, F, a, S) { - if (w(F), w(a), w(S), R >= g) + function w(h, y, S, F) { + if (D(y), D(S), D(F), h >= g) return; - const M = new G.Vector3().addVectors(F, a).normalize(), c = new G.Vector3().addVectors(a, S).normalize(), N = new G.Vector3().addVectors(S, F).normalize(); - s(R + 1, F, M, N), s(R + 1, M, a, c), s(R + 1, N, c, S), s(R + 1, M, c, N); - } - for (const R of [-1, 1]) - for (const F of [-1, 1]) - for (const a of [-1, 1]) { - const S = new G.Vector3(R, 0, 0), M = new G.Vector3(0, F, 0), c = new G.Vector3(0, 0, a); - s(0, S, M, c); + const e = new a.Vector3().addVectors(y, S).normalize(), k = new a.Vector3().addVectors(S, F).normalize(), R = new a.Vector3().addVectors(F, y).normalize(); + w(h + 1, y, e, R), w(h + 1, e, S, k), w(h + 1, R, k, F), w(h + 1, e, k, R); + } + for (const h of [-1, 1]) + for (const y of [-1, 1]) + for (const S of [-1, 1]) { + const F = new a.Vector3(h, 0, 0), e = new a.Vector3(0, y, 0), k = new a.Vector3(0, 0, S); + w(0, F, e, k); } - const o = Object.values(i), y = new G.Vector3(C, C, E), h = new G.Quaternion(), k = typeof D == "function" ? new G.Color() : D; - for (const R of o) - h.setFromUnitVectors(new G.Vector3(0, 0, -1), R), typeof D == "function" && D(k, R), R.multiplyScalar(I), R.add(A), Q.pushSplat(R, y, h, 1, k); + const s = Object.values(o), t = new a.Vector3(C, C, E), G = new a.Quaternion(), c = typeof i == "function" ? new a.Color() : i; + for (const h of s) + G.setFromUnitVectors(new a.Vector3(0, 0, -1), h), typeof i == "function" && i(c, h), h.multiplyScalar(I), h.add(A), Q.pushSplat(h, t, G, 1, c); } -function bk({ +function qy({ // text string to display text: Q, // browser font to render text with (default: "Arial") @@ -14659,44 +13848,44 @@ function bk({ // text alignment: "left", "center", "right", "start", "end" (default: "start") textAlign: E, // line spacing multiplier, lines delimited by "\n" (default: 1.0) - lineHeight: D, + lineHeight: i, // Coordinate scale in object-space (default: 1.0) - objectScale: i + objectScale: o }) { - A = A ?? "Arial", I = I ?? 32, g = g ?? new G.Color(1, 1, 1), C = C ?? 0.8, E = E ?? "start", D = D ?? 1, i = i ?? 1; - const w = Q.split(` -`), s = document.createElement("canvas"), o = s.getContext("2d"); - if (!o) + A = A ?? "Arial", I = I ?? 32, g = g ?? new a.Color(1, 1, 1), C = C ?? 0.8, E = E ?? "start", i = i ?? 1, o = o ?? 1; + const D = Q.split(` +`), w = document.createElement("canvas"), s = w.getContext("2d"); + if (!s) throw new Error("Failed to create canvas context"); - o.font = `${I}px ${A}`, o.textAlign = E; - const y = o.measureText(""), h = y.fontBoundingBoxAscent + y.fontBoundingBoxDescent; - let k = Number.POSITIVE_INFINITY, R = Number.NEGATIVE_INFINITY, F = Number.POSITIVE_INFINITY, a = Number.NEGATIVE_INFINITY; - for (let n = 0; n < w.length; ++n) { - const r = o.measureText(w[n]), p = h * D * n; - k = Math.min(k, -r.actualBoundingBoxLeft), R = Math.max(R, r.actualBoundingBoxRight), F = Math.min(F, p - r.actualBoundingBoxAscent), a = Math.max(a, p + r.actualBoundingBoxDescent); - } - const S = Math.floor(k), M = Math.floor(F), c = Math.ceil(R) - S, N = Math.ceil(a) - M; - s.width = c, s.height = N, o.font = `${I}px ${A}`, o.textAlign = E, o.textBaseline = "alphabetic", o.fillStyle = "#FFFFFF"; - for (let n = 0; n < w.length; ++n) { - const r = h * D * n - M; - o.fillText(w[n], -S, r); - } - const U = o.getImageData(0, 0, c, N), J = new Uint8Array(U.data.buffer), t = new $A(), H = new G.Vector3(), K = new G.Vector3().setScalar(C * i), Y = new G.Quaternion(0, 0, 0, 1); - B = B ?? new G.Color(1, 1, 1); + s.font = `${I}px ${A}`, s.textAlign = E; + const t = s.measureText(""), G = t.fontBoundingBoxAscent + t.fontBoundingBoxDescent; + let c = Number.POSITIVE_INFINITY, h = Number.NEGATIVE_INFINITY, y = Number.POSITIVE_INFINITY, S = Number.NEGATIVE_INFINITY; + for (let d = 0; d < D.length; ++d) { + const Y = s.measureText(D[d]), p = G * i * d; + c = Math.min(c, -Y.actualBoundingBoxLeft), h = Math.max(h, Y.actualBoundingBoxRight), y = Math.min(y, p - Y.actualBoundingBoxAscent), S = Math.max(S, p + Y.actualBoundingBoxDescent); + } + const F = Math.floor(c), e = Math.floor(y), k = Math.ceil(h) - F, R = Math.ceil(S) - e; + w.width = k, w.height = R, s.font = `${I}px ${A}`, s.textAlign = E, s.textBaseline = "alphabetic", s.fillStyle = "#FFFFFF"; + for (let d = 0; d < D.length; ++d) { + const Y = G * i * d - e; + s.fillText(D[d], -F, Y); + } + const N = s.getImageData(0, 0, k, R), U = new Uint8Array(N.data.buffer), M = new hI(), J = new a.Vector3(), H = new a.Vector3().setScalar(C * o), n = new a.Quaternion(0, 0, 0, 1); + B = B ?? new a.Color(1, 1, 1); let L = 0; - for (let n = 0; n < N; ++n) - for (let r = 0; r < c; ++r) { - const p = J[L + 3]; + for (let d = 0; d < R; ++d) + for (let Y = 0; Y < k; ++Y) { + const p = U[L + 3]; if (p > 0) { - const m = p / 255; - H.set(r - 0.5 * (c - 1), 0.5 * (N - 1) - n, 0), H.multiplyScalar(i), t.pushSplat(H, K, Y, m, B); + const O = p / 255; + J.set(Y - 0.5 * (k - 1), 0.5 * (R - 1) - d, 0), J.multiplyScalar(o), M.pushSplat(J, H, n, O, B); } L += 4; } - const q = new vA({ packedSplats: t }); - return q.recolor = g, q; + const x = new zA({ packedSplats: M }); + return x.recolor = g, x; } -function Pk({ +function py({ // URL of the image to convert to splats (example: `url: "./image.png"`) url: Q, // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8) @@ -14712,64 +13901,64 @@ function Pk({ // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null) forEachSplat: g }) { - return A = A ?? 0.8, I = Math.max(1, Math.floor(I ?? 1)), new vA({ + return A = A ?? 0.8, I = Math.max(1, Math.floor(I ?? 1)), new zA({ constructSplats: async (B) => new Promise((C, E) => { - const D = new Image(); - D.crossOrigin = "anonymous", D.onerror = E, D.onload = () => { - const { width: i, height: w } = D, s = document.createElement("canvas"); - s.width = i, s.height = w; - const o = s.getContext("2d"); - if (!o) { + const i = new Image(); + i.crossOrigin = "anonymous", i.onerror = E, i.onload = () => { + const { width: o, height: D } = i, w = document.createElement("canvas"); + w.width = o, w.height = D; + const s = w.getContext("2d"); + if (!s) { E(new Error("Failed to create canvas context")); return; } - o.imageSmoothingEnabled = !0, o.imageSmoothingQuality = "high"; - const y = Math.round(i / I), h = Math.round(w / I); - o.drawImage(D, 0, 0, y, h); + s.imageSmoothingEnabled = !0, s.imageSmoothingQuality = "high"; + const t = Math.round(o / I), G = Math.round(D / I); + s.drawImage(i, 0, 0, t, G); try { - const k = o.getImageData(0, 0, y, h), R = new Uint8Array(k.data.buffer), F = new G.Vector3(), a = new G.Vector3().setScalar(A), S = new G.Quaternion(0, 0, 0, 1), M = new G.Color(); - let c = 0; - for (let N = 0; N < h; ++N) - for (let U = 0; U < y; ++U) { - const J = c * 4, t = R[J + 3]; - if (t > 0) { - let H = t / 255; - M.set( - R[J + 0] / 255, - R[J + 1] / 255, - R[J + 2] / 255 - ), F.set( - U - 0.5 * (y - 1), - 0.5 * (h - 1) - N, + const c = s.getImageData(0, 0, t, G), h = new Uint8Array(c.data.buffer), y = new a.Vector3(), S = new a.Vector3().setScalar(A), F = new a.Quaternion(0, 0, 0, 1), e = new a.Color(); + let k = 0; + for (let R = 0; R < G; ++R) + for (let N = 0; N < t; ++N) { + const U = k * 4, M = h[U + 3]; + if (M > 0) { + let J = M / 255; + e.set( + h[U + 0] / 255, + h[U + 1] / 255, + h[U + 2] / 255 + ), y.set( + N - 0.5 * (t - 1), + 0.5 * (G - 1) - R, 0 - ), a.setScalar(A), S.set(0, 0, 0, 1); - let K = !0; + ), S.setScalar(A), F.set(0, 0, 0, 1); + let H = !0; if (g) { - const Y = g( + const n = g( + t, + G, + k, y, - h, - c, - F, - a, S, - H, - M + F, + J, + e ); - H = Y ?? H, K = Y !== null; + J = n ?? J, H = n !== null; } - K && B.pushSplat(F, a, S, H, M); + H && B.pushSplat(y, S, F, J, e); } - c += 1; + k += 1; } C(); - } catch (k) { - E(k); + } catch (c) { + E(c); } - }, D.src = Q; + }, i.src = Q; }) }); } -function JR({ +function Rh({ box: Q, cells: A, dotScale: I, @@ -14777,83 +13966,83 @@ function JR({ opacity: B }) { A.x = Math.max(1, Math.round(A.x)), A.y = Math.max(1, Math.round(A.y)), A.z = Math.max(1, Math.round(A.z)), B = B ?? 1; - const C = A.x * A.y * A.z, E = v("int", A.x), D = v("int", A.y); - v("int", A.z); - const i = wI(0), w = new PI({ + const C = A.x * A.y * A.z, E = IA("int", A.x), i = IA("int", A.y); + IA("int", A.z); + const o = EI(0), D = new Sg({ numSplats: C, - generator: cA( + generator: nA( { index: "int" }, - { gsplat: Z }, - ({ index: o }) => { - if (!o) + { gsplat: V }, + ({ index: s }) => { + if (!s) throw new Error("index is undefined"); - const y = pQ(o, E), h = pg(o, E), k = pQ(h, D), R = pg(h, D), F = yI({ + const t = qQ(s, E), G = bg(s, E), c = qQ(G, i), h = bg(G, i), y = tI({ vectorType: "ivec3", - x: y, - y: k, - z: R - }), a = WD(i), S = yI({ vectorType: "ivec2", x: o, y: a }), M = vi(S), c = v("vec3", Q.min), N = v("vec3", Q.max), U = iI(N, c), J = pg(qA(fI(F), M), v("vec3", A)); - let t, H, K; - g ? (t = v("float", g.r), H = v("float", g.g), K = v("float", g.b)) : { r: t, g: H, b: K } = $I(J).outputs; - const Y = yI({ + x: t, + y: c, + z: h + }), S = pi(o), F = tI({ vectorType: "ivec2", x: s, y: S }), e = pD(F), k = IA("vec3", Q.min), R = IA("vec3", Q.max), N = CI(R, k), U = bg(xA(qI(y), e), IA("vec3", A)); + let M, J, H; + g ? (M = IA("float", g.r), J = IA("float", g.g), H = IA("float", g.b)) : { r: M, g: J, b: H } = VI(U).outputs; + const n = tI({ vectorType: "vec4", - r: t, - g: H, - b: K, - a: v("float", B) - }), L = qA(c, kA(U, J)), q = fI(v("float", I)), n = v("vec4", new G.Quaternion(0, 0, 0, 1)); - let r = CI({ - flags: ug("uint", "GSPLAT_FLAG_ACTIVE"), - index: o, + r: M, + g: J, + b: H, + a: IA("float", B) + }), L = xA(k, SA(N, U)), x = qI(IA("float", I)), d = IA("vec4", new a.Quaternion(0, 0, 0, 1)); + let Y = BI({ + flags: Tg("uint", "GSPLAT_FLAG_ACTIVE"), + index: s, center: L, - scales: q, - quaternion: n, - rgba: Y + scales: x, + quaternion: d, + rgba: n }); - return r = s.applyGsplat(r), { gsplat: r }; + return Y = w.applyGsplat(Y), { gsplat: Y }; }, { - globals: () => [HA] + globals: () => [NA] } ), - update: ({ time: o }) => { - i.value = o, s.update(w), w.updateVersion(); + update: ({ time: s }) => { + o.value = s, w.update(D), D.updateVersion(); } - }), s = new XI(); - return w; + }), w = new mI(); + return D; } -const UR = { - box: new G.Box3( - new G.Vector3(-1, -1, -1), - new G.Vector3(1, 1, 1) +const kh = { + box: new a.Box3( + new a.Vector3(-1, -1, -1), + new a.Vector3(1, 1, 1) ), density: 100, - fallDirection: new G.Vector3(-1, -3, 1).normalize(), + fallDirection: new a.Vector3(-1, -3, 1).normalize(), fallVelocity: 0.02, wanderScale: 0.04, wanderVariance: 2, - color1: new G.Color(1, 1, 1), - color2: new G.Color(0.5, 0.5, 1), + color1: new a.Color(1, 1, 1), + color2: new a.Color(0.5, 0.5, 1), minScale: 1e-3, maxScale: 5e-3, - anisoScale: new G.Vector3(1, 1, 1) -}, tR = { - box: new G.Box3( - new G.Vector3(-2, -1, -2), - new G.Vector3(2, 5, 2) + anisoScale: new a.Vector3(1, 1, 1) +}, eh = { + box: new a.Box3( + new a.Vector3(-2, -1, -2), + new a.Vector3(2, 5, 2) ), density: 10, - fallDirection: new G.Vector3(0, -1, 0), + fallDirection: new a.Vector3(0, -1, 0), fallVelocity: 2, wanderScale: 0.1, wanderVariance: 1, - color1: new G.Color(1, 1, 1), - color2: new G.Color(0.25, 0.25, 0.5), + color1: new a.Color(1, 1, 1), + color2: new a.Color(0.25, 0.25, 0.5), minScale: 5e-3, maxScale: 0.01, - anisoScale: new G.Vector3(0.1, 1, 0.1) + anisoScale: new a.Vector3(0.1, 1, 0.1) }; -function HR({ +function Nh({ // min and max box extents of the snowBox box: Q, // minimum y-coordinate to clamp particle position, which can be used to @@ -14871,136 +14060,136 @@ function HR({ // Maximum Gsplat particle scale (default: 0.005) maxScale: E, // The average direction of fall (default: (0, -1, 0)) - fallDirection: D, + fallDirection: i, // The average speed of the fall (multiplied with fallDirection) (default: 0.02) - fallVelocity: i, + fallVelocity: o, // The world scale of wandering overlay motion (default: 0.01) - wanderScale: w, + wanderScale: D, // Controls how uniformly the particles wander in sync, more variance mean // more randomness in the motion (default: 2) - wanderVariance: s, + wanderVariance: w, // Color 1 of the two colors interpolated between (default: (1, 1, 1)) - color1: o, + color1: s, // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1)) - color2: y, + color2: t, // The base opacity of the Gsplats (default: 1) - opacity: h, + opacity: G, // Optional callback function to call each frame. - onFrame: k + onFrame: c }) { - Q = Q ?? new G.Box3(new G.Vector3(-1, -1, -1), new G.Vector3(1, 1, 1)); - const R = (Q.max.x - Q.min.x) * (Q.max.y - Q.min.y) * (Q.max.z - Q.min.z); - g = g ?? 100, I = I ?? Math.max(1, Math.min(1e6, Math.round(R * g))); - const F = wI(C ?? 1e-3), a = wI(E ?? 5e-3), S = cI( - ((B == null ? void 0 : B.clone()) ?? new G.Vector3(1, 1, 1)).normalize() - ), M = cI( - (D ?? new G.Vector3(0, -1, 0)).normalize() - ), c = wI(i ?? 0.02), N = wI(w ?? 0.01), U = wI(s ?? 2), J = cI(o ?? new G.Color(1, 1, 1)), t = cI(y ?? new G.Color(0.5, 0.5, 1)), H = wI(h ?? 1), K = wI(0), Y = cI(new G.Vector3(0, 0, 0)), L = cI(Q.min), q = cI(Q.max), n = wI(A ?? Number.NEGATIVE_INFINITY), r = iI(q, L), p = new PI({ + Q = Q ?? new a.Box3(new a.Vector3(-1, -1, -1), new a.Vector3(1, 1, 1)); + const h = (Q.max.x - Q.min.x) * (Q.max.y - Q.min.y) * (Q.max.z - Q.min.z); + g = g ?? 100, I = I ?? Math.max(1, Math.min(1e6, Math.round(h * g))); + const y = EI(C ?? 1e-3), S = EI(E ?? 5e-3), F = kI( + ((B == null ? void 0 : B.clone()) ?? new a.Vector3(1, 1, 1)).normalize() + ), e = kI( + (i ?? new a.Vector3(0, -1, 0)).normalize() + ), k = EI(o ?? 0.02), R = EI(D ?? 0.01), N = EI(w ?? 2), U = kI(s ?? new a.Color(1, 1, 1)), M = kI(t ?? new a.Color(0.5, 0.5, 1)), J = EI(G ?? 1), H = EI(0), n = kI(new a.Vector3(0, 0, 0)), L = kI(Q.min), x = kI(Q.max), d = EI(A ?? Number.NEGATIVE_INFINITY), Y = CI(x, L), p = new Sg({ numSplats: I, - generator: cA( + generator: nA( { index: "int" }, - { gsplat: Z }, - ({ index: IA }) => { - if (!IA) + { gsplat: V }, + ({ index: gA }) => { + if (!gA) throw new Error("index not defined"); - const X = bQ(IA), EA = $I(X).outputs.w; - let j = fI(X), gA = fg(kA(EA, v("float", 100))); - gA = PQ(kA(ug("float", "PI"), gA)), gA = qA(F, kA(gA, iI(a, F))); - const W = kA(gA, S), u = fg(kA(EA, v("float", 10))), b = fg(EA), T = jE(J, t, b), f = kA(T, u), FA = bQ( - yI({ + const v = pQ(gA), EA = VI(v).outputs.w; + let W = qI(v), QA = Pg(SA(EA, IA("float", 100))); + QA = fQ(SA(Tg("float", "PI"), QA)), QA = xA(y, SA(QA, CI(S, y))); + const X = SA(QA, F), P = Pg(SA(EA, IA("float", 10))), u = Pg(EA), m = fE(U, M, u), f = SA(m, P), hA = pQ( + tI({ vectorType: "ivec2", - x: IA, - y: v("int", 6837) + x: gA, + y: IA("int", 6837) }) ); - let sA = fI(FA), aA = kA($I(FA).outputs.w, U); - aA = qA(K, aA), j = qA(j, Y); - const SA = XE( - j, - v("vec3", new G.Vector3(1, 1, 1)) + let aA = qI(hA), yA = SA(VI(hA).outputs.w, N); + yA = xA(H, yA), W = xA(W, n); + const cA = qE( + W, + IA("vec3", new a.Vector3(1, 1, 1)) ); - j = qA(L, kA(r, SA)); - const wA = v("vec4", new G.Quaternion(0, 0, 0, 1)); - sA = PQ(qA(fI(aA), sA)), sA = kA(sA, N); - let GA = qA(j, sA), AI = $I(GA).outputs.y; - AI = WE(n, AI), GA = yI({ vector: GA, y: AI }); - let TA = CI({ - flags: ug("uint", "GSPLAT_FLAG_ACTIVE"), - index: IA, - center: GA, - scales: W, - quaternion: wA, + W = xA(L, SA(Y, cA)); + const sA = IA("vec4", new a.Quaternion(0, 0, 0, 1)); + aA = fQ(xA(qI(yA), aA)), aA = SA(aA, R); + let tA = xA(W, aA), $A = VI(tA).outputs.y; + $A = pE(d, $A), tA = tI({ vector: tA, y: $A }); + let PA = BI({ + flags: Tg("uint", "GSPLAT_FLAG_ACTIVE"), + index: gA, + center: tA, + scales: X, + quaternion: sA, rgb: f, - opacity: H + opacity: J }); - return TA = m.applyGsplat(TA), { gsplat: TA }; + return PA = O.applyGsplat(PA), { gsplat: PA }; }, { - globals: () => [HA] + globals: () => [NA] } ), - update: ({ object: IA, time: X, deltaTime: EA }) => { - K.value = X, m.update(p); - const j = M.value.clone().multiplyScalar(c.value * EA); - Y.value.add(j), IA.visible = H.value > 0, k == null || k({ object: IA, time: X, deltaTime: EA }), p.updateVersion(); + update: ({ object: gA, time: v, deltaTime: EA }) => { + H.value = v, O.update(p); + const W = e.value.clone().multiplyScalar(k.value * EA); + n.value.add(W), gA.visible = J.value > 0, c == null || c({ object: gA, time: v, deltaTime: EA }), p.updateVersion(); } - }), m = new XI(); + }), O = new mI(); return { snow: p, min: L, - max: q, - minY: n, - color1: J, - color2: t, - opacity: H, - fallVelocity: c, - wanderVariance: U, - wanderScale: N, - fallDirection: M, - minScale: F, - maxScale: a, - anisoScale: S + max: x, + minY: d, + color1: U, + color2: M, + opacity: J, + fallVelocity: k, + wanderVariance: N, + wanderScale: R, + fallDirection: e, + minScale: y, + maxScale: S, + anisoScale: F }; } -const uk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ +const fy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, - DEFAULT_RAIN: tR, - DEFAULT_SNOW: UR, - snowBox: HR, - staticBox: JR + DEFAULT_RAIN: eh, + DEFAULT_SNOW: kh, + snowBox: Nh, + staticBox: Rh }, Symbol.toStringTag, { value: "Module" })); -function Ow(Q) { - return cA({ gsplat: Z }, { gsplat: Z }, ({ gsplat: A }) => { +function xo(Q) { + return nA({ gsplat: V }, { gsplat: V }, ({ gsplat: A }) => { if (!A) throw new Error("No gsplat input"); - let I = qQ(A); - const g = Q.applyGsplat(A), B = uA(g).outputs.center, C = qQ(g), E = Li(B, C), D = LD(E, v("float", 0)); - I = hB(D, yB(I), I); - const i = qA( - kA(I, v("float", 0.5)), - v("float", 0.5) + let I = LQ(A); + const g = Q.applyGsplat(A), B = fA(g).outputs.center, C = LQ(g), E = GD(B, C), i = yi(E, IA("float", 0)); + I = tB(i, aB(I), I); + const o = xA( + SA(I, IA("float", 0.5)), + IA("float", 0.5) ); - return A = CI({ gsplat: A, rgb: i }), { gsplat: A }; + return A = BI({ gsplat: A, rgb: o }), { gsplat: A }; }); } -function LR(Q) { - Q.enableWorldToView = !0, Q.worldModifier = Ow(Q.context.worldToView), Q.updateGenerator(); +function Mh(Q) { + Q.enableWorldToView = !0, Q.worldModifier = xo(Q.context.worldToView), Q.updateGenerator(); } -function mw(Q, A, I, g) { - return cA({ gsplat: Z }, { gsplat: Z }, ({ gsplat: B }) => { +function qo(Q, A, I, g) { + return nA({ gsplat: V }, { gsplat: V }, ({ gsplat: B }) => { if (!B) throw new Error("No gsplat input"); - let { center: C } = uA(B).outputs; + let { center: C } = fA(B).outputs; C = Q.apply(C); - const { z: E } = $I(C).outputs; - let D = zi(yB(E), A, I); - return D = hB(g, iI(v("float", 1), D), D), B = CI({ gsplat: B, r: D, g: D, b: D }), { gsplat: B }; + const { z: E } = VI(C).outputs; + let i = fD(aB(E), A, I); + return i = tB(g, CI(IA("float", 1), i), i), B = BI({ gsplat: B, r: i, g: i, b: i }), { gsplat: B }; }); } -function YR(Q, A, I, g) { +function Jh(Q, A, I, g) { Q.enableWorldToView = !0; - const B = v("float", A), C = v("float", I), E = v("bool", g ?? !1); - return Q.worldModifier = mw( + const B = IA("float", A), C = IA("float", I), E = IA("bool", g ?? !1); + return Q.worldModifier = qo( Q.context.worldToView, B, C, @@ -15011,31 +14200,31 @@ function YR(Q, A, I, g) { reverse: E }; } -const Tk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ +const uy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, - makeDepthColorModifier: mw, - makeNormalColorModifier: Ow, - setDepthColor: YR, - setWorldNormalColor: LR -}, Symbol.toStringTag, { value: "Module" })), KR = 1, VB = 4, eR = 2, rR = 5, nR = 1 / 5, Ok = !1, dR = (Q, A) => { + makeDepthColorModifier: qo, + makeNormalColorModifier: xo, + setDepthColor: Jh, + setWorldNormalColor: Mh +}, Symbol.toStringTag, { value: "Module" })), Uh = 1, uB = 4, Lh = 2, nh = 5, Hh = 1 / 5, by = !1, Kh = (Q, A) => { var I, g, B, C; - return Q.leftIsHand ? new G.Vector3() : new G.Vector3( + return Q.leftIsHand ? new a.Vector3() : new a.Vector3( ((I = Q.left) == null ? void 0 : I.axes[2]) ?? 0, (((g = Q.left) == null ? void 0 : g.buttons[0].value) ?? 0) - (((B = Q.left) == null ? void 0 : B.buttons[1].value) ?? 0), ((C = Q.left) == null ? void 0 : C.axes[3]) ?? 0 ); -}, qR = (Q, A) => { +}, rh = (Q, A) => { var I; - return Q.rightIsHand ? new G.Vector3() : new G.Vector3(((I = Q.right) == null ? void 0 : I.axes[2]) ?? 0, 0, 0); -}, xR = (Q, A) => { + return Q.rightIsHand ? new a.Vector3() : new a.Vector3(((I = Q.right) == null ? void 0 : I.axes[2]) ?? 0, 0, 0); +}, Yh = (Q, A) => { var I, g; return Q.rightIsHand ? !1 : ((g = (I = Q.right) == null ? void 0 : I.buttons[0]) == null ? void 0 : g.pressed) ?? !1; -}, lR = (Q, A) => { +}, dh = (Q, A) => { var I, g; return Q.rightIsHand ? !1 : ((g = (I = Q.right) == null ? void 0 : I.buttons[1]) == null ? void 0 : g.pressed) ?? !1; }; -var _g = /* @__PURE__ */ ((Q) => (Q.w = "wrist", Q.t0 = "thumb-metacarpal", Q.t1 = "thumb-phalanx-proximal", Q.t2 = "thumb-phalanx-distal", Q.t3 = "thumb-tip", Q.i0 = "index-finger-metacarpal", Q.i1 = "index-finger-phalanx-proximal", Q.i2 = "index-finger-phalanx-intermediate", Q.i3 = "index-finger-phalanx-distal", Q.i4 = "index-finger-tip", Q.m0 = "middle-finger-metacarpal", Q.m1 = "middle-finger-phalanx-proximal", Q.m2 = "middle-finger-phalanx-intermediate", Q.m3 = "middle-finger-phalanx-distal", Q.m4 = "middle-finger-tip", Q.r0 = "ring-finger-metacarpal", Q.r1 = "ring-finger-phalanx-proximal", Q.r2 = "ring-finger-phalanx-intermediate", Q.r3 = "ring-finger-phalanx-distal", Q.r4 = "ring-finger-tip", Q.p0 = "pinky-finger-metacarpal", Q.p1 = "pinky-finger-phalanx-proximal", Q.p2 = "pinky-finger-phalanx-intermediate", Q.p3 = "pinky-finger-phalanx-distal", Q.p4 = "pinky-finger-tip", Q))(_g || {}); -const kI = Object.keys(_g), pR = kI.length, fR = { +var zg = /* @__PURE__ */ ((Q) => (Q.w = "wrist", Q.t0 = "thumb-metacarpal", Q.t1 = "thumb-phalanx-proximal", Q.t2 = "thumb-phalanx-distal", Q.t3 = "thumb-tip", Q.i0 = "index-finger-metacarpal", Q.i1 = "index-finger-phalanx-proximal", Q.i2 = "index-finger-phalanx-intermediate", Q.i3 = "index-finger-phalanx-distal", Q.i4 = "index-finger-tip", Q.m0 = "middle-finger-metacarpal", Q.m1 = "middle-finger-phalanx-proximal", Q.m2 = "middle-finger-phalanx-intermediate", Q.m3 = "middle-finger-phalanx-distal", Q.m4 = "middle-finger-tip", Q.r0 = "ring-finger-metacarpal", Q.r1 = "ring-finger-phalanx-proximal", Q.r2 = "ring-finger-phalanx-intermediate", Q.r3 = "ring-finger-phalanx-distal", Q.r4 = "ring-finger-tip", Q.p0 = "pinky-finger-metacarpal", Q.p1 = "pinky-finger-phalanx-proximal", Q.p2 = "pinky-finger-phalanx-intermediate", Q.p3 = "pinky-finger-phalanx-distal", Q.p4 = "pinky-finger-tip", Q))(zg || {}); +const GI = Object.keys(zg), lh = GI.length, xh = { w: 0, t0: 1, t1: 2, @@ -15061,7 +14250,7 @@ const kI = Object.keys(_g), pR = kI.length, fR = { p2: 22, p3: 23, p4: 24 -}, XB = { +}, bB = { w: 0.02, t0: 0.015, t1: 0.012, @@ -15087,31 +14276,31 @@ const kI = Object.keys(_g), pR = kI.length, fR = { p2: 7e-3, p3: 65e-4, p4: 55e-4 -}, bR = [ +}, qh = [ ["w", "t0", "t1", "t2", "t3"], ["w", "i0", "i1", "i2", "i3", "i4"], ["w", "m0", "m1", "m2", "m3", "m4"], ["w", "r0", "r1", "r2", "r3", "r4"], ["w", "p0", "p1", "p2", "p3", "p4"] -], PR = [ +], ph = [ [8, 10, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6] -], uR = ["t3", "i4", "m4", "r4", "p4"], TR = ["i4", "m4", "r4", "p4"]; -var JB = /* @__PURE__ */ ((Q) => (Q.left = "left", Q.right = "right", Q))(JB || {}); -const OR = Object.keys(JB), mR = /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i; -function ZR() { +], fh = ["t3", "i4", "m4", "r4", "p4"], uh = ["i4", "m4", "r4", "p4"]; +var FB = /* @__PURE__ */ ((Q) => (Q.left = "left", Q.right = "right", Q))(FB || {}); +const bh = Object.keys(FB), Ph = /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i; +function mh() { const Q = navigator.userAgent ?? ""; - if (mR.test(Q)) + if (Ph.test(Q)) return !1; if (/Android/i.test(Q) || /Mobile/i.test(Q)) return !0; const I = navigator.userAgentData; return I && typeof I.mobile == "boolean" ? I.mobile : !1; } -const ZA = class ZA { +const OA = class OA { constructor(A) { this.lastControllersUpdate = 0, this.hands = [], this.renderer = A.renderer, this.xr = navigator.xr, this.mode = "initializing", this.onEnterXr = A.onEnterXr, this.onExitXr = A.onExitXr, this.enableHands = A.enableHands ?? !1, this.controllers = A.controllers, Promise.resolve().then(() => { var C; @@ -15119,19 +14308,19 @@ const ZA = class ZA { this.mode = "not_supported"; return; } - if (!A.allowMobileXr && ZR()) { + if (!A.allowMobileXr && mh()) { this.mode = "not_supported"; return; } - this.enableHands && (this.hands = [new $g( + this.enableHands && (this.hands = [new _g( "left" /* left */ - ), new $g( + ), new _g( "right" /* right */ )]); let I, g; - if (A.element ? I = A.element : A.elementId ? I = document.getElementById(A.elementId) ?? void 0 : (I = ZA.createButton(), g = A.button == null || typeof A.button == "boolean" ? {} : A.button), !I) + if (A.element ? I = A.element : A.elementId ? I = document.getElementById(A.elementId) ?? void 0 : (I = OA.createButton(), g = A.button == null || typeof A.button == "boolean" ? {} : A.button), !I) throw new Error("No element or button provided"); I.style.display = "none", I.classList.add("hidden"), this.button = g, this.element = I; const B = (C = A.onMouseLeaveOpacity) == null ? void 0 : C.toString(); @@ -15148,7 +14337,7 @@ const ZA = class ZA { }); } async initializeXr(A) { - var w, s; + var D, w; if (!this.xr || !this.element) return; const I = this.element, g = { @@ -15160,9 +14349,9 @@ const ZA = class ZA { if (!g) throw new Error(`Invalid mode: ${A.mode}`); let B = null; - for (const o of g) - if (await this.xr.isSessionSupported(o)) { - B = o; + for (const s of g) + if (await this.xr.isSessionSupported(s)) { + B = s; break; } if (!B) { @@ -15174,13 +14363,13 @@ const ZA = class ZA { this.renderer.xr.enabled = !0, this.renderer.xr.setReferenceSpaceType(C), A.fixedFoveation !== void 0 && this.renderer.xr.setFoveation(A.fixedFoveation); const E = A.frameBufferScaleFactor ?? 0.5; this.renderer.xr.setFramebufferScaleFactor(E); - const D = ((w = A.sessionInit) == null ? void 0 : w.optionalFeatures) ?? []; - A.enableHands && D.push("hand-tracking"); - const i = ((s = A.sessionInit) == null ? void 0 : s.requiredFeatures) ?? []; - i.push(C), this.sessionInit = { + const i = ((D = A.sessionInit) == null ? void 0 : D.optionalFeatures) ?? []; + A.enableHands && i.push("hand-tracking"); + const o = ((w = A.sessionInit) == null ? void 0 : w.requiredFeatures) ?? []; + o.push(C), this.sessionInit = { ...A.sessionInit, - optionalFeatures: D, - requiredFeatures: i + optionalFeatures: i, + requiredFeatures: o }, I.addEventListener("click", () => { this.toggleXr(); }), this.updateElement(); @@ -15195,14 +14384,14 @@ const ZA = class ZA { const B = this.mode, C = await this.xr.requestSession(B, this.sessionInit); this.session = C; const E = () => { - var w; - C == null || C.removeEventListener("end", E), C == null || C.removeEventListener("visibilitychange", i), this.session = void 0, this.updateElement(), (w = this.onExitXr) == null || w.call(this); + var D; + C == null || C.removeEventListener("end", E), C == null || C.removeEventListener("visibilitychange", o), this.session = void 0, this.updateElement(), (D = this.onExitXr) == null || D.call(this); }; - let D = C.visibilityState; - const i = () => { - (C == null ? void 0 : C.visibilityState) === "visible-blurred" && D === "visible" && (C == null || C.end()), D = C == null ? void 0 : C.visibilityState; + let i = C.visibilityState; + const o = () => { + (C == null ? void 0 : C.visibilityState) === "visible-blurred" && i === "visible" && (C == null || C.end()), i = C == null ? void 0 : C.visibilityState; }; - return (A = this.session) == null || A.addEventListener("end", E), (I = this.session) == null || I.addEventListener("visibilitychange", i), await this.renderer.xr.setSession(this.session), (g = this.onEnterXr) == null ? void 0 : g.call(this); + return (A = this.session) == null || A.addEventListener("end", E), (I = this.session) == null || I.addEventListener("visibilitychange", o), await this.renderer.xr.setSession(this.session), (g = this.onEnterXr) == null ? void 0 : g.call(this); } catch (B) { console.error("Error requesting XR session", B); return; @@ -15253,38 +14442,38 @@ const ZA = class ZA { return this.hands[1]; } updateControllers(A) { - var w, s, o, y, h, k, R, F, a, S, M, c; + var D, w, s, t, G, c, h, y, S, F, e, k; const I = A.parent, g = performance.now(), B = (g - (this.lastControllersUpdate || g)) / 1e3; this.lastControllersUpdate = g; const C = {}; - for (const N of ((w = this.renderer.xr.getSession()) == null ? void 0 : w.inputSources) ?? []) { - const U = N.gamepad; - U && (N.handedness === "left" || N.handedness === "right") && (C[N.handedness] = U, N.handedness === "left" ? C.leftIsHand = !!N.hand : N.handedness === "right" && (C.rightIsHand = !!N.hand)); + for (const R of ((D = this.renderer.xr.getSession()) == null ? void 0 : D.inputSources) ?? []) { + const N = R.gamepad; + N && (R.handedness === "left" || R.handedness === "right") && (C[R.handedness] = N, R.handedness === "left" ? C.leftIsHand = !!R.hand : R.handedness === "right" && (C.rightIsHand = !!R.hand)); } - const E = (((s = this.controllers) == null ? void 0 : s.getRotate) ?? qR)(C, this); + const E = (((w = this.controllers) == null ? void 0 : w.getRotate) ?? rh)(C, this); if (E.multiply( - new G.Vector3( - ((o = this.controllers) == null ? void 0 : o.rotateSpeed) ?? VB, - ((y = this.controllers) == null ? void 0 : y.rotateSpeed) ?? VB, - ((h = this.controllers) == null ? void 0 : h.rollSpeed) ?? eR + new a.Vector3( + ((s = this.controllers) == null ? void 0 : s.rotateSpeed) ?? uB, + ((t = this.controllers) == null ? void 0 : t.rotateSpeed) ?? uB, + ((G = this.controllers) == null ? void 0 : G.rollSpeed) ?? Lh ) ), E.manhattanLength() > 0) { E.multiplyScalar(B); - const N = new G.Euler(-E.y, -E.x, E.z, "YXZ"), U = new G.Quaternion().setFromEuler(N), J = A.getWorldPosition(new G.Vector3()); - (k = I.parent) == null || k.worldToLocal(J), I.position.sub(J), I.position.applyQuaternion(U), I.position.add(J), I.quaternion.premultiply(U); + const R = new a.Euler(-E.y, -E.x, E.z, "YXZ"), N = new a.Quaternion().setFromEuler(R), U = A.getWorldPosition(new a.Vector3()); + (c = I.parent) == null || c.worldToLocal(U), I.position.sub(U), I.position.applyQuaternion(N), I.position.add(U), I.quaternion.premultiply(N); } - const D = (((R = this.controllers) == null ? void 0 : R.getMove) ?? dR)( + const i = (((h = this.controllers) == null ? void 0 : h.getMove) ?? Kh)( C, this ); - let i = ((F = this.controllers) == null ? void 0 : F.moveSpeed) ?? KR; - (((a = this.controllers) == null ? void 0 : a.getFast) ?? xR)( + let o = ((y = this.controllers) == null ? void 0 : y.moveSpeed) ?? Uh; + (((S = this.controllers) == null ? void 0 : S.getFast) ?? Yh)( C, this - ) && (i *= rR), (((S = this.controllers) == null ? void 0 : S.getSlow) ?? lR)( + ) && (o *= nh), (((F = this.controllers) == null ? void 0 : F.getSlow) ?? dh)( C, this - ) && (i *= nR), (M = this.controllers) != null && M.moveHeading ? D.applyQuaternion(A.quaternion) : (c = this.controllers) != null && c.moveDirection && (ng.setFromQuaternion(A.quaternion, "YXZ"), ng.x = 0, ng.z = 0, mQ.setFromEuler(ng), D.applyQuaternion(mQ)), D.applyQuaternion(I.quaternion), D.multiplyScalar(B * i), I.position.add(D); + ) && (o *= Hh), (e = this.controllers) != null && e.moveHeading ? i.applyQuaternion(A.quaternion) : (k = this.controllers) != null && k.moveDirection && (xg.setFromQuaternion(A.quaternion, "YXZ"), xg.x = 0, xg.z = 0, OQ.setFromEuler(xg), i.applyQuaternion(OQ)), i.applyQuaternion(I.quaternion), i.multiplyScalar(B * o), I.position.add(i); } updateHands({ xrFrame: A }) { const I = this.renderer.xr.getSession(); @@ -15299,21 +14488,21 @@ const ZA = class ZA { continue; const C = B.handedness, E = this.hands[C === "left" ? 0 : 1]; if (E) - for (const D of kI) { - const i = B.hand.get(_g[D]); - if (i) { - const w = A.getJointPose(i, g); - if (w) { - const { position: s, orientation: o } = w.transform; - E.joints || (E.joints = {}), E.joints[D] = { - position: new G.Vector3(s.x, s.y, s.z), - quaternion: new G.Quaternion( - o.x, - o.y, - o.z, - o.w + for (const i of GI) { + const o = B.hand.get(zg[i]); + if (o) { + const D = A.getJointPose(o, g); + if (D) { + const { position: w, orientation: s } = D.transform; + E.joints || (E.joints = {}), E.joints[i] = { + position: new a.Vector3(w.x, w.y, w.z), + quaternion: new a.Quaternion( + s.x, + s.y, + s.z, + s.w ), - radius: XB[D] + radius: bB[i] }; } } @@ -15322,7 +14511,7 @@ const ZA = class ZA { } } makeJointSplats(A) { - const I = new Ak(A); + const I = new zh(A); return I.onFrame = () => { const g = this.hands[A === "left" ? 0 : 1], B = g == null ? void 0 : g.joints; I.updateJoints(B); @@ -15337,49 +14526,49 @@ const ZA = class ZA { return { time: A, hands: I }; } }; -ZA.JointEnum = _g, ZA.JOINT_IDS = kI, ZA.NUM_JOINTS = pR, ZA.JOINT_INDEX = fR, ZA.JOINT_RADIUS = XB, ZA.JOINT_SEGMENTS = bR, ZA.JOINT_SEGMENT_STEPS = PR, ZA.JOINT_TIPS = uR, ZA.FINGER_TIPS = TR, ZA.Hand = JB, ZA.HANDS = OR; -let WB = ZA; -const HQ = (Q) => Math.round(Q * 1e4) / 1e4, ng = new G.Euler(0, 0, 0, "YXZ"), mQ = new G.Quaternion(), VR = new G.Quaternion(); -function mk(Q, A) { +OA.JointEnum = zg, OA.JOINT_IDS = GI, OA.NUM_JOINTS = lh, OA.JOINT_INDEX = xh, OA.JOINT_RADIUS = bB, OA.JOINT_SEGMENTS = qh, OA.JOINT_SEGMENT_STEPS = ph, OA.JOINT_TIPS = fh, OA.FINGER_TIPS = uh, OA.Hand = FB, OA.HANDS = bh; +let PB = OA; +const UQ = (Q) => Math.round(Q * 1e4) / 1e4, xg = new a.Euler(0, 0, 0, "YXZ"), OQ = new a.Quaternion(), Th = new a.Quaternion(); +function Py(Q, A) { if (!Q.length) return null; const I = Q[0], g = Q[Q.length - 1]; if (A < I.time || A > g.time) return null; - const B = jR(Q, A); + const B = vh(Q, A); if (B === -1) return null; const C = Q[B], E = Q[B + 1]; if (!E) - return WR(C, A); - const D = E.time - C.time, i = D > 0 ? (A - C.time) / D : 0; - return XR(C, E, i, A); + return Zh(C, A); + const i = E.time - C.time, o = i > 0 ? (A - C.time) / i : 0; + return Oh(C, E, o, A); } -function XR(Q, A, I, g) { +function Oh(Q, A, I, g) { const B = Math.max(Q.hands.length, A.hands.length), C = Array.from( { length: B }, - (E, D) => vR(Q.hands[D], A.hands[D], I) + (E, i) => Xh(Q.hands[i], A.hands[i], I) ); return { time: g, hands: C }; } -function WR(Q, A) { +function Zh(Q, A) { return { time: A, - hands: Q.hands.map((I) => _R(I)) + hands: Q.hands.map((I) => Wh(I)) }; } -class $g { +class _g { constructor(A) { this.hand = A; } static newFromSnapshot(A, I) { - const g = new $g(A); + const g = new _g(A); g.joints = {}; - for (const B of kI) { + for (const B of GI) { const C = I[B]; C && (g.joints[B] = { - position: new G.Vector3(C.pos[0], C.pos[1], C.pos[2]), - quaternion: new G.Quaternion( + position: new a.Vector3(C.pos[0], C.pos[1], C.pos[2]), + quaternion: new a.Quaternion( C.quat[0], C.quat[1], C.quat[2], @@ -15397,12 +14586,12 @@ class $g { if (!this.joints) return; const A = {}; - for (const I of kI) { + for (const I of GI) { const g = this.joints[I]; g && (A[I] = { - pos: g.position.toArray().map(HQ), - quat: g.quaternion.toArray().map(HQ), - radius: HQ(g.radius) + pos: g.position.toArray().map(UQ), + quat: g.quaternion.toArray().map(UQ), + radius: UQ(g.radius) }); } return A; @@ -15413,14 +14602,14 @@ class $g { const A = new Float32Array(1 + 25 * 7); A[0] = this.hand === "left" ? 0 : 1; let I = 1; - for (const g of kI) { + for (const g of GI) { const B = this.joints[g]; B && (A[I] = B.position.x, A[I + 1] = B.position.y, A[I + 2] = B.position.z, A[I + 3] = B.quaternion.x, A[I + 4] = B.quaternion.y, A[I + 5] = B.quaternion.z, A[I + 6] = B.quaternion.w), I += 7; } return A; } } -function jR(Q, A) { +function vh(Q, A) { let I = 0, g = Q.length - 1; for (; I <= g; ) { const B = I + g >> 1; @@ -15428,51 +14617,51 @@ function jR(Q, A) { } return g; } -function vR(Q, A, I = 0) { +function Xh(Q, A, I = 0) { if (!Q || !A) return; const g = {}; - for (const B of kI) { - const C = zR(Q[B], A[B], I); + for (const B of GI) { + const C = Vh(Q[B], A[B], I); C && (g[B] = C); } return g; } -function zR(Q, A, I = 0) { +function Vh(Q, A, I = 0) { if (!Q || !A) return; const g = Q.pos.map( - (E, D) => E + (A.pos[D] - E) * I - ), B = mQ.fromArray(Q.quat).slerp(VR.fromArray(A.quat), I).toArray(), C = Q.radius + (A.radius - Q.radius) * I; + (E, i) => E + (A.pos[i] - E) * I + ), B = OQ.fromArray(Q.quat).slerp(Th.fromArray(A.quat), I).toArray(), C = Q.radius + (A.radius - Q.radius) * I; return { pos: g, quat: B, radius: C }; } -function _R(Q) { +function Wh(Q) { if (!Q) return; const A = {}; - for (const I of kI) { + for (const I of GI) { const g = Q[I]; - g && (A[I] = $R(g)); + g && (A[I] = jh(g)); } return A; } -function $R(Q) { +function jh(Q) { return { pos: [...Q.pos], quat: [...Q.quat], radius: Q.radius }; } -class Ak extends vA { +class zh extends zA { constructor(A) { - super({}), this.scratchCenter = new G.Vector3(), this.scratchQuat = new G.Quaternion(0, 0, 0, 1), this.scratchScales = new G.Vector3().setScalar(0.01), this.scratchColor = new G.Color(1, 1, 1), this.hand = A; + super({}), this.scratchCenter = new a.Vector3(), this.scratchQuat = new a.Quaternion(0, 0, 0, 1), this.scratchScales = new a.Vector3().setScalar(0.01), this.scratchColor = new a.Color(1, 1, 1), this.hand = A; } updateJoints(A) { if (this.visible = !1, !A || !this.packedSplats) return; this.visible = !0; let I = 0; - for (const g of kI) { + for (const g of GI) { const B = A[g]; if (!B) continue; @@ -15492,9 +14681,9 @@ class Ak extends vA { this.packedSplats.numSplats = I, this.packedSplats.needsUpdate = !0, this.numSplats = I, this.updateVersion(); } } -const Ik = 0.5, gk = 0.5, Qk = 0; -var UB = /* @__PURE__ */ ((Q) => (Q.w = "wrist", Q.t0 = "thumb-metacarpal", Q.t1 = "thumb-phalanx-proximal", Q.t2 = "thumb-phalanx-distal", Q.t3 = "thumb-tip", Q.i0 = "index-finger-metacarpal", Q.i1 = "index-finger-phalanx-proximal", Q.i2 = "index-finger-phalanx-intermediate", Q.i3 = "index-finger-phalanx-distal", Q.i4 = "index-finger-tip", Q.m0 = "middle-finger-metacarpal", Q.m1 = "middle-finger-phalanx-proximal", Q.m2 = "middle-finger-phalanx-intermediate", Q.m3 = "middle-finger-phalanx-distal", Q.m4 = "middle-finger-tip", Q.r0 = "ring-finger-metacarpal", Q.r1 = "ring-finger-phalanx-proximal", Q.r2 = "ring-finger-phalanx-intermediate", Q.r3 = "ring-finger-phalanx-distal", Q.r4 = "ring-finger-tip", Q.p0 = "pinky-finger-metacarpal", Q.p1 = "pinky-finger-phalanx-proximal", Q.p2 = "pinky-finger-phalanx-intermediate", Q.p3 = "pinky-finger-phalanx-distal", Q.p4 = "pinky-finger-tip", Q))(UB || {}); -const Zw = Object.keys(UB), Zk = Zw.length, Vk = { +const _h = 0.5, $h = 0.5, Ay = 0; +var RB = /* @__PURE__ */ ((Q) => (Q.w = "wrist", Q.t0 = "thumb-metacarpal", Q.t1 = "thumb-phalanx-proximal", Q.t2 = "thumb-phalanx-distal", Q.t3 = "thumb-tip", Q.i0 = "index-finger-metacarpal", Q.i1 = "index-finger-phalanx-proximal", Q.i2 = "index-finger-phalanx-intermediate", Q.i3 = "index-finger-phalanx-distal", Q.i4 = "index-finger-tip", Q.m0 = "middle-finger-metacarpal", Q.m1 = "middle-finger-phalanx-proximal", Q.m2 = "middle-finger-phalanx-intermediate", Q.m3 = "middle-finger-phalanx-distal", Q.m4 = "middle-finger-tip", Q.r0 = "ring-finger-metacarpal", Q.r1 = "ring-finger-phalanx-proximal", Q.r2 = "ring-finger-phalanx-intermediate", Q.r3 = "ring-finger-phalanx-distal", Q.r4 = "ring-finger-tip", Q.p0 = "pinky-finger-metacarpal", Q.p1 = "pinky-finger-phalanx-proximal", Q.p2 = "pinky-finger-phalanx-intermediate", Q.p3 = "pinky-finger-phalanx-distal", Q.p4 = "pinky-finger-tip", Q))(RB || {}); +const po = Object.keys(RB), my = po.length, Ty = { w: 0, t0: 1, t1: 2, @@ -15520,7 +14709,7 @@ const Zw = Object.keys(UB), Zk = Zw.length, Vk = { p2: 22, p3: 23, p4: 24 -}, dg = { +}, qg = { w: 0.02, t0: 0.02, t1: 0.014, @@ -15546,22 +14735,22 @@ const Zw = Object.keys(UB), Zk = Zw.length, Vk = { p2: 7e-3, p3: 65e-4, p4: 55e-4 -}, Bk = [ +}, Iy = [ ["w", "t0", "t1", "t2", "t3"], ["w", "i0", "i1", "i2", "i3", "i4"], ["w", "m0", "m1", "m2", "m3", "m4"], ["w", "r0", "r1", "r2", "r3", "r4"], ["w", "p0", "p1", "p2", "p3", "p4"] -], Ck = [ +], gy = [ [8, 10, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6], [8, 19, 14, 8, 6] -], Xk = ["t3", "i4", "m4", "r4", "p4"], Wk = ["i4", "m4", "r4", "p4"]; -var Vw = /* @__PURE__ */ ((Q) => (Q.left = "left", Q.right = "right", Q))(Vw || {}); -const ZQ = Object.keys(Vw); -class jk { +], Oy = ["t3", "i4", "m4", "r4", "p4"], Zy = ["i4", "m4", "r4", "p4"]; +var fo = /* @__PURE__ */ ((Q) => (Q.left = "left", Q.right = "right", Q))(fo || {}); +const ZQ = Object.keys(fo); +class vy { constructor() { this.hands = {}, this.last = {}, this.values = {}, this.tests = {}, this.lastTests = {}, this.updated = !1; } @@ -15577,28 +14766,28 @@ class jk { continue; const E = C.handedness; this.hands[E] = {}; - for (const D of Zw) { - const i = C.hand.get(UB[D]); - if (i) { - const w = I.getJointPose(i, B); - if (w) { - const { position: s, orientation: o } = w.transform; - this.hands[E][D] = { - position: new gI(s.x, s.y, s.z), - quaternion: new tB( - o.x, - o.y, - o.z, - o.w + for (const i of po) { + const o = C.hand.get(RB[i]); + if (o) { + const D = I.getJointPose(o, B); + if (D) { + const { position: w, orientation: s } = D.transform; + this.hands[E][i] = { + position: new II(w.x, w.y, w.z), + quaternion: new kB( + s.x, + s.y, + s.z, + s.w ), - radius: w.radius || 1e-3 + radius: D.radius || 1e-3 }; } } } } for (const C of ZQ) - for (const { key: E, value: D } of [ + for (const { key: E, value: i } of [ { key: `${C}AllTips`, value: this.allTipsTouching(C) }, { key: `${C}IndexThumb`, @@ -15618,62 +14807,62 @@ class jk { }, { key: `${C}TriTips`, value: this.triTipsTouching(C) } ]) - this.values[E] = D, this.tests[E] = D === 1 ? !0 : D === 0 ? !1 : this.lastTests[E] ?? !1; + this.values[E] = i, this.tests[E] = i === 1 ? !0 : i === 0 ? !1 : this.lastTests[E] ?? !1; } } makeGhostMesh() { - const A = new gI(), I = new gI(0.01, 0.01, 0.01), g = new tB(0, 0, 0, 1), B = new HB(1, 1, 1), C = Math.PI * 3; - new HB(1, 1, 1); + const A = new II(), I = new II(0.01, 0.01, 0.01), g = new kB(0, 0, 0, 1), B = new eB(1, 1, 1), C = Math.PI * 3; + new eB(1, 1, 1); let E = 1; - const D = new vA({ + const i = new zA({ onFrame: () => { - if (!D.packedSplats) + if (!i.packedSplats) return; - let i = 0; - for (const w of ZQ) { - const s = this.hands[w]; - for (const [o, y] of Bk.entries()) - for (let h = 1; h < y.length; ++h) { - const k = Ck[o][h - 1] * 2, R = h + 1 === y.length, F = s == null ? void 0 : s[y[h - 1]], a = s == null ? void 0 : s[y[h]]; - for (let S = 0; S < k; ++S) { - const M = (S + 0.5) / k; - if (E = 0, F && a) { - A.copy(F.position).lerp(a.position, M), g.copy(F.quaternion).slerp(a.quaternion, M); - const c = dg[y[h - 1]], N = dg[y[h]]; - let U = (1 - M) * c + M * N; - R && M > 0.8 && (U *= Math.sqrt(1 - ((M - 0.8) / 0.2) ** 2)), I.set(0.65 * U, 0.5 * U, 3e-3), B.set( + let o = 0; + for (const D of ZQ) { + const w = this.hands[D]; + for (const [s, t] of Iy.entries()) + for (let G = 1; G < t.length; ++G) { + const c = gy[s][G - 1] * 2, h = G + 1 === t.length, y = w == null ? void 0 : w[t[G - 1]], S = w == null ? void 0 : w[t[G]]; + for (let F = 0; F < c; ++F) { + const e = (F + 0.5) / c; + if (E = 0, y && S) { + A.copy(y.position).lerp(S.position, e), g.copy(y.quaternion).slerp(S.quaternion, e); + const k = qg[t[G - 1]], R = qg[t[G]]; + let N = (1 - e) * k + e * R; + h && e > 0.8 && (N *= Math.sqrt(1 - ((e - 0.8) / 0.2) ** 2)), I.set(0.65 * N, 0.5 * N, 3e-3), B.set( 0.55 + 0.45 * Math.sin(A.x * C), 0.55 + 0.45 * Math.sin(A.y * C), 0.55 + 0.45 * Math.sin(A.z * C) - ), w === "right" && B.set(1 - B.r, 1 - B.g, 1 - B.b), E = 0.75; + ), D === "right" && B.set(1 - B.r, 1 - B.g, 1 - B.b), E = 0.75; } - D.packedSplats.setSplat( - i, + i.packedSplats.setSplat( + o, A, I, g, E, B - ), i += 1; + ), o += 1; } } } - D.packedSplats.numSplats = i, D.packedSplats.needsUpdate = !0, D.numSplats = i, D.updateVersion(); + i.packedSplats.numSplats = o, i.packedSplats.needsUpdate = !0, i.numSplats = o, i.updateVersion(); } }); - return D; + return i; } distance(A, I, g, B, C = !1) { - const E = C ? this.last[A] : this.hands[A], D = C ? this.last[g] : this.hands[g], i = E == null ? void 0 : E[I], w = D == null ? void 0 : D[B]; - return !i || !w ? Number.POSITIVE_INFINITY : i.position.distanceTo(w.position); + const E = C ? this.last[A] : this.hands[A], i = C ? this.last[g] : this.hands[g], o = E == null ? void 0 : E[I], D = i == null ? void 0 : i[B]; + return !o || !D ? Number.POSITIVE_INFINITY : o.position.distanceTo(D.position); } separation(A, I, g, B, C = !1) { const E = this.distance(A, I, g, B, C); - return E === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : E - dg[I] - dg[B]; + return E === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : E - qg[I] - qg[B]; } touching(A, I, g, B, C = !1) { const E = this.separation(A, I, g, B, C); - return E === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : 1 - Math.max(0, Math.min(1, E / 0.01 - Qk)); + return E === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : 1 - Math.max(0, Math.min(1, E / 0.01 - Ay)); } allTipsTouching(A, I = !1) { return Math.min( @@ -15692,46 +14881,46 @@ class jk { ); } } -class vk { +class Xy { constructor({ xrHands: A, control: I, moveInertia: g, rotateInertia: B }) { - this.lastGrip = {}, this.lastPivot = new gI(), this.rotateVelocity = 0, this.velocity = new gI(), this.xrHands = A, this.control = I, this.moveInertia = g ?? Ik, this.rotateInertia = B ?? gk; + this.lastGrip = {}, this.lastPivot = new II(), this.rotateVelocity = 0, this.velocity = new II(), this.xrHands = A, this.control = I, this.moveInertia = g ?? _h, this.rotateInertia = B ?? $h; } update(A) { - var C, E, D, i, w; + var C, E, i, o, D; const I = {}; - for (const s of ZQ) { - const o = this.xrHands.hands[s]; - o && this.xrHands.tests[`${s}MiddleThumb`] && (I[s] = new gI().add(((C = o.t3) == null ? void 0 : C.position) ?? new gI()).add(((E = o.i4) == null ? void 0 : E.position) ?? new gI()).add(((D = o.m4) == null ? void 0 : D.position) ?? new gI()).add(((i = o.r4) == null ? void 0 : i.position) ?? new gI()).add(((w = o.p4) == null ? void 0 : w.position) ?? new gI()).multiplyScalar(1 / 5)); + for (const w of ZQ) { + const s = this.xrHands.hands[w]; + s && this.xrHands.tests[`${w}MiddleThumb`] && (I[w] = new II().add(((C = s.t3) == null ? void 0 : C.position) ?? new II()).add(((E = s.i4) == null ? void 0 : E.position) ?? new II()).add(((i = s.m4) == null ? void 0 : i.position) ?? new II()).add(((o = s.r4) == null ? void 0 : o.position) ?? new II()).add(((D = s.p4) == null ? void 0 : D.position) ?? new II()).multiplyScalar(1 / 5)); } if (I.left && I.right && this.lastGrip.left && this.lastGrip.right) { - const s = I.left.clone().add(I.right).multiplyScalar(0.5), o = this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(0.5); - this.lastPivot = s; - const y = s.clone().applyMatrix4(this.control.matrix); - y.sub(o.clone().applyMatrix4(this.control.matrix)), y.multiplyScalar(1 / A), this.velocity.lerp(y, 1 - Math.exp(-20 * A)); - const h = Math.atan2(I.left.z - s.z, I.left.x - s.x), k = Math.atan2( - this.lastGrip.left.z - o.z, - this.lastGrip.left.x - o.x + const w = I.left.clone().add(I.right).multiplyScalar(0.5), s = this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(0.5); + this.lastPivot = w; + const t = w.clone().applyMatrix4(this.control.matrix); + t.sub(s.clone().applyMatrix4(this.control.matrix)), t.multiplyScalar(1 / A), this.velocity.lerp(t, 1 - Math.exp(-20 * A)); + const G = Math.atan2(I.left.z - w.z, I.left.x - w.x), c = Math.atan2( + this.lastGrip.left.z - s.z, + this.lastGrip.left.x - s.x ); - let R = h - k; - R > Math.PI ? R -= Math.PI * 2 : R < -Math.PI && (R += Math.PI * 2); - const F = R / A, a = Math.exp(-20 * A); - this.rotateVelocity = this.rotateVelocity * a + F * (1 - a); + let h = G - c; + h > Math.PI ? h -= Math.PI * 2 : h < -Math.PI && (h += Math.PI * 2); + const y = h / A, S = Math.exp(-20 * A); + this.rotateVelocity = this.rotateVelocity * S + y * (1 - S); } else if (this.rotateVelocity *= Math.exp(-A / this.rotateInertia), I.left && this.lastGrip.left) { - const s = I.left.clone().applyMatrix4(this.control.matrix); - s.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)), s.multiplyScalar(1 / A), this.velocity.lerp(s, 1 - Math.exp(-20 * A)); + const w = I.left.clone().applyMatrix4(this.control.matrix); + w.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)), w.multiplyScalar(1 / A), this.velocity.lerp(w, 1 - Math.exp(-20 * A)); } else if (I.right && this.lastGrip.right) { - const s = I.right.clone().applyMatrix4(this.control.matrix); - s.sub( + const w = I.right.clone().applyMatrix4(this.control.matrix); + w.sub( this.lastGrip.right.clone().applyMatrix4(this.control.matrix) - ), s.multiplyScalar(1 / A), this.velocity.lerp(s, 1 - Math.exp(-20 * A)); + ), w.multiplyScalar(1 / A), this.velocity.lerp(w, 1 - Math.exp(-20 * A)); } else this.velocity.multiplyScalar(Math.exp(-A / this.moveInertia)); - const g = this.lastPivot.clone().negate(), B = new kQ().makeTranslation(g).premultiply(new kQ().makeRotationY(this.rotateVelocity * A)).premultiply(new kQ().makeTranslation(this.lastPivot)); + const g = this.lastPivot.clone().negate(), B = new hQ().makeTranslation(g).premultiply(new hQ().makeRotationY(this.rotateVelocity * A)).premultiply(new hQ().makeTranslation(this.lastPivot)); this.control.matrix.multiply(B), this.control.matrix.decompose( this.control.position, this.control.quaternion, @@ -15739,31 +14928,31 @@ class vk { ), this.control.updateMatrixWorld(!0), this.control.position.sub(this.velocity.clone().multiplyScalar(A)), this.lastGrip = I; } } -const Ek = 1, Dk = 2, ik = 2e-3, wk = 6e-3, ok = 15e-4, sk = 0.15, Gk = 0.15, yk = 0.1, hk = 2, Rk = 0, kk = 500, Fk = 500, ak = 200, Sk = 400, Nk = 25, oI = 1e-4, ck = { - KeyW: new G.Vector3(0, 0, -1), - KeyS: new G.Vector3(0, 0, 1), - KeyA: new G.Vector3(-1, 0, 0), - KeyD: new G.Vector3(1, 0, 0), - KeyE: new G.Vector3(0, 1, 0), - KeyQ: new G.Vector3(0, -1, 0) -}, Mk = { - ArrowUp: new G.Vector3(0, 0, -1), - ArrowDown: new G.Vector3(0, 0, 1), - ArrowLeft: new G.Vector3(-1, 0, 0), - ArrowRight: new G.Vector3(1, 0, 0), - PageUp: new G.Vector3(0, 1, 0), - PageDown: new G.Vector3(0, -1, 0) +const Qy = 1, By = 2, Cy = 2e-3, Ey = 6e-3, iy = 15e-4, Dy = 0.15, oy = 0.15, sy = 0.1, wy = 2, ay = 0, ty = 500, Gy = 500, hy = 200, yy = 400, cy = 25, iI = 1e-4, Sy = { + KeyW: new a.Vector3(0, 0, -1), + KeyS: new a.Vector3(0, 0, 1), + KeyA: new a.Vector3(-1, 0, 0), + KeyD: new a.Vector3(1, 0, 0), + KeyE: new a.Vector3(0, 1, 0), + KeyQ: new a.Vector3(0, -1, 0) +}, Fy = { + ArrowUp: new a.Vector3(0, 0, -1), + ArrowDown: new a.Vector3(0, 0, 1), + ArrowLeft: new a.Vector3(-1, 0, 0), + ArrowRight: new a.Vector3(1, 0, 0), + PageUp: new a.Vector3(0, 1, 0), + PageDown: new a.Vector3(0, -1, 0) }; -new G.Vector3(0, 0, 1), new G.Vector3(0, 0, -1); -const Jk = { - Home: new G.Vector3(0, -1, 0), - End: new G.Vector3(0, 1, 0), - Insert: new G.Vector3(-1, 0, 0), - Delete: new G.Vector3(1, 0, 0) +new a.Vector3(0, 0, 1), new a.Vector3(0, 0, -1); +const Ry = { + Home: new a.Vector3(0, -1, 0), + End: new a.Vector3(0, 1, 0), + Insert: new a.Vector3(-1, 0, 0), + Delete: new a.Vector3(1, 0, 0) }; -class zk { +class Vy { constructor({ canvas: A }) { - this.lastTime = 0, this.fpsMovement = new Uk({}), this.pointerControls = new tk({ canvas: A }); + this.lastTime = 0, this.fpsMovement = new ky({}), this.pointerControls = new ey({ canvas: A }); } update(A, I) { const g = performance.now(), B = (g - (this.lastTime || g)) / 1e3; @@ -15772,7 +14961,7 @@ class zk { return this.pointerControls.update(B, A, I) && (C = !0), C; } } -class Uk { +class ky { constructor({ moveSpeed: A, rollSpeed: I, @@ -15780,27 +14969,27 @@ class Uk { rotateSpeed: B, keycodeMoveMapping: C, keycodeRotateMapping: E, - gamepadMapping: D, - capsMultiplier: i, - shiftMultiplier: w, - ctrlMultiplier: s, - xr: o + gamepadMapping: i, + capsMultiplier: o, + shiftMultiplier: D, + ctrlMultiplier: w, + xr: s } = {}) { - this.enable = !0, this.extraMove = new G.Vector3(), this.moveSpeed = A ?? Ek, this.rollSpeed = I ?? Dk, this.stickThreshold = g ?? yk, this.rotateSpeed = B ?? hk, this.keycodeMoveMapping = C ?? { - ...ck, - ...Mk + this.enable = !0, this.extraMove = new a.Vector3(), this.moveSpeed = A ?? Qy, this.rollSpeed = I ?? By, this.stickThreshold = g ?? sy, this.rotateSpeed = B ?? wy, this.keycodeMoveMapping = C ?? { + ...Sy, + ...Fy }, this.keycodeRotateMapping = E ?? { // ...QE_KEYCODE_ROTATE, - ...Jk - }, this.gamepadMapping = D ?? { + ...Ry + }, this.gamepadMapping = i ?? { 4: "rollLeft", 5: "rollRight", 6: "ctrl", 7: "shift" - }, this.capsMultiplier = i ?? 10, this.shiftMultiplier = w ?? 5, this.ctrlMultiplier = s ?? 1 / 5, this.xr = o, this.keydown = {}, this.keycode = {}, document.addEventListener("keydown", (y) => { - this.keydown[y.key] = !0, this.keycode[y.code] = !0; - }), document.addEventListener("keyup", (y) => { - this.keydown[y.key] = !1, this.keycode[y.code] = !1; + }, this.capsMultiplier = o ?? 10, this.shiftMultiplier = D ?? 5, this.ctrlMultiplier = w ?? 1 / 5, this.xr = s, this.keydown = {}, this.keycode = {}, document.addEventListener("keydown", (t) => { + this.keydown[t.key] = !0, this.keycode[t.code] = !0; + }), document.addEventListener("keyup", (t) => { + this.keydown[t.key] = !1, this.keycode[t.code] = !1; }), window.addEventListener("blur", () => { this.keydown = {}, this.keycode = {}; }); @@ -15809,86 +14998,86 @@ class Uk { // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime` // in seconds since the last update. update(A, I) { - var o, y; + var s, t; if (!this.enable) return !1; - const g = [new G.Vector2(), new G.Vector2()], B = navigator.getGamepads()[0]; + const g = [new a.Vector2(), new a.Vector2()], B = navigator.getGamepads()[0]; B && (g[0].set(B.axes[0], B.axes[1]), g[1].set(B.axes[2], B.axes[3])); - const C = (B == null ? void 0 : B.buttons.map((h) => h.pressed)) || [], E = Array.from(((y = (o = this.xr) == null ? void 0 : o.getSession()) == null ? void 0 : y.inputSources) ?? []); - for (const h of E) { - const k = h.gamepad; - if (k) - switch (h.handedness) { + const C = (B == null ? void 0 : B.buttons.map((G) => G.pressed)) || [], E = Array.from(((t = (s = this.xr) == null ? void 0 : s.getSession()) == null ? void 0 : t.inputSources) ?? []); + for (const G of E) { + const c = G.gamepad; + if (c) + switch (G.handedness) { case "none": { - g[0].x += k.axes[0], g[0].y += k.axes[1], g[1].x += k.axes[2], g[1].y += k.axes[3]; + g[0].x += c.axes[0], g[0].y += c.axes[1], g[1].x += c.axes[2], g[1].y += c.axes[3]; break; } case "left": { - g[0].x += k.axes[2], g[0].y += k.axes[3]; + g[0].x += c.axes[2], g[0].y += c.axes[3]; break; } case "right": { - g[1].x += k.axes[2], g[1].y += k.axes[3]; + g[1].x += c.axes[2], g[1].y += c.axes[3]; break; } } } - for (const h of g) - h.x = Math.abs(h.x) >= this.stickThreshold ? h.x : 0, h.y = Math.abs(h.y) >= this.stickThreshold ? h.y : 0; - const D = new G.Vector3( + for (const G of g) + G.x = Math.abs(G.x) >= this.stickThreshold ? G.x : 0, G.y = Math.abs(G.y) >= this.stickThreshold ? G.y : 0; + const i = new a.Vector3( g[1].x, g[1].y, 0 ).multiplyScalar(this.rotateSpeed); - for (const [h, k] of Object.entries(this.keycodeRotateMapping)) - this.keycode[h] && D.add(k); - for (const h in this.gamepadMapping) - if (C[Number.parseInt(h)]) - switch (this.gamepadMapping[h]) { + for (const [G, c] of Object.entries(this.keycodeRotateMapping)) + this.keycode[G] && i.add(c); + for (const G in this.gamepadMapping) + if (C[Number.parseInt(G)]) + switch (this.gamepadMapping[G]) { case "rollLeft": - D.z += 1; + i.z += 1; break; case "rollRight": - D.z -= 1; + i.z -= 1; break; } - D.multiply( - new G.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed) + i.multiply( + new a.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed) ); - let i = D.length() > oI; - if (D.manhattanLength() > 0) { - D.multiplyScalar(A); - const h = new G.Euler().setFromQuaternion( + let o = i.length() > iI; + if (i.manhattanLength() > 0) { + i.multiplyScalar(A); + const G = new a.Euler().setFromQuaternion( I.quaternion, "YXZ" ); - h.y -= D.x, h.x = Math.max( + G.y -= i.x, G.x = Math.max( -Math.PI / 2, - Math.min(Math.PI / 2, h.x - D.y) - ), h.z = Math.max(-Math.PI, Math.min(Math.PI, h.z + D.z)), I.quaternion.setFromEuler(h); - } - const w = new G.Vector3(g[0].x, 0, g[0].y); - w.add(this.extraMove); - for (const [h, k] of Object.entries(this.keycodeMoveMapping)) - this.keycode[h] && w.add(k); - let s = 1; - this.keydown.CapsLock && (s *= this.capsMultiplier), (this.keycode.ShiftLeft || this.keycode.ShiftRight) && (s *= this.shiftMultiplier), (this.keycode.ControlLeft || this.keycode.ControlRight) && (s *= this.ctrlMultiplier); - for (const h in this.gamepadMapping) - if (C[Number.parseInt(h)]) - switch (this.gamepadMapping[h]) { + Math.min(Math.PI / 2, G.x - i.y) + ), G.z = Math.max(-Math.PI, Math.min(Math.PI, G.z + i.z)), I.quaternion.setFromEuler(G); + } + const D = new a.Vector3(g[0].x, 0, g[0].y); + D.add(this.extraMove); + for (const [G, c] of Object.entries(this.keycodeMoveMapping)) + this.keycode[G] && D.add(c); + let w = 1; + this.keydown.CapsLock && (w *= this.capsMultiplier), (this.keycode.ShiftLeft || this.keycode.ShiftRight) && (w *= this.shiftMultiplier), (this.keycode.ControlLeft || this.keycode.ControlRight) && (w *= this.ctrlMultiplier); + for (const G in this.gamepadMapping) + if (C[Number.parseInt(G)]) + switch (this.gamepadMapping[G]) { case "shift": - s *= this.shiftMultiplier; + w *= this.shiftMultiplier; break; case "ctrl": - s *= this.ctrlMultiplier; + w *= this.ctrlMultiplier; break; } - return w.length() > oI && (i = !0), w.applyQuaternion(I.quaternion), I.position.add( - w.multiplyScalar(this.moveSpeed * s * A) - ), i; + return D.length() > iI && (o = !0), D.applyQuaternion(I.quaternion), I.position.add( + D.multiplyScalar(this.moveSpeed * w * A) + ), o; } } -class tk { +class ey { constructor({ // The HTML canvas element to attach pointer events to canvas: A, @@ -15904,184 +15093,184 @@ class tk { // Reverse the direction of rotation (default: false) reverseRotate: E, // Reverse the direction of sliding (default: false) - reverseSlide: D, + reverseSlide: i, // Reverse the direction of swipe gestures (default: false) - reverseSwipe: i, + reverseSwipe: o, // Reverse the direction of scroll wheel movement (default: false) - reverseScroll: w, + reverseScroll: D, // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA) - moveInertia: s, + moveInertia: w, // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA) - rotateInertia: o, + rotateInertia: s, // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE) - pointerRollScale: y, + pointerRollScale: t, // Callback for double press events (default: () => {}) - doublePress: h, + doublePress: G, // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS) - pressMoveDelayMs: k, + pressMoveDelayMs: c, // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS) - pressMoveAccelMs: R, + pressMoveAccelMs: h, // Speed of movement on press (default: 0) - pressMoveSpeed: F, + pressMoveSpeed: y, // Speed of movement on double press (default: pressMoveSpeed * 5.0) - doublePressMoveSpeed: a, + doublePressMoveSpeed: S, // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0) - triplePressMoveSpeed: S, + triplePressMoveSpeed: F, // Whether to move toward the screen center or finger when pressing to move (default: true) - pressMoveCenter: M + pressMoveCenter: e }) { - this.enable = !0, this.canvas = A, this.rotateSpeed = I ?? ik, this.slideSpeed = g ?? wk, this.scrollSpeed = B ?? ok, this.swapRotateSlide = C ?? !1, this.reverseRotate = E ?? (AB() || Rg()), this.reverseSlide = D ?? !1, this.reverseSwipe = i ?? !1, this.reverseScroll = w ?? !1, this.moveInertia = s ?? Gk, this.rotateInertia = o ?? sk, this.pointerRollScale = y ?? Rk, this.doublePress = h ?? (() => { - }), this.doublePressLimitMs = Sk, this.doublePressDistance = Nk, this.pressMoveDelayMs = k ?? kk, this.pressMoveAccelMs = R ?? Fk, this.pressMoveSpeed = F ?? 0, this.doublePressMoveSpeed = a ?? this.pressMoveSpeed * 5, this.triplePressMoveSpeed = S ?? this.doublePressMoveSpeed * 5, this.pressMoveCenter = M ?? !0, this.doublePressed = void 0, this.triplePressed = !1, this.lastUp = null, this.lastLastUp = null, this.rotating = null, this.sliding = null, this.lastDown = null, this.dualPress = !1, this.scroll = new G.Vector3(), this.rotateVelocity = new G.Vector3(), this.moveVelocity = new G.Vector3(), A.addEventListener("pointerdown", (N) => { - const U = this.getPointerPosition(N), J = U.clone(), t = U.clone(), H = !this.swapRotateSlide && !this.rotating && (N.pointerType !== "mouse" || N.button === 0) || this.swapRotateSlide && this.sliding && !this.rotating && (N.pointerType !== "mouse" || N.button === 1), { pointerId: K } = N, Y = performance.now(); - if (H) - this.rotating = { initial: J, last: t, position: U, pointerId: K, timeStamp: Y }, this.lastDown = this.rotating, A.setPointerCapture(N.pointerId), this.dualPress = !1; + this.enable = !0, this.canvas = A, this.rotateSpeed = I ?? Cy, this.slideSpeed = g ?? Ey, this.scrollSpeed = B ?? iy, this.swapRotateSlide = C ?? !1, this.reverseRotate = E ?? (iB() || tg()), this.reverseSlide = i ?? !1, this.reverseSwipe = o ?? !1, this.reverseScroll = D ?? !1, this.moveInertia = w ?? oy, this.rotateInertia = s ?? Dy, this.pointerRollScale = t ?? ay, this.doublePress = G ?? (() => { + }), this.doublePressLimitMs = yy, this.doublePressDistance = cy, this.pressMoveDelayMs = c ?? ty, this.pressMoveAccelMs = h ?? Gy, this.pressMoveSpeed = y ?? 0, this.doublePressMoveSpeed = S ?? this.pressMoveSpeed * 5, this.triplePressMoveSpeed = F ?? this.doublePressMoveSpeed * 5, this.pressMoveCenter = e ?? !0, this.doublePressed = void 0, this.triplePressed = !1, this.lastUp = null, this.lastLastUp = null, this.rotating = null, this.sliding = null, this.lastDown = null, this.dualPress = !1, this.scroll = new a.Vector3(), this.rotateVelocity = new a.Vector3(), this.moveVelocity = new a.Vector3(), A.addEventListener("pointerdown", (R) => { + const N = this.getPointerPosition(R), U = N.clone(), M = N.clone(), J = !this.swapRotateSlide && !this.rotating && (R.pointerType !== "mouse" || R.button === 0) || this.swapRotateSlide && this.sliding && !this.rotating && (R.pointerType !== "mouse" || R.button === 1), { pointerId: H } = R, n = performance.now(); + if (J) + this.rotating = { initial: U, last: M, position: N, pointerId: H, timeStamp: n }, this.lastDown = this.rotating, A.setPointerCapture(R.pointerId), this.dualPress = !1; else if (!this.sliding) { - const L = N.pointerType === "mouse" ? N.button : void 0; + const L = R.pointerType === "mouse" ? R.button : void 0; this.sliding = { - initial: J, - last: t, - position: U, - pointerId: K, + initial: U, + last: M, + position: N, + pointerId: H, button: L, - timeStamp: Y - }, this.lastDown = this.sliding, A.setPointerCapture(N.pointerId), this.dualPress = this.rotating != null && Y - this.rotating.timeStamp < ak; + timeStamp: n + }, this.lastDown = this.sliding, A.setPointerCapture(R.pointerId), this.dualPress = this.rotating != null && n - this.rotating.timeStamp < hy; } if (this.lastUp) { - const L = this.lastUp.position.distanceTo(U), q = Y - this.lastUp.timeStamp; - if (L < this.doublePressDistance && q < this.doublePressLimitMs && (this.doublePressed = performance.now(), this.triplePressed = !1, this.lastLastUp)) { - const n = this.lastLastUp.position.distanceTo( + const L = this.lastUp.position.distanceTo(N), x = n - this.lastUp.timeStamp; + if (L < this.doublePressDistance && x < this.doublePressLimitMs && (this.doublePressed = performance.now(), this.triplePressed = !1, this.lastLastUp)) { + const d = this.lastLastUp.position.distanceTo( this.lastUp.position - ), r = this.lastUp.timeStamp - this.lastLastUp.timeStamp; - n < this.doublePressDistance && r < this.doublePressLimitMs && (this.triplePressed = !0); + ), Y = this.lastUp.timeStamp - this.lastLastUp.timeStamp; + d < this.doublePressDistance && Y < this.doublePressLimitMs && (this.triplePressed = !0); } } }); - const c = (N) => { - var H, K; - ((H = this.rotating) == null ? void 0 : H.pointerId) === N.pointerId ? (this.rotating = null, A.releasePointerCapture(N.pointerId), this.dualPress && this.sliding && (A.releasePointerCapture(this.sliding.pointerId), this.sliding = null)) : ((K = this.sliding) == null ? void 0 : K.pointerId) === N.pointerId && (this.sliding = null, A.releasePointerCapture(N.pointerId), this.dualPress && this.rotating && (A.releasePointerCapture(this.rotating.pointerId), this.rotating = null)), this.doublePressed = void 0, this.triplePressed = !1; - const U = this.getPointerPosition(N), J = this.lastUp; + const k = (R) => { + var J, H; + ((J = this.rotating) == null ? void 0 : J.pointerId) === R.pointerId ? (this.rotating = null, A.releasePointerCapture(R.pointerId), this.dualPress && this.sliding && (A.releasePointerCapture(this.sliding.pointerId), this.sliding = null)) : ((H = this.sliding) == null ? void 0 : H.pointerId) === R.pointerId && (this.sliding = null, A.releasePointerCapture(R.pointerId), this.dualPress && this.rotating && (A.releasePointerCapture(this.rotating.pointerId), this.rotating = null)), this.doublePressed = void 0, this.triplePressed = !1; + const N = this.getPointerPosition(R), U = this.lastUp; this.lastLastUp = this.lastUp; - const t = performance.now(); - if (this.lastUp = { position: U, timeStamp: t }, J && J.position.distanceTo(U) < this.doublePressDistance) { - const L = t - J.timeStamp; - L < this.doublePressLimitMs && this.doublePress({ position: U, intervalMs: L }); + const M = performance.now(); + if (this.lastUp = { position: N, timeStamp: M }, U && U.position.distanceTo(N) < this.doublePressDistance) { + const L = M - U.timeStamp; + L < this.doublePressLimitMs && this.doublePress({ position: N, intervalMs: L }); } }; - document.addEventListener("pointerup", c), document.addEventListener("pointercancel", c), document.addEventListener("pointermove", (N) => { - var U, J; - ((U = this.rotating) == null ? void 0 : U.pointerId) === N.pointerId ? this.rotating.position = this.getPointerPosition(N) : ((J = this.sliding) == null ? void 0 : J.pointerId) === N.pointerId && (this.sliding.position = this.getPointerPosition(N)); - }), A.addEventListener("contextmenu", (N) => { - N.preventDefault(); - }), A.addEventListener("wheel", (N) => { + document.addEventListener("pointerup", k), document.addEventListener("pointercancel", k), document.addEventListener("pointermove", (R) => { + var N, U; + ((N = this.rotating) == null ? void 0 : N.pointerId) === R.pointerId ? this.rotating.position = this.getPointerPosition(R) : ((U = this.sliding) == null ? void 0 : U.pointerId) === R.pointerId && (this.sliding.position = this.getPointerPosition(R)); + }), A.addEventListener("contextmenu", (R) => { + R.preventDefault(); + }), A.addEventListener("wheel", (R) => { this.scroll.add( - new G.Vector3(N.deltaX, N.deltaY, N.deltaZ) - ), N.preventDefault(); + new a.Vector3(R.deltaX, R.deltaY, R.deltaZ) + ), R.preventDefault(); }); } getPointerPosition(A) { const I = this.canvas.getBoundingClientRect(); - return new G.Vector2( + return new a.Vector2( A.clientX - I.left, A.clientY - I.top ); } update(A, I, g) { - var D, i; + var i, o; if (!this.enable) return !1; const B = performance.now(); let C = !1; if (this.dualPress && this.rotating && this.sliding) { - const w = [ + const D = [ this.rotating.position.clone().sub(this.rotating.last), this.sliding.position.clone().sub(this.sliding.last) - ], s = w[0].dot(w[1]); - if (s >= 0.2) { - const o = w[0].clone().add(w[1]), y = new G.Vector3(o.x, -o.y, 0); - y.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1)), y.applyQuaternion(I.quaternion), I.position.add(y), this.moveVelocity = y.clone().multiplyScalar(1 / A), y.length() > oI && (C = !0); - } else if (s <= -0.2) { - const o = this.sliding.last.clone().sub(this.rotating.last), y = o.length(); - o.multiplyScalar(1 / y).normalize(); - const h = new G.Vector2(-o.y, o.x), k = [w[0].dot(o), w[1].dot(o)], R = [w[0].dot(h), w[1].dot(h)], F = this.rotating.last.clone().add(this.sliding.last).multiplyScalar(0.5); - let a = new G.Vector3(); - const S = g ?? (I instanceof G.Camera ? I : void 0); - if (S) { - const t = new G.Vector2( - F.x / this.canvas.clientWidth * 2 - 1, - -(F.y / this.canvas.clientHeight) * 2 + 1 - ), H = new G.Raycaster(); - H.setFromCamera(t, S), a = H.ray.direction; + ], w = D[0].dot(D[1]); + if (w >= 0.2) { + const s = D[0].clone().add(D[1]), t = new a.Vector3(s.x, -s.y, 0); + t.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1)), t.applyQuaternion(I.quaternion), I.position.add(t), this.moveVelocity = t.clone().multiplyScalar(1 / A), t.length() > iI && (C = !0); + } else if (w <= -0.2) { + const s = this.sliding.last.clone().sub(this.rotating.last), t = s.length(); + s.multiplyScalar(1 / t).normalize(); + const G = new a.Vector2(-s.y, s.x), c = [D[0].dot(s), D[1].dot(s)], h = [D[0].dot(G), D[1].dot(G)], y = this.rotating.last.clone().add(this.sliding.last).multiplyScalar(0.5); + let S = new a.Vector3(); + const F = g ?? (I instanceof a.Camera ? I : void 0); + if (F) { + const M = new a.Vector2( + y.x / this.canvas.clientWidth * 2 - 1, + -(y.y / this.canvas.clientHeight) * 2 + 1 + ), J = new a.Raycaster(); + J.setFromCamera(M, F), S = J.ray.direction; } - const M = k[1] - k[0], c = a.multiplyScalar(M * this.slideSpeed); - I.position.add(c), this.moveVelocity = c.clone().multiplyScalar(1 / A), c.length() > oI && (C = !0); - const N = [ - Math.atan(R[0] / (-0.5 * y)), - Math.atan(R[1] / (0.5 * y)) - ], U = 0.5 * (N[0] + N[1]) * this.pointerRollScale, J = new G.Euler().setFromQuaternion( + const e = c[1] - c[0], k = S.multiplyScalar(e * this.slideSpeed); + I.position.add(k), this.moveVelocity = k.clone().multiplyScalar(1 / A), k.length() > iI && (C = !0); + const R = [ + Math.atan(h[0] / (-0.5 * t)), + Math.atan(h[1] / (0.5 * t)) + ], N = 0.5 * (R[0] + R[1]) * this.pointerRollScale, U = new a.Euler().setFromQuaternion( I.quaternion, "YXZ" ); - J.z = Math.max( + U.z = Math.max( -Math.PI, - Math.min(Math.PI, J.z + 0.5 * U) - ), I.quaternion.setFromEuler(J), Math.abs(U) > oI && (C = !0); + Math.min(Math.PI, U.z + 0.5 * N) + ), I.quaternion.setFromEuler(U), Math.abs(N) > iI && (C = !0); } this.rotating.last.copy(this.rotating.position), this.sliding.last.copy(this.sliding.position); } else { - const w = new G.Vector3(); + const D = new a.Vector3(); if (this.rotating && !this.dualPress) { - const o = this.rotating.position.clone().sub(this.rotating.last); - this.rotating.last.copy(this.rotating.position), w.set(o.x, o.y, 0), w.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1)), this.rotateVelocity = w.clone().multiplyScalar(1 / A), w.length() > oI && (C = !0); + const s = this.rotating.position.clone().sub(this.rotating.last); + this.rotating.last.copy(this.rotating.position), D.set(s.x, s.y, 0), D.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1)), this.rotateVelocity = D.clone().multiplyScalar(1 / A), D.length() > iI && (C = !0); } else this.rotateVelocity.multiplyScalar( Math.exp(-A / this.rotateInertia) - ), w.addScaledVector(this.rotateVelocity, A), this.rotateVelocity.length() * 0.1 > oI && (C = !0); - const s = new G.Euler().setFromQuaternion( + ), D.addScaledVector(this.rotateVelocity, A), this.rotateVelocity.length() * 0.1 > iI && (C = !0); + const w = new a.Euler().setFromQuaternion( I.quaternion, "YXZ" ); - if (s.y -= w.x, s.x = Math.max( + if (w.y -= D.x, w.x = Math.max( -Math.PI / 2, - Math.min(Math.PI / 2, s.x - w.y) - ), s.z *= Math.exp(-0 * A), I.quaternion.setFromEuler(s), this.sliding && !this.dualPress) { - const o = this.sliding.position.clone().sub(this.sliding.last); + Math.min(Math.PI / 2, w.x - D.y) + ), w.z *= Math.exp(-0 * A), I.quaternion.setFromEuler(w), this.sliding && !this.dualPress) { + const s = this.sliding.position.clone().sub(this.sliding.last); this.sliding.last.copy(this.sliding.position); - const y = this.sliding.button !== 2 ? new G.Vector3(o.x, 0, o.y) : new G.Vector3(o.x, -o.y, 0); - y.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1)), y.applyQuaternion(I.quaternion), I.position.add(y), this.moveVelocity = y.clone().multiplyScalar(1 / A), y.length() > oI && (C = !0); + const t = this.sliding.button !== 2 ? new a.Vector3(s.x, 0, s.y) : new a.Vector3(s.x, -s.y, 0); + t.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1)), t.applyQuaternion(I.quaternion), I.position.add(t), this.moveVelocity = t.clone().multiplyScalar(1 / A), t.length() > iI && (C = !0); } else { - const o = new G.Vector3(); + const s = new a.Vector3(); if (this.sliding || this.rotating) { - const h = ((D = this.lastDown) == null ? void 0 : D.last) ?? new G.Vector2(), k = g ?? (I instanceof G.Camera ? I : void 0); - if (k) { - const R = this.pressMoveCenter ? new G.Vector2(0, 0) : new G.Vector2( - h.x / this.canvas.clientWidth * 2 - 1, - -(h.y / this.canvas.clientHeight) * 2 + 1 - ), F = new G.Raycaster(); - F.setFromCamera(R, k), o.copy(F.ray.direction).normalize(); + const G = ((i = this.lastDown) == null ? void 0 : i.last) ?? new a.Vector2(), c = g ?? (I instanceof a.Camera ? I : void 0); + if (c) { + const h = this.pressMoveCenter ? new a.Vector2(0, 0) : new a.Vector2( + G.x / this.canvas.clientWidth * 2 - 1, + -(G.y / this.canvas.clientHeight) * 2 + 1 + ), y = new a.Raycaster(); + y.setFromCamera(h, c), s.copy(y.ray.direction).normalize(); } if (this.doublePressed) { this.pressHeld = !1; - let R = (performance.now() - this.doublePressed) / this.pressMoveAccelMs; - R = Math.max(0, Math.min(1, R)), o.multiplyScalar( - (this.triplePressed ? this.triplePressMoveSpeed : this.doublePressMoveSpeed) * R + let h = (performance.now() - this.doublePressed) / this.pressMoveAccelMs; + h = Math.max(0, Math.min(1, h)), s.multiplyScalar( + (this.triplePressed ? this.triplePressMoveSpeed : this.doublePressMoveSpeed) * h ); } else { - let R = 0; - this.lastDown && (R = (B - (((i = this.lastDown) == null ? void 0 : i.timeStamp) ?? B) - this.pressMoveDelayMs) / this.pressMoveAccelMs, this.lastDown.position.distanceTo(this.lastDown.initial) < this.doublePressDistance ? this.pressHeld === void 0 && R > 0 && (this.pressHeld = !0) : this.pressHeld === void 0 && (this.pressHeld = !1)), this.pressHeld ? o.multiplyScalar( - this.pressMoveSpeed * Math.max(0, Math.min(1, R)) - ) : o.set(0, 0, 0); + let h = 0; + this.lastDown && (h = (B - (((o = this.lastDown) == null ? void 0 : o.timeStamp) ?? B) - this.pressMoveDelayMs) / this.pressMoveAccelMs, this.lastDown.position.distanceTo(this.lastDown.initial) < this.doublePressDistance ? this.pressHeld === void 0 && h > 0 && (this.pressHeld = !0) : this.pressHeld === void 0 && (this.pressHeld = !1)), this.pressHeld ? s.multiplyScalar( + this.pressMoveSpeed * Math.max(0, Math.min(1, h)) + ) : s.set(0, 0, 0); } } else this.pressHeld = void 0; - const y = Math.exp(-A / this.moveInertia); - this.moveVelocity.lerpVectors(o, this.moveVelocity, y), I.position.addScaledVector(this.moveVelocity, A), this.moveVelocity.length() * 0.1 > oI && (C = !0); + const t = Math.exp(-A / this.moveInertia); + this.moveVelocity.lerpVectors(s, this.moveVelocity, t), I.position.addScaledVector(this.moveVelocity, A), this.moveVelocity.length() * 0.1 > iI && (C = !0); } } const E = this.scroll.multiplyScalar(this.scrollSpeed); - return E.set(E.x, E.z, E.y), this.reverseScroll && E.multiplyScalar(-1), E.applyQuaternion(I.quaternion), I.position.add(E), E.length() > oI && (C = !0), this.scroll.set(0, 0, 0), C; + return E.set(E.x, E.z, E.y), this.reverseScroll && E.multiplyScalar(-1), E.applyQuaternion(I.quaternion), I.position.add(E), E.length() > iI && (C = !0), this.scroll.set(0, 0, 0), C; } } -const Hk = ` +const Ny = ` precision highp float; precision highp int; @@ -16094,6 +15283,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -16170,10 +15360,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; @@ -16189,40 +15383,40 @@ void main() { #endif } `; -class _k { +class Wy { constructor(A) { - this.portalPairs = [], this.lastCameraWorld = new G.Vector3().setScalar(Number.NaN), this.prefetchActive = !1, this.scratch = { - quat: new G.Quaternion(), - scale: new G.Vector3(), - center0: new G.Vector3(), - center1: new G.Vector3(), - normal0: new G.Vector3(), - normal1: new G.Vector3(), - centerT: new G.Vector3(), - normalT: new G.Vector3(), - prevCameraWorld: new G.Vector3(), - currCameraWorld: new G.Vector3(), - hit: new G.Vector3(), - offset: new G.Vector3(), - camWorld: new G.Matrix4(), - newCamWorld: new G.Matrix4(), - invCamLocal: new G.Matrix4(), - newLocalFrame: new G.Matrix4(), - cameraWorldPos: new G.Vector3(), - viewDir: new G.Vector3(), - portalCenter: new G.Vector3(), - toPortal: new G.Vector3() + this.portalPairs = [], this.lastCameraWorld = new a.Vector3().setScalar(Number.NaN), this.prefetchActive = !1, this.scratch = { + quat: new a.Quaternion(), + scale: new a.Vector3(), + center0: new a.Vector3(), + center1: new a.Vector3(), + normal0: new a.Vector3(), + normal1: new a.Vector3(), + centerT: new a.Vector3(), + normalT: new a.Vector3(), + prevCameraWorld: new a.Vector3(), + currCameraWorld: new a.Vector3(), + hit: new a.Vector3(), + offset: new a.Vector3(), + camWorld: new a.Matrix4(), + newCamWorld: new a.Matrix4(), + invCamLocal: new a.Matrix4(), + newLocalFrame: new a.Matrix4(), + cameraWorldPos: new a.Vector3(), + viewDir: new a.Vector3(), + portalCenter: new a.Vector3(), + toPortal: new a.Vector3() }, this.renderer = A.renderer, this.scene = A.scene, this.camera = A.camera, this.localFrame = A.localFrame, this.defaultPortalRadius = A.defaultPortalRadius ?? 1, this.portalCrossEps = A.portalCrossEps ?? 1e-6; const I = A.sparkOptions ?? {}; this.portalRenderer = new jg({ renderer: this.renderer, extraUniforms: { - diskCenter: { value: new G.Vector3() }, - diskNormal: { value: new G.Vector3() }, + diskCenter: { value: new a.Vector3() }, + diskNormal: { value: new a.Vector3() }, diskRadius: { value: 0 }, diskTwoSided: { value: !1 } }, - fragmentShader: Hk, + fragmentShader: Ny, ...I }), this.scene.add(this.portalRenderer), this.behindRenderer = new jg({ renderer: this.renderer, @@ -16237,12 +15431,12 @@ class _k { */ addPortalPair(A) { const I = { - entryPortal: new G.Object3D(), - exitPortal: new G.Object3D(), + entryPortal: new a.Object3D(), + exitPortal: new a.Object3D(), radius: (A == null ? void 0 : A.radius) ?? this.defaultPortalRadius, onCross: A == null ? void 0 : A.onCross, - _entryBefore: new G.Matrix4(), - _exitBefore: new G.Matrix4() + _entryBefore: new a.Matrix4(), + _exitBefore: new a.Matrix4() }; return this.scene.add(I.entryPortal), this.scene.add(I.exitPortal), this.portalPairs.push(I), I; } @@ -16268,12 +15462,12 @@ class _k { /** Set portal disk uniforms for shader clipping */ setPortalDiskUniforms(A, I, g, B) { A.updateMatrixWorld(!0), I.updateMatrixWorld(!0); - const C = A.matrixWorld.clone().invert(), E = I.matrixWorld.clone().premultiply(C), D = new G.Quaternion(), i = this.portalRenderer.uniforms; + const C = A.matrixWorld.clone().invert(), E = I.matrixWorld.clone().premultiply(C), i = new a.Quaternion(), o = this.portalRenderer.uniforms; E.decompose( - i.diskCenter.value, - D, - new G.Vector3() - ), i.diskNormal.value.set(0, 0, 1).applyQuaternion(D), i.diskRadius.value = g, i.diskTwoSided.value = B; + o.diskCenter.value, + i, + new a.Vector3() + ), o.diskNormal.value.set(0, 0, 1).applyQuaternion(i), o.diskRadius.value = g, o.diskTwoSided.value = B; } /** Extract portal plane from matrix */ getPortalPlane(A, I, g) { @@ -16293,16 +15487,16 @@ class _k { this.scratch.center1, this.scratch.normal1 ); - const E = this.scratch.offset.copy(A).sub(this.scratch.center0).dot(this.scratch.normal0), D = this.scratch.offset.copy(I).sub(this.scratch.center1).dot(this.scratch.normal1); - if (E > this.portalCrossEps && D > this.portalCrossEps || E < -this.portalCrossEps && D < -this.portalCrossEps) + const E = this.scratch.offset.copy(A).sub(this.scratch.center0).dot(this.scratch.normal0), i = this.scratch.offset.copy(I).sub(this.scratch.center1).dot(this.scratch.normal1); + if (E > this.portalCrossEps && i > this.portalCrossEps || E < -this.portalCrossEps && i < -this.portalCrossEps) return null; - const i = E - D; - if (Math.abs(i) < this.portalCrossEps) return null; - const w = E / i; - return w < 0 || w > 1 || (this.scratch.hit.lerpVectors(A, I, w), this.scratch.centerT.copy(this.scratch.center0).lerp(this.scratch.center1, w), this.scratch.normalT.copy(this.scratch.normal0).lerp(this.scratch.normal1, w).normalize(), this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT), this.scratch.offset.addScaledVector( + const o = E - i; + if (Math.abs(o) < this.portalCrossEps) return null; + const D = E / o; + return D < 0 || D > 1 || (this.scratch.hit.lerpVectors(A, I, D), this.scratch.centerT.copy(this.scratch.center0).lerp(this.scratch.center1, D), this.scratch.normalT.copy(this.scratch.normal0).lerp(this.scratch.normal1, D).normalize(), this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT), this.scratch.offset.addScaledVector( this.scratch.normalT, -this.scratch.offset.dot(this.scratch.normalT) - ), this.scratch.offset.lengthSq() > C * C) ? null : w; + ), this.scratch.offset.lengthSq() > C * C) ? null : D; } /** Teleport camera through portal */ teleport(A) { @@ -16366,8 +15560,8 @@ class _k { B.entryPortal.getWorldPosition(this.scratch.portalCenter), this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos); const C = this.scratch.toPortal.length(), E = this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / C; E > A && (A = E, I = B, g = !0), B.exitPortal.getWorldPosition(this.scratch.portalCenter), this.scratch.toPortal.copy(this.scratch.portalCenter).sub(this.scratch.cameraWorldPos); - const D = this.scratch.toPortal.length(), i = this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / D; - i > A && (A = i, I = B, g = !1); + const i = this.scratch.toPortal.length(), o = this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / i; + o > A && (A = o, I = B, g = !1); } return I ? { pair: I, @@ -16424,97 +15618,93 @@ class _k { } } export { - rR as DEFAULT_CONTROLLER_FAST_MULTIPLIER, - xR as DEFAULT_CONTROLLER_GETFAST, - dR as DEFAULT_CONTROLLER_GETMOVE, - qR as DEFAULT_CONTROLLER_GETROTATE, - lR as DEFAULT_CONTROLLER_GETSLOW, - Ok as DEFAULT_CONTROLLER_MOVE_HEADING, - KR as DEFAULT_CONTROLLER_MOVE_SPEED, - eR as DEFAULT_CONTROLLER_ROLL_SPEED, - VB as DEFAULT_CONTROLLER_ROTATE_SPEED, - nR as DEFAULT_CONTROLLER_SLOW_MULTIPLIER, - Hk as DISK_PORTAL_FRAGMENT_SHADER, - GI as ExtSplats, - Wk as FINGER_TIPS, - Uk as FpsMovement, + nh as DEFAULT_CONTROLLER_FAST_MULTIPLIER, + Yh as DEFAULT_CONTROLLER_GETFAST, + Kh as DEFAULT_CONTROLLER_GETMOVE, + rh as DEFAULT_CONTROLLER_GETROTATE, + dh as DEFAULT_CONTROLLER_GETSLOW, + by as DEFAULT_CONTROLLER_MOVE_HEADING, + Uh as DEFAULT_CONTROLLER_MOVE_SPEED, + Lh as DEFAULT_CONTROLLER_ROLL_SPEED, + uB as DEFAULT_CONTROLLER_ROTATE_SPEED, + Hh as DEFAULT_CONTROLLER_SLOW_MULTIPLIER, + Ny as DISK_PORTAL_FRAGMENT_SHADER, + sI as ExtSplats, + Zy as FINGER_TIPS, + ky as FpsMovement, ZQ as HANDS, - Vw as Hand, - vk as HandMovement, - Zw as JOINT_IDS, - Vk as JOINT_INDEX, - dg as JOINT_RADIUS, - Bk as JOINT_SEGMENTS, - Ck as JOINT_SEGMENT_STEPS, - Xk as JOINT_TIPS, - UB as JointEnum, - Ak as JointSplats, - fA as LN_SCALE_MAX, - pA as LN_SCALE_MIN, - Zk as NUM_JOINTS, - TB as OldSparkRenderer, - zg as OldSparkViewpoint, - tQ as OldSplatAccumulator, - $A as PackedSplats, - Pg as PagedSplats, - vg as PlyReader, - tk as PointerControls, - Ig as Readback, - TQ as RgbaArray, - Zo as Sint8ToFloat, - zk as SparkControls, - _k as SparkPortals, + fo as Hand, + Xy as HandMovement, + po as JOINT_IDS, + Ty as JOINT_INDEX, + qg as JOINT_RADIUS, + Iy as JOINT_SEGMENTS, + gy as JOINT_SEGMENT_STEPS, + Oy as JOINT_TIPS, + RB as JointEnum, + zh as JointSplats, + bA as LN_SCALE_MAX, + uA as LN_SCALE_MIN, + my as NUM_JOINTS, + hI as PackedSplats, + ag as PagedSplats, + mQ as PlyReader, + ey as PointerControls, + cg as Readback, + rB as RgbaArray, + Kw as Sint8ToFloat, + Vy as SparkControls, + Wy as SparkPortals, jg as SparkRenderer, - WB as SparkXr, - qI as SplatAccumulator, - Sg as SplatEdit, - qh as SplatEditRgbaBlendMode, - lh as SplatEditSdf, - nh as SplatEditSdfType, - ph as SplatEdits, - hA as SplatFileType, - PI as SplatGenerator, - fw as SplatLoader, - vA as SplatMesh, - Ph as SplatModifier, - tI as SplatPager, - ZB as SplatSkinning, - kR as SplatSkinningMode, - XI as SplatTransformer, - GR as SpzReader, - MI as SpzWriter, - mo as Uint8ToFloat, - $g as XrHand, - jk as XrHands, - pk as constructAxes, - lk as constructGrid, - fk as constructSpherePoints, - Kk as defines, - rk as dyno, - Ds as flipPixels, - lg as floatToSint8, - jA as floatToUint8, - NA as fromHalf, - uk as generators, - NB as getSplatFileType, - Pk as imageSplats, - AB as isAndroid, - Rg as isIos, - mg as isMobile, - IB as isOculus, - dk as isPcSogs, - Es as isQuest2, - NC as isVisionPro, - mk as lerpHandsSnapshots, - Tk as modifiers, - is as pixelsToPngUrl, - nk as readRgbaArray, - nQ as setPackedSplat, - bk as textSplats, - VA as toHalf, - xk as transcodeSpz, - Og as unpackSplat, - qk as unpackSplats, - ek as utils + PB as SparkXr, + dI as SplatAccumulator, + Wg as SplatEdit, + QG as SplatEditRgbaBlendMode, + CG as SplatEditSdf, + IG as SplatEditSdfType, + EG as SplatEdits, + LA as SplatFileType, + Sg as SplatGenerator, + Uo as SplatLoader, + zA as SplatMesh, + Hy as SplatModifier, + MI as SplatPager, + fB as SplatSkinning, + th as SplatSkinningMode, + mI as SplatTransformer, + oh as SpzReader, + eI as SpzWriter, + Hw as Uint8ToFloat, + _g as XrHand, + vy as XrHands, + ly as constructAxes, + dy as constructGrid, + xy as constructSpherePoints, + Uy as defines, + ny as dyno, + Xw as flipPixels, + ug as floatToSint8, + VA as floatToUint8, + FA as fromHalf, + fy as generators, + Lo as getSplatFileType, + py as imageSplats, + iB as isAndroid, + tg as isIos, + Vg as isMobile, + DB as isOculus, + Ky as isPcSogs, + vw as isQuest2, + ME as isVisionPro, + Py as lerpHandsSnapshots, + uy as modifiers, + Vw as pixelsToPngUrl, + ry as readRgbaArray, + lQ as setPackedSplat, + qy as textSplats, + ZA as toHalf, + Yy as transcodeSpz, + Xg as unpackSplat, + Ly as utils }; //# sourceMappingURL=spark.module.min.js.map diff --git a/dist/spark.module.min.js.map b/dist/spark.module.min.js.map index 5c26ae2f..a9509fd5 100644 --- a/dist/spark.module.min.js.map +++ b/dist/spark.module.min.js.map @@ -1 +1 @@ -{"version":3,"file":"spark.module.min.js","sources":["../src/OldSplatGeometry.ts","../node_modules/fflate/esm/browser.js","../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/utils.ts","../src/OldSplatWorker.ts","../src/SplatWorker.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/ExtSplats.ts","../rust/spark-rs/pkg/spark_rs.js","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/oldSplatFragment.glsl","../src/shaders/oldSplatVertex.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/RgbaArray.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/ply.ts","../src/SplatLoader.ts","../src/PackedSplats.ts","../src/OldSparkViewpoint.ts","../src/OldSplatAccumulator.ts","../src/OldSparkRenderer.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by the instance attribute \"ordering\".\n\nexport class OldSplatGeometry extends THREE.InstancedBufferGeometry {\n ordering: Uint32Array;\n attribute: THREE.InstancedBufferAttribute;\n\n constructor(ordering: Uint32Array, activeSplats: number) {\n super();\n\n this.ordering = ordering;\n\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n\n // Hack to work around Three.js\n // @ts-ignore\n this._maxInstanceCount = ordering.length;\n this.instanceCount = activeSplats;\n\n this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1);\n this.attribute.setUsage(THREE.DynamicDrawUsage);\n this.setAttribute(\"splatIndex\", this.attribute);\n }\n\n update(ordering: Uint32Array, activeSplats: number) {\n this.ordering = ordering;\n this.attribute.array = ordering;\n this.instanceCount = activeSplats;\n this.attribute.addUpdateRange(0, activeSplats);\n this.attribute.needsUpdate = true;\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n","import BundledWorker from \"./oldWorker?worker&inline\";\nimport { getTransferable } from \"./utils.js\";\n\n// SplatWorker is an internal class that manages a WebWorker for executing\n// longer running CPU tasks such as Gsplat file decoding and sorting.\n// Although a SplatWorker can be created and used directly, the utility\n// function withWorker() is recommended to allocate from a managed\n// pool of SplatWorkers.\n\nexport class OldSplatWorker {\n worker: Worker;\n messages: Record<\n number,\n { resolve: (value: unknown) => void; reject: (reason?: unknown) => void }\n > = {};\n messageIdNext = 0;\n\n constructor() {\n // this.worker = new Worker(new URL(\"./worker\", import.meta.url), { type: \"module\" });\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n makeMessageId(): number {\n return ++this.messageIdNext;\n }\n\n makeMessagePromiseId(): { id: number; promise: Promise } {\n const id = this.makeMessageId();\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject };\n });\n return { id, promise };\n }\n\n onMessage(event: MessageEvent) {\n // console.log(\"SplatWorker.onMessage:\", event);\n const { id, result, error } = event.data;\n // console.log(`SplatWorker.onMessage(${id}):`, result, error);\n const handler = this.messages[id];\n if (handler) {\n delete this.messages[id];\n if (error) {\n handler.reject(error);\n } else {\n handler.resolve(result);\n }\n }\n }\n\n // Invoke an RPC on the worker with the given name and arguments.\n // The normal usage of a worker is to run one activity at a time,\n // but this function allows for concurrent calls, tagging each request\n // with a unique message Id and awaiting a response to that same Id.\n // The method will automatically transfer any ArrayBuffers in the\n // arguments to the worker. If you'd like to transfer a copy of a\n // buffer then you must clone it before passing to this function.\n async call(name: string, args: unknown): Promise {\n const { id, promise } = this.makeMessagePromiseId();\n // console.log(`SplatWorker.call(${name}):`, args);\n this.worker.postMessage(\n { name, args, id },\n { transfer: getTransferable(args) },\n );\n return promise;\n }\n}\n\nlet maxWorkers = 4;\n\nlet numWorkers = 0;\nconst freeWorkers: OldSplatWorker[] = [];\nconst workerQueue: ((worker: OldSplatWorker) => void)[] = [];\n\n// Set the maximum number of workers to allocate for the pool. (default: 4)\nexport function setWorkerPool(count = 4) {\n maxWorkers = count;\n}\n\n// Allocate a worker from the pool. If none are available and we are below the\n// maximum, create a new one. Otherwise, add the request to a queue and wait\n// for it to be fulfilled.\nexport async function allocWorker(): Promise {\n const worker = freeWorkers.shift();\n if (worker) {\n return worker;\n }\n\n if (numWorkers < maxWorkers) {\n const worker = new OldSplatWorker();\n numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n workerQueue.push(resolve);\n });\n}\n\n// Return a worker to the pool. Pass the worker to any pending waiter.\nexport function freeWorker(worker: OldSplatWorker) {\n if (numWorkers > maxWorkers) {\n // Worker no longer needed\n numWorkers -= 1;\n return;\n }\n\n const waiter = workerQueue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n freeWorkers.push(worker);\n}\n\n// Allocate a worker from the pool and invoke the callback with the worker.\n// When the callback completes, the worker will be returned to the pool.\nexport async function withWorker(\n callback: (worker: OldSplatWorker) => Promise,\n): Promise {\n const worker = await allocWorker();\n try {\n return await callback(worker);\n } finally {\n freeWorker(worker);\n }\n}\n","import { getTransferable } from \"./utils\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('spark_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform bool splatTexEnable;\nuniform sampler3D splatTexture;\nuniform mat2 splatTexMul;\nuniform vec2 splatTexAdd;\nuniform float splatTexNear;\nuniform float splatTexFar;\nuniform float splatTexMid;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z = dot(vSplatUv, vSplatUv);\n if (!splatTexEnable) {\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n } else {\n vec2 uv = splatTexMul * vSplatUv + splatTexAdd;\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n float clampedFar = max(splatTexFar, splatTexNear);\n float clampedDepth = clamp(depth, splatTexNear, clampedFar);\n float logDepth = log2(clampedDepth + 1.0);\n float logNear = log2(splatTexNear + 1.0);\n float logFar = log2(clampedFar + 1.0);\n\n float texZ;\n if (splatTexMid > 0.0) {\n float clampedMid = clamp(splatTexMid, splatTexNear, clampedFar);\n float logMid = log2(clampedMid + 1.0);\n texZ = (clampedDepth <= clampedMid) ?\n (0.5 * ((logDepth - logNear) / (logMid - logNear))) :\n (0.5 * ((logDepth - logMid) / (logFar - logMid)) + 0.5);\n } else {\n texZ = (logDepth - logNear) / (logFar - logNear);\n }\n\n vec4 modulate = texture(splatTexture, vec3(uv, 1.0 - texZ));\n rgba *= modulate;\n }\n\n rgba.a *= mix(1.0, exp(-0.5 * z), falloff);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n if (stochastic) {\n const bool STEADY = false;\n uint uTime = STEADY ? 0u : floatBitsToUint(time);\n uvec2 coord = uvec2(gl_FragCoord.xy);\n uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);\n state = state * 747796405u + 2891336453u;\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n hash = (hash >> 22u) ^ hash;\n float rand = float(hash) / 4294967296.0;\n if (rand < rgba.a) {\n fragColor = vec4(rgba.rgb, 1.0);\n } else {\n discard;\n }\n } else {\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n }\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool stochastic;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2DArray packedSplats;\nuniform vec4 rgbMinMaxLnScaleMinMax;\n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n\n ivec3 texCoord;\n if (stochastic) {\n texCoord = ivec3(\n uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)\n );\n } else {\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n }\n uvec4 packedData = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, rgbMinMaxLnScaleMinMax);\n\n if (rgba.a < minAlpha) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if(isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n // Keeping below because we may need it in the future\n // for skinning deformations.\n // mat3 W = transpose(mat3(viewMatrix));\n // mat3 T = W * J;\n // mat3 cov2D = transpose(T) * cov3D * T;\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, maxStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, maxStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n adjustedStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport oldSplatFragment from \"./shaders/oldSplatFragment.glsl\";\nimport oldSplatVertex from \"./shaders/oldSplatVertex.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n oldSplatVertex,\n oldSplatFragment,\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Whether to encode Gsplat with linear RGB (for environment mapping)\n * @default false\n */\n encodeLinear?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n encodeLinear: boolean;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.encodeLinear = options.encodeLinear ?? false;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n this.encodeLinear = options.encodeLinear ?? true;\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n if (spark.target) {\n spark.renderSize.set(spark.target.width, spark.target.height);\n } else {\n const renderSize = renderer.getDrawingBufferSize(spark.renderSize);\n if (renderer.xr.isPresenting) {\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n this.uniforms.encodeLinear.value = spark.encodeLinear;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n const props = renderer.properties.get(this.orderingTexture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"ordering texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n // data,\n result.ordering,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { pagedSplatTexCoord } from \"./dyno\";\nimport { decodeExtSplat, getTextureSize, unpackSplat } from \"./utils\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasmInitialized;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n const gl = renderer.getContext() as WebGL2RenderingContext;\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(\n gl.TEXTURE_2D,\n getGlTexture(renderer, indicesTexture),\n );\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\nexport class SplatPager {\n renderer: THREE.WebGLRenderer;\n\n extSplats: boolean;\n maxPages: number;\n maxSplats: number;\n pageSplats: number;\n\n maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n readyUploads: {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n extra: Record;\n }[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n sh1Texture: dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture: dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture: dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB: dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = 65536;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / this.pageSplats);\n this.maxSplats = this.maxPages * this.pageSplats;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n ),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n )\n : SplatPager.emptyExtTexture,\n });\n this.sh1Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh1Texture\n : SplatPager.emptySh1Texture,\n });\n this.sh2Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh2Texture\n : SplatPager.emptySh2Texture,\n });\n this.sh3Texture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? SplatPager.emptyExtSh3Texture\n : SplatPager.emptySh3Texture,\n });\n this.sh3TextureB = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyExtSh3BTexture,\n });\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3Texture: this.sh3Texture,\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.sh1Texture,\n sh2Texture: this.sh2Texture,\n sh3TextureA: this.sh3Texture,\n sh3TextureB: this.sh3TextureB,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n } else {\n if (this.sh1Texture.value !== SplatPager.emptyExtSh1Texture) {\n this.sh1Texture.value.dispose();\n this.sh1Texture.value.source.data = null;\n }\n if (this.sh2Texture.value !== SplatPager.emptyExtSh2Texture) {\n this.sh2Texture.value.dispose();\n this.sh2Texture.value.source.data = null;\n }\n if (this.sh3Texture.value !== SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value.dispose();\n this.sh3Texture.value.source.data = null;\n }\n if (this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value.dispose();\n this.sh3TextureB.value.source.data = null;\n }\n }\n }\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n if (!this.extSplats) {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptySh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 2),\n 256,\n 256,\n this.maxPages,\n THREE.RGIntegerFormat,\n THREE.UnsignedIntType,\n \"RG32UI\",\n );\n }\n } else {\n if (\n this.curSh >= 1 &&\n this.sh1Texture.value === SplatPager.emptyExtSh1Texture\n ) {\n this.sh1Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n if (\n this.curSh >= 2 &&\n this.sh2Texture.value ===\n (!this.extSplats\n ? SplatPager.emptySh2Texture\n : SplatPager.emptyExtSh2Texture)\n ) {\n this.sh2Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (!this.extSplats) {\n if (\n this.curSh >= 3 &&\n this.sh3Texture.value === SplatPager.emptySh3Texture\n ) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n } else {\n if (this.curSh >= 3) {\n if (this.sh3Texture.value === SplatPager.emptyExtSh3Texture) {\n this.sh3Texture.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n if (this.sh3TextureB.value === SplatPager.emptyExtSh3BTexture) {\n this.sh3TextureB.value = this.newUint32ArrayTexture(\n new Uint32Array(this.maxPages * 256 * 256 * 4),\n 256,\n 256,\n this.maxPages,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n }\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n private freePage(page: number) {\n this.pageFreelist.push(page);\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n extra: Record,\n extArray?: Uint32Array,\n ) {\n const pageBase = page * this.pageSplats;\n\n // const gl = this.renderer.getContext() as WebGL2RenderingContext;\n\n // this.renderer.state.activeTexture(gl.TEXTURE0);\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.packedTexture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // packedArray,\n // );\n\n const array = this.packedTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + packedArray.length)\n .set(packedArray);\n this.packedTexture.value.addLayerUpdate(page);\n this.packedTexture.value.needsUpdate = true;\n\n if (extArray) {\n const array = this.extTexture.value.image.data;\n array\n .subarray(pageBase * 4, pageBase * 4 + extArray.length)\n .set(extArray);\n this.extTexture.value.addLayerUpdate(page);\n this.extTexture.value.needsUpdate = true;\n }\n\n const numSh = this.extSplats\n ? extra.sh3a && extra.sh3b\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0\n : extra.sh3\n ? 3\n : extra.sh2\n ? 2\n : extra.sh1\n ? 1\n : 0;\n this.ensureShTextures(numSh);\n\n if (!this.extSplats) {\n if (this.sh1Texture.value !== SplatPager.emptySh1Texture && extra.sh1) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh1Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RG_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh1 as Uint32Array,\n // );\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 2, pageBase * 2 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh1Texture.value !== SplatPager.emptyExtSh1Texture &&\n extra.sh1\n ) {\n const sh1 = extra.sh1 as Uint32Array;\n const array = this.sh1Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh1.length).set(sh1);\n this.sh1Texture.value.addLayerUpdate(page);\n this.sh1Texture.value.needsUpdate = true;\n }\n }\n\n if (this.sh2Texture.value !== SplatPager.emptySh2Texture && extra.sh2) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh2Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh2 as Uint32Array,\n // );\n const sh2 = extra.sh2 as Uint32Array;\n const array = this.sh2Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh2.length).set(sh2);\n this.sh2Texture.value.addLayerUpdate(page);\n this.sh2Texture.value.needsUpdate = true;\n }\n\n if (!this.extSplats) {\n if (this.sh3Texture.value !== SplatPager.emptySh3Texture && extra.sh3) {\n // this.renderer.state.bindTexture(\n // gl.TEXTURE_2D_ARRAY,\n // this.getGlTexture(this.sh3Texture.value),\n // );\n // gl.texSubImage3D(\n // gl.TEXTURE_2D_ARRAY,\n // 0,\n // 0,\n // 0,\n // page,\n // 256,\n // 256,\n // 1,\n // gl.RGBA_INTEGER,\n // gl.UNSIGNED_INT,\n // extra.sh3 as Uint32Array,\n // );\n const sh3 = extra.sh3 as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3.length).set(sh3);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n } else {\n if (\n this.sh3Texture.value !== SplatPager.emptyExtSh3Texture &&\n extra.sh3a\n ) {\n const sh3a = extra.sh3a as Uint32Array;\n const array = this.sh3Texture.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3a.length).set(sh3a);\n this.sh3Texture.value.addLayerUpdate(page);\n this.sh3Texture.value.needsUpdate = true;\n }\n if (\n this.sh3TextureB.value !== SplatPager.emptyExtSh3BTexture &&\n extra.sh3b\n ) {\n const sh3b = extra.sh3b as Uint32Array;\n const array = this.sh3TextureB.value.image.data;\n array.subarray(pageBase * 4, pageBase * 4 + sh3b.length).set(sh3b);\n this.sh3TextureB.value.addLayerUpdate(page);\n this.sh3TextureB.value.needsUpdate = true;\n }\n }\n\n // this.renderer.state.bindTexture(gl.TEXTURE_2D_ARRAY, null);\n }\n\n private getGlTexture(texture: THREE.Texture): WebGLTexture {\n return getGlTexture(this.renderer, texture);\n }\n\n private newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: this.pageSplats,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (!this.extSplats) {\n const packedArray = (data as PackedResult).packedArray;\n this.newUploads.push({ page, numSplats, packedArray, extra });\n } else {\n const extArrays = (data as ExtResult).extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n this.newUploads.push({ page, numSplats, packedArray, extArray, extra });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, extra } = upload;\n this.uploadPage(page, packedArray, extra, extArray);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptySh1Texture = this.emptyUint32x2;\n static emptySh2Texture = this.emptyUint32x4;\n static emptySh3Texture = this.emptyUint32x4;\n static emptyExtSh1Texture = this.emptyUint32x4;\n static emptyExtSh2Texture = this.emptyUint32x4;\n static emptyExtSh3Texture = this.emptyUint32x4;\n static emptyExtSh3BTexture = this.emptyUint32x4;\n}\n\nfunction getGlTexture(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n): WebGLTexture {\n if (!renderer.properties.has(texture)) {\n throw new Error(\"texture not found\");\n }\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n return glTexture;\n}\n\nconst wasmInitialized = init_wasm();\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport init_wasm, {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SparkRenderer } from \"./SparkRenderer\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n\n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static staticInitialized = SplatMesh.staticInitialize();\n static isStaticInitialized = false;\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n static async staticInitialize() {\n await init_wasm();\n SplatMesh.isStaticInitialized = true;\n }\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !SplatMesh.isStaticInitialized ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n\nconst EMPTY_GEOMETRY = new THREE.BufferGeometry();\nconst EMPTY_MATERIAL = new THREE.ShaderMaterial();\n\n// Creates an empty mesh to hook into Three.js rendering.\n// This is used to detect if a SparkRenderer is present in the scene.\n// If not, one will be injected automatically.\nfunction createRendererDetectionMesh(): THREE.Mesh {\n const mesh = new THREE.Mesh(EMPTY_GEOMETRY, EMPTY_MATERIAL);\n mesh.frustumCulled = false;\n mesh.onBeforeRender = function (renderer, scene) {\n if (!scene.isScene) {\n // The SplatMesh is part of render call that doesn't have a Scene at its root\n // Don't auto-inject a renderer.\n this.removeFromParent();\n return;\n }\n\n // Check if the scene has a SparkRenderer instance\n let hasSparkRenderer = false;\n scene.traverse((c) => {\n if (c instanceof SparkRenderer || c instanceof OldSparkRenderer) {\n hasSparkRenderer = true;\n }\n });\n\n if (!hasSparkRenderer) {\n // No spark renderer present in the scene, inject one.\n scene.add(new SparkRenderer({ renderer }));\n }\n\n // Remove mesh to stop checking\n this.removeFromParent();\n };\n return mesh;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport async function unpackSplats({\n input,\n extraFiles,\n fileType,\n pathOrUrl,\n splatEncoding,\n}: {\n input: Uint8Array | ArrayBuffer;\n extraFiles?: Record;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n splatEncoding?: SplatEncoding;\n}): Promise<{\n packedArray: Uint32Array;\n numSplats: number;\n extra?: Record;\n}> {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let splatFileType = fileType;\n if (!fileType) {\n splatFileType = getSplatFileType(fileBytes);\n if (!splatFileType && pathOrUrl) {\n splatFileType = getSplatFileTypeFromPath(pathOrUrl);\n }\n }\n\n switch (splatFileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const maxSplats = getTextureSize(numSplats).maxSplats;\n const args = {\n fileBytes,\n packedArray: new Uint32Array(maxSplats * 4),\n splatEncoding,\n };\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"unpackPly\",\n args,\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPZ: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeSpz\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.SPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats } = (await worker.call(\n \"decodeAntiSplat\",\n {\n fileBytes,\n splatEncoding,\n },\n )) as { packedArray: Uint32Array; numSplats: number };\n return { packedArray, numSplats };\n });\n }\n case SplatFileType.KSPLAT: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodeKsplat\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGS: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogs\",\n { fileBytes, extraFiles, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n case SplatFileType.PCSOGSZIP: {\n return await withWorker(async (worker) => {\n const { packedArray, numSplats, extra } = (await worker.call(\n \"decodePcSogsZip\",\n { fileBytes, splatEncoding },\n )) as {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n };\n return { packedArray, numSplats, extra };\n });\n }\n default: {\n throw new Error(`Unknown splat file type: ${splatFileType}`);\n }\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport async function transcodeSpz(\n input: TranscodeSpzInput,\n): Promise<{ input: TranscodeSpzInput; fileBytes: Uint8Array }> {\n return await withWorker(async (worker) => {\n const result = (await worker.call(\"transcodeSpz\", input)) as {\n input: TranscodeSpzInput;\n fileBytes: Uint8Array;\n };\n return result;\n });\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import * as THREE from \"three\";\n\nimport type { OldSparkRenderer } from \"./OldSparkRenderer\";\nimport type { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { withWorker } from \"./OldSplatWorker\";\nimport { DynoPackedSplats } from \"./PackedSplats\";\nimport { Readback } from \"./Readback\";\nimport {\n type DynoBlock,\n DynoBool,\n DynoFloat,\n type DynoVal,\n DynoVec3,\n Gsplat,\n add,\n combine,\n defineGsplat,\n dyno,\n dynoBlock,\n dynoConst,\n floatBitsToUint,\n mul,\n packHalf2x16,\n readPackedSplat,\n uintToRgba8,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { FreeList, withinCoorientDist } from \"./utils\";\n\nexport type OldSparkViewpointOptions = {\n /**\n * Controls whether to auto-update its sort order whenever the SparkRenderer\n * updates the Gsplats. If you expect to render/display from this viewpoint\n * most frames, set this to true.\n * @default false\n */\n autoUpdate?: boolean;\n /**\n * Set a THREE.Camera for this viewpoint to follow.\n * @default undefined\n */\n camera?: THREE.Camera;\n /**\n * Set an explicit view-to-world transformation matrix for this viewpoint (equivalent\n * to camera.matrixWorld), overrides any camera setting.\n * @default undefined\n */\n viewToWorld?: THREE.Matrix4;\n /**\n * Configure viewpoint with an off-screen render target.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n };\n /**\n * Callback function that is called when the render target texture is updated.\n * Receives the texture as a parameter. Use this to update a viewport with\n * the latest viewpoint render each frame.\n * @default undefined\n */\n onTextureUpdated?: (texture: THREE.Texture) => void;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth sort metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Distance threshold for re-sorting splats. If the viewpoint moves more than\n * this distance, splats will be re-sorted.\n * @default 0.01 units\n */\n sortDistance?: number;\n /**\n * View direction dot product threshold for re-sorting splats. For\n * sortRadial: true we use 0.99 while sortRadial: false uses 0.999 because it is\n * more sensitive to view direction.\n * @default 0.99 if sortRadial else 0.999\n */\n sortCoorient?: boolean;\n /**\n * Constant added to Z-depth to bias values into the positive range for\n * sortRadial: false, but also used for culling Gsplats \"well behind\"\n * the viewpoint origin\n * @default 1.0\n */\n depthBias?: number;\n /**\n * Set this to true if rendering a 360 to disable \"behind the viewpoint\"\n * culling during sorting. This is set automatically when rendering 360 envMaps\n * using the SparkRenderer.renderEnvMap() utility function.\n * @default false\n */\n sort360?: boolean;\n /*\n * Set this to true to sort with float32 precision with two-pass sort.\n * @default true\n */\n sort32?: boolean;\n /*\n * Set this to true to enable sort-free stochastic splat rendering.\n * @default false\n */\n stochastic?: boolean;\n};\n\n// A SparkViewpoint is created from and tied to a SparkRenderer, and represents\n// an independent viewpoint of all the scene Gsplats and their sort order. Making\n// these viewpoints explicit allows us to have multiple, simultaneous viewpoint\n// renders, for example for camera preview panes or overhead map views.\n//\n// When creating a SparkRenderer it automatically creates a default viewpoint\n// .defaultView that is used in the normal render loop when drawing to the canvas,\n// and is automatically updated whenever the camera moves. Additional viewpoints\n// can be created and configured separately.\n\nexport class OldSparkViewpoint {\n spark: OldSparkRenderer;\n autoUpdate: boolean;\n camera?: THREE.Camera;\n viewToWorld: THREE.Matrix4;\n lastTime: number | null = null;\n\n target?: THREE.WebGLRenderTarget;\n private back?: THREE.WebGLRenderTarget;\n onTextureUpdated?: (texture: THREE.Texture) => void;\n encodeLinear = false;\n superXY = 1;\n private superPixels?: Uint8Array;\n private pixels?: Uint8Array;\n\n sortRadial: boolean;\n sortDistance?: number;\n sortCoorient?: boolean;\n depthBias?: number;\n sort360?: boolean;\n sort32?: boolean;\n stochastic: boolean;\n\n display: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n geometry: OldSplatGeometry;\n } | null = null;\n\n private sorting: { viewToWorld: THREE.Matrix4 } | null = null;\n private pending: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed: boolean;\n } | null = null;\n private sortingCheck = false;\n\n private readback16: Uint16Array = new Uint16Array(0);\n private readback32: Uint32Array = new Uint32Array(0);\n private orderingFreelist: FreeList;\n\n constructor(options: OldSparkViewpointOptions & { spark: OldSparkRenderer }) {\n this.spark = options.spark;\n this.camera = options.camera;\n this.viewToWorld = options.viewToWorld ?? new THREE.Matrix4();\n\n if (options.target) {\n const { width, height, doubleBuffer } = options.target;\n const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1));\n this.superXY = superXY;\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n\n this.target = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n if (doubleBuffer) {\n this.back = new THREE.WebGLRenderTarget(\n width * superXY,\n height * superXY,\n {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n },\n );\n }\n this.encodeLinear = true;\n }\n this.onTextureUpdated = options.onTextureUpdated;\n\n this.sortRadial = options.sortRadial ?? true;\n this.sortDistance = options.sortDistance;\n this.sortCoorient = options.sortCoorient;\n this.depthBias = options.depthBias;\n this.sort360 = options.sort360;\n this.sort32 = options.sort32;\n this.stochastic = options.stochastic ?? false;\n\n this.orderingFreelist = new FreeList({\n allocate: (maxSplats) =>\n new Uint32Array(maxSplats) as Uint32Array,\n valid: (ordering, maxSplats) => ordering.length === maxSplats,\n });\n\n this.autoUpdate = false;\n this.setAutoUpdate(options.autoUpdate ?? false);\n }\n\n // Call this when you are done with the SparkViewpoint and want to\n // free up its resources (GPU targets, pixel buffers, etc.)\n dispose() {\n this.setAutoUpdate(false);\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.back) {\n this.back.dispose();\n this.back = undefined;\n }\n if (this.display) {\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.geometry.dispose();\n this.display = null;\n }\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n this.pending = null;\n }\n }\n\n // Use this function to change whether this viewpoint will auto-update\n // its sort order whenever the attached SparkRenderer updates the Gsplats.\n // Turn this on or off depending on whether you expect to do renders from\n // this viewpoint most frames.\n setAutoUpdate(autoUpdate: boolean) {\n if (!this.autoUpdate && autoUpdate) {\n this.spark.autoViewpoints.push(this);\n } else if (this.autoUpdate && !autoUpdate) {\n this.spark.autoViewpoints = this.spark.autoViewpoints.filter(\n (v) => v !== this,\n );\n }\n this.autoUpdate = autoUpdate;\n }\n\n // See below async prepareRenderPixels() for explanation of parameters.\n // Awaiting this method updates the Gsplats in the scene and performs a sort of the\n // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget()\n // call in the same tick.\n async prepare({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n if (viewToWorld) {\n this.viewToWorld = viewToWorld;\n } else {\n this.camera = camera ?? this.camera;\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n }\n while (update ?? true) {\n // Force an update, possibly with origin centered at this camera\n // to yield the best quality output.\n const originToWorld = forceOrigin\n ? this.viewToWorld\n : this.spark.matrixWorld;\n const updated = this.spark.updateInternal({ scene, originToWorld });\n if (updated) {\n break;\n }\n // A bit of a hack, but try again. We shouldn't be starved for long.\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n\n const accumulator = this.spark.active;\n // Hold reference to accumulator while sorting\n accumulator.refCount += 1;\n await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld });\n // Release accumulator reference\n this.spark.releaseAccumulator(accumulator);\n }\n\n // Render out the viewpoint to the view target RGBA buffer.\n // Swaps buffers if doubleBuffer: true was set.\n // Calls onTextureUpdated(texture) with the resulting texture.\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera?: THREE.Camera }) {\n const target = this.back ?? this.target;\n if (!target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n\n camera = camera ?? this.camera;\n if (!camera) {\n throw new Error(\"Must provide camera\");\n }\n if (camera instanceof THREE.PerspectiveCamera) {\n const newCam = new THREE.PerspectiveCamera().copy(camera, false);\n newCam.aspect = target.width / target.height;\n newCam.updateProjectionMatrix();\n camera = newCam;\n }\n this.viewToWorld = camera.matrixWorld.clone();\n\n const previousTarget = this.spark.renderer.getRenderTarget();\n try {\n this.spark.renderer.setRenderTarget(target);\n this.spark.prepareViewpoint(this);\n\n this.spark.renderer.render(scene, camera);\n } finally {\n this.spark.prepareViewpoint(this.spark.defaultView);\n this.spark.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.back] = [this.back, this.target];\n }\n this.onTextureUpdated?.(target.texture);\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). If superXY was set greater than 1 then\n // downsampling is performed in the target pixel array with simple averaging\n // to derive the returned pixel values. Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize SparkViewpoint with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n }\n await this.spark.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n this.superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return this.superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.pixels || this.pixels.length < subSize) {\n this.pixels = new Uint8Array(subSize);\n }\n\n const { superPixels, pixels } = this;\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * this.target.width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n pixels[pixelIndex] = r / super2;\n pixels[pixelIndex + 1] = g / super2;\n pixels[pixelIndex + 2] = b / super2;\n pixels[pixelIndex + 3] = a / super2;\n }\n }\n return pixels;\n }\n\n // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene\n // and any camera/viewToWorld viewpoint overrides. By default update is true,\n // which triggers its SparkRenderer to check and potentially update the Gsplats.\n // Setting update to false disables this and sorts the Gsplats as they are.\n // Setting forceOrigin (default: false) to true forces the view update to\n // recalculate the splats with this view origin, potentially altering any\n // view-dependent effects. If you expect view-dependent effects to play a role\n // in the rendering quality, enable this.\n //\n // Underneath, prepareRenderPixels() simply calls await this.prepare(...),\n // this.renderTarget(...), and finally returns the result this.readTarget(),\n // a Promise to a Uint8Array with RGBA values for all the pixels (potentially\n // downsampled if the superXY parameter was used). These steps can also be called\n // manually, for example if you need to alter the scene before and after\n // this.renderTarget(...) to hide UI elements from being rendered.\n async prepareRenderPixels({\n scene,\n camera,\n viewToWorld,\n update,\n forceOrigin,\n }: {\n scene: THREE.Scene;\n camera?: THREE.Camera;\n viewToWorld?: THREE.Matrix4;\n update?: boolean;\n forceOrigin?: boolean;\n }) {\n await this.prepare({ scene, camera, viewToWorld, update, forceOrigin });\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // This is called automatically by SparkRenderer, there is no need to call it!\n // The method cannot be private because then SparkRenderer would\n // not be able to call it.\n autoPoll({ accumulator }: { accumulator?: OldSplatAccumulator }) {\n if (this.camera) {\n this.camera.updateMatrixWorld();\n this.viewToWorld = this.camera.matrixWorld.clone();\n }\n\n let needsSort = false;\n let displayed = false;\n\n if (!this.display) {\n // Need to do first sort\n needsSort = true;\n } else if (accumulator) {\n needsSort = true;\n const { mappingVersion } = this.display.accumulator;\n if (accumulator.mappingVersion === mappingVersion) {\n // Splat mapping has not changed, so reuse the existing sorted\n // geometry to show updates faster. We will still fire off\n // a re-sort if necessary. First release old accumulator.\n accumulator.refCount += 1;\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n this.display.viewToWorld.copy(this.viewToWorld);\n displayed = true;\n\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n }\n\n const latestView = this.sorting?.viewToWorld ?? this.display?.viewToWorld;\n if (\n latestView &&\n !withinCoorientDist({\n matrix1: this.viewToWorld,\n matrix2: latestView,\n // By default update sort each 1 cm\n maxDistance: this.sortDistance ?? 0.01,\n // By default for radial sort, update for intermittent movement so that\n // we bring back splats culled by being behind the camera.\n // For depth sort, small rotations can change sort order a lot, so\n // update sort for even small rotations.\n minCoorient: (this.sortCoorient ?? this.sortRadial) ? 0.99 : 0.999,\n })\n ) {\n needsSort = true;\n }\n\n if (!needsSort) {\n // Stop here, no sort necessary\n return;\n }\n\n if (accumulator) {\n // Hold a reference to the accumulator for sorting\n accumulator.refCount += 1;\n }\n\n if (this.pending?.accumulator) {\n this.spark.releaseAccumulator(this.pending.accumulator);\n }\n this.pending = { accumulator, viewToWorld: this.viewToWorld, displayed };\n\n // Don't await this, just trigger the sort if necessary\n this.driveSort();\n }\n\n private async driveSort() {\n while (true) {\n if (this.sorting || !this.pending) {\n return; // Sort already in process or nothing to sort\n }\n\n const { viewToWorld, displayed } = this.pending;\n let accumulator = this.pending.accumulator;\n if (!accumulator) {\n // Hold a reference to the accumulator while sorting\n accumulator = this.display?.accumulator ?? this.spark.active;\n accumulator.refCount += 1;\n }\n this.pending = null;\n if (!accumulator) {\n throw new Error(\"No accumulator to sort\");\n }\n\n this.sorting = { viewToWorld };\n await this.sortUpdate({ accumulator, viewToWorld, displayed });\n this.sorting = null;\n\n // Release the reference to the accumulator\n this.spark.releaseAccumulator(accumulator);\n\n // Continue in loop with any queued sort\n }\n }\n\n private async sortUpdate({\n accumulator,\n viewToWorld,\n displayed = false,\n }: {\n accumulator?: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n displayed?: boolean;\n }) {\n if (this.sortingCheck) {\n throw new Error(\"Only one sort at a time\");\n }\n this.sortingCheck = true;\n\n accumulator = accumulator ?? this.spark.active;\n const { numSplats, maxSplats } = accumulator.splats;\n let activeSplats = 0;\n let ordering = this.orderingFreelist.alloc(maxSplats);\n\n if (this.stochastic) {\n activeSplats = numSplats;\n // Render all splats in order since the Z-buffer\n // will handle ordering.\n for (let i = 0; i < numSplats; ++i) {\n ordering[i] = i;\n }\n } else if (numSplats > 0) {\n const {\n reader,\n doubleSortReader,\n sort32Reader,\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n } = OldSparkViewpoint.makeSorter();\n const sort32 = this.sort32 ?? false;\n let readback: Uint16Array | Uint32Array;\n if (sort32) {\n this.readback32 = reader.ensureBuffer(maxSplats, this.readback32);\n readback = this.readback32;\n } else {\n const halfMaxSplats = Math.ceil(maxSplats / 2);\n this.readback16 = reader.ensureBuffer(halfMaxSplats, this.readback16);\n readback = this.readback16;\n }\n\n const worldToOrigin = accumulator.toWorld.clone().invert();\n const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin);\n\n dynoSortRadial.value = this.sort360 ? true : this.sortRadial;\n dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin);\n dynoDirection.value\n .set(0, 0, -1)\n .applyMatrix4(viewToOrigin)\n .sub(dynoOrigin.value)\n .normalize();\n dynoDepthBias.value = this.depthBias ?? 1.0;\n dynoSort360.value = this.sort360 ?? false;\n dynoSplats.packedSplats = accumulator.splats;\n\n const sortReader = sort32 ? sort32Reader : doubleSortReader;\n const count = sort32 ? numSplats : Math.ceil(numSplats / 2);\n await reader.renderReadback({\n renderer: this.spark.renderer,\n reader: sortReader,\n count,\n readback,\n });\n\n const result = (await withWorker(async (worker) => {\n const rpcName = sort32 ? \"sort32Splats\" : \"sortDoubleSplats\";\n return worker.call(rpcName, {\n maxSplats,\n numSplats,\n readback,\n ordering,\n });\n })) as {\n readback: Uint16Array | Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n if (sort32) {\n this.readback32 = result.readback as Uint32Array;\n } else {\n this.readback16 = result.readback as Uint16Array;\n }\n ordering = result.ordering;\n activeSplats = result.activeSplats;\n }\n\n this.updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed,\n });\n this.sortingCheck = false;\n }\n\n private updateDisplay({\n accumulator,\n viewToWorld,\n ordering,\n activeSplats,\n displayed = false,\n }: {\n accumulator: OldSplatAccumulator;\n viewToWorld: THREE.Matrix4;\n ordering: Uint32Array;\n activeSplats: number;\n displayed?: boolean;\n }) {\n if (!this.display) {\n // Hold a reference to the accumulator while part of display\n accumulator.refCount += 1;\n this.display = {\n accumulator,\n viewToWorld,\n geometry: new OldSplatGeometry(ordering, activeSplats),\n };\n } else {\n if (!displayed && accumulator !== this.display.accumulator) {\n // Hold a reference to the new accumulator being displayed\n accumulator.refCount += 1;\n // Release the reference to the previously displayed accumulator\n this.spark.releaseAccumulator(this.display.accumulator);\n this.display.accumulator = accumulator;\n }\n\n this.display.viewToWorld = viewToWorld;\n\n const oldOrdering = this.display.geometry.ordering;\n if (oldOrdering.length === ordering.length) {\n this.display.geometry.update(ordering, activeSplats);\n } else {\n this.display.geometry.dispose();\n // console.log(\"*** alloc SplatGeometry\", ordering.length);\n this.display.geometry = new OldSplatGeometry(ordering, activeSplats);\n }\n this.orderingFreelist.free(oldOrdering);\n }\n if (this.spark.viewpoint === this) {\n this.spark.prepareViewpoint(this);\n }\n }\n\n // If you need an empty THREE.Texture to use to initialize a uniform that is\n // updated via onTextureUpdated(texture), this static texture can be handy.\n static EMPTY_TEXTURE = new THREE.Texture();\n\n private static dynos: {\n dynoSortRadial: DynoBool;\n dynoOrigin: DynoVec3;\n dynoDirection: DynoVec3;\n dynoDepthBias: DynoFloat;\n dynoSort360: DynoBool;\n dynoSplats: DynoPackedSplats;\n reader: Readback;\n doubleSortReader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n sort32Reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n private static makeSorter() {\n if (!OldSparkViewpoint.dynos) {\n const dynoSortRadial = new DynoBool({ value: true });\n const dynoOrigin = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDirection = new DynoVec3({ value: new THREE.Vector3() });\n const dynoDepthBias = new DynoFloat({ value: 1.0 });\n const dynoSort360 = new DynoBool({ value: false });\n const dynoSplats = new DynoPackedSplats();\n\n const reader = new Readback();\n const doubleSortReader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n const index2 = mul(index, dynoConst(\"int\", 2));\n\n const gsplat0 = readPackedSplat(dynoSplats, index2);\n const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams });\n\n const gsplat1 = readPackedSplat(\n dynoSplats,\n add(index2, dynoConst(\"int\", 1)),\n );\n const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams });\n\n const combined = combine({\n vectorType: \"vec2\",\n x: metric0,\n y: metric1,\n });\n const rgba8 = uintToRgba8(packHalf2x16(combined));\n return { rgba8 };\n },\n );\n\n const sort32Reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"No index\");\n }\n const sortParams = {\n sortRadial: dynoSortRadial,\n sortOrigin: dynoOrigin,\n sortDirection: dynoDirection,\n sortDepthBias: dynoDepthBias,\n sort360: dynoSort360,\n };\n\n const gsplat = readPackedSplat(dynoSplats, index);\n const metric = computeSortMetric({ gsplat, ...sortParams });\n const rgba8 = uintToRgba8(floatBitsToUint(metric));\n return { rgba8 };\n },\n );\n\n OldSparkViewpoint.dynos = {\n dynoSortRadial,\n dynoOrigin,\n dynoDirection,\n dynoDepthBias,\n dynoSort360,\n dynoSplats,\n reader,\n doubleSortReader,\n sort32Reader,\n };\n }\n return OldSparkViewpoint.dynos;\n }\n}\n\nconst defineComputeSortMetric = unindent(`\n float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {\n if (!isGsplatActive(gsplat.flags)) {\n return INFINITY;\n }\n\n vec3 center = gsplat.center - sortOrigin;\n float biasedDepth = dot(center, sortDirection) + sortDepthBias;\n if (!sort360 && (biasedDepth <= 0.0)) {\n return INFINITY;\n }\n\n return sortRadial ? length(center) : biasedDepth;\n }\n`);\n\nfunction computeSortMetric({\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n}: {\n gsplat: DynoVal;\n sortRadial: DynoVal<\"bool\">;\n sortOrigin: DynoVal<\"vec3\">;\n sortDirection: DynoVal<\"vec3\">;\n sortDepthBias: DynoVal<\"float\">;\n sort360: DynoVal<\"bool\">;\n}) {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n sortRadial: \"bool\",\n sortOrigin: \"vec3\",\n sortDirection: \"vec3\",\n sortDepthBias: \"float\",\n sort360: \"bool\",\n },\n outTypes: { metric: \"float\" },\n globals: () => [defineGsplat, defineComputeSortMetric],\n inputs: {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n },\n statements: ({ inputs, outputs }) => {\n const {\n gsplat,\n sortRadial,\n sortOrigin,\n sortDirection,\n sortDepthBias,\n sort360,\n } = inputs;\n return unindentLines(`\n ${outputs.metric} = computeSort(${gsplat}, ${sortRadial}, ${sortOrigin}, ${sortDirection}, ${sortDepthBias}, ${sort360});\n `);\n },\n }).outputs.metric;\n}\n","import * as THREE from \"three\";\n\nimport { PackedSplats } from \"./PackedSplats\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport type { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\n\n// SplatAccumulator helps manage the generation of splats from multiple\n// SplatGenerators, keeping track of the splat mapping, coordinate system,\n// and reference count.\n\nexport class OldSplatAccumulator {\n splats = new PackedSplats();\n // The transform from Accumulator coordinate system to world coordinates.\n toWorld = new THREE.Matrix4();\n // An array of all Gsplat mappings that were used for generation\n mapping: GeneratorMapping[] = [];\n // Number of SparkViewpoints (or other) that reference this accumulator, used\n // to figure out when it can be recycled for use\n refCount = 0;\n\n // Incremented every time the splats are updated/generated.\n splatsVersion = -1;\n // Incremented every time the splat mapping/layout is updated.\n // Splat sort order can be reused between equivalent mapping versions.\n mappingVersion = -1;\n\n ensureGenerate(maxSplats: number) {\n if (this.splats.ensureGenerate(maxSplats)) {\n // If we had to resize our PackedSplats then clear all previous mappings\n this.mapping = [];\n }\n }\n\n // Generate all Gsplats from an array of generators\n generateSplats({\n renderer,\n modifier,\n generators,\n forceUpdate,\n originToWorld,\n }: {\n renderer: THREE.WebGLRenderer;\n modifier: SplatModifier;\n generators: GeneratorMapping[];\n forceUpdate?: boolean;\n originToWorld: THREE.Matrix4;\n }) {\n // Create a lookup from last SplatGenerator\n const mapping = this.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Run generators that are different from existing mapping\n let updated = 0;\n let numSplats = 0;\n for (const { node, generator, version, base, count } of generators) {\n const current = mapping.get(node);\n if (\n forceUpdate ||\n generator !== current?.generator ||\n version !== current?.version ||\n base !== current?.base ||\n count !== current?.count\n ) {\n // Something is different from before so we should generate these Gsplats\n if (generator && count > 0) {\n const modGenerator = modifier.apply(generator);\n try {\n this.splats.generate({\n generator: modGenerator,\n base,\n count,\n renderer,\n });\n } catch (error) {\n node.generator = undefined;\n node.generatorError = error;\n }\n updated += 1;\n }\n }\n numSplats = Math.max(numSplats, base + count);\n }\n\n this.splats.numSplats = numSplats;\n this.toWorld.copy(originToWorld);\n this.mapping = generators;\n return updated !== 0;\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n hasCorrespondence(other: OldSplatAccumulator) {\n if (this.mapping.length !== other.mapping.length) {\n return false;\n }\n return this.mapping.every(({ node, base, count }, i) => {\n const {\n node: otherNode,\n base: otherBase,\n count: otherCount,\n } = other.mapping[i];\n return node === otherNode && base === otherBase && count === otherCount;\n });\n }\n}\n","import * as THREE from \"three\";\n\nimport {\n OldSparkViewpoint,\n type OldSparkViewpointOptions,\n} from \"./OldSparkViewpoint\";\nimport { OldSplatAccumulator } from \"./OldSplatAccumulator\";\nimport { OldSplatGeometry } from \"./OldSplatGeometry\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { RgbaArray } from \"./RgbaArray\";\nimport type { GeneratorMapping } from \"./SplatAccumulator\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport { SplatGenerator, SplatModifier } from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n} from \"./defines\";\nimport {\n DynoVec3,\n DynoVec4,\n Gsplat,\n TPackedSplats,\n dynoBlock,\n readPackedSplat,\n transformGsplat,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport {\n averagePositions,\n averageQuaternions,\n cloneClock,\n withinCoorientDist,\n} from \"./utils\";\n\n// SparkRenderer aggregates splats from multiple generators into a single\n// accumulated collection per frame. In normal operation we only need a\n// maximum of 3 accumulators: One currently being viewed, one currently\n// being sorted, and one more for generating the next frame. Accumulators\n// must be \"released\" by each viewpoint using it, so in unusual cases\n// such as slow render-outs, we may want to allow more than 3 so the\n// pipeline can continue generating new frames, but we limit to a maximum\n// of 5 to avoid excessive memory usage.\nconst MAX_ACCUMULATORS = 5;\n\nexport type OldSparkRendererOptions = {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the SparkRenderer properties time and\n * deltaTime directly. (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection after\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this must be false in order to complete rendering as soon as possible.\n * @default false\n */\n preUpdate?: boolean;\n /**\n * Distance threshold for SparkRenderer movement triggering a Gsplat update at\n * the new origin.\n * @default 1.0\n */\n originDistance?: number;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(5)..Math.sqrt(8) produce good results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Configures the SparkViewpointOptions for the default SparkViewpoint\n * associated with this SparkRenderer. Notable option: sortRadial (sort by\n * radial distance or Z-depth)\n */\n view?: OldSparkViewpointOptions;\n /**\n * Override the default splat encoding ranges for the PackedSplats.\n * (default: undefined)\n */\n splatEncoding?: SplatEncoding;\n};\n\nexport class OldSparkRenderer extends THREE.Mesh {\n renderer: THREE.WebGLRenderer;\n premultipliedAlpha: boolean;\n material: THREE.ShaderMaterial;\n uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n needsUpdate: boolean;\n originDistance: number;\n maxStdDev: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n minAlpha: number;\n enable2DGS: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n splatEncoding: SplatEncoding;\n\n splatTexture: null | {\n enable?: boolean;\n texture?: THREE.Data3DTexture;\n multiply?: THREE.Matrix2;\n add?: THREE.Vector2;\n near?: number;\n far?: number;\n mid?: number;\n } = null;\n\n time?: number;\n deltaTime?: number;\n clock: THREE.Clock;\n\n // Latest Gsplat collection being displayed\n active: OldSplatAccumulator;\n // Free list of accumulators for reuse\n private freeAccumulators: OldSplatAccumulator[];\n // Total number of accumulators currently allocated\n private accumulatorCount: number;\n // Default SparkViewpoint used for rendering to the canvas\n defaultView: OldSparkViewpoint;\n // List of SparkViewpoints with autoUpdate enabled\n autoViewpoints: OldSparkViewpoint[] = [];\n\n // Dynos used to transform Gsplats to the accumulator coordinate system\n private rotateToAccumulator = new DynoVec4({ value: new THREE.Quaternion() });\n private translateToAccumulator = new DynoVec3({ value: new THREE.Vector3() });\n private modifier: SplatModifier;\n\n // Last rendered frame number so we know when we're rendering a new frame\n private lastFrame = -1;\n // Last update timestamp to compute deltaTime\n private lastUpdateTime: number | null = null;\n // List of cameras used for the current viewpoint (for WebXR)\n private defaultCameras: THREE.Matrix4[] = [];\n private lastStochastic: boolean | null = null;\n\n // Should be set to the defaultView, but can be temporarily changed to another\n // viewpoint using prepareViewpoint() for rendering from a different viewpoint.\n viewpoint: OldSparkViewpoint;\n\n // Holds data needed to perform a scheduled Gsplat update.\n private pendingUpdate = {\n scene: null as THREE.Scene | null,\n originToWorld: new THREE.Matrix4(),\n timeoutId: -1,\n };\n\n // Internal SparkViewpoint used for environment map rendering.\n private envViewpoint: OldSparkViewpoint | null = null;\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n camera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n static EMPTY_SPLAT_TEXTURE = new THREE.Data3DTexture();\n\n constructor(options: OldSparkRendererOptions) {\n const uniforms = OldSparkRenderer.makeUniforms();\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: shaders.oldSplatVertex,\n fragmentShader: shaders.oldSplatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: true,\n depthTest: true,\n depthWrite: false,\n side: THREE.DoubleSide,\n });\n\n super(EMPTY_GEOMETRY, material);\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n this.renderer = options.renderer;\n this.material = material;\n this.uniforms = uniforms;\n\n // Create a Gsplat modifier that takes the output of any SplatGenerator\n // and transforms them into the accumulator's coordinate system\n const modifier = dynoBlock(\n { gsplat: Gsplat },\n { gsplat: Gsplat },\n ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"gsplat not defined\");\n }\n gsplat = transformGsplat(gsplat, {\n rotate: this.rotateToAccumulator,\n translate: this.translateToAccumulator,\n });\n return { gsplat };\n },\n );\n this.modifier = new SplatModifier(modifier);\n\n this.premultipliedAlpha = premultipliedAlpha;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? false;\n this.needsUpdate = false;\n this.originDistance = options.originDistance ?? 1;\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.minPixelRadius = options.minPixelRadius ?? 0.0;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n this.splatEncoding = options.splatEncoding ?? { ...DEFAULT_SPLAT_ENCODING };\n\n this.active = new OldSplatAccumulator();\n this.active.refCount = 1;\n this.accumulatorCount = 1;\n this.freeAccumulators = [];\n // Start with the minimum of 2 total accumulators\n for (let count = 0; count < 1; ++count) {\n this.freeAccumulators.push(new OldSplatAccumulator());\n this.accumulatorCount += 1;\n }\n\n // Create a default SparkViewpoint that is used when we call render()\n // on the scene and has the sorted Gsplat collection from that viewpoint.\n this.defaultView = new OldSparkViewpoint({\n ...options.view,\n autoUpdate: true,\n spark: this,\n });\n this.viewpoint = this.defaultView;\n this.prepareViewpoint(this.viewpoint);\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n }\n\n static makeUniforms() {\n // Create uniforms used for Gsplat vertex and fragment shaders\n const uniforms = {\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // Total number of Gsplats in packedSplats to render\n numSplats: { value: 0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable stochastic splat rendering\n stochastic: { value: false },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Enable splat texture rendering\n splatTexEnable: { value: false },\n // Splat texture to render\n splatTexture: { type: \"t\", value: OldSparkRenderer.EMPTY_SPLAT_TEXTURE },\n // Splat texture UV transform (multiply)\n splatTexMul: { value: new THREE.Matrix2() },\n // Splat texture UV transform (add)\n splatTexAdd: { value: new THREE.Vector2() },\n // Splat texture near plane distance\n splatTexNear: { value: 0.1 },\n // Splat texture far plane distance\n splatTexFar: { value: 1000.0 },\n // Splat texture mid plane distance, or 0.0 to disable\n splatTexMid: { value: 0.0 },\n // Gsplat collection to render\n packedSplats: { type: \"t\", value: PackedSplats.getEmptyArray },\n // Splat encoding ranges\n rgbMinMaxLnScaleMinMax: { value: new THREE.Vector4() },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n private canAllocAccumulator(): boolean {\n // Returns true if can allocate an accumulator immediately\n return (\n this.freeAccumulators.length > 0 ||\n this.accumulatorCount < MAX_ACCUMULATORS\n );\n }\n\n private maybeAllocAccumulator(): OldSplatAccumulator | null {\n // Allocate an accumulator immediately if possible, else return null\n let accumulator = this.freeAccumulators.pop();\n if (accumulator === undefined) {\n if (this.accumulatorCount >= MAX_ACCUMULATORS) {\n return null;\n }\n accumulator = new OldSplatAccumulator();\n this.accumulatorCount += 1;\n }\n accumulator.refCount = 1;\n return accumulator;\n }\n\n releaseAccumulator(accumulator: OldSplatAccumulator) {\n // Decrement reference count and recycle if no longer in use\n accumulator.refCount -= 1;\n if (accumulator.refCount === 0) {\n this.freeAccumulators.push(accumulator);\n }\n }\n\n newViewpoint(options: OldSparkViewpointOptions) {\n // Create a new SparkViewpoint for this SparkRenderer.\n // Note that every SparkRenderer has an initial spark.defaultView: SparkViewpoint\n // from construction, which is used for the default canvas render loop.\n // Calling this method allows you to create additional viewpoints, which can be\n // updated automatically each frame (performing Gsplat sorting every time there\n // is an update), or updated on-demand for controlled rendering for video render\n // or similar applications.\n return new OldSparkViewpoint({ ...options, spark: this });\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n // throw new Error(\"onBeforeRender disabled in SparkRenderer\");\n\n // Called by Three.js before rendering this SparkRenderer.\n // At this point we can't modify the geometry or material, all these must\n // be set in the scene already before this is called. Update the uniforms\n // to render the Gsplats from the current active viewpoint.\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.viewpoint.lastTime ?? time);\n this.viewpoint.lastTime = time;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== this.lastFrame;\n this.lastFrame = frame;\n\n const viewpoint = this.viewpoint;\n if (viewpoint === this.defaultView) {\n // When rendering is triggered on the default viewpoint,\n // perform automatic updates.\n if (isNewFrame) {\n if (!renderer.xr.isPresenting) {\n // Non-WebXR mode, just a single camera\n this.defaultView.viewToWorld = camera.matrixWorld.clone();\n this.defaultCameras = [this.defaultView.viewToWorld];\n } else {\n // In WebXR mode we are called multiple times, once for each eye,\n // so use their average to compute the sort center.\n const cameras = renderer.xr.getCamera().cameras;\n this.defaultCameras = cameras.map((camera) => camera.matrixWorld);\n this.defaultView.viewToWorld =\n averageOriginToWorlds(this.defaultCameras) ?? new THREE.Matrix4();\n }\n }\n\n if (this.autoUpdate) {\n this.update({ scene, viewToWorld: this.defaultView.viewToWorld });\n }\n }\n\n // Update uniforms for rendering\n\n if (isNewFrame) {\n // Keep these uniforms the same for both eyes if in WebXR\n if (this.material.premultipliedAlpha !== this.premultipliedAlpha) {\n this.material.premultipliedAlpha = this.premultipliedAlpha;\n this.material.needsUpdate = true;\n }\n this.uniforms.time.value = time;\n this.uniforms.deltaTime.value = deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (viewpoint.display && viewpoint.stochastic) {\n (this.geometry as OldSplatGeometry).instanceCount =\n this.uniforms.numSplats.value;\n }\n }\n\n if (viewpoint.target) {\n // Rendering to a texture target, so its dimensions\n this.uniforms.renderSize.value.set(\n viewpoint.target.width,\n viewpoint.target.height,\n );\n } else {\n // Rendering to the canvas or WebXR\n const renderSize = renderer.getDrawingBufferSize(\n this.uniforms.renderSize.value,\n );\n if (renderSize.x === 1 && renderSize.y === 1) {\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n renderSize.x = baseLayer.framebufferWidth;\n renderSize.y = baseLayer.framebufferHeight;\n }\n }\n }\n\n // Update uniforms from instance properties\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n this.uniforms.encodeLinear.value = viewpoint.encodeLinear;\n this.uniforms.maxStdDev.value = this.maxStdDev;\n this.uniforms.minPixelRadius.value = this.minPixelRadius;\n this.uniforms.maxPixelRadius.value = this.maxPixelRadius;\n this.uniforms.minAlpha.value = this.minAlpha;\n this.uniforms.stochastic.value = viewpoint.stochastic;\n this.uniforms.enable2DGS.value = this.enable2DGS;\n this.uniforms.preBlurAmount.value = this.preBlurAmount;\n this.uniforms.blurAmount.value = this.blurAmount;\n this.uniforms.focalDistance.value = this.focalDistance;\n this.uniforms.apertureAngle.value = this.apertureAngle;\n this.uniforms.falloff.value = this.falloff;\n this.uniforms.clipXY.value = this.clipXY;\n this.uniforms.focalAdjustment.value = this.focalAdjustment;\n\n if (this.lastStochastic !== !viewpoint.stochastic) {\n this.lastStochastic = !viewpoint.stochastic;\n this.material.transparent = !viewpoint.stochastic;\n this.material.depthWrite = viewpoint.stochastic;\n this.material.needsUpdate = true;\n }\n\n if (this.splatTexture) {\n const { enable, texture, multiply, add, near, far, mid } =\n this.splatTexture;\n if (enable && texture) {\n this.uniforms.splatTexEnable.value = true;\n this.uniforms.splatTexture.value = texture;\n if (multiply) {\n this.uniforms.splatTexMul.value.fromArray(multiply.elements);\n } else {\n this.uniforms.splatTexMul.value.set(\n 0.5 / this.maxStdDev,\n 0,\n 0,\n 0.5 / this.maxStdDev,\n );\n }\n this.uniforms.splatTexAdd.value.set(add?.x ?? 0.5, add?.y ?? 0.5);\n this.uniforms.splatTexNear.value = near ?? this.uniforms.near.value;\n this.uniforms.splatTexFar.value = far ?? this.uniforms.far.value;\n this.uniforms.splatTexMid.value = mid ?? 0.0;\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n } else {\n this.uniforms.splatTexEnable.value = false;\n this.uniforms.splatTexture.value = OldSparkRenderer.EMPTY_SPLAT_TEXTURE;\n }\n\n // Calculate the transform from the accumulator to the current camera\n const accumToWorld =\n viewpoint.display?.accumulator.toWorld ?? new THREE.Matrix4();\n const worldToCamera = camera.matrixWorld.clone().invert();\n const originToCamera = accumToWorld.clone().premultiply(worldToCamera);\n originToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n }\n\n // Update the uniforms for the given viewpoint.\n // Note that the client expects to be able to call render() at any point\n // to update the canvas, so we must switch the viewpoint back to\n // defaultView when we're finished.\n prepareViewpoint(viewpoint?: OldSparkViewpoint) {\n this.viewpoint = viewpoint ?? this.viewpoint;\n\n if (this.viewpoint.display) {\n const { accumulator, geometry } = this.viewpoint.display;\n this.uniforms.numSplats.value = accumulator.splats.numSplats;\n this.uniforms.packedSplats.value = accumulator.splats.getTexture();\n this.uniforms.rgbMinMaxLnScaleMinMax.value.set(\n accumulator.splats.splatEncoding?.rgbMin ?? 0.0,\n accumulator.splats.splatEncoding?.rgbMax ?? 1.0,\n accumulator.splats.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n accumulator.splats.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n this.geometry = geometry;\n this.material.transparent = !this.viewpoint.stochastic;\n this.material.depthWrite = this.viewpoint.stochastic;\n this.material.needsUpdate = true;\n } else {\n // No Gsplats to display for this viewpoint yet\n this.uniforms.numSplats.value = 0;\n this.uniforms.packedSplats.value = PackedSplats.getEmptyArray;\n this.geometry = EMPTY_GEOMETRY;\n }\n }\n\n // If spark.autoUpdate is false then you must manually call\n // spark.update({ scene }) to have the scene Gsplats be re-generated.\n update({\n scene,\n viewToWorld,\n }: { scene: THREE.Scene; viewToWorld?: THREE.Matrix4 }) {\n // Compute the transform for the SparkRenderer to use as origin\n // for Gsplat generation and accumulation.\n const originToWorld = this.matrixWorld;\n\n // Either do the update now, or in the next \"tick\" depending on preUpdate\n if (this.preUpdate) {\n this.updateInternal({\n scene,\n originToWorld: originToWorld.clone(),\n viewToWorld,\n });\n } else {\n // Pass the update parameters to be performed on the next tick\n this.pendingUpdate.scene = scene;\n this.pendingUpdate.originToWorld.copy(originToWorld);\n\n // Schedule a timeout if there isn't one already\n if (this.pendingUpdate.timeoutId === -1) {\n this.pendingUpdate.timeoutId = setTimeout(() => {\n const { scene, originToWorld } = this.pendingUpdate;\n this.pendingUpdate.scene = null;\n this.pendingUpdate.timeoutId = -1;\n const updated = this.updateInternal({\n scene: scene as THREE.Scene,\n originToWorld,\n viewToWorld,\n });\n\n if (updated) {\n // Flush to encourage eager execution\n const gl = this.renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n }, 1);\n }\n }\n }\n\n updateInternal({\n scene,\n originToWorld,\n viewToWorld,\n }: {\n scene: THREE.Scene;\n originToWorld?: THREE.Matrix4;\n viewToWorld?: THREE.Matrix4;\n }): boolean {\n if (!this.canAllocAccumulator()) {\n // We don't have any available accumulators because of sorting\n // back pressure, so don't update this time but try again next time.\n // Signal update not attempted.\n return false;\n }\n\n // Figure out the frame of the SparkRenderer and current view\n if (!originToWorld) {\n originToWorld = this.active.toWorld;\n }\n viewToWorld = viewToWorld ?? originToWorld.clone();\n\n const time = this.time ?? this.clock.getElapsedTime();\n const deltaTime = time - (this.lastUpdateTime ?? time);\n this.lastUpdateTime = time;\n\n // Create a lookup from last active SplatGenerator to Gsplat mapping record\n const activeMapping = this.active.mapping.reduce((map, record) => {\n map.set(record.node, record);\n return map;\n }, new Map());\n\n // Traverse visible scene to find all SplatGenerators and global SplatEdits\n const { generators, visibleGenerators, globalEdits } =\n this.compileScene(scene);\n\n // Let all SplatGenerators run their frameUpdate() method\n for (const object of generators) {\n object.frameUpdate?.({\n renderer: this.renderer,\n object,\n time,\n deltaTime,\n viewToWorld,\n globalEdits,\n });\n }\n\n const visibleGenHash = new Set(visibleGenerators.map((g) => g.uuid));\n\n // Make sure we have new version numbers for any objects with either\n // generator or numSplats that have changed since the last frame.\n for (const object of generators) {\n const current = activeMapping.get(object);\n const isVisible = object.generator && visibleGenHash.has(object.uuid);\n const numSplats = isVisible ? object.numSplats : 0;\n if (\n this.needsUpdate ||\n object.generator !== current?.generator ||\n numSplats !== current?.count\n ) {\n object.updateVersion();\n }\n }\n\n // Check if the origin is within the maximum allowed distance before\n // we trigger an update.\n const originUpdate = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: this.active.toWorld,\n maxDistance: this.originDistance,\n });\n\n // Check if we need any update at all\n const needsUpdate =\n this.needsUpdate ||\n originUpdate ||\n generators.length !== activeMapping.size ||\n generators.some((g) => g.version !== activeMapping.get(g)?.version);\n this.needsUpdate = false;\n\n let accumulator: OldSplatAccumulator | null = null;\n if (needsUpdate) {\n // Need to update, so allocate an accumulator\n accumulator = this.maybeAllocAccumulator();\n if (!accumulator) {\n // This should never happen since we checked canAllocAccumulator() above\n throw new Error(\"Unreachable\");\n }\n\n // Compute whether our view frame has changed enough to warrant\n // doing a Gsplat sort. Check both distance epsilon and\n // minimum co-orientation (dot product of quaternions)\n const originChanged = !withinCoorientDist({\n matrix1: originToWorld,\n matrix2: accumulator.toWorld,\n maxDistance: 0.00001,\n minCoorient: 0.99999,\n });\n\n // Compute an ordering of the generators with the rough goal\n // of keeping unchanging generators near the front to minimize\n // the number of Gsplats that need to be regenerated.\n const sorted = visibleGenerators\n .map((g, gIndex): [number, number, SplatGenerator] => {\n const lastGen = activeMapping.get(g);\n // If no previous generator, sort by absolute version, which will\n // tend to push frequently updated generators toward the end\n return !lastGen\n ? [Number.POSITIVE_INFINITY, g.version, g]\n : // Sort by version deltas then by previous ordering in the mapping,\n // attempting to keep unchanging generators near the front\n // to improve our chances of avoiding a re-generation.\n [g.version - lastGen.version, lastGen.base, g];\n })\n .sort((a, b) => {\n // Sort by first then second element of the tuple\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return a[1] - b[1];\n });\n const genOrder = sorted.map(([_version, _seq, g]) => g);\n\n // Compute sequential layout of generated splats\n const splatCounts = genOrder.map((g) => g.numSplats);\n const { maxSplats, mapping } =\n accumulator.splats.generateMapping(splatCounts);\n const newGenerators = genOrder.map((node, gIndex) => {\n const { base, count } = mapping[gIndex];\n return {\n node,\n generator: node.generator,\n version: node.version,\n base,\n count,\n };\n });\n\n // Compute worldToAccumulator origin transform (no scale)\n originToWorld\n .clone()\n .invert()\n .decompose(\n this.translateToAccumulator.value,\n this.rotateToAccumulator.value,\n new THREE.Vector3(),\n );\n\n // Generate the Gsplats according to the mapping that need updating\n accumulator.ensureGenerate(maxSplats);\n accumulator.splats.splatEncoding = { ...this.splatEncoding };\n const generated = accumulator.generateSplats({\n renderer: this.renderer,\n modifier: this.modifier,\n generators: newGenerators,\n forceUpdate: originChanged,\n originToWorld,\n });\n\n // Update splat version number\n accumulator.splatsVersion = this.active.splatsVersion + 1;\n // Increment the mapping version if the mapping isn't identical to before\n const hasCorrespondence = accumulator.hasCorrespondence(this.active);\n accumulator.mappingVersion =\n this.active.mappingVersion + (hasCorrespondence ? 0 : 1);\n\n // Release the old accumulator and make the new one active\n this.releaseAccumulator(this.active);\n this.active = accumulator;\n this.prepareViewpoint();\n }\n\n // Let the system breath before potentially triggering sorts\n setTimeout(() => {\n // Notify all auto-updating viewpoints that we updated the Gsplats\n for (const view of this.autoViewpoints) {\n view.autoPoll({ accumulator: accumulator ?? undefined });\n }\n }, 1);\n\n // Signal update was performed\n return true;\n }\n\n private compileScene(scene: THREE.Scene): {\n generators: SplatGenerator[];\n visibleGenerators: SplatGenerator[];\n globalEdits: SplatEdit[];\n } {\n // Take a snapshot of the SplatGenerators and SplatEdits in the scene\n // to be used to run an update.\n const generators: SplatGenerator[] = [];\n // Collect all SplatGenerators, even if not visible, because we want to\n // be able to call their update functions every frame.\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n generators.push(node);\n }\n });\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n visibleGenerators.push(node);\n }\n });\n\n const globalEdits = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEdits.add(node);\n }\n }\n });\n return {\n generators,\n visibleGenerators,\n globalEdits: Array.from(globalEdits),\n };\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n renderer,\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = false,\n }: {\n renderer?: THREE.WebGLRenderer;\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects?: THREE.Object3D[];\n update?: boolean;\n }): Promise {\n if (!this.envViewpoint) {\n this.envViewpoint = this.newViewpoint({ sort360: true });\n }\n if (\n !OldSparkRenderer.cubeRender ||\n OldSparkRenderer.cubeRender.target.width !== size ||\n OldSparkRenderer.cubeRender.near !== near ||\n OldSparkRenderer.cubeRender.far !== far\n ) {\n if (OldSparkRenderer.cubeRender) {\n OldSparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n generateMipmaps: true,\n minFilter: THREE.LinearMipMapLinearFilter,\n });\n const camera = new THREE.CubeCamera(near, far, target);\n OldSparkRenderer.cubeRender = { target, camera, near, far };\n }\n\n if (!OldSparkRenderer.pmrem) {\n OldSparkRenderer.pmrem = new THREE.PMREMGenerator(\n renderer ?? this.renderer,\n );\n }\n\n // Prepare the viewpoint, sorting Gsplats for this view origin.\n const viewToWorld = new THREE.Matrix4().setPosition(worldCenter);\n await this.envViewpoint?.prepare({ scene, viewToWorld, update });\n\n const { target, camera } = OldSparkRenderer.cubeRender;\n camera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n // Update the CubeCamera, which performs 6 cube face renders\n this.prepareViewpoint(this.envViewpoint);\n camera.update(renderer ?? this.renderer, scene);\n\n // Restore viewpoint to default and object visibility\n this.prepareViewpoint(this.defaultView);\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n // Pre-filter the cube map using THREE.PMREMGenerator\n return OldSparkRenderer.pmrem?.fromCubemap(target.texture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n // Utility function that helps extract the Gsplat RGBA values from a\n // SplatGenerator, including the result of any real-time RGBA SDF edits applied\n // to a SplatMesh. This effectively \"bakes\" any computed RGBA values, which can\n // now be used as a pipeline input via SplatMesh.splatRgba to inject these\n // baked values into the Gsplat data.\n getRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): RgbaArray {\n const mapping = this.active.mapping.find(({ node }) => node === generator);\n if (!mapping) {\n throw new Error(\"Generator not found\");\n }\n\n rgba = rgba ?? new RgbaArray();\n rgba.fromPackedSplats({\n packedSplats: this.active.splats,\n base: mapping.base,\n count: mapping.count,\n renderer: this.renderer,\n });\n return rgba;\n }\n\n // Utility function that builds on getRgba({ generator }) and additionally\n // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA\n // in that byte order.\n async readRgba({\n generator,\n rgba,\n }: { generator: SplatGenerator; rgba?: RgbaArray }): Promise {\n rgba = this.getRgba({ generator, rgba });\n return rgba.read();\n }\n}\n\nconst EMPTY_GEOMETRY = new OldSplatGeometry(new Uint32Array(1), 0);\n\nconst reorderSplats = dynoBlock(\n { packedSplats: TPackedSplats, index: \"int\" },\n { gsplat: Gsplat },\n ({ packedSplats, index }) => {\n if (!packedSplats || !index) {\n throw new Error(\"Invalid input\");\n }\n const gsplat = readPackedSplat(packedSplats, index);\n return { gsplat };\n },\n);\n\nfunction averageOriginToWorlds(\n originToWorlds: THREE.Matrix4[],\n): THREE.Matrix4 | null {\n if (originToWorlds.length === 0) {\n return null;\n }\n\n const position = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n\n const positions: THREE.Vector3[] = [];\n const quaternions: THREE.Quaternion[] = [];\n for (const matrix of originToWorlds) {\n matrix.decompose(position, quaternion, scale);\n positions.push(position);\n quaternions.push(quaternion);\n }\n\n return new THREE.Matrix4().compose(\n averagePositions(positions),\n averageQuaternions(quaternions),\n new THREE.Vector3(1, 1, 1),\n );\n}\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n rgba.a = min(1.0, a) * exp(exponent);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["OldSplatGeometry","THREE","ordering","activeSplats","QUAD_VERTICES","QUAD_INDICES","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","b","i","r","j","_a","fl","revfl","_b","fd","rev","x","hMap","cd","mb","s","l","le","co","rvb","sv","r_1","v","m","flt","fdt","flrm","fdrm","max","a","bits","d","p","o","bits16","shft","slc","e","ec","err","ind","msg","nt","inflt","dat","st","buf","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","type","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","c","n","lt","dt","t","lms","dms","lpos","sym","add","dsym","end","shift","dend","et","b2","b4","b8","gzs","flg","zs","Inflate","opts","cb","bts","chunk","inflateSync","data","Gunzip","td","tds","dutf8","strFromU8","latin1","slzh","zh","z","fnl","fn","es","bs","z64e","sc","su","off","unzipSync","files","ze","fltr","c_2","no","LN_SCALE_MIN","LN_SCALE_MAX","SCALE_MIN","SCALE_MAX","LN_SCALE_ZERO","SCALE_ZERO","SPLAT_TEX_WIDTH_BITS","SPLAT_TEX_HEIGHT_BITS","SPLAT_TEX_DEPTH_BITS","SPLAT_TEX_LAYER_BITS","SPLAT_TEX_WIDTH","SPLAT_TEX_HEIGHT","SPLAT_TEX_DEPTH","SPLAT_TEX_MIN_HEIGHT","SPLAT_TEX_WIDTH_MASK","SPLAT_TEX_HEIGHT_MASK","SPLAT_TEX_DEPTH_MASK","WASM_SPLAT_SORT","USE_COMPILED_PARSER_FUNCTION","SplatFileType","DEFAULT_SPLAT_ENCODING","isBoolType","isScalarType","isIntType","isUintType","isFloatType","isMatFloatType","isAllFloatType","isVector2Type","isVector3Type","isVector4Type","isVectorType","isMat2","isMat3","isMat4","vectorElementType","vectorDim","sameSizeVec","sameSizeUvec","sameSizeIvec","typeLiteral","numberAsInt","value","numberAsUint","numberAsFloat","valType","val","DynoValue","DynoOutput","dyno","key","DynoLiteral","literal","dynoLiteral","DynoConst","arg","_","dynoConst","literalZero","typeString","literalOne","literalNegOne","DEFAULT_INDENT","Compilation","indent","Dyno","inTypes","outTypes","inputs","update","globals","statements","generate","outputs","compile","result","declares","name","uniforms","global","dynoDeclare","line","DynoBlock","construct","args","blockInputs","blockOutputs","options","returned","nodeOuts","visit","node","outKey","outName","outs","input","root","steps","source","newSteps","literalOutputs","step","index","dynoBlock","count","typeStr","unindentLines","seenNonEmpty","lines","trimmedLine","regex","unindent","UnaryOp","outTypeFunc","outType","BinaryOp","TrinaryOp","threeRevision","threeMrtArray","f32buffer","u32buffer","supportsFloat16Array","f16buffer","u16buffer","normalize","vec","norm","acc","floatBitsToUint","f","uintBitsToFloat","u","toHalf","toHalfNative","toHalfJS","fromHalf","fromHalfNative","fromHalfJS","sign","exp","frac","halfSign","newExp","subFrac","halfFrac","h","f32bits","mant","newFrac","floatToUint8","floatToSint8","Uint8ToFloat","Sint8ToFloat","DataCache","asyncFetch","dispose","maxItems","item","immediate","pending","removed","mapObject","obj","entries","mapFilterObject","getTransferable","ctx","buffers","seen","traverse","newArray","initFunction","FreeList","allocate","valid","encodeExtSplat","extArrays","y","scaleX","scaleY","scaleZ","quatX","quatY","quatZ","quatW","opacity","g","i4","extA","extB","encodeQuatOctXy1010R12","decodeExtSplat","packedFields","decodeQuatOctXy1010R12","setPackedSplat","packedSplats","encoding","rgbMin","rgbRange","uR","uG","uB","uA","uQuat","encodeQuatOctXy88R8","tempQuaternion","uQuatX","uQuatY","uQuatZ","lnScaleMin","lnScaleScale","uScaleX","uScaleY","uScaleZ","uCenterX","uCenterY","uCenterZ","setPackedSplatCenter","setPackedSplatScales","setPackedSplatQuat","setPackedSplatRgba","setPackedSplatRgb","setPackedSplatOpacity","packedCenter","packedScales","packedQuaternion","packedColor","unpackSplat","word0","word1","word2","word3","uScalesX","uScalesY","uScalesZ","decodeQuatOctXy88R8","getTextureSize","numSplats","width","height","depth","maxSplats","computeMaxSplats","isMobile","isAndroid","isOculus","isQuest2","isIos","isVisionPro","flipPixels","pixels","tempLine","topOffset","bottomOffset","pixelsToPngUrl","canvas","imageData","cloneClock","clock","newClock","omitUndefined","IDENT_VERTEX_SHADER","averagePositions","positions","sum","position","averageQuaternions","quaternions","coinciDist","matrix1","matrix2","origin1","origin2","direction1","direction2","distance","coincidence","withinDist","maxDistance","withinCoinciDist","minCoincidence","coorientDist","rotate1","rotate2","coorient","withinCoorientDist","minCoorient","epsilonSign","epsilon","encodeQuatXyz888","q","negQuat","iQuatX","iQuatY","iQuatZ","decodeQuatXyz888","encoded","out","dotSelf","tempNormalizedQuaternion","tempAxis","qnorm","theta","xyz_norm","axis","p_x","p_y","tmp","u_f","v_f","quantU","quantV","angleInt","f_x","f_y","f_z","halfTheta","w","encodeQuatEulerXyz888","qNorm","sinr_cosp","cosr_cosp","roll","sinp","pitch","siny_cosp","cosy_cosp","yaw","normRoll","normPitch","normYaw","rollQ","pitchQ","decodeQuatEulerXyz888","yawQ","cr","sr","cp","sp","cy","sy","qx","qy","qz","qw","qlen","qnx","qny","qnz","qnw","axisX","axisY","axisZ","axisLen","packSint8Bytes","b0","b1","b3","clampedB0","clampedB1","clampedB2","clampedB3","encodeSh1Rgb","sh1Array","sh1Rgb","sh1Scale","base","bitStart","bitEnd","wordStart","bitOffset","firstWord","secondWord","encodeSh2Rgb","sh2Array","sh2Rgb","sh2Scale","encodeSh3Rgb","sh3Array","sh3Rgb","sh3Scale","encodeExtRgb","ar","ag","ab","maxAbs","biasedBase","divisor","expSigns","decodeExtRgb","color","encodeExtSh1Rgb","k","k3","encodeExtSh12Rgb","k5","encodeExt3Rgb","sh3ArrayA","sh3ArrayB","decompressPartialGzip","fileBytes","numBytes","chunks","totalBytes","gunzip","allBytes","offset","CHUNK_SIZE","GunzipReader","chunkBytes","ds","decompressionStream","readerDone","outOffset","OldSplatWorker","BundledWorker","event","id","promise","resolve","reject","error","handler","maxWorkers","numWorkers","freeWorkers","workerQueue","allocWorker","worker","freeWorker","waiter","withWorker","callback","_SplatWorker","status","queue","messages","message","SplatWorker","NewSplatWorkerPool","workerPool","Gsplat","CovSplat","TPackedSplats","TExtSplats","TCovSplats","numPackedSplats","NumPackedSplats","readPackedSplat","ReadPackedSplat","readPackedSplatRange","ReadPackedSplatRange","numExtSplats","extSplats","NumExtSplats","readExtSplat","ReadExtSplat","numCovSplats","covsplats","NumCovSplats","readCovSplat","covSplats","ReadCovSplat","gsplatToCovSplat","gsplat","GsplatToCovSplat","splitGsplat","SplitGsplat","combineGsplat","flags","center","scales","quaternion","rgba","rgb","CombineGsplat","gsplatNormal","GsplatNormal","transformGsplat","scale","rotate","translate","recolor","TransformGsplat","splatTexCoord","SplatTexCoord","pagedSplatTexCoord","PagedSplatTexCoord","defineGsplat","defineCovSplat","definePackedSplats","defineReadPackedArray","defineExtSplats","defineReadExtArrays","defineReadCovArrays","covsplat","active","outGsplat","r2","defineGsplatNormal","splitCovSplat","SplitCovSplat","combineCovSplat","CombineCovSplat","outCovSplat","coord","outputPackedSplat","rgbMinMaxLnScaleMinMax","OutputPackedSplat","outputCovSplat","OutputCovSplat","outputExtendedSplat","OutputExtendedSplat","outputExtCovSplat","OutputExtCovSplat","outputSplatDepth","viewCenter","viewDir","sortRadial","OutputSplatDepth","outputCovSplatDepth","OutputCovSplatDepth","outputRgba8","rgba8","OutputRgba8","uniform","DynoUniform","dynoBool","DynoBool","dynoUint","DynoUint","dynoInt","DynoInt","dynoFloat","DynoFloat","dynoBvec2","DynoBvec2","dynoUvec2","DynoUvec2","dynoIvec2","DynoIvec2","dynoVec2","DynoVec2","dynoBvec3","DynoBvec3","dynoUvec3","DynoUvec3","dynoIvec3","DynoIvec3","dynoVec3","DynoVec3","dynoBvec4","DynoBvec4","dynoUvec4","DynoUvec4","dynoIvec4","DynoIvec4","dynoVec4","DynoVec4","dynoMat2","DynoMat2","dynoMat2x2","DynoMat2x2","dynoMat2x3","DynoMat2x3","dynoMat2x4","DynoMat2x4","dynoMat3","DynoMat3","dynoMat3x2","DynoMat3x2","dynoMat3x3","DynoMat3x3","dynoMat3x4","DynoMat3x4","dynoMat4","DynoMat4","dynoMat4x2","DynoMat4x2","dynoMat4x3","DynoMat4x3","dynoMat4x4","DynoMat4x4","dynoUsampler2D","DynoUsampler2D","dynoIsampler2D","DynoIsampler2D","dynoSampler2D","DynoSampler2D","dynoUsampler2DArray","DynoUsampler2DArray","dynoIsampler2DArray","DynoIsampler2DArray","dynoSampler2DArray","DynoSampler2DArray","dynoUsampler3D","DynoUsampler3D","dynoIsampler3D","DynoIsampler3D","dynoSampler3D","DynoSampler3D","dynoUsamplerCube","DynoUsamplerCube","dynoIsamplerCube","DynoIsamplerCube","dynoSamplerCube","DynoSamplerCube","dynoSampler2DShadow","DynoSampler2DShadow","dynoSampler2DArrayShadow","DynoSampler2DArrayShadow","dynoSamplerCubeShadow","DynoSamplerCubeShadow","allGlobals","DynoProgram","graph","template","consoleLog","getMaterial","updater","DynoProgramTemplate","programMaterial","program","material","addOutputType","operation","subOutputType","mulOutputType","divOutputType","imodOutputType","modOutputType","negOutputType","absOutputType","signOutputType","floorOutputType","ceilOutputType","truncOutputType","roundOutputType","fractOutputType","powOutputType","expOutputType","exp2OutputType","logOutputType","log2OutputType","sqrOutputType","sqrtOutputType","inversesqrtOutputType","minOutputType","maxOutputType","clampOutputType","_c","mixOutputType","stepOutputType","smoothstepOutputType","isNanOutputType","isInfOutputType","Add","sub","Sub","mul","Mul","div","Div","imod","IMod","mod","Mod","modf","Modf","neg","Neg","abs","Abs","Sign","floor","Floor","ceil","Ceil","trunc","Trunc","round","Round","fract","Fract","pow","Pow","Exp","exp2","Exp2","log","Log","log2","Log2","sqr","Sqr","sqrt","Sqrt","inversesqrt","InverseSqrt","min","Min","Max","clamp","Clamp","mix","Mix","edge","Step","smoothstep","edge0","edge1","Smoothstep","isNan","IsNan","isInf","IsInf","and","And","or","Or","xor","Xor","not","Not","shr","Shr","shl","Shl","lessThan","LessThan","lessThanEqual","LessThanEqual","greaterThan","GreaterThan","greaterThanEqual","GreaterThanEqual","equal","Equal","notEqual","NotEqual","any","Any","all","All","select","cond","Select","compXor","CompXor","aType","bType","compareOutputType","equalOutputType","notEqualOutputType","cType","operator","compXorOutputType","operands","bool","Bool","int","Int","uint","Uint","float","Float","bvec2","BVec2","bvec3","BVec3","bvec4","BVec4","ivec2","IVec2","ivec3","IVec3","ivec4","IVec4","uvec2","UVec2","uvec3","UVec3","uvec4","UVec4","vec2","Vec2","vec3","Vec3","vec4","Vec4","mat2","Mat2","mat3","Mat3","mat4","Mat4","floatBitsToInt","FloatBitsToInt","FloatBitsToUint","intBitsToFloat","IntBitsToFloat","UintBitsToFloat","packSnorm2x16","PackSnorm2x16","unpackSnorm2x16","UnpackSnorm2x16","packUnorm2x16","PackUnorm2x16","unpackUnorm2x16","UnpackUnorm2x16","packHalf2x16","PackHalf2x16","unpackHalf2x16","UnpackHalf2x16","uintToRgba8","UintToRgba8","SimpleCast","length","Length","Distance","dot","Dot","cross","Cross","Normalize","faceforward","FaceForward","reflectVec","incident","normal","ReflectVec","refractVec","eta","RefractVec","split","vector","Split","combine","vectorType","Combine","projectH","ProjectH","extendVec","ExtendVec","swizzle","Swizzle","compMult","CompMult","outer","Outer","transpose","Transpose","determinant","Determinant","inverse","Inverse","projectHOutputType","extendVecOutputType","outerOutputType","transposeOutputType","splitOutTypes","vType","elType","dim","swizzleOutputType","remapIndex","from","to","DynoRemapIndex","pcgMix","PcgMix","pcgNext","state","PcgNext","pcgHash","PcgHash","hash","Hash","hash2","Hash2","hash3","Hash3","hash4","Hash4","hashFloat","HashFloat","hashVec2","HashVec2","hashVec3","HashVec3","hashVec4","HashVec4","normalizedDepth","zNear","zFar","NormalizedDepth","debugColorHue","DebugColorHue","toUint","tempType","toUvec","word","words","transformPos","TransformPosition","transformDir","dir","TransformDir","transformQuat","TransformQuaternion","dynoIf","dynoSwitch","dynoFor","comment","arrayIndex","arrayLength","textureSize","texture","lod","TextureSize","bias","Texture","texelFetch","TexelFetch","textureType","textureSizeType","textureCoordType","textureReturnType","radians","degrees","Radians","Degrees","sin","Sin","cos","Cos","tan","Tan","asin","Asin","acos","Acos","atan","Atan","atan2","Atan2","sinh","Sinh","cosh","Cosh","tanh","Tanh","asinh","Asinh","acosh","Acosh","atanh","Atanh","_ExtSplats","DynoExtSplats","url","fileType","fileName","stream","streamLength","nonLod","lodAbove","loader","SplatLoader","maybePromise","maxSh","viewOrigin","splatCenter","sh1Texture","sh2Texture","sh3TextureA","sh3TextureB","evaluateExtSH","sh1","newSh1","newUint32ArrayTexture","sh2","newSh2","sh3a","newSh3","sh3b","newSh3b","targetSize","currentSize","newArray0","newArray1","unpacked","indices","pageColoring","newSplats","splat","hue","rgbaArray","quality","lodBase","extra","decoded","lodSplats","emptyArray","ExtSplats","defineEvaluateExtSH1","defineEvaluateExtSH12","defineEvaluateExtSH3","numSh","format","internalFormat","decode_rad_header","bytes","ret","wasm","takeFromExternrefTable0","get_raycast_buffer","get_raycast_buffer2","raycast_ext_buffers","origin_x","origin_y","origin_z","dir_x","dir_y","dir_z","min_opacity","near","far","raycast_packed_buffer","ln_scale_min","ln_scale_max","lod_opacity","__wbg_get_imports","arg0","arg1","getStringFromWasm0","deferred0_0","deferred0_1","arg2","getArrayU8FromWasm0","getArrayU32FromWasm0","handleError","getArrayF32FromWasm0","ptr1","passStringToWasm0","len1","WASM_VECTOR_LEN","getDataViewMemory0","table","addToExternrefTable0","idx","ptr","len","getFloat32ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","malloc","realloc","cachedTextEncoder","mem","code","view","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","__wbg_init","module_or_path","computeUvec4_default","computeUvec4_Vec4_default","computeUvec4x2_Vec4_default","computeVec4_default","oldSplatFragment_default","oldSplatVertex_default","splatDefines_default","splatFragment_default","splatVertex_default","shaders","getShaders","splatDefines","oldSplatVertex","oldSplatFragment","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","_Readback","renderer","buffer","newBuffer","ctor","capacity","reader","layerSize","baseIndex","layer","layerBase","layerYEnd","readback","roundedCount","readbackUint8","promises","readbackSize","subReadback","renderState","FullScreenQuad","Readback","_RgbaArray","TRgbaArray","defineRgbaArray","splatCount","dynoSplats","dynoBase","dynoCount","DynoPackedSplats","RgbaArray","readRgbaArray","SplatEditSdfType","sdfTypeToNumber","SplatEditRgbaBlendMode","rgbaBlendModeToNumber","mode","SplatEditSdf","invert","displace","radius","_SplatEdit","rgbaBlendMode","sdfSmooth","softEdge","sdfs","sdf","SplatEdit","SplatEdits","maxSdfs","maxEdits","SdfArray","defineSdfArray","defineEdit","dynoUpdated","updated","tempFloat32","editIndex","sdfFirst","sdfCount","sdfIndex","sdfType","sizes","values","nValues","vBase","edits","total","edit","sdfUpdated","applyGsplatRgbaDisplaceEdits","applyCovSplatRgbaDisplaceEdits","sdfArray","numEdits","rgbaDisplaceEdits","SplatModifier","modifier","generator","modified","SplatTransformer","transform","newScale","object","CovSplatTransformer","rebased","basis","SplatGenerator","covGenerator","constructed","_SplatAccumulator","splatCounts","mapping","rounded","target2","target3","theGenerator","_outputs","roots","output","centerSubView","halfAlpha","outputDepth","nextBase","layerYStart","scene","time","camera","renderSize","previous","lodInstances","allGenerators","globalEditsSet","ancestor","SplatMesh","globalEdits","visibleGenerators","baseCounts","previousMappings","mappings","previousNode","version","mappingVersion","splatsUpdated","mappingUpdated","textures","array","otherMapping","other","SplatAccumulator","SplatGeometry","_SparkRenderer","premultipliedAlpha","geometry","defaultPages","accumulatorOptions","doubleBuffer","origSuperXY","origTargetOptions","superXY","superWidth","superHeight","targetOptions","accumulators","accumulator","instances","spark","frame","isNewFrame","baseLayer","typedCamera","accumToWorld","accumToCamera","preUpdate","useCamera","autoUpdate","viewChanged","next","doUpdate","needsUpdate","now","nextSortTime","current","rows","orderingMaxSplats","gl","glTexture","orderingTexture","defaultSplatCount","pixelScaleLimit","viewHeight","viewWidth","pxY","pxX","viewPos","viewQuat","distanceRamp","quatRamp","lodMeshes","hasPaged","mesh","splats","record","SplatPager","lodId","lodInitQueue","updates","page","lodTree","lodUpdates","deltaPred","deltaTime","PackedSplats","uuidToMesh","cameraToWorld","viewToObject","traverseStart","keyIndices","pixelLimit","totalLodSplats","pagedMeshes","meshPosition","PagedSplats","uuid","countIndices","oldest","target","previousTarget","byteSize","superPixels","subWidth","subHeight","subSize","targetPixels","super2","row","superCol","superRow","sx","superIndex","pixelIndex","worldCenter","size","hideObjects","filter","cubeCamera","objectVisibility","tempCamera","visible","cubeTexture","envMap","level","SparkRenderer","dyno.DynoInt","dyno.DynoUsampler2D","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","getSplatFileType","getSplatFileTypeFromPath","wasmInitialized","metaStart","tryBytes","fetchRange","decodeBytes","meta","chunksStart","filename","resolvedRoot","chunkUrl","request","response","sh3Codes","_d","_e","indicesTexture","getGlTexture","splatIndex","packedSplatArray","extPackedSplatArray","_SplatPager","dyno.DynoUsampler2DArray","dyno.dynoBlock","dyno.Dyno","dyno.unindentLines","dyno.Gsplat","lodOpacity","dyno.defineGsplat","shMax","dyno.splitGsplat","dyno.normalize","dyno.sub","evaluatePackedSH","dyno.add","dyno.combineGsplat","pageLru","packedArray","extArray","pageBase","sh3","needed","overflow","numPages","backoff","extraPages","splatsChunk","fetched","upload","init_wasm","requestHeader","withCredentials","EmptySplatSource","_SplatMesh","context","rootUrl","emptyLodIndices","constructSplats","onProgress","splatEncoding","packedSplatsOptions","centers_only","minVec","maxVec","corners","signs","_index","_opacity","_color","maybeLookupIndex","maybeInjectSplatRgba","recolorRgba","covTransform","covViewToObject","viewToWorld","lodIndices","worldToView","viewToObjectMatrix","newRecolor","editsSdfs","editResult","raycaster","intersects","paged","ext","ray","worldToMesh","worldToMeshRot","origin","direction","bufferSize","intersections","_f","buffer2","ext1","_o","_n","_q","_p","_r","ext2","_t","_s","_v","_u","_w","index4","newIntersections","packed","_h","_g","_j","_i","_k","_l","_m","point","additional","enableLod","showLodPage","PLY_PROPERTY_TYPES","_PlyReader","decoder","controller","headerTerminator","done","endHeader","headerLen","curElement","lineIndex","fields","elementCallback","elementName","element","properties","createEmptyItem","parseFn","createParseFn","splatCallback","shCallback","isSuperSplat","ssChunks","sh1Props","sh2Props","sh3Props","prepareSh","num_f_rest","NUM_SH_TO_NUM_F_REST","ssShCallback","sh","initSuperSplat","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","min_r","min_g","min_b","max_r","max_g","max_b","decodeSuperSplat","getNumSh","packed_position","packed_rotation","packed_scale","packed_color","SQRT2","r0","r1","rr","rOrder","scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","f_dc_0","f_dc_1","f_dc_2","red","green","blue","alpha","hasScales","hasRots","alphaDiv","FIELD_SCALE","redDiv","greenDiv","blueDiv","op","SH_C0","parsers","rgbaOffset","isVertex","propertyName","property","PARSE_FIELD","FIELD_BYTES","component","SET_FIELD","parser","PlyReader","littleEndian","NUM_F_REST_TO_NUM_SH","F_REST_REGEX","safeToCompile","createCompiledParserFn","createDynamicParserFn","UNSAFE_EVAL_ALLOWED","PROPERTY_NAME_REGEX","parserSrc","fRestMatch","fRestIndex","list","currentOffset","parserIndex","Loader","manager","FileLoader","onLoad","onError","resolvedURL","readStream","splatsLod","splatsNonLod","onStatus","loaded","basedUrl","initExtSplats","initSplats","magic","header","tryPcSogsZip","getFileExtension","pathOrUrl","noTrailing","lastSlash","lastDot","extension","isPcSogs","tryPcSogs","text","json","isVersion2","metaFilename","unzipped","unpackSplats","extraFiles","splatFileType","ply","SplatData","targetSplats","newCenters","newScales","newQuaternions","newOpacities","newColors","_PackedSplats","sh3Texture","wordsPerSplat","defineEvalPackedSH1","defineEvalPackedSH2","defineEvalPackedSH3","_OldSparkViewpoint","forceOrigin","originToWorld","newCam","needsSort","displayed","latestView","doubleSortReader","sort32Reader","dynoSortRadial","dynoOrigin","dynoDirection","dynoDepthBias","dynoSort360","sort32","halfMaxSplats","worldToOrigin","viewToOrigin","sortReader","rpcName","oldOrdering","sortParams","index2","gsplat0","metric0","computeSortMetric","gsplat1","metric1","combined","metric","OldSparkViewpoint","defineComputeSortMetric","sortOrigin","sortDirection","sortDepthBias","sort360","OldSplatAccumulator","generators","forceUpdate","map","modGenerator","otherNode","otherBase","otherCount","MAX_ACCUMULATORS","_OldSparkRenderer","EMPTY_GEOMETRY","viewpoint","cameras","averageOriginToWorlds","enable","multiply","mid","worldToCamera","activeMapping","visibleGenHash","originUpdate","originChanged","genOrder","gIndex","lastGen","_version","_seq","newGenerators","hasCorrespondence","OldSparkRenderer","originToWorlds","matrix","decodeAntiSplat","initNumSplats","f32","i8","KSPLAT_COMPRESSION","KSPLAT_SH_DEGREE_TO_COMPONENTS","decodeKsplat","headerOffset","versionMajor","versionMinor","maxSectionCount","compressionLevel","minSphericalHarmonicsCoeff","maxSphericalHarmonicsCoeff","sectionBase","section","getSh","splatOffset","sphericalHarmonicsOffsetBytes","sectionSplatCount","sectionMaxSplatCount","bucketSize","bucketCount","bucketBlockSize","bucketStorageSizeBytes","compressionScaleRange","fullBucketCount","fullBucketSplats","partiallyFilledBucketCount","bucketsMetaDataSizeBytes","bucketsStorageSizeBytes","sphericalHarmonicsDegree","shComponents","bytesPerCenter","bytesPerScale","bytesPerRotation","bytesPerColor","bytesPerSphericalHarmonicsComponent","scaleOffsetBytes","rotationOffsetBytes","colorOffsetBytes","bytesPerSplat","splatDataStorageSizeBytes","storageSizeBytes","sh1Index","sh2Index","sh3Index","compressionScaleFactor","bucketsBase","dataBase","bucketArray","partiallyFilledBucketLengths","partialBucketIndex","partialBucketBase","bucketIndex","bucketLength","SpzReader","centerCallback","alphaCallback","rgbCallback","scalesCallback","quatCallback","childCounts","childStarts","centerBytes","centerUint16","i3","fixed","i9","rgbBytes","scalesBytes","maxValue","quatBytes","combinedValues","valueMask","largestIndex","remainingValues","sumSquares","square","shBytes","SH_DEGREE_TO_VECS","i2","SPZ_MAGIC","SPZ_VERSION","FLAG_ANTIALIASED","SpzWriter","shDegree","fractionalBits","flagAntiAlias","splatSize","xRounded","xInt","yRounded","yInt","zRounded","zInt","quat","iLargest","negate","comp","negbit","mag","quantized","shVecs","base1","base2","base3","compressed","transcodeSpz","clipXyz","opacityThreshold","transformScales","transformQuaternion","withinClip","clip","withinOpacity","lastIndex","spz","centers","SplatSkinningMode","_SplatSkinning","GsplatSkinning","defineGsplatSkinning","applyGsplatSkinning","applyCovSplatDQSkinning","applyCovSplatLBSkinning","boneIndex","i16","boneIndices","weights","SplatSkinning","defineApplyGsplatSkinning","skinning","defineApplyCovSplatDQSkinning","defineApplyCovSplatLBSkinning","constructGrid","extents","stepSize","pointRadius","pointShadowScale","pointColor","constructAxes","axisRadius","axisShadowScale","origins","constructSpherePoints","maxDepth","pointThickness","pointsHash","addPoint","recurse","p0","p1","p2","p01","p12","p20","points","textSplats","font","fontSize","dotRadius","textAlign","lineHeight","objectScale","metrics","fontHeight","minLeft","maxRight","minTop","maxBottom","originLeft","originTop","imageSplats","subXY","forEachSplat","img","destWidth","destHeight","push","maybeOpacity","staticBox","box","cells","dotScale","dynoX","dynoY","dynoTime","cellX","cellY","cellZ","cell","intTime","random","transformer","DEFAULT_SNOW","DEFAULT_RAIN","snowBox","minY","density","anisoScale","minScale","maxScale","fallDirection","fallVelocity","wanderScale","wanderVariance","color1","color2","onFrame","volume","dynoMinScale","dynoMaxScale","dynoAnisoScale","dynoFallDirection","dynoFallVelocity","dynoWanderScale","dynoWanderVariance","dynoColor1","dynoColor2","dynoOpacity","globalOffset","dynoMin","dynoMax","dynoMinY","minMax","snow","randomW","intensity","random2","perturb","timeOffset","modulo","centerY","fallDelta","makeNormalColorModifier","splatToView","viewGsplat","viewNormal","splatDot","sameDir","setWorldNormalColor","makeDepthColorModifier","minDepth","reverse","setDepthColor","dynoMinDepth","dynoMaxDepth","dynoReverse","DEFAULT_CONTROLLER_MOVE_SPEED","DEFAULT_CONTROLLER_ROTATE_SPEED","DEFAULT_CONTROLLER_ROLL_SPEED","DEFAULT_CONTROLLER_FAST_MULTIPLIER","DEFAULT_CONTROLLER_SLOW_MULTIPLIER","DEFAULT_CONTROLLER_MOVE_HEADING","DEFAULT_CONTROLLER_GETMOVE","gamepads","sparkXr","DEFAULT_CONTROLLER_GETROTATE","DEFAULT_CONTROLLER_GETFAST","DEFAULT_CONTROLLER_GETSLOW","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","XR_HEADSET_HINTS","isLikelyMobilePhone","ua","uaData","_SparkXr","XrHand","button","modes","supported","referenceSpaceType","frameBufferScaleFactor","optionalFeatures","requiredFeatures","session","onSessionEnded","visibilityChanged","lastVisibilityState","exitHtml","exitText","enterHtml","enterText","cameraFrame","xrGamepads","gamepad","eulers","pivot","move","moveSpeed","SCRATCH_EULER","SCRATCH_QUAT_A","xrFrame","xrSession","referenceSpace","hand","inputSource","xrHand","jointId","jointSpace","jointPose","orientation","JointSplats","joints","hands","SparkXr","round4","SCRATCH_QUAT_B","lerpHandsSnapshots","snapshots","first","last","floorIndex","findSnapshotFloorIndex","cloneSnapshot","span","factor","interpolateSnapshots","maxHands","handIndex","lerpHandSnapshot","snapshot","cloneHandSnapshot","joint","low","high","fromHand","toHand","lerpJointSnapshot","fromJoint","toJoint","clone","cloneJointSnapshot","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","TOUCH_BIAS","XrHands","xr","Vector3","Quaternion","Color","CYCLE","handedness","segment","segmentSplats","lastSegment","jointA","jointB","radiusA","radiusB","handA","handB","hA","hB","jA","jB","HandMovement","xrHands","control","moveInertia","rotateInertia","grip","lastMid","delta","angle","lastAngle","closestAngle","rotateVelocity","blend","negPivot","Matrix4","DEFAULT_MOVEMENT_SPEED","DEFAULT_ROLL_SPEED","DEFAULT_ROTATE_SPEED","DEFAULT_SLIDE_SPEED","DEFAULT_SCROLL_SPEED","DEFAULT_STICK_THRESHOLD","DEFAULT_FPS_ROTATE_SPEED","DEFAULT_POINTER_ROLL_SCALE","DEFAULT_PRESS_MOVE_DELAY_MS","DEFAULT_PRESS_MOVE_ACCEL_MS","DUAL_PRESS_MS","DOUBLE_PRESS_LIMIT_MS","DOUBLE_PRESS_DISTANCE","MOVEMENT_THRESHOLD","WASD_KEYCODE_MOVE","ARROW_KEYCODE_MOVE","ARROW_KEYCODE_ROTATE","SparkControls","FpsMovement","PointerControls","rollSpeed","stickThreshold","rotateSpeed","keycodeMoveMapping","keycodeRotateMapping","gamepadMapping","capsMultiplier","shiftMultiplier","ctrlMultiplier","sticks","gamepadButtons","xrSources","stick","keycode","rot","moveVector","speedMultiplier","slideSpeed","scrollSpeed","swapRotateSlide","reverseRotate","reverseSlide","reverseSwipe","reverseScroll","pointerRollScale","doublePress","pressMoveDelayMs","pressMoveAccelMs","pressMoveSpeed","doublePressMoveSpeed","triplePressMoveSpeed","pressMoveCenter","initial","isRotate","pointerId","timeStamp","intervalMs","lastDistance","lastIntervalMs","pointerUp","lastUp","rect","motion","totalMotion","slide","deltaDir","deltaDist","orthoDir","motionDir","motionOrtho","midpoint","midpointDir","theCamera","ndcMidpoint","pinchOut","angles","ndcPoint","scroll","DISK_PORTAL_FRAGMENT_SHADER","SparkPortals","sparkOpts","pair","portal","twoSided","inverseCamera","portalInCamera","portalQuat","outCenter","outNormal","prevCam","currCam","beforeMatrix","afterMatrix","startPlaneDist","endPlaneDist","denom","earliestT","crossedPair","crossedEntry","entryT","exitT","bestScore","bestPair","bestIsEntry","entryDist","entryScore","exitDist","exitScore","primary","primaryIsEntry","primaryPortal","otherPortal","aspect"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","x_google_ignoreList":[1]} \ No newline at end of file +{"version":3,"file":"spark.module.min.js","sources":["../src/defines.ts","../src/dyno/types.ts","../src/dyno/value.ts","../src/dyno/base.ts","../src/dyno/splats.ts","../src/dyno/output.ts","../src/dyno/uniforms.ts","../node_modules/fflate/esm/browser.js","../src/utils.ts","../src/dyno/program.ts","../src/dyno/mathTypes.ts","../src/dyno/math.ts","../src/dyno/logic.ts","../src/dyno/convert.ts","../src/dyno/vecmat.ts","../src/dyno/util.ts","../src/dyno/transform.ts","../src/dyno/control.ts","../src/dyno/texture.ts","../src/dyno/trig.ts","../src/shaders/computeUvec4.glsl","../src/shaders/computeUvec4_Vec4.glsl","../src/shaders/computeUvec4x2_Vec4.glsl","../src/shaders/computeVec4.glsl","../src/shaders/splatDefines.glsl","../src/shaders/splatFragment.glsl","../src/shaders/splatVertex.glsl","../src/shaders.ts","../src/Readback.ts","../src/SplatEdit.ts","../src/SplatGenerator.ts","../rust/spark-rs/pkg/spark_rs.js","../virtual:decode-64","../src/wasm.ts","../src/SplatWorker.ts","../src/PackedSplats.ts","../src/SplatLoader.ts","../src/ExtSplats.ts","../src/RgbaArray.ts","../src/SplatPager.ts","../src/SplatMesh.ts","../src/SplatAccumulator.ts","../src/SplatGeometry.ts","../src/SparkRenderer.ts","../src/ply.ts","../src/antisplat.ts","../src/ksplat.ts","../src/spz.ts","../src/SplatSkinning.ts","../src/splatConstructors.ts","../src/generators/static.ts","../src/generators/snow.ts","../src/modifiers/normalColor.ts","../src/modifiers/depthColor.ts","../src/SparkXr.ts","../src/hands.ts","../src/controls.ts","../src/SparkPortals.ts"],"sourcesContent":["// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,\n// covering approx 0.0001..8000 in range with discrete steps 7% apart.\n// The value \"0\" is reserved for truly flat scales, indicating a 2DGS.\n// If these values are changed, the corresponding values in splatDefines.glsl\n// must also be updated to match.\n\nexport const LN_SCALE_MIN = -12.0;\nexport const LN_SCALE_MAX = 9.0;\nexport const SCALE_MIN = Math.exp(LN_SCALE_MIN);\nexport const SCALE_MAX = Math.exp(LN_SCALE_MAX);\n\nexport const LN_SCALE_ZERO = -30.0;\nexport const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);\n\n// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11\n// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)\n// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),\n// so we use 2D array textures for our representation for higher limits.\n\nexport const SPLAT_TEX_WIDTH_BITS = 11;\nexport const SPLAT_TEX_HEIGHT_BITS = 11;\nexport const SPLAT_TEX_DEPTH_BITS = 11;\nexport const SPLAT_TEX_LAYER_BITS =\n SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nexport const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048\nexport const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048\nexport const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048\nexport const SPLAT_TEX_MIN_HEIGHT = 1;\n\nexport const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;\nexport const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;\nexport const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;\n\n// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting\n// time between pure JS and WASM are minimal and don't make a big difference.\n\nexport const WASM_SPLAT_SORT = true;\n\n// Enable/disable compiling a dedicated parse function per element type\n// in the plyReader.\n\nexport const USE_COMPILED_PARSER_FUNCTION = true;\n\nexport enum SplatFileType {\n PLY = \"ply\",\n SPZ = \"spz\",\n SPLAT = \"splat\",\n KSPLAT = \"ksplat\",\n PCSOGS = \"pcsogs\",\n PCSOGSZIP = \"pcsogszip\",\n RAD = \"rad\",\n}\n\nexport type SplatEncoding = {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n sh1Max?: number;\n sh2Max?: number;\n sh3Max?: number;\n lodOpacity?: boolean;\n};\n\nexport const DEFAULT_SPLAT_ENCODING: SplatEncoding = {\n rgbMin: 0,\n rgbMax: 1,\n lnScaleMin: LN_SCALE_MIN,\n lnScaleMax: LN_SCALE_MAX,\n sh1Max: 1,\n sh2Max: 1,\n sh3Max: 1,\n lodOpacity: false,\n};\n\nexport type RadMeta = {\n version: number;\n type: string;\n count: number;\n maxSh?: number;\n lodTree?: boolean;\n chunkSize?: number;\n chunks: {\n offset: number;\n bytes: number;\n base?: number;\n count?: number;\n filename?: string;\n }[];\n splatEncoding?: SplatEncoding;\n};\n\nexport type PackedExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array;\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type PackedResult = {\n numSplats: number;\n packedArray: Uint32Array;\n extra: PackedExtra;\n splatEncoding: SplatEncoding;\n};\n\nexport type ExtExtra = {\n labels?: Uint32Array;\n instances?: Uint32Array;\n sh1?: Uint32Array;\n sh2?: Uint32Array;\n sh3a?: Uint32Array;\n sh3b?: Uint32Array;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: [Uint32Array, Uint32Array];\n lodTree?: Uint32Array;\n radMeta?: RadMeta;\n};\n\nexport type ExtResult = {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: ExtExtra;\n};\n","import type * as THREE from \"three\";\n\nexport type BoolTypes = \"bool\" | \"bvec2\" | \"bvec3\" | \"bvec4\";\nexport type IntTypes = \"int\" | \"ivec2\" | \"ivec3\" | \"ivec4\";\nexport type UintTypes = \"uint\" | \"uvec2\" | \"uvec3\" | \"uvec4\";\nexport type AllIntTypes = IntTypes | UintTypes;\nexport type FloatTypes = \"float\" | \"vec2\" | \"vec3\" | \"vec4\";\nexport type ScalarTypes = \"uint\" | \"int\" | \"float\";\nexport type Vector2Types = \"vec2\" | \"ivec2\" | \"uvec2\";\nexport type Vector3Types = \"vec3\" | \"ivec3\" | \"uvec3\";\nexport type Vector4Types = \"vec4\" | \"ivec4\" | \"uvec4\";\nexport type VectorTypes = Vector2Types | Vector3Types | Vector4Types;\nexport type MatFloatTypes =\n | \"mat2\"\n | \"mat2x2\"\n | \"mat2x3\"\n | \"mat2x4\"\n | \"mat3\"\n | \"mat3x2\"\n | \"mat3x3\"\n | \"mat3x4\"\n | \"mat4\"\n | \"mat4x2\"\n | \"mat4x3\"\n | \"mat4x4\";\nexport type SquareMatTypes =\n | \"mat2\"\n | \"mat3\"\n | \"mat4\"\n | \"mat2x2\"\n | \"mat3x3\"\n | \"mat4x4\";\nexport type AllFloatTypes = FloatTypes | MatFloatTypes;\nexport type SignedTypes = IntTypes | FloatTypes;\nexport type AllSignedTypes = SignedTypes | MatFloatTypes;\nexport type ValueTypes = FloatTypes | IntTypes | UintTypes;\nexport type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;\nexport type SimpleTypes = BoolTypes | AllValueTypes;\n\nexport type VectorElementType = A extends FloatTypes\n ? \"float\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nexport type SameSizeVec = T extends ScalarTypes\n ? \"float\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"vec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"vec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"vec4\"\n : never;\n\nexport type SameSizeUvec = T extends ScalarTypes\n ? \"uint\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"uvec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"uvec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"uvec4\"\n : never;\n\nexport type SameSizeIvec = T extends ScalarTypes\n ? \"int\"\n : T extends \"vec2\" | \"ivec2\" | \"uvec2\"\n ? \"ivec2\"\n : T extends \"vec3\" | \"ivec3\" | \"uvec3\"\n ? \"ivec3\"\n : T extends \"vec4\" | \"ivec4\" | \"uvec4\"\n ? \"ivec4\"\n : never;\n\nexport type SamplerTypes =\n | \"sampler2D\"\n | \"sampler2DArray\"\n | \"sampler3D\"\n | \"samplerCube\";\nexport type UsamplerTypes =\n | \"usampler2D\"\n | \"usampler2DArray\"\n | \"usampler3D\"\n | \"usamplerCube\";\nexport type IsamplerTypes =\n | \"isampler2D\"\n | \"isampler2DArray\"\n | \"isampler3D\"\n | \"isamplerCube\";\nexport type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;\nexport type SamplerShadowTypes =\n | \"sampler2DShadow\"\n | \"sampler2DArrayShadow\"\n | \"samplerCubeShadow\";\nexport type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;\nexport type Sampler2DTypes =\n | \"sampler2D\"\n | \"usampler2D\"\n | \"isampler2D\"\n | \"sampler2DShadow\";\nexport type Sampler2DArrayTypes =\n | \"sampler2DArray\"\n | \"usampler2DArray\"\n | \"isampler2DArray\"\n | \"sampler2DArrayShadow\";\nexport type Sampler3DTypes = \"sampler3D\" | \"usampler3D\" | \"isampler3D\";\nexport type SamplerCubeTypes =\n | \"samplerCube\"\n | \"usamplerCube\"\n | \"isamplerCube\"\n | \"samplerCubeShadow\";\n\nexport function isBoolType(type: DynoType): boolean {\n return (\n type === \"bool\" || type === \"bvec2\" || type === \"bvec3\" || type === \"bvec4\"\n );\n}\n\nexport function isScalarType(type: DynoType): boolean {\n return type === \"int\" || type === \"uint\" || type === \"float\";\n}\n\nexport function isIntType(type: DynoType): boolean {\n return (\n type === \"int\" || type === \"ivec2\" || type === \"ivec3\" || type === \"ivec4\"\n );\n}\n\nexport function isUintType(type: DynoType): boolean {\n return (\n type === \"uint\" || type === \"uvec2\" || type === \"uvec3\" || type === \"uvec4\"\n );\n}\n\nexport function isFloatType(type: DynoType): boolean {\n return (\n type === \"float\" || type === \"vec2\" || type === \"vec3\" || type === \"vec4\"\n );\n}\n\nexport function isMatFloatType(type: DynoType): boolean {\n return (\n type === \"mat2\" ||\n type === \"mat2x2\" ||\n type === \"mat2x3\" ||\n type === \"mat2x4\" ||\n type === \"mat3\" ||\n type === \"mat3x2\" ||\n type === \"mat3x3\" ||\n type === \"mat3x4\" ||\n type === \"mat4\" ||\n type === \"mat4x2\" ||\n type === \"mat4x3\" ||\n type === \"mat4x4\"\n );\n}\n\nexport function isAllFloatType(type: DynoType): boolean {\n return isFloatType(type) || isMatFloatType(type);\n}\n\nexport function isVector2Type(type: DynoType): boolean {\n return type === \"vec2\" || type === \"ivec2\" || type === \"uvec2\";\n}\n\nexport function isVector3Type(type: DynoType): boolean {\n return type === \"vec3\" || type === \"ivec3\" || type === \"uvec3\";\n}\n\nexport function isVector4Type(type: DynoType): boolean {\n return type === \"vec4\" || type === \"ivec4\" || type === \"uvec4\";\n}\n\nexport function isVectorType(type: DynoType): boolean {\n return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);\n}\n\nexport function isMat2(type: DynoType): boolean {\n return type === \"mat2\" || type === \"mat2x2\";\n}\nexport function isMat3(type: DynoType): boolean {\n return type === \"mat3\" || type === \"mat3x3\";\n}\nexport function isMat4(type: DynoType): boolean {\n return type === \"mat4\" || type === \"mat4x4\";\n}\n\nexport function vectorElementType(\n type: A,\n): VectorElementType {\n switch (type) {\n case \"vec2\":\n return \"float\" as VectorElementType;\n case \"vec3\":\n return \"float\" as VectorElementType;\n case \"vec4\":\n return \"float\" as VectorElementType;\n case \"ivec2\":\n return \"int\" as VectorElementType;\n case \"ivec3\":\n return \"int\" as VectorElementType;\n case \"ivec4\":\n return \"int\" as VectorElementType;\n case \"uvec2\":\n return \"uint\" as VectorElementType;\n case \"uvec3\":\n return \"uint\" as VectorElementType;\n case \"uvec4\":\n return \"uint\" as VectorElementType;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function vectorDim(type: A): number {\n switch (type) {\n case \"vec2\":\n case \"ivec2\":\n case \"uvec2\":\n return 2;\n case \"vec3\":\n case \"ivec3\":\n case \"uvec3\":\n return 3;\n case \"vec4\":\n case \"ivec4\":\n case \"uvec4\":\n return 4;\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport function sameSizeVec(type: T): SameSizeVec {\n if (isScalarType(type)) {\n return \"float\" as SameSizeVec;\n }\n if (isVector2Type(type)) {\n return \"vec2\" as SameSizeVec;\n }\n if (isVector3Type(type)) {\n return \"vec3\" as SameSizeVec;\n }\n if (isVector4Type(type)) {\n return \"vec4\" as SameSizeVec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeUvec(type: T): SameSizeUvec {\n if (isScalarType(type)) {\n return \"uint\" as SameSizeUvec;\n }\n if (isVector2Type(type)) {\n return \"uvec2\" as SameSizeUvec;\n }\n if (isVector3Type(type)) {\n return \"uvec3\" as SameSizeUvec;\n }\n if (isVector4Type(type)) {\n return \"uvec4\" as SameSizeUvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport function sameSizeIvec(type: T): SameSizeIvec {\n if (isScalarType(type)) {\n return \"int\" as SameSizeIvec;\n }\n if (isVector2Type(type)) {\n return \"ivec2\" as SameSizeIvec;\n }\n if (isVector3Type(type)) {\n return \"ivec3\" as SameSizeIvec;\n }\n if (isVector4Type(type)) {\n return \"ivec4\" as SameSizeIvec;\n }\n throw new Error(`Invalid vector type: ${type}`);\n}\n\nexport type BaseType = SimpleTypes | AllSamplerTypes;\nexport type UserType = { type: string };\nexport type DynoType = BaseType | UserType;\n\nexport type DynoJsType = T extends \"bool\"\n ? boolean\n : T extends \"uint\"\n ? number\n : T extends \"int\"\n ? number\n : T extends \"float\"\n ? number\n : T extends \"bvec2\"\n ? [boolean, boolean]\n : T extends \"uvec2\"\n ? THREE.Vector2 | [number, number] | Uint32Array\n : T extends \"ivec2\"\n ? THREE.Vector2 | [number, number] | Int32Array\n : T extends \"vec2\"\n ? THREE.Vector2 | [number, number] | Float32Array\n : T extends \"bvec3\"\n ? [boolean, boolean, boolean]\n : T extends \"uvec3\"\n ? THREE.Vector3 | [number, number, number] | Uint32Array\n : T extends \"ivec3\"\n ? THREE.Vector3 | [number, number, number] | Int32Array\n : T extends \"vec3\"\n ?\n | THREE.Vector3\n | THREE.Color\n | [number, number, number]\n | Float32Array\n : T extends \"bvec4\"\n ? [boolean, boolean, boolean, boolean]\n : T extends \"uvec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Uint32Array\n : T extends \"ivec4\"\n ?\n | THREE.Vector4\n | [number, number, number, number]\n | Int32Array\n : T extends \"vec4\"\n ?\n | THREE.Vector4\n | THREE.Quaternion\n | [number, number, number, number]\n | Float32Array\n : T extends \"mat2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x2\"\n ? THREE.Matrix2 | Float32Array\n : T extends \"mat2x3\"\n ? Float32Array\n : T extends \"mat2x4\"\n ? Float32Array\n : T extends \"mat3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x2\"\n ? Float32Array\n : T extends \"mat3x3\"\n ? THREE.Matrix3 | Float32Array\n : T extends \"mat3x4\"\n ? Float32Array\n : T extends \"mat4\"\n ? THREE.Matrix4 | Float32Array\n : T extends \"mat4x2\"\n ? Float32Array\n : T extends \"mat4x3\"\n ? Float32Array\n : T extends \"mat4x4\"\n ?\n | THREE.Matrix4\n | Float32Array\n : T extends \"usampler2D\"\n ? THREE.Texture\n : T extends \"isampler2D\"\n ? THREE.Texture\n : T extends \"sampler2D\"\n ? THREE.Texture\n : T extends \"sampler2DShadow\"\n ? THREE.Texture\n : T extends \"usampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"isampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArray\"\n ? THREE.DataArrayTexture\n : T extends \"sampler2DArrayShadow\"\n ? THREE.Texture\n : T extends \"usampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"isampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"sampler3D\"\n ? THREE.DataArrayTexture\n : T extends \"usamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"isamplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCube\"\n ? THREE.DataArrayTexture\n : T extends \"samplerCubeShadow\"\n ? THREE.Texture\n : unknown;\n\nexport function typeLiteral(type: DynoType): string {\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"object\" && type.type) {\n return type.type;\n }\n throw new Error(`Invalid DynoType: ${String(type)}`);\n}\n\nexport function numberAsInt(value: number): string {\n return Math.trunc(value).toString();\n}\n\nexport function numberAsUint(value: number): string {\n const v = Math.max(0, Math.trunc(value));\n return `${v.toString()}u`;\n}\n\nexport function numberAsFloat(value: number): string {\n return value === Number.POSITIVE_INFINITY\n ? \"INFINITY\"\n : value === Number.NEGATIVE_INFINITY\n ? \"-INFINITY\"\n : Number.isInteger(value)\n ? value.toFixed(1)\n : value.toString();\n}\n","import * as THREE from \"three\";\n\nimport type { Dyno, IOTypes } from \"./base\";\nimport {\n type DynoJsType,\n type DynoType,\n type SimpleTypes,\n isAllFloatType,\n isBoolType,\n isIntType,\n isUintType,\n numberAsFloat,\n numberAsInt,\n numberAsUint,\n} from \"./types\";\n\nexport type DynoVal = DynoValue | HasDynoOut;\n\nexport function valType(val: DynoVal): T {\n if (val instanceof DynoValue) {\n return val.type;\n }\n const value = val.dynoOut();\n return value.type;\n}\n\nexport interface HasDynoOut {\n dynoOut(): DynoValue;\n}\n\nexport class DynoValue {\n type: T;\n // This field prevents TypeScript structural matching on objects with a \"type\" field\n private __isDynoValue = true;\n\n constructor(type: T) {\n this.type = type;\n }\n}\n\nexport class DynoOutput<\n T extends DynoType,\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends DynoValue {\n dyno: Dyno;\n key: string;\n\n constructor(dyno: Dyno, key: string) {\n super(dyno.outTypes[key] as T);\n this.dyno = dyno;\n this.key = key;\n }\n}\n\nexport class DynoLiteral extends DynoValue {\n literal: string;\n\n constructor(type: T, literal: string) {\n super(type);\n this.literal = literal;\n }\n\n getLiteral(): string {\n return this.literal;\n }\n}\n\nexport function dynoLiteral(\n type: T,\n literal: string,\n): DynoLiteral {\n return new DynoLiteral(type, literal);\n}\n\nexport class DynoConst extends DynoLiteral {\n value: DynoJsType;\n\n constructor(type: T, value: DynoJsType) {\n super(type, \"\");\n this.value = value;\n }\n\n getLiteral(): string {\n const { type, value } = this;\n switch (type) {\n case \"bool\":\n return value ? \"true\" : \"false\";\n case \"uint\":\n return numberAsUint(value as number);\n case \"int\":\n return numberAsInt(value as number);\n case \"float\":\n return numberAsFloat(value as number);\n case \"bvec2\": {\n const v = value as [boolean, boolean];\n return `bvec2(${v[0]}, ${v[1]})`;\n }\n case \"uvec2\": {\n if (value instanceof THREE.Vector2) {\n return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;\n }\n const v = value as [number, number] | Uint32Array;\n return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;\n }\n case \"ivec2\": {\n if (value instanceof THREE.Vector2) {\n return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;\n }\n const v = value as [number, number] | Int32Array;\n return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;\n }\n case \"vec2\": {\n if (value instanceof THREE.Vector2) {\n return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;\n }\n const v = value as [number, number] | Float32Array;\n return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;\n }\n case \"bvec3\": {\n const v = value as [boolean, boolean, boolean];\n return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;\n }\n case \"uvec3\": {\n if (value instanceof THREE.Vector3) {\n return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;\n }\n const v = value as [number, number, number] | Uint32Array;\n return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;\n }\n case \"ivec3\": {\n if (value instanceof THREE.Vector3) {\n return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;\n }\n const v = value as [number, number, number] | Int32Array;\n return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;\n }\n case \"vec3\": {\n if (value instanceof THREE.Vector3) {\n return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;\n }\n const v = value as [number, number, number] | Float32Array;\n return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;\n }\n case \"bvec4\": {\n const v = value as [boolean, boolean, boolean, boolean];\n return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;\n }\n case \"uvec4\": {\n if (value instanceof THREE.Vector4) {\n return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;\n }\n const v = value as [number, number, number, number] | Uint32Array;\n return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;\n }\n case \"ivec4\": {\n if (value instanceof THREE.Vector4) {\n return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;\n }\n const v = value as [number, number, number, number] | Int32Array;\n return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;\n }\n case \"vec4\": {\n if (value instanceof THREE.Vector4) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n if (value instanceof THREE.Quaternion) {\n return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;\n }\n const v = value as [number, number, number, number] | Float32Array;\n return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;\n }\n case \"mat2\":\n case \"mat2x2\": {\n const m = value as DynoJsType<\"mat2\">;\n const e =\n m instanceof THREE.Matrix2 ? m.elements : (value as Float32Array);\n const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x3\": {\n const e = value as DynoJsType<\"mat2x3\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat2x4\": {\n const e = value as DynoJsType<\"mat2x4\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3\":\n case \"mat3x3\": {\n const m = value as DynoJsType<\"mat3\">;\n const e =\n m instanceof THREE.Matrix3 ? m.elements : (value as Float32Array);\n const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x2\": {\n const e = value as DynoJsType<\"mat3x2\">;\n const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat3x4\": {\n const e = value as DynoJsType<\"mat3x4\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4\":\n case \"mat4x4\": {\n const m = value as DynoJsType<\"mat4\">;\n const e =\n m instanceof THREE.Matrix4 ? m.elements : (value as Float32Array);\n const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x2\": {\n const e = value as DynoJsType<\"mat4x2\">;\n const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n case \"mat4x3\": {\n const e = value as DynoJsType<\"mat4x3\">;\n const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));\n return `${type as string}(${arg.join(\", \")})`;\n }\n default:\n throw new Error(`Type not implemented: ${String(type)}`);\n }\n }\n}\n\nexport function dynoConst(\n type: T,\n value: DynoJsType,\n): DynoConst {\n return new DynoConst(type, value);\n}\n\nexport function literalZero(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(false)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(0.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(0)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(1u)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n\nexport function literalNegOne(type: SimpleTypes): string {\n const typeString = String(type);\n if (isBoolType(type)) {\n return `${typeString}(true)`;\n }\n if (isAllFloatType(type)) {\n return `${typeString}(-1.0)`;\n }\n if (isIntType(type)) {\n return `${typeString}(-1)`;\n }\n if (isUintType(type)) {\n return `${typeString}(0xFFFFFFFFu)`;\n }\n throw new Error(`Type not implemented: ${typeString}`);\n}\n","import type { IUniform } from \"three\";\nimport type { DynoType } from \"./types\";\nimport {\n DynoLiteral,\n DynoOutput,\n type DynoVal,\n DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nconst DEFAULT_INDENT = \" \";\n\nexport class Compilation {\n globals: Set = new Set();\n statements: string[] = [];\n uniforms: Record = {};\n declares: Set = new Set();\n updaters: (() => void)[] = [];\n sequence = 0;\n indent: string = DEFAULT_INDENT;\n\n constructor({ indent }: { indent?: string } = {}) {\n this.indent = indent ?? DEFAULT_INDENT;\n }\n\n nextSequence() {\n return this.sequence++;\n }\n}\n\nexport type IOTypes = Record;\ntype GenerateContext = {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n};\n\nexport class Dyno {\n inTypes: InTypes;\n outTypes: OutTypes;\n\n inputs: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n }) {\n this.inTypes = inTypes ?? ({} as InTypes);\n this.outTypes = outTypes ?? ({} as OutTypes);\n this.inputs = inputs ?? {};\n this.update = update;\n\n this.globals = globals;\n this.statements = statements;\n this.generate =\n generate ??\n (({ inputs, outputs, compile }) => {\n return {\n globals: this.globals?.({ inputs, outputs, compile }),\n statements: this.statements?.({ inputs, outputs, compile }),\n };\n });\n }\n\n get outputs(): { [K in keyof OutTypes]: DynoVal } {\n const outputs = {} as { [K in keyof OutTypes]: DynoVal };\n for (const key in this.outTypes) {\n outputs[key] = new DynoOutput(this, key);\n }\n return outputs;\n }\n\n apply(inputs: { [K in keyof InTypes]?: DynoVal }): {\n [K in keyof OutTypes]: DynoVal;\n } {\n Object.assign(this.inputs, inputs);\n return this.outputs;\n }\n\n compile({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }): string[] {\n const result = [\n `// ${this.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`,\n ];\n\n const declares: (keyof OutTypes)[] = [];\n for (const key in outputs) {\n const name = outputs[key];\n if (name && !compile.declares.has(name)) {\n compile.declares.add(name);\n declares.push(key);\n }\n }\n\n const { globals, statements, uniforms } = this.generate({\n inputs,\n outputs,\n compile,\n });\n for (const global of globals ?? []) {\n compile.globals.add(global);\n }\n for (const key in uniforms) {\n compile.uniforms[key] = uniforms[key];\n }\n if (this.update) {\n compile.updaters.push(this.update);\n }\n\n for (const key of declares) {\n const name = outputs[key];\n if (name) {\n if (!compile.uniforms[name]) {\n result.push(`${dynoDeclare(name, this.outTypes[key])};`);\n }\n }\n }\n\n if (statements?.length) {\n result.push(\"{\");\n result.push(...statements.map((line) => compile.indent + line));\n result.push(\"}\");\n }\n return result;\n }\n}\n\nexport type DynoBlockType = (\n inputs: { [K in keyof InTypes]?: DynoVal },\n outputs: { [K in keyof OutTypes]?: DynoVal },\n { roots }: { roots: Dyno[] },\n) => { [K in keyof OutTypes]?: DynoVal } | undefined;\n\nexport class DynoBlock<\n InTypes extends IOTypes,\n OutTypes extends IOTypes,\n> extends Dyno {\n construct: DynoBlockType;\n\n constructor({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n construct,\n }: {\n inTypes?: InTypes;\n outTypes?: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n construct: DynoBlockType;\n }) {\n super({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n generate: (args) => this.generateBlock(args),\n });\n this.construct = construct;\n }\n\n generateBlock({\n inputs,\n outputs,\n compile,\n }: {\n inputs: { [K in keyof InTypes]?: string };\n outputs: { [K in keyof OutTypes]?: string };\n compile: Compilation;\n }) {\n const blockInputs: { [K in keyof InTypes]?: DynoVal } = {};\n const blockOutputs: { [K in keyof OutTypes]?: DynoVal } = {};\n\n for (const key in inputs) {\n if (inputs[key] != null) {\n blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);\n }\n }\n for (const key in outputs) {\n if (outputs[key] != null) {\n blockOutputs[key] = new DynoValue(this.outTypes[key]);\n }\n }\n\n const options: { roots: Dyno[] } = { roots: [] };\n const returned = this.construct(blockInputs, blockOutputs, options);\n\n for (const global of this.globals?.({ inputs, outputs, compile }) ?? []) {\n compile.globals.add(global);\n }\n\n const ordering: Dyno[] = [];\n const nodeOuts = new Map<\n Dyno,\n { sequence: number; outNames: Map; newOuts: Set }\n >();\n\n function visit(\n node: Dyno,\n outKey?: string,\n outName?: string,\n ) {\n let outs = nodeOuts.get(node);\n if (!outs) {\n // First time visiting this node\n outs = {\n sequence: compile.nextSequence(),\n outNames: new Map(),\n newOuts: new Set(),\n };\n nodeOuts.set(node, outs);\n\n for (const key in node.inputs) {\n let input = node.inputs[key];\n while (input) {\n if (input instanceof DynoValue) {\n if (input instanceof DynoOutput) {\n visit(input.dyno, input.key);\n }\n break;\n }\n // Must be as HasDynoOut\n if (typeof input.dynoOut !== \"function\") {\n throw new Error(\n `dynoOut is not a function for ${input.constructor.name}`,\n );\n }\n input = input.dynoOut();\n }\n }\n ordering.push(node);\n }\n if (outKey) {\n if (!outName) {\n outs.newOuts.add(outKey);\n }\n outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);\n }\n }\n\n for (const root of options.roots) {\n visit(root);\n }\n\n for (const key in blockOutputs) {\n let value = returned?.[key] ?? blockOutputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoOutput) {\n visit(value.dyno, value.key, outputs[key]);\n }\n break;\n }\n // Must be as HasDynoOut\n value = value.dynoOut();\n }\n blockOutputs[key] = value;\n }\n\n const steps = [];\n\n for (const dyno of ordering) {\n // compile.statements.push(`// ${dyno.constructor.name}(${Object.values(inputs).join(\", \")}) => (${Object.values(outputs).join(\", \")})`);\n\n const inputs: Record = {};\n const outputs: Record = {};\n\n for (const key in dyno.inputs) {\n let value = dyno.inputs[key];\n while (value) {\n if (value instanceof DynoValue) {\n if (value instanceof DynoLiteral) {\n inputs[key] = value.getLiteral();\n } else if (value instanceof DynoOutput) {\n const source = nodeOuts.get(value.dyno)?.outNames.get(value.key);\n if (!source) {\n throw new Error(\n `Source not found for ${value.dyno.constructor.name}.${value.key}`,\n );\n }\n inputs[key] = source;\n }\n break;\n }\n // Must be as HasDynOut\n value = value.dynoOut();\n }\n }\n\n const outs = nodeOuts.get(dyno) ?? { outNames: new Map() };\n for (const [key, name] of outs.outNames.entries()) {\n outputs[key] = name;\n }\n\n const newSteps = dyno.compile({ inputs, outputs, compile });\n steps.push(newSteps);\n }\n\n const literalOutputs = [];\n for (const key in outputs) {\n if (blockOutputs[key] instanceof DynoLiteral) {\n literalOutputs.push(\n `${outputs[key]} = ${blockOutputs[key].getLiteral()};`,\n );\n }\n }\n if (literalOutputs.length > 0) {\n steps.push(literalOutputs);\n }\n\n const statements = steps.flatMap((step, index) => {\n // Add a blank line between steps\n return index === 0 ? step : [\"\", ...step];\n });\n return { statements };\n }\n}\n\nexport function dynoBlock<\n InTypes extends Record,\n OutTypes extends Record,\n>(\n inTypes: InTypes,\n outTypes: OutTypes,\n construct: DynoBlockType,\n { update, globals }: { update?: () => void; globals?: () => string[] } = {},\n) {\n return new DynoBlock({ inTypes, outTypes, construct, update, globals });\n}\n\nexport function dyno<\n InTypes extends Record,\n OutTypes extends Record,\n>({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n}: {\n inTypes: InTypes;\n outTypes: OutTypes;\n inputs?: { [K in keyof InTypes]?: DynoVal };\n update?: () => void;\n globals?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n statements?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => string[];\n generate?: ({\n inputs,\n outputs,\n compile,\n }: GenerateContext) => {\n globals?: string[];\n statements?: string[];\n uniforms?: Record;\n };\n}) {\n return new Dyno({\n inTypes,\n outTypes,\n inputs,\n update,\n globals,\n statements,\n generate,\n });\n}\n\nexport function dynoDeclare(name: string, type: DynoType, count?: number) {\n const typeStr = typeof type === \"string\" ? type : type.type;\n if (!typeStr) {\n throw new Error(`Invalid DynoType: ${String(type)}`);\n }\n return `${typeStr} ${name}${count != null ? `[${count}]` : \"\"}`;\n}\n\nexport function unindentLines(s: string): string[] {\n let seenNonEmpty = false;\n const lines = s\n .split(\"\\n\")\n .map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n })\n .filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n\n const indent = lines[0].match(/^\\s*/)?.[0];\n if (!indent) {\n return lines; // No indent, return as is\n }\n // Remove indent from the beginning of each line\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, \"\"));\n}\n\nexport function unindent(s: string): string {\n return unindentLines(s).join(\"\\n\");\n}\n\nexport class UnaryOp<\n A extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n outKey,\n outTypeFunc,\n }: { a: DynoVal; outKey: OutKey; outTypeFunc: (aType: A) => OutType }) {\n const inTypes = { a: valType(a) };\n const outType = outTypeFunc(valType(a));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class BinaryOp<\n A extends DynoType,\n B extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b) };\n const outType = outTypeFunc(valType(a), valType(b));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class TrinaryOp<\n A extends DynoType,\n B extends DynoType,\n C extends DynoType,\n OutType extends DynoType,\n OutKey extends string,\n >\n extends Dyno<{ a: A; b: B; c: C }, { [key in OutKey]: OutType }>\n implements HasDynoOut\n{\n constructor({\n a,\n b,\n c,\n outKey,\n outTypeFunc,\n }: {\n a: DynoVal;\n b: DynoVal;\n c: DynoVal;\n outKey: OutKey;\n outTypeFunc: (aType: A, bType: B, cType: C) => OutType;\n }) {\n const inTypes = { a: valType(a), b: valType(b), c: valType(c) };\n const outType = outTypeFunc(valType(a), valType(b), valType(c));\n const outTypes = { [outKey]: outType } as { [key in OutKey]: OutType };\n super({ inTypes, outTypes, inputs: { a, b, c } });\n this.outKey = outKey;\n }\n\n outKey: OutKey;\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n","import { Dyno, UnaryOp, unindent, unindentLines } from \"./base\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const Gsplat = { type: \"Gsplat\" } as { type: \"Gsplat\" };\nexport const CovSplat = { type: \"CovSplat\" } as { type: \"CovSplat\" };\nexport const TPackedSplats = { type: \"PackedSplats\" } as {\n type: \"PackedSplats\";\n};\nexport const TExtSplats = { type: \"ExtSplats\" } as {\n type: \"ExtSplats\";\n};\nexport const TCovSplats = { type: \"CovSplats\" } as {\n type: \"CovSplats\";\n};\n\nexport const numPackedSplats = (\n packedSplats: DynoVal,\n): DynoVal<\"int\"> => new NumPackedSplats({ packedSplats });\nexport const readPackedSplat = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadPackedSplat({ packedSplats, index });\nexport const readPackedSplatRange = (\n packedSplats: DynoVal,\n index: DynoVal<\"int\">,\n base: DynoVal<\"int\">,\n count: DynoVal<\"int\">,\n): DynoVal =>\n new ReadPackedSplatRange({ packedSplats, index, base, count });\n\nexport const numExtSplats = (\n extSplats: DynoVal,\n): DynoVal<\"int\"> => new NumExtSplats({ extSplats });\nexport const readExtSplat = (\n extSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadExtSplat({ extSplats, index });\n\nexport const numCovSplats = (\n covsplats: DynoVal,\n): DynoVal<\"int\"> => new NumCovSplats({ covsplats });\nexport const readCovSplat = (\n covSplats: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal => new ReadCovSplat({ covSplats, index });\n\nexport const gsplatToCovSplat = (\n gsplat: DynoVal,\n): DynoVal => new GsplatToCovSplat({ gsplat });\n\nexport const splitGsplat = (gsplat: DynoVal) =>\n new SplitGsplat({ gsplat });\nexport const combineGsplat = ({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineGsplat({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\nexport const gsplatNormal = (gsplat: DynoVal): DynoVal<\"vec3\"> =>\n new GsplatNormal({ gsplat });\n\nexport const transformGsplat = (\n gsplat: DynoVal,\n {\n scale,\n rotate,\n translate,\n recolor,\n }: {\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n },\n): DynoVal => {\n return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });\n};\n\nexport const splatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new SplatTexCoord({ index });\n\nexport const pagedSplatTexCoord = (index: DynoVal<\"int\">): DynoVal<\"ivec3\"> =>\n new PagedSplatTexCoord({ index });\n\nexport const defineGsplat = unindent(`\n struct Gsplat {\n vec3 center;\n uint flags;\n vec3 scales;\n int index;\n vec4 quaternion;\n vec4 rgba;\n };\n const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;\n\n bool isGsplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const defineCovSplat = unindent(`\n struct CovSplat {\n vec3 center;\n uint flags;\n vec4 rgba;\n vec3 xxyyzz;\n int index;\n vec3 xyxzyz;\n };\n\n bool isCovSplatActive(uint flags) {\n return (flags & GSPLAT_FLAG_ACTIVE) != 0u;\n }\n`);\n\nexport const definePackedSplats = unindent(`\n struct PackedSplats {\n usampler2DArray textureArray;\n int numSplats;\n vec4 rgbMinMaxLnScaleMinMax;\n bool lodOpacity;\n };\n`);\n\nexport class NumPackedSplats extends UnaryOp<\n typeof TPackedSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({\n packedSplats,\n }: { packedSplats: DynoVal }) {\n super({ a: packedSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadPackedArray = unindent(`\n bool readPackedArray(usampler2DArray texture, int numSplats, vec4 rgbMinMaxLnScaleMinMax, int index, out Gsplat gsplat) {\n if ((index >= 0) && (index < numSplats)) {\n uvec4 packedData = texelFetch(texture, splatTexCoord(index), 0);\n unpackSplatEncoding(packedData, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba, rgbMinMaxLnScaleMinMax);\n return true;\n } else {\n return false;\n }\n }\n`);\n\nexport class ReadPackedSplat\n extends Dyno<\n { packedSplats: typeof TPackedSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n }: { packedSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { packedSplats: TPackedSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index } = inputs;\n let statements: string[];\n if (packedSplats && index) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class ReadPackedSplatRange\n extends Dyno<\n {\n packedSplats: typeof TPackedSplats;\n index: \"int\";\n base: \"int\";\n count: \"int\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n packedSplats,\n index,\n base,\n count,\n }: {\n packedSplats?: DynoVal;\n index?: DynoVal<\"int\">;\n base?: DynoVal<\"int\">;\n count?: DynoVal<\"int\">;\n }) {\n super({\n inTypes: {\n packedSplats: TPackedSplats,\n index: \"int\",\n base: \"int\",\n count: \"int\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { packedSplats, index, base, count },\n globals: () => [defineGsplat, definePackedSplats, defineReadPackedArray],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [];\n }\n const { packedSplats, index, base, count } = inputs;\n let statements: string[];\n if (packedSplats && index && base && count) {\n statements = unindentLines(`\n ${gsplat}.flags = 0u;\n if (readPackedArray(${packedSplats}.textureArray, ${packedSplats}.numSplats, ${packedSplats}.rgbMinMaxLnScaleMinMax, ${index}, ${gsplat})) {\n if (${packedSplats}.lodOpacity) {\n ${gsplat}.rgba.a = 2.0 * ${gsplat}.rgba.a;\n }\n bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));\n ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;\n }\n `);\n } else {\n statements = [`${gsplat}.flags = 0u;`];\n }\n statements.push(`${gsplat}.index = ${index ?? \"0\"};`);\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineExtSplats = unindent(`\n struct ExtSplats {\n usampler2DArray textureArray1;\n usampler2DArray textureArray2;\n int numSplats;\n };\n`);\n\nexport class NumExtSplats extends UnaryOp<\n typeof TExtSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ extSplats }: { extSplats: DynoVal }) {\n super({ a: extSplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadExtArrays = unindent(`\n void readExtArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out Gsplat gsplat) {\n gsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExt(packed1, packed2, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);\n gsplat.flags = all(equal(gsplat.scales, vec3(0.0, 0.0, 0.0))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadExtSplat\n extends Dyno<\n { extSplats: typeof TExtSplats; index: \"int\" },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n extSplats,\n index,\n }: { extSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { extSplats: TExtSplats, index: \"int\" },\n outTypes: { gsplat: Gsplat },\n inputs: { extSplats, index },\n globals: () => [defineGsplat, defineExtSplats, defineReadExtArrays],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = outputs;\n if (!gsplat) {\n return [`${gsplat}.flags = 0u;`];\n }\n const { extSplats, index } = inputs;\n let statements: string[];\n if (extSplats && index) {\n return unindentLines(`\n readExtArrays(${extSplats}.textureArray1, ${extSplats}.textureArray2, ${extSplats}.numSplats, ${index}, ${gsplat});\n `);\n }\n return [`${gsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport class NumCovSplats extends UnaryOp<\n typeof TCovSplats,\n \"int\",\n \"numSplats\"\n> {\n constructor({ covsplats }: { covsplats: DynoVal }) {\n super({ a: covsplats, outKey: \"numSplats\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.numSplats} = ${inputs.a}.numSplats;`,\n ];\n }\n}\n\nconst defineReadCovArrays = unindent(`\n void readCovArrays(usampler2DArray texture1, usampler2DArray texture2, int numSplats, int index, out CovSplat covsplat) {\n covsplat.flags = 0u;\n if ((index >= 0) && (index < numSplats)) {\n ivec3 coord = splatTexCoord(index);\n uvec4 packed1 = texelFetch(texture1, coord, 0);\n uvec4 packed2 = texelFetch(texture2, coord, 0);\n unpackSplatExtCov(packed1, packed2, covsplat.center, covsplat.rgba, covsplat.xxyyzz, covsplat.xyxzyz);\n covsplat.flags = (all(equal(covsplat.xxyyzz, vec3(0.0))) && all(equal(covsplat.xyxzyz, vec3(0.0)))) ? 0u : GSPLAT_FLAG_ACTIVE;\n gsplat.index = index;\n }\n }\n`);\n\nexport class ReadCovSplat\n extends Dyno<\n { covSplats: typeof TCovSplats; index: \"int\" },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covSplats,\n index,\n }: { covSplats?: DynoVal; index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { covSplats: TCovSplats, index: \"int\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covSplats, index },\n globals: () => [defineGsplat, defineCovSplat, defineReadCovArrays],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = outputs;\n if (!covsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n const { covSplats, index } = inputs;\n let statements: string[];\n if (covSplats && index) {\n return unindentLines(`\n readCovArrays(${covSplats}.textureArray, ${covSplats}.numSplats, ${index}, ${covsplat});\n `);\n }\n return [`${covsplat}.flags = 0u;`];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class GsplatToCovSplat extends Dyno<\n { gsplat: typeof Gsplat },\n { covsplat: typeof CovSplat }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: { covsplat: CovSplat },\n inputs: { gsplat },\n globals: () => [defineGsplat, defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const { covsplat } = outputs;\n if (!gsplat) {\n return [`${covsplat}.flags = 0u;`];\n }\n\n return unindentLines(`\n ${covsplat}.flags = 0u;\n if (isGsplatActive(${gsplat}.flags)) {\n ${covsplat}.flags = ${gsplat}.flags;\n ${covsplat}.index = ${gsplat}.index;\n ${covsplat}.rgba = ${gsplat}.rgba;\n ${covsplat}.center = ${gsplat}.center;\n mat3 m = scaleQuaternionToMatrix(${gsplat}.scales, ${gsplat}.quaternion);\n m = m * transpose(m);\n ${covsplat}.xxyyzz = vec3(m[0][0], m[1][1], m[2][2]);\n ${covsplat}.xyxzyz = vec3(m[0][1], m[0][2], m[1][2]);\n }\n `);\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplitGsplat extends Dyno<\n { gsplat: typeof Gsplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ gsplat }: { gsplat?: DynoVal }) {\n super({\n inTypes: { gsplat: Gsplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags ? null : `${flags} = ${gsplat ? `${gsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isGsplatActive(${gsplat ? `${gsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${gsplat ? `${gsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !scales\n ? null\n : `${scales} = ${gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !quaternion\n ? null\n : `${quaternion} = ${gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${gsplat ? `${gsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${gsplat ? `${gsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${gsplat ? `${gsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${gsplat ? `${gsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${gsplat ? `${gsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${gsplat ? `${gsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${gsplat ? `${gsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${gsplat ? `${gsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n scales: \"vec3\";\n quaternion: \"vec4\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n gsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n scales?: DynoVal<\"vec3\">;\n quaternion?: DynoVal<\"vec4\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n scales: \"vec3\",\n quaternion: \"vec4\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat: outGsplat } = outputs;\n if (!outGsplat) {\n return [];\n }\n const {\n gsplat,\n flags,\n index,\n center,\n scales,\n quaternion,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outGsplat}.flags = ${flags ?? (gsplat ? `${gsplat}.flags` : \"0u\")};`,\n `${outGsplat}.index = ${index ?? (gsplat ? `${gsplat}.index` : \"0\")};`,\n `${outGsplat}.center = ${center ?? (gsplat ? `${gsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.scales = ${scales ?? (gsplat ? `${gsplat}.scales` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outGsplat}.quaternion = ${quaternion ?? (gsplat ? `${gsplat}.quaternion` : \"vec4(0.0, 0.0, 0.0, 1.0)\")};`,\n `${outGsplat}.rgba = ${rgba ?? (gsplat ? `${gsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outGsplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outGsplat}.rgba.a = ${opacity};`,\n !x ? null : `${outGsplat}.center.x = ${x};`,\n !y ? null : `${outGsplat}.center.y = ${y};`,\n !z ? null : `${outGsplat}.center.z = ${z};`,\n !r ? null : `${outGsplat}.rgba.r = ${r};`,\n !g ? null : `${outGsplat}.rgba.g = ${g};`,\n !b ? null : `${outGsplat}.rgba.b = ${b};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const defineGsplatNormal = unindent(`\n vec3 gsplatNormal(vec3 scales, vec4 quaternion) {\n float minScale = min(scales.x, min(scales.y, scales.z));\n vec3 normal;\n if (scales.z == minScale) {\n normal = vec3(0.0, 0.0, 1.0);\n } else if (scales.y == minScale) {\n normal = vec3(0.0, 1.0, 0.0);\n } else {\n normal = vec3(1.0, 0.0, 0.0);\n }\n return quatVec(quaternion, normal);\n }\n`);\n\nexport class GsplatNormal extends UnaryOp {\n constructor({ gsplat }: { gsplat: DynoVal }) {\n super({ a: gsplat, outKey: \"normal\", outTypeFunc: () => \"vec3\" });\n this.globals = () => [defineGsplat, defineGsplatNormal];\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`,\n ];\n }\n}\n\nexport class TransformGsplat\n extends Dyno<\n {\n gsplat: typeof Gsplat;\n scale: \"float\";\n rotate: \"vec4\";\n translate: \"vec3\";\n recolor: \"vec4\";\n },\n { gsplat: typeof Gsplat }\n >\n implements HasDynoOut\n{\n constructor({\n gsplat,\n scale,\n rotate,\n translate,\n recolor,\n }: {\n gsplat?: DynoVal;\n scale?: DynoVal<\"float\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n recolor?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n scale: \"float\",\n rotate: \"vec4\",\n translate: \"vec3\",\n recolor: \"vec4\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, scale, rotate, translate, recolor },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs, compile }) => {\n const { gsplat } = outputs;\n if (!gsplat || !inputs.gsplat) {\n return [];\n }\n const { scale, rotate, translate, recolor } = inputs;\n const indent = compile.indent;\n const statements = [\n `${gsplat} = ${inputs.gsplat};`,\n `if (isGsplatActive(${gsplat}.flags)) {`,\n\n scale ? `${indent}${gsplat}.center *= ${scale};` : null,\n rotate\n ? `${indent}${gsplat}.center = quatVec(${rotate}, ${gsplat}.center);`\n : null,\n translate ? `${indent}${gsplat}.center += ${translate};` : null,\n\n scale ? `${indent}${gsplat}.scales *= ${scale};` : null,\n\n rotate\n ? `${indent}${gsplat}.quaternion = quatQuat(${rotate}, ${gsplat}.quaternion);`\n : null,\n recolor ? `${indent}${gsplat}.rgba *= ${recolor};` : null,\n \"}\",\n ].filter(Boolean) as string[];\n return statements;\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"gsplat\");\n }\n}\n\nexport const splitCovSplat = (covsplat: DynoVal) =>\n new SplitCovSplat({ covsplat });\nexport const combineCovSplat = ({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n}: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n}): DynoVal => {\n return new CombineCovSplat({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n });\n};\n\nexport class SplitCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n {\n flags: \"uint\";\n active: \"bool\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n }\n> {\n constructor({ covsplat }: { covsplat?: DynoVal }) {\n super({\n inTypes: { covsplat: CovSplat },\n outTypes: {\n flags: \"uint\",\n active: \"bool\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat } = inputs;\n const {\n flags,\n active,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = outputs;\n return [\n !flags\n ? null\n : `${flags} = ${covsplat ? `${covsplat}.flags` : \"0u\"};`,\n !active\n ? null\n : `${active} = isCovSplatActive(${covsplat ? `${covsplat}.flags` : \"0u\"});`,\n !index ? null : `${index} = ${covsplat ? `${covsplat}.index` : \"0\"};`,\n !center\n ? null\n : `${center} = ${covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !rgba\n ? null\n : `${rgba} = ${covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n !rgb\n ? null\n : `${rgb} = ${covsplat ? `${covsplat}.rgba.rgb` : \"vec3(0.0, 0.0, 0.0)\"};`,\n !opacity\n ? null\n : `${opacity} = ${covsplat ? `${covsplat}.rgba.a` : \"0.0\"};`,\n !x ? null : `${x} = ${covsplat ? `${covsplat}.center.x` : \"0.0\"};`,\n !y ? null : `${y} = ${covsplat ? `${covsplat}.center.y` : \"0.0\"};`,\n !z ? null : `${z} = ${covsplat ? `${covsplat}.center.z` : \"0.0\"};`,\n !r ? null : `${r} = ${covsplat ? `${covsplat}.rgba.r` : \"0.0\"};`,\n !g ? null : `${g} = ${covsplat ? `${covsplat}.rgba.g` : \"0.0\"};`,\n !b ? null : `${b} = ${covsplat ? `${covsplat}.rgba.b` : \"0.0\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class CombineCovSplat\n extends Dyno<\n {\n covsplat: typeof CovSplat;\n flags: \"uint\";\n index: \"int\";\n center: \"vec3\";\n rgba: \"vec4\";\n rgb: \"vec3\";\n opacity: \"float\";\n x: \"float\";\n y: \"float\";\n z: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n },\n { covsplat: typeof CovSplat }\n >\n implements HasDynoOut\n{\n constructor({\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n }: {\n covsplat?: DynoVal;\n flags?: DynoVal<\"uint\">;\n index?: DynoVal<\"int\">;\n center?: DynoVal<\"vec3\">;\n rgba?: DynoVal<\"vec4\">;\n rgb?: DynoVal<\"vec3\">;\n opacity?: DynoVal<\"float\">;\n x?: DynoVal<\"float\">;\n y?: DynoVal<\"float\">;\n z?: DynoVal<\"float\">;\n r?: DynoVal<\"float\">;\n g?: DynoVal<\"float\">;\n b?: DynoVal<\"float\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n flags: \"uint\",\n index: \"int\",\n center: \"vec3\",\n rgba: \"vec4\",\n rgb: \"vec3\",\n opacity: \"float\",\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n },\n outTypes: { covsplat: CovSplat },\n inputs: {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n },\n globals: () => [defineCovSplat],\n statements: ({ inputs, outputs }) => {\n const { covsplat: outCovSplat } = outputs;\n if (!outCovSplat) {\n return [];\n }\n const {\n covsplat,\n flags,\n index,\n center,\n rgba,\n rgb,\n opacity,\n x,\n y,\n z,\n r,\n g,\n b,\n } = inputs;\n return [\n `${outCovSplat}.flags = ${flags ?? (covsplat ? `${covsplat}.flags` : \"0u\")};`,\n `${outCovSplat}.index = ${index ?? (covsplat ? `${covsplat}.index` : \"0\")};`,\n `${outCovSplat}.center = ${center ?? (covsplat ? `${covsplat}.center` : \"vec3(0.0, 0.0, 0.0)\")};`,\n `${outCovSplat}.rgba = ${rgba ?? (covsplat ? `${covsplat}.rgba` : \"vec4(0.0, 0.0, 0.0, 0.0)\")};`,\n !rgb ? null : `${outCovSplat}.rgba.rgb = ${rgb};`,\n !opacity ? null : `${outCovSplat}.rgba.a = ${opacity};`,\n !x ? null : `${outCovSplat}.center.x = ${x};`,\n !y ? null : `${outCovSplat}.center.y = ${y};`,\n !z ? null : `${outCovSplat}.center.z = ${z};`,\n !r ? null : `${outCovSplat}.rgba.r = ${r};`,\n !g ? null : `${outCovSplat}.rgba.g = ${g};`,\n !b ? null : `${outCovSplat}.rgba.b = ${b};`,\n `${outCovSplat}.xxyyzz = ${covsplat ? `${covsplat}.xxyyzz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n `${outCovSplat}.xyxzyz = ${covsplat ? `${covsplat}.xyxzyz` : \"vec3(0.0, 0.0, 0.0)\"};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, \"covsplat\");\n }\n}\n\nexport class SplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = splatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n\nexport class PagedSplatTexCoord\n extends Dyno<{ index: \"int\" }, { coord: \"ivec3\" }>\n implements HasDynoOut<\"ivec3\">\n{\n constructor({ index }: { index?: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { coord: \"ivec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => {\n const { index } = inputs;\n const { coord } = outputs;\n if (!index || !coord) {\n return [];\n }\n return [`${coord} = pagedSplatTexCoord(${index});`];\n },\n });\n }\n\n dynoOut(): DynoValue<\"ivec3\"> {\n return new DynoOutput(this, \"coord\");\n }\n}\n","import * as THREE from \"three\";\nimport { Dyno, unindentLines } from \"./base\";\nimport { CovSplat, Gsplat, defineCovSplat, defineGsplat } from \"./splats\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n} from \"./value\";\n\nexport const outputPackedSplat = (\n gsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputPackedSplat({ gsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputCovSplat = (\n covsplat: DynoVal,\n rgbMinMaxLnScaleMinMax: DynoVal<\"vec4\">,\n) => new OutputCovSplat({ covsplat, rgbMinMaxLnScaleMinMax });\n\nexport const outputExtendedSplat = (gsplat: DynoVal) =>\n new OutputExtendedSplat({ gsplat });\n\nexport const outputExtCovSplat = (covsplat: DynoVal) =>\n new OutputExtCovSplat({ covsplat });\n\nexport const outputSplatDepth = (\n gsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputSplatDepth({ gsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputCovSplatDepth = (\n covsplat: DynoVal,\n viewCenter: DynoVal<\"vec3\">,\n viewDir: DynoVal<\"vec3\">,\n sortRadial: DynoVal<\"bool\">,\n) => new OutputCovSplatDepth({ covsplat, viewCenter, viewDir, sortRadial });\n\nexport const outputRgba8 = (rgba8: DynoVal<\"vec4\">) =>\n new OutputRgba8({ rgba8 });\n\nexport class OutputPackedSplat extends Dyno<\n { gsplat: typeof Gsplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n gsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n gsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { gsplat: Gsplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { gsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineGsplat],\n statements: ({ inputs, outputs }) => {\n const { gsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (gsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n target = packSplatEncoding(${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n `);\n }\n return [\"target = uvec4(0u, 0u, 0u, 0u);\"];\n },\n });\n }\n}\n\nexport class OutputCovSplat extends Dyno<\n { covsplat: typeof CovSplat; rgbMinMaxLnScaleMinMax: \"vec4\" },\n Record\n> {\n constructor({\n covsplat,\n rgbMinMaxLnScaleMinMax,\n }: {\n covsplat?: DynoVal;\n rgbMinMaxLnScaleMinMax?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { covsplat: CovSplat, rgbMinMaxLnScaleMinMax: \"vec4\" },\n inputs: { covsplat, rgbMinMaxLnScaleMinMax },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, rgbMinMaxLnScaleMinMax } = inputs;\n if (covsplat && rgbMinMaxLnScaleMinMax) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n target = packSplatCovEncoding(${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz, ${rgbMinMaxLnScaleMinMax});\n } else {\n target = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtendedSplat extends Dyno<\n { gsplat: typeof Gsplat },\n Record\n> {\n constructor({\n gsplat,\n }: {\n gsplat?: DynoVal;\n }) {\n super({\n inTypes: { gsplat: Gsplat },\n inputs: { gsplat },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat } = inputs;\n if (gsplat) {\n return unindentLines(`\n if (isGsplatActive(${gsplat}.flags)) {\n packSplatExt(target, target2, ${gsplat}.center, ${gsplat}.scales, ${gsplat}.quaternion, ${gsplat}.rgba);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nexport class OutputExtCovSplat extends Dyno<\n { covsplat: typeof CovSplat },\n Record\n> {\n constructor({\n covsplat,\n }: {\n covsplat?: DynoVal;\n }) {\n super({\n inTypes: { covsplat: CovSplat },\n inputs: { covsplat },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat } = inputs;\n if (covsplat) {\n return unindentLines(`\n if (isCovSplatActive(${covsplat}.flags)) {\n packSplatExtCov(target, target2, ${covsplat}.center, ${covsplat}.rgba, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz);\n } else {\n target = uvec4(0u);\n target2 = uvec4(0u);\n }\n `);\n }\n return [\"target = uvec4(0u);\", \"target2 = uvec4(0u);\"];\n },\n });\n }\n}\n\nclass OutputSplatDepth extends Dyno<\n {\n gsplat: typeof Gsplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n gsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n gsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n gsplat: Gsplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { gsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineGsplat],\n statements: ({ inputs }) => {\n const { gsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (gsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isGsplatActive(${gsplat}.flags)) {\n vec3 center = ${gsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nclass OutputCovSplatDepth extends Dyno<\n {\n covsplat: typeof CovSplat;\n viewCenter: \"vec3\";\n viewDir: \"vec3\";\n sortRadial: \"bool\";\n },\n Record\n> {\n constructor({\n covsplat,\n viewCenter,\n viewDir,\n sortRadial,\n }: {\n covsplat: DynoVal;\n viewCenter: DynoVal<\"vec3\">;\n viewDir: DynoVal<\"vec3\">;\n sortRadial: DynoVal<\"bool\">;\n }) {\n super({\n inTypes: {\n covsplat: CovSplat,\n viewCenter: \"vec3\",\n viewDir: \"vec3\",\n sortRadial: \"bool\",\n },\n inputs: { covsplat, viewCenter, viewDir, sortRadial },\n globals: () => [defineCovSplat],\n statements: ({ inputs }) => {\n const { covsplat, viewCenter, viewDir, sortRadial } = inputs;\n if (covsplat && viewCenter && viewDir && sortRadial) {\n return unindentLines(`\n float metric = 1.0 / 0.0;\n if (isCovSplatActive(${covsplat}.flags)) {\n vec3 center = ${covsplat}.center - ${viewCenter};\n if (${sortRadial}) {\n metric = length(center);\n } else {\n float bias = 100.0; // reduce popping\n metric = dot(center, ${viewDir}) + bias;\n }\n }\n target3 = floatToVec4(metric);\n `);\n }\n return [];\n },\n });\n }\n}\n\nexport class OutputRgba8\n extends Dyno<{ rgba8: \"vec4\" }, { rgba8: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ rgba8 }: { rgba8?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { rgba8: \"vec4\" },\n inputs: { rgba8 },\n statements: ({ inputs, outputs }) => [\n `target = ${inputs.rgba8 ?? \"vec4(0.0, 0.0, 0.0, 0.0)\"};`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"rgba8\");\n }\n}\n","import type { IUniform } from \"three\";\nimport { Dyno, dynoDeclare } from \"./base\";\nimport type { DynoJsType, DynoType } from \"./types\";\nimport { DynoOutput, type DynoValue, type HasDynoOut } from \"./value\";\n\nexport const uniform = >(\n key: string,\n type: DynoType,\n value: V,\n) => new DynoUniform({ key, type, value });\nexport const dynoBool = (value = false, key?: string) =>\n new DynoBool({ key, value });\nexport const dynoUint = (value = 0, key?: string) =>\n new DynoUint({ key, value });\nexport const dynoInt = (value = 0, key?: string) => new DynoInt({ key, value });\nexport const dynoFloat = (value = 0.0, key?: string) =>\n new DynoFloat({ key, value });\n\nexport const dynoBvec2 = >(\n value: V,\n key?: string,\n) => new DynoBvec2({ key, value });\nexport const dynoUvec2 = >(\n value: V,\n key?: string,\n) => new DynoUvec2({ key, value });\nexport const dynoIvec2 = >(\n value: V,\n key?: string,\n) => new DynoIvec2({ key, value });\nexport const dynoVec2 = >(\n value: V,\n key?: string,\n) => new DynoVec2({ key, value });\n\nexport const dynoBvec3 = >(\n value: V,\n key?: string,\n) => new DynoBvec3({ key, value });\nexport const dynoUvec3 = >(\n value: V,\n key?: string,\n) => new DynoUvec3({ key, value });\nexport const dynoIvec3 = >(\n value: V,\n key?: string,\n) => new DynoIvec3({ key, value });\nexport const dynoVec3 = >(\n value: V,\n key?: string,\n) => new DynoVec3({ key, value });\n\nexport const dynoBvec4 = >(\n value: V,\n key?: string,\n) => new DynoBvec4({ key, value });\nexport const dynoUvec4 = >(\n value: V,\n key?: string,\n) => new DynoUvec4({ key, value });\nexport const dynoIvec4 = >(\n value: V,\n key?: string,\n) => new DynoIvec4({ key, value });\nexport const dynoVec4 = >(\n value: V,\n key?: string,\n) => new DynoVec4({ key, value });\n\nexport const dynoMat2 = >(\n value: V,\n key?: string,\n) => new DynoMat2({ key, value });\nexport const dynoMat2x2 = >(\n value: V,\n key?: string,\n) => new DynoMat2x2({ key, value });\nexport const dynoMat2x3 = >(\n value: V,\n key?: string,\n) => new DynoMat2x3({ key, value });\nexport const dynoMat2x4 = >(\n value: V,\n key?: string,\n) => new DynoMat2x4({ key, value });\n\nexport const dynoMat3 = >(\n value: V,\n key?: string,\n) => new DynoMat3({ key, value });\nexport const dynoMat3x2 = >(\n value: V,\n key?: string,\n) => new DynoMat3x2({ key, value });\nexport const dynoMat3x3 = >(\n value: V,\n key?: string,\n) => new DynoMat3x3({ key, value });\nexport const dynoMat3x4 = >(\n value: V,\n key?: string,\n) => new DynoMat3x4({ key, value });\n\nexport const dynoMat4 = >(\n value: V,\n key?: string,\n) => new DynoMat4({ key, value });\nexport const dynoMat4x2 = >(\n value: V,\n key?: string,\n) => new DynoMat4x2({ key, value });\nexport const dynoMat4x3 = >(\n value: V,\n key?: string,\n) => new DynoMat4x3({ key, value });\nexport const dynoMat4x4 = >(\n value: V,\n key?: string,\n) => new DynoMat4x4({ key, value });\n\nexport const dynoUsampler2D = >(\n value: V,\n key?: string,\n) => new DynoUsampler2D({ key, value });\nexport const dynoIsampler2D = >(\n value: V,\n key?: string,\n) => new DynoIsampler2D({ key, value });\nexport const dynoSampler2D = >(\n value: V,\n key?: string,\n) => new DynoSampler2D({ key, value });\n\nexport const dynoUsampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoUsampler2DArray({ key, value });\nexport const dynoIsampler2DArray = >(\n key: string,\n value: V,\n) => new DynoIsampler2DArray({ key, value });\nexport const dynoSampler2DArray = >(\n value: V,\n key?: string,\n) => new DynoSampler2DArray({ key, value });\n\nexport const dynoUsampler3D = >(\n value: V,\n key?: string,\n) => new DynoUsampler3D({ key, value });\nexport const dynoIsampler3D = >(\n value: V,\n key?: string,\n) => new DynoIsampler3D({ key, value });\nexport const dynoSampler3D = >(\n value: V,\n key?: string,\n) => new DynoSampler3D({ key, value });\n\nexport const dynoUsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoUsamplerCube({ key, value });\nexport const dynoIsamplerCube = >(\n value: V,\n key?: string,\n) => new DynoIsamplerCube({ key, value });\nexport const dynoSamplerCube = >(\n value: V,\n key?: string,\n) => new DynoSamplerCube({ key, value });\n\nexport const dynoSampler2DShadow = >(\n value: V,\n key?: string,\n) => new DynoSampler2DShadow({ key, value });\nexport const dynoSampler2DArrayShadow = <\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSampler2DArrayShadow({ key, value });\nexport const dynoSamplerCubeShadow = <\n V extends DynoJsType<\"samplerCubeShadow\">,\n>(\n value: V,\n key?: string,\n) => new DynoSamplerCubeShadow({ key, value });\n\nexport class DynoUniform<\n T extends DynoType,\n K extends string = \"value\",\n V extends DynoJsType = DynoJsType,\n >\n extends Dyno, { [key in K]: T }>\n implements HasDynoOut\n{\n public type: T;\n public count?: number;\n public outKey: K;\n public value: V;\n public uniform: { value: V; type?: string };\n\n constructor({\n key,\n type,\n count,\n value,\n update,\n globals,\n }: {\n key?: K;\n type: T;\n count?: number;\n value: V;\n update?: (value: V) => V | undefined;\n globals?: ({\n inputs,\n outputs,\n }: { inputs: unknown; outputs: { [key in K]?: string } }) => string[];\n }) {\n key = (key ?? \"value\") as K;\n super({\n outTypes: { [key]: type } as { [key in K]: T },\n update: () => {\n if (update) {\n const value = update(this.value);\n if (value !== undefined) {\n this.value = value;\n }\n }\n this.uniform.value = this.value;\n },\n generate: ({ inputs, outputs }) => {\n const allGlobals = globals?.({ inputs, outputs }) ?? [];\n const uniforms: Record = {};\n const name = outputs[key];\n if (name) {\n allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);\n uniforms[name] = this.uniform;\n }\n return { globals: allGlobals, uniforms };\n },\n });\n this.type = type;\n this.count = count;\n this.value = value;\n this.uniform = { value };\n this.outKey = key;\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput(this, this.outKey);\n }\n}\n\nexport class DynoBool extends DynoUniform<\n \"bool\",\n K,\n boolean\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: boolean;\n update?: (value: boolean) => boolean | undefined;\n }) {\n super({ key, type: \"bool\", value, update });\n }\n}\n\nexport class DynoUint extends DynoUniform<\"uint\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"uint\", value, update });\n }\n}\n\nexport class DynoInt extends DynoUniform<\"int\", K, number> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"int\", value, update });\n }\n}\n\nexport class DynoFloat extends DynoUniform<\n \"float\",\n K,\n number\n> {\n constructor({\n key,\n value,\n update,\n }: {\n key?: K;\n value: number;\n update?: (value: number) => number | undefined;\n }) {\n super({ key, type: \"float\", value, update });\n }\n}\n\nexport class DynoBvec2<\n K extends string,\n V extends DynoJsType<\"bvec2\">,\n> extends DynoUniform<\"bvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec2\", value, update });\n }\n}\n\nexport class DynoUvec2<\n K extends string,\n V extends DynoJsType<\"uvec2\">,\n> extends DynoUniform<\"uvec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec2\", value, update });\n }\n}\n\nexport class DynoIvec2<\n K extends string,\n V extends DynoJsType<\"ivec2\">,\n> extends DynoUniform<\"ivec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec2\", value, update });\n }\n}\n\nexport class DynoVec2<\n K extends string,\n V extends DynoJsType<\"vec2\">,\n> extends DynoUniform<\"vec2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec2\", value, update });\n }\n}\n\nexport class DynoBvec3<\n K extends string,\n V extends DynoJsType<\"bvec3\">,\n> extends DynoUniform<\"bvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec3\", value, update });\n }\n}\n\nexport class DynoUvec3<\n V extends DynoJsType<\"uvec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"uvec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec3\", value, update });\n }\n}\n\nexport class DynoIvec3<\n V extends DynoJsType<\"ivec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"ivec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec3\", value, update });\n }\n}\n\nexport class DynoVec3<\n V extends DynoJsType<\"vec3\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec3\", value, update });\n }\n}\n\nexport class DynoBvec4<\n K extends string,\n V extends DynoJsType<\"bvec4\">,\n> extends DynoUniform<\"bvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"bvec4\", value, update });\n }\n}\n\nexport class DynoUvec4<\n K extends string,\n V extends DynoJsType<\"uvec4\">,\n> extends DynoUniform<\"uvec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"uvec4\", value, update });\n }\n}\n\nexport class DynoIvec4<\n K extends string,\n V extends DynoJsType<\"ivec4\">,\n> extends DynoUniform<\"ivec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"ivec4\", value, update });\n }\n}\n\nexport class DynoVec4<\n V extends DynoJsType<\"vec4\">,\n K extends string = \"value\",\n> extends DynoUniform<\"vec4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"vec4\", value, update });\n }\n}\n\nexport class DynoMat2<\n K extends string,\n V extends DynoJsType<\"mat2\">,\n> extends DynoUniform<\"mat2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2\", value, update });\n }\n}\n\nexport class DynoMat2x2<\n K extends string,\n V extends DynoJsType<\"mat2x2\">,\n> extends DynoUniform<\"mat2x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x2\", value, update });\n }\n}\n\nexport class DynoMat2x3<\n K extends string,\n V extends DynoJsType<\"mat2x3\">,\n> extends DynoUniform<\"mat2x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x3\", value, update });\n }\n}\n\nexport class DynoMat2x4<\n K extends string,\n V extends DynoJsType<\"mat2x4\">,\n> extends DynoUniform<\"mat2x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat2x4\", value, update });\n }\n}\n\nexport class DynoMat3<\n K extends string,\n V extends DynoJsType<\"mat3\">,\n> extends DynoUniform<\"mat3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3\", value, update });\n }\n}\n\nexport class DynoMat3x2<\n K extends string,\n V extends DynoJsType<\"mat3x2\">,\n> extends DynoUniform<\"mat3x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x2\", value, update });\n }\n}\n\nexport class DynoMat3x3<\n K extends string,\n V extends DynoJsType<\"mat3x3\">,\n> extends DynoUniform<\"mat3x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x3\", value, update });\n }\n}\n\nexport class DynoMat3x4<\n K extends string,\n V extends DynoJsType<\"mat3x4\">,\n> extends DynoUniform<\"mat3x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat3x4\", value, update });\n }\n}\n\nexport class DynoMat4<\n K extends string,\n V extends DynoJsType<\"mat4\">,\n> extends DynoUniform<\"mat4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4\", value, update });\n }\n}\n\nexport class DynoMat4x2<\n K extends string,\n V extends DynoJsType<\"mat4x2\">,\n> extends DynoUniform<\"mat4x2\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x2\", value, update });\n }\n}\n\nexport class DynoMat4x3<\n K extends string,\n V extends DynoJsType<\"mat4x3\">,\n> extends DynoUniform<\"mat4x3\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x3\", value, update });\n }\n}\n\nexport class DynoMat4x4<\n K extends string,\n V extends DynoJsType<\"mat4x4\">,\n> extends DynoUniform<\"mat4x4\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"mat4x4\", value, update });\n }\n}\n\nexport class DynoUsampler2D<\n K extends string,\n V extends DynoJsType<\"usampler2D\">,\n> extends DynoUniform<\"usampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2D\", value, update });\n }\n}\n\nexport class DynoIsampler2D<\n K extends string,\n V extends DynoJsType<\"isampler2D\">,\n> extends DynoUniform<\"isampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2D\", value, update });\n }\n}\n\nexport class DynoSampler2D<\n K extends string,\n V extends DynoJsType<\"sampler2D\">,\n> extends DynoUniform<\"sampler2D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2D\", value, update });\n }\n}\n\nexport class DynoUsampler2DArray<\n K extends string,\n V extends DynoJsType<\"usampler2DArray\">,\n> extends DynoUniform<\"usampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler2DArray\", value, update });\n }\n}\n\nexport class DynoIsampler2DArray<\n K extends string,\n V extends DynoJsType<\"isampler2DArray\">,\n> extends DynoUniform<\"isampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler2DArray\", value, update });\n }\n}\n\nexport class DynoSampler2DArray<\n K extends string,\n V extends DynoJsType<\"sampler2DArray\">,\n> extends DynoUniform<\"sampler2DArray\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArray\", value, update });\n }\n}\n\nexport class DynoUsampler3D<\n K extends string,\n V extends DynoJsType<\"usampler3D\">,\n> extends DynoUniform<\"usampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usampler3D\", value, update });\n }\n}\n\nexport class DynoIsampler3D<\n K extends string,\n V extends DynoJsType<\"isampler3D\">,\n> extends DynoUniform<\"isampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isampler3D\", value, update });\n }\n}\n\nexport class DynoSampler3D<\n K extends string,\n V extends DynoJsType<\"sampler3D\">,\n> extends DynoUniform<\"sampler3D\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler3D\", value, update });\n }\n}\n\nexport class DynoUsamplerCube<\n K extends string,\n V extends DynoJsType<\"usamplerCube\">,\n> extends DynoUniform<\"usamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"usamplerCube\", value, update });\n }\n}\n\nexport class DynoIsamplerCube<\n K extends string,\n V extends DynoJsType<\"isamplerCube\">,\n> extends DynoUniform<\"isamplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"isamplerCube\", value, update });\n }\n}\n\nexport class DynoSamplerCube<\n K extends string,\n V extends DynoJsType<\"samplerCube\">,\n> extends DynoUniform<\"samplerCube\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCube\", value, update });\n }\n}\n\nexport class DynoSampler2DShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DShadow\">,\n> extends DynoUniform<\"sampler2DShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DShadow\", value, update });\n }\n}\n\nexport class DynoSampler2DArrayShadow<\n K extends string,\n V extends DynoJsType<\"sampler2DArrayShadow\">,\n> extends DynoUniform<\"sampler2DArrayShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"sampler2DArrayShadow\", value, update });\n }\n}\n\nexport class DynoSamplerCubeShadow<\n K extends string,\n V extends DynoJsType<\"samplerCubeShadow\">,\n> extends DynoUniform<\"samplerCubeShadow\", K, V> {\n constructor({\n key,\n value,\n update,\n }: { key?: K; value: V; update?: (value: V) => V | undefined }) {\n super({ key, type: \"samplerCubeShadow\", value, update });\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { Gunzip } from \"fflate\";\nimport * as THREE from \"three\";\n\n// Miscellaneous utility functions for Spark\n\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SCALE_ZERO,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_MIN_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines.js\";\nimport { unindent } from \"./dyno/base.js\";\n\nexport const threeRevision = Number.parseInt(THREE.REVISION);\nexport const threeMrtArray = threeRevision >= 179;\n\nconst f32buffer = new Float32Array(1);\nconst u32buffer = new Uint32Array(f32buffer.buffer);\nconst supportsFloat16Array = \"Float16Array\" in globalThis;\nconst f16buffer = supportsFloat16Array\n ? new globalThis[\"Float16Array\" as keyof typeof globalThis](1)\n : null;\nconst u16buffer = new Uint16Array(f16buffer?.buffer);\n\n// Returns a normalized array of numbers\nexport function normalize(vec: number[]) {\n const norm = Math.sqrt(vec.reduce((acc, v) => acc + v * v, 0));\n return vec.map((v) => v / norm);\n}\n\n// Reinterpret the bits of a float32 as a uint32\nexport function floatBitsToUint(f: number): number {\n f32buffer[0] = f;\n return u32buffer[0];\n}\n\n// Reinterpret the bits of a uint32 as a float32\nexport function uintBitsToFloat(u: number): number {\n u32buffer[0] = u;\n return f32buffer[0];\n}\n\nexport const toHalf = supportsFloat16Array ? toHalfNative : toHalfJS;\nexport const fromHalf = supportsFloat16Array ? fromHalfNative : fromHalfJS;\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfNative(f: number): number {\n f16buffer[0] = f;\n return u16buffer[0];\n}\n\n// Encode a number as a float16, stored as a uint16 number.\nfunction toHalfJS(f: number): number {\n // Store the value into the shared Float32 array.\n f32buffer[0] = f;\n const bits = u32buffer[0];\n\n // Extract sign (1 bit), exponent (8 bits), and fraction (23 bits)\n const sign = (bits >> 31) & 0x1;\n const exp = (bits >> 23) & 0xff;\n const frac = bits & 0x7fffff;\n const halfSign = sign << 15;\n\n // Handle special cases: NaN and Infinity\n if (exp === 0xff) {\n // NaN: set all exponent bits to 1 and some nonzero fraction bits.\n if (frac !== 0) {\n return halfSign | 0x7fff;\n }\n // Infinity\n return halfSign | 0x7c00;\n }\n\n // Adjust the exponent from float32 bias (127) to float16 bias (15)\n const newExp = exp - 127 + 15;\n\n // Handle overflow: too large to represent in half precision.\n if (newExp >= 0x1f) {\n return halfSign | 0x7c00; // Infinity\n }\n if (newExp <= 0) {\n // Handle subnormals and underflow.\n if (newExp < -10) {\n // Too small: underflows to zero.\n return halfSign;\n }\n // Convert to subnormal: add the implicit leading 1 to the fraction,\n // then shift to align with the half-precision's 10 fraction bits.\n const subFrac = (frac | 0x800000) >> (1 - newExp + 13);\n return halfSign | subFrac;\n }\n\n // Normalized half-precision number: shift fraction to fit into 10 bits.\n const halfFrac = frac >> 13;\n return halfSign | (newExp << 10) | halfFrac;\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfNative(u: number): number {\n u16buffer[0] = u;\n return f16buffer[0];\n}\n\n// Convert a float16 stored as a uint16 number back to a float32.\nfunction fromHalfJS(h: number): number {\n // Extract the sign (1 bit), exponent (5 bits), and fraction (10 bits)\n const sign = (h >> 15) & 0x1;\n const exp = (h >> 10) & 0x1f;\n const frac = h & 0x3ff;\n\n let f32bits: number;\n\n if (exp === 0) {\n if (frac === 0) {\n // Zero (positive or negative)\n f32bits = sign << 31;\n } else {\n // Subnormal half-precision number.\n // Normalize the subnormal number:\n let mant = frac;\n let e = -14; // For half, the exponent for subnormals is fixed at -14.\n // Shift left until the implicit leading 1 is in place.\n while ((mant & 0x400) === 0) {\n // 0x400 === 1 << 10\n mant <<= 1;\n e--;\n }\n // Remove the leading 1 (which is now implicit)\n mant &= 0x3ff;\n // Convert the half exponent (e) to the 32-bit float exponent:\n const newExp = e + 127; // 32-bit float bias is 127.\n const newFrac = mant << 13; // Align to 23-bit fraction (23 - 10 = 13)\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n } else if (exp === 0x1f) {\n // Handle special cases for Infinity and NaN.\n if (frac === 0) {\n // Infinity\n f32bits = (sign << 31) | 0x7f800000;\n } else {\n // NaN (we choose a quiet NaN)\n f32bits = (sign << 31) | 0x7fc00000;\n }\n } else {\n // Normalized half-precision number.\n // Adjust exponent from half (bias 15) to float32 (bias 127)\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = (sign << 31) | (newExp << 23) | newFrac;\n }\n\n // Write the 32-bit bit pattern to the shared buffer,\n // then read it as a float32 to return a JavaScript number.\n u32buffer[0] = f32bits;\n return f32buffer[0];\n}\n\n// Convert a number 0..1 to a 0..255 uint\nexport function floatToUint8(v: number): number {\n // Converts from 0..1 float to 0..255 uint8\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n}\n\n// Convert a number -1..1 to a -127..127 int\nexport function floatToSint8(v: number): number {\n // Converts from -1..1 float to -127..127 int8\n return Math.max(-127, Math.min(127, Math.round(v * 127)));\n}\n\n// Convert a 0..255 uint to a 0..1 float\nexport function Uint8ToFloat(v: number): number {\n // Converts from 0..255 uint8 to 0..1 float\n return v / 255;\n}\n\n// Convert a -127..127 int to a -1..1 float\nexport function Sint8ToFloat(v: number): number {\n // Converts from -127..127 int8 to -1..1 float\n return v / 127;\n}\n\n// A simple utility class for caching a fixed number of items\nexport class DataCache {\n // Maximum number of items to cache\n maxItems: number;\n\n // Function to fetch data for a key\n asyncFetch: (key: string) => Promise;\n\n // Function to dispose of data when it is no longer needed\n dispose?: (data: unknown) => void;\n\n // Array of cached items\n items: { key: string; data: unknown }[];\n\n // In-progress fetch promises\n pending: Map>;\n\n // Create a DataCache with a given function that fetches data not in the cache.\n constructor({\n asyncFetch,\n dispose,\n maxItems = 5,\n }: {\n asyncFetch: (key: string) => Promise;\n dispose?: (data: unknown) => void;\n maxItems?: number;\n }) {\n this.asyncFetch = asyncFetch;\n this.dispose = dispose;\n this.maxItems = maxItems;\n this.items = [];\n this.pending = new Map();\n }\n\n has(key: string): boolean {\n return this.items.some((item) => item.key === key);\n }\n\n getImmediate(key: string): unknown | undefined {\n const index = this.items.findIndex((item) => item.key === key);\n if (index >= 0) {\n // Data exists in our cache, move it to the end of the array\n const item = this.items.splice(index, 1)[0];\n this.items.push(item);\n // Return the cached data\n return item.data;\n }\n return undefined;\n }\n\n // Fetch data for the key, returning cached data if available.\n async getFetch(key: string): Promise {\n const immediate = this.getImmediate(key);\n if (immediate !== undefined) {\n return immediate;\n }\n\n let pending = this.pending.get(key);\n if (pending) {\n return pending;\n }\n\n pending = this.asyncFetch(key).then((data) => {\n this.pending.delete(key);\n\n // Add the data to the cache\n this.items.push({ key, data });\n // If the cache is too large, remove the oldest accessed item\n while (this.items.length > this.maxItems) {\n const removed = this.items.shift();\n if (removed && this.dispose) {\n this.dispose(removed.data);\n }\n }\n // Return the fetched data\n return data;\n });\n this.pending.set(key, pending);\n return pending;\n }\n}\n\n// Like Array.map but for objects\nexport function mapObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n const entries = Object.entries(obj).map(([key, value]) => [\n key,\n fn(value, key),\n ]);\n // Returns a new object with the mapped values\n return Object.fromEntries(entries);\n}\n\n// Like Array.map().filter() but for objects.\n// The callback fn() should return undefined to filter out the key.\nexport function mapFilterObject(\n obj: Record,\n fn: (value: unknown, key: string) => unknown,\n): Record {\n // Maps over an object, applying a function to each value and key\n // If no return (or return undefined), the key is not included in the result\n const entries = Object.entries(obj)\n .map(([key, value]) => [key, fn(value, key)])\n .filter(([_, value]) => value !== undefined);\n // Returns a new object with the filtered values\n return Object.fromEntries(entries);\n}\n\n// Recursively finds all ArrayBuffers in an object and returns them as an array\n// to use as transferable objects to send between workers.\nexport function getTransferable(ctx: unknown): Transferable[] {\n const buffers: Transferable[] = [];\n const seen = new Set();\n\n function traverse(obj: unknown) {\n if (obj && typeof obj === \"object\" && !seen.has(obj)) {\n seen.add(obj);\n\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n // Handles TypedArrays and DataView\n buffers.push(obj.buffer as ArrayBuffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n\n traverse(ctx);\n return buffers;\n}\n\n// Create an array of the given size and initialize element with initFunction()\nexport function newArray(\n n: number,\n initFunction: (index: number) => T,\n): T[] {\n // Creates a new array and calls a constructor function for each element with index\n return new Array(n).fill(null).map((_, i) => initFunction(i));\n}\n\n// A free list that has a pool of items of type T, with callbacks\n// for constructing, disposing, and checking if an item is valid for the given args.\nexport class FreeList {\n items: T[];\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n\n constructor({\n // Allocate a new item with the given args\n allocate,\n // Dispose of an item (optional, if GC is enough)\n dispose,\n // Check if an existing item in the list is valid for the given args,\n // allowing you to store heterogeneous items in the list.\n valid,\n }: {\n allocate: (args: Args) => T;\n dispose?: (item: T) => void;\n valid: (item: T, args: Args) => boolean;\n }) {\n this.items = [];\n this.allocate = allocate;\n this.dispose = dispose;\n this.valid = valid;\n }\n\n // Allocate a new item from the free list, first checking if a existing item\n // on the freelist is valid for the given args.\n alloc(args: Args): T {\n while (true) {\n const item = this.items.pop();\n if (!item) {\n // No items in the free list, allocate a new one\n break;\n }\n if (this.valid(item, args)) {\n // Found a valid item, return it\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): found valid item. Reusing...`);\n return item;\n }\n // Item isn't valid for our args, dispose of it and try again\n if (this.dispose) {\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): disposing invalid item.`);\n this.dispose(item);\n }\n }\n // console.log(`FreeList.alloc(${JSON.stringify(args)}): allocating new item`);\n return this.allocate(args);\n }\n\n free(item: T) {\n // Return item to the free list\n this.items.push(item);\n }\n\n disposeAll() {\n // Disposes of all items in the free list\n let item: T | undefined;\n item = this.items.pop();\n while (item) {\n if (this.dispose) {\n this.dispose(item);\n }\n item = this.items.pop();\n }\n }\n}\n\nexport function encodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) {\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n extA[i4] = floatBitsToUint(x);\n extA[i4 + 1] = floatBitsToUint(y);\n extA[i4 + 2] = floatBitsToUint(z);\n extA[i4 + 3] = toHalf(opacity);\n extB[i4] = toHalf(r) | (toHalf(g) << 16);\n extB[i4 + 1] = toHalf(b) | (toHalf(Math.log(scaleX)) << 16);\n extB[i4 + 2] = toHalf(Math.log(scaleY)) | (toHalf(Math.log(scaleZ)) << 16);\n extB[i4 + 3] = encodeQuatOctXy1010R12(quatX, quatY, quatZ, quatW);\n}\n\nexport function decodeExtSplat(\n extArrays: [Uint32Array, Uint32Array],\n index: number,\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n const i4 = index * 4;\n const [extA, extB] = extArrays;\n result.center.x = uintBitsToFloat(extA[i4]);\n result.center.y = uintBitsToFloat(extA[i4 + 1]);\n result.center.z = uintBitsToFloat(extA[i4 + 2]);\n result.opacity = fromHalf(extA[i4 + 3] & 0xffff);\n result.color.r = fromHalf(extB[i4] & 0xffff);\n result.color.g = fromHalf(extB[i4] >>> 16);\n result.color.b = fromHalf(extB[i4 + 1] & 0xffff);\n result.scales.x = Math.exp(fromHalf(extB[i4 + 1] >>> 16));\n result.scales.y = Math.exp(fromHalf(extB[i4 + 2] & 0xffff));\n result.scales.z = Math.exp(fromHalf(extB[i4 + 2] >>> 16));\n decodeQuatOctXy1010R12(extB[i4 + 3], result.quaternion);\n return result;\n}\n\n// Encode a PackedSplat as 4 consecutive Uint32 elements in the packedSplats array.\n// The center coordinates x,y,z are encoded as float16, the scales x,y,z as a\n// logarithmic uint8, rotation as three uint8s representing rotation axis and angle,\n// and RGBA as 4xuint8.\nexport function setPackedSplat(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * opacity : opacity);\n\n // Alternate internal encodings commented out below.\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n // Encode the splat as 4 consecutive Uint32 elements\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] =\n uScaleX | (uScaleY << 8) | (uScaleZ << 16) | (uQuatZ << 24);\n}\n\n// Encode the center coordinates x,y,z in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatCenter(\n packedSplats: Uint32Array,\n index: number,\n x: number,\n y: number,\n z: number,\n) {\n const uCenterX = toHalf(x);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | (uCenterY << 16);\n packedSplats[i4 + 2] = uCenterZ | (packedSplats[i4 + 2] & 0xffff0000);\n}\n\n// Encode the scales x,y,z in the packedSplats Uint32Array, leaving all other fields as is.\nexport function setPackedSplatScales(\n packedSplats: Uint32Array,\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n encoding?: {\n lnScaleMin?: number;\n lnScaleMax?: number;\n },\n) {\n // Allow scales below LN_SCALE_MIN to be encoded as 0, which signifies a 2DGS\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n const uScaleX =\n scaleX < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleX) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleY =\n scaleY < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleY) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n const uScaleZ =\n scaleZ < SCALE_ZERO\n ? 0\n : Math.min(\n 255,\n Math.max(\n 1,\n Math.round((Math.log(scaleZ) - lnScaleMin) * lnScaleScale) + 1,\n ),\n );\n\n const i4 = index * 4;\n packedSplats[i4 + 3] =\n uScaleX |\n (uScaleY << 8) |\n (uScaleZ << 16) |\n (packedSplats[i4 + 3] & 0xff000000);\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempQuaternion = new THREE.Quaternion();\n\n// Encode the rotation quatX, quatY, quatZ, quatW in the packedSplats Uint32Array,\n// leaving all other fields as is.\nexport function setPackedSplatQuat(\n packedSplats: Uint32Array,\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n) {\n const uQuat = encodeQuatOctXy88R8(\n tempQuaternion.set(quatX, quatY, quatZ, quatW),\n );\n // const uQuat = encodeQuatXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n // const uQuat = encodeQuatEulerXyz888(new THREE.Quaternion(quatX, quatY, quatZ, quatW));\n const uQuatX = uQuat & 0xff;\n const uQuatY = (uQuat >>> 8) & 0xff;\n const uQuatZ = (uQuat >>> 16) & 0xff;\n\n const i4 = index * 4;\n packedSplats[i4 + 2] =\n (packedSplats[i4 + 2] & 0x0000ffff) | (uQuatX << 16) | (uQuatY << 24);\n packedSplats[i4 + 3] = (packedSplats[i4 + 3] & 0x00ffffff) | (uQuatZ << 24);\n}\n\n// Encode the RGBA color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgba(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n a: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lodOpacity?: boolean;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n const uA = floatToUint8(encoding?.lodOpacity ? 0.5 * a : a);\n const i4 = index * 4;\n packedSplats[i4] = uR | (uG << 8) | (uB << 16) | (uA << 24);\n}\n\n// Encode the RGB color in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatRgb(\n packedSplats: Uint32Array,\n index: number,\n r: number,\n g: number,\n b: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n },\n) {\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n const uR = floatToUint8((r - rgbMin) / rgbRange);\n const uG = floatToUint8((g - rgbMin) / rgbRange);\n const uB = floatToUint8((b - rgbMin) / rgbRange);\n\n const i4 = index * 4;\n packedSplats[i4] =\n uR | (uG << 8) | (uB << 16) | (packedSplats[i4] & 0xff000000);\n}\n\n// Encode the opacity in the packedSplats Uint32Array, leaving other fields alone.\nexport function setPackedSplatOpacity(\n packedSplats: Uint32Array,\n index: number,\n opacity: number,\n) {\n const uA = floatToUint8(opacity);\n\n const i4 = index * 4;\n packedSplats[i4] = (packedSplats[i4] & 0x00ffffff) | (uA << 24);\n}\n\nconst packedCenter = new THREE.Vector3();\nconst packedScales = new THREE.Vector3();\nconst packedQuaternion = new THREE.Quaternion();\nconst packedColor = new THREE.Color();\nconst packedFields = {\n center: packedCenter,\n scales: packedScales,\n quaternion: packedQuaternion,\n color: packedColor,\n opacity: 0.0,\n};\n\n// Unpack all components of a PackedSplat from the packedSplats Uint32Array into\n// THREE.js vector objects. The returned objects will be reused each call.\nexport function unpackSplat(\n packedSplats: Uint32Array,\n index: number,\n encoding?: {\n rgbMin?: number;\n rgbMax?: number;\n lnScaleMin?: number;\n lnScaleMax?: number;\n lodOpacity?: boolean;\n },\n): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n color: THREE.Color;\n opacity: number;\n} {\n // Returns a static object which is reused each time\n const result = packedFields;\n\n const i4 = index * 4;\n const word0 = packedSplats[i4];\n const word1 = packedSplats[i4 + 1];\n const word2 = packedSplats[i4 + 2];\n const word3 = packedSplats[i4 + 3];\n\n const rgbMin = encoding?.rgbMin ?? 0.0;\n const rgbMax = encoding?.rgbMax ?? 1.0;\n const rgbRange = rgbMax - rgbMin;\n result.color.set(\n rgbMin + ((word0 & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 8) & 0xff) / 255) * rgbRange,\n rgbMin + (((word0 >>> 16) & 0xff) / 255) * rgbRange,\n );\n result.opacity = ((word0 >>> 24) & 0xff) / 255;\n if (encoding?.lodOpacity) {\n result.opacity = 2.0 * result.opacity;\n }\n result.center.set(\n fromHalf(word1 & 0xffff),\n fromHalf((word1 >>> 16) & 0xffff),\n fromHalf(word2 & 0xffff),\n );\n\n const lnScaleMin = encoding?.lnScaleMin ?? LN_SCALE_MIN;\n const lnScaleMax = encoding?.lnScaleMax ?? LN_SCALE_MAX;\n const lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n const uScalesX = word3 & 0xff;\n result.scales.x =\n uScalesX === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesX - 1) * lnScaleScale);\n const uScalesY = (word3 >>> 8) & 0xff;\n result.scales.y =\n uScalesY === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesY - 1) * lnScaleScale);\n const uScalesZ = (word3 >>> 16) & 0xff;\n result.scales.z =\n uScalesZ === 0 ? 0.0 : Math.exp(lnScaleMin + (uScalesZ - 1) * lnScaleScale);\n\n const uQuat = ((word2 >>> 16) & 0xffff) | ((word3 >>> 8) & 0xff0000);\n decodeQuatOctXy88R8(uQuat, result.quaternion);\n // decodeQuatXyz888(uQuat, result.quaternion);\n // decodeQuatEulerXyz888(uQuat, result.quaternion);\n\n return result;\n}\n\n// Compute a texture array size that is large enough to fit numSplats. The most\n// common 2D texture size in WebGL2 is 4096x4096 which only allows for 16M splats,\n// so Spark stores Gsplat data in a 2D texture array, which most platforms support\n// up to 2048x2048x2048 = 8G splats. Allocations that fit within a single 2D texture\n// array layer will be rounded up to fill an entire texture row. Once a texture\n// array layer is filled, the allocation will be rounded up to fill an entire layer.\n// This is done so the entire set of splats can be covered by min/max coords across\n// each dimension.\nexport function getTextureSize(numSplats: number): {\n width: number;\n height: number;\n depth: number;\n maxSplats: number;\n} {\n // Compute a texture array size that is large enough to fit numSplats.\n // The width is always 2048, the height sized to fit the splats but no larger than 2048.\n // The depth is the number of layers needed to fit the splats.\n // maxSplats is computed as the new total available splats that can be stored.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n const maxSplats = width * height * depth;\n return { width, height, depth, maxSplats };\n}\n\nexport function computeMaxSplats(numSplats: number): number {\n // Compute the size of a Gsplat array texture (2048x2048xD) that can fit\n // numSplats splats, and return the total number of splats that can be stored\n // in such a texture.\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width)),\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n}\n\n// Heuristic function to determine if we are running on a mobile device.\nexport function isMobile(): boolean {\n if (navigator.platform.toLowerCase().startsWith(\"win\")) {\n return false;\n }\n if (navigator.maxTouchPoints > 0) {\n // Touch-enabled device, assume it's mobile\n return true;\n }\n return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(\n navigator.userAgent,\n );\n}\n\n// Heuristic function to determine if we are running on an Android device.\n// (does not include Oculus Quest)\nexport function isAndroid(): boolean {\n return (\n /Android/.test(navigator.userAgent) || /Tizen/.test(navigator.userAgent)\n );\n}\n\n// Heuristic function to determine if we are running on an Oculus Quest device.\nexport function isOculus(): boolean {\n return !!navigator.xr && /Oculus/.test(navigator.userAgent);\n}\n\nexport function isQuest2() {\n return isOculus() && /Quest 2/.test(navigator.userAgent);\n}\n\nexport function isIos(): boolean {\n return /iPhone|iPad/.test(navigator.userAgent);\n}\n\nexport function isVisionPro(): boolean {\n return (\n !!navigator.xr &&\n isIos() &&\n /Safari/.test(navigator.userAgent) &&\n isMobile()\n );\n}\n\n// Take an array of RGBA8 encoded pixels and flip them vertically in-place.\n// This is useful for converting between top-left and bottom-left coordinate systems\n// in standard 2D images vs WebGL2.\nexport function flipPixels(\n pixels: Uint8Array,\n width: number,\n height: number,\n): Uint8Array {\n // Flips pixels vertically in-place, returns original array.\n const tempLine = new Uint8Array(width * 4);\n\n // Only need to process half the height since we're swapping\n for (let y = 0; y < height / 2; y++) {\n const topOffset = y * width * 4;\n const bottomOffset = (height - 1 - y) * width * 4;\n\n // Save top line to temp buffer\n tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));\n // Move bottom line to top\n pixels.set(\n pixels.subarray(bottomOffset, bottomOffset + width * 4),\n topOffset,\n );\n // Move saved top line to bottom\n pixels.set(tempLine, bottomOffset);\n }\n return pixels;\n}\n\n// Utility to take an array of RGBA8 encoded pixels and convert them to a\n// PNG-encoded image data URL that can be downloaded to the client.\nexport function pixelsToPngUrl(\n pixels: Uint8Array,\n width: number,\n height: number,\n): string {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Can't get 2d context\");\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n return canvas.toDataURL(\"image/png\");\n}\n\n// Manually clone a THREE.Clock object.\nexport function cloneClock(clock: THREE.Clock): THREE.Clock {\n const newClock = new THREE.Clock(clock.autoStart);\n newClock.startTime = clock.startTime;\n newClock.oldTime = clock.oldTime;\n newClock.elapsedTime = clock.elapsedTime;\n newClock.running = clock.running;\n return newClock;\n}\n\n// Utility to filter out an undefined values from an object.\nexport function omitUndefined(obj: T): Partial {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value !== undefined),\n ) as Partial;\n}\n\n// \"Identity\" vertex shader that just passes through the position.\nexport const IDENT_VERTEX_SHADER = unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n\n// Returns the average position of an array of THREE.Vector3.\nexport function averagePositions(positions: THREE.Vector3[]): THREE.Vector3 {\n const sum = new THREE.Vector3();\n for (const position of positions) {\n sum.add(position);\n }\n return sum.divideScalar(positions.length);\n}\n\n// Returns an \"average\" of an array of THREE.Quaternion objects.\n// Note that this is not a spherical lerp between quaternions but\n// rather an arithmetic mean that is normalized to unit length.\nexport function averageQuaternions(\n quaternions: THREE.Quaternion[],\n): THREE.Quaternion {\n if (quaternions.length === 0) {\n return new THREE.Quaternion();\n }\n const sum = quaternions[0].clone();\n for (let i = 1; i < quaternions.length; i++) {\n if (quaternions[i].dot(quaternions[0]) < 0.0) {\n sum.x -= quaternions[i].x;\n sum.y -= quaternions[i].y;\n sum.z -= quaternions[i].z;\n sum.w -= quaternions[i].w;\n } else {\n sum.x += quaternions[i].x;\n sum.y += quaternions[i].y;\n sum.z += quaternions[i].z;\n sum.w += quaternions[i].w;\n }\n }\n return sum.normalize();\n}\n\n// Compare two coordinates given by matrix1 and matrix2, returning the distance\n// between their origins and the \"coincidence\" of their orientations, defined\n// as the dot product of their \"-z\" axes.\nexport function coinciDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n const direction1 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix1)\n .sub(origin1)\n .normalize();\n const direction2 = new THREE.Vector3(0, 0, -1)\n .applyMatrix4(matrix2)\n .sub(origin2)\n .normalize();\n\n const distance = origin1.distanceTo(origin2);\n const coincidence = direction1.dot(direction2);\n return { distance, coincidence };\n}\n\n// Utility function that returns whether two coordinate system origins\n// given by matrix1 and matrix2 are within a certain maxDistance of each other.\nexport function withinDist({\n matrix1,\n matrix2,\n maxDistance,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n}): boolean {\n const origin1 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix1);\n const origin2 = new THREE.Vector3(0, 0, 0).applyMatrix4(matrix2);\n return origin1.distanceTo(origin2) <= maxDistance;\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined by a maxDistance and a minCoincidence.\nexport function withinCoinciDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoincidence,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoincidence?: number;\n}): boolean {\n const { distance, coincidence } = coinciDist(matrix1, matrix2);\n return (\n distance <= maxDistance &&\n (minCoincidence == null || coincidence >= minCoincidence)\n );\n}\n\n// Compare two coordinate systems given by matrix1 and matrix2, returning the\n// distance between their origins and the \"coorientation\" of their orientations,\n// define as the dot product of their quaternion transforms (flipping their\n// orientation to be on the same hemisphere if necessary).\nexport function coorientDist(matrix1: THREE.Matrix4, matrix2: THREE.Matrix4) {\n const [origin1, rotate1] = [new THREE.Vector3(), new THREE.Quaternion()];\n const [origin2, rotate2] = [new THREE.Vector3(), new THREE.Quaternion()];\n matrix1.decompose(origin1, rotate1, new THREE.Vector3());\n matrix2.decompose(origin2, rotate2, new THREE.Vector3());\n\n const distance = origin1.distanceTo(origin2);\n const coorient = Math.abs(rotate1.dot(rotate2));\n return { distance, coorient };\n}\n\n// Utility function that returns whether two coordinate systems are \"close\"\n// to each other, defined a maxDistance and a minCoorient.\nexport function withinCoorientDist({\n matrix1,\n matrix2,\n maxDistance,\n minCoorient,\n}: {\n matrix1: THREE.Matrix4;\n matrix2: THREE.Matrix4;\n maxDistance: number;\n minCoorient?: number;\n}): boolean {\n const { distance, coorient } = coorientDist(matrix1, matrix2);\n return (\n distance <= maxDistance && (minCoorient == null || coorient >= minCoorient)\n );\n}\n\n// Like Math.sign but with a custom epsilon value.\nexport function epsilonSign(value: number, epsilon = 0.001): number {\n if (Math.abs(value) < epsilon) {\n return 0;\n }\n return Math.sign(value);\n}\n\n// Encode a THREE.Quaternion into a 24-bit integer, converting the xyz coordinates\n// to signed 8-bit integers (w can be derived from xyz), and flipping the sign\n// of the quaternion if necessary to make this possible (q == -q for quaternions).\nexport function encodeQuatXyz888(q: THREE.Quaternion): number {\n const negQuat = q.w < 0.0;\n const iQuatX = floatToSint8(negQuat ? -q.x : q.x);\n const iQuatY = floatToSint8(negQuat ? -q.y : q.y);\n const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);\n const uQuatX = iQuatX & 0xff;\n const uQuatY = iQuatY & 0xff;\n const uQuatZ = iQuatZ & 0xff;\n return uQuatX | (uQuatY << 8) | (uQuatZ << 16);\n}\n\n// Decode a 24-bit integer of the quaternion's xyz coordinates into a THREE.Quaternion.\nexport function decodeQuatXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n const iQuatX = (encoded << 24) >> 24;\n const iQuatY = (encoded << 16) >> 24;\n const iQuatZ = (encoded << 8) >> 24;\n out.set(iQuatX / 127.0, iQuatY / 127.0, iQuatZ / 127.0, 0.0);\n const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;\n out.w = Math.sqrt(Math.max(0.0, 1.0 - dotSelf));\n return out;\n}\n\n// Temporary storage used in `encodeQuatOCtXy88R8` and `decodeQuatOctXy88R8` to\n// avoid allocation new Quaternions and Vector3 instances.\nconst tempNormalizedQuaternion = new THREE.Quaternion();\nconst tempAxis = new THREE.Vector3();\n\n/**\n * Encodes a THREE.Quaternion into a 24‐bit integer.\n *\n * Bit layout (LSB → MSB):\n * - Bits 0–7: quantized U (8 bits)\n * - Bits 8–15: quantized V (8 bits)\n * - Bits 16–23: quantized angle θ (8 bits) from [0,π]\n *\n * This version uses folded octahedral mapping (all inline).\n */\nexport function encodeQuatOctXy88R8(q: THREE.Quaternion): number {\n // Force the minimal representation (q.w >= 0)\n const qnorm = tempNormalizedQuaternion.copy(q).normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnorm.w);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z,\n );\n const axis =\n xyz_norm < 1e-6\n ? tempAxis.set(1, 0, 0)\n : tempAxis.set(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n // const foldAxis = (axis.z < 0);\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n // Fold the lower hemisphere.\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 7 bits (0..127)\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 10 bits (0..1023) ---\n const angleInt = Math.round(theta * (255 / Math.PI));\n\n // Pack into 24 bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16) | (quantV << 8) | quantU;\n}\n\n/**\n * Decodes a 24‐bit encoded quaternion (packed in a number) back to a THREE.Quaternion.\n *\n * Assumes the same bit layout as in encodeQuatOctXy88R8.\n */\nexport function decodeQuatOctXy88R8(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 8‐bit quantU and quantV, and 8‐bit angleInt.\n const quantU = encoded & 0xff; // bits 0–7\n const quantV = (encoded >>> 8) & 0xff; // bits 8–15\n const angleInt = (encoded >>> 16) & 0xff; // bits 16–23\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 255;\n const v_f = quantV / 255;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axis = tempAxis.set(f_x, f_y, f_z).normalize();\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 255) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axis.x * s, axis.y * s, axis.z * s, w);\n return out;\n}\n\n/**\n * Encodes a THREE.Quaternion into a 24‑bit unsigned integer\n * by converting it to Euler angles (roll, pitch, yaw).\n * The Euler angles are assumed to be in radians in the range [-π, π].\n * Each angle is normalized to [0,1] and quantized to 8 bits.\n * Bit layout (LSB→MSB):\n * - Bits 0–7: roll (quantized)\n * - Bits 8–15: pitch (quantized)\n * - Bits 16–23: yaw (quantized)\n */\nexport function encodeQuatEulerXyz888(q: THREE.Quaternion): number {\n // Normalize quaternion to ensure a proper rotation.\n const qNorm = q.clone().normalize();\n\n // Tait–Bryan angles (roll, pitch, yaw)\n const sinr_cosp = 2.0 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);\n const cosr_cosp = 1.0 - 2.0 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);\n const roll = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2.0 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);\n const pitch =\n Math.abs(sinp) >= 1.0 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);\n\n const siny_cosp = 2.0 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);\n const cosy_cosp = 1.0 - 2.0 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);\n const yaw = Math.atan2(siny_cosp, cosy_cosp);\n\n // Map each angle from [-π, π] to [0, 1]\n const normRoll = (roll + Math.PI) / (2 * Math.PI);\n const normPitch = (pitch + Math.PI) / (2 * Math.PI);\n const normYaw = (yaw + Math.PI) / (2 * Math.PI);\n\n // Quantize to 8 bits (0 to 255)\n const rollQ = Math.round(normRoll * 255);\n const pitchQ = Math.round(normPitch * 255);\n const yawQ = Math.round(normYaw * 255);\n\n // Pack into a 24-bit unsigned integer:\n // Bits 0–7: rollQ, Bits 8–15: pitchQ, Bits 16–23: yawQ.\n return (yawQ << 16) | (pitchQ << 8) | rollQ;\n}\n\n/**\n * Decodes a 24‑bit unsigned integer into a THREE.Quaternion\n * by unpacking three 8‑bit values (roll, pitch, yaw) in the range [0,255]\n * and then converting them back to Euler angles in [-π, π] and to a quaternion.\n */\nexport function decodeQuatEulerXyz888(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Unpack 8‑bit values.\n const rollQ = encoded & 0xff;\n const pitchQ = (encoded >>> 8) & 0xff;\n const yawQ = (encoded >>> 16) & 0xff;\n\n // Convert quantized values back to normalized [0,1] values.\n const normRoll = rollQ / 255;\n const normPitch = pitchQ / 255;\n const normYaw = yawQ / 255;\n\n // Map from [0,1] to [-π, π]\n const roll = normRoll * (2 * Math.PI) - Math.PI;\n const pitch = normPitch * (2 * Math.PI) - Math.PI;\n const yaw = normYaw * (2 * Math.PI) - Math.PI;\n\n // Convert Euler angles to quaternion (Tait–Bryan: roll, pitch, yaw).\n const cr = Math.cos(roll * 0.5);\n const sr = Math.sin(roll * 0.5);\n const cp = Math.cos(pitch * 0.5);\n const sp = Math.sin(pitch * 0.5);\n const cy = Math.cos(yaw * 0.5);\n const sy = Math.sin(yaw * 0.5);\n\n out.w = cr * cp * cy + sr * sp * sy;\n out.x = sr * cp * cy - cr * sp * sy;\n out.y = cr * sp * cy + sr * cp * sy;\n out.z = cr * cp * sy - sr * sp * cy;\n out.normalize();\n return out;\n}\n\nexport function encodeQuatOctXy1010R12(\n qx: number,\n qy: number,\n qz: number,\n qw: number,\n): number {\n const qlen = Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);\n // Force the minimal representation (q.w >= 0)\n const qnx = (qw < 0 ? -qx : qx) / qlen;\n const qny = (qw < 0 ? -qy : qy) / qlen;\n const qnz = (qw < 0 ? -qz : qz) / qlen;\n const qnw = (qw < 0 ? -qw : qw) / qlen;\n // Compute the rotation angle θ in [0, π]\n const theta = 2 * Math.acos(qnw);\n // Recover the rotation axis (default to (1,0,0) for near-zero rotation)\n const xyz_norm = Math.sqrt(qnx * qnx + qny * qny + qnz * qnz);\n const axisX = xyz_norm < 1e-6 ? 1 : qnx / xyz_norm;\n const axisY = xyz_norm < 1e-6 ? 0 : qny / xyz_norm;\n const axisZ = xyz_norm < 1e-6 ? 0 : qnz / xyz_norm;\n\n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n const sum = Math.abs(axisX) + Math.abs(axisY) + Math.abs(axisZ);\n let p_x = axisX / sum;\n let p_y = axisY / sum;\n // Fold the lower hemisphere.\n if (axisZ < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n // Remap from [-1,1] to [0,1]\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n // Quantize to 10 bits (0..1023)\n const quantU = Math.round(u_f * 1023);\n const quantV = Math.round(v_f * 1023);\n // --- Angle Quantization: Quantize θ ∈ [0,π] to 12 bits (0..4095) ---\n const angleInt = Math.round(theta * (4095 / Math.PI));\n\n // Pack into 32 bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20) | (quantV << 10) | quantU;\n}\n\nexport function decodeQuatOctXy1010R12(\n encoded: number,\n out: THREE.Quaternion,\n): THREE.Quaternion {\n // Extract 10‐bit quantU and quantV, and 12‐bit angleInt.\n const quantU = encoded & 0x3ff; // bits 0–9\n const quantV = (encoded >>> 10) & 0x3ff; // bits 10–19\n const angleInt = (encoded >>> 20) & 0xfff; // bits 20–31\n\n // Recover u and v in [0,1] then map to [-1,1]\n const u_f = quantU / 1023;\n const v_f = quantV / 1023;\n let f_x = (u_f - 0.5) * 2;\n let f_y = (v_f - 0.5) * 2;\n // Inverse folded mapping: recover z from the constraint |p_x|+|p_y|+z = 1.\n const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));\n const t = Math.max(-f_z, 0);\n f_x += f_x >= 0 ? -t : t;\n f_y += f_y >= 0 ? -t : t;\n const axisLen = Math.sqrt(f_x * f_x + f_y * f_y + f_z * f_z);\n const axisX = axisLen < 1e-6 ? 0 : f_x / axisLen;\n const axisY = axisLen < 1e-6 ? 0 : f_y / axisLen;\n const axisZ = axisLen < 1e-6 ? 0 : f_z / axisLen;\n\n // Decode the angle: θ ∈ [0,π]\n const theta = (angleInt / 4095) * Math.PI;\n const halfTheta = theta * 0.5;\n const s = Math.sin(halfTheta);\n const w = Math.cos(halfTheta);\n // Reconstruct the quaternion from axis-angle: (axis * sin(θ/2), cos(θ/2))\n out.set(axisX * s, axisY * s, axisZ * s, w);\n return out;\n}\n\n// Pack four signed 8-bit values into a single uint32.\nfunction packSint8Bytes(\n b0: number,\n b1: number,\n b2: number,\n b3: number,\n): number {\n const clampedB0 = Math.round(Math.max(-127, Math.min(127, b0 * 127)));\n const clampedB1 = Math.round(Math.max(-127, Math.min(127, b1 * 127)));\n const clampedB2 = Math.round(Math.max(-127, Math.min(127, b2 * 127)));\n const clampedB3 = Math.round(Math.max(-127, Math.min(127, b3 * 127)));\n return (\n (clampedB0 & 0xff) |\n ((clampedB1 & 0xff) << 8) |\n ((clampedB2 & 0xff) << 16) |\n ((clampedB3 & 0xff) << 24)\n );\n}\n\n// Encode an array of 9 signed RGB SH1 coefficients (clamped to [-1,1]) into\n// a pair of uint32 values, where each coefficient is stored as a sint7\nexport function encodeSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n encoding?: {\n sh1Max?: number;\n },\n) {\n const sh1Max = encoding?.sh1Max ?? 1;\n const sh1Scale = 63 / sh1Max;\n\n // Pack sint7 values into 2 x uint32\n const base = index * 2;\n for (let i = 0; i < 9; ++i) {\n const s = sh1Rgb[i] * sh1Scale;\n const value = Math.round(Math.max(-63, Math.min(63, s))) & 0x7f;\n const bitStart = i * 7;\n const bitEnd = bitStart + 7;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh1Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\n// Encode an array of 15 signed RGB SH2 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint8.\nexport function encodeSh2Rgb(\n sh2Array: Uint32Array,\n index: number,\n sh2Rgb: Float32Array,\n encoding?: {\n sh2Max?: number;\n },\n) {\n const sh2Max = encoding?.sh2Max ?? 1;\n const sh2Scale = 1 / sh2Max;\n\n // Pack sint8 values into 4 x uint32\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0] * sh2Scale,\n sh2Rgb[1] * sh2Scale,\n sh2Rgb[2] * sh2Scale,\n sh2Rgb[3] * sh2Scale,\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4] * sh2Scale,\n sh2Rgb[5] * sh2Scale,\n sh2Rgb[6] * sh2Scale,\n sh2Rgb[7] * sh2Scale,\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8] * sh2Scale,\n sh2Rgb[9] * sh2Scale,\n sh2Rgb[10] * sh2Scale,\n sh2Rgb[11] * sh2Scale,\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12] * sh2Scale,\n sh2Rgb[13] * sh2Scale,\n sh2Rgb[14] * sh2Scale,\n 0,\n );\n}\n\n// Encode an array of 21 signed RGB SH3 coefficients (clamped to [-1,1]) into\n// an array of 4 uint32 values, where each coefficient is stored as a sint6.\nexport function encodeSh3Rgb(\n sh3Array: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n encoding?: {\n sh3Max?: number;\n },\n) {\n const sh3Max = encoding?.sh3Max ?? 1;\n const sh3Scale = 31 / sh3Max;\n\n // Pack sint6 values into 4 x uint32\n const base = index * 4;\n for (let i = 0; i < 21; ++i) {\n const s = sh3Rgb[i] * sh3Scale;\n const value = Math.round(Math.max(-31, Math.min(31, s))) & 0x3f;\n const bitStart = i * 6;\n const bitEnd = bitStart + 6;\n\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = (value << bitOffset) & 0xffffffff;\n sh3Array[base + wordStart] |= firstWord;\n\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = (value >>> (32 - bitOffset)) & 0xffffffff;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n}\n\nexport function encodeExtRgb(r: number, g: number, b: number): number {\n const ar = Math.abs(r);\n const ag = Math.abs(g);\n const ab = Math.abs(b);\n const maxAbs = Math.max(ar, ag, ab);\n const base = Math.floor(Math.log2(maxAbs));\n const biasedBase = Math.max(0, Math.min(31, base + 15));\n const divisor = 2 ** (biasedBase - 15) / 255;\n const uR = Math.round(Math.max(0, Math.min(255, ar / divisor)));\n const uG = Math.round(Math.max(0, Math.min(255, ag / divisor)));\n const uB = Math.round(Math.max(0, Math.min(255, ab / divisor)));\n const expSigns =\n (biasedBase << 3) |\n ((r < 0 ? 0x1 : 0) | (g < 0 ? 0x2 : 0) | (b < 0 ? 0x4 : 0));\n return uR | (uG << 8) | (uB << 16) | (expSigns << 24);\n}\n\nexport function decodeExtRgb(encoded: number): THREE.Color {\n const color = packedFields.color;\n const biasedBase = (encoded >>> 27) & 0x1f;\n const divisor = 2 ** (biasedBase - 15) / 255;\n const r = (encoded & 0xff) * divisor;\n const g = ((encoded >>> 8) & 0xff) * divisor;\n const b = ((encoded >>> 16) & 0xff) * divisor;\n color.r = encoded & 0x1000000 ? -r : r;\n color.g = encoded & 0x2000000 ? -g : g;\n color.b = encoded & 0x4000000 ? -b : b;\n return color;\n}\n\nexport function encodeExtSh1Rgb(\n sh1Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n}\n\nexport function encodeExtSh12Rgb(\n sh1Array: Uint32Array,\n sh2Array: Uint32Array,\n index: number,\n sh1Rgb: Float32Array,\n sh2Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 3; ++k) {\n const k3 = k * 3;\n sh1Array[i4 + k] = encodeExtRgb(sh1Rgb[k3], sh1Rgb[k3 + 1], sh1Rgb[k3 + 2]);\n }\n sh1Array[i4 + 3] = encodeExtRgb(sh2Rgb[0], sh2Rgb[1], sh2Rgb[2]);\n for (let k = 1; k < 5; ++k) {\n const k5 = k * 5;\n sh2Array[i4 + (k - 1)] = encodeExtRgb(\n sh2Rgb[k5],\n sh2Rgb[k5 + 1],\n sh2Rgb[k5 + 2],\n );\n }\n}\n\nexport function encodeExt3Rgb(\n sh3ArrayA: Uint32Array,\n sh3ArrayB: Uint32Array,\n index: number,\n sh3Rgb: Float32Array,\n) {\n const i4 = index * 4;\n for (let k = 0; k < 4; ++k) {\n const k3 = k * 3;\n sh3ArrayA[i4 + k] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n for (let k = 4; k < 7; ++k) {\n const k3 = k * 3;\n sh3ArrayB[i4 + (k - 4)] = encodeExtRgb(\n sh3Rgb[k3],\n sh3Rgb[k3 + 1],\n sh3Rgb[k3 + 2],\n );\n }\n}\n\n// Partially decompress a gzip-encoded Uint8Array, returning a Uint8Array of\n// the specified numBytes from the start of the file.\nexport function decompressPartialGzip(\n fileBytes: Uint8Array,\n numBytes: number,\n): Uint8Array {\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n let result: Uint8Array | null = null;\n\n const gunzip = new Gunzip((data, final) => {\n chunks.push(data);\n totalBytes += data.length;\n if (final || totalBytes >= numBytes) {\n const allBytes = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n allBytes.set(chunk, offset);\n offset += chunk.length;\n }\n result = allBytes.slice(0, numBytes);\n }\n });\n\n const CHUNK_SIZE = 1024;\n let offset = 0;\n while (result == null && offset < fileBytes.length) {\n const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);\n gunzip.push(chunk, false);\n offset += CHUNK_SIZE;\n }\n\n if (result == null) {\n gunzip.push(new Uint8Array(), true);\n if (result == null) {\n throw new Error(\"Failed to decompress partial gzip\");\n }\n }\n return result;\n}\n\nexport class GunzipReader {\n fileBytes: Uint8Array;\n chunkBytes: number;\n\n chunks: Uint8Array[];\n totalBytes: number;\n reader: ReadableStreamDefaultReader;\n\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024,\n }: { fileBytes: Uint8Array; chunkBytes?: number }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.chunks = [];\n this.totalBytes = 0;\n\n const ds = new DecompressionStream(\"gzip\");\n const decompressionStream = new Blob([fileBytes]).stream().pipeThrough(ds);\n this.reader = decompressionStream.getReader();\n }\n\n async read(numBytes: number): Promise {\n while (this.totalBytes < numBytes) {\n const { value: chunk, done: readerDone } = await this.reader.read();\n if (readerDone) {\n break;\n }\n\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n }\n\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`,\n );\n }\n\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n}\n\nexport function uploadU32DataTextureRows(\n renderer: THREE.WebGLRenderer,\n texture: THREE.Texture,\n width: number,\n rows: number,\n data: Uint32Array,\n) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n\n const props = renderer.properties.get(texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props?.__webglTexture;\n if (!glTexture) {\n throw new Error(\"texture not found\");\n }\n // Note: instead of saving and restoring the pixelStorei parameters\n // renderer.state.pixelStorei can be used with Three.js >= r184\n const currentFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);\n const currentPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n width,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n data,\n );\n renderer.state.unbindTexture();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, currentFlipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, currentPremultiply);\n}\n","import * as THREE from \"three\";\n\nimport { IDENT_VERTEX_SHADER } from \"../utils\";\nimport { Compilation, type Dyno, type IOTypes } from \"./base\";\n\nexport class DynoProgram {\n graph: Dyno;\n template: DynoProgramTemplate;\n inputs: Record;\n outputs: Record;\n shader: string;\n uniforms: Record;\n updaters: (() => void)[];\n\n constructor({\n graph,\n inputs,\n outputs,\n template,\n consoleLog,\n }: {\n graph: Dyno;\n inputs?: Record;\n outputs?: Record;\n template: DynoProgramTemplate;\n consoleLog?: boolean;\n }) {\n this.graph = graph;\n this.template = template;\n this.inputs = inputs ?? {};\n this.outputs = outputs ?? {};\n\n const compile = new Compilation({ indent: this.template.indent });\n for (const key in this.outputs) {\n if (this.outputs[key]) {\n compile.declares.add(this.outputs[key]);\n }\n }\n const statements = graph.compile({\n inputs: this.inputs,\n outputs: this.outputs,\n compile,\n });\n\n this.shader = template.generate({ globals: compile.globals, statements });\n this.uniforms = compile.uniforms;\n this.updaters = compile.updaters;\n if (consoleLog) {\n console.log(\"*** COMPILED SHADER\", this.shader);\n console.log(\"*** UNIFORMS\", this.uniforms);\n }\n }\n\n prepareMaterial(): THREE.RawShaderMaterial {\n return getMaterial(this);\n }\n\n update() {\n for (const updater of this.updaters) {\n updater();\n }\n }\n}\n\nexport class DynoProgramTemplate {\n before: string;\n between: string;\n after: string;\n indent: string;\n\n constructor(template: string) {\n const globals = template.match(/^([ \\t]*)\\{\\{\\s*GLOBALS\\s*\\}\\}/m);\n const statements = template.match(/^([ \\t]*)\\{\\{\\s*STATEMENTS\\s*\\}\\}/m);\n if (!globals || !statements) {\n throw new Error(\n \"Template must contain {{ GLOBALS }} and {{ STATEMENTS }}\",\n );\n }\n\n this.before = template.substring(0, globals.index);\n this.between = template.substring(\n (globals.index as number) + globals[0].length,\n statements.index,\n );\n this.after = template.substring(\n (statements.index as number) + statements[0].length,\n );\n this.indent = statements[1];\n }\n\n generate({\n globals,\n statements,\n }: { globals: Set; statements: string[] }): string {\n return (\n this.before +\n Array.from(globals).join(\"\\n\\n\") +\n this.between +\n statements.map((s) => this.indent + s).join(\"\\n\") +\n this.after\n );\n }\n}\n\nconst programMaterial = new WeakMap();\n\nfunction getMaterial(program: DynoProgram): THREE.RawShaderMaterial {\n let material = programMaterial.get(program);\n if (material) {\n return material;\n }\n\n material = new THREE.RawShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: IDENT_VERTEX_SHADER,\n fragmentShader: program.shader,\n uniforms: program.uniforms,\n });\n programMaterial.set(program, material);\n return material;\n}\n","import {\n type AllFloatTypes,\n type AllIntTypes,\n type AllSignedTypes,\n type AllValueTypes,\n type BaseType,\n type BoolTypes,\n type FloatTypes,\n type IntTypes,\n type SignedTypes,\n type UintTypes,\n type ValueTypes,\n isAllFloatType,\n isFloatType,\n isIntType,\n isMat2,\n isMat3,\n isMat4,\n isUintType,\n} from \"./types\";\n\nexport type AddOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : never);\n\nexport type SubOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type MulOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = BaseType &\n (A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : A extends \"float\"\n ? B extends AllFloatTypes\n ? B\n : never\n : B extends \"float\"\n ? A extends AllFloatTypes\n ? A\n : never\n : A extends IntTypes\n ? B extends A\n ? A\n : never\n : B extends IntTypes\n ? A extends B\n ? A\n : never\n : A extends UintTypes\n ? B extends A\n ? A\n : never\n : B extends UintTypes\n ? A extends B\n ? A\n : never\n : // Vector * Matrix/Vector\n A extends \"vec2\"\n ? B extends \"vec2\" | \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : B extends \"mat3x2\"\n ? \"vec3\"\n : B extends \"mat4x2\"\n ? \"vec4\"\n : never\n : A extends \"vec3\"\n ? B extends \"mat2x3\"\n ? \"vec2\"\n : B extends \"vec3\" | \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : B extends \"mat4x3\"\n ? \"vec4\"\n : never\n : A extends \"vec4\"\n ? B extends \"mat2x4\"\n ? \"vec2\"\n : B extends \"mat3x4\"\n ? \"vec3\"\n : B extends \"vec4\" | \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Vector\n B extends \"vec2\"\n ? A extends \"mat2\" | \"mat2x2\"\n ? \"vec2\"\n : A extends \"mat2x3\"\n ? \"vec3\"\n : A extends \"mat2x4\"\n ? \"vec4\"\n : never\n : B extends \"vec3\"\n ? A extends \"mat3x2\"\n ? \"vec2\"\n : A extends \"mat3\" | \"mat3x3\"\n ? \"vec3\"\n : A extends \"mat3x4\"\n ? \"vec4\"\n : never\n : B extends \"vec4\"\n ? A extends \"mat4x2\"\n ? \"vec2\"\n : A extends \"mat4x3\"\n ? \"vec3\"\n : A extends \"mat4\" | \"mat4x4\"\n ? \"vec4\"\n : never\n : // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n A extends \"mat2\" | \"mat2x2\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2\"\n : B extends \"mat3x2\"\n ? \"mat3x2\"\n : B extends \"mat4x2\"\n ? \"mat4x2\"\n : never\n : A extends \"mat2x3\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x3\"\n : B extends \"mat3x2\"\n ? \"mat3\"\n : B extends \"mat4x2\"\n ? \"mat4x3\"\n : never\n : A extends \"mat2x4\" // Acols = 2 => Brows = 2\n ? B extends \"mat2\" | \"mat2x2\"\n ? \"mat2x4\"\n : B extends \"mat3x2\"\n ? \"mat3x4\"\n : B extends \"mat4x2\"\n ? \"mat4\"\n : never\n : A extends \"mat3x2\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x2\"\n : B extends \"mat4x3\"\n ? \"mat4x2\"\n : never\n : A extends \"mat3\" | \"mat3x3\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x3\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3\"\n : B extends \"mat4x3\"\n ? \"mat4x3\"\n : never\n : A extends \"mat3x4\" // Acols = 3 => Brows = 3\n ? B extends \"mat2x3\"\n ? \"mat2x4\"\n : B extends \"mat3\" | \"mat3x3\"\n ? \"mat3x4\"\n : B extends \"mat4x3\"\n ? \"mat4\"\n : never\n : A extends \"mat4x2\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2\"\n : B extends \"mat3x4\"\n ? \"mat3x2\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x2\"\n : never\n : A extends \"mat4x3\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x3\"\n : B extends \"mat3x4\"\n ? \"mat3\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4x3\"\n : never\n : A extends \"mat4\" | \"mat4x4\" // Acols = 4 => Brows = 4\n ? B extends \"mat2x4\"\n ? \"mat2x4\"\n : B extends \"mat3x4\"\n ? \"mat3x4\"\n : B extends\n | \"mat4\"\n | \"mat4x4\"\n ? \"mat4\"\n : never\n : never);\n\nexport type DivOutput<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> = AddOutput;\n\nexport type IModOutput<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> = BaseType &\n (A extends B\n ? A\n : A extends \"int\"\n ? B extends IntTypes\n ? B\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : A extends \"uint\"\n ? B extends UintTypes\n ? B\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\n\nexport type ModOutput = BaseType &\n (A extends B ? A : B extends \"float\" ? A : never);\n\nexport type PowOutput = BaseType &\n (A extends B ? A : never);\n\nexport type MinOutput = BaseType &\n (A extends B\n ? A\n : B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MaxOutput = MinOutput<\n A,\n B\n>;\nexport type ClampOutput = BaseType &\n (B extends \"float\"\n ? A extends FloatTypes\n ? A\n : never\n : B extends \"int\"\n ? A extends IntTypes\n ? A\n : never\n : B extends \"uint\"\n ? A extends UintTypes\n ? A\n : never\n : never);\nexport type MixOutput<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> = BaseType &\n (T extends A\n ? A\n : T extends \"float\"\n ? A\n : T extends \"bool\"\n ? A extends \"float\"\n ? A\n : never\n : T extends \"bvec2\"\n ? A extends \"vec2\"\n ? A\n : never\n : T extends \"bvec3\"\n ? A extends \"vec3\"\n ? A\n : never\n : T extends \"bvec4\"\n ? A extends \"vec4\"\n ? A\n : never\n : never);\nexport type StepOutput = BaseType &\n (A extends B ? B : A extends \"float\" ? B : never);\nexport type SmoothstepOutput<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n> = BaseType &\n (A extends B ? (A extends C ? C : A extends \"float\" ? C : never) : never);\n\nexport type IsNanOutput = BaseType &\n (A extends \"float\"\n ? \"bool\"\n : A extends \"vec2\"\n ? \"bvec2\"\n : A extends \"vec3\"\n ? \"bvec3\"\n : A extends \"vec4\"\n ? \"bvec4\"\n : never);\nexport type IsInfOutput = IsNanOutput;\n\n// // Run-time type helper functions\n\nexport function addOutputType(\n a: A,\n b: B,\n operation = \"add\",\n): AddOutput {\n const error = () => {\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n };\n // @ts-ignore\n if (a === b) return a as AddOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as AddOutput;\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return a as AddOutput;\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return b as AddOutput;\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return a as AddOutput;\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return b as AddOutput;\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return a as AddOutput;\n error();\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function subOutputType(\n a: A,\n b: B,\n): SubOutput {\n return addOutputType(a, b, \"sub\");\n}\n\nexport function mulOutputType(\n a: A,\n b: B,\n): MulOutput {\n const error = () => {\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n };\n const result = (value: unknown) => value as MulOutput;\n if (a === \"int\") {\n if (isIntType(b)) return result(b);\n error();\n }\n if (b === \"int\") {\n if (isIntType(a)) return result(a);\n error();\n }\n if (a === \"uint\") {\n if (isUintType(b)) return result(b);\n error();\n }\n if (b === \"uint\") {\n if (isUintType(a)) return result(a);\n error();\n }\n if (a === \"float\") {\n if (isAllFloatType(b)) return result(b);\n error();\n }\n if (b === \"float\") {\n if (isAllFloatType(a)) return result(a);\n error();\n }\n if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {\n // @ts-ignore\n if (a === b) return result(a);\n error();\n }\n // Vector * Matrix/Vector\n if (a === \"vec2\") {\n if (b === \"vec2\" || isMat2(b)) return result(\"vec2\");\n if (b === \"mat3x2\") return result(\"vec3\");\n if (b === \"mat4x2\") return result(\"vec4\");\n error();\n }\n if (a === \"vec3\") {\n if (b === \"mat2x3\") return result(\"vec2\");\n if (b === \"vec3\" || isMat3(b)) return result(\"vec3\");\n if (b === \"mat4x3\") return result(\"vec4\");\n error();\n }\n if (a === \"vec4\") {\n if (b === \"mat2x4\") return result(\"vec2\");\n if (b === \"mat3x4\") return result(\"vec3\");\n if (b === \"vec4\" || isMat4(b)) return result(\"vec4\");\n error();\n }\n // Matrix * Vector\n if (b === \"vec2\") {\n if (isMat2(a)) return result(\"vec2\");\n if (a === \"mat2x3\") return result(\"vec3\");\n if (a === \"mat2x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec3\") {\n if (a === \"mat3x2\") return result(\"vec2\");\n if (isMat3(a)) return result(\"vec3\");\n if (a === \"mat3x4\") return result(\"vec4\");\n error();\n }\n if (b === \"vec4\") {\n if (a === \"mat4x2\") return result(\"vec2\");\n if (a === \"mat4x3\") return result(\"vec3\");\n if (isMat4(a)) return result(\"vec4\");\n error();\n }\n // Matrix * Matrix: mat{Acols}x{Arows} * mat{Bcols}x{Brows} => mat{Bcols}x{Arows}\n if (isMat2(a)) {\n if (isMat2(b)) return result(\"mat2\");\n if (b === \"mat3x2\") return result(\"mat3x2\");\n if (b === \"mat4x2\") return result(\"mat4x2\");\n error();\n }\n if (a === \"mat2x3\") {\n if (isMat2(b)) return result(\"mat2x3\");\n if (b === \"mat3x2\") return result(\"mat3\");\n if (b === \"mat4x2\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat2x4\") {\n if (isMat2(b)) return result(\"mat2x4\");\n if (b === \"mat3x2\") return result(\"mat3x4\");\n if (b === \"mat4x2\") return result(\"mat4\");\n error();\n }\n if (a === \"mat3x2\") {\n if (b === \"mat2x3\") return result(\"mat2\");\n if (isMat3(b)) return result(\"mat3x2\");\n if (b === \"mat4x3\") return result(\"mat4x2\");\n error();\n }\n if (isMat3(a)) {\n if (b === \"mat2x3\") return result(\"mat2x3\");\n if (isMat3(b)) return result(\"mat3\");\n if (b === \"mat4x3\") return result(\"mat4x3\");\n error();\n }\n if (a === \"mat3x4\") {\n if (b === \"mat2x3\") return result(\"mat2x4\");\n if (isMat3(b)) return result(\"mat3x4\");\n if (b === \"mat4x3\") return result(\"mat4\");\n error();\n }\n if (a === \"mat4x2\") {\n if (b === \"mat2x4\") return result(\"mat2\");\n if (b === \"mat3x4\") return result(\"mat3x2\");\n if (isMat4(b)) return result(\"mat4x2\");\n error();\n }\n if (a === \"mat4x3\") {\n if (b === \"mat2x4\") return result(\"mat2x3\");\n if (b === \"mat3x4\") return result(\"mat3\");\n if (isMat4(b)) return result(\"mat4x3\");\n error();\n }\n if (isMat4(a)) {\n if (b === \"mat2x4\") return result(\"mat2x4\");\n if (b === \"mat3x4\") return result(\"mat3x4\");\n if (isMat4(b)) return result(\"mat4\");\n error();\n }\n throw new Error(`Invalid mul types: ${a}, ${b}`);\n}\n\nexport function divOutputType(\n a: A,\n b: B,\n): DivOutput {\n return addOutputType(a, b, \"div\");\n}\n\nexport function imodOutputType(\n a: A,\n b: B,\n): IModOutput {\n // @ts-ignore\n if (a === b) return a as IModOutput;\n if (a === \"int\") {\n if (isIntType(b)) return b as IModOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as IModOutput;\n } else if (a === \"uint\") {\n if (isUintType(b)) return b as IModOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as IModOutput;\n }\n throw new Error(`Invalid imod types: ${a}, ${b}`);\n}\n\nexport function modOutputType(\n a: A,\n b: B,\n): ModOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return a as ModOutput;\n throw new Error(`Invalid mod types: ${a}, ${b}`);\n}\n\nexport function modfOutputType(a: A): A {\n return a;\n}\n\nexport function negOutputType(a: A): A {\n return a;\n}\n\nexport function absOutputType(a: A): A {\n return a;\n}\n\nexport function signOutputType(a: A): A {\n return a;\n}\n\nexport function floorOutputType(a: A): A {\n return a;\n}\n\nexport function ceilOutputType(a: A): A {\n return a;\n}\n\nexport function truncOutputType(a: A): A {\n return a;\n}\n\nexport function roundOutputType(a: A): A {\n return a;\n}\n\nexport function fractOutputType(a: A): A {\n return a;\n}\n\nexport function powOutputType(a: A): A {\n return a;\n}\n\nexport function expOutputType(a: A): A {\n return a;\n}\n\nexport function exp2OutputType(a: A): A {\n return a;\n}\n\nexport function logOutputType(a: A): A {\n return a;\n}\n\nexport function log2OutputType(a: A): A {\n return a;\n}\n\nexport function sqrOutputType(a: A): A {\n return a;\n}\n\nexport function sqrtOutputType(a: A): A {\n return a;\n}\n\nexport function inversesqrtOutputType(a: A): A {\n return a;\n}\n\nexport function minOutputType(\n a: A,\n b: B,\n operation = \"min\",\n): MinOutput {\n // @ts-ignore\n if (a === b) return a as MinOutput;\n if (b === \"float\") {\n if (isFloatType(a)) return a as MinOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as MinOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as MinOutput;\n }\n throw new Error(`Invalid ${operation} types: ${a}, ${b}`);\n}\n\nexport function maxOutputType(\n a: A,\n b: B,\n): MaxOutput {\n return minOutputType(a, b, \"max\");\n}\n\nexport function clampOutputType(\n a: A,\n b: B,\n _c: B,\n): ClampOutput {\n if (b === \"float\") {\n if (isFloatType(a)) return a as ClampOutput;\n } else if (b === \"int\") {\n if (isIntType(a)) return a as ClampOutput;\n } else if (b === \"uint\") {\n if (isUintType(a)) return a as ClampOutput;\n }\n throw new Error(`Invalid clamp types: ${a}, ${b}`);\n}\n\nexport function mixOutputType<\n A extends FloatTypes,\n C extends FloatTypes | BoolTypes,\n>(a: A, b: A, c: C): MixOutput {\n // @ts-ignore\n if (c === a) return a as MixOutput;\n if (c === \"float\") return a as MixOutput;\n if (c === \"bool\" && a === \"float\") return a as MixOutput;\n if (c === \"bvec2\" && a === \"vec2\") return a as MixOutput;\n if (c === \"bvec3\" && a === \"vec3\") return a as MixOutput;\n if (c === \"bvec4\" && a === \"vec4\") return a as MixOutput;\n throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);\n}\n\nexport function stepOutputType(\n a: A,\n b: B,\n): StepOutput {\n // @ts-ignore\n if (a === b || b === \"float\") return b as StepOutput;\n throw new Error(`Invalid step types: ${a}, ${b}`);\n}\n\nexport function smoothstepOutputType<\n A extends FloatTypes,\n B extends FloatTypes,\n C extends FloatTypes,\n>(a: A, b: B, c: C): SmoothstepOutput {\n // @ts-ignore\n if (a === b) {\n if (a === c || a === \"float\") return c as SmoothstepOutput;\n }\n throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);\n}\n\nexport function isNanOutputType(\n a: A,\n operation = \"isNan\",\n): IsNanOutput {\n if (a === \"float\") return \"bool\" as IsNanOutput;\n if (a === \"vec2\") return \"bvec2\" as IsNanOutput;\n if (a === \"vec3\") return \"bvec3\" as IsNanOutput;\n if (a === \"vec4\") return \"bvec4\" as IsNanOutput;\n throw new Error(`Invalid ${operation} types: ${a}`);\n}\n\nexport function isInfOutputType(a: A): IsInfOutput {\n return isNanOutputType(a, \"isInf\");\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AddOutput,\n type ClampOutput,\n type DivOutput,\n type IModOutput,\n type IsInfOutput,\n type IsNanOutput,\n type MaxOutput,\n type MinOutput,\n type MixOutput,\n type ModOutput,\n type MulOutput,\n type SmoothstepOutput,\n type StepOutput,\n type SubOutput,\n absOutputType,\n addOutputType,\n ceilOutputType,\n clampOutputType,\n divOutputType,\n exp2OutputType,\n expOutputType,\n floorOutputType,\n fractOutputType,\n imodOutputType,\n inversesqrtOutputType,\n isInfOutputType,\n isNanOutputType,\n log2OutputType,\n logOutputType,\n maxOutputType,\n minOutputType,\n mixOutputType,\n modOutputType,\n modfOutputType,\n mulOutputType,\n negOutputType,\n powOutputType,\n roundOutputType,\n signOutputType,\n smoothstepOutputType,\n sqrOutputType,\n sqrtOutputType,\n stepOutputType,\n subOutputType,\n truncOutputType,\n} from \"./mathTypes\";\nimport type {\n AllIntTypes,\n AllSignedTypes,\n AllValueTypes,\n BoolTypes,\n FloatTypes,\n SignedTypes,\n ValueTypes,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const add = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Add({ a, b });\nexport const sub = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Sub({ a, b });\nexport const mul = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mul({ a, b });\nexport const div = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Div({ a, b });\nexport const imod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new IMod({ a, b });\nexport const mod = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Mod({ a, b });\nexport const modf = (a: DynoVal) =>\n new Modf({ a }).outputs;\n\nexport const neg = (a: DynoVal): DynoVal =>\n new Neg({ a });\nexport const abs = (a: DynoVal): DynoVal =>\n new Abs({ a });\nexport const sign = (a: DynoVal): DynoVal =>\n new Sign({ a });\nexport const floor = (a: DynoVal): DynoVal =>\n new Floor({ a });\nexport const ceil = (a: DynoVal): DynoVal =>\n new Ceil({ a });\nexport const trunc = (a: DynoVal): DynoVal =>\n new Trunc({ a });\nexport const round = (a: DynoVal): DynoVal =>\n new Round({ a });\nexport const fract = (a: DynoVal): DynoVal =>\n new Fract({ a });\n\nexport const pow = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Pow({ a, b });\nexport const exp = (a: DynoVal): DynoVal =>\n new Exp({ a });\nexport const exp2 = (a: DynoVal): DynoVal =>\n new Exp2({ a });\nexport const log = (a: DynoVal): DynoVal =>\n new Log({ a });\nexport const log2 = (a: DynoVal): DynoVal =>\n new Log2({ a });\nexport const sqr = (a: DynoVal): DynoVal =>\n new Sqr({ a });\nexport const sqrt = (a: DynoVal): DynoVal =>\n new Sqrt({ a });\nexport const inversesqrt = (a: DynoVal): DynoVal =>\n new InverseSqrt({ a });\n\nexport const min = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Min({ a, b });\nexport const max = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Max({ a, b });\nexport const clamp = (\n a: DynoVal,\n min: DynoVal,\n max: DynoVal,\n): DynoVal> => new Clamp({ a, min, max });\nexport const mix = (\n a: DynoVal,\n b: DynoVal,\n t: DynoVal,\n): DynoVal> => new Mix({ a, b, t });\nexport const step = (\n edge: DynoVal,\n x: DynoVal,\n): DynoVal> => new Step({ edge, x });\nexport const smoothstep = (\n edge0: DynoVal,\n edge1: DynoVal,\n x: DynoVal,\n): DynoVal> =>\n new Smoothstep({ edge0, edge1, x });\n\nexport const isNan = (\n a: DynoVal,\n): DynoVal> => new IsNan({ a });\nexport const isInf = (\n a: DynoVal,\n): DynoVal> => new IsInf({ a });\n\nexport class Add<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"sum\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"sum\", outTypeFunc: addOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];\n };\n }\n}\n\nexport class Sub<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"difference\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"difference\", outTypeFunc: subOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];\n };\n }\n}\n\nexport class Mul<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"product\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: mulOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];\n };\n }\n}\n\nexport class Div<\n A extends AllValueTypes,\n B extends AllValueTypes,\n> extends BinaryOp, \"quotient\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"quotient\", outTypeFunc: divOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];\n };\n }\n}\n\nexport class IMod<\n A extends AllIntTypes,\n B extends AllIntTypes,\n> extends BinaryOp, \"remainder\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: imodOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];\n };\n }\n}\n\nexport class Mod extends BinaryOp<\n A,\n B,\n ModOutput,\n \"remainder\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"remainder\", outTypeFunc: modOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Modf extends Dyno<\n { a: A },\n { fract: A; integer: A }\n> {\n constructor({ a }: { a: DynoVal }) {\n const inTypes = { a: valType(a) };\n const outType = modfOutputType(inTypes.a);\n const outTypes = {\n fract: outType,\n integer: outType,\n };\n super({ inTypes, outTypes, inputs: { a } });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];\n };\n }\n}\n\nexport class Neg extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"neg\", outTypeFunc: negOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.neg} = -${inputs.a};`];\n };\n }\n}\n\nexport class Abs extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"abs\", outTypeFunc: absOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.abs} = abs(${inputs.a});`];\n };\n }\n}\n\nexport class Sign extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sign\", outTypeFunc: signOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sign} = sign(${inputs.a});`];\n };\n }\n}\n\nexport class Floor extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"floor\", outTypeFunc: floorOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.floor} = floor(${inputs.a});`];\n };\n }\n}\n\nexport class Ceil extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"ceil\", outTypeFunc: ceilOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.ceil} = ceil(${inputs.a});`];\n };\n }\n}\n\nexport class Trunc extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"trunc\", outTypeFunc: truncOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.trunc} = trunc(${inputs.a});`];\n };\n }\n}\n\nexport class Round extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"round\", outTypeFunc: roundOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.round} = round(${inputs.a});`];\n };\n }\n}\n\nexport class Fract extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"fract\", outTypeFunc: fractOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.fract} = fract(${inputs.a});`];\n };\n }\n}\n\nexport class Pow extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"power\", outTypeFunc: powOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Exp extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp\", outTypeFunc: expOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp} = exp(${inputs.a});`];\n };\n }\n}\n\nexport class Exp2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"exp2\", outTypeFunc: exp2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.exp2} = exp2(${inputs.a});`];\n };\n }\n}\n\nexport class Log extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log\", outTypeFunc: logOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log} = log(${inputs.a});`];\n };\n }\n}\n\nexport class Log2 extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"log2\", outTypeFunc: log2OutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.log2} = log2(${inputs.a});`];\n };\n }\n}\n\nexport class Sqr extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqr\", outTypeFunc: sqrOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];\n };\n }\n}\n\nexport class Sqrt extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"sqrt\", outTypeFunc: sqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.sqrt} = sqrt(${inputs.a});`];\n };\n }\n}\n\nexport class InverseSqrt extends UnaryOp<\n A,\n A,\n \"inversesqrt\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inversesqrt\", outTypeFunc: inversesqrtOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];\n };\n }\n}\n\nexport class Min extends BinaryOp<\n A,\n B,\n MinOutput,\n \"min\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"min\", outTypeFunc: minOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Max extends BinaryOp<\n A,\n B,\n MaxOutput,\n \"max\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"max\", outTypeFunc: maxOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Clamp<\n A extends ValueTypes,\n MinMax extends ValueTypes,\n> extends TrinaryOp, \"clamp\"> {\n constructor({\n a,\n min,\n max,\n }: { a: DynoVal; min: DynoVal; max: DynoVal }) {\n super({\n a,\n b: min,\n c: max,\n outKey: \"clamp\",\n outTypeFunc: clampOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a, b: min, c: max } = inputs;\n return [`${outputs.clamp} = clamp(${a}, ${min}, ${max});`];\n };\n }\n}\n\nexport class Mix<\n A extends FloatTypes,\n T extends FloatTypes | BoolTypes,\n> extends TrinaryOp, \"mix\"> {\n constructor({ a, b, t }: { a: DynoVal; b: DynoVal; t: DynoVal }) {\n super({ a, b, c: t, outKey: \"mix\", outTypeFunc: mixOutputType });\n this.statements = ({ inputs, outputs }) => {\n const { a, b, c: t } = inputs;\n return [`${outputs.mix} = mix(${a}, ${b}, ${t});`];\n };\n }\n}\n\nexport class Step<\n Edge extends FloatTypes,\n X extends FloatTypes,\n> extends BinaryOp, \"step\"> {\n constructor({ edge, x }: { edge: DynoVal; x: DynoVal }) {\n super({\n a: edge,\n b: x,\n outKey: \"step\",\n outTypeFunc: stepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge, b: x } = inputs;\n return [`${outputs.step} = step(${edge}, ${x});`];\n };\n }\n}\n\nexport class Smoothstep<\n X extends FloatTypes,\n Edge extends X | \"float\",\n> extends TrinaryOp<\n Edge,\n Edge,\n X,\n SmoothstepOutput,\n \"smoothstep\"\n> {\n constructor({\n edge0,\n edge1,\n x,\n }: { edge0: DynoVal; edge1: DynoVal; x: DynoVal }) {\n super({\n a: edge0,\n b: edge1,\n c: x,\n outKey: \"smoothstep\",\n outTypeFunc: smoothstepOutputType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: edge0, b: edge1, c: x } = inputs;\n return [`${outputs.smoothstep} = smoothstep(${edge0}, ${edge1}, ${x});`];\n };\n }\n}\n\nexport class IsNan extends UnaryOp<\n A,\n IsNanOutput,\n \"isNan\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isNan\", outTypeFunc: isNanOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isNan} = isNan(${inputs.a});`];\n };\n }\n}\n\nexport class IsInf extends UnaryOp<\n A,\n IsInfOutput,\n \"isInf\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"isInf\", outTypeFunc: isInfOutputType });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.isInf} = isInf(${inputs.a});`];\n };\n }\n}\n","import { BinaryOp, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type AllIntTypes,\n type BoolTypes,\n type IntTypes,\n type ScalarTypes,\n type SimpleTypes,\n type UintTypes,\n type ValueTypes,\n isBoolType,\n isIntType,\n isScalarType,\n isUintType,\n isVector2Type,\n isVector3Type,\n} from \"./types\";\nimport { type DynoVal, valType } from \"./value\";\n\nexport const and = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new And({ a, b });\nexport const or = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Or({ a, b });\nexport const xor = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Xor({ a, b });\nexport const not = (\n a: DynoVal,\n): DynoVal => new Not({ a });\n\nexport const shr = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shr({ a, b });\n\nexport const shl = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new Shl({ a, b });\n\nexport const lessThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThan({ a, b });\nexport const lessThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new LessThanEqual({ a, b });\nexport const greaterThan = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThan({ a, b });\nexport const greaterThanEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new GreaterThanEqual({ a, b });\nexport const equal = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Equal({ a, b });\nexport const notEqual = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new NotEqual({ a, b });\n\nexport const any = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new Any({ a });\nexport const all = (\n a: DynoVal,\n): DynoVal<\"bool\"> => new All({ a });\nexport const select = (\n cond: DynoVal<\"bool\">,\n t: DynoVal,\n f: DynoVal,\n): DynoVal => new Select({ cond, t, f });\n\nexport const compXor = (\n a: DynoVal,\n): DynoVal> => new CompXor({ a });\n\nexport class And extends BinaryOp<\n T,\n T,\n T,\n \"and\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"and\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.and === \"bool\") {\n return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];\n }\n return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];\n };\n }\n}\n\nexport class Or extends BinaryOp<\n T,\n T,\n T,\n \"or\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"or\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.or === \"bool\") {\n return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];\n }\n return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];\n };\n }\n}\n\nexport class Xor extends BinaryOp<\n T,\n T,\n T,\n \"xor\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"xor\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.xor === \"bool\") {\n return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];\n }\n return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];\n };\n }\n}\n\nexport class Not extends UnaryOp<\n T,\n T,\n \"not\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => aType, outKey: \"not\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.not === \"bool\") {\n return [`${outputs.not} = !${inputs.a};`];\n }\n return [`${outputs.not} = not(${inputs.a});`];\n };\n }\n}\n\nexport class LessThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) => compareOutputType(aType, \"lessThan\"),\n outKey: \"lessThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThan === \"bool\") {\n return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];\n }\n return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class LessThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"lessThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"lessThanEqual\"),\n outKey: \"lessThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.lessThanEqual === \"bool\") {\n return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];\n }\n return [\n `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThan extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThan\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThan\"),\n outKey: \"greaterThan\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThan === \"bool\") {\n return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];\n }\n return [\n `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class GreaterThanEqual extends BinaryOp<\n T,\n T,\n CompareOutput,\n \"greaterThanEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({\n a,\n b,\n outTypeFunc: (aType: T, bType: T) =>\n compareOutputType(aType, \"greaterThanEqual\"),\n outKey: \"greaterThanEqual\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.greaterThanEqual === \"bool\") {\n return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];\n }\n return [\n `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`,\n ];\n };\n }\n}\n\nexport class Equal extends BinaryOp<\n T,\n T,\n EqualOutput,\n \"equal\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: equalOutputType, outKey: \"equal\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.equal === \"bool\") {\n return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];\n }\n return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class NotEqual extends BinaryOp<\n T,\n T,\n NotEqualOutput,\n \"notEqual\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: notEqualOutputType, outKey: \"notEqual\" });\n this.statements = ({ inputs, outputs }) => {\n if (this.outTypes.notEqual === \"bool\") {\n return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];\n }\n return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];\n };\n }\n}\n\nexport class Any extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"any\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.any} = any(${inputs.a});`];\n };\n }\n}\n\nexport class All extends UnaryOp {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType: T) => \"bool\", outKey: \"all\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.all} = all(${inputs.a});`];\n };\n }\n}\n\nexport class Select extends TrinaryOp<\n \"bool\",\n T,\n T,\n T,\n \"select\"\n> {\n constructor({\n cond,\n t,\n f,\n }: { cond: DynoVal<\"bool\">; t: DynoVal; f: DynoVal }) {\n super({\n a: cond,\n b: t,\n c: f,\n outKey: \"select\",\n outTypeFunc: (aType: \"bool\", bType: T, cType: T) => bType,\n });\n this.statements = ({ inputs, outputs }) => {\n const { a: cond, b: t, c: f } = inputs;\n return [`${outputs.select} = (${cond}) ? (${t}) : (${f});`];\n };\n }\n}\n\ntype CompareOutput = T extends ScalarTypes\n ? \"bool\"\n : T extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : T extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : T extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction compareOutputType(\n type: T,\n operator: string,\n): CompareOutput {\n if (isScalarType(type)) {\n return \"bool\" as CompareOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as CompareOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as CompareOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as CompareOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype EqualOutput = A extends ScalarTypes\n ? \"bool\"\n : A extends BoolTypes\n ? A\n : A extends \"ivec2\" | \"uvec2\" | \"vec2\"\n ? \"bvec2\"\n : A extends \"ivec3\" | \"uvec3\" | \"vec3\"\n ? \"bvec3\"\n : A extends \"ivec4\" | \"uvec4\" | \"vec4\"\n ? \"bvec4\"\n : never;\n\nfunction equalOutputType(\n type: A,\n operator = \"equal\",\n): EqualOutput {\n if (isScalarType(type)) {\n return \"bool\" as EqualOutput;\n }\n if (isBoolType(type)) {\n return type as EqualOutput;\n }\n if (type === \"ivec2\" || type === \"uvec2\" || type === \"vec2\") {\n return \"bvec2\" as EqualOutput;\n }\n if (type === \"ivec3\" || type === \"uvec3\" || type === \"vec3\") {\n return \"bvec3\" as EqualOutput;\n }\n if (type === \"ivec4\" || type === \"uvec4\" || type === \"vec4\") {\n return \"bvec4\" as EqualOutput;\n }\n throw new Error(`Invalid ${operator} type: ${type}`);\n}\n\ntype NotEqualOutput = EqualOutput;\n\nfunction notEqualOutputType(\n type: A,\n): NotEqualOutput {\n return equalOutputType(type, \"notEqual\");\n}\n\ntype CompXorOutput = A extends BoolTypes\n ? \"bool\"\n : A extends IntTypes\n ? \"int\"\n : A extends UintTypes\n ? \"uint\"\n : never;\n\nfunction compXorOutputType(\n type: A,\n): CompXorOutput {\n if (isBoolType(type)) {\n return \"bool\" as CompXorOutput;\n }\n if (isIntType(type)) {\n return \"int\" as CompXorOutput;\n }\n if (isUintType(type)) {\n return \"uint\" as CompXorOutput;\n }\n throw new Error(`Invalid compXor type: ${type}`);\n}\n\nexport class CompXor extends UnaryOp<\n T,\n CompXorOutput,\n \"compXor\"\n> {\n constructor({ a }: { a: DynoVal }) {\n const outType = compXorOutputType(valType(a));\n super({ a, outTypeFunc: (aType: T) => outType, outKey: \"compXor\" });\n this.statements = ({ inputs, outputs }) => {\n if (isScalarType(this.outTypes.compXor)) {\n return [`${outputs.compXor} = ${inputs.a};`];\n }\n const components = isVector2Type(outType)\n ? [\"x\", \"y\"]\n : isVector3Type(outType)\n ? [\"x\", \"y\", \"z\"]\n : [\"x\", \"y\", \"z\", \"w\"];\n const operands = components.map((c) => `${inputs.a}.${c}`);\n const operator = isBoolType(outType) ? \"^^\" : \"^\";\n return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];\n };\n }\n}\n\nexport class Shr extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shr\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shr} = ${inputs.a} >> ${inputs.b};`];\n };\n }\n}\n\nexport class Shl extends BinaryOp {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outTypeFunc: (aType: T, bType: T) => aType, outKey: \"shl\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.shl} = ${inputs.a} << ${inputs.b};`];\n };\n }\n}\n","import { UnaryOp } from \"./base\";\nimport { type SimpleTypes, typeLiteral } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const bool = (\n value: DynoVal,\n): DynoVal<\"bool\"> => new Bool({ value });\nexport const int = (\n value: DynoVal,\n): DynoVal<\"int\"> => new Int({ value });\nexport const uint = (\n value: DynoVal,\n): DynoVal<\"uint\"> => new Uint({ value });\nexport const float = (\n value: DynoVal,\n): DynoVal<\"float\"> => new Float({ value });\n\nexport const bvec2 = (\n value: DynoVal,\n): DynoVal<\"bvec2\"> => new BVec2({ value });\nexport const bvec3 = (\n value: DynoVal,\n): DynoVal<\"bvec3\"> => new BVec3({ value });\nexport const bvec4 = (\n value: DynoVal,\n): DynoVal<\"bvec4\"> => new BVec4({ value });\n\nexport const ivec2 = (\n value: DynoVal,\n): DynoVal<\"ivec2\"> => new IVec2({ value });\nexport const ivec3 = (\n value: DynoVal,\n): DynoVal<\"ivec3\"> => new IVec3({ value });\nexport const ivec4 = (\n value: DynoVal,\n): DynoVal<\"ivec4\"> => new IVec4({ value });\n\nexport const uvec2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => new UVec2({ value });\nexport const uvec3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => new UVec3({ value });\nexport const uvec4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => new UVec4({ value });\n\nexport const vec2 = <\n T extends \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec2\"> => new Vec2({ value });\nexport const vec3 = <\n T extends \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec4\",\n>(\n value: DynoVal,\n): DynoVal<\"vec3\"> => new Vec3({ value });\nexport const vec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => new Vec4({ value });\n\nexport const mat2 = (\n value: DynoVal,\n): DynoVal<\"mat2\"> => new Mat2({ value });\nexport const mat3 = (\n value: DynoVal,\n): DynoVal<\"mat3\"> => new Mat3({ value });\nexport const mat4 = (\n value: DynoVal,\n): DynoVal<\"mat4\"> => new Mat4({ value });\n\nexport const floatBitsToInt = (value: DynoVal<\"float\">): DynoVal<\"int\"> =>\n new FloatBitsToInt({ value });\nexport const floatBitsToUint = (value: DynoVal<\"float\">): DynoVal<\"uint\"> =>\n new FloatBitsToUint({ value });\nexport const intBitsToFloat = (value: DynoVal<\"int\">): DynoVal<\"float\"> =>\n new IntBitsToFloat({ value });\nexport const uintBitsToFloat = (value: DynoVal<\"uint\">): DynoVal<\"float\"> =>\n new UintBitsToFloat({ value });\n\nexport const packSnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackSnorm2x16({ value });\nexport const unpackSnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackSnorm2x16({ value });\nexport const packUnorm2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackUnorm2x16({ value });\nexport const unpackUnorm2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackUnorm2x16({ value });\n\nexport const packHalf2x16 = (value: DynoVal<\"vec2\">): DynoVal<\"uint\"> =>\n new PackHalf2x16({ value });\nexport const unpackHalf2x16 = (value: DynoVal<\"uint\">): DynoVal<\"vec2\"> =>\n new UnpackHalf2x16({ value });\n\nexport const uintToRgba8 = (value: DynoVal<\"uint\">): DynoVal<\"vec4\"> =>\n new UintToRgba8({ value });\n\nexport class SimpleCast<\n Allowed extends SimpleTypes,\n OutType extends SimpleTypes,\n OutKey extends string,\n> extends UnaryOp {\n constructor({\n value,\n outType,\n outKey,\n }: { value: DynoVal; outType: OutType; outKey: OutKey }) {\n super({ a: value, outTypeFunc: () => outType, outKey });\n this.statements = ({ inputs, outputs }) => [\n `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`,\n ];\n }\n}\n\nexport class Bool extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"bool\",\n \"bool\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"bool\", outKey: \"bool\" });\n }\n}\n\nexport class Int extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"int\",\n \"int\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"int\", outKey: \"int\" });\n }\n}\n\nexport class Uint extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"uint\",\n \"uint\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"uint\", outKey: \"uint\" });\n }\n}\n\nexport class Float extends SimpleCast<\n \"bool\" | \"int\" | \"uint\" | \"float\",\n \"float\",\n \"float\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"int\" | \"uint\" | \"float\"> }) {\n super({ value, outType: \"float\", outKey: \"float\" });\n }\n}\n\nexport class BVec2 extends SimpleCast<\n \"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"bvec2\",\n \"bvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"bvec2\", outKey: \"bvec2\" });\n }\n}\n\nexport class BVec3 extends SimpleCast<\n \"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"bvec3\",\n \"bvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"bvec3\", outKey: \"bvec3\" });\n }\n}\n\nexport class BVec4 extends SimpleCast<\n \"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"bvec4\",\n \"bvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"bool\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"bvec4\", outKey: \"bvec4\" });\n }\n}\n\nexport class IVec2 extends SimpleCast<\n \"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\",\n \"ivec2\",\n \"ivec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"ivec2\", outKey: \"ivec2\" });\n }\n}\n\nexport class IVec3 extends SimpleCast<\n \"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\",\n \"ivec3\",\n \"ivec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"ivec3\", outKey: \"ivec3\" });\n }\n}\n\nexport class IVec4 extends SimpleCast<\n \"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"ivec4\",\n \"ivec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"int\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"ivec4\", outKey: \"ivec4\" });\n }\n}\n\nexport class UVec2 extends SimpleCast<\n \"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\",\n \"uvec2\",\n \"uvec2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec2\" | \"bvec2\" | \"uvec2\" | \"vec2\"> }) {\n super({ value, outType: \"uvec2\", outKey: \"uvec2\" });\n }\n}\n\nexport class UVec3 extends SimpleCast<\n \"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\",\n \"uvec3\",\n \"uvec3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec3\" | \"bvec3\" | \"uvec3\" | \"vec3\"> }) {\n super({ value, outType: \"uvec3\", outKey: \"uvec3\" });\n }\n}\n\nexport class UVec4 extends SimpleCast<\n \"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\",\n \"uvec4\",\n \"uvec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"uint\" | \"ivec4\" | \"bvec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"uvec4\", outKey: \"uvec4\" });\n }\n}\n\nexport class Vec2 extends SimpleCast<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\",\n \"vec2\",\n \"vec2\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec2\" | \"ivec2\" | \"uvec2\" | \"vec2\" | \"vec3\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec2\", outKey: \"vec2\" });\n }\n}\n\nexport class Vec3 extends SimpleCast<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\",\n \"vec3\",\n \"vec3\"\n> {\n constructor({\n value,\n }: {\n value: DynoVal<\n \"float\" | \"bvec3\" | \"ivec3\" | \"uvec3\" | \"vec3\" | \"vec2\" | \"vec4\"\n >;\n }) {\n super({ value, outType: \"vec3\", outKey: \"vec3\" });\n }\n}\n\nexport class Vec4 extends SimpleCast<\n \"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\",\n \"vec4\",\n \"vec4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"bvec4\" | \"ivec4\" | \"uvec4\" | \"vec4\"> }) {\n super({ value, outType: \"vec4\", outKey: \"vec4\" });\n }\n}\n\nexport class Mat2 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat2\",\n \"mat2\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat2\", outKey: \"mat2\" });\n }\n}\n\nexport class Mat3 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat3\",\n \"mat3\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat3\", outKey: \"mat3\" });\n }\n}\n\nexport class Mat4 extends SimpleCast<\n \"float\" | \"mat2\" | \"mat3\" | \"mat4\",\n \"mat4\",\n \"mat4\"\n> {\n constructor({\n value,\n }: { value: DynoVal<\"float\" | \"mat2\" | \"mat3\" | \"mat4\"> }) {\n super({ value, outType: \"mat4\", outKey: \"mat4\" });\n }\n}\n\nexport class FloatBitsToInt extends UnaryOp<\"float\", \"int\", \"int\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"int\", outTypeFunc: () => \"int\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.int} = floatBitsToInt(${inputs.a});`];\n };\n }\n}\n\nexport class FloatBitsToUint extends UnaryOp<\"float\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"float\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];\n };\n }\n}\n\nexport class IntBitsToFloat extends UnaryOp<\"int\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"int\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = intBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class UintBitsToFloat extends UnaryOp<\"uint\", \"float\", \"float\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"float\", outTypeFunc: () => \"float\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];\n };\n }\n}\n\nexport class PackSnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackSnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackUnorm2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackUnorm2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];\n };\n }\n}\n\nexport class PackHalf2x16 extends UnaryOp<\"vec2\", \"uint\", \"uint\"> {\n constructor({ value }: { value: DynoVal<\"vec2\"> }) {\n super({ a: value, outKey: \"uint\", outTypeFunc: () => \"uint\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.uint} = packHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UnpackHalf2x16 extends UnaryOp<\"uint\", \"vec2\", \"vec2\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"vec2\", outTypeFunc: () => \"vec2\" });\n this.statements = ({ inputs, outputs }) => {\n return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];\n };\n }\n}\n\nexport class UintToRgba8 extends UnaryOp<\"uint\", \"vec4\", \"rgba8\"> {\n constructor({ value }: { value: DynoVal<\"uint\"> }) {\n super({ a: value, outKey: \"rgba8\", outTypeFunc: () => \"vec4\" });\n this.statements = ({ inputs, outputs }) => {\n return [\n `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,\n `${outputs.rgba8} = vec4(uRgba) / 255.0;`,\n ];\n };\n }\n}\n","import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from \"./base\";\nimport {\n type FloatTypes,\n type IntTypes,\n type MatFloatTypes,\n type SquareMatTypes,\n type UintTypes,\n type VectorElementType,\n type VectorTypes,\n isFloatType,\n isIntType,\n isUintType,\n vectorDim,\n vectorElementType,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n literalZero,\n valType,\n} from \"./value\";\n\nexport const length = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Length({ a });\nexport const distance = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Distance({ a, b });\nexport const dot = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal<\"float\"> => new Dot({ a, b });\nexport const cross = (\n a: DynoVal<\"vec3\">,\n b: DynoVal<\"vec3\">,\n): DynoVal<\"vec3\"> => new Cross({ a, b });\nexport const normalize = (\n a: DynoVal,\n): DynoVal => new Normalize({ a });\nexport const faceforward = (\n a: DynoVal,\n b: DynoVal,\n c: DynoVal,\n): DynoVal => new FaceForward({ a, b, c });\nexport const reflectVec = (\n incident: DynoVal,\n normal: DynoVal,\n): DynoVal => new ReflectVec({ incident, normal });\nexport const refractVec = (\n incident: DynoVal,\n normal: DynoVal,\n eta: DynoVal<\"float\">,\n): DynoVal => new RefractVec({ incident, normal, eta });\nexport const split = (vector: DynoVal): Split =>\n new Split({ vector });\nexport const combine = >({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n}: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n}): DynoVal => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });\nexport const projectH = (\n a: DynoVal,\n): DynoVal> => new ProjectH({ a });\nexport const extendVec = (\n a: DynoVal,\n b: DynoVal<\"float\">,\n): DynoVal> => new ExtendVec({ a, b });\nexport const swizzle = (\n a: DynoVal,\n select: S,\n): DynoVal>> =>\n new Swizzle({ vector: a, select });\nexport const compMult = (\n a: DynoVal,\n b: DynoVal,\n): DynoVal => new CompMult({ a, b });\nexport const outer = <\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(\n a: DynoVal,\n b: DynoVal,\n): DynoVal> => new Outer({ a, b });\nexport const transpose = (\n a: DynoVal,\n): DynoVal> => new Transpose({ a });\nexport const determinant = (\n a: DynoVal,\n): DynoVal<\"float\"> => new Determinant({ a });\nexport const inverse = (a: DynoVal): DynoVal =>\n new Inverse({ a });\n\nexport class Length extends UnaryOp<\n A,\n \"float\",\n \"length\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => \"float\", outKey: \"length\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.length} = length(${inputs.a});`,\n ];\n }\n}\n\nexport class Distance extends BinaryOp<\n A,\n A,\n \"float\",\n \"distance\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"distance\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Dot extends BinaryOp<\n A,\n A,\n \"float\",\n \"dot\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"dot\", outTypeFunc: (aType, bType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Cross extends BinaryOp<\"vec3\", \"vec3\", \"vec3\", \"cross\"> {\n constructor({ a, b }: { a: DynoVal<\"vec3\">; b: DynoVal<\"vec3\"> }) {\n super({ a, b, outKey: \"cross\", outTypeFunc: (aType, bType) => \"vec3\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Normalize extends UnaryOp<\n A,\n A,\n \"normalize\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outTypeFunc: (aType) => aType, outKey: \"normalize\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.normalize} = normalize(${inputs.a});`,\n ];\n }\n}\n\ntype ProjectHOutput = A extends \"vec3\"\n ? \"vec2\"\n : A extends \"vec4\"\n ? \"vec3\"\n : never;\n\nfunction projectHOutputType(\n type: A,\n): ProjectHOutput {\n if (type === \"vec3\") {\n return \"vec2\" as ProjectHOutput;\n }\n if (type === \"vec4\") {\n return \"vec3\" as ProjectHOutput;\n }\n throw new Error(\"Invalid type\");\n}\n\nexport class ProjectH extends UnaryOp<\n A,\n ProjectHOutput,\n \"projected\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({\n a,\n outTypeFunc: (aType) => projectHOutputType(aType),\n outKey: \"projected\",\n });\n this.statements = ({ inputs, outputs }) => {\n if (this.inTypes.a === \"vec3\") {\n return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];\n }\n if (this.inTypes.a === \"vec4\") {\n return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];\n }\n throw new Error(\"Invalid type\");\n };\n }\n}\n\ntype ExtendVecOutput = A extends \"float\"\n ? \"vec2\"\n : A extends \"vec2\"\n ? \"vec3\"\n : A extends \"vec3\"\n ? \"vec4\"\n : never;\n\nfunction extendVecOutputType(\n type: A,\n): ExtendVecOutput {\n if (type === \"float\") return \"vec2\" as ExtendVecOutput;\n if (type === \"vec2\") return \"vec3\" as ExtendVecOutput;\n if (type === \"vec3\") return \"vec4\" as ExtendVecOutput;\n throw new Error(\"Invalid type\");\n}\n\nexport class ExtendVec extends BinaryOp<\n A,\n \"float\",\n ExtendVecOutput,\n \"extend\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal<\"float\"> }) {\n const type = valType(a);\n const outType = extendVecOutputType(type);\n super({ a, b, outKey: \"extend\", outTypeFunc: () => outType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class FaceForward extends TrinaryOp<\n A,\n A,\n A,\n A,\n \"forward\"\n> {\n constructor({ a, b, c }: { a: DynoVal; b: DynoVal; c: DynoVal }) {\n super({\n a,\n b,\n c,\n outKey: \"forward\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class ReflectVec extends BinaryOp<\n A,\n A,\n A,\n \"reflection\"\n> {\n constructor({\n incident,\n normal,\n }: { incident: DynoVal; normal: DynoVal }) {\n super({\n a: incident,\n b: normal,\n outKey: \"reflection\",\n outTypeFunc: (aType, bType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class RefractVec extends TrinaryOp<\n A,\n A,\n \"float\",\n A,\n \"refraction\"\n> {\n constructor({\n incident,\n normal,\n eta,\n }: { incident: DynoVal; normal: DynoVal; eta: DynoVal<\"float\"> }) {\n super({\n a: incident,\n b: normal,\n c: eta,\n outKey: \"refraction\",\n outTypeFunc: (aType, bType, cType) => aType,\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`,\n ];\n }\n}\n\nexport class CompMult extends BinaryOp<\n A,\n A,\n A,\n \"product\"\n> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"product\", outTypeFunc: (aType, bType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.product} = matrixCompMult(${a}, ${b});`,\n ];\n }\n}\n\ntype OuterOutput<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> = A extends \"vec2\"\n ? B extends \"vec2\"\n ? \"mat2\"\n : B extends \"vec3\"\n ? \"mat3x2\"\n : B extends \"vec4\"\n ? \"mat4x2\"\n : never\n : A extends \"vec3\"\n ? B extends \"vec2\"\n ? \"mat2x3\"\n : B extends \"vec3\"\n ? \"mat3\"\n : B extends \"vec4\"\n ? \"mat4x3\"\n : never\n : A extends \"vec4\"\n ? B extends \"vec2\"\n ? \"mat2x4\"\n : B extends \"vec3\"\n ? \"mat3x4\"\n : B extends \"vec4\"\n ? \"mat4\"\n : never\n : never;\n\nfunction outerOutputType<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n>(aType: A, bType: B): OuterOutput {\n if (aType === \"vec2\") {\n if (bType === \"vec2\") return \"mat2\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x2\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x2\" as OuterOutput;\n }\n if (aType === \"vec3\") {\n if (bType === \"vec2\") return \"mat2x3\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4x3\" as OuterOutput;\n }\n if (aType === \"vec4\") {\n if (bType === \"vec2\") return \"mat2x4\" as OuterOutput;\n if (bType === \"vec3\") return \"mat3x4\" as OuterOutput;\n if (bType === \"vec4\") return \"mat4\" as OuterOutput;\n }\n throw new Error(`Invalid outer type: ${aType}, ${bType}`);\n}\n\nexport class Outer<\n A extends \"vec2\" | \"vec3\" | \"vec4\",\n B extends \"vec2\" | \"vec3\" | \"vec4\",\n> extends BinaryOp, \"outer\"> {\n constructor({ a, b }: { a: DynoVal; b: DynoVal }) {\n super({ a, b, outKey: \"outer\", outTypeFunc: outerOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\ntype TransposeOutput = A extends SquareMatTypes\n ? A\n : A extends \"mat2x3\"\n ? \"mat3x2\"\n : A extends \"mat2x4\"\n ? \"mat4x2\"\n : A extends \"mat3x2\"\n ? \"mat2x3\"\n : A extends \"mat3x4\"\n ? \"mat4x3\"\n : A extends \"mat4x2\"\n ? \"mat2x4\"\n : A extends \"mat4x3\"\n ? \"mat3x4\"\n : never;\n\nfunction transposeOutputType(\n type: A,\n): TransposeOutput {\n if (type === \"mat2\") return \"mat2\" as TransposeOutput;\n if (type === \"mat3\") return \"mat3\" as TransposeOutput;\n if (type === \"mat4\") return \"mat4\" as TransposeOutput;\n if (type === \"mat2x2\") return \"mat2x2\" as TransposeOutput;\n if (type === \"mat2x3\") return \"mat3x2\" as TransposeOutput;\n if (type === \"mat2x4\") return \"mat4x2\" as TransposeOutput;\n if (type === \"mat3x2\") return \"mat2x3\" as TransposeOutput;\n if (type === \"mat3x3\") return \"mat3x3\" as TransposeOutput;\n if (type === \"mat3x4\") return \"mat4x3\" as TransposeOutput;\n if (type === \"mat4x2\") return \"mat2x4\" as TransposeOutput;\n if (type === \"mat4x3\") return \"mat3x4\" as TransposeOutput;\n if (type === \"mat4x4\") return \"mat4x4\" as TransposeOutput;\n throw new Error(`Invalid transpose type: ${type}`);\n}\n\nexport class Transpose extends UnaryOp<\n A,\n TransposeOutput,\n \"transpose\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"transpose\", outTypeFunc: transposeOutputType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.transpose} = transpose(${inputs.a});`,\n ];\n }\n}\n\nexport class Determinant extends UnaryOp<\n A,\n \"float\",\n \"det\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"det\", outTypeFunc: (aType) => \"float\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.det} = determinant(${inputs.a});`,\n ];\n }\n}\n\nexport class Inverse extends UnaryOp<\n A,\n A,\n \"inverse\"\n> {\n constructor({ a }: { a: DynoVal }) {\n super({ a, outKey: \"inverse\", outTypeFunc: (aType) => aType });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.inverse} = inverse(${a});`,\n ];\n }\n}\n\ntype SplitOutTypes = A extends \"vec2\"\n ? { x: \"float\"; y: \"float\"; r: \"float\"; g: \"float\" }\n : A extends \"vec3\"\n ? { x: \"float\"; y: \"float\"; z: \"float\"; r: \"float\"; g: \"float\"; b: \"float\" }\n : A extends \"vec4\"\n ? {\n x: \"float\";\n y: \"float\";\n z: \"float\";\n w: \"float\";\n r: \"float\";\n g: \"float\";\n b: \"float\";\n a: \"float\";\n }\n : A extends \"ivec2\"\n ? { x: \"int\"; y: \"int\"; r: \"int\"; g: \"int\" }\n : A extends \"ivec3\"\n ? { x: \"int\"; y: \"int\"; z: \"int\"; r: \"int\"; g: \"int\"; b: \"int\" }\n : A extends \"ivec4\"\n ? {\n x: \"int\";\n y: \"int\";\n z: \"int\";\n w: \"int\";\n r: \"int\";\n g: \"int\";\n b: \"int\";\n a: \"int\";\n }\n : A extends \"uvec2\"\n ? { x: \"uint\"; y: \"uint\"; r: \"uint\"; g: \"uint\" }\n : A extends \"uvec3\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n }\n : A extends \"uvec4\"\n ? {\n x: \"uint\";\n y: \"uint\";\n z: \"uint\";\n w: \"uint\";\n r: \"uint\";\n g: \"uint\";\n b: \"uint\";\n a: \"uint\";\n }\n : never;\n\nfunction splitOutTypes(type: A): SplitOutTypes {\n const result = (value: unknown) => value as SplitOutTypes;\n switch (type) {\n case \"vec2\":\n return result({ x: \"float\", y: \"float\", r: \"float\", g: \"float\" });\n case \"vec3\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n });\n case \"vec4\":\n return result({\n x: \"float\",\n y: \"float\",\n z: \"float\",\n w: \"float\",\n r: \"float\",\n g: \"float\",\n b: \"float\",\n a: \"float\",\n });\n case \"ivec2\":\n return result({ x: \"int\", y: \"int\", r: \"int\", g: \"int\" });\n case \"ivec3\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n });\n case \"ivec4\":\n return result({\n x: \"int\",\n y: \"int\",\n z: \"int\",\n w: \"int\",\n r: \"int\",\n g: \"int\",\n b: \"int\",\n a: \"int\",\n });\n case \"uvec2\":\n return result({ x: \"uint\", y: \"uint\", r: \"uint\", g: \"uint\" });\n case \"uvec3\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n });\n case \"uvec4\":\n return result({\n x: \"uint\",\n y: \"uint\",\n z: \"uint\",\n w: \"uint\",\n r: \"uint\",\n g: \"uint\",\n b: \"uint\",\n a: \"uint\",\n });\n default:\n throw new Error(`Invalid vector type: ${type}`);\n }\n}\n\nexport class Split extends Dyno<\n { vector: V },\n SplitOutTypes\n> {\n constructor({ vector }: { vector: DynoVal }) {\n const type = valType(vector);\n const inTypes = { vector: type };\n const outTypes = splitOutTypes(inTypes.vector);\n super({ inTypes, outTypes, inputs: { vector } });\n this.statements = ({ inputs, outputs }) => {\n const { x, y, z, w, r, g, b, a } = outputs as unknown as Record<\n string,\n string\n >;\n const { vector } = inputs;\n return [\n x ? `${x} = ${vector}.x;` : null,\n y ? `${y} = ${vector}.y;` : null,\n z ? `${z} = ${vector}.z;` : null,\n w ? `${w} = ${vector}.w;` : null,\n r ? `${r} = ${vector}.r;` : null,\n g ? `${g} = ${vector}.g;` : null,\n b ? `${b} = ${vector}.b;` : null,\n a ? `${a} = ${vector}.a;` : null,\n ].filter(Boolean) as string[];\n };\n }\n}\n\nexport class Combine>\n extends Dyno & { vector: V }, { vector: V }>\n implements HasDynoOut\n{\n constructor({\n vector,\n vectorType,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n }: {\n vector?: DynoVal;\n vectorType?: V;\n x?: DynoVal;\n y?: DynoVal;\n z?: DynoVal;\n w?: DynoVal;\n r?: DynoVal;\n g?: DynoVal;\n b?: DynoVal;\n a?: DynoVal;\n }) {\n if (!vector && !vectorType) {\n throw new Error(\"Either vector or vectorType must be provided\");\n }\n const vType = vectorType ?? valType(vector as DynoVal);\n const elType = vectorElementType(vType);\n const dim = vectorDim(vType);\n\n const inTypes = {\n vector: vType,\n x: elType,\n y: elType,\n r: elType,\n g: elType,\n } as unknown as SplitOutTypes & { vector: V };\n const inputs = { vector, x, y, r, g };\n if (dim >= 3) {\n Object.assign(inTypes, { z: elType, b: elType });\n Object.assign(inputs, { z, b });\n }\n if (dim >= 4) {\n Object.assign(inTypes, { w: elType, a: elType });\n Object.assign(inputs, { w, a });\n }\n // @ts-ignore\n super({ inTypes, outTypes: { vector: vType }, inputs });\n this.statements = ({ inputs, outputs }) => {\n const { vector } = outputs;\n const {\n vector: input,\n x,\n y,\n z,\n w,\n r,\n g,\n b,\n a,\n } = inputs as Record;\n const statements = [\n `${vector}.x = ${x ?? r ?? (input ? `${input}.x` : literalZero(elType))};`,\n `${vector}.y = ${y ?? g ?? (input ? `${input}.y` : literalZero(elType))};`,\n ];\n if (dim >= 3)\n statements.push(\n `${vector}.z = ${z ?? b ?? (input ? `${input}.z` : literalZero(elType))};`,\n );\n if (dim >= 4)\n statements.push(\n `${vector}.w = ${w ?? a ?? (input ? `${input}.w` : literalZero(elType))};`,\n );\n return statements;\n };\n }\n\n dynoOut(): DynoValue {\n return new DynoOutput & { vector: V }, { vector: V }>(\n this,\n \"vector\",\n );\n }\n}\n\ntype SwizzleOutput<\n A extends VectorTypes,\n Len extends number,\n> = A extends FloatTypes\n ? Len extends 1\n ? \"float\"\n : Len extends 2\n ? \"vec2\"\n : Len extends 3\n ? \"vec3\"\n : Len extends 4\n ? \"vec4\"\n : never\n : A extends IntTypes\n ? Len extends 1\n ? \"int\"\n : Len extends 2\n ? \"ivec2\"\n : Len extends 3\n ? \"ivec3\"\n : Len extends 4\n ? \"ivec4\"\n : never\n : A extends UintTypes\n ? Len extends 1\n ? \"uint\"\n : Len extends 2\n ? \"uvec2\"\n : Len extends 3\n ? \"uvec3\"\n : Len extends 4\n ? \"uvec4\"\n : never\n : never;\n\ntype SwizzleSelectLen = S extends Swizzle1Select\n ? 1\n : S extends Swizzle2Select\n ? 2\n : S extends Swizzle3Select\n ? 3\n : S extends Swizzle4Select\n ? 4\n : never;\n\nfunction swizzleOutputType(\n type: A,\n swizzle: S,\n): SwizzleOutput> {\n let result = null;\n if (isFloatType(type)) {\n result =\n swizzle.length === 1\n ? \"float\"\n : swizzle.length === 2\n ? \"vec2\"\n : swizzle.length === 3\n ? \"vec3\"\n : swizzle.length === 4\n ? \"vec4\"\n : null;\n } else if (isIntType(type)) {\n result =\n swizzle.length === 1\n ? \"int\"\n : swizzle.length === 2\n ? \"ivec2\"\n : swizzle.length === 3\n ? \"ivec3\"\n : swizzle.length === 4\n ? \"ivec4\"\n : null;\n } else if (isUintType(type)) {\n result =\n swizzle.length === 1\n ? \"uint\"\n : swizzle.length === 2\n ? \"uvec2\"\n : swizzle.length === 3\n ? \"uvec3\"\n : swizzle.length === 4\n ? \"uvec4\"\n : null;\n }\n if (result == null) {\n throw new Error(`Invalid swizzle: ${swizzle}`);\n }\n return result as SwizzleOutput>;\n}\n\ntype Swizzle1Select = `${\"x\" | \"y\" | \"z\" | \"w\"}|${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle2Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle3Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype Swizzle4Select =\n | `${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}${\"x\" | \"y\" | \"z\" | \"w\"}`\n | `${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}${\"r\" | \"g\" | \"b\" | \"a\"}`;\ntype SwizzleSelect =\n | Swizzle1Select\n | Swizzle2Select\n | Swizzle3Select\n | Swizzle4Select;\n\nexport class Swizzle<\n A extends VectorTypes,\n S extends SwizzleSelect,\n> extends UnaryOp>, \"swizzle\"> {\n constructor({ vector, select }: { vector: DynoVal; select: S }) {\n super({\n a: vector,\n outKey: \"swizzle\",\n outTypeFunc: (aType) => swizzleOutputType(aType, select),\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.swizzle} = ${inputs.a}.${select};`,\n ];\n }\n}\n","import { Dyno, DynoBlock, unindent } from \"./base\";\nimport { float, vec2, vec3, vec4 } from \"./convert\";\nimport { mul } from \"./math\";\nimport { type ValueTypes, isIntType, isUintType, sameSizeUvec } from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n dynoConst,\n valType,\n} from \"./value\";\nimport { combine } from \"./vecmat\";\n\nexport const remapIndex = (\n index: DynoVal<\"int\">,\n from: DynoVal<\"int\">,\n to: DynoVal<\"int\">,\n): DynoVal<\"int\"> => {\n return new DynoRemapIndex({ index, from, to });\n};\nexport const pcgMix = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new PcgMix({ value });\n};\nexport const pcgNext = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgNext({ state });\n};\nexport const pcgHash = (state: DynoVal<\"uint\">): DynoVal<\"uint\"> => {\n return new PcgHash({ state });\n};\nexport const hash = (\n value: DynoVal,\n): DynoVal<\"uint\"> => {\n return new Hash({ value });\n};\nexport const hash2 = (\n value: DynoVal,\n): DynoVal<\"uvec2\"> => {\n return new Hash2({ value });\n};\nexport const hash3 = (\n value: DynoVal,\n): DynoVal<\"uvec3\"> => {\n return new Hash3({ value });\n};\nexport const hash4 = (\n value: DynoVal,\n): DynoVal<\"uvec4\"> => {\n return new Hash4({ value });\n};\nexport const hashFloat = (\n value: DynoVal,\n): DynoVal<\"float\"> => {\n return new HashFloat({ value });\n};\nexport const hashVec2 = (\n value: DynoVal,\n): DynoVal<\"vec2\"> => {\n return new HashVec2({ value });\n};\nexport const hashVec3 = (\n value: DynoVal,\n): DynoVal<\"vec3\"> => {\n return new HashVec3({ value });\n};\nexport const hashVec4 = (\n value: DynoVal,\n): DynoVal<\"vec4\"> => {\n return new HashVec4({ value });\n};\nexport const normalizedDepth = (\n z: DynoVal<\"float\">,\n zNear: DynoVal<\"float\">,\n zFar: DynoVal<\"float\">,\n): DynoVal<\"float\"> => {\n return new NormalizedDepth({ z, zNear, zFar }).outputs.depth;\n};\n\nexport const debugColorHue = (index: DynoVal<\"int\">): DynoVal<\"vec3\"> => {\n return new DebugColorHue({ index });\n};\n\nexport class DynoRemapIndex\n extends Dyno<{ from: \"int\"; to: \"int\"; index: \"int\" }, { index: \"int\" }>\n implements HasDynoOut<\"int\">\n{\n constructor({\n from,\n to,\n index,\n }: { from: DynoVal<\"int\">; to: DynoVal<\"int\">; index: DynoVal<\"int\"> }) {\n super({\n inTypes: { from: \"int\", to: \"int\", index: \"int\" },\n outTypes: { index: \"int\" },\n inputs: { from, to, index },\n statements: ({ inputs, outputs }) => {\n return [\n `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`,\n ];\n },\n });\n }\n\n dynoOut(): DynoValue<\"int\"> {\n return new DynoOutput(this, \"index\");\n }\n}\n\nexport class PcgNext\n extends Dyno<{ state: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal }) {\n const type = valType(state);\n super({\n inTypes: { state: type },\n outTypes: { state: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_next(uint state) {\n return state * 747796405u + 2891336453u;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUint =\n type === \"uint\"\n ? `${inputs.state}`\n : type === \"int\"\n ? `uint(${inputs.state})`\n : `floatBitsToUint(${inputs.state})`;\n return [`${outputs.state} = pcg_next(${toUint});`];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class PcgHash\n extends Dyno<{ state: \"uint\" }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ state }: { state: DynoVal<\"uint\"> }) {\n super({\n inTypes: { state: \"uint\" },\n outTypes: { hash: \"uint\" },\n inputs: { state },\n globals: () => [\n unindent(`\n uint pcg_hash(uint state) {\n uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;\n return (hash >> 22u) ^ hash;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => [\n `${outputs.hash} = pcg_hash(${inputs.state});`,\n ],\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class PcgMix\n extends Dyno<{ value: T }, { state: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n const type = valType(value);\n const tempType = sameSizeUvec(type);\n super({\n inTypes: { value: type },\n outTypes: { state: \"uint\" },\n inputs: { value },\n globals: () => [\n unindent(`\n uint pcg_mix(uint value) {\n return value;\n }\n uint pcg_mix(uvec2 value) {\n return value.x + 0x9e3779b9u * value.y;\n }\n uint pcg_mix(uvec3 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;\n }\n uint pcg_mix(uvec4 value) {\n return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;\n }\n `),\n ],\n statements: ({ inputs, outputs }) => {\n const toUvec = isUintType(type)\n ? `${inputs.value}`\n : isIntType(type)\n ? `${tempType}(${inputs.value})`\n : `floatBitsToUint(${inputs.value})`;\n return [\n `${tempType} bits = ${toUvec};`,\n `${outputs.state} = pcg_mix(bits);`,\n ];\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"state\");\n }\n}\n\nexport class Hash\n extends DynoBlock<{ value: T }, { hash: \"uint\" }>\n implements HasDynoOut<\"uint\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uint\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n return new PcgHash({ state }).outputs;\n },\n });\n }\n dynoOut(): DynoValue<\"uint\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash2\n extends DynoBlock<{ value: T }, { hash: \"uvec2\" }>\n implements HasDynoOut<\"uvec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec2\", x, y }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash3\n extends DynoBlock<{ value: T }, { hash: \"uvec3\" }>\n implements HasDynoOut<\"uvec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec3\", x, y, z }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class Hash4\n extends DynoBlock<{ value: T }, { hash: \"uvec4\" }>\n implements HasDynoOut<\"uvec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"uvec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n let state = new PcgMix({ value: value }).outputs.state;\n state = new PcgNext({ state }).outputs.state;\n const x = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const y = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const z = new PcgHash({ state }).outputs.hash;\n state = new PcgNext({ state }).outputs.state;\n const w = new PcgHash({ state }).outputs.hash;\n return { hash: combine({ vectorType: \"uvec4\", x, y, z, w }) };\n },\n });\n }\n dynoOut(): DynoValue<\"uvec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashFloat\n extends DynoBlock<{ value: T }, { hash: \"float\" }>\n implements HasDynoOut<\"float\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"float\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const word = hash(value);\n return { hash: mul(float(word), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec2\n extends DynoBlock<{ value: T }, { hash: \"vec2\" }>\n implements HasDynoOut<\"vec2\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec2\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash2(value);\n return { hash: mul(vec2(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec2\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec3\n extends DynoBlock<{ value: T }, { hash: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec3\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash3(value);\n return { hash: mul(vec3(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class HashVec4\n extends DynoBlock<{ value: T }, { hash: \"vec4\" }>\n implements HasDynoOut<\"vec4\">\n{\n constructor({ value }: { value: DynoVal }) {\n super({\n inTypes: { value: valType(value) },\n outTypes: { hash: \"vec4\" },\n inputs: { value },\n construct: ({ value }) => {\n if (!value) {\n throw new Error(\"value is required\");\n }\n const words = hash4(value);\n return { hash: mul(vec4(words), dynoConst(\"float\", 1 / 2 ** 32)) };\n },\n });\n }\n dynoOut(): DynoValue<\"vec4\"> {\n return new DynoOutput(this, \"hash\");\n }\n}\n\nexport class NormalizedDepth\n extends Dyno<\n { z: \"float\"; zNear: \"float\"; zFar: \"float\" },\n { depth: \"float\" }\n >\n implements HasDynoOut<\"float\">\n{\n constructor({\n z,\n zNear,\n zFar,\n }: { z: DynoVal<\"float\">; zNear: DynoVal<\"float\">; zFar: DynoVal<\"float\"> }) {\n super({\n inTypes: { z: \"float\", zNear: \"float\", zFar: \"float\" },\n outTypes: { depth: \"float\" },\n inputs: { z, zNear, zFar },\n statements: ({ inputs, outputs }) => [\n `float clamped = clamp(${inputs.z}, ${inputs.zNear}, ${inputs.zFar});`,\n `${outputs.depth} = (log2(clamped + 1.0) - log2(${inputs.zNear} + 1.0)) / (log2(${inputs.zFar} + 1.0) - log2(${inputs.zNear} + 1.0));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"float\"> {\n return new DynoOutput(this, \"depth\");\n }\n}\n\nexport class DebugColorHue\n extends Dyno<{ index: \"int\" }, { color: \"vec3\" }>\n implements HasDynoOut<\"vec3\">\n{\n constructor({ index }: { index: DynoVal<\"int\"> }) {\n super({\n inTypes: { index: \"int\" },\n outTypes: { color: \"vec3\" },\n inputs: { index },\n statements: ({ inputs, outputs }) => [\n `${outputs.color} = debugColorHue(uint(${inputs.index}));`,\n ],\n });\n }\n\n dynoOut(): DynoValue<\"vec3\"> {\n return new DynoOutput(this, \"color\");\n }\n}\n","import { Dyno } from \"./base\";\nimport type { DynoVal } from \"./value\";\n\nexport const transformPos = (\n position: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n translate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformPosition({ position, scale, scales, rotate, translate })\n .outputs.position;\n};\nexport const transformDir = (\n dir: DynoVal<\"vec3\">,\n {\n scale,\n scales,\n rotate,\n }: {\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n },\n): DynoVal<\"vec3\"> => {\n return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;\n};\nexport const transformQuat = (\n quaternion: DynoVal<\"vec4\">,\n { rotate }: { rotate?: DynoVal<\"vec4\"> },\n): DynoVal<\"vec4\"> => {\n return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;\n};\n\nexport class TransformPosition extends Dyno<\n {\n position: \"vec3\";\n scale: \"float\";\n scales: \"vec3\";\n rotate: \"vec4\";\n translate: \"vec3\";\n },\n { position: \"vec3\" }\n> {\n constructor({\n position,\n scale,\n scales,\n rotate,\n translate,\n }: {\n position?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n translate?: DynoVal<\"vec3\">;\n }) {\n super({\n inTypes: {\n position: \"vec3\",\n scale: \"float\",\n scales: \"vec3\",\n rotate: \"vec4\",\n translate: \"vec3\",\n },\n outTypes: { position: \"vec3\" },\n inputs: { position, scale, scales, rotate, translate },\n statements: ({ inputs, outputs }) => {\n const { position } = outputs;\n if (!position) {\n return [];\n }\n const { scale, scales, rotate, translate } = inputs;\n return [\n `${position} = ${inputs.position ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${position} *= ${scale};`,\n !scales ? null : `${position} *= ${scales};`,\n !rotate ? null : `${position} = quatVec(${rotate}, ${position});`,\n !translate ? null : `${position} += ${translate};`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformDir extends Dyno<\n { dir: \"vec3\"; scale: \"float\"; scales: \"vec3\"; rotate: \"vec4\" },\n { dir: \"vec3\" }\n> {\n constructor({\n dir,\n scale,\n scales,\n rotate,\n }: {\n dir?: DynoVal<\"vec3\">;\n scale?: DynoVal<\"float\">;\n scales?: DynoVal<\"vec3\">;\n rotate?: DynoVal<\"vec4\">;\n }) {\n super({\n inTypes: { dir: \"vec3\", scale: \"float\", scales: \"vec3\", rotate: \"vec4\" },\n outTypes: { dir: \"vec3\" },\n inputs: { dir, scale, scales, rotate },\n statements: ({ inputs, outputs }) => {\n const { dir } = outputs;\n if (!dir) {\n return [];\n }\n const { scale, scales, rotate } = inputs;\n return [\n `${dir} = ${inputs.dir ?? \"vec3(0.0, 0.0, 0.0)\"};`,\n !scale ? null : `${dir} *= ${scale};`,\n !scales ? null : `${dir} *= ${scales};`,\n !rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n\nexport class TransformQuaternion extends Dyno<\n { quaternion: \"vec4\"; rotate: \"vec4\" },\n { quaternion: \"vec4\" }\n> {\n constructor({\n quaternion,\n rotate,\n }: { quaternion?: DynoVal<\"vec4\">; rotate?: DynoVal<\"vec4\"> }) {\n super({\n inTypes: { quaternion: \"vec4\", rotate: \"vec4\" },\n outTypes: { quaternion: \"vec4\" },\n inputs: { quaternion, rotate },\n statements: ({ inputs, outputs }) => {\n const { quaternion } = outputs;\n if (!quaternion) {\n return [];\n }\n return [\n `${quaternion} = ${inputs.quaternion ?? \"vec4(0.0, 0.0, 0.0, 1.0)\"};`,\n !rotate\n ? null\n : `${quaternion} = quatQuat(${inputs.rotate}, ${quaternion});`,\n ].filter(Boolean) as string[];\n },\n });\n }\n}\n","// TODO:\n// if, switch, for, comment,\n// arrayIndex, arrayLength,\n\nexport const dynoIf = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoSwitch = () => {\n throw new Error(\"Not implemented\");\n};\nexport const dynoFor = () => {\n throw new Error(\"Not implemented\");\n};\nexport const comment = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayIndex = () => {\n throw new Error(\"Not implemented\");\n};\nexport const arrayLength = () => {\n throw new Error(\"Not implemented\");\n};\n","import { Dyno } from \"./base\";\nimport type {\n AllSamplerTypes,\n IsamplerTypes,\n NormalSamplerTypes,\n Sampler2DArrayTypes,\n Sampler2DTypes,\n Sampler3DTypes,\n SamplerCubeTypes,\n SamplerShadowTypes,\n SamplerTypes,\n UsamplerTypes,\n} from \"./types\";\nimport {\n DynoOutput,\n type DynoVal,\n type DynoValue,\n type HasDynoOut,\n valType,\n} from \"./value\";\n\nexport const textureSize = (\n texture: DynoVal,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TextureSize({ texture, lod });\nexport const texture = (\n texture: DynoVal,\n coord: DynoVal>,\n bias?: DynoVal<\"float\">,\n): DynoVal> => new Texture({ texture, coord, bias });\nexport const texelFetch = (\n texture: DynoVal,\n coord: DynoVal>,\n lod?: DynoVal<\"int\">,\n): DynoVal> => new TexelFetch({ texture, coord, lod });\n\nexport class TextureSize\n extends Dyno<{ texture: T; lod: \"int\" }, { size: TextureSizeType }>\n implements HasDynoOut>\n{\n constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<\"int\"> }) {\n const textureType = valType(texture);\n super({\n inTypes: { texture: textureType, lod: \"int\" },\n outTypes: { size: textureSizeType(textureType) },\n inputs: { texture, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"size\");\n }\n}\n\nexport class Texture\n extends Dyno<\n { texture: T; coord: TextureCoordType; bias: \"float\" },\n { sample: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n bias,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n bias?: DynoVal<\"float\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureCoordType(textureType),\n bias: \"float\",\n },\n outTypes: { sample: textureReturnType(textureType) },\n inputs: { texture, coord, bias },\n statements: ({ inputs, outputs }) => [\n `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : \"\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"sample\");\n }\n}\n\nexport class TexelFetch\n extends Dyno<\n { texture: T; coord: TextureSizeType; lod: \"int\" },\n { texel: TextureReturnType }\n >\n implements HasDynoOut>\n{\n constructor({\n texture,\n coord,\n lod,\n }: {\n texture: DynoVal;\n coord: DynoVal>;\n lod?: DynoVal<\"int\">;\n }) {\n const textureType = valType(texture);\n super({\n inTypes: {\n texture: textureType,\n coord: textureSizeType(textureType),\n lod: \"int\",\n },\n outTypes: { texel: textureReturnType(textureType) },\n inputs: { texture, coord, lod },\n statements: ({ inputs, outputs }) => [\n `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? \"0\"});`,\n ],\n });\n }\n\n dynoOut(): DynoValue> {\n return new DynoOutput(this, \"texel\");\n }\n}\n\ntype TextureSizeType = T extends\n | Sampler2DTypes\n | SamplerCubeTypes\n ? \"ivec2\"\n : T extends Sampler3DTypes | Sampler2DArrayTypes\n ? \"ivec3\"\n : never;\n\nfunction textureSizeType(\n textureType: T,\n): TextureSizeType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DShadow\":\n case \"samplerCubeShadow\":\n return \"ivec2\" as TextureSizeType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DArrayShadow\":\n return \"ivec3\" as TextureSizeType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureCoordType = T extends Sampler2DTypes\n ? \"vec2\"\n : T extends\n | Sampler3DTypes\n | Sampler2DArrayTypes\n | SamplerCubeTypes\n | Sampler2DArrayTypes\n ? \"vec3\"\n : T extends \"samperCubeShadow\" | \"sampler2DArrayShadow\"\n ? \"vec4\"\n : never;\n\nfunction textureCoordType(\n textureType: T,\n): TextureCoordType {\n switch (textureType) {\n case \"sampler2D\":\n case \"usampler2D\":\n case \"isampler2D\":\n return \"vec2\" as TextureCoordType;\n case \"sampler3D\":\n case \"usampler3D\":\n case \"isampler3D\":\n case \"samplerCube\":\n case \"usamplerCube\":\n case \"isamplerCube\":\n case \"sampler2DArray\":\n case \"usampler2DArray\":\n case \"isampler2DArray\":\n case \"sampler2DShadow\":\n return \"vec3\" as TextureCoordType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"vec4\" as TextureCoordType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n\ntype TextureReturnType = T extends SamplerTypes\n ? \"vec4\"\n : T extends UsamplerTypes\n ? \"uvec4\"\n : T extends IsamplerTypes\n ? \"ivec4\"\n : T extends SamplerShadowTypes\n ? \"float\"\n : never;\n\nfunction textureReturnType(\n textureType: T,\n): TextureReturnType {\n switch (textureType) {\n case \"sampler2D\":\n case \"sampler2DArray\":\n case \"sampler3D\":\n case \"samplerCube\":\n case \"sampler2DShadow\":\n return \"vec4\" as TextureReturnType;\n case \"usampler2D\":\n case \"usampler2DArray\":\n case \"usampler3D\":\n case \"usamplerCube\":\n return \"uvec4\" as TextureReturnType;\n case \"isampler2D\":\n case \"isampler2DArray\":\n case \"isampler3D\":\n case \"isamplerCube\":\n return \"ivec4\" as TextureReturnType;\n case \"samplerCubeShadow\":\n case \"sampler2DArrayShadow\":\n return \"float\" as TextureReturnType;\n default:\n throw new Error(`Invalid texture type: ${textureType}`);\n }\n}\n","import { BinaryOp, UnaryOp } from \"./base\";\nimport type { FloatTypes } from \"./types\";\nimport type { DynoVal } from \"./value\";\n\nexport const radians = (\n degrees: DynoVal,\n): DynoVal => new Radians({ degrees });\nexport const degrees = (\n radians: DynoVal,\n): DynoVal => new Degrees({ radians });\n\nexport const sin = (radians: DynoVal): DynoVal =>\n new Sin({ radians });\nexport const cos = (radians: DynoVal): DynoVal =>\n new Cos({ radians });\nexport const tan = (radians: DynoVal): DynoVal =>\n new Tan({ radians });\n\nexport const asin = (sin: DynoVal): DynoVal =>\n new Asin({ sin });\nexport const acos = (cos: DynoVal): DynoVal =>\n new Acos({ cos });\nexport const atan = (tan: DynoVal): DynoVal =>\n new Atan({ tan });\nexport const atan2 = (\n y: DynoVal,\n x: DynoVal,\n): DynoVal => new Atan2({ y, x });\n\nexport const sinh = (x: DynoVal): DynoVal =>\n new Sinh({ x });\nexport const cosh = (x: DynoVal): DynoVal =>\n new Cosh({ x });\nexport const tanh = (x: DynoVal): DynoVal =>\n new Tanh({ x });\n\nexport const asinh = (x: DynoVal): DynoVal =>\n new Asinh({ x });\nexport const acosh = (x: DynoVal): DynoVal =>\n new Acosh({ x });\nexport const atanh = (x: DynoVal): DynoVal =>\n new Atanh({ x });\n\nexport class Radians extends UnaryOp {\n constructor({ degrees }: { degrees: DynoVal }) {\n super({ a: degrees, outTypeFunc: (aType) => aType, outKey: \"radians\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.radians} = radians(${inputs.a});`,\n ];\n }\n}\n\nexport class Degrees extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"degrees\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.degrees} = degrees(${inputs.a});`,\n ];\n }\n}\n\nexport class Sin extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"sin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sin} = sin(${inputs.a});`,\n ];\n }\n}\n\nexport class Cos extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"cos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cos} = cos(${inputs.a});`,\n ];\n }\n}\n\nexport class Tan extends UnaryOp {\n constructor({ radians }: { radians: DynoVal }) {\n super({ a: radians, outTypeFunc: (aType) => aType, outKey: \"tan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tan} = tan(${inputs.a});`,\n ];\n }\n}\n\nexport class Asin extends UnaryOp {\n constructor({ sin }: { sin: DynoVal }) {\n super({ a: sin, outTypeFunc: (aType) => aType, outKey: \"asin\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asin} = asin(${inputs.a});`,\n ];\n }\n}\n\nexport class Acos extends UnaryOp {\n constructor({ cos }: { cos: DynoVal }) {\n super({ a: cos, outTypeFunc: (aType) => aType, outKey: \"acos\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acos} = acos(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan extends UnaryOp {\n constructor({ tan }: { tan: DynoVal }) {\n super({ a: tan, outTypeFunc: (aType) => aType, outKey: \"atan\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan} = atan(${inputs.a});`,\n ];\n }\n}\n\nexport class Atan2 extends BinaryOp {\n constructor({ y, x }: { y: DynoVal; x: DynoVal }) {\n super({\n a: y,\n b: x,\n outTypeFunc: (aType, bType) => aType,\n outKey: \"atan2\",\n });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`,\n ];\n }\n}\n\nexport class Sinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"sinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.sinh} = sinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Cosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"cosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.cosh} = cosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Tanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"tanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.tanh} = tanh(${inputs.a});`,\n ];\n }\n}\n\nexport class Asinh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"asinh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.asinh} = asinh(${inputs.a});`,\n ];\n }\n}\n\nexport class Acosh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"acosh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.acosh} = acosh(${inputs.a});`,\n ];\n }\n}\n\nexport class Atanh extends UnaryOp {\n constructor({ x }: { x: DynoVal }) {\n super({ a: x, outTypeFunc: (aType) => aType, outKey: \"atanh\" });\n this.statements = ({ inputs, outputs }) => [\n `${outputs.atanh} = atanh(${inputs.a});`,\n ];\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n target = uvec4(0u, 0u, 0u, 0u);\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out vec4 target3;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial target to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize depthTarget to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nlayout(location = 0) out uvec4 target;\nlayout(location = 1) out uvec4 target2;\nlayout(location = 2) out vec4 target3;\n// layout(location = 0) out vec4 target3;\n// layout(location = 1) out uvec4 target;\n// layout(location = 2) out uvec4 target2;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n // Initial targets to \"null\" splat\n target = uvec4(0u, 0u, 0u, 0u);\n target2 = uvec4(0u, 0u, 0u, 0u);\n\n // Initialize target3 to +infinity\n target3 = floatToVec4(1.0 / 0.0);\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n }\n}\n","precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int _index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n","const float LN_SCALE_MIN = -12.0;\nconst float LN_SCALE_MAX = 9.0;\n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nfloat gaussianKernelPower(float z2, float k) {\n if (k == 1.0) {\n return z2;\n } else if (k == 2.0) {\n return z2 * z2;\n }\n return pow(max(0.0, z2), k);\n}\n\nfloat gaussianKernelScale(float maxStdDev, float k) {\n if (k == 1.0) {\n return maxStdDev;\n } else if (k == 2.0) {\n return sqrt(maxStdDev);\n }\n return pow(max(0.0, maxStdDev), 1.0 / k);\n}\n\nfloat gaussianKernel(float z2, float k) {\n return exp(-0.5 * gaussianKernelPower(z2, k));\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\n// Encode a quaternion (vec4) into a 24‐bit uint with folded octahedral mapping.\nuint encodeQuatOctXy88R8(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 8 bits (0 to 255)\n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 8 bits (0 to 255)\n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n // Pack bits: bits [0–7]: quantU, [8–15]: quantV, [16–23]: angleInt.\n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\n// Decode a 24‐bit encoded uint into a quaternion (vec4) using the folded octahedral inverse.\nvec4 decodeQuatOctXy88R8(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0xFFu); // bits 0–7\n uint quantV = (encoded >> 8u) & uint(0xFFu); // bits 8–15\n uint angleInt = encoded >> 16u; // bits 16–23\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\nuint encodeQuatOctXy1010R12(vec4 q) {\n // Ensure minimal representation: flip if q.w is negative.\n if (q.w < 0.0) {\n q = -q;\n }\n // Compute rotation angle: θ = 2 * acos(q.w) ∈ [0,π]\n float halfTheta = acos(q.w);\n float theta = 2.0 * halfTheta;\n float s = sin(halfTheta);\n // Recover the rotation axis; use a default if nearly zero rotation.\n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n // --- Folded Octahedral Mapping (inline) ---\n // Compute p = (axis.x, axis.y) / (|axis.x|+|axis.y|+|axis.z|)\n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n // If axis.z < 0, fold the mapping.\n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n // Remap from [-1,1] to [0,1]\n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n // Quantize to 10 bits (0 to 1023)\n uint quantU = uint(clamp(round(u_f * 1023.0), 0.0, 1023.0));\n uint quantV = uint(clamp(round(v_f * 1023.0), 0.0, 1023.0));\n \n // --- Angle Quantization ---\n // Quantize θ ∈ [0,π] to 12 bits (0 to 4095)\n uint angleInt = uint(clamp(round((theta / PI) * 4095.0), 0.0, 4095.0));\n \n // Pack bits: bits [0–9]: quantU, [10–19]: quantV, [20–31]: angleInt.\n return (angleInt << 20u) | (quantV << 10u) | quantU;\n}\n\nvec4 decodeQuatOctXy1010R12(uint encoded) {\n // Extract the fields.\n uint quantU = encoded & uint(0x3FFu); // bits 0–9\n uint quantV = (encoded >> 10u) & uint(0x3FFu); // bits 10–19\n uint angleInt = encoded >> 20u; // bits 20–31\n\n // Recover u and v in [0,1], then map to [-1,1].\n float u_f = float(quantU) / 1023.0;\n float v_f = float(quantV) / 1023.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n // Decode the angle θ ∈ [0,π].\n float theta = (float(angleInt) / 4095.0) * PI;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplatEncoding(\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n // uint uQuat = encodeQuatXyz888(quaternion);\n // uint uQuat = encodeQuatEulerXyz888(quaternion);\n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n // Encode scales in three uint8s, where 0=>0.0 and 1..=255 stores log scale\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = 254.0 / (lnScaleMax - lnScaleMin);\n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - lnScaleMin) * lnScaleScale, 0.0, 254.0))) + 1u\n );\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\n// Pack a Gsplat into a uvec4\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n return packSplatEncoding(center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nvoid unpackSplatEncoding(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float lnScaleScale = (lnScaleMax - lnScaleMin) / 254.0;\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.x - 1u) * lnScaleScale),\n (uScales.y == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.y - 1u) * lnScaleScale),\n (uScales.z == 0u) ? 0.0 : exp(lnScaleMin + float(uScales.z - 1u) * lnScaleScale)\n );\n\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n // quaternion = decodeQuatXyz888(uQuat);\n // quaternion = decodeQuatEulerXyz888(uQuat);\n}\n\n// Unpack a Gsplat from a uvec4\nvoid unpackSplat(uvec4 packedData, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n}\n\nuvec4 packSplatCovEncoding(\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax\n) {\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n vec3 encRgb = (rgba.rgb - vec3(rgbMin)) / (rgbMax - rgbMin);\n uvec4 uRgba = uvec4(round(clamp(vec4(encRgb, rgba.a) * 255.0, 0.0, 255.0)));\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 255.0 / (2.0 * (lnScaleMax - lnScaleMin));\n uvec3 uXxyyzz = uvec3(round(clamp((log(xxyyzz) - 2.0 * lnScaleMin) * diagScale, 0.0, 255.0)));\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n ivec3 iXyxzyzCor = ivec3(round(xyxzyzCor * 127.0));\n\n // Pack it all into 4 x uint32\n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) |\n ((uint(iXyxzyzCor.y) & 0xffu) << 16u) |\n ((uint(iXyxzyzCor.z) & 0xffu) << 24u);\n uint word3 =\n uXxyyzz.x | (uXxyyzz.y << 8u) | (uXxyyzz.z << 16u) |\n ((uint(iXyxzyzCor.x) & 0xffu) << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplatCovEncoding(uvec4 packedData, out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz, vec4 rgbMinMaxLnScaleMinMax) {\n uint word0 = packedData.x, word1 = packedData.y, word2 = packedData.z, word3 = packedData.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n float rgbMin = rgbMinMaxLnScaleMinMax.x;\n float rgbMax = rgbMinMaxLnScaleMinMax.y;\n rgba = (vec4(uRgba) / 255.0);\n rgba.rgb = rgba.rgb * (rgbMax - rgbMin) + rgbMin;\n\n center = vec3(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu).x\n );\n\n uvec3 uXxyyzz = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n ivec3 iXyxzyzCor = ivec3(int(word3) >> 24, int(word2 << 8u) >> 24, int(word2) >> 24);\n\n float lnScaleMin = rgbMinMaxLnScaleMinMax.z;\n float lnScaleMax = rgbMinMaxLnScaleMinMax.w;\n float diagScale = 2.0 * (lnScaleMax - lnScaleMin) / 255.0;\n xxyyzz = exp(2.0 * lnScaleMin + vec3(uXxyyzz) * diagScale);\n\n vec3 xyxzyzCor = vec3(iXyxzyzCor) / 127.0;\n xyxzyz = xyxzyzCor * vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExtCov(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec4 rgba, vec3 xxyyzz, vec3 xyxzyz\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, rgba.b));\n packedData2.x = packHalf2x16(rgba.rg);\n\n vec3 xyxzyzCor = vec3(\n clamp(xyxzyz.x / sqrt(xxyyzz.x * xxyyzz.y), -1.0, 1.0),\n clamp(xyxzyz.y / sqrt(xxyyzz.x * xxyyzz.z), -1.0, 1.0),\n clamp(xyxzyz.z / sqrt(xxyyzz.y * xxyyzz.z), -1.0, 1.0)\n );\n xyxzyzCor = sign(xyxzyzCor) * clamp(log(abs(xyxzyzCor)), -100.0, -0.0000001);\n xxyyzz = log(xxyyzz);\n\n packedData2.y = packHalf2x16(vec2(xxyyzz.x, xxyyzz.y));\n packedData2.z = packHalf2x16(vec2(xxyyzz.z, xyxzyzCor.x));\n packedData2.w = packHalf2x16(vec2(xyxzyzCor.y, xyxzyzCor.z));\n}\n\nvoid unpackSplatExtCov(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec4 rgba, out vec3 xxyyzz, out vec3 xyxzyz\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n\n vec2 ab = unpackHalf2x16(packedData.w);\n vec2 rg = unpackHalf2x16(packedData2.x);\n rgba = vec4(rg, ab.y, ab.x);\n\n vec2 xxyy = unpackHalf2x16(packedData2.y);\n vec2 zzxy = unpackHalf2x16(packedData2.z);\n vec2 xzyz = unpackHalf2x16(packedData2.w);\n xxyyzz = exp(vec3(xxyy.x, xxyy.y, zzxy.x));\n xyxzyz = vec3(zzxy.y, xzyz.x, xzyz.y);\n xyxzyz = -sign(xyxzyz) * exp(-abs(xyxzyz));\n xyxzyz *= vec3(\n sqrt(xxyyzz.x * xxyyzz.y),\n sqrt(xxyyzz.x * xxyyzz.z),\n sqrt(xxyyzz.y * xxyyzz.z)\n );\n}\n\nvoid packSplatExt(\n out uvec4 packedData, out uvec4 packedData2,\n vec3 center, vec3 scales, vec4 quaternion, vec4 rgba\n) {\n packedData.x = floatBitsToUint(center.x);\n packedData.y = floatBitsToUint(center.y);\n packedData.z = floatBitsToUint(center.z);\n packedData.w = packHalf2x16(vec2(rgba.a, 0.0));\n\n packedData2.x = packHalf2x16(rgba.rg);\n packedData2.y = packHalf2x16(vec2(rgba.b, log(scales.x)));\n packedData2.z = packHalf2x16(log(scales.yz));\n packedData2.w = encodeQuatOctXy1010R12(quaternion);\n}\n\nvec4 unpackSplatExtCenterAlpha(uvec4 packedData) {\n return vec4(\n uintBitsToFloat(packedData.x),\n uintBitsToFloat(packedData.y),\n uintBitsToFloat(packedData.z),\n unpackHalf2x16(packedData.w).x\n );\n}\n\nfloat unpackSplatExtAlpha(uvec4 packedData) {\n return unpackHalf2x16(packedData.w).x;\n}\n\nvoid unpackSplatExt(\n uvec4 packedData, uvec4 packedData2,\n out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba\n) {\n center.x = uintBitsToFloat(packedData.x);\n center.y = uintBitsToFloat(packedData.y);\n center.z = uintBitsToFloat(packedData.z);\n rgba.a = unpackHalf2x16(packedData.w).x;\n\n rgba.rg = unpackHalf2x16(packedData2.x);\n vec2 split = unpackHalf2x16(packedData2.y);\n rgba.b = split.x;\n scales.x = exp(split.y);\n scales.yz = exp(unpackHalf2x16(packedData2.z));\n quaternion = decodeQuatOctXy1010R12(packedData2.w);\n}\n\nuint encodeExtRgb(vec3 rgb) {\n vec3 absRgb = abs(rgb);\n float maxAbs = max(absRgb.r, max(absRgb.g, absRgb.b));\n\n int base = clamp(int(floor(log2(maxAbs))) + 15, 0, 31);\n float divisor = exp2(float(base - 15)) / 255.0;\n\n uvec3 uRgb = uvec3(round(clamp(absRgb / divisor, 0.0, 255.0)));\n uint expSigns = (uint(base) << 3u) | ((rgb.r < 0.0 ? 0x1u : 0u) | (rgb.g < 0.0 ? 0x2u : 0u) | (rgb.b < 0.0 ? 0x4u : 0u));\n return uRgb.r | (uRgb.g << 8u) | (uRgb.b << 16u) | (expSigns << 24u);\n}\n\nvec3 decodeExtRgb(uint encoded) {\n uint biasedBase = (encoded >> 27u) & 0x1fu;\n float divisor = exp2(float(int(biasedBase) - 15)) / 255.0;\n\n vec3 rgb = vec3(uvec3(encoded & 0xffu, (encoded >> 8u) & 0xffu, (encoded >> 16u) & 0xffu));\n rgb *= divisor;\n\n return vec3(\n ((encoded & 0x1000000u) != 0u) ? -rgb.r : rgb.r,\n ((encoded & 0x2000000u) != 0u) ? -rgb.g : rgb.g,\n ((encoded & 0x4000000u) != 0u) ? -rgb.b : rgb.b\n );\n}\n\n// Rotate vector v by quaternion q\nvec3 quatVec(vec4 q, vec3 v) {\n // Rotate vector v by quaternion q\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\n// Apply quaternion q1 after quaternion q2\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 quaternionToMatrix(vec4 q) {\n return mat3(\n (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n (2.0 * (q.x * q.y + q.w * q.z)),\n (2.0 * (q.x * q.z - q.w * q.y)),\n (2.0 * (q.x * q.y - q.w * q.z)),\n (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n (2.0 * (q.y * q.z + q.w * q.x)),\n (2.0 * (q.x * q.z + q.w * q.y)),\n (2.0 * (q.y * q.z - q.w * q.x)),\n (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n // Compute the matrix of scaling by s then rotating by q\n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\n// Spherical lerp between two quaternions\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n // Compute the cosine of the angle between the two vectors\n float cosHalfTheta = dot(q1, q2);\n\n // If q1=q2 or q1=-q2 then theta = 0 and we can return q1\n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n // If q1 and q2 are more than 180 degrees apart, \n // we need to negate one to get the shortest path\n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n // Calculate temporary values\n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n // Calculate the interpolation factors\n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n // Calculate the interpolated quaternion\n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}\n\nivec3 pagedSplatTexCoord(int index) {\n return ivec3(index & 255, (index >> 8) & 255, index >> 16);\n}\n\nvec4 uintToVec4(uint u32) {\n uvec4 bytes = uvec4(\n u32 & 0xFFu,\n (u32 >> 8u) & 0xFFu,\n (u32 >> 16u) & 0xFFu,\n (u32 >> 24u) & 0xFFu\n );\n return vec4(bytes) / 255.0;\n}\n\nvec4 floatToVec4(float f) {\n uint u32 = floatBitsToUint(f);\n return uintToVec4(u32);\n}\n\nvec3 debugColorHue(uint i) {\n // Golden ratio conjugate; spreads hues evenly\n float hue = fract(float(i) * 0.61803398875);\n // HSV to RGB with fixed S/V\n vec3 rgb = clamp(abs(mod(hue*6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return mix(vec3(1.0), rgb, 0.85); // saturation ~0.85, value ~1.0\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\n#include \n\nvoid main() {\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n if (false) {\n // if (debugFlag) {\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n float min1a = min(1.0, a);\n rgba.a = mix(min1a, min1a * exp(exponent), falloff);\n } else {\n // New falloff function, more or less equivalent\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n\n #include \n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\nflat out uint vSplatIndex;\nflat out float adjustedStdDev;\n\n// uniform uint numSplats;\nuniform vec2 renderSize;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform mat3 renderToViewBasis;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minPixelRadius;\nuniform float maxPixelRadius;\nuniform bool enableExtSplats;\nuniform bool enableCovSplats;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform float minAlpha;\nuniform bool enable2DGS;\nuniform bool lodInflate;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float focalDistance;\nuniform float apertureAngle;\nuniform float clipXY;\nuniform float focalAdjustment;\n\nuniform usampler2D ordering;\nuniform usampler2DArray extSplats;\nuniform usampler2DArray extSplats2;\n\n// Required by logdepthbuf_pars_vertex (normally defined in three.js #include )\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == -1.0;\n}\n\n#include \n\nvoid main() {\n // Default to outside the frustum so it's discarded if we return early\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n ivec2 orderingCoord = ivec2((gl_InstanceID >> 2) & 4095, gl_InstanceID >> 14);\n uint splatIndex = texelFetch(ordering, orderingCoord, 0)[gl_InstanceID & 3];\n if (splatIndex == 0xffffffffu) {\n // Special value reserved for \"no splat\"\n return;\n }\n\n ivec3 texCoord = splatTexCoord(int(splatIndex));\n vec3 center, scales, xxyyzz, xyxzyz;\n vec4 quaternion, rgba;\n mat3 cov3D;\n bvec3 zeroScales = bvec3(false);\n\n if (enableExtSplats) {\n uvec4 ext1 = texelFetch(extSplats, texCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if ((alpha == 0.0) || (alpha < minAlpha)) {\n return;\n }\n uvec4 ext2 = texelFetch(extSplats2, texCoord, 0);\n\n if (!enableCovSplats) {\n unpackSplatExt(ext1, ext2, center, scales, quaternion, rgba);\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatExtCov(ext1, ext2, center, rgba, xxyyzz, xyxzyz);\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n } else {\n uvec4 packedData = texelFetch(extSplats, texCoord, 0);\n if (!enableCovSplats) {\n unpackSplatEncoding(packedData, center, scales, quaternion, rgba, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n } else {\n unpackSplatCovEncoding(packedData, center, rgba, xxyyzz, xyxzyz, vec4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX));\n if (all(equal(xxyyzz, vec3(0.0))) && all(equal(xyxzyz, vec3(0.0)))) {\n return;\n }\n }\n\n rgba.a *= 2.0;\n if ((rgba.a == 0.0) || (rgba.a < minAlpha)) {\n return;\n }\n }\n\n float adjustedMaxStdDev = maxStdDev;\n if (rgba.a > 1.0) {\n // Stretch 1..2 to 1..5\n rgba.a = min(rgba.a * 4.0 - 3.0, 5.0);\n\n if (lodInflate) {\n // Adjust size to componsate for loss of opacity\n float opacity = exp((rgba.a * rgba.a - 1.0) / 2.718281828459045);\n float rescale = pow(opacity, 1.0 / 3.0);\n scales *= rescale;\n rgba.a = 1.0;\n }\n\n // Expand the maximum std dev to approximately cover the larger range\n adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0);\n }\n adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK);\n\n // Compute the view space center of the splat\n vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos;\n\n // Discard splats behind the camera\n if (viewCenter.z >= 0.0) {\n return;\n }\n\n // Compute the clip space center of the splat\n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n // Discard splats outside near/far planes\n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n // Discard splats more than clipXY times outside the XY frustum\n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n vRgba = rgba;\n vSplatUv = position.xy * adjustedStdDev;\n\n // Record the splat index for entropy\n vSplatIndex = splatIndex;\n\n if (!enableCovSplats) {\n // Compute view space quaternion of splat\n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n\n #include \n return;\n }\n\n // Compute the 3D covariance matrix of the splat\n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n cov3D = RS * transpose(RS);\n } else {\n cov3D = mat3(\n xxyyzz.x, xyxzyz.x, xyxzyz.y,\n xyxzyz.x, xxyyzz.y, xyxzyz.z,\n xyxzyz.y, xyxzyz.z, xxyyzz.z\n );\n cov3D = renderToViewBasis * cov3D * transpose(renderToViewBasis);\n }\n\n // Compute the Jacobian of the splat's projection at its center\n vec2 scaledRenderSize = renderSize * focalAdjustment;\n vec2 focal = 0.5 * scaledRenderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n\n mat3 J;\n if (isOrthographic) {\n J = mat3(\n focal.x, 0.0, 0.0,\n 0.0, focal.y, 0.0,\n 0.0, 0.0, 0.0\n );\n } else {\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n }\n\n // Compute the 2D covariance by projecting the 3D covariance\n // and picking out the XY plane components.\n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n // Optionally pre-blur the splat to match non-antialias optimized splats\n a += preBlurAmount;\n d += preBlurAmount;\n\n float fullBlurAmount = blurAmount;\n if ((focalDistance > 0.0) && (apertureAngle > 0.0)) {\n float focusRadius = maxPixelRadius;\n if (viewCenter.z < 0.0) {\n float focusBlur = abs((-viewCenter.z - focalDistance) / viewCenter.z);\n float apertureRadius = focal.x * tan(0.5 * apertureAngle);\n focusRadius = focusBlur * apertureRadius;\n }\n fullBlurAmount = clamp(sqr(focusRadius), blurAmount, sqr(maxPixelRadius));\n }\n\n // Do convolution with a 0.5-pixel Gaussian for anti-aliasing: sqrt(0.3) ~= 0.5\n float detOrig = a * d - b * b;\n a += fullBlurAmount;\n d += fullBlurAmount;\n float det = a * d - b * b;\n\n // Compute anti-aliasing intensity scaling factor\n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < minAlpha) {\n return;\n }\n vRgba.a = rgba.a;\n\n // Compute the eigenvalue and eigenvectors of the 2D covariance matrix\n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = (abs(b) > 0.001) ? normalize(vec2(b, eigen1 - a))\n : ((a >= d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen1));\n float scale2 = min(maxPixelRadius, adjustedStdDev * sqrt(eigen2));\n if (scale1 < minPixelRadius && scale2 < minPixelRadius) {\n return;\n }\n\n // Compute the NDC coordinates for the ellipsoid's diagonal axes.\n vec2 pixelOffset = position.x * eigenVec1 * scale1 + position.y * eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / scaledRenderSize) * pixelOffset;\n\n // Compute NDC center of the splat\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n\n #include \n}\n","import * as THREE from \"three\";\n\nimport computeUvec4Template from \"./shaders/computeUvec4.glsl\";\nimport computeUvec4Vec4Template from \"./shaders/computeUvec4_Vec4.glsl\";\nimport computeUvec4x2Vec4Template from \"./shaders/computeUvec4x2_Vec4.glsl\";\nimport computeVec4Template from \"./shaders/computeVec4.glsl\";\nimport splatDefines from \"./shaders/splatDefines.glsl\";\nimport splatFragment from \"./shaders/splatFragment.glsl\";\nimport splatVertex from \"./shaders/splatVertex.glsl\";\n\nlet shaders: Record | null = null;\n\nexport function getShaders(): Record {\n if (!shaders) {\n // @ts-ignore\n THREE.ShaderChunk.splatDefines = splatDefines;\n shaders = {\n splatVertex,\n splatFragment,\n computeVec4Template,\n computeUvec4Vec4Template,\n computeUvec4x2Vec4Template,\n computeUvec4Template,\n };\n }\n return shaders;\n}\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { type Dyno, OutputRgba8, dynoBlock } from \"./dyno\";\nimport { DynoProgram, DynoProgramTemplate } from \"./dyno/program\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize } from \"./utils\";\n\n// Readback can be used to run a Dyno program that maps an index to a 32-bit\n// RGBA8 value, which is the only allowed, portable readback format for WebGL2.\n// Using data packing and conversion you can read back any 32-bit value, which\n// Spark uses to read back 2 float16 Gsplat distance values per index.\n\nexport type Rgba8Readback = Dyno<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n\n// Readback can be performed with various typed buffers, making it convenient\n// to encode readback data in a variety of formats.\n\nexport type ReadbackBuffer =\n | ArrayBuffer\n | Uint8Array\n | Uint8ClampedArray\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array;\n\nexport class Readback {\n renderer?: THREE.WebGLRenderer;\n target?: THREE.WebGLArrayRenderTarget;\n capacity: number;\n count: number;\n\n constructor({ renderer }: { renderer?: THREE.WebGLRenderer } = {}) {\n this.renderer = renderer;\n this.capacity = 0;\n this.count = 0;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n }\n\n // Ensure we have a buffer large enough for the readback of count indices.\n // Pass in previous bufer of the desired type.\n static ensureBuffer(count: number, buffer: B): B {\n // Readback is performed in a 2D array of pixels, so round up with SPLAT_TEX_WIDTH\n const roundedCount =\n Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const bytes = roundedCount * 4;\n if (buffer.byteLength >= bytes) {\n return buffer;\n }\n\n // Need a larger buffer, create a new one of the same type\n const newBuffer = new ArrayBuffer(bytes);\n if (buffer instanceof ArrayBuffer) {\n return newBuffer as B;\n }\n\n const ctor = buffer.constructor as { new (arrayBuffer: ArrayBuffer): B };\n return new ctor(newBuffer) as B;\n }\n\n ensureBuffer(count: number, buffer: B): B {\n return Readback.ensureBuffer(count, buffer);\n }\n\n // Ensure our render target is large enough for the readback of capacity indices.\n ensureCapacity(capacity: number) {\n const { width, height, depth, maxSplats } = getTextureSize(capacity);\n if (!this.target || maxSplats > this.capacity) {\n this.dispose();\n this.capacity = maxSplats;\n\n // The only portable readback format for WebGL2 is RGBA8\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAFormat;\n this.target.texture.type = THREE.UnsignedByteType;\n this.target.texture.internalFormat = \"RGBA8\";\n this.target.scissorTest = true;\n }\n }\n\n // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(reader: Rgba8Readback): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = Readback.readbackProgram.get(reader);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n reader.inputs.index = index;\n const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });\n return { rgba8 };\n },\n );\n if (!Readback.programTemplate) {\n Readback.programTemplate = new DynoProgramTemplate(\n getShaders().computeVec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { rgba8: \"target\" },\n template: Readback.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n Readback.readbackProgram.set(reader, program);\n }\n\n const material = program.prepareMaterial();\n Readback.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private process({\n count,\n material,\n }: { count: number; material: THREE.RawShaderMaterial }) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n // Run the program in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of indices.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = 0;\n material.uniforms.targetCount.value = count;\n let baseIndex = 0;\n\n // Keep generating layers until completed count items\n while (baseIndex < count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH),\n );\n material.uniforms.targetLayer.value = layer;\n\n // Render the desired portion of the layer\n this.target.scissor.set(0, 0, SPLAT_TEX_WIDTH, layerYEnd);\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n Readback.fullScreenQuad.render(renderer);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.count = count;\n }\n\n private async read({\n readback,\n }: { readback: B }): Promise {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!this.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(\n readback instanceof ArrayBuffer ? readback : readback.buffer,\n );\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < this.count) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n renderer.setRenderTarget(this.target, layer);\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n const promise = renderer?.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n );\n promises.push(promise);\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n // const gl = renderer.getContext() as WebGL2RenderingContext;\n // gl.flush();\n return Promise.all(promises).then(() => readback);\n }\n\n // Perform render operation to run the Rgba8Readback program\n // but don't perform the readback yet.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer?: THREE.WebGLRenderer }) {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n this.process({ count, material });\n this.resetRenderState(this.renderer, renderState);\n }\n\n // Perform a readback of the render target, returning a buffer of the\n // given type.\n async readback({\n readback,\n }: { readback: B }): Promise {\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n const renderState = this.saveRenderState(this.renderer);\n const promise = this.read({ readback });\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n // Perform a render and readback operation for the given Rgba8Readback,\n // and readback buffer (call ensureBuffer first).\n async renderReadback({\n reader,\n count,\n renderer,\n readback,\n }: {\n reader: Rgba8Readback;\n count: number;\n renderer?: THREE.WebGLRenderer;\n readback: B;\n }): Promise {\n this.renderer = renderer || this.renderer;\n if (!this.renderer) {\n throw new Error(\"No renderer\");\n }\n\n this.ensureCapacity(count);\n\n const { program, material } = this.prepareProgramMaterial(reader);\n program.update();\n\n const renderState = this.saveRenderState(this.renderer);\n\n // Generate output\n this.process({ count, material });\n\n // Initiate readback\n const promise = this.read({ readback });\n\n this.resetRenderState(this.renderer, renderState);\n return promise;\n }\n\n getTexture(): THREE.DataArrayTexture | undefined {\n return this.target?.texture;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for Rgba8Readback programs\n static readbackProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n}\n","import * as THREE from \"three\";\n\nimport {\n CovSplat,\n Dyno,\n DynoInt,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { newArray } from \"./utils\";\n\n// Spark provides the ability to apply \"edits\" to Gsplats as part of the standard\n// SplatMesh pipeline. These edits take the form of a sequence of operations,\n// applied one at a time to the set of Gsplats in its packedSplats. Each operation\n// evaluates a 7-dimensional field (RGBA and XYZ displacement) at each point in\n// space that derives from N=1 or more Signed Distance Field shapes (such as spheres,\n// boxes, planes, etc.), blended together and across inside-outisde boundaries.\n\n// The result is a an RGBA,XYZ value for each point in space, which combined with\n// SplatEditRgbaBlendMode.MULTIPLY/SET_RGB/ADD_RGBA can be used to create special\n// effects, for example simulating simple lighting or applying deformations in space,\n// whose parameters can be updated each frame to create animated effects.\n\n// RGBA-XYZ values are computed by blending together values from all SDF shapes using\n// the exponential \"softmax\" function, which is commutative (so blending order within\n// a SplatEdit operation doesn't matter). The parameter SplatEdit.sdfSmooth controls\n// the blending scale between SDF shapes, while SplatEdit.softEdge controls the scale\n// of soft inside-outside shape edit blending. Their default values start at 0.0 and\n// should be increased to soften the effect.\n\n// Note that XYZ displacement values are blended in the same way as RGBA, with a\n// resulting displacement field that can be quite complex but \"softly\" blending\n// between shapes. These RGBA-XYZ edits, along with time-based and overlapping\n// fields can create many interesting animations and special effects, such as\n// rippling leaves in the wind, an angry fire, or a looping water effects. Simply\n// update the SplatEdit and SplatEditSdf objects and the operations will be applied\n// immediately to the Gsplats in the scene.\n\nexport enum SplatEditSdfType {\n // ALL: Affects all points in space\n ALL = \"all\",\n // PLANE: Infinite plane (position, rotation)\n PLANE = \"plane\",\n // SPHERE: Sphere (position, radius)\n SPHERE = \"sphere\",\n // BOX: Rounded box (position, rotation, sizes, radius)\n BOX = \"box\",\n // ELLIPSOID: Ellipsoid (position, rotation, sizes)\n ELLIPSOID = \"ellipsoid\",\n // CYLINDER: Cylinder (position, rotation, radius, size_y)\n CYLINDER = \"cylinder\",\n // CAPSULE: Capsule (position, rotation, radius, size_y)\n CAPSULE = \"capsule\",\n // INFINITE_CONE: Infinite cone (position, rotation, radius=angle)\n INFINITE_CONE = \"infinite_cone\",\n}\n\nfunction sdfTypeToNumber(type: SplatEditSdfType) {\n switch (type) {\n case SplatEditSdfType.ALL:\n return 0;\n case SplatEditSdfType.PLANE:\n return 1;\n case SplatEditSdfType.SPHERE:\n return 2;\n case SplatEditSdfType.BOX:\n return 3;\n case SplatEditSdfType.ELLIPSOID:\n return 4;\n case SplatEditSdfType.CYLINDER:\n return 5;\n case SplatEditSdfType.CAPSULE:\n return 6;\n case SplatEditSdfType.INFINITE_CONE:\n return 7;\n default:\n throw new Error(`Unknown SDF type: ${type}`);\n }\n}\n\nexport enum SplatEditRgbaBlendMode {\n // The RGBA of the splat is multiplied component-wise by the SDF’s\n // RGBA value at that point in space.\n MULTIPLY = \"multiply\",\n // Ignore the Alpha value in the SDF, but set the splat’s RGB to\n // equal the SDF’s RGB value at that point.\n SET_RGB = \"set_rgb\",\n // Add the SDF’s RGBA value at that point to the RGBA value of\n // the Gsplat. This can produce hyper-saturated results, but is useful\n // to easily “light up” areas.\n ADD_RGBA = \"add_rgba\",\n}\n\nfunction rgbaBlendModeToNumber(mode: SplatEditRgbaBlendMode) {\n switch (mode) {\n case SplatEditRgbaBlendMode.MULTIPLY:\n return 0;\n case SplatEditRgbaBlendMode.SET_RGB:\n return 1;\n case SplatEditRgbaBlendMode.ADD_RGBA:\n return 2;\n default:\n throw new Error(`Unknown blend mode: ${mode}`);\n }\n}\n\nexport type SplatEditSdfOptions = {\n // The SDF shape type: ALL, PLANE, SPHERE, BOX, ELLIPSOID, CYLINDER, CAPSULE,\n // or INFINITE_CONE. (default: SplatEditSdfType.SPHERE)\n type?: SplatEditSdfType;\n // Invert the SDF evaluation, swapping inside and outside regions. (default: false)\n invert?: boolean;\n // Opacity / \"alpha\" value used differently by blending modes (default: 1.0)\n opacity?: number;\n // RGB color applied within the shape. (default: new THREE.Color(1.0, 1.0, 1.0))\n color?: THREE.Color;\n // XYZ displacement applied to splat positions inside the shape.\n // (default: new THREE.Vector3(0.0, 0.0, 0.0))\n displace?: THREE.Vector3;\n // Shape-specific size parameter: sphere radius, box corner rounding,\n // cylinder/capsule radius, or for the infinite cone the angle factor\n // (opening half-angle = π/4 × radius).\n radius?: number;\n};\n\nexport class SplatEditSdf extends THREE.Object3D {\n type: SplatEditSdfType;\n invert: boolean;\n opacity: number;\n color: THREE.Color;\n displace: THREE.Vector3;\n radius: number;\n\n constructor(options: SplatEditSdfOptions = {}) {\n super();\n const { type, invert, opacity, color, displace, radius } = options;\n this.type = type ?? SplatEditSdfType.SPHERE;\n this.invert = invert ?? false;\n this.opacity = opacity ?? 1.0;\n this.color = color ?? new THREE.Color(1.0, 1.0, 1.0);\n this.displace = displace ?? new THREE.Vector3(0.0, 0.0, 0.0);\n this.radius = radius ?? 0.0;\n }\n}\n\nexport type SplatEditOptions = {\n // Name of this edit operation. If you omit it, a default \"Edit 1\", \"Edit 2\", ...\n // is assigned.\n name?: string;\n // How the SDF’s RGBA modifies each splat’s RGBA: multiply, overwrite RGB,\n // or add RGBA. (default: MULTIPLY)\n rgbaBlendMode?: SplatEditRgbaBlendMode;\n // Smoothing (in world‐space units) for blending between multiple SDF shapes\n // at their boundaries. (default: 0.0)\n sdfSmooth?: number;\n // Soft‐edge falloff radius (in world‐space units) around each SDF shape’s surface.\n // (default: 0.0)\n softEdge?: number;\n // Invert the SDF evaluation (inside/outside swap). (default: false)\n invert?: boolean;\n // Explicit array of SplatEditSdf objects to include. If null, any child\n // SplatEditSdf instances are used.\n sdfs?: SplatEditSdf[];\n};\n\nexport class SplatEdit extends THREE.Object3D {\n // ordering used to apply SplatEdit operations to Gsplats. This is implicitly\n // increased with each new SplatEdit. Reassigning ordering can be used to\n // reorder the operations.\n ordering: number;\n rgbaBlendMode: SplatEditRgbaBlendMode;\n sdfSmooth: number;\n softEdge: number;\n invert: boolean;\n\n // Optional list of explicit SDFs to including in this edit. If it is null, then\n // any SplatEditSdf children in the scene graph will be added automatically.\n sdfs: SplatEditSdf[] | null;\n\n // The next ordering number to use for a new SplatEdit, auto-incremented\n static nextOrdering = 1;\n\n constructor(options: SplatEditOptions = {}) {\n const {\n name,\n rgbaBlendMode = SplatEditRgbaBlendMode.MULTIPLY,\n sdfSmooth = 0.0,\n softEdge = 0.0,\n invert = false,\n sdfs = null,\n } = options;\n\n super();\n this.rgbaBlendMode = rgbaBlendMode;\n this.sdfSmooth = sdfSmooth;\n this.softEdge = softEdge;\n this.invert = invert;\n this.sdfs = sdfs;\n // Assign and auto-increment unique ordering number for this edit\n this.ordering = SplatEdit.nextOrdering++;\n // Automatically assign a default name if not provided\n this.name = name ?? `Edit ${this.ordering}`;\n }\n\n addSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n this.sdfs = [];\n }\n if (!this.sdfs.includes(sdf)) {\n this.sdfs.push(sdf);\n }\n }\n\n removeSdf(sdf: SplatEditSdf) {\n if (this.sdfs == null) {\n return;\n }\n this.sdfs = this.sdfs.filter((s) => s !== sdf);\n }\n}\n\n// Dyno implementation of RGBA-XYZ SDF editing.\n// The SDFs are encoded in a texture while the edits are encoded\n// as a uniform uvec4 array.\n\nexport class SplatEdits {\n // Maximum number of SDFs allocated\n maxSdfs: number;\n // Number of SDFs currently in use\n numSdfs: number;\n // Encoded SDF data\n sdfData: Uint32Array;\n // Float interpretation of SDF data\n sdfFloatData: Float32Array;\n // Texture with encoded SDF data\n sdfTexture: THREE.DataTexture;\n // An SdfArray dyno uniform\n dynoSdfArray: DynoUniform;\n\n // Maximum number of edits allocated\n maxEdits: number;\n // Number of edits currently in use\n numEdits: number;\n // Encoded edit data\n editData: Uint32Array;\n // Float interpretation of edit data\n editFloatData: Float32Array;\n // A dyno uniform for the number of edits\n dynoNumEdits: DynoUniform<\"int\", \"numEdits\">;\n // A dyno uniform for the encoded edits, one uvec4 per edit\n dynoEdits: DynoUniform<\"uvec4\", \"edits\">;\n\n constructor({ maxSdfs, maxEdits }: { maxSdfs?: number; maxEdits?: number }) {\n // Allocate at least 16 SDFs for efficiency\n this.maxSdfs = Math.max(16, maxSdfs ?? 0);\n this.numSdfs = 0;\n\n // Allocate space: 8 x (u)vec4 values per SDF, Uint32 and Float32 arrays\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n this.dynoSdfArray = new DynoUniform({\n key: \"sdfArray\",\n type: SdfArray,\n globals: () => [defineSdfArray],\n value: {\n numSdfs: 0,\n sdfTexture: this.sdfTexture,\n },\n update: (uniform) => {\n uniform.numSdfs = this.numSdfs;\n uniform.sdfTexture = this.sdfTexture;\n return uniform;\n },\n });\n\n // Allocate at least 16 edits slots for efficiency\n this.maxEdits = Math.max(16, maxEdits ?? 0);\n this.numEdits = 0;\n // Allocate space: 1 uvec4 per edit\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoNumEdits = new DynoInt({ value: 0 });\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n }\n\n private newSdfTexture(data: Uint32Array, maxSdfs: number) {\n const texture = new THREE.DataTexture(\n data,\n 8,\n maxSdfs,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n }\n\n private newEdits(data: Uint32Array, maxEdits: number) {\n return new DynoUniform({\n key: \"edits\",\n type: \"uvec4\",\n count: maxEdits,\n globals: () => [defineEdit],\n value: data,\n });\n }\n\n // Ensure our SDF texture and edits uniform array have enough capacity.\n // Reallocate if not.\n private ensureCapacity({\n maxSdfs,\n maxEdits,\n }: { maxSdfs: number; maxEdits: number }): boolean {\n let dynoUpdated = false;\n if (maxSdfs > this.sdfTexture.image.height) {\n this.sdfTexture.dispose();\n // At least double the size to avoid frequent reallocations\n this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);\n this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);\n this.sdfFloatData = new Float32Array(this.sdfData.buffer);\n this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);\n }\n if (maxEdits > (this.dynoEdits.count ?? 0)) {\n // At least double the size to avoid frequent reallocations\n this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);\n this.editData = new Uint32Array(this.maxEdits * 4);\n this.editFloatData = new Float32Array(this.editData.buffer);\n this.dynoEdits = this.newEdits(this.editData, this.maxEdits);\n dynoUpdated = true;\n }\n return dynoUpdated;\n }\n\n private updateEditData(offset: number, value: number): boolean {\n // Update an edit uint32 value and return true if it changed\n const updated = this.editData[offset] !== value;\n this.editData[offset] = value;\n return updated;\n }\n\n private updateEditFloatData(offset: number, value: number): boolean {\n // Update an edit float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.editFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.editFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeEdit(\n editIndex: number,\n {\n sdfFirst,\n sdfCount,\n invert,\n rgbaBlendMode,\n softEdge,\n sdfSmooth,\n }: {\n sdfFirst: number;\n sdfCount: number;\n invert: boolean;\n rgbaBlendMode: number;\n softEdge: number;\n sdfSmooth: number;\n },\n ): boolean {\n const base = editIndex * 4;\n let updated = false;\n // Encode the edit fields into the editData array and check if any changed\n updated =\n this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) ||\n updated;\n updated =\n this.updateEditData(base + 1, sdfFirst | (sdfCount << 16)) || updated;\n updated = this.updateEditFloatData(base + 2, softEdge) || updated;\n updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;\n return updated;\n }\n\n private updateSdfData(offset: number, value: number): boolean {\n // Update an SDF uint32 value and return true if it changed\n const updated = this.sdfData[offset] !== value;\n this.sdfData[offset] = value;\n return updated;\n }\n\n private updateSdfFloatData(offset: number, value: number): boolean {\n // Update an SDF float32 value and return true if it changed\n tempFloat32[0] = value;\n const updated = this.sdfFloatData[offset] !== tempFloat32[0];\n if (updated) {\n this.sdfFloatData[offset] = tempFloat32[0];\n }\n return updated;\n }\n\n private encodeSdf(\n sdfIndex: number,\n {\n sdfType,\n invert,\n center,\n quaternion,\n scale,\n sizes,\n }: {\n sdfType: number;\n invert?: boolean;\n center?: THREE.Vector3;\n quaternion?: THREE.Quaternion;\n scale?: THREE.Vector3;\n sizes?: THREE.Vector4;\n },\n values: THREE.Vector4[],\n ): boolean {\n // Encode the SDF fields into the sdfData array and check if any changed\n const base = sdfIndex * (8 * 4);\n const flags = sdfType | (invert ? 1 << 8 : 0);\n let updated = false;\n\n updated = this.updateSdfFloatData(base + 0, center?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 1, center?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 2, center?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 3, flags) || updated;\n\n updated = this.updateSdfFloatData(base + 4, quaternion?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 5, quaternion?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 6, quaternion?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 7, quaternion?.w ?? 0) || updated;\n\n updated = this.updateSdfFloatData(base + 8, scale?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 9, scale?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 10, scale?.z ?? 0) || updated;\n updated = this.updateSdfData(base + 11, 0) || updated;\n\n updated = this.updateSdfFloatData(base + 12, sizes?.x ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 13, sizes?.y ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 14, sizes?.z ?? 0) || updated;\n updated = this.updateSdfFloatData(base + 15, sizes?.w ?? 0) || updated;\n\n const nValues = Math.min(4, values.length);\n for (let i = 0; i < nValues; ++i) {\n const vBase = base + 16 + i * 4;\n updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;\n updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;\n updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;\n updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;\n }\n return updated;\n }\n\n // Update the SDFs and edits from an array of SplatEdits and their\n // associated SplatEditSdfs, updating it for the dyno shader program.\n update(edits: { edit: SplatEdit; sdfs: SplatEditSdf[] }[]): {\n updated: boolean;\n dynoUpdated: boolean;\n } {\n const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);\n const dynoUpdated = this.ensureCapacity({\n maxEdits: edits.length,\n maxSdfs: sdfCount,\n });\n\n const values = [new THREE.Vector4(), new THREE.Vector4()];\n const center = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const scale = new THREE.Vector3();\n const sizes = new THREE.Vector4();\n\n let sdfIndex = 0;\n let updated = dynoUpdated;\n\n if (edits.length !== this.dynoNumEdits.value) {\n this.dynoNumEdits.value = edits.length;\n this.numEdits = edits.length;\n updated = true;\n }\n\n for (const [editIndex, { edit, sdfs }] of edits.entries()) {\n updated =\n this.encodeEdit(editIndex, {\n sdfFirst: sdfIndex,\n sdfCount: sdfs.length,\n invert: edit.invert,\n rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),\n softEdge: edit.softEdge,\n sdfSmooth: edit.sdfSmooth,\n }) || updated;\n\n let sdfUpdated = false;\n for (const sdf of sdfs) {\n sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);\n // Temporarily set the SDF scale to 1.0 to get the world-to-SDF\n // transform without scaling. The SDF treats the scale separately.\n sdf.scale.setScalar(1.0);\n sdf.updateMatrixWorld();\n const worldToSdf = sdf.matrixWorld.clone().invert();\n worldToSdf.decompose(center, quaternion, scale);\n\n sdf.scale.set(sizes.x, sizes.y, sizes.z);\n sdf.updateMatrixWorld();\n\n values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);\n values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1.0);\n\n sdfUpdated =\n this.encodeSdf(\n sdfIndex,\n {\n sdfType: sdfTypeToNumber(sdf.type),\n invert: sdf.invert,\n center,\n quaternion,\n scale,\n sizes,\n },\n values,\n ) || sdfUpdated;\n\n sdfIndex += 1;\n }\n this.numSdfs = sdfIndex;\n if (sdfUpdated) {\n this.sdfTexture.needsUpdate = true;\n }\n updated ||= sdfUpdated;\n }\n return { updated, dynoUpdated };\n }\n\n // Modify a Gsplat in a dyno shader program using the current edits and SDFs.\n modify(gsplat: DynoVal): DynoVal {\n return applyGsplatRgbaDisplaceEdits(\n gsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n return applyCovSplatRgbaDisplaceEdits(\n covsplat,\n this.dynoSdfArray,\n this.dynoNumEdits,\n this.dynoEdits,\n );\n }\n}\n\n// Dyno types and components:\n\n// An SdfArray contains a collection of SDFs encoded in a texture.\n// Each SDF has a type and geometric parameters, but also encodes\n// 4 x vec4 values, which can all be blended across multiple SDFs.\n// The SplatEdit system uses 7 of these 16 values to encode RGBA-XYZ edits,\n// but more can be added, and these SDFs can be used for entirely different\n// purposes as well.\n\nexport const SdfArray = { type: \"SdfArray\" } as { type: \"SdfArray\" };\n\nexport const defineSdfArray = unindent(`\n struct SdfArray {\n int numSdfs;\n usampler2D sdfTexture;\n };\n\n void unpackSdfArray(\n usampler2D sdfTexture, int sdfIndex, out uint flags,\n out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,\n int numValues, out vec4 values[4]\n ) {\n uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);\n flags = temp.w;\n center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);\n quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);\n scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));\n\n temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);\n sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n\n for (int i = 0; i < numValues; ++i) {\n temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);\n values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));\n }\n }\n\n const uint SDF_FLAG_TYPE = 0xFFu;\n const uint SDF_FLAG_INVERT = 1u << 8u;\n\n const uint SDF_TYPE_ALL = 0u;\n const uint SDF_TYPE_PLANE = 1u;\n const uint SDF_TYPE_SPHERE = 2u;\n const uint SDF_TYPE_BOX = 3u;\n const uint SDF_TYPE_ELLIPSOID = 4u;\n const uint SDF_TYPE_CYLINDER = 5u;\n const uint SDF_TYPE_CAPSULE = 6u;\n const uint SDF_TYPE_INFINITE_CONE = 7u;\n\n float evaluateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 outValues[4]\n ) {\n float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;\n float maxExp = -1.0 / 0.0;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = vec4(0.0);\n }\n\n uint flags;\n vec3 center, scale;\n vec4 quaternion, sizes;\n vec4 values[4];\n\n int sdfLast = min(sdfFirst + sdfCount, numSdfs);\n for (int index = sdfFirst; index < sdfLast; ++index) {\n unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);\n uint sdfType = flags & SDF_FLAG_TYPE;\n vec3 sdfPos = quatVec(quaternion, pos * scale) + center;\n\n float distance;\n switch (sdfType) {\n case SDF_TYPE_ALL:\n distance = -1.0 / 0.0;\n break;\n case SDF_TYPE_PLANE: {\n distance = sdfPos.z;\n break;\n }\n case SDF_TYPE_SPHERE: {\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_BOX: {\n vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;\n distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;\n break;\n }\n case SDF_TYPE_ELLIPSOID: {\n vec3 sizes = sizes.xyz;\n float k0 = length(sdfPos / sizes);\n float k1 = length(sdfPos / dot(sizes, sizes));\n distance = k0 * (k0 - 1.0) / k1;\n break;\n }\n case SDF_TYPE_CYLINDER: {\n vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;\n distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n break;\n }\n case SDF_TYPE_CAPSULE: {\n sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);\n distance = length(sdfPos) - sizes.w;\n break;\n }\n case SDF_TYPE_INFINITE_CONE: {\n float angle = 0.25 * PI * sizes.w;\n vec2 c = vec2(sin(angle), cos(angle));\n vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);\n float d = length(q - c * max(dot(q, c), 0.0));\n distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);\n break;\n }\n }\n\n if ((flags & SDF_FLAG_INVERT) != 0u) {\n distance = -distance;\n }\n\n if (smoothK == 0.0) {\n if (distance < distanceAccum) {\n distanceAccum = distance;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] = values[i];\n }\n }\n } else {\n float scaledDistance = -distance / smoothK;\n if (scaledDistance > maxExp) {\n float scale = exp(maxExp - scaledDistance);\n distanceAccum *= scale;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] *= scale;\n }\n maxExp = scaledDistance;\n }\n\n float weight = exp(scaledDistance - maxExp);\n distanceAccum += weight;\n for (int i = 0; i < numValues; ++i) {\n outValues[i] += weight * values[i];\n }\n }\n }\n\n if (smoothK == 0.0) {\n return distanceAccum;\n } else {\n // Very distant SDFs may result in 0 accumulation\n if (distanceAccum == 0.0) {\n return 1.0 / 0.0;\n }\n for (int i = 0; i < numValues; ++i) {\n outValues[i] /= distanceAccum;\n }\n return (-log(distanceAccum) - maxExp) * smoothK;\n }\n }\n\n float modulateSdfArray(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,\n float smoothK, int numValues, out vec4 values[4],\n float softEdge, bool invert\n ) {\n float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);\n if (invert) {\n distance = -distance;\n }\n\n return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)\n : clamp(-distance / softEdge + 0.5, 0.0, 1.0);\n }\n`);\n\nexport const defineEdit = unindent(`\n const uint EDIT_FLAG_BLEND = 0xFFu;\n const uint EDIT_BLEND_MULTIPLY = 0u;\n const uint EDIT_BLEND_SET_RGB = 1u;\n const uint EDIT_BLEND_ADD_RGBA = 2u;\n const uint EDIT_FLAG_INVERT = 0x100u;\n\n void decodeEdit(\n uvec4 packedEdit, out int sdfFirst, out int sdfCount,\n out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth\n ) {\n rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;\n invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;\n\n sdfFirst = int(packedEdit.y & 0xFFFFu);\n sdfCount = int(packedEdit.y >> 16u);\n\n softEdge = uintBitsToFloat(packedEdit.z);\n sdfSmooth = uintBitsToFloat(packedEdit.w);\n }\n\n void applyRgbaDisplaceEdit(\n usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,\n float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba\n ) {\n vec4 values[4];\n float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);\n // On Android, moving values[0] is necessary to work around a compiler bug.\n vec4 sdfRgba = values[0];\n vec4 sdfDisplaceScale = values[1];\n\n vec4 target;\n switch (rgbaBlendMode) {\n case EDIT_BLEND_MULTIPLY:\n target = rgba * sdfRgba;\n break;\n case EDIT_BLEND_SET_RGB:\n target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);\n break;\n case EDIT_BLEND_ADD_RGBA:\n target = rgba + sdfRgba;\n break;\n default:\n // Debug output if blend mode not set\n target = vec4(fract(pos), 1.0);\n }\n rgba = mix(rgba, target, modulate);\n pos += sdfDisplaceScale.xyz * modulate;\n }\n\n void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {\n int sdfFirst, sdfCount;\n bool invert;\n uint rgbaBlendMode;\n float softEdge, sdfSmooth;\n decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);\n applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);\n }\n`);\n\nfunction applyGsplatRgbaDisplaceEdits(\n gsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n gsplat: typeof Gsplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { gsplat: typeof Gsplat }\n >({\n inTypes: {\n gsplat: Gsplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${gsplat}.center, ${gsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nfunction applyCovSplatRgbaDisplaceEdits(\n covsplat: DynoVal,\n sdfArray: DynoVal,\n numEdits: DynoVal<\"int\">,\n rgbaDisplaceEdits: DynoVal<\"uvec4\">,\n): DynoVal {\n const dyno = new Dyno<\n {\n covsplat: typeof CovSplat;\n sdfArray: typeof SdfArray;\n numEdits: \"int\";\n rgbaDisplaceEdits: \"uvec4\";\n },\n { covsplat: typeof CovSplat }\n >({\n inTypes: {\n covsplat: CovSplat,\n sdfArray: SdfArray,\n numEdits: \"int\",\n rgbaDisplaceEdits: \"uvec4\",\n },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineSdfArray, defineEdit],\n inputs: { covsplat, sdfArray, numEdits, rgbaDisplaceEdits },\n statements: ({ inputs, outputs }) => {\n const { sdfArray, numEdits, rgbaDisplaceEdits } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n for (int editIndex = 0; editIndex < ${numEdits}; ++editIndex) {\n applyPackedRgbaDisplaceEdit(\n ${rgbaDisplaceEdits}[editIndex], ${sdfArray}.sdfTexture, ${sdfArray}.numSdfs,\n ${covsplat}.center, ${covsplat}.rgba\n );\n }\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nconst tempFloat32 = new Float32Array(1);\n","import * as THREE from \"three\";\nimport type { SplatEdit } from \"./SplatEdit\";\nimport {\n CovSplat,\n Dyno,\n DynoFloat,\n DynoMat3,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n Gsplat,\n add,\n dynoBlock,\n mul,\n transformDir,\n transformGsplat,\n transformPos,\n unindentLines,\n} from \"./dyno\";\n\n// A GsplatGenerator is a dyno program that maps an index to a Gsplat's properties\n\nexport type GsplatGenerator = Dyno<{ index: \"int\" }, { gsplat: typeof Gsplat }>;\n\nexport type CovSplatGenerator = Dyno<\n { index: \"int\" },\n { covsplat: typeof CovSplat }\n>;\n\n// A GsplatModifier is a dyno program that inputs a Gsplat, modifies, and outputs it\n\nexport type GsplatModifier = Dyno<\n { gsplat: typeof Gsplat },\n { gsplat: typeof Gsplat }\n>;\n\nexport type CovSplatModifier = Dyno<\n { covsplat: typeof CovSplat },\n { covsplat: typeof CovSplat }\n>;\n\n// A SplatModifier is a utility class to apply a GsplatModifier to\n// a GsplatGenerator pipeline, caching the combined result for efficiency.\n\nexport class SplatModifier {\n modifier: GsplatModifier;\n cache: Map;\n\n constructor(modifier: GsplatModifier) {\n this.modifier = modifier;\n this.cache = new Map();\n }\n\n apply(generator: GsplatGenerator): GsplatGenerator {\n let modified = this.cache.get(generator);\n if (!modified) {\n modified = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n const { gsplat } = generator.apply({ index });\n return this.modifier.apply({ gsplat });\n },\n );\n this.cache.set(generator, modified);\n }\n return modified;\n }\n}\n\n// A SplatTransformer is a utility class to apply a transform to a Gsplat\n// via a scale, rotation, and translation. Scale is a single float because\n// anisotropic scaling of Gsplats is not supported.\n\nexport class SplatTransformer {\n scale: DynoFloat;\n rotate: DynoVec4;\n translate: DynoVec3;\n\n // Create the dyno uniforms that parameterize the transform, setting them\n // to initial values that are different from any valid transform.\n constructor() {\n this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });\n this.rotate = new DynoVec4({\n value: new THREE.Quaternion(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n this.translate = new DynoVec3({\n value: new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n ),\n });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformPos(position, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return transformDir(dir, {\n rotate: this.rotate,\n });\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyGsplat(gsplat: DynoVal): DynoVal {\n return transformGsplat(gsplat, {\n scale: this.scale,\n rotate: this.rotate,\n translate: this.translate,\n });\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const scale = new THREE.Vector3();\n const quaternion = new THREE.Quaternion();\n const position = new THREE.Vector3();\n transform.decompose(position, quaternion, scale);\n const newScale = (scale.x + scale.y + scale.z) / 3;\n\n let updated = false;\n if (newScale !== this.scale.value) {\n this.scale.value = newScale;\n updated = true;\n }\n if (!position.equals(this.translate.value)) {\n this.translate.value.copy(position);\n updated = true;\n }\n if (!quaternion.equals(this.rotate.value)) {\n this.rotate.value.copy(quaternion);\n updated = true;\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\nexport class CovSplatTransformer {\n basis: DynoMat3<\"basis\", THREE.Matrix3>;\n offset: DynoVec3;\n\n constructor() {\n this.basis = new DynoMat3({ value: new THREE.Matrix3() });\n this.offset = new DynoVec3({ value: new THREE.Vector3() });\n }\n\n // Apply the transform to a Vec3 position in a dyno program.\n apply(position: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n const rebased = mul(this.basis, position);\n return add(rebased, this.offset);\n }\n\n applyDir(dir: DynoVal<\"vec3\">): DynoVal<\"vec3\"> {\n return mul(this.basis, dir);\n }\n\n // Apply the transform to a Gsplat in a dyno program.\n applyCovSplat(covsplat: DynoVal): DynoVal {\n return new Dyno({\n inTypes: { covsplat: CovSplat, basis: \"mat3\", offset: \"vec3\" },\n outTypes: { covsplat: CovSplat },\n inputs: { covsplat, basis: this.basis, offset: this.offset },\n statements: ({ inputs, outputs }) => {\n const { covsplat, basis, offset } = inputs;\n if (!covsplat || !basis || !offset) {\n return [`${outputs.covsplat}.flags = 0u;`];\n }\n return unindentLines(`\n ${outputs.covsplat}.flags = 0u;\n if (isCovSplatActive(${covsplat}.flags)) {\n ${outputs.covsplat}.flags = ${covsplat}.flags;\n ${outputs.covsplat}.index = ${covsplat}.index;\n ${outputs.covsplat}.rgba = ${covsplat}.rgba;\n\n ${outputs.covsplat}.center = ${basis} * ${covsplat}.center + ${offset};\n \n mat3 cov = mat3(\n ${covsplat}.xxyyzz.x, ${covsplat}.xyxzyz.x, ${covsplat}.xyxzyz.y,\n ${covsplat}.xyxzyz.x, ${covsplat}.xxyyzz.y, ${covsplat}.xyxzyz.z,\n ${covsplat}.xyxzyz.y, ${covsplat}.xyxzyz.z, ${covsplat}.xxyyzz.z\n );\n cov = ${basis} * cov * transpose(${basis});\n ${outputs.covsplat}.xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n ${outputs.covsplat}.xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n `);\n },\n }).outputs.covsplat;\n }\n\n // Update the uniforms to match the given transform matrix.\n updateFromMatrix(transform: THREE.Matrix4) {\n const basis = new THREE.Matrix3().setFromMatrix4(transform);\n const offset = new THREE.Vector3().setFromMatrixColumn(transform, 3);\n\n const updated =\n !basis.equals(this.basis.value) || !offset.equals(this.offset.value);\n if (updated) {\n this.basis.value.copy(basis);\n this.offset.value.copy(offset);\n }\n return updated;\n }\n\n // Update this transform to match the object's to-world transform.\n update(object: THREE.Object3D): boolean {\n object.updateMatrixWorld();\n return this.updateFromMatrix(object.matrixWorld);\n }\n}\n\n// SplatGenerator is an Object3D that can be placed anywhere in the scene\n// to generate Gsplats into the world for SparkRenderer. All Gsplats from\n// SplatGenerators across the scene will be accumulated into a single\n// SplatAccumulator, which are sorted and rendered together.\n//\n// Each SplatGenerator has two main properties:\n// - numSplats: the number of Gsplats to generate\n// - generator: a GsplatGenerator dyno program that maps a splat index\n// to a Gsplat's properties\n// Each of these properties can be changed at anytime, however changing\n// numSplats means we no longer have a correspondence between Gsplats\n// in successive frames, meaning we can't reuse the previous Gsplat sort\n// order. Similarly, changing the generator requires re-generating the\n// shader program, which will trigger a GPU shader compilation the first\n// time (possibly a perceptible \"hickup\" in the framerate) but is cached\n// subsequence times if the generator is the same as one that was used previously.\n//\n// A SplatGenerator also has a custom frameUpdate function that is called\n// on each execution, allowing you to update uniforms or other parameters that\n// affect the generation. If the Gsplats are changed, you must call\n// updateVersion() (alternatively, set needsUpdate to true) to trigger a\n// re-generation of the Gsplats for this SplatGenerator.\n\nexport interface FrameUpdateContext {\n renderer: THREE.WebGLRenderer;\n object: SplatGenerator;\n time: number;\n deltaTime: number;\n viewToWorld: THREE.Matrix4;\n camera?: THREE.Camera;\n renderSize?: THREE.Vector2;\n globalEdits: SplatEdit[];\n lodIndices?: { numSplats: number; texture: THREE.DataTexture };\n}\n\nexport class SplatGenerator extends THREE.Object3D {\n numSplats: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n generatorError?: unknown;\n covGeneratorError?: unknown;\n frameUpdate?: (context: FrameUpdateContext) => void;\n version: number;\n mappingVersion: number;\n\n constructor({\n numSplats,\n generator,\n covGenerator,\n construct,\n update,\n }: {\n numSplats?: number;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n construct?: (object: SplatGenerator) => {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n numSplats?: number;\n frameUpdate?: (context: FrameUpdateContext) => void;\n };\n update?: (context: FrameUpdateContext) => void;\n }) {\n super();\n\n this.numSplats = numSplats ?? 0;\n this.generator = generator;\n this.covGenerator = covGenerator;\n this.frameUpdate = update;\n this.version = 0;\n this.mappingVersion = 0;\n\n if (construct) {\n const constructed = construct(this);\n // If we returned something, update our properties\n Object.assign(this, constructed);\n }\n }\n\n updateVersion() {\n this.version += 1;\n }\n\n updateMappingVersion() {\n this.mappingVersion += 1;\n this.version += 1;\n }\n\n set needsUpdate(value: boolean) {\n if (value) {\n this.updateVersion();\n }\n }\n}\n","/* @ts-self-types=\"./spark_rs.d.ts\" */\n\nexport class ChunkDecoder {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ChunkDecoder.prototype);\n obj.__wbg_ptr = ptr;\n ChunkDecoderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ChunkDecoderFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_chunkdecoder_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.chunkdecoder_finish(ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n const ret = wasm.chunkdecoder_push(this.__wbg_ptr, bytes);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ChunkDecoder.prototype[Symbol.dispose] = ChunkDecoder.prototype.free;\n\nexport class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n\nexport class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n}\nif (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function bhatt_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, rgba) {\n const ret = wasm.bhatt_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function bhatt_lod_packedsplats(num_splats, packed, extra, lod_base, rgba, encoding) {\n const ret = wasm.bhatt_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {any}\n */\nexport function decode_rad_header(bytes) {\n const ret = wasm.decode_rad_header(bytes);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @returns {ChunkDecoder}\n */\nexport function decode_to_csplatarray(file_type, path_name, encoding) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_csplatarray(ptr0, len0, ptr1, len1, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_extsplats(file_type, path_name, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_extsplats(ptr0, len0, ptr1, len1, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null} [file_type]\n * @param {string | null} [path_name]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_gsplatarray(file_type, path_name) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_gsplatarray(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} file_type\n * @param {string | null | undefined} path_name\n * @param {any} encoding\n * @param {Uint32Array | null} [sh1_codes]\n * @param {Uint32Array | null} [sh2_codes]\n * @param {Uint32Array | null} [sh3_codes]\n * @returns {ChunkDecoder}\n */\nexport function decode_to_packedsplats(file_type, path_name, encoding, sh1_codes, sh2_codes, sh3_codes) {\n var ptr0 = isLikeNone(file_type) ? 0 : passStringToWasm0(file_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(path_name) ? 0 : passStringToWasm0(path_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.decode_to_packedsplats(ptr0, len0, ptr1, len1, encoding, isLikeNone(sh1_codes) ? 0 : addToExternrefTable0(sh1_codes), isLikeNone(sh2_codes) ? 0 : addToExternrefTable0(sh2_codes), isLikeNone(sh3_codes) ? 0 : addToExternrefTable0(sh3_codes));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ChunkDecoder.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n */\nexport function dispose_lod_tree(lod_id) {\n wasm.dispose_lod_tree(lod_id);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.dynamic_traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null} [extra]\n * @returns {GsplatArray}\n */\nexport function extsplats_to_gsplatarray(num_splats, ext1, ext2, extra) {\n const ret = wasm.extsplats_to_gsplatarray(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} lod_id\n * @param {number} level\n * @returns {object}\n */\nexport function get_lod_tree_level(lod_id, level) {\n const ret = wasm.get_lod_tree_level(lod_id, level);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer() {\n const ret = wasm.get_raycast_buffer();\n return ret;\n}\n\n/**\n * @returns {Uint32Array}\n */\nexport function get_raycast_buffer2() {\n const ret = wasm.get_raycast_buffer2();\n return ret;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} lod_tree\n * @returns {object}\n */\nexport function init_lod_tree(num_splats, lod_tree) {\n const ret = wasm.init_lod_tree(num_splats, lod_tree);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} capacity\n * @returns {object}\n */\nexport function new_lod_tree(capacity) {\n const ret = wasm.new_lod_tree(capacity);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} orig_lod_id\n * @returns {object}\n */\nexport function new_shared_lod_tree(orig_lod_id) {\n const ret = wasm.new_shared_lod_tree(orig_lod_id);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {CsplatArray}\n */\nexport function packedsplats_to_csplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_csplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return CsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {any} encoding\n * @returns {GsplatArray}\n */\nexport function packedsplats_to_gsplatarray(num_splats, packed, extra, encoding) {\n const ret = wasm.packedsplats_to_gsplatarray(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return GsplatArray.__wrap(ret[0]);\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @returns {Float32Array}\n */\nexport function raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count) {\n const ret = wasm.raycast_ext_buffers(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} count\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_buffer(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, count, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @param {number} origin_x\n * @param {number} origin_y\n * @param {number} origin_z\n * @param {number} dir_x\n * @param {number} dir_y\n * @param {number} dir_z\n * @param {number} min_opacity\n * @param {number} near\n * @param {number} far\n * @param {number} num_splats\n * @param {Uint32Array} packed_splats\n * @param {number} ln_scale_min\n * @param {number} ln_scale_max\n * @param {boolean} lod_opacity\n * @returns {Float32Array}\n */\nexport function raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity) {\n const ret = wasm.raycast_packed_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, min_opacity, near, far, num_splats, packed_splats, ln_scale_min, ln_scale_max, lod_opacity);\n return ret;\n}\n\n/**\n * @returns {boolean}\n */\nexport function simd_enabled() {\n const ret = wasm.simd_enabled();\n return ret !== 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint16Array} readback\n * @param {Uint32Array} ordering\n * @returns {number}\n */\nexport function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} ext1\n * @param {Uint32Array} ext2\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null} [rgba]\n * @returns {object}\n */\nexport function tiny_lod_extsplats(num_splats, ext1, ext2, extra, lod_base, merge_filter, rgba) {\n const ret = wasm.tiny_lod_extsplats(num_splats, ext1, ext2, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba));\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} num_splats\n * @param {Uint32Array} packed\n * @param {object | null | undefined} extra\n * @param {number} lod_base\n * @param {boolean} merge_filter\n * @param {Uint8Array | null | undefined} rgba\n * @param {any} encoding\n * @returns {object}\n */\nexport function tiny_lod_packedsplats(num_splats, packed, extra, lod_base, merge_filter, rgba, encoding) {\n const ret = wasm.tiny_lod_packedsplats(num_splats, packed, isLikeNone(extra) ? 0 : addToExternrefTable0(extra), lod_base, merge_filter, isLikeNone(rgba) ? 0 : addToExternrefTable0(rgba), encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {number} max_splats\n * @param {number} pixel_scale_limit\n * @param {number | null | undefined} _last_pixel_limit\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} root_pages\n * @param {Float32Array} view_to_objects\n * @param {Float32Array} lod_scales\n * @param {Float32Array} behind_foveates\n * @param {Float32Array} cone_foveates\n * @param {Float32Array} cone_fov0s\n * @param {Float32Array} cone_fovs\n * @returns {object}\n */\nexport function traverse_lod_trees(max_splats, pixel_scale_limit, _last_pixel_limit, lod_ids, root_pages, view_to_objects, lod_scales, behind_foveates, cone_foveates, cone_fov0s, cone_fovs) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(root_pages, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(view_to_objects, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(lod_scales, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passArrayF32ToWasm0(behind_foveates, wasm.__wbindgen_malloc);\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passArrayF32ToWasm0(cone_foveates, wasm.__wbindgen_malloc);\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passArrayF32ToWasm0(cone_fov0s, wasm.__wbindgen_malloc);\n const len6 = WASM_VECTOR_LEN;\n const ptr7 = passArrayF32ToWasm0(cone_fovs, wasm.__wbindgen_malloc);\n const len7 = WASM_VECTOR_LEN;\n const ret = wasm.traverse_lod_trees(max_splats, pixel_scale_limit, isLikeNone(_last_pixel_limit) ? 0x100000001 : Math.fround(_last_pixel_limit), ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {Uint32Array} lod_ids\n * @param {Uint32Array} page_bases\n * @param {Uint32Array} chunk_bases\n * @param {Uint32Array} counts\n * @param {Array} lod_trees\n * @returns {object}\n */\nexport function update_lod_trees(lod_ids, page_bases, chunk_bases, counts, lod_trees) {\n const ptr0 = passArray32ToWasm0(lod_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(page_bases, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray32ToWasm0(chunk_bases, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArray32ToWasm0(counts, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.update_lod_trees(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, lod_trees);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nexport function wasm_start() {\n wasm.wasm_start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_fd4646b401926788: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_99cabae501c0a8a0: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_26bffbe236bf73f9: function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_08463b1df38a7e29: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_6c60b2e8ad0e9383: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_a98c8da6557e63de: function(arg0, arg1, arg2) {\n arg0.set(getArrayF32FromWasm0(arg1, arg2));\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U32)) -> NamedExternref(\"Uint32Array\")`.\n const ret = getArrayU32FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./spark_rs_bg.js\": import0,\n };\n}\n\nconst ChunkDecoderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\nconst CsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\nconst GsplatArrayFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint16ArrayMemory0 = null;\nfunction getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","function b64ToUint6(nChr) {\n return nChr > 64 && nChr < 91\n ? nChr - 65\n : nChr > 96 && nChr < 123\n ? nChr - 71\n : nChr > 47 && nChr < 58\n ? nChr + 4\n : nChr === 43\n ? 62\n : nChr === 47\n ? 63\n : 0\n}\n\nfunction base64ToUint8(sBase64, nBlocksSize) {\n const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, \"\")\n const nInLen = sB64Enc.length\n const nOutLen = nBlocksSize\n ? Math.ceil(((nInLen * 3 + 1) >> 2) / nBlocksSize) * nBlocksSize\n : (nInLen * 3 + 1) >> 2\n const taBytes = new Uint8Array(nOutLen)\n\n let nMod3\n let nMod4\n let nUint24 = 0\n let nOutIdx = 0\n for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4))\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n nMod3 = 0\n while (nMod3 < 3 && nOutIdx < nOutLen) {\n taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255\n nMod3++\n nOutIdx++\n }\n nUint24 = 0\n }\n }\n\n return taBytes\n}\nfunction toUint8(b64) {\n if (typeof Uint8Array.fromBase64 === \"function\") return Uint8Array.fromBase64(b64)\n let bin = atob(b64)\n let len = bin.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = bin.charCodeAt(i)\n }\n return bytes\n}\n\nconst decode64 = typeof atob === \"function\" ? toUint8 : base64ToUint8\n\nexport default decode64\n","import init_wasm from \"spark-rs\";\nimport WASM from \"spark-rs/spark_rs_bg.wasm?arraybuffer&base64\";\n\nexport const WASM_MODULE = WebAssembly.compile(WASM);\n\n// Flag indicating if the spark-rs project has been initialized\nlet initialized = false;\n\n/**\n * Promise for module instantiation, ensuring calls to\n * imports from the spark-rs project can be used.\n */\nexport const initialization = init_wasm({ module_or_path: WASM_MODULE }).then(\n (_) => {\n initialized = true;\n },\n);\n\n/**\n * Indicates if the wasm module instantiation has completed or not.\n */\nexport function isInitialized() {\n return initialized;\n}\n","import { getTransferable } from \"./utils\";\nimport { WASM_MODULE } from \"./wasm\";\nimport BundledWorker from \"./worker?worker&inline\";\n\ntype PromiseRecord = {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n onStatus?: (data: unknown) => void;\n};\n\nexport class SplatWorker {\n worker: Worker;\n queue: (() => void)[] | null = null;\n messages: Record = {};\n static currentId = 0;\n\n constructor() {\n this.worker = new BundledWorker();\n this.worker.onmessage = (event) => this.onMessage(event);\n WASM_MODULE.then((module) => {\n this.worker.postMessage({ name: \"init-wasm\", module });\n });\n }\n\n onMessage(event: MessageEvent) {\n const { id, result, error, status } = event.data;\n const promise = this.messages[id];\n if (promise) {\n if (error !== undefined) {\n delete this.messages[id];\n promise.reject(error);\n } else if (status !== undefined) {\n promise.onStatus?.(status);\n } else {\n delete this.messages[id];\n promise.resolve(result);\n }\n }\n }\n\n tryExclusive(callback: (worker: SplatWorker) => Promise) {\n return this.queue == null ? this.exclusive(callback) : null;\n }\n\n async exclusive(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const queue = this.queue;\n if (queue != null) {\n await new Promise((resolve) => {\n queue.push(() => resolve(undefined));\n });\n } else {\n this.queue = [];\n }\n\n try {\n return await callback(this);\n } finally {\n if (this.queue != null) {\n if (this.queue.length === 0) {\n this.queue = null;\n } else {\n const waiter = this.queue.shift() as () => void;\n waiter();\n }\n }\n }\n }\n\n async call(\n name: string,\n args: unknown,\n options: { onStatus?: (data: unknown) => void } = {},\n ): Promise {\n const id = ++SplatWorker.currentId;\n const promise = new Promise((resolve, reject) => {\n this.messages[id] = { resolve, reject, onStatus: options.onStatus };\n });\n this.worker.postMessage(\n { id, name, args },\n { transfer: getTransferable(args) },\n );\n return await promise;\n }\n\n dispose() {\n this.worker.terminate();\n\n const messages = Object.values(this.messages);\n this.messages = {};\n for (const message of messages) {\n message.reject(new Error(\"Worker terminate\"));\n }\n }\n}\n\nexport class NewSplatWorkerPool {\n maxWorkers;\n numWorkers = 0;\n freelist: SplatWorker[] = [];\n queue: ((worker: SplatWorker) => void)[] = [];\n\n constructor(maxWorkers = 4) {\n this.maxWorkers = maxWorkers;\n }\n\n async withWorker(\n callback: (worker: SplatWorker) => Promise,\n ): Promise {\n const worker = await this.allocWorker();\n try {\n return await callback(worker);\n } finally {\n this.freeWorker(worker);\n }\n }\n\n async allocWorker(): Promise {\n const worker = this.freelist.pop();\n if (worker) {\n return worker;\n }\n\n if (this.numWorkers < this.maxWorkers) {\n const worker = new SplatWorker();\n this.numWorkers += 1;\n return worker;\n }\n\n return new Promise((resolve) => {\n this.queue.push(resolve);\n });\n }\n\n freeWorker(worker: SplatWorker) {\n if (this.numWorkers > this.maxWorkers) {\n // Worker no longer needed\n this.numWorkers -= 1;\n return;\n }\n\n const waiter = this.queue.shift();\n if (waiter) {\n waiter(worker);\n return;\n }\n\n this.freelist.push(worker);\n }\n}\n\nexport const workerPool = new NewSplatWorkerPool();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\n\nimport type { RgbaArray } from \"./RgbaArray\";\nimport type { GsplatGenerator } from \"./SplatGenerator\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n DynoProgram,\n DynoProgramTemplate,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n DynoVec4,\n add,\n dynoBlock,\n normalize,\n outputPackedSplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport {\n type Gsplat,\n TPackedSplats,\n combineGsplat,\n definePackedSplats,\n readPackedSplat,\n splatTexCoord,\n splitGsplat,\n} from \"./dyno/splats\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, setPackedSplat, unpackSplat } from \"./utils\";\n\n// Initialize a PackedSplats collection from source data via\n// url, fileBytes, or packedArray. Creates an empty array if none are set,\n// and splat data can be constructed using pushSplat()/setSplat(). The maximum\n// splat size allocation will grow automatically, starting from maxSplats.\nexport type PackedSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided packed data array, where each 4 consecutive uint32 values\n // encode one \"packed\" Gsplat. (default: undefined)\n packedArray?: Uint32Array;\n // Override number of splats in packed array to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the PackedSplats\n lodSplats?: PackedSplats;\n};\n\n// A PackedSplats is a collection of Gaussian splats, packed into a format that\n// takes exactly 16 bytes per Gsplat to maximize memory and cache efficiency.\n// The center xyz coordinates are encoded as float16 (3 x 2 bytes), scale xyz\n// as 3 x uint8 that encode a log scale from e^-12 to e^9, rgba as 4 x uint8,\n// and quaternion encoded via axis+angle using 2 x uint8 for octahedral encoding\n// of the axis direction and a uint8 to encode rotation amount from 0..Pi.\n\nexport class PackedSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n packedArray: Uint32Array | null = null;\n extra: Record;\n maxSh = 3;\n splatEncoding?: SplatEncoding;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: PackedSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n // Either target or source will be non-null, depending on whether the PackedSplats\n // is being used as a data source or generated to.\n target: THREE.WebGLArrayRenderTarget | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source packedArray is updated to have it upload to GPU\n needsUpdate = true;\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoRgbMinMaxLnScaleMinMax: DynoUniform<\"vec4\", \"rgbMinMaxLnScaleMinMax\">;\n dynoNumSh: DynoInt<\"numSh\">;\n dynoShMax: DynoVec3;\n\n constructor(options: PackedSplatsOptions = {}) {\n this.extra = {};\n this.dyno = new DynoPackedSplats({ packedSplats: this });\n this.dynoRgbMinMaxLnScaleMinMax = new DynoVec4({\n key: \"rgbMinMaxLnScaleMinMax\",\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n update: (value) => {\n value.set(\n this.splatEncoding?.rgbMin ?? 0.0,\n this.splatEncoding?.rgbMax ?? 1.0,\n this.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n return value;\n },\n });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n this.dynoShMax = new DynoVec3({\n key: \"shMax\",\n value: new THREE.Vector3(),\n update: (value) => {\n value.set(\n this.splatEncoding?.sh1Max ?? 1.0,\n this.splatEncoding?.sh2Max ?? 1.0,\n this.splatEncoding?.sh3Max ?? 1.0,\n );\n return value;\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: PackedSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.splatEncoding = options.splatEncoding;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: PackedSplatsOptions) {\n this.extra = options.extra ?? {};\n this.splatEncoding = options.splatEncoding ?? this.splatEncoding;\n this.lodSplats = options.lodSplats;\n\n if (options.packedArray) {\n this.packedArray = options.packedArray;\n this.numSplats = options.numSplats ?? this.packedArray.length / 4;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats = Math.floor(this.packedArray.length / 4);\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n }\n }\n\n async asyncInitialize(options: PackedSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n packedSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target.texture.source.data = null;\n this.target = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source.source.data = null;\n this.source = null;\n }\n\n this.packedArray = null;\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"PackedSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1 ? 0 : !this.extra.sh2 ? 1 : !this.extra.sh3 ? 2 : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readPackedSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();\n let { rgb } = evaluatePackedSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax: this.dynoShMax,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 2,\n );\n if (sh1.length < maxSplats * 2) {\n const newSh1 = new Uint32Array(maxSplats * 2);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n\n const texture = new THREE.DataArrayTexture(sh1, width, height, depth);\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = new THREE.DataArrayTexture(sh2, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3Texture = this.extra.sh3Texture as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3Texture) {\n let sh3 = this.extra.sh3 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3.length / 4,\n );\n if (sh3.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3);\n this.extra.sh3 = newSh3;\n sh3 = newSh3;\n }\n\n const texture = new THREE.DataArrayTexture(sh3, width, height, depth);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n\n sh3Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3Texture = sh3Texture;\n }\n\n return { sh1Texture, sh2Texture, sh3Texture };\n }\n\n // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): Uint32Array {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;\n\n if (!this.packedArray || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(this.maxSplats * 4);\n if (this.packedArray) {\n // Copy over existing data\n newArray.set(this.packedArray);\n }\n this.packedArray = newArray;\n }\n return this.packedArray;\n }\n\n // Ensure the extra array for the given level is large enough to hold numSplats\n ensureSplatsSh(level: number, numSplats: number): Uint32Array {\n let wordsPerSplat: number;\n let key: string;\n if (level === 0) {\n return this.ensureSplats(numSplats);\n }\n if (level === 1) {\n // 3 x 3 uint7 = 63 bits = 2 uint32\n wordsPerSplat = 2;\n key = \"sh1\";\n } else if (level === 2) {\n // 5 x 3 uint8 = 120 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh2\";\n } else if (level === 3) {\n // 7 x 3 uint6 = 126 bits = 4 uint32\n wordsPerSplat = 4;\n key = \"sh3\";\n } else {\n throw new Error(`Invalid level: ${level}`);\n }\n\n // Figure out our current and desired maxSplats\n let maxSplats: number = !this.extra[key]\n ? 0\n : (this.extra[key] as Uint32Array).length / wordsPerSplat;\n const targetSize =\n numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);\n\n if (!this.extra[key] || targetSize > maxSplats) {\n // Reallocate the array\n maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray = new Uint32Array(maxSplats * wordsPerSplat);\n if (this.extra[key]) {\n // Copy over existing data\n newArray.set(this.extra[key] as Uint32Array);\n }\n this.extra[key] = newArray;\n }\n return this.extra[key] as Uint32Array;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (!this.packedArray || index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return unpackSplat(this.packedArray, index, this.splatEncoding);\n }\n\n // Set all PackedSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(index + 1);\n setPackedSplat(\n packedSplats,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const packedSplats = this.ensureSplats(this.numSplats + 1);\n setPackedSplat(\n packedSplats,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.packedArray || !this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = unpackSplat(this.packedArray, i, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Ensures our PackedSplats.target render target has enough space to generate\n // maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate(maxSplats: number): boolean {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n if (this.target) {\n this.target.dispose();\n }\n\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n });\n this.target.texture.format = THREE.RGBAIntegerFormat;\n this.target.texture.type = THREE.UnsignedIntType;\n this.target.texture.internalFormat = \"RGBA32UI\";\n this.target.scissorTest = true;\n return true;\n }\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Returns a THREE.DataArrayTexture representing the PackedSplats content as\n // a Uint32x4 data array texture (2048 x 2048 x depth in size)\n getTexture(): THREE.DataArrayTexture {\n if (this.target) {\n // Return the render target's texture\n return this.target.texture;\n }\n if (this.source || this.packedArray) {\n // Update source texture if needed and return\n const source = this.maybeUpdateSource();\n return source;\n }\n\n return PackedSplats.getEmptyArray;\n }\n\n // Check if source texture needs to be created/updated\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.packedArray) {\n throw new Error(\"No packed splats\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.source = new THREE.DataArrayTexture(\n this.packedArray as Uint32Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAIntegerFormat;\n this.source.type = THREE.UnsignedIntType;\n this.source.internalFormat = \"RGBA32UI\";\n this.source.needsUpdate = true;\n } else if (this.packedArray.buffer !== this.source.image.data.buffer) {\n // The source texture is the right size, update the data\n this.source.image.data = new Uint8Array(this.packedArray.buffer);\n }\n // Indicate to Three.js that the source texture needs to be uploaded to the GPU\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n static getEmptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(generator: GsplatGenerator): {\n program: DynoProgram;\n material: THREE.RawShaderMaterial;\n } {\n let program = PackedSplats.generatorProgram.get(generator);\n if (!program) {\n // A Gsplat needs to be turned into a packed uvec4 for the dyno graph\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n generator.inputs.index = index;\n const gsplat = generator.outputs.gsplat;\n const output = outputPackedSplat(\n gsplat,\n this.dynoRgbMinMaxLnScaleMinMax,\n );\n roots.push(output);\n return undefined;\n },\n );\n if (!PackedSplats.programTemplate) {\n PackedSplats.programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Template,\n );\n }\n // Create a program from the template and graph\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: { output: \"target\" },\n template: PackedSplats.programTemplate,\n });\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n PackedSplats.generatorProgram.set(generator, program);\n }\n\n // Prepare and update our material we'll use to render the Gsplats\n const material = program.prepareMaterial();\n PackedSplats.fullScreenQuad.material = material;\n return { program, material };\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Executes a dyno program specified by generator which is any DynoBlock that\n // maps { index: \"int\" } to { gsplat: Gsplat }. This is called in\n // SparkRenderer.updateInternal() to re-generate Gsplats in the scene for\n // SplatGenerator instances whose version is newer than what was generated\n // for it last time.\n generate({\n generator,\n base,\n count,\n renderer,\n }: {\n generator: GsplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }): { nextBase: number } {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureSplats\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(generator);\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n PackedSplats.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const packedArray = (this.packedArray as Uint32Array).slice();\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodPackedSplats\" : \"tinyLodPackedSplats\",\n {\n numSplats: this.numSplats,\n packedArray,\n extra,\n lodBase,\n rgba,\n encoding: this.splatEncoding ?? DEFAULT_SPLAT_ENCODING,\n },\n )) as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n };\n });\n\n const lodSplats = new PackedSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new PackedSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static programTemplate: DynoProgramTemplate | null = null;\n\n // Cache for GsplatGenerator programs\n static generatorProgram = new WeakMap();\n\n // Static full-screen quad for pseudo-compute shader rendering\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\n// You can use a PackedSplats as a dyno block using the function\n// dyno.readPackedSplats(packedSplats.dyno, dynoIndex) where\n// dynoIndex is of type DynoVal<\"int\">. If you need to be able to change\n// the input PackedSplats dynamically, however, you should create a\n// DynoPackedSplats, whose property packedSplats you can change to any\n// PackedSplats and that will be used in the dyno shader program.\n\nexport const dynoPackedSplats = (packedSplats?: PackedSplats) =>\n new DynoPackedSplats({ packedSplats });\n\nexport class DynoPackedSplats extends DynoUniform<\n typeof TPackedSplats,\n \"packedSplats\",\n {\n textureArray: THREE.DataArrayTexture;\n numSplats: number;\n rgbMinMaxLnScaleMinMax: THREE.Vector4;\n lodOpacity: boolean;\n }\n> {\n packedSplats?: PackedSplats;\n\n constructor({ packedSplats }: { packedSplats?: PackedSplats } = {}) {\n super({\n key: \"packedSplats\",\n type: TPackedSplats,\n globals: () => [definePackedSplats],\n value: {\n textureArray: PackedSplats.getEmptyArray,\n numSplats: 0,\n rgbMinMaxLnScaleMinMax: new THREE.Vector4(\n 0,\n 1,\n LN_SCALE_MIN,\n LN_SCALE_MAX,\n ),\n lodOpacity: false,\n },\n update: (value) => {\n value.textureArray =\n this.packedSplats?.getTexture() ?? PackedSplats.getEmptyArray;\n value.numSplats = this.packedSplats?.numSplats ?? 0;\n value.rgbMinMaxLnScaleMinMax.set(\n this.packedSplats?.splatEncoding?.rgbMin ?? 0,\n this.packedSplats?.splatEncoding?.rgbMax ?? 1,\n this.packedSplats?.splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n this.packedSplats?.splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n );\n value.lodOpacity =\n this.packedSplats?.splatEncoding?.lodOpacity ?? false;\n return value;\n },\n });\n this.packedSplats = packedSplats;\n }\n}\n\nexport const defineEvalPackedSH1 = unindent(`\n vec3 evaluatePackedSH1(uvec2 packedData, vec3 viewDir, float sh1Max) {\n // Extract sint7 values packed into 2 x uint32\n vec3 sh1_0 = vec3(ivec3(\n int(packedData.x << 25u) >> 25,\n int(packedData.x << 18u) >> 25,\n int(packedData.x << 11u) >> 25\n ));\n vec3 sh1_1 = vec3(ivec3(\n int(packedData.x << 4u) >> 25,\n int((packedData.x >> 3u) | (packedData.y << 29u)) >> 25,\n int(packedData.y << 22u) >> 25\n ));\n vec3 sh1_2 = vec3(ivec3(\n int(packedData.y << 15u) >> 25,\n int(packedData.y << 8u) >> 25,\n int(packedData.y << 1u) >> 25\n ));\n\n vec3 rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n return rgb * (sh1Max / 63.0);\n }\n`);\n\nexport const defineEvalPackedSH2 = unindent(`\n vec3 evaluatePackedSH2(uvec4 packedData, vec3 viewDir, float sh2Max) {\n // Extract sint8 values packed into 4 x uint32\n vec3 sh2_0 = vec3(ivec3(\n int(packedData.x << 24u) >> 24,\n int(packedData.x << 16u) >> 24,\n int(packedData.x << 8u) >> 24\n ));\n vec3 sh2_1 = vec3(ivec3(\n int(packedData.x) >> 24,\n int(packedData.y << 24u) >> 24,\n int(packedData.y << 16u) >> 24\n ));\n vec3 sh2_2 = vec3(ivec3(\n int(packedData.y << 8u) >> 24,\n int(packedData.y) >> 24,\n int(packedData.z << 24u) >> 24\n ));\n vec3 sh2_3 = vec3(ivec3(\n int(packedData.z << 16u) >> 24,\n int(packedData.z << 8u) >> 24,\n int(packedData.z) >> 24\n ));\n vec3 sh2_4 = vec3(ivec3(\n int(packedData.w << 24u) >> 24,\n int(packedData.w << 16u) >> 24,\n int(packedData.w << 8u) >> 24\n ));\n\n vec3 rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n return rgb * (sh2Max / 127.0);\n }\n`);\n\nexport const defineEvalPackedSH3 = unindent(`\n vec3 evaluatePackedSH3(uvec4 packedData, vec3 viewDir, float sh3Max) {\n // Extract sint6 values packed into 4 x uint32\n vec3 sh3_0 = vec3(ivec3(\n int(packedData.x << 26u) >> 26,\n int(packedData.x << 20u) >> 26,\n int(packedData.x << 14u) >> 26\n ));\n vec3 sh3_1 = vec3(ivec3(\n int(packedData.x << 8u) >> 26,\n int(packedData.x << 2u) >> 26,\n int((packedData.x >> 4u) | (packedData.y << 28u)) >> 26\n ));\n vec3 sh3_2 = vec3(ivec3(\n int(packedData.y << 22u) >> 26,\n int(packedData.y << 16u) >> 26,\n int(packedData.y << 10u) >> 26\n ));\n vec3 sh3_3 = vec3(ivec3(\n int(packedData.y << 4u) >> 26,\n int((packedData.y >> 2u) | (packedData.z << 30u)) >> 26,\n int(packedData.z << 24u) >> 26\n ));\n vec3 sh3_4 = vec3(ivec3(\n int(packedData.z << 18u) >> 26,\n int(packedData.z << 12u) >> 26,\n int(packedData.z << 6u) >> 26\n ));\n vec3 sh3_5 = vec3(ivec3(\n int(packedData.z) >> 26,\n int(packedData.w << 26u) >> 26,\n int(packedData.w << 20u) >> 26\n ));\n vec3 sh3_6 = vec3(ivec3(\n int(packedData.w << 14u) >> 26,\n int(packedData.w << 8u) >> 26,\n int(packedData.w << 2u) >> 26\n ));\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n vec3 rgb = sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n return rgb * (sh3Max / 31.0);\n }\n`);\n\nexport function evaluatePackedSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3Texture?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n shMax: DynoVal<\"vec3\">;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3Texture: \"usampler2DArray\",\n shMax: \"vec3\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3Texture,\n shMax,\n },\n globals: () => [\n defineEvalPackedSH1,\n defineEvalPackedSH2,\n defineEvalPackedSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n vec3 sh1Rgb = evaluatePackedSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0).rg, ${inputs.viewDir}, ${inputs.shMax}.x);\n rgb += sh1Rgb;\n `),\n );\n if (inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 2) {\n vec3 sh2Rgb = evaluatePackedSH2(texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.y);\n rgb += sh2Rgb;\n `),\n );\n if (inputs.sh3Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n vec3 sh3Rgb = evaluatePackedSH3(texelFetch(${inputs.sh3Texture}, ${inputs.coord}, 0), ${inputs.viewDir}, ${inputs.shMax}.z);\n rgb += sh3Rgb;\n }\n `),\n );\n }\n lines.push(\"}\");\n }\n lines.push(\"}\");\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n","import { unzipSync } from \"fflate\";\nimport { FileLoader, Loader, type LoadingManager } from \"three\";\nimport { ExtSplats, type ExtSplatsOptions } from \"./ExtSplats\";\nimport { PackedSplats, type PackedSplatsOptions } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { type SplatEncoding, SplatFileType } from \"./defines\";\nimport { PlyReader } from \"./ply\";\nimport { decompressPartialGzip, getTextureSize } from \"./utils\";\n\n// SplatLoader implements the THREE.Loader interface and supports loading a variety\n// of different Gsplat file formats. Formats .PLY and .SPZ can be auto-detected\n// from the file contents, while .SPLAT and .KSPLAT require either having the\n// appropriate file extension as part of the path, or it can be explicitly set\n// in the loader using the fileType property.\n\nexport class SplatLoader extends Loader {\n fileLoader: FileLoader;\n\n constructor(manager?: LoadingManager) {\n super(manager);\n this.fileLoader = new FileLoader(manager);\n }\n\n load(\n url: string,\n onLoad?: (decoded: PackedSplats | ExtSplats) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (error: unknown) => void,\n ) {\n return this.loadInternal({\n url,\n onLoad,\n onProgress,\n onError,\n });\n }\n\n async loadAsync(\n url: string,\n onProgress?: (event: ProgressEvent) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n this.load(\n url,\n (decoded) => {\n resolve(decoded);\n },\n onProgress,\n reject,\n );\n });\n }\n\n parse(packedSplats: PackedSplats): SplatMesh {\n return new SplatMesh({ packedSplats });\n }\n\n loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad,\n onProgress,\n onError,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onLoad?: (decoded: PackedSplats | ExtSplats) => void;\n onProgress?: (event: ProgressEvent) => void;\n onError?: (error: unknown) => void;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n if (fileBytes instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(fileBytes);\n }\n const resolvedURL = fileBytes\n ? undefined\n : this.manager.resolveURL((this.path ?? \"\") + (url ?? \"\"));\n\n let readStream = stream?.getReader();\n\n this.manager.itemStart(resolvedURL ?? \"\");\n // let calledOnLoad = false;\n\n workerPool\n .withWorker(async (worker) => {\n // If LoD is set and not falsey\n const splatsLod = packedSplats?.lod ?? extSplats?.lod;\n if (splatsLod) {\n lod = splatsLod;\n }\n const splatsNonLod = packedSplats?.nonLod ?? extSplats?.nonLod;\n if (splatsNonLod !== undefined) {\n nonLod = splatsNonLod;\n }\n\n // let init: {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // } | null = null;\n // let initExt: {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // } | null = null;\n\n const onStatus = async (data: unknown) => {\n const { loaded, total } = data as { loaded: number; total: number };\n if (loaded !== undefined && onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n\n if ((data as { nextChunk?: boolean }).nextChunk) {\n let chunk: Uint8Array;\n if (!readStream) {\n chunk = new Uint8Array(0);\n } else {\n const { done, value } = await readStream.read();\n if (done) {\n readStream.releaseLock();\n readStream = undefined;\n chunk = new Uint8Array(0);\n } else {\n chunk = value;\n }\n }\n worker.call(\"nextChunk\", { chunk });\n }\n\n // if ((data as { orig?: unknown }).orig) {\n // if (extSplats) {\n // initExt = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // ext0: Uint32Array;\n // ext1: Uint32Array;\n // extra: Record;\n // };\n // extSplats.initialize({\n // numSplats: initExt?.numSplats,\n // extArrays: [initExt?.ext0, initExt?.ext1],\n // extra: initExt?.extra,\n // });\n // calledOnLoad = true;\n // onLoad?.(extSplats);\n // } else if (packedSplats) {\n // init = (data as { orig?: unknown }).orig as {\n // numSplats: number;\n // packedArray: Uint32Array;\n // extra: Record;\n // splatEncoding: SplatEncoding;\n // };\n // packedSplats.initialize({\n // numSplats: init?.numSplats,\n // packedArray: init?.packedArray,\n // extra: init?.extra,\n // splatEncoding: init?.splatEncoding,\n // });\n // calledOnLoad = true;\n // onLoad?.(packedSplats);\n // } else {\n // console.warn(\"No splats to initialize\");\n // }\n // }\n };\n\n const basedUrl = resolvedURL\n ? new URL(resolvedURL, window.location.href).toString()\n : undefined;\n const decoded = (await worker.call(\n extSplats ? \"loadExtSplats\" : \"loadPackedSplats\",\n {\n url: basedUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n fileBytes: fileBytes?.slice(),\n fileType,\n pathName: resolvedURL || fileName,\n chunked: stream !== undefined,\n chunkedLength: streamLength,\n encoding: packedSplats?.splatEncoding,\n lod,\n lodBase,\n nonLod,\n lodAbove,\n },\n { onStatus },\n )) as {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n lodSplats?:\n | {\n numSplats: number;\n packedArray?: Uint32Array;\n ext0?: Uint32Array;\n ext1?: Uint32Array;\n extra: Record;\n splatEncoding?: SplatEncoding;\n }\n | PackedSplats\n | ExtSplats;\n };\n\n if (decoded.lodSplats) {\n if (extSplats) {\n decoded.lodSplats = new ExtSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n }),\n });\n } else {\n decoded.lodSplats = new PackedSplats({\n ...(decoded.lodSplats as {\n numSplats: number;\n packedArray: Uint32Array;\n extra: Record;\n splatEncoding: SplatEncoding;\n }),\n maxSplats: packedSplats?.maxSplats,\n });\n }\n }\n\n if (extSplats) {\n const initExtSplats = {\n // ...(initExt ?? {}),\n ...decoded,\n };\n extSplats.initialize(initExtSplats as ExtSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(extSplats);\n // }\n } else {\n const initSplats = {\n // ...(init ?? {}),\n ...decoded,\n };\n if (packedSplats) {\n packedSplats.initialize(initSplats as PackedSplatsOptions);\n // if (!calledOnLoad) {\n onLoad?.(packedSplats);\n // }\n } else {\n // if (!calledOnLoad) {\n onLoad?.(new PackedSplats(initSplats as PackedSplatsOptions));\n // }\n }\n }\n })\n .catch((error) => {\n this.manager.itemError(resolvedURL ?? \"\");\n onError?.(error);\n })\n .finally(() => {\n this.manager.itemEnd(resolvedURL ?? \"\");\n });\n }\n\n async loadInternalAsync({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n }: {\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n url?: string;\n fileBytes?: Uint8Array | ArrayBuffer;\n fileType?: SplatFileType;\n fileName?: string;\n stream?: ReadableStream;\n streamLength?: number;\n onProgress?: (event: ProgressEvent) => void;\n lod?: boolean;\n nonLod?: boolean;\n lodAbove?: number;\n lodBase?: number;\n }) {\n return new Promise((resolve, reject) => {\n this.loadInternal({\n packedSplats,\n extSplats,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onLoad: resolve,\n onProgress,\n onError: reject,\n lod,\n nonLod,\n lodAbove,\n lodBase,\n });\n });\n }\n}\n\nasync function fetchWithProgress(\n request: Request,\n onProgress?: (event: ProgressEvent) => void,\n) {\n const response = await fetch(request);\n if (!response.ok) {\n throw new Error(\n `${response.status} \"${response.statusText}\" fetching URL: ${request.url}`,\n );\n }\n if (!response.body) {\n throw new Error(`Response body is null for URL: ${request.url}`);\n }\n\n const reader = response.body.getReader();\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n try {\n const contentLength = Number.parseInt(\n response.headers.get(\"Content-Length\") || \"0\",\n );\n const total = Number.isNaN(contentLength) ? 0 : contentLength;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n loaded += value.length;\n\n if (onProgress) {\n onProgress(\n new ProgressEvent(\"progress\", {\n lengthComputable: total !== 0,\n loaded,\n total,\n }),\n );\n }\n }\n } catch (err) {\n try {\n const reason = err instanceof Error ? err.message : \"Unknown error\";\n await reader.cancel(reason);\n } catch {}\n throw err;\n }\n\n // Combine chunks into a single buffer\n const bytes = new Uint8Array(loaded);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.length;\n }\n return bytes.buffer;\n}\n\nexport function getSplatFileType(\n fileBytes: Uint8Array,\n): SplatFileType | undefined {\n const view = new DataView(fileBytes.buffer);\n const magic = view.getUint32(0, true);\n if ((magic & 0x00ffffff) === 0x00796c70) {\n return SplatFileType.PLY;\n }\n if ((magic & 0x00ffffff) === 0x00088b1f) {\n // Gzipped file, unpack beginning to check magic number\n const header = decompressPartialGzip(fileBytes, 4);\n const gView = new DataView(header.buffer);\n if (gView.getUint32(0, true) === 0x5053474e) {\n return SplatFileType.SPZ;\n }\n // Unknown Gzipped file type\n return undefined;\n }\n if (magic === 0x04034b50) {\n // PKZip file\n if (tryPcSogsZip(fileBytes)) {\n return SplatFileType.PCSOGSZIP;\n }\n // Unknown PKZip file type\n return undefined;\n }\n if (magic === 0x30444152) {\n return SplatFileType.RAD;\n }\n // Unknown file type\n return undefined;\n}\n\n// Returns the lowercased file extension from a path or URL\nexport function getFileExtension(pathOrUrl: string): string {\n const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];\n const lastSlash = Math.max(\n noTrailing.lastIndexOf(\"/\"),\n noTrailing.lastIndexOf(\"\\\\\"),\n );\n const filename = noTrailing.slice(lastSlash + 1);\n const lastDot = filename.lastIndexOf(\".\");\n if (lastDot <= 0 || lastDot === filename.length - 1) {\n return \"\"; // No extension\n }\n return filename.slice(lastDot + 1).toLowerCase();\n}\n\nexport function getSplatFileTypeFromPath(\n pathOrUrl: string,\n): SplatFileType | undefined {\n const extension = getFileExtension(pathOrUrl);\n if (extension === \"ply\") {\n return SplatFileType.PLY;\n }\n if (extension === \"spz\") {\n return SplatFileType.SPZ;\n }\n if (extension === \"splat\") {\n return SplatFileType.SPLAT;\n }\n if (extension === \"ksplat\") {\n return SplatFileType.KSPLAT;\n }\n if (extension === \"sog\") {\n return SplatFileType.PCSOGSZIP;\n }\n if (extension === \"rad\") {\n return SplatFileType.RAD;\n }\n return undefined;\n}\n\nexport type PcSogsJson = {\n means: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n quats: { shape: number[]; dtype: string; encoding?: string; files: string[] };\n sh0: {\n shape: number[];\n dtype: string;\n mins: number[];\n maxs: number[];\n files: string[];\n };\n shN?: {\n shape: number[];\n dtype: string;\n mins: number;\n maxs: number;\n quantization: number;\n files: string[];\n };\n};\n\nexport type PcSogsV2Json = {\n version: 2;\n count: number;\n antialias?: boolean;\n means: {\n mins: number[];\n maxs: number[];\n files: string[];\n };\n scales: {\n codebook: number[];\n files: string[];\n };\n quats: { files: string[] };\n sh0: {\n codebook: number[];\n files: string[];\n };\n shN?: {\n count: number;\n bands: number;\n codebook: number[];\n files: string[];\n };\n};\n\nexport function isPcSogs(input: ArrayBuffer | Uint8Array | string): boolean {\n // Returns true if the input seems to be a valid PC SOGS file\n return tryPcSogs(input) !== undefined;\n}\n\nexport function tryPcSogs(\n input: ArrayBuffer | Uint8Array | string,\n): PcSogsJson | PcSogsV2Json | undefined {\n // Try to parse input as SOGS JSON and see if it's valid\n try {\n let text: string;\n if (typeof input === \"string\") {\n text = input;\n } else {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n if (fileBytes.length > 65536) {\n // Should be only a few KB, definitely not a SOGS JSON file\n return undefined;\n }\n text = new TextDecoder().decode(fileBytes);\n }\n\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n return undefined;\n }\n const isVersion2 = json.version === 2;\n\n for (const key of [\"means\", \"scales\", \"quats\", \"sh0\"]) {\n if (\n !json[key] ||\n typeof json[key] !== \"object\" ||\n Array.isArray(json[key])\n ) {\n return undefined;\n }\n if (isVersion2) {\n // Expect files\n if (!json[key].files) {\n return undefined;\n }\n\n // Scales and sh0 should have codebooks\n if ((key === \"scales\" || key === \"sh0\") && !json[key].codebook) {\n return undefined;\n }\n // Means should have mins and maxs defined\n if (key === \"means\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n } else {\n // Expect shape and files\n if (!json[key].shape || !json[key].files) {\n return undefined;\n }\n // Besides 'quats' all other properties have mins and maxs\n if (key !== \"quats\" && (!json[key].mins || !json[key].maxs)) {\n return undefined;\n }\n }\n }\n // This is probably a PC SOGS file\n return json as PcSogsJson | PcSogsV2Json;\n } catch {\n return undefined;\n }\n}\n\nexport function tryPcSogsZip(\n input: ArrayBuffer | Uint8Array,\n): { name: string; json: PcSogsJson | PcSogsV2Json } | undefined {\n try {\n const fileBytes =\n input instanceof ArrayBuffer ? new Uint8Array(input) : input;\n let metaFilename: string | null = null;\n\n const unzipped = unzipSync(fileBytes, {\n filter: ({ name }) => {\n const filename = name.split(/[\\\\/]/).pop() as string;\n if (filename === \"meta.json\") {\n metaFilename = name;\n return true;\n }\n return false;\n },\n });\n if (!metaFilename) {\n return undefined;\n }\n\n // Check for PC SOGS V1 and V2 (aka SOG)\n const json = tryPcSogs(unzipped[metaFilename]);\n if (!json) {\n return undefined;\n }\n return { name: metaFilename, json };\n } catch {\n return undefined;\n }\n}\n\nexport class SplatData {\n numSplats: number;\n maxSplats: number;\n centers: Float32Array;\n scales: Float32Array;\n quaternions: Float32Array;\n opacities: Float32Array;\n colors: Float32Array;\n sh1?: Float32Array;\n sh2?: Float32Array;\n sh3?: Float32Array;\n\n constructor({ maxSplats = 1 }: { maxSplats?: number } = {}) {\n this.numSplats = 0;\n this.maxSplats = getTextureSize(maxSplats).maxSplats;\n this.centers = new Float32Array(this.maxSplats * 3);\n this.scales = new Float32Array(this.maxSplats * 3);\n this.quaternions = new Float32Array(this.maxSplats * 4);\n this.opacities = new Float32Array(this.maxSplats);\n this.colors = new Float32Array(this.maxSplats * 3);\n }\n\n pushSplat(): number {\n const index = this.numSplats;\n this.ensureIndex(index);\n this.numSplats += 1;\n return index;\n }\n\n unpushSplat(index: number) {\n if (index === this.numSplats - 1) {\n this.numSplats -= 1;\n } else {\n throw new Error(\"Cannot unpush splat from non-last position\");\n }\n }\n\n ensureCapacity(numSplats: number) {\n if (numSplats > this.maxSplats) {\n const targetSplats = Math.max(numSplats, this.maxSplats * 2);\n const newCenters = new Float32Array(targetSplats * 3);\n const newScales = new Float32Array(targetSplats * 3);\n const newQuaternions = new Float32Array(targetSplats * 4);\n const newOpacities = new Float32Array(targetSplats);\n const newColors = new Float32Array(targetSplats * 3);\n newCenters.set(this.centers);\n newScales.set(this.scales);\n newQuaternions.set(this.quaternions);\n newOpacities.set(this.opacities);\n newColors.set(this.colors);\n this.centers = newCenters;\n this.scales = newScales;\n this.quaternions = newQuaternions;\n this.opacities = newOpacities;\n this.colors = newColors;\n\n if (this.sh1) {\n const newSh1 = new Float32Array(targetSplats * 9);\n newSh1.set(this.sh1);\n this.sh1 = newSh1;\n }\n if (this.sh2) {\n const newSh2 = new Float32Array(targetSplats * 15);\n newSh2.set(this.sh2);\n this.sh2 = newSh2;\n }\n if (this.sh3) {\n const newSh3 = new Float32Array(targetSplats * 21);\n newSh3.set(this.sh3);\n this.sh3 = newSh3;\n }\n\n this.maxSplats = targetSplats;\n }\n }\n\n ensureIndex(index: number) {\n this.ensureCapacity(index + 1);\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n this.centers[index * 3] = x;\n this.centers[index * 3 + 1] = y;\n this.centers[index * 3 + 2] = z;\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n this.scales[index * 3] = scaleX;\n this.scales[index * 3 + 1] = scaleY;\n this.scales[index * 3 + 2] = scaleZ;\n }\n\n setQuaternion(index: number, x: number, y: number, z: number, w: number) {\n this.quaternions[index * 4] = x;\n this.quaternions[index * 4 + 1] = y;\n this.quaternions[index * 4 + 2] = z;\n this.quaternions[index * 4 + 3] = w;\n }\n\n setOpacity(index: number, opacity: number) {\n this.opacities[index] = opacity;\n }\n\n setColor(index: number, r: number, g: number, b: number) {\n this.colors[index * 3] = r;\n this.colors[index * 3 + 1] = g;\n this.colors[index * 3 + 2] = b;\n }\n\n setSh1(index: number, sh1: Float32Array) {\n if (!this.sh1) {\n this.sh1 = new Float32Array(this.maxSplats * 9);\n }\n for (let j = 0; j < 9; ++j) {\n this.sh1[index * 9 + j] = sh1[j];\n }\n }\n\n setSh2(index: number, sh2: Float32Array) {\n if (!this.sh2) {\n this.sh2 = new Float32Array(this.maxSplats * 15);\n }\n for (let j = 0; j < 15; ++j) {\n this.sh2[index * 15 + j] = sh2[j];\n }\n }\n\n setSh3(index: number, sh3: Float32Array) {\n if (!this.sh3) {\n this.sh3 = new Float32Array(this.maxSplats * 21);\n }\n for (let j = 0; j < 21; ++j) {\n this.sh3[index * 21 + j] = sh3[j];\n }\n }\n}\n\nexport type FileInput = {\n fileBytes: Uint8Array;\n fileType?: SplatFileType;\n pathOrUrl?: string;\n transform?: { translate?: number[]; quaternion?: number[]; scale?: number };\n};\n\nexport type TranscodeSpzInput = {\n inputs: FileInput[];\n maxSh?: number;\n clipXyz?: { min: number[]; max: number[] };\n fractionalBits?: number;\n opacityThreshold?: number;\n};\n","import * as THREE from \"three\";\nimport type { RgbaArray } from \"./RgbaArray\";\nimport { SplatLoader } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport { SPLAT_TEX_WIDTH, type SplatFileType } from \"./defines\";\nimport {\n Dyno,\n DynoInt,\n type DynoType,\n DynoUniform,\n DynoUsampler2DArray,\n type DynoVal,\n type Gsplat,\n TExtSplats,\n add,\n combineGsplat,\n defineExtSplats,\n normalize,\n readExtSplat,\n splatTexCoord,\n splitGsplat,\n sub,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { decodeExtSplat, encodeExtSplat, getTextureSize } from \"./utils\";\n\nexport type ExtSplatsOptions = {\n // URL to fetch a Gaussian splat file from (supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Reserve space for at least this many splats when constructing the collection\n // initially. The array will automatically resize past maxSplats so setting it is\n // an optional optimization. (default: 0)\n maxSplats?: number;\n // Use provided pair of uint32 arrays, where blocks of 4 uint32s in each,\n // encode an \"extended packed\" Gsplat. (default: undefined)\n extArrays?: [Uint32Array, Uint32Array];\n // Override number of splats in packed arrays to use only a subset.\n // (default: length of packed array / 4)\n numSplats?: number;\n // Callback function to programmatically create splats at initialization.\n // (default: undefined)\n construct?: (splats: ExtSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Additional splat data, such as spherical harmonics components (sh1, sh2, sh3). (default: {})\n extra?: Record;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Only create LoD if the input splat acount is above this\n lodAbove?: number;\n // The LoD version of the ExtSplats\n lodSplats?: ExtSplats;\n};\n\nexport class ExtSplats implements SplatSource {\n maxSplats = 0;\n numSplats = 0;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record = {};\n maxSh = 3;\n lod?: boolean | \"quality\";\n nonLod?: boolean;\n lodSplats?: ExtSplats;\n\n initialized: Promise;\n isInitialized = false;\n\n textures: [THREE.DataArrayTexture, THREE.DataArrayTexture];\n\n // A PackedSplats can be used in a dyno graph using the below property dyno:\n // const gsplat = dyno.readPackedSplats(this.dyno, dynoIndex);\n dyno: DynoUniform;\n dynoNumSh: DynoInt<\"numSh\">;\n\n constructor(options: ExtSplatsOptions = {}) {\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n this.textures = [ExtSplats.emptyTexture, ExtSplats.emptyTexture];\n\n this.extra = {};\n this.dyno = new DynoExtSplats({ extSplats: this });\n this.dynoNumSh = new DynoInt({\n key: \"numSh\",\n value: 0,\n update: () => {\n return Math.min(this.getNumSh(), this.maxSh);\n },\n });\n\n // The following line will be overridden by reinitialize()\n this.initialized = Promise.resolve(this);\n this.reinitialize(options);\n }\n\n reinitialize(options: ExtSplatsOptions) {\n this.isInitialized = false;\n\n this.extra = {};\n this.maxSplats = options.maxSplats ?? 0;\n this.lod = options.lod;\n this.nonLod = options.nonLod;\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.construct\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(() => {\n this.isInitialized = true;\n return this;\n });\n } else {\n this.initialize(options);\n this.isInitialized = true;\n this.initialized = Promise.resolve(this);\n }\n }\n\n initialize(options: ExtSplatsOptions) {\n this.extra = options.extra ?? {};\n this.lodSplats = options.lodSplats;\n\n if (options.extArrays) {\n this.extArrays = options.extArrays;\n this.maxSplats = Math.floor(\n Math.min(this.extArrays[0].length / 4, this.extArrays[1].length / 4),\n );\n this.numSplats = options.numSplats ?? this.maxSplats;\n\n // Calculate number of horizontal texture rows that could fit in array.\n // A properly initialized packedArray should already take into account the\n // width and height of the texture and be rounded up with padding.\n this.maxSplats =\n Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n this.numSplats = Math.min(\n this.maxSplats,\n options.numSplats ?? Number.POSITIVE_INFINITY,\n );\n this.updateTextures();\n } else {\n this.maxSplats = options.maxSplats ?? 0;\n this.numSplats = 0;\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n }\n }\n\n async asyncInitialize(options: ExtSplatsOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n construct,\n lod,\n nonLod,\n lodAbove,\n } = options;\n this.lod = lod;\n this.nonLod = nonLod;\n\n const loader = new SplatLoader();\n if (fileBytes || url || stream) {\n await loader.loadInternalAsync({\n extSplats: this,\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n onProgress: options.onProgress,\n lodAbove,\n });\n }\n\n if (construct) {\n const maybePromise = construct(this);\n // If construct returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n }\n\n // Call this when you are finished with the PackedSplats and want to free\n // any buffers it holds.\n dispose() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n this.textures[0].dispose();\n this.textures[0].source.data = null;\n this.textures[0] = ExtSplats.emptyTexture;\n }\n if (this.textures[1] !== ExtSplats.emptyTexture) {\n this.textures[1].dispose();\n this.textures[1].source.data = null;\n this.textures[1] = ExtSplats.emptyTexture;\n }\n\n this.extArrays = [new Uint32Array(0), new Uint32Array(0)];\n\n for (const key in this.extra) {\n const dyno = this.extra[key] as DynoUniform<\n DynoType,\n string,\n THREE.Texture\n >;\n if (dyno instanceof DynoUniform) {\n const texture = dyno.value;\n if (texture?.isTexture) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n this.extra = {};\n\n this.disposeLodSplats();\n }\n\n prepareFetchSplat() {\n // console.info(\"ExtSplats.prepareFetchSplat\");\n }\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n return Math.min(this.getNumSh(), this.maxSh) > 0;\n }\n\n getNumSh(): number {\n return !this.extra.sh1\n ? 0\n : !this.extra.sh2\n ? 1\n : !this.extra.sh3a || !this.extra.sh3b\n ? 2\n : 3;\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n > {\n let gsplat = readExtSplat(this.dyno, index);\n\n if (this.hasRgbDir() && viewOrigin) {\n const splatCenter = splitGsplat(gsplat).outputs.center;\n const viewDir = normalize(sub(splatCenter, viewOrigin));\n const { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB } =\n this.ensureShTextures();\n let { rgb } = evaluateExtSH({\n coord: splatTexCoord(index),\n viewDir,\n numSh: this.dynoNumSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n });\n rgb = add(rgb, splitGsplat(gsplat).outputs.rgb);\n gsplat = combineGsplat({ gsplat, rgb });\n }\n return gsplat;\n }\n\n private ensureShTextures(): {\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n } {\n // Ensure we have textures for SH1..SH3 if we have data\n if (!this.extra.sh1) {\n return {};\n }\n\n let sh1Texture = this.extra.sh1Texture as\n | DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>\n | undefined;\n if (!sh1Texture) {\n let sh1 = this.extra.sh1 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh1.length / 4,\n );\n if (sh1.length < maxSplats * 4) {\n const newSh1 = new Uint32Array(maxSplats * 4);\n newSh1.set(sh1);\n this.extra.sh1 = newSh1;\n sh1 = newSh1;\n }\n const texture = newUint32ArrayTexture(\n sh1,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh1Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh1\",\n });\n this.extra.sh1Texture = sh1Texture;\n }\n\n if (!this.extra.sh2) {\n return { sh1Texture };\n }\n\n let sh2Texture = this.extra.sh2Texture as\n | DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>\n | undefined;\n if (!sh2Texture) {\n let sh2 = this.extra.sh2 as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh2.length / 4,\n );\n if (sh2.length < maxSplats * 4) {\n const newSh2 = new Uint32Array(maxSplats * 4);\n newSh2.set(sh2);\n this.extra.sh2 = newSh2;\n sh2 = newSh2;\n }\n\n const texture = newUint32ArrayTexture(\n sh2,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh2Texture = new DynoUsampler2DArray({\n value: texture,\n key: \"sh2\",\n });\n this.extra.sh2Texture = sh2Texture;\n }\n\n if (!this.extra.sh3a || !this.extra.sh3b) {\n return { sh1Texture, sh2Texture };\n }\n\n let sh3TextureA = this.extra.sh3TextureA as\n | DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureA) {\n let sh3a = this.extra.sh3a as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3a.length / 4,\n );\n if (sh3a.length < maxSplats * 4) {\n const newSh3 = new Uint32Array(maxSplats * 4);\n newSh3.set(sh3a);\n this.extra.sh3a = newSh3;\n sh3a = newSh3;\n }\n\n const texture = newUint32ArrayTexture(\n sh3a,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureA = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3\",\n });\n this.extra.sh3TextureA = sh3TextureA;\n }\n\n let sh3TextureB = this.extra.sh3TextureB as\n | DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>\n | undefined;\n if (!sh3TextureB) {\n let sh3b = this.extra.sh3b as Uint32Array;\n const { width, height, depth, maxSplats } = getTextureSize(\n sh3b.length / 4,\n );\n if (sh3b.length < maxSplats * 4) {\n const newSh3b = new Uint32Array(maxSplats * 4);\n newSh3b.set(sh3b);\n this.extra.sh3b = newSh3b;\n sh3b = newSh3b;\n }\n\n const texture = newUint32ArrayTexture(\n sh3b,\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n sh3TextureB = new DynoUsampler2DArray({\n value: texture,\n key: \"sh3b\",\n });\n this.extra.sh3TextureB = sh3TextureB;\n }\n\n return { sh1Texture, sh2Texture, sh3TextureA, sh3TextureB };\n }\n\n // Ensures that this.extArrays can fit numSplats Gsplats. If it's too small,\n // resize exponentially and copy over the original data.\n //\n // Typically you don't need to call this, because calling this.setSplat(index, ...)\n // and this.pushSplat(...) will automatically call ensureSplats() so we have\n // enough splats.\n ensureSplats(numSplats: number): [Uint32Array, Uint32Array] {\n const targetSize =\n numSplats <= this.maxSplats\n ? this.maxSplats\n : // Grow exponentially to avoid frequent reallocations\n Math.max(numSplats, 2 * this.maxSplats);\n const currentSize = !this.extArrays[0] ? 0 : this.extArrays[0].length / 4;\n\n if (!this.extArrays[0] || targetSize > currentSize) {\n this.maxSplats = getTextureSize(targetSize).maxSplats;\n const newArray0 = new Uint32Array(this.maxSplats * 4);\n const newArray1 = new Uint32Array(this.maxSplats * 4);\n if (this.extArrays[0]) {\n // Copy over existing data\n newArray0.set(this.extArrays[0]);\n newArray1.set(this.extArrays[1]);\n }\n this.extArrays[0] = newArray0;\n this.extArrays[1] = newArray1;\n }\n return this.extArrays;\n }\n\n // Unpack the 16-byte Gsplat data at index into the Three.js components\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number 0..1, color: THREE.Color 0..1.\n getSplat(index: number): {\n center: THREE.Vector3;\n scales: THREE.Vector3;\n quaternion: THREE.Quaternion;\n opacity: number;\n color: THREE.Color;\n } {\n if (index >= this.numSplats) {\n throw new Error(\"Invalid index\");\n }\n return decodeExtSplat(this.extArrays, index);\n }\n\n // Set all ExtSplat components at index with the provided Gsplat attributes\n // (can be the same objects returned by getSplat). Ensures there is capacity\n // for at least index+1 Gsplats.\n setSplat(\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(index + 1);\n encodeExtSplat(\n extArrays,\n index,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n this.numSplats = Math.max(this.numSplats, index + 1);\n }\n\n // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on\n // construction where you just want to iterate and create a collection of Gsplats.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n const extArrays = this.ensureSplats(this.numSplats + 1);\n encodeExtSplat(\n extArrays,\n this.numSplats,\n center.x,\n center.y,\n center.z,\n scales.x,\n scales.y,\n scales.z,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n opacity,\n color.r,\n color.g,\n color.b,\n );\n ++this.numSplats;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.numSplats) {\n return;\n }\n for (let i = 0; i < this.numSplats; ++i) {\n const unpacked = decodeExtSplat(this.extArrays, i);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n\n // Check if source texture needs to be created/updated\n private updateTextures() {\n if (this.textures[0] !== ExtSplats.emptyTexture) {\n const { width, height, depth } = this.textures[0].image;\n if (this.maxSplats !== width * height * depth) {\n // The existing source texture isn't the right size, so dispose it\n this.textures[0].dispose();\n this.textures[0] = ExtSplats.emptyTexture;\n this.textures[1].dispose();\n this.textures[1] = ExtSplats.emptyTexture;\n }\n }\n if (this.textures[0] === ExtSplats.emptyTexture) {\n // Allocate a new source texture of the right size\n const { width, height, depth } = getTextureSize(this.maxSplats);\n this.textures[0] = newUint32ArrayTexture(\n this.extArrays[0],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n this.textures[1] = newUint32ArrayTexture(\n this.extArrays[1],\n width,\n height,\n depth,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n } else if (\n this.extArrays[0].buffer !== this.textures[0].image.data.buffer\n ) {\n this.textures[0].image.data = new Uint8Array(this.extArrays[0].buffer);\n this.textures[1].image.data = new Uint8Array(this.extArrays[1].buffer);\n // Indicate to Three.js that the source textures needs to be uploaded to the GPU\n this.textures[0].needsUpdate = true;\n this.textures[1].needsUpdate = true;\n }\n }\n\n extractSplats(indices: Uint32Array, pageColoring: boolean) {\n const maxSplats = getTextureSize(indices.length).maxSplats;\n const newSplats = new ExtSplats({ maxSplats });\n for (let i = 0; i < indices.length; i++) {\n const splat = this.getSplat(indices[i]);\n if (pageColoring) {\n let hue = (indices[i] >>> 16) * 0.61803398875;\n hue = hue - Math.floor(hue);\n const r = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 3.0) - 1.0));\n const g = Math.max(0, Math.min(1, Math.abs(hue * 6.0 + 1.0) - 1.0));\n const b = Math.max(0, Math.min(1, Math.abs(hue * 6.0 - 1.0) - 1.0));\n splat.color.r *= r;\n splat.color.g *= g;\n splat.color.b *= b;\n }\n newSplats.pushSplat(\n splat.center,\n splat.scales,\n splat.quaternion,\n splat.opacity,\n splat.color,\n );\n }\n return newSplats;\n }\n\n static emptyArray = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTexture = newUint32ArrayTexture(\n null,\n 1,\n 1,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n \"RGBA32UI\",\n );\n\n disposeLodSplats() {\n if (this.lodSplats) {\n this.lodSplats.dispose();\n this.lodSplats = undefined;\n }\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n const lodBase =\n typeof this.lod === \"number\"\n ? Math.max(1.1, Math.min(2.0, this.lod))\n : quality\n ? 1.75\n : 1.5;\n const extArrays = [this.extArrays[0].slice(), this.extArrays[1].slice()];\n const rgba = rgbaArray ? (await rgbaArray.getArray()).slice() : undefined;\n const extra = {\n sh1: this.extra.sh1 ? (this.extra.sh1 as Uint32Array).slice() : undefined,\n sh2: this.extra.sh2 ? (this.extra.sh2 as Uint32Array).slice() : undefined,\n sh3: this.extra.sh3 ? (this.extra.sh3 as Uint32Array).slice() : undefined,\n };\n const decoded = await workerPool.withWorker(async (worker) => {\n return (await worker.call(\n quality ? \"qualityLodExtSplats\" : \"tinyLodExtSplats\",\n {\n numSplats: this.numSplats,\n extArrays,\n extra,\n lodBase,\n rgba,\n },\n )) as {\n numSplats: number;\n extArrays: [Uint32Array, Uint32Array];\n extra: Record;\n };\n });\n\n const lodSplats = new ExtSplats(decoded);\n if (this.lodSplats) {\n this.lodSplats.dispose();\n }\n\n this.lodSplats = lodSplats;\n this.nonLod = true;\n this.lod = quality ? \"quality\" : true;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n}\n\nexport const dynoExtSplats = (extSplats?: ExtSplats) =>\n new DynoExtSplats({ extSplats });\n\nexport class DynoExtSplats extends DynoUniform<\n typeof TExtSplats,\n \"extSplats\",\n {\n textureArray1: THREE.DataArrayTexture;\n textureArray2: THREE.DataArrayTexture;\n numSplats: number;\n }\n> {\n extSplats?: ExtSplats;\n\n constructor({ extSplats }: { extSplats?: ExtSplats } = {}) {\n super({\n key: \"extSplats\",\n type: TExtSplats,\n globals: () => [defineExtSplats],\n value: {\n textureArray1: ExtSplats.emptyTexture,\n textureArray2: ExtSplats.emptyTexture,\n numSplats: 0,\n },\n update: (value) => {\n value.textureArray1 =\n this.extSplats?.textures[0] ?? ExtSplats.emptyTexture;\n value.textureArray2 =\n this.extSplats?.textures[1] ?? ExtSplats.emptyTexture;\n value.numSplats = this.extSplats?.numSplats ?? 0;\n return value;\n },\n });\n this.extSplats = extSplats;\n }\n}\n\nexport const defineEvaluateExtSH1 = unindent(`\n vec3 evaluateExtSH1(uvec4 packedData, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packedData.x);\n vec3 sh1_1 = decodeExtRgb(packedData.y);\n vec3 sh1_2 = decodeExtRgb(packedData.z);\n\n return sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n }\n`);\n\nexport const defineEvaluateExtSH12 = unindent(`\n vec3 evaluateExtSH12(uvec4 packed1, uvec4 packed2, vec3 viewDir) {\n vec3 sh1_0 = decodeExtRgb(packed1.x);\n vec3 sh1_1 = decodeExtRgb(packed1.y);\n vec3 sh1_2 = decodeExtRgb(packed1.z);\n\n vec3 sh2_0 = decodeExtRgb(packed1.w);\n vec3 sh2_1 = decodeExtRgb(packed2.x);\n vec3 sh2_2 = decodeExtRgb(packed2.y);\n vec3 sh2_3 = decodeExtRgb(packed2.z);\n vec3 sh2_4 = decodeExtRgb(packed2.w);\n\n vec3 sh1Rgb = sh1_0 * (-0.4886025 * viewDir.y)\n + sh1_1 * (0.4886025 * viewDir.z)\n + sh1_2 * (-0.4886025 * viewDir.x);\n\n vec3 sh2Rgb = sh2_0 * (1.0925484 * viewDir.x * viewDir.y)\n + sh2_1 * (-1.0925484 * viewDir.y * viewDir.z)\n + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))\n + sh2_3 * (-1.0925484 * viewDir.x * viewDir.z)\n + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));\n\n return sh1Rgb + sh2Rgb;\n }\n`);\n\nexport const defineEvaluateExtSH3 = unindent(`\n vec3 evaluateExtSH3(uvec4 packedA, uvec4 packedB, vec3 viewDir) {\n vec3 sh3_0 = decodeExtRgb(packedA.x);\n vec3 sh3_1 = decodeExtRgb(packedA.y);\n vec3 sh3_2 = decodeExtRgb(packedA.z);\n vec3 sh3_3 = decodeExtRgb(packedA.w);\n vec3 sh3_4 = decodeExtRgb(packedB.x);\n vec3 sh3_5 = decodeExtRgb(packedB.y);\n vec3 sh3_6 = decodeExtRgb(packedB.z);\n\n float xx = viewDir.x * viewDir.x;\n float yy = viewDir.y * viewDir.y;\n float zz = viewDir.z * viewDir.z;\n float xy = viewDir.x * viewDir.y;\n float yz = viewDir.y * viewDir.z;\n float zx = viewDir.z * viewDir.x;\n\n return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))\n + sh3_1 * (2.8906114 * xy * viewDir.z) +\n + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))\n + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))\n + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))\n + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))\n + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));\n }\n`);\n\n\nexport const randomColourFromID = unindent(`\nprecision highp float;\nprecision highp int;\n\n// Blazing fast HSL to RGB conversion\nvec3 hsl2rgb(vec3 c) {\n vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);\n return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0));\n}\n\nvec4 getDeterministicColor(uint id) {\n float hue = fract(float(id) * 0.618033988749895);\n vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6));\n return vec4(rgb, 1.0);\n}\n`);\n\nexport function evaluateExtSH({\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n}: {\n coord: DynoVal<\"ivec3\">;\n viewDir: DynoVal<\"vec3\">;\n numSh: DynoVal<\"int\">;\n sh1Texture?: DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>;\n sh2Texture?: DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>;\n sh3TextureA?: DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>;\n sh3TextureB?: DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>;\n}) {\n return new Dyno({\n inTypes: {\n coord: \"ivec3\",\n viewDir: \"vec3\",\n numSh: \"int\",\n sh1Texture: \"usampler2DArray\",\n sh2Texture: \"usampler2DArray\",\n sh3TextureA: \"usampler2DArray\",\n sh3TextureB: \"usampler2DArray\",\n },\n outTypes: { rgb: \"vec3\" },\n inputs: {\n coord,\n viewDir,\n numSh,\n sh1Texture,\n sh2Texture,\n sh3TextureA,\n sh3TextureB,\n },\n globals: () => [\n defineEvaluateExtSH1,\n defineEvaluateExtSH12,\n defineEvaluateExtSH3,\n ],\n statements: ({ inputs, outputs }) => {\n const lines = [\"vec3 rgb = vec3(0.0);\"];\n if (inputs.sh1Texture) {\n if (!inputs.sh2Texture) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n } else {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} == 1) {\n rgb = evaluateExtSH1(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n } else if (${inputs.numSh} >= 2) {\n rgb = evaluateExtSH12(texelFetch(${inputs.sh1Texture}, ${inputs.coord}, 0), texelFetch(${inputs.sh2Texture}, ${inputs.coord}, 0), ${inputs.viewDir});\n `),\n );\n\n if (inputs.sh3TextureA && inputs.sh3TextureB) {\n lines.push(\n ...unindentLines(`\n if (${inputs.numSh} >= 3) {\n rgb += evaluateExtSH3(texelFetch(${inputs.sh3TextureA}, ${inputs.coord}, 0), texelFetch(${inputs.sh3TextureB}, ${inputs.coord}, 0), ${inputs.viewDir});\n }\n `),\n );\n }\n\n lines.push(\"}\");\n }\n }\n lines.push(`${outputs.rgb} = rgb;`);\n return lines;\n },\n }).outputs;\n}\n\nfunction newUint32ArrayTexture(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(\n data as Uint32Array,\n width,\n height,\n depth,\n );\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n return texture;\n}\n","import * as THREE from \"three\";\n\nimport { DynoPackedSplats, type PackedSplats } from \"./PackedSplats\";\nimport { Readback, type Rgba8Readback } from \"./Readback\";\nimport { SPLAT_TEX_WIDTH } from \"./defines\";\nimport {\n Dyno,\n type DynoBlock,\n DynoInt,\n DynoUniform,\n type DynoVal,\n add,\n dynoBlock,\n readPackedSplatRange,\n splitGsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize } from \"./utils\";\n\n// An RgbaArray is a collection of ordered RGBA8 values, which can be used as a dyno\n// data source, for example for recoloring Gsplats via SplatMesh.splatRgba.\n// It can be instantiated from a Uint8Array of RGBA8 values, or it can be\n// generated using a Rgba8Readback dyno program.\n\nexport type RgbaArrayOptions = {\n // Reserve space for at least this many RGBA values.\n capacity?: number;\n // Use the provided array of RGBA8 values as the source.\n array?: Uint8Array;\n // The number of actual RGBA8 values in the array.\n count?: number;\n};\n\nexport class RgbaArray {\n capacity = 0;\n count = 0;\n array: Uint8Array | null = null;\n\n readback: Readback | null = null;\n source: THREE.DataArrayTexture | null = null;\n // Set to true if source array is updated to have it upload to GPU\n needsUpdate = true;\n\n // Use this as a TRgbaArray in a dyno graph\n dyno: DynoUniform;\n\n constructor(options: RgbaArrayOptions = {}) {\n this.dyno = new DynoUniform({\n key: \"rgbaArray\",\n type: TRgbaArray,\n globals: () => [defineRgbaArray],\n value: {\n texture: RgbaArray.getEmpty(),\n count: 0,\n },\n update: (value) => {\n value.texture = this.getTexture();\n value.count = this.count;\n return value;\n },\n });\n\n if (options.array) {\n // Initialize with given array\n this.array = options.array;\n const splatCount = Math.floor(this.array.length / 4);\n this.capacity = Math.ceil(splatCount / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (this.capacity > splatCount) {\n this.array = new Uint8Array(this.capacity * 4);\n this.array.set(options.array);\n }\n this.count = Math.min(\n splatCount,\n options.count ?? Number.POSITIVE_INFINITY,\n );\n } else {\n this.capacity = options.capacity ?? 0;\n this.count = 0;\n }\n }\n\n // Free up resources\n dispose() {\n if (this.readback) {\n this.readback.dispose();\n this.readback = null;\n }\n if (this.source) {\n this.source.dispose();\n this.source = null;\n }\n }\n\n // Ensure that our array is large enough to hold capacity RGBA8 values.\n ensureCapacity(capacity: number): Uint8Array {\n if (!this.array || capacity > (this.array?.length ?? 0) / 4) {\n this.capacity = getTextureSize(capacity).maxSplats;\n const newArray = new Uint8Array(this.capacity * 4);\n if (this.array) {\n // Copy over existing data\n newArray.set(this.array);\n }\n this.array = newArray;\n }\n return this.array;\n }\n\n // Get the THREE.DataArrayTexture from either the readback or the source.\n getTexture(): THREE.DataArrayTexture {\n let texture = this.readback?.getTexture();\n if (this.source || this.array) {\n texture = this.maybeUpdateSource();\n }\n return texture ?? RgbaArray.getEmpty();\n }\n\n // Create or get a THREE.DataArrayTexture from the data array.\n private maybeUpdateSource(): THREE.DataArrayTexture {\n if (!this.array) {\n throw new Error(\"No array\");\n }\n\n if (this.needsUpdate || !this.source) {\n this.needsUpdate = false;\n\n if (this.source) {\n const { width, height, depth } = this.source.image;\n if (this.capacity !== width * height * depth) {\n this.source.dispose();\n this.source = null;\n }\n }\n if (!this.source) {\n const { width, height, depth } = getTextureSize(this.capacity);\n this.source = new THREE.DataArrayTexture(\n this.array as Uint8Array,\n width,\n height,\n depth,\n );\n this.source.format = THREE.RGBAFormat;\n this.source.type = THREE.UnsignedByteType;\n this.source.internalFormat = \"RGBA8\";\n this.source.needsUpdate = true;\n } else if (this.array.buffer !== this.source.image.data.buffer) {\n this.source.image.data = new Uint8Array(this.array.buffer);\n }\n this.source.needsUpdate = true;\n }\n return this.source;\n }\n\n // Generate the RGBA8 values from a Rgba8Readback dyno program.\n render({\n reader,\n count,\n renderer,\n }: { reader: Rgba8Readback; count: number; renderer: THREE.WebGLRenderer }) {\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n this.readback.render({ reader, count, renderer });\n this.capacity = this.readback.capacity;\n this.count = this.readback.count;\n }\n\n // Extract the RGBA8 values from a PackedSplats collection.\n fromPackedSplats({\n packedSplats,\n base,\n count,\n renderer,\n }: {\n packedSplats: PackedSplats;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n const { dynoSplats, dynoBase, dynoCount, reader } = RgbaArray.makeDynos();\n dynoSplats.packedSplats = packedSplats;\n dynoBase.value = base;\n dynoCount.value = count;\n this.render({ reader, count, renderer });\n return this;\n }\n\n // Read back the RGBA8 values from the readback buffer.\n async read(): Promise {\n if (!this.readback) {\n throw new Error(\"No readback\");\n }\n if (!this.array || this.array.length < this.count * 4) {\n this.array = new Uint8Array(this.capacity * 4);\n }\n const result = await this.readback.readback({ readback: this.array });\n return result.subarray(0, this.count * 4);\n }\n\n async getArray(): Promise {\n if (this.readback) {\n return await this.read();\n }\n if (this.array) {\n return this.array;\n }\n throw new Error(\"No array\");\n }\n\n private static emptySource: THREE.DataArrayTexture | null = null;\n\n // Can be used where you need an uninitialized THREE.DataArrayTexture like\n // a uniform you will update with the result of this.getTexture() later.\n static getEmpty(): THREE.DataArrayTexture {\n if (!RgbaArray.emptySource) {\n const emptyArray = new Uint8Array(1 * 4);\n RgbaArray.emptySource = new THREE.DataArrayTexture(emptyArray, 1, 1, 1);\n RgbaArray.emptySource.format = THREE.RGBAFormat;\n RgbaArray.emptySource.type = THREE.UnsignedByteType;\n RgbaArray.emptySource.internalFormat = \"RGBA8\";\n RgbaArray.emptySource.needsUpdate = true;\n }\n return RgbaArray.emptySource;\n }\n\n private static dynos: {\n dynoSplats: DynoPackedSplats;\n dynoBase: DynoInt;\n dynoCount: DynoInt;\n reader: DynoBlock<{ index: \"int\" }, { rgba8: \"vec4\" }>;\n } | null = null;\n\n // Create a dyno program that can extract RGBA8 values from a PackedSplats\n private static makeDynos() {\n if (!RgbaArray.dynos) {\n const dynoSplats = new DynoPackedSplats();\n const dynoBase = new DynoInt({ value: 0 });\n const dynoCount = new DynoInt({ value: 0 });\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n index = add(index, dynoBase);\n const gsplat = readPackedSplatRange(\n dynoSplats,\n index,\n dynoBase,\n dynoCount,\n );\n return { rgba8: splitGsplat(gsplat).outputs.rgba };\n },\n );\n RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };\n }\n return RgbaArray.dynos;\n }\n}\n\n// Dyno types and definitions\n\nexport const TRgbaArray = { type: \"RgbaArray\" } as { type: \"RgbaArray\" };\n\nexport const defineRgbaArray = unindent(`\n struct RgbaArray {\n sampler2DArray texture;\n int count;\n };\n`);\n\nexport function readRgbaArray(\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n): DynoVal<\"vec4\"> {\n const dyno = new Dyno<\n { rgba: typeof TRgbaArray; index: \"int\" },\n { rgba: \"vec4\" }\n >({\n inTypes: { rgba: TRgbaArray, index: \"int\" },\n outTypes: { rgba: \"vec4\" },\n inputs: { rgba, index },\n globals: () => [defineRgbaArray],\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n if ((${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n } else {\n ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `),\n });\n return dyno.outputs.rgba;\n}\n","import * as THREE from \"three\";\n\nimport { decode_rad_header } from \"spark-rs\";\nimport { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from \".\";\nimport { evaluateExtSH, randomColourFromID } from \"./ExtSplats\";\nimport { evaluatePackedSH } from \"./PackedSplats\";\nimport { getSplatFileType, getSplatFileTypeFromPath } from \"./SplatLoader\";\nimport type { SplatSource } from \"./SplatMesh\";\nimport { workerPool } from \"./SplatWorker\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n type ExtResult,\n type PackedResult,\n type RadMeta,\n type SplatEncoding,\n SplatFileType,\n} from \"./defines\";\nimport { type DynoUsampler2DArray, pagedSplatTexCoord } from \"./dyno\";\nimport {\n decodeExtSplat,\n getTextureSize,\n unpackSplat,\n uploadU32DataTextureRows,\n} from \"./utils\";\nimport * as wasm from \"./wasm\";\n\nexport interface PagedSplatsOptions {\n pager?: SplatPager;\n rootUrl?: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n maxSh?: number;\n}\n\nconst PAGE_WIDTH = 256;\nconst PAGE_HEIGHT = 256;\nconst PAGE_SPLATS = PAGE_WIDTH * PAGE_HEIGHT; // 65536\n\nexport class PagedSplats implements SplatSource {\n pager?: SplatPager;\n rootUrl: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n fileBytes?: Uint8Array;\n fileType?: SplatFileType;\n\n numSh: number;\n maxSh: number;\n sh1Codes?: Uint32Array;\n sh2Codes?: Uint32Array;\n sh3Codes?: Uint32Array | [Uint32Array, Uint32Array];\n\n numSplats: number;\n splatEncoding?: SplatEncoding;\n radMetaPromise?: Promise<{ meta: RadMeta; chunksStart: number }>;\n\n dynoNumSplats: dyno.DynoInt<\"numSplats\">;\n dynoIndices: dyno.DynoUsampler2D<\"indices\", THREE.DataTexture>;\n rgbMinMaxLnScaleMinMax: dyno.DynoVec4<\n THREE.Vector4,\n \"rgbMinMaxLnScaleMinMax\"\n >;\n lodOpacity: dyno.DynoBool<\"lodOpacity\">;\n dynoNumSh: dyno.DynoInt<\"numSh\">;\n shMax: dyno.DynoVec3;\n\n constructor(options: PagedSplatsOptions) {\n this.pager = options.pager;\n this.rootUrl = options.rootUrl ?? \"\";\n this.requestHeader = options.requestHeader;\n this.withCredentials = options.withCredentials;\n this.numSh = 0;\n this.maxSh = options.pager?.maxSh ?? 3;\n\n this.numSplats = 0;\n\n this.dynoNumSplats = new dyno.DynoInt({ value: 0 });\n this.dynoIndices = new dyno.DynoUsampler2D({\n value: SplatPager.emptyIndicesTexture,\n });\n\n this.rgbMinMaxLnScaleMinMax = new dyno.DynoVec4({\n value: new THREE.Vector4(0.0, 1.0, LN_SCALE_MIN, LN_SCALE_MAX),\n });\n this.lodOpacity = new dyno.DynoBool({\n value: false,\n });\n\n this.dynoNumSh = new dyno.DynoInt({ value: 0 });\n this.shMax = new dyno.DynoVec3({ value: new THREE.Vector3() });\n\n this.fileBytes = options.fileBytes;\n this.fileType = options.fileType;\n if (!this.fileType && this.fileBytes) {\n this.fileType = getSplatFileType(this.fileBytes);\n }\n if (!this.fileType && this.rootUrl) {\n this.fileType = getSplatFileTypeFromPath(this.rootUrl);\n }\n if (!this.fileType) {\n throw new Error(\"Unable to determine file type\");\n }\n if (this.fileType === SplatFileType.RAD) {\n this.radMetaPromise = this.getRadMeta();\n }\n }\n\n dispose() {\n if (this.dynoIndices.value !== SplatPager.emptyIndicesTexture) {\n this.dynoIndices.value.dispose();\n this.dynoIndices.value = SplatPager.emptyIndicesTexture;\n }\n }\n\n setMaxSh(maxSh: number) {\n this.maxSh = maxSh;\n }\n\n getRadMeta(): Promise<{ meta: RadMeta; chunksStart: number }> {\n if (this.radMetaPromise) {\n return this.radMetaPromise;\n }\n\n this.radMetaPromise = (async () => {\n await wasm.initialization;\n\n if (this.fileBytes) {\n // Shouldn't be more than 1 MB, so don't send more data than that.\n const metaStart = decode_rad_header(this.fileBytes.slice(0, 1048576));\n if (metaStart) {\n return metaStart;\n }\n throw new Error(\"Failed to decode RAD header\");\n }\n if (!this.rootUrl) {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n // We don't know how big the header will be. Most likely 64KB will be enough,\n // but try larger blocks in backoff if it wasn't enough.\n for (const tryBytes of [65536, 256 * 1024, 1024 * 1024]) {\n const bytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset: 0,\n bytes: tryBytes,\n });\n const metaStart = decode_rad_header(bytes);\n if (metaStart) {\n return metaStart;\n }\n }\n throw new Error(\"Failed to decode RAD header\");\n })().then((metaStart) => {\n // console.log(\"RAD meta: \", metaStart.meta);\n return metaStart;\n });\n\n this.radMetaPromise.catch((error) => {\n console.error(error);\n // Allow it to be tried again\n // this.radMetaPromise = undefined;\n });\n\n return this.radMetaPromise;\n }\n\n chunkUrl(chunk: number): string {\n return this.rootUrl.replace(/-lod-0\\./, `-lod-${chunk}.`);\n }\n\n async fetchDecodeChunk(chunk: number) {\n let decodeBytes = undefined;\n\n if (this.fileType === SplatFileType.RAD) {\n const { meta, chunksStart } = await this.getRadMeta();\n if (chunk < 0 || chunk >= meta.chunks.length) {\n throw new Error(\n `Chunk index out of range: ${chunk} (max: ${meta.chunks.length - 1})`,\n );\n }\n let { offset, bytes, filename } = meta.chunks[chunk];\n\n if (filename) {\n if (this.fileBytes) {\n throw new Error(\"Chunked RAD file not supported with fileBytes\");\n }\n const resolvedRoot = new URL(\n this.rootUrl,\n window.location.href,\n ).toString();\n const chunkUrl = new URL(filename, resolvedRoot).toString();\n decodeBytes = await fetchRange({\n url: chunkUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n });\n } else {\n offset += chunksStart;\n // console.log(`Fetching chunk ${chunk} at offset ${offset} with bytes ${bytes}`);\n if (this.fileBytes) {\n if (offset < 0 || offset + bytes > this.fileBytes.length) {\n throw new Error(\n `Invalid chunk offset or bytes: ${offset} + ${bytes} > ${this.fileBytes.length}`,\n );\n }\n decodeBytes = this.fileBytes.slice(offset, offset + bytes);\n } else if (this.rootUrl) {\n decodeBytes = await fetchRange({\n url: this.rootUrl,\n requestHeader: this.requestHeader,\n withCredentials: this.withCredentials,\n offset,\n bytes,\n });\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n }\n } else if (this.fileBytes) {\n // Fall through\n } else if (this.rootUrl) {\n const url = this.chunkUrl(chunk);\n const request = new Request(url, {\n headers: this.requestHeader\n ? new Headers(this.requestHeader)\n : undefined,\n credentials: this.withCredentials ? \"include\" : \"same-origin\",\n });\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n decodeBytes = new Uint8Array(await response.arrayBuffer());\n } else {\n throw new Error(\"No url or fileBytes provided\");\n }\n\n return await workerPool.withWorker(async (worker) => {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n if (!this.pager.extSplats) {\n const result = (await worker.call(\"loadPackedSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: this.sh3Codes?.slice(),\n })) as { lodSplats: PackedResult };\n const lodSplats = result.lodSplats;\n if (!this.splatEncoding) {\n this.splatEncoding = lodSplats.splatEncoding;\n\n this.numSh = lodSplats.extra.sh3\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n\n this.rgbMinMaxLnScaleMinMax.value.set(\n this.splatEncoding.rgbMin ?? 0.0,\n this.splatEncoding.rgbMax ?? 1.0,\n this.splatEncoding.lnScaleMin ?? LN_SCALE_MIN,\n this.splatEncoding.lnScaleMax ?? LN_SCALE_MAX,\n );\n\n this.lodOpacity.value = this.splatEncoding.lodOpacity ?? false;\n\n this.shMax.value.set(\n this.splatEncoding.sh1Max ?? 1.0,\n this.splatEncoding.sh2Max ?? 1.0,\n this.splatEncoding.sh3Max ?? 1.0,\n );\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n }\n\n const sh3Codes = this.sh3Codes as [Uint32Array, Uint32Array] | undefined;\n const result = (await worker.call(\"loadExtSplats\", {\n fileBytes: decodeBytes,\n pathName: this.chunkUrl(chunk),\n sh1Codes: this.sh1Codes?.slice(),\n sh2Codes: this.sh2Codes?.slice(),\n sh3Codes: sh3Codes\n ? [sh3Codes[0].slice(), sh3Codes[1].slice()]\n : undefined,\n })) as { lodSplats: ExtResult }; \n const lodSplats = result.lodSplats;\n\n if (!this.splatEncoding) {\n this.splatEncoding = DEFAULT_SPLAT_ENCODING;\n this.numSh =\n lodSplats.extra.sh3a && lodSplats.extra.sh3b\n ? 3\n : lodSplats.extra.sh2\n ? 2\n : lodSplats.extra.sh1\n ? 1\n : 0;\n }\n this.sh1Codes = lodSplats.extra.sh1Codes ?? this.sh1Codes;\n this.sh2Codes = lodSplats.extra.sh2Codes ?? this.sh2Codes;\n this.sh3Codes = lodSplats.extra.sh3Codes ?? this.sh3Codes;\n return lodSplats;\n });\n }\n\n update(numSplats: number, indices: Uint32Array) {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const renderer = this.pager.renderer;\n this.numSplats = numSplats;\n this.dynoNumSplats.value = this.numSplats;\n const rows = Math.ceil(numSplats / 16384);\n\n let indicesTexture =\n this.dynoIndices.value === SplatPager.emptyIndicesTexture\n ? undefined\n : this.dynoIndices.value;\n if (indicesTexture && rows > indicesTexture.image.height) {\n indicesTexture.dispose();\n indicesTexture = undefined;\n }\n\n if (!indicesTexture) {\n indicesTexture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n indicesTexture.internalFormat = \"RGBA32UI\";\n indicesTexture.needsUpdate = true;\n renderer.initTexture(indicesTexture);\n this.dynoIndices.value = indicesTexture;\n } else {\n const textureIndices = indicesTexture.image.data as Uint32Array;\n textureIndices.set(indices.subarray(0, numSplats));\n\n uploadU32DataTextureRows(\n renderer,\n indicesTexture,\n 4096,\n rows,\n textureIndices,\n );\n }\n }\n\n prepareFetchSplat() {}\n\n getNumSplats(): number {\n return this.numSplats;\n }\n\n hasRgbDir(): boolean {\n if (!this.pager) {\n return false;\n }\n return Math.min(this.numSh, this.pager.maxSh) > 0;\n }\n\n getNumSh(): number {\n return this.numSh;\n }\n\n fetchSplat({\n index,\n viewOrigin,\n }: {\n index: dyno.DynoVal<\"int\">;\n viewOrigin?: dyno.DynoVal<\"vec3\">;\n }): dyno.DynoVal {\n if (!this.pager) {\n throw new Error(\"PagedSplats.pager not set\");\n }\n\n const splatIndex = this.pager.readIndex.apply({\n index,\n numSplats: this.dynoNumSplats,\n indices: this.dynoIndices,\n }).index;\n\n if (!this.pager.extSplats) {\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(\n this.numSh,\n this.maxSh,\n this.pager.maxSh,\n );\n return this.pager.readSplatDir.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n viewOrigin,\n numSh: this.dynoNumSh,\n shMax: this.shMax,\n }).gsplat;\n }\n return this.pager.readSplat.apply({\n index: splatIndex,\n rgbMinMaxLnScaleMinMax: this.rgbMinMaxLnScaleMinMax,\n lodOpacity: this.lodOpacity,\n }).gsplat;\n }\n\n if (this.hasRgbDir() && viewOrigin) {\n this.dynoNumSh.value = Math.min(this.numSh, this.maxSh, this.pager.maxSh);\n return this.pager.readSplatExtDir.apply({\n index: splatIndex,\n viewOrigin,\n numSh: this.dynoNumSh,\n }).gsplat;\n }\n return this.pager.readSplatExt.apply({ index: splatIndex }).gsplat;\n }\n\n // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat\n // and invoke the callback function with the Gsplat attributes.\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n if (!this.pager || !this.numSplats) {\n return;\n }\n const extSplats = this.pager.extSplats;\n const indices = this.dynoIndices.value.image.data as Uint32Array;\n const packedSplatArray = this.pager.packedTexture.value.image\n .data as Uint32Array;\n const extPackedSplatArray = this.pager.extTexture.value.image\n .data as Uint32Array;\n const extArrays: [Uint32Array, Uint32Array] = [\n packedSplatArray,\n extPackedSplatArray,\n ];\n\n for (let i = 0; i < this.numSplats; ++i) {\n const splatIndex = indices[i];\n const unpacked = extSplats\n ? decodeExtSplat(extArrays, splatIndex)\n : unpackSplat(packedSplatArray, splatIndex, this.splatEncoding);\n callback(\n i,\n unpacked.center,\n unpacked.scales,\n unpacked.quaternion,\n unpacked.opacity,\n unpacked.color,\n );\n }\n }\n}\n\nexport interface SplatPagerOptions {\n /**\n * THREE.WebGLRenderer instance to upload texture data\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Whether to use extended Gsplat encoding for paged splats.\n * @default false\n */\n extSplats?: boolean;\n /**\n * Maximum size of splat page pool\n * @default 65536 * 256 = 16777216\n */\n maxSplats?: number;\n /**\n * Maximum number of spherical harmonics to keep\n * @default 3\n */\n maxSh?: number;\n /**\n * Automatically drive page fetching, or poll via drive()\n * @default true\n */\n autoDrive?: boolean;\n /**\n * Number of parallel chunk fetchers\n * @default 3\n */\n numFetchers?: number;\n}\n\ninterface PageUpload {\n page: number;\n numSplats: number;\n packedArray: Uint32Array;\n extArray?: Uint32Array;\n shArrays: Array;\n labels?: Uint32Array;\n instances?: Uint32Array;\n}\n\nexport class SplatPager {\n readonly renderer: THREE.WebGLRenderer;\n\n readonly extSplats: boolean;\n readonly maxPages: number;\n readonly maxSplats: number;\n readonly pageSplats: number;\n\n readonly maxSh: number;\n curSh: number;\n\n autoDrive: boolean;\n numFetchers: number;\n fetchPause = 0;\n\n splatsChunkToPage: Map<\n PagedSplats,\n ({ page: number; lru: number } | undefined)[]\n > = new Map();\n pageToSplatsChunk: (\n | { splats: PagedSplats; chunk: number; time: number }\n | undefined\n )[] = [];\n pageFreelist: number[];\n pageLru: Set<{ page: number; lru: number }>;\n freeablePages: number[];\n newUploads: PageUpload[];\n readyUploads: PageUpload[];\n lodTreeUpdates: {\n splats: PagedSplats;\n page: number;\n chunk: number;\n numSplats: number;\n lodTree?: Uint32Array;\n }[];\n\n fetchers: { splats: PagedSplats; chunk: number; promise: Promise }[];\n fetched: {\n splats: PagedSplats;\n chunk: number;\n data: PackedResult | ExtResult;\n }[];\n fetchPriority: { splats: PagedSplats; chunk: number }[];\n\n packedTexture: dyno.DynoUsampler2DArray<\n \"packedTexture\",\n THREE.DataArrayTexture\n >;\n extTexture: dyno.DynoUsampler2DArray<\"extTexture\", THREE.DataArrayTexture>;\n\n highlightLabel: dyno.DynoInt<\"highlightLabel\">;\n lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>;\n labelTexture: dyno.DynoUsampler2DArray<\"label\", THREE.DataArrayTexture>;\n instanceTexture: dyno.DynoUsampler2DArray<\"instance\", THREE.DataArrayTexture>;\n labelLookupModifier: dyno.Dyno<\n {\n gsplat: typeof dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray', \n instance: 'usampler2DArray', \n highlightLabel: 'int'\n },\n { gsplat: typeof dyno.Gsplat }\n >\n\n readonly shTextures: [\n dyno.DynoUsampler2DArray<\"sh1\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh2\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3\", THREE.DataArrayTexture>,\n dyno.DynoUsampler2DArray<\"sh3b\", THREE.DataArrayTexture>,\n ];\n\n readIndex: dyno.DynoBlock<\n { index: \"int\"; numSplats: \"int\"; indices: \"usampler2D\" },\n { index: \"int\" }\n >;\n readSplat: dyno.DynoBlock<\n { index: \"int\"; rgbMinMaxLnScaleMinMax: \"vec4\"; lodOpacity: \"bool\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExt: dyno.DynoBlock<\n { index: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatDir: dyno.DynoBlock<\n {\n index: \"int\";\n rgbMinMaxLnScaleMinMax: \"vec4\";\n lodOpacity: \"bool\";\n viewOrigin: \"vec3\";\n numSh: \"int\";\n shMax: \"vec3\";\n },\n { gsplat: typeof dyno.Gsplat }\n >;\n readSplatExtDir: dyno.DynoBlock<\n { index: \"int\"; viewOrigin: \"vec3\"; numSh: \"int\" },\n { gsplat: typeof dyno.Gsplat }\n >;\n\n constructor(options: SplatPagerOptions) {\n this.renderer = options.renderer;\n this.extSplats = options.extSplats ?? false;\n\n this.pageSplats = PAGE_SPLATS;\n this.maxSplats = options.maxSplats ?? 16777216;\n this.maxPages = Math.ceil(this.maxSplats / PAGE_SPLATS);\n this.maxSplats = this.maxPages * PAGE_SPLATS;\n\n this.maxSh = options.maxSh ?? 3;\n this.curSh = 0;\n\n this.autoDrive = options.autoDrive ?? true;\n this.numFetchers = options.numFetchers ?? 3;\n\n this.splatsChunkToPage = new Map();\n this.pageToSplatsChunk = new Array(this.maxPages);\n this.pageFreelist = Array.from({ length: this.maxPages }, (_, i) => i);\n this.pageLru = new Set();\n this.freeablePages = [];\n this.newUploads = [];\n this.readyUploads = [];\n this.lodTreeUpdates = [];\n\n this.fetchers = [];\n this.fetched = [];\n this.fetchPriority = [];\n\n this.packedTexture = new dyno.DynoUsampler2DArray({\n value: this.newUint32ArrayTexture(4),\n });\n this.extTexture = new dyno.DynoUsampler2DArray({\n value: this.extSplats\n ? this.newUint32ArrayTexture(4)\n : SplatPager.emptyExtTexture,\n });\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n this.shTextures = emptyShTextures.map(\n (texture) =>\n new dyno.DynoUsampler2DArray({\n value: texture,\n }),\n ) as typeof this.shTextures;\n\n this.highlightLabel = new dyno.DynoInt({ key: 'highlightLabel', value: -1 }); \n this.lookUpTexture = new dyno.DynoUsampler2D({\n value: new THREE.DataTexture(\n new Uint32Array(256), \n 256, 1,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n )\n });\n this.lookUpTexture.value.image.data.fill(1);\n this.lookUpTexture.value.needsUpdate = true;\n this.renderer.initTexture(this.lookUpTexture.value);\n\n this.labelTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.instanceTexture = new dyno.DynoUsampler2DArray({\n value: SplatPager.emptyLabelTexture\n });\n\n this.labelLookupModifier = new dyno.Dyno({\n inTypes: { \n gsplat: dyno.Gsplat, \n lookup: 'usampler2D', \n label: 'usampler2DArray',\n instance: 'usampler2DArray',\n highlightLabel: 'int'\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: { \n lookup: this.lookUpTexture, \n label: this.labelTexture,\n instance: this.instanceTexture,\n highlightLabel: this.highlightLabel\n },\n globals: () => [\n randomColourFromID,\n dyno.defineGsplat],\n statements: ({ inputs, outputs }) => \n dyno.unindentLines(`\n Gsplat g = ${inputs.gsplat};\n \n ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16);\n uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0);\n uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r;\n if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; }\n\n if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) {\n uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0);\n vec4 splatColour = getDeterministicColor(instanceTexel.r);\n g.rgba = mix(g.rgba, splatColour, 0.6);\n }\n\n ${outputs.gsplat} = g;\n `), \n }); //DynoUniform\n\n\n this.readIndex = dyno.dynoBlock(\n { index: \"int\", numSplats: \"int\", indices: \"usampler2D\" },\n { index: \"int\" },\n ({ index, numSplats, indices }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n numSplats: \"int\",\n indices: \"usampler2D\",\n },\n outTypes: { index: \"int\" },\n inputs: {\n index,\n numSplats,\n indices,\n },\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n if (${inputs.index} >= ${inputs.numSplats}) {\n return;\n }\n\n ivec2 indexCoord = ivec2((${inputs.index} >> 2) & 4095, ${inputs.index} >> 14);\n uint index = texelFetch(${inputs.indices}, indexCoord, 0)[${inputs.index} & 3];\n ${outputs.index} = int(index);\n `),\n }).outputs;\n },\n );\n\n this.readSplat = dyno.dynoBlock(\n { index: \"int\", rgbMinMaxLnScaleMinMax: \"vec4\", lodOpacity: \"bool\" },\n { gsplat: dyno.Gsplat },\n ({ index, rgbMinMaxLnScaleMinMax, lodOpacity }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n packedTexture: \"usampler2DArray\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n packedTexture: this.packedTexture,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = pagedSplatTexCoord(index);\n uvec4 packedData = texelFetch(${inputs.packedTexture}, splatCoord, 0);\n\n unpackSplatEncoding(packedData, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba, ${inputs.rgbMinMaxLnScaleMinMax});\n if ((${outputs.gsplat}.rgba.a == 0.0) || all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n \n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n if (${inputs.lodOpacity}) {\n ${outputs.gsplat}.rgba.a *= 2.0;\n }\n `),\n }).outputs;\n },\n );\n\n this.readSplatDir = dyno.dynoBlock(\n {\n index: \"int\",\n rgbMinMaxLnScaleMinMax: \"vec4\",\n lodOpacity: \"bool\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n shMax: \"vec3\",\n },\n { gsplat: dyno.Gsplat },\n ({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n viewOrigin,\n numSh,\n shMax,\n }) => {\n if (\n !index ||\n !rgbMinMaxLnScaleMinMax ||\n !lodOpacity ||\n !viewOrigin ||\n !numSh ||\n !shMax\n ) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplat.apply({\n index,\n rgbMinMaxLnScaleMinMax,\n lodOpacity,\n }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluatePackedSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3Texture: this.shTextures[2],\n shMax,\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n\n this.readSplatExt = dyno.dynoBlock(\n { index: \"int\" },\n { gsplat: dyno.Gsplat },\n ({ index }) => {\n return new dyno.Dyno({\n inTypes: {\n index: \"int\",\n extTexture1: \"usampler2DArray\",\n extTexture2: \"usampler2DArray\",\n },\n outTypes: { gsplat: dyno.Gsplat },\n inputs: {\n index,\n extTexture1: this.packedTexture,\n extTexture2: this.extTexture,\n },\n globals: () => [dyno.defineGsplat],\n statements: ({ inputs, outputs }) =>\n dyno.unindentLines(`\n int index = ${inputs.index};\n ivec3 splatCoord = ivec3(index & 255, (index >> 8) & 255, index >> 16);\n uvec4 ext1 = texelFetch(${inputs.extTexture1}, splatCoord, 0);\n float alpha = unpackSplatExtAlpha(ext1);\n if (alpha == 0.0) {\n return;\n }\n\n uvec4 ext2 = texelFetch(${inputs.extTexture2}, splatCoord, 0);\n unpackSplatExt(ext1, ext2, ${outputs.gsplat}.center, ${outputs.gsplat}.scales, ${outputs.gsplat}.quaternion, ${outputs.gsplat}.rgba);\n if (all(equal(${outputs.gsplat}.scales, vec3(0.0, 0.0, 0.0)))) {\n return;\n }\n\n ${outputs.gsplat}.index = index;\n ${outputs.gsplat}.flags = GSPLAT_FLAG_ACTIVE;\n `),\n }).outputs;\n },\n );\n\n this.readSplatExtDir = dyno.dynoBlock(\n {\n index: \"int\",\n viewOrigin: \"vec3\",\n numSh: \"int\",\n },\n { gsplat: dyno.Gsplat },\n ({ index, viewOrigin, numSh }) => {\n if (!index || !viewOrigin || !numSh) {\n throw new Error(\"index and viewOrigin are required\");\n }\n let gsplat = this.readSplatExt.apply({ index }).gsplat;\n\n const splatCenter = dyno.splitGsplat(gsplat).outputs.center;\n const viewDir = dyno.normalize(dyno.sub(splatCenter, viewOrigin));\n let rgb = evaluateExtSH({\n coord: pagedSplatTexCoord(index),\n viewDir,\n numSh,\n sh1Texture: this.shTextures[0],\n sh2Texture: this.shTextures[1],\n sh3TextureA: this.shTextures[2],\n sh3TextureB: this.shTextures[3],\n }).rgb;\n rgb = dyno.add(rgb, dyno.splitGsplat(gsplat).outputs.rgb);\n gsplat = dyno.combineGsplat({ gsplat, rgb });\n return { gsplat };\n },\n );\n }\n\n dispose() {\n this.autoDrive = false;\n this.numFetchers = 0;\n\n this.packedTexture.value.dispose();\n this.packedTexture.value.source.data = null;\n if (this.extTexture.value !== SplatPager.emptyExtTexture) {\n this.extTexture.value.dispose();\n this.extTexture.value.source.data = null;\n }\n\n if (this.labelTexture.value !== SplatPager.emptyLabelTexture) {\n this.labelTexture.value.dispose();\n this.labelTexture.value.source.data = null;\n }\n if (this.instanceTexture.value !== SplatPager.emptyLabelTexture) {\n this.instanceTexture.value.dispose();\n this.instanceTexture.value.source.data = null;\n }\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < emptyShTextures.length; i++) {\n const texture = this.shTextures[i].value;\n if (texture !== emptyShTextures[i]) {\n texture.dispose();\n texture.source.data = null;\n }\n }\n }\n\n\n public updateLabelLookup(categories: Set) {\n const array = this.lookUpTexture.value.image.data;\n array.fill(0);\n categories.forEach(id => {\n if (id >= 0 && id < 256) array[id] = 1;\n });\n this.lookUpTexture.value.needsUpdate = true;\n }\n\n private newUintArrayTex(\n data: Uint32Array | null,\n width: number,\n height: number,\n depth: number,\n format: THREE.AnyPixelFormat,\n type: THREE.TextureDataType,\n internalFormat: THREE.PixelFormatGPU,\n ): THREE.DataArrayTexture {\n const texture = new THREE.DataArrayTexture(data, width, height, depth);\n texture.format = format;\n texture.type = type;\n texture.internalFormat = internalFormat;\n texture.needsUpdate = true;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n private ensureLabelTextures() {\n if (this.labelTexture.value === SplatPager.emptyLabelTexture) {\n this.labelTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n public updateLabelHighlight(id: number) {\n this.highlightLabel.value = id\n }\n\n private ensureInstanceTextures() {\n if (this.instanceTexture.value === SplatPager.emptyLabelTexture) {\n this.instanceTexture.value = this.newUintArrayTex(\n new Uint32Array(this.maxPages * 256 * 256 * 1),\n 256,\n 256,\n this.maxPages,\n THREE.RedIntegerFormat,\n THREE.UnsignedIntType,\n \"R32UI\",\n );\n }\n }\n\n\n private ensureShTextures(numSh: number) {\n this.curSh = Math.max(this.curSh, numSh);\n\n const emptyShTextures = this.extSplats\n ? SplatPager.emptyExtShTextures\n : SplatPager.emptyShTextures;\n for (let i = 0; i < this.curSh; i++) {\n if (this.shTextures[i].value === emptyShTextures[i]) {\n const elementsPerSplat =\n this.shTextures[i].value === SplatPager.emptyUint32x2 ? 2 : 4;\n this.shTextures[i].value = this.newUint32ArrayTexture(elementsPerSplat);\n }\n }\n }\n\n private allocatePage(): number | undefined {\n return this.pageFreelist.shift();\n }\n\n getSplatsChunk(splats: PagedSplats, chunk: number) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return undefined;\n }\n return chunks[chunk];\n }\n\n private insertSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n now: number,\n ) {\n if (!this.splatsChunkToPage.has(splats)) {\n this.splatsChunkToPage.set(splats, []);\n }\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n if (chunk >= chunks.length) {\n chunks.length = chunk + 1;\n }\n const pageLru = { page, lru: now };\n chunks[chunk] = pageLru;\n this.pageLru.add(pageLru);\n\n this.pageToSplatsChunk[page] = { splats, chunk, time: performance.now() };\n return this.pageToSplatsChunk[page];\n }\n\n private removeSplatsChunkPage(\n splats: PagedSplats,\n chunk: number,\n page: number,\n ) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n throw new Error(\"impossible\");\n }\n\n const pageLru = chunks[chunk];\n if (!pageLru) {\n throw new Error(\n `pageLru not found for splats: ${splats}, chunk: ${chunk}, page: ${page}`,\n );\n }\n this.pageLru.delete(pageLru);\n\n chunks[chunk] = undefined;\n\n while (chunks.length > 0 && chunks[chunks.length - 1] === undefined) {\n chunks.pop();\n }\n if (chunks.length === 0) {\n this.splatsChunkToPage.delete(splats);\n }\n\n this.pageToSplatsChunk[page] = undefined;\n while (\n this.pageToSplatsChunk.length > 0 &&\n this.pageToSplatsChunk[this.pageToSplatsChunk.length - 1] === undefined\n ) {\n this.pageToSplatsChunk.pop();\n }\n }\n\n removeSplats(splats: PagedSplats) {\n const chunks = this.splatsChunkToPage.get(splats);\n if (!chunks) {\n return;\n }\n\n const freedPages = new Set();\n\n while (chunks.length > 0) {\n const chunk = chunks.pop();\n if (chunk) {\n const { page } = chunk;\n this.pageToSplatsChunk[page] = undefined;\n freedPages.add(page);\n this.pageFreelist.push(page);\n this.pageLru.delete(chunk);\n }\n }\n this.splatsChunkToPage.delete(splats);\n this.freeablePages = this.freeablePages.filter(\n (page) => !freedPages.has(page),\n );\n }\n\n private uploadPage(\n page: number,\n packedArray: Uint32Array,\n shArrays: Array,\n extArray?: Uint32Array,\n labels?: Uint32Array,\n instances?: Uint32Array\n ) {\n const pageBase = page * PAGE_SPLATS;\n\n uploadTextureLayer(this.packedTexture, page, pageBase * 4, packedArray);\n\n if (extArray) {\n uploadTextureLayer(this.extTexture, page, pageBase * 4, extArray);\n }\n\n // In case of extSplats there can be 4 shArrays for 3 sh degrees\n const numSh = Math.min(shArrays.length, 3);\n this.ensureShTextures(numSh);\n\n if ( labels !== undefined ) {\n this.ensureLabelTextures();\n const labels_arr = labels as Uint32Array;\n const array = this.labelTexture.value.image.data;\n array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr);\n this.labelTexture.value.addLayerUpdate(page);\n this.labelTexture.value.needsUpdate = true;\n }\n\n if ( instances !== undefined ) {\n this.ensureInstanceTextures();\n const instances_arr = instances as Uint32Array;\n const array = this.instanceTexture.value.image.data;\n array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr);\n this.instanceTexture.value.addLayerUpdate(page);\n this.instanceTexture.value.needsUpdate = true;\n }\n\n for (let i = 0; i < shArrays.length; i++) {\n const array = shArrays[i];\n const elementsPerSplat =\n this.shTextures[i].value.format === THREE.RGIntegerFormat ? 2 : 4;\n uploadTextureLayer(\n this.shTextures[i],\n page,\n pageBase * elementsPerSplat,\n array,\n );\n }\n }\n\n private newUint32ArrayTexture(\n elementsPerSplat: 2 | 4,\n ): THREE.DataArrayTexture {\n const data = new Uint32Array(\n this.maxPages * PAGE_WIDTH * PAGE_HEIGHT * elementsPerSplat,\n );\n const texture = new THREE.DataArrayTexture(\n data,\n PAGE_WIDTH,\n PAGE_HEIGHT,\n this.maxPages,\n );\n texture.format =\n elementsPerSplat === 2 ? THREE.RGIntegerFormat : THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = elementsPerSplat === 2 ? \"RG32UI\" : \"RGBA32UI\";\n texture.needsUpdate = true;\n // Avoid initial upload of empty/null data\n texture.source.dataReady = false;\n this.renderer.initTexture(texture);\n return texture;\n }\n\n driveFetchers() {\n const needed = [];\n const overflow = [];\n let numPages = 0;\n\n for (const { splats, chunk } of this.fetchPriority) {\n const pageLru = this.getSplatsChunk(splats, chunk);\n if (pageLru) {\n if (numPages >= this.maxPages) {\n overflow.push(pageLru);\n } else {\n needed.push(pageLru);\n }\n numPages += 1;\n continue;\n }\n\n if (\n this.fetched.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n ) ||\n this.fetchers.some(\n ({ splats: s, chunk: c }) => splats === s && chunk === c,\n )\n ) {\n numPages += 1;\n continue;\n }\n\n if (numPages < this.maxPages && this.fetchers.length < this.numFetchers) {\n numPages += 1;\n const promise = splats\n .fetchDecodeChunk(chunk)\n .then(\n async (data) => {\n // Place data in ready queue and remove self from active fetchers list\n this.fetched.push({ splats, chunk, data });\n if (this.fetchPause > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.fetchPause),\n );\n }\n },\n async (error) => {\n console.warn(error);\n const backoff = 250 + 500 * Math.random();\n await new Promise((resolve) => setTimeout(resolve, backoff));\n },\n )\n .finally(() => {\n this.fetchers = this.fetchers.filter(\n ({ splats: s, chunk: c }) => splats !== s || chunk !== c,\n );\n this.processFetched();\n });\n // Add self to active fetchers list\n this.fetchers.push({ splats, chunk, promise });\n\n promise.then((data) => {\n if (this.autoDrive) {\n this.driveFetchers();\n }\n });\n }\n }\n\n // Update LRU ordering in reverse priority order\n const now = performance.now();\n\n for (const pageLru of overflow.reverse()) {\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n\n // Create set of pages not needed\n const extraPages = new Set(this.pageLru);\n for (const pageLru of needed.reverse()) {\n extraPages.delete(pageLru);\n\n pageLru.lru = now;\n this.pageLru.delete(pageLru);\n this.pageLru.add(pageLru);\n }\n this.freeablePages = Array.from(extraPages).map(({ page }) => page);\n }\n\n private allocateFreeable(): number | undefined {\n const page = this.freeablePages.shift();\n if (page === undefined) {\n // No freeable pages available\n return undefined;\n }\n\n const splatsChunk = this.pageToSplatsChunk[page];\n if (!splatsChunk) {\n throw new Error(`splatsChunk not found for page: ${page}`);\n }\n\n const { splats, chunk } = splatsChunk;\n this.removeSplatsChunkPage(splats, chunk, page);\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats: PAGE_SPLATS,\n });\n return page;\n }\n\n private processFetched() {\n const now = performance.now();\n while (true) {\n const fetched = this.fetched.shift();\n if (!fetched) {\n break;\n }\n const { splats, chunk, data } = fetched;\n\n let page = this.allocatePage();\n if (page === undefined) {\n page = this.allocateFreeable();\n if (page === undefined) {\n // No pages available, stop for now\n return;\n }\n }\n\n this.insertSplatsChunkPage(splats, chunk, page, now);\n const { numSplats, extra } = data;\n this.lodTreeUpdates.push({\n splats,\n page,\n chunk,\n numSplats,\n lodTree: extra.lodTree as Uint32Array,\n });\n\n if (isExtResult(data, this.extSplats)) {\n const extArrays = data.extArrays;\n const packedArray = extArrays[0];\n const extArray = extArrays[1];\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3a as Uint32Array,\n data.extra.sh3b as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n extArray,\n shArrays,\n labels: extra?.labels,\n instances: extra?.instances\n });\n } else {\n const packedArray = data.packedArray;\n const shArrays = [\n data.extra.sh1 as Uint32Array,\n data.extra.sh2 as Uint32Array,\n data.extra.sh3 as Uint32Array,\n ];\n shArrays.length = shArrays.findIndex((sh) => !sh);\n this.newUploads.push({\n page,\n numSplats,\n packedArray,\n shArrays,\n });\n }\n }\n }\n\n processUploads() {\n while (true) {\n const upload = this.readyUploads.shift();\n if (!upload) {\n break;\n }\n const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload;\n this.uploadPage(page, packedArray, shArrays, extArray, labels, instances);\n }\n }\n\n consumeLodTreeUpdates() {\n const updates = this.lodTreeUpdates;\n this.lodTreeUpdates = [];\n\n this.readyUploads.push(...this.newUploads);\n this.newUploads = [];\n return updates;\n }\n\n static emptyUint32x4 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyUint32x2 = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 2);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RG32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyIndicesTexture = (() => {\n const emptyArray = new Uint32Array(4096 * 4);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyPackedTexture = this.emptyUint32x4;\n static emptyExtTexture = this.emptyUint32x4;\n static emptyLabelTexture = this.emptyUint32x4;\n static emptyShTextures = [\n this.emptyUint32x2,\n this.emptyUint32x4,\n this.emptyUint32x4,\n ] as const;\n static emptyExtShTextures = [\n this.emptyUint32x4,\n this.emptyUint32x4,\n this.emptyUint32x4, // SH3A\n this.emptyUint32x4, // SH3B\n ] as const;\n}\n\n// Convenience function to distinguish ExtResult and PackedResult\nfunction isExtResult(\n data: ExtResult | PackedResult,\n extSplats: boolean,\n): data is ExtResult {\n return extSplats;\n}\n\nfunction uploadTextureLayer(\n texture: DynoUsampler2DArray,\n layer: number,\n dstOffset: number,\n data: Uint32Array,\n) {\n const array = texture.value.image.data;\n array.subarray(dstOffset, dstOffset + data.length).set(data);\n\n texture.value.addLayerUpdate(layer);\n texture.value.needsUpdate = true;\n texture.value.source.dataReady = true;\n}\n\nasync function fetchRange({\n url,\n requestHeader,\n withCredentials,\n offset,\n bytes,\n}: {\n url: string;\n requestHeader?: Record;\n withCredentials?: boolean;\n offset?: number;\n bytes?: number;\n}): Promise {\n const request = new Request(url, {\n headers: requestHeader ? new Headers(requestHeader) : undefined,\n credentials: withCredentials ? \"include\" : \"same-origin\",\n });\n if (offset !== undefined && bytes !== undefined) {\n request.headers.set(\"Range\", `bytes=${offset}-${offset + bytes - 1}`);\n }\n const response = await fetch(request);\n if (!response.ok || !response.body) {\n throw new Error(\n `Failed to fetch \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n","import * as THREE from \"three\";\n\nimport {\n get_raycast_buffer,\n get_raycast_buffer2,\n raycast_ext_buffers,\n raycast_packed_buffer,\n} from \"spark-rs\";\nimport { ExtSplats } from \"./ExtSplats\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { type RgbaArray, TRgbaArray } from \"./RgbaArray\";\nimport { SplatEdit, SplatEditSdf, SplatEdits } from \"./SplatEdit\";\nimport {\n type CovSplatModifier,\n CovSplatTransformer,\n type FrameUpdateContext,\n type GsplatModifier,\n SplatGenerator,\n SplatTransformer,\n} from \"./SplatGenerator\";\nimport { PagedSplats, SplatPager } from \"./SplatPager\";\nimport type { SplatSkinning } from \"./SplatSkinning\";\nimport {\n DEFAULT_SPLAT_ENCODING,\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n type SplatEncoding,\n type SplatFileType,\n} from \"./defines\";\nimport {\n CovSplat,\n Dyno,\n DynoBool,\n DynoFloat,\n DynoInt,\n DynoUsampler2D,\n type DynoVal,\n DynoVec4,\n Gsplat,\n combineCovSplat,\n combineGsplat,\n defineGsplat,\n dyno,\n dynoBlock,\n gsplatToCovSplat,\n mul,\n splitCovSplat,\n splitGsplat,\n unindentLines,\n} from \"./dyno\";\nimport * as wasm from \"./wasm\";\n\nexport type SplatMeshOptions = {\n // URL to fetch a Gaussian splat file from(supports .ply, .splat, .ksplat,\n // .spz formats). (default: undefined)\n url?: string;\n // Raw bytes of a Gaussian splat file to decode directly instead of fetching\n // from URL. (default: undefined)\n fileBytes?: Uint8Array | ArrayBuffer;\n // Override the file type detection for formats that can't be reliably\n // auto-detected (.splat, .ksplat). (default: undefined auto-detects other\n // formats from file contents)\n fileType?: SplatFileType;\n // File name to use for type detection. (default: undefined)\n fileName?: string;\n // Stream to read the Gaussian splat file from. (default: undefined)\n stream?: ReadableStream;\n // Length of the stream in bytes. (default: undefined)\n streamLength?: number;\n // Use an existing PackedSplats object as the source instead of loading from\n // a file. Can be used to share a collection of Gsplats among multiple SplatMeshes\n // (default: undefined creates a new empty PackedSplats or decoded from a\n // data source above)\n packedSplats?: PackedSplats;\n // Use an existing SplatSource object as the source instead of loading from file.\n splats?: SplatSource;\n // Reserve space for at least this many splats when constructing the mesh\n // initially. (default: determined by file)\n maxSplats?: number;\n // Callback function to programmatically create splats at initialization\n // in provided PackedSplats. (default: undefined)\n constructSplats?: (splats: PackedSplats) => Promise | void;\n // Callback function called while downloading and initializing (default: undefined)\n onProgress?: (event: ProgressEvent) => void;\n // Callback function that is called when mesh initialization is complete.\n // (default: undefined)\n onLoad?: (mesh: SplatMesh) => Promise | void;\n // Controls whether SplatEdits have any effect on this mesh. (default: true)\n editable?: boolean;\n // Controls whether SplatMesh participates in Three.js raycasting (default: true)\n raycastable?: boolean;\n // Minimum opacity for raycasting splats. (default: 0.2)\n minRaycastOpacity?: number;\n // Callback function that is called every frame to update the mesh.\n // Call mesh.updateVersion() if splats need to be regenerated due to some change.\n // Calling updateVersion() is not necessary for object transformations, recoloring,\n // or opacity adjustments as these are auto-detected. (default: undefined)\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n // Gsplat modifier to apply in object-space before any transformations.\n // A GsplatModifier is a dyno shader-graph block that transforms an input\n // gsplat: DynoVal to an output gsplat: DynoVal with gsplat.center\n // coordinate in object-space. (default: undefined)\n objectModifier?: GsplatModifier;\n objectModifiers?: GsplatModifier[];\n // Gsplat modifier to apply in world-space after transformations.\n // (default: undefined)\n worldModifier?: GsplatModifier;\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Override the default splat encoding ranges for the PackedSplats.\n // (default: undefined)\n splatEncoding?: SplatEncoding;\n // Set to true to load/use \"extended splat\" encoding with float32 x/y/z\n extSplats?: boolean | ExtSplats;\n // Set to true to output covariance splats for anisotropic scaling\n covSplats?: boolean;\n // Enable LOD. If a number is provided, it will be used as LoD level base,\n // otherwise the default 1.5 is used. When loading a file without pre-computed\n // LoD it will use the \"quick lod\" algorithm to generate one on-the-fly with\n // the selected LoD level base. (default: undefined=false)\n lod?: boolean | \"quality\";\n // Only create LoD if the input splat acount is above this (default: undefined=0)\n lodAbove?: number;\n // Keep the original PackedSplats data before creating LoD version. (default: false)\n nonLod?: boolean;\n // Force enable/disable LoD (default: enabled iff packedSplats.lodSplats is not null)\n enableLod?: boolean;\n // LoD scale to apply @default 1.0\n lodScale?: number;\n // Foveation scale to apply behind viewer\n // (default: 1.0)\n behindFoveate?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction\n // with perfection foveation=1.0\n // (default: 0.0)\n coneFov0?: number;\n // Full-width angle in degrees of fixed foveation cone along the view direction. 0.0=disable\n // (default: 0.0)\n coneFov?: number;\n // Foveation scale to apply at the edge of the cone\n // (default: 1.0)\n coneFoveate?: number;\n paged?: boolean | PagedSplats | SplatPager;\n};\n\nexport type SplatMeshContext = {\n transform: SplatTransformer;\n viewToWorld: SplatTransformer;\n worldToView: SplatTransformer;\n viewToObject: SplatTransformer;\n covTransform: CovSplatTransformer;\n covViewToWorld: CovSplatTransformer;\n covWorldToView: CovSplatTransformer;\n covViewToObject: CovSplatTransformer;\n recolor: DynoVec4;\n time: DynoFloat;\n deltaTime: DynoFloat;\n numSplats: DynoInt;\n splats: SplatSource;\n enableLod: DynoBool;\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>;\n};\n\nexport interface SplatSource {\n prepareFetchSplat(): void;\n dispose(): void;\n\n getNumSplats(): number;\n hasRgbDir(): boolean;\n getNumSh(): number;\n setMaxSh(maxSh: number): void;\n\n fetchSplat({\n index,\n viewOrigin,\n }: { index: DynoVal<\"int\">; viewOrigin?: DynoVal<\"vec3\"> }): DynoVal<\n typeof Gsplat\n >;\n\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ): void;\n}\n\nexport class EmptySplatSource implements SplatSource {\n fetchDyno = new Dyno({\n inTypes: {},\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplat],\n statements: ({ outputs }) =>\n unindentLines(`\n ${outputs.gsplat}.flags = 0u;\n return;\n `),\n }).outputs.gsplat;\n\n prepareFetchSplat() {}\n dispose() {}\n\n getNumSplats() {\n return 0;\n }\n hasRgbDir() {\n return false;\n }\n getNumSh() {\n return 0;\n }\n setMaxSh(maxSh: number) {}\n\n fetchSplat({ index }: { index: DynoVal<\"int\"> }): DynoVal {\n return this.fetchDyno;\n }\n\n forEachSplat() {}\n}\n\nexport class SplatMesh extends SplatGenerator {\n // A Promise you can await to ensure fetching, parsing,\n // and initialization has completed\n initialized: Promise;\n // A boolean indicating whether initialization is complete\n isInitialized = false;\n\n // If you modify packedSplats you should set\n // splatMesh.packedSplats.needsUpdate = true to signal to Three.js that it\n // should re-upload the data to the underlying texture. Use this sparingly with\n // objects with smaller Gsplat counts as it requires a CPU-GPU data transfer for\n // each frame. Thousands to tens of thousands of Gsplats is fine. (See hands.ts\n // for an example of rendering \"Gsplat hands\" in WebXR using this technique.)\n packedSplats?: PackedSplats;\n extSplats?: ExtSplats;\n covSplats: boolean;\n splats?: SplatSource;\n lastSplats?: SplatSource;\n paged?: PagedSplats;\n\n // A THREE.Color that can be used to tint all splats in the mesh.\n // (default: new THREE.Color(1, 1, 1))\n recolor: THREE.Color = new THREE.Color(1, 1, 1);\n // Global opacity multiplier for all splats in the mesh. (default: 1)\n opacity = 1;\n\n // A SplatMeshContext consisting of useful scene and object dyno uniforms that can\n // be used to in the Gsplat processing pipeline, for example via objectModifier and\n // worldModifier. (created on construction)\n context: SplatMeshContext;\n onFrame?: ({\n mesh,\n time,\n deltaTime,\n }: { mesh: SplatMesh; time: number; deltaTime: number }) => void;\n generatorDirty = true;\n\n objectModifiers?: GsplatModifier[];\n worldModifiers?: GsplatModifier[];\n covObjectModifiers?: CovSplatModifier[];\n covWorldModifiers?: CovSplatModifier[];\n // Set to true to have the viewToObject property in context be updated each frame.\n // If the mesh has extra.sh1 (first order spherical harmonics directional lighting)\n // this property will always be updated. (default: false)\n enableViewToObject = false;\n // Set to true to have context.viewToWorld updated each frame. (default: false)\n enableViewToWorld = false;\n // Set to true to have context.worldToView updated each frame. (default: false)\n enableWorldToView = false;\n\n // Optional SplatSkinning instance for animating splats with dual-quaternion\n // skeletal animation. (default: null)\n skinning: SplatSkinning | null = null;\n\n // Optional list of SplatEdits to apply to the mesh. If null, any SplatEdit\n // children in the scene graph will be added automatically. (default: null)\n edits: SplatEdit[] | null = null;\n editable: boolean;\n raycastable: boolean;\n minRaycastOpacity: number;\n raycastIndices?: { numSplats: number; indices: Uint32Array };\n // Compiled SplatEdits for applying SDF edits to splat RGBA + centers\n rgbaDisplaceEdits: SplatEdits | null = null;\n // Optional RgbaArray to overwrite splat RGBA values with custom values.\n // Useful for \"baking\" RGB and opacity edits into the SplatMesh. (default: null)\n splatRgba: RgbaArray | null = null;\n\n // Maximum Spherical Harmonics level to use. Call updateGenerator()\n // after changing. (default: 3)\n maxSh = 3;\n\n enableLod?: boolean;\n lodScale: number;\n behindFoveate?: number;\n coneFov0?: number;\n coneFov?: number;\n coneFoveate?: number;\n\n showLodPage?: number;\n showLodPageDyno = new DynoInt({ value: 0 });\n\n constructor(options: SplatMeshOptions = {}) {\n super({\n update: (context) => this.update(context),\n });\n\n if (options.splats) {\n this.splats = options.splats;\n this.numSplats = options.splats.getNumSplats();\n } else if (options.paged) {\n if (options.extSplats) {\n console.warn(\n \"To set extSplats with the paged option, set SparkRenderer.pagedExtSplats\",\n );\n }\n const rootUrl = options.url ?? \"\";\n if (options.paged === true) {\n this.paged = new PagedSplats({ rootUrl });\n } else if (options.paged instanceof PagedSplats) {\n this.paged = options.paged;\n } else if (options.paged instanceof SplatPager) {\n this.paged = new PagedSplats({ rootUrl, pager: options.paged });\n } else {\n throw new Error(\"Invalid paged option\");\n }\n this.splats = this.paged;\n } else if (options.extSplats) {\n this.extSplats =\n options.extSplats instanceof ExtSplats\n ? options.extSplats\n : new ExtSplats();\n options.extSplats = this.extSplats;\n this.numSplats = this.extSplats.numSplats;\n this.splats = this.extSplats;\n } else if (options.packedSplats) {\n this.packedSplats = options.packedSplats;\n this.packedSplats.splatEncoding = options.splatEncoding ?? {\n ...DEFAULT_SPLAT_ENCODING,\n };\n this.splats = this.packedSplats;\n } else {\n this.packedSplats = new PackedSplats();\n }\n\n this.editable = options.editable ?? true;\n this.raycastable = options.raycastable ?? true;\n this.minRaycastOpacity = options.minRaycastOpacity ?? 0.2;\n this.onFrame = options.onFrame;\n\n this.context = {\n transform: new SplatTransformer(),\n viewToWorld: new SplatTransformer(),\n worldToView: new SplatTransformer(),\n viewToObject: new SplatTransformer(),\n covTransform: new CovSplatTransformer(),\n covViewToWorld: new CovSplatTransformer(),\n covWorldToView: new CovSplatTransformer(),\n covViewToObject: new CovSplatTransformer(),\n recolor: new DynoVec4({\n value: new THREE.Vector4().setScalar(Number.NEGATIVE_INFINITY),\n }),\n time: new DynoFloat({ value: 0 }),\n deltaTime: new DynoFloat({ value: 0 }),\n numSplats: new DynoInt({ value: 0 }),\n splats: new EmptySplatSource(),\n enableLod: new DynoBool({ value: false }),\n lodIndices: new DynoUsampler2D({\n value: emptyLodIndices,\n key: \"lodIndices\",\n }),\n };\n\n this.covSplats = options.covSplats ?? false;\n if (this.covSplats && !this.extSplats) {\n throw new Error(\"CovSplats requires ExtSplats\");\n }\n\n this.objectModifiers = options.objectModifier\n ? [options.objectModifier]\n : undefined;\n this.worldModifiers = options.worldModifier\n ? [options.worldModifier]\n : undefined;\n\n if (options.objectModifiers) {\n this.objectModifiers = options.objectModifiers;\n }\n if (options.worldModifiers) {\n this.worldModifiers = options.worldModifiers;\n }\n\n this.enableLod = options.enableLod;\n this.lodScale = options.lodScale ?? 1.0;\n this.behindFoveate = options.behindFoveate;\n this.coneFov0 = options.coneFov0;\n this.coneFov = options.coneFov;\n this.coneFoveate = options.coneFoveate;\n\n this.updateGenerator();\n\n if (\n options.url ||\n options.fileBytes ||\n options.stream ||\n options.constructSplats ||\n (options.packedSplats && !options.packedSplats.isInitialized) ||\n (this.extSplats && !this.extSplats.isInitialized)\n ) {\n // We need to initialize asynchronously given the options\n this.initialized = this.asyncInitialize(options).then(async () => {\n this.updateGenerator();\n\n this.isInitialized = true;\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n if (maybePromise instanceof Promise) {\n await maybePromise;\n }\n }\n return this;\n });\n } else {\n this.isInitialized = true;\n \n this.initialized = Promise.resolve(this);\n if (options.onLoad) {\n const maybePromise = options.onLoad(this);\n // If onLoad returns a promise, wait for it to complete\n if (maybePromise instanceof Promise) {\n this.initialized = maybePromise.then(() => this);\n }\n }\n }\n\n // this.add(createRendererDetectionMesh());\n }\n\n public updateLabelLookup(categories: Set) {\n if (this.paged) {\n this.paged.pager?.updateLabelLookup(categories);\n }\n }\n\n public updateLabelHighlight(id: number) {\n if (this.paged) {\n this.paged.pager?.updateLabelHighlight(id);\n }\n }\n\n async asyncInitialize(options: SplatMeshOptions) {\n const {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n } = options;\n if (this.packedSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const packedSplatsOptions = {\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct: constructSplats,\n onProgress,\n splatEncoding,\n lod,\n nonLod,\n lodAbove,\n };\n this.packedSplats.reinitialize(packedSplatsOptions);\n }\n await this.packedSplats.initialized;\n this.splats = this.packedSplats;\n } else if (this.extSplats) {\n if (url || fileBytes || stream || constructSplats) {\n const construct = constructSplats as\n | ((splats: ExtSplats) => Promise)\n | undefined;\n this.extSplats.reinitialize({\n url,\n fileBytes,\n fileType,\n fileName,\n stream,\n streamLength,\n maxSplats,\n construct,\n onProgress,\n lod,\n nonLod,\n lodAbove,\n });\n await this.extSplats.initialized;\n this.splats = this.extSplats;\n }\n }\n \n if (this.splats) {\n this.numSplats = this.splats.getNumSplats();\n this.updateGenerator();\n }\n }\n\n static dynoTime = new DynoFloat({ value: 0 });\n\n // Creates a new Gsplat with the provided parameters (all values in \"float\" space,\n // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,\n // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential\n // doubling strategy to fit the new data, so it's fairly efficient to just\n // pushSplat(...) each Gsplat you want to create in a loop.\n pushSplat(\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) {\n if (this.packedSplats) {\n this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);\n } else if (this.extSplats) {\n this.extSplats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n\n // This method iterates over all Gsplats in this instance's packedSplats,\n // invoking the provided callback with index: number in 0..=(this.numSplats-1) and\n // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,\n // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).\n // Note that the objects passed in as center etc. are the same for every callback\n // invocation: these objects are reused for efficiency. Changing these values has\n // no effect as they are decoded/unpacked copies of the underlying data. To update\n // the packedSplats, call .packedSplats.setSplat(index, center, scales,\n // quaternion, opacity, color).\n forEachSplat(\n callback: (\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => void,\n ) {\n this.splats?.forEachSplat(callback);\n }\n\n // Call this when you are finished with the SplatMesh and want to free\n // any buffers it holds (via packedSplats).\n dispose() {\n if (\n this.splats &&\n this.splats !== this.packedSplats &&\n this.splats !== this.extSplats\n ) {\n this.splats.dispose();\n this.splats = undefined;\n }\n if (this.packedSplats) {\n this.packedSplats.dispose();\n this.packedSplats = undefined;\n }\n if (this.extSplats) {\n this.extSplats.dispose();\n this.extSplats = undefined;\n }\n }\n\n // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,\n // only the centers of the splats are used to compute the bounding box.\n // IMPORTANT: This should only be called after the SplatMesh is initialized.\n getBoundingBox(centers_only = true) {\n if (!this.initialized) {\n throw new Error(\n \"Cannot get bounding box before SplatMesh is initialized\",\n );\n }\n const minVec = new THREE.Vector3(\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n );\n const maxVec = new THREE.Vector3(\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n );\n const corners = new THREE.Vector3();\n const signs = [-1, 1];\n\n function callback(\n _index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n _opacity: number,\n _color: THREE.Color,\n ) {\n if (centers_only) {\n minVec.min(center);\n maxVec.max(center);\n } else {\n // Get the 8 corners of the AABB in local space\n for (const x of signs) {\n for (const y of signs) {\n for (const z of signs) {\n corners.set(x * scales.x, y * scales.y, z * scales.z);\n // Transform corner by rotation and position\n corners.applyQuaternion(quaternion);\n corners.add(center);\n minVec.min(corners);\n maxVec.max(corners);\n }\n }\n }\n }\n }\n\n this.splats?.forEachSplat(callback);\n const box = new THREE.Box3(minVec, maxVec);\n return box;\n }\n\n set objectModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.objectModifiers = [modifier];\n } else {\n this.objectModifiers = undefined;\n }\n }\n\n set worldModifier(modifier: GsplatModifier | undefined) {\n if (modifier) {\n this.worldModifiers = [modifier];\n } else {\n this.worldModifiers = undefined;\n }\n }\n\n private constructGenerator(context: SplatMeshContext) {\n if (this.covSplats) {\n return this.constructCovGenerator(context);\n }\n\n const { transform, viewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.setMaxSh(this.maxSh);\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: viewToObject.translate,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n gsplat = this.skinning.modify(gsplat);\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n // Transform from object to world-space\n gsplat = transform.applyGsplat(gsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);\n gsplat = combineGsplat({ gsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n gsplat = this.rgbaDisplaceEdits.modify(gsplat);\n }\n\n if (this.worldModifiers) {\n // Inject world-space Gsplat modifier dyno\n for (const modifier of this.worldModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n if (this.paged?.pager?.labelLookupModifier) {\n gsplat = this.paged?.pager?.labelLookupModifier.apply({ gsplat }).gsplat;\n }\n\n // We're done! Output resulting Gsplat\n return { gsplat };\n },\n );\n this.generator = generator;\n this.covGenerator = undefined;\n }\n\n constructCovGenerator(context: SplatMeshContext) {\n // console.log(\"CovSplatMesh.constructCovGenerator\");\n const { covTransform, covViewToObject, recolor } = context;\n const generator = dynoBlock(\n { index: \"int\" },\n { covsplat: CovSplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n\n index = maybeLookupIndex(\n context.lodIndices,\n index,\n context.numSplats,\n context.enableLod,\n this.showLodPageDyno,\n );\n\n // Read a Gsplat from the SplatSource\n context.splats.prepareFetchSplat();\n let gsplat = context.splats.fetchSplat({\n index,\n viewOrigin: covViewToObject.offset,\n });\n\n if (this.splatRgba) {\n // Overwrite RGBA with baked RGBA values\n gsplat = maybeInjectSplatRgba(\n gsplat,\n this.splatRgba.dyno,\n index,\n context.enableLod,\n );\n }\n\n if (this.objectModifiers) {\n // Inject object-space Gsplat modifier dyno\n for (const modifier of this.objectModifiers) {\n gsplat = modifier.apply({ gsplat }).gsplat;\n }\n }\n\n let covsplat = gsplatToCovSplat(gsplat);\n\n if (this.skinning) {\n // Transform according to bones + skinning weights\n covsplat = this.skinning.modifyCov(covsplat);\n }\n\n if (this.covObjectModifiers) {\n // Inject object-space CovSplat modifier dyno\n for (const modifier of this.covObjectModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // Transform from object to world-space\n covsplat = covTransform.applyCovSplat(covsplat);\n\n // Apply any global recoloring and opacity\n const recolorRgba = mul(recolor, splitCovSplat(covsplat).outputs.rgba);\n covsplat = combineCovSplat({ covsplat, rgba: recolorRgba });\n\n if (this.rgbaDisplaceEdits) {\n // Apply RGBA edit layer SDFs\n covsplat = this.rgbaDisplaceEdits.modifyCov(covsplat);\n }\n\n if (this.covWorldModifiers) {\n // Inject world-space CovSplat modifier dyno\n for (const modifier of this.covWorldModifiers) {\n covsplat = modifier.apply({ covsplat }).covsplat;\n }\n }\n\n // We're done! Output resulting Gsplat\n return { covsplat };\n },\n );\n this.generator = undefined;\n this.covGenerator = generator;\n }\n\n // Call this whenever something changes in the Gsplat processing pipeline,\n // for example changing maxSh or updating objectModifier or worldModifier.\n // Compiled generators are cached for efficiency and re-use when the same\n // pipeline structure emerges after successive changes.\n updateGenerator() {\n this.generatorDirty = true;\n }\n\n // This is called automatically by SparkRenderer and you should not have to\n // call it. It updates parameters for the generated pipeline and calls\n // updateGenerator() if the pipeline needs to change.\n update({\n renderer,\n time,\n deltaTime,\n viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices,\n }: FrameUpdateContext) {\n this.context.time.value = time;\n this.context.deltaTime.value = deltaTime;\n SplatMesh.dynoTime.value = time;\n this.showLodPageDyno.value = this.showLodPage ?? -1;\n\n const splats = this.splats ?? this.packedSplats ?? this.extSplats;\n if (splats) {\n this.context.splats = splats;\n }\n this.numSplats = this.context.splats.getNumSplats();\n\n let updated = false;\n\n const lodSplats = this.packedSplats?.lodSplats ?? this.extSplats?.lodSplats;\n this.context.enableLod.value = lodSplats != null && lodIndices != null;\n if (this.enableLod === false) {\n this.context.enableLod.value = false;\n }\n this.context.lodIndices.value = lodIndices?.texture ?? emptyLodIndices;\n\n if (this.context.enableLod.value && lodSplats) {\n this.context.splats = lodSplats;\n this.numSplats = lodIndices?.numSplats ?? 0;\n }\n\n this.context.numSplats.value = this.numSplats;\n\n if (this.context.splats !== this.lastSplats) {\n this.lastSplats = this.context.splats;\n this.generatorDirty = true;\n }\n\n if (!this.covSplats) {\n if (this.context.transform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.viewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.worldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const objectToWorld = new THREE.Matrix4().compose(\n this.context.transform.translate.value,\n this.context.transform.rotate.value,\n new THREE.Vector3().setScalar(this.context.transform.scale.value),\n );\n const worldToObject = objectToWorld.invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.viewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n } else {\n if (this.context.covTransform.update(this)) {\n updated = true;\n }\n\n if (\n this.context.covViewToWorld.updateFromMatrix(viewToWorld) &&\n this.enableViewToWorld\n ) {\n updated = true;\n }\n const worldToView = viewToWorld.clone().invert();\n if (\n this.context.covWorldToView.updateFromMatrix(worldToView) &&\n this.enableWorldToView\n ) {\n updated = true;\n }\n\n const worldToObject = this.matrixWorld.clone().invert();\n const viewToObjectMatrix = worldToObject.multiply(viewToWorld);\n if (\n this.context.covViewToObject.updateFromMatrix(viewToObjectMatrix) &&\n (this.enableViewToObject || this.context.splats.hasRgbDir())\n ) {\n // Only trigger update if we have view-dependent spherical harmonics\n updated = true;\n }\n }\n\n const newRecolor = new THREE.Vector4(\n this.recolor.r,\n this.recolor.g,\n this.recolor.b,\n this.opacity,\n );\n if (!newRecolor.equals(this.context.recolor.value)) {\n this.context.recolor.value.copy(newRecolor);\n updated = true;\n }\n\n const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];\n if (this.editable && !this.edits) {\n // If we haven't set any explicit edits, add any child SplatEdits\n this.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n edits.push(node);\n }\n });\n }\n\n edits.sort((a, b) => a.ordering - b.ordering);\n const editsSdfs = edits.map((edit) => {\n if (edit.sdfs != null) {\n return { edit, sdfs: edit.sdfs };\n }\n const sdfs: SplatEditSdf[] = [];\n edit.traverseVisible((node) => {\n if (node instanceof SplatEditSdf) {\n sdfs.push(node);\n }\n });\n return { edit, sdfs };\n });\n\n if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {\n const edits = editsSdfs.length;\n const sdfs = editsSdfs.reduce(\n (total, edit) => total + edit.sdfs.length,\n 0,\n );\n this.rgbaDisplaceEdits = new SplatEdits({\n maxEdits: edits,\n maxSdfs: sdfs,\n });\n this.generatorDirty = true;\n }\n if (this.rgbaDisplaceEdits) {\n const editResult = this.rgbaDisplaceEdits.update(editsSdfs);\n updated ||= editResult.updated;\n if (editResult.dynoUpdated) {\n this.generatorDirty = true;\n }\n }\n\n if (this.generatorDirty) {\n this.constructGenerator(this.context);\n this.generatorDirty = false;\n updated = true;\n }\n\n if (updated) {\n this.updateVersion();\n }\n\n this.onFrame?.({ mesh: this, time, deltaTime });\n }\n\n // This method conforms to the standard THREE.Raycaster API, performing object-ray\n // intersections using this method to populate the provided intersects[] array\n // with each intersection point.\n raycast(\n raycaster: THREE.Raycaster,\n intersects: {\n distance: number;\n point: THREE.Vector3;\n object: THREE.Object3D;\n }[],\n ) {\n if (\n !wasm.isInitialized() ||\n !this.raycastable ||\n (!this.packedSplats && !this.extSplats && !this.paged)\n ) {\n return;\n }\n const paged = this.paged != null;\n const ext = paged\n ? (this.paged?.pager?.extSplats ?? false)\n : this.extSplats != null;\n\n const { near, far, ray } = raycaster;\n const worldToMesh = this.matrixWorld.clone().invert();\n const worldToMeshRot = new THREE.Matrix3().setFromMatrix4(worldToMesh);\n const origin = ray.origin.clone().applyMatrix4(worldToMesh);\n const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);\n\n const buffer = get_raycast_buffer();\n const bufferSize = buffer.length / 4;\n let intersections = 0;\n\n const numSplats =\n this.raycastIndices?.numSplats ??\n (paged ? this.paged?.numSplats : this.context.numSplats.value) ??\n 0;\n const indices =\n this.raycastIndices?.indices ??\n (paged\n ? (this.paged?.dynoIndices.value.image.data as Uint32Array)\n : this.context.enableLod.value\n ? (this.context.lodIndices.value.image.data as Uint32Array)\n : null) ??\n null;\n\n if (!ext) {\n const packed = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.packedSplats?.lodSplats?.packedArray\n : this.packedSplats?.packedArray;\n if (!packed) {\n return;\n }\n const splatEncoding = paged\n ? this.paged?.splatEncoding\n : this.packedSplats?.splatEncoding;\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(packed.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = packed[index4];\n buffer[i4 + 1] = packed[index4 + 1];\n buffer[i4 + 2] = packed[index4 + 2];\n buffer[i4 + 3] = packed[index4 + 3];\n }\n }\n\n const newIntersections = raycast_packed_buffer(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n splatEncoding?.lnScaleMin ?? LN_SCALE_MIN,\n splatEncoding?.lnScaleMax ?? LN_SCALE_MAX,\n splatEncoding?.lodOpacity ?? false,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n } else {\n const buffer2 = get_raycast_buffer2();\n const ext1 = paged\n ? (this.paged?.pager?.packedTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[0]\n : this.extSplats?.extArrays[0];\n const ext2 = paged\n ? (this.paged?.pager?.extTexture.value.image.data as Uint32Array)\n : indices\n ? this.extSplats?.lodSplats?.extArrays[1]\n : this.extSplats?.extArrays[1];\n if (!ext1 || !ext2) {\n return;\n }\n for (let base = 0; base < numSplats; base += bufferSize) {\n const count = Math.min(bufferSize, numSplats - base);\n if (!indices) {\n buffer.set(ext1.subarray(base * 4, (base + count) * 4));\n buffer2.set(ext2.subarray(base * 4, (base + count) * 4));\n } else {\n for (let i = 0; i < count; ++i) {\n const index = indices[base + i];\n const i4 = i * 4;\n const index4 = index * 4;\n buffer[i4] = ext1[index4];\n buffer[i4 + 1] = ext1[index4 + 1];\n buffer[i4 + 2] = ext1[index4 + 2];\n buffer[i4 + 3] = ext1[index4 + 3];\n buffer2[i4] = ext2[index4];\n buffer2[i4 + 1] = ext2[index4 + 1];\n buffer2[i4 + 2] = ext2[index4 + 2];\n buffer2[i4 + 3] = ext2[index4 + 3];\n }\n }\n\n const newIntersections = raycast_ext_buffers(\n origin.x,\n origin.y,\n origin.z,\n direction.x,\n direction.y,\n direction.z,\n this.minRaycastOpacity,\n near,\n far,\n count,\n );\n intersections = this.appendRaycastBuffer(\n intersections,\n newIntersections,\n );\n }\n }\n\n for (const distance of SplatMesh.raycastBuffer.subarray(0, intersections)) {\n const point = ray.direction\n .clone()\n .multiplyScalar(distance)\n .add(ray.origin);\n intersects.push({\n distance,\n point,\n object: this,\n });\n }\n }\n\n static raycastBuffer = new Float32Array(1024);\n\n private appendRaycastBuffer(count: number, additional: Float32Array) {\n const total = count + additional.length;\n let capacity = SplatMesh.raycastBuffer.length;\n\n if (total > capacity) {\n while (capacity < total) {\n capacity *= 2;\n }\n const newBuffer = new Float32Array(capacity);\n newBuffer.set(SplatMesh.raycastBuffer.subarray(0, count));\n SplatMesh.raycastBuffer = newBuffer;\n }\n\n SplatMesh.raycastBuffer.set(additional, count);\n return count + additional.length;\n }\n\n async createLodSplats({\n rgbaArray,\n quality,\n }: { rgbaArray?: RgbaArray; quality?: boolean } = {}) {\n if (this.packedSplats) {\n await this.packedSplats.createLodSplats({ quality, rgbaArray });\n } else if (this.extSplats) {\n await this.extSplats.createLodSplats({ quality, rgbaArray });\n }\n }\n}\n\nexport function maybeLookupIndex(\n lodIndices: DynoUsampler2D<\"lodIndices\", THREE.DataTexture>,\n index: DynoVal<\"int\">,\n numSplats: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n showLodPage: DynoVal<\"int\">,\n) {\n return dyno({\n inTypes: {\n lodIndices: \"usampler2D\",\n index: \"int\",\n numSplats: \"int\",\n enableLod: \"bool\",\n showLodPage: \"int\",\n },\n outTypes: {\n index: \"int\",\n },\n inputs: {\n lodIndices,\n index,\n numSplats,\n enableLod,\n showLodPage,\n },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n int index = ${inputs.index};\n if (${inputs.showLodPage} < 0) {\n if (index >= ${inputs.numSplats}) {\n return;\n }\n if (${inputs.enableLod}) {\n ivec2 lodIndexCoord = ivec2((index >> 2) & 4095, index >> 14);\n uint splatIndex = texelFetch(${inputs.lodIndices}, lodIndexCoord, 0)[index & 3];\n ${outputs.index} = int(splatIndex);\n } else {\n ${outputs.index} = index;\n }\n } else {\n int start = ${inputs.showLodPage} << 16;\n if (index >= 65536) {\n return;\n }\n ${outputs.index} = start + index;\n }\n `),\n }).outputs.index;\n}\n\nexport function maybeInjectSplatRgba(\n gsplat: DynoVal,\n rgba: DynoVal,\n index: DynoVal<\"int\">,\n enableLod: DynoVal<\"bool\">,\n): DynoVal {\n return dyno({\n inTypes: {\n gsplat: Gsplat,\n rgba: TRgbaArray,\n index: \"int\",\n enableLod: \"bool\",\n },\n outTypes: { gsplat: Gsplat },\n inputs: { gsplat, rgba, index, enableLod },\n statements: ({ inputs, outputs }) =>\n unindentLines(`\n ${outputs.gsplat} = ${inputs.gsplat};\n if (!${inputs.enableLod} && (${inputs.index} >= 0) && (${inputs.index} < ${inputs.rgba}.count)) {\n ${outputs.gsplat}.rgba = texelFetch(${inputs.rgba}.texture, splatTexCoord(${inputs.index}), 0);\n }\n `),\n }).outputs.gsplat;\n}\n\nexport const emptyLodIndices = (() => {\n const texture = new THREE.DataTexture(\n new Uint32Array(16384),\n 4096,\n 1,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n})();\n","import * as THREE from \"three\";\nimport { FullScreenQuad } from \"three/addons/postprocessing/Pass.js\";\nimport { Readback } from \"./Readback\";\nimport { SplatEdit } from \"./SplatEdit\";\nimport {\n type CovSplatGenerator,\n type GsplatGenerator,\n SplatGenerator,\n} from \"./SplatGenerator\";\nimport { SplatMesh } from \"./SplatMesh\";\nimport {\n LN_SCALE_MAX,\n LN_SCALE_MIN,\n SPLAT_TEX_HEIGHT,\n SPLAT_TEX_WIDTH,\n} from \"./defines\";\nimport {\n type CovSplat,\n Dyno,\n DynoBool,\n DynoProgram,\n DynoProgramTemplate,\n DynoUsampler2DArray,\n type DynoVal,\n DynoVec3,\n combineCovSplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n gsplatToCovSplat,\n mul,\n outputCovSplat,\n outputCovSplatDepth,\n outputExtCovSplat,\n outputExtendedSplat,\n outputPackedSplat,\n outputSplatDepth,\n splitCovSplat,\n splitGsplat,\n sub,\n unindentLines,\n} from \"./dyno\";\nimport { getShaders } from \"./shaders\";\nimport { getTextureSize, threeMrtArray } from \"./utils\";\n\n// A GeneratorMapping describes a Gsplat range that was generated, including\n// which generator and its version number.\nexport type GeneratorMapping = {\n node: SplatGenerator;\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n version: number;\n mappingVersion?: number;\n base: number;\n count: number;\n};\n\nexport class SplatAccumulator {\n time = 0;\n deltaTime = 0;\n viewToWorld = new THREE.Matrix4();\n viewOrigin = new THREE.Vector3();\n viewDirection = new THREE.Vector3();\n static viewCenterUniform = new DynoVec3({ value: new THREE.Vector3() });\n static viewDirUniform = new DynoVec3({ value: new THREE.Vector3() });\n static sortRadialUniform = new DynoBool({ value: true });\n maxSplats = 0;\n numSplats = 0;\n target: THREE.WebGLArrayRenderTarget | null = null;\n mapping: GeneratorMapping[] = [];\n version = -1;\n mappingVersion = -1;\n extSplats: boolean;\n covSplats: boolean;\n readback: Readback | null = null;\n readbackSplats: DynoUsampler2DArray<\"extSplats\", THREE.DataArrayTexture>[] =\n [];\n\n constructor({\n extSplats,\n covSplats,\n }: { extSplats?: boolean; covSplats?: boolean } = {}) {\n if (!threeMrtArray) {\n throw new Error(\"Spark requires THREE.js r179 or above\");\n }\n this.extSplats = extSplats ?? true;\n this.covSplats = covSplats ?? false;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = null;\n }\n }\n\n // Returns a THREE.DataArrayTexture representing the NewSplatAccumulator\n // content as 2 x Uint32x4 data array textures (2048 x 2048 x 2048 in size)\n getTextures(): THREE.DataArrayTexture[] {\n if (this.target) {\n return this.target.textures;\n }\n return SplatAccumulator.emptyTextures;\n }\n\n static emptyTexture = (() => {\n const { width, height, depth, maxSplats } = getTextureSize(1);\n const emptyArray = new Uint32Array(maxSplats * 4);\n const texture = new THREE.DataArrayTexture(\n emptyArray,\n width,\n height,\n depth,\n );\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n static emptyTextures = (() => {\n return [SplatAccumulator.emptyTexture, SplatAccumulator.emptyTexture];\n })();\n\n // Given an array of splatCounts (.numSplats for each\n // SplatGenerator/SplatMesh in the scene), compute a\n // \"mapping layout\" in the composite array of generated outputs.\n generateMapping(splatCounts: number[]): {\n maxSplats: number;\n mapping: { base: number; count: number }[];\n } {\n let maxSplats = 0;\n const mapping = splatCounts.map((numSplats) => {\n const base = maxSplats;\n // Generation happens in horizontal row chunks, so round up to full width\n const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n maxSplats += rounded;\n return { base, count: numSplats };\n });\n return { maxSplats, mapping };\n }\n\n // Ensures our NewSplatAccumulator.target render target has enough space\n // to generate maxSplats total Gsplats, and reallocate if not large enough.\n ensureGenerate({ maxSplats }: { maxSplats: number }) {\n if (this.target && (maxSplats ?? 1) <= this.maxSplats) {\n return false;\n }\n this.dispose();\n\n // The packed Gsplats are stored in a 2D array texture of max size\n // 2048 x 2048 x 2048, one RGBA32UI pixel = 4 uint32 = one Gsplat\n const textureSize = getTextureSize(maxSplats ?? 1);\n const { width, height, depth } = textureSize;\n this.maxSplats = textureSize.maxSplats;\n this.target = new THREE.WebGLArrayRenderTarget(width, height, depth, {\n depthBuffer: false,\n stencilBuffer: false,\n generateMipmaps: false,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n format: THREE.RGBAIntegerFormat,\n type: THREE.UnsignedIntType,\n });\n this.target.scissorTest = true;\n\n if (this.extSplats) {\n const target2 = this.target.texture.clone();\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target2, target3];\n } else {\n const target3 = this.target.texture.clone();\n target3.format = THREE.RGBAFormat;\n target3.type = THREE.UnsignedByteType;\n target3.internalFormat = \"RGBA8\";\n this.target.textures = [this.target.texture, target3];\n }\n\n return true;\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n activeCubeFace: renderer.getActiveCubeFace(),\n activeMipmapLevel: renderer.getActiveMipmapLevel(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n activeCubeFace: number;\n activeMipmapLevel: number;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(\n state.target,\n state.activeCubeFace,\n state.activeMipmapLevel,\n );\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,\n // generating it if necessary and caching the result.\n prepareProgramMaterial(\n generator?: GsplatGenerator,\n covGenerator?: CovSplatGenerator,\n ) {\n const theGenerator = generator ?? covGenerator;\n if (!theGenerator) {\n throw new Error(\"Either generator or covGenerator must be provided\");\n }\n\n let program = SplatAccumulator.generatorProgram.get(theGenerator);\n if (!program) {\n const graph = dynoBlock(\n { index: \"int\" },\n {},\n ({ index }, _outputs, { roots }) => {\n if (generator) {\n generator.inputs.index = index;\n }\n if (covGenerator) {\n covGenerator.inputs.index = index;\n }\n\n if (this.extSplats) {\n if (!this.covSplats) {\n if (generator) {\n const output = outputExtendedSplat(generator.outputs.gsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n if (covGenerator) {\n const output = outputExtCovSplat(covGenerator.outputs.covsplat);\n roots.push(output);\n } else if (generator) {\n const covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n const output = outputExtCovSplat(covsplat);\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n }\n } else {\n if (!this.covSplats) {\n if (generator) {\n const centerSubView = sub(\n splitGsplat(generator.outputs.gsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n // Use expanded LoD opacity encoding\n const halfAlpha = mul(\n splitGsplat(generator.outputs.gsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n const gsplat = combineGsplat({\n gsplat: generator.outputs.gsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputPackedSplat(\n gsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n } else {\n let covsplat: DynoVal;\n if (covGenerator) {\n covsplat = covGenerator.outputs.covsplat;\n } else if (generator) {\n covsplat = gsplatToCovSplat(generator.outputs.gsplat);\n } else {\n throw new Error(\"Generator must be provided\");\n }\n const centerSubView = sub(\n splitCovSplat(covsplat).outputs.center,\n SplatAccumulator.viewCenterUniform,\n );\n const halfAlpha = mul(\n splitCovSplat(covsplat).outputs.opacity,\n dynoConst(\"float\", 0.5),\n );\n covsplat = combineCovSplat({\n covsplat,\n center: centerSubView,\n opacity: halfAlpha,\n });\n const output = outputCovSplat(\n covsplat,\n dynoConst(\"vec4\", [0, 1, LN_SCALE_MIN, LN_SCALE_MAX]),\n );\n roots.push(output);\n }\n if (!generator) {\n throw new Error(\"Generator must be provided\");\n }\n }\n if (generator) {\n const outputDepth = outputSplatDepth(\n generator.outputs.gsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n if (covGenerator) {\n const outputDepth = outputCovSplatDepth(\n covGenerator.outputs.covsplat,\n SplatAccumulator.viewCenterUniform,\n SplatAccumulator.viewDirUniform,\n SplatAccumulator.sortRadialUniform,\n );\n roots.push(outputDepth);\n }\n return undefined;\n },\n );\n program = new DynoProgram({\n graph,\n inputs: { index: \"_index\" },\n outputs: {},\n template: this.extSplats\n ? SplatAccumulator.programExtTemplate\n : SplatAccumulator.programTemplate,\n // consoleLog: true,\n });\n\n SplatAccumulator.generatorProgram.set(theGenerator, program);\n }\n Object.assign(program.uniforms, {\n targetLayer: { value: 0 },\n targetBase: { value: 0 },\n targetCount: { value: 0 },\n });\n\n const material = program.prepareMaterial();\n SplatAccumulator.fullScreenQuad.material = material;\n return { program, material };\n }\n\n static programExtTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4x2Vec4Template,\n );\n static programTemplate = new DynoProgramTemplate(\n getShaders().computeUvec4Vec4Template,\n );\n static generatorProgram = new WeakMap<\n GsplatGenerator | CovSplatGenerator,\n DynoProgram\n >();\n static fullScreenQuad = new FullScreenQuad(\n new THREE.RawShaderMaterial({ visible: false }),\n );\n\n generate({\n generator,\n covGenerator,\n base,\n count,\n renderer,\n }: {\n generator?: GsplatGenerator;\n covGenerator?: CovSplatGenerator;\n base: number;\n count: number;\n renderer: THREE.WebGLRenderer;\n }) {\n if (!this.target) {\n throw new Error(\"Target must be initialized with ensureGenerate\");\n }\n if (base + count > this.maxSplats) {\n throw new Error(\"Base + count exceeds maxSplats\");\n }\n\n const { program, material } = this.prepareProgramMaterial(\n generator,\n covGenerator,\n );\n program.update();\n\n const renderState = this.saveRenderState(renderer);\n\n // Generate the Gsplats in \"layer\" chunks, in horizontal row ranges,\n // that cover the total count of Gsplats.\n const nextBase =\n Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n material.uniforms.targetBase.value = base;\n material.uniforms.targetCount.value = count;\n\n // Keep generating layers until we've reached the next generation's base\n while (base < nextBase) {\n const layer = Math.floor(base / layerSize);\n material.uniforms.targetLayer.value = layer;\n\n const layerBase = layer * layerSize;\n const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Render the desired portion of the layer\n this.target.scissor.set(\n 0,\n layerYStart,\n SPLAT_TEX_WIDTH,\n layerYEnd - layerYStart,\n );\n renderer.setRenderTarget(this.target, layer);\n renderer.xr.enabled = false;\n renderer.autoClear = false;\n SplatAccumulator.fullScreenQuad.render(renderer);\n\n base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);\n }\n\n this.resetRenderState(renderer, renderState);\n return { nextBase };\n }\n\n prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial,\n renderSize,\n previous,\n lodInstances,\n }: {\n renderer: THREE.WebGLRenderer;\n scene: THREE.Scene;\n time: number;\n camera: THREE.Camera;\n sortRadial: boolean;\n renderSize: THREE.Vector2;\n previous: SplatAccumulator;\n lodInstances?: Map<\n SplatMesh,\n { numSplats: number; texture: THREE.DataTexture }\n >;\n }) {\n this.viewToWorld.copy(camera.matrixWorld);\n camera.getWorldPosition(this.viewOrigin);\n camera.getWorldDirection(this.viewDirection);\n SplatAccumulator.viewCenterUniform.value.copy(this.viewOrigin);\n SplatAccumulator.viewDirUniform.value.copy(this.viewDirection);\n SplatAccumulator.sortRadialUniform.value = sortRadial;\n\n this.time = time;\n this.deltaTime = time - previous.time;\n\n const allGenerators: SplatGenerator[] = [];\n scene.traverse((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n allGenerators.push(node);\n }\n }\n });\n\n const globalEditsSet = new Set();\n scene.traverseVisible((node) => {\n if (node instanceof SplatEdit) {\n let ancestor = node.parent;\n while (ancestor != null && !(ancestor instanceof SplatMesh)) {\n ancestor = ancestor.parent;\n }\n if (ancestor == null) {\n // Not part of a SplatMesh so it's a global edit\n globalEditsSet.add(node);\n }\n }\n });\n const globalEdits = Array.from(globalEditsSet);\n\n for (const object of allGenerators) {\n try {\n object.frameUpdate?.({\n renderer,\n object,\n time: this.time,\n deltaTime: this.deltaTime,\n viewToWorld: this.viewToWorld,\n camera,\n renderSize,\n globalEdits,\n lodIndices:\n lodInstances && object instanceof SplatMesh\n ? lodInstances.get(object)\n : undefined,\n });\n } catch (error) {\n console.error(\"frameUpdate error\", error);\n object.generator = undefined;\n object.covGenerator = undefined;\n object.generatorError = error;\n }\n }\n\n const visibleGenerators: SplatGenerator[] = [];\n scene.traverseVisible((node) => {\n if (node instanceof SplatGenerator) {\n if (!camera.layers || camera.layers.test(node.layers)) {\n visibleGenerators.push(node);\n }\n }\n });\n\n const splatCounts = visibleGenerators.map(\n (generator) => generator.numSplats,\n );\n const { maxSplats, mapping: baseCounts } =\n this.generateMapping(splatCounts);\n\n const previousMappings = previous.mapping.reduce((mappings, mapping) => {\n mappings.set(mapping.node, mapping);\n return mappings;\n }, new Map());\n\n this.mapping = [];\n this.numSplats = 0;\n\n baseCounts.forEach(({ base, count }, index) => {\n const node = visibleGenerators[index];\n const previousNode = previousMappings.get(node);\n if (previousNode && previousNode.count !== node.numSplats) {\n node.updateMappingVersion();\n }\n\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n const { version, mappingVersion } = node;\n this.mapping.push({\n node,\n generator,\n covGenerator,\n version,\n mappingVersion,\n base,\n count,\n });\n this.numSplats = Math.max(this.numSplats, base + count);\n }\n });\n const { splatsUpdated, mappingUpdated } = previous.checkVersions(\n this.mapping,\n );\n this.version = previous.version + (splatsUpdated ? 1 : 0);\n this.mappingVersion = previous.mappingVersion + (mappingUpdated ? 1 : 0);\n\n return {\n sameMapping: !mappingUpdated,\n version: this.version,\n mappingVersion: this.mappingVersion,\n visibleGenerators,\n generate: () => {\n this.ensureGenerate({ maxSplats });\n\n for (const { node, base, count } of this.mapping) {\n const { generator, covGenerator } = node;\n if ((generator || covGenerator) && count > 0) {\n this.generate({ generator, covGenerator, base, count, renderer });\n }\n }\n },\n readback: async () => {\n const textures = this.getTextures();\n if (this.readbackSplats.length === 0) {\n this.readbackSplats = [\n new DynoUsampler2DArray({ value: textures[0], key: \"extSplats\" }),\n new DynoUsampler2DArray({ value: textures[1], key: \"extSplats\" }),\n ];\n }\n this.readbackSplats[0].value = textures[0];\n this.readbackSplats[1].value = textures[1];\n\n if (!this.readback) {\n this.readback = new Readback({ renderer });\n }\n const readback = this.readback;\n const words = this.extSplats ? 8 : 4;\n const array = readback.ensureBuffer(\n this.numSplats * words,\n new Uint32Array(0),\n );\n\n const reader = dynoBlock(\n { index: \"int\" },\n { rgba8: \"vec4\" },\n ({ index }) => {\n const rgba8 = new Dyno({\n inTypes: {\n index: \"int\",\n extSplats1: \"usampler2DArray\",\n extSplats2: \"usampler2DArray\",\n },\n outTypes: { rgba8: \"vec4\" },\n inputs: {\n index,\n extSplats1: this.readbackSplats[0],\n extSplats2: this.readbackSplats[1],\n },\n statements: ({ inputs, outputs }) => {\n if (this.extSplats) {\n return unindentLines(`\n int indexDiv8 = ${inputs.index} >> 3;\n ivec3 coord = splatTexCoord(indexDiv8);\n uvec4 packedData;\n if ((${inputs.index} & 4) == 0) {\n packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n } else {\n packedData = texelFetch(${inputs.extSplats2}, coord, 0);\n }\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n }\n return unindentLines(`\n int indexDiv4 = ${inputs.index} >> 2;\n ivec3 coord = splatTexCoord(indexDiv4);\n uvec4 packedData = texelFetch(${inputs.extSplats1}, coord, 0);\n\n int indexMod4 = ${inputs.index} & 3;\n uint data = (indexMod4 == 0) ? packedData.x\n : (indexMod4 == 1) ? packedData.y\n : (indexMod4 == 2) ? packedData.z\n : packedData.w;\n ${outputs.rgba8} = uintToVec4(data);\n `);\n },\n }).outputs.rgba8;\n return { rgba8 };\n },\n );\n\n return await readback.renderReadback({\n reader,\n count: this.numSplats * words,\n renderer,\n readback: array,\n });\n },\n };\n }\n\n // Check if this accumulator has exactly the same generator mapping as\n // the previous one. If so, we can reuse the Gsplat sort order.\n checkVersions(otherMapping: GeneratorMapping[]) {\n if (this.mapping.length !== otherMapping.length) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const mappingUpdated = this.mapping.some((item, i) => {\n const other = otherMapping[i];\n return (\n item.node !== other.node ||\n item.base !== other.base ||\n item.count !== other.count ||\n item.mappingVersion !== other.mappingVersion\n );\n });\n if (mappingUpdated) {\n return { splatsUpdated: true, mappingUpdated: true };\n }\n const splatsUpdated = this.mapping.some((item, i) => {\n return item.version !== otherMapping[i].version;\n });\n return { splatsUpdated, mappingUpdated };\n }\n}\n","import * as THREE from \"three\";\n\n// SplatGeometry is an internal class used by SparkRenderer to render a collection\n// of Gsplats in a single draw call by extending THREE.InstancedBufferGeometry.\n// Each Gsplat is drawn as two triangles, with the order of the Gsplats determined\n// by a texture lookup via gl_InstanceID.\n\nexport class SplatGeometry extends THREE.InstancedBufferGeometry {\n constructor() {\n super();\n this.setAttribute(\"position\", new THREE.BufferAttribute(QUAD_VERTICES, 3));\n this.setIndex(new THREE.BufferAttribute(QUAD_INDICES, 1));\n }\n}\n\n// Each instance draws to triangles covering a quad over coords (-1,-1,0)..(1,1,0)\nconst QUAD_VERTICES = new Float32Array([\n -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0,\n]);\n\nconst QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);\n","import * as THREE from \"three\";\nimport {\n ExtSplats,\n PackedSplats,\n PagedSplats,\n Readback,\n type SplatGenerator,\n SplatMesh,\n SplatPager,\n} from \".\";\nimport { SplatAccumulator } from \"./SplatAccumulator\";\nimport { SplatGeometry } from \"./SplatGeometry\";\nimport { SplatWorker } from \"./SplatWorker\";\nimport { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from \"./defines\";\nimport { getShaders } from \"./shaders\";\nimport {\n cloneClock,\n isAndroid,\n isIos,\n isMobile,\n isOculus,\n isVisionPro,\n uploadU32DataTextureRows,\n} from \"./utils\";\n\nexport interface SparkRendererOptions {\n /**\n * Pass in your THREE.WebGLRenderer instance so Spark can perform work\n * outside the usual render loop. Should be created with antialias: false\n * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting\n * rendering and significantly reduces performance.\n */\n renderer: THREE.WebGLRenderer;\n /**\n * Callback function to be called when SparkRenderer needs to re-render,\n * for example when splat sort order or LoD updates complete.\n */\n onDirty?: () => void;\n /**\n * Whether to use premultiplied alpha when accumulating splat RGB\n * @default true\n */\n premultipliedAlpha?: boolean;\n /**\n * Pass in a THREE.Clock to synchronize time-based effects across different\n * systems. Alternatively, you can set the property time directly.\n * (default: new THREE.Clock)\n */\n clock?: THREE.Clock;\n /**\n * Controls whether to check and automatically update Gsplat collection\n * each frame render.\n * @default true\n */\n autoUpdate?: boolean;\n /**\n * Controls whether to update the Gsplats before or after rendering. For WebXR\n * this is set to false in order to complete rendering as soon as possible.\n * @default true (if not WebXR)\n */\n preUpdate?: boolean;\n /**\n * Maximum standard deviations from the center to render Gaussians. Values\n * Math.sqrt(4)..Math.sqrt(9) produce acceptable results and can be tweaked for\n * performance.\n * @default Math.sqrt(8)\n */\n maxStdDev?: number;\n /**\n * Generalized Gaussian exponent parameter. The kernel is\n * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0`\n * uses a quartic radial falloff.\n * @default 1.0\n */\n gaussianK?: number;\n /*\n **\n * Minimum pixel radius for splat rendering.\n * @default 0.0\n */\n minPixelRadius?: number;\n /**\n * Maximum pixel radius for splat rendering.\n * @default 512.0\n */\n maxPixelRadius?: number;\n /**\n * Whether to use extended Gsplat encoding for intermediary accumulator splats.\n * @default false\n */\n accumExtSplats?: boolean;\n /**\n * Whether to use covariance Gsplat encoding for intermediary splats.\n * @default false\n */\n covSplats?: boolean;\n /**\n * Minimum alpha value for splat rendering.\n * @default 0.5 * (1.0 / 255.0)\n */\n minAlpha?: number;\n /**\n * Enable 2D Gaussian splatting rendering ability. When this mode is enabled,\n * any scale x/y/z component that is exactly 0 (minimum quantized value) results\n * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat,\n * rather instead of the usual projected 3DGS Z-slice. When reading PLY files,\n * scale values less than e^-30 will be interpreted as 0.\n * @default false\n */\n enable2DGS?: boolean;\n /**\n * Enable alternative ray-splat max response evaluation, used by 3DGUT (unscented transform),\n * 3DGRT, and HTGS.\n * @default false\n */\n // enableRayEval?: boolean;\n /**\n * Scalar value to add to 2D splat covariance diagonal, effectively blurring +\n * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak\n * this value was typically 0.3, but with anti-aliasing it is 0.0\n * @default 0.0\n */\n preBlurAmount?: number;\n /**\n * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment\n * to correctly account for \"blurring\" when anti-aliasing. Typically 0.3\n * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing.\n */\n blurAmount?: number;\n /**\n * Depth-of-field distance to focal plane\n */\n focalDistance?: number;\n /**\n * Full-width angle of aperture opening (in radians), 0.0 to disable\n * @default 0.0\n */\n apertureAngle?: number;\n /**\n * Modulate Gaussian kernel falloff. 0 means \"no falloff, flat shading\",\n * while 1 is the normal Gaussian kernel.\n * @default 1.0\n */\n falloff?: number;\n /**\n * X/Y clipping boundary factor for Gsplat centers against view frustum.\n * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips\n * centers that are 40% beyond the bounds.\n * @default 1.4\n */\n clipXY?: number;\n /**\n * Parameter to adjust projected splat scale calculation to match other renderers,\n * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will\n * tend to sharpen the splats. A value 2.0 can be used to match the behavior of\n * the PlayCanvas renderer.\n * @default 1.0\n */\n focalAdjustment?: number;\n /**\n * Whether to sort splats radially (geometric distance) from the viewpoint (true)\n * or by Z-depth (false). Most scenes are trained with the Z-depth `sort `metric\n * and will render more accurately at certain viewpoints. However, radial sorting\n * is more stable under viewpoint rotations.\n * @default true\n */\n sortRadial?: boolean;\n /**\n * Minimum interval between sort calls in milliseconds.\n * @default 0\n */\n minSortIntervalMs?: number;\n /*\n * Flag to control whether LoD is enabled. @default true\n */\n enableLod?: boolean;\n /**\n * Whether to drive LOD updates (compute lodInstances, update pager, etc.).\n * Set to false to use LOD instances from another renderer without driving updates.\n * Only has effect if enableLod is true.\n * @default true (if enableLod is true)\n */\n enableDriveLod?: boolean;\n /**\n * Whether to enable page fetching for LoD.\n * @default true\n */\n enableLodFetching?: boolean;\n /**\n * Set the target # splats for LoD. If this isn't set then default base LoD splat\n * counts will apply: 500K-750K for WebXR, 1-1.5M for mobile, and 2.5M for desktop.\n * @default 500K-2500K depending on platform\n */\n lodSplatCount?: number;\n /**\n * Scale factor for target # splats for LoD. 2.0 means 2x the base LoD splat count.\n * This is the easiest LoD parameter to adjust and will scale detail appropriately\n * for the platform.\n * @default 1.0\n */\n lodSplatScale?: number;\n /**\n * Determines the minimum screen pixel size of LoD splats. The default 1.0 means\n * the splat LoD tree will pick splats that are no smaller than 1 pixel in size.\n * Setting this to a higher value as high as 5.0 will often be indistinguishable\n * but will avoid wasting rendering capacity on tiny splats.\n * @default 1.0\n */\n lodRenderScale?: number;\n /**\n * Inflate LoD splats to ensure opacity stays <= 1.0, producing a softer appearance.\n * @default false\n */\n lodInflate?: boolean;\n lodTraverseMode?: \"dynamic\" | \"standard\";\n /**\n * Whether to use extended Gsplat encoding for paged splats, useful for eliminating\n * quantization artifacts from splat scenes with large internal position coordinates.\n * @default false\n */\n pagedExtSplats?: boolean;\n /**\n * Allocation size of paged splats. This must be a multiple of the page size (65536).\n * @default 16777216 (256 * 65536) for desktop, 6291456 for iOS, 8,388,608 for other mobile\n */\n maxPagedSplats?: number;\n /**\n * Number of parallel chunk fetchers for LoD. These are run within a shared pool\n * of 4 background WebWorker threads, so setting it above 4 will not have any\n * effect. Setting it 3 leaves one spare worker for other loading/decoding tasks.\n * @default 3\n */\n numLodFetchers?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with no foveation applied (full resolution, foveate=1.0). Set to 0 to disable.\n * @default 90.0\n */\n coneFov0?: number;\n /**\n * Full-width angle in degrees of fixed foveation cone along the view direction\n * with reduced resolution specified by `coneFoveate`. Foveation will be applied\n * smoothly from 1.0 down to `coneFoveate` as you move outward from\n * `coneFov0` to `coneFov`. Set to 0 to disable.\n * @default 120.0\n */\n coneFov?: number;\n /**\n * Foveation scale to apply to LoD splats at the edge of coneFov. Foveation will\n * be applied smoothly from `coneFoveate` down to `behindFoveate` as you move\n * outward from `coneFov` to 180 degrees (behind the viewer).\n * @default 0.4\n */\n coneFoveate?: number;\n /**\n * Foveation scale to apply to LoD splats behind the viewer. Setting this to 0.1\n * for example will result in splats 10x larger than inside the viewing frustum.\n * @default 0.2\n */\n behindFoveate?: number;\n /**\n * How many LoD splats to generate for raycasting\n * @default 10000-25000 iff default canvas target is used\n */\n lodRaycast?: number;\n lodRaycastIntervalMs?: number;\n /**\n * Configures an offline render target for the SparkRenderer (as opposed to\n * rendering to the canvas). This is useful for rendering environment maps,\n * additional viewpoints, or video frame rendering.\n * @default undefined\n */\n target?: {\n /**\n * Width of the render target in pixels.\n */\n width: number;\n /**\n * Height of the render target in pixels.\n */\n height: number;\n /**\n * If you want to be able to render a scene that depends on this target's\n * output (for example, a recursive viewport), set this to true to enable\n * double buffering.\n * @default false\n */\n doubleBuffer?: boolean;\n /**\n * Super-sampling factor for the render target. Values 1-4 are supported.\n * Note that re-sampling back down to .width x .height is done on the CPU\n * with simple averaging only when calling readTarget().\n * @default 1\n */\n superXY?: number;\n } & THREE.RenderTargetOptions;\n /**\n * Extra uniform values to pass to the shader.\n * @default undefined = no extra uniforms\n */\n extraUniforms?: Record;\n /**\n * Replace the default `splatVertex.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatVertex.glsl` shader\n */\n vertexShader?: string;\n /**\n * Replace the default `splatFragment.glsl` splat shader with a custom one.\n * @default undefined = use the default `splatFragment.glsl` shader\n */\n fragmentShader?: string;\n /**\n * Set the splat shader material to be transparent which determines if the\n * splats are rendered during the first opaque THREE.js render pass or the\n * second transparent render pass.\n * @default undefined = true\n */\n transparent?: boolean;\n /**\n * Set the splat shader material to enable depth testing which determines if the\n * splats respect the Z depth buffer and blend with other opaque objects in the scene.\n * @default undefined = true\n */\n depthTest?: boolean;\n /**\n * Set the splat shader material to enable depth writing which determines if the\n * splats write to the Z depth buffer. Note that enabling this may produce\n * undesirable results because most of the Gsplat is transparent.\n * @default undefined = false\n */\n depthWrite?: boolean;\n}\n\nexport class SparkRenderer extends THREE.Mesh {\n readonly renderer: THREE.WebGLRenderer;\n readonly material: THREE.ShaderMaterial;\n readonly uniforms: ReturnType;\n\n autoUpdate: boolean;\n preUpdate: boolean;\n static sparkOverride?: SparkRenderer;\n\n renderSize = new THREE.Vector2();\n maxStdDev: number;\n gaussianK: number;\n minPixelRadius: number;\n maxPixelRadius: number;\n accumExtSplats: boolean;\n covSplats: boolean;\n minAlpha: number;\n enable2DGS: boolean;\n // enableRayEval: boolean;\n preBlurAmount: number;\n blurAmount: number;\n focalDistance: number;\n apertureAngle: number;\n falloff: number;\n clipXY: number;\n focalAdjustment: number;\n\n sortRadial: boolean;\n minSortIntervalMs: number;\n\n clock: THREE.Clock;\n time?: number;\n lastFrame = -1;\n updateTimeoutId = -1;\n onDirty?: () => void;\n dirty: boolean;\n\n orderingTexture: THREE.DataTexture | null = null;\n maxSplats = 0;\n activeSplats = 0;\n\n display: SplatAccumulator;\n current: SplatAccumulator;\n accumulators: SplatAccumulator[] = [];\n\n sorting = false;\n sortDirty = false;\n lastSortTime = 0;\n sortWorker: SplatWorker | null = null;\n sortTimeoutId = -1;\n sortedCenter = new THREE.Vector3().setScalar(Number.NEGATIVE_INFINITY);\n sortedDir = new THREE.Vector3().setScalar(0);\n readback32 = new Uint32Array(0);\n\n enableLod: boolean;\n enableDriveLod: boolean;\n enableLodFetching: boolean;\n lodSplatCount?: number;\n lodSplatScale: number;\n lodRenderScale: number;\n lodInflate: boolean;\n lodTraverseMode: \"dynamic\" | \"standard\";\n pagedExtSplats: boolean;\n maxPagedSplats: number;\n numLodFetchers: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n\n lodRaycast?: number;\n lodRaycastIntervalMs: number;\n lastLodRaycastTime = 0;\n\n lodWorker: SplatWorker | null = null;\n lodMeshes: { mesh: SplatMesh; version: number }[] = [];\n lodDirty = false;\n lodIds: Map<\n PackedSplats | ExtSplats | PagedSplats,\n { lodId: number; lastTouched: number; rootPage?: number }\n > = new Map();\n lodIdToSplats: Map =\n new Map();\n lodInitQueue: (PackedSplats | ExtSplats | PagedSplats)[] = [];\n lastLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n currentLod?: {\n pos: THREE.Vector3;\n quat: THREE.Quaternion;\n pixelScaleLimit: number;\n maxSplats: number;\n timestamp: number;\n };\n lodPosOverride?: THREE.Vector3;\n lodQuatOverride?: THREE.Quaternion;\n lodInstances: Map<\n SplatMesh,\n {\n lodId: number;\n numSplats: number;\n indices: Uint32Array;\n texture: THREE.DataTexture;\n }\n > = new Map();\n lodUpdates: {\n lodId: number;\n pageBase: number;\n chunkBase: number;\n count: number;\n lodTreeData?: Uint32Array;\n }[] = [];\n lastTraverseTime = 0;\n lastPixelLimit?: number;\n\n pager?: SplatPager;\n pagerId = 0;\n // prefetchCameras: THREE.Camera[] = [];\n // prefetchLodScale = 1.0;\n // prefetchMeshesCache: SplatMesh[] = [];\n // prefetchMeshesCacheScene?: THREE.Scene;\n\n target?: THREE.WebGLRenderTarget;\n backTarget?: THREE.WebGLRenderTarget;\n superPixels?: Uint8Array;\n targetPixels?: Uint8Array;\n superXY = 1;\n\n flushAfterGenerate = false;\n flushAfterRead = false;\n readPause = 1;\n sortPause = 0;\n sortDelay = 0;\n\n constructor(options: SparkRendererOptions) {\n if (!options) {\n throw new Error(\"SparkRenderer options are required\");\n }\n if (!options.renderer) {\n throw new Error(\"renderer is required in SparkRenderer options\");\n }\n\n const uniforms = SparkRenderer.makeUniforms();\n Object.assign(uniforms, options.extraUniforms ?? {});\n\n const shaders = getShaders();\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const geometry = new SplatGeometry();\n const material = new THREE.ShaderMaterial({\n glslVersion: THREE.GLSL3,\n vertexShader: options.vertexShader ?? shaders.splatVertex,\n fragmentShader: options.fragmentShader ?? shaders.splatFragment,\n uniforms,\n premultipliedAlpha,\n transparent: options.transparent ?? true,\n depthTest: options.depthTest ?? true,\n depthWrite: options.depthWrite ?? false,\n side: THREE.DoubleSide,\n allowOverride: false,\n });\n\n super(geometry, material);\n this.material = material;\n this.uniforms = uniforms;\n // Disable frustum culling because we want to always draw them all\n // and cull Gsplats individually in the shader\n this.frustumCulled = false;\n\n // By default SparkRenderer will only render for layer 0\n // this.layers.enableAll();\n\n // sparkRendererInstance = this;\n this.renderer = options.renderer;\n this.onDirty = options.onDirty;\n this.dirty = true;\n this.autoUpdate = options.autoUpdate ?? true;\n this.preUpdate = options.preUpdate ?? true;\n\n this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0);\n this.gaussianK = options.gaussianK ?? 1.0;\n this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6;\n this.maxPixelRadius = options.maxPixelRadius ?? 512.0;\n this.accumExtSplats = options.accumExtSplats ?? false;\n this.covSplats = options.covSplats ?? false;\n this.minAlpha = options.minAlpha ?? 0.5 * (1.0 / 255.0);\n this.enable2DGS = options.enable2DGS ?? false;\n // this.enableRayEval = options.enableRayEval ?? false;\n this.preBlurAmount = options.preBlurAmount ?? 0.0;\n this.blurAmount = options.blurAmount ?? 0.3;\n this.focalDistance = options.focalDistance ?? 0.0;\n this.apertureAngle = options.apertureAngle ?? 0.0;\n this.falloff = options.falloff ?? 1.0;\n this.clipXY = options.clipXY ?? 1.4;\n this.focalAdjustment = options.focalAdjustment ?? 1.0;\n\n this.sortRadial = options.sortRadial ?? true;\n this.minSortIntervalMs = options.minSortIntervalMs ?? 0;\n\n this.enableLod = options.enableLod ?? true;\n // enableDriveLod defaults to true if enableLod is true, false otherwise\n this.enableDriveLod = options.enableDriveLod ?? this.enableLod;\n this.enableLodFetching = options.enableLodFetching ?? true;\n this.lodSplatCount = options.lodSplatCount;\n this.lodSplatScale = options.lodSplatScale ?? 1.0;\n this.lodRenderScale = options.lodRenderScale ?? 1.0;\n this.lodInflate = options.lodInflate ?? false;\n this.lodTraverseMode = options.lodTraverseMode ?? \"standard\";\n this.pagedExtSplats = options.pagedExtSplats ?? false;\n const defaultPages = isMobile() ? (isIos() ? 96 : 128) : 256;\n this.maxPagedSplats = options.maxPagedSplats ?? defaultPages * 65536;\n this.numLodFetchers = options.numLodFetchers ?? 3;\n this.behindFoveate = options.behindFoveate ?? 0.2;\n this.coneFov0 = options.coneFov0 ?? 90.0;\n this.coneFov = options.coneFov ?? 120.0;\n this.coneFoveate = options.coneFoveate ?? 0.4;\n\n this.lodRaycast =\n options.lodRaycast === undefined\n ? isMobile()\n ? 10000\n : 25000\n : options.lodRaycast;\n this.lodRaycastIntervalMs = options.lodRaycastIntervalMs ?? 500;\n\n this.clock = options.clock ? cloneClock(options.clock) : new THREE.Clock();\n\n const accumulatorOptions = {\n extSplats: this.accumExtSplats,\n covSplats: this.covSplats,\n };\n this.display = new SplatAccumulator(accumulatorOptions);\n this.current = this.display;\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n this.accumulators.push(new SplatAccumulator(accumulatorOptions));\n\n // Check if the provoking vertex convention should be changed\n const provokingVertexExt = this.renderer\n .getContext()\n .getExtension(\"WEBGL_provoking_vertex\");\n if (provokingVertexExt) {\n provokingVertexExt.provokingVertexWEBGL(\n provokingVertexExt.FIRST_VERTEX_CONVENTION_WEBGL,\n );\n }\n\n if (options.target) {\n const {\n width,\n height,\n doubleBuffer,\n superXY: origSuperXY,\n ...origTargetOptions\n } = options.target;\n const superXY = Math.max(1, Math.min(4, origSuperXY ?? 1));\n if (width * superXY > 8192 || height * superXY > 8192) {\n throw new Error(\"Target size too large\");\n }\n this.superXY = superXY;\n\n const superWidth = width * superXY;\n const superHeight = height * superXY;\n const targetOptions: THREE.RenderTargetOptions = {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n colorSpace: THREE.SRGBColorSpace,\n ...origTargetOptions,\n };\n\n this.target = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n if (doubleBuffer) {\n this.backTarget = new THREE.WebGLRenderTarget(\n superWidth,\n superHeight,\n targetOptions,\n );\n }\n }\n }\n\n static makeUniforms() {\n const uniforms = {\n // // number of active splats to render\n // numSplats: { value: 0 },\n // Size of render viewport in pixels\n renderSize: { value: new THREE.Vector2() },\n // Near and far plane distances\n near: { value: 0.1 },\n far: { value: 1000.0 },\n // SplatAccumulator to view transformation quaternion\n renderToViewQuat: { value: new THREE.Quaternion() },\n // SplatAccumulator to view transformation translation\n renderToViewPos: { value: new THREE.Vector3() },\n renderToViewBasis: { value: new THREE.Matrix3() },\n renderToViewOffset: { value: new THREE.Vector3() },\n // Maximum distance (in stddevs) from Gsplat center to render\n maxStdDev: { value: 1.0 },\n // Generalized Gaussian k. The radial exponent is 2 * gaussianK.\n gaussianK: { value: 1.0 },\n // Minimum pixel radius for splat rendering\n minPixelRadius: { value: 0.0 },\n // Maximum pixel radius for splat rendering\n maxPixelRadius: { value: 512.0 },\n // Minimum alpha value for splat rendering\n minAlpha: { value: 0.5 * (1.0 / 255.0) },\n // Enable interpreting 0-thickness Gsplats as 2DGS\n enable2DGS: { value: false },\n // Enable ray-splat max response evaluation\n // enableRayEval: { value: false },\n // Inflate LoD splats so that opacity <= 1.0\n lodInflate: { value: false },\n // Add to projected 2D splat covariance diagonal (thickens and brightens)\n preBlurAmount: { value: 0.0 },\n // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)\n blurAmount: { value: 0.3 },\n // Depth-of-field distance to focal plane\n focalDistance: { value: 0.0 },\n // Full-width angle of aperture opening (in radians)\n apertureAngle: { value: 0.0 },\n // Modulate Gaussian kernal falloff. 0 means \"no falloff, flat shading\",\n // 1 is normal e^-x^2 falloff.\n falloff: { value: 1.0 },\n // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds\n clipXY: { value: 1.4 },\n // Debug renderSize scale factor\n focalAdjustment: { value: 1.0 },\n // Whether to encode Gsplat with linear RGB (for environment mapping)\n encodeLinear: { value: false },\n // Back-to-front sort ordering of splat indices\n ordering: { type: \"t\", value: SparkRenderer.emptyOrdering },\n enableExtSplats: { value: false },\n enableCovSplats: { value: false },\n // Gsplat collection to render\n extSplats: { type: \"t\", value: SplatAccumulator.emptyTexture },\n extSplats2: { type: \"t\", value: SplatAccumulator.emptyTexture },\n // Time in seconds for time-based effects\n time: { value: 0 },\n // Delta time in seconds since last frame\n deltaTime: { value: 0 },\n // Debug flag that alternates each frame\n debugFlag: { value: false },\n };\n return uniforms;\n }\n\n dispose() {\n if (this.target) {\n this.target.dispose();\n this.target = undefined;\n }\n if (this.backTarget) {\n this.backTarget.dispose();\n this.backTarget = undefined;\n }\n if (this.orderingTexture) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n\n const accumulators = new Set();\n accumulators.add(this.display);\n accumulators.add(this.current);\n for (const accumulator of this.accumulators) {\n accumulators.add(accumulator);\n }\n for (const accumulator of accumulators) {\n accumulator.dispose();\n }\n\n const instances = this.lodInstances.values();\n this.lodInstances.clear();\n for (const instance of instances) {\n instance.texture.dispose();\n }\n\n if (this.sortWorker) {\n this.sortWorker.dispose();\n this.sortWorker = null;\n }\n if (this.lodWorker) {\n this.lodWorker.dispose();\n this.lodWorker = null;\n }\n if (this.pager) {\n this.pager.dispose();\n this.pager = undefined;\n }\n }\n\n setDirty() {\n if (!this.dirty) {\n this.dirty = true;\n this.onDirty?.();\n }\n }\n\n onBeforeRender(\n renderer: THREE.WebGLRenderer,\n scene: THREE.Scene,\n camera: THREE.Camera,\n ) {\n const spark = SparkRenderer.sparkOverride ?? this;\n\n const frame = renderer.info.render.frame;\n const isNewFrame = frame !== spark.lastFrame;\n spark.lastFrame = frame;\n\n // Determine render target\n const currentRenderTarget = renderer.getRenderTarget();\n const isXRRenderTarget = checkIsXRRenderTarget(currentRenderTarget);\n if (currentRenderTarget) {\n spark.renderSize.set(\n currentRenderTarget.width,\n currentRenderTarget.height,\n );\n\n // WebXR mode on Apple Vision Pro returns 1x1 when presenting.\n // Use a different means to figure out the render size.\n if (\n isXRRenderTarget &&\n spark.renderSize.x === 1 &&\n spark.renderSize.y === 1\n ) {\n const baseLayer = renderer.xr.getSession()?.renderState.baseLayer;\n if (baseLayer) {\n spark.renderSize.x = baseLayer.framebufferWidth;\n spark.renderSize.y = baseLayer.framebufferHeight;\n }\n }\n } else {\n renderer.getDrawingBufferSize(spark.renderSize);\n }\n this.uniforms.renderSize.value.copy(spark.renderSize);\n\n const typedCamera = camera as\n | THREE.PerspectiveCamera\n | THREE.OrthographicCamera;\n\n this.uniforms.near.value = typedCamera.near;\n this.uniforms.far.value = typedCamera.far;\n\n const geometry = this.geometry as SplatGeometry;\n geometry.instanceCount = spark.activeSplats;\n\n const accumToWorld = new THREE.Matrix4();\n if (!this.display.extSplats) {\n accumToWorld.makeTranslation(spark.display.viewOrigin);\n }\n const cameraToWorld = camera.matrixWorld.clone();\n const worldToCamera = cameraToWorld.invert();\n const accumToCamera = worldToCamera.multiply(accumToWorld);\n accumToCamera.decompose(\n this.uniforms.renderToViewPos.value,\n this.uniforms.renderToViewQuat.value,\n new THREE.Vector3(),\n );\n this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera);\n\n this.uniforms.maxStdDev.value = spark.maxStdDev;\n this.uniforms.gaussianK.value = spark.gaussianK;\n this.uniforms.minPixelRadius.value = spark.minPixelRadius;\n this.uniforms.maxPixelRadius.value = spark.maxPixelRadius;\n this.uniforms.minAlpha.value = spark.minAlpha;\n this.uniforms.enable2DGS.value = spark.enable2DGS;\n // this.uniforms.enableRayEval.value = spark.enableRayEval;\n this.uniforms.lodInflate.value = spark.lodInflate;\n this.uniforms.preBlurAmount.value = spark.preBlurAmount;\n this.uniforms.blurAmount.value = spark.blurAmount;\n this.uniforms.focalDistance.value = spark.focalDistance;\n this.uniforms.apertureAngle.value = spark.apertureAngle;\n this.uniforms.falloff.value = spark.falloff;\n this.uniforms.clipXY.value = spark.clipXY;\n this.uniforms.focalAdjustment.value = spark.focalAdjustment;\n\n const outputColorSpace =\n currentRenderTarget === null\n ? renderer.outputColorSpace\n : isXRRenderTarget\n ? currentRenderTarget.texture.colorSpace\n : THREE.ColorManagement.workingColorSpace;\n this.uniforms.encodeLinear.value =\n outputColorSpace !== THREE.SRGBColorSpace;\n\n this.uniforms.ordering.value =\n spark.orderingTexture ?? SparkRenderer.emptyOrdering;\n this.uniforms.enableExtSplats.value = this.display.extSplats;\n this.uniforms.enableCovSplats.value = this.display.covSplats;\n if (this.display.extSplats) {\n const extSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = extSplats[0];\n this.uniforms.extSplats2.value = extSplats[1];\n } else {\n const packedSplats = spark.display.getTextures();\n this.uniforms.extSplats.value = packedSplats[0];\n this.uniforms.extSplats2.value = packedSplats[0];\n }\n\n this.uniforms.time.value = spark.display.time;\n this.uniforms.deltaTime.value = spark.display.deltaTime;\n // Alternating debug flag that can aid in visual debugging\n this.uniforms.debugFlag.value = (performance.now() / 1000.0) % 2.0 < 1.0;\n\n if (spark.autoUpdate && isNewFrame) {\n const preUpdate = spark.preUpdate && !renderer.xr.isPresenting;\n const useCamera = renderer.xr.isPresenting\n ? renderer.xr.getCamera()\n : camera;\n if (preUpdate) {\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n } else {\n if (spark.updateTimeoutId === -1) {\n spark.updateTimeoutId = setTimeout(() => {\n spark.updateTimeoutId = -1;\n spark.updateInternal({\n scene,\n camera: useCamera,\n autoUpdate: true,\n });\n }, 1);\n }\n }\n }\n\n spark.dirty = false;\n }\n\n clearSplats() {\n this.activeSplats = 0;\n this.display.numSplats = 0;\n this.setDirty();\n }\n\n async update({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }) {\n await this.updateInternal({ scene, camera, autoUpdate: false });\n }\n\n // /**\n // * Provide additional cameras to prefetch paged splat chunks without\n // * affecting main LOD selection.\n // */\n // setPrefetchCameras(cameras?: THREE.Camera[], lodScaleMultiplier = 1.0) {\n // const next = cameras?.filter(Boolean) ?? [];\n // const sameCameras =\n // this.prefetchCameras.length === next.length &&\n // this.prefetchCameras.every((camera, index) => camera === next[index]);\n // if (sameCameras && this.prefetchLodScale === lodScaleMultiplier) {\n // return;\n // }\n // this.prefetchCameras = next;\n // this.prefetchLodScale = lodScaleMultiplier;\n // this.invalidatePrefetchCache();\n // }\n\n // /**\n // * Invalidate the prefetch meshes cache. Call this when SplatMeshes are\n // * added or removed from the scene.\n // */\n // invalidatePrefetchCache() {\n // this.prefetchMeshesCacheScene = undefined;\n // }\n\n private async updateInternal({\n scene,\n camera,\n autoUpdate,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n autoUpdate: boolean;\n }) {\n const renderer = this.renderer;\n const time = this.time ?? this.clock.getElapsedTime();\n\n const center = camera.getWorldPosition(new THREE.Vector3());\n const dir = camera.getWorldDirection(new THREE.Vector3());\n\n const viewChanged =\n center.distanceTo(this.sortedCenter) > 0.001 ||\n dir.dot(this.sortedDir) < 0.999;\n\n const next = this.accumulators.pop();\n if (!next) {\n // Should never happen\n throw new Error(\"No next accumulator\");\n }\n if (next === this.current) {\n // Should never happen\n throw new Error(\n \"Next accumulator is the same as the current accumulator\",\n );\n }\n const { version, mappingVersion, visibleGenerators, generate } =\n next.prepareGenerate({\n renderer,\n scene,\n time,\n camera,\n sortRadial: this.sortRadial ?? true,\n renderSize: this.renderSize,\n previous: this.current,\n lodInstances: this.enableLod ? this.lodInstances : undefined,\n });\n\n let doUpdate = true;\n const needsUpdate = viewChanged || version !== this.current.version;\n const mappingUpdated = mappingVersion !== this.display.mappingVersion;\n\n if (autoUpdate && !needsUpdate) {\n // Triggered by auto-update but no change\n doUpdate = false;\n }\n\n if (mappingUpdated && this.sorting) {\n // We need to be able to sort the splats because the mapping has changed.\n // Try again next time around.\n doUpdate = false;\n }\n\n if (!doUpdate) {\n // Restore unused accumulator to the free list\n this.accumulators.push(next);\n } else {\n generate();\n\n if (this.flushAfterGenerate) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n if (this.display.mappingVersion === next.mappingVersion) {\n // Same splat mapping so let's display it immediately and\n // reuse the sort order\n this.accumulators.push(this.display);\n this.display = next;\n } else {\n if (this.display !== this.current) {\n // The previous current is not being displayed, so replace it\n this.accumulators.push(this.current);\n }\n }\n\n this.current = next;\n this.sortDirty = true;\n this.setDirty();\n }\n\n if (this.enableDriveLod) {\n this.driveLod({ visibleGenerators, camera, scene });\n }\n await this.driveSort();\n }\n\n private async driveSort() {\n if (this.sorting || !this.sortDirty) {\n return;\n }\n\n if (this.sortTimeoutId !== -1) {\n clearTimeout(this.sortTimeoutId);\n this.sortTimeoutId = -1;\n }\n\n const now = performance.now();\n const nextSortTime = this.lastSortTime\n ? this.lastSortTime + this.minSortIntervalMs\n : now;\n if (now < nextSortTime) {\n this.sortTimeoutId = setTimeout(() => {\n this.sortTimeoutId = -1;\n this.driveSort();\n }, nextSortTime - now);\n return;\n }\n\n this.sorting = true;\n this.sortDirty = false;\n this.lastSortTime = now;\n\n if (this.readPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.readPause));\n }\n\n const current = this.current;\n\n this.sortedCenter.copy(current.viewOrigin);\n this.sortedDir.copy(current.viewDirection);\n\n const { numSplats, maxSplats } = current;\n const rows = Math.max(1, Math.ceil(maxSplats / 16384));\n const orderingMaxSplats = rows * 16384;\n this.maxSplats = Math.max(this.maxSplats, orderingMaxSplats);\n\n const ordering = new Uint32Array(this.maxSplats);\n const readback = Readback.ensureBuffer(maxSplats, this.readback32);\n this.readback32 = readback;\n\n await this.readbackDepth({\n current,\n renderer: this.renderer,\n numSplats,\n readback,\n });\n\n if (this.sortPause > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortPause));\n }\n\n if (!this.sortWorker) {\n this.sortWorker = new SplatWorker();\n }\n const result = (await this.sortWorker.call(\"sortSplats32\", {\n numSplats,\n readback,\n ordering,\n })) as {\n readback: Uint32Array;\n ordering: Uint32Array;\n activeSplats: number;\n };\n\n if (this.sortDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, this.sortDelay));\n }\n\n this.readback32 = result.readback;\n\n this.activeSplats = result.activeSplats;\n\n if (this.orderingTexture) {\n if (rows > this.orderingTexture.image.height) {\n this.orderingTexture.dispose();\n this.orderingTexture = null;\n }\n }\n\n if (!this.orderingTexture) {\n // console.log(`Allocating orderingTexture: ${4096}x${rows}`);\n const orderingTexture = new THREE.DataTexture(\n result.ordering,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n orderingTexture.internalFormat = \"RGBA32UI\";\n orderingTexture.needsUpdate = true;\n this.orderingTexture = orderingTexture;\n } else {\n const renderer = this.renderer;\n if (!renderer.properties.has(this.orderingTexture)) {\n this.orderingTexture.needsUpdate = true;\n } else {\n uploadU32DataTextureRows(\n renderer,\n this.orderingTexture,\n 4096,\n rows,\n result.ordering,\n );\n }\n }\n\n // console.log(`Sorted (${this.minSortIntervalMs}) ${numSplats} splats in ${(performance.now() - now).toFixed(0)} ms`);\n\n if (this.current.mappingVersion === current.mappingVersion) {\n if (this.current.mappingVersion !== this.display.mappingVersion) {\n this.accumulators.push(this.display);\n this.display = this.current;\n }\n }\n this.sorting = false;\n this.setDirty();\n\n this.driveSort();\n }\n\n private ensureLodWorker() {\n if (!this.lodWorker) {\n this.lodWorker = new SplatWorker();\n }\n return this.lodWorker;\n }\n\n defaultSplatTarget() {\n return isOculus()\n ? 500000\n : isVisionPro()\n ? 750000\n : isAndroid()\n ? 1000000\n : isIos()\n ? 1500000\n : 2500000;\n }\n\n private driveLod({\n visibleGenerators,\n camera,\n scene,\n }: {\n visibleGenerators: SplatGenerator[];\n camera: THREE.Camera;\n scene: THREE.Scene;\n }) {\n const defaultSplatCount = this.defaultSplatTarget();\n const splatCount = this.lodSplatCount ?? defaultSplatCount;\n const maxSplats = splatCount * this.lodSplatScale;\n\n let pixelScaleLimit = 0.0;\n if (camera instanceof THREE.PerspectiveCamera) {\n const tanYfov = Math.tan((0.5 * camera.fov * Math.PI) / 180);\n pixelScaleLimit = (2.0 * tanYfov) / this.renderSize.y;\n } else if (camera instanceof THREE.OrthographicCamera) {\n // Effective visible size after zoom\n const viewHeight = (camera.top - camera.bottom) / camera.zoom;\n const viewWidth = (camera.right - camera.left) / camera.zoom;\n // World/view units per pixel (constant with depth for ortho)\n const pxY = viewHeight / Math.max(1, this.renderSize.y);\n const pxX = viewWidth / Math.max(1, this.renderSize.x);\n pixelScaleLimit = Math.min(pxX, pxY);\n }\n\n pixelScaleLimit *= this.lodRenderScale;\n\n const viewPos = new THREE.Vector3();\n const viewQuat = new THREE.Quaternion();\n this.current.viewToWorld.decompose(viewPos, viewQuat, new THREE.Vector3());\n\n if (this.lodPosOverride) {\n viewPos.copy(this.lodPosOverride);\n }\n if (this.lodQuatOverride) {\n viewQuat.copy(this.lodQuatOverride).normalize();\n }\n\n if (this.lastLod) {\n if (\n this.lastLod.pixelScaleLimit !== pixelScaleLimit ||\n this.lastLod.maxSplats !== maxSplats\n ) {\n this.lodDirty = true;\n }\n\n const distance = viewPos.distanceTo(this.lastLod.pos);\n const distanceRamp = Math.max(0.0, 1.0 - distance / 1.0);\n const dot = viewQuat.dot(this.lastLod.quat);\n const quatRamp = Math.max(0.0, 1.0 - (1.0 - dot) / 0.01);\n const similarity = distanceRamp * quatRamp;\n if (similarity < 0.999) {\n this.lodDirty = true;\n }\n }\n\n const lodMeshes = !this.enableLod\n ? []\n : (visibleGenerators.filter((generator) => {\n return (\n generator instanceof SplatMesh &&\n (generator.packedSplats?.lodSplats ||\n generator.extSplats?.lodSplats ||\n generator.paged) &&\n generator.enableLod !== false\n );\n }) as SplatMesh[]);\n const hasPaged = lodMeshes.some((mesh) => mesh.paged);\n\n if (this.lodMeshes.length !== lodMeshes.length) {\n this.lodDirty = true;\n } else {\n if (\n lodMeshes.some(\n (m, i) =>\n m !== this.lodMeshes[i].mesh ||\n m.version > this.lodMeshes[i].version,\n )\n ) {\n this.lodDirty = true;\n }\n }\n\n this.lodMeshes = lodMeshes.map((mesh) => ({\n mesh,\n version: mesh.version + 1,\n }));\n\n // if (!this.lodDirty && lodMeshes.length === 0 && this.lodIds.size === 0) {\n // return;\n // }\n\n this.lodInitQueue = [];\n const now = performance.now();\n\n for (const mesh of lodMeshes) {\n const splats =\n mesh.packedSplats?.lodSplats ?? mesh.extSplats?.lodSplats ?? mesh.paged;\n if (splats) {\n const record = this.lodIds.get(splats);\n if (record) {\n record.lastTouched = now;\n } else {\n this.lodInitQueue.push(splats);\n }\n }\n }\n\n this.ensureLodWorker().tryExclusive(async (worker) => {\n if (hasPaged && !this.pager) {\n this.pager = new SplatPager({\n renderer: this.renderer,\n extSplats: this.pagedExtSplats,\n maxSplats: this.maxPagedSplats,\n numFetchers: this.numLodFetchers,\n });\n\n const { lodId } = (await worker.call(\"newLodTree\", {\n capacity: this.pager.maxSplats,\n })) as { lodId: number };\n this.pagerId = lodId;\n }\n\n // Assign pager to any new meshes that don't have one yet\n // (must run every frame, not just when pager is first created)\n if (this.pager) {\n for (const { mesh } of this.lodMeshes) {\n if (mesh.paged && !mesh.paged.pager) {\n mesh.paged.pager = this.pager;\n }\n }\n }\n\n if (this.lodInitQueue.length > 0) {\n const lodInitQueue = this.lodInitQueue;\n this.lodInitQueue = [];\n while (lodInitQueue.length > 0) {\n const splats = lodInitQueue.shift();\n if (splats) {\n await this.initLodTree(worker, splats);\n this.lodDirty = true;\n }\n }\n }\n\n if (this.pager) {\n const updates = this.pager.consumeLodTreeUpdates();\n\n for (const { splats, page, chunk, numSplats, lodTree } of updates) {\n const record = this.lodIds.get(splats);\n if (record) {\n if (lodTree && chunk === 0) {\n record.rootPage = page;\n }\n this.lodUpdates.push({\n lodId: record.lodId,\n pageBase: page * this.pager.pageSplats,\n chunkBase: chunk * this.pager.pageSplats,\n count: numSplats,\n lodTreeData: lodTree,\n });\n }\n }\n }\n\n if (this.lodUpdates.length > 0) {\n const lodUpdates = this.lodUpdates;\n this.lodUpdates = [];\n await worker.call(\"updateLodTrees\", { ranges: lodUpdates });\n this.lodDirty = true;\n }\n\n if (this.lodDirty) {\n const now = performance.now();\n const deltaPred = new THREE.Vector3();\n if (this.lastLod) {\n const deltaTime = Math.max(1, now - this.lastLod.timestamp);\n deltaPred\n .copy(viewPos)\n .sub(this.lastLod.pos)\n .multiplyScalar(this.lastTraverseTime / deltaTime);\n }\n this.lastLod = {\n pos: viewPos,\n quat: viewQuat,\n pixelScaleLimit,\n maxSplats,\n timestamp: now,\n };\n this.lodDirty = false;\n\n await this.updateLodInstances(\n worker,\n deltaPred,\n lodMeshes,\n maxSplats,\n viewPos,\n viewQuat,\n pixelScaleLimit,\n );\n this.currentLod = this.lastLod;\n this.setDirty();\n }\n\n await this.cleanupLodTrees(worker);\n });\n }\n\n private async initLodTree(\n worker: SplatWorker,\n splats: PackedSplats | ExtSplats | PagedSplats,\n ) {\n if (splats instanceof PackedSplats || splats instanceof ExtSplats) {\n const { lodId } = (await worker.call(\"initLodTree\", {\n numSplats: splats.numSplats ?? 0,\n lodTree: (splats.extra.lodTree as Uint32Array).slice(),\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** initLodTree\", lodId, splats.extra.lodTree, splats);\n } else {\n const { lodId } = (await worker.call(\"newSharedLodTree\", {\n lodId: this.pagerId,\n })) as { lodId: number };\n this.lodIds.set(splats, { lodId, lastTouched: performance.now() });\n this.lodIdToSplats.set(lodId, splats);\n // console.log(\"*** newSharedLodTree\", lodId, this.pagerId, splats);\n }\n }\n\n private pageSizeWarning = false;\n\n private async updateLodInstances(\n worker: SplatWorker,\n deltaPred: THREE.Vector3,\n lodMeshes: SplatMesh[],\n maxSplats: number,\n viewPos: THREE.Vector3,\n viewQuat: THREE.Quaternion,\n pixelScaleLimit: number,\n ) {\n // Commented out because it makes LoDing less stable\n // viewPos.add(deltaPred);\n\n const uuidToMesh: Map = new Map();\n const cameraToWorld = new THREE.Matrix4().compose(\n viewPos,\n viewQuat,\n new THREE.Vector3().setScalar(1),\n );\n\n const instances = lodMeshes.reduce(\n (instances, mesh) => {\n uuidToMesh.set(mesh.uuid, mesh);\n const viewToObject = mesh.matrixWorld\n .clone()\n .invert()\n .multiply(cameraToWorld);\n\n const splats =\n mesh.packedSplats?.lodSplats ??\n mesh.extSplats?.lodSplats ??\n mesh.paged;\n if (!splats) {\n return instances;\n }\n const record = this.lodIds.get(splats);\n if (!record) {\n return instances;\n }\n\n if (this.pager && mesh.paged && record.rootPage === undefined) {\n return instances;\n }\n\n instances[mesh.uuid] = {\n instanceId: mesh.uuid,\n lodId: record.lodId,\n rootPage: record.rootPage,\n viewToObjectCols: viewToObject.elements,\n lodScale: mesh.lodScale,\n behindFoveate: mesh.behindFoveate ?? this.behindFoveate,\n coneFov0: mesh.coneFov0 ?? this.coneFov0,\n coneFov: mesh.coneFov ?? this.coneFov,\n coneFoveate: mesh.coneFoveate ?? this.coneFoveate,\n };\n return instances;\n },\n {} as Record<\n string,\n {\n instanceId: string;\n lodId: number;\n rootPage?: number;\n viewToObjectCols: number[];\n lodScale: number;\n behindFoveate: number;\n coneFov0: number;\n coneFov: number;\n coneFoveate: number;\n }\n >,\n );\n\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats,\n pixelScaleLimit,\n lastPixelLimit: this.lastPixelLimit,\n instances,\n traverseMode: this.lodTraverseMode,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n chunks: [number, number][];\n pixelLimit?: number;\n };\n this.lastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices, chunks, pixelLimit } = result;\n this.lastPixelLimit = pixelLimit;\n const totalLodSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n // console.log(\n // `traverseLodTrees in ${this.lastTraverseTime} ms, pixelLimit=${pixelLimit}, totalLodSplats=${totalLodSplats}`,\n // );\n\n this.updateLodIndices(uuidToMesh, keyIndices);\n // console.log(\"chunks.length =\", chunks.length);\n\n if (this.pager) {\n this.pager.processUploads();\n\n const pagedMeshes = lodMeshes\n .map((mesh) => {\n if (!mesh.paged || !this.pager) {\n return null;\n }\n const meshPosition = mesh.getWorldPosition(new THREE.Vector3());\n return {\n splats: mesh.paged,\n distance: meshPosition.distanceTo(viewPos),\n };\n })\n .filter((result) => result !== null);\n\n if (!this.pageSizeWarning && pagedMeshes.length > this.pager.maxPages) {\n this.pageSizeWarning = true;\n console.warn(\n `# paged SplatMeshes exceeds maxPages: ${pagedMeshes.length} > ${this.pager.maxPages}`,\n );\n }\n\n // Fetch root chunk of each paged splats in priority of distance to camera\n pagedMeshes.sort((a, b) => a.distance - b.distance);\n this.pager.fetchPriority = pagedMeshes.map(({ splats }) => ({\n splats,\n chunk: 0,\n }));\n\n for (const [lodId, chunk] of chunks) {\n const splats = this.lodIdToSplats.get(lodId);\n if (splats instanceof PagedSplats) {\n if (chunk !== 0) {\n this.pager.fetchPriority.push({ splats, chunk });\n }\n }\n }\n\n this.pager.autoDrive = this.enableLodFetching;\n if (this.enableLodFetching) {\n this.pager.driveFetchers();\n }\n }\n\n if (\n this.lodRaycast &&\n performance.now() - this.lastLodRaycastTime >= this.lodRaycastIntervalMs\n ) {\n this.lastLodRaycastTime = performance.now();\n const traverseStart = performance.now();\n const result = (await worker.call(\"traverseLodTrees\", {\n maxSplats: Math.min(this.lodRaycast, Math.round(totalLodSplats * 0.1)),\n pixelScaleLimit,\n instances,\n })) as {\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >;\n };\n const raycastTraverseTime = performance.now() - traverseStart;\n\n const { keyIndices } = result;\n const totalRaycastSplats = Object.values(keyIndices).reduce(\n (sum, { numSplats }) => sum + numSplats,\n 0,\n );\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n mesh.raycastIndices = countIndices;\n // console.log(\"Set raycast indices\", uuid, countIndices.numSplats, countIndices.indices.length);\n }\n // console.log(`raycast traverse in ${raycastTraverseTime} ms, totalRaycastSplats=${totalRaycastSplats}`);\n }\n }\n\n private async cleanupLodTrees(worker: SplatWorker) {\n const DISPOSE_TIMEOUT_MS = 3000;\n const now = performance.now();\n\n let oldest = null;\n for (const [splats, record] of this.lodIds.entries()) {\n if (oldest == null || record.lastTouched < oldest.lastTouched) {\n oldest = {\n splats,\n lastTouched: record.lastTouched,\n lodId: record.lodId,\n };\n }\n }\n if (!oldest || oldest.lastTouched > now - DISPOSE_TIMEOUT_MS) {\n return;\n }\n\n this.lodIds.delete(oldest.splats);\n this.lodIdToSplats.delete(oldest.lodId);\n\n for (const [mesh, instance] of this.lodInstances.entries()) {\n if (instance.lodId === oldest.lodId) {\n instance.texture.dispose();\n this.lodInstances.delete(mesh);\n }\n }\n\n if (oldest.splats instanceof PagedSplats) {\n this.pager?.removeSplats(oldest.splats);\n }\n\n await worker.call(\"disposeLodTree\", { lodId: oldest.lodId });\n // console.log(\"disposed lodTree\", oldest.lodId);\n }\n\n private updateLodIndices(\n uuidToMesh: Map,\n keyIndices: Record<\n string,\n { lodId: number; numSplats: number; indices: Uint32Array }\n >,\n ) {\n // console.log(\"updateLodIndices\", keyIndices);\n for (const [uuid, countIndices] of Object.entries(keyIndices)) {\n const { lodId, numSplats, indices } = countIndices;\n const mesh = uuidToMesh.get(uuid) as SplatMesh;\n\n if (mesh.paged) {\n mesh.paged.update(numSplats, indices);\n // console.log(\"*** paged.update\", lodId, numSplats, indices.slice(0, 5).join(\",\"));\n } else {\n let instance = this.lodInstances.get(mesh);\n if (instance) {\n if (indices.length > instance.indices.length) {\n instance.texture.dispose();\n instance = undefined;\n }\n }\n\n const rows = Math.ceil(indices.length / 16384);\n if (!instance) {\n const capacity = rows * 16384;\n if (indices.length !== capacity) {\n throw new Error(\"Indices length != capacity\");\n }\n const texture = new THREE.DataTexture(\n indices,\n 4096,\n rows,\n THREE.RGBAIntegerFormat,\n THREE.UnsignedIntType,\n );\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n instance = { lodId, numSplats, indices, texture };\n this.lodInstances.set(mesh, instance);\n } else {\n instance.numSplats = numSplats;\n // instance.indices.set(indices.subarray(0, numSplats));\n\n const renderer = this.renderer;\n const gl = renderer.getContext() as WebGL2RenderingContext;\n if (renderer.properties.has(instance.texture)) {\n const props = renderer.properties.get(instance.texture) as {\n __webglTexture: WebGLTexture;\n };\n const glTexture = props.__webglTexture;\n if (!glTexture) {\n throw new Error(\"lodIndices texture not found\");\n }\n renderer.state.activeTexture(gl.TEXTURE0);\n renderer.state.bindTexture(gl.TEXTURE_2D, glTexture);\n gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n 4096,\n rows,\n gl.RGBA_INTEGER,\n gl.UNSIGNED_INT,\n indices,\n );\n renderer.state.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n }\n mesh.updateMappingVersion();\n }\n }\n\n private async readbackDepth({\n current,\n renderer,\n numSplats,\n readback,\n }: {\n current: SplatAccumulator;\n renderer: THREE.WebGLRenderer;\n numSplats: number;\n readback: Uint32Array;\n }) {\n if (!renderer) {\n throw new Error(\"No renderer\");\n }\n if (!current.target) {\n throw new Error(\"No target\");\n }\n\n const roundedCount =\n Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;\n if (readback.byteLength < roundedCount * 4) {\n throw new Error(\n `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`,\n );\n }\n const readbackUint8 = new Uint8Array(readback.buffer);\n const renderState = this.saveRenderState(renderer);\n\n // We can only read back one 2D array layer of pixels at a time,\n // so loop through them, initiate the readback, and collect the\n // completion promises.\n const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;\n let baseIndex = 0;\n const promises = [];\n\n while (baseIndex < numSplats) {\n const layer = Math.floor(baseIndex / layerSize);\n const layerBase = layer * layerSize;\n const layerYEnd = Math.min(\n SPLAT_TEX_HEIGHT,\n Math.ceil((numSplats - layerBase) / SPLAT_TEX_WIDTH),\n );\n\n // Compute the subarray that this layer of readback corresponds to\n const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;\n const subReadback = readbackUint8.subarray(\n layerBase * 4,\n layerBase * 4 + readbackSize,\n );\n renderer.setRenderTarget(current.target, layer);\n\n const promise = renderer.readRenderTargetPixelsAsync(\n current.target,\n 0,\n 0,\n SPLAT_TEX_WIDTH,\n layerYEnd,\n subReadback,\n undefined,\n current.extSplats ? 2 : 1,\n );\n promises.push(promise);\n\n if (this.flushAfterRead) {\n const gl = renderer.getContext() as WebGL2RenderingContext;\n gl.flush();\n }\n\n baseIndex += SPLAT_TEX_WIDTH * layerYEnd;\n }\n\n this.resetRenderState(renderer, renderState);\n return Promise.all(promises).then(() => readback);\n }\n\n private saveRenderState(renderer: THREE.WebGLRenderer) {\n return {\n target: renderer.getRenderTarget(),\n xrEnabled: renderer.xr.enabled,\n autoClear: renderer.autoClear,\n };\n }\n\n private resetRenderState(\n renderer: THREE.WebGLRenderer,\n state: {\n target: THREE.WebGLRenderTarget | null;\n xrEnabled: boolean;\n autoClear: boolean;\n },\n ) {\n renderer.setRenderTarget(state.target);\n renderer.xr.enabled = state.xrEnabled;\n renderer.autoClear = state.autoClear;\n }\n\n private static emptyOrdering = (() => {\n const numIndices = 4 * 4096 * 1;\n const emptyArray = new Uint32Array(numIndices);\n const texture = new THREE.DataTexture(emptyArray, 4096, 1);\n texture.format = THREE.RGBAIntegerFormat;\n texture.type = THREE.UnsignedIntType;\n texture.internalFormat = \"RGBA32UI\";\n texture.needsUpdate = true;\n return texture;\n })();\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n try {\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n }\n\n renderTarget({\n scene,\n camera,\n }: { scene: THREE.Scene; camera: THREE.Camera }): THREE.WebGLRenderTarget {\n const target = this.backTarget ?? this.target;\n if (!target) {\n throw new Error(\"No target\");\n }\n\n const previousTarget = this.renderer.getRenderTarget();\n try {\n this.renderer.setRenderTarget(target);\n SparkRenderer.sparkOverride = this;\n this.renderer.render(scene, camera);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n this.renderer.setRenderTarget(previousTarget);\n }\n\n if (target !== this.target) {\n // Swap back buffer and target\n [this.target, this.backTarget] = [this.backTarget, this.target];\n }\n return target;\n }\n\n // Read back the previously rendered target image as a Uint8Array of packed\n // RGBA values (in that order). Subsequent calls to this.readTarget()\n // will reuse the same buffers to minimize memory allocations.\n async readTarget(): Promise {\n if (!this.target) {\n throw new Error(\"Must initialize with target\");\n }\n const { width, height } = this.target;\n const byteSize = width * height * 4;\n if (!this.superPixels || this.superPixels.length < byteSize) {\n this.superPixels = new Uint8Array(byteSize);\n // console.log(`Allocated superPixels: ${width}x${height} = ${pixelCount} bytes`);\n }\n const superPixels = this.superPixels;\n\n await this.renderer.readRenderTargetPixelsAsync(\n this.target,\n 0,\n 0,\n width,\n height,\n superPixels,\n );\n\n const { superXY } = this;\n if (superXY === 1) {\n return superPixels;\n }\n\n const subWidth = width / superXY;\n const subHeight = height / superXY;\n const subSize = subWidth * subHeight * 4;\n if (!this.targetPixels || this.targetPixels.length < subSize) {\n this.targetPixels = new Uint8Array(subSize);\n // console.log(`Allocated targetPixels: ${subWidth}x${subHeight} = ${subSize} bytes`);\n }\n const targetPixels = this.targetPixels;\n\n const super2 = superXY * superXY;\n for (let y = 0; y < subHeight; y++) {\n const row = y * subWidth;\n for (let x = 0; x < subWidth; x++) {\n const superCol = x * superXY;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let sy = 0; sy < superXY; sy++) {\n const superRow = (y * superXY + sy) * width;\n for (let sx = 0; sx < superXY; sx++) {\n const superIndex = (superRow + superCol + sx) * 4;\n r += superPixels[superIndex];\n g += superPixels[superIndex + 1];\n b += superPixels[superIndex + 2];\n a += superPixels[superIndex + 3];\n }\n }\n const pixelIndex = (row + x) * 4;\n targetPixels[pixelIndex] = r / super2;\n targetPixels[pixelIndex + 1] = g / super2;\n targetPixels[pixelIndex + 2] = b / super2;\n targetPixels[pixelIndex + 3] = a / super2;\n }\n }\n return targetPixels;\n }\n\n async renderReadTarget({\n scene,\n camera,\n }: {\n scene: THREE.Scene;\n camera: THREE.Camera;\n }): Promise {\n this.renderTarget({ scene, camera });\n return this.readTarget();\n }\n\n // Data and buffers used for environment map rendering\n private static cubeRender: {\n target: THREE.WebGLCubeRenderTarget;\n cubeCamera: THREE.CubeCamera;\n near: number;\n far: number;\n } | null = null;\n private static pmrem: THREE.PMREMGenerator | null = null;\n\n // Renders out the scene to a cube map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces.\n async renderCubeMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n filter = false,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n filter: boolean;\n }): Promise {\n if (\n !SparkRenderer.cubeRender ||\n SparkRenderer.cubeRender.target.width !== size ||\n SparkRenderer.cubeRender.near !== near ||\n SparkRenderer.cubeRender.far !== far\n ) {\n if (SparkRenderer.cubeRender) {\n SparkRenderer.cubeRender.target.dispose();\n }\n const target = new THREE.WebGLCubeRenderTarget(size, {\n format: THREE.RGBAFormat,\n type: THREE.UnsignedByteType,\n generateMipmaps: filter,\n minFilter: filter ? THREE.LinearMipMapLinearFilter : THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n colorSpace: filter ? THREE.LinearSRGBColorSpace : THREE.SRGBColorSpace,\n });\n const cubeCamera = new THREE.CubeCamera(near, far, target);\n SparkRenderer.cubeRender = { target, cubeCamera, near, far };\n }\n\n const { target, cubeCamera } = SparkRenderer.cubeRender;\n cubeCamera.position.copy(worldCenter);\n\n // Save the visibility state of objects we want to hide before render\n const objectVisibility = new Map();\n for (const object of hideObjects) {\n objectVisibility.set(object, object.visible);\n object.visible = false;\n }\n\n if (update) {\n const tempCamera = new THREE.Camera();\n tempCamera.position.copy(worldCenter);\n await this.update({ scene, camera: tempCamera });\n }\n\n try {\n SparkRenderer.sparkOverride = this;\n // Update the CubeCamera, which performs 6 cube face renders\n cubeCamera.update(this.renderer, scene);\n } finally {\n SparkRenderer.sparkOverride = undefined;\n }\n\n // Restore viewpoint to default and object visibility\n for (const [object, visible] of objectVisibility.entries()) {\n object.visible = visible;\n }\n\n return target.texture;\n }\n\n async readCubeTargets(): Promise {\n if (!SparkRenderer.cubeRender) {\n throw new Error(\"No cube render\");\n }\n\n const textures = SparkRenderer.cubeRender.target.texture;\n const promises = [];\n const buffers = [];\n\n for (let i = 0; i < textures.images.length; ++i) {\n const { width, height } = textures.images[i];\n const byteSize = width * height * 4;\n const readback = new Uint8Array(byteSize);\n buffers.push(readback);\n const promise = this.renderer.readRenderTargetPixelsAsync(\n SparkRenderer.cubeRender.target,\n 0,\n 0,\n width,\n height,\n readback,\n i,\n );\n promises.push(promise);\n }\n\n await Promise.all(promises);\n return buffers;\n }\n\n // Renders out the scene to an environment map that can be used for\n // Image-based lighting or similar applications. First optionally updates Gsplats,\n // sorts them with respect to the provided worldCenter, renders 6 cube faces,\n // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture\n // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.\n async renderEnvMap({\n scene,\n worldCenter,\n size = 256,\n near = 0.1,\n far = 1000,\n hideObjects = [],\n update = true,\n }: {\n scene: THREE.Scene;\n worldCenter: THREE.Vector3;\n size?: number;\n near?: number;\n far?: number;\n hideObjects: THREE.Object3D[];\n update: boolean;\n }): Promise {\n const cubeTexture = await this.renderCubeMap({\n scene,\n worldCenter,\n size,\n near,\n far,\n hideObjects,\n update,\n filter: true,\n });\n // Pre-filter the cube map using THREE.PMREMGenerator if requested\n if (!SparkRenderer.pmrem) {\n SparkRenderer.pmrem = new THREE.PMREMGenerator(this.renderer);\n }\n\n return SparkRenderer.pmrem?.fromCubemap(cubeTexture).texture;\n }\n\n // Utility function to recursively set the envMap property for any\n // THREE.MeshStandardMaterial within the subtree of root.\n recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture) {\n root.traverse((node) => {\n if (node instanceof THREE.Mesh) {\n if (Array.isArray(node.material)) {\n for (const material of node.material) {\n if (material instanceof THREE.MeshStandardMaterial) {\n material.envMap = envMap;\n }\n }\n } else {\n if (node.material instanceof THREE.MeshStandardMaterial) {\n node.material.envMap = envMap;\n }\n }\n }\n });\n }\n\n async getLodTreeLevel(\n splats: SplatMesh,\n level: number,\n pageColoring = false,\n ) {\n const instance = this.lodInstances.get(splats);\n if (!instance) {\n return null;\n }\n\n const result = await this.ensureLodWorker().exclusive(async (worker) => {\n return (await worker.call(\"getLodTreeLevel\", {\n lodId: instance.lodId,\n level,\n })) as { indices: Uint32Array };\n });\n\n if (splats.packedSplats?.lodSplats) {\n const newSplats = splats.packedSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ packedSplats: newSplats });\n }\n if (splats.extSplats?.lodSplats) {\n const newSplats = splats.extSplats.lodSplats.extractSplats(\n result.indices,\n pageColoring,\n );\n return new SplatMesh({ extSplats: newSplats });\n }\n throw new Error(\n \"Only LoD-enabled PackedSplats and ExtSplats are supported\",\n );\n }\n\n get premultipliedAlpha(): boolean {\n return this.material.premultipliedAlpha;\n }\n\n set premultipliedAlpha(value: boolean) {\n if (this.material.premultipliedAlpha !== value) {\n this.material.premultipliedAlpha = value;\n this.material.needsUpdate = true;\n }\n }\n}\n\nfunction checkIsXRRenderTarget(renderTarget: THREE.RenderTarget | null) {\n return (renderTarget as unknown as Record)?.isXRRenderTarget;\n}\n","// PLY file format reader\n\nimport { USE_COMPILED_PARSER_FUNCTION } from \"./defines\";\n\nconst PLY_PROPERTY_TYPES = [\n \"char\",\n \"uchar\",\n \"short\",\n \"ushort\",\n \"int\",\n \"uint\",\n \"float\",\n \"double\",\n] as const;\nexport type PlyPropertyType = (typeof PLY_PROPERTY_TYPES)[number];\n\nexport type PlyElement = {\n name: string;\n count: number;\n properties: Record;\n};\n\nexport type PlyProperty = {\n isList: boolean;\n type: PlyPropertyType;\n countType?: PlyPropertyType;\n};\n\n// Callback for parseSplats base Gsplat data\nexport type SplatCallback = (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n) => void;\n\n// Callback for parseSplats SH coefficients\nexport type SplatShCallback = (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n) => void;\n\n// A PlyReader is used to parse PLY files for Gsplat data.\n// It takes a Uint8Array/ArrayBuffer as input fileBytes, parses the text header,\n// and provides a method parseData to iterate over the entire binary data\n// efficiently, or parseSplats to iterate over Gsplat data.\n\nexport class PlyReader {\n fileBytes: Uint8Array;\n header = \"\";\n littleEndian = true;\n elements: Record = {};\n comments: string[] = [];\n data: DataView | null = null;\n static defaultPointScale = 0.001;\n\n numSplats = 0;\n\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // \"vertex\" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (\n controller: ReadableStreamController>,\n ) => {\n // Assume the header is less than 64KB\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n },\n });\n const decoder = bufferStream\n .pipeThrough(new TextDecoderStream())\n .getReader();\n\n // Find the end of the text section of the PLY file\n this.header = \"\";\n const headerTerminator = \"end_header\\n\";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error(\"Failed to read header\");\n }\n\n this.header += value as string;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n // Partition the file into header and binary data\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n\n this.elements = {};\n let curElement: PlyElement | null = null;\n this.comments = [];\n\n this.header\n .trim()\n .split(\"\\n\")\n .forEach((line: string, lineIndex: number) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== \"ply\") {\n throw new Error(\"Invalid PLY header\");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return; // Skip empty lines\n }\n\n const fields = trimmedLine.split(\" \");\n switch (fields[0]) {\n case \"format\":\n if (fields[1] === \"binary_little_endian\") {\n this.littleEndian = true;\n } else if (fields[1] === \"binary_big_endian\") {\n this.littleEndian = false;\n } else {\n // ascii formats not supported\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== \"1.0\") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case \"end_header\":\n break;\n case \"comment\":\n this.comments.push(trimmedLine.slice(\"comment \".length));\n break;\n case \"element\": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {},\n };\n this.elements[name] = curElement;\n break;\n }\n case \"property\":\n if (curElement == null) {\n throw new Error(\"Property must be inside an element\");\n }\n if (fields[1] === \"list\") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3] as PlyPropertyType,\n countType: fields[2] as PlyPropertyType,\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1] as PlyPropertyType,\n };\n }\n break;\n default:\n // console.warn(`Skipping unsupported PLY keyword: ${fields[0]}`);\n }\n });\n\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n\n parseData(\n elementCallback: (\n element: PlyElement,\n ) =>\n | null\n | ((index: number, item: Record) => void),\n ) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No data to parse\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = createEmptyItem(properties);\n // Construct a parse function\n const parseFn = createParseFn(properties, this.littleEndian);\n\n // Parse all the items in the element\n const callback = elementCallback(element) ?? (() => {});\n for (let index = 0; index < count; index++) {\n offset = parseFn(data, offset, item);\n callback(index, item);\n }\n }\n }\n\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback: SplatCallback, shCallback?: SplatShCallback) {\n if (this.elements.vertex == null) {\n throw new Error(\"No vertex element found\");\n }\n\n let isSuperSplat = false;\n const ssChunks: SSChunk[] = [];\n\n let numSh = 0;\n let sh1Props: number[] = [];\n let sh2Props: number[] = [];\n let sh3Props: number[] = [];\n let sh1: Float32Array | undefined = undefined;\n let sh2: Float32Array | undefined = undefined;\n let sh3: Float32Array | undefined = undefined;\n\n function prepareSh() {\n // Prepare SH coefficient names and arrays for numSh total SH levels\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3)\n .fill(null)\n .flatMap((_, k) => [0, 1, 2].map((_, d) => k + (d * num_f_rest) / 3));\n sh2Props = new Array(5)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 3 + k + (d * num_f_rest) / 3),\n );\n sh3Props = new Array(7)\n .fill(null)\n .flatMap((_, k) =>\n [0, 1, 2].map((_, d) => 8 + k + (d * num_f_rest) / 3),\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : undefined;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : undefined;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : undefined;\n }\n\n function ssShCallback(\n index: number,\n item: Record,\n ) {\n // Decode SH for SuperSplat compressed data\n if (!sh1) {\n throw new Error(\"Missing sh1\");\n }\n const sh = item.f_rest as number[];\n\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = (sh[sh1Props[i]] * 8) / 255 - 4;\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = (sh[sh2Props[i]] * 8) / 255 - 4;\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = (sh[sh3Props[i]] * 8) / 255 - 4;\n }\n }\n shCallback?.(index, sh1, sh2, sh3);\n }\n\n function initSuperSplat(element: PlyElement) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n } = element.properties;\n if (\n !min_x ||\n !min_y ||\n !min_z ||\n !max_x ||\n !max_y ||\n !max_z ||\n !min_scale_x ||\n !min_scale_y ||\n !min_scale_z ||\n !max_scale_x ||\n !max_scale_y ||\n !max_scale_z\n ) {\n throw new Error(\"Missing PLY chunk properties\");\n }\n\n // SuperSplat chunks are used to quantize splat data, so we need to store them\n isSuperSplat = true;\n return (index: number, item: Record) => {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = item as Record;\n ssChunks.push({\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n });\n };\n }\n\n function decodeSuperSplat(element: PlyElement) {\n // Decode SuperSplat compressed data in vertex and sh elements\n if (shCallback && element.name === \"sh\") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n element.properties;\n if (\n !packed_position ||\n !packed_rotation ||\n !packed_scale ||\n !packed_color\n ) {\n throw new Error(\n \"Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color\",\n );\n }\n\n const SQRT2 = Math.sqrt(2);\n\n return (index: number, item: Record) => {\n // SuperSplat data are quantized within chunks with 256 Gsplats each\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error(\"Missing PLY chunk\");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b,\n } = chunk;\n const { packed_position, packed_rotation, packed_scale, packed_color } =\n item as Record;\n\n const x =\n (((packed_position >>> 21) & 2047) / 2047) * (max_x - min_x) + min_x;\n const y =\n (((packed_position >>> 11) & 1023) / 1023) * (max_y - min_y) + min_y;\n const z = ((packed_position & 2047) / 2047) * (max_z - min_z) + min_z;\n\n const r0 = (((packed_rotation >>> 20) & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = (((packed_rotation >>> 10) & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1.0 - r0 * r0 - r1 * r1 - r2 * r2));\n\n const rOrder = packed_rotation >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n\n const scaleX = Math.exp(\n (((packed_scale >>> 21) & 2047) / 2047) *\n (max_scale_x - min_scale_x) +\n min_scale_x,\n );\n const scaleY = Math.exp(\n (((packed_scale >>> 11) & 1023) / 1023) *\n (max_scale_y - min_scale_y) +\n min_scale_y,\n );\n const scaleZ = Math.exp(\n ((packed_scale & 2047) / 2047) * (max_scale_z - min_scale_z) +\n min_scale_z,\n );\n\n const r =\n (((packed_color >>> 24) & 255) / 255) *\n ((max_r ?? 1) - (min_r ?? 0)) +\n (min_r ?? 0);\n const g =\n (((packed_color >>> 16) & 255) / 255) *\n ((max_g ?? 1) - (min_g ?? 0)) +\n (min_g ?? 0);\n const b =\n (((packed_color >>> 8) & 255) / 255) * ((max_b ?? 1) - (min_b ?? 0)) +\n (min_b ?? 0);\n const opacity = (packed_color & 255) / 255;\n\n splatCallback(\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n };\n }\n\n const elementCallback = (element: PlyElement) => {\n if (element.name === \"chunk\") {\n // \"chunk\" could conceivably be used for other formats, and we would\n // ideally check for the comment: Generated by SuperSplat 2.*\n // but gsplat also outputs this format without such a comment.\n // In order to support both, let's assume a \"chunk\" element should\n // be interpreted as this format.\n return initSuperSplat(element);\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n\n if (element.name !== \"vertex\") {\n return null;\n }\n\n const {\n x,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha,\n } = element.properties;\n\n if (!x || !y || !z) {\n throw new Error(\"Missing PLY properties: x, y, z\");\n }\n // Pure point cloud PLY files have no scales or rotations\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n // Quantization scale factor for argb values\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n\n numSh = getNumSh(element.properties);\n prepareSh();\n\n return (index: number, item: Record) => {\n const scaleX = hasScales\n ? Math.exp(item.scale_0 as number)\n : PlyReader.defaultPointScale;\n const scaleY = hasScales\n ? Math.exp(item.scale_1 as number)\n : PlyReader.defaultPointScale;\n const scaleZ = hasScales\n ? Math.exp(item.scale_2 as number)\n : PlyReader.defaultPointScale;\n\n const quatX = hasRots ? (item.rot_1 as number) : 0;\n const quatY = hasRots ? (item.rot_2 as number) : 0;\n const quatZ = hasRots ? (item.rot_3 as number) : 0;\n const quatW = hasRots ? (item.rot_0 as number) : 1;\n\n const op =\n opacity != null\n ? 1.0 / (1.0 + Math.exp(-item.opacity as number))\n : alpha != null\n ? (item.alpha as number) / alphaDiv\n : 1.0;\n const r =\n f_dc_0 != null\n ? (item.f_dc_0 as number) * SH_C0 + 0.5\n : red != null\n ? (item.red as number) / redDiv\n : 1.0;\n const g =\n f_dc_1 != null\n ? (item.f_dc_1 as number) * SH_C0 + 0.5\n : green != null\n ? (item.green as number) / greenDiv\n : 1.0;\n const b =\n f_dc_2 != null\n ? (item.f_dc_2 as number) * SH_C0 + 0.5\n : blue != null\n ? (item.blue as number) / blueDiv\n : 1.0;\n\n splatCallback(\n index,\n item.x as number,\n item.y as number,\n item.z as number,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b,\n );\n\n if (shCallback && sh1) {\n const sh = item.f_rest as number[];\n if (sh1) {\n for (let i = 0; i < sh1Props.length; i++) {\n sh1[i] = sh[sh1Props[i]];\n }\n }\n if (sh2) {\n for (let i = 0; i < sh2Props.length; i++) {\n sh2[i] = sh[sh2Props[i]];\n }\n }\n if (sh3) {\n for (let i = 0; i < sh3Props.length; i++) {\n sh3[i] = sh[sh3Props[i]];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n\n this.parseData(elementCallback);\n }\n\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba: Uint8Array) {\n // Go through the entire binary data of the PLY file, starting at offset 0\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error(\"No parsed data\");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error(\"Invalid RGBA array length\");\n }\n\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n\n let rgbaOffset = 0;\n const isVertex = elementName === \"vertex\";\n if (isVertex) {\n for (const name of [\"opacity\", \"f_dc_0\", \"f_dc_1\", \"f_dc_2\"]) {\n if (!properties[name] || properties[name].type !== \"float\") {\n throw new Error(`Can't injectRgba due to property: ${name}`);\n }\n }\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (\n propertyName === \"f_dc_0\" ||\n propertyName === \"f_dc_1\" ||\n propertyName === \"f_dc_2\"\n ) {\n const component = Number.parseInt(\n propertyName.slice(\"f_dc_\".length),\n );\n parsers.push(() => {\n // Inject DC coefficients\n const value =\n (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n } else if (propertyName === \"opacity\") {\n parsers.push(() => {\n // Inject opacity sigmoid, clamped to [-100, 100]\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1.0 / (rgba[rgbaOffset + 3] / 255) - 1.0),\n ),\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value,\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n this.littleEndian,\n );\n offset += FIELD_BYTES[property.countType as PlyPropertyType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n\n for (let index = 0; index < count; index++) {\n // Go through all the data and field parsers to compute offset\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n}\n\nexport const SH_C0 = 0.28209479177387814;\n\ntype FieldParser = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n) => number;\ntype FieldSetter = (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n) => void;\n\nconst PARSE_FIELD: Record = {\n char: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt8(offset);\n },\n uchar: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint8(offset);\n },\n short: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data: DataView, offset: number, littleEndian: boolean) => {\n return data.getFloat64(offset, littleEndian);\n },\n};\n\nconst SET_FIELD: Record = {\n char: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt8(offset, value);\n },\n uchar: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint8(offset, value);\n },\n short: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (\n data: DataView,\n offset: number,\n littleEndian: boolean,\n value: number,\n ) => {\n data.setFloat64(offset, value, littleEndian);\n },\n};\n\nconst FIELD_BYTES: Record = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8,\n};\n\nconst FIELD_SCALE: Record = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1,\n};\n\nconst NUM_F_REST_TO_NUM_SH: Record = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3,\n};\nconst NUM_SH_TO_NUM_F_REST: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nconst F_REST_REGEX = /^f_rest_([0-9]{1,2})$/;\n\nfunction createEmptyItem(\n properties: Record,\n): Record {\n const item: Record = {};\n for (const [propertyName, property] of Object.entries(properties)) {\n // Treat f_rest properties as a single array for performance\n if (F_REST_REGEX.test(propertyName)) {\n item.f_rest = new Array(getNumSh(properties));\n } else {\n item[propertyName] = property.isList ? [] : 0;\n }\n }\n return item;\n}\n\nfunction createParseFn(\n properties: Record,\n littleEndian: boolean,\n) {\n if (USE_COMPILED_PARSER_FUNCTION && safeToCompile(properties)) {\n return createCompiledParserFn(properties, littleEndian);\n }\n return createDynamicParserFn(properties, littleEndian);\n}\n\n// Detect if unsafe eval is allowed in the current execution context\nconst UNSAFE_EVAL_ALLOWED = (() => {\n try {\n new Function(\"return 42;\");\n } catch (e) {\n return false;\n }\n return true;\n})();\nconst PROPERTY_NAME_REGEX = /^[a-zA-Z0-9_]+$/;\n\nfunction safeToCompile(properties: Record) {\n if (!UNSAFE_EVAL_ALLOWED) {\n return false;\n }\n\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!PROPERTY_NAME_REGEX.test(propertyName)) {\n return false;\n }\n\n if (\n property.isList &&\n !PLY_PROPERTY_TYPES.includes(property.countType as PlyPropertyType)\n ) {\n return false;\n }\n\n if (!PLY_PROPERTY_TYPES.includes(property.type)) {\n return false;\n }\n }\n return true;\n}\n\nfunction createCompiledParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct the parser function source.\n const parserSrc: string[] = [\"let list;\"];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parserSrc.push(/*js*/ `\n item.f_rest[${fRestIndex}] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else if (!property.isList) {\n parserSrc.push(/*js*/ `\n item['${propertyName}'] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n `);\n } else {\n // Property is a list, so parse the count first\n parserSrc.push(/*js*/ `\n list = item['${propertyName}'];\n list.length = PARSE_FIELD['${property.countType}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.countType as PlyPropertyType]};\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD['${property.type}'](data, offset, ${littleEndian});\n offset += ${FIELD_BYTES[property.type]};\n }\n `);\n }\n }\n parserSrc.push(\"return offset;\");\n\n const fn = new Function(\n \"data\",\n \"offset\",\n \"item\",\n \"PARSE_FIELD\",\n parserSrc.join(\"\\n\"),\n );\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => fn(data, offset, item, PARSE_FIELD);\n}\n\nfunction createDynamicParserFn(\n properties: Record,\n littleEndian: boolean,\n) {\n // Construct an array of parser function to parse each property in an item\n const parsers: Array<\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => number\n > = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n const fRestMatch = propertyName.match(F_REST_REGEX);\n if (fRestMatch) {\n const fRestIndex = +fRestMatch[1];\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n (item.f_rest as number[])[fRestIndex] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else if (!property.isList) {\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n littleEndian,\n );\n return offset + FIELD_BYTES[property.type];\n },\n );\n } else {\n // Property is a list, so parse the count first\n parsers.push(\n (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n const list = item[propertyName] as number[];\n list.length = PARSE_FIELD[property.countType as PlyPropertyType](\n data,\n offset,\n littleEndian,\n );\n let currentOffset =\n offset + FIELD_BYTES[property.countType as PlyPropertyType];\n for (let i = 0; i < list.length; i++) {\n list[i] = PARSE_FIELD[property.type](\n data,\n currentOffset,\n littleEndian,\n );\n currentOffset += FIELD_BYTES[property.type];\n }\n return currentOffset;\n },\n );\n }\n }\n\n return (\n data: DataView,\n offset: number,\n item: Record,\n ) => {\n let currentOffset = offset;\n for (let parserIndex = 0; parserIndex < parsers.length; parserIndex++) {\n currentOffset = parsers[parserIndex](data, currentOffset, item);\n }\n return currentOffset;\n };\n}\n\nfunction getNumSh(properties: Record) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n}\n\ntype SSChunk = {\n min_x: number;\n min_y: number;\n min_z: number;\n max_x: number;\n max_y: number;\n max_z: number;\n min_scale_x: number;\n min_scale_y: number;\n min_scale_z: number;\n max_scale_x: number;\n max_scale_y: number;\n max_scale_z: number;\n min_r?: number;\n min_g?: number;\n min_b?: number;\n max_r?: number;\n max_g?: number;\n max_b?: number;\n};\n","import type { SplatEncoding } from \"./defines\";\nimport { computeMaxSplats, setPackedSplat } from \"./utils\";\n\nexport function decodeAntiSplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n) {\n const numSplats = Math.floor(fileBytes.length / 32); // 32 bytes per splat\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error(\"Invalid .splat file size\");\n }\n initNumSplats(numSplats);\n\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i = 0; i < numSplats; ++i) {\n const i32 = i * 32;\n const i8 = i * 8;\n const x = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i32 + 24] / 255;\n const g = fileBytes[i32 + 25] / 255;\n const b = fileBytes[i32 + 26] / 255;\n const opacity = fileBytes[i32 + 27] / 255;\n const quatW = (fileBytes[i32 + 28] - 128) / 128;\n const quatX = (fileBytes[i32 + 29] - 128) / 128;\n const quatY = (fileBytes[i32 + 30] - 128) / 128;\n const quatZ = (fileBytes[i32 + 31] - 128) / 128;\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n }\n}\n\nexport function unpackAntiSplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n} {\n let numSplats = 0;\n let maxSplats = 0;\n let packedArray = new Uint32Array(0);\n decodeAntiSplat(\n fileBytes,\n (cbNumSplats) => {\n numSplats = cbNumSplats;\n maxSplats = computeMaxSplats(numSplats);\n packedArray = new Uint32Array(maxSplats * 4);\n },\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n setPackedSplat(\n packedArray,\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n },\n );\n return { packedArray, numSplats };\n}\n","import type { SplatEncoding } from \"./defines\";\nimport {\n computeMaxSplats,\n encodeSh1Rgb,\n encodeSh2Rgb,\n encodeSh3Rgb,\n fromHalf,\n setPackedSplat,\n} from \"./utils\";\n\ntype KsplatCompression = {\n bytesPerCenter: number;\n bytesPerScale: number;\n bytesPerRotation: number;\n bytesPerColor: number;\n bytesPerSphericalHarmonicsComponent: number;\n scaleOffsetBytes: number;\n rotationOffsetBytes: number;\n colorOffsetBytes: number;\n sphericalHarmonicsOffsetBytes: number;\n scaleRange: number;\n};\n\nconst KSPLAT_COMPRESSION: Record = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1,\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767,\n },\n};\n\nconst KSPLAT_SH_DEGREE_TO_COMPONENTS: Record = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45,\n};\n\nexport function decodeKsplat(\n fileBytes: Uint8Array,\n initNumSplats: (numSplats: number) => void,\n splatCallback: (\n index: number,\n x: number,\n y: number,\n z: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n opacity: number,\n r: number,\n g: number,\n b: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n) {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n initNumSplats(numSplats);\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n splatCallback(\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n );\n\n if (sphericalHarmonicsDegree >= 1 && sh1) {\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n if (sh2) {\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n }\n if (sh3) {\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n sectionBase += storageSizeBytes;\n }\n}\n\nexport function unpackKsplat(\n fileBytes: Uint8Array,\n splatEncoding: SplatEncoding,\n): {\n packedArray: Uint32Array;\n numSplats: number;\n extra: Record;\n} {\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`,\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n // const sectionCount = header.getUint32(8, true);\n // const maxSplatCount = header.getUint32(12, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n // const sceneCenterX = header.getFloat32(24, true);\n // const sceneCenterY = header.getFloat32(28, true);\n // const sceneCenterZ = header.getFloat32(32, true);\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra: Record = {};\n\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n\n for (let section = 0; section < maxSectionCount; ++section) {\n const section = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n\n const sectionSplatCount = section.getUint32(0, true);\n const sectionMaxSplatCount = section.getUint32(4, true);\n const bucketSize = section.getUint32(8, true);\n const bucketCount = section.getUint32(12, true);\n const bucketBlockSize = section.getFloat32(16, true);\n const bucketStorageSizeBytes = section.getUint16(20, true);\n const compressionScaleRange =\n (section.getUint32(24, true) ||\n KSPLAT_COMPRESSION[compressionLevel]?.scaleRange) ??\n 1;\n const fullBucketCount = section.getUint32(32, true);\n const fullBucketSplats = fullBucketCount * bucketSize;\n const partiallyFilledBucketCount = section.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes =\n bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section.getUint16(40, true);\n const shComponents =\n KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes,\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat =\n bytesPerCenter +\n bytesPerScale +\n bytesPerRotation +\n bytesPerColor +\n shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes =\n splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9, 14, 19, 10, 15, 20, 11, 16, 21, 12, 17, 22, 13, 18, 23,\n ];\n const sh3Index = [\n 24, 31, 38, 25, 32, 39, 26, 33, 40, 27, 34, 41, 28, 35, 42, 29, 36, 43,\n 30, 37, 44,\n ];\n const sh1 =\n sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : undefined;\n const sh2 =\n sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 =\n sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes,\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3,\n );\n const partiallyFilledBucketLengths = new Uint32Array(\n fileBytes.buffer,\n sectionBase,\n partiallyFilledBucketCount,\n );\n\n function getSh(splatOffset: number, component: number) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true,\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true,\n ),\n );\n }\n const t =\n data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) /\n 255;\n return (\n minSphericalHarmonicsCoeff +\n t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff)\n );\n }\n\n let partialBucketIndex = fullBucketCount;\n let partialBucketBase = fullBucketSplats;\n\n for (let i = 0; i < sectionSplatCount; ++i) {\n const splatOffset = i * bytesPerSplat;\n\n let bucketIndex: number;\n if (i < fullBucketSplats) {\n bucketIndex = Math.floor(i / bucketSize);\n } else {\n const bucketLength =\n partiallyFilledBucketLengths[partialBucketIndex - fullBucketCount];\n if (i >= partialBucketBase + bucketLength) {\n partialBucketIndex += 1;\n partialBucketBase += bucketLength;\n }\n bucketIndex = partialBucketIndex;\n }\n\n const x =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 0, true)\n : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 0];\n const y =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 4, true)\n : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 1];\n const z =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + 8, true)\n : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) *\n compressionScaleFactor +\n bucketArray[3 * bucketIndex + 2];\n\n const scaleX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true)\n : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n\n const quatW =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true),\n );\n const quatX =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true),\n );\n const quatY =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true),\n );\n const quatZ =\n compressionLevel === 0\n ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true)\n : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true),\n );\n\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n\n setPackedSplat(\n packedArray,\n i,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n splatEncoding,\n );\n\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i, key] of sh1Index.entries()) {\n sh1[i] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1 as Uint32Array, i, sh1, splatEncoding);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh2Index.entries()) {\n sh2[i] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2 as Uint32Array, i, sh2, splatEncoding);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i, key] of sh3Index.entries()) {\n sh3[i] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3 as Uint32Array, i, sh3, splatEncoding);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n}\n","import * as THREE from \"three\";\nimport {\n SplatData,\n type TranscodeSpzInput,\n getSplatFileType,\n getSplatFileTypeFromPath,\n} from \"./SplatLoader\";\nimport { GunzipReader, fromHalf, normalize } from \"./utils\";\n\nimport { decodeAntiSplat } from \"./antisplat\";\nimport { SplatFileType } from \"./defines\";\nimport { decodeKsplat } from \"./ksplat\";\nimport { PlyReader } from \"./ply\";\n\n// SPZ file format reader\n\nexport class SpzReader {\n fileBytes: Uint8Array;\n reader: GunzipReader;\n\n version = -1;\n numSplats = 0;\n shDegree = 0;\n fractionalBits = 0;\n flags = 0;\n flagAntiAlias = false;\n flagLod = false;\n reserved = 0;\n headerParsed = false;\n parsed = false;\n\n constructor({ fileBytes }: { fileBytes: Uint8Array | ArrayBuffer }) {\n this.fileBytes =\n fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({\n fileBytes: this.fileBytes as Uint8Array,\n });\n }\n\n async parseHeader() {\n if (this.headerParsed) {\n throw new Error(\"SPZ file header already parsed\");\n }\n\n const header = new DataView((await this.reader.read(16)).buffer);\n if (header.getUint32(0, true) !== 0x5053474e) {\n throw new Error(\"Invalid SPZ file\");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 3) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 0x01) !== 0;\n this.flagLod = (this.flags & 0x80) !== 0;\n this.reserved = header.getUint8(15);\n this.headerParsed = true;\n this.parsed = false;\n }\n\n async parseSplats(\n centerCallback?: (index: number, x: number, y: number, z: number) => void,\n alphaCallback?: (index: number, alpha: number) => void,\n rgbCallback?: (index: number, r: number, g: number, b: number) => void,\n scalesCallback?: (\n index: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number,\n ) => void,\n quatCallback?: (\n index: number,\n quatX: number,\n quatY: number,\n quatZ: number,\n quatW: number,\n ) => void,\n shCallback?: (\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) => void,\n {\n childCounts,\n childStarts,\n }: {\n childCounts?: (index: number, count: number) => void;\n childStarts?: (index: number, start: number) => void;\n } = {},\n ) {\n if (!this.headerParsed) {\n throw new Error(\"SPZ file header must be parsed first\");\n }\n if (this.parsed) {\n throw new Error(\"SPZ file already parsed\");\n }\n this.parsed = true;\n\n if (this.version === 1) {\n // float16 centers\n const centerBytes = await this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const x = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback?.(i, x, y, z);\n }\n } else if (this.version === 2 || this.version === 3) {\n // 24-bit fixed-point centers\n const fixed = 1 << this.fractionalBits;\n const centerBytes = await this.reader.read(this.numSplats * 3 * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i9 = i * 9;\n const x =\n (((centerBytes[i9 + 2] << 24) |\n (centerBytes[i9 + 1] << 16) |\n (centerBytes[i9] << 8)) >>\n 8) /\n fixed;\n const y =\n (((centerBytes[i9 + 5] << 24) |\n (centerBytes[i9 + 4] << 16) |\n (centerBytes[i9 + 3] << 8)) >>\n 8) /\n fixed;\n const z =\n (((centerBytes[i9 + 8] << 24) |\n (centerBytes[i9 + 7] << 16) |\n (centerBytes[i9 + 6] << 8)) >>\n 8) /\n fixed;\n centerCallback?.(i, x, y, z);\n }\n } else {\n throw new Error(\"Unreachable\");\n }\n\n {\n const bytes = await this.reader.read(this.numSplats);\n for (let i = 0; i < this.numSplats; i++) {\n alphaCallback?.(i, bytes[i] / 255);\n }\n }\n {\n const rgbBytes = await this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback?.(i, r, g, b);\n }\n }\n {\n const scalesBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback?.(i, scaleX, scaleY, scaleZ);\n }\n }\n if (this.version === 3) {\n // Version 3 uses a trick called \"smallest three\" to compress the rotation quaternions\n // achieving better precision. \"Optimizing orientation\" section at https://gafferongames.com/post/snapshot_compression/ A quaternion length must be 1: x^2+y^2+z^2+w^2 = 1\n // We can drop one component and reconstruct it with the identity above.\n // Largest component is dropped for best numerical precision.\n // Quaternion stored in 32 bits\n // 10 bits singed integer for each of the 3 components + 2 bits indicating the index of dropped component.\n // vs 8 bits for each component uncompressed (spz version < 3)\n // Max Value after extracting largest component v is another component v\n // (v,v,0,0)\n // v^2 + v^2 = 1\n // v = 1 / sqrt(2);\n const maxValue = 1 / Math.sqrt(2); // 0.7071\n const quatBytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 4;\n const quaternion = [0, 0, 0, 0];\n const values = [\n quatBytes[i3],\n quatBytes[i3 + 1],\n quatBytes[i3 + 2],\n quatBytes[i3 + 3],\n ];\n // all values are packed in 32 bits (10 per each of 3 components + 2 bits of index of larged value)\n const combinedValues =\n values[0] + (values[1] << 8) + (values[2] << 16) + (values[3] << 24);\n // each component value is 9 bits + sign (1 bit)\n const valueMask = (1 << 9) - 1;\n // extract index of the largest element. 2 top bits.\n const largestIndex = combinedValues >>> 30;\n let remainingValues = combinedValues;\n let sumSquares = 0;\n\n for (let i = 3; i >= 0; --i) {\n if (i !== largestIndex) {\n // extract current value and sign.\n const value = remainingValues & valueMask;\n const sign = (remainingValues >>> 9) & 0x1;\n // each value is represented as 10 bits. Shift to next one.\n remainingValues = remainingValues >>> 10;\n // convert to range [0,1] and then to [0, 0.7071]\n quaternion[i] = maxValue * (value / valueMask);\n // apply sign.\n quaternion[i] = sign === 0 ? quaternion[i] : -quaternion[i];\n // accumulate the sum of squares\n sumSquares += quaternion[i] * quaternion[i];\n }\n }\n\n // quartenion length must be 1 (x^2+y^2+z^2+w^2 = 1)\n // so can reconstruct largest component from the other 3.\n // w = sqrt(1 - x^2 - y^2 - z^2);\n const square = 1 - sumSquares;\n quaternion[largestIndex] = Math.sqrt(Math.max(square, 0));\n\n quatCallback?.(\n i,\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n }\n } else {\n const quatBytes = await this.reader.read(this.numSplats * 3);\n for (let i = 0; i < this.numSplats; i++) {\n const i3 = i * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ),\n );\n quatCallback?.(i, quatX, quatY, quatZ, quatW);\n }\n }\n\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : undefined;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : undefined;\n const shBytes = await this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3,\n );\n\n let offset = 0;\n for (let i = 0; i < this.numSplats; i++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback?.(i, sh1, sh2, sh3);\n }\n }\n if (this.flagLod) {\n let bytes = await this.reader.read(this.numSplats * 2);\n for (let i = 0; i < this.numSplats; i++) {\n const i2 = i * 2;\n const count = bytes[i2] + (bytes[i2 + 1] << 8);\n childCounts?.(i, count);\n }\n\n bytes = await this.reader.read(this.numSplats * 4);\n for (let i = 0; i < this.numSplats; i++) {\n const i4 = i * 4;\n const start =\n bytes[i4] +\n (bytes[i4 + 1] << 8) +\n (bytes[i4 + 2] << 16) +\n (bytes[i4 + 3] << 24);\n childStarts?.(i, start);\n }\n }\n }\n}\n\nconst SH_DEGREE_TO_VECS: Record = { 1: 3, 2: 8, 3: 15 };\nconst SH_C0 = 0.28209479177387814;\n\nexport const SPZ_MAGIC = 0x5053474e; // NGSP = Niantic gaussian splat\nexport const SPZ_VERSION = 3;\nexport const FLAG_ANTIALIASED = 0x1;\n\nexport class SpzWriter {\n buffer: ArrayBuffer;\n view: DataView;\n numSplats: number;\n shDegree: number;\n fractionalBits: number;\n fraction: number;\n flagAntiAlias: boolean;\n clippedCount = 0;\n\n constructor({\n numSplats,\n shDegree,\n fractionalBits = 12,\n flagAntiAlias = true,\n }: {\n numSplats: number;\n shDegree: number;\n fractionalBits?: number;\n flagAntiAlias?: boolean;\n }) {\n const splatSize =\n 9 + // Position\n 1 + // Opacity\n 3 + // Scale\n 3 + // DC-rgb\n 4 + // Rotation\n (shDegree >= 1 ? 9 : 0) +\n (shDegree >= 2 ? 15 : 0) +\n (shDegree >= 3 ? 21 : 0);\n const bufferSize = 16 + numSplats * splatSize;\n this.buffer = new ArrayBuffer(bufferSize);\n this.view = new DataView(this.buffer);\n\n this.view.setUint32(0, SPZ_MAGIC, true); // NGSP\n this.view.setUint32(4, SPZ_VERSION, true);\n this.view.setUint32(8, numSplats, true);\n this.view.setUint8(12, shDegree);\n this.view.setUint8(13, fractionalBits);\n this.view.setUint8(14, flagAntiAlias ? FLAG_ANTIALIASED : 0);\n this.view.setUint8(15, 0); // Reserved\n\n this.numSplats = numSplats;\n this.shDegree = shDegree;\n this.fractionalBits = fractionalBits;\n this.fraction = 1 << fractionalBits;\n this.flagAntiAlias = flagAntiAlias;\n }\n\n setCenter(index: number, x: number, y: number, z: number) {\n // Divide by this.fraction and round to nearest integer,\n // then write as 3-bytes per x then y then z.\n const xRounded = Math.round(x * this.fraction);\n const xInt = Math.max(-0x7fffff, Math.min(0x7fffff, xRounded));\n const yRounded = Math.round(y * this.fraction);\n const yInt = Math.max(-0x7fffff, Math.min(0x7fffff, yRounded));\n const zRounded = Math.round(z * this.fraction);\n const zInt = Math.max(-0x7fffff, Math.min(0x7fffff, zRounded));\n const clipped = xRounded !== xInt || yRounded !== yInt || zRounded !== zInt;\n if (clipped) {\n this.clippedCount += 1;\n // if (this.clippedCount < 10) {\n // // Write x y z also in hex\n // console.log(`Clipped ${index}: ${x}, ${y}, ${z} (0x${x.toString(16)}, 0x${y.toString(16)}, 0x${z.toString(16)}) -> ${xRounded}, ${yRounded}, ${zRounded} (0x${xRounded.toString(16)}, 0x${yRounded.toString(16)}, 0x${zRounded.toString(16)}) -> ${xInt}, ${yInt}, ${zInt} (0x${xInt.toString(16)}, 0x${yInt.toString(16)}, 0x${zInt.toString(16)})`);\n // }\n }\n const i9 = index * 9;\n const base = 16 + i9;\n this.view.setUint8(base, xInt & 0xff);\n this.view.setUint8(base + 1, (xInt >> 8) & 0xff);\n this.view.setUint8(base + 2, (xInt >> 16) & 0xff);\n this.view.setUint8(base + 3, yInt & 0xff);\n this.view.setUint8(base + 4, (yInt >> 8) & 0xff);\n this.view.setUint8(base + 5, (yInt >> 16) & 0xff);\n this.view.setUint8(base + 6, zInt & 0xff);\n this.view.setUint8(base + 7, (zInt >> 8) & 0xff);\n this.view.setUint8(base + 8, (zInt >> 16) & 0xff);\n }\n\n setAlpha(index: number, alpha: number) {\n const base = 16 + this.numSplats * 9 + index;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round(alpha * 255))),\n );\n }\n\n static scaleRgb(r: number) {\n const v = ((r - 0.5) / (SH_C0 / 0.15) + 0.5) * 255;\n return Math.max(0, Math.min(255, Math.round(v)));\n }\n\n setRgb(index: number, r: number, g: number, b: number) {\n const base = 16 + this.numSplats * 10 + index * 3;\n this.view.setUint8(base, SpzWriter.scaleRgb(r));\n this.view.setUint8(base + 1, SpzWriter.scaleRgb(g));\n this.view.setUint8(base + 2, SpzWriter.scaleRgb(b));\n }\n\n setScale(index: number, scaleX: number, scaleY: number, scaleZ: number) {\n const base = 16 + this.numSplats * 13 + index * 3;\n this.view.setUint8(\n base,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleX) + 10) * 16))),\n );\n this.view.setUint8(\n base + 1,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleY) + 10) * 16))),\n );\n this.view.setUint8(\n base + 2,\n Math.max(0, Math.min(255, Math.round((Math.log(scaleZ) + 10) * 16))),\n );\n }\n\n setQuat(\n index: number,\n ...q: [number, number, number, number] // x, y, z, w\n ) {\n const base = 16 + this.numSplats * 16 + index * 4;\n\n const quat = normalize(q);\n\n // Find largest component\n let iLargest = 0;\n for (let i = 1; i < 4; ++i) {\n if (Math.abs(quat[i]) > Math.abs(quat[iLargest])) {\n iLargest = i;\n }\n }\n\n // Since -quat represents the same rotation as quat, transform the quaternion so the largest element\n // is positive. This avoids having to send its sign bit.\n const negate = quat[iLargest] < 0 ? 1 : 0;\n\n // Do compression using sign bit and 9-bit precision per element.\n let comp = iLargest;\n for (let i = 0; i < 4; ++i) {\n if (i !== iLargest) {\n const negbit = (quat[i] < 0 ? 1 : 0) ^ negate;\n const mag = Math.floor(\n ((1 << 9) - 1) * (Math.abs(quat[i]) / Math.SQRT1_2) + 0.5,\n );\n comp = (comp << 10) | (negbit << 9) | mag;\n }\n }\n\n this.view.setUint8(base, comp & 0xff);\n this.view.setUint8(base + 1, (comp >> 8) & 0xff);\n this.view.setUint8(base + 2, (comp >> 16) & 0xff);\n this.view.setUint8(base + 3, (comp >>> 24) & 0xff);\n }\n\n static quantizeSh(sh: number, bits: number) {\n const value = Math.round(sh * 128) + 128;\n const bucketSize = 1 << (8 - bits);\n const quantized =\n Math.floor((value + bucketSize / 2) / bucketSize) * bucketSize;\n return Math.max(0, Math.min(255, quantized));\n }\n\n setSh(\n index: number,\n sh1: Float32Array,\n sh2?: Float32Array,\n sh3?: Float32Array,\n ) {\n const shVecs = SH_DEGREE_TO_VECS[this.shDegree] || 0;\n const base1 = 16 + this.numSplats * 20 + index * shVecs * 3;\n for (let j = 0; j < 9; ++j) {\n this.view.setUint8(base1 + j, SpzWriter.quantizeSh(sh1[j], 5));\n }\n if (sh2) {\n const base2 = base1 + 9;\n for (let j = 0; j < 15; ++j) {\n this.view.setUint8(base2 + j, SpzWriter.quantizeSh(sh2[j], 4));\n }\n if (sh3) {\n const base3 = base2 + 15;\n for (let j = 0; j < 21; ++j) {\n this.view.setUint8(base3 + j, SpzWriter.quantizeSh(sh3[j], 4));\n }\n }\n }\n }\n\n async finalize(): Promise {\n const input = new Uint8Array(this.buffer);\n const stream = new ReadableStream({\n async start(controller) {\n controller.enqueue(input);\n controller.close();\n },\n });\n const compressed = stream.pipeThrough(new CompressionStream(\"gzip\"));\n const response = new Response(compressed);\n const buffer = await response.arrayBuffer();\n console.log(\n \"Compressed\",\n input.length,\n \"bytes to\",\n buffer.byteLength,\n \"bytes\",\n );\n return new Uint8Array(buffer);\n }\n}\n\nexport async function transcodeSpz(input: TranscodeSpzInput) {\n const splats = new SplatData();\n const {\n inputs,\n clipXyz,\n maxSh,\n fractionalBits = 12,\n opacityThreshold,\n } = input;\n for (const input of inputs) {\n const scale = input.transform?.scale ?? 1;\n const quaternion = new THREE.Quaternion().fromArray(\n input.transform?.quaternion ?? [0, 0, 0, 1],\n );\n const translate = new THREE.Vector3().fromArray(\n input.transform?.translate ?? [0, 0, 0],\n );\n const clip = clipXyz\n ? new THREE.Box3(\n new THREE.Vector3().fromArray(clipXyz.min),\n new THREE.Vector3().fromArray(clipXyz.max),\n )\n : undefined;\n\n function transformPos(pos: THREE.Vector3) {\n pos.multiplyScalar(scale);\n pos.applyQuaternion(quaternion);\n pos.add(translate);\n return pos;\n }\n\n function transformScales(scales: THREE.Vector3) {\n scales.multiplyScalar(scale);\n return scales;\n }\n\n function transformQuaternion(quat: THREE.Quaternion) {\n quat.premultiply(quaternion);\n return quat;\n }\n\n function withinClip(p: THREE.Vector3) {\n return !clip || clip.containsPoint(p);\n }\n\n function withinOpacity(opacity: number) {\n return opacityThreshold !== undefined\n ? opacity >= opacityThreshold\n : true;\n }\n\n let fileType = input.fileType;\n if (!fileType) {\n fileType = getSplatFileType(input.fileBytes);\n if (!fileType && input.pathOrUrl) {\n fileType = getSplatFileTypeFromPath(input.pathOrUrl);\n }\n }\n switch (fileType) {\n case SplatFileType.PLY: {\n const ply = new PlyReader({ fileBytes: input.fileBytes });\n await ply.parseHeader();\n let lastIndex: number | null = null;\n ply.parseSplats(\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (sh1 && lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n }\n if (sh2 && lastIndex !== null) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3 && lastIndex !== null) {\n splats.setSh3(lastIndex, sh3);\n }\n },\n );\n break;\n }\n case SplatFileType.SPZ: {\n const spz = new SpzReader({ fileBytes: input.fileBytes });\n await spz.parseHeader();\n const mapping = new Int32Array(spz.numSplats);\n mapping.fill(-1);\n const centers = new Float32Array(spz.numSplats * 3);\n const center = new THREE.Vector3();\n spz.parseSplats(\n (index, x, y, z) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n centers[index * 3] = center.x;\n centers[index * 3 + 1] = center.y;\n centers[index * 3 + 2] = center.z;\n },\n (index, alpha) => {\n center.fromArray(centers, index * 3);\n if (withinClip(center) && withinOpacity(alpha)) {\n mapping[index] = splats.pushSplat();\n splats.setCenter(mapping[index], center.x, center.y, center.z);\n splats.setOpacity(mapping[index], alpha);\n }\n },\n (index, r, g, b) => {\n if (mapping[index] >= 0) {\n splats.setColor(mapping[index], r, g, b);\n }\n },\n (index, scaleX, scaleY, scaleZ) => {\n if (mapping[index] >= 0) {\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(mapping[index], scales.x, scales.y, scales.z);\n }\n },\n (index, quatX, quatY, quatZ, quatW) => {\n if (mapping[index] >= 0) {\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n mapping[index],\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n }\n },\n (index, sh1, sh2, sh3) => {\n if (mapping[index] >= 0) {\n splats.setSh1(mapping[index], sh1);\n if (sh2) {\n splats.setSh2(mapping[index], sh2);\n }\n if (sh3) {\n splats.setSh3(mapping[index], sh3);\n }\n }\n },\n );\n break;\n }\n case SplatFileType.SPLAT:\n decodeAntiSplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n const index = splats.pushSplat();\n splats.setCenter(index, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(index, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n index,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(index, opacity);\n splats.setColor(index, r, g, b);\n }\n },\n );\n break;\n case SplatFileType.KSPLAT: {\n let lastIndex: number | null = null;\n decodeKsplat(\n input.fileBytes,\n (numSplats) => {},\n (\n index,\n x,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b,\n ) => {\n const center = transformPos(new THREE.Vector3(x, y, z));\n if (withinClip(center) && withinOpacity(opacity)) {\n lastIndex = splats.pushSplat();\n splats.setCenter(lastIndex, center.x, center.y, center.z);\n const scales = transformScales(\n new THREE.Vector3(scaleX, scaleY, scaleZ),\n );\n splats.setScale(lastIndex, scales.x, scales.y, scales.z);\n const quaternion = transformQuaternion(\n new THREE.Quaternion(quatX, quatY, quatZ, quatW),\n );\n splats.setQuaternion(\n lastIndex,\n quaternion.x,\n quaternion.y,\n quaternion.z,\n quaternion.w,\n );\n splats.setOpacity(lastIndex, opacity);\n splats.setColor(lastIndex, r, g, b);\n } else {\n lastIndex = null;\n }\n },\n (index, sh1, sh2, sh3) => {\n if (lastIndex !== null) {\n splats.setSh1(lastIndex, sh1);\n if (sh2) {\n splats.setSh2(lastIndex, sh2);\n }\n if (sh3) {\n splats.setSh3(lastIndex, sh3);\n }\n }\n },\n );\n break;\n }\n default:\n throw new Error(`transcodeSpz not implemented for ${fileType}`);\n }\n }\n\n const shDegree = Math.min(\n maxSh ?? 3,\n splats.sh3 ? 3 : splats.sh2 ? 2 : splats.sh1 ? 1 : 0,\n );\n const spz = new SpzWriter({\n numSplats: splats.numSplats,\n shDegree,\n fractionalBits,\n flagAntiAlias: true,\n });\n\n for (let i = 0; i < splats.numSplats; ++i) {\n const i3 = i * 3;\n const i4 = i * 4;\n spz.setCenter(\n i,\n splats.centers[i3],\n splats.centers[i3 + 1],\n splats.centers[i3 + 2],\n );\n spz.setScale(\n i,\n splats.scales[i3],\n splats.scales[i3 + 1],\n splats.scales[i3 + 2],\n );\n spz.setQuat(\n i,\n splats.quaternions[i4],\n splats.quaternions[i4 + 1],\n splats.quaternions[i4 + 2],\n splats.quaternions[i4 + 3],\n );\n spz.setAlpha(i, splats.opacities[i]);\n spz.setRgb(\n i,\n splats.colors[i3],\n splats.colors[i3 + 1],\n splats.colors[i3 + 2],\n );\n if (splats.sh1 && shDegree >= 1) {\n spz.setSh(\n i,\n splats.sh1.slice(i * 9, (i + 1) * 9),\n shDegree >= 2 && splats.sh2\n ? splats.sh2.slice(i * 15, (i + 1) * 15)\n : undefined,\n shDegree >= 3 && splats.sh3\n ? splats.sh3.slice(i * 21, (i + 1) * 21)\n : undefined,\n );\n }\n }\n\n const spzBytes = await spz.finalize();\n return { fileBytes: spzBytes, clippedCount: spz.clippedCount };\n}\n","import * as THREE from \"three\";\n\n// SplatSkinning is an experimental class that implements dual-quaternion\n// skeletal animation for Gsplats. A skeletal animation system consists\n// of a set of bones, each with a \"rest\" pose that consists of a position\n// and orientation, and a weighting of up to 4 bones for each Gsplat.\n// By moving and rotating the bones you can animate all the Gsplats like\n// your would for a normal 3D animated mesh.\n// Note that the dual-quaternion formulation assumes that mass/volume\n// is conserved through these transformations, which helps avoid common\n// issues with linear blend skinning such as joint collapse or bulging.\n// However, it is not as good a fit for animations that involve explicit\n// deformations, such as cartoon animations.\n\nimport type { SplatMesh } from \"./SplatMesh\";\nimport {\n CovSplat,\n Dyno,\n DynoUniform,\n type DynoVal,\n Gsplat,\n unindent,\n unindentLines,\n} from \"./dyno\";\nimport { getTextureSize, newArray } from \"./utils\";\n\nexport enum SplatSkinningMode {\n DUAL_QUATERNION = \"dual_quaternion\",\n LINEAR_BLEND = \"linear_blend\",\n}\n\nexport type SplatSkinningOptions = {\n // Specifies the SplatMesh that will be animated.\n mesh: SplatMesh;\n // Overrides the number of Gsplats in the mesh that will be animated.\n // (default: mesh.numSplats)\n numSplats?: number;\n // Set the number of bones used to animate the SplatMesh, with a maximum\n // of 256 (in order to compactly encode the bone index). (default: 256)\n numBones?: number;\n // Set the mode of skinning to use.\n // (default: DUAL_QUATERNION)\n mode?: SplatSkinningMode;\n};\n\nexport class SplatSkinning {\n mesh: SplatMesh;\n numSplats: number;\n mode: SplatSkinningMode;\n\n // Store the skinning weights for each Gsplat, composed of a 4-vector\n // of bone indices and weight\n skinData: Uint16Array;\n skinTexture: THREE.DataArrayTexture;\n\n numBones: number;\n boneData: Float32Array;\n boneTexture: THREE.DataTexture;\n\n boneRestQuatPosScale: {\n quat: THREE.Quaternion;\n pos: THREE.Vector3;\n scale: THREE.Vector3;\n }[];\n boneRestInvMats: THREE.Matrix4[];\n\n uniform: DynoUniform;\n\n constructor(options: SplatSkinningOptions) {\n this.mesh = options.mesh;\n this.numSplats = options.numSplats ?? this.mesh.numSplats;\n this.mode = options.mode ?? SplatSkinningMode.DUAL_QUATERNION;\n\n const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);\n this.skinData = new Uint16Array(maxSplats * 4);\n this.skinTexture = new THREE.DataArrayTexture(\n this.skinData,\n width,\n height,\n depth,\n );\n this.skinTexture.format = THREE.RGBAIntegerFormat;\n this.skinTexture.type = THREE.UnsignedShortType;\n this.skinTexture.internalFormat = \"RGBA16UI\";\n this.skinTexture.needsUpdate = true;\n\n this.numBones = options.numBones ?? 256;\n this.boneData = new Float32Array(this.numBones * 16);\n this.boneTexture = new THREE.DataTexture(\n this.boneData,\n 4,\n this.numBones,\n THREE.RGBAFormat,\n THREE.FloatType,\n );\n this.boneTexture.internalFormat = \"RGBA32F\";\n this.boneTexture.needsUpdate = true;\n\n this.boneRestQuatPosScale = newArray(this.numBones, () => ({\n quat: new THREE.Quaternion(),\n pos: new THREE.Vector3(),\n scale: new THREE.Vector3(),\n }));\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats = newArray(this.numBones, () => new THREE.Matrix4());\n } else {\n this.boneRestInvMats = [];\n }\n\n this.uniform = new DynoUniform({\n key: \"skinning\",\n type: GsplatSkinning,\n globals: () => [defineGsplatSkinning],\n value: {\n numSplats: this.numSplats,\n numBones: this.numBones,\n skinTexture: this.skinTexture,\n boneTexture: this.boneTexture,\n },\n });\n }\n\n // Apply the skeletal animation to a Gsplat in a dyno program.\n modify(gsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"Linear blend skinning requires covSplats=true\");\n }\n return applyGsplatSkinning(gsplat, this.uniform);\n }\n\n modifyCov(covsplat: DynoVal): DynoVal {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n return applyCovSplatDQSkinning(covsplat, this.uniform);\n }\n return applyCovSplatLBSkinning(covsplat, this.uniform);\n }\n\n // Set the \"rest\" pose for a bone with position and quaternion orientation.\n setRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(SplatSkinning.UNIT_SCALE);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex]\n .compose(pos, quat, SplatSkinning.UNIT_SCALE)\n .invert();\n }\n\n this.setBoneQuatPos(boneIndex, quat, pos);\n }\n\n getRestQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n }\n\n setRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n this.boneRestQuatPosScale[boneIndex].quat.copy(quat);\n this.boneRestQuatPosScale[boneIndex].pos.copy(pos);\n this.boneRestQuatPosScale[boneIndex].scale.copy(scale);\n\n if (this.mode === SplatSkinningMode.LINEAR_BLEND) {\n this.boneRestInvMats[boneIndex].compose(pos, quat, scale).invert();\n }\n\n this.setBoneQuatPosScale(boneIndex, quat, pos, scale);\n }\n\n getRestQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n quat.copy(this.boneRestQuatPosScale[boneIndex].quat);\n pos.copy(this.boneRestQuatPosScale[boneIndex].pos);\n scale.copy(this.boneRestQuatPosScale[boneIndex].scale);\n }\n\n setRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setRestMat only supported for linear blend skinning\");\n }\n this.boneRestInvMats[boneIndex].copy(matrix).invert();\n this.setBoneMatrix(boneIndex, matrix);\n }\n\n getRestMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"getRestMat only supported for linear blend skinning\");\n }\n matrix.copy(this.boneRestInvMats[boneIndex]).invert();\n }\n\n // Set the \"current\" position and orientation of a bone.\n setBoneQuatPos(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n SplatSkinning.relQuat\n .copy(this.boneRestQuatPosScale[boneIndex].quat)\n .invert();\n SplatSkinning.relPos\n .copy(pos)\n .sub(this.boneRestQuatPosScale[boneIndex].pos);\n SplatSkinning.relQuat.multiply(quat);\n SplatSkinning.dual\n .set(\n SplatSkinning.relPos.x,\n SplatSkinning.relPos.y,\n SplatSkinning.relPos.z,\n 0.0,\n )\n .multiply(SplatSkinning.relQuat);\n\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.relQuat.x;\n this.boneData[i16 + 1] = SplatSkinning.relQuat.y;\n this.boneData[i16 + 2] = SplatSkinning.relQuat.z;\n this.boneData[i16 + 3] = SplatSkinning.relQuat.w;\n this.boneData[i16 + 4] = 0.5 * SplatSkinning.dual.x;\n this.boneData[i16 + 5] = 0.5 * SplatSkinning.dual.y;\n this.boneData[i16 + 6] = 0.5 * SplatSkinning.dual.z;\n this.boneData[i16 + 7] = 0.5 * SplatSkinning.dual.w;\n } else {\n this.setBoneQuatPosScale(boneIndex, quat, pos, SplatSkinning.UNIT_SCALE);\n }\n }\n\n setBoneQuatPosScale(\n boneIndex: number,\n quat: THREE.Quaternion,\n pos: THREE.Vector3,\n scale: THREE.Vector3,\n ) {\n if (this.mode === SplatSkinningMode.DUAL_QUATERNION) {\n throw new Error(\n \"setBoneQuatPosScale only supported for linear blend skinning\",\n );\n }\n\n SplatSkinning.skinMat.compose(pos, quat, scale);\n this.setBoneMatrix(boneIndex, SplatSkinning.skinMat);\n }\n\n setBoneMatrix(boneIndex: number, matrix: THREE.Matrix4) {\n if (this.mode !== SplatSkinningMode.LINEAR_BLEND) {\n throw new Error(\"setBoneMatrix only supported for linear blend skinning\");\n }\n\n SplatSkinning.skinMat.multiplyMatrices(\n this.boneRestInvMats[boneIndex],\n matrix,\n );\n const i16 = boneIndex * 16;\n this.boneData[i16 + 0] = SplatSkinning.skinMat.elements[0];\n this.boneData[i16 + 1] = SplatSkinning.skinMat.elements[1];\n this.boneData[i16 + 2] = SplatSkinning.skinMat.elements[2];\n this.boneData[i16 + 3] = SplatSkinning.skinMat.elements[4];\n this.boneData[i16 + 4] = SplatSkinning.skinMat.elements[5];\n this.boneData[i16 + 5] = SplatSkinning.skinMat.elements[6];\n this.boneData[i16 + 6] = SplatSkinning.skinMat.elements[8];\n this.boneData[i16 + 7] = SplatSkinning.skinMat.elements[9];\n this.boneData[i16 + 8] = SplatSkinning.skinMat.elements[10];\n this.boneData[i16 + 9] = SplatSkinning.skinMat.elements[12];\n this.boneData[i16 + 10] = SplatSkinning.skinMat.elements[13];\n this.boneData[i16 + 11] = SplatSkinning.skinMat.elements[14];\n }\n\n // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,\n // you can set the remaining weights to 0 (and index=0).\n setSplatBones(\n splatIndex: number,\n boneIndices: THREE.Vector4,\n weights: THREE.Vector4,\n ) {\n const i4 = splatIndex * 4;\n this.skinData[i4 + 0] =\n Math.min(255, Math.max(0, Math.round(weights.x * 255.0))) +\n (boneIndices.x << 8);\n this.skinData[i4 + 1] =\n Math.min(255, Math.max(0, Math.round(weights.y * 255.0))) +\n (boneIndices.y << 8);\n this.skinData[i4 + 2] =\n Math.min(255, Math.max(0, Math.round(weights.z * 255.0))) +\n (boneIndices.z << 8);\n this.skinData[i4 + 3] =\n Math.min(255, Math.max(0, Math.round(weights.w * 255.0))) +\n (boneIndices.w << 8);\n }\n\n // Call this to indicate that the bones have changed and the Gsplats need to be\n // re-generated with updated skinning.\n updateBones() {\n this.boneTexture.needsUpdate = true;\n this.mesh.needsUpdate = true;\n }\n\n private static UNIT_SCALE = new THREE.Vector3(1, 1, 1);\n private static relQuat = new THREE.Quaternion();\n private static relPos = new THREE.Vector3();\n private static dual = new THREE.Quaternion();\n private static skinMat = new THREE.Matrix4();\n}\n\n// dyno program definitions for SplatSkinning\n\nexport const GsplatSkinning = { type: \"GsplatSkinning\" } as {\n type: \"GsplatSkinning\";\n};\n\nexport const defineGsplatSkinning = unindent(`\n struct GsplatSkinning {\n int numSplats;\n int numBones;\n usampler2DArray skinTexture;\n sampler2D boneTexture;\n };\n`);\n\nexport const defineApplyGsplatSkinning = unindent(`\n void applyGsplatSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec4 quaternion\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n\n center = quatVec(quat, center) + translate;\n quaternion = quatQuat(quat, quaternion);\n }\n`);\n\nfunction applyGsplatSkinning(\n gsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { gsplat: typeof Gsplat; skinning: typeof GsplatSkinning },\n { gsplat: typeof Gsplat }\n >({\n inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },\n outTypes: { gsplat: Gsplat },\n globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],\n inputs: { gsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { gsplat } = outputs;\n return unindentLines(`\n ${gsplat} = ${inputs.gsplat};\n if (isGsplatActive(${gsplat}.flags)) {\n applyGsplatSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${gsplat}.index, ${gsplat}.center, ${gsplat}.quaternion\n );\n }\n `);\n },\n });\n return dyno.outputs.gsplat;\n}\n\nexport const defineApplyCovSplatDQSkinning = unindent(`\n void applyCovSplatDQSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n vec4 quat = vec4(0.0);\n vec4 dual = vec4(0.0);\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);\n vec4 boneDual = vec4(0.0);\n if (boneIndex < numBones) {\n boneQuat = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n boneDual = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n }\n\n if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {\n // Flip sign if next blend is pointing in the opposite direction\n boneQuat = -boneQuat;\n boneDual = -boneDual;\n }\n quat += weights[i] * boneQuat;\n dual += weights[i] * boneDual;\n }\n }\n\n // Normalize dual quaternion\n float norm = length(quat);\n quat /= norm;\n dual /= norm;\n vec3 translate = vec3(\n 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),\n 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),\n 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)\n );\n mat3 basis = quaternionToMatrix(quat);\n\n center = quatVec(quat, center) + translate;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nexport const defineApplyCovSplatLBSkinning = unindent(`\n void applyCovSplatLBSkinning(\n int numSplats, int numBones,\n usampler2DArray skinTexture, sampler2D boneTexture,\n int splatIndex, inout vec3 center, inout vec3 xxyyzz, inout vec3 xyxzyz\n ) {\n if ((splatIndex < 0) || (splatIndex >= numSplats)) {\n return;\n }\n\n uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);\n\n float weights[4];\n weights[0] = float(skinData.x & 0xffu) / 255.0;\n weights[1] = float(skinData.y & 0xffu) / 255.0;\n weights[2] = float(skinData.z & 0xffu) / 255.0;\n weights[3] = float(skinData.w & 0xffu) / 255.0;\n\n uint boneIndices[4];\n boneIndices[0] = (skinData.x >> 8u) & 0xffu;\n boneIndices[1] = (skinData.y >> 8u) & 0xffu;\n boneIndices[2] = (skinData.z >> 8u) & 0xffu;\n boneIndices[3] = (skinData.w >> 8u) & 0xffu;\n\n mat3 basis = mat3(0.0);\n vec3 offset = vec3(0.0);\n\n for (int i = 0; i < 4; i++) {\n if (weights[i] > 0.0) {\n int boneIndex = int(boneIndices[i]);\n if (boneIndex < numBones) {\n vec4 v0 = texelFetch(boneTexture, ivec2(0, boneIndex), 0);\n vec4 v1 = texelFetch(boneTexture, ivec2(1, boneIndex), 0);\n vec4 v2 = texelFetch(boneTexture, ivec2(2, boneIndex), 0);\n basis += weights[i] * mat3(v0.x, v0.y, v0.z, v0.w, v1.x, v1.y, v1.z, v1.w, v2.x);\n offset += weights[i] * vec3(v2.y, v2.z, v2.w);\n }\n }\n }\n\n center = basis * center + offset;\n\n mat3 cov = mat3(xxyyzz.x, xyxzyz.x, xyxzyz.y, xyxzyz.x, xxyyzz.y, xyxzyz.z, xyxzyz.y, xyxzyz.z, xxyyzz.z);\n cov = basis * cov * transpose(basis);\n xxyyzz = vec3(cov[0][0], cov[1][1], cov[2][2]);\n xyxzyz = vec3(cov[0][1], cov[0][2], cov[1][2]);\n }\n`);\n\nfunction applyCovSplatDQSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatDQSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatDQSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n\nfunction applyCovSplatLBSkinning(\n covsplat: DynoVal,\n skinning: DynoVal,\n): DynoVal {\n const dyno = new Dyno<\n { covsplat: typeof CovSplat; skinning: typeof GsplatSkinning },\n { covsplat: typeof CovSplat }\n >({\n inTypes: { covsplat: CovSplat, skinning: GsplatSkinning },\n outTypes: { covsplat: CovSplat },\n globals: () => [defineGsplatSkinning, defineApplyCovSplatLBSkinning],\n inputs: { covsplat, skinning },\n statements: ({ inputs, outputs }) => {\n const { skinning } = inputs;\n const { covsplat } = outputs;\n return unindentLines(`\n ${covsplat} = ${inputs.covsplat};\n if (isCovSplatActive(${covsplat}.flags)) {\n applyCovSplatLBSkinning(\n ${skinning}.numSplats, ${skinning}.numBones,\n ${skinning}.skinTexture, ${skinning}.boneTexture,\n ${covsplat}.index, ${covsplat}.center, ${covsplat}.xxyyzz, ${covsplat}.xyxzyz\n );\n }\n `);\n },\n });\n return dyno.outputs.covsplat;\n}\n","import * as THREE from \"three\";\nimport { PackedSplats } from \"./PackedSplats\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport function constructGrid({\n // PackedSplats object to add splats to\n splats,\n // min and max box extents of the grid\n extents,\n // step size along each grid axis\n stepSize = 1,\n // spherical radius of each Gsplat\n pointRadius = 0.01,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n pointShadowScale = 2.0,\n // Gsplat opacity\n opacity = 1.0,\n // Gsplat color (THREE.Color) or function to set color for position:\n // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)\n color,\n}: {\n splats: PackedSplats;\n extents: THREE.Box3;\n stepSize?: number;\n pointRadius?: number;\n pointShadowScale?: number;\n opacity?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const EPSILON = 1.0e-6;\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n if (color == null) {\n color = (color, point) =>\n color.set(\n 0.55 + 0.45 * Math.cos(point.x * 1),\n 0.55 + 0.45 * Math.cos(point.y * 1),\n 0.55 + 0.45 * Math.cos(point.z * 1),\n );\n }\n const pointColor = new THREE.Color();\n for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {\n for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {\n for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {\n center.set(x, y, z);\n for (let layer = 0; layer < 2; ++layer) {\n scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));\n if (!layer) {\n pointColor.setScalar(0.0);\n } else if (typeof color === \"function\") {\n color(pointColor, center);\n } else {\n pointColor.copy(color);\n }\n splats.pushSplat(center, scales, quaternion, opacity, pointColor);\n }\n }\n }\n }\n}\n\nexport function constructAxes({\n // PackedSplats object to add splats to\n splats,\n // scale (Gsplat scale along axis)\n scale = 0.25,\n // radius of the axes (Gsplat scale orthogonal to axis)\n axisRadius = 0.0075,\n // relative size of the \"shadow copy\" of each Gsplat placed behind it\n axisShadowScale = 2.0,\n // origins of the axes (default single axis at origin)\n origins = [new THREE.Vector3()],\n}: {\n splats: PackedSplats;\n scale?: number;\n axisRadius?: number;\n axisShadowScale?: number;\n origins?: THREE.Vector3[];\n}) {\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3();\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const color = new THREE.Color();\n const opacity = 1.0;\n for (const origin of origins) {\n for (let axis = 0; axis < 3; ++axis) {\n center.set(\n origin.x + (axis === 0 ? scale : 0),\n origin.y + (axis === 1 ? scale : 0),\n origin.z + (axis === 2 ? scale : 0),\n );\n for (let layer = 0; layer < 2; ++layer) {\n scales.set(\n (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),\n );\n color.setRGB(\n layer === 0 ? 0.0 : axis === 0 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 1 ? 1.0 : 0.0,\n layer === 0 ? 0.0 : axis === 2 ? 1.0 : 0.0,\n );\n splats.pushSplat(center, scales, quaternion, opacity, color);\n }\n }\n }\n}\n\nexport function constructSpherePoints({\n // PackedSplats object to add splats to\n splats,\n // center of the sphere (default: origin)\n origin = new THREE.Vector3(),\n // radius of the sphere\n radius = 1.0,\n // maximum depth of recursion for subdividing the sphere\n // Warning: Gsplat count grows exponentially with depth\n maxDepth = 3,\n // filter function to apply to each point, for example to select\n // points in a certain direction or other function ((THREE.Vector3) => boolean)\n // (default: null)\n filter = null,\n // radius of each oriented Gsplat\n pointRadius = 0.02,\n // flatness of each oriented Gsplat\n pointThickness = 0.001,\n // color of each Gsplat (THREE.Color) or function to set color for point:\n // ((THREE.Color, THREE.Vector3) => void) (default: white)\n color = new THREE.Color(1, 1, 1),\n}: {\n splats: PackedSplats;\n origin?: THREE.Vector3;\n radius?: number;\n maxDepth?: number;\n filter?: ((point: THREE.Vector3) => boolean) | null;\n pointRadius?: number;\n pointThickness?: number;\n color?: THREE.Color | ((color: THREE.Color, point: THREE.Vector3) => void);\n}) {\n const pointsHash: { [key: string]: THREE.Vector3 } = {};\n\n function addPoint(p: THREE.Vector3) {\n if (filter && !filter(p)) {\n return;\n }\n const key = `${p.x},${p.y},${p.z}`;\n if (!pointsHash[key]) {\n pointsHash[key] = p;\n }\n }\n\n function recurse(\n depth: number,\n p0: THREE.Vector3,\n p1: THREE.Vector3,\n p2: THREE.Vector3,\n ) {\n addPoint(p0);\n addPoint(p1);\n addPoint(p2);\n if (depth >= maxDepth) {\n return;\n }\n const p01 = new THREE.Vector3().addVectors(p0, p1).normalize();\n const p12 = new THREE.Vector3().addVectors(p1, p2).normalize();\n const p20 = new THREE.Vector3().addVectors(p2, p0).normalize();\n recurse(depth + 1, p0, p01, p20);\n recurse(depth + 1, p01, p1, p12);\n recurse(depth + 1, p20, p12, p2);\n recurse(depth + 1, p01, p12, p20);\n }\n\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [-1, 1]) {\n const p0 = new THREE.Vector3(x, 0, 0);\n const p1 = new THREE.Vector3(0, y, 0);\n const p2 = new THREE.Vector3(0, 0, z);\n recurse(0, p0, p1, p2);\n }\n }\n }\n\n const points = Object.values(pointsHash);\n const scales = new THREE.Vector3(pointRadius, pointRadius, pointThickness);\n const quaternion = new THREE.Quaternion();\n const pointColor = typeof color === \"function\" ? new THREE.Color() : color;\n for (const point of points) {\n quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, -1), point);\n if (typeof color === \"function\") {\n color(pointColor, point);\n }\n point.multiplyScalar(radius);\n point.add(origin);\n splats.pushSplat(point, scales, quaternion, 1.0, pointColor);\n }\n}\n\nexport function textSplats({\n // text string to display\n text,\n // browser font to render text with (default: \"Arial\")\n font,\n // font size in pixels/Gsplats (default: 32)\n fontSize,\n // SplatMesh.recolor tint assuming white Gsplats (default: white)\n color,\n // Individual Gsplat color (default: white)\n rgb,\n // Gsplat radius (default: 0.8 covers 1-unit spacing well)\n dotRadius,\n // text alignment: \"left\", \"center\", \"right\", \"start\", \"end\" (default: \"start\")\n textAlign,\n // line spacing multiplier, lines delimited by \"\\n\" (default: 1.0)\n lineHeight,\n // Coordinate scale in object-space (default: 1.0)\n objectScale,\n}: {\n text: string;\n font?: string;\n fontSize?: number;\n color?: THREE.Color;\n rgb?: THREE.Color;\n dotRadius?: number;\n textAlign?: \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\n lineHeight?: number;\n objectScale?: number;\n}) {\n font = font ?? \"Arial\";\n fontSize = fontSize ?? 32;\n color = color ?? new THREE.Color(1, 1, 1);\n dotRadius = dotRadius ?? 0.8;\n textAlign = textAlign ?? \"start\";\n lineHeight = lineHeight ?? 1;\n objectScale = objectScale ?? 1;\n const lines = text.split(\"\\n\");\n\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to create canvas context\");\n }\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n const metrics = ctx.measureText(\"\");\n const fontHeight =\n metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n\n let minLeft = Number.POSITIVE_INFINITY;\n let maxRight = Number.NEGATIVE_INFINITY;\n let minTop = Number.POSITIVE_INFINITY;\n let maxBottom = Number.NEGATIVE_INFINITY;\n for (let line = 0; line < lines.length; ++line) {\n const metrics = ctx.measureText(lines[line]);\n const y = fontHeight * lineHeight * line;\n minLeft = Math.min(minLeft, -metrics.actualBoundingBoxLeft);\n maxRight = Math.max(maxRight, metrics.actualBoundingBoxRight);\n minTop = Math.min(minTop, y - metrics.actualBoundingBoxAscent);\n maxBottom = Math.max(maxBottom, y + metrics.actualBoundingBoxDescent);\n }\n const originLeft = Math.floor(minLeft);\n const originTop = Math.floor(minTop);\n const width = Math.ceil(maxRight) - originLeft;\n const height = Math.ceil(maxBottom) - originTop;\n canvas.width = width;\n canvas.height = height;\n\n ctx.font = `${fontSize}px ${font}`;\n ctx.textAlign = textAlign;\n ctx.textBaseline = \"alphabetic\";\n ctx.fillStyle = \"#FFFFFF\";\n for (let i = 0; i < lines.length; ++i) {\n const y = fontHeight * lineHeight * i - originTop;\n ctx.fillText(lines[i], -originLeft, y);\n }\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const rgba = new Uint8Array(imageData.data.buffer);\n const splats = new PackedSplats();\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius * objectScale);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n rgb = rgb ?? new THREE.Color(1, 1, 1);\n\n let offset = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n const a = rgba[offset + 3];\n if (a > 0) {\n const opacity = a / 255;\n center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);\n center.multiplyScalar(objectScale);\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n offset += 4;\n }\n }\n\n const mesh = new SplatMesh({ packedSplats: splats });\n mesh.recolor = color;\n return mesh;\n}\n\nexport function imageSplats({\n // URL of the image to convert to splats (example: `url: \"./image.png\"`)\n url,\n // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)\n dotRadius,\n // Subsampling factor for the image. Higher values reduce resolution,\n // for example 2 will halve the width and height by averaging (default: 1)\n subXY,\n // Optional callback function to modify each Gsplat before it's added.\n // Return null to skip adding the Gsplat, or a number to set the opacity\n // and add the Gsplat with parameter values in the objects center, rgba etc. were\n // passed into the forEachSplat callback. Ending the callback in `return opacity;`\n // will retain the original opacity.\n // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)\n forEachSplat,\n}: {\n url: string;\n dotRadius?: number;\n subXY?: number;\n forEachSplat?: (\n width: number,\n height: number,\n index: number,\n center: THREE.Vector3,\n scales: THREE.Vector3,\n quaternion: THREE.Quaternion,\n opacity: number,\n color: THREE.Color,\n ) => number | null;\n}): SplatMesh {\n dotRadius = dotRadius ?? 0.8;\n subXY = Math.max(1, Math.floor(subXY ?? 1));\n\n return new SplatMesh({\n constructSplats: async (splats) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onerror = reject;\n img.onload = () => {\n const { width, height } = img;\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to create canvas context\"));\n return;\n }\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = \"high\";\n const destWidth = Math.round(width / subXY);\n const destHeight = Math.round(height / subXY);\n ctx.drawImage(img, 0, 0, destWidth, destHeight);\n try {\n const imageData = ctx.getImageData(0, 0, destWidth, destHeight);\n const rgba = new Uint8Array(imageData.data.buffer);\n\n const center = new THREE.Vector3();\n const scales = new THREE.Vector3().setScalar(dotRadius);\n const quaternion = new THREE.Quaternion(0, 0, 0, 1);\n const rgb = new THREE.Color();\n\n let index = 0;\n for (let y = 0; y < destHeight; ++y) {\n for (let x = 0; x < destWidth; ++x) {\n const offset = index * 4;\n const a = rgba[offset + 3];\n if (a > 0) {\n let opacity = a / 255;\n rgb.set(\n rgba[offset + 0] / 255,\n rgba[offset + 1] / 255,\n rgba[offset + 2] / 255,\n );\n center.set(\n x - 0.5 * (destWidth - 1),\n 0.5 * (destHeight - 1) - y,\n 0,\n );\n scales.setScalar(dotRadius);\n quaternion.set(0, 0, 0, 1);\n let push = true;\n if (forEachSplat) {\n const maybeOpacity = forEachSplat(\n destWidth,\n destHeight,\n index,\n center,\n scales,\n quaternion,\n opacity,\n rgb,\n );\n opacity = maybeOpacity ?? opacity;\n push = maybeOpacity !== null;\n }\n if (push) {\n splats.pushSplat(center, scales, quaternion, opacity, rgb);\n }\n }\n index += 1;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n img.src = url;\n });\n },\n });\n}\n","import * as THREE from \"three\";\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n type DynoVal,\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n div,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n floatBitsToInt,\n hashVec3,\n imod,\n mul,\n split,\n sub,\n vec3,\n} from \"../dyno\";\n\nexport function staticBox({\n box,\n cells,\n dotScale,\n color,\n opacity,\n}: {\n box: THREE.Box3;\n cells: THREE.Vector3;\n dotScale: number;\n color?: THREE.Color;\n opacity?: number;\n}) {\n cells.x = Math.max(1, Math.round(cells.x));\n cells.y = Math.max(1, Math.round(cells.y));\n cells.z = Math.max(1, Math.round(cells.z));\n opacity = opacity ?? 1;\n const numSplats = cells.x * cells.y * cells.z;\n const dynoX = dynoConst(\"int\", cells.x);\n const dynoY = dynoConst(\"int\", cells.y);\n const dynoZ = dynoConst(\"int\", cells.z);\n\n const dynoTime = dynoFloat(0);\n const generator = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index is undefined\");\n }\n const cellX = imod(index, dynoX);\n const index2 = div(index, dynoX);\n const cellY = imod(index2, dynoY);\n const cellZ = div(index2, dynoY);\n const cell = combine({\n vectorType: \"ivec3\",\n x: cellX,\n y: cellY,\n z: cellZ,\n });\n\n const intTime = floatBitsToInt(dynoTime);\n const inputs = combine({ vectorType: \"ivec2\", x: index, y: intTime });\n const random = hashVec3(inputs);\n const min = dynoConst(\"vec3\", box.min);\n const max = dynoConst(\"vec3\", box.max);\n const size = sub(max, min);\n const coord = div(add(vec3(cell), random), dynoConst(\"vec3\", cells));\n let r: DynoVal<\"float\">;\n let g: DynoVal<\"float\">;\n let b: DynoVal<\"float\">;\n if (color) {\n r = dynoConst(\"float\", color.r);\n g = dynoConst(\"float\", color.g);\n b = dynoConst(\"float\", color.b);\n } else {\n ({ r, g, b } = split(coord).outputs);\n }\n const rgba = combine({\n vectorType: \"vec4\",\n r,\n g,\n b,\n a: dynoConst(\"float\", opacity),\n });\n const center = add(min, mul(size, coord));\n const scales = vec3(dynoConst(\"float\", dotScale));\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgba,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ time }) => {\n dynoTime.value = time;\n const _updated = transformer.update(generator);\n generator.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return generator;\n}\n","import * as THREE from \"three\";\n\nimport { SplatGenerator, SplatTransformer } from \"../SplatGenerator\";\nimport {\n Gsplat,\n add,\n combine,\n combineGsplat,\n defineGsplat,\n dynoBlock,\n dynoConst,\n dynoFloat,\n dynoLiteral,\n fract,\n hashVec4,\n max,\n mix,\n mod,\n mul,\n sin,\n split,\n sub,\n vec3,\n} from \"../dyno\";\nimport { dynoVec3 } from \"../dyno\";\n\n// snowBox produces Gsplat trajectories that move in a deterministic fashion over time,\n// with high similarity between adjacent frames. See examples/atmospheric/main.js\n// for an example that creates a snowBox.\n\n// A snowBox instance has a collection of properties that can be tuned to achieve\n// different particle effects. The below DEFAULT_SNOW and DEFAULT_RAIN are example\n// parameter sets that look a lot like snow and rain, and can be used as a starting\n// point for further tweaking: `const mySnow = { ...DEFAULT_SNOW, density: 500 };`\n\nexport const DEFAULT_SNOW = {\n box: new THREE.Box3(\n new THREE.Vector3(-1, -1, -1),\n new THREE.Vector3(1, 1, 1),\n ),\n density: 100,\n fallDirection: new THREE.Vector3(-1, -3, 1).normalize(),\n fallVelocity: 0.02,\n wanderScale: 0.04,\n wanderVariance: 2,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.5, 0.5, 1),\n minScale: 0.001,\n maxScale: 0.005,\n anisoScale: new THREE.Vector3(1, 1, 1),\n};\n\nexport const DEFAULT_RAIN = {\n box: new THREE.Box3(\n new THREE.Vector3(-2, -1, -2),\n new THREE.Vector3(2, 5, 2),\n ),\n density: 10,\n fallDirection: new THREE.Vector3(0, -1, 0),\n fallVelocity: 2,\n wanderScale: 0.1,\n wanderVariance: 1,\n color1: new THREE.Color(1, 1, 1),\n color2: new THREE.Color(0.25, 0.25, 0.5),\n minScale: 0.005,\n maxScale: 0.01,\n anisoScale: new THREE.Vector3(0.1, 1, 0.1),\n};\n\n// Calling snowBox creates a new snowBox instance and returns an object with\n// the snowBox itself as well `as` a collection of controls that can be used to\n// adjust the snowBox's properties over time:\n//\n// - snow: the SplatGenerator snowBox instance\n// - min: the vec3 uniform of the snowBox minimum position\n// - max: the vec3 uniform of the snowBox maximum position\n// - minY: the float uniform of the snowBox minimum y-coordinate\n// - color1: the vec3 uniform of the snowBox first color\n// - color2: the vec3 uniform of the snowBox second color\n// - opacity: the float uniform of the snowBox opacity\n// - fallVelocity: the float uniform of the snowBox fall velocity\n// - wanderVariance: the float uniform of the snowBox wander variance\n// - wanderScale: the float uniform of the snowBox wander scale\n// - fallDirection: the vec3 uniform of the snowBox fall direction\n// - minScale: the float uniform of the snowBox minimum scale\n// - maxScale: the float uniform of the snowBox maximum scale\n// - anisoScale: the vec3 uniform of the snowBox anisotropic scale\n\nexport function snowBox({\n // min and max box extents of the snowBox\n box,\n // minimum y-coordinate to clamp particle position, which can be used to\n // fake hitting a ground plane and lingering there for a bit\n minY,\n // number of Gsplats to generate (default: calculated from box and density)\n numSplats,\n // density of Gsplats per unit volume (default: 100)\n density,\n // The xyz anisotropic scale of the Gsplat, which can be used for example\n // to elongate rain particles (default: (1, 1, 1))\n anisoScale,\n // Minimum Gsplat particle scale (default: 0.001)\n minScale,\n // Maximum Gsplat particle scale (default: 0.005)\n maxScale,\n // The average direction of fall (default: (0, -1, 0))\n fallDirection,\n // The average speed of the fall (multiplied with fallDirection) (default: 0.02)\n fallVelocity,\n // The world scale of wandering overlay motion (default: 0.01)\n wanderScale,\n // Controls how uniformly the particles wander in sync, more variance mean\n // more randomness in the motion (default: 2)\n wanderVariance,\n // Color 1 of the two colors interpolated between (default: (1, 1, 1))\n color1,\n // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))\n color2,\n // The base opacity of the Gsplats (default: 1)\n opacity,\n // Optional callback function to call each frame.\n onFrame,\n}: {\n box?: THREE.Box3;\n minY?: number;\n numSplats?: number;\n density?: number;\n anisoScale?: THREE.Vector3;\n minScale?: number;\n maxScale?: number;\n fallDirection?: THREE.Vector3;\n fallVelocity?: number;\n wanderScale?: number;\n wanderVariance?: number;\n color1?: THREE.Color;\n color2?: THREE.Color;\n opacity?: number;\n onFrame?: ({\n object,\n time,\n deltaTime,\n }: { object: SplatGenerator; time: number; deltaTime: number }) => void;\n}) {\n box =\n box ??\n new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n const volume =\n (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);\n density = density ?? 100;\n numSplats =\n numSplats ?? Math.max(1, Math.min(1000000, Math.round(volume * density)));\n\n const dynoMinScale = dynoFloat(minScale ?? 0.001);\n const dynoMaxScale = dynoFloat(maxScale ?? 0.005);\n const dynoAnisoScale = dynoVec3(\n (anisoScale?.clone() ?? new THREE.Vector3(1, 1, 1)).normalize(),\n );\n const dynoFallDirection = dynoVec3(\n (fallDirection ?? new THREE.Vector3(0, -1, 0)).normalize(),\n );\n const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);\n const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);\n const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);\n const dynoColor1 = dynoVec3(color1 ?? new THREE.Color(1, 1, 1));\n const dynoColor2 = dynoVec3(color2 ?? new THREE.Color(0.5, 0.5, 1));\n const dynoOpacity = dynoFloat(opacity ?? 1);\n\n const dynoTime = dynoFloat(0);\n const globalOffset = dynoVec3(new THREE.Vector3(0, 0, 0));\n const dynoMin = dynoVec3(box.min);\n const dynoMax = dynoVec3(box.max);\n const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);\n const minMax = sub(dynoMax, dynoMin);\n const snow = new SplatGenerator({\n numSplats,\n generator: dynoBlock(\n { index: \"int\" },\n { gsplat: Gsplat },\n ({ index }) => {\n if (!index) {\n throw new Error(\"index not defined\");\n }\n const random = hashVec4(index);\n const randomW = split(random).outputs.w;\n let position = vec3(random);\n\n let size = fract(mul(randomW, dynoConst(\"float\", 100)));\n size = sin(mul(dynoLiteral(\"float\", \"PI\"), size));\n size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));\n const scales = mul(size, dynoAnisoScale);\n\n const intensity = fract(mul(randomW, dynoConst(\"float\", 10)));\n const hue = fract(randomW);\n const color = mix(dynoColor1, dynoColor2, hue);\n const rgb = mul(color, intensity);\n\n const random2 = hashVec4(\n combine({\n vectorType: \"ivec2\",\n x: index,\n y: dynoConst(\"int\", 0x1ab5),\n }),\n );\n let perturb = vec3(random2);\n let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);\n timeOffset = add(dynoTime, timeOffset);\n\n position = add(position, globalOffset);\n const modulo = mod(\n position,\n dynoConst(\"vec3\", new THREE.Vector3(1, 1, 1)),\n );\n position = add(dynoMin, mul(minMax, modulo));\n\n const quaternion = dynoConst(\"vec4\", new THREE.Quaternion(0, 0, 0, 1));\n\n perturb = sin(add(vec3(timeOffset), perturb));\n perturb = mul(perturb, dynoWanderScale);\n let center = add(position, perturb);\n\n let centerY = split(center).outputs.y;\n centerY = max(dynoMinY, centerY);\n center = combine({ vector: center, y: centerY });\n\n let gsplat = combineGsplat({\n flags: dynoLiteral(\"uint\", \"GSPLAT_FLAG_ACTIVE\"),\n index: index,\n center,\n scales,\n quaternion,\n rgb,\n opacity: dynoOpacity,\n });\n gsplat = transformer.applyGsplat(gsplat);\n return { gsplat };\n },\n {\n globals: () => [defineGsplat],\n },\n ),\n update: ({ object, time, deltaTime }) => {\n dynoTime.value = time;\n const _updated = transformer.update(snow);\n\n const fallDelta = dynoFallDirection.value\n .clone()\n .multiplyScalar(dynoFallVelocity.value * deltaTime);\n globalOffset.value.add(fallDelta);\n\n // Enable/disable splats based on opacity\n object.visible = dynoOpacity.value > 0;\n\n onFrame?.({ object, time, deltaTime });\n snow.updateVersion();\n },\n });\n const transformer: SplatTransformer = new SplatTransformer();\n return {\n snow,\n min: dynoMin,\n max: dynoMax,\n minY: dynoMinY,\n color1: dynoColor1,\n color2: dynoColor2,\n opacity: dynoOpacity,\n fallVelocity: dynoFallVelocity,\n wanderVariance: dynoWanderVariance,\n wanderScale: dynoWanderScale,\n fallDirection: dynoFallDirection,\n minScale: dynoMinScale,\n maxScale: dynoMaxScale,\n anisoScale: dynoAnisoScale,\n };\n}\n\nexport type SNOW_RESULT_TYPE = ReturnType;\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n Gsplat,\n add,\n combineGsplat,\n dot,\n dynoBlock,\n dynoConst,\n greaterThanEqual,\n gsplatNormal,\n mul,\n neg,\n select,\n splitGsplat,\n} from \"../dyno\";\n\nexport function makeNormalColorModifier(splatToView: SplatTransformer) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let normal = gsplatNormal(gsplat);\n\n const viewGsplat = splatToView.applyGsplat(gsplat);\n const viewCenter = splitGsplat(viewGsplat).outputs.center;\n const viewNormal = gsplatNormal(viewGsplat);\n const splatDot = dot(viewCenter, viewNormal);\n\n const sameDir = greaterThanEqual(splatDot, dynoConst(\"float\", 0));\n normal = select(sameDir, neg(normal), normal);\n const rgb = add(\n mul(normal, dynoConst(\"float\", 0.5)),\n dynoConst(\"float\", 0.5),\n );\n\n gsplat = combineGsplat({ gsplat, rgb });\n return { gsplat };\n });\n}\n\nexport function setWorldNormalColor(splats: SplatMesh) {\n splats.enableWorldToView = true;\n splats.worldModifier = makeNormalColorModifier(splats.context.worldToView);\n splats.updateGenerator();\n}\n","import type { SplatTransformer } from \"../SplatGenerator\";\nimport type { SplatMesh } from \"../SplatMesh\";\nimport {\n type DynoVal,\n Gsplat,\n combineGsplat,\n dynoBlock,\n dynoConst,\n neg,\n normalizedDepth,\n select,\n split,\n splitGsplat,\n sub,\n} from \"../dyno\";\n\nexport function makeDepthColorModifier(\n splatToView: SplatTransformer,\n minDepth: DynoVal<\"float\">,\n maxDepth: DynoVal<\"float\">,\n reverse: DynoVal<\"bool\">,\n) {\n return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {\n if (!gsplat) {\n throw new Error(\"No gsplat input\");\n }\n let { center } = splitGsplat(gsplat).outputs;\n center = splatToView.apply(center);\n const { z } = split(center).outputs;\n let depth = normalizedDepth(neg(z), minDepth, maxDepth);\n depth = select(reverse, sub(dynoConst(\"float\", 1), depth), depth);\n\n gsplat = combineGsplat({ gsplat, r: depth, g: depth, b: depth });\n return { gsplat };\n });\n}\n\nexport function setDepthColor(\n splats: SplatMesh,\n minDepth: number,\n maxDepth: number,\n reverse?: boolean,\n) {\n splats.enableWorldToView = true;\n const dynoMinDepth = dynoConst(\"float\", minDepth);\n const dynoMaxDepth = dynoConst(\"float\", maxDepth);\n const dynoReverse = dynoConst(\"bool\", reverse ?? false);\n splats.worldModifier = makeDepthColorModifier(\n splats.context.worldToView,\n dynoMinDepth,\n dynoMaxDepth,\n dynoReverse,\n );\n splats.updateGenerator();\n return {\n minDepth: dynoMinDepth,\n maxDepth: dynoMaxDepth,\n reverse: dynoReverse,\n };\n}\n","import * as THREE from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\nexport interface SparkXrOptions {\n renderer: THREE.WebGLRenderer;\n // Element to attach enter/exit click handler to\n element?: HTMLElement;\n // ID of element to attach enter/exit click handler to\n elementId?: string;\n // Create a button to enter/exit XR\n // Optionally provide button text or HTML\n // Default is true - create a button\n button?: boolean | SparkXrButton;\n // Blur out element when mouse leaves it\n // Default is 0.5 - 50% opacity\n onMouseLeaveOpacity?: number;\n // Default is \"vrar\" - Try VR then AR\n mode?: \"vr\" | \"ar\" | \"arvr\" | \"vrar\";\n // fixedFoveation: XrManager.setFoveation(...)\n fixedFoveation?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRWebGLLayer/XRWebGLLayer#framebufferscalefactor\n // Default is 0.5 - 50% resolution for better frame rate\n frameBufferScaleFactor?: number;\n // https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types\n // Defaults is \"local\" - origin is the user's position when starting XR session\n referenceSpaceType?: \"local\" | \"local-floor\" | \"unbounded\" | \"viewer\";\n // Enable hand tracking\n // Default is false\n enableHands?: boolean;\n // Allow WebXR entry on mobile phones that expose navigator.xr\n // Defaults to false - blocks phones to avoid unusable split-screen modes\n allowMobileXr?: boolean;\n // Session init options\n // Default is empty - no additional options\n sessionInit?: XRSessionInit;\n // Callback function called when SparkXr is ready\n // Default is undefined - no callback\n onReady?: (supported: boolean) => void | Promise;\n // Callback function called when entering XR\n // Default is undefined - no callback\n onEnterXr?: () => void | Promise;\n // Callback function called when exiting XR\n // Default is undefined - no callback\n onExitXr?: () => void | Promise;\n // ztroller movement and rotation options\n controllers?: SparkXrControllers;\n}\n\nexport interface SparkXrButton {\n enterXrHtml?: string;\n exitXrHtml?: string;\n enterVrHtml?: string;\n exitVrHtml?: string;\n enterArHtml?: string;\n exitArHtml?: string;\n enterXrText?: string;\n exitXrText?: string;\n enterVrText?: string;\n exitVrText?: string;\n enterArText?: string;\n exitArText?: string;\n style?: CSSStyleDeclaration;\n enterStyle?: CSSStyleDeclaration;\n exitStyle?: CSSStyleDeclaration;\n zIndex?: number;\n}\n\nexport type XrGamepads = {\n left?: Gamepad;\n right?: Gamepad;\n leftIsHand?: boolean;\n rightIsHand?: boolean;\n};\n\nexport interface SparkXrControllers {\n moveSpeed?: number;\n rotateSpeed?: number;\n rollSpeed?: number;\n fastMultiplier?: number;\n slowMultiplier?: number;\n moveHeading?: boolean;\n moveDirection?: boolean;\n getMove?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getRotate?: (gamepads: XrGamepads, sparkXr: SparkXr) => THREE.Vector3;\n getFast?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n getSlow?: (gamepads: XrGamepads, sparkXr: SparkXr) => boolean;\n}\n\nexport const DEFAULT_CONTROLLER_MOVE_SPEED = 1.0;\nexport const DEFAULT_CONTROLLER_ROTATE_SPEED = 4.0;\nexport const DEFAULT_CONTROLLER_ROLL_SPEED = 2.0;\nexport const DEFAULT_CONTROLLER_FAST_MULTIPLIER = 5;\nexport const DEFAULT_CONTROLLER_SLOW_MULTIPLIER = 1 / 5;\nexport const DEFAULT_CONTROLLER_MOVE_HEADING = false;\n\nexport const DEFAULT_CONTROLLER_GETMOVE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.leftIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(\n gamepads.left?.axes[2] ?? 0,\n (gamepads.left?.buttons[0].value ?? 0) -\n (gamepads.left?.buttons[1].value ?? 0),\n gamepads.left?.axes[3] ?? 0,\n );\nexport const DEFAULT_CONTROLLER_GETROTATE = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand\n ? new THREE.Vector3()\n : new THREE.Vector3(gamepads.right?.axes[2] ?? 0, 0, 0);\nexport const DEFAULT_CONTROLLER_GETFAST = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[0]?.pressed ?? false);\nexport const DEFAULT_CONTROLLER_GETSLOW = (\n gamepads: XrGamepads,\n sparkXr: SparkXr,\n) =>\n gamepads.rightIsHand ? false : (gamepads.right?.buttons[1]?.pressed ?? false);\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.015,\n t1: 0.012,\n t2: 0.0105,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nconst XR_HEADSET_HINTS =\n /Quest|OculusBrowser|VisionOS|XRBrowser|Pico|Lynx|MagicLeap/i;\n\nfunction isLikelyMobilePhone() {\n const ua = navigator.userAgent ?? \"\";\n if (XR_HEADSET_HINTS.test(ua)) {\n return false;\n }\n\n const androidMobile = /Android/i.test(ua) || /Mobile/i.test(ua);\n if (androidMobile) {\n return true;\n }\n\n const uaData = (\n navigator as Navigator & {\n userAgentData?: { mobile?: boolean };\n }\n ).userAgentData;\n if (uaData && typeof uaData.mobile === \"boolean\") {\n return uaData.mobile;\n }\n\n return false;\n}\n\nexport type Joint = {\n position: THREE.Vector3;\n quaternion: THREE.Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\n\nexport class SparkXr {\n renderer: THREE.WebGLRenderer;\n xr?: XRSystem;\n element?: HTMLElement;\n button?: SparkXrButton;\n mode: XRSessionMode | \"initializing\" | \"not_supported\";\n sessionInit?: XRSessionInit;\n session?: XRSession;\n onEnterXr?: () => void;\n onExitXr?: () => void;\n\n controllers?: SparkXrControllers;\n lastControllersUpdate = 0;\n\n enableHands: boolean;\n hands: XrHand[] = [];\n\n constructor(options: SparkXrOptions) {\n this.renderer = options.renderer;\n this.xr = navigator.xr;\n this.mode = \"initializing\";\n this.onEnterXr = options.onEnterXr;\n this.onExitXr = options.onExitXr;\n this.enableHands = options.enableHands ?? false;\n this.controllers = options.controllers;\n\n Promise.resolve()\n .then(() => {\n if (!this.xr) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (!options.allowMobileXr && isLikelyMobilePhone()) {\n this.mode = \"not_supported\";\n return;\n }\n\n if (this.enableHands) {\n this.hands = [new XrHand(Hand.left), new XrHand(Hand.right)];\n }\n\n let element: HTMLElement | undefined = undefined;\n let button: SparkXrButton | undefined = undefined;\n if (options.element) {\n element = options.element;\n } else if (options.elementId) {\n element = document.getElementById(options.elementId) ?? undefined;\n } else {\n element = SparkXr.createButton();\n button =\n options.button == null || typeof options.button === \"boolean\"\n ? {}\n : options.button;\n }\n\n if (!element) {\n throw new Error(\"No element or button provided\");\n }\n\n element.style.display = \"none\";\n element.classList.add(\"hidden\");\n this.button = button;\n this.element = element;\n\n const opacity = options.onMouseLeaveOpacity?.toString();\n if (opacity !== undefined) {\n element.addEventListener(\"mouseleave\", () => {\n element.style.opacity = opacity;\n });\n element.addEventListener(\"mouseenter\", () => {\n element.style.opacity = \"\";\n });\n }\n\n return this.initializeXr(options);\n })\n .then(() => {\n return options.onReady?.(this.mode !== \"not_supported\");\n })\n .catch((error) => {\n alert(`Error initializing SparkXr: ${error}`);\n });\n }\n\n private async initializeXr(options: SparkXrOptions) {\n if (!this.xr || !this.element) {\n return;\n }\n const element = this.element;\n\n const modes = {\n vr: [\"immersive-vr\"],\n ar: [\"immersive-ar\"],\n arvr: [\"immersive-ar\", \"immersive-vr\"],\n vrar: [\"immersive-vr\", \"immersive-ar\"],\n }[options.mode ?? \"vrar\"] as XRSessionMode[] | undefined;\n if (!modes) {\n throw new Error(`Invalid mode: ${options.mode}`);\n }\n\n let supported = null;\n for (const mode of modes) {\n if (await this.xr.isSessionSupported(mode)) {\n supported = mode;\n break;\n }\n }\n\n if (!supported) {\n this.mode = \"not_supported\";\n return;\n }\n this.mode = supported;\n\n const referenceSpaceType = options.referenceSpaceType ?? \"local\";\n\n this.renderer.xr.enabled = true;\n this.renderer.xr.setReferenceSpaceType(referenceSpaceType);\n\n if (options.fixedFoveation !== undefined) {\n this.renderer.xr.setFoveation(options.fixedFoveation);\n }\n const frameBufferScaleFactor = options.frameBufferScaleFactor ?? 0.5;\n this.renderer.xr.setFramebufferScaleFactor(frameBufferScaleFactor);\n\n const optionalFeatures = options.sessionInit?.optionalFeatures ?? [];\n if (options.enableHands) {\n optionalFeatures.push(\"hand-tracking\");\n }\n\n const requiredFeatures = options.sessionInit?.requiredFeatures ?? [];\n requiredFeatures.push(referenceSpaceType);\n\n this.sessionInit = {\n ...options.sessionInit,\n optionalFeatures,\n requiredFeatures,\n };\n // console.log(\"* this.sessionInit\", this.sessionInit);\n\n element.addEventListener(\"click\", () => {\n this.toggleXr();\n });\n\n this.updateElement();\n }\n\n async toggleXr() {\n if (!this.xr || !this.sessionInit) {\n // console.log(\"* !this.xr || !this.sessionInit\");\n return;\n }\n\n if (!this.session) {\n try {\n const mode = this.mode as XRSessionMode;\n const session = await this.xr.requestSession(mode, this.sessionInit);\n this.session = session;\n // console.log(\"* this.session\", this.session);\n\n const onSessionEnded = () => {\n session?.removeEventListener(\"end\", onSessionEnded);\n session?.removeEventListener(\"visibilitychange\", visibilityChanged);\n this.session = undefined;\n\n this.updateElement();\n this.onExitXr?.();\n };\n\n let lastVisibilityState = session.visibilityState;\n const visibilityChanged = () => {\n if (\n session?.visibilityState === \"visible-blurred\" &&\n lastVisibilityState === \"visible\"\n ) {\n session?.end();\n }\n lastVisibilityState = session?.visibilityState;\n };\n\n this.session?.addEventListener(\"end\", onSessionEnded);\n this.session?.addEventListener(\"visibilitychange\", visibilityChanged);\n\n await this.renderer.xr.setSession(this.session);\n // console.log(\"* setSession\");\n\n return this.onEnterXr?.();\n } catch (error) {\n console.error(\"Error requesting XR session\", error);\n return;\n }\n } else {\n this.session.end();\n // console.log(\"* end session\");\n }\n }\n\n private updateElement() {\n const mode = this.mode as XRSessionMode;\n const element = this.element;\n if (element) {\n element.style.display = \"\";\n element.classList.remove(\"hidden\");\n\n const button = typeof this.button === \"boolean\" ? {} : this.button;\n if (button) {\n if (!this.session) {\n const enterHtml =\n (mode === \"immersive-vr\"\n ? button.enterVrHtml\n : button.enterArHtml) ?? button.enterXrHtml;\n const enterText =\n (mode === \"immersive-vr\"\n ? button.enterVrText\n : button.enterArText) ?? button.enterXrText;\n if (enterHtml) {\n element.innerHTML = enterHtml;\n } else if (enterText) {\n element.textContent = enterText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"ENTER VR\" : \"ENTER AR\";\n }\n } else {\n const exitHtml =\n (mode === \"immersive-vr\" ? button.exitVrHtml : button.exitArHtml) ??\n button.exitXrHtml;\n const exitText =\n (mode === \"immersive-vr\" ? button.exitVrText : button.exitArText) ??\n button.exitXrText;\n if (exitHtml) {\n element.innerHTML = exitHtml;\n } else if (exitText) {\n element.textContent = exitText;\n } else {\n element.textContent =\n mode === \"immersive-vr\" ? \"EXIT VR\" : \"EXIT AR\";\n }\n }\n\n element.style.display = \"\";\n }\n }\n }\n\n private static createButton() {\n const button = document.createElement(\"button\");\n Object.assign(button.style, {\n position: \"absolute\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"40px 40px\",\n border: \"2px solid #fff\",\n borderRadius: \"16px\",\n background: \"rgba(0,0,0,0.1)\",\n color: \"#fff\",\n font: \"bold 28px sans-serif\",\n textAlign: \"center\",\n userSelect: \"none\",\n zIndex: \"999\",\n });\n document.body.appendChild(button);\n return button;\n }\n\n xrSupported() {\n return !!this.xr;\n }\n\n static JointEnum = JointEnum;\n static JOINT_IDS = JOINT_IDS;\n static NUM_JOINTS = NUM_JOINTS;\n static JOINT_INDEX = JOINT_INDEX;\n static JOINT_RADIUS = JOINT_RADIUS;\n static JOINT_SEGMENTS = JOINT_SEGMENTS;\n static JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;\n static JOINT_TIPS = JOINT_TIPS;\n static FINGER_TIPS = FINGER_TIPS;\n static Hand = Hand;\n static HANDS = HANDS;\n\n left() {\n return this.hands[0];\n }\n\n right() {\n return this.hands[1];\n }\n\n updateControllers(camera: THREE.Camera) {\n const cameraFrame = camera.parent as THREE.Group;\n\n const now = performance.now();\n const deltaTime = (now - (this.lastControllersUpdate || now)) / 1000;\n this.lastControllersUpdate = now;\n\n const xrGamepads: XrGamepads = {};\n for (const source of this.renderer.xr.getSession()?.inputSources ?? []) {\n const gamepad = source.gamepad;\n if (\n gamepad &&\n (source.handedness === \"left\" || source.handedness === \"right\")\n ) {\n xrGamepads[source.handedness] = gamepad;\n if (source.handedness === \"left\") {\n xrGamepads.leftIsHand = !!source.hand;\n } else if (source.handedness === \"right\") {\n xrGamepads.rightIsHand = !!source.hand;\n }\n }\n }\n\n const rotate = (\n this.controllers?.getRotate ?? DEFAULT_CONTROLLER_GETROTATE\n )(xrGamepads, this);\n rotate.multiply(\n new THREE.Vector3(\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rotateSpeed ?? DEFAULT_CONTROLLER_ROTATE_SPEED,\n this.controllers?.rollSpeed ?? DEFAULT_CONTROLLER_ROLL_SPEED,\n ),\n );\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler(-rotate.y, -rotate.x, rotate.z, \"YXZ\");\n const quat = new THREE.Quaternion().setFromEuler(eulers);\n\n const pivot = camera.getWorldPosition(new THREE.Vector3());\n cameraFrame.parent?.worldToLocal(pivot);\n\n cameraFrame.position.sub(pivot);\n cameraFrame.position.applyQuaternion(quat);\n cameraFrame.position.add(pivot);\n cameraFrame.quaternion.premultiply(quat);\n }\n\n const move = (this.controllers?.getMove ?? DEFAULT_CONTROLLER_GETMOVE)(\n xrGamepads,\n this,\n );\n\n let moveSpeed =\n this.controllers?.moveSpeed ?? DEFAULT_CONTROLLER_MOVE_SPEED;\n if (\n (this.controllers?.getFast ?? DEFAULT_CONTROLLER_GETFAST)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_FAST_MULTIPLIER;\n }\n if (\n (this.controllers?.getSlow ?? DEFAULT_CONTROLLER_GETSLOW)(\n xrGamepads,\n this,\n )\n ) {\n moveSpeed *= DEFAULT_CONTROLLER_SLOW_MULTIPLIER;\n }\n\n if (this.controllers?.moveHeading) {\n move.applyQuaternion(camera.quaternion);\n } else if (this.controllers?.moveDirection) {\n SCRATCH_EULER.setFromQuaternion(camera.quaternion, \"YXZ\");\n SCRATCH_EULER.x = 0;\n SCRATCH_EULER.z = 0;\n SCRATCH_QUAT_A.setFromEuler(SCRATCH_EULER);\n move.applyQuaternion(SCRATCH_QUAT_A);\n }\n move.applyQuaternion(cameraFrame.quaternion);\n\n move.multiplyScalar(deltaTime * moveSpeed);\n cameraFrame.position.add(move);\n }\n\n updateHands({ xrFrame }: { xrFrame: XRFrame }) {\n const xrSession = this.renderer.xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = this.renderer.xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n for (const hand of this.hands) {\n if (hand) {\n hand.lastJoints = hand.joints;\n hand.joints = undefined;\n }\n }\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n const hand = inputSource.handedness as Hand;\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n if (!xrHand) {\n continue;\n }\n\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n\n if (!xrHand.joints) {\n xrHand.joints = {};\n }\n xrHand.joints[jointId] = {\n position: new THREE.Vector3(position.x, position.y, position.z),\n quaternion: new THREE.Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: JOINT_RADIUS[jointId],\n };\n }\n }\n }\n }\n }\n\n makeJointSplats(hand: Hand): JointSplats {\n const mesh = new JointSplats(hand);\n mesh.onFrame = () => {\n const xrHand = this.hands[hand === Hand.left ? 0 : 1];\n const joints = xrHand?.joints;\n mesh.updateJoints(joints);\n };\n return mesh;\n }\n\n snapshotHands(time: number) {\n const hands = [\n this.hands[0]?.snapshotJoints(),\n this.hands[1]?.snapshotJoints(),\n ];\n return { time, hands };\n }\n}\n\ntype JointSnapshot = { pos: number[]; quat: number[]; radius: number };\ntype HandSnapshot = { [key in JointId]?: JointSnapshot };\ntype HandsSnapshot = {\n time: number;\n hands: (HandSnapshot | undefined)[];\n};\n\nconst round4 = (value: number) => Math.round(value * 10000) / 10000;\nconst SCRATCH_EULER = new THREE.Euler(0, 0, 0, \"YXZ\");\nconst SCRATCH_QUAT_A = new THREE.Quaternion();\nconst SCRATCH_QUAT_B = new THREE.Quaternion();\n\nexport function lerpHandsSnapshots(\n snapshots: HandsSnapshot[],\n time: number,\n): HandsSnapshot | null {\n if (!snapshots.length) {\n return null;\n }\n\n const first = snapshots[0];\n const last = snapshots[snapshots.length - 1];\n\n if (time < first.time || time > last.time) {\n return null;\n }\n\n const floorIndex = findSnapshotFloorIndex(snapshots, time);\n if (floorIndex === -1) {\n return null;\n }\n\n const from = snapshots[floorIndex];\n const to = snapshots[floorIndex + 1];\n if (!to) {\n return cloneSnapshot(from, time);\n }\n\n const span = to.time - from.time;\n const factor = span > 0 ? (time - from.time) / span : 0;\n\n return interpolateSnapshots(from, to, factor, time);\n}\n\nfunction interpolateSnapshots(\n from: HandsSnapshot,\n to: HandsSnapshot,\n factor: number,\n time: number,\n): HandsSnapshot {\n const maxHands = Math.max(from.hands.length, to.hands.length);\n const hands = Array.from({ length: maxHands }, (_, handIndex) =>\n lerpHandSnapshot(from.hands[handIndex], to.hands[handIndex], factor),\n );\n return { time, hands };\n}\n\nfunction cloneSnapshot(snapshot: HandsSnapshot, time: number): HandsSnapshot {\n return {\n time,\n hands: snapshot.hands.map((hand) => cloneHandSnapshot(hand)),\n };\n}\n\nexport class XrHand {\n hand: Hand;\n joints?: HandJoints;\n lastJoints?: HandJoints;\n\n constructor(hand: Hand) {\n this.hand = hand;\n }\n\n static newFromSnapshot(hand: Hand, snapshot: HandSnapshot) {\n const h = new XrHand(hand);\n h.joints = {};\n for (const jointId of JOINT_IDS) {\n const joint = snapshot[jointId];\n if (!joint) {\n continue;\n }\n h.joints[jointId] = {\n position: new THREE.Vector3(joint.pos[0], joint.pos[1], joint.pos[2]),\n quaternion: new THREE.Quaternion(\n joint.quat[0],\n joint.quat[1],\n joint.quat[2],\n joint.quat[3],\n ),\n radius: joint.radius,\n };\n }\n return h;\n }\n\n valid() {\n return !!this.joints;\n }\n\n snapshotJoints() {\n if (!this.joints) {\n return undefined;\n }\n\n const snapshot: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (!joint) {\n continue;\n }\n snapshot[jointId] = {\n pos: joint.position.toArray().map(round4),\n quat: joint.quaternion.toArray().map(round4),\n radius: round4(joint.radius),\n };\n }\n return snapshot;\n }\n\n toFlatArray() {\n if (!this.joints) {\n return undefined;\n }\n const array = new Float32Array(1 + 25 * 7);\n array[0] = this.hand === Hand.left ? 0 : 1;\n let index = 1;\n for (const jointId of JOINT_IDS) {\n const joint = this.joints[jointId];\n if (joint) {\n array[index] = joint.position.x;\n array[index + 1] = joint.position.y;\n array[index + 2] = joint.position.z;\n array[index + 3] = joint.quaternion.x;\n array[index + 4] = joint.quaternion.y;\n array[index + 5] = joint.quaternion.z;\n array[index + 6] = joint.quaternion.w;\n }\n index += 7;\n }\n return array;\n }\n}\n\nfunction findSnapshotFloorIndex(snapshots: HandsSnapshot[], time: number) {\n let low = 0;\n let high = snapshots.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n if (snapshots[mid].time <= time) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n return high;\n}\n\nfunction lerpHandSnapshot(\n fromHand?: HandSnapshot,\n toHand?: HandSnapshot,\n factor = 0,\n) {\n if (!fromHand || !toHand) {\n return undefined;\n }\n const hand: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = lerpJointSnapshot(fromHand[jointId], toHand[jointId], factor);\n if (joint) {\n hand[jointId] = joint;\n }\n }\n return hand;\n}\n\nfunction lerpJointSnapshot(\n fromJoint?: JointSnapshot,\n toJoint?: JointSnapshot,\n factor = 0,\n) {\n if (!fromJoint || !toJoint) {\n return undefined;\n }\n const pos = fromJoint.pos.map(\n (value, index) => value + (toJoint.pos[index] - value) * factor,\n );\n const quat = SCRATCH_QUAT_A.fromArray(fromJoint.quat)\n .slerp(SCRATCH_QUAT_B.fromArray(toJoint.quat), factor)\n .toArray();\n const radius =\n fromJoint.radius + (toJoint.radius - fromJoint.radius) * factor;\n\n return { pos, quat, radius };\n}\n\nfunction cloneHandSnapshot(hand?: HandSnapshot) {\n if (!hand) {\n return undefined;\n }\n const clone: HandSnapshot = {};\n for (const jointId of JOINT_IDS) {\n const joint = hand[jointId];\n if (joint) {\n clone[jointId] = cloneJointSnapshot(joint);\n }\n }\n return clone;\n}\n\nfunction cloneJointSnapshot(joint: JointSnapshot): JointSnapshot {\n return {\n pos: [...joint.pos],\n quat: [...joint.quat],\n radius: joint.radius,\n };\n}\n\nexport class JointSplats extends SplatMesh {\n hand: Hand;\n\n constructor(hand: Hand) {\n super({});\n this.hand = hand;\n }\n\n private scratchCenter = new THREE.Vector3();\n private scratchQuat = new THREE.Quaternion(0, 0, 0, 1);\n private scratchScales = new THREE.Vector3().setScalar(0.01);\n private scratchColor = new THREE.Color(1, 1, 1);\n\n updateJoints(joints?: HandJoints) {\n this.visible = false;\n\n if (!joints || !this.packedSplats) {\n return;\n }\n\n this.visible = true;\n let splatIndex = 0;\n\n for (const jointId of JOINT_IDS) {\n const joint = joints[jointId];\n if (!joint) {\n continue;\n }\n this.scratchCenter.copy(joint.position);\n this.scratchQuat.copy(joint.quaternion);\n this.scratchScales.set(\n joint.radius,\n 0.75 * joint.radius,\n 1.5 * joint.radius,\n );\n // this.scratchColor.set((joint.radius * 123) % 1, (joint.radius * 345) % 1, (joint.radius * 234) % 1);\n const opacity = 0.75;\n\n this.packedSplats.setSplat(\n splatIndex,\n this.scratchCenter,\n this.scratchScales,\n this.scratchQuat,\n opacity,\n this.scratchColor,\n );\n splatIndex += 1;\n }\n\n this.packedSplats.numSplats = splatIndex;\n this.packedSplats.needsUpdate = true;\n this.numSplats = splatIndex;\n this.updateVersion();\n }\n}\n","import {\n Color,\n Matrix4,\n type Object3D,\n Quaternion,\n Vector3,\n type WebXRManager,\n} from \"three\";\nimport { SplatMesh } from \"./SplatMesh\";\n\n// Experimental WebXR hand tracking and movement\n\nconst DEFAULT_MOVE_INERTIA = 0.5;\nconst DEFAULT_ROTATE_INERTIA = 0.5;\nconst TOUCH_BIAS = 0.0;\n\nexport enum JointEnum {\n w = \"wrist\",\n t0 = \"thumb-metacarpal\",\n t1 = \"thumb-phalanx-proximal\",\n t2 = \"thumb-phalanx-distal\",\n t3 = \"thumb-tip\",\n i0 = \"index-finger-metacarpal\",\n i1 = \"index-finger-phalanx-proximal\",\n i2 = \"index-finger-phalanx-intermediate\",\n i3 = \"index-finger-phalanx-distal\",\n i4 = \"index-finger-tip\",\n m0 = \"middle-finger-metacarpal\",\n m1 = \"middle-finger-phalanx-proximal\",\n m2 = \"middle-finger-phalanx-intermediate\",\n m3 = \"middle-finger-phalanx-distal\",\n m4 = \"middle-finger-tip\",\n r0 = \"ring-finger-metacarpal\",\n r1 = \"ring-finger-phalanx-proximal\",\n r2 = \"ring-finger-phalanx-intermediate\",\n r3 = \"ring-finger-phalanx-distal\",\n r4 = \"ring-finger-tip\",\n p0 = \"pinky-finger-metacarpal\",\n p1 = \"pinky-finger-phalanx-proximal\",\n p2 = \"pinky-finger-phalanx-intermediate\",\n p3 = \"pinky-finger-phalanx-distal\",\n p4 = \"pinky-finger-tip\",\n}\nexport type JointId = keyof typeof JointEnum;\nexport const JOINT_IDS = Object.keys(JointEnum) as JointId[];\nexport const NUM_JOINTS = JOINT_IDS.length;\n\nexport const JOINT_INDEX: { [key in JointId]: number } = {\n w: 0,\n t0: 1,\n t1: 2,\n t2: 3,\n t3: 4,\n i0: 5,\n i1: 6,\n i2: 7,\n i3: 8,\n i4: 9,\n m0: 10,\n m1: 11,\n m2: 12,\n m3: 13,\n m4: 14,\n r0: 15,\n r1: 16,\n r2: 17,\n r3: 18,\n r4: 19,\n p0: 20,\n p1: 21,\n p2: 22,\n p3: 23,\n p4: 24,\n};\n\nexport const JOINT_RADIUS: { [key in JointId]: number } = {\n w: 0.02,\n t0: 0.02,\n t1: 0.014,\n t2: 0.0115,\n t3: 0.0085,\n i0: 0.022,\n i1: 0.012,\n i2: 0.0085,\n i3: 0.0075,\n i4: 0.0065,\n m0: 0.021,\n m1: 0.012,\n m2: 0.008,\n m3: 0.0075,\n m4: 0.0065,\n r0: 0.019,\n r1: 0.011,\n r2: 0.0075,\n r3: 0.007,\n r4: 0.006,\n p0: 0.012,\n p1: 0.01,\n p2: 0.007,\n p3: 0.0065,\n p4: 0.0055,\n};\n\nexport const JOINT_SEGMENTS: JointId[][] = [\n [\"w\", \"t0\", \"t1\", \"t2\", \"t3\"],\n [\"w\", \"i0\", \"i1\", \"i2\", \"i3\", \"i4\"],\n [\"w\", \"m0\", \"m1\", \"m2\", \"m3\", \"m4\"],\n [\"w\", \"r0\", \"r1\", \"r2\", \"r3\", \"r4\"],\n [\"w\", \"p0\", \"p1\", \"p2\", \"p3\", \"p4\"],\n];\n\nexport const JOINT_SEGMENT_STEPS: number[][] = [\n [8, 10, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n [8, 19, 14, 8, 6],\n];\n\nexport const JOINT_TIPS: JointId[] = [\"t3\", \"i4\", \"m4\", \"r4\", \"p4\"];\nexport const FINGER_TIPS: JointId[] = [\"i4\", \"m4\", \"r4\", \"p4\"];\n\nexport enum Hand {\n left = \"left\",\n right = \"right\",\n}\nexport const HANDS = Object.keys(Hand) as Hand[];\n\nexport type Joint = {\n position: Vector3;\n quaternion: Quaternion;\n radius: number;\n};\n\nexport type HandJoints = { [key in JointId]?: Joint };\nexport type HandsJoints = { [key in Hand]?: HandJoints };\n\nexport class XrHands {\n hands: HandsJoints = {};\n last: HandsJoints = {};\n\n values: Record = {};\n tests: Record = {};\n lastTests: Record = {};\n\n updated = false;\n\n update({ xr, xrFrame }: { xr: WebXRManager; xrFrame: XRFrame }) {\n const xrSession = xr.getSession();\n if (!xrSession) {\n return;\n }\n const referenceSpace = xr.getReferenceSpace();\n if (!referenceSpace) {\n return;\n }\n if (!xrFrame.getJointPose) {\n return;\n }\n\n this.last = this.hands;\n this.lastTests = this.tests;\n\n this.hands = {};\n this.values = {};\n this.tests = {};\n\n for (const inputSource of xrSession.inputSources) {\n if (!inputSource.hand) {\n continue;\n }\n\n const hand = inputSource.handedness as Hand;\n this.hands[hand] = {};\n\n // Iterate over JointId\n for (const jointId of JOINT_IDS) {\n const jointSpace = inputSource.hand.get(JointEnum[jointId]);\n if (jointSpace) {\n const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);\n if (jointPose) {\n const { position, orientation } = jointPose.transform;\n this.hands[hand][jointId] = {\n position: new Vector3(position.x, position.y, position.z),\n quaternion: new Quaternion(\n orientation.x,\n orientation.y,\n orientation.z,\n orientation.w,\n ),\n radius: jointPose.radius || 0.001,\n };\n }\n }\n }\n }\n\n for (const hand of HANDS) {\n for (const { key, value } of [\n { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },\n {\n key: `${hand}IndexThumb`,\n value: this.touching(hand, \"i4\", hand, \"t3\"),\n },\n {\n key: `${hand}MiddleThumb`,\n value: this.touching(hand, \"m4\", hand, \"t3\"),\n },\n {\n key: `${hand}RingThumb`,\n value: this.touching(hand, \"r4\", hand, \"t3\"),\n },\n {\n key: `${hand}PinkyThumb`,\n value: this.touching(hand, \"p4\", hand, \"t3\"),\n },\n { key: `${hand}TriTips`, value: this.triTipsTouching(hand) },\n ]) {\n this.values[key] = value;\n this.tests[key] =\n value === 1.0\n ? true\n : value === 0.0\n ? false\n : (this.lastTests[key] ?? false);\n }\n }\n }\n\n makeGhostMesh(): SplatMesh {\n const center = new Vector3();\n const scales = new Vector3(0.01, 0.01, 0.01);\n const quaternion = new Quaternion(0, 0, 0, 1);\n const color = new Color(1, 1, 1);\n const CYCLE = Math.PI * 3;\n const WHITE = new Color(1, 1, 1);\n let opacity = 1.0;\n\n const mesh = new SplatMesh({\n onFrame: () => {\n if (!mesh.packedSplats) {\n return;\n }\n let splatIndex = 0;\n for (const handedness of HANDS) {\n const xrHand = this.hands[handedness];\n for (const [index, segment] of JOINT_SEGMENTS.entries()) {\n for (let i = 1; i < segment.length; ++i) {\n const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;\n const lastSegment = i + 1 === segment.length;\n const jointA = xrHand?.[segment[i - 1]];\n const jointB = xrHand?.[segment[i]];\n\n for (let j = 0; j < segmentSplats; ++j) {\n const t = (j + 0.5) / segmentSplats;\n opacity = 0.0;\n if (jointA && jointB) {\n center.copy(jointA.position).lerp(jointB.position, t);\n quaternion\n .copy(jointA.quaternion)\n .slerp(jointB.quaternion, t);\n const radiusA = JOINT_RADIUS[segment[i - 1]];\n const radiusB = JOINT_RADIUS[segment[i]];\n let radius = (1 - t) * radiusA + t * radiusB;\n if (lastSegment && t > 0.8) {\n // Round out finger tips\n radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);\n }\n scales.set(0.65 * radius, 0.5 * radius, 0.003);\n color.set(\n 0.55 + 0.45 * Math.sin(center.x * CYCLE),\n 0.55 + 0.45 * Math.sin(center.y * CYCLE),\n 0.55 + 0.45 * Math.sin(center.z * CYCLE),\n );\n if (handedness === \"right\") {\n color.set(1 - color.r, 1 - color.g, 1 - color.b);\n }\n opacity = 0.75;\n }\n mesh.packedSplats.setSplat(\n splatIndex,\n center,\n scales,\n quaternion,\n opacity,\n color,\n );\n splatIndex += 1;\n }\n }\n }\n }\n mesh.packedSplats.numSplats = splatIndex;\n mesh.packedSplats.needsUpdate = true;\n mesh.numSplats = splatIndex;\n mesh.updateVersion();\n },\n });\n return mesh;\n }\n\n distance(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const hA = last ? this.last[handA] : this.hands[handA];\n const hB = last ? this.last[handB] : this.hands[handB];\n const jA = hA?.[jointA];\n const jB = hB?.[jointB];\n if (!jA || !jB) {\n return Number.POSITIVE_INFINITY;\n }\n return jA.position.distanceTo(jB.position);\n }\n\n separation(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.distance(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];\n }\n\n touching(\n handA: Hand,\n jointA: JointId,\n handB: Hand,\n jointB: JointId,\n last = false,\n ): number {\n const d = this.separation(handA, jointA, handB, jointB, last);\n if (d === Number.POSITIVE_INFINITY) {\n return Number.POSITIVE_INFINITY;\n }\n return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));\n }\n\n allTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"r4\", last),\n this.touching(hand, \"r4\", hand, \"p4\", last),\n // this.touching(hand, \"p4\", hand, \"t3\", last),\n );\n }\n\n triTipsTouching(hand: Hand, last = false): number {\n return Math.min(\n this.touching(hand, \"t3\", hand, \"i4\", last),\n this.touching(hand, \"i4\", hand, \"m4\", last),\n this.touching(hand, \"m4\", hand, \"t3\", last),\n );\n }\n}\n\nexport class HandMovement {\n xrHands: XrHands;\n control: Object3D;\n moveInertia: number;\n rotateInertia: number;\n\n lastGrip: { [key in Hand]?: Vector3 } = {};\n lastPivot: Vector3 = new Vector3();\n rotateVelocity = 0;\n velocity: Vector3 = new Vector3();\n\n constructor({\n xrHands,\n control,\n moveInertia,\n rotateInertia,\n }: {\n xrHands: XrHands;\n control: Object3D;\n moveInertia?: number;\n rotateInertia?: number;\n }) {\n this.xrHands = xrHands;\n this.control = control;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n }\n\n update(deltaTime: number) {\n const grip: { [key in Hand]?: Vector3 } = {};\n for (const handedness of HANDS) {\n const hand = this.xrHands.hands[handedness];\n if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {\n grip[handedness] = new Vector3()\n .add(hand.t3?.position ?? new Vector3())\n .add(hand.i4?.position ?? new Vector3())\n .add(hand.m4?.position ?? new Vector3())\n .add(hand.r4?.position ?? new Vector3())\n .add(hand.p4?.position ?? new Vector3())\n .multiplyScalar(1 / 5);\n }\n }\n\n if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {\n const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);\n const lastMid = this.lastGrip.left\n .clone()\n .add(this.lastGrip.right)\n .multiplyScalar(0.5);\n this.lastPivot = mid;\n\n const delta = mid.clone().applyMatrix4(this.control.matrix);\n delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n\n const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);\n const lastAngle = Math.atan2(\n this.lastGrip.left.z - lastMid.z,\n this.lastGrip.left.x - lastMid.x,\n );\n // Find closest rotation over circle between angle and lastAngle\n let closestAngle = angle - lastAngle;\n if (closestAngle > Math.PI) {\n closestAngle -= Math.PI * 2;\n } else if (closestAngle < -Math.PI) {\n closestAngle += Math.PI * 2;\n }\n const rotateVelocity = closestAngle / deltaTime;\n\n const blend = Math.exp(-20 * deltaTime);\n this.rotateVelocity =\n this.rotateVelocity * blend + rotateVelocity * (1 - blend);\n } else {\n this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);\n\n if (grip.left && this.lastGrip.left) {\n const delta = grip.left.clone().applyMatrix4(this.control.matrix);\n delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else if (grip.right && this.lastGrip.right) {\n const delta = grip.right.clone().applyMatrix4(this.control.matrix);\n delta.sub(\n this.lastGrip.right.clone().applyMatrix4(this.control.matrix),\n );\n delta.multiplyScalar(1 / deltaTime);\n this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));\n } else {\n this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));\n }\n }\n\n const negPivot = this.lastPivot.clone().negate();\n const rotate = new Matrix4()\n .makeTranslation(negPivot)\n .premultiply(new Matrix4().makeRotationY(this.rotateVelocity * deltaTime))\n .premultiply(new Matrix4().makeTranslation(this.lastPivot));\n this.control.matrix.multiply(rotate);\n this.control.matrix.decompose(\n this.control.position,\n this.control.quaternion,\n this.control.scale,\n );\n this.control.updateMatrixWorld(true);\n\n this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));\n this.lastGrip = grip;\n }\n}\n","import * as THREE from \"three\";\nimport { isAndroid, isIos } from \"./utils\";\n\n// Spark controls for keyboard + mouse, game pad, or mobile multi-touch\n\nconst DEFAULT_MOVEMENT_SPEED = 1.0;\nconst DEFAULT_ROLL_SPEED = 2.0;\nconst DEFAULT_ROTATE_SPEED = 0.002;\nconst DEFAULT_SLIDE_SPEED = 0.006;\nconst DEFAULT_SCROLL_SPEED = 0.0015;\nconst DEFAULT_ROLL_SPRING = 0.0;\nconst DEFAULT_ROTATE_INERTIA = 0.15;\nconst DEFAULT_MOVE_INERTIA = 0.15;\nconst DEFAULT_STICK_THRESHOLD = 0.1;\nconst DEFAULT_FPS_ROTATE_SPEED = 2.0;\n// const DEFAULT_POINTER_ROLL_SCALE = 1.0;\nconst DEFAULT_POINTER_ROLL_SCALE = 0.0;\nconst DEFAULT_PRESS_MOVE_DELAY_MS = 500;\nconst DEFAULT_PRESS_MOVE_ACCEL_MS = 500;\n\n// Time limit for double-finger press (pinch etc)\nconst DUAL_PRESS_MS = 200;\n// Time limit for double-click/double-tap\nconst DOUBLE_PRESS_LIMIT_MS = 400;\n// Distance limit for double-click.\nconst DOUBLE_PRESS_DISTANCE = 25;\n\nconst MOVEMENT_THRESHOLD = 1.0e-4;\n\n// Standard WASD movement keys with R+F for up/down\nconst WASD_KEYCODE_MOVE = {\n KeyW: new THREE.Vector3(0, 0, -1),\n KeyS: new THREE.Vector3(0, 0, 1),\n KeyA: new THREE.Vector3(-1, 0, 0),\n KeyD: new THREE.Vector3(1, 0, 0),\n KeyE: new THREE.Vector3(0, 1, 0),\n KeyQ: new THREE.Vector3(0, -1, 0),\n};\n\n// Arrow key movement with PageUp/PageDown\nconst ARROW_KEYCODE_MOVE = {\n ArrowUp: new THREE.Vector3(0, 0, -1),\n ArrowDown: new THREE.Vector3(0, 0, 1),\n ArrowLeft: new THREE.Vector3(-1, 0, 0),\n ArrowRight: new THREE.Vector3(1, 0, 0),\n PageUp: new THREE.Vector3(0, 1, 0),\n PageDown: new THREE.Vector3(0, -1, 0),\n};\n\n// Rolling with Q/E\nconst QE_KEYCODE_ROTATE = {\n KeyQ: new THREE.Vector3(0, 0, 1),\n KeyE: new THREE.Vector3(0, 0, -1),\n};\n\n// Home/End/Insert/Delete for rotation\nconst ARROW_KEYCODE_ROTATE = {\n Home: new THREE.Vector3(0, -1, 0),\n End: new THREE.Vector3(0, 1, 0),\n Insert: new THREE.Vector3(-1, 0, 0),\n Delete: new THREE.Vector3(1, 0, 0),\n};\n\n// SparkControls provides simple, intuitive controls for navigating 3D space that\n// use the keyboard + mouse, game pad, or mobile multi-touch. Internally it\n// instantiates and updates a `FpsMovement` and `PointerControls` instance.\n\nexport class SparkControls {\n fpsMovement: FpsMovement;\n pointerControls: PointerControls;\n lastTime = 0;\n\n constructor({ canvas }: { canvas: HTMLCanvasElement }) {\n this.fpsMovement = new FpsMovement({});\n this.pointerControls = new PointerControls({ canvas });\n }\n\n update(control: THREE.Object3D, camera?: THREE.Camera) {\n const time = performance.now();\n const deltaTime = (time - (this.lastTime || time)) / 1000;\n this.lastTime = time;\n\n let updated = this.fpsMovement.update(deltaTime, control);\n if (this.pointerControls.update(deltaTime, control, camera)) {\n updated = true;\n }\n return updated;\n }\n}\n\n// FpsMovement implements controls that will be familiar to anyone who plays\n// First Person Shooters using keyboard + mouse or a gamepad. Creating a FpsMovement\n// instance provides many parameters for configuring the controls.\n//\n// When gamepads are connected, FpsMovement will always use gamepad index 0\n// for twin-stick movement and rotation.\n//\n// If xr is passed in, the WebXR controllers can be used as a split gamepad\n// to control movement and rotation. (tested on Quest 3)\n\nexport class FpsMovement {\n moveSpeed: number;\n rollSpeed: number;\n stickThreshold: number;\n rotateSpeed: number;\n keycodeMoveMapping: { [key: string]: THREE.Vector3 };\n keycodeRotateMapping: { [key: string]: THREE.Vector3 };\n gamepadMapping: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n capsMultiplier: number;\n shiftMultiplier: number;\n ctrlMultiplier: number;\n xr?: THREE.WebXRManager;\n // Enable/disable controls updates\n enable = true;\n extraMove = new THREE.Vector3();\n\n // Currently active event.key values\n keydown: { [key: string]: boolean };\n // Currently active event.code values\n keycode: { [key: string]: boolean };\n\n constructor({\n moveSpeed,\n rollSpeed,\n stickThreshold,\n rotateSpeed,\n keycodeMoveMapping,\n keycodeRotateMapping,\n gamepadMapping,\n capsMultiplier,\n shiftMultiplier,\n ctrlMultiplier,\n xr,\n }: {\n // Base movement speed (default DEFAULT_MOVEMENT_SPEED)\n moveSpeed?: number;\n // Base roll speed (default DEFAULT_ROLL_SPEED)\n rollSpeed?: number;\n // Stick threshold (default DEFAULT_STICK_THRESHOLD)\n stickThreshold?: number;\n // Speed of rotation when using gamepad or keys (default DEFAULT_FPS_ROTATE_SPEED)\n rotateSpeed?: number;\n // Maps keyboard keys to movement directions\n // (default {...WASD_KEYCODE_MOVE, ...ARROW_KEYCODE_MOVE})\n keycodeMoveMapping?: { [key: string]: THREE.Vector3 };\n // Maps keyboard keys to rotation directions\n // (default { ...ARROW_KEYCODE_ROTATE})\n keycodeRotateMapping?: { [key: string]: THREE.Vector3 };\n // Maps gamepad buttons to control actions\n // (default {4: \"rollLeft\", 5: \"rollRight\", 6: \"ctrl\", 7: \"shift\"})\n gamepadMapping?: {\n [button: number]: \"shift\" | \"ctrl\" | \"rollLeft\" | \"rollRight\";\n };\n // Speed multiplier when Caps Lock is active (default: 10)\n capsMultiplier?: number;\n // Speed multiplier when Shift is active (default: 5)\n shiftMultiplier?: number;\n // Speed multiplier when Ctrl is active (default: 1/5)\n ctrlMultiplier?: number;\n // Optional WebXR manager for XR controller stick support\n xr?: THREE.WebXRManager;\n } = {}) {\n this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;\n this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;\n this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;\n this.keycodeMoveMapping = keycodeMoveMapping ?? {\n ...WASD_KEYCODE_MOVE,\n ...ARROW_KEYCODE_MOVE,\n };\n this.keycodeRotateMapping = keycodeRotateMapping ?? {\n // ...QE_KEYCODE_ROTATE,\n ...ARROW_KEYCODE_ROTATE,\n };\n this.gamepadMapping = gamepadMapping ?? {\n 4: \"rollLeft\",\n 5: \"rollRight\",\n 6: \"ctrl\",\n 7: \"shift\",\n };\n this.capsMultiplier = capsMultiplier ?? 10.0;\n this.shiftMultiplier = shiftMultiplier ?? 5.0;\n this.ctrlMultiplier = ctrlMultiplier ?? 1.0 / 5.0;\n\n this.xr = xr;\n\n this.keydown = {};\n this.keycode = {};\n\n document.addEventListener(\"keydown\", (event) => {\n this.keydown[event.key] = true;\n this.keycode[event.code] = true;\n });\n document.addEventListener(\"keyup\", (event) => {\n this.keydown[event.key] = false;\n this.keycode[event.code] = false;\n });\n window.addEventListener(\"blur\", () => {\n this.keydown = {};\n this.keycode = {};\n });\n }\n\n // Call this method in your render loop with `control` set to the object to control\n // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`\n // in seconds since the last update.\n update(deltaTime: number, control: THREE.Object3D) {\n if (!this.enable) {\n return false;\n }\n\n // Update gamepad / XR controllers\n\n const sticks = [new THREE.Vector2(), new THREE.Vector2()];\n const gamepad = navigator.getGamepads()[0];\n if (gamepad) {\n sticks[0].set(gamepad.axes[0], gamepad.axes[1]);\n sticks[1].set(gamepad.axes[2], gamepad.axes[3]);\n }\n const gamepadButtons =\n gamepad?.buttons.map((button) => button.pressed) || [];\n\n const xrSources = Array.from(this.xr?.getSession()?.inputSources ?? []);\n for (const source of xrSources) {\n const gamepad = source.gamepad;\n if (gamepad) {\n switch (source.handedness) {\n case \"none\": {\n sticks[0].x += gamepad.axes[0];\n sticks[0].y += gamepad.axes[1];\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n case \"left\": {\n sticks[0].x += gamepad.axes[2];\n sticks[0].y += gamepad.axes[3];\n break;\n }\n case \"right\": {\n sticks[1].x += gamepad.axes[2];\n sticks[1].y += gamepad.axes[3];\n break;\n }\n }\n }\n }\n\n for (const stick of sticks) {\n stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;\n stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;\n }\n\n // Rotation\n\n const rotate = new THREE.Vector3(\n sticks[1].x,\n sticks[1].y,\n 0,\n ).multiplyScalar(this.rotateSpeed);\n\n for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {\n if (this.keycode[keycode]) {\n rotate.add(rot);\n }\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"rollLeft\":\n rotate.z += 1;\n break;\n case \"rollRight\":\n rotate.z -= 1;\n break;\n }\n }\n }\n\n rotate.multiply(\n new THREE.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed),\n );\n\n let updated = rotate.length() > MOVEMENT_THRESHOLD;\n\n if (rotate.manhattanLength() > 0.0) {\n rotate.multiplyScalar(deltaTime);\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));\n control.quaternion.setFromEuler(eulers);\n }\n\n // Movement\n\n const moveVector = new THREE.Vector3(sticks[0].x, 0, sticks[0].y);\n moveVector.add(this.extraMove);\n\n for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {\n if (this.keycode[keycode]) {\n moveVector.add(move);\n }\n }\n\n let speedMultiplier = 1.0;\n if (this.keydown.CapsLock) {\n speedMultiplier *= this.capsMultiplier;\n }\n if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {\n speedMultiplier *= this.shiftMultiplier;\n }\n if (this.keycode.ControlLeft || this.keycode.ControlRight) {\n speedMultiplier *= this.ctrlMultiplier;\n }\n for (const button in this.gamepadMapping) {\n if (gamepadButtons[Number.parseInt(button)]) {\n switch (this.gamepadMapping[button]) {\n case \"shift\":\n speedMultiplier *= this.shiftMultiplier;\n break;\n case \"ctrl\":\n speedMultiplier *= this.ctrlMultiplier;\n break;\n }\n }\n }\n\n if (moveVector.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Apply movement in view direction\n moveVector.applyQuaternion(control.quaternion);\n control.position.add(\n moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime),\n );\n\n return updated;\n }\n}\n\ntype PointerState = {\n initial: THREE.Vector2;\n last: THREE.Vector2;\n position: THREE.Vector2;\n pointerId: number;\n button?: number;\n timeStamp: DOMHighResTimeStamp;\n};\n\n// `PointerControls` implements pointer/mouse/touch controls on the canvas,\n// for both desktop and mobile web applications.\n\nexport class PointerControls {\n canvas: HTMLCanvasElement;\n rotateSpeed: number;\n slideSpeed: number;\n scrollSpeed: number;\n swapRotateSlide: boolean;\n reverseRotate: boolean;\n reverseSlide: boolean;\n reverseSwipe: boolean;\n reverseScroll: boolean;\n moveInertia: number;\n rotateInertia: number;\n pointerRollScale: number;\n // Enable/disable controls updates\n enable = true;\n\n doublePress: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n // Time limit for double press (default DOUBLE_PRESS_LIMIT_MS)\n doublePressLimitMs: number;\n // Distance limit for double press (default DOUBLE_PRESS_DISTANCE)\n doublePressDistance: number;\n\n // Time delay in ms for press move to start\n pressMoveDelayMs: number;\n // Time in ms for press move to accelerate\n pressMoveAccelMs: number;\n // Speed of movement on press (default: 0)\n pressMoveSpeed: number;\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed: number;\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed: number;\n // Whether to move toward the screen center or finger when pressing to move\n pressMoveCenter: boolean;\n pressHeld?: boolean;\n doublePressed?: number;\n triplePressed: boolean;\n // Last pointer up event (default: null)\n lastUp: { position: THREE.Vector2; timeStamp: number } | null;\n lastLastUp: { position: THREE.Vector2; timeStamp: number } | null;\n\n // Pointer state for currently active rotating pointer\n rotating: PointerState | null;\n // Pointer state for currently active sliding pointer\n sliding: PointerState | null;\n // Pointer state for last pointer that downed\n lastDown: PointerState | null;\n // Whether we pressed two pointers at the same time\n dualPress: boolean;\n // Cumulative scroll movement\n scroll: THREE.Vector3;\n\n // Current rotation velocity\n rotateVelocity: THREE.Vector3;\n // Current movement velocity\n moveVelocity: THREE.Vector3;\n\n constructor({\n // The HTML canvas element to attach pointer events to\n canvas,\n // Speed of rotation (default DEFAULT_ROTATE_SPEED)\n rotateSpeed,\n // Speed of sliding when dragging with right/middle mouse button or two fingers\n // (default DEFAULT_SLIDE_SPEED)\n slideSpeed,\n // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)\n scrollSpeed,\n // Swap the direction of rotation and sliding (default: false)\n swapRotateSlide,\n // Reverse the direction of rotation (default: false)\n reverseRotate,\n // Reverse the direction of sliding (default: false)\n reverseSlide,\n // Reverse the direction of swipe gestures (default: false)\n reverseSwipe,\n // Reverse the direction of scroll wheel movement (default: false)\n reverseScroll,\n // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)\n moveInertia,\n // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)\n rotateInertia,\n // Pointer rolling scale factor (default: DEFAULT_POINTER_ROLL_SCALE)\n pointerRollScale,\n // Callback for double press events (default: () => {})\n doublePress,\n // Time delay in ms for press move to start (default: DEFAULT_PRESS_MOVE_DELAY_MS)\n pressMoveDelayMs,\n // Time in ms for press move to accelerate (default: DEFAULT_PRESS_MOVE_ACCEL_MS)\n pressMoveAccelMs,\n // Speed of movement on press (default: 0)\n pressMoveSpeed,\n // Speed of movement on double press (default: pressMoveSpeed * 5.0)\n doublePressMoveSpeed,\n // Speed of movement on triple press (default: doublePressMoveSpeed * 5.0)\n triplePressMoveSpeed,\n // Whether to move toward the screen center or finger when pressing to move (default: true)\n pressMoveCenter,\n }: {\n canvas: HTMLCanvasElement;\n rotateSpeed?: number;\n slideSpeed?: number;\n scrollSpeed?: number;\n swapRotateSlide?: boolean;\n reverseRotate?: boolean;\n reverseSlide?: boolean;\n reverseSwipe?: boolean;\n reverseScroll?: boolean;\n moveInertia?: number;\n rotateInertia?: number;\n pointerRollScale?: number;\n doublePress?: ({\n position,\n intervalMs,\n }: { position: THREE.Vector2; intervalMs: number }) => void;\n pressMoveDelayMs?: number;\n pressMoveAccelMs?: number;\n pressMoveSpeed?: number;\n doublePressMoveSpeed?: number;\n triplePressMoveSpeed?: number;\n pressMoveCenter?: boolean;\n }) {\n this.canvas = canvas;\n this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;\n this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;\n this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;\n this.swapRotateSlide = swapRotateSlide ?? false;\n this.reverseRotate = reverseRotate ?? (isAndroid() || isIos());\n this.reverseSlide = reverseSlide ?? false;\n this.reverseSwipe = reverseSwipe ?? false;\n this.reverseScroll = reverseScroll ?? false;\n this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;\n this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;\n this.pointerRollScale = pointerRollScale ?? DEFAULT_POINTER_ROLL_SCALE;\n\n this.doublePress = doublePress ?? (() => {});\n this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;\n this.doublePressDistance = DOUBLE_PRESS_DISTANCE;\n\n this.pressMoveDelayMs = pressMoveDelayMs ?? DEFAULT_PRESS_MOVE_DELAY_MS;\n this.pressMoveAccelMs = pressMoveAccelMs ?? DEFAULT_PRESS_MOVE_ACCEL_MS;\n this.pressMoveSpeed = pressMoveSpeed ?? 0;\n this.doublePressMoveSpeed =\n doublePressMoveSpeed ?? this.pressMoveSpeed * 5.0;\n this.triplePressMoveSpeed =\n triplePressMoveSpeed ?? this.doublePressMoveSpeed * 5.0;\n this.pressMoveCenter = pressMoveCenter ?? true;\n this.doublePressed = undefined;\n this.triplePressed = false;\n this.lastUp = null;\n this.lastLastUp = null;\n\n this.rotating = null;\n this.sliding = null;\n this.lastDown = null;\n this.dualPress = false;\n this.scroll = new THREE.Vector3();\n\n this.rotateVelocity = new THREE.Vector3();\n this.moveVelocity = new THREE.Vector3();\n\n canvas.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n const position = this.getPointerPosition(event);\n const initial = position.clone();\n const last = position.clone();\n\n // Determine if we're starting a rotation pointer action\n const isRotate =\n (!this.swapRotateSlide &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 0)) ||\n (this.swapRotateSlide &&\n this.sliding &&\n !this.rotating &&\n (event.pointerType !== \"mouse\" || event.button === 1));\n // const isRotate =\n // !this.rotating && (event.pointerType !== \"mouse\" || event.button === 0);\n const { pointerId } = event;\n const timeStamp = performance.now();\n\n if (isRotate) {\n this.rotating = { initial, last, position, pointerId, timeStamp };\n this.lastDown = this.rotating;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n this.dualPress = false;\n } else if (!this.sliding) {\n // If it's not a rotation action and we're not yet sliding, the next\n // pointer activates a sliding action\n const button = event.pointerType === \"mouse\" ? event.button : undefined;\n this.sliding = {\n initial,\n last,\n position,\n pointerId,\n button,\n timeStamp,\n };\n this.lastDown = this.sliding;\n // Capture the pointer so events continue to be delivered even if it leaves the canvas.\n canvas.setPointerCapture(event.pointerId);\n\n // Check if we pressed both pointers at roughly the same time\n this.dualPress =\n this.rotating != null &&\n timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;\n }\n\n if (this.lastUp) {\n const distance = this.lastUp.position.distanceTo(position);\n const intervalMs = timeStamp - this.lastUp.timeStamp;\n if (\n distance < this.doublePressDistance &&\n intervalMs < this.doublePressLimitMs\n ) {\n this.doublePressed = performance.now();\n this.triplePressed = false;\n\n if (this.lastLastUp) {\n const lastDistance = this.lastLastUp.position.distanceTo(\n this.lastUp.position,\n );\n const lastIntervalMs =\n this.lastUp.timeStamp - this.lastLastUp.timeStamp;\n if (\n lastDistance < this.doublePressDistance &&\n lastIntervalMs < this.doublePressLimitMs\n ) {\n this.triplePressed = true;\n }\n }\n }\n }\n });\n\n const pointerUp = (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.sliding) {\n canvas.releasePointerCapture(this.sliding.pointerId);\n this.sliding = null;\n }\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding = null;\n canvas.releasePointerCapture(event.pointerId);\n if (this.dualPress && this.rotating) {\n canvas.releasePointerCapture(this.rotating.pointerId);\n this.rotating = null;\n }\n }\n\n this.doublePressed = undefined;\n this.triplePressed = false;\n\n const position = this.getPointerPosition(event);\n const lastUp = this.lastUp;\n this.lastLastUp = this.lastUp;\n const timeStamp = performance.now();\n this.lastUp = { position, timeStamp };\n\n if (lastUp) {\n const distance = lastUp.position.distanceTo(position);\n if (distance < this.doublePressDistance) {\n const intervalMs = timeStamp - lastUp.timeStamp;\n if (intervalMs < this.doublePressLimitMs) {\n // We pressed and release twice within the time and distance limits\n // this.lastUp = null;\n this.doublePress({ position, intervalMs });\n }\n }\n }\n };\n\n document.addEventListener(\"pointerup\", pointerUp);\n document.addEventListener(\"pointercancel\", pointerUp);\n\n document.addEventListener(\"pointermove\", (event: PointerEvent) => {\n if (this.rotating?.pointerId === event.pointerId) {\n this.rotating.position = this.getPointerPosition(event);\n } else if (this.sliding?.pointerId === event.pointerId) {\n this.sliding.position = this.getPointerPosition(event);\n }\n });\n\n canvas.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n // Prevent context menu appearing on right click\n event.preventDefault();\n });\n\n canvas.addEventListener(\"wheel\", (event: WheelEvent) => {\n this.scroll.add(\n new THREE.Vector3(event.deltaX, event.deltaY, event.deltaZ),\n );\n event.preventDefault();\n });\n }\n\n getPointerPosition(event: PointerEvent): THREE.Vector2 {\n const rect = this.canvas.getBoundingClientRect();\n return new THREE.Vector2(\n event.clientX - rect.left,\n event.clientY - rect.top,\n );\n }\n\n update(deltaTime: number, control: THREE.Object3D, camera?: THREE.Camera) {\n if (!this.enable) {\n return false;\n }\n\n const now = performance.now();\n let updated = false;\n\n if (this.dualPress && this.rotating && this.sliding) {\n // We pressed both pointers at the same time, either pinching or sliding\n const motion = [\n this.rotating.position.clone().sub(this.rotating.last),\n this.sliding.position.clone().sub(this.sliding.last),\n ];\n const coincidence = motion[0].dot(motion[1]);\n\n if (coincidence >= 0.2) {\n // Similar directions so slide the camera on the XY plane\n const totalMotion = motion[0].clone().add(motion[1]);\n const slide = new THREE.Vector3(totalMotion.x, -totalMotion.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else if (coincidence <= -0.2) {\n // Opposite directions so either pinch or roll motion\n const deltaDir = this.sliding.last.clone().sub(this.rotating.last);\n const deltaDist = deltaDir.length();\n deltaDir.multiplyScalar(1 / deltaDist).normalize();\n\n const orthoDir = new THREE.Vector2(-deltaDir.y, deltaDir.x);\n const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];\n const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];\n\n // Pinching motion\n const midpoint = this.rotating.last\n .clone()\n .add(this.sliding.last)\n .multiplyScalar(0.5);\n let midpointDir = new THREE.Vector3();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcMidpoint = new THREE.Vector2(\n (midpoint.x / this.canvas.clientWidth) * 2 - 1,\n -(midpoint.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcMidpoint, theCamera);\n midpointDir = raycaster.ray.direction;\n }\n const pinchOut = motionDir[1] - motionDir[0];\n const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);\n control.position.add(slide);\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n\n // Rolling motion\n // Calculate angle of orthogonal motion change over distance deltaDist/2\n // motionOrtho[0] and 1 are already in float distance\n const angles = [\n Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),\n Math.atan(motionOrtho[1] / (0.5 * deltaDist)),\n ];\n const rotate = 0.5 * (angles[0] + angles[1]) * this.pointerRollScale;\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.z = Math.max(\n -Math.PI,\n Math.min(Math.PI, eulers.z + 0.5 * rotate),\n );\n control.quaternion.setFromEuler(eulers);\n\n if (Math.abs(rotate) > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n this.rotating.last.copy(this.rotating.position);\n this.sliding.last.copy(this.sliding.position);\n } else {\n // Didn't press both pointers at the same time, so we're in rotating\n // or FPS mode\n const rotate = new THREE.Vector3();\n if (this.rotating && !this.dualPress) {\n const delta = this.rotating.position.clone().sub(this.rotating.last);\n this.rotating.last.copy(this.rotating.position);\n rotate.set(delta.x, delta.y, 0);\n rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));\n // Update rotation velocity from last delta\n this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);\n\n if (rotate.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n // Continue to rotate with inertia\n this.rotateVelocity.multiplyScalar(\n Math.exp(-deltaTime / this.rotateInertia),\n );\n rotate.addScaledVector(this.rotateVelocity, deltaTime);\n\n if (this.rotateVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n\n // Apply rotation in Euler angles space\n const eulers = new THREE.Euler().setFromQuaternion(\n control.quaternion,\n \"YXZ\",\n );\n eulers.y -= rotate.x;\n eulers.x = Math.max(\n -Math.PI / 2,\n Math.min(Math.PI / 2, eulers.x - rotate.y),\n );\n eulers.z *= Math.exp(-DEFAULT_ROLL_SPRING * deltaTime);\n control.quaternion.setFromEuler(eulers);\n\n if (this.sliding && !this.dualPress) {\n const delta = this.sliding.position.clone().sub(this.sliding.last);\n this.sliding.last.copy(this.sliding.position);\n\n // Slide on plane depending on center/right mouse button\n const slide =\n this.sliding.button !== 2\n ? new THREE.Vector3(delta.x, 0, delta.y)\n : new THREE.Vector3(delta.x, -delta.y, 0);\n slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));\n\n slide.applyQuaternion(control.quaternion);\n control.position.add(slide);\n // Update movement velocity from last delta\n this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);\n\n if (slide.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n } else {\n const target = new THREE.Vector3();\n if (this.sliding || this.rotating) {\n const point = this.lastDown?.last ?? new THREE.Vector2();\n const theCamera =\n camera ?? (control instanceof THREE.Camera ? control : undefined);\n if (theCamera) {\n const ndcPoint = this.pressMoveCenter\n ? new THREE.Vector2(0, 0)\n : new THREE.Vector2(\n (point.x / this.canvas.clientWidth) * 2 - 1,\n -(point.y / this.canvas.clientHeight) * 2 + 1,\n );\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(ndcPoint, theCamera);\n target.copy(raycaster.ray.direction).normalize();\n }\n\n if (!this.doublePressed) {\n let intensity = 0;\n if (this.lastDown) {\n intensity =\n (now -\n (this.lastDown?.timeStamp ?? now) -\n this.pressMoveDelayMs) /\n this.pressMoveAccelMs;\n\n if (\n this.lastDown.position.distanceTo(this.lastDown.initial) <\n this.doublePressDistance\n ) {\n if (this.pressHeld === undefined) {\n if (intensity > 0) {\n this.pressHeld = true;\n }\n }\n } else if (this.pressHeld === undefined) {\n this.pressHeld = false;\n }\n }\n\n if (this.pressHeld) {\n target.multiplyScalar(\n this.pressMoveSpeed * Math.max(0, Math.min(1, intensity)),\n );\n } else {\n target.set(0, 0, 0);\n }\n } else {\n this.pressHeld = false;\n let intensity =\n (performance.now() - this.doublePressed) / this.pressMoveAccelMs;\n intensity = Math.max(0, Math.min(1, intensity));\n target.multiplyScalar(\n (this.triplePressed\n ? this.triplePressMoveSpeed\n : this.doublePressMoveSpeed) * intensity,\n );\n }\n } else {\n this.pressHeld = undefined;\n }\n // Continue to move with inertia\n const s = Math.exp(-deltaTime / this.moveInertia);\n this.moveVelocity.lerpVectors(target, this.moveVelocity, s);\n control.position.addScaledVector(this.moveVelocity, deltaTime);\n\n if (this.moveVelocity.length() * 0.1 > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n }\n }\n\n const scroll = this.scroll.multiplyScalar(this.scrollSpeed);\n scroll.set(scroll.x, scroll.z, scroll.y);\n if (this.reverseScroll) {\n scroll.multiplyScalar(-1);\n }\n scroll.applyQuaternion(control.quaternion);\n control.position.add(scroll);\n\n if (scroll.length() > MOVEMENT_THRESHOLD) {\n updated = true;\n }\n this.scroll.set(0, 0, 0);\n\n return updated;\n }\n}\n","import * as THREE from \"three\";\nimport { SparkRenderer, type SparkRendererOptions } from \"./SparkRenderer\";\n\n/**\n * Fragment shader for portal disk clipping.\n * - diskRadius > 0: render \"behind portal\" only through the disk\n * - diskRadius < 0: render \"in front of portal\" everywhere except behind disk\n */\nexport const DISK_PORTAL_FRAGMENT_SHADER = `\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n`;\n\n/**\n * Callback function called when a portal is crossed.\n * @param pair The portal pair that was crossed\n * @param fromEntry True if crossing from entry to exit, false if crossing from exit to entry\n */\nexport type PortalCrossCallback = (\n pair: PortalPair,\n fromEntry: boolean,\n) => void | Promise;\n\n/**\n * A pair of connected portals. Walking through one teleports you to the other.\n */\nexport interface PortalPair {\n /** First portal endpoint */\n entryPortal: THREE.Object3D;\n /** Second portal endpoint */\n exitPortal: THREE.Object3D;\n /** Radius of this portal pair's disks */\n radius: number;\n /** Optional callback function called when this portal is crossed */\n onCross?: PortalCrossCallback;\n /** Scratch matrix for tracking portal position before frame updates */\n _entryBefore: THREE.Matrix4;\n /** Scratch matrix for tracking portal position before frame updates */\n _exitBefore: THREE.Matrix4;\n}\n\nexport interface SparkPortalsOptions {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n /** Options passed to both SparkRenderer instances */\n sparkOptions?: Partial;\n /** Default portal disk radius for new pairs (default: 1.0) */\n defaultPortalRadius?: number;\n /** Epsilon for portal crossing detection (default: 1e-6) */\n portalCrossEps?: number;\n}\n\n/**\n * SparkPortals\n *\n * Portal implementation to connect two non-contiguous areas of a scene.\n * Supports multiple portal pairs - each pair connects two locations.\n *\n * The rough approach is to use two SparkRenderers: one for the \"front\"/portal\n * view (portalRenderer), and one for the \"behind portal\" pass (behindRenderer).\n *\n * Example:\n * ```typescript\n * const portals = new SparkPortals({ renderer, scene, camera, localFrame });\n *\n * // Add a portal pair\n * const pair = portals.addPortalPair();\n * pair.entryPortal.position.set(0, 0, -1);\n * pair.exitPortal.position.set(-3, 0, -4.5);\n *\n * // Add another pair\n * const pair2 = portals.addPortalPair({ radius: 0.5 });\n * pair2.entryPortal.position.set(5, 0, 0);\n * pair2.exitPortal.position.set(10, 0, 0);\n *\n * // In animation loop:\n * portals.animateLoopHook();\n * ```\n */\nexport class SparkPortals {\n /** The THREE.WebGLRenderer */\n renderer: THREE.WebGLRenderer;\n /** The scene to render */\n scene: THREE.Scene;\n /** The main camera */\n camera: THREE.PerspectiveCamera;\n /** The local frame (parent of camera, used for teleportation) */\n localFrame: THREE.Group;\n\n /** Primary renderer with portal shader (added to scene) */\n portalRenderer: SparkRenderer;\n /** Secondary renderer for behind-portal pass (not in scene) */\n behindRenderer: SparkRenderer;\n /** Secondary camera for behind-portal view */\n camera2: THREE.PerspectiveCamera;\n\n /** All portal pairs */\n portalPairs: PortalPair[] = [];\n /** Default radius for new portal pairs */\n defaultPortalRadius: number;\n /** Epsilon for portal crossing detection */\n portalCrossEps: number;\n\n /** Used to detect crossing between frames */\n private lastCameraWorld = new THREE.Vector3().setScalar(Number.NaN);\n /** Whether portal LoD prefetch is currently enabled */\n private prefetchActive = false;\n\n // Preallocated objects for scratch work to avoid per frame allocations\n private scratch = {\n quat: new THREE.Quaternion(),\n scale: new THREE.Vector3(),\n center0: new THREE.Vector3(),\n center1: new THREE.Vector3(),\n normal0: new THREE.Vector3(),\n normal1: new THREE.Vector3(),\n centerT: new THREE.Vector3(),\n normalT: new THREE.Vector3(),\n prevCameraWorld: new THREE.Vector3(),\n currCameraWorld: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n offset: new THREE.Vector3(),\n camWorld: new THREE.Matrix4(),\n newCamWorld: new THREE.Matrix4(),\n invCamLocal: new THREE.Matrix4(),\n newLocalFrame: new THREE.Matrix4(),\n cameraWorldPos: new THREE.Vector3(),\n viewDir: new THREE.Vector3(),\n portalCenter: new THREE.Vector3(),\n toPortal: new THREE.Vector3(),\n };\n\n constructor(options: SparkPortalsOptions) {\n this.renderer = options.renderer;\n this.scene = options.scene;\n this.camera = options.camera;\n this.localFrame = options.localFrame;\n this.defaultPortalRadius = options.defaultPortalRadius ?? 1.0;\n this.portalCrossEps = options.portalCrossEps ?? 1e-6;\n\n const sparkOpts = options.sparkOptions ?? {};\n\n // Primary renderer with portal shader\n this.portalRenderer = new SparkRenderer({\n renderer: this.renderer,\n extraUniforms: {\n diskCenter: { value: new THREE.Vector3() },\n diskNormal: { value: new THREE.Vector3() },\n diskRadius: { value: 0 },\n diskTwoSided: { value: false },\n },\n fragmentShader: DISK_PORTAL_FRAGMENT_SHADER,\n ...sparkOpts,\n });\n this.scene.add(this.portalRenderer);\n\n // Secondary renderer for behind-portal pass\n // enableDriveLod: false prevents this renderer from driving LOD updates,\n // avoiding race conditions with portalRenderer's pager operations\n this.behindRenderer = new SparkRenderer({\n renderer: this.renderer,\n enableDriveLod: false,\n ...sparkOpts,\n });\n\n // Secondary camera for behind-portal view\n this.camera2 = this.camera.clone();\n this.scene.add(this.camera2);\n }\n\n /**\n * Add a new portal pair to the system.\n * @param options Optional configuration for this pair\n * @returns The created PortalPair - position the entryPortal and exitPortal as needed\n */\n addPortalPair(options?: {\n radius?: number;\n onCross?: PortalCrossCallback;\n }): PortalPair {\n const pair: PortalPair = {\n entryPortal: new THREE.Object3D(),\n exitPortal: new THREE.Object3D(),\n radius: options?.radius ?? this.defaultPortalRadius,\n onCross: options?.onCross,\n _entryBefore: new THREE.Matrix4(),\n _exitBefore: new THREE.Matrix4(),\n };\n\n this.scene.add(pair.entryPortal);\n this.scene.add(pair.exitPortal);\n this.portalPairs.push(pair);\n\n return pair;\n }\n\n /**\n * Remove a portal pair from the system.\n */\n removePortalPair(pair: PortalPair): void {\n const index = this.portalPairs.indexOf(pair);\n if (index !== -1) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n this.portalPairs.splice(index, 1);\n }\n }\n\n /**\n * Get transform from entry portal to exit portal.\n */\n getEntryToExitTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.entryPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.exitPortal.matrixWorld);\n }\n\n /**\n * Get transform from exit portal to entry portal.\n */\n getExitToEntryTransform(pair: PortalPair): THREE.Matrix4 {\n return pair.exitPortal.matrixWorld\n .clone()\n .invert()\n .premultiply(pair.entryPortal.matrixWorld);\n }\n\n /** Set portal disk uniforms for shader clipping */\n private setPortalDiskUniforms(\n camera: THREE.Camera,\n portal: THREE.Object3D,\n radius: number,\n twoSided: boolean,\n ): void {\n camera.updateMatrixWorld(true);\n portal.updateMatrixWorld(true);\n\n const inverseCamera = camera.matrixWorld.clone().invert();\n const portalInCamera = portal.matrixWorld\n .clone()\n .premultiply(inverseCamera);\n const portalQuat = new THREE.Quaternion();\n\n // Extend the base uniform type with our portal-specific uniforms so TS is happy.\n const uniforms = this.portalRenderer\n .uniforms as typeof this.portalRenderer.uniforms & {\n diskCenter: { value: THREE.Vector3 };\n diskNormal: { value: THREE.Vector3 };\n diskRadius: { value: number };\n diskTwoSided: { value: boolean };\n };\n\n portalInCamera.decompose(\n uniforms.diskCenter.value,\n portalQuat,\n new THREE.Vector3(),\n );\n\n uniforms.diskNormal.value.set(0, 0, 1).applyQuaternion(portalQuat);\n uniforms.diskRadius.value = radius;\n uniforms.diskTwoSided.value = twoSided;\n }\n\n /** Extract portal plane from matrix */\n private getPortalPlane(\n matrix: THREE.Matrix4,\n outCenter: THREE.Vector3,\n outNormal: THREE.Vector3,\n ): void {\n matrix.decompose(outCenter, this.scratch.quat, this.scratch.scale);\n outNormal.set(0, 0, 1).applyQuaternion(this.scratch.quat).normalize();\n }\n\n /**\n * Detect if the user path crosses over a portal. If so, return the parametric position (0,1)\n * along the segment where the crossing occurs. If not, return null.\n */\n private getSegmentDiskCrossing(\n prevCam: THREE.Vector3,\n currCam: THREE.Vector3,\n beforeMatrix: THREE.Matrix4,\n afterMatrix: THREE.Matrix4,\n radius: number,\n ): number | null {\n this.getPortalPlane(\n beforeMatrix,\n this.scratch.center0,\n this.scratch.normal0,\n );\n this.getPortalPlane(\n afterMatrix,\n this.scratch.center1,\n this.scratch.normal1,\n );\n\n const startPlaneDist = this.scratch.offset\n .copy(prevCam)\n .sub(this.scratch.center0)\n .dot(this.scratch.normal0);\n const endPlaneDist = this.scratch.offset\n .copy(currCam)\n .sub(this.scratch.center1)\n .dot(this.scratch.normal1);\n\n if (\n (startPlaneDist > this.portalCrossEps &&\n endPlaneDist > this.portalCrossEps) ||\n (startPlaneDist < -this.portalCrossEps &&\n endPlaneDist < -this.portalCrossEps)\n ) {\n return null;\n }\n\n const denom = startPlaneDist - endPlaneDist;\n if (Math.abs(denom) < this.portalCrossEps) return null;\n\n const t = startPlaneDist / denom;\n if (t < 0 || t > 1) return null;\n\n this.scratch.hit.lerpVectors(prevCam, currCam, t);\n this.scratch.centerT\n .copy(this.scratch.center0)\n .lerp(this.scratch.center1, t);\n this.scratch.normalT\n .copy(this.scratch.normal0)\n .lerp(this.scratch.normal1, t)\n .normalize();\n\n this.scratch.offset.copy(this.scratch.hit).sub(this.scratch.centerT);\n this.scratch.offset.addScaledVector(\n this.scratch.normalT,\n -this.scratch.offset.dot(this.scratch.normalT),\n );\n\n if (this.scratch.offset.lengthSq() > radius * radius) return null;\n return t;\n }\n\n /** Teleport camera through portal */\n private teleport(transform: THREE.Matrix4): void {\n this.scratch.camWorld.copy(this.camera.matrixWorld);\n this.scratch.newCamWorld.copy(this.scratch.camWorld).premultiply(transform);\n this.scratch.invCamLocal.copy(this.camera.matrix).invert();\n this.scratch.newLocalFrame\n .copy(this.scratch.newCamWorld)\n .multiply(this.scratch.invCamLocal);\n\n this.scratch.newLocalFrame.decompose(\n this.localFrame.position,\n this.localFrame.quaternion,\n this.localFrame.scale,\n );\n this.localFrame.updateMatrixWorld(true);\n this.camera.updateMatrixWorld(true);\n }\n\n /**\n * Check for portal crossing and teleport if needed.\n * Checks all portal pairs and takes the earliest crossing.\n * Call this after updating controls but before render().\n */\n updateTeleportation(): void {\n if (this.portalPairs.length === 0) return;\n\n this.camera.getWorldPosition(this.scratch.currCameraWorld);\n if (!Number.isFinite(this.lastCameraWorld.x)) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n this.scratch.prevCameraWorld.copy(this.lastCameraWorld);\n\n // Store portal matrices before any updates and find earliest crossing\n let earliestT: number | null = null;\n let crossedPair: PortalPair | null = null;\n let crossedEntry = true; // true = crossed entry portal, false = crossed exit portal\n\n for (const pair of this.portalPairs) {\n pair.entryPortal.updateMatrixWorld(true);\n pair.exitPortal.updateMatrixWorld(true);\n pair._entryBefore.copy(pair.entryPortal.matrixWorld);\n pair._exitBefore.copy(pair.exitPortal.matrixWorld);\n\n // Check entry portal crossing\n const entryT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._entryBefore,\n pair.entryPortal.matrixWorld,\n pair.radius,\n );\n\n if (entryT !== null && (earliestT === null || entryT < earliestT)) {\n earliestT = entryT;\n crossedPair = pair;\n crossedEntry = true;\n }\n\n // Check exit portal crossing\n const exitT = this.getSegmentDiskCrossing(\n this.scratch.prevCameraWorld,\n this.scratch.currCameraWorld,\n pair._exitBefore,\n pair.exitPortal.matrixWorld,\n pair.radius,\n );\n\n if (exitT !== null && (earliestT === null || exitT < earliestT)) {\n earliestT = exitT;\n crossedPair = pair;\n crossedEntry = false;\n }\n }\n\n // No portal crossed\n if (crossedPair === null) {\n this.lastCameraWorld.copy(this.scratch.currCameraWorld);\n return;\n }\n\n // Teleport through the crossed portal\n if (crossedEntry) {\n this.teleport(this.getEntryToExitTransform(crossedPair));\n } else {\n this.teleport(this.getExitToEntryTransform(crossedPair));\n }\n\n this.camera.getWorldPosition(this.lastCameraWorld);\n\n // Call the portal's onCross callback if provided\n if (crossedPair.onCross) {\n // Call async callback but don't await (updateTeleportation is synchronous)\n // Errors will be logged but won't block teleportation\n Promise.resolve(crossedPair.onCross(crossedPair, crossedEntry)).catch(\n (error) => {\n console.error(\"Error in portal onCross callback:\", error);\n },\n );\n }\n }\n\n /**\n * Find the most relevant portal for rendering (closest to camera view direction).\n * Returns the portal pair and which portal (entry or exit) is primary.\n */\n private findPrimaryPortal(): {\n pair: PortalPair;\n primaryIsEntry: boolean;\n primaryPortal: THREE.Object3D;\n otherPortal: THREE.Object3D;\n } | null {\n if (this.portalPairs.length === 0) return null;\n\n this.camera.getWorldPosition(this.scratch.cameraWorldPos);\n this.camera.getWorldDirection(this.scratch.viewDir);\n\n let bestScore = Number.NEGATIVE_INFINITY;\n let bestPair: PortalPair | null = null;\n let bestIsEntry = true;\n\n for (const pair of this.portalPairs) {\n // Score entry portal\n pair.entryPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const entryDist = this.scratch.toPortal.length();\n const entryScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / entryDist;\n\n if (entryScore > bestScore) {\n bestScore = entryScore;\n bestPair = pair;\n bestIsEntry = true;\n }\n\n // Score exit portal\n pair.exitPortal.getWorldPosition(this.scratch.portalCenter);\n this.scratch.toPortal\n .copy(this.scratch.portalCenter)\n .sub(this.scratch.cameraWorldPos);\n const exitDist = this.scratch.toPortal.length();\n const exitScore =\n this.scratch.toPortal.normalize().dot(this.scratch.viewDir) / exitDist;\n\n if (exitScore > bestScore) {\n bestScore = exitScore;\n bestPair = pair;\n bestIsEntry = false;\n }\n }\n\n if (!bestPair) return null;\n\n return {\n pair: bestPair,\n primaryIsEntry: bestIsEntry,\n primaryPortal: bestIsEntry ? bestPair.entryPortal : bestPair.exitPortal,\n otherPortal: bestIsEntry ? bestPair.exitPortal : bestPair.entryPortal,\n };\n }\n\n /**\n * Render the scene with portals using two-pass rendering.\n * Renders the most relevant portal pair (closest to camera view).\n * Call this instead of renderer.render() in your animation loop.\n */\n render(): void {\n const primary = this.findPrimaryPortal();\n\n // No portals - just render normally\n if (!primary) {\n if (this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras();\n this.prefetchActive = false;\n }\n this.renderer.autoClear = true;\n this.renderer.render(this.scene, this.camera);\n return;\n }\n\n if (!this.prefetchActive) {\n // this.portalRenderer.setPrefetchCameras([this.camera2]);\n this.prefetchActive = true;\n }\n\n const { pair, primaryIsEntry, primaryPortal, otherPortal } = primary;\n\n // Compute camera2 position (transformed through portal)\n const camera2Matrix = primaryIsEntry\n ? this.camera.matrixWorld\n .clone()\n .premultiply(this.getEntryToExitTransform(pair))\n : this.camera.matrixWorld\n .clone()\n .premultiply(this.getExitToEntryTransform(pair));\n camera2Matrix.decompose(\n this.camera2.position,\n this.camera2.quaternion,\n this.camera2.scale,\n );\n this.camera2.updateMatrixWorld(true);\n\n // Share lodInstances from portalRenderer to behindRenderer BEFORE Pass 1.\n // This uses previous frame's lodInstances (computed with main camera),\n // ensuring both passes use consistent splat selections to avoid flickering.\n this.shareLodInstances();\n\n // Pass 1: Behind portal view (uses shared lodInstances)\n this.setPortalDiskUniforms(this.camera2, otherPortal, pair.radius, true);\n this.renderer.autoClear = true;\n this.behindRenderer.render(this.scene, this.camera2);\n\n // Pass 2: Main view (updates portalRenderer's lodInstances for next frame)\n this.setPortalDiskUniforms(this.camera, primaryPortal, -pair.radius, true);\n this.renderer.autoClear = false;\n this.portalRenderer.render(this.scene, this.camera);\n }\n\n /**\n * Share lodInstances from portalRenderer to behindRenderer.\n * Uses previous frame's values to ensure both passes render consistent splats.\n */\n private shareLodInstances(): void {\n // Clear and copy lodInstances from portalRenderer to behindRenderer\n this.behindRenderer.lodInstances.clear();\n for (const [mesh, data] of this.portalRenderer.lodInstances) {\n this.behindRenderer.lodInstances.set(mesh, data);\n }\n }\n\n /**\n * Convenience hook for animation loop.\n * Calls updateTeleportation() then render().\n */\n animateLoopHook(): void {\n this.updateTeleportation();\n this.render();\n }\n\n /** Update camera2 aspect ratio on window resize */\n updateAspect(aspect: number): void {\n this.camera2.aspect = aspect;\n this.camera2.updateProjectionMatrix();\n }\n\n /** Dispose of resources */\n dispose(): void {\n this.scene.remove(this.portalRenderer);\n this.scene.remove(this.camera2);\n\n for (const pair of this.portalPairs) {\n this.scene.remove(pair.entryPortal);\n this.scene.remove(pair.exitPortal);\n }\n this.portalPairs = [];\n\n this.portalRenderer.dispose();\n this.behindRenderer.dispose();\n }\n}\n"],"names":["LN_SCALE_MIN","LN_SCALE_MAX","SCALE_MIN","SCALE_MAX","LN_SCALE_ZERO","SCALE_ZERO","SPLAT_TEX_WIDTH_BITS","SPLAT_TEX_HEIGHT_BITS","SPLAT_TEX_DEPTH_BITS","SPLAT_TEX_LAYER_BITS","SPLAT_TEX_WIDTH","SPLAT_TEX_HEIGHT","SPLAT_TEX_DEPTH","SPLAT_TEX_MIN_HEIGHT","SPLAT_TEX_WIDTH_MASK","SPLAT_TEX_HEIGHT_MASK","SPLAT_TEX_DEPTH_MASK","WASM_SPLAT_SORT","USE_COMPILED_PARSER_FUNCTION","SplatFileType","DEFAULT_SPLAT_ENCODING","isBoolType","type","isScalarType","isIntType","isUintType","isFloatType","isMatFloatType","isAllFloatType","isVector2Type","isVector3Type","isVector4Type","isVectorType","isMat2","isMat3","isMat4","vectorElementType","vectorDim","sameSizeVec","sameSizeUvec","sameSizeIvec","typeLiteral","numberAsInt","value","numberAsUint","numberAsFloat","valType","val","DynoValue","DynoOutput","dyno","key","DynoLiteral","literal","dynoLiteral","DynoConst","v","THREE","m","e","arg","_","i","dynoConst","literalZero","typeString","literalOne","literalNegOne","DEFAULT_INDENT","Compilation","indent","Dyno","inTypes","outTypes","inputs","update","globals","statements","generate","outputs","compile","_a","_b","result","declares","name","uniforms","global","dynoDeclare","line","DynoBlock","construct","args","blockInputs","blockOutputs","options","returned","ordering","nodeOuts","visit","node","outKey","outName","outs","input","root","steps","source","newSteps","literalOutputs","step","index","dynoBlock","count","typeStr","unindentLines","s","seenNonEmpty","lines","trimmedLine","regex","unindent","UnaryOp","a","outTypeFunc","outType","BinaryOp","b","TrinaryOp","c","Gsplat","CovSplat","TPackedSplats","TExtSplats","TCovSplats","numPackedSplats","packedSplats","NumPackedSplats","readPackedSplat","ReadPackedSplat","readPackedSplatRange","base","ReadPackedSplatRange","numExtSplats","extSplats","NumExtSplats","readExtSplat","ReadExtSplat","numCovSplats","covsplats","NumCovSplats","readCovSplat","covSplats","ReadCovSplat","gsplatToCovSplat","gsplat","GsplatToCovSplat","splitGsplat","SplitGsplat","combineGsplat","flags","center","scales","quaternion","rgba","rgb","opacity","x","y","z","r","g","CombineGsplat","gsplatNormal","GsplatNormal","transformGsplat","scale","rotate","translate","recolor","TransformGsplat","splatTexCoord","SplatTexCoord","pagedSplatTexCoord","PagedSplatTexCoord","defineGsplat","defineCovSplat","definePackedSplats","defineReadPackedArray","defineExtSplats","defineReadExtArrays","defineReadCovArrays","covsplat","active","outGsplat","defineGsplatNormal","splitCovSplat","SplitCovSplat","combineCovSplat","CombineCovSplat","outCovSplat","coord","outputPackedSplat","rgbMinMaxLnScaleMinMax","OutputPackedSplat","outputCovSplat","OutputCovSplat","outputExtendedSplat","OutputExtendedSplat","outputExtCovSplat","OutputExtCovSplat","outputSplatDepth","viewCenter","viewDir","sortRadial","OutputSplatDepth","outputCovSplatDepth","OutputCovSplatDepth","outputRgba8","rgba8","OutputRgba8","uniform","DynoUniform","dynoBool","DynoBool","dynoUint","DynoUint","dynoInt","DynoInt","dynoFloat","DynoFloat","dynoBvec2","DynoBvec2","dynoUvec2","DynoUvec2","dynoIvec2","DynoIvec2","dynoVec2","DynoVec2","dynoBvec3","DynoBvec3","dynoUvec3","DynoUvec3","dynoIvec3","DynoIvec3","dynoVec3","DynoVec3","dynoBvec4","DynoBvec4","dynoUvec4","DynoUvec4","dynoIvec4","DynoIvec4","dynoVec4","DynoVec4","dynoMat2","DynoMat2","dynoMat2x2","DynoMat2x2","dynoMat2x3","DynoMat2x3","dynoMat2x4","DynoMat2x4","dynoMat3","DynoMat3","dynoMat3x2","DynoMat3x2","dynoMat3x3","DynoMat3x3","dynoMat3x4","DynoMat3x4","dynoMat4","DynoMat4","dynoMat4x2","DynoMat4x2","dynoMat4x3","DynoMat4x3","dynoMat4x4","DynoMat4x4","dynoUsampler2D","DynoUsampler2D","dynoIsampler2D","DynoIsampler2D","dynoSampler2D","DynoSampler2D","dynoUsampler2DArray","DynoUsampler2DArray","dynoIsampler2DArray","DynoIsampler2DArray","dynoSampler2DArray","DynoSampler2DArray","dynoUsampler3D","DynoUsampler3D","dynoIsampler3D","DynoIsampler3D","dynoSampler3D","DynoSampler3D","dynoUsamplerCube","DynoUsamplerCube","dynoIsamplerCube","DynoIsamplerCube","dynoSamplerCube","DynoSamplerCube","dynoSampler2DShadow","DynoSampler2DShadow","dynoSampler2DArrayShadow","DynoSampler2DArrayShadow","dynoSamplerCubeShadow","DynoSamplerCubeShadow","allGlobals","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","j","fl","revfl","fd","rev","hMap","cd","mb","l","le","co","rvb","sv","r_1","flt","fdt","flrm","fdrm","max","bits","d","p","o","bits16","shft","slc","ec","err","ind","msg","nt","inflt","dat","st","buf","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","n","lt","dt","t","lms","dms","lpos","sym","add","dsym","end","shift","dend","et","b2","b4","b8","gzs","flg","zs","Inflate","opts","cb","bts","chunk","inflateSync","data","Gunzip","td","tds","dutf8","strFromU8","latin1","slzh","zh","fnl","fn","es","bs","z64e","sc","su","off","unzipSync","files","ze","fltr","c_2","no","threeRevision","threeMrtArray","f32buffer","u32buffer","supportsFloat16Array","f16buffer","u16buffer","normalize","vec","norm","acc","floatBitsToUint","f","uintBitsToFloat","u","toHalf","toHalfNative","toHalfJS","fromHalf","fromHalfNative","fromHalfJS","sign","exp","frac","halfSign","newExp","subFrac","halfFrac","h","f32bits","mant","newFrac","floatToUint8","floatToSint8","Uint8ToFloat","Sint8ToFloat","DataCache","asyncFetch","dispose","maxItems","item","immediate","pending","removed","mapObject","obj","entries","mapFilterObject","getTransferable","ctx","buffers","seen","traverse","newArray","initFunction","FreeList","allocate","valid","encodeExtSplat","extArrays","scaleX","scaleY","scaleZ","quatX","quatY","quatZ","quatW","i4","extA","extB","encodeQuatOctXy1010R12","decodeExtSplat","packedFields","decodeQuatOctXy1010R12","setPackedSplat","encoding","rgbMin","rgbRange","uR","uG","uB","uA","uQuat","encodeQuatOctXy88R8","tempQuaternion","uQuatX","uQuatY","uQuatZ","lnScaleMin","lnScaleScale","uScaleX","uScaleY","uScaleZ","uCenterX","uCenterY","uCenterZ","setPackedSplatCenter","setPackedSplatScales","setPackedSplatQuat","setPackedSplatRgba","setPackedSplatRgb","setPackedSplatOpacity","packedCenter","packedScales","packedQuaternion","packedColor","unpackSplat","word0","word1","word2","word3","uScalesX","uScalesY","uScalesZ","decodeQuatOctXy88R8","getTextureSize","numSplats","width","height","depth","maxSplats","computeMaxSplats","isMobile","isAndroid","isOculus","isQuest2","isIos","isVisionPro","flipPixels","pixels","tempLine","topOffset","bottomOffset","pixelsToPngUrl","canvas","imageData","cloneClock","clock","newClock","omitUndefined","IDENT_VERTEX_SHADER","averagePositions","positions","sum","position","averageQuaternions","quaternions","coinciDist","matrix1","matrix2","origin1","origin2","direction1","direction2","distance","coincidence","withinDist","maxDistance","withinCoinciDist","minCoincidence","coorientDist","rotate1","rotate2","coorient","withinCoorientDist","minCoorient","epsilonSign","epsilon","encodeQuatXyz888","q","negQuat","iQuatX","iQuatY","iQuatZ","decodeQuatXyz888","encoded","out","dotSelf","tempNormalizedQuaternion","tempAxis","qnorm","theta","xyz_norm","axis","p_x","p_y","tmp","u_f","v_f","quantU","quantV","angleInt","f_x","f_y","f_z","halfTheta","w","encodeQuatEulerXyz888","qNorm","sinr_cosp","cosr_cosp","roll","sinp","pitch","siny_cosp","cosy_cosp","yaw","normRoll","normPitch","normYaw","rollQ","pitchQ","decodeQuatEulerXyz888","yawQ","cr","sr","cp","sp","cy","sy","qx","qy","qz","qw","qlen","qnx","qny","qnz","qnw","axisX","axisY","axisZ","axisLen","packSint8Bytes","b0","b1","b3","clampedB0","clampedB1","clampedB2","clampedB3","encodeSh1Rgb","sh1Array","sh1Rgb","sh1Scale","bitStart","bitEnd","wordStart","bitOffset","firstWord","secondWord","encodeSh2Rgb","sh2Array","sh2Rgb","sh2Scale","encodeSh3Rgb","sh3Array","sh3Rgb","sh3Scale","encodeExtRgb","ar","ag","ab","maxAbs","biasedBase","divisor","expSigns","decodeExtRgb","color","encodeExtSh1Rgb","k","k3","encodeExtSh12Rgb","k5","encodeExt3Rgb","sh3ArrayA","sh3ArrayB","decompressPartialGzip","fileBytes","numBytes","chunks","totalBytes","gunzip","allBytes","offset","CHUNK_SIZE","GunzipReader","chunkBytes","ds","decompressionStream","readerDone","outOffset","uploadU32DataTextureRows","renderer","texture","rows","gl","props","glTexture","currentFlipY","currentPremultiply","DynoProgram","graph","template","consoleLog","getMaterial","updater","DynoProgramTemplate","programMaterial","program","material","addOutputType","operation","error","subOutputType","mulOutputType","divOutputType","imodOutputType","modOutputType","negOutputType","absOutputType","signOutputType","floorOutputType","ceilOutputType","truncOutputType","roundOutputType","fractOutputType","powOutputType","expOutputType","exp2OutputType","logOutputType","log2OutputType","sqrOutputType","sqrtOutputType","inversesqrtOutputType","minOutputType","maxOutputType","clampOutputType","_c","mixOutputType","stepOutputType","smoothstepOutputType","isNanOutputType","isInfOutputType","Add","sub","Sub","mul","Mul","div","Div","imod","IMod","mod","Mod","modf","Modf","neg","Neg","abs","Abs","Sign","floor","Floor","ceil","Ceil","trunc","Trunc","round","Round","fract","Fract","pow","Pow","Exp","exp2","Exp2","log","Log","log2","Log2","sqr","Sqr","sqrt","Sqrt","inversesqrt","InverseSqrt","min","Min","Max","clamp","Clamp","mix","Mix","edge","Step","smoothstep","edge0","edge1","Smoothstep","isNan","IsNan","isInf","IsInf","and","And","or","Or","xor","Xor","not","Not","shr","Shr","shl","Shl","lessThan","LessThan","lessThanEqual","LessThanEqual","greaterThan","GreaterThan","greaterThanEqual","GreaterThanEqual","equal","Equal","notEqual","NotEqual","any","Any","all","All","select","cond","Select","compXor","CompXor","aType","bType","compareOutputType","equalOutputType","notEqualOutputType","cType","operator","compXorOutputType","operands","bool","Bool","int","Int","uint","Uint","float","Float","bvec2","BVec2","bvec3","BVec3","bvec4","BVec4","ivec2","IVec2","ivec3","IVec3","ivec4","IVec4","uvec2","UVec2","uvec3","UVec3","uvec4","UVec4","vec2","Vec2","vec3","Vec3","vec4","Vec4","mat2","Mat2","mat3","Mat3","mat4","Mat4","floatBitsToInt","FloatBitsToInt","FloatBitsToUint","intBitsToFloat","IntBitsToFloat","UintBitsToFloat","packSnorm2x16","PackSnorm2x16","unpackSnorm2x16","UnpackSnorm2x16","packUnorm2x16","PackUnorm2x16","unpackUnorm2x16","UnpackUnorm2x16","packHalf2x16","PackHalf2x16","unpackHalf2x16","UnpackHalf2x16","uintToRgba8","UintToRgba8","SimpleCast","length","Length","Distance","dot","Dot","cross","Cross","Normalize","faceforward","FaceForward","reflectVec","incident","normal","ReflectVec","refractVec","eta","RefractVec","split","vector","Split","combine","vectorType","Combine","projectH","ProjectH","extendVec","ExtendVec","swizzle","Swizzle","compMult","CompMult","outer","Outer","transpose","Transpose","determinant","Determinant","inverse","Inverse","projectHOutputType","extendVecOutputType","outerOutputType","transposeOutputType","splitOutTypes","vType","elType","dim","swizzleOutputType","remapIndex","from","to","DynoRemapIndex","pcgMix","PcgMix","pcgNext","state","PcgNext","pcgHash","PcgHash","hash","Hash","hash2","Hash2","hash3","Hash3","hash4","Hash4","hashFloat","HashFloat","hashVec2","HashVec2","hashVec3","HashVec3","hashVec4","HashVec4","normalizedDepth","zNear","zFar","NormalizedDepth","debugColorHue","DebugColorHue","toUint","tempType","toUvec","word","words","transformPos","TransformPosition","transformDir","dir","TransformDir","transformQuat","TransformQuaternion","dynoIf","dynoSwitch","dynoFor","comment","arrayIndex","arrayLength","textureSize","lod","TextureSize","bias","Texture","texelFetch","TexelFetch","textureType","textureSizeType","textureCoordType","textureReturnType","radians","degrees","Radians","Degrees","sin","Sin","cos","Cos","tan","Tan","asin","Asin","acos","Acos","atan","Atan","atan2","Atan2","sinh","Sinh","cosh","Cosh","tanh","Tanh","asinh","Asinh","acosh","Acosh","atanh","Atanh","computeUvec4_default","computeUvec4_Vec4_default","computeUvec4x2_Vec4_default","computeVec4_default","splatDefines_default","splatFragment_default","splatVertex_default","shaders","getShaders","splatDefines","splatVertex","splatFragment","computeVec4Template","computeUvec4Vec4Template","computeUvec4x2Vec4Template","computeUvec4Template","_Readback","buffer","bytes","newBuffer","ctor","capacity","reader","layerSize","baseIndex","layer","layerBase","layerYEnd","readback","roundedCount","readbackUint8","promises","readbackSize","subReadback","promise","renderState","FullScreenQuad","Readback","SplatEditSdfType","sdfTypeToNumber","SplatEditRgbaBlendMode","rgbaBlendModeToNumber","mode","SplatEditSdf","invert","displace","radius","_SplatEdit","rgbaBlendMode","sdfSmooth","softEdge","sdfs","sdf","SplatEdit","SplatEdits","maxSdfs","maxEdits","SdfArray","defineSdfArray","defineEdit","dynoUpdated","updated","tempFloat32","editIndex","sdfFirst","sdfCount","sdfIndex","sdfType","sizes","values","nValues","vBase","edits","total","edit","sdfUpdated","applyGsplatRgbaDisplaceEdits","applyCovSplatRgbaDisplaceEdits","sdfArray","numEdits","rgbaDisplaceEdits","SplatModifier","modifier","generator","modified","SplatTransformer","transform","newScale","object","CovSplatTransformer","rebased","basis","SplatGenerator","covGenerator","constructed","CsplatArray","ptr","CsplatArrayFinalization","wasm","lod_base","merge_filter","ret","takeFromExternrefTable0","arg0","GsplatArray","GsplatArrayFinalization","decode_rad_header","get_raycast_buffer","get_raycast_buffer2","raycast_ext_buffers","origin_x","origin_y","origin_z","dir_x","dir_y","dir_z","min_opacity","near","far","raycast_packed_buffer","ln_scale_min","ln_scale_max","lod_opacity","__wbg_get_imports","arg1","getStringFromWasm0","isLikeNone","debugString","ptr1","passStringToWasm0","len1","WASM_VECTOR_LEN","getDataViewMemory0","deferred0_0","deferred0_1","handleError","arg2","getArrayU8FromWasm0","getArrayU16FromWasm0","getArrayU32FromWasm0","getArrayF32FromWasm0","table","addToExternrefTable0","idx","description","debug","builtInMatches","className","len","getFloat32ArrayMemory0","getUint16ArrayMemory0","getUint32ArrayMemory0","getUint8ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint16ArrayMemory0","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","malloc","realloc","cachedTextEncoder","mem","code","view","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","expectedResponseType","__wbg_init","module_or_path","b64ToUint6","nChr","base64ToUint8","sBase64","nBlocksSize","sB64Enc","nInLen","nOutLen","taBytes","nMod3","nMod4","nUint24","nOutIdx","nInIdx","toUint8","b64","bin","decode64","WASM_MODULE","WASM","initialized","initialization","init_wasm","isInitialized","_SplatWorker","BundledWorker","event","id","status","callback","queue","resolve","reject","messages","message","SplatWorker","NewSplatWorkerPool","maxWorkers","worker","waiter","workerPool","_PackedSplats","DynoPackedSplats","_d","url","fileType","fileName","stream","streamLength","nonLod","lodAbove","loader","SplatLoader","maybePromise","maxSh","viewOrigin","splatCenter","sh1Texture","sh2Texture","sh3Texture","evaluatePackedSH","sh1","newSh1","sh2","newSh2","sh3","newSh3","targetSize","currentSize","level","wordsPerSplat","unpacked","splatCounts","mapping","rounded","_outputs","roots","output","nextBase","layerYStart","rgbaArray","quality","lodBase","packedArray","extra","decoded","lodSplats","indices","pageColoring","newSplats","splat","hue","emptyArray","PackedSplats","_f","_e","_h","_g","_j","_i","_l","_k","defineEvalPackedSH1","defineEvalPackedSH2","defineEvalPackedSH3","numSh","shMax","Loader","manager","FileLoader","onLoad","onProgress","onError","SplatMesh","resolvedURL","readStream","splatsLod","splatsNonLod","onStatus","loaded","done","basedUrl","ExtSplats","initExtSplats","initSplats","getSplatFileType","magic","header","tryPcSogsZip","getFileExtension","pathOrUrl","noTrailing","lastSlash","filename","lastDot","getSplatFileTypeFromPath","extension","isPcSogs","tryPcSogs","text","json","isVersion2","metaFilename","unzipped","SplatData","targetSplats","newCenters","newScales","newQuaternions","newOpacities","newColors","_ExtSplats","DynoExtSplats","sh3TextureA","sh3TextureB","evaluateExtSH","newUint32ArrayTexture","sh3a","sh3b","newSh3b","newArray0","newArray1","defineEvaluateExtSH1","defineEvaluateExtSH12","defineEvaluateExtSH3","randomColourFromID","format","internalFormat","_RgbaArray","TRgbaArray","defineRgbaArray","splatCount","dynoSplats","dynoBase","dynoCount","RgbaArray","readRgbaArray","PAGE_WIDTH","PAGE_HEIGHT","PAGE_SPLATS","PagedSplats","dyno.DynoInt","dyno.DynoUsampler2D","SplatPager","dyno.DynoVec4","dyno.DynoBool","dyno.DynoVec3","wasm.initialization","metaStart","tryBytes","fetchRange","decodeBytes","meta","chunksStart","resolvedRoot","chunkUrl","request","response","sh3Codes","indicesTexture","textureIndices","splatIndex","packedSplatArray","extPackedSplatArray","_SplatPager","dyno.DynoUsampler2DArray","emptyShTextures","dyno.Dyno","dyno.Gsplat","dyno.defineGsplat","dyno.unindentLines","dyno.dynoBlock","lodOpacity","dyno.splitGsplat","dyno.normalize","dyno.sub","dyno.add","dyno.combineGsplat","categories","array","elementsPerSplat","splats","page","now","pageLru","freedPages","shArrays","extArray","labels","instances","pageBase","uploadTextureLayer","labels_arr","instances_arr","needed","overflow","numPages","backoff","extraPages","splatsChunk","fetched","isExtResult","sh","upload","updates","dstOffset","requestHeader","withCredentials","EmptySplatSource","_SplatMesh","context","rootUrl","emptyLodIndices","constructSplats","splatEncoding","packedSplatsOptions","centers_only","minVec","maxVec","corners","signs","_index","_opacity","_color","viewToObject","maybeLookupIndex","maybeInjectSplatRgba","recolorRgba","covTransform","covViewToObject","time","deltaTime","viewToWorld","camera","renderSize","globalEdits","lodIndices","worldToView","viewToObjectMatrix","newRecolor","editsSdfs","editResult","raycaster","intersects","wasm.isInitialized","paged","ext","ray","worldToMesh","worldToMeshRot","origin","direction","bufferSize","intersections","buffer2","ext1","_o","_n","_q","_p","_r","ext2","_t","_s","_v","_u","_w","index4","newIntersections","packed","_m","point","additional","enableLod","showLodPage","_SplatAccumulator","target2","target3","theGenerator","centerSubView","halfAlpha","outputDepth","scene","previous","lodInstances","allGenerators","globalEditsSet","ancestor","visibleGenerators","baseCounts","previousMappings","mappings","previousNode","version","mappingVersion","splatsUpdated","mappingUpdated","textures","otherMapping","other","SplatAccumulator","SplatGeometry","QUAD_VERTICES","QUAD_INDICES","_SparkRenderer","premultipliedAlpha","geometry","defaultPages","accumulatorOptions","provokingVertexExt","doubleBuffer","origSuperXY","origTargetOptions","superXY","superWidth","superHeight","targetOptions","accumulators","accumulator","spark","frame","isNewFrame","currentRenderTarget","isXRRenderTarget","checkIsXRRenderTarget","baseLayer","typedCamera","accumToWorld","accumToCamera","outputColorSpace","preUpdate","useCamera","autoUpdate","viewChanged","next","doUpdate","needsUpdate","nextSortTime","current","orderingMaxSplats","orderingTexture","defaultSplatCount","pixelScaleLimit","viewHeight","viewWidth","pxY","pxX","viewPos","viewQuat","distanceRamp","quatRamp","lodMeshes","hasPaged","mesh","record","lodId","lodInitQueue","lodTree","lodUpdates","deltaPred","uuidToMesh","cameraToWorld","traverseStart","keyIndices","pixelLimit","totalLodSplats","pagedMeshes","meshPosition","uuid","countIndices","oldest","target","previousTarget","byteSize","superPixels","subWidth","subHeight","subSize","targetPixels","super2","row","superCol","superRow","sx","superIndex","pixelIndex","worldCenter","size","hideObjects","filter","cubeCamera","objectVisibility","tempCamera","visible","cubeTexture","envMap","SparkRenderer","renderTarget","PLY_PROPERTY_TYPES","_PlyReader","decoder","controller","headerTerminator","endHeader","headerLen","curElement","lineIndex","fields","elementCallback","elementName","element","properties","createEmptyItem","parseFn","createParseFn","splatCallback","shCallback","isSuperSplat","ssChunks","sh1Props","sh2Props","sh3Props","prepareSh","num_f_rest","NUM_SH_TO_NUM_F_REST","ssShCallback","initSuperSplat","min_x","min_y","min_z","max_x","max_y","max_z","min_scale_x","min_scale_y","min_scale_z","max_scale_x","max_scale_y","max_scale_z","min_r","min_g","min_b","max_r","max_g","max_b","decodeSuperSplat","getNumSh","packed_position","packed_rotation","packed_scale","packed_color","SQRT2","r0","r1","r2","rr","rOrder","scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","f_dc_0","f_dc_1","f_dc_2","red","green","blue","alpha","hasScales","hasRots","alphaDiv","FIELD_SCALE","redDiv","greenDiv","blueDiv","op","SH_C0","parsers","rgbaOffset","isVertex","propertyName","property","PARSE_FIELD","FIELD_BYTES","component","SET_FIELD","parser","PlyReader","littleEndian","NUM_F_REST_TO_NUM_SH","F_REST_REGEX","safeToCompile","createCompiledParserFn","createDynamicParserFn","UNSAFE_EVAL_ALLOWED","PROPERTY_NAME_REGEX","parserSrc","fRestMatch","fRestIndex","list","currentOffset","parserIndex","decodeAntiSplat","initNumSplats","f32","i8","KSPLAT_COMPRESSION","KSPLAT_SH_DEGREE_TO_COMPONENTS","decodeKsplat","headerOffset","versionMajor","versionMinor","maxSectionCount","compressionLevel","minSphericalHarmonicsCoeff","maxSphericalHarmonicsCoeff","sectionBase","section","getSh","splatOffset","sphericalHarmonicsOffsetBytes","sectionSplatCount","sectionMaxSplatCount","bucketSize","bucketCount","bucketBlockSize","bucketStorageSizeBytes","compressionScaleRange","fullBucketCount","fullBucketSplats","partiallyFilledBucketCount","bucketsMetaDataSizeBytes","bucketsStorageSizeBytes","sphericalHarmonicsDegree","shComponents","bytesPerCenter","bytesPerScale","bytesPerRotation","bytesPerColor","bytesPerSphericalHarmonicsComponent","scaleOffsetBytes","rotationOffsetBytes","colorOffsetBytes","bytesPerSplat","splatDataStorageSizeBytes","storageSizeBytes","sh1Index","sh2Index","sh3Index","compressionScaleFactor","bucketsBase","dataBase","bucketArray","partiallyFilledBucketLengths","partialBucketIndex","partialBucketBase","bucketIndex","bucketLength","SpzReader","centerCallback","alphaCallback","rgbCallback","scalesCallback","quatCallback","childCounts","childStarts","centerBytes","centerUint16","i3","fixed","i9","rgbBytes","scalesBytes","maxValue","quatBytes","combinedValues","valueMask","largestIndex","remainingValues","sumSquares","square","shBytes","SH_DEGREE_TO_VECS","i2","SPZ_MAGIC","SPZ_VERSION","FLAG_ANTIALIASED","SpzWriter","shDegree","fractionalBits","flagAntiAlias","splatSize","xRounded","xInt","yRounded","yInt","zRounded","zInt","quat","iLargest","negate","comp","negbit","mag","quantized","shVecs","base1","base2","base3","compressed","transcodeSpz","clipXyz","opacityThreshold","transformScales","transformQuaternion","withinClip","clip","withinOpacity","ply","lastIndex","spz","centers","SplatSkinningMode","_SplatSkinning","GsplatSkinning","defineGsplatSkinning","applyGsplatSkinning","applyCovSplatDQSkinning","applyCovSplatLBSkinning","boneIndex","matrix","i16","boneIndices","weights","SplatSkinning","defineApplyGsplatSkinning","skinning","defineApplyCovSplatDQSkinning","defineApplyCovSplatLBSkinning","constructGrid","extents","stepSize","pointRadius","pointShadowScale","pointColor","constructAxes","axisRadius","axisShadowScale","origins","constructSpherePoints","maxDepth","pointThickness","pointsHash","addPoint","recurse","p0","p1","p2","p01","p12","p20","points","textSplats","font","fontSize","dotRadius","textAlign","lineHeight","objectScale","metrics","fontHeight","minLeft","maxRight","minTop","maxBottom","originLeft","originTop","imageSplats","subXY","forEachSplat","img","destWidth","destHeight","push","maybeOpacity","staticBox","box","cells","dotScale","dynoX","dynoY","dynoTime","cellX","index2","cellY","cellZ","cell","intTime","random","transformer","DEFAULT_SNOW","DEFAULT_RAIN","snowBox","minY","density","anisoScale","minScale","maxScale","fallDirection","fallVelocity","wanderScale","wanderVariance","color1","color2","onFrame","volume","dynoMinScale","dynoMaxScale","dynoAnisoScale","dynoFallDirection","dynoFallVelocity","dynoWanderScale","dynoWanderVariance","dynoColor1","dynoColor2","dynoOpacity","globalOffset","dynoMin","dynoMax","dynoMinY","minMax","snow","randomW","intensity","random2","perturb","timeOffset","modulo","centerY","fallDelta","makeNormalColorModifier","splatToView","viewGsplat","viewNormal","splatDot","sameDir","setWorldNormalColor","makeDepthColorModifier","minDepth","reverse","setDepthColor","dynoMinDepth","dynoMaxDepth","dynoReverse","DEFAULT_CONTROLLER_MOVE_SPEED","DEFAULT_CONTROLLER_ROTATE_SPEED","DEFAULT_CONTROLLER_ROLL_SPEED","DEFAULT_CONTROLLER_FAST_MULTIPLIER","DEFAULT_CONTROLLER_SLOW_MULTIPLIER","DEFAULT_CONTROLLER_MOVE_HEADING","DEFAULT_CONTROLLER_GETMOVE","gamepads","sparkXr","DEFAULT_CONTROLLER_GETROTATE","DEFAULT_CONTROLLER_GETFAST","DEFAULT_CONTROLLER_GETSLOW","JointEnum","JOINT_IDS","NUM_JOINTS","JOINT_INDEX","JOINT_RADIUS","JOINT_SEGMENTS","JOINT_SEGMENT_STEPS","JOINT_TIPS","FINGER_TIPS","Hand","HANDS","XR_HEADSET_HINTS","isLikelyMobilePhone","ua","uaData","_SparkXr","XrHand","button","modes","supported","referenceSpaceType","frameBufferScaleFactor","optionalFeatures","requiredFeatures","session","onSessionEnded","visibilityChanged","lastVisibilityState","exitHtml","exitText","enterHtml","enterText","cameraFrame","xrGamepads","gamepad","eulers","pivot","move","moveSpeed","SCRATCH_EULER","SCRATCH_QUAT_A","xrFrame","xrSession","referenceSpace","hand","inputSource","xrHand","jointId","jointSpace","jointPose","orientation","JointSplats","joints","hands","SparkXr","round4","SCRATCH_QUAT_B","lerpHandsSnapshots","snapshots","first","last","floorIndex","findSnapshotFloorIndex","cloneSnapshot","span","factor","interpolateSnapshots","maxHands","handIndex","lerpHandSnapshot","snapshot","cloneHandSnapshot","joint","low","high","mid","fromHand","toHand","lerpJointSnapshot","fromJoint","toJoint","clone","cloneJointSnapshot","DEFAULT_MOVE_INERTIA","DEFAULT_ROTATE_INERTIA","TOUCH_BIAS","XrHands","xr","Vector3","Quaternion","Color","CYCLE","handedness","segment","segmentSplats","lastSegment","jointA","jointB","radiusA","radiusB","handA","handB","hA","hB","jA","jB","HandMovement","xrHands","control","moveInertia","rotateInertia","grip","lastMid","delta","angle","lastAngle","closestAngle","rotateVelocity","blend","negPivot","Matrix4","DEFAULT_MOVEMENT_SPEED","DEFAULT_ROLL_SPEED","DEFAULT_ROTATE_SPEED","DEFAULT_SLIDE_SPEED","DEFAULT_SCROLL_SPEED","DEFAULT_STICK_THRESHOLD","DEFAULT_FPS_ROTATE_SPEED","DEFAULT_POINTER_ROLL_SCALE","DEFAULT_PRESS_MOVE_DELAY_MS","DEFAULT_PRESS_MOVE_ACCEL_MS","DUAL_PRESS_MS","DOUBLE_PRESS_LIMIT_MS","DOUBLE_PRESS_DISTANCE","MOVEMENT_THRESHOLD","WASD_KEYCODE_MOVE","ARROW_KEYCODE_MOVE","ARROW_KEYCODE_ROTATE","SparkControls","FpsMovement","PointerControls","rollSpeed","stickThreshold","rotateSpeed","keycodeMoveMapping","keycodeRotateMapping","gamepadMapping","capsMultiplier","shiftMultiplier","ctrlMultiplier","sticks","gamepadButtons","xrSources","stick","keycode","rot","moveVector","speedMultiplier","slideSpeed","scrollSpeed","swapRotateSlide","reverseRotate","reverseSlide","reverseSwipe","reverseScroll","pointerRollScale","doublePress","pressMoveDelayMs","pressMoveAccelMs","pressMoveSpeed","doublePressMoveSpeed","triplePressMoveSpeed","pressMoveCenter","initial","isRotate","pointerId","timeStamp","intervalMs","lastDistance","lastIntervalMs","pointerUp","lastUp","rect","motion","totalMotion","slide","deltaDir","deltaDist","orthoDir","motionDir","motionOrtho","midpoint","midpointDir","theCamera","ndcMidpoint","pinchOut","angles","ndcPoint","scroll","DISK_PORTAL_FRAGMENT_SHADER","SparkPortals","sparkOpts","pair","portal","twoSided","inverseCamera","portalInCamera","portalQuat","outCenter","outNormal","prevCam","currCam","beforeMatrix","afterMatrix","startPlaneDist","endPlaneDist","denom","earliestT","crossedPair","crossedEntry","entryT","exitT","bestScore","bestPair","bestIsEntry","entryDist","entryScore","exitDist","exitScore","primary","primaryIsEntry","primaryPortal","otherPortal","aspect"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrLA,IAAAu+B,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ICAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","x_google_ignoreList":[7]} \ No newline at end of file diff --git a/dist/types/ExtSplats.d.ts b/dist/types/ExtSplats.d.ts index f1442324..06eb1b95 100644 --- a/dist/types/ExtSplats.d.ts +++ b/dist/types/ExtSplats.d.ts @@ -86,6 +86,7 @@ export declare class DynoExtSplats extends DynoUniform; viewDir: DynoVal<"vec3">; diff --git a/dist/types/OldSparkRenderer.d.ts b/dist/types/OldSparkRenderer.d.ts deleted file mode 100644 index a6e36118..00000000 --- a/dist/types/OldSparkRenderer.d.ts +++ /dev/null @@ -1,318 +0,0 @@ -import { OldSparkViewpoint, OldSparkViewpointOptions } from './OldSparkViewpoint'; -import { OldSplatAccumulator } from './OldSplatAccumulator'; -import { RgbaArray } from './RgbaArray'; -import { SplatGenerator } from './SplatGenerator'; -import { SplatEncoding } from './defines'; -import * as THREE from "three"; -export type OldSparkRendererOptions = { - /** - * Pass in your THREE.WebGLRenderer instance so Spark can perform work - * outside the usual render loop. Should be created with antialias: false - * (default setting) as WebGL anti-aliasing doesn't improve Gaussian Splatting - * rendering and significantly reduces performance. - */ - renderer: THREE.WebGLRenderer; - /** - * Whether to use premultiplied alpha when accumulating splat RGB - * @default true - */ - premultipliedAlpha?: boolean; - /** - * Pass in a THREE.Clock to synchronize time-based effects across different - * systems. Alternatively, you can set the SparkRenderer properties time and - * deltaTime directly. (default: new THREE.Clock) - */ - clock?: THREE.Clock; - /** - * Controls whether to check and automatically update Gsplat collection after - * each frame render. - * @default true - */ - autoUpdate?: boolean; - /** - * Controls whether to update the Gsplats before or after rendering. For WebXR - * this must be false in order to complete rendering as soon as possible. - * @default false - */ - preUpdate?: boolean; - /** - * Distance threshold for SparkRenderer movement triggering a Gsplat update at - * the new origin. - * @default 1.0 - */ - originDistance?: number; - /** - * Maximum standard deviations from the center to render Gaussians. Values - * Math.sqrt(5)..Math.sqrt(8) produce good results and can be tweaked for - * performance. - * @default Math.sqrt(8) - */ - maxStdDev?: number; - /** - * Minimum pixel radius for splat rendering. - * @default 0.0 - */ - minPixelRadius?: number; - /** - * Maximum pixel radius for splat rendering. - * @default 512.0 - */ - maxPixelRadius?: number; - /** - * Minimum alpha value for splat rendering. - * @default 0.5 * (1.0 / 255.0) - */ - minAlpha?: number; - /** - * Enable 2D Gaussian splatting rendering ability. When this mode is enabled, - * any scale x/y/z component that is exactly 0 (minimum quantized value) results - * in the other two non-0 axis being interpreted as an oriented 2D Gaussian Splat, - * rather instead of the usual projected 3DGS Z-slice. When reading PLY files, - * scale values less than e^-30 will be interpreted as 0. - * @default false - */ - enable2DGS?: boolean; - /** - * Scalar value to add to 2D splat covariance diagonal, effectively blurring + - * enlarging splats. In scenes trained without the Gsplat anti-aliasing tweak - * this value was typically 0.3, but with anti-aliasing it is 0.0 - * @default 0.0 - */ - preBlurAmount?: number; - /** - * Scalar value to add to 2D splat covarianve diagonal, with opacity adjustment - * to correctly account for "blurring" when anti-aliasing. Typically 0.3 - * (equivalent to approx 0.5 pixel radius) in scenes trained with anti-aliasing. - */ - blurAmount?: number; - /** - * Depth-of-field distance to focal plane - */ - focalDistance?: number; - /** - * Full-width angle of aperture opening (in radians), 0.0 to disable - * @default 0.0 - */ - apertureAngle?: number; - /** - * Modulate Gaussian kernel falloff. 0 means "no falloff, flat shading", - * while 1 is the normal Gaussian kernel. - * @default 1.0 - */ - falloff?: number; - /** - * X/Y clipping boundary factor for Gsplat centers against view frustum. - * 1.0 clips any centers that are exactly out of bounds, while 1.4 clips - * centers that are 40% beyond the bounds. - * @default 1.4 - */ - clipXY?: number; - /** - * Parameter to adjust projected splat scale calculation to match other renderers, - * similar to the same parameter in the MKellogg 3DGS renderer. Higher values will - * tend to sharpen the splats. A value 2.0 can be used to match the behavior of - * the PlayCanvas renderer. - * @default 1.0 - */ - focalAdjustment?: number; - /** - * Configures the SparkViewpointOptions for the default SparkViewpoint - * associated with this SparkRenderer. Notable option: sortRadial (sort by - * radial distance or Z-depth) - */ - view?: OldSparkViewpointOptions; - /** - * Override the default splat encoding ranges for the PackedSplats. - * (default: undefined) - */ - splatEncoding?: SplatEncoding; -}; -export declare class OldSparkRenderer extends THREE.Mesh { - renderer: THREE.WebGLRenderer; - premultipliedAlpha: boolean; - material: THREE.ShaderMaterial; - uniforms: ReturnType; - autoUpdate: boolean; - preUpdate: boolean; - needsUpdate: boolean; - originDistance: number; - maxStdDev: number; - minPixelRadius: number; - maxPixelRadius: number; - minAlpha: number; - enable2DGS: boolean; - preBlurAmount: number; - blurAmount: number; - focalDistance: number; - apertureAngle: number; - falloff: number; - clipXY: number; - focalAdjustment: number; - splatEncoding: SplatEncoding; - splatTexture: null | { - enable?: boolean; - texture?: THREE.Data3DTexture; - multiply?: THREE.Matrix2; - add?: THREE.Vector2; - near?: number; - far?: number; - mid?: number; - }; - time?: number; - deltaTime?: number; - clock: THREE.Clock; - active: OldSplatAccumulator; - private freeAccumulators; - private accumulatorCount; - defaultView: OldSparkViewpoint; - autoViewpoints: OldSparkViewpoint[]; - private rotateToAccumulator; - private translateToAccumulator; - private modifier; - private lastFrame; - private lastUpdateTime; - private defaultCameras; - private lastStochastic; - viewpoint: OldSparkViewpoint; - private pendingUpdate; - private envViewpoint; - private static cubeRender; - private static pmrem; - static EMPTY_SPLAT_TEXTURE: THREE.Data3DTexture; - constructor(options: OldSparkRendererOptions); - static makeUniforms(): { - renderSize: { - value: THREE.Vector2; - }; - near: { - value: number; - }; - far: { - value: number; - }; - numSplats: { - value: number; - }; - renderToViewQuat: { - value: THREE.Quaternion; - }; - renderToViewPos: { - value: THREE.Vector3; - }; - maxStdDev: { - value: number; - }; - minPixelRadius: { - value: number; - }; - maxPixelRadius: { - value: number; - }; - minAlpha: { - value: number; - }; - stochastic: { - value: boolean; - }; - enable2DGS: { - value: boolean; - }; - preBlurAmount: { - value: number; - }; - blurAmount: { - value: number; - }; - focalDistance: { - value: number; - }; - apertureAngle: { - value: number; - }; - falloff: { - value: number; - }; - clipXY: { - value: number; - }; - focalAdjustment: { - value: number; - }; - splatTexEnable: { - value: boolean; - }; - splatTexture: { - type: string; - value: THREE.Data3DTexture; - }; - splatTexMul: { - value: THREE.Matrix2; - }; - splatTexAdd: { - value: THREE.Vector2; - }; - splatTexNear: { - value: number; - }; - splatTexFar: { - value: number; - }; - splatTexMid: { - value: number; - }; - packedSplats: { - type: string; - value: THREE.DataArrayTexture; - }; - rgbMinMaxLnScaleMinMax: { - value: THREE.Vector4; - }; - time: { - value: number; - }; - deltaTime: { - value: number; - }; - encodeLinear: { - value: boolean; - }; - debugFlag: { - value: boolean; - }; - }; - private canAllocAccumulator; - private maybeAllocAccumulator; - releaseAccumulator(accumulator: OldSplatAccumulator): void; - newViewpoint(options: OldSparkViewpointOptions): OldSparkViewpoint; - onBeforeRender(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera): void; - prepareViewpoint(viewpoint?: OldSparkViewpoint): void; - update({ scene, viewToWorld, }: { - scene: THREE.Scene; - viewToWorld?: THREE.Matrix4; - }): void; - updateInternal({ scene, originToWorld, viewToWorld, }: { - scene: THREE.Scene; - originToWorld?: THREE.Matrix4; - viewToWorld?: THREE.Matrix4; - }): boolean; - private compileScene; - renderEnvMap({ renderer, scene, worldCenter, size, near, far, hideObjects, update, }: { - renderer?: THREE.WebGLRenderer; - scene: THREE.Scene; - worldCenter: THREE.Vector3; - size?: number; - near?: number; - far?: number; - hideObjects?: THREE.Object3D[]; - update?: boolean; - }): Promise; - recurseSetEnvMap(root: THREE.Object3D, envMap: THREE.Texture): void; - getRgba({ generator, rgba, }: { - generator: SplatGenerator; - rgba?: RgbaArray; - }): RgbaArray; - readRgba({ generator, rgba, }: { - generator: SplatGenerator; - rgba?: RgbaArray; - }): Promise; -} diff --git a/dist/types/OldSparkViewpoint.d.ts b/dist/types/OldSparkViewpoint.d.ts deleted file mode 100644 index 012c64ad..00000000 --- a/dist/types/OldSparkViewpoint.d.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { OldSparkRenderer } from './OldSparkRenderer'; -import { OldSplatAccumulator } from './OldSplatAccumulator'; -import { OldSplatGeometry } from './OldSplatGeometry'; -import * as THREE from "three"; -export type OldSparkViewpointOptions = { - /** - * Controls whether to auto-update its sort order whenever the SparkRenderer - * updates the Gsplats. If you expect to render/display from this viewpoint - * most frames, set this to true. - * @default false - */ - autoUpdate?: boolean; - /** - * Set a THREE.Camera for this viewpoint to follow. - * @default undefined - */ - camera?: THREE.Camera; - /** - * Set an explicit view-to-world transformation matrix for this viewpoint (equivalent - * to camera.matrixWorld), overrides any camera setting. - * @default undefined - */ - viewToWorld?: THREE.Matrix4; - /** - * Configure viewpoint with an off-screen render target. - * @default undefined - */ - target?: { - /** - * Width of the render target in pixels. - */ - width: number; - /** - * Height of the render target in pixels. - */ - height: number; - /** - * If you want to be able to render a scene that depends on this target's - * output (for example, a recursive viewport), set this to true to enable - * double buffering. - * @default false - */ - doubleBuffer?: boolean; - /** - * Super-sampling factor for the render target. Values 1-4 are supported. - * Note that re-sampling back down to .width x .height is done on the CPU - * with simple averaging only when calling readTarget(). - * @default 1 - */ - superXY?: number; - }; - /** - * Callback function that is called when the render target texture is updated. - * Receives the texture as a parameter. Use this to update a viewport with - * the latest viewpoint render each frame. - * @default undefined - */ - onTextureUpdated?: (texture: THREE.Texture) => void; - /** - * Whether to sort splats radially (geometric distance) from the viewpoint (true) - * or by Z-depth (false). Most scenes are trained with the Z-depth sort metric - * and will render more accurately at certain viewpoints. However, radial sorting - * is more stable under viewpoint rotations. - * @default true - */ - sortRadial?: boolean; - /** - * Distance threshold for re-sorting splats. If the viewpoint moves more than - * this distance, splats will be re-sorted. - * @default 0.01 units - */ - sortDistance?: number; - /** - * View direction dot product threshold for re-sorting splats. For - * sortRadial: true we use 0.99 while sortRadial: false uses 0.999 because it is - * more sensitive to view direction. - * @default 0.99 if sortRadial else 0.999 - */ - sortCoorient?: boolean; - /** - * Constant added to Z-depth to bias values into the positive range for - * sortRadial: false, but also used for culling Gsplats "well behind" - * the viewpoint origin - * @default 1.0 - */ - depthBias?: number; - /** - * Set this to true if rendering a 360 to disable "behind the viewpoint" - * culling during sorting. This is set automatically when rendering 360 envMaps - * using the SparkRenderer.renderEnvMap() utility function. - * @default false - */ - sort360?: boolean; - sort32?: boolean; - stochastic?: boolean; -}; -export declare class OldSparkViewpoint { - spark: OldSparkRenderer; - autoUpdate: boolean; - camera?: THREE.Camera; - viewToWorld: THREE.Matrix4; - lastTime: number | null; - target?: THREE.WebGLRenderTarget; - private back?; - onTextureUpdated?: (texture: THREE.Texture) => void; - encodeLinear: boolean; - superXY: number; - private superPixels?; - private pixels?; - sortRadial: boolean; - sortDistance?: number; - sortCoorient?: boolean; - depthBias?: number; - sort360?: boolean; - sort32?: boolean; - stochastic: boolean; - display: { - accumulator: OldSplatAccumulator; - viewToWorld: THREE.Matrix4; - geometry: OldSplatGeometry; - } | null; - private sorting; - private pending; - private sortingCheck; - private readback16; - private readback32; - private orderingFreelist; - constructor(options: OldSparkViewpointOptions & { - spark: OldSparkRenderer; - }); - dispose(): void; - setAutoUpdate(autoUpdate: boolean): void; - prepare({ scene, camera, viewToWorld, update, forceOrigin, }: { - scene: THREE.Scene; - camera?: THREE.Camera; - viewToWorld?: THREE.Matrix4; - update?: boolean; - forceOrigin?: boolean; - }): Promise; - renderTarget({ scene, camera, }: { - scene: THREE.Scene; - camera?: THREE.Camera; - }): void; - readTarget(): Promise; - prepareRenderPixels({ scene, camera, viewToWorld, update, forceOrigin, }: { - scene: THREE.Scene; - camera?: THREE.Camera; - viewToWorld?: THREE.Matrix4; - update?: boolean; - forceOrigin?: boolean; - }): Promise>; - autoPoll({ accumulator }: { - accumulator?: OldSplatAccumulator; - }): void; - private driveSort; - private sortUpdate; - private updateDisplay; - static EMPTY_TEXTURE: THREE.Texture; - private static dynos; - private static makeSorter; -} diff --git a/dist/types/OldSplatAccumulator.d.ts b/dist/types/OldSplatAccumulator.d.ts deleted file mode 100644 index 55de9d86..00000000 --- a/dist/types/OldSplatAccumulator.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { PackedSplats } from './PackedSplats'; -import { GeneratorMapping } from './SplatAccumulator'; -import { SplatModifier } from './SplatGenerator'; -import * as THREE from "three"; -export declare class OldSplatAccumulator { - splats: PackedSplats; - toWorld: THREE.Matrix4; - mapping: GeneratorMapping[]; - refCount: number; - splatsVersion: number; - mappingVersion: number; - ensureGenerate(maxSplats: number): void; - generateSplats({ renderer, modifier, generators, forceUpdate, originToWorld, }: { - renderer: THREE.WebGLRenderer; - modifier: SplatModifier; - generators: GeneratorMapping[]; - forceUpdate?: boolean; - originToWorld: THREE.Matrix4; - }): boolean; - hasCorrespondence(other: OldSplatAccumulator): boolean; -} diff --git a/dist/types/OldSplatGeometry.d.ts b/dist/types/OldSplatGeometry.d.ts deleted file mode 100644 index 81ccf357..00000000 --- a/dist/types/OldSplatGeometry.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as THREE from "three"; -export declare class OldSplatGeometry extends THREE.InstancedBufferGeometry { - ordering: Uint32Array; - attribute: THREE.InstancedBufferAttribute; - constructor(ordering: Uint32Array, activeSplats: number); - update(ordering: Uint32Array, activeSplats: number): void; -} diff --git a/dist/types/OldSplatWorker.d.ts b/dist/types/OldSplatWorker.d.ts deleted file mode 100644 index 5a921a73..00000000 --- a/dist/types/OldSplatWorker.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export declare class OldSplatWorker { - worker: Worker; - messages: Record void; - reject: (reason?: unknown) => void; - }>; - messageIdNext: number; - constructor(); - makeMessageId(): number; - makeMessagePromiseId(): { - id: number; - promise: Promise; - }; - onMessage(event: MessageEvent): void; - call(name: string, args: unknown): Promise; -} -export declare function setWorkerPool(count?: number): void; -export declare function allocWorker(): Promise; -export declare function freeWorker(worker: OldSplatWorker): void; -export declare function withWorker(callback: (worker: OldSplatWorker) => Promise): Promise; diff --git a/dist/types/SparkPortals.d.ts b/dist/types/SparkPortals.d.ts index 098a81b0..da582a48 100644 --- a/dist/types/SparkPortals.d.ts +++ b/dist/types/SparkPortals.d.ts @@ -5,7 +5,7 @@ import * as THREE from "three"; * - diskRadius > 0: render "behind portal" only through the disk * - diskRadius < 0: render "in front of portal" everywhere except behind disk */ -export declare const DISK_PORTAL_FRAGMENT_SHADER = "\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float a = rgba.a;\n float shifted = sqrt(z2) - max(0.0, a - 1.0);\n float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted));\n rgba.a = min(1.0, a) * exp(exponent);\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n"; +export declare const DISK_PORTAL_FRAGMENT_SHADER = "\nprecision highp float;\nprecision highp int;\n\n#include \n\nuniform float near;\nuniform float far;\nuniform mat4 projectionMatrix;\nuniform bool encodeLinear;\nuniform float time;\nuniform bool debugFlag;\nuniform float maxStdDev;\nuniform float gaussianK;\nuniform float minAlpha;\nuniform bool disableFalloff;\nuniform float falloff;\n\nuniform vec3 diskCenter;\nuniform vec3 diskNormal;\nuniform float diskRadius;\nuniform bool diskTwoSided;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\nflat in uint vSplatIndex;\nflat in float adjustedStdDev;\n\nvoid main() {\n if (diskRadius != 0.0) {\n // Portal rendering:\n // - diskRadius > 0: render \"behind portal\" only through the disk (discard outside or in-front-of plane).\n // - diskRadius < 0: render \"in front of portal\" everywhere, but discard fragments behind the plane when looking through the disk.\n\n // View ray direction from NDC (view space is -Z forward).\n vec3 viewDir = normalize(vec3(\n vNdc.x / projectionMatrix[0][0],\n vNdc.y / projectionMatrix[1][1],\n -1.0\n ));\n\n // Reconstruct view-space *axial* depth (-viewPos.z) from NDC Z.\n float ndcZ = vNdc.z;\n float depth = (2.0 * near * far) / (far + near - ndcZ * (far - near));\n // Convert axial depth to ray-parameter t (viewPos = t * viewDir).\n float rayT = depth / max(1e-6, -viewDir.z);\n\n float radius = abs(diskRadius);\n float radius2 = radius * radius;\n bool renderBehind = (diskRadius > 0.0);\n\n vec3 diskN = normalize(diskNormal);\n\n // Ray-plane intersection for plane (diskCenter, diskN), with ray origin at (0,0,0).\n float denom = dot(viewDir, diskN);\n bool allowPortal = diskTwoSided ? (abs(denom) > 1e-6) : (denom < -1e-6);\n\n bool hitsDisk = false;\n float t = 0.0;\n if (allowPortal) {\n t = dot(diskCenter, diskN) / denom;\n if (t > 0.0) {\n vec3 q = t * viewDir - diskCenter;\n hitsDisk = (dot(q, q) <= radius2);\n }\n }\n\n // Small bias to avoid flicker at the plane.\n float eps = 1e-4 * max(1.0, abs(t));\n\n if (renderBehind) {\n // Behind-pass: only render through the portal disk, and only behind the plane along the ray.\n if (!hitsDisk) discard;\n if (rayT <= t + eps) discard;\n } else {\n // Front-pass: render everything, except when the ray goes through the disk, discard what's behind the plane.\n if (hitsDisk && (rayT >= t - eps)) discard;\n }\n }\n\n vec4 rgba = vRgba;\n\n float z2 = dot(vSplatUv, vSplatUv);\n if (z2 > (adjustedStdDev * adjustedStdDev)) {\n discard;\n }\n\n float kernel = gaussianKernel(z2, gaussianK);\n if (rgba.a <= 1.0) {\n rgba.a = mix(rgba.a, rgba.a * kernel, falloff);\n } else {\n float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045);\n float alpha = 1.0 - pow(1.0 - kernel, a);\n rgba.a = mix(1.0, alpha, falloff);\n }\n\n if (rgba.a < minAlpha) {\n discard;\n }\n if (encodeLinear) {\n rgba.rgb = srgbToLinear(rgba.rgb);\n }\n\n #ifdef PREMULTIPLIED_ALPHA\n fragColor = vec4(rgba.rgb * rgba.a, rgba.a);\n #else\n fragColor = rgba;\n #endif\n}\n"; /** * Callback function called when a portal is crossed. * @param pair The portal pair that was crossed diff --git a/dist/types/SparkRenderer.d.ts b/dist/types/SparkRenderer.d.ts index e0505656..6a785e47 100644 --- a/dist/types/SparkRenderer.d.ts +++ b/dist/types/SparkRenderer.d.ts @@ -20,11 +20,6 @@ export interface SparkRendererOptions { * @default true */ premultipliedAlpha?: boolean; - /** - * Whether to encode Gsplat with linear RGB (for environment mapping) - * @default false - */ - encodeLinear?: boolean; /** * Pass in a THREE.Clock to synchronize time-based effects across different * systems. Alternatively, you can set the property time directly. @@ -50,6 +45,13 @@ export interface SparkRendererOptions { * @default Math.sqrt(8) */ maxStdDev?: number; + /** + * Generalized Gaussian exponent parameter. The kernel is + * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0` + * uses a quartic radial falloff. + * @default 1.0 + */ + gaussianK?: number; minPixelRadius?: number; /** * Maximum pixel radius for splat rendering. @@ -180,6 +182,7 @@ export interface SparkRendererOptions { * @default false */ lodInflate?: boolean; + lodTraverseMode?: "dynamic" | "standard"; /** * Whether to use extended Gsplat encoding for paged splats, useful for eliminating * quantization artifacts from splat scenes with large internal position coordinates. @@ -306,6 +309,7 @@ export declare class SparkRenderer extends THREE.Mesh { static sparkOverride?: SparkRenderer; renderSize: THREE.Vector2; maxStdDev: number; + gaussianK: number; minPixelRadius: number; maxPixelRadius: number; accumExtSplats: boolean; @@ -319,7 +323,6 @@ export declare class SparkRenderer extends THREE.Mesh { falloff: number; clipXY: number; focalAdjustment: number; - encodeLinear: boolean; sortRadial: boolean; minSortIntervalMs: number; clock: THREE.Clock; @@ -349,6 +352,7 @@ export declare class SparkRenderer extends THREE.Mesh { lodSplatScale: number; lodRenderScale: number; lodInflate: boolean; + lodTraverseMode: "dynamic" | "standard"; pagedExtSplats: boolean; maxPagedSplats: number; numLodFetchers: number; @@ -441,6 +445,9 @@ export declare class SparkRenderer extends THREE.Mesh { maxStdDev: { value: number; }; + gaussianK: { + value: number; + }; minPixelRadius: { value: number; }; diff --git a/dist/types/SplatLoader.d.ts b/dist/types/SplatLoader.d.ts index b0be6f98..4288e90d 100644 --- a/dist/types/SplatLoader.d.ts +++ b/dist/types/SplatLoader.d.ts @@ -2,7 +2,7 @@ import { FileLoader, Loader, LoadingManager } from 'three'; import { ExtSplats } from './ExtSplats'; import { PackedSplats } from './PackedSplats'; import { SplatMesh } from './SplatMesh'; -import { SplatEncoding, SplatFileType } from './defines'; +import { SplatFileType } from './defines'; export declare class SplatLoader extends Loader { fileLoader: FileLoader; constructor(manager?: LoadingManager); @@ -115,17 +115,6 @@ export declare function tryPcSogsZip(input: ArrayBuffer | Uint8Array): { name: string; json: PcSogsJson | PcSogsV2Json; } | undefined; -export declare function unpackSplats({ input, extraFiles, fileType, pathOrUrl, splatEncoding, }: { - input: Uint8Array | ArrayBuffer; - extraFiles?: Record; - fileType?: SplatFileType; - pathOrUrl?: string; - splatEncoding?: SplatEncoding; -}): Promise<{ - packedArray: Uint32Array; - numSplats: number; - extra?: Record; -}>; export declare class SplatData { numSplats: number; maxSplats: number; @@ -153,10 +142,6 @@ export declare class SplatData { setSh2(index: number, sh2: Float32Array): void; setSh3(index: number, sh3: Float32Array): void; } -export declare function transcodeSpz(input: TranscodeSpzInput): Promise<{ - input: TranscodeSpzInput; - fileBytes: Uint8Array; -}>; export type FileInput = { fileBytes: Uint8Array; fileType?: SplatFileType; diff --git a/dist/types/SplatMesh.d.ts b/dist/types/SplatMesh.d.ts index 0d105e29..29a5635e 100644 --- a/dist/types/SplatMesh.d.ts +++ b/dist/types/SplatMesh.d.ts @@ -140,11 +140,10 @@ export declare class SplatMesh extends SplatGenerator { showLodPage?: number; showLodPageDyno: DynoInt; constructor(options?: SplatMeshOptions); + updateLabelLookup(categories: Set): void; + updateLabelHighlight(id: number): void; asyncInitialize(options: SplatMeshOptions): Promise; - static staticInitialized: Promise; - static isStaticInitialized: boolean; static dynoTime: DynoFloat<"value">; - static staticInitialize(): Promise; pushSplat(center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color): void; forEachSplat(callback: (index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => void): void; dispose(): void; diff --git a/dist/types/SplatPager.d.ts b/dist/types/SplatPager.d.ts index 968e4534..2541a0de 100644 --- a/dist/types/SplatPager.d.ts +++ b/dist/types/SplatPager.d.ts @@ -86,13 +86,22 @@ export interface SplatPagerOptions { */ numFetchers?: number; } +interface PageUpload { + page: number; + numSplats: number; + packedArray: Uint32Array; + extArray?: Uint32Array; + shArrays: Array; + labels?: Uint32Array; + instances?: Uint32Array; +} export declare class SplatPager { - renderer: THREE.WebGLRenderer; - extSplats: boolean; - maxPages: number; - maxSplats: number; - pageSplats: number; - maxSh: number; + readonly renderer: THREE.WebGLRenderer; + readonly extSplats: boolean; + readonly maxPages: number; + readonly maxSplats: number; + readonly pageSplats: number; + readonly maxSh: number; curSh: number; autoDrive: boolean; numFetchers: number; @@ -112,20 +121,8 @@ export declare class SplatPager { lru: number; }>; freeablePages: number[]; - newUploads: { - page: number; - numSplats: number; - packedArray: Uint32Array; - extArray?: Uint32Array; - extra: Record; - }[]; - readyUploads: { - page: number; - numSplats: number; - packedArray: Uint32Array; - extArray?: Uint32Array; - extra: Record; - }[]; + newUploads: PageUpload[]; + readyUploads: PageUpload[]; lodTreeUpdates: { splats: PagedSplats; page: number; @@ -149,10 +146,25 @@ export declare class SplatPager { }[]; packedTexture: dyno.DynoUsampler2DArray<"packedTexture", THREE.DataArrayTexture>; extTexture: dyno.DynoUsampler2DArray<"extTexture", THREE.DataArrayTexture>; - sh1Texture: dyno.DynoUsampler2DArray<"sh1", THREE.DataArrayTexture>; - sh2Texture: dyno.DynoUsampler2DArray<"sh2", THREE.DataArrayTexture>; - sh3Texture: dyno.DynoUsampler2DArray<"sh3", THREE.DataArrayTexture>; - sh3TextureB: dyno.DynoUsampler2DArray<"sh3b", THREE.DataArrayTexture>; + highlightLabel: dyno.DynoInt<"highlightLabel">; + lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>; + labelTexture: dyno.DynoUsampler2DArray<"label", THREE.DataArrayTexture>; + instanceTexture: dyno.DynoUsampler2DArray<"instance", THREE.DataArrayTexture>; + labelLookupModifier: dyno.Dyno<{ + gsplat: typeof dyno.Gsplat; + lookup: 'usampler2D'; + label: 'usampler2DArray'; + instance: 'usampler2DArray'; + highlightLabel: 'int'; + }, { + gsplat: typeof dyno.Gsplat; + }>; + readonly shTextures: [ + dyno.DynoUsampler2DArray<"sh1", THREE.DataArrayTexture>, + dyno.DynoUsampler2DArray<"sh2", THREE.DataArrayTexture>, + dyno.DynoUsampler2DArray<"sh3", THREE.DataArrayTexture>, + dyno.DynoUsampler2DArray<"sh3b", THREE.DataArrayTexture> + ]; readIndex: dyno.DynoBlock<{ index: "int"; numSplats: "int"; @@ -191,17 +203,21 @@ export declare class SplatPager { }>; constructor(options: SplatPagerOptions); dispose(): void; + updateLabelLookup(categories: Set): void; + private newUintArrayTex; + private ensureLabelTextures; + updateLabelHighlight(id: number): void; + private ensureInstanceTextures; private ensureShTextures; private allocatePage; - private freePage; getSplatsChunk(splats: PagedSplats, chunk: number): { page: number; lru: number; } | undefined; private insertSplatsChunkPage; private removeSplatsChunkPage; + removeSplats(splats: PagedSplats): void; private uploadPage; - private getGlTexture; private newUint32ArrayTexture; driveFetchers(): void; private allocateFreeable; @@ -219,11 +235,8 @@ export declare class SplatPager { static emptyIndicesTexture: THREE.DataTexture; static emptyPackedTexture: THREE.DataArrayTexture; static emptyExtTexture: THREE.DataArrayTexture; - static emptySh1Texture: THREE.DataArrayTexture; - static emptySh2Texture: THREE.DataArrayTexture; - static emptySh3Texture: THREE.DataArrayTexture; - static emptyExtSh1Texture: THREE.DataArrayTexture; - static emptyExtSh2Texture: THREE.DataArrayTexture; - static emptyExtSh3Texture: THREE.DataArrayTexture; - static emptyExtSh3BTexture: THREE.DataArrayTexture; + static emptyLabelTexture: THREE.DataArrayTexture; + static emptyShTextures: readonly [THREE.DataArrayTexture, THREE.DataArrayTexture, THREE.DataArrayTexture]; + static emptyExtShTextures: readonly [THREE.DataArrayTexture, THREE.DataArrayTexture, THREE.DataArrayTexture, THREE.DataArrayTexture]; } +export {}; diff --git a/dist/types/defines.d.ts b/dist/types/defines.d.ts index 6d8c80b2..850d8ebf 100644 --- a/dist/types/defines.d.ts +++ b/dist/types/defines.d.ts @@ -54,6 +54,8 @@ export type RadMeta = { splatEncoding?: SplatEncoding; }; export type PackedExtra = { + labels?: Uint32Array; + instances?: Uint32Array; sh1?: Uint32Array; sh2?: Uint32Array; sh3?: Uint32Array; @@ -70,6 +72,8 @@ export type PackedResult = { splatEncoding: SplatEncoding; }; export type ExtExtra = { + labels?: Uint32Array; + instances?: Uint32Array; sh1?: Uint32Array; sh2?: Uint32Array; sh3a?: Uint32Array; diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index f7afaf78..5ef2b230 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -1,17 +1,14 @@ -export { OldSparkRenderer, type OldSparkRendererOptions, } from './OldSparkRenderer'; -export { OldSparkViewpoint, type OldSparkViewpointOptions, } from './OldSparkViewpoint'; export { SparkRenderer, type SparkRendererOptions, } from './SparkRenderer'; export { SplatAccumulator, type GeneratorMapping } from './SplatAccumulator'; export * as dyno from './dyno'; export { RgbaArray, readRgbaArray } from './RgbaArray'; -export { SplatLoader, unpackSplats, getSplatFileType, isPcSogs, } from './SplatLoader'; +export { SplatLoader, getSplatFileType, isPcSogs, } from './SplatLoader'; export { PlyReader } from './ply'; export { SpzReader, SpzWriter, transcodeSpz } from './spz'; export { PackedSplats, type PackedSplatsOptions } from './PackedSplats'; export { ExtSplats, type ExtSplatsOptions } from './ExtSplats'; export * from './SplatPager'; export { SplatGenerator, type GsplatGenerator, SplatModifier, type GsplatModifier, SplatTransformer, } from './SplatGenerator'; -export { OldSplatAccumulator } from './OldSplatAccumulator'; export { Readback, type Rgba8Readback, type ReadbackBuffer } from './Readback'; export { SplatMesh, type SplatMeshOptions, type SplatMeshContext, } from './SplatMesh'; export { SplatSkinning, type SplatSkinningOptions, SplatSkinningMode, } from './SplatSkinning'; diff --git a/dist/types/oldWorker.d.ts b/dist/types/oldWorker.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/dist/types/oldWorker.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/types/utils.d.ts b/dist/types/utils.d.ts index a1c95011..b95fa666 100644 --- a/dist/types/utils.d.ts +++ b/dist/types/utils.d.ts @@ -203,4 +203,5 @@ export declare class GunzipReader { }); read(numBytes: number): Promise; } +export declare function uploadU32DataTextureRows(renderer: THREE.WebGLRenderer, texture: THREE.Texture, width: number, rows: number, data: Uint32Array): void; export {}; diff --git a/dist/types/wasm.d.ts b/dist/types/wasm.d.ts new file mode 100644 index 00000000..ca0ac7c4 --- /dev/null +++ b/dist/types/wasm.d.ts @@ -0,0 +1,10 @@ +export declare const WASM_MODULE: Promise; +/** + * Promise for module instantiation, ensuring calls to + * imports from the spark-rs project can be used. + */ +export declare const initialization: Promise; +/** + * Indicates if the wasm module instantiation has completed or not. + */ +export declare function isInitialized(): boolean; diff --git a/examples/editor/index.html b/examples/editor/index.html index 36526634..7a685c71 100644 --- a/examples/editor/index.html +++ b/examples/editor/index.html @@ -614,6 +614,7 @@ }); debugFolder.add(spark, "maxStdDev", 0.1, 3.0, 0.01).name("Max Gsplat stddev").listen(); + debugFolder.add(spark, "gaussianK", 1.0, 4.0, 0.1).name("Gaussian k").listen(); debugFolder.add(spark, "falloff", 0, 1, 0.01).name("Gaussian falloff").listen(); debugFolder.add(spark, "preBlurAmount", 0, 2, 0.1).name("Blur amount (no AA)").listen(); debugFolder.add(spark, "blurAmount", 0, 2, 0.1).name("Blur amount (AA)").listen(); diff --git a/examples/portal/diskPortalFragment.glsl b/examples/portal/diskPortalFragment.glsl index 02eda6de..2b0fc125 100644 --- a/examples/portal/diskPortalFragment.glsl +++ b/examples/portal/diskPortalFragment.glsl @@ -11,6 +11,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -89,10 +90,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; diff --git a/lefthook.yml b/lefthook.yml.old similarity index 100% rename from lefthook.yml rename to lefthook.yml.old diff --git a/rust/Cargo.lock b/rust/Cargo.lock index e85117aa..570f19fd 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -32,6 +32,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -47,6 +56,56 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys", +] + [[package]] name = "anyhow" version = "1.0.98" @@ -172,6 +231,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -182,6 +247,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "console_log" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +dependencies = [ + "log", + "web-sys", +] + [[package]] name = "const-random" version = "0.1.18" @@ -257,6 +332,29 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "env_filter" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -442,6 +540,12 @@ dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hexf-parse" version = "0.2.1" @@ -497,6 +601,12 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "itertools" version = "0.14.0" @@ -512,6 +622,30 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jiff" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "jni-sys" version = "0.3.1" @@ -608,9 +742,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" [[package]] name = "memchr" @@ -751,6 +885,12 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + [[package]] name = "ordered-float" version = "5.1.0" @@ -919,6 +1059,35 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex" +version = "1.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + [[package]] name = "renderdoc-sys" version = "1.1.0" @@ -1003,6 +1172,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + [[package]] name = "simd-adler32" version = "0.3.9" @@ -1046,18 +1226,22 @@ version = "0.1.0" dependencies = [ "ahash 0.8.12", "anyhow", + "env_logger", "glam", "half", "hnsw", "image", "itertools", + "log", "miniz_oxide", "ordered-float", "rand_pcg", "serde", "serde_json", + "serde_path_to_error", "smallvec", "space", + "strum_macros", "zip", ] @@ -1068,16 +1252,19 @@ dependencies = [ "ahash 0.8.12", "anyhow", "console_error_panic_hook", + "console_log", "glam", "half", "itertools", "js-sys", + "log", "ordered-float", "serde-wasm-bindgen", "serde_json", "smallvec", "spark-lib", "wasm-bindgen", + "wasm-log", "web-sys", ] @@ -1096,6 +1283,18 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "syn" version = "2.0.100" @@ -1163,6 +1362,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "version_check" version = "0.9.5" @@ -1230,6 +1435,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-log" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def95b2a762924804037f77e3de791f1c177d6ecbe0385a64e519bd7902a5f81" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wayland-sys" version = "0.31.11" diff --git a/rust/build-lod/src/main.rs b/rust/build-lod/src/main.rs index 0b06ffde..e08b185e 100644 --- a/rust/build-lod/src/main.rs +++ b/rust/build-lod/src/main.rs @@ -327,6 +327,8 @@ fn process_file_lod_tsplat(filena "rgb": encoder.rgb_encoding, "scales": encoder.scales_encoding, "orientation": encoder.orientation_encoding, + "label": encoder.label_encoding, + "instance_label": encoder.instance_encoding, "sh": encoder.sh_encoding, "encoding": encoder.encoding, "sh_label": encoder.sh_label_encoding, @@ -340,6 +342,8 @@ fn process_file_lod_tsplat(filena "rgb": encoder.rgb_encoding, "scales": encoder.scales_encoding, "orientation": encoder.orientation_encoding, + "label": encoder.label_encoding, + "instance_label": encoder.instance_encoding, "sh": encoder.sh_encoding, "encoding": encoder.encoding, "sh_label": encoder.sh_label_encoding, diff --git a/rust/spark-lib/Cargo.toml b/rust/spark-lib/Cargo.toml index be19442b..db0bc67b 100644 --- a/rust/spark-lib/Cargo.toml +++ b/rust/spark-lib/Cargo.toml @@ -23,3 +23,7 @@ image.workspace = true hnsw.workspace = true rand_pcg.workspace = true space.workspace = true +log = "0.4.32" +env_logger = "0.11.10" +serde_path_to_error = "0.1.20" +strum_macros = "0.28.0" diff --git a/rust/spark-lib/src/csplat.rs b/rust/spark-lib/src/csplat.rs index 6c5fdcfa..5878a785 100644 --- a/rust/spark-lib/src/csplat.rs +++ b/rust/spark-lib/src/csplat.rs @@ -55,6 +55,8 @@ impl<'a> Tsplat for CsplatRef<'a> { fn scales(&self) -> Vec3A { get_scales(self.splat, self.encoding) } fn quaternion(&self) -> Quat { get_quaternion(self.splat) } fn max_scale(&self) -> f32 { get_max_scale(self.splat, self.encoding) } + fn label(&self) -> u32 { todo!(); } + fn instance_label(&self) -> u32 { todo!(); } } impl<'a> Tsplat for CsplatRefMut<'a> { @@ -64,9 +66,11 @@ impl<'a> Tsplat for CsplatRefMut<'a> { fn scales(&self) -> Vec3A { get_scales(self.splat, self.encoding) } fn quaternion(&self) -> Quat { get_quaternion(self.splat) } fn max_scale(&self) -> f32 { get_max_scale(self.splat, self.encoding) } + fn label(&self) -> u32 { todo!(); } + fn instance_label(&self) -> u32 { todo!(); } } -fn get_center(splat: &Csplat) -> Vec3A { +fn get_center(splat: &Csplat) -> Vec3A { splat.center.to_vec3a() } @@ -122,6 +126,8 @@ impl<'a> TsplatMut for CsplatRefMut<'a> { fn set_rgb(&mut self, rgb: Vec3A) { set_rgb(self.splat, rgb, self.encoding); } fn set_scales(&mut self, scales: Vec3A) { set_scales(self.splat, scales, self.encoding); } fn set_quaternion(&mut self, quaternion: Quat) { set_quaternion(self.splat, quaternion); } + fn set_label(&mut self, _label: u32) { todo!(); } + fn set_instance_label(&mut self, _instance_label: u32) { todo!(); } } pub struct CsplatArray { @@ -673,6 +679,18 @@ impl SplatGetter for CsplatArray { } } + fn get_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + for i in 0..count { + out[i] = self.get(base + i).label() as u32; + } + } + + fn get_instance_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + for i in 0..count { + out[i] = self.get(base + i).instance_label() as u32; + } + } + fn get_rgb(&mut self, base: usize, count: usize, out: &mut [f32]) { for i in 0..count { let r = self.get(base + i).rgb().to_array(); diff --git a/rust/spark-lib/src/decoder.rs b/rust/spark-lib/src/decoder.rs index 74c4af30..e854bc71 100644 --- a/rust/spark-lib/src/decoder.rs +++ b/rust/spark-lib/src/decoder.rs @@ -1,5 +1,6 @@ use std::any::Any; + use miniz_oxide::inflate::{core::{decompress, inflate_flags::{TINFL_FLAG_HAS_MORE_INPUT, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF}, DecompressorOxide}, TINFLStatus}; use serde::{Deserialize, Serialize}; @@ -118,6 +119,8 @@ pub struct SplatProps<'a> { pub sh1: &'a [f32], pub sh2: &'a [f32], pub sh3: &'a [f32], + pub labels: &'a [u32], + pub instances: &'a [u32], pub child_count: &'a [u16], pub child_start: &'a [usize], } @@ -133,6 +136,8 @@ impl<'a> Default for SplatProps<'a> { sh1: &[], sh2: &[], sh3: &[], + labels: &[], + instances: &[], child_count: &[], child_start: &[], } @@ -155,6 +160,9 @@ pub trait SplatReceiver: 'static { fn set_scale(&mut self, base: usize, count: usize, scale: &[f32]); fn set_quat(&mut self, base: usize, count: usize, quat: &[f32]); + fn set_label(&mut self, base: usize, count: usize, values: &[u32]) {} + fn set_instance_label(&mut self, base: usize, count: usize, values: &[u32]) {} + fn set_sh(&mut self, base: usize, count: usize, sh1: &[f32], sh2: &[f32], sh3: &[f32]) {} fn set_sh1(&mut self, base: usize, count: usize, sh1: &[f32]) {} fn set_sh2(&mut self, base: usize, count: usize, sh2: &[f32]) {} @@ -325,6 +333,9 @@ pub trait SplatGetter: 'static { fn get_child_count(&mut self, _base: usize, _count: usize, _out: &mut [u16]) {} fn get_child_start(&mut self, _base: usize, _count: usize, _out: &mut [usize]) {} + fn get_label(&mut self, base: usize, count: usize, out: &mut [u32]); + fn get_instance_label(&mut self, base: usize, count: usize, out: &mut [u32]); + fn has_labels(&self) -> bool { true } // default opt-in } #[derive(Debug, Clone, Copy)] @@ -652,6 +663,10 @@ pub fn copy_getter_to_receiver(getter: &mut G, let mut sh1: Vec = Vec::new(); let mut sh2: Vec = Vec::new(); let mut sh3: Vec = Vec::new(); + + let mut labels: Vec = Vec::new(); + let mut instances: Vec = Vec::new(); + let mut child_count: Vec = Vec::new(); let mut child_start: Vec = Vec::new(); @@ -669,7 +684,9 @@ pub fn copy_getter_to_receiver(getter: &mut G, getter.get_opacity(base, count, &mut opacity[..count]); getter.get_rgb(base, count, &mut rgb[..count * 3]); getter.get_scale(base, count, &mut scale[..count * 3]); - getter.get_quat(base, count, &mut quat[..count * 4]); + + getter.get_label(base, count, &mut labels[..count]); + getter.get_instance_label(base, count, &mut instances[..count]); let (sh1_slice, sh2_slice, sh3_slice) = if max_sh_degree >= 1 { if sh1.len() < count * 9 { sh1.resize(count * 9, 0.0); } @@ -706,6 +723,8 @@ pub fn copy_getter_to_receiver(getter: &mut G, rgb: &rgb[..count * 3], scale: &scale[..count * 3], quat: &quat[..count * 4], + labels: &labels[..count], + instances: &instances[..count], sh1: sh1_slice, sh2: sh2_slice, sh3: sh3_slice, diff --git a/rust/spark-lib/src/gsplat.rs b/rust/spark-lib/src/gsplat.rs index 0a69d468..159a35f3 100644 --- a/rust/spark-lib/src/gsplat.rs +++ b/rust/spark-lib/src/gsplat.rs @@ -19,16 +19,20 @@ pub struct Gsplat { pub rgb: [f16; 3], pub ln_scales: [f16; 3], pub quaternion: [f16; 4], + pub label: u32, + pub instance_label: u32, } impl Gsplat { - pub fn new(center: Vec3A, opacity: f32, rgb: Vec3A, scales: Vec3A, quaternion: Quat) -> Self { + pub fn new(center: Vec3A, opacity: f32, rgb: Vec3A, scales: Vec3A, quaternion: Quat, label: u32, instance_label: u32) -> Self { Self { center: center.to_vec3(), opacity: f16::from_f32(opacity), rgb: rgb.to_array().map(|v| f16::from_f32(v)), ln_scales: scales.to_array().map(|v| f16::from_f32(v.ln())), quaternion: quaternion.to_array().map(|v| f16::from_f32(v)), + label: label, + instance_label: instance_label } } } @@ -63,6 +67,15 @@ impl<'a> Tsplat for &'a Gsplat { fn max_scale(&self) -> f32 { self.ln_scales[0].max(self.ln_scales[1]).max(self.ln_scales[2]).to_f32().exp() } + + fn label(&self) -> u32 { + self.label + } + + fn instance_label(&self) -> u32 { + self.instance_label + } + } impl<'a> Tsplat for &'a mut Gsplat { @@ -89,6 +102,14 @@ impl<'a> Tsplat for &'a mut Gsplat { fn max_scale(&self) -> f32 { self.ln_scales[0].max(self.ln_scales[1]).max(self.ln_scales[2]).to_f32().exp() } + + fn label(&self) -> u32 { + self.label + } + + fn instance_label(&self) -> u32 { + self.instance_label + } } impl<'a> TsplatMut for &'a mut Gsplat { @@ -114,6 +135,15 @@ impl<'a> TsplatMut for &'a mut Gsplat { fn set_quaternion(&mut self, quaternion: Quat) { self.quaternion = quaternion.to_array().map(|v| f16::from_f32(v)); } + + fn set_label(&mut self, label: u32) { + self.label = label; + } + + fn set_instance_label(&mut self, instance_label: u32) { + self.instance_label = instance_label; + } + } #[derive(Debug, Clone, Default)] @@ -165,6 +195,7 @@ impl GsplatSH2 { } #[derive(Debug, Clone, Default)] + pub struct GsplatSH3(pub [[f16; 3]; 7]); impl GsplatSH3 { @@ -191,39 +222,6 @@ impl GsplatSH3 { } } -// #[derive(Debug, Clone, Default)] -// pub struct GsplatExtra { -// pub weight: f32, -// pub level: i16, -// pub covariance: SymMat3, -// pub children: SmallVec<[usize; 8]>, -// pub parent: usize, -// } - -// impl GsplatExtra { -// pub fn new(weight: f32, covariance: SymMat3, children: SmallVec<[usize; 8]>) -> Self { -// Self { -// weight, -// level: 0, -// covariance, -// children, -// parent: usize::MAX, -// } -// } - -// pub fn new_from_gsplat(gsplat: &Gsplat) -> Self { -// let scales = gsplat.scales(); -// let area = ellipsoid_area(scales); -// let weight = area * gsplat.opacity(); -// let covariance = SymMat3::new_scale_quaternion(scales, gsplat.quaternion()); -// Self::new(weight, covariance, SmallVec::new()) -// } - -// pub fn weight(&self) -> f32 { -// self.weight -// } -// } - pub struct GsplatArray { pub max_sh_degree: usize, pub splats: Vec, @@ -405,7 +403,16 @@ impl TsplatArray for GsplatArray { (scales, opacity) }; - self.splats.push(Gsplat::new(center, opacity, rgb, scales, quaternion)); + let mut label: u32 = 0; + let mut instance_label: u32 = 0; + if let Some(first_index) = indices.get(0).copied(){ + let first_splat = &self.splats[first_index]; + label = (*first_splat).label as u32; + instance_label = (*first_splat).instance_label as u32; + } + + + self.splats.push(Gsplat::new(center, opacity, rgb, scales, quaternion, label, instance_label)); self.children.push(indices.iter().copied().collect()); if self.max_sh_degree >= 1 { @@ -781,10 +788,24 @@ impl SplatReceiver for GsplatArray { splat.set_rgb(Vec3A::from_slice(&batch.rgb[i3..i3 + 3])); splat.set_scales(Vec3A::from_slice(&batch.scale[i3..i3 + 3])); splat.set_quaternion(Quat::from_slice(&batch.quat[i4..i4 + 4])); + splat.set_label(batch.labels[i]); + splat.set_instance_label(batch.instances[i]); } self.set_sh(base, count, batch.sh1, batch.sh2, batch.sh3); + // if !batch.labels.is_empty() { + // for i in 0..count { + // let i4 = i * 4; + // self.labels[base + i] = [ + // batch.labels[i4] as f32, + // batch.labels[i4 + 1] as f32, + // 0.0, + // 255.0 + // ]; + // } + // } + if !batch.child_count.is_empty() && !batch.child_start.is_empty() { self.set_child_start(base, count, batch.child_start); self.set_child_count(base, count, batch.child_count); @@ -953,6 +974,19 @@ impl SplatGetter for GsplatArray { } } + + fn get_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + for i in 0..count { + out[i] = self.get(base + i).label() as u32; + } + } + + fn get_instance_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + for i in 0..count { + out[i] = self.get(base + i).instance_label() as u32; + } + } + fn get_sh1(&mut self, base: usize, count: usize, out: &mut [f32]) { if self.max_sh_degree >= 1 { for i in 0..count { out[i * 9..i * 9 + 9].copy_from_slice(&self.sh1[base + i].to_array()); } diff --git a/rust/spark-lib/src/lib.rs b/rust/spark-lib/src/lib.rs index 5b492abe..96f55ef5 100644 --- a/rust/spark-lib/src/lib.rs +++ b/rust/spark-lib/src/lib.rs @@ -39,6 +39,8 @@ mod tests { Vec3A::from_array(rgb), Vec3A::from_array(scales), Quat::from_array(quat_xyzw), + 0.0, + 0.0 ) } @@ -177,6 +179,8 @@ mod ply_tests { Vec3A::from_array(rgb), Vec3A::from_array(scales), Quat::from_array(quat_xyzw), + 0.0, + 0.0 ) } diff --git a/rust/spark-lib/src/ply.rs b/rust/spark-lib/src/ply.rs index a957cfa8..56824597 100644 --- a/rust/spark-lib/src/ply.rs +++ b/rust/spark-lib/src/ply.rs @@ -189,6 +189,11 @@ impl PlyDecoder { state.out_quat[i4 + d] = quat[d] / quat_magnitude; } + if let Some(label) = state.label { + state.out_labels[i] = label[0].get_u32(&self.buffer, base); + state.out_instances[i] = label[1].get_u32(&self.buffer, base) + (1 as u32); + } + if let Some(sh1) = state.sh1 { let i9 = i * 9; for d in 0..9 { @@ -215,6 +220,8 @@ impl PlyDecoder { rgb: &state.out_rgb[..count * 3], scale: &state.out_scale[..count * 3], quat: &state.out_quat[..count * 4], + labels: &state.out_labels[..count], + instances: &state.out_instances[..count], sh1: &state.out_sh1[..(if state.max_sh_degree >= 1 { count * 9 } else { 0 })], sh2: &state.out_sh2[..(if state.max_sh_degree >= 2 { count * 15 } else { 0 })], sh3: &state.out_sh3[..(if state.max_sh_degree >= 3 { count * 21 } else { 0 })], @@ -895,6 +902,9 @@ struct PlyDecoderState { op_logi: PlyProperty, f_dc: [PlyProperty; 3], max_sh_degree: usize, + + label: Option<[PlyProperty; 2]>, + sh1: Option<[PlyProperty; 9]>, sh2: Option<[PlyProperty; 15]>, sh3: Option<[PlyProperty; 21]>, @@ -907,6 +917,8 @@ struct PlyDecoderState { out_sh1: Vec, out_sh2: Vec, out_sh3: Vec, + out_labels: Vec, + out_instances: Vec } impl PlyDecoderState { @@ -934,6 +946,15 @@ impl PlyDecoderState { *properties.get("f_dc_2").ok_or(anyhow!("Missing f_dc_2 property"))?, ]; + let label = if properties.get("label").is_some() { + Some([ + *properties.get("label").ok_or(anyhow!("??? Missing label field"))?, + *properties.get("instance_label").ok_or(anyhow!("??? Missing instance_label property"))?, + ]) + } else { + None + }; + let mut num_f_rest = 0; while properties.contains_key(&format!("f_rest_{}", num_f_rest)) { num_f_rest += 1; @@ -985,6 +1006,7 @@ impl PlyDecoderState { op_logi, f_dc, max_sh_degree, + label, sh1, sh2, sh3, @@ -996,6 +1018,8 @@ impl PlyDecoderState { out_sh1: Vec::new(), out_sh2: Vec::new(), out_sh3: Vec::new(), + out_labels: Vec::new(), + out_instances: Vec::new() }) } @@ -1015,6 +1039,12 @@ impl PlyDecoderState { if self.out_quat.len() < (count * 4) { self.out_quat.resize(count * 4, 0.0); } + if self.out_labels.len() < (count) { + self.out_labels.resize(count, 0); + } + if self.out_instances.len() < (count) { + self.out_instances.resize(count, 0); + } if self.max_sh_degree >= 1 && self.out_sh1.len() < (count * 9) { self.out_sh1.resize(count * 9, 0.0); } diff --git a/rust/spark-lib/src/rad.rs b/rust/spark-lib/src/rad.rs index 813495ef..4443db4c 100644 --- a/rust/spark-lib/src/rad.rs +++ b/rust/spark-lib/src/rad.rs @@ -8,6 +8,9 @@ use serde::{Deserialize, Serialize}; use miniz_oxide::deflate::compress_to_vec; use miniz_oxide::inflate::decompress_to_vec; + +use strum_macros::Display; + // fn compress_to_vec(data: &[u8], _level: u8) -> Vec { // data.to_vec() // } @@ -36,6 +39,8 @@ pub struct RadEncoder { pub rgb_encoding: RadRgbEncoding, pub scales_encoding: RadScalesEncoding, pub orientation_encoding: RadOrientationEncoding, + pub label_encoding: RadLabelEncoding, + pub instance_encoding: RadInstanceEncoding, pub sh_encoding: RadShEncoding, pub sh_label_encoding: RadShLabelEncoding, pub sh_clusters: Option, @@ -80,6 +85,23 @@ pub enum RadScalesEncoding { LnF16, } +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum RadLabelEncoding { + #[default] + Auto, + U8, + U16, + U32, +} + +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum RadInstanceEncoding { + #[default] + Auto, + U16, + U32, +} + #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum RadOrientationEncoding { #[default] @@ -178,7 +200,7 @@ pub struct RadChunkProperty { max: Option, } -#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, Display)] pub enum RadChunkPropertyName { #[default] #[serde(rename = "center")] @@ -191,6 +213,10 @@ pub enum RadChunkPropertyName { Scales, #[serde(rename = "orientation")] Orientation, + #[serde(rename = "label")] + Label, + #[serde(rename = "instance_label")] + InstanceLabel, #[serde(rename = "sh1")] Sh1, #[serde(rename = "sh2")] @@ -214,6 +240,8 @@ pub enum RadChunkPropertyName { #[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum RadChunkPropertyEncoding { #[default] + #[serde(rename = "u8")] + U8, #[serde(rename = "f32")] F32, #[serde(rename = "f16")] @@ -259,6 +287,8 @@ impl RadEncoder { rgb_encoding: RadRgbEncoding::default(), scales_encoding: RadScalesEncoding::default(), orientation_encoding: RadOrientationEncoding::default(), + label_encoding: RadLabelEncoding::default(), + instance_encoding: RadInstanceEncoding::default(), sh_encoding: RadShEncoding::default(), sh_label_encoding: RadShLabelEncoding::default(), sh_clusters: None, @@ -494,6 +524,14 @@ impl RadEncoder { } } + pub fn resolve_label_encoding(&mut self) { + self.label_encoding = RadLabelEncoding::U32; + } + + pub fn resolve_instance_encoding(&mut self) { + self.instance_encoding = RadInstanceEncoding::U32; + } + pub fn resolve_encoding(&mut self) { self.resolve_center_encoding(); self.resolve_alpha_encoding(); @@ -502,6 +540,8 @@ impl RadEncoder { self.resolve_orientation_encoding(); self.resolve_sh_encoding(); self.resolve_sh_label_encoding(); + self.resolve_label_encoding(); + self.resolve_instance_encoding(); } pub fn with_sh_clusters(mut self, clusters: ShClusters) -> Self { @@ -537,6 +577,9 @@ impl RadEncoder { buffer_usize.resize(CHUNK_SIZE, 0); } + let mut buffer_u32 = Vec::new(); + buffer_u32.resize(CHUNK_SIZE, 0u32); + let num_chunks = num_splats.div_ceil(CHUNK_SIZE); let mut chunks = Vec::with_capacity(num_chunks); let mut chunk_ranges = Vec::with_capacity(num_chunks); @@ -545,7 +588,7 @@ impl RadEncoder { for chunk_index in 0..num_chunks { let base = chunk_index * CHUNK_SIZE; let count = (num_splats - base).min(CHUNK_SIZE); - let chunk = self.encode_chunk(base, count, &encoding, &mut buffer, &mut buffer_u16, &mut buffer_usize)?; + let chunk = self.encode_chunk(base, count, &encoding, &mut buffer, &mut buffer_u16, &mut buffer_usize, &mut buffer_u32)?; let filename = if chunk_prefix.is_empty() { None } else { Some(format!("{}{}.radc", chunk_prefix, chunk_index)) @@ -648,6 +691,50 @@ impl RadEncoder { (meta, compress_to_vec(&bytes, GZ_LEVEL)) } + fn encode_chunk_label(&mut self, base: usize, count: usize, buffer: &mut Vec) -> (RadChunkProperty, Vec) { + if buffer.len() < count { + buffer.resize(count, 0); + } + + self.getter.get_label(base, count, &mut buffer[..count]); + + let (encoding, bytes) = match self.label_encoding { + RadLabelEncoding::U32 => (RadChunkPropertyEncoding::U32, encode_u32(&buffer, 1, count)), + _ => unreachable!(), + }; + + let meta = RadChunkProperty { + property: RadChunkPropertyName::Label, + encoding, + compression: Some(RadChunkPropertyCompression::Gz), + ..Default::default() + }; + (meta, compress_to_vec(&bytes, GZ_LEVEL)) + } + + + fn encode_chunk_instance(&mut self, base: usize, count: usize, buffer: &mut Vec) -> (RadChunkProperty, Vec) { + if buffer.len() < count { + buffer.resize(count, 0); + } + + self.getter.get_instance_label(base, count, &mut buffer[..count]); + + let (encoding, bytes) = match self.instance_encoding { + RadInstanceEncoding::U32 => (RadChunkPropertyEncoding::U32, encode_u32(&buffer, 1, count)), + _ => unreachable!(), + }; + + let meta = RadChunkProperty { + property: RadChunkPropertyName::InstanceLabel, + encoding, + compression: Some(RadChunkPropertyCompression::Gz), + ..Default::default() + }; + (meta, compress_to_vec(&bytes, GZ_LEVEL)) + } + + fn encode_chunk_rgb(&mut self, base: usize, count: usize, buffer: &mut Vec, encoding: &SplatEncoding) -> (RadChunkProperty, Vec) { if buffer.len() < count * 3 { buffer.resize(count * 3, 0.0); @@ -848,7 +935,7 @@ impl RadEncoder { fn encode_chunk( &mut self, base: usize, count: usize, encoding: &SplatEncoding, - buffer: &mut Vec, buffer_u16: &mut Vec, buffer_usize: &mut Vec, + buffer: &mut Vec, buffer_u16: &mut Vec, buffer_usize: &mut Vec, buffer_u32: &mut Vec, ) -> anyhow::Result> { let max_sh = self.getter.max_sh_degree().min(self.max_sh); @@ -858,6 +945,8 @@ impl RadEncoder { self.encode_chunk_rgb(base, count, buffer, encoding), self.encode_chunk_scales(base, count, buffer, encoding), self.encode_chunk_orientation(base, count, buffer), + self.encode_chunk_label(base, count, buffer_u32), + self.encode_chunk_instance(base, count, buffer_u32) ]; let num_clusters = self.sh_clusters.as_ref().map(|c| c.num_clusters); @@ -1779,6 +1868,20 @@ impl RadDecoder { let child_starts = decode_u32_as_usize(data, 1, self.count); self.splats.set_child_start(self.base, self.count, &child_starts); }, + RadChunkPropertyName::Label => { + let values = match prop.encoding { + RadChunkPropertyEncoding::U16 => decode_u16_as_u32(data, 1, self.count), + _ => return Err(anyhow::anyhow!("Unsupported label encoding: {:?}", prop.encoding)), + }; + self.splats.set_label(self.base, self.count, &values); + }, + RadChunkPropertyName::InstanceLabel => { + let values = match prop.encoding { + RadChunkPropertyEncoding::U16 => decode_u16_as_u32(data, 1, self.count), + _ => return Err(anyhow::anyhow!("Unsupported instance encoding: {:?}", prop.encoding)), + }; + self.splats.set_instance_label(self.base, self.count, &values); + }, // _ => return Err(anyhow::anyhow!("Unknown property type: {:?}", prop.property)), } diff --git a/rust/spark-lib/src/sogs.rs b/rust/spark-lib/src/sogs.rs index 59a39785..0181ff0e 100644 --- a/rust/spark-lib/src/sogs.rs +++ b/rust/spark-lib/src/sogs.rs @@ -3,6 +3,7 @@ use std::{collections::HashMap, io::Cursor}; use anyhow::{anyhow, Context}; use image::{DynamicImage, GenericImageView, ImageReader}; use serde_json; +use serde_path_to_error; use serde::Deserialize; use zip::ZipArchive; @@ -26,6 +27,7 @@ struct PcSogsV2 { means: Means, scales: ScalesV2, quats: Quats, + labels: Option, sh0: Sh0V2, #[serde(rename = "shN")] shn: Option, @@ -36,11 +38,18 @@ struct PcSogsV1 { means: MeansV1, scales: ScalesV1, quats: Quats, + labels: Option, sh0: Sh0V1, #[serde(rename = "shN")] shn: Option, } +#[derive(Debug, Deserialize)] +struct Labels { + info: std::collections::HashMap, + files: [String; 1], +} + #[derive(Debug, Deserialize)] struct Means { files: [String; 2], @@ -163,7 +172,8 @@ fn decode_sogs(bytes: &[u8], splats: &mut T, _pathname: Option std::io::copy(&mut meta_file, &mut meta_bytes)?; meta_bytes }; - let meta: PcSogsRoot = serde_json::from_slice(&meta_bytes) + let jd = &mut serde_json::Deserializer::from_slice(&meta_bytes); + let meta: PcSogsRoot = serde_path_to_error::deserialize(jd) .context("Failed to parse meta.json for SOGS")?; let mut file_cache: HashMap> = HashMap::new(); @@ -207,6 +217,7 @@ fn decode_v2( let mut quat = vec![0.0f32; num_splats * 4]; let mut rgb = vec![0.0f32; num_splats * 3]; let mut opacity = vec![0.0f32; num_splats]; + let mut sh1: Vec = if max_sh_degree >= 1 { vec![0.0; num_splats * 9] } else { Vec::new() }; let mut sh2: Vec = if max_sh_degree >= 2 { vec![0.0; num_splats * 15] } else { Vec::new() }; let mut sh3: Vec = if max_sh_degree >= 3 { vec![0.0; num_splats * 21] } else { Vec::new() }; @@ -219,6 +230,13 @@ fn decode_v2( decode_quats(&quats_img, &mut quat)?; decode_sh0_v2(&meta.sh0.codebook, &sh0_img, &mut rgb, &mut opacity)?; + let mut labels = vec![0u32; num_splats]; + let mut instances = vec![0u32; num_splats]; + if let Some(meta_labels) = meta.labels { + let labels_img = decode_rgba(&get_file(&meta_labels.files[0])?).context("decode labels")?; + decode_labels(&labels_img, &mut labels, &mut instances)?; + } + if let Some(shn) = meta.shn { decode_shn_v2( shn, @@ -242,6 +260,8 @@ fn decode_v2( &sh1, &sh2, &sh3, + &labels, + &instances ) } @@ -295,6 +315,13 @@ fn decode_v1( decode_quats(&quats_img, &mut quat)?; decode_sh0_v1(&meta.sh0.mins, &meta.sh0.maxs, &sh0_img, &mut rgb, &mut opacity)?; + let mut labels = vec![0u32; num_splats]; + let mut instances = vec![0u32; num_splats]; + if let Some(meta_labels) = meta.labels { + let labels_img = decode_rgba(&get_file(&meta_labels.files[0])?).context("decode labels")?; + decode_labels(&labels_img, &mut labels, &mut instances)?; + } + if let Some(shn) = meta.shn { decode_shn_v1( shn, @@ -319,6 +346,8 @@ fn decode_v1( &sh1, &sh2, &sh3, + &labels, + &instances ) } @@ -349,6 +378,20 @@ fn decode_means( Ok(()) } +fn decode_labels( + img: &ImageData, + out_labels: &mut [u32], + out_instances: &mut [u32], +) -> anyhow::Result<()> { + let num_splats = out_labels.len() / 4; + for i in 0..num_splats { + let i4 = i * 4; + out_labels[i] = img.rgba[i4] as u32; + out_instances[i] = (img.rgba[i4 + 1] as u16 | ((img.rgba[i4 + 2] as u16) << 8)) as u32; + } + Ok(()) +} + fn decode_scales_v2(codebook: &[f32], img: &ImageData, out_scale: &mut [f32]) -> anyhow::Result<()> { let num_splats = out_scale.len() / 3; let lookup: Vec = codebook.iter().map(|v| v.exp()).collect(); @@ -543,6 +586,8 @@ fn emit_to_receiver( sh1: &[f32], sh2: &[f32], sh3: &[f32], + labels: &[u32], + instances: &[u32] ) -> anyhow::Result<()> { let mut base = 0usize; while base < num_splats { @@ -558,6 +603,8 @@ fn emit_to_receiver( rgb: &rgb[i3..i3 + count * 3], scale: &scale[i3..i3 + count * 3], quat: &quat[i4..i4 + count * 4], + labels: &labels[base..base + count], + instances: &instances[base..base + count], sh1: if max_sh_degree >= 1 { &sh1[base * 9..base * 9 + count * 9] } else { &[] }, sh2: if max_sh_degree >= 2 { &sh2[base * 15..base * 15 + count * 15] } else { &[] }, sh3: if max_sh_degree >= 3 { &sh3[base * 21..base * 21 + count * 21] } else { &[] }, @@ -581,6 +628,9 @@ fn preload_all( for f in v2.scales.files.iter() { preload_file(zip, prefix, cache, f)?; } for f in v2.quats.files.iter() { preload_file(zip, prefix, cache, f)?; } for f in v2.sh0.files.iter() { preload_file(zip, prefix, cache, f)?; } + if let Some(labels) = &v2.labels { + for f in labels.files.iter() { preload_file(zip, prefix, cache, f)?; } + } if let Some(shn) = &v2.shn { for f in shn.files.iter() { preload_file(zip, prefix, cache, f)?; } } diff --git a/rust/spark-lib/src/tsplat.rs b/rust/spark-lib/src/tsplat.rs index dfb4102d..2e85a823 100644 --- a/rust/spark-lib/src/tsplat.rs +++ b/rust/spark-lib/src/tsplat.rs @@ -10,6 +10,8 @@ pub trait Tsplat: std::fmt::Debug { fn rgb(&self) -> Vec3A; fn scales(&self) -> Vec3A; fn quaternion(&self) -> Quat; + fn label(&self) -> u32; + fn instance_label(&self) -> u32; fn max_scale(&self) -> f32 { self.scales().max_element() } @@ -56,6 +58,8 @@ pub trait TsplatMut: Tsplat { fn set_rgb(&mut self, rgb: Vec3A); fn set_scales(&mut self, scales: Vec3A); fn set_quaternion(&mut self, quaternion: Quat); + fn set_label(&mut self, label: u32); + fn set_instance_label(&mut self, instance: u32); } pub trait TsplatArray { @@ -192,6 +196,12 @@ pub fn bhattacharyya_coeff(a: &impl Tsplat, b: &impl Tsplat) -> f32 { pub fn similarity_metric(a: &impl Tsplat, b: &impl Tsplat) -> f32 { let spatial = bhattacharyya_coeff(a, b); + if a.label() != a.label() { + return 0.0 + } + if a.label() == b.label() && a.instance_label() != b.instance_label() { + return 0.0 + } let color_a = a.rgb(); let color_b = b.rgb(); diff --git a/rust/spark-rs/Cargo.toml b/rust/spark-rs/Cargo.toml index 7c4f3e13..16d76b95 100644 --- a/rust/spark-rs/Cargo.toml +++ b/rust/spark-rs/Cargo.toml @@ -28,3 +28,6 @@ serde-wasm-bindgen.workspace = true serde_json.workspace = true itertools.workspace = true console_error_panic_hook = "0.1" +wasm-log = "0.3.1" +log = "0.4.32" +console_log = "1.0.0" diff --git a/rust/spark-rs/src/ext_splats.rs b/rust/spark-rs/src/ext_splats.rs index eed4da9f..f88e686d 100644 --- a/rust/spark-rs/src/ext_splats.rs +++ b/rust/spark-rs/src/ext_splats.rs @@ -1,4 +1,6 @@ use std::array; +use std::collections::HashMap; +use serde_wasm_bindgen::to_value; use js_sys::{Array, Object, Reflect, Uint32Array}; use spark_lib::{ @@ -17,6 +19,9 @@ pub struct ExtSplatsData { pub num_splats: usize, pub max_sh_degree: usize, pub ext_arrays: [Uint32Array; 2], + pub labels: Option, + pub instances: Option, + pub label_info: Option>, pub sh1: Option, pub sh2: Option, pub sh3a: Option, @@ -44,6 +49,9 @@ impl ExtSplatsData { num_splats: 0, max_sh_degree: 0, ext_arrays: [Uint32Array::new_with_length(0), Uint32Array::new_with_length(0)], + labels: None, + instances: None, + label_info: None, sh1: None, sh2: None, sh3a: None, @@ -72,6 +80,16 @@ impl ExtSplatsData { Reflect::set(&object, &JsValue::from_str("maxShDegree"), &JsValue::from(self.max_sh_degree as u32)).unwrap(); Reflect::set(&object, &JsValue::from_str("ext0"), &JsValue::from(self.ext_arrays[0].clone())).unwrap(); Reflect::set(&object, &JsValue::from_str("ext1"), &JsValue::from(self.ext_arrays[1].clone())).unwrap(); + if let Some(labels) = self.labels.as_ref() { + Reflect::set(&object, &JsValue::from_str("labels"), &JsValue::from(labels)).unwrap(); + } + if let Some(instances) = self.instances.as_ref() { + Reflect::set(&object, &JsValue::from_str("instances"), &JsValue::from(instances)).unwrap(); + } + if let Some(label_info) = self.label_info.as_ref() { + let js_label_info = to_value(&label_info).unwrap(); + Reflect::set(&object, &JsValue::from_str("label_info"), &js_label_info).unwrap(); + } if let Some(sh1) = self.sh1.as_ref() { Reflect::set(&object, &JsValue::from_str("sh1"), &JsValue::from(sh1)).unwrap(); } @@ -373,6 +391,9 @@ impl SplatReceiver for ExtSplatsData { self.ext_arrays[0] = Uint32Array::new_with_length((max_splats * 4) as u32); self.ext_arrays[1] = Uint32Array::new_with_length((max_splats * 4) as u32); + self.labels = Some(Uint32Array::new_with_length((max_splats) as u32)); + self.instances = Some(Uint32Array::new_with_length((max_splats) as u32)); + self.sh1 = if init.max_sh_degree < 1 { None } else { Some(Uint32Array::new_with_length((max_splats * 4) as u32)) }; @@ -489,6 +510,13 @@ impl SplatReceiver for ExtSplatsData { self.set_sh(base, count, batch.sh1, batch.sh2, batch.sh3); + if !batch.labels.is_empty() { + self.set_label(base, count, batch.labels); + } + if !batch.instances.is_empty() { + self.set_instance_label(base, count, batch.instances); + } + if !batch.child_count.is_empty() { self.set_child_count(base, count, batch.child_count); } @@ -841,6 +869,30 @@ impl SplatReceiver for ExtSplatsData { starts[base + i] = child_start[i] as u32; } } + + fn set_label(&mut self, base: usize, count: usize, values: &[u32]) { + self.invalidate_buffers(); + self.ensure_buffer_a(count); + if let Some(labels) = self.labels.as_ref() { + let buffer = &mut self.buffer_a[0..count]; + for i in 0..count { + buffer[i] = values[i] as u32; + } + labels.subarray(base as u32, (base + count) as u32).copy_from(buffer); + } + } + + fn set_instance_label(&mut self, base: usize, count: usize, values: &[u32]) { + self.invalidate_buffers(); + self.ensure_buffer_a(count); + if let Some(instances) = self.instances.as_ref() { + let buffer = &mut self.buffer_a[0..count]; + for i in 0..count { + buffer[i] = values[i] as u32; + } + instances.subarray(base as u32, (base + count) as u32).copy_from(buffer); + } + } } impl SplatGetter for ExtSplatsData { @@ -849,6 +901,26 @@ impl SplatGetter for ExtSplatsData { fn has_lod_tree(&self) -> bool { self.lod_tree.is_some() } fn get_encoding(&mut self) -> Option { None } + fn get_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + if count == 0 { return; } + self.prepare_buffers(base, count); + if let Some(labels) = self.labels.as_ref() { + for i in 0..count { + out[i] = (*labels).get_index(i as u32); + } + } + } + + fn get_instance_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + if count == 0 { return; } + self.prepare_buffers(base, count); + if let Some(instances) = self.instances.as_ref() { + for i in 0..count { + out[i] = (*instances).get_index(i as u32); + } + } + } + fn get_batch(&mut self, base: usize, count: usize, out: &mut SplatPropsMut) { if count == 0 { return; } diff --git a/rust/spark-rs/src/lib.rs b/rust/spark-rs/src/lib.rs index 4aa1b10e..a8bdc69c 100644 --- a/rust/spark-rs/src/lib.rs +++ b/rust/spark-rs/src/lib.rs @@ -25,6 +25,7 @@ mod lod_tree; #[wasm_bindgen(start)] pub fn wasm_start() { console_error_panic_hook::set_once(); + console_log::init_with_level(log::Level::Debug).expect("error initializing log"); } #[wasm_bindgen] @@ -136,6 +137,7 @@ pub fn decode_to_extsplats( file_type: Option, path_name: Option, sh1_codes: Option, sh2_codes: Option, sh3_codes: Option, ) -> Result { + let file_type = if let Some(file_type) = file_type { match SplatFileType::from_enum_str(&file_type) { Ok(file_type) => Some(file_type), @@ -148,6 +150,7 @@ pub fn decode_to_extsplats( let mut splats = ExtSplatsData::new(); splats.set_sh_codes(sh1_codes, sh2_codes, sh3_codes); + let decoder = MultiDecoder::new(splats, file_type, path_name.as_deref()); let on_finish = |receiver: Box| { let decoder: Box> = receiver.into_any().downcast().unwrap(); diff --git a/rust/spark-rs/src/packed_splats.rs b/rust/spark-rs/src/packed_splats.rs index 68c368a1..299a5876 100644 --- a/rust/spark-rs/src/packed_splats.rs +++ b/rust/spark-rs/src/packed_splats.rs @@ -827,6 +827,14 @@ impl SplatGetter for PackedSplatsData { } } + fn get_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + todo!(); + } + + fn get_instance_label(&mut self, base: usize, count: usize, out: &mut [u32]) { + todo!(); + } + fn get_center(&mut self, base: usize, count: usize, out: &mut [f32]) { if count == 0 { return; } self.prepare_buffer(base, count); diff --git a/src/ExtSplats.ts b/src/ExtSplats.ts index 198f9439..97b83a8d 100644 --- a/src/ExtSplats.ts +++ b/src/ExtSplats.ts @@ -843,6 +843,24 @@ export const defineEvaluateExtSH3 = unindent(` } `); + +export const randomColourFromID = unindent(` +precision highp float; +precision highp int; + +// Blazing fast HSL to RGB conversion +vec3 hsl2rgb(vec3 c) { + vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0); + return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0)); +} + +vec4 getDeterministicColor(uint id) { + float hue = fract(float(id) * 0.618033988749895); + vec3 rgb = hsl2rgb(vec3(hue, 0.9, 0.6)); + return vec4(rgb, 1.0); +} +`); + export function evaluateExtSH({ coord, viewDir, diff --git a/src/SparkPortals.ts b/src/SparkPortals.ts index e6ea19f7..c66b5e9a 100644 --- a/src/SparkPortals.ts +++ b/src/SparkPortals.ts @@ -19,6 +19,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -95,10 +96,14 @@ void main() { discard; } - float a = rgba.a; - float shifted = sqrt(z2) - max(0.0, a - 1.0); - float exponent = -0.5 * max(1.0, a) * sqr(max(0.0, shifted)); - rgba.a = min(1.0, a) * exp(exponent); + float kernel = gaussianKernel(z2, gaussianK); + if (rgba.a <= 1.0) { + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); + } else { + float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); + float alpha = 1.0 - pow(1.0 - kernel, a); + rgba.a = mix(1.0, alpha, falloff); + } if (rgba.a < minAlpha) { discard; diff --git a/src/SparkRenderer.ts b/src/SparkRenderer.ts index 1e24ef64..929fe5b3 100644 --- a/src/SparkRenderer.ts +++ b/src/SparkRenderer.ts @@ -66,6 +66,13 @@ export interface SparkRendererOptions { * @default Math.sqrt(8) */ maxStdDev?: number; + /** + * Generalized Gaussian exponent parameter. The kernel is + * `exp(-0.5 * r ** (2 * gaussianK))`, so `1.0` is a normal Gaussian and `2.0` + * uses a quartic radial falloff. + * @default 1.0 + */ + gaussianK?: number; /* ** * Minimum pixel radius for splat rendering. @@ -335,6 +342,7 @@ export class SparkRenderer extends THREE.Mesh { renderSize = new THREE.Vector2(); maxStdDev: number; + gaussianK: number; minPixelRadius: number; maxPixelRadius: number; accumExtSplats: boolean; @@ -506,6 +514,7 @@ export class SparkRenderer extends THREE.Mesh { this.preUpdate = options.preUpdate ?? true; this.maxStdDev = options.maxStdDev ?? Math.sqrt(8.0); + this.gaussianK = options.gaussianK ?? 1.0; this.minPixelRadius = options.minPixelRadius ?? 0.0; //1.6; this.maxPixelRadius = options.maxPixelRadius ?? 512.0; this.accumExtSplats = options.accumExtSplats ?? false; @@ -626,6 +635,8 @@ export class SparkRenderer extends THREE.Mesh { renderToViewOffset: { value: new THREE.Vector3() }, // Maximum distance (in stddevs) from Gsplat center to render maxStdDev: { value: 1.0 }, + // Generalized Gaussian k. The radial exponent is 2 * gaussianK. + gaussianK: { value: 1.0 }, // Minimum pixel radius for splat rendering minPixelRadius: { value: 0.0 }, // Maximum pixel radius for splat rendering @@ -786,6 +797,7 @@ export class SparkRenderer extends THREE.Mesh { this.uniforms.renderToViewBasis.value.setFromMatrix4(accumToCamera); this.uniforms.maxStdDev.value = spark.maxStdDev; + this.uniforms.gaussianK.value = spark.gaussianK; this.uniforms.minPixelRadius.value = spark.minPixelRadius; this.uniforms.maxPixelRadius.value = spark.maxPixelRadius; this.uniforms.minAlpha.value = spark.minAlpha; diff --git a/src/SplatMesh.ts b/src/SplatMesh.ts index a1d32ece..e4a71446 100644 --- a/src/SplatMesh.ts +++ b/src/SplatMesh.ts @@ -430,6 +430,7 @@ export class SplatMesh extends SplatGenerator { }); } else { this.isInitialized = true; + this.initialized = Promise.resolve(this); if (options.onLoad) { const maybePromise = options.onLoad(this); @@ -443,6 +444,18 @@ export class SplatMesh extends SplatGenerator { // this.add(createRendererDetectionMesh()); } + public updateLabelLookup(categories: Set) { + if (this.paged) { + this.paged.pager?.updateLabelLookup(categories); + } + } + + public updateLabelHighlight(id: number) { + if (this.paged) { + this.paged.pager?.updateLabelHighlight(id); + } + } + async asyncInitialize(options: SplatMeshOptions) { const { url, @@ -503,7 +516,7 @@ export class SplatMesh extends SplatGenerator { this.splats = this.extSplats; } } - + if (this.splats) { this.numSplats = this.splats.getNumSplats(); this.updateGenerator(); @@ -716,6 +729,10 @@ export class SplatMesh extends SplatGenerator { } } + if (this.paged?.pager?.labelLookupModifier) { + gsplat = this.paged?.pager?.labelLookupModifier.apply({ gsplat }).gsplat; + } + // We're done! Output resulting Gsplat return { gsplat }; }, diff --git a/src/SplatPager.ts b/src/SplatPager.ts index d9f33d33..ff8a34b4 100644 --- a/src/SplatPager.ts +++ b/src/SplatPager.ts @@ -2,7 +2,7 @@ import * as THREE from "three"; import { decode_rad_header } from "spark-rs"; import { LN_SCALE_MAX, LN_SCALE_MIN, dyno } from "."; -import { evaluateExtSH } from "./ExtSplats"; +import { evaluateExtSH, randomColourFromID } from "./ExtSplats"; import { evaluatePackedSH } from "./PackedSplats"; import { getSplatFileType, getSplatFileTypeFromPath } from "./SplatLoader"; import type { SplatSource } from "./SplatMesh"; @@ -295,8 +295,9 @@ export class PagedSplats implements SplatSource { sh3Codes: sh3Codes ? [sh3Codes[0].slice(), sh3Codes[1].slice()] : undefined, - })) as { lodSplats: ExtResult }; + })) as { lodSplats: ExtResult }; const lodSplats = result.lodSplats; + if (!this.splatEncoding) { this.splatEncoding = DEFAULT_SPLAT_ENCODING; this.numSh = @@ -509,6 +510,8 @@ interface PageUpload { packedArray: Uint32Array; extArray?: Uint32Array; shArrays: Array; + labels?: Uint32Array; + instances?: Uint32Array; } export class SplatPager { @@ -560,6 +563,22 @@ export class SplatPager { THREE.DataArrayTexture >; extTexture: dyno.DynoUsampler2DArray<"extTexture", THREE.DataArrayTexture>; + + highlightLabel: dyno.DynoInt<"highlightLabel">; + lookUpTexture: dyno.DynoUsampler2D<'lookup', THREE.DataTexture>; + labelTexture: dyno.DynoUsampler2DArray<"label", THREE.DataArrayTexture>; + instanceTexture: dyno.DynoUsampler2DArray<"instance", THREE.DataArrayTexture>; + labelLookupModifier: dyno.Dyno< + { + gsplat: typeof dyno.Gsplat, + lookup: 'usampler2D', + label: 'usampler2DArray', + instance: 'usampler2DArray', + highlightLabel: 'int' + }, + { gsplat: typeof dyno.Gsplat } + > + readonly shTextures: [ dyno.DynoUsampler2DArray<"sh1", THREE.DataArrayTexture>, dyno.DynoUsampler2DArray<"sh2", THREE.DataArrayTexture>, @@ -642,6 +661,65 @@ export class SplatPager { }), ) as typeof this.shTextures; + this.highlightLabel = new dyno.DynoInt({ key: 'highlightLabel', value: -1 }); + this.lookUpTexture = new dyno.DynoUsampler2D({ + value: new THREE.DataTexture( + new Uint32Array(256), + 256, 1, + THREE.RedIntegerFormat, + THREE.UnsignedIntType, + ) + }); + this.lookUpTexture.value.image.data.fill(1); + this.lookUpTexture.value.needsUpdate = true; + this.renderer.initTexture(this.lookUpTexture.value); + + this.labelTexture = new dyno.DynoUsampler2DArray({ + value: SplatPager.emptyLabelTexture + }); + + this.instanceTexture = new dyno.DynoUsampler2DArray({ + value: SplatPager.emptyLabelTexture + }); + + this.labelLookupModifier = new dyno.Dyno({ + inTypes: { + gsplat: dyno.Gsplat, + lookup: 'usampler2D', + label: 'usampler2DArray', + instance: 'usampler2DArray', + highlightLabel: 'int' + }, + outTypes: { gsplat: dyno.Gsplat }, + inputs: { + lookup: this.lookUpTexture, + label: this.labelTexture, + instance: this.instanceTexture, + highlightLabel: this.highlightLabel + }, + globals: () => [ + randomColourFromID, + dyno.defineGsplat], + statements: ({ inputs, outputs }) => + dyno.unindentLines(` + Gsplat g = ${inputs.gsplat}; + + ivec3 splatCoord = ivec3(g.index & 255, (g.index >> 8) & 255, g.index >> 16); + uvec4 labelTexel = texelFetch(${inputs.label}, splatCoord, 0); + uint visible = texelFetch(${inputs.lookup}, ivec2(labelTexel.r, 0), 0).r; + if (visible == 0u) { g.flags &= ~GSPLAT_FLAG_ACTIVE; } + + if (${inputs.highlightLabel} >= 0 && labelTexel.r == uint(${inputs.highlightLabel})) { + uvec4 instanceTexel = texelFetch(${inputs.instance}, splatCoord, 0); + vec4 splatColour = getDeterministicColor(instanceTexel.r); + g.rgba = mix(g.rgba, splatColour, 0.6); + } + + ${outputs.gsplat} = g; + `), + }); //DynoUniform + + this.readIndex = dyno.dynoBlock( { index: "int", numSplats: "int", indices: "usampler2D" }, { index: "int" }, @@ -845,6 +923,15 @@ export class SplatPager { this.extTexture.value.source.data = null; } + if (this.labelTexture.value !== SplatPager.emptyLabelTexture) { + this.labelTexture.value.dispose(); + this.labelTexture.value.source.data = null; + } + if (this.instanceTexture.value !== SplatPager.emptyLabelTexture) { + this.instanceTexture.value.dispose(); + this.instanceTexture.value.source.data = null; + } + const emptyShTextures = this.extSplats ? SplatPager.emptyExtShTextures : SplatPager.emptyShTextures; @@ -857,6 +944,67 @@ export class SplatPager { } } + + public updateLabelLookup(categories: Set) { + const array = this.lookUpTexture.value.image.data; + array.fill(0); + categories.forEach(id => { + if (id >= 0 && id < 256) array[id] = 1; + }); + this.lookUpTexture.value.needsUpdate = true; + } + + private newUintArrayTex( + data: Uint32Array | null, + width: number, + height: number, + depth: number, + format: THREE.AnyPixelFormat, + type: THREE.TextureDataType, + internalFormat: THREE.PixelFormatGPU, + ): THREE.DataArrayTexture { + const texture = new THREE.DataArrayTexture(data, width, height, depth); + texture.format = format; + texture.type = type; + texture.internalFormat = internalFormat; + texture.needsUpdate = true; + this.renderer.initTexture(texture); + return texture; + } + + private ensureLabelTextures() { + if (this.labelTexture.value === SplatPager.emptyLabelTexture) { + this.labelTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE.RedIntegerFormat, + THREE.UnsignedIntType, + "R32UI", + ); + } + } + + public updateLabelHighlight(id: number) { + this.highlightLabel.value = id + } + + private ensureInstanceTextures() { + if (this.instanceTexture.value === SplatPager.emptyLabelTexture) { + this.instanceTexture.value = this.newUintArrayTex( + new Uint32Array(this.maxPages * 256 * 256 * 1), + 256, + 256, + this.maxPages, + THREE.RedIntegerFormat, + THREE.UnsignedIntType, + "R32UI", + ); + } + } + + private ensureShTextures(numSh: number) { this.curSh = Math.max(this.curSh, numSh); @@ -973,6 +1121,8 @@ export class SplatPager { packedArray: Uint32Array, shArrays: Array, extArray?: Uint32Array, + labels?: Uint32Array, + instances?: Uint32Array ) { const pageBase = page * PAGE_SPLATS; @@ -986,6 +1136,24 @@ export class SplatPager { const numSh = Math.min(shArrays.length, 3); this.ensureShTextures(numSh); + if ( labels !== undefined ) { + this.ensureLabelTextures(); + const labels_arr = labels as Uint32Array; + const array = this.labelTexture.value.image.data; + array.subarray(pageBase, pageBase + labels_arr.length).set(labels_arr); + this.labelTexture.value.addLayerUpdate(page); + this.labelTexture.value.needsUpdate = true; + } + + if ( instances !== undefined ) { + this.ensureInstanceTextures(); + const instances_arr = instances as Uint32Array; + const array = this.instanceTexture.value.image.data; + array.subarray(pageBase, pageBase + instances_arr.length).set(instances_arr); + this.instanceTexture.value.addLayerUpdate(page); + this.instanceTexture.value.needsUpdate = true; + } + for (let i = 0; i < shArrays.length; i++) { const array = shArrays[i]; const elementsPerSplat = @@ -1177,6 +1345,8 @@ export class SplatPager { packedArray, extArray, shArrays, + labels: extra?.labels, + instances: extra?.instances }); } else { const packedArray = data.packedArray; @@ -1202,8 +1372,8 @@ export class SplatPager { if (!upload) { break; } - const { page, numSplats, packedArray, extArray, shArrays } = upload; - this.uploadPage(page, packedArray, shArrays, extArray); + const { page, numSplats, packedArray, extArray, shArrays, labels, instances } = upload; + this.uploadPage(page, packedArray, shArrays, extArray, labels, instances); } } @@ -1260,6 +1430,7 @@ export class SplatPager { static emptyPackedTexture = this.emptyUint32x4; static emptyExtTexture = this.emptyUint32x4; + static emptyLabelTexture = this.emptyUint32x4; static emptyShTextures = [ this.emptyUint32x2, this.emptyUint32x4, diff --git a/src/defines.ts b/src/defines.ts index f230d346..90ff8f7c 100644 --- a/src/defines.ts +++ b/src/defines.ts @@ -92,6 +92,8 @@ export type RadMeta = { }; export type PackedExtra = { + labels?: Uint32Array; + instances?: Uint32Array; sh1?: Uint32Array; sh2?: Uint32Array; sh3?: Uint32Array; @@ -110,6 +112,8 @@ export type PackedResult = { }; export type ExtExtra = { + labels?: Uint32Array; + instances?: Uint32Array; sh1?: Uint32Array; sh2?: Uint32Array; sh3a?: Uint32Array; diff --git a/src/shaders/splatDefines.glsl b/src/shaders/splatDefines.glsl index 3f082ac0..ffd2bcc7 100644 --- a/src/shaders/splatDefines.glsl +++ b/src/shaders/splatDefines.glsl @@ -34,6 +34,28 @@ float pow8(float x) { return x4 * x4; } +float gaussianKernelPower(float z2, float k) { + if (k == 1.0) { + return z2; + } else if (k == 2.0) { + return z2 * z2; + } + return pow(max(0.0, z2), k); +} + +float gaussianKernelScale(float maxStdDev, float k) { + if (k == 1.0) { + return maxStdDev; + } else if (k == 2.0) { + return sqrt(maxStdDev); + } + return pow(max(0.0, maxStdDev), 1.0 / k); +} + +float gaussianKernel(float z2, float k) { + return exp(-0.5 * gaussianKernelPower(z2, k)); +} + vec3 srgbToLinear(vec3 rgb) { return pow(rgb, vec3(2.2)); } diff --git a/src/shaders/splatFragment.glsl b/src/shaders/splatFragment.glsl index 6a15a0d2..336d97df 100644 --- a/src/shaders/splatFragment.glsl +++ b/src/shaders/splatFragment.glsl @@ -10,6 +10,7 @@ uniform bool encodeLinear; uniform float time; uniform bool debugFlag; uniform float maxStdDev; +uniform float gaussianK; uniform float minAlpha; uniform bool disableFalloff; uniform float falloff; @@ -41,11 +42,12 @@ void main() { rgba.a = mix(min1a, min1a * exp(exponent), falloff); } else { // New falloff function, more or less equivalent + float kernel = gaussianKernel(z2, gaussianK); if (rgba.a <= 1.0) { - rgba.a = mix(rgba.a, rgba.a * exp(-0.5 * z2), falloff); + rgba.a = mix(rgba.a, rgba.a * kernel, falloff); } else { float a = exp((rgba.a*rgba.a - 1.0) / 2.718281828459045); - float alpha = 1.0 - pow(1.0 - exp(-0.5 * z2), a); + float alpha = 1.0 - pow(1.0 - kernel, a); rgba.a = mix(1.0, alpha, falloff); } } diff --git a/src/shaders/splatVertex.glsl b/src/shaders/splatVertex.glsl index ffbf93a0..a17cfede 100644 --- a/src/shaders/splatVertex.glsl +++ b/src/shaders/splatVertex.glsl @@ -17,6 +17,7 @@ uniform vec4 renderToViewQuat; uniform vec3 renderToViewPos; uniform mat3 renderToViewBasis; uniform float maxStdDev; +uniform float gaussianK; uniform float minPixelRadius; uniform float maxPixelRadius; uniform bool enableExtSplats; @@ -103,7 +104,7 @@ void main() { } } - adjustedStdDev = maxStdDev; + float adjustedMaxStdDev = maxStdDev; if (rgba.a > 1.0) { // Stretch 1..2 to 1..5 rgba.a = min(rgba.a * 4.0 - 3.0, 5.0); @@ -117,8 +118,9 @@ void main() { } // Expand the maximum std dev to approximately cover the larger range - adjustedStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); + adjustedMaxStdDev = maxStdDev + 0.7 * (rgba.a - 1.0); } + adjustedStdDev = gaussianKernelScale(adjustedMaxStdDev, gaussianK); // Compute the view space center of the splat vec3 viewCenter = (!enableCovSplats ? quatVec(renderToViewQuat, center) : (renderToViewBasis * center)) + renderToViewPos; diff --git a/src/worker.ts b/src/worker.ts index 1801a758..e4840fd9 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -194,6 +194,7 @@ async function decodeBytesUrl({ if (nextChunk.length === 0) { break; } + decoder.push(nextChunk); loaded += nextChunk.length; @@ -377,6 +378,8 @@ type DecodedExtResult = { numSplats: number; ext0: Uint32Array; ext1: Uint32Array; + labels?: Uint32Array; + instances?: Uint32Array; sh1?: Uint32Array; sh2?: Uint32Array; sh3a?: Uint32Array; @@ -392,6 +395,8 @@ function toExtResult(packed: DecodedExtResult): ExtResult { numSplats: packed.numSplats, extArrays: [packed.ext0, packed.ext1], extra: { + labels: packed.labels, + instances: packed.instances, sh1: packed.sh1, sh2: packed.sh2, sh3a: packed.sh3a, @@ -444,7 +449,7 @@ async function loadExtSplats( sendStatus: (data: unknown) => void; }, ) { - // console.log("loadExtSplats", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, stream, streamLength, lod, lodBase, lodAbove, nonLod }); + // console.log("loadExtSplats", { url, requestHeader, withCredentials, fileBytes, fileType, pathName, lod, lodBase, lodAbove, nonLod }); if (!lod) { const decoder = decode_to_extsplats( fileType, @@ -464,6 +469,7 @@ async function loadExtSplats( sendStatus, }); const result = toExtResult(decoded as DecodedExtResult); + if (result.extra.lodTree) { return { lodSplats: result }; }